Re: [RFC PATCH v3 04/19] target/arm: expose all ID regs fields as properties

Khushit Shah <[email protected]> Mon, 3 Aug 2026 15:05:01 +0000
Newsgroups dev.linux.lists.kvmarm,org.nongnu.qemu-arm,org.nongnu.qemu-devel
Message-ID <[email protected]>
DQoNCj4gT24gMjEgSnVsIDIwMjYsIGF0IDg6MTTigK9QTSwgRXJpYyBBdWdlciA8ZXJpYy5hdWdl
ckByZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+ICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KPiAgQ0FVVElPTjogRXh0
ZXJuYWwgRW1haWwNCj4gDQo+IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIQ0KPiANCj4gSGkgS2h1c2hpdCwNCj4gDQo+
IE9uIDcvMTYvMjYgMTE6MzggUE0sIEtodXNoaXQgU2hhaCB3cm90ZToNCj4+IFVwY29taW5nIG5h
bWVkIGNwdSBtb2RlbHMgbGF5ZXIgcmVxdWlyZXMgZXhwb3NpbmcgYWxsIHRoZSBJRCByZWdpc3Rl
cg0KPj4gZmllbGRzIGFzIHByb3BlcnRpZXMuDQo+PiANCj4+IFdoaWxlIGRvaW5nIHNvIGFsc28g
bW92ZSB0aGUgY29kZSB0byBjcHU2NC5jIHRvIG1ha2UgaXQNCj4+IGFjY2VsZXJhdG9yLWFnbm9z
dGljLCBhbmQgcmVuYW1lIHRoZSBmdW5jdGlvbiB0bw0KPj4gYGFhcmNoNjRfYWRkX2lkcmVnc19w
cm9wZXJ0aWVzKClgLg0KPiANCj4gQmV0dGVyIHRvIHNwbGl0IHRoYXQgcGF0Y2ggaW50byAyIHRv
IGVhc2UgdGhlIHJldmlldzoNCj4gMSkgdXBkYXRlIHRoZSBjb2RlIGluIGt2bSB0byBleHBvc2Ug
YWxsIElEIHJlZ3MgaW5jbHVkaW5nIHRob3NlIHdoaWNoDQo+IGFyZSBub3Qgd3JpdGFibGUgYW5k
IGFkYXB0YXRpb24gaW4gc2V0X3N5c3JlZ19wcm9wIHRvIGhhbmRsZSBSQVosDQo+IFJFUzAvMSwg
Li4uDQo+IDIpIE1vdmUgdG8gY3B1NjQuYw0KVGhpcyBtYWtlcyBtb3JlIHNlbnNlLCB0aGFua3Ms
IHdpbGwgZG8gdGhhdCBpbiB2NC4NCg0KPiBUbyBtZSBpdCBpcyBzdGlsbCBhcmd1YWJsZSB3aGV0
aGVyIGl0IG1ha2VzIHNlbnNlIHRvIGV4cG9zZSBzZXR0aW5ncw0KPiB3aGljaCBjYW5ub3QgYmUg
cmVhbGx5IHNldC4gVG8gbWUgSXQgcG9sbHV0ZXMgdGhlIHFtcCBpbnRyb3NwZWN0aW9uDQo+IG91
dHB1dCBhbmQgSSBkb24ndCBrbm93IHdoZXRoZXIgdGhlcmUgaXMgYW55IGNhc2UgaGlzdG9yeS4N
Cj4gV2h5IGNhbid0IHdlOg0KPiAtIG9ubHkgZXhwb3NlIHdyaXRhYmxlIGlkIHJlZ3MgYXMgcHJv
cHMNCj4gLSBvdGhlciBub24gd3JpdGFibGUgc2V0dGluZ3MgeW91IG5lZWQgdG8gY2hlY2sgY291
bGQgYmUgcmVnaXN0ZXJlZCBpbiBhDQo+IGhhc2ggdGFibGUgZHVyaW5nIG5hbWVkIGNwdSBtb2Rl
bCBkZWZpbml0aW9uIGluIHByb3BzLiANCj4gaW4gYXJtX2FwcGx5X21vZGVsX3Byb3BzKCkgd2hl
biB5b3UgZW51bWVyYXRlIGFsbCBwcm9wcyB5b3UgY2FuIGNoZWNrIGlmDQo+IHRoZXJlIGlzIGFu
IGV4aXN0aW5nIHByb3AgZm9yIHRoaXMgbmFtZSwgaW4gd2hpY2ggY2FzZSB5b3UgcmVhbGx5IGNh
bGwNCj4gDQo+IG9iamVjdF9wcm9wZXJ0eV9zZXRfYm9vbCgpLCBvdGhlcndpc2UsIHlvdSBnbyB0
aHJvdWdoIGFub3RoZXIgcGF0aCwgd2hpY2ggaXMgbm90IHZpc2libGUgYnkgdGhlIGVuZCB1c2Vy
IHdoZXJlIHlvdSBjaGVjayB0aGUgS1ZNIHZhbHVlIG1hdGNoZXMgeW91ciAicHJvcCIgdmFsdWUu
IE5vIG5lZWQgdG8gcHJldGVuZCB0aGlzIGlzIHdyaXRhYmxlLg0KDQpQbGVhc2UgcmVmZXIgdG8g
bXkgYmVsb3cgdGV4dC4gDQoNCj4gQWxzbyBJIGFtIGRvdWJ0ZnVsIGFib3V0IFJFUy9SQVouDQo+
IA0KPiArICAgIE1PREVMX1BST1AoIlNZU1JFR19DVFJfRUwwX1JFUzFfMzEiLCBOVU0sIDEpLA0K
PiANCj4gZG9lcyBub3QgbWFrZSBzZW5zZSB0byBtZQ0KPiANCj4gV2h5IGNhbid0IHlvdSBlbnVt
YXRlIGFsbCBJRCByZWdzIGFuZCBnbyB0aHJvdWdoIHRob3NlIGZpZWxkcyBhbmQgY2hlY2sgdGhl
IEtWTSB2YWx1ZSBtYXRjaGVzLiBXaHkgd291bGQgd2UgbmVlZCB0byBleHBsaWNpdGx5IHNldCBh
IFJBUy9SRVMwLzEgZmllbGQuIFdoeSBjYW4ndCB0aGF0IGJlIGNoZWNrZWQgdHJhbnNwYXJlbnRs
eS4NCg0KV2h5IGRvIHdlIG5lZWQgbm9uLXdyaXRhYmxlIGZpZWxkIHByb3BzPzoNCi0gQXNzdW1l
IHNvbWUgbm9uLXdyaXRhYmxlIGZpZWxkIG1pc21hdGNoZXMgZm9yIHRoZSBtb2RlbCBhbmQNCiAg
aG9zdCwgd2h5IGRvIHdlIHdhbnQgdG8gc3RvcCB1c2VycyBmcm9tIGV4cGxpY2l0bHkgb3ZlcnJp
ZGluZw0KICB0aGUgbW9kZWwncyBmaWVsZCB2YWx1ZSB0byBob3N0IHZhbHVlPw0KLSBFdmVuIHdp
dGggY3B1IC1ob3N0LCBob3cgd2lsbCB1cHBlciBsYXllciBrbm93LCBpZiB0aGV5IGNhbg0KICBt
aWdyYXRlIGJldHdlZW4gaG9zdCBBIGFuZCBob3N0IEI/IChXaXRob3V0IGFjdHVhbGx5IGRvaW5n
DQogIHRoZSBtaWdyYXRpb24pDQogICAgIC0+IE9ubHkgaWYgYWxsIG5vbi13cml0YWJsZSBmaWVs
ZHMgaW4gYm90aCBob3N0IG1hdGNoZXMNCiAgICAgICAgYW5kIHdyaXRhYmxlIGZpZWxkcyBpbiBi
b3RoIGhvc3QgYXJlIOKAnGNvbXBhdGlibGXigJ0uDQoNCldoeSB3b3VsZCB3ZSBuZWVkIHRvIGV4
cGxpY2l0bHkgc2V0IGEgUkFTL1JFUzAvMSBmaWVsZD8NCi0gSGVyZSBteSBhcmd1bWVudCBpcyBh
IGxpdHRsZSB3ZWFrZXIgYnV0LCB3aGF0IGlmIFJFUzEgZmllbGQNCiAgaXMgcmVwdXJwb3NlZCBp
biB0aGUgZnV0dXJlPyBXZSBzdGlsbCB3YW50IGV4aXN0aW5nIG1vZGVscw0KICB0byBzaG93IDEu
DQogIFJFUzAgZG9lcyBub3QgbmVlZCBhbnkgc3BlY2lhbCBoYW5kbGluZywgb25seSBSRVMxIGZp
ZWxkIG5lZWRzDQogIHRoaXMgc3BlY2lhbCBoYW5kbGluZy4NCg0KDQpEb2VzIHRoZSBhYm92ZSBh
cmd1bWVudHMgbWFrZSBzZW5zZT8gDQoNCldhcm0gUmVnYXJkcywNCktodXNoaXQNCg0KPiBUaGFu
a3MNCj4gDQo+IEVyaWMNCj4gDQo+PiANCj4+IFRoaXMgbWFrZXMgcG9ydGluZyB0aGlzIHNvbHV0
aW9uIHRvIG90aGVyIGFjY2VsZXJhdG9ycyBlYXN5IGluIGZ1dHVyZS4NCj4+IA0KPj4gU2lnbmVk
LW9mZi1ieTogS2h1c2hpdCBTaGFoIDxraHVzaGl0LnNoYWhAbnV0YW5peC5jb20+DQo+PiAtLS0N
Cj4+IHRhcmdldC9hcm0vY3B1NjQuYyAgICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLQ0KPj4gdGFyZ2V0L2FybS9pbnRlcm5hbHMuaCAgfCAgIDMgKw0KPj4gdGFyZ2V0L2Fy
bS9rdm0uYyAgICAgICAgfCAxNTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KPj4gdGFyZ2V0L2FybS9rdm1fYXJtLmggICAgfCAgIDggLS0tDQo+PiB0YXJnZXQvYXJt
L3RyYWNlLWV2ZW50cyB8ICAgNCArLQ0KPj4gNSBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9u
cygrKSwgMTYzIGRlbGV0aW9ucygtKQ0KPj4gDQo+PiBkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS9j
cHU2NC5jIGIvdGFyZ2V0L2FybS9jcHU2NC5jDQo+PiBpbmRleCA5MmEwMWQ0Y2U3Li5jZGFkMGZj
NDZkIDEwMDY0NA0KPj4gLS0tIGEvdGFyZ2V0L2FybS9jcHU2NC5jDQo+PiArKysgYi90YXJnZXQv
YXJtL2NwdTY0LmMNCj4+IEBAIC0zOCw2ICszOCw3IEBADQo+PiAjaW5jbHVkZSAiaW50ZXJuYWxz
LmgiDQo+PiAjaW5jbHVkZSAiY3B1LWZlYXR1cmVzLmgiDQo+PiAjaW5jbHVkZSAiY3B1LWlkcmVn
cy5oIg0KPj4gKyNpbmNsdWRlICJ0cmFjZS5oIg0KPj4gDQo+PiAvKiBjb252ZXJ0IGJldHdlZW4g
PHJlZ2lzdGVyPl9JRFggYW5kIFNZU188cmVnaXN0ZXI+ICovDQo+PiAjZGVmaW5lIERFRihOQU1F
LCBPUDAsIE9QMSwgQ1JOLCBDUk0sIE9QMikgICAgICBcDQo+PiBAQCAtNjQ0LDYgKzY0NSwxMTMg
QEAgc3RhdGljIGNvbnN0IFByb3BlcnR5IGFybV9jcHVfcGF1dGhfcWFybWEzX3Byb3BlcnR5ID0N
Cj4+IHN0YXRpYyBQcm9wZXJ0eSBhcm1fY3B1X3BhdXRoX3Fhcm1hNV9wcm9wZXJ0eSA9DQo+PiAg
ICAgREVGSU5FX1BST1BfQk9PTCgicGF1dGgtcWFybWE1IiwgQVJNQ1BVLCBwcm9wX3BhdXRoX3Fh
cm1hNSwgZmFsc2UpOw0KPj4gDQo+PiArI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZDQo+PiArc3Rh
dGljIHZvaWQgc2V0X3N5c3JlZ19wcm9wKE9iamVjdCAqb2JqLCBWaXNpdG9yICp2LA0KPj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpvcGFxdWUs
DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkNCj4+ICt7DQo+
PiArICAgIEFSTTY0U3lzUmVnRmllbGQgKmZpZWxkID0gKEFSTTY0U3lzUmVnRmllbGQgKilvcGFx
dWU7DQo+PiArICAgIEFSTUNQVSAqY3B1ID0gQVJNX0NQVShvYmopOw0KPj4gKyAgICB1aW50NjRf
dCAqaWRyZWdzID0gY3B1LT5pc2FyLmlkcmVnczsNCj4+ICsgICAgdWludDY0X3Qgb2xkLCB2YWx1
ZSwgbWFzazsNCj4+ICsgICAgaW50IGxvd2VyID0gZmllbGQtPnNoaWZ0Ow0KPj4gKyAgICBpbnQg
bGVuZ3RoID0gZmllbGQtPmxlbmd0aDsNCj4+ICsgICAgaW50IGluZGV4ID0gZmllbGQtPmluZGV4
Ow0KPj4gKw0KPj4gKyAgICBpZiAoIXZpc2l0X3R5cGVfdWludDY0KHYsIG5hbWUsICZ2YWx1ZSwg
ZXJycCkpIHsNCj4+ICsgICAgICAgIHJldHVybjsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBp
ZiAobGVuZ3RoIDwgNjQgJiYgdmFsdWUgPiAoKDFVTEwgPDwgbGVuZ3RoKSAtIDEpKSB7DQo+PiAr
ICAgICAgICBlcnJvcl9zZXRnKGVycnAsDQo+PiArICAgICAgICAgICAgICAgICAgICJpZHJlZyAl
cyBzZXQgdmFsdWUgKDB4JWx4KSBleGNlZWRzIGxlbmd0aCBvZiBmaWVsZCAoJWQpISIsDQo+PiAr
ICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhbHVlLCBsZW5ndGgpOw0KPj4gKyAgICAgICAgcmV0
dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGlmIChmaWVsZC0+YXJjaF92YWxzKSB7DQo+
PiArICAgICAgICAvKiB0aGlzIGZpZWxkIGhhcyBzb21lIGVudW0gdmFsdWVzICovDQo+PiArICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkLT5hcmNoX3ZhbHNfY291bnQ7IGkrKykgew0K
Pj4gKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBmaWVsZC0+YXJjaF92YWxzW2ldLnZhbHVlKSB7
DQo+PiArICAgICAgICAgICAgICAgIGdvdG8gdmFsaWQ7DQo+PiArICAgICAgICAgICAgfQ0KPj4g
KyAgICAgICAgfQ0KPj4gKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLA0KPj4gKyAgICAgICAgICAg
ICAgICAgICAiaWRyZWcgJXMgc2V0IHZhbHVlICgweCVseCkgZG9lcyBub3QgbWF0Y2ggYW55ICIN
Cj4+ICsgICAgICAgICAgICAgICAgICAgImFyY2ggdmFsaWQgZW51bSB2YWx1ZSEiLCBuYW1lLCB2
YWx1ZSk7DQo+PiArICAgICAgICByZXR1cm47DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgLyog
SWYgdGhlIGZpZWxkIGlzIFJFU3ggb3IgUkFaLCBpdCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gYW55
dGhpbmcgZWxzZSAqLw0KPj4gKyAgICBpZiAoc3Ryc3RyKGZpZWxkLT5uYW1lLCAiUkVTMCIpICYm
IHZhbHVlICE9IDApIHsNCj4+ICsgICAgICAgIGVycm9yX3NldGcoZXJycCwgImlkcmVnICVzIGlz
IFJFUzAgZmllbGQgYW5kIGNhbm5vdCB3cml0ZSAlbGQiLA0KPj4gKyAgICAgICAgICAgIG5hbWUs
IHZhbHVlKTsNCj4+ICsgICAgICAgIHJldHVybjsNCj4+ICsgICAgfSBlbHNlIGlmIChzdHJzdHIo
ZmllbGQtPm5hbWUsICJSQVoiKSAmJiB2YWx1ZSAhPSAwKSB7DQo+PiArICAgICAgICBlcnJvcl9z
ZXRnKGVycnAsICJpZHJlZyAlcyBpcyBSQVogZmllbGQgYW5kIGNhbm5vdCB3cml0ZSAlbGQiLA0K
Pj4gKyAgICAgICAgICAgIG5hbWUsIHZhbHVlKTsNCj4+ICsgICAgICAgIHJldHVybjsNCj4+ICsg
ICAgfSBlbHNlIGlmIChzdHJzdHIoZmllbGQtPm5hbWUsICJSRVMxIikgJiYgdmFsdWUgIT0gMSkg
ew0KPj4gKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiaWRyZWcgJXMgaXMgUkVTMSBmaWVsZCBh
bmQgY2Fubm90IHdyaXRlICVsZCIsDQo+PiArICAgICAgICAgICAgbmFtZSwgdmFsdWUpOw0KPj4g
KyAgICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+PiArdmFsaWQ6DQo+PiArICAgIG1h
c2sgPSBNQUtFXzY0QklUX01BU0sobG93ZXIsIGxlbmd0aCk7DQo+PiArICAgIHZhbHVlID0gdmFs
dWUgPDwgbG93ZXI7DQo+PiArICAgIG9sZCA9IGlkcmVnc1tpbmRleF07DQo+PiArICAgIGlkcmVn
c1tpbmRleF0gPSBvbGQgJiB+bWFzazsNCj4+ICsgICAgaWRyZWdzW2luZGV4XSB8PSB2YWx1ZTsN
Cj4+ICsgICAgdHJhY2Vfc2V0X3N5c3JlZ19wcm9wKG5hbWUsIG9sZCwgbWFzaywgdmFsdWUsIGlk
cmVnc1tpbmRleF0pOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBnZXRfc3lzcmVnX3By
b3AoT2JqZWN0ICpvYmosIFZpc2l0b3IgKnYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKm9wYXF1ZSwNCj4+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXJyb3IgKiplcnJwKQ0KPj4gK3sNCj4+ICsgICAgQVJNNjRTeXNSZWdGaWVs
ZCAqZmllbGQgPSAoQVJNNjRTeXNSZWdGaWVsZCAqKW9wYXF1ZTsNCj4+ICsgICAgQVJNQ1BVICpj
cHUgPSBBUk1fQ1BVKG9iaik7DQo+PiArICAgIHVpbnQ2NF90ICppZHJlZ3MgPSBjcHUtPmlzYXIu
aWRyZWdzOw0KPj4gKyAgICB1aW50NjRfdCB2YWx1ZSwgbWFzazsNCj4+ICsgICAgaW50IGxvd2Vy
ID0gZmllbGQtPnNoaWZ0Ow0KPj4gKyAgICBpbnQgbGVuZ3RoID0gZmllbGQtPmxlbmd0aDsNCj4+
ICsgICAgaW50IGluZGV4ID0gZmllbGQtPmluZGV4Ow0KPj4gKw0KPj4gKyAgICBtYXNrID0gTUFL
RV82NEJJVF9NQVNLKGxvd2VyLCBsZW5ndGgpOw0KPj4gKyAgICB2YWx1ZSA9IChpZHJlZ3NbaW5k
ZXhdICYgbWFzaykgPj4gbG93ZXI7DQo+PiArICAgIHZpc2l0X3R5cGVfdWludDY0KHYsIG5hbWUs
ICZ2YWx1ZSwgZXJycCk7DQo+PiArICAgIHRyYWNlX2dldF9zeXNyZWdfcHJvcChuYW1lLCB2YWx1
ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQNCj4+ICthYXJjaDY0X2FkZF9pZHJlZ19w
cm9wZXJ0aWVzKE9iamVjdCAqb2JqLCBBUk02NFN5c1JlZyAqcmVnKQ0KPj4gK3sNCj4+ICsgICAg
aW50IG5iX3N5c3JlZ19wcm9wcyA9IDA7DQo+PiArDQo+PiArICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcmVnLT5maWVsZHNfY291bnQ7IGkrKykgew0KPj4gKyAgICAgICAgQVJNNjRTeXNSZWdGaWVs
ZCAqZmllbGQgPSAmcmVnLT5maWVsZHNbaV07DQo+PiArICAgICAgICBjaGFyICpwcm9wX25hbWUg
PSBnX3N0cmR1cF9wcmludGYoIlNZU1JFR18lc18lcyIsIHJlZy0+bmFtZSwNCj4+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC0+bmFtZSk7DQo+PiArICAg
ICAgICBvYmplY3RfcHJvcGVydHlfYWRkKG9iaiwgcHJvcF9uYW1lLCAidWludDY0IiwNCj4+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3N5c3JlZ19wcm9wLCBzZXRfc3lzcmVnX3By
b3AsIE5VTEwsIGZpZWxkKTsNCj4+ICsgICAgICAgIGdfZnJlZShwcm9wX25hbWUpOw0KPj4gKyAg
ICAgICAgbmJfc3lzcmVnX3Byb3BzKys7DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgdHJhY2Vf
bmJfc3lzcmVnX3Byb3BzKHJlZy0+bmFtZSwgbmJfc3lzcmVnX3Byb3BzKTsNCj4+ICsgICAgcmV0
dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgYWFyY2g2NF9hZGRfaWRyZWdzX3Byb3BlcnRp
ZXMoT2JqZWN0ICpvYmopDQo+PiArew0KPj4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9J
RF9JRFg7IGkrKykgew0KPj4gKyAgICAgICAgQVJNNjRTeXNSZWcgKnJlZyA9ICZhcm02NF9pZF9y
ZWdzW2ldOw0KPj4gKyAgICAgICAgYWFyY2g2NF9hZGRfaWRyZWdfcHJvcGVydGllcyhvYmosIHJl
Zyk7DQo+PiArICAgIH0NCj4+ICt9DQo+PiArI2VuZGlmDQo+PiArDQo+PiB2b2lkIGFhcmNoNjRf
YWRkX3BhdXRoX3Byb3BlcnRpZXMoT2JqZWN0ICpvYmopDQo+PiB7DQo+PiAgICAgQVJNQ1BVICpj
cHUgPSBBUk1fQ1BVKG9iaik7DQo+PiBAQCAtODY1LDggKzk3MywxMiBAQCBzdGF0aWMgdm9pZCBh
YXJjaDY0X2hvc3RfaW5pdGZuKE9iamVjdCAqb2JqKQ0KPj4gICAgIGt2bV9hcm1fc2V0X2NwdV9m
ZWF0dXJlc19mcm9tX2hvc3QoY3B1KTsNCj4+ICAgICBhYXJjaDY0X2FkZF9zdmVfcHJvcGVydGll
cyhvYmopOw0KPj4gDQo+PiAtICAgIC8qIGdlbmVyYXRlIFNZU1JFRyBwcm9wZXJ0aWVzIGFjY29y
ZGluZyB0byB3cml0YWJsZSBtYXNrcyAqLw0KPj4gLSAgICBrdm1fYXJtX2V4cG9zZV9pZHJlZ19w
cm9wZXJ0aWVzKGNwdSwgYXJtNjRfaWRfcmVncyk7DQo+PiArI2lmbmRlZiBDT05GSUdfVVNFUl9P
TkxZDQo+PiArICAgIC8qIGdlbmVyYXRlIFNZU1JFRyBwcm9wZXJ0aWVzICovDQo+PiArICAgIGlm
IChrdm1fZW5hYmxlZCgpKSB7DQo+PiArICAgICAgICBhYXJjaDY0X2FkZF9pZHJlZ3NfcHJvcGVy
dGllcyhvYmopOw0KPj4gKyAgICB9DQo+PiArI2VuZGlmDQo+PiANCj4+ICNlbGlmIGRlZmluZWQo
Q09ORklHX0hWRikNCj4+ICAgICBodmZfYXJtX3NldF9jcHVfZmVhdHVyZXNfZnJvbV9ob3N0KGNw
dSk7DQo+PiBkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS9pbnRlcm5hbHMuaCBiL3RhcmdldC9hcm0v
aW50ZXJuYWxzLmgNCj4+IGluZGV4IGE2MzI1ODRhNGUuLjc1MDJiNmRiOGEgMTAwNjQ0DQo+PiAt
LS0gYS90YXJnZXQvYXJtL2ludGVybmFscy5oDQo+PiArKysgYi90YXJnZXQvYXJtL2ludGVybmFs
cy5oDQo+PiBAQCAtMTc1NCw2ICsxNzU0LDkgQEAgdm9pZCBhYXJjaDY0X21heF90Y2dfaW5pdGZu
KE9iamVjdCAqb2JqKTsNCj4+IHZvaWQgYWFyY2g2NF9hZGRfcGF1dGhfcHJvcGVydGllcyhPYmpl
Y3QgKm9iaik7DQo+PiB2b2lkIGFhcmNoNjRfYWRkX3N2ZV9wcm9wZXJ0aWVzKE9iamVjdCAqb2Jq
KTsNCj4+IHZvaWQgYWFyY2g2NF9hZGRfc21lX3Byb3BlcnRpZXMoT2JqZWN0ICpvYmopOw0KPj4g
KyNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQ0KPj4gK3ZvaWQgYWFyY2g2NF9hZGRfaWRyZWdzX3By
b3BlcnRpZXMoT2JqZWN0ICpvYmopOw0KPj4gKyNlbmRpZg0KPj4gDQo+PiAvKiBSZXR1cm4gdHJ1
ZSBpZiB0aGUgZ2Ric3R1YiBpcyBwcmVzZW50aW5nIGFuIEFBcmNoNjQgQ1BVICovDQo+PiBzdGF0
aWMgaW5saW5lIGJvb2wgYXJtX2dkYnN0dWJfaXNfYWFyY2g2NChBUk1DUFUgKmNwdSkNCj4+IGRp
ZmYgLS1naXQgYS90YXJnZXQvYXJtL2t2bS5jIGIvdGFyZ2V0L2FybS9rdm0uYw0KPj4gaW5kZXgg
ODkyNDMzYTYxMi4uNzY1ODNkYjNmMCAxMDA2NDQNCj4+IC0tLSBhL3RhcmdldC9hcm0va3ZtLmMN
Cj4+ICsrKyBiL3RhcmdldC9hcm0va3ZtLmMNCj4+IEBAIC0zMjcsMTU3ICszMjcsNiBAQCBzdGF0
aWMgaW50IGdldF9ob3N0X2NwdV9pZHJlZ3MoQVJNQ1BVICpjcHUsIGludCBmZCwgQVJNSG9zdENQ
VUZlYXR1cmVzICphaGNmKQ0KPj4gICAgIHJldHVybiBlcnI7DQo+PiB9DQo+PiANCj4+IC1zdGF0
aWMgQVJNNjRTeXNSZWdGaWVsZCAqZ2V0X2ZpZWxkKGludCBpLCBBUk02NFN5c1JlZyAqcmVnKQ0K
Pj4gLXsNCj4+IC0gICAgZm9yIChpbnQgZiA9IDA7IGYgPCByZWctPmZpZWxkc19jb3VudDsgZisr
KSB7DQo+PiAtICAgICAgICBzdHJ1Y3QgQVJNNjRTeXNSZWdGaWVsZCAqZmllbGQgPSAmcmVnLT5m
aWVsZHNbZl07DQo+PiAtICAgICAgICBpbnQgdXBwZXIgPSBmaWVsZC0+c2hpZnQgKyBmaWVsZC0+
bGVuZ3RoIC0gMTsNCj4+IC0NCj4+IC0gICAgICAgIGlmIChpID49IGZpZWxkLT5zaGlmdCAmJiBp
IDw9IHVwcGVyKSB7DQo+PiAtICAgICAgICAgICAgcmV0dXJuIGZpZWxkOw0KPj4gLSAgICAgICAg
fQ0KPj4gLSAgICB9DQo+PiAtICAgIHJldHVybiBOVUxMOw0KPj4gLX0NCj4+IC0NCj4+IC1zdGF0
aWMgdm9pZCBzZXRfc3lzcmVnX3Byb3AoT2JqZWN0ICpvYmosIFZpc2l0b3IgKnYsDQo+PiAtICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKm9wYXF1ZSwN
Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJwKQ0KPj4gLXsNCj4+
IC0gICAgQVJNNjRTeXNSZWdGaWVsZCAqZmllbGQgPSAoQVJNNjRTeXNSZWdGaWVsZCAqKW9wYXF1
ZTsNCj4+IC0gICAgQVJNQ1BVICpjcHUgPSBBUk1fQ1BVKG9iaik7DQo+PiAtICAgIHVpbnQ2NF90
ICppZHJlZ3MgPSBjcHUtPmlzYXIuaWRyZWdzOw0KPj4gLSAgICB1aW50NjRfdCBvbGQsIHZhbHVl
LCBtYXNrOw0KPj4gLSAgICBpbnQgbG93ZXIgPSBmaWVsZC0+c2hpZnQ7DQo+PiAtICAgIGludCBs
ZW5ndGggPSBmaWVsZC0+bGVuZ3RoOw0KPj4gLSAgICBpbnQgaW5kZXggPSBmaWVsZC0+aW5kZXg7
DQo+PiAtDQo+PiAtICAgIGlmICghdmlzaXRfdHlwZV91aW50NjQodiwgbmFtZSwgJnZhbHVlLCBl
cnJwKSkgew0KPj4gLSAgICAgICAgcmV0dXJuOw0KPj4gLSAgICB9DQo+PiAtDQo+PiAtICAgIGlm
IChsZW5ndGggPCA2NCAmJiB2YWx1ZSA+ICgoMSA8PCBsZW5ndGgpIC0gMSkpIHsNCj4+IC0gICAg
ICAgIGVycm9yX3NldGcoZXJycCwNCj4+IC0gICAgICAgICAgICAgICAgICAgImlkcmVnICVzIHNl
dCB2YWx1ZSAoMHglbHgpIGV4Y2VlZHMgbGVuZ3RoIG9mIGZpZWxkICglZCkhIiwNCj4+IC0gICAg
ICAgICAgICAgICAgICAgbmFtZSwgdmFsdWUsIGxlbmd0aCk7DQo+PiAtICAgICAgICByZXR1cm47
DQo+PiAtICAgIH0NCj4+IC0NCj4+IC0gICAgaWYgKGZpZWxkLT5hcmNoX3ZhbHMpIHsNCj4+IC0g
ICAgICAgIC8qIHRoaXMgZmllbGQgaGFzIHNvbWUgZW51bSB2YWx1ZXMgKi8NCj4+IC0gICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgZmllbGQtPmFyY2hfdmFsc19jb3VudDsgaSsrKSB7DQo+PiAt
ICAgICAgICAgICAgaWYgKHZhbHVlID09IGZpZWxkLT5hcmNoX3ZhbHNbaV0udmFsdWUpIHsNCj4+
IC0gICAgICAgICAgICAgICAgZ290byB2YWxpZDsNCj4+IC0gICAgICAgICAgICB9DQo+PiAtICAg
ICAgICB9DQo+PiAtICAgICAgICBlcnJvcl9zZXRnKGVycnAsDQo+PiAtICAgICAgICAgICAgICAg
ICAgICJpZHJlZyAlcyBzZXQgdmFsdWUgKDB4JWx4KSBkb2VzIG5vdCBtYXRjaCBhbnkgIg0KPj4g
LSAgICAgICAgICAgICAgICAgICAiYXJjaCB2YWxpZCBlbnVtIHZhbHVlISIsIG5hbWUsIHZhbHVl
KTsNCj4+IC0gICAgICAgIHJldHVybjsNCj4+IC0gICAgfQ0KPj4gLQ0KPj4gLXZhbGlkOg0KPj4g
LQ0KPj4gLSAgICBtYXNrID0gTUFLRV82NEJJVF9NQVNLKGxvd2VyLCBsZW5ndGgpOw0KPj4gLSAg
ICB2YWx1ZSA9IHZhbHVlIDw8IGxvd2VyOw0KPj4gLSAgICBvbGQgPSBpZHJlZ3NbaW5kZXhdOw0K
Pj4gLSAgICBpZHJlZ3NbaW5kZXhdID0gb2xkICYgfm1hc2s7DQo+PiAtICAgIGlkcmVnc1tpbmRl
eF0gfD0gdmFsdWU7DQo+PiAtICAgIHRyYWNlX3NldF9zeXNyZWdfcHJvcChuYW1lLCBvbGQsIG1h
c2ssIHZhbHVlLCBpZHJlZ3NbaW5kZXhdKTsNCj4+IC19DQo+PiAtDQo+PiAtc3RhdGljIHZvaWQg
Z2V0X3N5c3JlZ19wcm9wKE9iamVjdCAqb2JqLCBWaXNpdG9yICp2LA0KPj4gLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpvcGFxdWUsDQo+PiAtICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkNCj4+IC17DQo+PiAtICAgIEFS
TTY0U3lzUmVnRmllbGQgKmZpZWxkID0gKEFSTTY0U3lzUmVnRmllbGQgKilvcGFxdWU7DQo+PiAt
ICAgIEFSTUNQVSAqY3B1ID0gQVJNX0NQVShvYmopOw0KPj4gLSAgICB1aW50NjRfdCAqaWRyZWdz
ID0gY3B1LT5pc2FyLmlkcmVnczsNCj4+IC0gICAgdWludDY0X3QgdmFsdWUsIG1hc2s7DQo+PiAt
ICAgIGludCBsb3dlciA9IGZpZWxkLT5zaGlmdDsNCj4+IC0gICAgaW50IGxlbmd0aCA9IGZpZWxk
LT5sZW5ndGg7DQo+PiAtICAgIGludCBpbmRleCA9IGZpZWxkLT5pbmRleDsNCj4+IC0NCj4+IC0g
ICAgbWFzayA9IE1BS0VfNjRCSVRfTUFTSyhsb3dlciwgbGVuZ3RoKTsNCj4+IC0gICAgdmFsdWUg
PSAoaWRyZWdzW2luZGV4XSAmIG1hc2spID4+IGxvd2VyOw0KPj4gLSAgICB2aXNpdF90eXBlX3Vp
bnQ2NCh2LCBuYW1lLCAmdmFsdWUsIGVycnApOw0KPj4gLSAgICB0cmFjZV9nZXRfc3lzcmVnX3By
b3AobmFtZSwgdmFsdWUpOw0KPj4gLX0NCj4+IC0NCj4+IC0vKg0KPj4gLSAqIGRlY29kZV9pZHJl
Z193cml0ZW1hcDogR2VuZXJhdGUgcHJvcHMgZm9yIHdyaXRhYmxlIGZpZWxkcw0KPj4gLSAqDQo+
PiAtICogQG9iajogQ1BVIG9iamVjdA0KPj4gLSAqIEByZWc6IGRlc2NyaXB0aW9uIG9mIHRoZSBz
eXNyZWcNCj4+IC0gKi8NCj4+IC1zdGF0aWMgaW50DQo+PiAtZGVjb2RlX2lkcmVnX3dyaXRlbWFw
KE9iamVjdCAqb2JqLCBBUk02NFN5c1JlZyAqcmVnKQ0KPj4gLXsNCj4+IC0gICAgdWludDY0X3Qg
bWFwID0gcmVnLT53cml0YWJsZV9tYXNrOw0KPj4gLSAgICBpbnQgaSA9IGN0ejY0KG1hcCk7DQo+
PiAtICAgIGludCBuYl9zeXNyZWdfcHJvcHMgPSAwOw0KPj4gLQ0KPj4gLSAgICB3aGlsZSAobWFw
KSB7DQo+PiAtICAgICAgICBBUk02NFN5c1JlZ0ZpZWxkICpmaWVsZCA9IGdldF9maWVsZChpLCBy
ZWcpOw0KPj4gLSAgICAgICAgaW50IGxvd2VyLCB1cHBlcjsNCj4+IC0gICAgICAgIGNoYXIgKnBy
b3BfbmFtZTsNCj4+IC0gICAgICAgIHVpbnQ2NF90IGZpZWxkX21hc2s7DQo+PiAtDQo+PiAtICAg
ICAgICBpZiAoIWZpZWxkKSB7DQo+PiAtICAgICAgICAgICAgd2Fybl9yZXBvcnQoIiVzIGJpdCAl
ZCBvZiAlcyBpcyB3cml0YWJsZSBidXQgbm8gbmFtZWQgZmllbGQgIg0KPj4gLSAgICAgICAgICAg
ICAgICAgICAgICAgICJpbiB0YXJnZXQvYXJtL2NwdS1pZHJlZ3MuaC5pbmMiLA0KPj4gLSAgICAg
ICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpLCByZWctPm5hbWUpOw0KPj4gLSAgICAgICAg
ICAgIHdhcm5fcmVwb3J0KCIlcyBpcyB0YXJnZXQvYXJtL2NwdS1pZHJlZ3MuaC5pbmMgdXAtdG8t
ZGF0ZT8iLCBfX2Z1bmNfXyk7DQo+PiAtICAgICAgICAgICAgbWFwID0gIG1hcCAmIH5CSVRfVUxM
KGkpOw0KPj4gLSAgICAgICAgICAgIGkgPSBjdHo2NChtYXApOw0KPj4gLSAgICAgICAgICAgIGNv
bnRpbnVlOw0KPj4gLSAgICAgICAgfQ0KPj4gLSAgICAgICAgbG93ZXIgPSBmaWVsZC0+c2hpZnQ7
DQo+PiAtICAgICAgICB1cHBlciA9IGZpZWxkLT5zaGlmdCArIGZpZWxkLT5sZW5ndGggLSAxOw0K
Pj4gLQ0KPj4gLSAgICAgICAgLyogU2FuaXR5IGNoZWNrIHRoZSBmaWVsZCBpcyBub3QgYSByZXNl
cnZlZCBmaWVsZCAqLw0KPj4gLSAgICAgICAgaWYgKHN0cnN0cihmaWVsZC0+bmFtZSwgIlJFUzAi
KSB8fCBzdHJzdHIoZmllbGQtPm5hbWUsICJSRVMxIikgfHwNCj4+IC0gICAgICAgICAgICBzdHJz
dHIoZmllbGQtPm5hbWUsICJSQVoiKSkgew0KPj4gLSAgICAgICAgICAgIHRyYWNlX3VuZXhwZWN0
ZWRfd3JpdGFibGVfcmVzZXJ2ZWRfZmllbGQocmVnLT5uYW1lLCBmaWVsZC0+bmFtZSwNCj4+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2Vy
LCB1cHBlcik7DQo+PiAtICAgICAgICAgICAgY29udGludWU7DQo+PiAtICAgICAgICB9DQo+PiAt
ICAgICAgICBwcm9wX25hbWUgPSBnX3N0cmR1cF9wcmludGYoIlNZU1JFR18lc18lcyIsIHJlZy0+
bmFtZSwgZmllbGQtPm5hbWUpOw0KPj4gLSAgICAgICAgdHJhY2VfZGVjb2RlX2lkcmVnX3dyaXRl
bWFwKGZpZWxkLT5uYW1lLCBsb3dlciwgdXBwZXIsIHByb3BfbmFtZSk7DQo+PiAtICAgICAgICBv
YmplY3RfcHJvcGVydHlfYWRkKG9iaiwgcHJvcF9uYW1lLCAidWludDY0IiwNCj4+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0X3N5c3JlZ19wcm9wLCBzZXRfc3lzcmVnX3Byb3AsIE5V
TEwsIGZpZWxkKTsNCj4+IC0gICAgICAgIGdfZnJlZShwcm9wX25hbWUpOw0KPj4gLSAgICAgICAg
bmJfc3lzcmVnX3Byb3BzKys7DQo+PiAtDQo+PiAtICAgICAgICBmaWVsZF9tYXNrID0gTUFLRV82
NEJJVF9NQVNLKGxvd2VyLCBmaWVsZC0+bGVuZ3RoKTsNCj4+IC0gICAgICAgIG1hcCA9IG1hcCAm
IH5maWVsZF9tYXNrOw0KPj4gLSAgICAgICAgaSA9IGN0ejY0KG1hcCk7DQo+PiAtICAgIH0NCj4+
IC0gICAgdHJhY2VfbmJfc3lzcmVnX3Byb3BzKHJlZy0+bmFtZSwgbmJfc3lzcmVnX3Byb3BzKTsN
Cj4+IC0gICAgcmV0dXJuIDA7DQo+PiAtfQ0KPj4gLQ0KPj4gLS8qIGFuYWx5emUgdGhlIHdyaXRh
YmxlIG1hc2sgYW5kIGdlbmVyYXRlIHByb3BlcnRpZXMgZm9yIHdyaXRhYmxlIGZpZWxkcyAqLw0K
Pj4gLXZvaWQga3ZtX2FybV9leHBvc2VfaWRyZWdfcHJvcGVydGllcyhBUk1DUFUgKmNwdSwgQVJN
NjRTeXNSZWcgKnJlZ3MpDQo+PiAtew0KPj4gLSAgICBPYmplY3QgKm9iaiA9IE9CSkVDVChjcHUp
Ow0KPj4gLQ0KPj4gLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9JRF9JRFg7IGkrKykgew0K
Pj4gLSAgICAgICAgQVJNNjRTeXNSZWcgKnN5c3JlZ2Rlc2MgPSAmcmVnc1tpXTsNCj4+IC0NCj4+
IC0gICAgICAgIGlmIChzeXNyZWdkZXNjLT53cml0YWJsZV9tYXNrKSB7DQo+PiAtICAgICAgICAg
ICAgLyoNCj4+IC0gICAgICAgICAgICAgKiBzcGVjaWFsIGNhc2UgUkVWSURSX0VMMSBhbmQgQUlE
Ul9FTDEgd2hpY2ggYXJlIHdyaXRhYmxlIGJ1dA0KPj4gLSAgICAgICAgICAgICAqIGRvIG5vdCBl
eHBvc2UgbmFtZWQgZmllbGRzLiBUaGV5IHdpbGwgbmVlZCB0byBiZSBoYW5kbGVkDQo+PiAtICAg
ICAgICAgICAgICogc2VwYXJhdGVseQ0KPj4gLSAgICAgICAgICAgICAqLw0KPj4gLSAgICAgICAg
ICAgIGlmIChzdHJjbXAoc3lzcmVnZGVzYy0+bmFtZSwgIlJFVklEUl9FTDEiKSAmJg0KPj4gLSAg
ICAgICAgICAgICAgICBzdHJjbXAoc3lzcmVnZGVzYy0+bmFtZSwgIkFJRFJfRUwxIikpIHsNCj4+
IC0gICAgICAgICAgICAgICAgZGVjb2RlX2lkcmVnX3dyaXRlbWFwKG9iaiwgc3lzcmVnZGVzYyk7
DQo+PiAtICAgICAgICAgICAgfQ0KPj4gLSAgICAgICAgfQ0KPj4gLSAgICB9DQo+PiAtfQ0KPj4g
DQo+PiBzdGF0aWMgdm9pZA0KPj4ga3ZtX2FybV9nZXRfaG9zdF9jcHVfZmVhdHVyZXMoQVJNQ1BV
ICpjcHUsIEFSTUhvc3RDUFVGZWF0dXJlcyAqYWhjZikNCj4+IGRpZmYgLS1naXQgYS90YXJnZXQv
YXJtL2t2bV9hcm0uaCBiL3RhcmdldC9hcm0va3ZtX2FybS5oDQo+PiBpbmRleCAyYjM0NzRjYzM2
Li4xMzNhMDI2MDM2IDEwMDY0NA0KPj4gLS0tIGEvdGFyZ2V0L2FybS9rdm1fYXJtLmgNCj4+ICsr
KyBiL3RhcmdldC9hcm0va3ZtX2FybS5oDQo+PiBAQCAtMTQzLDE0ICsxNDMsNiBAQCB2b2lkIGt2
bV9hcm1fc2V0X2NwdV9mZWF0dXJlc19mcm9tX2hvc3QoQVJNQ1BVICpjcHUpOw0KPj4gdm9pZCBr
dm1fYXJtX2FkZF92Y3B1X3Byb3BlcnRpZXMoQVJNQ1BVICpjcHUpOw0KPj4gDQo+PiB0eXBlZGVm
IHN0cnVjdCBBUk02NFN5c1JlZyBBUk02NFN5c1JlZzsNCj4+IC0vKioNCj4+IC0gKiBrdm1fYXJt
X2V4cG9zZV9pZHJlZ19wcm9wZXJ0aWVzOg0KPj4gLSAqIEBjcHU6IFRoZSBDUFUgb2JqZWN0IHRv
IGdlbmVyYXRlIHRoZSBwcm9wZXJ0aWVzIGZvcg0KPj4gLSAqIEByZWc6IHJlZ2lzdGVycyBmcm9t
IHRoZSBob3N0DQo+PiAtICoNCj4+IC0gKiBhbmFseXplIHRoZSB3cml0YWJsZSBtYXNrIGFuZCBn
ZW5lcmF0ZSBwcm9wZXJ0aWVzIGZvciB3cml0YWJsZSBmaWVsZHMNCj4+IC0gKi8NCj4+IC12b2lk
IGt2bV9hcm1fZXhwb3NlX2lkcmVnX3Byb3BlcnRpZXMoQVJNQ1BVICpjcHUsIEFSTTY0U3lzUmVn
ICpyZWdzKTsNCj4+IA0KPj4gLyoqDQo+PiAgKiBrdm1fYXJtX3N0ZWFsX3RpbWVfZmluYWxpemU6
DQo+PiBkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS90cmFjZS1ldmVudHMgYi90YXJnZXQvYXJtL3Ry
YWNlLWV2ZW50cw0KPj4gaW5kZXggZTY3NzMwZGU2Yi4uZjMzYjBkODIxZCAxMDA2NDQNCj4+IC0t
LSBhL3RhcmdldC9hcm0vdHJhY2UtZXZlbnRzDQo+PiArKysgYi90YXJnZXQvYXJtL3RyYWNlLWV2
ZW50cw0KPj4gQEAgLTE1LDExICsxNSwxMSBAQCBhcm1fZ3RfdXBkYXRlX2lycShpbnQgdGltZXIs
IGludCBpcnFzdGF0ZSkgImd0X3VwZGF0ZV9pcnE6IHRpbWVyICVkIGlycXN0YXRlICVkIg0KPj4g
a3ZtX2FybV9maXh1cF9tc2lfcm91dGUodWludDY0X3QgaW92YSwgdWludDY0X3QgZ3BhKSAiTVNJ
IGlvdmEgPSAweCUiUFJJeDY0IiBpcyB0cmFuc2xhdGVkIGludG8gMHglIlBSSXg2NA0KPj4gZ2V0
X2hvc3RfY3B1X2lkcmVncyhjb25zdCBjaGFyICpuYW1lLCB1aW50NjRfdCB2YWx1ZSkgInNjcmF0
Y2ggdmNwdSBob3N0IHZhbHVlIGZvciAlcyBpcyAweCUiUFJJeDY0DQo+PiBrdm1fYXJtX3dyaXRh
YmxlX2lkcmVnc190b19jcHJlZ19saXN0KGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IHByZXZp
b3VzLCB1aW50NjRfdCBuZXcpICIlcyBvdmVyd3JpdGUgZGVmYXVsdCAweCUiUFJJeDY0IiB3aXRo
IDB4JSJQUkl4NjQNCj4+IC1kZWNvZGVfaWRyZWdfd3JpdGVtYXAoY29uc3QgY2hhciogbmFtZSwg
aW50IGxvd2VyLCBpbnQgdXBwZXIsIGNoYXIgKnByb3BfbmFtZSkgIiVzIFslZDolZF0gaXMgd3Jp
dGFibGUgKHByb3AgJXMpIg0KPj4gKw0KPj4gKyMgY3B1NjQuYw0KPj4gZ2V0X3N5c3JlZ19wcm9w
KGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IHZhbHVlKSAiJXMgMHglIlBSSXg2NA0KPj4gc2V0
X3N5c3JlZ19wcm9wKGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQ2NF90IG9sZCwgdWludDY0X3QgbWFz
aywgdWludDY0X3QgZmllbGRfdmFsdWUsIHVpbnQ2NF90IG5ldykgIiVzIG9sZCByZWcgdmFsdWU9
MHglIlBSSXg2NCIgbWFzaz0weCUiUFJJeDY0IiBuZXcgZmllbGQgdmFsdWU9MHglIlBSSXg2NCIg
bmV3IHJlZyB2YWx1ZT0weCUiUFJJeDY0DQo+PiBuYl9zeXNyZWdfcHJvcHMoY29uc3QgY2hhciAq
bmFtZSwgaW50IGNvdW50KSAiJXM6ICVkIFNZU1JFRyBwcm9wZXJ0aWVzIg0KPj4gLXVuZXhwZWN0
ZWRfd3JpdGFibGVfcmVzZXJ2ZWRfZmllbGQoY29uc3QgY2hhciAqcmVnX25hbWUsIGNvbnN0IGNo
YXIgKmZpZWxkX25hbWUsIGludCBsb3dlciwgaW50IHVwcGVyKSAiVW5leHBlY3RlZCB3cml0YWJs
ZSByZXNlcnZlZCBmaWVsZDogJXMuJXMgWyVkLCVkXSwgc2tpcCBpdCAuLi4iDQo+PiANCj4+ICMg
Y3B1LmMNCj4+IGFybV9jcHVfcmVzZXQodWludDY0X3QgbXBfYWZmKSAiY3B1ICUiIFBSSXU2NA0K
PiANCg0K