IyEgL2Jpbi9zaA0KDQogICAgbWFpbjoNCiAgICAgICMgU2V0IE1heGltdW0g
VHJhbnNmZXIgVW5pdC4gVGhpcyBpcyB0aGUgbWF4aW11bSBzaXplIG9mIHBh
Y2tldHMNCiAgICAgICMgdHJhbnNtaXR0ZWQgb24gdGhlIFNMSVAgZGV2aWNl
LiBNYW55IFNMSVAgc2VydmVycyB1c2UgZWl0aGVyDQogICAgICAjIDE1MDAg
b3IgMTAwNjsgY2hlY2sgd2l0aCB5b3VyIG5ldHdvcmsgYWRtaW5zIHdoZW4g
aW4gZG91YnQuDQogICAgICBnZXQgJG10dSA1MTINCiAgICAgICMgd2FzIDE1
MDAgbXR1DQoNCiAgICAgICMgTWFrZSB0aGUgU0xJUCByb3V0ZSB0aGUgZGVm
YXVsdCByb3V0ZSBvbiB5b3VyIHN5c3RlbS4NCiAgICAgIGRlZmF1bHQNCg0K
ICAgICAgIyBTZXQgdGhlIGRlc2lyZWQgc2VyaWFsIHBvcnQgYW5kIHNwZWVk
Lg0KICAgICAgcG9ydCBjdWExDQogICAgICBzcGVlZCAxOTIwMA0KDQogICAg
ICAjIFJlc2V0IHRoZSBtb2RlbSBhbmQgdGVybWluYWwgbGluZS4gSWYgdGhp
cyBjYXVzZXMgdHJvdWJsZQ0KICAgICAgIyBmb3IgeW91LCBjb21tZW50IGl0
IG91dC4NCiAgICAgIHJlc2V0DQoNCiAgICAgICMgUHJlcGFyZSBmb3IgZGlh
bGluZy4gUmVwbGFjZSB0aGUgZm9sbG93aW5nIHdpdGggeW91cg0KICAgICAg
IyBtb2RlbSBpbml0aWFsaXphdGlvbiBzdHJpbmcuDQogICAgICBzZW5kIEFU
IFM3PTQ1IFMwPTAgTDEgVjEgWDQgJmMxIEUxIFEwXHINCiAgICAgIHdhaXQg
T0sgMg0KICAgICAgaWYgJGVycmx2bCAhPSAwIGdvdG8gZXJyb3INCiAgICAg
ICMgRGlhbCB0aGUgU0xJUCBzZXJ2ZXINCiAgICAgIGRpYWwgNDQyMTY4MA0K
ICAgICAgI2lmICRlcnJsdmwgIT0gMCBnb3RvIGVycm9yDQogICAgICAjd2Fp
dCBDT05ORUNUIDYwDQogICAgICAjaWYgJGVycmx2bCAhPSAwIGdvdG8gZXJy
b3INCg0KICAgICAgIyBXZSBhcmUgY29ubmVjdGVkLiAgTG9naW4gdG8gdGhl
IHN5c3RlbS4NCiAgICAjbG9naW46DQogICAgICMgc2xlZXAgMw0KICAgICAg
I3NlbmQgXHJcblxyXG4NCiAgICAgICMgV2FpdCBmb3IgdGhlIGxvZ2luIHBy
b21wdA0KICAgICAgd2FpdCBsb2dpbjogMTANCiAgICAgICNpZiAkZXJybHZs
ICE9IDAgZ290byBlcnJvcg0KDQogICAgICAjIFNlbmQgeW91ciB1c2VybmFt
ZQ0KICAgICAgc2VuZCAjIyMjIyMjXG4NCg0KICAgICAgIyBXYWl0IGZvciBw
YXNzd29yZCBwcm9tcHQNCiAgICAgIHdhaXQgb3JkOiA1DQogICAgICBpZiAk
ZXJybHZsICE9IDAgZ290byBlcnJvcg0KDQogICAgICAjIFNlbmQgcGFzc3dv
cmQuDQogICAgICBzZW5kICMjIyMjIyMjXG4NCg0KICAgICAgIyBXYWl0IGZv
ciBTTElQIHNlcnZlciByZWFkeSBwcm9tcHQNCiAgICAgICN3YWl0IGFubmV4
OiAzMA0KICAgICAgI2lmICRlcnJsdmwgIT0gMCBnb3RvIGVycm9yDQoNCiAg
ICAgICMgU2VuZCBjb21tYW5kcyB0byBTTElQIHNlcnZlciB0byBpbml0YXRl
IGNvbm5lY3Rpb24uDQogICAgICAjc2VuZCBzbGlwXG4NCiAgICAgICN3YWl0
IEFubmV4IDMwDQoNCiAgICAgICMgR2V0IHRoZSByZW1vdGUgSVAgYWRkcmVz
cyBmcm9tIHRoZSBTTElQIHNlcnZlci4gVGhlDQogICAgICAjIGBnZXQuLi5y
ZW1vdGUnIGNvbW1hbmQgcmVhZHMgdGV4dCBpbiB0aGUgZm9ybSB4eHgueHh4
Lnh4eC54eHgsDQogICAgICAjIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSB2YXJp
YWJsZSBnaXZlbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50DQogICAgICAjICho
ZXJlLCAkcmVtb3RlKS4NCiAgICAgIHdhaXQgZnJvbSAgNQ0KICAgICAgZ2V0
ICRyZW1vdGUgcmVtb3RlDQogICAgICAjaWYgJGVycmx2bCAhPSAwIGdvdG8g
ZXJyb3INCiAgICAgICN3YWl0IFlvdXIgMzANCg0KICAgICAgICMgR2V0IGxv
Y2FsIElQIGFkZHJlc3MgZnJvbSBTTElQIHNlcnZlciwgYXNzaWduIHRvIHZh
cmlhYmxlDQogICAgICAgIyAkbG9jYWwuDQogICAgICB3YWl0IHRvIDUNCiAg
ICAgIGdldCAkbG9jYWwgcmVtb3RlDQogICAgICAjaWYgJGVycmx2bCAhPSAw
IGdvdG8gZXJyb3INCg0KICAgICAgIyBGaXJlIHVwIHRoZSBTTElQIGNvbm5l
Y3Rpb24NCiAgICBkb25lOg0KICAgICAgcHJpbnQgQ09OTkVDVEVEIHRvICRy
ZW1vdGUgYXQgJHJtdGlwDQogICAgIHByaW50IEdBVEVXQVkgYWRkcmVzcyAk
cm10aXANCiAgICAgIHByaW50IExPQ0FMIGFkZHJlc3MgJGxvY2FsDQogICAg
ICBtb2RlIFBQUA0KICAgIHNsZWVwIDYwIHMNCiAgICBpZmNvbmZpZyAgDQog
ICAgZ290byBleGl0DQogICAgZXJyb3I6DQogICAgICBwcmludCBTTElQIHRv
ICRyZW1vdGUgZmFpbGVkLg0KDQogICAgZXhpdDoNCnNsZWVwIDYwICAgIA0K
ZXhpdA==