[PATCH] Fix issue on showing mouse pointer on Mouse Prop Dlg
zecarlos jesus <[email protected]> Fri, 22 May 2020 06:48:35 +0000
| Newsgroups | gmane.comp.emulators.wine.patches |
|---|---|
| Message-ID | <VI1PR01MB43367B49286689D3642C8E72DAB40@VI1PR01MB4336.eurprd01.prod.exchangelabs.com> |
--_004_VI1PR01MB43367B49286689D3642C8E72DAB40VI1PR01MB4336eurp_
Content-Type: multipart/alternative;
boundary="_000_VI1PR01MB43367B49286689D3642C8E72DAB40VI1PR01MB4336eurp_"
--_000_VI1PR01MB43367B49286689D3642C8E72DAB40VI1PR01MB4336eurp_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
--_000_VI1PR01MB43367B49286689D3642C8E72DAB40VI1PR01MB4336eurp_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo=
ttom:0;} </style>
</head>
<body dir=3D"ltr">
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
</body>
</html>
--_000_VI1PR01MB43367B49286689D3642C8E72DAB40VI1PR01MB4336eurp_--
--_004_VI1PR01MB43367B49286689D3642C8E72DAB40VI1PR01MB4336eurp_
Content-Type: text/plain; name="static.c"
Content-Description: static.c
Content-Disposition: attachment; filename="static.c"; size=25922;
creation-date="Fri, 22 May 2020 06:48:26 GMT";
modification-date="Fri, 22 May 2020 06:48:27 GMT"
Content-Transfer-Encoding: base64
LyoNCiAqIFN0YXRpYyBjb250cm9sDQogKg0KICogQ29weXJpZ2h0ICBEYXZpZCBXLiBNZXRjYWxm
ZSwgMTk5Mw0KICoNCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3INCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KICogdmVyc2lvbiAyLjEgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQogKg0KICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsDQogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQogKg0KICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KICogTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0K
ICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQQ0KICoNCiAqIE5vdGVzOg0KICogICAtIFdpbmRvd3MgWFAgaW50
cm9kdWNlZCBuZXcgYmVoYXZpb3I6IFRoZSBiYWNrZ3JvdW5kIG9mIGNlbnRlcmVkDQogKiAgICAg
aWNvbnMgYW5kIGJpdG1hcHMgaXMgcGFpbnRlZCBkaWZmZXJlbnRseS4gVGhpcyBpcyBvbmx5IGRv
bmUgaWYNCiAqICAgICBhIG1hbmlmZXN0IGlzIHByZXNlbnQuDQogKiAgICAgQmVjYXVzZSBpdCBo
YXMgbm90IHlldCBiZWVuIGRlY2lkZWQgaG93IHRvIGltcGxlbWVudCB0aGUgdHdvDQogKiAgICAg
ZGlmZmVyZW50IG1vZGVzIGluIFdpbmUsIG9ubHkgdGhlIFdpbmRvd3MgWFAgbW9kZSBpcyBpbXBs
ZW1lbnRlZC4NCiAqICAgLSBDb250cm9scyB3aXRoIFNTX1NJTVBMRSBidXQgd2l0aG91dCBTU19O
T1BSRUZJWDoNCiAqICAgICBUaGUgdGV4dCBzaG91bGQgbm90IGJlIGNoYW5nZWQuIFdpbmRvd3Mg
ZG9lc24ndCBjbGVhciB0aGUNCiAqICAgICBjbGllbnQgcmVjdGFuZ2xlLCBzbyB0aGUgbmV3IHRl
eHQgbXVzdCBiZSBsYXJnZXIgdGhhbiB0aGUgb2xkIG9uZS4NCiAqICAgLSBUaGUgU1NfUklHSFRK
VVNUIHN0eWxlIGlzIGN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYnkgV2luZG93cw0KICogICAg
IChvciBpdCBkb2VzIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiBkb2N1bWVudGVkKS4NCiAqDQog
KiBUT0RPOg0KICogICAtIEFuaW1hdGVkIGN1cnNvcnMNCiAqLw0KDQojaW5jbHVkZSA8c3RkYXJn
Lmg+DQoNCiNpbmNsdWRlICJ3aW5kZWYuaCINCiNpbmNsdWRlICJ3aW5iYXNlLmgiDQojaW5jbHVk
ZSAid2luZ2RpLmgiDQojaW5jbHVkZSAid2ludXNlci5oIg0KI2luY2x1ZGUgImNvbW1jdHJsLmgi
DQoNCiNpbmNsdWRlICJ3aW5lL2RlYnVnLmgiDQoNCiNpbmNsdWRlICJjb21jdGwzMi5oIg0KDQpX
SU5FX0RFRkFVTFRfREVCVUdfQ0hBTk5FTChzdGF0aWMpOw0KDQpzdGF0aWMgdm9pZCBTVEFUSUNf
UGFpbnRPd25lckRyYXdmbiggSFdORCBod25kLCBIREMgaGRjLCBEV09SRCBzdHlsZSApOw0Kc3Rh
dGljIHZvaWQgU1RBVElDX1BhaW50VGV4dGZuKCBIV05EIGh3bmQsIEhEQyBoZGMsIERXT1JEIHN0
eWxlICk7DQpzdGF0aWMgdm9pZCBTVEFUSUNfUGFpbnRSZWN0Zm4oIEhXTkQgaHduZCwgSERDIGhk
YywgRFdPUkQgc3R5bGUgKTsNCnN0YXRpYyB2b2lkIFNUQVRJQ19QYWludEljb25mbiggSFdORCBo
d25kLCBIREMgaGRjLCBEV09SRCBzdHlsZSApOw0Kc3RhdGljIHZvaWQgU1RBVElDX1BhaW50Qml0
bWFwZm4oIEhXTkQgaHduZCwgSERDIGhkYywgRFdPUkQgc3R5bGUgKTsNCnN0YXRpYyB2b2lkIFNU
QVRJQ19QYWludEVuaE1ldGFmbiggSFdORCBod25kLCBIREMgaGRjLCBEV09SRCBzdHlsZSApOw0K
c3RhdGljIHZvaWQgU1RBVElDX1BhaW50RXRjaGVkZm4oIEhXTkQgaHduZCwgSERDIGhkYywgRFdP
UkQgc3R5bGUgKTsNCg0KLyogb2Zmc2V0cyBmb3IgR2V0V2luZG93TG9uZyBmb3Igc3RhdGljIHBy
aXZhdGUgaW5mb3JtYXRpb24gKi8NCiNkZWZpbmUgSEZPTlRfR1dMX09GRlNFVCAgICAwDQojZGVm
aW5lIEhJQ09OX0dXTF9PRkZTRVQgICAgKHNpemVvZihIRk9OVCkpDQojZGVmaW5lIFNUQVRJQ19F
WFRSQV9CWVRFUyAgKEhJQ09OX0dXTF9PRkZTRVQgKyBzaXplb2YoSElDT04pKQ0KDQp0eXBlZGVm
IHZvaWQgKCpwZlBhaW50KSggSFdORCBod25kLCBIREMgaGRjLCBEV09SRCBzdHlsZSApOw0KDQpz
dGF0aWMgY29uc3QgcGZQYWludCBzdGF0aWNQYWludEZ1bmNbU1NfVFlQRU1BU0srMV0gPQ0Kew0K
ICAgIFNUQVRJQ19QYWludFRleHRmbiwgICAgICAvKiBTU19MRUZUICovDQogICAgU1RBVElDX1Bh
aW50VGV4dGZuLCAgICAgIC8qIFNTX0NFTlRFUiAqLw0KICAgIFNUQVRJQ19QYWludFRleHRmbiwg
ICAgICAvKiBTU19SSUdIVCAqLw0KICAgIFNUQVRJQ19QYWludEljb25mbiwgICAgICAvKiBTU19J
Q09OICovDQogICAgU1RBVElDX1BhaW50UmVjdGZuLCAgICAgIC8qIFNTX0JMQUNLUkVDVCAqLw0K
ICAgIFNUQVRJQ19QYWludFJlY3RmbiwgICAgICAvKiBTU19HUkFZUkVDVCAqLw0KICAgIFNUQVRJ
Q19QYWludFJlY3RmbiwgICAgICAvKiBTU19XSElURVJFQ1QgKi8NCiAgICBTVEFUSUNfUGFpbnRS
ZWN0Zm4sICAgICAgLyogU1NfQkxBQ0tGUkFNRSAqLw0KICAgIFNUQVRJQ19QYWludFJlY3Rmbiwg
ICAgICAvKiBTU19HUkFZRlJBTUUgKi8NCiAgICBTVEFUSUNfUGFpbnRSZWN0Zm4sICAgICAgLyog
U1NfV0hJVEVGUkFNRSAqLw0KICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAvKiBTU19VU0VS
SVRFTSAqLw0KICAgIFNUQVRJQ19QYWludFRleHRmbiwgICAgICAvKiBTU19TSU1QTEUgKi8NCiAg
ICBTVEFUSUNfUGFpbnRUZXh0Zm4sICAgICAgLyogU1NfTEVGVE5PV09SRFdSQVAgKi8NCiAgICBT
VEFUSUNfUGFpbnRPd25lckRyYXdmbiwgLyogU1NfT1dORVJEUkFXICovDQogICAgU1RBVElDX1Bh
aW50Qml0bWFwZm4sICAgIC8qIFNTX0JJVE1BUCAqLw0KICAgIFNUQVRJQ19QYWludEVuaE1ldGFm
biwgICAvKiBTU19FTkhNRVRBRklMRSAqLw0KICAgIFNUQVRJQ19QYWludEV0Y2hlZGZuLCAgICAv
KiBTU19FVENIRURIT1JaICovDQogICAgU1RBVElDX1BhaW50RXRjaGVkZm4sICAgIC8qIFNTX0VU
Q0hFRFZFUlQgKi8NCiAgICBTVEFUSUNfUGFpbnRFdGNoZWRmbiwgICAgLyogU1NfRVRDSEVERlJB
TUUgKi8NCn07DQoNCnN0YXRpYyBCT09MIGdldF9pY29uX3NpemUoIEhJQ09OIGhhbmRsZSwgU0la
RSAqc2l6ZSApDQp7DQogICAgSUNPTklORk8gaW5mbzsNCiAgICBCSVRNQVAgYm1wOw0KICAgIGlu
dCByZXQ7DQoNCiAgICBpZiAoIUdldEljb25JbmZvKGhhbmRsZSwgJmluZm8pKQ0KICAgICAgICBy
ZXR1cm4gRkFMU0U7DQoNCiAgICByZXQgPSBHZXRPYmplY3RXKGluZm8uaGJtTWFzaywgc2l6ZW9m
KGJtcCksICZibXApOw0KICAgIGlmIChyZXQpDQogICAgew0KICAgICAgICBzaXplLT5jeCA9IGJt
cC5ibVdpZHRoOw0KICAgICAgICBzaXplLT5jeSA9IGJtcC5ibUhlaWdodDsNCiAgICAgICAgLyoN
CiAgICAgICAgICAgIElmIHRoaXMgc3RydWN0dXJlIGRlZmluZXMgYSBibGFjayBhbmQgd2hpdGUg
aWNvbiwgdGhpcyBiaXRtYXNrIGlzIGZvcm1hdHRlZCANCiAgICAgICAgICAgIHNvIHRoYXQgdGhl
IHVwcGVyIGhhbGYgaXMgdGhlIGljb24gQU5EIGJpdG1hc2sgYW5kIHRoZSBsb3dlciBoYWxmIGlz
IA0KICAgICAgICAgICAgdGhlIGljb24gWE9SIGJpdG1hc2suIA0KICAgICAgICAqLw0KICAgICAg
ICBpZiAoIWluZm8uaGJtQ29sb3IpDQogICAgICAgICAgICBzaXplLT5jeSAvPSAyOw0KICAgIH0N
Cg0KICAgIERlbGV0ZU9iamVjdChpbmZvLmhibU1hc2spOw0KICAgIERlbGV0ZU9iamVjdChpbmZv
LmhibUNvbG9yKTsNCg0KICAgIHJldHVybiAhIXJldDsNCn0NCg0KLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQog
KiAgICAgICAgICAgU1RBVElDX1NldEljb24NCiAqDQogKiBTZXQgdGhlIGljb24gZm9yIGFuIFNT
X0lDT04gY29udHJvbC4NCiAqLw0Kc3RhdGljIEhJQ09OIFNUQVRJQ19TZXRJY29uKCBIV05EIGh3
bmQsIEhJQ09OIGhpY29uLCBEV09SRCBzdHlsZSApDQp7DQogICAgSElDT04gcHJldkljb247DQog
ICAgU0laRSBzaXplOw0KDQogICAgaWYgKChzdHlsZSAmIFNTX1RZUEVNQVNLKSAhPSBTU19JQ09O
KSByZXR1cm4gMDsNCiAgICBpZiAoaGljb24gJiYgIWdldF9pY29uX3NpemUoIGhpY29uLCAmc2l6
ZSApKQ0KICAgIHsNCiAgICAgICAgV0FSTigiaGljb24gIT0gMCwgYnV0IGludmFsaWRcbiIpOw0K
ICAgICAgICByZXR1cm4gMDsNCiAgICB9DQogICAgcHJldkljb24gPSAoSElDT04pU2V0V2luZG93
TG9uZ1B0clcoIGh3bmQsIEhJQ09OX0dXTF9PRkZTRVQsIChMT05HX1BUUiloaWNvbiApOw0KICAg
IGlmIChoaWNvbiAmJiAhKHN0eWxlICYgU1NfQ0VOVEVSSU1BR0UpICYmICEoc3R5bGUgJiBTU19S
RUFMU0laRUNPTlRST0wpKQ0KICAgIHsNCiAgICAgICAgLyogV2luZG93cyBjdXJyZW50bHkgZG9l
c24ndCBpbXBsZW1lbnQgU1NfUklHSFRKVVNUICovDQogICAgICAgIC8qDQogICAgICAgIGlmICgo
c3R5bGUgJiBTU19SSUdIVEpVU1QpICE9IDApDQogICAgICAgIHsNCiAgICAgICAgICAgIFJFQ1Qg
d3I7DQogICAgICAgICAgICBHZXRXaW5kb3dSZWN0KGh3bmQsICZ3cik7DQogICAgICAgICAgICBT
ZXRXaW5kb3dQb3MoIGh3bmQsIDAsIHdyLnJpZ2h0IC0gaW5mby0+bldpZHRoLCB3ci5ib3R0b20g
LSBpbmZvLT5uSGVpZ2h0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5uV2lkdGgs
IGluZm8tPm5IZWlnaHQsIFNXUF9OT0FDVElWQVRFIHwgU1dQX05PWk9SREVSICk7DQogICAgICAg
IH0NCiAgICAgICAgZWxzZSAqLw0KICAgICAgICB7DQogICAgICAgICAgICBTZXRXaW5kb3dQb3Mo
IGh3bmQsIDAsIDAsIDAsIHNpemUuY3gsIHNpemUuY3ksIFNXUF9OT0FDVElWQVRFIHwgU1dQX05P
TU9WRSB8IFNXUF9OT1pPUkRFUiApOw0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVybiBwcmV2
SWNvbjsNCn0NCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiAgICAgICAgICAgU1RBVElDX1NldEJpdG1h
cA0KICoNCiAqIFNldCB0aGUgYml0bWFwIGZvciBhbiBTU19CSVRNQVAgY29udHJvbC4NCiAqLw0K
c3RhdGljIEhCSVRNQVAgU1RBVElDX1NldEJpdG1hcCggSFdORCBod25kLCBIQklUTUFQIGhCaXRt
YXAsIERXT1JEIHN0eWxlICkNCnsNCiAgICBIQklUTUFQIGhPbGRCaXRtYXA7DQoNCiAgICBpZiAo
KHN0eWxlICYgU1NfVFlQRU1BU0spICE9IFNTX0JJVE1BUCkgcmV0dXJuIDA7DQogICAgaWYgKGhC
aXRtYXAgJiYgR2V0T2JqZWN0VHlwZShoQml0bWFwKSAhPSBPQkpfQklUTUFQKQ0KICAgIHsNCiAg
ICAgICAgV0FSTigiaEJpdG1hcCAhPSAwLCBidXQgaXQncyBub3QgYSBiaXRtYXBcbiIpOw0KICAg
ICAgICByZXR1cm4gMDsNCiAgICB9DQogICAgaE9sZEJpdG1hcCA9IChIQklUTUFQKVNldFdpbmRv
d0xvbmdQdHJXKCBod25kLCBISUNPTl9HV0xfT0ZGU0VULCAoTE9OR19QVFIpaEJpdG1hcCApOw0K
ICAgIGlmIChoQml0bWFwICYmICEoc3R5bGUgJiBTU19DRU5URVJJTUFHRSkgJiYgIShzdHlsZSAm
IFNTX1JFQUxTSVpFQ09OVFJPTCkpDQogICAgew0KICAgICAgICBCSVRNQVAgYm07DQogICAgICAg
IEdldE9iamVjdFcoaEJpdG1hcCwgc2l6ZW9mKGJtKSwgJmJtKTsNCiAgICAgICAgLyogV2luZG93
cyBjdXJyZW50bHkgZG9lc24ndCBpbXBsZW1lbnQgU1NfUklHSFRKVVNUICovDQogICAgICAgIC8q
DQogICAgICAgIGlmICgoc3R5bGUgJiBTU19SSUdIVEpVU1QpICE9IDApDQogICAgICAgIHsNCiAg
ICAgICAgICAgIFJFQ1Qgd3I7DQogICAgICAgICAgICBHZXRXaW5kb3dSZWN0KGh3bmQsICZ3cik7
DQogICAgICAgICAgICBTZXRXaW5kb3dQb3MoIGh3bmQsIDAsIHdyLnJpZ2h0IC0gYm0uYm1XaWR0
aCwgd3IuYm90dG9tIC0gYm0uYm1IZWlnaHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGJt
LmJtV2lkdGgsIGJtLmJtSGVpZ2h0LCBTV1BfTk9BQ1RJVkFURSB8IFNXUF9OT1pPUkRFUiApOw0K
ICAgICAgICB9DQogICAgICAgIGVsc2UgKi8NCiAgICAgICAgew0KICAgICAgICAgICAgU2V0V2lu
ZG93UG9zKCBod25kLCAwLCAwLCAwLCBibS5ibVdpZHRoLCBibS5ibUhlaWdodCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgU1dQX05PQUNUSVZBVEUgfCBTV1BfTk9NT1ZFIHwgU1dQX05PWk9S
REVSICk7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIGhPbGRCaXRtYXA7DQp9DQoNCi8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKg0KICogICAgICAgICAgIFNUQVRJQ19TZXRFbmhNZXRhRmlsZQ0KICoNCiAq
IFNldCB0aGUgZW5oYW5jZWQgbWV0YWZpbGUgZm9yIGFuIFNTX0VOSE1FVEFGSUxFIGNvbnRyb2wu
DQogKi8NCnN0YXRpYyBIRU5ITUVUQUZJTEUgU1RBVElDX1NldEVuaE1ldGFGaWxlKCBIV05EIGh3
bmQsIEhFTkhNRVRBRklMRSBoRW5oTWV0YUZpbGUsIERXT1JEIHN0eWxlICkNCnsNCiAgICBpZiAo
KHN0eWxlICYgU1NfVFlQRU1BU0spICE9IFNTX0VOSE1FVEFGSUxFKSByZXR1cm4gMDsNCiAgICBp
ZiAoaEVuaE1ldGFGaWxlICYmIEdldE9iamVjdFR5cGUoaEVuaE1ldGFGaWxlKSAhPSBPQkpfRU5I
TUVUQUZJTEUpDQogICAgew0KICAgICAgICBXQVJOKCJoRW5oTWV0YUZpbGUgIT0gMCwgYnV0IGl0
J3Mgbm90IGFuIGVuaGFuY2VkIG1ldGFmaWxlXG4iKTsNCiAgICAgICAgcmV0dXJuIDA7DQogICAg
fQ0KICAgIHJldHVybiAoSEVOSE1FVEFGSUxFKVNldFdpbmRvd0xvbmdQdHJXKCBod25kLCBISUNP
Tl9HV0xfT0ZGU0VULCAoTE9OR19QVFIpaEVuaE1ldGFGaWxlICk7DQp9DQoNCi8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKg0KICogICAgICAgICAgIFNUQVRJQ19HZXRJbWFnZQ0KICoNCiAqIEdldHMgdGhlIGJpdG1h
cCBmb3IgYW4gU1NfQklUTUFQIGNvbnRyb2wsIHRoZSBpY29uL2N1cnNvciBmb3IgYW4NCiAqIFNT
X0lDT04gY29udHJvbCBvciB0aGUgZW5oYW5jZWQgbWV0YWZpbGUgZm9yIGFuIFNTX0VOSE1FVEFG
SUxFIGNvbnRyb2wuDQogKi8NCnN0YXRpYyBIQU5ETEUgU1RBVElDX0dldEltYWdlKCBIV05EIGh3
bmQsIFdQQVJBTSB3UGFyYW0sIERXT1JEIHN0eWxlICkNCnsNCiAgICBzd2l0Y2ggKHN0eWxlICYg
U1NfVFlQRU1BU0spDQogICAgew0KICAgICAgICBjYXNlIFNTX0lDT046DQogICAgICAgICAgICBp
ZiAoKHdQYXJhbSAhPSBJTUFHRV9JQ09OKSAmJg0KICAgICAgICAgICAgICAgICh3UGFyYW0gIT0g
SU1BR0VfQ1VSU09SKSkgcmV0dXJuIE5VTEw7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAg
Y2FzZSBTU19CSVRNQVA6DQogICAgICAgICAgICBpZiAod1BhcmFtICE9IElNQUdFX0JJVE1BUCkg
cmV0dXJuIE5VTEw7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSBTU19FTkhNRVRB
RklMRToNCiAgICAgICAgICAgIGlmICh3UGFyYW0gIT0gSU1BR0VfRU5ITUVUQUZJTEUpIHJldHVy
biBOVUxMOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAg
ICByZXR1cm4gTlVMTDsNCiAgICB9DQogICAgcmV0dXJuIChIQU5ETEUpR2V0V2luZG93TG9uZ1B0
clcoIGh3bmQsIEhJQ09OX0dXTF9PRkZTRVQgKTsNCn0NCg0KLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiAg
ICAgICAgICAgU1RBVElDX0xvYWRJY29uVw0KICoNCiAqIExvYWQgdGhlIGljb24gZm9yIGFuIFNT
X0lDT04gY29udHJvbC4NCiAqLw0Kc3RhdGljIEhJQ09OIFNUQVRJQ19Mb2FkSWNvblcoIEhJTlNU
QU5DRSBoSW5zdGFuY2UsIExQQ1dTVFIgbmFtZSwgRFdPUkQgc3R5bGUgKQ0Kew0KICAgIEhJQ09O
IGhpY29uID0gMDsNCg0KICAgIGlmIChoSW5zdGFuY2UgJiYgKChVTE9OR19QVFIpaEluc3RhbmNl
ID4+IDE2KSkNCiAgICB7DQogICAgICAgIGlmICgoc3R5bGUgJiBTU19SRUFMU0laRUlNQUdFKSAh
PSAwKQ0KICAgICAgICAgICAgaGljb24gPSBMb2FkSW1hZ2VXKGhJbnN0YW5jZSwgbmFtZSwgSU1B
R0VfSUNPTiwgMCwgMCwgTFJfU0hBUkVEKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAg
ICAgICAgICBoaWNvbiA9IExvYWRJY29uVyggaEluc3RhbmNlLCBuYW1lICk7DQogICAgICAgICAg
ICBpZiAoIWhpY29uKSBoaWNvbiA9IExvYWRDdXJzb3JXKCBoSW5zdGFuY2UsIG5hbWUgKTsNCiAg
ICAgICAgfQ0KICAgIH0NCiAgICBpZiAoIWhpY29uKSBoaWNvbiA9IExvYWRJY29uVyggMCwgbmFt
ZSApOw0KICAgIC8qIFdpbmRvd3MgZG9lc24ndCB0cnkgdG8gbG9hZCBhIHN0YW5kYXJkIGN1cnNv
ciwNCiAgICAgICBwcm9iYWJseSBiZWNhdXNlIG1vc3QgSURzIGZvciBzdGFuZGFyZCBjdXJzb3Jz
IGNvbmZsaWN0DQogICAgICAgd2l0aCB0aGUgSURzIGZvciBzdGFuZGFyZCBpY29ucyBhbnl3YXkg
Ki8NCiAgICByZXR1cm4gaGljb247DQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogICAgICAgICAg
IFNUQVRJQ19UcnlQYWludEZjbg0KICoNCiAqIFRyeSB0byBpbW1lZGlhdGVseSBwYWludCB0aGUg
Y29udHJvbC4NCiAqLw0Kc3RhdGljIFZPSUQgU1RBVElDX1RyeVBhaW50RmNuKEhXTkQgaHduZCwg
TE9ORyBmdWxsX3N0eWxlKQ0Kew0KICAgIExPTkcgc3R5bGUgPSBmdWxsX3N0eWxlICYgU1NfVFlQ
RU1BU0s7DQogICAgUkVDVCByYzsNCg0KICAgIEdldENsaWVudFJlY3QoIGh3bmQsICZyYyApOw0K
ICAgIGlmICghSXNSZWN0RW1wdHkoJnJjKSAmJiBJc1dpbmRvd1Zpc2libGUoaHduZCkgJiYgc3Rh
dGljUGFpbnRGdW5jW3N0eWxlXSkNCiAgICB7DQogICAgICAgIEhEQyBoZGM7DQogICAgICAgIEhS
R04gaHJnbjsNCg0KICAgICAgICBoZGMgPSBHZXREQyggaHduZCApOw0KICAgICAgICBocmduID0g
c2V0X2NvbnRyb2xfY2xpcHBpbmcoIGhkYywgJnJjICk7DQogICAgICAgIChzdGF0aWNQYWludEZ1
bmNbc3R5bGVdKSggaHduZCwgaGRjLCBmdWxsX3N0eWxlICk7DQogICAgICAgIFNlbGVjdENsaXBS
Z24oIGhkYywgaHJnbiApOw0KICAgICAgICBpZiAoaHJnbikgRGVsZXRlT2JqZWN0KCBocmduICk7
DQogICAgICAgIFJlbGVhc2VEQyggaHduZCwgaGRjICk7DQogICAgfQ0KfQ0KDQpzdGF0aWMgSEJS
VVNIIFNUQVRJQ19TZW5kV21DdGxDb2xvclN0YXRpYyhIV05EIGh3bmQsIEhEQyBoZGMpDQp7DQog
ICAgSEJSVVNIIGhCcnVzaDsNCiAgICBIV05EIHBhcmVudCA9IEdldFBhcmVudChod25kKTsNCg0K
ICAgIGlmICghcGFyZW50KSBwYXJlbnQgPSBod25kOw0KICAgIGhCcnVzaCA9IChIQlJVU0gpIFNl
bmRNZXNzYWdlVyggcGFyZW50LCBXTV9DVExDT0xPUlNUQVRJQywgKFdQQVJBTSloZGMsIChMUEFS
QU0paHduZCApOw0KICAgIGlmICghaEJydXNoKSAvKiBkaWQgdGhlIGFwcCBmb3JnZXQgdG8gY2Fs
bCBEZWZXaW5kb3dQcm9jID8gKi8NCiAgICB7DQogICAgICAgIC8qIEZJWE1FOiBEZWZXaW5kb3dQ
cm9jIHNob3VsZCByZXR1cm4gZGlmZmVyZW50IGNvbG9ycyBpZiBhDQogICAgICAgICAgICAgICAg
ICBtYW5pZmVzdCBpcyBwcmVzZW50ICovDQogICAgICAgIGhCcnVzaCA9IChIQlJVU0gpRGVmV2lu
ZG93UHJvY1coIHBhcmVudCwgV01fQ1RMQ09MT1JTVEFUSUMsIChXUEFSQU0paGRjLCAoTFBBUkFN
KWh3bmQpOw0KICAgIH0NCiAgICByZXR1cm4gaEJydXNoOw0KfQ0KDQovKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN
CiAqICAgICAgICAgICBoYXNUZXh0U3R5bGUNCiAqDQogKiBUZXN0cyBpZiB0aGUgY29udHJvbCBk
aXNwbGF5cyB0ZXh0Lg0KICovDQpzdGF0aWMgQk9PTCBoYXNUZXh0U3R5bGUoIERXT1JEIHN0eWxl
ICkNCnsNCiAgICBzd2l0Y2ggKHN0eWxlICYgU1NfVFlQRU1BU0spDQogICAgew0KICAgICAgICBj
YXNlIFNTX1NJTVBMRToNCiAgICAgICAgY2FzZSBTU19MRUZUOg0KICAgICAgICBjYXNlIFNTX0xF
RlROT1dPUkRXUkFQOg0KICAgICAgICBjYXNlIFNTX0NFTlRFUjoNCiAgICAgICAgY2FzZSBTU19S
SUdIVDoNCiAgICAgICAgY2FzZSBTU19PV05FUkRSQVc6DQogICAgICAgICAgICByZXR1cm4gVFJV
RTsNCiAgICB9DQoNCiAgICByZXR1cm4gRkFMU0U7DQp9DQoNCnN0YXRpYyBMUkVTVUxUIENBTExC
QUNLIFNUQVRJQ19XaW5kb3dQcm9jKCBIV05EIGh3bmQsIFVJTlQgdU1zZywgV1BBUkFNIHdQYXJh
bSwgTFBBUkFNIGxQYXJhbSApDQp7DQogICAgTFJFU1VMVCBsUmVzdWx0ID0gMDsNCiAgICBMT05H
IGZ1bGxfc3R5bGUgPSBHZXRXaW5kb3dMb25nVyggaHduZCwgR1dMX1NUWUxFICk7DQogICAgTE9O
RyBzdHlsZSA9IGZ1bGxfc3R5bGUgJiBTU19UWVBFTUFTSzsNCg0KICAgIGlmICghSXNXaW5kb3co
IGh3bmQgKSkgcmV0dXJuIDA7DQoNCiAgICBzd2l0Y2ggKHVNc2cpDQogICAgew0KICAgIGNhc2Ug
V01fQ1JFQVRFOg0KICAgICAgICBpZiAoc3R5bGUgPCAwTCB8fCBzdHlsZSA+IFNTX1RZUEVNQVNL
KQ0KICAgICAgICB7DQogICAgICAgICAgICBFUlIoIlVua25vd24gc3R5bGUgMHglMDJ4XG4iLCBz
dHlsZSApOw0KICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICB9DQogICAgICAgIGJyZWFr
Ow0KDQogICAgY2FzZSBXTV9OQ0RFU1RST1k6DQogICAgICAgIGlmIChzdHlsZSA9PSBTU19JQ09O
KQ0KICAgICAgICB7DQovKg0KICogRklYTUUNCiAqICAgICAgICAgICBEZXN0cm95SWNvbjMyKCBT
VEFUSUNfU2V0SWNvbiggd25kUHRyLCAwICkgKTsNCiAqDQogKiBXZSBkb24ndCB3YW50IHRvIGRv
IHRoaXMgeWV0IGJlY2F1c2UgRGVzdHJveUljb24zMiBpcyBicm9rZW4uIElmIHRoZSBpY29uDQog
KiBoYWQgYWxyZWFkeSBiZWVuIGxvYWRlZCBieSB0aGUgYXBwbGljYXRpb24gdGhlIGxhc3QgdGhp
bmcgd2Ugd2FudCB0byBkbyBpcw0KICogR2xvYmFsRnJlZTE2IHRoZSBoYW5kbGUuDQogKi8NCiAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHJl
dHVybiBEZWZXaW5kb3dQcm9jVyhod25kLCB1TXNnLCB3UGFyYW0sIGxQYXJhbSk7DQoNCiAgICBj
YXNlIFdNX0VSQVNFQktHTkQ6DQogICAgICAgIC8qIGRvIGFsbCBwYWludGluZyBpbiBXTV9QQUlO
VCBsaWtlIFdpbmRvd3MgZG9lcyAqLw0KICAgICAgICByZXR1cm4gMTsNCg0KICAgIGNhc2UgV01f
UFJJTlRDTElFTlQ6DQogICAgY2FzZSBXTV9QQUlOVDoNCiAgICAgICAgew0KICAgICAgICAgICAg
UEFJTlRTVFJVQ1QgcHM7DQogICAgICAgICAgICBSRUNUIHJlY3Q7DQogICAgICAgICAgICBIREMg
aGRjID0gd1BhcmFtID8gKEhEQyl3UGFyYW0gOiBCZWdpblBhaW50KGh3bmQsICZwcyk7DQogICAg
ICAgICAgICBHZXRDbGllbnRSZWN0KCBod25kLCAmcmVjdCApOw0KICAgICAgICAgICAgaWYgKHN0
YXRpY1BhaW50RnVuY1tzdHlsZV0pDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSFJH
TiBocmduID0gc2V0X2NvbnRyb2xfY2xpcHBpbmcoIGhkYywgJnJlY3QgKTsNCiAgICAgICAgICAg
ICAgICAoc3RhdGljUGFpbnRGdW5jW3N0eWxlXSkoIGh3bmQsIGhkYywgZnVsbF9zdHlsZSApOw0K
ICAgICAgICAgICAgICAgIFNlbGVjdENsaXBSZ24oIGhkYywgaHJnbiApOw0KICAgICAgICAgICAg
ICAgIGlmIChocmduKSBEZWxldGVPYmplY3QoIGhyZ24gKTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIGlmICghd1BhcmFtKSBFbmRQYWludChod25kLCAmcHMpOw0KICAgICAgICB9DQogICAg
ICAgIGJyZWFrOw0KDQogICAgY2FzZSBXTV9FTkFCTEU6DQogICAgICAgIFNUQVRJQ19UcnlQYWlu
dEZjbiggaHduZCwgZnVsbF9zdHlsZSApOw0KICAgICAgICBpZiAoZnVsbF9zdHlsZSAmIFNTX05P
VElGWSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHdQYXJhbSkNCiAgICAgICAgICAgICAg
ICBTZW5kTWVzc2FnZVcoIEdldFBhcmVudChod25kKSwgV01fQ09NTUFORCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1BS0VXUEFSQU0oIEdldFdpbmRvd0xvbmdQdHJXKGh3bmQsR1dM
UF9JRCksIFNUTl9FTkFCTEUgKSwgKExQQVJBTSlod25kKTsNCiAgICAgICAgICAgIGVsc2UNCiAg
ICAgICAgICAgICAgICBTZW5kTWVzc2FnZVcoIEdldFBhcmVudChod25kKSwgV01fQ09NTUFORCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BS0VXUEFSQU0oIEdldFdpbmRvd0xvbmdQ
dHJXKGh3bmQsR1dMUF9JRCksIFNUTl9ESVNBQkxFICksIChMUEFSQU0paHduZCk7DQogICAgICAg
IH0NCiAgICAgICAgYnJlYWs7DQoNCiAgICBjYXNlIFdNX1NZU0NPTE9SQ0hBTkdFOg0KICAgICAg
ICBDT01DVEwzMl9SZWZyZXNoU3lzQ29sb3JzKCk7DQogICAgICAgIFNUQVRJQ19UcnlQYWludEZj
biggaHduZCwgZnVsbF9zdHlsZSApOw0KICAgICAgICBicmVhazsNCg0KICAgIGNhc2UgV01fTkND
UkVBVEU6DQogICAgICAgIHsNCiAgICAgICAgICAgIENSRUFURVNUUlVDVFcgKmNzID0gKENSRUFU
RVNUUlVDVFcgKilsUGFyYW07DQoNCiAgICAgICAgICAgIGlmIChmdWxsX3N0eWxlICYgU1NfU1VO
S0VOKQ0KICAgICAgICAgICAgICAgIFNldFdpbmRvd0xvbmdXKCBod25kLCBHV0xfRVhTVFlMRSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0V2luZG93TG9uZ1coIGh3bmQsIEdX
TF9FWFNUWUxFICkgfCBXU19FWF9TVEFUSUNFREdFICk7DQoNCiAgICAgICAgICAgIHN3aXRjaCAo
c3R5bGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICBjYXNlIFNTX0lDT046DQogICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBISUNPTiBoSWNvbjsNCg0KICAgICAgICAg
ICAgICAgICAgICBoSWNvbiA9IFNUQVRJQ19Mb2FkSWNvblcoY3MtPmhJbnN0YW5jZSwgY3MtPmxw
c3pOYW1lLCBmdWxsX3N0eWxlKTsNCiAgICAgICAgICAgICAgICAgICAgU1RBVElDX1NldEljb24o
aHduZCwgaEljb24sIGZ1bGxfc3R5bGUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgU1NfQklUTUFQOg0KICAgICAgICAgICAgICAg
IGlmICgoVUxPTkdfUFRSKWNzLT5oSW5zdGFuY2UgPj4gMTYpDQogICAgICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgICAgICBIQklUTUFQIGhCaXRtYXA7DQogICAgICAgICAgICAgICAgICAg
IGhCaXRtYXAgPSBMb2FkQml0bWFwVyhjcy0+aEluc3RhbmNlLCBjcy0+bHBzek5hbWUpOw0KICAg
ICAgICAgICAgICAgICAgICBTVEFUSUNfU2V0Qml0bWFwKGh3bmQsIGhCaXRtYXAsIGZ1bGxfc3R5
bGUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIC8qIFNTX0VOSE1FVEFGSUxFOiBEZXNwaXRlIHdoYXQgTVNETiBz
YXlzLCBXaW5kb3dzIGRvZXMgbm90IGxvYWQNCiAgICAgICAgICAgICAgIHRoZSBlbmhhbmNlZCBt
ZXRhZmlsZSB0aGF0IHdhcyBzcGVjaWZpZWQgYXMgdGhlIHdpbmRvdyB0ZXh0LiAqLw0KICAgICAg
ICB9DQogICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jVyhod25kLCB1TXNnLCB3UGFyYW0sIGxQ
YXJhbSk7DQoNCiAgICBjYXNlIFdNX1NFVFRFWFQ6DQogICAgICAgIGlmIChoYXNUZXh0U3R5bGUo
IGZ1bGxfc3R5bGUgKSkNCiAgICAgICAgew0KICAgICAgICAgICAgbFJlc3VsdCA9IERlZldpbmRv
d1Byb2NXKCBod25kLCB1TXNnLCB3UGFyYW0sIGxQYXJhbSApOw0KICAgICAgICAgICAgU1RBVElD
X1RyeVBhaW50RmNuKCBod25kLCBmdWxsX3N0eWxlICk7DQogICAgICAgIH0NCiAgICAgICAgYnJl
YWs7DQoNCiAgICBjYXNlIFdNX1NFVEZPTlQ6DQogICAgICAgIGlmIChoYXNUZXh0U3R5bGUoIGZ1
bGxfc3R5bGUgKSkNCiAgICAgICAgew0KICAgICAgICAgICAgU2V0V2luZG93TG9uZ1B0clcoIGh3
bmQsIEhGT05UX0dXTF9PRkZTRVQsIHdQYXJhbSApOw0KICAgICAgICAgICAgaWYgKExPV09SRChs
UGFyYW0pKQ0KICAgICAgICAgICAgICAgIFJlZHJhd1dpbmRvdyggaHduZCwgTlVMTCwgMCwgUkRX
X0lOVkFMSURBVEUgfCBSRFdfRVJBU0UgfCBSRFdfVVBEQVRFTk9XIHwgUkRXX0FMTENISUxEUkVO
ICk7DQogICAgICAgIH0NCiAgICAgICAgYnJlYWs7DQoNCiAgICBjYXNlIFdNX0dFVEZPTlQ6DQog
ICAgICAgIHJldHVybiBHZXRXaW5kb3dMb25nUHRyVyggaHduZCwgSEZPTlRfR1dMX09GRlNFVCAp
Ow0KDQogICAgY2FzZSBXTV9OQ0hJVFRFU1Q6DQogICAgICAgIGlmIChmdWxsX3N0eWxlICYgU1Nf
Tk9USUZZKQ0KICAgICAgICAgICByZXR1cm4gSFRDTElFTlQ7DQogICAgICAgIGVsc2UNCiAgICAg
ICAgICAgcmV0dXJuIEhUVFJBTlNQQVJFTlQ7DQoNCiAgICBjYXNlIFdNX0dFVERMR0NPREU6DQog
ICAgICAgIHJldHVybiBETEdDX1NUQVRJQzsNCg0KICAgIGNhc2UgV01fTEJVVFRPTkRPV046DQog
ICAgY2FzZSBXTV9OQ0xCVVRUT05ET1dOOg0KICAgICAgICBpZiAoZnVsbF9zdHlsZSAmIFNTX05P
VElGWSkNCiAgICAgICAgICAgIFNlbmRNZXNzYWdlVyggR2V0UGFyZW50KGh3bmQpLCBXTV9DT01N
QU5ELA0KICAgICAgICAgICAgICAgICAgICAgICAgICBNQUtFV1BBUkFNKCBHZXRXaW5kb3dMb25n
UHRyVyhod25kLEdXTFBfSUQpLCBTVE5fQ0xJQ0tFRCApLCAoTFBBUkFNKWh3bmQpOw0KICAgICAg
ICByZXR1cm4gMDsNCg0KICAgIGNhc2UgV01fTEJVVFRPTkRCTENMSzoNCiAgICBjYXNlIFdNX05D
TEJVVFRPTkRCTENMSzoNCiAgICAgICAgaWYgKGZ1bGxfc3R5bGUgJiBTU19OT1RJRlkpDQogICAg
ICAgICAgICBTZW5kTWVzc2FnZVcoIEdldFBhcmVudChod25kKSwgV01fQ09NTUFORCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgTUFLRVdQQVJBTSggR2V0V2luZG93TG9uZ1B0clcoaHduZCxH
V0xQX0lEKSwgU1ROX0RCTENMSyApLCAoTFBBUkFNKWh3bmQpOw0KICAgICAgICByZXR1cm4gMDsN
Cg0KICAgIGNhc2UgU1RNX0dFVElNQUdFOg0KICAgICAgICByZXR1cm4gKExSRVNVTFQpU1RBVElD
X0dldEltYWdlKCBod25kLCB3UGFyYW0sIGZ1bGxfc3R5bGUgKTsNCg0KICAgIGNhc2UgU1RNX0dF
VElDT046DQogICAgICAgIHJldHVybiAoTFJFU1VMVClTVEFUSUNfR2V0SW1hZ2UoIGh3bmQsIElN
QUdFX0lDT04sIGZ1bGxfc3R5bGUgKTsNCg0KICAgIGNhc2UgU1RNX1NFVElNQUdFOg0KICAgICAg
ICBzd2l0Y2ggKHdQYXJhbSkNCiAgICAgICAgew0KICAgICAgICBjYXNlIElNQUdFX0JJVE1BUDoN
CiAgICAgICAgICAgIGxSZXN1bHQgPSAoTFJFU1VMVClTVEFUSUNfU2V0Qml0bWFwKCBod25kLCAo
SEJJVE1BUClsUGFyYW0sIGZ1bGxfc3R5bGUgKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAg
ICBjYXNlIElNQUdFX0VOSE1FVEFGSUxFOg0KICAgICAgICAgICAgbFJlc3VsdCA9IChMUkVTVUxU
KVNUQVRJQ19TZXRFbmhNZXRhRmlsZSggaHduZCwgKEhFTkhNRVRBRklMRSlsUGFyYW0sIGZ1bGxf
c3R5bGUgKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIElNQUdFX0lDT046DQog
ICAgICAgIGNhc2UgSU1BR0VfQ1VSU09SOg0KICAgICAgICAgICAgbFJlc3VsdCA9IChMUkVTVUxU
KVNUQVRJQ19TZXRJY29uKCBod25kLCAoSElDT04pbFBhcmFtLCBmdWxsX3N0eWxlICk7DQogICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIEZJWE1FKCJTVE1f
U0VUSU1BR0U6IFVuaGFuZGxlZCB0eXBlICVseFxuIiwgd1BhcmFtKTsNCiAgICAgICAgICAgIGJy
ZWFrOw0KICAgICAgICB9DQogICAgICAgIFNUQVRJQ19UcnlQYWludEZjbiggaHduZCwgZnVsbF9z
dHlsZSApOw0KICAgICAgICBicmVhazsNCg0KICAgIGNhc2UgU1RNX1NFVElDT046DQogICAgICAg
IGxSZXN1bHQgPSAoTFJFU1VMVClTVEFUSUNfU2V0SWNvbiggaHduZCwgKEhJQ09OKXdQYXJhbSwg
ZnVsbF9zdHlsZSApOw0KICAgICAgICBTVEFUSUNfVHJ5UGFpbnRGY24oIGh3bmQsIGZ1bGxfc3R5
bGUgKTsNCiAgICAgICAgYnJlYWs7DQoNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gRGVm
V2luZG93UHJvY1coaHduZCwgdU1zZywgd1BhcmFtLCBsUGFyYW0pOw0KICAgIH0NCiAgICByZXR1
cm4gbFJlc3VsdDsNCn0NCg0Kc3RhdGljIHZvaWQgU1RBVElDX1BhaW50T3duZXJEcmF3Zm4oIEhX
TkQgaHduZCwgSERDIGhkYywgRFdPUkQgc3R5bGUgKQ0Kew0KICAgIERSQVdJVEVNU1RSVUNUIGRp
czsNCiAgICBIRk9OVCBmb250LCBvbGRGb250ID0gTlVMTDsNCiAgICBVSU5UIGlkID0gKFVJTlQp
R2V0V2luZG93TG9uZ1B0clcoIGh3bmQsIEdXTFBfSUQgKTsNCg0KICAgIGRpcy5DdGxUeXBlICAg
ID0gT0RUX1NUQVRJQzsNCiAgICBkaXMuQ3RsSUQgICAgICA9IGlkOw0KICAgIGRpcy5pdGVtSUQg
ICAgID0gMDsNCiAgICBkaXMuaXRlbUFjdGlvbiA9IE9EQV9EUkFXRU5USVJFOw0KICAgIGRpcy5p
dGVtU3RhdGUgID0gSXNXaW5kb3dFbmFibGVkKGh3bmQpID8gMCA6IE9EU19ESVNBQkxFRDsNCiAg
ICBkaXMuaHduZEl0ZW0gICA9IGh3bmQ7DQogICAgZGlzLmhEQyAgICAgICAgPSBoZGM7DQogICAg
ZGlzLml0ZW1EYXRhICAgPSAwOw0KICAgIEdldENsaWVudFJlY3QoIGh3bmQsICZkaXMucmNJdGVt
ICk7DQoNCiAgICBmb250ID0gKEhGT05UKUdldFdpbmRvd0xvbmdQdHJXKCBod25kLCBIRk9OVF9H
V0xfT0ZGU0VUICk7DQogICAgaWYgKGZvbnQpIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoIGhkYywg
Zm9udCApOw0KICAgIFNlbmRNZXNzYWdlVyggR2V0UGFyZW50KGh3bmQpLCBXTV9DVExDT0xPUlNU
QVRJQywgKFdQQVJBTSloZGMsIChMUEFSQU0paHduZCApOw0KICAgIFNlbmRNZXNzYWdlVyggR2V0
UGFyZW50KGh3bmQpLCBXTV9EUkFXSVRFTSwgaWQsIChMUEFSQU0pJmRpcyApOw0KICAgIGlmIChm
b250KSBTZWxlY3RPYmplY3QoIGhkYywgb2xkRm9udCApOw0KfQ0KDQpzdGF0aWMgdm9pZCBTVEFU
SUNfUGFpbnRUZXh0Zm4oIEhXTkQgaHduZCwgSERDIGhkYywgRFdPUkQgc3R5bGUgKQ0Kew0KICAg
IFJFQ1QgcmM7DQogICAgSEJSVVNIIGhCcnVzaDsNCiAgICBIRk9OVCBoRm9udCwgaE9sZEZvbnQg
PSBOVUxMOw0KICAgIFVJTlQgZm9ybWF0Ow0KICAgIElOVCBsZW4sIGJ1Zl9zaXplOw0KICAgIFdD
SEFSICp0ZXh0Ow0KDQogICAgR2V0Q2xpZW50UmVjdCggaHduZCwgJnJjKTsNCg0KICAgIHN3aXRj
aCAoc3R5bGUgJiBTU19UWVBFTUFTSykNCiAgICB7DQogICAgY2FzZSBTU19MRUZUOg0KICAgICAg
ICBmb3JtYXQgPSBEVF9MRUZUIHwgRFRfRVhQQU5EVEFCUyB8IERUX1dPUkRCUkVBSzsNCiAgICAg
ICAgYnJlYWs7DQoNCiAgICBjYXNlIFNTX0NFTlRFUjoNCiAgICAgICAgZm9ybWF0ID0gRFRfQ0VO
VEVSIHwgRFRfRVhQQU5EVEFCUyB8IERUX1dPUkRCUkVBSzsNCiAgICAgICAgYnJlYWs7DQoNCiAg
ICBjYXNlIFNTX1JJR0hUOg0KICAgICAgICBmb3JtYXQgPSBEVF9SSUdIVCB8IERUX0VYUEFORFRB
QlMgfCBEVF9XT1JEQlJFQUs7DQogICAgICAgIGJyZWFrOw0KDQogICAgY2FzZSBTU19TSU1QTEU6
DQogICAgICAgIGZvcm1hdCA9IERUX0xFRlQgfCBEVF9TSU5HTEVMSU5FOw0KICAgICAgICBicmVh
azsNCg0KICAgIGNhc2UgU1NfTEVGVE5PV09SRFdSQVA6DQogICAgICAgIGZvcm1hdCA9IERUX0xF
RlQgfCBEVF9FWFBBTkRUQUJTOw0KICAgICAgICBicmVhazsNCg0KICAgIGRlZmF1bHQ6DQogICAg
ICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBpZiAoR2V0V2luZG93TG9uZ1coIGh3bmQsIEdXTF9F
WFNUWUxFICkgJiBXU19FWF9SSUdIVCkNCiAgICAgICAgZm9ybWF0ID0gRFRfUklHSFQgfCAoZm9y
bWF0ICYgfihEVF9MRUZUIHwgRFRfQ0VOVEVSKSk7DQoNCiAgICBpZiAoc3R5bGUgJiBTU19OT1BS
RUZJWCkNCiAgICAgICAgZm9ybWF0IHw9IERUX05PUFJFRklYOw0KDQogICAgaWYgKChzdHlsZSAm
IFNTX1RZUEVNQVNLKSAhPSBTU19TSU1QTEUpDQogICAgew0KICAgICAgICBpZiAoc3R5bGUgJiBT
U19DRU5URVJJTUFHRSkNCiAgICAgICAgICAgIGZvcm1hdCB8PSBEVF9TSU5HTEVMSU5FIHwgRFRf
VkNFTlRFUjsNCiAgICAgICAgaWYgKHN0eWxlICYgU1NfRURJVENPTlRST0wpDQogICAgICAgICAg
ICBmb3JtYXQgfD0gRFRfRURJVENPTlRST0w7DQogICAgICAgIGlmIChzdHlsZSAmIFNTX0VOREVM
TElQU0lTKQ0KICAgICAgICAgICAgZm9ybWF0IHw9IERUX1NJTkdMRUxJTkUgfCBEVF9FTkRfRUxM
SVBTSVM7DQogICAgICAgIGlmIChzdHlsZSAmIFNTX1BBVEhFTExJUFNJUykNCiAgICAgICAgICAg
IGZvcm1hdCB8PSBEVF9TSU5HTEVMSU5FIHwgRFRfUEFUSF9FTExJUFNJUzsNCiAgICAgICAgaWYg
KHN0eWxlICYgU1NfV09SREVMTElQU0lTKQ0KICAgICAgICAgICAgZm9ybWF0IHw9IERUX1NJTkdM
RUxJTkUgfCBEVF9XT1JEX0VMTElQU0lTOw0KICAgIH0NCg0KICAgIGlmICgoaEZvbnQgPSAoSEZP
TlQpR2V0V2luZG93TG9uZ1B0clcoIGh3bmQsIEhGT05UX0dXTF9PRkZTRVQgKSkpDQogICAgICAg
IGhPbGRGb250ID0gU2VsZWN0T2JqZWN0KCBoZGMsIGhGb250ICk7DQoNCiAgICAvKiBTU19TSU1Q
TEUgY29udHJvbHM6IFdNX0NUTENPTE9SU1RBVElDIGlzIHNlbnQsIGJ1dCB0aGUgcmV0dXJuZWQN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJydXNoIGlzIG5vdCB1c2VkICovDQogICAgaEJy
dXNoID0gU1RBVElDX1NlbmRXbUN0bENvbG9yU3RhdGljKGh3bmQsIGhkYyk7DQoNCiAgICBpZiAo
KHN0eWxlICYgU1NfVFlQRU1BU0spICE9IFNTX1NJTVBMRSkNCiAgICB7DQogICAgICAgIEZpbGxS
ZWN0KCBoZGMsICZyYywgaEJydXNoICk7DQogICAgICAgIGlmICghSXNXaW5kb3dFbmFibGVkKGh3
bmQpKSBTZXRUZXh0Q29sb3IoaGRjLCBHZXRTeXNDb2xvcihDT0xPUl9HUkFZVEVYVCkpOw0KICAg
IH0NCg0KICAgIGJ1Zl9zaXplID0gMjU2Ow0KICAgIGlmICghKHRleHQgPSBIZWFwQWxsb2MoIEdl
dFByb2Nlc3NIZWFwKCksIDAsIGJ1Zl9zaXplICogc2l6ZW9mKFdDSEFSKSApKSkNCiAgICAgICAg
Z290byBub19UZXh0T3V0Ow0KDQogICAgd2hpbGUgKChsZW4gPSBJbnRlcm5hbEdldFdpbmRvd1Rl
eHQoIGh3bmQsIHRleHQsIGJ1Zl9zaXplICkpID09IGJ1Zl9zaXplIC0gMSkNCiAgICB7DQogICAg
ICAgIGJ1Zl9zaXplICo9IDI7DQogICAgICAgIGlmICghKHRleHQgPSBIZWFwUmVBbGxvYyggR2V0
UHJvY2Vzc0hlYXAoKSwgMCwgdGV4dCwgYnVmX3NpemUgKiBzaXplb2YoV0NIQVIpICkpKQ0KICAg
ICAgICAgICAgZ290byBub19UZXh0T3V0Ow0KICAgIH0NCg0KICAgIGlmICghbGVuKSBnb3RvIG5v
X1RleHRPdXQ7DQoNCiAgICBpZiAoKChzdHlsZSAmIFNTX1RZUEVNQVNLKSA9PSBTU19TSU1QTEUp
ICYmIChzdHlsZSAmIFNTX05PUFJFRklYKSkNCiAgICB7DQogICAgICAgIC8qIFdpbmRvd3MgdXNl
cyB0aGUgZmFzdGVyIEV4dFRleHRPdXQoKSB0byBkcmF3IHRoZSB0ZXh0IGFuZA0KICAgICAgICAg
ICB0byBwYWludCB0aGUgd2hvbGUgY2xpZW50IHJlY3RhbmdsZSB3aXRoIHRoZSB0ZXh0IGJhY2tn
cm91bmQNCiAgICAgICAgICAgY29sb3IuIFJlZmVyZW5jZTogIlN0YXRpYyBDb250cm9scyIgYnkg
S3lsZSBNYXJzaCwgMTk5MiAqLw0KICAgICAgICBFeHRUZXh0T3V0VyggaGRjLCByYy5sZWZ0LCBy
Yy50b3AsIEVUT19DTElQUEVEIHwgRVRPX09QQVFVRSwNCiAgICAgICAgICAgICAgICAgICAgICZy
YywgdGV4dCwgbGVuLCBOVUxMICk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIERy
YXdUZXh0VyggaGRjLCB0ZXh0LCAtMSwgJnJjLCBmb3JtYXQgKTsNCiAgICB9DQoNCm5vX1RleHRP
dXQ6DQogICAgSGVhcEZyZWUoIEdldFByb2Nlc3NIZWFwKCksIDAsIHRleHQgKTsNCg0KICAgIGlm
IChoRm9udCkNCiAgICAgICAgU2VsZWN0T2JqZWN0KCBoZGMsIGhPbGRGb250ICk7DQp9DQoNCnN0
YXRpYyB2b2lkIFNUQVRJQ19QYWludFJlY3RmbiggSFdORCBod25kLCBIREMgaGRjLCBEV09SRCBz
dHlsZSApDQp7DQogICAgUkVDVCByYzsNCiAgICBIQlJVU0ggaEJydXNoOw0KDQogICAgR2V0Q2xp
ZW50UmVjdCggaHduZCwgJnJjKTsNCg0KICAgIC8qIEZJWE1FOiBzZW5kIFdNX0NUTENPTE9SU1RB
VElDICovDQogICAgc3dpdGNoIChzdHlsZSAmIFNTX1RZUEVNQVNLKQ0KICAgIHsNCiAgICBjYXNl
IFNTX0JMQUNLUkVDVDoNCiAgICAgICAgaEJydXNoID0gQ3JlYXRlU29saWRCcnVzaChjb21jdGwz
Ml9jb2xvci5jbHIzZERrU2hhZG93KTsNCiAgICAgICAgRmlsbFJlY3QoIGhkYywgJnJjLCBoQnJ1
c2ggKTsNCiAgICAgICAgYnJlYWs7DQogICAgY2FzZSBTU19HUkFZUkVDVDoNCiAgICAgICAgaEJy
dXNoID0gQ3JlYXRlU29saWRCcnVzaChjb21jdGwzMl9jb2xvci5jbHIzZFNoYWRvdyk7DQogICAg
ICAgIEZpbGxSZWN0KCBoZGMsICZyYywgaEJydXNoICk7DQogICAgICAgIGJyZWFrOw0KICAgIGNh
c2UgU1NfV0hJVEVSRUNUOg0KICAgICAgICBoQnJ1c2ggPSBDcmVhdGVTb2xpZEJydXNoKGNvbWN0
bDMyX2NvbG9yLmNscjNkSGlsaWdodCk7DQogICAgICAgIEZpbGxSZWN0KCBoZGMsICZyYywgaEJy
dXNoICk7DQogICAgICAgIGJyZWFrOw0KICAgIGNhc2UgU1NfQkxBQ0tGUkFNRToNCiAgICAgICAg
aEJydXNoID0gQ3JlYXRlU29saWRCcnVzaChjb21jdGwzMl9jb2xvci5jbHIzZERrU2hhZG93KTsN
CiAgICAgICAgRnJhbWVSZWN0KCBoZGMsICZyYywgaEJydXNoICk7DQogICAgICAgIGJyZWFrOw0K
ICAgIGNhc2UgU1NfR1JBWUZSQU1FOg0KICAgICAgICBoQnJ1c2ggPSBDcmVhdGVTb2xpZEJydXNo
KGNvbWN0bDMyX2NvbG9yLmNscjNkU2hhZG93KTsNCiAgICAgICAgRnJhbWVSZWN0KCBoZGMsICZy
YywgaEJydXNoICk7DQogICAgICAgIGJyZWFrOw0KICAgIGNhc2UgU1NfV0hJVEVGUkFNRToNCiAg
ICAgICAgaEJydXNoID0gQ3JlYXRlU29saWRCcnVzaChjb21jdGwzMl9jb2xvci5jbHIzZEhpbGln
aHQpOw0KICAgICAgICBGcmFtZVJlY3QoIGhkYywgJnJjLCBoQnJ1c2ggKTsNCiAgICAgICAgYnJl
YWs7DQogICAgZGVmYXVsdDoNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICBEZWxldGVPYmpl
Y3QoIGhCcnVzaCApOw0KfQ0KDQoNCnN0YXRpYyB2b2lkIFNUQVRJQ19QYWludEljb25mbiggSFdO
RCBod25kLCBIREMgaGRjLCBEV09SRCBzdHlsZSApDQp7DQogICAgUkVDVCByYywgaWNvblJlY3Q7
DQogICAgSEJSVVNIIGhicnVzaDsNCiAgICBISUNPTiBoSWNvbjsNCiAgICBTSVpFIHNpemU7DQoN
CiAgICBHZXRDbGllbnRSZWN0KCBod25kLCAmcmMgKTsNCiAgICBoYnJ1c2ggPSBTVEFUSUNfU2Vu
ZFdtQ3RsQ29sb3JTdGF0aWMoaHduZCwgaGRjKTsNCiAgICBoSWNvbiA9IChISUNPTilHZXRXaW5k
b3dMb25nUHRyVyggaHduZCwgSElDT05fR1dMX09GRlNFVCApOw0KICAgIGlmICghaEljb24gfHwg
IWdldF9pY29uX3NpemUoIGhJY29uLCAmc2l6ZSApKQ0KICAgIHsNCiAgICAgICAgRmlsbFJlY3Qo
aGRjLCAmcmMsIGhicnVzaCk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIGlmIChz
dHlsZSAmIFNTX0NFTlRFUklNQUdFKQ0KICAgICAgICB7DQogICAgICAgICAgICBpY29uUmVjdC5s
ZWZ0ID0gKHJjLnJpZ2h0IC0gcmMubGVmdCkgLyAyIC0gc2l6ZS5jeCAvIDI7DQogICAgICAgICAg
ICBpY29uUmVjdC50b3AgPSAocmMuYm90dG9tIC0gcmMudG9wKSAvIDIgLSBzaXplLmN5IC8gMjsN
CiAgICAgICAgICAgIGljb25SZWN0LnJpZ2h0ID0gaWNvblJlY3QubGVmdCArIHNpemUuY3g7DQog
ICAgICAgICAgICBpY29uUmVjdC5ib3R0b20gPSBpY29uUmVjdC50b3AgKyBzaXplLmN5Ow0KICAg
ICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIGljb25SZWN0ID0gcmM7DQogICAgICAg
IEZpbGxSZWN0KCBoZGMsICZyYywgaGJydXNoICk7DQogICAgICAgIERyYXdJY29uRXgoIGhkYywg
aWNvblJlY3QubGVmdCwgaWNvblJlY3QudG9wLCBoSWNvbiwgaWNvblJlY3QucmlnaHQgLSBpY29u
UmVjdC5sZWZ0LA0KICAgICAgICAgICAgICAgICAgICBpY29uUmVjdC5ib3R0b20gLSBpY29uUmVj
dC50b3AsIDAsIE5VTEwsIERJX05PUk1BTCApOw0KICAgIH0NCn0NCg0Kc3RhdGljIHZvaWQgU1RB
VElDX1BhaW50Qml0bWFwZm4oSFdORCBod25kLCBIREMgaGRjLCBEV09SRCBzdHlsZSApDQp7DQog
ICAgSERDIGhNZW1EQzsNCiAgICBIQklUTUFQIGhCaXRtYXAsIG9sZGJpdG1hcDsNCiAgICBIQlJV
U0ggaGJydXNoOw0KDQogICAgLyogbWVzc2FnZSBpcyBzdGlsbCBzZW50LCBldmVuIGlmIHRoZSBy
ZXR1cm5lZCBicnVzaCBpcyBub3QgdXNlZCAqLw0KICAgIGhicnVzaCA9IFNUQVRJQ19TZW5kV21D
dGxDb2xvclN0YXRpYyhod25kLCBoZGMpOw0KDQogICAgaWYgKChoQml0bWFwID0gKEhCSVRNQVAp
R2V0V2luZG93TG9uZ1B0clcoIGh3bmQsIEhJQ09OX0dXTF9PRkZTRVQgKSkNCiAgICAgICAgICYm
IChHZXRPYmplY3RUeXBlKGhCaXRtYXApID09IE9CSl9CSVRNQVApDQogICAgICAgICAmJiAoaE1l
bURDID0gQ3JlYXRlQ29tcGF0aWJsZURDKCBoZGMgKSkpDQogICAgew0KICAgICAgICBCSVRNQVAg
Ym07DQogICAgICAgIFJFQ1QgcmNDbGllbnQ7DQogICAgICAgIExPR0JSVVNIIGJydXNoOw0KDQog
ICAgICAgIEdldE9iamVjdFcoaEJpdG1hcCwgc2l6ZW9mKGJtKSwgJmJtKTsNCiAgICAgICAgb2xk
Yml0bWFwID0gU2VsZWN0T2JqZWN0KGhNZW1EQywgaEJpdG1hcCk7DQoNCiAgICAgICAgLyogU2V0
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBtb25vY2hyb21lIGJpdG1hcHMNCiAgICAgICAgICAg
dG8gdGhlIGNvbG9yIG9mIHRoZSBiYWNrZ3JvdW5kIGJydXNoICovDQogICAgICAgIGlmIChHZXRP
YmplY3RXKCBoYnJ1c2gsIHNpemVvZihicnVzaCksICZicnVzaCApKQ0KICAgICAgICB7DQogICAg
ICAgICAgICBpZiAoYnJ1c2gubGJTdHlsZSA9PSBCU19TT0xJRCkNCiAgICAgICAgICAgICAgICBT
ZXRCa0NvbG9yKGhkYywgYnJ1c2gubGJDb2xvcik7DQogICAgICAgIH0NCiAgICAgICAgR2V0Q2xp
ZW50UmVjdChod25kLCAmcmNDbGllbnQpOw0KICAgICAgICBpZiAoc3R5bGUgJiBTU19DRU5URVJJ
TUFHRSkNCiAgICAgICAgew0KICAgICAgICAgICAgRmlsbFJlY3QoIGhkYywgJnJjQ2xpZW50LCBo
YnJ1c2ggKTsNCiAgICAgICAgICAgIHJjQ2xpZW50LmxlZnQgPSAocmNDbGllbnQucmlnaHQgLSBy
Y0NsaWVudC5sZWZ0KS8yIC0gYm0uYm1XaWR0aC8yOw0KICAgICAgICAgICAgcmNDbGllbnQudG9w
ID0gKHJjQ2xpZW50LmJvdHRvbSAtIHJjQ2xpZW50LnRvcCkvMiAtIGJtLmJtSGVpZ2h0LzI7DQog
ICAgICAgICAgICByY0NsaWVudC5yaWdodCA9IHJjQ2xpZW50LmxlZnQgKyBibS5ibVdpZHRoOw0K
ICAgICAgICAgICAgcmNDbGllbnQuYm90dG9tID0gcmNDbGllbnQudG9wICsgYm0uYm1IZWlnaHQ7
DQogICAgICAgIH0NCiAgICAgICAgU3RyZXRjaEJsdChoZGMsIHJjQ2xpZW50LmxlZnQsIHJjQ2xp
ZW50LnRvcCwgcmNDbGllbnQucmlnaHQgLSByY0NsaWVudC5sZWZ0LA0KICAgICAgICAgICAgICAg
ICAgIHJjQ2xpZW50LmJvdHRvbSAtIHJjQ2xpZW50LnRvcCwgaE1lbURDLA0KICAgICAgICAgICAg
ICAgICAgIDAsIDAsIGJtLmJtV2lkdGgsIGJtLmJtSGVpZ2h0LCBTUkNDT1BZKTsNCiAgICAgICAg
U2VsZWN0T2JqZWN0KGhNZW1EQywgb2xkYml0bWFwKTsNCiAgICAgICAgRGVsZXRlREMoaE1lbURD
KTsNCiAgICB9DQp9DQoNCnN0YXRpYyB2b2lkIFNUQVRJQ19QYWludEVuaE1ldGFmbihIV05EIGh3
bmQsIEhEQyBoZGMsIERXT1JEIHN0eWxlICkNCnsNCiAgICBIRU5ITUVUQUZJTEUgaEVuaE1ldGFG
aWxlOw0KICAgIFJFQ1QgcmM7DQogICAgSEJSVVNIIGhicnVzaDsNCg0KICAgIEdldENsaWVudFJl
Y3QoaHduZCwgJnJjKTsNCiAgICBoYnJ1c2ggPSBTVEFUSUNfU2VuZFdtQ3RsQ29sb3JTdGF0aWMo
aHduZCwgaGRjKTsNCiAgICBGaWxsUmVjdChoZGMsICZyYywgaGJydXNoKTsNCiAgICBpZiAoKGhF
bmhNZXRhRmlsZSA9IChIRU5ITUVUQUZJTEUpR2V0V2luZG93TG9uZ1B0clcoIGh3bmQsIEhJQ09O
X0dXTF9PRkZTRVQgKSkpDQogICAgew0KICAgICAgICAvKiBUaGUgY29udHJvbCdzIGN1cnJlbnQg
Zm9udCBpcyBub3Qgc2VsZWN0ZWQgaW50byB0aGUNCiAgICAgICAgICAgZGV2aWNlIGNvbnRleHQh
ICovDQogICAgICAgIGlmIChHZXRPYmplY3RUeXBlKGhFbmhNZXRhRmlsZSkgPT0gT0JKX0VOSE1F
VEFGSUxFKQ0KICAgICAgICAgICAgUGxheUVuaE1ldGFGaWxlKGhkYywgaEVuaE1ldGFGaWxlLCAm
cmMpOw0KICAgIH0NCn0NCg0Kc3RhdGljIHZvaWQgU1RBVElDX1BhaW50RXRjaGVkZm4oIEhXTkQg
aHduZCwgSERDIGhkYywgRFdPUkQgc3R5bGUgKQ0Kew0KICAgIFJFQ1QgcmM7DQoNCiAgICAvKiBG
SVhNRTogc29tZXRpbWVzIChub3QgYWx3YXlzKSBzZW5kcyBXTV9DVExDT0xPUlNUQVRJQyAqLw0K
ICAgIEdldENsaWVudFJlY3QoIGh3bmQsICZyYyApOw0KICAgIHN3aXRjaCAoc3R5bGUgJiBTU19U
WVBFTUFTSykNCiAgICB7DQogICAgY2FzZSBTU19FVENIRURIT1JaOg0KICAgICAgICBEcmF3RWRn
ZShoZGMsICZyYywgRURHRV9FVENIRUQsIEJGX1RPUCB8IEJGX0JPVFRPTSk7DQogICAgICAgIGJy
ZWFrOw0KICAgIGNhc2UgU1NfRVRDSEVEVkVSVDoNCiAgICAgICAgRHJhd0VkZ2UoaGRjLCAmcmMs
IEVER0VfRVRDSEVELCBCRl9MRUZUIHwgQkZfUklHSFQpOw0KICAgICAgICBicmVhazsNCiAgICBj
YXNlIFNTX0VUQ0hFREZSQU1FOg0KICAgICAgICBEcmF3RWRnZShoZGMsICZyYywgRURHRV9FVENI
RUQsIEJGX1JFQ1QpOw0KICAgICAgICBicmVhazsNCiAgICB9DQp9DQoNCnZvaWQgU1RBVElDX1Jl
Z2lzdGVyKHZvaWQpDQp7DQogICAgV05EQ0xBU1NXIHduZENsYXNzOw0KDQogICAgbWVtc2V0KCZ3
bmRDbGFzcywgMCwgc2l6ZW9mKHduZENsYXNzKSk7DQogICAgd25kQ2xhc3Muc3R5bGUgPSBDU19E
QkxDTEtTIHwgQ1NfUEFSRU5UREMgfCBDU19HTE9CQUxDTEFTUzsNCiAgICB3bmRDbGFzcy5scGZu
V25kUHJvYyA9IFNUQVRJQ19XaW5kb3dQcm9jOw0KICAgIHduZENsYXNzLmNiQ2xzRXh0cmEgPSAw
Ow0KICAgIHduZENsYXNzLmNiV25kRXh0cmEgPSBTVEFUSUNfRVhUUkFfQllURVM7DQogICAgd25k
Q2xhc3MuaEN1cnNvciA9IExvYWRDdXJzb3JXKDAsIChMUFdTVFIpSURDX0FSUk9XKTsNCiAgICB3
bmRDbGFzcy5oYnJCYWNrZ3JvdW5kID0gTlVMTDsNCiAgICB3bmRDbGFzcy5scHN6Q2xhc3NOYW1l
ID0gV0NfU1RBVElDVzsNCiAgICBSZWdpc3RlckNsYXNzVygmd25kQ2xhc3MpOw0KfQ0KDQojaWZk
ZWYgX19SRUFDVE9TX18NCnZvaWQgU1RBVElDX1VucmVnaXN0ZXIodm9pZCkNCnsNCiAgICBVbnJl
Z2lzdGVyQ2xhc3NXKFdDX1NUQVRJQ1csIE5VTEwpOw0KfQ0KI2VuZGlmDQo=
--_004_VI1PR01MB43367B49286689D3642C8E72DAB40VI1PR01MB4336eurp_--