Compare commits

...

No commits in common. "c8s" and "c10s" have entirely different histories.
c8s ... c10s

26 changed files with 2777 additions and 2627 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

41
.gitignore vendored
View File

@ -1,4 +1,39 @@
SOURCES/emacs-26.1.tar.xz
SOURCES/package-keyring.gpg
/emacs-23.3a.tar.bz2
/php-mode.el
/emacs-24.0.92.tar.gz
/emacs-24.0.93.tar.gz
/emacs-24.0.94.tar.gz
/emacs-24.0.95.tar.gz
/emacs-24.0.97.tar.gz
/emacs-24.1-rc.tar.gz
/emacs-24.1.tar.bz2
/emacs-24.2.tar.xz
/emacs-24.3.tar.xz
/emacs-24.4.tar.xz
/emacs-24.5.tar.xz
/emacs-25.0.92.tar.xz
/emacs-25.0.93.tar.xz
/emacs-25.0.94.tar.xz
/emacs-25.0.95.tar.xz
/emacs-25.1-rc1.tar.xz
/emacs-25.1-rc2.tar.xz
/emacs-25.1.tar.xz
/emacs-25.2-rc2.tar.xz
/emacs-25.2.tar.xz
/emacs-25.3.tar.xz
/emacs-26.1.tar.xz
/package-keyring.gpg
/emacs-26.2.tar.xz
/emacs-26.3.tar.xz
/emacs-26.3.tar.xz.sig
/emacs-27.1.tar.xz
/emacs-27.1.tar.xz.sig
/emacs-27.2.tar.xz
/emacs-27.2.tar.xz.sig
/emacs-28.1.tar.xz
/emacs-28.1.tar.xz.sig
/emacs-28.2.tar.xz
/emacs-28.2.tar.xz.sig
/emacs-29.1.tar.xz
/emacs-29.1.tar.xz.sig
/emacs-29.4.tar.xz
/emacs-29.4.tar.xz.sig

View File

