SGVsbG8gdGhlcmUsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGJ1dCBJdCBp
cyBub3QgbWVtb3J5IGxlYWsgYmVjYXVzZSBJZiB0eCBxdWV1ZSBpcyBjb21wbGV0ZSwga2ZyZWUo
KSBpcyAgCj4gY2FsbGVkIGluIG1nbXRfdHhfY29tcGxldGUoKSBmdW50aW9uLiAKCk1heWJlIEkn
dmUgYmVlbiBzbGlnaHRseSBsZXNzIHRoYW4gY2xlYXIuIEknbGwgaGF2ZSBhbm90aGVyIGdvLgoK
VGhlcmUgaXMgYSBjYWxsIHRvIGttYWxsb2MgYXJvdW5kIGxpbmUgMjUwLgoKU291cmNlIGNvZGUg
aXMKCsKgwqDCoCBtZ210X3R4ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHR4X2NvbXBsZXRlX21v
bl9kYXRhKSwgR0ZQX0FUT01JQyk7CgpBIGZldyBsaW5lcyBsYXRlciBpcyBhIHNlY29uZCBjYWxs
IHRvIGttYWxsb2MKCsKgwqAgbWdtdF90eC0+YnVmZiA9IGttYWxsb2MobGVuLCBHRlBfQVRPTUlD
KTsKCklmIHRoZSBzZWNvbmQgY2FsbCBmYWlscywgdGhlbiBwcm9wZXIgdGlkeXVwIHdvdWxkIG5v
cm1hbGx5IGluY2x1ZGUKY2FsbGluZyBrZnJlZSBmb3IgdGhlIGZpcnN0IGNhbGwuIFRoaXMgZG9l
c24ndCBoYXBwZW4gaW4gdGhlIGVycm9yIGhhbmRsaW5nCmNvZGUgZm9yIHRoZSBzZWNvbmQgY2Fs
bC4KCsKgwqAgaWYgKG1nbXRfdHgtPmJ1ZmYgPT0gTlVMTCkgewrCoMKgwqDCoMKgwqDCoCBQUklO
VF9FUigiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgbWdtdF90eCBidWZmXG4iKTsKwqDC
oMKgwqDCoMKgwqAgcmV0dXJuIFdJTENfRkFJTDsKwqDCoMKgIH0KCk5vdCBhIGJpZyBidWcsIEkg
YWRtaXQsIGJ1dCBtaWdodCBiZSB3b3J0aCBmaXhpbmcuClNvbWV0aGluZyBsaWtlCgrCoMKgIGlm
IChtZ210X3R4LT5idWZmID09IE5VTEwpIHsKwqDCoMKgwqDCoMKgwqAga2ZyZWUobWdtdCk7CsKg
wqDCoMKgwqDCoMKgIFBSSU5UX0VSKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBtZ210
X3R4IGJ1ZmZcbiIpOwrCoMKgwqDCoMKgwqDCoCByZXR1cm4gV0lMQ19GQUlMOwrCoMKgwqAgfQoK
d291bGQgcHJvYmFibHkgZml4IGl0LiAKCk15IGFwb2xvZ2llcyBmb3Igbm90IGJlaW5nIGNsZWFy
IGVhcmxpZXIuCgoKUmVnYXJkcwoKRGF2aWQgQmluZGVybWFuCgoKPiAgCj4gU291cmNlIGNvZGUg
aXMgCj4gIAo+ICAgICAgZ19saW51eF93bGFuLT5vdXAud2xhbl9hZGRfbWdtdF90b190eF9xdWUo
bWdtdF90eCwgbWdtdF90eC0+YnVmZiwgIAo+IG1nbXRfdHgtPnNpemUsIG1nbXRfdHhfY29tcGxl
dGUpOyAKPiAgCj4gICAgICBzdGF0aWMgdm9pZCBtZ210X3R4X2NvbXBsZXRlKHZvaWQgKnByaXYs
IGludCBzdGF0dXMpIAo+ICAgICB7IAo+ICAgICAgICAgIC4uLiAKPiAgICAgICAgICBrZnJlZShw
dl9kYXRhLT5idWZmKTsgCj4gICAgICAgICAga2ZyZWUocHZfZGF0YSk7IAo+ICAgICAgfSAKPiAg
Cj4gQlIuIAo+IENocmlzIAo+ICAKPiBPbiAyMDE164WEIDA37JuUIDI37J28IDE3OjIwLCBEYXZp
ZCBCaW5kZXJtYW4gd3JvdGU6IAo+ICAKPiBIZWxsbyB0aGVyZSwgCj4gIAo+IFtsaW51eC00LjIt
cmM0L2RyaXZlcnMvc3RhZ2luZy93aWxjMTAwMC9saW51eF9tb24uYzoyNjRdOiAoZXJyb3IpIE1l
bW9yeSBsZWFrOiBtZ210X3R4IAo+ICAKPiBTb3VyY2UgY29kZSBpcyAKPiAgCj4gICAgICBtZ210
X3R4LT5idWZmID0ga21hbGxvYyhsZW4sIEdGUF9BVE9NSUMpOyAKPiAgICAgIGlmIChtZ210X3R4
LT5idWZmID09IE5VTEwpIHsgCj4gICAgICAgICAgUFJJTlRfRVIoIkZhaWxlZCB0byBhbGxvY2F0
ZSBtZW1vcnkgZm9yIG1nbXRfdHggYnVmZlxuIik7IAo+ICAgICAgICAgIHJldHVybiBXSUxDX0ZB
SUw7IAo+ICAKPiAgICAgIH0gCj4gIAo+IFN1Z2dlc3QgYWRkIG1pc3NpbmcgY2FsbCB0byBrZnJl
ZS4gCj4gIAo+ICAKPiBSZWdhcmRzIAo+ICAKPiBEYXZpZCBCaW5kZXJtYW4gCj4gIAo+ICAKPiAg
CiAJCSAJICAgCQkgIA==
SGkgRGF2aWQuDQoNClNvcnJ5LCBJIGRpZCBub3QgdGhpbmsgYWJvdXQgdGhhdC4NClRoaXMgaXMg
YSB2ZXJ5IGdvb2QgcG9pbnQgYW5kIHN1Z2dlc3Rpb24uDQoNCkkgd2lsbCBjaGVjayBhbmQgZml4
IHNvdXJjZSBjb2RlLg0KDQpUaGFuayB5b3UgZm9yIHlvdXIgYWR2aWNlLg0KDQpCUi4NCkNocmlz
Lg0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBEYXZpZCBCaW5kZXJtYW4g
W21haWx0bzpkY2IzMTRAaG90bWFpbC5jb21dIA0KU2VudDogTW9uZGF5LCBKdWx5IDI3LCAyMDE1
IDc6MDEgUE0NClRvOiBQYXJrLCBDaHJpczsgS2ltLCBKb2hubnk7IEtpbSwgUmFjaGVsOyBMZWUs
IERlYW47IGxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZw0KU3ViamVjdDogUkU6IGxpbnV4
LTQuMi1yYzQvZHJpdmVycy9zdGFnaW5nL3dpbGMxMDAwL2xpbnV4X21vbi5jOjI2NDogbWVtb3J5
IGxlYWsgPw0KDQpIZWxsbyB0aGVyZSwNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18NCj4gYnV0IEl0IGlzIG5vdCBtZW1vcnkgbGVhayBiZWNhdXNlIElmIHR4IHF1ZXVlIGlzIGNv
bXBsZXRlLCBrZnJlZSgpIGlzIA0KPiBjYWxsZWQgaW4gbWdtdF90eF9jb21wbGV0ZSgpIGZ1bnRp
b24uDQoNCk1heWJlIEkndmUgYmVlbiBzbGlnaHRseSBsZXNzIHRoYW4gY2xlYXIuIEknbGwgaGF2
ZSBhbm90aGVyIGdvLg0KDQpUaGVyZSBpcyBhIGNhbGwgdG8ga21hbGxvYyBhcm91bmQgbGluZSAy
NTAuDQoNClNvdXJjZSBjb2RlIGlzDQoNCsKgwqDCoCBtZ210X3R4ID0ga21hbGxvYyhzaXplb2Yo
c3RydWN0IHR4X2NvbXBsZXRlX21vbl9kYXRhKSwgR0ZQX0FUT01JQyk7DQoNCkEgZmV3IGxpbmVz
IGxhdGVyIGlzIGEgc2Vjb25kIGNhbGwgdG8ga21hbGxvYw0KDQrCoMKgIG1nbXRfdHgtPmJ1ZmYg
PSBrbWFsbG9jKGxlbiwgR0ZQX0FUT01JQyk7DQoNCklmIHRoZSBzZWNvbmQgY2FsbCBmYWlscywg
dGhlbiBwcm9wZXIgdGlkeXVwIHdvdWxkIG5vcm1hbGx5IGluY2x1ZGUgY2FsbGluZyBrZnJlZSBm
b3IgdGhlIGZpcnN0IGNhbGwuIFRoaXMgZG9lc24ndCBoYXBwZW4gaW4gdGhlIGVycm9yIGhhbmRs
aW5nIGNvZGUgZm9yIHRoZSBzZWNvbmQgY2FsbC4NCg0KwqDCoCBpZiAobWdtdF90eC0+YnVmZiA9
PSBOVUxMKSB7DQrCoMKgwqDCoMKgwqDCoCBQUklOVF9FUigiRmFpbGVkIHRvIGFsbG9jYXRlIG1l
bW9yeSBmb3IgbWdtdF90eCBidWZmXG4iKTsNCsKgwqDCoMKgwqDCoMKgIHJldHVybiBXSUxDX0ZB
SUw7DQrCoMKgwqAgfQ0KDQpOb3QgYSBiaWcgYnVnLCBJIGFkbWl0LCBidXQgbWlnaHQgYmUgd29y
dGggZml4aW5nLg0KU29tZXRoaW5nIGxpa2UNCg0KwqDCoCBpZiAobWdtdF90eC0+YnVmZiA9PSBO
VUxMKSB7DQrCoMKgwqDCoMKgwqDCoCBrZnJlZShtZ210KTsNCsKgwqDCoMKgwqDCoMKgIFBSSU5U
X0VSKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBtZ210X3R4IGJ1ZmZcbiIpOw0KwqDC
oMKgwqDCoMKgwqAgcmV0dXJuIFdJTENfRkFJTDsNCsKgwqDCoCB9DQoNCndvdWxkIHByb2JhYmx5
IGZpeCBpdC4gDQoNCk15IGFwb2xvZ2llcyBmb3Igbm90IGJlaW5nIGNsZWFyIGVhcmxpZXIuDQoN
Cg0KUmVnYXJkcw0KDQpEYXZpZCBCaW5kZXJtYW4NCg0KDQo+ICANCj4gU291cmNlIGNvZGUgaXMN
Cj4gIA0KPiAgICAgIGdfbGludXhfd2xhbi0+b3VwLndsYW5fYWRkX21nbXRfdG9fdHhfcXVlKG1n
bXRfdHgsIG1nbXRfdHgtPmJ1ZmYsIA0KPiBtZ210X3R4LT5zaXplLCBtZ210X3R4X2NvbXBsZXRl
KTsNCj4gIA0KPiAgICAgIHN0YXRpYyB2b2lkIG1nbXRfdHhfY29tcGxldGUodm9pZCAqcHJpdiwg
aW50IHN0YXR1cykgDQo+ICAgICB7IA0KPiAgICAgICAgICAuLi4gDQo+ICAgICAgICAgIGtmcmVl
KHB2X2RhdGEtPmJ1ZmYpOyANCj4gICAgICAgICAga2ZyZWUocHZfZGF0YSk7IA0KPiAgICAgIH0N
Cj4gIA0KPiBCUi4gDQo+IENocmlzDQo+ICANCj4gT24gMjAxNeuFhCAwN+yblCAyN+ydvCAxNzoy
MCwgRGF2aWQgQmluZGVybWFuIHdyb3RlOiANCj4gIA0KPiBIZWxsbyB0aGVyZSwNCj4gIA0KPiBb
bGludXgtNC4yLXJjNC9kcml2ZXJzL3N0YWdpbmcvd2lsYzEwMDAvbGludXhfbW9uLmM6MjY0XTog
KGVycm9yKSANCj4gTWVtb3J5IGxlYWs6IG1nbXRfdHgNCj4gIA0KPiBTb3VyY2UgY29kZSBpcw0K
PiAgDQo+ICAgICAgbWdtdF90eC0+YnVmZiA9IGttYWxsb2MobGVuLCBHRlBfQVRPTUlDKTsgDQo+
ICAgICAgaWYgKG1nbXRfdHgtPmJ1ZmYgPT0gTlVMTCkgeyANCj4gICAgICAgICAgUFJJTlRfRVIo
IkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIG1nbXRfdHggYnVmZlxuIik7IA0KPiAgICAg
ICAgICByZXR1cm4gV0lMQ19GQUlMOw0KPiAgDQo+ICAgICAgfQ0KPiAgDQo+IFN1Z2dlc3QgYWRk
IG1pc3NpbmcgY2FsbCB0byBrZnJlZS4gDQo+ICANCj4gIA0KPiBSZWdhcmRzDQo+ICANCj4gRGF2
aWQgQmluZGVybWFuDQo+ICANCj4gIA0KPiAgDQogCQkgCSAgIAkJICANCg==