ITSM-CIAttributeCollection
6.0.2
c.a.p.e. IT GmbH
http://www.cape-it.de/
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007
Bugfix: T2016052390000642 (fixed testing of invalid in all layout files).
CR: updated copyright year; Bugfix: T2016010690000986 (fixed issues with empty Value in Kernel::System::ITSMConfigItem::XML::Type::CIACCustomerCompany), T2014051290000603 (add class after testing of invalid and change param for ItemID), T2016031090000661 (remove important advice from IntroUpgrade).
Bugfix: T2016021190000938 (fixed click bind for add/remove Button for CI-search), T2016021190000536 (JS error when Key contains non-aplhanumeric symbols => added documentation note), T2016011490000621 (improved search for CustomerIDs in CustomerUserCompany), T2016011490000676 (fixed export CustomerIDs in CustomerUserCompany).
CR: T2015082690000571 (added framework 5.0) (tlange).
CR: T2015082690000571 (modifications for framework 5.0;documentation updated).
CR: T2015082690000571 (modifications for framework 5.0).
ITSM-CIAttributeCollection - provides additional CI-attributes.
6.0.x
<br/>
<strong>WELCOME</strong><br/>
<br/>
You are about to install the OTRS module ITSM-CIAttributeCollection. This package provides additional CI-attribute types.<br/>
<br/>
<br/>
<br/>
<strong>Required OTRS Packages:</strong><br/>
<ul>
<li>ITSMConfigurationManagement 6.0.1 or higher</li>
</ul>
<br/>
<br/>
<strong>Additional Required Perl Packages (for some functionality):</strong><br/>
<ul>
<li>Digest::MD5</li>
<li>Encode</li>
</ul>
</ul>
<br/>
<br/>
<strong>Note:</strong><br/>
<ul>
<li>Package installation will overwrite the SysConfig value for Loader::Agent::CommonJS###100-ConfigurationManagement</li>
</ul>
<br/>
<br/>
c.a.p.e. IT ...easy.<br/>
<br/>
<br/>
The package has been installed. Your configuration has been changed<br/>
<br/>
<br/>
<strong>NOTICE</strong>
<br/>
(1) Verify the installation and check your OTRS-SysLog.<br/>
(2) <strong>Please see <i>OTRS_HOME/doc/en/USAGE_CIAttributeCollection.pdf</i> for documentation.</strong><br/>
<br/>
<br/>
<br/>
c.a.p.e. IT ...easy.<br/>
<br/>
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to UNINSTALL the ITSM-CIAttributeCollection extensions package for OTRS. Please keep in mind that any CMDB-information stored with ITSM-CIAttributeCollection specific attribute types are not lost, but cannot be viewed, edited and used anymore.<br/>
<br/>
<br/>
<br/>
c.a.p.e. IT ...easy.<br/>
<br/>
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to upgrade the ITSM-CIAttributeCollection extensions package for OTRS.<br/>
<br/>
<br/>
<strong>Note:</strong><br/>
<ul>
<li>Package update will overwrite the SysConfig value for Loader::Agent::CommonJS###100-ConfigurationManagement</li>
</ul>
<br/>
<br/>
c.a.p.e. IT ...easy.<br/>
<br/>
ITSMConfigurationManagement
Digest::MD5
Encode
$Kernel::OM->Get('var::packagesetup::ITSM_CIAttributeCollection')->CodeInstall();
$Kernel::OM->Get('var::packagesetup::ITSM_CIAttributeCollection')->CodeUpgrade();
$Kernel::OM->Get('var::packagesetup::ITSM_CIAttributeCollection')->CodeUninstall();
$Kernel::OM->Get('var::packagesetup::ITSM_CIAttributeCollection')->CodeReinstall();
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90cnNfcGFja2FnZSB2ZXJz
aW9uPSIxLjEiPgogICAgPE5hbWU+SVRTTS1DSUF0dHJpYnV0ZUNvbGxlY3Rpb248L05hbWU+CiAg
ICA8VmVyc2lvbj42LjAuMjwvVmVyc2lvbj4KICAgIDxWZW5kb3I+Yy5hLnAuZS4gSVQgR21iSDwv
VmVuZG9yPgogICAgPFVSTD5odHRwOi8vd3d3LmNhcGUtaXQuZGUvPC9VUkw+CiAgICA8TGljZW5z
ZT5HTlUgQUZGRVJPIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCBOb3ZlbWJlciAy
MDA3PC9MaWNlbnNlPgogICAgPENoYW5nZUxvZyBWZXJzaW9uPSI1LjAuMyIgRGF0ZT0iMjAxNi0w
OS0xMyAxNToxOTowMSI+QnVnZml4OiBUMjAxNjA1MjM5MDAwMDY0MiAoZml4ZWQgdGVzdGluZyBv
ZiBpbnZhbGlkIGluIGFsbCBsYXlvdXQgZmlsZXMpLjwvQ2hhbmdlTG9nPgogICAgPENoYW5nZUxv
ZyBWZXJzaW9uPSI1LjAuMiIgRGF0ZT0iMjAxNi0wNS0xOCAwOTo0MTo1MSI+Q1I6IHVwZGF0ZWQg
Y29weXJpZ2h0IHllYXI7IEJ1Z2ZpeDogVDIwMTYwMTA2OTAwMDA5ODYgKGZpeGVkIGlzc3VlcyB3
aXRoIGVtcHR5IFZhbHVlIGluIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpU
eXBlOjpDSUFDQ3VzdG9tZXJDb21wYW55KSwgVDIwMTQwNTEyOTAwMDA2MDMgKGFkZCBjbGFzcyBh
ZnRlciB0ZXN0aW5nIG9mIGludmFsaWQgYW5kIGNoYW5nZSBwYXJhbSBmb3IgSXRlbUlEKSwgVDIw
MTYwMzEwOTAwMDA2NjEgKHJlbW92ZSBpbXBvcnRhbnQgYWR2aWNlIGZyb20gSW50cm9VcGdyYWRl
KS48L0NoYW5nZUxvZz4KICAgIDxDaGFuZ2VMb2cgVmVyc2lvbj0iNS4wLjEiIERhdGU9IjIwMTYt
MDItMTIgMTA6MjQ6MDkiPkJ1Z2ZpeDogVDIwMTYwMjExOTAwMDA5MzggKGZpeGVkIGNsaWNrIGJp
bmQgZm9yIGFkZC9yZW1vdmUgQnV0dG9uIGZvciBDSS1zZWFyY2gpLCBUMjAxNjAyMTE5MDAwMDUz
NiAoSlMgZXJyb3Igd2hlbiBLZXkgY29udGFpbnMgbm9uLWFwbGhhbnVtZXJpYyBzeW1ib2xzID0m
Z3Q7IGFkZGVkIGRvY3VtZW50YXRpb24gbm90ZSksIFQyMDE2MDExNDkwMDAwNjIxIChpbXByb3Zl
ZCBzZWFyY2ggZm9yIEN1c3RvbWVySURzIGluIEN1c3RvbWVyVXNlckNvbXBhbnkpLCBUMjAxNjAx
MTQ5MDAwMDY3NiAoZml4ZWQgZXhwb3J0IEN1c3RvbWVySURzIGluIEN1c3RvbWVyVXNlckNvbXBh
bnkpLjwvQ2hhbmdlTG9nPgogICAgPENoYW5nZUxvZyBWZXJzaW9uPSI1LjAuMCIgRGF0ZT0iMjAx
NS0xMS0xNiAxNjowNTo1OSI+Q1I6IFQyMDE1MDgyNjkwMDAwNTcxIChhZGRlZCBmcmFtZXdvcmsg
NS4wKSAodGxhbmdlKS48L0NoYW5nZUxvZz4KICAgIDxDaGFuZ2VMb2cgVmVyc2lvbj0iNC45OS44
MSIgRGF0ZT0iMjAxNS0xMS0wNCAxMjoxMjowOSI+Q1I6IFQyMDE1MDgyNjkwMDAwNTcxIChtb2Rp
ZmljYXRpb25zIGZvciBmcmFtZXdvcmsgNS4wO2RvY3VtZW50YXRpb24gdXBkYXRlZCkuPC9DaGFu
Z2VMb2c+CiAgICA8Q2hhbmdlTG9nIFZlcnNpb249IjQuOTkuODAiIERhdGU9IjIwMTUtMTEtMDMg
MDA6MDA6MTEiPkNSOiBUMjAxNTA4MjY5MDAwMDU3MSAobW9kaWZpY2F0aW9ucyBmb3IgZnJhbWV3
b3JrIDUuMCkuPC9DaGFuZ2VMb2c+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPklUU00tQ0lB
dHRyaWJ1dGVDb2xsZWN0aW9uIC0gcHJvdmlkZXMgYWRkaXRpb25hbCBDSS1hdHRyaWJ1dGVzLjwv
RGVzY3JpcHRpb24+CiAgICA8RnJhbWV3b3JrPjYuMC54PC9GcmFtZXdvcms+CiAgICA8SW50cm9J
bnN0YWxsIExhbmc9ImVuIiBUaXRsZT0iSW5zdGFsbCBJbmZvcm1hdGlvbiIgVHlwZT0icHJlIj4K
ICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAgICZsdDtzdHJvbmcmZ3Q7V0VMQ09NRSZsdDsvc3Ry
b25nJmd0OyZsdDtici8mZ3Q7CiAgICAgICAgJmx0O2JyLyZndDsKICAgICAgICBZb3UgYXJlIGFi
b3V0IHRvIGluc3RhbGwgdGhlIE9UUlMgbW9kdWxlIElUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9u
LiBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYWRkaXRpb25hbCBDSS1hdHRyaWJ1dGUgdHlwZXMuJmx0
O2JyLyZndDsKICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAgICZsdDtici8mZ3Q7CiAgICAgICAg
Jmx0O2JyLyZndDsKICAgICAgICAmbHQ7c3Ryb25nJmd0O1JlcXVpcmVkIE9UUlMgUGFja2FnZXM6
Jmx0Oy9zdHJvbmcmZ3Q7Jmx0O2JyLyZndDsKICAgICAgICAmbHQ7dWwmZ3Q7CiAgICAgICAgJmx0
O2xpJmd0O0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCA2LjAuMSBvciBoaWdoZXImbHQ7L2xp
Jmd0OwogICAgICAgICZsdDsvdWwmZ3Q7CiAgICAgICAgJmx0O2JyLyZndDsKICAgICAgICAmbHQ7
YnIvJmd0OwogICAgICAgICZsdDtzdHJvbmcmZ3Q7QWRkaXRpb25hbCBSZXF1aXJlZCBQZXJsIFBh
Y2thZ2VzIChmb3Igc29tZSBmdW5jdGlvbmFsaXR5KTombHQ7L3N0cm9uZyZndDsmbHQ7YnIvJmd0
OwogICAgICAgICZsdDt1bCZndDsKICAgICAgICAmbHQ7bGkmZ3Q7RGlnZXN0OjpNRDUmbHQ7L2xp
Jmd0OwogICAgICAgICZsdDtsaSZndDtFbmNvZGUmbHQ7L2xpJmd0OwogICAgICAgICZsdDsvdWwm
Z3Q7CiAgICAgICAgJmx0Oy91bCZndDsKICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAgICZsdDti
ci8mZ3Q7CiAgICAgICAgJmx0O3N0cm9uZyZndDtOb3RlOiZsdDsvc3Ryb25nJmd0OyZsdDtici8m
Z3Q7CiAgICAgICAgJmx0O3VsJmd0OwogICAgICAgICZsdDtsaSZndDtQYWNrYWdlIGluc3RhbGxh
dGlvbiB3aWxsIG92ZXJ3cml0ZSB0aGUgU3lzQ29uZmlnIHZhbHVlIGZvciBMb2FkZXI6OkFnZW50
OjpDb21tb25KUyMjIzEwMC1Db25maWd1cmF0aW9uTWFuYWdlbWVudCZsdDsvbGkmZ3Q7CiAgICAg
ICAgJmx0Oy91bCZndDsKICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAgICZsdDtici8mZ3Q7CiAg
ICAgICAgYy5hLnAuZS4gSVQgLi4uZWFzeS4mbHQ7YnIvJmd0OwogICAgICAgICZsdDtici8mZ3Q7
CiAgICA8L0ludHJvSW5zdGFsbD4KICAgIDxJbnRyb0luc3RhbGwgTGFuZz0iZW4iIFRpdGxlPSJJ
bnN0YWxsYXRpb24gSW5mb3JtYXRpb24iIFR5cGU9InBvc3QiPgogICAgICAgICZsdDtici8mZ3Q7
CiAgICAgICAgVGhlIHBhY2thZ2UgaGFzIGJlZW4gaW5zdGFsbGVkLiBZb3VyIGNvbmZpZ3VyYXRp
b24gaGFzIGJlZW4gY2hhbmdlZCZsdDtici8mZ3Q7CiAgICAgICAgJmx0O2JyLyZndDsKICAgICAg
ICAmbHQ7YnIvJmd0OwogICAgICAgICZsdDtzdHJvbmcmZ3Q7Tk9USUNFJmx0Oy9zdHJvbmcmZ3Q7
CiAgICAgICAgJmx0O2JyLyZndDsKICAgICAgICAoMSkgVmVyaWZ5IHRoZSBpbnN0YWxsYXRpb24g
YW5kIGNoZWNrIHlvdXIgT1RSUy1TeXNMb2cuJmx0O2JyLyZndDsKICAgICAgICAoMikgJmx0O3N0
cm9uZyZndDtQbGVhc2Ugc2VlICZsdDtpJmd0O09UUlNfSE9NRS9kb2MvZW4vVVNBR0VfQ0lBdHRy
aWJ1dGVDb2xsZWN0aW9uLnBkZiZsdDsvaSZndDsgZm9yIGRvY3VtZW50YXRpb24uJmx0Oy9zdHJv
bmcmZ3Q7Jmx0O2JyLyZndDsKICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAgICZsdDtici8mZ3Q7
CiAgICAgICAgJmx0O2JyLyZndDsKICAgICAgICBjLmEucC5lLiBJVCAuLi5lYXN5LiZsdDtici8m
Z3Q7CiAgICAgICAgJmx0O2JyLyZndDsKICAgIDwvSW50cm9JbnN0YWxsPgogICAgPEludHJvVW5p
bnN0YWxsIExhbmc9ImVuIiBUaXRsZT0iVW5pbnN0YWxsYXRpb24gSW5mb3JtYXRpb24iIFR5cGU9
InByZSI+CiAgICAgICAgJmx0O2JyLyZndDsKICAgICAgICAmbHQ7c3Ryb25nJmd0O1dFTENPTUUm
bHQ7L3N0cm9uZyZndDsKICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAgICZsdDtici8mZ3Q7CiAg
ICAgICAgWW91IGFyZSBhYm91dCB0byBVTklOU1RBTEwgdGhlIElUU00tQ0lBdHRyaWJ1dGVDb2xs
ZWN0aW9uIGV4dGVuc2lvbnMgcGFja2FnZSBmb3IgT1RSUy4gUGxlYXNlIGtlZXAgaW4gbWluZCB0
aGF0IGFueSBDTURCLWluZm9ybWF0aW9uIHN0b3JlZCB3aXRoIElUU00tQ0lBdHRyaWJ1dGVDb2xs
ZWN0aW9uIHNwZWNpZmljIGF0dHJpYnV0ZSB0eXBlcyBhcmUgbm90IGxvc3QsIGJ1dCBjYW5ub3Qg
YmUgdmlld2VkLCBlZGl0ZWQgYW5kIHVzZWQgYW55bW9yZS4mbHQ7YnIvJmd0OwogICAgICAgICZs
dDtici8mZ3Q7CiAgICAgICAgJmx0O2JyLyZndDsKICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAg
IGMuYS5wLmUuIElUIC4uLmVhc3kuJmx0O2JyLyZndDsKICAgICAgICAmbHQ7YnIvJmd0OwogICAg
PC9JbnRyb1VuaW5zdGFsbD4KICAgIDxJbnRyb1VwZ3JhZGUgTGFuZz0iZW4iIFRpdGxlPSJVcGdy
YWRlIEluZm9ybWF0aW9uIiBUeXBlPSJwcmUiPgogICAgICAgICZsdDtici8mZ3Q7CiAgICAgICAg
Jmx0O3N0cm9uZyZndDtXRUxDT01FJmx0Oy9zdHJvbmcmZ3Q7CiAgICAgICAgJmx0O2JyLyZndDsK
ICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAgIFlvdSBhcmUgYWJvdXQgdG8gdXBncmFkZSB0aGUg
SVRTTS1DSUF0dHJpYnV0ZUNvbGxlY3Rpb24gZXh0ZW5zaW9ucyBwYWNrYWdlIGZvciBPVFJTLiZs
dDtici8mZ3Q7CiAgICAgICAgJmx0O2JyLyZndDsKICAgICAgICAmbHQ7YnIvJmd0OwogICAgICAg
ICZsdDtzdHJvbmcmZ3Q7Tm90ZTombHQ7L3N0cm9uZyZndDsmbHQ7YnIvJmd0OwogICAgICAgICZs
dDt1bCZndDsKICAgICAgICAmbHQ7bGkmZ3Q7UGFja2FnZSB1cGRhdGUgd2lsbCBvdmVyd3JpdGUg
dGhlIFN5c0NvbmZpZyB2YWx1ZSBmb3IgTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyMxMDAtQ29u
ZmlndXJhdGlvbk1hbmFnZW1lbnQmbHQ7L2xpJmd0OwogICAgICAgICZsdDsvdWwmZ3Q7CiAgICAg
ICAgJmx0O2JyLyZndDsKCiAgICAgICAgJmx0O2JyLyZndDsKICAgICAgICBjLmEucC5lLiBJVCAu
Li5lYXN5LiZsdDtici8mZ3Q7CiAgICAgICAgJmx0O2JyLyZndDsKICAgIDwvSW50cm9VcGdyYWRl
PgogICAgPFBhY2thZ2VSZXF1aXJlZCBWZXJzaW9uPSI2LjAuMSI+SVRTTUNvbmZpZ3VyYXRpb25N
YW5hZ2VtZW50PC9QYWNrYWdlUmVxdWlyZWQ+CiAgICA8TW9kdWxlUmVxdWlyZWQgVmVyc2lvbj0i
MCI+RGlnZXN0OjpNRDU8L01vZHVsZVJlcXVpcmVkPgogICAgPE1vZHVsZVJlcXVpcmVkIFZlcnNp
b249IjAiPkVuY29kZTwvTW9kdWxlUmVxdWlyZWQ+CiAgICA8Q29kZUluc3RhbGwgVHlwZT0icG9z
dCI+CiAgICAkS2VybmVsOjpPTS0mZ3Q7R2V0KCd2YXI6OnBhY2thZ2VzZXR1cDo6SVRTTV9DSUF0
dHJpYnV0ZUNvbGxlY3Rpb24nKS0mZ3Q7Q29kZUluc3RhbGwoKTsKICAgIAogICAgPC9Db2RlSW5z
dGFsbD4KICAgIDxDb2RlVXBncmFkZSBUeXBlPSJwb3N0Ij4KICAgICRLZXJuZWw6Ok9NLSZndDtH
ZXQoJ3Zhcjo6cGFja2FnZXNldHVwOjpJVFNNX0NJQXR0cmlidXRlQ29sbGVjdGlvbicpLSZndDtD
b2RlVXBncmFkZSgpOwogICAgCiAgICA8L0NvZGVVcGdyYWRlPgogICAgPENvZGVVbmluc3RhbGwg
VHlwZT0icHJlIj4KICAgICRLZXJuZWw6Ok9NLSZndDtHZXQoJ3Zhcjo6cGFja2FnZXNldHVwOjpJ
VFNNX0NJQXR0cmlidXRlQ29sbGVjdGlvbicpLSZndDtDb2RlVW5pbnN0YWxsKCk7CiAgICAKICAg
IDwvQ29kZVVuaW5zdGFsbD4KICAgIDxDb2RlUmVpbnN0YWxsIFR5cGU9InBvc3QiPgogICAgJEtl
cm5lbDo6T00tJmd0O0dldCgndmFyOjpwYWNrYWdlc2V0dXA6OklUU01fQ0lBdHRyaWJ1dGVDb2xs
ZWN0aW9uJyktJmd0O0NvZGVSZWluc3RhbGwoKTsKICAgIAogICAgPC9Db2RlUmVpbnN0YWxsPgog
ICAgCiAgICAKICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iSVRTTS1DSUF0
dHJpYnV0ZUNvbGxlY3Rpb24uc29wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUg
TG9jYXRpb249ImRvYy9DSEFOR0VTX0lUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uLm1kIiBQZXJt
aXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iZG9jL2VuL0lUU00tQ0lBdHRy
aWJ1dGVDb2xsZWN0aW9uLnBkZiIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9j
YXRpb249ImRvYy9lbi9VU0FHRV9pdHNtLWNpYXR0cmlidXRlY29sbGVjdGlvbi5wb2QiIFBlcm1p
c3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvTW9kdWxlcy9BZ2Vu
dENJQ2xhc3NTZWFyY2gucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0
aW9uPSJLZXJuZWwvTW9kdWxlcy9BZ2VudFF1ZXVlU2VhcmNoLnBtIiBQZXJtaXNzaW9uPSI2NDQi
Lz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL01vZHVsZXMvQWdlbnRTZXJ2aWNlU2Vh
cmNoLnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVs
L01vZHVsZXMvQWdlbnRBdHRhY2htZW50U3RvcmFnZS5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAg
ICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9Nb2R1bGVzL0FnZW50Q3VzdG9tZXJDb21wYW55
U2VhcmNoLnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2Vy
bmVsL01vZHVsZXMvQWdlbnRDdXN0b21lclVzZXJDb21wYW55U2VhcmNoLnBtIiBQZXJtaXNzaW9u
PSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL01vZHVsZXMvQWdlbnRJVFNN
Q0lUaWNrZXRTZWFyY2gucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0
aW9uPSJLZXJuZWwvTW9kdWxlcy9BZ2VudFNMQVNlYXJjaC5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+
CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3Rh
bmRhcmQvQWdlbnRDSUNsYXNzU2VhcmNoLnR0IiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8
RmlsZSBMb2NhdGlvbj0iS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2Vu
dFF1ZXVlU2VhcmNoLnR0IiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlv
bj0iS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudFNlcnZpY2VTZWFy
Y2gudHQiIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwv
T3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50Q3VzdG9tZXJDb21wYW55U2VhcmNo
LnR0IiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL091
dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudEN1c3RvbWVyVXNlckNvbXBhbnlTZWFy
Y2gudHQiIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwv
T3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50VXNlclNlYXJjaC50dCIgUGVybWlz
c2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9PdXRwdXQvSFRNTC9U
ZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ0lUaWNrZXRTZWFyY2gudHQiIFBlcm1pc3Npb249
IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxh
dGVzL1N0YW5kYXJkL0FnZW50U0xBU2VhcmNoLnR0IiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAg
ICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91
dENJQUNDdXN0b21lckNvbXBhbnkucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxl
IExvY2F0aW9uPSJLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0Q3VzdG9t
ZXJVc2VyQ29tcGFueS5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRp
b249Iktlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREdW1teVgucG0iIFBl
cm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvT3V0cHV0L0hU
TUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RHluYW1pY0ZpZWxkLnBtIiBQZXJtaXNzaW9uPSI2NDQi
Lz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJ
dGVtL0xheW91dEVuY3J5cHRlZFRleHQucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxG
aWxlIExvY2F0aW9uPSJLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0VXNl
ci5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9P
dXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXRDSUNsYXNzUmVmZXJlbmNlLnBtIiBQZXJt
aXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL091dHB1dC9IVE1M
L0lUU01Db25maWdJdGVtL0xheW91dFF1ZXVlUmVmZXJlbmNlLnBtIiBQZXJtaXNzaW9uPSI2NDQi
Lz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJ
dGVtL0xheW91dFNlcnZpY2VSZWZlcmVuY2UucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAg
IDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0
Q0lBdHRhY2htZW50LnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlv
bj0iS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dFRleHRMaW5rLnBtIiBQ
ZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL091dHB1dC9I
VE1ML0lUU01Db25maWdJdGVtL0xheW91dFRpY2tldFJlZmVyZW5jZS5wbSIgUGVybWlzc2lvbj0i
NjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29u
ZmlnSXRlbS9MYXlvdXRUeXBlUmVmZXJlbmNlLnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAg
ICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91
dFNMQVJlZmVyZW5jZS5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRp
b249Iktlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvQ0lDbGFzc1JlZmVyZW5j
ZS5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9T
eXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvUXVldWVSZWZlcmVuY2UucG0iIFBlcm1pc3Np
b249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvU3lzdGVtL0lUU01Db25m
aWdJdGVtL1hNTC9UeXBlL1NlcnZpY2VSZWZlcmVuY2UucG0iIFBlcm1pc3Npb249IjY0NCIvPgog
ICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL1hNTC9U
eXBlL0NJQXR0YWNobWVudC5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9j
YXRpb249Iktlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvQ0lBQ0N1c3RvbWVy
Q29tcGFueS5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktl
cm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvQ3VzdG9tZXJVc2VyQ29tcGFueS5w
bSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9TeXN0
ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvRHVtbXlYLnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4K
ICAgICAgICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9YTUwv
VHlwZS9EeW5hbWljRmllbGQucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExv
Y2F0aW9uPSJLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL1hNTC9UeXBlL1VzZXIucG0iIFBl
cm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvU3lzdGVtL0lU
U01Db25maWdJdGVtL1hNTC9UeXBlL0VuY3J5cHRlZFRleHQucG0iIFBlcm1pc3Npb249IjY0NCIv
PgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL1hN
TC9UeXBlL1RleHRMaW5rLnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2Nh
dGlvbj0iS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9YTUwvVHlwZS9UaWNrZXRSZWZlcmVu
Y2UucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwv
U3lzdGVtL0lUU01Db25maWdJdGVtL1hNTC9UeXBlL1R5cGVSZWZlcmVuY2UucG0iIFBlcm1pc3Np
b249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvU3lzdGVtL0lUU01Db25m
aWdJdGVtL1hNTC9UeXBlL1NMQVJlZmVyZW5jZS5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAg
ICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRXZlbnQvQ0lD
bGFzc1JlZmVyZW5jZV9SZWZyZXNoTGlua3MucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAg
IDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0V2ZW50L1NlcnZp
Y2VSZWZlcmVuY2VfUmVmcmVzaExpbmtzLnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8
RmlsZSBMb2NhdGlvbj0iS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9FdmVudC9UaWNrZXRS
ZWZlcmVuY2VfUmVmcmVzaExpbmtzLnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8Rmls
ZSBMb2NhdGlvbj0iS2VybmVsL1N5c3RlbS9JVFNNQ0lBdHRyaWJ1dENvbGxlY3Rpb25VdGlscy5w
bSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9TeXN0
ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZS5wbSIgUGVybWlzc2lvbj0i
NjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50
U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZUZTLnBtIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAg
ICA8RmlsZSBMb2NhdGlvbj0iS2VybmVsL1N5c3RlbS9DSUF0dGFjaG1lbnRTdG9yYWdlL0F0dGFj
aG1lbnRTdG9yYWdlREIucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0
aW9uPSJ2YXIvaHR0cGQvaHRkb2NzL2pzL0NvcmUuQWdlbnQuQ0lDbGFzc1NlYXJjaC5qcyIgUGVy
bWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249InZhci9odHRwZC9odGRvY3Mv
anMvQ29yZS5BZ2VudC5TZXJ2aWNlU2VhcmNoLmpzIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAg
ICA8RmlsZSBMb2NhdGlvbj0idmFyL2h0dHBkL2h0ZG9jcy9qcy9Db3JlLkFnZW50LlF1ZXVlU2Vh
cmNoLmpzIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0idmFyL2h0
dHBkL2h0ZG9jcy9qcy9Db3JlLkFnZW50LkN1c3RvbWVyQ29tcGFueVNlYXJjaC5qcyIgUGVybWlz
c2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249InZhci9odHRwZC9odGRvY3MvanMv
Q29yZS5BZ2VudC5DdXN0b21lclVzZXJDb21wYW55U2VhcmNoLmpzIiBQZXJtaXNzaW9uPSI2NDQi
Lz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0idmFyL2h0dHBkL2h0ZG9jcy9qcy9Db3JlLkFnZW50
LlVzZXJTZWFyY2guanMiIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9u
PSJ2YXIvaHR0cGQvaHRkb2NzL2pzL0NvcmUuQWdlbnQuSVRTTUNJVGlja2V0U2VhcmNoLmpzIiBQ
ZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBMb2NhdGlvbj0idmFyL2h0dHBkL2h0ZG9j
cy9qcy9Db3JlLkFnZW50LlNMQVNlYXJjaC5qcyIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAg
PEZpbGUgTG9jYXRpb249InZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVt
LlNlYXJjaC5DSUF0dHJDb2xsLmpzIiBQZXJtaXNzaW9uPSI2NDQiLz4KICAgICAgICA8RmlsZSBM
b2NhdGlvbj0iS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uLnht
bCIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9Db25m
aWcvRmlsZXMvWE1ML0F0dGFjaG1lbnRTdG9yYWdlLnhtbCIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAg
ICAgICAgPEZpbGUgTG9jYXRpb249Iktlcm5lbC9Nb2R1bGVzL0FnZW50QXR0YWNobWVudFN0b3Jh
Z2UucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAgICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwv
TGFuZ3VhZ2UvZGVfQXR0YWNobWVudFN0b3JhZ2UucG0iIFBlcm1pc3Npb249IjY0NCIvPgogICAg
ICAgIDxGaWxlIExvY2F0aW9uPSJLZXJuZWwvTGFuZ3VhZ2UvZGVfSVRTTUNJQXR0cmlidXRlQ29s
bGVjdGlvbi5wbSIgUGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgPEZpbGUgTG9jYXRpb249InZh
ci9wYWNrYWdlc2V0dXAvSVRTTV9DSUF0dHJpYnV0ZUNvbGxlY3Rpb24ucG0iIFBlcm1pc3Npb249
IjY0NCIvPgogICAgPC9GaWxlbGlzdD4KICAgIDxEYXRhYmFzZUluc3RhbGw+CiAgICAgICAgPFRh
YmxlQ3JlYXRlIFR5cGU9InBvc3QiIE5hbWU9ImF0dGFjaG1lbnRfZGlyZWN0b3J5Ij4KICAgICAg
ICAgICAgPENvbHVtbiBBdXRvSW5jcmVtZW50PSJ0cnVlIiBOYW1lPSJpZCIgUHJpbWFyeUtleT0i
dHJ1ZSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgPENvbHVt
biBOYW1lPSJzdG9yYWdlX2JhY2tlbmQiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSI2NCIgVHlwZT0i
VkFSQ0hBUiIvPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImZpbGVfbmFtZSIgUmVxdWlyZWQ9
ImZhbHNlIiBTaXplPSIyNTUiIFR5cGU9IlZBUkNIQVIiLz4KICAgICAgICAgICAgPENvbHVtbiBO
YW1lPSJmaWxlX3BhdGgiIFJlcXVpcmVkPSJmYWxzZSIgU2l6ZT0iNDAwMCIgVHlwZT0iVkFSQ0hB
UiIvPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImNyZWF0ZV90aW1lIiBSZXF1aXJlZD0idHJ1
ZSIgVHlwZT0iREFURSIvPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImNyZWF0ZV9ieSIgUmVx
dWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgPENvbHVtbiBOYW1lPSJj
aGFuZ2VfdGltZSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IkRBVEUiLz4KICAgICAgICAgICAgPENv
bHVtbiBOYW1lPSJjaGFuZ2VfYnkiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJJTlRFR0VSIi8+CiAg
ICAgICAgICAgIDxJbmRleCBOYW1lPSJpbmRleF9hdHRhY2htZW50X2RpcmVjdG9yeV9iYWNrZW5k
Ij4KICAgICAgICAgICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJzdG9yYWdlX2JhY2tlbmQiPgog
ICAgICAgICAgICAgICAgPC9JbmRleENvbHVtbj4KICAgICAgICAgICAgPC9JbmRleD4KICAgICAg
ICA8L1RhYmxlQ3JlYXRlPgogICAgICAgIDxUYWJsZUNyZWF0ZSBUeXBlPSJwb3N0IiBOYW1lPSJh
dHRhY2htZW50X2Rpcl9wcmVmZXJlbmNlcyI+CiAgICAgICAgICAgIDxDb2x1bW4gTmFtZT0iYXR0
YWNobWVudF9kaXJlY3RvcnlfaWQiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJJTlRFR0VSIi8+CiAg
ICAgICAgICAgIDxDb2x1bW4gTmFtZT0icHJlZmVyZW5jZXNfa2V5IiBSZXF1aXJlZD0idHJ1ZSIg
U2l6ZT0iMTUwIiBUeXBlPSJWQVJDSEFSIi8+CiAgICAgICAgICAgIDxDb2x1bW4gTmFtZT0icHJl
ZmVyZW5jZXNfdmFsdWUiIFJlcXVpcmVkPSJmYWxzZSIgU2l6ZT0iMzUwIiBUeXBlPSJWQVJDSEFS
Ii8+CiAgICAgICAgICAgIDxJbmRleCBOYW1lPSJhdHRhY2htZW50X2Rpcl9wcmVmZXJlbmNlc19h
dHRhY2htZW50X2RpcmVjdG9yeV9pZCI+CiAgICAgICAgICAgICAgICA8SW5kZXhDb2x1bW4gTmFt
ZT0iYXR0YWNobWVudF9kaXJlY3RvcnlfaWQiPgogICAgICAgICAgICAgICAgPC9JbmRleENvbHVt
bj4KICAgICAgICAgICAgPC9JbmRleD4KICAgICAgICAgICAgPEZvcmVpZ25LZXkgRm9yZWlnblRh
YmxlPSJhdHRhY2htZW50X2RpcmVjdG9yeSI+CiAgICAgICAgICAgICAgICA8UmVmZXJlbmNlIEZv
cmVpZ249ImlkIiBMb2NhbD0iYXR0YWNobWVudF9kaXJlY3RvcnlfaWQiPgogICAgICAgICAgICAg
ICAgPC9SZWZlcmVuY2U+CiAgICAgICAgICAgIDwvRm9yZWlnbktleT4KICAgICAgICA8L1RhYmxl
Q3JlYXRlPgogICAgICAgIDxUYWJsZUNyZWF0ZSBUeXBlPSJwb3N0IiBOYW1lPSJhdHRhY2htZW50
X3N0b3JhZ2UiPgogICAgICAgICAgICA8Q29sdW1uIEF1dG9JbmNyZW1lbnQ9InRydWUiIE5hbWU9
ImlkIiBQcmltYXJ5S2V5PSJ0cnVlIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgog
ICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkIiBSZXF1aXJl
ZD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImRhdGEi
IFJlcXVpcmVkPSJmYWxzZSIgVHlwZT0iTE9OR0JMT0IiLz4KICAgICAgICAgICAgPFVuaXF1ZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9ImF0dGFj
aG1lbnRfZGlyZWN0b3J5X2lkIi8+CjwvVW5pcXVlPgogICAgICAgICAgICA8SW5kZXggTmFtZT0i
YXR0YWNobWVudF9zdG9yYWdlX2Rpcl9pZCI+CiAgICAgICAgICAgICAgICA8SW5kZXhDb2x1bW4g
TmFtZT0iYXR0YWNobWVudF9kaXJlY3RvcnlfaWQiPgogICAgICAgICAgICAgICAgPC9JbmRleENv
bHVtbj4KICAgICAgICAgICAgPC9JbmRleD4KICAgICAgICA8L1RhYmxlQ3JlYXRlPgogICAgPC9E
YXRhYmFzZUluc3RhbGw+CiAgICA8RGF0YWJhc2VVcGdyYWRlPgogICAgICAgIDxUYWJsZUNyZWF0
ZSBUeXBlPSJwb3N0IiBOYW1lPSJhdHRhY2htZW50X2RpcmVjdG9yeSIgVmVyc2lvbj0iMS42Ljgw
Ij4KICAgICAgICAgICAgPENvbHVtbiBBdXRvSW5jcmVtZW50PSJ0cnVlIiBOYW1lPSJpZCIgUHJp
bWFyeUtleT0idHJ1ZSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAg
ICAgPENvbHVtbiBOYW1lPSJzdG9yYWdlX2JhY2tlbmQiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSI2
NCIgVHlwZT0iVkFSQ0hBUiIvPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImZpbGVfbmFtZSIg
UmVxdWlyZWQ9ImZhbHNlIiBTaXplPSIyNTUiIFR5cGU9IlZBUkNIQVIiLz4KICAgICAgICAgICAg
PENvbHVtbiBOYW1lPSJmaWxlX3BhdGgiIFJlcXVpcmVkPSJmYWxzZSIgU2l6ZT0iNDAwMCIgVHlw
ZT0iVkFSQ0hBUiIvPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImNyZWF0ZV90aW1lIiBSZXF1
aXJlZD0idHJ1ZSIgVHlwZT0iREFURSIvPgogICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImNyZWF0
ZV9ieSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgPENvbHVt
biBOYW1lPSJjaGFuZ2VfdGltZSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IkRBVEUiLz4KICAgICAg
ICAgICAgPENvbHVtbiBOYW1lPSJjaGFuZ2VfYnkiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJJTlRF
R0VSIi8+CiAgICAgICAgICAgIDxJbmRleCBOYW1lPSJpbmRleF9hdHRhY2htZW50X2RpcmVjdG9y
eV9iYWNrZW5kIj4KICAgICAgICAgICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJzdG9yYWdlX2Jh
Y2tlbmQiPgogICAgICAgICAgICAgICAgPC9JbmRleENvbHVtbj4KICAgICAgICAgICAgPC9JbmRl
eD4KICAgICAgICA8L1RhYmxlQ3JlYXRlPgogICAgICAgIDxUYWJsZUNyZWF0ZSBUeXBlPSJwb3N0
IiBOYW1lPSJhdHRhY2htZW50X2Rpcl9wcmVmZXJlbmNlcyIgVmVyc2lvbj0iMS42LjgwIj4KICAg
ICAgICAgICAgPENvbHVtbiBOYW1lPSJhdHRhY2htZW50X2RpcmVjdG9yeV9pZCIgUmVxdWlyZWQ9
InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgPENvbHVtbiBOYW1lPSJwcmVmZXJl
bmNlc19rZXkiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIxNTAiIFR5cGU9IlZBUkNIQVIiLz4KICAg
ICAgICAgICAgPENvbHVtbiBOYW1lPSJwcmVmZXJlbmNlc192YWx1ZSIgUmVxdWlyZWQ9ImZhbHNl
IiBTaXplPSIzNTAiIFR5cGU9IlZBUkNIQVIiLz4KICAgICAgICAgICAgPEluZGV4IE5hbWU9ImF0
dGFjaG1lbnRfZGlyX3ByZWZlcmVuY2VzX2F0dGFjaG1lbnRfZGlyZWN0b3J5X2lkIj4KICAgICAg
ICAgICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJhdHRhY2htZW50X2RpcmVjdG9yeV9pZCI+CiAg
ICAgICAgICAgICAgICA8L0luZGV4Q29sdW1uPgogICAgICAgICAgICA8L0luZGV4PgogICAgICAg
IDwvVGFibGVDcmVhdGU+CiAgICAgICAgPFRhYmxlQ3JlYXRlIFR5cGU9InBvc3QiIE5hbWU9ImF0
dGFjaG1lbnRfc3RvcmFnZSIgVmVyc2lvbj0iMS42LjgwIj4KICAgICAgICAgICAgPENvbHVtbiBB
dXRvSW5jcmVtZW50PSJ0cnVlIiBOYW1lPSJpZCIgUHJpbWFyeUtleT0idHJ1ZSIgUmVxdWlyZWQ9
InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgPENvbHVtbiBOYW1lPSJhdHRhY2ht
ZW50X2RpcmVjdG9yeV9pZCIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAg
ICAgICAgPENvbHVtbiBOYW1lPSJkYXRhIiBSZXF1aXJlZD0iZmFsc2UiIFR5cGU9IkxPTkdCTE9C
Ii8+CiAgICAgICAgICAgIDxJbmRleCBOYW1lPSJhdHRhY2htZW50X3N0b3JhZ2VfZGlyX2lkIj4K
ICAgICAgICAgICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJhdHRhY2htZW50X2RpcmVjdG9yeV9p
ZCI+CiAgICAgICAgICAgICAgICA8L0luZGV4Q29sdW1uPgogICAgICAgICAgICA8L0luZGV4Pgog
ICAgICAgIDwvVGFibGVDcmVhdGU+CiAgICA8L0RhdGFiYXNlVXBncmFkZT4KICAgIDxEYXRhYmFz
ZVJlaW5zdGFsbD4KICAgIDwvRGF0YWJhc2VSZWluc3RhbGw+CiAgICA8RGF0YWJhc2VVbmluc3Rh
bGw+CiAgICA8L0RhdGFiYXNlVW5pbnN0YWxsPgo8L290cnNfcGFja2FnZT4K
IyBDaGFuZ2UgbG9nIG9mIElUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uCiogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlLwoqICRJ
ZDogQ0hBTkdFU19JVFNNLUNJQXR0cmlidXRlQ29sbGVjdGlvbi5tZCx2IDEuMzIgMjAxNi8wOS8x
MyAxMzoxODozNiB0dG8gRXhwICQKCiM1LjAuMyAoMjAxNi8wOS8xMykKKiAoMjAxNi8wNS8yNykg
LSBCdWdmaXg6IFQyMDE2MDUyMzkwMDAwNjQyIChmaXhlZCB0ZXN0aW5nIG9mIGludmFsaWQgaW4g
YWxsIGxheW91dCBmaWxlcykgKGZqYWNxdWVtaW4pCgojNS4wLjIgKDIwMTYvMDUvMTgpCiogKDIw
MTYvMDUvMTgpIC0gQ1I6IHVwZGF0ZWQgY29weXJpZ2h0IHllYXIgKHR0bykKKiAoMjAxNi8wMy8y
MSkgLSBCdWdmaXg6IFQyMDE2MDEwNjkwMDAwOTg2IChmaXhlZCBpc3N1ZXMgd2l0aCBlbXB0eSBW
YWx1ZSBpbiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q0lBQ0N1
c3RvbWVyQ29tcGFueSkgKGZqYWNxdWVtaW4pCiogKDIwMTYvMDMvMTgpIC0gQnVnZml4OiBUMjAx
NDA1MTI5MDAwMDYwMyAoYWRkIGNsYXNzIGFmdGVyIHRlc3Rpbmcgb2YgaW52YWxpZCBhbmQgY2hh
bmdlIHBhcmFtIGZvciBJdGVtSUQpIChmamFjcXVlbWluKQoqICgyMDE2LzAzLzE3KSAtIEJ1Z2Zp
eDogVDIwMTYwMzEwOTAwMDA2NjEgKHJlbW92ZSBpbXBvcnRhbnQgYWR2aWNlIGZyb20gSW50cm9V
cGdyYWRlKSAoZmphY3F1ZW1pbikKCiM1LjAuMSAoMjAxNi8wMi8xMikKKiAoMjAxNi8wMi8xMikg
LSBCdWdmaXg6IFQyMDE2MDIxMTkwMDAwOTM4IChmaXhlZCBjbGljayBiaW5kIGZvciBhZGQvcmVt
b3ZlIEJ1dHRvbiBmb3IgQ0ktc2VhcmNoKSAoZmphY3F1ZW1pbikKKiAoMjAxNi8wMi8xMSkgLSBC
dWdmaXg6IFQyMDE2MDIxMTkwMDAwNTM2IChKUyBlcnJvciB3aGVuIEtleSBjb250YWlucyBub24t
YXBsaGFudW1lcmljIHN5bWJvbHMgPT4gYWRkZWQgZG9jdW1lbnRhdGlvbiBub3RlKSAodHRvKQoq
ICgyMDE2LzAxLzE0KSAtIEJ1Z2ZpeDogVDIwMTYwMTE0OTAwMDA2MjEgKGltcHJvdmVkIHNlYXJj
aCBmb3IgQ3VzdG9tZXJJRHMgaW4gQ3VzdG9tZXJVc2VyQ29tcGFueSkgKHNtZWhsaWcpCiogKDIw
MTYvMDEvMTQpIC0gQnVnZml4OiBUMjAxNjAxMTQ5MDAwMDY3NiAoZml4ZWQgZXhwb3J0IEN1c3Rv
bWVySURzIGluIEN1c3RvbWVyVXNlckNvbXBhbnkpIChzbWVobGlnKQoKIzUuMC4wICgyMDE1LzEx
LzE2KQoqICgyMDE1LzExLzE2KSAtIENSOiBUMjAxNTA4MjY5MDAwMDU3MSAoYWRkZWQgZnJhbWV3
b3JrIDUuMCkgKHRsYW5nZSkKCiM0Ljk5LjgwICgyMDE1LzExLzAyKQoqICgyMDE1LzExLzAyKSAt
IENSOiBUMjAxNTA4MjY5MDAwMDU3MSAobW9kaWZpY2F0aW9ucyBmb3IgZnJhbWV3b3JrIDUuMCkg
KGFoZXJnZXJ0KQoKIzQuMS4xICgyMDE1LzA5LzI0KQoqICgyMDE1LzA5LzI0KSAtIENSOiBUMjAx
NTA5MTY5MDAwMDM4MyAoYWRkZWQgY2hvb3NhYmxlIHNlYXJjaCBpbnB1dCB0eXBlIGZvciBjaSBy
ZWZlcmVuY2UpIChtaWxsaW5nZXIpCgojNC4xLjAgKDIwMTUvMDkvMDgpCiogKDIwMTUvMDcvMDEp
IC0gQ1I6IFQyMDE1MDYyOTkwMDAwNDYyIChjb25zaWRlciBDbGFzc0lEIHdoZW4gc2VhcmNoaW5n
IGZvciBDSUNsYXNzUmVmZXJlbmNlIGF0dHJpYnV0ZXMpIChhbGl0dmlub3ZhKQoKIzQuMC4wICgy
MDE1LzAyLzI3KQoqICgyMDE1LzAyLzI3KSAtIENSOiBUMjAxNDEwMjk5MDAwMDUzNiAodXBkYXRl
ZCB5ZWFyIDIwMTUpICh0dG8pCgoKIzMuOTkuODAgKDIwMTUvMDIvMDMpCiogKDIwMTUvMDEvMjIp
IC0gQ1I6IFQyMDE0MTAyOTkwMDAwNTM2IChtb2RpZmljYXRpb25zIGZvciBPVFJTIDQuMC54IGZy
YW1ld29yaykgKG1pbGxpbmdlcikKKiAoMjAxNC8xMi8xMSkgLSBCdWdmaXg6IFQyMDE0MTIxMDkw
MDAwMzUzIChmaXhlZCBlcnJvciBpbiByZWZyZXNoIGxpbnMgZm9yIENJQ2xhc3NSZWZlcmVuY2Up
IChhbGl0dmlub3ZhKQoqICgyMDE0LzExLzA5KSAtIEJ1Z2ZpeDogVDIwMTQwNDA4OTAwMDU5NTgg
KG1pc3NpbmcgbGFzdCBzZWFyY2ggdmFsdWVzIGZvciBzb21lIGF0dHIgdHlwZXMgd2hlbiBjaGFu
Z2luZyBzZWFyY2gtb3B0aW9ucykgKGFsaXR2aW5vdmEpCiogKDIwMTQvMTEvMDkpIC0gQnVnZml4
OiBUMjAxNDExMDU5MDAwMDcwMyAoZml4ZWQgQ01EQi1TZWFyY2ggd2l0aCBUaWNrZXRSZWZlcmVu
Y2UgYXR0cmlidXRlcykgKGFsaXR2aW5vdmEpCiogKDIwMTQvMDgvMjApIC0gQnVnZml4OiBUMjAx
NDA4MjA5MDAwMDU0OCAobW9yZSBwcmVjaXNlIGRlc2NyaXB0aW9uIG9uIHR5cGUgRHluYW1pY0Zp
ZWxkKSAodHRvKQoKIzIuNC4wICgyMDE0LzA3LzI0KQoqICgyMDE0LzA2LzMwKSAtIEJ1Z2ZpeDog
VCMyMDE0MDYyMzkwMDAwNTAxIChwYXRjaCBmdW5jdGlvbiBjYWxsIGluIElUU01DSUF0dHJpYnV0
Q29sbGVjdGlvblV0aWxzOjpHZXRBdHRyaWJ1dGVWYWx1ZXNCeSkgKHNyZWlzcykKKiAoMjAxNC8w
NS8yMikgLSBDUjogKHVwZGF0ZWQgcmVxdWlyZWQgdmVyc2lvbiBvZiBJVFNNQ29uZmlndXJhdGlv
bk1BbmFnZW1lbnQgdG8gMy4zLjYpICh0dG8pCiogKDIwMTQvMDUvMjIpIC0gQnVnZml4OiAocGVy
Zm9ybWFuY2UgaW1wcm92ZW1lbnQgaW4gc3ViIElUU01DSUF0dHJpYnV0Q29sbGVjdGlvblV0aWxz
OjpHZXRBdHRyaWJ1dGVWYWx1ZXNCeSopICh0dG8pCiogKDIwMTQvMDQvMjMpIC0gQ1I6IFQyMDE0
MDQwMjkwMDAwMzM5IChhZGRlZCBhdHRyaWJ1dGUgdHlwZXMgU0xBUmVmZXJlbmNlIGFuZCBUeXBl
UmVmZXJlbmNlKSAoYWxpdHZpbm92YSkKKiAoMjAxNC8wNC8yMikgLSBDUjogVDIwMTMxMjE2OTAw
MDA1NTkgKHJlbW92ZWQgZmlsZSBLZXJuZWwvTW9kdWxlcy9BZ2VudFVzZXJTZWFyY2gucG0gLSBp
bmNsdWRlZCBzaW5jZSBPVFJTIDMuMy4xKSAodHRvKQoqICgyMDE0LzA0LzA4KSAtIEJ1Z2ZpeDog
VDIwMTQwMzMxOTAwMDA0NTYgKGZpeGVkIHNlYXJjaCByZXN1bHQgZHVlIHRvIHNvcnRpbmcpIChz
bWVobGlnKQoqICgyMDE0LzAzLzEwKSAtIENSOiBUMjAxNDAzMTA5MDAwMDYxMSAoYWRkZWQgYXR0
cmlidXRlIHRpY2tldCByZWZlcmVuY2UgKSAobWlsbGluZ2VyKQoqICgyMDEzLzEyLzE2KSAtIEJ1
Z2ZpeDogVDIwMTMxMDA5OTAwMDAyNTQgKEVuY3J5cHRlZFRFeHQgZGlkIG5vdCBxdW90ZSB2YWx1
ZSBpbiBlZGl0IG1vZGUpICh0dG8pCgojMi4zLjAgKDIwMTMvMTAvMTYpCiogKDIwMTMvMTAvMTYp
IC0gQ1I6IFQyMDEzMTAxNDkwMDAwODg4IChtb2RpZmljYXRpb25zIGZvciBmcmFtZXdvcmsgMy4z
KSAodHRvKQoqICgyMDEzLzEwLzE2KSAtIENSOiBUMjAxMzEwMTQ5MDAwMDg4OCAobW92ZWQgQ0hB
TkdFUy1maWxlIHRvIGRvYyBhbmQgbWFya2Rvd24pICh0dG8pCiogKDIwMTMvMTAvMTYpIC0gQ1I6
IFQyMDEzMTAxNDkwMDAwODg4IChhZGRlZCBQREYtZG9jdW1lbnRhdGlvbikgKHR0bykKCiMyLjIu
MCAoMjAxMy8wOC8yNikKKiAoMjAxMy8wOC8yNikgLSBDUjogVDIwMTIxMTAxOTAwMDAzMDMgKGFk
ZGVkIGF0dHJpYnV0ZSBkeW5hbWljIGZpZWxkICkgKHNtZWhsaWcpCiogKDIwMTMvMDgvMjYpIC0g
Q1I6IFQyMDEzMDgwNjkwMDAwNDc5IChhZGRlZCByZWZlcmVuY2VkIGF0dHJpYnV0ZSBrZXkgZm9y
IENJQ2xhc3NSZWZlcmVuY2UgaW4gY3N2IGltcG9ydCApIChzbWVobGlnKQoqICgyMDEzLzA4LzA4
KSAtIEJ1Z2ZpeDogVDIwMTMwMTIyOTAwMDAyMDEgKENJQ2xhc3NSZWZlcmVuY2UgTGluay1SZWZy
ZXNoIGRlbGV0ZWQgbWFudWFsbHkgY3JlYXRlZCBsaW5rcyBhcyB3ZWxsKSAodHRvKQoqICgyMDEz
LzA4LzA4KSAtIEJ1Z2ZpeDogVDIwMTMwNzI1OTkwMDAxOTcgKGxpbmtzIGRlbGV0ZWQgd2hpY2gg
d2VyZSBub3QgY3JlYXRlZCBieSBDSUNsYXNzUmVmZXJlbmNlIGF0dHJpYnV0ZSkgKHR0bykKKiAo
MjAxMy8wMy8yNikgLSBCdWdmaXg6IFQyMDEzMDMyNTkwMDAwMzI2IChBdXRvQ29tcGxldGUgaW4g
Q3VzdG9tZXJVc2VyQ29tcGFueSBhdHRyaWJ1dGVzIGRvZXNuJ3Qgd29yayB3aXRoICIqIiBpbiBz
ZWFyY2ggc3RyaW5nKSAoYWxpdHZpbm92YSkKCiMyLjEuMCAoMjAxMy8wMy8yMikKKiAoMjAxMy8w
My8yMikgLSBDUjogVDIwMTMwMzE4OTAwMDAyNTEgKG1vZGlmaWNhdGlvbnMgZm9yIE9UUlMgMy4y
LnggZnJhbWV3b3JrKSAoYWxpdHZpbm92YSkKKiAoMjAxMy8wMy8yMikgLSBCdWdmaXg6IFQyMDEz
MDMxODkwMDAwMjUxIChhdHRhY2htZW50IGRhdGEgbG9zdCBvbiBwYWNrYWdlIHVuaW5zdGFsbGF0
aW9uLCBhbHRob3VnaCB0aGUgbWVzc2FnZSBzYXlzIGluIHdvbid0KSAoYWxpdHZpbm92YSkKCiMy
LjAuMSAoMjAxMi8xMi8yOCkKKiAoMjAxMi8xMi8yOCkgLSBCdWdmaXg6IFQyMDEyMTIxMTkwMDAw
NTA2IChhY3V0YWxseSBtb3JlIGEgQ1I6IG1vZGlmaWNhdGlvbiBmb3IgSVRTTSAzLjEuNyBjb21w
YXRpYmlsaXR5KSAodHRvKQoKIzIuMC4wICgyMDEyLzA4LzA3KQoqICgyMDEyLzA4LzA3KSAtIENS
OiBmaXJzdCByZWxlYXNlIGZvciBPVFJTIDMuMSAocmJvKQoqICgyMDEyLzA3LzA1KSAtIEJ1Z2Zp
eDogVDIwMTIwNzAxOTAwMDAxNTEgKGV4aXN0aW5nIENJIGxpbmtzIGFyZSBub3QgZGVsZXRlZCkg
KHJhYm8pCiogKDIwMTIvMDYvMjYpIC0gQnVnZml4OiBUMjAxMjA2MjU5MDAwMDM4NiAoQ0ktem9v
bS9lZGl0L2V4cG9ydCBub3QgcG9zc2libGUgaWYgYXR0YWNobWVudCBmaWxlIG5vdCBmb3VuZCkg
KGFsaXR2aW5vdmEpCiogKDIwMTIvMDYvMTkpIC0gQnVnZml4OiBUMjAxMjA2MDY5MDAwMDE1MyAo
dW5pbnN0YWxsIHdpdGhvdXQgY2hlY2sgaWYgS0lYQ29yZSBpcyBpbnN0YWxsZWQpIChyYm8pCiog
KDIwMTIvMDYvMTkpIC0gQ1I6IFQyMDEyMDYxOTkwMDAwNDMyIChpbnRlZ3JhdGlvbiBvZiBDSSBu
YW1lIHNlYXJjaCBmb3IgSW1wb3J0IGluIENJQ2xhc3NSZWZlcmVuY2UgYXR0cmlidXRlKSAocmJv
KQoqICgyMDEyLzA0LzEzKSAtIEJ1Z2ZpeDogVDIwMTIwNDEzOTAwMDAyNTEgKEN1c3RvbWVyVXNl
ckNvbXBhbnlTZWFyY2ggYXV0b2NvbXBsZXRlL3NlYXJjaCBpbmNvcnJlY3QpKGFsaXR2aW5vdmEp
CiogKDIwMTIvMDMvMTEpIC0gQ1I6IFQyMDEyMDIyNzkwMDAwMjczIChtb2RpZmljYXRpb25zIGZv
ciBPVFJTIDMuMS54KSAoYWxpdHZpbm92YSkKCiMxLjkuNiAoMjAxMi8wMy8wOSkKKiAoMjAxMi8w
Mi8yMikgLSBCdWdmaXg6IFQyMDEyMDIyNzkwMDAwMjI4IChJVFNNLUNJQXR0cmlidXRlQ29sbGVj
dGlvbjo6Q3VzdG9tZXJDb21wYW55IGluY29uc2lzdGVudCBiZWhhdmlvcikgKGFsaXR2aW5vdmEp
CiogKDIwMTIvMDIvMjIpIC0gQnVnZml4OiBUMjAxMjAyMjE5MDAwMDI0OCAoRW5jcnlwdGVkVGV4
dCBubyBDSSB2ZXJzaW9uIHNhdmUgd2hlbiBmaWVsZCBub24gYWNjZXNzaWJsZSkgKHR0bykKKiAo
MjAxMi8wMi8xNykgLSBCdWdmaXg6IFQyMDEyMDIxNjkwMDAwOTU0IChFbmNyeXB0ZWRUZXh0IHBy
b2R1Y2VzIENvdW50TWF4IGVudHJpZXMpIChmb2JlcikKCiMxLjkuNSAoMjAxMi8wMi8xNCkKKiAo
MjAxMi8wMi8xNCkgLSBCdWdmaXg6IFQyMDExMTEyOTkwMDAwMjkxIChMb2cgZXJyb3IgdXNpbmcg
YXR0cmlidXRlIGF0dGFjaG1lbnQpIChkZG9lcmZmZWwpCiogKDIwMTIvMDEvMjUpIC0gQnVnZml4
OiBUMjAxMjAxMTc5MDAwMDM2NSAoQ29uZmlnSXRlbUVkaXQgd2l0aCB3cm9uZyBkaXNwbGF5IG9m
IER1bW15WCkgKGRkb2VyZmZlbCkKKiAoMjAxMi8wMS8yMCkgLSBCdWdmaXg6IFQyMDEyMDExOTkw
MDAwMzUyIChWYWx1ZSB2YWxpZGF0aW9uIGluIENJQ2xhc3NSZWZlcmVuY2UsIFNlcnZpY2VSZWZl
cmVuY2UsIFF1ZXVlUmVmZXJlbmNlKSAobWFiYSkKKiAoMjAxMi8wMS8xOCkgLSBDUjogKENoYW5n
ZSBjb3B5cmlnaHRzIGFuZCBsaWNlbnNlIGluZm9ybWF0aW9ucykgKGZvYmVyKQoqICgyMDEyLzAx
LzE4KSAtIEJ1Z2ZpeDogVDIwMTIwMTE3OTAwMDAzNDcgKExpbmsgUmVmcmVzaCBmb3IgQ0lDbGFz
c1JlZmVyZW5jZSBhbmQgU2VydmljZVJlZmVyZW5jZSBpbiBTdWJzKSAoZm9iZXIpCiogKDIwMTEv
MTIvMTUpIC0gQnVnZml4OiBUMjAxMTEyMTQ5MDAwMTA4MyAoc2VhcmNoIG1ldGhvZCBmb3IgY3Vz
dG9tZXIgdXNlciBjb21wYW5pZXMpICh0dG8pCiogKDIwMTEvMTEvMzApIC0gQnVnZml4OiBUMjAx
MTExMzA5MDAwMDI0MiAoZXJyb3IgaGFuZGxpbmcgZm9yIGN1c3RvbWVyIHVzZXIgY29tcGFuaWVz
KSAobWFiYSkKKiAoMjAxMS8xMS8zMCkgLSBDUjogY2hhbmdlZCBjb3B5cmlnaHQgaW5mb3JtYXRp
b24gZm9yIE1vZHVsZXMgKG1hYmEpCgojMS45LjQgKDIwMTEvMTEvMTcpCiogKDIwMTEvMTEvMTcp
IC0gQnVnZml4OiBUMjAxMTExMTY5OTAwMDA0OCAoaW1wb3J0L2V4cG9ydCBlbmNyeXB0ZWQgdGV4
dCkgKHNtZWhsaWcpCiogKDIwMTEvMTEvMTQpIC0gQnVnZml4OiBUMjAxMTEwMjQ5MDAwMDI0NyAo
Y2hlY2sgZW5jcnlwdGVkIHRleHQpIChkZG9lcmZmZWwpCiogKDIwMTEvMTEvMTQpIC0gQnVnZml4
OiBUMjAxMTEwMjQ5MDAwMDIzOCAoYXR0cmlidXRlIER1bW15WCkgKGRkb2VyZmZlbCkKKiAoMjAx
MS8xMC8yOCkgLSBCdWdmaXg6IFQyMDExMTAyODkwMDAwMzExIChhdXRvY29tcGxldGUgZm9yIHN1
Yi1hdHRyaWJ1dGVzKSAobWFiYSkKKiAoMjAxMS8xMC8yNSkgLSBCdWdmaXg6IFQyMDExMTAyNDkw
MDAwMjI5IChBZ2VudElUU01Db25maWdJdGVtRWRpdC5kdGwpICh0dG8pCgojMS45LjMgKDIwMTEv
MTAvMTMpCiogKDIwMTEvMTAvMTMpIC0gQ1I6IFQyMDExMTAxMjkwMDAwMjQyIGFkZGVkIGF0dHJp
YnV0ZSB0ZXh0IGxpbmsgKHNtZWhsaWcpCgojMS45LjIgKDIwMTEvMDkvMTkpCiogKDIwMTEvMDkv
MTkpIC0gQnVnZml4OiBUMjAxMTA5MTY5MDAwMDE0OSBlbmNyeXB0ZWQgdGV4dCAoc21laGxpZykK
CiMxLjkuMSAoMjAxMS8wOS8wNSkKKiAoMjAxMS8wOS8wNSkgLSBCdWdmaXg6IFMyMDExMDgxOTk5
MDAwMDMxIChKUyBmb3IgQXV0b0NvbXBsZXRlKSAobWFiYSkKKiAoMjAxMS8wOC8yNikgLSBCdWdm
aXg6IFMyMDExMDgxOTk5MDAwMDMxIChMaW5rYWRkIGluIEV2ZW50IENJQ2xhc3NSZWZlcmVuY2Up
IChzbWVobGlnKQoqICgyMDExLzA4LzE3KSAtIEJ1Z2ZpeDogbWlzc2luZyBEYXRhUmVmIGluIEtl
cm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTOjpB
dHRhY2htZW50R2V0ICh0dG8pCgojMS45LjAgKDIwMTEvMDgvMDUpCiogKDIwMTEvMDgvMDUpIC0g
Q1I6IGNoYW5nZWQgaW5zdGFsbCBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gbmV3IHN0YW5kYXJk
IGluIE9UUlMgMyAobWFiYSkKKiAoMjAxMS8wOC8wMSkgLSBDUjogbmV3IENJLUF0dHJpYnV0ZSAi
RW5jcnlwdGVkVGV4dCIgKHNtZWhsaWcpCgojMS44LjYgKDIwMTEvMDcvMjUpCiogKDIwMTEvMDcv
MjUpIC0gQ1I6IGNoYW5nZXMgZm9yIHBlcmwgY3JpdGljIChzbWVobGlnKQoqICgyMDExLzA3LzI1
KSAtIEJ1Z2ZpeDogdXNlIG9mIG5vdCBleGlzdGluZyBvYmplY3QgaW4gQXR0YWNobWVudFN0b3Jh
Z2UucG0gKHNtZWhsaWcpCiogKDIwMTEvMDcvMjIpIC0gQnVnZml4OiBhZGRlZCBjaGVjayBmb3Ig
RW5jb2RlT2JqZWN0IHRvIEFnZW50QXR0YWNobWVudFN0b3JhZ2UgKHR0bykKKiAoMjAxMS8wNy8x
OCkgLSBCdWdmaXg6IGFkZGVkIG1pc3Npbmcgb3B0aW9uIGluIEFnZW50Q29uZmlnSXRlbUVkaXQg
Zm9yIGRpcy9lbmFibGluZyBDSUF0dGFjaG1lbnQgY2hlY2sgKHNpemUgKyBtZDUpICh0dG8pCgoj
MS44LjUgKDIwMTEvMDcvMTgpCiogKDIwMTEvMDcvMTgpIC0gQ1I6IGFkZGVkIHN5c2NvbmZpZyBv
cHRpb24gZm9yIGRpcy9lbmFibGluZyBDSUF0dGFjaG1lbnQgY2hlY2sgKHNpemUgKyBtZDUpICh0
dG8pCiogKDIwMTEvMDcvMTgpIC0gQnVnZml4OiBjcm9hayBpbiBtZDVfaGV4IHdoaWwgY2FsdWNs
YXRpbmcgbWQ1LXN1bSAodHRvKQoqICgyMDExLzA2LzE0KSAtIEJ1Z2ZpeDogdXNlIG9mIG5vdCBl
eGlzdGluZyBvYmplY3QgaW4gS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5
cGU6OkNJQXR0YWNobWVudCAodHRvKQoqICgyMDExLzA1LzE5KSAtIENSOiBhZGRlZCB0cmFuc2xh
dGlvbnMgdG8gZHRsIGZvciBBZ2VudElUU01Db25maWdJdGVtRWRpdCAoaWYgS0lYQ29yZSBpcyB1
c2VkKSAodHRvKQoKIzEuOC40ICgyMDExLzA1LzEwKQoqICgyMDExLzA1LzEwKSAtIEJ1Z2ZpeDog
VDIwMTEwNTEwOTAwMDAyOTIgKG1pc3NpbmcgY29udmVyc2lvbiBmb3IgZXgtL2ltcG9ydCBvZiBz
ZXJ2aWNlLSBhbmQgdXNlciBhdHRyaWJ1dGVzKQoqICgyMDExLzA1LzA1KSAtIENSOiBhZGRlZCBz
Y3JpcHQgdG8gY2hlY2sgcGVybCBtb2R1bGUgZGVwZW5kZW5jaWVzCiogKDIwMTEvMDQvMjgpIC0g
QnVnZml4OiBUMjAxMTA0MTg5MDAwMjMyMSAoZGVidWcgb3V0cHV0IGNhdXNlZCBpbmRleC5wbCB0
byBiZSBkb3dubG9hZGVkIGlmIGF0dHJpYnV0ZSB0eXBlIEN1c3RvbWVyVXNlckNvbXBhbnkgaXMg
dXNlZCkKCiMxLjguMyAoMjAxMS8wNC8xOCkKKiAoMjAxMS8wNC8xOCkgLSBCdWdmaXg6IHdyb25n
IHJldHVybiB2YWx1ZSBpbiBiYWNrZW5kIEN1c3RvbWVyVXNlckNvbXBhbnkKKiAoMjAxMS8wNC8x
OCkgLSBCdWdmaXg6IG1pc3NpbmcgImNvbW1vbiIgd2lsZGNhcmQgcmVwbGFjZW1lbnQgdG8gUGVy
bC1yZWdleHAgaW4gQWdlbnRRdWV1ZVNlYXJjaAoqICgyMDExLzA0LzE4KSAtIEJ1Z2ZpeDogdXNl
IG9mIHVuZGVjbGFyZWQgdmFyaWFibGUgaW4gSVRTTUNvbmZpZ0l0ZW1MYXlvdXRDdXN0b21lclVz
ZXJDb21wYW55CiogKDIwMTEvMDQvMTgpIC0gQnVnZml4OiB0eXBlIGluIHBvZC1kb2N1bWVudGF0
aW9uCgojMS44LjIgKDIwMTEvMDQvMTgpCiogKDIwMTEvMDQvMTUpIC0gQnVnZml4OiB3aWRlIGNo
YXJhY3RlciBwcmludCBlcnJvciBpbiBtZDUgY2F1c2VkIHNvZnR3YXJlIGVycm9yIChtaXNzaW5n
IFVURjgtZW5jb2RlKQoqICgyMDExLzA0LzEzKSAtIENSOiBhZGRlZCBwb2QtIGFuZCBodG1sIGRv
Y3VtZW50YXRpb24gZm9yIFVzZXIvQ3VzdG9tZXJDb21wYW55L0N1c3RvbWVyVXNlckNvbXBhbnkK
KiAoMjAxMS8wNC8xMykgLSBDUjogcmVtb3ZlZCBIVE1MLXZlcnNpb24gb2YgZG9jdW1lbnRhdGlv
bgoqICgyMDExLzAzLzMwKSAtIENSOiBtb2RpZnkgQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQuZHRs
IG9ubHkgaWYgS0lYQ29yZSBpcyBub3QgaW5zdGFsbGVkL2F2YWlsYWJsZQoqICgyMDExLzAzLzMw
KSAtIENSOiBhZGRlZCBhdXRvY29tcGxldGUgZnVuY3Rpb25hbGl0eSBmb3IgQ3VzdG9tZXIoVXNl
cilDb21wYW55CiogKDIwMTEvMDMvMjkpIC0gQnVnZml4OiBmaXhlZCB3cm9uZyBncm91cHMgaW4g
Y29uZmlndXJhdGlvbgoqICgyMDExLzAzLzE4KSAtIEJ1Z2ZpeDogZml4ZWQgcG9kLWVycm9yCgoj
MS44LjEgKDIwMTEvMDMvMTgpCiogKDIwMTEvMDMvMTgpIC0gQ1I6IGFkZGVkIHBvZC0gYW5kIGh0
bWwgZG9jdW1lbnRhdGlvbgoqICgyMDExLzAzLzE3KSAtIEJ1Z2ZpeDogYWRkZWQgc2VhcmNoIGZv
ciByZWZlcmVuY2VkIENJY2xhc3MgQ0ktbnVtYmVyCiogKDIwMTEvMDMvMTYpIC0gQnVnZml4OiBh
ZGRlZCBzZWFyY2ggZm9yIHJlZmVyZW5jZWQgQ0ljbGFzcyBDSS1uYW1lCiogKDIwMTEvMDMvMTYp
IC0gQnVnZml4OiBhZGRlZCBtaXNzaW5nIHN0YXRzLSBhbmQgaW0tL2V4cG9ydCBtZXRob2RzIHRv
IFhNTDo6VHlwZTo6Q0lBdHRhY2htZW50CiogKDIwMTEvMDMvMTYpIC0gQnVnZml4OiBhZGRlZCBz
ZXNzaW9uIElEIHRvIENJYXR0YWNobWVudC1kb3dubG9hZCBsaW5rCiogKDIwMTEvMDMvMTQpIC0g
Q1I6IGNoYW5nZWQgU3lzQ29uZmlnIHRvIGZyYW1ld29yayAzLjAKKiAoMjAxMS8wMy8xNCkgLSBD
UjogYWRkZWQgcHJlLWluc3RhbGxhdGlvbiBub3RlIGFuZCByZXF1aXJlZCBQZXJsLXBhY2thZ2UK
CiMxLjguMCAoMjAxMS8wMy8xNCkKKiAoMjAxMS8wMy8xNCkgLSBDUjogbmV3IENJLUF0dHJpYnV0
ZSAiQ0lBdHRhY2htZW50IgoqICgyMDExLzAyLzIyKSAtIENSOiBhZGRlZCBkb2N1bWVudGF0aW9u
CiogKDIwMTEvMDIvMjIpIC0gQ1I6IGFkZGVkIGF1dG9jb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGZv
ciBRdWV1ZSwgU2VydmljZSBhbmQgQ0lDbGFzcwoqICgyMDExLzAyLzIyKSAtIENSOiBhZGRlZCBu
ZXcgYXR0cmlidXQgUXVldWVSZWZlcmVuY2UKCiMxLjYuMCAoMjAxMS8wMi8xNSkKKiAoMjAxMS8w
Mi8xNSkgLSBDUjogYWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgU2VydmljZVJlZmVyZW5jZSB1c2Fn
ZSwgcmVtb3ZlZCBTVERFUlItcHJpbnQKKiAoMjAxMS8wMi8xNCkgLSBDUjogbWFrZSBTZXJ2aWNl
UmVmZXJlbmNlLCBDSUNsYXNzUmVmZXJlbmNlIHNlYXJjaGFibGUgaW4gQWdlbnRJVFNNQ29uZmln
SXRlbVNlYXJjaAoqICgyMDExLzAyLzA4KSAtIENSOiBhZGRlZCBuZXcgYXR0cmlidXQgU2Vydmlj
ZVJlZmVyZW5jZQoKIzEuNS4wICgyMDEwLzA3LzAxKQoqICgyMDEwLzA3LzAxKSAtIENSOiBhZGRl
ZCBuZXcgYXR0cmlidXQgQ0lDbGFzc1JlZmVyZW5jZSBhcyBhIG1vcmUgZ2VuZXJhbCBhcHByb2Fj
aCB0aGFuIENJQ29zdENlbnRlci9DSUxvY2F0aW9uCiogKDIwMTAvMDcvMDEpIC0gQ1I6IHNldCBu
ZXcgZGVmYXVsdCAtIGRpc2FibGVkIGV2ZW50cyBmb3IgbGluayB1cGRhdGUgKENJQ29zdENlbnRl
ciwgQ0lMb2NhdGlvbikKCiMxLjQuNSAoMjAxMC8wNS8zMCkKKiAoMjAxMC8wNS8zMCkgLSBDUjog
cmVwbGFjZWQgdXNlIG9mIENpQ1NVdGlsc09iamVjdC0+R2V0TGlua2VkT2JqZWN0cyB0byBMaW5r
T2JqZWN0LT5HZXRMaW5rZWRPYmplY3RzCgojMS40LjQgKDIwMTAvMDMvMTUpCiogKDIwMTAvMDMv
MTUpIC0gQnVnZml4OiAgYWRkZWQgbWlzc2luZyBmaWxlCgojMS40LjMgKDIwMTAvMDMvMTUpCiog
KDIwMTAvMDMvMTUpIC0gQnVnZml4OiAgYWRkZWQgbWlzc2luZyBlbmNvZGUgb2JqZWN0CiogKDIw
MTAvMDEvMTgpIC0gQ1I6ICBhZGRlZCBDSS1udW1iZXIgdG8gQ29zdENlbnRlci1hdHRyaWJ1dGUg
cHJlc2VudGF0aW9uCiogKDIwMTAvMDEvMDgpIC0gQnVnZml4OiAgaW1wcm92ZWQgZXJyb3IgaGFu
ZGxpbmcgaW4gQ0ktRXZlbnRzIChDQyAmIGxvY2F0aW9uKQoqICgyMDEwLzAxLzA4KSAtIEJ1Z2Zp
eDogIHJlLWFkZGVkIG1pc3NpbmcgY29uZmlnIG9wdGlvbgoqICgyMDEwLzAxLzA4KSAtIEJ1Z2Zp
eDogIGZpeGVkIG1ldGhvZHMgRXhwb3J0VmFsdWVQcmVwYXJlLAoqICgyMDA5LzAxLzA4KSAtIG5l
dyBDSS1BdHRyaWJ1dGUgIkNJQ29zdENlbnRlciIKCiMxLjQuMiAoMjAwOS8xMS8yNSkKKiAoMjAw
OS8xMS8yNSkgLSBCdWdmaXg6IGNoYW5nZWQgU2VhcmNoU3RyaW5nIGZvciBMREFQCgojMS40LjEg
KDIwMDkvMTEvMjEpCiogKDIwMDkvMTEvMTMpIC0gQnVnZml4OiBjaGFuZ2VkIG1ldGhvZCBmb3Ig
c2VhcmNoIG9mIEN1c3RvbWVySUQoQ29tcGFueSkgLQoKIzEuNC4wICgyMDA5LzEwLzIxKQoqICgy
MDA5LzEwLzIxKSAtIENSOiBhZGQgc2VhcmNoZmllbGQgZm9yIEN1c3RvbWVySUQoQ29tcGFueSkK
KiAoMjAwOS8xMC8yMCkgLSBDUjogaW5pdGlhbCBpbXBvcnQgZm9yIE9UUlMgMi40LngKCiMxLjMu
MCAoMjAwOS8wNy8xNSkKKiAoMjAwOS8wNy8xNSkgLSBDUjogYWRkIEJhY2tlbmRNYXBwaW5nIGZv
ciBVc2VyIGFuZCBDdXN0b21lckNvbXBhbnkKKiAoMjAwOS8wNy8xMykgLSBDUjogbmV3IENJQXR0
cmlidXRlIFVzZXIgYW5kIEN1c3RvbWVyQ29tcGFueQoKIzEuMi4wICgyMDA5LzA3LzEwKQoqICgy
MDA5LzA3LzEwKSAtIENSOiByZW1vdmUgbGlua3MgdG8gb3RoZXIgQ0lzIGlmIHNwZWNpZmllZCBD
SWxvY2F0aW9uIGlzIHNldAoKIzEuMS4wICgyMDA5LzA0LzAxKQoqICgyMDA5LzA0LzAxKSAtIENS
OiBuZXcgQ0ktQXR0cmlidXRlICJDSUxvY2F0aW9uIgoqICgyMDA5LzA0LzAyKSAtIENSOiBuZXcg
Q0ktRXZlbnQgZm9yIGF1dG9tYXRpYyB1cGRhdGUgb2YgbGlua3MgZnJvbS90byBDSS0KCiMxLjAu
MyAoMjAwOS8wMi8yNikKKiAoMjAwOS8wMi8yNikgLSBDUjogbmV3IENJLUF0dHJpYnV0ZSAiRHVt
bXlYIgoqICh3YXkgYWdvKSAgICAtIENSOiBuZXcgcGFja2FnZQo=
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURl
Y29kZT4+CnN0cmVhbQp4nOVYTY/bNhC9+1fwHMAKh98CDALS2i7a27YGeih6apMCRTdB9pK/n/mg
ZEUirRRBT8UCXErkvJl5nHnUru5AfT58UlppnPned0YlB11Sr+8Ov75RH2QNf17/Ooy3Q993ViXt
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
MTUvSGVpZ2h0IDEzMy9CaXRzUGVyQ29tcG9uZW50IDgvTGVuZ3RoIDcgMCBSCi9GaWx0ZXIvRmxh
dGVEZWNvZGUvQ29sb3JTcGFjZS9EZXZpY2VHcmF5Ci9EZWNvZGUgWyAxIDAgXQo+PgpzdHJlYW0K
eJzt2EuOIkEQBFHuf2lGml70NEN96EhP84W9LSwCNyEVPJ/q8ng8brxFKfeGtw3oxvK2Id3Y3jik
y/Gtw7oa3zisD/Jsv00/Apy/vPsw/XW+v3Vot/JsvknfbuTZfJH+dZln8z36yTzdzvNsPkavzh+s
d1+jV2c/S7cfo1cHHaxT4m0Ivzwt3pXwsa3H/ymsU+T17xv/zqnyPEDfpS/WqWaeauapZp5q5ulm
nmrmqWaeauapZp5q5qlmnmrmqWaeauapZp5q5qlmnmrmqWaeauapZp5q5qlmnmrmqWaeauapZp5q
5qlmnmrmqWaeauapZp5q5qlmnmrmqWaeauapZp5q5qn2No99Wpinmnmqmaeaeaq9z2OfEuapZp5q
B3ns08E81Y7y2KfCYR77NDBPteM89ilwksc+PPNUO8tjH9xpHvvQzvMYCHaVxz6oyzwGIt3IYx/O
nTwGwtzLYyHI7Tw2InyWpw+9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg9
7xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9Xxg97xS9
Xxg97xS9Xxg97xS9Xxa97hy9YBQ97hy9YBQ97hy9YBQ97hy9YBQ97gL0hEH0tCvQGwbR065AbxhE
T7sEPWIMPewa9Iox9LCL0DOG0LOuQu8YQs+6DD1kBD3qOvSSEfSoC9FTBtCTLkWPuRw96GL0nIvR
cy5HD7oUPWYAPelC9JQR9KjL0EOG0LMuQs+YQy+7AD1hFD3uFL1fHD3wCD3eFvTIv0TPthE99cc+
+XB/ADUB1oYKZW5kc3RyZWFtCmVuZG9iagoKNyAwIG9iago2MzUKZW5kb2JqCgo5IDAgb2JqCjw8
L0xlbmd0aCAxMCAwIFIvRmlsdGVyL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnic7V1Lj9s2EL77V+gc
wA7fkgBBgF9btLe0C+Sw6KlNChRNiuTSv1/OjLTWig8xu2tTUYQFZi1LHJLifJqPnBHNdrz4b/Ol
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
iKwZRfYoHKQCuUQciquNbW5d7GxsVOrc3lavx+VcxmCZdhY1NS9zyQublzc1OL3u5ialzoWiOOsa
XTpvKEp9o9O9zKE0OJc5FzFxEkQYmC5OSh0y27DI1eTyOBsdSmuLq97NBqhHt8dV7+WQqHvURCNn
t765qdV13XKcQLgECYe8YrGLk0ABnPinnnPGxW9CcRkeb7PHm2RlhbvV5VCcHncrs8hCTzOyy+zZ
vJB7wHLUJzNek8EvsxGbO9M7EIrtNgRscDkbEWErYwMn5AxY9C7XzT4tEme+bQS3nhp5GtVzp4N7
rZ4E0IUXhTBw9Tk+xGMJI4ufOnp2Sx3Y7Dh26KmXpw/0bjyJ9NTr79UwA8ZYKglH5TBLJn2BGI90
PAKDYf3MU2JqNxLDXSyKOBTmSrUbt8WSbGYElJw4DCPRAG7piwbimEwUtQdno4FbjGM4ahxTXAIl
JQGjkkoOOv9RLRbBUyrQq3X3VyBslJ1lnJNACGu1oCE6V58vXpMoFeJKJ0fuD8dlrOgqFFnmFddF
l07nW8temjpI1usg5ULqIDlVBykXWAfJZ9ZBRpL3cUyxxJkxSoGaKljki6mVlEStJH88aiVZt8MH
VivJesBeVK0kX8JaSU7VSsoF1kpyRl1wAbWSfLZaSTn/WklOq5XSwzejXMLzHJPEpSqXZKNcUi6q
XJIz2OXvjZe6ZJJDYeWiSyb5kpZMslEyKRdeMskjSyblQkomedSSSXk/JZPsdbYtW9LM2HYuvqDq
SE5JfjHVkZyojpSLqY7k9OpIuaDqSB61OlIupjpizpoRKMnCRz5r4aO8j8JHPnfho5xH4SPzwiez
dvjrBU08AV/Liwa5An8qztm5quwLrA1UBjCD3FwR6YpUGmlsROeM1JMwiZB+EiUB0km6SJwoZDrx
kRn4W0Vm41WNo3aEUEgdwsRJDO8o0YhKgsSBs24SQvgKHDlJN14K8SRxxfiThr8a7unFbz9CyudB
dW6Sqhcp9SIt9tfmIYRmfKi45/1RbMDRGtzXRnoQwoewKsem8R0ql0hBLCH8jiBMO+INIJyC+8NI
XeVrI/G0ciwx5CiM19qzrI4+28Y5jCHeMKdahXxWk6syoEfH0MF36LLGDUsw2ePIeQ2pxMtvwPci
fAXChfE3itJofG+Uy12BODTcszANW0IPCVucaXG2xnSrcftoqKUw6UNYZo1Lo2OGaRGu9CNMF98Z
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
M3DOz+T/BYOJRKgKZW5kc3RyZWFtCmVuZG9iagoKNTYgMCBvYmoKNzQ0NAplbmRvYmoKCjU3IDAg
b2JqCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvREFBQUFBK0RlamFWdVNhbnMKL0Zs
YWdzIDQKL0ZvbnRCQm94Wy0xMDIwIC00MTUgMTY3OSAxMTY2XS9JdGFsaWNBbmdsZSAwCi9Bc2Nl
bnQgOTI4Ci9EZXNjZW50IC0yMzUKL0NhcEhlaWdodCAxMTY2Ci9TdGVtViA4MAovRm9udEZpbGUy
IDU1IDAgUgo+PgplbmRvYmoKCjU4IDAgb2JqCjw8L0xlbmd0aCAyODQvRmlsdGVyL0ZsYXRlRGVj
b2RlPj4Kc3RyZWFtCnicXZFNbsMgEIX3nIJluoiMcZw0kmUpcRrJi/6oTg9gw9hFqjHCeOHbl4G0
lboAfcO8h4ZHUtWXWiuXvNlJNOBor7S0ME+LFUA7GJQmKadSCXevwi7G1pDEe5t1djDWup+KgiTv
vjc7u9LNSU4dPJDk1UqwSg9081E1vm4WY75gBO0oI2VJJfT+nufWvLQjJMG1raVvK7duveVPcFsN
UB7qNI4iJgmzaQXYVg9ACsZKWlyvJQEt//XSLFq6Xny21ktTL2WMn0vPPHC2Q84iH5F3UcOQ83ie
Ie8jH5APkVPkx8gc+Rg5eE+Rc+Rz5D1y5ZkzHvQX5PxpH4a/T4nPwJx/4qFisdZHEz4jZIJpKA2/
/2Umg66wvgHBSYmCCmVuZHN0cmVhbQplbmRvYmoKCjU5IDAgb2JqCjw8L1R5cGUvRm9udC9TdWJ0
eXBlL1RydWVUeXBlL0Jhc2VGb250L0RBQUFBQStEZWphVnVTYW5zCi9GaXJzdENoYXIgMAovTGFz
dENoYXIgMTMKL1dpZHRoc1s2MDAgODM3IDYzNiA2MzYgMzE3IDYzNiA2MzYgNjM2IDYzNiA2MzYg
NjM2IDYzNiA1ODkgNTg5IF0KL0ZvbnREZXNjcmlwdG9yIDU3IDAgUgovVG9Vbmljb2RlIDU4IDAg
Ugo+PgplbmRvYmoKCjYwIDAgb2JqCjw8L0xlbmd0aCA2MSAwIFIvRmlsdGVyL0ZsYXRlRGVjb2Rl
L0xlbmd0aDEgNDAwOTY+PgpzdHJlYW0KeJzcvHeAFFXWN3zvreqcqqurq7s6V8fpMLknMcN0wRAU
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
XN7BSrujXfi3LInc4r9lWfbD1sOWqOnfspMAeoQTn7lt8VsQoXw6vwWwG4u9+QzgKdqjVcsas50n
Pa0kE9JsUWSEL2NJSFasFQ+IWqv/RGZUMwcgzkoq9BgpEJk2loJOiGFCSUcI+x9tnfx+CmVuZHN0
cmVhbQplbmRvYmoKCjYxIDAgb2JqCjIyOTQxCmVuZG9iagoKNjIgMCBvYmoKPDwvVHlwZS9Gb250
RGVzY3JpcHRvci9Gb250TmFtZS9GQUFBQUErQ291cmllck5ld1BTTVQKL0ZsYWdzIDUKL0ZvbnRC
Qm94Wy0yMSAtNjc5IDYzNiAxMDIwXS9JdGFsaWNBbmdsZSAwCi9Bc2NlbnQgODMyCi9EZXNjZW50
IC0zMDAKL0NhcEhlaWdodCAxMDIwCi9TdGVtViA4MAovRm9udEZpbGUyIDYwIDAgUgo+PgplbmRv
YmoKCjYzIDAgb2JqCjw8L0xlbmd0aCA0ODcvRmlsdGVyL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnic
XZNBbtswEEX3OgWX6SKQSEpUAhgCHDsGvEgb1OkBZIl2BdSSQMsL3z7885kW6MLGIzkcPo44+Wa/
3Y/Dkr+HqTv4RZ2GsQ/+Ot1C59XRn4cx00b1Q7ekkfx3l3bO8rj3cL8u/rIfT9NqleU/49p1CXf1
sO6no/+W5T9C78MwntXDr80hjg+3ef7jL35cVJE1jer9KeZ5a+fv7cXnsutx38flYbk/xi3/Aj7u
s1dGxpoq3dT769x2PrTj2WeromjUardrMj/2/625gluOp+53G2KojqFFUb80kY2wKcBWuJT5UthV
4Irxz2AnbLfgmvwKfmKeGvzMPBvwmnl24BeyBW/IGrxl/hL8ynk5a0dGfl0wP3Jq+pcyT38HH538
kVPTv8ZZmv6VMP1rA6a/ewLT38k8/Z2cRX8rOelfwk3Tv0bddPJHrTT9K9xF07/EuYb+FfIb+jsH
Tv6IN/R3qL+hfynzqf4Sn/xxX5P8UXND/wqehv71Gpz84Wbob+Fs6F9KnuSPOpjkL/H0rxBv6V/j
LJvqL0z/Et/Xpvpjr6W/hYOlv5EY+ht8O5veD+pskz/uaNP7EU7+qIOlf4X6WPpXW3nw6WXj6aM3
v1pKdbcQYjtJA0sfoYOG0f/t8XmasUt+n2mz+AoKZW5kc3RyZWFtCmVuZG9iagoKNjQgMCBvYmoK
PDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvQmFzZUZvbnQvRkFBQUFBK0NvdXJpZXJOZXdQ
U01UCi9GaXJzdENoYXIgMAovTGFzdENoYXIgNjAKL1dpZHRoc1s2MDAgNjAwIDYwMCA2MDAgNjAw
IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAwIDYwMCA2MDAg
NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2
MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYw
MAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgXQov
Rm9udERlc2NyaXB0b3IgNjIgMCBSCi9Ub1VuaWNvZGUgNjMgMCBSCj4+CmVuZG9iagoKNjUgMCBv
YmoKPDwvTGVuZ3RoIDY2IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoMSAyNjQ0OD4+CnN0
cmVhbQp4nNW9CXxURfYoXHXrbn1776SzL52dQICYECCA0gkkEAghJiECDpiQdBbMZhYCRoZNCAwo
IIRNhIiAiIiIDgbEPYoYcMYRZoYRh1FQdIzIzJ9xgeTyTtXtzoLo+H3fe7/v99J09711q06dvc45
Va31tQ0uZECLEUHOosrCmtPdl08jhE4hhG1F8+odo3z/9BZc/wPeXSU1pZWn/3PkPEIE3mh1acWC
kv3fFwxGiC9DaPTfylyFxf8aVRWKkHM8PB9eBg3z1CoJ7h+C+8iyyvr5hyKmN8F9K8ArrqguKvxq
/+onEUrl4fmRysL5NX7CY3CdehzuHVWFla6kraNy4R7mC/lnTXVd/Vo05CZChe/R5zW1rpqSq/w5
uP8SIQFwQBhe9M8AlyK95wgviJKsU/QGo8lssdq8vO0+vn7+AYFBwSGhjrDwiMio6JgBsQMHxQ0e
MjT+joTEYUnDR4xMHjV6zJ13jXWmpI4bnz5hYsakyZlTsqZm352Tmzct/57pM9D/LX84CbWhDni9
ifaj7Xgv3JVA8wPQ0sodRstRA7S8jTvwKm4wtO1FV9FH0LMZdZD9PMKTUCK0InRO4NA1nIdeAhjJ
2BsnSyKP+Cz+JT6Hb+Mv86fRCL6OP80X8HU4kewS8oW98E4m73A2dBKFojZ8AdWhY+QrkkiO8+N5
E7pATpP96HOYhcq+A61Fu1ET4OKNq9EironLgZYTwmm0DV7V8Pw03oE/AuyO4WXoLNpCeG4i2oHP
Al0d6Du0jORxi0AvE7kSwP8EwDoN47ehOh4JZ7GCVG4QtAH2MNcc9hlMBgtn2esqWgQz56HdYpvo
LUXALJRje/HbuFPcgFrRR+Q35AHyMV7OR/D7+IlorcYBUoDWAuxtdIxYghcA7fTVRKFzjXwB3o++
4gukOQD7HUoRzPkSlwMUlaDj8G4ULUDTaLycrAJM6dNgdFqaxA+F8QBBWghUI1RNktBcuGpCB9Fh
NJhsQmsBEqNXHCF8ByO3858CzWvxI9x36DQZj2JRCX8FeI280RFR4AmHUZzDcoiLyig+5Lx7uuO9
GWGD4265dVgkxyGUfci4wNF282b2dD5QmHFICDpEouRDfFTEpz/38NPBcZOzpzsOdaeNd0NNKxgP
bbnT4ZLeQTO0p40HF8GhEnUTXyLsBk8joQCngb+BxBtYFhZxPBrafqbzDmQ503mmM97LGmaNCrOG
lfCoq44Edn2ubpJMP/y7VowFGHU3LwrnQGJ65IsinF5iiw21GNbb1vjp/M2JxN9u8bN0dXZRWJeu
dVquxONwZLWgxAT6GeOgn2Hsk8ScV7sxOX8eY/XmeTwKz1dXqu+q76jNeIGQqbapn6tfqG14Ig7A
gXjibvVedYe6U70X78Zz4LUH4ZvXwet9JZwFWiY5TSLXgpbw2EmCkFOQLWcudV26Aw291pkQjycf
UvKmv4pk5ATXJCP55hsjrSNGznB6IV0osmALFypZdE5djW6nTjeLhNnDrBHWMJH/tvtKR/cV4ez+
62eFQZR7J8HD5cF8XigIveBM0skSUUQr4Ylg5XmSCuZoJ7y9RefdYlyiB59HrDoU5GMSFH9/3jrW
Wwky8MHAm4Su9k6rb7I1OTkZMBxzDThuS6aveJCaZBG+oW/oMCP8sDME41nO1Ae9sIAELHAikXg7
smNvzof48lEoCkdx0SRGjJai5WidI2Q4Hs6l43SuTGjgG4RGr5XiSmmLuEUKnYVm4RDs6xVBhuBB
mNLn8LF7i9iamDA8aVh0BHkkpemu0+den7R6/vn38XsYdS3rXqU+1tLyGHfcZ91v1TK8aNOc7lXC
2T//9ZFj3NTuK83Lli2nvr755kV+F2hDDPqtc4zRwJn0XEhoiKzjJIULDQ1JVfQhobwdI/uT3hv9
Wqx8C9oYtd66ZkCIog8NlFB4oL9psOTvHT7Acr4dtOaS1ZbM+ALKcwm057srlneBFRpnTJQr7i9g
jjkWmHMkNHZo7NRYMgvbh+CIcNHu7RMKlNq9+bDw6JikEKwROBQPwUnDIhMTfPiJdafu2/Ni494H
P/uL+ol6ee63i5s6a5873ryt6bP3se9/yv8m7H5nxPDF84pcof6Dzh0594/4oX9MS1/526qHQv0G
v/Hsu5eiKd2gC/xq0AU9GuK0iy081T65hX9OEbBOAh3kDVTSZ9rbQcSdncwQDocaAWEvql/u90ly
qDuAO9GdzP3QdRcompq+v/vifoA+GqCDN0N6PNOZLlhFcPWgZxL9EnjMYWLlOKy3Qk/FqlMw/dIr
kizprLIspSoSj3kZvS5w7itOFg2WM+1n2oFxVOU6E3z7KJvsfgvf3Ho/I5zZzuRD5rx7Jx+y0A9r
3r1gSoabb8DcBng5mSlBN29qYgZmYgb6XDOxLQrPKwG8XYlW7uTvUKbx90jTlRJlHn6QnyfVK4/w
S5Wt/E5+s/SYsk7Zi5/hn+f3SE8prUqQAlGDADFDALELdl2APpZEC1G6gXqHcRQ4/hHCMGm4Llkf
b8wg6UKabpLeaZyB8vEMbga5R8gXZ0j5cr5uhj7bWG2cjxcZH8cbpWfxbumQ8Q/GC8abxqFgEDou
QofhX6IO88Xq/Xj/OfWYeuwcflGtPYdjcSxf0H2h+03cpk7kJnE+6gN4LdA2AhzBv4Ud4ANGOv1N
gmwmzyArPi43K3pQeh7JFpsp3dvSNaYd/iUwC++8Nqa9MwHMPf7w83bQAMzE7+0zGtsjwqOTrBFJ
iVbciJvU5ZPrXn317K7mZmGH+tba7tZVWdt2/okrWIvvot7nAbC0RbC2eaNAVOOMBC+gWyGvFOzP
YOGoAb/id9TWZlgTFGjnZLuMJnM2c1oQqOC1znYwKc0ZX7Jcgde1K9AQ74wdG1wT3Br8x+CrwcJY
NBaP5cbaxwYKcdJQeaguTqlG1biaq7ZXB+pmPQA428OYKY2wm3CEw+3QJWZxEr+o67Dh9MtzT8wp
+uP96jX1BI7t+gxLbdyelduOmrjZM187MWzYwYFxeCRWsBcep37SvvmlgzuoFR0DPS8GmrzQcKc/
0SFiwmKzydpmOK5gTkZZRp2sp9zsTLjWSRX30jVwnTZQ3pcK7H+wc5SXEVZwX2D3cJFovwtTCy9u
e+ihlgNHj6a+2PDmu9zu7t9wO3bueG13dzNfcNBV/C3MW33zIjkB88agy26vlet2WrkhPU4LrcCr
eO8V9lV+R6380ai2Xq+VEyibJNk7PG2ABXz5mX5eq9Oi/ueK5T9XbP29lsdpoRjq0SuDlCB9kGEI
MDpOH2cYrRutjNaPNugdyIEjuQHKAP1Ar6HeQ+0DfQaEDAiNdcSGRcasUFboVxhWGG00pOQ4URH1
xECMxETMxEL8SQAJJEF8sC5maOzY2PtiF8Uujl0X2xp7NdYPdP2BW92jGPFT9zgcmEdWZ+2buWrV
nI1j2/d8/9eZb1eUvFu4dI3rWeezW/7xQclL/NiDAwbk5TkzwkwDt67afiQi4rWkpBl3T86OMke2
LN1xIIRq6puA4ALRm0UZg2Blfo1/AR3nBCzzKF0G0+hMAFle6uqMd+rpuputK4C1VwDXmMiEGPFm
G/zxBTdaRe+vPJrfANKiEcckiDiO2tBRQxuNOGzmu4nNnubHFL0n4nBGjPVvQk3iImmRvEi3SFmk
bzIsMi4yLTIvsiyyNtla/a/6W0F3GDs0BsSw8CSChSpc3cYDz7ZsOHBgw1VsU69c/Zf6LbaSC5dP
nrz85Xsnvtquvqd2qt+AmieDNnvjkdpqgDfAakBQ8svoeQ6D/+ctNAYa2knDDwv1jTzzmRCyu32m
0xgvOIVsoUBYK+wUREb9yfffF85eH6RBFEMBogG97hxGrODbOSuYBP0inE7RYaui6MDTc0Qm6HlZ
L+hkiDMFRQzi71JgeiMLwtz+nrqf23t80MgaE9XIfCKZZbOOU+yct+SlRHPRkkOKVhzKMClJKece
4pqkBcpibqm0VFnH+fBYT7xwIInAcSRGHqAbhseQfHmGziXP1c2TF+iW4EdIC36ceIPqeYXpMI2o
cAQY60k8GC/Ei/Dgd9RFHeqiduFsl0x+uD5ICO0Cxlz/FCgvxhe4Rdwy4KX1CNrO8cAzy/lTLDSN
p4tnMRfY/Tm3bDf1HzQWjYHowx/8R4DxSdNBpcWKn0QH+RZfCDICJH8jive2BFAH4laPayyoiH/J
HBgaSP0HNQstKO3r3MISfISYkstLbyL1KrZgtPRyydxvHlafUx/EK3Duim+EOWfvm62eUP+qnlNP
zL7vo4kT8U5cisvwzgmgrxaaCYPsOKSgY84UWB8QL/CcVYC126oQBVk5RIgiwVou0kadlSgyfZCK
iNSCyRIdSBPWepo46ARFD0u3JsdLNFLsEaN7vRZ+snyDUB0GKtRRZjQdzUM1aA0SJCxD+KjjfbA/
l4+nc9kGwJebj+dxD5FavlGaLzfjldxiwxZuK9nE+9L1EYfhRBxBwkgEd1y9wkWpTZ9zyX9a2X3f
yrOCqdufHLw+CC9Sl2h+nEwCC7WieKe3qJeQVU+aTW2645IiQsCdbqN+klk9rEdnTtEF6KVsr51e
VAKaX+p1375kUmhG3Panjx4ddWy515Ag8pLN2vFa92Fw3iVFggBcPQb+YDf4Fz3E4bAKk6MGs+6o
n32NuS1wsz+y2Sb4GUQ5IJ3F2trC0UkXDsu7V+KPFIQsDmkNITCvtmwwB4DpxDarhaNO0Q6YkM+f
fuyxp+m7+9FRLzSdunnzVNMLo44e5YZ2XL7cAW8up7hQPa7+AK/jhcX7ABngwkHAazpEbbesZmsU
fNxAV7IsWNLYanZN40XCrauZlzXRqnkkuIhIAm0Mjz5IF7Pn2trGvdDw5nv4GLe3u3Dnztd2c003
Wg+UFF2l8/b62/CX0WYOwyw93sdptLi9TI1wVRA1JwsOVvT+sZOOBd9KLoPk/NFYZyCseCt50wrj
SoWueL5t1IRsRjTROw1M6JLHhCzqNbrAgfc2B1oCFweuC2wNFHCfANwTJ4S7TYlcznoi+8V3330x
+4msKXtmdat/Bi8gTtvFJx0YNOji6dMXBw3aHxkJQjBhGx4VARKmZL3NR7AVJAhWkGX8XrQMVhDC
I7+eFQTYGD8i0c6WjKsfwZ+q8hEq1Q81n98NNFlAP+5yBgYcRSbvo4LcZlqDXyXHg602/QRfiNS4
PhpiuXSJqUg7kKXTdOQfITyeFdWjl2716Kc2daCjHu3gRnpUZl/3QVHZ30c/8NdurQHcmkBHBgNu
CopCx50x/qF6X50JPeMrHjVZHStCjwUdjQC2+xqQL/GjOhNKZO+0aMDz1BlA1coCyvZL17quUXW2
XLFCGkmjuar44PiQ+NB4R3xYfPjYGGewM8QZ6nQ4w5zh2cHZIdmh2Y7ssOzw7JiamOXBzSHNoc2O
5rDl4etiWmOuxoR4hnoGeQYUhBSEFjgKwmpCakJrHDVhi0MWhy52LA7zm9Vn9bwTj/DoKg0hwpIY
h6QkZszcaxcOLKneerStbezxlQc6um9g7unNBUfyXK/N/J+rXGJJ05y6cy/FZnYv2V9S+OauV9+w
LVo9ZMj+mJguz7o/E/Taotm5R45rTG14M2ESnACyTAvWLCqhx87b+9l5jylxVosNUMKeNR+wJLva
2ka98FDHzZsdD73QfQKkt28fSJAc4Wb/2LmvuBCPxzK8xheqdo8IwWYOw6oTC/7diiY7fWTOqkdC
i2mNDi2xyUHKSFj8U2w9JRDQLproJ/eEATaWItmQzZ0iHQn1WguekFDD7LF9rUZyuOPg228d7FAv
qF+on6sXYK1sAD2/SlZ3/UY9D0Y0EEdSLoG2z2TR0QCIjiL8DcE62wovn6NmcjQ6oi3muO6o+dWA
4Gh/JBsmiDabIy2WOmM3w9ovaSxTz9KsIBn4NnDxwNaBt/hHXwvXm03fifsw0zcpkeza07Jxz56N
LXvaVPV64YG7796R8/uXkg8/9EFX1wcPHU5u4+587/z5906cP/+1+pn6VXDIi3EDX3393qI5eBQm
mMej5hTt78kFQNpeaFj/XGDz7XOBTo/3PFygZVV9MwHrf8kERO/uHTQVgHk/ho+DSKXxxsvgZLA/
8uvxntS9fEwdC+JxIERknwunIQYdikaiTFTgHJ6WOm5swsmJ8SeTJ41735D8Pjrp957hZOTEtMR4
/o7UMWOTh2fcUTB5eMG4MbNtupDJs0VdyH0Dp1jOQ+xrUbvbwX6pRduSbWx5v/Kd+o3lmwTLlT9f
SaayAAuTRCoBXx/mUoezQDUaYlXe18dm9+YgRIgIj4yJ5pKG2UYMj/SKsHqCWVrbkXx8fH0joH9E
BHCER8s+mz27oGD27M+WPXxx9qxZs38z++LDW7BUWVlRUVmp/rhli/qjdo2lhU1NVfdMLzl0sLzA
b9yQVQeWjM4Ynvq4UDJ79uzPly65OHv2fffNnvXZsuUXZ82eXVoFo69v26LeqKysgmssbNmGRbhW
56idd03OHFvauCC/xipPybjwYUGiup2Md8dtqyFuC0bJTgcSAnELCWyRbU9aD9pbTOvlNSEcCrIO
4xP9/PWWEGpLl7rae+I39cwVmkxHWcOSwqzAAnfExvvagVZPLMe/rR7hbA3qF63qLrUBr8azH8NS
dU3XavWK+g3E7bb7953F6/d2L8qdhrfiSlyFt05M/8t9BeoH6ofqn9QPojSNlILBssLRTGe0aNP5
mZEYLNkNzcEO0hZ43N8CcY5ZlsVsq2zODvKDkCOClfe6IPC2sYANElYWfFM1dXrFR2ZH1kSui2yF
1+uRFyJvRupAb5mm2vtq708S2ti0N5Y+/9rR2oa1e4/WNj6y9+jRsYcWPPgsWfXQvP98RpX6ye1U
qbkdux5//SmW5pbOechdpRJGsypVnNNbbuGe49ESRZRIkDBShz1Fqi62mo65BBfxh7NZjSrRGkbd
JnxCSsL9/f33u8MhMenezhVfH0TrVR7YcwG2gr51DpCtgihIVlEUiNUT66bKAkcgOdGJAuZFmc6n
14pi1luqUHyf8JWn4atMaPj6mDeHeU4n+3ADhAHyCG64MEyewKUL4+RpXCk3j2sUlnErhbXyRu5x
+TJnh+hW0ImBxF8SIJaW/MgAYZA4UBrODxeGi0lSvCGFOPk0wSk6JadhDingy4RSqVGoMawmq4VH
xbXSWsM28oT4hHSE/F56h7wj/YX8WfqSfMV/KfxT/J78IPwoxs16AHJpYA+mSQ1m3NmB+e5AEqB+
151IebSKa+ye2HWR+0P3HZRLd4J3XgQxoRnvco6TZE5nRWZarEPIbLKakdloNRgR/TIZFb1isOr1
SqpRr7MgvdBMXjXpj1tMRoOiEwmSzbxZb4FcQKviuZcWa7+6cd9SnkxTA9+EnhqezCp3FpaFWuDV
v3JnYcuShT7XstOrIhJkUUeMPoqv0WKMMCYZM5SpSpZxpm6mMldpNi42bjDaFAS46QWD3qQ3+2I7
Z+Etgq/irfc2BJgCzDEoEkdyDt4hxEKSGKVE6iMNMcaBpoFmh3UESsJJXDwfL4xUhuuHG0Yak03J
5nhrCnJiJ+cEUTk1UcmpujRlgjHDlGF2WvPQ3fhubhrJ5rOFfHGalC/fo7tHmaafZphhmmHOtpbg
Eq5MKTeVmwusTfJ803zzKvQ73XL9csMq4yrTKvNWXYu+xbDNtM28W7/b8KzpWfMh6x+sF6w3rS7I
eAQTHoSTwImOxbQqmMhtyNr40IaKzLzEMHX023g2nv122XsPbpu4Io/P6tpIKoBj+bAqJIF8DRx2
ZgjTRAFyc36aoiPTQJzcNMyBQEWavgtgF+703YAM2IqQIVUBAwHJvq6XDXpFJ2t7RZA9GS1nTnkq
tT9bqpX7pn89UrbSIq2NfnjRDz0TupEJ3QivHqEboK/RXdWlPZj4jbSnJv6bAufD+QjhSpKSwWUI
6YpTuZe7V5imZCtVXJVQoiyAJH2BsEho5rZyW4SNynHuuPABd4L8QQgWOB0Reb2gyHodfBnsnD/x
4QOEQDlQ5623G+i+RQQXQ8L4KCFcDJei5BhdpBKmjzAkE7BWOdkQb0rnJpJ03smnupVgvG68Ml7v
NDlN+Sgf53PZ/N1CjpgjZcu5ujxQgCJUjF3cXOLi5wpzxblSla5QX2qoNjWgBryAW0jm8wuFB8VF
4oPSIkh1F+gW6ZqUefqFhmbqQUyb0Wa8kdtAtvOPC3S/ZKvsHLrJsNO0F+3Fu7nd5Fn+WeEZ8Rnp
WXm34XnT77kXyKv8K0Kb7nVTO/c2OcW/LyyglY7EQEz/4Qg9jshv++Lzc1983qZ+fO5f/z7HF3Rt
InPp+0Yr2dQ1F5i946YNvw1xh4D8nQayAy0TCU+DDxF85Bla7+hi8QeJ8Lr60e4lOeoB9Q3sdO88
RIDf1aFYp82988A/JwuYbTsomofV0iO66WDW9910iDhJZnbXcNndh96n+w0T93ePQMzutYqFiF52
xvDUlxMrqCbz5gSec1aMUSrg9zyiZQkkwGyeqkRnws9VlrJl6sXnIDKQTOAnCDPJQrKMSCKSOJnX
iXQXKwC0YiCKxtFcLB8rRIkOeSRKBLsbw48RRogTURpO4zL4DGGCOAPliyVcOV8uPIjm4XncAn6B
0CAulregzWIs8D6MGSzmJnW/+xE+h//2p+4TwtkbvvxXrJr2KfBsJlurJjvtqaSV51qFJRJq1cmh
YhBBoVhvOdPZrgV9CXRDjlLEbMpMnaOe2Y8eXpr9vGQmZp6bNSLMKiRFJVLGqniSuhW73seTunbv
5+smtk28fnY/zWHo/tjaPrulrTbUqu2WBplDSJA98JbaJXZH1jTd7FeUXL39iSfg3xNP3MA69fsb
N9TvsU7IVk+rp+B9GkhPxMNwYqtap65Qm9U6/AhegB/Ej1Ac1gIOmxgOkWi6M9JLRMYVBtTqI7YG
+eyxtBpWha8PWhNlCNcF+Yd4BZGw0MAoQAqwuqTtw3VpGwfavoF3B+rAp7nT5DTfIXSI0u6QwyHc
rP7VVK0UwBEavSC7N+opqnG7V+7cuRLeWJf5eOZ7H5lHH77/UyyoVz9Tu9UrOBsHZj5ORh/b9eQr
rzy56xi3oC0yWv23+u09s9Rvv/5C/Scjag7eE0J1Ft1M5Q6zmutgpzcKwBzmAggiqdxOsAcOYTK0
nZXkr3X23VcFoYJ9cvL+7h/2C2d/rETMEi/yxQApGDU4I/gAybrCEhzQKnm3WlYZuVa0xLgGqPQN
wgoYmGIRISBtP0OzTFY2AKl9ccWitmvsAY3xyaNLKnWqIcyphqAQt1P1qFMIU6cQ+py1M+v08Krf
tiVNpD8h/t2tcdPjruNI9Yz6LSxBM9+4/7n333/u7ifzqA0/ZjarV/75L/U/DkfHHfFHtm8/EhlN
pV4MOr+bVSGNaI0zGBuJERFiTEVEL7UKtMqIDQoKEmXeYLKcP6PtUdGy1BlYdTxBBX8SmHaSWYJe
WzEAfxOjy4RMnsVioB4NRBPRDFSOGtHvkOSDB4FRDyLDcRaeaphqzMcluAE/SJZjo1ZXJIm0aEMD
zCQiqhxWk9SzZ092zxaiui6S012J+9RWXPC2Z5+VRpkCinIatC3+IDIK8dRLUnO91Bnv1MVL2dJi
spjntdDVHgZh2V+67hPOUiPEkK8h7geWWdY4gwQLNsjPiLgZbTaJxxXOS0KSTpCNZn2mZ9uu3cbK
LDQghgzNpiXv7AiBN5OcN7x6FlITa2cc8abPtaTeac+2t9rprjSIMBhrZwoikhJphYT74VDRFDxU
/fDooUMHXxW9t2aXFa3tGko+XJv1yrOU5k1A8ySw1yC0xxnjHxBI/IKsAo9YTG150rrR2Oq9nket
HLIoHFaCfC1EDGY6+cYbWt5BfVgftXefJgBk7XlUP+/1KGgwQzsYBXsEmTCNzxfypQf5B4V5gc3+
Eo94fz6ADxSC6tE8sSGgLrA+aCla4b80YGng0qB9aF+gFQQaBeQlDUcj7sJ9az88zUFFhFdxb3Zl
gj9KLJzy9Ir7Ppr/4JnpX2LvtHv91Wv79+9vxOtHVW7OaNyUOu7UHQlfvvWbPTXB6tcscgYu0MhZ
xDZnjDurwJxAvwgnQjOEUGIqB+ETXa44DBz672uSR5ASEySIvm8YTPlD2SIxtki0k8aWRydyc7km
CHhWcIu59dxuTqbz64iOHcYIIAF8NOh7LInlHXISxLWjyCg+Xk5H6TiDZPDpwkTRKdOwZQaZwWfL
JagEl5NyvlQoEwvkBlSPm0gT3wDhyXK0HK8iq/hVwgpxE9qEN3PbyBZ+i7BZ3Cc8LR6S35AvyDfl
u1ioQVe7iDu1oFT9zXUIMPLIgRutnnMqh8BmZGSlpxNQi24JbrHInEVBgr8xAQXpeBtbdazariWr
pB4u8GJVlETNV0dph3RiMd5wDSfhUPVTtUNNxTvxYbxJLVOz1UJh6I1G7IeH4Djsu1fdrC5Wf6tu
QtzNj9V8Vo3WIzMa7wzScxIyvWaQmoVX0XHDCxbZIohTjVg2oHQLq+ReSmb7051s/WNFKKfeYnVa
s60F1hqrti3oLWpxeZK2PfjU79PvKM9ke4Rr/vzG9sKt4oCvQGLbwY/Xgd0MQE3OIcjupazQha5w
eLXaja26DWJQq2NDxHpxjf2pWJ8gL0S8/YOiHZYg4h2qE2lJDOznGt0wcyNzifn1nnWvn2OPZQoS
i2I9CqIrDikMLXQUh/HsnM2tp0/cyN9iHGTs+qfUP6pfzj4xN++9ytdOHN1z8EjLjqe25L5WW3dy
xhfY8CiJCm1f98m/o6LeviNh09qHW/Y21tQ1RUa/5HB8ePihZ/vV/lil27MT0mZeE/iq//Fgtg8y
AdlsfWqknkr3u7dUuvuWRW+p8Fkj8FBPaZSr66mXjmpr69kP6T7Yp1havP/H79x6yD/C9NALjXL6
gQ5SVbRZFJnjqSaOtVJV9NZqENpWJYu9nHqzPdQ+1n6f/Xm7wHRSQywqjPKNp+eX8Ab1kW3bHlFH
4vdu0PNjN9T3haHdf3isecVjey9+/Mln3fvcFcXtoIkKOu6M/fkKxXG02VOikFF6/xLFpZ8tUVjY
Dtt9PKfIPlwMFysMkvO5Eq5UruMahaXcKuFReQO3SdgsP8XZaF2C0xNFGkBieFqVGCQ5DWWkwLCK
LAdjf0RcK20jm6X95GnhiPSO9Gfpe3KVfM9f5QNovYGWG8Dc6fbpsaNc1NfdB7n7r3afOCp6d5Xj
i93Xug9wEd2fAL3jEZL20j1j3AS5aICWiwZALhpAc9GAX5WLPv+/Ixc9jNie8r9FThQ4Bfiv2JQB
QqTiUO7i7hKGKfFKJjdFSIWccgY41vuFUqVAoe71IcgnFyubuBYhWEI6Tiawzguw9ItY4mUkSzqk
4xXFgEwBxM7bZX+DxeTgwwSH6JAccgTkkFF6h8lhGsONIkl8ohAv0yNCY2k2Ca54EseqP0KqmCql
yk7ZCRnlFAPNKKdz+fIMQ7YJpEcK+TlCgVggFcjFumKlWN8I2UYTN5808vXCAnGB1CjXyPMNiwyL
TCu4ZrISpLdc9zs9ZJD8TtPzpns9rpl5Z5DZ+FN4FE6+SD9Oq6tU9R31LRXyEht/hb6vDxIs16+C
pWxAiBwCz0UgQq9xDooM0Ym8EuzFI+8VXistLb7r0TIuOMCoE3glBBuDAvggCOBQdIBXlOU8pC1n
qOdMTgY/pa3/V76jW3SnocmXeS4DXfKimNOC3NsToyzQPag86CCzosCnekVAZDIW91/BaRXZDL5A
MmE7bu7oeOf1kTNnJicuq5j6YuHsN0vbLkycOX1ojCyKqorXb3MtzZ+RNPuOGVXp444nj3xrZ+aq
/PyhSf72McOoL3iH7Oe+YtG6hKY4zQJ+mEdLZF4QkcDxsqWr6zzNga6N0c5r2vJY/eJ2hzbN8T1H
Rlp1r+skVvhn5wuq93ORENN3n+UG0TeNIfbRc/Esry1y+gmQ0nLM+FMFiOqJQHcfkChZuk61axtr
P0kVqNO/XUBgm85hkQQIycJEoZQcQodEiZ10sIOVhu0jb3R/9hFWuxOFs/nXl9CzowSthrVpNcvB
IiAeHeeM8oMMLEZsDRncalsfsibmqXg/Q+TAIHtkkFkHWSGkhuawwHi2UwPOmu309a6Sliva9kBP
whUVHa0d39Hq/uAkI8IjocWrj1PnVq/bs2fdur171D1L19/8+wV1/ZLHnlK///579fvdE9cvW7ph
w9Jl67l3tjU3b3t8RfO2fMfhxS/+8Y8vLj7sCH937bkvvzy39l1cWL90aT28qUTr1B/c54CDUY5z
IOSrZmwwGkzYaDSkmkMM7GCwH6S6xhBjoNlAdP6B7HhwiHYyBdSVEtTOCLrl8CuLVvscG/bCETGi
GNF7eJjrd3h4LFaufRIWYdHODuPR9Czxhz89Qnz9D+on33Ic3oMLaRLJDhR3qY9SWpaAdJqBFj+W
IUdIof54BfJvVfbwrWiVT2irZb3PmigpKCjMKwSFhwcZWYIMmHvy9i/omS8tP/Zp938r4I3AN4Le
CH4rpD1U2m87bvvKBpnArBEsHrB5sZ3xpGHIHWmFR2OPiECen2Zunwx58ajDFf9Qb2DLZ5hgq/qC
+nnmdnyXO3cOhawYG7Et/zfY/PUX2Iel/DvVe0O4zZ7Mmer+IfXfXJNog+xvqtMsboF0xyghYhOR
lwL53qWETk2jutgJJa+82+R1nnzVxIJlE32utYuc3dvmG6FtPHFNK5YuW966qWXjZtH2hXrX5cvq
6M+/xu/+4wJu74RxuwGPaoZHqNMsUTwkjPQ23ktGgMeYa714eCVq21oRw21Jw7jdALJlU+vyZctE
W6c65sI/1FFff47fuXwZvwUSY9UzdkJAB5mhF7cMSTv4ZWivIskC9ueRn8KCS1ZIo9ttVwA6OyrA
6mkf0YoaH6F2n2NVtZs3tTNmooWLATzpn4TS6Al+mOkvQjqJFS3Mcz1Gz5l/wKPTMi5GQjE4rvNd
7Ng8nSseaSVY420dV9+aq4l++GrdGG9l2r2X55MP+d/e+VkLcAFXAAtUDa7haoQaUZ6FgSzqwbnZ
HR3qgo4O0fL+++9T+U8Ht/Mx5E869JIzQNZ8H6z9qfIz6Dh5RpAJRjwWFVhAEtzur/M2/o9m/QaG
jMKQgbW8lyCmNQqjgK7y7nNtqbR0HM1N4DIkQS+b9X4kUB4kO/TDSbIcr6fV/TRW3R8n30NmyPfp
KU0lpIAvEObIi/SL9c/rA93OlOaVOOwBMrc7k3upayH3UreLL9jX9fGGfSSK1tbU7dIDwi7wQJmo
xZngBz7mGX97IHkm0zws0Xwg/pkR9gORz4wYNyVxWEgAGmAT/QwDAgaFDMiwDRo4ICPuzimW851s
J1Yd866WetBTZu206Zsz71reuZJgaWdbjSBYncYH9ylor94cegojfwq83OTrzFmhWUOzxmbdLqh2
u2kaVLO1NiY6ki63mkH58HSb17f/ri7kCr6QUVhgnbz+6ENNj6x7cMFaLmzM46UH/vLXZ0u3j177
2J6xzjL17KGmzwqeeKGushx7P7Hkx7KZC9VzW46qbYsXr1j52yU459Uz+P6myVMh/PiS81/71O5H
1+zZrU6ckvHje+9dn5y5rNvhc+GF+49nL1ud4ixRf//mTvWfc8sq77m7urB02cKFOOPVI3jSwkXN
B1vnfNGk/qj+UaSWcZB8RSpZbUaPYpxeItqhI0sMOkX0lwgvIX9sAPM4deaURT3zQc/iHpHklUgE
9omXUDPE2+gn+eo5PFZ98zn2+VPYOrJDRBS25C9iVicH2J0A+vyVPrCZdUexT4x6YQtnmZUf8FTQ
z0F+/LHA07XYaUU6vF0iAmfnka8i2mWK8xgwZ7CHM/DdHq8d145gu83kIDe4+6N93R9xgwW++6P9
9GI/Nxjhm10QaVxmuc5G54BbqxVgwTTIlmm14nmRk0D5g5BT0rFfqdh+uYiOFBpKjxE4by6Ji+fi
IapN55ycU3DKd3N3C3fLLu5hbgNn8cEBJFShVYgReCRxKqW4jMwnNcpOhdbcCItI6TmAc3gHfvxc
99UOiJS2cSVd/+5O5k4wad60kUq2H9HL8WUGxmuJ8b0/x5nHi+rDcY7xWi3p3axwMxw4DtEfrmbR
X6pTwQ+jJTwN+7RjFrRA2y/k45mj4emBWfdBWc8BtnVCqyCygA+CPS3So5jvQEj0FV4D6KGowHlH
oB41S3ywDjJMrtnXy2y3hoYEBQb4QljkZbPS/VR6ulL7XVaA4ic6IADUMpwzY0Di9LM9AZKdeKdV
j/Wc3qA3evMB1gCbd6gMJh1GwvQ4DNQX1IK9I7zYOymMvXlf9ZM8HDW+DEeWt5bikeqTOfgu9fGy
1lL149Iny9R3cEGe+houLyHL1cOkWS3EO9XCberhreocvIO+t+KsbXgnq4Bxk8jbEJVYUZYzzmLU
I96gk3gIl8lWwWrYqmDTeptsUIhOtBJMOORt5vU6b6Nos5wZcynhPLx9k63sbInlGi3qttMdd3oU
AQuCRE+2CTFRUSMEa6I1irytbsWlo9RDteqhUbhU3ToKZ9fibP7CW2/P6aBRVcect98q6sAL1OYO
d2wxHTJrCeU6zfwz4mHuGfQCLLxkHKJL4qkEtqBrgmXJx22WuZ+P8cH105U67BDed/WqCvOs/bFr
rfvEQSLb+VrgDJGstOJPfxqTKlGzkgXIErkgfrjk3gXr0gILmrcm90niWfIeSjfFnPHDuZHSRG6C
VM6VSIs5ScR0VypATMcZ4j14uujC5eICcTn+ndiCt4k79Ra2LNEDZWzrH1u4Te3q1e657ZDRhfKf
Xh/Ef3ojFPA8wSIeyp0xTgt5Bh8WKHfQOF5kqc4Ylup42ENXe8vtQwFwOfTsGletTv/2W9H7h7+v
FXngA+bVYHxQDAZ9t72M0QvMlixaGHIqnlnHwf1i8A8ACKwDJ1ETYbanQ06IwNAyfgknS+wwJdKi
JK3cTQfTBf82a/0RpHfos/Vargj0kwiCkzo6Orx32VXIZ7sfUB/HLq1mq503Ae6m66yKXpEh5tDT
L518S/2lxzvqoTt4R32qXgZC2IERdgXJP1Lo75bO/7/63VLfaOs2P1lytkmcLPtw/rKvPkaO0Q/j
RsrD9ZPl6cK9cgl3v9zINeppubdZWC0v12/k1nGbhSfkTfpAWviVJUnng/2Jv+Srsxij8QCO/jxp
gBSji9U7jEmInocfzY8SR0vDdMOUkfqxxom6qcbp+vuMLuTCc8lcyErLxXKpQlehzCe0rjBfXqhb
pMzXL0aL8TJuJVkuPCwv0681rkPr8EaYerPYIm/Q7zQ+b3T21hhohQEvOYfrcMM51cGhc+pv1Bl/
4+zuJDix6weuqXs5oZpCa3Gd7pqwA/LPCH/UouhabEtwi/JcqFUvc17+oQIyBfkI/kFDdCjIxodp
hbkzrCia3PM7tuT4w+Zw7WdMWmjTcxEVpiWgrAAaEYY34PFPPfHEU+pxPGjj+vUbVT3HX76++KGW
PerVG91fcie7P2levWY5V6LeVV37QM3eN15Ytcvb0bHlvb+Bwp7DBcLHZJf7BLARbefE7Tx4GB5F
UBNqT+j5rSq4YPo6B/GRSt9k176r+9kqP1v4mN8Luf9U5yBxOxLpDzW386Bg28FziNsFEXLBVLp1
gAR+H34agrBIgC5Ri9D2DT3KJn/jcR1aecsrCdtxEmYz8iK5ekQdulcdegRX9pt1inMgtx3mxNsR
5ukXh8EC0HZRSAW9x0gg+8SnJcyhSJ5OClbYd1K+j0JTl6Xj6JTCxzd+4GVKJ7mqrlc3HMEf7sUf
sh+Zs1wF/WPSv1ffZx7zHxQqszTm2NGrbZ7fod/8WA2W9oLfgEjE/Rt9Nk6qVIP7/lz9lp+vT+dP
oxIxE9XxF29eF9aik4I3auZWg6Wb0En+OBpNItAIvhM9INjQMX4QquaS0Zv85+gB7jfopHgZneQu
omJhE6oTFiALmYSOwfhj0Pcg61cC/Q6jq7SNv4ya4PsB4WN0mH0DPJjnY0A2UExEdVIHOibyMP9Y
Nu+d4mqUD8938NugDWALvuhTeDfDey3ARPC9A97FfAPg8CEaCteb2LhYuE+++THcb6fz8B8BvF3o
mPQVGs+PRRvIQfQOPNsH79WUbvheQkLRIXjvBrg7KG3gOv/CJ6LpwOVmPgodpG/xJXQOeNRFr7lE
9A7c74B+d9KxQhc6Cd8nuMOYJ0k4SWhCdwoLgT8whr0QCkelaCeOxXvgdYZ7kvs7mUge5hP5e/kD
/FkhRygTXhTjxCLxefFrSSflSXXSm/I98lPyP3VZut/pdijjlc3KD/po/VHDM8Z3jZ+ZDKaHTEdN
N8wl5tXm7ywzLE2Wj6z51v+xJdiqbV96jfBq9PrW+5T9Tvt8+6s+0T5rfL7zHeXr8n3Ed5vvd36l
/jH+0/yX+T8XYAoYE3B/wF8CIwPvC3wx8GLg9aD4oO7gacHzgl8I/satLTMh+eHBq/Dsty9OsFjE
24UyRNhTH2zq0alRPfqF6Z6A+xoMECBo1wTac9zXPFy73NcCOO757msR+aKH3dcSikePu69lZEId
7ms98gOuatdGnRf6F8WG18FdvcK7rzGKVua7rzmkKDvc1wTa97mvebj+wH0tID/lmvtaREP0Bve1
hAr0o9zXMgrSb3Nf6wGNI+5roy1af2Rcdc2C2vLSsnrHgKJYR0J8fKJjzgJHanl9XX2tq7AyzpFR
VTTEkVJR4cihveocOa46V+08V/GQnj6OfFdtoSO3sKoup7qysOo27bfr6qpwFda5HHcMuSO+5zF9
Sh8Ovh2g8jpHoaO+trDYVVlYe7+juuRWLHv707uy+vqaUUOHNjY2DpnjeTCkqLryVxFsVG5HsVH5
f4qSUTEq2a7ayvK6uvLqKtq/zFXrgvlKawur6l3FcY6SWpeLDiwqK6wtdcU56qsdhVULHDWu2joY
UD2nvrC8qryqFOYpAsRpz/oyl6OkugoQKywCemqgO+1QXwbQK8qLXFXA1QHh6bRHeCwAK3YU1tVV
F5UXwnyO4uqihkpXVX1hPcWnpLzCVecYQCGyAY7c6pL6xsJaV3gsw6TWVVNbXdxQ5GJgisuBtPI5
DfUuhkO/AXGO8qqiioZiikljeX1ZdUM9IFNZ7p6I9q/VuAlgG+qgPyUnzlHpYlTXNMypKK8ri+sz
Rxydc2h1raPOBaKA3uWAqpv8W6amyAHYGsroejfr2ESNZdWVPx1AxVDSUFsFE7rYwOJqR111nKOu
Yc5cV1E9bdF4XFFR3UgJKqquKi6ndNSNogLNg4eFc6rnuRgNmi4xFHoUoaq6HgRRp7VSudT06oD2
zFFXVghkzXG5+QaIlFc5CvtRWl0FmlHrqKyudd2WcEf9ghpXSSFMNMSDVv/nlYUL6AyV1cXlJeVU
2Qor6kH94ALAFhYXM+o19sHkNYW1gFlDRWEtm6rYVVdeWsUQKa1YUFNWRwdRLS0sAiB1dIQHo7pb
Z9K0rlhjWmHF7QG4x3jw6IUG6FVVLHCU91N1IKfWRf/TP6wvvaijrKSy8ZiIC/TOpSHfWF1bXOcI
77HGcDq354EjnBpvuJtpIJ1Mt9XMcYE9UbgNIAdKwrzq8h7UXPPrwW4chTU1YGSFcypc9IFGPcC+
RTBlhfWOssI6gOiq6s8VmK5Xx4sdDVXFbpTD+/uWcI3GX5ZsXXUFtW4mOiqoQkcF9SJgM56ONYVF
9xeWAmlgj1XVPT7k16tWv6nAcQGSrooSDa2JaY70qVl5jtyp6Xn3pOSkOTJyHdk5U/MzxqeNd4Sn
5MJ9eJzjnoy8iVOn5TmgR05KVt4Mx9R0R0rWDMfkjKzxcY606dk5abm5jqk5jowp2ZkZadCWkTUu
c9r4jKwJjlQYlzU1z5GZMSUjD4DmTWVD3aAy0nIpsClpOeMmwm1KakZmRt6MOEd6Rl4WhZkOQFMc
2Sk5eRnjpmWm5Diyp+VkT81NAxjjAWxWRlZ6DsySNiUNiABA46Zmz8jJmDAxLw4G5UFjnCMvJ2V8
2pSUnMlxFMOpQHKOg3UZAlgCDEdaPh2cOzElM9ORmpGXm5eTljKF9qXcmZA1dQrl0bSs8Sl5GVOz
HKlpQEpKamaahhuQMi4zJWNKnGN8ypSUCWm5vZPQbm5yetlBB0xIy0rLScmMc+Rmp43LoBfAx4yc
tHF5rCfwHjiRydAdNzUrN+3uadAA/TxTgEAmprEpgIAU+DeOYcbIzwJyKZy8qTl5Pajck5GbFudI
ycnIpSik50wFdKk8YQSlcRrwkwovy40vlRFt+6l2QC862k3g+LSUTACYS9H4SV+mX2nzi1w19VS/
3UauOUnmUDUvGsc0V3MGoMYTqsB8tTZ2CToN9sVWIM3L9Y8Q4txOmLoR0HBYlTQnXDzPBZ6wjroU
sJFq6lQay+uYvcNyWFntXv/qCitgMhjV0wt8ZmEFDKvrQbO/UXkWxprachjSWFteDy7FUdgArbXl
D7qX5Fr3knUrBXSWW/GvddXVwIpVPs9VsWAI9K2l6xrDpLyqpLq20k06Y19R/SiPL613lDLgxUB4
dW3pEDQOVaMatADVonKI+MtQPUTOA1ARioXvBIhm41EiXM2BHg6UCn3qUR28ayESLkSVKA5aM1AV
9B8CVymoAl4OiJg9sOrYnQu+XTBmHnwWQ8+fwnGgfNajEK5y4bMKnuYAZpXs+tf1/7VQXYAjfU5x
cqA7AJ87gMqfjvaM9Ywc/KsxKmd006t61lIMT+i4WnQ/tFWjkv/Ky9vB9zz73ycxI1J+tcxo3//T
VNM56DubwaxkEOvgsxqee+CXsWcuN32lbKYqgEexpLBK2FNXz4xFMILiUAptcQy3aoZlFRtfw6DV
uWeoBqj18Kwc7ui71E1PkZvjHpj1DAs6VzWbW6O7iPWrhJ4adA8E2lvDvQK+i2BklVv3BkCWnd4D
I5xJkI4tZt91DK8iGFPops8Bb9rSALO42Cj6xMOfEriqYHKjkD049s5AbYDiX48aGUdcbMZentCW
GvishlkaGJ692BQzCuqZzs2Bp/XsqWeOn58hjsmNSrcCRhX38KSR6UEZ9G5g4yhnKllbX4o88Gv7
6aaGbQPjYVwf6dDrSiZPj6xroNccBrsORsf9DB1xPXQOBUi1cFfHfERFD+xyN1f7S/+XqfZwTsO2
pkej62/Rul6KGhk/Kn/VDB5rKAEaapm21rExvTMWs086Rxz7ppyYCz2KGDytT189pvRWM7loEipi
cxczjMvdmI7qsdA898hCgFrNfESvHPr6pV4u/NQjVEH/erdF1PXr67GXXq719QN9xzkY3YVuac1x
c6ZX3zSOlLNxhb8gUwpZ8xm1TIuq3Vz+tRKnfRYwfEuYJ6Cwh/yEW780nvJlQQ8NlcwKy5lNezwb
xb/e7f20Fg1bytfiPrLvq30a5TVsFo1nDQClkI3zUFXMsKUyq+rDkVLoRykqc7fV9vGlhUyLNB32
zHErj+r+K019fV1xP00rZHL69Rj0n+dWftwOtzi3zCvYuPJf8Oq1bg/kYnhV9oPraanr0UqP3dy6
irjc/s7Vj/ONjKpiNj78NmtjeA/dt46g/T0rb/gtmqbZTuYta80cZvvVffBtcNuDRwrz4Gn5bbjm
QvMZr6vcFl0DL20lK2Te1dUzoq/sNbx/2WLKmLd3sO86N44upk0/rysadbfz4/RpA+vVn8u346yj
D/f6yvH/i83WMS/qWbt7rc5jUTSSqOiJRWrdI/pDrGGafT98lrqlpq2PVYy/t8Yh/ye81s9TNcdt
K/Xu9bGkH7cmojQ211SUBXd0rqlwl4fugQgzhz3LgDYHxHY58CQf7sZD63gmnxT2hD4PZ5Z5D1xT
iFPRNAZLg5EDnxT2DGihsB3snt5Nhv5ZAIuOTUPT2RxpAC2X9cxhsKdAayZ8p7n70RHjoGUa3NPr
CYhGp9p8WTAqj9kQHUdx0TDNg/beWftjlcFm9GA2Be5yAP5E99MUgJ3B4FH84xin6HVWD57pbkxT
GI8oZApzHGCUye5o6zT4zoZ+uYyfKYxmDdssRkM6PNdoSWMYaJLQMBoH39kwN+0xAfDKY1jQmfLc
PeMYhZSe8Ww8nXUya9Uwm+qWMr3uhTLEzUsND8r//J6Zcxn9mfByMPrzoCWPySYF4HvgenRnAoMw
pUePpjH6UhgfprIZUtkzykXKz8yenjl9pDKO8YvKjWI+ns2UwjiSe1tKPND6S+d22uGZYQKjL41x
KpP1zgU+pkH/jJ4WTR8zGK3j3LzVYGp6r+lEZh/ujmM0UsneDbOmuXUqhfGuPxWahVD8e6nQJJDi
/hzXh2e90s9yS3dcj6ynMi37KVfuYbaYxnqlMFnn9nAhndnvFDfm0/pomEeO09z6ObUHs/789diR
p9+v8R0aLM/c/SU4nulTphvD3B5u/He4vf4rDda4Ipb/1Pf47/4red9IsjdC7RuLxvXxuX0jA80b
T2B9K2/p19uq+Wlt/erNgfrGcr9UE9Bi/N5I2BONaD5cy5X6RsLFLGbXYsK6nihFW0eqeyKVRva0
d33XssNK1qNv/lfH5tUoa3CPuBWWFmcWssiBzlZ3G27+0kp1a8ZYw9Z+bZZGdl3vjlIofQ3uvrT9
wVuy5Npbsqz/JgMPLf+N/7VM3jXuHKuccZjGl0PccGuRJ1/r5QnlQAl7VnmL1Hu1j0IbhW6NSykP
SvtgXuyWeDWLL4awvWvtnMUgtPZ2/x+ANm6x8+YNlVz3Jj9GkR8SyPebyHcm8h+VXFPJ/0SRf5vI
vzaRq1Hk29+lCN+q5Mom8s0m0nmdfH2d/FMlX40iX6aSyyr5IoF8filX+HwTuQQdL+WSi58NFS5e
J58NJZ+q5B8quZBA/u5NPtlEzqvkYxv520Jy7hXyV5X8Gbr/eSE5e2aCcHYhOTOBfPSnQOEjlfwp
kHyokj+q5A8q+UAlpzeRUx0hwimVdISQ9xPISZW8u9wqvBtE3vEh7Sp5WyVvqeRNlbyhktdV8ppK
XlXJcZW8opJjVnJ0RZRwVCVtL78itKnk5SOzhJdfIS8v5o/8Pko4Mst5kxxx8r+PIi+p5MVN5LBK
XlDJIZU8r5KDxeQ5EznwbJRwoJg8u98mPBtF9tvIM4D0M9fJPpU8rZK9KtljI7tV8tQuk/BUAtll
Ik8Wk1bo0rqJ7FTJjicMwg6VPGEg2x/3F7YXk8e3WYTH/ck2C9mqkC0q2bzJKGxWySYjaYFBLZvI
xg0mYeMAssFEHrtO1q97RVivknVrZwnrXiHrFvNrH40S1s4ia538o1HkEZWsWT1EWKOS1UPI74DM
36WQVSv1wipvslJPmqGhuZisAE6tiCLLreRhlSxbahWWqWSplSxRyWKVLFKJ8+ZvFy4UfquShQvJ
Q8WkKc8uNEWRB1WyQCXzTaTRQOYppEEl9ddJ3XVSe508cJ3UqKRaJVUqqQgj96tkrjVVmJtLylVS
tpCUwk2JSlwqKVZJkUrmqKRwFCm4TmYbyCyV3KuSmSqZMV0RZlwn0xVyj4+/cE8CyVfJNJh5WirJ
s5NcbBFy/UiON7l7kpdwt0qy9WSqSrKmWIQslUyxkEyVTIYnk1UyKcMiTPIiGcFGIcNCJhrJBJWk
byJpm8h4lYzjBgvjrpPUV0jKZOJUyViV3HWnTbjLm9w5xizcaSNjRhuFMc6bZjLaSEapJFklI0d4
CyOvkxHDLcIIbzI8SS8Mt5AkPRkWQhKNJOEOvZCgkjv0JH6oXog3kqF6MmSwThhiIYN1JC6BDBoY
JQwqJgNjbcLAKBJrIwNiooQBKSQmikRH6YVoM4nSk0iVRKgk3EzCgM4wG3EUk9DrJARICCkmwUYS
BBwMUkngdRKQSvzhxl8lfsXEFzjlqxIfGOTjT+wq8VaJl0ps0MGmEivQak0lloXEXExMKjEafASj
SgzQ2+BD9CpRLESnEhm6ySqRvIlYTHh4yIMG2Am0EpVwcM8NJthCkEpwGy5e/gge9H/DH/r/G4Ff
/Av+X0DCc70KZW5kc3RyZWFtCmVuZG9iagoKNjYgMCBvYmoKMTY0MTkKZW5kb2JqCgo2NyAwIG9i
ago8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0JBQUFBQStCaXRzdHJlYW1WZXJhU2Fu
cy1Sb21hbgovRmxhZ3MgNAovRm9udEJCb3hbLTE4MyAtMjM1IDEyODYgOTI4XS9JdGFsaWNBbmds
ZSAwCi9Bc2NlbnQgOTI4Ci9EZXNjZW50IC0yMzUKL0NhcEhlaWdodCA5MjgKL1N0ZW1WIDgwCi9G
b250RmlsZTIgNjUgMCBSCj4+CmVuZG9iagoKNjggMCBvYmoKPDwvTGVuZ3RoIDYwMi9GaWx0ZXIv
RmxhdGVEZWNvZGU+PgpzdHJlYW0KeJxdlM2O2kAQhO9+Ch83hxV294zNSgiJn0XikB+FzQMYeyCW
gm0Zc+Dt4+qaJFIOoJqZ7p6vi6EXu+P+2LXT4tvY16cwpZe2a8Zw7x9jHdJzuLZdkkvatPUUV/Zd
36ohWcy5p+d9Crdjd+lXq2TxfT67T+Mzfdk0/Tl8ShZfxyaMbXdNX37sTvP69BiGX+EWuinNkvU6
bcJlrvO5Gr5Ut7CwrNdjMx+30/N1TvkX8PEcQiq2zolS9024D1Udxqq7hmSVZet0dTisk9A1/50t
l0w5X+qf1TiH5nNolrk5eJWJae+glVqgHbVCe9OSQRfM9dCl6XIJvaS2Om+mC4vZUL9DbxljNXfc
f4PeUxvPO+vb/oF6P+s8I4PpyI86OfldDk3+Evw5+QvT5C/Bk5O/2EGTv7A65NcNNPlL9JtHfqtP
/gI95uT3VjPyl9DkL+BJTn5B70L+jenIj3ghf4G+hPwOuUJ+t4WO/PBEyF9aLvkFvQj5XQFNfm+a
/Ap+Ib+iLyG/Wgz5Bf4L+RV9CfkV/Sr5He5S8hfIVfIrfNbov+1HfsslfwFvlfwKzzW+H7Ap+T3Y
NL4f9K7k9+hXIz84lfxi95JfLSbyw0Mlv0d9R36Fh478ghhHfrF98ivudeQ/oBcX/Qe/i+8fnA78
kuXwxC2p8Ts68ovVifxWf8sYvAEX+cHsov/wxJFf7K7Ijzo++o9cT36Puzz5SzB48gv69fH/ix49
+R288tF/y6X/ajXj+9/ZAImTAqMEs+7PiErrxzjO48kGos0lTKS2C39n5tAPyLLPb6zbOfAKZW5k
c3RyZWFtCmVuZG9iagoKNjkgMCBvYmoKPDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvQmFz
ZUZvbnQvQkFBQUFBK0JpdHN0cmVhbVZlcmFTYW5zLVJvbWFuCi9GaXJzdENoYXIgMAovTGFzdENo
YXIgODgKL1dpZHRoc1s2MDAgNzg3IDYxMCA2OTQgNjM0IDMxNyA2MzEgNTkxIDM5MiA2MTUgNjMz
IDUyMCAyNzcgNjExIDI5NCA4NjIKMzYwIDY5OCA2ODQgNDExIDYzNCA2MzMgMjc3IDU0OSAzMzYg
NjM0IDYxMiA2MzQgNzMxIDYzNCA2MzMgMzE3CjEwMDAgNzc0IDk3NCA3NTEgNjU1IDU5MSA4MTcg
MzE3IDU3NSA2ODQgNjM2IDYzNiA2MzYgMzM2IDYzNiA2MzYKNTU3IDM1MiA2MzYgNTkxIDc3MCAy
NzcgNjM2IDYzNCA2MDMgNTc5IDk4OCA1MzAgNDU5IDYzNiA2MzYgNzg3CjYzNiAzOTAgMzkwIDMz
NiA2MTEgNTI0IDEwMDAgNTE4IDUxOCA4MzcgNjEwIDUxOCAyNzQgODM3IDUwMCAzOTAKNzQ4IDM5
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
kAHxwIDkATEk3k7ikFmK6ySxVhLrEd0hxKWRmBgSHeWUohNIlDVYinKSqOfAZzwgRppJhHOqFLGE
OGFS51QSTkmYnThgNkcnCYW20AQSUkmC7SSIEjvc2ymxVRKrxSZZg4l1v2ixEcsy0QxPzJ3ElEaM
QJrRQYzLRM1MNI+oUqJQYqBEljRJpkTSiOQRxU5CKokAowQK3sssYTtBZoKfw5W3L8fJ///4Q/9v
I/A/+BeN/jdoJ4DLCmVuZHN0cmVhbQplbmRvYmoKCjcxIDAgb2JqCjE0NjIzCmVuZG9iagoKNzIg
MCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9DQUFBQUErQml0c3RyZWFtVmVy
YVNhbnMtQm9sZAovRmxhZ3MgNAovRm9udEJCb3hbLTE5OSAtMjM1IDE0MTUgOTI4XS9JdGFsaWNB
bmdsZSAwCi9Bc2NlbnQgOTI4Ci9EZXNjZW50IC0yMzUKL0NhcEhlaWdodCA5MjgKL1N0ZW1WIDgw
Ci9Gb250RmlsZTIgNzAgMCBSCj4+CmVuZG9iagoKNzMgMCBvYmoKPDwvTGVuZ3RoIDUyOS9GaWx0
ZXIvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeJxd1M2OmzAUBeA9T8FyuhiBfY09I0WRMslEyqI/aqYP
QMBJkRpAhCzy9uXc47ZSF4kOxr58vokptofdoe/m4ts0NMc45+eub6d4G+5TE/NTvHR9Zmzeds2c
rvS7udZjVixrj4/bHK+H/jysVlnxfbl3m6dH/rRph1P8lBVfpzZOXX/Jn35sj8v18T6Ov+I19nNe
Zut13sbzUudzPX6pr7HQVc+HdrndzY/nZcm/CR+PMeZWrw0pzdDG21g3car7S8xWZbnOV/v9Oot9
+9+9kJaczs3PelqmmmVqWbpl8qq0miuHLMwW2TELcqXZlsieayvkoDm8IL8wa51XzV7nbJjfkd84
R2tuOf6KvGNWzzvr6/ieebdkU9KgOflRx9DvDDL9AX5Dv9dMf4DH0O+3yPR7rUO/1zrJj70Y+itd
S78PyPRb7MvQH9AfQ/9Gx5Mf8y39Hn6b/OibTf33yPTLBpl+gcfSL6hv6RedT79F3yz9AqelX+C3
qf86P/nfkOkX9MfSL+iDpb/SZyU/6gj9gr0I/R5OoT+gvtDvsS+hP+B3FPodei70W830O12b/j9a
k/6gz6I/oA9Cf6XjyY+9C/0O+xL6LfYlyY/fwtFfoY6jX+B09Aucjn6r4/RbHU//f11Lf6Xj9Fcv
eujS6cLxw/vhz7HOm/s0LUdaXyJ6lnGKuz7+fc+Mw4hV+vkNYuwRjwplbmRzdHJlYW0KZW5kb2Jq
Cgo3NCAwIG9iago8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9CYXNlRm9udC9DQUFBQUEr
Qml0c3RyZWFtVmVyYVNhbnMtQm9sZAovRmlyc3RDaGFyIDAKL0xhc3RDaGFyIDcxCi9XaWR0aHNb
NjAwIDg1MCA2ODIgNzcwIDcyMCAzNDggNjgzIDY0NSA0NzggNjc4IDcxMSA1OTUgMzQyIDY4NyAz
NzIgOTk1CjQxNSA3MzMgNzczIDQ5MyA3MTUgNzExIDM0MiA1OTIgNjc0IDcxNSA4MTIgNzE1IDM3
OSA3MTUgMTAwMCA4MjAKMTA0MSA4MzYgNzczIDM5OSA2OTUgNjk1IDY5NSAzNjUgNjk1IDY5NSA0
MzUgNjY1IDY5NSA2OTUgNzMyIDgzMAo2OTUgMzQyIDY1MSA3MTEgNjUxIDYzNyAzNzkgNjgzIDU4
MiA5MjMgNzE1IDExMDMgNTgwIDc3NCA1MjAgODM2Cjg1MCA2OTUgNjk1IDQ1NyA0NTcgNDU2IDcy
NCA3NzAgXQovRm9udERlc2NyaXB0b3IgNzIgMCBSCi9Ub1VuaWNvZGUgNzMgMCBSCj4+CmVuZG9i
agoKNzUgMCBvYmoKPDwvTGVuZ3RoIDc2IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoMSAx
NzgwOD4+CnN0cmVhbQp4nOV7eXwT19XovXNnRtJol3e8aCQv2LVjwAQcOyTI2AIExia2IYZgYtmS
bWHLMpIMMZQAIQnNSshCgOw0oTQrpWlLSZuShDZbaZuX8LXZ2uZBX39f6ubly0fyUgeGd+6dkSwb
svT3vv6+Px6KNHc59+zn3HPGbTw6HEQmtAUR5OkO+4duWbtmC0Lo1whhR/e6uHzDn2N/gPGf4fti
z1Bv+Pine95DiDwKMLf0Doz0vPaHtc8jxE9HKHdOX9AfqF+52ImQcwD2Z/fBwmXKoA7mFL6oLxy/
5inr63fA/BWYf3sg0u1/MVjQjpDcAHNP2H/N0DvCMh7m18NcHvSHg8UjF8+CIZx3Xj0UicU5LlMB
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
jNTnknoPPy9A5nn4uk3Eo5C5l1cIl1eQy8bIHIVcqpBahdRcbBJqqsglCqmuIrNnScJszzmFzJLI
LA9/8UxJuNhEZkqkSiEzeLswYxOZPi1XmB4g02A2LZdUKuSiMVJRniNULCblsFaeQ74Fj28tJmWl
FqEsm5ROlYRSC5kqkRIbKS6yCMVVpMhCCt02oTCduG3EZS0WXGNExpIgVxFnNnF6+IJ8SSiwknyJ
5BlInofPddQKubvIFACdEiA5CskOkCyFZGaQjHSLkGEn6RaSBjBpu4gDYBy1xK4QG/BhU4gVHtZi
YoGHZTExZxOTQowKkQySIO0iBokYPLxujIgBIgCIUEt4zxRigTEhFsIBV1w2wRLBHh5lEXwYB264
DZf/N/1D/12E/6v/5aP/C5w/2iEKZW5kc3RyZWFtCmVuZG9iagoKNzYgMCBvYmoKOTY5NgplbmRv
YmoKCjc3IDAgb2JqCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvRUFBQUFBK0JpdHN0
cmVhbVZlcmFTYW5zLUJvbGRPYmxpcXVlCi9GbGFncyA2OAovRm9udEJCb3hbLTI3NyAtMjM1IDEz
OTkgOTI4XS9JdGFsaWNBbmdsZSAtMzAKL0FzY2VudCA5MjgKL0Rlc2NlbnQgLTIzNQovQ2FwSGVp
Z2h0IDkyOAovU3RlbVYgODAKL0ZvbnRGaWxlMiA3NSAwIFIKPj4KZW5kb2JqCgo3OCAwIG9iago8
PC9MZW5ndGggMzU0L0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nF2Sy26DMBBF93yFl+ki
wiY8GgkhJSRILPpQ034AgSFFKsYyZMHf1zPjtlIXoGN8xz54HJb1qdbDEr7aqb3AIvpBdxbm6W5b
EFe4DTpQkeiGdvEjerdjY4LQ1V7WeYGx1v2U50H45ubmxa5ic+imKzwE4YvtwA76JjYf5cWNL3dj
vmAEvQgZFIXooHfrPDXmuRkhpKpt3bnpYVm3ruQv8L4aEBGNFau0UwezaVqwjb5BkEtZiLyqigB0
929uJ7nk2refjXVR5aJSJlHhOCJOE+Qdc4ocE2eUSfj7GTll3iFnzDHyI3FM3/fMe+QDZ0rkI7NC
Lnl9yp84T5kzZ6i2Yj46VpKdcS/F/hlmFPtnEpn9Y8p4f2LvXyGzf4wOyvvjPyr2z/AclPenfdk/
QU/l/R+RvT+elWL/9ITs/TNqhD9xbAnemZ9Wi/ZurWszXSzqL3Z20PB798xksIqebyjosYAKZW5k
c3RyZWFtCmVuZG9iagoKNzkgMCBvYmoKPDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvQmFz
ZUZvbnQvRUFBQUFBK0JpdHN0cmVhbVZlcmFTYW5zLUJvbGRPYmxpcXVlCi9GaXJzdENoYXIgMAov
TGFzdENoYXIgMzAKL1dpZHRoc1s2MDAgNzcwIDY3OCA0MzUgNDkzIDcxMSA1OTIgNzE1IDczMyAz
NzIgMzQyIDY3NCA1OTUgNjM3IDM0MiA2NjUKNjgyIDY1MSA3MTUgODMwIDQ3OCA2ODcgNzczIDcx
NSA3MTEgNzc0IDcyMCA3MTEgNjUxIDEwNDEgNzE1IF0KL0ZvbnREZXNjcmlwdG9yIDc3IDAgUgov
VG9Vbmljb2RlIDc4IDAgUgo+PgplbmRvYmoKCjgwIDAgb2JqCjw8L0YxIDY5IDAgUi9GMiA3NCAw
IFIvRjMgNTkgMCBSL0Y0IDc5IDAgUi9GNSA2NCAwIFIKPj4KZW5kb2JqCgo4MSAwIG9iago8PC9G
b250IDgwIDAgUgovWE9iamVjdDw8L0ltNCA0IDAgUj4+Ci9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFn
ZUMvSW1hZ2VJL0ltYWdlQl0KPj4KZW5kb2JqCgoxIDAgb2JqCjw8L1R5cGUvUGFnZS9QYXJlbnQg
NTQgMCBSL1Jlc291cmNlcyA4MSAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL0dyb3VwPDwvUy9U
cmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRzIDIgMCBSPj4KZW5kb2Jq
Cgo4IDAgb2JqCjw8L1R5cGUvUGFnZS9QYXJlbnQgNTQgMCBSL1Jlc291cmNlcyA4MSAwIFIvTWVk
aWFCb3hbMCAwIDU5NSA4NDJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kg
dHJ1ZT4+L0NvbnRlbnRzIDkgMCBSPj4KZW5kb2JqCgoxMSAwIG9iago8PC9UeXBlL1BhZ2UvUGFy
ZW50IDU0IDAgUi9SZXNvdXJjZXMgODEgMCBSL01lZGlhQm94WzAgMCA1OTUgODQyXS9Hcm91cDw8
L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9JIHRydWU+Pi9Db250ZW50cyAxMiAwIFI+Pgpl
bmRvYmoKCjE0IDAgb2JqCjw8L1R5cGUvUGFnZS9QYXJlbnQgNTQgMCBSL1Jlc291cmNlcyA4MSAw
IFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL0Fubm90c1sKNDcgMCBSIDQ4IDAgUiA0OSAwIFIgNTAg
MCBSIDUxIDAgUiA1MiAwIFIgNTMgMCBSIF0KL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2
aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRzIDE1IDAgUj4+CmVuZG9iagoKMTcgMCBvYmoKPDwvVHlw
ZS9QYWdlL1BhcmVudCA1NCAwIFIvUmVzb3VyY2VzIDgxIDAgUi9NZWRpYUJveFswIDAgNTk1IDg0
Ml0vR3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0IvSSB0cnVlPj4vQ29udGVudHMg
MTggMCBSPj4KZW5kb2JqCgoyMCAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDU0IDAgUi9SZXNv
dXJjZXMgODEgMCBSL01lZGlhQm94WzAgMCA1OTUgODQyXS9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5
L0NTL0RldmljZVJHQi9JIHRydWU+Pi9Db250ZW50cyAyMSAwIFI+PgplbmRvYmoKCjIzIDAgb2Jq
Cjw8L1R5cGUvUGFnZS9QYXJlbnQgNTQgMCBSL1Jlc291cmNlcyA4MSAwIFIvTWVkaWFCb3hbMCAw
IDU5NSA4NDJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1ZT4+L0Nv
bnRlbnRzIDI0IDAgUj4+CmVuZG9iagoKMjYgMCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCA1NCAw
IFIvUmVzb3VyY2VzIDgxIDAgUi9NZWRpYUJveFswIDAgNTk1IDg0Ml0vR3JvdXA8PC9TL1RyYW5z
cGFyZW5jeS9DUy9EZXZpY2VSR0IvSSB0cnVlPj4vQ29udGVudHMgMjcgMCBSPj4KZW5kb2JqCgoy
OSAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDU0IDAgUi9SZXNvdXJjZXMgODEgMCBSL01lZGlh
Qm94WzAgMCA1OTUgODQyXS9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9JIHRy
dWU+Pi9Db250ZW50cyAzMCAwIFI+PgplbmRvYmoKCjMyIDAgb2JqCjw8L1R5cGUvUGFnZS9QYXJl
bnQgNTQgMCBSL1Jlc291cmNlcyA4MSAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL0dyb3VwPDwv
Uy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRzIDMzIDAgUj4+CmVu
ZG9iagoKMzUgMCBvYmoKPDwvVHlwZS9QYWdlL1BhcmVudCA1NCAwIFIvUmVzb3VyY2VzIDgxIDAg
Ui9NZWRpYUJveFswIDAgNTk1IDg0Ml0vR3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VS
R0IvSSB0cnVlPj4vQ29udGVudHMgMzYgMCBSPj4KZW5kb2JqCgozOCAwIG9iago8PC9UeXBlL1Bh
Z2UvUGFyZW50IDU0IDAgUi9SZXNvdXJjZXMgODEgMCBSL01lZGlhQm94WzAgMCA1OTUgODQyXS9H
cm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9JIHRydWU+Pi9Db250ZW50cyAzOSAw
IFI+PgplbmRvYmoKCjQxIDAgb2JqCjw8L1R5cGUvUGFnZS9QYXJlbnQgNTQgMCBSL1Jlc291cmNl
cyA4MSAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1Mv
RGV2aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRzIDQyIDAgUj4+CmVuZG9iagoKNDQgMCBvYmoKPDwv
VHlwZS9QYWdlL1BhcmVudCA1NCAwIFIvUmVzb3VyY2VzIDgxIDAgUi9NZWRpYUJveFswIDAgNTk1
IDg0Ml0vR3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0IvSSB0cnVlPj4vQ29udGVu
dHMgNDUgMCBSPj4KZW5kb2JqCgo4MiAwIG9iago8PC9Db3VudCA1NC9GaXJzdCA4MyAwIFIvTGFz
dCA5NiAwIFIKPj4KZW5kb2JqCgo4MyAwIG9iago8PC9Db3VudCA2L0ZpcnN0IDg0IDAgUi9MYXN0
IDg2IDAgUgovVGl0bGU8RkVGRjAwMzEwMDIwMDA0NzAwNjUwMDZFMDA2NTAwNzIwMDYxMDA2QzAw
MjAwMDUyMDA2NTAwNkQwMDYxMDA3MjAwNkIwMDczPgovRGVzdFsxNCAwIFIvWFlaIDEyMS4yIDc0
Mi45IDBdL1BhcmVudCA4MiAwIFIvTmV4dCA5MCAwIFI+PgplbmRvYmoKCjg0IDAgb2JqCjw8L0Nv
dW50IDEvRmlyc3QgODUgMCBSL0xhc3QgODUgMCBSCi9UaXRsZTxGRUZGMDAzMTAwMkUwMDMxMDAy
MDAwNDQwMDZGMDA2MzAwNzUwMDZEMDA2NTAwNkUwMDc0MDAyMDAwNjkwMDZFMDA2NjAwNkYwMDcy
MDA2RDAwNjEwMDc0MDA2OTAwNkYwMDZFPgovRGVzdFsxNCAwIFIvWFlaIDEzMy4yIDY5NS44IDBd
L1BhcmVudCA4MyAwIFIvTmV4dCA4NiAwIFI+PgplbmRvYmoKCjg1IDAgb2JqCjw8L0NvdW50IDAv
VGl0bGU8RkVGRjAwMzEwMDJFMDAzMTAwMkUwMDMxMDAyMDAwNEYwMDYyMDA2QTAwNjUwMDYzMDA3
NDAwNjkwMDc2MDA2NTAwNzM+Ci9EZXN0WzE0IDAgUi9YWVogMTUwLjIgNjczLjYgMF0vUGFyZW50
IDg0IDAgUj4+CmVuZG9iagoKODYgMCBvYmoKPDwvQ291bnQgMy9GaXJzdCA4NyAwIFIvTGFzdCA4
OSAwIFIKL1RpdGxlPEZFRkYwMDMxMDAyRTAwMzIwMDIwMDA0MzAwNjgwMDYxMDA2RTAwNjcwMDY1
MDA3Mz4KL0Rlc3RbMTQgMCBSL1hZWiAxMzMuMiA2MTguNiAwXS9QYXJlbnQgODMgMCBSL1ByZXYg
ODQgMCBSPj4KZW5kb2JqCgo4NyAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDMxMDAyRTAw
MzIwMDJFMDAzMTAwMjAwMDQzMDA2ODAwNjEwMDZFMDA2NzAwNjUwMDIwMDA0ODAwNjkwMDczMDA3
NDAwNkYwMDcyMDA3OT4KL0Rlc3RbMTQgMCBSL1hZWiAxNTAuMiA1OTAuMyAwXS9QYXJlbnQgODYg
MCBSL05leHQgODggMCBSPj4KZW5kb2JqCgo4OCAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYw
MDMxMDAyRTAwMzIwMDJFMDAzMjAwMjAwMDQxMDA3NTAwNzQwMDY4MDA2RjAwNzIwMDczPgovRGVz
dFsxNCAwIFIvWFlaIDE1MC4yIDM5OC43IDBdL1BhcmVudCA4NiAwIFIvUHJldiA4NyAwIFIvTmV4
dCA4OSAwIFI+PgplbmRvYmoKCjg5IDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzEwMDJF
MDAzMjAwMkUwMDMzMDAyMDAwNDQwMDZGMDA2MzAwNzUwMDZEMDA2NTAwNkUwMDc0MDAyMDAwNEYw
MDc3MDA2RTAwNjUwMDcyPgovRGVzdFsxNCAwIFIvWFlaIDE1MC4yIDMwNyAwXS9QYXJlbnQgODYg
MCBSL1ByZXYgODggMCBSPj4KZW5kb2JqCgo5MCAwIG9iago8PC9Db3VudCAyL0ZpcnN0IDkxIDAg
Ui9MYXN0IDkyIDAgUgovVGl0bGU8RkVGRjAwMzIwMDIwMDA0OTAwNkUwMDczMDA3NDAwNjEwMDZD
MDA2QzAwNjEwMDc0MDA2OTAwNkYwMDZFPgovRGVzdFsxNyAwIFIvWFlaIDEyMS4yIDc0Mi45IDBd
L1BhcmVudCA4MiAwIFIvUHJldiA4MyAwIFIvTmV4dCA5MyAwIFI+PgplbmRvYmoKCjkxIDAgb2Jq
Cjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzIwMDJFMDAzMTAwMjAwMDUyMDA2NTAwNzEwMDc1MDA2
OTAwNzIwMDY1MDA2RDAwNjUwMDZFMDA3NDAwNzM+Ci9EZXN0WzE3IDAgUi9YWVogMTMzLjIgNjk1
LjggMF0vUGFyZW50IDkwIDAgUi9OZXh0IDkyIDAgUj4+CmVuZG9iagoKOTIgMCBvYmoKPDwvQ291
bnQgMC9UaXRsZTxGRUZGMDAzMjAwMkUwMDMyMDAyMDAwNTAwMDYxMDA2MzAwNkIwMDYxMDA2NzAw
NjUwMDIwMDA0OTAwNkUwMDczMDA3NDAwNjEwMDZDMDA2QzAwNjEwMDc0MDA2OTAwNkYwMDZFPgov
RGVzdFsxNyAwIFIvWFlaIDEzMy4yIDUzNS4xIDBdL1BhcmVudCA5MCAwIFIvUHJldiA5MSAwIFI+
PgplbmRvYmoKCjkzIDAgb2JqCjw8L0NvdW50IDIvRmlyc3QgOTQgMCBSL0xhc3QgOTUgMCBSCi9U
aXRsZTxGRUZGMDAzMzAwMjAwMDUwMDA2MTAwNjMwMDZCMDA2MTAwNjcwMDY1MDAyMDAwNDQwMDY1
MDA3MzAwNjMwMDcyMDA2OTAwNzAwMDc0MDA2OTAwNkYwMDZFPgovRGVzdFsyMCAwIFIvWFlaIDEy
MS4yIDc0Mi45IDBdL1BhcmVudCA4MiAwIFIvUHJldiA5MCAwIFIvTmV4dCA5NiAwIFI+PgplbmRv
YmoKCjk0IDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzMwMDJFMDAzMTAwMjAwMDU3MDA2
ODAwNzkwMDIwMDA2RTAwNkYwMDc0MDAyMDAwNzUwMDczMDA2OTAwNkUwMDY3MDAyMDAwNTYwMDY5
MDA3MjAwNzQwMDc1MDA2MTAwNkMwMDQ2MDA2OTAwNkMwMDY1MDA1MzAwNzkwMDczMDA3NDAwNjUw
MDZEMDAyMDAwM0Y+Ci9EZXN0WzIwIDAgUi9YWVogMTMzLjIgNjQ5LjUgMF0vUGFyZW50IDkzIDAg
Ui9OZXh0IDk1IDAgUj4+CmVuZG9iagoKOTUgMCBvYmoKPDwvQ291bnQgMC9UaXRsZTxGRUZGMDAz
MzAwMkUwMDMyMDAyMDAwNDEwMDc1MDA3NDAwNkYwMDYzMDA2RjAwNkQwMDcwMDA2QzAwNjUwMDc0
MDA2NTAwMjAwMDY2MDA3NTAwNkUwMDYzMDA3NDAwNjkwMDZGMDA2RTAwMjAwMDY2MDA2RjAwNzIw
MDIwMDA2MTAwNzQwMDc0MDA3MjAwNjkwMDYyMDA3NTAwNzQwMDY1MDAyMDAwNzQwMDc5MDA3MDAw
NjUwMDczPgovRGVzdFsyMCAwIFIvWFlaIDEzMy4yIDU1Ny43IDBdL1BhcmVudCA5MyAwIFIvUHJl
diA5NCAwIFI+PgplbmRvYmoKCjk2IDAgb2JqCjw8L0NvdW50IDQwL0ZpcnN0IDk3IDAgUi9MYXN0
IDEzNCAwIFIKL1RpdGxlPEZFRkYwMDM0MDAyMDAwNDMwMDZGMDA2RTAwNjYwMDY5MDA2NzAwNzUw
MDcyMDA2MTAwNzQwMDY5MDA2RjAwNkU+Ci9EZXN0WzIzIDAgUi9YWVogMTIxLjIgNzQyLjkgMF0v
UGFyZW50IDgyIDAgUi9QcmV2IDkzIDAgUj4+CmVuZG9iagoKOTcgMCBvYmoKPDwvQ291bnQgMi9G
aXJzdCA5OCAwIFIvTGFzdCA5OSAwIFIKL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzEwMDIwMDA1NTAw
NzMwMDY1MDAyMDAwNkYwMDY2MDAyMDAwNDMwMDQ5MDAyRDAwNDEwMDc0MDA3NDAwNzIwMDY5MDA2
MjAwNzUwMDc0MDA2NTAwMjAwMDIyMDA0MzAwNDkwMDQzMDA2QzAwNjEwMDczMDA3MzAwNTIwMDY1
MDA2NjAwNjUwMDcyMDA2NTAwNkUwMDYzMDA2NTAwMjI+Ci9EZXN0WzIzIDAgUi9YWVogMTMzLjIg
Njk1LjggMF0vUGFyZW50IDk2IDAgUi9OZXh0IDEwMCAwIFI+PgplbmRvYmoKCjk4IDAgb2JqCjw8
L0NvdW50IDAvVGl0bGU8RkVGRjAwMzQwMDJFMDAzMTAwMkUwMDMxMDAyMDAwNDEwMDY0MDA2NDAw
NjkwMDc0MDA2OTAwNkYwMDZFMDA2MTAwNkMwMDIwMDA0MTAwNzQwMDc0MDA3MjAwNjkwMDYyMDA3
NTAwNzQwMDY1MDAyMDAwNDQwMDY1MDA2NjAwNjkwMDZFMDA2OTAwNzQwMDY5MDA2RjAwNkUwMDIw
MDA1MDAwNjEwMDcyMDA2MTAwNkQwMDY1MDA3NDAwNjUwMDcyMDA3Mz4KL0Rlc3RbMjMgMCBSL1hZ
WiAxNTAuMiA1OTguNCAwXS9QYXJlbnQgOTcgMCBSL05leHQgOTkgMCBSPj4KZW5kb2JqCgo5OSAw
IG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzEwMDJFMDAzMjAwMjAwMDQ1MDA3
ODAwNjEwMDZEMDA3MDAwNkMwMDY1PgovRGVzdFsyMyAwIFIvWFlaIDE1MC4yIDI5NC45IDBdL1Bh
cmVudCA5NyAwIFIvUHJldiA5OCAwIFI+PgplbmRvYmoKCjEwMCAwIG9iago8PC9Db3VudCAyL0Zp
cnN0IDEwMSAwIFIvTGFzdCAxMDIgMCBSCi9UaXRsZTxGRUZGMDAzNDAwMkUwMDMyMDAyMDAwNTUw
MDczMDA2NTAwMjAwMDZGMDA2NjAwMjAwMDQzMDA0OTAwMkQwMDQxMDA3NDAwNzQwMDcyMDA2OTAw
NjIwMDc1MDA3NDAwNjUwMDIwMDAyMjAwNTMwMDY1MDA3MjAwNzYwMDY5MDA2MzAwNjUwMDUyMDA2
NTAwNjYwMDY1MDA3MjAwNjUwMDZFMDA2MzAwNjUwMDIyPgovRGVzdFsyMyAwIFIvWFlaIDEzMy4y
IDEzMS4zIDBdL1BhcmVudCA5NiAwIFIvUHJldiA5NyAwIFIvTmV4dCAxMDMgMCBSPj4KZW5kb2Jq
CgoxMDEgMCBvYmoKPDwvQ291bnQgMC9UaXRsZTxGRUZGMDAzNDAwMkUwMDMyMDAyRTAwMzEwMDIw
MDA0MTAwNjQwMDY0MDA2OTAwNzQwMDY5MDA2RjAwNkUwMDYxMDA2QzAwMjAwMDQxMDA3NDAwNzQw
MDcyMDA2OTAwNjIwMDc1MDA3NDAwNjUwMDIwMDA0NDAwNjUwMDY2MDA2OTAwNkUwMDY5MDA3NDAw
NjkwMDZGMDA2RTAwMjAwMDUwMDA2MTAwNzIwMDYxMDA2RDAwNjUwMDc0MDA2NTAwNzIwMDczPgov
RGVzdFsyNiAwIFIvWFlaIDE1MC4yIDc1NyAwXS9QYXJlbnQgMTAwIDAgUi9OZXh0IDEwMiAwIFI+
PgplbmRvYmoKCjEwMiAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzIwMDJF
MDAzMjAwMjAwMDQ1MDA3ODAwNjEwMDZEMDA3MDAwNkMwMDY1PgovRGVzdFsyNiAwIFIvWFlaIDE1
MC4yIDU4MC45IDBdL1BhcmVudCAxMDAgMCBSL1ByZXYgMTAxIDAgUj4+CmVuZG9iagoKMTAzIDAg
b2JqCjw8L0NvdW50IDIvRmlyc3QgMTA0IDAgUi9MYXN0IDEwNSAwIFIKL1RpdGxlPEZFRkYwMDM0
MDAyRTAwMzMwMDIwMDA1NTAwNzMwMDY1MDAyMDAwNkYwMDY2MDAyMDAwNDMwMDQ5MDAyRDAwNDEw
MDc0MDA3NDAwNzIwMDY5MDA2MjAwNzUwMDc0MDA2NTAwMjAwMDIyMDA1MTAwNzUwMDY1MDA3NTAw
NjUwMDUyMDA2NTAwNjYwMDY1MDA3MjAwNjUwMDZFMDA2MzAwNjUwMDIyPgovRGVzdFsyNiAwIFIv
WFlaIDEzMy4yIDQzMC42IDBdL1BhcmVudCA5NiAwIFIvUHJldiAxMDAgMCBSL05leHQgMTA2IDAg
Uj4+CmVuZG9iagoKMTA0IDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzQwMDJFMDAzMzAw
MkUwMDMxMDAyMDAwNDEwMDY0MDA2NDAwNjkwMDc0MDA2OTAwNkYwMDZFMDA2MTAwNkMwMDIwMDA0
MTAwNzQwMDc0MDA3MjAwNjkwMDYyMDA3NTAwNzQwMDY1MDAyMDAwNDQwMDY1MDA2NjAwNjkwMDZF
MDA2OTAwNzQwMDY5MDA2RjAwNkUwMDIwMDA1MDAwNjEwMDcyMDA2MTAwNkQwMDY1MDA3NDAwNjUw
MDcyMDA3Mz4KL0Rlc3RbMjYgMCBSL1hZWiAxNTAuMiAzOTEuMSAwXS9QYXJlbnQgMTAzIDAgUi9O
ZXh0IDEwNSAwIFI+PgplbmRvYmoKCjEwNSAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0
MDAyRTAwMzMwMDJFMDAzMjAwMjAwMDQ1MDA3ODAwNjEwMDZEMDA3MDAwNkMwMDY1PgovRGVzdFsy
NiAwIFIvWFlaIDE1MC4yIDM1NC4xIDBdL1BhcmVudCAxMDMgMCBSL1ByZXYgMTA0IDAgUj4+CmVu
ZG9iagoKMTA2IDAgb2JqCjw8L0NvdW50IDMvRmlyc3QgMTA3IDAgUi9MYXN0IDEwOSAwIFIKL1Rp
dGxlPEZFRkYwMDM0MDAyRTAwMzQwMDIwMDA1NTAwNzMwMDY1MDAyMDAwNkYwMDY2MDAyMDAwNDMw
MDQ5MDAyRDAwNDEwMDc0MDA3NDAwNzIwMDY5MDA2MjAwNzUwMDc0MDA2NTAwMjAwMDIyMDA0MzAw
NDkwMDQxMDA3NDAwNzQwMDYxMDA2MzAwNjgwMDZEMDA2NTAwNkUwMDc0MDAyMj4KL0Rlc3RbMjYg
MCBSL1hZWiAxMzMuMiAyMzEuMyAwXS9QYXJlbnQgOTYgMCBSL1ByZXYgMTAzIDAgUi9OZXh0IDEx
MCAwIFI+PgplbmRvYmoKCjEwNyAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAw
MzQwMDJFMDAzMTAwMjAwMDQxMDA2NDAwNjQwMDY5MDA3NDAwNjkwMDZGMDA2RTAwNjEwMDZDMDAy
MDAwNDEwMDc0MDA3NDAwNzIwMDY5MDA2MjAwNzUwMDc0MDA2NTAwMjAwMDQ0MDA2NTAwNjYwMDY5
MDA2RTAwNjkwMDc0MDA2OTAwNkYwMDZFMDAyMDAwNTAwMDYxMDA3MjAwNjEwMDZEMDA2NTAwNzQw
MDY1MDA3MjAwNzM+Ci9EZXN0WzI5IDAgUi9YWVogMTUwLjIgNzU3IDBdL1BhcmVudCAxMDYgMCBS
L05leHQgMTA4IDAgUj4+CmVuZG9iagoKMTA4IDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAw
MzQwMDJFMDAzNDAwMkUwMDMyMDAyMDAwNDEwMDY0MDA2NDAwNjkwMDc0MDA2OTAwNkYwMDZFMDA2
MTAwNkMwMDIwMDA1MzAwNzkwMDczMDA0MzAwNkYwMDZFMDA2NjAwNjkwMDY3MDAyRDAwNEYwMDcw
MDA3NDAwNjkwMDZGMDA2RTAwNzM+Ci9EZXN0WzI5IDAgUi9YWVogMTUwLjIgNjY3LjggMF0vUGFy
ZW50IDEwNiAwIFIvUHJldiAxMDcgMCBSL05leHQgMTA5IDAgUj4+CmVuZG9iagoKMTA5IDAgb2Jq
Cjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzQwMDJFMDAzNDAwMkUwMDMzMDAyMDAwNDUwMDc4MDA2
MTAwNkQwMDcwMDA2QzAwNjU+Ci9EZXN0WzI5IDAgUi9YWVogMTUwLjIgNTQ0LjMgMF0vUGFyZW50
IDEwNiAwIFIvUHJldiAxMDggMCBSPj4KZW5kb2JqCgoxMTAgMCBvYmoKPDwvQ291bnQgMi9GaXJz
dCAxMTEgMCBSL0xhc3QgMTEyIDAgUgovVGl0bGU8RkVGRjAwMzQwMDJFMDAzNTAwMjAwMDU1MDA3
MzAwNjUwMDIwMDA2RjAwNjYwMDIwMDA0MzAwNDkwMDJEMDA0MTAwNzQwMDc0MDA3MjAwNjkwMDYy
MDA3NTAwNzQwMDY1MDAyMDAwMjIwMDU1MDA3MzAwNjUwMDcyMDAyMj4KL0Rlc3RbMjkgMCBSL1hZ
WiAxMzMuMiAzOTAuOSAwXS9QYXJlbnQgOTYgMCBSL1ByZXYgMTA2IDAgUi9OZXh0IDExMyAwIFI+
PgplbmRvYmoKCjExMSAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzUwMDJF
MDAzMTAwMjAwMDQxMDA2NDAwNjQwMDY5MDA3NDAwNjkwMDZGMDA2RTAwNjEwMDZDMDAyMDAwNDEw
MDc0MDA3NDAwNzIwMDY5MDA2MjAwNzUwMDc0MDA2NTAwMjAwMDQ0MDA2NTAwNjYwMDY5MDA2RTAw
NjkwMDc0MDA2OTAwNkYwMDZFMDAyMDAwNTAwMDYxMDA3MjAwNjEwMDZEMDA2NTAwNzQwMDY1MDA3
MjAwNzM+Ci9EZXN0WzI5IDAgUi9YWVogMTUwLjIgMzUxLjQgMF0vUGFyZW50IDExMCAwIFIvTmV4
dCAxMTIgMCBSPj4KZW5kb2JqCgoxMTIgMCBvYmoKPDwvQ291bnQgMC9UaXRsZTxGRUZGMDAzNDAw
MkUwMDM1MDAyRTAwMzIwMDIwMDA0NTAwNzgwMDYxMDA2RDAwNzAwMDZDMDA2NT4KL0Rlc3RbMjkg
MCBSL1hZWiAxNTAuMiAzMTQuNCAwXS9QYXJlbnQgMTEwIDAgUi9QcmV2IDExMSAwIFI+PgplbmRv
YmoKCjExMyAwIG9iago8PC9Db3VudCAyL0ZpcnN0IDExNCAwIFIvTGFzdCAxMTUgMCBSCi9UaXRs
ZTxGRUZGMDAzNDAwMkUwMDM2MDAyMDAwNTUwMDczMDA2NTAwMjAwMDZGMDA2NjAwMjAwMDQzMDA0
OTAwMkQwMDQxMDA3NDAwNzQwMDcyMDA2OTAwNjIwMDc1MDA3NDAwNjUwMDIwMDAyMjAwNDMwMDc1
MDA3MzAwNzQwMDZGMDA2RDAwNjUwMDcyMDA1NTAwNzMwMDY1MDA3MjAwNDMwMDZGMDA2RDAwNzAw
MDYxMDA2RTAwNzkwMDIyPgovRGVzdFsyOSAwIFIvWFlaIDEzMy4yIDE5MS42IDBdL1BhcmVudCA5
NiAwIFIvUHJldiAxMTAgMCBSL05leHQgMTE2IDAgUj4+CmVuZG9iagoKMTE0IDAgb2JqCjw8L0Nv
dW50IDAvVGl0bGU8RkVGRjAwMzQwMDJFMDAzNjAwMkUwMDMxMDAyMDAwNDEwMDY0MDA2NDAwNjkw
MDc0MDA2OTAwNkYwMDZFMDA2MTAwNkMwMDIwMDA0MTAwNzQwMDc0MDA3MjAwNjkwMDYyMDA3NTAw
NzQwMDY1MDAyMDAwNDQwMDY1MDA2NjAwNjkwMDZFMDA2OTAwNzQwMDY5MDA2RjAwNkUwMDIwMDA1
MDAwNjEwMDcyMDA2MTAwNkQwMDY1MDA3NDAwNjUwMDcyMDA3Mz4KL0Rlc3RbMjkgMCBSL1hZWiAx
NTAuMiAxMzQuOCAwXS9QYXJlbnQgMTEzIDAgUi9OZXh0IDExNSAwIFI+PgplbmRvYmoKCjExNSAw
IG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzYwMDJFMDAzMjAwMjAwMDQ1MDA3
ODAwNjEwMDZEMDA3MDAwNkMwMDY1PgovRGVzdFszMiAwIFIvWFlaIDE1MC4yIDc1NyAwXS9QYXJl
bnQgMTEzIDAgUi9QcmV2IDExNCAwIFI+PgplbmRvYmoKCjExNiAwIG9iago8PC9Db3VudCAyL0Zp
cnN0IDExNyAwIFIvTGFzdCAxMTggMCBSCi9UaXRsZTxGRUZGMDAzNDAwMkUwMDM3MDAyMDAwNTUw
MDczMDA2NTAwMjAwMDZGMDA2NjAwMjAwMDQzMDA0OTAwMkQwMDQxMDA3NDAwNzQwMDcyMDA2OTAw
NjIwMDc1MDA3NDAwNjUwMDIwMDAyMjAwNDMwMDQ5MDA0MTAwNDMwMDQzMDA3NTAwNzMwMDc0MDA2
RjAwNkQwMDY1MDA3MjAwNDMwMDZGMDA2RDAwNzAwMDYxMDA2RTAwNzkwMDIyPgovRGVzdFszMiAw
IFIvWFlaIDEzMy4yIDY0NC40IDBdL1BhcmVudCA5NiAwIFIvUHJldiAxMTMgMCBSL05leHQgMTE5
IDAgUj4+CmVuZG9iagoKMTE3IDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzQwMDJFMDAz
NzAwMkUwMDMxMDAyMDAwNDEwMDY0MDA2NDAwNjkwMDc0MDA2OTAwNkYwMDZFMDA2MTAwNkMwMDIw
MDA0MTAwNzQwMDc0MDA3MjAwNjkwMDYyMDA3NTAwNzQwMDY1MDAyMDAwNDQwMDY1MDA2NjAwNjkw
MDZFMDA2OTAwNzQwMDY5MDA2RjAwNkUwMDIwMDA1MDAwNjEwMDcyMDA2MTAwNkQwMDY1MDA3NDAw
NjUwMDcyMDA3Mz4KL0Rlc3RbMzIgMCBSL1hZWiAxNTAuMiA1NDYuOSAwXS9QYXJlbnQgMTE2IDAg
Ui9OZXh0IDExOCAwIFI+PgplbmRvYmoKCjExOCAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYw
MDM0MDAyRTAwMzcwMDJFMDAzMjAwMjAwMDQ1MDA3ODAwNjEwMDZEMDA3MDAwNkMwMDY1PgovRGVz
dFszMiAwIFIvWFlaIDE1MC4yIDUxMCAwXS9QYXJlbnQgMTE2IDAgUi9QcmV2IDExNyAwIFI+Pgpl
bmRvYmoKCjExOSAwIG9iago8PC9Db3VudCAyL0ZpcnN0IDEyMCAwIFIvTGFzdCAxMjEgMCBSCi9U
aXRsZTxGRUZGMDAzNDAwMkUwMDM4MDAyMDAwNTUwMDczMDA2NTAwMjAwMDZGMDA2NjAwMjAwMDQz
MDA0OTAwMkQwMDQxMDA3NDAwNzQwMDcyMDA2OTAwNjIwMDc1MDA3NDAwNjUwMDIwMDAyMjAwNDUw
MDZFMDA2MzAwNzIwMDc5MDA3MDAwNzQwMDY1MDA2NDAwNTQwMDY1MDA3ODAwNzQwMDIyPgovRGVz
dFszMiAwIFIvWFlaIDEzMy4yIDM5Ny40IDBdL1BhcmVudCA5NiAwIFIvUHJldiAxMTYgMCBSL05l
eHQgMTIyIDAgUj4+CmVuZG9iagoKMTIwIDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzQw
MDJFMDAzODAwMkUwMDMxMDAyMDAwNDEwMDY0MDA2NDAwNjkwMDc0MDA2OTAwNkYwMDZFMDA2MTAw
NkMwMDIwMDA0MTAwNzQwMDc0MDA3MjAwNjkwMDYyMDA3NTAwNzQwMDY1MDAyMDAwNDQwMDY1MDA2
NjAwNjkwMDZFMDA2OTAwNzQwMDY5MDA2RjAwNkUwMDIwMDA1MDAwNjEwMDcyMDA2MTAwNkQwMDY1
MDA3NDAwNjUwMDcyMDA3Mz4KL0Rlc3RbMzIgMCBSL1hZWiAxNTAuMiAzMjguOSAwXS9QYXJlbnQg
MTE5IDAgUi9OZXh0IDEyMSAwIFI+PgplbmRvYmoKCjEyMSAwIG9iago8PC9Db3VudCAwL1RpdGxl
PEZFRkYwMDM0MDAyRTAwMzgwMDJFMDAzMjAwMjAwMDQ1MDA3ODAwNjEwMDZEMDA3MDAwNkMwMDY1
PgovRGVzdFszMiAwIFIvWFlaIDE1MC4yIDI1MS4zIDBdL1BhcmVudCAxMTkgMCBSL1ByZXYgMTIw
IDAgUj4+CmVuZG9iagoKMTIyIDAgb2JqCjw8L0NvdW50IDIvRmlyc3QgMTIzIDAgUi9MYXN0IDEy
NCAwIFIKL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzkwMDIwMDA1NTAwNzMwMDY1MDAyMDAwNkYwMDY2
MDAyMDAwNDMwMDQ5MDAyRDAwNDEwMDc0MDA3NDAwNzIwMDY5MDA2MjAwNzUwMDc0MDA2NTAwMjAw
MDIyMDA0QzAwNjkwMDZFMDA2QjAwNTQwMDY1MDA3ODAwNzQwMDIyPgovRGVzdFszNSAwIFIvWFla
IDEzMy4yIDc1NyAwXS9QYXJlbnQgOTYgMCBSL1ByZXYgMTE5IDAgUi9OZXh0IDEyNSAwIFI+Pgpl
bmRvYmoKCjEyMyAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzkwMDJFMDAz
MTAwMjAwMDQxMDA2NDAwNjQwMDY5MDA3NDAwNjkwMDZGMDA2RTAwNjEwMDZDMDAyMDAwNDEwMDc0
MDA3NDAwNzIwMDY5MDA2MjAwNzUwMDc0MDA2NTAwMjAwMDQ0MDA2NTAwNjYwMDY5MDA2RTAwNjkw
MDc0MDA2OTAwNkYwMDZFMDAyMDAwNTAwMDYxMDA3MjAwNjEwMDZEMDA2NTAwNzQwMDY1MDA3MjAw
NzM+Ci9EZXN0WzM1IDAgUi9YWVogMTUwLjIgNjAxLjYgMF0vUGFyZW50IDEyMiAwIFIvTmV4dCAx
MjQgMCBSPj4KZW5kb2JqCgoxMjQgMCBvYmoKPDwvQ291bnQgMC9UaXRsZTxGRUZGMDAzNDAwMkUw
MDM5MDAyRTAwMzIwMDIwMDA0NTAwNzgwMDYxMDA2RDAwNzAwMDZDMDA2NT4KL0Rlc3RbMzUgMCBS
L1hZWiAxNTAuMiA1NjQuNyAwXS9QYXJlbnQgMTIyIDAgUi9QcmV2IDEyMyAwIFI+PgplbmRvYmoK
CjEyNSAwIG9iago8PC9Db3VudCAyL0ZpcnN0IDEyNiAwIFIvTGFzdCAxMjcgMCBSCi9UaXRsZTxG
RUZGMDAzNDAwMkUwMDMxMDAzMDAwMjAwMDU1MDA3MzAwNjUwMDIwMDA2RjAwNjYwMDIwMDA0MzAw
NDkwMDJEMDA0MTAwNzQwMDc0MDA3MjAwNjkwMDYyMDA3NTAwNzQwMDY1MDAyMDAwMjIwMDQ0MDA3
OTAwNkUwMDYxMDA2RDAwNjkwMDYzMDA0NjAwNjkwMDY1MDA2QzAwNjQwMDIyPgovRGVzdFszNSAw
IFIvWFlaIDEzMy44IDQyMS41IDBdL1BhcmVudCA5NiAwIFIvUHJldiAxMjIgMCBSL05leHQgMTI4
IDAgUj4+CmVuZG9iagoKMTI2IDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzQwMDJFMDAz
MTAwMzAwMDJFMDAzMTAwMjAwMDQxMDA2NDAwNjQwMDY5MDA3NDAwNjkwMDZGMDA2RTAwNjEwMDZD
MDAyMDAwNDEwMDc0MDA3NDAwNzIwMDY5MDA2MjAwNzUwMDc0MDA2NTAwMjAwMDQ0MDA2NTAwNjYw
MDY5MDA2RTAwNjkwMDc0MDA2OTAwNkYwMDZFMDAyMDAwNTAwMDYxMDA3MjAwNjEwMDZEMDA2NTAw
NzQwMDY1MDA3MjAwNzM+Ci9EZXN0WzM1IDAgUi9YWVogMTUwLjIgMzgxLjkgMF0vUGFyZW50IDEy
NSAwIFIvTmV4dCAxMjcgMCBSPj4KZW5kb2JqCgoxMjcgMCBvYmoKPDwvQ291bnQgMC9UaXRsZTxG
RUZGMDAzNDAwMkUwMDMxMDAzMDAwMkUwMDMyMDAyMDAwNDUwMDc4MDA2MTAwNkQwMDcwMDA2QzAw
NjU+Ci9EZXN0WzM1IDAgUi9YWVogMTUwLjIgMzI3LjcgMF0vUGFyZW50IDEyNSAwIFIvUHJldiAx
MjYgMCBSPj4KZW5kb2JqCgoxMjggMCBvYmoKPDwvQ291bnQgMi9GaXJzdCAxMjkgMCBSL0xhc3Qg
MTMwIDAgUgovVGl0bGU8RkVGRjAwMzQwMDJFMDAzMTAwMzEwMDIwMDA1NTAwNzMwMDY1MDAyMDAw
NkYwMDY2MDAyMDAwNDMwMDQ5MDAyRDAwNDEwMDc0MDA3NDAwNzIwMDY5MDA2MjAwNzUwMDc0MDA2
NTAwMjAwMDIyMDA1NDAwNjkwMDYzMDA2QjAwNjUwMDc0MDA1MjAwNjUwMDY2MDA2NTAwNzIwMDY1
MDA2RTAwNjMwMDY1MDAyMj4KL0Rlc3RbMzUgMCBSL1hZWiAxMzMuOCAxOTQuNyAwXS9QYXJlbnQg
OTYgMCBSL1ByZXYgMTI1IDAgUi9OZXh0IDEzMSAwIFI+PgplbmRvYmoKCjEyOSAwIG9iago8PC9D
b3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzEwMDMxMDAyRTAwMzEwMDIwMDA0MTAwNjQwMDY0
MDA2OTAwNzQwMDY5MDA2RjAwNkUwMDYxMDA2QzAwMjAwMDQxMDA3NDAwNzQwMDcyMDA2OTAwNjIw
MDc1MDA3NDAwNjUwMDIwMDA0NDAwNjUwMDY2MDA2OTAwNkUwMDY5MDA3NDAwNjkwMDZGMDA2RTAw
MjAwMDUwMDA2MTAwNzIwMDYxMDA2RDAwNjUwMDc0MDA2NTAwNzIwMDczPgovRGVzdFszOCAwIFIv
WFlaIDE1MC4yIDc1NyAwXS9QYXJlbnQgMTI4IDAgUi9OZXh0IDEzMCAwIFI+PgplbmRvYmoKCjEz
MCAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzEwMDMxMDAyRTAwMzIwMDIw
MDA0NTAwNzgwMDYxMDA2RDAwNzAwMDZDMDA2NT4KL0Rlc3RbMzggMCBSL1hZWiAxNTAuMiA2MDku
OSAwXS9QYXJlbnQgMTI4IDAgUi9QcmV2IDEyOSAwIFI+PgplbmRvYmoKCjEzMSAwIG9iago8PC9D
b3VudCAyL0ZpcnN0IDEzMiAwIFIvTGFzdCAxMzMgMCBSCi9UaXRsZTxGRUZGMDAzNDAwMkUwMDMx
MDAzMjAwMjAwMDU1MDA3MzAwNjUwMDIwMDA2RjAwNjYwMDIwMDA0MzAwNDkwMDJEMDA0MTAwNzQw
MDc0MDA3MjAwNjkwMDYyMDA3NTAwNzQwMDY1MDAyMDAwMjIwMDU0MDA3OTAwNzAwMDY1MDA1MjAw
NjUwMDY2MDA2NTAwNzIwMDY1MDA2RTAwNjMwMDY1MDAyMj4KL0Rlc3RbMzggMCBSL1hZWiAxMzMu
OCA0NDIuMyAwXS9QYXJlbnQgOTYgMCBSL1ByZXYgMTI4IDAgUi9OZXh0IDEzNCAwIFI+PgplbmRv
YmoKCjEzMiAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzEwMDMyMDAyRTAw
MzEwMDIwMDA0MTAwNjQwMDY0MDA2OTAwNzQwMDY5MDA2RjAwNkUwMDYxMDA2QzAwMjAwMDQxMDA3
NDAwNzQwMDcyMDA2OTAwNjIwMDc1MDA3NDAwNjUwMDIwMDA0NDAwNjUwMDY2MDA2OTAwNkUwMDY5
MDA3NDAwNjkwMDZGMDA2RTAwMjAwMDUwMDA2MTAwNzIwMDYxMDA2RDAwNjUwMDc0MDA2NTAwNzIw
MDczPgovRGVzdFszOCAwIFIvWFlaIDE1MC4yIDQwMi43IDBdL1BhcmVudCAxMzEgMCBSL05leHQg
MTMzIDAgUj4+CmVuZG9iagoKMTMzIDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzQwMDJF
MDAzMTAwMzIwMDJFMDAzMjAwMjAwMDQ1MDA3ODAwNjEwMDZEMDA3MDAwNkMwMDY1PgovRGVzdFsz
OCAwIFIvWFlaIDE1MC4yIDM2NS44IDBdL1BhcmVudCAxMzEgMCBSL1ByZXYgMTMyIDAgUj4+CmVu
ZG9iagoKMTM0IDAgb2JqCjw8L0NvdW50IDIvRmlyc3QgMTM1IDAgUi9MYXN0IDEzNiAwIFIKL1Rp
dGxlPEZFRkYwMDM0MDAyRTAwMzEwMDMzMDAyMDAwNTUwMDczMDA2NTAwMjAwMDZGMDA2NjAwMjAw
MDQzMDA0OTAwMkQwMDQxMDA3NDAwNzQwMDcyMDA2OTAwNjIwMDc1MDA3NDAwNjUwMDIwMDAyMjAw
NTMwMDRDMDA0MTAwNTIwMDY1MDA2NjAwNjUwMDcyMDA2NTAwNkUwMDYzMDA2NTAwMjI+Ci9EZXN0
WzM4IDAgUi9YWVogMTMzLjggMjM1LjkgMF0vUGFyZW50IDk2IDAgUi9QcmV2IDEzMSAwIFI+Pgpl
bmRvYmoKCjEzNSAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM0MDAyRTAwMzEwMDMzMDAy
RTAwMzEwMDIwMDA0MTAwNjQwMDY0MDA2OTAwNzQwMDY5MDA2RjAwNkUwMDYxMDA2QzAwMjAwMDQx
MDA3NDAwNzQwMDcyMDA2OTAwNjIwMDc1MDA3NDAwNjUwMDIwMDA0NDAwNjUwMDY2MDA2OTAwNkUw
MDY5MDA3NDAwNjkwMDZGMDA2RTAwMjAwMDUwMDA2MTAwNzIwMDYxMDA2RDAwNjUwMDc0MDA2NTAw
NzIwMDczMDAyMDAwMjgwMDZGMDA3MDAwNzQwMDY5MDA2RjAwNkUwMDYxMDA2QzAwMjk+Ci9EZXN0
WzM4IDAgUi9YWVogMTUwLjIgMTg0LjcgMF0vUGFyZW50IDEzNCAwIFIvTmV4dCAxMzYgMCBSPj4K
ZW5kb2JqCgoxMzYgMCBvYmoKPDwvQ291bnQgMC9UaXRsZTxGRUZGMDAzNDAwMkUwMDMxMDAzMzAw
MkUwMDMyMDAyMDAwNDUwMDc4MDA2MTAwNkQwMDcwMDA2QzAwNjUwMDczPgovRGVzdFs0MSAwIFIv
WFlaIDE1MC4yIDM3NC42IDBdL1BhcmVudCAxMzQgMCBSL1ByZXYgMTM1IDAgUj4+CmVuZG9iagoK
NTQgMCBvYmoKPDwvVHlwZS9QYWdlcwovUmVzb3VyY2VzIDgxIDAgUgovTWVkaWFCb3hbIDAgMCA1
OTUgODQyIF0KL0tpZHNbIDEgMCBSIDggMCBSIDExIDAgUiAxNCAwIFIgMTcgMCBSIDIwIDAgUiAy
MyAwIFIgMjYgMCBSIDI5IDAgUiAzMiAwIFIgMzUgMCBSIDM4IDAgUiA0MSAwIFIgNDQgMCBSIF0K
L0NvdW50IDE0Pj4KZW5kb2JqCgo0NyAwIG9iago8PC9UeXBlL0Fubm90L1N1YnR5cGUvTGluay9C
b3JkZXJbMCAwIDBdL1JlY3RbMjM4LjYgNTI1LjMgMjU3LjkgNTM0LjddL0Rlc3RbMzUgMCBSL1hZ
WiAxMzMuOCAxOTQuNyAwXT4+CmVuZG9iagoKNDggMCBvYmoKPDwvVHlwZS9Bbm5vdC9TdWJ0eXBl
L0xpbmsvQm9yZGVyWzAgMCAwXS9SZWN0WzI1MS43IDQxNi42IDI2NS45IDQyNl0vRGVzdFsyMyAw
IFIvWFlaIDEzMy4yIDY5NS44IDBdPj4KZW5kb2JqCgo0OSAwIG9iago8PC9UeXBlL0Fubm90L1N1
YnR5cGUvTGluay9Cb3JkZXJbMCAwIDBdL1JlY3RbMjUxLjcgNDYxLjkgMjY1LjkgNDcxLjNdL0Rl
c3RbMjMgMCBSL1hZWiAxMzMuMiA2OTUuOCAwXT4+CmVuZG9iagoKNTAgMCBvYmoKPDwvVHlwZS9B
bm5vdC9TdWJ0eXBlL0xpbmsvQm9yZGVyWzAgMCAwXS9SZWN0WzI1NiA0NzkuOSAyNzUuMyA0ODku
M10vRGVzdFszNSAwIFIvWFlaIDEzMy44IDQyMS41IDBdPj4KZW5kb2JqCgo1MSAwIG9iago8PC9U
eXBlL0Fubm90L1N1YnR5cGUvTGluay9Cb3JkZXJbMCAwIDBdL1JlY3RbMjc2LjUgNTA3LjMgMjk1
LjggNTE2LjddL0Rlc3RbMzggMCBSL1hZWiAxMzMuOCAyMzUuOSAwXT4+CmVuZG9iagoKNTIgMCBv
YmoKPDwvVHlwZS9Bbm5vdC9TdWJ0eXBlL0xpbmsvQm9yZGVyWzAgMCAwXS9SZWN0WzIzOC42IDUw
Ny4zIDI1Ny45IDUxNi43XS9EZXN0WzM4IDAgUi9YWVogMTMzLjggNDQyLjMgMF0+PgplbmRvYmoK
CjUzIDAgb2JqCjw8L1R5cGUvQW5ub3QvU3VidHlwZS9MaW5rL0JvcmRlclswIDAgMF0vUmVjdFsy
NzMuOSA1MjUuMyAyOTUuNyA1MzQuN10vRGVzdFsyNiAwIFIvWFlaIDE1MC4yIDc1NyAwXT4+CmVu
ZG9iagoKMTM3IDAgb2JqCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyA1NCAwIFIKL09wZW5BY3Rpb25b
MSAwIFIgL1hZWiBudWxsIG51bGwgMF0KL1ZpZXdlclByZWZlcmVuY2VzPDwvRGlzcGxheURvY1Rp
dGxlIHRydWUKPj4KL091dGxpbmVzIDgyIDAgUgovTGFuZyhkZS1ERSkKPj4KZW5kb2JqCgoxMzgg
MCBvYmoKPDwvVGl0bGU8RkVGRjAwNEYwMDU0MDA1MjAwNTMwMDIwMDA0NTAwNzgwMDc0MDA2NTAw
NkUwMDczMDA2OTAwNkYwMDZFMDAyMDAwNDkwMDU0MDA1MzAwNEQwMDJEMDA0MzAwNDkwMDQxMDA3
NDAwNzQwMDcyMDA2OTAwNjIwMDc1MDA3NDAwNjUwMDQzMDA2RjAwNkMwMDZDMDA2NTAwNjMwMDc0
MDA2OTAwNkYwMDZFPgovQXV0aG9yPEZFRkYwMDU0MDA2RjAwNzIwMDczMDA3NDAwNjUwMDZFMDAy
MDAwNTQwMDY4MDA2MTAwNzU+Ci9TdWJqZWN0PEZFRkYwMDQ5MDA2RTAwNzMwMDc0MDA2MTAwNkMw
MDZDMDA2MTAwNzQwMDY5MDA2RjAwNkUwMDIwMDA2MTAwNkUwMDY0MDAyMDAwNTUwMDczMDA2MTAw
NjcwMDY1PgovS2V5d29yZHM8RkVGRjAwNEYwMDU0MDA1MjAwNTMwMDJDMDAyMDAwNDkwMDU0MDA1
MzAwNEQwMDJEMDA0MzAwNDkwMDQxMDA3NDAwNzQwMDcyMDA2OTAwNjIwMDc1MDA3NDAwNjUwMDQz
MDA2RjAwNkMwMDZDMDA2NTAwNjMwMDc0MDA2OTAwNkYwMDZFPgovQ3JlYXRvcjxGRUZGMDA1NzAw
NzIwMDY5MDA3NDAwNjUwMDcyPgovUHJvZHVjZXI8RkVGRjAwNEMwMDY5MDA2MjAwNzIwMDY1MDA0
RjAwNjYwMDY2MDA2OTAwNjMwMDY1MDAyMDAwMzQwMDJFMDAzMj4KL0NyZWF0aW9uRGF0ZShEOjIw
MTYwMjExMTE0NDA5KzAxJzAwJyk+PgplbmRvYmoKCnhyZWYKMCAxMzkKMDAwMDAwMDAwMCA2NTUz
NSBmIAowMDAwMTE1NjI1IDAwMDAwIG4gCjAwMDAwMDAwMTkgMDAwMDAgbiAKMDAwMDAwMTE2OCAw
MDAwMCBuIAowMDAwMDAxMTg5IDAwMDAwIG4gCjAwMDAwMDM3NTMgMDAwMDAgbiAKMDAwMDAwMzc3
NCAwMDAwMCBuIAowMDAwMDA0NTg3IDAwMDAwIG4gCjAwMDAxMTU3NjkgMDAwMDAgbiAKMDAwMDAw
NDYwNyAwMDAwMCBuIAowMDAwMDA3MTg4IDAwMDAwIG4gCjAwMDAxMTU5MTMgMDAwMDAgbiAKMDAw
MDAwNzIxMCAwMDAwMCBuIAowMDAwMDA4NjM2IDAwMDAwIG4gCjAwMDAxMTYwNTkgMDAwMDAgbiAK
MDAwMDAwODY1OCAwMDAwMCBuIAowMDAwMDExOTk5IDAwMDAwIG4gCjAwMDAxMTYyNjUgMDAwMDAg
biAKMDAwMDAxMjAyMSAwMDAwMCBuIAowMDAwMDEzMzc1IDAwMDAwIG4gCjAwMDAxMTY0MTEgMDAw
MDAgbiAKMDAwMDAxMzM5NyAwMDAwMCBuIAowMDAwMDE3MTA0IDAwMDAwIG4gCjAwMDAxMTY1NTcg
MDAwMDAgbiAKMDAwMDAxNzEyNiAwMDAwMCBuIAowMDAwMDIwNTYwIDAwMDAwIG4gCjAwMDAxMTY3
MDMgMDAwMDAgbiAKMDAwMDAyMDU4MiAwMDAwMCBuIAowMDAwMDIzNzU1IDAwMDAwIG4gCjAwMDAx
MTY4NDkgMDAwMDAgbiAKMDAwMDAyMzc3NyAwMDAwMCBuIAowMDAwMDI1OTY0IDAwMDAwIG4gCjAw
MDAxMTY5OTUgMDAwMDAgbiAKMDAwMDAyNTk4NiAwMDAwMCBuIAowMDAwMDI4MjMyIDAwMDAwIG4g
CjAwMDAxMTcxNDEgMDAwMDAgbiAKMDAwMDAyODI1NCAwMDAwMCBuIAowMDAwMDMwODk1IDAwMDAw
IG4gCjAwMDAxMTcyODcgMDAwMDAgbiAKMDAwMDAzMDkxNyAwMDAwMCBuIAowMDAwMDMzNjIyIDAw
MDAwIG4gCjAwMDAxMTc0MzMgMDAwMDAgbiAKMDAwMDAzMzY0NCAwMDAwMCBuIAowMDAwMDM2Nzkw
IDAwMDAwIG4gCjAwMDAxMTc1NzkgMDAwMDAgbiAKMDAwMDAzNjgxMiAwMDAwMCBuIAowMDAwMDM4
MjQ4IDAwMDAwIG4gCjAwMDAxMzA3NzggMDAwMDAgbiAKMDAwMDEzMDg5OSAwMDAwMCBuIAowMDAw
MTMxMDE4IDAwMDAwIG4gCjAwMDAxMzExMzkgMDAwMDAgbiAKMDAwMDEzMTI1OCAwMDAwMCBuIAow
MDAwMTMxMzc5IDAwMDAwIG4gCjAwMDAxMzE1MDAgMDAwMDAgbiAKMDAwMDEzMDU4NyAwMDAwMCBu
IAowMDAwMDM4MjcwIDAwMDAwIG4gCjAwMDAwNDU4MDEgMDAwMDAgbiAKMDAwMDA0NTgyMyAwMDAw
MCBuIAowMDAwMDQ2MDE4IDAwMDAwIG4gCjAwMDAwNDYzNzIgMDAwMDAgbiAKMDAwMDA0NjU4MiAw
MDAwMCBuIAowMDAwMDY5NjEwIDAwMDAwIG4gCjAwMDAwNjk2MzMgMDAwMDAgbiAKMDAwMDA2OTgy
OSAwMDAwMCBuIAowMDAwMDcwMzg2IDAwMDAwIG4gCjAwMDAwNzA3ODggMDAwMDAgbiAKMDAwMDA4
NzI5NCAwMDAwMCBuIAowMDAwMDg3MzE3IDAwMDAwIG4gCjAwMDAwODc1MjIgMDAwMDAgbiAKMDAw
MDA4ODE5NCAwMDAwMCBuIAowMDAwMDg4NzE5IDAwMDAwIG4gCjAwMDAxMDM0MjkgMDAwMDAgbiAK
MDAwMDEwMzQ1MiAwMDAwMCBuIAowMDAwMTAzNjU2IDAwMDAwIG4gCjAwMDAxMDQyNTUgMDAwMDAg
biAKMDAwMDEwNDcxMiAwMDAwMCBuIAowMDAwMTE0NDk1IDAwMDAwIG4gCjAwMDAxMTQ1MTcgMDAw
MDAgbiAKMDAwMDExNDczMSAwMDAwMCBuIAowMDAwMTE1MTU1IDAwMDAwIG4gCjAwMDAxMTU0NTMg
MDAwMDAgbiAKMDAwMDExNTUyNiAwMDAwMCBuIAowMDAwMTE3NzI1IDAwMDAwIG4gCjAwMDAxMTc3
ODIgMDAwMDAgbiAKMDAwMDExNzk3NiAwMDAwMCBuIAowMDAwMTE4MTk4IDAwMDAwIG4gCjAwMDAx
MTgzNTAgMDAwMDAgbiAKMDAwMDExODUyMCAwMDAwMCBuIAowMDAwMTE4NzAwIDAwMDAwIG4gCjAw
MDAxMTg4NjQgMDAwMDAgbiAKMDAwMDExOTA0MiAwMDAwMCBuIAowMDAwMTE5MjM2IDAwMDAwIG4g
CjAwMDAxMTk0MDAgMDAwMDAgbiAKMDAwMDExOTU5NiAwMDAwMCBuIAowMDAwMTE5ODE4IDAwMDAw
IG4gCjAwMDAxMjAwNjYgMDAwMDAgbiAKMDAwMDEyMDM0NiAwMDAwMCBuIAowMDAwMTIwNTM0IDAw
MDAwIG4gCjAwMDAxMjA4MjkgMDAwMDAgbiAKMDAwMDEyMTEyMSAwMDAwMCBuIAowMDAwMTIxMjcz
IDAwMDAwIG4gCjAwMDAxMjE1ODMgMDAwMDAgbiAKMDAwMDEyMTg3NiAwMDAwMCBuIAowMDAwMTIy
MDMxIDAwMDAwIG4gCjAwMDAxMjIzMzQgMDAwMDAgbiAKMDAwMDEyMjYyOSAwMDAwMCBuIAowMDAw
MTIyNzg0IDAwMDAwIG4gCjAwMDAxMjMwNzkgMDAwMDAgbiAKMDAwMDEyMzM3MiAwMDAwMCBuIAow
MDAwMTIzNjI0IDAwMDAwIG4gCjAwMDAxMjM3NzkgMDAwMDAgbiAKMDAwMDEyNDA0MiAwMDAwMCBu
IAowMDAwMTI0MzM3IDAwMDAwIG4gCjAwMDAxMjQ0OTIgMDAwMDAgbiAKMDAwMDEyNDgxNSAwMDAw
MCBuIAowMDAwMTI1MTEwIDAwMDAwIG4gCjAwMDAxMjUyNjMgMDAwMDAgbiAKMDAwMDEyNTU4NiAw
MDAwMCBuIAowMDAwMTI1ODgxIDAwMDAwIG4gCjAwMDAxMjYwMzQgMDAwMDAgbiAKMDAwMDEyNjMz
MyAwMDAwMCBuIAowMDAwMTI2NjI4IDAwMDAwIG4gCjAwMDAxMjY3ODMgMDAwMDAgbiAKMDAwMDEy
NzA2MCAwMDAwMCBuIAowMDAwMTI3MzU1IDAwMDAwIG4gCjAwMDAxMjc1MTAgMDAwMDAgbiAKMDAw
MDEyNzgwOSAwMDAwMCBuIAowMDAwMTI4MTA4IDAwMDAwIG4gCjAwMDAxMjgyNjcgMDAwMDAgbiAK
MDAwMDEyODU3OCAwMDAwMCBuIAowMDAwMTI4ODc1IDAwMDAwIG4gCjAwMDAxMjkwMzQgMDAwMDAg
biAKMDAwMDEyOTMzNyAwMDAwMCBuIAowMDAwMTI5NjM2IDAwMDAwIG4gCjAwMDAxMjk3OTUgMDAw
MDAgbiAKMDAwMDEzMDA4MSAwMDAwMCBuIAowMDAwMTMwNDI0IDAwMDAwIG4gCjAwMDAxMzE2MTkg
MDAwMDAgbiAKMDAwMDEzMTc4MCAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMTM5L1Jvb3QgMTM3
IDAgUgovSW5mbyAxMzggMCBSCi9JRCBbIDw0ODVBNkNGMDI2NDU3OUQwNTVEQzA1MDgxOTNCRTIy
Rj4KPDQ4NUE2Q0YwMjY0NTc5RDA1NURDMDUwODE5M0JFMjJGPiBdCi9Eb2NDaGVja3N1bSAvMENC
QUEzQzQzQkNEQzMzREQzQTkzRTI4Mjk0MDcyQTQKPj4Kc3RhcnR4cmVmCjEzMjQ0MgolJUVPRgo=
IyAkSWQ6IFVTQUdFX2l0c20tY2lhdHRyaWJ1dGVjb2xsZWN0aW9uLnBvZCx2IDEuMjYgMjAxNi8w
Mi8xMSAxMDo1ODo1NCB0dG8gRXhwICQKCj1oZWFkMSBVc2FnZSBJbmZvcm1hdGlvbgoKVGhpcyBw
YWNrYWdlIHByb3ZpZGVzIGFkZGl0aW9uYWwgSVRTTS1DSS1hdHRyaWJ1dGVzIGZvciBPVFJTOklU
U00sIGkuZS4gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LiBGb2xsb3dpbmcgeW91J2xsIGZp
bmQgYSBzaG9ydCBkb2N1bWVudGF0aW9uIG9uIHRoZSB1c2UgYW5kIGZlYXR1cmVzIG9mIHRoaXMg
ZXh0ZW5zaW9uLgoKUGxlYXNlIHJlYWQgdGhlIFBERi1kb2N1bWVudGF0aW9uIGluY2x1ZGVkIGlu
IHRoaXMgcGFja2FnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCj1oZWFkMiBXaHkgbm90IHVzaW5n
IFZpcnR1YWxGaWxlU3lzdGVtPwoKVmlydHVhbCBmaWxlIHN5c3RlbSBwcm92ZWQgdG8gYmUgbm90
IHN1aXRhYmxlLCBzaW5jZSBpdCBidWlsZHMgc29tZSBzb3J0IG9mIGRpcmVjdG9yeSBwYXRoIG91
dCBvZiBvYmplY3QtY2xhc3MgYW5kIGlkLiBUaHVzIGl0IHdvdWxkIHJlcXVpcmUgdG8ga25vdyB0
aGUgQ0lzIHZlcnNpb24gSUQgYmVmb3JlIGl0J3MgYWN0dWFsbHkgY3JlYXRlZC4gSWYgdGhpcyBj
b3VsZCBiZSBzb2x2ZWQgc29tZWhvdywgY29weWluZyBhIENJIHdpdGggYW4gYXR0YWNobWVudCB3
b3VsZCBhbHNvIGNhdXNlIGEgY29weSBvZiB0aGUgYXR0YWNobWVudCBpdHNlbGYsIHdoaWNoIGlz
IG5vdCBkZXNpcmFibGUgZnJvbSBvdXIgcG9pbnQgb2Ygdmlldy4KCgo9aGVhZDIgQXV0b2NvbXBs
ZXRlIGZ1bmN0aW9uIGZvciBhdHRyaWJ1dGUgdHlwZXMKCj1vdmVyIDQKCj1pdGVtICogYmVoYXZl
cyBzaW1pbGFyIHRvIGN1c3RvbWVyIHVzZXIgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uCgo9aXRlbSAq
IGFwcGxpZXMgdG8gUXVldWUtLCBTZXJ2aWNlLSwgQ0ljbGFzcy1SZWZlcmVuY2UsIFVzZXJzLCBD
SUFDQ3VzdG9tZXJDb21wYW55IGFuZCBDdXN0b21lclVzZXJDb21wYW55Cgo9aXRlbSAqIGFjdGl2
YXRpb24gY2FuIGJlIGNvbmZpZ3VyZWQgaW4gU3lzQ29uZmlnCgo9YmFjawoKPWhlYWQyIChpKSBV
c2Ugb2YgdGhlIENJLUF0dHJpYnV0ZSAiQ0lDbGFzc1JlZmVyZW5jZSIKCj1vdmVyIDQKCj1pdGVt
ICogYmVoYXZlcyBzaW1pbGFyIHRvIGN1c3RvbWVyIHVzZXIgYXR0cmlidXRlIGJ1dCByZWZlcnMg
dG8gYW5vdGhlciBjb25maWcgaXRlbSBvZiBzb21lIENJLWNsYXNzCgo9aXRlbSAqIGFsbG93cyB0
byBhdXRvbWF0aWNhbGx5IGRlbGV0ZSBhbmQgY3JlYXRlIGxpbmtzIHRvIENJcyBvZiBhIHJlZmVy
ZW5jZWQgY2xhc3MKCj1pdGVtICogZWFzZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYXNzZW1ibGVk
IGNvbmZpZyBpdGVtcywgd2hpY2ggY29uc2lzdCAoaW4gcGFydHMpIG9mIG90aGVyIGNvbmZpZyBp
dGVtcyB3aXRob3V0IGFubm95aW5nIG1hbnVhbCBsaW5rIGNyZWF0aW9uCgo9aXRlbSAqIGF0dHJp
YnV0ZSBkZWZpbml0aW9uIHJlcXVpcmVzIHRocmVlIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKCiAg
ICAgICAgUmVmZXJlbmNlZENJQ2xhc3NOYW1lIG9yIFJlZmVyZW5jZWRDSUNsYXNzSUQ6IGRlZmlu
ZXMgdGhlIHJlZmVyZW5jZWQgQ0ktY2xhc3MKICAgICAgICBSZWZlcmVuY2VkQ0lDbGFzc0xpbmtU
eXBlOiBkZWZpbmVzIHRoZSBsaW5rIHR5cGUgd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9yIGF1dG9t
YXRpYyBsaW5rIGNyZWF0aW9uIGFuZCBkZWxldGlvbiwgbm8gbGluayB3aWxsIGJlIGNyZWF0ZWQg
aWYgZW1wdHkKICAgICAgICBSZWZlcmVuY2VkQ0lDbGFzc0xpbmtEaXJlY3Rpb246IHNldCB0byAi
UmV2ZXJzZSIgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgcmV2ZXJzZSBsaW5rIGZvciBkaXJlY3Rl
ZCBsaW5rIHR5cGVzICh3aWxsIG9ubHkgYmUgcmVsZXZhbnQgaWYgUmVmZXJlbmNlZENJQ2xhc3NM
aW5rVHlwZSBpcyBzZXQpCiAgICAgICAgUmVmZXJlbmNlZENJQ2xhc3NSZWZlcmVuY2VBdHRyaWJ1
dGVLZXk6IGRlZmluZXMgdGhlIHJlZmVyZW5jZWQgYXR0cmlidXRlIGtleSB3aGljaCBzaG91bGQg
YmUgdXNlZCBhcyBpZGVudGlmaWVyIGR1cmluZyB0aGUgaW1wb3J0LgogICAgICAgIFNlYXJjaElu
cHV0VHlwZTogZGVmaW5lcyB0aGUgaW5wdXQgdHlwZSBmb3IgdGhlIGNtZGIgc2VhcmNoIG1hc2su
IENhbiBiZSAnQXV0b0NvbXBsZXRlJyBvciAnUGF0dGVybicuIElmIG5vdGhpbmcgb3Igc29tZXRo
aW5nIHdyb25nIGlzIHNldCwgJ0F1dG9Db21wbGV0ZScgaXMgdXNlZC4gJ1BhdHRlcm4nIGFsbG93
cyB0byBzZWFyY2ggZm9yIHNldmVyYWwgcmVsZXZhbnQgY29uZmlnaXRlbXMgYnkgbmFtZSAoKiBh
bGxvd2VkIGFzIHdpbGRjYXJkKSwgYnkgbnVtYmVyIChzdGFydHMgd2l0aCAnW051bWJlcl0nIGZv
bGxvd2VkIGJ5IGRpZ2VzdC4gKiBhbGxvd2VkIGFzIHdpbGRjYXJkKSBhbmQgYnkgaWQgKHN0YXJ0
cyB3aXRoICdbSURdJyBmb2xsb3dlZCBieSBkaWdlc3QpLiBNdWx0aXBsZSBlbnRyaWVzIGNhbiBi
ZSBzZXBhcmF0ZWQgYnkgJ3x8Jy4KCj1pdGVtICogSU1QT1JUQU5UIE5PVEU6IFRoZSAiS2V5IiBh
dHRyaWJ1dGUgaGFzIHRvIGJlIGEgVU5JUVVFIG5hbWUgd2l0aGluIHRoZSBjbGFzcyBkZWZpbml0
aW9uIQo9aXRlbSAqIElNUE9SVEFOVCBOT1RFOiBEbyBOT1QgdXNlIG5vbi1hbHBoYW51bWVyaWMg
Y2hhcmFjdGVycyBpbiAiS2V5IiBhdHRyaWJ1dGUhCj1pdGVtICogSU1QT1JUQU5UIE5PVEU6IElm
IHRoZSBDSSB3aWxsIGJlIGVkaXRlZCB1c2luZyB0aGUgZWRpdC1kaWFsb2cgYWxsIExpbmtzIG9m
IHRoZSBkZWZpbmVkIHR5cGUgd2lsbCBiZSBkZWxldGVkIGFuZCBzZXQgYWNjb3JkaW5nIHRvIHRo
ZSBDSS1BdHRyaWJ1dGUuCgo9YmFjawoKPWhlYWQzIEVYQU1QTEUKCiAgICB7CiAgICAgICAgS2V5
ICAgICAgICA9PiAnTG9jYXRpb24nLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0Fzc2V0IExvY2F0
aW9uJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgPT4gewogICAgICAg
ICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0NJQ2xhc3NSZWZlcmVuY2Un
LAogICAgICAgICAgICBSZWZlcmVuY2VkQ0lDbGFzc05hbWUgICAgICAgICAgPT4gJ0xvY2F0aW9u
JywKICAgICAgICAgICAgUmVmZXJlbmNlZENJQ2xhc3NMaW5rVHlwZSAgICAgID0+ICdJbmNsdWRl
cycsCiAgICAgICAgICAgIFJlZmVyZW5jZWRDSUNsYXNzTGlua0RpcmVjdGlvbiA9PiAnUmV2ZXJz
ZScsCiAgICAgICAgICAgIFJlZmVyZW5jZWRDSUNsYXNzUmVmZXJlbmNlQXR0cmlidXRlS2V5ID0+
ICdTZXJpYWxOdW1iZXInLAogICAgICAgICAgICBTZWFyY2hJbnB1dFR5cGUgICAgICAgICAgICAg
ICAgPT4gJ0F1dG9Db21wbGV0ZScsCiAgICAgICAgfSwKICAgIH0sCgoKPWhlYWQyIChpaSkgVXNl
IG9mIHRoZSBDSS1BdHRyaWJ1dGUgIlNlcnZpY2VSZWZlcmVuY2UiCgo9b3ZlciA0Cgo9aXRlbSAq
IGJlaGF2ZXMgc2ltaWxhciB0byBjdXN0b21lciB1c2VyIGF0dHJpYnV0ZSBidXQgcmVmZXJzIHRv
IGEgc2VydmljZQoKPWl0ZW0gKiBhbGxvd3MgdG8gYXV0b21hdGljYWxseSBkZWxldGUgYW5kIGNy
ZWF0ZSBsaW5rcyB0byBTZXJ2aWNlcwoKPWl0ZW0gKiBhdHRyaWJ1dGUgZGVmaW5pdGlvbiByZXF1
aXJlcyB0d28gYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgoKICAgICAgICBSZWZlcmVuY2VkU2Vydmlj
ZUxpbmtUeXBlOiBkZWZpbmVzIHRoZSBsaW5rIHR5cGUgd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9y
IGF1dG9tYXRpYyBsaW5rIGNyZWF0aW9uIGFuZCBkZWxldGlvbiwgbm8gbGluayB3aWxsIGJlIGNy
ZWF0ZWQgaWYgZW1wdHkKICAgICAgICBSZWZlcmVuY2VkU2VydmljZUxpbmtEaXJlY3Rpb246IHNl
dCB0byAiUmV2ZXJzZSIgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgcmV2ZXJzZSBsaW5rIGZvciBk
aXJlY3RlZCBsaW5rIHR5cGVzICh3aWxsIG9ubHkgYmUgcmVsZXZhbnQgaWYgUmVmZXJlbmNlZFNl
cnZpY2VMaW5rVHlwZSBpcyBzZXQpCgo9aXRlbSAqIElNUE9SVEFOVCBOT1RFOiBJZiB0aGUgQ0kg
d2lsbCBiZSBlZGl0ZWQgdXNpbmcgdGhlIGVkaXQtZGlhbG9nIGFsbCBMaW5rcyBvZiB0aGUgZGVm
aW5lZCB0eXBlIHdpbGwgYmUgZGVsZXRlZCBhbmQgc2V0IGFjY29yZGluZyB0byB0aGUgQ0ktQXR0
cmlidXRlCgo9aXRlbSAqIElNUE9SVEFOVCBOT1RFOiBJZiBhbGxlIFNlcnZpY2VSZWZlcmVuY2Vz
IGluIHRoZSBDSS1lZGl0LWRpYWxvZyB3aWxsIGJlIGRlbGV0ZWQgKHdoaWxlIFVzaW5nIEFycmF5
LUVsZW1lbnRzKSB0aGUgTGlua3Mgd2lsbCBub3QgYmUgZGVsZXRlZAoKPWl0ZW0gKiBJTVBPUlRB
TlQgTk9URTogVGhlICJLZXkiIGF0dHJpYnV0ZSBoYXMgdG8gYmUgYSBVTklRVUUgbmFtZSB3aXRo
aW4gdGhlIGNsYXNzIGRlZmluaXRpb24hCgo9YmFjawoKPWhlYWQzIEVYQU1QTEU6CgogICAgewog
ICAgICAgIEtleSAgICAgICAgPT4gJ0Fzc2lnbmVkU2VydmljZScsCiAgICAgICAgTmFtZSAgICAg
ICA9PiAnQXNzaWduZWQgU2VydmljZScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAg
IElucHV0ID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
PiAnU2VydmljZVJlZmVyZW5jZScsCiAgICAgICAgICAgIFJlZmVyZW5jZWRTZXJ2aWNlTGlua1R5
cGUgICAgICAgPT4gJ1JlbGV2YW50VG8nLAogICAgICAgICAgICBSZWZlcmVuY2VkU2VydmljZUxp
bmtEaXJlY3Rpb24gID0+ICdOb3JtYWwnLAogICAgICAgIH0sCiAgICB9LAoKCj1oZWFkMiAoaWlp
KSBVc2Ugb2YgdGhlIENJLUF0dHJpYnV0ZSAiUXVldWVSZWZlcmVuY2UiCgo9b3ZlciA0Cgo9aXRl
bSAqIGJlaGF2ZXMgc2ltaWxhciB0byBjdXN0b21lciB1c2VyIGF0dHJpYnV0ZSBidXQgcmVmZXJz
IHRvIGEgcXVldWUKCj1iYWNrCgo9aGVhZDMgIEVYQU1QTEU6CgogICAgewogICAgICAgIEtleSAg
ICAgICAgPT4gJ0Fzc2lnbmVkUXVldWUnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0Fzc2lnbmVk
IFF1ZXVlJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgPT4gewogICAg
ICAgICAgICBUeXBlID0+ICdRdWV1ZVJlZmVyZW5jZScsCiAgICAgICAgfSwKICAgIH0sCgo9aGVh
ZDIgKGl2KSBVc2Ugb2YgdGhlIENJLUF0dHJpYnV0ZSAiQ0lBdHRhY2htZW50IgoKPW92ZXIgNAoK
PWl0ZW0gKiBJbiBjb250cmFzdCB0byBzdGFuZGFyZCBPVFJTIENJLWF0dGFjaG1lbnRzLCB0aGlz
IGF0dHJpYnV0ZSBiZWhhdmVzIG11Y2ggbW9yZSBsaWtlIGEgY29tbW9uIENJLWF0dHJpYnV0ZSB0
aGFuIHRoZSBkZWZhdWx0IENJLWF0dGFjaG1lbnRzIChhbmQgaGFkIGJlZW4gdGhlcmUgYmVmb3Jl
IHN0YW5kYXJkIGF0dGFjaG1lbnRzKS4gQXR0YWNobWVudHMgYXJlIG5vdCBsaW1pdGVkIHRvIHRo
ZSBtYXhpbXVtIG9mIDI1IGF0dGFjaG1lbnRzLCBpbiBmYWN0IHlvdSBtYXkgZGVmaW5lIHRoZSBu
dW1iZXIgb2YgYWxsb3dlZCBhdHRhY2htZW50cyBhbmQgYWxzbyBtYWtlIGl0IGEgcmVxdWlyZWQg
YXR0cmlidXRlLiBBdHRhY2htZW50IGZpbGVzIGFyZSBib3VuZCB0byB0aGUgdmVyc2lvbiBvZiBh
IENJLiBUaHVzIGNoYW5naW5nIHRoZSBhdHRhY2htZW50IHByZXNlcnZlcyBpdCdzIHByZXZpb3Vz
IHZlcnNpb24gYW5kIGNhdXNlcyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgQ0ktdmVyc2lvbi4KCj1p
dGVtICogc2VlIGZvbGxvd2luZyBTeXNDb25maWcgb3B0aW9ucyBmb3IgZnVydGhlciBjb25maWd1
cmF0aW9uCgogICAgQXR0YWNobWVudFN0b3JhZ2U6OlN0b3JhZ2VCYWNrZW5kTW9kdWxlcwogICAg
QXR0YWNobWVudFN0b3JhZ2U6OkRlZmF1bHRTdG9yYWdlQmFja2VuZE1vZHVsZQogICAgRnJvbnRl
bmQ6Ok1vZHVsZSMjI0FnZW50QXR0YWNobWVudFN0b3JhZ2UKICAgIEF0dGFjaG1lbnRTdG9yYWdl
RlM6OlN0b3JhZ2VEaXJlY3RvcnkKICAgIElUU01DSUF0dHJpYnV0ZUNvbGxlY3Rpb246OkF0dGFj
aGVtZW50TUQ1Q2hlY2sKCUlUU01DSUF0dHJpYnV0ZUNvbGxlY3Rpb246OkF0dGFjaGVtZW50U2l6
ZUNoZWNrCgo9aXRlbSAqIElNUE9SVEFOVCBOT1RFOiBUaGUgYXR0cmlidXRlcyBDb3VudE1pbiBh
bmQgQ291bnRNYXggbXVzdCBhbHdheXMgYmUgZGVmaW5lZCEgT3RoZXJ3aXNlIHlvdSB3b24ndCBi
ZSBhYmxlIHRvIGRlbGV0ZSBhdHRhY2htZW50cyBmcm9tIENJcy4gSWYgeW91IHNldCBDb3VudE1p
biA9PiAxLCBpdCB3aWxsIGJlIGltcG9zc2libGUgdG8gZGVsZXRlIHRoZSBsYXN0IGF0dGFjaG1l
bnQgKHRoZSBsYXN0IG4gYXR0YWNobWVudHMgZm9yIENvdW50TWluID0+IG4pLgoKPWl0ZW0gKiBB
RFZJQ0U6IGRvbid0IHVzZSB0aGlzIGF0dHJpYnV0ZSBpbiBJVFNNQ29uZmlnSXRlbSBPdmVydmll
dyAoS0lYNE9UUlMgb3IgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJ
dGVtIyMjU2hvd0NvbHVtbnNCeUNsYXNzKQoKPWJhY2sKCj1oZWFkMyAgRVhBTVBMRToKCiAgICB7
CiAgICAgICAgS2V5ICAgICAgICA9PiAnQXR0YWNobWVudCcsCiAgICAgICAgTmFtZSAgICAgICA9
PiAnQXR0YWNobWVudCcsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ID0+
IHsKICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICBNYXhMZW5ndGggPT4g
NTAsCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnQ0lBdHRhY2htZW50JywKICAgICAgICB9LAog
ICAgICAgIENvdW50TWluID0+IDAsCiAgICAgICAgQ291bnRNYXggPT4gMSwKICAgIH0sCgo9aGVh
ZDIgKHYpIFVzZSBvZiB0aGUgQ0ktQXR0cmlidXRlICJVc2VyIgoKPW92ZXIgNAoKPWl0ZW0gKiBi
ZWhhdmVzIHNpbWlsYXIgdG8gY3VzdG9tZXIgdXNlciBhdHRyaWJ1dGUgYnV0IHJlZmVycyB0byBh
IHVzZXIvYWdlbnQKCj1iYWNrCgo9aGVhZDMgIEVYQU1QTEU6CgogICAgewogICAgICAgIEtleSAg
ICAgICAgPT4gJ1Jlc3BvbnNpYmxlJywKICAgICAgICBOYW1lICAgICAgID0+ICdSZXNwb25zaWJs
ZScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ID0+IHsKICAgICAgICAg
ICAgVHlwZSA9PiAnVXNlcicsCiAgICAgICAgfSwKICAgIH0sCgoKPWhlYWQyICh2aSkgVXNlIG9m
IHRoZSBDSS1BdHRyaWJ1dGUgIkN1c3RvbWVyVXNlckNvbXBhbnkiCgo9b3ZlciA0Cgo9aXRlbSAq
IGJlaGF2ZXMgc2ltaWxhciB0byBjdXN0b21lciB1c2VyIGF0dHJpYnV0ZSBidXQgcmVmZXJzIHRv
IGEgQ3VzdG9tZXJDb21wYW55Cgo9aXRlbSAqIGxvb2sgdXAgaW4gYWxsIEN1c3RvbWVyRGF0YXMg
Zm9yIEN1c3RvbWVyQ29tcGFueQoKPWJhY2sKCj1oZWFkMyAgRVhBTVBMRToKCiAgICB7CiAgICAg
ICAgS2V5ICAgICAgICA9PiAnQ3VzdG9tZXJVc2VyQ29tcGFueScsCiAgICAgICAgTmFtZSAgICAg
ICA9PiAnQ3VzdG9tZXJVc2VyQ29tcGFueScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAg
ICAgIElucHV0ID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnQ3VzdG9tZXJVc2VyQ29tcGFueScs
CiAgICAgICAgfSwKICAgIH0sCgoKPWhlYWQyICh2aWkpIFVzZSBvZiB0aGUgQ0ktQXR0cmlidXRl
ICJDSUFDQ3VzdG9tZXJDb21wYW55IiAoZi5rLmEuICJDdXN0b21lckNvbXBhbnkiKQoKPW92ZXIg
NAoKPWl0ZW0gKiBiZWhhdmVzIHNpbWlsYXIgdG8gY3VzdG9tZXIgdXNlciBhdHRyaWJ1dGUgYnV0
IHJlZmVycyB0byBhIEN1c3RvbWVyIENvbXBhbnkKCj1pdGVtICogbG9vayB1cCBpbiBDdXN0b21l
ckNvbXBhbnktQmFja2VuZAoKPWl0ZW0gKiBhdHRyaWJ1dGUgdHlwZSByZW5hbWVkIGluIHIyLjAu
MSBmcm9tICJDdXN0b21lckNvbXBhbnkiIHRvICJDSUFDQ3VzdG9tZXJDb21wYW55Iiwgc2luY2Ug
T1RSUzo6SVRTTSAzLjEuNiBpbnRyb2R1Y2VkIGEgc2ltaWxhciBhdHRyaWJ1dGUgdHlwZQoKPWJh
Y2sKCj1oZWFkMyAgRVhBTVBMRToKCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnQ3VzdG9t
ZXJDb21wYW55JywKICAgICAgICBOYW1lICAgICAgID0+ICdDdXN0b21lckNvbXBhbnknLAogICAg
ICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgIFR5cGUg
PT4gJ0NJQUNDdXN0b21lckNvbXBhbnknLAogICAgICAgIH0sCiAgICB9LAoKCj1oZWFkMiAodmlp
aSkgVXNlIG9mIHRoZSBDSS1BdHRyaWJ1dGUgIkVuY3J5cHRlZFRleHQiCgo9b3ZlciA0Cgo9aXRl
bSAqIGFsbG93cyB0byBkZXBvc2l0ZSBwYXNzd29yZHMKCj1pdGVtICogY2hhbmdlIGFuZCBkaXNw
bGF5IG9mIHBhc3N3b3JkIG9ubHkgcG9zc2libGUgZm9yIHRoZSBjb25maWd1cmVkIGdyb3VwcwoK
PWJhY2sKCj1oZWFkMyAgRVhBTVBMRToKCiAgICB7CiAgICAgICAgIEtleSAgID0+ICdQYXNzd29y
ZCcsCiAgICAgICAgIE5hbWUgID0+ICdQYXNzd29yZCcsCiAgICAgICAgIEdyb3VwID0+IHsKICAg
ICAgICAgICAgICAgICBhZG1pbiA9PiAxLAogICAgICAgICAgICAgICAgIGdyb3VwbmFtZSA9PiAx
LAogICAgICAgICB9LAogICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICBUeXBlICAgICAg
PT4gJ0VuY3J5cHRlZFRleHQnLAogICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAg
ICAgICAgTWF4TGVuZ3RoID0+IDEwMCwKICAgICAgICAgfSwKICAgICB9LAoKPWhlYWQyIChpeCkg
VXNlIG9mIHRoZSBDSS1BdHRyaWJ1dGUgIkxpbmtUZXh0IgoKPW92ZXIgNAoKPWl0ZW0gKiBhbGxv
d3MgdG8gZGVmaW5lIGEgdGV4dCB0aGF0IHNob3VsZCBiZSB1c2VkIGluIGEgY29uZmlndXJlZCBs
aW5rCgo9aXRlbSAqIGF0dHJpYnV0ZSBVUkwgbXVzdCBiZSBkZWZpbmVkIGFuZCBzaG91bGQgY29u
dGFpbiB0aGUgcGhyYXNlICI8VkFMVUU+IiB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhl
IGdpdmVuIGNvbnRlbnQKCj1pdGVtICogdGhpcyBjYW4gYmUgdXNlZCB0byBlYXNpbHkgcHJvdmlk
ZSBsaW5rcyB0byBzeXN0ZW0gbW9uaXRvcmluZyB0b29scyBvciBwcmludGVyIG1hbmFnZW1lbnQg
aW50ZXJmYWNlcwoKPWl0ZW0gKiBBRFZJQ0U6IGRvbid0IHVzZSB0aGlzIGF0dHJpYnV0ZSBpbiBJ
VFNNQ29uZmlnSXRlbSBPdmVydmlldyAoS0lYNE9UUlMgb3IgSVRTTUNvbmZpZ0l0ZW06OkZyb250
ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnNCeUNsYXNzKQoKPWJhY2sKCj1o
ZWFkMyAgRVhBTVBMRToKCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnVGV4dExpbmsnLAog
ICAgICAgIE5hbWUgICAgICAgPT4gJ1RleHQgTGluaycsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAx
LAogICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0TGluaycs
CiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEw
MCwKICAgICAgICAgICAgVVJMICAgICAgID0+ICdodHRwOi8vd3d3LmV4YW1wbGUuY29tLzxWQUxV
RT4nLAogICAgICAgIH0sCiAgICB9LAoKPWhlYWQyICh4KSBVc2Ugb2YgdGhlIENJLUF0dHJpYnV0
ZSAiRHluYW1pY0ZpZWxkIgoKPW92ZXIgNAoKPWl0ZW0gKiBhbGxvd3MgdG8gdXNlIHZhbHVlcyBv
ZiBkcm9wZG93bi9zaW5nbGUgc2VsZWN0aW9uIGR5bmFtaWMgZmllbGRzIGluIGNvbmZpZyBpdGVt
cwoKCj1iYWNrCgo9aGVhZDMgIEVYQU1QTEU6CgogICAgewogICAgICAgIEtleSA9PiAnSW1wYWN0
JywKICAgICAgICBOYW1lID0+ICdJbXBhY3QnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAg
ICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAg
ICAgICAgIE5hbWUgPT4gJ1RpY2tldEZyZWVUZXh0MTQnLAogICAgICAgICAgICBUcmFuc2xhdGlv
biA9PjEsCiAgICAgICAgfSwKICAgIH0sCgoKPWhlYWQyICh4aSkgVXNlIG9mIHRoZSBDSS1BdHRy
aWJ1dGUgIlRpY2tldFJlZmVyZW5jZSIKCj1vdmVyIDQKCj1pdGVtICogYmVoYXZlcyBzaW1pbGFy
IHRvIGN1c3RvbWVyIHVzZXIgYXR0cmlidXRlIGJ1dCByZWZlcnMgdG8gYSB0aWNrZXQKCj1pdGVt
ICogYWxsb3dzIHRvIGF1dG9tYXRpY2FsbHkgZGVsZXRlIGFuZCBjcmVhdGUgbGlua3MgdG8gU2Vy
dmljZXMKCj1pdGVtICogcHJvdmlkZWRzIGRpcmVjdCBsaW5rIHRvIHJlZmVyZW5jZWQgdGlja2V0
Cgo9aXRlbSAqIGF0dHJpYnV0ZSBkZWZpbml0aW9uIHJlcXVpcmVzIHR3byBhZGRpdGlvbmFsIGF0
dHJpYnV0ZXM6CgogICAgICAgIFJlZmVyZW5jZWRUaWNrZXRMaW5rVHlwZTogZGVmaW5lcyB0aGUg
bGluayB0eXBlIHdoaWNoIHNob3VsZCBiZSB1c2VkIGZvciBhdXRvbWF0aWMgbGluayBjcmVhdGlv
biBhbmQgZGVsZXRpb24sIG5vIGxpbmsgd2lsbCBiZSBjcmVhdGVkIGlmIGVtcHR5CiAgICAgICAg
UmVmZXJlbmNlZFRpY2tldExpbmtEaXJlY3Rpb246IHNldCB0byAiUmV2ZXJzZSIgaWYgeW91IHdh
bnQgdG8gY3JlYXRlIGEgcmV2ZXJzZSBsaW5rIGZvciBkaXJlY3RlZCBsaW5rIHR5cGVzICh3aWxs
IG9ubHkgYmUgcmVsZXZhbnQgaWYgUmVmZXJlbmNlZFRpY2tldExpbmtUeXBlIGlzIHNldCkKCj1p
dGVtICogSU1QT1JUQU5UIE5PVEU6IFRoZSAiS2V5IiBhdHRyaWJ1dGUgaGFzIHRvIGJlIGEgVU5J
UVVFIG5hbWUgd2l0aGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIQoKPWJhY2sKCj1oZWFkMyBFWEFN
UExFOgoKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdSZWxhdGVkVGlja2V0JywKICAgICAg
ICBOYW1lICAgICAgID0+ICdSZWxhdGVkIFRpY2tldCcsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAx
LAogICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0+ICdUaWNrZXRSZWZlcmVuY2UnLAogICAgICAgICAgICBSZWZlcmVuY2VkVGlja2V0
TGlua1R5cGUgICAgICAgPT4gJ1JlbGV2YW50VG8nLAogICAgICAgICAgICBSZWZlcmVuY2VkVGlj
a2V0TGlua0RpcmVjdGlvbiAgPT4gJ05vcm1hbCcsCiAgICAgICAgfSwKICAgIH0sCgo9aGVhZDIg
KHhpaSkgVXNlIG9mIHRoZSBDSS1BdHRyaWJ1dGUgIlR5cGVSZWZlcmVuY2UiCgo9b3ZlciA0Cgo9
aXRlbSAqIGJlaGF2ZXMgc2ltaWxhciB0byBjdXN0b21lciB1c2VyIGF0dHJpYnV0ZSBidXQgcmVm
ZXJzIHRvIGEgdGlja2V0IHR5cGUKCj1iYWNrCgo9aGVhZDMgRVhBTVBMRToKCiAgICB7CiAgICAg
ICAgS2V5ICAgICAgICA9PiAnVGlja2V0VHlwZScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGlj
a2V0IFR5cGUnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCA9PiB7CiAg
ICAgICAgICAgIFR5cGUgID0+ICdUeXBlUmVmZXJlbmNlJywKICAgICAgICB9LAogICAgfSwKCj1o
ZWFkMiAoeGlpaSkgVXNlIG9mIHRoZSBDSS1BdHRyaWJ1dGUgIlNMQVJlZmVyZW5jZSIKCj1vdmVy
IDQKCj1pdGVtICogYmVoYXZlcyBzaW1pbGFyIHRvIHNlcnZpY2UgYXR0cmlidXRlIGJ1dCByZWZl
cnMgdG8gYW4gU0xBIGFuZCBkb2Vzbid0IGNyZWF0ZSBsaW5rcyB0byBTTEFzCgo9aXRlbSAqIGFk
ZGl0aW9uYWwgKG9wdGlvbmFsKSBhdHRyaWJ1dGVzOgoKICAgICAgICBSZWZlcmVuY2VkU2Vydmlj
ZUF0dHJLZXk6IGRlZmluZXMgZGVwZW5kZW5jeSB0byBhbiBhdHRyaWJ1dGUgb2YgdHlwZSAiU2Vy
dmljZVJlZmVyZW5jZSIgZm9ybSB0aGUgY3VycmVudCBDSSBDbGFzcyBEZWZpbml0aW9uLiBJZiBj
b25maWd1cmVkLCB0aGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSB3aXRoIHRoZSBnaXZlbiBrZXkg
d2lsbCBiZSB1c2VkIHRvIGZpbHRlciB0aGUgU0xBczogT25seSBTTEFzIHRoYXQgYXJlIGNvbmZp
Z3VyZWQgZm9yIHRoZSBnaXZlbiBTZXJ2aWNlIHdpbGwgYmUgc2hvd24uCiAgICAgICAgUmVmZXJl
bmNlZEN1c3RvbWVyTG9naW46IGRlZmluZXMgZGVwZW5kZW5jeSB0byBhbiBhdHRyaWJ1dGUgb2Yg
dHlwZSAiQ3VzdG9tZXIiIGZvcm0gdGhlIGN1cnJlbnQgQ0kgQ2xhc3MgRGVmaW5pdGlvbi4gSWYg
Y29uZmlndXJlZCwgdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4ga2V5
IHdpbGwgYmUgdXNlZCB0byBmaWx0ZXIgdGhlIFNMQXM6IE9ubHkgU0xBcyBmb3IgdGhlIFNlcnZp
Y2VzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIGdpdmVuIGN1c3RvbWVyIHdpbGwgYmUgc2hv
d24uCiAgICAgICAgUmVmZXJlbmNlZEN1c3RvbWVyQ29tcGFueTogZGVmaW5lcyBkZXBlbmRlbmN5
IHRvIGFuIGF0dHJpYnV0ZSBvZiB0eXBlICJDSUFDQ3VzdG9tZXJDb21wYW55IiBmb3JtIHRoZSBj
dXJyZW50IENJIENsYXNzIERlZmluaXRpb24uIElmIGNvbmZpZ3VyZWQsIHRoZSB2YWx1ZSBvZiB0
aGUgYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIGtleSB3aWxsIGJlIHVzZWQgdG8gZmlsdGVyIHRo
ZSBTTEFzOiBPbmx5IFNMQXMgYXZhaWxhYmxlIGZvciB0aGUgZ2l2ZW4gQ3VzdG9tZXJJRCB3aWxs
IGJlIHNob3duLgoKPWl0ZW0gKiBJTVBPUlRBTlQgTk9URTogSWYgdGhlIHJlZmVyZW5jZWQgZmll
bGQgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHksIG5vIFNMQXMgd2lsbCBiZSBmb3VuZCBhbmQg
b25seSBTTEFzIHRoYXQgYXJlIGNvbmZpZ3VyZWQgZm9yIERFRkFVTFQgc2VydmljZXMgd2lsbCBi
ZSBzaG93bi4KCj1pdGVtICogSU1QT1JUQU5UIE5PVEU6IElmIHRoZSByZWZlcmVuY2VkIGF0dHJp
YnV0ZSBpcyBhbiBhcnJheS1hdHRyaWJ1dCwgU0xBcyBmb3IgZWFjaCByZWZlcmVuY2VkIHZhbHVl
IHdpbGwgYmUgZm91bmQgYW5kIG9ubHkgdGhlIGludGVyc2VjdGlvbiBvZiB0aGVzZSByZXN1bHQg
c2V0cyB3aWxsIGJlIHNob3duLiBJZiBTTEFSZWZlcmVuY2UgYXR0cmlidXRlIGlzIGEgc3ViLWF0
dHJpYnV0ZSBvZiB0aGUgcmVmZXJlbmNlZCBzZXJ2aWNlLSBvciBjdXN0b21lcihjb21wYW55KSBh
dHRyaWJ1dGUsIG9ubHkgdGhlIHZhbHVlIG9mIHRoZSBzdXBlcm9yZGluYXRlIGF0dHJpYnV0ZSB3
aWxsIGJlIHVzZWQuCgo9aXRlbSAqIElNUE9SVEFOVCBOT1RFOiBGb3IgdGhlIGZpZWxkcyBvZiB0
eXBlICJTTEFSZWZlcmVuY2UiIGl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhlIENvdW50TWluID0+
IDAgYW5kIENvdW50RGVmYXVsdCA9PiAwIGFuZCB0byBhZGQgdGhlc2UgZmllbGRzIHdpdGggdGhl
ICIrIiBidXR0b24gb25seSBBRlRFUiBhbGwgcmVmZXJlbmNlZCBmaWVsZHMgKFNlcnZpY2UsIEN1
c3RvbWVyVXNlciwgQ3VzdG9tZXJDb21wYW55KSBhcmUgZmlsbGVkIHdpdGggdmFsdWVzLiBPdGhl
cndpc2UgdGhlIHZhbHVlcyBvZiB0aGUgcmVmZXJlbmNlZCBmaWVsZHMgd2lsbCBiZSBpZ25vcmVk
IQoKPWl0ZW0gKiBJTVBPUlRBTlQgTk9URTogVG8gdXNlICBSZWZlcmVuY2VkQ3VzdG9tZXJDb21w
YW55YXR0cmlidXRlIHlvdSBuZWVkIHRvIGluc3RhbGwgS0lYU2VydmljZUNhdGFsb2chIElmIGRl
cGVuZGVuY3kgdG8gYSBDdXN0b21lclVzZXIgKFJlZmVyZW5jZWRDdXN0b21lckxvZ2luKSBpcyBh
bHNvIGNvbmZpZ3VyZWQsIHRoZSBSZWZlcmVuY2VkQ3VzdG9tZXJDb21wYW55IHdpbGwgYmUgaWdu
b3JlZCEgT25seSBvbmUgb2YgdGhlc2UgcmVmZXJlbmNlcyBjYW4gYmUgdXNlZC4KCj1iYWNrCgo9
aGVhZDMgRVhBTVBMRToKCiAgICB7CiAgICAgICAgS2V5ID0+ICdSZXNwb25zaWJsZVVzZXInLAog
ICAgICAgIE5hbWUgPT4gJ1Jlc3BvbnNpYmxlIFVzZXInLAogICAgICAgIFNlYXJjaGFibGUgPT4g
MSwKICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0N1c3RvbWVyJywKICAg
ICAgICB9LAogICAgfQogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0Fzc2lnbmVkU2Vydmlj
ZScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQXNzaWduZWQgU2VydmljZScsCiAgICAgICAgU2Vh
cmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9PiAnU2VydmljZVJlZmVyZW5jZScsCiAgICAgICAgICAgIFJl
ZmVyZW5jZWRTZXJ2aWNlTGlua1R5cGUgICAgICAgPT4gJ1JlbGV2YW50VG8nLAogICAgICAgICAg
ICBSZWZlcmVuY2VkU2VydmljZUxpbmtEaXJlY3Rpb24gID0+ICdOb3JtYWwnLAogICAgICAgIH0s
CiAgICAgICAgQ291bnRNaW4gPT4gMCwKICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICBD
b3VudERlZmF1bHQgPT4gMSwKICAgICAgICBTdWIgPT4gWwogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICBLZXkgICAgICAgID0+ICdBc3NpZ25lZFNMQScsCiAgICAgICAgICAgICAgICBOYW1l
ICAgICAgID0+ICdBc3NpZ25lZCBTTEEnLAogICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAx
LAogICAgICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAg
ICAgICAgICAgICAgICAgICAgPT4gJ1NMQVJlZmVyZW5jZScsCiAgICAgICAgICAgICAgICAgICAg
UmVmZXJlbmNlZFNlcnZpY2VBdHRyS2V5ICA9PiAnQXNzaWduZWRTZXJ2aWNlJywKICAgICAgICAg
ICAgICAgICAgICBSZWZlcmVuY2VkQ3VzdG9tZXJMb2dpbiAgID0+ICdSZXNwb25zaWJsZVVzZXIn
LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWluID0+IDAsCiAgICAg
ICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgIENvdW50RGVmYXVsdCA9PiAw
LAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAoKCgo9aGVhZDEgQ09QWVJJR0hUCgpD
b3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUt
aXQuZGUvCgpUaGUgZm9sbG93aW5nIHBlcnNvbnMgaGF2ZSBjb250cmlidXRlZCB0byB0aGlzIGV4
dGVuc2lvbjoKCj1vdmVyIDQKCj1pdGVtICogVG9yc3Rlbihkb3QpVGhhdQoKPWl0ZW0gKiBNYXJ0
aW4oZG90KUJhbHphcmVrCgo9aXRlbSAqIEZyYW5rKGRvdClPYmVyZW5kZXIKCj1pdGVtICogQW5u
YShkb3QpTGl0dmlub3ZhCgo9aXRlbSAqIFN0ZWZhbihkb3QpTWVobGlnCgo9aXRlbSAqIE1hcmlv
KGRvdClJbGxpbmdlcgoKPWl0ZW0gKiBBbmRyZWFzKGRvdClIZXJnZXJ0Cgo9YmFjawoKVGhpcyBz
b2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBz
ZWUgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQ
TCkuIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUu
b3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dAo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50Q0lDbGFzc1NlYXJjaC5wbSAtIGEgbW9kdWxlIHVz
ZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZmVhdHVyZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2
IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0
ZWQgYnk6CiMgKiBNYXJ0aW4oZG90KUJhbHphcmVrKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAq
IE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBBbmRyZWFzKGRv
dClIZXJnZXJ0KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBBZ2VudENJQ2xh
c3NTZWFyY2gucG0sdiAxLjkgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRo
aXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWls
cywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlv
biAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8v
d3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1
bGVzOjpBZ2VudENJQ2xhc3NTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIg
QE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0
JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRT
TUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7CgpzdWIg
bmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcg
aGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxm
LCAkVHlwZSApOwoKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0VuY29kZU9i
amVjdH0gICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkVuY29kZScpOwog
ICAgJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6
U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgJFNlbGYtPntQYXJhbU9iamVjdH0gICAgICA9
ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBy
ZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsK
CiAgICBteSAkSlNPTiA9ICcnOwoKICAgICMgZ2V0IG5lZWRlZCBwYXJhbXMKICAgIG15ICRTZWFy
Y2ggID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnVGVybScgKSAg
ICB8fCAnJzsKICAgIG15ICRDbGFzc0lEID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFt
KCBQYXJhbSA9PiAnQ2xhc3NJRCcgKSB8fCAwOwoKCiAgICAjIGdldCBDSSBDbGFzcyBsaXN0CiAg
ICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICAgICMgc2VhcmNoIGZvciBuYW1lLi4uLgogICAgbXkgQERhdGE7
CiAgICBteSAkQ0lTZWFyY2hMaXN0UmVmID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+Q29u
ZmlnSXRlbVNlYXJjaEV4dGVuZGVkKAogICAgICAgIE5hbWUgICAgID0+ICcqJyAuICRTZWFyY2gg
LiAnKicsCiAgICAgICAgQ2xhc3NJRHMgPT4gWyRDbGFzc0lEXSwKICAgICk7CiAgICBteSAlRm91
bmRDSUhhc2ggPSAoKTsKCiAgICAjIGJ1aWxkIGRhdGEKICAgIGZvciBteSAkU2VhcmNoUmVzdWx0
ICggQHskQ0lTZWFyY2hMaXN0UmVmfSApIHsKICAgICAgICBteSAkQ3VyclZlcnNpb25EYXRhID0g
JFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmln
SXRlbUlEID0+ICRTZWFyY2hSZXN1bHQsCiAgICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAog
ICAgICAgICk7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ3VyclZlcnNpb25EYXRhCiAgICAg
ICAgICAgICYmCiAgICAgICAgICAgICggcmVmKCRDdXJyVmVyc2lvbkRhdGEpIGVxICdIQVNIJyAp
ICYmCiAgICAgICAgICAgICRDdXJyVmVyc2lvbkRhdGEtPntOYW1lfSAmJgogICAgICAgICAgICAk
Q3VyclZlcnNpb25EYXRhLT57TnVtYmVyfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAg
ICAgICBwdXNoIEBEYXRhLCB7CiAgICAgICAgICAgICAgICBDSUNsYXNzS2V5ICAgPT4gJFNlYXJj
aFJlc3VsdCwKICAgICAgICAgICAgICAgIENJQ2xhc3NWYWx1ZSA9PiAkQ3VyclZlcnNpb25EYXRh
LT57TmFtZX0gLiAnICgnIC4gJEN1cnJWZXJzaW9uRGF0YS0+e051bWJlcn0gLiAnKScsCiAgICAg
ICAgICAgIH07CgogICAgICAgICAgICAkRm91bmRDSUhhc2h7JFNlYXJjaFJlc3VsdH0gPSAxOwog
ICAgICAgIH0KICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgbnVtYmVyLi4uLgogICAgJENJU2VhcmNo
TGlzdFJlZiA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1TZWFyY2hFeHRl
bmRlZCgKICAgICAgICBOdW1iZXIgICA9PiAnKicgLiAkU2VhcmNoIC4gJyonLAogICAgICAgIENs
YXNzSURzID0+IFskQ2xhc3NJRF0sCiAgICApOwoKICAgIGZvciBteSAkU2VhcmNoUmVzdWx0ICgg
QHskQ0lTZWFyY2hMaXN0UmVmfSApIHsKCiAgICAgICAgIyBwcmV2ZW50IGRvdWJsZSBoaXRzLi4u
CiAgICAgICAgbmV4dCBpZiAoICRGb3VuZENJSGFzaHskU2VhcmNoUmVzdWx0fSApOwoKICAgICAg
ICBteSAkQ3VyclZlcnNpb25EYXRhID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+VmVyc2lv
bkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRTZWFyY2hSZXN1bHQsCiAgICAgICAg
ICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICk7CiAgICAgICAgaWYgKAogICAgICAgICAg
ICAkQ3VyclZlcnNpb25EYXRhCiAgICAgICAgICAgICYmCiAgICAgICAgICAgICggcmVmKCRDdXJy
VmVyc2lvbkRhdGEpIGVxICdIQVNIJyApICYmCiAgICAgICAgICAgICRDdXJyVmVyc2lvbkRhdGEt
PntOYW1lfSAmJgogICAgICAgICAgICAkQ3VyclZlcnNpb25EYXRhLT57TnVtYmVyfQogICAgICAg
ICAgICApCiAgICAgICAgewogICAgICAgICAgICBwdXNoIEBEYXRhLCB7CiAgICAgICAgICAgICAg
ICBDSUNsYXNzS2V5ICAgPT4gJFNlYXJjaFJlc3VsdCwKICAgICAgICAgICAgICAgIENJQ2xhc3NW
YWx1ZSA9PiAkQ3VyclZlcnNpb25EYXRhLT57TmFtZX0gLiAnICgnIC4gJEN1cnJWZXJzaW9uRGF0
YS0+e051bWJlcn0gLiAnKScsCiAgICAgICAgICAgIH07CgogICAgICAgICAgICAkRm91bmRDSUhh
c2h7JFNlYXJjaFJlc3VsdH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIEpTT04g
b3V0cHV0CiAgICAkSlNPTiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SlNPTkVuY29kZSgKICAg
ICAgICBEYXRhID0+IFxARGF0YSwKICAgICk7CgogICAgIyBzZW5kIEpTT04gcmVzcG9uc2UKICAg
IHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVu
dFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRTZWxmLT57TGF5b3V0T2Jq
ZWN0fS0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OIHx8ICcnLAogICAg
ICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAg
ICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50UXVldWVTZWFyY2gucG0gLSBhIG1vZHVsZSB1c2Vk
IGZvciB0aGUgYXV0b2NvbXBsZXRlIGZlYXR1cmUKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBj
LmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vZWRpdGVk
IGJ5OgojICogTWFydGluKGRvdClCYWx6YXJlayhhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBN
YXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogQW5kcmVhcyhkb3Qp
SGVyZ2VydChhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDogQWdlbnRRdWV1ZVNl
YXJjaC5wbSx2IDEuOCAyMDE2LzA1LzE4IDA3OjQwOjQ3IHR0byBFeHAgJAojIC0tCiMgVGhpcyBz
b2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBz
ZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChB
R1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cu
Z251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6
OkFnZW50UXVldWVTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVj
dERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAg
ICdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6UXVldWUnLAog
ICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7CgpzdWIgbmV3IHsKICAgIG15ICgg
JFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0
CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAg
ICRTZWxmLT57TGF5b3V0T2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0
OjpIVE1MOjpMYXlvdXQnKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9N
LT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57UXVldWVPYmplY3R9
ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwogICAgJFNlbGYt
PntQYXJhbU9iamVjdH0gID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6
UmVxdWVzdCcpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxm
LCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRKU09OID0gJyc7CgogICAgIyBnZXQgbmVlZGVkIHBh
cmFtcwogICAgbXkgJFNlYXJjaCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFy
YW0gPT4gJ1Rlcm0nICkgfHwgJyc7CgoKCiAgICAkU2VhcmNoID1+IHMvXF8vXC4vZzsKICAgICRT
ZWFyY2ggPX4gcy9cJS9cLlwqL2c7CiAgICAkU2VhcmNoID1+IHMvXCovXC5cKi9nOwoKICAgICMg
Z2V0IHF1ZXVlIGxpc3QKICAgICMgc2VhcmNoIGZvciBuYW1lLi4uLgogICAgbXkgJVF1ZXVlcyA9
ICRTZWxmLT57UXVldWVPYmplY3R9LT5RdWV1ZUxpc3QoCiAgICAgICAgVmFsaWQgPT4gMSwKICAg
ICk7CgogICAgIyBidWlsZCBkYXRhCiAgICBteSBARGF0YTsKICAgIGZvciBteSAkUXVldWVJRCAo
a2V5cyAlUXVldWVzKSB7CiAgICAgICAgaWYgKCAkUXVldWVzeyRRdWV1ZUlEfSA9fiAvJFNlYXJj
aC9pICkgewogICAgICAgICAgICBwdXNoIEBEYXRhLCB7CiAgICAgICAgICAgICAgICBRdWV1ZUtl
eSAgID0+ICRRdWV1ZUlELAogICAgICAgICAgICAgICAgUXVldWVWYWx1ZSA9PiAkUXVldWVzeyRR
dWV1ZUlEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBKU09O
IG91dHB1dAogICAgJEpTT04gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkpTT05FbmNvZGUoCiAg
ICAgICAgRGF0YSA9PiBcQERhdGEsCiAgICApOwoKICAgICMgc2VuZCBKU09OIHJlc3BvbnNlCiAg
ICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50KAogICAgICAgIENvbnRl
bnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkU2VsZi0+e0xheW91dE9i
amVjdH0tPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiB8fCAnJywKICAg
ICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAog
ICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50U2VydmljZVNlYXJjaC5wbSAtIGEgbW9kdWxlIHVz
ZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZmVhdHVyZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2
IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0
ZWQgYnk6CiMgKiBNYXJ0aW4oZG90KUJhbHphcmVrKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAq
IE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBBbmRyZWFzKGRv
dClIZXJnZXJ0KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBBZ2VudFNlcnZp
Y2VTZWFyY2gucG0sdiAxLjggMjAxNi8wNS8yNyAxMzoyMzowNiBmamFjcXVlbWluIEV4cCAkCiMg
LS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9y
IGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5m
b3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUg
aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5l
bDo6TW9kdWxlczo6QWdlbnRTZXJ2aWNlU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdz
OwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6
OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0
ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7CgpzdWIg
bmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcg
aGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxm
LCAkVHlwZSApOwoKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fSAgPSAkS2VybmVsOjpPTS0+R2V0
KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0VuY29kZU9iamVj
dH0gID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkVuY29kZScpOwogICAgJFNl
bGYtPntTZXJ2aWNlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpT
ZXJ2aWNlJyk7CiAgICAkU2VsZi0+e1BhcmFtT2JqZWN0fSAgID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3Vi
IFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRKU09OID0gJyc7
CgogICAgIyBnZXQgbmVlZGVkIHBhcmFtcwogICAgbXkgJFNlYXJjaCA9ICRTZWxmLT57UGFyYW1P
YmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rlcm0nICkgfHwgJyc7CgoKICAgICMgZ2V0IHF1
ZXVlIGxpc3QKICAgICMgc2VhcmNoIGZvciBuYW1lLi4uLgogICAgbXkgQFNlcnZpY2VJRHMgPSAk
U2VsZi0+e1NlcnZpY2VPYmplY3R9LT5TZXJ2aWNlU2VhcmNoKAogICAgICAgIE5hbWUgICA9PiAn
KicgLiAkU2VhcmNoIC4gJyonLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIAogICAg
IyBidWlsZCBkYXRhCiAgICBteSBARGF0YTsKICAgIGZvciBteSAkQ3VycktleSAoQFNlcnZpY2VJ
RHMpIHsKICAgICAgICBteSAlU2VydmljZURhdGEgPSAkU2VsZi0+e1NlcnZpY2VPYmplY3R9LT5T
ZXJ2aWNlR2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEN1cnJLZXksCiAgICAgICAgICAg
IFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgbmV4dCBpZiAoICElU2VydmljZURh
dGEgKTsKICAgICAgICBwdXNoIEBEYXRhLCB7CiAgICAgICAgICAgIFNlcnZpY2VLZXkgICA9PiAk
Q3VycktleSwKICAgICAgICAgICAgU2VydmljZVZhbHVlID0+ICRTZXJ2aWNlRGF0YXtOYW1lfSwK
ICAgICAgICB9OwogICAgfQoKICAgICMgYnVpbGQgSlNPTiBvdXRwdXQKICAgICRKU09OID0gJFNl
bGYtPntMYXlvdXRPYmplY3R9LT5KU09ORW5jb2RlKAogICAgICAgIERhdGEgPT4gXEBEYXRhLAog
ICAgKTsKCiAgICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0
T2JqZWN0fS0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24v
anNvbjsgY2hhcnNldD0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57Q2hhcnNldH0sCiAgICAg
ICAgQ29udGVudCAgICAgPT4gJEpTT04gfHwgJycsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lu
bGluZScsCiAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50QXR0YWNobWVudFN0b3JhZ2UucG0gLSB0byBnZXQg
dGhlIGF0dGFjaG1lbnRzCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21i
SCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0
ZW4oZG90KVRoYXUoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogQW5uYShkb3QpTGl0dmlub3Zh
KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcnRpbihkb3QpQmFsemFyZWsoYXQpY2FwZShk
YXNoKWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3Qp
ZGUKIwojIC0tCiMgJElkOiBBZ2VudEF0dGFjaG1lbnRTdG9yYWdlLnBtLHYgMS45IDIwMTYvMDUv
MTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxl
IENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90
IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwu
dHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRBdHRhY2htZW50U3RvcmFn
ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0g
KAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVt
OjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZScsCiAgICAnS2VybmVsOjpT
eXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCnN1YiBu
ZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBo
YXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYs
ICRUeXBlICk7CgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ICAgICAgICAgICAgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0F0
dGFjaG1lbnRTdG9yYWdlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVt
OjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZScpOwogICAgJFNlbGYtPntM
b2dPYmplY3R9ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3Rl
bTo6TG9nJyk7CiAgICAkU2VsZi0+e1BhcmFtT2JqZWN0fSAgICAgICAgICAgICA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICByZXR1cm4gJFNl
bGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICRP
dXRwdXQgID0gJyc7CiAgICBteSAkQWxsb3dlZCA9IDE7CgogICAgIyBnZXQgcGFyYW1zLi4uCiAg
ICBteSAkQXR0YWNobWVudERpcmVjdG9yeUlEID0KICAgICAgICAkU2VsZi0+e1BhcmFtT2JqZWN0
fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdBdHRhY2htZW50RGlyZWN0b3J5SUQnICk7CgogICAgIyBj
aGVjayBwYXJhbXMuLi4KICAgIGlmICggISRBdHRhY2htZW50RGlyZWN0b3J5SUQgKSB7CiAgICAg
ICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJv
cicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdBZ2VudEF0dGFjaG1lbnRTdG9yYWdlOiBOZWVk
IEF0dGFjaG1lbnREaXJlY3RvcnlJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxm
LT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIGdldCB0aGUgYXR0
YWNobWVudC4uLgogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJXsKICAgICAgICAkU2VsZi0+e0F0
dGFjaG1lbnRTdG9yYWdlT2JqZWN0fS0+QXR0YWNobWVudFN0b3JhZ2VHZXQoCiAgICAgICAgICAg
IElEID0+ICRBdHRhY2htZW50RGlyZWN0b3J5SUQsCiAgICAgICAgKQogICAgfTsKCiAgICBpZiAo
JUF0dGFjaG1lbnREYXRhKSB7CiAgICAgICAgJEF0dGFjaG1lbnREYXRhe0NvbnRlbnR9ICAgICA9
ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50UmVmfSB9OwogICAgICAgICRBdHRhY2htZW50RGF0
YXtGaWxlbmFtZX0gICAgPSAkQXR0YWNobWVudERhdGF7RmlsZU5hbWV9OwogICAgICAgICRBdHRh
Y2htZW50RGF0YXtDb250ZW50VHlwZX0gPSAkQXR0YWNobWVudERhdGF7UHJlZmVyZW5jZXN9LT57
RGF0YVR5cGV9OwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1l
bnQoJUF0dGFjaG1lbnREYXRhKTsKCiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xv
Z09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAg
ICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCBpbiBkaXJlY3RvcnkgaW5kZXggKCRB
dHRhY2htZW50RGlyZWN0b3J5SUQpISAiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxm
LT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgIH0KfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50Q3VzdG9tZXJDb21wYW55U2VhcmNoLnBtIC0gYSBt
b2R1bGUgdXNlZCBmb3IgdGhlIGF1dG9jb21wbGV0ZSBmZWF0dXJlCiMgQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0
dGVuL2VkaXRlZCBieToKIyAqIE1hcnRpbihkb3QpQmFsemFyZWsoYXQpY2FwZShkYXNoKWl0KGRv
dClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIEFu
ZHJlYXMoZG90KUhlcmdlcnQoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IEFn
ZW50Q3VzdG9tZXJDb21wYW55U2VhcmNoLnBtLHYgMS43IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRv
IEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJS
QU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxp
Y2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBm
aWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNr
YWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRDdXN0b21lckNvbXBhbnlTZWFyY2g7Cgp1c2Ugc3Ry
aWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJu
ZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2Vy
bmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29k
ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCnN1YiBuZXcgewogICAg
bXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBv
YmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7
CgogICAgJFNlbGYtPntDb25maWdPYmplY3R9ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fSAgICAgICAgICA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgICRTZWxm
LT57Q3VzdG9tZXJDb21wYW55T2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpDdXN0b21lckNvbXBhbnknKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSAgICAgICAg
ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxm
LT57UGFyYW1PYmplY3R9ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAg
bXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSlNPTiA9ICcnOwoKICAgICMgZ2V0
IG5lZWRlZCBwYXJhbXMKICAgIG15ICRTZWFyY2ggPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0
UGFyYW0oIFBhcmFtID0+ICdUZXJtJyApIHx8ICcnOwoKICAgICMgZ2V0IHF1ZXVlIGxpc3QKICAg
ICMgc2VhcmNoIGZvciBuYW1lLi4uLgogICAgbXkgJUN1c3RvbWVyQ29tcGFueUxpc3QgPSAkU2Vs
Zi0+e0N1c3RvbWVyQ29tcGFueU9iamVjdH0tPkN1c3RvbWVyQ29tcGFueUxpc3QoCiAgICAgICAg
U2VhcmNoID0+ICcqJyAuICRTZWFyY2ggLiAnKicsCiAgICApOwoKICAgICMgYnVpbGQgZGF0YQog
ICAgbXkgQERhdGE7CiAgICBteSAkQ3VzdENvbXBhbnlNYXBSZWYgPQogICAgICAgICRTZWxmLT57
Q29uZmlnT2JqZWN0fS0+R2V0KCdJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uOjpDb21wYW55QmFj
a2VuZE1hcHBpbmcnKTsKICAgIGZvciBteSAkQ3VycktleSAoIGtleXMgJUN1c3RvbWVyQ29tcGFu
eUxpc3QgKSB7CiAgICAgICAgbXkgJUN1c3RvbWVyQ29tcGFueVNlYXJjaExpc3QgPSAkU2VsZi0+
e0N1c3RvbWVyQ29tcGFueU9iamVjdH0tPkN1c3RvbWVyQ29tcGFueUdldCgKICAgICAgICAgICAg
Q3VzdG9tZXJJRCA9PiAkQ3VycktleSwKICAgICAgICApOwogICAgICAgIG15ICRTZWFyY2ggPSAk
Q3VzdG9tZXJDb21wYW55TGlzdHskQ3VycktleX07CgogICAgICAgIG15ICRDdXN0b21lckNvbXBh
bnlTdHIgPSAnJzsKICAgICAgICBpZiAoICRDdXN0Q29tcGFueU1hcFJlZiAmJiByZWYoJEN1c3RD
b21wYW55TWFwUmVmKSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE1hcHBpbmdG
aWVsZCAoIHNvcnQoIGtleXMoICV7JEN1c3RDb21wYW55TWFwUmVmfSApICkgKSB7CiAgICAgICAg
ICAgICAgICBpZiAoICRDdXN0b21lckNvbXBhbnlTZWFyY2hMaXN0eyAkQ3VzdENvbXBhbnlNYXBS
ZWYtPnskTWFwcGluZ0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgICRDdXN0b21lckNv
bXBhbnlTdHIgLj0gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEN1c3RvbWVyQ29tcGFu
eVNlYXJjaExpc3R7ICRDdXN0Q29tcGFueU1hcFJlZi0+eyRNYXBwaW5nRmllbGR9IH07CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgICRDdXN0b21lckNv
bXBhbnlTdHIgPX4gcy9ccyskLy9nOwogICAgICAgICRDdXN0b21lckNvbXBhbnlTdHIgPX4gcy9e
XHMrLy9nOwoKICAgICAgICBpZiAoICRDdXN0b21lckNvbXBhbnlTdHIgbmUgJycgKSB7CiAgICAg
ICAgICAgICRTZWFyY2ggPSAkQ3VzdG9tZXJDb21wYW55U3RyOwogICAgICAgIH0KCiAgICAgICAg
cHVzaCBARGF0YSwgewogICAgICAgICAgICBDdXN0b21lckNvbXBhbnlLZXkgICA9PiAkQ3Vycktl
eSwKICAgICAgICAgICAgQ3VzdG9tZXJDb21wYW55VmFsdWUgPT4gJFNlYXJjaCwKICAgICAgICB9
OwogICAgfQoKICAgICMgYnVpbGQgSlNPTiBvdXRwdXQKICAgICRKU09OID0gJFNlbGYtPntMYXlv
dXRPYmplY3R9LT5KU09ORW5jb2RlKAogICAgICAgIERhdGEgPT4gXEBEYXRhLAogICAgKTsKCiAg
ICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgcmV0dXJuICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+
QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hh
cnNldD0nIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57Q2hhcnNldH0sCiAgICAgICAgQ29udGVu
dCAgICAgPT4gJEpTT04gfHwgJycsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAg
ICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50Q3VzdG9tZXJVc2VyQ29tcGFueVNlYXJjaC5wbSAt
IGEgbW9kdWxlIHVzZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZmVhdHVyZQojIENvcHlyaWdodCAo
QykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMg
d3JpdHRlbi9lZGl0ZWQgYnk6CiMgKiBNYXJ0aW4oZG90KUJhbHphcmVrKGF0KWNhcGUoZGFzaClp
dChkb3QpZGUKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICog
QW5uYShkb3QpTGl0dmlub3ZhKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJ
bGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBBbmRyZWFzKGRvdClIZXJnZXJ0KGF0
KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIFN0ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUoZGFzaClp
dChkb3QpZGUKIwojIC0tCiMgJElkOiBBZ2VudEN1c3RvbWVyVXNlckNvbXBhbnlTZWFyY2gucG0s
diAxLjEyIDIwMTYvMDEvMTQgMTA6NDE6MzMgc21laGxpZyBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0
d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUK
IyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BM
KS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251
Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFn
ZW50Q3VzdG9tZXJVc2VyQ29tcGFueVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsK
Cm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdL
ZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9t
ZXJDb21wYW55JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJu
ZWw6OlN5c3RlbTo6RW5jb2RlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jwop
OwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2Nh
dGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNz
KCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0NvbmZpZ09iamVjdH0gICAgICAgICAgPSAk
S2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgJFNlbGYtPntMYXlvdXRPYmpl
Y3R9ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6Okxh
eW91dCcpOwogICAgJFNlbGYtPntDdXN0b21lckNvbXBhbnlPYmplY3R9ID0gJEtlcm5lbDo6T00t
PkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpOwogICAgJFNlbGYtPntDdXN0
b21lclVzZXJPYmplY3R9ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1
c3RvbWVyVXNlcicpOwogICAgJFNlbGYtPntFbmNvZGVPYmplY3R9ICAgICAgICAgID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkVuY29kZScpOwogICAgJFNlbGYtPntQYXJhbU9i
amVjdH0gICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6
UmVxdWVzdCcpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxm
LCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRKU09OID0gJyc7CgogICAgIyBnZXQgbmVlZGVkIHBh
cmFtcwogICAgbXkgJFNlYXJjaCA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFy
YW0gPT4gJ1Rlcm0nICkgfHwgJyc7CgogICAgbXkgJEF1dG9Db21wbGV0ZUNvbmZpZyA9ICRTZWxm
LT57Q29uZmlnT2JqZWN0fS0+R2V0KCdBdXRvQ29tcGxldGU6OkFnZW50JyktPntDdXN0b21lclNl
YXJjaH07CgogICAgbXkgJE1heFJlc3VsdHMgPSAkQXV0b0NvbXBsZXRlQ29uZmlnLT57TWF4UmVz
dWx0c0Rpc3BsYXllZH0gfHwgMjA7CgogICAgbXkgQEN1c3RvbWVySURzID0gJFNlbGYtPntDdXN0
b21lclVzZXJPYmplY3R9LT5DdXN0b21lcklETGlzdCgKICAgICAgICBTZWFyY2hUZXJtID0+ICRT
ZWFyY2ggfHwgJycsCiAgICApOwoKICAgIG15ICVDdXN0b21lckNvbXBhbnlMaXN0ID0gJFNlbGYt
PntDdXN0b21lckNvbXBhbnlPYmplY3R9LT5DdXN0b21lckNvbXBhbnlMaXN0KAogICAgICAgIFNl
YXJjaCA9PiAkU2VhcmNoIHx8ICcnLAogICAgKTsKCiAgICAjIGFkZCBDdXN0b21lcklEcyBmb3Ig
d2hpY2ggbm8gQ3VzdG9tZXJDb21wYW55IGFyZSByZWdpc3RlcmVkCiAgICBteSAlU2VlbjsKICAg
IGZvciBteSAkQ3VzdG9tZXJJRCAoQEN1c3RvbWVySURzKSB7CgogICAgICAgICMgc2tpcCBkdXBs
aWNhdGVzCiAgICAgICAgbmV4dCBDVVNUT01FUklEIGlmICRTZWVueyRDdXN0b21lcklEfTsKICAg
ICAgICAkU2VlbnskQ3VzdG9tZXJJRH0gPSAxOwoKICAgICAgICAjIGlkZW50aWZpZXMgdW5rbm93
biBjb21wYW5pZXMKICAgICAgICBpZiAoICFleGlzdHMgJEN1c3RvbWVyQ29tcGFueUxpc3R7JEN1
c3RvbWVySUR9ICkgewogICAgICAgICAgICAkQ3VzdG9tZXJDb21wYW55TGlzdHskQ3VzdG9tZXJJ
RH0gPSAkQ3VzdG9tZXJJRDsKICAgICAgICB9CgogICAgfQoKICAgICMgYnVpbGQgcmVzdWx0IGxp
c3QKICAgIG15IEBSZXN1bHQ7CiAgICBDVVNUT01FUklEOgogICAgZm9yIG15ICRDdXN0b21lcklE
ICggc29ydCBrZXlzICVDdXN0b21lckNvbXBhbnlMaXN0ICkgewogICAgICAgIHB1c2ggQFJlc3Vs
dCwKICAgICAgICAgICAgewogICAgICAgICAgICBDdXN0b21lclVzZXJDb21wYW55S2V5ICAgPT4g
JEN1c3RvbWVySUQsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckNvbXBhbnlWYWx1ZSA9PiAkQ3Vz
dG9tZXJDb21wYW55TGlzdHskQ3VzdG9tZXJJRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgbGFz
dCBDVVNUT01FUklEIGlmIHNjYWxhciBAUmVzdWx0ID49ICRNYXhSZXN1bHRzOwogICAgfQoKICAg
ICMgYnVpbGQgSlNPTiBvdXRwdXQKICAgICRKU09OID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5K
U09ORW5jb2RlKAogICAgICAgIERhdGEgPT4gXEBSZXN1bHQsCiAgICApOwoKICAgICMgc2VuZCBK
U09OIHJlc3BvbnNlCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRhY2htZW50
KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAk
U2VsZi0+e0xheW91dE9iamVjdH0tPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAk
SlNPTiB8fCAnJywKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0Nh
Y2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNJVGlja2V0U2VhcmNoLnBtIC0gYSBtb2R1
bGUgdXNlZCBmb3IgdGhlIGF1dG9jb21wbGV0ZSBmZWF0dXJlCiMgQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVu
L2VkaXRlZCBieToKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRl
CiMgKiBBbmRyZWFzKGRvdClIZXJnZXJ0KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMg
JElkOiBBZ2VudElUU01DSVRpY2tldFNlYXJjaC5wbSx2IDEuNiAyMDE2LzA1LzE4IDA3OjQwOjQ3
IHR0byBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZv
ciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoK
cGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50SVRTTUNJVGlja2V0U2VhcmNoOwoKdXNlIHN0
cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2Vy
bmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScs
CiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6
UmVxdWVzdCcKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAg
ICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07
CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgJFNl
bGYtPntFbmNvZGVPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkVu
Y29kZScpOwogICAgJFNlbGYtPntUaWNrZXRPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2Vy
bmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgJFNlbGYtPntQYXJhbU9iamVjdH0gID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIHJldHVybiAk
U2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15
ICRKU09OID0gJyc7CgogICAgIyBnZXQgbmVlZGVkIHBhcmFtcwogICAgbXkgJFNlYXJjaCA9ICRT
ZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rlcm0nICkgfHwgJyc7CgoK
ICAgICRTZWFyY2ggPX4gcy9cKi8lL2dpOwoKICAgICMgZ2V0IHRpY2tldCBsaXN0CiAgICAjIHNl
YXJjaCBmb3IgbnVtYmVyLi4uLgogICAgbXkgJVRpY2tldHMgPSAkU2VsZi0+e1RpY2tldE9iamVj
dH0tPlRpY2tldFNlYXJjaCgKICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0hBU0gnLAogICAgICAg
IFRpY2tldE51bWJlciA9PiAkU2VhcmNoLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+
e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgZGF0YQogICAgbXkgQERhdGE7CiAgICBmb3Ig
bXkgJFRpY2tldElEIChrZXlzICVUaWNrZXRzKSB7CiAgICAgICAgcHVzaCBARGF0YSwgewogICAg
ICAgICAgICBUaWNrZXRLZXkgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFRpY2tldFZhbHVl
ID0+ICRUaWNrZXRzeyRUaWNrZXRJRH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGJ1aWxkIEpT
T04gb3V0cHV0CiAgICAkSlNPTiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SlNPTkVuY29kZSgK
ICAgICAgICBEYXRhID0+IFxARGF0YSwKICAgICk7CgogICAgIyBzZW5kIEpTT04gcmVzcG9uc2UK
ICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1lbnQoCiAgICAgICAgQ29u
dGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRTZWxmLT57TGF5b3V0
T2JqZWN0fS0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OIHx8ICcnLAog
ICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEs
CiAgICApOwp9CgoxOwo=
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50U0xBU2VhcmNoLnBtIC0gYSBtb2R1bGUgdXNlZCBm
b3IgdGhlIGF1dG9jb21wbGV0ZSBmZWF0dXJlCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5h
LnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBi
eToKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBNYXJp
byhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogQW5kcmVhcyhkb3QpSGVy
Z2VydChhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDogQWdlbnRTTEFTZWFyY2gu
cG0sdiAxLjggMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdh
cmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMg
dGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCku
IElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5v
cmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2Vu
dFNMQVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5k
ZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5l
bDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJywKICAgICdL
ZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNMQScsCiAgICAn
S2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlw
ZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAg
IG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNl
bGYtPntMYXlvdXRPYmplY3R9ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpI
VE1MOjpMYXlvdXQnKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSAgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyk7CiAgICAkU2VsZi0+e1BhY2thZ2VPYmplY3R9
ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnKTsKICAgICRTZWxm
LT57U2VydmljZU9iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2Vy
dmljZScpOwogICAgJFNlbGYtPntTTEFPYmplY3R9ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tl
cm5lbDo6U3lzdGVtOjpTTEEnKTsKICAgICRTZWxmLT57UGFyYW1PYmplY3R9ICAgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgcmV0dXJuICRT
ZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkg
JEpTT04gPSAnJzsKCiAgICAjIGdldCBuZWVkZWQgcGFyYW1zCiAgICBteSAkU2VhcmNoICAgICAg
ICAgICAgICA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rlcm0n
ICkgICAgICAgICAgICAgICAgfHwgJyc7CiAgICBteSAkU2VydmljZURhdGEgICAgICAgICA9ICRT
ZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlcnZpY2VEYXRhJyApICAg
ICAgICAgfHwgJyc7CiAgICBteSAkQ3VzdG9tZXJMb2dpbkRhdGEgICA9ICRTZWxmLT57UGFyYW1P
YmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0N1c3RvbWVyTG9naW5EYXRhJyApICAgfHwgJyc7
CiAgICBteSAkQ3VzdG9tZXJDb21wYW55RGF0YSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQ
YXJhbSggUGFyYW0gPT4gJ0N1c3RvbWVyQ29tcGFueURhdGEnICkgfHwgJyc7CgogICAgIyBjaGVj
ayBpZiBLSVhTZXJ2aWNlQ2F0YWxvZyBpcyBpbnN0YWxsZWQKICAgIG15ICRLSVhTZXJ2Q2F0YWxv
Z0luc3RhbGxlZCA9IDA7CiAgICBteSBASW5zdGFsbGVkUGFja2FnZXMgPSAkU2VsZi0+e1BhY2th
Z2VPYmplY3R9LT5SZXBvc2l0b3J5TGlzdCgpOwogICAgZm9yIG15ICRQYWNrYWdlIChASW5zdGFs
bGVkUGFja2FnZXMpIHsKICAgICAgICBpZiAoICRQYWNrYWdlLT57TmFtZX0tPntDb250ZW50fSBl
cSAnS0lYU2VydmljZUNhdGFsb2cnICkgewogICAgICAgICAgICAkS0lYU2VydkNhdGFsb2dJbnN0
YWxsZWQgPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgdmFsaWQgU0xBcwogICAg
bXkgJUFsbFZhbGlkU0xBcyA9ICRTZWxmLT57U0xBT2JqZWN0fS0+U0xBTGlzdCgKICAgICAgICBW
YWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAg
IG15ICVTTEFzID0gJUFsbFZhbGlkU0xBczsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ICAgIyBpZiBTZXJ2aWNlRGF0YSBpcyBnaXZlbiAtPiBnZXQgU0xBcyB0aGF0IGFyZSBjb25maWd1
cmVkIGZvciBBTEwgZ2l2ZW4gc2VydmljZXMKICAgIGlmICggJFNlcnZpY2VEYXRhICYmICRTZXJ2
aWNlRGF0YSBuZSAnTk9ORScgKSB7CiAgICAgICAgbXkgQFNlcnZpY2VzID0gc3BsaXQoICc7Jywg
JFNlcnZpY2VEYXRhICk7CiAgICAgICAgaWYgKEBTZXJ2aWNlcykgewogICAgICAgICAgICBmb3Ig
bXkgJFNlcnZpY2VJRCAoQFNlcnZpY2VzKSB7CiAgICAgICAgICAgICAgICBteSAlU0xBc0ZvclNl
cnZpY2UgPSAkU2VsZi0+e1NMQU9iamVjdH0tPlNMQUxpc3QoCiAgICAgICAgICAgICAgICAgICAg
VmFsaWQgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNl
SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAg
ICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBkZWxldGUgU0xBIGZyb20gcmVzdWx0
IGlmIGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBvbmUgb2YgU2VydmljZXMKICAgICAgICAgICAg
ICAgIGZvciBteSAkU0xBICgga2V5cyAlU0xBcyApIHsKICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgJFNMQXN7JFNMQX0gaWYgISRTTEFzRm9yU2VydmljZXskU0xBfTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJVNM
QXMgPSAoKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBDdXN0b21lckxvZ2luRGF0YSBpcyBn
aXZlbiAtPiBnZXQgU0xBcyB0aGF0IGFyZSBjb25maWd1cmVkIGZvciBBTEwgQ3VzdG9tZXJVc2Vy
J3MgU2VydmljZXMKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
ICBpZiAoICRDdXN0b21lckxvZ2luRGF0YSAmJiAkQ3VzdG9tZXJMb2dpbkRhdGEgbmUgJ05PTkUn
ICkgewogICAgICAgIG15IEBDdXN0b21lclVzZXJzID0gc3BsaXQoICc7JywgJEN1c3RvbWVyTG9n
aW5EYXRhICk7CiAgICAgICAgaWYgKEBDdXN0b21lclVzZXJzKSB7CiAgICAgICAgICAgIGZvciBt
eSAkQ3VzdG9tZXJVc2VyTG9naW4gKEBDdXN0b21lclVzZXJzKSB7CiAgICAgICAgICAgICAgICBt
eSAlU0xBc0ZvckN1c3RvbWVyVXNlciA9ICgpOwoKICAgICAgICAgICAgICAgICMgZ2V0IFNlcnZp
Y2VzIGZvciBDdXN0b21lclVzZXIKICAgICAgICAgICAgICAgIG15ICVTZXJ2aWNlcyA9ICRTZWxm
LT57U2VydmljZU9iamVjdH0tPkN1c3RvbWVyVXNlclNlcnZpY2VNZW1iZXJMaXN0KAogICAgICAg
ICAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICRDdXN0b21lclVzZXJMb2dpbiwKICAg
ICAgICAgICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgICAg
ICAgICAgICAgRGVmYXVsdFNlcnZpY2VzICAgPT4gMCwKICAgICAgICAgICAgICAgICk7CgogICAg
ICAgICAgICAgICAgIyBnZXQgU0xBcyBmb3IgZWFjaCBTZXJ2aWNlIChTTEFzIGZvciBDVXN0b21l
clVzZXIpCiAgICAgICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIGtleXMgJVNlcnZpY2Vz
ICkgewogICAgICAgICAgICAgICAgICAgIG15ICVTTEFzRm9yU2VydmljZSA9ICRTZWxmLT57U0xB
T2JqZWN0fS0+U0xBTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgICAgID0+IDEs
CiAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAg
ICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAg
ICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJVNMQXNGb3JDdXN0b21lclVzZXIgPSAo
ICVTTEFzRm9yQ3VzdG9tZXJVc2VyLCAlU0xBc0ZvclNlcnZpY2UgKTsKICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBTTEEgZnJvbSByZXN1bHQgaWYgaXQgaXMgbm90
IGNvbmZpZ3VyZWQgZm9yIG9uZSBvZiBDdXN0b21lclVzZXJzCiAgICAgICAgICAgICAgICBmb3Ig
bXkgJFNMQSAoIGtleXMgJVNMQXMgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRTTEFz
eyRTTEF9IGlmICEkU0xBc0ZvckN1c3RvbWVyVXNlcnskU0xBfTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJVNMQXMg
PSAoKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBDdXN0b21lckNvbXBhbnlEYXRhIGlzIGdp
dmVuIEFORCBLSVhTZXJ2aWNlQ2F0YWxvZyBpbnN0YWxsaWVydAogICAgIyAtPiBnZXQgU0xBcyB0
aGF0IGFyZSBjb25maWd1cmVkIGZvciBBTEwgZ2l2ZW4gQ3VzdG9tZXJJRHMKICAgICMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICAgIGVsc2lmICggJEN1c3RvbWVyQ29tcGFueURhdGEgJiYgJEN1c3RvbWVyQ29tcGFueURh
dGEgbmUgJ05PTkUnICYmICRLSVhTZXJ2Q2F0YWxvZ0luc3RhbGxlZCApIHsKICAgICAgICBteSBA
Q3VzdG9tZXJVc2VycyA9ICgpOwogICAgICAgIG15IEBDdXN0b21lckNvbXBhbnlMaXN0ID0gc3Bs
aXQoICc7JywgJEN1c3RvbWVyQ29tcGFueURhdGEgKTsKICAgICAgICBpZiAoQEN1c3RvbWVyQ29t
cGFueUxpc3QpIHsKICAgICAgICAgICAgZm9yIG15ICRDdXN0b21lckNvbXBhbnkgKEBDdXN0b21l
ckNvbXBhbnlMaXN0KSB7CgogICAgICAgICAgICAgICAgIyBnZXQgQ3VzdG9tZXJTZXJ2aWNlU0xB
IGVudHJpZXMgdGhhdCBoYXZlIHRoaXMgQ3VzdG9tZXJJRAogICAgICAgICAgICAgICAgbXkgQEN1
c3RvbWVyU2VydmljZVNMQXMgPSAkU2VsZi0+e1NlcnZpY2VPYmplY3R9LT5DdXN0b21lclNlcnZp
Y2VNZW1iZXJTZWFyY2goCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCA9PiAkQ3VzdG9t
ZXJDb21wYW55LAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgPT4gJ0hBU0gnLAogICAg
ICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBTTEFzIGZvciB0aGlzIEN1c3Rv
bWVyQ29tcGFueSAoQ3VzdG9tZXJJRCkKICAgICAgICAgICAgICAgIG15ICVTTEFzRm9yQ3VzdG9t
ZXJDb21wYW55ID0gKCk7CiAgICAgICAgICAgICAgICBmb3IgbXkgJENhdGFsb2dFbnRyeSAoQEN1
c3RvbWVyU2VydmljZVNMQXMpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICggcmVmKCRD
YXRhbG9nRW50cnkpIG5lICdIQVNIJyApOwogICAgICAgICAgICAgICAgICAgIGlmICggJENhdGFs
b2dFbnRyeS0+e1NMQUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNMQXNGb3JDdXN0
b21lckNvbXBhbnl7ICRDYXRhbG9nRW50cnktPntTTEFJRH0gfSA9IDEsCiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZGVsZXRlIFNMQSBm
cm9tIHJlc3VsdCBpZiBpdCBpcyBub3QgY29uZmlndXJlZCBmb3Igb25lIG9mIEN1c3RvbWVySURz
CiAgICAgICAgICAgICAgICBmb3IgbXkgJFNMQSAoIGtleXMgJVNMQXMgKSB7CiAgICAgICAgICAg
ICAgICAgICAgZGVsZXRlICRTTEFzeyRTTEF9IGlmICEkU0xBc0ZvckN1c3RvbWVyQ29tcGFueXsk
U0xBfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgJVNMQXMgPSAoKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQg
U0xBcyBmb3IgREVGQVVMVC1TZXJ2aWNlcwogICAgbXkgJVNMQXNGb3JEZWZhdWx0U2VydmljZXMg
PSAoKTsKICAgIGlmICggISRLSVhTZXJ2Q2F0YWxvZ0luc3RhbGxlZCApIHsKICAgICAgICBteSAl
RGVmYXVsdFNlcnZpY2VzID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+Q3VzdG9tZXJVc2VyU2Vy
dmljZU1lbWJlckxpc3QoCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICc8REVGQVVM
VD4nLAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgICAg
IERlZmF1bHRTZXJ2aWNlcyAgID0+IDAsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFNlcnZp
Y2VJRCAoIGtleXMgJURlZmF1bHRTZXJ2aWNlcyApIHsKICAgICAgICAgICAgbXkgJVNMQXNGb3JT
ZXJ2aWNlID0gJFNlbGYtPntTTEFPYmplY3R9LT5TTEFMaXN0KAogICAgICAgICAgICAgICAgVmFs
aWQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAg
ICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7
CiAgICAgICAgICAgICVTTEFzRm9yRGVmYXVsdFNlcnZpY2VzID0gKCAlU0xBc0ZvckRlZmF1bHRT
ZXJ2aWNlcywgJVNMQXNGb3JTZXJ2aWNlICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAg
ICAgICAgbXkgQEN1c3RvbWVyU2VydmljZVNMQXMgPSAkU2VsZi0+e1NlcnZpY2VPYmplY3R9LT5D
dXN0b21lclNlcnZpY2VNZW1iZXJTZWFyY2goCiAgICAgICAgICAgIEN1c3RvbWVySUQgPT4gJ0RF
RkFVTFQnLAogICAgICAgICAgICBSZXN1bHQgICAgID0+ICdIQVNIJywKICAgICAgICApOwogICAg
ICAgIGZvciBteSAkQ2F0YWxvZ0VudHJ5IChAQ3VzdG9tZXJTZXJ2aWNlU0xBcykgewogICAgICAg
ICAgICBuZXh0IGlmICggcmVmKCRDYXRhbG9nRW50cnkpIG5lICdIQVNIJyApOwogICAgICAgICAg
ICBpZiAoICRDYXRhbG9nRW50cnktPntTTEFJRH0gKSB7CiAgICAgICAgICAgICAgICAkU0xBc0Zv
ckRlZmF1bHRTZXJ2aWNlc3sgJENhdGFsb2dFbnRyeS0+e1NMQUlEfSB9CiAgICAgICAgICAgICAg
ICAgICAgPSAkQWxsVmFsaWRTTEFzeyAkQ2F0YWxvZ0VudHJ5LT57U0xBSUR9IH0sCiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICB9CiAgICAlU0xBcyA9ICggJVNMQXMsICVTTEFzRm9yRGVmYXVs
dFNlcnZpY2VzICk7CgoKCiAgICAkU2VhcmNoID1+IHMvXF8vXC4vZzsKICAgICRTZWFyY2ggPX4g
cy9cJS9cLlwqL2c7CiAgICAkU2VhcmNoID1+IHMvXCovXC5cKi9nOwoKICAgICMgYnVpbGQgZGF0
YQogICAgbXkgQERhdGE7CiAgICBmb3IgbXkgJFNMQUlEICgga2V5cyAlU0xBcyApIHsKICAgICAg
ICBpZiAoICRTTEFzeyRTTEFJRH0gPX4gLyRTZWFyY2gvaSApIHsKICAgICAgICAgICAgcHVzaCBA
RGF0YSwgewogICAgICAgICAgICAgICAgU0xBS2V5ICAgPT4gJFNMQUlELAogICAgICAgICAgICAg
ICAgU0xBVmFsdWUgPT4gJFNMQXN7JFNMQUlEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAg
ICB9CgogICAgIyBidWlsZCBKU09OIG91dHB1dAogICAgJEpTT04gPSAkU2VsZi0+e0xheW91dE9i
amVjdH0tPkpTT05FbmNvZGUoCiAgICAgICAgRGF0YSA9PiBcQERhdGEsCiAgICApOwoKICAgICMg
c2VuZCBKU09OIHJlc3BvbnNlCiAgICByZXR1cm4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5BdHRh
Y2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0
PScgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAg
ICA9PiAkSlNPTiB8fCAnJywKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAg
ICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK
IyAtLQojIEFnZW50Q0lDbGFzc1NlYXJjaC50dCAtIHByb3ZpZGVzIGF1dG9jb21wbGV0ZSBmZWF0
dXJlIGZvciBDSSBjbGFzc2VzIHNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5w
LmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6
CiMgKiBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcnRp
bihkb3QpQmFsemFyZWsoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGlu
Z2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBBZ2VudENJQ2xhc3NTZWFy
Y2gudHQsdiAxLjIgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29m
dHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2Vl
CiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQ
TCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3Lmdu
dS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNJQ2xh
c3NTZWFyY2hBdXRvQ29tcGxldGUiKSAlXQpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRl
ICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5D
b25maWcuU2V0KCdBdXRvY29tcGxldGUuTWluUXVlcnlMZW5ndGgnLCAiWyUgRGF0YS5taW5RdWVy
eUxlbmd0aCB8IGh0bWwgJV0iKTsKICAgIENvcmUuQ29uZmlnLlNldCgnQXV0b2NvbXBsZXRlLlF1
ZXJ5RGVsYXknLCAiWyUgRGF0YS5xdWVyeURlbGF5IHwgaHRtbCAlXSIpOwogICAgQ29yZS5Db25m
aWcuU2V0KCdBdXRvY29tcGxldGUuTWF4UmVzdWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJl
c3VsdHNEaXNwbGF5ZWQgfCBodG1sICVdIik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21w
bGV0ZS5EeW5hbWljV2lkdGgnLCAiWyUgRGF0YS5keW5hbWljV2lkdGggfCBodG1sICVdIik7CiAg
ICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0ZS5TZWFyY2hCdXR0b25UZXh0JywgWyUgVHJh
bnNsYXRlKCJTZWFyY2ggUXVldWUiKSB8IEpTT04gJV0pOwovL11dPjwvc2NyaXB0PgoKWyUgUmVu
ZGVyQmxvY2tTdGFydCgiQ0lDbGFzc1NlYXJjaEluaXQiKSAlXQo8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgIHZhciBGaWVsZElEID0gJ1slIERhdGEuSXRlbUlE
IHwgaHRtbCAlXSc7CiAgICBGaWVsZElEID0gRmllbGRJRC5yZXBsYWNlKC86L2csICdcXDonKTsK
ICAgIENvcmUuQWdlbnQuQ0lDbGFzc1NlYXJjaC5Jbml0KCQoIiMiK0ZpZWxkSUQpLCBbJSBEYXRh
LkNsYXNzSUQgfCBodG1sICVdLFslIERhdGEuQWN0aXZlQXV0b0NvbXBsZXRlIHwgaHRtbCAlXSk7
Ci8vXV0+PC9zY3JpcHQ+ClslIFJlbmRlckJsb2NrRW5kKCJDSUNsYXNzU2VhcmNoSW5pdCIpICVd
CgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkNJQ2xhc3NTZWFyY2hBdXRvQ29tcGxldGUi
KSAlXQoK
IyAtLQojIEFnZW50UXVldWVTZWFyY2gudHQgLSBwcm92aWRlcyBhdXRvY29tcGxldGUgZmVhdHVy
ZSBmb3IgcXVldWUgc2VhcmNoCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQg
R21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIEZy
YW5rKGRvdClPYmVyZW5kZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogTWFydGluKGRvdClC
YWx6YXJlayhhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNh
cGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQo
ZG90KWRlCiMKIyAtLQojICRJZDogQWdlbnRRdWV1ZVNlYXJjaC50dCx2IDEuMiAyMDE2LzA1LzE4
IDA3OjQwOjQ3IHR0byBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09M
VVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBD
T1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCBy
ZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4
dC4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVldWVTZWFyY2hBdXRvQ29tcGxldGUiKSAl
XQpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUu
TWluUXVlcnlMZW5ndGgnLCAiWyUgRGF0YS5taW5RdWVyeUxlbmd0aCB8IGh0bWwgJV0iKTsKICAg
IENvcmUuQ29uZmlnLlNldCgnQXV0b2NvbXBsZXRlLlF1ZXJ5RGVsYXknLCAiWyUgRGF0YS5xdWVy
eURlbGF5IHwgaHRtbCAlXSIpOwogICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuTWF4
UmVzdWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3VsdHNEaXNwbGF5ZWQgfCBodG1sICVd
Iik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0ZS5EeW5hbWljV2lkdGgnLCAiWyUg
RGF0YS5keW5hbWljV2lkdGggfCBodG1sICVdIik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9j
b21wbGV0ZS5TZWFyY2hCdXR0b25UZXh0JywgWyUgVHJhbnNsYXRlKCJTZWFyY2ggUXVldWUiKSB8
IEpTT04gJV0pOwovL11dPjwvc2NyaXB0PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVldWVTZWFy
Y2hJbml0IikgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAg
ICB2YXIgRmllbGRJRCA9ICdbJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV0nOwogICAgRmllbGRJRCA9
IEZpZWxkSUQucmVwbGFjZSgvOi9nLCAnXFw6Jyk7CiAgICBDb3JlLkFnZW50LlF1ZXVlU2VhcmNo
LkluaXQoJCgiIyIrRmllbGRJRCksIFslIERhdGEuQWN0aXZlQXV0b0NvbXBsZXRlIHwgaHRtbCAl
XSk7Ci8vXV0+PC9zY3JpcHQ+ClslIFJlbmRlckJsb2NrRW5kKCJRdWV1ZVNlYXJjaEluaXQiKSAl
XQoKWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJRdWV1ZVNlYXJjaEF1dG9Db21wbGV0ZSIp
ICVdCgo=
IyAtLQojIEFnZW50U2VydmljZVNlYXJjaC50dCAtIHByb3ZpZGVzIGF1dG9jb21wbGV0ZSBmZWF0
dXJlIGZvciBzZXJ2aWNlIHNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUu
IElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6CiMg
KiBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcnRpbihk
b3QpQmFsemFyZWsoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2Vy
KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBBZ2VudFNlcnZpY2VTZWFyY2gu
dHQsdiAxLjIgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdh
cmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMg
dGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCku
IElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5v
cmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlcnZpY2VT
ZWFyY2hBdXRvQ29tcGxldGUiKSAlXQpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVd
CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5Db25m
aWcuU2V0KCdBdXRvY29tcGxldGUuTWluUXVlcnlMZW5ndGgnLCAiWyUgRGF0YS5taW5RdWVyeUxl
bmd0aCB8IGh0bWwgJV0iKTsKICAgIENvcmUuQ29uZmlnLlNldCgnQXV0b2NvbXBsZXRlLlF1ZXJ5
RGVsYXknLCAiWyUgRGF0YS5xdWVyeURlbGF5IHwgaHRtbCAlXSIpOwogICAgQ29yZS5Db25maWcu
U2V0KCdBdXRvY29tcGxldGUuTWF4UmVzdWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3Vs
dHNEaXNwbGF5ZWQgfCBodG1sICVdIik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0
ZS5EeW5hbWljV2lkdGgnLCAiWyUgRGF0YS5keW5hbWljV2lkdGggfCBodG1sICVdIik7CiAgICBD
b3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0ZS5TZWFyY2hCdXR0b25UZXh0JywgWyUgVHJhbnNs
YXRlKCJTZWFyY2ggU2VydmljZSIpIHwgSlNPTiAlXSk7Ci8vXV0+PC9zY3JpcHQ+CgpbJSBSZW5k
ZXJCbG9ja1N0YXJ0KCJTZXJ2aWNlU2VhcmNoSW5pdCIpICVdCjxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgdmFyIEZpZWxkSUQgPSAnWyUgRGF0YS5JdGVtSUQg
fCBodG1sICVdJzsKICAgIEZpZWxkSUQgPSBGaWVsZElELnJlcGxhY2UoLzovZywgJ1xcOicpOwog
ICAgQ29yZS5BZ2VudC5TZXJ2aWNlU2VhcmNoLkluaXQoJCgiIyIrRmllbGRJRCksIFslIERhdGEu
QWN0aXZlQXV0b0NvbXBsZXRlIHwgaHRtbCAlXSk7Ci8vXV0+PC9zY3JpcHQ+ClslIFJlbmRlckJs
b2NrRW5kKCJTZXJ2aWNlU2VhcmNoSW5pdCIpICVdCgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tF
bmQoIlNlcnZpY2VTZWFyY2hBdXRvQ29tcGxldGUiKSAlXQoK
IyAtLQojIEFnZW50Q3VzdG9tZXJDb21wYW55U2VhcmNoLnR0IC0gcHJvdmlkZXMgYXV0b2NvbXBs
ZXRlIGZlYXR1cmUgZm9yIGN1c3RvbWVyIGNvbXBhbnkgc2VhcmNoCiMgQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0
dGVuL2VkaXRlZCBieToKIyAqIEZyYW5rKGRvdClPYmVyZW5kZXIoYXQpY2FwZShkYXNoKWl0KGRv
dClkZQojICogTWFydGluKGRvdClCYWx6YXJlayhhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBN
YXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IEFn
ZW50Q3VzdG9tZXJDb21wYW55U2VhcmNoLnR0LHYgMS4yIDIwMTYvMDUvMTggMDc6NDA6NDcgdHRv
IEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJS
QU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxp
Y2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBm
aWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpbJSBS
ZW5kZXJCbG9ja1N0YXJ0KCJDdXN0b21lckNvbXBhbnlTZWFyY2hBdXRvQ29tcGxldGUiKSAlXQpb
JSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuTWlu
UXVlcnlMZW5ndGgnLCAiWyUgRGF0YS5taW5RdWVyeUxlbmd0aCB8IGh0bWwgJV0iKTsKICAgIENv
cmUuQ29uZmlnLlNldCgnQXV0b2NvbXBsZXRlLlF1ZXJ5RGVsYXknLCAiWyUgRGF0YS5xdWVyeURl
bGF5IHwgaHRtbCAlXSIpOwogICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuTWF4UmVz
dWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3VsdHNEaXNwbGF5ZWQgfCBodG1sICVdIik7
CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0ZS5EeW5hbWljV2lkdGgnLCAiWyUgRGF0
YS5keW5hbWljV2lkdGggfCBodG1sICVdIik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21w
bGV0ZS5TZWFyY2hCdXR0b25UZXh0JywgWyUgVHJhbnNsYXRlKCJTZWFyY2ggQ3VzdG9tZXJDb21w
YW55IikgfCBKU09OICVdKTsKLy9dXT48L3NjcmlwdD4KClslIFJlbmRlckJsb2NrU3RhcnQoIkN1
c3RvbWVyQ29tcGFueVNlYXJjaEluaXQiKSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ly88IVtDREFUQVsKICAgIHZhciBGaWVsZElEID0gJ1slIERhdGEuSXRlbUlEIHwgaHRtbCAl
XSc7CiAgICBGaWVsZElEID0gRmllbGRJRC5yZXBsYWNlKC86L2csICdcXDonKTsKICAgIENvcmUu
QWdlbnQuQ3VzdG9tZXJDb21wYW55U2VhcmNoLkluaXQoJCgiIyIrRmllbGRJRCksIFslIERhdGEu
QWN0aXZlQXV0b0NvbXBsZXRlIHwgaHRtbCAlXSk7Ci8vXV0+PC9zY3JpcHQ+ClslIFJlbmRlckJs
b2NrRW5kKCJDdXN0b21lckNvbXBhbnlTZWFyY2hJbml0IikgJV0KClslIEVORCAlXQpbJSBSZW5k
ZXJCbG9ja0VuZCgiQ3VzdG9tZXJDb21wYW55U2VhcmNoQXV0b0NvbXBsZXRlIikgJV0KCg==
IyAtLQojIEFnZW50Q3VzdG9tZXJVc2VyQ29tcGFueVNlYXJjaC50dCAtIHByb3ZpZGVzIGF1dG9j
b21wbGV0ZSBmZWF0dXJlIGZvciBjdXN0b21lciB1c2VyIGNvbXBhbnkgc2VhcmNoCiMgQ29weXJp
Z2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRl
CiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIEZyYW5rKGRvdClPYmVyZW5kZXIoYXQpY2FwZShk
YXNoKWl0KGRvdClkZQojICogTWFydGluKGRvdClCYWx6YXJlayhhdCljYXBlKGRhc2gpaXQoZG90
KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojCiMgLS0K
IyAkSWQ6IEFnZW50Q3VzdG9tZXJVc2VyQ29tcGFueVNlYXJjaC50dCx2IDEuMiAyMDE2LzA1LzE4
IDA3OjQwOjQ3IHR0byBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09M
VVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBD
T1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCBy
ZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4
dC4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ3VzdG9tZXJVc2VyQ29tcGFueVNlYXJjaEF1
dG9Db21wbGV0ZSIpICVdClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLkNvbmZpZy5TZXQo
J0F1dG9jb21wbGV0ZS5NaW5RdWVyeUxlbmd0aCcsICJbJSBEYXRhLm1pblF1ZXJ5TGVuZ3RoIHwg
aHRtbCAlXSIpOwogICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuUXVlcnlEZWxheScs
ICJbJSBEYXRhLnF1ZXJ5RGVsYXkgfCBodG1sICVdIik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1
dG9jb21wbGV0ZS5NYXhSZXN1bHRzRGlzcGxheWVkJywgIlslIERhdGEubWF4UmVzdWx0c0Rpc3Bs
YXllZCB8IGh0bWwgJV0iKTsKICAgIENvcmUuQ29uZmlnLlNldCgnQXV0b2NvbXBsZXRlLkR5bmFt
aWNXaWR0aCcsICJbJSBEYXRhLmR5bmFtaWNXaWR0aCB8IGh0bWwgJV0iKTsKICAgIENvcmUuQ29u
ZmlnLlNldCgnQXV0b2NvbXBsZXRlLlNlYXJjaEJ1dHRvblRleHQnLCBbJSBUcmFuc2xhdGUoIlNl
YXJjaCBDdXN0b21lclVzZXJDb21wYW55IikgfCBKU09OICVdKTsKLy9dXT48L3NjcmlwdD4KClsl
IFJlbmRlckJsb2NrU3RhcnQoIkN1c3RvbWVyVXNlckNvbXBhbnlTZWFyY2hJbml0IikgJV0KPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICB2YXIgRmllbGRJRCA9
ICdbJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV0nOwogICAgRmllbGRJRCA9IEZpZWxkSUQucmVwbGFj
ZSgvOi9nLCAnXFw6Jyk7CiAgICBDb3JlLkFnZW50LkN1c3RvbWVyVXNlckNvbXBhbnlTZWFyY2gu
SW5pdCgkKCIjIitGaWVsZElEKSwgWyUgRGF0YS5BY3RpdmVBdXRvQ29tcGxldGUgfCBodG1sICVd
KTsKLy9dXT48L3NjcmlwdD4KWyUgUmVuZGVyQmxvY2tFbmQoIkN1c3RvbWVyVXNlckNvbXBhbnlT
ZWFyY2hJbml0IikgJV0KClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ3VzdG9tZXJVc2Vy
Q29tcGFueVNlYXJjaEF1dG9Db21wbGV0ZSIpICVdCgo=
IyAtLQojIEFnZW50VXNlclNlYXJjaC50dCAtIHByb3ZpZGVzIGF1dG9jb21wbGV0ZSBmZWF0dXJl
IGZvciB1c2VyIHNlYXJjaAojIGJhc2VkIG9uIEFnZW50SVRTTVVzZXJTZWFyY2guZHRsOiBDb3B5
cmlnaHQgKEMpIDIwMDEtMjAxMCBPVFJTIEFHLCBodHRwOi8vb3Rycy5vcmcvCiMgRXh0ZW5zaW9u
cyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNh
cGUtaXQuZGUKIwojIHdyaXR0ZW4vZWRpdGVkIGJ5OgojICogRnJhbmsoZG90KU9iZXJlbmRlcihh
dCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBNYXJ0aW4oZG90KUJhbHphcmVrKGF0KWNhcGUoZGFz
aClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRl
CiMKIyAtLQojICRJZDogQWdlbnRVc2VyU2VhcmNoLnR0LHYgMS4yIDIwMTYvMDUvMTggMDc6NDA6
NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBO
TyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcg
Zm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUg
dGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0t
CgojIElUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uLWNhcGVJVAojWyUgUmVuZGVyQmxvY2tTdGFy
dCgiVXNlclNlYXJjaEF1dG9Db21wbGV0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkFnZW50
VXNlclNlYXJjaEF1dG9Db21wbGV0ZSIpICVdCiMgRU8gSVRTTS1DSUF0dHJpYnV0ZUNvbGxlY3Rp
b24tY2FwZUlUClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9j
b21wbGV0ZS5NaW5RdWVyeUxlbmd0aCcsICJbJSBEYXRhLm1pblF1ZXJ5TGVuZ3RoIHwgaHRtbCAl
XSIpOwogICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuUXVlcnlEZWxheScsICJbJSBE
YXRhLnF1ZXJ5RGVsYXkgfCBodG1sICVdIik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21w
bGV0ZS5NYXhSZXN1bHRzRGlzcGxheWVkJywgIlslIERhdGEubWF4UmVzdWx0c0Rpc3BsYXllZCB8
IGh0bWwgJV0iKTsKICAgIENvcmUuQ29uZmlnLlNldCgnQXV0b2NvbXBsZXRlLkR5bmFtaWNXaWR0
aCcsICJbJSBEYXRhLmR5bmFtaWNXaWR0aCB8IGh0bWwgJV0iKTsKICAgIENvcmUuQ29uZmlnLlNl
dCgnQXV0b2NvbXBsZXRlLlNlYXJjaEJ1dHRvblRleHQnLCBbJSBUcmFuc2xhdGUoIlNlYXJjaCBB
Z2VudCIpIHwgSlNPTiAlXSk7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0ZS5Hcm91
cHMnLCAiWyUgRGF0YS5ncm91cHMgfCBodG1sICVdIik7Ci8vXV0+PC9zY3JpcHQ+CgojIElUU00t
Q0lBdHRyaWJ1dGVDb2xsZWN0aW9uLWNhcGVJVAojWyUgUmVuZGVyQmxvY2tTdGFydCgiVXNlclNl
YXJjaEluaXQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZ2VudFVzZXJTZWFyY2hJbml0Iikg
JV0KIyBFTyBJVFNNLUNJQXR0cmlidXRlQ29sbGVjdGlvbi1jYXBlSVQKPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCi8qZ2xvYmFsIElUU006IHRydWUgKi8KIyBJVFNN
LUNJQXR0cmlidXRlQ29sbGVjdGlvbi1jYXBlSVQKIyAgICBJVFNNLkFnZW50LlVzZXJTZWFyY2gu
SW5pdCgkKCIjWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIiksIFslIERhdGEuQWN0aXZlQXV0b0Nv
bXBsZXRlIHwgaHRtbCAlXSk7CiAgICB2YXIgRmllbGRJRCA9ICdbJSBEYXRhLkl0ZW1JRCB8IGh0
bWwgJV0nOwogICAgRmllbGRJRCA9IEZpZWxkSUQucmVwbGFjZSgvOi9nLCAnXFw6Jyk7CiAgICBD
b3JlLkFnZW50LlVzZXJTZWFyY2guSW5pdCgkKCIjIitGaWVsZElEKSwgWyUgRGF0YS5BY3RpdmVB
dXRvQ29tcGxldGUgfCBodG1sICVdKTsKIyBFTyBJVFNNLUNJQXR0cmlidXRlQ29sbGVjdGlvbi1j
YXBlSVQKLy9dXT48L3NjcmlwdD4KIyBJVFNNLUNJQXR0cmlidXRlQ29sbGVjdGlvbi1jYXBlSVQK
I1slIFJlbmRlckJsb2NrRW5kKCJVc2VyU2VhcmNoSW5pdCIpICVdClslIFJlbmRlckJsb2NrRW5k
KCJBZ2VudFVzZXJTZWFyY2hJbml0IikgJV0KIyBFTyBJVFNNLUNJQXR0cmlidXRlQ29sbGVjdGlv
bi1jYXBlSVQKClslIEVORCAlXQojIElUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uLWNhcGVJVAoj
WyUgUmVuZGVyQmxvY2tFbmQoIlVzZXJTZWFyY2hBdXRvQ29tcGxldGUiKSAlXQpbJSBSZW5kZXJC
bG9ja0VuZCgiQWdlbnRVc2VyU2VhcmNoQXV0b0NvbXBsZXRlIikgJV0KCiNbJSBSZW5kZXJCbG9j
a1N0YXJ0KCJVc2VyU2VhcmNoSVRTTVNlYXJjaEF1dG9jb21wbGV0ZSIpICVdCiM8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKIyAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1
dG9jb21wbGV0ZS5BY3RpdmUnLCAiWyUgRGF0YS5hY3RpdmUgfCBodG1sICVdIik7CiMgICAgQ29y
ZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuUXVlcnlEZWxheScsICJbJSBEYXRhLnF1ZXJ5RGVs
YXkgfCBodG1sICVdIik7CiMgICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuTWF4UmVz
dWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3VsdHNEaXNwbGF5ZWQgfCBodG1sICVdIik7
CiMgICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuTWluUXVlcnlMZW5ndGgnLCAiWyUg
RGF0YS5taW5RdWVyeUxlbmd0aCB8IGh0bWwgJV0iKTsKIyAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1
dG9jb21wbGV0ZS5EeW5hbWljV2lkdGgnLCAiWyUgRGF0YS5keW5hbWljV2lkdGggfCBodG1sICVd
Iik7CiMgICAgQ29yZS5Db25maWcuU2V0KCdBdXRvY29tcGxldGUuU2VhcmNoQnV0dG9uVGV4dCcs
IFslIFRyYW5zbGF0ZSgiU2VhcmNoIEFnZW50IikgfCBKU09OICVdKTsKIy8vXV0+PC9zY3JpcHQ+
CiNbJSBSZW5kZXJCbG9ja0VuZCgiVXNlclNlYXJjaElUU01TZWFyY2hBdXRvY29tcGxldGUiKSAl
XQojIEVPIElUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uLWNhcGVJVAo=
IyAtLQojIEFnZW50SVRTTUNJVGlja2V0U2VhcmNoLnR0IC0gcHJvdmlkZXMgYXV0b2NvbXBsZXRl
IGZlYXR1cmUgZm9yIHF1ZXVlIHNlYXJjaAojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5w
LmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6
CiMgKiBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcnRp
bihkb3QpQmFsemFyZWsoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogVG9yc3Rlbihkb3QpVGhh
dShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShk
YXNoKWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IEFnZW50SVRTTUNJVGlja2V0U2VhcmNoLnR0LHYg
MS4yIDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNv
bWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBl
bmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5
b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xp
Y2Vuc2VzL2FncGwudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJVFNNQ0lUaWNrZXRT
ZWFyY2hBdXRvQ29tcGxldGUiKSAlXQpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVd
CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5Db25m
aWcuU2V0KCdBdXRvY29tcGxldGUuTWluUXVlcnlMZW5ndGgnLCAiWyUgRGF0YS5taW5RdWVyeUxl
bmd0aCB8IGh0bWwgJV0iKTsKICAgIENvcmUuQ29uZmlnLlNldCgnQXV0b2NvbXBsZXRlLlF1ZXJ5
RGVsYXknLCAiWyUgRGF0YS5xdWVyeURlbGF5IHwgaHRtbCAlXSIpOwogICAgQ29yZS5Db25maWcu
U2V0KCdBdXRvY29tcGxldGUuTWF4UmVzdWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3Vs
dHNEaXNwbGF5ZWQgfCBodG1sICVdIik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0
ZS5EeW5hbWljV2lkdGgnLCAiWyUgRGF0YS5keW5hbWljV2lkdGggfCBodG1sICVdIik7CiAgICBD
b3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0ZS5TZWFyY2hCdXR0b25UZXh0JywgWyUgVHJhbnNs
YXRlKCJTZWFyY2ggSVRTTUNJVGlja2V0IikgfCBKU09OICVdKTsKLy9dXT48L3NjcmlwdD4KClsl
IFJlbmRlckJsb2NrU3RhcnQoIklUU01DSVRpY2tldFNlYXJjaEluaXQiKSAlXQo8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgIHZhciBGaWVsZElEID0gJ1slIERh
dGEuSXRlbUlEIHwgaHRtbCAlXSc7CiAgICBGaWVsZElEID0gRmllbGRJRC5yZXBsYWNlKC86L2cs
ICdcXDonKTsKICAgIENvcmUuQWdlbnQuSVRTTUNJVGlja2V0U2VhcmNoLkluaXQoJCgiIyIrRmll
bGRJRCksIFslIERhdGEuQWN0aXZlQXV0b0NvbXBsZXRlIHwgaHRtbCAlXSk7Ci8vXV0+PC9zY3Jp
cHQ+ClslIFJlbmRlckJsb2NrRW5kKCJJVFNNQ0lUaWNrZXRTZWFyY2hJbml0IikgJV0KClslIEVO
RCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiSVRTTUNJVGlja2V0U2VhcmNoQXV0b0NvbXBsZXRlIikg
JV0KCg==
IyAtLQojIEFnZW50U0xBU2VhcmNoLnR0IC0gcHJvdmlkZXMgYXV0b2NvbXBsZXRlIGZlYXR1cmUg
Zm9yIHNlcnZpY2Ugc2VhcmNoCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQg
R21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIEFu
bmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxs
aW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IEFnZW50U0xBU2VhcmNo
LnR0LHYgMS4yIDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3
YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQoj
IHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwp
LiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUu
b3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTTEFTZWFy
Y2hBdXRvQ29tcGxldGUiKSAlXQpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgQ29yZS5Db25maWcu
U2V0KCdBdXRvY29tcGxldGUuTWluUXVlcnlMZW5ndGgnLCAiWyUgRGF0YS5taW5RdWVyeUxlbmd0
aCB8IGh0bWwgJV0iKTsKICAgIENvcmUuQ29uZmlnLlNldCgnQXV0b2NvbXBsZXRlLlF1ZXJ5RGVs
YXknLCAiWyUgRGF0YS5xdWVyeURlbGF5IHwgaHRtbCAlXSIpOwogICAgQ29yZS5Db25maWcuU2V0
KCdBdXRvY29tcGxldGUuTWF4UmVzdWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3VsdHNE
aXNwbGF5ZWQgfCBodG1sICVdIik7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0ZS5E
eW5hbWljV2lkdGgnLCAiWyUgRGF0YS5keW5hbWljV2lkdGggfCBodG1sICVdIik7CiAgICBDb3Jl
LkNvbmZpZy5TZXQoJ0F1dG9jb21wbGV0ZS5TZWFyY2hCdXR0b25UZXh0JywgWyUgVHJhbnNsYXRl
KCJTZWFyY2ggU0xBIikgfCBKU09OICVdKTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJl
bmRlckJsb2NrRW5kKCJTTEFTZWFyY2hBdXRvQ29tcGxldGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tT
dGFydCgiU0xBU2VhcmNoSW5pdEF1dG9Db21wbGV0ZSIpICVdClslIFdSQVBQRVIgSlNPbkRvY3Vt
ZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFb
CgogICAgdmFyIEZpZWxkSUQgPSAnWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdJywKCiAgICAvLyBn
ZXQgZGVmaW5pdGlvbiBkYXRhCiAgICBSZWZlcmVuY2VkU2VydmljZUF0dHJLZXkgPSAiWyUgRGF0
YS5SZWZlcmVuY2VkU2VydmljZUF0dHJLZXkgfCBodG1sICVdIiwKICAgIFJlZmVyZW5jZWRDdXN0
b21lckxvZ2luID0gIlslIERhdGEuUmVmZXJlbmNlZEN1c3RvbWVyTG9naW4gfCBodG1sICVdIiwK
ICAgIFJlZmVyZW5jZWRDdXN0b21lckNvbXBhbnkgPSAiWyUgRGF0YS5SZWZlcmVuY2VkQ3VzdG9t
ZXJDb21wYW55IHwgaHRtbCAlXSI7CgogICAgLy8gZmlyc3Qgc2V0IGFsbCBkYXRhIHRvIE5PTkUK
ICAgIHZhciBTZXJ2aWNlRGF0YSA9ICdOT05FJywgQ3VzdG9tZXJMb2dpbkRhdGEgPSAnTk9ORScs
IEN1c3RvbWVyQ29tcGFueURhdGEgPSAnTk9ORSc7CgogICAgLy8gdGhlbiBnZXQgcmVsZXZhbnQg
ZGF0YSBmcm9tIHRoZSBmb3JtCiAgICB2YXIgJFBhcmVudEF0dHJpYnV0ZURpdiA9ICAkKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKEZpZWxkSUQpKS5wYXJlbnQoJ2Rpdi5TdWJFbGVtZW50JykucGFy
ZW50KCk7CiAgICB2YXIgJFBhcmVudEF0dHJpYnV0ZURpdiA9ICAkKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKEZpZWxkSUQpKS5wYXJlbnQoJ2Rpdi5TdWJFbGVtZW50JykucGFyZW50KCk7CiAgICBG
aWVsZElEID0gRmllbGRJRC5yZXBsYWNlKC86L2csICdcXDonKTsKCiAgICBpZiAoUmVmZXJlbmNl
ZFNlcnZpY2VBdHRyS2V5Lmxlbmd0aCl7CiAgICAgICAgU2VydmljZURhdGEgPSAnJzsKICAgICAg
ICAvLyBnZXQgU2VydmljZURhdGEgZnJvbSBwYXJlbnQgZWxlbWVudAogICAgICAgIHZhciBQYXJl
bnRBdHRySW5wdXRGaWVkSUQgPSAkUGFyZW50QXR0cmlidXRlRGl2LmNoaWxkcmVuKCdkaXYuRmll
bGQnKS5maWx0ZXIoIjpmaXJzdCIpLmNoaWxkcmVuKCJpbnB1dFtuYW1lXj0nWyUgRGF0YS5SZWZl
cmVuY2VkU2VydmljZUF0dHJLZXkgfCBodG1sICVdOjonXSIpLmZpbHRlcigiOmZpcnN0IikucHJv
cCgnaWQnKTsKICAgICAgICBpZiAoJCgnIycgKyBQYXJlbnRBdHRySW5wdXRGaWVkSUQpLmxlbmd0
aCl7CiAgICAgICAgICAgIHZhciBTZXJ2aWNlSUQgPSAkKCcjJyArIFBhcmVudEF0dHJJbnB1dEZp
ZWRJRCkudmFsKCk7CiAgICAgICAgICAgIFNlcnZpY2VEYXRhID0gU2VydmljZUlEOwogICAgICAg
ICAgICAkKCIjIitGaWVsZElEKydTZXJ2aWNlRGF0YScpLnZhbChTZXJ2aWNlSUQpOwogICAgICAg
IH0KICAgICAgICAvLyBnZXQgU2VydmljZURhdGEgZnJvbSByZWxldmFudCBmaWVsZChzKQogICAg
ICAgIGVsc2V7CiAgICAgICAgICAgJCgiaW5wdXRbbmFtZV49J1slIERhdGEuUmVmZXJlbmNlZFNl
cnZpY2VBdHRyS2V5IHwgaHRtbCAlXTo6J10iKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAg
ICAgIGlmICgkKHRoaXMpLnByb3AoJ25hbWUnKS5tYXRjaCgvXlslIERhdGEuUmVmZXJlbmNlZFNl
cnZpY2VBdHRyS2V5IHwgaHRtbCAlXTo6XGQqJC8pICl7CiAgICAgICAgICAgICAgICAgICAvLyBh
bGVydCgnVVJBISEhJyArICQodGhpcykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgIGlmICgk
KHRoaXMpLnZhbCgpKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNlcnZpY2VEYXRhLmxl
bmd0aCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlRGF0YSA9IFNlcnZpY2VE
YXRhICsgJzsnICsgJCh0aGlzKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNl
cnZpY2VEYXRhID0gJCh0aGlzKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0pOwogICAgICAg
ICAgICQoIiMiK0ZpZWxkSUQrJ1NlcnZpY2VEYXRhJykudmFsKFNlcnZpY2VEYXRhKTsKICAgICAg
ICB9CiAgICB9CiAgICBpZiAoUmVmZXJlbmNlZEN1c3RvbWVyTG9naW4ubGVuZ3RoKXsKICAgICAg
ICAvLyBnZXQgQ3VzdG9tZXJMb2dpbkRhdGEKICAgICAgICBDdXN0b21lckxvZ2luRGF0YSA9ICcn
OwogICAgICAgICQoImlucHV0W25hbWVePSdbJSBEYXRhLlJlZmVyZW5jZWRDdXN0b21lckxvZ2lu
IHwgaHRtbCAlXTo6J10iKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgaWYgKCQodGhpcyku
cHJvcCgnbmFtZScpLm1hdGNoKC9eWyUgRGF0YS5SZWZlcmVuY2VkQ3VzdG9tZXJMb2dpbiB8IGh0
bWwgJV06OlxkKiQvKSApewogICAgICAgICAgICAgICAgaWYgKCQodGhpcykudmFsKCkpewogICAg
ICAgICAgICAgICAgICAgIGlmIChDdXN0b21lckxvZ2luRGF0YS5sZW5ndGgpewogICAgICAgICAg
ICAgICAgICAgICAgICBDdXN0b21lckxvZ2luRGF0YSA9IEN1c3RvbWVyTG9naW5EYXRhICsgJzsn
ICsgJCh0aGlzKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyTG9naW5EYXRhID0gJCh0
aGlzKS52YWwoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgfQogICAgICAgIH0pOwogICAgICAgICQoIiMiK0ZpZWxkSUQrJ0N1c3RvbWVyTG9naW4n
KS52YWwoQ3VzdG9tZXJMb2dpbkRhdGEpOwogICAgfQogICAgaWYgKFJlZmVyZW5jZWRDdXN0b21l
ckNvbXBhbnkubGVuZ3RoKXsKICAgICAgICAvLyBnZXQgUmVmZXJlbmNlZEN1c3RvbWVyQ29tcGFu
eQogICAgICAgIEN1c3RvbWVyQ29tcGFueURhdGEgPSAnJzsKICAgICAgICAkKCJpbnB1dFtuYW1l
Xj0nWyUgRGF0YS5SZWZlcmVuY2VkQ3VzdG9tZXJDb21wYW55IHwgaHRtbCAlXTo6J10iKS5lYWNo
KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgaWYgKCQodGhpcykucHJvcCgnbmFtZScpLm1hdGNoKC9e
WyUgRGF0YS5SZWZlcmVuY2VkQ3VzdG9tZXJDb21wYW55IHwgaHRtbCAlXTo6XGQqJC8pICl7CiAg
ICAgICAgICAgICAgICBpZiAoJCh0aGlzKS52YWwoKSl7CiAgICAgICAgICAgICAgICAgICAgaWYg
KEN1c3RvbWVyQ29tcGFueURhdGEubGVuZ3RoKXsKICAgICAgICAgICAgICAgICAgICAgICAgQ3Vz
dG9tZXJDb21wYW55RGF0YSA9IEN1c3RvbWVyQ29tcGFueURhdGEgKyAnOycgKyAkKHRoaXMpLnZh
bCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJDb21wYW55RGF0YSA9ICQodGhpcykudmFsKCk7
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAg
ICAgICB9KTsKICAgICAgICAkKCIjIitGaWVsZElEKydDdXN0b21lckNvbXBhbnlEYXRhJykudmFs
KEN1c3RvbWVyQ29tcGFueURhdGEpOwogICAgfQogICAgQ29yZS5BZ2VudC5TTEFTZWFyY2guSW5p
dCgkKCIjIitGaWVsZElEKSwgWyUgRGF0YS5BY3RpdmVBdXRvQ29tcGxldGUgfCBodG1sICVdLCBT
ZXJ2aWNlRGF0YSwgQ3VzdG9tZXJMb2dpbkRhdGEsIEN1c3RvbWVyQ29tcGFueURhdGEpOwovL11d
Pjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNMQVNlYXJjaEluaXRBdXRv
Q29tcGxldGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU0xBU2VhcmNoSW5pdE5vQXV0b0Nv
bXBsZXRlIikgJV0KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKCiAgICB2YXIgRmllbGRJRCA9ICdbJSBE
YXRhLkl0ZW1JRCB8IGh0bWwgJV0nLAoKICAgIC8vIGdldCBkZWZpbml0aW9uIGRhdGEKICAgIFJl
ZmVyZW5jZWRTZXJ2aWNlQXR0cktleSA9ICJbJSBEYXRhLlJlZmVyZW5jZWRTZXJ2aWNlQXR0cktl
eSB8IGh0bWwgJV0iLAogICAgUmVmZXJlbmNlZEN1c3RvbWVyTG9naW4gPSAiWyUgRGF0YS5SZWZl
cmVuY2VkQ3VzdG9tZXJMb2dpbiB8IGh0bWwgJV0iLAogICAgUmVmZXJlbmNlZEN1c3RvbWVyQ29t
cGFueSA9ICJbJSBEYXRhLlJlZmVyZW5jZWRDdXN0b21lckNvbXBhbnkgfCBodG1sICVdIjsKCiAg
ICAvLyBmaXJzdCBzZXQgYWxsIGRhdGEgdG8gTk9ORQogICAgdmFyIFNlcnZpY2VEYXRhID0gJ05P
TkUnLCBDdXN0b21lckxvZ2luRGF0YSA9ICdOT05FJywgQ3VzdG9tZXJDb21wYW55RGF0YSA9ICdO
T05FJzsKCiAgICAvLyB0aGVuIGdldCByZWxldmFudCBkYXRhIGZyb20gdGhlIGZvcm0KICAgIHZh
ciAkUGFyZW50QXR0cmlidXRlRGl2ID0gICQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRmllbGRJ
RCkpLnBhcmVudCgnZGl2LlN1YkVsZW1lbnQnKS5wYXJlbnQoKTsKICAgIHZhciAkUGFyZW50QXR0
cmlidXRlRGl2ID0gICQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRmllbGRJRCkpLnBhcmVudCgn
ZGl2LlN1YkVsZW1lbnQnKS5wYXJlbnQoKTsKICAgIEZpZWxkSUQgPSBGaWVsZElELnJlcGxhY2Uo
LzovZywgJ1xcOicpOwoKICAgIGlmIChSZWZlcmVuY2VkU2VydmljZUF0dHJLZXkubGVuZ3RoKXsK
ICAgICAgICBTZXJ2aWNlRGF0YSA9ICcnOwoKICAgICAgICAvLyBnZXQgU2VydmljZURhdGEgZnJv
bSBwYXJlbnQgZWxlbWVudAogICAgICAgIHZhciBQYXJlbnRBdHRySW5wdXRGaWVkSUQgPSAkUGFy
ZW50QXR0cmlidXRlRGl2LmNoaWxkcmVuKCdkaXYuRmllbGQnKS5maWx0ZXIoIjpmaXJzdCIpLmNo
aWxkcmVuKCJpbnB1dFtuYW1lXj0nWyUgRGF0YS5SZWZlcmVuY2VkU2VydmljZUF0dHJLZXkgfCBo
dG1sICVdOjonXSIpLmZpbHRlcigiOmZpcnN0IikucHJvcCgnaWQnKTsKICAgICAgICBpZiAoJCgn
IycgKyBQYXJlbnRBdHRySW5wdXRGaWVkSUQpLmxlbmd0aCl7CiAgICAgICAgICAgIHZhciBTZXJ2
aWNlSUQgPSAkKCcjJyArIFBhcmVudEF0dHJJbnB1dEZpZWRJRCkudmFsKCk7CiAgICAgICAgICAg
IFNlcnZpY2VEYXRhID0gU2VydmljZUlEOwogICAgICAgICAgICAkKCIjIitGaWVsZElEKydTZXJ2
aWNlRGF0YScpLnZhbChTZXJ2aWNlSUQpOwogICAgICAgIH0KICAgICAgICAvLyBnZXQgU2Vydmlj
ZURhdGEgZnJvbSByZWxldmFudCBmaWVsZChzKQogICAgICAgIGVsc2V7CiAgICAgICAgICAgJCgi
aW5wdXRbbmFtZV49J1slIERhdGEuUmVmZXJlbmNlZFNlcnZpY2VBdHRyS2V5IHwgaHRtbCAlXTo6
J10iKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ25h
bWUnKS5tYXRjaCgvXlslIERhdGEuUmVmZXJlbmNlZFNlcnZpY2VBdHRyS2V5IHwgaHRtbCAlXTo6
XGQqJC8pICl7CiAgICAgICAgICAgICAgICAgICAvLyBhbGVydCgnVVJBISEhJyArICQodGhpcyku
dmFsKCkpOwogICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnZhbCgpKXsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKFNlcnZpY2VEYXRhLmxlbmd0aCl7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXJ2aWNlRGF0YSA9IFNlcnZpY2VEYXRhICsgJzsnICsgJCh0aGlzKS52YWwo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VEYXRhID0gJCh0aGlzKS52YWwo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgfQogICAgICAgICAgIH0pOwogICAgICAgICAgICQoIiMiK0ZpZWxkSUQrJ1NlcnZp
Y2VEYXRhJykudmFsKFNlcnZpY2VEYXRhKTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoUmVmZXJl
bmNlZEN1c3RvbWVyTG9naW4ubGVuZ3RoKXsKICAgICAgICAvLyBnZXQgQ3VzdG9tZXJMb2dpbkRh
dGEKICAgICAgICBDdXN0b21lckxvZ2luRGF0YSA9ICcnOwogICAgICAgICQoImlucHV0W25hbWVe
PSdbJSBEYXRhLlJlZmVyZW5jZWRDdXN0b21lckxvZ2luIHwgaHRtbCAlXTo6J10iKS5lYWNoKGZ1
bmN0aW9uKCl7CiAgICAgICAgICAgaWYgKCQodGhpcykucHJvcCgnbmFtZScpLm1hdGNoKC9eWyUg
RGF0YS5SZWZlcmVuY2VkQ3VzdG9tZXJMb2dpbiB8IGh0bWwgJV06OlxkKiQvKSApewogICAgICAg
ICAgICAgICAgaWYgKCQodGhpcykudmFsKCkpewogICAgICAgICAgICAgICAgICAgIGlmIChDdXN0
b21lckxvZ2luRGF0YS5sZW5ndGgpewogICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lckxv
Z2luRGF0YSA9IEN1c3RvbWVyTG9naW5EYXRhICsgJzsnICsgJCh0aGlzKS52YWwoKTsKICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIEN1c3RvbWVyTG9naW5EYXRhID0gJCh0aGlzKS52YWwoKTsKICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgIH0pOwogICAg
ICAgICQoIiMiK0ZpZWxkSUQrJ0N1c3RvbWVyTG9naW4nKS52YWwoQ3VzdG9tZXJMb2dpbkRhdGEp
OwogICAgfQogICAgaWYgKFJlZmVyZW5jZWRDdXN0b21lckNvbXBhbnkubGVuZ3RoKXsKICAgICAg
ICAvLyBnZXQgUmVmZXJlbmNlZEN1c3RvbWVyQ29tcGFueQogICAgICAgIEN1c3RvbWVyQ29tcGFu
eURhdGEgPSAnJzsKICAgICAgICAkKCJpbnB1dFtuYW1lXj0nWyUgRGF0YS5SZWZlcmVuY2VkQ3Vz
dG9tZXJDb21wYW55IHwgaHRtbCAlXTo6J10iKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAg
aWYgKCQodGhpcykucHJvcCgnbmFtZScpLm1hdGNoKC9eWyUgRGF0YS5SZWZlcmVuY2VkQ3VzdG9t
ZXJDb21wYW55IHwgaHRtbCAlXTo6XGQqJC8pICl7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlz
KS52YWwoKSl7CiAgICAgICAgICAgICAgICAgICAgaWYgKEN1c3RvbWVyQ29tcGFueURhdGEubGVu
Z3RoKXsKICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJDb21wYW55RGF0YSA9IEN1c3Rv
bWVyQ29tcGFueURhdGEgKyAnOycgKyAkKHRoaXMpLnZhbCgpOwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ3Vz
dG9tZXJDb21wYW55RGF0YSA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICAkKCIjIitG
aWVsZElEKydDdXN0b21lckNvbXBhbnlEYXRhJykudmFsKEN1c3RvbWVyQ29tcGFueURhdGEpOwog
ICAgfQovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNMQVNlYXJj
aEluaXROb0F1dG9Db21wbGV0ZSIpICVdCgo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dENJQUNDdXN0b21l
ckNvbXBhbnkucG0gLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4v
Y2hhbmdlZCBieToKIyAqIFN0ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBU
b3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBGcmFuayhkb3QpT2JlcmVuZGVy
KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZShkYXNoKWl0
KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAq
IEZyYW5rKGRvdClKYWNxdWVtaW4oYXQpY2FwZS1pdChkb3QpZGUKIwojIC0tCiMgJElkOiBMYXlv
dXRDSUFDQ3VzdG9tZXJDb21wYW55LnBtLHYgMS4zIDIwMTYvMDUvMjcgMTM6MjM6MDYgZmphY3F1
ZW1pbiBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZv
ciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoK
cGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dENJQUND
dXN0b21lckNvbXBhbnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERl
cGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFn
ZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0
ZW06OkN1c3RvbWVyQ29tcGFueScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2Vy
bmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1
dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXRDdXN0b21lckNvbXBhbnkgLSBsYXlvdXQgYmFj
a2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgQ0lB
Q0N1c3RvbWVyQ29tcGFueSBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3Jl
YXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAg
IGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygp
OwogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1
dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXRDSUFDQ3VzdG9tZXJDb21wYW55Jyk7Cgo9Y3V0
CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0
ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxm
LCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSAgICAgICAgICA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fSAg
ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyk7CiAgICAkU2VsZi0+
e0xheW91dE9iamVjdH0gICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1
dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0N1c3RvbWVyQ29tcGFueU9iamVjdH0gPSAk
S2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55Jyk7CiAgICAk
U2VsZi0+e0xvZ09iamVjdH0gICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6TG9nJyk7CiAgICAkU2VsZi0+e1BhcmFtT2JqZWN0fSAgICAgICAgICAgPSAkS2Vy
bmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgcmV0dXJu
ICRTZWxmOwp9Cgo9aXRlbSBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJp
bmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAog
ICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIg
T3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAg
IyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgJFBhcmFte1ZhbHVlfSA9ICRTZWxmLT57TGF5
b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ID0+ICRQYXJhbXtWYWx1ZX0gfHwg
JycsCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRQYXJh
bXtWYWx1ZX07Cn0KCj1pdGVtIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCBy
ZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFH
ZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJ
dGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAl
UGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3Vt
ZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsK
ICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlv
cml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3Vt
ZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0K
CiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgc2VsZWN0ZWQgQ3VzdG9tZXJDb21wYW55CiAg
ICAkRm9ybURhdGF7VmFsdWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJh
bSA9PiAkUGFyYW17S2V5fSApOwoKICAgICMgY2hlY2sgc2VhcmNoIGJ1dHRvbgogICAgaWYgKCAk
U2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6
QnV0dG9uU2VhcmNoJyApICkgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJh
bXtLZXl9IH0tPntTZWFyY2h9CiAgICAgICAgICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdl
dFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcgKTsKICAgIH0KCiAgICAj
IGNoZWNrIHNlbGVjdCBidXR0b24KICAgIGVsc2lmICggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdl
dFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkJ1dHRvblNlbGVjdCcgKSApIHsKICAg
ICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQ
YXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlbGVjdCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIGNs
ZWFyIGJ1dHRvbgogICAgZWxzaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBh
cmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7CiAgICAgICAgJEZvcm1E
YXRhe1ZhbHVlfSA9ICcnOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgcmVzZXQgdmFsdWUg
aWYgc2VhcmNoIGZpZWxkIGlzIGVtdHkKICAgICAgICBpZiAoCiAgICAgICAgICAgICEkU2VsZi0+
e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNo
JyApCiAgICAgICAgICAgICYmIGRlZmluZWQgJEZvcm1EYXRhe1ZhbHVlfQogICAgICAgICAgICAp
CiAgICAgICAgewogICAgICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJyc7CiAgICAgICAgfQoK
ICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIG9wdGlvbgogICAgICAgIGlmICggJFBhcmFte0l0ZW19
LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICAg
ICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwog
ICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICBy
ZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWl0ZW0gSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQg
c3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAg
ICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAg
ICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3Vi
IElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVj
ayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAg
ICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09i
amVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAg
ICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICcnOwogICAg
aWYgKCBkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1Zh
bHVlfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZh
dWx0fSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURl
ZmF1bHR9OwogICAgfQogICAgbXkgJFNpemUgICAgICAgICA9ICRQYXJhbXtJdGVtfS0+e0lucHV0
fS0+e1NpemV9IHx8IDUwOwogICAgbXkgJFNlYXJjaCAgICAgICA9ICcnOwogICAgbXkgJFN0cmlu
Z09wdGlvbiA9ICcnOwogICAgbXkgJFN0cmluZ1NlbGVjdCA9ICcnOwogICAgbXkgJENsYXNzICAg
ICAgICA9ICdXNTBwYyBDdXN0b21lckNvbXBhbnlTZWFyY2gnOwogICAgbXkgJFJlcXVpcmVkICAg
ICA9ICRQYXJhbXtSZXF1aXJlZH0gfHwgJyc7CiAgICBteSAkSW52YWxpZCAgICAgID0gJFBhcmFt
e0ludmFsaWR9IHx8ICcnOwogICAgbXkgJEl0ZW1JZCAgICAgICA9ICRQYXJhbXtJdGVtSWR9IHx8
ICcnOwoKICAgIGlmICgkUmVxdWlyZWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBWYWxpZGF0ZV9S
ZXF1aXJlZCc7CiAgICB9CgogICAgaWYgKCRJbnZhbGlkKSB7CiAgICAgICAgJENsYXNzIC49ICcg
U2VydmVyRXJyb3InOwogICAgfQoKICAgICMgQ3VzdG9tZXJDb21wYW55IHNlYXJjaAogICAgaWYg
KCAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57U2VhcmNofSApIHsKICAg
ICAgICBteSBAU2VhcmNoQXJyYXkgPSBzcGxpdCggJyAnLCAkUGFyYW17SXRlbX0tPntGb3JtfS0+
eyAkUGFyYW17S2V5fSB9LT57U2VhcmNofSApOwogICAgICAgIG15ICRTZWFyY2hTdHJpbmcgPSBq
b2luKCAnKycsIEBTZWFyY2hBcnJheSApOwoKICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAg
IG15ICVDdXN0b21lckNvbXBhbnlTZWFyY2hMaXN0ID0gJFNlbGYtPntDdXN0b21lckNvbXBhbnlP
YmplY3R9LT5DdXN0b21lckNvbXBhbnlMaXN0KAogICAgICAgICAgICBTZWFyY2ggPT4gJyonIC4g
JFNlYXJjaFN0cmluZyAuICcqJywKICAgICAgICApOwoKICAgICAgICBpZiAoICVDdXN0b21lckNv
bXBhbnlTZWFyY2hMaXN0ICYmIHNjYWxhcigga2V5cyAlQ3VzdG9tZXJDb21wYW55U2VhcmNoTGlz
dCApID4gMSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIG9wdGlvbiBsaXN0CiAgICAgICAgICAg
ICRTdHJpbmdPcHRpb24gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAog
ICAgICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17S2V5fSAuICc6OlNlbGVjdCcsCiAgICAgICAg
ICAgICAgICBEYXRhID0+IFwlQ3VzdG9tZXJDb21wYW55U2VhcmNoTGlzdCwKICAgICAgICAgICAg
KTsKICAgICAgICAgICAgJFN0cmluZ09wdGlvbiAuPSAnPGJyPic7CgogICAgICAgICAgICAjIGNy
ZWF0ZSBzZWxlY3QgYnV0dG9uCiAgICAgICAgICAgICRTdHJpbmdTZWxlY3QgPSAnPGlucHV0IGNs
YXNzPSJidXR0b24iIHR5cGU9InN1Ym1pdCIgbmFtZT0iJwogICAgICAgICAgICAgICAgLiAkUGFy
YW17S2V5fQogICAgICAgICAgICAgICAgLiAnOjpCdXR0b25TZWxlY3QiICcKICAgICAgICAgICAg
ICAgIC4gJ3ZhbHVlPSInCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9
LT5UcmFuc2xhdGUoICJTZWxlY3QiICkKICAgICAgICAgICAgICAgIC4gJyI+Jm5ic3A7JzsKCiAg
ICAgICAgICAgICMgc2V0IHNlYXJjaAogICAgICAgICAgICAkU2VhcmNoID0gJFBhcmFte0l0ZW19
LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH07CiAgICAgICAgfQogICAgICAgIGVs
c2lmICglQ3VzdG9tZXJDb21wYW55U2VhcmNoTGlzdCkgewoKICAgICAgICAgICAgIyBnZXQgQ3Vz
dG9tZXJDb21wYW55IGRhdGEKICAgICAgICAgICAgJFZhbHVlID0gKCBrZXlzICVDdXN0b21lckNv
bXBhbnlTZWFyY2hMaXN0IClbMF07CiAgICAgICAgICAgIG15ICVDdXN0b21lckNvbXBhbnlTZWFy
Y2hMaXN0ID0gJFNlbGYtPntDdXN0b21lckNvbXBhbnlPYmplY3R9LT5DdXN0b21lckNvbXBhbnlH
ZXQoCiAgICAgICAgICAgICAgICBDdXN0b21lcklEID0+ICRWYWx1ZSwKICAgICAgICAgICAgKTsK
CiAgICAgICAgICAgIG15ICRDdXN0Q29tcGFueU1hcFJlZiA9ICRTZWxmLT57Q29uZmlnT2JqZWN0
fS0+R2V0KCdJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uOjpDb21wYW55QmFja2VuZE1hcHBpbmcn
KTsKCiAgICAgICAgICAgIGlmICggJEN1c3RDb21wYW55TWFwUmVmICYmIHJlZigkQ3VzdENvbXBh
bnlNYXBSZWYpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJE1hcHBpbmdG
aWVsZCAoIHNvcnQoIGtleXMoICV7JEN1c3RDb21wYW55TWFwUmVmfSApICkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgaWYgKCAkQ3VzdG9tZXJDb21wYW55U2VhcmNoTGlzdHsgJEN1c3RDb21wYW55
TWFwUmVmLT57JE1hcHBpbmdGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNl
YXJjaCAuPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJEN1c3RvbWVyQ29tcGFu
eVNlYXJjaExpc3R7ICRDdXN0Q29tcGFueU1hcFJlZi0+eyRNYXBwaW5nRmllbGR9IH07CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgJFNlYXJjaCA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICRTZWFyY2ggPX4gcy9eXHMr
Ly9nOwoKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgQ3VzdG9tZXJDb21wYW55IHN0cmlu
ZwogICAgZWxzaWYgKCRWYWx1ZSkgewoKICAgICAgICAjIGdldCBDdXN0b21lckNvbXBhbnkgZGF0
YQogICAgICAgIG15ICVDdXN0b21lckNvbXBhbnlTZWFyY2hMaXN0ID0gJFNlbGYtPntDdXN0b21l
ckNvbXBhbnlPYmplY3R9LT5DdXN0b21lckNvbXBhbnlHZXQoCiAgICAgICAgICAgIEN1c3RvbWVy
SUQgPT4gJFZhbHVlLAogICAgICAgICk7CgogICAgICAgIG15ICRDdXN0Q29tcGFueU1hcFJlZiA9
CiAgICAgICAgICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdJVFNNQ0lBdHRyaWJ1dGVD
b2xsZWN0aW9uOjpDb21wYW55QmFja2VuZE1hcHBpbmcnKTsKCiAgICAgICAgaWYgKCAkQ3VzdENv
bXBhbnlNYXBSZWYgJiYgcmVmKCRDdXN0Q29tcGFueU1hcFJlZikgZXEgJ0hBU0gnICkgewoKICAg
ICAgICAgICAgZm9yIG15ICRNYXBwaW5nRmllbGQgKCBzb3J0KCBrZXlzKCAleyRDdXN0Q29tcGFu
eU1hcFJlZn0gKSApICkgewogICAgICAgICAgICAgICAgaWYgKCAkQ3VzdG9tZXJDb21wYW55U2Vh
cmNoTGlzdHsgJEN1c3RDb21wYW55TWFwUmVmLT57JE1hcHBpbmdGaWVsZH0gfSApIHsKICAgICAg
ICAgICAgICAgICAgICAkU2VhcmNoIC49ICcgJwogICAgICAgICAgICAgICAgICAgICAgICAuICRD
dXN0b21lckNvbXBhbnlTZWFyY2hMaXN0eyAkQ3VzdENvbXBhbnlNYXBSZWYtPnskTWFwcGluZ0Zp
ZWxkfSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAg
ICAgJFNlYXJjaCA9fiBzL1xzKyQvL2c7CiAgICAgICAgJFNlYXJjaCA9fiBzL15ccysvL2c7Cgog
ICAgfQoKICAgICMgQXV0b0NvbXBsZXRlIENJQ2xhc3MKICAgIG15ICRBdXRvQ29tcGxldGVDb25m
aWcgPSAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlv
bjo6RnJvbnRlbmQ6OkNvbW1vblNlYXJjaEF1dG9Db21wbGV0ZScpOwoKICAgICNjcmVhdGUgc3Ry
aW5nLi4uCiAgICBteSAkU3RyaW5nID0gJyc7CiAgICBpZiAoCiAgICAgICAgJEF1dG9Db21wbGV0
ZUNvbmZpZwogICAgICAgICYmIHJlZigkQXV0b0NvbXBsZXRlQ29uZmlnKSBlcSAnSEFTSCcKICAg
ICAgICAmJiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57QWN0aXZlfQogICAgICAgICkKICAgIHsKCiAg
ICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAn
Q3VzdG9tZXJDb21wYW55U2VhcmNoQXV0b0NvbXBsZXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7
CiAgICAgICAgICAgICAgICBtaW5RdWVyeUxlbmd0aCAgICAgID0+ICRBdXRvQ29tcGxldGVDb25m
aWctPntNaW5RdWVyeUxlbmd0aH0gICAgICB8fCAyLAogICAgICAgICAgICAgICAgcXVlcnlEZWxh
eSAgICAgICAgICA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57UXVlcnlEZWxheX0gICAgICAgICAg
fHwgMC4xLAogICAgICAgICAgICAgICAgdHlwZUFoZWFkICAgICAgICAgICA9PiAkQXV0b0NvbXBs
ZXRlQ29uZmlnLT57VHlwZUFoZWFkfSAgICAgICAgICAgfHwgJ2ZhbHNlJywKICAgICAgICAgICAg
ICAgIG1heFJlc3VsdHNEaXNwbGF5ZWQgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e01heFJlc3Vs
dHNEaXNwbGF5ZWR9IHx8IDIwLAogICAgICAgICAgICAgICAgZHluYW1pY1dpZHRoICAgICAgICA9
PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57RHluYW1pY1dpZHRofSAgICAgICAgfHwgMSwKICAgICAg
ICAgICAgfSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2so
CiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyQ29tcGFueVNlYXJjaEluaXQnLAogICAgICAg
ICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgICAgICA9PiAkSXRl
bUlkLAogICAgICAgICAgICAgICAgQWN0aXZlQXV0b0NvbXBsZXRlID0+ICd0cnVlJywKICAgICAg
ICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICAkU3RyaW5nID0gJFNlbGYtPntMYXlvdXRP
YmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRDdXN0b21l
ckNvbXBhbnlTZWFyY2gnLAogICAgICAgICk7CiAgICAgICAgJFN0cmluZyAuPSAnPGlucHV0IHR5
cGU9ImhpZGRlbiIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAg
IC4gJyIgdmFsdWU9IicKICAgICAgICAgICAgLiAkVmFsdWUKICAgICAgICAgICAgLiAnIiBpZD0i
JwogICAgICAgICAgICAuICRJdGVtSWQgLiAnU2VsZWN0ZWQnCiAgICAgICAgICAgIC4gJyIvPicK
ICAgICAgICAgICAgLiAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IicKICAgICAgICAgICAgLiAk
UGFyYW17S2V5fQogICAgICAgICAgICAuICc6OlNlYXJjaCIgY2xhc3M9IicKICAgICAgICAgICAg
LiAkQ2xhc3MKICAgICAgICAgICAgLiAnIiBpZD0iJwogICAgICAgICAgICAuICRJdGVtSWQKICAg
ICAgICAgICAgLiAnIiBTZWFyY2hDbGFzcz0iJwogICAgICAgICAgICAuICdDdXN0b21lckNvbXBh
bnlTZWFyY2gnCiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAgICAgLiAkU2VhcmNo
IC4gJyIvPic7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU3RyaW5nCiAgICAgICAgICAgID0g
JzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQog
ICAgICAgICAgICAuICciIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFZhbHVlIC4gJyI+JwogICAg
ICAgICAgICAuICc8aW5wdXQgdHlwZT0iVGV4dCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJh
bXtLZXl9CiAgICAgICAgICAgIC4gJzo6U2VhcmNoIiBzaXplPSInCiAgICAgICAgICAgIC4gJFNp
emUKICAgICAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgICAgICAuICRTZWFyY2ggLiAnIj4n
IC4gJzxicj4nCiAgICAgICAgICAgIC4gJFN0cmluZ09wdGlvbgogICAgICAgICAgICAuICRTdHJp
bmdTZWxlY3QKICAgICAgICAgICAgLiAnPGlucHV0IGNsYXNzPSJidXR0b24iIHR5cGU9InN1Ym1p
dCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJzo6QnV0
dG9uU2VhcmNoIiB2YWx1ZT0iJwogICAgICAgICAgICAuICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9
LT5UcmFuc2xhdGUoICJTZWFyY2giICkKICAgICAgICAgICAgLiAnIj4nCiAgICAgICAgICAgIC4g
JyZuYnNwOycKICAgICAgICAgICAgLiAnPGlucHV0IGNsYXNzPSJidXR0b24iIHR5cGU9InN1Ym1p
dCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJzo6QnV0
dG9uQ2xlYXIiIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0t
PlRyYW5zbGF0ZSggIkNsZWFyIiApCiAgICAgICAgICAgIC4gJyI+JzsKICAgIH0KCiAgICByZXR1
cm4gJFN0cmluZzsKfQoKPWl0ZW0gU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3Jt
IGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQo
CiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVt
UmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxm
LCAlUGFyYW0gKSA9IEBfOwoKICAgICNjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJh
bXtLZXl9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQ
cmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJwog
ICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAg
bXkgJFZhbHVlOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQ
YXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpP
TS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9
PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiAkVmFsdWU7Cn0KCj1pdGVtIFNlYXJj
aElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFs
dWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJ
dGVtOjoxOjpOb2RlOjozJywKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewog
ICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgog
ICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFt
eyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAg
ICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2Ug
ID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47
CiAgICAgICAgfQogICAgfQoKICAgICMgaGFzaCB3aXRoIHZhbHVlcyBmb3IgdGhlIGlucHV0IGZp
ZWxkCiAgICBteSAlRm9ybURhdGE7CgogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAg
ICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgICMgY3JlYXRlIGlu
cHV0IGZpZWxkCiAgICBteSAkSW5wdXRTdHJpbmcgPSAkU2VsZi0+SW5wdXRDcmVhdGUoCiAgICAg
ICAgJUZvcm1EYXRhLAogICAgICAgIEtleSAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJdGVt
ICAgPT4gJFBhcmFte0l0ZW19LAogICAgICAgIEl0ZW1JZCA9PiAkUGFyYW17S2V5fSwKICAgICk7
CgogICAgcmV0dXJuICRJbnB1dFN0cmluZzsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5E
IENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0ICho
dHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9y
IGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMg
ZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQ=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dEN1c3RvbWVyVXNl
ckNvbXBhbnkucG0gLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4v
Y2hhbmdlZCBieToKIyAqIFN0ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBU
b3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBGcmFuayhkb3QpT2JlcmVuZGVy
KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZShkYXNoKWl0
KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAq
IEZyYW5rKGRvdClKYWNxdWVtaW4oYXQpY2FwZS1pdChkb3QpZGUKIwojIC0tCiMgJElkOiBMYXlv
dXRDdXN0b21lclVzZXJDb21wYW55LnBtLHYgMS4zIDIwMTYvMDUvMjcgMTM6MjM6MDYgZmphY3F1
ZW1pbiBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZv
ciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoK
cGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEN1c3Rv
bWVyVXNlckNvbXBhbnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERl
cGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFn
ZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0
ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBO
QU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXRDdXN0b21lclVz
ZXJDb21wYW55IC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBs
YXlvdXQgZnVuY3Rpb25zIG9mIEN1c3RvbWVyVXNlckNvbXBhbnkgb2JqZWN0cwoKPW92ZXIgNAoK
PWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0
ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVt
OjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6
T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtTGF5b3V0Q3VzdG9t
ZXJVc2VyQ29tcGFueScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0g
KSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYg
PSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0NvbmZpZ09iamVj
dH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0xh
bmd1YWdlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKTsKICAg
ICRTZWxmLT57TGF5b3V0T2JqZWN0fSAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRw
dXQ6OkhUTUw6OkxheW91dCcpOwogICAgJFNlbGYtPntMb2dPYmplY3R9ICAgICAgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICAkU2VsZi0+e1BhcmFtT2JqZWN0
fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsK
CiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUg
b3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJp
bmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsK
Cj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkg
PSBAXzsKCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0g
JFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgPT4gJFBhcmFt
e1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICBy
ZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0ZW0gRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0
YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0
LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAg
IEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15
ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZv
ciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJn
dW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAi
TmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgfQogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBzZWxlY3RlZCBDdXN0b21l
clVzZXJDb21wYW55CiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0t
PkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwoKICAgICMgY2hlY2sgc2VhcmNoIGJ1
dHRvbgogICAgaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQ
YXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VhcmNoJyApICkgewogICAgICAgICRQYXJhbXtJdGVtfS0+
e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntTZWFyY2h9CiAgICAgICAgICAgID0gJFNlbGYtPntQ
YXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcg
KTsKICAgIH0KCiAgICAjIGNoZWNrIHNlbGVjdCBidXR0b24KICAgIGVsc2lmICggJFNlbGYtPntQ
YXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkJ1dHRvblNl
bGVjdCcgKSApIHsKICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFNlbGYtPntQYXJhbU9iamVj
dH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlbGVjdCcgKTsKICAgIH0K
CiAgICAjIGNoZWNrIGNsZWFyIGJ1dHRvbgogICAgZWxzaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0
fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7
CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwogICAgfQogICAgZWxzZSB7CgogICAgICAg
ICMgcmVzZXQgdmFsdWUgaWYgc2VhcmNoIGZpZWxkIGlzIGVtdHkKICAgICAgICBpZiAoCiAgICAg
ICAgICAgICEkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtL
ZXl9IC4gJzo6U2VhcmNoJyApCiAgICAgICAgICAgICYmIGRlZmluZWQgJEZvcm1EYXRhe1ZhbHVl
fQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0g
Jyc7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIG9wdGlvbgogICAgICAgIGlm
ICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9
ICkgewogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57
SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAg
IH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWl0ZW0gSW5wdXRDcmVhdGUoKQoK
Y3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklu
cHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFs
dWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAg
ICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0g
QF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtl
eSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAg
ICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdl
cnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAg
ICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRW
YWx1ZSA9ICcnOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZh
bHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0l0ZW19LT57SW5w
dXR9LT57VmFsdWVEZWZhdWx0fSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJ
bnB1dH0tPntWYWx1ZURlZmF1bHR9OwogICAgfQogICAgbXkgJFNpemUgICAgICAgICA9ICRQYXJh
bXtJdGVtfS0+e0lucHV0fS0+e1NpemV9IHx8IDUwOwogICAgbXkgJFN0cmluZ09wdGlvbiA9ICcn
OwogICAgbXkgJFN0cmluZ1NlbGVjdCA9ICcnOwogICAgbXkgJENsYXNzICAgICAgICA9ICdXNTBw
YyBDdXN0b21lclVzZXJDb21wYW55U2VhcmNoJzsKICAgIG15ICRSZXF1aXJlZCAgICAgPSAkUGFy
YW17UmVxdWlyZWR9IHx8ICcnOwogICAgbXkgJEludmFsaWQgICAgICA9ICRQYXJhbXtJbnZhbGlk
fSB8fCAnJzsKICAgIG15ICRJdGVtSWQgICAgICAgPSAkUGFyYW17SXRlbUlkfSB8fCAnJzsKCiAg
ICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQn
OwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVy
cm9yJzsKICAgIH0KCiAgICAjIEF1dG9Db21wbGV0ZQogICAgbXkgJEF1dG9Db21wbGV0ZUNvbmZp
ZwogICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0lUU01DSUF0dHJpYnV0ZUNv
bGxlY3Rpb246OkZyb250ZW5kOjpDb21tb25TZWFyY2hBdXRvQ29tcGxldGUnKTsKCiAgICAjY3Jl
YXRlIHN0cmluZy4uLgogICAgbXkgJFN0cmluZyA9ICcnOwogICAgaWYgKAogICAgICAgICRBdXRv
Q29tcGxldGVDb25maWcKICAgICAgICAmJiByZWYoJEF1dG9Db21wbGV0ZUNvbmZpZykgZXEgJ0hB
U0gnCiAgICAgICAgJiYgJEF1dG9Db21wbGV0ZUNvbmZpZy0+e0FjdGl2ZX0KICAgICAgICApCiAg
ICB7CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5h
bWUgPT4gJ0N1c3RvbWVyVXNlckNvbXBhbnlTZWFyY2hBdXRvQ29tcGxldGUnLAogICAgICAgICAg
ICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIG1pblF1ZXJ5TGVuZ3RoICAgICAgPT4gJEF1dG9D
b21wbGV0ZUNvbmZpZy0+e01pblF1ZXJ5TGVuZ3RofSAgICAgIHx8IDIsCiAgICAgICAgICAgICAg
ICBxdWVyeURlbGF5ICAgICAgICAgID0+ICRBdXRvQ29tcGxldGVDb25maWctPntRdWVyeURlbGF5
fSAgICAgICAgICB8fCAwLjEsCiAgICAgICAgICAgICAgICB0eXBlQWhlYWQgICAgICAgICAgID0+
ICRBdXRvQ29tcGxldGVDb25maWctPntUeXBlQWhlYWR9ICAgICAgICAgICB8fCAnZmFsc2UnLAog
ICAgICAgICAgICAgICAgbWF4UmVzdWx0c0Rpc3BsYXllZCA9PiAkQXV0b0NvbXBsZXRlQ29uZmln
LT57TWF4UmVzdWx0c0Rpc3BsYXllZH0gfHwgMjAsCiAgICAgICAgICAgICAgICBkeW5hbWljV2lk
dGggICAgICAgID0+ICRBdXRvQ29tcGxldGVDb25maWctPntEeW5hbWljV2lkdGh9ICAgICAgICB8
fCAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmpl
Y3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ3VzdG9tZXJVc2VyQ29tcGFueVNlYXJj
aEluaXQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAg
ICAgICAgICA9PiAkSXRlbUlkLAogICAgICAgICAgICAgICAgQWN0aXZlQXV0b0NvbXBsZXRlID0+
ICd0cnVlJywKICAgICAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICAkU3RyaW5nID0g
JFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9
PiAnQWdlbnRDdXN0b21lclVzZXJDb21wYW55U2VhcmNoJywKICAgICAgICApOwogICAgICAgICRT
dHJpbmcKICAgICAgICAgICAgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJwogICAgICAg
ICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAgICAg
LiAkVmFsdWUKICAgICAgICAgICAgLiAnIiBpZD0iJwogICAgICAgICAgICAuICRJdGVtSWQgLiAn
U2VsZWN0ZWQnCiAgICAgICAgICAgIC4gJyIvPicKICAgICAgICAgICAgLiAnPGlucHV0IHR5cGU9
InRleHQiIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAuICc6
OlNlYXJjaCIgY2xhc3M9IicKICAgICAgICAgICAgLiAkQ2xhc3MKICAgICAgICAgICAgLiAnIiBp
ZD0iJwogICAgICAgICAgICAuICRJdGVtSWQKICAgICAgICAgICAgLiAnIiBTZWFyY2hDbGFzcz0i
JwogICAgICAgICAgICAuICdDdXN0b21lclVzZXJDb21wYW55U2VhcmNoJwogICAgICAgICAgICAu
ICciIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFZhbHVlIC4gJyIvPic7CiAgICB9CiAgICBlbHNl
IHsKICAgICAgICAkU3RyaW5nCiAgICAgICAgICAgID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
bWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAuICciIHZhbHVlPSIn
CiAgICAgICAgICAgIC4gJFZhbHVlIC4gJyI+JwogICAgICAgICAgICAuICc8aW5wdXQgdHlwZT0i
VGV4dCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJzo6
U2VhcmNoIiBzaXplPSInCiAgICAgICAgICAgIC4gJFNpemUKICAgICAgICAgICAgLiAnIiB2YWx1
ZT0iJwogICAgICAgICAgICAuICRWYWx1ZSAuICciPicgLiAnPGJyPicKICAgICAgICAgICAgLiAk
U3RyaW5nT3B0aW9uCiAgICAgICAgICAgIC4gJFN0cmluZ1NlbGVjdAogICAgICAgICAgICAuICc8
aW5wdXQgY2xhc3M9ImJ1dHRvbiIgdHlwZT0ic3VibWl0IiBuYW1lPSInCiAgICAgICAgICAgIC4g
JFBhcmFte0tleX0KICAgICAgICAgICAgLiAnOjpCdXR0b25TZWFyY2giIHZhbHVlPSInCiAgICAg
ICAgICAgIC4gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggIlNlYXJjaCIgKQog
ICAgICAgICAgICAuJyI+JwogICAgICAgICAgICAuICcmbmJzcDsnCiAgICAgICAgICAgIC4gJzxp
bnB1dCBjbGFzcz0iYnV0dG9uIiB0eXBlPSJzdWJtaXQiIG5hbWU9IicKICAgICAgICAgICAgLiAk
UGFyYW17S2V5fQogICAgICAgICAgICAuICc6OkJ1dHRvbkNsZWFyIiB2YWx1ZT0iJwogICAgICAg
ICAgICAuICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICJDbGVhciIgKQogICAg
ICAgICAgICAuJyI+JzsKICAgIH0KCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWl0ZW0gU2VhcmNo
Rm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFj
a2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpO
b2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFy
Y2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hl
Y2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkU2VsZi0+
e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAg
ICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47
CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJh
bXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVs
c2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpX
ZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAg
ICByZXR1cm4gJFZhbHVlOwp9Cgo9aXRlbSBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBz
ZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJj
aElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoK
PWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0g
QF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtl
eSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAg
ICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdl
cnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhh
c2ggd2l0aCB2YWx1ZXMgZm9yIHRoZSBpbnB1dCBmaWVsZAogICAgbXkgJUZvcm1EYXRhOwoKICAg
IGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFBhcmFt
e1ZhbHVlfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBpbnB1dCBmaWVsZAogICAgbXkgJElucHV0U3Ry
aW5nID0gJFNlbGYtPklucHV0Q3JlYXRlKAogICAgICAgICVGb3JtRGF0YSwKICAgICAgICBLZXkg
ICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSXRlbSAgID0+ICRQYXJhbXtJdGVtfSwKICAgICAg
ICBJdGVtSWQgPT4gJFBhcmFte0tleX0sCiAgICApOwoKICAgIHJldHVybiAkSW5wdXRTdHJpbmc7
Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJl
IGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNv
ZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNl
ZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BM
KS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5v
cmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0Cgo9aGVhZDEgVkVSU0lPTgoKJFJldmlzaW9uOiAx
LjMgJCAkRGF0ZTogMjAxNi8wNS8yNyAxMzoyMzowNiAkCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dER1bW15WC5wbSAt
IGxheW91dCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUu
IElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6CiMg
KiBNYXJ0aW4oZG90KUJhbHphcmVrKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIERvcm90aGVh
KGRvdClEb2VyZmZlbChhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5n
ZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojCiMgLS0KIyBiYXNlZCB1cG9uIElUU01Db25maWdJ
dGVtTGF5b3V0RHVtbXkucG0gLSAxLjggMjAwOC8wNC8wMyBieSBtaAojICRJZDogTGF5b3V0RHVt
bXlYLnBtLHYgMS4yIDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNv
ZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNl
ZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFH
UEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5n
bnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpI
VE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXlYOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5p
bmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06Okxv
ZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBOQU1FCgpL
ZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXREdW1teSAtIGxheW91dCBi
YWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBE
dW1teVggb2JqZWN0cwoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmpl
Y3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2Vy
bmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRC
YWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklU
U01Db25maWdJdGVtTGF5b3V0RHVtbXlYJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5
cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAg
ICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57
TG9nT2JqZWN0fSAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwog
ICAgJFNlbGYtPntQYXJhbU9iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3Rl
bTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBPdXRwdXRTdHJp
bmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2Vu
ZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3Jl
YXRlIHsKICAgIHJldHVybiAnICc7Cn0KCj1pdGVtIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRh
dGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVj
dC0+Rm9ybURhdGFHZXQoKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CgogICAgIyBjYXBlSVQK
ICAgICNyZXR1cm4ge307CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hl
Y2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkpKSB7CiAgICAgICAg
aWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0
fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAg
ICAgIE1lc3NhZ2UgID0+ICJJVFNNQ29uZmlnSXRlbUxheW91dER1bW15WDogTmVlZCAkQXJndW1l
bnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0K
CiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICVGb3JtRGF0YTsKICAgICRGb3JtRGF0YXtWYWx1
ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9
ICk7CiAgICByZXR1cm4gXCVGb3JtRGF0YTsKCiAgICAjIEVPIGNhcGVJVAp9Cgo9aXRlbSBJbnB1
dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2Vu
ZE9iamVjdC0+SW5wdXRDcmVhdGUoKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CgogICAgIyBj
YXBlSVQKICAgICNyZXR1cm4gJyZuYnNwOyc7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBf
OwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkg
SXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAg
JFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJy
b3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklUU01Db25maWdJdGVtTGF5b3V0RHVt
bXlYOiBOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47
CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTdHJpbmcKICAgICAgICA9ICc8aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSInCiAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgIC4gJyIgdmFsdWU9
IicKICAgICAgICAuICRQYXJhbXtJdGVtfS0+e0tleX0KICAgICAgICAuICciLz4nCiAgICAgICAg
LiAnPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pic7CgogICAgcmV0dXJuICRTdHJpbmc7CgogICAg
IyBFTyBjYXBlSVQKfQoKPWl0ZW0gU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3Jt
IGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQo
KTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICByZXR1cm4gW107Cn0KCj1pdGVt
IFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlcmNoIGlucHV0IHN0cmluZwoKICAgIG15
ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgpOwoKPWN1dAoKc3Vi
IFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIHJldHVybiAnJm5ic3A7JzsKfQoKMTsKCj1iYWNrCgo9
aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUg
T1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0
aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBm
aWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5v
dCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3Bs
LnR4dC4KCj1jdXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDE2
LzA1LzE4IDA3OjQwOjQ3ICQKCj1jdXQK
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dER5bmFtaWNGaWVs
ZC5wbSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMu
YS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9jaGFuZ2Vk
IGJ5OgojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIFN0
ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBMYXlv
dXREeW5hbWljRmllbGQucG0sdiAxLjMgMjAxNi8wNS8zMCAwNjoxMDozMiBmamFjcXVlbWluIEV4
cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5U
WS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vu
c2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxl
LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdl
IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHluYW1pY0ZpZWxk
OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAo
CiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91
dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0
ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBO
QU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXREeW5hbWljRmll
bGQgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBm
dW5jdGlvbnMgb2YgRHluYW1pY0ZpZWxkIG9iamVjdHMKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5l
dygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5h
Z2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdl
ci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbUxheW91dER5bmFtaWNGaWVsZCcpOwoKPWN1
dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2Nh
dGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2Vs
ZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fSAgICAgPSAkS2VybmVsOjpP
TS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0gICAg
ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAg
ICAkU2VsZi0+e0R5bmFtaWNGaWVsZE9iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAkU2VsZi0+e0xvZ09iamVjdH0gICAgICAgICAg
PSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICAkU2VsZi0+e1Bh
cmFtT2JqZWN0fSAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2Vi
OjpSZXF1ZXN0Jyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBPdXRwdXRTdHJpbmdDcmVh
dGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVj
dC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRp
b25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRT
dHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNr
IG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0l0ZW19ICkgewogICAgICAgICRTZWxmLT57
TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAg
ICAgICBNZXNzYWdlICA9PiAnTmVlZCBJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47
CiAgICB9CgogICAgJFBhcmFte1ZhbHVlfSB8fD0gJyc7CgogICAgIyB0cmFuc2xhdGUKICAgIGlm
ICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRQYXJh
bXtWYWx1ZX0gPSAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmFs
dWV9ICk7CiAgICB9CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1pdGVtIEZvcm1EYXRh
R2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFS
ZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjox
OjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBG
b3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sg
bmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAg
ICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmpl
Y3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAg
ICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMg
Z2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9
LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBh
cmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1E
YXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQ
YXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9
CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1pdGVtIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBh
IGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0
ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDEx
LCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAog
ICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhL
ZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAg
ICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAn
ZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAg
ICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkg
JFNlbGVjdGVkSUQgPSAkUGFyYW17VmFsdWV9IHx8ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1Zh
bHVlRGVmYXVsdH0gfHwgJyc7CgogICAgbXkgJENTU0NsYXNzID0gJ01vZGVybml6ZSc7CiAgICBt
eSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBhcmFt
e0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYgKCRS
ZXF1aXJlZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAg
IH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ1NTQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJv
cic7CiAgICB9CgogICAgIyB0cmFuc2xhdGlvbiBvbiBvciBvZmYKICAgIG15ICRUcmFuc2xhdGlv
biA9IDA7CiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsK
ICAgICAgICAkVHJhbnNsYXRpb24gPSAxOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAg
IG15ICRJdGVtTGlzdCA9ICRTZWxmLT57RHluYW1pY0ZpZWxkT2JqZWN0fS0+RHluYW1pY0ZpZWxk
R2V0KAogICAgICAgIE5hbWUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TmFtZX0gfHwgJycs
CiAgICApOwoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJFNlbGYtPntM
YXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJEl0
ZW1MaXN0LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICBOYW1lICAgICAgICAg
PT4gJFBhcmFte0tleX0sCiAgICAgICAgSUQgICAgICAgICAgID0+ICRJdGVtSWQsCiAgICAgICAg
UG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmFuc2xhdGlvbiwK
ICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGVjdGVkSUQsCiAgICAgICAgQ2xhc3MgICAgICAg
ID0+ICRDU1NDbGFzcywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1pdGVtIFNlYXJj
aEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJh
Y2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6
Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICgg
ISRQYXJhbXtLZXl9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAg
ICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBL
ZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRh
dGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZh
bHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1
ZXMgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0QXJyYXkoIFBhcmFtID0+ICRQYXJhbXtLZXl9
ICk7CiAgICB9CgogICAgcmV0dXJuIFxAVmFsdWVzOwp9Cgo9aXRlbSBTZWFyY2hJbnB1dENyZWF0
ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tl
bmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9k
ZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNo
SW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNr
IG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAg
ICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2Jq
ZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAg
ICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZXMgPSAkU2VsZi0+
U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICAjIHRyYW5zbGF0aW9uIG9uIG9yIG9mZgog
ICAgbXkgJFRyYW5zbGF0aW9uID0gMDsKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57
VHJhbnNsYXRpb259ICkgewogICAgICAgICRUcmFuc2xhdGlvbiA9IDE7CiAgICB9CgogICAgIyBn
ZXQgY2xhc3MgbGlzdAogICAgbXkgJEl0ZW1MaXN0ID0gJFNlbGYtPntEeW5hbWljRmllbGRPYmpl
Y3R9LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1
dH0tPntOYW1lfSB8fCAnJywKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRT
dHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERh
dGEgICAgICAgID0+ICRJdGVtTGlzdC0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30sCiAgICAg
ICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwK
ICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xh
dGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgKTsKCiAgICByZXR1cm4g
JFN0cmluZzsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMg
c29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4K
ClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0
YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRp
b24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93
d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2
aXNpb246IDEuMyAkICREYXRlOiAyMDE2LzA1LzMwIDA2OjEwOjMyICQKCj1jdXQK
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dEVuY3J5cHRlZFRl
eHQucG0gLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBj
LmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vY2hhbmdl
ZCBieToKIyAqIFN0ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1h
cnRpbihkb3QpQmFsemFyZWsoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogTWFyaW8oZG90KUls
bGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBMYXlvdXRFbmNyeXB0
ZWRUZXh0LnBtLHYgMS4yIDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlz
IHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMs
IHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24g
KEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3
dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0
OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RW5jcnlwdGVkVGV4dDsKCnVzZSBzdHJpY3Q7
CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6
Q29uZmlnJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRN
TDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3Rl
bTo6V2ViOjpSZXF1ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJ
VFNNQ29uZmlnSXRlbUxheW91dEVuY3J5cHRlZFRleHQgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUK
Cj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgRW5jcnlwdGVkVGV4dCBv
YmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAg
IHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9N
ID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEJhY2tlbmRP
YmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZp
Z0l0ZW1MYXlvdXRFbmNyeXB0ZWRUZXh0Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5
cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAg
ICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57
Q29uZmlnT2JqZWN0fSAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAg
ICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5n
dWFnZScpOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdL
ZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0xvZ09iamVjdH0gICAg
ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57
UGFyYW1PYmplY3R9ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6
UmVxdWVzdCcpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gT3V0cHV0U3RyaW5nQ3JlYXRl
KCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3Qt
Pk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9u
YWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3Ry
aW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBu
ZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkU2VsZi0+e0xv
Z09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAg
ICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwog
ICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17
VmFsdWV9ID0gJyc7CiAgICB9CgogICAgbXkgJEdyb3Vwc1JlZiA9ICRQYXJhbXtJdGVtfS0+e0dy
b3VwfTsKICAgIG15IEBHcm91cHMgICAgPSAoKTsKICAgIGlmICggJEdyb3Vwc1JlZiAmJiByZWYg
JEdyb3Vwc1JlZiBlcSAnSEFTSCcgKSB7CiAgICAgICAgQEdyb3VwcyA9IGtleXMgJXskR3JvdXBz
UmVmfTsKICAgIH0KCiAgICBteSAkQWNjZXNzID0gMDsKICAgIGZvciBteSAkR3JvdXAgKEBHcm91
cHMpIHsKCiAgICAgICAgbmV4dAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICEkU2VsZi0+
e0xheW91dE9iamVjdH0tPnsiVXNlcklzR3JvdXBbJEdyb3VwXSJ9CiAgICAgICAgICAgIHx8ICRT
ZWxmLT57TGF5b3V0T2JqZWN0fS0+eyJVc2VySXNHcm91cFskR3JvdXBdIn0gbmUgJ1llcycKICAg
ICAgICAgICAgKTsKCiAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgbGFzdDsKICAgIH0KCiAg
ICBpZiAoJEFjY2VzcykgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkU2VsZi0+X0RlY3J5cHQo
ICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHdoaWxlICggJFBhcmFt
e1ZhbHVlfSA9fiAvW2EtekEtWjAtOV9dLyApIHsKICAgICAgICAgICAgJFBhcmFte1ZhbHVlfSA9
fiBzL1thLXpBLVowLTlfXS8qLzsKICAgICAgICB9CiAgICB9CgogICAgIyB0cmFuc2xhdGUKICAg
IGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRQ
YXJhbXtWYWx1ZX0gPQogICAgICAgICAgICAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNs
YXRlKCAkUGFyYW17VmFsdWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtGZWF0dXJlICAgID0gMTsK
ICAgIG15ICRIVE1MUmVzdWx0TW9kZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtz
IGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0Zl
YXR1cmUgPSAwOwoKICAgICAgICAjIGRvIG5vdCBjb252ZXJ0IHdoaXRlc3BhY2UgYW5kIG5ld2xp
bmVzIGluIFBERiBtb2RlCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgn
UERGJykgKSB7CiAgICAgICAgICAgICRIVE1MUmVzdWx0TW9kZSA9IDA7CiAgICAgICAgfQogICAg
fQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkU2Vs
Zi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAgPT4g
JFBhcmFte1ZhbHVlfSwKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAkSFRNTFJlc3VsdE1vZGUs
CiAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gJExpbmtGZWF0dXJlLAogICAgKTsKCiAgICByZXR1
cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0ZW0gRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBh
cyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5G
b3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0
ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBt
eSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1l
bnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAg
ICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVl
ZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
IH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9y
bURhdGF7VmFsdWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAk
UGFyYW17S2V5fSApOwoKICAgIG15ICRHcm91cHNSZWYgPSAkUGFyYW17SXRlbX0tPntHcm91cH07
CiAgICBteSBAR3JvdXBzICAgID0gKCk7CiAgICBpZiAoICRHcm91cHNSZWYgJiYgcmVmICRHcm91
cHNSZWYgZXEgJ0hBU0gnICkgewogICAgICAgIEBHcm91cHMgPSBrZXlzICV7JEdyb3Vwc1JlZn07
CiAgICB9CgogICAgbXkgJEFjY2VzcyA9IDA7CiAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7
CgogICAgICAgIG5leHQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAhJFNlbGYtPntMYXlv
dXRPYmplY3R9LT57IlVzZXJJc0dyb3VwWyRHcm91cF0ifQogICAgICAgICAgICB8fCAkU2VsZi0+
e0xheW91dE9iamVjdH0tPnsiVXNlcklzR3JvdXBbJEdyb3VwXSJ9IG5lICdZZXMnCiAgICAgICAg
ICAgICk7CgogICAgICAgICRBY2Nlc3MgPSAxOwogICAgICAgIGxhc3Q7CiAgICB9CiAgICBpZiAo
ICRBY2Nlc3MgJiYgZGVmaW5lZCggJEZvcm1EYXRhe1ZhbHVlfSApICkgewoKICAgICAgICAjIGRv
IGVuY3J5cHRpb24KICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFNlbGYtPl9FbmNyeXB0KCAk
Rm9ybURhdGF7VmFsdWV9ICk7CiAgICB9CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYg
KCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0g
KSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0t
PntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVy
biBcJUZvcm1EYXRhOwp9Cgo9aXRlbSBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJp
bmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAg
S2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgICAg
ICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0
CgpzdWIgSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAj
IGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7
CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57
TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAg
ICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICAp
OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRQ
YXJhbXtWYWx1ZX07CiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAg
JFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJzsKICAg
IH0KCiAgICBteSAkQ2xhc3MgICAgPSAnJzsKICAgIG15ICRTaXplICAgICA9ICdXNTBwYyc7CiAg
ICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBh
cmFte0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYg
KCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAg
IH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7
CiAgICB9CiAgICAkQ2xhc3MgLj0gJyAnIC4gJFNpemU7CiAgICBteSAkU3RyaW5nID0gIjxpbnB1
dCB0eXBlPVwidGV4dFwiIG5hbWU9XCIkUGFyYW17S2V5fVwiIGNsYXNzPVwiJENsYXNzXCIgIjsK
CiAgICBpZiAoJEl0ZW1JZCkgewogICAgICAgICRTdHJpbmcgLj0gImlkPVwiJEl0ZW1JZFwiICI7
CiAgICB9CgogICAgbXkgJEdyb3Vwc1JlZiA9ICRQYXJhbXtJdGVtfS0+e0dyb3VwfTsKICAgIG15
IEBHcm91cHMgICAgPSAoKTsKICAgIGlmICggJEdyb3Vwc1JlZiAmJiByZWYgJEdyb3Vwc1JlZiBl
cSAnSEFTSCcgKSB7CiAgICAgICAgQEdyb3VwcyA9IGtleXMgJXskR3JvdXBzUmVmfTsKICAgIH0K
CiAgICBteSAkQWNjZXNzID0gMDsKICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKCiAgICAg
ICAgbmV4dAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICEkU2VsZi0+e0xheW91dE9iamVj
dH0tPnsiVXNlcklzR3JvdXBbJEdyb3VwXSJ9CiAgICAgICAgICAgIHx8ICRTZWxmLT57TGF5b3V0
T2JqZWN0fS0+eyJVc2VySXNHcm91cFskR3JvdXBdIn0gbmUgJ1llcycKICAgICAgICAgICAgKTsK
CiAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgbGFzdDsKICAgIH0KCiAgICAjIGNoZWNrIGlm
IHZhbHVlIGNhbiBiZSBlZGl0ZWQgYW5kIGlmIHNvIGRlY3J5cHQgdmFsdWUKICAgIGlmICggISRB
Y2Nlc3MgKSB7CiAgICAgICAgJFN0cmluZyAuPSAicmVhZG9ubHk9XCJyZWFkb25seVwiICI7CiAg
ICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsdWUgPSAkU2VsZi0+X0RlY3J5cHQoJFZhbHVlKTsK
CiAgICAgICAgIyBhZGQgbWF4aW11bSBsZW5ndGggb25seSBpZiAiYWNjZXNzIGVkaXQiIG90aGVy
d2lzZSB2YWx1ZSB3aWxsIGJlCiAgICAgICAgIyB0cnVuY2F0ZWQgYW5kIGNhdXNlIGlucHV0IHJl
cXVpcmVkIG1lc3NhZ2UKICAgICAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e01heExl
bmd0aH0gKSB7CiAgICAgICAgICAgICRTdHJpbmcgLj0gIm1heGxlbmd0aD1cIiRQYXJhbXtJdGVt
fS0+e0lucHV0fS0+e01heExlbmd0aH1cIiAiOwogICAgICAgIH0KICAgIH0KCiAgICAkVmFsdWUg
PSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZhbHVlIHx8ICcn
ICk7CgogICAgJFN0cmluZyAuPSAidmFsdWU9XCIkVmFsdWVcIiAiOwogICAgJFN0cmluZyAuPSAn
Lz4gJzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWl0ZW0gU2VhcmNoRm9ybURhdGFHZXQoKQoK
Z2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2Vh
cmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAg
ICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7
CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZm
CiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxv
ZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAg
PT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBn
ZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAg
ICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRW
YWx1ZSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tl
eX0gKTsKICAgIH0KICAgIHJldHVybiAkVmFsdWU7Cn0KCj1pdGVtIFNlYXJjaElucHV0Q3JlYXRl
KCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2Vu
ZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2Rl
OjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJ
bnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sg
bmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAg
ICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmpl
Y3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAg
ICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFNlbGYtPlNl
YXJjaEZvcm1EYXRhR2V0KCVQYXJhbSk7CiAgICBpZiAoICFkZWZpbmVkICRWYWx1ZSApIHsKICAg
ICAgICAkVmFsdWUgPSAnJzsKICAgIH0KCiAgICBteSAkU3RyaW5nID0KICAgICAgICBxcXs8aW5w
dXQgdHlwZT0idGV4dCIgbmFtZT0iJFBhcmFte0tleX0iIHZhbHVlPSIkVmFsdWUiIGNsYXNzPSJX
NTBwYyIgPn07CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCnN1YiBfRGVjcnlwdCB7CiAgICBteSAo
ICRTZWxmLCAkUHcgKSA9IEBfOwoKICAgIHJldHVybiAkUHcgaWYgISRQdzsKCiAgICBteSAkTGVu
Z3RoID0gbGVuZ3RoKCRQdykgKiA0OwogICAgJFB3ID0gcGFjayAiaCRMZW5ndGgiLCAkUHc7CiAg
ICAkUHcgPSB1bnBhY2sgIkIkTGVuZ3RoIiwgJFB3OwogICAgJFB3ID1+IHMvMS9BL2c7CiAgICAk
UHcgPX4gcy8wLzEvZzsKICAgICRQdyA9fiBzL0EvMC9nOwogICAgJFB3ID0gcGFjayAiQiRMZW5n
dGgiLCAkUHc7CgogICAgcmV0dXJuICRQdzsKfQoKc3ViIF9FbmNyeXB0IHsKICAgIG15ICggJFNl
bGYsICRQdyApID0gQF87CgogICAgcmV0dXJuICRQdyBpZiAhJFB3OwoKICAgIG15ICRMZW5ndGgg
PSBsZW5ndGgoJFB3KSAqIDg7CiAgICBjaG9tcCAkUHc7CgogICAgIyBnZXQgYml0IGNvZGUKICAg
IG15ICRUID0gdW5wYWNrKCAiQiRMZW5ndGgiLCAkUHcgKTsKCiAgICAjIGNyeXB0IGJpdCBjb2Rl
CiAgICAkVCA9fiBzLzEvQS9nOwogICAgJFQgPX4gcy8wLzEvZzsKICAgICRUID1+IHMvQS8wL2c7
CgogICAgIyBnZXQgYXNjaWkgY29kZQogICAgJFQgPSBwYWNrKCAiQiRMZW5ndGgiLCAkVCApOwoK
ICAgICMgZ2V0IGhleCBjb2RlCiAgICBteSAkSCA9IHVucGFjayggImgkTGVuZ3RoIiwgJFQgKTsK
CiAgICByZXR1cm4gJEg7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05T
CgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Ry
cy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5U
WS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNl
IGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNl
ZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cgo9aGVhZDEg
VkVSU0lPTgoKJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAxNi8wNS8xOCAwNzo0MDo0NyAkCgo9
Y3V0Cg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dFVzZXIucG0gLSBs
YXlvdXQgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBjLmEucC5lLiBJ
VCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUvCiMKIyB3cml0dGVuL2NoYW5nZWQgYnk6CiMg
KiBTdGVmYW4oZG90KU1laGxpZyhhdCljYXBlLWl0KGRvdClkZQojICogQW5uYShkb3QpTGl0dmlu
b3ZhKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBl
KGRhc2gpaXQoZG90KWRlCiMgLS0KIyAkSWQ6IExheW91dFVzZXIucG0sdiAxLjIgMjAxNi8wNS8x
OCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNP
TFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUg
Q09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3Qg
cmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50
eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpM
YXlvdXRVc2VyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRl
bmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAog
ICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpM
b2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2Vi
OjpSZXF1ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29u
ZmlnSXRlbUxheW91dFVzZXIgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJ
UwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgVXNlciBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9
aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2Jq
ZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVj
dE1hbmFnZXItPm5ldygpOwogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0
KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXRVc2VyJyk7Cgo9Y3V0
CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0
ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxm
LCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSAgID0gJEtlcm5lbDo6T00tPkdl
dCgnS2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9ID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9
ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAg
ICAkU2VsZi0+e0xvZ09iamVjdH0gICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpMb2cnKTsKICAgICRTZWxmLT57VXNlck9iamVjdH0gICAgID0gJEtlcm5lbDo6T00tPkdl
dCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKICAgICRTZWxmLT57UGFyYW1PYmplY3R9ICAgID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIHJl
dHVybiAkU2VsZjsKfQoKPWl0ZW0gT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQg
c3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0
ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoK
c3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoK
ICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkU2VsZi0+
e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCA9PiAkUGFyYW17VmFsdWV9
IHx8ICcnLAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICApOwoKICAgIHJldHVybiAk
UGFyYW17VmFsdWV9Owp9Cgo9aXRlbSBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRhIGFzIGhh
c2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1E
YXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9
PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2Vs
ZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRB
cmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0g
KSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAg
UHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRB
cmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAg
ICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHNlbGVjdGVkIHVzZXIKICAgICRGb3Jt
RGF0YXtWYWx1ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQ
YXJhbXtLZXl9ICk7CgogICAgIyBjaGVjayBzZWFyY2ggYnV0dG9uCiAgICBpZiAoICRTZWxmLT57
UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25T
ZWFyY2gnICkgKSB7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0g
fS0+e1NlYXJjaH0KICAgICAgICAgICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0o
IFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNoJyApOwogICAgfQoKICAgICMgY2hlY2sg
c2VsZWN0IGJ1dHRvbgogICAgZWxzaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0o
IFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VsZWN0JyApICkgewogICAgICAgICRG
b3JtRGF0YXtWYWx1ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+
ICRQYXJhbXtLZXl9IC4gJzo6U2VsZWN0JyApOwogICAgfQoKICAgICMgY2hlY2sgY2xlYXIgYnV0
dG9uCiAgICBlbHNpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4g
JFBhcmFte0tleX0gLiAnOjpCdXR0b25DbGVhcicgKSApIHsKICAgICAgICAkRm9ybURhdGF7VmFs
dWV9ID0gJyc7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyByZXNldCB2YWx1ZSBpZiBzZWFy
Y2ggZmllbGQgaXMgZW10eQogICAgICAgIGlmICgKICAgICAgICAgICAgISRTZWxmLT57UGFyYW1P
YmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpTZWFyY2gnICkKICAg
ICAgICAgICAgJiYgZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgICAgICkKICAgICAg
ICB7CiAgICAgICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgICAgICB9CgogICAgICAg
ICMgY2hlY2sgcmVxdWlyZWQgb3B0aW9uCiAgICAgICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1
dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRQYXJh
bXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICAgICAg
ICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBc
JUZvcm1EYXRhOwp9Cgo9aXRlbSBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcK
CiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5
ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0
aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRD
cmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRl
ZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYg
KCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+
TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAg
IE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJyc7CiAgICBpZiAoIGRl
ZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9Owog
ICAgfQogICAgZWxzaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkg
ewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH07
CiAgICB9CiAgICBteSAkU2l6ZSAgICAgICAgID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57U2l6
ZX0gfHwgNTA7CiAgICBteSAkU3RyaW5nT3B0aW9uID0gJyc7CiAgICBteSAkU3RyaW5nU2VsZWN0
ID0gJyc7CiAgICBteSAkQ2xhc3MgICAgICAgID0gJ1c1MHBjIEFnZW50VXNlclNlYXJjaCc7CiAg
ICBteSAkU2VhcmNoICAgICAgID0gJyc7CiAgICBteSAkUmVxdWlyZWQgICAgID0gJFBhcmFte1Jl
cXVpcmVkfSB8fCAnJzsKICAgIG15ICRJbnZhbGlkICAgICAgPSAkUGFyYW17SW52YWxpZH0gfHwg
Jyc7CiAgICBteSAkSXRlbUlkICAgICAgID0gJFBhcmFte0l0ZW1JZH0gfHwgJyc7CgogICAgaWYg
KCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAg
IH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7
CiAgICB9CgogICAgIyBjcmVhdGUgVXNlciBzdHJpbmcKICAgIGlmICgkVmFsdWUpIHsKCiAgICAg
ICAgIyBnZXQgVXNlciBkYXRhCiAgICAgICAgbXkgJVVzZXJTZWFyY2hMaXN0ID0gJFNlbGYtPntV
c2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVmFsdWUsCiAg
ICAgICAgKTsKICAgICAgICBteSAkVXNlck5hbWUgPSAnJzsKICAgICAgICBpZiAoJVVzZXJTZWFy
Y2hMaXN0KSB7CiAgICAgICAgICAgICRVc2VyTmFtZQogICAgICAgICAgICAgICAgPSAnIicKICAg
ICAgICAgICAgICAgIC4gJFVzZXJTZWFyY2hMaXN0e1VzZXJGaXJzdG5hbWV9IC4gJyAnCiAgICAg
ICAgICAgICAgICAuICRVc2VyU2VhcmNoTGlzdHtVc2VyTGFzdG5hbWV9IC4gJyIgPCcKICAgICAg
ICAgICAgICAgIC4gJFVzZXJTZWFyY2hMaXN0e1VzZXJFbWFpbH0gLiAnPic7CiAgICAgICAgfQoK
ICAgICAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAgICAgJFNlYXJjaCA9ICRTZWxm
LT57TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCA9PiAkVXNlck5h
bWUgfHwgJycsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAg
IH0KCiAgICBteSAkQXV0b0NvbXBsZXRlQ29uZmlnCiAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09i
amVjdH0tPkdldCgnSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjo6RnJvbnRlbmQ6OkNvbW1vblNl
YXJjaEF1dG9Db21wbGV0ZScpOwoKICAgICNjcmVhdGUgc3RyaW5nLi4uCiAgICBteSAkU3RyaW5n
ID0gJyc7CiAgICBpZiAoICAgJEF1dG9Db21wbGV0ZUNvbmZpZwogICAgICAgICYmIHJlZigkQXV0
b0NvbXBsZXRlQ29uZmlnKSBlcSAnSEFTSCcKICAgICAgICAmJiAkQXV0b0NvbXBsZXRlQ29uZmln
LT57QWN0aXZlfSApCiAgICB7CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2so
CiAgICAgICAgICAgIE5hbWUgPT4gJ0FnZW50VXNlclNlYXJjaEF1dG9Db21wbGV0ZScsCiAgICAg
ICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgbWluUXVlcnlMZW5ndGggICAgICA9PiAk
QXV0b0NvbXBsZXRlQ29uZmlnLT57TWluUXVlcnlMZW5ndGh9ICAgICAgfHwgMiwKICAgICAgICAg
ICAgICAgIHF1ZXJ5RGVsYXkgICAgICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e1F1ZXJ5
RGVsYXl9ICAgICAgICAgIHx8IDAuMSwKICAgICAgICAgICAgICAgIHR5cGVBaGVhZCAgICAgICAg
ICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e1R5cGVBaGVhZH0gICAgICAgICAgIHx8ICdmYWxz
ZScsCiAgICAgICAgICAgICAgICBtYXhSZXN1bHRzRGlzcGxheWVkID0+ICRBdXRvQ29tcGxldGVD
b25maWctPntNYXhSZXN1bHRzRGlzcGxheWVkfSB8fCAyMCwKICAgICAgICAgICAgICAgIGR5bmFt
aWNXaWR0aCAgICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e0R5bmFtaWNXaWR0aH0gICAg
ICAgIHx8IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e0xheW91
dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBZ2VudFVzZXJTZWFyY2hJbml0
JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgICAg
ICAgPT4gJEl0ZW1JZCwKICAgICAgICAgICAgICAgIEFjdGl2ZUF1dG9Db21wbGV0ZSA9PiAndHJ1
ZScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJFN0cmluZyA9ICRTZWxm
LT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0Fn
ZW50VXNlclNlYXJjaCcsCiAgICAgICAgKTsKICAgICAgICAkU3RyaW5nCiAgICAgICAgICAgID0g
JzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQog
ICAgICAgICAgICAuICciIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFZhbHVlCiAgICAgICAgICAg
IC4gJyIgaWQ9IicKICAgICAgICAgICAgLiAkSXRlbUlkIC4gJ1NlbGVjdGVkJwogICAgICAgICAg
ICAuICciLz4nCiAgICAgICAgICAgIC4gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSInCiAgICAg
ICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAgLiAnOjpTZWFyY2giIGNsYXNzPSInCiAg
ICAgICAgICAgIC4gJENsYXNzCiAgICAgICAgICAgIC4gJyIgaWQ9IicKICAgICAgICAgICAgLiAk
SXRlbUlkCiAgICAgICAgICAgIC4gJyIgU2VhcmNoQ2xhc3M9IicKICAgICAgICAgICAgLiAnQWdl
bnRVc2VyU2VhcmNoJwogICAgICAgICAgICAuICciIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFNl
YXJjaCAuICciLz4nOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFN0cmluZwogICAgICAgICAg
ICA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFte0tl
eX0KICAgICAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgICAgICAuICRWYWx1ZSAuICciPicK
ICAgICAgICAgICAgLiAnPGlucHV0IHR5cGU9IlRleHQiIG5hbWU9IicKICAgICAgICAgICAgLiAk
UGFyYW17S2V5fQogICAgICAgICAgICAuICc6OlNlYXJjaCIgc2l6ZT0iJwogICAgICAgICAgICAu
ICRTaXplCiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAgICAgLiAkU2VhcmNoIC4g
JyI+JyAuICc8YnI+JwogICAgICAgICAgICAuICRTdHJpbmdPcHRpb24KICAgICAgICAgICAgLiAk
U3RyaW5nU2VsZWN0CiAgICAgICAgICAgIC4gJzxpbnB1dCBjbGFzcz0iYnV0dG9uIiB0eXBlPSJz
dWJtaXQiIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAuICc6
OkJ1dHRvblNlYXJjaCIgdmFsdWU9IicKICAgICAgICAgICAgLiAkU2VsZi0+e0xhbmd1YWdlT2Jq
ZWN0fS0+VHJhbnNsYXRlKCAiU2VhcmNoIiApCiAgICAgICAgICAgIC4gJyI+JwogICAgICAgICAg
ICAuICcmbmJzcDsnCiAgICAgICAgICAgIC4gJzxpbnB1dCBjbGFzcz0iYnV0dG9uIiB0eXBlPSJz
dWJtaXQiIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAuICc6
OkJ1dHRvbkNsZWFyIiB2YWx1ZT0iJwogICAgICAgICAgICAuICRTZWxmLT57TGFuZ3VhZ2VPYmpl
Y3R9LT5UcmFuc2xhdGUoICJDbGVhciIgKQogICAgICAgICAgICAuICciPic7CiAgICB9CgogICAg
cmV0dXJuICRTdHJpbmc7Cn0KCj1pdGVtIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2gg
Zm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRh
R2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAk
SXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAk
U2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEk
UGFyYW17S2V5fSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAg
ICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5
IScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEK
ICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUg
PSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJFNlbGYt
PntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoK
ICAgIHJldHVybiAkVmFsdWU7Cn0KCj1pdGVtIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBh
IHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2Vh
cmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICk7
Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkg
PSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXco
S2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAg
ICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4g
J2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAog
ICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMg
aGFzaCB3aXRoIHZhbHVlcyBmb3IgdGhlIGlucHV0IGZpZWxkCiAgICBteSAlRm9ybURhdGE7Cgog
ICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFy
YW17VmFsdWV9OwogICAgfQoKICAgICMgY3JlYXRlIGlucHV0IGZpZWxkCiAgICBteSAkSW5wdXRT
dHJpbmcgPSAkU2VsZi0+SW5wdXRDcmVhdGUoCiAgICAgICAgJUZvcm1EYXRhLAogICAgICAgIEtl
eSAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJdGVtICAgPT4gJFBhcmFte0l0ZW19LAogICAg
ICAgIEl0ZW1JZCA9PiAkUGFyYW17S2V5fSwKICAgICk7CgogICAgcmV0dXJuICRJbnB1dFN0cmlu
ZzsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdh
cmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMg
c29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywg
c2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFH
UEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251
Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2aXNpb246
IDEuMiAkICREYXRlOiAyMDE2LzA1LzE4IDA3OjQwOjQ3ICQKCj1jdXQK
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dENJQ2xhc3NSZWZl
cmVuY2UucG0gLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
NiBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vY2hh
bmdlZCBieToKIyAqIE1hcnRpbihkb3QpQmFsemFyZWsoYXQpY2FwZShkYXNoKWl0KGRvdClkZQoj
ICogU3RlZmFuKGRvdClNZWhsaWcoYXQpY2FwZS1pdChkb3QpZGUKIyAqIFRvcnN0ZW4oZG90KVRo
YXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEZyYW5rKGRvdClPYmVyZW5kZXIoYXQpY2FwZS1pdChk
b3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBN
YXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogRnJhbmsoZG90KUph
Y3F1ZW1pbihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgLS0KIyAkSWQ6IExheW91dENJQ2xhc3NS
ZWZlcmVuY2UucG0sdiAxLjIgMjAxNi8wMy8yMiAxMjowMTo0NSBmamFjcXVlbWluIEV4cCAkCiMg
LS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9y
IGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5m
b3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUg
aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCnBhY2thZ2UgS2VybmVs
OjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDSUNsYXNzUmVmZXJlbmNlOwoK
dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAg
ICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6
T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxv
ZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5
c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JwopOwoKPWhlYWQx
IE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbUxheW91dENJQ2xhc3NS
ZWZlcmVuY2UgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxh
eW91dCBmdW5jdGlvbnMgb2YgQ0lDbGFzc1JlZmVyZW5jZSBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0
Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6
T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9i
amVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXRDSUNsYXNzUmVm
ZXJlbmNlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87
CgogICAgI2FsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuLi4KICAgIG15ICRTZWxmID0ge307
CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntDSUNsYXNzUmVmZXJlbmNl
Q2xhc3NJRH0gPSAwOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSAgICAgICAgID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9
ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwogICAgJFNlbGYt
PntMYXlvdXRPYmplY3R9ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1
dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fSA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgJFNl
bGYtPntDb25maWdJdGVtT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5
c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICAgICAgICAg
ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgJFNlbGYtPntQ
YXJhbU9iamVjdH0gICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6
V2ViOjpSZXF1ZXN0Jyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBPdXRwdXRTdHJpbmdD
cmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9i
amVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChv
cHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgI3RyYW5zZm9ybSBhc2NpaSB0byBodG1sLi4uCiAg
ICAkUGFyYW17VmFsdWV9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAg
ICAgIFRleHQgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9
PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0ZW0gRm9ybURhdGFH
ZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJl
ZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6
Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZv
cm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgI2NoZWNrIG5l
ZWRlZCBzdHVmZi4uLgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAg
ICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2Jq
ZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAg
ICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICNn
ZXQgc2VsZWN0ZWQgQ0lDbGFzc1JlZmVyZW5jZS4uLgogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRT
ZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAg
ICAjY2hlY2sgc2VhcmNoIGJ1dHRvbi4uCiAgICBpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5H
ZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWFyY2gnICkgKSB7CiAg
ICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0KICAg
ICAgICAgICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJh
bXtLZXl9IC4gJzo6U2VhcmNoJyApOwogICAgfQoKICAgICNjaGVjayBzZWxlY3QgYnV0dG9uLi4u
CiAgICBlbHNpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBh
cmFte0tleX0gLiAnOjpCdXR0b25TZWxlY3QnICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVl
fSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0g
LiAnOjpTZWxlY3QnICk7CiAgICB9CgogICAgI2NoZWNrIGNsZWFyIGJ1dHRvbi4uLgogICAgZWxz
aWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9
IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwog
ICAgfQogICAgZWxzZSB7CgogICAgICAgICNyZXNldCB2YWx1ZSBpZiBzZWFyY2ggZmllbGQgaXMg
ZW1wdHkuLi4KICAgICAgICBpZiAoCiAgICAgICAgICAgICEkU2VsZi0+e1BhcmFtT2JqZWN0fS0+
R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNoJyApCiAgICAgICAgICAg
ICYmIGRlZmluZWQgJEZvcm1EYXRhe1ZhbHVlfQogICAgICAgICAgICApCiAgICAgICAgewogICAg
ICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJyc7CiAgICAgICAgfQoKICAgICAgICAjY2hlY2sg
cmVxdWlyZWQgb3B0aW9uLi4uCiAgICAgICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntS
ZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRQYXJhbXtJdGVt
fS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICAgICAgICAgICRG
b3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUZvcm1E
YXRhOwp9Cgo9aXRlbSBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBt
eSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJ
dGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwp
CiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVhdGUg
ewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjY2hlY2sgbmVlZGVkIHN0dWZm
Li4uCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEk
UGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2co
CiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVz
c2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5l
ZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9
CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAg
ICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAg
IH0KCiAgICBpZiAoCiAgICAgICAgISRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZmVyZW5jZWRD
SUNsYXNzSUR9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVmZXJlbmNlZENJ
Q2xhc3NOYW1lfQogICAgICAgICkKICAgIHsKCiAgICAgICAgbXkgJEl0ZW1EYXRhUmVmID0gJFNl
bGYtPntHZW5lcmFsQ2F0YWxvZ09iamVjdH0tPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+
ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICRQYXJhbXtJ
dGVtfS0+e0lucHV0fS0+e1JlZmVyZW5jZWRDSUNsYXNzTmFtZX0sCiAgICAgICAgKTsKCiAgICAg
ICAgaWYgKCAhJEl0ZW1EYXRhUmVmIHx8ICEoICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH0gKSApIHsK
ICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlv
cml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklUU01Db25maWdJ
dGVtTGF5b3V0Q0lDbGFzc1JlZmVyZW5jZTogQ0ktQ2xhc3MgPCIKICAgICAgICAgICAgICAgICAg
ICAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZmVyZW5jZWRDSUNsYXNzTmFtZX0KICAgICAg
ICAgICAgICAgICAgICAuICI+IG5vdCBkZWZpbmVkIGluIEdlbmVyYWxDYXRhbG9nISIsCiAgICAg
ICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0NJ
Q2xhc3NSZWZlcmVuY2VDbGFzc0lEfSA9ICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAg
fQoKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVmZXJlbmNlZENJ
Q2xhc3NJRH0gKSB7CiAgICAgICAgJFNlbGYtPntDSUNsYXNzUmVmZXJlbmNlQ2xhc3NJRH0gPSAk
UGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWZlcmVuY2VkQ0lDbGFzc0lEfTsKICAgIH0KCiAgICBt
eSAkU2l6ZSAgICAgICAgID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57U2l6ZX0gfHwgNTA7CiAg
ICBteSAkU2VhcmNoICAgICAgID0gJyc7CiAgICBteSAkU3RyaW5nT3B0aW9uID0gJyc7CiAgICBt
eSAkU3RyaW5nU2VsZWN0ID0gJyc7CgogICAgIyBBdXRvQ29tcGxldGUgQ0lDbGFzcwogICAgbXkg
JENsYXNzID0gJ1c1MHBjIENJQ2xhc3NTZWFyY2gnOwoKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJh
bXtSZXF1aXJlZH0gfHwgJyc7CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH0gIHx8
ICcnOwoKICAgIGlmICgkUmVxdWlyZWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBWYWxpZGF0ZV9S
ZXF1aXJlZCc7CiAgICB9CgogICAgaWYgKCRJbnZhbGlkKSB7CiAgICAgICAgJENsYXNzIC49ICcg
U2VydmVyRXJyb3InOwogICAgfQoKICAgICMgQ0lDbGFzc1JlZmVyZW5jZSBzZWFyY2guLi4KICAg
IGlmICggJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0gKSB7
CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgc2VhcmNoIGZvciBuYW1lLi4uLgog
ICAgICAgIG15ICVDSVNlYXJjaExpc3QgICAgPSAoKTsKICAgICAgICBteSAkQ0lTZWFyY2hMaXN0
UmVmID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVk
KAogICAgICAgICAgICBOYW1lICAgICA9PiAnKicgLiAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAk
UGFyYW17S2V5fSB9LT57U2VhcmNofSAuICcqJywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAk
U2VsZi0+e0NJQ2xhc3NSZWZlcmVuY2VDbGFzc0lEfSBdLAogICAgICAgICk7CgogICAgICAgIGZv
ciBteSAkU2VhcmNoUmVzdWx0ICggQHskQ0lTZWFyY2hMaXN0UmVmfSApIHsKICAgICAgICAgICAg
bXkgJEN1cnJWZXJzaW9uRGF0YSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPlZlcnNpb25H
ZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFNlYXJjaFJlc3VsdCwKICAgICAg
ICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBp
ZiAoCiAgICAgICAgICAgICAgICAkQ3VyclZlcnNpb25EYXRhCiAgICAgICAgICAgICAgICAmJgog
ICAgICAgICAgICAgICAgKCByZWYoJEN1cnJWZXJzaW9uRGF0YSkgZXEgJ0hBU0gnICkgJiYKICAg
ICAgICAgICAgICAgICRDdXJyVmVyc2lvbkRhdGEtPntOYW1lfSAmJgogICAgICAgICAgICAgICAg
JEN1cnJWZXJzaW9uRGF0YS0+e051bWJlcn0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgJENJU2VhcmNoTGlzdHskU2VhcmNoUmVzdWx0fSA9ICRDdXJyVmVy
c2lvbkRhdGEtPntOYW1lfQogICAgICAgICAgICAgICAgICAgIC4gIiAoIgogICAgICAgICAgICAg
ICAgICAgIC4gJEN1cnJWZXJzaW9uRGF0YS0+e051bWJlcn0KICAgICAgICAgICAgICAgICAgICAu
ICIpIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
ICAgICAgIyBzZWFyY2ggZm9yIG51bWJlci4uLi4KICAgICAgICAkQ0lTZWFyY2hMaXN0UmVmID0g
JFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKAogICAg
ICAgICAgICBOdW1iZXIgICA9PiAnKicgLiAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17
S2V5fSB9LT57U2VhcmNofSAuICcqJywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkU2VsZi0+
e0NJQ2xhc3NSZWZlcmVuY2VDbGFzc0lEfSBdLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAk
U2VhcmNoUmVzdWx0ICggQHskQ0lTZWFyY2hMaXN0UmVmfSApIHsKICAgICAgICAgICAgbXkgJEN1
cnJWZXJzaW9uRGF0YSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPlZlcnNpb25HZXQoCiAg
ICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFNlYXJjaFJlc3VsdCwKICAgICAgICAgICAg
ICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoCiAg
ICAgICAgICAgICAgICAkQ3VyclZlcnNpb25EYXRhCiAgICAgICAgICAgICAgICAmJgogICAgICAg
ICAgICAgICAgKCByZWYoJEN1cnJWZXJzaW9uRGF0YSkgZXEgJ0hBU0gnICkgJiYKICAgICAgICAg
ICAgICAgICRDdXJyVmVyc2lvbkRhdGEtPntOYW1lfSAmJgogICAgICAgICAgICAgICAgJEN1cnJW
ZXJzaW9uRGF0YS0+e051bWJlcn0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgJENJU2VhcmNoTGlzdHskU2VhcmNoUmVzdWx0fSA9ICRDdXJyVmVyc2lvbkRh
dGEtPntOYW1lfQogICAgICAgICAgICAgICAgICAgIC4gIiAoIgogICAgICAgICAgICAgICAgICAg
IC4gJEN1cnJWZXJzaW9uRGF0YS0+e051bWJlcn0KICAgICAgICAgICAgICAgICAgICAuICIpIjsK
ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAg
IyBidWlsZCBzZWFyY2ggcmVzdWx0IHByZXNlbnRhdGlvbi4uLi4KICAgICAgICBpZiAoICVDSVNl
YXJjaExpc3QgJiYgc2NhbGFyKCBrZXlzICVDSVNlYXJjaExpc3QgKSA+IDEgKSB7CgogICAgICAg
ICAgICAjY3JlYXRlIG9wdGlvbiBsaXN0Li4uCiAgICAgICAgICAgICRTdHJpbmdPcHRpb24gPSAk
U2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgTmFt
ZSA9PiAkUGFyYW17S2V5fSAuICc6OlNlbGVjdCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IFwl
Q0lTZWFyY2hMaXN0LAogICAgICAgICAgICApOwogICAgICAgICAgICAkU3RyaW5nT3B0aW9uIC49
ICc8YnI+JzsKCiAgICAgICAgICAgICNjcmVhdGUgc2VsZWN0IGJ1dHRvbi4uLgogICAgICAgICAg
ICAkU3RyaW5nU2VsZWN0ID0gJzxpbnB1dCBjbGFzcz0iYnV0dG9uIiB0eXBlPSJzdWJtaXQiIG5h
bWU9IicKICAgICAgICAgICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAgICAgIC4gJzo6
QnV0dG9uU2VsZWN0IiAnCiAgICAgICAgICAgICAgICAuICd2YWx1ZT0iJwogICAgICAgICAgICAg
ICAgLiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAiU2VsZWN0IiApCiAgICAg
ICAgICAgICAgICAuICciPiZuYnNwOyc7CgogICAgICAgICAgICAjc2V0IHNlYXJjaC4uLgogICAg
ICAgICAgICAkU2VhcmNoID0gJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+
e1NlYXJjaH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICglQ0lTZWFyY2hMaXN0KSB7CgogICAg
ICAgICAgICAkVmFsdWUgPSAoIGtleXMgJUNJU2VhcmNoTGlzdCApWzBdOwogICAgICAgICAgICBt
eSAkQ0lWZXJzaW9uRGF0YVJlZiA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPlZlcnNpb25H
ZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZhbHVlLAogICAgICAgICAgICAg
ICAgWE1MRGF0YUdldCAgID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDSU5h
bWUgPSAiIjsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDSVZlcnNpb25EYXRh
UmVmCiAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgKCByZWYoJENJVmVyc2lvbkRh
dGFSZWYpIGVxICdIQVNIJyApICYmCiAgICAgICAgICAgICAgICAkQ0lWZXJzaW9uRGF0YVJlZi0+
e05hbWV9ICYmCiAgICAgICAgICAgICAgICAkQ0lWZXJzaW9uRGF0YVJlZi0+e051bWJlcn0KICAg
ICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJENJTmFtZSA9ICRD
SVZlcnNpb25EYXRhUmVmLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAuICIgKCIKICAgICAg
ICAgICAgICAgICAgICAuICRDSVZlcnNpb25EYXRhUmVmLT57TnVtYmVyfQogICAgICAgICAgICAg
ICAgICAgIC4gIikiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjdHJhbnNmb3JtIGFzY2lp
IHRvIGh0bWwuLi4KICAgICAgICAgICAgJFNlYXJjaCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+
QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgIFRleHQgPT4gJENJTmFtZSB8fCAnJywKICAgICAg
ICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoK
ICAgIH0KCiAgICAjY3JlYXRlIENJQ2xhc3NSZWZlcmVuY2Ugc3RyaW5nLi4uCiAgICBlbHNpZiAo
JFZhbHVlKSB7CgogICAgICAgIG15ICRDSVZlcnNpb25EYXRhUmVmID0gJFNlbGYtPntDb25maWdJ
dGVtT2JqZWN0fS0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWYWx1
ZSwKICAgICAgICAgICAgWE1MRGF0YUdldCAgID0+IDAsCiAgICAgICAgKTsKICAgICAgICBteSAk
Q0lOYW1lID0gIiI7CgogICAgICAgIGlmICgKICAgICAgICAgICAgJENJVmVyc2lvbkRhdGFSZWYK
ICAgICAgICAgICAgJiYKICAgICAgICAgICAgKCByZWYoJENJVmVyc2lvbkRhdGFSZWYpIGVxICdI
QVNIJyApICYmCiAgICAgICAgICAgICRDSVZlcnNpb25EYXRhUmVmLT57TmFtZX0gJiYKICAgICAg
ICAgICAgJENJVmVyc2lvbkRhdGFSZWYtPntOdW1iZXJ9CiAgICAgICAgICAgICkKICAgICAgICB7
CiAgICAgICAgICAgICRDSU5hbWUgPSAkQ0lWZXJzaW9uRGF0YVJlZi0+e05hbWV9CiAgICAgICAg
ICAgICAgICAuICIgKCIKICAgICAgICAgICAgICAgIC4gJENJVmVyc2lvbkRhdGFSZWYtPntOdW1i
ZXJ9CiAgICAgICAgICAgICAgICAuICIpIjsKICAgICAgICB9CgogICAgICAgICN0cmFuc2Zvcm0g
YXNjaWkgdG8gaHRtbC4uLgogICAgICAgICRTZWFyY2ggPSAkU2VsZi0+e0xheW91dE9iamVjdH0t
PkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgPT4gJENJTmFtZSB8fCAnJywKICAgICAgICAg
ICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgQXV0b0NvbXBs
ZXRlIENJQ2xhc3MKICAgIG15ICRBdXRvQ29tcGxldGVDb25maWcgPQogICAgICAgICRTZWxmLT57
Q29uZmlnT2JqZWN0fS0+R2V0KCdJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uOjpGcm9udGVuZDo6
Q29tbW9uU2VhcmNoQXV0b0NvbXBsZXRlJyk7CgogICAgI2NyZWF0ZSBzdHJpbmcuLi4KICAgIG15
ICRTdHJpbmcgPSAnJzsKICAgIGlmICgKICAgICAgICAkQXV0b0NvbXBsZXRlQ29uZmlnCiAgICAg
ICAgJiYgcmVmKCRBdXRvQ29tcGxldGVDb25maWcpIGVxICdIQVNIJwogICAgICAgICYmICRBdXRv
Q29tcGxldGVDb25maWctPntBY3RpdmV9CiAgICAgICAgKQogICAgewoKICAgICAgICAkU2VsZi0+
e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDSUNsYXNzU2VhcmNo
QXV0b0NvbXBsZXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBtaW5R
dWVyeUxlbmd0aCAgICAgID0+ICRBdXRvQ29tcGxldGVDb25maWctPntNaW5RdWVyeUxlbmd0aH0g
ICAgICB8fCAyLAogICAgICAgICAgICAgICAgcXVlcnlEZWxheSAgICAgICAgICA9PiAkQXV0b0Nv
bXBsZXRlQ29uZmlnLT57UXVlcnlEZWxheX0gICAgICAgICAgfHwgMC4xLAogICAgICAgICAgICAg
ICAgdHlwZUFoZWFkICAgICAgICAgICA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57VHlwZUFoZWFk
fSAgICAgICAgICAgfHwgJ2ZhbHNlJywKICAgICAgICAgICAgICAgIG1heFJlc3VsdHNEaXNwbGF5
ZWQgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e01heFJlc3VsdHNEaXNwbGF5ZWR9IHx8IDIwLAog
ICAgICAgICAgICAgICAgZHluYW1pY1dpZHRoICAgICAgICA9PiAkQXV0b0NvbXBsZXRlQ29uZmln
LT57RHluYW1pY1dpZHRofSAgICAgICAgfHwgMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwog
ICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4g
J0NJQ2xhc3NTZWFyY2hJbml0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAg
ICBJdGVtSUQgICAgICAgICAgICAgPT4gJFBhcmFte0l0ZW1JZH0sCiAgICAgICAgICAgICAgICBD
bGFzc0lEICAgICAgICAgICAgPT4gJFNlbGYtPntDSUNsYXNzUmVmZXJlbmNlQ2xhc3NJRH0sCiAg
ICAgICAgICAgICAgICBBY3RpdmVBdXRvQ29tcGxldGUgPT4gJ3RydWUnLAogICAgICAgICAgICB9
LAogICAgICAgICk7CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91
dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudENJQ2xhc3NTZWFyY2gnLAog
ICAgICAgICk7CiAgICAgICAgJFN0cmluZyAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0i
JwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAg
ICAgICAgICAgLiAkVmFsdWUKICAgICAgICAgICAgLiAnIiBpZD0iJwogICAgICAgICAgICAuICRQ
YXJhbXtJdGVtSWR9IC4gJ1NlbGVjdGVkJwogICAgICAgICAgICAuICciLz4nCiAgICAgICAgICAg
IC4gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFte0tleX0K
ICAgICAgICAgICAgLiAnOjpTZWFyY2giIGNsYXNzPSInCiAgICAgICAgICAgIC4gJENsYXNzCiAg
ICAgICAgICAgIC4gJyIgaWQ9IicKICAgICAgICAgICAgLiAkUGFyYW17SXRlbUlkfQogICAgICAg
ICAgICAuICciIGNsYXNzaWQ9IicKICAgICAgICAgICAgLiAkU2VsZi0+e0NJQ2xhc3NSZWZlcmVu
Y2VDbGFzc0lEfQogICAgICAgICAgICAuICciIFNlYXJjaENsYXNzPSJDSUNsYXNzU2VhcmNoIiB2
YWx1ZT0iJwogICAgICAgICAgICAuICRTZWFyY2ggLiAnIi8+JzsKICAgIH0KICAgIGVsc2Ugewog
ICAgICAgICRTdHJpbmcgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJwogICAgICAgICAg
ICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAgICAgLiAk
VmFsdWUKICAgICAgICAgICAgLiAnIj4nCiAgICAgICAgICAgIC4gJzxpbnB1dCB0eXBlPSJUZXh0
IiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAgLiAnOjpTZWFy
Y2giIHNpemU9IicKICAgICAgICAgICAgLiAkU2l6ZQogICAgICAgICAgICAuICciIHZhbHVlPSIn
CiAgICAgICAgICAgIC4gJFNlYXJjaCAuICciPicgLiAnPGJyPicKICAgICAgICAgICAgLiAkU3Ry
aW5nT3B0aW9uCiAgICAgICAgICAgIC4gJFN0cmluZ1NlbGVjdAogICAgICAgICAgICAuICc8aW5w
dXQgY2xhc3M9ImJ1dHRvbiIgdHlwZT0ic3VibWl0IiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBh
cmFte0tleX0KICAgICAgICAgICAgLiAnOjpCdXR0b25TZWFyY2giIHZhbHVlPSInCiAgICAgICAg
ICAgIC4gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggIlNlYXJjaCIgKQogICAg
ICAgICAgICAuICciPicKICAgICAgICAgICAgLiAnJm5ic3A7JwogICAgICAgICAgICAuICc8aW5w
dXQgY2xhc3M9ImJ1dHRvbiIgdHlwZT0ic3VibWl0IiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBh
cmFte0tleX0KICAgICAgICAgICAgLiAnOjpCdXR0b25DbGVhciIgdmFsdWU9IicKICAgICAgICAg
ICAgLiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAiQ2xlYXIiICkKICAgICAg
ICAgICAgLiAnIj4nOwogICAgfQoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aXRlbSBTZWFyY2hG
b3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNr
ZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5v
ZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJj
aEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVj
ayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAg
ICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09i
amVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAg
ICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoCiAgICAgICAgJFBhcmFt
e0l0ZW19LT57SW5wdXR9LT57U2VhcmNoSW5wdXRUeXBlfQogICAgICAgICYmICRQYXJhbXtJdGVt
fS0+e0lucHV0fS0+e1NlYXJjaElucHV0VHlwZX0gZXEgJ1BhdHRlcm4nCiAgICApIHsKCiAgICAg
ICAgbXkgQFZhbHVlcyA9IHF3e307CiAgICAgICAgaWYgKCAhJFNlbGYtPntDSUNsYXNzUmVmZXJl
bmNlQ2xhc3NJRH0gKSB7CgogICAgICAgICAgICBteSAkSXRlbURhdGFSZWYgPSAkU2VsZi0+e0dl
bmVyYWxDYXRhbG9nT2JqZWN0fS0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJ
VFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkUGFyYW17
SXRlbX0tPntJbnB1dH0tPntSZWZlcmVuY2VkQ0lDbGFzc05hbWV9LAogICAgICAgICAgICApOwoK
ICAgICAgICAgICAgaWYgKCAhJEl0ZW1EYXRhUmVmIHx8ICEoICRJdGVtRGF0YVJlZi0+e0l0ZW1J
RH0gKSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAg
ICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVz
c2FnZSAgPT4gIklUU01Db25maWdJdGVtTGF5b3V0Q0lDbGFzc1JlZmVyZW5jZTogQ0ktQ2xhc3Mg
PCIKICAgICAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWZl
cmVuY2VkQ0lDbGFzc05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gIj4gbm90IGRlZmlu
ZWQgaW4gR2VuZXJhbENhdGFsb2chIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0NJQ2xhc3NSZWZlcmVu
Y2VDbGFzc0lEfSA9ICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgICAgIH0KCiAgICAg
ICAgfQoKICAgICAgICBteSBAU2VhcmNoVmFsdWVzID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdl
dFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwoKICAgICAgICBTRUFSQ0hWQUxVRToKICAg
ICAgICBmb3IgbXkgJEN1cnJTZWFyY2hWYWx1ZSAoQFNlYXJjaFZhbHVlcykgewogICAgICAgICAg
ICBuZXh0IFNFQVJDSFZBTFVFIGlmICghJEN1cnJTZWFyY2hWYWx1ZSk7CgogICAgICAgICAgICBt
eSBAU2VhcmNoVmFsdWVQYXJ0cyA9IHNwbGl0KCdcfFx8JywgJEN1cnJTZWFyY2hWYWx1ZSk7Cgog
ICAgICAgICAgICBTRUFSQ0hWQUxVRVBBUlQ6CiAgICAgICAgICAgIGZvciBteSAkQ3VyclNlYXJj
aFZhbHVlUGFydCAoQFNlYXJjaFZhbHVlUGFydHMpIHsKICAgICAgICAgICAgICAgIG5leHQgU0VB
UkNIVkFMVUVQQVJUIGlmICghJEN1cnJTZWFyY2hWYWx1ZVBhcnQpOwoKICAgICAgICAgICAgICAg
ICMgY2hlY2sgcGF0dGVybiBmb3IgaWQKICAgICAgICAgICAgICAgIGlmICgkQ3VyclNlYXJjaFZh
bHVlUGFydCA9fiBtL15cW0lEXF0oWzAtOV0rKSQvaSkgewogICAgICAgICAgICAgICAgICAgIHB1
c2goQFZhbHVlcywgJDEpOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IFNFQVJDSFZBTFVFUEFS
VDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJEN1cnJTZWFyY2hWYWx1
ZVBhcnQgPX4gbS9eXFtOdW1iZXJcXShbMC05Kl0rKSQvaSkgewogICAgICAgICAgICAgICAgICAg
IG15ICRDSVNlYXJjaExpc3RSZWYgPSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJ
dGVtU2VhcmNoRXh0ZW5kZWQoCiAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlciAgID0+ICQx
LAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRTZWxmLT57Q0lDbGFzc1Jl
ZmVyZW5jZUNsYXNzSUR9IF0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAg
ICAgICBmb3IgbXkgJFNlYXJjaFJlc3VsdCAoIEB7JENJU2VhcmNoTGlzdFJlZn0gKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQFZhbHVlcywgJFNlYXJjaFJlc3VsdCk7CiAgICAgICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0IFNFQVJDSFZBTFVFUEFSVDsK
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQ0lTZWFyY2hMaXN0UmVmID0g
JFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKAogICAg
ICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICRDdXJyU2VhcmNoVmFsdWVQYXJ0LAogICAgICAg
ICAgICAgICAgICAgIENsYXNzSURzID0+IFsgJFNlbGYtPntDSUNsYXNzUmVmZXJlbmNlQ2xhc3NJ
RH0gXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFNlYXJjaFJl
c3VsdCAoIEB7JENJU2VhcmNoTGlzdFJlZn0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaChA
VmFsdWVzLCAkU2VhcmNoUmVzdWx0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgIH0KCiAgICAgICAgaWYgKCBzY2FsYXIoQFZhbHVlcykgPCAxIHx8ICEkVmFsdWVzWzBd
ICkgewogICAgICAgICAgICBAVmFsdWVzID0gQFNlYXJjaFZhbHVlczsKICAgICAgICB9CgogICAg
ICAgIHJldHVybiBcQFZhbHVlczsKICAgIH0gZWxzZSB7CgogICAgICAgICMgZ2V0IGZvcm0gZGF0
YQogICAgICAgIG15ICRWYWx1ZTsKICAgICAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAg
ICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICAgICAgfQogICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAkVmFsdWUgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFt
ID0+ICRQYXJhbXtLZXl9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFZhbHVlOwogICAg
fQp9Cgo9aXRlbSBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3Ry
aW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAog
ICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJj
aElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVj
ayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAg
ICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09i
amVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAg
ICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW5wdXRTdHJpbmcgPSAn
JzsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57U2VhcmNoSW5wdXRU
eXBlfQogICAgICAgICYmICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1NlYXJjaElucHV0VHlwZX0g
ZXEgJ1BhdHRlcm4nCiAgICApIHsKICAgICAgICBteSAkVmFsdWUgPSAnJzsKICAgICAgICBpZiAo
cmVmKCRQYXJhbXtWYWx1ZX0pIGVxICdBUlJBWScpIHsKICAgICAgICAgICAgZm9yIG15ICRUZW1w
VmFsdWUgKEB7JFBhcmFte1ZhbHVlfX0pIHsKICAgICAgICAgICAgICAgIGlmICgkVmFsdWUpIHsK
ICAgICAgICAgICAgICAgICAgICAkVmFsdWUgLj0gInx8IjsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGlmICgkVGVtcFZhbHVlID1+IG0vXlswLTldKyQvKSB7CiAgICAgICAgICAg
ICAgICAgICAgJFZhbHVlIC49ICJbSURdIiAuICRUZW1wVmFsdWU7CiAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRWYWx1ZSAuPSAkVGVtcFZhbHVlOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRJbnB1dFN0cmluZyA9
ICI8aW5wdXQgdHlwZT1cIlRleHRcIiBuYW1lPVwiJFBhcmFte0tleX1cIiBzaXplPVwiMzBcIiB2
YWx1ZT1cIiRWYWx1ZVwiPiI7CiAgICB9IGVsc2UgewogICAgICAgICMgaGFzaCB3aXRoIHZhbHVl
cyBmb3IgdGhlIGlucHV0IGZpZWxkCiAgICAgICAgbXkgJUZvcm1EYXRhOwoKICAgICAgICBpZiAo
ICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFyYW17
VmFsdWV9OwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgICAgICAk
SW5wdXRTdHJpbmcgPSAkU2VsZi0+SW5wdXRDcmVhdGUoCiAgICAgICAgICAgICVGb3JtRGF0YSwK
ICAgICAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBJdGVtICAgPT4g
JFBhcmFte0l0ZW19LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRJbnB1dFN0cmluZzsK
fQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUg
aXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29m
dHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2Vl
CnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwp
LiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9y
Zy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQ=
Iy0tCiNLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW1MYXlvdXRRdWV1ZVJlZmVyZW5j
ZS5wbSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMu
YS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQg
Ynk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIEFubmEo
ZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5n
ZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogRnJhbmsoZG90KUphY3F1ZW1pbihhdCljYXBl
LWl0KGRvdClkZQojCiMtLQojJElkOiBMYXlvdXRRdWV1ZVJlZmVyZW5jZS5wbSx2IDEuMyAyMDE2
LzA1LzI3IDEzOjIzOjA2IGZqYWNxdWVtaW4gRXhwICQKIy0tCiMgVGhpcyBzb2Z0d2FyZSBjb21l
cyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5j
bG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91
CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl
bnNlcy9hZ3BsLnR4dC4KIy0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29u
ZmlnSXRlbTo6TGF5b3V0UXVldWVSZWZlcmVuY2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7
CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAn
S2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAg
ICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAg
ICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1
ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRl
bUxheW91dFF1ZXVlUmVmZXJlbmNlIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lO
T1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIFF1ZXVlUmVmZXJlbmNlIG9iamVjdHMKCj1v
dmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5l
bDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6
OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbUxheW91
dFF1ZXVlUmVmZXJlbmNlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJh
bSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2Vs
ZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2Jq
ZWN0fSAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57
TGFuZ3VhZ2VPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwog
ICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91
dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0VuY29kZU9iamVjdH0gICA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2Jq
ZWN0fSAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAg
JFNlbGYtPntRdWV1ZU9iamVjdH0gICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3Rl
bTo6UXVldWUnKTsKICAgICRTZWxmLT57UGFyYW1PYmplY3R9ICAgID0gJEtlcm5lbDo6T00tPkdl
dCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIHJldHVybiAkU2VsZjsKfQoK
PWl0ZW0gT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkg
JFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1
ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmlu
Z0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICN0cmFuc2Zvcm0g
YXNjaWkgdG8gaHRtbC4uLgogICAgJFBhcmFte1ZhbHVlfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0
fS0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ID0+ICRQYXJhbXtWYWx1ZX0gfHwgJycsCiAgICAg
ICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07
Cn0KCj1pdGVtIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UK
CiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAg
ICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAog
ICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwoKICAgICNjaGVjayBuZWVkZWQgc3R1ZmYuLi4KICAgIGZvciBteSAkQXJndW1lbnQgKHF3
KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAg
ICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+
ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgog
ICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15
ICVGb3JtRGF0YTsKCiAgICAjZ2V0IHNlbGVjdGVkIENJQ2xhc3NSZWZlcmVuY2UuLi4KICAgICRG
b3JtRGF0YXtWYWx1ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+
ICRQYXJhbXtLZXl9ICk7CgogICAgI2NoZWNrIHNlYXJjaCBidXR0b24uLgogICAgaWYgKCAkU2Vs
Zi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0
dG9uU2VhcmNoJyApICkgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtL
ZXl9IH0tPntTZWFyY2h9CiAgICAgICAgICAgID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBh
cmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcgKTsKICAgIH0KCiAgICAjY2hl
Y2sgc2VsZWN0IGJ1dHRvbi4uLgogICAgZWxzaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0
UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VsZWN0JyApICkgewogICAg
ICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBh
cmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VsZWN0JyApOwogICAgfQoKICAgICNjaGVjayBjbGVh
ciBidXR0b24uLi4KICAgIGVsc2lmICggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQ
YXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkJ1dHRvbkNsZWFyJyApICkgewogICAgICAgICRGb3Jt
RGF0YXtWYWx1ZX0gPSAnJzsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjcmVzZXQgdmFsdWUg
aWYgc2VhcmNoIGZpZWxkIGlzIGVtcHR5Li4uCiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFNl
bGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNl
YXJjaCcgKQogICAgICAgICAgICAmJiBkZWZpbmVkICRGb3JtRGF0YXtWYWx1ZX0KICAgICAgICAg
ICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwogICAgICAg
IH0KCiAgICAgICAgI2NoZWNrIHJlcXVpcmVkIG9wdGlvbi4uLgogICAgICAgIGlmICggJFBhcmFt
e0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAg
ICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0g
PSAxOwogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0K
CiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWl0ZW0gSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEg
aW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRl
KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEs
ICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1
dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAg
I2NoZWNrIG5lZWRlZCBzdHVmZi4uLgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0p
KSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxm
LT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywK
ICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAg
ICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAkVmFsdWUgPSAn
JzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQ
YXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1Zh
bHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57
VmFsdWVEZWZhdWx0fTsKICAgIH0KCiAgICBteSAkU2l6ZSAgICAgICAgID0gJFBhcmFte0l0ZW19
LT57SW5wdXR9LT57U2l6ZX0gfHwgNTA7CiAgICBteSAkU2VhcmNoICAgICAgID0gJyc7CiAgICBt
eSAkU3RyaW5nT3B0aW9uID0gJyc7CiAgICBteSAkU3RyaW5nU2VsZWN0ID0gJyc7CiAgICBteSAk
Q2xhc3MgICAgICAgID0gJ1c1MHBjIFF1ZXVlU2VhcmNoJzsKICAgIG15ICRSZXF1aXJlZCAgICAg
PSAkUGFyYW17UmVxdWlyZWR9IHx8ICcnOwogICAgbXkgJEludmFsaWQgICAgICA9ICRQYXJhbXtJ
bnZhbGlkfSB8fCAnJzsKICAgIG15ICRJdGVtSWQgICAgICAgPSAkUGFyYW17SXRlbUlkfSB8fCAn
JzsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVx
dWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNl
cnZlckVycm9yJzsKICAgIH0KCiAgICAjIFF1ZXVlUmVmZXJlbmNlIHNlYXJjaC4uLgogICAgaWYg
KCAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57U2VhcmNofSApIHsKCiAg
ICAgICAgbXkgJFNlYXJjaCA9ICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0t
PntTZWFyY2h9IHx8ICcnOwoKICAgICAgICAjIHdvcmthcm91bmQsIGFsbCBhdXRvIGNvbXBsZXRp
b24gcmVxdWVzdHMgZ2V0IHBvc3RlZCBieSB1dGY4IGFueXdheQogICAgICAgICMgY29udmVydCBh
bnkgdG8gOGJpdCBzdHJpbmcgaWYgYXBwbGljYXRpb24gaXMgbm90IHJ1bm5pbmcgaW4gdXRmOAoj
ICAgICAgICBpZiAoICEkU2VsZi0+e0VuY29kZU9iamVjdH0tPkVuY29kZUludGVybmFsVXNlZCgp
ICkgewojICAgICAgICAgICAgJFNlYXJjaCA9ICRTZWxmLT57RW5jb2RlT2JqZWN0fS0+Q29udmVy
dCgKIyAgICAgICAgICAgICAgICBUZXh0ID0+ICRTZWFyY2gsCiMgICAgICAgICAgICAgICAgRnJv
bSA9PiAndXRmLTgnLAojICAgICAgICAgICAgICAgIFRvICAgPT4gJFNlbGYtPntMYXlvdXRPYmpl
Y3R9LT57VXNlckNoYXJzZXR9LAojICAgICAgICAgICAgKTsKIyAgICAgICAgfQoKICAgICAgICAk
U2VhcmNoID1+IHMvXF8vXC4vZzsKICAgICAgICAkU2VhcmNoID1+IHMvXCUvXC5cKi9nOwogICAg
ICAgICRTZWFyY2ggPX4gcy9cKi9cLlwqL2c7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg
ICAgICMgc2VhcmNoIGZvciBuYW1lLi4uLgogICAgICAgIG15ICVRdWV1ZXMgPSAkU2VsZi0+e1F1
ZXVlT2JqZWN0fS0+UXVldWVMaXN0KAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICk7
CgogICAgICAgIG15ICVRdWV1ZUxpc3QgPSAoKTsKICAgICAgICBmb3IgbXkgJFF1ZXVlSUQgKCBr
ZXlzICVRdWV1ZXMgKSB7CiAgICAgICAgICAgIGlmICggJFF1ZXVlc3skUXVldWVJRH0gPX4gLyRT
ZWFyY2gvaSApIHsKICAgICAgICAgICAgICAgICRRdWV1ZUxpc3R7JFF1ZXVlSUR9CiAgICAgICAg
ICAgICAgICAgICAgPSAkUXVldWVzeyRRdWV1ZUlEfQogICAgICAgICAgICAgICAgICAgIC4gIiAo
IgogICAgICAgICAgICAgICAgICAgIC4gJFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAuICIp
IjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAg
ICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0IHByZXNlbnRhdGlvbi4uLi4KICAgICAgICBpZiAoICVR
dWV1ZUxpc3QgJiYgc2NhbGFyKCBrZXlzICVRdWV1ZUxpc3QgKSA+IDEgKSB7CgogICAgICAgICAg
ICAjY3JlYXRlIG9wdGlvbiBsaXN0Li4uCiAgICAgICAgICAgICRTdHJpbmdPcHRpb24gPSAkU2Vs
Zi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgTmFtZSAg
ICAgICAgPT4gJFBhcmFte0tleX0gLiAnOjpTZWxlY3QnLAogICAgICAgICAgICAgICAgRGF0YSAg
ICAgICAgPT4gXCVRdWV1ZUxpc3QsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAog
ICAgICAgICAgICApOwogICAgICAgICAgICAkU3RyaW5nT3B0aW9uIC49ICc8YnI+JzsKCiAgICAg
ICAgICAgICNjcmVhdGUgc2VsZWN0IGJ1dHRvbi4uLgogICAgICAgICAgICAkU3RyaW5nU2VsZWN0
ID0gJzxpbnB1dCBjbGFzcz0iYnV0dG9uIiB0eXBlPSJzdWJtaXQiIG5hbWU9IicKICAgICAgICAg
ICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAgICAgIC4gJzo6QnV0dG9uU2VsZWN0IiAn
CiAgICAgICAgICAgICAgICAuICd2YWx1ZT0iJwogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xh
bmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAiU2VsZWN0IiApCiAgICAgICAgICAgICAgICAuICci
PiZuYnNwOyc7CgogICAgICAgICAgICAjc2V0IHNlYXJjaC4uLgogICAgICAgICAgICAkU2VhcmNo
ID0gJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH07CiAgICAg
ICAgfQogICAgICAgIGVsc2lmICglUXVldWVMaXN0KSB7CiAgICAgICAgICAgICRWYWx1ZSA9ICgg
a2V5cyAlUXVldWVMaXN0IClbMF07CiAgICAgICAgICAgIG15ICVRdWV1ZURhdGEgPSAkU2VsZi0+
e1F1ZXVlT2JqZWN0fS0+UXVldWVHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkVmFsdWUsCiAg
ICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRRdWV1ZU5hbWUgPSAiIjsKCiAgICAgICAgICAg
IGlmICggJVF1ZXVlRGF0YSAmJiAkUXVldWVEYXRhe05hbWV9ICkgewogICAgICAgICAgICAgICAg
JFF1ZXVlTmFtZSA9ICRRdWV1ZURhdGF7TmFtZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICN0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbC4uLgogICAgICAgICAgICAkU2VhcmNoID0gJFNlbGYt
PntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCA9PiAkUXVl
dWVOYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAg
ICAgICAgKTsKICAgICAgICB9CgogICAgfQoKICAgICNjcmVhdGUgQ0lDbGFzc1JlZmVyZW5jZSBz
dHJpbmcuLi4KICAgIGVsc2lmICgkVmFsdWUpIHsKCiAgICAgICAgbXkgJVF1ZXVlRGF0YSA9ICRT
ZWxmLT57UXVldWVPYmplY3R9LT5RdWV1ZUdldCgKICAgICAgICAgICAgSUQgPT4gJFZhbHVlLAog
ICAgICAgICk7CiAgICAgICAgbXkgJFF1ZXVlTmFtZSA9ICIiOwoKICAgICAgICBpZiAoICVRdWV1
ZURhdGEgJiYgJFF1ZXVlRGF0YXtOYW1lfSApIHsKICAgICAgICAgICAgJFF1ZXVlTmFtZSA9ICRR
dWV1ZURhdGF7TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjdHJhbnNmb3JtIGFzY2lpIHRvIGh0
bWwuLi4KICAgICAgICAkU2VhcmNoID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1s
KAogICAgICAgICAgICBUZXh0ID0+ICRRdWV1ZU5hbWUgfHwgJycsCiAgICAgICAgICAgIEhUTUxS
ZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEF1dG9Db21wbGV0ZSBDSUNs
YXNzCiAgICBteSAkQXV0b0NvbXBsZXRlQ29uZmlnCiAgICAgICAgPSAkU2VsZi0+e0NvbmZpZ09i
amVjdH0tPkdldCgnSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjo6RnJvbnRlbmQ6OkNvbW1vblNl
YXJjaEF1dG9Db21wbGV0ZScpOwoKICAgICNjcmVhdGUgc3RyaW5nLi4uCiAgICBteSAkU3RyaW5n
ID0gJyc7CiAgICBpZiAoCiAgICAgICAgJEF1dG9Db21wbGV0ZUNvbmZpZwogICAgICAgICYmIHJl
ZigkQXV0b0NvbXBsZXRlQ29uZmlnKSBlcSAnSEFTSCcKICAgICAgICAmJiAkQXV0b0NvbXBsZXRl
Q29uZmlnLT57QWN0aXZlfQogICAgICAgICkKICAgIHsKCiAgICAgICAgJFNlbGYtPntMYXlvdXRP
YmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVldWVTZWFyY2hBdXRvQ29tcGxl
dGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIG1pblF1ZXJ5TGVuZ3Ro
ICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e01pblF1ZXJ5TGVuZ3RofSAgICAgIHx8IDIs
CiAgICAgICAgICAgICAgICBxdWVyeURlbGF5ICAgICAgICAgID0+ICRBdXRvQ29tcGxldGVDb25m
aWctPntRdWVyeURlbGF5fSAgICAgICAgICB8fCAwLjEsCiAgICAgICAgICAgICAgICB0eXBlQWhl
YWQgICAgICAgICAgID0+ICRBdXRvQ29tcGxldGVDb25maWctPntUeXBlQWhlYWR9ICAgICAgICAg
ICB8fCAnZmFsc2UnLAogICAgICAgICAgICAgICAgbWF4UmVzdWx0c0Rpc3BsYXllZCA9PiAkQXV0
b0NvbXBsZXRlQ29uZmlnLT57TWF4UmVzdWx0c0Rpc3BsYXllZH0gfHwgMjAsCiAgICAgICAgICAg
ICAgICBkeW5hbWljV2lkdGggICAgICAgID0+ICRBdXRvQ29tcGxldGVDb25maWctPntEeW5hbWlj
V2lkdGh9ICAgICAgICB8fCAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJFNl
bGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVldWVTZWFy
Y2hJbml0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtSUQgICAg
ICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICAgICAgICAgIEFjdGl2ZUF1dG9Db21wbGV0ZSA9
PiAndHJ1ZScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJFN0cmluZyA9
ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUg
PT4gJ0FnZW50UXVldWVTZWFyY2gnLAogICAgICAgICk7CiAgICAgICAgJFN0cmluZwogICAgICAg
ICAgICA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFt
e0tleX0KICAgICAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgICAgICAuICRWYWx1ZQogICAg
ICAgICAgICAuICciIGlkPSInCiAgICAgICAgICAgIC4gJEl0ZW1JZCAuICdTZWxlY3RlZCcKICAg
ICAgICAgICAgLiAnIi8+JwogICAgICAgICAgICAuICc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0i
JwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJzo6U2VhcmNoIiBjbGFz
cz0iJwogICAgICAgICAgICAuICRDbGFzcwogICAgICAgICAgICAuICciIGlkPSInCiAgICAgICAg
ICAgIC4gJEl0ZW1JZAogICAgICAgICAgICAuICciIFNlYXJjaENsYXNzPSInCiAgICAgICAgICAg
IC4gJ1F1ZXVlU2VhcmNoJwogICAgICAgICAgICAuICciIHZhbHVlPSInCiAgICAgICAgICAgIC4g
JFNlYXJjaCAuICciLz4nOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFN0cmluZwogICAgICAg
ICAgICA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFt
e0tleX0KICAgICAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgICAgICAuICRWYWx1ZSAuICci
PicKICAgICAgICAgICAgLiAnPGlucHV0IHR5cGU9IlRleHQiIG5hbWU9IicKICAgICAgICAgICAg
LiAkUGFyYW17S2V5fQogICAgICAgICAgICAuICc6OlNlYXJjaCIgc2l6ZT0iJwogICAgICAgICAg
ICAuICRTaXplCiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAgICAgLiAkU2VhcmNo
IC4gJyI+JyAuICc8YnI+JwogICAgICAgICAgICAuICRTdHJpbmdPcHRpb24KICAgICAgICAgICAg
LiAkU3RyaW5nU2VsZWN0CiAgICAgICAgICAgIC4gJzxpbnB1dCBjbGFzcz0iYnV0dG9uIiB0eXBl
PSJzdWJtaXQiIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAu
ICc6OkJ1dHRvblNlYXJjaCIgdmFsdWU9IicKICAgICAgICAgICAgLiAkU2VsZi0+e0xhbmd1YWdl
T2JqZWN0fS0+VHJhbnNsYXRlKCAiU2VhcmNoIiApCiAgICAgICAgICAgIC4gJyI+JwogICAgICAg
ICAgICAuICcmbmJzcDsnCiAgICAgICAgICAgIC4gJzxpbnB1dCBjbGFzcz0iYnV0dG9uIiB0eXBl
PSJzdWJtaXQiIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAu
ICc6OkJ1dHRvbkNsZWFyIiB2YWx1ZT0iJwogICAgICAgICAgICAuICRTZWxmLT57TGFuZ3VhZ2VP
YmplY3R9LT5UcmFuc2xhdGUoICJDbGVhciIgKQogICAgICAgICAgICAuICciPic7CiAgICB9Cgog
ICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1pdGVtIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFy
Y2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1E
YXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9
PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkg
KCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAo
ICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAg
ICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQg
S2V5IScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRh
dGEKICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFs
dWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJFNl
bGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAg
fQoKICAgIHJldHVybiAkVmFsdWU7Cn0KCj1pdGVtIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0
ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+
U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAg
ICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFt
ICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAo
cXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAg
ICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkg
PT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEi
LAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAg
ICMgaGFzaCB3aXRoIHZhbHVlcyBmb3IgdGhlIGlucHV0IGZpZWxkCiAgICBteSAlRm9ybURhdGE7
CgogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAk
UGFyYW17VmFsdWV9OwogICAgfQoKICAgICMgY3JlYXRlIGlucHV0IGZpZWxkCiAgICBteSAkSW5w
dXRTdHJpbmcgPSAkU2VsZi0+SW5wdXRDcmVhdGUoCiAgICAgICAgJUZvcm1EYXRhLAogICAgICAg
IEtleSAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJdGVtICAgPT4gJFBhcmFte0l0ZW19LAog
ICAgICAgIEl0ZW1JZCA9PiAkUGFyYW17S2V5fSwKICAgICk7CgogICAgcmV0dXJuICRJbnB1dFN0
cmluZzsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29m
dHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRo
aXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWls
cywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24g
KEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cu
Z251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2aXNp
b246IDEuMyAkICREYXRlOiAyMDE2LzA1LzI3IDEzOjIzOjA2ICQKCj1jdXQKCg==
Iy0tCiNLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW1MYXlvdXRTZXJ2aWNlUmVmZXJl
bmNlLnBtIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYg
Yy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2NoYW5n
ZWQgYnk6CiMgKiBTdGVmYW4oZG90KU1laGxpZyhhdCljYXBlLWl0KGRvdClkZQojICogVG9yc3Rl
bihkb3QpVGhhdShhdCljYXBlLWl0KGRvdClkZQojICogRnJhbmsoZG90KU9iZXJlbmRlcihhdClj
YXBlLWl0KGRvdClkZQojICogQW5uYShkb3QpTGl0dmlub3ZhKGF0KWNhcGUoZGFzaClpdChkb3Qp
ZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBGcmFu
ayhkb3QpSmFjcXVlbWluKGF0KWNhcGUtaXQoZG90KWRlCiMKIy0tCiMkSWQ6IExheW91dFNlcnZp
Y2VSZWZlcmVuY2UucG0sdiAxLjMgMjAxNi8wNS8yNyAxMzoyMzowNiBmamFjcXVlbWluIEV4cCAk
CiMtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBG
b3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBp
bmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNl
ZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMtLQoKcGFja2FnZSBLZXJu
ZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFNlcnZpY2VSZWZlcmVuY2U7
Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgK
ICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVs
OjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAn
S2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVl
c3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVt
TGF5b3V0U2VydmljZVJlZmVyZW5jZSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZ
Tk9QU0lTCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBTZXJ2aWNlUmVmZXJlbmNlIG9iamVjdHMK
Cj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtl
cm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJu
ZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9
ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbUxh
eW91dFNlcnZpY2VSZWZlcmVuY2UnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwg
JVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15
ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntDb25m
aWdPYmplY3R9ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgJFNl
bGYtPntMYW5ndWFnZU9iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdl
Jyk7CiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICAgID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgJFNlbGYtPntTZXJ2
aWNlT2JqZWN0fSAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScp
OwogICAgJFNlbGYtPntQYXJhbU9iamVjdH0gICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBPdXRw
dXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAk
QmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAg
ICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsK
ICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgI3RyYW5zZm9ybSBhc2NpaSB0byBo
dG1sLi4uCiAgICAkUGFyYW17VmFsdWV9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJI
dG1sKAogICAgICAgIFRleHQgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVz
dWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0ZW0g
Rm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRG
b3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4g
J0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1
dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAg
I2NoZWNrIG5lZWRlZCBzdHVmZi4uLgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0p
KSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxm
LT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywK
ICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAg
ICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRh
OwoKICAgICNnZXQgc2VsZWN0ZWQgQ0lDbGFzc1JlZmVyZW5jZS4uLgogICAgJEZvcm1EYXRhe1Zh
bHVlfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tl
eX0gKTsKCiAgICAjY2hlY2sgc2VhcmNoIGJ1dHRvbi4uCiAgICBpZiAoICRTZWxmLT57UGFyYW1P
YmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWFyY2gn
ICkgKSB7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1Nl
YXJjaH0KICAgICAgICAgICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFt
ID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNoJyApOwogICAgfQoKICAgICNjaGVjayBzZWxlY3Qg
YnV0dG9uLi4uCiAgICBlbHNpZiAoICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFy
YW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWxlY3QnICkgKSB7CiAgICAgICAgJEZvcm1E
YXRhe1ZhbHVlfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBh
cmFte0tleX0gLiAnOjpTZWxlY3QnICk7CiAgICB9CgogICAgI2NoZWNrIGNsZWFyIGJ1dHRvbi4u
LgogICAgZWxzaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQ
YXJhbXtLZXl9IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVl
fSA9ICcnOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICNyZXNldCB2YWx1ZSBpZiBzZWFyY2gg
ZmllbGQgaXMgZW1wdHkuLi4KICAgICAgICBpZiAoCiAgICAgICAgICAgICEkU2VsZi0+e1BhcmFt
T2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNoJyApCiAg
ICAgICAgICAgICYmIGRlZmluZWQgJEZvcm1EYXRhe1ZhbHVlfQogICAgICAgICAgICApCiAgICAg
ICAgewogICAgICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJyc7CiAgICAgICAgfQoKICAgICAg
ICAjY2hlY2sgcmVxdWlyZWQgb3B0aW9uLi4uCiAgICAgICAgaWYgKCAkUGFyYW17SXRlbX0tPntJ
bnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRQ
YXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICAg
ICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVy
biBcJUZvcm1EYXRhOwp9Cgo9aXRlbSBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJp
bmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAg
S2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAo
b3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5w
dXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjY2hlY2sgbmVl
ZGVkIHN0dWZmLi4uCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAg
ICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmpl
Y3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAg
ICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlm
ICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1
ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVs
dH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZh
dWx0fTsKICAgIH0KCiAgICBteSAkU2l6ZSAgICAgICAgID0gJFBhcmFte0l0ZW19LT57SW5wdXR9
LT57U2l6ZX0gfHwgNTA7CiAgICBteSAkU2VhcmNoICAgICAgID0gJyc7CiAgICBteSAkU3RyaW5n
T3B0aW9uID0gJyc7CiAgICBteSAkU3RyaW5nU2VsZWN0ID0gJyc7CiAgICBteSAkQ2xhc3MgICAg
ICAgID0gJ1c1MHBjIFNlcnZpY2VTZWFyY2gnOwogICAgbXkgJFJlcXVpcmVkICAgICA9ICRQYXJh
bXtSZXF1aXJlZH0gfHwgJyc7CiAgICBteSAkSW52YWxpZCAgICAgID0gJFBhcmFte0ludmFsaWR9
IHx8ICcnOwogICAgbXkgJEl0ZW1JZCAgICAgICA9ICRQYXJhbXtJdGVtSWR9IHx8ICcnOwoKICAg
IGlmICgkUmVxdWlyZWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBWYWxpZGF0ZV9SZXF1aXJlZCc7
CiAgICB9CgogICAgaWYgKCRJbnZhbGlkKSB7CiAgICAgICAgJENsYXNzIC49ICcgU2VydmVyRXJy
b3InOwogICAgfQoKICAgICMgU2VydmljZVJlZmVyZW5jZSBzZWFyY2guLi4KICAgIGlmICggJFBh
cmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0gKSB7CgogICAgICAg
ICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgc2VhcmNoIGZvciBuYW1lLi4uLgogICAgICAgIG15
IEBTZXJ2aWNlSURzID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+U2VydmljZVNlYXJjaCgKICAg
ICAgICAgICAgTmFtZSAgID0+ICcqJyAuICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtL
ZXl9IH0tPntTZWFyY2h9IC4gJyonLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAp
OwogICAgICAgIG15ICVTZXJ2aWNlTGlzdCA9ICgpOwogICAgICAgIGZvciBteSAkQ3VycktleSAo
QFNlcnZpY2VJRHMpIHsKICAgICAgICAgICAgbXkgJVNlcnZpY2VEYXRhID0gJFNlbGYtPntTZXJ2
aWNlT2JqZWN0fS0+U2VydmljZUdldCgKICAgICAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkQ3Vy
cktleSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICApOwogICAg
ICAgICAgICBuZXh0IGlmICggISVTZXJ2aWNlRGF0YSApOwogICAgICAgICAgICAkU2VydmljZUxp
c3R7JEN1cnJLZXl9CiAgICAgICAgICAgICAgICA9ICRTZXJ2aWNlRGF0YXtOYW1lfQogICAgICAg
ICAgICAgICAgLiAiICgiCiAgICAgICAgICAgICAgICAuICRDdXJyS2V5CiAgICAgICAgICAgICAg
ICAuICIpIjsKICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgYnVp
bGQgc2VhcmNoIHJlc3VsdCBwcmVzZW50YXRpb24uLi4uCiAgICAgICAgaWYgKCAlU2VydmljZUxp
c3QgJiYgc2NhbGFyKCBrZXlzICVTZXJ2aWNlTGlzdCApID4gMSApIHsKCiAgICAgICAgICAgICNj
cmVhdGUgb3B0aW9uIGxpc3QuLi4KICAgICAgICAgICAgJFN0cmluZ09wdGlvbiA9ICRTZWxmLT57
TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQ
YXJhbXtLZXl9IC4gJzo6U2VsZWN0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVTZXJ2aWNl
TGlzdCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFN0cmluZ09wdGlvbiAuPSAnPGJyPic7
CgogICAgICAgICAgICAjY3JlYXRlIHNlbGVjdCBidXR0b24uLi4KICAgICAgICAgICAgJFN0cmlu
Z1NlbGVjdCA9ICc8aW5wdXQgY2xhc3M9ImJ1dHRvbiIgdHlwZT0ic3VibWl0IiBuYW1lPSInCiAg
ICAgICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgICAgICAuICc6OkJ1dHRvblNl
bGVjdCIgJwogICAgICAgICAgICAgICAgLiAndmFsdWU9IicKICAgICAgICAgICAgICAgIC4gJFNl
bGYtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggIlNlbGVjdCIgKQogICAgICAgICAgICAg
ICAgLiAnIj4mbmJzcDsnOwoKICAgICAgICAgICAgI3NldCBzZWFyY2guLi4KICAgICAgICAgICAg
JFNlYXJjaCA9ICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntTZWFyY2h9
OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoJVNlcnZpY2VMaXN0KSB7CiAgICAgICAgICAgICRW
YWx1ZSA9ICgga2V5cyAlU2VydmljZUxpc3QgKVswXTsKICAgICAgICAgICAgbXkgJVNlcnZpY2VE
YXRhID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+U2VydmljZUdldCgKICAgICAgICAgICAgICAg
IFNlcnZpY2VJRCA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJFNlcnZpY2VOYW1lID0gIiI7CgogICAgICAgICAg
ICBpZiAoICVTZXJ2aWNlRGF0YSAmJiAkU2VydmljZURhdGF7TmFtZX0gKSB7CiAgICAgICAgICAg
ICAgICAkU2VydmljZU5hbWUgPSAkU2VydmljZURhdGF7TmFtZX07CiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICN0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbC4uLgogICAgICAgICAgICAkU2VhcmNo
ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4
dCA9PiAkU2VydmljZU5hbWUgfHwgJycsCiAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9
PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9CgogICAgI2NyZWF0ZSBDSUNsYXNz
UmVmZXJlbmNlIHN0cmluZy4uLgogICAgZWxzaWYgKCRWYWx1ZSkgewoKICAgICAgICBteSAlU2Vy
dmljZURhdGEgPSAkU2VsZi0+e1NlcnZpY2VPYmplY3R9LT5TZXJ2aWNlR2V0KAogICAgICAgICAg
ICBTZXJ2aWNlSUQgPT4gJFZhbHVlLAogICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAg
ICApOwogICAgICAgIG15ICRTZXJ2aWNlTmFtZSA9ICIiOwoKICAgICAgICBpZiAoICVTZXJ2aWNl
RGF0YSAmJiAkU2VydmljZURhdGF7TmFtZX0gKSB7CiAgICAgICAgICAgICRTZXJ2aWNlTmFtZSA9
ICRTZXJ2aWNlRGF0YXtOYW1lfTsKICAgICAgICB9CgogICAgICAgICN0cmFuc2Zvcm0gYXNjaWkg
dG8gaHRtbC4uLgogICAgICAgICRTZWFyY2ggPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lp
Mkh0bWwoCiAgICAgICAgICAgIFRleHQgPT4gJFNlcnZpY2VOYW1lIHx8ICcnLAogICAgICAgICAg
ICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBBdXRvQ29tcGxl
dGUgQ0lDbGFzcwogICAgbXkgJEF1dG9Db21wbGV0ZUNvbmZpZwogICAgICAgID0gJFNlbGYtPntD
b25maWdPYmplY3R9LT5HZXQoJ0lUU01DSUF0dHJpYnV0ZUNvbGxlY3Rpb246OkZyb250ZW5kOjpD
b21tb25TZWFyY2hBdXRvQ29tcGxldGUnKTsKCiAgICAjY3JlYXRlIHN0cmluZy4uLgogICAgbXkg
JFN0cmluZyA9ICcnOwogICAgaWYgKCAgICRBdXRvQ29tcGxldGVDb25maWcKICAgICAgICAmJiBy
ZWYoJEF1dG9Db21wbGV0ZUNvbmZpZykgZXEgJ0hBU0gnCiAgICAgICAgJiYgJEF1dG9Db21wbGV0
ZUNvbmZpZy0+e0FjdGl2ZX0gKQogICAgewoKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0t
PkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZXJ2aWNlU2VhcmNoQXV0b0NvbXBsZXRlJywK
ICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBtaW5RdWVyeUxlbmd0aCAgICAg
ID0+ICRBdXRvQ29tcGxldGVDb25maWctPntNaW5RdWVyeUxlbmd0aH0gICAgICB8fCAyLAogICAg
ICAgICAgICAgICAgcXVlcnlEZWxheSAgICAgICAgICA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57
UXVlcnlEZWxheX0gICAgICAgICAgfHwgMC4xLAogICAgICAgICAgICAgICAgdHlwZUFoZWFkICAg
ICAgICAgICA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57VHlwZUFoZWFkfSAgICAgICAgICAgfHwg
J2ZhbHNlJywKICAgICAgICAgICAgICAgIG1heFJlc3VsdHNEaXNwbGF5ZWQgPT4gJEF1dG9Db21w
bGV0ZUNvbmZpZy0+e01heFJlc3VsdHNEaXNwbGF5ZWR9IHx8IDIwLAogICAgICAgICAgICAgICAg
ZHluYW1pY1dpZHRoICAgICAgICA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57RHluYW1pY1dpZHRo
fSAgICAgICAgfHwgMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57
TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlcnZpY2VTZWFyY2hJ
bml0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAg
ICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICAgICAgICAgIEFjdGl2ZUF1dG9Db21wbGV0ZSA9PiAn
dHJ1ZScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJFN0cmluZyA9ICRT
ZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4g
J0FnZW50U2VydmljZVNlYXJjaCcsCiAgICAgICAgKTsKICAgICAgICAkU3RyaW5nCiAgICAgICAg
ICAgID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17
S2V5fQogICAgICAgICAgICAuICciIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFZhbHVlCiAgICAg
ICAgICAgIC4gJyIgaWQ9IicKICAgICAgICAgICAgLiAkSXRlbUlkIC4gJ1NlbGVjdGVkJwogICAg
ICAgICAgICAuICciLz4nCiAgICAgICAgICAgIC4gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSIn
CiAgICAgICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAgLiAnOjpTZWFyY2giIGNsYXNz
PSInCiAgICAgICAgICAgIC4gJENsYXNzCiAgICAgICAgICAgIC4gJyIgaWQ9IicKICAgICAgICAg
ICAgLiAkSXRlbUlkCiAgICAgICAgICAgIC4gJyIgU2VhcmNoQ2xhc3M9IicKICAgICAgICAgICAg
LiAnU2VydmljZVNlYXJjaCcKICAgICAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgICAgICAu
ICRTZWFyY2ggLiAnIi8+JzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTdHJpbmcKICAgICAg
ICAgICAgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJh
bXtLZXl9CiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAgICAgLiAkVmFsdWUgLiAn
Ij4nCiAgICAgICAgICAgIC4gJzxpbnB1dCB0eXBlPSJUZXh0IiBuYW1lPSInCiAgICAgICAgICAg
IC4gJFBhcmFte0tleX0KICAgICAgICAgICAgLiAnOjpTZWFyY2giIHNpemU9IicKICAgICAgICAg
ICAgLiAkU2l6ZQogICAgICAgICAgICAuICciIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFNlYXJj
aCAuICciPicgLiAnPGJyPicKICAgICAgICAgICAgLiAkU3RyaW5nT3B0aW9uCiAgICAgICAgICAg
IC4gJFN0cmluZ1NlbGVjdAogICAgICAgICAgICAuICc8aW5wdXQgY2xhc3M9ImJ1dHRvbiIgdHlw
ZT0ic3VibWl0IiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAg
LiAnOjpCdXR0b25TZWFyY2giIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFNlbGYtPntMYW5ndWFn
ZU9iamVjdH0tPlRyYW5zbGF0ZSggIlNlYXJjaCIgKQogICAgICAgICAgICAuICciPicKICAgICAg
ICAgICAgLiAnJm5ic3A7JwogICAgICAgICAgICAuICc8aW5wdXQgY2xhc3M9ImJ1dHRvbiIgdHlw
ZT0ic3VibWl0IiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAg
LiAnOjpCdXR0b25DbGVhciIgdmFsdWU9IicKICAgICAgICAgICAgLiAkU2VsZi0+e0xhbmd1YWdl
T2JqZWN0fS0+VHJhbnNsYXRlKCAiQ2xlYXIiICkKICAgICAgICAgICAgLiAnIj4nOwogICAgfQoK
ICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aXRlbSBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2Vh
cmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3Jt
RGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0g
PT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15
ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgI2NoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYg
KCAhJFBhcmFte0tleX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVk
IEtleSEnCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBk
YXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZh
bHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRT
ZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAg
IH0KCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aXRlbSBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVh
dGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3Qt
PlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAg
ICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJh
bSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQg
KHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAg
ICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5
ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQh
IiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAg
ICAjIGhhc2ggd2l0aCB2YWx1ZXMgZm9yIHRoZSBpbnB1dCBmaWVsZAogICAgbXkgJUZvcm1EYXRh
OwoKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0g
JFBhcmFte1ZhbHVlfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBpbnB1dCBmaWVsZAogICAgbXkgJElu
cHV0U3RyaW5nID0gJFNlbGYtPklucHV0Q3JlYXRlKAogICAgICAgICVGb3JtRGF0YSwKICAgICAg
ICBLZXkgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSXRlbSAgID0+ICRQYXJhbXtJdGVtfSwK
ICAgICAgICBJdGVtSWQgPT4gJFBhcmFte0tleX0sCiAgICApOwoKICAgIHJldHVybiAkSW5wdXRT
dHJpbmc7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNv
ZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpU
aGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFp
bHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9u
IChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3
LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0Cgo9aGVhZDEgVkVSU0lPTgoKJFJldmlz
aW9uOiAxLjMgJCAkRGF0ZTogMjAxNi8wNS8yNyAxMzoyMzowNiAkCgo9Y3V0Cgo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dENJQXR0YWNobWVu
dC5wbSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMu
YS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQg
Ynk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBBbm5hKGRvdClM
aXR2aW5vdmEoYXQpY2FwZS1pdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBl
LWl0KGRvdClkZQojIC0tCiMgJElkOiBMYXlvdXRDSUF0dGFjaG1lbnQucG0sdiAxLjIgMjAxNi8w
NS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBB
QlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZp
bGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBu
b3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdw
bC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVt
OjpMYXlvdXRDSUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9i
amVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpM
YW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVs
OjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJywKICAgICdL
ZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jwop
OwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbUxheW91
dENJQXR0YWNobWVudCAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpB
bGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBDSUF0dGFjaG1lbnQgb2JqZWN0cwoKPW92ZXIgNAoKPWN1
dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06
Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpP
YmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00t
PkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtTGF5b3V0Q0lBdHRhY2ht
ZW50Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87Cgog
ICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAg
Ymxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSAgICAgICAg
ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57TGFu
Z3VhZ2VPYmplY3R9ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFn
ZScpOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0F0dGFjaG1l
bnRTdG9yYWdlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDSUF0
dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZScpOwogICAgJFNlbGYtPntMb2dPYmpl
Y3R9ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9n
Jyk7CiAgICAkU2VsZi0+e1BhcmFtT2JqZWN0fSAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5H
ZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0K
Cj1pdGVtIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15
ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFs
dWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAg
ICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFy
YW0gKSA9IEBfOwogICAgbXkgJFN0cmluZyA9ICIiOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVm
Zi4uLgogICAgZm9yZWFjaCAocXcoSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkg
ewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9y
JywgTWVzc2FnZSA9PiAiTmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9
CiAgICB9CgogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgIG15ICVBdHREaXJEYXRh
ICAgPSAoKTsKICAgICAgICBteSAkU2l6ZU5vdGUgICAgID0gIiI7CiAgICAgICAgbXkgJFJlYWxG
aWxlU2l6ZSA9IDA7CiAgICAgICAgbXkgJE1ENU5vdGUgICAgICA9ICIiOwogICAgICAgIG15ICRS
ZWFsTUQ1U3VtICAgPSAiIjsKCiAgICAgICAgIyBnZXQgc2F2ZWQgcHJvcGVydGllcyAoYXR0YWNo
bWVudCBkaXJlY3RvcnkgaW5mbykKICAgICAgICAlQXR0RGlyRGF0YSA9ICRTZWxmLT57QXR0YWNo
bWVudFN0b3JhZ2VPYmplY3R9LT5BdHRhY2htZW50U3RvcmFnZUdldERpcmVjdG9yeSgKICAgICAg
ICAgICAgSUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICApOwoKICAgICAgICBpZiAoCiAgICAg
ICAgICAgICRBdHREaXJEYXRhe1ByZWZlcmVuY2VzfS0+e0ZpbGVTaXplQnl0ZXN9CiAgICAgICAg
ICAgICYmCiAgICAgICAgICAgICRBdHREaXJEYXRhe1ByZWZlcmVuY2VzfS0+e01ENVN1bX0KICAg
ICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgZ2V0IHJlYWwgcHJvcGVydGllcyB0
byBjaGVjayBpZiB0aGUgYXR0YWNobWVudCBjb250ZW50IGhhcyBiZWVuIGNoYW5nZWQKICAgICAg
ICAgICAgbXkgJVJlYWxQcm9wZXJ0aWVzID0KICAgICAgICAgICAgICAgICRTZWxmLT57QXR0YWNo
bWVudFN0b3JhZ2VPYmplY3R9LT5BdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKAog
ICAgICAgICAgICAgICAgJUF0dERpckRhdGEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAg
ICAgJFJlYWxNRDVTdW0gICA9ICRSZWFsUHJvcGVydGllc3tSZWFsTUQ1U3VtfTsKICAgICAgICAg
ICAgJFJlYWxGaWxlU2l6ZSA9ICRSZWFsUHJvcGVydGllc3tSZWFsRmlsZVNpemV9OwoKICAgICAg
ICAgICAgbXkgJE1ENUNoZWNrRW5hYmxlZCA9CiAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZp
Z09iamVjdH0tPkdldCgnSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjo6QXR0YWNobWVudE1ENUNo
ZWNrJykgfHwgJyc7CiAgICAgICAgICAgIG15ICRTaXplQ2hlY2tFbmFibGVkID0KICAgICAgICAg
ICAgICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0
aW9uOjpBdHRhY2htZW50U2l6ZUNoZWNrJykgfHwgJyc7CgogICAgICAgICAgICBpZiAoICRTaXpl
Q2hlY2tFbmFibGVkICYmICRSZWFsRmlsZVNpemUgIT0gJEF0dERpckRhdGF7UHJlZmVyZW5jZXN9
LT57RmlsZVNpemVCeXRlc30gKSB7CiAgICAgICAgICAgICAgICAkU2l6ZU5vdGUgPSAiSW52YWxp
ZCBjb250ZW50IC0gZmlsZSBzaXplIG9uIGRpc2sgIgogICAgICAgICAgICAgICAgICAgIC4gImhh
cyBiZWVuIGNoYW5nZWQiOwoKICAgICAgICAgICAgICAgIGlmICggJFJlYWxGaWxlU2l6ZSA+ICgg
MTAyNCAqIDEwMjQgKSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVhbEZpbGVTaXplID0gc3By
aW50ZiAiJS4xZiBNQnl0ZXMiLCAoICRSZWFsRmlsZVNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFJlYWxGaWxlU2l6ZSA+
IDEwMjQgKSB7CiAgICAgICAgICAgICAgICAgICAgJFJlYWxGaWxlU2l6ZSA9IHNwcmludGYgIiUu
MWYgS0J5dGVzIiwgKCAoICRSZWFsRmlsZVNpemUgLyAxMDI0ICkgKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRSZWFsRmlsZVNp
emUgPSAkUmVhbEZpbGVTaXplIC4gJyBCeXRlcyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkTUQ1Q2hlY2tFbmFibGVkICYmICRSZWFsTUQ1U3Vt
IG5lICRBdHREaXJEYXRhe1ByZWZlcmVuY2VzfS0+e01ENVN1bX0gKSB7CiAgICAgICAgICAgICAg
ICAkTUQ1Tm90ZSA9ICJJbnZhbGlkIG1kNXN1bSAtIFRoZSBmaWxlIG1pZ2h0IGhhdmUgYmVlbiBj
aGFuZ2VkIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCB0aGUgYXR0
YWNobWVudCBwYXJ0IG9mIHRoZSBvdXRwdXQKICAgICAgICAkU3RyaW5nID0gJFNlbGYtPkJ1aWxk
QXR0YWNobWVudFByZXNlbnRhdGlvbigKICAgICAgICAgICAgRmlsZU5hbWUgICA9PiAkQXR0RGly
RGF0YXtGaWxlTmFtZX0sCiAgICAgICAgICAgIEZpbGVTaXplICAgPT4gJEF0dERpckRhdGF7UHJl
ZmVyZW5jZXN9LT57RmlsZVNpemV9LAogICAgICAgICAgICBEYXRhVHlwZSAgID0+ICRBdHREaXJE
YXRhe1ByZWZlcmVuY2VzfS0+e0RhdGFUeXBlfSwKICAgICAgICAgICAgU2l6ZU5vdGUgICA9PiAk
U2l6ZU5vdGUsCiAgICAgICAgICAgIFNpemVPbkRpc2sgPT4gJFJlYWxGaWxlU2l6ZSwKICAgICAg
ICAgICAgTUQ1Tm90ZSAgICA9PiAkTUQ1Tm90ZSwKICAgICAgICAgICAgQXR0YWNoSUQgICA9PiAk
QXR0RGlyRGF0YXtBdHREaXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFN0cmlu
ZzsKfQoKPWl0ZW0gRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5j
ZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAg
ICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYs
CiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSAp
ID0gQF87CiAgICBteSAlRm9ybURhdGE7CgogICAgbXkgJEF0dERpcklEID0gJFNlbGYtPntQYXJh
bU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICJJRCIgKSB8fCAnJzsK
ICAgIG15ICRBdHREaXJEZWwgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFt
ID0+ICRQYXJhbXtLZXl9IC4gIkRlbGV0ZSIgKTsKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFy
YW17Q29uZmlnSXRlbUlEfTsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGZvcmVh
Y2ggKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAg
ICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdl
ID0+ICJOZWVkICRfISIgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAg
ICAjZ2V0IHRoZSB1cGxvYWQgZmlsZS4uLi4KICAgIG15ICVVcGxvYWRTdHVmZiA9ICRTZWxmLT57
UGFyYW1PYmplY3R9LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgUGFyYW0gID0+ICRQYXJhbXtLZXl9
IC4gIlVwbG9hZCIsCiAgICAgICAgU291cmNlID0+ICdzdHJpbmcnLAogICAgKTsKCiAgICAjc2F2
ZSB0aGUgYXR0YWNobWVudCBpZiB0aGVyZSBpcyBvbmUuLi4KICAgIGlmICggKCVVcGxvYWRTdHVm
ZikgJiYgJENvbmZpZ0l0ZW1JRCApIHsKCiAgICAgICAgI3N0b3JlIHRoZSBhdHRhY2htZW50IGlu
IHRoZSBkZWZhdWx0IHN0b3JhZ2UgYmFja2VuZC4uLi4KICAgICAgICAkQXR0RGlySUQgPSAkU2Vs
Zi0+e0F0dGFjaG1lbnRTdG9yYWdlT2JqZWN0fS0+QXR0YWNobWVudFN0b3JhZ2VBZGQoCiAgICAg
ICAgICAgIERhdGFSZWYgID0+IFwkVXBsb2FkU3R1ZmZ7Q29udGVudH0sCiAgICAgICAgICAgIEZp
bGVOYW1lID0+ICRVcGxvYWRTdHVmZntGaWxlbmFtZX0sCiAgICAgICAgICAgIFN0b3JhZ2VCYWNr
ZW5kID0+CiAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnQXR0YWNo
bWVudFN0b3JhZ2U6OkRlZmF1bHRTdG9yYWdlQmFja2VuZE1vZHVsZScpLAogICAgICAgICAgICBV
c2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAg
ICAgICBEYXRhVHlwZSA9PiAkVXBsb2FkU3R1ZmZ7Q29udGVudFR5cGV9LAogICAgICAgICAgICAg
ICAgfQogICAgICAgICk7CgogICAgfQoKICAgICN4bWxfc3RvcmFnZSBzdG9yZXMgb25seSB0aGUg
cmVmZXJlbmNlIHRvIHRoZSBhdHRhY2htZW50IGRpcmVjdG9yeSBlbnRyeQogICAgI2dldCB0aGUg
QXR0YWNobWVudERpcmVjdG9yeS1JRCAoZWl0aGVyIGV4aXN0aW5nIG9yIGp1c3QgdXBsb2FkZWQp
Li4uCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gdW5kZWY7CgogICAgaWYgKCRBdHREaXJJRCkgewog
ICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkQXR0RGlySUQ7CiAgICB9CgogICAgaWYgKCAoJEF0
dERpckRlbCkgKSB7ICAgICMgJiYgISglVXBsb2FkU3R1ZmYpCiAgICAgICAgJEZvcm1EYXRhe1Zh
bHVlfSA9ICcnOwogICAgfQoKICAgICNzZXQgaW52YWxpZCBwYXJhbS4uLgogICAgaWYgKCAkUGFy
YW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAg
ICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3Jt
fS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZv
cm1EYXRhOwp9Cgo9aXRlbSBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAg
ICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+
ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9u
YWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVh
dGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVBdHREaXJEYXRhICAg
PSAoKTsKICAgIG15ICRTaXplTm90ZSAgICAgPSAiIjsKICAgIG15ICRSZWFsRmlsZVNpemUgPSAw
OwogICAgbXkgJE1ENU5vdGUgICAgICA9ICIiOwogICAgbXkgJFJlYWxNRDVTdW0gICA9ICIiOwoK
ICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgZm9yZWFjaCAocXcoS2V5IEl0ZW0pKSB7
CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmpl
Y3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJF8hIiApOwog
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFBhcmFte1ZhbHVl
fSApIHsKCiAgICAgICAgIyBnZXQgc2F2ZWQgYXR0YWNobWVudCBwcm9wZXJ0aWVzIHVuZCBwcmVm
ZXJlbmNlcwogICAgICAgICVBdHREaXJEYXRhID0gJFNlbGYtPntBdHRhY2htZW50U3RvcmFnZU9i
amVjdH0tPkF0dGFjaG1lbnRTdG9yYWdlR2V0RGlyZWN0b3J5KAogICAgICAgICAgICBJRCA9PiAk
UGFyYW17VmFsdWV9CiAgICAgICAgKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQXR0RGly
RGF0YXtQcmVmZXJlbmNlc30tPntGaWxlU2l6ZUJ5dGVzfQogICAgICAgICAgICAmJgogICAgICAg
ICAgICAkQXR0RGlyRGF0YXtQcmVmZXJlbmNlc30tPntNRDVTdW19CiAgICAgICAgICAgICkKICAg
ICAgICB7CgogICAgICAgICAgICAjIGdldCByZWFsIHByb3BlcnRpZXMgdG8gY2hlY2sgaWYgdGhl
IGF0dGFjaG1lbnQgY29udGVudCBoYXMgYmVlbiBjaGFuZ2VkCiAgICAgICAgICAgIG15ICVSZWFs
UHJvcGVydGllcyA9CiAgICAgICAgICAgICAgICAkU2VsZi0+e0F0dGFjaG1lbnRTdG9yYWdlT2Jq
ZWN0fS0+QXR0YWNobWVudFN0b3JhZ2VHZXRSZWFsUHJvcGVydGllcygKICAgICAgICAgICAgICAg
ICVBdHREaXJEYXRhLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRSZWFsTUQ1U3Vt
ICAgPSAkUmVhbFByb3BlcnRpZXN7UmVhbE1ENVN1bX07CiAgICAgICAgICAgICRSZWFsRmlsZVNp
emUgPSAkUmVhbFByb3BlcnRpZXN7UmVhbEZpbGVTaXplfTsKCiAgICAgICAgICAgIG15ICRNRDVD
aGVja0VuYWJsZWQgPQogICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQo
J0lUU01DSUF0dHJpYnV0ZUNvbGxlY3Rpb246OkF0dGFjaG1lbnRNRDVDaGVjaycpIHx8ICcnOwog
ICAgICAgICAgICBteSAkU2l6ZUNoZWNrRW5hYmxlZCA9CiAgICAgICAgICAgICAgICAkU2VsZi0+
e0NvbmZpZ09iamVjdH0tPkdldCgnSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjo6QXR0YWNobWVu
dFNpemVDaGVjaycpIHx8ICcnOwoKICAgICAgICAgICAgaWYgKCAkU2l6ZUNoZWNrRW5hYmxlZCAm
JiAkUmVhbEZpbGVTaXplICE9ICRBdHREaXJEYXRhe1ByZWZlcmVuY2VzfS0+e0ZpbGVTaXplQnl0
ZXN9ICkgewogICAgICAgICAgICAgICAgJFNpemVOb3RlID0gIkludmFsaWQgY29udGVudCAtIGZp
bGUgc2l6ZSBvbiBkaXNrICIKICAgICAgICAgICAgICAgICAgICAuICJoYXMgYmVlbiBjaGFuZ2Vk
IjsKCiAgICAgICAgICAgICAgICBpZiAoICRSZWFsRmlsZVNpemUgPiAoIDEwMjQgKiAxMDI0ICkg
KSB7CiAgICAgICAgICAgICAgICAgICAgJFJlYWxGaWxlU2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5
dGVzIiwgKCAkUmVhbEZpbGVTaXplIC8gKCAxMDI0ICogMTAyNCApICk7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRSZWFsRmlsZVNpemUgPiAxMDI0ICkgewogICAg
ICAgICAgICAgICAgICAgICRSZWFsRmlsZVNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICgg
KCAkUmVhbEZpbGVTaXplIC8gMTAyNCApICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUmVhbEZpbGVTaXplID0gJFJlYWxGaWxl
U2l6ZSAuICcgQnl0ZXMnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGVsc2lmICggJE1ENUNoZWNrRW5hYmxlZCAmJiAkUmVhbE1ENVN1bSBuZSAkQXR0RGlyRGF0
YXtQcmVmZXJlbmNlc30tPntNRDVTdW19ICkgewogICAgICAgICAgICAgICAgJE1ENU5vdGUgPSAi
SW52YWxpZCBtZDVzdW0gLSBUaGUgZmlsZSBtaWdodCBoYXZlIGJlZW4gY2hhbmdlZCI7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCB0aGUgYXR0YWNobWVudCBwYXJ0
IG9mIHRoZSBvdXRwdXQKICAgIG15ICRTdHJpbmcgPSAkU2VsZi0+QnVpbGRBdHRhY2htZW50TW9k
aWZpY2F0aW9uKAogICAgICAgIEZpbGVOYW1lICAgPT4gJEF0dERpckRhdGF7RmlsZU5hbWV9LAog
ICAgICAgIEZpbGVTaXplICAgPT4gJEF0dERpckRhdGF7UHJlZmVyZW5jZXN9LT57RmlsZVNpemV9
LAogICAgICAgIERhdGFUeXBlICAgPT4gJEF0dERpckRhdGF7UHJlZmVyZW5jZXN9LT57RGF0YVR5
cGV9LAogICAgICAgIFNpemVOb3RlICAgPT4gJFNpemVOb3RlLAogICAgICAgIFNpemVPbkRpc2sg
PT4gJFJlYWxGaWxlU2l6ZSwKICAgICAgICBNRDVOb3RlICAgID0+ICRNRDVOb3RlLAogICAgICAg
IEF0dGFjaElEICAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICBLZXkgICAgICAgID0+ICRQYXJh
bXtLZXl9LAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWN1dCBpdGVtIEJ1aWxkQXR0
YWNobWVudE1vZGlmaWNhdGlvbigpCmJ1aWxkIHRoZSBhdHRhY2htZW50IHBhcnQgb2YgdGhlIG91
dHB1dCBpbiBDb25maWdJdGVtIEVkaXQgd2luZG93Cj1jdXQKCnN1YiBCdWlsZEF0dGFjaG1lbnRN
b2RpZmljYXRpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICRFeGlz
dGluZ0F0dGFjaG1lbnQgPSAiIjsKICAgIG15ICRBdHREaXJJRE5hbWUgICAgICAgPSAkUGFyYW17
S2V5fSAuICJJRCI7CiAgICBteSAkQXR0RGlyRGVsICAgICAgICAgID0gJFBhcmFte0tleX0gLiAi
RGVsZXRlIjsKICAgIG15ICRBdHREaXJJRFVwbG9hZE5hbWUgPSAkUGFyYW17S2V5fSAuICJVcGxv
YWQiOwoKICAgIG15ICRBdHRhY2hJRCA9ICRQYXJhbXtBdHRhY2hJRH0gfHwgJyc7CgogICAgbXkg
JEFkdmljZSA9CiAgICAgICAgJFNlbGYtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2Vs
ZWN0IGEgZmlsZSB0byByZXBsYWNlIGN1cnJlbnQgYXR0YWNobWVudCcpOwoKICAgIGlmICggZGVm
aW5lZCggJFBhcmFte0ZpbGVOYW1lfSApICYmICggJFBhcmFte0ZpbGVOYW1lfSApICkgewogICAg
ICAgIG15ICRhaHJlZiA9CiAgICAgICAgICAgICI8YSBocmVmPVwiIgogICAgICAgICAgICAuICRT
ZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfQogICAgICAgICAgICAuICJBY3Rpb249QWdl
bnRBdHRhY2htZW50U3RvcmFnZTsiCiAgICAgICAgICAgIC4gIkF0dGFjaG1lbnREaXJlY3RvcnlJ
RD0kUGFyYW17QXR0YWNoSUR9IjsKCiAgICAgICAgIyBhZGQgc2Vzc2lvbiBpZCBpZiBuZWVkZWQK
ICAgICAgICBpZiAoICEkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uSURDb29raWV9ICkg
ewogICAgICAgICAgICAkYWhyZWYgLj0gIjsiCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5
b3V0T2JqZWN0fS0+e1Nlc3Npb25OYW1lfQogICAgICAgICAgICAgICAgLiAiPSIKICAgICAgICAg
ICAgICAgIC4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbklEfTsKICAgICAgICB9CiAg
ICAgICAgJGFocmVmIC49ICJcIj4iOwoKICAgICAgICAkRXhpc3RpbmdBdHRhY2htZW50ID0gIiA8
bGk+IgogICAgICAgICAgICAuICRhaHJlZgogICAgICAgICAgICAuICI8Yj4kUGFyYW17RmlsZU5h
bWV9PC9iPjwvYT4mbmJzcDsmbmJzcDsiCiAgICAgICAgICAgIC4gIigkUGFyYW17RmlsZVNpemV9
KSIKICAgICAgICAgICAgLiAiIDwvbGk+IjsKCiAgICAgICAgaWYgKCAkUGFyYW17U2l6ZU5vdGV9
ICkgewogICAgICAgICAgICAkRXhpc3RpbmdBdHRhY2htZW50IC49ICIgPGxpPjxmb250IGNvbG9y
PVwicmVkXCI+IgogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJh
bnNsYXRlKCAkUGFyYW17U2l6ZU5vdGV9ICkKICAgICAgICAgICAgICAgIC4gIiAoIgogICAgICAg
ICAgICAgICAgLiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17U2l6
ZU9uRGlza30gKQogICAgICAgICAgICAgICAgLiAiKSIKICAgICAgICAgICAgICAgIC4gIiEgPC9m
b250PjwvbGk+IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17TUQ1Tm90ZX0gKSB7
CiAgICAgICAgICAgICRFeGlzdGluZ0F0dGFjaG1lbnQgLj0gIiA8bGk+PGZvbnQgY29sb3I9XCJy
ZWRcIj4iCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xh
dGUoICRQYXJhbXtNRDVOb3RlfSApCiAgICAgICAgICAgICAgICAuICIhIDwvZm9udD48L2xpPiI7
CiAgICAgICAgfQogICAgICAgICRFeGlzdGluZ0F0dGFjaG1lbnQgLj0gIjxsaT4gPGxhYmVsIGZv
cj1cIiRBdHREaXJJRE5hbWVcIj4kQWR2aWNlOjwvbGFiZWw+PC9saT4iOwogICAgfQogICAgbXkg
JE91dHB1dCA9ICI8dWw+IiAuICRFeGlzdGluZ0F0dGFjaG1lbnQKICAgICAgICAuICI8L3VsPiIK
ICAgICAgICAuICI8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCIkQXR0RGlySUROYW1lXCIg
dmFsdWU9XCIkQXR0YWNoSURcIi8+ICIKICAgICAgICAuICI8aW5wdXQgdHlwZT1cImZpbGVcIiBp
ZD1cIiRBdHREaXJJRE5hbWVcIiBuYW1lPVwiJEF0dERpcklEVXBsb2FkTmFtZVwiIGNsYXNzPVwi
Zml4ZWRcIi8+ICI7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCj1jdXQgaXRlbSBCdWlsZEF0dGFj
aG1lbnRNb2RpZmljYXRpb24oKQpidWlsZCB0aGUgYXR0YWNobWVudCBwYXJ0IG9mIHRoZSBvdXRw
dXQgZm9yIENvbmZpZ0l0ZW0gRGV0YWlscwo9Y3V0CgpzdWIgQnVpbGRBdHRhY2htZW50UHJlc2Vu
dGF0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkT3V0cHV0ID0g
Jyc7CgogICAgaWYgKCAkUGFyYW17QXR0YWNoSUR9ICYmICRQYXJhbXtGaWxlTmFtZX0gKSB7Cgog
ICAgICAgIG15ICRhaHJlZiA9ICI8YSBocmVmPVwiIgogICAgICAgICAgICAuICRTZWxmLT57TGF5
b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfQogICAgICAgICAgICAuICJBY3Rpb249QWdlbnRBdHRhY2ht
ZW50U3RvcmFnZTsiCiAgICAgICAgICAgIC4gIkF0dGFjaG1lbnREaXJlY3RvcnlJRD0kUGFyYW17
QXR0YWNoSUR9IjsKCiAgICAgICAgIyBhZGQgc2Vzc2lvbiBpZCBpZiBuZWVkZWQKICAgICAgICBp
ZiAoICEkU2VsZi0+e0xheW91dE9iamVjdH0tPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAg
ICAgICAkYWhyZWYgLj0gIjsiCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGF5b3V0T2JqZWN0
fS0+e1Nlc3Npb25OYW1lfQogICAgICAgICAgICAgICAgLiAiPSIKICAgICAgICAgICAgICAgIC4g
JFNlbGYtPntMYXlvdXRPYmplY3R9LT57U2Vzc2lvbklEfTsKICAgICAgICB9CiAgICAgICAgJGFo
cmVmIC49ICJcIj4iOwoKICAgICAgICAkT3V0cHV0ID0gJGFocmVmIC4gIiRQYXJhbXtGaWxlTmFt
ZX08L2E+Jm5ic3A7Jm5ic3A7IiAuCiAgICAgICAgICAgICImbmJzcDsoJFBhcmFte0ZpbGVTaXpl
fSkmbmJzcDsiOwoKICAgICAgICBpZiAoICRQYXJhbXtTaXplTm90ZX0gKSB7CiAgICAgICAgICAg
ICRPdXRwdXQgLj0gJzxmb250IGNvbG9yPSJyZWQiPicKICAgICAgICAgICAgICAgIC4gJFNlbGYt
PntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1NpemVOb3RlfSApCiAgICAgICAg
ICAgICAgICAuICIgKCIKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntMYW5ndWFnZU9iamVjdH0t
PlRyYW5zbGF0ZSggJFBhcmFte1NpemVPbkRpc2t9ICkKICAgICAgICAgICAgICAgIC4gIikiCiAg
ICAgICAgICAgICAgICAuICchPC9mb250Pic7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBh
cmFte01ENU5vdGV9ICkgewogICAgICAgICAgICAkT3V0cHV0IC49ICc8Zm9udCBjb2xvcj0icmVk
Ij4nCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUo
ICRQYXJhbXtNRDVOb3RlfSApCiAgICAgICAgICAgICAgICAuICchPC9mb250Pic7CiAgICAgICAg
fQogICAgfQogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCj1pdGVtIFNlYXJjaEZvcm1EYXRhR2V0KCkK
CmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNl
YXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAg
ICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQg
ewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoIHJlZiAkUGFyYW17VmFs
dWV9IGVxICdBUlJBWScgKSB7CiAgICAgICAgcmV0dXJuIFxAeyAkUGFyYW17VmFsdWV9IH07CiAg
ICB9CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBmb3JlYWNoIChxdyhLZXkgSXRl
bSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xv
Z09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkXyEi
ICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZm9ybSBk
YXRhCiAgICBteSBAVmFsdWVzID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJh
bSA9PiAkUGFyYW17S2V5fSApOwoKICAgICMgZmluZCBhbGwgYXR0YWNobWVudF9kaXJlY3Rvcnkg
SURzIGZvciB0aGUgZ2l2ZW4gRmlsZU5hbWUKICAgIGlmICggKCAkUGFyYW17S2V5fSBlcSAnQXR0
YWNobWVudCcgKSAmJiAkVmFsdWVzWzBdICkgewogICAgICAgIG15ICRGaWxlTmFtZSA9ICRWYWx1
ZXNbMF07CgogICAgICAgIG15ICRVc2luZ1dpbGRjYXJkcyA9IDA7CiAgICAgICAgaWYgKCAoICRG
aWxlTmFtZSA9fiBzL1wqLyUvZyApIHx8ICggJEZpbGVOYW1lID1+IG0vJS8gKSApIHsKICAgICAg
ICAgICAgJFVzaW5nV2lsZGNhcmRzID0gMTsKICAgICAgICB9CgogICAgICAgIEBWYWx1ZXMgPSAk
U2VsZi0+e0F0dGFjaG1lbnRTdG9yYWdlT2JqZWN0fS0+QXR0YWNobWVudFN0b3JhZ2VTZWFyY2go
CiAgICAgICAgICAgIEZpbGVOYW1lICAgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgVXNp
bmdXaWxkY2FyZHMgPT4gJFVzaW5nV2lsZGNhcmRzLAogICAgICAgICk7CiAgICAgICAgaWYgKCAh
JFZhbHVlc1swXSApIHsKICAgICAgICAgICAgJFZhbHVlc1swXSA9IC0xOwogICAgICAgIH0KICAg
IH0KICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWl0ZW0gU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3Jl
YXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0
LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAog
ICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3Jl
YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgI2NoZWNrIHJlcXVpcmVk
IHN0dWZmLi4uCiAgICBmb3JlYWNoIChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFy
YW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkg
PT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CiAgICB9CgogICAgbXkgJFN0cmluZyA9ICI8aW5wdXQgdHlwZT1cIlRleHRcIiBu
YW1lPVwiJFBhcmFte0tleX1cIiBzaXplPVwiNjBcIj4iOwoKICAgIHJldHVybiAkU3RyaW5nOwp9
CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBp
cyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0
d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUK
dGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCku
IElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3Jn
L2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dAoKPWhlYWQxIFZFUlNJT04KCiRSZXZpc2lvbjogMS4y
ICQgJERhdGU6IDIwMTYvMDUvMTggMDc6NDA6NDcgJAoKPWN1dAo=
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dFRleHRMaW5rLnBt
IC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAu
ZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2NoYW5nZWQgYnk6
CiMgKiBTdGVmYW4oZG90KU1laGxpZyhhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBNYXJpbyhk
b3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IExheW91dFRl
eHRMaW5rLnBtLHYgMS4yIDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlz
IHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMs
IHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24g
KEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3
dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0
OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dExpbms7Cgp1c2Ugc3RyaWN0Owp1c2Ug
d2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZp
ZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6Okxh
eW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Oldl
Yjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNv
bmZpZ0l0ZW1MYXlvdXRUZXh0IC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BT
SVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIFRleHRMaW5rIG9iamVjdHMKCj1vdmVyIDQKCj1j
dXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVt
OjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6
T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9N
LT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbUxheW91dFRleHRMaW5r
Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAg
IyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxl
c3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSAgID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9
ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwogICAgJFNlbGYtPntMYXlv
dXRPYmplY3R9ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5
b3V0Jyk7CiAgICAkU2VsZi0+e0xvZ09iamVjdH0gICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tl
cm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57UGFyYW1PYmplY3R9ICAgID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIHJldHVybiAk
U2VsZjsKfQoKPWl0ZW0gT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5n
CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAg
ICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRl
bVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNl
bGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQ
YXJhbXtJdGVtfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAg
ICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRl
bSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQg
JFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAg
IyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259
ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJh
bnNsYXRlKCAkUGFyYW17VmFsdWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtGZWF0dXJlICAgID0g
MTsKICAgIG15ICRIVE1MUmVzdWx0TW9kZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxp
bmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlu
a0ZlYXR1cmUgPSAwOwoKICAgICAgICAjIGRvIG5vdCBjb252ZXJ0IHdoaXRlc3BhY2UgYW5kIG5l
d2xpbmVzIGluIFBERiBtb2RlCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdl
dCgnUERGJykgKSB7CiAgICAgICAgICAgICRIVE1MUmVzdWx0TW9kZSA9IDA7CiAgICAgICAgfQog
ICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAk
U2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAg
PT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAkSFRNTFJlc3VsdE1v
ZGUsCiAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gJExpbmtGZWF0dXJlLAogICAgKTsKCiAgICBt
eSAkTGluayA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1VSTH07CiAgICAkTGluayA9fiBzLzxW
QUxVRT4vJFBhcmFte1ZhbHVlfS87CiAgICAkUGFyYW17VmFsdWV9ID0KICAgICAgICAgICc8YSBo
cmVmPSInCiAgICAgICAgLiAkTGluawogICAgICAgIC4gJyIgdGl0bGU9IicKICAgICAgICAuICRT
ZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICJPcGVuIGxpbmsgaW4gbmV3IHdpbmRv
dyIgKQogICAgICAgIC4gJyIgdGFyZ2V0PSJfYmxhbmsiPicKICAgICAgICAuICRQYXJhbXtWYWx1
ZX0gLiAnPC9hPic7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1pdGVtIEZvcm1EYXRh
R2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFS
ZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjox
OjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBG
b3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sg
bmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAg
ICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmpl
Y3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAg
ICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMg
Z2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9
LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBh
cmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1E
YXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQ
YXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9
CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1pdGVtIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBh
IGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0
ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDEx
LCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAog
ICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhL
ZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAg
ICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAn
ZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAg
ICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkg
JFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSAp
IHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9
IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0g
J1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52
YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlk
fTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVx
dWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNl
cnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJp
bmcgPSAiPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIk
Q2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIk
SXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgdHJhbnNsYXRl
CiAgICAgICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAg
ICAgICAgICAgICRWYWx1ZSA9ICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZh
bHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAg
ICAkVmFsdWUgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgICAg
IFRleHQgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4g
MSwKICAgICAgICApOwogICAgfQoKICAgICRTdHJpbmcgLj0gInZhbHVlPVwiJFZhbHVlXCIgIjsK
CiAgICAjIGFkZCBtYXhpbXVtIGxlbmd0aAogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0t
PntNYXhMZW5ndGh9ICkgewogICAgICAgICRTdHJpbmcgLj0gIm1heGxlbmd0aD1cIiRQYXJhbXtJ
dGVtfS0+e0lucHV0fS0+e01heExlbmd0aH1cIiAiOwogICAgfQoKICAgICRTdHJpbmcgLj0gJy8+
ICc7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1pdGVtIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdl
dCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJj
aEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAg
SXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewog
ICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgog
ICAgaWYgKCAhJFBhcmFte0tleX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2co
CiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+
ICdOZWVkIEtleSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0
IGZvcm0gZGF0YQogICAgbXkgJFZhbHVlOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAg
ICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFs
dWUgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9
ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aXRlbSBTZWFyY2hJbnB1dENyZWF0ZSgp
CgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRP
YmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6
MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5w
dXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5l
ZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAg
aWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0
fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAg
ICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRTZWxmLT5TZWFy
Y2hGb3JtRGF0YUdldCglUGFyYW0pOwogICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAg
ICAgJFZhbHVlID0gJyc7CiAgICB9CgogICAgbXkgJFN0cmluZyA9IHFxezxpbnB1dCB0eXBlPSJ0
ZXh0IiBuYW1lPSIkUGFyYW17S2V5fSIgdmFsdWU9IiRWYWx1ZSIgY2xhc3M9Ilc1MHBjIiA+fTsK
CiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJ
VElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6
Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdB
UlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxp
Y2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmls
ZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQKCj1o
ZWFkMSBWRVJTSU9OCgokUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDE2LzA1LzE4IDA3OjQwOjQ3
ICQKCj1jdXQK
Iy0tCiNLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW1MYXlvdXRUaWNrZXRSZWZlcmVu
Y2UucG0gLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBj
LmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vZWRpdGVk
IGJ5OgojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIEFu
bmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBGcmFuayhkb3QpSmFj
cXVlbWluKGF0KWNhcGUtaXQoZG90KWRlCiMKIy0tCiMkSWQ6IExheW91dFRpY2tldFJlZmVyZW5j
ZS5wbSx2IDEuMyAyMDE2LzA1LzI3IDEzOjIzOjA2IGZqYWNxdWVtaW4gRXhwICQKIy0tCiMgVGhp
cyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxz
LCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9u
IChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93
d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIy0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0
OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGlja2V0UmVmZXJlbmNlOwoKdXNlIHN0cmlj
dDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVs
OjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpI
VE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lz
dGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVh
ZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtTGF5b3V0VGlja2V0
UmVmZXJlbmNlIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBs
YXlvdXQgZnVuY3Rpb25zIG9mIFRpY2tldFJlZmVyZW5jZSBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0
Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6
T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9i
amVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXRUaWNrZXRSZWZl
cmVuY2UnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsK
CiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAg
ICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntDb25maWdPYmplY3R9ICAgPSAk
S2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgJFNlbGYtPntMYW5ndWFnZU9i
amVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyk7CiAgICAkU2VsZi0+
e0xheW91dE9iamVjdH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1M
OjpMYXlvdXQnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICAgID0gJEtlcm5lbDo6T00tPkdl
dCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgJFNlbGYtPntUaWNrZXRPYmplY3R9ICAgPSAk
S2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICAkU2VsZi0+e1Bh
cmFtT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJl
cXVlc3QnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIE91dHB1dFN0cmluZ0NyZWF0ZSgp
CgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5P
dXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFs
KQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwg
JVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFt
e0l0ZW19ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQ
cmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBJdGVtIScs
CiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhZGVmaW5lZCAkUGFy
YW17VmFsdWV9ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAnJzsKICAgIH0KCiAgICBteSAk
TGlua0ZlYXR1cmUgICAgPSAxOwogICAgbXkgJEhUTUxSZXN1bHRNb2RlID0gMTsKCiAgICAjIGRv
IG5vdCB0cmFuc2Zvcm0gbGlua3MgaW4gcHJpbnQgdmlldwogICAgaWYgKCAkUGFyYW17UHJpbnR9
ICkgewogICAgICAgICRMaW5rRmVhdHVyZSA9IDA7CgogICAgICAgICMgZG8gbm90IGNvbnZlcnQg
d2hpdGVzcGFjZSBhbmQgbmV3bGluZXMgaW4gUERGIG1vZGUKICAgICAgICBpZiAoICRTZWxmLT57
Q29uZmlnT2JqZWN0fS0+R2V0KCdQREYnKSApIHsKICAgICAgICAgICAgJEhUTUxSZXN1bHRNb2Rl
ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAg
JFBhcmFte1ZhbHVlfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAg
ICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIEhUTUxSZXN1bHRNb2Rl
ID0+ICRIVE1MUmVzdWx0TW9kZSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1
cmUsCiAgICApOwoKICAgICRQYXJhbXtWYWx1ZX0gPQogICAgICAgICc8YSBocmVmPSInCiAgICAg
ICAgLiAkU2VsZi0+e0xheW91dE9iamVjdH0tPnsiQmFzZWxpbmsifQogICAgICAgIC4gJ0FjdGlv
bj1BZ2VudFRpY2tldFpvb207VGlja2V0TnVtYmVyPScKICAgICAgICAuICRQYXJhbXtWYWx1ZX0K
ICAgICAgICAuICciIHRpdGxlPSInCiAgICAgICAgLiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+
VHJhbnNsYXRlKCAiT3BlbiB0aWNrZXQgaW4gbmV3IHdpbmRvdyIgKQogICAgICAgIC4gJyIgdGFy
Z2V0PSJfYmxhbmsiPicKICAgICAgICAuICRQYXJhbXtWYWx1ZX0gLiAnPC9hPic7CgogICAgcmV0
dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1pdGVtIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEg
YXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+
Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJ
dGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAo
ICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICNjaGVjayBuZWVkZWQgc3R1ZmYuLi4KICAgIGZv
ciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJn
dW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAi
TmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgfQogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjZ2V0IHNlbGVjdGVkIENJQ2xhc3NS
ZWZlcmVuY2UuLi4KICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+
R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgI2NoZWNrIHNlYXJjaCBidXR0
b24uLgogICAgaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQ
YXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VhcmNoJyApICkgewogICAgICAgICRQYXJhbXtJdGVtfS0+
e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntTZWFyY2h9CiAgICAgICAgICAgID0gJFNlbGYtPntQ
YXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcg
KTsKICAgIH0KCiAgICAjY2hlY2sgc2VsZWN0IGJ1dHRvbi4uLgogICAgZWxzaWYgKCAkU2VsZi0+
e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9u
U2VsZWN0JyApICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkU2VsZi0+e1BhcmFtT2Jq
ZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VsZWN0JyApOwogICAg
fQoKICAgICNjaGVjayBjbGVhciBidXR0b24uLi4KICAgIGVsc2lmICggJFNlbGYtPntQYXJhbU9i
amVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkJ1dHRvbkNsZWFyJyAp
ICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgIH0KICAgIGVsc2UgewoKICAg
ICAgICAjcmVzZXQgdmFsdWUgaWYgc2VhcmNoIGZpZWxkIGlzIGVtcHR5Li4uCiAgICAgICAgaWYg
KAogICAgICAgICAgICAhJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAk
UGFyYW17S2V5fSAuICc6OlNlYXJjaCcgKQogICAgICAgICAgICAmJiBkZWZpbmVkICRGb3JtRGF0
YXtWYWx1ZX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEZvcm1EYXRhe1Zh
bHVlfSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgI2NoZWNrIHJlcXVpcmVkIG9wdGlvbi4uLgog
ICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURh
dGF7VmFsdWV9ICkgewogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17
S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAx
OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWl0ZW0gSW5wdXRD
cmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRP
YmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAg
ICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0
ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQ
YXJhbSApID0gQF87CgogICAgI2NoZWNrIG5lZWRlZCBzdHVmZi4uLgogICAgZm9yIG15ICRBcmd1
bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7
CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJp
b3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1
bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9
CiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewog
ICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJ
dGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFt
e0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KCiAgICBteSAkU2l6ZSAgICAg
ICAgID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57U2l6ZX0gfHwgNTA7CiAgICBteSAkU2VhcmNo
ICAgICAgID0gJyc7CiAgICBteSAkU3RyaW5nT3B0aW9uID0gJyc7CiAgICBteSAkU3RyaW5nU2Vs
ZWN0ID0gJyc7CiAgICBteSAkQ2xhc3MgICAgICAgID0gJ1c1MHBjIFRpY2tldFNlYXJjaCc7CiAg
ICBteSAkUmVxdWlyZWQgICAgID0gJFBhcmFte1JlcXVpcmVkfSB8fCAnJzsKICAgIG15ICRJbnZh
bGlkICAgICAgPSAkUGFyYW17SW52YWxpZH0gfHwgJyc7CiAgICBteSAkSXRlbUlkICAgICAgID0g
JFBhcmFte0l0ZW1JZH0gfHwgJyc7CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFz
cyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAg
ICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBUaWNrZXRSZWZlcmVu
Y2Ugc2VhcmNoLi4uCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9
IH0tPntTZWFyY2h9ICkgewoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIHNlYXJj
aCBmb3IgbnVtYmVyLi4uLgogICAgICAgIG15ICVUaWNrZXRMaXN0ID0gJFNlbGYtPntUaWNrZXRP
YmplY3R9LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgIFJlc3VsdCAgICAgICA9PiAnSEFTSCcs
CiAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFy
YW17S2V5fSB9LT57U2VhcmNofSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAg
ICAgKTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVz
dWx0IHByZXNlbnRhdGlvbi4uLi4KICAgICAgICBpZiAoICVUaWNrZXRMaXN0ICYmIHNjYWxhcigg
a2V5cyAlVGlja2V0TGlzdCApID4gMSApIHsKCiAgICAgICAgICAgICNjcmVhdGUgb3B0aW9uIGxp
c3QuLi4KICAgICAgICAgICAgJFN0cmluZ09wdGlvbiA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+
QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAkUGFyYW17S2V5
fSAuICc6OlNlbGVjdCcsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJVRpY2tldExp
c3QsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgICAgICApOwogICAg
ICAgICAgICAkU3RyaW5nT3B0aW9uIC49ICc8YnI+JzsKCiAgICAgICAgICAgICNjcmVhdGUgc2Vs
ZWN0IGJ1dHRvbi4uLgogICAgICAgICAgICAkU3RyaW5nU2VsZWN0ID0gJzxpbnB1dCBjbGFzcz0i
YnV0dG9uIiB0eXBlPSJzdWJtaXQiIG5hbWU9IicKICAgICAgICAgICAgICAgIC4gJFBhcmFte0tl
eX0KICAgICAgICAgICAgICAgIC4gJzo6QnV0dG9uU2VsZWN0IiAnCiAgICAgICAgICAgICAgICAu
ICd2YWx1ZT0iJwogICAgICAgICAgICAgICAgLiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJh
bnNsYXRlKCAiU2VsZWN0IiApCiAgICAgICAgICAgICAgICAuICciPiZuYnNwOyc7CgogICAgICAg
ICAgICAjc2V0IHNlYXJjaC4uLgogICAgICAgICAgICAkU2VhcmNoID0gJFBhcmFte0l0ZW19LT57
Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH07CiAgICAgICAgfQogICAgICAgIGVsc2lm
ICglVGlja2V0TGlzdCkgewogICAgICAgICAgICAkVmFsdWUgPSAoIGtleXMgJVRpY2tldExpc3Qg
KVswXTsKICAgICAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRTZWxmLT57VGlja2V0T2JqZWN0
fS0+VGlja2V0TnVtYmVyTG9va3VwKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFZhbHVl
LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgI3RyYW5zZm9ybSBhc2NpaSB0byBodG1sLi4u
CiAgICAgICAgICAgICRTZWFyY2ggPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwo
CiAgICAgICAgICAgICAgICBUZXh0ID0+ICRUaWNrZXROdW1iZXIgfHwgJycsCiAgICAgICAgICAg
ICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9
CgogICAgI2NyZWF0ZSBDSUNsYXNzUmVmZXJlbmNlIHN0cmluZy4uLgogICAgZWxzaWYgKCRWYWx1
ZSkgewoKICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5U
aWNrZXROdW1iZXJMb29rdXAoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtWYWx1ZX0s
CiAgICAgICAgKTsKCiAgICAgICAgI3RyYW5zZm9ybSBhc2NpaSB0byBodG1sLi4uCiAgICAgICAg
JFNlYXJjaCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAg
VGV4dCA9PiAkVGlja2V0TnVtYmVyIHx8ICcnLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9
PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBBdXRvQ29tcGxldGUgQ0lDbGFzcwogICAgbXkg
JEF1dG9Db21wbGV0ZUNvbmZpZwogICAgICAgID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQo
J0lUU01DSUF0dHJpYnV0ZUNvbGxlY3Rpb246OkZyb250ZW5kOjpDb21tb25TZWFyY2hBdXRvQ29t
cGxldGUnKTsKCiAgICAjY3JlYXRlIHN0cmluZy4uLgogICAgbXkgJFN0cmluZyA9ICcnOwogICAg
aWYgKAogICAgICAgICRBdXRvQ29tcGxldGVDb25maWcKICAgICAgICAmJiByZWYoJEF1dG9Db21w
bGV0ZUNvbmZpZykgZXEgJ0hBU0gnCiAgICAgICAgJiYgJEF1dG9Db21wbGV0ZUNvbmZpZy0+e0Fj
dGl2ZX0KICAgICAgICApCiAgICB7CgogICAgICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Qmxv
Y2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0lUU01DSVRpY2tldFNlYXJjaEF1dG9Db21wbGV0ZScs
CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgbWluUXVlcnlMZW5ndGggICAg
ICA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57TWluUXVlcnlMZW5ndGh9ICAgICAgfHwgMiwKICAg
ICAgICAgICAgICAgIHF1ZXJ5RGVsYXkgICAgICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+
e1F1ZXJ5RGVsYXl9ICAgICAgICAgIHx8IDAuMSwKICAgICAgICAgICAgICAgIHR5cGVBaGVhZCAg
ICAgICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e1R5cGVBaGVhZH0gICAgICAgICAgIHx8
ICdmYWxzZScsCiAgICAgICAgICAgICAgICBtYXhSZXN1bHRzRGlzcGxheWVkID0+ICRBdXRvQ29t
cGxldGVDb25maWctPntNYXhSZXN1bHRzRGlzcGxheWVkfSB8fCAyMCwKICAgICAgICAgICAgICAg
IGR5bmFtaWNXaWR0aCAgICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e0R5bmFtaWNXaWR0
aH0gICAgICAgIHx8IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+
e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdJVFNNQ0lUaWNrZXRT
ZWFyY2hJbml0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtSUQg
ICAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICAgICAgICAgIEFjdGl2ZUF1dG9Db21wbGV0
ZSA9PiAndHJ1ZScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJFN0cmlu
ZyA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZp
bGUgPT4gJ0FnZW50SVRTTUNJVGlja2V0U2VhcmNoJywKICAgICAgICApOwogICAgICAgICRTdHJp
bmcKICAgICAgICAgICAgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJwogICAgICAgICAg
ICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAgICAgLiAk
VmFsdWUKICAgICAgICAgICAgLiAnIiBpZD0iJwogICAgICAgICAgICAuICRJdGVtSWQgLiAnU2Vs
ZWN0ZWQnCiAgICAgICAgICAgIC4gJyIvPicKICAgICAgICAgICAgLiAnPGlucHV0IHR5cGU9InRl
eHQiIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAuICc6OlNl
YXJjaCIgY2xhc3M9IicKICAgICAgICAgICAgLiAkQ2xhc3MKICAgICAgICAgICAgLiAnIiBpZD0i
JwogICAgICAgICAgICAuICRJdGVtSWQKICAgICAgICAgICAgLiAnIiBTZWFyY2hDbGFzcz0iJwog
ICAgICAgICAgICAuICdUaWNrZXRTZWFyY2gnCiAgICAgICAgICAgIC4gJyIgdmFsdWU9IicKICAg
ICAgICAgICAgLiAkU2VhcmNoIC4gJyIvPic7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU3Ry
aW5nCiAgICAgICAgICAgID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAg
ICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAuICciIHZhbHVlPSInCiAgICAgICAgICAgIC4g
JFZhbHVlIC4gJyI+JwogICAgICAgICAgICAuICc8aW5wdXQgdHlwZT0iVGV4dCIgbmFtZT0iJwog
ICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJzo6U2VhcmNoIiBzaXplPSIn
CiAgICAgICAgICAgIC4gJFNpemUKICAgICAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgICAg
ICAuICRTZWFyY2ggLiAnIj4nIC4gJzxicj4nCiAgICAgICAgICAgIC4gJFN0cmluZ09wdGlvbgog
ICAgICAgICAgICAuICRTdHJpbmdTZWxlY3QKICAgICAgICAgICAgLiAnPGlucHV0IGNsYXNzPSJi
dXR0b24iIHR5cGU9InN1Ym1pdCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAg
ICAgICAgICAgIC4gJzo6QnV0dG9uU2VhcmNoIiB2YWx1ZT0iJwogICAgICAgICAgICAuICRTZWxm
LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICJTZWFyY2giICkKICAgICAgICAgICAgLiAn
Ij4nCiAgICAgICAgICAgIC4gJyZuYnNwOycKICAgICAgICAgICAgLiAnPGlucHV0IGNsYXNzPSJi
dXR0b24iIHR5cGU9InN1Ym1pdCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAg
ICAgICAgICAgIC4gJzo6QnV0dG9uQ2xlYXIiIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFNlbGYt
PntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggIkNsZWFyIiApCiAgICAgICAgICAgIC4gJyI+
JzsKICAgIH0KCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWl0ZW0gU2VhcmNoRm9ybURhdGFHZXQo
KQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+
U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAg
ICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdl
dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICNjaGVjayBuZWVkZWQgc3R1
ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+
TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdl
ICA9PiAnTmVlZCBLZXkhJwogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMg
Z2V0IGZvcm0gZGF0YQogICAgbXkgJFZhbHVlOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewog
ICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAk
VmFsdWUgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtL
ZXl9ICk7CiAgICB9CgogICAgcmV0dXJuICRWYWx1ZTsKfQoKPWl0ZW0gU2VhcmNoSW5wdXRDcmVh
dGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNr
ZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5v
ZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRT
ZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkg
JEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50
fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAg
ICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQg
JEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9
CiAgICB9CgogICAgIyBoYXNoIHdpdGggdmFsdWVzIGZvciB0aGUgaW5wdXQgZmllbGQKICAgIG15
ICVGb3JtRGF0YTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRh
e1ZhbHVlfSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQK
ICAgIG15ICRJbnB1dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURh
dGEsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW0gICA9PiAkUGFy
YW17SXRlbX0sCiAgICAgICAgSXRlbUlkID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICByZXR1
cm4gJElucHV0U3RyaW5nOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9O
UwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJz
Lm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFku
IEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBp
bmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUg
aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dAoKPWhlYWQxIFZFUlNJ
T04KCiRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMTYvMDUvMjcgMTM6MjM6MDYgJAoKPWN1dAoK
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dFR5cGVSZWZlcmVu
Y2UucG0gLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBj
LmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vZWRpdGVk
IGJ5OgojICogQW5uYShkb3QpTGl0dmlub3ZhKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1h
cmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDogTGF5
b3V0VHlwZVJlZmVyZW5jZS5wbSx2IDEuNCAyMDE2LzA1LzMwIDA2OjEwOjMyIGZqYWNxdWVtaW4g
RXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJB
TlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGlj
ZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZp
bGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2th
Z2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUeXBlUmVmZXJl
bmNlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMg
PSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0
ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlR5cGUnLAogICAgJ0tlcm5lbDo6U3lzdGVt
OjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklU
U01Db25maWdJdGVtTGF5b3V0VHlwZVJlZmVyZW5jZSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoK
PWhlYWQxIFNZTk9QU0lTCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBUeXBlUmVmZXJlbmNlIG9i
amVjdHMKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAg
dXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00g
PSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9i
amVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmln
SXRlbUxheW91dFR5cGVSZWZlcmVuY2UnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlw
ZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAg
IG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntM
YXlvdXRPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6Okxh
eW91dCcpOwogICAgJFNlbGYtPntMb2dPYmplY3R9ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2Vy
bmVsOjpTeXN0ZW06OkxvZycpOwogICAgJFNlbGYtPntUeXBlT2JqZWN0fSAgID0gJEtlcm5lbDo6
T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKICAgICRTZWxmLT57UGFyYW1PYmplY3R9
ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAg
ICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0
cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdD
cmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKCj1j
dXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKCiAgICAjdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwuLi4KICAgICRQYXJhbXtWYWx1ZX0gPSAk
U2VsZi0+e0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCA9PiAkUGFyYW17
VmFsdWV9IHx8ICcnLAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICApOwoKICAgIHJl
dHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aXRlbSBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRh
IGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3Qt
PkZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAg
SXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkg
KCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9y
IG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1
bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAg
ICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJO
ZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHNlbGVjdGVkIEN1c3RvbWVy
Q29tcGFueQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQ
YXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoK
PWl0ZW0gSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVl
ID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6
Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAg
IEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15
ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1J
ZH0gfHwgJyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9IHx8ICcnOwogICAg
bXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9ICB8fCAnJzsKICAgIG15ICRDbGFzcyAgICA9
ICdNb2Rlcm5pemUnOwoKICAgIGlmICgkUmVxdWlyZWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBW
YWxpZGF0ZV9SZXF1aXJlZCc7CiAgICB9CgogICAgaWYgKCRJbnZhbGlkKSB7CiAgICAgICAgJENs
YXNzIC49ICcgU2VydmVyRXJyb3InOwogICAgfQogICAgCiAgICBteSAlVGlja2V0VHlwZXMgPSAk
U2VsZi0+e1R5cGVPYmplY3R9LT5UeXBlTGlzdCgKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsK
CiAgICBteSAkU2VsZWN0ZWQ7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFNl
bGVjdGVkID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KCiAgICBteSAkVHlwZVNlbGVjdGlvblN0cmcg
PSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAg
ICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSUQgICAgICAgICA9PiAkSXRlbUlkLAogICAgICAg
IERhdGEgICAgICAgPT4gXCVUaWNrZXRUeXBlcywKICAgICAgICBTZWxlY3RlZElEID0+ICRTZWxl
Y3RlZCwKICAgICAgICBDbGFzcyAgICAgID0+ICRDbGFzcywKICAgICk7CiAgICByZXR1cm4gJFR5
cGVTZWxlY3Rpb25TdHJnOwp9Cgo9aXRlbSBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNo
IGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0
YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4g
JEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCByZWYgJFBhcmFte1ZhbHVlfSBlcSAnQVJS
QVknICkgewogICAgICAgIHJldHVybiBcQHsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQoKICAgICNj
aGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRTZWxm
LT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAg
ICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJwogICAgICAgICk7CiAgICAgICAgcmV0dXJu
OwogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBzZWxlY3RlZCBDdXN0b21lckNv
bXBhbnkKICAgIG15IEBWYWx1ZXMgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBh
cmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgcmV0dXJuIFxAVmFsdWVzOwp9Cgo9aXRlbSBTZWFy
Y2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZh
bHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAn
SXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsK
ICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVRpY2tldFR5cGVzID0gJFNl
bGYtPntUeXBlT2JqZWN0fS0+VHlwZUxpc3QoCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7Cgog
ICAgbXkgJFR5cGVTZWxlY3Rpb25TdHJnID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNl
bGVjdGlvbigKICAgICAgICBOYW1lID0+ICRQYXJhbXtLZXl9LAogICAgICAgIERhdGEgPT4gXCVU
aWNrZXRUeXBlcywKICAgICk7CgogICAgcmV0dXJuICRUeXBlU2VsZWN0aW9uU3RyZzsKfQoKMTsK
Cj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFy
dCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUg
Y29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBl
bmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5
b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl
bnNlcy9hZ3BsLnR4dC4KCj1jdXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2aXNpb246IDEuNCAkICRE
YXRlOiAyMDE2LzA1LzMwIDA2OjEwOjMyICQKCj1jdXQKCg==
IyAtLQojIEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbUxheW91dFNMQVJlZmVyZW5j
ZS5wbSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMu
YS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQg
Ynk6CiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogTWFy
aW8oZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIEZyYW5rKGRvdClKYWNx
dWVtaW4oYXQpY2FwZS1pdChkb3QpZGUKIwojIC0tCiMgJElkOiBMYXlvdXRTTEFSZWZlcmVuY2Uu
cG0sdiAxLjMgMjAxNi8wNS8yNyAxMzoyMzowNiBmamFjcXVlbWluIEV4cCAkCiMgLS0KIyBUaGlz
IHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMs
IHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24g
KEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3
dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0
OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0U0xBUmVmZXJlbmNlOwoKdXNlIHN0cmljdDsK
dXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpD
b25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1M
OjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lz
dGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJywKICAgICdLZXJuZWw6OlN5
c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNMQScsCiAgICAnS2VybmVsOjpT
eXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRN
TDo6SVRTTUNvbmZpZ0l0ZW1MYXlvdXRTTEFSZWZlcmVuY2UgLSBsYXlvdXQgYmFja2VuZCBtb2R1
bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgU0xBUmVmZXJlbmNl
IG9iamVjdHMKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0Cgog
ICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6
T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2Vu
ZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29u
ZmlnSXRlbUxheW91dFNMQVJlZmVyZW5jZScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRU
eXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAog
ICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAk
U2VsZi0+e0NvbmZpZ09iamVjdH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmln
Jyk7CiAgICAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6TGFuZ3VhZ2UnKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fSAgID0gJEtlcm5lbDo6T00t
PkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgJFNlbGYtPntFbmNvZGVP
YmplY3R9ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyk7CiAg
ICAkU2VsZi0+e0xvZ09iamVjdH0gICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpMb2cnKTsKICAgICRTZWxmLT57UGFja2FnZU9iamVjdH0gID0gJEtlcm5lbDo6T00tPkdl
dCgnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnKTsKICAgICRTZWxmLT57U2VydmljZU9iamVjdH0g
ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKICAgICRTZWxm
LT57U0xBT2JqZWN0fSAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNM
QScpOwogICAgJFNlbGYtPntQYXJhbU9iamVjdH0gICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJu
ZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBP
dXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUg
PSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDEx
LCAgICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRl
IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgI3RyYW5zZm9ybSBhc2NpaSB0
byBodG1sLi4uCiAgICAkUGFyYW17VmFsdWV9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2Np
aTJIdG1sKAogICAgICAgIFRleHQgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1M
UmVzdWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0
ZW0gRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15
ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkg
PT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoK
PWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87Cgog
ICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYuLi4KICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJ
dGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAk
U2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJv
cicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAg
ICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGb3Jt
RGF0YTsKCiAgICAjIGdldCBzZWxlY3RlZCBDSUNsYXNzUmVmZXJlbmNlLi4uCiAgICAkRm9ybURh
dGF7VmFsdWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFy
YW17S2V5fSApOwoKICAgICMgY2hlY2sgc2VhcmNoIGJ1dHRvbi4uCiAgICBpZiAoICRTZWxmLT57
UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25T
ZWFyY2gnICkgKSB7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0g
fS0+e1NlYXJjaH0KICAgICAgICAgICAgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0o
IFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNoJyApOwoKICAgICAgICAjIGNoZWNrIGFk
ZGl0aW9uYWwgZGF0YS4uCiAgICAgICAgZm9yIG15ICRBdHRyICggcXcoU2VydmljZURhdGEgQ3Vz
dG9tZXJMb2dpbkRhdGEgQ3VzdG9tZXJDb21wYW55RGF0YSkgKSB7CiAgICAgICAgICAgICRQYXJh
bXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPnskQXR0cn0KICAgICAgICAgICAgICAg
ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAu
ICc6OicgLiAkQXR0ciApIHx8ICcnOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHNlbGVj
dCBidXR0b24uLi4KICAgIGVsc2lmICggJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQ
YXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkJ1dHRvblNlbGVjdCcgKSApIHsKICAgICAgICAkRm9y
bURhdGF7VmFsdWV9ID0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAk
UGFyYW17S2V5fSAuICc6OlNlbGVjdCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIGNsZWFyIGJ1dHRv
bi4uLgogICAgZWxzaWYgKCAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+
ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1Zh
bHVlfSA9ICcnOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgcmVzZXQgdmFsdWUgaWYgc2Vh
cmNoIGZpZWxkIGlzIGVtcHR5Li4uCiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFNlbGYtPntQ
YXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcg
KQogICAgICAgICAgICAmJiBkZWZpbmVkICRGb3JtRGF0YXtWYWx1ZX0KICAgICAgICAgICAgKQog
ICAgICAgIHsKICAgICAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwogICAgICAgIH0KCiAg
ICAgICAgIyBjaGVjayByZXF1aXJlZCBvcHRpb24uLi4KICAgICAgICBpZiAoICRQYXJhbXtJdGVt
fS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAg
ICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsK
ICAgICAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAg
cmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1pdGVtIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0
IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAg
ICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAg
ICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1
YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICNjaGVj
ayBuZWVkZWQgc3R1ZmYuLi4KICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewog
ICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xv
Z09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAg
ICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwog
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICcnOwog
ICAgaWYgKCBkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFt
e1ZhbHVlfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVE
ZWZhdWx0fSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1
ZURlZmF1bHR9OwogICAgfQoKICAgIG15ICRTaXplICAgICAgICAgPSAkUGFyYW17SXRlbX0tPntJ
bnB1dH0tPntTaXplfSB8fCA1MDsKICAgIG15ICRTZWFyY2ggICAgICAgPSAnJzsKICAgIG15ICRT
dHJpbmdPcHRpb24gPSAnJzsKICAgIG15ICRTdHJpbmdTZWxlY3QgPSAnJzsKICAgIG15ICRDbGFz
cyAgICAgICAgPSAnVzUwcGMgU0xBU2VhcmNoJzsKICAgIG15ICRSZXF1aXJlZCAgICAgPSAkUGFy
YW17UmVxdWlyZWR9IHx8ICcnOwogICAgbXkgJEludmFsaWQgICAgICA9ICRQYXJhbXtJbnZhbGlk
fSB8fCAnJzsKICAgIG15ICRJdGVtSWQgICAgICAgPSAkUGFyYW17SXRlbUlkfSB8fCAnJzsKCiAg
ICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQn
OwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVy
cm9yJzsKICAgIH0KCiAgICAjIFNMQVJlZmVyZW5jZSBzZWFyY2guLi4KICAgIGlmICggJFBhcmFt
e0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0gKSB7CgogICAgICAgICMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogICAgICAgICMgc2VhcmNoIGZvciBuYW1lLi4uLgogICAgICAgIG15ICVT
TEFMaXN0ID0gJFNlbGYtPl9TTEFTZWFyY2goCiAgICAgICAgICAgIFNlYXJjaCAgICAgICAgICAg
ICAgPT4gJyonIC4gJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJj
aH0gLiAnKicsCiAgICAgICAgICAgIFNlcnZpY2VEYXRhICAgICAgICAgPT4gJFBhcmFte0l0ZW19
LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlcnZpY2VEYXRhfSwKICAgICAgICAgICAgQ3Vz
dG9tZXJMb2dpbkRhdGEgICA9PiAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9
LT57Q3VzdG9tZXJMb2dpbkRhdGF9LAogICAgICAgICAgICBDdXN0b21lckNvbXBhbnlEYXRhID0+
ICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntDdXN0b21lckNvbXBhbnlE
YXRhfSwKICAgICAgICApOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIGJ1aWxk
IHNlYXJjaCByZXN1bHQgcHJlc2VudGF0aW9uLi4uLgogICAgICAgIGlmICggJVNMQUxpc3QgJiYg
c2NhbGFyKCBrZXlzICVTTEFMaXN0ICkgPiAxICkgewoKICAgICAgICAgICAgI2NyZWF0ZSBvcHRp
b24gbGlzdC4uLgogICAgICAgICAgICAkU3RyaW5nT3B0aW9uID0gJFNlbGYtPntMYXlvdXRPYmpl
Y3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0tleX0g
LiAnOjpTZWxlY3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVNMQUxpc3QsCiAgICAgICAg
ICAgICk7CiAgICAgICAgICAgICRTdHJpbmdPcHRpb24gLj0gJzxicj4nOwoKICAgICAgICAgICAg
I2NyZWF0ZSBzZWxlY3QgYnV0dG9uLi4uCiAgICAgICAgICAgICRTdHJpbmdTZWxlY3QgPSAnPGlu
cHV0IGNsYXNzPSJidXR0b24iIHR5cGU9InN1Ym1pdCIgbmFtZT0iJwogICAgICAgICAgICAgICAg
LiAkUGFyYW17S2V5fQogICAgICAgICAgICAgICAgLiAnOjpCdXR0b25TZWxlY3QiICcKICAgICAg
ICAgICAgICAgIC4gJ3ZhbHVlPSInCiAgICAgICAgICAgICAgICAuICRTZWxmLT57TGFuZ3VhZ2VP
YmplY3R9LT5UcmFuc2xhdGUoICJTZWxlY3QiICkKICAgICAgICAgICAgICAgIC4gJyI+Jm5ic3A7
JzsKCiAgICAgICAgICAgICNzZXQgc2VhcmNoLi4uCiAgICAgICAgICAgICRTZWFyY2ggPSAkUGFy
YW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57U2VhcmNofTsKICAgICAgICB9CiAg
ICAgICAgZWxzaWYgKCVTTEFMaXN0KSB7CiAgICAgICAgICAgICRWYWx1ZSA9ICgga2V5cyAlU0xB
TGlzdCApWzBdOwogICAgICAgICAgICBteSAlU0xBRGF0YSA9ICRTZWxmLT57U0xBT2JqZWN0fS0+
U0xBR2V0KAogICAgICAgICAgICAgICAgU0xBSUQgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAg
IFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU0xBTmFtZSA9ICIi
OwoKICAgICAgICAgICAgaWYgKCAlU0xBRGF0YSAmJiAkU0xBRGF0YXtOYW1lfSApIHsKICAgICAg
ICAgICAgICAgICRTTEFOYW1lID0gJFNMQURhdGF7TmFtZX07CiAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICN0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbC4uLgogICAgICAgICAgICAkU2VhcmNoID0g
JFNlbGYtPntMYXlvdXRPYmplY3R9LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCA9
PiAkU0xBTmFtZSB8fCAnJywKICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAg
ICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KCiAgICAjY3JlYXRlIENJQ2xhc3NSZWZlcmVu
Y2Ugc3RyaW5nLi4uCiAgICBlbHNpZiAoJFZhbHVlKSB7CgogICAgICAgIG15ICVTTEFEYXRhID0g
JFNlbGYtPntTTEFPYmplY3R9LT5TTEFHZXQoCiAgICAgICAgICAgIFNMQUlEICA9PiAkVmFsdWUs
CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgJFNMQU5hbWUg
PSAiIjsKCiAgICAgICAgaWYgKCAlU0xBRGF0YSAmJiAkU0xBRGF0YXtOYW1lfSApIHsKICAgICAg
ICAgICAgJFNMQU5hbWUgPSAkU0xBRGF0YXtOYW1lfTsKICAgICAgICB9CgogICAgICAgICN0cmFu
c2Zvcm0gYXNjaWkgdG8gaHRtbC4uLgogICAgICAgICRTZWFyY2ggPSAkU2VsZi0+e0xheW91dE9i
amVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgPT4gJFNMQU5hbWUgfHwgJycsCiAg
ICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEF1
dG9Db21wbGV0ZSBDSUNsYXNzCiAgICBteSAkQXV0b0NvbXBsZXRlQ29uZmlnCiAgICAgICAgPSAk
U2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjo6RnJv
bnRlbmQ6OkNvbW1vblNlYXJjaEF1dG9Db21wbGV0ZScpOwoKICAgICNjcmVhdGUgc3RyaW5nLi4u
CiAgICBteSAkU3RyaW5nID0gJyc7CiAgICBpZiAoICAgJEF1dG9Db21wbGV0ZUNvbmZpZwogICAg
ICAgICYmIHJlZigkQXV0b0NvbXBsZXRlQ29uZmlnKSBlcSAnSEFTSCcKICAgICAgICAmJiAkQXV0
b0NvbXBsZXRlQ29uZmlnLT57QWN0aXZlfSApCiAgICB7CgogICAgICAgICRTZWxmLT57TGF5b3V0
T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NMQVNlYXJjaEF1dG9Db21wbGV0
ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgbWluUXVlcnlMZW5ndGgg
ICAgICA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57TWluUXVlcnlMZW5ndGh9ICAgICAgfHwgMiwK
ICAgICAgICAgICAgICAgIHF1ZXJ5RGVsYXkgICAgICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZp
Zy0+e1F1ZXJ5RGVsYXl9ICAgICAgICAgIHx8IDAuMSwKICAgICAgICAgICAgICAgIHR5cGVBaGVh
ZCAgICAgICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e1R5cGVBaGVhZH0gICAgICAgICAg
IHx8ICdmYWxzZScsCiAgICAgICAgICAgICAgICBtYXhSZXN1bHRzRGlzcGxheWVkID0+ICRBdXRv
Q29tcGxldGVDb25maWctPntNYXhSZXN1bHRzRGlzcGxheWVkfSB8fCAyMCwKICAgICAgICAgICAg
ICAgIGR5bmFtaWNXaWR0aCAgICAgICAgPT4gJEF1dG9Db21wbGV0ZUNvbmZpZy0+e0R5bmFtaWNX
aWR0aH0gICAgICAgIHx8IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJFNl
bGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU0xBU2VhcmNo
SW5pdEF1dG9Db21wbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAg
S2V5ICAgICAgICAgICAgICAgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgICAg
IEl0ZW1JRCAgICAgICAgICAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICAgICAgICAgIEFj
dGl2ZUF1dG9Db21wbGV0ZSAgICAgICAgPT4gJ3RydWUnLAogICAgICAgICAgICAgICAgUmVmZXJl
bmNlZFNlcnZpY2VBdHRyS2V5ICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWZlcmVuY2Vk
U2VydmljZUF0dHJLZXl9ICB8fCAnJywKICAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDdXN0b21l
ckxvZ2luICAgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVmZXJlbmNlZEN1c3RvbWVyTG9n
aW59ICAgfHwgJycsCiAgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ3VzdG9tZXJDb21wYW55ID0+
ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZmVyZW5jZWRDdXN0b21lckNvbXBhbnl9IHx8ICcn
LAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJFN0cmluZyA9ICRTZWxmLT57TGF5
b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U0xB
U2VhcmNoJywKICAgICAgICApOwogICAgICAgICRTdHJpbmcKICAgICAgICAgICAgPSAnPGlucHV0
IHR5cGU9ImhpZGRlbiIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAg
ICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAgICAgLiAkVmFsdWUKICAgICAgICAgICAgLiAnIiBp
ZD0iJwogICAgICAgICAgICAuICRJdGVtSWQKICAgICAgICAgICAgLiAnU2VsZWN0ZWQiLz48aW5w
dXQgdHlwZT0idGV4dCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAg
ICAgIC4gJzo6U2VhcmNoIiBjbGFzcz0iJwogICAgICAgICAgICAuICRDbGFzcwogICAgICAgICAg
ICAuICciIGlkPSInCiAgICAgICAgICAgIC4gJEl0ZW1JZAogICAgICAgICAgICAuICciIFNlYXJj
aENsYXNzPSJTTEFTZWFyY2giIHZhbHVlPSInCiAgICAgICAgICAgIC4gJFNlYXJjaAogICAgICAg
ICAgICAuICciLz4nOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmpl
Y3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU0xBU2VhcmNoSW5pdE5vQXV0b0NvbXBs
ZXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgICAg
ICAgICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICAgICAgSXRlbUlEICAgICAg
ICAgICAgICAgICAgICA9PiAkSXRlbUlkLAogICAgICAgICAgICAgICAgUmVmZXJlbmNlZFNlcnZp
Y2VBdHRyS2V5ICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWZlcmVuY2VkU2VydmljZUF0
dHJLZXl9ICB8fCAnJywKICAgICAgICAgICAgICAgIFJlZmVyZW5jZWRDdXN0b21lckxvZ2luICAg
PT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVmZXJlbmNlZEN1c3RvbWVyTG9naW59ICAgfHwg
JycsCiAgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ3VzdG9tZXJDb21wYW55ID0+ICRQYXJhbXtJ
dGVtfS0+e0lucHV0fS0+e1JlZmVyZW5jZWRDdXN0b21lckNvbXBhbnl9IHx8ICcnLAogICAgICAg
ICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJFN0cmluZyA9ICRTZWxmLT57TGF5b3V0T2JqZWN0
fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U0xBU2VhcmNoJywK
ICAgICAgICApOwogICAgICAgICRTdHJpbmcKICAgICAgICAgICAgPSAnPGlucHV0IHR5cGU9Imhp
ZGRlbiIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJyIg
dmFsdWU9IicKICAgICAgICAgICAgLiAkVmFsdWUKICAgICAgICAgICAgLiAnIiBpZD0iJwogICAg
ICAgICAgICAuICRJdGVtSWQKICAgICAgICAgICAgLiAnU2VsZWN0ZWQiPjxpbnB1dCB0eXBlPSJU
ZXh0IiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAgLiAnOjpT
ZWFyY2giIHNpemU9IicKICAgICAgICAgICAgLiAkU2l6ZQogICAgICAgICAgICAuICciIHZhbHVl
PSInCiAgICAgICAgICAgIC4gJFNlYXJjaAogICAgICAgICAgICAuICciIGlkPSInCiAgICAgICAg
ICAgIC4gJEl0ZW1JZAogICAgICAgICAgICAuICciPjxicj4nCiAgICAgICAgICAgIC4gJFN0cmlu
Z09wdGlvbgogICAgICAgICAgICAuICRTdHJpbmdTZWxlY3QKICAgICAgICAgICAgLiAnPGlucHV0
IGNsYXNzPSJidXR0b24iIHR5cGU9InN1Ym1pdCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJh
bXtLZXl9CiAgICAgICAgICAgIC4gJzo6QnV0dG9uU2VhcmNoIiB2YWx1ZT0iJwogICAgICAgICAg
ICAuICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICJTZWFyY2giICkKICAgICAg
ICAgICAgLiAnIj4mbmJzcDs8aW5wdXQgY2xhc3M9ImJ1dHRvbiIgdHlwZT0ic3VibWl0IiBuYW1l
PSInCiAgICAgICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAgICAgLiAnOjpCdXR0b25DbGVh
ciIgdmFsdWU9IicKICAgICAgICAgICAgLiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNs
YXRlKCAiQ2xlYXIiICkKICAgICAgICAgICAgLiAnIj4nOwogICAgfQoKICAgIGlmICgkUGFyYW17
SXRlbX0tPntJbnB1dH0tPntSZWZlcmVuY2VkU2VydmljZUF0dHJLZXl9KXsKICAgICAgICAkU3Ry
aW5nIC49ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInCiAgICAgICAgICAgIC4gJFBhcmFt
e0tleX0KICAgICAgICAgICAgLiAnOjpTZXJ2aWNlRGF0YSIgdmFsdWU9IiIgaWQ9IicKICAgICAg
ICAgICAgLiAkSXRlbUlkCiAgICAgICAgICAgIC4gJ1NlcnZpY2VEYXRhIi8+JzsKICAgIH0KICAg
IGlmICgkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWZlcmVuY2VkQ3VzdG9tZXJMb2dpbn0pewog
ICAgICAgICRTdHJpbmcgLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAg
ICAgLiAkUGFyYW17S2V5fQogICAgICAgICAgICAuICc6OkN1c3RvbWVyTG9naW5EYXRhIiB2YWx1
ZT0iIiBpZD0iJwogICAgICAgICAgICAuICRJdGVtSWQKICAgICAgICAgICAgLiAnQ3VzdG9tZXJM
b2dpbkRhdGEiLz4nOwogICAgfQogICAgZWxzaWYgKCRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1Jl
ZmVyZW5jZWRDdXN0b21lckNvbXBhbnl9ICkgewogICAgICAgICRTdHJpbmcgLj0gJzxpbnB1dCB0
eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgICAg
ICAuICc6OkN1c3RvbWVyQ29tcGFueURhdGEiIHZhbHVlPSIiIGlkPSInCiAgICAgICAgICAgIC4g
JEl0ZW1JZAogICAgICAgICAgICAuICdDdXN0b21lckNvbXBhbnlEYXRhIi8+JzsKICAgIH0KCiAg
ICByZXR1cm4gJFN0cmluZzsKfQoKPWl0ZW0gU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJj
aCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURh
dGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+
ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAo
ICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICNjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICgg
ISRQYXJhbXtLZXl9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAg
ICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBL
ZXkhJwogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGZvcm0gZGF0
YQogICAgbXkgJFZhbHVlOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1
ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsdWUgPSAkU2Vs
Zi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9
CgogICAgcmV0dXJuICRWYWx1ZTsKfQoKPWl0ZW0gU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRl
IGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5T
ZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAg
KTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0g
KSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChx
dyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAg
ICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9
PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIs
CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAg
IyBoYXNoIHdpdGggdmFsdWVzIGZvciB0aGUgaW5wdXQgZmllbGQKICAgIG15ICVGb3JtRGF0YTsK
CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQ
YXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgIG15ICRJbnB1
dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURhdGEsCiAgICAgICAg
S2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW0gICA9PiAkUGFyYW17SXRlbX0sCiAg
ICAgICAgSXRlbUlkID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICByZXR1cm4gJElucHV0U3Ry
aW5nOwp9CgpzdWIgX1NMQVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoK
ICAgICMgY2hlY2sgaWYgS0lYU2VydmljZUNhdGFsb2cgaXMgaW5zdGFsbGVkCiAgICBteSAkS0lY
U2VydkNhdGFsb2dJbnN0YWxsZWQgPSAwOwogICAgbXkgQEluc3RhbGxlZFBhY2thZ2VzID0gJFNl
bGYtPntQYWNrYWdlT2JqZWN0fS0+UmVwb3NpdG9yeUxpc3QoKTsKICAgIGZvciBteSAkUGFja2Fn
ZSAoQEluc3RhbGxlZFBhY2thZ2VzKSB7CiAgICAgICAgaWYgKCAkUGFja2FnZS0+e05hbWV9LT57
Q29udGVudH0gZXEgJ0tJWFNlcnZpY2VDYXRhbG9nJyApIHsKICAgICAgICAgICAgJEtJWFNlcnZD
YXRhbG9nSW5zdGFsbGVkID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIHZhbGlk
IFNMQXMKICAgIG15ICVBbGxWYWxpZFNMQXMgPSAkU2VsZi0+e1NMQU9iamVjdH0tPlNMQUxpc3Qo
CiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwK
ICAgICk7CiAgICBteSAlU0xBcyA9ICVBbGxWYWxpZFNMQXM7CgogICAgIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KICAgICMgaWYgU2VydmljZURhdGEgaXMgZ2l2ZW4gLT4gZ2V0IFNMQXMgdGhhdCBh
cmUgY29uZmlndXJlZCBmb3IgQUxMIGdpdmVuIHNlcnZpY2VzCiAgICBpZiAoICRQYXJhbXtTZXJ2
aWNlRGF0YX0gJiYgJFBhcmFte1NlcnZpY2VEYXRhfSBuZSAnTk9ORScgKSB7CiAgICAgICAgbXkg
QFNlcnZpY2VzID0gc3BsaXQoICc7JywgJFBhcmFte1NlcnZpY2VEYXRhfSApOwogICAgICAgIGlm
IChAU2VydmljZXMpIHsKICAgICAgICAgICAgZm9yIG15ICRTZXJ2aWNlSUQgKEBTZXJ2aWNlcykg
ewogICAgICAgICAgICAgICAgbXkgJVNMQXNGb3JTZXJ2aWNlID0gJFNlbGYtPntTTEFPYmplY3R9
LT5TTEFMaXN0KAogICAgICAgICAgICAgICAgICAgIFZhbGlkICAgICA9PiAxLAogICAgICAgICAg
ICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICAgICAgICAgICAgIFVz
ZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAg
ICAgICAgICMgZGVsZXRlIFNMQSBmcm9tIHJlc3VsdCBpZiBpdCBpcyBub3QgY29uZmlndXJlZCBm
b3Igb25lIG9mIFNlcnZpY2VzCiAgICAgICAgICAgICAgICBmb3IgbXkgJFNMQSAoIGtleXMgJVNM
QXMgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRTTEFzeyRTTEF9IGlmICEkU0xBc0Zv
clNlcnZpY2V7JFNMQX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICVTTEFzID0gKCk7CiAgICAgICAgfQogICAgfQoK
ICAgICMgaWYgQ3VzdG9tZXJMb2dpbkRhdGEgaXMgZ2l2ZW4gLT4gZ2V0IFNMQXMgdGhhdCBhcmUg
Y29uZmlndXJlZCBmb3IgQUxMIEN1c3RvbWVyVXNlcidzIFNlcnZpY2VzCiAgICAjLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJMb2dp
bkRhdGF9ICYmICRQYXJhbXtDdXN0b21lckxvZ2luRGF0YX0gbmUgJ05PTkUnICkgewogICAgICAg
IG15IEBDdXN0b21lclVzZXJzID0gc3BsaXQoICc7JywgJFBhcmFte0N1c3RvbWVyTG9naW5EYXRh
fSApOwogICAgICAgIGlmIChAQ3VzdG9tZXJVc2VycykgewogICAgICAgICAgICBmb3IgbXkgJEN1
c3RvbWVyVXNlckxvZ2luIChAQ3VzdG9tZXJVc2VycykgewogICAgICAgICAgICAgICAgbXkgJVNM
QXNGb3JDdXN0b21lclVzZXIgPSAoKTsKCiAgICAgICAgICAgICAgICAjIGdldCBTZXJ2aWNlcyBm
b3IgQ3VzdG9tZXJVc2VyCiAgICAgICAgICAgICAgICBteSAlU2VydmljZXMgPSAkU2VsZi0+e1Nl
cnZpY2VPYmplY3R9LT5DdXN0b21lclVzZXJTZXJ2aWNlTWVtYmVyTGlzdCgKICAgICAgICAgICAg
ICAgICAgICBDdXN0b21lclVzZXJMb2dpbiA9PiAkQ3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAg
ICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAg
ICAgIERlZmF1bHRTZXJ2aWNlcyAgID0+IDAsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAg
ICAgICAgICMgZ2V0IFNMQXMgZm9yIGVhY2ggU2VydmljZSAoU0xBcyBmb3IgQ1VzdG9tZXJVc2Vy
KQogICAgICAgICAgICAgICAgZm9yIG15ICRTZXJ2aWNlSUQgKCBrZXlzICVTZXJ2aWNlcyApIHsK
ICAgICAgICAgICAgICAgICAgICBteSAlU0xBc0ZvclNlcnZpY2UgPSAkU2VsZi0+e1NMQU9iamVj
dH0tPlNMQUxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkICAgICA9PiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAg
ICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAg
ICAgICApOwogICAgICAgICAgICAgICAgICAgICVTTEFzRm9yQ3VzdG9tZXJVc2VyID0gKCAlU0xB
c0ZvckN1c3RvbWVyVXNlciwgJVNMQXNGb3JTZXJ2aWNlICk7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgIyBkZWxldGUgU0xBIGZyb20gcmVzdWx0IGlmIGl0IGlzIG5vdCBjb25m
aWd1cmVkIGZvciBvbmUgb2YgQ3VzdG9tZXJVc2VycwogICAgICAgICAgICAgICAgZm9yIG15ICRT
TEEgKCBrZXlzICVTTEFzICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkU0xBc3skU0xB
fSBpZiAhJFNMQXNGb3JDdXN0b21lclVzZXJ7JFNMQX07CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICVTTEFzID0gKCk7
CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgQ3VzdG9tZXJDb21wYW55RGF0YSBpcyBnaXZlbiBB
TkQgS0lYU2VydmljZUNhdGFsb2cgaW5zdGFsbGllcnQKICAgICMgLT4gZ2V0IFNMQXMgdGhhdCBh
cmUgY29uZmlndXJlZCBmb3IgQUxMIGdpdmVuIEN1c3RvbWVySURzCiAgICAjLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
ICBlbHNpZiAoICRQYXJhbXtDdXN0b21lckNvbXBhbnlEYXRhfSAmJiAkUGFyYW17Q3VzdG9tZXJD
b21wYW55RGF0YX0gbmUgJ05PTkUnICYmICRLSVhTZXJ2Q2F0YWxvZ0luc3RhbGxlZCApIHsKICAg
ICAgICBteSBAQ3VzdG9tZXJVc2VycyA9ICgpOwogICAgICAgIG15IEBDdXN0b21lckNvbXBhbnlM
aXN0ID0gc3BsaXQoICc7JywgJFBhcmFte0N1c3RvbWVyQ29tcGFueURhdGF9ICk7CiAgICAgICAg
aWYgKEBDdXN0b21lckNvbXBhbnlMaXN0KSB7CiAgICAgICAgICAgIGZvciBteSAkQ3VzdG9tZXJD
b21wYW55IChAQ3VzdG9tZXJDb21wYW55TGlzdCkgewoKICAgICAgICAgICAgICAgICMgZ2V0IEN1
c3RvbWVyU2VydmljZVNMQSBlbnRyaWVzIHRoYXQgaGF2ZSB0aGlzIEN1c3RvbWVySUQKICAgICAg
ICAgICAgICAgIG15IEBDdXN0b21lclNlcnZpY2VTTEFzID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0
fS0+Q3VzdG9tZXJTZXJ2aWNlTWVtYmVyU2VhcmNoKAogICAgICAgICAgICAgICAgICAgIEN1c3Rv
bWVySUQgPT4gJEN1c3RvbWVyQ29tcGFueSwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgICAg
ID0+ICdIQVNIJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBnZXQgU0xB
cyBmb3IgdGhpcyBDdXN0b21lckNvbXBhbnkgKEN1c3RvbWVySUQpCiAgICAgICAgICAgICAgICBt
eSAlU0xBc0ZvckN1c3RvbWVyQ29tcGFueSA9ICgpOwogICAgICAgICAgICAgICAgZm9yIG15ICRD
YXRhbG9nRW50cnkgKEBDdXN0b21lclNlcnZpY2VTTEFzKSB7CiAgICAgICAgICAgICAgICAgICAg
bmV4dCBpZiAoIHJlZigkQ2F0YWxvZ0VudHJ5KSBuZSAnSEFTSCcgKTsKICAgICAgICAgICAgICAg
ICAgICBpZiAoICRDYXRhbG9nRW50cnktPntTTEFJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICRTTEFzRm9yQ3VzdG9tZXJDb21wYW55eyAkQ2F0YWxvZ0VudHJ5LT57U0xBSUR9IH0gPSAx
LAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAjIGRlbGV0ZSBTTEEgZnJvbSByZXN1bHQgaWYgaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIG9u
ZSBvZiBDdXN0b21lcklEcwogICAgICAgICAgICAgICAgZm9yIG15ICRTTEEgKCBrZXlzICVTTEFz
ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkU0xBc3skU0xBfSBpZiAhJFNMQXNGb3JD
dXN0b21lckNvbXBhbnl7JFNMQX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg
ICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICVTTEFzID0gKCk7CiAgICAgICAgfQog
ICAgfQoKICAgICMgZ2V0IFNMQXMgZm9yIERFRkFVTFQtU2VydmljZXMKICAgIG15ICVTTEFzRm9y
RGVmYXVsdFNlcnZpY2VzID0gKCk7CiAgICBpZiAoICEkS0lYU2VydkNhdGFsb2dJbnN0YWxsZWQg
KSB7CiAgICAgICAgbXkgJURlZmF1bHRTZXJ2aWNlcyA9ICRTZWxmLT57U2VydmljZU9iamVjdH0t
PkN1c3RvbWVyVXNlclNlcnZpY2VNZW1iZXJMaXN0KAogICAgICAgICAgICBDdXN0b21lclVzZXJM
b2dpbiA9PiAnPERFRkFVTFQ+JywKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgPT4gJ0hB
U0gnLAogICAgICAgICAgICBEZWZhdWx0U2VydmljZXMgICA9PiAwLAogICAgICAgICk7CiAgICAg
ICAgZm9yIG15ICRTZXJ2aWNlSUQgKCBrZXlzICVEZWZhdWx0U2VydmljZXMgKSB7CiAgICAgICAg
ICAgIG15ICVTTEFzRm9yU2VydmljZSA9ICRTZWxmLT57U0xBT2JqZWN0fS0+U0xBTGlzdCgKICAg
ICAgICAgICAgICAgIFZhbGlkICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2VydmljZUlEID0+
ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9
LAogICAgICAgICAgICApOwogICAgICAgICAgICAlU0xBc0ZvckRlZmF1bHRTZXJ2aWNlcyA9ICgg
JVNMQXNGb3JEZWZhdWx0U2VydmljZXMsICVTTEFzRm9yU2VydmljZSApOwogICAgICAgIH0KICAg
IH0KICAgIGVsc2UgewogICAgICAgIG15IEBDdXN0b21lclNlcnZpY2VTTEFzID0gJFNlbGYtPntT
ZXJ2aWNlT2JqZWN0fS0+Q3VzdG9tZXJTZXJ2aWNlTWVtYmVyU2VhcmNoKAogICAgICAgICAgICBD
dXN0b21lcklEID0+ICdERUZBVUxUJywKICAgICAgICAgICAgUmVzdWx0ICAgICA9PiAnSEFTSCcs
CiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJENhdGFsb2dFbnRyeSAoQEN1c3RvbWVyU2Vydmlj
ZVNMQXMpIHsKICAgICAgICAgICAgbmV4dCBpZiAoIHJlZigkQ2F0YWxvZ0VudHJ5KSBuZSAnSEFT
SCcgKTsKICAgICAgICAgICAgaWYgKCAkQ2F0YWxvZ0VudHJ5LT57U0xBSUR9ICkgewogICAgICAg
ICAgICAgICAgJFNMQXNGb3JEZWZhdWx0U2VydmljZXN7ICRDYXRhbG9nRW50cnktPntTTEFJRH0g
fQogICAgICAgICAgICAgICAgICAgID0gJEFsbFZhbGlkU0xBc3sgJENhdGFsb2dFbnRyeS0+e1NM
QUlEfSB9LAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgJVNMQXMgPSAoICVTTEFz
LCAlU0xBc0ZvckRlZmF1bHRTZXJ2aWNlcyApOwoKICAgICMgd29ya2Fyb3VuZCwgYWxsIGF1dG8g
Y29tcGxldGlvbiByZXF1ZXN0cyBnZXQgcG9zdGVkIGJ5IHV0ZjggYW55d2F5CiAgICAjIGNvbnZl
cnQgYW55IHRvIDhiaXQgc3RyaW5nIGlmIGFwcGxpY2F0aW9uIGlzIG5vdCBydW5uaW5nIGluIHV0
ZjgKIyAgICBpZiAoICEkU2VsZi0+e0VuY29kZU9iamVjdH0tPkVuY29kZUludGVybmFsVXNlZCgp
ICkgewojICAgICAgICAkUGFyYW17U2VhcmNofSA9ICRTZWxmLT57RW5jb2RlT2JqZWN0fS0+Q29u
dmVydCgKIyAgICAgICAgICAgIFRleHQgPT4gJFBhcmFte1NlYXJjaH0sCiMgICAgICAgICAgICBG
cm9tID0+ICd1dGYtOCcsCiMgICAgICAgICAgICBUbyAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0
fS0+e1VzZXJDaGFyc2V0fSwKIyAgICAgICAgKTsKIyAgICB9CgogICAgJFBhcmFte1NlYXJjaH0g
PX4gcy9cXy9cLi9nOwogICAgJFBhcmFte1NlYXJjaH0gPX4gcy9cJS9cLlwqL2c7CiAgICAkUGFy
YW17U2VhcmNofSA9fiBzL1wqL1wuXCovZzsKCiAgICAjIGJ1aWxkIGRhdGEKICAgIG15ICVEYXRh
OwogICAgZm9yIG15ICRTTEFJRCAoIGtleXMgJVNMQXMgKSB7CiAgICAgICAgaWYgKCAkU0xBc3sk
U0xBSUR9ID1+IC8kUGFyYW17U2VhcmNofS9pICkgewogICAgICAgICAgICAkRGF0YXskU0xBSUR9
ID0gJFNMQXN7JFNMQUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9Cgox
OwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBw
YXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2Fy
ZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhl
IGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElm
IHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xp
Y2Vuc2VzL2FncGwudHh0LgoKPWN1dAoKPWhlYWQxIFZFUlNJT04KCiRSZXZpc2lvbjogMS4zICQg
JERhdGU6IDIwMTYvMDUvMjcgMTM6MjM6MDYgJAoKPWN1dAoK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvQ0lDbGFzc1JlZmVy
ZW5jZS5wbSAtIHhtbCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMu
YS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQg
Ynk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBSZW5lKGRvdClC
b2VobShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBTdGVmYW4oZG90KU1laGxpZyhhdCljYXBl
KGRhc2gpaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRv
dClkZQojCiMgLS0KIyAkSWQ6IENJQ2xhc3NSZWZlcmVuY2UucG0sdiAxLjEzIDIwMTYvMDUvMTgg
MDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xV
VEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENP
UFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJl
Y2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0
LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBl
OjpDSUNsYXNzUmVmZXJlbmNlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmpl
Y3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywK
ICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNJQXR0cmlidXRDb2xsZWN0aW9uVXRpbHMnLAogICAg
J0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Okxv
ZycKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6
VHlwZTo6Q0lDbGFzc1JlZmVyZW5jZSAtIHhtbCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9Q
U0lTCgpBbGwgeG1sIGZ1bmN0aW9ucyBvZiBDSUNsYXNzUmVmZXJlbmNlIG9iamVjdHMKCj1vdmVy
IDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6
U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5
c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpD
SUNsYXNzUmVmZXJlbmNlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJh
bSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2Vs
ZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57R2VuZXJhbENh
dGFsb2dPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxD
YXRhbG9nJyk7CiAgICAkU2VsZi0+e0NJQUNVdGlsc09iamVjdH0gICAgICA9ICRLZXJuZWw6Ok9N
LT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ0lBdHRyaWJ1dENvbGxlY3Rpb25VdGlscycpOwog
ICAgJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJu
ZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICAg
ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIHJl
dHVybiAkU2VsZjsKfQoKPWl0ZW0gVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSB4bWwgZGF0YSBvZiBh
IHZlcnNpb24KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoCiAg
ICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxv
b2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJyBpZiAh
JFBhcmFte1ZhbHVlfTsKCiAgICBteSAkQ0lWZXJzaW9uRGF0YVJlZiA9ICRTZWxmLT57Q29uZmln
SXRlbU9iamVjdH0tPlZlcnNpb25HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtW
YWx1ZX0sCiAgICAgICAgWE1MRGF0YUdldCAgID0+IDAsCiAgICApOwogICAgbXkgJENJTmFtZSA9
ICRQYXJhbXtWYWx1ZX07CgogICAgaWYgKAogICAgICAgICRDSVZlcnNpb25EYXRhUmVmCiAgICAg
ICAgJiYKICAgICAgICAoIHJlZigkQ0lWZXJzaW9uRGF0YVJlZikgZXEgJ0hBU0gnICkgJiYKICAg
ICAgICAkQ0lWZXJzaW9uRGF0YVJlZi0+e05hbWV9CiAgICAgICAgKQogICAgewogICAgICAgICRD
SU5hbWUgPSAkQ0lWZXJzaW9uRGF0YVJlZi0+e05hbWV9CiAgICAgICAgICAgIC4gIiAoIgogICAg
ICAgICAgICAuICRDSVZlcnNpb25EYXRhUmVmLT57TnVtYmVyfQogICAgICAgICAgICAuICIpIjsK
ICAgIH0KCiAgICByZXR1cm4gJENJTmFtZTsKfQoKPWl0ZW0gU3RhdHNBdHRyaWJ1dGVDcmVhdGUo
KQoKY3JlYXRlIGEgYXR0cmlidXRlIGFycmF5IGZvciB0aGUgc3RhdHMgZnJhbWV3b3JrCgogICAg
bXkgJEF0dHJpYnV0ZSA9ICRCYWNrZW5kT2JqZWN0LT5TdGF0c0F0dHJpYnV0ZUNyZWF0ZSgKICAg
ICAgICBLZXkgPT4gJ0tleTo6U3Via2V5JywKICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAg
ICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0
ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0
dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgTmFtZSBJdGVtKSkgewogICAgICAgIGlm
ICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0t
PkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAg
ICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFycnRpYnV0ZQogICAgbXkg
JEF0dHJpYnV0ZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4g
JFBhcmFte05hbWV9LAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAg
ICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9
PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAg
ICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgXTsK
CiAgICByZXR1cm4gJEF0dHJpYnV0ZTsKfQoKPWl0ZW0gRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJl
KCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAk
QmFja2VuZE9iamVjdC0+RXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+
IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0U2VhcmNoVmFsdWVQcmVw
YXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBub3RoaW5nIGdpdmVu
PwogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyBlbXB0eSB2YWx1
ZT8KICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICAjIGxvb2t1cCBDSSBudW1i
ZXIgZm9yIGdpdmVuIENJIElECiAgICBteSAkQ0lSZWYgPSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmpl
Y3R9LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17VmFsdWV9
LAogICAgKTsKICAgIGlmICggJENJUmVmICYmIHJlZiAkQ0lSZWYgZXEgJ0hBU0gnICYmICRDSVJl
Zi0+e051bWJlcn0gKSB7CiAgICAgICAgcmV0dXJuICRDSVJlZi0+e051bWJlcn07CiAgICB9Cgog
ICAgcmV0dXJuICcnOwp9Cgo9aXRlbSBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1
ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVl
UHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoK
c3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoK
ICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9
OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07Cgog
ICAgbXkgJFNlYXJjaEF0dHIgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWZlcmVuY2VkQ0lD
bGFzc1JlZmVyZW5jZUF0dHJpYnV0ZUtleX0gfHwgJyc7CgogICAgaWYgKCRTZWFyY2hBdHRyKSB7
CgogICAgICAgIG15ICRWZXJzaW9uRGF0YSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPlZl
cnNpb25HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17VmFsdWV9LAogICAg
ICAgICk7CgogICAgICAgIGlmICggJFZlcnNpb25EYXRhICYmIHJlZiAkVmVyc2lvbkRhdGEgZXEg
J0hBU0gnICkgewoKICAgICAgICAgICAgIyBnZXQgQ29uZmlnSXRlbSBjbGFzcyBJRAogICAgICAg
ICAgICBteSAkUmVmZXJlbmNlZENJQ2xhc3NJRCA9ICIiOwogICAgICAgICAgICBpZiAoCiAgICAg
ICAgICAgICAgICAkUGFyYW17SXRlbX0KICAgICAgICAgICAgICAgICYmIHJlZiggJFBhcmFte0l0
ZW19ICkgZXEgJ0hBU0gnCiAgICAgICAgICAgICAgICAmJiAkUGFyYW17SXRlbX0tPntJbnB1dH0K
ICAgICAgICAgICAgICAgICYmIHJlZiggJFBhcmFte0l0ZW19LT57SW5wdXR9ICkgZXEgJ0hBU0gn
CiAgICAgICAgICAgICAgICAmJiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWZlcmVuY2VkQ0lD
bGFzc05hbWV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
IG15ICRJdGVtRGF0YVJlZiA9ICRTZWxmLT57R2VuZXJhbENhdGFsb2dPYmplY3R9LT5JdGVtR2V0
KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycs
CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWZl
cmVuY2VkQ0lDbGFzc05hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAg
ICAgIGlmICggJEl0ZW1EYXRhUmVmICYmIHJlZigkSXRlbURhdGFSZWYpIGVxICdIQVNIJyAmJiAk
SXRlbURhdGFSZWYtPntJdGVtSUR9ICkgewogICAgICAgICAgICAgICAgICAgICRSZWZlcmVuY2Vk
Q0lDbGFzc0lEID0gJEl0ZW1EYXRhUmVmLT57SXRlbUlEfSB8fCAnJzsKICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICBteSAkWE1MRGVmaW5pdGlvbiA9CiAgICAgICAgICAgICAgICAg
ICAgJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+RGVmaW5pdGlvbkdldCggQ2xhc3NJRCA9PiAk
UmVmZXJlbmNlZENJQ2xhc3NJRCwgKTsKCiAgICAgICAgICAgICAgICBteSAkQXJyUmVmID0gJFNl
bGYtPntDSUFDVXRpbHNPYmplY3R9LT5HZXRBdHRyaWJ1dGVWYWx1ZXNCeUtleSgKICAgICAgICAg
ICAgICAgICAgICBLZXlOYW1lICAgICAgID0+ICRTZWFyY2hBdHRyLAogICAgICAgICAgICAgICAg
ICAgIFhNTERhdGEgICAgICAgPT4gJFZlcnNpb25EYXRhLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNp
b259LT5bMV0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkWE1MRGVmaW5p
dGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAg
ICBpZiAoICRBcnJSZWYgJiYgJEFyclJlZi0+WzBdICkgewogICAgICAgICAgICAgICAgICAgIHJl
dHVybiAkQXJyUmVmLT5bMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAg
ICB9CiAgICB9CgogICAgIyBsb29rdXAgQ0kgbnVtYmVyIGZvciBnaXZlbiBDSSBJRAogICAgbXkg
JENJUmVmID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbUdldCgKICAgICAg
ICBDb25maWdJdGVtSUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICk7CiAgICBpZiAoICRDSVJlZiAm
JiByZWYgJENJUmVmIGVxICdIQVNIJyAmJiAkQ0lSZWYtPntOdW1iZXJ9ICkgewogICAgICAgIHJl
dHVybiAkQ0lSZWYtPntOdW1iZXJ9OwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gSW1w
b3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBpbXBvcnQK
CiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0U2VhcmNoVmFsdWVQcmVw
YXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIg
SW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87
CgogICAgIyBub3RoaW5nIGdpdmVuPwogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1
ZX07CgogICAgIyBlbXB0eSB2YWx1ZT8KICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsK
CiAgICAjIGNoZWNrIGlmIENJIG51bWJlciB3YXMgZ2l2ZW4KICAgIG15ICRDSUlEID0gJFNlbGYt
PntDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICBDb25maWdJdGVt
TnVtYmVyID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwogICAgcmV0dXJuICRDSUlEIGlmICRDSUlE
OwoKICAgICMgY2hlY2sgaWYgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxpZCBDSSBJRAogICAgaWYgKCAk
UGFyYW17VmFsdWV9ICF+IC9cRC8gKSB7CiAgICAgICAgbXkgJENJTnVtYmVyID0gJFNlbGYtPntD
b25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRl
bUlEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFBhcmFte1Zh
bHVlfSBpZiAkQ0lOdW1iZXI7CiAgICB9CgogICAgcmV0dXJuICcnOwp9Cgo9aXRlbSBJbXBvcnRW
YWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJFZhbHVlID0g
JEJhY2tlbmRPYmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwg
IyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAgICBt
eSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJldHVy
biBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICByZXR1
cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgbXkgJFNlYXJjaEF0dHIgPSAkUGFyYW17SXRl
bX0tPntJbnB1dH0tPntSZWZlcmVuY2VkQ0lDbGFzc1JlZmVyZW5jZUF0dHJpYnV0ZUtleX0gfHwg
Jyc7CgogICAgIyBtYWtlIENJLU51bWJlciBvdXQgb2YgZ2l2ZW4gdmFsdWUKICAgIGlmICgkU2Vh
cmNoQXR0cikgewoKICAgICAgICAjIGdldCBDb25maWdJdGVtIGNsYXNzIElECiAgICAgICAgbXkg
JFJlZmVyZW5jZWRDSUNsYXNzSUQgPSAiIjsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJh
bXtJdGVtfQogICAgICAgICAgICAmJiByZWYoICRQYXJhbXtJdGVtfSApIGVxICdIQVNIJwogICAg
ICAgICAgICAmJiAkUGFyYW17SXRlbX0tPntJbnB1dH0KICAgICAgICAgICAgJiYgcmVmKCAkUGFy
YW17SXRlbX0tPntJbnB1dH0gKSBlcSAnSEFTSCcKICAgICAgICAgICAgJiYgJFBhcmFte0l0ZW19
LT57SW5wdXR9LT57UmVmZXJlbmNlZENJQ2xhc3NOYW1lfQogICAgICAgICAgICApCiAgICAgICAg
ewogICAgICAgICAgICBteSAkSXRlbURhdGFSZWYgPSAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2Jq
ZWN0fS0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVt
OjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+
e1JlZmVyZW5jZWRDSUNsYXNzTmFtZX0gfHwgJycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAg
IGlmICggJEl0ZW1EYXRhUmVmICYmIHJlZigkSXRlbURhdGFSZWYpIGVxICdIQVNIJyAmJiAkSXRl
bURhdGFSZWYtPntJdGVtSUR9ICkgewogICAgICAgICAgICAgICAgJFJlZmVyZW5jZWRDSUNsYXNz
SUQgPSAkSXRlbURhdGFSZWYtPntJdGVtSUR9IHx8ICcnOwogICAgICAgICAgICB9CgogICAgICAg
ICAgICAjIHByZXBhcmUgc2VhcmNoIHBhcmFtcwogICAgICAgICAgICBteSAlU2VhcmNoUGFyYW1z
ID0gKCk7CiAgICAgICAgICAgIG15ICVTZWFyY2hEYXRhICAgPSAoKTsKCiAgICAgICAgICAgICRT
ZWFyY2hEYXRheyRTZWFyY2hBdHRyfSA9ICRQYXJhbXtWYWx1ZX07CgogICAgICAgICAgICBteSAk
WE1MRGVmaW5pdGlvbiA9CiAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9
LT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRSZWZlcmVuY2VkQ0lDbGFzc0lELCApOwoKICAg
ICAgICAgICAgbXkgQFNlYXJjaFBhcmFtc1doYXQ7CiAgICAgICAgICAgICRTZWxmLT5fWE1MU2Vh
cmNoRGF0YVByZXBhcmUoCiAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRYTUxEZWZp
bml0aW9uLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgICAgICAgICBXaGF0ICAgICAgICAgID0+
IFxAU2VhcmNoUGFyYW1zV2hhdCwKICAgICAgICAgICAgICAgIFNlYXJjaERhdGEgICAgPT4gXCVT
ZWFyY2hEYXRhLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKEBTZWFyY2hQYXJhbXNX
aGF0KSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1ze1doYXR9ID0gXEBTZWFyY2hQYXJh
bXNXaGF0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNlYXJjaCB0aGUgY29uZmlnIGl0
ZW1zCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJFNlbGYtPntDb25maWdJdGVtT2Jq
ZWN0fS0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKAogICAgICAgICAgICAgICAgJVNlYXJjaFBh
cmFtcywKICAgICAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbJFJlZmVyZW5j
ZWRDSUNsYXNzSURdLAogICAgICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDAs
CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCBhbmQgcmV0dXJuIENvZmlnSXRlbSBJ
RAogICAgICAgICAgICBteSAkQ0lJRCA9ICIiOwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVt
SURzICYmIHJlZigkQ29uZmlnSXRlbUlEcykgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAg
ICRDSUlEID0gJENvbmZpZ0l0ZW1JRHMtPlswXSB8fCAnJzsKICAgICAgICAgICAgfQogICAgICAg
ICAgICByZXR1cm4gJENJSUQ7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgQ0kgbnVt
YmVyIHdhcyBnaXZlbgogICAgbXkgJENJSUQgPSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9LT5D
b25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFBhcmFte1ZhbHVl
fSwKICAgICk7CiAgICByZXR1cm4gJENJSUQgaWYgJENJSUQ7CgogICAgIyBtYWtlIENJLU51bWJl
ciBvdXQgb2YgZ2l2ZW4gTmFtZS4uLgogICAgbXkgJFJlZmVyZW5jZWRDSUNsYXNzSUQgPSAiIjsK
ICAgIGlmICgKICAgICAgICAkUGFyYW17SXRlbX0KICAgICAgICAmJiByZWYoICRQYXJhbXtJdGVt
fSApIGVxICdIQVNIJwogICAgICAgICYmICRQYXJhbXtJdGVtfS0+e0lucHV0fQogICAgICAgICYm
IHJlZiggJFBhcmFte0l0ZW19LT57SW5wdXR9ICkgZXEgJ0hBU0gnCiAgICAgICAgJiYgJFBhcmFt
e0l0ZW19LT57SW5wdXR9LT57UmVmZXJlbmNlZENJQ2xhc3NOYW1lfQogICAgICAgICkKICAgIHsK
ICAgICAgICBteSAkUmVmQ2xhc3NOYW1lID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVmZXJl
bmNlZENJQ2xhc3NOYW1lfTsKICAgICAgICBteSAkSXRlbURhdGFSZWYgID0gJFNlbGYtPntHZW5l
cmFsQ2F0YWxvZ09iamVjdH0tPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpD
b25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0l0ZW19LT57SW5w
dXR9LT57UmVmZXJlbmNlZENJQ2xhc3NOYW1lfSB8fCAnJywKICAgICAgICApOwogICAgICAgIGlm
ICggJEl0ZW1EYXRhUmVmICYmIHJlZigkSXRlbURhdGFSZWYpIGVxICdIQVNIJyAmJiAkSXRlbURh
dGFSZWYtPntJdGVtSUR9ICkgewogICAgICAgICAgICAkUmVmZXJlbmNlZENJQ2xhc3NJRCA9ICRJ
dGVtRGF0YVJlZi0+e0l0ZW1JRH0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG15ICRDb25maWdJ
dGVtSURzID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbVNlYXJjaEV4dGVu
ZGVkKAogICAgICAgICAgICBOYW1lICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgICAgICBD
bGFzc0lEcyA9PiBbJFJlZmVyZW5jZWRDSUNsYXNzSURdLAogICAgICAgICk7CiAgICAgICAgbXkg
JENJSUQgPSAiIjsKICAgICAgICBpZiAoICRDb25maWdJdGVtSURzICYmIHJlZigkQ29uZmlnSXRl
bUlEcykgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJENJSUQgPSAkQ29uZmlnSXRlbUlEcy0+
WzBdIHx8ICcnOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJENJSUQgaWYgJENJSUQ7CiAgICB9
CgogICAgIyBjaGVjayBpZiBnaXZlbiB2YWx1ZSBpcyBhIHZhbGlkIENJIElECiAgICBpZiAoICRQ
YXJhbXtWYWx1ZX0gIX4gL1xELyApIHsKICAgICAgICBteSAkQ0lOdW1iZXIgPSAkU2VsZi0+e0Nv
bmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICBDb25maWdJdGVt
SUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkUGFyYW17VmFs
dWV9IGlmICRDSU51bWJlcjsKICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBfWE1MU2VhcmNo
RGF0YVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNr
IG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn0gfHwgcmVm
ICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwogICAgcmV0dXJuIGlmICEkUGFyYW17
V2hhdH0gICAgICAgICAgfHwgcmVmICRQYXJhbXtXaGF0fSAgICAgICAgICBuZSAnQVJSQVknOwog
ICAgcmV0dXJuIGlmICEkUGFyYW17U2VhcmNoRGF0YX0gICAgfHwgcmVmICRQYXJhbXtTZWFyY2hE
YXRhfSAgICBuZSAnSEFTSCc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJh
bXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICAjIGNyZWF0ZSBrZXkKICAgICAgICBteSAk
S2V5ID0KICAgICAgICAgICAgJFBhcmFte1ByZWZpeH0gPyAkUGFyYW17UHJlZml4fSAuICc6Oicg
LiAkSXRlbS0+e0tleX0gOiAkSXRlbS0+e0tleX07CgogICAgICAgIGlmICggJFBhcmFte1NlYXJj
aERhdGF9LT57JEtleX0gKSB7CgogICAgICAgICAgICAjIGNyZWF0ZSBzZWFyY2gga2V5CiAgICAg
ICAgICAgIG15ICRTZWFyY2hLZXkgPSAkS2V5OwogICAgICAgICAgICAkU2VhcmNoS2V5ID1+IHN7
IDo6IH17XCdcfVslXVx7XCd9eG1zZzsKCiAgICAgICAgICAgICMgY3JlYXRlIHNlYXJjaCBoYXNo
CiAgICAgICAgICAgIG15ICRTZWFyY2hIYXNoID0KICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICdbMV17XCdWZXJzaW9uXCd9WzFde1wnJwogICAgICAgICAgICAgICAgICAgIC4gJFNl
YXJjaEtleQogICAgICAgICAgICAgICAgICAgIC4gJ1wnfVslXXtcJ0NvbnRlbnRcJ30nID0+ICRQ
YXJhbXtTZWFyY2hEYXRhfS0+eyRLZXl9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
cHVzaCBAeyAkUGFyYW17V2hhdH0gfSwgJFNlYXJjaEhhc2g7CiAgICAgICAgfQogICAgICAgIG5l
eHQgSVRFTSBpZiAhJEl0ZW0tPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYg
IlN1YiIgd2FzIGZvdW5kCiAgICAgICAgJFNlbGYtPl9YTUxTZWFyY2hEYXRhUHJlcGFyZSgKICAg
ICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIFdoYXQg
ICAgICAgICAgPT4gJFBhcmFte1doYXR9LAogICAgICAgICAgICBTZWFyY2hEYXRhICAgID0+ICRQ
YXJhbXtTZWFyY2hEYXRhfSwKICAgICAgICAgICAgUHJlZml4ICAgICAgICA9PiAkS2V5LAogICAg
ICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5E
IENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0ICho
dHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9y
IGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMg
ZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQ=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvUXVldWVSZWZlcmVu
Y2UucG0gLSB4bWwgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBjLmEu
cC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vZWRpdGVkIGJ5
OgojICogVG9yc3Rlbihkb3QpVGhhdShhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8oZG90KUls
bGluZ2VyKGF0KWNhcGUtaXQoZG90KWRlCiMKIyAtLQojICRJZDogUXVldWVSZWZlcmVuY2UucG0s
diAxLjggMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUg
Y29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhl
IGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElm
IHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcv
bGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25m
aWdJdGVtOjpYTUw6OlR5cGU6OlF1ZXVlUmVmZXJlbmNlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5p
bmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06Okxv
ZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6
U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpRdWV1ZVJlZmVyZW5jZSAtIHhtbCBi
YWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgeG1sIGZ1bmN0aW9ucyBvZiBRdWV1
ZVJlZmVyZW5jZSBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFu
IG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2Fs
ICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAg
bXkgJFhNTFR5cGVEdW1teUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6UXVldWVSZWZlcmVuY2UnKTsKCj1j
dXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9j
YXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNl
bGYsICRUeXBlICk7CgogICAgJFNlbGYtPntMb2dPYmplY3R9ICAgPSAkS2VybmVsOjpPTS0+R2V0
KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICAkU2VsZi0+e1F1ZXVlT2JqZWN0fSA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwoKICAgIHJldHVybiAkU2VsZjsK
fQoKPWl0ZW0gVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSB4bWwgZGF0YSBvZiBhIHZlcnNpb24KCiAg
ICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoCiAgICAgICAgVmFsdWUg
PT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBt
eSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVl
fTsKCiAgICBteSAlUXVldWVEYXRhID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlR2V0KAog
ICAgICAgIElEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwoKICAgIG15ICRRdWV1ZU5hbWUgPSAk
UGFyYW17VmFsdWV9OwoKICAgIGlmICggJVF1ZXVlRGF0YSAmJiAkUXVldWVEYXRhe05hbWV9ICkg
ewogICAgICAgICRRdWV1ZU5hbWUgPSAkUXVldWVEYXRhe05hbWV9OwogICAgfQoKICAgIHJldHVy
biAkUXVldWVOYW1lOwp9Cgo9aXRlbSBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUgYSBh
dHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBteSAkQXR0cmlidXRl
ID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKAogICAgICAgIEtleSA9PiAn
S2V5OjpTdWJrZXknLAogICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgIEl0ZW0gPT4gJEl0
ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBt
eSAkQXJndW1lbnQgKHF3KEtleSBOYW1lIEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRB
cmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAg
ICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+
ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYXJydGlidXRlCiAgICBteSAkQXR0cmlidXRlID0g
WwogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkUGFyYW17TmFtZX0s
CiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1
ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAg
ICAgIEVsZW1lbnQgICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIEJsb2NrICAg
ICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgIH0sCiAgICBdOwoKICAgIHJldHVybiAk
QXR0cmlidXRlOwp9Cgo9aXRlbSBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBz
ZWFyY2ggdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0
LT5FeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlv
bmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkg
KCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIG5vdGhpbmcgZ2l2ZW4/CiAgICByZXR1cm4g
aWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKCiAgICAjIGVtcHR5IHZhbHVlPwogICAgcmV0dXJu
ICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgICMgbG9va3VwIG5hbWUgZm9yIGdpdmVuIFF1ZXVl
IElECiAgICBteSAlUXVldWVEYXRhID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlR2V0KAog
ICAgICAgIElEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwogICAgaWYgKCAlUXVldWVEYXRhICYm
ICRRdWV1ZURhdGF7TmFtZX0gKSB7CiAgICAgICAgcmV0dXJuICRRdWV1ZURhdGF7TmFtZX07CiAg
ICB9CgogICAgcmV0dXJuICcnOwp9Cgo9aXRlbSBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFy
ZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9y
dFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoK
PWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17
VmFsdWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1
ZX07CgogICAgIyBsb29rdXAgbmFtZSBmb3IgZ2l2ZW4gUXVldWUgSUQKICAgIG15ICVRdWV1ZURh
dGEgPSAkU2VsZi0+e1F1ZXVlT2JqZWN0fS0+UXVldWVHZXQoCiAgICAgICAgSUQgPT4gJFBhcmFt
e1ZhbHVlfSwKICAgICk7CiAgICBpZiAoICVRdWV1ZURhdGEgJiYgJFF1ZXVlRGF0YXtOYW1lfSAp
IHsKICAgICAgICByZXR1cm4gJFF1ZXVlRGF0YXtOYW1lfTsKICAgIH0KCiAgICByZXR1cm4gJyc7
Cn0KCj1pdGVtIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1
ZSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNl
YXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICAp
OwoKPWN1dAoKc3ViIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAl
UGFyYW0gKSA9IEBfOwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJldHVybiBpZiAhZGVmaW5l
ZCAkUGFyYW17VmFsdWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICByZXR1cm4gJycgaWYgISRQ
YXJhbXtWYWx1ZX07CgogICAgIyBjaGVjayBpZiBRdWV1ZSBuYW1lIHdhcyBnaXZlbgogICAgbXkg
JFF1ZXVlSUQgPSAkU2VsZi0+e1F1ZXVlT2JqZWN0fS0+UXVldWVMb29rdXAoCiAgICAgICAgUXVl
dWUgPT4gJFBhcmFte1ZhbHVlfSwKICAgICk7CiAgICByZXR1cm4gJFF1ZXVlSUQgaWYgJFF1ZXVl
SUQ7CgogICAgIyBjaGVjayBpZiBnaXZlbiB2YWx1ZSBpcyBhIHZhbGlkIFF1ZXVlIElECiAgICBp
ZiAoICRQYXJhbXtWYWx1ZX0gIX4gL1xELyApIHsKICAgICAgICBteSAkUXVldWVOYW1lID0gJFNl
bGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlTG9va3VwKAogICAgICAgICAgICBRdWV1ZUlEID0+ICRQ
YXJhbXtWYWx1ZX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBpZiAk
UXVldWVOYW1lOwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gSW1wb3J0VmFsdWVQcmVw
YXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5k
T2JqZWN0LT5JbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlv
bmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2Vs
ZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIG5vdGhpbmcgZ2l2ZW4/CiAgICByZXR1cm4gaWYgIWRl
ZmluZWQgJFBhcmFte1ZhbHVlfTsKCiAgICAjIGVtcHR5IHZhbHVlPwogICAgcmV0dXJuICcnIGlm
ICEkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgaWYgUXVldWUgbmFtZSB3YXMgZ2l2ZW4KICAg
IG15ICRRdWV1ZUlEID0gJFNlbGYtPntRdWV1ZU9iamVjdH0tPlF1ZXVlTG9va3VwKAogICAgICAg
IFF1ZXVlID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwogICAgcmV0dXJuICRRdWV1ZUlEIGlmICRR
dWV1ZUlEOwoKICAgICMgY2hlY2sgaWYgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxpZCBRdWV1ZSBJRAog
ICAgaWYgKCAkUGFyYW17VmFsdWV9ICF+IC9cRC8gKSB7CiAgICAgICAgbXkgJFF1ZXVlTmFtZSA9
ICRTZWxmLT57UXVldWVPYmplY3R9LT5RdWV1ZUxvb2t1cCgKICAgICAgICAgICAgUXVldWVJRCA9
PiAkUGFyYW17VmFsdWV9LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRQYXJhbXtWYWx1ZX0g
aWYgJFF1ZXVlTmFtZTsKICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCjE7Cgo9YmFjawoKPWhlYWQx
IFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMg
cHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBD
T1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVj
ZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQu
Cgo9Y3V0Cgo9aGVhZDEgVkVSU0lPTgoKJFJldmlzaW9uOiAxLjggJCAkRGF0ZTogMjAxNi8wNS8x
OCAwNzo0MDo0NyAkCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvU2VydmljZVJlZmVy
ZW5jZS5wbSAtIHhtbCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMu
YS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQg
Ynk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBNYXJpbyhkb3Qp
SWxsaW5nZXIoYXQpY2FwZS1pdChkb3QpZGUKIwojIC0tCiMgJElkOiBTZXJ2aWNlUmVmZXJlbmNl
LnBtLHYgMS44IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3
YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQoj
IHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwp
LiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUu
b3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNN
Q29uZmlnSXRlbTo6WE1MOjpUeXBlOjpTZXJ2aWNlUmVmZXJlbmNlOwoKdXNlIHN0cmljdDsKdXNl
IHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0
ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnCik7Cgo9aGVhZDEgTkFNRQoK
S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlNlcnZpY2VSZWZlcmVu
Y2UgLSB4bWwgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIHhtbCBmdW5jdGlv
bnMgb2YgU2VydmljZVJlZmVyZW5jZSBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXco
KQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdl
cjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXIt
Pm5ldygpOwogICAgbXkgJFhNTFR5cGVEdW1teUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6U2VydmljZVJl
ZmVyZW5jZScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBf
OwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsK
ICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0xvZ09iamVjdH0gICAgID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgJFNlbGYtPntTZXJ2
aWNlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7
CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHhtbCBk
YXRhIG9mIGEgdmVyc2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxv
b2t1cCgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3Vi
IFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJu
ICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZWxmLT57U2Vy
dmljZU9iamVjdH0tPlNlcnZpY2VHZXQoCiAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtWYWx1
ZX0sCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKICAgIG15ICRTZXJ2aWNlTmFtZSA9
ICRQYXJhbXtWYWx1ZX07CgogICAgaWYgKCAlU2VydmljZURhdGEgJiYgJFNlcnZpY2VEYXRhe05h
bWV9ICkgewogICAgICAgICRTZXJ2aWNlTmFtZSA9ICRTZXJ2aWNlRGF0YXtOYW1lfTsKICAgIH0K
CiAgICByZXR1cm4gJFNlcnZpY2VOYW1lOwp9Cgo9aXRlbSBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgp
CgpjcmVhdGUgYSBhdHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBt
eSAkQXR0cmlidXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKAogICAg
ICAgIEtleSA9PiAnS2V5OjpTdWJrZXknLAogICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAg
IEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRl
IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1
ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBOYW1lIEl0ZW0pKSB7CiAgICAgICAgaWYg
KCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+
TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAg
IE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAg
IHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYXJydGlidXRlCiAgICBteSAk
QXR0cmlidXRlID0gWwogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAk
UGFyYW17TmFtZX0sCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAg
ICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+
IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAg
ICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgIH0sCiAgICBdOwoK
ICAgIHJldHVybiAkQXR0cmlidXRlOwp9Cgo9aXRlbSBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUo
KQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRC
YWNrZW5kT2JqZWN0LT5FeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4g
MTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBh
cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIG5vdGhpbmcgZ2l2ZW4/
CiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKCiAgICAjIGVtcHR5IHZhbHVl
PwogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgICMgbG9va3VwIG5hbWUgZm9y
IGdpdmVuIHNlcnZpY2UgSUQKICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZWxmLT57U2VydmljZU9i
amVjdH0tPlNlcnZpY2VHZXQoCiAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtWYWx1ZX0sCiAg
ICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwogICAgaWYgKCAlU2VydmljZURhdGEgJiYgJFNl
cnZpY2VEYXRhe05hbWV9ICkgewogICAgICAgIHJldHVybiAkU2VydmljZURhdGF7TmFtZX07CiAg
ICB9CgogICAgcmV0dXJuICcnOwp9Cgo9aXRlbSBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFy
ZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9y
dFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoK
PWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17
VmFsdWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1
ZX07CgogICAgIyBsb29rdXAgbmFtZSBmb3IgZ2l2ZW4gc2VydmljZSBJRAogICAgbXkgJVNlcnZp
Y2VEYXRhID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+U2VydmljZUdldCgKICAgICAgICBTZXJ2
aWNlSUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CiAg
ICBpZiAoICVTZXJ2aWNlRGF0YSAmJiAkU2VydmljZURhdGF7TmFtZX0gKSB7CiAgICAgICAgcmV0
dXJuICRTZXJ2aWNlRGF0YXtOYW1lfTsKICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCj1pdGVtIElt
cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0
CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJl
cGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3Vi
IEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBf
OwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFs
dWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07
CgogICAgIyBjaGVjayBpZiBTZXJ2aWNlIG5hbWUgd2FzIGdpdmVuCiAgICBteSAkU2VydmljZUlE
ID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+U2VydmljZUxvb2t1cCgKICAgICAgICBOYW1lID0+
ICRQYXJhbXtWYWx1ZX0sCiAgICApOwogICAgcmV0dXJuICRTZXJ2aWNlSUQgaWYgJFNlcnZpY2VJ
RDsKCiAgICAjIGNoZWNrIGlmIGdpdmVuIHZhbHVlIGlzIGEgdmFsaWQgU2VydmljZSBJRAogICAg
aWYgKCAkUGFyYW17VmFsdWV9ICF+IC9cRC8gKSB7CiAgICAgICAgbXkgJFNlcnZpY2VOYW1lID0g
JFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+U2VydmljZUxvb2t1cCgKICAgICAgICAgICAgU2Vydmlj
ZUlEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFBhcmFte1Zh
bHVlfSBpZiAkU2VydmljZU5hbWU7CiAgICB9CgogICAgcmV0dXJuICcnOwp9Cgo9aXRlbSBJbXBv
cnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJFZhbHVl
ID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAx
MSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAg
ICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJl
dHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICBy
ZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgIyBjaGVjayBpZiBTZXJ2aWNlIG5hbWUg
d2FzIGdpdmVuCiAgICBteSAkU2VydmljZUlEID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+U2Vy
dmljZUxvb2t1cCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwogICAgcmV0
dXJuICRTZXJ2aWNlSUQgaWYgJFNlcnZpY2VJRDsKCiAgICAjIGNoZWNrIGlmIGdpdmVuIHZhbHVl
IGlzIGEgdmFsaWQgU2VydmljZSBJRAogICAgaWYgKCAkUGFyYW17VmFsdWV9ICF+IC9cRC8gKSB7
CiAgICAgICAgbXkgJFNlcnZpY2VOYW1lID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+U2Vydmlj
ZUxvb2t1cCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAg
KTsKICAgICAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBpZiAkU2VydmljZU5hbWU7CiAgICB9Cgog
ICAgcmV0dXJuICcnOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoK
VGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9y
Zy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZv
ciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZv
cm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0
cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dAoKPWhlYWQxIFZFUlNJT04K
CiRSZXZpc2lvbjogMS44ICQgJERhdGU6IDIwMTYvMDUvMTggMDc6NDA6NDcgJAoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvQ0lBdHRhY2htZW50
LnBtIC0geG1sIGJhY2tlbmQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAu
ZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToK
IyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZp
bm92YShhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUtaXQo
ZG90KWRlCiMKIyAtLQojIGJhc2VkIHVwb24gQ3VzdG9tZXIucG0gLSAxLjIuMi4xIGZyb20gMjAw
Ny8xMC8wOSBieSBtaAojICRJZDogQ0lBdHRhY2htZW50LnBtLHYgMS4xMCAyMDE2LzA1LzE4IDA3
OjQwOjQ3IHR0byBFeHAgJAojCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xV
VEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENP
UFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJl
Y2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0
LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBl
OjpDSUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERl
cGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6
QXR0YWNobWVudFN0b3JhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEg
TkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkNJQXR0YWNo
bWVudCAtIHhtbCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgeG1sIGZ1bmN0
aW9ucyBvZiBDSUF0dGFjaG1lbnQgb2JqZWN0cwoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkK
CmNyZWF0ZSBhIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsK
ICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5l
dygpOwogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5
c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q0lBdHRhY2htZW50Jyk7Cgo9Y3V0Cgpz
dWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBu
ZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAk
VHlwZSApOwoKICAgICRTZWxmLT57QXR0YWNobWVudFN0b3JhZ2VPYmplY3R9ID0gJEtlcm5lbDo6
T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRT
dG9yYWdlJyk7CiAgICAkU2VsZi0+e0xvZ09iamVjdH0gICAgICAgICAgICAgICA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1p
dGVtIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgeG1sIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkg
JFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIEl0ZW0gPT4gJEl0
ZW1SZWYsCiAgICAgICAgVmFsdWUgPT4gMS4xLjEuMSwKICAgICk7Cgo9Y3V0CgpzdWIgVmFsdWVM
b29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICRWYWx1ZSA9ICcn
OwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3JlYWNoIChxdyhJdGVtKSkgewogICAg
ICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+
TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAg
IE1lc3NhZ2UgID0+ICIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSA6OiBOZWVkICRfISIK
ICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlm
ICggKCBkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSApIHsKICAgICAgICBteSAkcmV0VmFsID0gJFBh
cmFte1ZhbHVlfTsKCiAgICAgICAgcmV0dXJuICRyZXRWYWw7CiAgICB9CgogICAgcmV0dXJuICcn
OwoKfQoKPWl0ZW0gU3RhdHNBdHRyaWJ1dGVDcmVhdGUoKQoKY3JlYXRlIGEgYXR0cmlidXRlIGFy
cmF5IGZvciB0aGUgc3RhdHMgZnJhbWV3b3JrCgogICAgbXkgJEF0dHJpYnV0ZSA9ICRCYWNrZW5k
T2JqZWN0LT5TdGF0c0F0dHJpYnV0ZUNyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0tleTo6U3Via2V5
JywKICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAg
KTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFy
YW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50
IChxdyhLZXkgTmFtZSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkg
ewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFBy
aW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJn
dW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAg
fQoKICAgICMgY3JlYXRlIGFycnRpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsKICAgICAgICB7
CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAg
ICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4g
MCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAwLAogICAgICAgICAgICBFbGVtZW50
ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+
ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgXTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZTsK
fQoKPWl0ZW0gRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVl
IGZvciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0U2Vh
cmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7
Cgo9Y3V0CgpzdWIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQ
YXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICBy
ZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0ZW0gRXhwb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBh
cmUgdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5FeHBv
cnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsK
Cj1jdXQKCnN1YiBFeHBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkg
PSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKCiAgICBteSAkUmV0
VmFsICAgICAgID0gIiI7CiAgICBteSAlQXR0RGlyRGF0YSAgID0gKCk7CiAgICBteSAkU2l6ZU5v
dGUgICAgID0gIiI7CiAgICBteSAkUmVhbEZpbGVTaXplID0gMDsKICAgIG15ICRNRDVOb3RlICAg
ICAgPSAiIjsKICAgIG15ICRSZWFsTUQ1U3VtICAgPSAiIjsKCiAgICAjIGdldCBzYXZlZCBwcm9w
ZXJ0aWVzIChhdHRhY2htZW50IGRpcmVjdG9yeSBpbmZvKQogICAgJUF0dERpckRhdGEgPSAkU2Vs
Zi0+e0F0dGFjaG1lbnRTdG9yYWdlT2JqZWN0fS0+QXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3Rv
cnkoCiAgICAgICAgSUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICk7CgogICAgaWYgKAogICAgICAg
ICRBdHREaXJEYXRhe1ByZWZlcmVuY2VzfS0+e0ZpbGVTaXplQnl0ZXN9CiAgICAgICAgJiYKICAg
ICAgICAkQXR0RGlyRGF0YXtQcmVmZXJlbmNlc30tPntNRDVTdW19CiAgICAgICAgKQogICAgewoK
ICAgICAgICBteSAlUmVhbFByb3BlcnRpZXMgPQogICAgICAgICAgICAkU2VsZi0+e0F0dGFjaG1l
bnRTdG9yYWdlT2JqZWN0fS0+QXR0YWNobWVudFN0b3JhZ2VHZXRSZWFsUHJvcGVydGllcygKICAg
ICAgICAgICAgJUF0dERpckRhdGEsCiAgICAgICAgICAgICk7CgogICAgICAgICRSZXRWYWwgICAg
ICAgPSAiKHNpemUgIiAuICRBdHREaXJEYXRhe1ByZWZlcmVuY2VzfS0+e0ZpbGVTaXplQnl0ZXN9
IC4gIikiOwogICAgICAgICRSZWFsTUQ1U3VtICAgPSAkUmVhbFByb3BlcnRpZXN7UmVhbE1ENVN1
bX07CiAgICAgICAgJFJlYWxGaWxlU2l6ZSA9ICRSZWFsUHJvcGVydGllc3tSZWFsRmlsZVNpemV9
OwoKICAgICAgICBpZiAoICRSZWFsRmlsZVNpemUgIT0gJEF0dERpckRhdGF7UHJlZmVyZW5jZXN9
LT57RmlsZVNpemVCeXRlc30gKSB7CiAgICAgICAgICAgICRTaXplTm90ZSA9ICIgSW52YWxpZCBj
b250ZW50IC0gZmlsZSBzaXplIG9uIGRpc2sgaGFzIGJlZW4gY2hhbmdlZCI7CgogICAgICAgICAg
ICBpZiAoICRSZWFsRmlsZVNpemUgPiAoIDEwMjQgKiAxMDI0ICkgKSB7CiAgICAgICAgICAgICAg
ICAkUmVhbEZpbGVTaXplID0gc3ByaW50ZiAiJS4xZiBNQnl0ZXMiLCAoICRSZWFsRmlsZVNpemUg
LyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRS
ZWFsRmlsZVNpemUgPiAxMDI0ICkgewogICAgICAgICAgICAgICAgJFJlYWxGaWxlU2l6ZSA9IHNw
cmludGYgIiUuMWYgS0J5dGVzIiwgKCAoICRSZWFsRmlsZVNpemUgLyAxMDI0ICkgKTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRSZWFsRmlsZVNpemUg
PSAkUmVhbEZpbGVTaXplIC4gJyBCeXRlcyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRS
ZXRWYWwgPSAiKHJlYWwgc2l6ZSAiIC4gJFJlYWxGaWxlU2l6ZSAuICRTaXplTm90ZSAuICIpIjsK
ICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUmVhbE1ENVN1bSBuZSAkQXR0RGlyRGF0YXtQcmVm
ZXJlbmNlc30tPntNRDVTdW19ICkgewogICAgICAgICAgICAkTUQ1Tm90ZSA9ICIgSW52YWxpZCBt
ZDVzdW0gLSBUaGUgZmlsZSBtaWdodCBoYXZlIGJlZW4gY2hhbmdlZC4iOwogICAgICAgICAgICAk
UmV0VmFsID1+IHMvXCkvJE1ENU5vdGVcKS9nOwogICAgICAgIH0KCiAgICB9CiAgICAkUmV0VmFs
ID0gJEF0dERpckRhdGF7RmlsZU5hbWV9OwoKICAgICNyZXR1cm4gZmlsZSBpbmZvcm1hdGlvbi4u
LgogICAgcmV0dXJuICRSZXRWYWw7Cn0KCj1pdGVtIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgp
CgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJh
Y2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAx
MSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFy
ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5l
ZCAkUGFyYW17VmFsdWV9OwoKICAgICMgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGludGVuZGVkIGZv
ciBpbXBvcnQgeWV0Li4uCiAgICAkUGFyYW17VmFsdWV9ID0gIiI7CgogICAgcmV0dXJuICRQYXJh
bXtWYWx1ZX07Cn0KCj1pdGVtIEltcG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZv
ciBpbXBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0VmFsdWVQcmVw
YXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIg
SW1wb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAg
cmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyB0aGlzIGF0dHJpYnV0ZSBp
cyBub3QgaW50ZW5kZWQgZm9yIGltcG9ydCB5ZXQuLi4KICAgICRQYXJhbXtWYWx1ZX0gPSAiIjsK
CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5E
IENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0ICho
dHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9y
IGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMg
ZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvQ0lBQ0N1c3RvbWVy
Q29tcGFueS5wbSAtIHhtbCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2
IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9jaGFu
Z2VkIGJ5OgojICogU3RlZmFuKGRvdClNZWhsaWcoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICog
QW5uYShkb3QpTGl0dmlub3ZhKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJ
bGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBGcmFuayhkb3QpSmFjcXVlbWluKGF0
KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBDSUFDQ3VzdG9tZXJDb21wYW55LnBt
LHYgMS42IDIwMTYvMDMvMjIgMTI6MTM6MzQgZmphY3F1ZW1pbiBFeHAgJAojIC0tCiMgVGhpcyBz
b2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBz
ZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChB
R1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cu
Z251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6
SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q0lBQ0N1c3RvbWVyQ29tcGFueTsKCnVzZSBzdHJp
Y3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5l
bDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55JywKICAgICdL
ZXJuZWw6OlN5c3RlbTo6TG9nJwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNN
Q29uZmlnSXRlbTo6WE1MOjpUeXBlOjpDSUFDQ3VzdG9tZXJDb21wYW55IC0geG1sIGJhY2tlbmQg
bW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCB4bWwgZnVuY3Rpb25zIG9mIENJQUNDdXN0b21l
ckNvbXBhbnkgb2JqZWN0cwoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBv
YmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAk
S2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15
ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01D
b25maWdJdGVtOjpYTUw6OlR5cGU6OkNJQUNDdXN0b21lckNvbXBhbnknKTsKCj1jdXQKCnN1YiBu
ZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBo
YXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBl
ICk7CgogICAgJFNlbGYtPntDb25maWdPYmplY3R9ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdl
dCgnS2VybmVsOjpDb25maWcnKTsKICAgICRTZWxmLT57Q3VzdG9tZXJDb21wYW55T2JqZWN0fSA9
ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckNvbXBhbnknKTsKICAg
ICRTZWxmLT57TG9nT2JqZWN0fSAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIFZhbHVlTG9va3Vw
KCkKCmdldCB0aGUgeG1sIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tl
bmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkK
ICAgICk7Cgo9Y3V0CgpzdWIgVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkg
PSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgbXkgJUN1c3RvbWVy
Q29tcGFueVNlYXJjaExpc3QgPSAkU2VsZi0+e0N1c3RvbWVyQ29tcGFueU9iamVjdH0tPkN1c3Rv
bWVyQ29tcGFueUdldCgKICAgICAgICBDdXN0b21lcklEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAp
OwoKICAgIG15ICRDdXN0b21lckNvbXBhbnlEYXRhU3RyID0gJyc7CiAgICBteSAkQ3VzdENvbXBh
bnlNYXBSZWYgPQogICAgICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdJVFNNQ0lBdHRy
aWJ1dGVDb2xsZWN0aW9uOjpDb21wYW55QmFja2VuZE1hcHBpbmcnKTsKCiAgICBpZiAoICRDdXN0
Q29tcGFueU1hcFJlZiAmJiByZWYoJEN1c3RDb21wYW55TWFwUmVmKSBlcSAnSEFTSCcgKSB7Cgog
ICAgICAgIGZvciBteSAkTWFwcGluZ0ZpZWxkICggc29ydCgga2V5cyggJXskQ3VzdENvbXBhbnlN
YXBSZWZ9ICkgKSApIHsKICAgICAgICAgICAgaWYgKCAkQ3VzdG9tZXJDb21wYW55U2VhcmNoTGlz
dHsgJEN1c3RDb21wYW55TWFwUmVmLT57JE1hcHBpbmdGaWVsZH0gfSApIHsKICAgICAgICAgICAg
ICAgICRDdXN0b21lckNvbXBhbnlEYXRhU3RyIC49ICcgJwogICAgICAgICAgICAgICAgICAgIC4g
JEN1c3RvbWVyQ29tcGFueVNlYXJjaExpc3R7ICRDdXN0Q29tcGFueU1hcFJlZi0+eyRNYXBwaW5n
RmllbGR9IH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoKICAgICRDdXN0b21lckNv
bXBhbnlEYXRhU3RyID1+IHMvXHMrJC8vZzsKICAgICRDdXN0b21lckNvbXBhbnlEYXRhU3RyID1+
IHMvXlxzKy8vZzsKCiAgICByZXR1cm4gJEN1c3RvbWVyQ29tcGFueURhdGFTdHI7Cn0KCj1pdGVt
IFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBmb3IgdGhl
IHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUgPSAkQmFja2VuZE9iamVjdC0+U3Rh
dHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdLZXk6OlN1YmtleScsCiAgICAgICAg
TmFtZSA9PiAnTmFtZScsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0Cgpz
dWIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsK
CiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IE5h
bWUgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAg
ICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAn
ZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNy
ZWF0ZSBhcnJ0aWJ1dGUKICAgIG15ICRBdHRyaWJ1dGUgPSBbCiAgICAgICAgewogICAgICAgICAg
ICBOYW1lICAgICAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgVXNlQXNYdmFs
dWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAg
ICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9
PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnSW5wdXRGaWVs
ZCcsCiAgICAgICAgfSwKICAgIF07CgogICAgcmV0dXJuICRBdHRyaWJ1dGU7Cn0KCj1pdGVtIEV4
cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0
CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJl
cGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3Vi
IEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBf
OwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJh
bXtWYWx1ZX07Cn0KCj1pdGVtIEV4cG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZv
ciBleHBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVw
YXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIg
RXhwb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAg
IyBjaGVjayB3aGF0IHNob3VsZCBiZSBleHBvcnRlZDogQ3VzdG9tZXJJRCBvciBDdXN0b21lckNv
bXBhbnlOYW1lCiAgICBteSAkQ3VzdENvbXBhbnlDb250ZW50ID0KICAgICAgICAkU2VsZi0+e0Nv
bmZpZ09iamVjdH0tPkdldCgnSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjo6Q3VzdG9tZXJDb21w
YW55OjpDb250ZW50Jyk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX0gaWYgKCAhJEN1c3RDb21w
YW55Q29udGVudCB8fCAoICRDdXN0Q29tcGFueUNvbnRlbnQgZXEgJ0N1c3RvbWVySUQnICkgKTsK
CiAgICAjIGdldCBDdXN0b21lckNvbXBhbnkgZGF0YQogICAgbXkgJUN1c3RvbWVyQ29tcGFueVNl
YXJjaExpc3QgPSAkU2VsZi0+e0N1c3RvbWVyQ29tcGFueU9iamVjdH0tPkN1c3RvbWVyQ29tcGFu
eUdldCgKICAgICAgICBDdXN0b21lcklEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwoKICAgICMg
Z2V0IGNvbXBhbnkgbmFtZQogICAgbXkgJEN1c3RvbWVyQ29tcGFueURhdGFTdHIgPSAkQ3VzdG9t
ZXJDb21wYW55U2VhcmNoTGlzdHtDdXN0b21lckNvbXBhbnlOYW1lfTsKCiAgICAkQ3VzdG9tZXJD
b21wYW55RGF0YVN0ciA9fiBzL1xzKyQvL2c7CiAgICAkQ3VzdG9tZXJDb21wYW55RGF0YVN0ciA9
fiBzL15ccysvL2c7CgogICAgIyByZXR1cm4gY29tcGFueSBuYW1lCiAgICByZXR1cm4gJEN1c3Rv
bWVyQ29tcGFueURhdGFTdHI7Cn0KCj1pdGVtIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpw
cmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tl
bmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwg
IyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7
CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAk
UGFyYW17VmFsdWV9OwoKICAgICMgc2VhcmNoIGZvciBuYW1lLi4uLgogICAgbXkgJUN1c3RvbWVy
Q29tcGFueUxpc3QgPSAkU2VsZi0+e0N1c3RvbWVyQ29tcGFueU9iamVjdH0tPkN1c3RvbWVyQ29t
cGFueUxpc3QoCiAgICAgICAgU2VhcmNoID0+ICcqJyAuICRQYXJhbXtWYWx1ZX0gLiAnKicsCiAg
ICApOwoKICAgIGlmICgKICAgICAgICAlQ3VzdG9tZXJDb21wYW55TGlzdAogICAgICAgICYmICgg
c2NhbGFyKCBrZXlzICVDdXN0b21lckNvbXBhbnlMaXN0ICkgPT0gMSApCiAgICAgICAgKQogICAg
ewogICAgICAgIG15IEBSZXN1bHQgPSBrZXlzICVDdXN0b21lckNvbXBhbnlMaXN0OwogICAgICAg
IHJldHVybiAkUmVzdWx0WzBdOwogICAgfQoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9
aXRlbSBJbXBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAg
bXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBW
YWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJl
cGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVm
aW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgaWYgY29udGVudCBpcyBDdXN0b21lcklE
IG9yIEN1c3RvbWVyQ29tcGFueU5hbWUKICAgIG15ICRDdXN0Q29tcGFueUNvbnRlbnQgPQogICAg
ICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9u
OjpDdXN0b21lckNvbXBhbnk6OkNvbnRlbnQnKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBp
ZiAoICEkQ3VzdENvbXBhbnlDb250ZW50ICk7CgogICAgbXkgJEN1c3RvbWVyQ29tcGFueURhdGFT
dHIgPSAnJzsKCiAgICBpZiAoICRDdXN0Q29tcGFueUNvbnRlbnQgZXEgJ0N1c3RvbWVySUQnICYm
ICRQYXJhbXtWYWx1ZX0gbmUgJycgKSB7CiAgICAgICAgIyBjaGVjayBpZiBpdCBpcyBhIHZhbGlk
IEN1c3RvbWVySUQKICAgICAgICBteSAlQ3VzdG9tZXJDb21wYW55U2VhcmNoTGlzdCA9ICRTZWxm
LT57Q3VzdG9tZXJDb21wYW55T2JqZWN0fS0+Q3VzdG9tZXJDb21wYW55R2V0KAogICAgICAgICAg
ICBDdXN0b21lcklEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCVD
dXN0b21lckNvbXBhbnlTZWFyY2hMaXN0KSB7CiAgICAgICAgICAgICRDdXN0b21lckNvbXBhbnlE
YXRhU3RyID0gJFBhcmFte1ZhbHVlfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRDdXN0
Q29tcGFueUNvbnRlbnQgZXEgJ0N1c3RvbWVyQ29tcGFueU5hbWUnICYmICRQYXJhbXtWYWx1ZX0g
bmUgJycpIHsKCiAgICAgICAgIyBzZWFyY2ggZm9yIEN1c3RvbWVyQ29tcGFueSBkYXRhCiAgICAg
ICAgbXkgJUN1c3RvbWVyQ29tcGFueVNlYXJjaExpc3QgPSAkU2VsZi0+e0N1c3RvbWVyQ29tcGFu
eU9iamVjdH0tPkN1c3RvbWVyQ29tcGFueUxpc3QoCiAgICAgICAgICAgIFNlYXJjaCA9PiAkUGFy
YW17VmFsdWV9LAogICAgICAgICAgICBMaW1pdCAgPT4gNTAwLAogICAgICAgICk7CgogICAgICAg
ICMgY2hlY2sgZWFjaCBmb3VuZCBDdXN0b21lckNvbXBhbnkKICAgICAgICBpZiAoJUN1c3RvbWVy
Q29tcGFueVNlYXJjaExpc3QpIHsKICAgICAgICAgICAgZm9yZWFjaCBteSAkQ3VzdG9tZXJJRCAo
IGtleXMoJUN1c3RvbWVyQ29tcGFueVNlYXJjaExpc3QpICkgewoKICAgICAgICAgICAgICAgIG15
ICVDdXN0b21lckNvbXBhbnlEYXRhID0gJFNlbGYtPntDdXN0b21lckNvbXBhbnlPYmplY3R9LT5D
dXN0b21lckNvbXBhbnlHZXQoCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCA9PiAkQ3Vz
dG9tZXJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBpZiBDdXN0b21l
ckNvbXBhbnlOYW1lIG1hdGNoZXMgLSB1c2UgdGhpcyBDdWR0b21lcklEIGFuZCBzdG9wIHNlYXJj
aGluZwogICAgICAgICAgICAgICAgaWYgKCAkQ3VzdG9tZXJDb21wYW55RGF0YXtDdXN0b21lckNv
bXBhbnlOYW1lfSBlcSAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgICRDdXN0
b21lckNvbXBhbnlEYXRhU3RyID0gJEN1c3RvbWVyQ29tcGFueURhdGF7Q3VzdG9tZXJJRH07CiAg
ICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgIH0KCiAgICAjIHdhcm5pbmcgaWYgbm8gZGFkYSBmb3VuZCBmb3IgdGhlIGdp
dmVuIEN1c3RvbWVySUQgb3IgQ3VzdG9tZXJDb21wYW55TmFtZQogICAgaWYgKCAhJEN1c3RvbWVy
Q29tcGFueURhdGFTdHIgKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICd3YXJuaW5nJywKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAg
ICAgICAgICAgICAgIkNvdWxkIG5vdCBpbXBvcnQgQ3VzdG9tZXJVc2VyQ29tcGFueTogbm8gQ3Vz
dG9tZXJJRCBmb3VuZCBmb3IgQ3VzdG9tZXJDb21wYW55TmFtZSAkUGFyYW17VmFsdWV9ISIKICAg
ICAgICApOwogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgICRDdXN0b21l
ckNvbXBhbnlEYXRhU3RyID1+IHMvXHMrJC8vZzsKICAgICRDdXN0b21lckNvbXBhbnlEYXRhU3Ry
ID1+IHMvXlxzKy8vZzsKCiAgICByZXR1cm4gJEN1c3RvbWVyQ29tcGFueURhdGFTdHI7Cn0KCjE7
Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBh
cnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJl
IGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUg
ZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYg
eW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGlj
ZW5zZXMvYWdwbC50eHQuCgo9Y3V0
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvQ3VzdG9tZXJVc2Vy
Q29tcGFueS5wbSAtIHhtbCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2
IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZS8KIwojIHdyaXR0ZW4vY2hh
bmdlZCBieToKIyAqIFN0ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBUb3Jz
dGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBGcmFuayhkb3QpT2JlcmVuZGVyKGF0
KWNhcGUtaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZS1pdChkb3QpZGUK
IyAqIFN0ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUtaXQoZG90KWRlCiMKIyAtLQojICRJZDogQ3Vz
dG9tZXJVc2VyQ29tcGFueS5wbSx2IDEuMTEgMjAxNi8wMS8xNCAxMDo0MToxMSBzbWVobGlnIEV4
cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5U
WS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vu
c2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxl
LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdl
IEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpDdXN0b21lclVzZXJD
b21wYW55OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNp
ZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21l
ckNvbXBhbnknLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2Vy
bmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkN1c3RvbWVyVXNlckNvbXBh
bnkgLSB4bWwgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIHhtbCBmdW5jdGlv
bnMgb2YgQ3VzdG9tZXJVc2VyQ29tcGFueSBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBu
ZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFu
YWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFn
ZXItPm5ldygpOwogICAgbXkgJFhNTFR5cGVEdW1teUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpP
TS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q3VzdG9t
ZXJVc2VyQ29tcGFueScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0g
KSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYg
PSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0NvbmZpZ09iamVj
dH0gICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgJFNl
bGYtPntDdXN0b21lckNvbXBhbnlPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpT
eXN0ZW06OkN1c3RvbWVyQ29tcGFueScpOwogICAgJFNlbGYtPntMb2dPYmplY3R9ICAgICAgICAg
ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIHJldHVy
biAkU2VsZjsKfQoKPWl0ZW0gVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSB4bWwgZGF0YSBvZiBhIHZl
cnNpb24KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoCiAgICAg
ICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1
cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkUGFyYW17VmFs
dWV9IHx8ICcnOwoKfQoKPWl0ZW0gU3RhdHNBdHRyaWJ1dGVDcmVhdGUoKQoKY3JlYXRlIGEgYXR0
cmlidXRlIGFycmF5IGZvciB0aGUgc3RhdHMgZnJhbWV3b3JrCgogICAgbXkgJEF0dHJpYnV0ZSA9
ICRCYWNrZW5kT2JqZWN0LT5TdGF0c0F0dHJpYnV0ZUNyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0tl
eTo6U3Via2V5JywKICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICBJdGVtID0+ICRJdGVt
UmVmLAogICAgKTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBteSAoICRT
ZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkg
JEFyZ3VtZW50IChxdyhLZXkgTmFtZSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJn
dW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAi
TmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgfQogICAgfQoKICAgICMgY3JlYXRlIGFycnRpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsK
ICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAog
ICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVT
ZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAg
ICBFbGVtZW50ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBCbG9jayAgICAg
ICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgXTsKCiAgICByZXR1cm4gJEF0
dHJpYnV0ZTsKfQoKPWl0ZW0gRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2Vh
cmNoIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+
RXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25h
bCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1
ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0ZW0gRXhwb3J0VmFsdWVQcmVwYXJl
KCkKCnByZXBhcmUgdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2Jq
ZWN0LT5FeHBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFs
KQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwg
JVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAg
IHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aXRlbSBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUo
KQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRC
YWNrZW5kT2JqZWN0LT5JbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4g
MTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBh
cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmlu
ZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aXRlbSBJbXBv
cnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJFZhbHVl
ID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAx
MSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAg
ICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFy
YW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCjE7Cgo9YmFjawoKPWhlYWQx
IFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMg
cHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBD
T1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVj
ZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQu
Cgo9Y3V0Cgo9aGVhZDEgVkVSU0lPTgoKJFJldmlzaW9uOiAxLjExICQgJERhdGU6IDIwMTYvMDEv
MTQgMTA6NDE6MTEgJAoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvRHVtbXlYLnBtIC0g
eG1sIGJhY2tlbmQgbW9kdWxlCiMgT3JpZ2luYWwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTQgT1RS
UyBBRywgaHR0cDovL290cnMub3JnLwojCiMgRXh0ZW5zaW9ucyBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4v
ZWRpdGVkIGJ5OgojICogVG9yc3Rlbihkb3QpVGhhdShhdCljYXBlLWl0KGRvdClkZQojCiMgLS0K
IyBiYXNlZCB1cG9uIER1bW15LnBtIC0gMS4xMSAyMDA4LzA1LzIxIGJ5IG1oCiMgJElkOiBEdW1t
eVgucG0sdiAxLjggMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29m
dHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2Vl
CiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQ
TCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3Lmdu
dS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklU
U01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkR1bW15WDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5n
czsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKCk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpT
eXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkR1bW15IC0geG1sIGJhY2tlbmQgbW9k
dWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCB4bWwgZnVuY3Rpb25zIG9mIER1bW15WCBvYmplY3Rz
Cgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBL
ZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2Vy
bmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJFhNTFR5cGVEdW1teUJh
Y2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZp
Z0l0ZW06OlhNTDo6VHlwZTo6RHVtbXlYJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5
cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAg
ICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAk
U2VsZjsKfQoKPWl0ZW0gVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSBkdW1teSBkYXRhIG9mIGEgdmVy
c2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxvb2t1cCgpOwoKPWN1
dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgcmV0dXJuICcn
Owp9Cgo9aXRlbSBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUgYSBhdHRyaWJ1dGUgYXJy
YXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBteSAkQXR0cmlidXRlID0gJEJhY2tlbmRP
YmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKCk7Cgo9Y3V0CgpzdWIgU3RhdHNBdHRyaWJ1dGVD
cmVhdGUgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICByZXR1cm47Cn0KCj1pdGVtIEV4cG9y
dFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0Cgog
ICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFy
ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4
cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoK
ICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtW
YWx1ZX07Cn0KCj1pdGVtIEV4cG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBl
eHBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJl
KAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhw
b3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0
dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsK
fQoKPWl0ZW0gSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVl
IGZvciBpbXBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0U2Vh
cmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7
Cgo9Y3V0CgpzdWIgSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQ
YXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICBy
ZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0ZW0gSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBh
cmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBv
cnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsK
Cj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkg
PSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAk
UGFyYW17VmFsdWV9Owp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoK
VGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9y
Zy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZv
ciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZv
cm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0
cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dAoKPWhlYWQxIFZFUlNJT04K
CiRSZXZpc2lvbjogMS44ICQgJERhdGU6IDIwMTYvMDUvMTggMDc6NDA6NDcgJAoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvRHluYW1pY0ZpZWxk
LnBtIC0geG1sIGJhY2tlbmQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAu
ZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2NoYW5nZWQgYnk6
CiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogU3RlZmFu
KGRvdClNZWhsaWcoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IER5bmFtaWNG
aWVsZC5wbSx2IDEuNCAyMDE2LzA1LzE4IDA3OjQwOjQ3IHR0byBFeHAgJAojIC0tCiMgVGhpcyBz
b2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBz
ZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChB
R1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cu
Z251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6
SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6RHluYW1pY0ZpZWxkOwoKdXNlIHN0cmljdDsKdXNl
IHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0
ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycKKTsKCj1oZWFkMSBO
QU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6RHluYW1pY0Zp
ZWxkIC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCB4bWwgZnVuY3Rp
b25zIG9mIER5bmFtaWNGaWVsZCBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoK
Y3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsK
ICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5l
dygpOwogICAgbXkgJFhNTFR5cGVEdW1teUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0
KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6RHluYW1pY0ZpZWxk
Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAg
IyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxl
c3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkT2JqZWN0fSA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICRTZWxm
LT57TG9nT2JqZWN0fSAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVt
OjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIFZhbHVlTG9va3VwKCkKCmdldCB0
aGUgeG1sIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3Qt
PlZhbHVlTG9va3VwKAogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgICAgIFZhbHVlID0+
IDExLCAgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsK
ICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYK
ICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxv
ZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAg
PT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJl
dHVybiBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCBpdGVtIGxpc3QKICAgIG15ICRJdGVt
TGlzdCA9ICRTZWxmLT57RHluYW1pY0ZpZWxkT2JqZWN0fS0+RHluYW1pY0ZpZWxkR2V0KAogICAg
ICAgIE5hbWUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TmFtZX0gfHwgJycsCiAgICApOwoK
ICAgIHJldHVybiBpZiAhJEl0ZW1MaXN0OwogICAgcmV0dXJuIGlmIHJlZiAkSXRlbUxpc3QtPntD
b25maWd9LT57UG9zc2libGVWYWx1ZXN9IG5lICdIQVNIJzsKCiAgICBteSAkVmFsdWUgPSAkSXRl
bUxpc3QtPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9LT57JFBhcmFte1ZhbHVlfX07CgogICAg
cmV0dXJuICRWYWx1ZTsKfQoKPWl0ZW0gU3RhdHNBdHRyaWJ1dGVDcmVhdGUoKQoKY3JlYXRlIGEg
YXR0cmlidXRlIGFycmF5IGZvciB0aGUgc3RhdHMgZnJhbWV3b3JrCgogICAgbXkgJEF0dHJpYnV0
ZSA9ICRCYWNrZW5kT2JqZWN0LT5TdGF0c0F0dHJpYnV0ZUNyZWF0ZSgKICAgICAgICBLZXkgID0+
ICdLZXk6OlN1YmtleScsCiAgICAgICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgSXRlbSA9PiAk
SXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUgewogICAgbXkg
KCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9y
IG15ICRBcmd1bWVudCAocXcoS2V5IE5hbWUgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17
JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAg
ICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAg
PT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgaXRlbSBsaXN0CiAgICBteSAkSXRlbUxpc3QgPSAk
U2VsZi0+e0R5bmFtaWNGaWVsZE9iamVjdH0tPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1l
ID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e05hbWV9IHx8ICcnLAogICAgKTsKCiAgICAjIGNy
ZWF0ZSBhcnJ0aWJ1dGUKICAgIG15ICRBdHRyaWJ1dGUgPSBbCiAgICAgICAgewogICAgICAgICAg
ICBOYW1lICAgICAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgVXNlQXNYdmFs
dWUgICAgICA9PiAxLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDEsCiAgICAgICAg
ICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9
PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxl
Y3RGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gJEl0ZW1MaXN0LT57Q29u
ZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSB8fCB7fSwKICAgICAgICB9LAogICAgXTsKCiAgICByZXR1
cm4gJEF0dHJpYnV0ZTsKfQoKPWl0ZW0gRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBh
cmUgc2VhcmNoIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9i
amVjdC0+RXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChv
cHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAg
IG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJh
bXtWYWx1ZX07CgogICAgbXkgQFZhbHVlcyA9IHNwbGl0ICcjIyMjIycsICRQYXJhbXtWYWx1ZX07
CiAgICBAVmFsdWVzID0gZ3JlcCB7JF99IEBWYWx1ZXM7CgogICAgcmV0dXJuIFxAVmFsdWVzOwp9
Cgo9aXRlbSBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgZXhwb3J0Cgog
ICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAg
ICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFZhbHVl
UHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAh
ZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgZ2V0IGl0ZW0gbGlzdAogICAgbXkgJEl0ZW1M
aXN0ID0gJFNlbGYtPntEeW5hbWljRmllbGRPYmplY3R9LT5EeW5hbWljRmllbGRHZXQoCiAgICAg
ICAgTmFtZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntOYW1lfSB8fCAnJywKICAgICk7Cgog
ICAgcmV0dXJuICRJdGVtTGlzdC0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30tPnskUGFyYW17
VmFsdWV9fSB8fCAkUGFyYW17VmFsdWV9Owp9Cgo9aXRlbSBJbXBvcnRTZWFyY2hWYWx1ZVByZXBh
cmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRBcnJheVJlZiA9
ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUg
PT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRTZWFyY2hWYWx1ZVBy
ZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRl
ZmluZWQgJFBhcmFte1ZhbHVlfTsKCiAgICBteSBAVmFsdWVzID0gc3BsaXQgJyMjIyMjJywgJFBh
cmFte1ZhbHVlfTsKICAgIEBWYWx1ZXMgPSBncmVwIHskX30gQFZhbHVlczsKCiAgICByZXR1cm4g
XEBWYWx1ZXM7Cn0KCj1pdGVtIEltcG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZv
ciBpbXBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0VmFsdWVQcmVw
YXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIg
SW1wb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAg
cmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyBnZXQgaXRlbSBsaXN0CiAg
ICBteSAkSXRlbUxpc3QgPSAkU2VsZi0+e0R5bmFtaWNGaWVsZE9iamVjdH0tPkR5bmFtaWNGaWVs
ZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e05hbWV9IHx8ICcn
LAogICAgKTsKCiAgICAjIHJldmVyc2UgdGhlIGxpc3QKICAgIG15ICVOYW1lMklEID0gcmV2ZXJz
ZSAleyRJdGVtTGlzdC0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc319OwoKICAgIG15ICREeW5h
bWljRmllbGRJRCA9ICROYW1lMklEeyRQYXJhbXtWYWx1ZX19OwoKICAgIGlmICggISREeW5hbWlj
RmllbGRJRCApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAg
UHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkR5bmFtaWNGaWVs
ZCBsb29rdXAgb2YnJFBhcmFte1ZhbHVlfScgZmFpbGVkISIsCiAgICAgICAgKTsKICAgICAgICBy
ZXR1cm47CiAgICB9CgogICAgcmV0dXJuICREeW5hbWljRmllbGRJRDsKfQoKMTsKCj1iYWNrCgo9
aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUg
T1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0
aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBm
aWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5v
dCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3Bs
LnR4dC4KCj1jdXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2aXNpb246IDEuNCAkICREYXRlOiAyMDE2
LzA1LzE4IDA3OjQwOjQ3ICQKCj1jdXQK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvVXNlci5wbSAtIHht
bCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdt
YkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9jaGFuZ2VkIGJ5OgojICogU3Rl
ZmFuKGRvdClNZWhsaWcoYXQpY2FwZS1pdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihh
dCljYXBlKGRhc2gpaXQoZG90KWRlCiMgLS0KIyAkSWQ6IFVzZXIucG0sdiAxLjEzIDIwMTYvMDUv
MTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxl
IENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90
IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwu
dHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpU
eXBlOjpVc2VyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRl
bmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06
OlVzZXInCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpY
TUw6OlR5cGU6OlVzZXIgLSB4bWwgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxs
IHhtbCBmdW5jdGlvbnMgb2YgVXNlciBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXco
KQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdl
cjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXIt
Pm5ldygpOwogICAgbXkgJFhNTFR5cGVEdW1teUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6VXNlcicpOwoK
PWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxs
b2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAk
U2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0xvZ09iamVjdH0gID0gJEtlcm5lbDo6T00tPkdl
dCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgJFNlbGYtPntVc2VyT2JqZWN0fSA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgcmV0dXJuICRTZWxmOwp9
Cgo9aXRlbSBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHhtbCBkYXRhIG9mIGEgdmVyc2lvbgoKICAg
IG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxvb2t1cCgKICAgICAgICBWYWx1ZSA9
PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15
ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9
OwoKICAgICMgZ2V0IFVzZXIgZGF0YQogICAgbXkgJVVzZXJTZWFyY2hMaXN0ID0gJFNlbGYtPntV
c2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtWYWx1ZX0s
CiAgICApOwogICAgbXkgJFVzZXJOYW1lID0gJyc7CiAgICBpZiAoJVVzZXJTZWFyY2hMaXN0KSB7
CiAgICAgICAgJFVzZXJOYW1lID0gJyInCiAgICAgICAgICAgIC4gJFVzZXJTZWFyY2hMaXN0e1Vz
ZXJGaXJzdG5hbWV9IC4gJyAnCiAgICAgICAgICAgIC4gJFVzZXJTZWFyY2hMaXN0e1VzZXJMYXN0
bmFtZX0gLiAnIiA8JwogICAgICAgICAgICAuICRVc2VyU2VhcmNoTGlzdHtVc2VyRW1haWx9IC4g
Jz4nOwogICAgfQoKICAgIHJldHVybiAkVXNlck5hbWUgfHwgJyc7Cgp9Cgo9aXRlbSBTdGF0c0F0
dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUgYSBhdHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBm
cmFtZXdvcmsKCiAgICBteSAkQXR0cmlidXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmli
dXRlQ3JlYXRlKAogICAgICAgIEtleSA9PiAnS2V5OjpTdWJrZXknLAogICAgICAgIE5hbWUgPT4g
J05hbWUnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRz
QXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBj
aGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBOYW1lIEl0ZW0p
KSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRTZWxm
LT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywK
ICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAg
ICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgYXJy
dGlidXRlCiAgICBteSAkQXR0cmlidXRlID0gWwogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAg
ICAgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAg
PT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VB
c1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJFBhcmFt
e0tleX0sCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAg
ICAgIH0sCiAgICBdOwoKICAgIHJldHVybiAkQXR0cmlidXRlOwp9Cgo9aXRlbSBFeHBvcnRTZWFy
Y2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15
ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5FeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAg
ICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRT
ZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBy
ZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKCiAgICBteSAlVXNlckRhdGEgPSAkU2Vs
Zi0+e1VzZXJPYmplY3R9LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1Zh
bHVlfSwKICAgICk7CgogICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgUHJpb3Jp
dHkgPT4gJ2Vycm9yJywKICAgICAgICBNZXNzYWdlICA9PiAiTm8gdXNlciBmb3VuZCBmb3IgSUQg
PCRQYXJhbXtWYWx1ZX0+ISIKICAgICk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1p
dGVtIEV4cG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBleHBvcnQKCiAgICBt
eSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZh
bHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0VmFsdWVQcmVw
YXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZp
bmVkICRQYXJhbXtWYWx1ZX07CgogICAgbXkgJVVzZXJEYXRhID0gJFNlbGYtPntVc2VyT2JqZWN0
fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwoK
ICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcics
CiAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHVzZXIgZm91bmQgZm9yIElEIDwkUGFyYW17VmFsdWV9
PiEiCiAgICApOwoKICAgIHJldHVybiAkVXNlckRhdGF7VXNlckxvZ2lufSB8fCAnJzsKfQoKPWl0
ZW0gSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBp
bXBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0U2VhcmNoVmFs
dWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0
CgpzdWIgSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSAp
ID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgbXkgJVVz
ZXJEYXRhID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlciA9
PiAkUGFyYW17VmFsdWV9LAogICAgKTsKCiAgICBpZiAoICEkVXNlckRhdGF7VXNlcklEfSApIHsK
ICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4g
J2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHVzZXIgZm91bmQgZm9yIGxvZ2lu
IDwkUGFyYW17VmFsdWV9PiEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAg
cmV0dXJuICRVc2VyRGF0YXtVc2VySUR9Owp9Cgo9aXRlbSBJbXBvcnRWYWx1ZVByZXBhcmUoKQoK
cHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3Qt
PkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAg
ICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFy
YW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgIG15
ICVVc2VyRGF0YSA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICAgIFVz
ZXIgPT4gJFBhcmFte1ZhbHVlfSwKICAgICk7CgogICAgaWYgKCAhJFVzZXJEYXRhe1VzZXJJRH0g
KSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5
ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyB1c2VyIGZvdW5kIGZvciBs
b2dpbiA8JFBhcmFte1ZhbHVlfT4hIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoK
ICAgIHJldHVybiAkVXNlckRhdGF7VXNlcklEfTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMg
QU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0
IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZ
IE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcg
Zm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQK
Cj1oZWFkMSBWRVJTSU9OCgokUmV2aXNpb246IDEuMTMgJCAkRGF0ZTogMjAxNi8wNS8xOCAwNzo0
MDo0NyAkCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvRW5jcnlwdGVkVGV4
dC5wbSAtIHhtbCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5w
LmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9jaGFuZ2VkIGJ5
OgojICogU3RlZmFuKGRvdClNZWhsaWcoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogTWFyaW8o
ZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBFbmNyeXB0
ZWRUZXh0LnBtLHYgMS42IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlz
IHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMs
IHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24g
KEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3
dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVt
OjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpFbmNyeXB0ZWRUZXh0OwoKdXNlIHN0cmljdDsK
dXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpT
eXN0ZW06OkxvZycKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0
ZW06OlhNTDo6VHlwZTo6RW5jcnlwdGVkVGV4dCAtIHhtbCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQx
IFNZTk9QU0lTCgpBbGwgeG1sIGZ1bmN0aW9ucyBvZiBFbmNyeXB0ZWRUZXh0IG9iamVjdHMKCj1v
dmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5l
bDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6
OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkWE1MVHlwZUR1bW15QmFja2Vu
ZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRl
bTo6WE1MOjpUeXBlOjpFbmNyeXB0ZWRUZXh0Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgg
JFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0
CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxm
LT57TG9nT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsK
CiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgdGV4dCBk
YXRhIG9mIGEgdmVyc2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxv
b2t1cCgKICAgICAgICBWYWx1ZSA9PiAxMSwgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1
YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVy
biAkUGFyYW17VmFsdWV9Owp9Cgo9aXRlbSBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUg
YSBhdHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBteSAkQXR0cmli
dXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKAogICAgICAgIEtleSAg
PT4gJ0tleTo6U3Via2V5JywKICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICBJdGVtID0+
ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBt
eSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBm
b3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgTmFtZSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJh
bXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAg
ICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdl
ICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhcnJ0aWJ1dGUKICAgIG15ICRBdHRyaWJ1
dGUgPSBbCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRQYXJhbXtO
YW1lfSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VB
c1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAg
ICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQmxv
Y2sgICAgICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgfSwKICAgIF07CgogICAgcmV0
dXJuICRBdHRyaWJ1dGU7Cn0KCj1pdGVtIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVw
YXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRP
YmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAo
b3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAg
ICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFy
YW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1pdGVtIEV4cG9ydFZhbHVl
UHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFj
a2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChv
cHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1
ZX07CgogICAgIyBkZWNyeXB0CiAgICAkUGFyYW17VmFsdWV9ID0gJFNlbGYtPl9EZWNyeXB0KCAk
UGFyYW17VmFsdWV9ICk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1pdGVtIEltcG9y
dFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0Cgog
ICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJlcGFy
ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIElt
cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoK
ICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtW
YWx1ZX07Cn0KCj1pdGVtIEltcG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBp
bXBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0VmFsdWVQcmVwYXJl
KAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgSW1w
b3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0
dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyBlbmNyeXB0CiAgICAkUGFyYW17
VmFsdWV9ID0gJFNlbGYtPl9FbmNyeXB0KCAkUGFyYW17VmFsdWV9ICk7CgogICAgcmV0dXJuICRQ
YXJhbXtWYWx1ZX07Cn0KCnN1YiBfRGVjcnlwdCB7CiAgICBteSAoICRTZWxmLCAkUHcgKSA9IEBf
OwoKICAgIHJldHVybiAnJyBpZiAhJFB3OwoKICAgIG15ICRMZW5ndGggPSBsZW5ndGgoJFB3KSAq
IDQ7CiAgICAkUHcgPSBwYWNrICJoJExlbmd0aCIsICRQdzsKICAgICRQdyA9IHVucGFjayAiQiRM
ZW5ndGgiLCAkUHc7CiAgICAkUHcgPX4gcy8xL0EvZzsKICAgICRQdyA9fiBzLzAvMS9nOwogICAg
JFB3ID1+IHMvQS8wL2c7CiAgICAkUHcgPSBwYWNrICJCJExlbmd0aCIsICRQdzsKCiAgICByZXR1
cm4gJFB3Owp9CgpzdWIgX0VuY3J5cHQgewogICAgbXkgKCAkU2VsZiwgJFB3ICkgPSBAXzsKCiAg
ICByZXR1cm4gJycgaWYgISRQdzsKCiAgICBteSAkTGVuZ3RoID0gbGVuZ3RoKCRQdykgKiA4Owog
ICAgY2hvbXAgJFB3OwoKICAgICMgZ2V0IGJpdCBjb2RlCiAgICBteSAkVCA9IHVucGFjayggIkIk
TGVuZ3RoIiwgJFB3ICk7CgogICAgIyBjcnlwdCBiaXQgY29kZQogICAgJFQgPX4gcy8xL0EvZzsK
ICAgICRUID1+IHMvMC8xL2c7CiAgICAkVCA9fiBzL0EvMC9nOwoKICAgICMgZ2V0IGFzY2lpIGNv
ZGUKICAgICRUID0gcGFjayggIkIkTGVuZ3RoIiwgJFQgKTsKCiAgICAjIGdldCBoZXggY29kZQog
ICAgbXkgJEggPSB1bnBhY2soICJoJExlbmd0aCIsICRUICk7CgogICAgcmV0dXJuICRIOwp9Cgox
OwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBw
YXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2Fy
ZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhl
IGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElm
IHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xp
Y2Vuc2VzL2FncGwudHh0LgoKPWN1dAoKPWhlYWQxIFZFUlNJT04KCiRSZXZpc2lvbjogMS42ICQg
JERhdGU6IDIwMTYvMDUvMTggMDc6NDA6NDcgJAoKPWN1dAo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvVGV4dExpbmsucG0g
LSB4bWwgYmFja2VuZCBtb2R1bGUKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBjLmEucC5lLiBJ
VCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vY2hhbmdlZCBieToKIyAq
IFN0ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBU
ZXh0TGluay5wbSx2IDEuNCAyMDE2LzA1LzE4IDA3OjQwOjQ3IHR0byBFeHAgJAojIC0tCiMgVGhp
cyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxz
LCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9u
IChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93
d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3Rl
bTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6VGV4dExpbms7Cgp1c2Ugc3RyaWN0Owp1c2Ug
d2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3Rl
bTo6TG9nJwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6
WE1MOjpUeXBlOjpUZXh0TGluayAtIHhtbCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lT
CgpBbGwgeG1sIGZ1bmN0aW9ucyBvZiBUZXh0TGluayBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9
aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2Jq
ZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVj
dE1hbmFnZXItPm5ldygpOwogICAgbXkgJFhNTFR5cGVEdW1teUJhY2tlbmRPYmplY3QgPSAkS2Vy
bmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6
VGV4dExpbmsnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBA
XzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307
CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntMb2dPYmplY3R9ID0gJEtl
cm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIHJldHVybiAkU2VsZjsK
fQoKPWl0ZW0gVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSB0ZXh0IGRhdGEgb2YgYSB2ZXJzaW9uCgog
ICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVl
ID0+IDExLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAg
IG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0K
Cj1pdGVtIFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBm
b3IgdGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUgPSAkQmFja2VuZE9iamVj
dC0+U3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgS2V5ICA9PiAnS2V5OjpTdWJrZXknLAog
ICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoK
PWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSAp
ID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3
KEtleSBOYW1lIEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAg
ICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3Jp
dHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVu
dCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoK
ICAgICMgY3JlYXRlIGFycnRpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsKICAgICAgICB7CiAg
ICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBV
c2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwK
ICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAg
ICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJ
bnB1dEZpZWxkJywKICAgICAgICB9LAogICAgXTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZTsKfQoK
PWl0ZW0gRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZv
ciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0U2VhcmNo
VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9
Y3V0CgpzdWIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJh
bSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1
cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWl0ZW0gRXhwb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUg
dmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5FeHBvcnRW
YWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1j
dXQKCnN1YiBFeHBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFy
YW17VmFsdWV9Owp9Cgo9aXRlbSBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBz
ZWFyY2ggdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0
LT5JbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlv
bmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkg
KCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1Zh
bHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aXRlbSBJbXBvcnRWYWx1ZVByZXBh
cmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRP
YmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9u
YWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxm
LCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9Owog
ICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBD
T05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0
cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX
QVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBs
aWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZp
bGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0Cgo9aGVh
ZDEgVkVSU0lPTgoKJFJldmlzaW9uOiAxLjQgJCAkRGF0ZTogMjAxNi8wNS8xOCAwNzo0MDo0NyAk
Cgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvVGlja2V0UmVmZXJl
bmNlLnBtIC0geG1sIGJhY2tlbmQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5h
LnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBi
eToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJ
bGxpbmdlcihhdCljYXBlLWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IFRpY2tldFJlZmVyZW5jZS5w
bSx2IDEuNCAyMDE2LzA1LzE4IDA3OjQwOjQ3IHR0byBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2Fy
ZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0
aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4g
SWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9y
Zy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNv
bmZpZ0l0ZW06OlhNTDo6VHlwZTo6VGlja2V0UmVmZXJlbmNlOwoKdXNlIHN0cmljdDsKdXNlIHdh
cm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06
OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJu
ZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6VGlja2V0UmVmZXJlbmNlIC0g
eG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCB4bWwgZnVuY3Rpb25zIG9m
IFRpY2tldFJlZmVyZW5jZSBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3Jl
YXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAg
IGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygp
OwogICAgbXkgJFhNTFR5cGVEdW1teUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdL
ZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6VGlja2V0UmVmZXJlbmNl
Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAg
IyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxl
c3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57VGlja2V0T2JqZWN0
fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICByZXR1
cm4gJFNlbGY7Cn0KCj1pdGVtIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgeG1sIGRhdGEgb2YgYSB2
ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAg
ICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgVmFsdWVMb29r
dXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQ
YXJhbXtWYWx1ZX07CgogICAgbXkgJFRpY2tldE51bWJlciA9ICRTZWxmLT57VGlja2V0T2JqZWN0
fS0+VGlja2V0TnVtYmVyTG9va3VwKAogICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtWYWx1ZX0s
CiAgICApOwoKICAgIGlmICggISRUaWNrZXROdW1iZXIgKSB7CiAgICAgICAgJFRpY2tldE51bWJl
ciA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgcmV0dXJuICRUaWNrZXROdW1iZXI7Cn0KCj1p
dGVtIFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBmb3Ig
dGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUgPSAkQmFja2VuZE9iamVjdC0+
U3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdLZXk6OlN1YmtleScsCiAgICAg
ICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0
CgpzdWIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5
IE5hbWUgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAg
ICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9
PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIK
ICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAj
IGNyZWF0ZSBhcnJ0aWJ1dGUKICAgIG15ICRBdHRyaWJ1dGUgPSBbCiAgICAgICAgewogICAgICAg
ICAgICBOYW1lICAgICAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgVXNlQXNY
dmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAg
ICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAg
ICA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnSW5wdXRG
aWVsZCcsCiAgICAgICAgfSwKICAgIF07CgogICAgcmV0dXJuICRBdHRyaWJ1dGU7Cn0KCj1pdGVt
IEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhw
b3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVl
UHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoK
c3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17
VmFsdWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1
ZX07CgogICAgIyBsb29rdXAgbnVtYmVyIGZvciBnaXZlbiBUaWNrZXQgSUQKICAgIG15ICRUaWNr
ZXROdW1iZXIgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldE51bWJlckxvb2t1cCgKICAg
ICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKICAgIGlmICggJFRpY2tldE51
bWJlciApIHsKICAgICAgICByZXR1cm4gJFRpY2tldE51bWJlcjsKICAgIH0KCiAgICByZXR1cm4g
Jyc7Cn0KCj1pdGVtIEV4cG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBleHBv
cnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJlKAog
ICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0
VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBub3Ro
aW5nIGdpdmVuPwogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyBl
bXB0eSB2YWx1ZT8KICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICAjIGxvb2t1
cCBudW1iZXIgZm9yIGdpdmVuIFRpY2tldCBJRAogICAgbXkgJFRpY2tldE51bWJlciA9ICRTZWxm
LT57VGlja2V0T2JqZWN0fS0+VGlja2V0TnVtYmVyTG9va3VwKAogICAgICAgIFRpY2tldElEID0+
ICRQYXJhbXtWYWx1ZX0sCiAgICApOwogICAgaWYgKCAkVGlja2V0TnVtYmVyICkgewogICAgICAg
IHJldHVybiAkVGlja2V0TnVtYmVyOwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gSW1w
b3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBpbXBvcnQK
CiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0U2VhcmNoVmFsdWVQcmVw
YXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIg
SW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87
CgogICAgIyBub3RoaW5nIGdpdmVuPwogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1
ZX07CgogICAgIyBlbXB0eSB2YWx1ZT8KICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsK
CiAgICAjIGNoZWNrIGlmIFRpY2tldCBudW1iZXIgd2FzIGdpdmVuCiAgICBteSAkVGlja2V0SUQg
PSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldElETG9va3VwKAogICAgICAgIFRpY2tldE51
bWJlciA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKICAgIHJldHVybiAkVGlja2V0SUQgaWYgJFRp
Y2tldElEOwoKICAgICMgY2hlY2sgaWYgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxpZCBUaWNrZXQgSUQK
ICAgIGlmICggJFBhcmFte1ZhbHVlfSAhfiAvXEQvICkgewogICAgICAgIG15ICRUaWNrZXROdW1i
ZXIgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldE51bWJlckxvb2t1cCgKICAgICAgICAg
ICAgVGlja2V0SUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICApOwogICAgICAgIHJldHVybiAk
UGFyYW17VmFsdWV9IGlmICRUaWNrZXROdW1iZXI7CiAgICB9CgogICAgcmV0dXJuICcnOwp9Cgo9
aXRlbSBJbXBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAg
bXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBW
YWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJl
cGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbm90aGluZyBnaXZl
bj8KICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgZW1wdHkgdmFs
dWU/CiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgIyBjaGVjayBpZiBUaWNr
ZXQgbnVtYmVyIHdhcyBnaXZlbgogICAgbXkgJFRpY2tldElEID0gJFNlbGYtPntUaWNrZXRPYmpl
Y3R9LT5UaWNrZXRJRExvb2t1cCgKICAgICAgICBUaWNrZXROdW1iZXIgPT4gJFBhcmFte1ZhbHVl
fSwKICAgICk7CiAgICByZXR1cm4gJFRpY2tldElEIGlmICRUaWNrZXRJRDsKCiAgICAjIGNoZWNr
IGlmIGdpdmVuIHZhbHVlIGlzIGEgdmFsaWQgVGlja2V0IElECiAgICBpZiAoICRQYXJhbXtWYWx1
ZX0gIX4gL1xELyApIHsKICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFNlbGYtPntUaWNrZXRP
YmplY3R9LT5UaWNrZXROdW1iZXJMb29rdXAoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJh
bXtWYWx1ZX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBpZiAkVGlj
a2V0TnVtYmVyOwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVS
TVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9q
ZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVU
RUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJ
TkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZl
IHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1j
dXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2aXNpb246IDEuNCAkICREYXRlOiAyMDE2LzA1LzE4IDA3
OjQwOjQ3ICQKCj1jdXQK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvVHlwZVJlZmVyZW5j
ZS5wbSAtIHhtbCBiYWNrZW5kIG1vZHVsZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5w
LmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6
CiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogTWFyaW8o
ZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIwojIC0tCiMgJElkOiBUeXBlUmVm
ZXJlbmNlLnBtLHYgMS41IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlz
IHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMs
IHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24g
KEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3
dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVt
OjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpUeXBlUmVmZXJlbmNlOwoKdXNlIHN0cmljdDsK
dXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpT
eXN0ZW06OlR5cGUnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJ
dGVtOjpYTUw6OlR5cGU6OlR5cGVSZWZlcmVuY2UgLSB4bWwgYmFja2VuZCBtb2R1bGUKCj1oZWFk
MSBTWU5PUFNJUwoKQWxsIHhtbCBmdW5jdGlvbnMgb2YgVHlwZVJlZmVyZW5jZSBvYmplY3RzCgo9
b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJu
ZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVs
OjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJFhNTFR5cGVEdW1teUJhY2tl
bmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0
ZW06OlhNTDo6VHlwZTo6VHlwZVJlZmVyZW5jZScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAo
ICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVj
dAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2Vs
Zi0+e1R5cGVPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUn
KTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgeG1s
IGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVl
TG9va3VwKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0Cgpz
dWIgVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1
cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgbXkgJVR5cGVEYXRhID0gJFNlbGYtPntUeXBl
T2JqZWN0fS0+VHlwZUdldCgKICAgICAgICBJRCAgICAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAg
ICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgbXkgJFR5cGVOYW1lID0gJFBhcmFte1ZhbHVlfTsK
CiAgICBpZiAoICVUeXBlRGF0YSAmJiAkVHlwZURhdGF7TmFtZX0gKSB7CiAgICAgICAgJFR5cGVO
YW1lID0gJFR5cGVEYXRhe05hbWV9OwogICAgfQoKICAgIHJldHVybiAkVHlwZU5hbWU7Cn0KCj1p
dGVtIFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBmb3Ig
dGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUgPSAkQmFja2VuZE9iamVjdC0+
U3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdLZXk6OlN1YmtleScsCiAgICAg
ICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0
CgpzdWIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKCiAgICByZXR1cm47Cn0KCj1pdGVtIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVw
YXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRP
YmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAo
b3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAg
ICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJl
dHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICBy
ZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgIyBsb29rdXAgbmFtZSBmb3IgZ2l2ZW4g
VHlwZSBJRAogICAgbXkgJVR5cGVEYXRhID0gJFNlbGYtPntUeXBlT2JqZWN0fS0+VHlwZUdldCgK
ICAgICAgICBJRCA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKICAgIGlmICggJVR5cGVEYXRhICYm
ICRUeXBlRGF0YXtOYW1lfSApIHsKICAgICAgICByZXR1cm4gJFR5cGVEYXRhe05hbWV9OwogICAg
fQoKICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gRXhwb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUg
dmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5FeHBvcnRW
YWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1j
dXQKCnN1YiBFeHBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKCiAgICAjIG5vdGhpbmcgZ2l2ZW4/CiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1Zh
bHVlfTsKCiAgICAjIGVtcHR5IHZhbHVlPwogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9
OwoKICAgICMgbG9va3VwIG5hbWUgZm9yIGdpdmVuIFR5cGUgSUQKICAgIG15ICVUeXBlRGF0YSA9
ICRTZWxmLT57VHlwZU9iamVjdH0tPlR5cGVHZXQoCiAgICAgICAgSUQgPT4gJFBhcmFte1ZhbHVl
fSwKICAgICk7CiAgICBpZiAoICVUeXBlRGF0YSAmJiAkVHlwZURhdGF7TmFtZX0gKSB7CiAgICAg
ICAgcmV0dXJuICRUeXBlRGF0YXtOYW1lfTsKICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCj1pdGVt
IEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1w
b3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVl
UHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoK
c3ViIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwoKICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBh
cmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBv
cnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsK
Cj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkg
PSBAXzsKCiAgICAjIG5vdGhpbmcgZ2l2ZW4/CiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFt
e1ZhbHVlfTsKCiAgICAjIGVtcHR5IHZhbHVlPwogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFs
dWV9OwoKICAgICMgY2hlY2sgaWYgUXVldWUgbmFtZSB3YXMgZ2l2ZW4KICAgIG15ICRUeXBlSUQg
PSAkU2VsZi0+e1R5cGVPYmplY3R9LT5UeXBlTG9va3VwKAogICAgICAgIFR5cGUgPT4gJFBhcmFt
e1ZhbHVlfSwKICAgICk7CiAgICByZXR1cm4gJFR5cGVJRCBpZiAkVHlwZUlEOwoKICAgICMgY2hl
Y2sgaWYgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxpZCBUeXBlIElECiAgICBpZiAoICRQYXJhbXtWYWx1
ZX0gIX4gL1xELyApIHsKICAgICAgICBteSAkVHlwZU5hbWUgPSAkU2VsZi0+e1R5cGVPYmplY3R9
LT5UeXBlTG9va3VwKAogICAgICAgICAgICBUeXBlSUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAg
ICApOwogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9IGlmICRUeXBlTmFtZTsKICAgIH0KCiAg
ICByZXR1cm4gJyc7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpU
aGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3Jn
LykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9y
IGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9y
bWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRw
Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0Cgo9aGVhZDEgVkVSU0lPTgoK
JFJldmlzaW9uOiAxLjUgJCAkRGF0ZTogMjAxNi8wNS8xOCAwNzo0MDo0NyAkCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vWE1ML1R5cGUvU0xBUmVmZXJlbmNl
LnBtIC0geG1sIGJhY2tlbmQgbW9kdWxlCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAu
ZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToK
IyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBNYXJpbyhk
b3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IFNMQVJlZmVy
ZW5jZS5wbSx2IDEuNSAyMDE2LzA1LzE4IDA3OjQwOjQ3IHR0byBFeHAgJAojIC0tCiMgVGhpcyBz
b2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBz
ZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChB
R1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cu
Z251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6
SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6U0xBUmVmZXJlbmNlOwoKdXNlIHN0cmljdDsKdXNl
IHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0
ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNMQScKKTsKCj1oZWFkMSBOQU1FCgpLZXJu
ZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6U0xBUmVmZXJlbmNlIC0geG1s
IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCB4bWwgZnVuY3Rpb25zIG9mIFNM
QVJlZmVyZW5jZSBvYmplY3RzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFu
IG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2Fs
ICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAg
bXkgJFhNTFR5cGVEdW1teUJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6U0xBUmVmZXJlbmNlJyk7Cgo9Y3V0
CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0
ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxm
LCAkVHlwZSApOwoKICAgICRTZWxmLT57TG9nT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tl
cm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57U0xBT2JqZWN0fSA9ICRLZXJuZWw6Ok9N
LT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTTEEnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVt
IFZhbHVlTG9va3VwKCkKCmdldCB0aGUgeG1sIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZh
bHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+IDExLCAj
IChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2Vs
ZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAg
bXkgJVNMQURhdGEgPSAkU2VsZi0+e1NMQU9iamVjdH0tPlNMQUdldCgKICAgICAgICBTTEFJRCAg
PT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgbXkgJFNM
QU5hbWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIGlmICggJVNMQURhdGEgJiYgJFNMQURhdGF7TmFt
ZX0gKSB7CiAgICAgICAgJFNMQU5hbWUgPSAkU0xBRGF0YXtOYW1lfTsKICAgIH0KCiAgICByZXR1
cm4gJFNMQU5hbWU7Cn0KCj1pdGVtIFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0
dHJpYnV0ZSBhcnJheSBmb3IgdGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUg
PSAkQmFja2VuZE9iamVjdC0+U3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdL
ZXk6OlN1YmtleScsCiAgICAgICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgSXRlbSA9PiAkSXRl
bVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUgewogICAgbXkgKCAk
U2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15
ICRBcmd1bWVudCAocXcoS2V5IE5hbWUgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFy
Z3VtZW50fSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAg
ICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4g
Ik5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhcnJ0aWJ1dGUKICAgIG15ICRBdHRyaWJ1dGUgPSBb
CiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwK
ICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVl
U2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAg
ICAgRWxlbWVudCAgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQmxvY2sgICAg
ICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgfSwKICAgIF07CgogICAgcmV0dXJuICRB
dHRyaWJ1dGU7Cn0KCj1pdGVtIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNl
YXJjaCB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3Qt
PkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9u
YWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAo
ICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbm90aGluZyBnaXZlbj8KICAgIHJldHVybiBp
ZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgZW1wdHkgdmFsdWU/CiAgICByZXR1cm4g
JycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgIyBsb29rdXAgbmFtZSBmb3IgZ2l2ZW4gc2Vydmlj
ZSBJRAogICAgbXkgJVNMQURhdGEgPSAkU2VsZi0+e1NMQU9iamVjdH0tPlNMQUdldCgKICAgICAg
ICBTTEFJRCAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAg
ICBpZiAoICVTTEFEYXRhICYmICRTTEFEYXRhe05hbWV9ICkgewogICAgICAgIHJldHVybiAkU0xB
RGF0YXtOYW1lfTsKICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCj1pdGVtIEV4cG9ydFZhbHVlUHJl
cGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2Vu
ZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRp
b25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNl
bGYsICVQYXJhbSApID0gQF87CgogICAgIyBub3RoaW5nIGdpdmVuPwogICAgcmV0dXJuIGlmICFk
ZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyBlbXB0eSB2YWx1ZT8KICAgIHJldHVybiAnJyBp
ZiAhJFBhcmFte1ZhbHVlfTsKCiAgICAjIGxvb2t1cCBuYW1lIGZvciBnaXZlbiBzZXJ2aWNlIElE
CiAgICBteSAlU0xBRGF0YSA9ICRTZWxmLT57U0xBT2JqZWN0fS0+U0xBR2V0KAogICAgICAgIFNM
QUlEICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIGlm
ICggJVNMQURhdGEgJiYgJFNMQURhdGF7TmFtZX0gKSB7CiAgICAgICAgcmV0dXJuICRTTEFEYXRh
e05hbWV9OwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWl0ZW0gSW1wb3J0U2VhcmNoVmFsdWVQ
cmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBpbXBvcnQKCiAgICBteSAkQXJyYXlS
ZWYgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZh
bHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0U2VhcmNoVmFs
dWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBub3RoaW5n
IGdpdmVuPwogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyBlbXB0
eSB2YWx1ZT8KICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICAjIGNoZWNrIGlm
IFNMQSBuYW1lIHdhcyBnaXZlbgogICAgbXkgJFNMQUlEID0gJFNlbGYtPntTTEFPYmplY3R9LT5T
TEFMb29rdXAoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKICAgIHJldHVy
biAkU0xBSUQgaWYgJFNMQUlEOwoKICAgICMgY2hlY2sgaWYgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxp
ZCBTTEEgSUQKICAgIGlmICggJFBhcmFte1ZhbHVlfSAhfiAvXEQvICkgewogICAgICAgIG15ICRT
TEFOYW1lID0gJFNlbGYtPntTTEFPYmplY3R9LT5TTEFMb29rdXAoCiAgICAgICAgICAgIFNMQUlE
ID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFBhcmFte1ZhbHVl
fSBpZiAkU0xBTmFtZTsKICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCj1pdGVtIEltcG9ydFZhbHVl
UHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBpbXBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFj
a2VuZE9iamVjdC0+SW1wb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChv
cHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBub3RoaW5nIGdpdmVuPwogICAgcmV0dXJuIGlm
ICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyBlbXB0eSB2YWx1ZT8KICAgIHJldHVybiAn
JyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICAjIGNoZWNrIGlmIFNMQSBuYW1lIHdhcyBnaXZlbgog
ICAgbXkgJFNMQUlEID0gJFNlbGYtPntTTEFPYmplY3R9LT5TTEFMb29rdXAoCiAgICAgICAgTmFt
ZSA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKICAgIHJldHVybiAkU0xBSUQgaWYgJFNMQUlEOwoK
ICAgICMgY2hlY2sgaWYgZ2l2ZW4gdmFsdWUgaXMgYSB2YWxpZCBTTEEgSUQKICAgIGlmICggJFBh
cmFte1ZhbHVlfSAhfiAvXEQvICkgewogICAgICAgIG15ICRTTEFOYW1lID0gJFNlbGYtPntTTEFP
YmplY3R9LT5TTEFMb29rdXAoCiAgICAgICAgICAgIFNMQUlEID0+ICRQYXJhbXtWYWx1ZX0sCiAg
ICAgICAgKTsKICAgICAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBpZiAkU0xBTmFtZTsKICAgIH0K
CiAgICByZXR1cm4gJyc7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05T
CgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMu
b3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4g
Rm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGlu
Zm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBo
dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0Cgo9aGVhZDEgVkVSU0lP
TgoKJFJldmlzaW9uOiAxLjUgJCAkRGF0ZTogMjAxNi8wNS8xOCAwNzo0MDo0NyAkCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRXZlbnQvQ0lDbGFzc1JlZmVyZW5j
ZV9SZWZyZXNoTGlua3MucG0KIyBTZWFyY2hlcyBmb3IgYXR0cmlidXRlcyBvZiB0eXBlIENJQ2xh
c3NSZWZlcmVuY2UgaW4gdGhlIG5ldyBDSXMgdmVyc2lvbiBkYXRhCiMgYW5kIHJlZnJlc2hlcyBh
bGwgbGlua3MgdG8gdGhhdCBjbGFzcywgaWYgY29uZmlndXJlZCBpbiBDSS1jbGFzcyBkZWZpbml0
aW9uLgojIEl0IGRlbGV0ZXMgbGlua3MgdG8gYW55IG9iamVjdHMgb2YgdGhlIHJlZmVyZW5jZWQg
Q0ktY2xhc3MgaWYgdGhlIHZhbHVlIGRvZXMKIyBub3QgZXhpcyBpbiB0aGUgQ0lzIHZlcnNpb24g
ZGF0YS4KIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8v
d3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vY2hhbmdlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRo
YXUoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogRnJhbmsoZG90KU9iZXJlbmRlcihhdCljYXBl
KGRhc2gpaXQoZG90KWRlCiMgKiBSYWxmKGRvdClCb2VobShhdCljYXBlKGRhc2gpaXQoZG90KWRl
CiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZS1pdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJ
bGxpbmdlcihhdCljYXBlLWl0KGRvdClkZQojCiMgLS0KIyAkSWQ6IENJQ2xhc3NSZWZlcmVuY2Vf
UmVmcmVzaExpbmtzLnBtLHYgMS4yNyAyMDE2LzA1LzE4IDA3OjQwOjQ3IHR0byBFeHAgJAojIC0t
CiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBk
ZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9y
bWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0
dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6
OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpDSUNsYXNzUmVmZXJlbmNlX1JlZnJlc2hM
aW5rczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVz
ID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ0lBdHRyaWJ1dENvbGxlY3Rpb25VdGlscycs
CiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3Rl
bTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycKKTsKCnN1YiBuZXcgewog
ICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjYWxsb2NhdGUgbmV3IGhhc2ggZm9y
IG9iamVjdC4uLgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsK
CiAgICAkU2VsZi0+e0NJQUNVdGlsc09iamVjdH0gID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVs
OjpTeXN0ZW06OklUU01DSUF0dHJpYnV0Q29sbGVjdGlvblV0aWxzJyk7CiAgICAkU2VsZi0+e0Nv
bmZpZ0l0ZW1PYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01D
b25maWdJdGVtJyk7CiAgICAkU2VsZi0+e0xpbmtPYmplY3R9ICAgICAgID0gJEtlcm5lbDo6T00t
PkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0
fSAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAg
cmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87
CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBmb3JlYWNoIChxdyhFdmVudCBEYXRh
KSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9n
T2JqZWN0fS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAg
ICAgICAgICAgIE1lc3NhZ2UgID0+ICJFdmVudDo6Q0lDbGFzc1JlZmVyZW5jZV9SZWZyZXNoTGlu
a3M6IE5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAg
fQogICAgfQogICAgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17RGF0YX0tPntDb25maWdJ
dGVtSUR9OwogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJFNlbGYt
PntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAg
ICAgICAgIE1lc3NhZ2UgID0+ICJFdmVudDo6Q0lDbGFzc1JlZmVyZW5jZV9SZWZyZXNoTGlua3M6
IE5vIENvbmZpZ0l0ZW1JRCBpbiBEYXRhISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAg
IH0KCiAgICAjZ2V0IGNvbmZpZyBpdGVtLi4uCiAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRTZWxm
LT57Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlE
ID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKICAgIHJldHVybiBpZiAoICEkQ29uZmln
SXRlbVJlZiB8fCByZWYoJENvbmZpZ0l0ZW1SZWYpIG5lICdIQVNIJyApOwoKICAgICNjaGVjayBp
ZiB0aGVyZSBpcyBhIHZlcnNpb24gYXQgYWxsLi4uCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAk
U2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9LT5WZXJzaW9uTGlzdCgKICAgICAgICBDb25maWdJdGVt
SUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwogICAgcmV0dXJuIGlmICggISRWZXJz
aW9uTGlzdFJlZi0+WzBdICk7CgogICAgIyBnZXQgdGhlIHRoZSBuZXcgdmVyc2lvbiAodGhhdCBp
cyBiZWluZyBjcmVhdGVkKS4uLgogICAgIyBuZXcgbGlua3Mgc2hvdWxkIGJlIGFkZGVkIGZvciB0
aGlzIHZlcnNpb24ncyBhdHRyaWJ1dGVzCiAgICBteSAkTmV3VmVyc2lvbkRhdGEgPSAkU2VsZi0+
e0NvbmZpZ0l0ZW1PYmplY3R9LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAk
UGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CiAgICByZXR1cm4gaWYgKCAhJE5ld1ZlcnNpb25E
YXRhIHx8IHJlZigkTmV3VmVyc2lvbkRhdGEpIG5lICdIQVNIJyApOwoKICAgICMgZ2V0IHRoZSBv
bGQgdmVyc2lvbgogICAgIyBvbGQgbGlua3Mgc2hvdWxkIGJlIGRlbGV0ZWQgZm9yIHRoaXMgdmVy
c2lvbidzIGF0dHJpYnV0ZXMKICAgIG15ICRPbGRWZXJzaW9uRGF0YSA9ICgpOwogICAgaWYgKCAk
VmVyc2lvbkxpc3RSZWYtPlstMl0gKSB7CiAgICAgICAgJE9sZFZlcnNpb25EYXRhID0gJFNlbGYt
PntDb25maWdJdGVtT2JqZWN0fS0+VmVyc2lvbkdldCgKICAgICAgICAgICAgVmVyc2lvbklEID0+
ICRWZXJzaW9uTGlzdFJlZi0+Wy0yXSwKICAgICAgICApOwogICAgfQoKICAgICMtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KICAgICMgZ2V0IGhhc2ggd2l0aCBhbGwgYXR0cmlidXRlLWtleXMsIHJlZmVyZW5j
ZWQgQ0ktY2xhc3NlcywKICAgICMgY29ycmVzcG9uZGluZyBsaW5rIHR5cGVzIGFuZCAtZGlyZWN0
aW9ucyBmcm9tIENJLWNsYXNzIGRlZmluaXRpb24uLi4KCiAgICBteSAlUmVsQXR0ck5ld1ZlcnNp
b24gPSAoKTsKICAgIG15ICVSZWxBdHRyT2xkVmVyc2lvbiA9ICgpOwogICAgbXkgJFhNTERlZmlu
aXRpb24gPSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9LT5EZWZpbml0aW9uR2V0KAogICAgICAg
IENsYXNzSUQgPT4gJE5ld1ZlcnNpb25EYXRhLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgX0Ny
ZWF0ZUNJUmVmZXJlbmNlc0hhc2goKSByZXR1cm5zIGEgaGFzaCB3aXRoIGF0dHJpYnV0ZXMgb2Yg
VHlwZSBDSUNMYXNzUkVmZXJlbmNlOwogICAgIyBmb3Igbm9uLWVtcHR5IGF0dHJpYnV0ZXMgdGhl
cmUgYXJlIHZhbHVlcyBmb3IKICAgICMgJFJlbEF0dHJ7S2V5fS0+e1JlZmVyZW5jZWRDSUNsYXNz
TGlua1R5cGV9CiAgICAjICRSZWxBdHRye0tleX0tPntSZWZlcmVuY2VkQ0lDbGFzc0xpbmtEaXJl
Y3Rpb259CiAgICAjIEV4YW1wbGU6CiMgICAgICAgICAgICAgICdQYXJ0T2ZQcm9qZWN0JyA9PiBb
CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewojICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1JlZmVyZW5jZWRDSUNsYXNzTGlua1R5cGUnID0+ICdQYXJ0T2YnLAojICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZW5jZWRDSUNsYXNzTGlua0RpcmVj
dGlvbicgPT4gJycsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQojICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCiAgICAjIHJlbGVsdmFudCBhdHRyaWJ1dGVzIGZvciB0aGUg
b2xkIHZlcnNpb24KICAgICVSZWxBdHRyTmV3VmVyc2lvbiA9ICRTZWxmLT5fQ3JlYXRlQ0lSZWZl
cmVuY2VzSGFzaCgKICAgICAgICBYTUxEYXRhICAgICAgID0+ICROZXdWZXJzaW9uRGF0YS0+e1hN
TERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhN
TERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICk7CiAgICAjIHJlbGVsdmFudCBhdHRy
aWJ1dGVzIGZvciB0aGUgbmV3IHZlcnNpb24KICAgICVSZWxBdHRyT2xkVmVyc2lvbiA9ICRTZWxm
LT5fQ3JlYXRlQ0lSZWZlcmVuY2VzSGFzaCgKICAgICAgICBYTUxEYXRhICAgICAgID0+ICRPbGRW
ZXJzaW9uRGF0YS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgIFhNTERl
ZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAg
bXkgJENJUmVmZXJlbmNlQXR0ckRhdGFSZWYgPSBcKCk7CgogICAgIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogICAgIyB1cGRhdGUgQ29uZmlnSXRlbS1saW5rcy4uLgogICAgaWYgKCAkTmV3VmVyc2lvbkRh
dGEgJiYgJFhNTERlZmluaXRpb24gJiYgJVJlbEF0dHJOZXdWZXJzaW9uICkgewoKICAgICAgICAj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAgICAgICAjICBkZWxldGUgbGlua3MgbW9zdCBsaWtlbHkgY3JlYXRl
ZCBmcm9tIHByZXZpb3VzIHZlcnNpb24gb2YgdGhpcyBhdHRyaWJ1dGUuLi4KICAgICAgICBpZiAo
ICRPbGRWZXJzaW9uRGF0YSAmJiAlUmVsQXR0ck9sZFZlcnNpb24gKSB7CiAgICAgICAgICAgIGZv
ciBteSAkQ3VycktleW5hbWUgKCBrZXlzKCVSZWxBdHRyT2xkVmVyc2lvbikgKSB7CgogICAgICAg
ICAgICAgICAgbmV4dCBpZiAoICEkUmVsQXR0ck9sZFZlcnNpb257JEN1cnJLZXluYW1lfS0+WzBd
LT57UmVmZXJlbmNlZENJQ2xhc3NMaW5rVHlwZX0gKTsKCiAgICAgICAgICAgICAgICBteSAkTGFz
dExpbmtUeXBlCiAgICAgICAgICAgICAgICAgICAgPSAkUmVsQXR0ck9sZFZlcnNpb257JEN1cnJL
ZXluYW1lfS0+WzBdLT57UmVmZXJlbmNlZENJQ2xhc3NMaW5rVHlwZX07CgogICAgICAgICAgICAg
ICAgIyBOT1RFOiByZXN1bHQgbG9va3MgbGlrZSB7PCRDdXJyS2V5bmFtZT4gPT4gWyA8Q0lJRDE+
LCA8Q0lJRDI+LCAuLi5dfQogICAgICAgICAgICAgICAgJENJUmVmZXJlbmNlQXR0ckRhdGFSZWYg
PSAkU2VsZi0+X0dldEF0dHJpYnV0ZURhdGFCeUtleSgKICAgICAgICAgICAgICAgICAgICBYTUxE
YXRhICAgICAgID0+ICRPbGRWZXJzaW9uRGF0YS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+
WzFdLAogICAgICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24t
PntEZWZpbml0aW9uUmVmfSwKICAgICAgICAgICAgICAgICAgICBLZXlOYW1lICAgICAgID0+ICRD
dXJyS2V5bmFtZSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+IDEsICAgICNuZWVkIHRo
ZSBDSS1JRCwgbm90IHRoZSBzaG93biB2YWx1ZQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAg
ICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENJUmVmZXJlbmNlQXR0ckRhdGFSZWYt
PnskQ3VycktleW5hbWV9CiAgICAgICAgICAgICAgICAgICAgJiYgcmVmKCAkQ0lSZWZlcmVuY2VB
dHRyRGF0YVJlZi0+eyRDdXJyS2V5bmFtZX0gKSBlcSAnQVJSQVknCiAgICAgICAgICAgICAgICAg
ICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ3VyclBy
ZXZQYXJ0bmVySUQgKCBAeyAkQ0lSZWZlcmVuY2VBdHRyRGF0YVJlZi0+eyRDdXJyS2V5bmFtZX0g
fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlua0Rl
bGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJ
dGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleTEgICAgPT4gJFBhcmFte0NvbmZp
Z0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdJVFNNQ29u
ZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXkyICAgID0+ICRDdXJyUHJl
dlBhcnRuZXJJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJExhc3RM
aW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0gICAgI0VPIGZvciBteSAkQ3VycktleW5hbWUgKCBrZXlzKCAlUmVs
QXR0ck9sZFZlcnNpb24gKSkKICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg
ICAgICMgIGNyZWF0ZSBuZXcgbGlua2VzIGZvciBhdHRyaWJ1dGVzIGlmIHRoZSBuZXcgdmVyc2lv
bgogICAgICAgIGZvciBteSAkQ3VycktleW5hbWUgKCBrZXlzKCVSZWxBdHRyTmV3VmVyc2lvbikg
KSB7CgogICAgICAgICAgICAkQ0lSZWZlcmVuY2VBdHRyRGF0YVJlZiA9ICRTZWxmLT5fR2V0QXR0
cmlidXRlRGF0YUJ5S2V5KAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkTmV3VmVy
c2lvbkRhdGEtPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICAgICAgICAg
IFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICAg
ICAgICAgICAgIEtleU5hbWUgICAgICAgPT4gJEN1cnJLZXluYW1lLAogICAgICAgICAgICAgICAg
Q29udGVudCA9PiAxLCAgICAjbmVlZCB0aGUgQ0ktSUQsIG5vdCB0aGUgc2hvd24gdmFsdWUKICAg
ICAgICAgICAgKTsKCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIGNy
ZWF0ZSBhbGwgbGlua3MgZnJvbSBhdmFpbGFibGUgZGF0YS4uLgogICAgICAgICAgICBmb3IgbXkg
JFNlYXJjaFJlc3VsdCAoIGtleXMoJXskQ0lSZWZlcmVuY2VBdHRyRGF0YVJlZn0pICkgewoKICAg
ICAgICAgICAgICAgIG15IEBSZWZlcmVuY2VDSUlEcyA9IEB7ICRDSVJlZmVyZW5jZUF0dHJEYXRh
UmVmLT57JFNlYXJjaFJlc3VsdH0gfTsKICAgICAgICAgICAgICAgIGZvciBteSAkQ3VyckNJUmVm
ZXJlbmNlSUQgKEBSZWZlcmVuY2VDSUlEcykgewoKICAgICAgICAgICAgICAgICAgICAjY3JlYXRl
IGxpbmsgYmV0d2VlbiB0aGlzIENJIGFuZCBjdXJyZW50IENJUmVmZXJlbmNlLWF0dHJpYnV0ZS4u
LgogICAgICAgICAgICAgICAgICAgIGlmICggJEN1cnJDSVJlZmVyZW5jZUlEICYmICRQYXJhbXtD
b25maWdJdGVtSUR9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJFJlbEF0dHJOZXdWZXJzaW9ueyRDdXJyS2V5bmFtZX0tPlswXQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT57UmVmZXJlbmNlZENJQ2xhc3NMaW5rRGlyZWN0
aW9ufQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJFJlbEF0dHJOZXdWZXJzaW9ueyRD
dXJyS2V5bmFtZX0tPlswXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT57UmVmZXJlbmNl
ZENJQ2xhc3NMaW5rRGlyZWN0aW9ufSBlcSAnUmV2ZXJzZScKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlua0FkZCgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJEN1cnJDSVJlZmVyZW5jZUlELAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZp
Z0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAk
UGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBl
ICAgICAgICAgPT4gJFJlbEF0dHJOZXdWZXJzaW9ueyRDdXJyS2V5bmFtZX0tPlswXQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPntSZWZlcmVuY2VkQ0lDbGFzc0xpbmtUeXBl
fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMaW5r
T2JqZWN0fS0+TGlua0FkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRP
YmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUYXJnZXRLZXkgICAgPT4gJEN1cnJDSVJlZmVyZW5jZUlELAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlE
fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFJlbEF0
dHJOZXdWZXJzaW9ueyRDdXJyS2V5bmFtZX0tPlswXQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtPntSZWZlcmVuY2VkQ0lDbGFzc0xpbmtUeXBlfSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfSAgICAjRU8gaWYo
ICRDdXJyQ0lSZWZlcmVuY2VJRCAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSkKCiAgICAgICAgICAg
ICAgICB9ICAgICNFTyBmb3IgbXkgJEN1cnJDSVJlZmVyZW5jZUlEKCBAUmVmZXJlbmNlQ0lJRHMg
KQoKICAgICAgICAgICAgfSAgICAjRU8gZm9yZWFjaCBteSAkU2VhcmNoUmVzdWx0ICgga2V5cygg
JXskQ0lSZWZlcmVuY2VBdHRyRGF0YVJlZn0pKQoKICAgICAgICB9ICAgICNFTyBmb3IgbXkgJEN1
cnJLZXluYW1lICgga2V5cyggJVJlbEF0dHJOZXdWZXJzaW9uICkpCgogICAgfSAgICAjRU8gaWYg
KCAkTmV3VmVyc2lvbkRhdGEgJiYgJFhNTERlZmluaXRpb24gJiYgJVJlbEF0dHJOZXdWZXJzaW9u
KQogICAgcmV0dXJuOwp9CgpzdWIgX0NyZWF0ZUNJUmVmZXJlbmNlc0hhc2ggewogICAgbXkgKCAk
U2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtcy4uLgogICAg
aWYgKAogICAgICAgICggISRQYXJhbXtYTUxEYXRhfSApCiAgICAgICAgfHwgKCAhJFBhcmFte1hN
TERlZmluaXRpb259ICkKICAgICAgICB8fCAoIHJlZiAkUGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gn
ICkKICAgICAgICB8fCAoIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJyApCiAg
ICAgICAgKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ0lSZWxBdHRyID0g
JFNlbGYtPntDSUFDVXRpbHNPYmplY3R9LT5HZXRBdHRyaWJ1dGVEYXRhQnlUeXBlKAogICAgICAg
IFhNTERhdGEgICAgICAgPT4gJFBhcmFte1hNTERhdGF9LAogICAgICAgIFhNTERlZmluaXRpb24g
PT4gJFBhcmFte1hNTERlZmluaXRpb259LAogICAgICAgIEF0dHJpYnV0ZVR5cGUgPT4gJ0NJQ2xh
c3NSZWZlcmVuY2UnLAogICAgKTsKCiAgICBteSAlU3VtUmVsQXR0ciA9ICgpOwogICAgZm9yIG15
ICRLZXkgKCBrZXlzICV7JENJUmVsQXR0cn0gKSB7CgogICAgICAgIG15ICVSZXRIYXNoID0gKCk7
CiAgICAgICAgSVRFTToKICAgICAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5p
dGlvbn0gfSApIHsKCiAgICAgICAgICAgIENPVU5URVI6CiAgICAgICAgICAgIGZvciBteSAkQ291
bnRlciAoIDEgLi4gJEl0ZW0tPntDb3VudE1heH0gKSB7CgogICAgICAgICAgICAgICAgIyBubyBj
b250ZW50IHRoZW4gc3RvcCBsb29wLi4uCiAgICAgICAgICAgICAgICBsYXN0IENPVU5URVIKICAg
ICAgICAgICAgICAgICAgICBpZiAhCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJFBh
cmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdCiAgICAgICAgICAgICAg
ICAgICAgICAgIC0+e0NvbnRlbnR9OwogICAgICAgICAgICAgICAgaWYgKCAkSXRlbS0+e0tleX0g
ZXEgJEtleSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFBhcmFtUmVmICgKICAgICAg
ICAgICAgICAgICAgICAgICAgcXcoUmVmZXJlbmNlZENJQ2xhc3NMaW5rVHlwZSBSZWZlcmVuY2Vk
Q0lDbGFzc0xpbmtEaXJlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRSZXRIYXNoeyRQYXJhbVJlZn0g
PSAkSXRlbS0+e0lucHV0fS0+eyRQYXJhbVJlZn07CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT1VOVEVSIGlmICEkSXRlbS0+e1N1
Yn07CgogICAgICAgICAgICAgICAgIyBzdWIgaXRlbXMgaW4gZGVmaW5pdGlvbnMKICAgICAgICAg
ICAgICAgIGlmICggJEl0ZW0tPntTdWJ9ICkgewogICAgICAgICAgICAgICAgICAgICVTdW1SZWxB
dHRyID0gKAogICAgICAgICAgICAgICAgICAgICAgICAlU3VtUmVsQXR0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgJFNlbGYtPl9DcmVhdGVDSVJlZmVyZW5jZXNIYXNoKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRl
bS0+e0tleX0gfS0+WyRDb3VudGVyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAg
ICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIHB1c2ggQHsgJFN1bVJlbEF0dHJ7JEtleX0gfSwgXCVSZXRIYXNoOwoKICAg
IH0KICAgIHJldHVybiAlU3VtUmVsQXR0cjsKfQoKPWl0ZW0gX0dldEF0dHJpYnV0ZURhdGFCeUtl
eSgpCgogICAgUmV0dXJucyBhIGhhc2hyZWYgd2l0aCBuYW1lcyBhbmQgYXR0cmlidXRlIHZhbHVl
cyBmcm9tIHRoZQogICAgWE1MLURhdGFIYXNoIGZvciBhIHNwZWNpZmllZCBkYXRhIHR5cGUuCgog
ICAgJENvbmZpZ0l0ZW1PYmplY3QtPkdldEF0dHJpYnV0ZURhdGFCeUtleSgKICAgICAgICBYTUxE
YXRhICAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmlu
aXRpb24sCiAgICAgICAgS2V5TmFtZSA9PiAkS2V5LAogICAgKTsKCj1jdXQKCnN1YiBfR2V0QXR0
cmlidXRlRGF0YUJ5S2V5IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkg
JVJlc3VsdDsKCiAgICBpZiAoICRQYXJhbXtDb250ZW50fSApIHsKICAgICAgICBteSAkQ3VyckNv
bnRlbnQgPSAkU2VsZi0+e0NJQUNVdGlsc09iamVjdH0tPkdldEF0dHJpYnV0ZUNvbnRlbnRzQnlL
ZXkoCiAgICAgICAgICAgIEtleU5hbWUgICAgICAgPT4gJFBhcmFte0tleU5hbWV9LAogICAgICAg
ICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfSwKICAgICAgICAgICAgWE1MRGVm
aW5pdGlvbiA9PiAkUGFyYW17WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAg
JFJlc3VsdHsgJFBhcmFte0tleU5hbWV9IH0gPSAkQ3VyckNvbnRlbnQ7CiAgICB9CiAgICBlbHNl
IHsKICAgICAgICBteSAkQ3VyclZhbCA9ICRTZWxmLT57Q0lBQ1V0aWxzT2JqZWN0fS0+R2V0QXR0
cmlidXRlVmFsdWVzQnlLZXkoCiAgICAgICAgICAgIEtleU5hbWUgICAgICAgPT4gJFBhcmFte0tl
eU5hbWV9LAogICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfSwKICAg
ICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkUGFyYW17WE1MRGVmaW5pdGlvbn0sCiAgICAgICAg
ICAgICk7CiAgICAgICAgJFJlc3VsdHsgJFBhcmFte0tleU5hbWV9IH0gPSAkQ3VyclZhbDsKICAg
IH0KICAgIHJldHVybiBcJVJlc3VsdDsKCn0KCjE7Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRXZlbnQvU2VydmljZVJlZmVyZW5j
ZV9SZWZyZXNoTGlua3MucG0KIwojIFNlYXJjaGVzIGZvciBhdHRyaWJ1dGVzIG9mIHR5cGUgU2Vy
dmljZVJlZmVyZW5jZSBpbiB0aGUgbmV3IENJcyB2ZXJzaW9uIGRhdGEKIyBhbmQgcmVmcmVzaGVz
IGFsbCBsaW5rcyB0byB0aGF0IGNsYXNzLCBpZiBjb25maWd1cmVkIGluIENJLWNsYXNzIGRlZmlu
aXRpb24uCiMgSXQgZGVsZXRlcyBsaW5rcyB0byBhbnkgb2JqZWN0cyBvZiB0aGUgcmVmZXJlbmNl
ZCBDSS1jbGFzcyBpZiB0aGUgdmFsdWUgZG9lcwojIG5vdCBleGlzIGluIHRoZSBDSXMgdmVyc2lv
biBkYXRhLgojCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0
cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2NoYW5nZWQgYnk6CiMgKiBUb3JzdGVuKGRv
dClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIFN0ZWZhbihkb3QpTWVobGlnKGF0KWNh
cGUoZGFzaClpdChkb3QpZGUKIyAqIEZyYW5rKGRvdClPYmVyZW5kZXIoYXQpY2FwZShkYXNoKWl0
KGRvdClkZQojICogQW5uYShkb3QpTGl0dmlub3ZhKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBNYXJp
byhkb3QpSWxsaW5nZXIoYXQpY2FwZS1pdChkb3QpZGUKIwojIC0tCiMgJElkOiBTZXJ2aWNlUmVm
ZXJlbmNlX1JlZnJlc2hMaW5rcy5wbSx2IDEuMTMgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhw
ICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZ
LiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5z
ZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUs
IHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2Ug
S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6U2VydmljZVJlZmVyZW5jZV9S
ZWZyZXNoTGlua3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVu
ZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNJQXR0cmlidXRDb2xsZWN0aW9u
VXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVs
OjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7CgpzdWIg
bmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgI2FsQ29DZW50YXRlIG5l
dyBoYXNoIGZvciBvYmplY3QuLi4KICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYs
ICRUeXBlICk7CgogICAgJFNlbGYtPntDSUFDVXRpbHNPYmplY3R9ICA9ICRLZXJuZWw6Ok9NLT5H
ZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ0lBdHRyaWJ1dENvbGxlY3Rpb25VdGlscycpOwogICAg
JFNlbGYtPntDb25maWdJdGVtT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgJFNlbGYtPntMaW5rT2JqZWN0fSAgICAgICA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CiAgICAkU2VsZi0+
e0xvZ09iamVjdH0gICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okxv
ZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFy
YW0gKSA9IEBfOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgZm9yZWFjaCAocXco
RXZlbnQgRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAk
U2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJv
cicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXZlbnQ6OlNlcnZpY2VSZWZlcmVuY2Vf
UmVmcmVzaExpbmtzOiBOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgIH0KICAgIH0KICAgICRQYXJhbXtDb25maWdJdGVtSUR9PSRQYXJhbXtEYXRhfS0+
e0NvbmZpZ0l0ZW1JRH07CiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAg
ICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdl
cnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXZlbnQ6OkNJQ2xhc3NSZWZlcmVu
Y2VfUmVmcmVzaExpbmtzOiBObyBDb25maWdJdGVtSUQgaW4gRGF0YSEiCiAgICAgICAgKTsKICAg
ICAgICByZXR1cm47CiAgICB9CgogICAgI2dldCBjb25maWcgaXRlbS4uLgogICAgbXkgJENvbmZp
Z0l0ZW1SZWYgPSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtR2V0KAogICAg
ICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CiAgICByZXR1
cm4gaWYgKCAhJENvbmZpZ0l0ZW1SZWYgfHwgcmVmKCRDb25maWdJdGVtUmVmKSBuZSAnSEFTSCcg
KTsKCiAgICAjY2hlY2sgaWYgdGhlcmUgaXMgYSB2ZXJzaW9uIGF0IGFsbC4uLgogICAgbXkgJFZl
cnNpb25MaXN0UmVmID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+VmVyc2lvbkxpc3QoCiAg
ICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKICAgIHJl
dHVybiBpZiAoICEkVmVyc2lvbkxpc3RSZWYtPlswXSApOwoKICAgICNnZXQgdGhlIG1vc3QgY3Vy
cmVudCB2ZXJzaW9uLi4uCiAgICBteSAkVmVyc2lvbkRhdGEgPSAkU2VsZi0+e0NvbmZpZ0l0ZW1P
YmplY3R9LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmln
SXRlbUlEfSwKICAgICk7CiAgICByZXR1cm4gaWYgKCAhJFZlcnNpb25EYXRhIHx8IHJlZigkVmVy
c2lvbkRhdGEpIG5lICdIQVNIJyApOwoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0
IGhhc2ggd2l0aCBhbGwgYXR0cmlidXRlLWtleXMsIHJlZmVyZW5jZWQgQ0ktY2xhc3NlcywKICAg
ICMgY29ycmVzcG9uZGluZyBsaW5rIHR5cGVzIGFuZCAtZGlyZWN0aW9ucyBmcm9tIENJLWNsYXNz
IGRlZmluaXRpb24uLi4KCiAgICBteSAlUmVsQXR0ciAgICAgICA9ICgpOwogICAgbXkgJFhNTERl
ZmluaXRpb24gPSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9LT5EZWZpbml0aW9uR2V0KAogICAg
ICAgIENsYXNzSUQgPT4gJFZlcnNpb25EYXRhLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgX0Ny
ZWF0ZVNlcnZpY2VSZWZlcmVuY2VzSGFzaCgpIHJldHVybnMgYSBoYXNoIHJlZiB3aXRoIGZvbGxv
d2luZyBzdHJ1Y3R1cmU6CiAgICAjICRSZWxBdHRye0tleX0tPntSZWZlcmVuY2VkU2VydmljZUxp
bmtUeXBlfQogICAgIyAkUmVsQXR0cntLZXl9LT57UmVmZXJlbmNlZFNlcnZpY2VMaW5rRGlyZWN0
aW9ufQogICAgJVJlbEF0dHIgPSAkU2VsZi0+X0NyZWF0ZVNlcnZpY2VSZWZlcmVuY2VzSGFzaCgK
ICAgICAgICBYTUxEYXRhICAgICAgID0+ICRWZXJzaW9uRGF0YS0+e1hNTERhdGF9LT5bMV0tPntW
ZXJzaW9ufS0+WzFdLAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntE
ZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJUNJUmVmZXJlbmNlQXR0ckRhdGEgPSAoKTsK
CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIHVwZGF0ZSBDb25maWdJdGVtLWxpbmtzLi4u
CiAgICBpZiAoICRWZXJzaW9uRGF0YSAmJiAkWE1MRGVmaW5pdGlvbiAmJiAlUmVsQXR0ciApIHsK
CiAgICAgICAgZm9yIG15ICRDdXJyS2V5bmFtZSAoIGtleXMoJVJlbEF0dHIpICkgewoKICAgICAg
ICAgICAgbmV4dCBpZiAhJFJlbEF0dHJ7JEN1cnJLZXluYW1lfS0+WzBdLT57UmVmZXJlbmNlZFNl
cnZpY2VMaW5rVHlwZX07CgogICAgICAgICAgICAjZ2V0IGN1cnJlbnQgbGlua3MgZnJvbSB0aGlz
IENJLi4KICAgICAgICAgICAgbXkgQExpbmtlZFNyY1JlZmVyZWNlSURzID0gQHsKICAgICAgICAg
ICAgICAgICRTZWxmLT5HZXRMaW5rZWRPYmplY3RzKAogICAgICAgICAgICAgICAgICAgIEZyb21P
YmplY3QgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIEZyb21PYmpl
Y3RJRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBUb09iamVj
dCAgICAgPT4gJ1NlcnZpY2UnLAogICAgICAgICAgICAgICAgICAgIFRvU3ViT2JqZWN0ICA9PiAn
JywKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgPT4gJFJlbEF0dHJ7JEN1cnJLZXlu
YW1lfS0+WzBdLT57UmVmZXJlbmNlZFNlcnZpY2VMaW5rVHlwZX0sCiAgICAgICAgICAgICAgICAg
ICAgRGlyZWN0aW9uICAgID0+ICdTb3VyY2UnLAogICAgICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICAgIH07CgogICAgICAgICAgICAjZ2V0IGN1cnJlbnQgIGxpbmtzIHRvIHRoaXMgQ0ku
LgogICAgICAgICAgICBteSBATGlua2VkVGFyZ2V0UmVmZXJlbmNlSURzID0gQHsKICAgICAgICAg
ICAgICAgICRTZWxmLT5HZXRMaW5rZWRPYmplY3RzKAogICAgICAgICAgICAgICAgICAgIEZyb21P
YmplY3QgICA9PiAnU2VydmljZScsCiAgICAgICAgICAgICAgICAgICAgRnJvbU9iamVjdElEID0+
ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIFRvT2JqZWN0ICAgICA9
PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIFRvU3ViT2JqZWN0ICA9PiAn
JywKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgPT4gJFJlbEF0dHJ7JEN1cnJLZXlu
YW1lfS0+WzBdLT57UmVmZXJlbmNlZFNlcnZpY2VMaW5rVHlwZX0sCiAgICAgICAgICAgICAgICAg
ICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICAgIH07CgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBk
ZWxldGUgZXhpc3RpbmcgbGlua3MuLi4KICAgICAgICAgICAgI2lmIHBvc3NpYmxlLCBkbyB3aGF0
IHdlJ3JlIGhlcmUgZm9yLi4uCiAgICAgICAgICAgIGlmICggJFZlcnNpb25EYXRhICYmICRYTUxE
ZWZpbml0aW9uICkgewoKICAgICAgICAgICAgICAgICVDSVJlZmVyZW5jZUF0dHJEYXRhID0gJXsK
ICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0dldEF0dHJpYnV0ZURhdGFCeUtleSgKICAgICAg
ICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntYTUxEYXRh
fS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5p
dGlvbiA9PiAkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICAgICAg
ICAgICAgICBLZXlOYW1lICAgICAgID0+ICRDdXJyS2V5bmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgQ29udGVudCA9PiAxLCAgICAjbmVlZCB0aGUgQ0ktSUQsIG5vdCB0aGUgc2hvd24gdmFs
dWUKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIH07CgogICAg
ICAgICAgICAgICAgI2RlbGV0ZSBhbGwgZXhpc3RpbmcgbGlua3MuLi4KICAgICAgICAgICAgICAg
IGlmICgga2V5cyglQ0lSZWZlcmVuY2VBdHRyRGF0YSkgKSB7CiAgICAgICAgICAgICAgICAgICAg
Zm9yIG15ICRDdXJyTGlua1BhcnRuZXJJRCAoQExpbmtlZFNyY1JlZmVyZWNlSURzKSB7CgogICAg
ICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xpbmtPYmplY3R9LT5MaW5rRGVsZXRlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdDIgPT4gJ1NlcnZpY2UnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgS2V5MiAgICA9PiAkQ3VyckxpbmtQYXJ0bmVySUQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRSZWxBdHRyeyRDdXJyS2V5bmFtZX0t
PlswXS0+e1JlZmVyZW5jZWRTZXJ2aWNlTGlua1R5cGV9LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjZGVsZXRlIGFs
bCBleGlzdGluZyBUYXJnZXQgIGxpbmtzLi4uCiAgICAgICAgICAgICAgICBmb3IgbXkgJEN1cnJM
aW5rUGFydG5lcklEIChATGlua2VkVGFyZ2V0UmVmZXJlbmNlSURzKSB7CgogICAgICAgICAgICAg
ICAgICAgICRTZWxmLT57TGlua09iamVjdH0tPkxpbmtEZWxldGUoCiAgICAgICAgICAgICAgICAg
ICAgICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAg
ICAgS2V5MSAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAg
ICAgT2JqZWN0MiA9PiAnU2VydmljZScsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleTIgICAg
PT4gJEN1cnJMaW5rUGFydG5lcklELAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+
ICRSZWxBdHRyeyRDdXJyS2V5bmFtZX0tPlswXS0+e1JlZmVyZW5jZWRTZXJ2aWNlTGlua1R5cGV9
LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICAgICAg
ICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgICAgICAgICAgICMgY3JlYXRlIGFsbCBsaW5rcyBmcm9tIGF2YWlsYWJsZSBk
YXRhLi4uCiAgICAgICAgICAgIGZvciBteSAkU2VhcmNoUmVzdWx0ICgga2V5cyglQ0lSZWZlcmVu
Y2VBdHRyRGF0YSkgKSB7CiAgICAgICAgICAgICAgICBteSBAUmVmZXJlbmNlQ0lJRHMgPSBAeyAk
Q0lSZWZlcmVuY2VBdHRyRGF0YXskU2VhcmNoUmVzdWx0fSB9OwogICAgICAgICAgICAgICAgZm9y
IG15ICRDdXJyQ0lSZWZlcmVuY2VJRCAoQFJlZmVyZW5jZUNJSURzKSB7CgogICAgICAgICAgICAg
ICAgICAgICNjcmVhdGUgbGluayBiZXR3ZWVuIHRoaXMgQ0kgYW5kIGN1cnJlbnQgQ0lSZWZlcmVu
Y2UtYXR0cmlidXRlLi4uCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ3VyckNJUmVmZXJlbmNl
SUQgJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSZWxBdHRyeyRDdXJyS2V5bmFtZX0tPlsw
XS0+e1JlZmVyZW5jZWRTZXJ2aWNlTGlua0RpcmVjdGlvbn0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmVsQXR0cnskQ3VycktleW5h
bWV9LT5bMF0tPntSZWZlcmVuY2VkU2VydmljZUxpbmtEaXJlY3Rpb259IGVxCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnUmV2ZXJzZScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK
ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNl
bGYtPntMaW5rT2JqZWN0fS0+TGlua0FkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTb3VyY2VPYmplY3QgPT4gJ1NlcnZpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNvdXJjZUtleSAgICA9PiAkQ3VyckNJUmVmZXJlbmNlSUQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRQYXJhbXtDb25maWdJdGVt
SUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkUmVsQXR0cnsk
Q3VycktleW5hbWV9LT5bMF0tPntSZWZlcmVuY2VkU2VydmljZUxpbmtUeXBlfSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlu
a0FkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ1Nl
cnZpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAk
Q3VyckNJUmVmZXJlbmNlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNl
T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU291cmNlS2V5ICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkUmVsQXR0cnskQ3VycktleW5hbWV9LT5bMF0tPntS
ZWZlcmVuY2VkU2VydmljZUxpbmtUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2Vy
SUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfSAgICAjRU8gaWYoICRDdXJyQ0lSZWZlcmVu
Y2VJRCAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSkKCiAgICAgICAgICAgICAgICB9ICAgICNFTyBm
b3IgbXkgJEN1cnJDSVJlZmVyZW5jZUlEKCBAUmVmZXJlbmNlQ0lJRHMgKQoKICAgICAgICAgICAg
fSAgICAjRU8gZm9yZWFjaCBteSAkU2VhcmNoUmVzdWx0ICgga2V5cyggJUNJUmVmZXJlbmNlQXR0
ckRhdGEpKQoKICAgICAgICB9ICAgICNFTyBmb3IgbXkgJEN1cnJLZXluYW1lICgga2V5cyggJVJl
bEF0dHIgKSkKCiAgICB9ICAgICNFTyBpZiAoICRWZXJzaW9uRGF0YSAmJiAkWE1MRGVmaW5pdGlv
biAmJiAlUmVsQXR0cikKICAgIHJldHVybjsKfQoKc3ViIF9DcmVhdGVTZXJ2aWNlUmVmZXJlbmNl
c0hhc2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHJlcXVp
cmVkIHBhcmFtcy4uLgogICAgaWYgKAogICAgICAgICggISRQYXJhbXtYTUxEYXRhfSApIHx8CiAg
ICAgICAgKCAhJFBhcmFte1hNTERlZmluaXRpb259ICkgfHwKICAgICAgICAoIHJlZiAkUGFyYW17
WE1MRGF0YX0gbmUgJ0hBU0gnICkgfHwKICAgICAgICAoIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlv
bn0gbmUgJ0FSUkFZJyApCiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAg
ICBteSAkQ0lSZWxBdHRyID0gJFNlbGYtPntDSUFDVXRpbHNPYmplY3R9LT5HZXRBdHRyaWJ1dGVE
YXRhQnlUeXBlKAogICAgICAgIFhNTERhdGEgICAgICAgPT4gJFBhcmFte1hNTERhdGF9LAogICAg
ICAgIFhNTERlZmluaXRpb24gPT4gJFBhcmFte1hNTERlZmluaXRpb259LAogICAgICAgIEF0dHJp
YnV0ZVR5cGUgPT4gJ1NlcnZpY2VSZWZlcmVuY2UnLAogICAgKTsKCiAgICBteSAlU3VtUmVsQXR0
ciA9ICgpOwogICAgbXkgJFBhcmFtUmVmOwogICAgZm9yIG15ICRLZXkgKCBrZXlzICV7JENJUmVs
QXR0cn0gKSB7CgogICAgICAgIG15ICVSZXRIYXNoID0gKCk7CiAgICAgICAgSVRFTToKICAgICAg
ICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKCiAgICAgICAg
ICAgIENPVU5URVI6CiAgICAgICAgICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gJEl0ZW0tPntD
b3VudE1heH0gKSB7CgogICAgICAgICAgICAgICAgIyBubyBjb250ZW50IHRoZW4gc3RvcCBsb29w
Li4uCiAgICAgICAgICAgICAgICBsYXN0IENPVU5URVIgaWYgIWRlZmluZWQgJFBhcmFte1hNTERh
dGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLT57Q29udGVudH07CgogICAgICAgICAg
ICAgICAgaWYgKCAkSXRlbS0+e0tleX0gZXEgJEtleSApIHsKCiAgICAgICAgICAgICAgICAgICAg
Zm9yZWFjaCBteSAkUGFyYW1SZWYgKAogICAgICAgICAgICAgICAgICAgICAgICBxdyhSZWZlcmVu
Y2VkU2VydmljZU5hbWUgUmVmZXJlbmNlZFNlcnZpY2VMaW5rVHlwZSBSZWZlcmVuY2VkU2Vydmlj
ZUxpbmtEaXJlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRSZXRIYXNoeyRQYXJhbVJlZn0gPSAkSXRl
bS0+e0lucHV0fS0+eyRQYXJhbVJlZn07CgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09VTlRFUiBpZiAhJEl0ZW0tPntTdWJ9OwoK
ICAgICAgICAgICAgICAgICMgSGFuZGxpbmcgb2YgU3ViLUllbXMgaW4gRGVmaW5pdGlvbnMKICAg
ICAgICAgICAgICAgIGlmICggJEl0ZW0tPntTdWJ9ICkgewogICAgICAgICAgICAgICAgICAgICVT
dW1SZWxBdHRyID0gKAogICAgICAgICAgICAgICAgICAgICAgICAlU3VtUmVsQXR0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgJFNlbGYtPl9DcmVhdGVTZXJ2aWNlUmVmZXJlbmNlc0hhc2goCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJFBhcmFte1hNTERh
dGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLAogICAgICAgICAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQogICAgICAgIH0KICAgICAgICBwdXNoIEB7ICRTdW1SZWxBdHRyeyRLZXl9IH0sIFwlUmV0SGFz
aDsKCiAgICB9CiAgICByZXR1cm4gJVN1bVJlbEF0dHI7Cn0KCj1pdGVtIF9HZXRBdHRyaWJ1dGVE
YXRhQnlLZXkoKQoKICAgIFJldHVybnMgYSBoYXNocmVmIHdpdGggbmFtZXMgYW5kIGF0dHJpYnV0
ZSB2YWx1ZXMgZnJvbSB0aGUKICAgIFhNTC1EYXRhSGFzaCBmb3IgYSBzcGVjaWZpZWQgZGF0YSB0
eXBlLgoKICAgICRDb25maWdJdGVtT2JqZWN0LT5HZXRBdHRyaWJ1dGVEYXRhQnlLZXkoCiAgICAg
ICAgWE1MRGF0YSAgICAgICA9PiAkWE1MRGF0YSwKICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRY
TUxEZWZpbml0aW9uLAogICAgICAgIEtleU5hbWUgPT4gJEtleSwKICAgICk7Cgo9Y3V0CgpzdWIg
X0dldEF0dHJpYnV0ZURhdGFCeUtleSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoK
ICAgIG15ICVSZXN1bHQ7CgogICAgaWYgKCAkUGFyYW17Q29udGVudH0gKSB7CiAgICAgICAgbXkg
JEN1cnJDb250ZW50ID0gJFNlbGYtPntDSUFDVXRpbHNPYmplY3R9LT5HZXRBdHRyaWJ1dGVDb250
ZW50c0J5S2V5KAogICAgICAgICAgICBLZXlOYW1lICAgICAgID0+ICRQYXJhbXtLZXlOYW1lfSwK
ICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkUGFyYW17WE1MRGF0YX0sCiAgICAgICAgICAg
IFhNTERlZmluaXRpb24gPT4gJFBhcmFte1hNTERlZmluaXRpb259LAogICAgICAgICk7CiAgICAg
ICAgJFJlc3VsdHsgJFBhcmFte0tleU5hbWV9IH0gPSAkQ3VyckNvbnRlbnQ7CiAgICB9CiAgICBl
bHNlIHsKICAgICAgICBteSAkQ3VyclZhbCA9ICRTZWxmLT57Q0lBQ1V0aWxzT2JqZWN0fS0+R2V0
QXR0cmlidXRlVmFsdWVzQnlLZXkoCiAgICAgICAgICAgIEtleU5hbWUgICAgICAgPT4gJFBhcmFt
e0tleU5hbWV9LAogICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfSwK
ICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkUGFyYW17WE1MRGVmaW5pdGlvbn0sCiAgICAg
ICAgKTsKICAgICAgICAkUmVzdWx0eyAkUGFyYW17S2V5TmFtZX0gfSA9ICRDdXJyVmFsOwogICAg
fQogICAgcmV0dXJuIFwlUmVzdWx0OwoKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwoKPWl0
ZW0gR2V0TGlua2VkT2JqZWN0cygpCgogICByZXR1cm5zIGFuIGFycmF5IHJlZiB3aXRoIElEcyBv
ZiBsaW5rZWQgb2JqZWN0cwoKICAgTk9URTogcmVtb3ZlIHRoaXMgbWV0aG9kIGFzIHNvb24gYXMg
KEtJWCkKICAgS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OkdldExpbmtlZE9iamVjdHMgaGFz
IGJlZW4gbW9kaWZpZWQgYW5kIGlzCiAgIGF2YWlsYWJsZSAhISEKCiAgIG15IEBMaW5rZWRMb2Nh
dGlvbklEcyA9IEB7JFNlbGYtPkdldExpbmtlZE9iamVjdHMoCiAgICAgICBGcm9tT2JqZWN0ICAg
PT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgIEZyb21PYmplY3RJRCA9PiAxMjMsCiAgICAgICBU
b09iamVjdCAgICAgPT4gJ0lUU01Db25maWdJdGVtJyB8ICdUaWNrZXQnLAogICAgICAgVG9TdWJP
YmplY3QgID0+ICdMb2NhdGlvbi1Tb21lIENJIENsYXNzJyB8ICdPclNvbWVUaWNrZXRUeXBlJywK
ICAgICAgIExpbmtUeXBlICAgICA9PiAnUGFyZW50Q2hpbGQnLCAgICAgICAgI0xpbmtUeXBlIC0g
b3B0aW9uYWwKICAgICAgIERpcmVjdGlvbiAgICA9PiAoU291cmNlfFRhcmdldHxCb3RoKSwgI0xp
bmtEaXJlY3Rpb24gLSBvcHRpb25hbAogICApfTsKCj1jdXQKCnN1YiBHZXRMaW5rZWRPYmplY3Rz
IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSBASURBcnIgPSBxd3t9OwoK
ICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1zLi4uCiAgICBpZiAoICggISRQYXJhbXtUb09iamVj
dH0gKSB8fCAoICEkUGFyYW17RnJvbU9iamVjdH0gKSB8fCAoICEkUGFyYW17RnJvbU9iamVjdElE
fSApICkKICAgIHsKICAgICAgICByZXR1cm4gXEBJREFycjsKICAgIH0KCiAgICAjYXMgbG9uZyBh
cyBpdCdzIG5vdCBpbXBsZW1lbnRlZC4uLgogICAgaWYgKAogICAgICAgICggJFBhcmFte1RvT2Jq
ZWN0fSBuZSAnSVRTTUNvbmZpZ0l0ZW0nICkKICAgICAgICAmJiAoICRQYXJhbXtUb09iamVjdH0g
bmUgJ1RpY2tldCcgKQogICAgICAgICYmICggJFBhcmFte1RvT2JqZWN0fSBuZSAnU2VydmljZScg
KQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAg
ICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJMaW5r
T2JqZWN0OjpHZXRMaW5rZWRPYmplY3RzOiAiCiAgICAgICAgICAgICAgICAuICJ1bmtub3duIFRv
T2JqZWN0ICRQYXJhbXtUb09iamVjdH0gLSB3b24ndCBkbyBhbnl0aGluZy4iLAogICAgICAgICk7
CiAgICAgICAgcmV0dXJuIFxASURBcnI7CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1RvU3ViT2Jq
ZWN0fSApIHsKICAgICAgICAkUGFyYW17VG9TdWJPYmplY3R9ID0gIiI7CiAgICB9CgogICAgI2dl
dCBhbGwgbGlua2VkIFRvT2JqZWN0cy4uLgogICAgbXkgJFBhcnRuZXJMaW5rTGlzdCA9ICRTZWxm
LT57TGlua09iamVjdH0tPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ICAgID0+ICRQ
YXJhbXtGcm9tT2JqZWN0fSwKICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFte0Zyb21PYmplY3RJ
RH0sCiAgICAgICAgT2JqZWN0MiAgID0+ICRQYXJhbXtUb09iamVjdH0sCiAgICAgICAgU3RhdGUg
ICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICRQYXJhbXtMaW5rVHlwZX0gfHwg
JycsCiAgICAgICAgRGlyZWN0aW9uID0+ICRQYXJhbXtEaXJlY3Rpb259IHx8ICdCb3RoJywKICAg
ICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg
IyBUb1BhcnRuZXIgIklUU01Db25maWdJdGVtIgogICAgaWYgKCAkUGFyYW17VG9PYmplY3R9IGVx
ICdJVFNNQ29uZmlnSXRlbScgKSB7CgogICAgICAgICNmb3IgZWFjaCBleGlzdGluZyBsaW5rIHR5
cGUKICAgICAgICBmb3IgbXkgJExpbmtUeXBlICgga2V5cyggJXsgJFBhcnRuZXJMaW5rTGlzdC0+
eydJVFNNQ29uZmlnSXRlbSd9IH0gKSApIHsKCiAgICAgICAgICAgICNpZiBsaW5rZWQgb2JqZWN0
IGlzIGEgc291cmNlCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggZGVmaW5lZCgg
JFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57U291
cmNlfSApICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIHJlZiggJFBhcnRu
ZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57U291cmNlfSAp
IGVxICdIQVNIJyApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgIGZvciBteSAkQ3VyckNJSUQgKAogICAgICAgICAgICAgICAgICAgIGtleXMoICV7ICRQYXJ0
bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1NvdXJjZX0g
fSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgIG15ICRDdXJyQ0kgPQogICAgICAgICAgICAgICAgICAgICAgICAkUGFydG5lckxpbmtM
aXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9LT57JEN1cnJD
SUlEfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17VG9TdWJPYmplY3R9ICYmICgg
JEN1cnJDSS0+e0NsYXNzfSBlcSAkUGFyYW17VG9TdWJPYmplY3R9ICkgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goIEBJREFyciwgJEN1cnJDSUlEICk7CiAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggISRQYXJhbXtUb1N1Yk9iamVjdH0gKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goIEBJREFyciwgJEN1cnJDSUlEICk7CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAg
ICAgICAjaWYgbGlua2VkIG9iamVjdCBpcyB0YXJnZXQKICAgICAgICAgICAgaWYgKAogICAgICAg
ICAgICAgICAgKCBkZWZpbmVkKCAkUGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0g
fS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9ICkgKQogICAgICAgICAgICAgICAgJiYKICAgICAgICAg
ICAgICAgICggcmVmKCAkUGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRM
aW5rVHlwZX0tPntUYXJnZXR9ICkgZXEgJ0hBU0gnICkKICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgZm9yIG15ICRDdXJyQ0lJRCAoCiAgICAgICAgICAgICAg
ICAgICAga2V5cyggJXsgJFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnsk
TGlua1R5cGV9LT57VGFyZ2V0fSB9ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJEN1cnJDSSA9ICRQYXJ0bmVyTGlua0xpc3Qt
PnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1RhcmdldH0KICAgICAgICAgICAg
ICAgICAgICAgICAgLT57JEN1cnJDSUlEfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFy
YW17VG9TdWJPYmplY3R9ICYmICggJEN1cnJDSS0+e0NsYXNzfSBlcSAkUGFyYW17VG9TdWJPYmpl
Y3R9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goIEBJREFyciwgJEN1cnJDSUlE
ICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggISRQ
YXJhbXtUb1N1Yk9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goIEBJREFy
ciwgJEN1cnJDSUlEICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CgogICAgICAgIH0gICAgI0VPIGZvciBlYWNoIGV4aXN0aW5nIGxpbmsgdHlw
ZQoKICAgIH0KCiAgICAjIEVPIFRvUGFydG5lciAiSVRTTUNvbmZpZ0l0ZW0iCiAgICAjLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBUb1BhcnRuZXIgIlRp
Y2tldCIKICAgIGlmICggJFBhcmFte1RvT2JqZWN0fSBlcSAnVGlja2V0JyApIHsKCiAgICAgICAg
I2ZvciBlYWNoIGV4aXN0aW5nIGxpbmsgdHlwZQogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBr
ZXlzKCAleyAkUGFydG5lckxpbmtMaXN0LT57J1RpY2tldCd9IH0gKSApIHsKCiAgICAgICAgICAg
ICNpZiBsaW5rZWQgb2JqZWN0IGlzIGEgc291cmNlCiAgICAgICAgICAgIGlmICgKICAgICAgICAg
ICAgICAgICggZGVmaW5lZCggJFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0t
PnskTGlua1R5cGV9LT57U291cmNlfSApICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAg
ICAgICAoIHJlZiggJFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlu
a1R5cGV9LT57U291cmNlfSApIGVxICdIQVNIJyApCiAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgIGZvciBteSAkVGlja2V0SUQgKAogICAgICAgICAgICAgICAg
ICAgIGtleXMoICV7ICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExp
bmtUeXBlfS0+e1NvdXJjZX0gfSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgIG15ICRDdXJyVGlja2V0ID0gJFBhcnRuZXJMaW5rTGlz
dC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57U291cmNlfQogICAgICAgICAg
ICAgICAgICAgICAgICAtPnskVGlja2V0SUR9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRQ
YXJhbXtUb1N1Yk9iamVjdH0gJiYgKCAkQ3VyclRpY2tldC0+e1R5cGV9IGVxICRQYXJhbXtUb1N1
Yk9iamVjdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCggQElEQXJyLCAkVGlj
a2V0SUQgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYg
KCAhJFBhcmFte1RvU3ViT2JqZWN0fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCgg
QElEQXJyLCAkVGlja2V0SUQgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNpZiBsaW5rZWQgb2JqZWN0IGlzIHRhcmdl
dAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoIGRlZmluZWQoICRQYXJ0bmVyTGlu
a0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1RhcmdldH0gKSApCiAg
ICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgKCByZWYoICRQYXJ0bmVyTGlua0xpc3Qt
PnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1RhcmdldH0gKSBlcSAnSEFTSCcg
KQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgbXkg
JFRpY2tldElEICgKICAgICAgICAgICAgICAgICAgICBrZXlzKCAleyAkUGFydG5lckxpbmtMaXN0
LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9IH0gKQogICAgICAg
ICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAk
Q3VyclRpY2tldCA9ICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExp
bmtUeXBlfS0+e1RhcmdldH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57JFRpY2tldElEfTsK
CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17VG9TdWJPYmplY3R9ICYmICggJEN1cnJU
aWNrZXQtPntUeXBlfSBlcSAkUGFyYW17VG9TdWJPYmplY3R9ICkgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goIEBJREFyciwgJFRpY2tldElEICk7CiAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggISRQYXJhbXtUb1N1Yk9iamVjdH0gKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goIEBJREFyciwgJFRpY2tldElEICk7CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0g
ICAgI0VPIGZvciBlYWNoIGV4aXN0aW5nIGxpbmsgdHlwZQoKICAgIH0KCiAgICAjIEVPIFRvUGFy
dG5lciAiVGlja2V0IgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgICMgVG9QYXJ0bmVyICJTZXJ2aWNlIgogICAgaWYgKCAkUGFyYW17VG9PYmplY3R9
IGVxICdTZXJ2aWNlJyApIHsKCiAgICAgICAgI2ZvciBlYWNoIGV4aXN0aW5nIGxpbmsgdHlwZQog
ICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBrZXlzKCAleyAkUGFydG5lckxpbmtMaXN0LT57J1Nl
cnZpY2UnfSB9ICkgKSB7CgogICAgICAgICAgICAjaWYgbGlua2VkIG9iamVjdCBpcyBhIHNvdXJj
ZQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoIGRlZmluZWQoICRQYXJ0bmVyTGlu
a0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1NvdXJjZX0gKSApCiAg
ICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgKCByZWYoICRQYXJ0bmVyTGlua0xpc3Qt
PnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1NvdXJjZX0gKSBlcSAnSEFTSCcg
KQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgbXkg
JFNlcnZpY2VJRCAoCiAgICAgICAgICAgICAgICAgICAga2V5cyggJXsgJFBhcnRuZXJMaW5rTGlz
dC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57U291cmNlfSB9ICkKICAgICAg
ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkg
JEN1cnJTZXJ2aWNlID0gJFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnsk
TGlua1R5cGV9LT57U291cmNlfQogICAgICAgICAgICAgICAgICAgICAgICAtPnskU2VydmljZUlE
fTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17VG9TdWJPYmplY3R9ICYmICggJEN1
cnJTZXJ2aWNlLT57VHlwZX0gZXEgJFBhcmFte1RvU3ViT2JqZWN0fSApICkgewogICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKCBASURBcnIsICRTZXJ2aWNlSUQgKTsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJFBhcmFte1RvU3ViT2JqZWN0fSAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCggQElEQXJyLCAkU2VydmljZUlEICk7CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAg
ICAgICAgICAjaWYgbGlua2VkIG9iamVjdCBpcyB0YXJnZXQKICAgICAgICAgICAgaWYgKAogICAg
ICAgICAgICAgICAgKCBkZWZpbmVkKCAkUGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVj
dH0gfS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9ICkgKQogICAgICAgICAgICAgICAgJiYKICAgICAg
ICAgICAgICAgICggcmVmKCAkUGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+
eyRMaW5rVHlwZX0tPntUYXJnZXR9ICkgZXEgJ0hBU0gnICkKICAgICAgICAgICAgICAgICkKICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIG15ICRTZXJ2aWNlSUQgKAogICAgICAgICAg
ICAgICAgICAgIGtleXMoICV7ICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9
LT57JExpbmtUeXBlfS0+e1RhcmdldH0gfSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRDdXJyU2VydmljZSA9ICRQYXJ0bmVy
TGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1RhcmdldH0KICAg
ICAgICAgICAgICAgICAgICAgICAgLT57JFNlcnZpY2VJRH07CgogICAgICAgICAgICAgICAgICAg
IGlmICggJFBhcmFte1RvU3ViT2JqZWN0fSAmJiAoICRDdXJyU2VydmljZS0+e1R5cGV9IGVxICRQ
YXJhbXtUb1N1Yk9iamVjdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCggQElE
QXJyLCAkU2VydmljZUlEICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgIGVsc2lmICggISRQYXJhbXtUb1N1Yk9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goIEBJREFyciwgJFNlcnZpY2VJRCApOwogICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9ICAgICNFTyBmb3IgZWFjaCBl
eGlzdGluZyBsaW5rIHR5cGUKCiAgICB9CgogICAgIyBFTyBUb1BhcnRuZXIgIlNlcnZpY2UiCiAg
ICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgcmV0dXJuIFxASURBcnI7Cn0KCiMKIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KCjE7Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRXZlbnQvVGlja2V0UmVmZXJlbmNl
X1JlZnJlc2hMaW5rcy5wbQojCiMgU2VhcmNoZXMgZm9yIGF0dHJpYnV0ZXMgb2YgdHlwZSBUaWNr
ZXRSZWZlcmVuY2UgaW4gdGhlIG5ldyBDSXMgdmVyc2lvbiBkYXRhCiMgYW5kIHJlZnJlc2hlcyBh
bGwgbGlua3MgdG8gdGhhdCBjbGFzcywgaWYgY29uZmlndXJlZCBpbiBDSS1jbGFzcyBkZWZpbml0
aW9uLgojIEl0IGRlbGV0ZXMgbGlua3MgdG8gYW55IG9iamVjdHMgb2YgdGhlIHJlZmVyZW5jZWQg
Q0ktY2xhc3MgaWYgdGhlIHZhbHVlIGRvZXMKIyBub3QgZXhpcyBpbiB0aGUgQ0lzIHZlcnNpb24g
ZGF0YS4KIwojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6
Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9jaGFuZ2VkIGJ5OgojICogVG9yc3Rlbihkb3Qp
VGhhdShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBTdGVmYW4oZG90KU1laGxpZyhhdCljYXBl
KGRhc2gpaXQoZG90KWRlCiMgKiBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUoZGFzaClpdChk
b3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8o
ZG90KUlsbGluZ2VyKGF0KWNhcGUtaXQoZG90KWRlCiMKIyAtLQojICRJZDogVGlja2V0UmVmZXJl
bmNlX1JlZnJlc2hMaW5rcy5wbSx2IDEuNSAyMDE2LzA1LzE4IDA3OjQwOjQ3IHR0byBFeHAgJAoj
IC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZv
ciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGlu
Zm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2Vl
IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJu
ZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpUaWNrZXRSZWZlcmVuY2VfUmVmcmVz
aExpbmtzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNp
ZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01DSUF0dHJpYnV0Q29sbGVjdGlvblV0aWxz
JywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lz
dGVtOjpMaW5rT2JqZWN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJwopOwoKc3ViIG5ldyB7
CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICNhbENvQ2VudGF0ZSBuZXcgaGFz
aCBmb3Igb2JqZWN0Li4uCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlw
ZSApOwoKICAgICRTZWxmLT57Q0lBQ1V0aWxzT2JqZWN0fSAgPSAkS2VybmVsOjpPTS0+R2V0KCdL
ZXJuZWw6OlN5c3RlbTo6SVRTTUNJQXR0cmlidXRDb2xsZWN0aW9uVXRpbHMnKTsKICAgICRTZWxm
LT57Q29uZmlnSXRlbU9iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6
SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICRTZWxmLT57TGlua09iamVjdH0gICAgICAgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgJFNlbGYtPntMb2dP
YmplY3R9ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsK
CiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkg
PSBAXzsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGZvcmVhY2ggKHF3KEV2ZW50
IERhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGYt
PntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAog
ICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkV2ZW50OjpUaWNrZXRSZWZlcmVuY2VfUmVmcmVz
aExpbmtzOiBOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgIH0KICAgIH0KICAgICRQYXJhbXtDb25maWdJdGVtSUR9PSRQYXJhbXtEYXRhfS0+e0NvbmZp
Z0l0ZW1JRH07CiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkU2Vs
Zi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcics
CiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXZlbnQ6OlRpY2tldFJlZmVyZW5jZV9SZWZy
ZXNoTGlua3M6IE5vIENvbmZpZ0l0ZW1JRCBpbiBEYXRhISIKICAgICAgICApOwogICAgICAgIHJl
dHVybjsKICAgIH0KCiAgICAjZ2V0IGNvbmZpZyBpdGVtLi4uCiAgICBteSAkQ29uZmlnSXRlbVJl
ZiA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29u
ZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKICAgIHJldHVybiBpZiAo
ICEkQ29uZmlnSXRlbVJlZiB8fCByZWYoJENvbmZpZ0l0ZW1SZWYpIG5lICdIQVNIJyApOwoKICAg
ICNjaGVjayBpZiB0aGVyZSBpcyBhIHZlcnNpb24gYXQgYWxsLi4uCiAgICBteSAkVmVyc2lvbkxp
c3RSZWYgPSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9LT5WZXJzaW9uTGlzdCgKICAgICAgICBD
b25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwogICAgcmV0dXJuIGlm
ICggISRWZXJzaW9uTGlzdFJlZi0+WzBdICk7CgogICAgI2dldCB0aGUgbW9zdCBjdXJyZW50IHZl
cnNpb24uLi4KICAgIG15ICRWZXJzaW9uRGF0YSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0t
PlZlcnNpb25HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9
LAogICAgKTsKICAgIHJldHVybiBpZiAoICEkVmVyc2lvbkRhdGEgfHwgcmVmKCRWZXJzaW9uRGF0
YSkgbmUgJ0hBU0gnICk7CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBnZXQgaGFzaCB3
aXRoIGFsbCBhdHRyaWJ1dGUta2V5cywgcmVmZXJlbmNlZCBDSS1jbGFzc2VzLAogICAgIyBjb3Jy
ZXNwb25kaW5nIGxpbmsgdHlwZXMgYW5kIC1kaXJlY3Rpb25zIGZyb20gQ0ktY2xhc3MgZGVmaW5p
dGlvbi4uLgogICAgbXkgJVJlbEF0dHIgICAgICAgPSAoKTsKICAgIG15ICRYTUxEZWZpbml0aW9u
ID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFz
c0lEID0+ICRWZXJzaW9uRGF0YS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIF9DcmVhdGVUaWNr
ZXRSZWZlcmVuY2VzSGFzaCgpIHJldHVybnMgYSBoYXNoIHJlZiB3aXRoIGZvbGxvd2luZyBzdHJ1
Y3R1cmU6CiAgICAjICRSZWxBdHRye0tleX0tPntSZWZlcmVuY2VkVGlja2V0TGlua1R5cGV9CiAg
ICAjICRSZWxBdHRye0tleX0tPntSZWZlcmVuY2VkVGlja2V0TGlua0RpcmVjdGlvbn0KICAgICVS
ZWxBdHRyID0gJFNlbGYtPl9DcmVhdGVUaWNrZXRSZWZlcmVuY2VzSGFzaCgKICAgICAgICBYTUxE
YXRhICAgICAgID0+ICRWZXJzaW9uRGF0YS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFd
LAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVm
fSwKICAgICk7CgogICAgbXkgJUNJUmVmZXJlbmNlQXR0ckRhdGEgPSAoKTsKCiAgICAjLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAgICAjIHVwZGF0ZSBDb25maWdJdGVtLWxpbmtzLi4uCiAgICBpZiAoICRW
ZXJzaW9uRGF0YSAmJiAkWE1MRGVmaW5pdGlvbiAmJiAlUmVsQXR0ciApIHsKCiAgICAgICAgZm9y
IG15ICRDdXJyS2V5bmFtZSAoIGtleXMoJVJlbEF0dHIpICkgewoKICAgICAgICAgICAgbmV4dCBp
ZiAhJFJlbEF0dHJ7JEN1cnJLZXluYW1lfS0+WzBdLT57UmVmZXJlbmNlZFRpY2tldExpbmtUeXBl
fTsKCiAgICAgICAgICAgICNnZXQgY3VycmVudCBsaW5rcyBmcm9tIHRoaXMgQ0kuLgogICAgICAg
ICAgICBteSBATGlua2VkU3JjUmVmZXJlY2VJRHMgPSBAewogICAgICAgICAgICAgICAgJFNlbGYt
PkdldExpbmtlZE9iamVjdHMoCiAgICAgICAgICAgICAgICAgICAgRnJvbU9iamVjdCAgID0+ICdJ
VFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgRnJvbU9iamVjdElEID0+ICRQYXJh
bXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIFRvT2JqZWN0ICAgICA9PiAnVGlj
a2V0JywKICAgICAgICAgICAgICAgICAgICBUb1N1Yk9iamVjdCAgPT4gJycsCiAgICAgICAgICAg
ICAgICAgICAgTGlua1R5cGUgICAgID0+ICRSZWxBdHRyeyRDdXJyS2V5bmFtZX0tPlswXS0+e1Jl
ZmVyZW5jZWRUaWNrZXRMaW5rVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uICAg
ID0+ICdTb3VyY2UnLAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH07Cgog
ICAgICAgICAgICAjZ2V0IGN1cnJlbnQgIGxpbmtzIHRvIHRoaXMgQ0kuLgogICAgICAgICAgICBt
eSBATGlua2VkVGFyZ2V0UmVmZXJlbmNlSURzID0gQHsKICAgICAgICAgICAgICAgICRTZWxmLT5H
ZXRMaW5rZWRPYmplY3RzKAogICAgICAgICAgICAgICAgICAgIEZyb21PYmplY3QgICA9PiAnVGlj
a2V0JywKICAgICAgICAgICAgICAgICAgICBGcm9tT2JqZWN0SUQgPT4gJFBhcmFte0NvbmZpZ0l0
ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgVG9PYmplY3QgICAgID0+ICdJVFNNQ29uZmlnSXRl
bScsCiAgICAgICAgICAgICAgICAgICAgVG9TdWJPYmplY3QgID0+ICcnLAogICAgICAgICAgICAg
ICAgICAgIExpbmtUeXBlICAgICA9PiAkUmVsQXR0cnskQ3VycktleW5hbWV9LT5bMF0tPntSZWZl
cmVuY2VkVGlja2V0TGlua1R5cGV9LAogICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9
PiAnVGFyZ2V0JywKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9OwoKICAg
ICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgZGVsZXRlIGV4aXN0aW5nIGxp
bmtzLi4uCiAgICAgICAgICAgICNpZiBwb3NzaWJsZSwgZG8gd2hhdCB3ZSdyZSBoZXJlIGZvci4u
LgogICAgICAgICAgICBpZiAoICRWZXJzaW9uRGF0YSAmJiAkWE1MRGVmaW5pdGlvbiApIHsKCiAg
ICAgICAgICAgICAgICAlQ0lSZWZlcmVuY2VBdHRyRGF0YSA9ICV7CiAgICAgICAgICAgICAgICAg
ICAgJFNlbGYtPl9HZXRBdHRyaWJ1dGVEYXRhQnlLZXkoCiAgICAgICAgICAgICAgICAgICAgICAg
IFhNTERhdGEgICAgICAgPT4gJFZlcnNpb25EYXRhLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259
LT5bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmlu
aXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5TmFtZSAg
ICAgICA9PiAkQ3VycktleW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4g
MSwgICAgI25lZWQgdGhlIENJLUlELCBub3QgdGhlIHNob3duIHZhbHVlCiAgICAgICAgICAgICAg
ICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICNkZWxl
dGUgYWxsIGV4aXN0aW5nIGxpbmtzLi4uCiAgICAgICAgICAgICAgICBpZiAoIGtleXMoJUNJUmVm
ZXJlbmNlQXR0ckRhdGEpICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ3VyckxpbmtQ
YXJ0bmVySUQgKEBMaW5rZWRTcmNSZWZlcmVjZUlEcykgewoKICAgICAgICAgICAgICAgICAgICAg
ICAgJFNlbGYtPntMaW5rT2JqZWN0fS0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEtleTEgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgS2V5MiAgICA9PiAkQ3VyckxpbmtQYXJ0bmVySUQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUeXBlICAgID0+ICRSZWxBdHRyeyRDdXJyS2V5bmFtZX0tPlswXS0+e1JlZmVyZW5jZWRU
aWNrZXRMaW5rVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICNkZWxldGUgYWxsIGV4aXN0aW5nIFRhcmdldCAg
bGlua3MuLi4KICAgICAgICAgICAgICAgIGZvciBteSAkQ3VyckxpbmtQYXJ0bmVySUQgKEBMaW5r
ZWRUYXJnZXRSZWZlcmVuY2VJRHMpIHsKCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntMaW5r
T2JqZWN0fS0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAn
SVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkxICAgID0+ICRQYXJh
bXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdUaWNr
ZXQnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkyICAgID0+ICRDdXJyTGlua1BhcnRuZXJJ
RCwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAkUmVsQXR0cnskQ3VycktleW5h
bWV9LT5bMF0tPntSZWZlcmVuY2VkVGlja2V0TGlua1R5cGV9LAogICAgICAgICAgICAgICAgICAg
ICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAg
ICMgY3JlYXRlIGFsbCBsaW5rcyBmcm9tIGF2YWlsYWJsZSBkYXRhLi4uCiAgICAgICAgICAgIGZv
ciBteSAkU2VhcmNoUmVzdWx0ICgga2V5cyglQ0lSZWZlcmVuY2VBdHRyRGF0YSkgKSB7CiAgICAg
ICAgICAgICAgICBteSBAUmVmZXJlbmNlQ0lJRHMgPSBAeyAkQ0lSZWZlcmVuY2VBdHRyRGF0YXsk
U2VhcmNoUmVzdWx0fSB9OwogICAgICAgICAgICAgICAgZm9yIG15ICRDdXJyQ0lSZWZlcmVuY2VJ
RCAoQFJlZmVyZW5jZUNJSURzKSB7CgogICAgICAgICAgICAgICAgICAgICNjcmVhdGUgbGluayBi
ZXR3ZWVuIHRoaXMgQ0kgYW5kIGN1cnJlbnQgQ0lSZWZlcmVuY2UtYXR0cmlidXRlLi4uCiAgICAg
ICAgICAgICAgICAgICAgaWYgKCAkQ3VyckNJUmVmZXJlbmNlSUQgJiYgJFBhcmFte0NvbmZpZ0l0
ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRSZWxBdHRyeyRDdXJyS2V5bmFtZX0tPlswXS0+e1JlZmVyZW5jZWRUaWNrZXRM
aW5rRGlyZWN0aW9ufQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRSZWxBdHRyeyRDdXJyS2V5bmFtZX0tPlswXS0+e1JlZmVyZW5jZWRU
aWNrZXRMaW5rRGlyZWN0aW9ufSBlcQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JldmVy
c2UnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57TGlua09iamVjdH0tPkxpbmtB
ZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICdUaWNr
ZXQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkQ3Vy
ckNJUmVmZXJlbmNlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0T2Jq
ZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGFyZ2V0S2V5ICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFR5cGUgICA9PiAkUmVsQXR0cnskQ3VycktleW5hbWV9LT5bMF0tPntSZWZl
cmVuY2VkVGlja2V0TGlua1R5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0
YXRlICA9PiAnVmFsaWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9
PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkU2VsZi0+e0xpbmtPYmplY3R9LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJEN1cnJDSVJlZmVyZW5jZUlELAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkUGFyYW17
Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4g
JFJlbEF0dHJ7JEN1cnJLZXluYW1lfS0+WzBdLT57UmVmZXJlbmNlZFRpY2tldExpbmtUeXBlfSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg
ICAgfSAgICAjRU8gaWYoICRDdXJyQ0lSZWZlcmVuY2VJRCAmJiAkUGFyYW17Q29uZmlnSXRlbUlE
fSkKCiAgICAgICAgICAgICAgICB9ICAgICNFTyBmb3IgbXkgJEN1cnJDSVJlZmVyZW5jZUlEKCBA
UmVmZXJlbmNlQ0lJRHMgKQoKICAgICAgICAgICAgfSAgICAjRU8gZm9yZWFjaCBteSAkU2VhcmNo
UmVzdWx0ICgga2V5cyggJUNJUmVmZXJlbmNlQXR0ckRhdGEpKQoKICAgICAgICB9ICAgICNFTyBm
b3IgbXkgJEN1cnJLZXluYW1lICgga2V5cyggJVJlbEF0dHIgKSkKCiAgICB9ICAgICNFTyBpZiAo
ICRWZXJzaW9uRGF0YSAmJiAkWE1MRGVmaW5pdGlvbiAmJiAlUmVsQXR0cikKICAgIHJldHVybjsK
fQoKc3ViIF9DcmVhdGVUaWNrZXRSZWZlcmVuY2VzSGFzaCB7CiAgICBteSAoICRTZWxmLCAlUGFy
YW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1zLi4uCiAgICBpZiAoCiAgICAg
ICAgKCAhJFBhcmFte1hNTERhdGF9ICkgfHwKICAgICAgICAoICEkUGFyYW17WE1MRGVmaW5pdGlv
bn0gKSB8fAogICAgICAgICggcmVmICRQYXJhbXtYTUxEYXRhfSBuZSAnSEFTSCcgKSB8fAogICAg
ICAgICggcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknICkKICAgICAgICApCiAg
ICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDSVJlbEF0dHIgPSAkU2VsZi0+e0NJ
QUNVdGlsc09iamVjdH0tPkdldEF0dHJpYnV0ZURhdGFCeVR5cGUoCiAgICAgICAgWE1MRGF0YSAg
ICAgICA9PiAkUGFyYW17WE1MRGF0YX0sCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkUGFyYW17
WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgQXR0cmlidXRlVHlwZSA9PiAnVGlja2V0UmVmZXJlbmNl
JywKICAgICk7CgogICAgbXkgJVN1bVJlbEF0dHIgPSAoKTsKICAgIG15ICRQYXJhbVJlZjsKICAg
IGZvciBteSAkS2V5ICgga2V5cyAleyRDSVJlbEF0dHJ9ICkgewoKICAgICAgICBteSAlUmV0SGFz
aCA9ICgpOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte1hN
TERlZmluaXRpb259IH0gKSB7CgogICAgICAgICAgICBDT1VOVEVSOgogICAgICAgICAgICBmb3Ig
bXkgJENvdW50ZXIgKCAxIC4uICRJdGVtLT57Q291bnRNYXh9ICkgewoKICAgICAgICAgICAgICAg
ICMgbm8gY29udGVudCB0aGVuIHN0b3AgbG9vcC4uLgogICAgICAgICAgICAgICAgbGFzdCBDT1VO
VEVSIGlmICFkZWZpbmVkICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3Vu
dGVyXS0+e0NvbnRlbnR9OwoKICAgICAgICAgICAgICAgIGlmICggJEl0ZW0tPntLZXl9IGVxICRL
ZXkgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJFBhcmFtUmVmICgKICAgICAg
ICAgICAgICAgICAgICAgICAgcXcoUmVmZXJlbmNlZFRpY2tldExpbmtUeXBlIFJlZmVyZW5jZWRU
aWNrZXRMaW5rRGlyZWN0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkUmV0SGFzaHskUGFyYW1SZWZ9ID0g
JEl0ZW0tPntJbnB1dH0tPnskUGFyYW1SZWZ9OwoKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPVU5URVIgaWYgISRJdGVtLT57U3Vi
fTsKCiAgICAgICAgICAgICAgICAjIEhhbmRsaW5nIG9mIFN1Yi1JZW1zIGluIERlZmluaXRpb25z
CiAgICAgICAgICAgICAgICBpZiAoICRJdGVtLT57U3VifSApIHsKICAgICAgICAgICAgICAgICAg
ICAlU3VtUmVsQXR0ciA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJVN1bVJlbEF0dHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT5fQ3JlYXRlVGlja2V0UmVmZXJlbmNlc0hhc2go
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3Vi
fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJFBhcmFte1hN
TERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLAogICAgICAgICAgICAgICAgICAg
ICAgICApCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgIH0KICAgICAgICBwdXNoIEB7ICRTdW1SZWxBdHRyeyRLZXl9IH0sIFwlUmV0
SGFzaDsKCiAgICB9CiAgICByZXR1cm4gJVN1bVJlbEF0dHI7Cn0KCj1pdGVtIF9HZXRBdHRyaWJ1
dGVEYXRhQnlLZXkoKQoKICAgIFJldHVybnMgYSBoYXNocmVmIHdpdGggbmFtZXMgYW5kIGF0dHJp
YnV0ZSB2YWx1ZXMgZnJvbSB0aGUKICAgIFhNTC1EYXRhSGFzaCBmb3IgYSBzcGVjaWZpZWQgZGF0
YSB0eXBlLgoKICAgICRDb25maWdJdGVtT2JqZWN0LT5HZXRBdHRyaWJ1dGVEYXRhQnlLZXkoCiAg
ICAgICAgWE1MRGF0YSAgICAgICA9PiAkWE1MRGF0YSwKICAgICAgICBYTUxEZWZpbml0aW9uID0+
ICRYTUxEZWZpbml0aW9uLAogICAgICAgIEtleU5hbWUgPT4gJEtleSwKICAgICk7Cgo9Y3V0Cgpz
dWIgX0dldEF0dHJpYnV0ZURhdGFCeUtleSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBf
OwoKICAgIG15ICVSZXN1bHQ7CgogICAgaWYgKCAkUGFyYW17Q29udGVudH0gKSB7CiAgICAgICAg
bXkgJEN1cnJDb250ZW50ID0gJFNlbGYtPntDSUFDVXRpbHNPYmplY3R9LT5HZXRBdHRyaWJ1dGVD
b250ZW50c0J5S2V5KAogICAgICAgICAgICBLZXlOYW1lICAgICAgID0+ICRQYXJhbXtLZXlOYW1l
fSwKICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkUGFyYW17WE1MRGF0YX0sCiAgICAgICAg
ICAgIFhNTERlZmluaXRpb24gPT4gJFBhcmFte1hNTERlZmluaXRpb259LAogICAgICAgICAgICAp
OwogICAgICAgICRSZXN1bHR7ICRQYXJhbXtLZXlOYW1lfSB9ID0gJEN1cnJDb250ZW50OwogICAg
fQogICAgZWxzZSB7CiAgICAgICAgbXkgJEN1cnJWYWwgPSAkU2VsZi0+e0NJQUNVdGlsc09iamVj
dH0tPkdldEF0dHJpYnV0ZVZhbHVlc0J5S2V5KAogICAgICAgICAgICBLZXlOYW1lICAgICAgID0+
ICRQYXJhbXtLZXlOYW1lfSwKICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkUGFyYW17WE1M
RGF0YX0sCiAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFBhcmFte1hNTERlZmluaXRpb259
LAogICAgICAgICAgICApOwogICAgICAgICRSZXN1bHR7ICRQYXJhbXtLZXlOYW1lfSB9ID0gJEN1
cnJWYWw7CiAgICB9CiAgICByZXR1cm4gXCVSZXN1bHQ7Cgp9CgojLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQojCgo9aXRlbSBHZXRMaW5rZWRPYmplY3RzKCkKCiAgIHJldHVybnMgYW4gYXJyYXkgcmVm
IHdpdGggSURzIG9mIGxpbmtlZCBvYmplY3RzCgogICBOT1RFOiByZW1vdmUgdGhpcyBtZXRob2Qg
YXMgc29vbiBhcyAoS0lYKQogICBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6R2V0TGlua2Vk
T2JqZWN0cyBoYXMgYmVlbiBtb2RpZmllZCBhbmQgaXMKICAgYXZhaWxhYmxlICEhIQoKICAgbXkg
QExpbmtlZExvY2F0aW9uSURzID0gQHskU2VsZi0+R2V0TGlua2VkT2JqZWN0cygKICAgICAgIEZy
b21PYmplY3QgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgRnJvbU9iamVjdElEID0+IDEy
MywKICAgICAgIFRvT2JqZWN0ICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nIHwgJ1RpY2tldCcsCiAg
ICAgICBUb1N1Yk9iamVjdCAgPT4gJ0xvY2F0aW9uLVNvbWUgQ0kgQ2xhc3MnIHwgJ09yU29tZVRp
Y2tldFR5cGUnLAogICAgICAgTGlua1R5cGUgICAgID0+ICdQYXJlbnRDaGlsZCcsICAgICAgICAj
TGlua1R5cGUgLSBvcHRpb25hbAogICAgICAgRGlyZWN0aW9uICAgID0+IChTb3VyY2V8VGFyZ2V0
fEJvdGgpLCAjTGlua0RpcmVjdGlvbiAtIG9wdGlvbmFsCiAgICl9OwoKPWN1dAoKc3ViIEdldExp
bmtlZE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15IEBJREFy
ciA9IHF3e307CgogICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbXMuLi4KICAgIGlmICggKCAhJFBh
cmFte1RvT2JqZWN0fSApIHx8ICggISRQYXJhbXtGcm9tT2JqZWN0fSApIHx8ICggISRQYXJhbXtG
cm9tT2JqZWN0SUR9ICkgKQogICAgewogICAgICAgIHJldHVybiBcQElEQXJyOwogICAgfQoKICAg
ICNhcyBsb25nIGFzIGl0J3Mgbm90IGltcGxlbWVudGVkLi4uCiAgICBpZiAoCiAgICAgICAgKCAk
UGFyYW17VG9PYmplY3R9IG5lICdJVFNNQ29uZmlnSXRlbScgKQogICAgICAgICYmICggJFBhcmFt
e1RvT2JqZWN0fSBuZSAnVGlja2V0JyApCiAgICAgICAgJiYgKCAkUGFyYW17VG9PYmplY3R9IG5l
ICdUaWNrZXQnICkKICAgICAgICApCiAgICB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5M
b2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdl
ICA9PiAiTGlua09iamVjdDo6R2V0TGlua2VkT2JqZWN0czogIgogICAgICAgICAgICAgICAgLiAi
dW5rbm93biBUb09iamVjdCAkUGFyYW17VG9PYmplY3R9IC0gd29uJ3QgZG8gYW55dGhpbmcuIiwK
ICAgICAgICApOwogICAgICAgIHJldHVybiBcQElEQXJyOwogICAgfQoKICAgIGlmICggISRQYXJh
bXtUb1N1Yk9iamVjdH0gKSB7CiAgICAgICAgJFBhcmFte1RvU3ViT2JqZWN0fSA9ICIiOwogICAg
fQoKICAgICNnZXQgYWxsIGxpbmtlZCBUb09iamVjdHMuLi4KICAgIG15ICRQYXJ0bmVyTGlua0xp
c3QgPSAkU2VsZi0+e0xpbmtPYmplY3R9LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVj
dCAgICA9PiAkUGFyYW17RnJvbU9iamVjdH0sCiAgICAgICAgS2V5ICAgICAgID0+ICRQYXJhbXtG
cm9tT2JqZWN0SUR9LAogICAgICAgIE9iamVjdDIgICA9PiAkUGFyYW17VG9PYmplY3R9LAogICAg
ICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkUGFyYW17TGlu
a1R5cGV9IHx8ICcnLAogICAgICAgIERpcmVjdGlvbiA9PiAkUGFyYW17RGlyZWN0aW9ufSB8fCAn
Qm90aCcsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKICAgICMtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgICMgVG9QYXJ0bmVyICJJVFNNQ29uZmlnSXRlbSIKICAgIGlmICggJFBhcmFte1Rv
T2JqZWN0fSBlcSAnSVRTTUNvbmZpZ0l0ZW0nICkgewoKICAgICAgICAjZm9yIGVhY2ggZXhpc3Rp
bmcgbGluayB0eXBlCiAgICAgICAgZm9yIG15ICRMaW5rVHlwZSAoIGtleXMoICV7ICRQYXJ0bmVy
TGlua0xpc3QtPnsnSVRTTUNvbmZpZ0l0ZW0nfSB9ICkgKSB7CgogICAgICAgICAgICAjaWYgbGlu
a2VkIG9iamVjdCBpcyBhIHNvdXJjZQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAo
IGRlZmluZWQoICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtU
eXBlfS0+e1NvdXJjZX0gKSApCiAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgKCBy
ZWYoICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+
e1NvdXJjZX0gKSBlcSAnSEFTSCcgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICBmb3IgbXkgJEN1cnJDSUlEICgKICAgICAgICAgICAgICAgICAgICBrZXlz
KCAleyAkUGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRMaW5rVHlwZX0t
PntTb3VyY2V9IH0gKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICBteSAkQ3VyckNJID0KICAgICAgICAgICAgICAgICAgICAgICAgJFBh
cnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57U291cmNl
fS0+eyRDdXJyQ0lJRH07CgogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1RvU3ViT2Jq
ZWN0fSAmJiAoICRDdXJyQ0ktPntDbGFzc30gZXEgJFBhcmFte1RvU3ViT2JqZWN0fSApICkgewog
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKCBASURBcnIsICRDdXJyQ0lJRCApOwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICEkUGFyYW17VG9TdWJP
YmplY3R9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKCBASURBcnIsICRDdXJyQ0lJ
RCApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQoKICAgICAgICAgICAgI2lmIGxpbmtlZCBvYmplY3QgaXMgdGFyZ2V0CiAgICAgICAgICAgIGlm
ICgKICAgICAgICAgICAgICAgICggZGVmaW5lZCggJFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17
VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57VGFyZ2V0fSApICkKICAgICAgICAgICAgICAgICYm
CiAgICAgICAgICAgICAgICAoIHJlZiggJFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmpl
Y3R9IH0tPnskTGlua1R5cGV9LT57VGFyZ2V0fSApIGVxICdIQVNIJyApCiAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciBteSAkQ3VyckNJSUQgKAogICAg
ICAgICAgICAgICAgICAgIGtleXMoICV7ICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2Jq
ZWN0fSB9LT57JExpbmtUeXBlfS0+e1RhcmdldH0gfSApCiAgICAgICAgICAgICAgICAgICAgKQog
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRDdXJyQ0kgPSAkUGFydG5l
ckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9CiAg
ICAgICAgICAgICAgICAgICAgICAgIC0+eyRDdXJyQ0lJRH07CgogICAgICAgICAgICAgICAgICAg
IGlmICggJFBhcmFte1RvU3ViT2JqZWN0fSAmJiAoICRDdXJyQ0ktPntDbGFzc30gZXEgJFBhcmFt
e1RvU3ViT2JqZWN0fSApICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKCBASURBcnIs
ICRDdXJyQ0lJRCApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBl
bHNpZiAoICEkUGFyYW17VG9TdWJPYmplY3R9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKCBASURBcnIsICRDdXJyQ0lJRCApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9ICAgICNFTyBmb3IgZWFjaCBleGlzdGlu
ZyBsaW5rIHR5cGUKCiAgICB9CgogICAgIyBFTyBUb1BhcnRuZXIgIklUU01Db25maWdJdGVtIgog
ICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgVG9Q
YXJ0bmVyICJUaWNrZXQiCiAgICBpZiAoICRQYXJhbXtUb09iamVjdH0gZXEgJ1RpY2tldCcgKSB7
CgogICAgICAgICNmb3IgZWFjaCBleGlzdGluZyBsaW5rIHR5cGUKICAgICAgICBmb3IgbXkgJExp
bmtUeXBlICgga2V5cyggJXsgJFBhcnRuZXJMaW5rTGlzdC0+eydUaWNrZXQnfSB9ICkgKSB7Cgog
ICAgICAgICAgICAjaWYgbGlua2VkIG9iamVjdCBpcyBhIHNvdXJjZQogICAgICAgICAgICBpZiAo
CiAgICAgICAgICAgICAgICAoIGRlZmluZWQoICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1Rv
T2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1NvdXJjZX0gKSApCiAgICAgICAgICAgICAgICAmJgog
ICAgICAgICAgICAgICAgKCByZWYoICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0
fSB9LT57JExpbmtUeXBlfS0+e1NvdXJjZX0gKSBlcSAnSEFTSCcgKQogICAgICAgICAgICAgICAg
KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFRpY2tldElEICgKICAgICAg
ICAgICAgICAgICAgICBrZXlzKCAleyAkUGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVj
dH0gfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9IH0gKQogICAgICAgICAgICAgICAgICAgICkKICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ3VyclRpY2tldCA9ICRQYXJ0
bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9LT57JExpbmtUeXBlfS0+e1NvdXJjZX0K
ICAgICAgICAgICAgICAgICAgICAgICAgLT57JFRpY2tldElEfTsKCiAgICAgICAgICAgICAgICAg
ICAgaWYgKCAkUGFyYW17VG9TdWJPYmplY3R9ICYmICggJEN1cnJUaWNrZXQtPntUeXBlfSBlcSAk
UGFyYW17VG9TdWJPYmplY3R9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goIEBJ
REFyciwgJFRpY2tldElEICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgIGVsc2lmICggISRQYXJhbXtUb1N1Yk9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goIEBJREFyciwgJFRpY2tldElEICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjaWYgbGlua2VkIG9iamVj
dCBpcyB0YXJnZXQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCBkZWZpbmVkKCAk
UGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRMaW5rVHlwZX0tPntUYXJn
ZXR9ICkgKQogICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgICAgICggcmVmKCAkUGFydG5l
ckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9ICkg
ZXEgJ0hBU0gnICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgZm9yIG15ICRUaWNrZXRJRCAoCiAgICAgICAgICAgICAgICAgICAga2V5cyggJXsgJFBhcnRu
ZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57VGFyZ2V0fSB9
ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgbXkgJEN1cnJUaWNrZXQgPSAkUGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVj
dH0gfS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+eyRU
aWNrZXRJRH07CgogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1RvU3ViT2JqZWN0fSAm
JiAoICRDdXJyVGlja2V0LT57VHlwZX0gZXEgJFBhcmFte1RvU3ViT2JqZWN0fSApICkgewogICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKCBASURBcnIsICRUaWNrZXRJRCApOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICEkUGFyYW17VG9TdWJPYmpl
Y3R9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKCBASURBcnIsICRUaWNrZXRJRCAp
OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoK
ICAgICAgICB9ICAgICNFTyBmb3IgZWFjaCBleGlzdGluZyBsaW5rIHR5cGUKCiAgICB9CgogICAg
IyBFTyBUb1BhcnRuZXIgIlRpY2tldCIKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAgICAjIFRvUGFydG5lciAiVGlja2V0IgogICAgaWYgKCAkUGFyYW17
VG9PYmplY3R9IGVxICdUaWNrZXQnICkgewoKICAgICAgICAjZm9yIGVhY2ggZXhpc3RpbmcgbGlu
ayB0eXBlCiAgICAgICAgZm9yIG15ICRMaW5rVHlwZSAoIGtleXMoICV7ICRQYXJ0bmVyTGlua0xp
c3QtPnsnVGlja2V0J30gfSApICkgewoKICAgICAgICAgICAgI2lmIGxpbmtlZCBvYmplY3QgaXMg
YSBzb3VyY2UKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCBkZWZpbmVkKCAkUGFy
dG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9
ICkgKQogICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgICAgICggcmVmKCAkUGFydG5lckxp
bmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0gfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9ICkgZXEg
J0hBU0gnICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
Zm9yIG15ICRUaWNrZXRJRCAoCiAgICAgICAgICAgICAgICAgICAga2V5cyggJXsgJFBhcnRuZXJM
aW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57U291cmNlfSB9ICkK
ICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgbXkgJEN1cnJUaWNrZXQgPSAkUGFydG5lckxpbmtMaXN0LT57ICRQYXJhbXtUb09iamVjdH0g
fS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+eyRUaWNr
ZXRJRH07CgogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1RvU3ViT2JqZWN0fSAmJiAo
ICRDdXJyVGlja2V0LT57VHlwZX0gZXEgJFBhcmFte1RvU3ViT2JqZWN0fSApICkgewogICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKCBASURBcnIsICRUaWNrZXRJRCApOwogICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICEkUGFyYW17VG9TdWJPYmplY3R9
ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKCBASURBcnIsICRUaWNrZXRJRCApOwog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgI2lmIGxpbmtlZCBvYmplY3QgaXMgdGFyZ2V0CiAgICAgICAgICAgIGlmICgKICAg
ICAgICAgICAgICAgICggZGVmaW5lZCggJFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmpl
Y3R9IH0tPnskTGlua1R5cGV9LT57VGFyZ2V0fSApICkKICAgICAgICAgICAgICAgICYmCiAgICAg
ICAgICAgICAgICAoIHJlZiggJFBhcnRuZXJMaW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0t
PnskTGlua1R5cGV9LT57VGFyZ2V0fSApIGVxICdIQVNIJyApCiAgICAgICAgICAgICAgICApCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciBteSAkVGlja2V0SUQgKAogICAgICAgICAg
ICAgICAgICAgIGtleXMoICV7ICRQYXJ0bmVyTGlua0xpc3QtPnsgJFBhcmFte1RvT2JqZWN0fSB9
LT57JExpbmtUeXBlfS0+e1RhcmdldH0gfSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRDdXJyVGlja2V0ID0gJFBhcnRuZXJM
aW5rTGlzdC0+eyAkUGFyYW17VG9PYmplY3R9IH0tPnskTGlua1R5cGV9LT57VGFyZ2V0fQogICAg
ICAgICAgICAgICAgICAgICAgICAtPnskVGlja2V0SUR9OwoKICAgICAgICAgICAgICAgICAgICBp
ZiAoICRQYXJhbXtUb1N1Yk9iamVjdH0gJiYgKCAkQ3VyclRpY2tldC0+e1R5cGV9IGVxICRQYXJh
bXtUb1N1Yk9iamVjdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCggQElEQXJy
LCAkVGlja2V0SUQgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ZWxzaWYgKCAhJFBhcmFte1RvU3ViT2JqZWN0fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaCggQElEQXJyLCAkVGlja2V0SUQgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfSAgICAjRU8gZm9yIGVhY2ggZXhpc3Rp
bmcgbGluayB0eXBlCgogICAgfQoKICAgICMgRU8gVG9QYXJ0bmVyICJUaWNrZXQiCiAgICAjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCgogICAgcmV0dXJuIFxASURBcnI7Cn0KCiMKIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KCjE7Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vSVRTTUNJQXR0cmlidXRDb2xsZWN0aW9uVXRpbHMucG0gLSBh
ZGRpdGlvbmFsIGNvbmZpZyBpdGVtIGZ1bmN0aW9ucwojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2
IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0
ZWQgYnk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBSZW5lKGRv
dClCb2VobShhdCljYXBlLWl0KGRvdClkZQojICogTWFydGluKGRvdClCYWx6YXJlayhhdCljYXBl
LWl0KGRvdClkZQojICogRnJhbmsoZG90KU9iZXJlbmRlcihhdCljYXBlLWl0KGRvdClkZQojICog
U2ViYXN0aWFuKGRvdClSZWnDnyhhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGlu
Z2VyKGF0KWNhcGUtaXQoZG90KWRlCiMKIyAtLQojICRJZDogSVRTTUNJQXR0cmlidXRDb2xsZWN0
aW9uVXRpbHMucG0sdiAxLjkgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRo
aXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWls
cywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlv
biAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8v
d3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0
ZW06OklUU01DSUF0dHJpYnV0Q29sbGVjdGlvblV0aWxzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5p
bmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OklU
U01Db25maWdJdGVtJwopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBf
OwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4uLgogICAgbXkgJFNlbGYgPSB7
fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmpl
Y3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7
CgogICAgcmV0dXJuICRTZWxmOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGNhcGVJVAoj
IFRoZWZvbGxvd2luZyBtZXRob2RzIGFyZSBtZWFudCB0byBlYXNlIHRoZSBoYW5kbGluZyBvZiB0
aGUgWE1MLUxJS0UgZGF0YSBoYXNoLgojIFRoZXkgZG8gbm90IHJlcGxhY2UgYW55IGludGVybmFs
L29yaWdpbmFsIG1ldGhvZHMuCgo9aXRlbSBHZXRBdHRyaWJ1dGVWYWx1ZXNCeUtleSgpCgogICAg
UmV0dXJucyB2YWx1ZXMgZmlyc3QgZm91bmQsIGZvciBhIGdpdmVuIGF0dHJpYnV0ZSBrZXkuCiAg
ICAgICAgX0dldEF0dHJpYnV0ZVZhbHVlc0J5S2V5ICgKICAgICAgICAgICAgS2V5TmFtZSAgICAg
ICA9PiAnRlFETicsCiAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJFhNTERhdGFSZWYsCiAg
ICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZlJlZiwKICAgICAgICApOwo9Y3V0Cgpz
dWIgR2V0QXR0cmlidXRlVmFsdWVzQnlLZXkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKICAgIG15IEBSZXRBcnJheSA9IHF3e307CgogICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbXMu
Li4KICAgIGlmICgKICAgICAgICAhJFBhcmFte0tleU5hbWV9CiAgICAgICAgfHwKICAgICAgICAo
ICEkUGFyYW17WE1MRGF0YX0gKSB8fAogICAgICAgICggISRQYXJhbXtYTUxEZWZpbml0aW9ufSAp
IHx8CiAgICAgICAgKCByZWYgJFBhcmFte1hNTERhdGF9IG5lICdIQVNIJyApIHx8CiAgICAgICAg
KCByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWScgKQogICAgICAgICkKICAgIHsK
ICAgICAgICByZXR1cm4gXEBSZXRBcnJheTsKICAgIH0KCiAgICBJVEVNOgogICAgZm9yIG15ICRJ
dGVtICggQHsgJFBhcmFte1hNTERlZmluaXRpb259IH0gKSB7CgogICAgICAgIENPVU5URVI6CiAg
ICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkSXRlbS0+e0NvdW50TWF4fSApIHsKCiAgICAg
ICAgICAgICMgbm8gY29udGVudCB0aGVuIHN0b3AgbG9vcC4uLgogICAgICAgICAgICBsYXN0IENP
VU5URVIgaWYgIWRlZmluZWQgJFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENv
dW50ZXJdLT57Q29udGVudH07CgogICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGFyZSBsb29raW5n
IGZvciB0aGlzIGtleQogICAgICAgICAgICBpZiAoICRJdGVtLT57S2V5fSBlcSAkUGFyYW17S2V5
TmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlLi4uCiAgICAgICAgICAg
ICAgICBteSAkVmFsdWUgPSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9LT5YTUxWYWx1ZUxvb2t1
cCgKICAgICAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSA9PiBsZW5ndGgoICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRD
b3VudGVyXS0+e0NvbnRlbnR9ICkKICAgICAgICAgICAgICAgICAgICA/ICRQYXJhbXtYTUxEYXRh
fS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9CiAgICAgICAgICAgICAg
ICAgICAgOiAnJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCRWYWx1
ZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBSZXRBcnJheSwgJFZhbHVlICk7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgQ09VTlRFUiBpZiAh
JEl0ZW0tPntTdWJ9OwoKICAgICAgICAgICAgI3JlY3Vyc2UgaWYgc3Vic2VjdGlvbiBhdmFpbGFi
bGUuLi4KICAgICAgICAgICAgbXkgJFN1YlJlc3VsdCA9ICRTZWxmLT5HZXRBdHRyaWJ1dGVWYWx1
ZXNCeUtleSgKICAgICAgICAgICAgICAgIEtleU5hbWUgICAgICAgPT4gJFBhcmFte0tleU5hbWV9
LAogICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAg
ICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0g
fS0+WyRDb3VudGVyXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggcmVmKCRTdWJS
ZXN1bHQpIGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFycmF5RWxlbSAo
IEB7JFN1YlJlc3VsdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQFJldEFycmF5LCAk
QXJyYXlFbGVtICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICB9CgogICAgcmV0dXJuIFxAUmV0QXJyYXk7Cn0KCj1pdGVtIEdldEF0dHJpYnV0ZUNvbnRlbnRz
QnlLZXkoKQoKICAgIFJldHVybnMgY29udGVudHMgZmlyc3QgZm91bmQsIGZvciBhIGdpdmVuIGF0
dHJpYnV0ZSBrZXkuCiAgICAgICAgR2V0QXR0cmlidXRlQ29udGVudHNCeUtleSAoCiAgICAgICAg
ICAgIEtleU5hbWUgICAgICAgPT4gJ0ZRRE4nLAogICAgICAgICAgICBYTUxEYXRhICAgICAgID0+
ICRYTUxEYXRhUmVmLAogICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRYTUxEZWZSZWYsCiAg
ICAgICAgKTsKPWN1dAoKc3ViIEdldEF0dHJpYnV0ZUNvbnRlbnRzQnlLZXkgewogICAgbXkgKCAk
U2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15IEBSZXRBcnJheSA9IHF3e307CgogICAgIyBjaGVj
ayByZXF1aXJlZCBwYXJhbXMuLi4KICAgIGlmICgKICAgICAgICAhJFBhcmFte0tleU5hbWV9CiAg
ICAgICAgfHwKICAgICAgICAoICEkUGFyYW17WE1MRGF0YX0gKSB8fAogICAgICAgICggISRQYXJh
bXtYTUxEZWZpbml0aW9ufSApIHx8CiAgICAgICAgKCByZWYgJFBhcmFte1hNTERhdGF9IG5lICdI
QVNIJyApIHx8CiAgICAgICAgKCByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWScg
KQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gXEBSZXRBcnJheTsKICAgIH0KCiAgICBJ
VEVNOgogICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte1hNTERlZmluaXRpb259IH0gKSB7Cgog
ICAgICAgIENPVU5URVI6CiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkSXRlbS0+e0Nv
dW50TWF4fSApIHsKCiAgICAgICAgICAgICMgbm8gY29udGVudCB0aGVuIHN0b3AgbG9vcC4uLgog
ICAgICAgICAgICBsYXN0IENPVU5URVIgaWYgIWRlZmluZWQgJFBhcmFte1hNTERhdGF9LT57ICRJ
dGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLT57Q29udGVudH07CgogICAgICAgICAgICAjIGdldCB0
aGUgdmFsdWUuLi4KICAgICAgICAgICAgbXkgJENvbnRlbnQKICAgICAgICAgICAgICAgID0gbGVu
Z3RoKCAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0tPntDb250
ZW50fSApCiAgICAgICAgICAgICAgICA/ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0g
fS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9CiAgICAgICAgICAgICAgICA6ICcnOwoKICAgICAgICAg
ICAgaWYgKCAoICRJdGVtLT57S2V5fSBlcSAkUGFyYW17S2V5TmFtZX0gKSAmJiAkQ29udGVudCAp
IHsKICAgICAgICAgICAgICAgIHB1c2goIEBSZXRBcnJheSwgJENvbnRlbnQgKTsKICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgbmV4dCBDT1VOVEVSIGlmICEkSXRlbS0+e1N1Yn07CgogICAgICAg
ICAgICAjcmVjdXJzZSBpZiBzdWJzZWN0aW9uIGF2YWlsYWJsZS4uLgogICAgICAgICAgICBteSAk
U3ViUmVzdWx0ID0gJFNlbGYtPkdldEF0dHJpYnV0ZUNvbnRlbnRzQnlLZXkoCiAgICAgICAgICAg
ICAgICBLZXlOYW1lICAgICAgID0+ICRQYXJhbXtLZXlOYW1lfSwKICAgICAgICAgICAgICAgIFhN
TERlZmluaXRpb24gPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAg
ICA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0sCiAgICAg
ICAgICAgICk7CgogICAgICAgICAgICBpZiAoIHJlZigkU3ViUmVzdWx0KSBlcSAnQVJSQVknICkg
ewogICAgICAgICAgICAgICAgZm9yIG15ICRBcnJheUVsZW0gKCBAeyRTdWJSZXN1bHR9ICkgewog
ICAgICAgICAgICAgICAgICAgIHB1c2goIEBSZXRBcnJheSwgJEFycmF5RWxlbSApOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQFJl
dEFycmF5Owp9Cgo9aXRlbSBHZXRBdHRyaWJ1dGVEYXRhQnlUeXBlKCkKCiAgICBSZXR1cm5zIGEg
aGFzaHJlZiB3aXRoIG5hbWVzIGFuZCBhdHRyaWJ1dGUgdmFsdWVzIGZyb20gdGhlCiAgICBYTUwt
RGF0YUhhc2ggZm9yIGEgc3BlY2lmaWVkIGRhdGEgdHlwZS4KCiAgICAkQ29uZmlnSXRlbU9iamVj
dC0+R2V0QXR0cmlidXRlRGF0YUJ5VHlwZSgKICAgICAgICBYTUxEYXRhICAgICAgID0+ICRYTUxE
YXRhLAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24sCiAgICAgICAgQXR0
cmlidXRlVHlwZSA9PiAkQXR0cmlidXRlVHlwZSwKICAgICk7Cgo9Y3V0CgpzdWIgR2V0QXR0cmli
dXRlRGF0YUJ5VHlwZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBL
ZXlzID0gKCk7CiAgICBteSAlUmVzdWx0OwoKICAgICNnZXQgYWxsIGtleXMgZm9yIHNwZWNpZmll
ZCBpbnB1dCB0eXBlLi4uCiAgICBAS2V5cyA9IEB7CiAgICAgICAgJFNlbGYtPkdldEtleU5hbWVz
QnlUeXBlKAogICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRQYXJhbXtYTUxEZWZpbml0aW9u
fSwKICAgICAgICAgICAgQXR0cmlidXRlVHlwZSA9PiAkUGFyYW17QXR0cmlidXRlVHlwZX0KICAg
ICAgICAgICAgKQogICAgICAgIH07CgogICAgaWYgKCAkUGFyYW17Q29udGVudH0gKSB7CiAgICAg
ICAgZm9yIG15ICRDdXJyS2V5IChAS2V5cykgewogICAgICAgICAgICBteSAkQ3VyckNvbnRlbnQg
PSAkU2VsZi0+R2V0QXR0cmlidXRlQ29udGVudHNCeUtleSgKICAgICAgICAgICAgICAgIEtleU5h
bWUgICAgICAgPT4gJEN1cnJLZXksCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQ
YXJhbXtYTUxEYXRhfSwKICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFBhcmFte1hN
TERlZmluaXRpb259LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUmVzdWx0eyRDdXJyS2V5
fSA9ICRDdXJyQ29udGVudDsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBmb3Ig
bXkgJEN1cnJLZXkgKEBLZXlzKSB7CiAgICAgICAgICAgIG15ICRDdXJyVmFsID0gJFNlbGYtPkdl
dEF0dHJpYnV0ZVZhbHVlc0J5S2V5KAogICAgICAgICAgICAgICAgS2V5TmFtZSAgICAgICA9PiAk
Q3VycktleSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJFBhcmFte1hNTERhdGF9
LAogICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkUGFyYW17WE1MRGVmaW5pdGlvbn0s
CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRSZXN1bHR7JEN1cnJLZXl9ID0gJEN1cnJWYWw7
CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJVJlc3VsdDsKCn0KCj1pdGVtIEdldEtleU5h
bWVzQnlUeXBlKCkKCiAgICBSZXR1cm5zIGFuIGFycmF5IG9mIGtleW5hbWVzIHdoaWNoIGFyZSBv
ZiBhIHNwZWNpZmllZCBkYXRhIHR5cGUuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkdldEtleU5h
bWVzQnlUeXBlKAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24sCiAgICAg
ICAgQXR0cmlidXRlVHlwZSA9PiAkQXR0cmlidXRlVHlwZSwKICAgICk7Cgo9Y3V0CgpzdWIgR2V0
S2V5TmFtZXNCeVR5cGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBA
S2V5cyA9ICgpOwogICAgbXkgJVJlc3VsdDsKCiAgICBpZiAoIGRlZmluZWQoICRQYXJhbXtYTUxE
ZWZpbml0aW9ufSApICkgewoKICAgICAgICBmb3IgbXkgJEF0dHJEZWYgKCBAeyAkUGFyYW17WE1M
RGVmaW5pdGlvbn0gfSApIHsKICAgICAgICAgICAgaWYgKCAkQXR0ckRlZi0+e0lucHV0fS0+e1R5
cGV9IGVxICRQYXJhbXtBdHRyaWJ1dGVUeXBlfSApIHsKICAgICAgICAgICAgICAgIHB1c2goIEBL
ZXlzLCAkQXR0ckRlZi0+e0tleX0gKQogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IGlm
ICEkQXR0ckRlZi0+e1N1Yn07CgogICAgICAgICAgICBteSBAU3ViUmVzdWx0ID0gQHsKICAgICAg
ICAgICAgICAgICRTZWxmLT5HZXRLZXlOYW1lc0J5VHlwZSgKICAgICAgICAgICAgICAgICAgICBB
dHRyaWJ1dGVUeXBlID0+ICRQYXJhbXtBdHRyaWJ1dGVUeXBlfSwKICAgICAgICAgICAgICAgICAg
ICBYTUxEZWZpbml0aW9uID0+ICRBdHRyRGVmLT57U3VifSwKICAgICAgICAgICAgICAgICAgICAp
CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgQEtleXMgPSAoIEBLZXlzLCBAU3ViUmVz
dWx0ICk7CiAgICAgICAgfQoKICAgIH0KCiAgICByZXR1cm4gXEBLZXlzOwp9Cgo9aXRlbSBfR2V0
S2V5TmFtZXNCeVR5cGUoKQoKICAgIFNhbWVzIGFzIEdldEtleU5hbWVzQnlUeXBlIC0gcmV0dXJu
cyBhbiBhcnJheSBvZiBrZXluYW1lcyB3aGljaCBhcmUgb2YgYQogICAgc3BlY2lmaWVkIGRhdGEg
dHlwZS4gPT4gdXNlIEdldEtleU5hbWVzQnlUeXBlIGluc3RlYWQgIQogICAgISEhIERFUFJFQ0FU
RUQgLSBPTkxZIEZPUiBDT01QQVRJQklMSVRZIC0gV0lMTCBCRSBSRU1PVkVEICEhIQoKICAgICRD
b25maWdJdGVtT2JqZWN0LT5fR2V0S2V5TmFtZXNCeVR5cGUoCiAgICAgICAgWE1MRGVmaW5pdGlv
biA9PiAkWE1MRGVmaW5pdGlvbiwKICAgICAgICBBdHRyaWJ1dGVUeXBlID0+ICRBdHRyaWJ1dGVU
eXBlLAogICAgKTsKCj1jdXQKCnN1YiBfR2V0S2V5TmFtZXNCeVR5cGUgewogICAgbXkgKCAkU2Vs
ZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAS2V5cyA9ICgpOwogICAgbXkgJVJlc3VsdDsKCiAg
ICBpZiAoIGRlZmluZWQoICRQYXJhbXtYTUxEZWZpbml0aW9ufSApICkgewoKICAgICAgICBmb3Ig
bXkgJEF0dHJEZWYgKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKICAgICAgICAgICAg
aWYgKCAkQXR0ckRlZi0+e0lucHV0fS0+e1R5cGV9IGVxICRQYXJhbXtBdHRyaWJ1dGVUeXBlfSAp
IHsKICAgICAgICAgICAgICAgIHB1c2goIEBLZXlzLCAkQXR0ckRlZi0+e0tleX0gKQogICAgICAg
ICAgICB9CgogICAgICAgICAgICBuZXh0IGlmICEkQXR0ckRlZi0+e1N1Yn07CgogICAgICAgICAg
ICBteSBAU3ViUmVzdWx0ID0gQHsKICAgICAgICAgICAgICAgICRTZWxmLT5fR2V0S2V5TmFtZXNC
eVR5cGUoCiAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlVHlwZSA9PiAkUGFyYW17QXR0cmli
dXRlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQXR0ckRlZi0+
e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAg
ICAgIEBLZXlzID0gKCBAS2V5cywgQFN1YlJlc3VsdCApOwogICAgICAgIH0KCiAgICB9CgogICAg
cmV0dXJuIFxAS2V5czsKfQoKPWl0ZW0gR2V0QXR0cmlidXRlRGVmQnlUYWdLZXkoKQoKUmV0dXJu
cyBjaG9vc2VuIENJIGF0dHJpYnV0ZSBkZWZpbml0aW9uLCBmb3IgYSBnaXZlbiB0YWcga2V5Lgog
ICAgbXkgJUF0dHJEZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+R2V0QXR0cmlidXRlRGVmQnlUYWdL
ZXkgKAogICAgICAgIFRhZ0tleSAgICAgICAgPT4gIlsxXXsnVmVyc2lvbid9WzFdeydNb2RlbCd9
WzFdIiwKICAgICAgICBYTUxEYXRhICAgICAgID0+ICRYTUxEYXRhUmVmLAogICAgICAgIFhNTERl
ZmluaXRpb24gPT4gJFhNTERlZlJlZiwKICAgICk7CgpyZXR1cm5zCgogICAgSW5wdXQgPT4gewog
ICAgICAgIFR5cGUKICAgICAgICBDbGFzcwogICAgICAgIFJlcXVpcmVkCiAgICAgICAgVHJhbnNs
YXRpb24KICAgICAgICBTaXplCiAgICAgICAgTWF4TGVuZ3RoCiAgICB9CiAgICBLZXkKICAgIE5h
bWUKICAgIFNlYXJjaGFibGUKICAgIENvdW50TWluCiAgICBDb3VudE1heAogICAgQ291bnREZWZh
dWx0Cgo9Y3V0CgpzdWIgR2V0QXR0cmlidXRlRGVmQnlUYWdLZXkgewogICAgbXkgKCAkU2VsZiwg
JVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtcy4uLgogICAgcmV0dXJu
CiAgICAgICAgaWYgKAogICAgICAgICEkUGFyYW17WE1MRGF0YX0gICAgICAgfHwgcmVmKCAkUGFy
YW17WE1MRGF0YX0gKSAgICAgICBuZSAnSEFTSCcgfHwKICAgICAgICAhJFBhcmFte1hNTERlZmlu
aXRpb259IHx8IHJlZiggJFBhcmFte1hNTERlZmluaXRpb259ICkgbmUgJ0FSUkFZJyB8fAogICAg
ICAgICEkUGFyYW17VGFnS2V5fQogICAgICAgICk7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRl
bSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG5leHQgSVRFTSBpZiAo
ICEkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0gKTsKCiAgICAgICAgQ09VTlRFUjoK
ICAgICAgICBmb3IgbXkgJENvdW50ZXIgKCAxIC4uICRJdGVtLT57Q291bnRNYXh9ICkgewogICAg
ICAgICAgICBpZiAoICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVy
XS0+e1RhZ0tleX0gZXEgJFBhcmFte1RhZ0tleX0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4g
XCV7JEl0ZW19OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPVU5URVIgaWYgISRJ
dGVtLT57U3VifTsKCiAgICAgICAgICAgICMgcmVjdXJzZSBpZiBzdWJzZWN0aW9uIGF2YWlsYWJs
ZS4uLgogICAgICAgICAgICBteSAkU3ViUmVzdWx0ID0gJFNlbGYtPkdldEF0dHJpYnV0ZURlZkJ5
VGFnS2V5KAogICAgICAgICAgICAgICAgVGFnS2V5ICAgICAgICA9PiAkUGFyYW17VGFnS2V5fSwK
ICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAg
ICAgICAgWE1MRGF0YSAgICAgICA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0t
PlskQ291bnRlcl0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRTdWJSZXN1bHQg
JiYgcmVmKCRTdWJSZXN1bHQpIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiBc
JXskU3ViUmVzdWx0fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4g
KCk7Cn0KCj1pdGVtIFZlcnNpb25EYXRhVXBkYXRlKCkKCiAgICBSZXR1cm5zIGEgdGhlIGN1cnJl
bnQgdmVyc2lvbiBkYXRhIGluIHRoZSBtb3N0IGN1cnJlbnQgZGVmaW5pdGlvbiBmb3JtYXQKICAg
ICh1c3VhbGx5IHRoaXMgaXMgZG9uZSBpbiB0aGUgZnJvbnRlbmQpLiBUaGUgdmVyc2lvbiBkYXRh
IG1pZ2h0IGJlIHN0cnVjdHVyZWQKICAgIGluIGEgcHJldmlvdXMgZGVmaW5pdGlvbi4KCiAgICAk
TmV3VmVyc2lvblhNTERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRhdGFVcGRhdGUo
CiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkTmV3RGVmaW5pdGlvblJlZi0+e0RlZmluaXRpb25S
ZWZ9LAogICAgICAgIFhNTERhdGEgICAgICAgPT4gJEN1cnJlbnRWZXJzaW9uUmVmLT57WE1MRGF0
YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0sCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25EYXRhVXBk
YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQg
c3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERhdGF9OwogICAgcmV0dXJuIGlmIHJlZiAk
UGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5p
dGlvbn07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVkn
OwoKICAgIG15ICRGb3JtRGF0YSA9IHt9OwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKCBA
eyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBteSAkQ291bnRlckluc2VydCA9
IDE7CgogICAgICAgIENPVU5URVI6CiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkSXRl
bS0+e0NvdW50TWF4fSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGlucHV0a2V5IGFuZCBhZGRr
ZXkKICAgICAgICAgICAgbXkgJElucHV0S2V5ID0gJEl0ZW0tPntLZXl9IC4gJzo6JyAuICRDb3Vu
dGVyOwogICAgICAgICAgICBpZiAoICRQYXJhbXtQcmVmaXh9ICkgewogICAgICAgICAgICAgICAg
JElucHV0S2V5ID0gJFBhcmFte1ByZWZpeH0gLiAnOjonIC4gJElucHV0S2V5OwogICAgICAgICAg
ICB9CgogICAgICAgICAgICAjZ2V0IGNvbnRlbnQuLi4KICAgICAgICAgICAgbXkgJENvbnRlbnQg
PSAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlsxXS0+e0NvbnRlbnR9IHx8ICcn
OwoKICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAg
ICAgICAgICBpZiAoICRJdGVtLT57U3VifSApIHsKICAgICAgICAgICAgICAgIG15ICRTdWJGb3Jt
RGF0YSA9ICRTZWxmLT5WZXJzaW9uRGF0YVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBYTUxE
ZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAg
ICAgID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WzFdLAogICAgICAgICAg
ICAgICAgICAgIFByZWZpeCAgICAgICAgPT4gJElucHV0S2V5LAogICAgICAgICAgICAgICAgKTsK
ICAgICAgICAgICAgICAgICRGb3JtRGF0YS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVySW5z
ZXJ0XSA9ICRTdWJGb3JtRGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEZvcm1EYXRh
LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJJbnNlcnRdLT57Q29udGVudH0gPSAkQ29udGVu
dDsKICAgICAgICAgICAgJENvdW50ZXJJbnNlcnQrKzsKCiAgICAgICAgfQogICAgfQoKICAgIHJl
dHVybiAkRm9ybURhdGE7Cn0KCj1pdGVtIFNldEF0dHJpYnV0ZUNvbnRlbnRzQnlLZXkoKQoKICAg
IFNldHMgdGhlIGNvbnRlbnQgb2YgdGhlIHNwZWNpZmllZCBrZXluYW1lIGluIHRoZSBYTUwgZGF0
YSBoYXNoLgoKICAgICRDb25maWdJdGVtT2JqZWN0LT5TZXRBdHRyaWJ1dGVDb250ZW50c0J5S2V5
KAogICAgICAgIEtleU5hbWUgICAgICAgPT4gJ0xvY2F0aW9uJywKICAgICAgICBOZXdDb250ZW50
ICAgID0+ICRSZXRpcmVDSUxvY2F0aW9uSUQsCiAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkTmV3
VmVyc2lvbkRhdGEsCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkVXNlZFZlcnNpb24sCiAgICAp
OwoKPWN1dAoKc3ViIFNldEF0dHJpYnV0ZUNvbnRlbnRzQnlLZXkgewogICAgbXkgKCAkU2VsZiwg
JVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtcy4uLgogICAgaWYgKAog
ICAgICAgICEkUGFyYW17S2V5TmFtZX0KICAgICAgICB8fAogICAgICAgICFsZW5ndGgoICRQYXJh
bXtOZXdDb250ZW50fSApIHx8CiAgICAgICAgKCAhJFBhcmFte1hNTERhdGF9ICkgfHwKICAgICAg
ICAoICEkUGFyYW17WE1MRGVmaW5pdGlvbn0gKSB8fAogICAgICAgICggcmVmICRQYXJhbXtYTUxE
YXRhfSBuZSAnSEFTSCcgKSB8fAogICAgICAgICggcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBu
ZSAnQVJSQVknICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAg
SVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoK
ICAgICAgICBDT1VOVEVSOgogICAgICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gJEl0ZW0tPntD
b3VudE1heH0gKSB7CgogICAgICAgICAgICAjIG5vIGNvbnRlbnQgdGhlbiBzdG9wIGxvb3AuLi4K
ICAgICAgICAgICAgbGFzdCBDT1VOVEVSIGlmICFkZWZpbmVkICRQYXJhbXtYTUxEYXRhfS0+eyAk
SXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9OwoKICAgICAgICAgICAgIyBnZXQg
dGhlIHZhbHVlLi4uCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntLZXl9IGVxICRQYXJhbXtLZXlO
YW1lfSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0g
fS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9ID0gJFBhcmFte05ld0NvbnRlbnR9OwogICAgICAgICAg
ICB9CgogICAgICAgICAgICBuZXh0IENPVU5URVIgaWYgISRJdGVtLT57U3VifTsKCiAgICAgICAg
ICAgICNyZWN1cnNlIGlmIHN1YnNlY3Rpb24gYXZhaWxhYmxlLi4uCiAgICAgICAgICAgIG15ICRT
dWJSZXN1bHQgPSAkU2VsZi0+U2V0QXR0cmlidXRlQ29udGVudHNCeUtleSgKICAgICAgICAgICAg
ICAgIEtleU5hbWUgICAgICAgPT4gJFBhcmFte0tleU5hbWV9LAogICAgICAgICAgICAgICAgTmV3
Q29udGVudCAgICA9PiAkUGFyYW17TmV3Q29udGVudH0sCiAgICAgICAgICAgICAgICBYTUxEZWZp
bml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4g
JFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLAogICAgICAgICAg
ICApOwoKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCiMgRU8gY2FwZUlUCiMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9O
UwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJz
Lm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFku
IEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBp
bmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUg
aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dA==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFn
ZS5wbSAtIGxpYiBmb3IgYXR0YWNobWVudCBtYW5hZ2VtZW50CiMgQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVu
L2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFu
bmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogRG9yb3RoZWEoZG90KURvZXJm
ZmVsKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZS1pdChk
b3QpZGUKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2UucG0sdiAxLjE0IDIwMTYvMDUvMTgg
MDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xV
VEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENP
UFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJl
Y2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0
LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRh
Y2htZW50U3RvcmFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNl
NjQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKdXNlIEVuY29kZSBxdyhlbmNvZGVfdXRm
OCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAg
ICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJywKICAg
ICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicKKTsKCj1o
ZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVu
dFN0b3JhZ2UgLSBzdGQuIGF0dGFjaG1lbnQgbGliCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBhdHRh
Y2htZW50IHN0b3JhZ2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVy
IDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgc3RkLiBhdHRhY2htZW50IG9iamVjdAoKICAg
IHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9N
ID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1l
bnRTdG9yYWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNJQXR0
YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAg
IG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Ig
b2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAg
ICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmln
Jyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5H
ZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9
ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57TWFp
bk9iamVjdH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7Cgog
ICAgIyBnZXQgY29uZmlndXJlZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBteSAkQmFja2VuZFJl
ZiA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdBdHRhY2htZW50U3RvcmFnZTo6U3RvcmFn
ZUJhY2tlbmRNb2R1bGVzJyk7CiAgICBpZiAoICEoIHJlZigkQmFja2VuZFJlZikgZXEgJ0hBU0gn
ICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICNyZXRyaWV2ZSByZXF1aXJlZCBzdG9y
YWdlIGJhY2tlbmQgbW9kdWxlcy4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgZGlzdGluY3Qoc3Rv
cmFnZV9iYWNrZW5kKSBGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5IjsKICAgIGlmICggJFNlbGYt
PntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICkgKSB7CiAgICAgICAgd2hpbGUgKCBt
eSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAg
ICAgICRCYWNrZW5kUmVmLT57ICREYXRhWzBdIH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAj
bG9hZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBmb3IgbXkgJEN1cnJLZXkgKCBrZXlzKCAleyRC
YWNrZW5kUmVmfSApICkgewogICAgICAgIGlmICggJEJhY2tlbmRSZWYtPnskQ3VycktleX0gJiYg
JFNlbGYtPntNYWluT2JqZWN0fS0+UmVxdWlyZSgkQ3VycktleSkgKSB7CiAgICAgICAgICAgICRT
ZWxmLT57JEN1cnJLZXl9ID0gJEtlcm5lbDo6T00tPkdldCgkQ3VycktleSk7CiAgICAgICAgfQog
ICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VHZXREaXJl
Y3RvcnkoKQoKZ2V0IGFuIGF0dGFjaG1lbnQgLSByZXR1cm5zIGF0dGFjaG1lbnQgZGlyZWN0b3J5
IGVudHJ5IHdpdGhvdXQgYXR0YWNobWVudCBjb250ZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNo
bWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0RGlyZWN0b3J5KAogICAgICAg
IElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3Rv
cnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7Cgog
ICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAg
ICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJy
b3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAg
IHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0
IGF0dGFjaG1lbnQgZGlyZWN0b3J5CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg
ICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggSUQpKSB7CiAgICAgICAgJFBhcmFteyRf
fSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAg
ICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIHN0b3JhZ2Vf
YmFja2VuZCwgZmlsZV9wYXRoLCAiIC4KICAgICAgICAiZmlsZV9uYW1lICIgLgogICAgICAgICJG
Uk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5ICIgLgogICAgICAgICJXSEVSRSBpZD0kUGFyYW17SUR9
IjsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwK
ICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJv
d0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIEF0dERpcklEICAgICAg
ID0+ICREYXRhWzBdLAogICAgICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAkRGF0YVsxXSwKICAg
ICAgICAgICAgRmlsZVBhdGggICAgICAgPT4gJERhdGFbMl0sCiAgICAgICAgICAgIEZpbGVOYW1l
ICAgICAgID0+ICREYXRhWzNdLAogICAgICAgICk7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5IHBy
ZWZlcmVuY2VzCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAg
ICNidWlsZCBzcWwuLi4KICAgICRTUUwgPSAiU0VMRUNUIHByZWZlcmVuY2VzX2tleSwgcHJlZmVy
ZW5jZXNfdmFsdWUgIiAuCiAgICAgICAgIkZST00gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMg
IiAuCiAgICAgICAgIldIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkPSRQYXJhbXtJRH0iOwoK
ICAgICRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAg
KTsKCiAgICBteSAlUHJlZmVyZW5jZXM7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57
REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFByZWZlcmVuY2VzeyAkRGF0
YVswXSB9ID0gJERhdGFbMV07CiAgICB9CgogICAgI2FkZCBwcmVmZXJlbmNlcwogICAgJERhdGF7
UHJlZmVyZW5jZXN9ID0gXCVQcmVmZXJlbmNlczsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVt
IEF0dGFjaG1lbnRTdG9yYWdlR2V0KCkKCmdldCBhbiBhdHRhY2htZW50CgogICAgbXkgJURhdGEg
PSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0KAogICAgICAg
IElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXQgewogICAg
bXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNr
IHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxm
LT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAg
ICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybiBc
JURhdGE7CiAgICB9CgogICAgI2dldCBkaXJlY3RvcnkgZGF0YS4uLgogICAgJURhdGEgPSAkU2Vs
Zi0+QXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoIElEID0+ICRQYXJhbXtJRH0gKTsKCiAg
ICBpZiAoICFkZWZpbmVkKCAkRGF0YXtBdHREaXJJRH0gKSApIHsKICAgICAgICAkU2VsZi0+e0xv
Z09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAg
ICAgTWVzc2FnZSA9PiAiTm8gYXR0YWNobWVudCB3aXRoIHRoaXMgSUQgZXhpc3RzISIKICAgICAg
ICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCB0aGUgYWN0dWFsIGF0
dGFjaG1lbnQuLi4KICAgIG15ICRBdHRhY2htZW50UmVmID0gJFNlbGYtPnsgJERhdGF7U3RvcmFn
ZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEF0dERp
cklEID0+ICREYXRhe0F0dERpcklEfSwKICAgICk7CgogICAgIyREYXRhe0NvbnRlbnRUeXBlfSA9
ICRBdHRhY2htZW50UmVmLT57RGF0YVR5cGV9OwoKICAgICMgZ2V0IENvbnRlbnRSZWYgZm9yIERC
IGJhY2tlbmQKICAgIGlmICggJEF0dGFjaG1lbnRSZWYtPntEYXRhUmVmfSApIHsKICAgICAgICAk
RGF0YXtDb250ZW50UmVmfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVJlZn07CiAgICB9CgogICAg
IyBnZXQgQ29udGVudFJlZiBmb3IgRlMgYmFja2VuZAogICAgZWxzaWYgKCBleGlzdHMoICRBdHRh
Y2htZW50UmVmLT57RGF0YX0gKSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9IFwkQXR0
YWNobWVudFJlZi0+e0RhdGF9OwogICAgfQoKICAgICRBdHRhY2htZW50UmVmID0gdW5kZWY7CiAg
ICAkQXR0YWNobWVudFJlZiA9IHt9OwoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtICBBdHRh
Y2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKCkKCmdldCB0aGUgYXR0YWNobWVudCdzIHNp
emUgb24gZGlzayBhbmQgdGhlIG1kNXN1bQoKICAgIG15ICVEYXRhID0gJEF0dGFjaG1lbnRTdG9y
YWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0
dERpcklEICAgICAgPT4gJEF0dERpcklELAogICAgICAgU3RvcmFnZUJhY2tlbmQgPT4gIktlcm5l
bDo6U3lzdGVtOjpBdHRhY2htZW50U3RvcmFnZURCIiwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNo
bWVudFN0b3JhZ2VHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICMgY2hlY2sgcmVxdWlyZWQgc3R1ZmYu
Li4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtTdG9yYWdlQmFja2VuZH0g
KSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5
ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEF0dERpcklEIGFuZCBT
dG9yYWdlQmFja2VuZCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVz
OwogICAgfQoKICAgICMgZ2V0IHRoZSBhY3R1YWwgYXR0YWNobWVudCBwcm9wZXJ0aWVzLi4uCiAg
ICAlUmVhbFByb3BlcnRpZXMgPSAkU2VsZi0+eyAkUGFyYW17U3RvcmFnZUJhY2tlbmR9IH0tPkF0
dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygKICAgICAgICBBdHREaXJJRCA9PiAkUGFyYW17QXR0
RGlySUR9LAogICAgKTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9Cgo9aXRlbSBBdHRh
Y2htZW50U3RvcmFnZUFkZCgpCgpjcmVhdGUgYSBuZXcgYXR0YWNobWVudCBkaXJlY3RvcnkgZW50
cnkgYW5kIHdyaXRlIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBiYWNrZW5kCgogICAgbXkg
JElEID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUFkZCgKICAg
ICAgICBTdG9yYWdlQmFja2VuZCA9PiAnS2VybmVsOjpTeXN0ZW06OkF0dGFjaG1lbnRTdG9yYWdl
REInLAogICAgICAgIERhdGFSZWYgPT4gJFNvbWVDb250ZW50UmVmZXJlbmNlLAogICAgICAgIEZp
bGVOYW1lID0+ICdTb21lRmlsZU5hbWUuemlwJywKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAg
ICAgIFByZWZlcmVuY2VzICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVHlw
ZSAgICAgICAgICAgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNv
bWVDdXN0b21QYXJhbXMgICA9PiAnd2l0aCBvdXIgb3duIHZhbHVlJywKICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50U3RvcmFnZUFkZCB7CiAgICBt
eSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJElEICAgICA9IDA7CiAgICBteSAkTUQ1
c3VtID0gJyc7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBmb3JlYWNoIChxdyhE
YXRhUmVmIEZpbGVOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewog
ICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9y
aXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkICRfISIKICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAo
ICEoICRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSApIHsKICAgICAgICAkUGFyYW17U3RvcmFnZUJh
Y2tlbmR9ID0KICAgICAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1l
bnRTdG9yYWdlOjpEZWZhdWx0U3RvcmFnZUJhY2tlbmRNb2R1bGUnKTsKICAgIH0KCiAgICAjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgICMgKDEpIGNyZWF0ZSBhdHRhY2htZW50IGRpcmVjdG9yeSBlbnRyeS4uLgogICAg
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIFN0b3JhZ2VCYWNr
ZW5kIEZpbGVOYW1lKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+
UXVvdGUoICRQYXJhbXskX30gKTsKICAgIH0KICAgIGZvcmVhY2ggKHF3KCBVc2VySUQgKSkgewog
ICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30s
ICdJbnRlZ2VyJyApOwogICAgfQoKICAgICNidWlsZCBzcWwuLi4KICAgIG15ICRTUUwgPSAiSU5T
RVJUIElOVE8gYXR0YWNobWVudF9kaXJlY3RvcnkgKCIgLgogICAgICAgICIgc3RvcmFnZV9iYWNr
ZW5kLCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCwgZmlsZV9uYW1lLCAgIiAuCiAgICAgICAgIiBj
cmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KSAiIC4KICAgICAg
ICAiIFZBTFVFUyAoIiAuCiAgICAgICAgIiAnJFBhcmFte1N0b3JhZ2VCYWNrZW5kfScsICIgLgog
ICAgICAgICIgJycsICckUGFyYW17RmlsZU5hbWV9JywgIiAuCiAgICAgICAgIiBjdXJyZW50X3Rp
bWVzdGFtcCwgJFBhcmFte1VzZXJJRH0sIGN1cnJlbnRfdGltZXN0YW1wLCAkUGFyYW17VXNlcklE
fSkiOwoKICAgICNydW4gU1FMLi4uCiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT5EbyggU1FM
ID0+ICRTUUwgKSApIHsKCiAgICAgICAgIy4uLmFuZCBnZXQgdGhlIElELi4uCiAgICAgICAgJFNl
bGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIG1heChp
ZCkgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSBXSEVSRSAiIC4KICAgICAgICAgICAgICAgICJm
aWxlX25hbWUgPSAnJFBhcmFte0ZpbGVOYW1lfScgQU5EICIgLgogICAgICAgICAgICAgICAgInN0
b3JhZ2VfYmFja2VuZCA9ICckUGFyYW17U3RvcmFnZUJhY2tlbmR9JyBBTkQgIiAuCiAgICAgICAg
ICAgICAgICAiY3JlYXRlX2J5ID0gJFBhcmFte1VzZXJJRH0iLAogICAgICAgICk7CiAgICAgICAg
d2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsK
ICAgICAgICAgICAgJElEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgfQogICAgZWxzZSB7CiAg
ICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdl
cnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBOT1QgaW5zZXJ0IGF0dGFjaG1l
bnQgaW4gYXR0YWNobWVudCBkaXJlY3RvcnkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsK
ICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDIpIHNhdmUgYXR0YWNobWVudCBkaXJlY3Rvcnkg
cHJlZmVyZW5jZXMgLi4uCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAjIG1kNXN1bSBjYWxjdWxhdGlvbgog
ICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICR7ICRQYXJhbXtEYXRhUmVm
fSB9ICk7CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57TUQ1U3VtfSA9IG1kNV9oZXgoICR7ICRQ
YXJhbXtEYXRhUmVmfSB9ICk7CgogICAgIyBzaXplIGNhbGN1bGF0aW9uCiAgICAkUGFyYW17UHJl
ZmVyZW5jZXN9LT57RmlsZVNpemVCeXRlc30gPSBieXRlczo6bGVuZ3RoKCAkeyAkUGFyYW17RGF0
YVJlZn0gfSApOwoKICAgIG15ICRGaWxlU2l6ZSA9ICRQYXJhbXtQcmVmZXJlbmNlc30tPntGaWxl
U2l6ZUJ5dGVzfTsKICAgIGlmICggJEZpbGVTaXplID4gKCAxMDI0ICogMTAyNCApICkgewogICAg
ICAgICRGaWxlU2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZVNpemUgLyAoIDEw
MjQgKiAxMDI0ICkgKTsKICAgIH0KICAgIGVsc2lmICggJEZpbGVTaXplID4gMTAyNCApIHsKICAg
ICAgICAkRmlsZVNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggJEZpbGVTaXplIC8gMTAy
NCApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpbGVTaXplID0gJEZpbGVTaXplIC4gJyBC
eXRlcyc7CiAgICB9CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemV9ID0gJEZpbGVT
aXplOwoKICAgICMgaW5zZXJ0IHByZWZlcmVuY2VzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5
cyAleyAkUGFyYW17UHJlZmVyZW5jZXN9IH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+
e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gYXR0YWNobWVu
dF9kaXJfcHJlZmVyZW5jZXMgJwogICAgICAgICAgICAgICAgLiAnKGF0dGFjaG1lbnRfZGlyZWN0
b3J5X2lkLCBwcmVmZXJlbmNlc19rZXksIHByZWZlcmVuY2VzX3ZhbHVlKSBWQUxVRVMgKCA/LCA/
LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJElELCBcJEtleSwgXCRQYXJhbXtQcmVmZXJl
bmNlc30tPnskS2V5fSBdLAogICAgICAgICk7CgogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyAo
MykgY3JlYXRlIGF0dGFjaG1lbnQgc3RvcmFnZSBlbnRyeSAoID0gc2F2ZSBmaWxlKS4uLgogICAg
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCgogICAgbXkgJEF0dElEID0gJFNlbGYtPnsgJFBhcmFte1N0b3JhZ2VCYWNrZW5k
fSB9LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+ICRJRCwKICAgICAgICBEYXRh
UmVmICA9PiAkUGFyYW17RGF0YVJlZn0sCiAgICApOwoKICAgIGlmICggISRBdHRJRCApIHsKICAg
ICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vy
cm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCBzdG9yZSBhdHRhY2htZW50
IGluIHN0b3JhZ2UgKCRQYXJhbXtTdG9yYWdlQmFja2VuZH0pISIsCiAgICAgICAgKTsKICAgICAg
ICByZXR1cm47CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjICg0KSB1cGRhdGUgYXR0YWNobWVu
dCBkaXJlY3RvcnkgKGkuZS4gZmlsZSBwYXRoKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJEF0dElE
ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCRBdHRJRCk7CiAgICAkU1FMICAgPSAiVVBEQVRF
IGF0dGFjaG1lbnRfZGlyZWN0b3J5IFNFVCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCA9ICckQXR0
SUQnICIgLgogICAgICAgICIgV0hFUkUgaWQgPSAkSUQiOwoKICAgIGlmICggJFNlbGYtPntEQk9i
amVjdH0tPkRvKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAg
ICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJp
b3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCB1cGRh
dGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKElEPSRJRCwgZmlsZV9wYXRoPSRBdHRJRCkhIiwKICAg
ICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VT
ZWFyY2goKQoKcmV0dXJucyBhdHRhY2htZW50IGRpcmVjdG9yeSBJRHMgZm9yIHRoZSBnaXZlbiBG
aWxlTmFtZQoKICAgIG15IEBEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2ht
ZW50U3RvcmFnZVNlYXJjaCgKICAgICAgICBGaWxlTmFtZSA9PiAnU29tZUZpbGVOYW1lLnppcCcs
CiAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMSwgKDEgfHwgMCwgb3B0aW9uYWwpCiAgICApOwoK
PWN1dAoKc3ViIEF0dGFjaG1lbnRTdG9yYWdlU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJh
bSApID0gQF87CiAgICBteSBAUmVzdWx0ID0gKCk7CiAgICBteSAkV0hFUkUgID0gIihpZCA+IDAp
IjsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtGaWxlTmFt
ZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9y
aXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEZpbGVOYW1lISIK
ICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjZGIgcXVvdGluZy4uLgogICAg
Zm9yZWFjaCAocXcoIEZpbGVOYW1lICkpIHsKICAgICAgICBpZiAoIGRlZmluZWQoICRQYXJhbXsk
X30gKSAmJiAoICRQYXJhbXskX30gKSApIHsKICAgICAgICAgICAgJFBhcmFteyRffSA9ICRTZWxm
LT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSApOwogICAgICAgIH0KICAgIH0KCiAgICAj
YnVpbGQgV0hFUkUtY2xhdXNlLi4uCiAgICBpZiAoICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gKSB7
CiAgICAgICAgJFdIRVJFIC49ICIgQU5EIChmaWxlX25hbWUgTElLRSAnJFBhcmFte0ZpbGVOYW1l
fScpIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRXSEVSRSAuPSAiIEFORCAoZmlsZV9uYW1l
ID0gJyRQYXJhbXtGaWxlTmFtZX0nKSI7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkg
JFNRTCA9ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiIC4KICAgICAgICAi
V0hFUkUgIiAuICRXSEVSRTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAg
ICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJP
YmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCggQFJlc3VsdCwgJERhdGFb
MF0gKTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVS
TVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9q
ZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVU
RUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJ
TkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZl
IHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1j
dXQ=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFn
ZUZTLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGZpbGUgc3lzdGVtCiMgQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3
cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUK
IyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8oZG90KUls
bGluZ2VyKGF0KWNhcGUtaXQoZG90KWRlCiMgLS0KIyAkSWQ6IEF0dGFjaG1lbnRTdG9yYWdlRlMu
cG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3
YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQoj
IHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwp
LiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUu
b3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0
dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTOwoKdXNlIHN0cmljdDsKdXNlIHdh
cm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NDsKdXNlIEZpbGU6OnN0YXQ7CnVzZSBEaWdlc3Q6Ok1E
NSBxdyhtZDVfaGV4KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6
Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpF
bmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVs
OjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlRlMKCj1oZWFk
MSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZmlsZSBzeXN0ZW0g
YmFja2VuZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBu
ZXcoKQoKY3JlYXRlIEF0dGFjaG1lbnRTdG9yYWdlRlMgb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6
U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5
c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQXR0YWNobWVudE9iamVjdCA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRh
Y2htZW50U3RvcmFnZUZTJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJh
bSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2Vs
ZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2Jq
ZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RC
T2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAg
ICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVt
OjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQo
J0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFj
aG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRB
dHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywK
ICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRh
Y2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkcmV0VmFs
ID0gMTsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGZvcmVhY2ggKHF3KEF0dERp
cklEIERhdGFSZWYpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAg
JFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4g
Ik5lZWQgJF8hIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICNi
dWlsZCBhdHRhY2htZW50IGRhdGEgZmlsZSBwYXRoLi4uCiAgICAkcmV0VmFsID0gJFNlbGYtPntD
b25maWdPYmplY3R9LT5HZXQoJ0hvbWUnKSAuCiAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9
LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlRlM6OlN0b3JhZ2VEaXJlY3RvcnknKTsKCiAgICAjY2hl
Y2sgaWYgZGVzdGluYXRpb24gcGF0aCBleGlzdHMuLi4KICAgIGlmICggIS1kICRyZXRWYWwgKSB7
CiAgICAgICAgaWYgKCAhRmlsZTo6UGF0aDo6bWtwYXRoKCBbJHJldFZhbF0sIDAsIDA3NzUgKSAp
IHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQ
cmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAg
ICAgICAgICAgICJBdHRhY2htZW50U3RvcmFnZUZTIHBhdGggZG9lcyBub3QgZXhpc3QgbmVpdGhl
ciBJIGNhbiBjcmVhdGUgaXQgKCRyZXRWYWwpOiAkISIKICAgICAgICAgICAgKTsKICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgYXR0YWNobWVudCBkYXRhIGZp
bGUgcGF0aC4uLgogICAgJHJldFZhbCAuPSAiLyIgLiAkUGFyYW17QXR0RGlySUR9IC4gIi5kYXQi
OwoKICAgICN3cml0ZSB0aGUgYXR0YWNobWVudCBkYXRhIGZpbGUuLi4KICAgIGlmICggb3Blbigg
bXkgJERBVEEsICI+IiwgIiRyZXRWYWwiICkgKSB7CiAgICAgICAgYmlubW9kZSgkREFUQSk7CiAg
ICAgICAgcHJpbnQgJERBVEEgJHsgJFBhcmFte0RhdGFSZWZ9IH07CiAgICAgICAgY2xvc2UoJERB
VEEpOwogICAgICAgIHJldHVybiAkcmV0VmFsOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNl
bGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAg
ICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4gTk9UIHdyaXRlIGZpbGUgKCRyZXRWYWwpOiAkISIs
CiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXQo
KQoKcmV0dXJucyBhbiBlbnRyeSBpbiBhdHRhY2htZW50X3N0b3JhZ2UKCiAgICBteSAlRGF0YSA9
ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEF0dERpcklEID0+IDEyMywg
Iyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAg
RmlsZVBhdGggPT4gJy9wYXRoL3RvL3RoZS9hdHRhY2htZW50L2ZpbGUuZGF0JywKICAgICk7Cgo9
Y3V0CgpzdWIgQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwog
ICAgbXkgJURhdGEgICAgID0gKCk7CiAgICBteSAkRmlsZVBhdGggPSAnJzsKCiAgICAjY2hlY2sg
cmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtG
aWxlUGF0aH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+
ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgQXR0RGlySUQgb3IgRmlsZVBhdGghIiApOwogICAg
ICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17RmlsZVBh
dGh9ICkgJiYgJFBhcmFte0ZpbGVQYXRofSApIHsKICAgICAgICAkRmlsZVBhdGggPSAkUGFyYW17
RmlsZVBhdGh9OwogICAgfQoKICAgICNjaGVjayBpZiBQYXJhbUlEIGlzIGRlZmluZWQKICAgIGlm
ICggZGVmaW5lZCggJFBhcmFte0F0dERpcklEfSApICYmICRQYXJhbXtBdHREaXJJRH0gKSB7Cgog
ICAgICAgICNkYiBxdW90aW5nLi4uCiAgICAgICAgZm9yZWFjaCAocXcoIEF0dERpcklEKSkgewog
ICAgICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17
JF99LCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICNidWlsZCBzcWwuLi4KICAgICAg
ICBteSAkU1FMID0gIlNFTEVDVCBmaWxlX3BhdGggRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAi
CiAgICAgICAgICAgIC4gIldIRVJFIGlkPSRQYXJhbXtBdHREaXJJRH0iOwoKICAgICAgICAkU2Vs
Zi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICRTUUwsCiAgICAgICAg
KTsKCiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJv
d0FycmF5KCkgKSB7CiAgICAgICAgICAgICRGaWxlUGF0aCA9ICREYXRhWzBdOwogICAgICAgIH0K
ICAgIH0KCiAgICBpZiAoICEkRmlsZVBhdGggKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9
LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3Nh
Z2UgPT4KICAgICAgICAgICAgICAgICJDb3VsZCBOT1QgZmluZCBmaWxlIHBhdGggZm9yIGdpdmVu
IGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkICgkUGFyYW17QXR0RGlySUR9KSEiCiAgICAgICAgKTsK
ICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNnZXQgdGhlIGF0dGFjaG1lbnQgZGF0
YSBmaWxlLi4uCiAgICBpZiAoIG9wZW4oIG15ICREQVRBLCAiPCIsICRGaWxlUGF0aCApICkgewog
ICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBteSAkRGF0YSAgICA9ICIiOwogICAgICAg
IGJpbm1vZGUoJERBVEEpOwogICAgICAgIHdoaWxlICg8JERBVEE+KSB7CiAgICAgICAgICAgICRE
YXRhIC49ICRfOwogICAgICAgIH0KICAgICAgICBjbG9zZSgkREFUQSk7CgogICAgICAgICMgc2V0
IERhdGFSZWYgcGFyYW0KICAgICAgICAkRGF0YXtEYXRhUmVmfSA9IFwkRGF0YTsKICAgIH0KICAg
IGVsc2UgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlv
cml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IG9wZW4g
JEZpbGVQYXRoOiAkISAhIiwKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9
CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gQXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVz
KCkKCnJldHVybnMgdGhlIHNpemUgb2YgdGhlIGF0dGFjaG1lbnQgaW4gdGhlIHN0b3JhZ2UgYmFj
a2VuZCBhbmQgdGhlIG1kNXN1bS4KCiAgICBteSBSZWFsUHJvcGVydGllcyA9IEF0dGFjaG1lbnRT
dG9yYWdlT2JqZWN0LT5BdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMoCiAgICAgICAgQXR0RGly
SUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpCiAgICApOwoKPWN1dAoK
c3ViIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0g
KSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVm
Zi4uLgogICAgaWYgKCAhJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09i
amVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCBBdHREaXJJ
RCEiICk7CiAgICAgICAgcmV0dXJuICVSZWFsUHJvcGVydGllczsKICAgIH0KCiAgICBteSAkRGF0
YSA9ICRTZWxmLT5BdHRhY2htZW50R2V0KAogICAgICAgIEF0dERpcklEID0+ICRQYXJhbXtBdHRE
aXJJRH0KICAgICk7CgogICAgbXkgJFJlYWxGaWxlU2l6ZSA9IDA7CiAgICBteSAkUmVhbE1ENVN1
bSAgID0gJyc7CgogICAgaWYgKGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSkgewog
ICAgICAgIG15ICRDb250ZW50ID0gJHsgJERhdGEtPntEYXRhUmVmfSB9OwogICAgICAgICRTZWxm
LT57RW5jb2RlT2JqZWN0fS0+RW5jb2RlT3V0cHV0KCBcJENvbnRlbnQgKTsKCiAgICAgICAgJFJl
YWxGaWxlU2l6ZSA9IGJ5dGVzOjpsZW5ndGgoJENvbnRlbnQpOwogICAgICAgICRSZWFsTUQ1U3Vt
ICAgPSBtZDVfaGV4KCRDb250ZW50KTsKICAgIH0KCiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbEZp
bGVTaXplfSA9ICRSZWFsRmlsZVNpemU7CiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbE1ENVN1bX0g
ICA9ICRSZWFsTUQ1U3VtOwoKICAgIHJldHVybiAlUmVhbFByb3BlcnRpZXM7Cn0KCjE7Cgo9YmFj
awoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2Yg
dGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVz
IHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9z
ZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRp
ZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv
YWdwbC50eHQuCgo9Y3V0
IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFn
ZURCLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGxvY2FsIGRhdGEgYmFzZQojIENvcHlyaWdo
dCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQoj
CiMgd3JpdHRlbi9lZGl0ZWQgYnk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90
KWRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90
KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0
KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gp
aXQoZG90KWRlCiMKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2VEQi5wbSx2IDEuMTEgMjAx
Ni8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0
aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2Vk
IGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRp
ZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv
YWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3Jh
Z2U6OkF0dGFjaG1lbnRTdG9yYWdlREI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2Ug
TUlNRTo6QmFzZTY0Owp1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2hleCk7CgpvdXIgQE9iamVjdERl
cGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lz
dGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoK
S2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREIK
Cj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZGF0YSBi
YXNlIGJhY2tlbmQgLSBsb2NhbCwgT1RSUy1kYXRhIGJhc2UuCgo9aGVhZDEgUFVCTElDIElOVEVS
RkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBBdHRhY2htZW50U3RvcmFn
ZURCIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxv
Y2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwog
ICAgbXkgJEF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3Rl
bTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2VEQicpOwoKPWN1dAoKc3Vi
IG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3
IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5
cGUgKTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJu
ZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9N
LT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAg
ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4g
JFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNo
bWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAg
ICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAog
ICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSAp
ID0gQF87CiAgICBteSAkSUQgPSAwOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAg
Zm9yZWFjaCAocXcoQXR0RGlySUQgRGF0YVJlZikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99
ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vy
cm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICB9CiAgICB9CgogICAgI2VuY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJh
Y2tlbmQuLi4KICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5HZXREYXRhYmFzZUZ1bmN0aW9u
KCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVP
dXRwdXQoICRQYXJhbXtEYXRhUmVmfSApOwoKICAgICAgICAjb3ZlcndyaXRlIGV4aXN0aW5nIHZh
bHVlIGluc3RlYWQgb2YgdXNpbmcgYW5vdGhlciBmaWxlc2l6ZSBvZiBtZW1vcnkuLi4KICAgICAg
ICAkeyAkUGFyYW17RGF0YVJlZn0gfSA9IGVuY29kZV9iYXNlNjQoICR7ICRQYXJhbXtEYXRhUmVm
fSB9ICk7CiAgICB9CgogICAgI2RiIHF1b3RpbmcuLi4KICAgIGZvcmVhY2ggKHF3KCBBdHREaXJJ
RCkpIHsKICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFy
YW17JF99LCAnSW50ZWdlcicgKTsKICAgIH0KCiAgICAjYnVpbGQgc3FsLi4uCiAgICBteSAkU1FM
ID0gIiI7CiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT57QmFja2VuZH0tPnsnREI6OlR5cGUn
fSA9fiAvb3JhY2xlLyApIHsKICAgICAgICAkU1FMID0gIklOU0VSVCBJTlRPIGF0dGFjaG1lbnRf
c3RvcmFnZSAiIC4KICAgICAgICAgICAgIiAoYXR0YWNobWVudF9kaXJlY3RvcnlfaWQsIGRhdGEp
ICIgLgogICAgICAgICAgICAiIFZBTFVFUyAiIC4KICAgICAgICAgICAgIiAoICRQYXJhbXtBdHRE
aXJJRH0sIEVNUFRZX0NMT0IoKSkiOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTUUwgPSAi
SU5TRVJUIElOVE8gYXR0YWNobWVudF9zdG9yYWdlICIgLgogICAgICAgICAgICAiIChhdHRhY2ht
ZW50X2RpcmVjdG9yeV9pZCwgZGF0YSkgIiAuCiAgICAgICAgICAgICIgVkFMVUVTICIgLgogICAg
ICAgICAgICAiICggJFBhcmFte0F0dERpcklEfSwgPykiOwogICAgfQoKICAgICNydW4gc3FsLi4u
CiAgICBteSAkRG9SZXN1bHQgPSAwOwogICAgJERvUmVzdWx0ID0gJFNlbGYtPntEQk9iamVjdH0t
PkRvKAogICAgICAgIFNRTCA9PiAkU1FMLCBCaW5kID0+IFsgJFBhcmFte0RhdGFSZWZ9IF0sICAg
ICMgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBpZiAoJERvUmVzdWx0
KSB7CgogICAgICAgICNyZXR1cm4gSUQuLi4KICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJl
cGFyZSgKICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X3N0b3Jh
Z2UgV0hFUkUgIiAuCiAgICAgICAgICAgICAgICAiYXR0YWNobWVudF9kaXJlY3RvcnlfaWQgPSAk
UGFyYW17QXR0RGlySUR9IiwKICAgICAgICApOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRT
ZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRJRCA9ICRS
b3dbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAg
ICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vy
cm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiRmFpbGVkIHRvIGluc2VydCBhdHRhY2htZW50
IGRhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQp9Cgo9aXRlbSBBdHRhY2ht
ZW50R2V0KCkKCnJldHVybnMgYW4gZW50cnkgaW4gYXR0YWNobWVudF9zdG9yYWdlCgogICAgbXkg
JURhdGEgPSAkQXR0YWNobWVudE9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJRCA9PiAx
MjMsICMoc29tZSBhdHRhY2htZW50IHN0b3JhZ2UgaWQpCiAgICAgICAgIyAuLi5PUi4uLgogICAg
ICAgIEF0dERpcklEID0+IDEyMyAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpLAogICAg
KTsKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKICAgIG15ICVEYXRhICA9ICgpOwogICAgbXkgJFdIRVJFID0gIiI7CgogICAgI2NoZWNrIHJl
cXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICYmICEkUGFyYW17QXR0RGlySUR9
ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3In
LCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEIG9yIElEISIgKTsKICAgICAgICByZXR1cm4gXCVE
YXRhOwogICAgfQoKICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggQXR0RGlySUQg
SUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBh
cmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgaWYgKCBk
ZWZpbmVkKCAkUGFyYW17QXR0RGlySUR9ICkgJiYgJFBhcmFte0F0dERpcklEfSApIHsKICAgICAg
ICAkV0hFUkUgPSAiIFdIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkID0gJFBhcmFte0F0dERp
cklEfSI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGlkID0gJFBh
cmFte0lEfSI7CiAgICB9CgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIGF0dGFjaG1lbnRfZGly
ZWN0b3J5X2lkIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgaWYgKCAh
JFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMLCBFbmNvZGUgPT4gWyAwLCAw
LCAxIF0gKSApIHsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgIG15IEBEYXRhID0g
JFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICBpZiAoQERhdGEpIHsKICAg
ICAgICBteSAkU1FMID0gIlNFTEVDVCBkYXRhIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAk
V0hFUkU7CgogICAgICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKCBTUUwgPT4g
JFNRTCApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAg
ICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAi
RmFpbGVkIHRvIHByZXBhcmUgU1FMIGZvciBGZXRjaHJvd0FycmF5ISIKICAgICAgICAgICAgKTsK
ICAgICAgICAgICAgcmV0dXJuIFwlRGF0YTsKICAgICAgICB9CgogICAgICAgIG15IEBBdHRhY2hE
YXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICAgICAgbXkgJEF0
dGFjaERhdGFSZWYgPSBcJEF0dGFjaERhdGFbMF07CgogICAgICAgIGlmICggISRBdHRhY2hEYXRh
UmVmICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAg
ICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFp
bGVkIHRvIEZldGNocm93QXJyYXkhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4g
XCVEYXRhOwogICAgICAgIH0KCiAgICAgICAgI2RlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBw
b3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgICAgICBpZiAoICEkU2VsZi0+e0RCT2JqZWN0fS0+R2V0
RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICAgICAkeyRBdHRhY2hE
YXRhUmVmfSA9IGRlY29kZV9iYXNlNjQoICR7JEF0dGFjaERhdGFSZWZ9ICk7CiAgICAgICAgfQoK
ICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgSUQgICAgICAgPT4gJERhdGFbMF0sCiAgICAg
ICAgICAgIEF0dERpcklEID0+ICREYXRhWzFdLAoKICAgICAgICAgICAgRGF0YVJlZiA9PiAkQXR0
YWNoRGF0YVJlZiwKICAgICAgICApOwoKICAgICAgICAkQXR0YWNoRGF0YVJlZiA9IHVuZGVmOwog
ICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVy
dGllcygpCgpyZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBhdHRhY2htZW50IGluIHRoZSBzdG9yYWdl
IGJhY2tlbmQgYW5kIHRoZSBtZDVzdW0uCgogICAgbXkgUmVhbFByb3BlcnRpZXMgPSBBdHRhY2ht
ZW50U3RvcmFnZU9iamVjdC0+QXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0
dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMu
Lk9SLi4uCiAgICAgICAgSUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBzdG9yYWdlIGlkKQog
ICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMgewogICAgbXkgKCAk
U2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlUmVhbFByb3BlcnRpZXM7CgogICAgI2NoZWNr
IHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAg
ICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+
ICJOZWVkIEF0dERpcklEISIgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAg
fQoKICAgIG15ICREYXRhID0gJFNlbGYtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgQXR0RGlySUQg
PT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBteSAkUmVhbEZpbGVTaXplID0gMDsKICAg
IG15ICRSZWFsTUQ1U3VtICAgPSAnJzsKCiAgICBpZiAoIGRlZmluZWQgJERhdGEgJiYgJERhdGEt
PntEYXRhUmVmfSApIHsKICAgICAgICBteSAkQ29udGVudCA9ICR7ICREYXRhLT57RGF0YVJlZn0g
fTsKICAgICAgICAkU2VsZi0+e0VuY29kZU9iamVjdH0tPkVuY29kZU91dHB1dCggXCRDb250ZW50
ICk7CgogICAgICAgICRSZWFsRmlsZVNpemUgPSBieXRlczo6bGVuZ3RoKCRDb250ZW50KTsKICAg
ICAgICAkUmVhbE1ENVN1bSAgID0gbWQ1X2hleCgkQ29udGVudCk7CiAgICB9CgogICAgJFJlYWxQ
cm9wZXJ0aWVze1JlYWxGaWxlU2l6ZX0gPSAkUmVhbEZpbGVTaXplOwogICAgJFJlYWxQcm9wZXJ0
aWVze1JlYWxNRDVTdW19ICAgPSAkUmVhbE1ENVN1bTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0
aWVzOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0
d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhp
cyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxz
LCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAo
QUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5n
bnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dA==
Ly8gLS0KLy8gQ29yZS5BZ2VudC5DSUNsYXNzU2VhcmNoLmpzIC0gcHJvdmlkZXMgdGhlIHNwZWNp
YWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIENJIGNsYXNzZXMgc2VhcmNoCi8vIENvcHlyaWdo
dCAoQykgMjAwNi0yMDExIGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQov
LwovLyB3cml0dGVuL2VkaXRlZCBieToKLy8gICBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUo
ZGFzaClpdChkb3QpZGUKLy8gICBNYXJ0aW4oZG90KUJhbHphcmVrKGF0KWNhcGUoZGFzaClpdChk
b3QpZGUKLy8gICBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQovLwov
LyAtLQovLyAkSWQ6IENvcmUuQWdlbnQuQ0lDbGFzc1NlYXJjaC5qcyx2IDEuNiAyMDE1LzA5LzI0
IDA5OjE4OjUyIG1pbGxpbmdlciBFeHAgJAovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdp
dGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9z
ZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8v
IGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z
ZXMvYWdwbC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307
CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4
cG9ydHMgVGFyZ2V0TlMgYXMgQ29yZS5BZ2VudC5DSUNsYXNzU2VhcmNoCiAqIEBkZXNjcmlwdGlv
bgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5j
dGlvbnMgZm9yIHRoZSBDSSBjbGFzc2VzIHNlYXJjaC4KICovCkNvcmUuQWdlbnQuQ0lDbGFzc1Nl
YXJjaCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAg
ICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQgVGhlIGpRdWVyeSBvYmplY3Qgb2Yg
dGhlIGlucHV0IGZpZWxkIHdpdGggYXV0b2NvbXBsZXRlCiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59
IEFjdGl2ZUF1dG9Db21wbGV0ZSBTZXQgdG8gZmFsc2UsIGlmIGF1dG9jb21wbGV0ZSBzaG91bGQg
b25seSBiZSBzdGFydGVkIGJ5IGNsaWNrIG9uIGEgYnV0dG9uIG5leHQgdG8gdGhlIGlucHV0IGZp
ZWxkCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0
aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zCiAgICAgKi8KICAgIFRhcmdldE5T
LkluaXQgPSBmdW5jdGlvbiAoJEVsZW1lbnQsIENsYXNzSUQgLEFjdGl2ZUF1dG9Db21wbGV0ZSkg
ewoKICAgICAgICBpZiAodHlwZW9mIENsYXNzSUQgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAg
ICAgIENsYXNzSUQgPSAkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCRFbGVtZW50LmF0
dHIoJ2lkJykpKS5hdHRyKCdjbGFzc2lkJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAodHlwZW9m
IEFjdGl2ZUF1dG9Db21wbGV0ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgQWN0aXZl
QXV0b0NvbXBsZXRlID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
IEFjdGl2ZUF1dG9Db21wbGV0ZSA9ICEhQWN0aXZlQXV0b0NvbXBsZXRlOwogICAgICAgIH0KCiAg
ICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICAkRWxlbWVu
dC5hdXRvY29tcGxldGUoewogICAgICAgICAgICAgICAgbWluTGVuZ3RoOiBBY3RpdmVBdXRvQ29t
cGxldGUgPyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5NaW5RdWVyeUxlbmd0aCcpIDog
NTAwLAogICAgICAgICAgICAgICAgZGVsYXk6IENvcmUuQ29uZmlnLkdldCgnQXV0b2NvbXBsZXRl
LlF1ZXJ5RGVsYXknKSwKICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24gKFJlcXVlc3Qs
IFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdl
dCgnQmFzZWxpbmsnKSwgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uOiAn
QWdlbnRDSUNsYXNzU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRDogQ2xh
c3NJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVGVybTogUmVxdWVzdC50ZXJtLAogICAgICAg
ICAgICAgICAgICAgICAgICBNYXhSZXN1bHRzOiBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0
ZS5NYXhSZXN1bHRzRGlzcGxheWVkJykKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoVVJMLCBEYXRhLCBmdW5jdGlvbiAoUmVz
dWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBEYXRhID0gW107CiAgICAgICAgICAg
ICAgICAgICAgICAgICQuZWFjaChSZXN1bHQsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGFiZWw6IHRoaXMuQ0lDbGFzc1ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlOiB0aGlzLkNJQ2xhc3NLZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9u
c2UoRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoRXZlbnQsIFVJKSB7CiAgICAgICAgICAgICAg
ICAgICAgdmFyIENJQ2xhc3NLZXkgPSBVSS5pdGVtLnZhbHVlOwoKICAgICAgICAgICAgICAgICAg
ICAkRWxlbWVudC52YWwoVUkuaXRlbS5sYWJlbCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHNl
dCBoaWRkZW4gZmllbGQgU2VsZWN0ZWRRdWV1ZQogICAgICAgICAgICAgICAgICAgICQoJyMnICsg
Q29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoJEVsZW1lbnQuYXR0cignaWQnKSkgKyAnU2VsZWN0ZWQn
KS52YWwoQ0lDbGFzc0tleSk7CgogICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmICghQWN0aXZlQXV0b0NvbXBsZXRlKSB7
CiAgICAgICAgICAgICAgICAkRWxlbWVudC5hZnRlcignPGJ1dHRvbiBpZD0iJyArICRFbGVtZW50
LmF0dHIoJ2lkJykgKyAnU2VhcmNoIiB0eXBlPSJidXR0b24iPicgKyBDb3JlLkNvbmZpZy5HZXQo
J0F1dG9jb21wbGV0ZS5TZWFyY2hCdXR0b25UZXh0JykgKyAnPC9idXR0b24+Jyk7CiAgICAgICAg
ICAgICAgICAkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCRFbGVtZW50LmF0dHIoJ2lk
JykpICsgJ1NlYXJjaCcpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAk
RWxlbWVudC5hdXRvY29tcGxldGUoIm9wdGlvbiIsICJtaW5MZW5ndGgiLCAwKTsKICAgICAgICAg
ICAgICAgICAgICAkRWxlbWVudC5hdXRvY29tcGxldGUoInNlYXJjaCIpOwogICAgICAgICAgICAg
ICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgib3B0aW9uIiwgIm1pbkxlbmd0aCIsIDUwMCk7
CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g
T24gdW5sb2FkIHJlbW92ZSBvbGQgc2VsZWN0ZWQgZGF0YS4gSWYgdGhlIHBhZ2UgaXMgcmVsb2Fk
ZWQgKHdpdGggRjUpIHRoaXMgZGF0YSBzdGF5cyBpbiB0aGUgZmllbGQgYW5kIGludm9rZXMgYW4g
YWpheCByZXF1ZXN0IG90aGVyd2lzZQogICAgICAgICQod2luZG93KS5iaW5kKCd1bmxvYWQnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgJCgnIycgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3Rvcigk
RWxlbWVudC5hdHRyKCdpZCcpKSArICdTZWxlY3RlZCcpLnZhbCgnJyk7CiAgICAgICAgfSk7CiAg
ICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShDb3JlLkFnZW50LkNJQ2xhc3NTZWFyY2ggfHwg
e30pKTsK
Ly8gLS0KLy8gQ29yZS5BZ2VudC5TZXJ2aWNlU2VhcmNoLmpzIC0gcHJvdmlkZXMgdGhlIHNwZWNp
YWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlcnZpY2Ugc2VhcmNoCi8vIENvcHlyaWdodCAo
QykgMjAwNi0yMDExIGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQovLwov
LyB3cml0dGVuL2VkaXRlZCBieToKLy8gICBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUoZGFz
aClpdChkb3QpZGUKLy8gICBNYXJ0aW4oZG90KUJhbHphcmVrKGF0KWNhcGUoZGFzaClpdChkb3Qp
ZGUKLy8KLy8gLS0KLy8gJElkOiBDb3JlLkFnZW50LlNlcnZpY2VTZWFyY2guanMsdiAxLjQgMjAx
Ni8wNS8yNyAxMzoyMzowNiBmamFjcXVlbWluIEV4cCAkCi8vIC0tCi8vIFRoaXMgc29mdHdhcmUg
Y29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCi8vIHRo
ZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJ
ZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9y
Zy9saWNlbnNlcy9hZ3BsLnR4dC4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29y
ZSB8fCB7fTsKQ29yZS5BZ2VudCA9IENvcmUuQWdlbnQgfHwge307CgovKioKICogQG5hbWVzcGFj
ZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBDb3JlLkFnZW50LlNlcnZpY2VTZWFyY2gKICogQGRl
c2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9k
dWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlcnZpY2Ugc2VhcmNoLgogKi8KQ29yZS5BZ2VudC5TZXJ2
aWNlU2VhcmNoID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgLyoqCiAgICAgKiBAZnVuY3Rp
b24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVj
dCBvZiB0aGUgaW5wdXQgZmllbGQgd2l0aCBhdXRvY29tcGxldGUKICAgICAqIEBwYXJhbSB7Qm9v
bGVhbn0gQWN0aXZlQXV0b0NvbXBsZXRlIFNldCB0byBmYWxzZSwgaWYgYXV0b2NvbXBsZXRlIHNo
b3VsZCBvbmx5IGJlIHN0YXJ0ZWQgYnkgY2xpY2sgb24gYSBidXR0b24gbmV4dCB0byB0aGUgaW5w
dXQgZmllbGQKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9u
IGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMKICAgICAqLwogICAgVGFy
Z2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgkRWxlbWVudCwgQWN0aXZlQXV0b0NvbXBsZXRlKSB7CiAg
ICAgICAgdmFyIEZpZWxkSUQgPSAkRWxlbWVudC5hdHRyKCdpZCcpLnJlcGxhY2UoLzovZywgJ1xc
OicpOwoKICAgICAgICBpZiAodHlwZW9mIEFjdGl2ZUF1dG9Db21wbGV0ZSA9PT0gJ3VuZGVmaW5l
ZCcpIHsKICAgICAgICAgICAgQWN0aXZlQXV0b0NvbXBsZXRlID0gdHJ1ZTsKICAgICAgICB9CiAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgIEFjdGl2ZUF1dG9Db21wbGV0ZSA9ICEhQWN0aXZlQXV0
b0NvbXBsZXRlOwogICAgICAgIH0KICAgICAgICBpZiAoaXNKUXVlcnlPYmplY3QoJEVsZW1lbnQp
KSB7CiAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSh7CiAgICAgICAgICAgICAgICBt
aW5MZW5ndGg6IEFjdGl2ZUF1dG9Db21wbGV0ZSA/IENvcmUuQ29uZmlnLkdldCgnQXV0b2NvbXBs
ZXRlLk1pblF1ZXJ5TGVuZ3RoJykgOiA1MDAsCiAgICAgICAgICAgICAgICBkZWxheTogQ29yZS5D
b25maWcuR2V0KCdBdXRvY29tcGxldGUuUXVlcnlEZWxheScpLAogICAgICAgICAgICAgICAgc291
cmNlOiBmdW5jdGlvbiAoUmVxdWVzdCwgUmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICB2
YXIgVVJMID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLCBEYXRhID0gewogICAgICAgICAg
ICAgICAgICAgICAgICBBY3Rpb246ICdBZ2VudFNlcnZpY2VTZWFyY2gnLAogICAgICAgICAgICAg
ICAgICAgICAgICBUZXJtOiBSZXF1ZXN0LnRlcm0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1h
eFJlc3VsdHM6IENvcmUuQ29uZmlnLkdldCgnQXV0b2NvbXBsZXRlLk1heFJlc3VsdHNEaXNwbGF5
ZWQnKQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5s
b2coVVJMKTsKICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKFVSTCwg
RGF0YSwgZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGF0
YSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goUmVzdWx0LCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhLnB1c2goewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLlNlcnZpY2VWYWx1ZSArICIgKCIgKyB0aGlz
LlNlcnZpY2VLZXkgKyAiKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6
IHRoaXMuU2VydmljZVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlKERh
dGEpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgICAgIHNlbGVjdDogZnVuY3Rpb24gKEV2ZW50LCBVSSkgewogICAgICAgICAgICAgICAgICAg
IHZhciBTZXJ2aWNlS2V5ID0gVUkuaXRlbS5sYWJlbC5yZXBsYWNlKC8uKlwoKC4qKVwpJC8sICck
MScpOwoKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC52YWwoVUkuaXRlbS52YWx1ZSk7Cgog
ICAgICAgICAgICAgICAgICAgIC8vIHNldCBoaWRkZW4gZmllbGQgU2VsZWN0ZWRTZXJ2aWNlCiAg
ICAgICAgICAgICAgICAgICAgJCgnIycgKyBGaWVsZElEICsgJ1NlbGVjdGVkJykudmFsKFNlcnZp
Y2VLZXkpOwoKICAgICAgICAgICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfSk7CgogICAgICAgICAgICBpZiAoIUFjdGl2ZUF1dG9Db21wbGV0ZSkgewogICAgICAgICAg
ICAgICAgJEVsZW1lbnQuYWZ0ZXIoJzxidXR0b24gaWQ9IicgKyAkRWxlbWVudC5hdHRyKCdpZCcp
ICsgJ1NlYXJjaCIgdHlwZT0iYnV0dG9uIj4nICsgQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxl
dGUuU2VhcmNoQnV0dG9uVGV4dCcpICsgJzwvYnV0dG9uPicpOwogICAgICAgICAgICAgICAgJCgn
IycgKyBGaWVsZElEICsgJ1NlYXJjaCcpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
ICAgICAgICAkRWxlbWVudC5hdXRvY29tcGxldGUoIm9wdGlvbiIsICJtaW5MZW5ndGgiLCAwKTsK
ICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5hdXRvY29tcGxldGUoInNlYXJjaCIpOwogICAg
ICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgib3B0aW9uIiwgIm1pbkxlbmd0
aCIsIDUwMCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAg
ICAgICAgLy8gT24gdW5sb2FkIHJlbW92ZSBvbGQgc2VsZWN0ZWQgZGF0YS4gSWYgdGhlIHBhZ2Ug
aXMgcmVsb2FkZWQgKHdpdGggRjUpIHRoaXMgZGF0YSBzdGF5cyBpbiB0aGUgZmllbGQgYW5kIGlu
dm9rZXMgYW4gYWpheCByZXF1ZXN0IG90aGVyd2lzZQogICAgICAgICQod2luZG93KS5iaW5kKCd1
bmxvYWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgJCgnIycgKyBGaWVsZElEICsgJ1NlbGVj
dGVkJykudmFsKCcnKTsKICAgICAgICB9KTsKICAgIH07CgogICAgcmV0dXJuIFRhcmdldE5TOwp9
KENvcmUuQWdlbnQuU2VydmljZVNlYXJjaCB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29yZS5BZ2VudC5RdWV1ZVNlYXJjaC5qcyAtIHByb3ZpZGVzIHRoZSBzcGVjaWFs
IG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBxdWV1ZSBzZWFyY2gKLy8gQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTEgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCi8vCi8vIHdy
aXR0ZW4vZWRpdGVkIGJ5OgovLyAgIEZyYW5rKGRvdClPYmVyZW5kZXIoYXQpY2FwZShkYXNoKWl0
KGRvdClkZQovLyAgIE1hcnRpbihkb3QpQmFsemFyZWsoYXQpY2FwZShkYXNoKWl0KGRvdClkZQov
LwovLyAtLQovLyAkSWQ6IENvcmUuQWdlbnQuUXVldWVTZWFyY2guanMsdiAxLjMgMjAxMS8xMC8y
OCAxMjo0Njo0NCBtYWJhIEV4cCAkCi8vIC0tCi8vIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBB
QlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCi8vIHRoZSBlbmNsb3NlZCBm
aWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKLy8gZGlk
IG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9h
Z3BsLnR4dC4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29yZSB8fCB7fTsKQ29y
ZS5BZ2VudCA9IENvcmUuQWdlbnQgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0
cyBUYXJnZXROUyBhcyBDb3JlLkFnZW50LlF1ZXVlU2VhcmNoCiAqIEBkZXNjcmlwdGlvbgogKiAg
ICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMg
Zm9yIHRoZSBxdWV1ZSBzZWFyY2guCiAqLwpDb3JlLkFnZW50LlF1ZXVlU2VhcmNoID0gKGZ1bmN0
aW9uIChUYXJnZXROUykgewoKICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7
alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgaW5wdXQgZmll
bGQgd2l0aCBhdXRvY29tcGxldGUKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQWN0aXZlQXV0b0Nv
bXBsZXRlIFNldCB0byBmYWxzZSwgaWYgYXV0b2NvbXBsZXRlIHNob3VsZCBvbmx5IGJlIHN0YXJ0
ZWQgYnkgY2xpY2sgb24gYSBidXR0b24gbmV4dCB0byB0aGUgaW5wdXQgZmllbGQKICAgICAqIEBy
ZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBz
cGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMKICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0
aW9uICgkRWxlbWVudCwgQWN0aXZlQXV0b0NvbXBsZXRlKSB7CiAgICAgICAgdmFyIEZpZWxkSUQg
PSAkRWxlbWVudC5hdHRyKCdpZCcpLnJlcGxhY2UoLzovZywgJ1xcOicpOwoKICAgICAgICBpZiAo
dHlwZW9mIEFjdGl2ZUF1dG9Db21wbGV0ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAg
QWN0aXZlQXV0b0NvbXBsZXRlID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgIEFjdGl2ZUF1dG9Db21wbGV0ZSA9ICEhQWN0aXZlQXV0b0NvbXBsZXRlOwogICAgICAg
IH0KCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICAk
RWxlbWVudC5hdXRvY29tcGxldGUoewogICAgICAgICAgICAgICAgbWluTGVuZ3RoOiBBY3RpdmVB
dXRvQ29tcGxldGUgPyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5NaW5RdWVyeUxlbmd0
aCcpIDogNTAwLAogICAgICAgICAgICAgICAgZGVsYXk6IENvcmUuQ29uZmlnLkdldCgnQXV0b2Nv
bXBsZXRlLlF1ZXJ5RGVsYXknKSwKICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24gKFJl
cXVlc3QsIFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29u
ZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0
aW9uOiAnQWdlbnRRdWV1ZVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFRlcm06IFJl
cXVlc3QudGVybSwKICAgICAgICAgICAgICAgICAgICAgICAgTWF4UmVzdWx0czogQ29yZS5Db25m
aWcuR2V0KCdBdXRvY29tcGxldGUuTWF4UmVzdWx0c0Rpc3BsYXllZCcpCiAgICAgICAgICAgICAg
ICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKFVSTCwg
RGF0YSwgZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGF0
YSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goUmVzdWx0LCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhLnB1c2goewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLlF1ZXVlVmFsdWUgKyAiICgiICsgdGhpcy5R
dWV1ZUtleSArICIpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhp
cy5RdWV1ZVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlKERhdGEpOwog
ICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
IHNlbGVjdDogZnVuY3Rpb24gKEV2ZW50LCBVSSkgewogICAgICAgICAgICAgICAgICAgIHZhciBR
dWV1ZUtleSA9IFVJLml0ZW0ubGFiZWwucmVwbGFjZSgvLipcKCguKilcKSQvLCAnJDEnKTsKCiAg
ICAgICAgICAgICAgICAgICAgJEVsZW1lbnQudmFsKFVJLml0ZW0udmFsdWUpOwoKICAgICAgICAg
ICAgICAgICAgICAvLyBzZXQgaGlkZGVuIGZpZWxkIFNlbGVjdGVkUXVldWUKICAgICAgICAgICAg
ICAgICAgICAkKCcjJyArIEZpZWxkSUQgKyAnU2VsZWN0ZWQnKS52YWwoUXVldWVLZXkpOwoKICAg
ICAgICAgICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAg
ICAgICAgICBpZiAoIUFjdGl2ZUF1dG9Db21wbGV0ZSkgewogICAgICAgICAgICAgICAgJEVsZW1l
bnQuYWZ0ZXIoJzxidXR0b24gaWQ9IicgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCIg
dHlwZT0iYnV0dG9uIj4nICsgQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUuU2VhcmNoQnV0
dG9uVGV4dCcpICsgJzwvYnV0dG9uPicpOwogICAgICAgICAgICAgICAgJCgnIycgKyBGaWVsZElE
ICsgJ1NlYXJjaCcpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAkRWxl
bWVudC5hdXRvY29tcGxldGUoIm9wdGlvbiIsICJtaW5MZW5ndGgiLCAwKTsKICAgICAgICAgICAg
ICAgICAgICAkRWxlbWVudC5hdXRvY29tcGxldGUoInNlYXJjaCIpOwogICAgICAgICAgICAgICAg
ICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgib3B0aW9uIiwgIm1pbkxlbmd0aCIsIDUwMCk7CiAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gT24g
dW5sb2FkIHJlbW92ZSBvbGQgc2VsZWN0ZWQgZGF0YS4gSWYgdGhlIHBhZ2UgaXMgcmVsb2FkZWQg
KHdpdGggRjUpIHRoaXMgZGF0YSBzdGF5cyBpbiB0aGUgZmllbGQgYW5kIGludm9rZXMgYW4gYWph
eCByZXF1ZXN0IG90aGVyd2lzZQogICAgICAgICQod2luZG93KS5iaW5kKCd1bmxvYWQnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAkKCcjJyArIEZpZWxkSUQgKyAnU2VsZWN0ZWQnKS52YWwoJycp
OwogICAgICAgIH0pOwogICAgfTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5BZ2VudC5R
dWV1ZVNlYXJjaCB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29yZS5BZ2VudC5DdXN0b21lckNvbXBhbnlTZWFyY2guanMgLSBwcm92aWRlcyB0
aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY3VzdG9tZXIgY29tcGFueSBzZWFy
Y2gKLy8gQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3
dy5jYXBlLWl0LmRlCi8vCi8vIHdyaXR0ZW4vZWRpdGVkIGJ5OgovLyAgIEZyYW5rKGRvdClPYmVy
ZW5kZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQovLyAgIE1hcnRpbihkb3QpQmFsemFyZWsoYXQp
Y2FwZShkYXNoKWl0KGRvdClkZQovLyAgIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gp
aXQoZG90KWRlCi8vCi8vIC0tCi8vICRJZDogQ29yZS5BZ2VudC5DdXN0b21lckNvbXBhbnlTZWFy
Y2guanMsdiAxLjYgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKLy8gLS0KLy8gVGhpcyBz
b2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBz
ZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAo
QUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3
dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIENv
cmUgPSBDb3JlIHx8IHt9OwpDb3JlLkFnZW50ID0gQ29yZS5BZ2VudCB8fCB7fTsKCi8qKgogKiBA
bmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIENvcmUuQWdlbnQuQ3VzdG9tZXJDb21w
YW55U2VhcmNoCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5z
IHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjdXN0b21lciBjb21wYW55IHNl
YXJjaC4KICovCkNvcmUuQWdlbnQuQ3VzdG9tZXJDb21wYW55U2VhcmNoID0gKGZ1bmN0aW9uIChU
YXJnZXROUykgewogICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlP
YmplY3R9ICRFbGVtZW50IFRoZSBqUXVlcnkgb2JqZWN0IG9mIHRoZSBpbnB1dCBmaWVsZCB3aXRo
IGF1dG9jb21wbGV0ZQogICAgICogQHBhcmFtIHtCb29sZWFufSBBY3RpdmVBdXRvQ29tcGxldGUg
U2V0IHRvIGZhbHNlLCBpZiBhdXRvY29tcGxldGUgc2hvdWxkIG9ubHkgYmUgc3RhcnRlZCBieSBj
bGljayBvbiBhIGJ1dHRvbiBuZXh0IHRvIHRoZSBpbnB1dCBmaWVsZAogICAgICogQHJldHVybiBu
b3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHNwZWNpYWwg
bW9kdWxlIGZ1bmN0aW9ucwogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCRF
bGVtZW50LCBBY3RpdmVBdXRvQ29tcGxldGUpIHsKICAgICAgICBpZiAodHlwZW9mIEFjdGl2ZUF1
dG9Db21wbGV0ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgQWN0aXZlQXV0b0NvbXBs
ZXRlID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIEFjdGl2ZUF1
dG9Db21wbGV0ZSA9ICEhQWN0aXZlQXV0b0NvbXBsZXRlOwogICAgICAgIH0KCiAgICAgICAgaWYg
KGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICAkRWxlbWVudC5hdXRvY29t
cGxldGUoewogICAgICAgICAgICAgICAgbWluTGVuZ3RoOiBBY3RpdmVBdXRvQ29tcGxldGUgPyBD
b3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5NaW5RdWVyeUxlbmd0aCcpIDogNTAwLAogICAg
ICAgICAgICAgICAgZGVsYXk6IENvcmUuQ29uZmlnLkdldCgnQXV0b2NvbXBsZXRlLlF1ZXJ5RGVs
YXknKSwKICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24gKFJlcXVlc3QsIFJlc3BvbnNl
KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxp
bmsnKSwgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnQWdlbnRDdXN0
b21lckNvbXBhbnlTZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICBUZXJtOiBSZXF1ZXN0
LnRlcm0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1heFJlc3VsdHM6IENvcmUuQ29uZmlnLkdl
dCgnQXV0b2NvbXBsZXRlLk1heFJlc3VsdHNEaXNwbGF5ZWQnKQogICAgICAgICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICAgICAgICAgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChVUkwsIERhdGEs
IGZ1bmN0aW9uIChSZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIERhdGEgPSBb
XTsKICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKFJlc3VsdCwgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYWJlbDogdGhpcy5DdXN0b21lckNvbXBhbnlWYWx1ZSArICIgKCIgKyB0
aGlzLkN1c3RvbWVyQ29tcGFueUtleSArICIpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZTogdGhpcy5DdXN0b21lckNvbXBhbnlWYWx1ZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAg
ICAgICAgICBSZXNwb25zZShEYXRhKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9uIChFdmVudCwgVUkpIHsK
ICAgICAgICAgICAgICAgICAgICB2YXIgQ3VzdG9tZXJDb21wYW55S2V5ID0gVUkuaXRlbS5sYWJl
bC5yZXBsYWNlKC8uKlwoKC4qKVwpJC8sICckMScpOwoKICAgICAgICAgICAgICAgICAgICAkRWxl
bWVudC52YWwoVUkuaXRlbS52YWx1ZSk7CgogICAgICAgICAgICAgICAgICAgIC8vIHNldCBoaWRk
ZW4gZmllbGQgU2VsZWN0ZWRDdXN0b21lckNvbXBhbnkKICAgICAgICAgICAgICAgICAgICAvLyBl
c2NhcGUgcG9zc2libGUgY29sb25zICg6KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNh
biBub3QgaGFuZGxlIGl0IGluIGlkIGF0dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAg
ICAgICAkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCRFbGVtZW50LmF0dHIoJ2lkJykp
ICsgJ1NlbGVjdGVkJykudmFsKEN1c3RvbWVyQ29tcGFueUtleSk7CgogICAgICAgICAgICAgICAg
ICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmICgh
QWN0aXZlQXV0b0NvbXBsZXRlKSB7CiAgICAgICAgICAgICAgICAkRWxlbWVudC5hZnRlcignPGJ1
dHRvbiBpZD0iJyArICRFbGVtZW50LmF0dHIoJ2lkJykgKyAnU2VhcmNoIiB0eXBlPSJidXR0b24i
PicgKyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5TZWFyY2hCdXR0b25UZXh0JykgKyAn
PC9idXR0b24+Jyk7CiAgICAgICAgICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUgY29sb25zICg6
KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0IGluIGlkIGF0
dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICQoJyMnICsgQ29yZS5BcHAuRXNjYXBl
U2VsZWN0b3IoJEVsZW1lbnQuYXR0cignaWQnKSkgKyAnU2VhcmNoJykuY2xpY2soZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgib3B0aW9uIiwg
Im1pbkxlbmd0aCIsIDApOwogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0
ZSgic2VhcmNoIik7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYXV0b2NvbXBsZXRlKCJv
cHRpb24iLCAibWluTGVuZ3RoIiwgNTAwKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICB9CiAgICAgICAgfQoKICAgICAgICAvLyBPbiB1bmxvYWQgcmVtb3ZlIG9sZCBzZWxlY3RlZCBk
YXRhLiBJZiB0aGUgcGFnZSBpcyByZWxvYWRlZCAod2l0aCBGNSkgdGhpcyBkYXRhIHN0YXlzIGlu
IHRoZSBmaWVsZCBhbmQgaW52b2tlcyBhbiBhamF4IHJlcXVlc3Qgb3RoZXJ3aXNlCiAgICAgICAg
JCh3aW5kb3cpLmJpbmQoJ3VubG9hZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgLy8gZXNj
YXBlIHBvc3NpYmxlIGNvbG9ucyAoOikgaW4gZWxlbWVudCBpZCBiZWNhdXNlIGpRdWVyeSBjYW4g
bm90IGhhbmRsZSBpdCBpbiBpZCBhdHRyaWJ1dGUgc2VsZWN0b3JzCiAgICAgICAgICAgJCgnIycg
KyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcigkRWxlbWVudC5hdHRyKCdpZCcpKSArICdTZWxlY3Rl
ZCcpLnZhbCgnJyk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShD
b3JlLkFnZW50LkN1c3RvbWVyQ29tcGFueVNlYXJjaCB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29yZS5BZ2VudC5DdXN0b21lclVzZXJDb21wYW55U2VhcmNoLmpzIC0gcHJvdmlk
ZXMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGN1c3RvbWVyIHVzZXIgY29t
cGFueSBzZWFyY2gKLy8gQ29weXJpZ2h0IChDKSAyMDA2LTIwMTEgYy5hLnAuZS4gSVQgR21iSCwg
aHR0cDovL3d3dy5jYXBlLWl0LmRlCi8vCi8vIHdyaXR0ZW4vZWRpdGVkIGJ5OgovLyAgIEZyYW5r
KGRvdClPYmVyZW5kZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQovLyAgIE1hcnRpbihkb3QpQmFs
emFyZWsoYXQpY2FwZShkYXNoKWl0KGRvdClkZQovLwovLyAtLQovLyAkSWQ6IENvcmUuQWdlbnQu
Q3VzdG9tZXJVc2VyQ29tcGFueVNlYXJjaC5qcyx2IDEuMyAyMDExLzEwLzI4IDEyOjQ2OjQ0IG1h
YmEgRXhwICQKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBm
b3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUg
dGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAt
LQoKInVzZSBzdHJpY3QiOwoKdmFyIENvcmUgPSBDb3JlIHx8IHt9OwpDb3JlLkFnZW50ID0gQ29y
ZS5BZ2VudCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFz
IENvcmUuQWdlbnQuQ3VzdG9tZXJVc2VyQ29tcGFueVNlYXJjaAogKiBAZGVzY3JpcHRpb24KICog
ICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25z
IGZvciB0aGUgY3VzdG9tZXIgdXNlciBjb21wYW55IHNlYXJjaC4KICovCkNvcmUuQWdlbnQuQ3Vz
dG9tZXJVc2VyQ29tcGFueVNlYXJjaCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKICAgLyoqCiAg
ICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUg
alF1ZXJ5IG9iamVjdCBvZiB0aGUgaW5wdXQgZmllbGQgd2l0aCBhdXRvY29tcGxldGUKICAgICAq
IEBwYXJhbSB7Qm9vbGVhbn0gQWN0aXZlQXV0b0NvbXBsZXRlIFNldCB0byBmYWxzZSwgaWYgYXV0
b2NvbXBsZXRlIHNob3VsZCBvbmx5IGJlIHN0YXJ0ZWQgYnkgY2xpY2sgb24gYSBidXR0b24gbmV4
dCB0byB0aGUgaW5wdXQgZmllbGQKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBU
aGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMKICAg
ICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgkRWxlbWVudCwgQWN0aXZlQXV0b0Nv
bXBsZXRlKSB7CiAgICAgICAgdmFyIEZpZWxkSUQgPSAkRWxlbWVudC5hdHRyKCdpZCcpLnJlcGxh
Y2UoLzovZywgJ1xcOicpOwoKICAgICAgICBpZiAodHlwZW9mIEFjdGl2ZUF1dG9Db21wbGV0ZSA9
PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgQWN0aXZlQXV0b0NvbXBsZXRlID0gdHJ1ZTsK
ICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIEFjdGl2ZUF1dG9Db21wbGV0ZSA9
ICEhQWN0aXZlQXV0b0NvbXBsZXRlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2Jq
ZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICAkRWxlbWVudC5hdXRvY29tcGxldGUoewogICAg
ICAgICAgICAgICAgbWluTGVuZ3RoOiBBY3RpdmVBdXRvQ29tcGxldGUgPyBDb3JlLkNvbmZpZy5H
ZXQoJ0F1dG9jb21wbGV0ZS5NaW5RdWVyeUxlbmd0aCcpIDogNTAwLAogICAgICAgICAgICAgICAg
ZGVsYXk6IENvcmUuQ29uZmlnLkdldCgnQXV0b2NvbXBsZXRlLlF1ZXJ5RGVsYXknKSwKICAgICAg
ICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24gKFJlcXVlc3QsIFJlc3BvbnNlKSB7CiAgICAgICAg
ICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSA9
IHsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnQWdlbnRDdXN0b21lclVzZXJDb21w
YW55U2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgVGVybTogUmVxdWVzdC50ZXJtLAog
ICAgICAgICAgICAgICAgICAgICAgICBNYXhSZXN1bHRzOiBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9j
b21wbGV0ZS5NYXhSZXN1bHRzRGlzcGxheWVkJykKICAgICAgICAgICAgICAgICAgICB9OwogICAg
ICAgICAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoVVJMLCBEYXRhLCBmdW5jdGlv
biAoUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBEYXRhID0gW107CiAgICAg
ICAgICAgICAgICAgICAgICAgICQuZWFjaChSZXN1bHQsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGFiZWw6IHRoaXMuQ3VzdG9tZXJVc2VyQ29tcGFueVZhbHVlICsgIiAoIiArIHRoaXMu
Q3VzdG9tZXJVc2VyQ29tcGFueUtleSArICIpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZTogdGhpcy5DdXN0b21lclVzZXJDb21wYW55VmFsdWUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgUmVzcG9uc2UoRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoRXZlbnQsIFVJ
KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIEN1c3RvbWVyVXNlckNvbXBhbnlLZXkgPSBVSS5p
dGVtLmxhYmVsLnJlcGxhY2UoLy4qXCgoLiopXCkkLywgJyQxJyk7CgogICAgICAgICAgICAgICAg
ICAgICRFbGVtZW50LnZhbChVSS5pdGVtLnZhbHVlKTsKCiAgICAgICAgICAgICAgICAgICAgLy8g
c2V0IGhpZGRlbiBmaWVsZCBTZWxlY3RlZFNlcnZpY2UKICAgICAgICAgICAgICAgICAgICAkKCcj
JyArIEZpZWxkSUQgKyAnU2VsZWN0ZWQnKS52YWwoQ3VzdG9tZXJVc2VyQ29tcGFueUtleSk7Cgog
ICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAg
ICAgICAgICAgIGlmICghQWN0aXZlQXV0b0NvbXBsZXRlKSB7CiAgICAgICAgICAgICAgICAkRWxl
bWVudC5hZnRlcignPGJ1dHRvbiBpZD0iJyArICRFbGVtZW50LmF0dHIoJ2lkJykgKyAnU2VhcmNo
IiB0eXBlPSJidXR0b24iPicgKyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5TZWFyY2hC
dXR0b25UZXh0JykgKyAnPC9idXR0b24+Jyk7CiAgICAgICAgICAgICAgICAkKCcjJyArIEZpZWxk
SUQgKyAnU2VhcmNoJykuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICRF
bGVtZW50LmF1dG9jb21wbGV0ZSgib3B0aW9uIiwgIm1pbkxlbmd0aCIsIDApOwogICAgICAgICAg
ICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgic2VhcmNoIik7CiAgICAgICAgICAgICAg
ICAgICAgJEVsZW1lbnQuYXV0b2NvbXBsZXRlKCJvcHRpb24iLCAibWluTGVuZ3RoIiwgNTAwKTsK
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBP
biB1bmxvYWQgcmVtb3ZlIG9sZCBzZWxlY3RlZCBkYXRhLiBJZiB0aGUgcGFnZSBpcyByZWxvYWRl
ZCAod2l0aCBGNSkgdGhpcyBkYXRhIHN0YXlzIGluIHRoZSBmaWVsZCBhbmQgaW52b2tlcyBhbiBh
amF4IHJlcXVlc3Qgb3RoZXJ3aXNlCiAgICAgICAgJCh3aW5kb3cpLmJpbmQoJ3VubG9hZCcsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAkKCcjJyArIEZpZWxkSUQgKyAnU2VsZWN0ZWQnKS52YWwo
JycpOwogICAgICAgIH0pOwogICAgfTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5BZ2Vu
dC5DdXN0b21lclVzZXJDb21wYW55U2VhcmNoIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29yZS5BZ2VudC5Vc2VyU2VhcmNoLmpzIC0gcHJvdmlkZXMgdGhlIHNwZWNpYWwg
bW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHVzZXIgc2VhcmNoCi8vIGJhc2VkIG9uIElUU00uQWdl
bnQuVXNlclNlYXJjaC5qczogQ29weXJpZ2h0IChDKSAyMDAxLTIwMTAgT1RSUyBBRywgaHR0cDov
L290cnMub3JnLwovLyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMSBjLmEucC5lLiBJVCBHbWJILCBo
dHRwOi8vd3d3LmNhcGUtaXQuZGUKLy8KLy8gd3JpdHRlbi9lZGl0ZWQgYnk6Ci8vICAgRnJhbmso
ZG90KU9iZXJlbmRlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCi8vICAgTWFydGluKGRvdClCYWx6
YXJlayhhdCljYXBlKGRhc2gpaXQoZG90KWRlCi8vCi8vIC0tCi8vICRJZDogQ29yZS5BZ2VudC5V
c2VyU2VhcmNoLmpzLHYgMS40IDIwMTIvMDQvMTMgMTA6Mzg6MjcgYWxpdHZpbm92YSBFeHAgJAov
LyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4g
Rm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNl
IGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUs
IHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCi8vIC0tCgoidXNlIHN0
cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8
IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgQ29yZS5BZ2Vu
dC5Vc2VyU2VhcmNoCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRh
aW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSB1c2VyIHNlYXJjaC4KICov
CkNvcmUuQWdlbnQuVXNlclNlYXJjaCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioK
ICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRFbGVtZW50IFRo
ZSBqUXVlcnkgb2JqZWN0IG9mIHRoZSBpbnB1dCBmaWVsZCB3aXRoIGF1dG9jb21wbGV0ZQogICAg
ICogQHBhcmFtIHtCb29sZWFufSBBY3RpdmVBdXRvQ29tcGxldGUgU2V0IHRvIGZhbHNlLCBpZiBh
dXRvY29tcGxldGUgc2hvdWxkIG9ubHkgYmUgc3RhcnRlZCBieSBjbGljayBvbiBhIGJ1dHRvbiBu
ZXh0IHRvIHRoZSBpbnB1dCBmaWVsZAogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAg
IFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucwog
ICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCRFbGVtZW50LCBBY3RpdmVBdXRv
Q29tcGxldGUpIHsKICAgICAgICB2YXIgRmllbGRJRCA9ICRFbGVtZW50LmF0dHIoJ2lkJykucmVw
bGFjZSgvOi9nLCAnXFw6Jyk7CgogICAgICAgIGlmICh0eXBlb2YgQWN0aXZlQXV0b0NvbXBsZXRl
ID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBBY3RpdmVBdXRvQ29tcGxldGUgPSB0cnVl
OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgQWN0aXZlQXV0b0NvbXBsZXRl
ID0gISFBY3RpdmVBdXRvQ29tcGxldGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNKUXVlcnlP
YmplY3QoJEVsZW1lbnQpKSB7CiAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSh7CiAg
ICAgICAgICAgICAgICBtaW5MZW5ndGg6IEFjdGl2ZUF1dG9Db21wbGV0ZSA/IENvcmUuQ29uZmln
LkdldCgnQXV0b2NvbXBsZXRlLk1pblF1ZXJ5TGVuZ3RoJykgOiA1MDAsCiAgICAgICAgICAgICAg
ICBkZWxheTogQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUuUXVlcnlEZWxheScpLAogICAg
ICAgICAgICAgICAgc291cmNlOiBmdW5jdGlvbiAoUmVxdWVzdCwgUmVzcG9uc2UpIHsKICAgICAg
ICAgICAgICAgICAgICB2YXIgVVJMID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLCBEYXRh
ID0gewogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb246ICdBZ2VudFVzZXJTZWFyY2gnLAog
ICAgICAgICAgICAgICAgICAgICAgICBUZXJtOiBSZXF1ZXN0LnRlcm0gKyAnKicsCiAgICAgICAg
ICAgICAgICAgICAgICAgIE1heFJlc3VsdHM6IENvcmUuQ29uZmlnLkdldCgnQXV0b2NvbXBsZXRl
Lk1heFJlc3VsdHNEaXNwbGF5ZWQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBzIDog
Q29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUuR3JvdXBzJykgfHwgJycKICAgICAgICAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoVVJM
LCBEYXRhLCBmdW5jdGlvbiAoUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBE
YXRhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChSZXN1bHQsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEucHVzaCh7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuVXNlclZhbHVlICsgIiAoIiArIHRoaXMu
VXNlcktleSArICIpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhp
cy5Vc2VyVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2UoRGF0YSk7CiAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
c2VsZWN0OiBmdW5jdGlvbiAoRXZlbnQsIFVJKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIFVz
ZXJLZXkgPSBVSS5pdGVtLmxhYmVsLnJlcGxhY2UoLy4qXCgoLiopXCkkLywgJyQxJyk7CiAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQudmFsKFVJLml0ZW0u
dmFsdWUpOwoKICAgICAgICAgICAgICAgICAgICAvLyBzZXQgaGlkZGVuIGZpZWxkIFNlbGVjdGVk
Q3VzdG9tZXJVc2VyCiAgICAgICAgICAgICAgICAgICAgJCgnIycgKyBGaWVsZElEICsgJ1NlbGVj
dGVkJykudmFsKFVzZXJLZXkpOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKCFBY3RpdmVB
dXRvQ29tcGxldGUpIHsKICAgICAgICAgICAgICAgICRFbGVtZW50LmFmdGVyKCc8YnV0dG9uIGlk
PSInICsgJEVsZW1lbnQuYXR0cignaWQnKSArICdTZWFyY2giIHR5cGU9ImJ1dHRvbiI+JyArIENv
cmUuQ29uZmlnLkdldCgnQXV0b2NvbXBsZXRlLlNlYXJjaEJ1dHRvblRleHQnKSArICc8L2J1dHRv
bj4nKTsKICAgICAgICAgICAgICAgICQoJyMnICsgRmllbGRJRCArICdTZWFyY2gnKS5jbGljayhm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYXV0b2NvbXBsZXRlKCJv
cHRpb24iLCAibWluTGVuZ3RoIiwgMCk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYXV0
b2NvbXBsZXRlKCJzZWFyY2giKTsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5hdXRvY29t
cGxldGUoIm9wdGlvbiIsICJtaW5MZW5ndGgiLCA1MDApOwogICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIE9uIHVubG9hZCByZW1vdmUgb2xkIHNl
bGVjdGVkIGRhdGEuIElmIHRoZSBwYWdlIGlzIHJlbG9hZGVkICh3aXRoIEY1KSB0aGlzIGRhdGEg
c3RheXMgaW4gdGhlIGZpZWxkIGFuZCBpbnZva2VzIGFuIGFqYXggcmVxdWVzdCBvdGhlcndpc2UK
ICAgICAgICAkKHdpbmRvdykuYmluZCgndW5sb2FkJywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICQoJyMnICsgRmllbGRJRCArICdTZWxlY3RlZCcpLnZhbCgnJyk7CiAgICAgICAgfSk7CiAgICB9
OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShDb3JlLkFnZW50LlVzZXJTZWFyY2ggfHwge30pKTsK
Ly8gLS0KLy8gQ29yZS5BZ2VudC5JVFNNQ0lUaWNrZXRTZWFyY2guanMgLSBwcm92aWRlcyB0aGUg
c3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgcXVldWUgc2VhcmNoCi8vIENvcHlyaWdo
dCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQov
LwovLyB3cml0dGVuL2VkaXRlZCBieToKLy8gICBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUo
ZGFzaClpdChkb3QpZGUKLy8gICBNYXJ0aW4oZG90KUJhbHphcmVrKGF0KWNhcGUoZGFzaClpdChk
b3QpZGUKLy8gICBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZShkYXNoKWl0KGRvdClkZQovLwov
LyAtLQovLyAkSWQ6IENvcmUuQWdlbnQuSVRTTUNJVGlja2V0U2VhcmNoLmpzLHYgMS4zIDIwMTYv
MDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCi8vIC0tCi8vIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0
aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCi8vIHRoZSBlbmNsb3Nl
ZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKLy8g
ZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl
cy9hZ3BsLnR4dC4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29yZSB8fCB7fTsK
Q29yZS5BZ2VudCA9IENvcmUuQWdlbnQgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhw
b3J0cyBUYXJnZXROUyBhcyBDb3JlLkFnZW50LklUU01DSVRpY2tldFNlYXJjaAogKiBAZGVzY3Jp
cHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUg
ZnVuY3Rpb25zIGZvciB0aGUgcXVldWUgc2VhcmNoLgogKi8KQ29yZS5BZ2VudC5JVFNNQ0lUaWNr
ZXRTZWFyY2ggPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAvKioKICAgICAqIEBmdW5jdGlv
bgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRFbGVtZW50IFRoZSBqUXVlcnkgb2JqZWN0
IG9mIHRoZSBpbnB1dCBmaWVsZCB3aXRoIGF1dG9jb21wbGV0ZQogICAgICogQHBhcmFtIHtCb29s
ZWFufSBBY3RpdmVBdXRvQ29tcGxldGUgU2V0IHRvIGZhbHNlLCBpZiBhdXRvY29tcGxldGUgc2hv
dWxkIG9ubHkgYmUgc3RhcnRlZCBieSBjbGljayBvbiBhIGJ1dHRvbiBuZXh0IHRvIHRoZSBpbnB1
dCBmaWVsZAogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24g
aW5pdGlhbGl6ZXMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucwogICAgICovCiAgICBUYXJn
ZXROUy5Jbml0ID0gZnVuY3Rpb24gKCRFbGVtZW50LCBBY3RpdmVBdXRvQ29tcGxldGUpIHsKICAg
ICAgICB2YXIgRmllbGRJRCA9ICRFbGVtZW50LmF0dHIoJ2lkJykucmVwbGFjZSgvOi9nLCAnXFw6
Jyk7CgogICAgICAgIGlmICh0eXBlb2YgQWN0aXZlQXV0b0NvbXBsZXRlID09PSAndW5kZWZpbmVk
JykgewogICAgICAgICAgICBBY3RpdmVBdXRvQ29tcGxldGUgPSB0cnVlOwogICAgICAgIH0KICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgQWN0aXZlQXV0b0NvbXBsZXRlID0gISFBY3RpdmVBdXRv
Q29tcGxldGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNKUXVlcnlPYmplY3QoJEVsZW1lbnQp
KSB7CiAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSh7CiAgICAgICAgICAgICAgICBt
aW5MZW5ndGg6IEFjdGl2ZUF1dG9Db21wbGV0ZSA/IENvcmUuQ29uZmlnLkdldCgnQXV0b2NvbXBs
ZXRlLk1pblF1ZXJ5TGVuZ3RoJykgOiA1MDAsCiAgICAgICAgICAgICAgICBkZWxheTogQ29yZS5D
b25maWcuR2V0KCdBdXRvY29tcGxldGUuUXVlcnlEZWxheScpLAogICAgICAgICAgICAgICAgc291
cmNlOiBmdW5jdGlvbiAoUmVxdWVzdCwgUmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICB2
YXIgVVJMID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLCBEYXRhID0gewogICAgICAgICAg
ICAgICAgICAgICAgICBBY3Rpb246ICdBZ2VudElUU01DSVRpY2tldFNlYXJjaCcsCiAgICAgICAg
ICAgICAgICAgICAgICAgIFRlcm06IFJlcXVlc3QudGVybSwKICAgICAgICAgICAgICAgICAgICAg
ICAgTWF4UmVzdWx0czogQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUuTWF4UmVzdWx0c0Rp
c3BsYXllZCcpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBDb3Jl
LkFKQVguRnVuY3Rpb25DYWxsKFVSTCwgRGF0YSwgZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgRGF0YSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAk
LmVhY2goUmVzdWx0LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
YXRhLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdGhpcy5UaWNr
ZXRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuVGlja2V0
VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuVGlja2V0
VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlKERhdGEpOwogICAgICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlbGVj
dDogZnVuY3Rpb24gKEV2ZW50LCBVSSkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LnZh
bChVSS5pdGVtLnZhbHVlKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGhpZGRlbiBmaWVs
ZCBTZWxlY3RlZElUU01DSVRpY2tldAogICAgICAgICAgICAgICAgICAgICQoJyMnICsgRmllbGRJ
RCArICdTZWxlY3RlZCcpLnZhbChVSS5pdGVtLmtleSk7CgogICAgICAgICAgICAgICAgICAgIEV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmICghQWN0aXZl
QXV0b0NvbXBsZXRlKSB7CiAgICAgICAgICAgICAgICAkRWxlbWVudC5hZnRlcignPGJ1dHRvbiBp
ZD0iJyArICRFbGVtZW50LmF0dHIoJ2lkJykgKyAnU2VhcmNoIiB0eXBlPSJidXR0b24iPicgKyBD
b3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5TZWFyY2hCdXR0b25UZXh0JykgKyAnPC9idXR0
b24+Jyk7CiAgICAgICAgICAgICAgICAkKCcjJyArIEZpZWxkSUQgKyAnU2VhcmNoJykuY2xpY2so
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgi
b3B0aW9uIiwgIm1pbkxlbmd0aCIsIDApOwogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1
dG9jb21wbGV0ZSgic2VhcmNoIik7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYXV0b2Nv
bXBsZXRlKCJvcHRpb24iLCAibWluTGVuZ3RoIiwgNTAwKTsKICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBPbiB1bmxvYWQgcmVtb3ZlIG9sZCBz
ZWxlY3RlZCBkYXRhLiBJZiB0aGUgcGFnZSBpcyByZWxvYWRlZCAod2l0aCBGNSkgdGhpcyBkYXRh
IHN0YXlzIGluIHRoZSBmaWVsZCBhbmQgaW52b2tlcyBhbiBhamF4IHJlcXVlc3Qgb3RoZXJ3aXNl
CiAgICAgICAgJCh3aW5kb3cpLmJpbmQoJ3VubG9hZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICQoJyMnICsgRmllbGRJRCArICdTZWxlY3RlZCcpLnZhbCgnJyk7CiAgICAgICAgfSk7CiAgICB9
OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShDb3JlLkFnZW50LklUU01DSVRpY2tldFNlYXJjaCB8
fCB7fSkpOwo=
Ly8gLS0KLy8gQ29yZS5BZ2VudC5TTEFTZWFyY2guanMgLSBwcm92aWRlcyB0aGUgc3BlY2lhbCBt
b2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgc2VydmljZSBzZWFyY2gKLy8gQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTEgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCi8vCi8vIHdy
aXR0ZW4vZWRpdGVkIGJ5OgovLyAgIEZyYW5rKGRvdClPYmVyZW5kZXIoYXQpY2FwZShkYXNoKWl0
KGRvdClkZQovLyAgIE1hcnRpbihkb3QpQmFsemFyZWsoYXQpY2FwZShkYXNoKWl0KGRvdClkZQov
LwovLyAtLQovLyAkSWQ6IENvcmUuQWdlbnQuU0xBU2VhcmNoLmpzLHYgMS4zIDIwMTEtMTAtMjgg
MTI6NDY6NDQgbWFiYSBFeHAgJAovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmls
ZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8vIGRpZCBu
b3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdw
bC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUu
QWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMg
VGFyZ2V0TlMgYXMgQ29yZS5BZ2VudC5TTEFTZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAg
VGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3Ig
dGhlIHNlcnZpY2Ugc2VhcmNoLgogKi8KQ29yZS5BZ2VudC5TTEFTZWFyY2ggPSAoZnVuY3Rpb24g
KFRhcmdldE5TKSB7CgogICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVl
cnlPYmplY3R9ICRFbGVtZW50IFRoZSBqUXVlcnkgb2JqZWN0IG9mIHRoZSBpbnB1dCBmaWVsZCB3
aXRoIGF1dG9jb21wbGV0ZQogICAgICogQHBhcmFtIHtCb29sZWFufSBBY3RpdmVBdXRvQ29tcGxl
dGUgU2V0IHRvIGZhbHNlLCBpZiBhdXRvY29tcGxldGUgc2hvdWxkIG9ubHkgYmUgc3RhcnRlZCBi
eSBjbGljayBvbiBhIGJ1dHRvbiBuZXh0IHRvIHRoZSBpbnB1dCBmaWVsZAogICAgICogQHJldHVy
biBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHNwZWNp
YWwgbW9kdWxlIGZ1bmN0aW9ucwogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24g
KCRFbGVtZW50LCBBY3RpdmVBdXRvQ29tcGxldGUsIFNlcnZpY2VEYXRhLCBDdXN0b21lckxvZ2lu
RGF0YSwgQ3VzdG9tZXJDb21wYW55RGF0YSkgewogICAgICAgIHZhciBGaWVsZElEID0gJEVsZW1l
bnQucHJvcCgnaWQnKS5yZXBsYWNlKC86L2csICdcXDonKTsKCiAgICAgICAgaWYgKHR5cGVvZiBB
Y3RpdmVBdXRvQ29tcGxldGUgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIEFjdGl2ZUF1
dG9Db21wbGV0ZSA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBB
Y3RpdmVBdXRvQ29tcGxldGUgPSAhIUFjdGl2ZUF1dG9Db21wbGV0ZTsKICAgICAgICB9CgogICAg
ICAgIGlmIChpc0pRdWVyeU9iamVjdCgkRWxlbWVudCkpIHsKICAgICAgICAgICAgJEVsZW1lbnQu
YXV0b2NvbXBsZXRlKHsKICAgICAgICAgICAgICAgIG1pbkxlbmd0aDogQWN0aXZlQXV0b0NvbXBs
ZXRlID8gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUuTWluUXVlcnlMZW5ndGgnKSA6IDUw
MCwKICAgICAgICAgICAgICAgIGRlbGF5OiBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5R
dWVyeURlbGF5JyksCiAgICAgICAgICAgICAgICBzb3VyY2U6IGZ1bmN0aW9uIChSZXF1ZXN0LCBS
ZXNwb25zZSkgeyAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IENv
cmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgQWN0aW9uOiAnQWdlbnRTTEFTZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICBUZXJt
OiBSZXF1ZXN0LnRlcm0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VEYXRhOiBTZXJ2
aWNlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJMb2dpbkRhdGE6IEN1c3Rv
bWVyTG9naW5EYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lckNvbXBhbnlEYXRh
OiBDdXN0b21lckNvbXBhbnlEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBNYXhSZXN1bHRz
OiBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5NYXhSZXN1bHRzRGlzcGxheWVkJykKICAg
ICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlv
bkNhbGwoVVJMLCBEYXRhLCBmdW5jdGlvbiAoUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBEYXRhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChSZXN1bHQs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEucHVzaCh7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuU0xBVmFsdWUgKyAiICgi
ICsgdGhpcy5TTEFLZXkgKyAiKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWU6IHRoaXMuU0xBVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2UoRGF0
YSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoRXZlbnQsIFVJKSB7CiAgICAgICAgICAgICAgICAgICAg
dmFyIFNMQUtleSA9IFVJLml0ZW0ubGFiZWwucmVwbGFjZSgvLipcKCguKilcKSQvLCAnJDEnKTsK
CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQudmFsKFVJLml0ZW0udmFsdWUpOwoKICAgICAg
ICAgICAgICAgICAgICAvLyBzZXQgaGlkZGVuIGZpZWxkIFNlbGVjdGVkU0xBCiAgICAgICAgICAg
ICAgICAgICAgJCgnIycgKyBGaWVsZElEICsgJ1NlbGVjdGVkJykudmFsKFNMQUtleSk7CgogICAg
ICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAg
ICAgICAgIGlmICghQWN0aXZlQXV0b0NvbXBsZXRlKSB7CiAgICAgICAgICAgICAgICAkRWxlbWVu
dC5hZnRlcignPGJ1dHRvbiBpZD0iJyArICRFbGVtZW50LmF0dHIoJ2lkJykgKyAnU2VhcmNoIiB0
eXBlPSJidXR0b24iPicgKyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZS5TZWFyY2hCdXR0
b25UZXh0JykgKyAnPC9idXR0b24+Jyk7CiAgICAgICAgICAgICAgICAkKCcjJyArIEZpZWxkSUQg
KyAnU2VhcmNoJykuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICRFbGVt
ZW50LmF1dG9jb21wbGV0ZSgib3B0aW9uIiwgIm1pbkxlbmd0aCIsIDApOwogICAgICAgICAgICAg
ICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgic2VhcmNoIik7CiAgICAgICAgICAgICAgICAg
ICAgJEVsZW1lbnQuYXV0b2NvbXBsZXRlKCJvcHRpb24iLCAibWluTGVuZ3RoIiwgNTAwKTsKICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBPbiB1
bmxvYWQgcmVtb3ZlIG9sZCBzZWxlY3RlZCBkYXRhLiBJZiB0aGUgcGFnZSBpcyByZWxvYWRlZCAo
d2l0aCBGNSkgdGhpcyBkYXRhIHN0YXlzIGluIHRoZSBmaWVsZCBhbmQgaW52b2tlcyBhbiBhamF4
IHJlcXVlc3Qgb3RoZXJ3aXNlCiAgICAgICAgJCh3aW5kb3cpLmJpbmQoJ3VubG9hZCcsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAkKCcjJyArIEZpZWxkSUQgKyAnU2VsZWN0ZWQnKS52YWwoJycp
OwogICAgICAgIH0pOwogICAgfTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5BZ2VudC5T
TEFTZWFyY2ggfHwge30pKTsK
Ly8gLS0KLy8gSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5DSUF0dHJDb2xsLmpzIC0gcHJv
dmlkZXMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGdsb2JhbCBzZWFyY2gK
Ly8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyBBRywgaHR0cDovL290cnMub3JnL1xuIjsK
Ly8gRXh0ZW5zaW9ucyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBjLmEucC5lLiBJVCBHbWJILCBo
dHRwOi8vd3d3LmNhcGUtaXQuZGUKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFC
U09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZp
bGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQg
bm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2Fn
cGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIElUU00gPSBJVFNNIHx8IHt9OwpJVFNN
LkFnZW50ID0gSVRTTS5BZ2VudCB8fCB7fTsKSVRTTS5BZ2VudC5Db25maWdJdGVtID0gSVRTTS5B
Z2VudC5Db25maWdJdGVtIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFy
Z2V0TlMgYXMgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaAogKiBAZGVzY3JpcHRpb24KICog
ICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25z
IGZvciB0aGUgc2VhcmNoLgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaCA9IChmdW5j
dGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVy
biBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gcmVidWlsZCBhdHRyaWJ1dGUgc2Vs
ZWN0aW9uLCBvbmx5IHNob3cgYXZhaWxhYmxlIGF0dHJpYnV0ZXMuCiAgICAgKi8KICAgIFRhcmdl
dE5TLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkID0gZnVuY3Rpb24gKCkgewoK
ICAgICAgICAvLyBnZXQgb3JpZ2luYWwgc2VsZWN0aW9uIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxk
cyBhbmQgY2xvbmUgaXQKICAgICAgICB2YXIgJEF0dHJpYnV0ZUNsb25lID0gJCgnI0F0dHJpYnV0
ZU9yaWcnKS5jbG9uZSgpLmF0dHIoJ2lkJywgJ0F0dHJpYnV0ZScpOwoKICAgICAgICAvLyBzdHJp
cCBhbGwgYWxyZWFkeSB1c2VkIGF0dHJpYnV0ZXMKICAgICAgICAkQXR0cmlidXRlQ2xvbmUuZmlu
ZCgnb3B0aW9uJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNTZWFyY2hJbnNl
cnQgbGFiZWwjJyArICdMYWJlbCcgKyAkKHRoaXMpLmF0dHIoJ3ZhbHVlJykpLnJlbW92ZSgpOwog
ICAgICAgIH0pOwoKICAgICAgICAvLyByZXBsYWNlIHNlbGVjdGlvbiB3aXRoIG9yaWdpbmFsIHNl
bGVjdGlvbgogICAgICAgICQoJyNBdHRyaWJ1dGUnKS5yZXBsYWNlV2l0aCgkQXR0cmlidXRlQ2xv
bmUpOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rp
b24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvZiBhdHRyaWJ1dGUgdG8gYWRkLgogICAgICogQHJl
dHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gYWRkcyBvbmUgYXR0cmlidXRl
IGZvciBzZWFyY2gKICAgICAqLwogICAgVGFyZ2V0TlMuU2VhcmNoQXR0cmlidXRlQWRkID0gZnVu
Y3Rpb24gKEF0dHJpYnV0ZSkgewoKICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUgY29sb25zICg6
KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0IGluIGlkIGF0
dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICBBdHRyaWJ1dGUgPSBDb3JlLkFwcC5Fc2NhcGVTZWxl
Y3RvcihBdHRyaWJ1dGUpOwoKICAgICAgICB2YXIgJExhYmVsID0gJCgnI1NlYXJjaEF0dHJpYnV0
ZXNIaWRkZW4gbGFiZWwjTGFiZWwnICsgQXR0cmlidXRlKTsKCiAgICAgICAgaWYgKCRMYWJlbC5s
ZW5ndGgpIHsKICAgICAgICAgICAgJExhYmVsLnByZXYoKS5jbG9uZSgpLmFwcGVuZFRvKCcjU2Vh
cmNoSW5zZXJ0Jyk7CiAgICAgICAgICAgICRMYWJlbC5jbG9uZSgpLmFwcGVuZFRvKCcjU2VhcmNo
SW5zZXJ0Jyk7CiAgICAgICAgICAgICRMYWJlbC5uZXh0KCkuY2xvbmUoKS5hcHBlbmRUbygnI1Nl
YXJjaEluc2VydCcpCgogICAgICAgICAgICAgICAgLy8gYmluZCBjbGljayBmdW5jdGlvbiB0byBy
ZW1vdmUgYnV0dG9uIG5vdwogICAgICAgICAgICAgICAgLmZpbmQoJy5SZW1vdmVCdXR0b24nKS5i
aW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJEVsZW1l
bnQgPSAkKHRoaXMpLnBhcmVudCgpOwogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlNlYXJj
aEF0dHJpYnV0ZVJlbW92ZSgkRWxlbWVudCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVp
bGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJp
YnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2V0IGF1dG9jb21wbGV0
ZSB0byBjdXN0b21lciB0eXBlIGZpZWxkcwogICAgICAgICAgICAgICAgJCgnI1NlYXJjaEluc2Vy
dCcpLmZpbmQoJy5JVFNNQ3VzdG9tZXJTZWFyY2gnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgIHZhciBJbnB1dElEID0gJCh0aGlzKS5hdHRyKCdpZCcpICsgJ0F1dG9jb21w
bGV0ZSc7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnSVRTTUN1c3Rv
bWVyU2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdpZCcsIElucHV0
SUQpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldigpLmF0dHIoJ2lkJywgSW5wdXRJ
RCArICdTZWxlY3RlZCcpOwoKICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUg
Y29sb25zICg6KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0
IGluIGlkIGF0dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICBJVFNNLkFnZW50
LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoJyMnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSW5w
dXRJRCkgKSApOwoKICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGRpYWxvZyBjbG9zdXJl
IHdoZW4gc2VsZWN0IGEgY3VzdG9tZXIgZnJvbSB0aGUgbGlzdAogICAgICAgICAgICAgICAgICAg
ICQoJ3VsLnVpLWF1dG9jb21wbGV0ZScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oRXZlbnQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vIElUU00tQ0lBdHRyaWJ1dGVDb2xs
ZWN0aW9uLWNhcGVJVAogICAgICAgICAgICAgICAgVGFyZ2V0TlMuRW5hYmxlQXV0b2NvbXBsZXRl
KCQoJyNTZWFyY2hJbnNlcnQgPiBkaXY6bGFzdCA+IGlucHV0Omxhc3QnKSApOwoKICAgICAgICAg
ICAgICAgIC8vIEVPIElUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uLWNhcGVJVAoKICAgICAgICAg
ICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwoKICAgIC8vIElUU00tQ0lBdHRyaWJ1
dGVDb2xsZWN0aW9uLWNhcGVJVAogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJh
bSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgZm9ybSAg
b3IgYW55IGVsZW1lbnQKICAgICAqICAgICAgd2l0aGluIHRoaXMgZm9ybSBjaGVjay4KICAgICAq
IEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGFjdGl2YXRlcyBhdXRv
Y29tbGV0ZSBmb3IgYW4gZWxlbWVudC4KICAgICAqLwoKICAgIFRhcmdldE5TLkVuYWJsZUF1dG9j
b21wbGV0ZSA9IGZ1bmN0aW9uICgkRWxlbWVudCkgewoKICAgICAgICB2YXIgU2VhcmNoQ2xhc3Mg
PSAkRWxlbWVudC5hdHRyKCdTZWFyY2hDbGFzcycpOwoKICAgICAgICAgICAgaWYgKCFTZWFyY2hD
bGFzcykgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAg
ICAgICAgICB2YXIgSW5wdXRJRCA9ICRFbGVtZW50LmF0dHIoJ2lkJykgKyAnQXV0b2NvbXBsZXRl
JzsKICAgICAgICAgICAgJEVsZW1lbnQucmVtb3ZlQ2xhc3MoJ1wnJyArIFNlYXJjaENsYXNzICsg
J1wnJyk7CiAgICAgICAgICAgICRFbGVtZW50LnJlbW92ZUNsYXNzKFNlYXJjaENsYXNzKTsKICAg
ICAgICAgICAgJEVsZW1lbnQuYXR0cignaWQnLCBJbnB1dElEKTsKICAgICAgICAgICAgJEVsZW1l
bnQucHJldigpLmF0dHIoJ2lkJywgSW5wdXRJRCArICdTZWxlY3RlZCcpOwoKICAgICAgICAgICAg
Ly8gZXNjYXBlIHBvc3NpYmxlIGNvbG9ucyAoOikgaW4gZWxlbWVudCBpZCBiZWNhdXNlIGpRdWVy
eSBjYW4gbm90IGhhbmRsZSBpdCBpbiBpZCBhdHRyaWJ1dGUgc2VsZWN0b3JzCiAgICAgICAgICAg
IGlmIChTZWFyY2hDbGFzcyA9PSAnUXVldWVTZWFyY2gnKXsKICAgICAgICAgICAgICAgIENvcmUu
QWdlbnQuUXVldWVTZWFyY2guSW5pdCggJCgnIycgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihJ
bnB1dElEKSApICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoU2VhcmNoQ2xh
c3MgPT0gJ1NlcnZpY2VTZWFyY2gnKXsKICAgICAgICAgICAgICAgIENvcmUuQWdlbnQuU2Vydmlj
ZVNlYXJjaC5Jbml0KCAkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKElucHV0SUQpICkg
KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChTZWFyY2hDbGFzcyA9PSAnU0xB
U2VhcmNoJyl7CiAgICAgICAgICAgICAgICBDb3JlLkFnZW50LlNMQVNlYXJjaC5Jbml0KCAkKCcj
JyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKElucHV0SUQpICkgKTsKICAgICAgICAgICAgfQog
ICAgICAgICAgICBlbHNlIGlmIChTZWFyY2hDbGFzcyA9PSAnQWdlbnRVc2VyU2VhcmNoJyl7CiAg
ICAgICAgICAgICAgICBDb3JlLkFnZW50LlVzZXJTZWFyY2guSW5pdCggJCgnIycgKyBDb3JlLkFw
cC5Fc2NhcGVTZWxlY3RvcihJbnB1dElEKSApICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
ZWxzZSBpZiAoU2VhcmNoQ2xhc3MgPT0gJ0N1c3RvbWVyVXNlckNvbXBhbnlTZWFyY2gnKXsKICAg
ICAgICAgICAgICAgIENvcmUuQWdlbnQuQ3VzdG9tZXJVc2VyQ29tcGFueVNlYXJjaC5Jbml0KCAk
KCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKElucHV0SUQpICkgKTsKICAgICAgICAgICAg
fQogICAgICAgICAgICBlbHNlIGlmIChTZWFyY2hDbGFzcyA9PSAnQ3VzdG9tZXJDb21wYW55U2Vh
cmNoJyl7CiAgICAgICAgICAgICAgICBDb3JlLkFnZW50LkN1c3RvbWVyQ29tcGFueVNlYXJjaC5J
bml0KCAkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKElucHV0SUQpICkgKTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChTZWFyY2hDbGFzcyA9PSAnQ0lDbGFzc1NlYXJj
aCcpewogICAgICAgICAgICAgICAgQ29yZS5BZ2VudC5DSUNsYXNzU2VhcmNoLkluaXQoICQoJyMn
ICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSW5wdXRJRCkgKSApOwogICAgICAgICAgICB9CiAg
ICAgICAgICAgIGVsc2UgaWYgKFNlYXJjaENsYXNzID09ICdUaWNrZXRTZWFyY2gnKXsKICAgICAg
ICAgICAgICAgIENvcmUuQWdlbnQuSVRTTUNJVGlja2V0U2VhcmNoLkluaXQoICQoJyMnICsgQ29y
ZS5BcHAuRXNjYXBlU2VsZWN0b3IoSW5wdXRJRCkgKSApOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9Cgog
ICAgICAgICAgICAvLyBwcmV2ZW50IGRpYWxvZyBjbG9zdXJlIHdoZW4gc2VsZWN0IGEgdGlja2V0
IGZyb20gdGhlIGxpc3QKICAgICAgICAgICAgJCgndWwudWktYXV0b2NvbXBsZXRlJykuYmluZCgn
Y2xpY2snLCBmdW5jdGlvbihFdmVudCkgewogICAgICAgICAgICAgICAgRXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwog
ICAgfTsKICAgIC8vIEVPIElUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uLWNhcGVJVAoKICAgIC8q
KgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQg
VGhlIGpRdWVyeSBvYmplY3Qgb2YgdGhlIGZvcm0gIG9yIGFueSBlbGVtZW50CiAgICAgKiAgICAg
IHdpdGhpbiB0aGlzIGZvcm0gY2hlY2suCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAg
ICAgVGhpcyBmdW5jdGlvbiByZW1vdmUgYXR0cmlidXRlcyBmcm9tIGFuIGVsZW1lbnQuCiAgICAg
Ki8KCiAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVSZW1vdmUgPSBmdW5jdGlvbiAoJEVsZW1l
bnQpIHsKICAgICAgICAkRWxlbWVudC5wcmV2KCkucHJldigpLnJlbW92ZSgpOwogICAgICAgICRF
bGVtZW50LnByZXYoKS5yZW1vdmUoKTsKICAgICAgICAkRWxlbWVudC5yZW1vdmUoKTsKICAgIH07
CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICog
ICAgICBUaGlzIGZ1bmN0aW9uIHJlYnVpbGQgYXR0cmlidXRlIHNlbGVjdGlvbiwgb25seSBzaG93
IGF2YWlsYWJsZSBhdHRyaWJ1dGVzLgogICAgICovCiAgICBUYXJnZXROUy5BZGRpdGlvbmFsQXR0
cmlidXRlU2VsZWN0aW9uUmVidWlsZCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgLy8gZ2V0IG9y
aWdpbmFsIHNlbGVjdGlvbgogICAgICAgIHZhciAkQXR0cmlidXRlQ2xvbmUgPSAkKCcjQXR0cmli
dXRlT3JpZycpLmNsb25lKCk7CiAgICAgICAgJEF0dHJpYnV0ZUNsb25lLmF0dHIoJ2lkJywgJ0F0
dHJpYnV0ZScpOwoKICAgICAgICAvLyBzdHJpcCBhbGwgYWxyZWFkeSB1c2VkIGF0dHJpYnV0ZXMK
ICAgICAgICAkQXR0cmlidXRlQ2xvbmUuZmluZCgnb3B0aW9uJykuZWFjaChmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgIHZhciAkQXR0cmlidXRlID0gJCh0aGlzKTsKICAgICAgICAgICAgJCgnI1Nl
YXJjaEluc2VydCBsYWJlbCcpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYg
KCQodGhpcykuYXR0cignaWQnKSA9PT0gJ0xhYmVsJyArICRBdHRyaWJ1dGUuYXR0cigndmFsdWUn
KSkgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUucmVtb3ZlKCk7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyByZXBsYWNlIHNl
bGVjdGlvbiB3aXRoIG9yaWdpbmFsIHNlbGVjdGlvbgogICAgICAgICQoJyNBdHRyaWJ1dGUnKS5y
ZXBsYWNlV2l0aCgkQXR0cmlidXRlQ2xvbmUpOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07
CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0g
e1N0cmluZ30gUHJvZmlsZSBUaGUgcHJvZmlsZSBuYW1lIHRoYXQgd2lsbCBiZSBkZWxldGUuCiAg
ICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYSBwcm9maWxl
IHZpYSBhbiBhamF4IHJlcXVlc3RzLgogICAgICovCiAgICBmdW5jdGlvbiBTZWFyY2hQcm9maWxl
RGVsZXRlKFByb2ZpbGUpIHsKICAgICAgICB2YXIgRGF0YSA9IHsKICAgICAgICAgICAgQWN0aW9u
OiAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIFN1YmFjdGlvbjogJ0FK
QVhQcm9maWxlRGVsZXRlJywKICAgICAgICAgICAgUHJvZmlsZTogUHJvZmlsZSwKICAgICAgICAg
ICAgQ2xhc3NJRDogJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKQogICAgICAgIH07CiAgICAgICAg
Q29yZS5BSkFYLkZ1bmN0aW9uQ2FsbCgKICAgICAgICAgICAgQ29yZS5Db25maWcuR2V0KCdDR0lI
YW5kbGUnKSwKICAgICAgICAgICAgRGF0YSwKICAgICAgICAgICAgZnVuY3Rpb24gKCkge30KICAg
ICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcHJpdmF0ZQog
ICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiBAZGVzY3JpcHRpb24gU2hvd3Mgd2FpdGluZyBk
aWFsb2cgdW50aWwgc2VhcmNoIHNjcmVlbiBpcyByZWFkeS4KICAgICAqLwogICAgZnVuY3Rpb24g
U2hvd1dhaXRpbmdEaWFsb2coKXsKICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERp
YWxvZygnPGRpdiBjbGFzcz0iU3BhY2luZyBDZW50ZXIiPjxzcGFuIGNsYXNzPSJBSkFYTG9hZGVy
IiB0aXRsZT0iJyArIENvcmUuQ29uZmlnLkdldCgnTG9hZGluZ01zZycpICsgJyI+PC9zcGFuPjwv
ZGl2PicsIENvcmUuQ29uZmlnLkdldCgnTG9hZGluZ01zZycpLCAnMTBweCcsICdDZW50ZXInLCB0
cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIG5vbmUK
ICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHNldHMgYWxs
IHNlYXJjaCBkaWFsb2cgc2V0dGluZ3MKICAgICAqLwoKICAgIFRhcmdldE5TLlNldFNlYXJjaERp
YWxvZyA9IGZ1bmN0aW9uKCkgewoKICAgICAgICAvLyBoaWRlIGFkZCB0ZW1wbGF0ZSBibG9jawog
ICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkQmxvY2snKS5oaWRlKCk7CgogICAgICAgIC8vIGhp
ZGUgc2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIGJsb2NrCiAgICAgICAgJCgnI1NhdmVQcm9maWxl
JykucGFyZW50KCkuaGlkZSgpLnByZXYoKS5oaWRlKCkucHJldigpLmhpZGUoKTsKCiAgICAgICAg
Ly8gc2VhcmNoIHByb2ZpbGUgaXMgc2VsZWN0ZWQKICAgICAgICBpZiAoJCgnI1NlYXJjaFByb2Zp
bGUnKS52YWwoKSAmJiAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpICE9PSAnbGFzdC1zZWFyY2gn
KSB7CgogICAgICAgICAgICAvLyBzaG93IGRlbGV0ZSBidXR0b24KICAgICAgICAgICAgJCgnI1Nl
YXJjaFByb2ZpbGVEZWxldGUnKS5zaG93KCk7CgogICAgICAgICAgICAvLyBzaG93IHNhdmUgY2hh
bmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2F2ZVByb2ZpbGUnKS5wYXJl
bnQoKS5zaG93KCkucHJldigpLnNob3coKS5wcmV2KCkuc2hvdygpOwoKICAgICAgICAgICAgLy8g
c2V0IFNhdmVQcm9maWxlIHRvIDAKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykuYXR0cign
Y2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIC8vIHJlZ2lzdGVyIGFkZCBvZiBh
dHRyaWJ1dGUKICAgICAgICAkKCcuQWRkQnV0dG9uJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgIHZhciBBdHRyaWJ1dGUgPSAkKCcjQXR0cmlidXRlJykudmFsKCk7CiAg
ICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZUFkZChBdHRyaWJ1dGUpOwogICAgICAg
ICAgICBUYXJnZXROUy5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwoKICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAvLyByZWdpc3RlciBy
ZXR1cm4ga2V5CiAgICAgICAgJCgnI1NlYXJjaEZvcm0nKS51bmJpbmQoJ2tleXByZXNzLkZpbHRl
cklucHV0JykuYmluZCgna2V5cHJlc3MuRmlsdGVySW5wdXQnLCBmdW5jdGlvbiAoRXZlbnQpIHsK
ICAgICAgICAgICAgaWYgKChFdmVudC5jaGFyQ29kZSB8fCBFdmVudC5rZXlDb2RlKSA9PT0gMTMp
IHsKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8g
cmVnaXN0ZXIgc3VibWl0CiAgICAgICAgJCgnI1NlYXJjaEZvcm1TdWJtaXQnKS5iaW5kKCdjbGlj
aycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgLy8gTm9ybWFsIHJlc3VsdHMgbW9kZSB3aWxs
IHJldHVybiBIVE1MIGluIHRoZSBzYW1lIHdpbmRvdwogICAgICAgICAgICBpZiAoJCgnI1NlYXJj
aEZvcm0gI1Jlc3VsdEZvcm0nKS52YWwoKSA9PT0gJ05vcm1hbCcpIHsKICAgICAgICAgICAgICAg
ICQoJyNTZWFyY2hGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAgICAgICBTaG93V2FpdGluZ0Rp
YWxvZygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgeyAvLyBQcmludCBhbmQgQ1NW
IHNob3VsZCBvcGVuIGluIGEgbmV3IHdpbmRvdywgbm8gd2FpdGluZyBkaWFsb2cKICAgICAgICAg
ICAgICAgICQoJyNTZWFyY2hGb3JtJykuYXR0cigndGFyZ2V0JywgJ1NlYXJjaFJlc3VsdFBhZ2Un
KTsKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAg
ICAgICAkKCcjU2VhcmNoRm9ybScpLmF0dHIoJ3RhcmdldCcsICcnKTsKICAgICAgICAgICAgfQog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIC8vIGxvYWQgcHJv
ZmlsZQogICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICB2YXIgUHJvZmlsZSA9ICQoJyNTZWFyY2hQcm9maWxlJykudmFsKCk7
CiAgICAgICAgICAgIFRhcmdldE5TLkxvYWRQcm9maWxlKFByb2ZpbGUpOwogICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIC8vIHNob3cgYWRkIHByb2ZpbGUgYmxv
Y2sgb3Igbm90CiAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVOZXcnKS5iaW5kKCdjbGljaycsIGZ1
bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJyku
dG9nZ2xlKCk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gYWRkIG5ldyBwcm9maWxlCiAg
ICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgdmFyIE5hbWUsICRFbGVtZW50MSwgJEVsZW1lbnQyOwoKICAgICAg
ICAgICAgLy8gZ2V0IG5hbWUKICAgICAgICAgICAgTmFtZSA9ICQoJyNTZWFyY2hQcm9maWxlQWRk
TmFtZScpLnZhbCgpOwogICAgICAgICAgICBpZiAoIU5hbWUpIHsKICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIG5hbWUgdG8gcHJv
ZmlsZSBzZWxlY3Rpb24KICAgICAgICAgICAgJEVsZW1lbnQxID0gJCgnI1NlYXJjaFByb2ZpbGUn
KS5jaGlsZHJlbigpLmZpcnN0KCkuY2xvbmUoKTsKICAgICAgICAgICAgJEVsZW1lbnQxLnRleHQo
TmFtZSk7CiAgICAgICAgICAgICRFbGVtZW50MS5hdHRyKCd2YWx1ZScsIE5hbWUpOwogICAgICAg
ICAgICAkRWxlbWVudDEuYXR0cignc2VsZWN0ZWQnLCAnc2VsZWN0ZWQnKTsKICAgICAgICAgICAg
JCgnI1NlYXJjaFByb2ZpbGUnKS5hcHBlbmQoJEVsZW1lbnQxKTsKCiAgICAgICAgICAgIC8vIHNl
dCBpbnB1dCBib3ggdG8gZW1wdHkKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1l
JykudmFsKCcnKTsKCiAgICAgICAgICAgIC8vIGhpZGUgYWRkIHRlbXBsYXRlIGJsb2NrCiAgICAg
ICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkQmxvY2snKS5oaWRlKCk7CgogICAgICAgICAgICAv
LyBoaWRlIHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2F2
ZVByb2ZpbGUnKS5wYXJlbnQoKS5oaWRlKCkucHJldigpLmhpZGUoKS5wcmV2KCkuaGlkZSgpOwoK
ICAgICAgICAgICAgLy8gc2V0IFNhdmVQcm9maWxlIHRvIDEKICAgICAgICAgICAgJCgnI1NhdmVQ
cm9maWxlJykuYXR0cignY2hlY2tlZCcsIHRydWUpOwoKICAgICAgICAgICAgJCgnI1NlYXJjaFBy
b2ZpbGVEZWxldGUnKS5zaG93KCk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
fSk7CgogICAgICAgIC8vIGRlbGV0ZSBwcm9maWxlCiAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVE
ZWxldGUnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgLy8g
c3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hQ
cm9maWxlJykuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCd2YWx1ZScpICE9PSAnbGFzdC1zZWFyY2gnKSB7
CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgYXR0cmlidXRlcwogICAgICAgICAgICAg
ICAgICAgICQoJyNTZWFyY2hJbnNlcnQnKS50ZXh0KCcnKTsKCiAgICAgICAgICAgICAgICAgICAg
Ly8gcmVtb3ZlIHJlbW90ZQogICAgICAgICAgICAgICAgICAgIFNlYXJjaFByb2ZpbGVEZWxldGUo
JCh0aGlzKS52YWwoKSk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsb2NhbAogICAg
ICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlKCk7CgogICAgICAgICAgICAgICAgICAgIC8v
IHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25h
bEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfSk7CgogICAgICAgICAgICBpZiAoJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAmJiAkKCcj
U2VhcmNoUHJvZmlsZScpLnZhbCgpID09PSAnbGFzdC1zZWFyY2gnKSB7CiAgICAgICAgICAgICAg
ICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLmhpZGUoKTsKICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgIH0pOwoKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJh
bSB7UHJvZmlsZX0gVGhlIHByb2ZpbGUgdGhhdCBpcyBzZXQgdG8gdGhlIHNlYXJjaCBkaWFsb2cK
ICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlZnJlc2gg
dGhlIHNlYXJjaCBkaWFsb2cgd2l0aCB0aGUgc2VsZWN0ZWQgcHJvZmlsZQogICAgICovCgogICAg
VGFyZ2V0TlMuTG9hZFByb2ZpbGUgPSBmdW5jdGlvbiAoUHJvZmlsZSkgewogICAgICAgIHZhciBC
YXNlTGluayA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgQWN0aW9u
ID0gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoOycsCiAgICAgICAgICAgIFN1YkFj
dGlvbiA9ICdTdWJhY3Rpb249QUpBWFVwZGF0ZTsnLAogICAgICAgICAgICBDbGFzc0lEID0gJ0Ns
YXNzSUQ9JyArICQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCkgKyAnOycsCiAgICAgICAgICAgIFNl
YXJjaFByb2ZpbGUgPSAnUHJvZmlsZT0nICsgUHJvZmlsZSwKICAgICAgICAgICAgVVJMID0gIEJh
c2VMaW5rICsgQWN0aW9uICsgU3ViQWN0aW9uICsgQ2xhc3NJRCArIFNlYXJjaFByb2ZpbGU7Cgog
ICAgICAgICQoJyNEaXZDbGFzc0lEJykuYWRkQ2xhc3MoJ3VpLWF1dG9jb21wbGV0ZS1sb2FkaW5n
Jyk7CiAgICAgICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0FKQVhVcGRhdGUnKSwgVVJM
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgVGFyZ2V0TlMuU2V0U2VhcmNoRGlhbG9nKCAnJEVu
dnsiQWN0aW9uIn0nICk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoUHJvZmlsZScpLnJlbW92
ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0lUU01TZWFyY2hGaWVsZHMnKS5yZW1v
dmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtU3VibWl0JykucmVt
b3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLnJlbW92ZUNs
YXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAv
KioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtFdmVudH0gQWN0aW9uCiAgICAgKiBA
cmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBvcGVuIHRoZSBzZWFyY2gg
ZGlhbG9nCiAgICAgKi8KCiAgICBUYXJnZXROUy5PcGVuU2VhcmNoRGlhbG9nID0gZnVuY3Rpb24g
KEFjdGlvbiwgUHJvZmlsZSwgQ2xhc3MpIHsKCiAgICAgICAgdmFyIFJlZmVycmVyID0gQ29yZS5D
b25maWcuR2V0KCdBY3Rpb24nKSwKICAgICAgICAgICAgRGF0YTsKCiAgICAgICAgaWYgKCFBY3Rp
b24pIHsKICAgICAgICAgICAgQWN0aW9uID0nQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCc7CiAg
ICAgICAgfQogICAgICAgIERhdGEgPSB7CiAgICAgICAgICAgIEFjdGlvbjogQWN0aW9uLAogICAg
ICAgICAgICBSZWZlcnJlcjogUmVmZXJyZXIsCiAgICAgICAgICAgIFByb2ZpbGU6IFByb2ZpbGUs
CiAgICAgICAgICAgIFN1YmFjdGlvbjogJ0FKQVgnLAogICAgICAgICAgICBDbGFzc0lEOiBDbGFz
cwogICAgICAgIH07CgogICAgICAgIFNob3dXYWl0aW5nRGlhbG9nKCk7CgogICAgICAgIENvcmUu
QUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxl
JyksCiAgICAgICAgICAgIERhdGEsCiAgICAgICAgICAgIGZ1bmN0aW9uIChIVE1MKSB7CiAgICAg
ICAgICAgICAgICAvLyBpZiB0aGUgd2FpdGluZyBkaWFsb2cgd2FzIGNhbmNlbGVkLCBkbyBub3Qg
c2hvdyB0aGUgc2VhcmNoCiAgICAgICAgICAgICAgICAvLyAgZGlhbG9nIGFzIHdlbGwKICAgICAg
ICAgICAgICAgIGlmICghJCgnLkRpYWxvZzp2aXNpYmxlJykubGVuZ3RoKSB7CiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIENvcmUu
VUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKEhUTUwsIENvcmUuQ29uZmlnLkdldCgnU2VhcmNo
TXNnJyksICcxMHB4JywgJ0NlbnRlcicsIHRydWUpOwogICAgICAgICAgICAgICAgVGFyZ2V0TlMu
U2V0U2VhcmNoRGlhbG9nKCk7CiAgICAgICAgICAgIH0sICdodG1sJwogICAgICAgICk7CiAgICB9
OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoIHx8
IHt9KSk7Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4KPG90cnNfY29uZmln
IHZlcnNpb249IjIuMCIgaW5pdD0iQ29uZmlnIj4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01DSUF0
dHJpYnV0ZUNvbGxlY3Rpb246OkFnZW50QmFja2VuZE1hcHBpbmciIFJlcXVpcmVkPSIxIiBWYWxp
ZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB2YWx1
ZXMgc2hvd24gZm9yIGFnZW50IHVzZXIgYXR0cmlidXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAg
IDxOYXZpZ2F0aW9uPlVzZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAg
ICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAwMCI+VXNlckZpcnN0bmFtZTwv
SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAwMSI+VXNlckxhc3RuYW1lPC9JdGVt
PgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMDAwIj5Vc2VyTG9naW48L0l0ZW0+CiAgICAg
ICAgICAgICAgICA8SXRlbSBLZXk9IjMwMDAiPlVzZXJFbWFpbDwvSXRlbT4KICAgICAgICAgICAg
PC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1l
PSJJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uOjpDb21wYW55QmFja2VuZE1hcHBpbmciIFJlcXVp
cmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+
RGVmaW5lcyBpbmZvcm1hdGlvbiBzaG93biBmb3IgQ0lBQ0N1c3RvbWVyQ29tcGFueSAoQ3VzdG9t
ZXJDb21wYW55IGJlZm9yZSBJVFNNIDMuMS43KSBhdHRyaWJ1dGVzLjwvRGVzY3JpcHRpb24+CiAg
ICAgICAgPE5hdmlnYXRpb24+Q0lBQ0N1c3RvbWVyQ29tcGFueTwvTmF2aWdhdGlvbj4KICAgICAg
ICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIx
MDAwIj5DdXN0b21lckNvbXBhbnlOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5
PSIyMDAwIj5DdXN0b21lckNvbXBhbnlTdHJlZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRl
bSBLZXk9IjMwMDAiPkN1c3RvbWVyQ29tcGFueVpJUDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJ
dGVtIEtleT0iMzAwMSI+Q3VzdG9tZXJDb21wYW55Q2l0eTwvSXRlbT4KICAgICAgICAgICAgPC9I
YXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJ
VFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uOjpDdXN0b21lckNvbXBhbnk6OkNvbnRlbnQiIFJlcXVp
cmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+
RGVmaW5lcyBpbmZvcm1hdGlvbiBpbXBvcnRlZC9leHBvcnRlZCBhcyBDSUFDQ3VzdG9tZXJDb21w
YW55IChDdXN0b21lckNvbXBhbnkgYmVmb3JlIElUU00gMy4xLjcpIGF0dHJpYnV0ZS48L0Rlc2Ny
aXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNJQUNDdXN0b21lckNvbXBhbnk8L05hdmlnYXRp
b24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIg
U2VsZWN0ZWRJRD0iQ3VzdG9tZXJJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9
Ik9wdGlvbiIgVmFsdWU9IkN1c3RvbWVySUQiPkN1c3RvbWVySUQ8L0l0ZW0+CiAgICAgICAgICAg
ICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1c3RvbWVyQ29tcGFueU5hbWUi
PkN1c3RvbWVyQ29tcGFueU5hbWU8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8
L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPCEtLSBDSSBFVkVOVCBSRUdJU1RSQVRJT05TIC0t
PgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzUw
Mi1SZWZyZXNoQ0lDbGFzc1JlZmVyZW5jZUxpbmtzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgog
ICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaGVzIGZvciBhdHRyaWJ1
dGVzIG9mIHR5cGUgQ0lDbGFzc1JlZmVyZW5jZSBpbiB0aGUgbmV3IENJcyB2ZXJzaW9uIGRhdGEg
YW5kIHJlZnJlc2hlcyBhbGwgbGlua3MgdG8gdGhhdCBjbGFzcy4gSXQgZGVsZXRlcyBsaW5rcyB0
byB0aGlzIGNsYXNzIGlmIHRoZSB2YWx1ZSBpcyBub3QgZXhpc3RlbnQgaW4gdGhlIENJcyB2ZXJz
aW9uIGRhdGEuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29u
ZmlnSXRlbUV2ZW50czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxI
YXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJ
VFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNJQ2xhc3NSZWZlcmVuY2VfUmVmcmVzaExpbmtzPC9JdGVt
PgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KFZlcnNpb25DcmVhdGUpPC9JdGVt
PgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAg
IDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyM1MDItUmVm
cmVzaFNlcnZpY2VSZWZlcmVuY2VMaW5rcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAg
ICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2hlcyBmb3IgYXR0cmlidXRlcyBv
ZiB0eXBlIFNlcnZpY2VSZWZlcmVuY2UgaW4gdGhlIG5ldyBDSXMgdmVyc2lvbiBkYXRhIGFuZCBy
ZWZyZXNoZXMgYWxsIGxpbmtzIHRvIHRoYXQgY2xhc3MuIEl0IGRlbGV0ZXMgbGlua3MgdG8gdGhp
cyBjbGFzcyBpZiB0aGUgdmFsdWUgaXMgbm90IGV4aXN0ZW50IGluIHRoZSBDSXMgdmVyc2lvbiBk
YXRhLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0
ZW1FdmVudHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4K
ICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNv
bmZpZ0l0ZW06OkV2ZW50OjpTZXJ2aWNlUmVmZXJlbmNlX1JlZnJlc2hMaW5rczwvSXRlbT4KICAg
ICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihWZXJzaW9uQ3JlYXRlKTwvSXRlbT4KICAg
ICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0
dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjNTAyLVJlZnJlc2hU
aWNrZXRSZWZlcmVuY2VMaW5rcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVz
Y3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2hlcyBmb3IgYXR0cmlidXRlcyBvZiB0eXBl
IENJQ2xhc3NSZWZlcmVuY2UgaW4gdGhlIG5ldyBDSXMgdmVyc2lvbiBkYXRhIGFuZCByZWZyZXNo
ZXMgYWxsIGxpbmtzIHRvIHRoYXQgY2xhc3MuIEl0IGRlbGV0ZXMgbGlua3MgdG8gdGhpcyBjbGFz
cyBpZiB0aGUgdmFsdWUgaXMgbm90IGV4aXN0ZW50IGluIHRoZSBDSXMgdmVyc2lvbiBkYXRhLjwv
RGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW1FdmVu
dHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAg
ICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0
ZW06OkV2ZW50OjpUaWNrZXRSZWZlcmVuY2VfUmVmcmVzaExpbmtzPC9JdGVtPgogICAgICAgICAg
ICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KFZlcnNpb25DcmVhdGUpPC9JdGVtPgogICAgICAgICAg
ICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gRU8gQ0kg
RVZFTlQgUkVHSVNUUkFUSU9OUyAtLT4KICAgIDwhLS0gcmVnaXN0ZXJpbmcgZm9yIGF1dG9jb21w
bGV0ZSBmdW5jdGlvbmFsaXR5IC0tPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpBZ2VudDo6
Q29tbW9uSlMjIyMxMDEtSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbiIgUmVxdWlyZWQ9IjEiIFZh
bGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIEpT
IGZpbGVzIHRvIGFsd2F5cyBiZSBsb2FkZWQgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNj
cmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTwvTmF2aWdhdGlvbj4K
ICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVt
PkNvcmUuQWdlbnQuUXVldWVTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5D
b3JlLkFnZW50LlNlcnZpY2VTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5D
b3JlLkFnZW50LlNMQVNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUu
QWdlbnQuQ3VzdG9tZXJDb21wYW55U2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0
ZW0+Q29yZS5BZ2VudC5DdXN0b21lclVzZXJDb21wYW55U2VhcmNoLmpzPC9JdGVtPgogICAgICAg
ICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5DSUNsYXNzU2VhcmNoLmpzPC9JdGVtPgogICAgICAg
ICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5Vc2VyU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAg
ICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5JVFNNQ0lUaWNrZXRTZWFyY2guanM8L0l0ZW0+CiAgICAg
ICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0
aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01DSVRpY2tldFNlYXJjaCIgUmVx
dWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIx
Ij5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwv
RGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVS
ZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRl
bSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNo
PgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAg
ICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAg
ICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRl
c2NyaXB0aW9uIj5Mb29rdXAgb2YgdGlja2V0cywgdXNlZCBmb3IgYXV0b2NvbXBsZXRpb248L0l0
ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+SVRTTUNJVGlja2V0U2Vh
cmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29u
ZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRl
bT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJv
bnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01DSVRpY2tldFNlYXJjaCMjIzAwMy1DSUF0dHJp
YnV0ZUNvbGxlY3Rpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0
aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3Jp
cHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3Ry
YXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAg
PEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRO
YXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAg
ICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0Fy
cmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJG
cm9udGVuZDo6TW9kdWxlIyMjQWdlbnRRdWV1ZVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIx
Ij4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUg
cmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAg
ICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmln
YXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250
ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAg
ICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAg
ICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgIDwv
SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5Mb29rdXAg
b2YgcXVldWVzLCB1c2VkIGZvciBhdXRvY29tcGxldGlvbjwvSXRlbT4KICAgICAgICAgICAgICAg
ICAgICA8SXRlbSBLZXk9IlRpdGxlIj5RdWV1ZVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAg
ICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAg
ICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwv
U2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRR
dWV1ZVNlYXJjaCMjIzAwMy1DSUF0dHJpYnV0ZUNvbGxlY3Rpb24iIFJlcXVpcmVkPSIwIiBWYWxp
ZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0
ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRl
bmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAg
ICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJ
dGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8
SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1
bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRp
bmc+CiAgICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50VXNlclNlYXJj
aCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRh
YmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJm
YWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpN
b2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAg
ICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAg
IDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAg
ICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8i
PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBL
ZXk9IkRlc2NyaXB0aW9uIj5Mb29rdXAgb2YgdXNlcnMsIHVzZWQgZm9yIGF1dG9jb21wbGV0aW9u
PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkFnZW50VXNlclNl
YXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNv
bmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0
ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZy
b250ZW5kOjpNb2R1bGUjIyNBZ2VudFNlcnZpY2VTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0i
MSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxl
IHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAg
ICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZp
Z2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9u
dGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAg
ICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAg
ICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICA8
L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+TG9va3Vw
IG9mIHNlcnZpY2VzLCB1c2VkIGZvciBhdXRvY29tcGxldGlvbjwvSXRlbT4KICAgICAgICAgICAg
ICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5TZXJ2aWNlU2VhcmNoPC9JdGVtPgogICAgICAgICAg
ICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAg
ICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgog
ICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNB
Z2VudFNlcnZpY2VTZWFyY2gjIyMwMDMtQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uIiBSZXF1aXJlZD0i
MCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4g
bWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9u
PkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlv
bj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxE
ZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAg
ICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAg
PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAg
PC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U0xB
U2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFu
c2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBp
bnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdl
bnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAg
ICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAg
ICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJh
eT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0g
S2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAg
ICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAg
ICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5Mb29rdXAgb2YgU0xBcywgdXNl
ZCBmb3IgYXV0b2NvbXBsZXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5
PSJUaXRsZSI+U0xBPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFy
TmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+
CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250
ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRTTEFTZWFyY2gjIyMwMDMtQ0lBdHRyaWJ1dGVDb2xsZWN0
aW9uIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xh
dGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAg
ICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWlu
TWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAg
ICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+
CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgog
ICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAg
ICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1v
ZHVsZSMjI0FnZW50Q3VzdG9tZXJDb21wYW55U2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEi
PgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSBy
ZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAg
ICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdh
dGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRl
bmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAg
ICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAg
ICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgPC9J
dGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkxvb2t1cCBv
ZiBjdXN0b21lciBjb21wYW5pZXMsIHVzZWQgZm9yIGF1dG9jb21wbGV0aW9uPC9JdGVtPgogICAg
ICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkNJQUNDdXN0b21lckNvbXBhbnlTZWFy
Y2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25m
aWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVt
PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9u
dGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50Q3VzdG9tZXJDb21wYW55U2VhcmNoIyMjMDAzLUNJQXR0
cmlidXRlQ29sbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3Jp
cHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNj
cmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lz
dHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAg
ICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVu
ZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAg
ICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwv
QXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9
IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEN1c3RvbWVyVXNlckNvbXBhbnlTZWFyY2giIFJlcXVp
cmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+
RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rl
c2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVn
aXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0g
VmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4K
ICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAg
ICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAg
ICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNj
cmlwdGlvbiI+TG9va3VwIG9mIGN1c3RvbWVyIHVzZXIgY29tcGFuaWVzLCB1c2VkIGZvciBhdXRv
Y29tcGxldGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5D
dXN0b21lclVzZXJDb21wYW55U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVt
IEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hh
c2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgog
ICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEN1c3RvbWVyVXNl
ckNvbXBhbnlTZWFyY2gjIyMwMDMtQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uIiBSZXF1aXJlZD0iMCIg
VmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVu
dSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZy
b250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4K
ICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZh
dWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAg
ICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9E
ZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9T
ZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50Q0lDbGFz
c1NlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJh
bnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQg
aW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFn
ZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAg
ICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAg
ICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAg
ICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdy
b3VwUm8iPgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8
SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5Mb29rdXAgb2YgQ0kgY2xhc3NlcywgdXNlZCBmb3IgYXV0
b2NvbXBsZXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+
Q0lDbGFzc1NlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJh
ck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAg
ICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5n
IE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRDSUNsYXNzU2VhcmNoIyMjMDAzLUNJ
QXR0cmlidXRlQ29sbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVz
Y3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9E
ZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJl
Z2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAg
ICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9u
dGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAg
ICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAg
IDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5h
bWU9IklUU01DSUF0dHJpYnV0ZUNvbGxlY3Rpb246OkZyb250ZW5kOjpDb21tb25TZWFyY2hBdXRv
Q29tcGxldGUjIyNBY3RpdmUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2Ny
aXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgYXV0b2NvbXBs
ZXRlIGZlYXR1cmUgZm9yIHRoZSBxdWV1ZSwgc2VydmljZSBhbmQgQ0ktY2xhc3Mgc2VhcmNoIGlu
IHRoZSBJVFNNIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0
aW9uPkZyb250ZW5kOjpBZ2VudDo6Q29tbW9uU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxW
YWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAg
ICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNJQXR0
cmlidXRlQ29sbGVjdGlvbjo6RnJvbnRlbmQ6OkNvbW1vblNlYXJjaEF1dG9Db21wbGV0ZSMjI0R5
bmFtaWNXaWR0aCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24g
VHJhbnNsYXRhYmxlPSIxIj5BZGFwdHMgdGhlIHdpZHRoIG9mIHRoZSBhdXRvY29tcGxldGUgZHJv
cCBkb3duIHRvIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgb3B0aW9uLjwvRGVzY3JpcHRpb24+
CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpDb21tb25TZWFyY2g8L05hdmln
YXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNr
Ym94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGlu
ZyBOYW1lPSJJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uOjpGcm9udGVuZDo6Q29tbW9uU2VhcmNo
QXV0b0NvbXBsZXRlIyMjTWluUXVlcnlMZW5ndGgiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAg
ICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyB0aGUgbWluaW11bSBudW1i
ZXIgb2YgY2hhcmFjdGVycyBiZWZvcmUgYXV0b2NvbXBsZXRlIHF1ZXJ5IGlzIHNlbnQuPC9EZXNj
cmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OkNvbW1vblNlYXJj
aDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlw
ZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzEtOV0kIj4yPC9JdGVtPgogICAgICAgIDwvVmFsdWU+
CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0
aW9uOjpGcm9udGVuZDo6Q29tbW9uU2VhcmNoQXV0b0NvbXBsZXRlIyMjTWF4UmVzdWx0c0Rpc3Bs
YXllZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNs
YXRhYmxlPSIxIj5TZXRzIHRoZSBtYXhpbWFsIG51bWJlciBvZiBzZWFyY2ggcmVzdWx0cyBmb3Ig
dGhlIGF1dG9jb21wbGV0ZSBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRp
b24+RnJvbnRlbmQ6OkFnZW50OjpDb21tb25TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZh
bHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxk
KyQiPjIwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGlu
ZyBOYW1lPSJJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uOjpGcm9udGVuZDo6Q29tbW9uU2VhcmNo
QXV0b0NvbXBsZXRlIyMjUXVlcnlEZWxheSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAg
ICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWxheSB0aW1lIGJldHdlZW4gYXV0b2Nv
bXBsZXRlIHF1ZXJpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVu
ZDo6QWdlbnQ6OkNvbW1vblNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAg
ICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzEtOV1bMC05XSok
Ij4xMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5n
IE5hbWU9IklUU01DSUF0dHJpYnV0ZUNvbGxlY3Rpb246OkZyb250ZW5kOjpDb21tb25TZWFyY2hB
dXRvQ29tcGxldGUjIyNUeXBlQWhlYWQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAg
PERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyBvciBkaXNhYmxlcyBUeXBlQWhl
YWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZmVhdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxO
YXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Q29tbW9uU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAg
ICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVk
SUQ9ImZhbHNlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1
ZT0iZmFsc2UiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRp
b24iIFZhbHVlPSJ0cnVlIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8
L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPCEtLSBFTyByZWdpc3RlcmluZyBmb3IgYXV0b2Nv
bXBsZXRlIGZ1bmN0aW9uYWxpdHkgLS0+Cjwvb3Ryc19jb25maWc+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8b3Ryc19jb25maWcg
dmVyc2lvbj0iMi4wIiBpbml0PSJBcHBsaWNhdGlvbiI+CiAgICA8Q1ZTPiRJZDogQXR0YWNobWVu
dFN0b3JhZ2UueG1sLHYgMS41IDIwMTQvMTIvMDEgMTE6NTI6NDkgbWlsbGluZ2VyIEV4cCAkPC9D
VlM+CiAgICA8U2V0dGluZyBOYW1lPSJBdHRhY2htZW50U3RvcmFnZTo6U3RvcmFnZUJhY2tlbmRN
b2R1bGVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFu
c2xhdGFibGU9IjEiPkEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIENJLWF0dGFjaG1lbnQgc3RvcmFn
ZSBiYWNrZW5kcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkF0dGFj
aG1lbnRTdG9yYWdlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhh
c2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Iktlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1l
bnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZURCIj4xPC9JdGVtPgogICAgICAgICAgICAgICAg
PEl0ZW0gS2V5PSJLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVu
dFN0b3JhZ2VGUyI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+
CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJBdHRhY2htZW50U3RvcmFnZTo6RGVm
YXVsdFN0b3JhZ2VCYWNrZW5kTW9kdWxlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAg
IDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGJhY2tlbmQgbW9kdWxl
IHVzZWQgZm9yIGF0dGFjaG1lbnQgc3RvcmFnZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZp
Z2F0aW9uPkNvcmU6OkF0dGFjaG1lbnRTdG9yYWdlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1
ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+S2Vy
bmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREI8L0l0
ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZy
b250ZW5kOjpNb2R1bGUjIyNBZ2VudEF0dGFjaG1lbnRTdG9yYWdlIiBSZXF1aXJlZD0iMCIgVmFs
aWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1v
ZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDSS1BZ2VudEF0dGFjaG1lbnRTdG9yYWdlIG9iamVj
dCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRp
b24+Q29yZTo6QXR0YWNobWVudFN0b3JhZ2U8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgog
ICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAg
ICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgog
ICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv
QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJ
dGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAg
ICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAg
ICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAg
ICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAg
ICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPlRvIGRvd25sb2FkIGF0dGFjaG1lbnRzPC9J
dGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAg
PC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZp
Z2F0aW9uIyMjQWdlbnRBdHRhY2htZW50U3RvcmFnZSMjIzAwMi1BdHRhY2htZW50U3RvcmFnZSIg
UmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxl
PSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8
TmF2aWdhdGlvbj5Db3JlOjpBdHRhY2htZW50U3RvcmFnZTwvTmF2aWdhdGlvbj4KICAgICAgICA8
VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBW
YWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+
CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRl
bT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgog
ICAgPFNldHRpbmcgTmFtZT0iQXR0YWNobWVudFN0b3JhZ2VGUzo6U3RvcmFnZURpcmVjdG9yeSIg
UmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxl
PSIxIj5UaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBmaWxlIHN5c3RlbSBiYWNr
ZW5kIHN0b3JlcyBuZXcgYXR0YWNobWVudHMuIFRoZSBwYXRoIG5lZWRzIHRvIGJlIHNwZWNpZmll
ZCByZWxhdGl2ZSB0byB0aGUgT1RSUy1Ib21lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmln
YXRpb24+Q29yZTo6QXR0YWNobWVudFN0b3JhZ2U8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVl
PgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj4vdmFy
L2F0dGFjaG1lbnRzPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICAgPC9TZXR0aW5nPgogICAg
PFNldHRpbmcgTmFtZT0iSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjo6QXR0YWNobWVudE1ENUNo
ZWNrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xh
dGFibGU9IjEiPkVuYWJsZXMgbWQ1IGNvbnRlbnQgY2hlY2sgZm9yIHVwbG9hZGVkIENJLWF0dGFj
aG1lbnQgY29udGVudC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkF0
dGFjaG1lbnRTdG9yYWdlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAg
PEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAg
PC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjo6
QXR0YWNobWVudFNpemVDaGVjayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVz
Y3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIHNpemUgY2hlY2sgZm9yIHVwbG9hZGVk
IENJLWF0dGFjaG1lbnRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6
QXR0YWNobWVudFN0b3JhZ2U8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAg
ICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAg
ICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+Cg==
IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FnZW50QXR0YWNobWVudFN0b3JhZ2UucG0gLSB0byBnZXQg
dGhlIGF0dGFjaG1lbnRzCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21i
SCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0
ZW4oZG90KVRoYXUoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogQW5uYShkb3QpTGl0dmlub3Zh
KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcnRpbihkb3QpQmFsemFyZWsoYXQpY2FwZShk
YXNoKWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUoZGFzaClpdChkb3Qp
ZGUKIwojIC0tCiMgJElkOiBBZ2VudEF0dGFjaG1lbnRTdG9yYWdlLnBtLHYgMS45IDIwMTYvMDUv
MTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxl
IENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90
IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwu
dHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRBdHRhY2htZW50U3RvcmFn
ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0g
KAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVt
OjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZScsCiAgICAnS2VybmVsOjpT
eXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCnN1YiBu
ZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBo
YXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYs
ICRUeXBlICk7CgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ICAgICAgICAgICAgPSAkS2VybmVs
OjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAkU2VsZi0+e0F0
dGFjaG1lbnRTdG9yYWdlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVt
OjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZScpOwogICAgJFNlbGYtPntM
b2dPYmplY3R9ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3Rl
bTo6TG9nJyk7CiAgICAkU2VsZi0+e1BhcmFtT2JqZWN0fSAgICAgICAgICAgICA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICByZXR1cm4gJFNl
bGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICRP
dXRwdXQgID0gJyc7CiAgICBteSAkQWxsb3dlZCA9IDE7CgogICAgIyBnZXQgcGFyYW1zLi4uCiAg
ICBteSAkQXR0YWNobWVudERpcmVjdG9yeUlEID0KICAgICAgICAkU2VsZi0+e1BhcmFtT2JqZWN0
fS0+R2V0UGFyYW0oIFBhcmFtID0+ICdBdHRhY2htZW50RGlyZWN0b3J5SUQnICk7CgogICAgIyBj
aGVjayBwYXJhbXMuLi4KICAgIGlmICggISRBdHRhY2htZW50RGlyZWN0b3J5SUQgKSB7CiAgICAg
ICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJv
cicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdBZ2VudEF0dGFjaG1lbnRTdG9yYWdlOiBOZWVk
IEF0dGFjaG1lbnREaXJlY3RvcnlJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxm
LT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIGdldCB0aGUgYXR0
YWNobWVudC4uLgogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJXsKICAgICAgICAkU2VsZi0+e0F0
dGFjaG1lbnRTdG9yYWdlT2JqZWN0fS0+QXR0YWNobWVudFN0b3JhZ2VHZXQoCiAgICAgICAgICAg
IElEID0+ICRBdHRhY2htZW50RGlyZWN0b3J5SUQsCiAgICAgICAgKQogICAgfTsKCiAgICBpZiAo
JUF0dGFjaG1lbnREYXRhKSB7CiAgICAgICAgJEF0dGFjaG1lbnREYXRhe0NvbnRlbnR9ICAgICA9
ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50UmVmfSB9OwogICAgICAgICRBdHRhY2htZW50RGF0
YXtGaWxlbmFtZX0gICAgPSAkQXR0YWNobWVudERhdGF7RmlsZU5hbWV9OwogICAgICAgICRBdHRh
Y2htZW50RGF0YXtDb250ZW50VHlwZX0gPSAkQXR0YWNobWVudERhdGF7UHJlZmVyZW5jZXN9LT57
RGF0YVR5cGV9OwogICAgICAgIHJldHVybiAkU2VsZi0+e0xheW91dE9iamVjdH0tPkF0dGFjaG1l
bnQoJUF0dGFjaG1lbnREYXRhKTsKCiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xv
Z09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAg
ICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCBpbiBkaXJlY3RvcnkgaW5kZXggKCRB
dHRhY2htZW50RGlyZWN0b3J5SUQpISAiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxm
LT57TGF5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgIH0KfQoKMTsK
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kZV9BdHRhY2htZW50U3RvcmFnZS5wbSAtIHRoZSBnZXJt
YW4gdHJhbnNsYXRpb24gb2YgQXR0YWNobWVudFN0b3JhZ2UKIyBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNiBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4v
ZWRpdGVkIGJ5OgojICogQW5uYShkb3QpTGl0dmlub3ZhKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBN
YXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZS1pdChkb3QpZGUKIyAtLQojICRJZDogZGVfQXR0YWNo
bWVudFN0b3JhZ2UucG0sdiAxLjkgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIwojIC0t
CiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBk
ZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9y
bWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0
dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQpwYWNrYWdlIEtlcm5lbDo6
TGFuZ3VhZ2U6OmRlX0F0dGFjaG1lbnRTdG9yYWdlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdz
Owp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgJFNlbGYt
PntUcmFuc2xhdGlvbn0tPnsnUmVtb3ZlIGF0dGFjaG1lbnQnfSA9ICdBbmxhZ2UgZW50ZmVybmVu
JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIGZpbGUgdG8gcmVwbGFjZSBj
dXJyZW50IGF0dGFjaG1lbnQnfSA9CiAgICAgICAgJ0RhdGVpYXVzd2FobCB1bSBha3QuIEFubGFn
ZSB6dSBlcnNldHplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIGNvbnRl
bnQgLSBmaWxlIHNpemUgb24gZGlzayBoYXMgYmVlbiBjaGFuZ2VkJ30gPQogICAgICAgICdVbmfD
vGx0aWdlciBJbmhhbHQgLSB0YXRzw6RjaGxpY2hlIERhdGVpZ3LDtsOfZSBoYXQgc2ljaCBnZcOk
bmRlcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBtZDVzdW0gLSBUaGUg
ZmlsZSBtaWdodCBoYXZlIGJlZW4gY2hhbmdlZCd9ID0KICAgICAgICAnVW5nw7xsdGlnZSBNRDUt
U3VtbWUgLSBEZXIgRGF0ZWlpbmhhbHQgd3VyZGUgd2FocnNjaGVpbmxpY2ggZ2XDpG5kZXJ0JzsK
ICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGJhY2tlbmQgbW9kdWxlIHVz
ZWQgZm9yIGF0dGFjaG1lbnQgc3RvcmFnZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgQmFj
a2VuZC1Nb2R1bCBmw7xyIGRpZSBTcGVpY2hlcnVuZyB2b24gQW5ow6RuZ2VuLic7CiAgICAkU2Vs
Zi0+e1RyYW5zbGF0aW9ufS0+eydBIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBDSS1hdHRhY2htZW50
IHN0b3JhZ2UgYmFja2VuZHMuJ30gPQogICAgICAgICdFaW5lIExpc3RlIGFsbGVyIHZlcmbDvGdi
YXJlciBCYWNrZW5kcyBmw7xyIGRpZSBTcGVpY2hlcnVuZyB2b24gQ0ktQW5ow6RuZ2VuLic7CiAg
ICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZv
ciB0aGUgQ0ktQWdlbnRBdHRhY2htZW50U3RvcmFnZSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVy
ZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kbW9kdWwtUmVnaXN0cmF0aW9uIGRlcyBDSS1BZ2Vu
dEF0dGFjaG1lbnRTdG9yYWdlLU9iamVrdHMgaW0gQWdlbnQtSW50ZXJmYWNlLic7CiAgICAkU2Vs
Zi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBm
aWxlIHN5c3RlbSBiYWNrZW5kIHN0b3JlcyBuZXcgYXR0YWNobWVudHMuIFRoZSBwYXRoIG5lZWRz
IHRvIGJlIHNwZWNpZmllZCByZWxhdGl2ZSB0byB0aGUgT1RSUy1Ib21lLid9ID0KICAgICAgICAn
UGZhZCB6dW0gVmVyemVpY2huaXMgaW4gd2VsY2hlbSB2b20gRGF0ZWlzeXN0ZW1zcGVpY2hlcm1v
ZHVsIChBdHRhY2htZW50U3RvcmFnZUZTKSBuZXVlIEFuaMOkbmdlIGFiZ2VsZWd0IHdlcmRlbi4g
RGVyIFBmYWQgd2lyZCByZWxhdGl2IHp1bSBPVFJTLUhvbWUgVmVyemVpY2huaXMgYW5nZWdlYmVu
Lic7Cgp9CgoxOw==
IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kZV9JVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uLnBtIC0g
dGhlIGdlcm1hbiB0cmFuc2xhdGlvbiBvZiBJVFNNQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uCiMgQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0
LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFN0ZWZhbihkb3QpTWVobGlnKGF0KWNhcGUt
aXQoZG90KWRlCiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAq
IE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDog
ZGVfSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbi5wbSx2IDEuNyAyMDE2LzA1LzE4IDA3OjQwOjQ3
IHR0byBFeHAgJAojCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBO
TyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcg
Zm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUg
dGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0t
CnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGVfSVRTTUNJQXR0cmlidXRlQ29sbGVjdGlvbjsK
CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAk
U2VsZiA9IHNoaWZ0OwoKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gbGluayBpbiBu
ZXcgd2luZG93J30gPSAnw5ZmZm5ldCBkZW4gTGluayBpbiBlaW5lbSBuZXVlbSBGZW5zdGVyJzsK
ICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdmFsdWVzIHNob3duIGZvciBhZ2Vu
dCB1c2VyIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdEZWZpbmllcnQgV2VydGUgZGllIGZ1ZXIg
QXR0cmlidXQgQWdlbnRlbm51dHplciBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1Ry
YW5zbGF0aW9ufS0+eydEZWZpbmVzIGluZm9ybWF0aW9uIHNob3duIGZvciBjb21wYW55IGF0dHJp
YnV0ZXMuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIHp1IGVpbmVtIENvbXBhbnlhdHRyaWJ1
dCBhbmdlemVpZ3RlbiBXZXJ0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5l
cyBpbmZvcm1hdGlvbiBpbXBvcnRlZC9leHBvcnRlZCBhcyBDdXN0b21lckNvbXBhbnkgYXR0cmli
dXRlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBiZWkgZWluZW0gQ3VzdG9tZXJDb21wYW55
LUF0dHJpYnV0IGltcG9ydGllcnRlbi9leHBvcnRpZXJ0ZW4gV2VydGUuJzsKICAgICRTZWxmLT57
VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGZvciBhdHRyaWJ1dGVzIG9mIHR5cGUgQ0lDbGFzc1Jl
ZmVyZW5jZSBpbiB0aGUgbmV3IENJcyB2ZXJzaW9uIGRhdGEgYW5kIHJlZnJlc2hlcyBhbGwgbGlu
a3MgdG8gdGhhdCBjbGFzcy4gSXQgZGVsZXRlcyBsaW5rcyB0byB0aGlzIGNsYXNzIGlmIHRoZSB2
YWx1ZSBpcyBub3QgZXhpc3RlbnQgaW4gdGhlIENJcyB2ZXJzaW9uIGRhdGEuJ30gPQogICAgICAg
ICdTdWNodCBuYWNoIEF0dHJpYnV0ZW4gdm9tIFR5cCBDSUNsYXNzUmVmZXJlbmNlIGluIGRlciBu
ZXVlbiBWZXJzaW9uIGRlcyBDSXMgdW5kIGFrdHVhbGlzaWVydCBhbGxlIFZlcmtudWVwZnVuZ2Vu
IHp1IENJcyBkaWVzZXIgS2xhc3NlLiBBbGxlIFZlcmtudWVwZnVuZ2VuIHp1IGRpZXNlciBLbGFz
c2UgenUgZGVuZW4ga2VpbiBXZXJ0IGluIGRlciBDSS1WZXJzaW9uIGV4aXN0aWVydCB3ZXJkZW4g
Z2Vsb2VzY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBmb3IgYXR0
cmlidXRlcyBvZiB0eXBlIFNlcnZpY2VSZWZlcmVuY2UgaW4gdGhlIG5ldyBDSXMgdmVyc2lvbiBk
YXRhIGFuZCByZWZyZXNoZXMgYWxsIGxpbmtzIHRvIHRoYXQgY2xhc3MuIEl0IGRlbGV0ZXMgbGlu
a3MgdG8gdGhpcyBjbGFzcyBpZiB0aGUgdmFsdWUgaXMgbm90IGV4aXN0ZW50IGluIHRoZSBDSXMg
dmVyc2lvbiBkYXRhLid9ID0KICAgICAgICAnU3VjaHQgbmFjaCBBdHRyaWJ1dGVuIHZvbSBUeXAg
U2VydmljZVJlZmVyZW5jZSBpbiBkZXIgbmV1ZW4gVmVyc2lvbiBkZXMgQ0lzIHVuZCBha3R1YWxp
c2llcnQgYWxsZSBWZXJrbnVlcGZ1bmdlbiB6dSBDSXMgZGllc2VyIEtsYXNzZS4gQWxsZSBWZXJr
bnVlcGZ1bmdlbiB6dSBkaWVzZXIgS2xhc3NlIHp1IGRlbmVuIGtlaW4gV2VydCBpbiBkZXIgQ0kt
VmVyc2lvbiBleGlzdGllcnQgd2VyZGVuIGdlbG9lc2NodC4nOwoKICAgICRTZWxmLT57VHJhbnNs
YXRpb259LT57J0Fzc2lnbmVkIFF1ZXVlJ30gICA9ICdadWdld2llc2VuZSBRdWV1ZSc7CiAgICAk
U2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBTZXJ2aWNlJ30gPSAnWnVnZW9yZG5ldGVy
IFNlcnZpY2UnOwoKfQoKMTs=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93
d3cuY2FwZS1pdC5kZQojIENvcHlyaWdodCAoQykgMjAxOCBQZXJsLVNlcnZpY2VzLmRlLCBodHRw
Oi8vcGVybC1zZXJ2aWNlcy5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnkKIyAqIEFubmEoZG90KUxp
dHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBSZW5lKGRvdClCb2VobShhdCljYXBl
KGRhc2gpaXQoZG90KWRlCiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3Qp
ZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQoj
ICRJZDogSVRTTV9DSUF0dHJpYnV0ZUNvbGxlY3Rpb24ucG0sdiAxLjE3IDIwMTYvMDUvMTggMDc6
NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVM
WSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJ
TkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2Vp
dmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Lgoj
IC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpJVFNNX0NJQXR0cmlidXRlQ29sbGVjdGlv
bjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0g
KAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnCik7Cgo9aGVhZDEgTkFNRQoKSVRTTV9D
SUF0dHJpYnV0ZUNvbGxlY3Rpb24ucG0gLSBjb2RlIHRvIGV4Y2VjdXRlIGR1cmluZyBwYWNrYWdl
IGluc3RhbGxhdGlvbgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgZnVuY3Rpb25zCgo9aGVhZDEgUFVC
TElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmpl
Y3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2Vy
bmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRD
b2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OklUU01fQ0lB
dHRyaWJ1dGVDb2xsZWN0aW9uJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQ
YXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUg
KTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29k
ZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxs
KCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNl
dHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFt7CiAgICAgICAgICAgIE5hbWUgICAgICAg
ICAgID0+ICdMb2FkZXI6OkFnZW50OjpDb21tb25KUyMjIzEwMC1Db25maWd1cmF0aW9uTWFuYWdl
bWVudCcsCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFsnSVRTTS5BZ2VudC5Db25maWdJ
dGVtLlNlYXJjaC5DSUF0dHJDb2xsLmpzJywnSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93Lmpz
J10sCiAgICAgICAgfV0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAx
Owp9Cgo9aXRlbSBDb2RlUmVpbnN0YWxsKCkKCnJ1biB0aGUgY29kZSByZWluc3RhbGwgcGFydAoK
ICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVJlaW5zdGFsbCgpOwoKPWN1dAoKc3Vi
IENvZGVSZWluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2Vs
Zi0+Q29kZVVuaW5zdGFsbCgpOwogICAgJFNlbGYtPkNvZGVJbnN0YWxsKCk7CgogICAgcmV0dXJu
IDE7Cn0KCj1pdGVtIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAg
ICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29k
ZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+Q29k
ZUluc3RhbGwoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVVuaW5zdGFsbCgpCgpydW4g
dGhlIGNvZGUgdW5pbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNv
ZGVVbmluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlVW5pbnN0YWxsIHsKICAgIG15ICggJFNlbGYs
ICVQYXJhbSApID0gQF87CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5
c0NvbmZpZycpLT5TZXR0aW5nUmVzZXQoCiAgICAgICAgTmFtZSAgID0+ICdMb2FkZXI6OkFnZW50
OjpDb21tb25KUyMjIzEwMC1Db25maWd1cmF0aW9uTWFuYWdlbWVudCcsCiAgICAgICAgVXNlcklE
ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBB
TkQgQ09ORElUSU9OUwoKVGhpcyBTb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3Qg
KGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkg
Tk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBm
b3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhp
cyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dAoK
PWhlYWQxIFZFUlNJT04KJFJldmlzaW9uOiAxLjE3ICQgJERhdGU6IDIwMTYvMDUvMTggMDc6NDA6
NDcgJAo9Y3V0Cg==
2018-05-05 12:58:06otrsvm-Standard-PC-i440FX-PIIX-1996