RE: [PATCH v9 2/2] media: i2c: add driver for ITE IT6625/IT6626

<[email protected]> Mon, 3 Aug 2026 03:43:51 +0000
Newsgroups org.kernel.vger.linux-media,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
SGkgSGFucw0KDQpUaGFua3MgZm9yIHJldmlldy4NCg0KPkhpIEhlcm1lcywNCj4NCj5UaGFuayB5
b3UgZm9yIHBvc3RpbmcgdGhpcyBkcml2ZXIhDQo+DQo+U2VlIGJlbG93IGZvciBteSBjb2RlIHJl
dmlldy4NCj4NCj5PbmUgaGlnaC1sZXZlbCBxdWVzdGlvbjogaG93IGlzIHRoaXMgZHJpdmVyIHRl
c3RlZCwgc3BlY2lmaWNhbGx5IHdpdGggd2hhdCBDU0kvY2FwdHVyZQ0KPmRyaXZlcj8NCg0KVGhp
cyBkcml2ZXIgaXMgdGVzdGVkIG9uIFF1YWxjb21tIDY0OTAgdmlzaW9uIGtpdCB3aXRoICBRdWFs
Y29tbSBjYW1zcyBkcml2ZXIuDQpUaGUgUXVhbGNvbW0gY3VzdG9tIGtlcm5lbCB2aXJpb25zIGlz
IDYuNiwgdGhpcyBkcml2ZXIgbmVlZCBtb2RpZnkgZm9yIHRlc3RpbmcuDQoNCj5DYW4geW91IHBy
b3ZpZGUgdGhlICd2NGwyLWNvbXBsaWFuY2Ugb3V0cHV0IC1zJyB3aXRoIHRoYXQgZHJpdmVyPw0K
DQpJIHdpbGwgdHJ5IHJ1biB0aGlzIHRlc3QsIEhvdyBkbyBJIHByb3ZpZGUgdG8gdGVzdCByZXN1
bHQ/DQppbiBoaXN0b3J5IG9mIGNvdmVyLWxldGVyIG9yIHRoaXMgZHJpdmVyPw0KPg0KPkkgc3Vz
cGVjdCB0aGF0IHRoZSBJVDY2MjYgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gSERNSSAyLjAsIGlz
IHRoYXQgY29ycmVjdD8gSWYgc28sDQo+dGhlbiB0aGF0IHNob3VsZCBiZSBkb2N1bWVudGVkIHNv
bWV3aGVyZSBpbiB0aGUgY29kZSAoaXQgbWlnaHQgYmUgdGhlcmUgYWxyZWFkeSwNCj5pbiB0aGF0
IGNhc2UgSSBtaXNzZWQgaXQpLg0KDQpJVDY2MjYgc3VwcG9ydHMgSERNSTIuMS4gYW5kIGlzIG5v
dCBkaXNhYmxlIEhETUkyLjEgY2FwYWJpbGl0eS4NCklUNjYyNSBhbmQgSVQ2NjI2IGhhdmUgTUNV
IGluc2lkZSBhbmQgcHJvdmlkZSBuZWNlc3NhcnkgY29udHJvbCB2aXMgSTJDIHNsYXZlIHBvcnQu
DQoNClRoZSBtb3N0IGRpZmZlcmVuY2UgYmV0d2VlbiBIRE1JMi4wIGFuZCBIRE1JMi4xIGlzIG1h
eCByZXNvbHV0aW9uIHN1cHBvcnQuDQpEb2VzIFY0bDIgbmVlZCB0byBrbm93IEhETUkgdmVyc2lv
bj8NCg0KPk9uIDMwLzA3LzIwMjYgMDg6NTUsIEhlcm1lcyBXdSB2aWEgQjQgUmVsYXkgd3JvdGU6
DQo+PiBGcm9tOiBIZXJtZXMgV3UgPEhlcm1lcy53dUBpdGUuY29tLnR3Pg0KPj4gDQo+PiBBZGQg
YSBWNEwyIHN1YmRldmljZSBkcml2ZXIgZm9yIHRoZSBJVEUgSVQ2NjI1L0lUNjYyNiBIRE1JLXRv
LU1JUEkNCj4+IENTSS0yIGJyaWRnZSBjaGlwcy4gSVQ2NjI1IGFjY2VwdHMgYW4gSERNSSAyLjAg
aW5wdXQgYW5kIElUNjYyNiBhbg0KPj4gSERNSSAyLjEgaW5wdXQsIGNvbnZlcnRpbmcgaXQgdG8g
YSBELVBIWSAob3IgQy9ELVBIWSBvbiBJVDY2MjYpDQo+PiBNSVBJIENTSS0yIG91dHB1dC4gVGhl
IGJyaWRnZSBpcyBjb25maWd1cmVkIG92ZXIgSTJDLCBleHBvc2VzIGFuDQo+PiBIRE1JIENFQyBh
ZGFwdGVyLCBhbmQgc3VwcG9ydHMgRURJRCByZWFkL3dyaXRlLCBEViB0aW1pbmdzDQo+PiBkZXRl
Y3Rpb24vY29uZmlndXJhdGlvbiwgYW5kIEhQRCBjb250cm9sIHZpYSB0aGUgc3RhbmRhcmQgVjRM
Mg0KPj4gc3ViZGV2aWNlIHBhZCBhbmQgdmlkZW8gb3BzLg0KPj4gDQo+PiBTaWduZWQtb2ZmLWJ5
OiBIZXJtZXMgV3UgPEhlcm1lcy53dUBpdGUuY29tLnR3Pg0KPj4gLS0tDQo+PiBDaGFuZ2VzIGlu
IHY5Og0KPj4gLSBDaGFuZ2UgaXQ2NjI1X2ludGVycnVwdF9oYW5kbGVyKCkgdG8gcmV0dXJuIGJv
b2wgYW5kDQo+PiAgIGl0NjYyNV9pcnFfaGFuZGxlcigpIHRvIHRyYW5zbGF0ZSB0aGF0IGludG8g
SVJRX0hBTkRMRUQvSVJRX05PTkU6DQo+PiAgIHRoZSBoYW5kbGVyIHJldHVybmVkIGVhcmx5IHdp
dGhvdXQgY2xlYXJpbmcgUkVHX01DVV9JTlRFUlJVUFQNCj4+ICAgd2hlbmV2ZXIgdGhlIHJlYWQg
d2FzIHNwdXJpb3VzICh2YWwgPT0gMCkgb3IgZmFpbGVkICh2YWwgPCAwKSwgeWV0DQo+PiAgIHRo
ZSBJUlEgaGFuZGxlciB1bmNvbmRpdGlvbmFsbHkgcmV0dXJuZWQgSVJRX0hBTkRMRUQuIE9uIHRo
YXQgcGF0aA0KPj4gICBubyBJVDY2MjUgaW50ZXJydXB0IHNvdXJjZSB3YXMgb2JzZXJ2ZWQgZm9y
IHRoaXMgaW52b2NhdGlvbiwgc28NCj4+ICAgYWx3YXlzIHJlcG9ydGluZyBJUlFfSEFORExFRCBy
ZWdhcmRsZXNzIGRlZmVhdHMgdGhlIGtlcm5lbCdzDQo+PiAgIHNwdXJpb3VzLUlSUSBzdG9ybSBw
cm90ZWN0aW9uLCB3aGljaCByZWxpZXMgb24gSVJRX05PTkUgdG8gaWRlbnRpZnkNCj4+ICAgYW5k
IGRpc2FibGUgbWlzYmVoYXZpbmcgbGluZXMuIE1hdGNoZXMgdGhlIHBhdHRlcm4gYWxyZWFkeSB1
c2VkIGJ5DQo+PiAgIHRjMzU4NzQzLmMgYW5kIGFkdjc2MDQuYy4gRm91bmQgYnkgdGhlIHNhc2hp
a28uZGV2IGF1dG9tYXRlZCByZXZpZXcNCj4+ICAgb2YgdjguDQo+PiAtIFRha2UgaXQ2NjI1X2xv
Y2sgaW4gaXQ2NjI1X2luaXRpYWxfc2V0dXAoKTogaXQgd3JvdGUNCj4+ICAgQl9DT05GSUdfVVBE
QVRFIHRvIFJFR19IT1NUX0NUUkxfSU5UIGFuZCBwb2xsZWQgZm9yIGl0IHRvIGNsZWFyDQo+PiAg
IHdpdGhvdXQgaG9sZGluZyB0aGUgbG9jaywgYnV0IGl0IHJ1bnMgZnJvbSBwcm9iZSgpIGFmdGVy
DQo+PiAgIGNlY19yZWdpc3Rlcl9hZGFwdGVyKCkgaGFzIGFscmVhZHkgZXhwb3NlZCAvZGV2L2Nl
Y1ggdG8gdXNlcnNwYWNlLA0KPj4gICBhbmQgaXQ2NjI1X2NlY19hZGFwX3RyYW5zbWl0KCkgKHJl
YWNoYWJsZSBpbW1lZGlhdGVseSB2aWEgYSBDRUMNCj4+ICAgaW9jdGwpIHNldHMgQl9DRUNfU0VO
RF9EQVRBIGluIHRoZSBzYW1lIHJlZ2lzdGVyIHVuZGVyIHRoZSBsb2NrLg0KPj4gICBFdmVyeSBv
dGhlciBhY2Nlc3NvciBvZiBSRUdfSE9TVF9DVFJMX0lOVCBhbHJlYWR5IHRvb2sgdGhlIGxvY2s7
DQo+PiAgIHRoaXMgd2FzIHRoZSBzb2xlIGV4Y2VwdGlvbi4gU2luZ2xlIGNhbGwgc2l0ZSwgbG9j
ayBhbHJlYWR5DQo+PiAgIGluaXRpYWxpemVkIGJlZm9yZSBpdCwgc28gbm8gZGVhZGxvY2sgaXMg
aW50cm9kdWNlZC4gRm91bmQgYnkgdGhlDQo+PiAgIHNhc2hpa28uZGV2IGF1dG9tYXRlZCByZXZp
ZXcgb2YgdjguDQo+PiANCj4+IE9uZSBvdGhlciB2OCByZXZpZXcgZmluZGluZyB3YXMgY2hlY2tl
ZCBhbmQgaXMgbm90IGJlaW5nIGFjdGVkIG9uOg0KPj4gLSBmcHNfZnJvbV9idF90aW1pbmdzKCkg
Y29tcHV0aW5nDQo+PiAgIFY0TDJfRFZfQlRfRlJBTUVfSEVJR0hUKHQpICogVjRMMl9EVl9CVF9G
UkFNRV9XSURUSCh0KSBhcyBhIDMyLWJpdA0KPj4gICBwcm9kdWN0LCB3aGljaCB0aGUgcmV2aWV3
IGNsYWltcyBjYW4gb3ZlcmZsb3cgdG8gMCBnaXZlbg0KPj4gICBWNEwyX0RWX0JUX0NBUF9DVVNU
T00ncyByZWxheGVkIG1hdGNoaW5nLiBDaGVja2VkOiBpdDY2MjUtPnRpbWluZ3MsDQo+PiAgIHRo
ZSBvbmx5IHZhbHVlIHRoaXMgZnVuY3Rpb24gaXMgZXZlciBjYWxsZWQgb24sIGlzIHBvcHVsYXRl
ZCBvbmx5DQo+PiAgIGJ5IGl0NjYyNV91cGRhdGVfdGltaW5nc19pZl9jaGFuZ2VkKCksIHdoaWNo
IHJlamVjdHMgYW55dGhpbmcNCj4+ICAgZmFpbGluZyB2NGwyX3ZhbGlkX2R2X3RpbWluZ3MoKSBh
Z2FpbnN0IGl0NjYyNV90aW1pbmdzX2NhcCAod2lkdGgNCj4+ICAgNjQwLTM4NDAsIGhlaWdodCA0
ODAtMjE2MCksIG9yIGJ5IGEgc3RhdGljIGRlZmF1bHQuDQo+PiAgIHY0bDJfdmFsaWRfZHZfdGlt
aW5ncygpIGFkZGl0aW9uYWxseSBib3VuZHMgZXZlcnkgcG9yY2ggZmllbGQNCj4+ICAgKGhmcm9u
dHBvcmNoL2hzeW5jL2hiYWNrcG9yY2ggPD0gM3ggd2lkdGg7DQo+PiAgIHZmcm9udHBvcmNoL3Zz
eW5jL3ZiYWNrcG9yY2gvaWxfKiA8PSAxMDI0MCkuIEdpdmVuIHRob3NlIGNhcHMgdGhlDQo+PiAg
IG1heGltdW0gcG9zc2libGUgRlJBTUVfV0lEVEggKiBGUkFNRV9IRUlHSFQgaXMNCj4+ICAgMzg0
MDAgeCA2MzYwMCB+PSAyLjQ0eDEwXjksIHNhZmVseSB1bmRlciAyXjMyIH49IDQuMjl4MTBeOSAt
LSB0aGUNCj4+ICAgY2xhaW1lZCBvdmVyZmxvdyBpbnB1dCBpcyBtYXRoZW1hdGljYWxseSB1bnJl
YWNoYWJsZSB0aHJvdWdoIHRoaXMNCj4+ICAgZHJpdmVyJ3MgdmFsaWRhdGVkIHRpbWluZ3MgcGF0
aC4NCj4+IA0KPj4gQ2hhbmdlcyBpbiB2ODoNCj4+IC0gRHJvcCBvZl9tYXRjaF9wdHIoKSBhcm91
bmQgaXQ2NjI1X29mX21hdGNoIGluIHRoZSBpMmNfZHJpdmVyOiB0aGUNCj4+ICAgdGFibGUgaXMg
dW5jb25kaXRpb25hbGx5IGNvbXBpbGVkIGluLCBzbyB3cmFwcGluZyBpdCBpcyB1bm5lY2Vzc2Fy
eQ0KPj4gICBhbmQgcmlza3MgYW4gdW51c2VkLXZhcmlhYmxlIHdhcm5pbmcgb24gY29uZmlncyB3
aXRob3V0IENPTkZJR19PRi4NCj4+ICAgRm91bmQgYnkgS3J6eXN6dG9mIEtvemxvd3NraSdzIG9u
LWxpc3QgcmV2aWV3IG9mIHY3Lg0KPj4gLSBTdG9wIGhhbHZpbmcgYnQtPnBpeGVsY2xvY2sgZm9y
IGludGVybGFjZWQgc2lnbmFscyBpbg0KPj4gICBpdDY2MjVfZ2V0X2RldGVjdGVkX3RpbWluZ3Mo
KS4gQ2hlY2tlZCBhZ2FpbnN0IHRoZSBJVDY2MjUgc3BlYzogZm9yDQo+PiAgIGFuIGludGVybGFj
ZWQgc291cmNlIChlLmcuIDEwODBpKSB0aGUgY2hpcCdzIGJ1aWx0LWluIE1DVSBhbHJlYWR5DQo+
PiAgIHJlcG9ydHMgUkVHX1ZJRF9QQ0xLIGFzIHRoZSBjb3JyZWN0LCByZWFsIHBpeGVsIGNsb2Nr
ICg3NC4yNSBNSHogZm9yDQo+PiAgIDEwODBpLCBub3QgYSBoYWxmLXJhdGUvZmllbGQgY2xvY2sp
LCB3aGlsZSB0aGUgaGVpZ2h0IGl0IHJlcG9ydHMgaXMNCj4+ICAgdGhlIHBlci1maWVsZCBhY3Rp
dmUgaGVpZ2h0ICg1NDApLCB3aGljaCB0aGUgZXhpc3RpbmcNCj4+ICAgImJ0LT5oZWlnaHQgKj0g
MiIgY29ycmVjdGx5IHR1cm5zIGludG8gdGhlIHRydWUgZnVsbC1mcmFtZSBoZWlnaHQuDQo+PiAg
IERpdmlkaW5nIHRoZSBhbHJlYWR5LWNvcnJlY3QgcGl4ZWwgY2xvY2sgYnkgMiBvbiB0b3Agb2Yg
dGhhdCBtYW5nbGVkDQo+PiAgIGl0IHRvIDM3LjEyNSBNSHosIHVuZGVyc3RhdGluZyB0aGUgcmVw
b3J0ZWQgZnJhbWUgcmF0ZSBieSBoYWxmLg0KPj4gICBGb3VuZCBieSB0aGUgc2FzaGlrby5kZXYg
YXV0b21hdGVkIHJldmlldyBvZiB2Ny4gaWxfdmZyb250cG9yY2gvDQo+PiAgIGlsX3ZiYWNrcG9y
Y2ggYXJlIHN0aWxsIGxlZnQgdW5zZXQgZm9yIGludGVybGFjZWQgc2lnbmFscyAtLSB0aGUNCj4+
ICAgSVQ2NjI1IE1DVSBoYXMgbm8gc2VwYXJhdGUgc2Vjb25kLWZpZWxkIHBvcmNoIHJlZ2lzdGVy
cywgc28gdGhlcmUncw0KPj4gICBub3RoaW5nIHRvIHJlYWQgZm9yIHRoZW07IG5vdCBmaXhlZCwg
c2luY2UgdGhlcmUncyBub3RoaW5nIHRvIGZpeCBpbg0KPj4gICBzb2Z0d2FyZS4NCj4+IA0KPj4g
T25lIG90aGVyIHY3IHJldmlldyBmaW5kaW5nIHdhcyBjaGVja2VkIGFuZCBpcyBub3QgYmVpbmcg
YWN0ZWQgb246DQo+PiAtIGl0NjYyNV9nZXRfZm10KCkgdW5jb25kaXRpb25hbGx5IHdyaXRlcyB0
aGUgbGl2ZSBkZXRlY3RlZCB0aW1pbmdzDQo+PiAgIGludG8gZm9ybWF0LT5mb3JtYXQud2lkdGgv
aGVpZ2h0L2ZpZWxkIHJlZ2FyZGxlc3Mgb2YgVFJZIHZzIEFDVElWRSwNCj4+ICAgYW5kIGl0NjYy
NV9zZXRfZm10KCkncyBUUlkgYnJhbmNoIG9ubHkgcGVyc2lzdHMgY29kZS9jb2xvcnNwYWNlIGlu
dG8NCj4+ICAgc2Rfc3RhdGUuIFRoaXMgZXhhY3RseSBtYXRjaGVzIHRjMzU4NzQzX2dldF9mbXQo
KS90YzM1ODc0M19zZXRfZm10KCkNCj4+ICAgaW4gdGMzNTg3NDMuYywgd2hpY2ggbmV2ZXIgY29u
c3VsdCBzZF9zdGF0ZSBmb3Igd2lkdGgvaGVpZ2h0L2ZpZWxkDQo+PiAgIGluIGVpdGhlciBUUlkg
b3IgQUNUSVZFIGVpdGhlci4gRm9yIHRoaXMgY2xhc3Mgb2YgSERNSS1yZWNlaXZlcg0KPj4gICBi
cmlkZ2UsIGZyYW1lIGRpbWVuc2lvbnMgYXJlIGRpY3RhdGVkIGJ5IHRoZSBkZXRlY3RlZCBleHRl
cm5hbA0KPj4gICBzaWduYWwsIG5vdCBpbmRlcGVuZGVudGx5IG5lZ290aWFibGUgdmlhIFRSWSAt
LSBvbmx5IHRoZSBwaXhlbA0KPj4gICBmb3JtYXQgKGNvZGUvY29sb3JzcGFjZSkgaXMgbWVhbmlu
Z2Z1bGx5IFRSWS1pc29sYXRhYmxlLCBhbmQgdGhhdCdzDQo+PiAgIGV4YWN0bHkgd2hhdCBib3Ro
IGRyaXZlcnMgaXNvbGF0ZS4gRm91bmQgYnkgdGhlIHNhc2hpa28uZGV2DQo+PiAgIGF1dG9tYXRl
ZCByZXZpZXcgb2YgdjcuDQo+PiANCj4+IEFsc28sIHBlciBLcnp5c3p0b2YgS296bG93c2tpJ3Mg
b24tbGlzdCByZXZpZXc6IHRoZSBpdDY2MjUvaXQ2NjI2DQo+PiBvZl9kZXZpY2VfaWQgZW50cmll
cyBkbyBlbmNvZGUgYSByZWFsIGJlaGF2aW9yYWwgZGlmZmVyZW5jZSAtLQ0KPj4gaXQ2NjI1X3Bh
cnNlX2VuZHBvaW50KCkgcmVqZWN0cyBDLVBIWSBlbmRwb2ludHMgdW5sZXNzDQo+PiBjaGlwX3R5
cGUgPT0gSVQ2NjI2X0NISVAsIHNvICJpdGUsaXQ2NjI1IiBib2FyZHMgYXJlIGNvcnJlY3RseQ0K
Pj4gcmVzdHJpY3RlZCB0byBELVBIWS4gUmVwbHlpbmcgb24tbGlzdCB0byBwb2ludCB0aGlzIG91
dCwgbm90IGEgY29kZQ0KPj4gY2hhbmdlLg0KPj4gDQo+PiBDaGFuZ2VzIGluIHY3Og0KPj4gLSBG
aXggdGhyZWUgY29ycmVjdG5lc3MgaXNzdWVzIGZvdW5kIGJ5IHRoZSBhdXRvbWF0ZWQgcmV2aWV3
IG9mIHY2Og0KPj4gICBpdDY2MjVfcGFyc2VfZW5kcG9pbnQoKSBsZWZ0IHRoZSBmd25vZGUgZW5k
cG9pbnQncyBidXNfdHlwZSBhcw0KPj4gICBWNEwyX01CVVNfVU5LTk9XTiBzbyB2NGwyX2Z3bm9k
ZV9lbmRwb2ludF9hbGxvY19wYXJzZSgpIGNvdWxkDQo+PiAgIGF1dG9kZXRlY3QgQy1QSFkgdnMg
RC1QSFksIGJ1dCBpZiB0aGUgZW5kcG9pbnQgbm9kZSBoYXMgbm9uZSBvZiB0aGUNCj4+ICAgQ1NJ
LTItc3BlY2lmaWMgcHJvcGVydGllcywgdGhlIHBhcnNlciBzaWxlbnRseSBmYWxscyBiYWNrIHRv
DQo+PiAgIFY0TDJfTUJVU19QQVJBTExFTC9CVDY1NiBpbnN0ZWFkIC0tIHRoZSBkcml2ZXIgdGhl
biByZWFkDQo+PiAgIGVuZHBvaW50LmJ1cy5taXBpX2NzaTIubnVtX2RhdGFfbGFuZXMgdW5jb25k
aXRpb25hbGx5LCB0cmVhdGluZw0KPj4gICBtZW1vcnkgcG9wdWxhdGVkIGFzIGEgZGlmZmVyZW50
IHVuaW9uIG1lbWJlciBhcyBhIGxhbmUgY291bnQuDQo+PiAgIGl0NjYyNV9zZXRfZm10KCkncyBW
NEwyX1NVQkRFVl9GT1JNQVRfQUNUSVZFIGJyYW5jaCBhcHBsaWVkIHRoZSBuZXcNCj4+ICAgZm9y
bWF0IHRvIGhhcmR3YXJlIGJ1dCBuZXZlciB1cGRhdGVkIGZvcm1hdC0+Zm9ybWF0LmNvbG9yc3Bh
Y2UgbGlrZQ0KPj4gICB0aGUgVFJZIGJyYW5jaCBkb2VzLCBzbyBWSURJT0NfU1VCREVWX1NfRk1U
IGNhbGxlcnMgZ290IGJhY2sgdGhlDQo+PiAgIHN0YWxlIGNvbG9yc3BhY2UgZnJvbSBiZWZvcmUg
dGhlIGNhbGwuIGl0NjYyNV9zX2VkaWQoKSBuZXZlcg0KPj4gICBjaGVja2VkIGVkaWQtPnN0YXJ0
X2Jsb2NrLCBjb250cmFyeSB0byB0aGUgVklESU9DX1NfRURJRCBzcGVjDQo+PiAgIChEb2N1bWVu
dGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3ZpZGlvYy1nLWVkaWQucnN0KSwgd2hpY2gN
Cj4+ICAgcmVxdWlyZXMgLUVJTlZBTCBmb3IgYW55IHN0YXJ0X2Jsb2NrIG90aGVyIHRoYW4gMCBz
aW5jZSBzZXR0aW5nIGFuDQo+PiAgIEVESUQgaXMgYWxsLW9yLW5vdGhpbmc7IGFkZGVkIHRoZSBz
YW1lIGNoZWNrIGFscmVhZHkgcHJlc2VudCBpbg0KPj4gICBhZHY3NjA0X3NfZWRpZCgpLCB0YzM1
ODc0M19zX2VkaWQoKSBhbmQgYWR2Nzg0Ml9zX2VkaWQoKSBmb3IgdGhlDQo+PiAgIHNhbWUgcmVx
dWlyZW1lbnQuDQo+PiANCj4+IENoYW5nZXMgaW4gdjY6DQo+PiAtIEZpeCB0d28gY29ycmVjdG5l
c3MgaXNzdWVzIGZvdW5kIGJ5IHRoZSBhdXRvbWF0ZWQgcmV2aWV3IG9mIHY1Og0KPj4gICBpdDY2
MjVfc19lZGlkKCkgY2FsbGVkIHY0bDJfcGh5c19hZGRyX3ZhbGlkYXRlKCkgYnV0IGRpc2NhcmRl
ZCBpdHMNCj4+ICAgcmV0dXJuIHZhbHVlLCBzbyBhIENFQyBwaHlzaWNhbCBhZGRyZXNzIHRoYXQg
ZmFpbGVkIHRvcG9sb2d5DQo+PiAgIHZhbGlkYXRpb24gKGUuZy4gYSBnYXAgbGlrZSAxLjAuMS4w
KSBzdGlsbCByZWFjaGVkDQo+PiAgIGNlY19zX3BoeXNfYWRkcigpIGFuZCBnb3QgYnJvYWRjYXN0
IG9uIHRoZSBDRUMgYnVzIGluc3RlYWQgb2YgYmVpbmcNCj4+ICAgcmVqZWN0ZWQ7IGFuZCBpdDY2
MjVfcGFyc2VfZW5kcG9pbnQoKSBwcmUtc2V0IHRoZSBmd25vZGUgZW5kcG9pbnQncw0KPj4gICBi
dXNfdHlwZSB0byBELVBIWSBiZWZvcmUgcGFyc2luZywgd2hpY2ggKHBlcg0KPj4gICBpbmNsdWRl
L21lZGlhL3Y0bDItZndub2RlLmgpIG1ha2VzIHRoZSBwYXJzZXIgdHJlYXQgaXQgYXMgYSBoYXJk
DQo+PiAgIHJlcXVpcmVtZW50IGFuZCByZWplY3QgYW55IGVuZHBvaW50IHdob3NlIERUIGJ1cy10
eXBlIGRpc2FncmVlcyAtLQ0KPj4gICBldmVyeSBJVDY2MjYgQy1QSFkgZGV2aWNlIHRyZWUgZmFp
bGVkIHRvIHByb2JlIGFzIGEgcmVzdWx0Lg0KPj4gDQo+PiBPbmUgb3RoZXIgdjUgcmV2aWV3IGZp
bmRpbmcgd2FzIGNoZWNrZWQgYW5kIGlzIG5vdCBiZWluZyBhY3RlZCBvbjoNCj4+IC0gQSBjb25j
dXJyZW50IFZJRElPQ19TVUJERVZfU19FRElEIGlvY3RsIHJhY2luZyBpdDY2MjVfcmVtb3ZlKCkn
cw0KPj4gICBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKSBjb3VsZCBpbiBwcmluY2lwbGUgc2No
ZWR1bGUNCj4+ICAgaHBkX2RlbGF5ZWRfd29yayBhZnRlciB0ZWFyZG93biBmcmVlcyB0aGUgZHJp
dmVyIHN0YXRlLiBSZWFsIGluIHRoZQ0KPj4gICBhYnN0cmFjdCAtLSBubyBsb2NrIHNlcmlhbGl6
ZXMgYW4gaW4tZmxpZ2h0IGlvY3RsIGFnYWluc3QNCj4+ICAgdmlkZW9fdW5yZWdpc3Rlcl9kZXZp
Y2UoKSAtLSBidXQgdGhlIGlkZW50aWNhbCB1bmxvY2tlZCBwYXR0ZXJuDQo+PiAgIChkZWxheWVk
IHdvcmsgc2NoZWR1bGVkIGZyb20gdGhlIHNfZWRpZCBwYXRoLCByZW1vdmUoKSBkb2luZyBvbmx5
DQo+PiAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpKSBleGlzdHMgdW5maXhlZCBpbiB0YzM1
ODc0My5jIGFuZA0KPj4gICBhZHY3NjA0LmMsIGFuZCB0aGlzIGlzIHRoZSBzYW1lIHJlc2lkdWFs
IHJpc2sgYWxyZWFkeSBkaXNtaXNzZWQgaW4NCj4+ICAgdGhlIHYyL3YzL3Y0IHJvdW5kcyBvZiB0
aGlzIHNlcmllcyBmb3IgdGhlIHNhbWUgcmVhc29uOiBubyBwZWVyDQo+PiAgIGRyaXZlciBhZGRz
IGV4dHJhIHN5bmNocm9uaXphdGlvbiBmb3IgaXQgZWl0aGVyLg0KPj4gDQo+PiBDaGFuZ2VzIGlu
IHY1Og0KPj4gLSBGaXggYSBrZXJuZWwtc3RhY2stbWVtb3J5IGxlYWsgaW4gaXQ2NjI1X2VkaWRf
cmFtX3Nob3coKSBhbmQNCj4+ICAgaXQ2NjI1X21pcGlfcmVnX3Nob3coKTogYm90aCBwcmludGVk
IGFuIHVuaW5pdGlhbGl6ZWQgb24tc3RhY2sNCj4+ICAgcmVnaXN0ZXIgYnVmZmVyIHRvIHVzZXJz
cGFjZSB2aWEgZGVidWdmcyB3aXRob3V0IGNoZWNraW5nIHdoZXRoZXINCj4+ICAgdGhlIHByZWNl
ZGluZyBJMkMgYnVsayByZWFkIGFjdHVhbGx5IHN1Y2NlZWRlZC4NCj4+IC0gRml4IHR3byByZWxh
dGVkIGZvcm1hdC1uZWdvdGlhdGlvbiBidWdzOiBpdDY2MjVfc2V0X2ZtdCgpJ3MNCj4+ICAgVjRM
Ml9TVUJERVZfRk9STUFUX1RSWSBicmFuY2ggbmV2ZXIgdXBkYXRlZCBmbXQtPmNvbG9yc3BhY2Ug
dG8NCj4+ICAgbWF0Y2ggdGhlIG5ldyBmbXQtPmNvZGUsIGFuZCBpdDY2MjVfZ2V0X2ZtdCgpJ3Mg
VFJZIGJyYW5jaCBjb21wdXRlZA0KPj4gICB0aGUgcmV0dXJuZWQgY29sb3JzcGFjZSBmcm9tIHRo
ZSBhY3RpdmUgaGFyZHdhcmUgc3RhdGUgaW5zdGVhZCBvZg0KPj4gICB0aGUgVFJZIHN0YXRlJ3Mg
b3duIGZvcm1hdCwgbGVha2luZyBhY3RpdmUgc3RhdGUgaW50byB3aGF0IHNob3VsZA0KPj4gICBi
ZSBhbiBpc29sYXRlZCBUUlkgYnVmZmVyIC0tIHN0b3JlIGFuZCByZWFkIGNvZGUgYW5kIGNvbG9y
c3BhY2UNCj4+ICAgdG9nZXRoZXIgaW4gc2Rfc3RhdGUgaW5zdGVhZC4gU2VwYXJhdGVseSwgaXQ2
NjI1X3NldF9mbXQoKSdzDQo+PiAgIGFjdGl2ZS1mb3JtYXQgcGF0aCByZWxlYXNlZCBpdDY2MjVf
bG9jayBiZWZvcmUgcHJvZ3JhbW1pbmcgdGhlDQo+PiAgIGhhcmR3YXJlLCBsZXR0aW5nIHR3byBj
b25jdXJyZW50IFNfRk1UIGNhbGxzIGludGVybGVhdmUgYW5kIGxlYXZlDQo+PiAgIHRoZSBoYXJk
d2FyZSBwcm9ncmFtbWVkIGZvciB0aGUgd3JvbmcgdGhyZWFkJ3MgZm9ybWF0OyBhZGQgX2xvY2tl
ZA0KPj4gICB2YXJpYW50cyBvZiBpdDY2MjVfZW5hYmxlX3N0cmVhbSgpL2l0NjYyNV9zZXRfbWlw
aV9jb25maWcoKSBhbmQgY2FsbA0KPj4gICB0aGVtIGZyb20gaW5zaWRlIHNldF9mbXQoKSdzIGV4
aXN0aW5nIGxvY2sgc2NvcGUgc28gdGhlIHdob2xlDQo+PiAgIHVwZGF0ZSBpcyBub3cgYXRvbWlj
Lg0KPj4gLSBGaXggaXQ2NjI1X3NfZWRpZCgpOiBwZXIgdGhlIFZJRElPQ19TX0VESUQgc3BlYywg
YmxvY2tzID09IDAgbXVzdA0KPj4gICBsZWF2ZSB0aGUgRURJRCBkaXNhYmxlZCAoIm5vIGxvbmdl
ciBhdmFpbGFibGUiKSwgYnV0IHRoZSBkcml2ZXINCj4+ICAgZGlzYWJsZWQgSFBEIGFuZCB0aGVu
IGZlbGwgdGhyb3VnaCB0byB0aGUgbm9ybWFsIGNvbXBsZXRpb24gcGF0aCwNCj4+ICAgd2hpY2gg
dW5jb25kaXRpb25hbGx5IHJlLWVuYWJsZWQgaXQgLS0gcmV0dXJuIGltbWVkaWF0ZWx5IGluc3Rl
YWQuDQo+PiAgIEFsc28gc3RvcCBhIGZhaWxlZCBpdDY2MjVfd3JpdGVfZWRpZCgpIGZyb20gc2tp
cHBpbmcgdGhlIEhQRA0KPj4gICByZS1lbmFibGUgZW50aXJlbHksIHdoaWNoIGxlZnQgSFBEIGRp
c2FibGVkIHBlcm1hbmVudGx5IGFmdGVyIGFueQ0KPj4gICBzaW5nbGUgZmFpbGVkIFNfRURJRCBj
YWxsLg0KPj4gLSBUYWtlIGl0NjYyNV9sb2NrIGFyb3VuZCBpdDY2MjVfbWlwaV9yZWdfd3JpdGUo
KSdzIEkyQyB3cml0ZSwNCj4+ICAgbWF0Y2hpbmcgZXZlcnkgb3RoZXIgcmVnaXN0ZXIgYWNjZXNz
IGluIHRoZSBkcml2ZXIuDQo+PiAtIERlcml2ZSBJVDY2MjVfQ0lEX0hETUlfSU5GTydzIHN0cmlu
ZyBmcm9tIHJlYWwgc3RhdGUNCj4+ICAgKGl0NjYyNS0+Y3NpX2Zvcm1hdCBhbmQgZnBzX2Zyb21f
YnRfdGltaW5ncygpKSBpbnN0ZWFkIG9mIHJldHVybmluZw0KPj4gICBhIGhhcmRjb2RlZCAiUkdC
NDQ0IDEwYml0IEAgNjBIeiIgcmVnYXJkbGVzcyBvZiBhY3R1YWwgc2lnbmFsLg0KPj4gLSBXaXJl
IHVwIHRoZSBwcmV2aW91c2x5LXVudXNlZCByZXNldC1ncGlvcyBsaW5lIGluIHByb2JlKCk6IGFj
cXVpcmUNCj4+ICAgaXQgdmlhIGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKCkgYW5kIHRvZ2dsZSBp
dCAoYXNzZXJ0IGJyaWVmbHksIHRoZW4NCj4+ICAgZGVhc3NlcnQgYW5kIGxldCBpdCBzZXR0bGUp
IGJlZm9yZSB0aGUgZmlyc3QgSTJDIGFjY2Vzcy4NCj4+IA0KPj4gQWxsIGZvdW5kIGJ5IHRoZSBz
YXNoaWtvLmRldiBhdXRvbWF0ZWQgcmV2aWV3IG9mIHY0LiBUaHJlZSBvdGhlciB2NA0KPj4gcmV2
aWV3IGZpbmRpbmdzIHdlcmUgY2hlY2tlZCBhbmQgYXJlIG5vdCBiZWluZyBhY3RlZCBvbjoNCj4+
IC0gaXQ2NjI1X21pcGlfcmVnX3Nob3coKSdzIHJhdyByZWdpc3RlciBkdW1wIGNvdWxkIGRlc3Ry
dWN0aXZlbHkNCj4+ICAgY29uc3VtZSBhIHBlbmRpbmcgQ0VDIFJYIG1lc3NhZ2UgdmlhIFJFR19D
RUNfUlhfREFUQSAoMHgyMCkgLS0NCj4+ICAgY2hlY2tlZCB3aXRoIHRoZSBoYXJkd2FyZSBhdXRo
b3I6IHJlYWRpbmcgUkVHX0NFQ19SWF9EQVRBIGlzIG5vdA0KPj4gICBkZXN0cnVjdGl2ZSwgb25s
eSB0aGUgZXhwbGljaXQgd3JpdGUtMCB0byBSRUdfQ0VDX1JYX0RBVEFfTEVODQo+PiAgIGNsZWFy
cyBzdGF0ZS4gVGhlIHY0IGNoYW5nZWxvZydzICJsaWtlbHkgY2xlYXItb24tcmVhZCIgYXNzdW1w
dGlvbg0KPj4gICBmb3IgdGhpcyBzYW1lIHJlZ2lzdGVyIHdhcyB3cm9uZy4NCj4+IC0gZGV2bV9r
emFsbG9jJ2Qgc3RhdGUgKyBzdWJkZXYgZGV2bm9kZSBVQUYtaW4tdGhlLWFic3RyYWN0IG9uIHVu
YmluZA0KPj4gICAtLSBzYW1lIHJlYXNvbmluZyBhcyB0aGUgdjIvdjMgcm91bmRzOiBtYXRjaGVz
IHRjMzU4NzQzLmMvYWR2NzYwNC5jLw0KPj4gICBhZHY3ODQyLmMgZXhhY3RseSwgYW4gYWNjZXB0
ZWQgVjRMMi1zdWJzeXN0ZW0td2lkZSBwYXR0ZXJuLCBub3QgYQ0KPj4gICBkZWZlY3QgdW5pcXVl
IHRvIHRoaXMgZHJpdmVyLg0KPj4gLSBDb25jdXJyZW50IFZJRElPQ19TVUJERVZfU19FRElEIHJh
Y2luZyBpdDY2MjVfcmVtb3ZlKCkncw0KPj4gICBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoKS9t
dXRleF9kZXN0cm95KCkgLS0gdGhlIHNhbWUgcmVzaWR1YWwgcmlzaw0KPj4gICBkaXNtaXNzZWQg
aW4gdGhlIHYzIHJvdW5kOiByZWFsIGluIHRoZSBhYnN0cmFjdCwgYnV0IG5vIHBlZXIgZHJpdmVy
DQo+PiAgIGFkZHMgZXh0cmEgc3luY2hyb25pemF0aW9uIGZvciBpdCBlaXRoZXIsIGFuZCB0aGUg
djIgcm91bmQncyBmaXgNCj4+ICAgKHVucmVnaXN0ZXIgdGhlIHN1YmRldiBmaXJzdCBpbiByZW1v
dmUoKSkgYWxyZWFkeSBuYXJyb3dlZCB0aGlzIHRvDQo+PiAgIHRoZSBzYW1lIHJlc2lkdWFsIHJp
c2sgbGV2ZWwgZXZlcnkgcGVlciBkcml2ZXIgY2Fycmllcy4NCj4+IA0KPj4gQ2hhbmdlcyBpbiB2
NDoNCj4+IC0gQWx3YXlzIGFja25vd2xlZGdlIHRoZSBDRUMgUlggbGVuZ3RoIHJlZ2lzdGVyIG9u
Y2UgdGhlIFJYIGludGVycnVwdA0KPj4gICBicmFuY2ggaXMgZW50ZXJlZCwgZXZlbiB3aGVuIHRo
ZSByZXBvcnRlZCBsZW5ndGggaXMgaW52YWxpZCAtLQ0KPj4gICBwcmV2aW91c2x5IHRoZSBhY2sg
d3JpdGUgb25seSBoYXBwZW5lZCBvbiB2YWxpZCBsZW5ndGhzLCBzbyBhbg0KPj4gICBpbnZhbGlk
IGxlbmd0aCBsZWZ0IHRoZSBpbnRlcnJ1cHQgYXNzZXJ0ZWQsIHdoaWNoIGNvdWxkIHN0b3JtIHRo
ZQ0KPj4gICBJUlEgbGluZS4NCj4+IC0gRmFsbCBiYWNrIHRvIGEgZGVmYXVsdCBmb3JtYXQgaW5z
dGVhZCBvZiByZXR1cm5pbmcgLUVJTlZBTCBmcm9tDQo+PiAgIGl0NjYyNV9zZXRfZm10KCkgd2hl
biB0aGUgcmVxdWVzdGVkIG1idXMgY29kZSBpc24ndCByZWNvZ25pemVkLA0KPj4gICBtYXRjaGlu
ZyB0aGUgVjRMMiBzdWJkZXYgc2V0X2ZtdCBjb252ZW50aW9uIChjZi4gYWR2NzYwNC5jKS4gVGFr
ZQ0KPj4gICBpdDY2MjVfbG9jayBhcm91bmQgaXQ2NjI1X2dldF9mbXQoKSdzIEFDVElWRS1wYXRo
IHJlYWRzIG9mDQo+PiAgIGNzaV9mb3JtYXQvbWJ1c19mbXRfY29kZSwgd2hpY2ggY291bGQgb3Ro
ZXJ3aXNlIG9ic2VydmUgYSB0b3JuDQo+PiAgIHVwZGF0ZSBmcm9tIGEgY29uY3VycmVudCBzZXRf
Zm10KCkuDQo+PiAtIEZpeCBFRElEIGlvY3RsIHNwZWMgY29uZm9ybWFuY2U6IGl0NjYyNV9nX2Vk
aWQoKSBub3cgY2xhbXBzIHRoZQ0KPj4gICByZXF1ZXN0ZWQgYmxvY2sgY291bnQgYW5kIHJldHVy
bnMgc3VjY2VzcyBpbnN0ZWFkIG9mIHByb3BhZ2F0aW5nIGFuDQo+PiAgIGVycm9yIHdoZW4gdGhl
IHJlcXVlc3QgZXhjZWVkcyBjYXBhY2l0eTsgaXQ2NjI1X3NfZWRpZCgpIG5vdyByZXR1cm5zDQo+
PiAgIC1FMkJJRyAobm90IC1FSU5WQUwpIHdpdGggYmxvY2tzIHNldCB0byB0aGUgbWF4aW11bSwg
d2l0aG91dA0KPj4gICBhdHRlbXB0aW5nIHRoZSB3cml0ZSwgd2hlbiB0aGUgcmVxdWVzdCBleGNl
ZWRzIGNhcGFjaXR5OyBhbmQNCj4+ICAgaXQ2NjI1X3JlYWRfZWRpZCgpL2l0NjYyNV93cml0ZV9l
ZGlkKCkncyBsb3ctbGV2ZWwgYm91bmRzIGNoZWNrIG5vdw0KPj4gICB0ZXN0cyBzdGFydF9ibG9j
ayBhbmQgbnVtX2Jsb2NrcyBpbmRpdmlkdWFsbHkgYmVmb3JlIHN1bW1pbmcgdGhlbSwNCj4+ICAg
c2luY2UgdGhlIHN1bSBjb3VsZCBvdGhlcndpc2Ugb3ZlcmZsb3cgZ2l2ZW4gdGhlIHVuc2lnbmVk
IF9fdTMyDQo+PiAgIGZpZWxkcyBvZiBzdHJ1Y3QgdjRsMl9lZGlkLg0KPj4gLSBIYXJkZW4gdGhl
IG1pcGlfcmVnIGRlYnVnZnMgaGFuZGxlcnM6IGl0NjYyNV9taXBpX3JlZ193cml0ZSgpIG5vdw0K
Pj4gICBhbHdheXMgcGFyc2VzIGZyb20gYSBsb2NhbCBvZmZzZXQgdGhhdCBzdGFydHMgYXQgMCBp
bnN0ZWFkIG9mIHRoZQ0KPj4gICByZWFsIGZpbGUgb2Zmc2V0LCBzaW5jZSB0aGlzIGlzIGEgc3Rh
dGVsZXNzIG9uZS13cml0ZS1vbmUtY29tbWFuZA0KPj4gICBpbnRlcmZhY2UsIG5vdCBhIHNlZWth
YmxlIHN0cmVhbTsgaXQ2NjI1X21pcGlfcmVnX3Nob3coKSBub3cgdGFrZXMNCj4+ICAgaXQ2NjI1
X2xvY2sgYXJvdW5kIGl0cyByYXcgcmVnaXN0ZXItYmFuayByZWFkLCBtYXRjaGluZyBldmVyeSBv
dGhlcg0KPj4gICBiYW5rZWQtcmVnaXN0ZXIgYWNjZXNzIGluIHRoZSBkcml2ZXIgKHRoZSBkdW1w
ZWQgcmFuZ2UgYWxzbyBpbmNsdWRlcw0KPj4gICBSRUdfQ0VDX1JYX0RBVEEsIHdoaWNoIHRoZSBD
RUMgaGFuZGxlciB0cmVhdHMgYXMgY2xlYXItb24tcmVhZCwgc28gYW4NCj4+ICAgdW5sb2NrZWQg
cmVhZCBjb3VsZCBzaWxlbnRseSBzdGVhbCBhIHBlbmRpbmcgQ0VDIFJYIG1lc3NhZ2UpLg0KPj4g
LSBNYXJrIHRoZSBIRE1JIGluZm8gY29udHJvbCAoSVQ2NjI1X0NJRF9IRE1JX0lORk8pIHZvbGF0
aWxlOg0KPj4gICBpdDY2MjVfZ192b2xhdGlsZV9jdHJsKCkgYWxyZWFkeSBoYWQgYSBsaXZlIGNh
c2UgZm9yIGl0LCBidXQgdGhlDQo+PiAgIGNvbnRyb2wncyB2NGwyX2N0cmxfY29uZmlnIHdhcyBt
aXNzaW5nIFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFLCBzbw0KPj4gICB0aGF0IGNhc2Ugd2FzIG5l
dmVyIGFjdHVhbGx5IHJlYWNoZWQgYW5kIHRoZSBjb250cm9sJ3MgdmFsdWUgd2FzDQo+PiAgIG5l
dmVyIHJlZnJlc2hlZC4NCj4+IA0KPj4gQWxsIGZvdW5kIGJ5IHRoZSBzYXNoaWtvLmRldiBhdXRv
bWF0ZWQgcmV2aWV3IG9mIHYzLg0KPj4gDQo+PiBTZXBhcmF0ZWx5LCBub3QgYSByZXZpZXcgZmlu
ZGluZzogcmVtb3ZlIGEgcmVkdW5kYW50IEZXLXN0YXJ0IHJlZ2lzdGVyDQo+PiB0cmlnZ2VyIGZy
b20gaXQ2NjI1X2luaXRpYWxfc2V0dXAoKSAtLSB0aGUgY2hpcCdzIGZpcm13YXJlIHN0YXJ0cw0K
Pj4gYXV0b21hdGljYWxseSBvbiBwb3dlci1vbiwgc28gdGhlIGV4cGxpY2l0IHNvZnR3YXJlIHRy
aWdnZXIgd2FzIGRlYWQNCj4+IHdlaWdodC4NCj4+IA0KPj4gQ2hhbmdlcyBpbiB2MzoNCj4+IC0g
RmluaXNoIHRoZSBiYW5rZWQtcmVnaXN0ZXIgbG9ja2luZyBmcm9tIHYyOiBpdDY2MjVfaXJxX2lu
Zm9mcmFtZV9sYXRjaCgpDQo+PiAgIGFuZCBnZXRfYXVkaW9fc2FtcGxpbmdfcmF0ZSgpIGFsc28g
cmVhZCBiYW5rZWQgcmVnaXN0ZXJzIHdpdGhvdXQNCj4+ICAgaXQ2NjI1X2xvY2s7IHRha2UgdGhl
IGxvY2sgaW5zaWRlIHRoZSBDRUMgUlggYnJhbmNoIGFjcm9zcyB0aGUNCj4+ICAgbGVuZ3RoIHJl
YWQsIGRhdGEgcmVhZCBhbmQgbGVuZ3RoLWNsZWFyIHRvZ2V0aGVyIChjbG9zaW5nIGEgVE9DVE9V
DQo+PiAgIHdoZXJlIHRoZSBsZW5ndGggY291bGQgZ28gc3RhbGUgdW5kZXIgbG9jayBjb250ZW50
aW9uKSwgYW5kIHN0b3AgdGhlDQo+PiAgIFJYIGJyYW5jaCBmcm9tIHVzaW5nIGFuIGVhcmx5IHJl
dHVybiB0aGF0IHNraXBwZWQgYSBzaW11bHRhbmVvdXMgQ0VDDQo+PiAgIFRYIGludGVycnVwdC4N
Cj4+IC0gRml4IGl0NjYyNV9zX2VkaWQoKSBpbmNvcnJlY3RseSB0cmVhdGluZyBhIHN1Y2Nlc3Nm
dWwgRURJRCB3cml0ZSBhcw0KPj4gICBhIGZhaWx1cmU6IGl0NjYyNV93cml0ZV9lZGlkKCkgcmV0
dXJucyBhIHBvc2l0aXZlIGJsb2NrIGNvdW50IG9uDQo+PiAgIHN1Y2Nlc3MsIG5vdCAwLCBzbyBg
aWYgKGVycilgIHNraXBwZWQgdGhlIENFQyBwaHlzLWFkZHIgdXBkYXRlIGFuZA0KPj4gICBIUEQg
cmUtZW5hYmxlIG9uIGV2ZXJ5IHN1Y2Nlc3NmdWwgd3JpdGUuIFByZS1leGlzdGluZyBzaW5jZSB2
MSwgbm90DQo+PiAgIGludHJvZHVjZWQgYnkgdGhlIHYyIGJsb2Nrcz09MCBoYW5kbGluZy4NCj4+
IC0gQWRkIHJlYWwgVjRMMl9TVUJERVZfRk9STUFUX1RSWSBzdXBwb3J0IGluIGdldF9mbXQvc2V0
X2ZtdCB2aWENCj4+ICAgc2Rfc3RhdGUsIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHVzZWQgYnkgYWR2
NzYwNC5jLCBhbmQgbG9jayB0aGUNCj4+ICAgY3NpX2Zvcm1hdC9tYnVzX2ZtdF9jb2RlIGNvbW1p
dCBpbiB0aGUgQUNUSVZFIHBhdGggYWdhaW5zdA0KPj4gICBjb25jdXJyZW50IFNfRk1UIGNhbGxz
Lg0KPj4gLSBSZWFkIHRoZSBjaGlwJ3MgcmVhbCBwb3JjaC9zeW5jLXdpZHRoIHJlZ2lzdGVycw0K
Pj4gICAoUkVHX0hfRlBfMS4uUkVHX1ZfQlBfMCkgaW4gaXQ2NjI1X2dldF9kZXRlY3RlZF90aW1p
bmdzKCkgaW5zdGVhZCBvZg0KPj4gICBsdW1waW5nIHRoZSB3aG9sZSBibGFua2luZyBpbnRlcnZh
bCBpbnRvIGhzeW5jL3ZzeW5jLCBzbyBkZXRlY3RlZA0KPj4gICB0aW1pbmdzIGNhbiBhY3R1YWxs
eSBtYXRjaCB0aGUgc3RhbmRhcmQgQ0VBL1ZFU0EgdGFibGVzLg0KPj4gDQo+PiBBbGwgZm91bmQg
YnkgdGhlIHNhc2hpa28uZGV2IGF1dG9tYXRlZCByZXZpZXcgb2YgdjIuIEZvdXIgb3RoZXIgdjIN
Cj4+IHJldmlldyBmaW5kaW5ncyB3ZXJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgY29kZSBhbmQgYXJl
IG5vdCBiZWluZyBhY3RlZA0KPj4gb246DQo+PiAtICJ0aW1lcl9jb250YWluZXJfb2YoKSBkb2Vz
bid0IGV4aXN0IiAtLSBpdCBkb2VzDQo+PiAgIChpbmNsdWRlL2xpbnV4L3RpbWVyLmgpLCB0aGUg
ZHJpdmVyIGFscmVhZHkgYnVpbGRzIGNsZWFuIHdpdGggaXQuDQo+PiAtICJkZXZtX2t6YWxsb2Mn
ZCBzdGF0ZSArIHN1YmRldiBkZXZub2RlIHJpc2tzIGEgVUFGIG9uIHVuYmluZCIgLS0NCj4+ICAg
dHJ1ZSBpbiB0aGUgYWJzdHJhY3QsIGJ1dCBpdCdzIHRoZSBleGFjdCBwYXR0ZXJuIHVzZWQgYnkg
ZXZlcnkNCj4+ICAgY29tcGFyYWJsZSBpbi10cmVlIGRyaXZlciAodGMzNTg3NDMuYywgYWR2NzYw
NC5jLCBhZHY3ODQyLmMgYWxsDQo+PiAgIGRldm1fa3phbGxvYyB0aGVpciBtYWluIHN0YXRlIHN0
cnVjdCBkZXNwaXRlIHNldHRpbmcNCj4+ICAgVjRMMl9TVUJERVZfRkxfSEFTX0RFVk5PREUgdG9v
KS4NCj4+IC0gInVucmVnaXN0ZXJpbmcgdGhlIHN1YmRldiBiZWZvcmUgZGlzYWJsaW5nIElSUS93
b3JrIGluIHJlbW92ZSgpDQo+PiAgIGxlYXZlcyBzZC0+ZGV2bm9kZSBkYW5nbGluZyIgLS0gY2hl
Y2tlZCB0aGUgY29yZToNCj4+ICAgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoKSBvbmx5
IG1hcmtzIHNkLT5kZXZub2RlIHVucmVnaXN0ZXJlZA0KPj4gICB2aWEgdmlkZW9fdW5yZWdpc3Rl
cl9kZXZpY2UoKSwgaXQgZG9lcyBub3QgZnJlZSBpdDsgdGhlIHN0cnVjdCBpcw0KPj4gICBmcmVl
ZCBsYXRlciB2aWEga3JlZiBvbiBsYXN0IGNsb3NlLCBzbyB0aGUgcG9pbnRlciBzdGF5cyB2YWxp
ZC4NCj4+IC0gdGhlIHJlc2lkdWFsICJpb2N0bCByZXNjaGVkdWxlcyBocGRfZGVsYXllZF93b3Jr
IGNvbmN1cnJlbnRseSB3aXRoDQo+PiAgIHJlbW92ZSgpIiByYWNlIC0tIHJlYWwgaW4gdGhlIGFi
c3RyYWN0IChyZXF1aXJlcyBhbiBpb2N0bCBhbHJlYWR5DQo+PiAgIGluIGZsaWdodCBhdCB0aGUg
ZXhhY3QgbW9tZW50IG9mIHVuYmluZCksIGJ1dCBubyBwZWVyIGRyaXZlciBhZGRzDQo+PiAgIGV4
dHJhIHN5bmNocm9uaXphdGlvbiBmb3IgdGhpcyBlaXRoZXIgKG5vbmUgc2V0IHNkLT5kZXZub2Rl
LT5sb2NrKSwNCj4+ICAgYW5kIHRoZSB2MiBmaXggKHVucmVnaXN0ZXIgZmlyc3QgaW4gcmVtb3Zl
KCkpIGFscmVhZHkgbmFycm93ZWQgdGhpcw0KPj4gICBkb3duIHRvIHRoZSBzYW1lIHJlc2lkdWFs
IHJpc2sgbGV2ZWwgZXZlcnkgcGVlciBkcml2ZXIgY2Fycmllcy4NCj4+IA0KPj4gQ2hhbmdlcyBp
biB2MjoNCj4+IC0gRml4IHByZW1hdHVyZSB2NGwyX2FzeW5jX3JlZ2lzdGVyX3N1YmRldigpOiBt
b3ZlIGl0IHRvIHRoZSBlbmQgb2YNCj4+ICAgcHJvYmUoKSAoYWZ0ZXIgY3RybCBoYW5kbGVyLCBD
RUMgYW5kIGluaXRpYWwgaGFyZHdhcmUgc2V0dXApLCBhbmQNCj4+ICAgbWlycm9yIHRoZSB1bnJl
Z2lzdGVyIG9yZGVyIGF0IHRoZSB0b3Agb2YgcmVtb3ZlKCksIGNsb3NpbmcgYQ0KPj4gICB1c2Ut
YWZ0ZXItZnJlZSB3aW5kb3cgd2hlcmUgYSBjb25jdXJyZW50IGlvY3RsIGNvdWxkIHJlc2NoZWR1
bGUNCj4+ICAgaHBkX2RlbGF5ZWRfd29yayBkdXJpbmcgdGVhcmRvd24uDQo+PiAtIFRha2UgaXQ2
NjI1X2xvY2sgYXJvdW5kIHRoZSBiYW5rZWQgcmVnaXN0ZXIgcmVhZHMgaW4NCj4+ICAgaXQ2NjI1
X2dldF9kZXRlY3RlZF90aW1pbmdzKCkgYW5kIHRoZSBDRUMgUlggcGF0aCBpbg0KPj4gICBpdDY2
MjVfY2VjX2hhbmRsZXIoKSwgd2hpY2ggY291bGQgb3RoZXJ3aXNlIHJhY2Ugd2l0aCBhbiBpbi1w
cm9ncmVzcw0KPj4gICBFRElEIHJlYWQvd3JpdGUgYW5kIG9ic2VydmUgdGhlIHdyb25nIGJhbmsu
DQo+PiAtIEZpeCBpdDY2MjVfd2FpdF9mb3Jfc3RhdHVzKCkncyBwb2xsIGludGVydmFsIGV4Y2Vl
ZGluZyB0aGUgdGltZW91dA0KPj4gICBidWRnZXQsIHNwbGl0IHRoZSBDRUMgUlgvVFggaW50ZXJy
dXB0IGhhbmRsaW5nIG91dCBvZiBhbiBlbHNlLWlmIHNvDQo+PiAgIHNpbXVsdGFuZW91cyBldmVu
dHMgYXJlbid0IGRyb3BwZWQsIGFuZCB3YWl0IGZvciBoYXJkd2FyZSB0byBsYXRjaA0KPj4gICB0
aGUgQ0VDIHRyYW5zbWl0IHRyaWdnZXIgYml0IGJlZm9yZSByZWxlYXNpbmcgdGhlIGxvY2suDQo+
PiAtIFN0b3AgaXQ2NjI1X3NldF9mbXQoKSBmcm9tIG11dGF0aW5nIGFjdGl2ZSBzdGF0ZSBvbg0K
Pj4gICBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZLCBhbmQgaGFuZGxlIGVkaWQtPmJsb2NrcyA9PSAw
IGluIGdfZWRpZC9zX2VkaWQNCj4+ICAgcGVyIHRoZSBWNEwyIHNwZWMgKGNhcGFjaXR5IHF1ZXJ5
IC8gRURJRCBjbGVhcikuDQo+PiAtIFplcm8taW5pdGlhbGl6ZSB0aGUgQ0VDIHJ4bXNnIGFuZCBk
ZWJ1Z2ZzIG1pcGlfcmVnIHdyaXRlIGJ1ZmZlciB0bw0KPj4gICBhdm9pZCBsZWFraW5nIHVuaW5p
dGlhbGl6ZWQgc3RhY2sgYnl0ZXMsIGFuZCB1c2UgZGVzaWduYXRlZA0KPj4gICBpbml0aWFsaXpl
cnMgaW4gdGhlIGkyY19kZXZpY2VfaWQgdGFibGUuDQo+PiANCj4+IEFsbCBmb3VuZCBieSB0aGUg
c2FzaGlrby5kZXYgYXV0b21hdGVkIHJldmlldyBvZiB2MS4NCj4+IC0tLQ0KPj4gIE1BSU5UQUlO
RVJTICAgICAgICAgICAgICAgIHwgICAgNyArDQo+PiAgZHJpdmVycy9tZWRpYS9pMmMvS2NvbmZp
ZyAgfCAgIDE4ICsNCj4+ICBkcml2ZXJzL21lZGlhL2kyYy9NYWtlZmlsZSB8ICAgIDEgKw0KPj4g
IGRyaXZlcnMvbWVkaWEvaTJjL2l0NjYyNS5jIHwgMjIzMSArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKw0KPj4gIDQgZmlsZXMgY2hhbmdlZCwgMjI1NyBpbnNlcnRp
b25zKCspDQo+PiANCj4+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQo+
PiBpbmRleCAxNTAxMWY1NzUyYTk5NGNmMWIzNTRmNDkwZDZjNGU0MTE1ODhkZjg4Li4yZDViMGVl
MTA3ZjllMzI1NWE1MzY1ZWMwYTI1MTY3YTcxNmIxZTZlIDEwMDY0NA0KPj4gLS0tIGEvTUFJTlRB
SU5FUlMNCj4+ICsrKyBiL01BSU5UQUlORVJTDQo+PiBAQCAtMTM4NDcsNiArMTM4NDcsMTMgQEAg
VDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0
DQo+PiAgRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdl
L2l0ZSxpdDY2MTIxLnlhbWwNCj4+ICBGOglkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2l0ZS1pdDY2
MTIxLmMNCj4+ICANCj4+ICtJVEUgSVQ2NjI1IEhETUkgdG8gTUlQSSBNRURJQSBEUklWRVINCj4+
ICtNOglIZXJtZXMgV3UgPEhlcm1lcy5XdUBpdGUuY29tLnR3Pg0KPj4gK1M6CU1haW50YWluZWQN
Cj4+ICtUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0DQo+PiArRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9pdGUsaXQ2NjI1LnlhbWwNCj4+ICtG
Oglkcml2ZXJzL21lZGlhL2kyYy9pdDY2MjUuYw0KPj4gKw0KPj4gIElWVFYgVklERU80TElOVVgg
RFJJVkVSDQo+PiAgTToJQW5keSBXYWxscyA8YXdhbGxzQG1kLm1ldHJvY2FzdC5uZXQ+DQo+PiAg
TDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t
ZWRpYS9pMmMvS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEvaTJjL0tjb25maWcNCj4+IGluZGV4IDVk
MTczZTBlY2Y0MjRmMmYyMDRmOGQ0MjZiZTgxOGU0NDM1N2Y4ZTQuLmZiNGIyNDY4NGY3NzEwZjkw
ZWIzOTk5NzZkMTFmNTc3MDE0ODhkMjYgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL21lZGlhL2ky
Yy9LY29uZmlnDQo+PiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9LY29uZmlnDQo+PiBAQCAtMTI3
OCw2ICsxMjc4LDI0IEBAIGNvbmZpZyBWSURFT19JU0w3OTk4WA0KPj4gIAkgIFN1cHBvcnQgZm9y
IEludGVyc2lsIElTTDc5OTh4IGFuYWxvZyB0byBNSVBJLUNTSTIgb3INCj4+ICAJICBCVC42NTYg
ZGVjb2Rlci4NCj4+ICANCj4+ICtjb25maWcgVklERU9fSVQ2NjI1DQo+PiArCXRyaXN0YXRlICJJ
VDY2MjUgSERNSSB0byBNSVBJIENTSSBicmlkZ2UiDQo+PiArCWRlcGVuZHMgb24gVklERU9fREVW
ICYmIEkyQw0KPj4gKwlkZXBlbmRzIG9uIE9GDQo+PiArCXNlbGVjdCBDRUNfQ09SRQ0KPj4gKwlz
ZWxlY3QgTUVESUFfQ09OVFJPTExFUg0KPj4gKwlzZWxlY3QgUkVHTUFQX0kyQw0KPj4gKwlzZWxl
Y3QgVjRMMl9GV05PREUNCj4+ICsJc2VsZWN0IFZJREVPX1Y0TDJfU1VCREVWX0FQSQ0KPj4gKwlo
ZWxwDQo+PiArCSAgVjRMMiBzdWJkZXZpY2UgZHJpdmVyIGZvciB0aGUgSVRFIElUNjYyNS9JVDY2
MjYgSERNSSB0byBNSVBJDQo+PiArCSAgQ1NJLTIgYnJpZGdlIGNoaXBzLiBJVDY2MjUgYWNjZXB0
cyBhbiBIRE1JIDIuMCBpbnB1dCBhbmQNCj4+ICsJICBJVDY2MjYgYW4gSERNSSAyLjEgaW5wdXQs
IGNvbnZlcnRpbmcgaXQgdG8gYSBNSVBJIENTSS0yDQo+PiArCSAgb3V0cHV0LiBUaGUgZHJpdmVy
IGFsc28gZXhwb3NlcyBhbiBIRE1JIENFQyBhZGFwdGVyLg0KPj4gKw0KPj4gKwkgIFRvIGNvbXBp
bGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQ0KPj4gKwkgIG1v
ZHVsZSB3aWxsIGJlIGNhbGxlZCBpdDY2MjUuDQo+PiArDQo+PiAgY29uZmlnIFZJREVPX0xUNjkx
MVVYRQ0KPj4gIAl0cmlzdGF0ZSAiTG9udGl1bSBMVDY5MTFVWEUgZGVjb2RlciINCj4+ICAJZGVw
ZW5kcyBvbiBBQ1BJICYmIFZJREVPX0RFViAmJiBJMkMNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz
L21lZGlhL2kyYy9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvaTJjL01ha2VmaWxlDQo+PiBpbmRl
eCBlNDUzNTllZmUwZTQxZTEzZTNjMDg2OWU1ZWFkN2Q2Y2Y0YWNhM2E3Li45YmJjZWFhM2QwNzU3
Mzk1OGVkYjhhMzZiYzdmMDk0MmYxNDEwYTM5IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9tZWRp
YS9pMmMvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL01ha2VmaWxlDQo+PiBA
QCAtNjMsNiArNjMsNyBAQCBvYmotJChDT05GSUdfVklERU9fSU1YNDEyKSArPSBpbXg0MTIubw0K
Pj4gIG9iai0kKENPTkZJR19WSURFT19JTVg0MTUpICs9IGlteDQxNS5vDQo+PiAgb2JqLSQoQ09O
RklHX1ZJREVPX0lSX0kyQykgKz0gaXIta2JkLWkyYy5vDQo+PiAgb2JqLSQoQ09ORklHX1ZJREVP
X0lTTDc5OThYKSArPSBpc2w3OTk4eC5vDQo+PiArb2JqLSQoQ09ORklHX1ZJREVPX0lUNjYyNSkg
Kz0gaXQ2NjI1Lm8NCj4+ICBvYmotJChDT05GSUdfVklERU9fS1MwMTI3KSArPSBrczAxMjcubw0K
Pj4gIG9iai0kKENPTkZJR19WSURFT19MTTM1NjApICs9IGxtMzU2MC5vDQo+PiAgb2JqLSQoQ09O
RklHX1ZJREVPX0xNMzY0NikgKz0gbG0zNjQ2Lm8NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l
ZGlhL2kyYy9pdDY2MjUuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL2l0NjYyNS5jDQo+PiBuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzQ3NDIyZWRlYmE3OTY5ZWMzYzk0NTk0YTk1YTk3YzYxNzBmNDlmMg0KPj4gLS0t
IC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvaXQ2NjI1LmMNCj4+IEBAIC0w
LDAgKzEsMjIzMSBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u
bHkNCj4+ICsvKg0KPj4gKyAqIGl0NjYyNSAtIGl0ZSBIRE1JIHRvIE1JUEkgYnJpZGdlDQo+PiAr
ICovDQo+PiArI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4
L2Nsay5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+DQo+PiArI2luY2x1ZGUgPGxp
bnV4L2RlbGF5Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4NCj4+ICsj
aW5jbHVkZSA8bGludXgvaGRtaS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCj4+ICsj
aW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o
Pg0KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvb2Zf
Z3JhcGguaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQo+PiArI2luY2x1ZGUgPGxp
bnV4L3NsYWIuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvdGltZXIuaD4NCj4+ICsjaW5jbHVkZSA8
bGludXgvdjRsMi1kdi10aW1pbmdzLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2Mi5o
Pg0KPj4gKyNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSA8
bWVkaWEvY2VjLmg+DQo+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItY3RybHMuaD4NCj4+ICsjaW5j
bHVkZSA8bWVkaWEvdjRsMi1kZXZpY2UuaD4NCj4+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1kdi10
aW1pbmdzLmg+DQo+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItZXZlbnQuaD4NCj4+ICsjaW5jbHVk
ZSA8bWVkaWEvdjRsMi1md25vZGUuaD4NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGRlYnVnID0gMzsN
Cj4+ICttb2R1bGVfcGFyYW0oZGVidWcsIGludCwgMDY0NCk7DQo+PiArTU9EVUxFX1BBUk1fREVT
QyhkZWJ1ZywgImRlYnVnIGxldmVsICgwLTMpIik7DQo+PiArDQo+PiArI2RlZmluZSBSRUdfQ0hJ
UF9JRF8wIDB4MDANCj4+ICsjZGVmaW5lIFJFR19DSElQX0lEXzEgMHgwMQ0KPj4gKyNkZWZpbmUg
UkVHX0ZXX1ZFUl9NQUpPUiAweDAzDQo+PiArI2RlZmluZSBSRUdfRldfVkVSX01JTk9SIDB4MDQN
Cj4+ICsjZGVmaW5lIFJFR19QUk9UT0NPTF9WRVJTSU9OIDB4MDUNCj4+ICsjZGVmaW5lIEJfUFZF
Ul9NSU5PUiAgQklUKDApDQo+PiArI2RlZmluZSBCX1BWRVJfTUFKT1IgIEJJVCg0KQ0KPj4gKw0K
Pj4gKyNkZWZpbmUgUkVHX0NNRF9TRVQgMHgxMA0KPj4gKyNkZWZpbmUgQ01EX1NFVF9DRUNfTEEg
MHhDMA0KPj4gKyNkZWZpbmUgQ01EX1NFVF9DRUNfRU5BQkxFIDB4QzENCj4+ICsNCj4+ICsjZGVm
aW5lIFJFR19FRElEX1NUQVJUIDB4MjANCj4+ICsjZGVmaW5lIFJFR19DRUNfUlhfREFUQSAweDIw
DQo+PiArI2RlZmluZSBSRUdfQ0VDX1RYX0RBVEEgMHgzMA0KPj4gKw0KPj4gKyNkZWZpbmUgUkVH
X0hfQUNUSVZFXzEgMHg1MA0KPj4gKyNkZWZpbmUgUkVHX0hfQUNUSVZFXzAgMHg1MQ0KPj4gKyNk
ZWZpbmUgUkVHX1ZfQUNUSVZFXzEgMHg1Mg0KPj4gKyNkZWZpbmUgUkVHX1ZfQUNUSVZFXzAgMHg1
Mw0KPj4gKyNkZWZpbmUgUkVHX0hfVE9UQUxfMSAweDU0DQo+PiArI2RlZmluZSBSRUdfSF9UT1RB
TF8wIDB4NTUNCj4+ICsjZGVmaW5lIFJFR19WX1RPVEFMXzEgMHg1Ng0KPj4gKyNkZWZpbmUgUkVH
X1ZfVE9UQUxfMCAweDU3DQo+PiArI2RlZmluZSBSRUdfVklEX1BDTEsgMHg1OA0KPj4gKyNkZWZp
bmUgUkVHX0hfRlBfMSAweDVDDQo+PiArI2RlZmluZSBSRUdfSF9GUF8wIDB4NUQNCj4+ICsjZGVm
aW5lIFJFR19IX1NXXzEgMHg1RQ0KPj4gKyNkZWZpbmUgUkVHX0hfU1dfMCAweDVGDQo+PiArI2Rl
ZmluZSBSRUdfSF9CUF8xIDB4NjANCj4+ICsjZGVmaW5lIFJFR19IX0JQXzAgMHg2MQ0KPj4gKyNk
ZWZpbmUgUkVHX1ZfRlBfMSAweDYyDQo+PiArI2RlZmluZSBSRUdfVl9GUF8wIDB4NjMNCj4+ICsj
ZGVmaW5lIFJFR19WX1NXXzEgMHg2NA0KPj4gKyNkZWZpbmUgUkVHX1ZfU1dfMCAweDY1DQo+PiAr
I2RlZmluZSBSRUdfVl9CUF8xIDB4NjYNCj4+ICsjZGVmaW5lIFJFR19WX0JQXzAgMHg2Nw0KPj4g
KyNkZWZpbmUgUkVHX1ZJRF9JTkZPIDB4NjgNCj4+ICsjZGVmaW5lIEJfSU5URVJMQUNFICBCSVQo
MCkNCj4+ICsjZGVmaW5lIEJfSFNXUE9MICBCSVQoMSkNCj4+ICsjZGVmaW5lIEJfVlNXUE9MICBC
SVQoMikNCj4+ICsjZGVmaW5lIEJfUElYRUxfUkVQICBCSVQoNCkNCj4+ICsNCj4+ICsjZGVmaW5l
IFJFR19WSUMgMHg2OQ0KPj4gKyNkZWZpbmUgUkVHX0hETUlfVklERU9fSU5GTyAweDZBDQo+PiAr
I2RlZmluZSBCX0NPTE9SX01PREUgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgQl9DT0xPUl9ERVBUSCAg
QklUKDQpDQo+PiArI2RlZmluZSBSRUdfSERNSV9BVURJT19JTkZPMSAweDZCDQo+PiArI2RlZmlu
ZSBCX0FVRF9GUyAgQklUKDApDQo+PiArDQo+PiArI2RlZmluZSBSRUdfSERNSV9BVURJT19JTkZP
MiAweDZDDQo+PiArI2RlZmluZSBCX0FVRF9DSCAgQklUKDApDQo+PiArI2RlZmluZSBCX0FVRF9X
TCAgQklUKDQpDQo+PiArDQo+PiArI2RlZmluZSBSRUdfSERNSV9BVURJT19JTkZPMyAweDZEDQo+
PiArI2RlZmluZSBCX0FVRF9UWVBFICBCSVQoMCkNCj4+ICsjZGVmaW5lIEJfQVVEX01TICBCSVQo
MikNCj4+ICsjZGVmaW5lIEJfQVVEXzNEICBCSVQoMykNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19B
VURJT19GTVQgMHg2RQ0KPj4gKyNkZWZpbmUgQl9JMlNfV0wgIEJJVCgwKQ0KPj4gKyNkZWZpbmUg
Ql9JMlNfQUxOIEJJVCgyKQ0KPj4gKyNkZWZpbmUgQl9JMlNfRExZIEJJVCgzKQ0KPj4gKyNkZWZp
bmUgQl9JMlNfTFIgIEJJVCg0KQ0KPj4gKyNkZWZpbmUgQl9JMlNfU0ZUIEJJVCg1KQ0KPj4gKyNk
ZWZpbmUgQl9BVURfT1VUX0lGICBCSVQoNikNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19JRl9MQVRD
SF9IQiAweDZGDQo+PiArI2RlZmluZSBSRUdfSUZfREFUQSAweDcwDQo+PiArI2RlZmluZSBSRUdf
RU1QX0RBVEEgMHhBMA0KPj4gKyNkZWZpbmUgUkVHX0FWSV9EQVRBIDB4QUUNCj4+ICsNCj4+ICsj
ZGVmaW5lIFJFR19UWF9TVEFUVVMgMHhFMA0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHX1JYX1NUQVRV
UyAweEUyDQo+PiArI2RlZmluZSBCX1JYXzVWIEJJVCgwKQ0KPj4gKyNkZWZpbmUgQl9SWF9IUEQg
QklUKDEpDQo+PiArI2RlZmluZSBCX1JYX1NUQUJMRSBCSVQoMikNCj4+ICsjZGVmaW5lIEJfUlhf
SERNSSBCSVQoMykNCj4+ICsjZGVmaW5lIEJfUlhfQVZNVVRFIEJJVCg0KQ0KPj4gKyNkZWZpbmUg
Ql9SWF9BVURfT04gQklUKDUpDQo+PiArDQo+PiArI2RlZmluZSBSRUdfUlhfSERDUF9TVFMgMHhF
Mw0KPj4gKyNkZWZpbmUgQl9IRENQMV9BVVRIX1NUQVJUIEJJVCgwKQ0KPj4gKyNkZWZpbmUgQl9I
RENQMl9BVVRIX1NUQVJUIEJJVCgxKQ0KPj4gKyNkZWZpbmUgQl9IRENQX0FVVEhfRE9ORSBCSVQo
MikNCj4+ICsjZGVmaW5lIEJfSERDUF9FTkMgQklUKDMpDQo+PiArDQo+PiArI2RlZmluZSBSRUdf
Q0VDX1NUQVRVUyAweEU0DQo+PiArI2RlZmluZSBCX0NFQ19UWF9ET05FIEJJVCgwKQ0KPj4gKyNk
ZWZpbmUgQl9DRUNfVFhfTkFDSyBCSVQoMSkNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19DRUNfUlhf
REFUQV9MRU4gMHhFNQ0KPj4gKyNkZWZpbmUgUkVHX0NFQ19UWF9EQVRBX0xFTiAweEU2DQo+PiAr
DQo+PiArI2RlZmluZSBSRUdfU1lTX01JUElfSU5UIDB4RUINCj4+ICsjZGVmaW5lIEJfTUlQSV9P
VVRQVVRfRU5BQkxFIEJJVCgwKQ0KPj4gKyNkZWZpbmUgQl9NSVBJX1ZJREVPX1VOU1RBQkxFIEJJ
VCgxKQ0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHX1JYX0lOVF9TVEFUVVMxIDB4RUMNCj4+ICsjZGVm
aW5lIEJfSERNSV81Vl9DSEcgICBCSVQoMCkNCj4+ICsjZGVmaW5lIEJfSERNSV9WSURfQ0hHICBC
SVQoMSkNCj4+ICsjZGVmaW5lIEJfSERNSV9BVURfQ0hHICBCSVQoMikNCj4+ICsjZGVmaW5lIEJf
SERNSV9DUF9DSEcgICBCSVQoMykNCj4+ICsjZGVmaW5lIEJfSERNSV9JRl9MQVRDSCBCSVQoNCkN
Cj4+ICsjZGVmaW5lIEJfSERNSV9OT19JRl9MQVRDSCAgQklUKDUpDQo+PiArI2RlZmluZSBCX0hE
TUlfRU1QICAgICAgQklUKDYpDQo+PiArI2RlZmluZSBCX0hETUlfTk9fRU1QICAgQklUKDcpDQo+
PiArDQo+PiArI2RlZmluZSBSRUdfUlhfSU5UX1NUQVRVUzIgMHhFRA0KPj4gKyNkZWZpbmUgQl9I
RE1JX0FWSSAgICAgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgQl9IRE1JX05PX0FWSSAgIEJJVCgxKQ0K
Pj4gKyNkZWZpbmUgQl9IRE1JX1ZTSUYgICAgIEJJVCgyKQ0KPj4gKyNkZWZpbmUgQl9IRE1JX05P
X1ZTSUYgIEJJVCgzKQ0KPj4gKyNkZWZpbmUgQl9IRE1JX0FWTVVURV9DSEcgIEJJVCg0KQ0KPj4g
Kw0KPj4gKyNkZWZpbmUgUkVHX0NISVBfQ09OVFJPTCAweEYwDQo+PiArI2RlZmluZSBCX0hETUlf
UkVTRVQgIEJJVCg1KQ0KPj4gKyNkZWZpbmUgQl9GV19TVEFSVCAgQklUKDYpDQo+PiArDQo+PiAr
I2RlZmluZSBSRUdfTUlQSV9DRkcgMHhGMQ0KPj4gKyNkZWZpbmUgTV9NSVBJX0xBTkUgIDB4MDMN
Cj4+ICsjZGVmaW5lIEJfTUlQSV9TUExJVCAgQklUKDIpDQo+PiArI2RlZmluZSBCX01JUElfU1BM
SVRfQ0ZHICBCSVQoMykNCj4+ICsjZGVmaW5lIEJfTUlQSV9EUEhZICBCSVQoNCkNCj4+ICsjZGVm
aW5lIEJfTUlQSV9VU0VfRFNJICBCSVQoNSkNCj4+ICsjZGVmaW5lIEJfTUlQSV9DT05USU5VX0NM
SyAgQklUKDYpDQo+PiArDQo+PiArI2RlZmluZSBSRUdfTUlQSV9EQVRBX1RZUEUgMHhGMg0KPj4g
KyNkZWZpbmUgQ1NJX1JHQjQ0NCAgICAgICAgICAweDIwDQo+PiArI2RlZmluZSBDU0lfUkdCNTU1
ICAgICAgICAgIDB4MjENCj4+ICsjZGVmaW5lIENTSV9SR0I1NjUgICAgICAgICAgMHgyMg0KPj4g
KyNkZWZpbmUgQ1NJX1JHQjY2NiAgICAgICAgICAweDIzDQo+PiArI2RlZmluZSBDU0lfUkdCODg4
ICAgICAgICAgIDB4MjQNCj4+ICsjZGVmaW5lIENTSV9ZVVY0MjBfOGJfTCAgICAgMHgxQQ0KPj4g
KyNkZWZpbmUgQ1NJX1lVVjQyMF84YiAgICAgICAweDFDDQo+PiArI2RlZmluZSBDU0lfWVVWNDIw
XzEwYiAgICAgIDB4MUQNCj4+ICsjZGVmaW5lIENTSV9ZVVY0MjJfOGIgICAgICAgMHgxRQ0KPj4g
KyNkZWZpbmUgQ1NJX1lVVjQyMl8xMGIgICAgICAweDFGDQo+PiArI2RlZmluZSBDU0lfUkdCXzEw
YiAgICAgICAgIDB4MzANCj4+ICsjZGVmaW5lIENTSV9SR0JfMTJiICAgICAgICAgMHgzMQ0KPj4g
KyNkZWZpbmUgQ1NJX1lVVjQyMl8xMmIgICAgICAweDMyDQo+PiArI2RlZmluZSBDU0lfWVVWNDIw
XzEwYl9MICAgIDB4MzMNCj4+ICsjZGVmaW5lIENTSV9ZVVY0MjBfMTJiICAgICAgMHgzNA0KPj4g
KyNkZWZpbmUgQ1NJX1lVVjQ0NF84YiAgICAgICAweDM1DQo+PiArI2RlZmluZSBDU0lfWVVWNDQ0
XzEwYiAgICAgIDB4MzYNCj4+ICsjZGVmaW5lIENTSV9ZVVY0NDRfMTJiICAgICAgMHgzNw0KPj4g
Kw0KPj4gKyNkZWZpbmUgUkVHX01JUElfQ09OVFJPTCAweEYzDQo+PiArI2RlZmluZSBCX01JUElf
T1VUUFVUICAgIEJJVCgwKQ0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHX1JYX0NGRyAweEY0DQo+PiAr
I2RlZmluZSBCX01BTlVBTF9IUEQgICAgQklUKDApDQo+PiArI2RlZmluZSBCX0hQRF9ISUdIICAg
IEJJVCgxKQ0KPj4gKyNkZWZpbmUgQl9IUERfVE9HR0xFICAgIEJJVCgzKQ0KPj4gKw0KPj4gKyNk
ZWZpbmUgUkVHX0NTQ19DRkcgMHhGNQ0KPj4gKyNkZWZpbmUgQl9EWU5BTUlDX1JBTkdFIEJJVCgw
KQ0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHX01JU0NfQ0ZHIDB4RjYNCj4+ICsjZGVmaW5lIEJfQkFV
RF9SQVRFIEJJVCgwKQ0KPj4gKyNkZWZpbmUgQl9ERUJVR19NU0cgQklUKDEpDQo+PiArDQo+PiAr
I2RlZmluZSBSRUdfSFBEX0RFTEFZIDB4RjcNCj4+ICsjZGVmaW5lIEJfREVMQVlfQ09VTlQgQklU
KDApDQo+PiArI2RlZmluZSBCX0RFTEFZX1VOSVQgQklUKDcpDQo+PiArDQo+PiArI2RlZmluZSBS
RUdfSU5GT19CQU5LX1NFTCAweEZEDQo+PiArI2RlZmluZSBDVExfQkFOS19FRElEX1JFQUQgMQ0K
Pj4gKyNkZWZpbmUgQ1RMX0JBTktfRURJRF9XUklURSA1DQo+PiArDQo+PiArI2RlZmluZSBSRUdf
SE9TVF9DVFJMX0lOVCAweEZFDQo+PiArI2RlZmluZSBCX0NNRF9TRVQgQklUKDQpDQo+PiArI2Rl
ZmluZSBCX0NFQ19TRU5EX0RBVEEgQklUKDUpDQo+PiArI2RlZmluZSBCX0NPTkZJR19VUERBVEUg
QklUKDYpDQo+PiArI2RlZmluZSBCX0lGX0JBTksgQklUKDcpDQo+PiArDQo+PiArI2RlZmluZSBS
RUdfTUNVX0lOVEVSUlVQVCAweEZGDQo+PiArI2RlZmluZSBCX1NZU19JTlRfQUNUSVZFIEJJVCgw
KQ0KPj4gKyNkZWZpbmUgQl9DRUNfUlhfUkVDRUlWRUQgQklUKDEpDQo+PiArI2RlZmluZSBCX0NF
Q19UWF9VUERBVEUgQklUKDIpDQo+PiArDQo+PiArI2RlZmluZSBFRElEX05VTV9CTE9DS1NfTUFY
IDQNCj4+ICsjZGVmaW5lIEVESURfQkxPQ0tfU0laRSAxMjgNCj4+ICsNCj4+ICsjZGVmaW5lIEky
Q19NQVhfWEZFUl9TSVpFICA4DQo+PiArI2RlZmluZSBQT0xMX0lOVEVSVkFMX0NFQ19NUwkxMA0K
Pj4gKyNkZWZpbmUgUE9MTF9JTlRFUlZBTF9NUwk0MA0KPj4gKw0KPj4gKyNkZWZpbmUgQVVEMzJL
ICAgMHgwMw0KPj4gKyNkZWZpbmUgQVVENDRLICAgMHgwMA0KPj4gKyNkZWZpbmUgQVVENDhLICAg
MHgwMg0KPj4gKyNkZWZpbmUgQVVENjRLICAgMHgwQg0KPj4gKyNkZWZpbmUgQVVEODhLICAgMHgw
OA0KPj4gKyNkZWZpbmUgQVVEOTZLICAgMHgwQQ0KPj4gKyNkZWZpbmUgQVVEMTI4SyAgMHgyQg0K
Pj4gKyNkZWZpbmUgQVVEMTc2SyAgMHgwQw0KPj4gKyNkZWZpbmUgQVVEMTkySyAgMHgwRQ0KPj4g
KyNkZWZpbmUgQVVEMjU2SyAgMHgxQg0KPj4gKyNkZWZpbmUgQVVEMzUySyAgMHgwRA0KPj4gKyNk
ZWZpbmUgQVVEMzg0SyAgMHgwNQ0KPj4gKyNkZWZpbmUgQVVENTEySyAgMHgzQg0KPj4gKyNkZWZp
bmUgQVVENzA1SyAgMHgyRA0KPj4gKyNkZWZpbmUgQVVENzY4SyAgMHgwOQ0KPj4gKyNkZWZpbmUg
QVVEMTAyNEsgMHgzNQ0KPj4gKyNkZWZpbmUgQVVEMTQxMUsgMHgxRA0KPj4gKyNkZWZpbmUgQVVE
MTUzNksgMHgxNQ0KPj4gKw0KPj4gK2VudW0gaXQ2NjI1X2NoaXBfdHlwZSB7DQo+PiArCUlUNjYy
NV9DSElQID0gMCwNCj4+ICsJSVQ2NjI2X0NISVAgPSAxLA0KPj4gK307DQo+PiArDQo+PiArc3Ry
dWN0IGl0NjYyNSB7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4+ICsJc3RydWN0IGkyY19j
bGllbnQgKmkyY19jbGllbnQ7DQo+PiArCXN0cnVjdCByZWdtYXAgKml0NjYyNV9yZWdtYXA7DQo+
PiArCWVudW0gaXQ2NjI1X2NoaXBfdHlwZSBjaGlwX3R5cGU7DQo+PiArDQo+PiArCS8qIHByb3Rl
Y3RzIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBjaGlwJ3MgcmVnaXN0ZXJzIGFuZCBzdGF0ZSAq
Lw0KPj4gKwlzdHJ1Y3QgbXV0ZXggaXQ2NjI1X2xvY2s7DQo+PiArDQo+PiArCXN0cnVjdCB2NGwy
X3N1YmRldiBzZDsNCj4+ICsJc3RydWN0IHY0bDJfbWJ1c19jb25maWdfbWlwaV9jc2kyIGJ1czsN
Cj4+ICsJc3RydWN0IHZpZGVvX2RldmljZSAqdmRldjsNCj4+ICsJc3RydWN0IG1lZGlhX3BhZCBw
YWQ7DQo+PiArCXN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlciBoZGw7DQo+PiArDQo+PiArCS8qIGNv
bnRyb2xzICovDQo+PiArCXN0cnVjdCB2NGwyX2N0cmwgKmN0cmxfNXZfZGV0ZWN0Ow0KPj4gKwlz
dHJ1Y3QgdjRsMl9jdHJsICpjdHJsX2F1ZGlvX3NhbXBsaW5nX3JhdGU7DQo+PiArCXN0cnVjdCB2
NGwyX2N0cmwgKmN0cmxfYXVkaW9fcHJlc2VudDsNCj4+ICsJc3RydWN0IHY0bDJfY3RybCAqY3Ry
bF9saW5rX2ZyZXE7DQo+PiArCXN0cnVjdCB2NGwyX2N0cmwgKmN0cmxfZ2V0X2hkbWlfaW5mbzsN
Cj4+ICsJc3RydWN0IHY0bDJfY3RybCAqY3RybF9taXBpX2NvbmZpZzsNCj4+ICsNCj4+ICsJc3Ry
dWN0IGRlbGF5ZWRfd29yayBocGRfZGVsYXllZF93b3JrOw0KPj4gKw0KPj4gKwlzdHJ1Y3QgdGlt
ZXJfbGlzdCB0aW1lcjsNCj4+ICsJc3RydWN0IHdvcmtfc3RydWN0IHBvbGxpbmdfd29yazsNCj4+
ICsNCj4+ICsJc3RydWN0IHY0bDJfZHZfdGltaW5ncyB0aW1pbmdzOw0KPj4gKw0KPj4gKwl1OCBj
c2lfbGFuZXM7DQo+PiArCXU4IHBvcnRfbnVtOw0KPj4gKwllbnVtIHY0bDJfbWJ1c190eXBlIGJ1
c190eXBlOw0KPj4gKwl1OCBjc2lfZm9ybWF0Ow0KPj4gKwl1MzIgbWJ1c19mbXRfY29kZTsNCj4+
ICsNCj4+ICsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsNCj4+ICsNCj4+ICsJc3RydWN0
IGNlY19hZGFwdGVyICpjZWNfYWRhcDsNCj4+ICsNCj4+ICsJc3RydWN0IGRlbnRyeSAqZGVidWdm
c19kaXI7DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3QgczY0IGl0NjYyNV9saW5rX2Zy
ZXFbXSA9IHsgNDQ1NTAwMDAwIH07DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwy
X2R2X3RpbWluZ3NfY2FwIGl0NjYyNV90aW1pbmdzX2NhcCA9IHsNCj4+ICsJLnR5cGUgPSBWNEwy
X0RWX0JUXzY1Nl8xMTIwLA0KPj4gKwkvKiBrZWVwIHRoaXMgaW5pdGlhbGl6YXRpb24gZm9yIGNv
bXBhdGliaWxpdHkgd2l0aCBHQ0MgPCA0LjQuNiAqLw0KPj4gKwkucmVzZXJ2ZWQgPSB7IDAgfSwN
Cj4+ICsNCj4+ICsJVjRMMl9JTklUX0JUX1RJTUlOR1MoNjQwLCAzODQwLCA0ODAsIDIxNjAsIDI3
MDAwMDAwLCAzMDAwMDAwMDAsDQo+PiArCQkJICAgICBWNEwyX0RWX0JUX1NURF9DRUE4NjEgfCBW
NEwyX0RWX0JUX1NURF9ETVQgfA0KPj4gKwkJCSAgICAgVjRMMl9EVl9CVF9TVERfR1RGIHwgVjRM
Ml9EVl9CVF9TVERfQ1ZULA0KPj4gKwkJCSAgICAgVjRMMl9EVl9CVF9DQVBfUFJPR1JFU1NJVkUg
fCBWNEwyX0RWX0JUX0NBUF9JTlRFUkxBQ0VEIHwNCj4+ICsJCQkgICAgIFY0TDJfRFZfQlRfQ0FQ
X1JFRFVDRURfQkxBTktJTkcgfCBWNEwyX0RWX0JUX0NBUF9DVVNUT00pDQo+PiArfTsNCj4+ICsN
Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGl0NjYyNV9mb3JtYXRfaW5mbyB7DQo+PiArCXU4IGNz
aV9mb3JtYXQ7DQo+PiArCXUzMiBtYnVzX2ZtdF9jb2RlOw0KPj4gK30gaXQ2NjI1X2Zvcm1hdHNb
XSA9IHsNCj4+ICsJeyBDU0lfWVVWNDIyXzhiLCBNRURJQV9CVVNfRk1UX1VZVlk4XzFYMTYgfSwN
Cj4+ICsJeyBDU0lfUkdCODg4LCBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0IH0sDQo+PiArCXsg
Q1NJX1lVVjQ0NF84YiwgTUVESUFfQlVTX0ZNVF9ZVVY4XzFYMjQgfSwNCj4+ICt9Ow0KPj4gKw0K
Pj4gK3N0YXRpYyBpbmxpbmUgaW50IGl0NjYyNV9jc2lfZm9ybWF0X2lkeCh1OCBjc2lfZm9ybWF0
KQ0KPj4gK3sNCj4+ICsJaW50IGk7DQo+PiArDQo+PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T
SVpFKGl0NjYyNV9mb3JtYXRzKTsgaSsrKSB7DQo+PiArCQlpZiAoaXQ2NjI1X2Zvcm1hdHNbaV0u
Y3NpX2Zvcm1hdCA9PSBjc2lfZm9ybWF0KQ0KPj4gKwkJCXJldHVybiBpOw0KPj4gKwl9DQo+PiAr
DQo+PiArCXJldHVybiAtRUlOVkFMOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIGlu
dCBpdDY2MjVfY3NpX21idXNfY29kZV9pZHgodTMyIG1idXNfZm10X2NvZGUpDQo+PiArew0KPj4g
KwlpbnQgaTsNCj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaXQ2NjI1X2Zv
cm1hdHMpOyBpKyspIHsNCj4+ICsJCWlmIChpdDY2MjVfZm9ybWF0c1tpXS5tYnVzX2ZtdF9jb2Rl
ID09IG1idXNfZm10X2NvZGUpDQo+PiArCQkJcmV0dXJuIGk7DQo+PiArCX0NCj4+ICsNCj4+ICsJ
cmV0dXJuIC1FSU5WQUw7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGl0
NjYyNSAqc2RfdG9fNjYyNShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKQ0KPj4gK3sNCj4+ICsJcmV0
dXJuIGNvbnRhaW5lcl9vZihzZCwgc3RydWN0IGl0NjYyNSwgc2QpOw0KPj4gK30NCj4+ICsNCj4+
ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpdDY2MjUgKmhkbF90b182NjI1KHN0cnVjdCB2NGwyX2N0
cmxfaGFuZGxlciAqaGRsKQ0KPj4gK3sNCj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihoZGwsIHN0
cnVjdCBpdDY2MjUsIGhkbCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg
cmVnbWFwX2NvbmZpZyBpdDY2MjVfcmVnbWFwX2NvbmZpZyA9IHsNCj4+ICsJLnJlZ19iaXRzID0g
OCwNCj4+ICsJLnZhbF9iaXRzID0gOCwNCj4+ICsJLm1heF9yZWdpc3RlciA9IDB4ZmYsDQo+PiAr
CS5jYWNoZV90eXBlID0gUkVHQ0FDSEVfTk9ORSwNCj4+ICsJLm1heF9yYXdfcmVhZCA9IEkyQ19N
QVhfWEZFUl9TSVpFLA0KPj4gKwkubWF4X3Jhd193cml0ZSA9IEkyQ19NQVhfWEZFUl9TSVpFLA0K
Pj4gK307DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfcmVnbWFwX2kyY19pbml0KHN0cnVj
dCBpMmNfY2xpZW50ICpjbGllbnQsDQo+PiArCQkJCSAgc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0K
Pj4gK3sNCj4+ICsJaXQ2NjI1LT5pMmNfY2xpZW50ID0gY2xpZW50Ow0KPj4gKwlpdDY2MjUtPmRl
diA9ICZjbGllbnQtPmRldjsNCj4+ICsNCj4+ICsJaXQ2NjI1LT5pdDY2MjVfcmVnbWFwID0gZGV2
bV9yZWdtYXBfaW5pdF9pMmMoaXQ2NjI1LT5pMmNfY2xpZW50LA0KPj4gKwkJCQkJCSAgICAgJml0
NjYyNV9yZWdtYXBfY29uZmlnKTsNCj4+ICsJaWYgKElTX0VSUihpdDY2MjUtPml0NjYyNV9yZWdt
YXApKQ0KPj4gKwkJcmV0dXJuIFBUUl9FUlIoaXQ2NjI1LT5pdDY2MjVfcmVnbWFwKTsNCj4+ICsN
Cj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3JlYWRf
Ynl0ZShzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUsIHU4IHJlZykNCj4+ICt7DQo+PiArCXVuc2lnbmVk
IGludCB2YWw7DQo+PiArCWludCBlcnI7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjYy
NS0+ZGV2Ow0KPj4gKw0KPj4gKwllcnIgPSByZWdtYXBfcmVhZChpdDY2MjUtPml0NjYyNV9yZWdt
YXAsIHJlZywgJnZhbCk7DQo+PiArCWlmIChlcnIgPCAwKSB7DQo+PiArCQlkZXZfZXJyKGRldiwg
InJlZ1sweCV4XSByZWFkIGZhaWxlZCBlcnI6ICVkIiwgcmVnLCBlcnIpOw0KPj4gKwkJcmV0dXJu
IGVycjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gdmFsOw0KPj4gK30NCj4+ICsNCj4+ICtz
dGF0aWMgaW50IGl0NjYyNV93cml0ZV9ieXRlKHN0cnVjdCBpdDY2MjUgKml0NjYyNSwgdTggcmVn
LCB1OCB2YWwpDQo+PiArew0KPj4gKwlpbnQgZXJyOw0KPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYg
PSBpdDY2MjUtPmRldjsNCj4+ICsNCj4+ICsJZXJyID0gcmVnbWFwX3dyaXRlKGl0NjYyNS0+aXQ2
NjI1X3JlZ21hcCwgcmVnLCB2YWwpOw0KPj4gKwlpZiAoZXJyIDwgMCkgew0KPj4gKwkJZGV2X2Vy
cihkZXYsICJyZWdbMHgleF0gd3JpdGUgZmFpbGVkIGVycjogJWQiLCByZWcsIGVycik7DQo+PiAr
CQlyZXR1cm4gZXJyOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsN
Cj4+ICtzdGF0aWMgaW50IGl0NjYyNV9zZXRfYml0cyhzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUsIHU4
IHJlZywgdTggbWFzaywgdTggdmFsKQ0KPj4gK3sNCj4+ICsJaW50IGVycjsNCj4+ICsJc3RydWN0
IGRldmljZSAqZGV2ID0gaXQ2NjI1LT5kZXY7DQo+PiArDQo+PiArCWVyciA9IHJlZ21hcF91cGRh
dGVfYml0cyhpdDY2MjUtPml0NjYyNV9yZWdtYXAsIHJlZywgbWFzaywgdmFsKTsNCj4+ICsJaWYg
KGVyciA8IDApIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAicmVnWzB4JXhdIHNldCBiaXRzIGZhaWxl
ZCBlcnI6ICVkIiwgcmVnLCBlcnIpOw0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsJfQ0KPj4gKw0K
Pj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfcmVhZF9i
eXRlcyhzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUsIHU4IHJlZywgdTggKmJ1ZiwgaW50IGxlbikNCj4+
ICt7DQo+PiArCWludCBlcnI7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjYyNS0+ZGV2
Ow0KPj4gKw0KPj4gKwllcnIgPSByZWdtYXBfYnVsa19yZWFkKGl0NjYyNS0+aXQ2NjI1X3JlZ21h
cCwgcmVnLCBidWYsIGxlbik7DQo+PiArCWlmIChlcnIgPCAwKSB7DQo+PiArCQlkZXZfZXJyKGRl
diwgInJlZ1sweCV4XSByZWFkIGZhaWxlZCBlcnI6ICVkIiwgcmVnLCBlcnIpOw0KPj4gKwkJcmV0
dXJuIGVycjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiAr
c3RhdGljIGludCBpdDY2MjVfd3JpdGVfYnl0ZXMoc3RydWN0IGl0NjYyNSAqaXQ2NjI1LCB1OCBy
ZWcsIHU4ICpidWYsIGludCBsZW4pDQo+PiArew0KPj4gKwlpbnQgZXJyOw0KPj4gKwlzdHJ1Y3Qg
ZGV2aWNlICpkZXYgPSBpdDY2MjUtPmRldjsNCj4+ICsNCj4+ICsJZXJyID0gcmVnbWFwX2J1bGtf
d3JpdGUoaXQ2NjI1LT5pdDY2MjVfcmVnbWFwLCByZWcsIGJ1ZiwgbGVuKTsNCj4+ICsJaWYgKGVy
ciA8IDApIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAicmVnWzB4JXhdIHdyaXRlIGZhaWxlZCBlcnI6
ICVkIiwgcmVnLCBlcnIpOw0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwly
ZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfd2FpdF9mb3Jfc3Rh
dHVzKHN0cnVjdCBpdDY2MjUgKml0NjYyNSwgdTggcmVnLCB1OCB2YWwsDQo+PiArCQkJCSAgaW50
IHRpbWVvdXRfbXMpDQo+PiArew0KPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpdDY2MjUtPmRl
djsNCj4+ICsJaW50IHN0YXR1czsNCj4+ICsJaW50IHJ2YWw7DQo+PiArCWludCBzbGVlcF9tcyA9
IDEwOw0KPj4gKwlpbnQgdGltZW91dF9yb3VuZF9tcyA9IERJVl9ST1VORF9VUCh0aW1lb3V0X21z
LCBzbGVlcF9tcykgKiBzbGVlcF9tczsNCj4+ICsNCj4+ICsJc3RhdHVzID0gcmVhZF9wb2xsX3Rp
bWVvdXQoaXQ2NjI1X3JlYWRfYnl0ZSwgcnZhbCwgcnZhbCA9PSB2YWwsDQo+PiArCQkJCSAgIHNs
ZWVwX21zICogMTAwMCwNCj4+ICsJCQkJICAgdGltZW91dF9yb3VuZF9tcyAqIDEwMDAsDQo+PiAr
CQkJCSAgIGZhbHNlLCBpdDY2MjUsIHJlZyk7DQo+PiArDQo+PiArCWRldl9pbmZvKGRldiwgIiVz
IHN0YXR1cyA9ICVkICVkIiwgX19mdW5jX18sIHN0YXR1cywgKGludClydmFsKTsNCj4+ICsJaWYg
KHN0YXR1cyA8IDApIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAiJXMgZXJyIHN0YXR1cyA9ICVkIiwg
X19mdW5jX18sIHN0YXR1cyk7DQo+PiArCQlyZXR1cm4gLUVUSU1FRE9VVDsNCj4+ICsJfQ0KPj4g
Kw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X3dy
aXRlX2NvbW1hbmQoc3RydWN0IGl0NjYyNSAqaXQ2NjI1LCB1OCAqY21kcywgaW50IGNtZF9sZW4p
DQo+PiArew0KPj4gKwlpdDY2MjVfd3JpdGVfYnl0ZXMoaXQ2NjI1LCBSRUdfQ01EX1NFVCwgY21k
cywgY21kX2xlbik7DQo+PiArCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVHX0hPU1RfQ1RS
TF9JTlQsIEJfQ01EX1NFVCk7DQo+PiArCWl0NjYyNV93YWl0X2Zvcl9zdGF0dXMoaXQ2NjI1LCBS
RUdfSE9TVF9DVFJMX0lOVCwgMHgwMCwgMjUpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50
IGl0NjYyNV91cGRhdGVfY29uZmlnKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiAr
CWludCBlcnI7DQo+PiArDQo+PiArCWVyciA9IGl0NjYyNV9zZXRfYml0cyhpdDY2MjUsIFJFR19I
T1NUX0NUUkxfSU5ULA0KPj4gKwkJCSAgICAgIEJfQ09ORklHX1VQREFURSwgQl9DT05GSUdfVVBE
QVRFKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gKw0KPj4gKwly
ZXR1cm4gaXQ2NjI1X3dhaXRfZm9yX3N0YXR1cyhpdDY2MjUsIFJFR19IT1NUX0NUUkxfSU5ULCAw
eDAwLCAyNSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3NldF9iYW5rKHN0
cnVjdCBpdDY2MjUgKml0NjYyNSwgdTggYmFuaykNCj4+ICt7DQo+PiArCWludCBlcnI7DQo+PiAr
DQo+PiArCWVyciA9IGl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVHX0lORk9fQkFOS19TRUws
IGJhbmspOw0KPj4gKwlpZiAoZXJyIDwgMCkNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiAr
CWVyciA9IGl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVHX0hPU1RfQ1RSTF9JTlQsIEJfSUZf
QkFOSyk7DQo+PiArCWlmIChlcnIgPCAwKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsJ
cmV0dXJuIGl0NjYyNV93YWl0X2Zvcl9zdGF0dXMoaXQ2NjI1LCBSRUdfSE9TVF9DVFJMX0lOVCwg
MHgwMCwgMjUpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgaXNfaGRtaShz
dHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwlpbnQgdmFsOw0KPj4gKw0KPj4gKwl2
YWwgPSBpdDY2MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX1JYX1NUQVRVUyk7DQo+PiArCXJldHVy
biAodmFsIDwgMCkgPyBmYWxzZSA6ICh2YWwgJiBCX1JYX0hETUkpOw0KPj4gK30NCj4+ICsNCj4+
ICtzdGF0aWMgaW5saW5lIGJvb2wgaGRtaV81dl9wb3dlcl9wcmVzZW50KHN0cnVjdCBpdDY2MjUg
Kml0NjYyNSkNCj4+ICt7DQo+PiArCWludCB2YWw7DQo+PiArDQo+PiArCXZhbCA9IGl0NjYyNV9y
ZWFkX2J5dGUoaXQ2NjI1LCBSRUdfUlhfU1RBVFVTKTsNCj4+ICsJcmV0dXJuICh2YWwgPCAwKSA/
IGZhbHNlIDogKHZhbCAmIEJfUlhfNVYpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5l
IGJvb2wgbm9fc2lnbmFsKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiArCWludCB2
YWw7DQo+PiArDQo+PiArCXZhbCA9IGl0NjYyNV9yZWFkX2J5dGUoaXQ2NjI1LCBSRUdfUlhfU1RB
VFVTKTsNCj4+ICsJcmV0dXJuICh2YWwgPCAwKSA/IHRydWUgOiAhKHZhbCAmIEJfUlhfU1RBQkxF
KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBib29sIGF1ZGlvX3ByZXNlbnQoc3Ry
dWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJaW50IHZhbDsNCj4+ICsNCj4+ICsJdmFs
ID0gaXQ2NjI1X3JlYWRfYnl0ZShpdDY2MjUsIFJFR19SWF9TVEFUVVMpOw0KPj4gKwlyZXR1cm4g
KHZhbCA8IDApID8gZmFsc2UgOiAodmFsICYgQl9SWF9BVURfT04pOw0KPj4gK30NCj4+ICsNCj4+
ICtzdGF0aWMgaW50IGdldF9hdWRpb19zYW1wbGluZ19yYXRlKHN0cnVjdCBpdDY2MjUgKml0NjYy
NSkNCj4+ICt7DQo+PiArCXU4IGZzX2lkOw0KPj4gKwlpbnQgaSwgZnJlcSA9IDA7DQo+PiArCWNv
bnN0IHN0cnVjdCBmc19pZF9tYXAgew0KPj4gKwkJdTggZnNfaWQ7DQo+PiArCQl1MTYgZnJlcTsN
Cj4+ICsJfSBzX2ZzaWRfbWFwW10gPSB7DQo+PiArCQl7IEFVRDMySywgMzIgfSwNCj4+ICsJCXsg
QVVENDRLLCA0NCB9LA0KPj4gKwkJeyBBVUQ0OEssIDQ4IH0sDQo+PiArCQl7IEFVRDY0SywgNjQg
fSwNCj4+ICsJCXsgQVVEODhLLCA4OCB9LA0KPj4gKwkJeyBBVUQ5NkssIDk2IH0sDQo+PiArDQo+
PiArCQl7IEFVRDEyOEssIDEyOCB9LA0KPj4gKwkJeyBBVUQxNzZLLCAxNzYgfSwNCj4+ICsJCXsg
QVVEMTkySywgMTkyIH0sDQo+PiArCQl7IEFVRDI1NkssIDI1NiB9LA0KPj4gKwkJeyBBVUQzNTJL
LCAzNTIgfSwNCj4+ICsJCXsgQVVEMzg0SywgMzg0IH0sDQo+PiArDQo+PiArCQl7IEFVRDUxMkss
IDUxMiB9LA0KPj4gKwkJeyBBVUQ3MDVLLCA3MDUgfSwNCj4+ICsJCXsgQVVENzY4SywgNzY4IH0s
DQo+PiArCQl7IEFVRDEwMjRLLCAxMDI0IH0sDQo+PiArCQl7IEFVRDE0MTFLLCAxNDExIH0sDQo+
PiArCQl7IEFVRDE1MzZLLCAxNTM2IH0sDQo+PiArCX07DQo+PiArDQo+PiArCWlmIChub19zaWdu
YWwoaXQ2NjI1KSB8fCAhYXVkaW9fcHJlc2VudChpdDY2MjUpKQ0KPj4gKwkJcmV0dXJuIDA7DQo+
PiArDQo+PiArCWd1YXJkKG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArDQo+PiAr
CWZzX2lkID0gaXQ2NjI1X3JlYWRfYnl0ZShpdDY2MjUsIFJFR19IRE1JX0FVRElPX0lORk8xKTsN
Cj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc19mc2lkX21hcCk7IGkrKykg
ew0KPj4gKwkJaWYgKHNfZnNpZF9tYXBbaV0uZnNfaWQgPT0gZnNfaWQpIHsNCj4+ICsJCQlmcmVx
ID0gc19mc2lkX21hcFtpXS5mcmVxICogMTAwMDsNCj4+ICsJCQlicmVhazsNCj4+ICsJCX0NCj4+
ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gZnJlcTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHU2
NCBpdDY2MjVfZ2V0X3BjbGsoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJdTMy
IHBjbGs7DQo+PiArCXU4IGNrWzRdOw0KPj4gKwlpbnQgcmV0Ow0KPj4gKw0KPj4gKwlyZXQgPSBp
dDY2MjVfcmVhZF9ieXRlcyhpdDY2MjUsIFJFR19WSURfUENMSywgY2ssIDQpOw0KPj4gKwlpZiAo
cmV0IDwgMCkgew0KPj4gKwkJZGV2X2VycihpdDY2MjUtPmRldiwgImZhaWxlZCB0byByZWFkIHBp
eGVsIGNsb2NrIik7DQo+PiArCQlyZXR1cm4gMDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlwY2xrID0g
Y2tbMF07DQo+PiArCXBjbGsgPDw9IDg7DQo+PiArCXBjbGsgfD0gY2tbMV07DQo+PiArCXBjbGsg
PDw9IDg7DQo+PiArCXBjbGsgfD0gY2tbMl07DQo+PiArCXBjbGsgPDw9IDg7DQo+PiArCXBjbGsg
fD0gY2tbM107DQo+PiArDQo+PiArCXY0bDJfZGJnKDEsIGRlYnVnLCAmaXQ2NjI1LT5zZCwgIiVz
OiBwY2xrPSV1ICglMDh4KSIsDQo+PiArCQkgX19mdW5jX18sIHBjbGssIHBjbGspOw0KPj4gKw0K
Pj4gKwlyZXR1cm4gKHU2NClwY2xrICogMTAwMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu
dCBpdDY2MjVfcmVhZF9lZGlkKHN0cnVjdCBpdDY2MjUgKml0NjYyNSwgdTggKmVkaWQsIGludCBz
dGFydF9ibG9jaywNCj4+ICsJCQkgICAgaW50IG51bV9ibG9ja3MpDQo+PiArew0KPj4gKwlpbnQg
aSwgYmFua19jdHJsLCBlcnIgPSAwOw0KPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpdDY2MjUt
PmRldjsNCj4+ICsNCj4+ICsJaWYgKCFlZGlkKSB7DQo+PiArCQlkZXZfZXJyKGRldiwgImVkaWQg
YnVmZmVyIGlzIE5VTEwiKTsNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKwl9DQo+PiArDQo+
PiArCWlmIChzdGFydF9ibG9jayA8IDAgfHwgbnVtX2Jsb2NrcyA8PSAwIHx8DQo+PiArCSAgICBz
dGFydF9ibG9jayA+IEVESURfTlVNX0JMT0NLU19NQVggfHwNCj4+ICsJICAgIG51bV9ibG9ja3Mg
PiBFRElEX05VTV9CTE9DS1NfTUFYIHx8DQo+PiArCSAgICBzdGFydF9ibG9jayArIG51bV9ibG9j
a3MgPiBFRElEX05VTV9CTE9DS1NfTUFYKSB7DQo+PiArCQlkZXZfZXJyKGRldiwNCj4+ICsJCQki
aW52YWxpZCBibG9jayByYW5nZTogc3RhcnRfYmxvY2s9JWQsIG51bV9ibG9ja3M9JWQiLA0KPj4g
KwkJCXN0YXJ0X2Jsb2NrLCBudW1fYmxvY2tzKTsNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4g
Kwl9DQo+PiArDQo+PiArCWd1YXJkKG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiAr
CWZvciAoaSA9IDA7IGkgPCBudW1fYmxvY2tzOyBpKyspIHsNCj4+ICsJCWJhbmtfY3RybCA9IENU
TF9CQU5LX0VESURfUkVBRCArIHN0YXJ0X2Jsb2NrICsgaTsNCj4+ICsJCWVyciA9IGl0NjYyNV9z
ZXRfYmFuayhpdDY2MjUsIGJhbmtfY3RybCk7DQo+PiArCQlpZiAoZXJyIDwgMCkNCj4+ICsJCQli
cmVhazsNCj4+ICsNCj4+ICsJCWVyciA9IGl0NjYyNV9yZWFkX2J5dGVzKGl0NjYyNSwgUkVHX0VE
SURfU1RBUlQsDQo+PiArCQkJCQllZGlkICsgKGkgKiAxMjgpLCAxMjgpOw0KPj4gKwkJaWYgKGVy
ciA8IDApDQo+PiArCQkJYnJlYWs7DQo+PiArCX0NCj4+ICsNCj4+ICsJaXQ2NjI1X3NldF9iYW5r
KGl0NjYyNSwgMCk7DQo+PiArDQo+PiArCXJldHVybiBlcnIgPCAwID8gZXJyIDogbnVtX2Jsb2Nr
czsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfd3JpdGVfZWRpZChzdHJ1Y3Qg
aXQ2NjI1ICppdDY2MjUsIHU4ICplZGlkLCBpbnQgc3RhcnRfYmxvY2ssDQo+PiArCQkJICAgICBp
bnQgbnVtX2Jsb2NrcykNCj4+ICt7DQo+PiArCWludCBpLCBiYW5rX2N0cmwsIGVyciA9IDA7DQo+
PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjYyNS0+ZGV2Ow0KPj4gKw0KPj4gKwlpZiAoc3Rh
cnRfYmxvY2sgPCAwIHx8IG51bV9ibG9ja3MgPD0gMCB8fA0KPj4gKwkgICAgc3RhcnRfYmxvY2sg
PiBFRElEX05VTV9CTE9DS1NfTUFYIHx8DQo+PiArCSAgICBudW1fYmxvY2tzID4gRURJRF9OVU1f
QkxPQ0tTX01BWCB8fA0KPj4gKwkgICAgc3RhcnRfYmxvY2sgKyBudW1fYmxvY2tzID4gRURJRF9O
VU1fQkxPQ0tTX01BWCkgew0KPj4gKwkJZGV2X2VycihkZXYsDQo+PiArCQkJImludmFsaWQgYmxv
Y2sgcmFuZ2U6IHN0YXJ0X2Jsb2NrPSVkLCBudW1fYmxvY2tzPSVkIiwNCj4+ICsJCQlzdGFydF9i
bG9jaywgbnVtX2Jsb2Nrcyk7DQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsJfQ0KPj4gKw0K
Pj4gKwlndWFyZChtdXRleCkoJml0NjYyNS0+aXQ2NjI1X2xvY2spOw0KPj4gKwlmb3IgKGkgPSAw
OyBpIDwgbnVtX2Jsb2NrczsgaSsrKSB7DQo+PiArCQliYW5rX2N0cmwgPSBDVExfQkFOS19FRElE
X1dSSVRFICsgc3RhcnRfYmxvY2sgKyBpOw0KPj4gKwkJZXJyID0gaXQ2NjI1X3NldF9iYW5rKGl0
NjYyNSwgYmFua19jdHJsKTsNCj4+ICsJCWlmIChlcnIgPCAwKQ0KPj4gKwkJCWJyZWFrOw0KPj4g
Kw0KPj4gKwkJZXJyID0gaXQ2NjI1X3dyaXRlX2J5dGVzKGl0NjYyNSwgUkVHX0VESURfU1RBUlQs
DQo+PiArCQkJCQkgZWRpZCArIChpICogMTI4KSwgMTI4KTsNCj4+ICsJCWlmIChlcnIgPCAwKQ0K
Pj4gKwkJCWJyZWFrOw0KPj4gKw0KPj4gKwkJZXJyID0gaXQ2NjI1X3VwZGF0ZV9jb25maWcoaXQ2
NjI1KTsNCj4+ICsJCWlmIChlcnIgPCAwKQ0KPj4gKwkJCWJyZWFrOw0KPj4gKwl9DQo+PiArDQo+
PiArCWl0NjYyNV9zZXRfYmFuayhpdDY2MjUsIDApOw0KPj4gKw0KPj4gKwlyZXR1cm4gZXJyIDwg
MCA/IGVyciA6IG51bV9ibG9ja3M7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYy
NV9lbmFibGVfYXV0b19ocGQoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJZGV2
X2RiZyhpdDY2MjUtPmRldiwgIiVzOiBhdXRvIEhQRCIsIF9fZnVuY19fKTsNCj4+ICsJZ3VhcmQo
bXV0ZXgpKCZpdDY2MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsJaXQ2NjI1X3NldF9iaXRzKGl0NjYy
NSwgUkVHX1JYX0NGRywgMHgwMywgMHgwMCk7DQo+PiArCWl0NjYyNV91cGRhdGVfY29uZmlnKGl0
NjYyNSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9kaXNhYmxlX2hwZChz
dHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5
bmMoJml0NjYyNS0+aHBkX2RlbGF5ZWRfd29yayk7DQo+PiArDQo+PiArCWd1YXJkKG11dGV4KSgm
aXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArCWl0NjYyNV9zZXRfYml0cyhpdDY2MjUsIFJFR19S
WF9DRkcsIDB4MDMsIDB4MDEpOw0KPj4gKwlpdDY2MjVfdXBkYXRlX2NvbmZpZyhpdDY2MjUpOw0K
Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfZW5hYmxlX2hwZChzdHJ1Y3QgaXQ2
NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJml0NjYyNS0+
aHBkX2RlbGF5ZWRfd29yaywNCj4+ICsJCQkgICAgICBtc2Vjc190b19qaWZmaWVzKDEwMCkpOw0K
Pg0KPkkgcmVjb21tZW5kIHRvIHVzZSAnSFogLyA3JyBoZXJlLiBPZnRlbiB2aWRlbyBzb3VyY2Vz
IGFyZSBub3QgdmVyeSBhY2N1cmF0ZQ0KPmluIG1lYXN1cmluZyBob3cgbG9uZyB0aGUgSFBEIGlz
IGxvdy4gJ0haIC8gNycgaGFzIHByb3ZlbiB0byBiZSBhIHJlbGlhYmxlIHZhbHVlLg0KPg0KPj4g
K30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfaHBkX2RlbGF5ZWRfd29yayhzdHJ1Y3Qg
d29ya19zdHJ1Y3QgKndvcmspDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBj
b250YWluZXJfb2Yod29yaywNCj4+ICsJCQlzdHJ1Y3QgaXQ2NjI1LCBocGRfZGVsYXllZF93b3Jr
LndvcmspOw0KPj4gKwlpbnQgdmFsID0gMDsNCj4+ICsNCj4+ICsJZ3VhcmQobXV0ZXgpKCZpdDY2
MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsJaXQ2NjI1X3NldF9iaXRzKGl0NjYyNSwgUkVHX1JYX0NG
RywgMHgwMywgdmFsKTsNCj4+ICsJaXQ2NjI1X3VwZGF0ZV9jb25maWcoaXQ2NjI1KTsNCj4+ICt9
DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfZ2V0X2RldGVjdGVkX3RpbWluZ3Moc3RydWN0
IGl0NjYyNSAqaXQ2NjI1LA0KPj4gKwkJCQkgICAgICAgc3RydWN0IHY0bDJfZHZfdGltaW5ncyAq
dGltaW5ncykNCj4+ICt7DQo+PiArCXN0cnVjdCB2NGwyX2J0X3RpbWluZ3MgKmJ0ID0gJnRpbWlu
Z3MtPmJ0Ow0KPj4gKwlpbnQgdmFsOw0KPj4gKwl1bnNpZ25lZCBpbnQgd2lkdGgsIGhlaWdodDsN
Cj4+ICsJdTggYnVmZmVyWzRdOw0KPj4gKwl1OCBidWZmZXIyWzEyXTsNCj4+ICsNCj4+ICsJaWYg
KG5vX3NpZ25hbChpdDY2MjUpKSB7DQo+PiArCQlkZXZfZXJyKGl0NjYyNS0+ZGV2LCAibm8gc2ln
bmFsIGRldGVjdGVkIik7DQo+PiArCQlyZXR1cm4gLUVOT0xJTks7DQo+PiArCX0NCj4+ICsNCj4+
ICsJZ3VhcmQobXV0ZXgpKCZpdDY2MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsNCj4+ICsJbWVtc2V0
KHRpbWluZ3MsIDAsIHNpemVvZihzdHJ1Y3QgdjRsMl9kdl90aW1pbmdzKSk7DQo+PiArCXRpbWlu
Z3MtPnR5cGUgPSBWNEwyX0RWX0JUXzY1Nl8xMTIwOw0KPj4gKwl2YWwgPSBpdDY2MjVfcmVhZF9i
eXRlKGl0NjYyNSwgUkVHX1ZJRF9JTkZPKTsNCj4+ICsJaWYgKHZhbCA8IDApIHsNCj4+ICsJCWRl
dl9lcnIoaXQ2NjI1LT5kZXYsICJmYWlsZWQgdG8gcmVhZCB2aWRlbyBpbmZvIik7DQo+PiArCQly
ZXR1cm4gLUVJTzsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlidC0+aW50ZXJsYWNlZCA9IHZhbCAmIEJf
SU5URVJMQUNFID8NCj4+ICsJCQkgVjRMMl9EVl9JTlRFUkxBQ0VEIDogVjRMMl9EVl9QUk9HUkVT
U0lWRTsNCj4+ICsNCj4+ICsJaWYgKGl0NjYyNV9yZWFkX2J5dGVzKGl0NjYyNSwgUkVHX0hfQUNU
SVZFXzEsIGJ1ZmZlciwgNCkgPCAwKQ0KPj4gKwkJcmV0dXJuIC1FSU87DQo+PiArDQo+PiArCXdp
ZHRoID0gKChidWZmZXJbMF0gJiAweGZmKSA8PCA4KSArIGJ1ZmZlclsxXTsNCj4+ICsJaGVpZ2h0
ID0gKChidWZmZXJbMl0gJiAweGZmKSA8PCA4KSArIGJ1ZmZlclszXTsNCj4+ICsNCj4+ICsJYnQt
PndpZHRoID0gd2lkdGg7DQo+PiArCWJ0LT5oZWlnaHQgPSBoZWlnaHQ7DQo+PiArDQo+PiArCWlm
IChpdDY2MjVfcmVhZF9ieXRlcyhpdDY2MjUsIFJFR19IX0ZQXzEsIGJ1ZmZlcjIsIDEyKSA8IDAp
DQo+PiArCQlyZXR1cm4gLUVJTzsNCj4+ICsNCj4+ICsJYnQtPmhmcm9udHBvcmNoID0gKChidWZm
ZXIyWzBdICYgMHhmZikgPDwgOCkgKyBidWZmZXIyWzFdOw0KPj4gKwlidC0+aHN5bmMgPSAoKGJ1
ZmZlcjJbMl0gJiAweGZmKSA8PCA4KSArIGJ1ZmZlcjJbM107DQo+PiArCWJ0LT5oYmFja3BvcmNo
ID0gKChidWZmZXIyWzRdICYgMHhmZikgPDwgOCkgKyBidWZmZXIyWzVdOw0KPj4gKwlidC0+dmZy
b250cG9yY2ggPSAoKGJ1ZmZlcjJbNl0gJiAweGZmKSA8PCA4KSArIGJ1ZmZlcjJbN107DQo+PiAr
CWJ0LT52c3luYyA9ICgoYnVmZmVyMls4XSAmIDB4ZmYpIDw8IDgpICsgYnVmZmVyMls5XTsNCj4+
ICsJYnQtPnZiYWNrcG9yY2ggPSAoKGJ1ZmZlcjJbMTBdICYgMHhmZikgPDwgOCkgKyBidWZmZXIy
WzExXTsNCj4+ICsNCj4+ICsJYnQtPnBpeGVsY2xvY2sgPSBpdDY2MjVfZ2V0X3BjbGsoaXQ2NjI1
KTsNCj4+ICsJaWYgKGJ0LT5pbnRlcmxhY2VkID09IFY0TDJfRFZfSU5URVJMQUNFRCkgew0KPj4g
KwkJYnQtPmhlaWdodCAqPSAyOw0KPj4gKwkJYnQtPmlsX3ZzeW5jID0gYnQtPnZzeW5jICsgMTsN
Cj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZv
aWQgaXQ2NjI1X3Nob3dfYXZpX2luZm9mcmFtZShzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiAr
ew0KPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpdDY2MjUtPmRldjsNCj4+ICsJdW5pb24gaGRt
aV9pbmZvZnJhbWUgZnJhbWU7DQo+PiArCXU4IGJ1ZmZlcltIRE1JX0lORk9GUkFNRV9TSVpFKEFW
SSldOw0KPj4gKwl1OCB2ZXIsIGxlbjsNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJaWYgKCFp
c19oZG1pKGl0NjYyNSkpIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAibm90IEhETUkgc2lnbmFsLCBz
a2lwIEFWSSBpbmZvZnJhbWUgbG9nIik7DQo+PiArCQlyZXR1cm47DQo+PiArCX0NCj4+ICsNCj4+
ICsJcmV0ID0gaXQ2NjI1X3JlYWRfYnl0ZXMoaXQ2NjI1LCBSRUdfQVZJX0RBVEEsIGJ1ZmZlciAr
IDEsDQo+PiArCQkJCUhETUlfSU5GT0ZSQU1FX1NJWkUoQVZJKSAtIDEpOw0KPj4gKwlpZiAocmV0
IDwgMCkgew0KPj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVhZCBBVkkgaW5mb2ZyYW1l
IGRhdGEiKTsNCj4+ICsJCXJldHVybjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlsZW4gPSBidWZmZXJb
MV07DQo+PiArCXZlciA9IGJ1ZmZlclsyXTsNCj4+ICsNCj4+ICsJYnVmZmVyWzBdID0gSERNSV9J
TkZPRlJBTUVfVFlQRV9BVkk7DQo+PiArCWJ1ZmZlclsxXSA9IHZlcjsNCj4+ICsJYnVmZmVyWzJd
ID0gbGVuOw0KPj4gKw0KPj4gKwlyZXQgPSBoZG1pX2luZm9mcmFtZV91bnBhY2soJmZyYW1lLCBi
dWZmZXIsIHNpemVvZihidWZmZXIpKTsNCj4+ICsJaWYgKHJldCA8IDApIHsNCj4+ICsJCWRldl9l
cnIoZGV2LCAidW5wYWNrIG9mIEFWSSBpbmZvZnJhbWUgZmFpbGVkIik7DQo+PiArCQlyZXR1cm47
DQo+PiArCX0NCj4+ICsNCj4+ICsJaGRtaV9pbmZvZnJhbWVfbG9nKEtFUk5fSU5GTywgZGV2LCAm
ZnJhbWUpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9zX2N0cmxfZGV0ZWN0
X2hkbWlfNXYoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2
MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0KPj4gKw0KPj4gKwlyZXR1cm4gdjRsMl9jdHJs
X3NfY3RybChpdDY2MjUtPmN0cmxfNXZfZGV0ZWN0LA0KPj4gKwkJCQloZG1pXzV2X3Bvd2VyX3By
ZXNlbnQoaXQ2NjI1KSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3NfY3Ry
bF9hdWRpb19zYW1wbGluZ19yYXRlKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QpDQo+PiArew0KPj4g
KwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNkKTsNCj4+ICsNCj4+ICsJcmV0
dXJuIHY0bDJfY3RybF9zX2N0cmwoaXQ2NjI1LT5jdHJsX2F1ZGlvX3NhbXBsaW5nX3JhdGUsDQo+
PiArCQkJCWdldF9hdWRpb19zYW1wbGluZ19yYXRlKGl0NjYyNSkpOw0KPj4gK30NCj4+ICsNCj4+
ICtzdGF0aWMgaW50IGl0NjYyNV9zX2N0cmxfYXVkaW9fcHJlc2VudChzdHJ1Y3QgdjRsMl9zdWJk
ZXYgKnNkKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1ID0gc2RfdG9fNjYyNShz
ZCk7DQo+PiArDQo+PiArCXJldHVybiB2NGwyX2N0cmxfc19jdHJsKGl0NjYyNS0+Y3RybF9hdWRp
b19wcmVzZW50LA0KPj4gKwkJCQlhdWRpb19wcmVzZW50KGl0NjYyNSkpOw0KPj4gK30NCj4+ICsN
Cj4+ICtzdGF0aWMgaW50IGl0NjYyNV92NGwyX3NkX2N0cmxfdXBkYXRlKHN0cnVjdCB2NGwyX3N1
YmRldiAqc2QpDQo+PiArew0KPj4gKwlpbnQgcmV0ID0gMDsNCj4+ICsNCj4+ICsJcmV0IHw9IGl0
NjYyNV9zX2N0cmxfZGV0ZWN0X2hkbWlfNXYoc2QpOw0KPj4gKwlyZXQgfD0gaXQ2NjI1X3NfY3Ry
bF9hdWRpb19zYW1wbGluZ19yYXRlKHNkKTsNCj4+ICsJcmV0IHw9IGl0NjYyNV9zX2N0cmxfYXVk
aW9fcHJlc2VudChzZCk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtz
dGF0aWMgdm9pZCBpdDY2MjVfZW5hYmxlX3N0cmVhbV9sb2NrZWQoc3RydWN0IGl0NjYyNSAqaXQ2
NjI1LCBib29sIGVuYWJsZSkNCj4+ICt7DQo+PiArCXN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSAm
aXQ2NjI1LT5zZDsNCj4+ICsJaW50IHZhbDsNCj4+ICsNCj4+ICsJbG9ja2RlcF9hc3NlcnRfaGVs
ZCgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArDQo+PiArCXY0bDJfZGJnKDMsIGRlYnVnLCBz
ZCwgIiVzOiAlc2FibGUiLA0KPj4gKwkJIF9fZnVuY19fLCBlbmFibGUgPyAiZW4iIDogImRpcyIp
Ow0KPj4gKw0KPj4gKwl2YWwgPSBlbmFibGUgPyBCX01JUElfT1VUUFVUIDogMDsNCj4+ICsJaXQ2
NjI1X3NldF9iaXRzKGl0NjYyNSwgUkVHX01JUElfQ09OVFJPTCwgQl9NSVBJX09VVFBVVCwgdmFs
KTsNCj4+ICsJaXQ2NjI1X3VwZGF0ZV9jb25maWcoaXQ2NjI1KTsNCj4+ICt9DQo+PiArDQo+PiAr
c3RhdGljIHZvaWQgaXQ2NjI1X2VuYWJsZV9zdHJlYW0oc3RydWN0IGl0NjYyNSAqaXQ2NjI1LCBi
b29sIGVuYWJsZSkNCj4+ICt7DQo+PiArCWd1YXJkKG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9j
ayk7DQo+PiArCWl0NjYyNV9lbmFibGVfc3RyZWFtX2xvY2tlZChpdDY2MjUsIGVuYWJsZSk7DQo+
PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9zZXRfbWlwaV9jb25maWdfbG9ja2Vk
KHN0cnVjdCBpdDY2MjUgKml0NjYyNSwgdTMyIGNmZ192YWwpDQo+PiArew0KPj4gKwl1OCBtaXBp
X2RhdGFfdHlwZTsNCj4+ICsNCj4+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaXQ2NjI1LT5pdDY2
MjVfbG9jayk7DQo+PiArDQo+PiArCWRldl9kYmcoaXQ2NjI1LT5kZXYsICJtaXBpX2RhdGFfdHlw
ZSA9IDB4JXgiLCBjZmdfdmFsKTsNCj4+ICsNCj4+ICsJbWlwaV9kYXRhX3R5cGUgPSBjZmdfdmFs
ICYgMHhGRjsNCj4+ICsJaXQ2NjI1X3dyaXRlX2J5dGUoaXQ2NjI1LCBSRUdfTUlQSV9EQVRBX1RZ
UEUsIG1pcGlfZGF0YV90eXBlKTsNCj4+ICsJaXQ2NjI1X3VwZGF0ZV9jb25maWcoaXQ2NjI1KTsN
Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X3NldF9taXBpX2NvbmZpZyhzdHJ1
Y3QgaXQ2NjI1ICppdDY2MjUsIHUzMiBjZmdfdmFsKQ0KPj4gK3sNCj4+ICsJZ3VhcmQobXV0ZXgp
KCZpdDY2MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsJaXQ2NjI1X3NldF9taXBpX2NvbmZpZ19sb2Nr
ZWQoaXQ2NjI1LCBjZmdfdmFsKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSB1bnNp
Z25lZCBpbnQgZnBzX2Zyb21fYnRfdGltaW5ncyhjb25zdCBzdHJ1Y3QgdjRsMl9idF90aW1pbmdz
ICp0KQ0KPj4gK3sNCj4+ICsJaWYgKCFWNEwyX0RWX0JUX0ZSQU1FX0hFSUdIVCh0KSB8fCAhVjRM
Ml9EVl9CVF9GUkFNRV9XSURUSCh0KSkNCj4+ICsJCXJldHVybiAwOw0KPj4gKw0KPj4gKwlyZXR1
cm4gRElWX1JPVU5EX0NMT1NFU1QoKHVuc2lnbmVkIGludCl0LT5waXhlbGNsb2NrLA0KPj4gKwkJ
CQkgVjRMMl9EVl9CVF9GUkFNRV9IRUlHSFQodCkgKg0KPj4gKwkJCQkgVjRMMl9EVl9CVF9GUkFN
RV9XSURUSCh0KSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9pbml0aWFs
X3NldHVwKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiArCWludCB2YWwgPSAwOw0K
Pj4gKw0KPj4gKwlndWFyZChtdXRleCkoJml0NjYyNS0+aXQ2NjI1X2xvY2spOw0KPj4gKw0KPj4g
KwkvKg0KPj4gKwkgKiBSRUdfTUlQSV9DRkdbMDoyXSBsYW5lIGNvdW50IGZpZWxkOiAxIGxhbmUg
LT4gMCwgMiBsYW5lcyAtPiAxLA0KPj4gKwkgKiAzIGxhbmVzIChDLVBIWSBvbmx5KSAtPiAzLCA0
IGxhbmVzIChELVBIWSBvbmx5KSAtPiAzLg0KPj4gKwkgKi8NCj4+ICsJc3dpdGNoIChpdDY2MjUt
PmNzaV9sYW5lcykgew0KPj4gKwljYXNlIDE6DQo+PiArCQl2YWwgPSBGSUVMRF9QUkVQKE1fTUlQ
SV9MQU5FLCAwKTsNCj4+ICsJCWJyZWFrOw0KPj4gKwljYXNlIDI6DQo+PiArCQl2YWwgPSBGSUVM
RF9QUkVQKE1fTUlQSV9MQU5FLCAxKTsNCj4+ICsJCWJyZWFrOw0KPj4gKwlkZWZhdWx0Og0KPj4g
KwkJdmFsID0gRklFTERfUFJFUChNX01JUElfTEFORSwgMyk7DQo+PiArCQlicmVhazsNCj4+ICsJ
fQ0KPj4gKw0KPj4gKwlpZiAoaXQ2NjI1LT5idXNfdHlwZSA9PSBWNEwyX01CVVNfQ1NJMl9EUEhZ
KQ0KPj4gKwkJdmFsIHw9IEZJRUxEX1BSRVAoQl9NSVBJX0RQSFksIDEpOw0KPj4gKw0KPj4gKwlp
ZiAoaXQ2NjI1LT5wb3J0X251bSA9PSAyKQ0KPj4gKwkJdmFsIHw9IEZJRUxEX1BSRVAoQl9NSVBJ
X1NQTElULCAxKTsNCj4+ICsNCj4+ICsJaXQ2NjI1X3dyaXRlX2J5dGUoaXQ2NjI1LCBSRUdfTUlQ
SV9DRkcsIHZhbCk7DQo+PiArCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVHX01JUElfREFU
QV9UWVBFLCBpdDY2MjUtPmNzaV9mb3JtYXQpOw0KPj4gKwlpdDY2MjVfd3JpdGVfYnl0ZShpdDY2
MjUsIFJFR19NSVBJX0NPTlRST0wsIDB4MDApOw0KPj4gKwlpdDY2MjVfd3JpdGVfYnl0ZShpdDY2
MjUsIFJFR19SWF9DRkcsIDB4MDApOw0KPj4gKw0KPj4gKwlpdDY2MjVfc2V0X2JpdHMoaXQ2NjI1
LCBSRUdfSE9TVF9DVFJMX0lOVCwgQl9DT05GSUdfVVBEQVRFLCBCX0NPTkZJR19VUERBVEUpOw0K
Pj4gKwlpdDY2MjVfd2FpdF9mb3Jfc3RhdHVzKGl0NjYyNSwgUkVHX0hPU1RfQ1RSTF9JTlQsIDB4
MDAsIDI1KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgZHVtcF9jZWNfbXNnKHN0cnVj
dCBpdDY2MjUgKml0NjYyNSwgc3RydWN0IGNlY19tc2cgKm1zZywgY2hhciAqc3RyKQ0KPj4gK3sN
Cj4+ICsJaW50IGk7DQo+PiArDQo+PiArCWRldl9kYmcoaXQ2NjI1LT5kZXYsICIlczogZnJvbSAl
ZCB0byAlZCBsZW49JWQiLCBzdHIsDQo+PiArCQltc2ctPm1zZ1swXSA+PiA0LCBtc2ctPm1zZ1sw
XSAmIDB4MGYsIG1zZy0+bGVuKTsNCj4+ICsJZm9yIChpID0gMTsgaSA8IG1zZy0+bGVuOyBpKysp
DQo+PiArCQlkZXZfZGJnKGl0NjYyNS0+ZGV2LCAiICUwMngiLCBtc2ctPm1zZ1tpXSk7DQo+PiAr
fQ0KPg0KPlRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeTogdGhlIGNlYyBjb2RlIGFscmVhZHkg
aGFzIENFQyBkZWJ1Z2dpbmcgaW4gcGxhY2UuDQoNCkkgd2lsbCByZW1vdmUgaXQuDQo+PiArDQo+
PiArc3RhdGljIGludCBpdDY2MjVfY2VjX2FkYXBfZW5hYmxlKHN0cnVjdCBjZWNfYWRhcHRlciAq
YWRhcCwgYm9vbCBlbmFibGUpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBh
ZGFwLT5wcml2Ow0KPj4gKwl1OCBjbWRzWzJdOw0KPj4gKw0KPj4gKwljbWRzWzBdID0gQ01EX1NF
VF9DRUNfRU5BQkxFOw0KPj4gKwljbWRzWzFdID0gZW5hYmxlID8gMSA6IDA7DQo+PiArCWd1YXJk
KG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArCWl0NjYyNV93cml0ZV9jb21tYW5k
KGl0NjYyNSwgY21kcywgc2l6ZW9mKGNtZHMpKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiAr
fQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X2NlY19hZGFwX2xvZ19hZGRyKHN0cnVjdCBj
ZWNfYWRhcHRlciAqYWRhcCwgdTggbG9nX2FkZHIpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1
ICppdDY2MjUgPSBhZGFwLT5wcml2Ow0KPj4gKw0KPj4gKwlkZXZfZGJnKGl0NjYyNS0+ZGV2LCAi
JXM6IGxhPSVkIiwgX19mdW5jX18sIGxvZ19hZGRyKTsNCj4+ICsNCj4+ICsJaWYgKGxvZ19hZGRy
ICE9IENFQ19MT0dfQUREUl9JTlZBTElEKSB7DQo+PiArCQl1OCBjbWRzWzJdID0ge0NNRF9TRVRf
Q0VDX0xBLCBsb2dfYWRkcn07DQo+PiArDQo+PiArCQlndWFyZChtdXRleCkoJml0NjYyNS0+aXQ2
NjI1X2xvY2spOw0KPj4gKwkJaXQ2NjI1X3dyaXRlX2NvbW1hbmQoaXQ2NjI1LCBjbWRzLCBzaXpl
b2YoY21kcykpOw0KPg0KPkhvdyBkbyB5b3UgY2xlYXIgdGhlIGxvZ2ljYWwgYWRkcmVzcz8gSWYg
bG9nX2FkZHIgaXMgY2FsbGVkIHdpdGggQ0VDX0xPR19BRERSX0lOVkFMSUQsDQo+dGhlbiB0aGF0
IHNob3VsZCBjbGVhciB0aGUgY3VycmVudCBMQS4NCj4NCj5JIHN1c3BlY3QgdGhhdCBmb3IgdGhp
cyBIVyB0aGUgTEEgc2hvdWxkIGJlIHNldCB0byAweGYsIGJ1dCBJIGNhbid0IGJlIGNlcnRhaW4u
DQo+DQpzaW5jZSBjaGlwIGlzIEZXIGJhc2UsIGl0IGNhbiBlYXRoZXIgc2V0IExBIHRvIDB4RiBv
ciBkaXNhYmxlIENFQy4NCg0KQSByZXNldCBMQSB0byAweEYgd2lsbCBhZGQgdG8gbmV4dCB2ZXJz
aW9uLg0KDQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0
YXRpYyBpbnQgaXQ2NjI1X2NlY19hZGFwX3RyYW5zbWl0KHN0cnVjdCBjZWNfYWRhcHRlciAqYWRh
cCwgdTggYXR0ZW1wdHMsDQo+PiArCQkJCSAgICB1MzIgc2lnbmFsX2ZyZWVfdGltZSwgc3RydWN0
IGNlY19tc2cgKm1zZykNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IGFkYXAt
PnByaXY7DQo+PiArDQo+PiArCWR1bXBfY2VjX21zZyhpdDY2MjUsIG1zZywgIkNFQ19UWCIpOw0K
Pj4gKw0KPj4gKwlndWFyZChtdXRleCkoJml0NjYyNS0+aXQ2NjI1X2xvY2spOw0KPj4gKwlpdDY2
MjVfd3JpdGVfYnl0ZXMoaXQ2NjI1LCBSRUdfQ0VDX1RYX0RBVEEsIG1zZy0+bXNnLCBtc2ctPmxl
bik7DQo+PiArCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVHX0NFQ19UWF9EQVRBX0xFTiwg
bXNnLT5sZW4pOw0KPj4gKwlpdDY2MjVfc2V0X2JpdHMoaXQ2NjI1LCBSRUdfSE9TVF9DVFJMX0lO
VCwgQl9DRUNfU0VORF9EQVRBLCBCX0NFQ19TRU5EX0RBVEEpOw0KPj4gKwlpdDY2MjVfd2FpdF9m
b3Jfc3RhdHVzKGl0NjYyNSwgUkVHX0hPU1RfQ1RSTF9JTlQsIDB4MDAsIDI1KTsNCj4+ICsNCj4+
ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2VjX2Fk
YXBfb3BzIGl0NjYyNV9jZWNfYWRhcF9vcHMgPSB7DQo+PiArCS5hZGFwX2VuYWJsZSA9IGl0NjYy
NV9jZWNfYWRhcF9lbmFibGUsDQo+PiArCS5hZGFwX2xvZ19hZGRyID0gaXQ2NjI1X2NlY19hZGFw
X2xvZ19hZGRyLA0KPj4gKwkuYWRhcF90cmFuc21pdCA9IGl0NjYyNV9jZWNfYWRhcF90cmFuc21p
dCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9jZWNfaGFuZGxlcihzdHJ1
Y3QgaXQ2NjI1ICppdDY2MjUsIHU4IGludHN0YXR1cykNCj4+ICt7DQo+PiArCXN0cnVjdCBjZWNf
bXNnIHJ4bXNnID0ge307DQo+PiArCWludCB2YWwgPSAwOw0KPj4gKw0KPj4gKwlpZiAoaW50c3Rh
dHVzICYgQl9DRUNfUlhfUkVDRUlWRUQpIHsNCj4+ICsJCXNjb3BlZF9ndWFyZChtdXRleCwgJml0
NjYyNS0+aXQ2NjI1X2xvY2spIHsNCj4+ICsJCQl2YWwgPSBpdDY2MjVfcmVhZF9ieXRlKGl0NjYy
NSwgUkVHX0NFQ19SWF9EQVRBX0xFTik7DQo+PiArCQkJaWYgKHZhbCA+IDAgJiYgdmFsIDw9IDE2
KQ0KPg0KPlVzZSBDRUNfTUFYX01TR19TSVpFIGluc3RlYWQgb2YgaGFyZGNvZGluZyAnMTYnLiBT
YW1lIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLg0KPg0KDQp0aGlzIHdpbGwgdXBkYXRlIG5l
eHQgdmVyc2lvbg0KDQo+PiArCQkJCWl0NjYyNV9yZWFkX2J5dGVzKGl0NjYyNSwgUkVHX0NFQ19S
WF9EQVRBLCAmcnhtc2cubXNnWzBdLCB2YWwpOw0KPj4gKwkJCWl0NjYyNV93cml0ZV9ieXRlKGl0
NjYyNSwgUkVHX0NFQ19SWF9EQVRBX0xFTiwgMCk7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpZiAo
dmFsID4gMCAmJiB2YWwgPD0gMTYpIHsNCj4+ICsJCQlyeG1zZy5sZW4gPSB2YWw7DQo+PiArCQkJ
Y2VjX3JlY2VpdmVkX21zZyhpdDY2MjUtPmNlY19hZGFwLCAmcnhtc2cpOw0KPj4gKwkJCWR1bXBf
Y2VjX21zZyhpdDY2MjUsICZyeG1zZywgIkNFQ19SWCIpOw0KPj4gKwkJfSBlbHNlIHsNCj4+ICsJ
CQlkZXZfZXJyKGl0NjYyNS0+ZGV2LCAiaW52YWxpZCBDRUMgUlggbGVuZ3RoICVkIiwgdmFsKTsN
Cj4+ICsJCX0NCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAoaW50c3RhdHVzICYgQl9DRUNfVFhfVVBE
QVRFKSB7DQo+PiArCQl2YWwgPSBpdDY2MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX0NFQ19TVEFU
VVMpOw0KPj4gKwkJaWYgKHZhbCA8IDApIHsNCj4+ICsJCQlkZXZfZXJyKGl0NjYyNS0+ZGV2LCAi
cmVhZCBDRUMgc3RhdHVzIGZhaWxlZCIpOw0KPj4gKwkJCXJldHVybjsNCj4+ICsJCX0NCj4+ICsN
Cj4+ICsJCWlmICh2YWwgJiBCSVQoMCkpIHsNCj4+ICsJCQljZWNfdHJhbnNtaXRfYXR0ZW1wdF9k
b25lKGl0NjYyNS0+Y2VjX2FkYXAsDQo+PiArCQkJCQkJICBDRUNfVFhfU1RBVFVTX09LKTsNCj4+
ICsJCX0gZWxzZSBpZiAodmFsICYgQklUKDEpKSB7DQo+PiArCQkJY2VjX3RyYW5zbWl0X2F0dGVt
cHRfZG9uZShpdDY2MjUtPmNlY19hZGFwLA0KPj4gKwkJCQkJCSAgQ0VDX1RYX1NUQVRVU19OQUNL
KTsNCj4+ICsJCX0gZWxzZSB7DQo+PiArCQkJZGV2X2VycihpdDY2MjUtPmRldiwgInVua25vd24g
Q0VDIHN0YXR1cyAlMDJYIiwgdmFsKTsNCj4NCj5UaGlzIHByb2JhYmx5IHNob3VsZCBiZSBkZXZf
aW5mby4gSWYgdGhlIGhhcmR3YXJlIHJldHVybnMgYSBrbm93biBiYWQgdmFsdWUsDQo+dGhlbiB0
aGlzIHdvdWxkIGJlIGFuIGVycm9yLiBCdXQgaWYgaXQgaXMgYSB2YWxpZCB2YWx1ZSwgYnV0IHlv
dSBqdXN0IGRvIG5vdA0KPmtub3cgd2hhdCBpdCBtZWFucywgdGhlbiBkZXZfaW5mbyBpcyBtb3Jl
IGFwcHJvcHJpYXRlLg0KPg0KDQp0aGlzIHdpbGwgdXBkYXRlIG5leHQgdmVyc2lvbg0KDQo+PiAr
CQkJY2VjX3RyYW5zbWl0X2F0dGVtcHRfZG9uZShpdDY2MjUtPmNlY19hZGFwLA0KPj4gKwkJCQkJ
CSAgQ0VDX1RYX1NUQVRVU19OQUNLKTsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4gK30NCj4+ICsNCj4+
ICtzdGF0aWMgdm9pZCBpdDY2MjVfaXJxX2Zvcm1hdF9jaGFuZ2Uoc3RydWN0IGl0NjYyNSAqaXQ2
NjI1KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9ICZpdDY2MjUtPnNkOw0K
Pj4gKwlzdHJ1Y3QgdjRsMl9kdl90aW1pbmdzIHRpbWluZ3M7DQo+PiArCWNvbnN0IHN0cnVjdCB2
NGwyX2V2ZW50IGl0NjYyNV9ldl9mbXQgPSB7DQo+PiArCQkudHlwZSA9IFY0TDJfRVZFTlRfU09V
UkNFX0NIQU5HRSwNCj4+ICsJCS51LnNyY19jaGFuZ2UuY2hhbmdlcyA9IFY0TDJfRVZFTlRfU1JD
X0NIX1JFU09MVVRJT04sDQo+PiArCX07DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCWlmIChu
b19zaWduYWwoaXQ2NjI1KSkNCj4NCj5JZiB0aGUgc2lnbmFsIGRpc2FwcGVhcnMsIHRoZW4gYWxz
byByYWlzZSB0aGUgU09VUkNFX0NIQU5HRSBldmVudC4NCj5JIHRoaW5rIHRoYXQgaXMgbWlzc2lu
ZyBoZXJlLg0KPg0KDQp0aGlzIHdpbGwgdXBkYXRlIG5leHQgdmVyc2lvbg0KDQo+PiArCQlyZXR1
cm47DQo+PiArDQo+PiArCXJldCA9IGl0NjYyNV9nZXRfZGV0ZWN0ZWRfdGltaW5ncyhpdDY2MjUs
ICZ0aW1pbmdzKTsNCj4+ICsJaWYgKHJldCA8IDApIHsNCj4+ICsJCXY0bDJfZGJnKDEsIGRlYnVn
LCBzZCwgIkZhaWxlZCB0byBnZXQgZGV0ZWN0ZWQgdGltaW5ncyIpOw0KPj4gKwkJcmV0dXJuOw0K
Pj4gKwl9DQo+PiArDQo+PiArCWlmIChzZC0+ZGV2bm9kZSkNCj4+ICsJCXY0bDJfc3ViZGV2X25v
dGlmeV9ldmVudChzZCwgJml0NjYyNV9ldl9mbXQpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg
dm9pZCBpdDY2MjVfaXJxX2hkbWlfYXVkaW9fY2hhbmdlKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkN
Cj4+ICt7DQo+PiArCXN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSAmaXQ2NjI1LT5zZDsNCj4+ICsN
Cj4+ICsJaXQ2NjI1X3NfY3RybF9hdWRpb19zYW1wbGluZ19yYXRlKHNkKTsNCj4+ICsJaXQ2NjI1
X3NfY3RybF9hdWRpb19wcmVzZW50KHNkKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQg
aXQ2NjI1X2dldF90aW1pbmdzKHN0cnVjdCBpdDY2MjUgKml0NjYyNSwNCj4+ICsJCQkgICAgICAg
c3RydWN0IHY0bDJfZHZfdGltaW5ncyAqdGltaW5ncykNCj4+ICt7DQo+PiArCWd1YXJkKG11dGV4
KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArCSp0aW1pbmdzID0gaXQ2NjI1LT50aW1pbmdz
Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfY2xlYXJfdGltaW5ncyhzdHJ1
Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwlndWFyZChtdXRleCkoJml0NjYyNS0+aXQ2
NjI1X2xvY2spOw0KPj4gKwltZW1zZXQoJml0NjYyNS0+dGltaW5ncywgMCwgc2l6ZW9mKGl0NjYy
NS0+dGltaW5ncykpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfaXJxX2hk
bWlfNXZfY2hhbmdlKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiArCXN0cnVjdCB2
NGwyX3N1YmRldiAqc2QgPSAmaXQ2NjI1LT5zZDsNCj4+ICsNCj4+ICsJaXQ2NjI1X2NsZWFyX3Rp
bWluZ3MoaXQ2NjI1KTsNCj4+ICsJaXQ2NjI1X3Y0bDJfc2RfY3RybF91cGRhdGUoc2QpOw0KPj4g
K30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfaXJxX2hkY3BfY2hhbmdlKHN0cnVjdCBp
dDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiArCXN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSAmaXQ2
NjI1LT5zZDsNCj4+ICsJdTggY3Bfc3RzOw0KPj4gKw0KPj4gKwljcF9zdHMgPSBpdDY2MjVfcmVh
ZF9ieXRlKGl0NjYyNSwgUkVHX1JYX0hEQ1BfU1RTKTsNCj4+ICsJdjRsMl9pbmZvKHNkLCAiSERD
UCBjaGFuZ2UgdG8gJTAyWCIsIGNwX3N0cyk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lk
IGl0NjYyNV9pcnFfaW5mb2ZyYW1lX2xhdGNoKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7
DQo+PiArCXU4IGluZm9fZnJhbWVbMzJdOw0KPj4gKw0KPj4gKwlndWFyZChtdXRleCkoJml0NjYy
NS0+aXQ2NjI1X2xvY2spOw0KPj4gKw0KPj4gKwlpdDY2MjVfcmVhZF9ieXRlcyhpdDY2MjUsIFJF
R19JRl9EQVRBLCBpbmZvX2ZyYW1lLCAzMSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lk
IGl0NjYyNV9pcnFfZW1hdGFfcGFja2V0X2xhdGNoKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+
ICt7DQo+PiArCXU4IGV4dGVuZF9wYWNrZXRbMTRdOw0KPj4gKw0KPj4gKwlpdDY2MjVfcmVhZF9i
eXRlcyhpdDY2MjUsIFJFR19FTVBfREFUQSwgZXh0ZW5kX3BhY2tldCwgMTMpOw0KPj4gK30NCj4+
ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfaXJxX2F2bXV0ZV9jaGFuZ2Uoc3RydWN0IGl0NjYy
NSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9ICZpdDY2MjUt
PnNkOw0KPj4gKwlpbnQgdmFsOw0KPj4gKwl1OCBhdm11dGU7DQo+PiArDQo+PiArCXZhbCA9IGl0
NjYyNV9yZWFkX2J5dGUoaXQ2NjI1LCBSRUdfUlhfU1RBVFVTKTsNCj4+ICsJaWYgKHZhbCA8IDAp
DQo+PiArCQlyZXR1cm47DQo+PiArDQo+PiArCWF2bXV0ZSA9ICh2YWwgJiBCX1JYX0FWTVVURSkg
PyAxIDogMDsNCj4+ICsJdjRsMl9pbmZvKHNkLCAiQVZNdXRlIGNoYW5nZSB0byAlZCIsIGF2bXV0
ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBib29sIGl0NjYyNV9pbnRlcnJ1cHRfaGFuZGxl
cihzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXYg
KnNkID0gJml0NjYyNS0+c2Q7DQo+PiArCWludCB2YWwsIGludF9zdHMxID0gMCwgaW50X3N0czIg
PSAwOw0KPj4gKw0KPj4gKwl2YWwgPSBpdDY2MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX01DVV9J
TlRFUlJVUFQpOw0KPj4gKwlpZiAodmFsIDw9IDApDQo+PiArCQlyZXR1cm4gZmFsc2U7DQo+PiAr
DQo+PiArCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVHX01DVV9JTlRFUlJVUFQsIHZhbCk7
DQo+PiArDQo+PiArCXY0bDJfZGJnKDEsIGRlYnVnLCBzZCwgIiVzOiBJTlQgPSAweCUwMlgiLCBf
X2Z1bmNfXywgdmFsKTsNCj4+ICsNCj4+ICsJaWYgKHZhbCAmIChCX0NFQ19SWF9SRUNFSVZFRCB8
IEJfQ0VDX1RYX1VQREFURSkgJiYgaXQ2NjI1LT5jZWNfYWRhcCkNCj4+ICsJCWl0NjYyNV9jZWNf
aGFuZGxlcihpdDY2MjUsIHZhbCAmIChCX0NFQ19SWF9SRUNFSVZFRCB8IEJfQ0VDX1RYX1VQREFU
RSkpOw0KPj4gKw0KPj4gKwlpZiAodmFsICYgQl9TWVNfSU5UX0FDVElWRSkgew0KPj4gKwkJaW50
X3N0czEgPSBpdDY2MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX1JYX0lOVF9TVEFUVVMxKTsNCj4+
ICsJCWludF9zdHMyID0gaXQ2NjI1X3JlYWRfYnl0ZShpdDY2MjUsIFJFR19SWF9JTlRfU1RBVFVT
Mik7DQo+PiArCQl2NGwyX2RiZygxLCBkZWJ1Zywgc2QsICIlczogaGRtaV9pbnQgPSAweCUwMlgg
MHglMDJYIiwNCj4+ICsJCQkgX19mdW5jX18sIGludF9zdHMxLCBpbnRfc3RzMik7DQo+PiArDQo+
PiArCQlpZiAoaW50X3N0czEgPj0gMCkgew0KPj4gKwkJCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYy
NSwgUkVHX1JYX0lOVF9TVEFUVVMxLCAweDAwKTsNCj4+ICsJCQlpZiAoaW50X3N0czEgJiBCX0hE
TUlfNVZfQ0hHKQ0KPj4gKwkJCQlpdDY2MjVfaXJxX2hkbWlfNXZfY2hhbmdlKGl0NjYyNSk7DQo+
PiArDQo+PiArCQkJaWYgKGludF9zdHMxICYgQl9IRE1JX1ZJRF9DSEcpDQo+PiArCQkJCWl0NjYy
NV9pcnFfZm9ybWF0X2NoYW5nZShpdDY2MjUpOw0KPj4gKw0KPj4gKwkJCWlmIChpbnRfc3RzMSAm
IEJfSERNSV9BVURfQ0hHKQ0KPj4gKwkJCQlpdDY2MjVfaXJxX2hkbWlfYXVkaW9fY2hhbmdlKGl0
NjYyNSk7DQo+PiArDQo+PiArCQkJaWYgKGludF9zdHMxICYgQl9IRE1JX0NQX0NIRykNCj4+ICsJ
CQkJaXQ2NjI1X2lycV9oZGNwX2NoYW5nZShpdDY2MjUpOw0KPj4gKw0KPj4gKwkJCWlmIChpbnRf
c3RzMSAmIEJfSERNSV9JRl9MQVRDSCkNCj4+ICsJCQkJaXQ2NjI1X2lycV9pbmZvZnJhbWVfbGF0
Y2goaXQ2NjI1KTsNCj4+ICsNCj4+ICsJCQlpZiAoaW50X3N0czEgJiBCX0hETUlfRU1QKQ0KPj4g
KwkJCQlpdDY2MjVfaXJxX2VtYXRhX3BhY2tldF9sYXRjaChpdDY2MjUpOw0KPj4gKwkJfQ0KPj4g
Kw0KPj4gKwkJaWYgKGludF9zdHMyID49IDApIHsNCj4+ICsJCQlpdDY2MjVfd3JpdGVfYnl0ZShp
dDY2MjUsIFJFR19SWF9JTlRfU1RBVFVTMiwgMHgwMCk7DQo+PiArDQo+PiArCQkJaWYgKGludF9z
dHMyICYgQl9IRE1JX0FWSSkNCj4+ICsJCQkJaXQ2NjI1X3Nob3dfYXZpX2luZm9mcmFtZShpdDY2
MjUpOw0KPj4gKw0KPj4gKwkJCWlmIChpbnRfc3RzMiAmIEJfSERNSV9OT19BVkkpDQo+PiArCQkJ
CXY0bDJfaW5mbyhzZCwgIkFWSS1pbmZvIHN0b3BwZWQiKTsNCj4+ICsNCj4+ICsJCQlpZiAoaW50
X3N0czIgJiBCX0hETUlfQVZNVVRFX0NIRykNCj4+ICsJCQkJaXQ2NjI1X2lycV9hdm11dGVfY2hh
bmdlKGl0NjYyNSk7DQo+PiArCQl9DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIHRydWU7DQo+
PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBpdDY2MjVfaXJxX2hhbmRsZXIoaW50
IHVudXNlZCwgdm9pZCAqZGF0YSkNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9
IGRhdGE7DQo+PiArDQo+PiArCXJldHVybiBpdDY2MjVfaW50ZXJydXB0X2hhbmRsZXIoaXQ2NjI1
KSA/IElSUV9IQU5ETEVEIDogSVJRX05PTkU7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lk
IGl0NjYyNV9pcnFfcG9sbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdCkNCj4+ICt7DQo+PiAr
CXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHRpbWVyX2NvbnRhaW5lcl9vZihpdDY2MjUsIHQsIHRp
bWVyKTsNCj4+ICsJdW5zaWduZWQgaW50IG1zZWNzOw0KPj4gKw0KPj4gKwlzY2hlZHVsZV93b3Jr
KCZpdDY2MjUtPnBvbGxpbmdfd29yayk7DQo+PiArCS8qDQo+PiArCSAqIElmIENFQyBpcyBwcmVz
ZW50LCB0aGVuIHdlIG5lZWQgdG8gcG9sbCBtb3JlIGZyZXF1ZW50bHksDQo+PiArCSAqIG90aGVy
d2lzZSB3ZSB3aWxsIG1pc3MgQ0VDIG1lc3NhZ2VzLg0KPj4gKwkgKi8NCj4+ICsJbXNlY3MgPSBp
dDY2MjUtPmNlY19hZGFwID8gUE9MTF9JTlRFUlZBTF9DRUNfTVMgOiBQT0xMX0lOVEVSVkFMX01T
Ow0KPj4gKwltb2RfdGltZXIoJml0NjYyNS0+dGltZXIsIGppZmZpZXMgKyBtc2Vjc190b19qaWZm
aWVzKG1zZWNzKSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9wb2xsaW5n
X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYy
NSAqaXQ2NjI1ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpdDY2MjUsDQo+PiArCQkJCQlw
b2xsaW5nX3dvcmspOw0KPj4gKw0KPj4gKwlpdDY2MjVfaW50ZXJydXB0X2hhbmRsZXIoaXQ2NjI1
KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfbG9nX3N0YXR1cyhzdHJ1Y3Qg
djRsMl9zdWJkZXYgKnNkKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1ID0gc2Rf
dG9fNjYyNShzZCk7DQo+PiArCXN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgdGltaW5ncywgY29uZmln
dXJlZF90aW1pbmdzOw0KPj4gKw0KPj4gKwlpZiAoaXQ2NjI1X2dldF9kZXRlY3RlZF90aW1pbmdz
KGl0NjYyNSwgJnRpbWluZ3MpKQ0KPj4gKwkJdjRsMl9pbmZvKHNkLCAiTm8gdmlkZW8gZGV0ZWN0
ZWQiKTsNCj4+ICsJZWxzZQ0KPj4gKwkJdjRsMl9wcmludF9kdl90aW1pbmdzKHNkLT5uYW1lLCAi
RGV0ZWN0ZWQgZm9ybWF0OiAiLCAmdGltaW5ncywNCj4+ICsJCQkJICAgICAgdHJ1ZSk7DQo+PiAr
DQo+PiArCWl0NjYyNV9nZXRfdGltaW5ncyhpdDY2MjUsICZjb25maWd1cmVkX3RpbWluZ3MpOw0K
Pj4gKwl2NGwyX3ByaW50X2R2X3RpbWluZ3Moc2QtPm5hbWUsICJDb25maWd1cmVkIGZvcm1hdDog
IiwNCj4+ICsJCQkgICAgICAmY29uZmlndXJlZF90aW1pbmdzLCB0cnVlKTsNCj4+ICsNCj4+ICsJ
aXQ2NjI1X3Nob3dfYXZpX2luZm9mcmFtZShpdDY2MjUpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsN
Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfaXNyKHN0cnVjdCB2NGwyX3N1YmRl
diAqc2QsIHUzMiBzdGF0dXMsIGJvb2wgKmhhbmRsZWQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2
NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNkKTsNCj4+ICsNCj4+ICsJc2NoZWR1bGVfd29yaygm
aXQ2NjI1LT5wb2xsaW5nX3dvcmspOw0KPj4gKwkqaGFuZGxlZCA9IHRydWU7DQo+PiArDQo+PiAr
CXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9zdWJzY3JpYmVf
ZXZlbnQoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgc3RydWN0IHY0bDJfZmggKmZoLA0KPj4gKwkJ
CQkgIHN0cnVjdCB2NGwyX2V2ZW50X3N1YnNjcmlwdGlvbiAqc3ViKQ0KPj4gK3sNCj4+ICsJc3dp
dGNoIChzdWItPnR5cGUpIHsNCj4+ICsJY2FzZSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0U6DQo+
PiArCQlyZXR1cm4gdjRsMl9zcmNfY2hhbmdlX2V2ZW50X3N1YmRldl9zdWJzY3JpYmUoc2QsIGZo
LCBzdWIpOw0KPj4gKwljYXNlIFY0TDJfRVZFTlRfQ1RSTDoNCj4+ICsJCXJldHVybiB2NGwyX2N0
cmxfc3ViZGV2X3N1YnNjcmliZV9ldmVudChzZCwgZmgsIHN1Yik7DQo+PiArCWRlZmF1bHQ6DQo+
PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsJfQ0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50
IGl0NjYyNV9nX2lucHV0X3N0YXR1cyhzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLCB1MzIgKnN0YXR1
cykNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0K
Pj4gKwlib29sIHZhbDsNCj4+ICsNCj4+ICsJdmFsID0gbm9fc2lnbmFsKGl0NjYyNSk7DQo+PiAr
CSpzdGF0dXMgPSAwOw0KPj4gKwkqc3RhdHVzIHw9IHZhbCA/IFY0TDJfSU5fU1RfTk9fU0lHTkFM
IDogMDsNCj4+ICsJKnN0YXR1cyB8PSB2YWwgPyBWNEwyX0lOX1NUX05PX1NZTkMgOiAwOw0KPj4g
Kw0KPj4gKwl2NGwyX2RiZygxLCBkZWJ1Zywgc2QsICIlczogc3RhdHVzID0gMHgleCIsIF9fZnVu
Y19fLCAqc3RhdHVzKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0
YXRpYyBpbnQNCj4+ICtpdDY2MjVfdXBkYXRlX3RpbWluZ3NfaWZfY2hhbmdlZChzdHJ1Y3QgaXQ2
NjI1ICppdDY2MjUsDQo+PiArCQkJCSBjb25zdCBzdHJ1Y3QgdjRsMl9kdl90aW1pbmdzICp0aW1p
bmdzKQ0KPj4gK3sNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJZ3VhcmQobXV0ZXgpKCZpdDY2
MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsJaWYgKHY0bDJfbWF0Y2hfZHZfdGltaW5ncygmaXQ2NjI1
LT50aW1pbmdzLCB0aW1pbmdzLCAwLCBmYWxzZSkpIHsNCj4+ICsJCXJldCA9IDA7DQo+PiArCX0g
ZWxzZSBpZiAoIXY0bDJfdmFsaWRfZHZfdGltaW5ncyh0aW1pbmdzLCAmaXQ2NjI1X3RpbWluZ3Nf
Y2FwLA0KPj4gKwkJCQkJICBOVUxMLCBOVUxMKSkgew0KPj4gKwkJcmV0ID0gLUVSQU5HRTsNCj4+
ICsJfSBlbHNlIHsNCj4+ICsJCWl0NjYyNS0+dGltaW5ncyA9ICp0aW1pbmdzOw0KPj4gKwkJcmV0
ID0gMTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtz
dGF0aWMgaW50IGl0NjYyNV9zX2R2X3RpbWluZ3Moc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCj4+
ICsJCQkgICAgICAgc3RydWN0IHY0bDJfZHZfdGltaW5ncyAqdGltaW5ncykNCj4+ICt7DQo+PiAr
CXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0KPj4gKwlpbnQgcmV0Ow0K
Pj4gKw0KPj4gKwlpZiAoIXRpbWluZ3MpDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+
ICsJaWYgKGRlYnVnKQ0KPj4gKwkJdjRsMl9wcmludF9kdl90aW1pbmdzKHNkLT5uYW1lLCBfX2Z1
bmNfXywgdGltaW5ncywgZmFsc2UpOw0KPj4gKw0KPj4gKwlyZXQgPSBpdDY2MjVfdXBkYXRlX3Rp
bWluZ3NfaWZfY2hhbmdlZChpdDY2MjUsIHRpbWluZ3MpOw0KPj4gKwlpZiAocmV0ID09IC1FUkFO
R0UpIHsNCj4+ICsJCXY0bDJfZGJnKDEsIGRlYnVnLCBzZCwgIiVzOiB0aW1pbmdzIG91dCBvZiBy
YW5nZSIsIF9fZnVuY19fKTsNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJ
aWYgKHJldCA9PSAwKSB7DQo+PiArCQl2NGwyX2RiZygxLCBkZWJ1Zywgc2QsICIlczogbm8gY2hh
bmdlIiwgX19mdW5jX18pOw0KPj4gKwkJcmV0dXJuIDA7DQo+PiArCX0NCj4+ICsNCj4+ICsJaXQ2
NjI1X2VuYWJsZV9zdHJlYW0oaXQ2NjI1LCBmYWxzZSk7DQo+DQo+VGhpcyBkb2Vzbid0IGxvb2sg
cmlnaHQuIFZpZGVvIG91dHB1dCBzaG91bGQgb25seSBiZSBlbmFibGVkIHdoZW4gdGhlIGJyaWRn
ZSBkcml2ZXINCj5jYWxscyB0aGUgc19zdHJlYW0gb3AuIERvaW5nIGl0IGhlcmUgY2FuIGNhdXNl
IHByb2JsZW1zIGlmIHRoZSByZW1haW5kZXIgb2YgdGhlDQo+dmlkZW8gcGlwZWxpbmUgaXNuJ3Qg
cHJvcGVybHkgY29uZmlndXJlZC4NCj4NCg0KdGhpcyB3aWxsIHVwZGF0ZSBuZXh0IHZlcnNpb24N
Cg0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2
MjVfZ19kdl90aW1pbmdzKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+PiArCQkJICAgICAgIHN0
cnVjdCB2NGwyX2R2X3RpbWluZ3MgKnRpbWluZ3MpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1
ICppdDY2MjUgPSBzZF90b182NjI1KHNkKTsNCj4+ICsNCj4+ICsJaXQ2NjI1X2dldF90aW1pbmdz
KGl0NjYyNSwgdGltaW5ncyk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+
ICtzdGF0aWMgaW50IGl0NjYyNV9lbnVtX2R2X3RpbWluZ3Moc3RydWN0IHY0bDJfc3ViZGV2ICpz
ZCwNCj4+ICsJCQkJICBzdHJ1Y3QgdjRsMl9lbnVtX2R2X3RpbWluZ3MgKnRpbWluZ3MpDQo+PiAr
ew0KPj4gKwlpZiAodGltaW5ncy0+cGFkICE9IDApDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+
ICsNCj4+ICsJcmV0dXJuIHY0bDJfZW51bV9kdl90aW1pbmdzX2NhcCh0aW1pbmdzLA0KPj4gKwkJ
CQkJJml0NjYyNV90aW1pbmdzX2NhcCwgTlVMTCwgTlVMTCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0
YXRpYyBpbnQgaXQ2NjI1X3F1ZXJ5X2R2X3RpbWluZ3Moc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwN
Cj4+ICsJCQkJICAgc3RydWN0IHY0bDJfZHZfdGltaW5ncyAqdGltaW5ncykNCj4+ICt7DQo+PiAr
CXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0KPj4gKwlpbnQgcmV0Ow0K
Pj4gKw0KPj4gKwlyZXQgPSBpdDY2MjVfZ2V0X2RldGVjdGVkX3RpbWluZ3MoaXQ2NjI1LCB0aW1p
bmdzKTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArDQo+PiArCWlmIChk
ZWJ1ZykNCj4+ICsJCXY0bDJfcHJpbnRfZHZfdGltaW5ncyhzZC0+bmFtZSwgX19mdW5jX18sIHRp
bWluZ3MsIGZhbHNlKTsNCj4+ICsNCj4+ICsJaWYgKCF2NGwyX3ZhbGlkX2R2X3RpbWluZ3ModGlt
aW5ncywgJml0NjYyNV90aW1pbmdzX2NhcCwgTlVMTCwgTlVMTCkpIHsNCj4+ICsJCXY0bDJfZGJn
KDEsIGRlYnVnLCBzZCwgIiVzOiB0aW1pbmdzIG91dCBvZiByYW5nZSIsIF9fZnVuY19fKTsNCj4+
ICsJCXJldHVybiAtRVJBTkdFOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30N
Cj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9kdl90aW1pbmdzX2NhcChzdHJ1Y3QgdjRsMl9z
dWJkZXYgKnNkLA0KPj4gKwkJCQkgc3RydWN0IHY0bDJfZHZfdGltaW5nc19jYXAgKmNhcCkNCj4+
ICt7DQo+PiArCWlmIChjYXAtPnBhZCAhPSAwKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiAr
DQo+PiArCSpjYXAgPSBpdDY2MjVfdGltaW5nc19jYXA7DQo+PiArDQo+PiArCXJldHVybiAwOw0K
Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9zX3N0cmVhbShzdHJ1Y3QgdjRsMl9z
dWJkZXYgKnNkLCBpbnQgZW5hYmxlKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1
ID0gc2RfdG9fNjYyNShzZCk7DQo+PiArDQo+PiArCWl0NjYyNV9lbmFibGVfc3RyZWFtKGl0NjYy
NSwgZW5hYmxlKTsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQg
aXQ2NjI1X2VudW1fbWJ1c19jb2RlKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+PiArCQkJCSBz
dHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnNkX3N0YXRlLA0KPj4gKwkJCQkgc3RydWN0IHY0bDJf
c3ViZGV2X21idXNfY29kZV9lbnVtICpjb2RlKQ0KPj4gK3sNCj4+ICsJZGV2X2RiZyhzZC0+ZGV2
LCAiJXM6IGluZGV4PSVkIiwgX19mdW5jX18sIGNvZGUtPmluZGV4KTsNCj4+ICsNCj4+ICsJaWYg
KGNvZGUtPmluZGV4ID49IEFSUkFZX1NJWkUoaXQ2NjI1X2Zvcm1hdHMpKQ0KPj4gKwkJcmV0dXJu
IC1FSU5WQUw7DQo+PiArDQo+PiArCWRldl9kYmcoc2QtPmRldiwgIiVzOiBjb2RlPTB4JTA4eCIs
IF9fZnVuY19fLA0KPj4gKwkJaXQ2NjI1X2Zvcm1hdHNbY29kZS0+aW5kZXhdLm1idXNfZm10X2Nv
ZGUpOw0KPj4gKwljb2RlLT5jb2RlID0gaXQ2NjI1X2Zvcm1hdHNbY29kZS0+aW5kZXhdLm1idXNf
Zm10X2NvZGU7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg
aW50IGl0NjYyNV9nZXRfbWJ1c19jb25maWcoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCj4+ICsJ
CQkJICB1bnNpZ25lZCBpbnQgcGFkLA0KPj4gKwkJCQkgIHN0cnVjdCB2NGwyX21idXNfY29uZmln
ICpjZmcpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNk
KTsNCj4+ICsNCj4+ICsJaWYgKHBhZCAhPSAwKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiAr
DQo+PiArCWNmZy0+dHlwZSA9IGl0NjYyNS0+YnVzX3R5cGU7DQo+PiArCWNmZy0+YnVzLm1pcGlf
Y3NpMi5mbGFncyA9IDA7DQo+PiArCWNmZy0+YnVzLm1pcGlfY3NpMi5udW1fZGF0YV9sYW5lcyA9
IGl0NjYyNS0+Y3NpX2xhbmVzOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+
PiArc3RhdGljIGludCBpdDY2MjVfcGFkX3NfZHZfdGltaW5ncyhzdHJ1Y3QgdjRsMl9zdWJkZXYg
KnNkLCB1bnNpZ25lZCBpbnQgcGFkLA0KPj4gKwkJCQkgICBzdHJ1Y3QgdjRsMl9kdl90aW1pbmdz
ICp0aW1pbmdzKQ0KPj4gK3sNCj4+ICsJaWYgKHBhZCAhPSAwKQ0KPj4gKwkJcmV0dXJuIC1FSU5W
QUw7DQo+PiArDQo+PiArCXJldHVybiBpdDY2MjVfc19kdl90aW1pbmdzKHNkLCB0aW1pbmdzKTsN
Cj4NCj5XaHkgbm90IGp1c3QgbW92ZSB0aGUgaXQ2NjI1X3NfZHZfdGltaW5ncyBjb2RlIGhlcmU/
IERpdHRvIGZvciB0aGUgbmV4dCB0d28gZnVuY3Rpb25zLg0KPg0KDQpUaGV5IGFyZSBmb3IgdGVz
dCBvbiA2LjYsIHdpbGwgbWVyZ2UgbmV4dCBwYXRjaC4NCg0KPj4gK30NCj4+ICsNCj4+ICtzdGF0
aWMgaW50IGl0NjYyNV9wYWRfZ19kdl90aW1pbmdzKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHVu
c2lnbmVkIGludCBwYWQsDQo+PiArCQkJCSAgIHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgKnRpbWlu
Z3MpDQo+PiArew0KPj4gKwlpZiAocGFkICE9IDApDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+
ICsNCj4+ICsJcmV0dXJuIGl0NjYyNV9nX2R2X3RpbWluZ3Moc2QsIHRpbWluZ3MpOw0KPj4gK30N
Cj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9wYWRfcXVlcnlfZHZfdGltaW5ncyhzdHJ1Y3Qg
djRsMl9zdWJkZXYgKnNkLA0KPj4gKwkJCQkgICAgICAgdW5zaWduZWQgaW50IHBhZCwNCj4+ICsJ
CQkJICAgICAgIHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgKnRpbWluZ3MpDQo+PiArew0KPj4gKwlp
ZiAocGFkICE9IDApDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJcmV0dXJuIGl0
NjYyNV9xdWVyeV9kdl90aW1pbmdzKHNkLCB0aW1pbmdzKTsNCj4+ICt9DQo+PiArDQo+PiArc3Rh
dGljIGlubGluZSB1MzIgZm9ybWF0X3RvX2NvbG9yc3BhY2UodTggY3NpX2Zvcm1hdCkNCj4+ICt7
DQo+PiArCXN3aXRjaCAoY3NpX2Zvcm1hdCkgew0KPj4gKwljYXNlIENTSV9SR0I0NDQ6DQo+PiAr
CWNhc2UgQ1NJX1JHQjU1NToNCj4+ICsJY2FzZSBDU0lfUkdCNTY1Og0KPj4gKwljYXNlIENTSV9S
R0I2NjY6DQo+PiArCWNhc2UgQ1NJX1JHQjg4ODoNCj4+ICsJY2FzZSBDU0lfUkdCXzEwYjoNCj4+
ICsJY2FzZSBDU0lfUkdCXzEyYjoNCj4+ICsJCXJldHVybiBWNEwyX0NPTE9SU1BBQ0VfU1JHQjsN
Cj4+ICsJY2FzZSBDU0lfWVVWNDIwXzhiX0w6DQo+PiArCWNhc2UgQ1NJX1lVVjQyMF84YjoNCj4+
ICsJY2FzZSBDU0lfWVVWNDIwXzEwYjoNCj4+ICsJY2FzZSBDU0lfWVVWNDIyXzhiOg0KPj4gKwlj
YXNlIENTSV9ZVVY0MjJfMTBiOg0KPj4gKwljYXNlIENTSV9ZVVY0MjJfMTJiOg0KPj4gKwljYXNl
IENTSV9ZVVY0MjBfMTBiX0w6DQo+PiArCWNhc2UgQ1NJX1lVVjQyMF8xMmI6DQo+PiArCWNhc2Ug
Q1NJX1lVVjQ0NF84YjoNCj4+ICsJY2FzZSBDU0lfWVVWNDQ0XzEwYjoNCj4+ICsJY2FzZSBDU0lf
WVVWNDQ0XzEyYjoNCj4+ICsJCXJldHVybiBWNEwyX0NPTE9SU1BBQ0VfUkVDNzA5Ow0KPj4gKwlk
ZWZhdWx0Og0KPj4gKwkJcmV0dXJuIDA7DQo+PiArCX0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj
IGNvbnN0IGNoYXIgKml0NjYyNV9jc2lfZm9ybWF0X25hbWUodTggY3NpX2Zvcm1hdCkNCj4+ICt7
DQo+PiArCXN3aXRjaCAoY3NpX2Zvcm1hdCkgew0KPj4gKwljYXNlIENTSV9ZVVY0MjJfOGI6DQo+
PiArCQlyZXR1cm4gIllVVjQyMiA4Yml0IjsNCj4+ICsJY2FzZSBDU0lfUkdCODg4Og0KPj4gKwkJ
cmV0dXJuICJSR0I4ODggOGJpdCI7DQo+PiArCWNhc2UgQ1NJX1lVVjQ0NF84YjoNCj4+ICsJCXJl
dHVybiAiWVVWNDQ0IDhiaXQiOw0KPj4gKwlkZWZhdWx0Og0KPj4gKwkJcmV0dXJuICJ1bmtub3du
IjsNCj4+ICsJfQ0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9nZXRfZm10KHN0
cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+PiArCQkJICBzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUg
KnNkX3N0YXRlLA0KPj4gKwkJCSAgc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm9ybWF0KQ0K
Pj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1ID0gc2RfdG9fNjYyNShzZCk7DQo+PiAr
CXN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgdGltaW5nczsNCj4+ICsNCj4+ICsJaWYgKGZvcm1hdC0+
cGFkICE9IDApDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJaXQ2NjI1X2dldF90
aW1pbmdzKGl0NjYyNSwgJnRpbWluZ3MpOw0KPj4gKwlmb3JtYXQtPmZvcm1hdC53aWR0aCA9IHRp
bWluZ3MuYnQud2lkdGg7DQo+PiArCWZvcm1hdC0+Zm9ybWF0LmhlaWdodCA9IHRpbWluZ3MuYnQu
aGVpZ2h0Ow0KPj4gKwlmb3JtYXQtPmZvcm1hdC5maWVsZCA9IHRpbWluZ3MuYnQuaW50ZXJsYWNl
ZCA9PSBWNEwyX0RWX0lOVEVSTEFDRUQgPw0KPj4gKwkJCSAgICAgICBWNEwyX0ZJRUxEX0lOVEVS
TEFDRUQgOiBWNEwyX0ZJRUxEX05PTkU7DQo+PiArDQo+PiArCWlmIChmb3JtYXQtPndoaWNoID09
IFY0TDJfU1VCREVWX0ZPUk1BVF9UUlkpIHsNCj4+ICsJCXN0cnVjdCB2NGwyX21idXNfZnJhbWVm
bXQgKmZtdDsNCj4+ICsNCj4+ICsJCWZtdCA9IHY0bDJfc3ViZGV2X3N0YXRlX2dldF9mb3JtYXQo
c2Rfc3RhdGUsIGZvcm1hdC0+cGFkKTsNCj4+ICsJCWZvcm1hdC0+Zm9ybWF0LmNvZGUgPSBmbXQt
PmNvZGU7DQo+PiArCQlmb3JtYXQtPmZvcm1hdC5jb2xvcnNwYWNlID0gZm10LT5jb2xvcnNwYWNl
Ow0KPj4gKwl9IGVsc2Ugew0KPj4gKwkJc2NvcGVkX2d1YXJkKG11dGV4LCAmaXQ2NjI1LT5pdDY2
MjVfbG9jaykgew0KPj4gKwkJCWZvcm1hdC0+Zm9ybWF0LmNvbG9yc3BhY2UgPQ0KPj4gKwkJCQlm
b3JtYXRfdG9fY29sb3JzcGFjZShpdDY2MjUtPmNzaV9mb3JtYXQpOw0KPj4gKwkJCWZvcm1hdC0+
Zm9ybWF0LmNvZGUgPSBpdDY2MjUtPm1idXNfZm10X2NvZGU7DQo+PiArCQl9DQo+PiArCX0NCj4+
ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3Nl
dF9mbXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCj4+ICsJCQkgIHN0cnVjdCB2NGwyX3N1YmRl
dl9zdGF0ZSAqc2Rfc3RhdGUsDQo+PiArCQkJICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpm
b3JtYXQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNk
KTsNCj4+ICsJaW50IHJldDsNCj4+ICsJdTMyIG1idXNfZm10X2NvZGUgPSBmb3JtYXQtPmZvcm1h
dC5jb2RlOw0KPj4gKw0KPj4gKwlyZXQgPSBpdDY2MjVfZ2V0X2ZtdChzZCwgc2Rfc3RhdGUsIGZv
cm1hdCk7DQo+PiArCWZvcm1hdC0+Zm9ybWF0LmNvZGUgPSBtYnVzX2ZtdF9jb2RlOw0KPj4gKw0K
Pj4gKwlpZiAocmV0KQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsJcmV0ID0gaXQ2NjI1
X2NzaV9tYnVzX2NvZGVfaWR4KG1idXNfZm10X2NvZGUpOw0KPj4gKw0KPj4gKwlpZiAocmV0IDwg
MCkgew0KPj4gKwkJdjRsMl9kYmcoMSwgZGVidWcsIHNkLA0KPj4gKwkJCSAiJXM6IHVuc3VwcG9y
dGVkIGZvcm1hdCBjb2RlIDB4JXgsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IiwNCj4+ICsJCQkg
X19mdW5jX18sIG1idXNfZm10X2NvZGUpOw0KPj4gKwkJcmV0ID0gMDsNCj4+ICsJCW1idXNfZm10
X2NvZGUgPSBpdDY2MjVfZm9ybWF0c1tyZXRdLm1idXNfZm10X2NvZGU7DQo+PiArCQlmb3JtYXQt
PmZvcm1hdC5jb2RlID0gbWJ1c19mbXRfY29kZTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAoZm9y
bWF0LT53aGljaCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZKSB7DQo+PiArCQlzdHJ1Y3QgdjRs
Ml9tYnVzX2ZyYW1lZm10ICpmbXQ7DQo+PiArDQo+PiArCQlmbXQgPSB2NGwyX3N1YmRldl9zdGF0
ZV9nZXRfZm9ybWF0KHNkX3N0YXRlLCBmb3JtYXQtPnBhZCk7DQo+PiArCQlmbXQtPmNvZGUgPSBm
b3JtYXQtPmZvcm1hdC5jb2RlOw0KPj4gKwkJZm10LT5jb2xvcnNwYWNlID0gZm9ybWF0X3RvX2Nv
bG9yc3BhY2UoaXQ2NjI1X2Zvcm1hdHNbcmV0XS5jc2lfZm9ybWF0KTsNCj4+ICsJCWZvcm1hdC0+
Zm9ybWF0LmNvbG9yc3BhY2UgPSBmbXQtPmNvbG9yc3BhY2U7DQo+PiArCQl2NGwyX2RiZygxLCBk
ZWJ1Zywgc2QsICIlczogdHJ5IGZvcm1hdCBjb2RlID0gMHgleCIsDQo+PiArCQkJIF9fZnVuY19f
LCBmb3JtYXQtPmZvcm1hdC5jb2RlKTsNCj4+ICsJCXJldHVybiAwOw0KPj4gKwl9DQo+PiArDQo+
PiArCXNjb3BlZF9ndWFyZChtdXRleCwgJml0NjYyNS0+aXQ2NjI1X2xvY2spIHsNCj4+ICsJCWl0
NjYyNS0+Y3NpX2Zvcm1hdCA9IGl0NjYyNV9mb3JtYXRzW3JldF0uY3NpX2Zvcm1hdDsNCj4+ICsJ
CWl0NjYyNS0+bWJ1c19mbXRfY29kZSA9IGZvcm1hdC0+Zm9ybWF0LmNvZGU7DQo+PiArCQlpdDY2
MjVfZW5hYmxlX3N0cmVhbV9sb2NrZWQoaXQ2NjI1LCBmYWxzZSk7DQo+PiArCQlpdDY2MjVfc2V0
X21pcGlfY29uZmlnX2xvY2tlZChpdDY2MjUsIGl0NjYyNS0+Y3NpX2Zvcm1hdCk7DQo+PiArCX0N
Cj4+ICsNCj4+ICsJZm9ybWF0LT5mb3JtYXQuY29sb3JzcGFjZSA9IGZvcm1hdF90b19jb2xvcnNw
YWNlKGl0NjYyNV9mb3JtYXRzW3JldF0uY3NpX2Zvcm1hdCk7DQo+PiArDQo+PiArCXJldHVybiAw
Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9nX2VkaWQoc3RydWN0IHY0bDJf
c3ViZGV2ICpzZCwNCj4+ICsJCQkgc3RydWN0IHY0bDJfc3ViZGV2X2VkaWQgKmVkaWQpDQo+PiAr
ew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNkKTsNCj4+ICsJaW50
IGVycjsNCj4+ICsNCj4+ICsJaWYgKGVkaWQtPnBhZCAhPSAwKQ0KPj4gKwkJcmV0dXJuIC1FSU5W
QUw7DQo+PiArDQo+PiArCW1lbXNldChlZGlkLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKGVkaWQtPnJl
c2VydmVkKSk7DQo+PiArDQo+PiArCWlmIChlZGlkLT5ibG9ja3MgPT0gMCkgew0KPj4gKwkJZWRp
ZC0+YmxvY2tzID0gRURJRF9OVU1fQkxPQ0tTX01BWDsNCj4+ICsJCXJldHVybiAwOw0KPj4gKwl9
DQo+PiArDQo+PiArCWlmIChlZGlkLT5zdGFydF9ibG9jayA+PSBFRElEX05VTV9CTE9DS1NfTUFY
KSB7DQo+PiArCQllZGlkLT5ibG9ja3MgPSAwOw0KPj4gKwkJcmV0dXJuIDA7DQo+PiArCX0NCj4+
ICsNCj4+ICsJaWYgKGVkaWQtPmJsb2NrcyA+IEVESURfTlVNX0JMT0NLU19NQVggLSBlZGlkLT5z
dGFydF9ibG9jaykNCj4+ICsJCWVkaWQtPmJsb2NrcyA9IEVESURfTlVNX0JMT0NLU19NQVggLSBl
ZGlkLT5zdGFydF9ibG9jazsNCj4+ICsNCj4+ICsJZXJyID0gaXQ2NjI1X3JlYWRfZWRpZChpdDY2
MjUsIGVkaWQtPmVkaWQsIGVkaWQtPnN0YXJ0X2Jsb2NrLA0KPj4gKwkJCSAgICAgICBlZGlkLT5i
bG9ja3MpOw0KPg0KPlRoaXMgYWx3YXlzIHJlYWRzIDQgRURJRCBibG9ja3MsIGV2ZW4gaWYgdGhl
IEVESUQgaGFzIGZld2VyIGJsb2Nrcy4NCj4NCj5Zb3Ugc2hvdWxkIGRldGVybWluZSB0aGUgYWN0
dWFsIG51bWJlciBvZiBibG9ja3MuIEVhc2llc3QgaXMganVzdCB0bw0KPnN0b3JlIHRoYXQgd2hl
biBzX2VkaWQgaXMgY2FsbGVkIHNvIHlvdSBrbm93IGhvdyBtYW55IGJsb2NrcyB0aGUgRURJRA0K
Pmhhcy4NCj4NCg0Kd2lsbCB1cGRhdGUgb24gbmV4dCB2ZXJzaW9uDQoNCj4+ICsNCj4+ICsJcmV0
dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2
NjI1X3NfZWRpZChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLA0KPj4gKwkJCSBzdHJ1Y3QgdjRsMl9z
dWJkZXZfZWRpZCAqZWRpZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHNk
X3RvXzY2MjUoc2QpOw0KPj4gKwlpbnQgZXJyID0gMDsNCj4+ICsJdTE2IHBhOw0KPj4gKwlpbnQg
cGFfZXJyOw0KPj4gKw0KPj4gKwlpZiAoZWRpZC0+cGFkICE9IDApIHsNCj4+ICsJCXY0bDJfZXJy
KHNkLCAiaW52YWxpZCBwYWQgJWQiLCBlZGlkLT5wYWQpOw0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7
DQo+PiArCX0NCj4+ICsNCj4+ICsJbWVtc2V0KGVkaWQtPnJlc2VydmVkLCAwLCBzaXplb2YoZWRp
ZC0+cmVzZXJ2ZWQpKTsNCj4+ICsNCj4+ICsJaWYgKGVkaWQtPnN0YXJ0X2Jsb2NrICE9IDApIHsN
Cj4+ICsJCXY0bDJfZXJyKHNkLCAic3RhcnRfYmxvY2sgbXVzdCBiZSAwIGZvciBzZXQgZWRpZCIp
Ow0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKGVkaWQtPmJs
b2NrcyA+IEVESURfTlVNX0JMT0NLU19NQVgpIHsNCj4+ICsJCXY0bDJfZXJyKHNkLCAidG9vIG1h
bnkgZWRpZCBibG9ja3M6ICVkIiwgZWRpZC0+YmxvY2tzKTsNCj4+ICsJCWVkaWQtPmJsb2NrcyA9
IEVESURfTlVNX0JMT0NLU19NQVg7DQo+PiArCQlyZXR1cm4gLUUyQklHOw0KPj4gKwl9DQo+PiAr
DQo+PiArCWl0NjYyNV9kaXNhYmxlX2hwZChpdDY2MjUpOw0KPj4gKw0KPj4gKwlpZiAoZWRpZC0+
YmxvY2tzID09IDApIHsNCj4+ICsJCWNlY19waHlzX2FkZHJfaW52YWxpZGF0ZShpdDY2MjUtPmNl
Y19hZGFwKTsNCj4+ICsJCXJldHVybiAwOw0KPj4gKwl9DQo+PiArDQo+PiArCWVyciA9IGl0NjYy
NV93cml0ZV9lZGlkKGl0NjYyNSwgZWRpZC0+ZWRpZCwNCj4+ICsJCQkJZWRpZC0+c3RhcnRfYmxv
Y2ssIGVkaWQtPmJsb2Nrcyk7DQo+PiArCWlmIChlcnIgPCAwKSB7DQo+PiArCQl2NGwyX2Vycihz
ZCwgIndyaXRlIGVkaWQgZmFpbGVkIik7DQo+PiArCX0gZWxzZSB7DQo+PiArCQlwYSA9IGNlY19n
ZXRfZWRpZF9waHlzX2FkZHIoZWRpZC0+ZWRpZCwgZWRpZC0+YmxvY2tzICogMTI4LCBOVUxMKTsN
Cj4NCj5UaGlzIGNvZGUgaXMgd3JvbmcuIFVzZSB0aGlzOg0KPg0KPiAgICAgICAgcGEgPSB2NGwy
X2dldF9lZGlkX3BoeXNfYWRkcihlZGlkLT5lZGlkLCBlZGlkLT5ibG9ja3MgKiAxMjgsIE5VTEwp
Ow0KPiAgICAgICAgZXJyID0gdjRsMl9waHlzX2FkZHJfdmFsaWRhdGUocGEsICZwYXJlbnRfcGEs
IE5VTEwpOw0KPiAgICAgICAgaWYgKGVycikNCj4gICAgICAgICAgICAgICAgcmV0dXJuIGVycjsN
Cj4NCj5UaGlzIHZhbGlkYXRlIGNoZWNrIG11c3QgYmUgZG9uZSBiZWZvcmUgeW91IHdyaXRlIHRo
ZSBuZXcgRURJRC4NCj4NCj4JY2VjX3NfcGh5c19hZGRyKGl0NjYyNS0+Y2VjX2FkYXAsIHBhcmVu
dF9wYSwgZmFsc2UpOw0KPg0KPkFuZCB0aGlzIGNlY19zX3BoeXNfYWRkciBjYWxsIHNob3VsZCBi
ZSBkb25lIGFmdGVyIHRoZSBFRElEIHdhcyB3cml0dGVuLg0KPg0KDQp0aGFua3MgZm9yIHlvdXIg
YWR2aWNlLCBJIHdpbGwgcGF0Y2ggdGhpcyBvbiBuZXh0IHdlZWsuDQoNCg0KPj4gKwkJcGFfZXJy
ID0gcGEgPT0gQ0VDX1BIWVNfQUREUl9JTlZBTElEID8gLUVJTlZBTCA6DQo+PiArCQkJIHY0bDJf
cGh5c19hZGRyX3ZhbGlkYXRlKHBhLCBOVUxMLCBOVUxMKTsNCj4+ICsJCWlmIChwYV9lcnIpIHsN
Cj4+ICsJCQl2NGwyX3dhcm4oc2QsICJpbnZhbGlkIENFQyBwaHlzaWNhbCBhZGRyZXNzIGluIEVE
SUQiKTsNCj4+ICsJCQljZWNfcGh5c19hZGRyX2ludmFsaWRhdGUoaXQ2NjI1LT5jZWNfYWRhcCk7
DQo+PiArCQl9IGVsc2Ugew0KPj4gKwkJCWNlY19zX3BoeXNfYWRkcihpdDY2MjUtPmNlY19hZGFw
LCBwYSwgZmFsc2UpOw0KPj4gKwkJfQ0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChoZG1pXzV2X3Bv
d2VyX3ByZXNlbnQoaXQ2NjI1KSkgew0KPj4gKwkJaXQ2NjI1X2VuYWJsZV9ocGQoaXQ2NjI1KTsN
Cj4+ICsJCWl0NjYyNV9zX2N0cmxfZGV0ZWN0X2hkbWlfNXYoc2QpOw0KPj4gKwl9IGVsc2Ugew0K
Pj4gKwkJaXQ2NjI1X2VuYWJsZV9hdXRvX2hwZChpdDY2MjUpOw0KPj4gKwl9DQo+PiArDQo+PiAr
CXJldHVybiBlcnIgPCAwID8gZXJyIDogMDsNCj4+ICt9DQo+PiArDQo+PiArI2RlZmluZSBWNEwy
X0NJRF9VU0VSX0lUNjYyNV9CQVNFCShWNEwyX0NJRF9VU0VSX0JBU0UgKyAweDExYjApDQo+DQo+
Q3VzdG9tIGRyaXZlciBjb250cm9scyBtdXN0IGJlIHJlc2VydmVkIGluIGluY2x1ZGUvdWFwaS9s
aW51eC92NGwyLWNvbnRyb2xzLmguDQo+DQoNCkkgdGhpbmsgYWxsIHRoZXNlIEN1c3RvbSBkcml2
ZXIgY29udHJvbHMgY2FuIHJlbW92ZSBvciBtb3ZlIHRvIHByb3BlciBwbGFjZS4NCg0KDQo+PiAr
I2RlZmluZSBJVDY2MjVfQ0lEX0FVRElPX1NBTVBMSU5HX1JBVEUgIChWNEwyX0NJRF9VU0VSX0lU
NjYyNV9CQVNFICsgMCkNCj4+ICsjZGVmaW5lIElUNjYyNV9DSURfQVVESU9fUFJFU0VOVCAgICAg
ICAgKFY0TDJfQ0lEX1VTRVJfSVQ2NjI1X0JBU0UgKyAxKQ0KPj4gKyNkZWZpbmUgSVQ2NjI1X0NJ
RF9IRE1JX0lORk8gICAgICAgICAgICAoVjRMMl9DSURfVVNFUl9JVDY2MjVfQkFTRSArIDIpDQo+
PiArI2RlZmluZSBJVDY2MjVfQ0lEX01JUElfQ09ORklHICAgICAgICAgIChWNEwyX0NJRF9VU0VS
X0lUNjYyNV9CQVNFICsgMykNCj4NCj5UeXBpY2FsbHkgYSBuZXcgcHVibGljIGhlYWRlciBpcyBj
cmVhdGVkIGZvciB0aGUgZHJpdmVyIGNvbnRyb2xzLiBTZWUgZS5nLg0KPmluY2x1ZGUvdWFwaS9s
aW51eC9ucGNtLXZpZGVvLmguIFRoZXNlIGNvbnRyb2xzIHNob3VsZCBiZSBkb2N1bWVudGVkIGlu
DQo+dGhhdCBoZWFkZXIuDQo+DQo+PiArc3RhdGljIGludCBpdDY2MjVfZ192b2xhdGlsZV9jdHJs
KHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2
MjUgPSBoZGxfdG9fNjYyNShjdHJsLT5oYW5kbGVyKTsNCj4+ICsJc3RydWN0IHY0bDJfc3ViZGV2
ICpzZCA9ICZpdDY2MjUtPnNkOw0KPj4gKw0KPj4gKwl2NGwyX2RiZygxLCBkZWJ1Zywgc2QsICIl
cywgaWQ9MHgleCwgdmFsPSVkIiwNCj4+ICsJCSBfX2Z1bmNfXywgY3RybC0+aWQsIGN0cmwtPnZh
bCk7DQo+PiArDQo+PiArCXN3aXRjaCAoY3RybC0+aWQpIHsNCj4+ICsJY2FzZSBJVDY2MjVfQ0lE
X0hETUlfSU5GTzoNCj4+ICsJCXNjb3BlZF9ndWFyZChtdXRleCwgJml0NjYyNS0+aXQ2NjI1X2xv
Y2spIHsNCj4+ICsJCQlzbnByaW50ZihjdHJsLT5wX25ldy5wX2NoYXIsIGN0cmwtPm1heGltdW0s
ICIlcyBAICV1SHoiLA0KPj4gKwkJCQkgaXQ2NjI1X2NzaV9mb3JtYXRfbmFtZShpdDY2MjUtPmNz
aV9mb3JtYXQpLA0KPj4gKwkJCQkgZnBzX2Zyb21fYnRfdGltaW5ncygmaXQ2NjI1LT50aW1pbmdz
LmJ0KSk7DQo+DQo+VGhpcyBpc24ndCBhIHZvbGF0aWxlIGNvbnRyb2w6IGluc3RlYWQsIHdoZW4g
Y3NpX2Zvcm1hdCBvciB0aW1pbmdzLmJ0IGNoYW5nZSwNCj5qdXN0IHVwZGF0ZSB0aGlzIGNvbnRy
b2wgd2l0aCB0aGUgbmV3IHZhbHVlLg0KPg0KPkJ1dCBJIHRoaW5rIHRoaXMgY29udHJvbCBzaG91
bGQgYmUgZHJvcHBlZCBhcyBkb24ndCBzZWUgYW55IHZhbHVlIGluIGl0Lg0KPg0KPklmIHlvdSBs
aWtlLCB5b3UgY2FuIHJlcG9ydCB0aGlzIGluIGl0NjYyNV9sb2dfc3RhdHVzLCB0aGF0J3MgYSBt
b3JlIGFwcHJvcHJpYXRlDQo+cGxhY2UuDQo+DQo+PiArCQl9DQo+PiArCQlicmVhazsNCj4+ICsJ
Y2FzZSBJVDY2MjVfQ0lEX01JUElfQ09ORklHOg0KPj4gKwkJY3RybC0+dmFsID0gaXQ2NjI1X3Jl
YWRfYnl0ZShpdDY2MjUsIFJFR19NSVBJX0RBVEFfVFlQRSk7DQo+DQo+SSB3b25kZXIgYWJvdXQg
dGhpcyBjb250cm9sIGFzIHdlbGw6IHZvbGF0aWxlIGNvbnRyb2xzIGFyZSBtZWFudCBmb3IgY29u
dHJvbHMgd2hlcmUNCj50aGUgdmFsdWUgaGFzIHRvIGJlIHJlYWQgZnJvbSB0aGUgaGFyZHdhcmUg
YW5kIHRoYXQgdmFsdWUgY2FuIGNoYW5nZSBhdCBhbnkgbW9tZW50Lg0KPg0KPkEgdHlwaWNhbCBl
eGFtcGxlIGlzIGlmIEFVVE9HQUlOIGlzIGVuYWJsZWQsIGFuZCB5b3UgcmVhZCB0aGUgY3VycmVu
dCBHQUlOIHZhbHVlIGZyb20NCj50aGUgaGFyZHdhcmUuDQo+DQo+VGhlIE1JUElfREFUQV9UWVBF
IGlzLCBJIHRoaW5rLCBjb250cm9sbGVkIGJ5IHRoZSBkcml2ZXIgYW5kIGRvZXMgbm90IHJhbmRv
bWx5IGNoYW5nZS4NCj4NCj4+ICsJCWJyZWFrOw0KPj4gKwlkZWZhdWx0Og0KPj4gKwkJYnJlYWs7
DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp
bnQgaXQ2NjI1X3NfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQ0KPj4gK3sNCj4+ICsJc3Ry
dWN0IGl0NjYyNSAqaXQ2NjI1ID0gaGRsX3RvXzY2MjUoY3RybC0+aGFuZGxlcik7DQo+PiArCXN0
cnVjdCB2NGwyX3N1YmRldiAqc2QgPSAmaXQ2NjI1LT5zZDsNCj4+ICsNCj4+ICsJdjRsMl9kYmco
MSwgZGVidWcsIHNkLCAiJXMsIGlkPTB4JXgsIHZhbD0lZCIsDQo+PiArCQkgX19mdW5jX18sIGN0
cmwtPmlkLCBjdHJsLT52YWwpOw0KPj4gKw0KPj4gKwlzd2l0Y2ggKGN0cmwtPmlkKSB7DQo+PiAr
CWNhc2UgSVQ2NjI1X0NJRF9NSVBJX0NPTkZJRzoNCj4+ICsJCWl0NjYyNV9zZXRfbWlwaV9jb25m
aWcoaXQ2NjI1LCBjdHJsLT52YWwpOw0KPg0KPldoeSBpcyB0aGlzIHNldHRhYmxlPyBJc24ndCB0
aGlzIGRlcml2ZWQgZnJvbSB0aGUgbWJ1c19jb2RlPyBUaGlzIGRvZXNuJ3QNCj5sb29rIHJpZ2h0
Lg0KPg0KPj4gKwkJYnJlYWs7DQo+PiArCWRlZmF1bHQ6DQo+PiArCQlyZXR1cm4gLUVJTlZBTDsN
Cj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNv
bnN0IHN0cnVjdCB2NGwyX3N1YmRldl9jb3JlX29wcyBpdDY2MjVfY29yZV9vcHMgPSB7DQo+PiAr
CS5sb2dfc3RhdHVzID0gaXQ2NjI1X2xvZ19zdGF0dXMsDQo+PiArCS5pbnRlcnJ1cHRfc2Vydmlj
ZV9yb3V0aW5lID0gaXQ2NjI1X2lzciwNCj4+ICsJLnN1YnNjcmliZV9ldmVudCA9IGl0NjYyNV9z
dWJzY3JpYmVfZXZlbnQsDQo+PiArCS51bnN1YnNjcmliZV9ldmVudCA9IHY0bDJfZXZlbnRfc3Vi
ZGV2X3Vuc3Vic2NyaWJlLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2
NGwyX3N1YmRldl92aWRlb19vcHMgaXQ2NjI1X3ZpZGVvX29wcyA9IHsNCj4+ICsJLmdfaW5wdXRf
c3RhdHVzID0gaXQ2NjI1X2dfaW5wdXRfc3RhdHVzLA0KPj4gKwkuc19zdHJlYW0gPSBpdDY2MjVf
c19zdHJlYW0sDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3Vi
ZGV2X3BhZF9vcHMgaXQ2NjI1X3BhZF9vcHMgPSB7DQo+PiArCS5lbnVtX21idXNfY29kZSA9IGl0
NjYyNV9lbnVtX21idXNfY29kZSwNCj4+ICsJLnNldF9mbXQgPSBpdDY2MjVfc2V0X2ZtdCwNCj4+
ICsJLmdldF9mbXQgPSBpdDY2MjVfZ2V0X2ZtdCwNCj4+ICsJLmdldF9lZGlkID0gaXQ2NjI1X2df
ZWRpZCwNCj4+ICsJLnNldF9lZGlkID0gaXQ2NjI1X3NfZWRpZCwNCj4+ICsJLmVudW1fZHZfdGlt
aW5ncyA9IGl0NjYyNV9lbnVtX2R2X3RpbWluZ3MsDQo+PiArCS5kdl90aW1pbmdzX2NhcCA9IGl0
NjYyNV9kdl90aW1pbmdzX2NhcCwNCj4+ICsJLmdldF9tYnVzX2NvbmZpZyA9IGl0NjYyNV9nZXRf
bWJ1c19jb25maWcsDQo+PiArCS5zX2R2X3RpbWluZ3MgPSBpdDY2MjVfcGFkX3NfZHZfdGltaW5n
cywNCj4+ICsJLmdfZHZfdGltaW5ncyA9IGl0NjYyNV9wYWRfZ19kdl90aW1pbmdzLA0KPj4gKwku
cXVlcnlfZHZfdGltaW5ncyA9IGl0NjYyNV9wYWRfcXVlcnlfZHZfdGltaW5ncywNCj4+ICt9Ow0K
Pj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfb3BzIGl0NjYyNV9vcHMg
PSB7DQo+PiArCS5jb3JlID0gJml0NjYyNV9jb3JlX29wcywNCj4+ICsJLnZpZGVvID0gJml0NjYy
NV92aWRlb19vcHMsDQo+PiArCS5wYWQgPSAmaXQ2NjI1X3BhZF9vcHMsDQo+PiArfTsNCj4+ICsN
Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgaXQ2NjI1X2N0cmxfb3BzID0g
ew0KPj4gKwkuZ192b2xhdGlsZV9jdHJsID0gaXQ2NjI1X2dfdm9sYXRpbGVfY3RybCwNCj4+ICsJ
LnNfY3RybCA9IGl0NjYyNV9zX2N0cmwsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qg
c3RydWN0IHY0bDJfY3RybF9jb25maWcgaXQ2NjI1X2N0cmxfYXVkaW9fc2FtcGxpbmdfcmF0ZSA9
IHsNCj4+ICsJLmlkID0gSVQ2NjI1X0NJRF9BVURJT19TQU1QTElOR19SQVRFLA0KPj4gKwkubmFt
ZSA9ICJBdWRpbyBzYW1wbGluZyByYXRlIiwNCj4NCj4iQXVkaW8gU2FtcGxpbmcgUmF0ZSINCj4N
Cj4+ICsJLnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSLA0KPj4gKwkubWluID0gMCwNCj4+
ICsJLm1heCA9IDc2ODAwMCwNCj4+ICsJLnN0ZXAgPSAxLA0KPj4gKwkuZGVmID0gMCwNCj4+ICsJ
LmZsYWdzID0gVjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZLA0KPj4gK307DQo+PiArDQo+PiArc3Rh
dGljIGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfY29uZmlnIGl0NjYyNV9jdHJsX2F1ZGlvX3ByZXNl
bnQgPSB7DQo+PiArCS5pZCA9IElUNjYyNV9DSURfQVVESU9fUFJFU0VOVCwNCj4+ICsJLm5hbWUg
PSAiQXVkaW8gcHJlc2VudCIsDQo+DQo+IkF1ZGlvIFByZXNlbnQiDQo+DQo+QnV0IHJhdGhlciB0
aGFuIG1ha2luZyB0aGVzZSB0d28gYXVkaW8gY29udHJvbHMgc3BlY2lmaWMgZm9yIHRoaXMgZHJp
dmVyLCB0aGV5IHNob3VsZA0KPmJlIG1hZGUgc3RhbmRhcmQgY29udHJvbHMuIFRoZSB0YzM1ODc0
My5jIGRyaXZlciBoYXMgdGhlIHNhbWUgY29udHJvbHMuIEFuZCB0aGV5IGFyZQ0KPnR5cGljYWwg
Zm9yIEhETUkgZHJpdmVycy4NCj4NCj5UaGV5IGNhbiBiZSBwYXJ0IG9mIHRoZSBEaWdpdGFsIFZp
ZGVvIENvbnRyb2xzLg0KPg0KPj4gKwkudHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0JPT0xFQU4sDQo+
PiArCS5taW4gPSAwLA0KPj4gKwkubWF4ID0gMSwNCj4+ICsJLnN0ZXAgPSAxLA0KPj4gKwkuZGVm
ID0gMCwNCj4+ICsJLmZsYWdzID0gVjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZLA0KPj4gK307DQo+
PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfY29uZmlnIGl0NjYyNV9jdHJs
X2dldF9oZG1pX2luZm8gPSB7DQo+PiArCS5vcHMgPSAmaXQ2NjI1X2N0cmxfb3BzLA0KPj4gKwku
aWQgPSBJVDY2MjVfQ0lEX0hETUlfSU5GTywNCj4+ICsJLm5hbWUgPSAiSERNSSBJbmZvIiwNCj4+
ICsJLnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9TVFJJTkcsDQo+PiArCS5tYXggPSAxMjgsDQo+PiAr
CS5zdGVwID0gMSwNCj4+ICsJLmZsYWdzID0gVjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZIHwgVjRM
Ml9DVFJMX0ZMQUdfVk9MQVRJTEUsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3Ry
dWN0IHY0bDJfY3RybF9jb25maWcgaXQ2NjI1X2N0cmxfbWlwaV9jb25maWcgPSB7DQo+PiArCS5v
cHMgPSAmaXQ2NjI1X2N0cmxfb3BzLA0KPj4gKwkuaWQgPSBJVDY2MjVfQ0lEX01JUElfQ09ORklH
LA0KPj4gKwkubmFtZSA9ICJNSVBJIGNvbmZpZyIsDQo+DQo+Ik1JUEkgQ29uZmlnIg0KPg0KPj4g
KwkudHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0lOVEVHRVIsDQo+PiArCS5taW4gPSAwLA0KPj4gKwku
bWF4ID0gMHg3RkZGRkZGRiwNCj4+ICsJLnN0ZXAgPSAxLA0KPj4gKwkuZGVmID0gMHgzRSwNCj4+
ICsJLmZsYWdzID0gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUsDQo+PiArfTsNCj4+ICsNCj4+ICtz
dGF0aWMgaW50IGl0NjYyNV92NGwyX2luaXRfY29udHJvbHMoc3RydWN0IHY0bDJfc3ViZGV2ICpz
ZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0K
Pj4gKwlzdHJ1Y3QgdjRsMl9jdHJsX2hhbmRsZXIgKmhkbCA9ICZpdDY2MjUtPmhkbDsNCj4+ICsN
Cj4+ICsJdjRsMl9jdHJsX2hhbmRsZXJfaW5pdChoZGwsIDQpOw0KPj4gKwlpdDY2MjUtPmN0cmxf
NXZfZGV0ZWN0ID0NCj4+ICsJCXY0bDJfY3RybF9uZXdfc3RkKGhkbCwgTlVMTCwgVjRMMl9DSURf
RFZfUlhfUE9XRVJfUFJFU0VOVCwNCj4+ICsJCQkJICAwLCAxLCAwLCAwKTsNCj4+ICsNCj4+ICsJ
aXQ2NjI1LT5jdHJsX2F1ZGlvX3NhbXBsaW5nX3JhdGUgPQ0KPj4gKwkJdjRsMl9jdHJsX25ld19j
dXN0b20oaGRsLA0KPj4gKwkJCQkgICAgICZpdDY2MjVfY3RybF9hdWRpb19zYW1wbGluZ19yYXRl
LA0KPj4gKwkJCQkgICAgIE5VTEwpOw0KPj4gKwlpdDY2MjUtPmN0cmxfYXVkaW9fcHJlc2VudCA9
DQo+PiArCQl2NGwyX2N0cmxfbmV3X2N1c3RvbShoZGwsICZpdDY2MjVfY3RybF9hdWRpb19wcmVz
ZW50LCBOVUxMKTsNCj4+ICsJaXQ2NjI1LT5jdHJsX2xpbmtfZnJlcSA9DQo+PiArCQl2NGwyX2N0
cmxfbmV3X2ludF9tZW51KGhkbCwgTlVMTCwgVjRMMl9DSURfTElOS19GUkVRLA0KPj4gKwkJCQkg
ICAgICAgQVJSQVlfU0laRShpdDY2MjVfbGlua19mcmVxKSAtIDEsDQo+PiArCQkJCSAgICAgICAw
LCBpdDY2MjVfbGlua19mcmVxKTsNCj4+ICsJaXQ2NjI1LT5jdHJsX2dldF9oZG1pX2luZm8gPQ0K
Pj4gKwkJdjRsMl9jdHJsX25ld19jdXN0b20oaGRsLCAmaXQ2NjI1X2N0cmxfZ2V0X2hkbWlfaW5m
bywgTlVMTCk7DQo+PiArCWl0NjYyNS0+Y3RybF9taXBpX2NvbmZpZyA9DQo+PiArCQl2NGwyX2N0
cmxfbmV3X2N1c3RvbShoZGwsICZpdDY2MjVfY3RybF9taXBpX2NvbmZpZywgTlVMTCk7DQo+PiAr
CWlmIChoZGwtPmVycm9yKSB7DQo+PiArCQl2NGwyX2VycihzZCwgIkZhaWxlZCB0byBpbml0aWFs
aXplIGNvbnRyb2xzIik7DQo+PiArCQl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKGhkbCk7DQo+PiAr
CQlyZXR1cm4gaGRsLT5lcnJvcjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlzZC0+Y3RybF9oYW5kbGVy
ID0gaGRsOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZv
aWQgaXQ2NjI1X3JlZ2R1bXBfcHJpbnQoc3RydWN0IHNlcV9maWxlICpzLCBjb25zdCB1OCAqcmVn
X2J1ZikNCj4+ICt7DQo+PiArCWludCBpOw0KPj4gKw0KPj4gKwlzZXFfcHV0cyhzLCAiICAgICAw
eDAwIDB4MDEgMHgwMiAweDAzIDB4MDQgMHgwNSAweDA2IDB4MDcgMHgwOCAweDA5IDB4MEEgMHgw
QiAweDBDIDB4MEQgMHgwRSAweDBGXG4iKTsNCj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IDI1
NjsgaSsrKSB7DQo+PiArCQlpZiAoaSAlIDE2ID09IDApDQo+PiArCQkJc2VxX3ByaW50ZihzLCAi
WyUwMlhdICIsIGkgJiAweEYwKTsNCj4+ICsJCXNlcV9wcmludGYocywgIjB4JTAyWCAiLCByZWdf
YnVmW2ldKTsNCj4+ICsJCWlmIChpICUgMTYgPT0gMTUpDQo+PiArCQkJc2VxX3B1dGMocywgJ1xu
Jyk7DQo+PiArCX0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfZWRpZF9yYW1f
c2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpDQo+PiArew0KPj4gKwlzdHJ1Y3Qg
aXQ2NjI1ICppdDY2MjUgPSBzLT5wcml2YXRlOw0KPj4gKwl1OCByZWdfYnVmWzI1Nl07DQo+PiAr
CWludCByZXQ7DQo+PiArDQo+PiArCXJldCA9IGl0NjYyNV9yZWFkX2VkaWQoaXQ2NjI1LCByZWdf
YnVmLCAwLCAyKTsNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwlp
dDY2MjVfcmVnZHVtcF9wcmludChzLCByZWdfYnVmKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+
PiArfQ0KPj4gK0RFRklORV9TSE9XX0FUVFJJQlVURShpdDY2MjVfZWRpZF9yYW0pOw0KPj4gKw0K
Pj4gK3N0YXRpYyBpbnQgaXQ2NjI1X21pcGlfcmVnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2
b2lkICpkYXRhKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1ID0gcy0+cHJpdmF0
ZTsNCj4+ICsJdTggcmVnX2J1ZlsyNTZdOw0KPj4gKwlpbnQgcmV0Ow0KPj4gKw0KPj4gKwlzY29w
ZWRfZ3VhcmQobXV0ZXgsICZpdDY2MjUtPml0NjYyNV9sb2NrKQ0KPj4gKwkJcmV0ID0gaXQ2NjI1
X3JlYWRfYnl0ZXMoaXQ2NjI1LCAweDAwLCByZWdfYnVmLCBzaXplb2YocmVnX2J1ZikpOw0KPj4g
KwlpZiAocmV0IDwgMCkNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArCWl0NjYyNV9yZWdkdW1wX3By
aW50KHMsIHJlZ19idWYpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiAr
c3RhdGljIGludCBpdDY2MjVfbWlwaV9yZWdfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1
Y3QgZmlsZSAqZmlsZSkNCj4+ICt7DQo+PiArCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBpdDY2
MjVfbWlwaV9yZWdfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0
YXRpYyBzc2l6ZV90IGl0NjYyNV9taXBpX3JlZ193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwNCj4+
ICsJCQkJICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsDQo+PiArCQkJCSAgICAgc2l6
ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2
MjUgPSBmaWxlX2lub2RlKGZpbGUpLT5pX3ByaXZhdGU7DQo+PiArCWNoYXIgYnVmWzMyXSA9IHt9
Ow0KPj4gKwl1bnNpZ25lZCBpbnQgYWRkciwgdmFsOw0KPj4gKwlzc2l6ZV90IGxlbjsNCj4+ICsJ
bG9mZl90IHBvcyA9IDA7DQo+PiArDQo+PiArCWxlbiA9IHNpbXBsZV93cml0ZV90b19idWZmZXIo
YnVmLCBzaXplb2YoYnVmKSAtIDEsICZwb3MsIHVzZXJfYnVmLCBjb3VudCk7DQo+PiArCWlmIChs
ZW4gPCAwKQ0KPj4gKwkJcmV0dXJuIGxlbjsNCj4+ICsJYnVmW2xlbl0gPSAnXDAnOw0KPj4gKw0K
Pj4gKwlpZiAoc3NjYW5mKGJ1ZiwgIiVYICVYIiwgJmFkZHIsICZ2YWwpICE9IDIpDQo+PiArCQly
ZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJc2NvcGVkX2d1YXJkKG11dGV4LCAmaXQ2NjI1LT5p
dDY2MjVfbG9jaykNCj4+ICsJCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgYWRkciwgdmFsKTsN
Cj4+ICsNCj4+ICsJcmV0dXJuIGNvdW50Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qg
c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpdDY2MjVfbWlwaV9yZWdfZm9wcyA9IHsNCj4+ICsJLm93
bmVyID0gVEhJU19NT0RVTEUsDQo+PiArCS5vcGVuID0gaXQ2NjI1X21pcGlfcmVnX29wZW4sDQo+
PiArCS5yZWFkID0gc2VxX3JlYWQsDQo+PiArCS53cml0ZSA9IGl0NjYyNV9taXBpX3JlZ193cml0
ZSwNCj4+ICsJLmxsc2VlayA9IHNlcV9sc2VlaywNCj4+ICsJLnJlbGVhc2UgPSBzaW5nbGVfcmVs
ZWFzZSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9kZWJ1Z2ZzX2luaXQo
c3RydWN0IGl0NjYyNSAqaXQ2NjI1LCBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPj4gK3sN
Cj4+ICsJaXQ2NjI1LT5kZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZSgm
Y2xpZW50LT5kZXYpLCBOVUxMKTsNCj4+ICsNCj4+ICsJZGVidWdmc19jcmVhdGVfZmlsZSgibWlw
aV9yZWciLCAwNjAwLCBpdDY2MjUtPmRlYnVnZnNfZGlyLCBpdDY2MjUsDQo+PiArCQkJICAgICZp
dDY2MjVfbWlwaV9yZWdfZm9wcyk7DQo+PiArCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImVkaWRfcmFt
IiwgMDQwMCwgaXQ2NjI1LT5kZWJ1Z2ZzX2RpciwgaXQ2NjI1LA0KPj4gKwkJCSAgICAmaXQ2NjI1
X2VkaWRfcmFtX2ZvcHMpOw0KPg0KPkR1bXBpbmcgdGhlIEVESUQgUkFNIHNlZW1zIHBvaW50bGVz
cyB0byBtZSwgZ2l2ZW4gdGhhdCB5b3UgY2FuIGdldCB0aGUgRURJRCBkYXRhDQo+d2l0aCBhbiBp
b2N0bCBjYWxsIGF0IGFueSB0aW1lLiBJcyB0aGVyZSBhIHBhcnRpY3VsYXIgcmVhc29uIGZvciBh
ZGRpbmcgdGhpcz8NCj4NCg0KVGhpcyBpcyBqdWVzdCBmb3IgaW50ZXJuYWwgRURJRCByYW0gZGVi
dWcsIGR1bXAgRURJRCBmb3IgY2hlY2tpbmcgY3VycmVudCBFRElEIGRhdGEgaW4gcmFtLg0KDQoN
Cj5XaGF0IHNob3VsZCBiZSBhZGRlZCBoZXJlIGlzIGNvZGUgdG8gZXhwb3J0IEluZm9GcmFtZXMg
dG8gZGVidWdmcy4gU2VhcmNoIGZvcg0KPnY0bDJfZGVidWdmc19pZl9hbGxvYyBpbiBkcml2ZXJz
L21lZGlhLg0KPg0KPkFsbCBuZXcgSERNSSByZWNlaXZlcnMgbXVzdCBzdXBwb3J0IHRoYXQuDQo+
DQoNCkkgd2lsbCBjaGVjayB0aGlzLiB0aGFua3MuDQoNCg0KPj4gK30NCj4+ICsNCj4+ICtzdGF0
aWMgdm9pZCBpdDY2MjVfaW5pdF9kYXRhKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+
PiArCXN0YXRpYyBzdHJ1Y3QgdjRsMl9kdl90aW1pbmdzIGRlZmF1bHRfdGltaW5nID0NCj4+ICsJ
CQlWNEwyX0RWX0JUX0NFQV8xOTIwWDEwODBQNjA7DQo+PiArDQo+PiArCWl0NjYyNS0+Y3NpX2xh
bmVzID0gNDsNCj4+ICsJaXQ2NjI1LT5wb3J0X251bSA9IDE7DQo+PiArCWl0NjYyNS0+YnVzX3R5
cGUgPSBWNEwyX01CVVNfQ1NJMl9EUEhZOw0KPj4gKwlpdDY2MjUtPmNzaV9mb3JtYXQgPSBpdDY2
MjVfZm9ybWF0c1swXS5jc2lfZm9ybWF0Ow0KPj4gKwlpdDY2MjUtPm1idXNfZm10X2NvZGUgPSBp
dDY2MjVfZm9ybWF0c1swXS5tYnVzX2ZtdF9jb2RlOw0KPj4gKwlpdDY2MjUtPnRpbWluZ3MgPSBk
ZWZhdWx0X3RpbWluZzsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfcGFyc2Vf
ZW5kcG9pbnQoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJc3RydWN0IGRldmlj
ZSAqZGV2ID0gaXQ2NjI1LT5kZXY7DQo+PiArCS8qDQo+PiArCSAqIFByZS1zZXR0aW5nIGJ1c190
eXBlIGhlcmUgbWFrZXMgdjRsMl9md25vZGVfZW5kcG9pbnRfYWxsb2NfcGFyc2UoKQ0KPj4gKwkg
KiB0cmVhdCBpdCBhcyBhIGhhcmQgcmVxdWlyZW1lbnQgYW5kIHJlamVjdCBhbnkgZW5kcG9pbnQg
d2hvc2UgRFQNCj4+ICsJICogYnVzLXR5cGUgZGlzYWdyZWVzLCBzbyB0aGlzIG11c3Qgc3RheSBW
NEwyX01CVVNfVU5LTk9XTiB0byBsZXQgaXQNCj4+ICsJICogYXV0b2RldGVjdCBDLVBIWSB2cyBE
LVBIWSBmcm9tIHRoZSBlbmRwb2ludCBpdHNlbGYuDQo+PiArCSAqLw0KPj4gKwlzdHJ1Y3QgdjRs
Ml9md25vZGVfZW5kcG9pbnQgZW5kcG9pbnQgPSB7IC5idXNfdHlwZSA9IFY0TDJfTUJVU19VTktO
T1dOIH07DQo+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZXAgPSBOVUxMOw0KPj4gKwl1bnNpZ25l
ZCBpbnQgbWF4X2xhbmVzOw0KPj4gKwl1bnNpZ25lZCBpbnQgcG9ydDsNCj4+ICsJaW50IHJldDsN
Cj4+ICsNCj4+ICsJLyoNCj4+ICsJICogcG9ydEAwIGFuZCBwb3J0QDEgYXJlIHRoZSB0d28gQ1NJ
LTIgb3V0cHV0IHBvcnRzIE1JUEkwL01JUEkxDQo+PiArCSAqIChwb3J0QDIgaXMgdGhlIEhETUkg
aW5wdXQpLiBUaGlzIGNoaXAgc2VyaWVzIGNhbiBkcml2ZSBib3RoDQo+PiArCSAqIHNpbXVsdGFu
ZW91c2x5IGluIHNwbGl0IG9yIG1pcnJvciBtb2RlLCBzbyBwb3J0X251bSBjb3VudHMgaG93DQo+
PiArCSAqIG1hbnkgb2YgTUlQSTAvTUlQSTEgaGF2ZSBhbiBlbmRwb2ludCB3aXJlZCB1cC4gVGhp
cyBkcml2ZXIgb25seQ0KPj4gKwkgKiB3aXJlcyB1cCBhIHNpbmdsZSBzb3VyY2UgcGFkLCBzbyBs
YW5lL2J1cy10eXBlIGNvbmZpZ3VyYXRpb24gaXMNCj4+ICsJICogcGFyc2VkIGZyb20gd2hpY2hl
dmVyIG9mIHRoZSB0d28gaXMgZm91bmQgZmlyc3QuDQo+PiArCSAqLw0KPj4gKwlpdDY2MjUtPnBv
cnRfbnVtID0gMDsNCj4+ICsJZm9yIChwb3J0ID0gMDsgcG9ydCA8IDI7IHBvcnQrKykgew0KPj4g
KwkJc3RydWN0IGRldmljZV9ub2RlICpwb3J0X2VwID0NCj4+ICsJCQlvZl9ncmFwaF9nZXRfZW5k
cG9pbnRfYnlfcmVncyhkZXYtPm9mX25vZGUsIHBvcnQsIC0xKTsNCj4+ICsNCj4+ICsJCWlmICgh
cG9ydF9lcCkNCj4+ICsJCQljb250aW51ZTsNCj4+ICsNCj4+ICsJCWl0NjYyNS0+cG9ydF9udW0r
KzsNCj4+ICsJCWlmICghZXApDQo+PiArCQkJZXAgPSBwb3J0X2VwOw0KPj4gKwkJZWxzZQ0KPj4g
KwkJCW9mX25vZGVfcHV0KHBvcnRfZXApOw0KPj4gKwl9DQo+PiArDQo+PiArCWlmICghZXApIHsN
Cj4+ICsJCWl0NjYyNS0+cG9ydF9udW0gPSAxOw0KPj4gKwkJZGV2X2RiZyhkZXYsICJubyBDU0kt
MiBlbmRwb2ludCBub2RlIGZvdW5kLCB1c2luZyBkZWZhdWx0ICV1IENTSSBsYW5lcyIsDQo+PiAr
CQkJaXQ2NjI1LT5jc2lfbGFuZXMpOw0KPj4gKwkJcmV0dXJuIDA7DQo+PiArCX0NCj4+ICsNCj4+
ICsJcmV0ID0gdjRsMl9md25vZGVfZW5kcG9pbnRfYWxsb2NfcGFyc2Uob2ZfZndub2RlX2hhbmRs
ZShlcCksICZlbmRwb2ludCk7DQo+PiArCW9mX25vZGVfcHV0KGVwKTsNCj4+ICsJaWYgKHJldCkg
ew0KPj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcGFyc2UgZW5kcG9pbnQ6ICVkIiwgcmV0
KTsNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKGVuZHBvaW50LmJ1
c190eXBlICE9IFY0TDJfTUJVU19DU0kyX0RQSFkgJiYNCj4+ICsJICAgIGVuZHBvaW50LmJ1c190
eXBlICE9IFY0TDJfTUJVU19DU0kyX0NQSFkpIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAidW5zdXBw
b3J0ZWQgYnVzIHR5cGUgJWQsIGV4cGVjdGVkIENTSS0yIEQtUEhZIG9yIEMtUEhZIiwNCj4+ICsJ
CQllbmRwb2ludC5idXNfdHlwZSk7DQo+PiArCQl2NGwyX2Z3bm9kZV9lbmRwb2ludF9mcmVlKCZl
bmRwb2ludCk7DQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAo
ZW5kcG9pbnQuYnVzX3R5cGUgPT0gVjRMMl9NQlVTX0NTSTJfQ1BIWSAmJg0KPj4gKwkgICAgaXQ2
NjI1LT5jaGlwX3R5cGUgIT0gSVQ2NjI2X0NISVApIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAiSVQ2
NjI1IGRvZXMgbm90IHN1cHBvcnQgQy1QSFksIG9ubHkgSVQ2NjI2IGRvZXMiKTsNCj4+ICsJCXY0
bDJfZndub2RlX2VuZHBvaW50X2ZyZWUoJmVuZHBvaW50KTsNCj4+ICsJCXJldHVybiAtRUlOVkFM
Ow0KPj4gKwl9DQo+PiArDQo+PiArCW1heF9sYW5lcyA9IChlbmRwb2ludC5idXNfdHlwZSA9PSBW
NEwyX01CVVNfQ1NJMl9DUEhZKSA/IDMgOiA0Ow0KPj4gKw0KPj4gKwlpZiAoZW5kcG9pbnQuYnVz
Lm1pcGlfY3NpMi5udW1fZGF0YV9sYW5lcyA9PSAwIHx8DQo+PiArCSAgICBlbmRwb2ludC5idXMu
bWlwaV9jc2kyLm51bV9kYXRhX2xhbmVzID4gbWF4X2xhbmVzKSB7DQo+PiArCQlkZXZfZXJyKGRl
diwNCj4+ICsJCQkiaW52YWxpZCBudW1iZXIgb2YgQ1NJIGRhdGEgbGFuZXM6ICV1IChtYXggJXUg
Zm9yIHRoaXMgYnVzIHR5cGUpIiwNCj4+ICsJCQllbmRwb2ludC5idXMubWlwaV9jc2kyLm51bV9k
YXRhX2xhbmVzLCBtYXhfbGFuZXMpOw0KPj4gKwkJdjRsMl9md25vZGVfZW5kcG9pbnRfZnJlZSgm
ZW5kcG9pbnQpOw0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiArCX0NCj4+ICsNCj4+ICsJaXQ2
NjI1LT5jc2lfbGFuZXMgPSBlbmRwb2ludC5idXMubWlwaV9jc2kyLm51bV9kYXRhX2xhbmVzOw0K
Pj4gKwlpdDY2MjUtPmJ1c190eXBlID0gZW5kcG9pbnQuYnVzX3R5cGU7DQo+PiArCXY0bDJfZndu
b2RlX2VuZHBvaW50X2ZyZWUoJmVuZHBvaW50KTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiAr
fQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3BhcnNlX2R0KHN0cnVjdCBpdDY2MjUgKml0
NjYyNSkNCj4+ICt7DQo+PiArCXJldHVybiBpdDY2MjVfcGFyc2VfZW5kcG9pbnQoaXQ2NjI1KTsN
Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfaW5pdF92NGwyX3N1YmRldihzdHJ1
Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0g
Jml0NjYyNS0+c2Q7DQo+PiArCWludCBlcnI7DQo+PiArDQo+PiArCXNkLT5kZXYgPSBpdDY2MjUt
PmRldjsNCj4+ICsNCj4+ICsJdjRsMl9pMmNfc3ViZGV2X2luaXQoc2QsIGl0NjYyNS0+aTJjX2Ns
aWVudCwgJml0NjYyNV9vcHMpOw0KPj4gKwlzZC0+ZmxhZ3MgfD0gVjRMMl9TVUJERVZfRkxfSEFT
X0RFVk5PREUgfCBWNEwyX1NVQkRFVl9GTF9IQVNfRVZFTlRTOw0KPj4gKwlpZiAoaXQ2NjI1X3Y0
bDJfaW5pdF9jb250cm9scyhzZCkpIHsNCj4+ICsJCWRldl9lcnIoaXQ2NjI1LT5kZXYsICJGYWls
ZWQgdG8gaW5pdGlhbGl6ZSB2NGwyIGNvbnRyb2xzIik7DQo+PiArCQlyZXR1cm4gLUVOT01FTTsN
Cj4+ICsJfQ0KPj4gKw0KPj4gKwlpdDY2MjUtPnBhZC5mbGFncyA9IE1FRElBX1BBRF9GTF9TT1VS
Q0U7DQo+PiArCXNkLT5lbnRpdHkuZnVuY3Rpb24gPSBNRURJQV9FTlRfRl9DQU1fU0VOU09SOw0K
Pj4gKwllcnIgPSBtZWRpYV9lbnRpdHlfcGFkc19pbml0KCZzZC0+ZW50aXR5LCAxLCAmaXQ2NjI1
LT5wYWQpOw0KPj4gKwlpZiAoZXJyIDwgMCkgew0KPj4gKwkJZGV2X2VycihpdDY2MjUtPmRldiwg
IiVzICVkIGVycj0lZCIsIF9fZnVuY19fLCBfX0xJTkVfXywgZXJyKTsNCj4+ICsJCXY0bDJfY3Ry
bF9oYW5kbGVyX2ZyZWUoc2QtPmN0cmxfaGFuZGxlcik7DQo+PiArCQlyZXR1cm4gZXJyOw0KPj4g
Kwl9DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0
NjYyNV9jaGVja19kZXZpY2Uoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJc3Rh
dGljIGNvbnN0IHU4IGNoaXBfaWRzW11bMl0gPSB7DQo+PiArCQl7IDB4NjYsIDB4MjUgfSwNCj4+
ICsJCXsgMHg2NiwgMHgyNiB9LA0KPj4gKwl9Ow0KPj4gKwlpbnQgY2hpcF9pZDAsIGNoaXBfaWQx
Ow0KPj4gKw0KPj4gKwljaGlwX2lkMCA9IGl0NjYyNV9yZWFkX2J5dGUoaXQ2NjI1LCBSRUdfQ0hJ
UF9JRF8wKTsNCj4+ICsJY2hpcF9pZDEgPSBpdDY2MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX0NI
SVBfSURfMSk7DQo+PiArCWlmIChjaGlwX2lkMCAhPSBjaGlwX2lkc1tpdDY2MjUtPmNoaXBfdHlw
ZV1bMF0gfHwNCj4+ICsJICAgIGNoaXBfaWQxICE9IGNoaXBfaWRzW2l0NjYyNS0+Y2hpcF90eXBl
XVsxXSkgew0KPj4gKwkJZGV2X2VycihpdDY2MjUtPmRldiwNCj4+ICsJCQkiY2hpcCBJRCBtaXNt
YXRjaDogZ290IDB4JTAyeCUwMngsIGV4cGVjdGVkIDB4JTAyeCUwMngiLA0KPj4gKwkJCWNoaXBf
aWQwLCBjaGlwX2lkMSwNCj4+ICsJCQljaGlwX2lkc1tpdDY2MjUtPmNoaXBfdHlwZV1bMF0sDQo+
PiArCQkJY2hpcF9pZHNbaXQ2NjI1LT5jaGlwX3R5cGVdWzFdKTsNCj4+ICsJCXJldHVybiAtRU5P
REVWOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0
aWMgaW50IGl0NjYyNV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPj4gK3sNCj4+
ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1Ow0KPj4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkOw0K
Pj4gKwlpbnQgZXJyOw0KPj4gKw0KPj4gKwlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGNs
aWVudC0+YWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkNCj4+ICsJCXJldHVybiAt
RUlPOw0KPj4gKw0KPj4gKwlpdDY2MjUgPSBkZXZtX2t6YWxsb2MoJmNsaWVudC0+ZGV2LCBzaXpl
b2Yoc3RydWN0IGl0NjYyNSksIEdGUF9LRVJORUwpOw0KPj4gKwlpZiAoIWl0NjYyNSkNCj4+ICsJ
CXJldHVybiAtRU5PTUVNOw0KPj4gKw0KPj4gKwlpdDY2MjUtPmNoaXBfdHlwZSA9ICh1aW50cHRy
X3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7DQo+PiArDQo+PiArCWl0NjYyNS0+cmVzZXRf
Z3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKCZjbGllbnQtPmRldiwgInJlc2V0IiwNCj4+
ICsJCQkJCQkgICAgIEdQSU9EX09VVF9ISUdIKTsNCj4+ICsJaWYgKElTX0VSUihpdDY2MjUtPnJl
c2V0X2dwaW8pKQ0KPj4gKwkJcmV0dXJuIFBUUl9FUlIoaXQ2NjI1LT5yZXNldF9ncGlvKTsNCj4+
ICsNCj4+ICsJaWYgKGl0NjYyNS0+cmVzZXRfZ3Bpbykgew0KPj4gKwkJdXNsZWVwX3JhbmdlKDEw
MDAsIDIwMDApOw0KPj4gKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGl0NjYyNS0+cmVzZXRf
Z3BpbywgMCk7DQo+PiArCQl1c2xlZXBfcmFuZ2UoMTAwMDAsIDExMDAwKTsNCj4+ICsJfQ0KPj4g
Kw0KPj4gKwllcnIgPSBpdDY2MjVfcmVnbWFwX2kyY19pbml0KGNsaWVudCwgaXQ2NjI1KTsNCj4+
ICsJaWYgKGVycikNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCWVyciA9IGl0NjYyNV9j
aGVja19kZXZpY2UoaXQ2NjI1KTsNCj4+ICsJaWYgKGVycikNCj4+ICsJCXJldHVybiBlcnI7DQo+
PiArDQo+PiArCWl0NjYyNV9pbml0X2RhdGEoaXQ2NjI1KTsNCj4+ICsNCj4+ICsJZXJyID0gaXQ2
NjI1X3BhcnNlX2R0KGl0NjYyNSk7DQo+PiArCWlmIChlcnIpDQo+PiArCQlyZXR1cm4gZXJyOw0K
Pj4gKw0KPj4gKwltdXRleF9pbml0KCZpdDY2MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsJSU5JVF9E
RUxBWUVEX1dPUksoJml0NjYyNS0+aHBkX2RlbGF5ZWRfd29yaywgaXQ2NjI1X2hwZF9kZWxheWVk
X3dvcmspOw0KPj4gKwlJTklUX1dPUksoJml0NjYyNS0+cG9sbGluZ193b3JrLCBpdDY2MjVfcG9s
bGluZ193b3JrKTsNCj4+ICsNCj4+ICsJaWYgKGNsaWVudC0+aXJxKSB7DQo+PiArCQllcnIgPSBk
ZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKCZjbGllbnQtPmRldiwgY2xpZW50LT5pcnEsDQo+PiAr
CQkJCQkJTlVMTCwgaXQ2NjI1X2lycV9oYW5kbGVyLA0KPj4gKwkJCQkJCUlSUUZfVFJJR0dFUl9M
T1cgfA0KPj4gKwkJCQkJCUlSUUZfT05FU0hPVCB8DQo+PiArCQkJCQkJSVJRRl9OT19BVVRPRU4s
DQo+PiArCQkJCQkJIml0NjYyNSIsIGl0NjYyNSk7DQo+PiArCQlpZiAoZXJyKQ0KPj4gKwkJCXJl
dHVybiBlcnI7DQo+PiArCX0gZWxzZSB7DQo+PiArCQlkZXZfaW5mbyhpdDY2MjUtPmRldiwgIm5v
IElSUSwgZmFsbGluZyBiYWNrIHRvIHBvbGxpbmciKTsNCj4+ICsJCXRpbWVyX3NldHVwKCZpdDY2
MjUtPnRpbWVyLCBpdDY2MjVfaXJxX3BvbGxfdGltZXIsIDApOw0KPj4gKwl9DQo+PiArDQo+PiAr
CXNkID0gJml0NjYyNS0+c2Q7DQo+PiArCWVyciA9IGl0NjYyNV9pbml0X3Y0bDJfc3ViZGV2KGl0
NjYyNSk7DQo+PiArCWlmIChlcnIpDQo+PiArCQlnb3RvIGVycl9jbGVhbl93b3JrX3F1ZXVlczsN
Cj4+ICsNCj4+ICsJZXJyID0gdjRsMl9jdHJsX2hhbmRsZXJfc2V0dXAoc2QtPmN0cmxfaGFuZGxl
cik7DQo+PiArCWlmIChlcnIpDQo+PiArCQlnb3RvIGVycl9jbGVhbl9oZGw7DQo+PiArDQo+PiAr
CWl0NjYyNS0+Y2VjX2FkYXAgPSBjZWNfYWxsb2NhdGVfYWRhcHRlcigmaXQ2NjI1X2NlY19hZGFw
X29wcywNCj4+ICsJCQkJCQlpdDY2MjUsIGRldl9uYW1lKGl0NjYyNS0+ZGV2KSwNCj4+ICsJCQkJ
CQlDRUNfQ0FQX0RFRkFVTFRTIHwNCj4+ICsJCQkJCQlDRUNfQ0FQX01PTklUT1JfQUxMIHwNCj4+
ICsJCQkJCQlDRUNfQ0FQX1BIWVNfQUREUiwNCj4+ICsJCQkJCQlDRUNfTUFYX0xPR19BRERSUyk7
DQo+PiArCWlmIChJU19FUlIoaXQ2NjI1LT5jZWNfYWRhcCkpIHsNCj4+ICsJCWVyciA9IFBUUl9F
UlIoaXQ2NjI1LT5jZWNfYWRhcCk7DQo+PiArCQlkZXZfZXJyKGl0NjYyNS0+ZGV2LCAiJXMgJWQi
LCBfX2Z1bmNfXywgX19MSU5FX18pOw0KPj4gKwkJZ290byBlcnJfY2xlYW5faGRsOw0KPj4gKwl9
DQo+PiArDQo+PiArCWVyciA9IGNlY19yZWdpc3Rlcl9hZGFwdGVyKGl0NjYyNS0+Y2VjX2FkYXAs
ICZjbGllbnQtPmRldik7DQo+PiArCWlmIChlcnIgPCAwKSB7DQo+PiArCQlkZXZfZXJyKGl0NjYy
NS0+ZGV2LCAiJXM6IGZhaWxlZCB0byByZWdpc3RlciB0aGUgY2VjIGRldmljZSIsIF9fZnVuY19f
KTsNCj4+ICsJCWNlY19kZWxldGVfYWRhcHRlcihpdDY2MjUtPmNlY19hZGFwKTsNCj4+ICsJCWl0
NjYyNS0+Y2VjX2FkYXAgPSBOVUxMOw0KPj4gKwkJZ290byBlcnJfY2xlYW5faGRsOw0KPj4gKwl9
DQo+PiArDQo+PiArCWl0NjYyNV9kZWJ1Z2ZzX2luaXQoaXQ2NjI1LCBjbGllbnQpOw0KPj4gKw0K
Pj4gKwlpdDY2MjVfaW5pdGlhbF9zZXR1cChpdDY2MjUpOw0KPj4gKwlpdDY2MjVfdjRsMl9zZF9j
dHJsX3VwZGF0ZShzZCk7DQo+PiArDQo+PiArCWVyciA9IHY0bDJfYXN5bmNfcmVnaXN0ZXJfc3Vi
ZGV2KHNkKTsNCj4+ICsJaWYgKGVyciA8IDApIHsNCj4+ICsJCWRldl9lcnIoaXQ2NjI1LT5kZXYs
ICIlcyAlZCBlcnI9JWQiLCBfX2Z1bmNfXywgX19MSU5FX18sIGVycik7DQo+PiArCQlnb3RvIGVy
cl9jbGVhbl9kZWJ1Z2ZzOw0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChjbGllbnQtPmlycSkNCj4+
ICsJCWVuYWJsZV9pcnEoY2xpZW50LT5pcnEpOw0KPj4gKwllbHNlDQo+PiArCQltb2RfdGltZXIo
Jml0NjYyNS0+dGltZXIsIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKFBPTExfSU5URVJWQUxf
TVMpKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArDQo+PiArZXJyX2NsZWFuX2RlYnVnZnM6
DQo+PiArCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShpdDY2MjUtPmRlYnVnZnNfZGlyKTsNCj4+
ICsJY2VjX3VucmVnaXN0ZXJfYWRhcHRlcihpdDY2MjUtPmNlY19hZGFwKTsNCj4+ICtlcnJfY2xl
YW5faGRsOg0KPj4gKwltZWRpYV9lbnRpdHlfY2xlYW51cCgmc2QtPmVudGl0eSk7DQo+PiArCXY0
bDJfY3RybF9oYW5kbGVyX2ZyZWUoJml0NjYyNS0+aGRsKTsNCj4+ICsNCj4+ICtlcnJfY2xlYW5f
d29ya19xdWV1ZXM6DQo+PiArCWlmICghY2xpZW50LT5pcnEpDQo+PiArCQl0aW1lcl9zaHV0ZG93
bl9zeW5jKCZpdDY2MjUtPnRpbWVyKTsNCj4+ICsJY2FuY2VsX3dvcmtfc3luYygmaXQ2NjI1LT5w
b2xsaW5nX3dvcmspOw0KPj4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJml0NjYyNS0+aHBk
X2RlbGF5ZWRfd29yayk7DQo+PiArCW11dGV4X2Rlc3Ryb3koJml0NjYyNS0+aXQ2NjI1X2xvY2sp
Ow0KPj4gKwlyZXR1cm4gZXJyOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVf
cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgdjRs
Ml9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7DQo+PiArCXN0cnVjdCBp
dDY2MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0KPj4gKw0KPj4gKwl2NGwyX2FzeW5jX3Vu
cmVnaXN0ZXJfc3ViZGV2KHNkKTsNCj4+ICsJdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYo
c2QpOw0KPj4gKw0KPj4gKwlpZiAoY2xpZW50LT5pcnEpDQo+PiArCQlkaXNhYmxlX2lycShjbGll
bnQtPmlycSk7DQo+PiArCWVsc2UNCj4+ICsJCXRpbWVyX3NodXRkb3duX3N5bmMoJml0NjYyNS0+
dGltZXIpOw0KPj4gKw0KPj4gKwljYW5jZWxfd29ya19zeW5jKCZpdDY2MjUtPnBvbGxpbmdfd29y
ayk7DQo+PiArCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaXQ2NjI1LT5ocGRfZGVsYXllZF93
b3JrKTsNCj4+ICsJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGl0NjYyNS0+ZGVidWdmc19kaXIp
Ow0KPj4gKwljZWNfdW5yZWdpc3Rlcl9hZGFwdGVyKGl0NjYyNS0+Y2VjX2FkYXApOw0KPj4gKwlt
dXRleF9kZXN0cm95KCZpdDY2MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsJbWVkaWFfZW50aXR5X2Ns
ZWFudXAoJnNkLT5lbnRpdHkpOw0KPj4gKwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZpdDY2MjUt
PmhkbCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p
ZCBpdDY2MjVfaWRbXSA9IHsNCj4+ICsJeyAubmFtZSA9ICJpdDY2MjUiLCAuZHJpdmVyX2RhdGEg
PSBJVDY2MjVfQ0hJUCB9LA0KPj4gKwl7IC5uYW1lID0gIml0NjYyNiIsIC5kcml2ZXJfZGF0YSA9
IElUNjYyNl9DSElQIH0sDQo+PiArCXt9DQo+PiArfTsNCj4+ICtNT0RVTEVfREVWSUNFX1RBQkxF
KGkyYywgaXQ2NjI1X2lkKTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj
ZV9pZCBpdDY2MjVfb2ZfbWF0Y2hbXSA9IHsNCj4+ICsJeyAuY29tcGF0aWJsZSA9ICJpdGUsaXQ2
NjI1IiwgLmRhdGEgPSAodm9pZCAqKUlUNjYyNV9DSElQIH0sDQo+PiArCXsgLmNvbXBhdGlibGUg
PSAiaXRlLGl0NjYyNiIsIC5kYXRhID0gKHZvaWQgKilJVDY2MjZfQ0hJUCB9LA0KPj4gKwl7fSwN
Cj4+ICt9Ow0KPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGl0NjYyNV9vZl9tYXRjaCk7DQo+
PiArDQo+PiArc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGl0NjYyNV9kcml2ZXIgPSB7DQo+PiAr
CS5kcml2ZXIgPSB7DQo+PiArCQkubmFtZSA9ICJpdDY2MjUiLA0KPj4gKwkJLm9mX21hdGNoX3Rh
YmxlID0gaXQ2NjI1X29mX21hdGNoLA0KPj4gKwl9LA0KPj4gKwkucHJvYmUgPSBpdDY2MjVfcHJv
YmUsDQo+PiArCS5yZW1vdmUgPSBpdDY2MjVfcmVtb3ZlLA0KPj4gKwkuaWRfdGFibGUgPSBpdDY2
MjVfaWQsDQo+PiArfTsNCj4+ICttb2R1bGVfaTJjX2RyaXZlcihpdDY2MjVfZHJpdmVyKTsNCj4+
ICsNCj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oImlURSBpdDY2MjUvaXQ2NjI2IEhETUkgdG8gTUlQ
SSBDU0kgYnJpZGdlIGRyaXZlciIpOw0KPj4gK01PRFVMRV9BVVRIT1IoIkhlcm1lcyBXdSA8SGVy
bWVzLnd1QGl0ZS5jb20udHc+Iik7DQo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPj4gDQo+
DQo+UmVnYXJkcywNCj4NCj4JSGFucw0KPg0KDQpSZWdhcmRzLA0KSGVybWVzDQo=