@ -0,0 +1,62 @@
From 123ece3c3313101048d43a5ef2f9bd66c4e97fb7 Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Fri, 23 Dec 2022 18:49:25 +0100
Subject: [PATCH] configure: Remove obsolete check for -b i486-linuxaout
If there are still a.out system arounds, they shouldn't need this
anymore because the toolchain has been fixed.
* configure.ac (emacs_cv_b_link): Remove obsolete check.
(cherry picked from commit 6c1413d5ef0d1fea639b0d8c83a0c0065d99359b)
---
configure.ac | 33 ---------------------------------
1 file changed, 33 deletions(-)
diff --git a/configure.ac b/configure.ac
index 5dd182ae6e5..8a20caa8c4e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2695,39 +2695,6 @@ if test "${HAVE_X11}" = "yes"; then
export LD_RUN_PATH
fi
- if test "${opsys}" = "gnu-linux"; then
- AC_CACHE_CHECK([whether X on GNU/Linux needs -b to link], [emacs_cv_b_link],
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
- [[XOpenDisplay ("foo");]])],
- [xgnu_linux_first_failure=no],
- [xgnu_linux_first_failure=yes])
- if test "${xgnu_linux_first_failure}" = "yes"; then
- OLD_CPPFLAGS="$CPPFLAGS"
- OLD_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
- LIBS="$LIBS -b i486-linuxaout"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
- [[XOpenDisplay ("foo");]])],
- [xgnu_linux_second_failure=no],
- [xgnu_linux_second_failure=yes])
- if test "${xgnu_linux_second_failure}" = "yes"; then
- # If we get the same failure with -b, there is no use adding -b.
- # So leave it out. This plays safe.
- emacs_cv_b_link=no
- else
- emacs_cv_b_link=yes
- fi
- CPPFLAGS=$OLD_CPPFLAGS
- LIBS=$OLD_LIBS
- else
- emacs_cv_b_link=no
- fi])
- if test "x$emacs_cv_b_link" = xyes ; then
- LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
- C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
- fi
- fi
-
# Reportedly, some broken Solaris systems have XKBlib.h but are missing
# header files included from there.
AC_CACHE_CHECK([for Xkb], [emacs_cv_xkb],
--
2.41.0

View File

@ -0,0 +1,337 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: CEA1 DE21 AB10 8493 CC9C 6574 2E82 323B 8F43 53EE
Comment: Stefan Kangas <skangas@skangas.se>
Comment: Stefan Kangas <stefan@marxist.se>
Comment: Stefan Kangas <stefankangas@gmail.com>
xsFNBEsuwZkBEAC9Glr+naIRiXfh/UCI/ykW5aIoL8Wp36r+zpbj3kMKD+HHcrIF
vZhf70OzTRO5yxj4MxYv52P0S6laQzvNq+C6t91YjjRYxS6GQh5xOob7k6LUpN1h
pri7al3gS/CqB2gSCJwdZGdU1Lj1kHGT+uwPSoeZ8s+OqD3jqzw9/96ySasiFEQl
hBtpKRyEQz9YBd4H7saLhSmTA1T9oyfDVbCYRMM7mjFm8Alldpi1XbjGVxrlKGr2
4FmOkV6KCndhA+cWjb1ULhs35CYpo5Ca++cdQ8rW1Bq7ivbj+fcOD3Q4IpcbPfht
PjEoUVsiL8GkBb61d+XLFC/X+yjZdXQiMu4Q7n1hAE5JR4tbH2MtbDiPexSmw5gu
JO5mL4Z+4GjuLj+cO2poZJcDM/JsTYA0g16mU9tkBn445rhLznG2hS+HCbXdZXhp
odVx+T5cnxMJZSyJT9NEibJcV5Fq06xnHdDCiIzwB8XOYQT9nGQegPfPLOVuVdvx
NjlUZ4m+/8r7cro6MdiLpdRq39zCxYifqJNCa/Z9D/ylaCC8Gm2pBoQYMnYF5vMk
gEp15t9n66Ve6tyvS0dSlViJquuLm55QZGiNW7mCOZ+yirxQihpikBRFsRcRExmY
4pmtgzot+MhlHowScxKU2TWS3u9VYLiSxWa1rqSwO/yB86uU9eLdPi3LewARAQAB
zSJTdGVmYW4gS2FuZ2FzIDxza2FuZ2FzQHNrYW5nYXMuc2U+wsGUBBMBCgA+AhsD
BgsJCAcDAgYVCAIJCgsDFgIBAh4BAheAFiEEzqHeIasQhJPMnGV0LoIyO49DU+4F
AmO0ItgFCSHrYrcACgkQLoIyO49DU+5AVw//dBk8i5NztXgbUvwCe5AMrzC+iAV8
wiFDCacOOyPHYHqPDPD7mKO4u+TFRosvSpjVX0gEbkTQIVneFhj0i6W6mNaNeMpJ
Yxwrii5dCowNsUoi10ZRdsf9+sJz9hk1LbSEEwvE4bmsIiH5gmIF7LNsbBWpmVhj
CJosmwkXMZMLTwqLe2nqZmTAXV9yeLAd0RKZXgONg16+JGbgyN9MxwJfAWrvAz7T
U6inZoD6RIPmtoi9S9AITv91Ii0MNT1pkBRJtH7bq3XpKhVur+axdv8oPUGYnfz9
QuU8TURrwGafmfsYydUSrJL81SFXlQkHM7a9cPAVyKnaq7eexy83oCl9MCxKnSRU
AHa+KLN8HSoLFQ0dO7h9dG2YdVtMbMmT+kkAc2BSmXLDcrwZCL80TZk8y2yq20TG
40e6Iq6TJHE+yJlRhsBnxm4aikRcFaqwqS6+fXM+I+DZV7zrlxJM/AeEFCfLRCch
z05/pWanOvmPN0IPk/FYj5mnCEqo8xsh2NPJN+Ajd/OQEJLh6hlGCXCjW4Gjm/oM
Q4MKfmc/QvJxCFVtYpObvM0wnciN9hCJ5ODf9JTXu502Mi3ILsFVh1gVeW+dPDDk
uB01FySbKigrEFo5d1+8UUKTOChSP+iFMu/x5tEB41IC2v9dZYV9pcFZdV3b4tbh
rTh9hmpid3IwrUzCwZQEEwEKAD4CGwMGCwkIBwMCBhUIAgkKCwMWAgECHgECF4AW
IQTOod4hqxCEk8ycZXQugjI7j0NT7gUCYrx3PgUJIPO2/wAKCRAugjI7j0NT7n7+
D/9tCGWTqcisRvQG/5wySwb7TkM+5rnZI9pWWHsMXyEX4hhbPPn9+oqGlyLJTy1D
a/JqG4khhNY0kP/wSx1/SbjpHvekqQVOL+CJwBdIxE2qWH575+qKG2DsQe0xTtFg
/A6rKV21JX6+ykhmei7MV8FBTuIeXqmhVJGFJtMQiKRZf90n8/ujFekv70415k3y
6oailoIqrWSnSy1S4GFjywpRSqLeDF1w7P3WhR8V+gznUIfqxk2aQHfrSjGNfFWQ
zbzE4L1fQNtS6bqTqBiFfP1XnHe+u89NL2Xk1GUV4S9RTo5ARTaROOUVhwuejbDj
7/wfE5KtY7Y5iNHjVLtvTE+Dyx69ORKzoKp+IDZwok0OGo4s3PBPS5Q3GJlndZ7R
wUVJO94n2AutLbD8qoAb0rXlw3JxCM/FeMZniZrGFmh0F/cGhKXAeOilVfutaLc6
LUl/81lIVc1vo4t987i3sSC4c1kVLqDoCXzz6QZT6GuRyQWwocAz7obkcHeZDOtk
rTh7KYwVZT32kMxYFkQPAK8qjvRFk+GX46Kb3Hg5m6W3rhFKe0R90OciKm1t2enG
Yu9yLNg1QYunkVtG8Ud2E7HyG6fc0EgAiwMSl1Rh1aCHDkOh+dCPipYcH/BZcYJC
nHRltM00Y0hDSgToFCfABtiaXKINasgVWP0vgFefRduZGMLBlAQTAQoAPgIbAwYL
CQgHAwIGFQgCCQoLAxYCAQIeAQIXgBYhBM6h3iGrEISTzJxldC6CMjuPQ1PuBQJf
4QKtBQkYdKgUAAoJEC6CMjuPQ1PuxZsP/38i8D8/gsXciMPvsoQ79dnAs1ZMkqUp
7+o9W1nFP/YjlC96SMfRB4AGB326AvE79V82zu3B/y61EuGsYK+wmP89FKc5WfA6
QEouL9h887tkSyFnU5nmxRBj4AS992LmgaNAWhUC1RItDsK1z517VbfBI1XLt4Th
1dKKkBNl5vC20ocIruFZDt42RzI4Ks1Fgc9Iai3x+o1iP6P7b2/Q0Ps+MLIUX25Y
fATbqY1vAsoggalaTGrR/AG+J+0OyRuW+DeX64dp74FGTFDIsZDL4gt+5OJpFpVF
ljXcbwnC3ByWFZ3/+HeSlrPK0WNyWW4B2Tds0NUCvnFODcMpls4x5ofWaZBWtV1+
AIbZ4r4/B1mN3tohiPYmKdZzttvFn+jBqoIlcJaLjlhW2QJGGYs+ADC/jVK9yz6U
fZS2ry5lF6dL0COZ0hisjGNL2JXyh5dfBZJlI9KfnVlK+Qkq2KE0samSixUrBiKC
O3VVfcy05YU87nSUNMNsmr58TrW2ugVzKx1WE8EG+dH+Mf5EGiwRggG9l8FHRgg1
j7ZBaSWy1P9LEMbVGxgPPY0enU/L0pxxACOIGuDJVM1HSmijydbwXipWbYB1p0xl
cKijPSu7iPlVTSRBB/tRq74v9T5KI8vtMUhS+u+lrQvLeO03oh7vaP8UoWUgHTYm
0alYiGyN0GSvwsGUBBMBAgAnAhsDBgsJCAcDAgYVCAIJCgsDFgIBAh4BAheABQJX
jkAjBQkSAxfhACEJEC6CMjuPQ1PuFiEEzqHeIasQhJPMnGV0LoIyO49DU+6wsA//
etvyNhGkmajQs6VX3C9RQ948ynF2OZIDg1uvctlVI8DIrZkZzc9wqUyRpMuYk4g2
6tmn3KTIdLWTJWWJhtf+Mp41aqsT5JralvhJDUiZseE/Xr6u756Iw7MvCm/zsJuw
Cw64j2N98UBMQT7+bV8/H8gyNSFH4PIPDe+e+D2UAuO3fikmuNqARyKfKFb5eKSn
sPdHycQIBhm0KfKifZezqqV+c+WTQCVmlPbfMupD0BYQubctm3GoSJ0paQ1xmsWc
9+AR1qhoOLd+OJ7l/3fDmbBrrB4/Sf102Lx9RZrc6igbi1hTZ84TX8+r/tv0KZ31
kanhtvRhIPxArThwSeI1Cp6mzA3OjfdMXAoEJzRzvEavJ2++fy5n3/5mIuSW8T60
KjB6ToJEmj0ku1mFHm+lC2kuMfIsFVPlU4q74eb1R8BtdoPEX5fsYQZ5RG2cNv+D
Yhxk1wRATvGYW2hzVsUs6ctvkVmde4F0OLVMST77c0F49RyR6F2wwZMgodurn5y4
h569ok4yYIFh3P3R68wOjTX3WeGT9ZF83axpl1tJKezMx/u9GgtuXJAtCesVQf2m
DNekyJlGLy/1MIfIdP+BNgSK2diXOKK1hdRy9w0O/zP5pLGpt/GHfGcAJxpz9y54
chTXEZDnNghyFFWbnKtAPH5Qi/GVPtcNBduUo4ZrAY7CwZQEEwECACcFAksuwZkC
GwMFCQtHNQAGCwkIBwMCBhUIAgkKCwMWAgECHgECF4AAIQkQLoIyO49DU+4WIQTO
od4hqxCEk8ycZXQugjI7j0NT7uEPD/4ji/F12MdTmo6PbC29xe7oMZy4qB9xcZNW
aOA3mm91qcGed55eI+X9wnNJMDrSFZoMdhpcnpdhqxmtHXmezn91y6B+/XTIyroz
aDkCHzj4O8RlrqTHd+EaDqEod6lfYnjX0lCaKrgIm+F39YdH8C06gieJXgdLcOK6
bYRETq5quXZL7HQArEAbVe2i7z6LF0sTu3wC69AYglJlZ3PpIBICGYk4tVTBftQn
Ej/HV3PKIqdmkghvOKc10LuIWDmlUKtPHxamD3t96anizFUkXR9pExvOzMV8cPFA
accgrFtvDRymfaIv34E4pzXJLZZhHdlYApz7q4A8+OY3GnFenP7R0NEvkPeL15UJ
2/Xpjii+dkgJAwrk9BgG2BFwqUYiDMJX2SiyymhxEEZCn8idYM7tz5bU/SqdDlr2
xJod4GPYc4osJM5WET6GvSvcaos8Cilz0UewNL8eEfJAb8QoWfYTMRFHvt+cYrTc
Qmp1JhtQ9SLW7yIYKJBuAIHtj/wxFfxKKQMRqqCGwO25uoljsX9BILxWBFS9e+4Z
4O+XSC3rAsHNWhCwd/4zSAtSvHUtXziDa2YZ1iSIuGxN7VbBwvSdAzxlOJIDWttm
2M14dFPuaxPB51SiyKPznm0QUaGlXRe1dbFvYRW3LxpI/BC6W9jwTNv6tUEcYBEs
21PhIKnm2c0hU3RlZmFuIEthbmdhcyA8c3RlZmFuQG1hcnhpc3Quc2U+wsGUBBMB
CgA+AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEzqHeIasQhJPMnGV0LoIy
O49DU+4FAmO0ItgFCSHrYrcACgkQLoIyO49DU+58/A//b+6vTMEKDu5UKbrbwGG6
xjOHDPynoxCdlKMNFhL9A0GEhj0/2hKWTWHx4Ct0T10anwg4X9625YyH3FoiAQ9I
gz4eraf9ZqLHU8RfVM1qkA9G0ExV2nZnE3uNetE/MI//Y1xc6cI3Kr2uXdwDipe6
ELf3J786RwDxHz6sot4uUI6HIvhURRwHrswZvYZIigPtIfxwXRU3bICioehWSu5J
wWyeG+a9bsdpDiOZwhCyq/90V51TxGGcMvPTV2ZpDVS231DHUezRwWwDID8mwitz
c+c33G0wUpDvcEMRkJojhf43n11h1sdIxFHmj+oEBFitFOHC5Amwja5/WG8ElMPA
vtTdfygeh32xsbzgTnWE/oRc8NGeWqZ9wG18TxE3tL/UsrnLItvv61O+mxpHGUaB
Tgfs0r4AiGaJG7oJKIXTi5zJfnCQHuJFkpop/Gw4sMb4Ja6A1K4PG+VYqzpa036V
QNLQZT/lpZgTMCR33gg0nfkLp8ojL/Igy8RRO6GMjir9RO3KYBd4nhmF8vAdpYmM
isxaUp7da0W/nt4DF2N4fFG9DPla2h1WhcIdSTVanl+4RIooBLHDYeRr+tpDhyo2
EW27KgPWU47/xmQ5bXBrqnG0boU5iFZlx2F1SUZpb8TMTEfIf+NxK0FqSgCGLyHZ
GgCzFu7VsXBfts/3mxsEw17CwZQEEwEKAD4CGwMFCwkIBwIGFQoJCAsCBBYCAwEC
HgECF4AWIQTOod4hqxCEk8ycZXQugjI7j0NT7gUCYrx3GAUJIPO2/wAKCRAugjI7
j0NT7ktTEACm8i/pZP+CAsRZ3RmBW+8iOB2fIFFTVF4qXm/vkRoYB0/MwWtJtymz
HdsUjeOw1g9N3nXbH/C+oh+GU9JIA8bbvcAPgf5GDk+dgnVh68Q2JaBNEknX5NtI
clKgEhVsjx2cZ1nI3dj+sG+OD8xtLmtieki16vCiBeAzngbys5bhETrr6V25tFf+
ELvoHavOSH1USLdY4GzvYM9hhBlmpUuBb+j4wGh3y+EIt/gOlITKVlFBmpsOkt1o
Zi+IclCOxx4xNCfi0RUEoXfysgZHSDBQZUS7FnLRWrLlSMRTVpseRbJnMWpG19a1
RSteqf/mlUFQh0E/zb0QxLl6dsGRsViAzQKVdwzo22AAOldV3Cu/8SEdVFa7PuW8
jkid58Dtm104gQBoG5ETHjp3RyWQV3JBJiWiBkXArTEQCRyMiNRuUr/WIx9M9Ta5
x/wfg2C+mNE/7gTyapwTjRuUmlZAXo5AkYhjP5kQhr6Q/TVdp0eJHdSOITBP/Kb5
v6NXH+luYctB7g8aOxyCA65dunxoCF8RkBpkmJc6lbVOOYsVTFoGwcR4faZWdpgY
Q7kS9lLIwUqFGhvTDPtQmGYaMlkbcm+a2AxQosbQl3ENaSJwgInGbbd/k415Buek
noM7YniH7SQArGqPgYLXMNNGLlo6dW1i/Qc0t0mYcrQLvHDm2AocYMLBlAQTAQoA
PhYhBM6h3iGrEISTzJxldC6CMjuPQ1PuBQJf4QN9AhsDBQkYdKgUBQsJCAcCBhUK
CQgLAgQWAgMBAh4BAheAAAoJEC6CMjuPQ1Pux6YQAJRAeTPYBXM/A3Fq6u2GEuhd
ZdjhX8buUhOteIFP8HiK1XJzJSq42Rcfc+v8MD43vqv42VAh7sPUKGrXn2HuOj0E
bHJuLOd3YmD7Oxt7hpmFd/WcMpHV2Ma3Qal2oV1zy/m3FrmoQXnxXzkMa7RKvyvT
l/9Khpxl3s4mpb/mse+D3RsU9PaRszKvQhOl/RrbFZcctcfXjzmkzg5WwXu6bLH9
x8V92Hyme6aK1WqY5yChifVeE+6GT2dnNwq/srwcHbATieUBRXnNsd9Uu3eQasqh
snpDqJJSkIKpovhDmuPieQFJ8gTD0vjlLa5Sz7y41xnRFT31uE2sBjCO13x8Aed1
JvQW6n1FBZUZgKXWRDv0crHU9NPt8kMwybE/dNehRg2JchbPsb/L69mFCflLEkEc
i5PDyj0H37RKQnos7PC1ojcpYWnmbuCyGhTn2A277rHhELTTMR35z984IHmEqUnY
/yAWaAKaDsVhs28qG6XwedCHOQkCl3GQbYyU0qPy9enC3/zHqjhGbxib9TU7bpA1
lPVmDKLsiiV1CNziX0nzOnEFAkYCF8tJlTi4yFosFQGhkCen9cCZIL3fbsXu83Gq
jyRy+K+L+I+RhvVKmkHJ36j+7E1pWfDsl5n6DwHd4D6lztUC2M8Dnr05z19EY77W
2nfwVkmbH7dvLYnQ6kuOzSZTdGVmYW4gS2FuZ2FzIDxzdGVmYW5rYW5nYXNAZ21h
aWwuY29tPsLBlAQTAQoAPgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBM6h
3iGrEISTzJxldC6CMjuPQ1PuBQJjtCLQBQkh62K3AAoJEC6CMjuPQ1PuBWcP/izI
VsjlccwbSpWJs7byZy5YdfcOFMxmnlqRgSLY18uNCMDRZjdXg2OVwN3QrAWghN1j
A1CD8Rxk2rr6rkm3skN4HsB7yUko/VhXxQQxd0fPCN66JRcOq/msmf+qTpZ/lhwz
6vW1VZFvQDEGkw/QErO18QnYHqme3HcN9Pa0fylwUUWbHgC8Pznpz6TEi0shjhQB
mfwbnc9N5mUMTo+ZNVIAUVkctCido35fCtg2FQRRsn/gYT8AllCXXjYnYhaoe57M
fLBVDCZ34C9L1xFGZlcyWJd5e3FH3IVtQdEBwY4DqqnzdQ78dY+0QpDht02qqZ/m
NtpTGtDQbaRdR5HAu+1ZXdquzaSzRNXMqVaqSLJxfkJtw4tBoL9hVk+Xx3KbnIM7
EKPD4iikzq7hK2zLMlrkQgJTpqnI2DdLk4zm6BUWw8TqgfnEilTA9vBoDKWEyIqG
8DKBQva2j58giB81Ll25vaiPsPlN8baYoY66pF8WHGVlp6qv3AHwY1RW1TEr+Hb7
N9BQKBvddsOnFd4QiYo3ma1pdezTA1EPKpt1otMDJd2kBFflAa3G7aAHFyhbtXYl
Y9HsKU8qt6ZeEGWTBdefBMftr31fqnmz0w6rfCk2mfZYCtBOFnzvnottBNKS1mLH
aabhR55dzS88H5w5hRYItumDT5WcC7Y5ejjO8gw4wsGUBBMBCgA+FiEEzqHeIasQ
hJPMnGV0LoIyO49DU+4FAmMcAKICGwMFCSDztv8FCwkIBwIGFQoJCAsCBBYCAwEC
HgECF4AACgkQLoIyO49DU+7B4g//SJmo2bECnIf5PvGk1+3l2C1ti1ZHidgRMEbe
clGA0bR1V3qCFHrHufO8KfJY4aU4+6UaffuwsRi9u0Bf5wBBltMM8t5OYDldAJri
pwU3uiFIT1MbotiM2Xdvx9pSv6g3XNmzceZToVtYSzzANARBVW5Yc0VH77v/Fg/h
Y6cJpuMR9QI0yMva0jyTkcx9A//1fifVrE8TEWbubsiCUJYVJ7ADYGk2ldy47gRH
QUfB0Ps3Do+a0LTz5SK4QbSsUnePYHX0Xb6kc6CpvaTG/Bq/uOLiP1CfG0wgRPxp
2+n41gfsSnR1QMfOqixFuRYlnKQHprbXAKIGJeQIRFL20RQREvX2xHJd7Py6dDek
kHGIX8vE3kSSfq8D7EuGUODFPnJZmpQjC4VLAcbpVJq0EqlwfguwSwjGJY0CzrsW
/fag0EUCe2nw4JyYkUaWFPxfTF3hrS6YACAaFz+z7Chl9qpGT4+syiaMFKp9Zcpk
wg/GO/tiUm8ZV4KiBtFPKohbaHPgVeHe5p8xswMGxhGlqKmZWqTGxUBsi+QDgkSZ
suFl9qB3BJNt2XfxaQFlqF3EbnzAnY4dkwFiJw7tYiaLRR4beQmU/oIdSpTF9WD/
9xeK+4HpJn7tIXzg+9YoNjkrtjoijUpSxw7+4w99CI247Iu33981IxDhEROvN3c4
cKrqn7POwE0ESy7GRwEIAKlAYaJtoA4pA2JOcZ6wTNH3AgpMdXhfD36/eiu7kd01
L+9D+SA42x2vG0f5yQNNXw219cuwtJDj7b258QETbpcw7nERFKl1yZlD3BnRnToV
6Pc+pWJzbzFSdntCpJuzMXqWA1EfF/2UzvbVQJkYsiBK9cvRBiPGoqrUqvucoTHm
jj5Ja6IcKRjvzGcVF5S9fEdwOEvO5tMOsT/yIZv+z55uVy5l7tD8pNbRFbZAFaGq
X/znSz7uRpuQvz8O38F2JFYb9q2Y4J8slgZYqCxpIr8+Tg44MSX5d/8iSsrEsj6z
5bfFSfxyJl7mnpctiBjZePwNRfx9kuEXWIV5q/OaIA8AEQEAAcLCmwQYAQoAJgIb
AhYhBM6h3iGrEISTzJxldC6CMjuPQ1PuBQJjtCMbBQkh615UASkJEC6CMjuPQ1Pu
wF0gBBkBAgAGBQJLLsZHAAoJEC1OH+lZVxNditwH/Ahiobdanuv6clpdqMwb8NMN
odKt1vtJX+0qkz42q9DAwwgiS82Xdwx+40KhNmvATpKTZ1Of54dVpHfXqAIUumuN
5HehSmU7UpXespoeIU+NbDefEpan/MzD2VYENJt2nq+7WdcYXC61ZSHw4sCz8/g8
2pjX7GuHdeR8fBmilSakCeCGHpg3ECDCQNGyuMOudWMojOB/L+weihRZljM4o/Pn
VkTQHTffNZaMHo9wSWzwYAH0KSa1jig6ljGJ/b9Gq3wcUaHjFRLtZeLPjWdnltJF
qxEkZ0Grb+TPLpqFl1XIXMyE0s2T1cvuP+p4d43OIHHNGA5jUyuu1wvP3PVWsCmv
lxAAn9PP/VhJU9947ixZzhMa7nzDUEd6a89Ungpr2YjRBAFeICVhIFkpPA7gfkvY
B6eUbrDoWPMoBOkXyWs3CLHH9xCREMnM91ohykSG4CbRy0V21fsEadA/8u5UPuAm
sjefQAYcKFAXy+WKhC0CA5yK0KBh3BTvgpQ4+ysI94Y37am4vHnPdvYUOk+jEdgB
7GMJmKVqZCQ3Ibwa9mpa/3W6E5zTf5z7igqW1oSscsEAINDIlimHY61hjZJZNViN
1+K/2pgwqsWnbe+RJiex1hS7e/S4MsX2EdmIjBoQjkWWHLcqzu1UXdPHMSh0ewlI
Vd/ecJMb41wLzEsZnV8JiBR2f5t7t7aVUJZtk3EJ9EyH69GrrDP5pe4rFZAPgQ6j
XtLU+C9D3NDt/CbD7s31hTznZU1VPa0hAwWoG25llIDum3KUhJ0nJrlFpKHyuEka
SPpurwHC9kdZrTEpwdc73h5nUXO7AFYycX9oxDLQK/cpaK4+tDLWNGZ6GC6TzDQU
NtDssBfVXZyHlhj1/Ekemamk1apZWYoim7EbSihPoV4oidctr25KWADgmIGmcoD3
jeXvLGzr2udVOlaHw27rgN7RAYvwk7wlzq+lrSXxd/UrnzJDQ/ijd1Ju+QnGRmb2
DJk+GjHhYf01ExRnv+/4vaMeMIcGxy8foF8At2cLthwm8wjCwpsEGAEKACYCGwIW
IQTOod4hqxCEk8ycZXQugjI7j0NT7gUCX+EC8gUJGHSjqwEpCRAugjI7j0NT7sBd
IAQZAQIABgUCSy7GRwAKCRAtTh/pWVcTXYrcB/wIYqG3Wp7r+nJaXajMG/DTDaHS
rdb7SV/tKpM+NqvQwMMIIkvNl3cMfuNCoTZrwE6Sk2dTn+eHVaR316gCFLprjeR3
oUplO1KV3rKaHiFPjWw3nxKWp/zMw9lWBDSbdp6vu1nXGFwutWUh8OLAs/P4PNqY
1+xrh3XkfHwZopUmpAnghh6YNxAgwkDRsrjDrnVjKIzgfy/sHooUWZYzOKPz51ZE
0B033zWWjB6PcEls8GAB9CkmtY4oOpYxif2/Rqt8HFGh4xUS7WXiz41nZ5bSRasR
JGdBq2/kzy6ahZdVyFzMhNLNk9XL7j/qeHeNziBxzRgOY1MrrtcLz9z1VrApaO0P
/RaH1xGG1MXekoHZuw+n/SDKbHJvjiBgZDLiDNWizN/cCP6ehct3ZOj0ongtp2Zx
Lkv+UvhrGDLwauQ9ectx9J4k0Mq2WuF18RtUWQA3oNLHRjAxs1Q8MK/t3TbaL5GG
pa1v8qyWi5i2wQApaq3kgPwDAq+YikRIYiP1mcku0kTc9tgksJ02RS0lt1wtfn+f
tTl9v3IgJjAZ5fvbEcnpaWZlaXPy9pXJc1A9cGX+wW1hHzrQOyNWRm9W/d24nK8Z
OIPCF8L8Ei5Txxr0T7Vg7pywjfTydArBQ8iBqZd7eYLvM2wqX/GNep8Kpe8mUvg8
1qPf/C6JP6izsQYtsAxzBnCDz/MPxJWs2ZTca7n14v7koH2tMIGZOHlGmRdydwyJ
AOZCXZuRWemvLKpMLCqbWzz59L3WqiMo8ubz2yraeNUfBPGgVN+1B0B7tKSQSkOT
of90+OuHPUqXbCOFOOy5tqZS6rmz0kwC6CstiQHlJSC59TiMJ8nFemuIWJnWLJLq
p3hSa5VzQVbp7lmClvo+/0T1MsJiTYZEYmOTBCJeBMeRd/e2Wc1f2nKdmyYYE6Gl
F2TfHJEYr3lmyhoCC74D0kDcUb95f5OkaQ5FQndMNZtE3WU31QyZ+cFbt/8extJn
GRLU9vuN7D6BEmpaZ3SFOdTHxCzXfOjPrXpVS68ufUYkwsKbBBgBAgAPAhsCBQJX
jkE5BQkSAxVvAUAJEC6CMjuPQ1PuwF0gBBkBAgAGBQJLLsZHAAoJEC1OH+lZVxNd
itwH/Ahiobdanuv6clpdqMwb8NMNodKt1vtJX+0qkz42q9DAwwgiS82Xdwx+40Kh
NmvATpKTZ1Of54dVpHfXqAIUumuN5HehSmU7UpXespoeIU+NbDefEpan/MzD2VYE
NJt2nq+7WdcYXC61ZSHw4sCz8/g82pjX7GuHdeR8fBmilSakCeCGHpg3ECDCQNGy
uMOudWMojOB/L+weihRZljM4o/PnVkTQHTffNZaMHo9wSWzwYAH0KSa1jig6ljGJ
/b9Gq3wcUaHjFRLtZeLPjWdnltJFqxEkZ0Grb+TPLpqFl1XIXMyE0s2T1cvuP+p4
d43OIHHNGA5jUyuu1wvP3PVWsCkWIQTOod4hqxCEk8ycZXQugjI7j0NT7r7vD/9a
1lyDDQfKt2tS0bqsSSAULI3UERtx76DCowhF9TkD4Qq6AjeOQdsUMe/fuwvpzVaX
C6JTK8MowkF/SYFu9TsMDt3coyYQpjKc14HEIexUgN40Ayv2aViHF01jR2iWMhos
RjFtLIFRw5XVmXDHubaSqHco445y1hsBPf/j+zt+3UAPG0tKsBmWEpHnFWthK4+k
SP2XZ3+ttfXTbA4H6xHogrQJTzz5OHIdPv8WBqFfWzuw4Sk8TbcDvDRPBBUkVqAw
mD7tj2fX8Z2XLzddMjUw8oGJwOUwjsMg84bUlDlq4Eu0dKefqVy/eKsHseJK9jxm
wKaZXUU73xsOnSzpxrFLbBx6zFbE2pZIf4p0QRI2KgjAlLdsI4Hjx1x5AeriM+fE
+1FQM5k/Wig3MwrKd4aqZBMK0e5cG+dPlXHk/uJHQyYjZn1MNuRFFTrRVYg4HMZy
vLzk/oEjw0Smts5277IOw0xIxHHYYk7Fq80IHJmT4ez/9vbEBTkiiEic/t7xi6GC
PKrCXXISw8/ROdfRCzIGnetGCTK6fx1mDDhtNNYYPYGJNlWcqTh9QS41RxodlgKo
d8FfJTvrYr53eXk2xpYBsNoJNFXTnhyqNsIOLM+Ii4xFffcvVl48oX17r74hoNox
k21lCQP/6OEqewe/4E9VVj/+gI+mCszwxhuahNPapMLCmwQYAQIADwUCSy7GRwIb
AgUJC0c1AAFACRAugjI7j0NT7sBdIAQZAQIABgUCSy7GRwAKCRAtTh/pWVcTXYrc
B/wIYqG3Wp7r+nJaXajMG/DTDaHSrdb7SV/tKpM+NqvQwMMIIkvNl3cMfuNCoTZr
wE6Sk2dTn+eHVaR316gCFLprjeR3oUplO1KV3rKaHiFPjWw3nxKWp/zMw9lWBDSb
dp6vu1nXGFwutWUh8OLAs/P4PNqY1+xrh3XkfHwZopUmpAnghh6YNxAgwkDRsrjD
rnVjKIzgfy/sHooUWZYzOKPz51ZE0B033zWWjB6PcEls8GAB9CkmtY4oOpYxif2/
Rqt8HFGh4xUS7WXiz41nZ5bSRasRJGdBq2/kzy6ahZdVyFzMhNLNk9XL7j/qeHeN
ziBxzRgOY1MrrtcLz9z1VrApFiEEzqHeIasQhJPMnGV0LoIyO49DU+4Mcw//Xwuq
xSIKpw0F0Z0/o4Gf5+OVn/m5hXntWB5bD7TJDUegfW26ClUmQKM9WqUHsQv6bqBA
2dUBnD8QWxZZivEGF5qUuPCnKSRfmaX46+qs9xc4RB1sOWMen3aL+Q8yncKtcvml
xB5PC+RSbzpKXz9bDneF4Y/1orf+FFBHbIxDwKa3UHW/9XNOi5gu3Kayr4sOjFlp
H002+14eA//9oYnpaMayouWwkDf+Gp9VmsLjhF5cHtXiFZfcaAEoswox/7vHUSAV
JscSbIQQUVT96xLNjyO4t5S7yirZI8a+iv7FK3g1Wn4bUA3mljqDBYUmFAxiFiJj
4zX9HCO7Kr3Qqhb9omnk3+hpKDi+FeD3TQjHIN+/usNonUoWzirKsSPNT3pg84Hg
rx0Q2BYjZjvUgMo+y5SWY9aE/WiYR/E2cAVyz1Ax6zIGoDxWEHYGqSmzIDLSPHoG
xHD45b1427GKbwcs32WhdcMnKNBn5LrQI6TYBcZqYPkVMktDsxPQAAHOyHWVB9oz
ow62n/sHlSOLSzq286aVD71dcUlNtUoa1TSA6khA7FoNpLI4hBElJkQw+5xiDA07
mJEsUhDCrB6nzRJXQvwsw37rYS1FjF8aS0Wd8ftQSSNrz1msn0n2xXh3OCj/ulpr
G48jR0t8W9YXx8Bw4OA5fWAe+KVIKas8mML9Bm3OwE0ESy7HqgEIAKqCYMElV96m
n/dvzM2hPtJod28Ob3ql6ovZCZ+Ozzl2W7Elnh8qNUERpCKmHos1ZjRFKBc5zIBx
SOhacNbZ4eIzB46FhvXRyIjA5eEwf6Ew5KaKp456qM3hX5mw4npfDU3ZigBvKMPe
adk3EhPZu52LSw3abwBy83kHUzgdN4Lv/CVeWIWkC/eEZKGlAv6YNPCuqKbP6XjD
qVthLUzKFHjcLkaGVG2rjfN2FLrwuD/WGo/RK/+V6RN9GJSI6bnSdhkukj99nr7I
DdFuR0AHB2F9u8hzNmRuI5NY2R2/dvr88+oG6s7C/TtZPzFMusYBuDoVOeupb5RG
Y7wTWxP9g2UAEQEAAcLBfAQYAQoAJgIbDBYhBM6h3iGrEISTzJxldC6CMjuPQ1Pu
BQJjtCMbBQkh61zxAAoJEC6CMjuPQ1PuzU4QAJ57onZ5dKPcVxv+hf236YEqO5/f
b077IMJVEUn2ZsnFBAYYOh5QCZvLvwNbCGVUrndZI/EcN2qmhEOUPPHuqA1RmJt+
6aHXEdmqabQ0wVFWwSZ0Ayn0ZKvvZfTU5hKjNMbNlpqH0CeA7Pfm5ySmGN+odofh
b7x1XlSDVrXooKRNKGCZ7grn1lx0hGrRi3hCBFt52fvtI/9oQJNYMqxbLa1rs6Ut
FbHVQko8AfRc5dkaJvvu3Q1zSZ89Xx8DIQ6m+29i0M1UZcvUNz4O6qkemGi2kOKR
4EBgz37kw3D2whmVcxYxmwJ6/0v3sGTqkkcIA8/suQn2DDFv6zR4/HSqDmXHLNrZ
88RqGpSFpntqAcSUdQZVPAnmYJfMXPpGY3N/TsQNXgfV3Rr85nChRfFz7/gACjSt
DSY1JMbI70LCPpxaRH0jWR278Do540rUZJBcVeDEHbP6FDW8VpvjsNtfGnP5bGUN
1qGDT+B+vFWeLjVVBu4bam0heMDOIqbwKO4DqjdECMRjmsmmZmBjDOEDfypGakP3
pCirjS8cLpavzsLAnqbSQZa4GGOlYIRZu6Nt4Bi1W/biMwyM9BmPTzAOSTBPoF1S
kcy3Wy7sFKpC6Icu/NwLyAXuznNZMCko/wpb06JOhX21UPmb3vXX+Bo/SYrqaRqq
J+kZiJni/T3tgPMGwsF8BBgBCgAmAhsMFiEEzqHeIasQhJPMnGV0LoIyO49DU+4F
Al/hAvMFCRh0okgACgkQLoIyO49DU+404xAAsQQMMJWmntIjDxyL98IrSl+c2NFA
j6yxKEFgr4LHNCTt6OSTzq1RvObQ27PMEyImVR990ppQTCC057mzveOaTYJ1Nfuu
gYPrP4sJOOKhGMfOxA+z8wX55h41f3atSLKQcjIwqGkL59yreREb1aF9EfFvHS9u
vEzvy71In2CgP+DdVMY83tOU8SvY/xktsWTHMjIa4RpZhbQhf2K9ZQpLY9ugwUJi
j3BVXt0fnNVI+lreZrJEf6nX/9xxnTcHcVoGCIqzbCDpFUk6jihvafdJ7Hlf6/1p
N42x7KO98F9sX6o5EZDfXUko19RpEBKZKDq4zqE8LMob7klYJFQrJwsPzAinmPJq
+v/Dd6vDifAqcKRAuOogjmBNJFIRbCtXY+Zoyqt4NuvjqdgXlRvbKnWv/b6/l8H/
CmztLOr2hnCwy6XZlF/DsS56M7lKt4pp1TINNtR3ZXeeUCuJRoVatuY/NmbO76qm
4Gb9VzX3TGBumqo2CTQLlMVV3OCtvxLGO1UAaCiQ/jo1WzMbEd7UcC2wx/MQAGRU
SYtlzpk81svYcf6U+yDXohCINZisrOwkXhS42/4J6ww+qk+cYAXyh33UCzTd1QQR
xC1cVoDgypehqXLyQGulNvEp6BvvRE1IDlzDG41PooHb0FbkZW1dW9eW6tNscxxO
LVynq3elye30dwrCwXwEGAECAA8CGwwFAleOQUYFCRIDFBsAIQkQLoIyO49DU+4W
IQTOod4hqxCEk8ycZXQugjI7j0NT7r0VEACzqU1QB2MopHK6VANcHDwKCFOtXbPJ
aTcwnsrNtUcGRPNYujR7NbLH1sre4d2LFssoXabgmNlDooOPhvhclsnWIWeCXJqn
5ZHSZkrAzj5SYWOOub/C4pW/w798+PKgszSpXeOWLzczahqj/82SBUpQxy8vwHZq
cB7ML08GAKWf1wLiYZ8XRY5ePjJ16dFipI3hW/u3d1+4b1yXjQV8Z9a1efvCpTyD
hccN1OXrNL5bK8IehewcVD0SQUXn7Cdvh+oApv/EaZ7iQ3QbYua80C+g0bcjwbOQ
H8oeDwPdH6epD1xjWGIbV7tcA3fZqD9+1QPnD39KKNHvXXndJhZXb7mFGUj1YDTF
KQxGeW5hL3Yg/BAImvV4LhLLECJuhWROmS5hXXop8vhO2qfqmuN8aHpDRa3oqIir
PsCn0pDyF5p14KsN5opX1r1VZsaF2jGr4hcafjxjdHSCZ9o7tudi06ig7JSobCjT
T3VPOeknV3jzc+1rE1nSBdGBaOVybkhA3jldP509wbst0/C3hlJtrlIHsANTodJs
jbWikZvnyzYZbC/7w1EPmmCc2ikU4vdHeGeVZ9vu7TUpQXuvtPleKu8PSbMbB3JR
ha1jvpZcXSDkNZ3WWuv4bOMF3YAAq1mlqY5XIPQldHeFbrc4OeB7nyt4W/vf1yii
/dhGr2YfA9OCucLBfAQYAQIADwUCSy7HqgIbDAUJC0c1AAAhCRAugjI7j0NT7hYh
BM6h3iGrEISTzJxldC6CMjuPQ1PuISkQAIX1AuMCPphZ3CmZZQTd67Lg5daNn2G/
FZK60Lrp6XeOJW64PmNhoHs3huA5KSYBkgCWbOhaOAUdz3GlBSm3DT5gi9oArlQs
YzHMpavZvmqXqh5o80JM6l7fdwidvA+W2dHkSBqHU89XsXUI15xhYf35MLQ7HPWv
b3CG6aKbM8Sx3L/x5m5fkHT1XpBqi33aYCCpdI/dQ7Kt2q6onA8odFOUL76rjud9
tufe0/fqsELq5QqKNt61mKfRCYIlj0IUTu3hMmTU+mwLGRUwnJ+28/sReY/Ps0eK
7ARkFhkOwRdZCxT9ps/g/m06HT91XnT4mZl/TgS3G4u2DfSMXgm4F7HXpOaSXS5o
mQ0HwL7Wt58JDcHvVuI5c+2sy2pyu8wzssMS2OV0yOJUJlbB4MTupGudwoi3wLOL
GlYabincUMj1h6ym7yL7JDdBKwEf5tkebXVnFzhUkP81tFklQ48VJLsrvJtH6ad4
V9aB5Z06ZRYqJD8PqKNaKV/gMviV21DqBXhvuU0tmHK3nw4iwgD5I7qx5zQGAVGI
OAh00UIZDK5PCu0VgentX8VmChnV89MWIGHeTjdkP/bQa4HOWmuMbAbLkjyc+tGG
alnAHvIkQSC7IJdboJ9xFb6G+alqlQKX+P9/KpItyMJUvlk9Lod/LtEysQ0van7K
ISzq8e6NCAQJzsFNBEsuwZkBEADnzF0+1ze9JoQiBBl5KQjhNyR3q80dCrX+A6zm
1xKyoko/L2sWuH2P428hPtsEy/hm0UfKKMBnHsNbOMgBr9MHGjKW/JIKHH3Vjeji
+wjcdyYKHz/VeraSw55CbPmxkDAQGn68KDukEPdAWjDTKSYdZ/aa4nq9LUzUr73Q
auzXc9rzveeD8rQwOznkpahD/MlK20f77c2TG7Orxn2kC3VmFIMqr6hRV4PwY95y
9p26izfhQke9iP+WdltUs4sKsqFJIO+ft3FYfGEUGsMPy9TqXYqjTNcxSr4xBnW3
2tdzLpxQzGTPRXtBH7AC6V/+lJKwWT9RBSDDdk8r4wFx5vpw3jDz0H+QeAKWWnRD
5c5AYP8f4WYTw8iVM5k7K29ZqD5yNSVVthKmuDWdHWdq3gS3cjttdbikKJefZTIH
46nJEcyoeNMHMBlPMowE3ibPLab6aGc5W8uEZQjxnUVX7gWpPF0BnuVuRjvQkmDo
EmSNjpdmy9JL9fwePZoAXUDCETLWDVZF8yRojGoPRkBg2S2IhAOgTYNHxte1kWoS
r0xs9z8SYd4tDk/MAv8ClT8Aav9+vlP0F+sjk80uPl5KRhhDxTmkoKEMerEYtMVx
3gpIjx0bPgp0eRMg2G6lG31hCu1Xl6gyu8CYgyNaLfXcrf1cJSxbceokEEFf0HHR
/3LgxQARAQABwsF8BBgBCgAmAhsMFiEEzqHeIasQhJPMnGV0LoIyO49DU+4FAmO0
IxwFCSHrYwIACgkQLoIyO49DU+4yfw/+K9YKy5qhZA+DfCJibrr1sZK6gYXEUVNx
EjjM0GA1kZiIOUiDeTrPzPHL5oIQsVtstmAGTvCLUdyVbWALCgi88TZLenv7nRNo
NiSrA3INoHypbO2Z/ZnVxzZssPv9Iwqm+BscjeQWBf2tM2LHcIqUht2x+1sdGOme
IE0sw0toaa588IJ9ZTwyozFBddjYvFiFgLccC3DFf1yYdyTNrpPhssrRKJLd4xwC
hb2FQDwWYiVeJFUWoaMAALBdfhJcTVu9jsMvjKZvMgOV3Kib/OcQoDgqh+2fbwKN
ai94MQHlYyiEPjLkLDCXKbfPoPGgbYZWEiCTas9Ms6hWMGrMyzeqQMCeEkoUR1FB
cQA1Y5D1pWdGiYXIMYpNDVMjLou9CQnyXBy1q73YOQqKmxwbaOpz/GfL4+hAr9Nq
6FWoatBe/FOpyClWOJzPJgzYDnK7UrPRx8CdhI3uk4EvCGp8ydYr2xC+ycY82oxP
8TCaG/HTRJrgaW0isTOScMjaZ1z6bm6zfn95Ac4/WTdqlYYxv7h7X0Ufwx0GuKLp
JWEA/EjyVpuKPOFLHwp+ozDH/Gfa4am8h/cHr2WunSG6lkUC17THgzhMxM4vcmh4
DH98NyUlvwkpmLYSA5y0GJUVCxP+q42JzIPShcWuVp5H0TAnW7PAuznNUsvwRGbu
wuM+E8hLJ7LCwXwEGAEKACYCGwwWIQTOod4hqxCEk8ycZXQugjI7j0NT7gUCX+EC
8wUJGHSoWQAKCRAugjI7j0NT7pZ3D/wIQLsS1WBU6XpUfdLZEnTfRsQMeKA4FriZ
AgOtuKGEeKIcbZrVOvrpt0OcandG9GMBd85UaiYwB7Ftl+2ifThzonlnvbETq/+z
q/a9WTRqNMqviTqyBSg/85ZpN76TEmiDH3Vkug6njbVYgdrYyDUqc87/jvuYuWBd
EHbUSoW4QzagguzR8FCCduM/3TbYd8NSCN/vsuuVJ9gi8BKrHfsbx33EPhiniqN2
GN0fktJW5LuOPopreX7ttYtplJygH99VQTj090O/9NrjI4k6I9+fhHeRZIaSDoiO
F54z6J30/MJkiuNOx8mXYGjcSvL3ukxNB8mbT91R9DRo+y5GZVVop19fvKCor7W9
t4aA6eaYbKkYIUCMWFY+jZILgu0ofY0FVWlK4K4/2G8l8e1yHMKv8U7F3PGrmzrd
jPkwQOgGIHjI9q93tzoKkdbSi3thquNW+zXq54i0tISaKpG+wxdELSKA/THoEAXd
G39RZfraB3EiEtLUfG+LmL0MsBXDhgU51mmiU9b7r9Za0Ui6O6IuDwNceCZ+E6s0
2uKP0xafgfT3+oGRR2uRi6WVQT402shRDAyBZJOy/EzCETuUqmgyW00gvALtbDnB
GEn25zHItN/RpV8Z0IALXxwNx5w/lrPb7TkFcsvbjdUOBnpGlaUw+XsYxFypJ7QA
4wip6S7yLMLBfAQYAQIADwIbDAUCV45BaAUJEgMaTQAhCRAugjI7j0NT7hYhBM6h
3iGrEISTzJxldC6CMjuPQ1PuL4IQAKgil+ufDrIn2W3PJCYUHmzCruvec/MyeHET
D8ivLu4en13zG1PtTfBjbh5B2cTqnygWHdxZpB9UrdiSjD3D2e5zTRxuiODVZIVU
S1esEjpjd6SZ0wNba7NLWsngKI5cNEYwlAUmxm0+6nzDkf7Vl1dzJhAD0lFIBCZB
OIZF0igCJhtKrgFxn31L8w6YDUOPQTyRgdIR55lW98ym0l8wN6KqY/pqOYt3F822
VV/M47w+3Wj3jWU+deV7sNljDLBGzodpBPK0M6tW+DB/aCl16hQ0EbrtX0NOxdxt
/ULq/78QhTkninS47f/X9Tt1HmvLKUcgcNa7McBnPPejnK4Y/rBhbv7STJHO/sRu
ALb/TqtzBPho6fbc245o+8fOdAbw6bZDFhC3QUqxbAghe0cwWir+tJ36U6xQVIYW
Bm9G9bc1olhr8z+G1XuCi3CnnZU1x3DLeR9N+CMdAODjQLWMtl+hqPysMjhgsngi
ObypgKZg8X0oVt2j+lrZmIxz7vX/h/H3t6+YT3emEO/5zE6LD8odsUA8Oq0aZN5/
/Z5RWaPyO6uV8yIuxvanCJ9RseWEStfIxYG7rLlnHTzpSXvr66mmSuSehQS/zKHt
DMyFfKJwJ0bjXbzU6UdcH6rbFTAHN3DGVG229z83/RT9jMwyhiJL+4rvq1QqyMwj
IyrpFI2ewsF8BBgBAgAPBQJLLsGZAhsMBQkLRzUAACEJEC6CMjuPQ1PuFiEEzqHe
IasQhJPMnGV0LoIyO49DU+6WFg/+NYVDAOlXsvxXFdACrkBM7gVVWiBIiW61pHGr
X8eb55mmIE3Zp4VAdUs0SmgO8Mw/fzhABkJ+XyrQG3ai5I5GtqP4bc4m7hiafZjT
4LMHRFWl7iIgT0HMUlpc6rRSr2eSVKCn68t1ekHZqBxLA/ZuxxnXvuPHFgEVFskn
DGZ/MMgiOm/EI8EzjvJK/HY8SIGCWjmFcAUKFLZSb/9g7BPXOkx7MKU5x/sEpr/1
v67PoTFaInZo13i6W8FL4gPGD3XR55Rx1PrTayqsTGy6NOdHNJ/YQ8/m0elPYfPA
iTO93Aw48q63rhFiFxSlrO7TVWYPsTiJcK9vnnZEXI/rfk3QupP0GVju94mMn5Vg
PMvdGxSoTsyB0TyO57ZxM4Lx5b0i3PM6ONHpizckNWsQ2ERaOe+lcYfHPaBDNXt5
ByxEe9/Zisz0IMPKb2jdJ149buAj0Qx6POzpnKX31JDPSr4Zgsb8mUkTUciPq+Vl
3BLHH86pyvYCieLAtcOAOodqV469UTQUaUN/ZW7ITPITjzK2TXjMLupiZ7We5n5S
0JRcm2gydYHTHr1R9o4rBvbx8T4a8JKM3gMD+oRXuPYLwWY2oOaasqEQbO1My+VF
156mRNkKDFeEsJzrVbLqwHKnJftu5lBxt+iJq1u1IxGGJjHJ13qKGoe+CS1bCiMO
ZOTZGRs=
=fO4L
-----END PGP PUBLIC KEY BLOCK-----

1880
changelog Normal file

File diff suppressed because it is too large Load Diff

2
ci.fmf Normal file
View File

@ -0,0 +1,2 @@
# Docs: https://docs.fedoraproject.org/en-US/ci/tmt/#_multiple_plans
resultsdb-testcase: separate

View File

@ -1,36 +0,0 @@
From 2bc865ace050ff118db43f01457f95f95112b877 Mon Sep 17 00:00:00 2001
From: Ihor Radchenko <yantar92@posteo.net>
Date: Tue, 20 Feb 2024 14:59:20 +0300
Subject: org-file-contents: Consider all remote files unsafe
* lisp/org/org.el (org-file-contents): When loading files, consider all
remote files (like TRAMP-fetched files) unsafe, in addition to URLs.
---
lisp/org/org.el | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 0f5d17d..76559c9 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -4576,12 +4576,16 @@ from file or URL, and return nil.
If NOCACHE is non-nil, do a fresh fetch of FILE even if cached version
is available. This option applies only if FILE is a URL."
(let* ((is-url (org-file-url-p file))
+ (is-remote (condition-case nil
+ (file-remote-p file)
+ ;; In case of error, be safe.
+ (t t)))
(cache (and is-url
(not nocache)
(gethash file org--file-cache))))
(cond
(cache)
- (is-url
+ ((or is-url is-remote)
(with-current-buffer (url-retrieve-synchronously file)
(goto-char (point-min))
;; Move point to after the url-retrieve header.
--
cgit v1.1

View File

@ -1,223 +0,0 @@
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 588921bc70..a156444281 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -371,7 +371,7 @@ static void just_read_file (FILE *);
static language *get_language_from_langname (const char *);
static void readline (linebuffer *, FILE *);
-static long readline_internal (linebuffer *, FILE *, char const *);
+static long readline_internal (linebuffer *, FILE *, char const *, const bool);
static bool nocase_tail (const char *);
static void get_tag (char *, char **);
static void get_lispy_tag (char *);
@@ -394,7 +394,9 @@ static void free_fdesc (fdesc *);
static void pfnote (char *, bool, char *, int, int, long);
static void invalidate_nodes (fdesc *, node **);
static void put_entries (node *);
+static void clean_matched_file_tag (char const * const, char const * const);
+static void do_move_file (const char *, const char *);
static char *concat (const char *, const char *, const char *);
static char *skip_spaces (char *);
static char *skip_non_spaces (char *);
@@ -1307,7 +1309,7 @@ main (int argc, char **argv)
if (parsing_stdin)
fatal ("cannot parse standard input "
"AND read file names from it");
- while (readline_internal (&filename_lb, stdin, "-") > 0)
+ while (readline_internal (&filename_lb, stdin, "-", false) > 0)
process_file_name (filename_lb.buffer, lang);
}
else
@@ -1355,9 +1357,6 @@ main (int argc, char **argv)
/* From here on, we are in (CTAGS && !cxref_style) */
if (update)
{
- char *cmd =
- xmalloc (strlen (tagfile) + whatlen_max +
- sizeof "mv..OTAGS;grep -Fv '\t\t' OTAGS >;rm OTAGS");
for (i = 0; i < current_arg; ++i)
{
switch (argbuffer[i].arg_type)
@@ -1368,17 +1367,8 @@ main (int argc, char **argv)
default:
continue; /* the for loop */
}
- char *z = stpcpy (cmd, "mv ");
- z = stpcpy (z, tagfile);
- z = stpcpy (z, " OTAGS;grep -Fv '\t");
- z = stpcpy (z, argbuffer[i].what);
- z = stpcpy (z, "\t' OTAGS >");
- z = stpcpy (z, tagfile);
- strcpy (z, ";rm OTAGS");
- if (system (cmd) != EXIT_SUCCESS)
- fatal ("failed to execute shell command");
+ clean_matched_file_tag (tagfile, argbuffer[i].what);
}
- free (cmd);
append_to_tagfile = true;
}
@@ -1407,6 +1397,51 @@ main (int argc, char **argv)
return EXIT_SUCCESS;
}
+/*
+ * Equivalent to: mv tags OTAGS;grep -Fv ' filename ' OTAGS >tags;rm OTAGS
+ */
+static void
+clean_matched_file_tag (const char* tagfile, const char* match_file_name)
+{
+ FILE *otags_f = fopen ("OTAGS", "wb");
+ FILE *tag_f = fopen (tagfile, "rb");
+
+ if (otags_f == NULL)
+ pfatal ("OTAGS");
+
+ if (tag_f == NULL)
+ pfatal (tagfile);
+
+ int buf_len = strlen (match_file_name) + sizeof ("\t\t ") + 1;
+ char *buf = xmalloc (buf_len);
+ snprintf (buf, buf_len, "\t%s\t", match_file_name);
+
+ linebuffer line;
+ linebuffer_init (&line);
+ while (readline_internal (&line, tag_f, tagfile, true) > 0)
+ {
+ if (ferror (tag_f))
+ pfatal (tagfile);
+
+ if (strstr (line.buffer, buf) == NULL)
+ {
+ fprintf (otags_f, "%s\n", line.buffer);
+ if (ferror (tag_f))
+ pfatal (tagfile);
+ }
+ }
+ free (buf);
+ free (line.buffer);
+
+ if (fclose (otags_f) == EOF)
+ pfatal ("OTAGS");
+
+ if (fclose (tag_f) == EOF)
+ pfatal (tagfile);
+
+ do_move_file ("OTAGS", tagfile);
+ return;
+}
/*
* Return a compressor given the file name. If EXTPTR is non-zero,
@@ -1794,7 +1829,7 @@ find_entries (FILE *inf)
/* Else look for sharp-bang as the first two characters. */
if (parser == NULL
- && readline_internal (&lb, inf, infilename) > 0
+ && readline_internal (&lb, inf, infilename, false) > 0
&& lb.len >= 2
&& lb.buffer[0] == '#'
&& lb.buffer[1] == '!')
@@ -6293,7 +6328,7 @@ analyze_regex (char *regex_arg)
if (regexfp == NULL)
pfatal (regexfile);
linebuffer_init (&regexbuf);
- while (readline_internal (&regexbuf, regexfp, regexfile) > 0)
+ while (readline_internal (&regexbuf, regexfp, regexfile, false) > 0)
analyze_regex (regexbuf.buffer);
free (regexbuf.buffer);
if (fclose (regexfp) != 0)
@@ -6648,11 +6683,13 @@ get_lispy_tag (register char *bp)
/*
* Read a line of text from `stream' into `lbp', excluding the
- * newline or CR-NL, if any. Return the number of characters read from
- * `stream', which is the length of the line including the newline.
+ * newline or CR-NL (if `leave_cr` is false), if any. Return the
+ * number of characters read from `stream', which is the length
+ * of the line including the newline.
*
- * On DOS or Windows we do not count the CR character, if any before the
- * NL, in the returned length; this mirrors the behavior of Emacs on those
+ * On DOS or Windows, if `leave_cr` is false, we do not count the
+ * CR character, if any before the NL, in the returned length;
+ * this mirrors the behavior of Emacs on those
* platforms (for text files, it translates CR-NL to NL as it reads in the
* file).
*
@@ -6660,7 +6697,7 @@ get_lispy_tag (register char *bp)
* appended to `filebuf'.
*/
static long
-readline_internal (linebuffer *lbp, FILE *stream, char const *filename)
+readline_internal (linebuffer *lbp, FILE *stream, char const *filename, const bool leave_cr)
{
char *buffer = lbp->buffer;
char *p = lbp->buffer;
@@ -6691,7 +6728,7 @@ readline_internal (linebuffer *lbp, FILE *stream, char const *filename)
}
if (c == '\n')
{
- if (p > buffer && p[-1] == '\r')
+ if (!leave_cr && p > buffer && p[-1] == '\r')
{
p -= 1;
chars_deleted = 2;
@@ -6736,7 +6773,7 @@ readline (linebuffer *lbp, FILE *stream)
long result;
linecharno = charno; /* update global char number of line start */
- result = readline_internal (lbp, stream, infilename); /* read line */
+ result = readline_internal (lbp, stream, infilename, false); /* read line */
lineno += 1; /* increment global line number */
charno += result; /* increment global char number */
@@ -7104,6 +7141,46 @@ etags_mktmp (void)
return templt;
}
+static void
+do_move_file(const char *src_file, const char *dst_file)
+{
+ if (rename (src_file, dst_file) == 0)
+ return;
+
+ FILE *src_f = fopen (src_file, "rb");
+ FILE *dst_f = fopen (dst_file, "wb");
+
+ if (src_f == NULL)
+ pfatal (src_file);
+
+ if (dst_f == NULL)
+ pfatal (dst_file);
+
+ int c;
+ while ((c = fgetc (src_f)) != EOF)
+ {
+ if (ferror (src_f))
+ pfatal (src_file);
+
+ if (ferror (dst_f))
+ pfatal (dst_file);
+
+ if (fputc (c, dst_f) == EOF)
+ pfatal ("cannot write");
+ }
+
+ if (fclose (src_f) == EOF)
+ pfatal (src_file);
+
+ if (fclose (dst_f) == EOF)
+ pfatal (dst_file);
+
+ if (unlink (src_file) == -1)
+ pfatal ("unlink error");
+
+ return;
+}
+
/* Return a newly allocated string containing the file name of FILE
relative to the absolute directory DIR (which should end with a slash). */
static char *

26
emacs-desktop.patch Normal file
View File

@ -0,0 +1,26 @@
From 90e902854c53c6ab5ef8711af27f42fbc77d9ffe Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Mon, 10 Apr 2023 20:55:54 +0100
Subject: [PATCH] Use a wrapper to avoid the pure GTK build on X11, where it is
unsupported.
---
etc/emacs.desktop | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/etc/emacs.desktop b/etc/emacs.desktop
index 0d7cac14da5..eabc78bb884 100644
--- a/etc/emacs.desktop
+++ b/etc/emacs.desktop
@@ -3,7 +3,7 @@ Name=Emacs
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
-Exec=emacs %F
+Exec=emacs-desktop %F
Icon=emacs
Type=Application
Terminal=false
--
2.39.2

19
emacs-desktop.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/sh
# The pure GTK build of emacs is not supported on X11, so try to avoid
# using if there is an alternative.
if [ "$XDG_SESSION_TYPE" = 'x11' ]; then
emacs="$(readlink -f /usr/bin/emacs)"
emacs="${emacs##*/}"
emacs="${emacs%-*.*.*}"
if [ "$emacs" = 'emacs' ]; then
if type emacs-gtk+x11 >/dev/null; then
exec emacs-gtk+x11 "$@"
elif type emacs-lucid >/dev/null; then
exec emacs-lucid "$@"
fi
fi
fi
exec emacs "$@"

View File

@ -1,105 +0,0 @@
From 01a4035c869b91c153af9a9132c87adb7669ea1c Mon Sep 17 00:00:00 2001
From: lu4nx <lx@shellcodes.org>
Date: Tue, 6 Dec 2022 15:42:40 +0800
Subject: [PATCH] Fix etags local command injection vulnerability
* lib-src/etags.c: (escape_shell_arg_string): New function.
(process_file_name): Use it to quote file names passed to the
shell. (Bug#59817)
---
lib-src/etags.c | 63 +++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 58 insertions(+), 5 deletions(-)
diff --git a/lib-src/etags.c b/lib-src/etags.c
index d1d20858cdd..ba0092cc637 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -399,6 +399,7 @@ static void put_entries (node *);
static void clean_matched_file_tag (char const * const, char const * const);
static void do_move_file (const char *, const char *);
+static char *escape_shell_arg_string (char *);
static char *concat (const char *, const char *, const char *);
static char *skip_spaces (char *);
static char *skip_non_spaces (char *);
@@ -1670,13 +1671,16 @@ process_file_name (char *file, language *lang)
else
{
#if MSDOS || defined (DOS_NT)
- char *cmd1 = concat (compr->command, " \"", real_name);
- char *cmd = concat (cmd1, "\" > ", tmp_name);
+ int buf_len = strlen (compr->command) + strlen (" \"\" > \"\"") + strlen (real_name) + strlen (tmp_name) + 1;
+ char *cmd = xmalloc (buf_len);
+ snprintf (cmd, buf_len, "%s \"%s\" > \"%s\"", compr->command, real_name, tmp_name);
#else
- char *cmd1 = concat (compr->command, " '", real_name);
- char *cmd = concat (cmd1, "' > ", tmp_name);
+ char *new_real_name = escape_shell_arg_string (real_name);
+ char *new_tmp_name = escape_shell_arg_string (tmp_name);
+ int buf_len = strlen (compr->command) + strlen (" > ") + strlen (new_real_name) + strlen (new_tmp_name) + 1;
+ char *cmd = xmalloc (buf_len);
+ snprintf (cmd, buf_len, "%s %s > %s", compr->command, new_real_name, new_tmp_name);
#endif
- free (cmd1);
int tmp_errno;
if (system (cmd) == -1)
{
@@ -7124,6 +7128,55 @@ etags_mktmp (void)
return templt;
}
+/*
+ * Adds single quotes around a string, if found single quotes, escaped it.
+ * Return a newly-allocated string.
+ *
+ * For example:
+ * escape_shell_arg_string("test.txt") => 'test.txt'
+ * escape_shell_arg_string("'test.txt") => ''\''test.txt'
+ */
+static char *
+escape_shell_arg_string (char *str)
+{
+ char *p = str;
+ int need_space = 2; /* ' at begin and end */
+
+ while (*p != '\0')
+ {
+ if (*p == '\'')
+ need_space += 4; /* ' to '\'', length is 4 */
+ else
+ need_space++;
+
+ p++;
+ }
+
+ char *new_str = xnew (need_space + 1, char);
+ new_str[0] = '\'';
+ new_str[need_space-1] = '\'';
+
+ int i = 1; /* skip first byte */
+ p = str;
+ while (*p != '\0')
+ {
+ new_str[i] = *p;
+ if (*p == '\'')
+ {
+ new_str[i+1] = '\\';
+ new_str[i+2] = '\'';
+ new_str[i+3] = '\'';
+ i += 3;
+ }
+
+ i++;
+ p++;
+ }
+
+ new_str[need_space] = '\0';
+ return new_str;
+}
+
static void
do_move_file(const char *src_file, const char *dst_file)
{
--
2.36.1

View File

@ -1,26 +0,0 @@
From 1b4dc4691c1f87fc970fbe568b43869a15ad0d4c Mon Sep 17 00:00:00 2001
From: Xi Lu <lx@shellcodes.org>
Date: Sat, 24 Dec 2022 16:28:54 +0800
Subject: [PATCH] Fix htmlfontify.el command injection vulnerability.
* lisp/htmlfontify.el (hfy-text-p): Fix command injection
vulnerability. (Bug#60295)
---
lisp/htmlfontify.el | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index df4c6ab079c..389b92939cc 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -1912,7 +1912,7 @@ hfy-make-directory
(defun hfy-text-p (srcdir file)
"Is SRCDIR/FILE text? Uses `hfy-istext-command' to determine this."
- (let* ((cmd (format hfy-istext-command (expand-file-name file srcdir)))
+ (let* ((cmd (format hfy-istext-command (shell-quote-argument (expand-file-name file srcdir))))
(rsp (shell-command-to-string cmd)))
(string-match "text" rsp)))
--
2.36.1

View File

@ -0,0 +1,31 @@
From a56539c1d7ef7aa56e575685bdfe1406aebb518d Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Wed, 5 Feb 2020 12:42:04 +0000
Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20assemble=20systemdunitdir=20fro?=
=?UTF-8?q?m=20`libdir`?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
On 64 bit Fedora, `libdir` is `/usr/lib64`, whereas systemd services
live under `/usr/lib/systemd`.
---
Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.in b/Makefile.in
index 2c82c49fba..b2468eb824 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -208,7 +208,7 @@ appdatadir=
# Other options include ~/.config/systemd/user/,
# $XDG_RUNTIME_DIR/systemd/user/
# It seems the user may end up having to make a manual link...
-systemdunitdir=$(libdir)/systemd/user
+systemdunitdir=$(shell pkg-config --variable=systemduserunitdir systemd)
# Where the etc/images/icons/hicolor directory is to be installed.
icondir=$(datarootdir)/icons
--
2.24.1

View File

@ -1,25 +0,0 @@
From 937b9042ad7426acdcca33e3d931d8f495bdd804 Mon Sep 17 00:00:00 2001
From: Ihor Radchenko <yantar92@posteo.net>
Date: Tue, 20 Feb 2024 12:44:30 +0300
Subject: * lisp/gnus/mm-view.el (mm-display-inline-fontify): Mark contents
untrusted.
---
lisp/gnus/mm-view.el | 1 +
1 file changed, 1 insertion(+)
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 2e1261c..5f234e5 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -504,6 +504,7 @@ If MODE is not set, try to find mode automatically."
(setq coding-system (mm-find-buffer-file-coding-system)))
(setq text (buffer-string))))
(with-temp-buffer
+ (setq untrusted-content t)
(buffer-disable-undo)
(mm-enable-multibyte)
(insert (cond ((eq charset 'gnus-decoded)
--
cgit v1.1

View File

@ -1,31 +0,0 @@
From b73cde5e2815c531df7f5fd13e214a7d92f78239 Mon Sep 17 00:00:00 2001
From: Mike Kupfer <mkupfer@alum.berkeley.edu>
Date: Wed, 4 Jul 2018 15:43:04 -0700
Subject: [PATCH] Fix MH-E mail composition with GNU Mailutils (SF#485)
* lisp/mh-e/mh-comp.el (mh-bare-components): Recursively delete
the temporary folder.
---
lisp/mh-e/mh-comp.el | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index a9f809cfa1..aa22df8b18 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -925,8 +925,10 @@ mh-bare-components
(list "-form" mh-comp-formfile)))
(setq new (make-temp-file "comp."))
(rename-file (concat temp-folder "/" "1") new t)
- (delete-file (concat temp-folder "/" ".mh_sequences"))
- (delete-directory temp-folder)
+ ;; The temp folder could contain various metadata files. Rather
+ ;; than trying to enumerate all the known files, just do a
+ ;; recursive delete on the directory.
+ (delete-directory temp-folder t)
new))
(defun mh-read-draft (use initial-contents delete-contents-file)
--
2.36.1

View File

@ -1,43 +0,0 @@
From a8006ea580ed74f27f974d60b598143b04ad1741 Mon Sep 17 00:00:00 2001
From: Xi Lu <lx@shellcodes.org>
Date: Sat, 11 Mar 2023 18:53:37 +0800
Subject: * lisp/org/ob-latex.el: Fix command injection vulnerability
(org-babel-execute:latex):
Replaced the `(shell-command "mv BAR NEWBAR")' with `rename-file'.
TINYCHANGE
---
lisp/org/ob-latex.el | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/lisp/org/ob-latex.el b/lisp/org/ob-latex.el
index a2c24b3..ce39628 100644
--- a/lisp/org/ob-latex.el
+++ b/lisp/org/ob-latex.el
@@ -218,17 +218,14 @@ This function is called by `org-babel-execute-src-block'."
(if (string-suffix-p ".svg" out-file)
(progn
(shell-command "pwd")
- (shell-command (format "mv %s %s"
- (concat (file-name-sans-extension tex-file) "-1.svg")
- out-file)))
+ (rename-file (concat (file-name-sans-extension tex-file) "-1.svg")
+ out-file t))
(error "SVG file produced but HTML file requested")))
((file-exists-p (concat (file-name-sans-extension tex-file) ".html"))
(if (string-suffix-p ".html" out-file)
- (shell-command "mv %s %s"
- (concat (file-name-sans-extension tex-file)
- ".html")
- out-file)
- (error "HTML file produced but SVG file requested")))))
+ (rename-file (concat (file-name-sans-extension tex-file) ".html")
+ out-file t)
+ (error "HTML file produced but SVG file requested")))))
((or (string= "pdf" extension) imagemagick)
(with-temp-file tex-file
(require 'ox-latex)
--
cgit v1.1

View File

@ -1,78 +0,0 @@
From f4cc61636947b5c2f0afc67174dd369fe3277aa8 Mon Sep 17 00:00:00 2001
From: Ihor Radchenko <yantar92@posteo.net>
Date: Tue, 18 Jun 2024 13:06:44 +0200
Subject: org-link-expand-abbrev: Do not evaluate arbitrary unsafe Elisp code
* lisp/org/org.el (org-link-expand-abbrev): Refuse expanding %(...) link
abbrevs that specify unsafe function. Instead, display a warning, and
do not expand the abbrev. Clear all the text properties from the
returned link, to avoid any potential vulnerabilities caused by
properties that may contain arbitrary Elisp.
---
lisp/org/org.el | 40 +++++++++++++++++++++++++++++-----------
1 file changed, 29 insertions(+), 11 deletions(-)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 7a7f4f5..8a556c7 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -1152,26 +1152,44 @@ Abbreviations are defined in `org-link-abbrev-alist'."
(defun org-link-expand-abbrev (link)
"Apply replacements as defined in `org-link-abbrev-alist'."
- (if (string-match "^\\([^:]*\\)\\(::?\\(.*\\)\\)?$" link)
+ (if (not (string-match "^\\([^:]*\\)\\(::?\\(.*\\)\\)?$" link)) link
(let* ((key (match-string 1 link))
(as (or (assoc key org-link-abbrev-alist-local)
(assoc key org-link-abbrev-alist)))
(tag (and (match-end 2) (match-string 3 link)))
rpl)
(if (not as)
link
(setq rpl (cdr as))
- (cond
- ((symbolp rpl) (funcall rpl tag))
- ((string-match "%(\\([^)]+\\))" rpl)
- (replace-match
- (save-match-data
- (funcall (intern-soft (match-string 1 rpl)) tag)) t t rpl))
- ((string-match "%s" rpl) (replace-match (or tag "") t t rpl))
- ((string-match "%h" rpl)
- (replace-match (url-hexify-string (or tag "")) t t rpl))
- (t (concat rpl tag)))))
- link))
+ ;; Drop any potentially dangerous text properties like
+ ;; `modification-hooks' that may be used as an attack vector.
+ (substring-no-properties
+ (cond
+ ((symbolp rpl) (funcall rpl tag))
+ ((string-match "%(\\([^)]+\\))" rpl)
+ (let ((rpl-fun-symbol (intern-soft (match-string 1 rpl))))
+ ;; Using `unsafep-function' is not quite enough because
+ ;; Emacs considers functions like `genenv' safe, while
+ ;; they can potentially be used to expose private system
+ ;; data to attacker if abbreviated link is clicked.
+ (if (or (eq t (get rpl-fun-symbol 'org-link-abbrev-safe))
+ (eq t (get rpl-fun-symbol 'pure)))
+ (replace-match
+ (save-match-data
+ (funcall (intern-soft (match-string 1 rpl)) tag))
+ t t rpl)
+ (org-display-warning
+ (format "Disabling unsafe link abbrev: %s
+You may mark function safe via (put '%s 'org-link-abbrev-safe t)"
+ rpl (match-string 1 rpl)))
+ (setq org-link-abbrev-alist-local (delete as org-link-abbrev-alist-local)
+ org-link-abbrev-alist (delete as org-link-abbrev-alist))
+ link
+ )))
+ ((string-match "%s" rpl) (replace-match (or tag "") t t rpl))
+ ((string-match "%h" rpl)
+ (replace-match (url-hexify-string (or tag "")) t t rpl))
+ (t (concat rpl tag))))))))
;;; Storing and inserting links
--
cgit v1.1

View File

@ -0,0 +1,26 @@
From eaaf4883aee50974eeb03e529a29585f8ddc1d9d Mon Sep 17 00:00:00 2001
From: Bhavin Gandhi <bhavin192@geeksocket.in>
Date: Wed, 31 May 2023 22:44:54 +0530
Subject: [PATCH] Add package names to PGTK on X error message
---
src/pgtkterm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index c00e13550bd..ce51bff5947 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -6680,7 +6680,8 @@ pgtk_display_x_warning (GdkDisplay *display)
" System. That configuration is unsupported and"
" will lead to sporadic crashes during transfer of"
" large selection data. It will also lead to"
- " various problems with keyboard input.");
+ " various problems with keyboard input."
+ "\nInstall emacs-gtk+x11 or emacs-lucid package.");
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_container_add (GTK_CONTAINER (content_area), label);
gtk_widget_show (label);
--
2.40.1

View File

@ -1,16 +1,22 @@
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 1d28de7..1daec44 100644
index 0a3a49d868..b6c0975857 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -200,9 +200,9 @@
;; cause an error; and one of the other spelling engines below is
;; almost certainly installed in any case, for enchant to use.
@@ -191,12 +191,12 @@ Must be greater than 1."
:type 'integer)
(defcustom ispell-program-name
- (or (executable-find "aspell")
+ (or (executable-find "hunspell")
- (executable-find "ispell")
+ ;; Enchant is commonly installed as `enchant-2', so use this
+ ;; name and avoid old versions of `enchant'.
+ (or (executable-find "enchant-2")
(executable-find "hunspell")
- ;; Enchant is commonly installed as `enchant-2', so use this
- ;; name and avoid old versions of `enchant'.
- (executable-find "enchant-2")
+ (executable-find "aspell")
(executable-find "ispell")
- (executable-find "hunspell")
+ (executable-find "ispell")
"ispell")
"Program invoked by \\[ispell-word] and \\[ispell-region] commands."
:type 'string

View File

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2014 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> -->
<component type="desktop">
<id>emacs.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>GNU Emacs</name>
<summary>Edit text files, view pictures and binary files</summary>
<description>
<p>
Emacs is a powerful, customizable, self-documenting, modeless
editor. It is used primarely to edit text, including text
documents, source code of programs, web pages and XML documents,
but can also be used to display and edit binary files.
</p>
<p>
Emacs allows efficient editing of text with shortcuts which
allow operating on letters, words, sentences, and paragraphs as
single units. This includes both moving around and operations
like copying, deleting, transposing, and pasting. Macros can be
conveniently defined to repeat sequences of commands. In
addition, Emacs is (partially) built in a scripting language
(elisp) which can also be used to define further functions
extending existing capabilities.
</p>
<p>
Emacs has extensive support for editing source code, including
programmable syntax highlighting, automatic indentation, source
code indexing, overview modes, and navigation based on language
specific units like functions and blocks. It is also possible to
invoke the compiler from within Emacs and easily move between
compiler output and corresponding positions in the source.
</p>
<p>
Emacs has multiple modules which provide further functionality.
This provides the capability to read mail, news, browse
pictures, read man and info pages, browse the web, execute
arbitrary programs, and more, without leaving the editor.
</p>
</description>
<screenshots>
<screenshot type="default" height="888" width="1595">
<image>http://in.waw.pl/~zbyszek/fedora/emacs-two-buffers.png</image>
</screenshot>
<screenshot height="667" width="1199">
<image>http://in.waw.pl/~zbyszek/fedora/emacs-editing-xml.png</image>
</screenshot>
<screenshot height="572" width="1019">
<image>http://in.waw.pl/~zbyszek/fedora/emacs-hexl-mode.png</image>
</screenshot>
<screenshot height="667" width="1199">
<image>http://in.waw.pl/~zbyszek/fedora/emacs-showing-svg.png</image>
</screenshot>
<screenshot height="439" width="794">
<image>http://in.waw.pl/~zbyszek/fedora/emacs-with-python-source.png</image>
</screenshot>
</screenshots>
<url type="homepage">http://www.gnu.org/software/emacs/</url>
<url type="bugtracker">https://www.gnu.org/software/emacs/manual/html_node/emacs/Bugs.html</url>
<url type="donation">https://my.fsf.org/donate/</url>
<url type="help">https://www.gnu.org/software/emacs/manual/</url>
<update_contact>zbyszek@in.waw.pl</update_contact>
<translation/>
</component>

View File

@ -1,12 +0,0 @@
[Desktop Entry]
Name=Emacs
GenericName=Text Editor
Comment=Edit text
Comment[zh_TW]=
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacs %f
Icon=emacs
Type=Application
Terminal=false
Categories=Utility;TextEditor;X-Red-Hat-Base;
StartupWMClass=Emacs

View File

@ -1,11 +0,0 @@
[Unit]
Description=Emacs: the extensible, self-documenting text editor
[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Restart=always
[Install]
WantedBy=default.target

2287
emacs.spec

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
--- !Policy
product_versions:
- rhel-8
- rhel-*
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional}

10
plans.fmf Normal file
View File

@ -0,0 +1,10 @@
/tier1-internal:
discover:
how: fmf
url: https://pkgs.devel.redhat.com/git/tests/emacs
filter: 'tier: 1 | tag: ci-tier-1'
execute:
how: tmt
adjust:
enabled: false
when: distro == centos-stream or distro == fedora

View File

@ -1,2 +1,2 @@
SHA512 (emacs-26.1.tar.xz) = 537c2cfdd281151b360002419dde6280c313e07a937ed96405c67f754b3401ec5541091a3c0aa6690929bc33dd79e8e0d8844e7a6b014b7798c63cb15de210c2
SHA512 (package-keyring.gpg) = ca0dfa2edda9a6de5837dd6d754d574b13e007561e8dcc99c178d24f6a5dbb6880edc95db9d6afbea8bdf0b409671657fe22a778003ea0ccf351dce5e4fd429f
SHA512 (emacs-29.4.tar.xz) = 66b38081cb01d2c46ff7beefb45986cc225b4c922c30712ad0d456c6cae5507176ed99418c8f26948c5375c8afde4e4b2507d23ed997dbb5392d12150a121d80
SHA512 (emacs-29.4.tar.xz.sig) = 6c20269c260fb7f6d8b9b4582be25179a5adaaa1b9d94e68d55890f7b0b211dfd396c7005694b0154471ab3769f12e5067b8f4ec21720755d9087d89a8c722f6