EGCS and Linux 2.1.89 patch

Christof Petig (christof.petig@wtal.de)
Mon, 16 Mar 1998 08:42:37 +0100


This is a multi-part message in MIME format.
--------------D35A6359A98D10F6217952C1
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello,

last night I made some patches to the i386 asms to support
earlyclobbers. This is a menacing task. Any typo, forgetfulness or just
misunderstanding will definitely break the kernel.

BEWARE!

This patch (at last) compiles for me, though I get an early OOPS in idle
process (system halted). I just post it for having someone else take a
look at it and to start discussion whether it's the right way to go.
Interesting, the newer parts of the kernel (string-486.h) sometimes
already implemented earlyclobbers. Also there is a chance that I removed
some hidden bugs (I'm not always content with the argument passing.
Somewhere there might have been a "&" missing?).

If you fix it, please mail me directly - I'll take a closer look next
week.

Any comments welcome
Christof

PS: It has some pro and cons to apply a (perhaps working) patch for egcs
before 2.2.
+ egcs will definitely get popular (think of STL) and a lot of people
will use it for kernel compilation.
- This patch definitely destabilizes everything if it contains the
slightest error.
--------------D35A6359A98D10F6217952C1
Content-Type: application/octet-stream; name="egcs.patch2"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="egcs.patch2"

