[PATCH] BadRAM for 2.5.73-mm2

steven.newbury1@ntlworld.com
Wed, 2 Jul 2003 3:33:26 +0000


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-20771-1057116978-0001-2
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit

Arghhhh! Third attempt. Yahoo!Mail has currupted the patch twice previously so I have given up with it. :-(

I have ported the BadRAM patch to 2.5.73-mm2.

It will probably apply cleanly to 2.5.73 as well but I haven't checked it
yet...

I am running it now, it seems to work for me.

It is based it on
http://rick.vanrein.org/linux/badram/software/BadRAM-2.4.20.1.patch

--=_courier-20771-1057116978-0001-2
Content-Type: application/octet-stream; name="BadRAM-2.5.73-mm2.diff"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="BadRAM-2.5.73-mm2.diff"

ZGlmZiAtdXJOIGxpbnV4LTIuNS43My1tbTIvQ1JFRElUUyBsaW51eC0yLjUvQ1JFRElUUwot
LS0gbGludXgtMi41LjczLW1tMi9DUkVESVRTCTIwMDMtMDYtMTcgMDU6MjA6MDcuMDAwMDAw
MDAwICswMTAwCisrKyBsaW51eC0yLjUvQ1JFRElUUwkyMDAzLTA3LTAyIDAxOjU4OjUyLjE0
NjE5Nzk3MCArMDEwMApAQCAtMjM2NSw2ICsyMzY1LDEyIEBACiBTOiA1NTEyNyBNYWluegog
UzogR2VybWFueQogCitOOiBTdGV2ZW4gTmV3YnVyeQorRTogc19qX25ld2J1cnlAeWFob28u
Y28udWsKK0Q6IEZvcndhcmQgcG9ydGVkIEJhZFJBTSBwYXRjaCB0byAyLjUuNzMgZnJvbSAy
LjQuMjAKK1M6IERlcmJ5CitTOiBVbml0ZWQgS2luZ2RvbQorCiBOOiBEYXZpZCBDLiBOaWVt
aQogRTogbmllbWlAdHV4Lm9yZwogVzogaHR0cDovL3d3dy50dXgub3JnL35uaWVtaS8KQEAg
LTI2MDEsNiArMjYwNywxNCBAQAogUzogTWFsdmVybiwgUGVubnN5bHZhbmlhIDE5MzU1CiBT
OiBVU0EKIAorTjogUmljayB2YW4gUmVpbgorRTogdmFucmVpbkBjcy51dHdlbnRlLm5sCitX
OiBodHRwOi8vd3d3LmNzLnV0d2VudGUubmwvfnZhbnJlaW4KK0Q6IE1lbW9yeSwgdGhlIEJh
ZFJBTSBzdWJzeXN0ZW0gZGVhbGluZyB3aXRoIHN0YXRpY2FsbHkgY2hhbGxhbmdlZCBSQU0g
bW9kdWxlcy4KK1M6IEJpbm5lbmVzIDY3CitTOiA5NDA3IENYIEFzc2VuCitTOiBUaGUgTmV0
aGVybGFuZHMKKwogTjogU3RlZmFuIFJlaW5hdWVyCiBFOiBzdGVwYW5AbGludXguZGUKIFc6
IGh0dHA6Ly93d3cuZnJlaWJ1cmcubGludXguZGUvfnN0ZXBhbi8KQEAgLTI4MTksNiArMjgz
MywxMyBAQAogRToKIEQ6IE1hY2ludG9zaCBJREUgRHJpdmVyCiAKK046IE5pY28gU2NobW9p
Z2wKK0U6IG5pY29Ad3JpdGVtYWlsLmNvbQorVzogaHR0cDovL3dlYnJ1bS51bmktbWFubmhl
aW0uZGUvbWF0aC9zY2htb2lnbC9saW51eC8KK0Q6IE1pZ3JhdGlvbiBvZiBCYWRSQU0gcGF0
Y2ggdG8gMi40LjQgc2VyaWVzICh3aXRoIFJpY2sgdmFuIFJlaW4pCitTOiBNYW5uaGVpbSwg
QlcsIEdlcm1hbnkKK1A6IDIwNDcvMzhGQzlFMDMgIDVEIERCIDA5IEU0IDNGIEYzIENEIDA5
IDc1IDU5IC0gMTEgMTcgOUMgMDMgNDYgRTMgMzggRkMgOUUgMDMKKwogTjogUGV0ZXIgRGUg
U2NocmlqdmVyCiBFOiBzdHVkMTFAY2M0Lmt1bGV1dmVuLmFjLmJlCiBEOiBNaXRzdW1pIENE
LVJPTSBkcml2ZXIgcGF0Y2hlcyBNYXJjaCB2ZXJzaW9uCmRpZmYgLXVyTiBsaW51eC0yLjUu
NzMtbW0yL0RvY3VtZW50YXRpb24vYmFkcmFtLnR4dCBsaW51eC0yLjUvRG9jdW1lbnRhdGlv
bi9iYWRyYW0udHh0Ci0tLSBsaW51eC0yLjUuNzMtbW0yL0RvY3VtZW50YXRpb24vYmFkcmFt
LnR4dAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi41
L0RvY3VtZW50YXRpb24vYmFkcmFtLnR4dAkyMDAzLTA3LTAxIDIwOjAyOjI3LjAwMDAwMDAw
MCArMDEwMApAQCAtMCwwICsxLDI2NiBAQAorSU5GT1JNQVRJT04gT04gVVNJTkcgQkFEIFJB
TSBNT0RVTEVTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50
cm9kdWN0aW9uCisJUkFNIGlzIGdldHRpbmcgc21hbGxlciBhbmQgc21hbGxlciwgYW5kIGFz
IGEgcmVzdWx0LCBhbHNvIG1vcmUgYW5kIG1vcmUKKwl2dWxuZXJhYmxlLiBUaGlzIG1ha2Vz
IHRoZSBtYW51ZmFjdHVyaW5nIG9mIGhhcmR3YXJlIG1vcmUgZXhwZW5zaXZlLAorCXNpbmNl
IGFuIGV4Y2Vzc2l2ZSBhbW91bnQgb2YgUkFNIGNoaXBzIG11c3QgYmUgZGlzY2FyZGVkIG9u
IGFjY291bnQgb2YKKwlhIHNpbmdsZSBjZWxsIHRoYXQgaXMgd3JvbmcuIFNpbWlsYXJseSwg
c3RhdGljIGRpc2NoYXJnZSBtYXkgZGFtYWdlIGEKKwlSQU0gbW9kdWxlIGZvcmV2ZXIsIHdo
aWNoIGlzIHVzdWFsbHkgcmVtZWRpZWQgYnkgcmVwbGFjaW5nIGl0CisJZW50aXJlbHkuCisK
KwlUaGlzIGlzIG5vdCBuZWNlc3NhcnksIGFzIHRoZSBCYWRSQU0gY29kZSBzaG93czogQnkg
aW5mb3JtaW5nIHRoZSBMaW51eAorCWtlcm5lbCB3aGljaCBhZGRyZXNzZXMgaW4gYSBSQU0g
YXJlIGRhbWFnZWQsIHRoZSBrZXJuZWwgc2ltcGx5IGF2b2lkcworCWV2ZXIgYWxsb2NhdGlu
ZyBzdWNoIGFkZHJlc3NlcyBidXQgbWFrZXMgYWxsIHRoZSByZXN0IGF2YWlsYWJsZS4KKwor
UmVhc29ucyBmb3IgdGhpcyBmZWF0dXJlCisJVGhlcmUgYXJlIG1hbnkgcmVhc29ucyB3aHkg
dGhpcyBrZXJuZWwgZmVhdHVyZSBpcyB1c2VmdWw6CisJLSBDaGlwIG1hbnVmYWN0dXJlIGlz
IHJlc291cmNlIGludGVuc2l2ZTsgd2FzdGUgbGVzcyBhbmQgc2xlZXAgYmV0dGVyCisJLSBJ
dCdzIGFub3RoZXIgY2hhbmNlIHRvIHByb21vdGUgTGludXggYXMgInRoZSBmbGV4aWJsZSBP
UyIKKwktIFNvbWUgbGFwdG9wcyBoYXZlIHRoZWlyIFJBTSBzb2xkZXJlZCBpbi4uLiBhbmQg
dGhlbiBpdCBmYWlscyEKKwktIEl0J3MgcGxhaW4gY29vbCA7LSkKKworUnVubmluZyBleGFt
cGxlCisJVG8gcnVuIHRoaXMgcHJvamVjdCwgSSB3YXMgZ2l2ZW4gdHdvIERJTU1zLCAzMiBN
QiBlYWNoLiBPbmUsIHRoYXQgd2UKKwlzaGFsbCB1c2UgYXMgYSBydW5uaW5nIGV4YW1wbGUg
aW4gdGhpcyB0ZXh0LCBjb250YWluZWQgNTEyIGZhdWx0eSBiaXRzLAorCXNwcmVhZCBvdmVy
IDEvNCBvZiB0aGUgYWRkcmVzcyByYW5nZSBpbiBhIHJlZ3VsYXIgcGF0dGVybi4gU29tZSB0
cmlja3MKKwl3aXRoIGEgUkFNIHRlc3RlciBhbmQgYSBmZXcgYmluYXJ5IGNhbGN1bGF0aW9u
cyB3ZXJlIHN1ZmZpY2llbnQgdG8KKwl3cml0ZSB0aGVzZSBmYXVsdHMgZG93biBpbiAyIGxv
bmd3b3JkIG51bWJlcnMuCisKKwlUaGUga2VybmVsIHJlY29nbmlzZWQgdGhlIGNvcnJlY3Qg
bnVtYmVyIG9mIHBhZ2VzIHdpdGggZmF1bHRzIGFuZCBkaWQKKwlub3QgZ2l2ZSB0aGVtIG91
dCBmb3IgYWxsb2NhdGlvbi4gVGhlIGFsbG9jYXRpb24gcm91dGluZXMgY291bGQKKwl0aGVy
ZWZvcmUgcHJvZ3Jlc3MgYXMgbm9ybWFsbHksIHdpdGhvdXQgYW55IGFkYXB0aW9uLgorCVNv
LCBJIGdhaW5lZCAzMCBNQiBvZiBESU1NIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBoYXZlIGJl
ZW4gdGhyb3duCisJYXdheS4gQWZ0ZXIgYm9vdGluZyB0aGUga2VybmVsLCB0aGUga2VybmVs
IGJlaGF2ZWQgZXhhY3RseSBhcyBpdAorCWFsd2F5cyBoYWQuCisKK0luaXRpYWwgY2hlY2tz
CisJSWYgeW91IGV4cGVyaWVuY2UgUkFNIHRyb3VibGUsIGZpcnN0IHJlYWQgL3Vzci9zcmMv
bGludXgvbWVtb3J5LnR4dAorCWFuZCB0cnkgb3V0IHRoZSBtZW09NE0gdHJpY2sgdG8gc2Vl
IGlmIGF0IGxlYXN0IHNvbWUgaW5pdGlhbCBwYXJ0cworCW9mIHlvdXIgUkFNIHdvcmsgd2Vs
bC4gVGhlIEJhZFJBTSByb3V0aW5lcyBoYWx0IHRoZSBrZXJuZWwgaW4gcGFuaWMKKwlpZiB0
aGUgcmVzZXJ2ZWQgYXJlYSBvZiBtZW1vcnkgKGNvbnRhaW5pbmcga2VybmVsIHN0dWZmKSBj
b250YWlucworCWEgZmF1bHR5IGFkZHJlc3MuCisKK1J1bm5pbmcgYSBSQU0gY2hlY2tlcgor
CVRoZSBtZW1vcnkgY2hlY2tlciBpcyBub3QgYnVpbHQgaW50byB0aGUga2VybmVsLCB0byBh
dm9pZCBkZWxheXMgYXQKKwlydW50aW1lLiBJZiB5b3UgZXhwZXJpZW5jZSBwcm9ibGVtcyB0
aGF0IG1heSBiZSBjYXVzZWQgYnkgUkFNLCBydW4KKwlhIGdvb2QgUkFNIGNoZWNrZXIsIHN1
Y2ggYXMKKwkJaHR0cDovL3JlYWxpdHkuc2dpLmNvbS9jYnJhZHlfZGVudmVyL21lbXRlc3Q4
NgorCVRoZSBvdXRwdXQgb2YgYSBSQU0gY2hlY2tlciBwcm92aWRlcyBhZGRyZXNzZXMgdGhh
dCB3ZW50IHdyb25nLiBJbgorCXRoZSAzMiBNQiBjaGlwIHdpdGggNTEyIGZhdWx0eSBiaXRz
IG1lbnRpb25lZCBhYm92ZSwgdGhlIGVycm9ycyB3ZXJlCisJZm91bmQgaW4gdGhlIDhNQi0x
Nk1CIHJhbmdlICh0aGUgRElNTSB3YXMgaW4gc2xvdCAjMCkgYXQgYWRkcmVzc2VzCisJCXh4
eDQyZjQKKwkJeHh4NjJmNAorCQl4eHhjMmY0CisJCXh4eGUyZjQKKwlhbmQgdGhlIGVycm9y
IHdhcyBhICJzdGlja3kgMSBiaXQiLCBhIG1lbW9yeSBiaXQgdGhhdCBzdGF5ZWQgIjEiIG5v
CisJbWF0dGVyIHdoYXQgd2FzIHdyaXR0ZW4gdG8gaXQuIFRoZSByZWd1bGFyaXR5IG9mIHRo
aXMgcGF0dGVybgorCXN1Z2dlc3RzIHRoZSBkZWF0aCBvZiBhIGJ1ZmZlciBhdCB0aGUgb3V0
cHV0IHN0YWdlcyBvZiBhIHJvdyBvbiBvbmUgb2YKKwl0aGUgY2hpcHMuIEkgZXhwZWN0IHN1
Y2ggcmVndWxhcml0eSB0byBiZSBjb21tb25wbGFjZS4gRmluZGluZyB0aGlzCisJcmVndWxh
cml0eSBjdXJyZW50bHkgaXMgaHVtYW4gZWZmb3J0LCBidXQgaXQgc2hvdWxkIG5vdCBiZSBo
YXJkIHRvCisJYWx0ZXIgYSBSQU0gY2hlY2tlciB0byBjYXB0dXJlIGl0IGluIHNvbWUgc29y
dCBvZiBwYXR0ZXJuLCBwb3NzaWJseQorCXRoZSBCYWRSQU0gcGF0dGVybnMgZGVzY3JpYmVk
IGJlbG93LgorCisJQnkgdGhlIHdheSwgaWYgeW91IG1hbmFnZSB0byBnZXQgaG9sZCBvZiBt
ZW10ZXN0ODYgdmVyc2lvbiAyLjMgb3IKKwliZXlvbmQsIHlvdSBjYW4gY29uZmlndXJlIHRo
ZSBwcmludGluZyBtb2RlIHRvIHByb2R1Y2UgQmFkUkFNIHBhdHRlcm5zLAorCXdoaWNoIGZp
bmQgb3V0IGV4YWN0bHkgd2hhdCB5b3UgbXVzdCBlbnRlciBvbiB0aGUgTElMTzogY29tbWFu
ZGxpbmUsCisJZXhjZXB0IHRoYXQgeW91IHNob3VsZG4ndCBtZW50aW9uIHRoZSBhZGRlZCBz
cGFjaW5nLiBUaGF0IG1lYW5zIHRoYXQKKwl5b3UgY2FuIHNraXAgdGhlIGZvbGxvd2luZyBz
dGVwLCB3aGljaCBzYXZlcyB5b3UgYSAqbG90KiBvZiB3b3JrLgorCisJQWxzbyBieSB0aGUg
d2F5LCBpZiB5b3VyIG1hY2hpbmUgaGFzIHRoZSBJU0EgbWVtb3J5IGdhcCBpbiB0aGUgMTVN
LTE2TQorCXJhbmdlIHVuc3RvcHBhYmxlLCBMaW51eCBjYW4gZ2V0IGluIHRyb3VibGUuIE9u
ZSB3YXkgb2YgaGFuZGxpbmcgdGhhdAorCXNpdHVhdGlvbiBpcyBieSBzcGVjaWZ5aW5nIHRo
ZSB0b3RhbCBtZW1vcnkgc2l6ZSB0byBMaW51eCB3aXRoIGEgYm9vdAorCXBhcmFtZXRlciBt
ZW09Li4uIGFuZCB0aGVuIHRvIHRlbGwgaXQgdG8gdHJlYXQgdGhlIDE1TS0xNk0gcmFuZ2Ug
YXMKKwlmYXVsdHkgd2l0aCBhbiBhZGRpdGlvbmFsIGJvb3QgcGFyYW1ldGVyLCBmb3IgaW5z
dGFuY2U6CisJCW1lbT0yNE0gYmFkcmFtPTB4MDBmMDAwMDAsMHhmZmYwMDAwMAorCWlmIHlv
dSBpbnN0YWxsZWQgMjRNQiBvZiBSQU0gaW4gdG90YWwuCisKK0NhcHR1cmluZyBlcnJvcnMg
aW4gYSBwYXR0ZXJuCisJSW5zdGVhZCBvZiBtYW51YWxseSBwcm92aWRpbmcgYWxsIDUxMiBl
cnJvcnMgdG8gdGhlIGtlcm5lbCwgaXQncyBuaWNlcgorCXRvIGdlbmVyYXRlIGEgcGF0dGVy
bi4gU2luY2UgdGhlIHJlZ3VsYXJpdHkgaXMgYmFzZWQgb24gYWRkcmVzcyBkZWNvZGluZwor
CXNvZnR3YXJlLCB3aGljaCBnZW5lcmFsbHkgdGFrZXMgY2VydGFpbiBiaXRzIGludG8gYWNj
b3VudCBhbmQgaWdub3JlcworCW90aGVycywgd2Ugc2hhbGwgcHJvdmlkZSBhIGZhdWx0eSBh
ZGRyZXNzIEYsIHRvZ2V0aGVyIHdpdGggYSBiaXQgbWFzayBNCisJdGhhdCBzcGVjaWZpZXMg
d2hpY2ggYml0cyBtdXN0IGJlIGVxdWFsIHRvIEYuIEluIEMgY29kZSwgYW4gYWRkcmVzcyBB
CisJaXMgZmF1bHR5IGlmIGFuZCBvbmx5IGlmCisJCShGICYgTSkgPT0gKEEgJiBNKQorCW9y
IGFsdGVybmF0ZWx5IChjbG9zZXIgdG8gYSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbik6CisJ
CX4oKEYgXiBBKSAmIE0pCisJSW4gdGhlIGV4YW1wbGUgMzIgTUIgY2hpcCwgd2UgaGFkIHRo
ZSBmYXVsdHkgYWRkcmVzc2VzIGluIDhNQi0xNk1COgorCQl4eHg0MmY0ICAgICAgICAgLi4u
LjAxMDAuLi4uCisJCXh4eDYyZjQgICAgICAgICAuLi4uMDExMC4uLi4KKwkJeHh4YzJmNCAg
ICAgICAgIC4uLi4xMTAwLi4uLgorCQl4eHhlMmY0ICAgICAgICAgLi4uLjExMTAuLi4uCisJ
VGhlIHNlY29uZCBjb2x1bW4gcmVwcmVzZW50cyB0aGUgYWx0ZXJuYXRpbmcgaGV4IGRpZ2l0
IGluIGJpbmFyeSBmb3JtLgorCUFwcGVyYW50bHksIHRoZSBmaXJzdCBhbmQgb25lLWJ1dCBs
YXN0IGJpbmFyeSBkaWdpdCBjYW4gYmUgYW55dGhpbmcsCisJc28gdGhlIGJpbmFyeSBtYXNr
IGZvciB0aGF0IHBhcnQgaXMgMDEwMS4gVGhlIG1hc2sgZm9yIHRoZSBwYXJ0IGFmdGVyCisJ
dGhpcyBpcyAweGZmZiwgYW5kIHRoZSBwYXJ0IGJlZm9yZSBzaG91bGQgc2VsZWN0IGFueXRo
aW5nIGluIHRoZSByYW5nZQorCThNQi0xNk1CLCBvciAweDAwODAwMDAwLTB4MDEwMDAwMDA7
IHRoaXMgaXMgZG9uZSB3aXRoIGEgYml0bWFzaworCTB4ZmY4MHh4eHguIENvbWJpbmluZyB0
aGVzZSBwYXJ0aWFsIG1hc2tzLCB3ZSBnZXQ6CisJCUY9MHgwMDgwNDJmNCAgICBNPTB4ZmY4
MDVmZmYKKwlUaGF0IGNvdmVycyBldmVyeXRoaW5nIGZvciB0aGlzIERJTU07IGZvciBtb3Jl
IGNvbXBsaWNhdGVkIGZhaWxpbmcKKwlESU1Ncywgb3IgZm9yIGEgY29tYmluYXRpb24gb2Yg
bXVsdGlwbGUgZmFpbGluZyBESU1NcywgaXQgY2FuIGJlCisJbmVjZXNzYXJ5IHRvIHNldCB1
cCBhIG51bWJlciBvZiBzdWNoIEYvTSBwYWlycy4KKworUmVib290aW5nIExpbnV4CisJTm93
IHRoYXQgdGhlc2UgcGF0dGVybnMgYXJlIGtub3duIChhbmQgZG91YmxlLWNoZWNrZWQsIHRo
ZSBjYWxjdWxhdGlvbnMKKwlhcmUgaGlnaGx5IGVycm9yLXByb25lLi4uIGl0IHdvdWxkIGJl
IG5lYXQgdG8gdGVzdCB0aGVtIGluIHRoZSBSQU0KKwljaGVja2VyLi4uKSB3ZSBzaW1wbHkg
cmVzdGFydCBMaW51eCB3aXRoIHRoZXNlIEYvTSBwYWlycyBhcyBhIHBhcmFtZXRlci4KKwlJ
ZiB5b3Ugbm9ybWFsbHkgYm9vdCBhcyBmb2xsb3dzOgorCSAgICAgICBMSUxPOiBsaW51eAor
CXlvdSBzaG91bGQgbm93IGJvb3Qgd2l0aAorCSAgICAgICBMSUxPOiBsaW51eCBiYWRyYW09
MHgwMDgwNDJmNCwweGZmODA1ZmZmCisJb3IgcGVyaGFwcyBieSBtZW50aW9uaW5nIG1vcmUg
Ri9NIHBhaXJzIGluIGFuIG9yZGVyIEYwLE0wLEYxLE0xLC4uLgorCVdoZW4geW91IHByb3Zp
ZGUgYW4gb2RkIG51bWJlciBvZiBhcmd1bWVudHMgdG8gYmFkcmFtLCB0aGUgZGVmYXVsdCBt
YXNrCisJMHhmZmZmZmZmZiAob25seSBvbmUgYWRkcmVzcyBtYXRjaGVkKSBpcyBhcHBsaWVk
IHRvIHRoZSBwYXR0ZXJuLgorCisJQmV3YXJlIG9mIHRoZSBjb21tYW5kbGluZSBsZW5ndGgu
IEF0IGxlYXN0IHVwIHRvIExJTE8gdmVyc2lvbiAwLjIxLAorCXRoZSBjb21tYW5kbGluZSBp
cyBjdXQgb2ZmIGFmdGVyIHRoZSA3OHRoIGNoYXJhY3RlcjsgbGF0ZXIgdmVyc2lvbnMKKwlt
YXkgZ28gYXMgZmFyIGFzIHRoZSBrZXJuZWwgZ29lcywgbmFtZWx5IDI1NSBjaGFyYWN0ZXJz
LiBJbiBubyB3YXkgaXMKKwlpdCBwb3NzaWJsZSB0byBlbnRlciBtb3JlIHRoYW4gMTAgbnVt
YmVycyB0byB0aGUgYmFkcmFtIGJvb3Qgb3B0aW9uLgorCisJV2hlbiB0aGUga2VybmVsIG5v
dyBib290cywgaXQgc2hvdWxkIG5vdCBnaXZlIGFueSB0cm91YmxlIHdpdGggUkFNLgorCU1p
bmQgeW91LCB0aGlzIGlzIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGtlcm5lbCBh
bmQgaXRzIGRhdGEKKwlzdG9yYWdlIGRvIG5vdCBvdmVybGFwIGFuIGVycm9uZW91cyBwYXJ0
LiBJZiB0aGlzIGhhcHBlbnMsIGFuZCB0aGUKKwlrZXJuZWwgZG9lcyBub3QgY2hva2Ugb24g
aXQgcmlnaHQgYXdheSwgaXQgd2lsbCBzdG9wIHdpdGggYSBwYW5pYy4KKwlZb3Ugd2lsbCBu
ZWVkIHRvIHByb3ZpZGUgYSBSQU0gd2hlcmUgdGhlIGluaXRpYWwsIHNheSAyTUIsIGlzIGZh
dWx0bGVzcy4KKworCU5vdyBsb29rIHVwIHlvdXIgbWVtb3J5IHN0YXR1cyB3aXRoCisJICAg
ICAgIGRtZXNnIHwgZ3JlcCBeTWVtb3J5OgorCXdoaWNoIHByaW50cyBhIHNpbmdsZSBsaW5l
IHdpdGggaW5mb3JtYXRpb24gbGlrZQorCQlNZW1vcnk6IDE1ODUyNGsvMTYzODQwayBhdmFp
bGFibGUKKwkJCSg5NDBrIGtlcm5lbCBjb2RlLAorCQkJNDEyayByZXNlcnZlZCwKKwkJCTE4
NTZrIGRhdGEsCisJCQk2MGsgaW5pdCwKKwkJCTBrIGhpZ2htZW0sCisJCQkyMDQ4ayBCYWRS
QU0pCisJVGhlIGxhdHRlciBlbnRyeSwgdGhlIGJhZHJhbSwgaXMgMjA0OGsgdG8gcmVwcmVz
ZW50IHRoZSBsb3NzIG9mIDJNQgorCW9mIGdlbmVyYWwgcHVycG9zZSBSQU0gZHVlIHRvIHRo
ZSBlcnJvcnMuIE9yLCBwb3NpdGl2ZWx5IHJlcGhyYXNlZCwKKwlpbnN0ZWFkIG9mIHRocm93
aW5nIG91dCAzMk1CIGFzIHVzZWxlc3MsIHlvdSBvbmx5IHRocm93IG91dCAyTUIuCisKKwlJ
ZiB0aGUgc3lzdGVtIGlzIHN0YWJsZSAodHJ5IGNvbXBpbGluZyBhIGZldyBrZXJuZWxzLCBh
bmQgZG8gYSBmZXcKKwlmaW5kcyBpbiAvIG9yIHNvKSB5b3UgbWF5IGFkZCB0aGUgYm9vdCBw
YXJhbWV0ZXIgdG8gL2V0Yy9saWxvLmNvbmYKKwlhcyBhIGxpbmUgdG8gX2FsbF8gdGhlIGtl
cm5lbHMgdGhhdCBoYW5kbGUgdGhpcyB0cm91YmxlIHdpdGggYSBsaW5lCisJCWFwcGVuZD0i
YmFkcmFtPTB4MDA4MDQyZjQsMHhmZjgwNWZmZiIKKwlhZnRlciB3aGljaCB5b3UgcnVuICJs
aWxvIi4KKwlXYXJuaW5nOiBEb24ndCBleHBlcmltZW50IHdpdGggdGhlc2Ugc2V0dGluZ3Mg
b24geW91ciBvbmx5IGJvb3QgaW1hZ2UuCisJSWYgdGhlIEJhZFJBTSBvdmVybGF5cyBrZXJu
ZWwgY29kZSwgZGF0YSwgaW5pdCwgb3Igb3RoZXIgcmVzZXJ2ZWQKKwltZW1vcnksIHRoZSBr
ZXJuZWwgd2lsbCBoYWx0IGluIHBhbmljLiBUcnkgc2V0dGluZ3Mgb24gYSB0ZXN0IGJvb3QK
KwlpbWFnZSBmaXJzdCwgYW5kIGlmIHlvdSBnZXQgYSBwYW5pYyB5b3Ugc2hvdWxkIGNoYW5n
ZSB0aGUgb3JkZXIgb2YKKwl5b3VyIERJTU1zIFt3aGljaCBtYXkgaW52b2x2ZSBidXlpbmcg
YSBuZXcgb25lIGp1c3QgdG8gYmUgYWJsZSB0bworCWNoYW5nZSB0aGUgb3JkZXJdLgorCisJ
WW91IGFyZSBhbGxvd2VkIHRvIGVudGVyIGFueSBudW1iZXIgb2YgQmFkUkFNIHBhdHRlcm5z
IGluIGFsbCB0aGUKKwlwbGFjZXMgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUuIFRoZXkgd2ls
bCBhbGwgYXBwbHkuIEl0IGlzIGV2ZW4KKwlwb3NzaWJsZSB0byBtZW50aW9uIHNldmVyYWwg
QmFkUkFNIHBhdHRlcm5zIGluIGEgc2luZ2xlIHBsYWNlLiBUaGUKKwljb21wbGV0aW9uIG9m
IGFuIG9kZCBudW1iZXIgb2YgYXJndW1lbnRzIHdpdGggdGhlIGRlZmF1bHQgbWFzayBpcwor
CWRvbmUgc2VwYXJhdGVseSBmb3IgZWFjaCBiYWRyYW09Li4uIG9wdGlvbi4KKworS2VybmVs
IEN1c3RvbWlzYXRpb24KKwlTb21lIHBlb3BsZSBwcmVmZXIgdG8gZW50ZXIgdGhlaXIgYmFk
cmFtIHBhdHRlcm5zIGluIHRoZSBrZXJuZWwsIGFuZAorCXRoaXMgaXMgYWxzbyBwb3NzaWJs
ZS4gSW4gbW0vcGFnZV9hbGxvYy5jIHRoZXJlIGlzIGFuIGFycmF5IG9mIHVuc2lnbmVkCisJ
bG9uZyBpbnRlZ2VycyBpbnRvIHdoaWNoIHRoZSBwYXJhbWV0ZXJzIGNhbiBiZSBlbnRlcmVk
LCBwcmVmaXhlZCB3aXRoCisJdGhlIG51bWJlciBvZiBpbnRlZ2VycyAodHdpY2UgdGhlIG51
bWJlciBvZiBwYXR0ZXJucykuIFRoZSBhcnJheSBpcworCW5hbWVkIGJhZHJhbV9jdXN0b20g
YW5kIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIEJhZFJBTSBsaXN0IHdoZW5ldmVyIGFuCisJ
b3B0aW9uICdiYWRyYW0nIGlzIHByb3ZpZGVkIG9uIHRoZSBjb21tYW5kbGluZSB3aGVuIGJv
b3RpbmcsIGVpdGhlcgorCXdpdGggb3Igd2l0aG91dCBhZGRpdGlvbmFsIHBhdHRlcm5zLgor
CisJRm9yIHRoZSBwcmV2aW91cyBleGFtcGxlLCB0aGUgY29kZSB3b3VsZCBiZWNvbWUKKwor
CXN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBiYWRyYW1fY3VzdG9tW10gPSB7CisJCTIs
CS8vIE51bWJlciBvZiBsb25nd29yZHMgdGhhdCBmb2xsb3csIGFzIEYvTSBwYWlycworCQkw
eDAwODA0MmY0TCwgMHhmZjgwNWZmZkwsCisJfTsKKworCUV2ZW4gb24gdGhpcyBwbGFjZSB5
b3UgbWF5IGFzc3VtZSB0aGUgZGVmYXVsdCBtYXNrIHRvIGJlIGZpbGxlZCBpbgorCXdoZW4g
eW91IGVudGVyIGFuIG9kZCBudW1iZXIgb2YgbG9uZ3dvcmRzLiBTcGVjaWZ5IHRoZSBudW1i
ZXIgb2YKKwlsb25nd29yZHMgdG8gYmUgMCB0byBhdm9pZCBpbmZsdWVuY2Ugb2YgdGhpcyBj
dXN0b20gQmFkUkFNIGxpc3QuCisKK0JhZFJBTSBjbGFzc2lmaWNhdGlvbgorCVRoaXMgdGVj
aG5pcXVlIG1heSBzdGFydCBhIGxpdmVseSBtYXJrZXQgZm9yICJkZWFkIiBSQU0uIEl0IGlz
IGltcG9ydGFudAorCXRvIHJlYWxpc2UgdGhhdCBzb21lIFJBTXMgYXJlIG1vcmUgZGVhZCB0
aGFuIG90aGVycy4gU28sIGluc3RlYWQgb2YKKwlqdXN0IHByb3ZpZGluZyBhIFJBTSBzaXpl
LCBpdCBpcyBhbHNvIGltcG9ydGFudCB0byBrbm93IHRoZSBCYWRSQU0KKwljbGFzcywgd2hp
Y2ggaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgorCisJCUEgQmFkUkFNIGNsYXNzIE4gbWVhbnMg
dGhhdCBhdCBtb3N0IDJeTiBieXRlcyBoYXZlIGEgcHJvYmxlbSwKKwkJYW5kIHRoYXQgYWxs
IHByb2JsZW1zIHdpdGggdGhlIFJBTXMgYXJlIHBlcnNpc3RlbnQ6IFRoZXkKKwkJYXJlIHBy
ZWRpY3RhYmxlIGFuZCBhbHdheXMgc2hvdyB1cC4KKworCVRoZSBESU1NIHRoYXQgc2VydmVz
IGFzIGFuIGV4YW1wbGUgaGVyZSB3YXMgb2YgY2xhc3MgOSwgc2luY2UgNTEyPTJeOQorCWVy
cm9ycyB3ZXJlIGZvdW5kLiBIaWdoZXIgY2xhc3NlcyBhcmUgd29yc2UsICJjb3JyZWN0IiBS
QU0gaXMgb2YgY2xhc3MKKwktMSAob3IgZXZlbiBsZXNzLCBhdCB5b3VyIGNob2ljZSkuCisJ
Q2xhc3MgTiBhbHNvIG1lYW5zIHRoYXQgdGhlIGJpdG1hc2sgZm9yIHlvdXIgY2hpcCAoaWYg
dGhlcmUncyBqdXN0IG9uZSwKKwl0aGF0IGlzKSBjb3VudHMgTiBiaXRzICIwIiBhbmQgaXQg
bWVhbnMgdGhhdCAoaWYgbm8gZmF1bHRzIGZhbGwgaW4gdGhlCisJc2FtZSBwYWdlKSBhbiBh
bW91bnQgb2YgMl5OKlBBR0VTSVpFIG1lbW9yeSBpcyBsb3N0LCBpbiB0aGUgZXhhbXBsZSBv
bgorCWFuIGkzODYgYXJjaGl0ZWN0dXJlIHRoYXQgd291bGQgYmUgMl45KjRrPTJNQiwgd2hp
Y2ggYWNjb3VudHMgZm9yIHRoZQorCWluaXRpYWwgY2xhaW0gb2YgMzBNQiBSQU0gZ2FpbmVk
IHdpdGggdGhpcyBESU1NLgorCisJTm90ZSB0aGF0IHRoaXMgc2NoZW1lIGhhcyBkZWxpYmVy
YXRlbHkgYmVlbiBkZWZpbmVkIHRvIGJlIGluZGVwZW5kZW50CisJb2YgbWVtb3J5IHRlY2hu
b2xvZ3kgYW5kIG9mIGNvbXB1dGVyIGFyY2hpdGVjdHVyZS4KKworS25vd24gQnVncworCUxJ
TE8gaXMga25vd24gdG8gY3V0IG9mZiBjb21tYW5kbGluZXMgd2hpY2ggYXJlIHRvbyBsb25n
LiBGb3IgdGhlCisJbGlsby0wLjIxIGRpc3RyaWJ1dGlvbiwgYSBjb21tYW5kbGluZSBtYXkg
bm90IGV4Y2VlZCA3OCBjaGFyYWN0ZXJzLAorCXdoaWxlIGFjdHVhbGx5LCAyNTUgd291bGQg
YmUgcG9zc2libGUgW29uIGkzODYsIGtlcm5lbCAyLjIuMTZdLgorCUxJTE8gZG9lcyBfbm90
XyByZXBvcnQgdG9vLWxvbmcgY29tbWFuZGxpbmVzLCBidXQgdGhlIGVycm9yIHdpbGwKKwlz
aG93IHVwIGFzIGVpdGhlciBhIHBhbmljIGF0IGJvb3QgdGltZSwgc3RhdGluZworCQlwYW5p
YzogQmFkUkFNIHBhZ2UgaW4gaW5pdGlhbCBhcmVhCisJb3IgdGhlIGRtZXNnIGxpbmUgc3Rh
cnRpbmcgd2l0aCBNZW1vcnk6IHdpbGwgbWVudGlvbiBhbiB1bnByZWRpY3RlZAorCW51bWJl
ciBvZiBraWxvYnl0ZXMuIChOb3RlIHRoYXQgdGhlIGxhdHRlciBudW1iZXIgb25seSBpbmNs
dWRlcworCWVycm9ycyBpbiBhY2Nlc3NlZCBtZW1vcnkuKQorCitGdXR1cmUgUG9zc2liaWxp
dGllcworCUl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIHVzZSBldmVuIG1vcmUgb2YgdGhlIGZh
dWx0eSBSQU1zIGJ5IGVtcGxveWluZworCXRoZW0gZm9yIHNsYWJzLiBUaGUgc21hbGxlciBh
bGxvY2F0aW9uIGdyYW51bGFyaXR5IG9mIHNsYWJzIG1ha2VzIGl0CisJcG9zc2libGUgdG8g
dGhyb3cgb3V0IGp1c3QsIHNheSwgMzIgYnl0ZXMgc3Vycm91bmRpbmcgYW4gZXJyb3IuIFRo
aXMKKwl3b3VsZCBtZWFuIHRoYXQgdGhlIGV4YW1wbGUgRElNTSBvbmx5IGxvb3NlcyAxNmtC
IGluc3RlYWQgb2YgMk1CLgorCUl0IG1pZ2h0IGV2ZW4gYmUgcG9zc2libGUgdG8gYWxsb2Nh
dGUgdGhlIHNsYWJzIGluIHN1Y2ggYSB3YXkgdGhhdCwKKwl3aGVyZSBwb3NzaWJsZSwgdGhl
IHJlbWFpbmluZyBieXRlcyBpbiBhIHNsYWIgc3RydWN0dXJlIGFyZSBhbGxvY2F0ZWQKKwlh
cm91bmQgdGhlIGVycm9yLCByZWR1Y2luZyB0aGUgUkFNIGxvc3MgdG8gMCBpbiB0aGUgb3B0
aW1hbCBzaXR1YXRpb24hCisKKwlIb3dldmVyLCB0aGlzIHlpZWxkIGlzIHNvbWV3aGF0IGZh
a2VkOiBJdCBpcyBwb3NzaWJsZSB0byBwcm92aWRlIDUxMgorCXBhZ2VzIG9mIDMyLWJ5dGUg
c2xhYnMsIGJ1dCBpdCBpcyBub3QgY2VydGFpbiB0aGF0IGFueW9uZSB3b3VsZCB1c2UKKwl0
aGF0IG1hbnkgMzItYnl0ZSBzbGFicyBhdCBhbnkgdGltZS4KKworCUEgYmV0dGVyIHNvbHV0
aW9uIG1pZ2h0IGJlIHRvIGFsdGVyIHRoZSBwYWdlIGFsbG9jYXRpb24gZm9yIGEgc2xhYiB0
bworCWhhdmUgYSBwcmVmZXJlbmNlIGZvciBCYWRSQU0gcGFnZXMsIGFuZCBnaXZlbiB0aG9z
ZSBhIHNwZWNpYWwgdHJlYXRtZW50LgorCVRoaXMgd2F5LCB0aGUgQmFkUkFNIHdvdWxkIGJl
IHNwcmVhZCBvdmVyIGFsbCB0aGUgc2xhYnMsIHdoaWNoIHNlZW1zCisJbW9yZSBsaWtlbHkg
dG8gYmUgYSBgdHJ1ZScgcGF5LW9mZi4gVGhpcyB3b3VsZCB5aWVsZCBtb3JlIG92ZXJoZWFk
IGF0CisJc2xhYiBhbGxvY2F0aW9uIHRpbWUsIGJ1dCBvbiB0aGUgb3RoZXIgaGFuZCwgYnkg
dGhlIG5hdHVyZSBvZiBzbGFicywKKwlzdWNoIGFsbG9jYXRpb25zIGFyZSBtYWRlIGFzIHJh
cmUgYXMgcG9zc2libGUsIHNvIGl0IG1pZ2h0IG5vdCBtYXR0ZXIKKwl0aGF0IG11Y2guIEkg
YW0gdW5jZXJ0YWluIHdoZXJlIHRvIGdvLgorCisJTWFueSBzdWdnZXN0aW9ucyBoYXZlIGJl
ZW4gbWFkZSB0byBpbnNlcnQgYSBSQU0gY2hlY2tlciBhdCBib290IHRpbWU7CisJc2luY2Ug
dGhpcyB3b3VsZCBsZWF2ZSB0aGUgdGltZSB0byBkbyBvbmx5IHZlcnkgbWVhZ2VyIGNoZWNr
aW5nLCBpdAorCWlzIG5vdCBhIHJlYXNvbmFibGUgb3B0aW9uOyB3ZSBhbHJlYWR5IGhhdmUg
YSBCSU9TIGRvaW5nIHRoYXQgaW4gbW9zdAorCXN5c3RlbXMhCisKKwlJdCB3b3VsZCBiZSBp
bnRlcmVzdGluZyB0byBpbnRlZ3JhdGUgdGhpcyBmdW5jdGlvbmFsaXR5IHdpdGggdGhlCisJ
c2VsZi12ZXJpZnlpbmcgbmF0dXJlIG9mIEVDQyBSQU0uIFRoZXNlIG1lbW9yaWVzIGNhbiBl
dmVuIGRpc3Rpbmd1aXNoCisJYmV0d2VlbiByZWNvcmFibGUgYW5kIHVucmVjb3ZlcmFibGUg
ZXJyb3JzISBTdWNoIG1lbW9yeSBoYXMgYmVlbgorCWhhbmRsZWQgaW4gb2xkZXIgb3BlcmF0
aW5nIHN5c3RlbXMgYnkgYHRlc3RpbmcnIG9uY2UtZmFpbGVkIG1lbW9yeQorCWJsb2NrcyBm
b3IgYSB3aGlsZSwgYnkgcGxhY2luZyBvbmx5IChyZWxvYWRhYmxlKSBwcm9ncmFtIGNvZGUg
aW4gaXQuCisJVW5mb3J0dW5hdGVseSwgSSBwb3NzZXNzIG5vIGZhdWx0eSBFQ0MgbW9kdWxl
cyB0byB3b3JrIHRoaXMgb3V0LgorCitOYW1lcyBhbmQgUGxhY2VzCisJVGhlIGhvbWUgcGFn
ZSBvZiB0aGlzIHByb2plY3QgaXMgb24KKwkJaHR0cDovL3JpY2sudmFucmVpbi5vcmcvbGlu
dXgvYmFkcmFtCisJVGhpcyBwYWdlIGFsc28gbGlua3MgdG8gTmljbyBTY2htb2lnbCdzIGV4
cGVyaW1lbnRhbCBleHRlbnNpb25zIHRvCisJdGhpcyBwYXRjaCAod2l0aCBkZWJ1Z2dpbmcg
YW5kIGEgZmV3IG90aGVyIGZhbmN5IHRoaW5ncykuCisKKwlJbiBjYXNlIHlvdSBoYXZlIGV4
cGVyaWVuY2VzIHdpdGggdGhlIEJhZFJBTSBzb2Z0d2FyZSB3aGljaCBkaWZmZXIgZnJvbQor
CXRoZSB0ZXN0IHJlcG9ydGluZ3Mgb24gdGhhdCBzaXRlLCBJIGhvcGUgeW91IHdpbGwgbWFp
bCBtZSB3aXRoIHRoYXQKKwluZXcgaW5mb3JtYXRpb24uCisKKwlUaGUgQmFkUkFNIHByb2pl
Y3QgaXMgYW4gaWRlYSBhbmQgaW1wbGVtZW50YXRpb24gYnkKKwkJUmljayB2YW4gUmVpbgor
CQlCaW5uZW5lcyA2NworCQk5NDA3IENYIEFzc2VuCisJCVRoZSBOZXRoZXJsYW5kcworCQl2
YW5yZWluQGNzLnV0d2VudGUubmwKKwlJZiB5b3UgbGlrZSBpdCwgYSBwb3N0Y2FyZCB3b3Vs
ZCBiZSBtdWNoIGFwcHJlY2lhdGVkIDstKQorCisKKwkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5qb3ksCisJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtUmljay4KKwpk
aWZmIC11ck4gbGludXgtMi41LjczLW1tMi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0
ZXJzLnR4dCBsaW51eC0yLjUvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQK
LS0tIGxpbnV4LTIuNS43My1tbTIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50
eHQJMjAwMy0wNy0wMSAxOTo1OTo0MC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNS9E
b2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dAkyMDAzLTA3LTAyIDAxOjUyOjEw
LjkyMTY5ODk4NSArMDEwMApAQCAtMTUsNiArMTUsNyBAQAogCUFQSUMJQVBJQyBzdXBwb3J0
IGlzIGVuYWJsZWQuCiAJQVBNCUFkdmFuY2VkIFBvd2VyIE1hbmFnZW1lbnQgc3VwcG9ydCBp
cyBlbmFibGVkLgogCUFYMjUJQXBwcm9wcmlhdGUgQVguMjUgc3VwcG9ydCBpcyBlbmFibGVk
LgorCUJBRFJBTQlTdXBwb3J0IGZvciBmYXVsdHkgUkFNIGNoaXBzIGlzIGVuYWJsZWQuCiAJ
Q0QJQXBwcm9wcmlhdGUgQ0Qgc3VwcG9ydCBpcyBlbmFibGVkLgogCURFVkZTCWRldmZzIHN1
cHBvcnQgaXMgZW5hYmxlZC4gCiAJRFJNCURpcmVjdCBSZW5kZXJpbmcgTWFuYWdlbWVudCBz
dXBwb3J0IGlzIGVuYWJsZWQuIApAQCAtMTYyLDYgKzE2Myw5IEBACiAJYXp0Y2Q9CQlbSFcs
Q0RdIEF6dGVjaCBDRDI2OCBDRFJPTSBkcml2ZXIKIAkJCUZvcm1hdDogPGlvPiwweDc5ICg/
KQogCisJYmFkcmFtPQkJW0JBRFJBTV0gQXZvaWQgYWxsb2NhdGluZyBmYXVsdHkgUkFNIGFk
ZHJlc3Nlcy4KKworCiAJYmF5Y29tX2VwcD0JW0hXLEFYMjVdCiAJCQlGb3JtYXQ6IDxpbz4s
PG1vZGU+CiAgCmRpZmYgLXVyTiBsaW51eC0yLjUuNzMtbW0yL0RvY3VtZW50YXRpb24vbWVt
b3J5LnR4dCBsaW51eC0yLjUvRG9jdW1lbnRhdGlvbi9tZW1vcnkudHh0Ci0tLSBsaW51eC0y
LjUuNzMtbW0yL0RvY3VtZW50YXRpb24vbWVtb3J5LnR4dAkyMDAzLTA2LTE3IDA1OjIwOjI4
LjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi41L0RvY3VtZW50YXRpb24vbWVtb3J5LnR4
dAkyMDAzLTA3LTAxIDIwOjAyOjI3LjAwMDAwMDAwMCArMDEwMApAQCAtMTgsNiArMTgsMTQg
QEAKIAkgICBhcyB5b3UgYWRkIG1vcmUgbWVtb3J5LiAgQ29uc2lkZXIgZXhjaGFuZ2luZyB5
b3VyIAogICAgICAgICAgICBtb3RoZXJib2FyZC4KIAorCTQpIEEgc3RhdGljIGRpc2NoYXJn
ZSBvciBwcm9kdWN0aW9uIGZhdWx0IGNhdXNlcyBhIFJBTSBtb2R1bGUKKwkgICB0byBoYXZl
IChwcmVkaWN0YWJsZSkgZXJyb3JzLCB1c3VhbGx5IG1lYW5pbmcgdGhhdCBjZXJ0YWluCisJ
ICAgYml0cyBjYW5ub3QgYmUgc2V0IG9yIHJlc2V0LiBJbnN0ZWFkIG9mIHRocm93aW5nIGF3
YXkgeW91cgorCSAgIFJBTSBtb2R1bGUsIHlvdSBtYXkgcmVhZCAvdXNyL3NyYy9saW51eC9E
b2N1bWVudGF0aW9uL2JhZHJhbS50eHQKKwkgICB0byBsZWFybiBob3cgdG8gZGV0ZWN0LCBs
b2NhdGUgYW5kIGNpcmN1aW12ZW50IHN1Y2ggZXJyb3JzCisJICAgaW4geW91ciBSQU0gbW9k
dWxlLgorCisKIEFsbCBvZiB0aGVzZSBwcm9ibGVtcyBjYW4gYmUgYWRkcmVzc2VkIHdpdGgg
dGhlICJtZW09WFhYTSIgYm9vdCBvcHRpb24KICh3aGVyZSBYWFggaXMgdGhlIHNpemUgb2Yg
UkFNIHRvIHVzZSBpbiBtZWdhYnl0ZXMpLiAgCiBJdCBjYW4gYWxzbyB0ZWxsIExpbnV4IHRv
IHVzZSBsZXNzIG1lbW9yeSB0aGFuIGlzIGFjdHVhbGx5IGluc3RhbGxlZC4KQEAgLTQ1LDYg
KzUzLDggQEAKIAogCSogVHJ5IHBhc3NpbmcgdGhlICJtZW09NE0iIG9wdGlvbiB0byB0aGUg
a2VybmVsIHRvIGxpbWl0CiAJICBMaW51eCB0byB1c2luZyBhIHZlcnkgc21hbGwgYW1vdW50
IG9mIG1lbW9yeS4KKwkgIElmIHRoaXMgaGVscHMsIHJlYWQgL3Vzci9zcmMvbGludXgvRG9j
dW1lbnRhdGlvbi9iYWRyYW0udHh0CisJICB0byBsZWFybiBob3cgdG8gZmluZCBhbmQgY2ly
Y3VpbXZlbnQgbWVtb3J5IGVycm9ycy4KIAogCiBPdGhlciB0cmlja3M6CmRpZmYgLXVyTiBs
aW51eC0yLjUuNzMtbW0yL2FyY2gvaTM4Ni9kZWZjb25maWcgbGludXgtMi41L2FyY2gvaTM4
Ni9kZWZjb25maWcKLS0tIGxpbnV4LTIuNS43My1tbTIvYXJjaC9pMzg2L2RlZmNvbmZpZwky
MDAzLTA2LTE3IDA1OjIwOjA3LjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi41L2FyY2gv
aTM4Ni9kZWZjb25maWcJMjAwMy0wNy0wMSAyMDowMjoyOC4wMDAwMDAwMDAgKzAxMDAKQEAg
LTEzMiw2ICsxMzIsNyBAQAogIyBDT05GSUdfRUlTQSBpcyBub3Qgc2V0CiAjIENPTkZJR19N
Q0EgaXMgbm90IHNldAogQ09ORklHX0hPVFBMVUc9eQorQ09ORklHX0JBRFJBTT15CiAKICMK
ICMgUENNQ0lBL0NhcmRCdXMgc3VwcG9ydApkaWZmIC11ck4gbGludXgtMi41LjczLW1tMi9h
cmNoL2kzODYvbW0vaW5pdC5jIGxpbnV4LTIuNS9hcmNoL2kzODYvbW0vaW5pdC5jCi0tLSBs
aW51eC0yLjUuNzMtbW0yL2FyY2gvaTM4Ni9tbS9pbml0LmMJMjAwMy0wNy0wMSAxOTo1OToy
OC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNS9hcmNoL2kzODYvbW0vaW5pdC5jCTIw
MDMtMDctMDIgMDA6NDA6MzEuMDAwMDAwMDAwICswMTAwCkBAIC0yMjMsMTMgKzIyMywyNCBA
QAogCXBrbWFwX3BhZ2VfdGFibGUgPSBwdGU7CQogfQogCi12b2lkIF9faW5pdCBvbmVfaGln
aHBhZ2VfaW5pdChzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHBmbiwgaW50IGJhZF9wcHJvKQor
LyoqCisgKiBAcGFyYW0gYmFkCXNldCBvbiByZXR1cm4gdG8gd2hldGhlciB0aGUgcGFnZSBp
cyBiYWQgUkFNCisgKi8KK3ZvaWQgX19pbml0IG9uZV9oaWdocGFnZV9pbml0KHN0cnVjdCBw
YWdlICpwYWdlLCBpbnQgcGZuLCBpbnQgYmFkX3Bwcm8sCisJCQkJX0Jvb2wgKmJhZCkKIHsK
KwkqYmFkID0gMDsKIAlpZiAocGFnZV9pc19yYW0ocGZuKSAmJiAhKGJhZF9wcHJvICYmIHBh
Z2Vfa2lsbHNfcHBybyhwZm4pKSkgewogCQlDbGVhclBhZ2VSZXNlcnZlZChwYWdlKTsKIAkJ
c2V0X2JpdChQR19oaWdobWVtLCAmcGFnZS0+ZmxhZ3MpOwogCQlzZXRfcGFnZV9jb3VudChw
YWdlLCAxKTsKLQkJX19mcmVlX3BhZ2UocGFnZSk7CisjaWZkZWYgQ09ORklHX0JBRFJBTQor
CQlpZiAoUGFnZUJhZChwYWdlKSkKKwkJCSpiYWQgPSAxOworCQllbHNlCisjZWxzZQorCSAJ
CV9fZnJlZV9wYWdlKHBhZ2UpOworI2VuZGlmCiAJCXRvdGFsaGlnaF9wYWdlcysrOwogCX0g
ZWxzZQogCQlTZXRQYWdlUmVzZXJ2ZWQocGFnZSk7CkBAIC0yMzksOCArMjUwLDEwIEBACiB2
b2lkIF9faW5pdCBzZXRfaGlnaG1lbV9wYWdlc19pbml0KGludCBiYWRfcHBybykgCiB7CiAJ
aW50IHBmbjsKLQlmb3IgKHBmbiA9IGhpZ2hzdGFydF9wZm47IHBmbiA8IGhpZ2hlbmRfcGZu
OyBwZm4rKykKLQkJb25lX2hpZ2hwYWdlX2luaXQocGZuX3RvX3BhZ2UocGZuKSwgcGZuLCBi
YWRfcHBybyk7CisJZm9yIChwZm4gPSBoaWdoc3RhcnRfcGZuOyBwZm4gPCBoaWdoZW5kX3Bm
bjsgcGZuKyspIHsKKwkJb25lX2hpZ2hwYWdlX2luaXQocGZuX3RvX3BhZ2UocGZuKSwgcGZu
LCBiYWRfcHBybywgJmJhZCk7CisJCWlmIChiYWQpIGJhZHBhZ2VzKys7CisJfQogCXRvdGFs
cmFtX3BhZ2VzICs9IHRvdGFsaGlnaF9wYWdlczsKIH0KICNlbHNlCkBAIC00MzEsNyArNDQ0
LDcgQEAKIHZvaWQgX19pbml0IG1lbV9pbml0KHZvaWQpCiB7CiAJZXh0ZXJuIGludCBwcHJv
X3dpdGhfcmFtX2J1Zyh2b2lkKTsKLQlpbnQgY29kZXNpemUsIHJlc2VydmVkcGFnZXMsIGRh
dGFzaXplLCBpbml0c2l6ZTsKKwlpbnQgY29kZXNpemUsIHJlc2VydmVkcGFnZXMsIGJhZHBh
Z2VzLCBkYXRhc2l6ZSwgaW5pdHNpemU7CiAJaW50IHRtcDsKIAlpbnQgYmFkX3Bwcm87CiAK
QEAgLTQ2NywxMyArNDgwLDE3IEBACiAJdG90YWxyYW1fcGFnZXMgKz0gX19mcmVlX2FsbF9i
b290bWVtKCk7CiAKIAlyZXNlcnZlZHBhZ2VzID0gMDsKKwliYWRwYWdlcyA9IDA7CiAJZm9y
ICh0bXAgPSAwOyB0bXAgPCBtYXhfbG93X3BmbjsgdG1wKyspCiAJCS8qCi0JCSAqIE9ubHkg
Y291bnQgcmVzZXJ2ZWQgUkFNIHBhZ2VzCisJCSAqIE9ubHkgY291bnQgcmVzZXJ2ZWQgYW5k
IGJhZCBSQU0gcGFnZXMKIAkJICovCiAJCWlmIChwYWdlX2lzX3JhbSh0bXApICYmIFBhZ2VS
ZXNlcnZlZChwZm5fdG9fcGFnZSh0bXApKSkKIAkJCXJlc2VydmVkcGFnZXMrKzsKLQorI2lm
ZGVmIENPTkZJR19CQURSQU0KKwkJaWYgKHBhZ2VfaXNfcmFtKHRtcCkgJiYgUGFnZUJhZChw
Zm5fdG9fcGFnZSh0bXApKSkKKwkJCWJhZHBhZ2VzKys7CisjZW5kaWYKIAlzZXRfaGlnaG1l
bV9wYWdlc19pbml0KGJhZF9wcHJvKTsKIAogCWNvZGVzaXplID0gICh1bnNpZ25lZCBsb25n
KSAmX2V0ZXh0IC0gKHVuc2lnbmVkIGxvbmcpICZfdGV4dDsKQEAgLTQ4NCw2ICs1MDEsMTgg
QEAKIAlrY2xpc3RfYWRkKCZrY29yZV92bWFsbG9jLCAodm9pZCAqKVZNQUxMT0NfU1RBKTsK
IAlyZXR1cm4gMDsKIH0KKworCisjaWZkZWYgQ09ORklHX0JBRFJBTQorCisvKiBHaXZlbiBh
IHBvaW50ZWQtYXQgYWRkcmVzcyBhbmQgYSBtYXNrLCBpbmNyZW1lbnQgdGhlIHBhZ2Ugc28g
dGhhdCB0aGUKKyAqIG1hc2sgaGlkZXMgdGhlIGluY3JlbWVudC4gUmV0dXJuIDAgaWYgbm8g
aW5jcmVtZW50IGlzIHBvc3NpYmxlLgorICovCitzdGF0aWMgaW50IF9faW5pdCBuZXh0X21h
c2tlZF9hZGRyZXNzICh1bnNpZ25lZCBsb25nICphZGRycCwgdW5zaWduZWQgbG9uZyBtYXNr
KQoreworICAgICAgICB1bnNpZ25lZCBsb25nIGluYz0xOworICAgICAgICB1bnNpZ25lZCBs
b25nIG5ld3ZhbCA9ICphZGRycDsKKwl3aGlsZSAoaW5jICYgbWFzaykKKwkJaW5jICs9IGlu
YzsKKyAgICAgICAgd2hpbGUgKGluYyAhPSAwKSB7CisJCW5ld3ZhbCArPSBpbmM7CisJCW5l
d3ZhbCAmPSB+bWFzazsKKwkJbmV3dmFsIHw9ICgoKmFkZHJwKSAmIG1hc2spOworCQlpZiAo
bmV3dmFsID4gKmFkZHJwKSB7CisJCQkqYWRkcnAgPSBuZXd2YWw7CisJCQlyZXR1cm4gMTsK
KwkJfQorCQlkbyB7CisJCQlpbmMgKz0gaW5jOworCQl9IHdoaWxlIChpbmMgJiB+bWFzayk7
CisJCXdoaWxlIChpbmMgJiBtYXNrKQorCQkJaW5jICs9IGluYzsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gMDsKK30KKworCit2b2lkIF9faW5pdCBiYWRyYW1fbWFya3BhZ2VzIChp
bnQgYXJnYywgdW5zaWduZWQgbG9uZyAqYXJndikgeworCXVuc2lnbmVkIGxvbmcgYWRkciwg
bWFzazsKKyAgICAgICAgd2hpbGUgKGFyZ2MtLSA+IDApIHsKKyAgICAgICAgICAgICAgICBh
ZGRyID0gKmFyZ3YrKzsKKyAgICAgICAgICAgICAgICBtYXNrID0gKGFyZ2MtLSA+IDApID8g
KmFyZ3YrKyA6IH4wTDsKKyAgICAgICAgICAgICAgICBtYXNrIHw9IH5QQUdFX01BU0s7CS8v
IE9wdGltYWxpc2F0aW9uCisJCWFkZHIgJj0gbWFzazsJCS8vICBOb3JtYWxpc2F0aW9uCisg
ICAgICAgICAgICAgICAgZG8geworCQkJc3RydWN0IHBhZ2UgKnBnID0gcGh5c190b19wYWdl
KGFkZHIpOworcHJpbnRrICgiJTA1bHggIiwgX19wYShfX3ZhKGFkZHIpKSA+PiBQQUdFX1NI
SUZUKTsKK3ByaW50ayAoIj0lMDVseC8lMDVseCAiLCBwZy1tZW1fbWFwLCBtYXhfbWFwbnIp
OworCQkJLy8gaWYgKFZBTElEX1BBR0UocGcpKSB7CisJCQkJaWYgKFBhZ2VUZXN0YW5kU2V0
QmFkIChwZykpIHsKKwkJCQkJcmVzZXJ2ZV9ib290bWVtIChhZGRyLCBQQUdFX1NJWkUpOwor
cHJpbnRrICgiQkFEICIpOworCQkJCX0KK2Vsc2UgcHJpbnRrICgiQkZSICIpOworCQkJLy8g
fQorLy8gZWxzZSBwcmludGsgKCJJTlYgIik7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAo
bmV4dF9tYXNrZWRfYWRkcmVzcyAoJmFkZHIsbWFzaykpOworICAgICAgICB9Cit9CisKKwor
CisvKioqKnJOIGxpbnV4LTIuNS43My1tbTIvbW0vYm9vdG1lbS5jIGwpOwogCXJldHVybiAw
OwogfQorCisKKyNpZmRlZiBDT05GSUdfQkFEUkFNCisKKy8qIEdpdmVuIGEgcG9pbnRlZC1h
dCBhZGRyZXNzIGFuZCBhIG1hc2ssIGluY3JlbWVudCB0aGUgcGFnZSBzbyB0aGF0IHRoZQor
ICogbWFzayBoaWRlcyB0aGUgaW5jcmVtZW50LiBSZXR1cm4gMCBpZiBubyBpbmNyZW1lbnQg
aXMgcG9zc2libGUuCisgKi8KK3N0YXRpYyBpbnQgX19pbml0IG5leHRfbWFza2VkX2FkZHJl
c3MgKHVuc2lnbmVkIGxvbmcgKmFkZHJwLCB1bnNpZ25lZCBsb25nIG1hc2spCit7CisgICAg
ICAgIHVuc2lnbmVkIGxvbmcgaW5jPTE7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV3dmFs
ID0gKmFkZHJwOworCXdoaWxlIChpbmMgJiBtYXNrKQorCQlpbmMgKz0gaW5jOworICAgICAg
ICB3aGlsZSAoaW5jICE9IDApIHsKKwkJbmV3dmFsICs9IGluYzsKKwkJbmV3dmFsICY9IH5t
YXNrOworCQluZXd2YWwgfD0gKCgqYWRkcnApICYgbWFzayk7CisJCWlmIChuZXd2YWwgPiAq
YWRkcnApIHsKKwkJCSphZGRycCA9IG5ld3ZhbDsKKwkJCXJldHVybiAxOworCQl9CisJCWRv
IHsKKwkJCWluYyArPSBpbmM7CisJCX0gd2hpbGUgKGluYyAmIH5tYXNrKTsKKwkJd2hpbGUg
KGluYyAmIG1hc2spCisJCQlpbmMgKz0gaW5jOworICAgICAgICB9CisgICAgICAgIHJldHVy
biAwOworfQorCisKK3ZvaWQgX19pbml0IGJhZHJhbV9tYXJrcGFnZXMgKGludCBhcmdjLCB1
bnNpZ25lZCBsb25nICphcmd2KSB7CisJdW5zaWduZWQgbG9uZyBhZGRyLCBtYXNrOworICAg
ICAgICB3aGlsZSAoYXJnYy0tID4gMCkgeworICAgICAgICAgICAgICAgIGFkZHIgPSAqYXJn
disrOworICAgICAgICAgICAgICAgIG1hc2sgPSAoYXJnYy0tID4gMCkgPyAqYXJndisrIDog
fjBMOworICAgICAgICAgICAgICAgIG1hc2sgfD0gflBBR0VfTUFTSzsJLy8gT3B0aW1hbGlz
YXRpb24KKwkJYWRkciAmPSBtYXNrOwkJLy8gIE5vcm1hbGlzYXRpb24KKyAgICAgICAgICAg
ICAgICBkbyB7CisJCQlzdHJ1Y3QgcGFnZSAqcGcgPSBwaHlzX3RvX3BhZ2UoYWRkcik7Citw
cmludGsgKCIlMDVseCAiLCBfX3BhKF9fdmEoYWRkcikpID4+IFBBR0VfU0hJRlQpOworcHJp
bnRrICgiPSUwNWx4LyUwNWx4ICIsIHBnLW1lbV9tYXAsIG1heF9tYXBucik7CisJCQkvLyBp
ZiAoVkFMSURfUEFHRShwZykpIHsKKwkJCQlpZiAoUGFnZVRlc3RhbmRTZXRCYWQgKHBnKSkg
eworCQkJCQlyZXNlcnZlX2Jvb3RtZW0gKGFkZHIsIFBBR0VfU0laRSk7CitwcmludGsgKCJC
QUQgIik7CisJCQkJfQorZWxzZSBwcmludGsgKCJCRlIgIik7CisJCQkvLyB9CisvLyBlbHNl
IHByaW50ayAoIklOViAiKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChuZXh0X21hc2tl
ZF9hZGRyZXNzICgmYWRkcixtYXNrKSk7CisgICAgICAgIH0KK30KKworCisKKy8qKioqLDk2
IEBACiAJc2V0dXBfcGVyX3pvbmVfcGFnZXNfbWluKCk7CiAJcmV0dXJuIDA7CiB9CisKKwor
I2lmZGVmIENPTkZJR19CQURSQU0KKworLyogR2l2ZW4gYSBwb2ludGVkLWF0IGFkZHJlc3Mg
YW5kIGEgbWFzaywgaW5jcmVtZW50IHRoZSBwYWdlIHNvIHRoYXQgdGhlCisgKiBtYXNrIGhp
ZGVzIHRoZSBpbmNyZW1lbnQuIFJldHVybiAwIGlmIG5vIGluY3JlbWVudCBpcyBwb3NzaWJs
ZS4KKyAqLworc3RhdGljIGludCBfX2luaXQgbmV4dF9tYXNrZWRfYWRkcmVzcyAodW5zaWdu
ZWQgbG9uZyAqYWRkcnAsIHVuc2lnbmVkIGxvbmcgbWFzaykKK3sKKyAgICAgICAgdW5zaWdu
ZWQgbG9uZyBpbmM9MTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBuZXd2YWwgPSAqYWRkcnA7
CisJd2hpbGUgKGluYyAmIG1hc2spCisJCWluYyArPSBpbmM7CisgICAgICAgIHdoaWxlIChp
bmMgIT0gMCkgeworCQluZXd2YWwgKz0gaW5jOworCQluZXd2YWwgJj0gfm1hc2s7CisJCW5l
d3ZhbCB8PSAoKCphZGRycCkgJiBtYXNrKTsKKwkJaWYgKG5ld3ZhbCA+ICphZGRycCkgewor
CQkJKmFkZHJwID0gbmV3dmFsOworCQkJcmV0dXJuIDE7CisJCX0KKwkJZG8geworCQkJaW5j
ICs9IGluYzsKKwkJfSB3aGlsZSAoaW5jICYgfm1hc2spOworCQl3aGlsZSAoaW5jICYgbWFz
aykKKwkJCWluYyArPSBpbmM7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7Cit9CisK
Kwordm9pZCBfX2luaXQgYmFkcmFtX21hcmtwYWdlcyAoaW50IGFyZ2MsIHVuc2lnbmVkIGxv
bmcgKmFyZ3YpIHsKKwl1bnNpZ25lZCBsb25nIGFkZHIsIG1hc2s7CisgICAgICAgIHdoaWxl
IChhcmdjLS0gPiAwKSB7CisgICAgICAgICAgICAgICAgYWRkciA9ICphcmd2Kys7CisgICAg
ICAgICAgICAgICAgbWFzayA9IChhcmdjLS0gPiAwKSA/ICphcmd2KysgOiB+MEw7CisgICAg
ICAgICAgICAgICAgbWFzayB8PSB+UEFHRV9NQVNLOwkvLyBPcHRpbWFsaXNhdGlvbgorCQlh
ZGRyICY9IG1hc2s7CQkvLyAgTm9ybWFsaXNhdGlvbgorICAgICAgICAgICAgICAgIGRvIHsK
KwkJCXN0cnVjdCBwYWdlICpwZyA9IHBoeXNfdG9fcGFnZShhZGRyKTsKK3ByaW50ayAoIiUw
NWx4ICIsIF9fcGEoX192YShhZGRyKSkgPj4gUEFHRV9TSElGVCk7CitwcmludGsgKCI9JTA1
bHgvJTA1bHggIiwgcGctbWVtX21hcCwgbWF4X21hcG5yKTsKKwkJCS8vIGlmIChWQUxJRF9Q
QUdFKHBnKSkgeworCQkJCWlmIChQYWdlVGVzdGFuZFNldEJhZCAocGcpKSB7CisJCQkJCXJl
c2VydmVfYm9vdG1lbSAoYWRkciwgUEFHRV9TSVpFKTsKK3ByaW50ayAoIkJBRCAiKTsKKwkJ
CQl9CitlbHNlIHByaW50ayAoIkJGUiAiKTsKKwkJCS8vIH0KKy8vIGVsc2UgcHJpbnRrICgi
SU5WICIpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKG5leHRfbWFza2VkX2FkZHJlc3Mg
KCZhZGRyLG1hc2spKTsKKyAgICAgICAgfQorfQorCisKKworLyoqKioqKioqKioqIENPTkZJ
R19CQURSQU06IENVU1RPTUlTQUJMRSBTRUNUSU9OIFNUQVJUUyBIRVJFICoqKioqKioqKioq
KioqKioqKi8KKworCisvLyBFbnRlciB5b3VyIGN1c3RvbSBCYWRSQU0gcGF0dGVybnMgaGVy
ZSBhcyBwYWlycyBvZiB1bnNpZ25lZCBsb25nIGludGVnZXJzLgorLy8gRm9yIG1vcmUgaW5m
b3JtYXRpb24gb24gdGhlc2UgRi9NIHBhaXJzLCByZWZlciB0byBEb2N1bWVudGF0aW9uL2Jh
ZHJhbS50eHQKKworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2RldmluaXRkYXRhIGJhZHJh
bV9jdXN0b21bXSA9IHsKKwkwLAkvLyBOdW1iZXIgb2YgbG9uZ3dvcmRzIHRoYXQgZm9sbG93
LCBhcyBGL00gcGFpcnMKK307CisKKworLyoqKioqKioqKioqIENPTkZJR19CQURSQU06IENV
U1RPTUlTQUJMRSBTRUNUSU9OIEVORFMgSEVSRSAqKioqKioqKioqKioqKioqKioqKi8KKwor
CisKK3N0YXRpYyBpbnQgX19pbml0IGJhZHJhbV9zZXR1cCAoY2hhciAqc3RyKQoreworCXVu
c2lnbmVkIGxvbmcgb3B0c1szXTsKKwlpZiAoIW1lbV9tYXApIEJVRygpOworcHJpbnRrICgi
UEFHRV9PRkZTRVQ9MHglMDhseFxuIiwgUEFHRV9PRkZTRVQpOworcHJpbnRrICgiQmFkUkFN
IG9wdGlvbiBpcyAlc1xuIiwgc3RyKTsKKwlpZiAoKnN0cisrID09ICc9JykKKwkJd2hpbGUg
KHN0cj1nZXRfb3B0aW9ucyAoc3RyLCAzLCAoaW50ICopIG9wdHMpLCAqb3B0cykgeworcHJp
bnRrICgiICAgLS0+IG1hcmtpbmcgMHglMDhseCwgMHglMDhseCAgWyVsZF1cbiIsIG9wdHNb
MV0sIG9wdHNbMl0sIG9wdHNbMF0pOworCQkJYmFkcmFtX21hcmtwYWdlcyAoKm9wdHMsIG9w
dHMrMSk7CisJCQlpZiAoKm9wdHM9PTEpCisJCQkJYnJlYWs7CisJCX07CisJYmFkcmFtX21h
cmtwYWdlcyAoKmJhZHJhbV9jdXN0b20sIGJhZHJhbV9jdXN0b20rMSk7CisJcmV0dXJuIDA7
Cit9CisKK19fc2V0dXAoImJhZHJhbSIsIGJhZHJhbV9zZXR1cCk7CisKKyNlbmRpZiAvKiBD
T05GSUdfQkFEUkFNICovCisK
--=_courier-20771-1057116978-0001-2--