Re: io_apic changes trashes partition table

Linus Torvalds (torvalds@transmeta.com)
Sat, 3 Oct 1998 11:24:09 -0700 (PDT)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--17484290-484241277-907439049=:3311
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Sat, 3 Oct 1998, Harald Hoyer wrote:
>
> could you please revert the io_apic changes until 2.1.122.
> 123 and pre124-2 cause my Dual Tyan Tomcat III to not sending any interrupts.
> Strangely modifying my Masterboot record in a way that kernels 2.1.xx crashes at
> partition check. I have to boot with 2.1.35 an reinstall lilo to have the
> ability to boot with 2.1.122.
> Reverting the changes made in io_apic and 2.1.124 is fine....

I don't want to revert them outright, because they definitely work better
on several machines (not plain 2.1.123 - which is bad - but 2.1.124-2 is
definitely a step in the right direction). In particular, the new IO-APIC
code allows us to remove a test for broken MP-tables, because it appears
that the tables weren't broken after all, it was us that did the wrong
thing and thus thought they were broken.

Could you send me the output of "mptable.c" (attached) on you machine?

Linus

--17484290-484241277-907439049=:3311
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="mptable.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.981003112409.3311G@penguin.transmeta.com>
Content-Description:

LyoNCiAqIENvcHlyaWdodCAoYykgMTk5NiwgYnkgU3RldmUgUGFzc2UNCiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogaGFja2VkIHRvIG1ha2Ug
aXQgd29yayBpbiB1c2Vyc3BhY2UgTGludXggYnkgSW5nbyBNb2xuYXIsIHNh
bWUgY29weXJpZ2h0DQogKg0KICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQog
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAqIGFyZSBtZXQ6DQogKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodA0KICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICog
Mi4gVGhlIG5hbWUgb2YgdGhlIGRldmVsb3BlciBtYXkgTk9UIGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzDQogKiAgICBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4NCiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EDQogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQogKiBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQ0KICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwN
CiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUDQogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQogKiBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4NCiAqDQog
KiAgICAgICRJZDogbXB0YWJsZS5jLHYgMS41IDE5OTcvMDYvMjMgMjA6MjM6
NDQgZnNtcCBFeHAgJA0KICovDQoNCi8qDQogKiBtcHRhYmxlLmMNCiAqLw0K
DQojZGVmaW5lIFZNQUpPUiAgICAgICAgICAgICAgICAgIDINCiNkZWZpbmUg
Vk1JTk9SICAgICAgICAgICAgICAgICAgMA0KI2RlZmluZSBWREVMVEEgICAg
ICAgICAgICAgICAgICAxMg0KDQovKg0KICogdGhpcyB3aWxsIGNhdXNlIHRo
ZSByYXcgbXAgdGFibGUgdG8gYmUgZHVtcGVkIHRvIC90bXAvbXBkdW1wDQog
Kg0KI2RlZmluZSBSQVdfRFVNUA0KICovDQoNCiNkZWZpbmUgTVBfU0lHICAg
ICAgICAgICAgICAgICAgMHg1ZjUwNGQ1ZiAgICAgIC8qIF9NUF8gKi8NCiNk
ZWZpbmUgRVhURU5ERURfUFJPQ0VTU0lOR19SRUFEWQ0KI2RlZmluZSBPRU1f
UFJPQ0VTU0lOR19SRUFEWV9OT1QNCg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQoj
aW5jbHVkZSA8ZmNudGwuaD4NCiNpbmNsdWRlIDx1bmlzdGQuaD4NCiNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4NCg0KI2RlZmluZSBMSU5VWCAxDQojaWYgTElO
VVgNCnR5cGVkZWYgdW5zaWduZWQgaW50IHZtX29mZnNldF90Ow0KI2Vsc2UN
CiNpbmNsdWRlIDxtYWNoaW5lL3R5cGVzLmg+DQojZW5kaWYNCg0KDQojZGVm
aW5lIFNFUF9MSU5FIFwNCiJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCi0tLVxuIg0KDQojZGVmaW5lIFNFUF9MSU5FMiBcDQoiXG49PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo9PT1cbiINCg0KLyogRUJE
QSBpcyBAIDQwOjBlIGluIHJlYWwtbW9kZSB0ZXJtcyAqLw0KI2RlZmluZSBF
QkRBX1BPSU5URVIgICAgICAgICAgICAweDA0MGUgICAgICAgICAgLyogbG9j
YXRpb24gb2YgRUJEQSBwb2ludGVyICovDQoNCi8qIENNT1MgJ3RvcCBvZiBt
ZW0nIGlzIEAgNDA6MTMgaW4gcmVhbC1tb2RlIHRlcm1zICovDQojZGVmaW5l
IFRPUE9GTUVNX1BPSU5URVIgICAgICAgIDB4MDQxMyAgICAgICAgICAvKiBC
SU9TOiBiYXNlIG1lbW9yeSBzaXplICovDQoNCiNkZWZpbmUgREVGQVVMVF9U
T1BPRk1FTSAgICAgICAgMHhhMDAwMA0KDQojZGVmaW5lIEJJT1NfQkFTRSAg
ICAgICAgICAgICAgIDB4ZjAwMDANCiNkZWZpbmUgQklPU19CQVNFMiAgICAg
ICAgICAgICAgMHhlMDAwMA0KI2RlZmluZSBCSU9TX1NJWkUgICAgICAgICAg
ICAgICAweDEwMDAwDQojZGVmaW5lIE9ORV9LQllURSAgICAgICAgICAgICAg
IDEwMjQNCg0KI2RlZmluZSBHUk9QRV9BUkVBMSAgICAgICAgICAgICAweDgw
MDAwDQojZGVmaW5lIEdST1BFX0FSRUEyICAgICAgICAgICAgIDB4OTAwMDAN
CiNkZWZpbmUgR1JPUEVfU0laRSAgICAgICAgICAgICAgMHgxMDAwMA0KDQoj
ZGVmaW5lIFBST0NFTlRSWV9GTEFHX0VOICAgICAgIDB4MDENCiNkZWZpbmUg
UFJPQ0VOVFJZX0ZMQUdfQlAgICAgICAgMHgwMg0KI2RlZmluZSBJT0FQSUNF
TlRSWV9GTEFHX0VOICAgICAweDAxDQoNCiNkZWZpbmUgTUFYUE5TVFIgICAg
ICAgICAgICAgICAgMTMyDQoNCmVudW0gYnVzVHlwZXMgew0KICAgIENCVVMg
PSAxLA0KICAgIENCVVNJSSA9IDIsDQogICAgRUlTQSA9IDMsDQogICAgSVNB
ID0gNiwNCiAgICBQQ0kgPSAxMywNCiAgICBYUFJFU1MgPSAxOCwNCiAgICBN
QVhfQlVTVFlQRSA9IDE4LA0KICAgIFVOS05PV05fQlVTVFlQRSA9IDB4ZmYN
Cn07DQoNCnR5cGVkZWYgc3RydWN0IEJVU1RZUEVOQU1FIHsNCiAgICB1X2No
YXIgICAgICB0eXBlOw0KICAgIGNoYXIgICAgICAgIG5hbWVbIDcgXTsNCn0g
YnVzVHlwZU5hbWU7DQoNCnN0YXRpYyBidXNUeXBlTmFtZSBidXNUeXBlVGFi
bGVbXSA9DQp7DQogICAgeyBDQlVTLCAgICAgICAgICAgICAiQ0JVUyIgICB9
LA0KICAgIHsgQ0JVU0lJLCAgICAgICAgICAgIkNCVVNJSSIgfSwNCiAgICB7
IEVJU0EsICAgICAgICAgICAgICJFSVNBIiAgIH0sDQogICAgeyBVTktOT1dO
X0JVU1RZUEUsICAiLS0tIiAgICB9LA0KICAgIHsgVU5LTk9XTl9CVVNUWVBF
LCAgIi0tLSIgICAgfSwNCiAgICB7IElTQSwgICAgICAgICAgICAgICJJU0Ei
ICAgIH0sDQogICAgeyBVTktOT1dOX0JVU1RZUEUsICAiLS0tIiAgICB9LA0K
ICAgIHsgVU5LTk9XTl9CVVNUWVBFLCAgIi0tLSIgICAgfSwNCiAgICB7IFVO
S05PV05fQlVTVFlQRSwgICItLS0iICAgIH0sDQogICAgeyBVTktOT1dOX0JV
U1RZUEUsICAiLS0tIiAgICB9LA0KICAgIHsgVU5LTk9XTl9CVVNUWVBFLCAg
Ii0tLSIgICAgfSwNCiAgICB7IFVOS05PV05fQlVTVFlQRSwgICItLS0iICAg
IH0sDQogICAgeyBQQ0ksICAgICAgICAgICAgICAiUENJIiAgICB9LA0KICAg
IHsgVU5LTk9XTl9CVVNUWVBFLCAgIi0tLSIgICAgfSwNCiAgICB7IFVOS05P
V05fQlVTVFlQRSwgICItLS0iICAgIH0sDQogICAgeyBVTktOT1dOX0JVU1RZ
UEUsICAiLS0tIiAgICB9LA0KICAgIHsgVU5LTk9XTl9CVVNUWVBFLCAgIi0t
LSIgICAgfSwNCiAgICB7IFVOS05PV05fQlVTVFlQRSwgICItLS0iICAgIH0s
DQogICAgeyBVTktOT1dOX0JVU1RZUEUsICAiLS0tIiAgICB9DQp9Ow0KDQpj
aGFyKiB3aGVyZVN0cmluZ3NbXSA9IHsNCiAgICAiRXh0ZW5kZWQgQklPUyBE
YXRhIEFyZWEiLA0KICAgICJCSU9TIHRvcCBvZiBtZW1vcnkiLA0KICAgICJE
ZWZhdWx0IHRvcCBvZiBtZW1vcnkiLA0KICAgICJCSU9TIiwNCiAgICAiRXh0
ZW5kZWQgQklPUyIsDQogICAgIkdST1BFIEFSRUEgIzEiLA0KICAgICJHUk9Q
RSBBUkVBICMyIg0KfTsNCg0KdHlwZWRlZiBzdHJ1Y3QgVEFCTEVfRU5UUlkg
ew0KICAgIHVfY2hhciAgICAgIHR5cGU7DQogICAgdV9jaGFyICAgICAgbGVu
Z3RoOw0KICAgIGNoYXIgICAgICAgIG5hbWVbIDMyIF07DQp9IHRhYmxlRW50
cnk7DQoNCnRhYmxlRW50cnkgYmFzZXRhYmxlRW50cnlUeXBlc1tdID0NCnsN
CiAgICB7IDAsIDIwLCAiUHJvY2Vzc29yIiB9LA0KICAgIHsgMSwgIDgsICJC
dXMiIH0sDQogICAgeyAyLCAgOCwgIkkvTyBBUElDIiB9LA0KICAgIHsgMywg
IDgsICJJL08gSU5UIiB9LA0KICAgIHsgNCwgIDgsICJMb2NhbCBJTlQiIH0N
Cn07DQoNCnRhYmxlRW50cnkgZXh0ZW5kZWR0YWJsZUVudHJ5VHlwZXNbXSA9
DQp7DQogICAgeyAxMjgsIDIwLCAiU3lzdGVtIEFkZHJlc3MgU3BhY2UiIH0s
DQogICAgeyAxMjksICA4LCAiQnVzIEhlaXJhcmNoeSIgfSwNCiAgICB7IDEz
MCwgIDgsICJDb21wYXRpYmlsaXR5IEJ1cyBBZGRyZXNzIiB9DQp9Ow0KDQov
KiBNUCBGbG9hdGluZyBQb2ludGVyIFN0cnVjdHVyZSAqLw0KdHlwZWRlZiBz
dHJ1Y3QgTVBGUFMgew0KICAgIGNoYXIgICAgICAgIHNpZ25hdHVyZVsgNCBd
Ow0KICAgIHZvaWQqICAgICAgIHBhcDsNCiAgICB1X2NoYXIgICAgICBsZW5n
dGg7DQogICAgdV9jaGFyICAgICAgc3BlY19yZXY7DQogICAgdV9jaGFyICAg
ICAgY2hlY2tzdW07DQogICAgdV9jaGFyICAgICAgbXBmYjE7DQogICAgdV9j
aGFyICAgICAgbXBmYjI7DQogICAgdV9jaGFyICAgICAgbXBmYjM7DQogICAg
dV9jaGFyICAgICAgbXBmYjQ7DQogICAgdV9jaGFyICAgICAgbXBmYjU7DQp9
IG1wZnBzX3Q7DQoNCi8qIE1QIENvbmZpZ3VyYXRpb24gVGFibGUgSGVhZGVy
ICovDQp0eXBlZGVmIHN0cnVjdCBNUENUSCB7DQogICAgY2hhciAgICAgICAg
c2lnbmF0dXJlWyA0IF07DQogICAgdV9zaG9ydCAgICAgYmFzZV90YWJsZV9s
ZW5ndGg7DQogICAgdV9jaGFyICAgICAgc3BlY19yZXY7DQogICAgdV9jaGFy
ICAgICAgY2hlY2tzdW07DQogICAgdV9jaGFyICAgICAgb2VtX2lkWyA4IF07
DQogICAgdV9jaGFyICAgICAgcHJvZHVjdF9pZFsgMTIgXTsNCiAgICB2b2lk
KiAgICAgICBvZW1fdGFibGVfcG9pbnRlcjsNCiAgICB1X3Nob3J0ICAgICBv
ZW1fdGFibGVfc2l6ZTsNCiAgICB1X3Nob3J0ICAgICBlbnRyeV9jb3VudDsN
CiAgICB2b2lkKiAgICAgICBhcGljX2FkZHJlc3M7DQogICAgdV9zaG9ydCAg
ICAgZXh0ZW5kZWRfdGFibGVfbGVuZ3RoOw0KICAgIHVfY2hhciAgICAgIGV4
dGVuZGVkX3RhYmxlX2NoZWNrc3VtOw0KICAgIHVfY2hhciAgICAgIHJlc2Vy
dmVkOw0KfSBtcGN0aF90Ow0KDQoNCnR5cGVkZWYgc3RydWN0IFBST0NFTlRS
WSB7DQogICAgdV9jaGFyICAgICAgdHlwZTsNCiAgICB1X2NoYXIgICAgICBh
cGljSUQ7DQogICAgdV9jaGFyICAgICAgYXBpY1ZlcnNpb247DQogICAgdV9j
aGFyICAgICAgY3B1RmxhZ3M7DQogICAgdV9sb25nICAgICAgY3B1U2lnbmF0
dXJlOw0KICAgIHVfbG9uZyAgICAgIGZlYXR1cmVGbGFnczsNCiAgICB1X2xv
bmcgICAgICByZXNlcnZlZDE7DQogICAgdV9sb25nICAgICAgcmVzZXJ2ZWQy
Ow0KfSBQcm9jRW50cnk7DQoNCnR5cGVkZWYgc3RydWN0IEJVU0VOVFJZIHsN
CiAgICB1X2NoYXIgICAgICB0eXBlOw0KICAgIHVfY2hhciAgICAgIGJ1c0lE
Ow0KICAgIGNoYXIgICAgICAgIGJ1c1R5cGVbIDYgXTsNCn0gQnVzRW50cnk7
DQoNCnR5cGVkZWYgc3RydWN0IElPQVBJQ0VOVFJZIHsNCiAgICB1X2NoYXIg
ICAgICB0eXBlOw0KICAgIHVfY2hhciAgICAgIGFwaWNJRDsNCiAgICB1X2No
YXIgICAgICBhcGljVmVyc2lvbjsNCiAgICB1X2NoYXIgICAgICBhcGljRmxh
Z3M7DQogICAgdm9pZCogICAgICAgYXBpY0FkZHJlc3M7DQp9IElPQXBpY0Vu
dHJ5Ow0KDQp0eXBlZGVmIHN0cnVjdCBJTlRFTlRSWSB7DQogICAgdV9jaGFy
ICAgICAgdHlwZTsNCiAgICB1X2NoYXIgICAgICBpbnRUeXBlOw0KICAgIHVf
c2hvcnQgICAgIGludEZsYWdzOw0KICAgIHVfY2hhciAgICAgIHNyY0J1c0lE
Ow0KICAgIHVfY2hhciAgICAgIHNyY0J1c0lSUTsNCiAgICB1X2NoYXIgICAg
ICBkc3RBcGljSUQ7DQogICAgdV9jaGFyICAgICAgZHN0QXBpY0lOVDsNCn0g
SW50RW50cnk7DQoNCg0KLyoNCiAqIGV4dGVuZGVkIGVudHJ5IHR5cGUgc3Ry
dWN0dXJlcw0KICovDQoNCnR5cGVkZWYgc3RydWN0IFNBU0VOVFJZIHsNCiAg
ICB1X2NoYXIgICAgICB0eXBlOw0KICAgIHVfY2hhciAgICAgIGxlbmd0aDsN
CiAgICB1X2NoYXIgICAgICBidXNJRDsNCiAgICB1X2NoYXIgICAgICBhZGRy
ZXNzVHlwZTsNCiAgICB1X2ludDY0X3QgICBhZGRyZXNzQmFzZTsNCiAgICB1
X2ludDY0X3QgICBhZGRyZXNzTGVuZ3RoOw0KfSBTYXNFbnRyeTsNCg0KDQp0
eXBlZGVmIHN0cnVjdCBCSERFTlRSWSB7DQogICAgdV9jaGFyICAgICAgdHlw
ZTsNCiAgICB1X2NoYXIgICAgICBsZW5ndGg7DQogICAgdV9jaGFyICAgICAg
YnVzSUQ7DQogICAgdV9jaGFyICAgICAgYnVzSW5mbzsNCiAgICB1X2NoYXIg
ICAgICBidXNQYXJlbnQ7DQogICAgdV9jaGFyICAgICAgcmVzZXJ2ZWRbIDMg
XTsNCn0gQmhkRW50cnk7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgQ0JBU01FTlRS
WSB7DQogICAgdV9jaGFyICAgICAgdHlwZTsNCiAgICB1X2NoYXIgICAgICBs
ZW5ndGg7DQogICAgdV9jaGFyICAgICAgYnVzSUQ7DQogICAgdV9jaGFyICAg
ICAgYWRkcmVzc01vZDsNCiAgICB1X2ludCAgICAgICBwcmVkZWZpbmVkUmFu
Z2U7DQp9IENiYXNtRW50cnk7DQoNCg0KDQpzdGF0aWMgdm9pZCBhcGljX3By
b2JlKCB2bV9vZmZzZXRfdCogcGFkZHIsIGludCogd2hlcmUgKTsNCg0Kc3Rh
dGljIHZvaWQgTVBDb25maWdEZWZhdWx0KCBpbnQgZmVhdHVyZUJ5dGUgKTsN
Cg0Kc3RhdGljIGludCBNUEZsb2F0aW5nUG9pbnRlciggdm1fb2Zmc2V0X3Qg
cGFkZHIsIGludCB3aGVyZSwgbXBmcHNfdCogbXBmcHMgKTsNCnN0YXRpYyB2
b2lkIE1QQ29uZmlnVGFibGVIZWFkZXIoIHZvaWQqIHBhcCApOw0KDQpzdGF0
aWMgaW50IHJlYWRUeXBlKCB2b2lkICk7DQpzdGF0aWMgdm9pZCBzZWVrRW50
cnkoIHZtX29mZnNldF90IGFkZHIgKTsNCnN0YXRpYyB2b2lkIHJlYWRFbnRy
eSggdm9pZCogZW50cnksIGludCBzaXplICk7DQoNCnN0YXRpYyB2b2lkIHBy
b2Nlc3NvckVudHJ5KCB2b2lkICk7DQpzdGF0aWMgdm9pZCBidXNFbnRyeSgg
dm9pZCApOw0Kc3RhdGljIHZvaWQgaW9BcGljRW50cnkoIHZvaWQgKTsNCnN0
YXRpYyB2b2lkIGludEVudHJ5KCB2b2lkICk7DQoNCnN0YXRpYyB2b2lkIHNh
c0VudHJ5KCB2b2lkICk7DQpzdGF0aWMgdm9pZCBiaGRFbnRyeSggdm9pZCAp
Ow0Kc3RhdGljIHZvaWQgY2Jhc21FbnRyeSggdm9pZCApOw0KDQpzdGF0aWMg
dm9pZCBkb09wdGlvbkxpc3QoIHZvaWQgKTsNCnN0YXRpYyB2b2lkIGRvRG1l
c2coIHZvaWQgKTsNCnN0YXRpYyB2b2lkIHBuc3RyKCBjaGFyKiBzLCBpbnQg
YyApOw0KDQovKiBnbG9iYWwgZGF0YSAqLw0KaW50ICAgICBwZmQ7ICAgICAg
ICAgICAgLyogcGh5c2ljYWwgL2Rldi9tZW0gZmQgKi8NCg0KaW50ICAgICBi
dXNzZXNbIDE2IF07DQppbnQgICAgIGFwaWNzWyAxNiBdOw0KDQppbnQgICAg
IG5jcHU7DQppbnQgICAgIG5idXM7DQppbnQgICAgIG5hcGljOw0KaW50ICAg
ICBuaW50cjsNCg0KaW50ICAgICBkbWVzZzsNCmludCAgICAgZ3JvcGU7DQpp
bnQgICAgIHZlcmJvc2U7DQoNCnN0YXRpYyB2b2lkDQp1c2FnZSggdm9pZCAp
DQp7DQogICAgZnByaW50Ziggc3RkZXJyLCAiXG51c2FnZTogbXB0YWJsZSBb
LWhlbHBdWy1kbWVzZ11bLXZlcmJvc2VdXG4iICk7DQogICAgZnByaW50Zigg
c3RkZXJyLCAid2hlcmU6XG4iICk7DQogICAgZnByaW50Ziggc3RkZXJyLCAi
ICAnLWRtZXNnJyBpbmNsdWRlcyBhIGRtZXNnIGR1bXBcbiIgKTsNCiAgICBm
cHJpbnRmKCBzdGRlcnIsICIgICctZ3JvcGUnIGxvb2tzIGluIGFyZWFzIGl0
IHNob3VsZG4ndCBORUVEIHRvXG4iICk7DQogICAgZnByaW50Ziggc3RkZXJy
LCAiICAnLWhlbHAnIHByaW50cyB0aGlzIG1lc3NhZ2UgYW5kIGV4aXRzXG4i
ICk7DQogICAgZnByaW50Ziggc3RkZXJyLCAiICAnLXZlcmJvc2UnIHByaW50
cyBleHRyYSBpbmZvXG4iICk7DQogICAgZXhpdCggMCApOw0KfQ0KDQovKg0K
ICoNCiAqLw0KaW50DQptYWluKCBpbnQgYXJnYywgY2hhciAqYXJndltdICkN
CnsNCiAgICB2bV9vZmZzZXRfdCBwYWRkcjsNCiAgICBpbnQgICAgICAgICB3
aGVyZTsNCiAgICBtcGZwc190ICAgICBtcGZwczsNCiAgICBpbnQgICAgICAg
ICBkZWZhdWx0Q29uZmlnOw0KDQogICAgZXh0ZXJuIGNoYXIqIG9wdGFyZzsN
CiAgICBleHRlcm4gaW50ICBvcHRpbmQ7DQojaWYgTElOVVgNCiAgICBleHRl
cm4gaW50IG9wdHJlc2V0Ow0KI2VuZGlmDQogICAgaW50ICAgICAgICAgY2g7
DQoNCiAgICAvKiBhbm5vdW5jZSBvdXJzZWx2ZXMgKi8NCiAgICBwdXRzKCBT
RVBfTElORTIgKTsNCg0KICAgIHByaW50ZiggIk1QVGFibGUsIHZlcnNpb24g
JWQuJWQuJWRcbiIsIFZNQUpPUiwgVk1JTk9SLCBWREVMVEEgKTsNCg0KICAg
IHdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgImQ6ZzpoOnY6Iikp
ICE9IEVPRikgew0KICAgICAgICBzd2l0Y2goY2gpIHsNCiAgICAgICAgY2Fz
ZSAnZCc6DQogICAgICAgICAgICBpZiAoIHN0cmNtcCggb3B0YXJnLCAibWVz
ZyIpID09IDAgKQ0KICAgICAgICAgICAgICAgIGRtZXNnID0gMTsNCiAgICAg
ICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBkbWVzZyA9IDA7DQogICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnaCc6DQogICAgICAgICAg
ICBpZiAoIHN0cmNtcCggb3B0YXJnLCAiZWxwIikgPT0gMCApDQogICAgICAg
ICAgICAgICAgdXNhZ2UoKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAg
ICBjYXNlICdnJzoNCiAgICAgICAgICAgIGlmICggc3RyY21wKCBvcHRhcmcs
ICJyb3BlIikgPT0gMCApDQogICAgICAgICAgICAgICAgZ3JvcGUgPSAxOw0K
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJ3YnOg0KICAgICAg
ICAgICAgaWYgKCBzdHJjbXAoIG9wdGFyZywgImVyYm9zZSIpID09IDAgKQ0K
ICAgICAgICAgICAgICAgIHZlcmJvc2UgPSAxOw0KICAgICAgICAgICAgYnJl
YWs7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICB1c2FnZSgpOw0K
ICAgICAgICB9DQogICAgICAgIGFyZ2MgLT0gb3B0aW5kOw0KICAgICAgICBh
cmd2ICs9IG9wdGluZDsNCiNpZiAhTElOVVgNCiAgICAgICAgb3B0cmVzZXQg
PSAxOw0KI2VuZGlmDQogICAgICAgIG9wdGluZCA9IDA7DQogICAgfQ0KDQog
ICAgLyogb3BlbiBwaHlzaWNhbCBtZW1vcnkgZm9yIGFjY2VzcyB0byBNUCBz
dHJ1Y3R1cmVzICovDQogICAgaWYgKCAocGZkID0gb3BlbiggIi9kZXYvbWVt
IiwgT19SRE9OTFkgKSkgPCAwICkgew0KICAgICAgICBwZXJyb3IoICJtZW0g
b3BlbiIgKTsNCiAgICAgICAgZXhpdCggMSApOw0KICAgIH0NCg0KICAgIC8q
IHByb2JlIGZvciBNUCBzdHJ1Y3R1cmVzICovDQogICAgYXBpY19wcm9iZSgg
JnBhZGRyLCAmd2hlcmUgKTsNCiAgICBpZiAoIHdoZXJlIDw9IDAgKSB7DQog
ICAgICAgIGZwcmludGYoIHN0ZGVyciwgIlxuIE1QIEZQUyBOT1QgZm91bmQs
XG4iICk7DQogICAgICAgIGZwcmludGYoIHN0ZGVyciwgIiBzdWdnZXN0IHRy
eWluZyAtZ3JvcGUgb3B0aW9uISEhXG5cbiIgKTsNCiAgICAgICAgcmV0dXJu
IDE7DQogICAgfQ0KDQogICAgaWYgKCB2ZXJib3NlICkNCiAgICAgICAgcHJp
bnRmKCAiXG4gTVAgRlBTIGZvdW5kIGluICVzIEAgcGh5c2ljYWwgYWRkcjog
MHglMDh4XG4iLA0KICAgICAgICAgICAgICB3aGVyZVN0cmluZ3NbIHdoZXJl
IC0gMSBdLCBwYWRkciApOw0KDQogICAgcHV0cyggU0VQX0xJTkUgKTsNCg0K
ICAgIC8qIGFuYWx5emUgdGhlIE1QIEZsb2F0aW5nIFBvaW50ZXIgU3RydWN0
dXJlICovDQogICAgTVBGbG9hdGluZ1BvaW50ZXIoIHBhZGRyLCB3aGVyZSwg
Jm1wZnBzICk7DQoNCiAgICBwdXRzKCBTRVBfTElORSApOw0KDQogICAgLyog
Y2hlY2sgd2hldGhlciBhbiBNUCBjb25maWcgdGFibGUgZXhpc3RzICovDQog
ICAgaWYgKCBkZWZhdWx0Q29uZmlnID0gbXBmcHMubXBmYjEgKQ0KICAgICAg
ICBNUENvbmZpZ0RlZmF1bHQoIGRlZmF1bHRDb25maWcgKTsNCiAgICBlbHNl
DQogICAgICAgIE1QQ29uZmlnVGFibGVIZWFkZXIoIG1wZnBzLnBhcCApOw0K
DQogICAgLyogb3V0cHV0IHN5c3RlbSBjb25maWcgKi8NCiAgICBkb0RtZXNn
KCk7DQoNCiAgICBwdXRzKCBTRVBfTElORTIgKTsNCg0KICAgIHJldHVybiAw
Ow0KfQ0KDQoNCi8qDQogKiBzZXQgUEhZU0lDQUwgYWRkcmVzcyBvZiBNUCBm
bG9hdGluZyBwb2ludGVyIHN0cnVjdHVyZQ0KICovDQojZGVmaW5lIE5FWFQo
WCkgICAgICAgICAoKFgpICs9IDQpDQpzdGF0aWMgdm9pZA0KYXBpY19wcm9i
ZSggdm1fb2Zmc2V0X3QqIHBhZGRyLCBpbnQqIHdoZXJlICkNCnsNCiAgICAv
Kg0KICAgICAqIGMgcmV3cml0ZSBvZiBhcGljX3Byb2JlKCkgYnkgSmFjayBG
LiBWb2dlbA0KICAgICAqLw0KDQogICAgaW50ICAgICAgICAgeDsNCiAgICB1
X3Nob3J0ICAgICBzZWdtZW50Ow0KICAgIHZtX29mZnNldF90IHRhcmdldDsN
CiAgICB1X2ludCAgICAgICBidWZmZXJbIEJJT1NfU0laRSAvIHNpemVvZigg
aW50ICkgXTsNCg0KICAgIGlmICggdmVyYm9zZSApDQogICAgICAgIHByaW50
ZiggIlxuIiApOw0KDQogICAgLyogc2VhcmNoIEV4dGVuZGVkIEJpb3MgRGF0
YSBBcmVhLCBpZiBwcmVzZW50ICovDQogICAgaWYgKCB2ZXJib3NlICkNCiAg
ICAgICAgcHJpbnRmKCAiIGxvb2tpbmcgZm9yIEVCREEgcG9pbnRlciBAIDB4
JTA0eCwgIiwgRUJEQV9QT0lOVEVSICk7DQogICAgc2Vla0VudHJ5KCAodm1f
b2Zmc2V0X3QpRUJEQV9QT0lOVEVSICk7DQogICAgcmVhZEVudHJ5KCAmc2Vn
bWVudCwgMiApOw0KICAgIGlmICggc2VnbWVudCApIHsgICAgICAgICAgICAg
ICAgLyogc2VhcmNoIEVCREEgKi8NCiAgICAgICAgdGFyZ2V0ID0gKHZtX29m
ZnNldF90KXNlZ21lbnQgPDwgNDsNCiAgICAgICAgaWYgKCB2ZXJib3NlICkN
CiAgICAgICAgICAgIHByaW50ZiggImZvdW5kLCBzZWFyY2hpbmcgRUJEQSBA
IDB4JTA4eFxuIiwgdGFyZ2V0ICk7DQogICAgICAgIHNlZWtFbnRyeSggdGFy
Z2V0ICk7DQogICAgICAgIHJlYWRFbnRyeSggYnVmZmVyLCBPTkVfS0JZVEUg
KTsNCg0KICAgICAgICBmb3IgKCB4ID0gMDsgeCA8IE9ORV9LQllURSAvIHNp
emVvZiAoIHVuc2lnbmVkIGludCApOyBORVhUKHgpICkgew0KICAgICAgICAg
ICAgaWYgKCBidWZmZXJbIHggXSA9PSBNUF9TSUcgKSB7DQogICAgICAgICAg
ICAgICAgKndoZXJlID0gMTsNCiAgICAgICAgICAgICAgICAqcGFkZHIgPSAo
eCAqIHNpemVvZiggdW5zaWduZWQgaW50ICkpICsgdGFyZ2V0Ow0KICAgICAg
ICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICAgaWYgKCB2ZXJib3NlICkNCiAg
ICAgICAgICAgIHByaW50ZiggIk5PVCBmb3VuZFxuIiApOw0KICAgIH0NCg0K
ICAgIC8qIHJlYWQgQ01PUyBmb3IgcmVhbCB0b3Agb2YgbWVtICovDQogICAg
c2Vla0VudHJ5KCAodm1fb2Zmc2V0X3QpVE9QT0ZNRU1fUE9JTlRFUiApOw0K
ICAgIHJlYWRFbnRyeSggJnNlZ21lbnQsIDIgKTsNCiAgICAtLXNlZ21lbnQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
bGVzcyBPTkVfS0JZVEUgKi8NCiAgICB0YXJnZXQgPSBzZWdtZW50ICogMTAy
NDsNCiAgICBpZiAoIHZlcmJvc2UgKQ0KICAgICAgICBwcmludGYoICIgc2Vh
cmNoaW5nIENNT1MgJ3RvcCBvZiBtZW0nIEAgMHglMDh4ICglZEspXG4iLA0K
ICAgICAgICAgICAgICAgIHRhcmdldCwgc2VnbWVudCApOw0KICAgIHNlZWtF
bnRyeSggdGFyZ2V0ICk7DQogICAgcmVhZEVudHJ5KCBidWZmZXIsIE9ORV9L
QllURSApOw0KDQogICAgZm9yICggeCA9IDA7IHggPCBPTkVfS0JZVEUgLyBz
aXplb2YgKCB1bnNpZ25lZCBpbnQgKTsgTkVYVCh4KSApIHsNCiAgICAgICAg
aWYgKCBidWZmZXJbIHggXSA9PSBNUF9TSUcgKSB7DQogICAgICAgICAgICAq
d2hlcmUgPSAyOw0KICAgICAgICAgICAgKnBhZGRyID0gKHggKiBzaXplb2Yo
IHVuc2lnbmVkIGludCApKSArIHRhcmdldDsNCiAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qIHdlIGRvbid0IG5lY2Vz
c2FyaWx5IGJlbGlldmUgQ01PUywgY2hlY2sgYmFzZSBvZiB0aGUgbGFzdCAx
SyBvZiA2NDBLICovDQogICAgaWYgKCB0YXJnZXQgIT0gKERFRkFVTFRfVE9Q
T0ZNRU0gLSAxMDI0KSkgew0KICAgICAgICB0YXJnZXQgPSAoREVGQVVMVF9U
T1BPRk1FTSAtIDEwMjQpOw0KICAgICAgICBpZiAoIHZlcmJvc2UgKQ0KICAg
ICAgICAgICAgcHJpbnRmKCAiIHNlYXJjaGluZyBkZWZhdWx0ICd0b3Agb2Yg
bWVtJyBAIDB4JTA4eCAoJWRLKVxuIiwNCiAgICAgICAgICAgICAgICAgICAg
dGFyZ2V0LCAodGFyZ2V0IC8gMTAyNCkgKTsNCiAgICAgICAgc2Vla0VudHJ5
KCB0YXJnZXQgKTsNCiAgICAgICAgcmVhZEVudHJ5KCBidWZmZXIsIE9ORV9L
QllURSApOw0KDQogICAgICAgIGZvciAoIHggPSAwOyB4IDwgT05FX0tCWVRF
IC8gc2l6ZW9mICggdW5zaWduZWQgaW50ICk7IE5FWFQoeCkgKSB7DQogICAg
ICAgICAgICBpZiAoIGJ1ZmZlclsgeCBdID09IE1QX1NJRyApIHsNCiAgICAg
ICAgICAgICAgICAqd2hlcmUgPSAzOw0KICAgICAgICAgICAgICAgICpwYWRk
ciA9ICh4ICogc2l6ZW9mKCB1bnNpZ25lZCBpbnQgKSkgKyB0YXJnZXQ7DQog
ICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgLyogc2VhcmNoIHRoZSBCSU9TICovDQogICAg
aWYgKCB2ZXJib3NlICkNCiAgICAgICAgcHJpbnRmKCAiIHNlYXJjaGluZyBC
SU9TIEAgMHglMDh4XG4iLCBCSU9TX0JBU0UgKTsNCiAgICBzZWVrRW50cnko
IEJJT1NfQkFTRSApOw0KICAgIHJlYWRFbnRyeSggYnVmZmVyLCBCSU9TX1NJ
WkUgKTsNCg0KICAgIGZvciAoIHggPSAwOyB4IDwgQklPU19TSVpFIC8gc2l6
ZW9mKCB1bnNpZ25lZCBpbnQgKTsgTkVYVCh4KSApIHsNCiAgICAgICAgaWYg
KCBidWZmZXJbIHggXSA9PSBNUF9TSUcgKSB7DQogICAgICAgICAgICAqd2hl
cmUgPSA0Ow0KICAgICAgICAgICAgKnBhZGRyID0gKHggKiBzaXplb2YoIHVu
c2lnbmVkIGludCApKSArIEJJT1NfQkFTRTsNCiAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qIHNlYXJjaCB0aGUgZXh0
ZW5kZWQgQklPUyAqLw0KICAgIGlmICggdmVyYm9zZSApDQogICAgICAgIHBy
aW50ZiggIiBzZWFyY2hpbmcgZXh0ZW5kZWQgQklPUyBAIDB4JTA4eFxuIiwg
QklPU19CQVNFMiApOw0KICAgIHNlZWtFbnRyeSggQklPU19CQVNFMiApOw0K
ICAgIHJlYWRFbnRyeSggYnVmZmVyLCBCSU9TX1NJWkUgKTsNCg0KICAgIGZv
ciAoIHggPSAwOyB4IDwgQklPU19TSVpFIC8gc2l6ZW9mKCB1bnNpZ25lZCBp
bnQgKTsgTkVYVCh4KSApIHsNCiAgICAgICAgaWYgKCBidWZmZXJbIHggXSA9
PSBNUF9TSUcgKSB7DQogICAgICAgICAgICAqd2hlcmUgPSA1Ow0KICAgICAg
ICAgICAgKnBhZGRyID0gKHggKiBzaXplb2YoIHVuc2lnbmVkIGludCApKSAr
IEJJT1NfQkFTRTI7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0N
CiAgICB9DQoNCiAgICBpZiAoIGdyb3BlICkgew0KICAgICAgICAvKiBzZWFy
Y2ggYWRkaXRpb25hbCBtZW1vcnkgKi8NCiAgICAgICAgdGFyZ2V0ID0gR1JP
UEVfQVJFQTE7DQogICAgICAgIGlmICggdmVyYm9zZSApDQogICAgICAgICAg
ICBwcmludGYoICIgZ3JvcGluZyBtZW1vcnkgQCAweCUwOHhcbiIsIHRhcmdl
dCApOw0KICAgICAgICBzZWVrRW50cnkoIHRhcmdldCApOw0KICAgICAgICBy
ZWFkRW50cnkoIGJ1ZmZlciwgR1JPUEVfU0laRSApOw0KDQogICAgICAgIGZv
ciAoIHggPSAwOyB4IDwgR1JPUEVfU0laRSAvIHNpemVvZiggdW5zaWduZWQg
aW50ICk7IE5FWFQoeCkgKSB7DQogICAgICAgICAgICBpZiAoIGJ1ZmZlclsg
eCBdID09IE1QX1NJRyApIHsNCiAgICAgICAgICAgICAgICAqd2hlcmUgPSA2
Ow0KICAgICAgICAgICAgICAgICpwYWRkciA9ICh4ICogc2l6ZW9mKCB1bnNp
Z25lZCBpbnQgKSkgKyBHUk9QRV9BUkVBMTsNCiAgICAgICAgICAgICAgICBy
ZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICB0
YXJnZXQgPSBHUk9QRV9BUkVBMjsNCiAgICAgICAgaWYgKCB2ZXJib3NlICkN
CiAgICAgICAgICAgIHByaW50ZiggIiBncm9waW5nIG1lbW9yeSBAIDB4JTA4
eFxuIiwgdGFyZ2V0ICk7DQogICAgICAgIHNlZWtFbnRyeSggdGFyZ2V0ICk7
DQogICAgICAgIHJlYWRFbnRyeSggYnVmZmVyLCBHUk9QRV9TSVpFICk7DQoN
CiAgICAgICAgZm9yICggeCA9IDA7IHggPCBHUk9QRV9TSVpFIC8gc2l6ZW9m
KCB1bnNpZ25lZCBpbnQgKTsgTkVYVCh4KSApIHsNCiAgICAgICAgICAgIGlm
ICggYnVmZmVyWyB4IF0gPT0gTVBfU0lHICkgew0KICAgICAgICAgICAgICAg
ICp3aGVyZSA9IDc7DQogICAgICAgICAgICAgICAgKnBhZGRyID0gKHggKiBz
aXplb2YoIHVuc2lnbmVkIGludCApKSArIEdST1BFX0FSRUEyOw0KICAgICAg
ICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgICp3aGVyZSA9IDA7DQogICAgKnBhZGRyID0gKHZtX29m
ZnNldF90KTA7DQp9DQoNCg0KLyoNCiAqDQogKi8NCnN0YXRpYyBpbnQNCk1Q
RmxvYXRpbmdQb2ludGVyKCB2bV9vZmZzZXRfdCBwYWRkciwgaW50IHdoZXJl
LCBtcGZwc190KiBtcGZwcyApDQp7DQoNCiAgICAvKiByZWFkIGluIG1wZnBz
IHN0cnVjdHVyZSovDQogICAgc2Vla0VudHJ5KCBwYWRkciApOw0KICAgIHJl
YWRFbnRyeSggbXBmcHMsIHNpemVvZiggbXBmcHNfdCApICk7DQoNCiAgICAv
KiBzaG93IGl0cyBjb250ZW50cyAqLw0KICAgIHByaW50ZiggIk1QIEZsb2F0
aW5nIFBvaW50ZXIgU3RydWN0dXJlOlxuXG4iICk7DQoNCiAgICBwcmludGYo
ICIgIGxvY2F0aW9uOlx0XHRcdCIsIHdoZXJlICk7DQogICAgc3dpdGNoICgg
d2hlcmUgKQ0KICAgIHsNCiAgICBjYXNlIDE6DQogICAgICAgIHByaW50Zigg
IkVCREFcbiIgKTsNCiAgICAgICAgYnJlYWs7DQogICAgY2FzZSAyOg0KICAg
ICAgICBwcmludGYoICJCSU9TIGJhc2UgbWVtb3J5XG4iICk7DQogICAgICAg
IGJyZWFrOw0KICAgIGNhc2UgMzoNCiAgICAgICAgcHJpbnRmKCAiREVGQVVM
VCBiYXNlIG1lbW9yeSAoNjM5SylcbiIgKTsNCiAgICAgICAgYnJlYWs7DQog
ICAgY2FzZSA0Og0KICAgICAgICBwcmludGYoICJCSU9TXG4iICk7DQogICAg
ICAgIGJyZWFrOw0KICAgIGNhc2UgNToNCiAgICAgICAgcHJpbnRmKCAiRXh0
ZW5kZWQgQklPU1xuIiApOw0KICAgICAgICBicmVhazsNCg0KICAgIGNhc2Ug
MDoNCiAgICAgICAgcHJpbnRmKCAiTk9UIGZvdW5kIVxuIiApOw0KICAgICAg
ICBleGl0KCAxICk7DQogICAgZGVmYXVsdDoNCiAgICAgICAgcHJpbnRmKCAi
Qk9HVVMhXG4iICk7DQogICAgICAgIGV4aXQoIDEgKTsNCiAgICB9DQogICAg
cHJpbnRmKCAiICBwaHlzaWNhbCBhZGRyZXNzOlx0XHQweCUwOHhcbiIsIHBh
ZGRyICk7DQoNCiAgICBwcmludGYoICIgIHNpZ25hdHVyZTpcdFx0XHQnIiAp
Ow0KICAgIHBuc3RyKCBtcGZwcy0+c2lnbmF0dXJlLCA0ICk7DQogICAgcHJp
bnRmKCAiJ1xuIiApOw0KDQogICAgcHJpbnRmKCAiICBsZW5ndGg6XHRcdFx0
JWQgYnl0ZXNcbiIsIG1wZnBzLT5sZW5ndGggKiAxNiApOw0KICAgIHByaW50
ZiggIiAgdmVyc2lvbjpcdFx0XHQxLiUxZFxuIiwgbXBmcHMtPnNwZWNfcmV2
ICk7DQogICAgcHJpbnRmKCAiICBjaGVja3N1bTpcdFx0XHQweCUwMnhcbiIs
IG1wZnBzLT5jaGVja3N1bSApOw0KDQogICAgLyogYml0cyAwOjYgYXJlIFJF
U0VSVkVEICovDQogICAgaWYgKCBtcGZwcy0+bXBmYjIgJiAweDdmICkgew0K
ICAgICAgICBwcmludGYoICIgd2FybmluZywgTVAgZmVhdHVyZSBieXRlIDI6
IDB4JTAyeFxuIiApOw0KICAgIH0NCg0KICAgIC8qIGJpdCA3IGlzIElNQ1JQ
ICovDQogICAgcHJpbnRmKCAiICBtb2RlOlx0XHRcdFx0JXNcbiIsIChtcGZw
cy0+bXBmYjIgJiAweDgwKSA/DQogICAgICAgICAgICAiUElDIiA6ICJWaXJ0
dWFsIFdpcmUiICk7DQoNCiAgICAvKiBNUCBmZWF0dXJlIGJ5dGVzIDMtNSBh
cmUgZXhwZWN0ZWQgdG8gYmUgWkVSTyAqLw0KICAgIGlmICggbXBmcHMtPm1w
ZmIzICkNCiAgICAgICAgcHJpbnRmKCAiIHdhcm5pbmcsIE1QIGZlYXR1cmUg
Ynl0ZSAzIE5PTlpFUk8hXG4iICk7DQogICAgaWYgKCBtcGZwcy0+bXBmYjQg
KQ0KICAgICAgICBwcmludGYoICIgd2FybmluZywgTVAgZmVhdHVyZSBieXRl
IDQgTk9OWkVSTyFcbiIgKTsNCiAgICBpZiAoIG1wZnBzLT5tcGZiNSApDQog
ICAgICAgIHByaW50ZiggIiB3YXJuaW5nLCBNUCBmZWF0dXJlIGJ5dGUgNSBO
T05aRVJPIVxuIiApOw0KfQ0KDQoNCi8qDQogKg0KICovDQpzdGF0aWMgdm9p
ZA0KTVBDb25maWdEZWZhdWx0KCBpbnQgZmVhdHVyZUJ5dGUgKQ0Kew0KICAg
IHByaW50ZiggIiAgTVAgZGVmYXVsdCBjb25maWcgdHlwZTogJWRcblxuIiwg
ZmVhdHVyZUJ5dGUgKTsNCiAgICBzd2l0Y2ggKCBmZWF0dXJlQnl0ZSApIHsN
CiAgICBjYXNlIDE6DQogICAgICAgIHByaW50ZiggIiAgIGJ1czogSVNBLCBB
UElDOiA4MjQ4OURYXG4iICk7DQogICAgICAgIGJyZWFrOw0KICAgIGNhc2Ug
MjoNCiAgICAgICAgcHJpbnRmKCAiICAgYnVzOiBFSVNBLCBBUElDOiA4MjQ4
OURYXG4iICk7DQogICAgICAgIGJyZWFrOw0KICAgIGNhc2UgMzoNCiAgICAg
ICAgcHJpbnRmKCAiICAgYnVzOiBFSVNBLCBBUElDOiA4MjQ4OURYXG4iICk7
DQogICAgICAgIGJyZWFrOw0KICAgIGNhc2UgNDoNCiAgICAgICAgcHJpbnRm
KCAiICAgYnVzOiBNQ0EsIEFQSUM6IDgyNDg5RFhcbiIgKTsNCiAgICAgICAg
YnJlYWs7DQogICAgY2FzZSA1Og0KICAgICAgICBwcmludGYoICIgICBidXM6
IElTQStQQ0ksIEFQSUM6IEludGVncmF0ZWRcbiIgKTsNCiAgICAgICAgYnJl
YWs7DQogICAgY2FzZSA2Og0KICAgICAgICBwcmludGYoICIgICBidXM6IEVJ
U0ErUENJLCBBUElDOiBJbnRlZ3JhdGVkXG4iICk7DQogICAgICAgIGJyZWFr
Ow0KICAgIGNhc2UgNzoNCiAgICAgICAgcHJpbnRmKCAiICAgYnVzOiBNQ0Er
UENJLCBBUElDOiBJbnRlZ3JhdGVkXG4iICk7DQogICAgICAgIGJyZWFrOw0K
ICAgIGRlZmF1bHQ6DQogICAgICAgIHByaW50ZiggIiAgIGZ1dHVyZSB0eXBl
XG4iICk7DQogICAgICAgIGJyZWFrOw0KICAgIH0NCg0KICAgIHN3aXRjaCAo
IGZlYXR1cmVCeXRlICkgew0KICAgIGNhc2UgMToNCiAgICBjYXNlIDI6DQog
ICAgY2FzZSAzOg0KICAgIGNhc2UgNDoNCiAgICAgICAgbmJ1cyA9IDE7DQog
ICAgICAgIGJyZWFrOw0KICAgIGNhc2UgNToNCiAgICBjYXNlIDY6DQogICAg
Y2FzZSA3Og0KICAgICAgICBuYnVzID0gMjsNCiAgICAgICAgYnJlYWs7DQog
ICAgZGVmYXVsdDoNCiAgICAgICAgcHJpbnRmKCAiICAgZnV0dXJlIHR5cGVc
biIgKTsNCiAgICAgICAgYnJlYWs7DQogICAgfQ0KDQogICAgbmNwdSA9IDI7
DQogICAgbmFwaWMgPSAxOw0KICAgIG5pbnRyID0gMTY7DQp9DQoNCg0KLyoN
CiAqDQogKi8NCnN0YXRpYyB2b2lkDQpNUENvbmZpZ1RhYmxlSGVhZGVyKCB2
b2lkKiBwYXAgKQ0Kew0KICAgIHZtX29mZnNldF90IHBhZGRyOw0KICAgIG1w
Y3RoX3QgICAgIGN0aDsNCiAgICBpbnQgICAgICAgICB4LCB5Ow0KICAgIGlu
dCAgICAgICAgIHRvdGFsU2l6ZSwgdDsNCiAgICBpbnQgICAgICAgICBjb3Vu
dCwgYzsNCiAgICBpbnQgICAgICAgICB0eXBlOw0KICAgIHZtX29mZnNldF90
IHBvZW10cDsNCiAgICB2b2lkKiAgICAgICBvZW1kYXRhOw0KDQogICAgaWYg
KCBwYXAgPT0gMCApIHsNCiAgICAgICAgcHJpbnRmKCAiTVAgQ29uZmlndXJh
dGlvbiBUYWJsZSBIZWFkZXIgTUlTU0lORyFcbiIgKTsNCiAgICAgICAgZXhp
dCggMSApOw0KICAgIH0NCg0KICAgIC8qIGNvbnZlcnQgcGh5c2ljYWwgYWRk
cmVzcyB0byB2aXJ0dWFsIGFkZHJlc3MgKi8NCiAgICBwYWRkciA9ICh2bV9v
ZmZzZXRfdClwYXA7DQoNCiAgICAvKiByZWFkIGluIGN0aCBzdHJ1Y3R1cmUg
Ki8NCiAgICBzZWVrRW50cnkoIHBhZGRyICk7DQogICAgcmVhZEVudHJ5KCAm
Y3RoLCBzaXplb2YoIGN0aCApICk7DQoNCiAgICBwcmludGYoICJNUCBDb25m
aWcgVGFibGUgSGVhZGVyOlxuXG4iICk7DQoNCiAgICBwcmludGYoICIgIHBo
eXNpY2FsIGFkZHJlc3M6XHRcdDB4JTA4eFxuIiwgcGFwICk7DQoNCiAgICBw
cmludGYoICIgIHNpZ25hdHVyZTpcdFx0XHQnIiApOw0KICAgIHBuc3RyKCBj
dGguc2lnbmF0dXJlLCA0ICk7DQogICAgcHJpbnRmKCAiJ1xuIiApOw0KDQog
ICAgcHJpbnRmKCAiICBiYXNlIHRhYmxlIGxlbmd0aDpcdFx0JWRcbiIsIGN0
aC5iYXNlX3RhYmxlX2xlbmd0aCApOw0KDQogICAgcHJpbnRmKCAiICB2ZXJz
aW9uOlx0XHRcdDEuJTFkXG4iLCBjdGguc3BlY19yZXYgKTsNCiAgICBwcmlu
dGYoICIgIGNoZWNrc3VtOlx0XHRcdDB4JTAyeFxuIiwgY3RoLmNoZWNrc3Vt
ICk7DQoNCiAgICBwcmludGYoICIgIE9FTSBJRDpcdFx0XHQnIiApOw0KICAg
IHBuc3RyKCBjdGgub2VtX2lkLCA4ICk7DQogICAgcHJpbnRmKCAiJ1xuIiAp
Ow0KDQogICAgcHJpbnRmKCAiICBQcm9kdWN0IElEOlx0XHRcdCciICk7DQog
ICAgcG5zdHIoIGN0aC5wcm9kdWN0X2lkLCAxMiApOw0KICAgIHByaW50Zigg
IidcbiIgKTsNCg0KICAgIHByaW50ZiggIiAgT0VNIHRhYmxlIHBvaW50ZXI6
XHRcdDB4JTA4eFxuIiwgY3RoLm9lbV90YWJsZV9wb2ludGVyICk7DQogICAg
cHJpbnRmKCAiICBPRU0gdGFibGUgc2l6ZTpcdFx0JWRcbiIsIGN0aC5vZW1f
dGFibGVfc2l6ZSApOw0KDQogICAgcHJpbnRmKCAiICBlbnRyeSBjb3VudDpc
dFx0XHQlZFxuIiwgY3RoLmVudHJ5X2NvdW50ICk7DQoNCiAgICBwcmludGYo
ICIgIGxvY2FsIEFQSUMgYWRkcmVzczpcdFx0MHglMDh4XG4iLCBjdGguYXBp
Y19hZGRyZXNzICk7DQoNCiAgICBwcmludGYoICIgIGV4dGVuZGVkIHRhYmxl
IGxlbmd0aDpcdCVkXG4iLCBjdGguZXh0ZW5kZWRfdGFibGVfbGVuZ3RoICk7
DQogICAgcHJpbnRmKCAiICBleHRlbmRlZCB0YWJsZSBjaGVja3N1bTpcdCVk
XG4iLCBjdGguZXh0ZW5kZWRfdGFibGVfY2hlY2tzdW0gKTsNCg0KICAgIHRv
dGFsU2l6ZSA9IGN0aC5iYXNlX3RhYmxlX2xlbmd0aCAtIHNpemVvZiggc3Ry
dWN0IE1QQ1RIICk7DQogICAgY291bnQgPSBjdGguZW50cnlfY291bnQ7DQoN
CiAgICBwdXRzKCBTRVBfTElORSApOw0KDQogICAgcHJpbnRmKCAiTVAgQ29u
ZmlnIEJhc2UgVGFibGUgRW50cmllczpcblxuIiApOw0KDQogICAgLyogaW5p
dGlhbHplIHRhYmxlcyAqLw0KICAgIGZvciAoIHggPSAwOyB4IDwgMTY7ICsr
eCApIHsNCiAgICAgICAgYnVzc2VzWyB4IF0gPSBhcGljc1sgeCBdID0gMHhm
ZjsNCiAgICB9DQoNCiAgICBuY3B1ID0gMDsNCiAgICBuYnVzID0gMDsNCiAg
ICBuYXBpYyA9IDA7DQogICAgbmludHIgPSAwOw0KDQogICAgLyogcHJvY2Vz
cyBhbGwgdGhlIENQVXMgKi8NCiAgICBwcmludGYoICItLVxuUHJvY2Vzc29y
czpcdEFQSUMgSURcdFZlcnNpb25cdFN0YXRlIg0KICAgICAgICAgICAgIlx0
XHRGYW1pbHlcdE1vZGVsXHRTdGVwXHRGbGFnc1xuIiApOw0KICAgIGZvciAo
IHQgPSB0b3RhbFNpemUsIGMgPSBjb3VudDsgYzsgYy0tICkgew0KICAgICAg
ICBpZiAoIHJlYWRUeXBlKCkgPT0gMCApDQogICAgICAgICAgICBwcm9jZXNz
b3JFbnRyeSgpOw0KICAgICAgICB0b3RhbFNpemUgLT0gYmFzZXRhYmxlRW50
cnlUeXBlc1sgMCBdLmxlbmd0aDsNCiAgICB9DQoNCiAgICAvKiBwcm9jZXNz
IGFsbCB0aGUgYnVzc2VzICovDQogICAgcHJpbnRmKCAiLS1cbkJ1czpcdFx0
QnVzIElEXHRUeXBlXG4iICk7DQogICAgZm9yICggdCA9IHRvdGFsU2l6ZSwg
YyA9IGNvdW50OyBjOyBjLS0gKSB7DQogICAgICAgIGlmICggcmVhZFR5cGUo
KSA9PSAxICkNCiAgICAgICAgICAgIGJ1c0VudHJ5KCk7DQogICAgICAgIHRv
dGFsU2l6ZSAtPSBiYXNldGFibGVFbnRyeVR5cGVzWyAxIF0ubGVuZ3RoOw0K
ICAgIH0NCg0KICAgIC8qIHByb2Nlc3MgYWxsIHRoZSBhcGljcyAqLw0KICAg
IHByaW50ZiggIi0tXG5JL08gQVBJQ3M6XHRBUElDIElEXHRWZXJzaW9uXHRT
dGF0ZVx0XHRBZGRyZXNzXG4iICk7DQogICAgZm9yICggdCA9IHRvdGFsU2l6
ZSwgYyA9IGNvdW50OyBjOyBjLS0gKSB7DQogICAgICAgIGlmICggcmVhZFR5
cGUoKSA9PSAyICkNCiAgICAgICAgICAgIGlvQXBpY0VudHJ5KCk7DQogICAg
ICAgIHRvdGFsU2l6ZSAtPSBiYXNldGFibGVFbnRyeVR5cGVzWyAyIF0ubGVu
Z3RoOw0KICAgIH0NCg0KICAgIC8qIHByb2Nlc3MgYWxsIHRoZSBJL08gSW50
cyAqLw0KICAgIHByaW50ZiggIi0tXG5JL08gSW50czpcdFR5cGVcdFBvbGFy
aXR5ICAgIFRyaWdnZXJcdEJ1cyBJRFx0IElSUVx0QVBJQyBJRFx0SQ0KTlQj
XG4iICk7DQogICAgZm9yICggdCA9IHRvdGFsU2l6ZSwgYyA9IGNvdW50OyBj
OyBjLS0gKSB7DQogICAgICAgIGlmICggcmVhZFR5cGUoKSA9PSAzICkNCiAg
ICAgICAgICAgIGludEVudHJ5KCk7DQogICAgICAgIHRvdGFsU2l6ZSAtPSBi
YXNldGFibGVFbnRyeVR5cGVzWyAzIF0ubGVuZ3RoOw0KICAgIH0NCg0KICAg
IC8qIHByb2Nlc3MgYWxsIHRoZSBMb2NhbCBJbnRzICovDQogICAgcHJpbnRm
KCAiLS1cbkxvY2FsIEludHM6XHRUeXBlXHRQb2xhcml0eSAgICBUcmlnZ2Vy
XHRCdXMgSURcdCBJUlFcdEFQSUMgSURcDQp0SU5UI1xuIiApOw0KICAgIGZv
ciAoIHQgPSB0b3RhbFNpemUsIGMgPSBjb3VudDsgYzsgYy0tICkgew0KICAg
ICAgICBpZiAoIHJlYWRUeXBlKCkgPT0gNCApDQogICAgICAgICAgICBpbnRF
bnRyeSgpOw0KICAgICAgICB0b3RhbFNpemUgLT0gYmFzZXRhYmxlRW50cnlU
eXBlc1sgNCBdLmxlbmd0aDsNCiAgICB9DQoNCg0KI2lmIGRlZmluZWQoIEVY
VEVOREVEX1BST0NFU1NJTkdfUkVBRFkgKQ0KICAgIC8qIHByb2Nlc3MgYW55
IGV4dGVuZGVkIGRhdGEgKi8NCiAgICBpZiAoIHRvdGFsU2l6ZSA9IGN0aC5l
eHRlbmRlZF90YWJsZV9sZW5ndGggKSB7DQogICAgICAgIHB1dHMoIFNFUF9M
SU5FICk7DQoNCiAgICAgICAgcHJpbnRmKCAiTVAgQ29uZmlnIEV4dGVuZGVk
IFRhYmxlIEVudHJpZXM6XG5cbiIgKTsNCg0KICAgICAgICB3aGlsZSAoIHRv
dGFsU2l6ZSA+IDAgKSB7DQogICAgICAgICAgICBzd2l0Y2ggKCB0eXBlID0g
cmVhZFR5cGUoKSApIHsNCiAgICAgICAgICAgIGNhc2UgMTI4Og0KICAgICAg
ICAgICAgICAgIHNhc0VudHJ5KCk7DQogICAgICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICAgICBjYXNlIDEyOToNCiAgICAgICAgICAgICAgICBiaGRF
bnRyeSgpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAg
Y2FzZSAxMzA6DQogICAgICAgICAgICAgICAgY2Jhc21FbnRyeSgpOw0KICAg
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAg
ICAgICAgICAgICAgICBwcmludGYoICJFeHRlbmRlZCBUYWJsZSBIT1NFRCFc
biIgKTsNCiAgICAgICAgICAgICAgICBleGl0KCAxICk7DQogICAgICAgICAg
ICB9DQoNCiAgICAgICAgICAgIHRvdGFsU2l6ZSAtPSBleHRlbmRlZHRhYmxl
RW50cnlUeXBlc1sgdHlwZS0xMjggXS5sZW5ndGg7DQogICAgICAgIH0NCiAg
ICB9DQojZW5kaWYgIC8qIEVYVEVOREVEX1BST0NFU1NJTkdfUkVBRFkgKi8N
Cg0KICAgIC8qIHByb2Nlc3MgYW55IE9FTSBkYXRhICovDQogICAgaWYgKCBj
dGgub2VtX3RhYmxlX3BvaW50ZXIgJiYgKGN0aC5vZW1fdGFibGVfc2l6ZSA+
IDApICkgew0KI2lmIGRlZmluZWQoIE9FTV9QUk9DRVNTSU5HX1JFQURZICkN
CiMgZXJyb3IgeW91ciBvbiB5b3VyIG93biBoZXJlIQ0KICAgICAgICAvKiBj
b252ZXJ0IE9FTSB0YWJsZSBwb2ludGVyIHRvIHZpcnR1YWwgYWRkcmVzcyAq
Lw0KICAgICAgICBwb2VtdHAgPSAodm1fb2Zmc2V0X3QpY3RoLm9lbV90YWJs
ZV9wb2ludGVyOw0KDQogICAgICAgIC8qIHJlYWQgaW4gb2VtIHRhYmxlIHN0
cnVjdHVyZSAqLw0KICAgICAgICBpZiAoIChvZW1kYXRhID0gKHZvaWQqKW1h
bGxvYyggY3RoLm9lbV90YWJsZV9zaXplICkpID09IE5VTEwgKSB7DQogICAg
ICAgICAgICBwZXJyb3IoICJvZW0gbWFsbG9jIiApOw0KICAgICAgICAgICAg
ZXhpdCggMSApOw0KICAgICAgICB9DQoNCiAgICAgICAgc2Vla0VudHJ5KCBw
b2VtdHAgKTsNCiAgICAgICAgcmVhZEVudHJ5KCBvZW1kYXRhLCBjdGgub2Vt
X3RhYmxlX3NpemUgKTsNCg0KICAgICAgICAvKiogcHJvY2VzcyBpdCAqLw0K
DQogICAgICAgIGZyZWUoIG9lbWRhdGEgKTsNCiNlbHNlDQogICAgICAgIHBy
aW50ZiggIlxueW91IG5lZWQgdG8gbW9kaWZ5IHRoZSBzb3VyY2UgdG8gaGFu
ZGxlIE9FTSBkYXRhIVxuXG4iICk7DQojZW5kaWYgIC8qIE9FTV9QUk9DRVNT
SU5HX1JFQURZICovDQogICAgfQ0KDQogICAgZmZsdXNoKCBzdGRvdXQgKTsN
Cg0KI2lmIGRlZmluZWQoIFJBV19EVU1QICkNCnsNCiAgICBpbnQgICAgICAg
ICBvZmQ7DQogICAgdV9jaGFyICAgICAgZHVtcGJ1ZlsgNDA5NiBdOw0KDQog
ICAgb2ZkID0gb3BlbiggIi90bXAvbXBkdW1wIiwgT19DUkVBVCB8IE9fUkRX
UiApOw0KICAgIHNlZWtFbnRyeSggcGFkZHIgKTsNCiAgICByZWFkRW50cnko
IGR1bXBidWYsIDEwMjQgKTsNCiAgICB3cml0ZSggb2ZkLCBkdW1wYnVmLCAx
MDI0ICk7DQogICAgY2xvc2UoIG9mZCApOw0KfQ0KI2VuZGlmIC8qIFJBV19E
VU1QICovDQp9DQoNCg0KLyoNCiAqDQogKi8NCnN0YXRpYyBpbnQNCnJlYWRU
eXBlKCB2b2lkICkNCnsNCiAgICB1X2NoYXIgICAgICB0eXBlOw0KDQogICAg
aWYgKCByZWFkKCBwZmQsICZ0eXBlLCBzaXplb2YoIHVfY2hhciApICkgIT0g
c2l6ZW9mKCB1X2NoYXIgKSApIHsNCiAgICAgICAgcGVycm9yKCAidHlwZSBy
ZWFkIiApOw0KICAgICAgICBmcHJpbnRmKCBzdGRlcnIsICJcbnBmZDogJWQi
LCBwZmQgKTsNCiAgICAgICAgZmZsdXNoKCBzdGRlcnIgKTsNCiAgICAgICAg
ZXhpdCggMSApOw0KICAgIH0NCg0KICAgIGlmICggbHNlZWsoIHBmZCwgLTEs
IFNFRUtfQ1VSICkgPCAwICkgew0KICAgICAgICBwZXJyb3IoICJ0eXBlIHNl
ZWsiICk7DQogICAgICAgIGV4aXQoIDEgKTsNCiAgICB9DQoNCiAgICByZXR1
cm4gKGludCl0eXBlOw0KfQ0KDQoNCi8qDQogKg0KICovDQpzdGF0aWMgdm9p
ZA0Kc2Vla0VudHJ5KCB2bV9vZmZzZXRfdCBhZGRyICkNCnsNCiAgICBpZiAo
IGxzZWVrKCBwZmQsIChvZmZfdClhZGRyLCBTRUVLX1NFVCApIDwgMCApIHsN
CiAgICAgICAgcGVycm9yKCAiL2Rldi9tZW0gc2VlayIgKTsNCiAgICAgICAg
ZXhpdCggMSApOw0KICAgIH0NCn0NCg0KDQovKg0KICoNCiAqLw0Kc3RhdGlj
IHZvaWQNCnJlYWRFbnRyeSggdm9pZCogZW50cnksIGludCBzaXplICkNCnsN
CiAgICBpZiAoIHJlYWQoIHBmZCwgZW50cnksIHNpemUgKSAhPSBzaXplICkg
ew0KICAgICAgICBwZXJyb3IoICJyZWFkRW50cnkiICk7DQogICAgICAgIGV4
aXQoIDEgKTsNCiAgICB9DQp9DQoNCg0Kc3RhdGljIHZvaWQNCnByb2Nlc3Nv
ckVudHJ5KCB2b2lkICkNCnsNCiAgICBQcm9jRW50cnkgICBlbnRyeTsNCg0K
ICAgIC8qIHJlYWQgaXQgaW50byBsb2NhbCBtZW1vcnkgKi8NCiAgICByZWFk
RW50cnkoICZlbnRyeSwgc2l6ZW9mKCBlbnRyeSApICk7DQoNCiAgICAvKiBj
b3VudCBpdCAqLw0KICAgICsrbmNwdTsNCg0KICAgIHByaW50ZiggIlx0XHQl
MmQiLCBlbnRyeS5hcGljSUQgKTsNCiAgICBwcmludGYoICJcdCAweCUyeCIs
IGVudHJ5LmFwaWNWZXJzaW9uICk7DQoNCiAgICBwcmludGYoICJcdCAlcywg
JXMiLA0KICAgICAgICAgICAgKGVudHJ5LmNwdUZsYWdzICYgUFJPQ0VOVFJZ
X0ZMQUdfQlApID8gIkJTUCIgOiAiQVAiLA0KICAgICAgICAgICAgKGVudHJ5
LmNwdUZsYWdzICYgUFJPQ0VOVFJZX0ZMQUdfRU4pID8gInVzYWJsZSIgOiAi
dW51c2FibGUiICk7DQoNCiAgICBwcmludGYoICJcdCAlZFx0ICVkXHQgJWQi
LA0KICAgICAgICAgICAgKGVudHJ5LmNwdVNpZ25hdHVyZSA+PiA4KSAmIDB4
MGYsDQogICAgICAgICAgICAoZW50cnkuY3B1U2lnbmF0dXJlID4+IDQpICYg
MHgwZiwNCiAgICAgICAgICAgIGVudHJ5LmNwdVNpZ25hdHVyZSAmIDB4MGYg
KTsNCg0KICAgIHByaW50ZiggIlx0IDB4JTA0eFxuIiwgZW50cnkuZmVhdHVy
ZUZsYWdzICk7DQp9DQoNCg0KLyoNCiAqDQogKi8NCnN0YXRpYyBpbnQNCmxv
b2t1cEJ1c1R5cGUoIGNoYXIqIG5hbWUgKQ0Kew0KICAgIGludCB4Ow0KDQog
ICAgZm9yICggeCA9IDA7IHggPCBNQVhfQlVTVFlQRTsgKyt4ICkNCiAgICAg
ICAgaWYgKCBzdHJjbXAoIGJ1c1R5cGVUYWJsZVsgeCBdLm5hbWUsIG5hbWUg
KSA9PSAwICkNCiAgICAgICAgICAgIHJldHVybiBidXNUeXBlVGFibGVbIHgg
XS50eXBlOw0KDQogICAgcmV0dXJuIFVOS05PV05fQlVTVFlQRTsNCn0NCg0K
DQpzdGF0aWMgdm9pZA0KYnVzRW50cnkoIHZvaWQgKQ0Kew0KICAgIGludCAg
ICAgICAgIHg7DQogICAgY2hhciAgICAgICAgbmFtZVsgOCBdOw0KICAgIGNo
YXIgICAgICAgIGM7DQogICAgQnVzRW50cnkgICAgZW50cnk7DQoNCiAgICAv
KiByZWFkIGl0IGludG8gbG9jYWwgbWVtb3J5ICovDQogICAgcmVhZEVudHJ5
KCAmZW50cnksIHNpemVvZiggZW50cnkgKSApOw0KDQogICAgLyogY291bnQg
aXQgKi8NCiAgICArK25idXM7DQoNCiAgICBwcmludGYoICJcdFx0JTJkIiwg
ZW50cnkuYnVzSUQgKTsNCiAgICBwcmludGYoICJcdCAiICk7IHBuc3RyKCBl
bnRyeS5idXNUeXBlLCA2ICk7IHByaW50ZiggIlxuIiApOw0KDQogICAgZm9y
ICggeCA9IDA7IHggPCA2OyArK3ggKSB7DQogICAgICAgIGlmICggKGMgPSBl
bnRyeS5idXNUeXBlWyB4IF0pID09ICcgJyApDQogICAgICAgICAgICBicmVh
azsNCiAgICAgICAgbmFtZVsgeCBdID0gYzsNCiAgICB9DQogICAgbmFtZVsg
eCBdID0gJ1wwJzsNCiAgICBidXNzZXNbIGVudHJ5LmJ1c0lEIF0gPSBsb29r
dXBCdXNUeXBlKCBuYW1lICk7DQp9DQoNCg0Kc3RhdGljIHZvaWQNCmlvQXBp
Y0VudHJ5KCB2b2lkICkNCnsNCiAgICBJT0FwaWNFbnRyeSBlbnRyeTsNCg0K
ICAgIC8qIHJlYWQgaXQgaW50byBsb2NhbCBtZW1vcnkgKi8NCiAgICByZWFk
RW50cnkoICZlbnRyeSwgc2l6ZW9mKCBlbnRyeSApICk7DQoNCiAgICAvKiBj
b3VudCBpdCAqLw0KICAgICsrbmFwaWM7DQoNCiAgICBwcmludGYoICJcdFx0
JTJkIiwgZW50cnkuYXBpY0lEICk7DQogICAgcHJpbnRmKCAiXHQgMHglMDJ4
IiwgZW50cnkuYXBpY1ZlcnNpb24gKTsNCiAgICBwcmludGYoICJcdCAlcyIs
DQogICAgICAgICAgICAoZW50cnkuYXBpY0ZsYWdzICYgSU9BUElDRU5UUllf
RkxBR19FTikgPyAidXNhYmxlIiA6ICJ1bnVzYWJsZSIgKTsNCiAgICBwcmlu
dGYoICJcdFx0IDB4JXhcbiIsIGVudHJ5LmFwaWNBZGRyZXNzICk7DQoNCiAg
ICBhcGljc1sgZW50cnkuYXBpY0lEIF0gPSBlbnRyeS5hcGljSUQ7DQp9DQoN
Cg0KY2hhciogaW50VHlwZXNbXSA9IHsNCiAgICAiSU5UIiwgIk5NSSIsICJT
TUkiLCAiRXh0SU5UIg0KfTsNCg0KY2hhciogcG9sYXJpdHlNb2RlW10gPSB7
DQogICAgImNvbmZvcm1zIiwgImFjdGl2ZS1oaSIsICJyZXNlcnZlZCIsICJh
Y3RpdmUtbG8iDQp9Ow0KY2hhciogdHJpZ2dlck1vZGVbXSA9IHsNCiAgICAi
Y29uZm9ybXMiLCAiZWRnZSIsICJyZXNlcnZlZCIsICJsZXZlbCINCn07DQoN
CnN0YXRpYyB2b2lkDQppbnRFbnRyeSggdm9pZCApDQp7DQogICAgSW50RW50
cnkgICAgZW50cnk7DQoNCiAgICAvKiByZWFkIGl0IGludG8gbG9jYWwgbWVt
b3J5ICovDQogICAgcmVhZEVudHJ5KCAmZW50cnksIHNpemVvZiggZW50cnkg
KSApOw0KDQogICAgLyogY291bnQgaXQgKi8NCiAgICBpZiAoIChpbnQpZW50
cnkudHlwZSA9PSAzICkNCiAgICAgICAgKytuaW50cjsNCg0KICAgIHByaW50
ZiggIlx0XHQlcyIsIGludFR5cGVzWyAoaW50KWVudHJ5LmludFR5cGUgXSAp
Ow0KDQogICAgcHJpbnRmKCAiXHQlOXMiLCBwb2xhcml0eU1vZGVbIChpbnQp
ZW50cnkuaW50RmxhZ3MgJiAweDAzIF0gKTsNCiAgICBwcmludGYoICIlMTJz
IiwgdHJpZ2dlck1vZGVbICgoaW50KWVudHJ5LmludEZsYWdzID4+IDIpICYg
MHgwMyBdICk7DQoNCiAgICBwcmludGYoICJcdCAlNWQiLCAoaW50KWVudHJ5
LnNyY0J1c0lEICk7DQogICAgaWYgKCBidXNzZXNbIChpbnQpZW50cnkuc3Jj
QnVzSUQgXSA9PSBQQ0kgKQ0KICAgICAgICBwcmludGYoICJcdCUyZDolYyIs
DQogICAgICAgICAgICAgICAgKChpbnQpZW50cnkuc3JjQnVzSVJRID4+IDIp
ICYgMHgxZiwNCiAgICAgICAgICAgICAgICAoKGludCllbnRyeS5zcmNCdXNJ
UlEgJiAweDAzKSArICdBJyApOw0KICAgIGVsc2UNCiAgICAgICAgcHJpbnRm
KCAiXHQgJTNkIiwgKGludCllbnRyeS5zcmNCdXNJUlEgKTsNCiAgICBwcmlu
dGYoICJcdCAlNmQiLCAoaW50KWVudHJ5LmRzdEFwaWNJRCApOw0KICAgIHBy
aW50ZiggIlx0ICUzZFxuIiwgKGludCllbnRyeS5kc3RBcGljSU5UICk7DQp9
DQoNCg0Kc3RhdGljIHZvaWQNCnNhc0VudHJ5KCB2b2lkICkNCnsNCiAgICBT
YXNFbnRyeSAgICBlbnRyeTsNCg0KICAgIC8qIHJlYWQgaXQgaW50byBsb2Nh
bCBtZW1vcnkgKi8NCiAgICByZWFkRW50cnkoICZlbnRyeSwgc2l6ZW9mKCBl
bnRyeSApICk7DQoNCiAgICBwcmludGYoICItLVxuJXNcbiIsIGV4dGVuZGVk
dGFibGVFbnRyeVR5cGVzWyBlbnRyeS50eXBlIF0ubmFtZSApOw0KICAgIHBy
aW50ZiggIiBidXMgSUQ6ICVkIiwgZW50cnkuYnVzSUQgKTsNCiAgICBwcmlu
dGYoICIgYWRkcmVzcyB0eXBlOiAiICk7DQogICAgc3dpdGNoICggZW50cnku
YWRkcmVzc1R5cGUgKSB7DQogICAgY2FzZSAwOg0KICAgICAgICBwcmludGYo
ICJJL08gYWRkcmVzc1xuIiApOw0KICAgICAgICBicmVhazsNCiAgICBjYXNl
IDE6DQogICAgICAgIHByaW50ZiggIm1lbW9yeSBhZGRyZXNzXG4iICk7DQog
ICAgICAgIGJyZWFrOw0KICAgIGNhc2UgMjoNCiAgICAgICAgcHJpbnRmKCAi
cHJlZmV0Y2ggYWRkcmVzc1xuIiApOw0KICAgICAgICBicmVhazsNCiAgICBk
ZWZhdWx0Og0KICAgICAgICBwcmludGYoICJVTktOT1dOIHR5cGVcbiIgKTsN
CiAgICAgICAgYnJlYWs7DQogICAgfQ0KDQogICAgcHJpbnRmKCAiIGFkZHJl
c3MgYmFzZTogMHglcXhcbiIsIGVudHJ5LmFkZHJlc3NCYXNlICk7DQogICAg
cHJpbnRmKCAiIGFkZHJlc3MgcmFuZ2U6IDB4JXF4XG4iLCBlbnRyeS5hZGRy
ZXNzTGVuZ3RoICk7DQp9DQoNCg0Kc3RhdGljIHZvaWQNCmJoZEVudHJ5KCB2
b2lkICkNCnsNCiAgICBCaGRFbnRyeSAgICBlbnRyeTsNCg0KICAgIC8qIHJl
YWQgaXQgaW50byBsb2NhbCBtZW1vcnkgKi8NCiAgICByZWFkRW50cnkoICZl
bnRyeSwgc2l6ZW9mKCBlbnRyeSApICk7DQoNCiAgICBwcmludGYoICItLVxu
JXNcbiIsIGV4dGVuZGVkdGFibGVFbnRyeVR5cGVzWyBlbnRyeS50eXBlIF0u
bmFtZSApOw0KICAgIHByaW50ZiggIiBidXMgSUQ6ICVkIiwgZW50cnkuYnVz
SUQgKTsNCiAgICBwcmludGYoICIgYnVzIGluZm86IDB4JTAyeCIsIGVudHJ5
LmJ1c0luZm8gKTsNCiAgICBwcmludGYoICIgcGFyZW50IGJ1cyBJRDogJWQi
LCBlbnRyeS5idXNQYXJlbnQgKTsNCn0NCg0KDQpzdGF0aWMgdm9pZA0KY2Jh
c21FbnRyeSggdm9pZCApDQp7DQogICAgQ2Jhc21FbnRyeSAgZW50cnk7DQoN
CiAgICAvKiByZWFkIGl0IGludG8gbG9jYWwgbWVtb3J5ICovDQogICAgcmVh
ZEVudHJ5KCAmZW50cnksIHNpemVvZiggZW50cnkgKSApOw0KDQogICAgcHJp
bnRmKCAiLS1cbiVzXG4iLCBleHRlbmRlZHRhYmxlRW50cnlUeXBlc1sgZW50
cnkudHlwZSBdLm5hbWUgKTsNCiAgICBwcmludGYoICIgYnVzIElEOiAlZCIs
IGVudHJ5LmJ1c0lEICk7DQogICAgcHJpbnRmKCAiIGFkZHJlc3MgbW9kaWZp
ZXI6ICVzXG4iLCAoZW50cnkuYWRkcmVzc01vZCAmIDB4MDEpID8NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidHJhY3Qi
IDogImFkZCIgKTsNCiAgICBwcmludGYoICIgcHJlZGVmaW5lZCByYW5nZTog
MHglMDh4IiwgZW50cnkucHJlZGVmaW5lZFJhbmdlICk7DQp9DQoNCg0KLyoN
CiAqIGRvIGEgZG1lc2cgb3V0cHV0DQogKi8NCnN0YXRpYyB2b2lkDQpkb0Rt
ZXNnKCB2b2lkICkNCnsNCiAgICBwdXRzKCBTRVBfTElORSApOw0KDQogICAg
cHJpbnRmKCAiZG1lc2cgb3V0cHV0OlxuXG4iICk7IGZmbHVzaCggc3Rkb3V0
ICk7DQogICAgc3lzdGVtKCAiL2Jpbi9kbWVzZyIgKTsNCiAgICBwcmludGYo
ICJcblxuLS0tLS0tLS0tLS0tLS0tXG4iICk7DQogICAgcHJpbnRmKCAic2Nh
bnBjaSBvdXRwdXQ6XG5cbiIgKTsgZmZsdXNoKCBzdGRvdXQgKTsNCiAgICBz
eXN0ZW0oICIvdXNyL1gxMVI2L2Jpbi9zY2FucGNpIiApOw0KICAgIHByaW50
ZiggIlxuXG4tLS0tLS0tLS0tLS0tLS0tLVxuIiApOw0KICAgIHByaW50Zigg
Ii9wcm9jL3BjaSBvdXRwdXQ6XG5cbiIgKTsgZmZsdXNoKCBzdGRvdXQgKTsN
CiAgICBzeXN0ZW0oICIvYmluL2NhdCAvcHJvYy9wY2kiICk7DQogICAgcHJp
bnRmKCAiXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIiApOw0KICAg
IHByaW50ZiggIi9wcm9jL2ludGVycnVwdHMgb3V0cHV0OlxuXG4iICk7IGZm
bHVzaCggc3Rkb3V0ICk7DQogICAgc3lzdGVtKCAiL2Jpbi9jYXQgL3Byb2Mv
aW50ZXJydXB0cyIgKTsNCn0NCg0KDQovKg0KICoNCiAqLw0Kc3RhdGljIHZv
aWQNCnBuc3RyKCBjaGFyKiBzLCBpbnQgYyApDQp7DQogICAgY2hhciBzdHJp
bmdbIE1BWFBOU1RSICsgMSBdOw0KDQogICAgaWYgKCBjID4gTUFYUE5TVFIg
KQ0KICAgICAgICBjID0gTUFYUE5TVFI7DQogICAgc3RybmNweSggc3RyaW5n
LCBzLCBjICk7DQogICAgc3RyaW5nWyBjIF0gPSAnXDAnOw0KICAgIHByaW50
ZiggIiVzIiwgc3RyaW5nICk7DQp9DQoNCg0KDQo=
--17484290-484241277-907439049=:3311--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/