ZGlmZiAtcnUgbGludXhfb3JpZy9hcmNoL2kzODYvbGliL2NoZWNrc3VtLmMgbXlsaW51eC9h
cmNoL2kzODYvbGliL2NoZWNrc3VtLmMKLS0tIGxpbnV4X29yaWcvYXJjaC9pMzg2L2xpYi9j
aGVja3N1bS5jCVdlZCBGZWIgMTEgMTc6MTg6MjEgMTk5OAorKysgbXlsaW51eC9hcmNoL2kz
ODYvbGliL2NoZWNrc3VtLmMJRnJpIE1hciAxMyAxMDo1NzozNSAxOTk4CkBAIC0yNyw2ICsy
Nyw3IEBACiAgKi8KIAogdW5zaWduZWQgaW50IGNzdW1fcGFydGlhbChjb25zdCB1bnNpZ25l
ZCBjaGFyICogYnVmZiwgaW50IGxlbiwgdW5zaWduZWQgaW50IHN1bSkgeworaW50IF9fY2xv
YmJlcjAsX19jbG9iYmVyMTsKIAkgIC8qCiAJICAgKiBFeHBlcmltZW50cyB3aXRoIGV0aGVy
bmV0IGFuZCBzbGlwIGNvbm5lY3Rpb25zIHNob3cgdGhhdCBidWZmCiAJICAgKiBpcyBhbGln
bmVkIG9uIGVpdGhlciBhIDItYnl0ZSBvciA0LWJ5dGUgYm91bmRhcnkuICBXZSBnZXQgYXQK
QEAgLTkxLDkgKzkyLDkgQEAKIDY6CSAgICBhZGRsICUlZWN4LCUlZWF4CiAJICAgIGFkY2wg
JDAsICUlZWF4IAogNzoJICAgICIKLQk6ICI9YSIoc3VtKQotCTogIjAiKHN1bSksICJjIihs
ZW4pLCAiUyIoYnVmZikKLQk6ICJieCIsICJjeCIsICJkeCIsICJzaSIpOworCTogIj0mYSIo
c3VtKSwgIj0mYyIgKF9fY2xvYmJlcjApLCAiPSZTIiAoX19jbG9iYmVyMSkKKwk6ICIwIihz
dW0pLCAiMSIobGVuKSwgIjIiKGJ1ZmYpCisJOiAiYngiLCAiZHgiKTsKIAlyZXR1cm4oc3Vt
KTsKIH0KIApAQCAtMTIyLDcgKzEyMyw3IEBACiAKIHVuc2lnbmVkIGludCBjc3VtX3BhcnRp
YWxfY29weV9nZW5lcmljIChjb25zdCBjaGFyICpzcmMsIGNoYXIgKmRzdCwKIAkJCQkgIGlu
dCBsZW4sIGludCBzdW0sIGludCAqc3JjX2Vycl9wdHIsIGludCAqZHN0X2Vycl9wdHIpCi17
Cit7ICAgaW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMSxfX2Nsb2JiZXIyOwogICAgIF9fYXNt
X18gX192b2xhdGlsZV9fICggIgogCQl0ZXN0bCAkMiwgJSVlZGkJCSMgQ2hlY2sgYWxpZ25t
ZW50LiAKIAkJanogMmYJCQkjIEp1bXAgaWYgYWxpZ25tZW50IGlzIG9rLgpAQCAtMjEyLDE4
ICsyMTMsMTggQEAKIAkJCQkJCSMKIDYwMDA6CQkJCQkJIwogCQkJCQkJIwotCW1vdmwJJTcs
ICglJWVieCkJCQkjCisJbW92bAkkLTE0LCAoJSVlYngpCQkJIyAtRUZBVUxUCiAJCQkJCQkj
CiAjIEZJWE1FOiBkbyB6ZXJvaW5nIG9mIHJlc3Qgb2YgdGhlIGJ1ZmZlciBoZXJlLiAjCiAJ
CQkJCQkjCiAJam1wCTUwMDBiCQkJCSMKIAkJCQkJCSMKIDYwMDE6CQkJCQkJIwotCW1vdmwg
ICAgJTEsICUlZWJ4CQkJIworCW1vdmwgICAgJTQsICUlZWJ4CQkJIwogCWptcAk2MDAwYgkJ
CQkjCiAJCQkJCQkjCiA2MDAyOgkJCQkJCSMKLQltb3ZsICAgICUyLCAlJWVieAkJCSMKKwlt
b3ZsICAgICU1LCAlJWVieAkJCSMKIAlqbXAJNjAwMGIJCQkJIwogCQkJCQkJIwogLnByZXZp
b3VzCQkJCQkjCkBAIC0yMzEsMTAgKzIzMiwxMSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICIKLQk6ICI9YSIgKHN1bSksICI9bSIg
KHNyY19lcnJfcHRyKSwgIj1tIiAoZHN0X2Vycl9wdHIpCi0JOiAgIjAiIChzdW0pLCAiYyIg
KGxlbiksICJTIiAoc3JjKSwgIkQiIChkc3QpLAotCQkiaSIgKC1FRkFVTFQpCi0JOiAiYngi
LCAiY3giLCAiZHgiLCAic2kiLCAiZGkiICk7CisJOiAiPSZhIiAoc3VtKSwgIj0mYyIgKF9f
Y2xvYmJlcjApLCAiPSZTIiAoX19jbG9iYmVyMSksIAorCSAgIj0mRCIgKF9fY2xvYmJlcjIp
LCAiPW0iIChzcmNfZXJyX3B0ciksICI9bSIgKGRzdF9lcnJfcHRyKQorCTogICIwIiAoc3Vt
KSwgIjEiIChsZW4pLCAiMiIgKHNyYyksICIzIiAoZHN0KQorCTogImJ4IiwgImR4IiApOwor
CS8qIFNvcnJ5LCBJIGhhZCB0byBoYXJkY29kZSAtRUZBVUxULCBvdXQgb2YgcGFyYW1ldGVy
cyAqLwogCiAgICAgcmV0dXJuKHN1bSk7CiB9CmRpZmYgLXJ1IGxpbnV4X29yaWcvYXJjaC9p
Mzg2L2xpYi9kZWxheS5jIG15bGludXgvYXJjaC9pMzg2L2xpYi9kZWxheS5jCi0tLSBsaW51
eF9vcmlnL2FyY2gvaTM4Ni9saWIvZGVsYXkuYwlNb24gSmFuICA1IDExOjM5OjA4IDE5OTgK
KysrIG15bGludXgvYXJjaC9pMzg2L2xpYi9kZWxheS5jCVRodSBNYXIgMTIgMjA6MjY6MDIg
MTk5OApAQCAtMjUsMTEgKzI1LDEwIEBACiB9CiAKIGlubGluZSB2b2lkIF9fY29uc3RfdWRl
bGF5KHVuc2lnbmVkIGxvbmcgeGxvb3BzKQoteworewlpbnQgX19jbG9iYmVyMDsKIAlfX2Fz
bV9fKCJtdWxsICUwIgotCQk6Ij1kIiAoeGxvb3BzKQotCQk6ImEiICh4bG9vcHMpLCIwIiAo
Y3VycmVudF9jcHVfZGF0YS5sb29wc19wZXJfc2VjKQotCQk6ImF4Iik7CisJCToiPSZhIiAo
X19jbG9iYmVyMCksICI9ZCIgKHhsb29wcykKKwkJOiIwIiAoeGxvb3BzKSwiMSIgKGN1cnJl
bnRfY3B1X2RhdGEubG9vcHNfcGVyX3NlYykpOwogICAgICAgICBfX2RlbGF5KHhsb29wcyk7
CiB9CiAKZGlmZiAtcnUgbGludXhfb3JpZy9hcmNoL2kzODYvbGliL3VzZXJjb3B5LmMgbXls
aW51eC9hcmNoL2kzODYvbGliL3VzZXJjb3B5LmMKLS0tIGxpbnV4X29yaWcvYXJjaC9pMzg2
L2xpYi91c2VyY29weS5jCVdlZCBGZWIgMTEgMTc6MTg6MDggMTk5OAorKysgbXlsaW51eC9h
cmNoL2kzODYvbGliL3VzZXJjb3B5LmMJRnJpIE1hciAxMyAxMToxNDozMSAxOTk4CkBAIC0y
OSw2ICsyOSw3IEBACiAgKi8KIAogI2RlZmluZSBfX2RvX3N0cm5jcHlfZnJvbV91c2VyKGRz
dCxzcmMsY291bnQscmVzKQkJCSAgIFwKKyh7CWludCBfX2Nsb2JiZXIwLF9fY2xvYmJlcjE7
CQkJCQkgICBcCiAJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJICAgXAogCQkiCXRlc3Rs
ICUxLCUxXG4iCQkJCQkgICBcCiAJCSIJanogMmZcbiIJCQkJCSAgIFwKQEAgLTQxLDE2ICs0
MiwxOCBAQAogCQkiMToJc3VibCAlMSwlMFxuIgkJCQkJICAgXAogCQkiMjpcbiIJCQkJCQkJ
ICAgXAogCQkiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgkJCQkgICBcCi0JCSIzOgltb3Zs
ICUyLCUwXG4iCQkJCQkgICBcCisJCSIzOgltb3ZsICU0LCUwXG4iCQkJCQkgICBcCiAJCSIJ
am1wIDJiXG4iCQkJCQkgICBcCiAJCSIucHJldmlvdXNcbiIJCQkJCQkgICBcCiAJCSIuc2Vj
dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCQkJCSAgIFwKIAkJIgkuYWxpZ24gNFxuIgkJCQkJ
ICAgXAogCQkiCS5sb25nIDBiLDNiXG4iCQkJCQkgICBcCiAJCSIucHJldmlvdXMiCQkJCQkJ
ICAgXAotCQk6ICI9ZCIocmVzKSwgIj1jIihjb3VudCkJCQkJICAgXAotCQk6ICJpIigtRUZB
VUxUKSwgIjAiKGNvdW50KSwgIjEiKGNvdW50KSwgIlMiKHNyYyksICJEIihkc3QpIFwKLQkJ
OiAic2kiLCAiZGkiLCAiYXgiLCAibWVtb3J5IikKKwkJOiAiPWQiKHJlcyksICI9YyIoY291
bnQpLCAiPSZTIihfX2Nsb2JiZXIwKSwJCSAgIFwKKwkJICAiPSZEIihfX2Nsb2JiZXIxKQkJ
CQkJICAgXAorCQk6ICJpIigtRUZBVUxUKSwgIjAiKGNvdW50KSwgIjEiKGNvdW50KSwgIjIi
KHNyYyksICIzIihkc3QpIFwKKwkJOiAiYXgiLCAibWVtb3J5Iik7CQkJCQkgICBcCit9KQkJ
CiAKIGxvbmcKIF9fc3RybmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyICpz
cmMsIGxvbmcgY291bnQpCkBAIC03NCwxNCArNzcsMTUgQEAKICAqIFplcm8gVXNlcnNwYWNl
CiAgKi8KIAotI2RlZmluZSBfX2RvX2NsZWFyX3VzZXIoYWRkcixzaXplKQkJCQkJCVwKKyNk
ZWZpbmUgX19kb19jbGVhcl91c2VyKGFkZHIsc2l6ZSkJCQkJCVwKKyh7CWludCBfX2Nsb2Ji
ZXIwOwkJCQkJCQlcCiAJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAogCQkiMDoJcmVw
OyBzdG9zbFxuIgkJCQkJXAotCQkiCW1vdmwgJTEsJTBcbiIJCQkJCVwKKwkJIgltb3ZsICUy
LCUwXG4iCQkJCQlcCiAJCSIxOglyZXA7IHN0b3NiXG4iCQkJCQlcCiAJCSIyOlxuIgkJCQkJ
CQlcCiAJCSIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQkJCVwKLQkJIjM6CWxlYSAwKCUx
LCUwLDQpLCUwXG4iCQkJCVwKKwkJIjM6CWxlYSAwKCUyLCUwLDQpLCUwXG4iCQkJCVwKIAkJ
IglqbXAgMmJcbiIJCQkJCVwKIAkJIi5wcmV2aW91c1xuIgkJCQkJCVwKIAkJIi5zZWN0aW9u
IF9fZXhfdGFibGUsXCJhXCJcbiIJCQkJXApAQCAtODksOSArOTMsOSBAQAogCQkiCS5sb25n
IDBiLDNiXG4iCQkJCQlcCiAJCSIJLmxvbmcgMWIsMmJcbiIJCQkJCVwKIAkJIi5wcmV2aW91
cyIJCQkJCQlcCi0JCTogIj0mYyIoc2l6ZSkJCQkJCQlcCi0JCTogInIiKHNpemUgJiAzKSwg
IjAiKHNpemUgLyA0KSwgIkQiKGFkZHIpLCAiYSIoMCkJXAotCQk6ICJkaSIpCisJCTogIj0m
YyIoc2l6ZSksICI9JkQiIChfX2Nsb2JiZXIwKQkJCVwKKwkJOiAiciIoc2l6ZSAmIDMpLCAi
MCIoc2l6ZSAvIDQpLCAiMSIoYWRkciksICJhIigwKSk7CVwKK30pCiAKIHVuc2lnbmVkIGxv
bmcKIGNsZWFyX3VzZXIodm9pZCAqdG8sIHVuc2lnbmVkIGxvbmcgbikKZGlmZiAtcnUgbGlu
dXhfb3JpZy9hcmNoL2kzODYvbW0vaW5pdC5jIG15bGludXgvYXJjaC9pMzg2L21tL2luaXQu
YwotLS0gbGludXhfb3JpZy9hcmNoL2kzODYvbW0vaW5pdC5jCVRodSBKYW4gMTUgMDg6MTM6
NTYgMTk5OAorKysgbXlsaW51eC9hcmNoL2kzODYvbW0vaW5pdC5jCVRodSBNYXIgMTIgMjA6
MjY6MDIgMTk5OApAQCAtNDgsMjQgKzQ4LDI2IEBACiBwdGVfdCAqIF9fYmFkX3BhZ2V0YWJs
ZSh2b2lkKQogewogCWV4dGVybiBjaGFyIGVtcHR5X2JhZF9wYWdlX3RhYmxlW1BBR0VfU0la
RV07CisJaW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMTsKIAotCV9fYXNtX18gX192b2xhdGls
ZV9fKCJjbGQgOyByZXAgOyBzdG9zbCI6CisJX19hc21fXyBfX3ZvbGF0aWxlX18oImNsZCA7
IHJlcCA7IHN0b3NsIgorCQk6Ij0mRCIgKF9fY2xvYmJlcjApLCAiPSZjIiAoX19jbG9iYmVy
MSkKIAkJOiJhIiAocHRlX3ZhbChCQURfUEFHRSkpLAotCQkgIkQiICgobG9uZykgZW1wdHlf
YmFkX3BhZ2VfdGFibGUpLAotCQkgImMiIChQQUdFX1NJWkUvNCkKLQkJOiJkaSIsImN4Iik7
CisJCSAiMCIgKChsb25nKSBlbXB0eV9iYWRfcGFnZV90YWJsZSksCisJCSAiMSIgKFBBR0Vf
U0laRS80KSk7CiAJcmV0dXJuIChwdGVfdCAqKSBlbXB0eV9iYWRfcGFnZV90YWJsZTsKIH0K
IAogcHRlX3QgX19iYWRfcGFnZSh2b2lkKQogewogCWV4dGVybiBjaGFyIGVtcHR5X2JhZF9w
YWdlW1BBR0VfU0laRV07CisJaW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMTsKIAotCV9fYXNt
X18gX192b2xhdGlsZV9fKCJjbGQgOyByZXAgOyBzdG9zbCI6CisJX19hc21fXyBfX3ZvbGF0
aWxlX18oImNsZCA7IHJlcCA7IHN0b3NsIgorCQk6Ij0mRCIgKF9fY2xvYmJlcjApLCAiPSZj
IiAoX19jbG9iYmVyMSkKIAkJOiJhIiAoMCksCi0JCSAiRCIgKChsb25nKSBlbXB0eV9iYWRf
cGFnZSksCi0JCSAiYyIgKFBBR0VfU0laRS80KQotCQk6ImRpIiwiY3giKTsKKwkJICIwIiAo
KGxvbmcpIGVtcHR5X2JhZF9wYWdlKSwKKwkJICIxIiAoUEFHRV9TSVpFLzQpKTsKIAlyZXR1
cm4gcHRlX21rZGlydHkobWtfcHRlKCh1bnNpZ25lZCBsb25nKSBlbXB0eV9iYWRfcGFnZSwg
UEFHRV9TSEFSRUQpKTsKIH0KIApkaWZmIC1ydSBsaW51eF9vcmlnL2luY2x1ZGUvYXNtLWkz
ODYvYml0b3BzLmggbXlsaW51eC9pbmNsdWRlL2FzbS1pMzg2L2JpdG9wcy5oCi0tLSBsaW51
eF9vcmlnL2luY2x1ZGUvYXNtLWkzODYvYml0b3BzLmgJVHVlIERlYyAgMiAxMzowOTowMCAx
OTk3CisrKyBteWxpbnV4L2luY2x1ZGUvYXNtLWkzODYvYml0b3BzLmgJVGh1IE1hciAxMiAx
Nzo0ODo0MCAxOTk4CkBAIC0xMjcsNyArMTI3LDcgQEAKICAqLwogZXh0ZXJuIF9faW5saW5l
X18gaW50IGZpbmRfZmlyc3RfemVyb19iaXQodm9pZCAqIGFkZHIsIHVuc2lnbmVkIHNpemUp
CiB7Ci0JaW50IHJlczsKKwlpbnQgcmVzLF9fY2xvYmJlcjAsX19jbG9iYmVyMTsKIAogCWlm
ICghc2l6ZSkKIAkJcmV0dXJuIDA7CkBAIC0xNDIsOSArMTQyLDkgQEAKIAkJIjE6XHRzdWJs
ICUlZWJ4LCUlZWRpXG5cdCIKIAkJInNobGwgJDMsJSVlZGlcblx0IgogCQkiYWRkbCAlJWVk
aSwlJWVkeCIKLQkJOiI9ZCIgKHJlcykKLQkJOiJjIiAoKHNpemUgKyAzMSkgPj4gNSksICJE
IiAoYWRkciksICJiIiAoYWRkcikKLQkJOiJheCIsICJjeCIsICJkaSIpOworCQk6Ij1kIiAo
cmVzKSwgIj0mYyIgKF9fY2xvYmJlcjApLCAiPSZEIiAoX19jbG9iYmVyMSkKKwkJOiIxIiAo
KHNpemUgKyAzMSkgPj4gNSksICIyIiAoYWRkciksICJiIiAoYWRkcikKKwkJOiJheCIpOwog
CXJldHVybiByZXM7CiB9CiAKZGlmZiAtcnUgbGludXhfb3JpZy9pbmNsdWRlL2FzbS1pMzg2
L2J1Z3MuaCBteWxpbnV4L2luY2x1ZGUvYXNtLWkzODYvYnVncy5oCi0tLSBsaW51eF9vcmln
L2luY2x1ZGUvYXNtLWkzODYvYnVncy5oCUZyaSBKYW4gMjMgMDk6MDY6MDcgMTk5OAorKysg
bXlsaW51eC9pbmNsdWRlL2FzbS1pMzg2L2J1Z3MuaAlUaHUgTWFyIDEyIDE5OjMxOjU1IDE5
OTgKQEAgLTEzMywxNCArMTMzLDE0IEBACiBfX2luaXRmdW5jKHN0YXRpYyB2b2lkIGNoZWNr
X3BvcGFkKHZvaWQpKQogewogI2lmZGVmIENPTkZJR19NMzg2Ci0JaW50IHJlcywgaW5wID0g
KGludCkgJnJlczsKKwlpbnQgcmVzLCBpbnAgPSAoaW50KSAmcmVzLCBfX2Nsb2JiZXIwOwog
CiAJcHJpbnRrKEtFUk5fSU5GTyAiQ2hlY2tpbmcgZm9yIHBvcGFkIGJ1Zy4uLiAiKTsKIAlf
X2FzbV9fIF9fdm9sYXRpbGVfXyggCiAJICAibW92bCAkMTIzNDU2NzgsJSVlYXg7IG1vdmwg
JDAsJSVlZGk7IHB1c2hhOyBwb3BhOyBtb3ZsICglJWVkeCwlJWVkaSksJSVlY3ggIgotCSAg
OiAiPWVheCIgKHJlcykKKwkgIDogIj1lYXgiIChyZXMpLCAiPWVkeCIgKF9fY2xvYmJlcjAp
CiAJICA6ICJlZHgiIChpbnApCi0JICA6ICJlYXgiLCAiZWN4IiwgImVkeCIsICJlZGkiICk7
CisJICA6ICJlY3giLCAiZWRpIiApOwogCS8qIElmIHRoaXMgZmFpbHMsIGl0IG1lYW5zIHRo
YXQgYW55IHVzZXIgcHJvZ3JhbSBtYXkgbG9jayBDUFUgaGFyZC4gVG9vIGJhZC4gKi8KIAlp
ZiAocmVzICE9IDEyMzQ1Njc4KSBwcmludGsoICJCdWdneS5cbiIgKTsKIAkJICAgICAgICBl
bHNlIHByaW50ayggIk9rLlxuIiApOwpkaWZmIC1ydSBsaW51eF9vcmlnL2luY2x1ZGUvYXNt
LWkzODYvcG9zaXhfdHlwZXMuaCBteWxpbnV4L2luY2x1ZGUvYXNtLWkzODYvcG9zaXhfdHlw
ZXMuaAotLS0gbGludXhfb3JpZy9pbmNsdWRlL2FzbS1pMzg2L3Bvc2l4X3R5cGVzLmgJV2Vk
IERlYyAxMCAxMjoyMzowNyAxOTk3CisrKyBteWxpbnV4L2luY2x1ZGUvYXNtLWkzODYvcG9z
aXhfdHlwZXMuaAlUaHUgTWFyIDEyIDIyOjU0OjM0IDE5OTgKQEAgLTU3LDkgKzU3LDEyIEBA
CiAKICN1bmRlZglfX0ZEX1pFUk8KICNkZWZpbmUgX19GRF9aRVJPKGZkc2V0cCkgXAorKHsJ
CWludCBfX2Nsb2JiZXIwLF9fY2xvYmJlcjE7IFwKIAkJX19hc21fXyBfX3ZvbGF0aWxlX18o
ImNsZCA7IHJlcCA7IHN0b3NsIiBcCi0JCQk6Ij1tIiAoKihfX2tlcm5lbF9mZF9zZXQgKikg
KGZkc2V0cCkpIFwKLQkJCToiYSIgKDApLCAiYyIgKF9fRkRTRVRfTE9OR1MpLCBcCi0JCQki
RCIgKChfX2tlcm5lbF9mZF9zZXQgKikgKGZkc2V0cCkpIDoiY3giLCJkaSIpCisJCQk6Ij1t
IiAoKihfX2tlcm5lbF9mZF9zZXQgKikgKGZkc2V0cCkpLCBcCisJCQkgIj0mYyIgKF9fY2xv
YmJlcjApLCAiPSZEIiAoX19jbG9iYmVyMSkgXAorCQkJOiJhIiAoMCksICIxIiAoX19GRFNF
VF9MT05HUyksIFwKKwkJCSAiMiIgKChfX2tlcm5lbF9mZF9zZXQgKikgKGZkc2V0cCkpKTsg
XAorfSkKIAogI2VuZGlmCmRpZmYgLXJ1IGxpbnV4X29yaWcvaW5jbHVkZS9hc20taTM4Ni9z
dHJpbmctNDg2LmggbXlsaW51eC9pbmNsdWRlL2FzbS1pMzg2L3N0cmluZy00ODYuaAotLS0g
bGludXhfb3JpZy9pbmNsdWRlL2FzbS1pMzg2L3N0cmluZy00ODYuaAlNb24gU2VwIDI5IDEy
OjQ4OjEwIDE5OTcKKysrIG15bGludXgvaW5jbHVkZS9hc20taTM4Ni9zdHJpbmctNDg2LmgJ
VGh1IE1hciAxMiAxOTo0Mzo0MSAxOTk4CkBAIC0xOTgsOSArMTk4LDEwIEBACiBleHRlcm4g
aW5saW5lIHNpemVfdCBzdHJzcG4oY29uc3QgY2hhciAqIGNzLCBjb25zdCBjaGFyICogY3Qp
CiB7CiByZWdpc3RlciBjaGFyICogX19yZXM7CitpbnQgX19jbG9iYmVyMCxfX2Nsb2JiZXIx
OwogX19hc21fXyBfX3ZvbGF0aWxlX18oCiAJImNsZFxuXHQiCi0JIm1vdmwgJTQsJSVlZGlc
blx0IgorCSJtb3ZsICU2LCUlZWRpXG5cdCIKIAkicmVwbmVcblx0IgogCSJzY2FzYlxuXHQi
CiAJIm5vdGwgJSVlY3hcblx0IgpAQCAtMjA5LDE0ICsyMTAsMTUgQEAKIAkiMTpcdGxvZHNi
XG5cdCIKIAkidGVzdGIgJSVhbCwlJWFsXG5cdCIKIAkiamUgMmZcblx0IgotCSJtb3ZsICU0
LCUlZWRpXG5cdCIKKwkibW92bCAlNiwlJWVkaVxuXHQiCiAJIm1vdmwgJSVlZHgsJSVlY3hc
blx0IgogCSJyZXBuZVxuXHQiCiAJInNjYXNiXG5cdCIKIAkiamUgMWJcbiIKIAkiMjpcdGRl
Y2wgJTAiCi0JOiI9UyIgKF9fcmVzKToiYSIgKDApLCJjIiAoMHhmZmZmZmZmZiksIjAiIChj
cyksImciIChjdCkKLQk6ImF4IiwiY3giLCJkeCIsImRpIik7CisJOiI9JlMiIChfX3Jlcyks
ICI9JmEiIChfX2Nsb2JiZXIwKSwgIj0mYyIgKF9fY2xvYmJlcjEpCisJOiIxIiAoMCksIjIi
ICgweGZmZmZmZmZmKSwiMCIgKGNzKSwiZyIgKGN0KQorCToiZHgiLCJkaSIpOwogcmV0dXJu
IF9fcmVzLWNzOwogfQogCkBAIC0yMjQsOSArMjI2LDEwIEBACiBleHRlcm4gaW5saW5lIHNp
emVfdCBzdHJjc3BuKGNvbnN0IGNoYXIgKiBjcywgY29uc3QgY2hhciAqIGN0KQogewogcmVn
aXN0ZXIgY2hhciAqIF9fcmVzOworaW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMTsKIF9fYXNt
X18gX192b2xhdGlsZV9fKAogCSJjbGRcblx0IgotCSJtb3ZsICU0LCUlZWRpXG5cdCIKKwki
bW92bCAlNiwlJWVkaVxuXHQiCiAJInJlcG5lXG5cdCIKIAkic2Nhc2Jcblx0IgogCSJub3Rs
ICUlZWN4XG5cdCIKQEAgLTIzNSwxNCArMjM4LDE1IEBACiAJIjE6XHRsb2RzYlxuXHQiCiAJ
InRlc3RiICUlYWwsJSVhbFxuXHQiCiAJImplIDJmXG5cdCIKLQkibW92bCAlNCwlJWVkaVxu
XHQiCisJIm1vdmwgJTYsJSVlZGlcblx0IgogCSJtb3ZsICUlZWR4LCUlZWN4XG5cdCIKIAki
cmVwbmVcblx0IgogCSJzY2FzYlxuXHQiCiAJImpuZSAxYlxuIgogCSIyOlx0ZGVjbCAlMCIK
LQk6Ij1TIiAoX19yZXMpOiJhIiAoMCksImMiICgweGZmZmZmZmZmKSwiMCIgKGNzKSwiZyIg
KGN0KQotCToiYXgiLCJjeCIsImR4IiwiZGkiKTsKKwk6Ij0mUyIgKF9fcmVzKSwgIj0mYSIg
KF9fY2xvYmJlcjApLCAiPSZjIiAoX19jbG9iYmVyMSkKKwk6IjEiICgwKSwiMiIgKDB4ZmZm
ZmZmZmYpLCIwIiAoY3MpLCJnIiAoY3QpCisJOiJkeCIsImRpIik7CiByZXR1cm4gX19yZXMt
Y3M7CiB9CiAKQEAgLTI1MCw5ICsyNTQsMTAgQEAKIGV4dGVybiBpbmxpbmUgY2hhciAqIHN0
cnBicmsoY29uc3QgY2hhciAqIGNzLGNvbnN0IGNoYXIgKiBjdCkKIHsKIHJlZ2lzdGVyIGNo
YXIgKiBfX3JlczsKK2ludCBfX2Nsb2JiZXIwLF9fY2xvYmJlcjE7CiBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKIAkiY2xkXG5cdCIKLQkibW92bCAlNCwlJWVkaVxuXHQiCisJIm1vdmwgJTYs
JSVlZGlcblx0IgogCSJyZXBuZVxuXHQiCiAJInNjYXNiXG5cdCIKIAkibm90bCAlJWVjeFxu
XHQiCkBAIC0yNjEsNyArMjY2LDcgQEAKIAkiMTpcdGxvZHNiXG5cdCIKIAkidGVzdGIgJSVh
bCwlJWFsXG5cdCIKIAkiamUgMmZcblx0IgotCSJtb3ZsICU0LCUlZWRpXG5cdCIKKwkibW92
bCAlNiwlJWVkaVxuXHQiCiAJIm1vdmwgJSVlZHgsJSVlY3hcblx0IgogCSJyZXBuZVxuXHQi
CiAJInNjYXNiXG5cdCIKQEAgLTI3MCw4ICsyNzUsOSBAQAogCSJqbXAgM2ZcbiIKIAkiMjpc
dHhvcmwgJTAsJTBcbiIKIAkiMzoiCi0JOiI9UyIgKF9fcmVzKToiYSIgKDApLCJjIiAoMHhm
ZmZmZmZmZiksIjAiIChjcyksImciIChjdCkKLQk6ImF4IiwiY3giLCJkeCIsImRpIik7CisJ
OiI9JlMiIChfX3JlcyksICI9JmEiIChfX2Nsb2JiZXIwKSwgIj0mYyIgKF9fY2xvYmJlcjEp
CisJOiIxIiAoMCksIjIiICgweGZmZmZmZmZmKSwiMCIgKGNzKSwiZyIgKGN0KQorCToiZHgi
LCJkaSIpOwogcmV0dXJuIF9fcmVzOwogfQogCkBAIC0yNzksMTUgKzI4NSwxNiBAQAogZXh0
ZXJuIGlubGluZSBjaGFyICogc3Ryc3RyKGNvbnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICog
Y3QpCiB7CiByZWdpc3RlciBjaGFyICogX19yZXM7CitpbnQgX19jbG9iYmVyMCxfX2Nsb2Ji
ZXIxOwogX19hc21fXyBfX3ZvbGF0aWxlX18oCiAJImNsZFxuXHQiIFwKLQkibW92bCAlNCwl
JWVkaVxuXHQiCisJIm1vdmwgJTYsJSVlZGlcblx0IgogCSJyZXBuZVxuXHQiCiAJInNjYXNi
XG5cdCIKIAkibm90bCAlJWVjeFxuXHQiCiAJImRlY2wgJSVlY3hcblx0IgkvKiBOT1RFISBU
aGlzIGFsc28gc2V0cyBaIGlmIHNlYXJjaHN0cmluZz0nJyAqLwogCSJtb3ZsICUlZWN4LCUl
ZWR4XG4iCi0JIjE6XHRtb3ZsICU0LCUlZWRpXG5cdCIKKwkiMTpcdG1vdmwgJTYsJSVlZGlc
blx0IgogCSJtb3ZsICUlZXNpLCUlZWF4XG5cdCIKIAkibW92bCAlJWVkeCwlJWVjeFxuXHQi
CiAJInJlcGVcblx0IgpAQCAtMjk5LDggKzMwNiw5IEBACiAJImpuZSAxYlxuXHQiCiAJInhv
cmwgJSVlYXgsJSVlYXhcblx0IgogCSIyOiIKLQk6Ij1hIiAoX19yZXMpOiIwIiAoMCksImMi
ICgweGZmZmZmZmZmKSwiUyIgKGNzKSwiZyIgKGN0KQotCToiY3giLCJkeCIsImRpIiwic2ki
KTsKKwk6Ij1hIiAoX19yZXMpLCAiPSZjIiAoX19jbG9iYmVyMCksICI9JlMiIChfX2Nsb2Ji
ZXIxKQorCToiMCIgKDApLCIxIiAoMHhmZmZmZmZmZiksIjIiIChjcyksImciIChjdCkKKwk6
ImR4IiwiZGkiKTsKIHJldHVybiBfX3JlczsKIH0KIApAQCAtMzI4LDcgKzMzNiw3IEBACiAj
ZGVmaW5lIF9fSEFWRV9BUkNIX1NUUk5MRU4KIGV4dGVybiBpbmxpbmUgc2l6ZV90IHN0cm5s
ZW4oY29uc3QgY2hhciAqIHMsIHNpemVfdCBjb3VudCkKIHsKLXJlZ2lzdGVyIGludCBfX3Jl
czsKK3JlZ2lzdGVyIGludCBfX3JlcyxfX2Nsb2JiZXIwOwogX19hc21fXyBfX3ZvbGF0aWxl
X18oCiAJIm1vdmwgJTEsJTBcblx0IgogCSJqbXAgMmZcbiIKQEAgLTMzOSw5ICszNDcsOCBA
QAogCSJjbXBsICQtMSwlMlxuXHQiCiAJImpuZSAxYlxuIgogCSIzOlx0c3VibCAlMSwlMCIK
LQk6Ij1hIiAoX19yZXMpCi0JOiJjIiAocyksImQiIChjb3VudCkKLQk6ImR4Iik7CisJOiI9
YSIgKF9fcmVzKSwgIj0mZCIgKF9fY2xvYmJlcikKKwk6ImMiIChzKSwiMSIgKGNvdW50KSkK
IHJldHVybiBfX3JlczsKIH0KIC8qIGVuZCBvZiBhZGRpdGlvbmFsIHN0dWZmICovCkBAIC00
NjUsNiArNDcyLDcgQEAKIGV4dGVybiBpbmxpbmUgdm9pZCAqIF9fbWVtY3B5X2codm9pZCAq
IHRvLCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCiB7CiByZWdpc3RlciB2b2lkICp0
bXAgPSAodm9pZCAqKXRvOworaW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMSxfX2Nsb2JiZXIy
OwogX19hc21fXyBfX3ZvbGF0aWxlX18gKAogCSJjbGRcblx0IgogCSJzaHJsICQxLCUlZWN4
XG5cdCIKQEAgLTQ3NSw5ICs0ODMsOSBAQAogCSJtb3Zzd1xuIgogCSIyOlx0cmVwXG5cdCIK
IAkibW92c2wiCi0JOiAvKiBubyBvdXRwdXQgKi8KLQk6ImMiIChuKSwiRCIgKChsb25nKSB0
bXApLCJTIiAoKGxvbmcpIGZyb20pCi0JOiJjeCIsImRpIiwic2kiLCJtZW1vcnkiKTsKKwk6
Ij0mYyIgKF9fY2xvYmJlcjApLCI9JkQiIChfX2Nsb2JiZXIxKSwiPSZTIiAoX19jbG9iYmVy
MikKKwk6IjAiIChuKSwiMSIgKChsb25nKSB0bXApLCIyIiAoKGxvbmcpIGZyb20pCisJOiJt
ZW1vcnkiKTsKIHJldHVybiAodG8pOwogfQogCkBAIC00ODUsMzAgKzQ5MywzMSBAQAogI2Rl
ZmluZSBfX0hBVkVfQVJDSF9NRU1NT1ZFCiBleHRlcm4gaW5saW5lIHZvaWQgKiBtZW1tb3Zl
KHZvaWQgKiBkZXN0LGNvbnN0IHZvaWQgKiBzcmMsIHNpemVfdCBuKQogeworaW50IF9fY2xv
YmJlcjAsX19jbG9iYmVyMSxfX2Nsb2JiZXIyOwogcmVnaXN0ZXIgdm9pZCAqdG1wID0gKHZv
aWQgKilkZXN0OwogaWYgKGRlc3Q8c3JjKQogX19hc21fXyBfX3ZvbGF0aWxlX18gKAogCSJj
bGRcblx0IgogCSJyZXBcblx0IgogCSJtb3ZzYiIKLQk6IC8qIG5vIG91dHB1dCAqLwotCToi
YyIgKG4pLCJTIiAoc3JjKSwiRCIgKHRtcCkKLQk6ImN4Iiwic2kiLCJkaSIpOworCToiPSZj
IiAoX19jbG9iYmVyMCksIj0mRCIgKF9fY2xvYmJlcjEpLCI9JlMiIChfX2Nsb2JiZXIyKQor
CToiMCIgKG4pLCIyIiAoc3JjKSwiMSIgKHRtcCkKKwk6Im1lbW9yeSIpOwogZWxzZQogX19h
c21fXyBfX3ZvbGF0aWxlX18gKAogCSJzdGRcblx0IgogCSJyZXBcblx0IgogCSJtb3ZzYlxu
XHQiCiAJImNsZCIKLQk6IC8qIG5vIG91dHB1dCAqLwotCToiYyIgKG4pLCAiUyIgKG4tMSso
Y29uc3QgY2hhciAqKXNyYyksICJEIiAobi0xKyhjaGFyICopdG1wKQotCToiY3giLCJzaSIs
ImRpIiwibWVtb3J5Iik7CisJOiI9JmMiIChfX2Nsb2JiZXIwKSwiPSZEIiAoX19jbG9iYmVy
MSksIj0mUyIgKF9fY2xvYmJlcjIpCisJOiIwIiAobiksICIyIiAobi0xKyhjb25zdCBjaGFy
ICopc3JjKSwgIjEiIChuLTErKGNoYXIgKil0bXApCisJOiJtZW1vcnkiKTsKIHJldHVybiBk
ZXN0OwogfQogCiBleHRlcm4gaW5saW5lIGludCBtZW1jbXAoY29uc3Qgdm9pZCAqIGNzLGNv
bnN0IHZvaWQgKiBjdCxzaXplX3QgY291bnQpCiB7Ci1yZWdpc3RlciBpbnQgX19yZXM7City
ZWdpc3RlciBpbnQgX19yZXMsX19jbG9iYmVyMCxfX2Nsb2JiZXIxLF9fY2xvYmJlcjI7CiBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKIAkiY2xkXG5cdCIKIAkicmVwZVxuXHQiCkBAIC01MTcs
OCArNTI2LDkgQEAKIAkic2JibCAlMCwlMFxuXHQiCiAJIm9yYiAkMSwlYjBcbiIKIAkiMToi
Ci0JOiI9YWJkIiAoX19yZXMpOiIwIiAoMCksIlMiIChjcyksIkQiIChjdCksImMiIChjb3Vu
dCkKLQk6InNpIiwiZGkiLCJjeCIpOworCToiPWFiZCIgKF9fcmVzKSwgIj0mUyIgKF9fY2xv
YmJlcjApLCAiPSZEIiAoX19jbG9iYmVyMSksCisJICI9JmMiIChfX2Nsb2JiZXIyKQorCToi
MCIgKDApLCIxIiAoY3MpLCIyIiAoY3QpLCIzIiAoY291bnQpKTsKIHJldHVybiBfX3JlczsK
IH0KIApAQCAtNTI2LDYgKzUzNiw3IEBACiBleHRlcm4gaW5saW5lIHZvaWQgKiBtZW1jaHIo
Y29uc3Qgdm9pZCAqIGNzLGludCBjLHNpemVfdCBjb3VudCkKIHsKIHJlZ2lzdGVyIHZvaWQg
KiBfX3JlczsKK2ludCBfX2Nsb2JiZXIwOwogaWYgKCFjb3VudCkKIAlyZXR1cm4gTlVMTDsK
IF9fYXNtX18gX192b2xhdGlsZV9fKApAQCAtNTM1LDggKzU0Niw4IEBACiAJImplIDFmXG5c
dCIKIAkibW92bCAkMSwlMFxuIgogCSIxOlx0ZGVjbCAlMCIKLQk6Ij1EIiAoX19yZXMpOiJh
IiAoYyksIkQiIChjcyksImMiIChjb3VudCkKLQk6ImN4Iik7CisJOiI9RCIgKF9fcmVzKSwg
Ij0mYyIgKF9fY2xvYmJlcjApCisJOiJhIiAoYyksIjAiIChjcyksIjEiIChjb3VudCkpOwog
cmV0dXJuIF9fcmVzOwogfQogCkBAIC02NDQsNiArNjU1LDcgQEAKIGV4dGVybiBpbmxpbmUg
dm9pZCAqIF9fbWVtc2V0X2NnKHZvaWQgKiBzLCBjaGFyIGMsIHNpemVfdCBjb3VudCkKIHsK
IHJlZ2lzdGVyIHZvaWQgKnRtcCA9ICh2b2lkICopczsKK2ludCBfX2Nsb2JiZXIwLF9fY2xv
YmJlcjE7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCiAJInNocmwgJDEsJSVlY3hcblx0Igog
CSJyZXBcblx0IgpAQCAtNjUxLDE1ICs2NjMsMTYgQEAKIAkiam5jIDFmXG5cdCIKIAkibW92
YiAlJWFsLCglJWVkaSlcbiIKIAkiMToiCi0JOiAvKiBubyBvdXRwdXQgKi8KLQk6ImMiIChj
b3VudCksIkQiICh0bXApLCAiYSIgKDB4MDEwMVUgKiAodW5zaWduZWQgY2hhcikgYykKLQk6
ImN4IiwiZGkiLCJtZW1vcnkiKTsKKwk6Ij0mYyIgKF9fY2xvYmJlcjApLCAiPSZEIiAoX19j
bG9iYmVyMSkKKwk6IjAiIChjb3VudCksIjEiICh0bXApLCAiYSIgKDB4MDEwMVUgKiAodW5z
aWduZWQgY2hhcikgYykKKwk6Im1lbW9yeSIpOwogcmV0dXJuIHM7CiB9CiAKIGV4dGVybiBp
bmxpbmUgdm9pZCAqIF9fbWVtc2V0X2dnKHZvaWQgKiBzLGNoYXIgYyxzaXplX3QgY291bnQp
CiB7CiByZWdpc3RlciB2b2lkICp0bXAgPSAodm9pZCAqKXM7CitpbnQgX19jbG9iYmVyMCxf
X2Nsb2JiZXIxOwogX19hc21fXyBfX3ZvbGF0aWxlX18gKAogCSJtb3ZiICUlYWwsJSVhaFxu
XHQiCiAJInNocmwgJDEsJSVlY3hcblx0IgpAQCAtNjY4LDkgKzY4MSw5IEBACiAJImpuYyAx
ZlxuXHQiCiAJIm1vdmIgJSVhbCwoJSVlZGkpXG4iCiAJIjE6IgotCTogLyogbm8gb3V0cHV0
ICovCi0JOiJjIiAoY291bnQpLCJEIiAodG1wKSwgImEiIChjKQotCToiY3giLCJkaSIsIm1l
bW9yeSIpOworCToiPSZjIiAoX19jbG9iYmVyMCksICI9JkQiIChfX2Nsb2JiZXIxKQorCToi
MCIgKGNvdW50KSwiMSIgKHRtcCksICJhIiAoYykKKwk6Im1lbW9yeSIpOwogcmV0dXJuIHM7
CiB9CiAKZGlmZiAtcnUgbGludXhfb3JpZy9pbmNsdWRlL2FzbS1pMzg2L3N0cmluZy5oIG15
bGludXgvaW5jbHVkZS9hc20taTM4Ni9zdHJpbmcuaAotLS0gbGludXhfb3JpZy9pbmNsdWRl
L2FzbS1pMzg2L3N0cmluZy5oCU1vbiBTZXAgMjkgMTM6MTA6MDMgMTk5NworKysgbXlsaW51
eC9pbmNsdWRlL2FzbS1pMzg2L3N0cmluZy5oCVRodSBNYXIgMTIgMjM6MjA6MTggMTk5OApA
QCAtMzAsMjAgKzMwLDIzIEBACiAjZGVmaW5lIF9fSEFWRV9BUkNIX1NUUkNQWQogZXh0ZXJu
IGlubGluZSBjaGFyICogc3RyY3B5KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKnNyYykKIHsK
K2ludCBfX2Nsb2JiZXIwLF9fY2xvYmJlcjE7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygKIAki
Y2xkXG4iCiAJIjE6XHRsb2RzYlxuXHQiCiAJInN0b3NiXG5cdCIKIAkidGVzdGIgJSVhbCwl
JWFsXG5cdCIKIAkiam5lIDFiIgotCTogLyogbm8gb3V0cHV0ICovCi0JOiJTIiAoc3JjKSwi
RCIgKGRlc3QpOiJzaSIsImRpIiwiYXgiLCJtZW1vcnkiKTsKKwk6Ij0mUyIgKF9fY2xvYmJl
cjApLCAiPSZEIiAoX19jbG9iYmVyMSkgLyogZWFybHljbG9iYmVyICovCisJOiIwIiAoc3Jj
KSwiMSIgKGRlc3QpCisJOiJheCIsIm1lbW9yeSIpOwogcmV0dXJuIGRlc3Q7CiB9CiAKICNk
ZWZpbmUgX19IQVZFX0FSQ0hfU1RSTkNQWQogZXh0ZXJuIGlubGluZSBjaGFyICogc3RybmNw
eShjaGFyICogZGVzdCxjb25zdCBjaGFyICpzcmMsc2l6ZV90IGNvdW50KQogeworaW50IF9f
Y2xvYmJlcjAsX19jbG9iYmVyMSxfX2Nsb2JiZXIyOwogX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAJImNsZFxuIgogCSIxOlx0ZGVjbCAlMlxuXHQiCkBAIC01NSwxNCArNTgsMTYgQEAKIAki
cmVwXG5cdCIKIAkic3Rvc2JcbiIKIAkiMjoiCi0JOiAvKiBubyBvdXRwdXQgKi8KLQk6IlMi
IChzcmMpLCJEIiAoZGVzdCksImMiIChjb3VudCk6InNpIiwiZGkiLCJheCIsImN4IiwibWVt
b3J5Iik7CisJOiI9JlMiIChfX2Nsb2JiZXIwKSwgIj0mRCIgKF9fY2xvYmJlcjEpLCAiPSZj
IiAoX19jbG9iYmVyMikKKwk6IjAiIChzcmMpLCIxIiAoZGVzdCksIjIiIChjb3VudCkKKwk6
ImF4IiwibWVtb3J5Iik7CiByZXR1cm4gZGVzdDsKIH0KIAogI2RlZmluZSBfX0hBVkVfQVJD
SF9TVFJDQVQKIGV4dGVybiBpbmxpbmUgY2hhciAqIHN0cmNhdChjaGFyICogZGVzdCxjb25z
dCBjaGFyICogc3JjKQogeworaW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMSxfX2Nsb2JiZXIy
LF9fY2xvYmJlcjM7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygKIAkiY2xkXG5cdCIKIAkicmVw
bmVcblx0IgpAQCAtNzIsMjAgKzc3LDIzIEBACiAJInN0b3NiXG5cdCIKIAkidGVzdGIgJSVh
bCwlJWFsXG5cdCIKIAkiam5lIDFiIgotCTogLyogbm8gb3V0cHV0ICovCi0JOiJTIiAoc3Jj
KSwiRCIgKGRlc3QpLCJhIiAoMCksImMiICgweGZmZmZmZmZmKToic2kiLCJkaSIsImF4Iiwi
Y3giKTsKKwk6Ij0mUyIgKF9fY2xvYmJlcjApLCAiPSZEIiAoX19jbG9iYmVyMSksICI9JmEi
IChfX2Nsb2JiZXIyKSwKKwkgIj0mYyIgKF9fY2xvYmJlcjMpCisJOiIwIiAoc3JjKSwiMSIg
KGRlc3QpLCIyIiAoMCksIjMiICgweGZmZmZmZmZmKQorCToibWVtb3J5Iik7CiByZXR1cm4g
ZGVzdDsKIH0KIAogI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJOQ0FUCiBleHRlcm4gaW5saW5l
IGNoYXIgKiBzdHJuY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKiBzcmMsc2l6ZV90IGNv
dW50KQogeworaW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMSxfX2Nsb2JiZXIyLF9fY2xvYmJl
cjM7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygKIAkiY2xkXG5cdCIKIAkicmVwbmVcblx0Igog
CSJzY2FzYlxuXHQiCiAJImRlY2wgJTFcblx0IgotCSJtb3ZsICU0LCUzXG4iCisJIm1vdmwg
JTgsJTNcbiIKIAkiMTpcdGRlY2wgJTNcblx0IgogCSJqcyAyZlxuXHQiCiAJImxvZHNiXG5c
dCIKQEAgLTk0LDE2ICsxMDIsMTcgQEAKIAkiam5lIDFiXG4iCiAJIjI6XHR4b3JsICUyLCUy
XG5cdCIKIAkic3Rvc2IiCi0JOiAvKiBubyBvdXRwdXQgKi8KLQk6IlMiIChzcmMpLCJEIiAo
ZGVzdCksImEiICgwKSwiYyIgKDB4ZmZmZmZmZmYpLCJnIiAoY291bnQpCi0JOiJzaSIsImRp
IiwiYXgiLCJjeCIsIm1lbW9yeSIpOworCToiPSZTIiAoX19jbG9iYmVyMCksICI9JkQiIChf
X2Nsb2JiZXIxKSwgIj0mYSIgKF9fY2xvYmJlcjIpLAorCSAiPSZjIiAoX19jbG9iYmVyMykK
Kwk6IjAiIChzcmMpLCIxIiAoZGVzdCksIjIiICgwKSwiMyIgKDB4ZmZmZmZmZmYpLCJnIiAo
Y291bnQpCisJOiJtZW1vcnkiKTsKIHJldHVybiBkZXN0OwogfQogCiAjZGVmaW5lIF9fSEFW
RV9BUkNIX1NUUkNNUAogZXh0ZXJuIGlubGluZSBpbnQgc3RyY21wKGNvbnN0IGNoYXIgKiBj
cyxjb25zdCBjaGFyICogY3QpCiB7Ci1yZWdpc3RlciBpbnQgX19yZXM7CityZWdpc3RlciBp
bnQgX19yZXMsX19jbG9iYmVyMCxfX2Nsb2JiZXIxOwogX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAJImNsZFxuIgogCSIxOlx0bG9kc2Jcblx0IgpAQCAtMTE2LDcgKzEyNSw4IEBACiAJIjI6
XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIKIAkib3JiICQxLCUlZWF4XG4iCiAJIjM6IgotCToi
PWEiIChfX3Jlcyk6IlMiIChjcyksIkQiIChjdCk6InNpIiwiZGkiKTsKKwk6Ij1hIiAoX19y
ZXMpLCAiPSZTIiAoX19jbG9iYmVyMCksICI9JkQiIChfX2Nsb2JiZXIxKQorCToiMSIgKGNz
KSwiMiIgKGN0KSk7CiByZXR1cm4gX19yZXM7CiB9CiAKQEAgLTEyNCw2ICsxMzQsNyBAQAog
ZXh0ZXJuIGlubGluZSBpbnQgc3RybmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAq
IGN0LHNpemVfdCBjb3VudCkKIHsKIHJlZ2lzdGVyIGludCBfX3JlczsKK2ludCBfX2Nsb2Ji
ZXIwLF9fY2xvYmJlcjEsX19jbG9iYmVyMjsKIF9fYXNtX18gX192b2xhdGlsZV9fKAogCSJj
bGRcbiIKIAkiMTpcdGRlY2wgJTNcblx0IgpAQCAtMTM4LDcgKzE0OSw5IEBACiAJIjM6XHRz
YmJsICUlZWF4LCUlZWF4XG5cdCIKIAkib3JiICQxLCUlYWxcbiIKIAkiNDoiCi0JOiI9YSIg
KF9fcmVzKToiUyIgKGNzKSwiRCIgKGN0KSwiYyIgKGNvdW50KToic2kiLCJkaSIsImN4Iik7
CisJOiI9YSIgKF9fcmVzKSwgIj0mUyIgKF9fY2xvYmJlcjApLCAiPSZEIiAoX19jbG9iYmVy
MSksCisJICI9JmMiIChfX2Nsb2JiZXIyKQorCToiMSIgKGNzKSwiMiIgKGN0KSwiMyIgKGNv
dW50KSk7CiByZXR1cm4gX19yZXM7CiB9CiAKQEAgLTE0Niw2ICsxNTksNyBAQAogZXh0ZXJu
IGlubGluZSBjaGFyICogc3RyY2hyKGNvbnN0IGNoYXIgKiBzLCBpbnQgYykKIHsKIHJlZ2lz
dGVyIGNoYXIgKiBfX3JlczsKK2ludCBfX2Nsb2JiZXIwOwogX19hc21fXyBfX3ZvbGF0aWxl
X18oCiAJImNsZFxuXHQiCiAJIm1vdmIgJSVhbCwlJWFoXG4iCkBAIC0xNTcsNyArMTcxLDgg
QEAKIAkibW92bCAkMSwlMVxuIgogCSIyOlx0bW92bCAlMSwlMFxuXHQiCiAJImRlY2wgJTAi
Ci0JOiI9YSIgKF9fcmVzKToiUyIgKHMpLCIwIiAoYyk6InNpIik7CisJOiI9YSIgKF9fcmVz
KSwgIj0mUyIgKF9fY2xvYmJlcjApCisJOiIwIiAoYyksIjEiIChzKSk7CiByZXR1cm4gX19y
ZXM7CiB9CiAKQEAgLTE2NSw2ICsxODAsNyBAQAogZXh0ZXJuIGlubGluZSBjaGFyICogc3Ry
cmNocihjb25zdCBjaGFyICogcywgaW50IGMpCiB7CiByZWdpc3RlciBjaGFyICogX19yZXM7
CitpbnQgX19jbG9iYmVyMCxfX2Nsb2JiZXIxOwogX19hc21fXyBfX3ZvbGF0aWxlX18oCiAJ
ImNsZFxuXHQiCiAJIm1vdmIgJSVhbCwlJWFoXG4iCkBAIC0xNzQsNyArMTkwLDggQEAKIAki
bGVhbCAtMSglJWVzaSksJTBcbiIKIAkiMjpcdHRlc3RiICUlYWwsJSVhbFxuXHQiCiAJImpu
ZSAxYiIKLQk6Ij1kIiAoX19yZXMpOiIwIiAoMCksIlMiIChzKSwiYSIgKGMpOiJheCIsInNp
Iik7CisJOiI9ZCIgKF9fcmVzKSwgIj0mUyIgKF9fY2xvYmJlcjApLCAiPSZhIiAoX19jbG9i
YmVyMSkKKwk6IjAiICgwKSwiMSIgKHMpLCIyIiAoYykpOwogcmV0dXJuIF9fcmVzOwogfQog
CkBAIC0xODIsOSArMTk5LDEwIEBACiBleHRlcm4gaW5saW5lIHNpemVfdCBzdHJzcG4oY29u
c3QgY2hhciAqIGNzLCBjb25zdCBjaGFyICogY3QpCiB7CiByZWdpc3RlciBjaGFyICogX19y
ZXM7CitpbnQgX19jbG9iYmVyMCxfX2Nsb2JiZXIxOwogX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAJImNsZFxuXHQiCi0JIm1vdmwgJTQsJSVlZGlcblx0IgorCSJtb3ZsICU2LCUlZWRpXG5c
dCIKIAkicmVwbmVcblx0IgogCSJzY2FzYlxuXHQiCiAJIm5vdGwgJSVlY3hcblx0IgpAQCAt
MTkzLDE0ICsyMTEsMTUgQEAKIAkiMTpcdGxvZHNiXG5cdCIKIAkidGVzdGIgJSVhbCwlJWFs
XG5cdCIKIAkiamUgMmZcblx0IgotCSJtb3ZsICU0LCUlZWRpXG5cdCIKKwkibW92bCAlNiwl
JWVkaVxuXHQiCiAJIm1vdmwgJSVlZHgsJSVlY3hcblx0IgogCSJyZXBuZVxuXHQiCiAJInNj
YXNiXG5cdCIKIAkiamUgMWJcbiIKIAkiMjpcdGRlY2wgJTAiCi0JOiI9UyIgKF9fcmVzKToi
YSIgKDApLCJjIiAoMHhmZmZmZmZmZiksIjAiIChjcyksImciIChjdCkKLQk6ImF4IiwiY3gi
LCJkeCIsImRpIik7CisJOiI9UyIgKF9fcmVzKSwiPSZhIiAoX19jbG9iYmVyMCksICI9JmMi
IChfX2Nsb2JiZXIxKQorCToiMSIgKDApLCIyIiAoMHhmZmZmZmZmZiksIjAiIChjcyksImci
IChjdCkKKwk6ImR4IiwiZGkiKTsKIHJldHVybiBfX3Jlcy1jczsKIH0KIApAQCAtMjA4LDkg
KzIyNywxMCBAQAogZXh0ZXJuIGlubGluZSBzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICog
Y3MsIGNvbnN0IGNoYXIgKiBjdCkKIHsKIHJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKK2ludCBf
X2Nsb2JiZXIwLF9fY2xvYmJlcjE7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygKIAkiY2xkXG5c
dCIKLQkibW92bCAlNCwlJWVkaVxuXHQiCisJIm1vdmwgJTYsJSVlZGlcblx0IgogCSJyZXBu
ZVxuXHQiCiAJInNjYXNiXG5cdCIKIAkibm90bCAlJWVjeFxuXHQiCkBAIC0yMTksMTQgKzIz
OSwxNSBAQAogCSIxOlx0bG9kc2Jcblx0IgogCSJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogCSJq
ZSAyZlxuXHQiCi0JIm1vdmwgJTQsJSVlZGlcblx0IgorCSJtb3ZsICU2LCUlZWRpXG5cdCIK
IAkibW92bCAlJWVkeCwlJWVjeFxuXHQiCiAJInJlcG5lXG5cdCIKIAkic2Nhc2Jcblx0Igog
CSJqbmUgMWJcbiIKIAkiMjpcdGRlY2wgJTAiCi0JOiI9UyIgKF9fcmVzKToiYSIgKDApLCJj
IiAoMHhmZmZmZmZmZiksIjAiIChjcyksImciIChjdCkKLQk6ImF4IiwiY3giLCJkeCIsImRp
Iik7CisJOiI9UyIgKF9fcmVzKSwgIj0mYSIgKF9fY2xvYmJlcjApLCAiPSZjIiAoX19jbG9i
YmVyMSkKKwk6IjEiICgwKSwiMiIgKDB4ZmZmZmZmZmYpLCIwIiAoY3MpLCJnIiAoY3QpCisJ
OiJkeCIsImRpIik7CiByZXR1cm4gX19yZXMtY3M7CiB9CiAKQEAgLTIzNCw5ICsyNTUsMTAg
QEAKIGV4dGVybiBpbmxpbmUgY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqIGNzLGNvbnN0
IGNoYXIgKiBjdCkKIHsKIHJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKK2ludCBfX2Nsb2JiZXIw
LF9fY2xvYmJlcjE7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygKIAkiY2xkXG5cdCIKLQkibW92
bCAlNCwlJWVkaVxuXHQiCisJIm1vdmwgJTYsJSVlZGlcblx0IgogCSJyZXBuZVxuXHQiCiAJ
InNjYXNiXG5cdCIKIAkibm90bCAlJWVjeFxuXHQiCkBAIC0yNDUsNyArMjY3LDcgQEAKIAki
MTpcdGxvZHNiXG5cdCIKIAkidGVzdGIgJSVhbCwlJWFsXG5cdCIKIAkiamUgMmZcblx0Igot
CSJtb3ZsICU0LCUlZWRpXG5cdCIKKwkibW92bCAlNiwlJWVkaVxuXHQiCiAJIm1vdmwgJSVl
ZHgsJSVlY3hcblx0IgogCSJyZXBuZVxuXHQiCiAJInNjYXNiXG5cdCIKQEAgLTI1NCw4ICsy
NzYsOSBAQAogCSJqbXAgM2ZcbiIKIAkiMjpcdHhvcmwgJTAsJTBcbiIKIAkiMzoiCi0JOiI9
UyIgKF9fcmVzKToiYSIgKDApLCJjIiAoMHhmZmZmZmZmZiksIjAiIChjcyksImciIChjdCkK
LQk6ImF4IiwiY3giLCJkeCIsImRpIik7CisJOiI9UyIgKF9fcmVzKSwgIj0mYSIgKF9fY2xv
YmJlcjApLCAiPSZjIiAoX19jbG9iYmVyMSkKKwk6IjEiICgwKSwiMiIgKDB4ZmZmZmZmZmYp
LCIwIiAoY3MpLCJnIiAoY3QpCisJOiJkeCIsImRpIik7CiByZXR1cm4gX19yZXM7CiB9CiAK
QEAgLTI2MywxNSArMjg2LDE2IEBACiBleHRlcm4gaW5saW5lIGNoYXIgKiBzdHJzdHIoY29u
c3QgY2hhciAqIGNzLGNvbnN0IGNoYXIgKiBjdCkKIHsKIHJlZ2lzdGVyIGNoYXIgKiBfX3Jl
czsKK2ludCBfX2Nsb2JiZXIwLF9fY2xvYmJlcjE7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygK
IAkiY2xkXG5cdCIgXAotCSJtb3ZsICU0LCUlZWRpXG5cdCIKKwkibW92bCAlNiwlJWVkaVxu
XHQiCiAJInJlcG5lXG5cdCIKIAkic2Nhc2Jcblx0IgogCSJub3RsICUlZWN4XG5cdCIKIAki
ZGVjbCAlJWVjeFxuXHQiCS8qIE5PVEUhIFRoaXMgYWxzbyBzZXRzIFogaWYgc2VhcmNoc3Ry
aW5nPScnICovCiAJIm1vdmwgJSVlY3gsJSVlZHhcbiIKLQkiMTpcdG1vdmwgJTQsJSVlZGlc
blx0IgorCSIxOlx0bW92bCAlNiwlJWVkaVxuXHQiCiAJIm1vdmwgJSVlc2ksJSVlYXhcblx0
IgogCSJtb3ZsICUlZWR4LCUlZWN4XG5cdCIKIAkicmVwZVxuXHQiCkBAIC0yODMsMjIgKzMw
NywyNCBAQAogCSJqbmUgMWJcblx0IgogCSJ4b3JsICUlZWF4LCUlZWF4XG5cdCIKIAkiMjoi
Ci0JOiI9YSIgKF9fcmVzKToiMCIgKDApLCJjIiAoMHhmZmZmZmZmZiksIlMiIChjcyksImci
IChjdCkKLQk6ImN4IiwiZHgiLCJkaSIsInNpIik7CisJOiI9YSIgKF9fcmVzKSwgIj0mYyIg
KF9fY2xvYmJlcjApLCAiPSZTIiAoX19jbG9iYmVyMSkKKwk6IjAiICgwKSwiMSIgKDB4ZmZm
ZmZmZmYpLCIyIiAoY3MpLCJnIiAoY3QpCisJOiJkeCIsImRpIik7CiByZXR1cm4gX19yZXM7
CiB9CiAKICNkZWZpbmUgX19IQVZFX0FSQ0hfU1RSTEVOCiBleHRlcm4gaW5saW5lIHNpemVf
dCBzdHJsZW4oY29uc3QgY2hhciAqIHMpCiB7Ci1yZWdpc3RlciBpbnQgX19yZXM7CityZWdp
c3RlciBpbnQgX19yZXMsX19jbG9iYmVyMDsKIF9fYXNtX18gX192b2xhdGlsZV9fKAogCSJj
bGRcblx0IgogCSJyZXBuZVxuXHQiCiAJInNjYXNiXG5cdCIKIAkibm90bCAlMFxuXHQiCiAJ
ImRlY2wgJTAiCi0JOiI9YyIgKF9fcmVzKToiRCIgKHMpLCJhIiAoMCksIjAiICgweGZmZmZm
ZmZmKToiZGkiKTsKKwk6Ij1jIiAoX19yZXMpLCAiPSZEIiAoX19jbG9iYmVyMCkKKwk6IjEi
IChzKSwiYSIgKDApLCIwIiAoMHhmZmZmZmZmZikpOwogcmV0dXJuIF9fcmVzOwogfQogCkBA
IC0zNjUsMTkgKzM5MSwyMCBAQAogCiBleHRlcm4gaW5saW5lIHZvaWQgKiBfX21lbWNweSh2
b2lkICogdG8sIGNvbnN0IHZvaWQgKiBmcm9tLCBzaXplX3QgbikKIHsKK2ludCBfX2Nsb2Ji
ZXIwLF9fY2xvYmJlcjEsX19jbG9iYmVyMjsKIF9fYXNtX18gX192b2xhdGlsZV9fKAogCSJj
bGRcblx0IgogCSJyZXAgOyBtb3ZzbFxuXHQiCi0JInRlc3RiICQyLCViMVxuXHQiCisJInRl
c3RiICQyLCViNFxuXHQiCiAJImplIDFmXG5cdCIKIAkibW92c3dcbiIKLQkiMTpcdHRlc3Ri
ICQxLCViMVxuXHQiCisJIjE6XHR0ZXN0YiAkMSwlYjRcblx0IgogCSJqZSAyZlxuXHQiCiAJ
Im1vdnNiXG4iCiAJIjI6IgotCTogLyogbm8gb3V0cHV0ICovCi0JOiJjIiAobi80KSwgInEi
IChuKSwiRCIgKChsb25nKSB0byksIlMiICgobG9uZykgZnJvbSkKLQk6ICJjeCIsImRpIiwi
c2kiLCJtZW1vcnkiKTsKKwk6Ij0mYyIgKF9fY2xvYmJlcjApLCAiPSZEIiAoX19jbG9iYmVy
MSksICI9JlMiIChfX2Nsb2JiZXIyKQorCToiMCIgKG4vNCksICJxIiAobiksIjEiICgobG9u
ZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pCisJOiJtZW1vcnkiKTsKIHJldHVybiAodG8pOwog
fQogCkBAIC00MzQsMTEgKzQ2MSwxMSBAQAogX19hc21fXygiY2xkXG5cdCIgXAogCSJyZXAg
OyBtb3ZzbCIgXAogCXggXAotCTogLyogbm8gb3V0cHV0cyAqLyBcCi0JOiAiYyIgKG4vNCks
IkQiICgobG9uZykgdG8pLCJTIiAoKGxvbmcpIGZyb20pIFwKLQk6ICJjeCIsImRpIiwic2ki
LCJtZW1vcnkiKTsKKwk6ICI9JmMiIChfX2Nsb2JiZXIwKSwgIj0mRCIgKF9fY2xvYmJlcjEp
LCAiPSZTIiAoX19jbG9iYmVyMikgXAorCTogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwi
MiIgKChsb25nKSBmcm9tKSBcCisJOiAibWVtb3J5Iik7CiAKLQlzd2l0Y2ggKG4gJSA0KSB7
CisJc3dpdGNoIChuICUgNCkgeyAgaW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMSxfX2Nsb2Ji
ZXIyOwogCQljYXNlIDA6IENPTU1PTigiIik7IHJldHVybiB0bzsKIAkJY2FzZSAxOiBDT01N
T04oIlxuXHRtb3ZzYiIpOyByZXR1cm4gdG87CiAJCWNhc2UgMjogQ09NTU9OKCJcblx0bW92
c3ciKTsgcmV0dXJuIHRvOwpAQCAtNDU1LDI2ICs0ODIsMjYgQEAKIAogI2RlZmluZSBfX0hB
VkVfQVJDSF9NRU1NT1ZFCiBleHRlcm4gaW5saW5lIHZvaWQgKiBtZW1tb3ZlKHZvaWQgKiBk
ZXN0LGNvbnN0IHZvaWQgKiBzcmMsIHNpemVfdCBuKQoteworeyAgaW50IF9fY2xvYmJlcjAs
X19jbG9iYmVyMSxfX2Nsb2JiZXIyOwogaWYgKGRlc3Q8c3JjKQogX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAJImNsZFxuXHQiCiAJInJlcFxuXHQiCiAJIm1vdnNiIgotCTogLyogbm8gb3V0
cHV0ICovCi0JOiJjIiAobiksIlMiIChzcmMpLCJEIiAoZGVzdCkKLQk6ImN4Iiwic2kiLCJk
aSIpOworCToiPSZjIiAoX19jbG9iYmVyMCksICI9JlMiIChfX2Nsb2JiZXIxKSwgIj0mRCIg
KF9fY2xvYmJlcjIpCisJOiIwIiAobiksIjEiIChzcmMpLCIyIiAoZGVzdCkgCisJOiJtZW1v
cnkiKTsKIGVsc2UKIF9fYXNtX18gX192b2xhdGlsZV9fKAogCSJzdGRcblx0IgogCSJyZXBc
blx0IgogCSJtb3ZzYlxuXHQiCiAJImNsZCIKLQk6IC8qIG5vIG91dHB1dCAqLwotCToiYyIg
KG4pLAotCSAiUyIgKG4tMSsoY29uc3QgY2hhciAqKXNyYyksCi0JICJEIiAobi0xKyhjaGFy
ICopZGVzdCkKLQk6ImN4Iiwic2kiLCJkaSIsIm1lbW9yeSIpOworCToiPSZjIiAoX19jbG9i
YmVyMCksICI9JlMiIChfX2Nsb2JiZXIxKSwgIj0mRCIgKF9fY2xvYmJlcjIpCisJOiIwIiAo
biksCisJICIxIiAobi0xKyhjb25zdCBjaGFyICopc3JjKSwKKwkgIjIiIChuLTErKGNoYXIg
KilkZXN0KQorCToibWVtb3J5Iik7CiByZXR1cm4gZGVzdDsKIH0KIApAQCAtNDg0LDYgKzUx
MSw3IEBACiBleHRlcm4gaW5saW5lIHZvaWQgKiBtZW1jaHIoY29uc3Qgdm9pZCAqIGNzLGlu
dCBjLHNpemVfdCBjb3VudCkKIHsKIHJlZ2lzdGVyIHZvaWQgKiBfX3JlczsKK2ludCBfX2Ns
b2JiZXIwOwogaWYgKCFjb3VudCkKIAlyZXR1cm4gTlVMTDsKIF9fYXNtX18gX192b2xhdGls
ZV9fKApAQCAtNDkzLDIwICs1MjEsMjEgQEAKIAkiamUgMWZcblx0IgogCSJtb3ZsICQxLCUw
XG4iCiAJIjE6XHRkZWNsICUwIgotCToiPUQiIChfX3Jlcyk6ImEiIChjKSwiRCIgKGNzKSwi
YyIgKGNvdW50KQotCToiY3giKTsKKwk6Ij1EIiAoX19yZXMpLCAiPSZjIiAoX19jbG9iYmVy
MCkKKwk6ImEiIChjKSwiMCIgKGNzKSwiMSIgKGNvdW50KSk7CiByZXR1cm4gX19yZXM7CiB9
CiAKIGV4dGVybiBpbmxpbmUgdm9pZCAqIF9fbWVtc2V0X2dlbmVyaWModm9pZCAqIHMsIGNo
YXIgYyxzaXplX3QgY291bnQpCi17Cit7IAoraW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMTsK
IF9fYXNtX18gX192b2xhdGlsZV9fKAogCSJjbGRcblx0IgogCSJyZXBcblx0IgogCSJzdG9z
YiIKLQk6IC8qIG5vIG91dHB1dCAqLwotCToiYSIgKGMpLCJEIiAocyksImMiIChjb3VudCkK
LQk6ImN4IiwiZGkiLCJtZW1vcnkiKTsKKwk6Ij0mYyIgKF9fY2xvYmJlcjApLCAiPSZEIiAo
X19jbG9iYmVyMSkKKwk6ImEiIChjKSwiMSIgKHMpLCIwIiAoY291bnQpCisJOiJtZW1vcnki
KTsKIHJldHVybiBzOwogfQogCkBAIC01MjAsMTkgKzU0OSwyMCBAQAogICovCiBleHRlcm4g
aW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X2NfbWVtc2V0KHZvaWQgKiBzLCB1bnNpZ25lZCBs
b25nIGMsIHNpemVfdCBjb3VudCkKIHsKK2ludCBfX2Nsb2JiZXIwLF9fY2xvYmJlcjE7CiBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKIAkiY2xkXG5cdCIKIAkicmVwIDsgc3Rvc2xcblx0Igot
CSJ0ZXN0YiAkMiwlYjFcblx0IgorCSJ0ZXN0YiAkMiwlYjNcblx0IgogCSJqZSAxZlxuXHQi
CiAJInN0b3N3XG4iCi0JIjE6XHR0ZXN0YiAkMSwlYjFcblx0IgorCSIxOlx0dGVzdGIgJDEs
JWIzXG5cdCIKIAkiamUgMmZcblx0IgogCSJzdG9zYlxuIgogCSIyOiIKLQk6IC8qIG5vIG91
dHB1dCAqLwotCToiYSIgKGMpLCAicSIgKGNvdW50KSwgImMiIChjb3VudC80KSwgIkQiICgo
bG9uZykgcykKLQk6ImN4IiwiZGkiLCJtZW1vcnkiKTsKKwk6Ij0mYyIgKF9fY2xvYmJlcjAp
LCAiPSZEIiAoX19jbG9iYmVyMSkKKwk6ImEiIChjKSwgInEiIChjb3VudCksICIwIiAoY291
bnQvNCksICIxIiAoKGxvbmcpIHMpCisJOiJtZW1vcnkiKTsKIHJldHVybiAocyk7CQogfQog
CkBAIC01NDAsMjAgKzU3MCwxOSBAQAogI2RlZmluZSBfX0hBVkVfQVJDSF9TVFJOTEVOCiBl
eHRlcm4gaW5saW5lIHNpemVfdCBzdHJubGVuKGNvbnN0IGNoYXIgKiBzLCBzaXplX3QgY291
bnQpCiB7Ci1yZWdpc3RlciBpbnQgX19yZXM7CityZWdpc3RlciBpbnQgX19yZXMsX19jbG9i
YmVyMDsKIF9fYXNtX18gX192b2xhdGlsZV9fKAotCSJtb3ZsICUxLCUwXG5cdCIKKwkibW92
bCAlMiwlMFxuXHQiCiAJImptcCAyZlxuIgogCSIxOlx0Y21wYiAkMCwoJTApXG5cdCIKIAki
amUgM2Zcblx0IgogCSJpbmNsICUwXG4iCi0JIjI6XHRkZWNsICUyXG5cdCIKLQkiY21wbCAk
LTEsJTJcblx0IgorCSIyOlx0ZGVjbCAlMVxuXHQiCisJImNtcGwgJC0xLCUxXG5cdCIKIAki
am5lIDFiXG4iCi0JIjM6XHRzdWJsICUxLCUwIgotCToiPWEiIChfX3JlcykKLQk6ImMiIChz
KSwiZCIgKGNvdW50KQotCToiZHgiKTsKKwkiMzpcdHN1YmwgJTIsJTAiCisJOiI9YSIgKF9f
cmVzKSwgIj0mZCIgKF9fY2xvYmJlcjApCisJOiJjIiAocyksIjEiIChjb3VudCkpOwogcmV0
dXJuIF9fcmVzOwogfQogLyogZW5kIG9mIGFkZGl0aW9uYWwgc3R1ZmYgKi8KQEAgLTU4NSwx
MSArNjE0LDEyIEBACiBfX2FzbV9fKCJjbGRcblx0IiBcCiAJInJlcCA7IHN0b3NsIiBcCiAJ
eCBcCi0JOiAvKiBubyBvdXRwdXRzICovIFwKLQk6ICJhIiAocGF0dGVybiksImMiIChjb3Vu
dC80KSwiRCIgKChsb25nKSBzKSBcCi0JOiAiY3giLCJkaSIsIm1lbW9yeSIpCisJOiAiPSZj
IiAoX19jbG9iYmVyMCksICI9JkQiIChfX2Nsb2JiZXIxKSBcCisJOiAiYSIgKHBhdHRlcm4p
LCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgXAorCTogIm1lbW9yeSIpCiAKIAlzd2l0
Y2ggKGNvdW50ICUgNCkgeworCQlpbnQgX19jbG9iYmVyMCxfX2Nsb2JiZXIxOwogCQljYXNl
IDA6IENPTU1PTigiIik7IHJldHVybiBzOwogCQljYXNlIDE6IENPTU1PTigiXG5cdHN0b3Ni
Iik7IHJldHVybiBzOwogCQljYXNlIDI6IENPTU1PTigiXG5cdHN0b3N3Iik7IHJldHVybiBz
OwpAQCAtNjI3LDcgKzY1Nyw3IEBACiAJCWpueiAxZgogCQlkZWMgJSVlZGkKIDE6CQkiCi0J
CTogIj1EIiAoYWRkciksICI9YyIgKHNpemUpCisJCTogIj1EIiAoYWRkciksICI9YyIgKHNp
emUpIC8qIHdoeSB0aGlzID8/PyAqLwogCQk6ICIwIiAoYWRkciksICIxIiAoc2l6ZSksICJh
IiAoYykpOwogCXJldHVybiBhZGRyOwogfQpkaWZmIC1ydSBsaW51eF9vcmlnL2luY2x1ZGUv
YXNtLWkzODYvc3lzdGVtLmggbXlsaW51eC9pbmNsdWRlL2FzbS1pMzg2L3N5c3RlbS5oCi0t
LSBsaW51eF9vcmlnL2luY2x1ZGUvYXNtLWkzODYvc3lzdGVtLmgJV2VkIEZlYiAxMSAxNzox
OTozMyAxOTk4CisrKyBteWxpbnV4L2luY2x1ZGUvYXNtLWkzODYvc3lzdGVtLmgJRnJpIE1h
ciAxMyAwMDowMDozOCAxOTk4CkBAIC0xMTQsMjkgKzExNCwzMSBAQAogI2VuZGlmCiAKICNk
ZWZpbmUgX3NldF9iYXNlKGFkZHIsYmFzZSkgXAotX19hc21fXygibW92dyAlJWR4LCUwXG5c
dCIgXAorKHsgIGludCBfX2Nsb2JiZXIwOyBcCitfX2FzbV9fKCJtb3Z3ICUlZHgsJTFcblx0
IiBcCiAJInJvcmwgJDE2LCUlZWR4XG5cdCIgXAotCSJtb3ZiICUlZGwsJTFcblx0IiBcCi0J
Im1vdmIgJSVkaCwlMiIgXAotCTogLyogbm8gb3V0cHV0ICovIFwKKwkibW92YiAlJWRsLCUy
XG5cdCIgXAorCSJtb3ZiICUlZGgsJTMiIFwKKwk6Ij0mZCIgKF9fY2xvYmJlcjApIFwKIAk6
Im0iICgqKChhZGRyKSsyKSksIFwKIAkgIm0iICgqKChhZGRyKSs0KSksIFwKIAkgIm0iICgq
KChhZGRyKSs3KSksIFwKLQkgImQiIChiYXNlKSBcCi0JOiJkeCIpCisJICIwIiAoYmFzZSkp
OyBcCit9KQogCiAjZGVmaW5lIF9zZXRfbGltaXQoYWRkcixsaW1pdCkgXAotX19hc21fXygi
bW92dyAlJWR4LCUwXG5cdCIgXAorKHsgIGludCBfX2Nsb2JiZXIwOyBcCitfX2FzbV9fKCJt
b3Z3ICUlZHgsJTFcblx0IiBcCiAJInJvcmwgJDE2LCUlZWR4XG5cdCIgXAotCSJtb3ZiICUx
LCUlZGhcblx0IiBcCisJIm1vdmIgJTIsJSVkaFxuXHQiIFwKIAkiYW5kYiAkMHhmMCwlJWRo
XG5cdCIgXAogCSJvcmIgJSVkaCwlJWRsXG5cdCIgXAotCSJtb3ZiICUlZGwsJTEiIFwKLQk6
IC8qIG5vIG91dHB1dCAqLyBcCisJIm1vdmIgJSVkbCwlMiIgXAorCToiPSZkIiAoX19jbG9i
YmVyMCkgXAogCToibSIgKCooYWRkcikpLCBcCiAJICJtIiAoKigoYWRkcikrNikpLCBcCi0J
ICJkIiAobGltaXQpIFwKLQk6ImR4IikKKwkgIjAiIChsaW1pdCkpOyBcCit9KQogCiAjZGVm
aW5lIHNldF9iYXNlKGxkdCxiYXNlKSBfc2V0X2Jhc2UoICgoY2hhciAqKSYobGR0KSkgLCBi
YXNlICkKICNkZWZpbmUgc2V0X2xpbWl0KGxkdCxsaW1pdCkgX3NldF9saW1pdCggKChjaGFy
ICopJihsZHQpKSAsIChsaW1pdC0xKT4+MTIgKQpAQCAtMjQ3LDE1ICsyNDksMTggQEAKICNl
bmRpZgogCiAjZGVmaW5lIF9zZXRfZ2F0ZShnYXRlX2FkZHIsdHlwZSxkcGwsYWRkcikgXAor
KHsgXAoraW50IF9fY2xvYmJlcjAsX19jbG9iYmVyMTsgXAogX19hc21fXyBfX3ZvbGF0aWxl
X18gKCJtb3Z3ICUlZHgsJSVheFxuXHQiIFwKLQkibW92dyAlMiwlJWR4XG5cdCIgXAorCSJt
b3Z3ICU0LCUlZHhcblx0IiBcCiAJIm1vdmwgJSVlYXgsJTBcblx0IiBcCiAJIm1vdmwgJSVl
ZHgsJTEiIFwKIAk6Ij1tIiAoKigobG9uZyAqKSAoZ2F0ZV9hZGRyKSkpLCBcCi0JICI9bSIg
KCooMSsobG9uZyAqKSAoZ2F0ZV9hZGRyKSkpIFwKKwkgIj1tIiAoKigxKyhsb25nICopIChn
YXRlX2FkZHIpKSksIFwKKwkgIj0mYSIgKF9fY2xvYmJlcjApLCAiPSZkIiAoX19jbG9iYmVy
MSkgXAogCToiaSIgKChzaG9ydCkgKDB4ODAwMCsoZHBsPDwxMykrKHR5cGU8PDgpKSksIFwK
LQkgImQiICgoY2hhciAqKSAoYWRkcikpLCJhIiAoX19LRVJORUxfQ1MgPDwgMTYpIFwKLQk6
ImF4IiwiZHgiKQorCSAiMyIgKChjaGFyICopIChhZGRyKSksIjIiIChfX0tFUk5FTF9DUyA8
PCAxNikpOyBcCit9KQogCiAjZGVmaW5lIHNldF9pbnRyX2dhdGUobixhZGRyKSBcCiAJX3Nl
dF9nYXRlKGlkdCsobiksMTQsMCxhZGRyKQpkaWZmIC1ydSBsaW51eF9vcmlnL2luY2x1ZGUv
YXNtLWkzODYvdWFjY2Vzcy5oIG15bGludXgvaW5jbHVkZS9hc20taTM4Ni91YWNjZXNzLmgK
LS0tIGxpbnV4X29yaWcvaW5jbHVkZS9hc20taTM4Ni91YWNjZXNzLmgJV2VkIEZlYiAxMSAx
NzoxODoxMCAxOTk4CisrKyBteWxpbnV4L2luY2x1ZGUvYXNtLWkzODYvdWFjY2Vzcy5oCUZy
aSBNYXIgMTMgMDk6MzA6MjIgMTk5OApAQCAtMjQ5LDEzICsyNDksMTQgQEAKIAogLyogR2Vu
ZXJpYyBhcmJpdHJhcnkgc2l6ZWQgY29weS4gICovCiAjZGVmaW5lIF9fY29weV91c2VyKHRv
LGZyb20sc2l6ZSkJCQkJCVwKKyh7CWludCBfX2Nsb2JiZXIwLF9fY2xvYmJlcjE7CQkJCQlc
CiAJX19hc21fXyBfX3ZvbGF0aWxlX18oCQkJCQkJXAogCQkiMDoJcmVwOyBtb3ZzbFxuIgkJ
CQkJXAotCQkiCW1vdmwgJTEsJTBcbiIJCQkJCVwKKwkJIgltb3ZsICUzLCUwXG4iCQkJCQlc
CiAJCSIxOglyZXA7IG1vdnNiXG4iCQkJCQlcCiAJCSIyOlxuIgkJCQkJCQlcCiAJCSIuc2Vj
dGlvbiAuZml4dXAsXCJheFwiXG4iCQkJCVwKLQkJIjM6CWxlYSAwKCUxLCUwLDQpLCUwXG4i
CQkJCVwKKwkJIjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4iCQkJCVwKIAkJIglqbXAgMmJcbiIJ
CQkJCVwKIAkJIi5wcmV2aW91c1xuIgkJCQkJCVwKIAkJIi5zZWN0aW9uIF9fZXhfdGFibGUs
XCJhXCJcbiIJCQkJXApAQCAtMjYzLDkgKzI2NCwxMCBAQAogCQkiCS5sb25nIDBiLDNiXG4i
CQkJCQlcCiAJCSIJLmxvbmcgMWIsMmJcbiIJCQkJCVwKIAkJIi5wcmV2aW91cyIJCQkJCQlc
Ci0JCTogIj0mYyIoc2l6ZSkJCQkJCQlcCi0JCTogInIiKHNpemUgJiAzKSwgIjAiKHNpemUg
LyA0KSwgIkQiKHRvKSwgIlMiKGZyb20pCVwKLQkJOiAiZGkiLCAic2kiLCAibWVtb3J5IikK
KwkJOiAiPSZjIihzaXplKSwgIj0mRCIgKF9fY2xvYmJlcjApLCAiPSZTIiAoX19jbG9iYmVy
MSkJXAorCQk6ICJyIihzaXplICYgMyksICIwIihzaXplIC8gNCksICIxIih0byksICIyIihm
cm9tKQlcCisJCTogIm1lbW9yeSIpOwkJCQkJCVwKK30pCiAKIC8qIFdlIGxldCB0aGUgX18g
dmVyc2lvbnMgb2YgY29weV9mcm9tL3RvX3VzZXIgaW5saW5lLCBiZWNhdXNlIHRoZXkncmUg
b2Z0ZW4KICAqIHVzZWQgaW4gZmFzdCBwYXRocyBhbmQgaGF2ZSBvbmx5IGEgc21hbGwgc3Bh
Y2Ugb3ZlcmhlYWQuCkBAIC0yODcsNyArMjg5LDcgQEAKIAogLyogT3B0aW1pemUganVzdCBh
IGxpdHRsZSBiaXQgd2hlbiB3ZSBrbm93IHRoZSBzaXplIG9mIHRoZSBtb3ZlLiAqLwogI2Rl
ZmluZSBfX2NvbnN0YW50X2NvcHlfdXNlcih0bywgZnJvbSwgc2l6ZSkJCQlcCi1kbyB7CQkJ
CQkJCQlcCitkbyB7CWludCBfX2Nsb2JiZXIwLF9fY2xvYmJlcjE7CQkJCVwKIAlzd2l0Y2gg
KHNpemUgJiAzKSB7CQkJCQlcCiAJZGVmYXVsdDoJCQkJCQlcCiAJCV9fYXNtX18gX192b2xh
dGlsZV9fKAkJCQlcCkBAIC0zMDEsOSArMzAzLDEwIEBACiAJCQkiCS5hbGlnbiA0XG4iCQkJ
XAogCQkJIgkubG9uZyAwYiwyYlxuIgkJCVwKIAkJCSIucHJldmlvdXMiCQkJCVwKLQkJCTog
Ij1jIihzaXplKQkJCQlcCi0JCQk6ICJTIihmcm9tKSwgIkQiKHRvKSwgIjAiKHNpemUvNCkJ
XAotCQkJOiAiZGkiLCAic2kiLCAibWVtb3J5Iik7CQlcCisJCQk6ICI9YyIoc2l6ZSksICI9
JkQiIChfX2Nsb2JiZXIwKSwJXAorCQkJICAiPSZTIiAoX19jbG9iYmVyMSkJCQlcCisJCQk6
ICIyIihmcm9tKSwgIjEiKHRvKSwgIjAiKHNpemUvNCkJXAorCQkJOiAibWVtb3J5Iik7CQkJ
CVwKIAkJYnJlYWs7CQkJCQkJXAogCWNhc2UgMToJCQkJCQkJXAogCQlfX2FzbV9fIF9fdm9s
YXRpbGVfXygJCQkJXApAQCAtMzIwLDkgKzMyMywxMCBAQAogCQkJIgkubG9uZyAwYiwzYlxu
IgkJCVwKIAkJCSIJLmxvbmcgMWIsNGJcbiIJCQlcCiAJCQkiLnByZXZpb3VzIgkJCQlcCi0J
CQk6ICI9YyIoc2l6ZSkJCQkJXAotCQkJOiAiUyIoZnJvbSksICJEIih0byksICIwIihzaXpl
LzQpCVwKLQkJCTogImRpIiwgInNpIiwgIm1lbW9yeSIpOwkJXAorCQkJOiAiPWMiKHNpemUp
LCAiPSZEIiAoX19jbG9iYmVyMCksCVwKKwkJCSAgIj0mUyIgKF9fY2xvYmJlcjEpCQkJXAor
CQkJOiAiMiIoZnJvbSksICIxIih0byksICIwIihzaXplLzQpCVwKKwkJCTogIm1lbW9yeSIp
OwkJXAogCQlicmVhazsJCQkJCQlcCiAJY2FzZSAyOgkJCQkJCQlcCiAJCV9fYXNtX18gX192
b2xhdGlsZV9fKAkJCQlcCkBAIC0zMzksOSArMzQzLDEwIEBACiAJCQkiCS5sb25nIDBiLDNi
XG4iCQkJXAogCQkJIgkubG9uZyAxYiw0YlxuIgkJCVwKIAkJCSIucHJldmlvdXMiCQkJCVwK
LQkJCTogIj1jIihzaXplKQkJCQlcCi0JCQk6ICJTIihmcm9tKSwgIkQiKHRvKSwgIjAiKHNp
emUvNCkJXAotCQkJOiAiZGkiLCAic2kiLCAibWVtb3J5Iik7CQlcCisJCQk6ICI9YyIoc2l6
ZSksICI9JkQiIChfX2Nsb2JiZXIwKSwJXAorCQkJICAiPSZTIiAoX19jbG9iYmVyMSkJCQlc
CisJCQk6ICIyIihmcm9tKSwgIjEiKHRvKSwgIjAiKHNpemUvNCkJXAorCQkJOiAibWVtb3J5
Iik7CQlcCiAJCWJyZWFrOwkJCQkJCVwKIAljYXNlIDM6CQkJCQkJCVwKIAkJX19hc21fXyBf
X3ZvbGF0aWxlX18oCQkJCVwKQEAgLTM2MSw5ICszNjYsMTAgQEAKIAkJCSIJLmxvbmcgMWIs
NWJcbiIJCQlcCiAJCQkiCS5sb25nIDJiLDZiXG4iCQkJXAogCQkJIi5wcmV2aW91cyIJCQkJ
XAotCQkJOiAiPWMiKHNpemUpCQkJCVwKLQkJCTogIlMiKGZyb20pLCAiRCIodG8pLCAiMCIo
c2l6ZS80KQlcCi0JCQk6ICJkaSIsICJzaSIsICJtZW1vcnkiKTsJCVwKKwkJCTogIj1jIihz
aXplKSwgIj0mRCIgKF9fY2xvYmJlcjApLAlcCisJCQkgICI9JlMiIChfX2Nsb2JiZXIxKQkJ
CVwKKwkJCTogIjIiKGZyb20pLCAiMSIodG8pLCAiMCIoc2l6ZS80KQlcCisJCQk6ICJtZW1v
cnkiKTsJCVwKIAkJYnJlYWs7CQkJCQkJXAogCX0JCQkJCQkJXAogfSB3aGlsZSAoMCkK
--------------D35A6359A98D10F6217952C1--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu