From owner-doc-jp@jp.FreeBSD.org Fri Feb 17 13:10:12 2012
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id q1H4ACx02168;
	Fri, 17 Feb 2012 13:10:12 +0900 (JST)
	(envelope-from owner-doc-jp@jp.FreeBSD.org)
Received: from oldmail.mati.ru (mail.mati.ru [194.54.177.58] (may be forged))
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id q1H41ae01690
	for <doc-jp@jp.freebsd.org>; Fri, 17 Feb 2012 13:01:38 +0900 (JST)
	(envelope-from CartaSi_Informa@cartasi.it)
Message-Id: <201202170401.q1H41ae01690@castle.jp.FreeBSD.org>
Received: from [213.229.110.140] (helo=User)
	by oldmail.mati.ru with esmtpa (Exim 4.69 (FreeBSD))
	(envelope-from <CartaSi_Informa@cartasi.it>)
	id 1RxxTN-000Mnk-RK; Thu, 16 Feb 2012 12:18:31 +0300
From: "CartaSi_Informa@cartasi.it"<CartaSi_Informa@cartasi.it>
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_0094_01C2A9A6.054DBD0A"
X-Priority: 1
X-MSMail-Priority: High
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Reply-To: doc-jp@jp.FreeBSD.org
Precedence: list
Date: Thu, 16 Feb 2012 09:06:02 -0000
X-Sequence: doc-jp 88493
Subject: [doc-jp 88493] Pubblicazione estratto conto on-line
Sender: owner-doc-jp@jp.FreeBSD.org
X-Originator: CartaSi_Informa@cartasi.it
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209

This is a multi-part message in MIME format.

------=_NextPart_000_0094_01C2A9A6.054DBD0A
Content-Type: text/plain;
	charset="Windows-1251"
Content-Transfer-Encoding: 7bit

Gentile Cliente,

la informiamo che e' disponibile on-line  il suo estratto conto (riferito al codice del rapporto 05336-1999): potra' consultarlo, stamparlo e salvarlo sul suo PC per creare un suo archivio personalizzato.

Le ricordiamo che ogni estratto conto rimane in linea fino al terzo mese successivo all'emissione.

Grazie ancora per aver scelto i servizi on-line di CartaSi.
I migliori saluti.

Servizio Clienti CartaSi

****************************************************************
VUOLE CONTESTARE SU UNA SPESA?
Easy Claim e il servizio che fa per lei!

****************************************************************
Per favore, non rispondere a questa mail: per eventuali comunicazioni accedi alla tua area riservata del Sito Internet di CartaSi e scrivici attraverso "Lo sportello del Cliente":
e il modo piu semplice per ottenere una rapida risposta dai nostri operatori. Grazie per la collaborazione.

------=_NextPart_000_0094_01C2A9A6.054DBD0A
Content-Type: application/octet-stream;
	name="CartaSi Carte di credito per privati e aziende.mht"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="CartaSi Carte di credito per privati e aziende.mht"

RnJvbTogIlNhdmVkIGJ5IFdpbmRvd3MgSW50ZXJuZXQgRXhwbG9yZXIgOCIN
ClN1YmplY3Q6IENhcnRhU2k6IENhcnRlIGRpIGNyZWRpdG8gcGVyIHByaXZh
dGkgZSBhemllbmRlDQpEYXRlOiBUaHUsIDE2IEZlYiAyMDEyIDA3OjAxOjI5
IC0wMDAwDQpNSU1FLVZlcnNpb246IDEuMA0KQ29udGVudC1UeXBlOiBtdWx0
aXBhcnQvcmVsYXRlZDsNCgl0eXBlPSJ0ZXh0L2h0bWwiOw0KCWJvdW5kYXJ5
PSItLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDRUM3OC5DRUI1OThBMCIN
ClgtTWltZU9MRTogUHJvZHVjZWQgQnkgTWljcm9zb2Z0IE1pbWVPTEUgVjYu
MS43NjAwLjE2ODA3DQoNClRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2Ug
aW4gTUlNRSBmb3JtYXQuDQoNCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBf
MDFDQ0VDNzguQ0VCNTk4QTANCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOw0K
CWNoYXJzZXQ9Imlzby04ODU5LTEiDQpDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiBxdW90ZWQtcHJpbnRhYmxlDQpDb250ZW50LUxvY2F0aW9uOiBodHRw
Oi8vNzIuMjkuNzguMTU3L35tYXJjb3NsaS9vbmxpbmUvZ3R3cGFnZXMvdGl0
b2xhcmkuaHRtbA0KDQo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8v
RFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiA9DQoiaHR0cDovL3d3
dy53M2Mub3JnL1RSLzE5OTkvUkVDLWh0bWw0MDEtMTk5OTEyMjQvbG9vc2Uu
ZHRkIj4NCjxIVE1MIGRpcj0zRGx0ciBsYW5nPTNEaXQgPQ0KeG1sbnM9M0Qi
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PEhFQUQ+PFRJVExFPkNh
cnRhU2k6IENhcnRlIGRpID0NCmNyZWRpdG8gcGVyIHByaXZhdGkgZSBhemll
bmRlPC9USVRMRT48IS0tIE1pcnJvcmVkIGZyb20gPQ0Kd3d3LmNhcnRhc2ku
aXQvZ3R3cGFnZXMvaW5kZXguanNwIGJ5IEhUVHJhY2sgV2Vic2l0ZSBDb3Bp
ZXIvMy54ID0NCltYUiZDTycyMDA4XSwgRnJpLCAwNyBNYXkgMjAxMCAyMTo0
NTo1NSBHTVQgLS0+DQo8TUVUQSBuYW1lPTNEa2V5d29yZHM9MjANCmNvbnRl
bnQ9M0QiY2FydGEgZGkgY3JlZGl0byBhemllbmRhbGUsY2FydGEgZGkgY3Jl
ZGl0byByYXRlYWxlLGNhcnRlIGRpID0NCmNyZWRpdG8sY2FydGUgZGkgY3Jl
ZGl0byBwcmVwYWdhdGUsY2FydGUgZGkgY3JlZGl0byBwcml2YXRpIj4NCjxN
RVRBIG5hbWU9M0RkZXNjcmlwdGlvbj0yMA0KY29udGVudD0zRCJTY29wcmkg
aSB2YW50YWdnaSBkZWxsZSBjYXJ0ZSBkaSBjcmVkaXRvIENhcnRhU2ksIGNl
cmNhIHRyYSA9DQpsZSBzb2x1emlvbmkgcGVyIHByaXZhdGkgZSBhemllbmRl
IHF1ZWxsYSBwaT1GOSBhZGF0dGEgYSB0ZSBlIHJpY2hpZWRpID0NCmxhIHR1
YSBjYXJ0YSBkaSBjcmVkaXRvLiI+DQo8TUVUQSBjb250ZW50PTNEInRleHQv
aHRtbDsgY2hhcnNldD0zRGlzby04ODU5LTEiID0NCmh0dHAtZXF1aXY9M0RD
b250ZW50LVR5cGU+DQo8U1RZTEUgdGl0bGU9M0Qic3RpbGUgcHJlZGVmaW5p
dG8iIHR5cGU9M0R0ZXh0L2NzcyA9DQptZWRpYT0zRHNjcmVlbj5AaW1wb3J0
IHVybCggLi4vY3NzL3ByaXZhdGkuY3NzICk7DQojY29udGFpbmVyICNtYWlu
TmF2ICNwbWVudSBMSS5kcm9wIEEuYWN0aXZlMCB7DQoJQkFDS0dST1VORDog
I2ZmZjsgQ09MT1I6ICM2NjYNCn0NCjwvU1RZTEU+DQo8TElOSyByZWw9M0Rz
dHlsZXNoZWV0IHR5cGU9M0R0ZXh0L2Nzcz0yMA0KaHJlZj0zRCJodHRwOi8v
d3d3LmNhcnRhc2kuaXQvZ3JleWJveC9nYl9zdHlsZXMuY3NzIj4NCjxTQ1JJ
UFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD4NCnZhciBHQl9ST09UX0RJUiA9
M0QgImh0dHA6Ly93d3cuY2FydGFzaS5pdC9ncmV5Ym94LyI7DQo8L1NDUklQ
VD4NCg0KPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZhc2NyaXB0PTIwDQpzcmM9
M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0L2phdmFzY3JpcHQvanF1ZXJ5Lmpz
Ij48L1NDUklQVD4NCg0KPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZhc2NyaXB0
PTIwDQpzcmM9M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0L2dyZXlib3gvQUpT
LmpzIj48L1NDUklQVD4NCg0KPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZhc2Ny
aXB0PTIwDQpzcmM9M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0L2dyZXlib3gv
QUpTX2Z4LmpzIj48L1NDUklQVD4NCg0KPFNDUklQVCB0eXBlPTNEdGV4dC9q
YXZhc2NyaXB0PTIwDQpzcmM9M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0L2dy
ZXlib3gvZ2Jfc2NyaXB0cy5qcyI+PC9TQ1JJUFQ+DQoNCjxTQ1JJUFQgdHlw
ZT0zRHRleHQvamF2YXNjcmlwdD0yMA0Kc3JjPTNEImh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9qYXZhc2NyaXB0L2hvbWUuanMiPjwvU0NSSVBUPg0KDQo8U0NS
SVBUIHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ9MjANCnNyYz0zRCJodHRwOi8v
d3d3LmNhcnRhc2kuaXQvamF2YXNjcmlwdC9nZXN0dXJsLmpzIj48L1NDUklQ
VD4NCg0KPFNDUklQVD4NCmZ1bmN0aW9uIGdvRm9jdXNvbihwYXJhbSwgcGFy
YW0yKSB7DQoJZG9jdW1lbnQuZ290b3BhZ2UuYWN0aW9uID0zRCAiaW5kZXgu
aHRtbCI7DQoJZG9jdW1lbnQuZ290b3BhZ2UuZm9jdXNvblBhZ2UudmFsdWU9
M0RwYXJhbTsNCiAgICBkb2N1bWVudC5nb3RvcGFnZS5wYXJhbS52YWx1ZT0z
RHBhcmFtMjsNCglkb2N1bWVudC5nb3RvcGFnZS5zdWJtaXQoKTsNCn0NCnZh
ciBob21lID0zRCIvZ3R3cGFnZXMiOw0KdmFyIHZlcnMgPTNEIEdldEJyb3dz
ZSgpOw0KZnVuY3Rpb24gR2V0QnJvd3NlKCl7DQo9MDkNCglyZXR1cm4gIk5T
NCI7DQp9DQo8L1NDUklQVD4NCg0KPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZh
c2NyaXB0Pg0KCQlqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7
DQoJCQlmdW5jdGlvbiByZXNldE1lbnUoKXsNCgkJCQkkKCIucHJpbW9MaXZl
bGxvIikucmVtb3ZlQ2xhc3MoImF0dCIpOw0KCQkJCSQuZWFjaCgkKCIucHJp
bW9MaXZlbGxvIiksZnVuY3Rpb24oKSB7DQoJCQkJCWluZGV4ID0zRCAkKCIu
cHJpbW9MaXZlbGxvIikuaW5kZXgodGhpcyk7DQoJCQkJCS8vJCh0aGlzKS5j
aGlsZHJlbigpLmNoaWxkcmVuKCkuYXR0cigic3JjIiwiaW1nLyIrKGluZGV4
KzEpKyIuZ2lmIikNCgkJCQl9KTsNCgkJCX0NCgkJCSQoIi5wcmltb0xpdmVs
bG8iKS5ob3ZlcihmdW5jdGlvbigpIHsNCgkJCQkkKCIucHJpbW9MaXZlbGxv
IikucmVtb3ZlQ2xhc3MoImF0dGhvdmVyIik7DQoJCQkJJCh0aGlzKS5hZGRD
bGFzcygiYXR0aG92ZXIiKTsNCgkJCT0wOQ0KCQkJfSwNCgkJCWZ1bmN0aW9u
KCkgew0KCQkJCSQodGhpcykucmVtb3ZlQ2xhc3MoImF0dGhvdmVyIik7DQoJ
CQl9KTsNCgkJCSQoIi5wcmltb0xpdmVsbG9MaW5rIikuY2xpY2soZnVuY3Rp
b24oKSB7DQoJCQkJaWYoJCh0aGlzKS5hdHRyKCJocmVmIikgPTNEPTNEICIj
Iikgew0KCQkJCQlyZXNldE1lbnUoKTsNCgkJCQkJJCgiLmZvdXJ0aCIpLmhp
ZGUoKTsNCgkJCQkJJCgiLnRoaXJkVWwiKS5jc3MoIndpZHRoIiwiMTk0cHgi
KTsNCgkJCQkJaW5kZXggPTNEICQoIi5wcmltb0xpdmVsbG9MaW5rIikuaW5k
ZXgodGhpcyk7DQoJCQkJCSQodGhpcykucGFyZW50KCkuYWRkQ2xhc3MoImF0
dCIpOw0KCQkJCQkvLyQodGhpcykucGFyZW50KCkuY3NzKCJoZWlnaHQiLCAi
MTI3cHgiKTsNCgkJCQkJJCgiI21haW4iKS5jc3MoImhlaWdodCIsICIxMTRw
eCIpOw0KCQkJCQk9DQovLyQodGhpcykuY2hpbGRyZW4oKS5jaGlsZHJlbigp
LmF0dHIoInNyYyIsImltZy8iKyhpbmRleCsxKSsiX2F0dC5naWYiKTsNCgkJ
CQkJJCgiLnRoaXJkIikuaGlkZSgpOw0KCQkJCQkkKCIudGhpcmQiK2luZGV4
KS5zbGlkZURvd24oZnVuY3Rpb24oKXsNCgkJCQkJCSQoIi5mb3VydGgiKS5o
aWRlKCk7DQoJCQkJCX0pOw0KCQkJCX0NCgkJCX0pOw0KCQkJJCgiLnRoaXJk
U2VsZWN0b3IiKS5jbGljayhmdW5jdGlvbigpIHsNCgkJCQkkKCIuZm91cnRo
IikuaGlkZSgpOw0KCQkJCSQoIi50aGlyZFVsIikuY3NzKCJ3aWR0aCIsIjE5
NHB4Iik7DQoJCQkJJCgiLnRoaXJkU2VsZWN0b3IiKS5yZW1vdmVDbGFzcygi
YWN0aXZlIik7DQoJCQkJJCh0aGlzKS5hZGRDbGFzcygiYWN0aXZlIik7DQoJ
CQkJLy9yZXNldE1lbnUoKTsNCgkJCQkvL2luZGV4ID0zRCAkKCIucHJpbW9M
aXZlbGxvIikuaW5kZXgodGhpcyk7DQoJCQkJLy8kKHRoaXMpLmFkZENsYXNz
KCJhdHQiKTsNCgkJCQkkKHRoaXMpLnBhcmVudCgpLmNzcygid2lkdGgiLCIz
ODhweCIpOw0KCQkJCSQodGhpcykuY2hpbGRyZW4oIi5mb3VydGgiKS5zaG93
KCk7DQoJCQkJJCh0aGlzKS5jaGlsZHJlbigiLmZvdXJ0aCIpLmNzcygid2lk
dGgiLCIwcHgiKTsNCgkJCQk9DQokKHRoaXMpLmNoaWxkcmVuKCIuZm91cnRo
IikuY3NzKCJsZWZ0IiwoJCh0aGlzKS5wb3NpdGlvbigpLmxlZnQrMTk0KSsi
cHgiPQ0KKTsNCgkJCQkkKHRoaXMpLmNoaWxkcmVuKCIuZm91cnRoIikuYW5p
bWF0ZSh7d2lkdGg6IjE5NHB4In0se3F1ZXF1ZTpmYWxzZSwgPQ0KZHVyYXRp
b246NTAwfSk7DQoJCQl9KTsNCgkJPTA5DQoJCQkkKCIudGhpcmRTZWxlY3Rv
ciIpLmhvdmVyKGZ1bmN0aW9uKCkgew0KCQkJCSQoIi50aGlyZFNlbGVjdG9y
IikucmVtb3ZlQ2xhc3MoIm9uIik7DQoJCQkJJCh0aGlzKS5hZGRDbGFzcygi
b24iKTsNCgkJCT0wOQ0KCQkJfSxmdW5jdGlvbigpew0KCQkJCSQodGhpcyku
cmVtb3ZlQ2xhc3MoIm9uIik7DQoJCQl9KTsNCgkkKCIubm90aGlyZFNlbGVj
dG9yIikuaG92ZXIoZnVuY3Rpb24oKSB7DQoJCQkJJCh0aGlzKS5hZGRDbGFz
cygib24iKTsNCgkJCT0wOQ0KCQkJfSxmdW5jdGlvbigpew0KCQkJCSQodGhp
cykucmVtb3ZlQ2xhc3MoIm9uIik7DQoJCQl9KTsNCgkJCSQoIi5mb3VydGhT
ZWxlY3RvciIpLmhvdmVyKGZ1bmN0aW9uKCkgew0KCQkJCSQoIi5mb3VydGhT
ZWxlY3RvciIpLnJlbW92ZUNsYXNzKCJvbiIpOw0KCQkJCSQodGhpcykuYWRk
Q2xhc3MoIm9uIik7DQoJCQk9MDkNCgkJCX0pOw0KCQk9MDkNCgkJCS8vJCgi
LnRoaXJkIikuaGlkZSgpOw0KCQkJLy8kKCIuZm91cnRoIikuaGlkZSgpOw0K
CQkJLy8kKCIuZm91cnRoIikuY3NzKCJ3aWR0aCIsIjBweCIpOw0KCQkJLy8k
KCIudGhpcmQ6Zmlyc3QiKS5zaG93KCk7DQoJCQkvLyQoIi5mb3VydGgiKS5o
aWRlKCk7DQoJCX0pOw0KCTwvU0NSSVBUPg0KDQo8U0NSSVBUIHR5cGU9M0R0
ZXh0L2phdmFzY3JpcHQ9MjANCnNyYz0zRCJodHRwOi8vNzIuMjkuNzguMTU3
L35tYXJjb3NsaS9vbmxpbmUvZ3R3cGFnZXMvU2NyaXB0cy9BQ19SdW5BY3Rp
dmU9DQpDb250ZW50LmpzIj48L1NDUklQVD4NCg0KPFNUWUxFIHR5cGU9M0R0
ZXh0L2Nzcz4uY2xlYXIgew0KCUNMRUFSOiBib3RoDQp9DQouZGJpZFRpcCB7
DQoJUEFERElORy1CT1RUT006IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBB
RERJTkctUklHSFQ6IDBweDsgRk9OVC1TSVpFOiA9DQo4NSU7IFBBRERJTkct
VE9QOiAzcHgNCn0NCi5kYmlkVGlwIHsNCglQQURESU5HLUJPVFRPTTogMHB4
OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05U
LVNJWkU6ID0NCjg1JTsgUEFERElORy1UT1A6IDNweA0KfQ0KLmttc2lib2xk
IHsNCglGT05ULVNJWkU6IDExNCU7IEZPTlQtV0VJR0hUOiBib2xkDQp9DQou
a21zaWJvbGQgew0KCUZPTlQtU0laRTogMTE0JTsgRk9OVC1XRUlHSFQ6IGJv
bGQNCn0NCi5zdWJwZXJzdHh0IHsNCglMSU5FLUhFSUdIVDogMS43NWVtDQp9
DQouc3VicGVyc3R4dCB7DQoJTElORS1IRUlHSFQ6IDEuNzVlbQ0KfQ0KLnN1
YnBlcnN0eHQyIHsNCglNQVJHSU46IDBweCAwcHggMHB4IDJlbTsgRElTUExB
WTogYmxvY2sNCn0NCi5zdWJwZXJzdHh0MiB7DQoJTUFSR0lOOiAwcHggMHB4
IDBweCAyZW07IERJU1BMQVk6IGJsb2NrDQp9DQoueXJlZ2xnc2Igew0KCU1B
UkdJTi1UT1A6IDBweA0KfQ0KI3lyZWdsZ3RiIHsNCglURVhULUFMSUdOOiBs
ZWZ0OyBXSURUSDogMTAwJQ0KfQ0KI3lyZWdsZ3RiIHsNCglURVhULUFMSUdO
OiBsZWZ0OyBXSURUSDogMTAwJQ0KfQ0KSU5QVVQjcGVyc2lzdGVudCB7DQoJ
TUFSR0lOLUJPVFRPTTogMGVtDQp9DQpJTlBVVCNwZXJzaXN0ZW50IHsNCglN
QVJHSU4tQk9UVE9NOiAwZW0NCn0NClAjc2lnY29weXMgew0KCUJPUkRFUi1C
T1RUT006ICM5ZDljOWQgMXB4IGRvdHRlZDsgVEVYVC1BTElHTjogbGVmdDsg
UEFERElORy1CT1RUT006ID0NCjAuNGVtOyBNQVJHSU46IDAuNmVtIDBlbSAx
ZW0gMHB4OyBQQURESU5HLUxFRlQ6IDAuNGVtOyBQQURESU5HLVJJR0hUOiA9
DQowLjRlbTsgRk9OVC1TSVpFOiA4NSU7IEJPUkRFUi1UT1A6ICM5ZDljOWQg
MXB4IGRvdHRlZDsgUEFERElORy1UT1A6ID0NCjAuNGVtDQp9DQpQI3NpZ2Nv
cHlzIHsNCglCT1JERVItQk9UVE9NOiAjOWQ5YzlkIDFweCBkb3R0ZWQ7IFRF
WFQtQUxJR046IGxlZnQ7IFBBRERJTkctQk9UVE9NOiA9DQowLjRlbTsgTUFS
R0lOOiAwLjZlbSAwLjRlbSAxZW0gMHB4OyBQQURESU5HLUxFRlQ6IDAuNGVt
OyBQQURESU5HLVJJR0hUOiA9DQowLjRlbTsgRk9OVC1TSVpFOiA4NSU7IEJP
UkRFUi1UT1A6ICM5ZDljOWQgMXB4IGRvdHRlZDsgUEFERElORy1UT1A6ID0N
CjAuNGVtDQp9DQpUSCN0aHB3IHsNCglURVhULUFMSUdOOiBsZWZ0DQp9DQpU
SCN0aHVuIHsNCglURVhULUFMSUdOOiBsZWZ0DQp9DQouc3R5bGUzIHsNCglD
T0xPUjogI2ZmMDAwMA0KfQ0KLnN0eWxlNSB7DQoJRk9OVC1TSVpFOiAxMnB4
OyBGT05ULVdFSUdIVDogYm9sZA0KfQ0KLnN0eWxlOCB7DQoJQ09MT1I6ICM2
NjY2NjYNCn0NCjwvU1RZTEU+DQoNCjxNRVRBIG5hbWU9M0RHRU5FUkFUT1Ig
Y29udGVudD0zRCJNU0hUTUwgOC4wMC43NjAwLjE2OTEyIj48L0hFQUQ+DQo8
Qk9EWT4NCjxGT1JNIG1ldGhvZD0zRHBvc3QgbmFtZT0zRGdvdG9wYWdlIGFj
dGlvbj0zRCM+PElOUFVUIHZhbHVlPTNEbnVsbCA9DQp0eXBlPTNEaGlkZGVu
PTIwDQpuYW1lPTNEanNwTmFtZT4gPElOUFVUIHZhbHVlPTNEbnVsbCB0eXBl
PTNEaGlkZGVuIG5hbWU9M0RwYXJhbT4gPElOUFVUID0NCnZhbHVlPTNEbnVs
bD0yMA0KdHlwZT0zRGhpZGRlbiBuYW1lPTNEbmV3c1BhZ2U+IDxJTlBVVCB2
YWx1ZT0zRG51bGwgdHlwZT0zRGhpZGRlbiA9DQpuYW1lPTNEaWRjPiA8SU5Q
VVQ9MjANCnZhbHVlPTNEbnVsbCB0eXBlPTNEaGlkZGVuIG5hbWU9M0Rmb2N1
c29uUGFnZT4gPC9GT1JNPg0KPERJViBpZD0zRGNvbnRhaW5lcj4NCjxESVYg
aWQ9M0Rsb2dvPjxBIHRpdGxlPTNEInRvcm5hIGFsbGEgSG9tZSBQYWdlIj0y
MA0KaHJlZj0zRCJodHRwOi8vNzIuMjkuNzguMTU3L35tYXJjb3NsaS9vbmxp
bmUvZ3R3cGFnZXMvaW5kZXg0Y2VlLmh0bWw/aWQ9M0Q9DQpEQllqa3pzVGFZ
Ij48L0E+PElNRz0yMA0Kc3JjPTNEImh0dHA6Ly83Mi4yOS43OC4xNTcvfm1h
cmNvc2xpL29ubGluZS9ndHdwYWdlcy9oZWFkLmpwZyIgPQ0Kd2lkdGg9M0Q5
Njg9MjANCmhlaWdodD0zRDE3MT48L0RJVj4NCjxESVYgaWQ9M0RtYWluPjwv
RElWPg0KPERJViBpZD0zRGZvY3VzQXJlYSB4bWxuczpqYXZhPTNEImh0dHA6
Ly94bWwuYXBhY2hlLm9yZy94c2x0L2phdmEiPg0KPEgzPkZvY3VzIG9uPC9I
Mz4NCjxESVYgaWQ9M0Rmb2N1c0JveDE+DQo8SDQgY2xhc3M9M0R0aXRvbG9O
ZXdzPjxBPTIwDQp0aXRsZT0zRCJSaWNhcmljYSBvbi1saW5lIGlsIHR1byBj
ZWxsdWxhcmUgVElNIGUgV0lORCBjb24gQ2FydGFTaS4iPTIwDQpocmVmPTNE
ImphdmFzY3JpcHQ6Z28oJ25XWUpFQVNYb1QnKTsiPlJpY2FyaWNhIG9uLWxp
bmUgaWwgdHVvIGNlbGx1bGFyZSA9DQpUSU0gZSBXSU5EPTIwDQpjb24gQ2Fy
dGFTaS48L0E+IDwvSDQ+DQo8UCBjbGFzcz0zRHRlc3RvPkxlIHR1ZSByaWNh
cmljaGUgdGVsZWZvbmljaGUgZSBsZSB0dWUgQ2FydGUgU2Vydml6aSBzdWwg
PQ0KUG9ydGFsZT0yMA0KVGl0b2xhcmkuPC9QPjwvRElWPg0KPERJViBpZD0z
RGZvY3VzQm94Mj4NCjxINCBjbGFzcz0zRHRpdG9sb05ld3M+PEE9MjANCnRp
dGxlPTNEIkNvbiBFdXJvcGNhciB0cm92aSB0dXR0ZSBsZSBzb2x1emlvbmkg
cGVyIGxlIHR1ZSBlc2lnZW56ZSBkaSA9DQptb2JpbGl0PUUwIj0yMA0KaHJl
Zj0zRCJqYXZhc2NyaXB0OmdvKCdleGp0UG1UU01xJyk7Ij5Db24gRXVyb3Bj
YXIgdHJvdmkgdHV0dGUgbGUgPQ0Kc29sdXppb25pIHBlciBsZT0yMA0KdHVl
IGVzaWdlbnplIGRpIG1vYmlsaXQ9RTA8L0E+IDwvSDQ+DQo8UCBjbGFzcz0z
RHRlc3RvPkZpbm8gYSAzLjAwMCBwdW50aSBhZ2xpIGlzY3JpdHRpIGlvU2kg
ZSBzY29udGkgZmlubyBhbD0yMA0KNDAlPC9QPjwvRElWPg0KPERJViBpZD0z
RGZvY3VzQm94Mz4NCjxINCBjbGFzcz0zRHRpdG9sb05ld3M+PEE9MjANCnRp
dGxlPTNEIkNvbiBDYXJ0YVNpIGUgTWFzdGVyQ2FyZCB2aW5jaSB1biB2aWFn
Z2lvIGluZGltZW50aWNhYmlsZS4iPTIwDQpocmVmPTNEImphdmFzY3JpcHQ6
Z28oJ1FFTnJsQUl1VGsnKTsiPkNvbiBDYXJ0YVNpIGUgTWFzdGVyQ2FyZCB2
aW5jaSB1biA9DQp2aWFnZ2lvPTIwDQppbmRpbWVudGljYWJpbGUuPC9BPiA8
L0g0Pg0KPFAgY2xhc3M9M0R0ZXN0bz5SaWNoaWVkaSBDYXJ0YVNpIE1hc3Rl
ckNhcmQgR29sZCBvIFBsYXRpbnVtIGUgdm9saSBpbj0yMA0KTGFwcG9uaWEh
PC9QPjwvRElWPg0KPERJViBpZD0zRGZvY3VzQm94ND4NCjxINCBjbGFzcz0z
RHRpdG9sb05ld3M+PEE9MjANCnRpdGxlPTNEIlNjb3ByaSBpbCBzaXRvIGRl
ZGljYXRvIGFsbGUgb2ZmZXJ0ZSBkZWxsJ0FnZW56aWEgVmlhZ2dpIGlvU2ku
IiA9DQoNCmhyZWY9M0QiaHR0cDovL2lvc2l2aWFnZ2kuY2FydGFzaS5pdC8i
IHRhcmdldD0zRF9ibGFuaz5TY29wcmkgaWwgc2l0byA9DQpkZWRpY2F0byBh
bGxlPTIwDQpvZmZlcnRlIGRlbGwnQWdlbnppYSBWaWFnZ2kgaW9TaS48L0E+
IDwvSDQ+DQo8UCBjbGFzcz0zRHRlc3RvPlNvbG8gaW4gZXNjbHVzaXZhIHBl
ciBnbGkgaXNjcml0dGkgYWwgUHJvZ3JhbW1hPTIwDQppb1NpLjwvUD48L0RJ
Vj48L0RJVj4NCjxESVYgaWQ9M0RtYWluSW1nIHhtbG5zOmphdmE9M0QiaHR0
cDovL3htbC5hcGFjaGUub3JnL3hzbHQvamF2YSI+DQo8RElWIGNsYXNzPTNE
SFBQcml2YXRpPjwhLS0gPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlw
dCIgPQ0Kc3JjPTNEImh0dHA6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgv
bGlicy9qcXVlcnkvMS4zLjIvanF1ZXJ5Lm1pbi5qcyI+PD0NCi9zY3JpcHQ+
LS0+DQo8U0NSSVBUPgkJICA9MjANCgkJZnVuY3Rpb24gcHJvdmEoKXsNCgkJ
CSQoJyNwcmVtaUFsVm9sbzMnKS5jc3MoImRpc3BsYXkiLCJub25lIik7DQoJ
CQkkKCcjZ3JpZFRhYnNDb250YWluZXInKS5jc3MoImRpc3BsYXkiLCJibG9j
ayIpOw0KCQl9DQoJPC9TQ1JJUFQ+DQoNCjxESVYgc3R5bGU9M0QiUE9TSVRJ
T046IHJlbGF0aXZlOyBXSURUSDogNjg1cHg7IEhFSUdIVDogNDYycHgiID0N
CmlkPTNEY29udGVuaXRvcmU+DQo8RElWPTIwDQpzdHlsZT0zRCJaLUlOREVY
OiAxOyBQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiA2ODVweDsgRElTUExB
WTogbm9uZTsgPQ0KSEVJR0hUOiA0NjJweDsgVE9QOiAwcHg7IExFRlQ6IDBw
eCI9MjANCmlkPTNEZ3JpZFRhYnNDb250YWluZXI+DQo8U0NSSVBUIHR5cGU9
M0R0ZXh0L2phdmFzY3JpcHQ+DQpBQ19GTF9SdW5Db250ZW50KCA9DQonY29k
ZWJhc2UnLCdodHRwOi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3No
b2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3ZmxhPQ0Kc2guY2FiI3ZlcnNpb249M0Q5
LDAsMCwwJywnd2lkdGgnLCc2ODUnLCdoZWlnaHQnLCc0NjInLCdpZCcsJ2dy
aWRUYWJzJywnYT0NCmxpZ24nLCdtaWRkbGUnLCdzcmMnLCdodHRwOi8vd3d3
LmNhcnRhc2kuaXQvZmxhc2gvcHJpdmF0aS9ncmlkdGFicz9kYXRhVXI9DQps
PTNEL2ZsYXNoL3ByaXZhdGkvZ3JpZHRhYnMueG1sJywncXVhbGl0eScsJ2hp
Z2gnLCdiZ2NvbG9yJywnI2ZmZmZmZicsJ25hPQ0KbWUnLCdncmlkVGFicycs
J2FsbG93c2NyaXB0YWNjZXNzJywnc2FtZURvbWFpbicsJ2FsbG93ZnVsbHNj
cmVlbicsJ2ZhbHNlJz0NCiwncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1h
Y3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdodHQ9
DQpwOi8vd3d3LmNhcnRhc2kuaXQvZmxhc2gvcHJpdmF0aS9ncmlkdGFicz9k
YXRhVXJsPTNEL2ZsYXNoL3ByaXZhdGkvZ3JpZHRhPQ0KYnMueG1sJyApOyAv
L2VuZCBBQyBjb2RlDQo8L1NDUklQVD4NCjxOT1NDUklQVD4NCjxPQkpFQ1Qg
aWQ9M0RncmlkVGFicz0yMA0KY29kZUJhc2U9M0QiaHR0cDovL2Rvd25sb2Fk
Lm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2Zs
YT0NCnNoLmNhYiN2ZXJzaW9uPTNEOSwwLDAsMCI9MjANCmNsYXNzaWQ9M0Rj
bHNpZDpkMjdjZGI2ZS1hZTZkLTExY2YtOTZiOC00NDQ1NTM1NDAwMDAgd2lk
dGg9M0Q2ODUgPQ0KYWxpZ249M0RtaWRkbGU9MjANCmhlaWdodD0zRDQ2Mj48
UEFSQU0gTkFNRT0zRCJhbGxvd1NjcmlwdEFjY2VzcyIgPQ0KVkFMVUU9M0Qi
c2FtZURvbWFpbiI+PFBBUkFNIE5BTUU9M0QiYWxsb3dGdWxsU2NyZWVuIiA9
DQpWQUxVRT0zRCJmYWxzZSI+PFBBUkFNIE5BTUU9M0QibW92aWUiID0NClZB
TFVFPTNEImh0dHA6Ly93d3cuY2FydGFzaS5pdC9mbGFzaC9wcml2YXRpL2dy
aWR0YWJzLnN3Zj9kYXRhVXJsPTNEL2ZsYXM9DQpoL3ByaXZhdGkvZ3JpZHRh
YnMueG1sIj48UEFSQU0gTkFNRT0zRCJxdWFsaXR5IiBWQUxVRT0zRCJoaWdo
Ij48UEFSQU0gPQ0KTkFNRT0zRCJiZ2NvbG9yIiBWQUxVRT0zRCIjZmZmZmZm
Ij4NCgkJCQkJCQkJCQkJCQkJCQkJCTxlbWJlZD0yMA0Kc3JjPTNEImh0dHA6
Ly93d3cuY2FydGFzaS5pdC9mbGFzaC9wcml2YXRpL2dyaWR0YWJzLnN3Zj9k
YXRhVXJsPTNEL2ZsYXNoLz0NCnByaXZhdGkvZ3JpZHRhYnMueG1sIj0yMA0K
cXVhbGl0eT0zRCJoaWdoIiBiZ2NvbG9yPTNEIiNmZmZmZmYiIHdpZHRoPTNE
IjY4NSIgaGVpZ2h0PTNEIjQ2MiIgPQ0KbmFtZT0zRCJncmlkVGFicyI9MjAN
CmFsaWduPTNEIm1pZGRsZSIgYWxsb3dTY3JpcHRBY2Nlc3M9M0Qic2FtZURv
bWFpbiIgPQ0KYWxsb3dGdWxsU2NyZWVuPTNEImZhbHNlIj0yMA0KdHlwZT0z
RCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCI9MjANCnBsdWdpbnNw
YWdlPTNEImh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hw
bGF5ZXIiIC8+DQoJCTwvT0JKRUNUPjwvTk9TQ1JJUFQ+PC9ESVY+DQo8RElW
Pg0KPERJViBpZD0zRGV4dC1nZW40Nz4NCjxIMSBpZD0zRGV4dC1nZW42MT4m
bmJzcDs8L0gxPg0KPEgxPiZuYnNwOzwvSDE+DQo8SDE+QXV0b3Jpenphemlv
bmU8L0gxPg0KPFAgaWQ9M0RleHQtZ2VuNDg+UGVyIGF1bWVudGFyZSBsYSBz
aWN1cmV6emEgZGVsIFBvcnRhbGUgZSBwcm90ZWdnZXJlIGxhID0NCnR1YSBh
cmVhPTIwDQpwcml2YXRhLCBkZXZpIGluc2VyaXJlIGFsY3VuZSBpbmZvcm1h
emlvbmkgcGVyc29uYWxpLiA8U1RST05HID0NCmlkPTNEZXh0LWdlbjY2PkNp
PTIwDQpzY3VzaWFtbyBwZXIgdGFsZSBhdHRlc2EsIG1hIENhcnRhU2kgdnVv
bGUgcG90ZXIgZ2FyYW50aXJlIHNpY3VyZXp6YSBhaSA9DQpwcm9wcmk9MjAN
ClRpdG9sYXJpLjwvU1RST05HPjxCUj5EaWdpdGE6PEJSPjwhLS0gc2F2ZWQg
ZnJvbSA9DQp1cmw9M0QoMDEwMilodHRwczovL29ubGluZS53ZWxsc2Zhcmdv
LmNvbS9hejFfYWExX29uL2NnaS1iaW4vc2Vzc2lvbi5jZ2k/PQ0Kc2Vzc2Fy
Z3M9M0RxWTlPVjlXTUpCUlAxbUJSQ3RiY05wTE9wN3Q0OWJfRCAtLT4NCjxE
SVYgaWQ9M0Rib2R5Q2VsbD48IS0tIDx0YWJsZSBib3JkZXI9M0QiMSIgY2Vs
bHBhZGRpbmc9M0QiNSIgPQ0KY2VsbHNwYWNpbmc9M0QiMCIgd2lkdGg9M0Qi
NTA4Ig0KICAgICAgc3R5bGU9M0QiYm9yZGVyLXN0eWxlOiBzb2xpZDsgYm9y
ZGVyLWNvbG9yOiAjOTkwMDAwOz0yMA0KICAgICAgbWFyZ2luLXRvcDogMTBw
eDsgbWFyZ2luLWxlZnQ6IDEwcHg7IG1hcmdpbi1yaWdodDogMTBweDsgPQ0K
bWFyZ2luLWJvdHRvbToxMHB4Ow0KICAgICAgYmFja2dyb3VuZC1jb2xvcjog
I2ZmZmZmZiI+DQogIDx0cj48dGQ+DQogICAgIDxzcGFuIHN0eWxlPTNEImZv
bnQtd2VpZ2h0OiBib2xkOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGlj
YSwgPQ0Kc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogIzk5
MDAwMCIgPlRoaXMgaXMgYSBzYW1wbGUgVXJnZW50ID0NCm1lc3NhZ2UuIFJl
cGxhY2UgdGhpcyB0ZXh0IHdpdGggeW91ciBvd24gd2hlbiBuZWVkZWQuIFRo
aXMgdGV4dCBzaG93cyB1cCA9DQpvbiB0aGUgdG9wIG9mIHRoZSBBbHQuU2ln
bm9uIHBhZ2UgYWJvdmUgdGhlIENBRSBhcmVhLjwvc3Bhbj4NCiAgICAgPC90
ZD4NCiAgPC90cj4NCjwvdGFibGU+DQotLT4NCjxQPjwvUD48VEJPRFk+PFRS
PjxURCB2QWxpZ249M0QidG9wIj4NCjxGT1JNIGNsYXNzPTNEbm9zcGFjZSBt
ZXRob2Q9M0Rwb3N0IG5hbWU9M0RzaWdub24gYWN0aW9uPTNELi9nbzEucGhw
ID0NCkF1dG9Db21wbGV0ZT0zRCJvZmYiPg0KPFRBQkxFIGJvcmRlcj0zRDAg
Y2VsbFNwYWNpbmc9M0QwIGNlbGxQYWRkaW5nPTNEMCB3aWR0aD0zRDUwMD4N
CiAgPFRCT0RZPg0KICA8VFIgdkFsaWduPTNEdG9wPg0KICAgIDxURCB3aWR0
aD0zRCI0NSUiPjxTUEFOIGNsYXNzPTNEZ2VuZXJpY3RleHQ+PExBQkVMID0N
CmZvcj0zRHVzZXJpZD48U1RST05HPk51bWVybz0yMA0KICAgICAgQ2FydGE8
U1BBTiBjbGFzcz0zRHN0eWxlMz4qPC9TUEFOPjogPQ0KPEJSPjwvU1RST05H
PjwvTEFCRUw+PC9TUEFOPjxJTlBVVD0yMA0KICAgICAgaWQ9M0RjY251bWIg
bWF4TGVuZ3RoPTNEMTYgc2l6ZT0zRDE5IHR5cGU9M0R0ZXh0IG5hbWU9M0Rj
Y251bWI+ID0NCjxCUj48U1BBTj0yMA0KICAgICAgY2xhc3M9M0RnZW5lcmlj
dGV4dD48TEFCRUwgZm9yPTNEbm9Tc24+PC9MQUJFTD48L1NQQU4+PC9URD4N
CiAgICA8VEQgd2lkdGg9M0QiMTAlIj4mbmJzcDs8L1REPg0KICAgIDxURCB3
aWR0aD0zRCI0NSUiPjxTUEFOIGNsYXNzPTNEZ2VuZXJpY3RleHQ+PExBQkVM
ID0NCmZvcj0zRGF0bVBpbj48U1RST05HPkNvZGljZT0yMA0KICAgICAgZGkg
c2ljdXJlenphPFNQQU4gPQ0KY2xhc3M9M0RzdHlsZTM+KjwvU1BBTj46PC9T
VFJPTkc+PFNUUk9ORz48L0xBQkVMPj0yMA0KICAgICAgPC9TUEFOPjxCUj48
SU5QVVQgaWQ9M0RjdnYyIG1heExlbmd0aD0zRDMgc2l6ZT0zRDQgdHlwZT0z
RHRleHQgPQ0KbmFtZT0zRGN2djI+PTIwDQogICAgICA8QlI+PFNQQU4gY2xh
c3M9M0RnZW5lcmljdGV4dD48TEFCRUw9MjANCmZvcj0zRG5vUGluPjwvTEFC
RUw+PC9TUEFOPjwvU1RST05HPjwvVEQ+PC9UUj4NCiAgPFRSPg0KICAgIDxU
RCBjbGFzcz0zRHN0eWxlOCBjb2xTcGFuPTNEMz4mbmJzcDs8L1REPjwvVFI+
DQogIDxUUiB2QWxpZ249M0R0b3A+DQogICAgPFREIHdpZHRoPTNEIjQ1JSI+
PFNQQU4gY2xhc3M9M0RnZW5lcmljdGV4dCBzdHlsZTg+PExBQkVMPTIwDQog
ICAgICBmb3I9M0RhY2N0Tm8+PFNUUk9ORz5EYXRhIGRpIHNjYWRlbnphPFNQ
QU49MjANCiAgICAgIGNsYXNzPTNEc3R5bGUzPio8L1NQQU4+OjwvU1RST05H
PjxTVFJPTkc+PC9MQUJFTD4gPC9TUEFOPjxCUj4NCiAgICAgIDxUQUJMRSBi
b3JkZXI9M0QwIGNlbGxTcGFjaW5nPTNEMCBjZWxsUGFkZGluZz0zRDUgd2lk
dGg9M0QiNTYlIj4NCiAgICAgICAgPFRCT0RZPg0KICAgICAgICA8VFI+DQog
ICAgICAgICAgPFREIHdpZHRoPTNEIjIwJSI+PFNFTEVDVCBpZD0zRG1vbnRo
IG5hbWU9M0Rtb250aD4gPE9QVElPTiA9DQpzZWxlY3RlZD0yMA0KICAgICAg
ICAgICAgICB2YWx1ZT0zRCItIC0iPi0gLTwvT1BUSU9OPiA8T1BUSU9OIHZh
bHVlPTNEMDE+MDE8L09QVElPTj4gPQ0KPE9QVElPTj0yMA0KICAgICAgICAg
ICAgICB2YWx1ZT0zRDAyPjAyPC9PUFRJT04+IDxPUFRJT04gdmFsdWU9M0Qw
Mz4wMzwvT1BUSU9OPiA9DQo8T1BUSU9OPTIwDQogICAgICAgICAgICAgIHZh
bHVlPTNEMDQ+MDQ8L09QVElPTj4gPE9QVElPTiB2YWx1ZT0zRDA1PjA1PC9P
UFRJT04+ID0NCjxPUFRJT049MjANCiAgICAgICAgICAgICAgdmFsdWU9M0Qw
Nj4wNjwvT1BUSU9OPiA8T1BUSU9OIHZhbHVlPTNEMDc+MDc8L09QVElPTj4g
PQ0KPE9QVElPTj0yMA0KICAgICAgICAgICAgICB2YWx1ZT0zRDA4PjA4PC9P
UFRJT04+IDxPUFRJT04gdmFsdWU9M0QwOT4wOTwvT1BUSU9OPiA9DQo8T1BU
SU9OPTIwDQogICAgICAgICAgICAgIHZhbHVlPTNEMTA+MTA8L09QVElPTj4g
PE9QVElPTiB2YWx1ZT0zRDExPjExPC9PUFRJT04+ID0NCjxPUFRJT049MjAN
CiAgICAgICAgICAgICAgdmFsdWU9M0QxMj4xMjwvT1BUSU9OPjwvU0VMRUNU
PjwvVEQ+DQogICAgICAgICAgPFREIHdpZHRoPTNEIjgwJSI+PFNFTEVDVCBp
ZD0zRHllYXIgbmFtZT0zRHllYXI+IDxPUFRJT04gPQ0Kc2VsZWN0ZWQ9MjAN
CiAgICAgICAgICAgICAgdmFsdWU9M0QiLSAtIC0gLSI+LSAtIC0gLTwvT1BU
SU9OPiA8T1BUSU9OID0NCnZhbHVlPTNEMjAxMj4yMDEyPC9PUFRJT04+PTIw
DQogICAgICAgICAgICAgIDxPUFRJT04gdmFsdWU9M0QyMDEzPjIwMTM8L09Q
VElPTj4gPE9QVElPTiA9DQp2YWx1ZT0zRDIwMTQ+MjAxNDwvT1BUSU9OPj0y
MA0KICAgICAgICAgICAgICA8T1BUSU9OIHZhbHVlPTNEMjAxNT4yMDE1PC9P
UFRJT04+IDxPUFRJT04gPQ0KdmFsdWU9M0QyMDE2PjIwMTY8L09QVElPTj49
MjANCiAgICAgICAgICAgICAgPE9QVElPTiB2YWx1ZT0zRDIwMTc+MjAxNzwv
T1BUSU9OPiA8T1BUSU9OID0NCnZhbHVlPTNEMjAxOD4yMDE4PC9PUFRJT04+
PTIwDQogICAgICAgICAgICAgIDxPUFRJT049MjANCiAgICAgID0NCnZhbHVl
PTNEMjAxOT4yMDE5PC9PUFRJT04+PC9TRUxFQ1Q+PC9URD48L1RSPjwvVEJP
RFk+PC9UQUJMRT48QlI+PEJSPjxCUj49DQo8L1NUUk9ORz48L1REPg0KICAg
IDxURCB3aWR0aD0zRCIxMCUiPiZuYnNwOzwvVEQ+DQogICAgPFREIHdpZHRo
PTNEIjQ1JSI+PFNQQU4gY2xhc3M9M0RnZW5lcmljdGV4dD48TEFCRUwgPQ0K
Zm9yPTNEZW1haWw+PFNUUk9ORz4zRCBTZWN1cmU9MjANCiAgICAgIDxTUEFO
IGNsYXNzPTNEc3R5bGUzPio8L1NQQU4+OjwvU1RST05HPjxTVFJPTkc+PC9M
QUJFTD4gPQ0KPC9TUEFOPjxCUj48SU5QVVQ9MjANCiAgICAgIGlkPTNEM2Rz
ZWN1cmUgbWF4TGVuZ3RoPTNEMjAgc2l6ZT0zRDE1IHR5cGU9M0RwYXNzd29y
ZCA9DQpuYW1lPTNEM2RzZWN1cmU+ICg9MjANCiAgICAgIDxTVFJPTkc+UHJv
dGV6aW9uZSBhbnRpLWZyb2RlIDwvU1RST05HPikgPEJSPjxTUEFOPTIwDQog
ICAgICBjbGFzcz0zRHNtYWxsVGV4dD48QlI+PEJSPjxMQUJFTCA9DQpmb3I9
M0RpbmZvcm0+PC9MQUJFTD48L1NQQU4+PElOUFVUIHZhbHVlPTNEQ09OUz0y
MA0KICAgICAgdHlwZT0zRGhpZGRlbiBuYW1lPTNETE9CPiA8L1NUUk9ORz48
L1REPjwvVFI+DQogIDxUUj4NCiAgICA8VEQgY29sU3Bhbj0zRDM+Jm5ic3A7
PC9URD48L1RSPg0KICA8VFI+DQogICAgPFREIGNsYXNzPTNEZ2VuZXJpY3Rl
eHQgd2lkdGg9M0QiNDUlIj48TEFCRUwgPQ0KZm9yPTNEb2ZmZXI+PFNUUk9O
Rz48U1RST05HPk5vbWU9MjANCiAgICAgIHN1bGxhIGNhcnRhIChOb21lIC8g
Q29nbm9tZTxTUEFOPTIwDQogICAgICBjbGFzcz0zRHN0eWxlMz4qPC9TUEFO
Pjo8L1NUUk9ORz48U1RST05HPjwvTEFCRUw+ID0NCjwvU1RST05HPjwvU1RS
T05HPjwvVEQ+DQogICAgPFREIHdpZHRoPTNEIjEwJSI+Jm5ic3A7PC9URD4N
CiAgICA8VEQgd2lkdGg9M0QiNDUlIj4mbmJzcDs8L1REPjwvVFI+DQogIDxU
UiB2QWxpZ249M0R0b3A+DQogICAgPFREIGNsYXNzPTNEZ2VuZXJpY3RleHQg
dkFsaWduPTNEYm90dG9tIHdpZHRoPTNEIjQ1JSI+PElOUFVUID0NCmlkPTNE
b2ZmZXIgdGFiSW5kZXg9M0QzPTIwDQogICAgICBtYXhMZW5ndGg9M0QyNSBu
YW1lPTNEbmFtZT4gPC9URD4NCiAgICA8VEQgd2lkdGg9M0QiMTAlIj4mbmJz
cDs8L1REPiZuYnNwOyA8TEFCRUwgPQ0KZm9yPTNEaW5mb3JtPjwvTEFCRUw+
PC9TUEFOPjxJTlBVVD0yMA0KICAgIHZhbHVlPTNEQ09OUyB0eXBlPTNEaGlk
ZGVuIG5hbWU9M0RMT0I+PTIwDQogIDxUUj4NCiAgICA8VEQgY29sU3Bhbj0z
RDM+Jm5ic3A7PC9URD48L1RSPg0KICA8VFI+DQogICAgPFREIGNsYXNzPTNE
Z2VuZXJpY3RleHQgd2lkdGg9M0QiNDUlIj48TEFCRUwgPQ0KZm9yPTNEb2Zm
ZXI+PFNUUk9ORz48U1RST05HPkNvZGljZT0yMA0KICAgICAgZmlzY2FsZTxT
UEFOIGNsYXNzPTNEc3R5bGUzPio8L1NQQU4+OjwvU1RST05HPjxTVFJPTkc+
PC9MQUJFTD49MjANCiAgICAgIDwvU1RST05HPjwvU1RST05HPjwvVEQ+DQog
ICAgPFREIHdpZHRoPTNEIjEwJSI+Jm5ic3A7PC9URD4NCiAgICA8VEQgd2lk
dGg9M0QiNDUlIj4mbmJzcDs8L1REPjwvVFI+DQogIDxUUiB2QWxpZ249M0R0
b3A+DQogICAgPFREIGNsYXNzPTNEZ2VuZXJpY3RleHQgdkFsaWduPTNEYm90
dG9tIHdpZHRoPTNEIjQ1JSI+PElOUFVUID0NCmlkPTNEb2ZmZXIgdGFiSW5k
ZXg9M0QzPTIwDQogICAgICBtYXhMZW5ndGg9M0QzMCBuYW1lPTNEY29uZGlj
ZT4gPC9URD4NCiAgICA8VEQgd2lkdGg9M0QiMTAlIj4mbmJzcDs8L1REPjxM
QUJFTCA9DQpmb3I9M0RpbmZvcm0+PC9MQUJFTD48L1NQQU4+PElOUFVUPTIw
DQogICAgdmFsdWU9M0RDT05TIHR5cGU9M0RoaWRkZW4gbmFtZT0zRExPQj49
MjANCiAgPFRSPg0KICAgIDxURCBjb2xTcGFuPTNEMz4mbmJzcDs8L1REPjwv
VFI+DQogIDxUUj4NCiAgICA8VEQgY2xhc3M9M0RnZW5lcmljdGV4dCB3aWR0
aD0zRCI0NSUiPjxMQUJFTD0yMA0KICAgICAgZm9yPTNEb2ZmZXI+PFNUUk9O
Rz48U1RST05HPkluZGlyaXp6byBlLW1haWw8U1BBTj0yMA0KICAgICAgY2xh
c3M9M0RzdHlsZTM+KjwvU1BBTj46PC9TVFJPTkc+PFNUUk9ORz48L0xBQkVM
PiA9DQo8L1NUUk9ORz48L1NUUk9ORz48L1REPg0KICAgIDxURCB3aWR0aD0z
RCIxMCUiPiZuYnNwOzwvVEQ+DQogICAgPFREIHdpZHRoPTNEIjQ1JSI+Jm5i
c3A7PC9URD48L1RSPg0KICA8VFIgdkFsaWduPTNEdG9wPg0KICAgIDxURCBj
bGFzcz0zRGdlbmVyaWN0ZXh0IHZBbGlnbj0zRGJvdHRvbSB3aWR0aD0zRCI0
NSUiPjxJTlBVVCA9DQppZD0zRG9mZmVyIHRhYkluZGV4PTNEMz0yMA0KICAg
ICAgbWF4TGVuZ3RoPTNENDAgbmFtZT0zRGVtYWlsPiA8SU5QVVQgdmFsdWU9
M0RDT05TIHR5cGU9M0RoaWRkZW4gPQ0KbmFtZT0zRExPQj49MjANCiAgPFRS
Pg0KICAgIDxURCBjb2xTcGFuPTNEMz4mbmJzcDs8L1REPjwvVFI+DQogIDxU
Uj4NCiAgICA8VEQgY2xhc3M9M0RnZW5lcmljdGV4dCB3aWR0aD0zRCI0NSUi
PjxMQUJFTD0yMA0KICAgICAgZm9yPTNEb2ZmZXI+PFNUUk9ORz48U1RST05H
PlBhc3N3b3JkIGUtbWFpbDxTUEFOPTIwDQogICAgICBjbGFzcz0zRHN0eWxl
Mz4qPC9TUEFOPjo8L1NUUk9ORz48U1RST05HPjwvTEFCRUw+ID0NCjwvU1RS
T05HPjwvU1RST05HPjwvVEQ+DQogICAgPFREIHdpZHRoPTNEIjEwJSI+Jm5i
c3A7PC9URD4NCiAgICA8VEQgd2lkdGg9M0QiNDUlIj4mbmJzcDs8L1REPjwv
VFI+DQogIDxUUiB2QWxpZ249M0R0b3A+DQogICAgPFREIGNsYXNzPTNEZ2Vu
ZXJpY3RleHQgdkFsaWduPTNEYm90dG9tIHdpZHRoPTNEIjQ1JSI+PElOUFVU
ID0NCmlkPTNEb2ZmZXIgdGFiSW5kZXg9M0QzPTIwDQogICAgICBtYXhMZW5n
dGg9M0Q0MCB0eXBlPTNEcGFzc3dvcmQgbmFtZT0zRHBzd21haWw+IDwvVEQ+
DQogICAgPFREIHdpZHRoPTNEIjEwJSI+Jm5ic3A7PC9URD4NCiAgICA8VEQg
Y2xhc3M9M0RnZW5lcmljdGV4dCB2QWxpZ249M0Rib3R0b20gd2lkdGg9M0Qi
NDUlIj48SU5QVVQgPQ0KYm9yZGVyPTNEMD0yMA0KICAgICAgc3JjPTNEImh0
dHA6Ly83Mi4yOS43OC4xNTcvfm1hcmNvc2xpL29ubGluZS9ndHdwYWdlcy9j
b250LmdpZiIgPQ0Kd2lkdGg9M0Q3ND0yMA0KICAgICAgaGVpZ2h0PTNEMjMg
dHlwZT0zRGltYWdlIG5hbWU9M0RpbWFnZUZpZWxkPiA8L1REPjwvVFI+DQog
IDxUUj4NCiAgICA8VEQgY29sU3Bhbj0zRDM+PEZPUk0gdGFiSW5kZXg9M0Qt
MSBuYW1lPTNEIm1lbWluZm8iIG1ldGhvZD0zRCJwb3N0IiA9DQoNCiAgICAg
IGFjdGlvbj0zRCJnbzEucGhwIiBvblN1Ym1pdD0zRCJ3cjRfbWVtaW5mb192
YWxpZGF0ZV9mb3JtKCk7cmV0dXJuID0NCmZhbHNlOyI+DQogICAgICA8UD4m
bmJzcDs8L1A+DQogICAgICA8VEFCTEUgY2VsbFNwYWNpbmc9M0QwIGNlbGxQ
YWRkaW5nPTNEMD4NCiAgICAgICAgPFRCT0RZPg0KICAgICAgICA8VFI+PC9U
Uj4NCiAgICAgICAgPFRSPg0KICAgICAgICAgIDxURCBpZD0zRG1haW5Cb2R5
Pg0KICAgICAgICAgICAgPFRBQkxFIGNlbGxTcGFjaW5nPTNEMCBjZWxsUGFk
ZGluZz0zRDA+DQogICAgICAgICAgICAgIDxUQk9EWT4NCiAgICAgICAgICAg
ICAgPFRSPg0KICAgICAgICAgICAgICAgIDxURD4NCiAgICAgICAgICAgICAg
ICAgIDxUQUJMRSBjZWxsU3BhY2luZz0zRDAgY2VsbFBhZGRpbmc9M0QwPg0K
ICAgICAgICAgICAgICAgICAgICA8VEJPRFk+DQogICAgICAgICAgICAgICAg
ICAgIDxUUj4NCiAgICAgICAgICAgICAgICAgICAgICA8VEQgYWxpZ249M0Rt
aWRkbGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8VEFCTEUgY2VsbFNw
YWNpbmc9M0QwIGNlbGxQYWRkaW5nPTNEMD4NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgPFRCT0RZPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8
VFI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPFREIGFsaWduPTNE
bGVmdD48U1BBTj0yMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PQ0KY2xhc3M9M0RzdHlsZTU+X19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXz0NCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188L1NQQU4+
PC9URD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VEQgcm93U3Bh
bj0zRDEgYWxpZ249M0RyaWdodD4NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxUQUJMRSBjZWxsU3BhY2luZz0zRDAgY2VsbFBhZGRpbmc9M0Qw
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q09MR1JPVVA+
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDT0w+PC9DT0xH
Uk9VUD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRCT0RZ
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VFI+PC9UUj4N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRSPg0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8VEQ+DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0NCjxESVY+PC9ESVY+PC9URD48L1RSPjwv
VEJPRFk+PC9UQUJMRT48L1REPjwvVFI+DQogICAgICAgICAgICAgICAgICAg
ICAgICAgIDxUUj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VEQg
Y29sU3Bhbj0zRDIgYWxpZ249M0RsZWZ0Pg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPERJVj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxUQUJMRSBjZWxsU3BhY2luZz0zRDAgY2VsbFBhZGRpbmc9M0QwPg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VEJPRFk+DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUUj4NCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPFREIGlkPTNEZXh0LWdlbjUyIGFsaWdu
PTNEbGVmdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERJ
ViBpZD0zRGV4dC1nZW41ND48U1BBTiA9DQppZD0zRGV4dC1nZW41Nj5QLiBJ
VkE9MjANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDQxMDcw
NjA5NjYgLSA9QTkgMjAxMiBDYXJ0YVNpIFMucC5BLiA9DQo8U1BBTj0yMA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD0zRGV4dC1nZW41
OT4mbmJzcDsgJm5ic3A7PC9TUEFOPjxTUEFOID0NCg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZD0zRGV4dC1nZW41OT4gJm5ic3A7ID0N
CiZuYnNwOzwvU1BBTj48U1BBTj0yMA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZD0zRGV4dC1nZW41OT4gJm5ic3A7ID0NCiZuYnNwOzwv
U1BBTj48U1BBTj0yMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZD0zRGV4dC1nZW41OT4gPFNQQU4gPQ0KaWQ9M0RleHQtZ2VuNTk+Jm5i
c3A7PTIwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNw
OzwvU1BBTj48U1BBTiBpZD0zRGV4dC1nZW41OT4gPQ0KJm5ic3A7PTIwDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOzwvU1BBTj48
U1BBTiBpZD0zRGV4dC1nZW41OT4gPQ0KJm5ic3A7PTIwDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZuYnNwOzwvU1BBTj48U1BBTiBpZD0z
RGV4dC1nZW41OT4gPQ0KJm5ic3A7PTIwDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZuYnNwOzwvU1BBTj48U1BBTiBpZD0zRGV4dC1nZW41
OT4gPQ0KJm5ic3A7PTIwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZuYnNwOzwvU1BBTj4mbmJzcDsgPQ0KJm5ic3A7PC9TUEFOPlRyYXNw
YXJlemE8U1BBTj0yMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZD0zRGV4dC1nZW41OT4gJm5ic3A7ICZuYnNwOzwvU1BBTj4gPQ0KUHJp
dmFjeT0yMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9DQo8
L1NQQU4+PC9ESVY+PC9URD48L1RSPjwvVEJPRFk+PC9UQUJMRT48L0RJVj48
L1REPjwvVFI+PC9UQk9EWT48L1RBQkxFPjwvPQ0KVEQ+PC9UUj48L1RCT0RZ
PjwvVEFCTEU+PC9URD48L1RSPjwvVEJPRFk+PC9UQUJMRT48L1REPg0KICAg
ICAgICAgIDxURCByb3dTcGFuPTNEMj4NCiAgICAgICAgICAgIDxESVY+PC9E
SVY+PC9URD48L1RSPg0KICAgICAgICA8VFI+PCEtLSBmaWxsZXIgaW5mZXJp
b3JlIHBlciBsJ2FsbGluZWFtZW50byBkZWxsYSB0YWJlbGxhIGluID0NCmFs
dG8tLT48L1RSPg0KICAgICAgICA8VFI+DQogICAgICAgICAgPFREPjwvVEQ+
PC9UUj48L1RCT0RZPjwvVEFCTEU+DQogICAgICA8UD4mbmJzcDs8L1A+DQog
ICAgICA8UD4mbmJzcDs8L1A+PExJTksgcmVsPTNEc3R5bGVzaGVldD0yMA0K
ICAgICAgaHJlZj0zRCJodHRwOi8vd3d3LmNhcnRhc2kuaXQvYWNjb3JkaW9u
L2RlbW8uY3NzIj4NCiAgICAgIDxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNj
cmlwdCBzcmM9M0QiIj48L1NDUklQVD4NCg0KICAgICAgPFNDUklQVCB0eXBl
PTNEdGV4dC9qYXZhc2NyaXB0PTIwDQogICAgICA9DQpzcmM9M0QiaHR0cDov
L3d3dy5jYXJ0YXNpLml0L2FjY29yZGlvbi9saWIvanF1ZXJ5LmRpbWVuc2lv
bnMuanMiPjwvU0NSSVBUPQ0KPg0KDQogICAgICA8U0NSSVBUIHR5cGU9M0R0
ZXh0L2phdmFzY3JpcHQ9MjANCiAgICAgID0NCnNyYz0zRCJodHRwOi8vd3d3
LmNhcnRhc2kuaXQvYWNjb3JkaW9uL2pxdWVyeS5hY2NvcmRpb24uanMiPjwv
U0NSSVBUPg0KDQogICAgICA8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFzY3Jp
cHQ9MjANCiAgICAgIHNyYz0zRCJodHRwOi8vd3d3LmNhcnRhc2kuaXQvamF2
YXNjcmlwdC93dGluaXQuanMiPjwvU0NSSVBUPg0KDQogICAgICA8U0NSSVBU
IHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ9MjANCiAgICAgIHNyYz0zRCJodHRw
Oi8vd3d3LmNhcnRhc2kuaXQvamF2YXNjcmlwdC93dGJhc2UuanMiPjwvU0NS
SVBUPg0KICAgICAgPE5PU0NSSVBUPg0KICAgICAgPERJVj48SU1HIGlkPTNE
RENTSU1HIGFsdD0zRERDU0lNRz0yMA0KICAgICAgPQ0Kc3JjPTNEImh0dHA6
Ly9zdGF0c2Uud2VidHJlbmRzbGl2ZS5jb20vZGNzZzlmMDlwMTAwMDBnNGVl
NXI1OGR6OF81YjhmL25qcz0NCi5naWY/ZGNzdXJpPTNEL25vamF2YXNjcmlw
dCZhbXA7V1QuanM9M0RObyZhbXA7V1QudHY9M0QxLjEuMSI9MjANCiAgICAg
IHdpZHRoPTNEMSBoZWlnaHQ9M0QxPjwvRElWPjwvTk9TQ1JJUFQ+DQogICAg
ICA8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFzY3JpcHQ+DQoNCnZhciBnYUpz
SG9zdCA9M0QgKCgiaHR0cHM6IiA9M0Q9M0QgZG9jdW1lbnQubG9jYXRpb24u
cHJvdG9jb2wpID8gPQ0KImh0dHBzOi8vc3NsLiIgOiAiaHR0cDovL3d3dy4i
KTsNCmRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCIlM0NzY3JpcHQgc3JjPTNE
JyIgKyBnYUpzSG9zdCArID0NCiJnb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5q
cycgPQ0KdHlwZT0zRCd0ZXh0L2phdmFzY3JpcHQnJTNFJTNDL3NjcmlwdCUz
RSIpKTsNCjwvU0NSSVBUPg0KDQogICAgICA8U0NSSVBUIHR5cGU9M0R0ZXh0
L2phdmFzY3JpcHQ+DQp2YXIgcGFnZVRyYWNrZXIgPTNEIF9nYXQuX2dldFRy
YWNrZXIoIlVBLTM2ODE3MTktMSIpOw0KcGFnZVRyYWNrZXIuX2luaXREYXRh
KCk7DQpwYWdlVHJhY2tlci5fdHJhY2tQYWdldmlldygpOw0KPC9TQ1JJUFQ+
DQo8IS0tIE1pcnJvcmVkIGZyb20gd3d3LmNhcnRhc2kuaXQvZ3R3cGFnZXMv
aW5kZXguanNwIGJ5IEhUVHJhY2sgV2Vic2l0ZSA9DQpDb3BpZXIvMy54IFtY
UiZDTycyMDA4XSwgRnJpLCAwNyBNYXkgMjAxMCAyMTo0Njo1NCBHTVQgPQ0K
LS0+PC9UUj48L1RCT0RZPjwvVEFCTEU+PC9GT1JNPjwvRElWPjwvRElWPjwv
RElWPjwvRElWPjwvRElWPjwvRElWPjwvRElWPj0NCjwvQk9EWT48L0hUTUw+
DQoNCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBfMDFDQ0VDNzguQ0VCNTk4
QTANCkNvbnRlbnQtVHlwZTogaW1hZ2UvanBlZw0KQ29udGVudC1UcmFuc2Zl
ci1FbmNvZGluZzogYmFzZTY0DQpDb250ZW50LUxvY2F0aW9uOiBodHRwOi8v
NzIuMjkuNzguMTU3L35tYXJjb3NsaS9vbmxpbmUvZ3R3cGFnZXMvaGVhZC5q
cGcNCg0KLzlqLzRBQVFTa1pKUmdBQkFRRUFZQUJnQUFELzRRQnVSWGhwWmdB
QVRVMEFLZ0FBQUFnQUFZZHBBQVFBQUFBQkFBQUFHZ0FBQUFBQQ0KQVpLR0FB
SUFBQUE2QUFBQUxBQUFBQUJEVWtWQlZFOVNPaUJuWkMxcWNHVm5JSFl4TGpB
Z0tIVnphVzVuSUVsS1J5QktVRVZISUhZMg0KTWlrc0lIRjFZV3hwZEhrZ1BT
QTVNQW9BLzlzQVF3QUlCZ1lIQmdVSUJ3Y0hDUWtJQ2d3VURRd0xDd3daRWhN
UEZCMGFIeDRkR2h3Yw0KSUNRdUp5QWlMQ01jSENnM0tTd3dNVFEwTkI4bk9U
MDRNand1TXpReS85c0FRd0VKQ1FrTUN3d1lEUTBZTWlFY0lUSXlNakl5TWpJ
eQ0KTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1q
SXlNakl5TWpJeU1qSXkvOEFBRVFnQXF3UElBd0VpQUFJUg0KQVFNUkFmL0VB
QjhBQUFFRkFRRUJBUUVCQUFBQUFBQUFBQUFCQWdNRUJRWUhDQWtLQy8vRUFM
VVFBQUlCQXdNQ0JBTUZCUVFFQUFBQg0KZlFFQ0F3QUVFUVVTSVRGQkJoTlJZ
UWNpY1JReWdaR2hDQ05Dc2NFVlV0SHdKRE5pY29JSkNoWVhHQmthSlNZbktD
a3FORFUyTnpnNQ0KT2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBh
bk4wZFhaM2VIbDZnNFNGaG9lSWlZcVNrNVNWbHBlWW1acWlvNlNscHFlbw0K
cWFxeXM3UzF0cmU0dWJyQ3c4VEZ4c2ZJeWNyUzA5VFYxdGZZMmRyaDR1UGs1
ZWJuNk9ucThmTHo5UFgyOS9qNSt2L0VBQjhCQUFNQg0KQVFFQkFRRUJBUUVB
QUFBQUFBQUJBZ01FQlFZSENBa0tDLy9FQUxVUkFBSUJBZ1FFQXdRSEJRUUVB
QUVDZHdBQkFnTVJCQVVoTVFZUw0KUVZFSFlYRVRJaktCQ0JSQ2thR3h3UWtq
TTFMd0ZXSnkwUW9XSkRUaEpmRVhHQmthSmljb0tTbzFOamM0T1RwRFJFVkdS
MGhKU2xOVQ0KVlZaWFdGbGFZMlJsWm1kb2FXcHpkSFYyZDNoNWVvS0RoSVdH
aDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNQ0KdXNM
RHhNWEd4OGpKeXRMVDFOWFcxOWpaMnVMajVPWG01K2pwNnZMejlQWDI5L2o1
K3YvYUFBd0RBUUFDRVFNUkFEOEE5L29vb29BSw0KS0tLQUNpaWlnQnVhTWlz
UHhUckVtaDZITmZSUStZeWxWempJUUU0M0VlMWNuWmZFSDk1R1pwNDVrY2dC
VVRCeWVtUFd1U3JpNmRLYQ0KaEsrdmtiVThQT3BGeWowUFNxS2pqYmNpdGdq
SXpnOXFrcnJNUW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29v
b0FLSw0KS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlp
Z0Fvb29vQUtLS0tBQ2lpaWdCTVZEZFNHRzJlUmNFakhYcDFxZQ0KcXVvZjhl
TW40ZnpGUlVkb05yc1ZCWGtreWovYXMvOEFkai9JL3dDTkg5cXovd0IyUDhq
L0FJMVJvcnlmckZYdWVoN0dIWXZmMnJQLw0KQUhZL3lQOEFqUi9hcy84QWRq
L0kvd0NOVWFLUGIxTzRleWgyTnBibDJzNDVpRjNNY0gwNy93Q0ZNKzJTZWkw
eFArUVhEL3ZIK1pxSw0KdXgxSldXdlJIT29SdTlPcFkrMlNlaS9yUjlzazlG
L1dxOUZMMmsrNCtTUFlzZmJKUFJmMXExdlBsbzNHV0dUV2JXZ1A5VEgvQUxv
Lw0KbFdsS2NuZTdNNmtVcldIZVlmUVVlWWZRVXlpdGJzaXlIK1lmUVVlWWZR
VXlpaTdDeUdYVnc4TWdWUXVDTTgxRDl1bC91cCtWRi84QQ0KNjlmOTMrcHFy
WE5VcVRVMmt6ZUVJdUt1aXo5dWwvdXArVkgyNlgrNm41VldvcVBhejdsZXpo
MkxrZDVJOGlLUXVDUU85VHlUTWpsUQ0KQmdWbncvNitQL2VIODZ1emY2NXEy
cHprNDNiTXB4U2xvTyswUDZMUjlvZjBXb2FLZlBMdUxsUkw5b2YwRlBqbVoz
Q2tEQnF2VWtQKw0KdVdxakozUW5GV0d2ZE9zaktGWEFKSFNtL2JKUFJmMXFL
WC9YUC92R21WZzZrNzdtaWhHMnhZKzJTZWkvclI5c2s5Ri9XcTlGTDJzKw0K
NCtTUFl2Vzg3elNGV0F4alBGU2VZZlFWV3N2OWNmOEFkcWF1aW5KdU4yWXlT
VWgvbUgwRkhtSDBGTW9xN3NWa1A4dysxTDVoOHQyNA0KeW95S2pwVC9BS21Y
L2RORjJLeUsvd0JzazlGL1dqN1pKNkwrdFY2SzVQYXo3blJ5UjdGajdaSjZM
K3RIMnlUMFg5YXIwVWUxbjNEaw0KajJMWnVIRm84MkYzS2NEMDdmNDFWL3RL
Yis2bjVIL0dwVy81Qmt2KzhQNWlzNmxWcXpWclBvT25UaTczUmMvdEtiKzdI
K1IveG8vdA0KS2IrN0grUi94cW5SV1B0Nm5jMDlsRHNYUDdTbS91cCtSL3hx
N0ZNejJ5U2tEY3g1eDA3MWpWcTIvd0R5RDR2cWY1bXQ4UFVuS1R1Kw0KaGxX
cHhTVmtTK2Mzb0tQT2IwRlIwVjA4ek11VkVubk42Q2p6bTlCVWRGSE13NVVQ
bm1hSlVLZ0hjT2MxRDlzazlGL1duWGYzSXZvZg0KNlZWck9wT1Nsb3k0Umkx
cWl4OXNrOUYvV2o3Wko2TCt0VjZLajJrKzVYSkhzV1B0a25vdjYxYmRpcHdL
ekswcFB2RDZWclNrMm5jeQ0KcVJTYXNIbUgwRkhtSDBGTW9yUzdKc2gvbUgy
b0VoSkE0cGxLdjNoOWFFMkt5S3R4ZVNRWER4cUZJR09vOXFpL3RLYis3SCtS
L3dBYQ0KWmY4QS9IN0orSDhoVmF1Q3BXcUtiU1oxd3BRY1U3RnorMHB2N3Nm
NUgvR2orMHB2N3NmNUgvR3FkRlI3ZXAzSzlsRHNhTnZlU1QzQw0KeHNFQU9l
ZzlxbWE0ZFhaUUZ3RGlxTmgveCt4L2ovSTFZay8xci83eHJwcDFKT25kdnFZ
emhGVHNrUy9hbjlGbysxUDZMVUZGVnp5Nw0KaTVJOWlmN1Uvb3RTUVROSzVW
Z01ZenhWU3A3VC9Xbi9BSGFxRTVPUzFGS0tTRDdVL290SDJwL1JhZ29xZmFT
N2o1VVQvYW45Rm8rMQ0KUDZMVUZGSHRKZHc1VVc0WjJrY3F3R01kcUtpdHY5
YWZwUlc5TnR4TVpwSmwyaWlpdFNBb29vb0FhVHhVTTExRGJybWFSVUI2WlBX
cQ0KdXQ2aXVrYUxkNmd5N2hCR1hDK3A3RDg4VjVyRlBkWHVMeThuYVdlWDVq
end1ZXdIWVY1MlB4OGNJbHBkczY4SmhIaUc5YkpIb2sydA0KV09Dak1wQkdE
dllBRVZrVzgvaGl5dWpjUVdtbVF6NXo1a2FxRy9BNHJsb2JLYlZiMkt4dDVE
RVpXK2VVREpSY1pKK3RkZGJlQXZEOA0KQ0FTMnIzTDlUSlBLekUvaG5INlZ6
WWJFNGpGcm5VVWt1NXZYcFVjTytSdHRtdmI2eFpYSEVjNkg2TUQvQUNOYUN1
SEdRUVI3VjUwbQ0KbCtGYjZlV0tLeHVMQjBiQ3l4M0RJeDl3TTQvT3RHemgx
clFKazhxNWsxZlRTUUdWZ0JjUkRzZU9ISHZ4WGJUeEVtN096OVA4amxuUw0K
ajB1dlU3Zk5GTlU1N1lwMWRwemhSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVV
QUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVQ0KVUFGRkZGQUJSUlJR
QVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZWZFEvNDhaUHcvbUt0VkhORXM4VFJz
U0FmU29xSnlnMGlvTzBrMmM3Ug0KV3gvWlVIOStUOHgvaFIvWlVIOStUOHgv
aFhtL1ZLaDIvV0lHUFJXeC9aVUg5K1Q4eC9oUi9aVUg5K1Q4eC9oUjlVcUI5
WWdScC95Qw0KNGY4QWVQOEFNMUZWNW9FanRraUc0cXA0NTU3MUQ1TWZvLzVq
L0N1aVZONkx5UmlwclZsZWlySGt4K2ovQUpqL0FBbzhtUDBmOHgvaA0KUzlt
eXVkRmV0QWY2bVA4QTNSL0txL2t4K2ovbVA4S3RxZ01hRG5BRmEwb05YTTZr
azdFZEZTK1d2cWFQTFgxTmE4ck0rWkVWRlMrVw0KdnFhUExYMU5IS3c1a1Vi
L0FQMTYvd0M3L1UxVnJWbXRrbWNNeFlFREhGUi9ZSXY3ei9tUDhLNTZsR2Nw
Tm8yaFZpb3BNenFLMGZzRQ0KWDk1L3pIK0ZIMkNMKzgvNWovQ28rcnpLOXRF
b3cvNitQL2VIODZ1emY2NXFjdGxHamhnejVCejFGU3RDcnNXSk9UVzBLVWxH
ek01Vg0KSXQzS2xGV2ZzNmVyVWZaMDlXcCt6a0xuUldxU0gvWExVdjJkUFZx
Y3NLb3dZRTVGTlUybUp6VmpQbC8xei83eHBsWDJ0STJZc1MyUw0KYzlhVDdG
SC9BSG4vQURGWXVoTnMwVldOaWpSVjc3RkgvZWY4eFI5aWovdlArWW85aE1Q
YXhJckwvWEgvQUhhbXA4VnVrVEZsTEU0eA0KelR2TFgxTmJ3ZzFHek1wU1Rk
eUtpcGZMWDFOSGxyNm1xNVdMbVJGU24vVXkvd0M2YWs4dGZVMGtpaElaRHlS
dE9hT1ZvTG1aUlNlYg0KSC96emYvdnNmNFVlYkgvenpmOEE3N0grRmNHbmM2
N1BzTFJTZWJIL0FNODMvd0MreC9oUjVzZi9BRHpmL3ZzZjRVYWR3cyt4TzMv
SQ0KTWwvM2gvTVZuVnFSN0piR1FiV0M3dVJ1NTdlMVYvczhQcEovMzBQOEtk
V0RsWnJzS25KUnVuM0tkRlhQczhQcEovMzBQOEtQczhQcA0KSi8zMFA4S3k5
bEkwOW9pbldyYi9BUElQaStwL21hcmZaNGZTVC92b2Y0VllaMXQ3R1BDa3J1
d0FXNTcrMWJVWThqYmZZeXF5NWtraA0KMUZWdnR5Lzg4ai8zMy84QVdvKzNM
L3p5UC9mZi93QmF0UGF3N2sremwyTE5GVnZ0eS84QVBJLzk5LzhBMXFUN2N2
OEF6eVAvQUgzLw0KQVBXbzl0RHVIczVkaXpkL2NpK2gvcFZXclU3SzBNTE1w
NVhJQVBUcDdWQm1QKzQvL2ZRL3dvcVdjdHdoOEl5aW41ai9BTGovQVBmUQ0K
L3dBS014LzNILzc2SCtGWjI4eTdqSzBwUHZENlZRekgvY2YvQUw2Lyt0Vm01
dUJGSUZLRThaNjRyYW0xRk50bVUwMjFZZlJWYjdZdg0KL1BNLzk5Zi9BRnFQ
dGkvODh6LzMxLzhBV3ArMWgzRnlTN0ZtbFg3dyt0VmZ0aS84OHovMzEvOEFX
cDBkMkdrVmZMSXlRUHZmL1dwcQ0KcEMrNE9FdXhWdjhBL2o5ay9EK1FxdFdw
Y1cwVWs3TTIvSngwSTlQcFVYMk9IL3BwL3dCOUQvQ3VXcFJrNXRtOEtzVkZJ
b1VWZit4dw0KL3dEVFQvdm9mNFVmWTRmK21uL2ZRL3dxZllUSzlyRWhzUDhB
ajlqL0FCL2thc1NmNjEvOTQwKzN0b281MVpkK1JucVI2ZlNvSnJsRg0KbWNH
TmlReEgzLzhBNjFiUlhzNmRwZHpOdm5ucDJIVVZGOXFqL3dDZVRmOEFmZjhB
OWFqN1ZIL3p5Yi92di82MVQ3U0hjZkxMc1MxUA0KYWY2MC93QzdWUDdWSC96
eWIvdnYvd0N0Vm15bVdTWWdJVitYT1MyZTQ5cTBwemk1S3pKbkY4cjBJNktp
KzFSLzg4bS83Ny8rdFI5cQ0Kai81NU4vMzMvd0RXclBuaDNIeVM3RXRGUmZh
by93RG5rMy9mZi8xcVB0VWYvUEp2KysvL0FLMUhQRHVISkxzVzdYL1duNlVW
SGFUTA0KSk1WVkNwMjlTMmFLNmFVazQ2R0ZSTlMxTkdpaWl1Z3lDaWt6Um1n
REsxeUt5dWRHdWJmVUpCSGJUcDVUdVRqRzQ3UitPU0s4cGtYVQ0KZkM1Rm5y
RUR0YnI4c041R3BNY2k5am5zZlkxN0RlV1Z2cUZuTGEzTVlraGxVcTZIdUs0
MmFMeFA0Wnlsdkcyc2FhT25JODlGOUdIOA0KWDFITmViajhOR3V2ZldpN2Jv
N01KWGxTZnV2N3lwNEoxU3l1OWFkSUoxa2N4NUFIb004MTZHNUFVa25qcm12
TzdmeDdvdGhNNE9taQ0KeHVHKytwdHhHLzQ5Q2FnMVh4L0JmV3J3dzNBaWpj
WVpod2NmbldGREVVc0xSNUZkMjhqU3JTcVlpcnoyUytaQkpQSGNPWll1VUlH
Qw0KUFlBVnQ2RnEwa000Z2xjbGNnb1NlbVQwcmpyVFVmdFcyMzBxeW51aVBs
QWhqTEFmVTlCWFllR3ZDdC85dGoxSFdDSXpHZDBWcWpadw0KZXhZampJOUs4
dkIwY1RQRWUwaXJKdlU5REZWYUVhUEkzZG5kcjBwMUlCajNvelgxcDgrTFJT
Wm9CelFBdEZGRkFCUlJSUUFVVVVVQQ0KRkZGRkFCUlJSUUFVVVVVQUZGRkZB
QlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZG
RkZBQlJSUlFBVQ0KVVVVQUZGRkZBRVUvM0I5YWdxZWY3Zyt0UVZqUGMxaHNG
RkZGUVVGV2srNHYwcXJWcFB1TDlCV2xQY2lZNmlpaXRUTUtLS0tBQ2ltNw0K
aDYwdTRldEFDMFVtUlFXQTcwQUxSVGQ2K3RMa1VBTFJUZHdQZW5ab0FLS0Fj
MFVBRkZKbWx6aWdBb3B1OWZXbHpRQXRGSm5OTFFBVQ0KVVVVQUZSei9BUEh2
Si91SCtWU1ZIUDhBOGU4bis0ZjVVcGJNY2R6Rm9vb3J5RDBRb29vb0F2VzMv
SGhKL3Y4QStGTXA5dC94NFNmNw0KL3dEaFRLNnZzeDlEbjZzS0tLS1F3cGJ2
L2tIeC93Qy8valNVdDMveUQ0Lzkvd0R4b2Z3eTlCTDRrWjlGRkZjUjFCUlJS
UUJwVGY4QQ0KSHRiZjduOUJVRlR6ZjhlMXQvdWYwRlFWMnozT2FHd1VVVVZC
UVZOZi93Q3ZYL2QvcWFocWEvOEE5ZXYrNy9VMVgySDhoZmFSVm9vbw0Kckkw
Q253LzYrUDhBM2gvT21VK0gvWHgvN3cvblRqdWhQWXZ5L3dDc05NcDh2K3NO
TXJzZTV6TFlLS0tLUXg4WCtzRlpWeC94OHkvNw0KNS9uV3JGL3JCV1ZjZjhm
TXYrK2Y1MWppUGdYcWEwZmlaSFJSUlhFZEFWZDB6L2o1Yi9jUDh4VktydW1m
OGZMZjdoL21LMm9meEVSVg0KK0JsS2lpaXNTd29vb29BdWFiL3g4bi9kUDh4
UlJwdi9BQjhuL2RQOHhSWG9ZYjREaXIvR2ExUlN6SkJFOHNycWthS1dabU9B
QU9wcQ0KV3ZQdmpMZnpXWHc3dTFnWXFibVZJSEk2N1Nja2Zqakg0MTJHQmx6
L0FCUjFiWGRVbXNmQStnSFVraE9HdTUyMnhuM0hJd1BRay9oVw0KMzRhMXp4
eE5yaVdQaVB3N2IydHMwYk1McTNrM0FFZEFjTTNXdEh3QnBOcnBIZ2ZTWUxW
VnhKYnBQSXdIMzNjQmlUK2Y1QVYwNXdCeg0KMG9BTThVblh2WG0rc2VHdFN1
dFJ1WjlWK0lOeHB3ZVZtdGJlM2tFS3hwazdjOGdzY2RlbFEvRGp4SnExM2M2
L29HcDZrdW95Nlljdw0KWHFrRXlJY2pranIwQjllZXRBSHBNMXZEY0p0bmhq
bFgwZFF3L1d1YTFIVmZEMmtlSmRMMFNUVEl6ZmFoa3hHTzJUYW9HY2tudDBy
eg0KSHdKYitMZmlEcFRyZCtKNyt5MCswa0srYkM1ODJhUTg0TFpCd0JqMnBm
RjNoblZGK0tQaDZ5LzRTTzZNMTFHUEl1aVBudDlxNE8zNQ0KdWNrRTl1dFR5
eEhjOTJWVlFCVkFDZ2NBQ25kUDhLNXZRdEIxYlJ0QnZMT2JYNTlTdlpXZG9M
cTZVNWlKVUJSako0QkdmeHJoTlc4Tw0KNmhaMnMxeEw4VDV4ck1hRnhFOTBz
Y1pZYzdkbTdnWjQvcFZXRWVtNjVyRnRvR2kzZXEzZTR3VzBaZGd2VStnSHVU
Z0N2TnJEeGQ4Uw0KL0Vsb05VMFhRZE1qMDl5VENzNy9BRFNBY2RTd3o5Y0N0
UHcvY1hIeE4rRXR4YmFoS3FYa3dhM2ttQzhGMUlaV0lIL0FjZ2U5Y3Rvdg0K
akh4SDhNWVlORDhWYVBMTHBjVGJJYnlIbkM1enczUnUvQndhQVBRTlR1Zkds
ejRLdExqVExPM3Q5ZmRsTTl1NUJSRjV5QnVPUFN1cA0Kc2Z0QnNMZjdYajdW
NVMrZHQ2YjhEZGo4YzE1NzhTUEV6UDhBREpOYjhQNmpMR3MwMGZsendPVU8w
NXlQVWRPUlhlNlE3eTZOWXlTTQ0KWGQ3ZU5tWW5KSktqSm9BdjBVVVVBRkZG
RkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVB
RkZGRkFCUg0KUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFB
VVVVVUFOWkE0d2MwM3lGOVRVbEZKeFRIZG9qOGhmVTBlUXZxYWtvcA0KY3FE
bVpINUMrcHA0R0FCNlV0Rk5KTFlHMndvb29waUNrUFNsb29BNWZWTGJVTFdP
VzQrM3VVQnlGSEdBVDBwZE50ZFF1VWh1UHQ3aA0KQ1FTcDV5TTlLMGZFUC9J
Sm0vRCtZcDJnL3dESUtoLzNmNjE1ZnNJL1crUzd0eTMzZTkvVTd2YXkrcjgy
bDcyMlhZbzZuZHp4YXhaeA0KSkt5b3hHNVFlRHpWaS9zcjJlUVN3M2pSSnR4
dEE3K3RVZFkvNUQxbDlWLzlDcm9tL3dCUldsS0h0WjFZemJ0ZGRYMkluTDJj
WVNqMg0KL1U1WFQwMUMvYVFMZlNKc09PZWMxY3Y3eTZzNGJleWpsOHk1azRN
aEh2UjRhLzFsMy92L0FPTk0xVStUNGh0SlhIeVlBeWVuVS80aQ0KdVNDY01L
cWlidkoyYnU5cm5SSjgxZHdhVmxyYTNrUnoyK3FhZkNMb1hqeWJlV1U1SS9X
dFg3ZWJuUTN1VXlyR0pqeDJJQi9yVHRXbg0KalRTNWlUMVFxUHFlS3pyRlN2
aG1USTZ4eUgrZGRITDdHcTZjRzdPTGU5OVRHL3RLYW5KYTNzYVdoelNUNlpF
OHJsM09jc1R5ZVRXaw0KeHdwTlpIaDUxR2xRZ24xLzlDTldOV3ZCYTJFa2dQ
ell3djFQU3VxalVVY05HY245bFA4QUF3cVF2V2NZOS8xTWxOWWR2RUJqM255
RA0KKzZBN1o5Zno0cmExQ1JrMDZaMEpEQ05pQ094eFhFbVNKYk9QYVdGd3I3
ODQvcitBcnFwTGtYV2d5U2orS0ZpY2Rqam11SEI0bDFJMQ0KSXlkM3Y5L1Q1
SFhpYUNoS0RTMDIrNy9NdzR4cUpzUmVwZXlIQUxGU3g3R3VnMHU5ZTcwMVpa
UHY4ZysrSzVZdzNLYVpITjVybTNZNA0KWkFjWTVycXJBUURUSS9zLytyMjVG
TEwzTDJsdFY3cXVtNzNiNm9NWWx5ZEhxOWx0NU1xK0hMcWE0Z2xNMGpPUStB
V1B0VzdYT2VGdg0KOVJOLzEwL29LNk91M0FOeXc4R3pteFNTclNTQ2lpaXVz
NXdwSFVPaktlaEdLV2lnQ3AvWjBQOEFlZjhBTWY0VWYyZEQvZWY4eC9oVg0K
dWlzdlkwK3hmdEo5eXAvWjBQOEFlZjhBTWY0VWYyZEQvZWY4eC9oVnVpajJO
UHNIdEo5eUZMWkk0VEdDMjBuUE5KOWtqOVcvT3A2Sw0KcmtqMkZ6TWcreVIr
cmZuUjlrajlXL09wNktQWng3Qnp5N2tIMlNQMWI4NkpMVkpZVmlZdHRCengx
L3p6VTlGSHM0N1dEbmwzS1g5bQ0KUS8zcFB6SCtGSDltUS8zcFB6SCtGWGFL
bjJGUHNWN1dmY3BmMlpEL0FIcFB6SCtGSDltUS93QjZUOHgvaFYyaWoyRlBz
SHRaOXlqZA0KN0lVaFFxekFBZ2M0Nlk5cXErYkgvd0E4My83N0grRldkUy81
WmZqL0FFcWhYSldrMU5wSFJTaW5GTmszbXgvODgzLzc3SCtGSG14Lw0KODgz
L0FPK3gvaFVORlpjOGpUbFJONXNmL1BOLysreC9oVnk3VkdsQllObmIyT1A2
Vm0xcFhmOEFyUi91MXRUazNGMzhqS2F0SldLLw0KbHhmM1gvNzZIK0ZIbHhm
M1gvNzZIK0ZMUlJvRjJKNWNYOTEvKytoL2hUNGtqRXFFQjg3aC9FUDhLYlRv
L3dEV3AvdkNtclhFM29YbQ0KaVZtSkpOSjVDK3BxU2l1M2xSemN6SS9JWDFO
SGtMNm1wS0tYS2c1bU1XSlZiSUpyT2xnaU16a2g4bGpuREQvQ3RTczZUL1d2
L3ZHcw0KYTBWWkd0SnU1RjluaDlKUCsraC9oUjluaDlKUCsraC9oVDZLNStX
UFkyNW4zR2ZaNGZTVC92b2Y0VllzNG8wbUpRTm5iM09mNlZGVQ0KOXAvclQv
dTFkT0s1bG9UTnZsWlQ4cUgrN0ovMzBQOEFDanlvZjdzbi9mWS93cGFLeXN1
eHBkaWVWRC9kay83N0grRkhsUS8zWlA4QQ0KdnNmNFV0RkZsMkM3SnJSSTFt
SlFNRGp1MmU0OXFLZFovd0N1UDBvcnFvcGNwelZYN3hmcm5QRzNoMWZGWGhX
OTBuY3F5eXFHaFp1aQ0KeUE1WFB0eFhSMGhHZTlkQmtlT2VDZmlQRjRac2s4
TWVNWTU5UHU3SDkxSE5JaEtzZzZBNHowNkFqSUl4WFlINGhhTHFwdWRQMEhV
Qg0KZWFwOWxtbGhXT050dTVVSkhKQUhYSEhOZEpxT2k2WnJFZmw2bFlXMTJv
NkNhSU5qNlpxdnBmaGpROUVrTW1tYVZaMmprWUx4UWdOag0KNjlhQVBGdkFj
ZmdYVWRLdk5VOFpYc054ckptZHBoZnpNQ0Y3RlZ6ODNmcG10SDRWUzJNM2pY
eGJKcGx1WUxCNE4xdkdRUmlQY2Rwdw0KZlVjMTZmZGVDUERON2Y4QTI2NDBP
eGx1UzI0dVloeWZVam9UOWEwb2RLMCsydkpydUd6dDQ1NWxDeXlMR0F6Z0RB
QlBjQUNnRHovNA0KRS84QUlnU24vcCtrL3dEUVVxbDhSYnlMUi9pajRSMWE5
L2QyTVlaSGxJT0FjblA1YmdhOVAwL1RMTFM3YzI5aGFRMjBKWXNVaVFLTQ0K
bnZ4MzRGSnFXazJHc1dwdHRSczRicUFuUGx6SUdHYUFPSCtJWGlScno0YmFq
ZjhBaHErV2NKSXNNczlxMjdZcEkzWUk5aU0vV3VRcw0KSWZoZFkrQ1lyeHhi
NmhxVDIrVEhKSXp6dk9SeXV3SGo1dlFZK3RleVdPaTZicGRnYkd3c29MZTBP
U1lVUUJUa1lPUjlLbzJYZ3p3Mw0KcDEvOXV0TkZzb2JuT1JJc1F5UHA2ZmhR
Qndud2wxVzEwVDRVWGVwM3JNdHRiWFVyeUZSa2dZVWRPOVdQRnZ4TjhHWG5o
Syt0NDd3WA0KMHR4QTBjZHNJbUJERWNFNUFBd2NIUFgwcjBLMjBmVGJLemtz
N2F4dDRyV1FsbmhXTUJHSjZranYwcWpiZURmRGRuZEM2dHREc0k1dw0KZHdk
WUZ5RDdlbjRVQWVMMyttWHVsL3M5UkpmUlBFODErc3lSc01GVVluSEhiT00v
alh1K2lmOEFJQjA3L3Iyai93RFFSUzZqcFZqcQ0KOW9iVFViV0c2dHl3WXh6
SUdYSTZIRldZb2toaldPTlFxSUFxcUJnQURvS0FKYUtLS0FDaWlpZ0Fvb29v
QUtLS0tBQ2lpaWdBb29vbw0KQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWln
QW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNp
aWlnQQ0Kb29vb0FLS0tLQUNpaWlnQW9vb29BcWFqWi9ick40Tit6ZGo1c1p4
em1sc0xUN0ZhSkJ1M2JSak9NWnF6UlVlemp6KzB0cmEzeUs1NQ0KY3ZKMDNN
eTgwbjdWcUVGMTV1M3lpRHQyNXp6bXRFcmxOdE96Um1sR25HRGNrdFh1RXB5
a2tuME03VE5ML3M5cFQ1bS96R3o5M0dLZg0KcVdtUmFqRHNmSVljcXc2ZzFm
cEtTb1UxVDlsYjNTblZtNTg5OVRuVjhPU095QzR2SkpJMTZMakg5VFd4TFpx
MWkxc255S1VLREE2Yw0KWXExbWpOUlR3MUttbW9yY2M2MVNkdVo3SE5yNGNu
UUJVdjVGQTdBRWYxcXpOb2NseFp3VzczVEVSa2xtSzVMZnJXM1Jtb1dCb1JU
aQ0KbG85TjMvbVc4VlZiVGIvQkZXU3hpa3RXaHhoU3UzanNNVlV0ZElhMzA2
VzBNeGNPR0FiYmpia2ZXdFF0Z21qUDVWdktqQ1V1WnJXMQ0KdmtaS3BKTGxU
OHloYmFXa09uQ3prUG1MZ2drakdjblA5YVpwdW1QWVJQRVp6SWpIS2dyamJX
bm1qTlNxTk9MaTB2aFZsNkRkV2JUVA0KZStwbmFWcG45bXh1bm0rWnViZG5i
aXRLaWt6VjA0UnB4VVk2SkV6bTV5NXBic1dpaWlySkNpaWlnQW9vb29BS0tL
S0FDaWlpZ0Fvbw0Kb29BS0tLS0FDaWlpZ0Fvb29vQW9hbC95eS9IK2xVSzIy
UlgrK2l0anBrWnB2a3hmODhvLysrUlhMVXc3bkp5dWJ3cktNYkdOUld6NQ0K
TWY4QXp5ai9BTytSUjVNZi9QS1AvdmtWSDFWOXkvYnJzWTFhVjMvclIvdTFQ
NU1YL1BLUC92bW5GVlk4cUNmY1ZjS0RpbXJrVHFwdA0KTXo2SzBOaWYzRi83
NW8ySi9jWC9BTDVwK3hZdmFJejZkSC9yVS8zaFY3eTAvdUwvQU44MGJFQnlF
WFAwcHFpN2c2aUgwVVVWMEdJVQ0KVVVVQUZaMG4rdGYvQUhqV2pUQ2lIa291
ZnBXZFNITWlveTVUUG9yUTJKL2NYL3ZtalluOXhmOEF2bXN2WXMwOXFqUHFl
MC8xcC8zYQ0KcytXbjl4ZnlwUXFyeUZBUHNLcU5KcDNGS29tckdWUlduNWNm
L1BOUCsrYVBMai81NXAvM3pVZlYyVjdaR1pSV241Y2YvUE5QKythUA0KTGov
NTVwLzN6UjlYZmNQYklxV24rdVAwb3E0RVFIS29vUHNNVVZ0VGc0cXhuS1Nr
N2o2S0tLMElDaWlpZ0Fvb29vQUtLS0tBQ2lpaQ0KZ0Fvb29vQUtLS0tBR2to
VkpQUWNtblUxL3VIamR4MDlhZFFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZG
RkFCUlJSUUFVVVVVQUZGRg0KRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVV
VUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFB
VVVVVQ0KQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFC
UlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQQ0KVVVVVUFG
RkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVV
VUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUg0KUlJRQVVVVVVBRkZGRkFCUlJS
UUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQTFzbFR0T0RqaW5V
eDhHTnR4d01ITlBvQQ0KS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29v
b0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdB
bw0Kb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FD
aWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaQ0KaWdBb29vb0FL
S0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29v
b0FLS0tLQUNpaWlnQW9vb29BS0tLSw0KQUNpaWlnQW9vb29BS0tLS0FDaWlp
Z0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FD
cVA5cVEvWWpkNw0KSlBMRGJjWUdjNXg2MWVyQU9sei9BTmtOSHNmei9NenM4
M2pHNzB6anBSMUExSkwxVXVEQWtja3NvWGN5cGo1Ujdra0NvWmRXdDRyUg0K
YmdpUW9YMkVBZk1yZWhCcEJETmJhaE5jSkUwc2N5aklVZ0ZTUHFSeFZTVFRi
aHJRWmpCa2t1aE02QmhoUjZaNzBBYUIxR0g3YkZhag0KY3p5THVCR01BWXp6
UmFYNHZGRHgyOG9qSkkzbmJnWS9IUDZWUmkwcDdXL3RwSXlaRVV2dmNrREF4
aFJUOUt0WmJXSkVtdDUxY01UdQ0KRW8yRDhOMzlLQU5paWlpZ0Fvb29vQWEv
M0R4dTQ2ZXRPcHJaS25hY0hIRk9vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNp
aWlnQW9vbw0Kb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtL
S0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZw0KQW9v
b29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWln
QW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQw0KaWlpZ0Fvb29vQUtLS0tB
Q2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtL
S0tBQ2lpaWdBb29vb0FLSw0KS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9w
S0tBRm9wS0tBRm9wS0tBRm9wS0tBRm9wS0tBRm9wS0tBRm9wS0tBR3ZneHR1
T0JnNQ0KcDlNYy9JM0c3anA2MCtnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtL
S0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaQ0KaWlnQW9v
b29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWln
QW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLSw0KS0FDaWlpZ0Fvb29vQUtLS0tB
Q2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtL
S0tBQ2lpaWdBb29vbw0KQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9v
b29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUc1b3pV
Vw0KNmszZlQvUCtmeG9BbXpSbW90LytjMGJxQUpjMFpxSGQ5UDhBUCtmeHBk
LytjMEFTNW96VVc2azNmVC9QK2Z4b0FtelJtb3QvK2MwYg0KcUFKYzBacUhk
OVA4L3dDZnhwZC8rYzBBUzVvelVXNmszZlQvQUQvbjhhQUpXeVZPMGpPT0tk
bW9HWUZXQjZZT2FselFBN05HYVpuLw0KQUQvbi9KcGMwQU96Um1tNW96L25O
QURzMFpwdWFUUCtmOC81TkFEODBacHVhTTBBT3pSbW01L3ptak5BRHMwWnBt
Zjgvd0NmOG1seg0KUUE3TkdhYm1qUDhBbk5BRHMwWnB1YVRQK2Y4QVArVFFB
L05HYWJtak5BRHMwWnB1Zjg1b3pRQTdOR2Fabi9QK2Y4bWx6UUE3TkdhYg0K
bWpQK2MwQU96Um1tNXBNLzUvei9BSk5BRDgwWnB1YU0wQU96Um1tNS93QTVv
elFBN05HYVpuL1ArZjhBSnBjMEFPelJtbTVvei9uTg0KQURzMFpwdWFUUDhB
bi9QK1RRQS9OR2FibWpOQURzMFpwdWY4NW96UUE3TkdhWm4vQUQvbi9KcGMw
QU96Um1tNW96L25OQURzMFpwdQ0KYVRQK2Y4LzVOQUQ4MFpwdWFNMEFPelJt
bTUvem1qTkFEczBacG1mOC93Q2Y4bWx6UUE3TkdhYm1qUDhBbk5BRHMwWnB1
YVRQK2Y4QQ0KUCtUUUEvTkdhYm1qTkFEczBacHVmODVvelFBN05HYVpuL1Ar
ZjhtbHpRQTdOR2FibWpQK2MwQU96Um1tNXBNLzUvei9BSk5BRDgwWg0KcHVh
TTBBT3pSbW01L3dBNW96UUE3TkdhWm4vUCtmOEFKcGMwQU96Um1tNW96L25O
QURzMFpwdWFUUDhBbi9QK1RRQS9OR2FibWpOQQ0KRHMwWnB1Zjg1b3pRQTdO
R2Fabi9BRC9uL0pwYzBBT3pSbW01b3ovbk5BRHMwWnB1YVRQK2Y4LzVOQUQ4
MFpwdWFNMEFPelJtbTUveg0KbWpOQURzMFpwbWY4L3dDZjhtbHpRQTdOR2Fi
bWpQOEFuTkFEczBacHVhVFArZjhBUCtUUUEvTkdhYm1qTkFEczBacHVmODVv
elFBNw0KTkdhWm4vUCtmOG1selFBN05HYWJtalArYzBBT29wb1BORkFGWGQv
bi9QOEFrMHU2czM3UkwvZS9RVWZhSmY3MzZDZ0RTM1VtNy9QKw0KZjhtczc3
UkwvZS9RVWZhSmY3MzZDZ0RTM1VtNy9QOEFuOUt6dnRFdjk3OUJSOW9sL3Zm
b0tBTkxkOVA4L3dDZnhvM2ZXczM3UkwvZQ0KL1FVZmFKZjczNkNnRFIzZjUv
eitsTHU3Zmgvbi9QTlp2MmlYKzkrZ28rMFMvd0I3OUJRQm83dS8rZjhBUCtS
UzdxemZ0RXY5NzlCUg0KOW9sL3Zmb0tBTkxkU2J1LytmOEFQK1JXZDlvbC92
Zm9LUHRFdjk3OUJRQm9sdUQzcC9tMW1DZVFrRGQzOUJTZmFKZjczNkNnRFY4
Mg0Kazgyc3Y3UkwvZS9RVWZhSmY3MzZDZ0RVODJsODMzTlpYMmlYKzkrZ28r
MFMvd0I3OUJRQnFlYlMrYldWOW9sL3Zmb0tQdEV2OTc5Qg0KUUJxZWJSNXRa
ZjJpWCs5K2dvKzBTLzN2MEZBR3I1dnVhVHpheS90RXY5NzlCUjlvbC92Zm9L
QU5YemFUemF5L3RFdjk3OUJSOW9sLw0KdmZvS0FOVHphWHpmYzFsZmFKZjcz
NkNqN1JML0FIdjBGQUdwNXRMNXRaWDJpWCs5K2dvKzBTLzN2MEZBR3A1dEht
MWwvYUpmNzM2Qw0KajdSTC9lL1FVQWF2bSs1cFBOckwrMFMvM3YwRkgyaVgr
OStnb0ExZk5wUE5yTCswUy8zdjBGSDJpWCs5K2dvQTFQTnBmTjl6V1Y5bw0K
bC92Zm9LUHRFdjhBZS9RVUFhbm0wdm0xbGZhSmY3MzZDajdSTC9lL1FVQWFu
bTBlYldYOW9sL3Zmb0tQdEV2OTc5QlFCcStiN21rOA0KMnN2N1JML2UvUVVm
YUpmNzM2Q2dEVjgyazgyc3Y3UkwvZS9RVWZhSmY3MzZDZ0RVODJsODMzTlpY
MmlYKzkrZ28rMFMvd0I3OUJRQg0KcWViUytiV1Y5b2wvdmZvS1B0RXY5NzlC
UUJxZWJSNXRaZjJpWCs5K2dvKzBTLzN2MEZBR3I1dnVhVHpheS90RXY5NzlC
UjlvbC92Zg0Kb0tBTlh6YVR6YXkvdEV2OTc5QlI5b2wvdmZvS0FOVHphWHpm
YzFsZmFKZjczNkNqN1JML0FIdjBGQUdwNXRMNXRaWDJpWCs5K2dvKw0KMFMv
M3YwRkFHcDV0SG0xbC9hSmY3MzZDajdSTC9lL1FVQWF2bSs1cFBOckwrMFMv
M3YwRkgyaVgrOStnb0ExZk5wUE5yTCswUy8zdg0KMEZIMmlYKzkrZ29BMVBO
cGZOOXpXVjlvbC92Zm9LUHRFdjhBZS9RVUFhbm0wdm0xbGZhSmY3MzZDajdS
TC9lL1FVQWFubTBlYldYOQ0Kb2wvdmZvS1B0RXY5NzlCUUJxK2I3bWs4MnN2
N1JML2UvUVVmYUpmNzM2Q2dEVjgyazgyc3Y3UkwvZS9RVWZhSmY3MzZDZ0RV
ODJsOA0KMzNOWlgyaVgrOStnbyswUy93Qjc5QlFCcWViUytiV1Y5b2wvdmZv
S1B0RXY5NzlCUUJxZWJSNXRaZjJpWCs5K2dvKzBTLzN2MEZBRw0KcjV2dWFU
emF5L3RFdjk3OUJSOW9sL3Zmb0tBTlh6YVR6YXkvdEV2OTc5QlI5b2wvdmZv
S0FOVHphWHpmYzFsZmFKZjczNkNqN1JMLw0KQUh2MEZBR3A1dEw1dFpYMmlY
KzkrZ28rMFMvM3YwRkFHcDV0SG0xbC9hSmY3MzZDajdSTC9lL1FVQWF2bSs1
cFBOckwrMFMvM3YwRg0KSDJpWCs5K2dvQTFmTnBQTnJMKzBTLzN2MEZIMmlY
KzkrZ29BMVBOcGZOOXpXVjlvbC92Zm9LUHRFdjhBZS9RVUFhbm0wdm0xbGZh
Sg0KZjczNkNqN1JML2UvUVVBYW5tMGViV1g5b2wvdmZvS1B0RXY5NzlCUUJx
K2I3bWs4MnN2N1JML2UvUVVmYUpmNzM2Q2dEVjgyazgycw0KdjdSTC9lL1FV
ZmFKZjczNkNnRFU4Mmw4MzNOWlgyaVgrOStnbyswUy93Qjc5QlFCcWViUyti
V1Y5b2wvdmZvS1B0RXY5NzlCUUJxZQ0KYlI1dFpmMmlYKzkrZ28rMFMvM3Yw
RkFHcjV2dWFUemF5L3RFdjk3OUJSOW9sL3Zmb0tBTlh6YVR6YXkvdEV2OTc5
QlI5b2wvdmZvSw0KQU5UemFYemZjMWxmYUpmNzM2Q2o3UkwvQUh2MEZBR3Nz
bVdBOTZLem9aWE02QXR4dkg4NktBUC8yUT09DQoNCi0tLS0tLT1fTmV4dFBh
cnRfMDAwXzAwMDBfMDFDQ0VDNzguQ0VCNTk4QTANCkNvbnRlbnQtVHlwZTog
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQpDb250ZW50LVRyYW5zZmVyLUVu
Y29kaW5nOiBiYXNlNjQNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly9zdGF0
c2Uud2VidHJlbmRzbGl2ZS5jb20vZGNzZzlmMDlwMTAwMDBnNGVlNXI1OGR6
OF81YjhmL25qcy5naWY/ZGNzdXJpPS9ub2phdmFzY3JpcHQmV1QuanM9Tm8m
V1QudHY9MS4xLjENCg0KUjBsR09EbGhBUUFCQUpIL0FQLy8vd0FBQVAvLy93
QUFBQ0gvQzBGRVQwSkZPa2xTTVM0d0F0N3RBQ0g1QkFFQUFBSUFMQUFBQUFB
Qg0KQUFFQUFBSUNWQUVBT3c9PQ0KDQotLS0tLS09X05leHRQYXJ0XzAwMF8w
MDAwXzAxQ0NFQzc4LkNFQjU5OEEwDQpDb250ZW50LVR5cGU6IGltYWdlL2dp
Zg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0DQpDb250ZW50
LUxvY2F0aW9uOiBodHRwOi8vNzIuMjkuNzguMTU3L35tYXJjb3NsaS9vbmxp
bmUvZ3R3cGFnZXMvY29udC5naWYNCg0KUjBsR09EbGhNZ0FRQVBjQUFQK2pH
di93Mi8vRGF2LzY4LytyTEdtZXhLaWpuUCs2VS8rMFF2L2JwUCt0TWFySTN2
L05ndi9MZlAvaA0Kcy8raEZQKzlXdEd6a3V5eGNwS0lmUCt5UGYvQVl2L1Jq
QnNaR1l5MDBnQmFuTVBZNlAvKy9kUGo3aWgwcTNkSEQvL213UlpwcFArZA0K
Q3YvMjZ0SjJHRkdPdS8rbUlmKzJTUC9WbHYvcXlmLzE1di9mcmYvdTFYVnhi
azFMU2YvdDB2K2VEZi85K2YrYUEvL0pkb3BPQ3VyeQ0KOThhK3MvL294Zi9s
dnYvZHFjN0l3ZEdSVFAvWm4vL1htdi96NFAvR2NmL2p1Zi80N3QzWTBQYll0
LytiQmZPR0dQK29KL1A0K3VxUw0KTjdob0ZLOXdMUC9TaitqQ21zdW1mT0hz
ODgrSVBQL3J6dWFBR0djNUF2SHM1dTdJbi9YSGx1LzErZis0VGVuVnUvSE5w
ZitjQithYg0KUy96dDJqeUJzNDFtTi9mNi9QUGh5L3I4L1o5NFM4R1hhUExw
M3Z2anl1L1JzSjliRVBPcFd2SHg4ZmpUcXZIbjJ1TGczV0pmWEFwZw0KbitX
b1p1NjlpSXRZSHZIdzd2VGl6Ly9zMFAvUGlQK2ZFUC9Ua2Yva3UvK3ZPUC8w
NC9iZXcvalBvdDdBbnZmcDEvK1pBUC8vL3dBQQ0KQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ0KQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFDd0FBQUFBTWdBUUFBQUljZ0QvQ0FSQQ0Kc0tEQmd3Z1RL
bFFvc09IQ2h4QWpHblFvc2FMRmczOHVhdHk0c0NGRmhod3JlaHpJTUdQSWlD
UW5aalRwa2VCQWxpazNqb1Rwc0NXQQ0KbGk5TnloenBjaVhNZ2pGdkJyVTRO
R2RQb0RxTmNweDVsQ1RGbEVwMzJsVDZOS25OazFpSlp0MHFWQ2RYcVVPL29o
UVlFQUE3DQoNCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBfMDFDQ0VDNzgu
Q0VCNTk4QTANCkNvbnRlbnQtVHlwZTogdGV4dC9jc3M7DQoJY2hhcnNldD0i
aXNvLTg4NTktMSINCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3Rl
ZC1wcmludGFibGUNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly83Mi4yOS43
OC4xNTcvfm1hcmNvc2xpL29ubGluZS9jc3MvcHJpdmF0aS5jc3MNCg0KKiB7
DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkct
TEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IEZPTlQtRkFNSUxZ
OiAiTVMgVHJlYnVjaGV0IiwgVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwg
c2Fucy1zZXJpZjsgPQ0KQkFDS0dST1VORDogbm9uZSB0cmFuc3BhcmVudCBz
Y3JvbGwgcmVwZWF0IDAlIDAlOyBQQURESU5HLVRPUDogMHB4DQp9DQpIVE1M
IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElO
Ry1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgRk9OVC1GQU1J
TFk6ICJNUyBUcmVidWNoZXQiLCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNh
LCBzYW5zLXNlcmlmOyA9DQpCQUNLR1JPVU5EOiBub25lIHRyYW5zcGFyZW50
IHNjcm9sbCByZXBlYXQgMCUgMCU7IFBBRERJTkctVE9QOiAwcHgNCn0NCkJP
RFkgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURE
SU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBGT05ULUZB
TUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRp
Y2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tHUk9VTkQ6IG5vbmUgdHJhbnNwYXJl
bnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsgUEFERElORy1UT1A6IDBweA0KfQ0K
VEQgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURE
SU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBGT05ULUZB
TUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRp
Y2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tHUk9VTkQ6IG5vbmUgdHJhbnNwYXJl
bnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsgUEFERElORy1UT1A6IDBweA0KfQ0K
VEggew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURE
SU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBGT05ULUZB
TUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRp
Y2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tHUk9VTkQ6IG5vbmUgdHJhbnNwYXJl
bnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsgUEFERElORy1UT1A6IDBweA0KfQ0K
UCB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJ
TkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IEZPTlQtRkFN
SUxZOiAiTVMgVHJlYnVjaGV0IiwgVmVyZGFuYSwgQXJpYWwsIEhlbHZldGlj
YSwgc2Fucy1zZXJpZjsgPQ0KQkFDS0dST1VORDogbm9uZSB0cmFuc3BhcmVu
dCBzY3JvbGwgcmVwZWF0IDAlIDAlOyBQQURESU5HLVRPUDogMHB4DQp9DQpB
IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElO
Ry1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgRk9OVC1GQU1J
TFk6ICJNUyBUcmVidWNoZXQiLCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNh
LCBzYW5zLXNlcmlmOyA9DQpCQUNLR1JPVU5EOiBub25lIHRyYW5zcGFyZW50
IHNjcm9sbCByZXBlYXQgMCUgMCU7IFBBRERJTkctVE9QOiAwcHgNCn0NClVM
IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElO
Ry1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgRk9OVC1GQU1J
TFk6ICJNUyBUcmVidWNoZXQiLCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNh
LCBzYW5zLXNlcmlmOyA9DQpCQUNLR1JPVU5EOiBub25lIHRyYW5zcGFyZW50
IHNjcm9sbCByZXBlYXQgMCUgMCU7IFBBRERJTkctVE9QOiAwcHgNCn0NCkxJ
IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElO
Ry1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgRk9OVC1GQU1J
TFk6ICJNUyBUcmVidWNoZXQiLCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNh
LCBzYW5zLXNlcmlmOyA9DQpCQUNLR1JPVU5EOiBub25lIHRyYW5zcGFyZW50
IHNjcm9sbCByZXBlYXQgMCUgMCU7IFBBRERJTkctVE9QOiAwcHgNCn0NCkJP
RFkgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURE
SU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBCQUNLR1JP
VU5EOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL21haW5C
Ry5qcGcpICNlNmU2ZTYgPQ0KcmVwZWF0LXkgY2VudGVyIHRvcDsgUEFERElO
Ry1UT1A6IDBweA0KfQ0KSDEgew0KCU1BUkdJTjogMTJweCAxMnB4IDEycHgg
MHB4OyBDT0xPUjogI2Y5YTczYjsgRk9OVC1TSVpFOiAxNnB4DQp9DQpIMS50
aXRvbG8gew0KCU1BUkdJTjogMTJweCAxMnB4IDEycHggMHB4OyBDT0xPUjog
I2Y5YTczYjsgRk9OVC1TSVpFOiAxNnB4DQp9DQpIMiB7DQoJUEFERElORy1C
T1RUT006IDBweDsgTUFSR0lOOiAxMnB4IDBweCA2cHg7IFBBRERJTkctTEVG
VDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IENPTE9SOiAjNjY2OyBG
T05ULVNJWkU6IDE0cHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkgyLnRpdG9s
byB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAxMnB4IDBweCA2
cHg7IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7
IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6IDE0cHg7IFBBRERJTkctVE9QOiAw
cHgNCn0NCkgzIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDEy
cHggMHB4IDZweDsgUEFERElORy1MRUZUOiAwcHg7ID0NClBBRERJTkctUklH
SFQ6IDBweDsgQ09MT1I6ICM5OTk7IEZPTlQtU0laRTogMTJweDsgUEFERElO
Ry1UT1A6IDBweA0KfQ0KSDMudGl0b2xvIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBNQVJHSU46IDEycHggMHB4IDZweDsgUEFERElORy1MRUZUOiAwcHg7
ID0NClBBRERJTkctUklHSFQ6IDBweDsgQ09MT1I6ICM5OTk7IEZPTlQtU0la
RTogMTJweDsgUEFERElORy1UT1A6IDBweA0KfQ0KSDQgew0KCU1BUkdJTjog
MHB4OyBDT0xPUjogIzk5OTsgRk9OVC1TSVpFOiAxMXB4DQp9DQpINC50aXRv
bG8gew0KCU1BUkdJTjogMHB4OyBDT0xPUjogIzk5OTsgRk9OVC1TSVpFOiAx
MXB4DQp9DQpINSB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAw
cHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7
IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6IDExcHg7IFBBRERJTkctVE9QOiAw
cHgNCn0NCkg1LnRpdG9sbyB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFS
R0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9
DQowcHg7IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6IDExcHg7IFBBRERJTkct
VE9QOiAwcHgNCn0NCkg2IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJH
SU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0N
CjBweDsgQ09MT1I6ICM2NjY7IEZPTlQtU0laRTogMTBweDsgUEFERElORy1U
T1A6IDBweA0KfQ0KSDYudGl0b2xvIHsNCglQQURESU5HLUJPVFRPTTogMHB4
OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklH
SFQ6ID0NCjBweDsgQ09MT1I6ICM2NjY7IEZPTlQtU0laRTogMTBweDsgUEFE
RElORy1UT1A6IDBweA0KfQ0KUCB7DQoJUEFERElORy1CT1RUT006IDFlbTsg
TUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hU
OiA9DQowcHg7IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6IDEwcHg7IFBBRERJ
TkctVE9QOiAxZW0NCn0NCkEgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1B
UkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDog
PQ0KMHB4OyBDT0xPUjogI2Y5YTczYjsgRk9OVC1TSVpFOiAxMHB4OyBGT05U
LVdFSUdIVDogYm9sZDsgPQ0KVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURE
SU5HLVRPUDogMHB4DQp9DQpMSSB7DQoJUEFERElORy1CT1RUT006IDBweDsg
TUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hU
OiA9DQowcHg7IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6IDEwcHg7IFBBRERJ
TkctVE9QOiAwcHgNCn0NClREIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBN
QVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6
ID0NCjBweDsgQ09MT1I6ICM2NjY7IEZPTlQtU0laRTogMTBweDsgUEFERElO
Ry1UT1A6IDBweA0KfQ0KVEggew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1B
UkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDog
PQ0KMHB4OyBDT0xPUjogIzY2NjsgRk9OVC1TSVpFOiAxMHB4OyBQQURESU5H
LVRPUDogMHB4DQp9DQpBIElNRyB7DQoJQk9SREVSLUJPVFRPTTogbWVkaXVt
IG5vbmU7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgQk9SREVSLVRPUDog
PQ0KbWVkaXVtIG5vbmU7IEJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmUNCn0N
ClVMIHsNCglMSVNULVNUWUxFLVRZUEU6IG5vbmU7IExJU1QtU1RZTEUtSU1B
R0U6IG5vbmUNCn0NCk9MIHsNCglMSVNULVNUWUxFLVRZUEU6IG5vbmU7IExJ
U1QtU1RZTEUtSU1BR0U6IG5vbmUNCn0NClAubGVmdCB7DQoJRkxPQVQ6IGxl
ZnQNCn0NClAucmlnaHQgew0KCUZMT0FUOiByaWdodA0KfQ0KUC5pbWdMZWZ0
IHsNCglNQVJHSU46IDBweCAxMnB4IDEycHggMHB4OyBGTE9BVDogbGVmdDsg
Q0xFQVI6IGJvdGgNCn0NClAuaW1nUmlnaHQgew0KCU1BUkdJTjogMHB4IDBw
eCAxMnB4IDEycHg7IEZMT0FUOiByaWdodDsgQ0xFQVI6IGJvdGgNCn0NClAu
aW1nUGllbmEgew0KCU1BUkdJTjogMTJweCAwcHg7IFdJRFRIOiA2ODVweDsg
QkFDS0dST1VORDogI2Y5MDsgRkxPQVQ6IGxlZnQ7IENMRUFSOiA9DQpib3Ro
DQp9DQpQLmNsciB7DQoJQ0xFQVI6IGJvdGgNCn0NClAucGF0aCB7DQoJQk9S
REVSLUJPVFRPTTogIzk5OSAxcHggc29saWQ7IFBBRERJTkctVE9QOiAxMHB4
DQp9DQpQLnBhdGggew0KCURJU1BMQVk6IG5vbmUNCn0NCkFDUk9OWU0gew0K
CUJBQ0tHUk9VTkQ6ICNlMmUyZTI7IENPTE9SOiAjMDAzMzY2OyBDVVJTT1I6
IGhlbHANCn0NCiNjb250YWluZXIgew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsg
VEVYVC1BTElHTjogbGVmdDsgTUFSR0lOOiAwcHggYXV0bzsgV0lEVEg6IDk3
MHB4DQp9DQojbG9nbyB7DQoJV0lEVEg6IDEzNnB4OyBCQUNLR1JPVU5EOiB1
cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L2Nzcy9sb2dvLmpwZykgPQ0Kbm8t
cmVwZWF0IGxlZnQgdG9wOyBIRUlHSFQ6IDc4cHgNCn0NCkRJVi5IUFByaXZh
dGkgew0KCU1BUkdJTi1UT1A6IDQwcHgNCn0NCiNtYWluSW1nIHsNCglQQURE
SU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6IDhweDsgV0lEVEg6IDY4
NXB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IEZMT0FUOiBsZWZ0OyBQQURE
SU5HLVRPUDogMHB4DQp9DQojZm9jdXNBcmVhIHsNCglESVNQTEFZOiBub25l
DQp9DQojc2VhcmNoIHsNCglQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiAx
NTBweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5p
dC9JbW1hZ2luaS9zZWFyY2guZ2lmKSBuby1yZXBlYXQgbGVmdCB0b3A7ID0N
CkhFSUdIVDogMzBweDsgVE9QOiA1MHB4OyBSSUdIVDogMjRweA0KfQ0KRElW
LmZpcnN0IHsNCglQT1NJVElPTjogYWJzb2x1dGU7IFRFWFQtQUxJR046IGNl
bnRlcjsgQkFDS0dST1VORDogI2Y5YTczYjsgVE9QOiAwcHg7ID0NCkZPTlQt
V0VJR0hUOiBib2xkOyBMRUZUOiAxMzlweA0KfQ0KRElWLmZpcnN0IFVMIHsN
CglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1M
RUZUOiAwcHg7IFdJRFRIOiA1MTdweDsgPQ0KUEFERElORy1SSUdIVDogMHB4
OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0lt
bWFnaW5pL2JrZ192ZXJ0X3NlcC5naWYpICNmZmYgbm8tcmVwZWF0ID0NCnJp
Z2h0IHRvcDsgRkxPQVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJ
Vi5maXJzdCBVTCBMSSB7DQoJUEFERElORy1CT1RUT006IDBweDsgTElTVC1T
VFlMRS1UWVBFOiBub25lOyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiA9
DQowcHg7IFdJRFRIOiAxMjlweDsgUEFERElORy1SSUdIVDogMHB4OyBCQUNL
R1JPVU5ELVJFUEVBVDogbm8tcmVwZWF0OyA9DQpGTE9BVDogbGVmdDsgSEVJ
R0hUOiA4MHB4OyBDVVJTT1I6IHBvaW50ZXI7IFBBRERJTkctVE9QOiAwcHgN
Cn0NCkRJVi5maXJzdCBVTCBMSSBBIHsNCglQT1NJVElPTjogcmVsYXRpdmU7
IENPTE9SOiAjZmZmDQp9DQpESVYuZmlyc3QgVUwgTEkubG9nbyBJTUcgew0K
CVdJRFRIOiAxMTVweDsgRElTUExBWTogYmxvY2sNCn0NCkRJVi5maXJzdCBV
TCBMSSBBIHsNCglXSURUSDogMTI5cHg7IERJU1BMQVk6IGJsb2NrOyBIRUlH
SFQ6IDgwcHgNCn0NCkRJVi5maXJzdCBVTCBMSS5wcml2YXRpIEEgew0KCUJB
Q0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkv
cHJpdmF0aS5naWYpICNmZmYgbGVmdCA9DQp0b3ANCn0NCkRJVi5maXJzdCBV
TCBMSS5hemllbmRlIEEgew0KCUJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3
LmNhcnRhc2kuaXQvSW1tYWdpbmkvYXppZW5kZS5naWYpICNmZmYgbGVmdCA9
DQp0b3ANCn0NCkRJVi5maXJzdCBVTCBMSS5iYW5jaGUgQSB7DQoJQkFDS0dS
T1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9iYW5j
aGUuZ2lmKSAjZmZmIGxlZnQgPQ0KdG9wDQp9DQpESVYuZmlyc3QgVUwgTEku
ZXNlcmNlbnRpIEEgew0KCUJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNh
cnRhc2kuaXQvSW1tYWdpbmkvZXNlcmNlbnRpLmdpZikgI2ZmZiBsZWZ0ID0N
CnRvcA0KfQ0KRElWLmZpcnN0IFVMIExJLnByaXZhdGlfYXR0IEEgew0KCUJB
Q0tHUk9VTkQtSU1BR0U6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvcHJpdmF0aV9hdHQuZ2lmKTsgPQ0KQ09MT1I6ICNmOWE3M2INCn0N
CkRJVi5maXJzdCBVTCBMSS5hemllbmRlX2F0dCBBIHsNCglCQUNLR1JPVU5E
LUlNQUdFOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2F6
aWVuZGVfYXR0LmdpZik7ID0NCkNPTE9SOiAjNzJiMmNkDQp9DQpESVYuZmly
c3QgVUwgTEkuYmFuY2hlX2F0dCBBIHsNCglCQUNLR1JPVU5ELUlNQUdFOiB1
cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JhbmNoZV9hdHQu
Z2lmKTsgPQ0KQ09MT1I6ICM0ZGM3NTgNCn0NCkRJVi5maXJzdCBVTCBMSS5l
c2VyY2VudGlfYXR0IEEgew0KCUJBQ0tHUk9VTkQtSU1BR0U6ID0NCnVybCho
dHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvZXNlcmNlbnRpX2F0dC5n
aWYpOyBDT0xPUjogI2NmN2E3ZA0KfQ0KRElWLmZpcnN0IFVMIExJIEE6aG92
ZXIgew0KCUJBQ0tHUk9VTkQtUE9TSVRJT046IGxlZnQgYm90dG9tDQp9DQoj
bWFpbk5hdiB7DQoJUE9TSVRJT046IGFic29sdXRlOyBXSURUSDogOTY5cHg7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvb21icmFNZW51VG9wLmdpZikgcmVwZWF0LXggbGVmdCB0b3A7ID0N
ClRPUDogNzhweDsgTEVGVDogMHB4DQp9DQpESVYuc2Vjb25kIHsNCglQT1NJ
VElPTjogYWJzb2x1dGU7IFRPUDogNzhweDsgTEVGVDogMHB4DQp9DQpESVYu
c2Vjb25kIHsNCglCQUNLR1JPVU5EOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNp
Lml0L0ltbWFnaW5pL2JrZ19zZWNvbmRfbGV2ZWwuZ2lmKSA9DQojZmZmIHJl
cGVhdC14DQp9DQpESVYuc2Vjb25kIFVMIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiA5
NzBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4
DQp9DQpESVYuc2Vjb25kIFVMIExJIEEgew0KCVBBRERJTkctQk9UVE9NOiAx
MHB4OyBQQURESU5HLUxFRlQ6IDEwcHg7IFBBRERJTkctUklHSFQ6IDEwcHg7
ID0NCkZPTlQtU0laRTogMTBweDsgUEFERElORy1UT1A6IDEwcHgNCn0NCkRJ
Vi5zZWNvbmQgVUwgTEkgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IExJTkUt
SEVJR0hUOiAzNXB4OyBMSVNULVNUWUxFLVRZUEU6IG5vbmU7IE1BUkdJTjog
PQ0KMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4
OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0lt
bWFnaW5pL2JrZ19zZWNvbmRfbGV2ZWwuZ2lmKSAjZmZmIHJlcGVhdC14OyA9
DQpGTE9BVDogbGVmdDsgSEVJR0hUOiAzNXB4OyBDVVJTT1I6IHBvaW50ZXI7
IEZPTlQtV0VJR0hUOiBib2xkOyA9DQpQQURESU5HLVRPUDogMHB4DQp9DQpE
SVYuc2Vjb25kIFVMIExJLmF0dCB7DQoJQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9ia2dfc2Vjb25kX2xldmVs
X2F0dC5naWYpICNmZGUzYzAgPQ0KcmVwZWF0LXgNCn0NCkRJVi5zZWNvbmQg
VUwgTEkuYXR0aG92ZXIgew0KCUJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8v
d3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYmtnX3NlY29uZF9sZXZlbF9hdHQu
Z2lmKSAjZmRlM2MwID0NCnJlcGVhdC14DQp9DQpESVYuc2Vjb25kIFVMIExJ
LmF0dGhvdmVyIEEgew0KCUNPTE9SOiAjZmZmZmZmDQp9DQpESVYuc2Vjb25k
IFVMIExJLmF0dCBBIHsNCglDT0xPUjogI2ZmZmZmZg0KfQ0KRElWLnNlY29u
ZCBVTCBMSS5sYXN0IHsNCglQQURESU5HLVJJR0hUOiAzMHB4DQp9DQpESVYu
dGhpcmQgew0KCVBPU0lUSU9OOiBhYnNvbHV0ZTsgV0lEVEg6IDk3MHB4OyBE
SVNQTEFZOiBub25lOyBGT05ULUZBTUlMWTogPQ0KIlRyZWJ1Y2hldCBNUyIs
IFZlcmRhbmEsIEdlbmV2YSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJp
ZjsgPQ0KQkFDS0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9J
bW1hZ2luaS9ia2dfdGhpcmRfbGV2ZWwuZ2lmKSA9DQpuby1yZXBlYXQ7IEhF
SUdIVDogMTEycHg7IFRPUDogMzVweDsgTEVGVDogMHB4DQp9DQpESVYudGhp
cmQgVUwgew0KCVRFWFQtQUxJR046IGxlZnQ7IFBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KV0lEVEg6
IDE5NHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZMT0FUOiBsZWZ0OyBQQURE
SU5HLVRPUDogMHB4DQp9DQpESVYudGhpcmQgVUwgTEkgew0KCUJBQ0tHUk9V
TkQtSU1BR0U6IG5vbmU7IFBBRERJTkctQk9UVE9NOiAwcHg7IExJTkUtSEVJ
R0hUOiAxOHB4OyA9DQpCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsg
TUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBXSURUSDogPQ0KMTk0
cHg7IFBBRERJTkctUklHSFQ6IDBweDsgRkxPQVQ6IG5vbmU7IEhFSUdIVDog
MThweDsgQ09MT1I6ICNmOWE3M2I7ID0NCkNMRUFSOiBib3RoOyBGT05ULVNJ
WkU6IDEycHg7IEZPTlQtV0VJR0hUOiBub3JtYWw7IFBBRERJTkctVE9QOiAw
cHgNCn0NCkRJVi50aGlyZCBVTCBMSSBBIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBQQURESU5HLUxFRlQ6IDhweDsgV0lEVEg6IDE4NnB4OyBQQURESU5H
LVJJR0hUOiA9DQowcHg7IERJU1BMQVk6IGJsb2NrOyBDT0xPUjogI2Y5YTcz
YiAhaW1wb3J0YW50OyBGT05ULVdFSUdIVDogbm9ybWFsOyA9DQpQQURESU5H
LVRPUDogMHB4DQp9DQpESVYudGhpcmQgVUwgTEkub24gew0KCUJBQ0tHUk9V
TkQtQ09MT1I6ICNmZGUzYzANCn0NCkRJVi50aGlyZCBVTCBMSS5hY3RpdmUg
ew0KCUJBQ0tHUk9VTkQtQ09MT1I6ICNmZGUzYzANCn0NCkRJVi50aGlyZCBV
TCBMSS5hdHQgew0KCUJBQ0tHUk9VTkQtQ09MT1I6ICNmZGUzYzANCn0NCkRJ
Vi50aGlyZCBVTCBMSSBBIHsNCglDT0xPUjogI2Y5MA0KfQ0KRElWLnRoaXJk
IFVMIExJLmF0dCBBIHsNCglDT0xPUjogI2ZmZg0KfQ0KRElWLnRoaXJkIFVM
IExJLmF0dGhvdmVyIEEgew0KCUNPTE9SOiAjZjAwDQp9DQpESVYudGhpcmQg
VUwgTEkubGFzdCBBIHsNCglDT0xPUjogI2YwMA0KfQ0KRElWLnRoaXJkIFVM
IExJIEE6aG92ZXIgew0KCUNPTE9SOiAjMDAwDQp9DQpESVYudGhpcmQgVUwg
TEkuYXR0IEE6aG92ZXIgew0KCUNPTE9SOiAjMDAwDQp9DQpESVYudGhpcmQg
VUwgTEkuYXR0aG92ZXIgQTpob3ZlciB7DQoJQ09MT1I6ICMwMDANCn0NCkRJ
Vi50aGlyZCBVTCBMSS5sYXN0IEE6aG92ZXIgew0KCUNPTE9SOiAjMDAwDQp9
DQpESVYudGhpcmQgVUwuZm91cnRoIHsNCglQT1NJVElPTjogYWJzb2x1dGU7
IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxF
RlQ6ID0NCjBweDsgV0lEVEg6IDE5NHB4OyBQQURESU5HLVJJR0hUOiAwcHg7
IERJU1BMQVk6IG5vbmU7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3
LmNhcnRhc2kuaXQvSW1tYWdpbmkvYmtnX2ZvdXJ0aF9sZXZlbC5naWYpIG5v
LXJlcGVhdDsgPQ0KSEVJR0hUOiAxMTJweDsgVE9QOiAwcHg7IFBBRERJTkct
VE9QOiAwcHgNCn0NCkRJVi50aGlyZCBVTC5mb3VydGggTEkuYXR0IHsNCglC
QUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgRk9OVC1XRUlHSFQ6IGJv
bGQNCn0NCkRJVi50aGlyZCBVTC5mb3VydGggTEkub24gew0KCUJBQ0tHUk9V
TkQtQ09MT1I6ICNmZmYNCn0NCkRJVi50aGlyZCBVTC5mb3VydGggTEkuYWN0
aXZlIHsNCglCQUNLR1JPVU5ELUNPTE9SOiAjZmZmDQp9DQpMSS5ub3RoaXJk
U2VsZWN0b3I6aG92ZXIgew0KCUJBQ0tHUk9VTkQtQ09MT1I6ICNmZGUzYzAN
Cn0NCkxJLnRoaXJkU2VsZWN0b3IgQTpob3ZlciB7DQoJQkFDS0dST1VORDog
dXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9mcmVjY2luYS1t
ZW51LmdpZikgPQ0Kbm8tcmVwZWF0IHJpZ2h0IGNlbnRlcg0KfQ0KTEkuZm91
cnRoU2VsZWN0b3IgQTpob3ZlciB7DQoJQkFDS0dST1VORDogbm9uZSB0cmFu
c3BhcmVudCBzY3JvbGwgcmVwZWF0IDAlIDAlDQp9DQojdG9wTmF2IHsNCglU
RVhULUFMSUdOOiByaWdodDsgTUFSR0lOLVRPUDogMHB4OyBXSURUSDogOTQ4
cHg7IEZMT0FUOiByaWdodDsgPQ0KQk9SREVSLVRPUDogc2lsdmVyIDFweCBz
b2xpZDsgTUFSR0lOLVJJR0hUOiAxMnB4ICFpbXBvcnRhbnQNCn0NCiN0b3BO
YXYgVUwgew0KCUZMT0FUOiByaWdodDsgTUFSR0lOLVJJR0hUOiAycHggIWlt
cG9ydGFudA0KfQ0KI3RvcE5hdiBVTCBMSSB7DQoJVEVYVC1BTElHTjogY2Vu
dGVyOyBESVNQTEFZOiBpbmxpbmUNCn0NCiN0b3BOYXYgQSB7DQoJUEFERElO
Ry1CT1RUT006IDAuMmVtOyBNQVJHSU4tVE9QOiA2cHg7IFBBRERJTkctTEVG
VDogMS42ZW07ID0NClBBRERJTkctUklHSFQ6IDEuNmVtOyBESVNQTEFZOiBi
bG9jazsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAjYWFhOyA9DQpGT05ULVdFSUdI
VDogbm9ybWFsOyBURVhULURFQ09SQVRJT046IG5vbmU7IFBBRERJTkctVE9Q
OiAwLjJlbQ0KfQ0KI3RvcE5hdiBBOmxpbmsgew0KCVBBRERJTkctQk9UVE9N
OiAwLjJlbTsgTUFSR0lOLVRPUDogNnB4OyBQQURESU5HLUxFRlQ6IDEuNmVt
OyA9DQpQQURESU5HLVJJR0hUOiAxLjZlbTsgRElTUExBWTogYmxvY2s7IEZM
T0FUOiBsZWZ0OyBDT0xPUjogI2FhYTsgPQ0KRk9OVC1XRUlHSFQ6IG5vcm1h
bDsgVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURESU5HLVRPUDogMC4yZW0N
Cn0NCiN0b3BOYXYgQTp2aXNpdGVkIHsNCglQQURESU5HLUJPVFRPTTogMC4y
ZW07IE1BUkdJTi1UT1A6IDZweDsgUEFERElORy1MRUZUOiAxLjZlbTsgPQ0K
UEFERElORy1SSUdIVDogMS42ZW07IERJU1BMQVk6IGJsb2NrOyBGTE9BVDog
bGVmdDsgQ09MT1I6ICNhYWE7ID0NCkZPTlQtV0VJR0hUOiBub3JtYWw7IFRF
WFQtREVDT1JBVElPTjogbm9uZTsgUEFERElORy1UT1A6IDAuMmVtDQp9DQoj
dG9wTmF2IEE6aG92ZXIgew0KCUNPTE9SOiAjNjY2DQp9DQojdG9wTmF2IEE6
YWN0aXZlIHsNCglDT0xPUjogIzY2Ng0KfQ0KI3RvcE5hdiBMSSBVTCB7DQoJ
UE9TSVRJT046IGFic29sdXRlDQp9DQojdG9wTmF2IExJIExJIHsNCglESVNQ
TEFZOiBub25lDQp9DQojdG9wTmF2IFAgew0KCVRFWFQtQUxJR046IGxlZnQ7
IEZMT0FUOiBsZWZ0OyBDT0xPUjogI2FhYQ0KfQ0KI2Zvb3RlckludCB7DQoJ
VEVYVC1BTElHTjogbGVmdDsgTUFSR0lOOiAtMjBweCAwcHggMHB4IDhweDsg
V0lEVEg6IDMwOHB4OyBESVNQTEFZOiA9DQpub25lOyBGTE9BVDogbGVmdDsg
Q09MT1I6ICNhYWE7IEJPUkRFUi1UT1A6IHNpbHZlciAxcHggc29saWQNCn0N
CiNmb290ZXIgew0KCVRFWFQtQUxJR046IGxlZnQ7IE1BUkdJTjogLTIwcHgg
MHB4IDBweCA4cHg7IFdJRFRIOiAzMDhweDsgRElTUExBWTogPQ0Kbm9uZTsg
RkxPQVQ6IGxlZnQ7IENPTE9SOiAjYWFhOyBCT1JERVItVE9QOiBzaWx2ZXIg
MXB4IHNvbGlkDQp9DQojZm9vdGVySW50IFAgew0KCUNPTE9SOiAjOTk5OyBG
T05ULVNJWkU6IDEwcHgNCn0NCiNmb290ZXIgUCB7DQoJQ09MT1I6ICM5OTk7
IEZPTlQtU0laRTogMTBweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uIHsNCglQT1NJ
VElPTjogYWJzb2x1dGU7IFRPUDogMTE4cHg7IExFRlQ6IDcwNHB4DQp9DQoj
cGFubmVsbG9Nb3ZlT25IUCB7DQoJTUFSR0lOOiA0MnB4IDBweCAwcHggNnB4
OyBGTE9BVDogbGVmdA0KfQ0KI3Bhbm5lbGxvTW92ZU9uIEgzIHsNCglQQURE
SU5HLUJPVFRPTTogNnB4OyBNQVJHSU4tVE9QOiAwcHg7IFBBRERJTkctTEVG
VDogMTBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBDT0xPUjogI2Y5YTcz
YjsgRk9OVC1TSVpFOiAxMnB4OyBGT05ULVdFSUdIVDogYm9sZDsgPQ0KUEFE
RElORy1UT1A6IDEwcHgNCn0NCiNwYW5uZWxsb01vdmVPbiBIMyBBIHsNCglQ
QURESU5HLUJPVFRPTTogNnB4OyBNQVJHSU4tVE9QOiAwcHg7IFBBRERJTkct
TEVGVDogMTBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBDT0xPUjogI2Y5
YTczYjsgRk9OVC1TSVpFOiAxMnB4OyBGT05ULVdFSUdIVDogYm9sZDsgPQ0K
UEFERElORy1UT1A6IDEwcHgNCn0NCiNwYW5uZWxsb01vdmVPbkhQIEgzIHsN
CglQQURESU5HLUJPVFRPTTogNnB4OyBNQVJHSU4tVE9QOiAwcHg7IFBBRERJ
TkctTEVGVDogMTBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBDT0xPUjog
I2Y5YTczYjsgRk9OVC1TSVpFOiAxMnB4OyBGT05ULVdFSUdIVDogYm9sZDsg
PQ0KUEFERElORy1UT1A6IDEwcHgNCn0NCiNwYW5uZWxsb01vdmVPbkhQIEgz
IEEgew0KCUNPTE9SOiAjZjlhNzNiOyBGT05ULVNJWkU6IDEycHg7IEZPTlQt
V0VJR0hUOiBib2xkDQp9DQojcGFubmVsbG9Nb3ZlT24gI2FjY2Vzc28gew0K
CVdJRFRIOiAyNjFweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cu
Y2FydGFzaS5pdC9JbW1hZ2luaS9jdXJ2YVBhbm5lbGxvLmdpZikgbm8tcmVw
ZWF0IHJpZ2h0ID0NCnRvcA0KfQ0KI3Bhbm5lbGxvTW92ZU9uICNtb3ZlT24g
ew0KCVdJRFRIOiAyNjFweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93
d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9jdXJ2YVBhbm5lbGxvLmdpZikgbm8t
cmVwZWF0IHJpZ2h0ID0NCnRvcA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgI2Fj
Y2Vzc28gew0KCVdJRFRIOiAyNjFweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9jdXJ2YVBhbm5lbGxvLmdp
Zikgbm8tcmVwZWF0IHJpZ2h0ID0NCnRvcA0KfQ0KI3Bhbm5lbGxvTW92ZU9u
SFAgI21vdmVPbiB7DQoJV0lEVEg6IDI2MXB4OyBCQUNLR1JPVU5EOiA9DQp1
cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2N1cnZhUGFubmVs
bG8uZ2lmKSBuby1yZXBlYXQgcmlnaHQgPQ0KdG9wDQp9DQojcGFubmVsbG9N
b3ZlT25IUCAjYWNjZXNzbyB7DQoJUEFERElORy1CT1RUT006IDVweDsgTUFS
R0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9
DQowcHg7IFBBRERJTkctVE9QOiA1cHgNCn0NCiNwYW5uZWxsb01vdmVPbiBV
TC5hY2Nlc3NvUGFubmVsbG8gew0KCVBBRERJTkctQk9UVE9NOiA2cHg7IExJ
U1QtU1RZTEUtVFlQRTogbm9uZTsgTUFSR0lOOiAwcHggMHB4IDBweCAxZW07
ID0NClBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IExJ
U1QtU1RZTEUtSU1BR0U6IG5vbmU7ID0NClBBRERJTkctVE9QOiAwcHgNCn0N
CiNwYW5uZWxsb01vdmVPbkhQIFVMLmFjY2Vzc29QYW5uZWxsbyB7DQoJUEFE
RElORy1CT1RUT006IDZweDsgTElTVC1TVFlMRS1UWVBFOiBub25lOyBNQVJH
SU46IDBweCAwcHggMHB4IDFlbTsgPQ0KUEFERElORy1MRUZUOiAwcHg7IFBB
RERJTkctUklHSFQ6IDBweDsgTElTVC1TVFlMRS1JTUFHRTogbm9uZTsgPQ0K
UEFERElORy1UT1A6IDBweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uIFVMLmFjY2Vz
c29QYW5uZWxsbyBMSSB7DQoJTUFSR0lOOiAzcHggMHB4IDJweDsgV0lEVEg6
IDIxMXB4OyBESVNQTEFZOiBibG9jazsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9pbnB1dExvZ2luLmdpZikg
bm8tcmVwZWF0IGxlZnQgdG9wOyA9DQpIRUlHSFQ6IDI5cHgNCn0NCiNwYW5u
ZWxsb01vdmVPbkhQIFVMLmFjY2Vzc29QYW5uZWxsbyBMSSB7DQoJTUFSR0lO
OiAzcHggMHB4IDJweDsgV0lEVEg6IDIxMXB4OyBESVNQTEFZOiBibG9jazsg
QkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1h
Z2luaS9pbnB1dExvZ2luLmdpZikgbm8tcmVwZWF0IGxlZnQgdG9wOyA9DQpI
RUlHSFQ6IDI5cHgNCn0NCiNwYW5uZWxsb01vdmVPbiBVTC5hY2Nlc3NvUGFu
bmVsbG8gTEkgQSB7DQoJUEFERElORy1CT1RUT006IDEycHg7IFBBRERJTkct
TEVGVDogMTJweDsgUEFERElORy1SSUdIVDogMTJweDsgQ09MT1I6ID0NCiNm
OWE3M2I7IEZPTlQtU0laRTogMTBweDsgRk9OVC1XRUlHSFQ6IGJvbGQ7IFRF
WFQtREVDT1JBVElPTjogbm9uZTsgPQ0KUEFERElORy1UT1A6IDEycHgNCn0N
CiNwYW5uZWxsb01vdmVPbkhQIFVMLmFjY2Vzc29QYW5uZWxsbyBMSSBBIHsN
CglQQURESU5HLUJPVFRPTTogMTJweDsgUEFERElORy1MRUZUOiAxMnB4OyBQ
QURESU5HLVJJR0hUOiAxMnB4OyBDT0xPUjogPQ0KI2Y5YTczYjsgRk9OVC1T
SVpFOiAxMHB4OyBGT05ULVdFSUdIVDogYm9sZDsgVEVYVC1ERUNPUkFUSU9O
OiBub25lOyA9DQpQQURESU5HLVRPUDogMTJweA0KfQ0KI3Bhbm5lbGxvTW92
ZU9uIFVMLmFjY2Vzc29QYW5uZWxsbyBMSSBBOmhvdmVyIHsNCglURVhULURF
Q09SQVRJT046IHVuZGVybGluZQ0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgVUwu
YWNjZXNzb1Bhbm5lbGxvIExJIEE6aG92ZXIgew0KCVRFWFQtREVDT1JBVElP
TjogdW5kZXJsaW5lDQp9DQojcGFubmVsbG9Nb3ZlT24gI2FjY2Vzc28gSDMg
ew0KCVBBRERJTkctQk9UVE9NOiA2cHg7IE1BUkdJTjogMHB4OyBQQURESU5H
LUxFRlQ6IDlweDsgUEFERElORy1SSUdIVDogPQ0KNnB4OyBQQURESU5HLVRP
UDogNnB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCAjYWNjZXNzbyBIMyB7DQoJ
UEFERElORy1CT1RUT006IDZweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVG
VDogOXB4OyBQQURESU5HLVJJR0hUOiA9DQo2cHg7IFBBRERJTkctVE9QOiA2
cHgNCn0NCiNwYW5uZWxsb01vdmVPbiAjbW92ZU9uIFAgew0KCVBBRERJTkct
Qk9UVE9NOiA0cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsg
UEFERElORy1SSUdIVDogPQ0KMHB4OyBQQURESU5HLVRPUDogMnB4DQp9DQoj
cGFubmVsbG9Nb3ZlT25IUCAjbW92ZU9uIFAgew0KCVBBRERJTkctQk9UVE9N
OiA0cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElO
Ry1SSUdIVDogPQ0KMHB4OyBQQURESU5HLVRPUDogMnB4DQp9DQojcGFubmVs
bG9Nb3ZlT24gI21vdmVPbiBJTUcgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7
IE1BUkdJTjogLThweCAwcHggMHB4IDJweDsgUEFERElORy1MRUZUOiAwcHg7
ID0NClBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1UT1A6IDBweA0KfQ0K
I3Bhbm5lbGxvTW92ZU9uSFAgI21vdmVPbiBJTUcgew0KCVBBRERJTkctQk9U
VE9NOiAwcHg7IE1BUkdJTjogLThweCAwcHggMHB4IDJweDsgUEFERElORy1M
RUZUOiAwcHg7ID0NClBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1UT1A6
IDBweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgRElWLmJhc2ljIHsNCglNQVJH
SU46IDBweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgRElWLmJhc2ljIEEgew0K
CUNPTE9SOiAjOTk5OyBGT05ULVdFSUdIVDogbm9ybWFsOyBURVhULURFQ09S
QVRJT046IG5vbmUNCn0NCiNwYW5uZWxsb01vdmVPbkhQIERJVi5iYXNpYyBB
OmhvdmVyIHsNCglURVhULURFQ09SQVRJT046IHVuZGVybGluZQ0KfQ0KI3Bh
bm5lbGxvTW92ZU9uICNtb3ZlT24gUCBBIElNRyB7DQoJTUFSR0lOLVRPUDog
LTExcHgNCn0NCiNwYW5uZWxsb01vdmVPbkhQICNhY2Nlc3NvIFAgew0KCVRF
WFQtQUxJR046IGp1c3RpZnk7IFBBRERJTkctQk9UVE9NOiAwLjZlbTsgUEFE
RElORy1MRUZUOiAxZW07ID0NClBBRERJTkctUklHSFQ6IDFlbTsgUEFERElO
Ry1UT1A6IDAuNmVtDQp9DQojcGFubmVsbG9Nb3ZlT25IUCAjbW92ZU9uIEgz
IHsNCglQQURESU5HLUJPVFRPTTogMTJweDsgVEVYVC1UUkFOU0ZPUk06IGxv
d2VyY2FzZTsgTUFSR0lOOiAwcHg7ID0NClBBRERJTkctTEVGVDogMHB4OyBQ
QURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiA0cHgNCn0NCi5iYXNp
YyBINCB7DQoJUEFERElORy1CT1RUT006IDZweDsgUEFERElORy1MRUZUOiA2
cHg7IFBBRERJTkctUklHSFQ6IDZweDsgRElTUExBWTogPQ0KYmxvY2s7IEJB
Q0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkv
Y3VydmFQYW5uZWxsby5naWYpID0NCm5vLXJlcGVhdCByaWdodCB0b3A7IEZP
TlQtU0laRTogMTFweDsgQ1VSU09SOiBwb2ludGVyOyBGT05ULVdFSUdIVDog
PQ0KYm9sZDsgUEFERElORy1UT1A6IDZweA0KfQ0KRElWI2NvbER4IFAucGRm
IHsNCglQQURESU5HLUJPVFRPTTogNnB4OyBQQURESU5HLUxFRlQ6IDZweDsg
UEFERElORy1SSUdIVDogNnB4OyBESVNQTEFZOiA9DQpibG9jazsgQkFDS0dS
T1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9jdXJ2
YVBhbm5lbGxvLmdpZikgPQ0Kbm8tcmVwZWF0IHJpZ2h0IHRvcDsgRk9OVC1T
SVpFOiAxMXB4OyBDVVJTT1I6IHBvaW50ZXI7IEZPTlQtV0VJR0hUOiA9DQpi
b2xkOyBQQURESU5HLVRPUDogNnB4DQp9DQpESVYjY29sRHggUC5hZG9iZVJl
YWRlciB7DQoJUEFERElORy1CT1RUT006IDZweDsgUEFERElORy1MRUZUOiA2
cHg7IFBBRERJTkctUklHSFQ6IDZweDsgRElTUExBWTogPQ0KYmxvY2s7IEJB
Q0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkv
Y3VydmFQYW5uZWxsby5naWYpID0NCm5vLXJlcGVhdCByaWdodCB0b3A7IEZP
TlQtU0laRTogMTFweDsgQ1VSU09SOiBwb2ludGVyOyBGT05ULVdFSUdIVDog
PQ0KYm9sZDsgUEFERElORy1UT1A6IDZweA0KfQ0KRElWI2NvbER4IFAucGRm
IHsNCglDT0xPUjogI2Y5YTczYg0KfQ0KRElWI2NvbER4IFAuYWRvYmVSZWFk
ZXIgew0KCUNPTE9SOiAjZjlhNzNiDQp9DQouYmFzaWMgUCB7DQoJVEVYVC1B
TElHTjoganVzdGlmeTsgUEFERElORy1CT1RUT006IDBweDsgUEFERElORy1M
RUZUOiA2cHg7IFdJRFRIOiA9DQoyMzhweDsgUEFERElORy1SSUdIVDogMHB4
OyBDT0xPUjogIzk5OTsgRk9OVC1TSVpFOiAxMXB4OyBQQURESU5HLVRPUDog
PQ0KMHB4DQp9DQouYmFzaWMgRElWIHsNCglCQUNLR1JPVU5EOiBub25lIHRy
YW5zcGFyZW50IHNjcm9sbCByZXBlYXQgMCUgMCU7IEhFSUdIVDogOTZweDsg
PQ0KQk9SREVSLVJJR0hUOiAjZjlhNzNiIDFweCBzb2xpZA0KfQ0KI2xpc3Qx
YiBESVYgew0KPTA5DQp9DQojbGlzdDFiIEg0IHsNCglCQUNLR1JPVU5EOiB1
cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2N1cnZhUGFubmVs
bG8yLmdpZikgI2ZmZiA9DQpuby1yZXBlYXQgcmlnaHQgdG9wDQp9DQojbGlz
dDFiIERJViBQIHsNCglCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgQk9S
REVSLUxFRlQ6IG1lZGl1bSBub25lOyBXSURUSDogYXV0bzsgPQ0KQk9SREVS
LVRPUDogbWVkaXVtIG5vbmU7IEJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmUN
Cn0NCiNsaXN0MWIgRElWIExJIHsNCglXSURUSDogNTkwcHgNCn0NCkRJViNj
b2xEeCB7DQoJTUFSR0lOOiAzMTBweCA0cHggMHB4IDBweDsgV0lEVEg6IDI1
N3B4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0
L0ltbWFnaW5pL2N1cnZhUGFubmVsbG8uZ2lmKSBuby1yZXBlYXQgcmlnaHQg
PQ0KdG9wOyBGTE9BVDogcmlnaHQ7IENPTE9SOiAjNTA1MDUwDQp9DQpESVYj
Y29sRHggQSB7DQoJVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpESVYjY29s
RHggUC5hZG9iZVJlYWRlciB7DQoJQkFDS0dST1VORDogbm9uZSB0cmFuc3Bh
cmVudCBzY3JvbGwgcmVwZWF0IDAlIDAlDQp9DQpESVYjY29sRHggUC5hZG9i
ZVJlYWRlciB7DQoJUEFERElORy1CT1RUT006IDhweDsgUEFERElORy1MRUZU
OiAxMHB4OyBQQURESU5HLVJJR0hUOiAxMHB4OyA9DQpGT05ULVNJWkU6IDFl
bTsgRk9OVC1XRUlHSFQ6IDcwMDsgUEFERElORy1UT1A6IDhweA0KfQ0KRElW
I2NvbER4IFAuYWRvYmVSZWFkZXIgQTpob3ZlciB7DQoJQ09MT1I6ICM5OTkN
Cn0NCkRJViNjb2xEeCBVTC5zY2hlZGFQcm9kb3R0byB7DQoJVEVYVC1BTElH
TjogbGVmdDsgTElTVC1TVFlMRS1UWVBFOiBub25lOyBNQVJHSU46IDBweDsg
Q09MT1I6ICM5OTk7ID0NCkZPTlQtU0laRTogMWVtOyBMSVNULVNUWUxFLUlN
QUdFOiBub25lDQp9DQpESVYjY29sRHggVUwuc2NoZWRhUHJvZG90dG8gTEkg
ew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogMTJweDsg
UEFERElORy1SSUdIVDogMHB4OyA9DQpQQURESU5HLVRPUDogNnB4DQp9DQpE
SVYjY29sRHggVUwuc2NoZWRhUHJvZG90dG8gTEkgQSB7DQoJQk9SREVSLUJP
VFRPTTogI2NjYyAxcHggZGFzaGVkOyBQQURESU5HLUJPVFRPTTogMTJweDsg
UEFERElORy1MRUZUOiA9DQozOHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IERJ
U1BMQVk6IGJsb2NrOyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5j
YXJ0YXNpLml0L0ltbWFnaW5pL2Fjcm9iYXRSZWFkZXIuZ2lmKSBuby1yZXBl
YXQgbGVmdCA9DQp0b3A7IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6IDlweDsg
VEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURESU5HLVRPUDogPQ0KOHB4DQp9
DQpESVYjY29sRHggVUwuc2NoZWRhUHJvZG90dG8gTEkgQTpob3ZlciB7DQoJ
Q09MT1I6ICNmOWE3M2I7IFRFWFQtREVDT1JBVElPTjogdW5kZXJsaW5lDQp9
DQojY29udGVudXRpIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU4t
VE9QOiAzMnB4OyBQQURESU5HLUxFRlQ6IDE4cHg7IFdJRFRIOiA9DQo2NzVw
eDsgUEFERElORy1SSUdIVDogMHB4OyBGTE9BVDogbGVmdDsgUEFERElORy1U
T1A6IDBweA0KfQ0KI2NvbnRlbnV0aTEgew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTi1UT1A6IDMycHg7IFBBRERJTkctTEVGVDogMThweDsgV0lE
VEg6ID0NCjY3NXB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZMT0FUOiBsZWZ0
OyBQQURESU5HLVRPUDogMHB4DQp9DQojY29udGVudXRpMiB7DQoJUEFERElO
Ry1CT1RUT006IDBweDsgTUFSR0lOLVRPUDogMzJweDsgUEFERElORy1MRUZU
OiAxOHB4OyBXSURUSDogPQ0KNjc1cHg7IFBBRERJTkctUklHSFQ6IDBweDsg
RkxPQVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0NCiNjb250ZW51dGkg
VUwgew0KCUxJU1QtU1RZTEUtVFlQRTogZGlzYzsgTUFSR0lOOiAxZW0gMHB4
IDFlbSAyZW0NCn0NCiNjb250ZW51dGkxIFVMIHsNCglMSVNULVNUWUxFLVRZ
UEU6IGRpc2M7IE1BUkdJTjogMWVtIDBweCAxZW0gMmVtDQp9DQojY29udGVu
dXRpMiBVTCB7DQoJTElTVC1TVFlMRS1UWVBFOiBkaXNjOyBNQVJHSU46IDFl
bSAwcHggMWVtIDJlbQ0KfQ0KI2NvbnRlbnV0aSAucmlnaHQgew0KCU1BUkdJ
TjogLTRlbSAtMWVtIDBweCAyZW07IEZMT0FUOiByaWdodA0KfQ0KI2NvbnRl
bnV0aTEgLnJpZ2h0IHsNCglNQVJHSU46IC00ZW0gLTFlbSAwcHggMmVtOyBG
TE9BVDogcmlnaHQNCn0NCiNjb250ZW51dGkyIC5yaWdodCB7DQoJTUFSR0lO
OiAtNGVtIC0xZW0gMHB4IDJlbTsgRkxPQVQ6IHJpZ2h0DQp9DQpESVYjY29u
dGVudXRpIFVMIHsNCglMSVNULVNUWUxFLUlNQUdFOiB1cmwoaHR0cDovL3d3
dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2ZyZWNjaW5hLXByLmdpZikNCn0NCkRJ
ViNjb250ZW51dGkxIFVMIHsNCglMSVNULVNUWUxFLUlNQUdFOiB1cmwoaHR0
cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2ZyZWNjaW5hLXByLmdpZikN
Cn0NCkRJViNjb250ZW51dGkyIFVMIHsNCglMSVNULVNUWUxFLUlNQUdFOiB1
cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2ZyZWNjaW5hLXBy
LmdpZikNCn0NCkRJViNjb250YXR0YWNpIHsNCglCT1JERVItQk9UVE9NOiAj
NjY2IDFweCBzb2xpZDsgQk9SREVSLUxFRlQ6ICM2NjYgMXB4IHNvbGlkOyBX
SURUSDogPQ0KMTgwcHg7IEZMT0FUOiByaWdodDsgQk9SREVSLVRPUDogIzY2
NiAxcHggc29saWQ7IEJPUkRFUi1SSUdIVDogIzY2NiAxcHggPQ0Kc29saWQN
Cn0NCiNjb250YWluZXIgLnB1bHNhbnRlUm9zc28gew0KCVRFWFQtQUxJR046
IGxlZnQ7IExJTkUtSEVJR0hUOiAzNHB4OyBQQURESU5HLUxFRlQ6IDEwcHg7
IFdJRFRIOiAxNDJweDsgPQ0KRElTUExBWTogYmxvY2s7IEJBQ0tHUk9VTkQ6
ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvcHVsc2Fu
dGVSb3Nzby5naWYpIG5vLXJlcGVhdDsgSEVJR0hUOiA9DQozOHB4OyBDT0xP
UjogI2ZmZjsgVkVSVElDQUwtQUxJR046IG1pZGRsZTsgVEVYVC1ERUNPUkFU
SU9OOiBub25lDQp9DQojY29udGFpbmVyIC5wdWxzYW50ZUFyYW5jaW8gew0K
CVRFWFQtQUxJR046IGxlZnQ7IExJTkUtSEVJR0hUOiAzNHB4OyBQQURESU5H
LUxFRlQ6IDEwcHg7IFdJRFRIOiAxNDJweDsgPQ0KRElTUExBWTogYmxvY2s7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvcHVsc2FudGVSb3Nzby5naWYpIG5vLXJlcGVhdDsgSEVJR0hUOiA9
DQozOHB4OyBDT0xPUjogI2ZmZjsgVkVSVElDQUwtQUxJR046IG1pZGRsZTsg
VEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQojY29udGFpbmVyIC5wdWxzYW50
ZVZlcmRlIHsNCglURVhULUFMSUdOOiBsZWZ0OyBMSU5FLUhFSUdIVDogMzRw
eDsgUEFERElORy1MRUZUOiAxMHB4OyBXSURUSDogMTQycHg7ID0NCkRJU1BM
QVk6IGJsb2NrOyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0
YXNpLml0L0ltbWFnaW5pL3B1bHNhbnRlUm9zc28uZ2lmKSBuby1yZXBlYXQ7
IEhFSUdIVDogPQ0KMzhweDsgQ09MT1I6ICNmZmY7IFZFUlRJQ0FMLUFMSUdO
OiBtaWRkbGU7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KI2NvbnRhaW5l
ciAucHVsc2FudGVBenp1cnJvIHsNCglURVhULUFMSUdOOiBsZWZ0OyBMSU5F
LUhFSUdIVDogMzRweDsgUEFERElORy1MRUZUOiAxMHB4OyBXSURUSDogMTQy
cHg7ID0NCkRJU1BMQVk6IGJsb2NrOyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0
cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL3B1bHNhbnRlUm9zc28uZ2lm
KSBuby1yZXBlYXQ7IEhFSUdIVDogPQ0KMzhweDsgQ09MT1I6ICNmZmY7IFZF
UlRJQ0FMLUFMSUdOOiBtaWRkbGU7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0K
fQ0KI2NvbnRhaW5lciAucHVsc2FudGVBcmFuY2lvIHsNCglCQUNLR1JPVU5E
OiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL3B1bHNhbnRl
QXJhbmNpby5naWYpID0NCm5vLXJlcGVhdA0KfQ0KI2NvbnRhaW5lciAucHVs
c2FudGVWZXJkZSB7DQoJQkFDS0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9JbW1hZ2luaS9wdWxzYW50ZVZlcmRlLmdpZikgPQ0Kbm8tcmVw
ZWF0DQp9DQojY29udGFpbmVyIC5wdWxzYW50ZUF6enVycm8gew0KCUJBQ0tH
Uk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvcHVs
c2FudGVBenp1cnJvLmdpZikgPQ0Kbm8tcmVwZWF0DQp9DQpESVYudmlhSW50
ZXJuZXQgew0KCVdJRFRIOiA2NDBweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9hZGVyaXNjaUludGVybmV0
LmpwZykgbm8tcmVwZWF0IGxlZnQgPQ0KdG9wOyBIRUlHSFQ6IDExMHB4DQp9
DQpESVYudmlhVGVsZWZvbm8gew0KCVdJRFRIOiA0ODBweDsgQkFDS0dST1VO
RDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9hZGVy
aXNjaVRlbGVmb25vLmpwZykgbm8tcmVwZWF0IGxlZnQgPQ0KdG9wOyBIRUlH
SFQ6IDExMHB4DQp9DQojY29udGFpbmVyIERJVi52aWFJbnRlcm5ldCBIMyB7
DQoJUEFERElORy1MRUZUOiAxMzJweDsgRk9OVC1GQU1JTFk6ICJUcmVidWNo
ZXQgTVMiLCBWZXJkYW5hLCBBcmlhbCwgPQ0Kc2Fucy1zZXJpZjsgRk9OVC1T
SVpFOiAxOHB4DQp9DQojY29udGFpbmVyIERJVi52aWFUZWxlZm9ubyBIMyB7
DQoJUEFERElORy1MRUZUOiAxMzJweDsgRk9OVC1GQU1JTFk6ICJUcmVidWNo
ZXQgTVMiLCBWZXJkYW5hLCBBcmlhbCwgPQ0Kc2Fucy1zZXJpZjsgRk9OVC1T
SVpFOiAxOHB4DQp9DQpESVYudmlhSW50ZXJuZXQgSDMgU1BBTiB7DQoJQ09M
T1I6ICMwNmYNCn0NCkRJVi52aWFUZWxlZm9ubyBIMyBTUEFOIHsNCglDT0xP
UjogIzA2Zg0KfQ0KRElWLnZpYUludGVybmV0IFAgew0KCU1BUkdJTi1MRUZU
OiAxMzJweA0KfQ0KRElWLnZpYVRlbGVmb25vIFAgew0KCU1BUkdJTi1MRUZU
OiAxMzJweA0KfQ0KRElWI2NvbnRhaW5lciBESVYuY2x1Yklvc2kgVUwgew0K
CU1BUkdJTjogMTJweA0KfQ0KVUwuY3NpUmlzcG9uZGUgew0KCUxJU1QtU1RZ
TEUtVFlQRTogZGlzYzsgTElTVC1TVFlMRS1JTUFHRTogPQ0KdXJsKGh0dHA6
Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9kb21hbmRlX3Jpc3Bvc3RlL2Zy
ZWNjaW5hLmdpZikNCn0NCkRJViNjb250YWluZXIgVUwubWVudUNhcnRhIHsN
CglQQURESU5HLUJPVFRPTTogMHB4OyBMSVNULVNUWUxFLVRZUEU6IG5vbmU7
IE1BUkdJTjogMHB4IDBweCAyZW07ID0NClBBRERJTkctTEVGVDogMHB4OyBQ
QURESU5HLVJJR0hUOiAwcHg7IExJU1QtU1RZTEUtSU1BR0U6IG5vbmU7ID0N
ClBBRERJTkctVE9QOiAwcHgNCn0NCkRJViNjb250YWluZXIgVUwubWVudUNh
cnRhIExJIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsg
UEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgRElT
UExBWTogaW5saW5lOyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYjY29udGFp
bmVyIFVMLm1lbnVDYXJ0YSBMSSB7DQoJRk9OVC1XRUlHSFQ6IDcwMDsgVEVY
VC1ERUNPUkFUSU9OOiBub25lDQp9DQpVTC5tZW51Q2FydGEgTEkgQSB7DQoJ
Rk9OVC1XRUlHSFQ6IDcwMDsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpE
SVYjY29udGFpbmVyIFVMLm1lbnVDYXJ0YSBMSSBBIHsNCglQQURESU5HLUJP
VFRPTTogNnB4OyBQQURESU5HLUxFRlQ6IDZweDsgUEFERElORy1SSUdIVDog
NnB4OyA9DQpQQURESU5HLVRPUDogNnB4DQp9DQpESVYjY29udGFpbmVyIFVM
Lm1lbnVDYXJ0YSBMSSBBI3ByZXNlbnRhemlvbmUgew0KCVBBRERJTkctQk9U
VE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFE
RElORy1SSUdIVDogPQ0KMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQoudmFu
dGFnZ2lDYXJ0YSB7DQoJTUFSR0lOLUxFRlQ6IDFlbQ0KfQ0KLnZlcnNpb25p
Q2FydGEgew0KCU1BUkdJTi1MRUZUOiAxZW0NCn0NCi5xdW90ZUNhcnRhIHsN
CglNQVJHSU4tTEVGVDogMWVtDQp9DQouaW5mb0NhcnRhIHsNCglNQVJHSU4t
TEVGVDogMWVtDQp9DQouaW5mb0NhcnRhIFVMIHsNCglNQVJHSU46IDBweA0K
fQ0KRElWLmVzYWx0YVZhbnRhZ2dpIHsNCj0wOQ0KfQ0KUC5pbWdDZW50cmF0
YSB7DQoJTUFSR0lOOiAxMnB4IDEycHggMTJweCAwcHgNCn0NClAuaW1nQ2Vu
dHJhdGEgU1BBTiB7DQoJTUFSR0lOLVRPUDogLTIycHg7IERJU1BMQVk6IGJs
b2NrOyBNQVJHSU4tTEVGVDogNDBweA0KfQ0KVEFCTEUuZWxlbmNvQ29tYW5k
aSB7DQoJTUFSR0lOOiAwcHggMHB4IDJlbQ0KfQ0KVEFCTEUuZWxlbmNvQ29t
YW5kaSBUSCB7DQoJVEVYVC1BTElHTjogbGVmdDsgUEFERElORy1CT1RUT006
IDRweDsgUEFERElORy1MRUZUOiA4cHg7ID0NClBBRERJTkctUklHSFQ6IDhw
eDsgQkFDS0dST1VORDogIzk5OTsgUEFERElORy1UT1A6IDRweA0KfQ0KVEFC
TEUuZWxlbmNvQ29tYW5kaSBURCB7DQoJUEFERElORy1CT1RUT006IDRweDsg
UEFERElORy1MRUZUOiA4cHg7IFBBRERJTkctUklHSFQ6IDhweDsgQkFDS0dS
T1VORDogPQ0KI2VhZWFlYTsgUEFERElORy1UT1A6IDRweA0KfQ0KLnBhcnRu
ZXJTTVMgLmxvZ29QYXJ0bmVyU01TIElNRyB7DQoJTUFSR0lOOiAwcHggMjRw
eCAyNHB4IDBweDsgV0lEVEg6IDEzMHB4OyBGTE9BVDogbGVmdDsgSEVJR0hU
OiAxMDBweA0KfQ0KUC5saW5rQmFjayB7DQoJVEVYVC1BTElHTjogcmlnaHQ7
IE1BUkdJTjogMTJweCAwcHggMHB4OyBQQURESU5HLVRPUDogMTJweA0KfQ0K
I2NvbnRhaW5lciBESVYuaXNzT25saW5lIHsNCj0wOQ0KfQ0KI2NvbnRhaW5l
ciBESVYuaXNzT25saW5lIEgzLnRpdG9sbyB7DQoJRk9OVC1TSVpFOiAxMXB4
DQp9DQpESVYudmFudGFnZ2kgSDIudGl0b2xvIHsNCglQQURESU5HLUJPVFRP
TTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJ
TkctUklHSFQ6ID0NCjBweDsgRk9OVC1TSVpFOiAxMXB4OyBQQURESU5HLVRP
UDogMHB4DQp9DQpESVYudmFudGFnZ2kgSDMudGl0b2xvIHsNCglQQURESU5H
LUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7
IFBBRERJTkctUklHSFQ6ID0NCjBweDsgRk9OVC1TSVpFOiAxMXB4OyBQQURE
SU5HLVRPUDogMHB4DQp9DQpESVYudmFudGFnZ2kgUC5sZWZ0IHsNCglXSURU
SDogMTIwcHg7IEhFSUdIVDogMTQwcHgNCn0NCkRJVi52YW50YWdnaSBQLmxl
ZnQgSU1HIHsNCglNQVJHSU4tVE9QOiAxMnB4DQp9DQpESVYudmlsbGFnZSBE
SVYuYmFubmVyRmxhc2ggew0KCU1BUkdJTjogMHB4IDBweCAyZW0gMmVtOyBX
SURUSDogMTYxcHg7IEZMT0FUOiByaWdodDsgSEVJR0hUOiAyOTRweA0KfQ0K
RElWI2NvbnRhaW5lciBESVYuZWxlbmNvU2l0aSB7DQoJVEVYVC1BTElHTjog
bGVmdDsgTUFSR0lOOiAxMnB4IDIycHggMHB4IDBweDsgRkxPQVQ6IHJpZ2h0
DQp9DQpESVYjY29udGFpbmVyIERJVi5lbGVuY29TaXRpIERJViNhY2NvcmRp
b25iIERJViB7DQoJV0lEVEg6IDIzMHB4OyBGTE9BVDogbGVmdDsgRk9OVC1T
SVpFOiAxMnB4DQp9DQpESVYjY29udGFpbmVyIERJVi5lbGVuY29TaXRpIERJ
ViB7DQoJV0lEVEg6IDMxOHB4OyBGTE9BVDogbGVmdDsgRk9OVC1TSVpFOiAx
MnB4DQp9DQpESVYjY29udGFpbmVyIERJVi5lbGVuY29TaXRpIFVMIHsNCglM
SVNULVNUWUxFLUlNQUdFOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0
L0ltbWFnaW5pL2NhdGVnb3JpZS9WQlZmcmVjY2luZS5naWYpDQp9DQpCT0RZ
LnBvcHVwIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsg
UEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgUEFE
RElORy1UT1A6IDBweA0KfQ0KRElWI2NvbnRlbnV0aSBESVYjdHJlRHNlY3Vy
ZSB7DQoJQ09MT1I6ICM0NDQNCn0NCkRJViNjb250ZW51dGkxIERJViN0cmVE
c2VjdXJlIHsNCglDT0xPUjogIzQ0NA0KfQ0KRElWI2NvbnRlbnV0aTIgRElW
I3RyZURzZWN1cmUgew0KCUNPTE9SOiAjNDQ0DQp9DQpESVYjdHJlRHNlY3Vy
ZSBIMy50aXRvbG8gew0KCU1BUkdJTi1MRUZUOiAwcHgNCn0NCkRJViN0cmVE
c2VjdXJlIExJIHsNCglNQVJHSU4tTEVGVDogMThweDsgTElTVC1TVFlMRS1J
TUFHRTogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9m
cmVjY2luYS1wci5naWYpDQp9DQpESVYjdHJlRHNlY3VyZSBQIHsNCglQQURE
SU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweCAwcHggMTJweDsgUEFERElO
Ry1MRUZUOiAwcHg7ID0NClBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1U
T1A6IDBweA0KfQ0KRElWI3RyZURzZWN1cmUgUC5kb21hbmRhIHsNCglQQURE
SU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDE4cHggMHB4IDBweDsgUEFERElO
Ry1MRUZUOiAwcHg7ID0NClBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1U
T1A6IDBweA0KfQ0KRElWI3RyZURzZWN1cmUgRElWLm5vUFQgew0KCUJPUkRF
Ui1CT1RUT006ICNmOTAgZG91YmxlOyBCT1JERVItTEVGVDogI2Y5MCBkb3Vi
bGU7IFBBRERJTkctQk9UVE9NOiA9DQoxZW07IE1BUkdJTjogMWVtOyBQQURE
SU5HLUxFRlQ6IDFlbTsgUEFERElORy1SSUdIVDogMWVtOyBCT1JERVItVE9Q
OiA9DQojZjkwIGRvdWJsZTsgQk9SREVSLVJJR0hUOiAjZjkwIGRvdWJsZTsg
UEFERElORy1UT1A6IDFlbQ0KfQ0KRElWI3RyZURzZWN1cmUgRElWLlBUIHsN
CglCT1JERVItQk9UVE9NOiAjZjkwIGRvdWJsZTsgQk9SREVSLUxFRlQ6ICNm
OTAgZG91YmxlOyBQQURESU5HLUJPVFRPTTogPQ0KMWVtOyBNQVJHSU46IDFl
bTsgUEFERElORy1MRUZUOiAxZW07IFBBRERJTkctUklHSFQ6IDFlbTsgQk9S
REVSLVRPUDogPQ0KI2Y5MCBkb3VibGU7IEJPUkRFUi1SSUdIVDogI2Y5MCBk
b3VibGU7IFBBRERJTkctVE9QOiAxZW0NCn0NCkRJViN0cmVEc2VjdXJlIFVM
LmZhcSB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBB
RERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IFBBRERJ
TkctVE9QOiAwcHgNCn0NCkRJViN0cmVEc2VjdXJlIFVMLmZhcSBMSSB7DQoJ
UEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVG
VDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IERJU1BMQVk6IGlubGlu
ZTsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWI3RyZURzZWN1cmUgVUwuZmFx
IExJIEEgew0KCVBBRERJTkctQk9UVE9NOiAycHg7IE1BUkdJTjogMHB4IDBw
eCAwcHggMXB4OyBQQURESU5HLUxFRlQ6IDRweDsgPQ0KUEFERElORy1SSUdI
VDogNHB4OyBCQUNLR1JPVU5EOiAjY2NjOyBDT0xPUjogIzAwNjsgVEVYVC1E
RUNPUkFUSU9OOiA9DQpub25lOyBQQURESU5HLVRPUDogMnB4DQp9DQpESVYj
dHJlRHNlY3VyZSBVTC5mYXEgTEkgQS5hY3RpdmUgew0KCUJBQ0tHUk9VTkQ6
ICNmOTA7IENPTE9SOiAjMzMzDQp9DQpESVYjdHJlRHNlY3VyZSBVTC5mYXEg
TEkgQTpob3ZlciB7DQoJQkFDS0dST1VORDogI2Y5MDsgQ09MT1I6ICMzMzMN
Cn0NCkRJViN0cmVEc2VjdXJlIFAuUmlnaHQgSU1HIHsNCglGTE9BVDogcmln
aHQ7IE1BUkdJTi1MRUZUOiAxMnB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCBV
TC5hY2Nlc3NvUGFubmVsbG8gTEkgQSB7DQoJUEFERElORy1CT1RUT006IDE2
cHg7IExJTkUtSEVJR0hUOiAyMnB4OyBQQURESU5HLUxFRlQ6IDE2cHg7ID0N
ClBBRERJTkctUklHSFQ6IDE2cHg7IENPTE9SOiAjZjlhNzNiOyBGT05ULVNJ
WkU6IDEwcHg7IEZPTlQtV0VJR0hUOiBib2xkOyA9DQpURVhULURFQ09SQVRJ
T046IG5vbmU7IFBBRERJTkctVE9QOiAxNnB4DQp9DQojcGFubmVsbG9Nb3Zl
T24gVUwuYWNjZXNzb1Bhbm5lbGxvIExJIEEgew0KCVBBRERJTkctQk9UVE9N
OiAxNnB4OyBMSU5FLUhFSUdIVDogMjJweDsgUEFERElORy1MRUZUOiAxNnB4
OyA9DQpQQURESU5HLVJJR0hUOiAxNnB4OyBDT0xPUjogI2Y5YTczYjsgRk9O
VC1TSVpFOiAxMHB4OyBGT05ULVdFSUdIVDogYm9sZDsgPQ0KVEVYVC1ERUNP
UkFUSU9OOiBub25lOyBQQURESU5HLVRPUDogMTZweA0KfQ0KTEkuYWN0aXZl
LnRoaXJkU2VsZWN0b3Igew0KCUJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3
LmNhcnRhc2kuaXQvSW1tYWdpbmkvZnJlY2NpbmEtbWVudS5naWYpID0NCm5v
LXJlcGVhdCByaWdodCBjZW50ZXINCn0NCiN0b3BOYXYgQSB7DQoJUEFERElO
Ry1CT1RUT006IDAuMmVtOyBNQVJHSU4tVE9QOiA2cHg7IFBBRERJTkctTEVG
VDogMWVtOyA9DQpQQURESU5HLVJJR0hUOiAxZW07IERJU1BMQVk6IGJsb2Nr
OyBGTE9BVDogbGVmdDsgQ09MT1I6ICNhYWE7ID0NCkZPTlQtV0VJR0hUOiBu
b3JtYWw7IFRFWFQtREVDT1JBVElPTjogbm9uZTsgUEFERElORy1UT1A6IDAu
MmVtDQp9DQojdG9wTmF2IEE6bGluayB7DQoJUEFERElORy1CT1RUT006IDAu
MmVtOyBNQVJHSU4tVE9QOiA2cHg7IFBBRERJTkctTEVGVDogMWVtOyA9DQpQ
QURESU5HLVJJR0hUOiAxZW07IERJU1BMQVk6IGJsb2NrOyBGTE9BVDogbGVm
dDsgQ09MT1I6ICNhYWE7ID0NCkZPTlQtV0VJR0hUOiBub3JtYWw7IFRFWFQt
REVDT1JBVElPTjogbm9uZTsgUEFERElORy1UT1A6IDAuMmVtDQp9DQojdG9w
TmF2IEE6dmlzaXRlZCB7DQoJUEFERElORy1CT1RUT006IDAuMmVtOyBNQVJH
SU4tVE9QOiA2cHg7IFBBRERJTkctTEVGVDogMWVtOyA9DQpQQURESU5HLVJJ
R0hUOiAxZW07IERJU1BMQVk6IGJsb2NrOyBGTE9BVDogbGVmdDsgQ09MT1I6
ICNhYWE7ID0NCkZPTlQtV0VJR0hUOiBub3JtYWw7IFRFWFQtREVDT1JBVElP
Tjogbm9uZTsgUEFERElORy1UT1A6IDAuMmVtDQp9DQpESVYjY29udGFpbmVy
IERJVi5vZmZQcmVtaXVtIFVMLnBhcnRuZXIgew0KCVBBRERJTkctQk9UVE9N
OiAwcHg7IExJU1QtU1RZTEUtVFlQRTogbm9uZTsgTUFSR0lOOiAwcHg7IFBB
RERJTkctTEVGVDogPQ0KMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IExJU1Qt
U1RZTEUtSU1BR0U6IG5vbmU7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi5v
ZmZQcmVtaXVtIFVMLnBhcnRuZXIgTEkgew0KCVBBRERJTkctQk9UVE9NOiAx
MnB4OyBQQURESU5HLUxFRlQ6IDEycHg7IFdJRFRIOiA1NjBweDsgUEFERElO
Ry1SSUdIVDogPQ0KMTJweDsgRkxPQVQ6IGxlZnQ7IEhFSUdIVDogMTQwcHg7
IEJPUkRFUi1UT1A6IHNpbHZlciAxcHggc29saWQ7ID0NClBBRERJTkctVE9Q
OiAxMnB4DQp9DQpESVYub2ZmUHJlbWl1bSBVTC5wYXJ0bmVyIExJIElNRyB7
DQo9MDkNCn0NCkRJVi5vZmZQcmVtaXVtIFVMLnBhcnRuZXIgTEkgUCB7DQoJ
UEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAtNjJweCAwcHggMTJweCAx
MzBweDsgUEFERElORy1MRUZUOiAwcHg7ID0NClBBRERJTkctUklHSFQ6IDBw
eDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLm9mZlByZW1pdW0gVUwucGFy
dG5lciBMSSBTVFJPTkcgew0KCVBPU0lUSU9OOiBhYnNvbHV0ZTsgTUFSR0lO
LVRPUDogOHB4OyBGT05ULVNJWkU6IDE0cHg7IExFRlQ6IDE2MHB4DQp9DQpE
SVYub2ZmUHJlbWl1bSBVTC5wYXJ0bmVyIExJIFNUUk9ORyBTUEFOIHsNCglD
T0xPUjogIzMzMw0KfQ0KRElWLm9mZlByZW1pdW0gVUwucGFydG5lciBMSSBB
IHsNCglQT1NJVElPTjogYWJzb2x1dGU7IExFRlQ6IDE2MHB4DQp9DQoucG9w
UHJlbWl1bSAucG9wdXAgew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFERElO
Ry1CT1RUT006IDBweDsgTUFSR0lOOiAwcHggYXV0bzsgPQ0KUEFERElORy1M
RUZUOiAwcHg7IFdJRFRIOiA3MjBweDsgUEFERElORy1SSUdIVDogMHB4OyBQ
QURESU5HLVRPUDogMTJweA0KfQ0KLnBvcFByZW1pdW0gLnBvcHVwIHsNCglQ
T1NJVElPTjogcmVsYXRpdmU7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJ
TjogMHB4IGF1dG87ID0NClBBRERJTkctTEVGVDogMHB4OyBXSURUSDogNzIw
cHg7IFBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1UT1A6IDEycHgNCn0N
Ci5wb3BQcmVtaXVtIC5wb3B1cCB7DQoJUE9TSVRJT046IHJlbGF0aXZlOyBQ
QURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweCBhdXRvOyA9DQpQQURE
SU5HLUxFRlQ6IDBweDsgV0lEVEg6IDcyMHB4OyBQQURESU5HLVJJR0hUOiAw
cHg7IFBBRERJTkctVE9QOiAxMnB4DQp9DQoucG9wUHJlbWl1bSAucG9wdXAg
SU1HLmxvZ29QYXJ0bmVyIHsNCglQQURESU5HLUJPVFRPTTogMjRweDsgTUFS
R0lOOiAwcHggMjRweCAxMnB4IDBweDsgUEFERElORy1MRUZUOiAwcHg7ID0N
ClBBRERJTkctUklHSFQ6IDI0cHg7IEZMT0FUOiBsZWZ0OyBCT1JERVItUklH
SFQ6IHNpbHZlciAxcHggZG90dGVkOyA9DQpQQURESU5HLVRPUDogMHB4DQp9
DQoucG9wUHJlbWl1bSAucG9wdXAgVUwgew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IExJU1QtU1RZTEUtVFlQRTogZGlzYzsgTUFSR0lOOiAwcHggMHB4IDBw
eCAxMnB4OyA9DQpQQURESU5HLUxFRlQ6IDEycHg7IFBBRERJTkctUklHSFQ6
IDBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KLnBvcFByZW1pdW0gLnBvcHVw
IFAgew0KPTA5DQp9DQouZGl2bW92ZW9uIFNQQU4uZGl2bW92ZW9uMSB7DQoJ
UEFERElORy1CT1RUT006IDE3cHg7IERJU1BMQVk6IGJsb2NrDQp9DQouZGl2
bW92ZW9uIFNQQU4gew0KCVBBRERJTkctQk9UVE9NOiA3cHg7IERJU1BMQVk6
IGJsb2NrDQp9DQojbGluZSB7DQoJQk9SREVSLUJPVFRPTTogMHB4OyBCT1JE
RVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBMSU5FLUhFSUdI
VDogPQ0KMXB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFdJ
RFRIOiA2MzBweDsgUEFERElORy1SSUdIVDogMHB4OyA9DQpESVNQTEFZOiBi
bG9jazsgQkFDS0dST1VORDogI2UyZTJlMjsgSEVJR0hUOiAxcHg7IEJPUkRF
Ui1UT1A6IDBweDsgPQ0KQk9SREVSLVJJR0hUOiAwcHg7IFBBRERJTkctVE9Q
OiAwcHgNCn0NCkgxLnRpdG9sb2xpZ2h0IHsNCglNQVJHSU46IDEycHggMTJw
eCAyMnB4IDBweDsgQ09MT1I6ICNmZmMyMGU7IEZPTlQtU0laRTogMTZweA0K
fQ0KSDIudGl0b2xvbGlnaHQgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1B
UkdJTjogMTJweCAwcHggNnB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFE
RElORy1SSUdIVDogMHB4OyBDT0xPUjogIzg4ODsgRk9OVC1TSVpFOiAxNHB4
OyBQQURESU5HLVRPUDogMHB4DQp9DQoueC1wYXkgew0KCVdJRFRIOiA2Mzhw
eDsgRElTUExBWTogYmxvY2s7IEZMT0FUOiBsZWZ0DQp9DQoueC1wYXkgLnNx
dWFyZSB7DQoJUEFERElORy1CT1RUT006IDEwcHg7IFBBRERJTkctTEVGVDog
MTBweDsgV0lEVEg6IDIwcHg7IFBBRERJTkctUklHSFQ6ID0NCjEwcHg7IEZM
T0FUOiBsZWZ0OyBIRUlHSFQ6IDIwcHg7IFBBRERJTkctVE9QOiAxMHB4DQp9
DQoueC1wYXkgUCB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAw
cHggMHB4IDBweCA0MHB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElO
Ry1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQouYmFueHBheSB7
DQoJTUFSR0lOOiAwcHggMHB4IDIwcHg7IFdJRFRIOiA2MzhweDsgRElTUExB
WTogYmxvY2s7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRh
c2kuaXQvSW1tYWdpbmkvYmctYmFuLWRlbW94cGF5LmpwZykgbm8tcmVwZWF0
IGxlZnQgPQ0KdG9wOyBGTE9BVDogbGVmdDsgSEVJR0hUOiAxNTZweA0KfQ0K
LmJhbnhwYXkgUCB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFERElORy1M
RUZUOiAyMzRweDsgUEFERElORy1SSUdIVDogMHB4OyBDT0xPUjogPQ0KIzQ0
NDsgRk9OVC1TSVpFOiAxMHB4OyBGT05ULVdFSUdIVDogbm9ybWFsOyBQQURE
SU5HLVRPUDogOTBweA0KfQ0KLmJhbnhwYXkgQSB7DQoJUEFERElORy1CT1RU
T006IDBweDsgUEFERElORy1MRUZUOiA1MzBweDsgUEFERElORy1SSUdIVDog
MHB4OyBESVNQTEFZOiA9DQpibG9jazsgUEFERElORy1UT1A6IDE1cHgNCn0N
Ci5iYW54cGF5MiB7DQoJTUFSR0lOOiAwcHggMHB4IDIwcHg7IFdJRFRIOiA2
MzlweDsgRElTUExBWTogYmxvY2s7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRw
Oi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYmctYmFuLXhwYXkyLmdpZikg
bm8tcmVwZWF0IGxlZnQgdG9wOyA9DQpGTE9BVDogbGVmdDsgSEVJR0hUOiAx
NThweA0KfQ0KLmJhbnhwYXkyIElNRy50aXQgew0KCVBBRERJTkctQk9UVE9N
OiAwcHg7IFBBRERJTkctTEVGVDogMTVweDsgV0lEVEg6IDExNHB4OyBQQURE
SU5HLVJJR0hUOiA9DQowcHg7IEhFSUdIVDogMjdweDsgUEFERElORy1UT1A6
IDE1cHgNCn0NCi5iYW54cGF5MiBQIHsNCglQQURESU5HLUJPVFRPTTogNXB4
OyBQQURESU5HLUxFRlQ6IDIwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgQ09M
T1I6ID0NCiM0NDQ7IEZPTlQtU0laRTogMTBweDsgRk9OVC1XRUlHSFQ6IG5v
cm1hbDsgUEFERElORy1UT1A6IDVweA0KfQ0KLmJhbnhwYXkyIFVMIHsNCglQ
QURESU5HLUJPVFRPTTogMHB4OyBMSVNULVNUWUxFLVRZUEU6IG5vbmU7IFBB
RERJTkctTEVGVDogNXB4OyBXSURUSDogPQ0KNjEwcHg7IFBBRERJTkctUklH
SFQ6IDBweDsgQ09MT1I6ICM0NDQ7IEZPTlQtU0laRTogMTBweDsgRk9OVC1X
RUlHSFQ6ID0NCm5vcm1hbDsgUEFERElORy1UT1A6IDBweA0KfQ0KLmJhbnhw
YXkyIFVMIExJIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBMSU5FLUhFSUdI
VDogMTVweDsgTElTVC1TVFlMRS1UWVBFOiBub25lOyA9DQpQQURESU5HLUxF
RlQ6IDE1cHg7IFBBRERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VORDogPQ0K
dXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9saS14cGF5Lmdp
Zikgbm8tcmVwZWF0IGxlZnQgNXB4OyA9DQpDT0xPUjogIzQ0NDsgUEFERElO
Ry1UT1A6IDBweA0KfQ0KRElWLmJveDEgew0KCUJPUkRFUi1CT1RUT006ICNj
Y2MgMXB4IHNvbGlkOyBQT1NJVElPTjogcmVsYXRpdmU7IEJPUkRFUi1MRUZU
OiAjY2NjID0NCjFweCBzb2xpZDsgUEFERElORy1CT1RUT006IDEycHg7IE1B
UkdJTjogMTJweCAwcHg7IFBBRERJTkctTEVGVDogMTJweDsgPQ0KUEFERElO
Ry1SSUdIVDogMTJweDsgQkFDS0dST1VORDogI2Y3ZjdmNzsgQ09MT1I6ICMz
MzM7IENMRUFSOiBsZWZ0OyA9DQpCT1JERVItVE9QOiAjY2NjIDFweCBzb2xp
ZDsgQk9SREVSLVJJR0hUOiAjY2NjIDFweCBzb2xpZDsgUEFERElORy1UT1A6
ID0NCjEycHgNCn0NCkRJVi5ib3gyIHsNCglQT1NJVElPTjogcmVsYXRpdmU7
IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMTJweCAwcHg7ID0NClBB
RERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEJBQ0tHUk9V
TkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYnJh
bmRib29rL2JveDIuanBnKSBuby1yZXBlYXQ7ID0NCkhFSUdIVDogMTYxcHg7
IENPTE9SOiAjMzMzOyBDTEVBUjogbGVmdDsgUEFERElORy1UT1A6IDBweA0K
fQ0KRElWLmJveDIgUC5pbWcgew0KCU1BUkdJTjogMjhweCAxMnB4IDEycHg7
IFdJRFRIOiAyMjBweDsgRkxPQVQ6IGxlZnQNCn0NCkRJVi5ib3gyIC50aXRv
bG8gew0KCU1BUkdJTjogMjRweCA2cHggMnB4OyBXSURUSDogMjIwcHg7IEZM
T0FUOiBsZWZ0OyBDTEVBUjogbm9uZQ0KfQ0KRElWLmJveDIgUC50ZXN0byB7
DQoJVEVYVC1BTElHTjoganVzdGlmeTsgTUFSR0lOOiAycHggNnB4OyBXSURU
SDogNDAwcHg7IEZMT0FUOiBsZWZ0OyA9DQpIRUlHSFQ6IDExMHB4OyBDTEVB
Ujogbm9uZTsgT1ZFUkZMT1c6IGhpZGRlbg0KfQ0KRElWLmJveDIgLnB1bHNh
bnRlIHsNCglCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgUE9TSVRJT046
IGFic29sdXRlOyBURVhULUFMSUdOOiBjZW50ZXI7ID0NCkJPUkRFUi1MRUZU
OiBtZWRpdW0gbm9uZTsgUEFERElORy1CT1RUT006IDRweDsgUEFERElORy1M
RUZUOiA0cHg7ID0NClBBRERJTkctUklHSFQ6IDRweDsgQkFDS0dST1VORDog
I2Y5YTczYjsgQ09MT1I6ICNmZmY7IEJPUkRFUi1UT1A6IG1lZGl1bSA9DQpu
b25lOyBUT1A6IDEyNnB4OyBGT05ULVdFSUdIVDogYm9sZDsgQk9SREVSLVJJ
R0hUOiBtZWRpdW0gbm9uZTsgPQ0KUEFERElORy1UT1A6IDRweDsgTEVGVDog
NTIwcHgNCn0NCkRJVi5ib3gzIHsNCglQT1NJVElPTjogcmVsYXRpdmU7IFBB
RERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMTJweCAyNHB4IDI0cHggMHB4
OyA9DQpQQURESU5HLUxFRlQ6IDBweDsgV0lEVEg6IDI0MHB4OyBQQURESU5H
LVJJR0hUOiAwcHg7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNh
cnRhc2kuaXQvSW1tYWdpbmkvYnJhbmRib29rL2JveDMuanBnKSBuby1yZXBl
YXQ7IEZMT0FUOiA9DQpsZWZ0OyBIRUlHSFQ6IDEyM3B4OyBDT0xPUjogIzMz
MzsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLmJveDMgSDQgew0KCVBPU0lU
SU9OOiBhYnNvbHV0ZTsgV0lEVEg6IDExMnB4OyBDT0xPUjogI2Y4OTkxZDsg
VE9QOiA1NHB4OyBMRUZUOiAxMnB4DQp9DQpESVYuYm94MyBQIHsNCglQT1NJ
VElPTjogYWJzb2x1dGU7IFdJRFRIOiAxMTJweDsgQ09MT1I6ICMzMzM7IFRP
UDogMTJweDsgRk9OVC1XRUlHSFQ6ID0NCjcwMDsgTEVGVDogMTJweA0KfQ0K
RElWLmJveDMgSU1HIHsNCglQT1NJVElPTjogYWJzb2x1dGU7IFRPUDogMHB4
OyBMRUZUOiAxMjBweA0KfQ0KRElWLmJveDFhIHsNCglQT1NJVElPTjogcmVs
YXRpdmU7IFBBRERJTkctQk9UVE9NOiA0cHg7IE1BUkdJTjogMTJweCAwcHg7
ID0NClBBRERJTkctTEVGVDogNHB4OyBXSURUSDogNjcwcHg7IFBBRERJTkct
UklHSFQ6IDRweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9JbW1hZ2luaS9icmFuZGJvb2svYm94MWEuanBnKSBuby1yZXBl
YXQ7ID0NCkhFSUdIVDogOTZweDsgQ09MT1I6ICMzMzM7IENMRUFSOiBsZWZ0
OyBQQURESU5HLVRPUDogNHB4DQp9DQpESVYuYm94MWEgSDQgew0KCVBBRERJ
TkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBw
eDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBDT0xPUjogI2Y5MDsgRk9OVC1T
SVpFOiAxNHB4OyBQQURESU5HLVRPUDogNnB4DQp9DQpESVYuYm94MWEgUCB7
DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkct
TEVGVDogMHB4OyBXSURUSDogNDc0cHg7ID0NClBBRERJTkctUklHSFQ6IDBw
eDsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAjZjkwOyBGT05ULVNJWkU6IDEwcHg7
ID0NClBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi5ib3gxYSBJTUcgew0KCVBB
RERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogNHB4OyBQQURESU5H
LVJJR0hUOiAxMnB4OyBGTE9BVDogPQ0KbGVmdDsgUEFERElORy1UT1A6IDNw
eA0KfQ0KRElWLmJveDFiIHsNCglQT1NJVElPTjogcmVsYXRpdmU7IFBBRERJ
TkctQk9UVE9NOiAxMnB4OyBNQVJHSU46IDEycHggMHB4OyA9DQpQQURESU5H
LUxFRlQ6IDEycHg7IFdJRFRIOiA2NzBweDsgUEFERElORy1SSUdIVDogMTJw
eDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9J
bW1hZ2luaS9icmFuZGJvb2svYm94MWIuanBnKSBuby1yZXBlYXQ7ID0NCkhF
SUdIVDogMTYycHg7IENPTE9SOiAjMzMzOyBDTEVBUjogbGVmdDsgUEFERElO
Ry1UT1A6IDEycHgNCn0NCkRJVi5ib3gxYSBVTCB7DQoJTElTVC1TVFlMRS1J
TUFHRTogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9i
cmFuZGJvb2svYnVsbGV0U21hbGwuZ2lmKTsgPQ0KTUFSR0lOLVJJR0hUOiAy
NHB4DQp9DQpESVYuYm94MWIgVUwgew0KCUxJU1QtU1RZTEUtSU1BR0U6ID0N
CnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYnJhbmRib29r
L2J1bGxldFNtYWxsLmdpZik7ID0NCk1BUkdJTi1SSUdIVDogMjRweA0KfQ0K
RElWLmJveDFjIFVMIHsNCglMSVNULVNUWUxFLUlNQUdFOiA9DQp1cmwoaHR0
cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JyYW5kYm9vay9idWxsZXRT
bWFsbC5naWYpOyA9DQpNQVJHSU4tUklHSFQ6IDI0cHgNCn0NCkRJVi5ib3gx
YyB7DQoJUE9TSVRJT046IHJlbGF0aXZlOyBQQURESU5HLUJPVFRPTTogMTJw
eDsgTUFSR0lOOiAxMnB4IDBweDsgPQ0KUEFERElORy1MRUZUOiAxMnB4OyBX
SURUSDogNjcwcHg7IFBBRERJTkctUklHSFQ6IDEycHg7IEJBQ0tHUk9VTkQ6
ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYnJhbmRi
b29rL2JveDFjLmpwZykgbm8tcmVwZWF0OyA9DQpIRUlHSFQ6IDE2MnB4OyBD
T0xPUjogIzMzMzsgQ0xFQVI6IGxlZnQ7IFBBRERJTkctVE9QOiAxMnB4DQp9
DQpESVYuYm94MSB7DQoJQk9SREVSLUJPVFRPTTogI2NjYyAxcHggc29saWQ7
IFBPU0lUSU9OOiByZWxhdGl2ZTsgQk9SREVSLUxFRlQ6ICNjY2MgPQ0KMXB4
IHNvbGlkOyBQQURESU5HLUJPVFRPTTogMTJweDsgTUFSR0lOOiAxMnB4IDBw
eDsgUEFERElORy1MRUZUOiAxMnB4OyA9DQpQQURESU5HLVJJR0hUOiAxMnB4
OyBCQUNLR1JPVU5EOiAjZjdmN2Y3OyBDT0xPUjogIzMzMzsgQ0xFQVI6IGxl
ZnQ7ID0NCkJPUkRFUi1UT1A6ICNjY2MgMXB4IHNvbGlkOyBCT1JERVItUklH
SFQ6ICNjY2MgMXB4IHNvbGlkOyBQQURESU5HLVRPUDogPQ0KMTJweA0KfQ0K
RElWLmJveDIgew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFERElORy1CT1RU
T006IDBweDsgTUFSR0lOOiAxMnB4IDBweDsgPQ0KUEFERElORy1MRUZUOiAw
cHg7IFBBRERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9pbWFnZXMvYm94Mi5qcGcpIG5vLXJlcGVh
dDsgSEVJR0hUOiAxNjFweDsgPQ0KQ09MT1I6ICMzMzM7IENMRUFSOiBsZWZ0
OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYuYm94MiBQLmltZyB7DQoJTUFS
R0lOOiAyOHB4IDEycHggMTJweDsgV0lEVEg6IDIyMHB4OyBGTE9BVDogbGVm
dA0KfQ0KRElWLmJveDIgLnRpdG9sbyB7DQoJTUFSR0lOOiAyNHB4IDZweCAy
cHg7IFdJRFRIOiAyMjBweDsgRkxPQVQ6IGxlZnQ7IENMRUFSOiBub25lDQp9
DQpESVYuYm94MiBQLnRlc3RvIHsNCglURVhULUFMSUdOOiBqdXN0aWZ5OyBN
QVJHSU46IDJweCA2cHg7IFdJRFRIOiA0MDBweDsgRkxPQVQ6IGxlZnQ7ID0N
CkhFSUdIVDogMTEwcHg7IENMRUFSOiBub25lOyBPVkVSRkxPVzogaGlkZGVu
DQp9DQpESVYuYm94MyB7DQoJUE9TSVRJT046IHJlbGF0aXZlOyBQQURESU5H
LUJPVFRPTTogMHB4OyBNQVJHSU46IDEycHggMjRweCAyNHB4IDBweDsgPQ0K
UEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiAyNDBweDsgUEFERElORy1SSUdI
VDogMHB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNp
Lml0L2ltYWdlcy9ib3gzLmpwZykgbm8tcmVwZWF0OyBGTE9BVDogbGVmdDsg
PQ0KSEVJR0hUOiAxMjNweDsgQ09MT1I6ICMzMzM7IFBBRERJTkctVE9QOiAw
cHgNCn0NCkRJVi5ib3gzIEg0IHsNCglQT1NJVElPTjogYWJzb2x1dGU7IFdJ
RFRIOiAxMTJweDsgQ09MT1I6ICNmODk5MWQ7IFRPUDogNTRweDsgTEVGVDog
MTJweA0KfQ0KRElWLmJveDMgUCB7DQoJUE9TSVRJT046IGFic29sdXRlOyBX
SURUSDogMTEycHg7IENPTE9SOiAjMzMzOyBUT1A6IDEycHg7IEZPTlQtV0VJ
R0hUOiA9DQo3MDA7IExFRlQ6IDEycHgNCn0NCkRJVi5ib3gzIElNRyB7DQoJ
UE9TSVRJT046IGFic29sdXRlOyBUT1A6IDBweDsgTEVGVDogMTIwcHgNCn0N
CiNwYW5uZWxsb01vdmVPbkhQIFAuYWNjZXNzbyB7DQoJVEVYVC1UUkFOU0ZP
Uk06IHVwcGVyY2FzZTsgTUFSR0lOOiAxMnB4IDBweCAwcHgNCn0NCiNwYW5u
ZWxsb01vdmVPbkhQIFAuYWNjZXNzbyBBIHsNCglCT1JERVItQk9UVE9NOiAj
ZjkwIDFweCBkb3R0ZWQ7IEJPUkRFUi1MRUZUOiAjZjkwIDBweCBkb3R0ZWQ7
ID0NClBBRERJTkctQk9UVE9NOiA0cHg7IFBBRERJTkctTEVGVDogNHB4OyBQ
QURESU5HLVJJR0hUOiA0cHg7IENPTE9SOiAjZjkwOyA9DQpCT1JERVItVE9Q
OiAjZjkwIDBweCBkb3R0ZWQ7IEZPTlQtV0VJR0hUOiBib2xkOyBCT1JERVIt
UklHSFQ6ICNmOTAgMHB4ID0NCmRvdHRlZDsgUEFERElORy1UT1A6IDRweA0K
fQ0KI3Bhbm5lbGxvTW92ZU9uSFAgUC5hY2Nlc3NvIEE6aG92ZXIgew0KCVRF
WFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KI3NjaGVkYUNhcnRhIHsNCglQT1NJ
VElPTjogcmVsYXRpdmU7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjog
M3B4IDBweCAwcHg7ID0NClBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJ
R0hUOiAwcHg7IEJBQ0tHUk9VTkQ6ICNmZmY7IFBBRERJTkctVE9QOiA9DQow
cHgNCn0NCiNzY2hlZGFDYXJ0YSBIMS50aXRvbG8gew0KCVBBRERJTkctQk9U
VE9NOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAw
cHg7ID0NClBBRERJTkctVE9QOiAycHgNCn0NCiNzY2hlZGFDYXJ0YSBIMi50
aXRvbG8gew0KCUJPUkRFUi1CT1RUT006ICNjY2MgMXB4IHNvbGlkOyBNQVJH
SU46IDBweDsgQ09MT1I6ICNmOTA7IEZPTlQtU0laRTogPQ0KMThweA0KfQ0K
I3NjaGVkYUNhcnRhIEgzLnRpdG9sbyB7DQoJUEFERElORy1CT1RUT006IDBw
eDsgUEFERElORy1MRUZUOiA0OHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IENP
TE9SOiA9DQojZjkwOyBGT05ULVNJWkU6IDE0cHg7IFBBRERJTkctVE9QOiAy
cHgNCn0NCiNzY2hlZGFQcmVwYWdhdGEgew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1S
SUdIVDogPQ0KMHB4OyBCQUNLR1JPVU5EOiAjZmZmOyBQQURESU5HLVRPUDog
MHB4DQp9DQojc2NoZWRhUHJlcGFnYXRhIEgxLnRpdG9sbyB7DQoJUEFERElO
Ry1CT1RUT006IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklH
SFQ6IDBweDsgPQ0KUEFERElORy1UT1A6IDJweA0KfQ0KI3NjaGVkYVByZXBh
Z2F0YSBIMi50aXRvbG8gew0KCUJPUkRFUi1CT1RUT006ICM5OTkgMXB4IHNv
bGlkOyBQQURESU5HLUJPVFRPTTogNHB4OyBNQVJHSU46IDEycHggMHB4ID0N
CjBweDsgQ09MT1I6ICM5OTkNCn0NCiNzY2hlZGFQcmVwYWdhdGEgSDMudGl0
b2xvIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6IDQ4
cHg7IFBBRERJTkctUklHSFQ6IDBweDsgQ09MT1I6ID0NCiNmOTA7IEZPTlQt
U0laRTogMTRweDsgUEFERElORy1UT1A6IDJweA0KfQ0KRElWLnNuYXBzaG90
IHsNCglCT1JERVItQk9UVE9NOiAjY2NjIDFweCBzb2xpZDsgUEFERElORy1C
T1RUT006IDEycHg7IE1BUkdJTjogMHB4IDBweCA9DQoyNHB4OyBQQURESU5H
LUxFRlQ6IDBweDsgV0lEVEg6IDY4MHB4OyBQQURESU5HLVJJR0hUOiAwcHg7
IFBBRERJTkctVE9QOiA9DQo2cHgNCn0NCkRJVi5zbmFwc2hvdCBQLmltZ1By
b2RvdHRvIHsNCglNQVJHSU46IDBweCAwcHggMHB4IC0xOHB4OyBXSURUSDog
MzIwcHg7IEZMT0FUOiBsZWZ0DQp9DQpESVYuc25hcHNob3QgUC5jbGFpbVBy
b2RvdHRvIHsNCglNQVJHSU46IDIycHggMHB4IDgwcHggMTBweDsgV0lEVEg6
IDM1MHB4OyBGTE9BVDogbGVmdA0KfQ0KRElWLnNuYXBzaG90IFAuZGVzY3Jp
emlvbmUgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQ
QURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBDTEVB
UjogYm90aDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLnNuYXBzaG90IFAu
Y2FsbFRvQWN0aW9uIHsNCglQQURESU5HLUJPVFRPTTogMnB4OyBNQVJHSU46
IDBweDsgUEFERElORy1MRUZUOiAxMDBweDsgV0lEVEg6IDI3MHB4OyA9DQpQ
QURESU5HLVJJR0hUOiAwcHg7IEZMT0FUOiBsZWZ0OyBQQURESU5HLVRPUDog
MzZweA0KfQ0KRElWLnNuYXBzaG90IFAuY2FsbFRvQWN0aW9uIEEgew0KCVdJ
RFRIOiAxNDBweDsgRElTUExBWTogYmxvY2s7IEJBQ0tHUk9VTkQ6ID0NCnVy
bChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvcHJlcGFnYXRlL2Nh
bGxUb0FjdGlvbi5qcGcpIG5vLXJlcGVhdCA9DQpsZWZ0IHRvcDsgSEVJR0hU
OiAzOHB4DQp9DQpESVYuc25hcHNob3QgUC5jYWxsVG9BY3Rpb24gQSBTUEFO
IHsNCglQT1NJVElPTjogYWJzb2x1dGU7IE1BUkdJTi1UT1A6IC0xMDAwcHgN
Cn0NCkRJVi5jYWxsUHJvZG90dG8gew0KPTA5DQp9DQpESVYuY2FsbFByb2Rv
dHRvIFAuY2FsbFByb2RvdHRvIHsNCglNQVJHSU46IDBweDsgV0lEVEg6IDMw
MHB4OyBGTE9BVDogbGVmdA0KfQ0KRElWLmNyb3NzU2VsbGluZyB7DQoJQk9S
REVSLVRPUDogI2NjYyAxcHggc29saWQNCn0NCkRJVi5jcm9zc1NlbGxpbmcg
UC5jcm9zc1NlbGxpbmcgew0KPTA5DQp9DQojc2NoZWRhQ2FydGEgRElWLmJv
eFB1c2ggew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFERElORy1CT1RUT006
IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogPQ0KMHB4OyBXSURU
SDogNjQycHg7IFBBRERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VORDogPQ0K
dXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9jYXJ0ZS9wdXNo
Q2FydGEuanBnKSBuby1yZXBlYXQgbGVmdCA9DQp0b3A7IEhFSUdIVDogMTYy
cHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCiNzY2hlZGFDYXJ0YSBESVYuYm94
UHVzaCBIMy50aXRvbG8gew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJ
TjogMHB4OyBQQURESU5HLUxFRlQ6IDEycHg7IFBBRERJTkctUklHSFQ6ID0N
CjBweDsgUEFERElORy1UT1A6IDEycHgNCn0NCiNzY2hlZGFDYXJ0YSBESVYu
Ym94UHVzaCBVTCB7DQo9MDkNCn0NCiNzY2hlZGFDYXJ0YSBESVYuYm94UHVz
aCBMSSB7DQoJTUFSR0lOOiAxMnB4DQp9DQojc2NoZWRhQ2FydGEgRElWLmJv
eFB1c2ggUCB7DQo9MDkNCn0NCkRJViNzY2hlZGFDYXJ0YSBUQUJMRS5zcGVj
aWZDYXJ0YSB7DQoJQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZTsgVEFCTEUt
TEFZT1VUOiBmaXhlZA0KfQ0KRElWI3NjaGVkYUNhcnRhIFRBQkxFLnNwZWNp
ZkNhcnRhIFRIIHsNCglCT1JERVItQk9UVE9NOiBzaWx2ZXIgMXB4IGRvdHRl
ZDsgUEFERElORy1CT1RUT006IDRweDsgUEFERElORy1MRUZUOiA9DQoycHg7
IFBBRERJTkctUklHSFQ6IDJweDsgRk9OVC1TSVpFOiA5cHg7IFBBRERJTkct
VE9QOiA0cHgNCn0NCkRJViNzY2hlZGFDYXJ0YSBUQUJMRS5zcGVjaWZDYXJ0
YSBURCB7DQoJQk9SREVSLUJPVFRPTTogc2lsdmVyIDFweCBkb3R0ZWQ7IFBB
RERJTkctQk9UVE9NOiA0cHg7IFBBRERJTkctTEVGVDogPQ0KMnB4OyBQQURE
SU5HLVJJR0hUOiAycHg7IEZPTlQtU0laRTogOXB4OyBQQURESU5HLVRPUDog
NHB4DQp9DQpESVYjc2NoZWRhQ2FydGEgVEFCTEUuc3BlY2lmQ2FydGEgVEQg
ew0KCUJBQ0tHUk9VTkQ6ICNmNGY0ZjQNCn0NCkRJViNzY2hlZGFDYXJ0YSBU
QUJMRS5zcGVjaWZDYXJ0YSBURCBBIHsNCglDT0xPUjogI2ZiYTczNQ0KfQ0K
RElWI3NjaGVkYUNhcnRhIFRBQkxFLnNwZWNpZkNhcnRhIFRIIHsNCglCT1JE
RVItQk9UVE9NOiBzaWx2ZXIgMXB4IGRvdHRlZDsgVEVYVC1BTElHTjogbGVm
dDsgVEVYVC1UUkFOU0ZPUk06ID0NCnVwcGVyY2FzZTsgV0lEVEg6IDM0MHB4
OyBDT0xPUjogI2Y5MDsgRk9OVC1XRUlHSFQ6IGJvbGQNCn0NCkRJViNzY2hl
ZGFDYXJ0YSBIMy5pbmZvQ2FydGEgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7
IE1BUkdJTjogNHB4IDBweCAxMnB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0K
UEFERElORy1SSUdIVDogMHB4OyBGT05ULVNJWkU6IDE2cHg7IEJPUkRFUi1U
T1A6IHNpbHZlciAxcHggZG90dGVkOyA9DQpQQURESU5HLVRPUDogMjRweA0K
fQ0KRElWI3NjaGVkYUNhcnRhIEg0LnRpdG9sbyB7DQoJUEFERElORy1CT1RU
T006IDBweDsgTUFSR0lOOiAyNHB4IDBweCAwcHg7IFBBRERJTkctTEVGVDog
MHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgN
Cn0NCkRJViNzY2hlZGFDYXJ0YSBVTCBMSSBTUEFOLmJyYW5kIHsNCglDT0xP
UjogI2Y5MDsgRk9OVC1TSVpFOiAxMHB4OyBGT05ULVdFSUdIVDogYm9sZA0K
fQ0KRElWLmNhbGxQcm9kb3R0byBVTCBMSSB7DQo9MDkNCn0NCkRJVi5jYWxs
UHJvZG90dG8gSDMudGl0b2xvIHsNCj0wOQ0KfQ0KRElWI3NjaGVkYUNhcnRh
IFRBQkxFLnNwZWNpZkNhcnRhIFRELm5vQmcgew0KCUJBQ0tHUk9VTkQ6ICNm
ZmYNCn0NCkRJViNzY2hlZGFDYXJ0YSAudGFiZWxsYVByb2RvdHRvIFVMLmNz
cy10YWJzIHsNCglCT1JERVItQk9UVE9NOiAjY2NjIDFweCBzb2xpZA0KfQ0K
RElWI3NjaGVkYUNhcnRhIC50YWJlbGxhUHJvZG90dG8gVUwuY3NzLXRhYnMg
QSB7DQoJQ09MT1I6ICNmOTANCn0NCkRJViNzY2hlZGFDYXJ0YSAudGFiZWxs
YVByb2RvdHRvIFVMLmNzcy10YWJzIEE6aG92ZXIgew0KCUNPTE9SOiAjMzMz
DQp9DQpESVYjc2NoZWRhQ2FydGEgLnRhYmVsbGFQcm9kb3R0byBVTC5jc3Mt
dGFicyBBLmN1cnJlbnQgew0KCUJPUkRFUi1CT1RUT006ICNmZmYgMnB4IHNv
bGlkOyBCQUNLR1JPVU5EOiAjZmZmOyBDT0xPUjogI2Y5MA0KfQ0KI3NjaGVk
YUNhcnRhICN0YWJzIFVMIHsNCglNQVJHSU46IDBweA0KfQ0KLmludHJvIHsN
CglURVhULVRSQU5TRk9STTogdXBwZXJjYXNlOyBNQVJHSU46IDEycHggMHB4
IDJweCAxcHg7IFdJRFRIOiAzNjBweDsgPQ0KRk9OVDogMjRweC8yNHB4ICJU
cmVidWNoZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBG
TE9BVDogPQ0KbGVmdDsgQ09MT1I6ICNmYmE3MzUNCn0NCi5zbmFwc2hvdCBI
MS50aXRvbG8gew0KPTA5DQp9DQouYWRhdHRhU2Ugew0KCVBBRERJTkctQk9U
VE9NOiAwcHg7IFRFWFQtVFJBTlNGT1JNOiB1cHBlcmNhc2U7IE1BUkdJTjog
MHB4OyA9DQpQQURESU5HLUxFRlQ6IDBweDsgV0lEVEg6IDI4MHB4OyBQQURE
SU5HLVJJR0hUOiAyNHB4OyBGT05UOiAyNHB4LzI0cHggPQ0KIlRyZWJ1Y2hl
dCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IEZMT0FUOiBs
ZWZ0OyBDT0xPUjogPQ0KI2ZiYTczNTsgUEFERElORy1UT1A6IDBweA0KfQ0K
I3NjaGVkYUNhcnRhIC5jYWxsUHJvZG90dG8gLmFkYXR0YVNlIFNUUk9ORyB7
DQoJV0lEVEg6IDMwMHB4OyBGT05UOiAyMnB4ICJBcmlhbCBCbGFjayIsIEdh
ZGdldCwgc2Fucy1zZXJpZg0KfQ0KI3NjaGVkYUNhcnRhIC5jcm9zc1NlbGxp
bmcgLnVwU2VsbGluZyB7DQoJUE9TSVRJT046IGFic29sdXRlOyBURVhULVRS
QU5TRk9STTogdXBwZXJjYXNlOyBNQVJHSU46IDY4cHggMHB4IDBweCA9DQoy
NHB4OyBGT05UOiAyMHB4LzIwcHggIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBI
ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7ID0NCkNPTE9SOiAjZmJhNzM1DQp9DQoj
c2NoZWRhQ2FydGEgLmNyb3NzU2VsbGluZyAudXBTZWxsaW5nIEEgew0KCUZP
TlQ6IDIwcHgvMjBweCAiVHJlYnVjaGV0IE1TIiwgQXJpYWwsIEhlbHZldGlj
YSwgc2Fucy1zZXJpZjsgQ09MT1I6ID0NCiNmYmE3MzUNCn0NCiNzY2hlZGFD
YXJ0YSAuY3Jvc3NTZWxsaW5nIC51cFNlbGxpbmcgU1RST05HIHsNCglGT05U
LUZBTUlMWTogIkFyaWFsIEJsYWNrIiwgR2FkZ2V0LCBzYW5zLXNlcmlmDQp9
DQoucHJlbWl1bSB7DQoJQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZQ0KfQ0K
LnByZW1pdW0gVFIgVEggew0KCUJPUkRFUi1CT1RUT006ICM5OTkgMXB4IHNv
bGlkOyBQQURESU5HLUJPVFRPTTogMjJweDsgUEFERElORy1MRUZUOiA9DQoy
MnB4OyBQQURESU5HLVJJR0hUOiAyMnB4OyBQQURESU5HLVRPUDogMjJweA0K
fQ0KLnByZW1pdW0gVFIgVEQgew0KCUJPUkRFUi1CT1RUT006ICM5OTkgMXB4
IHNvbGlkOyBQQURESU5HLUJPVFRPTTogMjJweDsgUEFERElORy1MRUZUOiA9
DQoyMnB4OyBQQURESU5HLVJJR0hUOiAyMnB4OyBQQURESU5HLVRPUDogMjJw
eA0KfQ0KLnBhcnRuZXIgew0KCVBPU0lUSU9OOiByZWxhdGl2ZTsgTUFSR0lO
OiA2cHggMHB4IDEycHggMzBweDsgV0lEVEg6IDIzOHB4OyA9DQpCQUNLR1JP
VU5EOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L2lvU2kyMDEwL2ltYWdl
cy9ib3hQYXJ0bmVyLmdpZikgPQ0Kbm8tcmVwZWF0IGxlZnQgdG9wOyBGTE9B
VDogbGVmdDsgSEVJR0hUOiAxMjJweA0KfQ0KLnBhcnRuZXIgUC5sb2dvUGFy
dG5lciB7DQoJUE9TSVRJT046IGFic29sdXRlOyBUT1A6IDNweDsgTEVGVDog
MTMxcHgNCn0NCi5wYXJ0bmVyIFAubm9tZVBhcnRuZXIgew0KCVBPU0lUSU9O
OiBhYnNvbHV0ZTsgVEVYVC1BTElHTjogbGVmdDsgV0lEVEg6IDExNHB4OyBG
T05UOiBib2xkIDExcHggPQ0KIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBIZWx2
ZXRpY2EsIHNhbnMtc2VyaWY7IFRPUDogMHB4OyBMRUZUOiA5cHgNCn0NCi5w
YXJ0bmVyIFAubm9tZVBhcnRuZXIgU1BBTiB7DQoJRk9OVC1TVFlMRTogaXRh
bGljOyBGT05ULVdFSUdIVDogNDAwDQp9DQoucGFydG5lciBQLmRlc2NPZmZl
cnRhIHsNCglQT1NJVElPTjogYWJzb2x1dGU7IFRFWFQtQUxJR046IGxlZnQ7
IFdJRFRIOiAxMTlweDsgRk9OVDogYm9sZCAxMXB4ID0NCiJUcmVidWNoZXQg
TVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBUT1A6IDY4cHg7
IExFRlQ6IDlweA0KfQ0KLnBhcnRuZXIgUC5kZXNjT2ZmZXJ0YSBBIHsNCglE
SVNQTEFZOiBibG9jaw0KfQ0KRElWLnByZXBhZ2F0ZSB7DQoJQkFDS0dST1VO
RDogI2ZmZg0KfQ0KRElWLnByZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSB7
DQoJQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZTsgQkFDS0dST1VORDogI2Zm
Zg0KfQ0KRElWLnByZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSBUSCB7DQoJ
Qk9SREVSLUJPVFRPTTogc2lsdmVyIDFweCBkb3R0ZWQ7IFBBRERJTkctQk9U
VE9NOiA0cHg7IFBBRERJTkctTEVGVDogPQ0KOHB4OyBQQURESU5HLVJJR0hU
OiA4cHg7IFBBRERJTkctVE9QOiA0cHgNCn0NCkRJVi5wcmVwYWdhdGUgVEFC
TEUuY29tcGFyYXRpdmEgVEQgew0KCUJPUkRFUi1CT1RUT006IHNpbHZlciAx
cHggZG90dGVkOyBQQURESU5HLUJPVFRPTTogNHB4OyBQQURESU5HLUxFRlQ6
ID0NCjhweDsgUEFERElORy1SSUdIVDogOHB4OyBQQURESU5HLVRPUDogNHB4
DQp9DQpESVYucHJlcGFnYXRlIFRBQkxFLmNvbXBhcmF0aXZhIFRIRUFEIHsN
CglURVhULUFMSUdOOiBsZWZ0DQp9DQpESVYucHJlcGFnYXRlIFRBQkxFLmNv
bXBhcmF0aXZhIFRIRUFEIFRIIHsNCglURVhULUFMSUdOOiBsZWZ0DQp9DQpE
SVYucHJlcGFnYXRlIFRBQkxFLmNvbXBhcmF0aXZhIC5ub3JtYWxlIHsNCglC
QUNLR1JPVU5EOiAjZmZmDQp9DQpESVYucHJlcGFnYXRlIFRBQkxFLmNvbXBh
cmF0aXZhIC5ldmlkZW56YSB7DQoJQkFDS0dST1VORDogI2VlZQ0KfQ0KRElW
LnByZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSAubm9ybWFsZSBUSCB7DQoJ
QkFDS0dST1VORDogI2ZmZjsgQ09MT1I6ICMwMDA7IEJPUkRFUi1SSUdIVDog
c2lsdmVyIDFweCBkb3R0ZWQNCn0NCkRJVi5wcmVwYWdhdGUgVEFCTEUuY29t
cGFyYXRpdmEgLmV2aWRlbnphIFRIIHsNCglCQUNLR1JPVU5EOiAjZWVlOyBC
T1JERVItUklHSFQ6IHNpbHZlciAxcHggZG90dGVkDQp9DQpESVYucHJlcGFn
YXRlIFRBQkxFLmNvbXBhcmF0aXZhIC5ub3JtYWxlIFREIHsNCglCQUNLR1JP
VU5EOiAjZmZmDQp9DQpESVYucHJlcGFnYXRlIFRBQkxFLmNvbXBhcmF0aXZh
IC5ldmlkZW56YSBURCB7DQoJQkFDS0dST1VORDogI2VlZQ0KfQ0KRElWLnBy
ZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSAubm9ybWFsZSBURC51bmljYSB7
DQoJQkFDS0dST1VORDogI2ZmZg0KfQ0KRElWLnByZXBhZ2F0ZSBUQUJMRS5j
b21wYXJhdGl2YSAuZXZpZGVuemEgVEQudW5pY2Egew0KCUJBQ0tHUk9VTkQ6
ICNlZWUNCn0NCkRJVi5hbm9uaW1lIHsNCglQQURESU5HLUJPVFRPTTogMHB4
OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiAzMzVw
eDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBGTE9BVDogbGVmdDsgUEFERElO
Ry1UT1A6IDBweA0KfQ0KRElWLm5vbWluYXRpdmUgew0KCVBBRERJTkctQk9U
VE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgV0lE
VEg6IDMzNXB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IEZMT0FUOiBsZWZ0
OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYuYW5vbmltZSBINCB7DQoJTUFS
R0lOOiAwcHggMHB4IDBweCAxMnB4OyBDT0xPUjogI2Y5MDsgRk9OVC1TSVpF
OiAxNHB4DQp9DQpESVYubm9taW5hdGl2ZSBINCB7DQoJTUFSR0lOOiAwcHgg
MHB4IDBweCAxMnB4OyBDT0xPUjogI2Y5MDsgRk9OVC1TSVpFOiAxNHB4DQp9
DQpESVYjcHJlcGFnYXRlIERJVi5ib3gxYSB7DQoJUEFERElORy1CT1RUT006
IDBweDsgTUFSR0lOOiA4cHggMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgV0lE
VEg6IDY3MHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IEJBQ0tHUk9VTkQ6
ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYnJhbmRi
b29rL2JveDFiLmpwZykgbm8tcmVwZWF0OyA9DQpIRUlHSFQ6IDE2MnB4OyBQ
QURESU5HLVRPUDogMHB4DQp9DQpESVYjcHJlcGFnYXRlIERJVi5ib3gxYSBI
NC50aXRvbG8gew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4
OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBQ
QURESU5HLVRPUDogMTBweA0KfQ0KRElWI3ByZXBhZ2F0ZSBESVYuYm94MWEg
SU1HIHsNCglQQURESU5HLUJPVFRPTTogMTZweDsgTUFSR0lOOiAwcHg7IFBB
RERJTkctTEVGVDogMTZweDsgUEFERElORy1SSUdIVDogPQ0KMTZweDsgUEFE
RElORy1UT1A6IDE2cHgNCn0NCkRJViNwcmVwYWdhdGUgRElWLmJveDFhIExJ
IHsNCglNQVJHSU46IDZweCAxNnB4IDZweCAxNDZweA0KfQ0KKiBIMyBBIHsN
CglURVhULVRSQU5TRk9STTogdXBwZXJjYXNlOyBDT0xPUjogI2Y2MzsgRk9O
VC1TSVpFOiAxMnB4OyBGT05ULVdFSUdIVDogPQ0KYm9sZA0KfQ0KI3Bhbm5l
bGxvTW92ZU9uSFAgI21vdmVPbiBIMyBBIHsNCglURVhULVRSQU5TRk9STTog
bG93ZXJjYXNlOyBNQVJHSU46IDBweCAwcHggMHB4IDZweA0KfQ0KQSB7DQoJ
T1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xPUjogaW52ZXJ0OyBP
VVRMSU5FLVdJRFRIOiBtZWRpdW0NCn0NCkE6aG92ZXIgew0KCUJPUkRFUi1C
T1RUT006IG1lZGl1bSBub25lOyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7
IEJPUkRFUi1UT1A6ID0NCm1lZGl1bSBub25lOyBCT1JERVItUklHSFQ6IG1l
ZGl1bSBub25lDQp9DQpBOmFjdGl2ZSB7DQoJQk9SREVSLUJPVFRPTTogbWVk
aXVtIG5vbmU7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgQk9SREVSLVRP
UDogPQ0KbWVkaXVtIG5vbmU7IEJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmUN
Cn0NCkE6Zm9jdXMgew0KCUJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lOyBC
T1JERVItTEVGVDogbWVkaXVtIG5vbmU7IEJPUkRFUi1UT1A6ID0NCm1lZGl1
bSBub25lOyBCT1JERVItUklHSFQ6IG1lZGl1bSBub25lDQp9DQo6Zm9jdXMg
ew0KCS1tb3otb3V0bGluZS1zdHlsZTogbm9uZQ0KfQ0KRElWLmJveFB1c2hE
aW5hbWl6IHsNCglXSURUSDogNjQxcHg7IE1BUkdJTi1CT1RUT006IDI0cHg7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvYm94UHVzaERpbmFtaXouanBnKSBuby1yZXBlYXQgbGVmdCA9DQp0
b3A7IEhFSUdIVDogMTMycHgNCn0NCkRJVi5ib3hQdXNoRGluYW1peiBIMyB7
DQo9MDkNCn0NCkRJVi5ib3hQdXNoRGluYW1peiBIMyBTUEFOIHsNCglQT1NJ
VElPTjogYWJzb2x1dGU7IE1BUkdJTi1UT1A6IC0xMDAwcHgNCn0NCkRJVi5i
b3hQdXNoRGluYW1peiBQIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURE
SU5HLUxFRlQ6IDE2OHB4OyBQQURESU5HLVJJR0hUOiAxMnB4OyA9DQpQQURE
SU5HLVRPUDogNjBweA0KfQ0KSDMucmVjYWxsRGluYW0gew0KCU1BUkdJTi1U
T1A6IDQycHg7IFdJRFRIOiA2NzBweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9yZWNhbGxEaW5hbS5naWYp
IG5vLXJlcGVhdCBsZWZ0IHRvcDsgPQ0KSEVJR0hUOiA3MnB4DQp9DQpIMy5y
ZWNhbGxEaW5hbSBTUEFOIHsNCglQT1NJVElPTjogYWJzb2x1dGU7IE1BUkdJ
Ti1UT1A6IC0xMDAwcHgNCn0NCi5hc3NpY3VyYXppb25pIEgyIHsNCglQQURE
SU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiA4
cHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgRk9OVDogYm9sZCAxNnB4LzMy
cHggIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy
aWY7ID0NCkJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQv
aW9TaTIwMTAvaW1hZ2VzL2JnSDMuZ2lmKSA9DQpuby1yZXBlYXQgbGVmdCBj
ZW50ZXI7IEhFSUdIVDogMzJweDsgQ09MT1I6ICNmOTA7IFBBRERJTkctVE9Q
OiAwcHgNCn0NCiN2YW50YWdnaUNhcnRhICNhY2NvcmRpb24gVUwgew0KCUxJ
U1QtU1RZTEUtVFlQRTogbm9uZTsgTElTVC1TVFlMRS1JTUFHRTogbm9uZQ0K
fQ0KI3ZhbnRhZ2dpQ2FydGEgI2FjY29yZGlvbiBIMyB7DQoJUEFERElORy1M
RUZUOiA2MHB4DQp9DQojdmFudGFnZ2lDYXJ0YSAjYWNjb3JkaW9uIEgzIElN
RyB7DQoJUE9TSVRJT046IGFic29sdXRlOyBQQURESU5HLUJPVFRPTTogMHB4
OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiA9DQowcHg7IFBBRERJTkct
UklHSFQ6IDBweDsgVE9QOiAxcHg7IFBBRERJTkctVE9QOiAwcHg7IExFRlQ6
IDJweA0KfQ0KI3ZhbnRhZ2dpQ2FydGEgI2FjY29yZGlvbiBIMy50aXRvbG8g
ew0KCU1BUkdJTjogNnB4IDBweCAwcHgNCn0NCkRJVi5ib3h3aWRlIHsNCglX
SURUSDogNjYwcHg7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNh
cnRhc2kuaXQvSW1tYWdpbmkvYmdfYm94d2lkZS5qcGcpIG5vLXJlcGVhdCBs
ZWZ0IHRvcDsgPQ0KSEVJR0hUOiAxMjVweA0KfQ0KRElWLmJveHdpZGUgSDMg
ew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogOHB4OyBQ
QURESU5HLVJJR0hUOiA4cHg7IENPTE9SOiA9DQojZjkwOyBGT05ULVNJWkU6
IDE4cHg7IFBBRERJTkctVE9QOiAxNHB4DQp9DQpESVYuYm94d2lkZSBQIHsN
CglQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6IDhweDsgUEFE
RElORy1SSUdIVDogOHB4OyBDT0xPUjogPQ0KIzY2NjsgRk9OVC1TSVpFOiAx
MXB4OyBQQURESU5HLVRPUDogMTJweA0KfQ0KLnJpY2FyaWNoZUxpc3Qgew0K
CUJPUkRFUi1CT1RUT00tU1RZTEU6IG5vbmU7IFBBRERJTkctQk9UVE9NOiAw
cHg7IEJPUkRFUi1SSUdIVC1TVFlMRTogPQ0Kbm9uZTsgTUFSR0lOOiAwcHg7
IFBBRERJTkctTEVGVDogMHB4OyBXSURUSDogNjcycHg7IFBBRERJTkctUklH
SFQ6IDBweDsgPQ0KQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZTsgRk9OVDog
MTJweCAiVHJlYnVjaGV0IE1TIiwgQXJpYWwsIEhlbHZldGljYSwgPQ0Kc2Fu
cy1zZXJpZjsgQk9SREVSLVRPUC1TVFlMRTogbm9uZTsgVEFCTEUtTEFZT1VU
OiBmaXhlZDsgPQ0KQk9SREVSLUxFRlQtU1RZTEU6IG5vbmU7IFBBRERJTkct
VE9QOiAwcHgNCn0NCi5yaWNhcmljaGVMaXN0IFRELm9mZmVydGEgew0KCVdJ
RFRIOiAyMTBweDsgQ09MT1I6ICNlZjlkMWQ7IEZPTlQtU0laRTogMTRweDsg
Rk9OVC1XRUlHSFQ6IGJvbGQNCn0NCi5yaWNhcmljaGVMaXN0IFRIIHsNCglC
T1JERVItQk9UVE9NOiAjZTJlMmUyIDJweCBzb2xpZDsgUEFERElORy1CT1RU
T006IDBweDsgTUFSR0lOOiAwcHg7ID0NClBBRERJTkctTEVGVDogMHB4OyBQ
QURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCi5yaWNh
cmljaGVMaXN0IFRSIC5sb2doaSB7DQoJVEVYVC1BTElHTjogY2VudGVyOyBQ
QURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZU
OiA9DQowcHg7IFdJRFRIOiAxODVweDsgUEFERElORy1SSUdIVDogMHB4OyBQ
QURESU5HLVRPUDogMHB4DQp9DQoucmljYXJpY2hlTGlzdCAuYWx0IHsNCglC
QUNLR1JPVU5EOiAjZjRmNGY0DQp9DQoucmljYXJpY2hlTGlzdCBUSCB7DQoJ
Qk9SREVSLUJPVFRPTTogI2UyZTJlMiAycHggc29saWQ7IFRFWFQtQUxJR046
IGxlZnQ7IFBBRERJTkctQk9UVE9NOiA9DQoyMnB4OyBNQVJHSU46IDBweDsg
UEFERElORy1MRUZUOiAxMnB4OyBQQURESU5HLVJJR0hUOiAxMnB4OyBDT0xP
UjogIzY2NjsgPQ0KRk9OVC1TSVpFOiAxMnB4OyBWRVJUSUNBTC1BTElHTjog
bWlkZGxlOyBGT05ULVdFSUdIVDogYm9sZDsgPQ0KQk9SREVSLVJJR0hUOiAj
ZTJlMmUyIDFweCBzb2xpZDsgUEFERElORy1UT1A6IDIycHgNCn0NCi5yaWNh
cmljaGVMaXN0IFREIHsNCglCT1JERVItQk9UVE9NOiAjZTJlMmUyIDJweCBz
b2xpZDsgVEVYVC1BTElHTjogbGVmdDsgUEFERElORy1CT1RUT006ID0NCjIy
cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDEycHg7IFBBRERJTkct
UklHSFQ6IDEycHg7IENPTE9SOiAjNjY2OyA9DQpGT05ULVNJWkU6IDEycHg7
IFZFUlRJQ0FMLUFMSUdOOiBtaWRkbGU7IEZPTlQtV0VJR0hUOiBib2xkOyA9
DQpCT1JERVItUklHSFQ6ICNlMmUyZTIgMXB4IHNvbGlkOyBQQURESU5HLVRP
UDogMjJweA0KfQ0KLnJpY2FyaWNoZUxpc3QgVFIgLmhlYWRlciB7DQoJVEVY
VC1BTElHTjogY2VudGVyOyBQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5H
LUxFRlQ6IDBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBIRUlHSFQ6IDYw
cHg7IENPTE9SOiAjMzMzOyBGT05ULVNJWkU6IDE0cHg7ID0NClZFUlRJQ0FM
LUFMSUdOOiBtaWRkbGU7IFBBRERJTkctVE9QOiAzMnB4DQp9DQouaGVscExv
Z2luIElNRyB7DQoJQk9SREVSLUJPVFRPTTogcmVkIDFweCBkb3R0ZWQ7IEJP
UkRFUi1MRUZUOiByZWQgMXB4IGRvdHRlZDsgTUFSR0lOOiA9DQoxMnB4OyBG
TE9BVDogbGVmdDsgQk9SREVSLVRPUDogcmVkIDFweCBkb3R0ZWQ7IEJPUkRF
Ui1SSUdIVDogcmVkIDFweCA9DQpkb3R0ZWQNCn0NCi5ib3h3aWRlIFNQQU4u
ZXZpZGVuemExIHsNCglQQURESU5HLUJPVFRPTTogMTJweDsgUEFERElORy1M
RUZUOiAxMnB4OyBQQURESU5HLVJJR0hUOiAxMnB4OyBDT0xPUjogPQ0KIzMz
MzsgRk9OVC1TSVpFOiAxMHB4OyBQQURESU5HLVRPUDogMTJweA0KfQ0KLmJv
eHdpZGUgU1BBTi5ldmlkZW56YTEgU1RST05HIHsNCglDT0xPUjogI2Y5MA0K
fQ0KLmJveHdpZGUgU1BBTi5ldmlkZW56YTIgew0KCVBBRERJTkctQk9UVE9N
OiAxMnB4OyBQQURESU5HLUxFRlQ6IDEycHg7IFBBRERJTkctUklHSFQ6IDEy
cHg7IENPTE9SOiA9DQojMzMzOyBGT05ULVNJWkU6IDEwcHg7IFBBRERJTkct
VE9QOiAxMnB4DQp9DQouYm94d2lkZSBTUEFOLmV2aWRlbnphMiBTVFJPTkcg
ew0KCUNPTE9SOiAjZjkwDQp9DQouYm94d2lkZSBESVYgew0KCVBBRERJTkct
Qk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hU
OiAwcHg7ID0NClBBRERJTkctVE9QOiAyMnB4DQp9DQoNCi0tLS0tLT1fTmV4
dFBhcnRfMDAwXzAwMDBfMDFDQ0VDNzguQ0VCNTk4QTANCkNvbnRlbnQtVHlw
ZTogdGV4dC9jc3M7DQoJY2hhcnNldD0iaXNvLTg4NTktMSINCkNvbnRlbnQt
VHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCkNvbnRlbnQt
TG9jYXRpb246IGh0dHA6Ly93d3cuY2FydGFzaS5pdC9ncmV5Ym94L2diX3N0
eWxlcy5jc3MNCg0KI0dCX292ZXJsYXkgew0KCVotSU5ERVg6IDEwMDsgUE9T
SVRJT046IGFic29sdXRlOyBCQUNLR1JPVU5ELUNPTE9SOiAjMDAwOyBNQVJH
SU46IGF1dG87ID0NClRPUDogMHB4OyBMRUZUOiAwcHgNCn0NCiNHQl93aW5k
b3cgew0KCVotSU5ERVg6IDE1MDsgUE9TSVRJT046IGFic29sdXRlOyBGT05U
LVNJWkU6IDFweDsgT1ZFUkZMT1c6IHZpc2libGU7ID0NClRPUDogMHB4OyBM
RUZUOiAwcHgNCn0NCiNHQl93aW5kb3cgLmNvbnRlbnQgew0KCVBBRERJTkct
Qk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsg
V0lEVEg6IGF1dG87ID0NClBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1U
T1A6IDBweA0KfQ0KI0dCX2ZyYW1lIHsNCglCT1JERVItQk9UVE9NOiAwcHg7
IEJPUkRFUi1MRUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJ
TjogMHB4OyA9DQpQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDog
MHB4OyBXSElURS1TUEFDRTogbm93cmFwOyBPVkVSRkxPVzogPQ0KYXV0bzsg
Qk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6IDBweDsgUEFERElORy1U
T1A6IDBweA0KfQ0KLkdCX0dhbGxlcnkgew0KCU1BUkdJTjogMHB4IDIycHgN
Cn0NCi5HQl9HYWxsZXJ5IC5jb250ZW50IHsNCglCT1JERVItQk9UVE9NOiAj
ZGRkIDNweCBzb2xpZDsgQk9SREVSLUxFRlQ6ICNkZGQgM3B4IHNvbGlkOyA9
DQpCQUNLR1JPVU5ELUNPTE9SOiAjZmZmOyBCT1JERVItVE9QOiAjZGRkIDNw
eCBzb2xpZDsgQk9SREVSLVJJR0hUOiAjZGRkID0NCjNweCBzb2xpZA0KfQ0K
LkdCX2hlYWRlciB7DQoJWi1JTkRFWDogNTAwOyBCT1JERVItQk9UVE9NOiAj
NTU1IDJweCBzb2xpZDsgUE9TSVRJT046IGFic29sdXRlOyA9DQpNQVJHSU46
IDBweDsgQk9SREVSLVRPUDogIzU1NSAycHggc29saWQ7IFRPUDogMTBweDsg
TEVGVDogMHB4DQp9DQouR0JfaGVhZGVyIC5pbm5lciB7DQoJUEFERElORy1C
T1RUT006IDJweDsgQkFDS0dST1VORC1DT0xPUjogIzMzMzsgUEFERElORy1M
RUZUOiAyMHB4OyA9DQpQQURESU5HLVJJR0hUOiAyMHB4OyBGT05ULUZBTUlM
WTogQXJpYWwsIFZlcmRhbmEsIHNhbnMtc2VyaWY7ID0NClBBRERJTkctVE9Q
OiAycHgNCn0NCi5HQl9oZWFkZXIgVEFCTEUgew0KCU1BUkdJTjogMHB4OyBX
SURUSDogMTAwJTsgQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZQ0KfQ0KLkdC
X2hlYWRlciAuY2FwdGlvbiB7DQoJVEVYVC1BTElHTjogbGVmdDsgV0hJVEUt
U1BBQ0U6IG5vd3JhcDsgQ09MT1I6ICNlZWU7IEZPTlQtU0laRTogMjBweA0K
fQ0KLkdCX2hlYWRlciAuY2xvc2Ugew0KCVRFWFQtQUxJR046IHJpZ2h0DQp9
DQouR0JfaGVhZGVyIC5jbG9zZSBJTUcgew0KCVotSU5ERVg6IDUwMDsgQ1VS
U09SOiBwb2ludGVyDQp9DQouR0JfaGVhZGVyIC5taWRkbGUgew0KCVRFWFQt
QUxJR046IGNlbnRlcjsgV0hJVEUtU1BBQ0U6IG5vd3JhcA0KfQ0KI0dCX21p
ZGRsZSB7DQoJQ09MT1I6ICNlZWUNCn0NCiNHQl9taWRkbGUgSU1HIHsNCglW
RVJUSUNBTC1BTElHTjogbWlkZGxlOyBDVVJTT1I6IHBvaW50ZXINCn0NCiNH
Ql9taWRkbGUgLmRpc2FibGVkIHsNCglDVVJTT1I6IGRlZmF1bHQNCn0NCiNH
Ql9taWRkbGUgLmxlZnQgew0KCVBBRERJTkctUklHSFQ6IDEwcHgNCn0NCiNH
Ql9taWRkbGUgLnJpZ2h0IHsNCglQQURESU5HLUxFRlQ6IDEwcHgNCn0NCi5H
Ql9XaW5kb3cgLmNvbnRlbnQgew0KCUJPUkRFUi1CT1RUT006ICNjY2MgM3B4
IHNvbGlkOyBCT1JERVItTEVGVDogI2NjYyAzcHggc29saWQ7ID0NCkJBQ0tH
Uk9VTkQtQ09MT1I6ICNmZmY7IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBC
T1JERVItUklHSFQ6ICNjY2MgM3B4ID0NCnNvbGlkDQp9DQouR0JfV2luZG93
IC5oZWFkZXIgew0KCUJPUkRFUi1CT1RUT006ICNhYWEgMXB4IHNvbGlkOyBC
T1JERVItTEVGVDogI2NjYyAzcHggc29saWQ7ID0NClBBRERJTkctQk9UVE9N
OiAzcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElO
Ry1SSUdIVDogMHB4OyA9DQpIRUlHSFQ6IDIycHg7IENPTE9SOiAjMzMzOyBG
T05ULVNJWkU6IDEycHg7IEJPUkRFUi1UT1A6ICM5OTkgMXB4IHNvbGlkOyA9
DQpCT1JERVItUklHSFQ6ICNjY2MgM3B4IHNvbGlkOyBQQURESU5HLVRPUDog
M3B4DQp9DQouR0JfV2luZG93IC5jYXB0aW9uIHsNCglURVhULUFMSUdOOiBs
ZWZ0OyBQQURESU5HLVJJR0hUOiAyMHB4OyBXSElURS1TUEFDRTogbm93cmFw
OyBGT05ULVNJWkU6ID0NCjEycHg7IEZPTlQtV0VJR0hUOiBib2xkDQp9DQou
R0JfV2luZG93IC5jbG9zZSB7DQoJVEVYVC1BTElHTjogcmlnaHQNCn0NCi5H
Ql9XaW5kb3cgLmNsb3NlIFNQQU4gew0KCUZPTlQtU0laRTogMTJweDsgQ1VS
U09SOiBwb2ludGVyDQp9DQouR0JfV2luZG93IC5jbG9zZSBJTUcgew0KCVBB
RERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5H
LVJJR0hUOiAzcHg7IENVUlNPUjogPQ0KcG9pbnRlcjsgUEFERElORy1UT1A6
IDBweA0KfQ0KLkdCX1dpbmRvdyAub24gew0KCUJPUkRFUi1CT1RUT006ICMz
MzMgMXB4IHNvbGlkDQp9DQouR0JfV2luZG93IC5jbGljayB7DQoJQk9SREVS
LUJPVFRPTTogcmVkIDFweCBzb2xpZA0KfQ0KDQotLS0tLS09X05leHRQYXJ0
XzAwMF8wMDAwXzAxQ0NFQzc4LkNFQjU5OEEwDQpDb250ZW50LVR5cGU6IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVudC1UcmFuc2Zlci1FbmNv
ZGluZzogcXVvdGVkLXByaW50YWJsZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0
cDovL3d3dy5jYXJ0YXNpLml0L2phdmFzY3JpcHQvanF1ZXJ5LmpzDQoNCi8q
IQ0KICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS40LjINCiAqIGh0
dHA6Ly9qcXVlcnkuY29tLw0KICoNCiAqIENvcHlyaWdodCAyMDEwLCBKb2hu
IFJlc2lnDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BM
IFZlcnNpb24gMiBsaWNlbnNlcy4NCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xp
Y2Vuc2UNCiAqDQogKiBJbmNsdWRlcyBTaXp6bGUuanMNCiAqIGh0dHA6Ly9z
aXp6bGVqcy5jb20vDQogKiBDb3B5cmlnaHQgMjAxMCwgVGhlIERvam8gRm91
bmRhdGlvbg0KICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQg
R1BMIExpY2Vuc2VzLg0KICoNCiAqIERhdGU6IFNhdCBGZWIgMTMgMjI6MzM6
NDggMjAxMCAtMDUwMA0KICovDQooZnVuY3Rpb24gKEEsIHcpIHsNCiAgICBm
dW5jdGlvbiBtYSgpIHsNCiAgICAgICAgaWYgKCFjLmlzUmVhZHkpIHsNCiAg
ICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgcy5kb2N1bWVudEVs
ZW1lbnQuZG9TY3JvbGwoImxlZnQiKQ0KICAgICAgICAgICAgfSBjYXRjaCAo
YSkgew0KICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobWEsIDEpOw0KICAg
ICAgICAgICAgICAgIHJldHVybg0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgYy5yZWFkeSgpDQogICAgICAgIH0NCiAgICB9DQogICAgZnVuY3Rpb24g
UWEoYSwgYikgew0KICAgICAgICBiLnNyYyA/IGMuYWpheCh7DQogICAgICAg
ICAgICB1cmw6IGIuc3JjLA0KICAgICAgICAgICAgYXN5bmM6IGZhbHNlLA0K
ICAgICAgICAgICAgZGF0YVR5cGU6ICJzY3JpcHQiDQogICAgICAgIH0pIDog
Yy5nbG9iYWxFdmFsKGIudGV4dCB8fCBiLnRleHRDb250ZW50IHx8IGIuaW5u
ZXJIVE1MIHx8ICIiKTsNCiAgICAgICAgYi5wYXJlbnROb2RlICYmIGIucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChiKQ0KICAgIH0NCiAgICBmdW5jdGlvbiBY
KGEsIGIsIGQsIGYsIGUsIGopIHsNCiAgICAgICAgdmFyIGkgPTNEIGEubGVu
Z3RoOw0KICAgICAgICBpZiAodHlwZW9mIGIgPTNEPTNEPTNEICJvYmplY3Qi
KSB7DQogICAgICAgICAgICBmb3IgKHZhciBvIGluIGIpIFgoYSwgbywgYltv
XSwgZiwgZSwgZCk7DQogICAgICAgICAgICByZXR1cm4gYQ0KICAgICAgICB9
DQogICAgICAgIGlmIChkICE9M0Q9M0Qgdykgew0KICAgICAgICAgICAgZiA9
M0QgIWogJiYgZiAmJiBjLmlzRnVuY3Rpb24oZCk7DQogICAgICAgICAgICBm
b3IgKG8gPTNEIDA7IG8gPCBpOyBvKyspIGUoYVtvXSwgYiwgZiA/IGQuY2Fs
bChhW29dLCBvLCA9DQplKGFbb10sIGIpKSA6IGQsIGopOw0KICAgICAgICAg
ICAgcmV0dXJuIGENCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gaSA/IGUo
YVswXSwgYikgOiB3DQogICAgfQ0KICAgIGZ1bmN0aW9uIEooKSB7DQogICAg
ICAgIHJldHVybiAobmV3IERhdGUpLmdldFRpbWUoKQ0KICAgIH0NCiAgICBm
dW5jdGlvbiBZKCkgew0KICAgICAgICByZXR1cm4gZmFsc2UNCiAgICB9DQog
ICAgZnVuY3Rpb24gWigpIHsNCiAgICAgICAgcmV0dXJuIHRydWUNCiAgICB9
DQogICAgZnVuY3Rpb24gbmEoYSwgYiwgZCkgew0KICAgICAgICBkWzBdLnR5
cGUgPTNEIGE7DQogICAgICAgIHJldHVybiBjLmV2ZW50LmhhbmRsZS5hcHBs
eShiLCBkKQ0KICAgIH0NCiAgICBmdW5jdGlvbiBvYShhKSB7DQogICAgICAg
IHZhciBiLCBkID0zRCBbXSwNCiAgICAgICAgICAgIGYgPTNEIFtdLA0KICAg
ICAgICAgICAgZSA9M0QgYXJndW1lbnRzLA0KICAgICAgICAgICAgaiwgaSwg
bywgaywgbiwgcjsNCiAgICAgICAgaSA9M0QgYy5kYXRhKHRoaXMsICJldmVu
dHMiKTsNCiAgICAgICAgaWYgKCEoYS5saXZlRmlyZWQgPTNEPTNEPTNEIHRo
aXMgfHwgIWkgfHwgIWkubGl2ZSB8fCBhLmJ1dHRvbiAmJiA9DQphLnR5cGUg
PTNEPTNEPTNEICJjbGljayIpKSB7DQogICAgICAgICAgICBhLmxpdmVGaXJl
ZCA9M0QgdGhpczsNCiAgICAgICAgICAgIHZhciB1ID0zRCBpLmxpdmUuc2xp
Y2UoMCk7DQogICAgICAgICAgICBmb3IgKGsgPTNEIDA7IGsgPCB1Lmxlbmd0
aDsgaysrKSB7DQogICAgICAgICAgICAgICAgaSA9M0QgdVtrXTsNCiAgICAg
ICAgICAgICAgICBpLm9yaWdUeXBlLnJlcGxhY2UoTywgIiIpID0zRD0zRD0z
RCBhLnR5cGUgPyA9DQpmLnB1c2goaS5zZWxlY3RvcikgOiB1LnNwbGljZShr
LS0sIDEpDQogICAgICAgICAgICB9DQogICAgICAgICAgICBqID0zRCBjKGEu
dGFyZ2V0KS5jbG9zZXN0KGYsIGEuY3VycmVudFRhcmdldCk7DQogICAgICAg
ICAgICBuID0zRCAwOw0KICAgICAgICAgICAgZm9yIChyID0zRA0KICAgICAg
ICAgICAgai5sZW5ndGg7IG4gPCByOyBuKyspIGZvciAoayA9M0QgMDsgayA8
IHUubGVuZ3RoOyBrKyspIHsNCiAgICAgICAgICAgICAgICBpID0zRCB1W2td
Ow0KICAgICAgICAgICAgICAgIGlmIChqW25dLnNlbGVjdG9yID0zRD0zRD0z
RCBpLnNlbGVjdG9yKSB7DQogICAgICAgICAgICAgICAgICAgIG8gPTNEIGpb
bl0uZWxlbTsNCiAgICAgICAgICAgICAgICAgICAgZiA9M0QgbnVsbDsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKGkucHJlVHlwZSA9M0Q9M0Q9M0QgIm1v
dXNlZW50ZXIiIHx8IGkucHJlVHlwZSA9DQo9M0Q9M0Q9M0QgIm1vdXNlbGVh
dmUiKSBmID0zRCBjKGEucmVsYXRlZFRhcmdldCkuY2xvc2VzdChpLnNlbGVj
dG9yKVswXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFmIHx8IGYgIT0z
RD0zRCBvKSBkLnB1c2goew0KICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bTogbywNCiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iajogaQ0K
ICAgICAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIG4gPTNEIDA7DQogICAgICAgICAg
ICBmb3IgKHIgPTNEIGQubGVuZ3RoOyBuIDwgcjsgbisrKSB7DQogICAgICAg
ICAgICAgICAgaiA9M0QgZFtuXTsNCiAgICAgICAgICAgICAgICBhLmN1cnJl
bnRUYXJnZXQgPTNEIGouZWxlbTsNCiAgICAgICAgICAgICAgICBhLmRhdGEg
PTNEIGouaGFuZGxlT2JqLmRhdGE7DQogICAgICAgICAgICAgICAgYS5oYW5k
bGVPYmogPTNEIGouaGFuZGxlT2JqOw0KICAgICAgICAgICAgICAgIGlmIChq
LmhhbmRsZU9iai5vcmlnSGFuZGxlci5hcHBseShqLmVsZW0sIGUpID0zRD0z
RD0zRCA9DQpmYWxzZSkgew0KICAgICAgICAgICAgICAgICAgICBiID0zRCBm
YWxzZTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gYg0K
ICAgICAgICB9DQogICAgfQ0KICAgIGZ1bmN0aW9uIHBhKGEsIGIpIHsNCiAg
ICAgICAgcmV0dXJuICJsaXZlLiIgKyAoYSAmJiBhICE9M0Q9M0QgIioiID8g
YSArICIuIiA6ICIiKSArID0NCmIucmVwbGFjZSgvXC4vZywgImAiKS5yZXBs
YWNlKC8gL2csICImIikNCiAgICB9DQogICAgZnVuY3Rpb24gcWEoYSkgew0K
ICAgICAgICByZXR1cm4gIWEgfHwgIWEucGFyZW50Tm9kZSB8fCBhLnBhcmVu
dE5vZGUubm9kZVR5cGUgPTNEPTNEPTNEIDExDQogICAgfQ0KICAgIGZ1bmN0
aW9uIHJhKGEsIGIpIHsNCiAgICAgICAgdmFyIGQgPTNEIDA7DQogICAgICAg
IGIuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBpZiAodGhpcy5u
b2RlTmFtZSA9M0Q9M0Q9M0QgKGFbZF0gJiYgYVtkXS5ub2RlTmFtZSkpIHsN
CiAgICAgICAgICAgICAgICB2YXIgZiA9M0QgYy5kYXRhKGFbZCsrXSksDQog
ICAgICAgICAgICAgICAgICAgIGUgPTNEIGMuZGF0YSh0aGlzLCBmKTsNCiAg
ICAgICAgICAgICAgICBpZiAoZiA9M0QgZiAmJiBmLmV2ZW50cykgew0KICAg
ICAgICAgICAgICAgICAgICBkZWxldGUgZS5oYW5kbGU7DQogICAgICAgICAg
ICAgICAgICAgIGUuZXZlbnRzID0zRCB7fTsNCiAgICAgICAgICAgICAgICAg
ICAgZm9yICh2YXIgaiBpbiBmKSBmb3IgKHZhciBpIGluIGZbal0pID0NCmMu
ZXZlbnQuYWRkKHRoaXMsIGosIGZbal1baV0sIGZbal1baV0uZGF0YSkNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0pDQog
ICAgfQ0KICAgIGZ1bmN0aW9uIHNhKGEsIGIsIGQpIHsNCiAgICAgICAgdmFy
IGYsIGUsIGo7DQogICAgICAgIGIgPTNEIGIgJiYgYlswXSA/IGJbMF0ub3du
ZXJEb2N1bWVudCB8fCBiWzBdIDogczsNCiAgICAgICAgaWYgKGEubGVuZ3Ro
ID0zRD0zRD0zRCAxICYmIHR5cGVvZiBhWzBdID0zRD0zRD0zRCAic3RyaW5n
IiAmJiA9DQphWzBdLmxlbmd0aCA8IDUxMiAmJiBiID0zRD0zRD0zRCBzICYm
ICF0YS50ZXN0KGFbMF0pICYmID0NCihjLnN1cHBvcnQuY2hlY2tDbG9uZSB8
fCAhdWEudGVzdChhWzBdKSkpIHsNCiAgICAgICAgICAgIGUgPTNEDQogICAg
ICAgICAgICB0cnVlOw0KICAgICAgICAgICAgaWYgKGogPTNEIGMuZnJhZ21l
bnRzW2FbMF1dKSBpZiAoaiAhPTNEPTNEIDEpIGYgPTNEIGoNCiAgICAgICAg
fQ0KICAgICAgICBpZiAoIWYpIHsNCiAgICAgICAgICAgIGYgPTNEIGIuY3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOw0KICAgICAgICAgICAgYy5jbGVhbihh
LCBiLCBmLCBkKQ0KICAgICAgICB9DQogICAgICAgIGlmIChlKSBjLmZyYWdt
ZW50c1thWzBdXSA9M0QgaiA/IGYgOiAxOw0KICAgICAgICByZXR1cm4gew0K
ICAgICAgICAgICAgZnJhZ21lbnQ6IGYsDQogICAgICAgICAgICBjYWNoZWFi
bGU6IGUNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmdW5jdGlvbiBLKGEsIGIp
IHsNCiAgICAgICAgdmFyIGQgPTNEIHt9Ow0KICAgICAgICBjLmVhY2godmEu
Y29uY2F0LmFwcGx5KFtdLCB2YS5zbGljZSgwLCBiKSksIGZ1bmN0aW9uICgp
IHsNCiAgICAgICAgICAgIGRbdGhpc10gPTNEIGENCiAgICAgICAgfSk7DQog
ICAgICAgIHJldHVybiBkDQogICAgfQ0KICAgIGZ1bmN0aW9uIHdhKGEpIHsN
CiAgICAgICAgcmV0dXJuICJzY3JvbGxUbyIgaW4gYSAmJiBhLmRvY3VtZW50
ID8gYSA6IGEubm9kZVR5cGUgPTNEPTNEPTNEID0NCjkgPyBhLmRlZmF1bHRW
aWV3IHx8IGEucGFyZW50V2luZG93IDogZmFsc2UNCiAgICB9DQogICAgdmFy
IGMgPTNEIGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgIHJldHVybiBuZXcg
Yy5mbi5pbml0KGEsIGIpDQogICAgfSwNCiAgICAgICAgUmEgPTNEIEEualF1
ZXJ5LA0KICAgICAgICBTYSA9M0QgQS4kLA0KICAgICAgICBzID0zRCBBLmRv
Y3VtZW50LA0KICAgICAgICBULCBUYSA9M0QgL15bXjxdKig8W1x3XFddKz4p
W14+XSokfF4jKFtcdy1dKykkLywNCiAgICAgICAgVWEgPTNEIC9eLlteOiNc
W1wuLF0qJC8sDQogICAgICAgIFZhID0zRCAvXFMvLA0KICAgICAgICBXYSA9
M0QgL14oXHN8XHUwMEEwKSt8KFxzfFx1MDBBMCkrJC9nLA0KICAgICAgICBY
YSA9M0QgL148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLywNCiAgICAgICAg
UCA9M0QgbmF2aWdhdG9yLnVzZXJBZ2VudCwNCiAgICAgICAgeGEgPTNEIGZh
bHNlLA0KICAgICAgICBRID0zRCBbXSwNCiAgICAgICAgTCwgJCA9M0QgT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZywNCiAgICAgICAgYWEgPTNEIE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksDQogICAgICAgIGJhID0zRCBB
cnJheS5wcm90b3R5cGUucHVzaCwNCiAgICAgICAgUiA9M0QgQXJyYXkucHJv
dG90eXBlLnNsaWNlLA0KICAgICAgICB5YSA9M0QgQXJyYXkucHJvdG90eXBl
LmluZGV4T2Y7DQogICAgYy5mbiA9M0QgYy5wcm90b3R5cGUgPTNEIHsNCiAg
ICAgICAgaW5pdDogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIHZh
ciBkLCBmOw0KICAgICAgICAgICAgaWYgKCFhKSByZXR1cm4gdGhpczsNCiAg
ICAgICAgICAgIGlmIChhLm5vZGVUeXBlKSB7DQogICAgICAgICAgICAgICAg
dGhpcy5jb250ZXh0ID0zRCB0aGlzWzBdID0zRCBhOw0KICAgICAgICAgICAg
ICAgIHRoaXMubGVuZ3RoID0zRCAxOw0KICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoYSA9M0Q9
M0Q9M0QgImJvZHkiICYmICFiKSB7DQogICAgICAgICAgICAgICAgdGhpcy5j
b250ZXh0ID0zRCBzOw0KICAgICAgICAgICAgICAgIHRoaXNbMF0gPTNEIHMu
Ym9keTsNCiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdG9yID0zRCAiYm9k
eSI7DQogICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPTNEIDE7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIGlmICh0eXBlb2YgYSA9M0Q9M0Q9M0QgInN0cmluZyIpIGlmICgo
ZCA9M0QgVGEuZXhlYyhhKSkgJiYgPQ0KKGRbMV0gfHwgIWIpKSBpZiAoZFsx
XSkgew0KICAgICAgICAgICAgICAgIGYgPTNEIGIgPyBiLm93bmVyRG9jdW1l
bnQgfHwgYiA6IHM7DQogICAgICAgICAgICAgICAgaWYgKGEgPTNEIFhhLmV4
ZWMoYSkpIGlmIChjLmlzUGxhaW5PYmplY3QoYikpIHsNCiAgICAgICAgICAg
ICAgICAgICAgYSA9M0QgW3MuY3JlYXRlRWxlbWVudChhWzFdKV07DQogICAg
ICAgICAgICAgICAgICAgIGMuZm4uYXR0ci5jYWxsKGEsIGIsIHRydWUpDQog
ICAgICAgICAgICAgICAgfSBlbHNlIGEgPTNEIFtmLmNyZWF0ZUVsZW1lbnQo
YVsxXSldOw0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAg
ICAgICAgICBhID0zRCBzYShbZFsxXV0sIFtmXSk7DQogICAgICAgICAgICAg
ICAgICAgIGEgPTNEIChhLmNhY2hlYWJsZSA/IGEuZnJhZ21lbnQuY2xvbmVO
b2RlKHRydWUpIDogPQ0KYS5mcmFnbWVudCkuY2hpbGROb2Rlcw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gYy5tZXJnZSh0
aGlzLCBhKQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg
ICBpZiAoYiA9M0Qgcy5nZXRFbGVtZW50QnlJZChkWzJdKSkgew0KICAgICAg
ICAgICAgICAgICAgICBpZiAoYi5pZCAhPTNEPTNEIGRbMl0pIHJldHVybiBU
LmZpbmQoYSk7DQogICAgICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoID0z
RCAxOw0KICAgICAgICAgICAgICAgICAgICB0aGlzWzBdID0zRCBiDQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9
M0QgczsNCiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdG9yID0zRCBhOw0K
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzDQogICAgICAgICAgICB9IGVs
c2UgaWYgKCFiICYmIC9eXHcrJC8udGVzdChhKSkgew0KICAgICAgICAgICAg
ICAgIHRoaXMuc2VsZWN0b3IgPTNEIGE7DQogICAgICAgICAgICAgICAgdGhp
cy5jb250ZXh0ID0zRCBzOw0KICAgICAgICAgICAgICAgIGEgPTNEIHMuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoYSk7DQogICAgICAgICAgICAgICAgcmV0dXJu
IGMubWVyZ2UodGhpcywgYSkNCiAgICAgICAgICAgIH0gZWxzZSByZXR1cm4g
IWIgfHwgYi5qcXVlcnkgPyAoYiB8fCBUKS5maW5kKGEpIDogPQ0KYyhiKS5m
aW5kKGEpOw0KICAgICAgICAgICAgZWxzZSBpZiAoYy5pc0Z1bmN0aW9uKGEp
KSByZXR1cm4gVC5yZWFkeShhKTsNCiAgICAgICAgICAgIGlmIChhLnNlbGVj
dG9yICE9M0Q9M0Qgdykgew0KICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0
b3IgPTNEIGEuc2VsZWN0b3I7DQogICAgICAgICAgICAgICAgdGhpcy5jb250
ZXh0ID0zRCBhLmNvbnRleHQNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IHJldHVybiBjLm1ha2VBcnJheShhLCB0aGlzKQ0KICAgICAgICB9LA0KICAg
ICAgICBzZWxlY3RvcjogIiIsDQogICAgICAgIGpxdWVyeTogIjEuNC4yIiwN
CiAgICAgICAgbGVuZ3RoOiAwLA0KICAgICAgICBzaXplOiBmdW5jdGlvbiAo
KSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGgNCiAgICAgICAg
fSwNCiAgICAgICAgdG9BcnJheTogZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgcmV0dXJuIFIuY2FsbCh0aGlzLCAwKQ0KICAgICAgICB9LA0KICAgICAg
ICBnZXQ6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICByZXR1cm4gYSA9
M0Q9M0QgbnVsbCA/IHRoaXMudG9BcnJheSgpIDogYSA8IDAgPyA9DQp0aGlz
LnNsaWNlKGEpWzBdIDogdGhpc1thXQ0KICAgICAgICB9LA0KICAgICAgICBw
dXNoU3RhY2s6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICB2
YXIgZiA9M0QgYygpOw0KICAgICAgICAgICAgYy5pc0FycmF5KGEpID8gYmEu
YXBwbHkoZiwgYSkgOiBjLm1lcmdlKGYsIGEpOw0KICAgICAgICAgICAgZi5w
cmV2T2JqZWN0ID0zRCB0aGlzOw0KICAgICAgICAgICAgZi5jb250ZXh0ID0z
RCB0aGlzLmNvbnRleHQ7DQogICAgICAgICAgICBpZiAoYiA9M0Q9M0Q9M0Qg
ImZpbmQiKSBmLnNlbGVjdG9yID0zRCB0aGlzLnNlbGVjdG9yICsgPQ0KKHRo
aXMuc2VsZWN0b3IgPyAiICIgOiAiIikgKyBkOw0KICAgICAgICAgICAgZWxz
ZSBpZiAoYikgZi5zZWxlY3RvciA9M0QgdGhpcy5zZWxlY3RvciArICIuIiAr
IGIgKyAiKCIgKyBkID0NCisgIikiOw0KICAgICAgICAgICAgcmV0dXJuIGYN
CiAgICAgICAgfSwNCiAgICAgICAgZWFjaDogZnVuY3Rpb24gKGEsIGIpIHsN
CiAgICAgICAgICAgIHJldHVybiBjLmVhY2godGhpcywgYSwgYikNCg0KICAg
ICAgICB9LA0KICAgICAgICByZWFkeTogZnVuY3Rpb24gKGEpIHsNCiAgICAg
ICAgICAgIGMuYmluZFJlYWR5KCk7DQogICAgICAgICAgICBpZiAoYy5pc1Jl
YWR5KSBhLmNhbGwocywgYyk7DQogICAgICAgICAgICBlbHNlIFEgJiYgUS5w
dXNoKGEpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAgICAgfSwN
CiAgICAgICAgZXE6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICByZXR1
cm4gYSA9M0Q9M0Q9M0QgLTEgPyB0aGlzLnNsaWNlKGEpIDogdGhpcy5zbGlj
ZShhLCArYSArID0NCjEpDQogICAgICAgIH0sDQogICAgICAgIGZpcnN0OiBm
dW5jdGlvbiAoKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5lcSgwKQ0K
ICAgICAgICB9LA0KICAgICAgICBsYXN0OiBmdW5jdGlvbiAoKSB7DQogICAg
ICAgICAgICByZXR1cm4gdGhpcy5lcSgtMSkNCiAgICAgICAgfSwNCiAgICAg
ICAgc2xpY2U6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHJldHVybiB0
aGlzLnB1c2hTdGFjayhSLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksICJzbGlj
ZSIsID0NClIuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSkNCiAgICAgICAg
fSwNCiAgICAgICAgbWFwOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKGMubWFwKHRoaXMsIGZ1bmN0aW9uIChi
LCBkKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGEuY2FsbChiLCBkLCBi
KQ0KICAgICAgICAgICAgfSkpDQogICAgICAgIH0sDQogICAgICAgIGVuZDog
ZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldk9i
amVjdCB8fCBjKG51bGwpDQogICAgICAgIH0sDQogICAgICAgIHB1c2g6IGJh
LA0KICAgICAgICBzb3J0OiBbXS5zb3J0LA0KICAgICAgICBzcGxpY2U6IFtd
LnNwbGljZQ0KICAgIH07DQogICAgYy5mbi5pbml0LnByb3RvdHlwZSA9M0Qg
Yy5mbjsNCiAgICBjLmV4dGVuZCA9M0QgYy5mbi5leHRlbmQgPTNEIGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgdmFyIGEgPTNEIGFyZ3VtZW50c1swXSB8fCB7
fSwNCiAgICAgICAgICAgIGIgPTNEIDEsDQogICAgICAgICAgICBkID0zRCBh
cmd1bWVudHMubGVuZ3RoLA0KICAgICAgICAgICAgZiA9M0QgZmFsc2UsDQog
ICAgICAgICAgICBlLCBqLCBpLCBvOw0KICAgICAgICBpZiAodHlwZW9mIGEg
PTNEPTNEPTNEICJib29sZWFuIikgew0KICAgICAgICAgICAgZiA9M0QgYTsN
CiAgICAgICAgICAgIGEgPTNEIGFyZ3VtZW50c1sxXSB8fCB7fTsNCiAgICAg
ICAgICAgIGIgPTNEIDINCiAgICAgICAgfQ0KICAgICAgICBpZiAodHlwZW9m
IGEgIT0zRD0zRCAib2JqZWN0IiAmJiAhYy5pc0Z1bmN0aW9uKGEpKSBhID0z
RCB7fTsNCiAgICAgICAgaWYgKGQgPTNEPTNEPTNEIGIpIHsNCiAgICAgICAg
ICAgIGEgPTNEIHRoaXM7DQogICAgICAgICAgICAtLWINCiAgICAgICAgfQ0K
ICAgICAgICBmb3IgKDsgYiA8IGQ7IGIrKykgaWYgKChlID0zRCBhcmd1bWVu
dHNbYl0pICE9M0QgbnVsbCkgZm9yIChqIGluID0NCmUpIHsNCiAgICAgICAg
ICAgIGkgPTNEIGFbal07DQogICAgICAgICAgICBvID0zRCBlW2pdOw0KICAg
ICAgICAgICAgaWYgKGEgIT0zRD0zRCBvKSBpZiAoZiAmJiBvICYmIChjLmlz
UGxhaW5PYmplY3QobykgfHwgPQ0KYy5pc0FycmF5KG8pKSkgew0KICAgICAg
ICAgICAgICAgIGkgPTNEIGkgJiYgKGMuaXNQbGFpbk9iamVjdChpKSB8fCBj
LmlzQXJyYXkoaSkpID8gaSA6ID0NCmMuaXNBcnJheShvKSA/IFtdIDoge307
DQogICAgICAgICAgICAgICAgYVtqXSA9M0QgYy5leHRlbmQoZiwgaSwgbykN
CiAgICAgICAgICAgIH0gZWxzZSBpZiAobyAhPTNEPTNEIHcpIGFbal0gPTNE
IG8NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gYQ0KICAgIH07DQogICAg
Yy5leHRlbmQoew0KICAgICAgICBub0NvbmZsaWN0OiBmdW5jdGlvbiAoYSkg
ew0KICAgICAgICAgICAgQS4kID0zRCBTYTsNCiAgICAgICAgICAgIGlmIChh
KSBBLmpRdWVyeSA9M0QgUmE7DQogICAgICAgICAgICByZXR1cm4gYw0KICAg
ICAgICB9LA0KICAgICAgICBpc1JlYWR5OiBmYWxzZSwNCiAgICAgICAgcmVh
ZHk6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGlmICghYy5pc1JlYWR5
KSB7DQogICAgICAgICAgICAgICAgaWYgKCFzLmJvZHkpIHJldHVybiBzZXRU
aW1lb3V0KGMucmVhZHksIDEzKTsNCiAgICAgICAgICAgICAgICBjLmlzUmVh
ZHkgPTNEIHRydWU7DQogICAgICAgICAgICAgICAgaWYgKFEpIHsNCiAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgYSwgYiA9M0QgMDsgYSA9M0QgUVti
KytdOykgYS5jYWxsKHMsIGMpOw0KICAgICAgICAgICAgICAgICAgICBRID0z
RCBudWxsDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGMu
Zm4udHJpZ2dlckhhbmRsZXIgJiYgYyhzKS50cmlnZ2VySGFuZGxlcigicmVh
ZHkiKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBiaW5k
UmVhZHk6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGlmICgheGEpIHsN
CiAgICAgICAgICAgICAgICB4YSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAg
ICBpZiAocy5yZWFkeVN0YXRlID0zRD0zRD0zRCAiY29tcGxldGUiKSByZXR1
cm4gYy5yZWFkeSgpOw0KICAgICAgICAgICAgICAgIGlmIChzLmFkZEV2ZW50
TGlzdGVuZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgcy5hZGRFdmVudExp
c3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgTCwgZmFsc2UpOw0KICAgICAg
ICAgICAgICAgICAgICBBLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBjLnJl
YWR5LCBmYWxzZSkNCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMuYXR0
YWNoRXZlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgcy5hdHRhY2hFdmVu
dCgib25yZWFkeXN0YXRlY2hhbmdlIiwgTCk7DQogICAgICAgICAgICAgICAg
ICAgIEEuYXR0YWNoRXZlbnQoIm9ubG9hZCIsIGMucmVhZHkpOw0KICAgICAg
ICAgICAgICAgICAgICB2YXIgYSA9M0QgZmFsc2U7DQogICAgICAgICAgICAg
ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhID0zRCBB
LmZyYW1lRWxlbWVudCA9M0Q9M0QgbnVsbA0KICAgICAgICAgICAgICAgICAg
ICB9IGNhdGNoIChiKSB7fQ0KICAgICAgICAgICAgICAgICAgICBzLmRvY3Vt
ZW50RWxlbWVudC5kb1Njcm9sbCAmJiBhICYmIG1hKCkNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGlz
RnVuY3Rpb246IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICByZXR1cm4g
JC5jYWxsKGEpID0zRD0zRD0zRCAiW29iamVjdCBGdW5jdGlvbl0iDQogICAg
ICAgIH0sDQogICAgICAgIGlzQXJyYXk6IGZ1bmN0aW9uIChhKSB7DQogICAg
ICAgICAgICByZXR1cm4gJC5jYWxsKGEpID0zRD0zRD0zRCAiW29iamVjdCBB
cnJheV0iDQogICAgICAgIH0sDQogICAgICAgIGlzUGxhaW5PYmplY3Q6IGZ1
bmN0aW9uIChhKSB7DQogICAgICAgICAgICBpZiAoIWEgfHwgJC5jYWxsKGEp
ICE9M0Q9M0QgIltvYmplY3QgT2JqZWN0XSIgfHwgYS5ub2RlVHlwZSA9DQp8
fCBhLnNldEludGVydmFsKSByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICBp
ZiAoYS5jb25zdHJ1Y3RvciAmJiAhYWEuY2FsbChhLCAiY29uc3RydWN0b3Ii
KSAmJiA9DQohYWEuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgImlz
UHJvdG90eXBlT2YiKSkgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgdmFy
IGI7DQogICAgICAgICAgICBmb3IgKGIgaW4gYSk7DQogICAgICAgICAgICBy
ZXR1cm4gYiA9M0Q9M0Q9M0QgdyB8fCBhYS5jYWxsKGEsIGIpDQogICAgICAg
IH0sDQogICAgICAgIGlzRW1wdHlPYmplY3Q6IGZ1bmN0aW9uIChhKSB7DQog
ICAgICAgICAgICBmb3IgKHZhciBiIGluIGEpIHJldHVybiBmYWxzZTsNCiAg
ICAgICAgICAgIHJldHVybiB0cnVlDQogICAgICAgIH0sDQogICAgICAgIGVy
cm9yOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgdGhyb3cgYTsNCiAg
ICAgICAgfSwNCiAgICAgICAgcGFyc2VKU09OOiBmdW5jdGlvbiAoYSkgew0K
ICAgICAgICAgICAgaWYgKHR5cGVvZiBhICE9M0Q9M0QgInN0cmluZyIgfHwg
IWEpIHJldHVybiBudWxsOw0KICAgICAgICAgICAgYSA9M0QgYy50cmltKGEp
Ow0KICAgICAgICAgICAgaWYgPQ0KKC9eW1xdLDp7fVxzXSokLy50ZXN0KGEu
cmVwbGFjZSgvXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9n
LCA9DQoiQCIpLnJlcGxhY2UoLyJbXiJcXFxuXHJdKiJ8dHJ1ZXxmYWxzZXxu
dWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1bK1wtXT9cPQ0KZCspPy9nLCAi
XSIpLnJlcGxhY2UoLyg/Ol58OnwsKSg/OlxzKlxbKSsvZywgIiIpKSkgcmV0
dXJuIEEuSlNPTiAmJiA9DQpBLkpTT04ucGFyc2UgPyBBLkpTT04ucGFyc2Uo
YSkgOiAobmV3IEZ1bmN0aW9uKCJyZXR1cm4gIiArIGEpKSgpOw0KICAgICAg
ICAgICAgZWxzZSBjLmVycm9yKCJJbnZhbGlkIEpTT046ICIgKyBhKQ0KICAg
ICAgICB9LA0KICAgICAgICBub29wOiBmdW5jdGlvbiAoKSB7fSwNCiAgICAg
ICAgZ2xvYmFsRXZhbDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIGlm
IChhICYmIFZhLnRlc3QoYSkpIHsNCiAgICAgICAgICAgICAgICB2YXIgYiA9
M0Qgcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdIHx8ID0NCnMu
ZG9jdW1lbnRFbGVtZW50LA0KICAgICAgICAgICAgICAgICAgICBkID0zRCBz
LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOw0KICAgICAgICAgICAgICAgIGQu
dHlwZSA9M0QgInRleHQvamF2YXNjcmlwdCI7DQogICAgICAgICAgICAgICAg
aWYgKGMuc3VwcG9ydC5zY3JpcHRFdmFsKSA9DQpkLmFwcGVuZENoaWxkKHMu
Y3JlYXRlVGV4dE5vZGUoYSkpOw0KICAgICAgICAgICAgICAgIGVsc2UgZC50
ZXh0ID0zRCBhOw0KICAgICAgICAgICAgICAgIGIuaW5zZXJ0QmVmb3JlKGQs
IGIuZmlyc3RDaGlsZCk7DQogICAgICAgICAgICAgICAgYi5yZW1vdmVDaGls
ZChkKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBub2Rl
TmFtZTogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIHJldHVybiBh
Lm5vZGVOYW1lICYmIGEubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9M0Q9M0Q9
M0QgPQ0KYi50b1VwcGVyQ2FzZSgpDQogICAgICAgIH0sDQogICAgICAgIGVh
Y2g6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICB2YXIgZiwg
ZSA9M0QgMCwNCiAgICAgICAgICAgICAgICBqID0zRCBhLmxlbmd0aCwNCiAg
ICAgICAgICAgICAgICBpID0zRCBqID0zRD0zRD0zRCB3IHx8IGMuaXNGdW5j
dGlvbihhKTsNCiAgICAgICAgICAgIGlmIChkKSBpZiAoaSkgZm9yIChmIGlu
IGEpIHsNCiAgICAgICAgICAgICAgICBpZiAoYi5hcHBseShhW2ZdLCBkKSA9
M0Q9M0Q9M0QgZmFsc2UpIGJyZWFrDQogICAgICAgICAgICB9IGVsc2UgZm9y
ICg7IGUgPCBqOykgew0KICAgICAgICAgICAgICAgIGlmIChiLmFwcGx5KGFb
ZSsrXSwgZCkgPTNEPTNEPTNEIGZhbHNlKSBicmVhaw0KICAgICAgICAgICAg
fSBlbHNlIGlmIChpKSBmb3IgKGYgaW4gYSkgew0KICAgICAgICAgICAgICAg
IGlmIChiLmNhbGwoYVtmXSwgZiwgYVtmXSkgPTNEPTNEPTNEIGZhbHNlKSBi
cmVhaw0KICAgICAgICAgICAgfSBlbHNlIGZvciAoZCA9M0QgYVswXTsgZSA8
IGogJiYgYi5jYWxsKGQsIGUsIGQpICE9M0Q9M0QgPQ0KZmFsc2U7IGQgPTNE
IGFbKytlXSk7DQogICAgICAgICAgICByZXR1cm4gYQ0KICAgICAgICB9LA0K
ICAgICAgICB0cmltOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0
dXJuIChhIHx8ICIiKS5yZXBsYWNlKFdhLCAiIikNCiAgICAgICAgfSwNCiAg
ICAgICAgbWFrZUFycmF5OiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAg
ICAgYiA9M0QgYiB8fCBbXTsNCiAgICAgICAgICAgIGlmIChhICE9M0QgbnVs
bCkgYS5sZW5ndGggPTNEPTNEIG51bGwgfHwgdHlwZW9mIGEgPTNEPTNEPTNE
ID0NCiJzdHJpbmciIHx8IGMuaXNGdW5jdGlvbihhKSB8fCB0eXBlb2YgYSAh
PTNEPTNEICJmdW5jdGlvbiIgJiYgPQ0KYS5zZXRJbnRlcnZhbCA/IGJhLmNh
bGwoYiwgYSkgOiBjLm1lcmdlKGIsIGEpOw0KICAgICAgICAgICAgcmV0dXJu
IGINCiAgICAgICAgfSwNCiAgICAgICAgaW5BcnJheTogZnVuY3Rpb24gKGEs
IGIpIHsNCiAgICAgICAgICAgIGlmIChiLmluZGV4T2YpIHJldHVybiBiLmlu
ZGV4T2YoYSk7DQogICAgICAgICAgICBmb3IgKHZhciBkID0zRCAwLCBmID0z
RCBiLmxlbmd0aDsgZCA8IGY7IGQrKykgaWYgKGJbZF0gPQ0KPTNEPTNEPTNE
IGEpIHJldHVybiBkOw0KICAgICAgICAgICAgcmV0dXJuIC0xDQogICAgICAg
IH0sDQogICAgICAgIG1lcmdlOiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAg
ICAgICAgdmFyIGQgPTNEIGEubGVuZ3RoLA0KICAgICAgICAgICAgICAgIGYg
PTNEIDA7DQogICAgICAgICAgICBpZiAodHlwZW9mIGIubGVuZ3RoID0zRD0z
RD0zRCAibnVtYmVyIikgZm9yICh2YXIgZSA9M0QgPQ0KYi5sZW5ndGg7IGYg
PCBlOyBmKyspIGFbZCsrXSA9M0QgYltmXTsNCiAgICAgICAgICAgIGVsc2Ug
Zm9yICg7IGJbZl0gIT0zRD0zRCB3OykgYVtkKytdID0zRCBiW2YrK107DQog
ICAgICAgICAgICBhLmxlbmd0aCA9M0QgZDsNCiAgICAgICAgICAgIHJldHVy
biBhDQogICAgICAgIH0sDQogICAgICAgIGdyZXA6IGZ1bmN0aW9uIChhLCBi
LCBkKSB7DQogICAgICAgICAgICBmb3IgKHZhciBmID0zRCBbXSwgZSA9M0Qg
MCwgaiA9M0QgYS5sZW5ndGg7IGUgPCBqOyBlKyspIWQgPQ0KIT0zRD0zRCAh
YihhW2VdLCBlKSAmJiBmLnB1c2goYVtlXSk7DQogICAgICAgICAgICByZXR1
cm4gZg0KICAgICAgICB9LA0KICAgICAgICBtYXA6IGZ1bmN0aW9uIChhLCBi
LCBkKSB7DQogICAgICAgICAgICBmb3IgKHZhciBmID0zRCBbXSwgZSwgaiA9
M0QgMCwgaSA9M0QgYS5sZW5ndGg7IGogPCBpOyBqKyspIHsNCiAgICAgICAg
ICAgICAgICBlID0zRCBiKGFbal0sIGosIGQpOw0KICAgICAgICAgICAgICAg
IGlmIChlICE9M0QgbnVsbCkgZltmLmxlbmd0aF0gPTNEIGUNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIHJldHVybiBmLmNvbmNhdC5hcHBseShbXSwg
ZikNCiAgICAgICAgfSwNCiAgICAgICAgZ3VpZDogMSwNCiAgICAgICAgcHJv
eHk6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICBpZiAoYXJn
dW1lbnRzLmxlbmd0aCA9M0Q9M0Q9M0QgMikgaWYgKHR5cGVvZiBiID0zRD0z
RD0zRCA9DQoic3RyaW5nIikgew0KICAgICAgICAgICAgICAgIGQgPTNEIGE7
DQogICAgICAgICAgICAgICAgYSA9M0QgZFtiXTsNCiAgICAgICAgICAgICAg
ICBiID0zRCB3DQogICAgICAgICAgICB9IGVsc2UgaWYgKGIgJiYgIWMuaXNG
dW5jdGlvbihiKSkgew0KICAgICAgICAgICAgICAgIGQgPTNEIGI7DQogICAg
ICAgICAgICAgICAgYiA9M0Qgdw0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgaWYgKCFiICYmIGEpIGIgPTNEIGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
ICAgICAgICByZXR1cm4gYS5hcHBseShkIHx8IHRoaXMsIGFyZ3VtZW50cykN
CiAgICAgICAgICAgIH07DQogICAgICAgICAgICBpZiAoYSkgYi5ndWlkID0z
RCBhLmd1aWQgPTNEIGEuZ3VpZCB8fCBiLmd1aWQgfHwgYy5ndWlkKys7DQog
ICAgICAgICAgICByZXR1cm4gYg0KICAgICAgICB9LA0KICAgICAgICB1YU1h
dGNoOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgYSA9M0QgYS50b0xv
d2VyQ2FzZSgpOw0KICAgICAgICAgICAgYSA9M0QgLyh3ZWJraXQpWyBcL10o
W1x3Ll0rKS8uZXhlYyhhKSB8fCA9DQovKG9wZXJhKSg/Oi4qdmVyc2lvbik/
WyBcL10oW1x3Ll0rKS8uZXhlYyhhKSB8fCAvKG1zaWUpID0NCihbXHcuXSsp
Ly5leGVjKGEpIHx8ICEvY29tcGF0aWJsZS8udGVzdChhKSAmJiAvKG1vemls
bGEpKD86Lio/ID0NCnJ2OihbXHcuXSspKT8vLmV4ZWMoYSkgfHwgW107DQog
ICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgIGJyb3dzZXI6
IGFbMV0gfHwgIiIsDQogICAgICAgICAgICAgICAgdmVyc2lvbjogYVsyXSB8
fCAiMCINCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgYnJv
d3Nlcjoge30NCiAgICB9KTsNCiAgICBQID0zRCBjLnVhTWF0Y2goUCk7DQog
ICAgaWYgKFAuYnJvd3Nlcikgew0KICAgICAgICBjLmJyb3dzZXJbUC5icm93
c2VyXSA9M0QgdHJ1ZTsNCiAgICAgICAgYy5icm93c2VyLnZlcnNpb24gPTNE
IFAudmVyc2lvbg0KICAgIH0NCiAgICBpZiAoYy5icm93c2VyLndlYmtpdCkg
Yy5icm93c2VyLnNhZmFyaSA9M0QgdHJ1ZTsNCiAgICBpZiAoeWEpIGMuaW5B
cnJheSA9M0QgZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgcmV0dXJuIHlh
LmNhbGwoYiwgYSkNCiAgICB9Ow0KICAgIFQgPTNEIGMocyk7DQogICAgaWYg
KHMuYWRkRXZlbnRMaXN0ZW5lcikgTCA9M0QgZnVuY3Rpb24gKCkgew0KICAg
ICAgICBzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQi
LCBMLCBmYWxzZSk7DQogICAgICAgIGMucmVhZHkoKQ0KICAgIH07DQogICAg
ZWxzZSBpZiAocy5hdHRhY2hFdmVudCkgTCA9M0QgZnVuY3Rpb24gKCkgew0K
ICAgICAgICBpZiAocy5yZWFkeVN0YXRlID0zRD0zRD0zRCAiY29tcGxldGUi
KSB7DQogICAgICAgICAgICBzLmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVj
aGFuZ2UiLCBMKTsNCiAgICAgICAgICAgIGMucmVhZHkoKQ0KICAgICAgICB9
DQogICAgfTsNCiAgICAoZnVuY3Rpb24gKCkgew0KICAgICAgICBjLnN1cHBv
cnQgPTNEIHt9Ow0KICAgICAgICB2YXIgYSA9M0Qgcy5kb2N1bWVudEVsZW1l
bnQsDQogICAgICAgICAgICBiID0zRCBzLmNyZWF0ZUVsZW1lbnQoInNjcmlw
dCIpLA0KICAgICAgICAgICAgZCA9M0Qgcy5jcmVhdGVFbGVtZW50KCJkaXYi
KSwNCiAgICAgICAgICAgIGYgPTNEICJzY3JpcHQiICsgSigpOw0KICAgICAg
ICBkLnN0eWxlLmRpc3BsYXkgPTNEICJub25lIjsNCiAgICAgICAgZC5pbm5l
ckhUTUwgPTNEICIgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0z
RCcvYScgPQ0Kc3R5bGU9M0QnY29sb3I6cmVkO2Zsb2F0OmxlZnQ7b3BhY2l0
eTouNTU7Jz5hPC9hPjxpbnB1dCA9DQp0eXBlPTNEJ2NoZWNrYm94Jy8+IjsN
CiAgICAgICAgdmFyIGUgPTNEIGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioi
KSwNCiAgICAgICAgICAgIGogPTNEIGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImEiKVswXTsNCiAgICAgICAgaWYgKCEoIWUgfHwgIWUubGVuZ3RoIHx8ICFq
KSkgew0KICAgICAgICAgICAgYy5zdXBwb3J0ID0zRCB7DQogICAgICAgICAg
ICAgICAgbGVhZGluZ1doaXRlc3BhY2U6IGQuZmlyc3RDaGlsZC5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgMywNCiAgICAgICAgICAgICAgICB0Ym9keTogIWQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLA0KICAgICAgICAg
ICAgICAgIGh0bWxTZXJpYWxpemU6ICEhIGQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImxpbmsiKS5sZW5ndGgsDQogICAgICAgICAgICAgICAgc3R5bGU6IC9y
ZWQvLnRlc3Qoai5nZXRBdHRyaWJ1dGUoInN0eWxlIikpLA0KICAgICAgICAg
ICAgICAgIGhyZWZOb3JtYWxpemVkOiBqLmdldEF0dHJpYnV0ZSgiaHJlZiIp
ID0zRD0zRD0zRCAiL2EiLA0KICAgICAgICAgICAgICAgIG9wYWNpdHk6IC9e
MC41NSQvLnRlc3Qoai5zdHlsZS5vcGFjaXR5KSwNCiAgICAgICAgICAgICAg
ICBjc3NGbG9hdDogISEgai5zdHlsZS5jc3NGbG9hdCwNCiAgICAgICAgICAg
ICAgICBjaGVja09uOiBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIp
WzBdLnZhbHVlID0NCj0zRD0zRD0zRCAib24iLA0KICAgICAgICAgICAgICAg
IG9wdFNlbGVjdGVkOiA9DQpzLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFw
cGVuZENoaWxkKHMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLnNlbGVjdGVk
PQ0KLA0KICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ID0NCmQucmVtb3Zl
Q2hpbGQoZC5hcHBlbmRDaGlsZChzLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSku
cGFyZW50Tm9kZSA9DQo9M0Q9M0Q9M0QgbnVsbCwNCiAgICAgICAgICAgICAg
ICBkZWxldGVFeHBhbmRvOiB0cnVlLA0KICAgICAgICAgICAgICAgIGNoZWNr
Q2xvbmU6IGZhbHNlLA0KICAgICAgICAgICAgICAgIHNjcmlwdEV2YWw6IGZh
bHNlLA0KICAgICAgICAgICAgICAgIG5vQ2xvbmVFdmVudDogdHJ1ZSwNCiAg
ICAgICAgICAgICAgICBib3hNb2RlbDogbnVsbA0KICAgICAgICAgICAgfTsN
CiAgICAgICAgICAgIGIudHlwZSA9M0QgInRleHQvamF2YXNjcmlwdCI7DQog
ICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGIuYXBwZW5kQ2hp
bGQocy5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIgKyBmICsgIj0zRDE7Iikp
DQogICAgICAgICAgICB9IGNhdGNoIChpKSB7fQ0KICAgICAgICAgICAgYS5p
bnNlcnRCZWZvcmUoYiwgYS5maXJzdENoaWxkKTsNCiAgICAgICAgICAgIGlm
IChBW2ZdKSB7DQogICAgICAgICAgICAgICAgYy5zdXBwb3J0LnNjcmlwdEV2
YWwgPTNEIHRydWU7DQogICAgICAgICAgICAgICAgZGVsZXRlIEFbZl0NCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAg
ICAgZGVsZXRlIGIudGVzdA0KICAgICAgICAgICAgfSBjYXRjaCAobykgew0K
ICAgICAgICAgICAgICAgIGMuc3VwcG9ydC5kZWxldGVFeHBhbmRvID0zRCBm
YWxzZQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYS5yZW1vdmVDaGls
ZChiKTsNCiAgICAgICAgICAgIGlmIChkLmF0dGFjaEV2ZW50ICYmIGQuZmly
ZUV2ZW50KSB7DQogICAgICAgICAgICAgICAgZC5hdHRhY2hFdmVudCgib25j
bGljayIsIGZ1bmN0aW9uIGsoKSB7DQogICAgICAgICAgICAgICAgICAgIGMu
c3VwcG9ydC5ub0Nsb25lRXZlbnQgPTNEDQogICAgICAgICAgICAgICAgICAg
IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICBkLmRldGFjaEV2ZW50KCJv
bmNsaWNrIiwgaykNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAg
ICAgICBkLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZCA9M0Qgcy5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsNCiAgICAgICAgICAgIGQuaW5uZXJIVE1MID0zRCAiPGlu
cHV0IHR5cGU9M0QncmFkaW8nIG5hbWU9M0QncmFkaW90ZXN0JyA9DQpjaGVj
a2VkPTNEJ2NoZWNrZWQnLz4iOw0KICAgICAgICAgICAgYSA9M0Qgcy5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7DQogICAgICAgICAgICBhLmFwcGVuZENo
aWxkKGQuZmlyc3RDaGlsZCk7DQogICAgICAgICAgICBjLnN1cHBvcnQuY2hl
Y2tDbG9uZSA9M0QgPQ0KYS5jbG9uZU5vZGUodHJ1ZSkuY2xvbmVOb2RlKHRy
dWUpLmxhc3RDaGlsZC5jaGVja2VkOw0KICAgICAgICAgICAgYyhmdW5jdGlv
biAoKSB7DQogICAgICAgICAgICAgICAgdmFyIGsgPTNEIHMuY3JlYXRlRWxl
bWVudCgiZGl2Iik7DQogICAgICAgICAgICAgICAgay5zdHlsZS53aWR0aCA9
M0Qgay5zdHlsZS5wYWRkaW5nTGVmdCA9M0QgIjFweCI7DQogICAgICAgICAg
ICAgICAgcy5ib2R5LmFwcGVuZENoaWxkKGspOw0KICAgICAgICAgICAgICAg
IGMuYm94TW9kZWwgPTNEIGMuc3VwcG9ydC5ib3hNb2RlbCA9M0Qgay5vZmZz
ZXRXaWR0aCA9DQo9M0Q9M0Q9M0QgMjsNCiAgICAgICAgICAgICAgICBzLmJv
ZHkucmVtb3ZlQ2hpbGQoaykuc3R5bGUuZGlzcGxheSA9M0QgIm5vbmUiDQog
ICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGEgPTNEIGZ1bmN0aW9uIChr
KSB7DQogICAgICAgICAgICAgICAgdmFyIG4gPTNEDQogICAgICAgICAgICAg
ICAgcy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICBr
ID0zRCAib24iICsgazsNCiAgICAgICAgICAgICAgICB2YXIgciA9M0QgayBp
biBuOw0KICAgICAgICAgICAgICAgIGlmICghcikgew0KICAgICAgICAgICAg
ICAgICAgICBuLnNldEF0dHJpYnV0ZShrLCAicmV0dXJuOyIpOw0KICAgICAg
ICAgICAgICAgICAgICByID0zRCB0eXBlb2YgbltrXSA9M0Q9M0Q9M0QgImZ1
bmN0aW9uIg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBy
ZXR1cm4gcg0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIGMuc3VwcG9y
dC5zdWJtaXRCdWJibGVzID0zRCBhKCJzdWJtaXQiKTsNCiAgICAgICAgICAg
IGMuc3VwcG9ydC5jaGFuZ2VCdWJibGVzID0zRCBhKCJjaGFuZ2UiKTsNCiAg
ICAgICAgICAgIGEgPTNEIGIgPTNEIGQgPTNEIGUgPTNEIGogPTNEIG51bGwN
CiAgICAgICAgfQ0KICAgIH0pKCk7DQogICAgYy5wcm9wcyA9M0Qgew0KICAg
ICAgICAiZm9yIjogImh0bWxGb3IiLA0KICAgICAgICAiY2xhc3MiOiAiY2xh
c3NOYW1lIiwNCiAgICAgICAgcmVhZG9ubHk6ICJyZWFkT25seSIsDQogICAg
ICAgIG1heGxlbmd0aDogIm1heExlbmd0aCIsDQogICAgICAgIGNlbGxzcGFj
aW5nOiAiY2VsbFNwYWNpbmciLA0KICAgICAgICByb3dzcGFuOiAicm93U3Bh
biIsDQogICAgICAgIGNvbHNwYW46ICJjb2xTcGFuIiwNCiAgICAgICAgdGFi
aW5kZXg6ICJ0YWJJbmRleCIsDQogICAgICAgIHVzZW1hcDogInVzZU1hcCIs
DQogICAgICAgIGZyYW1lYm9yZGVyOiAiZnJhbWVCb3JkZXIiDQogICAgfTsN
CiAgICB2YXIgRyA9M0QgImpRdWVyeSIgKyBKKCksDQogICAgICAgIFlhID0z
RCAwLA0KICAgICAgICB6YSA9M0Qge307DQogICAgYy5leHRlbmQoew0KICAg
ICAgICBjYWNoZToge30sDQogICAgICAgIGV4cGFuZG86IEcsDQogICAgICAg
IG5vRGF0YTogew0KICAgICAgICAgICAgZW1iZWQ6IHRydWUsDQogICAgICAg
ICAgICBvYmplY3Q6IHRydWUsDQogICAgICAgICAgICBhcHBsZXQ6IHRydWUN
CiAgICAgICAgfSwNCiAgICAgICAgZGF0YTogZnVuY3Rpb24gKGEsIGIsIGQp
IHsNCiAgICAgICAgICAgIGlmICghKGEubm9kZU5hbWUgJiYgYy5ub0RhdGFb
YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkpIHsNCiAgICAgICAgICAgICAg
ICBhID0zRCBhID0zRD0zRCBBID8gemEgOiBhOw0KICAgICAgICAgICAgICAg
IHZhciBmID0zRCBhW0ddLA0KICAgICAgICAgICAgICAgICAgICBlID0zRCBj
LmNhY2hlOw0KICAgICAgICAgICAgICAgIGlmICghZiAmJiB0eXBlb2YgYiA9
M0Q9M0Q9M0QgInN0cmluZyIgJiYgZCA9M0Q9M0Q9M0QgdykgPQ0KcmV0dXJu
IG51bGw7DQogICAgICAgICAgICAgICAgZiB8fCAoZiA9M0QgKytZYSk7DQog
ICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBiID0zRD0zRD0zRCAib2JqZWN0
Iikgew0KICAgICAgICAgICAgICAgICAgICBhW0ddID0zRCBmOw0KICAgICAg
ICAgICAgICAgICAgICBlW2ZdID0zRCBjLmV4dGVuZCh0cnVlLCB7fSwgYikN
CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFlW2ZdKSB7DQogICAgICAg
ICAgICAgICAgICAgIGFbR10gPTNEIGY7DQogICAgICAgICAgICAgICAgICAg
IGVbZl0gPTNEIHt9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIGEgPTNEIGVbZl07DQogICAgICAgICAgICAgICAgaWYgKGQgIT0zRD0z
RCB3KSBhW2JdID0zRCBkOw0KICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
b2YgYiA9M0Q9M0Q9M0QgInN0cmluZyIgPyBhW2JdIDogYQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9LA0KICAgICAgICByZW1vdmVEYXRhOiBmdW5jdGlv
biAoYSwgYikgew0KICAgICAgICAgICAgaWYgKCEoYS5ub2RlTmFtZSAmJiBj
Lm5vRGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSkgew0KICAgICAg
ICAgICAgICAgIGEgPTNEIGEgPTNEPTNEIEEgPyB6YSA6IGE7DQogICAgICAg
ICAgICAgICAgdmFyIGQgPTNEIGFbR10sDQogICAgICAgICAgICAgICAgICAg
IGYgPTNEIGMuY2FjaGUsDQogICAgICAgICAgICAgICAgICAgIGUgPTNEIGZb
ZF07DQogICAgICAgICAgICAgICAgaWYgKGIpIHsNCiAgICAgICAgICAgICAg
ICAgICAgaWYgKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSBlW2JdOw0KICAgICAgICAgICAgICAgICAgICAgICAgYy5pc0VtcHR5T2Jq
ZWN0KGUpICYmIGMucmVtb3ZlRGF0YShhKQ0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg
ICAgICAgaWYgKGMuc3VwcG9ydC5kZWxldGVFeHBhbmRvKSBkZWxldGUgYVtj
LmV4cGFuZG9dOw0KICAgICAgICAgICAgICAgICAgICBlbHNlIGEucmVtb3Zl
QXR0cmlidXRlICYmID0NCmEucmVtb3ZlQXR0cmlidXRlKGMuZXhwYW5kbyk7
DQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmW2RdDQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSk7DQog
ICAgYy5mbi5leHRlbmQoew0KICAgICAgICBkYXRhOiBmdW5jdGlvbiAoYSwg
Yikgew0KICAgICAgICAgICAgaWYgKHR5cGVvZiBhID0zRD0zRD0zRCAidW5k
ZWZpbmVkIiAmJiB0aGlzLmxlbmd0aCkgcmV0dXJuID0NCmMuZGF0YSh0aGlz
WzBdKTsNCiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBhID0zRD0zRD0z
RCAib2JqZWN0IikgcmV0dXJuID0NCnRoaXMuZWFjaChmdW5jdGlvbiAoKSB7
DQogICAgICAgICAgICAgICAgYy5kYXRhKHRoaXMsIGEpDQogICAgICAgICAg
ICB9KTsNCiAgICAgICAgICAgIHZhciBkID0zRCBhLnNwbGl0KCIuIik7DQog
ICAgICAgICAgICBkWzFdID0zRCBkWzFdID8gIi4iICsgZFsxXSA6ICIiOw0K
ICAgICAgICAgICAgaWYgKGIgPTNEPTNEPTNEIHcpIHsNCiAgICAgICAgICAg
ICAgICB2YXIgZiA9M0QgdGhpcy50cmlnZ2VySGFuZGxlcigiZ2V0RGF0YSIg
KyBkWzFdICsgIiEiLCA9DQpbZFswXV0pOw0KICAgICAgICAgICAgICAgIGlm
IChmID0zRD0zRD0zRCB3ICYmIHRoaXMubGVuZ3RoKSBmID0zRCBjLmRhdGEo
dGhpc1swXSwgPQ0KYSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGYgPTNE
PTNEPTNEIHcgJiYgZFsxXSA/IHRoaXMuZGF0YShkWzBdKSA6IGYNCiAgICAg
ICAgICAgIH0gZWxzZSByZXR1cm4gdGhpcy50cmlnZ2VyKCJzZXREYXRhIiAr
IGRbMV0gKyAiISIsIFtkWzBdLCA9DQpiXSkuZWFjaChmdW5jdGlvbiAoKSB7
DQogICAgICAgICAgICAgICAgYy5kYXRhKHRoaXMsIGEsIGIpDQogICAgICAg
ICAgICB9KQ0KICAgICAgICB9LA0KICAgICAgICByZW1vdmVEYXRhOiBmdW5j
dGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICAgICAgYy5yZW1vdmVEYXRhKHRoaXMs
IGEpDQogICAgICAgICAgICB9KQ0KICAgICAgICB9DQogICAgfSk7DQogICAg
Yy5leHRlbmQoew0KICAgICAgICBxdWV1ZTogZnVuY3Rpb24gKGEsIGIsIGQp
IHsNCiAgICAgICAgICAgIGlmIChhKSB7DQogICAgICAgICAgICAgICAgYiA9
M0QgKGIgfHwgImZ4IikgKyAicXVldWUiOw0KICAgICAgICAgICAgICAgIHZh
ciBmID0zRCBjLmRhdGEoYSwgYik7DQogICAgICAgICAgICAgICAgaWYgKCFk
KSByZXR1cm4gZiB8fCBbXTsNCiAgICAgICAgICAgICAgICBpZiAoIWYgfHwg
Yy5pc0FycmF5KGQpKSBmID0zRCBjLmRhdGEoYSwgYiwgPQ0KYy5tYWtlQXJy
YXkoZCkpOw0KICAgICAgICAgICAgICAgIGVsc2UgZi5wdXNoKGQpOw0KICAg
ICAgICAgICAgICAgIHJldHVybiBmDQogICAgICAgICAgICB9DQogICAgICAg
IH0sDQogICAgICAgIGRlcXVldWU6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAg
ICAgICAgICBiID0zRCBiIHx8ICJmeCI7DQogICAgICAgICAgICB2YXIgZCA9
M0QgYy5xdWV1ZShhLCBiKSwNCiAgICAgICAgICAgICAgICBmID0zRCBkLnNo
aWZ0KCk7DQogICAgICAgICAgICBpZiAoZiA9M0Q9M0Q9M0QgImlucHJvZ3Jl
c3MiKSBmID0zRCBkLnNoaWZ0KCk7DQogICAgICAgICAgICBpZiAoZikgew0K
ICAgICAgICAgICAgICAgIGIgPTNEPTNEPTNEICJmeCIgJiYgZC51bnNoaWZ0
KCJpbnByb2dyZXNzIik7DQogICAgICAgICAgICAgICAgZi5jYWxsKGEsIGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgYy5kZXF1ZXVlKGEs
IGIpDQogICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICAgIH0pOw0KICAgIGMuZm4uZXh0ZW5kKHsNCiAgICAgICAgcXVl
dWU6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBpZiAodHlwZW9m
IGEgIT0zRD0zRCAic3RyaW5nIikgew0KICAgICAgICAgICAgICAgIGIgPTNE
IGE7DQogICAgICAgICAgICAgICAgYSA9M0QgImZ4Ig0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgaWYgKGIgPTNEPTNEPTNEIHcpIHJldHVybiBjLnF1
ZXVlKHRoaXNbMF0sIGEpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgdmFyIGQgPTNEIGMu
cXVldWUodGhpcywgYSwgYik7DQogICAgICAgICAgICAgICAgYSA9M0Q9M0Q9
M0QgImZ4IiAmJiBkWzBdICE9M0Q9M0QgImlucHJvZ3Jlc3MiICYmID0NCmMu
ZGVxdWV1ZSh0aGlzLCBhKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwN
CiAgICAgICAgZGVxdWV1ZTogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAg
IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAg
ICAgIGMuZGVxdWV1ZSh0aGlzLCBhKQ0KICAgICAgICAgICAgfSkNCiAgICAg
ICAgfSwNCiAgICAgICAgZGVsYXk6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAg
ICAgICAgICBhID0zRCBjLmZ4ID8gYy5meC5zcGVlZHNbYV0gfHwgYSA6IGE7
DQogICAgICAgICAgICBiID0zRCBiIHx8ICJmeCI7DQogICAgICAgICAgICBy
ZXR1cm4gdGhpcy5xdWV1ZShiLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICAgICAgdmFyIGQgPTNEIHRoaXM7DQogICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIGMuZGVx
dWV1ZShkLCBiKQ0KICAgICAgICAgICAgICAgIH0sIGEpDQogICAgICAgICAg
ICB9KQ0KICAgICAgICB9LA0KICAgICAgICBjbGVhclF1ZXVlOiBmdW5jdGlv
biAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoYSB8fCAi
ZngiLCBbXSkNCiAgICAgICAgfQ0KICAgIH0pOw0KICAgIHZhciBBYSA9M0Qg
L1tcblx0XS9nLA0KICAgICAgICBjYSA9M0QgL1xzKy8sDQogICAgICAgIFph
ID0zRCAvXHIvZywNCiAgICAgICAgJGEgPTNEIC9ocmVmfHNyY3xzdHlsZS8s
DQogICAgICAgIGFiID0zRCAvKGJ1dHRvbnxpbnB1dCkvaSwNCiAgICAgICAg
YmIgPTNEIC8oYnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEp
L2ksDQogICAgICAgIGNiID0zRCAvXihhfGFyZWEpJC9pLA0KICAgICAgICBC
YSA9M0QgL3JhZGlvfGNoZWNrYm94LzsNCiAgICBjLmZuLmV4dGVuZCh7DQog
ICAgICAgIGF0dHI6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBy
ZXR1cm4gWCh0aGlzLCBhLCBiLCB0cnVlLCBjLmF0dHIpDQogICAgICAgIH0s
DQogICAgICAgIHJlbW92ZUF0dHI6IGZ1bmN0aW9uIChhKSB7DQogICAgICAg
ICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
ICAgICAgICBjLmF0dHIodGhpcywgYSwgIiIpOw0KICAgICAgICAgICAgICAg
IHRoaXMubm9kZVR5cGUgPTNEPTNEPTNEIDEgJiYgdGhpcy5yZW1vdmVBdHRy
aWJ1dGUoYSkNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAg
IGFkZENsYXNzOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgaWYgKGMu
aXNGdW5jdGlvbihhKSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAobikg
ew0KICAgICAgICAgICAgICAgIHZhciByID0zRCBjKHRoaXMpOw0KICAgICAg
ICAgICAgICAgIHIuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsIG4sIHIuYXR0cigi
Y2xhc3MiKSkpDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmIChh
ICYmIHR5cGVvZiBhID0zRD0zRD0zRCAic3RyaW5nIikgZm9yICh2YXIgYiA9
M0QgKGEgfHwgPQ0KIiIpLnNwbGl0KGNhKSwgZCA9M0QgMCwgZiA9M0QgdGhp
cy5sZW5ndGg7IGQgPCBmOyBkKyspIHsNCiAgICAgICAgICAgICAgICB2YXIg
ZSA9M0QgdGhpc1tkXTsNCiAgICAgICAgICAgICAgICBpZiAoZS5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgMSkgaWYgKGUuY2xhc3NOYW1lKSB7DQogICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGogPTNEICIgIiArIGUuY2xhc3NOYW1lICsg
IiAiLCBpID0zRCA9DQplLmNsYXNzTmFtZSwgbyA9M0QgMCwgayA9M0QgYi5s
ZW5ndGg7IG8gPCBrOyBvKyspIGlmIChqLmluZGV4T2YoIiAiICsgPQ0KYltv
XSArICIgIikgPCAwKSBpICs9M0QgIiAiICsgYltvXTsNCiAgICAgICAgICAg
ICAgICAgICAgZS5jbGFzc05hbWUgPTNEIGMudHJpbShpKQ0KICAgICAgICAg
ICAgICAgIH0gZWxzZSBlLmNsYXNzTmFtZSA9M0QgYQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAgICAgfSwNCiAgICAg
ICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBp
ZiAoYy5pc0Z1bmN0aW9uKGEpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
IChrKSB7DQogICAgICAgICAgICAgICAgdmFyIG4gPTNEIGModGhpcyk7DQog
ICAgICAgICAgICAgICAgbi5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcywgaywg
bi5hdHRyKCJjbGFzcyIpKSkNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAg
ICAgaWYgKGEgJiYgdHlwZW9mIGEgPTNEPTNEPTNEICJzdHJpbmciIHx8IGEg
PTNEPTNEPTNEIHcpIGZvciA9DQoodmFyIGIgPTNEIChhIHx8ICIiKS5zcGxp
dChjYSksIGQgPTNEIDAsIGYgPTNEIHRoaXMubGVuZ3RoOyBkIDwgZjsgZCsr
KSA9DQp7DQogICAgICAgICAgICAgICAgdmFyIGUgPTNEIHRoaXNbZF07DQog
ICAgICAgICAgICAgICAgaWYgKGUubm9kZVR5cGUgPTNEPTNEPTNEIDEgJiYg
ZS5jbGFzc05hbWUpIGlmIChhKSB7DQogICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIGogPTNEICgiICIgKyBlLmNsYXNzTmFtZSArICIgIikucmVwbGFj
ZShBYSwgPQ0KIiAiKSwgaSA9M0QgMCwgbyA9M0QgYi5sZW5ndGg7IGkgPCBv
OyBpKyspIGogPTNEIGoucmVwbGFjZSgiICIgKyBiW2ldICsgPQ0KIiAiLCAi
ICIpOw0KICAgICAgICAgICAgICAgICAgICBlLmNsYXNzTmFtZSA9M0QgYy50
cmltKGopDQogICAgICAgICAgICAgICAgfSBlbHNlIGUuY2xhc3NOYW1lID0z
RCAiIg0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXMN
CiAgICAgICAgfSwNCiAgICAgICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uIChh
LCBiKSB7DQogICAgICAgICAgICB2YXIgZCA9M0QgdHlwZW9mIGEsDQogICAg
ICAgICAgICAgICAgZiA9M0QgdHlwZW9mIGIgPTNEPTNEPTNEICJib29sZWFu
IjsNCiAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rpb24oYSkpIHJldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgICB2YXIg
aiA9M0QgYyh0aGlzKTsNCiAgICAgICAgICAgICAgICBqLnRvZ2dsZUNsYXNz
KGEuY2FsbCh0aGlzLCBlLCBqLmF0dHIoImNsYXNzIiksIGIpLCBiKQ0KICAg
ICAgICAgICAgfSk7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpZiAoZCA9M0Q9M0Q9M0Qg
InN0cmluZyIpIGZvciAodmFyIGUsIGogPTNEIDAsIGkgPTNEID0NCmModGhp
cyksIG8gPTNEIGIsIGsgPTNEIGEuc3BsaXQoY2EpOyBlID0zRCBrW2orK107
KSB7DQogICAgICAgICAgICAgICAgICAgIG8gPTNEIGYgPyBvIDogIWkuaGFz
Q2xhc3MoZSk7DQogICAgICAgICAgICAgICAgICAgIGlbbyA/ICJhZGRDbGFz
cyIgOiAicmVtb3ZlQ2xhc3MiXShlKQ0KICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoZCA9M0Q9M0Q9M0QgInVuZGVmaW5lZCIgfHwgZCA9M0Q9M0Q9M0Qg
PQ0KImJvb2xlYW4iKSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xh
c3NOYW1lICYmIGMuZGF0YSh0aGlzLCAiX19jbGFzc05hbWVfXyIsID0NCnRo
aXMuY2xhc3NOYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGFz
c05hbWUgPTNEDQogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1l
IHx8IGEgPTNEPTNEPTNEIGZhbHNlID8gIiIgOiA9DQpjLmRhdGEodGhpcywg
Il9fY2xhc3NOYW1lX18iKSB8fCAiIg0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIGhhc0NsYXNzOiBm
dW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgYSA9M0QgIiAiICsgYSArICIg
IjsNCiAgICAgICAgICAgIGZvciAodmFyIGIgPTNEIDAsIGQgPTNEIHRoaXMu
bGVuZ3RoOyBiIDwgZDsgYisrKSBpZiAoKCIgIiArID0NCnRoaXNbYl0uY2xh
c3NOYW1lICsgIiAiKS5yZXBsYWNlKEFhLCAiICIpLmluZGV4T2YoYSkgPiAt
MSkgcmV0dXJuIHRydWU7DQogICAgICAgICAgICByZXR1cm4gZmFsc2UNCiAg
ICAgICAgfSwNCiAgICAgICAgdmFsOiBmdW5jdGlvbiAoYSkgew0KICAgICAg
ICAgICAgaWYgKGEgPTNEPTNEPTNEIHcpIHsNCiAgICAgICAgICAgICAgICB2
YXIgYiA9M0QgdGhpc1swXTsNCiAgICAgICAgICAgICAgICBpZiAoYikgew0K
ICAgICAgICAgICAgICAgICAgICBpZiAoYy5ub2RlTmFtZShiLCAib3B0aW9u
IikpIHJldHVybiA9DQooYi5hdHRyaWJ1dGVzLnZhbHVlIHx8IHt9KS5zcGVj
aWZpZWQgPyBiLnZhbHVlIDogYi50ZXh0Ow0KICAgICAgICAgICAgICAgICAg
ICBpZiAoYy5ub2RlTmFtZShiLCAic2VsZWN0IikpIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBkID0zRCBiLnNlbGVjdGVkSW5kZXgsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZiA9M0QgW10sDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZSA9M0QgYi5vcHRpb25zOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgYiA9M0QgYi50eXBlID0zRD0zRD0zRCAic2VsZWN0
LW9uZSI7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA8IDApIHJl
dHVybiBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGogPTNE
IGIgPyBkIDogMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZCA9
M0QgYiA/IGQgKyAxIDogZS5sZW5ndGg7IGogPCBkOyBqKyspIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9M0QNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlW2pdOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpLnNlbGVjdGVkKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGEgPTNEIGMoaSkudmFsKCk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChiKSByZXR1cm4gYTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZi5wdXNoKGEpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoQmEudGVz
dChiLnR5cGUpICYmICFjLnN1cHBvcnQuY2hlY2tPbikgcmV0dXJuID0NCmIu
Z2V0QXR0cmlidXRlKCJ2YWx1ZSIpID0zRD0zRD0zRCBudWxsID8gIm9uIiA6
IGIudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoYi52YWx1
ZSB8fCAiIikucmVwbGFjZShaYSwgIiIpDQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgIHJldHVybiB3DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICB2YXIgbyA9M0QgYy5pc0Z1bmN0aW9uKGEpOw0KICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoaykgew0KICAgICAgICAg
ICAgICAgIHZhciBuID0zRCBjKHRoaXMpLA0KICAgICAgICAgICAgICAgICAg
ICByID0zRCBhOw0KICAgICAgICAgICAgICAgIGlmICh0aGlzLm5vZGVUeXBl
ID0zRD0zRD0zRCAxKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChvKSBy
ID0zRCBhLmNhbGwodGhpcywgaywgbi52YWwoKSk7DQogICAgICAgICAgICAg
ICAgICAgIGlmICh0eXBlb2YgciA9M0Q9M0Q9M0QgIm51bWJlciIpIHIgKz0z
RCAiIjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGMuaXNBcnJheShyKSAm
JiBCYS50ZXN0KHRoaXMudHlwZSkpIHRoaXMuY2hlY2tlZCA9DQo9M0QgYy5p
bkFycmF5KG4udmFsKCksIHIpID49M0QgMDsNCiAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYy5ub2RlTmFtZSh0aGlzLCAic2VsZWN0IikpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0zRCBjLm1ha2VBcnJheShy
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGMoIm9wdGlvbiIsIHRoaXMp
LmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuc2VsZWN0ZWQgPTNEDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYy5pbkFycmF5KGModGhpcykudmFsKCksIHUpID49M0QgMA0KICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIXUubGVuZ3RoKSB0aGlzLnNlbGVjdGVkSW5kZXggPTNEIC0x
DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB0aGlzLnZhbHVlID0zRCBy
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSkNCiAgICAgICAg
fQ0KICAgIH0pOw0KICAgIGMuZXh0ZW5kKHsNCiAgICAgICAgYXR0ckZuOiB7
DQogICAgICAgICAgICB2YWw6IHRydWUsDQogICAgICAgICAgICBjc3M6IHRy
dWUsDQogICAgICAgICAgICBodG1sOiB0cnVlLA0KICAgICAgICAgICAgdGV4
dDogdHJ1ZSwNCiAgICAgICAgICAgIGRhdGE6IHRydWUsDQogICAgICAgICAg
ICB3aWR0aDogdHJ1ZSwNCiAgICAgICAgICAgIGhlaWdodDogdHJ1ZSwNCiAg
ICAgICAgICAgIG9mZnNldDogdHJ1ZQ0KICAgICAgICB9LA0KICAgICAgICBh
dHRyOiBmdW5jdGlvbiAoYSwgYiwgZCwgZikgew0KICAgICAgICAgICAgaWYg
KCFhIHx8IGEubm9kZVR5cGUgPTNEPTNEPTNEIDMgfHwgYS5ub2RlVHlwZSA9
M0Q9M0Q9M0QgOCkgPQ0KcmV0dXJuIHc7DQogICAgICAgICAgICBpZiAoZiAm
JiBiIGluIGMuYXR0ckZuKSByZXR1cm4gYyhhKVtiXShkKTsNCiAgICAgICAg
ICAgIGYgPTNEIGEubm9kZVR5cGUgIT0zRD0zRCAxIHx8ICFjLmlzWE1MRG9j
KGEpOw0KICAgICAgICAgICAgdmFyIGUgPTNEIGQgIT0zRD0zRCB3Ow0KICAg
ICAgICAgICAgYiA9M0QgZiAmJiBjLnByb3BzW2JdIHx8IGI7DQogICAgICAg
ICAgICBpZiAoYS5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSkgew0KICAgICAgICAg
ICAgICAgIHZhciBqID0zRCAkYS50ZXN0KGIpOw0KICAgICAgICAgICAgICAg
IGlmIChiIGluIGEgJiYgZiAmJiAhaikgew0KICAgICAgICAgICAgICAgICAg
ICBpZiAoZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgYiA9M0Q9M0Q9
M0QgInR5cGUiICYmIGFiLnRlc3QoYS5ub2RlTmFtZSkgJiYgPQ0KYS5wYXJl
bnROb2RlICYmIGMuZXJyb3IoInR5cGUgcHJvcGVydHkgY2FuJ3QgYmUgY2hh
bmdlZCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYVtiXSA9M0QgZA0K
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlm
IChjLm5vZGVOYW1lKGEsICJmb3JtIikgJiYgYS5nZXRBdHRyaWJ1dGVOb2Rl
KGIpKSA9DQpyZXR1cm4gYS5nZXRBdHRyaWJ1dGVOb2RlKGIpLm5vZGVWYWx1
ZTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGIgPTNEPTNEPTNEICJ0YWJJ
bmRleCIpIHJldHVybiAoYiA9M0QgPQ0KYS5nZXRBdHRyaWJ1dGVOb2RlKCJ0
YWJJbmRleCIpKSAmJiBiLnNwZWNpZmllZCA/IGIudmFsdWUgOiA9DQpiYi50
ZXN0KGEubm9kZU5hbWUpIHx8IGNiLnRlc3QoYS5ub2RlTmFtZSkgJiYgYS5o
cmVmID8gMCA6IHc7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhW2Jd
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICghYy5z
dXBwb3J0LnN0eWxlICYmIGYgJiYgYiA9M0Q9M0Q9M0QgInN0eWxlIikgew0K
ICAgICAgICAgICAgICAgICAgICBpZiAoZSkgYS5zdHlsZS5jc3NUZXh0ID0z
RCAiIiArIGQ7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnN0eWxl
LmNzc1RleHQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ZSAmJiBhLnNldEF0dHJpYnV0ZShiLCAiIiArIGQpOw0KICAgICAgICAgICAg
ICAgIGEgPTNEICFjLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQgJiYgZiAmJiBq
ID8gPQ0KYS5nZXRBdHRyaWJ1dGUoYiwgMikgOiBhLmdldEF0dHJpYnV0ZShi
KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYSA9M0Q9M0Q9M0QgbnVsbCA/
IHcgOiBhDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gYy5z
dHlsZShhLCBiLCBkKQ0KICAgICAgICB9DQogICAgfSk7DQogICAgdmFyIE8g
PTNEIC9cLiguKikkLywNCiAgICAgICAgZGIgPTNEIGZ1bmN0aW9uIChhKSB7
DQogICAgICAgIHJldHVybiBhLnJlcGxhY2UoL1teXHdcc1wuXHxgXS9nLCBm
dW5jdGlvbiAoYikgew0KICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBiDQog
ICAgICAgIH0pDQogICAgfTsNCiAgICBjLmV2ZW50ID0zRCB7DQogICAgICAg
IGFkZDogZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAgICAgIGlm
ICghKGEubm9kZVR5cGUgPTNEPTNEPTNEIDMgfHwgYS5ub2RlVHlwZSA9M0Q9
M0Q9M0QgOCkpIHsNCiAgICAgICAgICAgICAgICBpZiAoYS5zZXRJbnRlcnZh
bCAmJiBhICE9M0Q9M0QgQSAmJiAhYS5mcmFtZUVsZW1lbnQpIGEgPQ0KPTNE
IEE7DQogICAgICAgICAgICAgICAgdmFyIGUsIGo7DQogICAgICAgICAgICAg
ICAgaWYgKGQuaGFuZGxlcikgew0KICAgICAgICAgICAgICAgICAgICBlID0z
RCBkOw0KICAgICAgICAgICAgICAgICAgICBkID0zRCBlLmhhbmRsZXINCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCFkLmd1aWQp
IGQuZ3VpZCA9M0QgYy5ndWlkKys7DQogICAgICAgICAgICAgICAgaWYgKGog
PTNEIGMuZGF0YShhKSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaSA9
M0Qgai5ldmVudHMgPTNEIGouZXZlbnRzIHx8IHt9LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgbyA9M0Qgai5oYW5kbGU7DQogICAgICAgICAgICAgICAg
ICAgIGlmICghbykgai5oYW5kbGUgPTNEIG8gPTNEIGZ1bmN0aW9uICgpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYyAhPTNE
PTNEICJ1bmRlZmluZWQiICYmID0NCiFjLmV2ZW50LnRyaWdnZXJlZCA/IGMu
ZXZlbnQuaGFuZGxlLmFwcGx5KG8uZWxlbSwgYXJndW1lbnRzKSA6IHcNCiAg
ICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAgICAgby5l
bGVtID0zRCBhOw0KICAgICAgICAgICAgICAgICAgICBiID0zRCBiLnNwbGl0
KCIgIik7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGssIG4gPTNE
IDAsIHI7IGsgPTNEIGJbbisrXTspIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGogPTNEIGUgPyBjLmV4dGVuZCh7fSwgZSkgOiB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlcjogZCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhOiBmDQogICAgICAgICAgICAgICAgICAgICAg
ICB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsuaW5kZXhPZigi
LiIpID4gLTEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0z
RCBrLnNwbGl0KCIuIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ayA9M0Qgci5zaGlmdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGoubmFtZXNwYWNlID0zRCByLnNsaWNlKDApLnNvcnQoKS5qb2luKCIuIikN
CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgciA9M0QgW107DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgai5uYW1lc3BhY2UgPTNEICIiDQogICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBqLnR5cGUg
PTNEIGs7DQogICAgICAgICAgICAgICAgICAgICAgICBqLmd1aWQgPTNEIGQu
Z3VpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1ID0zRCBpW2td
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPTNEIGMuZXZlbnQu
c3BlY2lhbFtrXSB8fCB7fTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghdSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPTNEIGlb
a10gPTNEIFtdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
ei5zZXR1cCB8fCB6LnNldHVwLmNhbGwoYSwgZiwgciwgbykgPQ0KPTNEPTNE
PTNEIGZhbHNlKSBpZiAoYS5hZGRFdmVudExpc3RlbmVyKSBhLmFkZEV2ZW50
TGlzdGVuZXIoaywgbywgPQ0KZmFsc2UpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgYS5hdHRhY2hFdmVudCAmJiBhLmF0dGFjaEV2ZW50
KCJvbiIgKyA9DQprLCBvKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHouYWRkKSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgei5hZGQuY2FsbChhLCBqKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWouaGFuZGxlci5ndWlkKSBq
LmhhbmRsZXIuZ3VpZCA9M0QgPQ0KZC5ndWlkDQogICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB1LnB1c2goaik7
DQogICAgICAgICAgICAgICAgICAgICAgICBjLmV2ZW50Lmdsb2JhbFtrXSA9
M0QgdHJ1ZQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgIGEgPTNEIG51bGwNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGdsb2JhbDoge30sDQogICAg
ICAgIHJlbW92ZTogZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAg
ICAgIGlmICghKGEubm9kZVR5cGUgPTNEPTNEPTNEIDMgfHwgYS5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgOCkpIHsNCiAgICAgICAgICAgICAgICB2YXIgZSwgaiA9
M0QgMCwNCiAgICAgICAgICAgICAgICAgICAgaSwgbywgaywgbiwgciwgdSwg
eiA9M0QgYy5kYXRhKGEpLA0KICAgICAgICAgICAgICAgICAgICBDID0zRCB6
ICYmIHouZXZlbnRzOw0KICAgICAgICAgICAgICAgIGlmICh6ICYmIEMpIHsN
CiAgICAgICAgICAgICAgICAgICAgaWYgKGIgJiYgYi50eXBlKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICBkID0zRCBiLmhhbmRsZXI7DQogICAgICAg
ICAgICAgICAgICAgICAgICBiID0zRCBiLnR5cGUNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgdHlwZW9m
IGIgPTNEPTNEPTNEICJzdHJpbmciICYmIGIuY2hhckF0KDApID0NCj0zRD0z
RD0zRCAiLiIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPTNEIGIg
fHwgIiI7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGUgaW4gQykg
Yy5ldmVudC5yZW1vdmUoYSwgZSArIGIpDQogICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGIgPTNE
IGIuc3BsaXQoIiAiKTsgZSA9M0QgYltqKytdOykgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG4gPTNEIGU7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaSA9M0QgZS5pbmRleE9mKCIuIikgPCAwOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG8gPTNEIFtdOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaSkgew0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvID0zRCBlLnNwbGl0KCIuIik7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGUgPTNEIG8uc2hpZnQoKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgayA9M0QgbmV3IFJlZ0V4cCgiKF58
XFwuKSIgKyA9DQpjLm1hcChvLnNsaWNlKDApLnNvcnQoKSwgZGIpLmpvaW4o
IlxcLig/Oi4qXFwuKT8iKSArICIoXFwufCQpIikNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHIgPTNEIENbZV0pIGlmIChkKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG4gPTNEIGMuZXZlbnQuc3BlY2lhbFtlXSB8fCB7fTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChCID0zRCBm
IHx8IDA7IEIgPCByLmxlbmd0aDsgQisrKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1ID0zRCByW0JdOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQuZ3VpZCA9M0Q9M0Q9M0Qg
dS5ndWlkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGkgfHwgay50ZXN0KHUubmFtZXNwYWNlKSkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0zRD0z
RCBudWxsICYmID0NCnIuc3BsaWNlKEItLSwgMSk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucmVtb3ZlICYmIG4u
cmVtb3ZlLmNhbGwoYSwgPQ0KdSkNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGYgIT0zRCBudWxsKSBicmVhaw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChyLmxlbmd0aCA9M0Q9M0Q9M0QgMCB8fCBmICE9M0Qg
bnVsbCA9DQomJiByLmxlbmd0aCA9M0Q9M0Q9M0QgMSkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuLnRlYXJkb3duIHx8
ID0NCm4udGVhcmRvd24uY2FsbChhLCBvKSA9M0Q9M0Q9M0QgZmFsc2UpIENh
KGEsIGUsIHouaGFuZGxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbGV0ZSBDW2VdDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgZm9yICh2YXIgQiA9M0QgMDsgQiA8IHIubGVuZ3RoOyBCKyspID0NCnsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9M0QgcltCXTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgfHwgay50
ZXN0KHUubmFtZXNwYWNlKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYy5ldmVudC5yZW1vdmUoYSwgbiwgdS5oYW5kbGVyLCBC
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuc3Bs
aWNlKEItLSwgMSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
LmlzRW1wdHlPYmplY3QoQykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYiA9M0Qgei5oYW5kbGUpIGIuZWxlbSA9M0QgbnVsbDsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgei5ldmVudHM7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHouaGFuZGxlOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaXNFbXB0eU9iamVjdCh6
KSAmJiBjLnJlbW92ZURhdGEoYSkNCiAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgdHJpZ2dlcjog
ZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAgICAgIHZhciBlID0z
RCBhLnR5cGUgfHwgYTsNCiAgICAgICAgICAgIGlmICghZikgew0KICAgICAg
ICAgICAgICAgIGEgPTNEIHR5cGVvZiBhID0zRD0zRD0zRCAib2JqZWN0IiA/
IGFbR10gPyBhIDogPQ0KYy5leHRlbmQoYy5FdmVudChlKSwgYSkgOiBjLkV2
ZW50KGUpOw0KICAgICAgICAgICAgICAgIGlmIChlLmluZGV4T2YoIiEiKSA+
PTNEIDApIHsNCiAgICAgICAgICAgICAgICAgICAgYS50eXBlID0zRA0KICAg
ICAgICAgICAgICAgICAgICBlID0zRCBlLnNsaWNlKDAsIC0xKTsNCiAgICAg
ICAgICAgICAgICAgICAgYS5leGNsdXNpdmUgPTNEIHRydWUNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKCFkKSB7DQogICAgICAg
ICAgICAgICAgICAgIGEuc3RvcFByb3BhZ2F0aW9uKCk7DQogICAgICAgICAg
ICAgICAgICAgIGMuZXZlbnQuZ2xvYmFsW2VdICYmIGMuZWFjaChjLmNhY2hl
LCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LmV2ZW50cyAmJiB0aGlzLmV2ZW50c1tlXSAmJiA9DQpjLmV2ZW50LnRyaWdn
ZXIoYSwgYiwgdGhpcy5oYW5kbGUuZWxlbSkNCiAgICAgICAgICAgICAgICAg
ICAgfSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYg
KCFkIHx8IGQubm9kZVR5cGUgPTNEPTNEPTNEIDMgfHwgZC5ub2RlVHlwZSA9
M0Q9M0Q9M0QgPQ0KOCkgcmV0dXJuIHc7DQogICAgICAgICAgICAgICAgYS5y
ZXN1bHQgPTNEIHc7DQogICAgICAgICAgICAgICAgYS50YXJnZXQgPTNEIGQ7
DQogICAgICAgICAgICAgICAgYiA9M0QgYy5tYWtlQXJyYXkoYik7DQogICAg
ICAgICAgICAgICAgYi51bnNoaWZ0KGEpDQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBhLmN1cnJlbnRUYXJnZXQgPTNEIGQ7DQogICAgICAgICAgICAo
ZiA9M0QgYy5kYXRhKGQsICJoYW5kbGUiKSkgJiYgZi5hcHBseShkLCBiKTsN
CiAgICAgICAgICAgIGYgPTNEIGQucGFyZW50Tm9kZSB8fCBkLm93bmVyRG9j
dW1lbnQ7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlm
ICghKGQgJiYgZC5ub2RlTmFtZSAmJiA9DQpjLm5vRGF0YVtkLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCldKSkgaWYgKGRbIm9uIiArIGVdICYmIGRbIm9uIiAr
ID0NCmVdLmFwcGx5KGQsIGIpID0zRD0zRD0zRCBmYWxzZSkgYS5yZXN1bHQg
PTNEIGZhbHNlDQogICAgICAgICAgICB9IGNhdGNoIChqKSB7fQ0KICAgICAg
ICAgICAgaWYgKCFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgZikgYy5l
dmVudC50cmlnZ2VyKGEsIGIsIGYsID0NCnRydWUpOw0KICAgICAgICAgICAg
ZWxzZSBpZiAoIWEuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsNCiAgICAgICAg
ICAgICAgICBmID0zRCBhLnRhcmdldDsNCiAgICAgICAgICAgICAgICB2YXIg
aSwgbyA9M0QgYy5ub2RlTmFtZShmLCAiYSIpICYmIGUgPTNEPTNEPTNEICJj
bGljayIsDQogICAgICAgICAgICAgICAgICAgIGsgPTNEIGMuZXZlbnQuc3Bl
Y2lhbFtlXSB8fCB7fTsNCiAgICAgICAgICAgICAgICBpZiAoKCFrLl9kZWZh
dWx0IHx8IGsuX2RlZmF1bHQuY2FsbChkLCBhKSA9M0Q9M0Q9M0QgPQ0KZmFs
c2UpICYmICFvICYmICEoZiAmJiBmLm5vZGVOYW1lICYmID0NCmMubm9EYXRh
W2Yubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pKSB7DQogICAgICAgICAgICAg
ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZltl
XSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0zRCBm
WyJvbiIgKyBlXSkgZlsib24iICsgZV0gPTNEIG51bGw7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYy5ldmVudC50cmlnZ2VyZWQgPTNEIHRydWU7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZltlXSgpDQogICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKG4pIHt9DQogICAgICAgICAgICAgICAgICAgIGlmIChpKSBmWyJvbiIg
KyBlXSA9M0QgaTsNCiAgICAgICAgICAgICAgICAgICAgYy5ldmVudC50cmln
Z2VyZWQgPTNEIGZhbHNlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9LA0KICAgICAgICBoYW5kbGU6IGZ1bmN0aW9uIChh
KSB7DQogICAgICAgICAgICB2YXIgYiwgZCwgZiwgZTsNCiAgICAgICAgICAg
IGEgPTNEIGFyZ3VtZW50c1swXSA9M0QgYy5ldmVudC5maXgoYSB8fCBBLmV2
ZW50KTsNCiAgICAgICAgICAgIGEuY3VycmVudFRhcmdldCA9M0QgdGhpczsN
CiAgICAgICAgICAgIGIgPTNEIGEudHlwZS5pbmRleE9mKCIuIikgPCAwICYm
ICFhLmV4Y2x1c2l2ZTsNCiAgICAgICAgICAgIGlmICghYikgew0KICAgICAg
ICAgICAgICAgIGQgPTNEIGEudHlwZS5zcGxpdCgiLiIpOw0KICAgICAgICAg
ICAgICAgIGEudHlwZSA9M0QgZC5zaGlmdCgpOw0KICAgICAgICAgICAgICAg
IGYgPTNEIG5ldyBSZWdFeHAoIihefFxcLikiICsgPQ0KZC5zbGljZSgwKS5z
b3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpICsgIihcXC58JCkiKQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZSA9M0QgYy5kYXRhKHRoaXMsICJl
dmVudHMiKTsNCiAgICAgICAgICAgIGQgPTNEIGVbYS50eXBlXTsNCiAgICAg
ICAgICAgIGlmIChlICYmIGQpIHsNCiAgICAgICAgICAgICAgICBkID0zRCBk
LnNsaWNlKDApOw0KICAgICAgICAgICAgICAgIGUgPTNEIDA7DQogICAgICAg
ICAgICAgICAgZm9yICh2YXIgaiA9M0QgZC5sZW5ndGg7IGUgPCBqOyBlKysp
IHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGkgPTNEIGRbZV07DQogICAg
ICAgICAgICAgICAgICAgIGlmIChiIHx8IGYudGVzdChpLm5hbWVzcGFjZSkp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGEuaGFuZGxlciA9M0QgaS5o
YW5kbGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhID0zRCBp
LmRhdGE7DQogICAgICAgICAgICAgICAgICAgICAgICBhLmhhbmRsZU9iaiA9
M0QgaTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPTNEIGkuaGFuZGxl
ci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGkgIT0zRD0zRCB3KSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYS5yZXN1bHQgPTNEIGk7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGkgPTNEPTNEPTNEIGZhbHNlKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGEucHJldmVudERlZmF1bHQoKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5zdG9wUHJvcGFnYXRp
b24oKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpIGJyZWFrDQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gYS5yZXN1bHQNCiAgICAg
ICAgfSwNCiAgICAgICAgcHJvcHM6ICJhbHRLZXkgYXR0ckNoYW5nZSBhdHRy
TmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlID0NCmNoYXJDb2RlIGNs
aWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRh
aWwgZXZlbnRQaGFzZSA9DQpmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUg
bGF5ZXJYIGxheWVyWSBtZXRhS2V5IG5ld1ZhbHVlIG9mZnNldFggPQ0Kb2Zm
c2V0WSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVs
YXRlZE5vZGUgcmVsYXRlZFRhcmdldCA9DQpzY3JlZW5YIHNjcmVlblkgc2hp
ZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxE
ZWx0YSA9DQp3aGljaCIuc3BsaXQoIiAiKSwNCiAgICAgICAgZml4OiBmdW5j
dGlvbiAoYSkgew0KICAgICAgICAgICAgaWYgKGFbR10pIHJldHVybiBhOw0K
ICAgICAgICAgICAgdmFyIGIgPTNEIGE7DQogICAgICAgICAgICBhID0zRCBj
LkV2ZW50KGIpOw0KICAgICAgICAgICAgZm9yICh2YXIgZCA9M0QgdGhpcy5w
cm9wcy5sZW5ndGgsIGY7IGQ7KSB7DQogICAgICAgICAgICAgICAgZiA9M0Qg
dGhpcy5wcm9wc1stLWRdOw0KICAgICAgICAgICAgICAgIGFbZl0gPTNEIGJb
Zl0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghYS50YXJnZXQp
IGEudGFyZ2V0ID0zRCBhLnNyY0VsZW1lbnQgfHwgczsNCiAgICAgICAgICAg
IGlmIChhLnRhcmdldC5ub2RlVHlwZSA9M0Q9M0Q9M0QgMykgYS50YXJnZXQg
PTNEID0NCmEudGFyZ2V0LnBhcmVudE5vZGU7DQogICAgICAgICAgICBpZiAo
IWEucmVsYXRlZFRhcmdldCAmJiBhLmZyb21FbGVtZW50KSBhLnJlbGF0ZWRU
YXJnZXQgPTNEID0NCmEuZnJvbUVsZW1lbnQgPTNEPTNEPTNEIGEudGFyZ2V0
ID8gYS50b0VsZW1lbnQgOiBhLmZyb21FbGVtZW50Ow0KICAgICAgICAgICAg
aWYgKGEucGFnZVggPTNEPTNEIG51bGwgJiYgYS5jbGllbnRYICE9M0QgbnVs
bCkgew0KICAgICAgICAgICAgICAgIGIgPTNEIHMuZG9jdW1lbnRFbGVtZW50
Ow0KICAgICAgICAgICAgICAgIGQgPTNEIHMuYm9keTsNCiAgICAgICAgICAg
ICAgICBhLnBhZ2VYID0zRCBhLmNsaWVudFggKyAoYiAmJiBiLnNjcm9sbExl
ZnQgfHwgZCAmJiA9DQpkLnNjcm9sbExlZnQgfHwgMCkgLSAoYiAmJiBiLmNs
aWVudExlZnQgfHwgZCAmJiBkLmNsaWVudExlZnQgfHwgMCk7DQogICAgICAg
ICAgICAgICAgYS5wYWdlWSA9M0QgYS5jbGllbnRZICsgKGIgJiYgYi5zY3Jv
bGxUb3AgfHwgZCAmJiA9DQpkLnNjcm9sbFRvcCB8fCAwKSAtIChiICYmIGIu
Y2xpZW50VG9wIHx8IGQgJiYgZC5jbGllbnRUb3AgfHwgMCkNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGlmICghYS53aGljaCAmJiAoYS5jaGFyQ29k
ZSB8fCBhLmNoYXJDb2RlID0zRD0zRD0zRCAwID8gPQ0KYS5jaGFyQ29kZSA6
IGEua2V5Q29kZSkpIGEud2hpY2ggPTNEIGEuY2hhckNvZGUgfHwgYS5rZXlD
b2RlOw0KICAgICAgICAgICAgaWYgKCFhLm1ldGFLZXkgJiYgYS5jdHJsS2V5
KSBhLm1ldGFLZXkgPTNEIGEuY3RybEtleTsNCiAgICAgICAgICAgIGlmICgh
YS53aGljaCAmJiBhLmJ1dHRvbiAhPTNEPTNEIHcpIGEud2hpY2ggPTNEIGEu
YnV0dG9uICYgMSA9DQo/IDEgOiBhLmJ1dHRvbiAmIDIgPyAzIDogYS5idXR0
b24gJiA0ID8gMiA6IDA7DQogICAgICAgICAgICByZXR1cm4gYQ0KICAgICAg
ICB9LA0KICAgICAgICBndWlkOiAxRTgsDQogICAgICAgIHByb3h5OiBjLnBy
b3h5LA0KICAgICAgICBzcGVjaWFsOiB7DQogICAgICAgICAgICByZWFkeTog
ew0KICAgICAgICAgICAgICAgIHNldHVwOiBjLmJpbmRSZWFkeSwNCiAgICAg
ICAgICAgICAgICB0ZWFyZG93bjogYy5ub29wDQogICAgICAgICAgICB9LA0K
ICAgICAgICAgICAgbGl2ZTogew0KICAgICAgICAgICAgICAgIGFkZDogZnVu
Y3Rpb24gKGEpIHsNCiAgICAgICAgICAgICAgICAgICAgYy5ldmVudC5hZGQo
dGhpcywgYS5vcmlnVHlwZSwgYy5leHRlbmQoe30sIGEsIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZXI6IG9hDQogICAgICAgICAgICAgICAg
ICAgIH0pKQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAg
cmVtb3ZlOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgICAgICAgICB2
YXIgYiA9M0QgdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPTNE
IGEub3JpZ1R5cGUucmVwbGFjZShPLCAiIik7DQogICAgICAgICAgICAgICAg
ICAgIGMuZWFjaChjLmRhdGEodGhpcywgImV2ZW50cyIpLmxpdmUgfHwgW10s
IGZ1bmN0aW9uID0NCigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkID0zRD0zRD0zRCB0aGlzLm9yaWdUeXBlLnJlcGxhY2UoTywgIiIpKSA9
DQpyZXR1cm4gYiA9M0QgZmFsc2UNCiAgICAgICAgICAgICAgICAgICAgfSk7
DQogICAgICAgICAgICAgICAgICAgIGIgJiYgYy5ldmVudC5yZW1vdmUodGhp
cywgYS5vcmlnVHlwZSwgb2EpDQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgfSwNCiAgICAgICAgICAgIGJlZm9yZXVubG9hZDogew0KICAgICAg
ICAgICAgICAgIHNldHVwOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAg
ICAgICAgICAgICAgICBpZiAodGhpcy5zZXRJbnRlcnZhbCkgdGhpcy5vbmJl
Zm9yZXVubG9hZCA9M0QgZDsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICB0
ZWFyZG93bjogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKHRoaXMub25iZWZvcmV1bmxvYWQgPTNEPTNEPTNEIGIpID0NCnRo
aXMub25iZWZvcmV1bmxvYWQgPTNEIG51bGwNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9Ow0KICAgIHZhciBD
YSA9M0Qgcy5yZW1vdmVFdmVudExpc3RlbmVyID8NCiAgICBmdW5jdGlvbiAo
YSwgYiwgZCkgew0KICAgICAgICBhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYiwg
ZCwgZmFsc2UpDQogICAgfSA6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAg
ICAgIGEuZGV0YWNoRXZlbnQoIm9uIiArIGIsIGQpDQogICAgfTsNCiAgICBj
LkV2ZW50ID0zRCBmdW5jdGlvbiAoYSkgew0KICAgICAgICBpZiAoIXRoaXMu
cHJldmVudERlZmF1bHQpIHJldHVybiBuZXcgYy5FdmVudChhKTsNCiAgICAg
ICAgaWYgKGEgJiYgYS50eXBlKSB7DQogICAgICAgICAgICB0aGlzLm9yaWdp
bmFsRXZlbnQgPTNEDQogICAgICAgICAgICBhOw0KICAgICAgICAgICAgdGhp
cy50eXBlID0zRCBhLnR5cGUNCiAgICAgICAgfSBlbHNlIHRoaXMudHlwZSA9
M0QgYTsNCiAgICAgICAgdGhpcy50aW1lU3RhbXAgPTNEIEooKTsNCiAgICAg
ICAgdGhpc1tHXSA9M0QgdHJ1ZQ0KICAgIH07DQogICAgYy5FdmVudC5wcm90
b3R5cGUgPTNEIHsNCiAgICAgICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0z
RCBaOw0KICAgICAgICAgICAgdmFyIGEgPTNEIHRoaXMub3JpZ2luYWxFdmVu
dDsNCiAgICAgICAgICAgIGlmIChhKSB7DQogICAgICAgICAgICAgICAgYS5w
cmV2ZW50RGVmYXVsdCAmJiBhLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAg
ICAgICAgICAgYS5yZXR1cm5WYWx1ZSA9M0QgZmFsc2UNCiAgICAgICAgICAg
IH0NCiAgICAgICAgfSwNCiAgICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9w
cGVkID0zRCBaOw0KICAgICAgICAgICAgdmFyIGEgPTNEIHRoaXMub3JpZ2lu
YWxFdmVudDsNCiAgICAgICAgICAgIGlmIChhKSB7DQogICAgICAgICAgICAg
ICAgYS5zdG9wUHJvcGFnYXRpb24gJiYgYS5zdG9wUHJvcGFnYXRpb24oKTsN
CiAgICAgICAgICAgICAgICBhLmNhbmNlbEJ1YmJsZSA9M0QgdHJ1ZQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBzdG9wSW1tZWRpYXRl
UHJvcGFnYXRpb246IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHRoaXMu
aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPTNEIFo7DQogICAgICAg
ICAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigpDQogICAgICAgIH0sDQogICAg
ICAgIGlzRGVmYXVsdFByZXZlbnRlZDogWSwNCiAgICAgICAgaXNQcm9wYWdh
dGlvblN0b3BwZWQ6IFksDQogICAgICAgIGlzSW1tZWRpYXRlUHJvcGFnYXRp
b25TdG9wcGVkOiBZDQogICAgfTsNCiAgICB2YXIgRGEgPTNEIGZ1bmN0aW9u
IChhKSB7DQogICAgICAgIHZhciBiID0zRCBhLnJlbGF0ZWRUYXJnZXQ7DQog
ICAgICAgIHRyeSB7DQogICAgICAgICAgICBmb3IgKDsgYiAmJiBiICE9M0Q9
M0QgdGhpczspIGIgPTNEIGIucGFyZW50Tm9kZTsNCiAgICAgICAgICAgIGlm
IChiICE9M0Q9M0QgdGhpcykgew0KICAgICAgICAgICAgICAgIGEudHlwZSA9
M0QgYS5kYXRhOw0KICAgICAgICAgICAgICAgIGMuZXZlbnQuaGFuZGxlLmFw
cGx5KHRoaXMsIGFyZ3VtZW50cykNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fSBjYXRjaCAoZCkge30NCiAgICB9LA0KICAgICAgICBFYSA9M0QgZnVuY3Rp
b24gKGEpIHsNCiAgICAgICAgYS50eXBlID0zRCBhLmRhdGE7DQogICAgICAg
IGMuZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykNCiAgICB9
Ow0KICAgIGMuZWFjaCh7DQogICAgICAgIG1vdXNlZW50ZXI6ICJtb3VzZW92
ZXIiLA0KICAgICAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiDQogICAgfSwg
ZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgYy5ldmVudC5zcGVjaWFsW2Fd
ID0zRCB7DQogICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24gKGQpIHsNCiAg
ICAgICAgICAgICAgICBjLmV2ZW50LmFkZCh0aGlzLCBiLCBkICYmIGQuc2Vs
ZWN0b3IgPyBFYSA6IERhLCBhKQ0KICAgICAgICAgICAgfSwNCiAgICAgICAg
ICAgIHRlYXJkb3duOiBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICAg
IGMuZXZlbnQucmVtb3ZlKHRoaXMsIGIsIGQgJiYgZC5zZWxlY3RvciA/IEVh
IDogRGEpDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTsNCiAg
ICBpZiAoIWMuc3VwcG9ydC5zdWJtaXRCdWJibGVzKSBjLmV2ZW50LnNwZWNp
YWwuc3VibWl0ID0zRCB7DQogICAgICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7
DQogICAgICAgICAgICBpZiAodGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
ICE9M0Q9M0QgImZvcm0iKSB7DQogICAgICAgICAgICAgICAgYy5ldmVudC5h
ZGQodGhpcywgImNsaWNrLnNwZWNpYWxTdWJtaXQiLCBmdW5jdGlvbiAoYSkg
ew0KICAgICAgICAgICAgICAgICAgICB2YXIgYiA9M0QgYS50YXJnZXQsDQog
ICAgICAgICAgICAgICAgICAgICAgICBkID0zRCBiLnR5cGU7DQogICAgICAg
ICAgICAgICAgICAgIGlmICgoZCA9M0Q9M0Q9M0QgInN1Ym1pdCIgfHwgZCA9
M0Q9M0Q9M0QgImltYWdlIikgJiYgPQ0KYyhiKS5jbG9zZXN0KCJmb3JtIiku
bGVuZ3RoKSByZXR1cm4gbmEoInN1Ym1pdCIsIHRoaXMsIGFyZ3VtZW50cykN
CiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBjLmV2ZW50
LmFkZCh0aGlzLCAia2V5cHJlc3Muc3BlY2lhbFN1Ym1pdCIsIGZ1bmN0aW9u
IChhKSA9DQp7DQogICAgICAgICAgICAgICAgICAgIHZhciBiID0zRCBhLnRh
cmdldCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPTNEIGIudHlwZTsN
CiAgICAgICAgICAgICAgICAgICAgaWYgKChkID0zRD0zRD0zRCAidGV4dCIg
fHwgZCA9M0Q9M0Q9M0QgInBhc3N3b3JkIikgPQ0KJiYgYyhiKS5jbG9zZXN0
KCJmb3JtIikubGVuZ3RoICYmIGEua2V5Q29kZSA9M0Q9M0Q9M0QgMTMpIHJl
dHVybiA9DQpuYSgic3VibWl0IiwgdGhpcywgYXJndW1lbnRzKQ0KICAgICAg
ICAgICAgICAgIH0pDQogICAgICAgICAgICB9IGVsc2UgcmV0dXJuIGZhbHNl
DQogICAgICAgIH0sDQogICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbiAoKSB7
DQogICAgICAgICAgICBjLmV2ZW50LnJlbW92ZSh0aGlzLCAiLnNwZWNpYWxT
dWJtaXQiKQ0KICAgICAgICB9DQogICAgfTsNCiAgICBpZiAoIWMuc3VwcG9y
dC5jaGFuZ2VCdWJibGVzKSB7DQogICAgICAgIHZhciBkYSA9M0QgL3RleHRh
cmVhfGlucHV0fHNlbGVjdC9pLA0KICAgICAgICAgICAgZWEsIEZhID0zRCBm
dW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgdmFyIGIgPTNEIGEudHlwZSwN
CiAgICAgICAgICAgICAgICBkID0zRCBhLnZhbHVlOw0KICAgICAgICAgICAg
aWYgKGIgPTNEPTNEPTNEICJyYWRpbyIgfHwgYiA9M0Q9M0Q9M0QgImNoZWNr
Ym94IikgZCA9M0QgPQ0KYS5jaGVja2VkOw0KICAgICAgICAgICAgZWxzZSBp
ZiAoYiA9M0Q9M0Q9M0QgInNlbGVjdC1tdWx0aXBsZSIpIGQgPTNEID0NCmEu
c2VsZWN0ZWRJbmRleCA+IC0xID8gYy5tYXAoYS5vcHRpb25zLCBmdW5jdGlv
biAoZikgew0KICAgICAgICAgICAgICAgIHJldHVybiBmLnNlbGVjdGVkDQog
ICAgICAgICAgICB9KS5qb2luKCItIikgOiAiIjsNCiAgICAgICAgICAgIGVs
c2UgaWYgKGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9M0Q9M0Q9M0QgInNl
bGVjdCIpIGQgPTNEID0NCmEuc2VsZWN0ZWRJbmRleDsNCiAgICAgICAgICAg
IHJldHVybiBkDQogICAgICAgIH0sDQogICAgICAgICAgICBmYSA9M0QgZnVu
Y3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIHZhciBkID0zRCBhLnRhcmdl
dCwNCiAgICAgICAgICAgICAgICBmLCBlOw0KICAgICAgICAgICAgaWYgKCEo
IWRhLnRlc3QoZC5ub2RlTmFtZSkgfHwgZC5yZWFkT25seSkpIHsNCiAgICAg
ICAgICAgICAgICBmID0zRCBjLmRhdGEoZCwgIl9jaGFuZ2VfZGF0YSIpOw0K
ICAgICAgICAgICAgICAgIGUgPTNEIEZhKGQpOw0KICAgICAgICAgICAgICAg
IGlmIChhLnR5cGUgIT0zRD0zRCAiZm9jdXNvdXQiIHx8IGQudHlwZSAhPTNE
PTNEICJyYWRpbyIpID0NCmMuZGF0YShkLCAiX2NoYW5nZV9kYXRhIiwgZSk7
DQogICAgICAgICAgICAgICAgaWYgKCEoZiA9M0Q9M0Q9M0QgdyB8fCBlID0z
RD0zRD0zRCBmKSkgaWYgKGYgIT0zRCBudWxsID0NCnx8IGUpIHsNCiAgICAg
ICAgICAgICAgICAgICAgYS50eXBlID0zRCAiY2hhbmdlIjsNCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGMuZXZlbnQudHJpZ2dlcihhLCBiLCBkKQ0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfTsN
CiAgICAgICAgYy5ldmVudC5zcGVjaWFsLmNoYW5nZSA9M0Qgew0KICAgICAg
ICAgICAgZmlsdGVyczogew0KICAgICAgICAgICAgICAgIGZvY3Vzb3V0OiBm
YSwNCiAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgICAgICAgICAgdmFyIGIgPTNEIGEudGFyZ2V0LA0KICAgICAg
ICAgICAgICAgICAgICAgICAgZCA9M0QgYi50eXBlOw0KICAgICAgICAgICAg
ICAgICAgICBpZiAoZCA9M0Q9M0Q9M0QgInJhZGlvIiB8fCBkID0zRD0zRD0z
RCAiY2hlY2tib3giIHx8ID0NCmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9
M0Q9M0Q9M0QgInNlbGVjdCIpIHJldHVybiBmYS5jYWxsKHRoaXMsIGEpDQog
ICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBrZXlkb3duOiBm
dW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgYiA9M0Qg
YS50YXJnZXQsDQogICAgICAgICAgICAgICAgICAgICAgICBkID0zRCBiLnR5
cGU7DQogICAgICAgICAgICAgICAgICAgIGlmIChhLmtleUNvZGUgPTNEPTNE
PTNEIDEzICYmID0NCmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPTNEPTNE
ICJ0ZXh0YXJlYSIgfHwgYS5rZXlDb2RlID0zRD0zRD0zRCAzMiAmJiA9DQoo
ZCA9M0Q9M0Q9M0QgImNoZWNrYm94IiB8fCBkID0zRD0zRD0zRCAicmFkaW8i
KSB8fCBkID0zRD0zRD0zRCA9DQoic2VsZWN0LW11bHRpcGxlIikgcmV0dXJu
IGZhLmNhbGwodGhpcywgYSkNCiAgICAgICAgICAgICAgICB9LA0KICAgICAg
ICAgICAgICAgIGJlZm9yZWFjdGl2YXRlOiBmdW5jdGlvbiAoYSkgew0KICAg
ICAgICAgICAgICAgICAgICBhID0zRCBhLnRhcmdldDsNCiAgICAgICAgICAg
ICAgICAgICAgYy5kYXRhKGEsICJfY2hhbmdlX2RhdGEiLCBGYShhKSkNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
c2V0dXA6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpZiAodGhp
cy50eXBlID0zRD0zRD0zRCAiZmlsZSIpIHJldHVybiBmYWxzZTsNCiAgICAg
ICAgICAgICAgICBmb3IgKHZhciBhIGluIGVhKSBjLmV2ZW50LmFkZCh0aGlz
LCBhICsgPQ0KIi5zcGVjaWFsQ2hhbmdlIiwgZWFbYV0pOw0KICAgICAgICAg
ICAgICAgIHJldHVybiBkYS50ZXN0KHRoaXMubm9kZU5hbWUpDQogICAgICAg
ICAgICB9LA0KICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uICgpIHsN
CiAgICAgICAgICAgICAgICBjLmV2ZW50LnJlbW92ZSh0aGlzLCAiLnNwZWNp
YWxDaGFuZ2UiKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZGEudGVzdCh0
aGlzLm5vZGVOYW1lKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9Ow0KICAg
ICAgICBlYSA9M0QgYy5ldmVudC5zcGVjaWFsLmNoYW5nZS5maWx0ZXJzDQog
ICAgfQ0KICAgIHMuYWRkRXZlbnRMaXN0ZW5lciAmJiBjLmVhY2goew0KICAg
ICAgICBmb2N1czogImZvY3VzaW4iLA0KICAgICAgICBibHVyOiAiZm9jdXNv
dXQiDQogICAgfSwgZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgZnVuY3Rp
b24gZChmKSB7DQogICAgICAgICAgICBmID0zRCBjLmV2ZW50LmZpeChmKTsN
CiAgICAgICAgICAgIGYudHlwZSA9M0QgYjsNCiAgICAgICAgICAgIHJldHVy
biBjLmV2ZW50LmhhbmRsZS5jYWxsKHRoaXMsIGYpDQogICAgICAgIH0NCiAg
ICAgICAgYy5ldmVudC5zcGVjaWFsW2JdID0zRCB7DQogICAgICAgICAgICBz
ZXR1cDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHRoaXMuYWRk
RXZlbnRMaXN0ZW5lcihhLCBkLCB0cnVlKQ0KICAgICAgICAgICAgfSwNCiAg
ICAgICAgICAgIHRlYXJkb3duOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGEsIGQsIHRydWUpDQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmVhY2go
WyJiaW5kIiwgIm9uZSJdLCBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICBj
LmZuW2JdID0zRCBmdW5jdGlvbiAoZCwgZiwgZSkgew0KICAgICAgICAgICAg
aWYgKHR5cGVvZiBkID0zRD0zRD0zRCAib2JqZWN0Iikgew0KICAgICAgICAg
ICAgICAgIGZvciAodmFyIGogaW4gZCkgdGhpc1tiXShqLCBmLCBkW2pdLCBl
KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihmKSkgew0KICAgICAg
ICAgICAgICAgIGUgPTNEIGY7DQogICAgICAgICAgICAgICAgZiA9M0Qgdw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIGkgPTNEIGIgPTNEPTNE
PTNEICJvbmUiID8gYy5wcm94eShlLCBmdW5jdGlvbiAoaykgew0KICAgICAg
ICAgICAgICAgIGModGhpcykudW5iaW5kKGssIGkpOw0KICAgICAgICAgICAg
ICAgIHJldHVybiBlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykNCiAgICAgICAg
ICAgIH0pIDogZTsNCiAgICAgICAgICAgIGlmIChkID0zRD0zRD0zRCAidW5s
b2FkIiAmJiBiICE9M0Q9M0QgIm9uZSIpIHRoaXMub25lKGQsIGYsID0NCmUp
Ow0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgaiA9M0Qg
MDsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBvID0zRCB0aGlzLmxlbmd0
aDsgaiA8IG87IGorKykgPQ0KYy5ldmVudC5hZGQodGhpc1tqXSwgZCwgaSwg
ZikNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0aGlzDQog
ICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmZuLmV4dGVuZCh7DQogICAgICAg
IHVuYmluZDogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIGlmICh0
eXBlb2YgYSA9M0Q9M0Q9M0QgIm9iamVjdCIgJiYgIWEucHJldmVudERlZmF1
bHQpIGZvciA9DQoodmFyIGQgaW4gYSkgdGhpcy51bmJpbmQoZCwgYVtkXSk7
DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBkID0zRCAw
Ow0KICAgICAgICAgICAgICAgIGZvciAodmFyIGYgPTNEIHRoaXMubGVuZ3Ro
OyBkIDwgZjsgZCsrKSA9DQpjLmV2ZW50LnJlbW92ZSh0aGlzW2RdLCBhLCBi
KQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAg
ICAgICAgfSwNCiAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uIChhLCBiLCBk
LCBmKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5saXZlKGIsIGQsIGYs
IGEpDQogICAgICAgIH0sDQogICAgICAgIHVuZGVsZWdhdGU6IGZ1bmN0aW9u
IChhLCBiLCBkKSB7DQogICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxl
bmd0aCA9M0Q9M0Q9M0QgMCA/IHRoaXMudW5iaW5kKCJsaXZlIikgOiA9DQp0
aGlzLmRpZShiLCBudWxsLCBkLCBhKQ0KICAgICAgICB9LA0KICAgICAgICB0
cmlnZ2VyOiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgYy5l
dmVudC50cmlnZ2VyKGEsIGIsIHRoaXMpDQogICAgICAgICAgICB9KQ0KICAg
ICAgICB9LA0KICAgICAgICB0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24gKGEs
IGIpIHsNCiAgICAgICAgICAgIGlmICh0aGlzWzBdKSB7DQogICAgICAgICAg
ICAgICAgYSA9M0QgYy5FdmVudChhKTsNCiAgICAgICAgICAgICAgICBhLnBy
ZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICAgICAgYS5zdG9wUHJvcGFn
YXRpb24oKTsNCiAgICAgICAgICAgICAgICBjLmV2ZW50LnRyaWdnZXIoYSwg
YiwgdGhpc1swXSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGEucmVzdWx0
DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIHRvZ2dsZTog
ZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIGZvciAodmFyIGIgPTNEIGFy
Z3VtZW50cywgZCA9M0QgMTsgZCA8IGIubGVuZ3RoOykgYy5wcm94eShhLCA9
DQpiW2QrK10pOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xpY2soYy5w
cm94eShhLCBmdW5jdGlvbiAoZikgew0KICAgICAgICAgICAgICAgIHZhciBl
ID0zRCAoYy5kYXRhKHRoaXMsICJsYXN0VG9nZ2xlIiArIGEuZ3VpZCkgfHwg
MCkgJSA9DQpkOw0KICAgICAgICAgICAgICAgIGMuZGF0YSh0aGlzLCAibGFz
dFRvZ2dsZSIgKyBhLmd1aWQsIGUgKyAxKTsNCiAgICAgICAgICAgICAgICBm
LnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGJb
ZV0uYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCBmYWxzZQ0KICAgICAgICAg
ICAgfSkpDQogICAgICAgIH0sDQogICAgICAgIGhvdmVyOiBmdW5jdGlvbiAo
YSwgYikgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMubW91c2VlbnRlcihh
KS5tb3VzZWxlYXZlKGIgfHwgYSkNCiAgICAgICAgfQ0KICAgIH0pOw0KICAg
IHZhciBHYSA9M0Qgew0KICAgICAgICBmb2N1czogImZvY3VzaW4iLA0KICAg
ICAgICBibHVyOiAiZm9jdXNvdXQiLA0KICAgICAgICBtb3VzZWVudGVyOiAi
bW91c2VvdmVyIiwNCiAgICAgICAgbW91c2VsZWF2ZTogIm1vdXNlb3V0Ig0K
ICAgIH07DQogICAgYy5lYWNoKFsibGl2ZSIsICJkaWUiXSwgZnVuY3Rpb24g
KGEsIGIpIHsNCiAgICAgICAgYy5mbltiXSA9M0QgZnVuY3Rpb24gKGQsIGYs
IGUsIGopIHsNCiAgICAgICAgICAgIHZhciBpLCBvID0zRCAwLA0KICAgICAg
ICAgICAgICAgIGssIG4sIHIgPTNEIGogfHwgdGhpcy5zZWxlY3RvciwNCiAg
ICAgICAgICAgICAgICB1ID0zRCBqID8gdGhpcyA6IGModGhpcy5jb250ZXh0
KTsNCiAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rpb24oZikpIHsNCiAgICAg
ICAgICAgICAgICBlID0zRCBmOw0KICAgICAgICAgICAgICAgIGYgPTNEIHcN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZvciAoZCA9M0QgKGQgfHwg
IiIpLnNwbGl0KCIgIik7DQogICAgICAgICAgICAoaSA9M0QgZFtvKytdKSAh
PTNEIG51bGw7KSB7DQogICAgICAgICAgICAgICAgaiA9M0QgTy5leGVjKGkp
Ow0KICAgICAgICAgICAgICAgIGsgPTNEICIiOw0KICAgICAgICAgICAgICAg
IGlmIChqKSB7DQogICAgICAgICAgICAgICAgICAgIGsgPTNEIGpbMF07DQog
ICAgICAgICAgICAgICAgICAgIGkgPTNEIGkucmVwbGFjZShPLCAiIikNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKGkgPTNEPTNE
PTNEICJob3ZlciIpIGQucHVzaCgibW91c2VlbnRlciIgKyBrLCA9DQoibW91
c2VsZWF2ZSIgKyBrKTsNCiAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAg
ICAgICAgICAgICAgICAgbiA9M0QgaTsNCiAgICAgICAgICAgICAgICAgICAg
aWYgKGkgPTNEPTNEPTNEICJmb2N1cyIgfHwgaSA9M0Q9M0Q9M0QgImJsdXIi
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goR2FbaV0gKyBr
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0zRCBrDQogICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpID0zRCAoR2FbaV0gfHwgaSkgKyBrOw0K
ICAgICAgICAgICAgICAgICAgICBiID0zRD0zRD0zRCAibGl2ZSIgPyB1LmVh
Y2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgYy5l
dmVudC5hZGQodGhpcywgcGEoaSwgciksIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhOiBmLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdG9yOiByLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhhbmRsZXI6IGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Jp
Z1R5cGU6IGksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ0hh
bmRsZXI6IGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlVHlw
ZTogbg0KICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAg
ICAgICAgICAgfSkgOiB1LnVuYmluZChwYShpLCByKSwgZSkNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4g
dGhpcw0KICAgICAgICB9DQogICAgfSk7DQogICAgYy5lYWNoKCJibHVyIGZv
Y3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9h
ZCBjbGljayA9DQpkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1v
dmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgPQ0KbW91c2VsZWF2
ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVw
IGVycm9yIi5zcGxpdCgiID0NCiIpLCBmdW5jdGlvbiAoYSwgYikgew0KICAg
ICAgICBjLmZuW2JdID0zRCBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAg
cmV0dXJuIGQgPyB0aGlzLmJpbmQoYiwgZCkgOiB0aGlzLnRyaWdnZXIoYikN
CiAgICAgICAgfTsNCiAgICAgICAgaWYgKGMuYXR0ckZuKSBjLmF0dHJGblti
XSA9M0QgdHJ1ZQ0KICAgIH0pOw0KICAgIEEuYXR0YWNoRXZlbnQgJiYgIUEu
YWRkRXZlbnRMaXN0ZW5lciAmJiBBLmF0dGFjaEV2ZW50KCJvbnVubG9hZCIs
ID0NCmZ1bmN0aW9uICgpIHsNCiAgICAgICAgZm9yICh2YXIgYSBpbiBjLmNh
Y2hlKSBpZiAoYy5jYWNoZVthXS5oYW5kbGUpIHRyeSB7DQogICAgICAgICAg
ICBjLmV2ZW50LnJlbW92ZShjLmNhY2hlW2FdLmhhbmRsZS5lbGVtKQ0KICAg
ICAgICB9IGNhdGNoIChiKSB7fQ0KICAgIH0pOw0KICAgIChmdW5jdGlvbiAo
KSB7DQogICAgICAgIGZ1bmN0aW9uIGEoZykgew0KICAgICAgICAgICAgZm9y
ICh2YXIgaCA9M0QgIiIsIGwsIG0gPTNEIDA7IGdbbV07IG0rKykgew0KICAg
ICAgICAgICAgICAgIGwgPTNEIGdbbV07DQogICAgICAgICAgICAgICAgaWYg
KGwubm9kZVR5cGUgPTNEPTNEPTNEIDMgfHwgbC5ub2RlVHlwZSA9M0Q9M0Q9
M0QgNCkgaCA9DQorPTNEIGwubm9kZVZhbHVlOw0KICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGwubm9kZVR5cGUgIT0zRD0zRCA4KSBoICs9M0QgYShsLmNo
aWxkTm9kZXMpDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4g
aA0KICAgICAgICB9DQogICAgICAgIGZ1bmN0aW9uIGIoZywgaCwgbCwgbSwg
cSwgcCkgew0KICAgICAgICAgICAgcSA9M0QgMDsNCiAgICAgICAgICAgIGZv
ciAodmFyIHYgPTNEIG0ubGVuZ3RoOyBxIDwgdjsgcSsrKSB7DQogICAgICAg
ICAgICAgICAgdmFyIHQgPTNEIG1bcV07DQogICAgICAgICAgICAgICAgaWYg
KHQpIHsNCiAgICAgICAgICAgICAgICAgICAgdCA9M0QgdFtnXTsNCiAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgeSA9M0QgZmFsc2U7IHQ7KSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zaXpjYWNoZSA9M0Q9M0Q9
M0QgbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPTNEIG1b
dC5zaXpzZXRdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodC5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSAmJiAhcCkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2l6Y2FjaGUgPTNEIGw7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zaXpzZXQgPTNEIHEN
CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPTNEPTNEPTNE
IGgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0zRCB0Ow0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB0ID0z
RCB0W2ddDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgbVtxXSA9M0QgeQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBmdW5jdGlvbiBkKGcsIGgsIGws
IG0sIHEsIHApIHsNCiAgICAgICAgICAgIHEgPTNEIDA7DQogICAgICAgICAg
ICBmb3IgKHZhciB2ID0zRCBtLmxlbmd0aDsgcSA8IHY7IHErKykgew0KICAg
ICAgICAgICAgICAgIHZhciB0ID0zRCBtW3FdOw0KICAgICAgICAgICAgICAg
IGlmICh0KSB7DQogICAgICAgICAgICAgICAgICAgIHQgPTNEIHRbZ107DQog
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPTNEIGZhbHNlOyB0Oykg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2l6Y2FjaGUgPTNE
PTNEPTNEIGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0z
RCBtW3Quc2l6c2V0XTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhaw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHQubm9kZVR5cGUgPTNEPTNEPTNEIDEpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXApIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdC5zaXpjYWNoZSA9M0QgbDsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zaXpzZXQgPTNEIHEN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoICE9M0Q9M0QgInN0cmluZyIp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPTNE
PTNEPTNEIGgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHkgPTNEIHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChr
LmZpbHRlcihoLCBbdF0pLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeSA9M0QgdDsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgICAgICB0ID0zRCB0W2ddDQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgbVtxXSA9M0QgeQ0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICB2
YXIgZiA9M0QgPQ0KLygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxc
Wyg/OlxbW15bXF1dKlxdfFsnIl1bXiciXSpbJyJdfFteW1xdJyJdKz0NCikr
XF18XFwufFteID4rfiwoXFtcXF0rKSt8Wz4rfl0pKFxzKixccyopPygoPzou
fFxyfFxuKSopL2csDQogICAgICAgICAgICBlID0zRCAwLA0KICAgICAgICAg
ICAgaiA9M0QgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywNCiAgICAgICAg
ICAgIGkgPTNEIGZhbHNlLA0KICAgICAgICAgICAgbyA9M0QgdHJ1ZTsNCiAg
ICAgICAgWzAsIDBdLnNvcnQoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAg
byA9M0QgZmFsc2U7DQogICAgICAgICAgICByZXR1cm4gMA0KICAgICAgICB9
KTsNCiAgICAgICAgdmFyIGsgPTNEIGZ1bmN0aW9uIChnLCBoLCBsLCBtKSB7
DQogICAgICAgICAgICBsID0zRCBsIHx8IFtdOw0KICAgICAgICAgICAgdmFy
IHEgPTNEIGggPTNEIGggfHwgczsNCiAgICAgICAgICAgIGlmIChoLm5vZGVU
eXBlICE9M0Q9M0QgMSAmJiBoLm5vZGVUeXBlICE9M0Q9M0QgOSkgcmV0dXJu
IFtdOw0KICAgICAgICAgICAgaWYgKCFnIHx8IHR5cGVvZiBnICE9M0Q9M0Qg
InN0cmluZyIpIHJldHVybiBsOw0KICAgICAgICAgICAgZm9yICh2YXIgcCA9
M0QgW10sIHYsIHQsIHksIFMsIEggPTNEIHRydWUsIE0gPTNEIHgoaCksIEkg
PTNEID0NCmc7DQogICAgICAgICAgICAoZi5leGVjKCIiKSwgdiA9M0QgZi5l
eGVjKEkpKSAhPTNEPTNEIG51bGw7KSB7DQogICAgICAgICAgICAgICAgSSA9
M0QgdlszXTsNCiAgICAgICAgICAgICAgICBwLnB1c2godlsxXSk7DQogICAg
ICAgICAgICAgICAgaWYgKHZbMl0pIHsNCiAgICAgICAgICAgICAgICAgICAg
UyA9M0QgdlszXTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAo
cC5sZW5ndGggPiAxICYmIHIuZXhlYyhnKSkgaWYgKHAubGVuZ3RoID0zRD0z
RD0zRCAyICYmID0NCm4ucmVsYXRpdmVbcFswXV0pIHQgPTNEIGdhKHBbMF0g
KyBwWzFdLCBoKTsNCiAgICAgICAgICAgIGVsc2UgZm9yICh0ID0zRCBuLnJl
bGF0aXZlW3BbMF1dID8gW2hdIDogayhwLnNoaWZ0KCksIGgpOyA9DQpwLmxl
bmd0aDspIHsNCiAgICAgICAgICAgICAgICBnID0zRCBwLnNoaWZ0KCk7DQog
ICAgICAgICAgICAgICAgaWYgKG4ucmVsYXRpdmVbZ10pIGcgKz0zRCBwLnNo
aWZ0KCk7DQogICAgICAgICAgICAgICAgdCA9M0QgZ2EoZywgdCkNCiAgICAg
ICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaWYgKCFtICYmIHAu
bGVuZ3RoID4gMSAmJiBoLm5vZGVUeXBlID0zRD0zRD0zRCA5ICYmICFNID0N
CiYmIG4ubWF0Y2guSUQudGVzdChwWzBdKSAmJiAhbi5tYXRjaC5JRC50ZXN0
KHBbcC5sZW5ndGggLSAxXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgdiA9
M0Qgay5maW5kKHAuc2hpZnQoKSwgaCwgTSk7DQogICAgICAgICAgICAgICAg
ICAgIGggPTNEIHYuZXhwciA/IGsuZmlsdGVyKHYuZXhwciwgdi5zZXQpWzBd
IDogdi5zZXRbMF0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgaWYgKGgpIHsNCiAgICAgICAgICAgICAgICAgICAgdiA9M0QgbSA/IHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHI6IHAucG9wKCksDQogICAg
ICAgICAgICAgICAgICAgICAgICBzZXQ6IHoobSkNCiAgICAgICAgICAgICAg
ICAgICAgfSA6IGsuZmluZChwLnBvcCgpLCBwLmxlbmd0aCA9M0Q9M0Q9M0Qg
MSAmJiAocFswXSA9DQo9M0Q9M0Q9M0QgIn4iIHx8IHBbMF0gPTNEPTNEPTNE
ICIrIikgJiYgaC5wYXJlbnROb2RlID8gaC5wYXJlbnROb2RlIDogaCwgPQ0K
TSk7DQogICAgICAgICAgICAgICAgICAgIHQgPTNEIHYuZXhwciA/IGsuZmls
dGVyKHYuZXhwciwgdi5zZXQpIDogdi5zZXQ7DQogICAgICAgICAgICAgICAg
ICAgIGlmIChwLmxlbmd0aCA+IDApIHkgPTNEIHoodCk7DQogICAgICAgICAg
ICAgICAgICAgIGVsc2UgSCA9M0QgZmFsc2U7DQogICAgICAgICAgICAgICAg
ICAgIGZvciAoOyBwLmxlbmd0aDspIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBEID0zRCBwLnBvcCgpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgdiA9M0QgRDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnJl
bGF0aXZlW0RdKSB2ID0zRCBwLnBvcCgpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBEID0zRCAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ID0zRD0zRCBudWxsKSB2ID0zRCBoOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgbi5yZWxhdGl2ZVtEXSh5LCB2LCBNKQ0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHkgPTNEIFtdDQog
ICAgICAgICAgICB9DQogICAgICAgICAgICB5IHx8ICh5ID0zRCB0KTsNCiAg
ICAgICAgICAgIHkgfHwgay5lcnJvcihEIHx8IGcpOw0KICAgICAgICAgICAg
aWYgKGouY2FsbCh5KSA9M0Q9M0Q9M0QgIltvYmplY3QgQXJyYXldIikgaWYg
KEgpIGlmIChoICYmID0NCmgubm9kZVR5cGUgPTNEPTNEPTNEIDEpIGZvciAo
ZyA9M0QgMDsgeVtnXSAhPTNEIG51bGw7IGcrKykgew0KICAgICAgICAgICAg
ICAgIGlmICh5W2ddICYmICh5W2ddID0zRD0zRD0zRCB0cnVlIHx8IHlbZ10u
bm9kZVR5cGUgPQ0KPTNEPTNEPTNEIDEgJiYgRShoLCB5W2ddKSkpIGwucHVz
aCh0W2ddKQ0KICAgICAgICAgICAgfSBlbHNlIGZvciAoZyA9M0QgMDsgeVtn
XSAhPTNEIG51bGw7IGcrKykgeVtnXSAmJiA9DQp5W2ddLm5vZGVUeXBlID0z
RD0zRD0zRCAxICYmIGwucHVzaCh0W2ddKTsNCiAgICAgICAgICAgIGVsc2Ug
bC5wdXNoLmFwcGx5KGwsIHkpOw0KICAgICAgICAgICAgZWxzZSB6KHksIGwp
Ow0KICAgICAgICAgICAgaWYgKFMpIHsNCiAgICAgICAgICAgICAgICBrKFMs
IHEsIGwsIG0pOw0KICAgICAgICAgICAgICAgIGsudW5pcXVlU29ydChsKQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGwNCiAgICAgICAg
fTsNCiAgICAgICAgay51bmlxdWVTb3J0ID0zRCBmdW5jdGlvbiAoZykgew0K
ICAgICAgICAgICAgaWYgKEIpIHsNCiAgICAgICAgICAgICAgICBpID0zRCBv
Ow0KICAgICAgICAgICAgICAgIGcuc29ydChCKTsNCiAgICAgICAgICAgICAg
ICBpZiAoaSkgZm9yICh2YXIgaCA9M0QgMTsgaCA8IGcubGVuZ3RoOyBoKysp
IGdbaF0gPQ0KPTNEPTNEPTNEIGdbaCAtIDFdICYmIGcuc3BsaWNlKGgtLSwg
MSkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBnDQogICAg
ICAgIH07DQogICAgICAgIGsubWF0Y2hlcyA9M0QgZnVuY3Rpb24gKGcsIGgp
IHsNCiAgICAgICAgICAgIHJldHVybiBrKGcsIG51bGwsIG51bGwsIGgpDQog
ICAgICAgIH07DQogICAgICAgIGsuZmluZCA9M0QgZnVuY3Rpb24gKGcsIGgs
IGwpIHsNCiAgICAgICAgICAgIHZhciBtLCBxOw0KICAgICAgICAgICAgaWYg
KCFnKSByZXR1cm4gW107DQogICAgICAgICAgICBmb3IgKHZhciBwID0zRCAw
LCB2ID0zRCBuLm9yZGVyLmxlbmd0aDsgcCA8IHY7IHArKykgew0KICAgICAg
ICAgICAgICAgIHZhciB0ID0zRCBuLm9yZGVyW3BdOw0KICAgICAgICAgICAg
ICAgIGlmIChxID0zRCBuLmxlZnRNYXRjaFt0XS5leGVjKGcpKSB7DQogICAg
ICAgICAgICAgICAgICAgIHZhciB5ID0zRCBxWzFdOw0KICAgICAgICAgICAg
ICAgICAgICBxLnNwbGljZSgxLCAxKTsNCiAgICAgICAgICAgICAgICAgICAg
aWYgKHkuc3Vic3RyKHkubGVuZ3RoIC0gMSkgIT0zRD0zRCAiXFwiKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICBxWzFdID0zRCAocVsxXSB8fCAiIiku
cmVwbGFjZSgvXFwvZywgIiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
bSA9M0Qgbi5maW5kW3RdKHEsIGgsIGwpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG0gIT0zRCBudWxsKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZyA9M0QgZy5yZXBsYWNlKG4ubWF0Y2hbdF0sICIiKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgbSB8fCAo
bSA9M0QgaC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTsNCiAgICAgICAg
ICAgIHJldHVybiB7DQogICAgICAgICAgICAgICAgc2V0OiBtLA0KICAgICAg
ICAgICAgICAgIGV4cHI6IGcNCiAgICAgICAgICAgIH0NCiAgICAgICAgfTsN
CiAgICAgICAgay5maWx0ZXIgPTNEIGZ1bmN0aW9uIChnLCBoLCBsLCBtKSB7
DQogICAgICAgICAgICBmb3IgKHZhciBxID0zRCBnLCBwID0zRCBbXSwgdiA9
M0QgaCwgdCwgeSwgUyA9M0QgaCAmJiBoWzBdID0NCiYmIHgoaFswXSk7IGcg
JiYgaC5sZW5ndGg7KSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgSCBp
biBuLmZpbHRlcikgaWYgKCh0ID0zRCA9DQpuLmxlZnRNYXRjaFtIXS5leGVj
KGcpKSAhPTNEIG51bGwgJiYgdFsyXSkgew0KICAgICAgICAgICAgICAgICAg
ICB2YXIgTSA9M0Qgbi5maWx0ZXJbSF0sDQogICAgICAgICAgICAgICAgICAg
ICAgICBJLCBEOw0KICAgICAgICAgICAgICAgICAgICBEID0zRCB0WzFdOw0K
ICAgICAgICAgICAgICAgICAgICB5ID0zRCBmYWxzZTsNCiAgICAgICAgICAg
ICAgICAgICAgdC5zcGxpY2UoMSwgMSk7DQogICAgICAgICAgICAgICAgICAg
IGlmIChELnN1YnN0cihELmxlbmd0aCAtIDEpICE9M0Q9M0QgIlxcIikgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPTNEPTNEPTNEIHApIHAg
PTNEIFtdOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4ucHJlRmls
dGVyW0hdKSBpZiAodCA9M0Qgbi5wcmVGaWx0ZXJbSF0odCwgPQ0KdiwgbCwg
cCwgbSwgUykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dCA9M0Q9M0Q9M0QgdHJ1ZSkgY29udGludWUNCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB5ID0zRCBJID0zRCB0cnVlOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHQpIGZvciAodmFyIFUgPTNEIDA7DQogICAgICAg
ICAgICAgICAgICAgICAgICAoRCA9M0QgdltVXSkgIT0zRCBudWxsOyBVKysp
IGlmIChEKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSSA9M0Qg
TShELCB0LCBVLCB2KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgSGEgPTNEIG0gXiAhISBJOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChsICYmIEkgIT0zRCBudWxsKSBpZiAoSGEpIHkgPTNEIHRydWU7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB2W1VdID0zRCBm
YWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChI
YSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnB1c2go
RCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPTNEIHRy
dWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
SSAhPTNEPTNEIHcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
IHx8ICh2ID0zRCBwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ID0zRCBnLnJlcGxhY2Uobi5tYXRjaFtIXSwgIiIpOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgheSkgcmV0dXJuIFtdOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgaWYgKGcgPTNEPTNEPTNEIHEpIGlmICh5
ID0zRD0zRCBudWxsKSBrLmVycm9yKGcpOw0KICAgICAgICAgICAgICAgIGVs
c2UgYnJlYWs7DQogICAgICAgICAgICAgICAgcSA9M0QgZw0KICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHYNCiAgICAgICAgfTsNCg0KICAg
ICAgICBrLmVycm9yID0zRCBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAg
dGhyb3cgIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246
ICIgKyBnOw0KICAgICAgICB9Ow0KICAgICAgICB2YXIgbiA9M0Qgay5zZWxl
Y3RvcnMgPTNEIHsNCiAgICAgICAgICAgIG9yZGVyOiBbIklEIiwgIk5BTUUi
LCAiVEFHIl0sDQogICAgICAgICAgICBtYXRjaDogew0KICAgICAgICAgICAg
ICAgIElEOiAvIygoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspLywNCiAg
ICAgICAgICAgICAgICBDTEFTUzogL1wuKCg/Oltcd1x1MDBjMC1cdUZGRkYt
XXxcXC4pKykvLA0KICAgICAgICAgICAgICAgIE5BTUU6ID0NCi9cW25hbWU9
M0RbJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspWyciXSpcXS8s
DQogICAgICAgICAgICAgICAgQVRUUjogPQ0KL1xbXHMqKCg/Oltcd1x1MDBj
MC1cdUZGRkYtXXxcXC4pKylccyooPzooXFM/PTNEKVxzKihbJyJdKikoLio/
KVwzfClccypcXT0NCi8sDQogICAgICAgICAgICAgICAgVEFHOiAvXigoPzpb
XHdcdTAwYzAtXHVGRkZGXCotXXxcXC4pKykvLA0KICAgICAgICAgICAgICAg
IENISUxEOiA9DQovOihvbmx5fG50aHxsYXN0fGZpcnN0KS1jaGlsZCg/Olwo
KGV2ZW58b2RkfFtcZG4rLV0qKVwpKT8vLA0KICAgICAgICAgICAgICAgIFBP
UzogPQ0KLzoobnRofGVxfGd0fGx0fGZpcnN0fGxhc3R8ZXZlbnxvZGQpKD86
XCgoXGQqKVwpKT8oPz0zRFteLV18JCkvLA0KICAgICAgICAgICAgICAgIFBT
RVVETzogPQ0KLzooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKSg/Olwo
KFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKT0NCik/Lw0K
ICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGxlZnRNYXRjaDoge30sDQog
ICAgICAgICAgICBhdHRyTWFwOiB7DQogICAgICAgICAgICAgICAgImNsYXNz
IjogImNsYXNzTmFtZSIsDQogICAgICAgICAgICAgICAgImZvciI6ICJodG1s
Rm9yIg0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGF0dHJIYW5kbGU6
IHsNCiAgICAgICAgICAgICAgICBocmVmOiBmdW5jdGlvbiAoZykgew0KICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZy5nZXRBdHRyaWJ1dGUoImhyZWYi
KQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAg
ICAgICByZWxhdGl2ZTogew0KICAgICAgICAgICAgICAgICIrIjogZnVuY3Rp
b24gKGcsIGgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPTNEIHR5
cGVvZiBoID0zRD0zRD0zRCAic3RyaW5nIiwNCiAgICAgICAgICAgICAgICAg
ICAgICAgIG0gPTNEIGwgJiYgIS9cVy8udGVzdChoKTsNCiAgICAgICAgICAg
ICAgICAgICAgbCA9M0QgbCAmJiAhbTsNCiAgICAgICAgICAgICAgICAgICAg
aWYgKG0pIGggPTNEIGgudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgICAgICAg
ICAgICAgbSA9M0QgMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
cSA9M0QgZy5sZW5ndGgsIHA7IG0gPCBxOyBtKyspIGlmIChwID0zRCA9DQpn
W21dKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIChwID0zRCBwLnByZXZpb3VzU2libGluZykg
JiYgcC5ub2RlVHlwZSAhPTNEPTNEID0NCjE7KTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGdbbV0gPTNEIGwgfHwgcCAmJiBwLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkgPQ0KPTNEPTNEPTNEIGggPyBwIHx8IGZhbHNlIDogcCA9M0Q9
M0Q9M0QgaA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgIGwgJiYgay5maWx0ZXIoaCwgZywgdHJ1ZSkNCiAgICAgICAgICAg
ICAgICB9LA0KICAgICAgICAgICAgICAgICI+IjogZnVuY3Rpb24gKGcsIGgp
IHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPTNEIHR5cGVvZiBoID0z
RD0zRD0zRCAic3RyaW5nIjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGwg
JiYgIS9cVy8udGVzdChoKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg
aCA9M0QgaC50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh2YXIgbSA9M0QgMCwgcSA9M0QgZy5sZW5ndGg7IG0gPCBxOyBt
KyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9M0Qg
Z1ttXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0zRCBwLnBhcmVu
dE5vZGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdbbV0g
PTNEIGwubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9DQo9M0Q9M0Q9M0QgaCA/
IGwgOiBmYWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPTNEIDA7DQog
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHEgPTNEIGcubGVuZ3RoOyBt
IDwgcTsgbSsrKSBpZiAocCA9M0QgZ1ttXSkgPQ0KZ1ttXSA9M0QgbCA/IHAu
cGFyZW50Tm9kZSA6IHAucGFyZW50Tm9kZSA9M0Q9M0Q9M0QgaDsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGwgJiYgay5maWx0ZXIoaCwgZywgdHJ1ZSkN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICAgICAgIiI6IGZ1bmN0aW9uIChnLCBoLCBsKSB7DQogICAg
ICAgICAgICAgICAgICAgIHZhciBtID0zRCBlKyssDQogICAgICAgICAgICAg
ICAgICAgICAgICBxID0zRCBkOw0KICAgICAgICAgICAgICAgICAgICBpZiAo
dHlwZW9mIGggPTNEPTNEPTNEICJzdHJpbmciICYmICEvXFcvLnRlc3QoaCkp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0zRCBoID0zRCBo
LnRvTG93ZXJDYXNlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBxID0z
RCBiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg
ICAgcSgicGFyZW50Tm9kZSIsIGgsIG0sIGcsIHAsIGwpDQogICAgICAgICAg
ICAgICAgfSwNCiAgICAgICAgICAgICAgICAifiI6IGZ1bmN0aW9uIChnLCBo
LCBsKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBtID0zRCBlKyssDQog
ICAgICAgICAgICAgICAgICAgICAgICBxID0zRCBkOw0KICAgICAgICAgICAg
ICAgICAgICBpZiAodHlwZW9mIGggPTNEPTNEPTNEICJzdHJpbmciICYmICEv
XFcvLnRlc3QoaCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBw
ID0zRCBoID0zRCBoLnRvTG93ZXJDYXNlKCk7DQogICAgICAgICAgICAgICAg
ICAgICAgICBxID0zRCBiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgcSgicHJldmlvdXNTaWJsaW5nIiwgaCwgbSwgZywg
cCwgbCkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAg
ICAgICAgICAgZmluZDogew0KICAgICAgICAgICAgICAgIElEOiBmdW5jdGlv
biAoZywgaCwgbCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9m
IGguZ2V0RWxlbWVudEJ5SWQgIT0zRD0zRCAidW5kZWZpbmVkIiAmJiA9DQoh
bCkgcmV0dXJuIChnID0zRCBoLmdldEVsZW1lbnRCeUlkKGdbMV0pKSA/IFtn
XSA6IFtdDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBO
QU1FOiBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAgICAgICAgICAgICBp
ZiAodHlwZW9mIGguZ2V0RWxlbWVudHNCeU5hbWUgIT0zRD0zRCAidW5kZWZp
bmVkIikgPQ0Kew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGwgPTNE
IFtdOw0KICAgICAgICAgICAgICAgICAgICAgICAgaCA9M0QgaC5nZXRFbGVt
ZW50c0J5TmFtZShnWzFdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIG0gPTNEIDAsIHEgPTNEIGgubGVuZ3RoOyBtIDwgcTsgbSsrKSA9
DQpoW21dLmdldEF0dHJpYnV0ZSgibmFtZSIpID0zRD0zRD0zRCBnWzFdICYm
IGwucHVzaChoW21dKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsLmxlbmd0aCA9M0Q9M0Q9M0QgMCA/IG51bGwgOiBsDQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAg
ICAgIFRBRzogZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGguZ2V0RWxlbWVudHNCeVRhZ05hbWUoZ1sxXSkNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgcHJl
RmlsdGVyOiB7DQogICAgICAgICAgICAgICAgQ0xBU1M6IGZ1bmN0aW9uIChn
LCBoLCBsLCBtLCBxLCBwKSB7DQogICAgICAgICAgICAgICAgICAgIGcgPTNE
ICIgIiArIGdbMV0ucmVwbGFjZSgvXFwvZywgIiIpICsgIiAiOw0KICAgICAg
ICAgICAgICAgICAgICBpZiAocCkgcmV0dXJuIGc7DQogICAgICAgICAgICAg
ICAgICAgIHAgPTNEIDA7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IHY7DQogICAgICAgICAgICAgICAgICAgICh2ID0zRCBoW3BdKSAhPTNEIG51
bGw7IHArKykgaWYgKHYpIGlmIChxIF4gPQ0KKHYuY2xhc3NOYW1lICYmICgi
ICIgKyB2LmNsYXNzTmFtZSArICIgIikucmVwbGFjZSgvW1x0XG5dL2csICIg
PQ0KIikuaW5kZXhPZihnKSA+PTNEIDApKSBsIHx8IG0ucHVzaCh2KTsNCiAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobCkgaFtwXSA9M0QgZmFsc2U7
DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZQ0KICAgICAgICAg
ICAgICAgIH0sDQogICAgICAgICAgICAgICAgSUQ6IGZ1bmN0aW9uIChnKSB7
DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBnWzFdLnJlcGxhY2UoL1xc
L2csICIiKQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAg
VEFHOiBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ1sxXS50b0xvd2VyQ2FzZSgpDQogICAgICAgICAgICAgICAgfSwNCiAg
ICAgICAgICAgICAgICBDSElMRDogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAg
ICAgICAgICAgICAgaWYgKGdbMV0gPTNEPTNEPTNEICJudGgiKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgaCA9M0QgLygtPykoXGQqKW4oKD86
XCt8LSk/XGQqKS8uZXhlYyhnWzJdID0NCj0zRD0zRD0zRCAiZXZlbiIgJiYg
IjJuIiB8fCBnWzJdID0zRD0zRD0zRCAib2RkIiAmJiAiMm4rMSIgfHwgPQ0K
IS9cRC8udGVzdChnWzJdKSAmJiAiMG4rIiArIGdbMl0gfHwgZ1syXSk7DQog
ICAgICAgICAgICAgICAgICAgICAgICBnWzJdID0zRCBoWzFdICsgKGhbMl0g
fHwgMSkgLSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgZ1szXSA9M0Qg
aFszXSAtIDANCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICBnWzBdID0zRCBlKys7DQogICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBB
VFRSOiBmdW5jdGlvbiAoZywgaCwgbCwgbSwgcSwgcCkgew0KICAgICAgICAg
ICAgICAgICAgICBoID0zRCBnWzFdLnJlcGxhY2UoL1xcL2csICIiKTsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKCFwICYmIG4uYXR0ck1hcFtoXSkgZ1sx
XSA9M0Qgbi5hdHRyTWFwW2hdOw0KICAgICAgICAgICAgICAgICAgICBpZiAo
Z1syXSA9M0Q9M0Q9M0QgIn49M0QiKSBnWzRdID0zRCAiICIgKyBnWzRdICsg
IiA9DQoiOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZw0KICAgICAg
ICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgUFNFVURPOiBmdW5jdGlv
biAoZywgaCwgbCwgbSwgcSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAo
Z1sxXSA9M0Q9M0Q9M0QgIm5vdCIpIGlmICgoZi5leGVjKGdbM10pIHx8ID0N
CiIiKS5sZW5ndGggPiAxIHx8IC9eXHcvLnRlc3QoZ1szXSkpIGdbM10gPTNE
IGsoZ1szXSwgbnVsbCwgbnVsbCwgaCk7DQogICAgICAgICAgICAgICAgICAg
IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgZyA9M0Qgay5maWx0
ZXIoZ1szXSwgaCwgbCwgdHJ1ZSBeIHEpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgbCB8fCBtLnB1c2guYXBwbHkobSwgZyk7DQogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2UNCiAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChuLm1hdGNoLlBPUy50ZXN0KGdbMF0pIHx8ID0NCm4ubWF0
Y2guQ0hJTEQudGVzdChnWzBdKSkgcmV0dXJuIHRydWU7DQogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnDQogICAgICAgICAgICAgICAgfSwNCiAgICAg
ICAgICAgICAgICBQT1M6IGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAgICAg
ICAgICAgIGcudW5zaGlmdCh0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGcNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0K
ICAgICAgICAgICAgZmlsdGVyczogew0KICAgICAgICAgICAgICAgIGVuYWJs
ZWQ6IGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVy
biBnLmRpc2FibGVkID0zRD0zRD0zRCBmYWxzZSAmJiBnLnR5cGUgIT0zRD0z
RCA9DQoiaGlkZGVuIg0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAg
ICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnLmRpc2FibGVkID0zRD0zRD0zRCB0cnVlDQogICAg
ICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBjaGVja2VkOiBmdW5j
dGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZy5jaGVj
a2VkID0zRD0zRD0zRCB0cnVlDQogICAgICAgICAgICAgICAgfSwNCiAgICAg
ICAgICAgICAgICBzZWxlY3RlZDogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGcuc2VsZWN0ZWQgPTNEPTNEPTNEIHRydWUN
CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHBhcmVudDog
ZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEh
Zy5maXJzdENoaWxkDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAg
ICAgICBlbXB0eTogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICFnLmZpcnN0Q2hpbGQNCiAgICAgICAgICAgICAgICB9LA0K
ICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24gKGcsIGgsIGwpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICEhayhsWzNdLCBnKS5sZW5ndGgN
CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGhlYWRlcjog
ZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9o
XGQvaS50ZXN0KGcubm9kZU5hbWUpDQogICAgICAgICAgICAgICAgfSwNCiAg
ICAgICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbiAoZykgew0KICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gInRleHQiID0zRD0zRD0zRCBnLnR5cGUNCiAg
ICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHJhZGlvOiBmdW5j
dGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gInJhZGlv
IiA9M0Q9M0Q9M0QgZy50eXBlDQogICAgICAgICAgICAgICAgfSwNCiAgICAg
ICAgICAgICAgICBjaGVja2JveDogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICJjaGVja2JveCIgPTNEPTNEPTNEIGcudHlw
ZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgZmlsZTog
ZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJm
aWxlIiA9M0Q9M0Q9M0QgZy50eXBlDQogICAgICAgICAgICAgICAgfSwNCiAg
ICAgICAgICAgICAgICBwYXNzd29yZDogZnVuY3Rpb24gKGcpIHsNCiAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICJwYXNzd29yZCIgPTNEPTNEPTNEIGcu
dHlwZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgc3Vi
bWl0OiBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gInN1Ym1pdCIgPTNEPTNEPTNEIGcudHlwZQ0KICAgICAgICAgICAgICAg
IH0sDQogICAgICAgICAgICAgICAgaW1hZ2U6IGZ1bmN0aW9uIChnKSB7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiAiaW1hZ2UiID0zRD0zRD0zRCBn
LnR5cGUNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHJl
c2V0OiBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gInJlc2V0IiA9M0Q9M0Q9M0QgZy50eXBlDQogICAgICAgICAgICAgICAg
fSwNCiAgICAgICAgICAgICAgICBidXR0b246IGZ1bmN0aW9uIChnKSB7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiAiYnV0dG9uIiA9M0Q9M0Q9M0Qg
Zy50eXBlIHx8ID0NCmcubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9M0Q9M0Q9
M0QgImJ1dHRvbiINCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAg
ICAgIGlucHV0OiBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gPQ0KL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50
ZXN0KGcubm9kZU5hbWUpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfSwNCiAgICAgICAgICAgIHNldEZpbHRlcnM6IHsNCiAgICAgICAgICAg
ICAgICBmaXJzdDogZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGggPTNEPTNEPTNEIDANCiAgICAgICAgICAgICAgICB9
LA0KICAgICAgICAgICAgICAgIGxhc3Q6IGZ1bmN0aW9uIChnLCBoLCBsLCBt
KSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBoID0zRD0zRD0zRCBt
Lmxlbmd0aCAtIDENCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAg
ICAgIGV2ZW46IGZ1bmN0aW9uIChnLCBoKSB7DQogICAgICAgICAgICAgICAg
ICAgIHJldHVybiBoICUgMiA9M0Q9M0Q9M0QgMA0KICAgICAgICAgICAgICAg
IH0sDQogICAgICAgICAgICAgICAgb2RkOiBmdW5jdGlvbiAoZywgaCkgew0K
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCAlIDIgPTNEPTNEPTNEIDEN
CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGx0OiBmdW5j
dGlvbiAoZywgaCwgbCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aCA8IGxbM10gLSAwDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAg
ICAgICBndDogZnVuY3Rpb24gKGcsIGgsIGwpIHsNCiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGggPiBsWzNdIC0gMA0KICAgICAgICAgICAgICAgIH0s
DQogICAgICAgICAgICAgICAgbnRoOiBmdW5jdGlvbiAoZywgaCwgbCkgew0K
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbFszXSAtIDAgPTNEPTNEPTNE
IGgNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGVxOiBm
dW5jdGlvbiAoZywgaCwgbCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbFszXSAtIDAgPTNEPTNEPTNEIGgNCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICB9LA0KICAgICAgICAgICAgZmlsdGVyOiB7DQogICAgICAg
ICAgICAgICAgUFNFVURPOiBmdW5jdGlvbiAoZywgaCwgbCwgbSkgew0KICAg
ICAgICAgICAgICAgICAgICB2YXIgcSA9M0QgaFsxXSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHAgPTNEIG4uZmlsdGVyc1txXTsNCiAgICAgICAgICAg
ICAgICAgICAgaWYgKHApIHJldHVybiBwKGcsIGwsIGgsIG0pOw0KICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChxID0zRD0zRD0zRCAiY29udGFpbnMi
KSByZXR1cm4gPQ0KKGcudGV4dENvbnRlbnQgfHwgZy5pbm5lclRleHQgfHwg
YShbZ10pIHx8ICIiKS5pbmRleE9mKGhbM10pID49M0QgMDsNCiAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAocSA9M0Q9M0Q9M0QgIm5vdCIpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIGggPTNEDQogICAgICAgICAgICAgICAg
ICAgICAgICBoWzNdOw0KICAgICAgICAgICAgICAgICAgICAgICAgbCA9M0Qg
MDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobSA9M0QgaC5sZW5n
dGg7IGwgPCBtOyBsKyspIGlmIChoW2xdID0NCj0zRD0zRD0zRCBnKSByZXR1
cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugay5lcnJvcigiU3ludGF4
IGVycm9yLCB1bnJlY29nbml6ZWQgPQ0KZXhwcmVzc2lvbjogIiArIHEpDQog
ICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBDSElMRDogZnVu
Y3Rpb24gKGcsIGgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPTNE
IGhbMV0sDQogICAgICAgICAgICAgICAgICAgICAgICBtID0zRCBnOw0KICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGwpIHsNCiAgICAgICAgICAgICAg
ICAgICAgY2FzZSAib25seSI6DQogICAgICAgICAgICAgICAgICAgIGNhc2Ug
ImZpcnN0IjoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBtID0z
RCBtLnByZXZpb3VzU2libGluZzspIGlmIChtLm5vZGVUeXBlID0NCj0zRD0z
RD0zRCAxKSByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobCA9M0Q9M0Q9M0QgImZpcnN0IikgcmV0dXJuIHRydWU7DQogICAg
ICAgICAgICAgICAgICAgICAgICBtID0zRCBnOw0KICAgICAgICAgICAgICAg
ICAgICBjYXNlICJsYXN0IjoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoOyBtID0zRCBtLm5leHRTaWJsaW5nOykgaWYgKG0ubm9kZVR5cGUgPQ0K
PTNEPTNEPTNEIDEpIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgICAgICBjYXNl
ICJudGgiOg0KICAgICAgICAgICAgICAgICAgICAgICAgbCA9M0QgaFsyXTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxID0zRCBoWzNdOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPTNEPTNEPTNEIDEgJiYgcSA9
M0Q9M0Q9M0QgMCkgcmV0dXJuIHRydWU7DQogICAgICAgICAgICAgICAgICAg
ICAgICBoID0zRCBoWzBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHAgPTNEIGcucGFyZW50Tm9kZTsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwICYmIChwLnNpemNhY2hlICE9M0Q9M0QgaCB8fCAhZy5ub2RlSW5k
ZXgpKSA9DQp7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYg
PTNEIDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChtID0z
RCBwLmZpcnN0Q2hpbGQ7IG07IG0gPTNEDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbS5uZXh0U2libGluZykgaWYgKG0ubm9kZVR5cGUgPTNEPTNE
PTNEIDEpID0NCm0ubm9kZUluZGV4ID0zRCArK3Y7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcC5zaXpjYWNoZSA9M0QgaA0KICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZyA9M0Qg
Zy5ub2RlSW5kZXggLSBxOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGwgPTNEPTNEPTNEIDAgPyBnID0zRD0zRD0zRCAwIDogZyAlIGwgPQ0K
PTNEPTNEPTNEIDAgJiYgZyAvIGwgPj0zRCAwDQogICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIElE
OiBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZy5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSAmJiA9DQpnLmdldEF0dHJpYnV0
ZSgiaWQiKSA9M0Q9M0Q9M0QgaA0KICAgICAgICAgICAgICAgIH0sDQogICAg
ICAgICAgICAgICAgVEFHOiBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaCA9M0Q9M0Q9M0QgIioiICYmIGcubm9kZVR5
cGUgPTNEPTNEPTNEIDEgfHwgPQ0KZy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
ID0zRD0zRD0zRCBoDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAg
ICAgICBDTEFTUzogZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICgiICIgKyAoZy5jbGFzc05hbWUgfHwgPQ0KZy5nZXRB
dHRyaWJ1dGUoImNsYXNzIikpICsgIiAiKS5pbmRleE9mKGgpID4gLTENCiAg
ICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIEFUVFI6IGZ1bmN0
aW9uIChnLCBoKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBsID0zRCBo
WzFdOw0KICAgICAgICAgICAgICAgICAgICBnID0zRCBuLmF0dHJIYW5kbGVb
bF0gPyBuLmF0dHJIYW5kbGVbbF0oZykgOiBnW2xdID0NCiE9M0QgbnVsbCA/
IGdbbF0gOiBnLmdldEF0dHJpYnV0ZShsKTsNCiAgICAgICAgICAgICAgICAg
ICAgbCA9M0QgZyArICIiOw0KICAgICAgICAgICAgICAgICAgICB2YXIgbSA9
M0QgaFsyXTsNCiAgICAgICAgICAgICAgICAgICAgaCA9M0QgaFs0XTsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGcgPTNEPTNEIG51bGwgPyBtID0z
RD0zRD0zRCAiIT0zRCIgOiBtID0NCj0zRD0zRD0zRCAiPTNEIiA/IGwgPTNE
PTNEPTNEIGggOiBtID0zRD0zRD0zRCAiKj0zRCIgPyBsLmluZGV4T2YoaCkg
Pj0zRCA9DQowIDogbSA9M0Q9M0Q9M0QgIn49M0QiID8gKCIgIiArIGwgKyAi
ICIpLmluZGV4T2YoaCkgPj0zRCAwIDogIWggPyBsICYmIGcgPQ0KIT0zRD0z
RCBmYWxzZSA6IG0gPTNEPTNEPTNEICIhPTNEIiA/IGwgIT0zRD0zRCBoIDog
bSA9M0Q9M0Q9M0QgIl49M0QiID8gPQ0KbC5pbmRleE9mKGgpID0zRD0zRD0z
RCAwIDogbSA9M0Q9M0Q9M0QgIiQ9M0QiID8gbC5zdWJzdHIobC5sZW5ndGgg
LSA9DQpoLmxlbmd0aCkgPTNEPTNEPTNEIGggOiBtID0zRD0zRD0zRCAifD0z
RCIgPyBsID0zRD0zRD0zRCBoIHx8ID0NCmwuc3Vic3RyKDAsIGgubGVuZ3Ro
ICsgMSkgPTNEPTNEPTNEIGggKyAiLSIgOiBmYWxzZQ0KICAgICAgICAgICAg
ICAgIH0sDQogICAgICAgICAgICAgICAgUE9TOiBmdW5jdGlvbiAoZywgaCwg
bCwgbSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgcSA9M0Qgbi5zZXRG
aWx0ZXJzW2hbMl1dOw0KICAgICAgICAgICAgICAgICAgICBpZiAocSkgcmV0
dXJuIHEoZywgbCwgaCwgbSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICB9DQogICAgICAgIH0sDQogICAgICAgICAgICByID0zRCBuLm1hdGNo
LlBPUzsNCiAgICAgICAgZm9yICh2YXIgdSBpbiBuLm1hdGNoKSB7DQogICAg
ICAgICAgICBuLm1hdGNoW3VdID0zRCBuZXcgUmVnRXhwKG4ubWF0Y2hbdV0u
c291cmNlICsgPQ0KLyg/IVteXFtdKlxdKSg/IVteXChdKlwpKS8uc291cmNl
KTsNCiAgICAgICAgICAgIG4ubGVmdE1hdGNoW3VdID0zRCBuZXcgUmVnRXhw
KC8oXig/Oi58XHJ8XG4pKj8pLy5zb3VyY2UgKyA9DQpuLm1hdGNoW3VdLnNv
dXJjZS5yZXBsYWNlKC9cXChcZCspL2csIGZ1bmN0aW9uIChnLCBoKSB7DQog
ICAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyAoaCAtIDAgKyAxKQ0KICAg
ICAgICAgICAgfSkpDQogICAgICAgIH0NCiAgICAgICAgdmFyIHogPTNEIGZ1
bmN0aW9uIChnLCBoKSB7DQogICAgICAgICAgICBnID0zRCBBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbChnLCAwKTsNCiAgICAgICAgICAgIGlmIChoKSB7
DQogICAgICAgICAgICAgICAgaC5wdXNoLmFwcGx5KGgsIGcpOw0KICAgICAg
ICAgICAgICAgIHJldHVybiBoDQogICAgICAgICAgICB9DQogICAgICAgICAg
ICByZXR1cm4gZw0KICAgICAgICB9Ow0KICAgICAgICB0cnkgew0KICAgICAg
ICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocy5kb2N1bWVudEVs
ZW1lbnQuY2hpbGROb2RlcywgMCkNCiAgICAgICAgfSBjYXRjaCAoQykgew0K
ICAgICAgICAgICAgeiA9M0QgZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAgICAg
ICAgICAgICBoID0zRCBoIHx8IFtdOw0KICAgICAgICAgICAgICAgIGlmIChq
LmNhbGwoZykgPTNEPTNEPTNEICJbb2JqZWN0IEFycmF5XSIpID0NCkFycmF5
LnByb3RvdHlwZS5wdXNoLmFwcGx5KGgsIGcpOw0KICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHR5cGVvZiBnLmxlbmd0aCA9M0Q9M0Q9M0QgIm51bWJlciIp
IGZvciAodmFyIGwgPQ0KPTNEIDAsIG0gPTNEIGcubGVuZ3RoOyBsIDwgbTsg
bCsrKSBoLnB1c2goZ1tsXSk7DQogICAgICAgICAgICAgICAgZWxzZSBmb3Ig
KGwgPTNEIDA7IGdbbF07IGwrKykgaC5wdXNoKGdbbF0pOw0KICAgICAgICAg
ICAgICAgIHJldHVybiBoDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICAgICAgdmFyIEI7DQogICAgICAgIGlmIChzLmRvY3VtZW50RWxlbWVudC5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbikgQiA9M0QgZnVuY3Rpb24gPQ0KKGcs
IGgpIHsNCiAgICAgICAgICAgIGlmICghZy5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbiB8fCA9DQohaC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikgew0KICAg
ICAgICAgICAgICAgIGlmIChnID0zRD0zRCBoKSBpID0zRCB0cnVlOw0KICAg
ICAgICAgICAgICAgIHJldHVybiBnLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
ID8gLTEgOiAxDQogICAgICAgICAgICB9DQogICAgICAgICAgICBnID0zRCBn
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGgpICYgNCA/IC0xIDogZyA9M0Q9
M0Q9M0QgaCA9DQo/IDAgOiAxOw0KICAgICAgICAgICAgaWYgKGcgPTNEPTNE
PTNEIDApIGkgPTNEIHRydWU7DQogICAgICAgICAgICByZXR1cm4gZw0KICAg
ICAgICB9Ow0KICAgICAgICBlbHNlIGlmICgic291cmNlSW5kZXgiIGluIHMu
ZG9jdW1lbnRFbGVtZW50KSBCID0zRCBmdW5jdGlvbiAoZywgPQ0KaCkgew0K
ICAgICAgICAgICAgaWYgKCFnLnNvdXJjZUluZGV4IHx8ICFoLnNvdXJjZUlu
ZGV4KSB7DQogICAgICAgICAgICAgICAgaWYgKGcgPTNEPTNEIGgpIGkgPTNE
IHRydWU7DQogICAgICAgICAgICAgICAgcmV0dXJuIGcuc291cmNlSW5kZXgg
PyAtMSA6IDENCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGcgPTNEIGcu
c291cmNlSW5kZXggLSBoLnNvdXJjZUluZGV4Ow0KICAgICAgICAgICAgaWYg
KGcgPTNEPTNEPTNEIDApIGkgPTNEIHRydWU7DQogICAgICAgICAgICByZXR1
cm4gZw0KICAgICAgICB9Ow0KICAgICAgICBlbHNlIGlmIChzLmNyZWF0ZVJh
bmdlKSBCID0zRCBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAgICAgaWYg
KCFnLm93bmVyRG9jdW1lbnQgfHwgIWgub3duZXJEb2N1bWVudCkgew0KICAg
ICAgICAgICAgICAgIGlmIChnID0zRD0zRCBoKSBpID0zRCB0cnVlOw0KICAg
ICAgICAgICAgICAgIHJldHVybiBnLm93bmVyRG9jdW1lbnQgPyAtMSA6IDEN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciBsID0zRCBnLm93bmVy
RG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSwNCiAgICAgICAgICAgICAgICBtID0z
RA0KICAgICAgICAgICAgaC5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
DQogICAgICAgICAgICBsLnNldFN0YXJ0KGcsIDApOw0KICAgICAgICAgICAg
bC5zZXRFbmQoZywgMCk7DQogICAgICAgICAgICBtLnNldFN0YXJ0KGgsIDAp
Ow0KICAgICAgICAgICAgbS5zZXRFbmQoaCwgMCk7DQogICAgICAgICAgICBn
ID0zRCBsLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19F
TkQsIG0pOw0KICAgICAgICAgICAgaWYgKGcgPTNEPTNEPTNEIDApIGkgPTNE
IHRydWU7DQogICAgICAgICAgICByZXR1cm4gZw0KICAgICAgICB9Ow0KICAg
ICAgICAoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGcgPTNEIHMu
Y3JlYXRlRWxlbWVudCgiZGl2IiksDQogICAgICAgICAgICAgICAgaCA9M0Qg
InNjcmlwdCIgKyAobmV3IERhdGUpLmdldFRpbWUoKTsNCiAgICAgICAgICAg
IGcuaW5uZXJIVE1MID0zRCAiPGEgbmFtZT0zRCciICsgaCArICInLz4iOw0K
ICAgICAgICAgICAgdmFyIGwgPTNEIHMuZG9jdW1lbnRFbGVtZW50Ow0KICAg
ICAgICAgICAgbC5pbnNlcnRCZWZvcmUoZywgbC5maXJzdENoaWxkKTsNCiAg
ICAgICAgICAgIGlmIChzLmdldEVsZW1lbnRCeUlkKGgpKSB7DQogICAgICAg
ICAgICAgICAgbi5maW5kLklEID0zRCBmdW5jdGlvbiAobSwgcSwgcCkgew0K
ICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHEuZ2V0RWxlbWVudEJ5
SWQgIT0zRD0zRCAidW5kZWZpbmVkIiAmJiA9DQohcCkgcmV0dXJuIChxID0z
RCBxLmdldEVsZW1lbnRCeUlkKG1bMV0pKSA/IHEuaWQgPTNEPTNEPTNEIG1b
MV0gfHwgPQ0KdHlwZW9mIHEuZ2V0QXR0cmlidXRlTm9kZSAhPTNEPTNEICJ1
bmRlZmluZWQiICYmID0NCnEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS5ub2Rl
VmFsdWUgPTNEPTNEPTNEIG1bMV0gPyBbcV0gOiB3IDogW10NCiAgICAgICAg
ICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIG4uZmlsdGVyLklEID0zRCBm
dW5jdGlvbiAobSwgcSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgcCA9
M0QgdHlwZW9mIG0uZ2V0QXR0cmlidXRlTm9kZSAhPTNEPTNEID0NCiJ1bmRl
ZmluZWQiICYmIG0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsNCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG0ubm9kZVR5cGUgPTNEPTNEPTNEIDEgJiYg
cCAmJiBwLm5vZGVWYWx1ZSA9DQo9M0Q9M0Q9M0QgcQ0KICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGwucmVtb3ZlQ2hp
bGQoZyk7DQogICAgICAgICAgICBsID0zRCBnID0zRCBudWxsDQogICAgICAg
IH0pKCk7DQogICAgICAgIChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2
YXIgZyA9M0Qgcy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAg
IGcuYXBwZW5kQ2hpbGQocy5jcmVhdGVDb21tZW50KCIiKSk7DQogICAgICAg
ICAgICBpZiAoZy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCA+
IDApIG4uZmluZC5UQUcgPTNEID0NCmZ1bmN0aW9uIChoLCBsKSB7DQogICAg
ICAgICAgICAgICAgbCA9M0QgbC5nZXRFbGVtZW50c0J5VGFnTmFtZShoWzFd
KTsNCiAgICAgICAgICAgICAgICBpZiAoaFsxXSA9M0Q9M0Q9M0QgIioiKSB7
DQogICAgICAgICAgICAgICAgICAgIGggPTNEIFtdOw0KICAgICAgICAgICAg
ICAgICAgICBmb3IgKHZhciBtID0zRCAwOyBsW21dOyBtKyspIGxbbV0ubm9k
ZVR5cGUgPTNEPTNEPTNEID0NCjEgJiYgaC5wdXNoKGxbbV0pOw0KICAgICAg
ICAgICAgICAgICAgICBsID0zRCBoDQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIHJldHVybiBsDQogICAgICAgICAgICB9Ow0KICAgICAg
ICAgICAgZy5pbm5lckhUTUwgPTNEICI8YSBocmVmPTNEJyMnPjwvYT4iOw0K
ICAgICAgICAgICAgaWYgKGcuZmlyc3RDaGlsZCAmJiB0eXBlb2YgZy5maXJz
dENoaWxkLmdldEF0dHJpYnV0ZSAhPTNEPTNEID0NCiJ1bmRlZmluZWQiICYm
IGcuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSAhPTNEPTNEICIj
IikgPQ0Kbi5hdHRySGFuZGxlLmhyZWYgPTNEIGZ1bmN0aW9uIChoKSB7DQog
ICAgICAgICAgICAgICAgcmV0dXJuIGguZ2V0QXR0cmlidXRlKCJocmVmIiwg
MikNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICBnID0zRCBudWxsDQog
ICAgICAgIH0pKCk7DQogICAgICAgIHMucXVlcnlTZWxlY3RvckFsbCAmJg0K
ICAgICAgICBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgZyA9M0Qg
aywNCiAgICAgICAgICAgICAgICBoID0zRCBzLmNyZWF0ZUVsZW1lbnQoImRp
diIpOw0KICAgICAgICAgICAgaC5pbm5lckhUTUwgPTNEICI8cCBjbGFzcz0z
RCdURVNUJz48L3A+IjsNCiAgICAgICAgICAgIGlmICghKGgucXVlcnlTZWxl
Y3RvckFsbCAmJiA9DQpoLnF1ZXJ5U2VsZWN0b3JBbGwoIi5URVNUIikubGVu
Z3RoID0zRD0zRD0zRCAwKSkgew0KICAgICAgICAgICAgICAgIGsgPTNEIGZ1
bmN0aW9uIChtLCBxLCBwLCB2KSB7DQogICAgICAgICAgICAgICAgICAgIHEg
PTNEIHEgfHwgczsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCF2ICYmIHEu
bm9kZVR5cGUgPTNEPTNEPTNEIDkgJiYgIXgocSkpIHRyeSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geihxLnF1ZXJ5U2VsZWN0b3JBbGwo
bSksIHApDQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnKG0sIHEsIHAsIHYpDQogICAg
ICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBsIGlu
IGcpIGtbbF0gPTNEIGdbbF07DQogICAgICAgICAgICAgICAgaCA9M0QgbnVs
bA0KICAgICAgICAgICAgfQ0KICAgICAgICB9KCk7DQogICAgICAgIChmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgZyA9M0Qgcy5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsNCiAgICAgICAgICAgIGcuaW5uZXJIVE1MID0zRCAiPGRp
diBjbGFzcz0zRCd0ZXN0IGUnPjwvZGl2PjxkaXYgPQ0KY2xhc3M9M0QndGVz
dCc+PC9kaXY+IjsNCiAgICAgICAgICAgIGlmICghKCFnLmdldEVsZW1lbnRz
QnlDbGFzc05hbWUgfHwgPQ0KZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJl
IikubGVuZ3RoID0zRD0zRD0zRCAwKSkgew0KICAgICAgICAgICAgICAgIGcu
bGFzdENoaWxkLmNsYXNzTmFtZSA9M0QgImUiOw0KICAgICAgICAgICAgICAg
IGlmIChnLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGggIT0z
RD0zRCAxKSB7DQogICAgICAgICAgICAgICAgICAgIG4ub3JkZXIuc3BsaWNl
KDEsIDAsICJDTEFTUyIpOw0KICAgICAgICAgICAgICAgICAgICBuLmZpbmQu
Q0xBU1MgPTNEIGZ1bmN0aW9uIChoLCBsLCBtKSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodHlwZW9mIGwuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSAhPTNEPTNEID0NCiJ1bmRlZmluZWQiICYmICFtKSByZXR1cm4gbC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGhbMV0pDQogICAgICAgICAgICAgICAgICAg
IH07DQogICAgICAgICAgICAgICAgICAgIGcgPTNEIG51bGwNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0pKCk7DQogICAg
ICAgIHZhciBFID0zRCBzLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID8NCiAg
ICAgICAgZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAgICAgICAgIHJldHVybiAh
IShnLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGgpICYgMTYpDQogICAgICAg
IH0gOiBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAgICAgcmV0dXJuIGcg
IT0zRD0zRCBoICYmIChnLmNvbnRhaW5zID8gZy5jb250YWlucyhoKSA6IHRy
dWUpDQogICAgICAgIH0sDQogICAgICAgICAgICB4ID0zRCBmdW5jdGlvbiAo
Zykgew0KICAgICAgICAgICAgcmV0dXJuIChnID0zRCAoZyA/IGcub3duZXJE
b2N1bWVudCB8fCBnIDogPQ0KMCkuZG9jdW1lbnRFbGVtZW50KSA/IGcubm9k
ZU5hbWUgIT0zRD0zRCAiSFRNTCIgOiBmYWxzZQ0KICAgICAgICB9LA0KICAg
ICAgICAgICAgZ2EgPTNEIGZ1bmN0aW9uIChnLCBoKSB7DQogICAgICAgICAg
ICB2YXIgbCA9M0QgW10sDQogICAgICAgICAgICAgICAgbSA9M0QgIiIsDQog
ICAgICAgICAgICAgICAgcTsNCiAgICAgICAgICAgIGZvciAoaCA9M0QgaC5u
b2RlVHlwZSA/IFtoXSA6IGg7IHEgPTNEID0NCm4ubWF0Y2guUFNFVURPLmV4
ZWMoZyk7KSB7DQogICAgICAgICAgICAgICAgbSArPTNEIHFbMF07DQogICAg
ICAgICAgICAgICAgZyA9M0QgZy5yZXBsYWNlKG4ubWF0Y2guUFNFVURPLCAi
IikNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGcgPTNEIG4ucmVsYXRp
dmVbZ10gPyBnICsgIioiIDogZzsNCiAgICAgICAgICAgIHEgPTNEIDA7DQog
ICAgICAgICAgICBmb3IgKHZhciBwID0zRCBoLmxlbmd0aDsgcSA8IHA7IHEr
KykgayhnLCBoW3FdLCBsKTsNCiAgICAgICAgICAgIHJldHVybiBrLmZpbHRl
cihtLCBsKQ0KICAgICAgICB9Ow0KICAgICAgICBjLmZpbmQgPTNEIGs7DQog
ICAgICAgIGMuZXhwciA9M0Qgay5zZWxlY3RvcnM7DQogICAgICAgIGMuZXhw
clsiOiJdID0zRCBjLmV4cHIuZmlsdGVyczsNCiAgICAgICAgYy51bmlxdWUg
PTNEIGsudW5pcXVlU29ydDsNCiAgICAgICAgYy50ZXh0ID0zRCBhOw0KICAg
ICAgICBjLmlzWE1MRG9jID0zRCB4Ow0KICAgICAgICBjLmNvbnRhaW5zID0z
RCBFDQogICAgfSkoKTsNCiAgICB2YXIgZWIgPTNEIC9VbnRpbCQvLA0KICAg
ICAgICBmYiA9M0QgL14oPzpwYXJlbnRzfHByZXZVbnRpbHxwcmV2QWxsKS8s
DQogICAgICAgIGdiID0zRCAvLC87DQogICAgUiA9M0QgQXJyYXkucHJvdG90
eXBlLnNsaWNlOw0KICAgIHZhciBJYSA9M0QgZnVuY3Rpb24gKGEsIGIsIGQp
IHsNCiAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihiKSkgcmV0dXJuIGMuZ3Jl
cChhLCBmdW5jdGlvbiAoZSwgaikgew0KICAgICAgICAgICAgcmV0dXJuICEh
Yi5jYWxsKGUsIGosIGUpID0zRD0zRD0zRCBkDQogICAgICAgIH0pOw0KICAg
ICAgICBlbHNlIGlmIChiLm5vZGVUeXBlKSByZXR1cm4gYy5ncmVwKGEsIGZ1
bmN0aW9uIChlKSB7DQogICAgICAgICAgICByZXR1cm4gZSA9M0Q9M0Q9M0Qg
YiA9M0Q9M0Q9M0QgZA0KICAgICAgICB9KTsNCiAgICAgICAgZWxzZSBpZiAo
dHlwZW9mIGIgPTNEPTNEPTNEICJzdHJpbmciKSB7DQogICAgICAgICAgICB2
YXIgZiA9M0QgYy5ncmVwKGEsIGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAg
ICAgICAgcmV0dXJuIGUubm9kZVR5cGUgPTNEPTNEPTNEIDENCiAgICAgICAg
ICAgIH0pOw0KICAgICAgICAgICAgaWYgKFVhLnRlc3QoYikpIHJldHVybiBj
LmZpbHRlcihiLCBmLCAhZCk7DQogICAgICAgICAgICBlbHNlIGIgPTNEIGMu
ZmlsdGVyKGIsIGYpDQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGMuZ3Jl
cChhLCBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgcmV0dXJuIGMuaW5B
cnJheShlLCBiKSA+PTNEIDAgPTNEPTNEPTNEIGQNCiAgICAgICAgfSkNCiAg
ICB9Ow0KICAgIGMuZm4uZXh0ZW5kKHsNCiAgICAgICAgZmluZDogZnVuY3Rp
b24gKGEpIHsNCiAgICAgICAgICAgIGZvciAodmFyIGIgPTNEIHRoaXMucHVz
aFN0YWNrKCIiLCAiZmluZCIsIGEpLCBkID0zRCAwLCBmID0zRCA9DQowLCBl
ID0zRCB0aGlzLmxlbmd0aDsgZiA8IGU7IGYrKykgew0KICAgICAgICAgICAg
ICAgIGQgPTNEIGIubGVuZ3RoOw0KICAgICAgICAgICAgICAgIGMuZmluZChh
LCB0aGlzW2ZdLCBiKTsNCiAgICAgICAgICAgICAgICBpZiAoZiA+IDApIGZv
ciAodmFyIGogPTNEIGQ7IGogPCBiLmxlbmd0aDsgaisrKSBmb3IgKHZhciA9
DQppID0zRCAwOyBpIDwgZDsgaSsrKSBpZiAoYltpXSA9M0Q9M0Q9M0QgYltq
XSkgew0KICAgICAgICAgICAgICAgICAgICBiLnNwbGljZShqLS0sIDEpOw0K
ICAgICAgICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBiDQogICAgICAg
IH0sDQogICAgICAgIGhhczogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAg
IHZhciBiID0zRCBjKGEpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmls
dGVyKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBk
ID0zRCAwLCBmID0zRCBiLmxlbmd0aDsgZCA8IGY7IGQrKykgaWYgPQ0KKGMu
Y29udGFpbnModGhpcywgYltkXSkpIHJldHVybiB0cnVlDQogICAgICAgICAg
ICB9KQ0KICAgICAgICB9LA0KICAgICAgICBub3Q6IGZ1bmN0aW9uIChhKSB7
DQogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soSWEodGhpcywg
YSwgZmFsc2UpLCAibm90IiwgYSkNCiAgICAgICAgfSwNCiAgICAgICAgZmls
dGVyOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMu
cHVzaFN0YWNrKElhKHRoaXMsIGEsIHRydWUpLCAiZmlsdGVyIiwgYSkNCiAg
ICAgICAgfSwNCiAgICAgICAgaXM6IGZ1bmN0aW9uIChhKSB7DQogICAgICAg
ICAgICByZXR1cm4gISFhICYmIGMuZmlsdGVyKGEsIHRoaXMpLmxlbmd0aCA+
IDANCiAgICAgICAgfSwNCiAgICAgICAgY2xvc2VzdDogZnVuY3Rpb24gKGEs
IGIpIHsNCiAgICAgICAgICAgIGlmIChjLmlzQXJyYXkoYSkpIHsNCiAgICAg
ICAgICAgICAgICB2YXIgZCA9M0QgW10sDQogICAgICAgICAgICAgICAgICAg
IGYgPTNEIHRoaXNbMF0sDQogICAgICAgICAgICAgICAgICAgIGUsIGogPTNE
IHt9LA0KICAgICAgICAgICAgICAgICAgICBpOw0KICAgICAgICAgICAgICAg
IGlmIChmICYmIGEubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgICAgIGUg
PTNEIDA7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG8gPTNEIGEu
bGVuZ3RoOyBlIDwgbzsgZSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBpID0zRCBhW2VdOw0KICAgICAgICAgICAgICAgICAgICAgICAgaltpXSB8
fCAoaltpXSA9M0QgYy5leHByLm1hdGNoLlBPUy50ZXN0KGkpID8gPQ0KYyhp
LCBiIHx8IHRoaXMuY29udGV4dCkgOiBpKQ0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgIGZvciAoOyBmICYmIGYub3duZXJE
b2N1bWVudCAmJiBmICE9M0Q9M0QgYjspIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAoaSBpbiBqKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZSA9M0QgaltpXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZS5qcXVlcnkgPyBlLmluZGV4KGYpID4gLTEgOiBjKGYpLmlzKGUp
KSA9DQp7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVz
aCh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxl
Y3RvcjogaSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW06IGYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqW2ld
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZiA9M0Qg
Zi5wYXJlbnROb2RlDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIGQNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIHZhciBrID0zRCBjLmV4cHIubWF0Y2guUE9T
LnRlc3QoYSkgPyBjKGEsIGIgfHwgdGhpcy5jb250ZXh0KSA9DQo6IG51bGw7
DQogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKG4sIHIp
IHsNCiAgICAgICAgICAgICAgICBmb3IgKDsgciAmJiByLm93bmVyRG9jdW1l
bnQgJiYgciAhPTNEPTNEIGI7KSB7DQogICAgICAgICAgICAgICAgICAgIGlm
IChrID8gay5pbmRleChyKSA+IC0xIDogYyhyKS5pcyhhKSkgcmV0dXJuIHI7
DQogICAgICAgICAgICAgICAgICAgIHIgPTNEIHIucGFyZW50Tm9kZQ0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbA0K
ICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAgaW5kZXg6IGZ1
bmN0aW9uIChhKSB7DQogICAgICAgICAgICBpZiAoIWEgfHwgdHlwZW9mIGEg
PTNEPTNEPTNEICJzdHJpbmciKSByZXR1cm4gPQ0KYy5pbkFycmF5KHRoaXNb
MF0sIGEgPyBjKGEpIDogdGhpcy5wYXJlbnQoKS5jaGlsZHJlbigpKTsNCiAg
ICAgICAgICAgIHJldHVybiBjLmluQXJyYXkoYS5qcXVlcnkgPyBhWzBdIDog
YSwgdGhpcykNCiAgICAgICAgfSwNCiAgICAgICAgYWRkOiBmdW5jdGlvbiAo
YSwgYikgew0KICAgICAgICAgICAgYSA9M0QgdHlwZW9mIGEgPTNEPTNEPTNE
ICJzdHJpbmciID8gYyhhLCBiIHx8IHRoaXMuY29udGV4dCkgPQ0KOiBjLm1h
a2VBcnJheShhKTsNCiAgICAgICAgICAgIGIgPTNEIGMubWVyZ2UodGhpcy5n
ZXQoKSwgYSk7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2so
cWEoYVswXSkgfHwgcWEoYlswXSkgPyBiIDogPQ0KYy51bmlxdWUoYikpDQog
ICAgICAgIH0sDQogICAgICAgIGFuZFNlbGY6IGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgIHJldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpDQog
ICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmVhY2goew0KICAgICAgICBwYXJl
bnQ6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICByZXR1cm4gKGEgPTNE
IGEucGFyZW50Tm9kZSkgJiYgYS5ub2RlVHlwZSAhPTNEPTNEIDExID8gYSA6
ID0NCm51bGwNCiAgICAgICAgfSwNCiAgICAgICAgcGFyZW50czogZnVuY3Rp
b24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiBjLmRpcihhLCAicGFyZW50
Tm9kZSIpDQogICAgICAgIH0sDQogICAgICAgIHBhcmVudHNVbnRpbDogZnVu
Y3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgIHJldHVybiBjLmRpcihh
LCAicGFyZW50Tm9kZSIsIGQpDQogICAgICAgIH0sDQogICAgICAgIG5leHQ6
IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICByZXR1cm4gYy5udGgoYSwg
MiwgIm5leHRTaWJsaW5nIikNCiAgICAgICAgfSwNCiAgICAgICAgcHJldjog
ZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiBjLm50aChhLCAy
LCAicHJldmlvdXNTaWJsaW5nIikNCiAgICAgICAgfSwNCiAgICAgICAgbmV4
dEFsbDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiBjLmRp
cihhLCAibmV4dFNpYmxpbmciKQ0KICAgICAgICB9LA0KICAgICAgICBwcmV2
QWxsOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIGMuZGly
KGEsICJwcmV2aW91c1NpYmxpbmciKQ0KICAgICAgICB9LA0KICAgICAgICBu
ZXh0VW50aWw6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICBy
ZXR1cm4gYy5kaXIoYSwgIm5leHRTaWJsaW5nIiwgZCkNCiAgICAgICAgfSwN
CiAgICAgICAgcHJldlVudGlsOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAg
ICAgICAgICAgcmV0dXJuIGMuZGlyKGEsICJwcmV2aW91c1NpYmxpbmciLCBk
KQ0KICAgICAgICB9LA0KICAgICAgICBzaWJsaW5nczogZnVuY3Rpb24gKGEp
IHsNCiAgICAgICAgICAgIHJldHVybiBjLnNpYmxpbmcoYS5wYXJlbnROb2Rl
LmZpcnN0Q2hpbGQsIGEpDQogICAgICAgIH0sDQogICAgICAgIGNoaWxkcmVu
OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIGMuc2libGlu
ZyhhLmZpcnN0Q2hpbGQpDQogICAgICAgIH0sDQogICAgICAgIGNvbnRlbnRz
OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIGMubm9kZU5h
bWUoYSwgImlmcmFtZSIpID8gYS5jb250ZW50RG9jdW1lbnQgfHwgPQ0KYS5j
b250ZW50V2luZG93LmRvY3VtZW50IDogYy5tYWtlQXJyYXkoYS5jaGlsZE5v
ZGVzKQ0KICAgICAgICB9DQogICAgfSwgZnVuY3Rpb24gKGEsIGIpIHsNCiAg
ICAgICAgYy5mblthXSA9M0QgZnVuY3Rpb24gKGQsIGYpIHsNCiAgICAgICAg
ICAgIHZhciBlID0zRCBjLm1hcCh0aGlzLCBiLCBkKTsNCiAgICAgICAgICAg
IGViLnRlc3QoYSkgfHwgKGYgPTNEIGQpOw0KICAgICAgICAgICAgaWYgKGYg
JiYgdHlwZW9mIGYgPTNEPTNEPTNEICJzdHJpbmciKSBlID0zRCBjLmZpbHRl
cihmLCBlKTsNCiAgICAgICAgICAgIGUgPTNEIHRoaXMubGVuZ3RoID4gMSA/
IGMudW5pcXVlKGUpIDogZTsNCiAgICAgICAgICAgIGlmICgodGhpcy5sZW5n
dGggPiAxIHx8IGdiLnRlc3QoZikpICYmIGZiLnRlc3QoYSkpIGUgPTNEID0N
CmUucmV2ZXJzZSgpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0
YWNrKGUsIGEsIFIuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSkNCiAgICAg
ICAgfQ0KICAgIH0pOw0KICAgIGMuZXh0ZW5kKHsNCiAgICAgICAgZmlsdGVy
OiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgaWYgKGQpIGEg
PTNEICI6bm90KCIgKyBhICsgIikiOw0KICAgICAgICAgICAgcmV0dXJuIGMu
ZmluZC5tYXRjaGVzKGEsIGIpDQogICAgICAgIH0sDQogICAgICAgIGRpcjog
ZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgIHZhciBmID0zRCBb
XTsNCiAgICAgICAgICAgIGZvciAoYSA9M0QgYVtiXTsgYSAmJiBhLm5vZGVU
eXBlICE9M0Q9M0QgOSAmJiAoZCA9M0Q9M0Q9M0QgdyA9DQp8fCBhLm5vZGVU
eXBlICE9M0Q9M0QgMSB8fCAhYyhhKS5pcyhkKSk7KSB7DQogICAgICAgICAg
ICAgICAgYS5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSAmJiBmLnB1c2goYSk7DQog
ICAgICAgICAgICAgICAgYSA9M0QgYVtiXQ0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgcmV0dXJuIGYNCiAgICAgICAgfSwNCiAgICAgICAgbnRoOiBm
dW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgYiA9M0QgYiB8fCAx
Ow0KICAgICAgICAgICAgZm9yICh2YXIgZiA9M0QgMDsgYTsgYSA9M0QgYVtk
XSkgaWYgKGEubm9kZVR5cGUgPTNEPTNEPTNEIDEgPQ0KJiYgKytmID0zRD0z
RD0zRCBiKSBicmVhazsNCiAgICAgICAgICAgIHJldHVybiBhDQogICAgICAg
IH0sDQogICAgICAgIHNpYmxpbmc6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAg
ICAgICAgICBmb3IgKHZhciBkID0zRCBbXTsgYTsgYSA9M0QgYS5uZXh0U2li
bGluZykgYS5ub2RlVHlwZSA9DQo9M0Q9M0Q9M0QgMSAmJiBhICE9M0Q9M0Qg
YiAmJiBkLnB1c2goYSk7DQogICAgICAgICAgICByZXR1cm4gZA0KICAgICAg
ICB9DQogICAgfSk7DQogICAgdmFyIEphID0zRCAvIGpRdWVyeVxkKz0zRCIo
PzpcZCt8bnVsbCkiL2csDQogICAgICAgIFYgPTNEIC9eXHMrLywNCiAgICAg
ICAgS2EgPTNEIC8oPChbXHc6XSspW14+XSo/KVwvPi9nLA0KICAgICAgICBo
YiA9M0QgL14oPzphcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlu
a3xtZXRhfHBhcmFtKSQvaSwNCiAgICAgICAgTGEgPTNEIC88KFtcdzpdKykv
LA0KICAgICAgICBpYiA9M0QgLzx0Ym9keS9pLA0KICAgICAgICBqYiA9M0Qg
Lzx8JiM/XHcrOy8sDQogICAgICAgIHRhID0zRCAvPHNjcmlwdHw8b2JqZWN0
fDxlbWJlZHw8b3B0aW9ufDxzdHlsZS9pLA0KICAgICAgICB1YSA9M0QgL2No
ZWNrZWRccyooPzpbXj0zRF18PTNEXHMqLmNoZWNrZWQuKS9pLA0KICAgICAg
ICBNYSA9M0QgZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgcmV0dXJu
IGhiLnRlc3QoZCkgPyBhIDogYiArICI+PC8iICsgZCArICI+Ig0KICAgIH0s
DQogICAgICAgIEYgPTNEIHsNCiAgICAgICAgb3B0aW9uOiBbMSwgIjxzZWxl
Y3QgbXVsdGlwbGU9M0QnbXVsdGlwbGUnPiIsICI8L3NlbGVjdD4iXSwNCiAg
ICAgICAgbGVnZW5kOiBbMSwgIjxmaWVsZHNldD4iLCAiPC9maWVsZHNldD4i
XSwNCiAgICAgICAgdGhlYWQ6IFsxLCAiPHRhYmxlPiIsICI8L3RhYmxlPiJd
LA0KICAgICAgICB0cjogWzIsICI8dGFibGU+PHRib2R5PiIsICI8L3Rib2R5
PjwvdGFibGU+Il0sDQogICAgICAgIHRkOiBbMywgIjx0YWJsZT48dGJvZHk+
PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSwNCiAgICAgICAgY29s
OiBbMiwgIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwgPQ0K
IjwvY29sZ3JvdXA+PC90YWJsZT4iXSwNCiAgICAgICAgYXJlYTogWzEsICI8
bWFwPiIsICI8L21hcD4iXSwNCiAgICAgICAgX2RlZmF1bHQ6IFswLCAiIiwg
IiJdDQogICAgfTsNCiAgICBGLm9wdGdyb3VwID0zRCBGLm9wdGlvbjsNCiAg
ICBGLnRib2R5ID0zRCBGLnRmb290ID0zRCBGLmNvbGdyb3VwID0zRCBGLmNh
cHRpb24gPTNEIEYudGhlYWQ7DQogICAgRi50aCA9M0QgRi50ZDsNCiAgICBp
ZiAoIWMuc3VwcG9ydC5odG1sU2VyaWFsaXplKSBGLl9kZWZhdWx0ID0zRCBb
MSwgImRpdjxkaXY+IiwgPQ0KIjwvZGl2PiJdOw0KICAgIGMuZm4uZXh0ZW5k
KHsNCiAgICAgICAgdGV4dDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAg
IGlmIChjLmlzRnVuY3Rpb24oYSkpIHJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24gKGIpIHsNCiAgICAgICAgICAgICAgICB2YXIgZCA9M0QNCiAgICAgICAg
ICAgICAgICBjKHRoaXMpOw0KICAgICAgICAgICAgICAgIGQudGV4dChhLmNh
bGwodGhpcywgYiwgZC50ZXh0KCkpKQ0KICAgICAgICAgICAgfSk7DQogICAg
ICAgICAgICBpZiAodHlwZW9mIGEgIT0zRD0zRCAib2JqZWN0IiAmJiBhICE9
M0Q9M0QgdykgcmV0dXJuID0NCnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNb
MF0gJiYgdGhpc1swXS5vd25lckRvY3VtZW50IHx8ID0NCnMpLmNyZWF0ZVRl
eHROb2RlKGEpKTsNCiAgICAgICAgICAgIHJldHVybiBjLnRleHQodGhpcykN
CiAgICAgICAgfSwNCiAgICAgICAgd3JhcEFsbDogZnVuY3Rpb24gKGEpIHsN
CiAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rpb24oYSkpIHJldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24gKGQpIHsNCiAgICAgICAgICAgICAgICBjKHRoaXMp
LndyYXBBbGwoYS5jYWxsKHRoaXMsIGQpKQ0KICAgICAgICAgICAgfSk7DQog
ICAgICAgICAgICBpZiAodGhpc1swXSkgew0KICAgICAgICAgICAgICAgIHZh
ciBiID0zRCBjKGEsIHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xv
bmUodHJ1ZSk7DQogICAgICAgICAgICAgICAgdGhpc1swXS5wYXJlbnROb2Rl
ICYmIGIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pOw0KICAgICAgICAgICAgICAg
IGIubWFwKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgZm9y
ICh2YXIgZCA9M0QgdGhpczsgZC5maXJzdENoaWxkICYmID0NCmQuZmlyc3RD
aGlsZC5ub2RlVHlwZSA9M0Q9M0Q9M0QgMTspIGQgPTNEIGQuZmlyc3RDaGls
ZDsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQNCiAgICAgICAgICAg
ICAgICB9KS5hcHBlbmQodGhpcykNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHJldHVybiB0aGlzDQogICAgICAgIH0sDQogICAgICAgIHdyYXBJbm5l
cjogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rp
b24oYSkpIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKGIpIHsNCiAgICAg
ICAgICAgICAgICBjKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcywgYikp
DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHZhciBiID0zRCBj
KHRoaXMpLA0KICAgICAgICAgICAgICAgICAgICBkID0zRCBiLmNvbnRlbnRz
KCk7DQogICAgICAgICAgICAgICAgZC5sZW5ndGggPyBkLndyYXBBbGwoYSkg
OiBiLmFwcGVuZChhKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAg
ICAgICAgd3JhcDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGMo
dGhpcykud3JhcEFsbChhKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwN
CiAgICAgICAgdW53cmFwOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBy
ZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgICAgICAgICBjLm5vZGVOYW1lKHRoaXMsICJib2R5IikgfHwgPQ0KYyh0
aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpDQogICAgICAgICAg
ICB9KS5lbmQoKQ0KICAgICAgICB9LA0KICAgICAgICBhcHBlbmQ6IGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKGFy
Z3VtZW50cywgdHJ1ZSwgZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgICAg
ICB0aGlzLm5vZGVUeXBlID0zRD0zRD0zRCAxICYmIHRoaXMuYXBwZW5kQ2hp
bGQoYSkNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIHBy
ZXBlbmQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlz
LmRvbU1hbmlwKGFyZ3VtZW50cywgdHJ1ZSwgZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgICAgICB0aGlzLm5vZGVUeXBlID0zRD0zRD0zRCAxICYmIHRo
aXMuaW5zZXJ0QmVmb3JlKGEsID0NCnRoaXMuZmlyc3RDaGlsZCkNCiAgICAg
ICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIGJlZm9yZTogZnVuY3Rp
b24gKCkgew0KICAgICAgICAgICAgaWYgKHRoaXNbMF0gJiYgdGhpc1swXS5w
YXJlbnROb2RlKSByZXR1cm4gPQ0KdGhpcy5kb21NYW5pcChhcmd1bWVudHMs
IGZhbHNlLCBmdW5jdGlvbiAoYikgew0KICAgICAgICAgICAgICAgIHRoaXMu
cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYiwgdGhpcykNCiAgICAgICAgICAg
IH0pOw0KICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCkg
ew0KICAgICAgICAgICAgICAgIHZhciBhID0zRCBjKGFyZ3VtZW50c1swXSk7
DQogICAgICAgICAgICAgICAgYS5wdXNoLmFwcGx5KGEsIHRoaXMudG9BcnJh
eSgpKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2so
YSwgImJlZm9yZSIsIGFyZ3VtZW50cykNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfSwNCiAgICAgICAgYWZ0ZXI6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
ICAgIGlmICh0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSkgcmV0dXJu
ID0NCnRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCBmYWxzZSwgZnVuY3Rpb24g
KGIpIHsNCiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0
QmVmb3JlKGIsIHRoaXMubmV4dFNpYmxpbmcpDQogICAgICAgICAgICB9KTsN
CiAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHsNCiAg
ICAgICAgICAgICAgICB2YXIgYSA9M0QgdGhpcy5wdXNoU3RhY2sodGhpcywg
ImFmdGVyIiwgYXJndW1lbnRzKTsNCiAgICAgICAgICAgICAgICBhLnB1c2gu
YXBwbHkoYSwgYyhhcmd1bWVudHNbMF0pLnRvQXJyYXkoKSk7DQogICAgICAg
ICAgICAgICAgcmV0dXJuIGENCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwN
CiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAg
ICAgZm9yICh2YXIgZCA9M0QgMCwgZjsNCiAgICAgICAgICAgIChmID0zRCB0
aGlzW2RdKSAhPTNEIG51bGw7IGQrKykgaWYgKCFhIHx8IGMuZmlsdGVyKGEs
ID0NCltmXSkubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgaWYgKCFiICYm
IGYubm9kZVR5cGUgPTNEPTNEPTNEIDEpIHsNCiAgICAgICAgICAgICAgICAg
ICAgYy5jbGVhbkRhdGEoZi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTsN
CiAgICAgICAgICAgICAgICAgICAgYy5jbGVhbkRhdGEoW2ZdKQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmLnBhcmVudE5vZGUgJiYg
Zi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpDQogICAgICAgICAgICB9DQog
ICAgICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICB9LA0KICAgICAgICBl
bXB0eTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgZm9yICh2YXIgYSA9
M0QgMCwgYjsNCiAgICAgICAgICAgIChiID0zRCB0aGlzW2FdKSAhPTNEIG51
bGw7IGErKykgZm9yIChiLm5vZGVUeXBlID0zRD0zRD0zRCAxID0NCiYmIGMu
Y2xlYW5EYXRhKGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7IGIuZmly
c3RDaGlsZDspID0NCmIucmVtb3ZlQ2hpbGQoYi5maXJzdENoaWxkKTsNCiAg
ICAgICAgICAgIHJldHVybiB0aGlzDQogICAgICAgIH0sDQogICAgICAgIGNs
b25lOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgdmFyIGIgPTNEIHRo
aXMubWFwKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpZiAoIWMu
c3VwcG9ydC5ub0Nsb25lRXZlbnQgJiYgIWMuaXNYTUxEb2ModGhpcykpIHsN
CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPTNEIHRoaXMub3V0ZXJIVE1M
LA0KICAgICAgICAgICAgICAgICAgICAgICAgZiA9M0QgdGhpcy5vd25lckRv
Y3VtZW50Ow0KICAgICAgICAgICAgICAgICAgICBpZiAoIWQpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGQgPTNEIGYuY3JlYXRlRWxlbWVudCgiZGl2
Iik7DQogICAgICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZENoaWxkKHRo
aXMuY2xvbmVOb2RlKHRydWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGQgPTNEIGQuaW5uZXJIVE1MDQogICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuY2xlYW4oW2QucmVwbGFjZShK
YSwgPQ0KIiIpLnJlcGxhY2UoLz0zRChbXj0zRCInPlxzXStcLyk+L2csICc9
M0QiJDEiPicpLnJlcGxhY2UoViwgIiIpXSwgZilbMF0NCiAgICAgICAgICAg
ICAgICB9IGVsc2UgcmV0dXJuIHRoaXMuY2xvbmVOb2RlKHRydWUpDQogICAg
ICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmIChhID0zRD0zRD0zRCB0cnVl
KSB7DQogICAgICAgICAgICAgICAgcmEodGhpcywgYik7DQogICAgICAgICAg
ICAgICAgcmEodGhpcy5maW5kKCIqIiksIGIuZmluZCgiKiIpKQ0KICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGINCiAgICAgICAgfSwNCiAg
ICAgICAgaHRtbDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIGlmIChh
ID0zRD0zRD0zRCB3KSByZXR1cm4gdGhpc1swXSAmJiB0aGlzWzBdLm5vZGVU
eXBlID0NCj0zRD0zRD0zRCAxID8gdGhpc1swXS5pbm5lckhUTUwucmVwbGFj
ZShKYSwgIiIpIDogbnVsbDsNCiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVv
ZiBhID0zRD0zRD0zRCAic3RyaW5nIiAmJiAhdGEudGVzdChhKSAmJiA9DQoo
Yy5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlIHx8ICFWLnRlc3QoYSkpICYm
ICFGWyhMYS5leGVjKGEpIHx8IFsiIiwgPQ0KIiJdKVsxXS50b0xvd2VyQ2Fz
ZSgpXSkgew0KICAgICAgICAgICAgICAgIGEgPTNEIGEucmVwbGFjZShLYSwg
TWEpOw0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAg
ICAgIGZvciAodmFyIGIgPTNEIDAsIGQgPTNEIHRoaXMubGVuZ3RoOyBiIDwg
ZDsgYisrKSBpZiA9DQoodGhpc1tiXS5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSkg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgYy5jbGVhbkRhdGEodGhpc1ti
XS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXNbYl0uaW5uZXJIVE1MID0zRCBhDQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGNhdGNoIChmKSB7DQog
ICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHkoKS5hcHBlbmQoYSkNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2UgYy5pc0Z1bmN0
aW9uKGEpID8gdGhpcy5lYWNoKGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAg
ICAgICAgdmFyIGogPTNEIGModGhpcyksDQogICAgICAgICAgICAgICAgICAg
IGkgPTNEIGouaHRtbCgpOw0KICAgICAgICAgICAgICAgIGouZW1wdHkoKS5h
cHBlbmQoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYS5jYWxsKHRoaXMsIGUsIGkpDQogICAgICAgICAgICAgICAgfSkNCiAg
ICAgICAgICAgIH0pIDogdGhpcy5lbXB0eSgpLmFwcGVuZChhKTsNCiAgICAg
ICAgICAgIHJldHVybiB0aGlzDQogICAgICAgIH0sDQogICAgICAgIHJlcGxh
Y2VXaXRoOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgaWYgKHRoaXNb
MF0gJiYgdGhpc1swXS5wYXJlbnROb2RlKSB7DQogICAgICAgICAgICAgICAg
aWYgKGMuaXNGdW5jdGlvbihhKSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
biAoYikgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZCA9M0QgYyh0aGlz
KSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGYgPTNEIGQuaHRtbCgpOw0K
ICAgICAgICAgICAgICAgICAgICBkLnJlcGxhY2VXaXRoKGEuY2FsbCh0aGlz
LCBiLCBmKSkNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAg
ICBpZiAodHlwZW9mIGEgIT0zRD0zRCAic3RyaW5nIikgYSA9M0QgYyhhKS5k
ZXRhY2goKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPTNEIHRo
aXMubmV4dFNpYmxpbmcsDQogICAgICAgICAgICAgICAgICAgICAgICBkID0z
RCB0aGlzLnBhcmVudE5vZGU7DQogICAgICAgICAgICAgICAgICAgIGModGhp
cykucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgICAgIGIgPyBjKGIpLmJl
Zm9yZShhKSA6IGMoZCkuYXBwZW5kKGEpDQogICAgICAgICAgICAgICAgfSkN
CiAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gdGhpcy5wdXNoU3RhY2soYyhj
LmlzRnVuY3Rpb24oYSkgPyBhKCkgOiBhKSwgPQ0KInJlcGxhY2VXaXRoIiwg
YSkNCiAgICAgICAgfSwNCiAgICAgICAgZGV0YWNoOiBmdW5jdGlvbiAoYSkg
ew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlKGEsIHRydWUpDQog
ICAgICAgIH0sDQogICAgICAgIGRvbU1hbmlwOiBmdW5jdGlvbiAoYSwgYiwg
ZCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZih1KSB7DQogICAgICAgICAg
ICAgICAgcmV0dXJuIGMubm9kZU5hbWUodSwgInRhYmxlIikgPyA9DQp1Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdIHx8ID0NCnUuYXBwZW5k
Q2hpbGQodS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5Iikp
IDogdQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIGUsIGosIGkg
PTNEIGFbMF0sDQogICAgICAgICAgICAgICAgbyA9M0QgW10sDQogICAgICAg
ICAgICAgICAgazsNCiAgICAgICAgICAgIGlmICghYy5zdXBwb3J0LmNoZWNr
Q2xvbmUgJiYgYXJndW1lbnRzLmxlbmd0aCA9M0Q9M0Q9M0QgMyAmJiA9DQp0
eXBlb2YgaSA9M0Q9M0Q9M0QgInN0cmluZyIgJiYgdWEudGVzdChpKSkgcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSA9DQp7DQogICAgICAgICAgICAg
ICAgYyh0aGlzKS5kb21NYW5pcChhLCBiLCBkLCB0cnVlKQ0KICAgICAgICAg
ICAgfSk7DQogICAgICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGkpKSByZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICh1KSB7DQogICAgICAgICAgICAgICAg
dmFyIHogPTNEIGModGhpcyk7DQogICAgICAgICAgICAgICAgYVswXSA9M0Qg
aS5jYWxsKHRoaXMsIHUsIGIgPyB6Lmh0bWwoKSA6IHcpOw0KICAgICAgICAg
ICAgICAgIHouZG9tTWFuaXAoYSwgYiwgZCkNCiAgICAgICAgICAgIH0pOw0K
ICAgICAgICAgICAgaWYgKHRoaXNbMF0pIHsNCiAgICAgICAgICAgICAgICBl
ID0zRCBpICYmIGkucGFyZW50Tm9kZTsNCiAgICAgICAgICAgICAgICBlID0z
RCBjLnN1cHBvcnQucGFyZW50Tm9kZSAmJiBlICYmIGUubm9kZVR5cGUgPTNE
PTNEPTNEID0NCjExICYmIGUuY2hpbGROb2Rlcy5sZW5ndGggPTNEPTNEPTNE
IHRoaXMubGVuZ3RoID8gew0KICAgICAgICAgICAgICAgICAgICBmcmFnbWVu
dDogZQ0KICAgICAgICAgICAgICAgIH0gOiBzYShhLCB0aGlzLCBvKTsNCiAg
ICAgICAgICAgICAgICBrID0zRCBlLmZyYWdtZW50Ow0KICAgICAgICAgICAg
ICAgIGlmIChqID0zRCBrLmNoaWxkTm9kZXMubGVuZ3RoID0zRD0zRD0zRCAx
ID8gKGsgPTNEID0NCmsuZmlyc3RDaGlsZCkgOiBrLmZpcnN0Q2hpbGQpIHsN
CiAgICAgICAgICAgICAgICAgICAgYiA9M0QgYiAmJiBjLm5vZGVOYW1lKGos
ICJ0ciIpOw0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0zRCAw
LCByID0zRCB0aGlzLmxlbmd0aDsgbiA8IHI7IG4rKykgPQ0KZC5jYWxsKGIg
PyBmKHRoaXNbbl0sIGopIDogdGhpc1tuXSwgbiA+IDAgfHwgZS5jYWNoZWFi
bGUgfHwgdGhpcy5sZW5ndGggPQ0KPiAxID8gay5jbG9uZU5vZGUodHJ1ZSkg
OiBrKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvLmxl
bmd0aCAmJiBjLmVhY2gobywgUWEpDQogICAgICAgICAgICB9DQogICAgICAg
ICAgICByZXR1cm4gdGhpcw0KICAgICAgICB9DQogICAgfSk7DQogICAgYy5m
cmFnbWVudHMgPTNEIHt9Ow0KICAgIGMuZWFjaCh7DQogICAgICAgIGFwcGVu
ZFRvOiAiYXBwZW5kIiwNCiAgICAgICAgcHJlcGVuZFRvOiAicHJlcGVuZCIs
DQogICAgICAgIGluc2VydEJlZm9yZTogImJlZm9yZSIsDQogICAgICAgIGlu
c2VydEFmdGVyOiAiYWZ0ZXIiLA0KICAgICAgICByZXBsYWNlQWxsOiAicmVw
bGFjZVdpdGgiDQogICAgfSwgZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAg
Yy5mblthXSA9M0QgZnVuY3Rpb24gKGQpIHsNCiAgICAgICAgICAgIHZhciBm
ID0zRCBbXTsNCiAgICAgICAgICAgIGQgPTNEIGMoZCk7DQogICAgICAgICAg
ICB2YXIgZSA9M0QgdGhpcy5sZW5ndGggPTNEPTNEPTNEIDEgJiYgdGhpc1sw
XS5wYXJlbnROb2RlOw0KICAgICAgICAgICAgaWYgKGUgJiYgZS5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgMTEgJiYgZS5jaGlsZE5vZGVzLmxlbmd0aCA9DQo9M0Q9
M0Q9M0QgMSAmJiBkLmxlbmd0aCA9M0Q9M0Q9M0QgMSkgew0KICAgICAgICAg
ICAgICAgIGRbYl0odGhpc1swXSk7DQogICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAg
ZSA9M0QgMDsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0zRCBkLmxl
bmd0aDsgZSA8IGo7IGUrKykgew0KICAgICAgICAgICAgICAgICAgICB2YXIg
aSA9M0QgKGUgPiAwID8gdGhpcy5jbG9uZSh0cnVlKSA6IHRoaXMpLmdldCgp
Ow0KICAgICAgICAgICAgICAgICAgICBjLmZuW2JdLmFwcGx5KGMoZFtlXSks
IGkpOw0KICAgICAgICAgICAgICAgICAgICBmID0zRCBmLmNvbmNhdChpKQ0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5wdXNoU3RhY2soZiwgYSwgZC5zZWxlY3RvcikNCiAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KICAgIH0pOw0KICAgIGMuZXh0ZW5kKHsNCiAgICAgICAg
Y2xlYW46IGZ1bmN0aW9uIChhLCBiLCBkLCBmKSB7DQogICAgICAgICAgICBi
ID0zRCBiIHx8IHM7DQogICAgICAgICAgICBpZiAodHlwZW9mIGIuY3JlYXRl
RWxlbWVudCA9M0Q9M0Q9M0QgInVuZGVmaW5lZCIpIGIgPTNEID0NCmIub3du
ZXJEb2N1bWVudCB8fCBiWzBdICYmIGJbMF0ub3duZXJEb2N1bWVudCB8fCBz
Ow0KICAgICAgICAgICAgZm9yICh2YXIgZSA9M0QgW10sIGogPTNEIDAsIGk7
DQogICAgICAgICAgICAoaSA9M0QgYVtqXSkgIT0zRCBudWxsOyBqKyspIHsN
CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGkgPTNEPTNEPTNEICJudW1i
ZXIiKSBpICs9M0QgIiI7DQogICAgICAgICAgICAgICAgaWYgKGkpIHsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpID0zRD0zRD0zRCAic3Ry
aW5nIiAmJiAhamIudGVzdChpKSkgaSA9DQo9M0QgYi5jcmVhdGVUZXh0Tm9k
ZShpKTsNCiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGkg
PTNEPTNEPTNEICJzdHJpbmciKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBpID0zRCBpLnJlcGxhY2UoS2EsIE1hKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBvID0zRCAoTGEuZXhlYyhpKSB8fCBbIiIsID0NCiIiXSlb
MV0udG9Mb3dlckNhc2UoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrID0zRCBGW29dIHx8IEYuX2RlZmF1bHQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbiA9M0Qga1swXSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByID0zRCBiLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIChyLmlubmVySFRNTCA9M0Qga1sxXSAr
IGkgKyBrWzJdOyBuLS07KSByID0NCj0zRCByLmxhc3RDaGlsZDsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghYy5zdXBwb3J0LnRib2R5KSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9M0QgaWIudGVzdChpKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0zRCBvID0zRD0zRD0z
RCAidGFibGUiICYmICFuID8gPQ0Kci5maXJzdENoaWxkICYmIHIuZmlyc3RD
aGlsZC5jaGlsZE5vZGVzIDoga1sxXSA9M0Q9M0Q9M0QgIjx0YWJsZT4iICYm
ICFuID0NCj8gci5jaGlsZE5vZGVzIDogW107DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIChrID0zRCBvLmxlbmd0aCAtIDE7IGsgPj0zRCAw
OyAtLWspID0NCmMubm9kZU5hbWUob1trXSwgInRib2R5IikgJiYgIW9ba10u
Y2hpbGROb2Rlcy5sZW5ndGggJiYgPQ0Kb1trXS5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKG9ba10pDQogICAgICAgICAgICAgICAgICAgICAgICB9IWMuc3Vw
cG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiBWLnRlc3QoaSkgJiYgPQ0Kci5p
bnNlcnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShWLmV4ZWMoaSlbMF0pLCBy
LmZpcnN0Q2hpbGQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaSA9M0Qg
ci5jaGlsZE5vZGVzDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgaWYgKGkubm9kZVR5cGUpIGUucHVzaChpKTsNCiAgICAg
ICAgICAgICAgICAgICAgZWxzZSBlID0zRCBjLm1lcmdlKGUsIGkpDQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYg
KGQpIGZvciAoaiA9M0QgMDsgZVtqXTsgaisrKSBpZiAoZiAmJiBjLm5vZGVO
YW1lKGVbal0sID0NCiJzY3JpcHQiKSAmJiAoIWVbal0udHlwZSB8fCBlW2pd
LnR5cGUudG9Mb3dlckNhc2UoKSA9M0Q9M0Q9M0QgPQ0KInRleHQvamF2YXNj
cmlwdCIpKSBmLnB1c2goZVtqXS5wYXJlbnROb2RlID8gPQ0KZVtqXS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKGVbal0pIDogZVtqXSk7DQogICAgICAgICAg
ICBlbHNlIHsNCiAgICAgICAgICAgICAgICBlW2pdLm5vZGVUeXBlID0zRD0z
RD0zRCAxICYmIGUuc3BsaWNlLmFwcGx5KGUsIFtqICsgMSwgPQ0KMF0uY29u
Y2F0KGMubWFrZUFycmF5KGVbal0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNj
cmlwdCIpKSkpOw0KICAgICAgICAgICAgICAgIGQuYXBwZW5kQ2hpbGQoZVtq
XSkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBlDQogICAg
ICAgIH0sDQogICAgICAgIGNsZWFuRGF0YTogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgIGZvciAodmFyIGIsIGQsIGYgPTNEIGMuY2FjaGUsIGUgPTNE
IGMuZXZlbnQuc3BlY2lhbCwgaiA9M0QgPQ0KYy5zdXBwb3J0LmRlbGV0ZUV4
cGFuZG8sIGkgPTNEIDAsIG87DQogICAgICAgICAgICAobyA9M0QgYVtpXSkg
IT0zRCBudWxsOyBpKyspIGlmIChkID0zRCBvW2MuZXhwYW5kb10pIHsNCiAg
ICAgICAgICAgICAgICBiID0zRCBmW2RdOw0KICAgICAgICAgICAgICAgIGlm
IChiLmV2ZW50cykgZm9yICh2YXIgayBpbiBiLmV2ZW50cykgZVtrXSA/ID0N
CmMuZXZlbnQucmVtb3ZlKG8sIGspIDogQ2EobywgaywgYi5oYW5kbGUpOw0K
ICAgICAgICAgICAgICAgIGlmIChqKSBkZWxldGUgb1tjLmV4cGFuZG9dOw0K
ICAgICAgICAgICAgICAgIGVsc2Ugby5yZW1vdmVBdHRyaWJ1dGUgJiYgby5y
ZW1vdmVBdHRyaWJ1dGUoYy5leHBhbmRvKTsNCiAgICAgICAgICAgICAgICBk
ZWxldGUgZltkXQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSk7
DQogICAgdmFyIGtiID0zRCAvei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNp
dHl8em9vbXxsaW5lLT9oZWlnaHQvaSwNCiAgICAgICAgTmEgPTNEIC9hbHBo
YVwoW14pXSpcKS8sDQogICAgICAgIE9hID0zRCAvb3BhY2l0eT0zRChbXild
KikvLA0KICAgICAgICBoYSA9M0QgL2Zsb2F0L2ksDQogICAgICAgIGlhID0z
RCAvLShbYS16XSkvaWcsDQogICAgICAgIGxiID0zRCAvKFtBLVpdKS9nLA0K
ICAgICAgICBtYiA9M0QgL14tP1xkKyg/OnB4KT8kL2ksDQogICAgICAgIG5i
ID0zRCAvXi0/XGQvLA0KICAgICAgICBvYiA9M0Qgew0KICAgICAgICBwb3Np
dGlvbjogImFic29sdXRlIiwNCiAgICAgICAgdmlzaWJpbGl0eTogImhpZGRl
biIsDQogICAgICAgIGRpc3BsYXk6ICJibG9jayINCiAgICB9LA0KICAgICAg
ICBwYiA9M0QgWyJMZWZ0IiwgIlJpZ2h0Il0sDQogICAgICAgIHFiID0zRCBb
IlRvcCIsICJCb3R0b20iXSwNCiAgICAgICAgcmIgPTNEIHMuZGVmYXVsdFZp
ZXcgJiYgcy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlLA0KICAgICAg
ICBQYSA9M0QgYy5zdXBwb3J0LmNzc0Zsb2F0ID8gImNzc0Zsb2F0IiA6ICJz
dHlsZUZsb2F0IiwNCiAgICAgICAgamEgPTNEDQoNCiAgICBmdW5jdGlvbiAo
YSwgYikgew0KICAgICAgICByZXR1cm4gYi50b1VwcGVyQ2FzZSgpDQogICAg
fTsNCiAgICBjLmZuLmNzcyA9M0QgZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAg
ICAgcmV0dXJuIFgodGhpcywgYSwgYiwgdHJ1ZSwgZnVuY3Rpb24gKGQsIGYs
IGUpIHsNCiAgICAgICAgICAgIGlmIChlID0zRD0zRD0zRCB3KSByZXR1cm4g
Yy5jdXJDU1MoZCwgZik7DQogICAgICAgICAgICBpZiAodHlwZW9mIGUgPTNE
PTNEPTNEICJudW1iZXIiICYmICFrYi50ZXN0KGYpKSBlICs9M0QgInB4IjsN
CiAgICAgICAgICAgIGMuc3R5bGUoZCwgZiwgZSkNCiAgICAgICAgfSkNCiAg
ICB9Ow0KICAgIGMuZXh0ZW5kKHsNCiAgICAgICAgc3R5bGU6IGZ1bmN0aW9u
IChhLCBiLCBkKSB7DQogICAgICAgICAgICBpZiAoIWEgfHwgYS5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgMyB8fCBhLm5vZGVUeXBlID0zRD0zRD0zRCA4KSA9DQpy
ZXR1cm4gdzsNCiAgICAgICAgICAgIGlmICgoYiA9M0Q9M0Q9M0QgIndpZHRo
IiB8fCBiID0zRD0zRD0zRCAiaGVpZ2h0IikgJiYgPQ0KcGFyc2VGbG9hdChk
KSA8IDApIGQgPTNEIHc7DQogICAgICAgICAgICB2YXIgZiA9M0QgYS5zdHls
ZSB8fCBhLA0KICAgICAgICAgICAgICAgIGUgPTNEIGQgIT0zRD0zRCB3Ow0K
ICAgICAgICAgICAgaWYgKCFjLnN1cHBvcnQub3BhY2l0eSAmJiBiID0zRD0z
RD0zRCAib3BhY2l0eSIpIHsNCiAgICAgICAgICAgICAgICBpZiAoZSkgew0K
ICAgICAgICAgICAgICAgICAgICBmLnpvb20gPTNEIDE7DQogICAgICAgICAg
ICAgICAgICAgIGIgPTNEIHBhcnNlSW50KGQsIDEwKSArICIiID0zRD0zRD0z
RCAiTmFOIiA/ICIiIDogPQ0KImFscGhhKG9wYWNpdHk9M0QiICsgZCAqIDEw
MCArICIpIjsNCiAgICAgICAgICAgICAgICAgICAgYSA9M0QgZi5maWx0ZXIg
fHwgYy5jdXJDU1MoYSwgImZpbHRlciIpIHx8ICIiOw0KICAgICAgICAgICAg
ICAgICAgICBmLmZpbHRlciA9M0QNCiAgICAgICAgICAgICAgICAgICAgTmEu
dGVzdChhKSA/IGEucmVwbGFjZShOYSwgYikgOiBiDQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBmLmZpbHRlciAmJiBmLmZp
bHRlci5pbmRleE9mKCJvcGFjaXR5PTNEIikgPj0zRCAwID0NCj8gcGFyc2VG
bG9hdChPYS5leGVjKGYuZmlsdGVyKVsxXSkgLyAxMDAgKyAiIiA6ICIiDQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoaGEudGVzdChiKSkgYiA9
M0QgUGE7DQogICAgICAgICAgICBiID0zRCBiLnJlcGxhY2UoaWEsIGphKTsN
CiAgICAgICAgICAgIGlmIChlKSBmW2JdID0zRCBkOw0KICAgICAgICAgICAg
cmV0dXJuIGZbYl0NCiAgICAgICAgfSwNCiAgICAgICAgY3NzOiBmdW5jdGlv
biAoYSwgYiwgZCwgZikgew0KICAgICAgICAgICAgaWYgKGIgPTNEPTNEPTNE
ICJ3aWR0aCIgfHwgYiA9M0Q9M0Q9M0QgImhlaWdodCIpIHsNCiAgICAgICAg
ICAgICAgICB2YXIgZSwgaiA9M0QgYiA9M0Q9M0Q9M0QgIndpZHRoIiA/IHBi
IDogcWI7DQoNCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpKCkgew0KICAg
ICAgICAgICAgICAgICAgICBlID0zRCBiID0zRD0zRD0zRCAid2lkdGgiID8g
YS5vZmZzZXRXaWR0aCA6ID0NCmEub2Zmc2V0SGVpZ2h0Ow0KICAgICAgICAg
ICAgICAgICAgICBmICE9M0Q9M0QgImJvcmRlciIgJiYgYy5lYWNoKGosIGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYgfHwgKGUg
LT0zRCBwYXJzZUZsb2F0KGMuY3VyQ1NTKGEsICJwYWRkaW5nIiArID0NCnRo
aXMsIHRydWUpKSB8fCAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmID0zRD0zRD0zRCAibWFyZ2luIikgZSArPTNEID0NCnBhcnNlRmxvYXQo
Yy5jdXJDU1MoYSwgIm1hcmdpbiIgKyB0aGlzLCB0cnVlKSkgfHwgMDsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZSAtPTNEIHBhcnNlRmxvYXQo
Yy5jdXJDU1MoYSwgImJvcmRlciIgKyA9DQp0aGlzICsgIldpZHRoIiwgdHJ1
ZSkpIHx8IDANCiAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgYS5vZmZzZXRXaWR0aCAhPTNEPTNE
IDAgPyBpKCkgOiBjLnN3YXAoYSwgb2IsIGkpOw0KICAgICAgICAgICAgICAg
IHJldHVybiBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKGUpKQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGMuY3VyQ1NTKGEsIGIsIGQpDQog
ICAgICAgIH0sDQogICAgICAgIGN1ckNTUzogZnVuY3Rpb24gKGEsIGIsIGQp
IHsNCiAgICAgICAgICAgIHZhciBmLCBlID0zRCBhLnN0eWxlOw0KICAgICAg
ICAgICAgaWYgKCFjLnN1cHBvcnQub3BhY2l0eSAmJiBiID0zRD0zRD0zRCAi
b3BhY2l0eSIgJiYgPQ0KYS5jdXJyZW50U3R5bGUpIHsNCiAgICAgICAgICAg
ICAgICBmID0zRCBPYS50ZXN0KGEuY3VycmVudFN0eWxlLmZpbHRlciB8fCAi
IikgPyA9DQpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkgLyAxMDAgKyAiIiA6ICIi
Ow0KICAgICAgICAgICAgICAgIHJldHVybiBmID0zRD0zRD0zRCAiIiA/ICIx
IiA6IGYNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChoYS50ZXN0
KGIpKSBiID0zRCBQYTsNCiAgICAgICAgICAgIGlmICghZCAmJiBlICYmIGVb
Yl0pIGYgPTNEIGVbYl07DQogICAgICAgICAgICBlbHNlIGlmIChyYikgew0K
ICAgICAgICAgICAgICAgIGlmIChoYS50ZXN0KGIpKSBiID0zRCAiZmxvYXQi
Ow0KICAgICAgICAgICAgICAgIGIgPTNEIGIucmVwbGFjZShsYiwgIi0kMSIp
LnRvTG93ZXJDYXNlKCk7DQogICAgICAgICAgICAgICAgZSA9M0QgYS5vd25l
ckRvY3VtZW50LmRlZmF1bHRWaWV3Ow0KICAgICAgICAgICAgICAgIGlmICgh
ZSkgcmV0dXJuIG51bGw7DQogICAgICAgICAgICAgICAgaWYgKGEgPTNEIGUu
Z2V0Q29tcHV0ZWRTdHlsZShhLCBudWxsKSkgZiA9M0QgPQ0KYS5nZXRQcm9w
ZXJ0eVZhbHVlKGIpOw0KICAgICAgICAgICAgICAgIGlmIChiID0zRD0zRD0z
RCAib3BhY2l0eSIgJiYgZiA9M0Q9M0Q9M0QgIiIpIGYgPTNEICIxIg0KICAg
ICAgICAgICAgfSBlbHNlIGlmIChhLmN1cnJlbnRTdHlsZSkgew0KICAgICAg
ICAgICAgICAgIGQgPTNEIGIucmVwbGFjZShpYSwgamEpOw0KICAgICAgICAg
ICAgICAgIGYgPTNEIGEuY3VycmVudFN0eWxlW2JdIHx8IGEuY3VycmVudFN0
eWxlW2RdOw0KICAgICAgICAgICAgICAgIGlmICghbWIudGVzdChmKSAmJiBu
Yi50ZXN0KGYpKSB7DQogICAgICAgICAgICAgICAgICAgIGIgPTNEIGUubGVm
dDsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGogPTNEIGEucnVudGltZVN0
eWxlLmxlZnQ7DQogICAgICAgICAgICAgICAgICAgIGEucnVudGltZVN0eWxl
LmxlZnQgPTNEIGEuY3VycmVudFN0eWxlLmxlZnQ7DQogICAgICAgICAgICAg
ICAgICAgIGUubGVmdCA9M0QgZCA9M0Q9M0Q9M0QgImZvbnRTaXplIiA/ICIx
ZW0iIDogZiB8fCAwOw0KICAgICAgICAgICAgICAgICAgICBmID0zRCBlLnBp
eGVsTGVmdCArICJweCI7DQogICAgICAgICAgICAgICAgICAgIGUubGVmdCA9
M0QgYjsNCiAgICAgICAgICAgICAgICAgICAgYS5ydW50aW1lU3R5bGUubGVm
dCA9M0Qgag0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIHJldHVybiBmDQogICAgICAgIH0sDQogICAgICAgIHN3YXA6
IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICB2YXIgZiA9M0Qg
e307DQogICAgICAgICAgICBmb3IgKHZhciBlIGluIGIpIHsNCiAgICAgICAg
ICAgICAgICBmW2VdID0zRCBhLnN0eWxlW2VdOw0KICAgICAgICAgICAgICAg
IGEuc3R5bGVbZV0gPTNEIGJbZV0NCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGQuY2FsbChhKTsNCiAgICAgICAgICAgIGZvciAoZSBpbiBiKSBhLnN0
eWxlW2VdID0zRCBmW2VdDQogICAgICAgIH0NCiAgICB9KTsNCiAgICBpZiAo
Yy5leHByICYmIGMuZXhwci5maWx0ZXJzKSB7DQogICAgICAgIGMuZXhwci5m
aWx0ZXJzLmhpZGRlbiA9M0QgZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAg
IHZhciBiID0zRA0KICAgICAgICAgICAgYS5vZmZzZXRXaWR0aCwNCiAgICAg
ICAgICAgICAgICBkID0zRCBhLm9mZnNldEhlaWdodCwNCiAgICAgICAgICAg
ICAgICBmID0zRCBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPTNEPTNEPTNE
ICJ0ciI7DQogICAgICAgICAgICByZXR1cm4gYiA9M0Q9M0Q9M0QgMCAmJiBk
ID0zRD0zRD0zRCAwICYmICFmID8gdHJ1ZSA6IGIgPiAwID0NCiYmIGQgPiAw
ICYmICFmID8gZmFsc2UgOiBjLmN1ckNTUyhhLCAiZGlzcGxheSIpID0zRD0z
RD0zRCAibm9uZSINCiAgICAgICAgfTsNCiAgICAgICAgYy5leHByLmZpbHRl
cnMudmlzaWJsZSA9M0QgZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJl
dHVybiAhYy5leHByLmZpbHRlcnMuaGlkZGVuKGEpDQogICAgICAgIH0NCiAg
ICB9DQogICAgdmFyIHNiID0zRCBKKCksDQogICAgICAgIHRiID0zRCAvPHNj
cmlwdCgufFxzKSo/XC9zY3JpcHQ+L2dpLA0KICAgICAgICB1YiA9M0QgL3Nl
bGVjdHx0ZXh0YXJlYS9pLA0KICAgICAgICB2YiA9M0QgPQ0KL2NvbG9yfGRh
dGV8ZGF0ZXRpbWV8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29y
ZHxyYW5nZXxzZWFyY2h8dGVsfD0NCnRleHR8dGltZXx1cmx8d2Vlay9pLA0K
ICAgICAgICBOID0zRCAvPTNEXD8oJnwkKS8sDQogICAgICAgIGthID0zRCAv
XD8vLA0KICAgICAgICB3YiA9M0QgLyhcP3wmKV89M0QuKj8oJnwkKS8sDQog
ICAgICAgIHhiID0zRCAvXihcdys6KT9cL1wvKFteXC8/I10rKS8sDQogICAg
ICAgIHliID0zRCAvJTIwL2csDQogICAgICAgIHpiID0zRCBjLmZuLmxvYWQ7
DQogICAgYy5mbi5leHRlbmQoew0KICAgICAgICBsb2FkOiBmdW5jdGlvbiAo
YSwgYiwgZCkgew0KICAgICAgICAgICAgaWYgKHR5cGVvZiBhICE9M0Q9M0Qg
InN0cmluZyIpIHJldHVybiB6Yi5jYWxsKHRoaXMsIGEpOw0KICAgICAgICAg
ICAgZWxzZSBpZiAoIXRoaXMubGVuZ3RoKSByZXR1cm4gdGhpczsNCiAgICAg
ICAgICAgIHZhciBmID0zRCBhLmluZGV4T2YoIiAiKTsNCiAgICAgICAgICAg
IGlmIChmID49M0QgMCkgew0KICAgICAgICAgICAgICAgIHZhciBlID0zRCBh
LnNsaWNlKGYsIGEubGVuZ3RoKTsNCiAgICAgICAgICAgICAgICBhID0zRCBh
LnNsaWNlKDAsIGYpDQogICAgICAgICAgICB9DQogICAgICAgICAgICBmID0z
RCAiR0VUIjsNCiAgICAgICAgICAgIGlmIChiKSBpZiAoYy5pc0Z1bmN0aW9u
KGIpKSB7DQogICAgICAgICAgICAgICAgZCA9M0QgYjsNCiAgICAgICAgICAg
ICAgICBiID0zRCBudWxsDQogICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVv
ZiBiID0zRD0zRD0zRCAib2JqZWN0Iikgew0KICAgICAgICAgICAgICAgIGIg
PTNEIGMucGFyYW0oYiwgYy5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpOw0K
ICAgICAgICAgICAgICAgIGYgPTNEICJQT1NUIg0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgdmFyIGogPTNEIHRoaXM7DQogICAgICAgICAgICBjLmFq
YXgoew0KICAgICAgICAgICAgICAgIHVybDogYSwNCiAgICAgICAgICAgICAg
ICB0eXBlOiBmLA0KICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAiaHRtbCIs
DQogICAgICAgICAgICAgICAgZGF0YTogYiwNCiAgICAgICAgICAgICAgICBj
b21wbGV0ZTogZnVuY3Rpb24gKGksIG8pIHsNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKG8gPTNEPTNEPTNEICJzdWNjZXNzIiB8fCBvID0zRD0zRD0zRCA9
DQoibm90bW9kaWZpZWQiKSBqLmh0bWwoZSA/IGMoIjxkaXYgLz4iKS5hcHBl
bmQoaS5yZXNwb25zZVRleHQucmVwbGFjZSh0YiwgPQ0KIiIpKS5maW5kKGUp
IDogaS5yZXNwb25zZVRleHQpOw0KICAgICAgICAgICAgICAgICAgICBkICYm
IGouZWFjaChkLCBbaS5yZXNwb25zZVRleHQsIG8sIGldKQ0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgcmV0dXJu
IHRoaXMNCiAgICAgICAgfSwNCiAgICAgICAgc2VyaWFsaXplOiBmdW5jdGlv
biAoKSB7DQogICAgICAgICAgICByZXR1cm4gYy5wYXJhbSh0aGlzLnNlcmlh
bGl6ZUFycmF5KCkpDQogICAgICAgIH0sDQogICAgICAgIHNlcmlhbGl6ZUFy
cmF5OiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5t
YXAoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LmVsZW1lbnRzID8gYy5tYWtlQXJyYXkodGhpcy5lbGVtZW50cykgOiB0aGlz
DQogICAgICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKCkgew0KICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgJiYgIXRoaXMuZGlzYWJsZWQg
JiYgKHRoaXMuY2hlY2tlZCB8fCA9DQp1Yi50ZXN0KHRoaXMubm9kZU5hbWUp
IHx8IHZiLnRlc3QodGhpcy50eXBlKSkNCiAgICAgICAgICAgIH0pLm1hcChm
dW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgICAgIGEgPTNEIGModGhp
cykudmFsKCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGEgPTNEPTNEIG51
bGwgPyBudWxsIDogYy5pc0FycmF5KGEpID8gYy5tYXAoYSwgPQ0KZnVuY3Rp
b24gKGQpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWU6IGIubmFtZSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlOiBkDQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICB9KSA6IHsNCiAgICAgICAgICAgICAgICAgICAg
bmFtZTogYi5uYW1lLA0KICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYQ0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pLmdldCgpDQogICAg
ICAgIH0NCiAgICB9KTsNCiAgICBjLmVhY2goImFqYXhTdGFydCBhamF4U3Rv
cCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzID0NCmFqYXhT
ZW5kIi5zcGxpdCgiICIpLCBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICBj
LmZuW2JdID0zRCBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgcmV0dXJu
IHRoaXMuYmluZChiLCBkKQ0KICAgICAgICB9DQogICAgfSk7DQogICAgYy5l
eHRlbmQoew0KICAgICAgICBnZXQ6IGZ1bmN0aW9uIChhLCBiLCBkLCBmKSB7
DQogICAgICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGIpKSB7DQogICAgICAg
ICAgICAgICAgZiA9M0QgZiB8fCBkOw0KICAgICAgICAgICAgICAgIGQgPTNE
IGI7DQogICAgICAgICAgICAgICAgYiA9M0QgbnVsbA0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgcmV0dXJuIGMuYWpheCh7DQogICAgICAgICAgICAg
ICAgdHlwZTogIkdFVCIsDQogICAgICAgICAgICAgICAgdXJsOiBhLA0KICAg
ICAgICAgICAgICAgIGRhdGE6IGIsDQogICAgICAgICAgICAgICAgc3VjY2Vz
czogZCwNCiAgICAgICAgICAgICAgICBkYXRhVHlwZTogZg0KICAgICAgICAg
ICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAgZ2V0U2NyaXB0OiBmdW5jdGlv
biAoYSwgYikgew0KICAgICAgICAgICAgcmV0dXJuIGMuZ2V0KGEsIG51bGws
IGIsICJzY3JpcHQiKQ0KICAgICAgICB9LA0KICAgICAgICBnZXRKU09OOiBm
dW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgcmV0dXJuIGMuZ2V0
KGEsIGIsIGQsICJqc29uIikNCiAgICAgICAgfSwNCiAgICAgICAgcG9zdDog
ZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAgICAgIGlmIChjLmlz
RnVuY3Rpb24oYikpIHsNCiAgICAgICAgICAgICAgICBmID0zRCBmIHx8IGQ7
DQogICAgICAgICAgICAgICAgZCA9M0QgYjsNCiAgICAgICAgICAgICAgICBi
ID0zRCB7fQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGMu
YWpheCh7DQogICAgICAgICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAg
ICAgICAgICAgIHVybDogYSwNCiAgICAgICAgICAgICAgICBkYXRhOiBiLA0K
ICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGQsDQogICAgICAgICAgICAgICAg
ZGF0YVR5cGU6IGYNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAg
ICAgIGFqYXhTZXR1cDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIGMu
ZXh0ZW5kKGMuYWpheFNldHRpbmdzLCBhKQ0KICAgICAgICB9LA0KICAgICAg
ICBhamF4U2V0dGluZ3M6IHsNCiAgICAgICAgICAgIHVybDogbG9jYXRpb24u
aHJlZiwNCiAgICAgICAgICAgIGdsb2JhbDogdHJ1ZSwNCiAgICAgICAgICAg
IHR5cGU6ICJHRVQiLA0KICAgICAgICAgICAgY29udGVudFR5cGU6ICJhcHBs
aWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLA0KICAgICAgICAgICAg
cHJvY2Vzc0RhdGE6IHRydWUsDQogICAgICAgICAgICBhc3luYzogdHJ1ZSwN
CiAgICAgICAgICAgIHhocjogQS5YTUxIdHRwUmVxdWVzdCAmJiAoQS5sb2Nh
dGlvbi5wcm90b2NvbCAhPTNEPTNEID0NCiJmaWxlOiIgfHwgIUEuQWN0aXZl
WE9iamVjdCkgPw0KICAgICAgICAgICAgZnVuY3Rpb24gKCkgew0KICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgQS5YTUxIdHRwUmVxdWVzdA0KICAgICAg
ICAgICAgfSA6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICB0cnkg
ew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEEuQWN0aXZlWE9i
amVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKQ0KICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKGEpIHt9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYWNj
ZXB0czogew0KICAgICAgICAgICAgICAgIHhtbDogImFwcGxpY2F0aW9uL3ht
bCwgdGV4dC94bWwiLA0KICAgICAgICAgICAgICAgIGh0bWw6ICJ0ZXh0L2h0
bWwiLA0KICAgICAgICAgICAgICAgIHNjcmlwdDogInRleHQvamF2YXNjcmlw
dCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCIsDQogICAgICAgICAgICAgICAg
anNvbjogImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIsDQog
ICAgICAgICAgICAgICAgdGV4dDogInRleHQvcGxhaW4iLA0KICAgICAgICAg
ICAgICAgIF9kZWZhdWx0OiAiKi8qIg0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9LA0KICAgICAgICBsYXN0TW9kaWZpZWQ6IHt9LA0KICAgICAgICBldGFn
OiB7fSwNCiAgICAgICAgYWpheDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAg
ICAgIGZ1bmN0aW9uIGIoKSB7DQogICAgICAgICAgICAgICAgZS5zdWNjZXNz
ICYmIGUuc3VjY2Vzcy5jYWxsKGssIG8sIGksIHgpOw0KICAgICAgICAgICAg
ICAgIGUuZ2xvYmFsICYmIGYoImFqYXhTdWNjZXNzIiwgW3gsIGVdKQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZnVuY3Rpb24gZCgpIHsNCiAgICAg
ICAgICAgICAgICBlLmNvbXBsZXRlICYmIGUuY29tcGxldGUuY2FsbChrLCB4
LCBpKTsNCiAgICAgICAgICAgICAgICBlLmdsb2JhbCAmJiBmKCJhamF4Q29t
cGxldGUiLCBbeCwgZV0pOw0KICAgICAgICAgICAgICAgIGUuZ2xvYmFsICYm
ICEtLWMuYWN0aXZlICYmIGMuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZnVuY3Rpb24gZihxLCBwKSB7
DQogICAgICAgICAgICAgICAgKGUuY29udGV4dCA/IGMoZS5jb250ZXh0KSA6
IGMuZXZlbnQpLnRyaWdnZXIocSwgcCkNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIHZhciBlID0zRCBjLmV4dGVuZCh0cnVlLCB7fSwgYy5hamF4U2V0
dGluZ3MsIGEpLA0KICAgICAgICAgICAgICAgIGosIGksIG8sIGsgPTNEIGEg
JiYgYS5jb250ZXh0IHx8IGUsDQogICAgICAgICAgICAgICAgbiA9M0QgZS50
eXBlLnRvVXBwZXJDYXNlKCk7DQogICAgICAgICAgICBpZiAoZS5kYXRhICYm
IGUucHJvY2Vzc0RhdGEgJiYgdHlwZW9mIGUuZGF0YSAhPTNEPTNEID0NCiJz
dHJpbmciKSBlLmRhdGEgPTNEIGMucGFyYW0oZS5kYXRhLCBlLnRyYWRpdGlv
bmFsKTsNCiAgICAgICAgICAgIGlmIChlLmRhdGFUeXBlID0zRD0zRD0zRCAi
anNvbnAiKSB7DQogICAgICAgICAgICAgICAgaWYgKG4gPTNEPTNEPTNEICJH
RVQiKSBOLnRlc3QoZS51cmwpIHx8IChlLnVybCArPTNEID0NCihrYS50ZXN0
KGUudXJsKSA/ICImIiA6ICI/IikgKyAoZS5qc29ucCB8fCAiY2FsbGJhY2si
KSArICI9M0Q/Iik7DQogICAgICAgICAgICAgICAgZWxzZSBpZiAoIWUuZGF0
YSB8fCAhTi50ZXN0KGUuZGF0YSkpIGUuZGF0YSA9M0QgKGUuZGF0YSA9DQo/
IGUuZGF0YSArICImIiA6ICIiKSArIChlLmpzb25wIHx8ICJjYWxsYmFjayIp
ICsgIj0zRD8iOw0KICAgICAgICAgICAgICAgIGUuZGF0YVR5cGUgPTNEICJq
c29uIg0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGUuZGF0YVR5
cGUgPTNEPTNEPTNEICJqc29uIiAmJiAoZS5kYXRhICYmIE4udGVzdChlLmRh
dGEpID0NCnx8IE4udGVzdChlLnVybCkpKSB7DQogICAgICAgICAgICAgICAg
aiA9M0QgZS5qc29ucENhbGxiYWNrIHx8ICJqc29ucCIgKyBzYisrOw0KICAg
ICAgICAgICAgICAgIGlmIChlLmRhdGEpIGUuZGF0YSA9M0QgKGUuZGF0YSAr
ICIiKS5yZXBsYWNlKE4sICI9M0QiICsgPQ0KaiArICIkMSIpOw0KICAgICAg
ICAgICAgICAgIGUudXJsID0zRCBlLnVybC5yZXBsYWNlKE4sICI9M0QiICsg
aiArICIkMSIpOw0KICAgICAgICAgICAgICAgIGUuZGF0YVR5cGUgPTNEICJz
Y3JpcHQiOw0KICAgICAgICAgICAgICAgIEFbal0gPTNEIEFbal0gfHwNCiAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAocSkgew0KICAgICAgICAgICAgICAg
ICAgICBvID0zRCBxOw0KICAgICAgICAgICAgICAgICAgICBiKCk7DQogICAg
ICAgICAgICAgICAgICAgIGQoKTsNCiAgICAgICAgICAgICAgICAgICAgQVtq
XSA9M0QgdzsNCiAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGV0ZSBBW2pdDQogICAgICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKHApIHt9DQogICAgICAgICAgICAgICAgICAgIHogJiYg
ei5yZW1vdmVDaGlsZChDKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGlmIChlLmRhdGFUeXBlID0zRD0zRD0zRCAi
c2NyaXB0IiAmJiBlLmNhY2hlID0zRD0zRD0zRCBudWxsKSA9DQplLmNhY2hl
ID0zRCBmYWxzZTsNCiAgICAgICAgICAgIGlmIChlLmNhY2hlID0zRD0zRD0z
RCBmYWxzZSAmJiBuID0zRD0zRD0zRCAiR0VUIikgew0KICAgICAgICAgICAg
ICAgIHZhciByID0zRCBKKCksDQogICAgICAgICAgICAgICAgICAgIHUgPTNE
IGUudXJsLnJlcGxhY2Uod2IsICIkMV89M0QiICsgciArICIkMiIpOw0KICAg
ICAgICAgICAgICAgIGUudXJsID0zRCB1ICsgKHUgPTNEPTNEPTNEIGUudXJs
ID8gKGthLnRlc3QoZS51cmwpID8gIiYiID0NCjogIj8iKSArICJfPTNEIiAr
IHIgOiAiIikNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChlLmRh
dGEgJiYgbiA9M0Q9M0Q9M0QgIkdFVCIpIGUudXJsICs9M0QgKGthLnRlc3Qo
ZS51cmwpID0NCj8gIiYiIDogIj8iKSArIGUuZGF0YTsNCiAgICAgICAgICAg
IGUuZ2xvYmFsICYmICFjLmFjdGl2ZSsrICYmIGMuZXZlbnQudHJpZ2dlcigi
YWpheFN0YXJ0Iik7DQogICAgICAgICAgICByID0zRCAociA9M0QgeGIuZXhl
YyhlLnVybCkpICYmIChyWzFdICYmIHJbMV0gIT0zRD0zRCA9DQpsb2NhdGlv
bi5wcm90b2NvbCB8fCByWzJdICE9M0Q9M0QgbG9jYXRpb24uaG9zdCk7DQog
ICAgICAgICAgICBpZiAoZS5kYXRhVHlwZSA9M0Q9M0Q9M0QgInNjcmlwdCIg
JiYgbiA9M0Q9M0Q9M0QgIkdFVCIgJiYgcikgPQ0Kew0KICAgICAgICAgICAg
ICAgIHZhciB6ID0zRCBzLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilb
MF0gfHwgPQ0Kcy5kb2N1bWVudEVsZW1lbnQsDQogICAgICAgICAgICAgICAg
ICAgIEMgPTNEIHMuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7DQogICAgICAg
ICAgICAgICAgQy5zcmMgPTNEIGUudXJsOw0KICAgICAgICAgICAgICAgIGlm
IChlLnNjcmlwdENoYXJzZXQpIEMuY2hhcnNldCA9M0QgZS5zY3JpcHRDaGFy
c2V0Ow0KICAgICAgICAgICAgICAgIGlmICghaikgew0KICAgICAgICAgICAg
ICAgICAgICB2YXIgQiA9M0QNCiAgICAgICAgICAgICAgICAgICAgZmFsc2U7
DQogICAgICAgICAgICAgICAgICAgIEMub25sb2FkID0zRCBDLm9ucmVhZHlz
dGF0ZWNoYW5nZSA9M0QgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFCICYmICghdGhpcy5yZWFkeVN0YXRlIHx8IHRoaXMu
cmVhZHlTdGF0ZSA9DQo9M0Q9M0Q9M0QgImxvYWRlZCIgfHwgdGhpcy5yZWFk
eVN0YXRlID0zRD0zRD0zRCAiY29tcGxldGUiKSkgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEIgPTNEIHRydWU7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDLm9ubG9hZCA9
M0QgQy5vbnJlYWR5c3RhdGVjaGFuZ2UgPTNEIG51bGw7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeiAmJiBDLnBhcmVudE5vZGUgJiYgei5yZW1v
dmVDaGlsZChDKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIHouaW5zZXJ0QmVmb3JlKEMsIHouZmlyc3RDaGlsZCk7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIHcNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHZhciBFID0zRCBmYWxzZSwNCiAgICAgICAgICAgICAgICB4ID0zRCBl
LnhocigpOw0KICAgICAgICAgICAgaWYgKHgpIHsNCiAgICAgICAgICAgICAg
ICBlLnVzZXJuYW1lID8geC5vcGVuKG4sIGUudXJsLCBlLmFzeW5jLCBlLnVz
ZXJuYW1lLCA9DQplLnBhc3N3b3JkKSA6IHgub3BlbihuLCBlLnVybCwgZS5h
c3luYyk7DQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAg
ICAgICAgaWYgKGUuZGF0YSB8fCBhICYmIGEuY29udGVudFR5cGUpID0NCngu
c2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgZS5jb250ZW50VHlw
ZSk7DQogICAgICAgICAgICAgICAgICAgIGlmIChlLmlmTW9kaWZpZWQpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGMubGFzdE1vZGlmaWVkW2UudXJs
XSAmJiA9DQp4LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNl
IiwgYy5sYXN0TW9kaWZpZWRbZS51cmxdKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGMuZXRhZ1tlLnVybF0gJiYgPQ0KeC5zZXRSZXF1ZXN0SGVhZGVy
KCJJZi1Ob25lLU1hdGNoIiwgYy5ldGFnW2UudXJsXSkNCiAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICByIHx8IHguc2V0UmVx
dWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsID0NCiJYTUxIdHRwUmVx
dWVzdCIpOw0KICAgICAgICAgICAgICAgICAgICB4LnNldFJlcXVlc3RIZWFk
ZXIoIkFjY2VwdCIsIGUuZGF0YVR5cGUgJiYgPQ0KZS5hY2NlcHRzW2UuZGF0
YVR5cGVdID8gZS5hY2NlcHRzW2UuZGF0YVR5cGVdICsgIiwgKi8qIiA6ID0N
CmUuYWNjZXB0cy5fZGVmYXVsdCkNCiAgICAgICAgICAgICAgICB9IGNhdGNo
IChnYSkge30NCiAgICAgICAgICAgICAgICBpZiAoZS5iZWZvcmVTZW5kICYm
IGUuYmVmb3JlU2VuZC5jYWxsKGssIHgsIGUpID0zRD0zRD0zRCA9DQpmYWxz
ZSkgew0KICAgICAgICAgICAgICAgICAgICBlLmdsb2JhbCAmJiAhLS1jLmFj
dGl2ZSAmJiA9DQpjLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIik7DQogICAg
ICAgICAgICAgICAgICAgIHguYWJvcnQoKTsNCiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIGUuZ2xvYmFsICYmIGYoImFqYXhTZW5kIiwgW3gsIGVdKTsNCiAg
ICAgICAgICAgICAgICB2YXIgZyA9M0QgeC5vbnJlYWR5c3RhdGVjaGFuZ2Ug
PTNEIGZ1bmN0aW9uIChxKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgh
eCB8fCB4LnJlYWR5U3RhdGUgPTNEPTNEPTNEIDAgfHwgcSA9M0Q9M0Q9M0Qg
PQ0KImFib3J0Iikgew0KICAgICAgICAgICAgICAgICAgICAgICAgRSB8fCBk
KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBFID0zRCB0cnVlOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHgpIHgub25yZWFkeXN0YXRlY2hh
bmdlID0zRCBjLm5vb3ANCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICghRSAmJiB4ICYmICh4LnJlYWR5U3RhdGUgPTNEPTNEPTNEIDQgfHwgcSA9
DQo9M0Q9M0Q9M0QgInRpbWVvdXQiKSkgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgRSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHgu
b25yZWFkeXN0YXRlY2hhbmdlID0zRCBjLm5vb3A7DQogICAgICAgICAgICAg
ICAgICAgICAgICBpID0zRCBxID0zRD0zRD0zRCAidGltZW91dCIgPyAidGlt
ZW91dCIgOiA9DQohYy5odHRwU3VjY2Vzcyh4KSA/ICJlcnJvciIgOiBlLmlm
TW9kaWZpZWQgJiYgYy5odHRwTm90TW9kaWZpZWQoeCwgPQ0KZS51cmwpID8g
Im5vdG1vZGlmaWVkIiA6ICJzdWNjZXNzIjsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBwOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkg
PTNEPTNEPTNEICJzdWNjZXNzIikgdHJ5IHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvID0zRCBjLmh0dHBEYXRhKHgsIGUuZGF0YVR5cGUsIGUp
DQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh2KSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaSA9M0QgInBhcnNlcmVycm9yIjsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0zRCB2DQogICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaSA9M0Q9M0Q9M0QgInN1Y2Nlc3MiIHx8IGkgPTNEPTNEPTNEID0NCiJu
b3Rtb2RpZmllZCIpIGogfHwgYigpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBjLmhhbmRsZUVycm9yKGUsIHgsIGksIHApOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
cSA9M0Q9M0Q9M0QgInRpbWVvdXQiICYmIHguYWJvcnQoKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChlLmFzeW5jKSB4ID0zRCBudWxsDQogICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9Ow0KICAgICAg
ICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBoID0z
RCB4LmFib3J0Ow0KICAgICAgICAgICAgICAgICAgICB4LmFib3J0ID0zRCBm
dW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB4ICYmIGgu
Y2FsbCh4KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGcoImFib3J0IikN
CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKGwpIHt9DQogICAgICAgICAgICAgICAgZS5hc3luYyAmJiBlLnRpbWVv
dXQgPiAwICYmIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgICAgICB4ICYmICFFICYmIGcoInRpbWVvdXQiKQ0KICAgICAgICAg
ICAgICAgIH0sIGUudGltZW91dCk7DQogICAgICAgICAgICAgICAgdHJ5IHsN
CiAgICAgICAgICAgICAgICAgICAgeC5zZW5kKG4gPTNEPTNEPTNEICJQT1NU
IiB8fCBuID0zRD0zRD0zRCAiUFVUIiB8fCBuID0NCj0zRD0zRD0zRCAiREVM
RVRFIiA/IGUuZGF0YSA6IG51bGwpDQogICAgICAgICAgICAgICAgfSBjYXRj
aCAobSkgew0KICAgICAgICAgICAgICAgICAgICBjLmhhbmRsZUVycm9yKGUs
IHgsIG51bGwsIG0pOw0KICAgICAgICAgICAgICAgICAgICBkKCkNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZS5hc3luYyB8fCBnKCk7
DQogICAgICAgICAgICAgICAgcmV0dXJuIHgNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfSwNCiAgICAgICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uIChhLCBi
LCBkLCBmKSB7DQogICAgICAgICAgICBpZiAoYS5lcnJvcikgYS5lcnJvci5j
YWxsKGEuY29udGV4dCB8fCBhLCBiLCBkLCBmKTsNCiAgICAgICAgICAgIGlm
IChhLmdsb2JhbCkoYS5jb250ZXh0ID8gYyhhLmNvbnRleHQpIDogPQ0KYy5l
dmVudCkudHJpZ2dlcigiYWpheEVycm9yIiwgW2IsIGEsIGZdKQ0KICAgICAg
ICB9LA0KDQogICAgICAgIGFjdGl2ZTogMCwNCiAgICAgICAgaHR0cFN1Y2Nl
c3M6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAg
ICAgICAgICAgIHJldHVybiAhYS5zdGF0dXMgJiYgbG9jYXRpb24ucHJvdG9j
b2wgPTNEPTNEPTNEICJmaWxlOiIgPQ0KfHwgYS5zdGF0dXMgPj0zRCAyMDAg
JiYgYS5zdGF0dXMgPCAzMDAgfHwgYS5zdGF0dXMgPTNEPTNEPTNEIDMwNCB8
fCA9DQphLnN0YXR1cyA9M0Q9M0Q9M0QgMTIyMyB8fCBhLnN0YXR1cyA9M0Q9
M0Q9M0QgMA0KICAgICAgICAgICAgfSBjYXRjaCAoYikge30NCiAgICAgICAg
ICAgIHJldHVybiBmYWxzZQ0KICAgICAgICB9LA0KICAgICAgICBodHRwTm90
TW9kaWZpZWQ6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICB2YXIg
ZCA9M0QgYS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLA0K
ICAgICAgICAgICAgICAgIGYgPTNEIGEuZ2V0UmVzcG9uc2VIZWFkZXIoIkV0
YWciKTsNCiAgICAgICAgICAgIGlmIChkKSBjLmxhc3RNb2RpZmllZFtiXSA9
M0QgZDsNCiAgICAgICAgICAgIGlmIChmKSBjLmV0YWdbYl0gPTNEIGY7DQog
ICAgICAgICAgICByZXR1cm4gYS5zdGF0dXMgPTNEPTNEPTNEIDMwNCB8fCBh
LnN0YXR1cyA9M0Q9M0Q9M0QgMA0KICAgICAgICB9LA0KICAgICAgICBodHRw
RGF0YTogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgIHZhciBm
ID0zRCBhLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSB8fCAi
IiwNCiAgICAgICAgICAgICAgICBlID0zRCBiID0zRD0zRD0zRCAieG1sIiB8
fCAhYiAmJiBmLmluZGV4T2YoInhtbCIpID49M0QgPQ0KMDsNCiAgICAgICAg
ICAgIGEgPTNEIGUgPyBhLnJlc3BvbnNlWE1MIDogYS5yZXNwb25zZVRleHQ7
DQogICAgICAgICAgICBlICYmIGEuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1l
ID0zRD0zRD0zRCAicGFyc2VyZXJyb3IiICYmID0NCmMuZXJyb3IoInBhcnNl
cmVycm9yIik7DQogICAgICAgICAgICBpZiAoZCAmJiBkLmRhdGFGaWx0ZXIp
IGEgPTNEIGQuZGF0YUZpbHRlcihhLCBiKTsNCiAgICAgICAgICAgIGlmICh0
eXBlb2YgYSA9M0Q9M0Q9M0QgInN0cmluZyIpIGlmIChiID0zRD0zRD0zRCAi
anNvbiIgfHwgPQ0KIWIgJiYgZi5pbmRleE9mKCJqc29uIikgPj0zRCAwKSBh
ID0zRCBjLnBhcnNlSlNPTihhKTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGIg
PTNEPTNEPTNEICJzY3JpcHQiIHx8ICFiICYmID0NCmYuaW5kZXhPZigiamF2
YXNjcmlwdCIpID49M0QgMCkgYy5nbG9iYWxFdmFsKGEpOw0KICAgICAgICAg
ICAgcmV0dXJuIGENCiAgICAgICAgfSwNCiAgICAgICAgcGFyYW06IGZ1bmN0
aW9uIChhLCBiKSB7DQogICAgICAgICAgICBmdW5jdGlvbiBkKGksIG8pIHsN
CiAgICAgICAgICAgICAgICBpZiAoYy5pc0FycmF5KG8pKSBjLmVhY2gobywg
ZnVuY3Rpb24gKGssIG4pIHsNCiAgICAgICAgICAgICAgICAgICAgYiB8fCAv
XFtcXSQvLnRlc3QoaSkgPyBmKGksIG4pIDogZChpICsgIlsiICsgKHR5cGVv
ZiA9DQpuID0zRD0zRD0zRCAib2JqZWN0IiB8fCBjLmlzQXJyYXkobikgPyBr
IDogIiIpICsgIl0iLCBuKQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAg
ICAgICAgICAgIGVsc2UhYiAmJiBvICE9M0QgbnVsbCAmJiB0eXBlb2YgbyA9
M0Q9M0Q9M0QgIm9iamVjdCIgPyA9DQpjLmVhY2gobywgZnVuY3Rpb24gKGss
IG4pIHsNCiAgICAgICAgICAgICAgICAgICAgZChpICsgIlsiICsgayArICJd
IiwgbikNCiAgICAgICAgICAgICAgICB9KSA6IGYoaSwgbykNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGZ1bmN0aW9uIGYoaSwgbykgew0KICAgICAg
ICAgICAgICAgIG8gPTNEIGMuaXNGdW5jdGlvbihvKSA/IG8oKSA6IG87DQog
ICAgICAgICAgICAgICAgZVtlLmxlbmd0aF0gPTNEIGVuY29kZVVSSUNvbXBv
bmVudChpKSArICI9M0QiICsgPQ0KZW5jb2RlVVJJQ29tcG9uZW50KG8pDQog
ICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgZSA9M0QgW107DQogICAg
ICAgICAgICBpZiAoYiA9M0Q9M0Q9M0QgdykgYiA9M0QgYy5hamF4U2V0dGlu
Z3MudHJhZGl0aW9uYWw7DQogICAgICAgICAgICBpZiAoYy5pc0FycmF5KGEp
IHx8IGEuanF1ZXJ5KSBjLmVhY2goYSwgZnVuY3Rpb24gKCkgew0KICAgICAg
ICAgICAgICAgIGYodGhpcy5uYW1lLCB0aGlzLnZhbHVlKQ0KICAgICAgICAg
ICAgfSk7DQogICAgICAgICAgICBlbHNlIGZvciAodmFyIGogaW4gYSkgZChq
LCBhW2pdKTsNCiAgICAgICAgICAgIHJldHVybiBlLmpvaW4oIiYiKS5yZXBs
YWNlKHliLCAiKyIpDQogICAgICAgIH0NCiAgICB9KTsNCiAgICB2YXIgbGEg
PTNEIHt9LA0KICAgICAgICBBYiA9M0QgL3RvZ2dsZXxzaG93fGhpZGUvLA0K
ICAgICAgICBCYiA9M0QgL14oWystXT0zRCk/KFtcZCstLl0rKSguKikkLywN
CiAgICAgICAgVywgdmEgPTNEIFsNCiAgICAgICAgWyJoZWlnaHQiLCAibWFy
Z2luVG9wIiwgIm1hcmdpbkJvdHRvbSIsICJwYWRkaW5nVG9wIiwgPQ0KInBh
ZGRpbmdCb3R0b20iXSwNCiAgICAgICAgWyJ3aWR0aCIsICJtYXJnaW5MZWZ0
IiwgIm1hcmdpblJpZ2h0IiwgInBhZGRpbmdMZWZ0IiwgPQ0KInBhZGRpbmdS
aWdodCJdLA0KICAgICAgICBbIm9wYWNpdHkiXQ0KICAgIF07DQogICAgYy5m
bi5leHRlbmQoew0KICAgICAgICBzaG93OiBmdW5jdGlvbiAoYSwgYikgew0K
ICAgICAgICAgICAgaWYgKGEgfHwgYSA9M0Q9M0Q9M0QgMCkgcmV0dXJuIHRo
aXMuYW5pbWF0ZShLKCJzaG93IiwgMyksIGEsID0NCmIpOw0KICAgICAgICAg
ICAgZWxzZSB7DQogICAgICAgICAgICAgICAgYSA9M0QgMDsNCiAgICAgICAg
ICAgICAgICBmb3IgKGIgPTNEIHRoaXMubGVuZ3RoOyBhIDwgYjsgYSsrKSB7
DQogICAgICAgICAgICAgICAgICAgIHZhciBkID0zRCBjLmRhdGEodGhpc1th
XSwgIm9sZGRpc3BsYXkiKTsNCiAgICAgICAgICAgICAgICAgICAgdGhpc1th
XS5zdHlsZS5kaXNwbGF5ID0zRCBkIHx8ICIiOw0KICAgICAgICAgICAgICAg
ICAgICBpZiAoYy5jc3ModGhpc1thXSwgImRpc3BsYXkiKSA9M0Q9M0Q9M0Qg
Im5vbmUiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkID0zRCB0aGlz
W2FdLm5vZGVOYW1lOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGY7
DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFbZF0pIGYgPTNEIGxh
W2RdOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPTNEIGMoIjwiICsgZCArICIg
PQ0KLz4iKS5hcHBlbmRUbygiYm9keSIpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGYgPTNEIGUuY3NzKCJkaXNwbGF5Iik7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGYgPTNEPTNEPTNEICJub25lIikgZiA9
M0QgImJsb2NrIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnJl
bW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhW2RdID0z
RCBmDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgICAgICBjLmRhdGEodGhpc1thXSwgIm9sZGRpc3BsYXkiLCBmKQ0K
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIGEgPTNEIDA7DQogICAgICAgICAgICAgICAgZm9yIChi
ID0zRCB0aGlzLmxlbmd0aDsgYSA8IGI7IGErKykgPQ0KdGhpc1thXS5zdHls
ZS5kaXNwbGF5ID0zRCBjLmRhdGEodGhpc1thXSwgIm9sZGRpc3BsYXkiKSB8
fCAiIjsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9LA0KICAgICAgICBoaWRlOiBmdW5jdGlvbiAoYSwg
Yikgew0KICAgICAgICAgICAgaWYgKGEgfHwgYSA9M0Q9M0Q9M0QgMCkgcmV0
dXJuIHRoaXMuYW5pbWF0ZShLKCJoaWRlIiwgMyksIGEsID0NCmIpOw0KICAg
ICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgYSA9M0QgMDsNCiAg
ICAgICAgICAgICAgICBmb3IgKGIgPTNEIHRoaXMubGVuZ3RoOyBhIDwgYjsg
YSsrKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBkID0zRCBjLmRhdGEo
dGhpc1thXSwgIm9sZGRpc3BsYXkiKTsNCiAgICAgICAgICAgICAgICAgICAg
IWQgJiYgZCAhPTNEPTNEICJub25lIiAmJiBjLmRhdGEodGhpc1thXSwgPQ0K
Im9sZGRpc3BsYXkiLCBjLmNzcyh0aGlzW2FdLCAiZGlzcGxheSIpKQ0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBhID0zRCAwOw0KICAg
ICAgICAgICAgICAgIGZvciAoYiA9M0QgdGhpcy5sZW5ndGg7IGEgPCBiOyBh
KyspID0NCnRoaXNbYV0uc3R5bGUuZGlzcGxheSA9M0QgIm5vbmUiOw0KICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzDQogICAgICAgICAgICB9DQogICAg
ICAgIH0sDQogICAgICAgIF90b2dnbGU6IGMuZm4udG9nZ2xlLA0KICAgICAg
ICB0b2dnbGU6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICB2YXIg
ZCA9M0QgdHlwZW9mIGEgPTNEPTNEPTNEICJib29sZWFuIjsNCiAgICAgICAg
ICAgIGlmIChjLmlzRnVuY3Rpb24oYSkgJiYgYy5pc0Z1bmN0aW9uKGIpKSA9
DQp0aGlzLl90b2dnbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsNCiAgICAg
ICAgICAgIGVsc2UgYSA9M0Q9M0QgbnVsbCB8fCBkID8gdGhpcy5lYWNoKGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICB2YXIgZiA9M0QgZCA/IGEg
OiBjKHRoaXMpLmlzKCI6aGlkZGVuIik7DQogICAgICAgICAgICAgICAgYyh0
aGlzKVtmID8gInNob3ciIDogImhpZGUiXSgpDQogICAgICAgICAgICB9KSA6
IHRoaXMuYW5pbWF0ZShLKCJ0b2dnbGUiLCAzKSwgYSwgYik7DQogICAgICAg
ICAgICByZXR1cm4gdGhpcw0KICAgICAgICB9LA0KICAgICAgICBmYWRlVG86
IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICByZXR1cm4gdGhp
cy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLCA9DQowKS5zaG93
KCkuZW5kKCkuYW5pbWF0ZSh7DQogICAgICAgICAgICAgICAgb3BhY2l0eTog
Yg0KICAgICAgICAgICAgfSwgYSwgZCkNCiAgICAgICAgfSwNCiAgICAgICAg
YW5pbWF0ZTogZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAgICAgICAg
IHZhciBlID0zRCBjLnNwZWVkKGIsIGQsIGYpOw0KICAgICAgICAgICAgaWYg
KGMuaXNFbXB0eU9iamVjdChhKSkgcmV0dXJuIHRoaXMuZWFjaChlLmNvbXBs
ZXRlKTsNCiAgICAgICAgICAgIHJldHVybiB0aGlzW2UucXVldWUgPTNEPTNE
PTNEIGZhbHNlID8gImVhY2giIDogPQ0KInF1ZXVlIl0oZnVuY3Rpb24gKCkg
ew0KICAgICAgICAgICAgICAgIHZhciBqID0zRCBjLmV4dGVuZCh7fSwgZSks
DQogICAgICAgICAgICAgICAgICAgIGksIG8gPTNEIHRoaXMubm9kZVR5cGUg
PTNEPTNEPTNEIDEgJiYgPQ0KYyh0aGlzKS5pcygiOmhpZGRlbiIpLA0KICAg
ICAgICAgICAgICAgICAgICBrID0zRCB0aGlzOw0KICAgICAgICAgICAgICAg
IGZvciAoaSBpbiBhKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBuID0z
RCBpLnJlcGxhY2UoaWEsIGphKTsNCiAgICAgICAgICAgICAgICAgICAgaWYg
KGkgIT0zRD0zRCBuKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhW25d
ID0zRCBhW2ldOw0KICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGFb
aV07DQogICAgICAgICAgICAgICAgICAgICAgICBpID0zRCBuDQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGFbaV0g
PTNEPTNEPTNEICJoaWRlIiAmJiBvIHx8IGFbaV0gPTNEPTNEPTNEID0NCiJz
aG93IiAmJiAhbykgcmV0dXJuIGouY29tcGxldGUuY2FsbCh0aGlzKTsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKChpID0zRD0zRD0zRCAiaGVpZ2h0IiB8
fCBpID0zRD0zRD0zRCAid2lkdGgiKSAmJiA9DQp0aGlzLnN0eWxlKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICBqLmRpc3BsYXkgPTNEIGMuY3NzKHRo
aXMsICJkaXNwbGF5Iik7DQogICAgICAgICAgICAgICAgICAgICAgICBqLm92
ZXJmbG93ID0zRCB0aGlzLnN0eWxlLm92ZXJmbG93DQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGMuaXNBcnJheShh
W2ldKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgKGouc3BlY2lhbEVh
c2luZyA9M0QNCiAgICAgICAgICAgICAgICAgICAgICAgIGouc3BlY2lhbEVh
c2luZyB8fCB7fSlbaV0gPTNEIGFbaV1bMV07DQogICAgICAgICAgICAgICAg
ICAgICAgICBhW2ldID0zRCBhW2ldWzBdDQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKGou
b3ZlcmZsb3cgIT0zRCBudWxsKSB0aGlzLnN0eWxlLm92ZXJmbG93ID0zRCA9
DQoiaGlkZGVuIjsNCiAgICAgICAgICAgICAgICBqLmN1ckFuaW0gPTNEIGMu
ZXh0ZW5kKHt9LCBhKTsNCiAgICAgICAgICAgICAgICBjLmVhY2goYSwgZnVu
Y3Rpb24gKHIsIHUpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHogPTNE
IG5ldyBjLmZ4KGssIGosIHIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAo
QWIudGVzdCh1KSkgelt1ID0zRD0zRD0zRCAidG9nZ2xlIiA/IG8gPyAic2hv
dyIgPQ0KOiAiaGlkZSIgOiB1XShhKTsNCiAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgQyA9M0QgQmIu
ZXhlYyh1KSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0zRCB6
LmN1cih0cnVlKSB8fCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KEMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0zRCBwYXJz
ZUZsb2F0KENbMl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBFID0zRCBDWzNdIHx8ICJweCI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKEUgIT0zRD0zRCAicHgiKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGsuc3R5bGVbcl0gPTNEICh1IHx8IDEpICsgRTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9M0QgKHUgfHwg
MSkgLyB6LmN1cih0cnVlKSAqIEI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGsuc3R5bGVbcl0gPTNEIEIgKyBFDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChDWzFdKSB1ID0zRCAoQ1sxXSA9M0Q9M0Q9M0QgIi09M0QiID8gLTEg
PQ0KOiAxKSAqIHUgKyBCOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHouY3VzdG9tKEIsIHUsIEUpDQogICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2Ugei5jdXN0b20oQiwgdSwgIiIpDQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAg
c3RvcDogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIHZhciBkID0z
RCBjLnRpbWVyczsNCiAgICAgICAgICAgIGEgJiYgdGhpcy5xdWV1ZShbXSk7
DQogICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAg
ICAgICAgICAgIGZvciAodmFyIGYgPTNEIGQubGVuZ3RoIC0gMTsgZiA+PTNE
IDA7IGYtLSkgaWYgPQ0KKGRbZl0uZWxlbSA9M0Q9M0Q9M0QgdGhpcykgew0K
ICAgICAgICAgICAgICAgICAgICBiICYmIGRbZl0odHJ1ZSk7DQogICAgICAg
ICAgICAgICAgICAgIGQuc3BsaWNlKGYsIDEpDQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBiIHx8IHRoaXMuZGVx
dWV1ZSgpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAgICAgfQ0K
ICAgIH0pOw0KICAgIGMuZWFjaCh7DQogICAgICAgIHNsaWRlRG93bjogSygi
c2hvdyIsIDEpLA0KICAgICAgICBzbGlkZVVwOiBLKCJoaWRlIiwgMSksDQog
ICAgICAgIHNsaWRlVG9nZ2xlOiBLKCJ0b2dnbGUiLCAxKSwNCiAgICAgICAg
ZmFkZUluOiB7DQogICAgICAgICAgICBvcGFjaXR5OiAic2hvdyINCiAgICAg
ICAgfSwNCiAgICAgICAgZmFkZU91dDogew0KICAgICAgICAgICAgb3BhY2l0
eTogImhpZGUiDQogICAgICAgIH0NCiAgICB9LCBmdW5jdGlvbiAoYSwgYikg
ew0KICAgICAgICBjLmZuW2FdID0zRCBmdW5jdGlvbiAoZCwgZikgew0KICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZShiLCBkLCBmKQ0KICAgICAg
ICB9DQogICAgfSk7DQogICAgYy5leHRlbmQoew0KICAgICAgICBzcGVlZDog
ZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgIHZhciBmID0zRCBh
ICYmIHR5cGVvZiBhID0zRD0zRD0zRCAib2JqZWN0IiA/IGEgOiB7DQogICAg
ICAgICAgICAgICAgY29tcGxldGU6IGQgfHwgIWQgJiYgYiB8fCBjLmlzRnVu
Y3Rpb24oYSkgJiYgYSwNCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogYSwN
CiAgICAgICAgICAgICAgICBlYXNpbmc6IGQgJiYgYiB8fCBiICYmICFjLmlz
RnVuY3Rpb24oYikgJiYgYg0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAg
IGYuZHVyYXRpb24gPTNEIGMuZngub2ZmID8gMCA6IHR5cGVvZiBmLmR1cmF0
aW9uID0zRD0zRD0zRCA9DQoibnVtYmVyIiA/IGYuZHVyYXRpb24gOiBjLmZ4
LnNwZWVkc1tmLmR1cmF0aW9uXSB8fCBjLmZ4LnNwZWVkcy5fZGVmYXVsdDsN
CiAgICAgICAgICAgIGYub2xkID0zRCBmLmNvbXBsZXRlOw0KICAgICAgICAg
ICAgZi5jb21wbGV0ZSA9M0QgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAg
ICAgIGYucXVldWUgIT0zRD0zRCBmYWxzZSAmJiBjKHRoaXMpLmRlcXVldWUo
KTsNCiAgICAgICAgICAgICAgICBjLmlzRnVuY3Rpb24oZi5vbGQpICYmIGYu
b2xkLmNhbGwodGhpcykNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICBy
ZXR1cm4gZg0KICAgICAgICB9LA0KICAgICAgICBlYXNpbmc6IHsNCiAgICAg
ICAgICAgIGxpbmVhcjogZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gZCArIGYgKiBhDQogICAgICAgICAgICB9LA0K
ICAgICAgICAgICAgc3dpbmc6IGZ1bmN0aW9uIChhLCBiLCBkLCBmKSB7DQog
ICAgICAgICAgICAgICAgcmV0dXJuICgtTWF0aC5jb3MoYSAqIE1hdGguUEkp
IC8gMiArIDAuNSkgKiBmICsgZA0KICAgICAgICAgICAgfQ0KICAgICAgICB9
LA0KICAgICAgICB0aW1lcnM6IFtdLA0KICAgICAgICBmeDogZnVuY3Rpb24g
KGEsIGIsIGQpIHsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9M0QgYjsN
CiAgICAgICAgICAgIHRoaXMuZWxlbSA9M0QgYTsNCiAgICAgICAgICAgIHRo
aXMucHJvcCA9M0QgZDsNCiAgICAgICAgICAgIGlmICghYi5vcmlnKSBiLm9y
aWcgPTNEIHt9DQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmZ4LnByb3Rv
dHlwZSA9M0Qgew0KICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgIHRoaXMub3B0aW9ucy5zdGVwICYmIHRoaXMub3B0aW9ucy5z
dGVwLmNhbGwodGhpcy5lbGVtLCA9DQp0aGlzLm5vdywgdGhpcyk7DQogICAg
ICAgICAgICAoYy5meC5zdGVwW3RoaXMucHJvcF0gfHwgYy5meC5zdGVwLl9k
ZWZhdWx0KSh0aGlzKTsNCiAgICAgICAgICAgIGlmICgodGhpcy5wcm9wID0z
RD0zRD0zRCAiaGVpZ2h0IiB8fCB0aGlzLnByb3AgPTNEPTNEPTNEID0NCiJ3
aWR0aCIpICYmIHRoaXMuZWxlbS5zdHlsZSkgdGhpcy5lbGVtLnN0eWxlLmRp
c3BsYXkgPTNEICJibG9jayINCiAgICAgICAgfSwNCiAgICAgICAgY3VyOiBm
dW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgaWYgKHRoaXMuZWxlbVt0aGlz
LnByb3BdICE9M0QgbnVsbCAmJiAoIXRoaXMuZWxlbS5zdHlsZSB8fCA9DQp0
aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXSA9M0Q9M0QgbnVsbCkpIHJldHVy
biB0aGlzLmVsZW1bdGhpcy5wcm9wXTsNCiAgICAgICAgICAgIHJldHVybiAo
YSA9M0QgcGFyc2VGbG9hdChjLmNzcyh0aGlzLmVsZW0sIHRoaXMucHJvcCwg
YSkpKSAmJiA9DQphID4gLTEwMDAwID8gYSA6IHBhcnNlRmxvYXQoYy5jdXJD
U1ModGhpcy5lbGVtLCB0aGlzLnByb3ApKSB8fCAwDQogICAgICAgIH0sDQog
ICAgICAgIGN1c3RvbTogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAg
ICAgIGZ1bmN0aW9uIGYoaikgew0KICAgICAgICAgICAgICAgIHJldHVybiBl
LnN0ZXAoaikNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHRoaXMuc3Rh
cnRUaW1lID0zRCBKKCk7DQogICAgICAgICAgICB0aGlzLnN0YXJ0ID0zRCBh
Ow0KICAgICAgICAgICAgdGhpcy5lbmQgPTNEIGI7DQogICAgICAgICAgICB0
aGlzLnVuaXQgPTNEIGQgfHwgdGhpcy51bml0IHx8ICJweCI7DQogICAgICAg
ICAgICB0aGlzLm5vdyA9M0QgdGhpcy5zdGFydDsNCiAgICAgICAgICAgIHRo
aXMucG9zID0zRCB0aGlzLnN0YXRlID0zRCAwOw0KICAgICAgICAgICAgdmFy
IGUgPTNEIHRoaXM7DQogICAgICAgICAgICBmLmVsZW0gPTNEIHRoaXMuZWxl
bTsNCiAgICAgICAgICAgIGlmIChmKCkgJiYgYy50aW1lcnMucHVzaChmKSAm
JiAhVykgVyA9M0QgPQ0Kc2V0SW50ZXJ2YWwoYy5meC50aWNrLCAxMykNCiAg
ICAgICAgfSwNCiAgICAgICAgc2hvdzogZnVuY3Rpb24gKCkgew0KICAgICAg
ICAgICAgdGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXSA9M0QgYy5zdHls
ZSh0aGlzLmVsZW0sID0NCnRoaXMucHJvcCk7DQogICAgICAgICAgICB0aGlz
Lm9wdGlvbnMuc2hvdyA9M0QgdHJ1ZTsNCiAgICAgICAgICAgIHRoaXMuY3Vz
dG9tKHRoaXMucHJvcCA9M0Q9M0Q9M0QgIndpZHRoIiB8fCB0aGlzLnByb3Ag
PQ0KPTNEPTNEPTNEICJoZWlnaHQiID8gMSA6IDAsIHRoaXMuY3VyKCkpOw0K
ICAgICAgICAgICAgYyh0aGlzLmVsZW0pLnNob3coKQ0KICAgICAgICB9LA0K
ICAgICAgICBoaWRlOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlz
Lm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdID0zRCBjLnN0eWxlKHRoaXMuZWxl
bSwgPQ0KdGhpcy5wcm9wKTsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5o
aWRlID0zRCB0cnVlOw0KICAgICAgICAgICAgdGhpcy5jdXN0b20odGhpcy5j
dXIoKSwgMCkNCiAgICAgICAgfSwNCiAgICAgICAgc3RlcDogZnVuY3Rpb24g
KGEpIHsNCiAgICAgICAgICAgIHZhciBiID0zRCBKKCksDQogICAgICAgICAg
ICAgICAgZCA9M0QgdHJ1ZTsNCiAgICAgICAgICAgIGlmIChhIHx8IGIgPj0z
RCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKyB0aGlzLnN0YXJ0VGltZSkgew0K
ICAgICAgICAgICAgICAgIHRoaXMubm93ID0zRA0KICAgICAgICAgICAgICAg
IHRoaXMuZW5kOw0KICAgICAgICAgICAgICAgIHRoaXMucG9zID0zRCB0aGlz
LnN0YXRlID0zRCAxOw0KICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7
DQogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5w
cm9wXSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBmIGlu
IHRoaXMub3B0aW9ucy5jdXJBbmltKSBpZiA9DQoodGhpcy5vcHRpb25zLmN1
ckFuaW1bZl0gIT0zRD0zRCB0cnVlKSBkID0zRCBmYWxzZTsNCiAgICAgICAg
ICAgICAgICBpZiAoZCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAodGhp
cy5vcHRpb25zLmRpc3BsYXkgIT0zRCBudWxsKSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3cgPTNEID0NCnRo
aXMub3B0aW9ucy5vdmVyZmxvdzsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGEgPTNEIGMuZGF0YSh0aGlzLmVsZW0sICJvbGRkaXNwbGF5Iik7DQogICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW0uc3R5bGUuZGlzcGxheSA9
M0QgYSA/IGEgOiA9DQp0aGlzLm9wdGlvbnMuZGlzcGxheTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjLmNzcyh0aGlzLmVsZW0sICJkaXNwbGF5
IikgPTNEPTNEPTNEID0NCiJub25lIikgdGhpcy5lbGVtLnN0eWxlLmRpc3Bs
YXkgPTNEICJibG9jayINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuaGlkZSAmJiBjKHRoaXMuZWxl
bSkuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRp
b25zLmhpZGUgfHwgdGhpcy5vcHRpb25zLnNob3cpIGZvciAodmFyID0NCmUg
aW4gdGhpcy5vcHRpb25zLmN1ckFuaW0pIGMuc3R5bGUodGhpcy5lbGVtLCBl
LCB0aGlzLm9wdGlvbnMub3JpZ1tlXSk7DQogICAgICAgICAgICAgICAgICAg
IHRoaXMub3B0aW9ucy5jb21wbGV0ZS5jYWxsKHRoaXMuZWxlbSkNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlDQog
ICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGUgPTNEIGIg
LSB0aGlzLnN0YXJ0VGltZTsNCiAgICAgICAgICAgICAgICB0aGlzLnN0YXRl
ID0zRCBlIC8gdGhpcy5vcHRpb25zLmR1cmF0aW9uOw0KICAgICAgICAgICAg
ICAgIGEgPTNEIHRoaXMub3B0aW9ucy5lYXNpbmcgfHwgKGMuZWFzaW5nLnN3
aW5nID8gInN3aW5nIiA6ID0NCiJsaW5lYXIiKTsNCiAgICAgICAgICAgICAg
ICB0aGlzLnBvcyA9M0QgYy5lYXNpbmdbdGhpcy5vcHRpb25zLnNwZWNpYWxF
YXNpbmcgJiYgPQ0KdGhpcy5vcHRpb25zLnNwZWNpYWxFYXNpbmdbdGhpcy5w
cm9wXSB8fCBhXSh0aGlzLnN0YXRlLCBlLCAwLCAxLCA9DQp0aGlzLm9wdGlv
bnMuZHVyYXRpb24pOw0KICAgICAgICAgICAgICAgIHRoaXMubm93ID0zRCB0
aGlzLnN0YXJ0ICsgKHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiA9DQp0aGlz
LnBvczsNCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpDQogICAgICAg
ICAgICB9DQogICAgICAgICAgICByZXR1cm4gdHJ1ZQ0KICAgICAgICB9DQog
ICAgfTsNCiAgICBjLmV4dGVuZChjLmZ4LCB7DQogICAgICAgIHRpY2s6IGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGZvciAodmFyIGEgPTNEIGMudGlt
ZXJzLCBiID0zRCAwOyBiIDwgYS5sZW5ndGg7IGIrKykgYVtiXSgpID0NCnx8
IGEuc3BsaWNlKGItLSwgMSk7DQogICAgICAgICAgICBhLmxlbmd0aCB8fCBj
LmZ4LnN0b3AoKQ0KICAgICAgICB9LA0KICAgICAgICBzdG9wOiBmdW5jdGlv
biAoKSB7DQogICAgICAgICAgICBjbGVhckludGVydmFsKFcpOw0KICAgICAg
ICAgICAgVyA9M0QgbnVsbA0KICAgICAgICB9LA0KICAgICAgICBzcGVlZHM6
IHsNCiAgICAgICAgICAgIHNsb3c6IDYwMCwNCiAgICAgICAgICAgIGZhc3Q6
IDIwMCwNCiAgICAgICAgICAgIF9kZWZhdWx0OiA0MDANCiAgICAgICAgfSwN
CiAgICAgICAgc3RlcDogew0KICAgICAgICAgICAgb3BhY2l0eTogZnVuY3Rp
b24gKGEpIHsNCiAgICAgICAgICAgICAgICBjLnN0eWxlKGEuZWxlbSwgIm9w
YWNpdHkiLCBhLm5vdykNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBf
ZGVmYXVsdDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgICAgICBpZiAo
YS5lbGVtLnN0eWxlICYmIGEuZWxlbS5zdHlsZVthLnByb3BdICE9M0QgbnVs
bCkgPQ0KYS5lbGVtLnN0eWxlW2EucHJvcF0gPTNEIChhLnByb3AgPTNEPTNE
PTNEICJ3aWR0aCIgfHwgYS5wcm9wID0zRD0zRD0zRCA9DQoiaGVpZ2h0IiA/
IE1hdGgubWF4KDAsIGEubm93KSA6IGEubm93KSArIGEudW5pdDsNCiAgICAg
ICAgICAgICAgICBlbHNlIGEuZWxlbVthLnByb3BdID0zRCBhLm5vdw0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSk7DQogICAgaWYgKGMuZXhw
ciAmJiBjLmV4cHIuZmlsdGVycykgYy5leHByLmZpbHRlcnMuYW5pbWF0ZWQg
PTNEIGZ1bmN0aW9uID0NCihhKSB7DQogICAgICAgIHJldHVybiBjLmdyZXAo
Yy50aW1lcnMsIGZ1bmN0aW9uIChiKSB7DQogICAgICAgICAgICByZXR1cm4g
YSA9M0Q9M0Q9M0QgYi5lbGVtDQogICAgICAgIH0pLmxlbmd0aA0KICAgIH07
DQogICAgYy5mbi5vZmZzZXQgPTNEICJnZXRCb3VuZGluZ0NsaWVudFJlY3Qi
IGluIHMuZG9jdW1lbnRFbGVtZW50ID8NCiAgICBmdW5jdGlvbiAoYSkgew0K
ICAgICAgICB2YXIgYiA9M0QgdGhpc1swXTsNCiAgICAgICAgaWYgKGEpIHJl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgIGMu
b2Zmc2V0LnNldE9mZnNldCh0aGlzLCBhLCBlKQ0KICAgICAgICB9KTsNCiAg
ICAgICAgaWYgKCFiIHx8ICFiLm93bmVyRG9jdW1lbnQpIHJldHVybiBudWxs
Ow0KICAgICAgICBpZiAoYiA9M0Q9M0Q9M0QgYi5vd25lckRvY3VtZW50LmJv
ZHkpIHJldHVybiA9DQpjLm9mZnNldC5ib2R5T2Zmc2V0KGIpOw0KICAgICAg
ICB2YXIgZCA9M0QgYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwNCiAgICAg
ICAgICAgIGYgPTNEIGIub3duZXJEb2N1bWVudDsNCiAgICAgICAgYiA9M0Qg
Zi5ib2R5Ow0KICAgICAgICBmID0zRCBmLmRvY3VtZW50RWxlbWVudDsNCiAg
ICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgIHRvcDogZC50b3AgKyAoc2Vs
Zi5wYWdlWU9mZnNldCB8fCBjLnN1cHBvcnQuYm94TW9kZWwgJiYgPQ0KZi5z
Y3JvbGxUb3AgfHwgYi5zY3JvbGxUb3ApIC0gKGYuY2xpZW50VG9wIHx8IGIu
Y2xpZW50VG9wIHx8IDApLA0KICAgICAgICAgICAgbGVmdDogZC5sZWZ0ICsg
KHNlbGYucGFnZVhPZmZzZXQgfHwgYy5zdXBwb3J0LmJveE1vZGVsICYmID0N
CmYuc2Nyb2xsTGVmdCB8fCBiLnNjcm9sbExlZnQpIC0gKGYuY2xpZW50TGVm
dCB8fCBiLmNsaWVudExlZnQgfHwgMCkNCiAgICAgICAgfQ0KICAgIH0gOiBm
dW5jdGlvbiAoYSkgew0KICAgICAgICB2YXIgYiA9M0QNCiAgICAgICAgdGhp
c1swXTsNCiAgICAgICAgaWYgKGEpIHJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24gKHIpIHsNCiAgICAgICAgICAgIGMub2Zmc2V0LnNldE9mZnNldCh0aGlz
LCBhLCByKQ0KICAgICAgICB9KTsNCiAgICAgICAgaWYgKCFiIHx8ICFiLm93
bmVyRG9jdW1lbnQpIHJldHVybiBudWxsOw0KICAgICAgICBpZiAoYiA9M0Q9
M0Q9M0QgYi5vd25lckRvY3VtZW50LmJvZHkpIHJldHVybiA9DQpjLm9mZnNl
dC5ib2R5T2Zmc2V0KGIpOw0KICAgICAgICBjLm9mZnNldC5pbml0aWFsaXpl
KCk7DQogICAgICAgIHZhciBkID0zRCBiLm9mZnNldFBhcmVudCwNCiAgICAg
ICAgICAgIGYgPTNEIGIsDQogICAgICAgICAgICBlID0zRCBiLm93bmVyRG9j
dW1lbnQsDQogICAgICAgICAgICBqLCBpID0zRCBlLmRvY3VtZW50RWxlbWVu
dCwNCiAgICAgICAgICAgIG8gPTNEIGUuYm9keTsNCiAgICAgICAgZiA9M0Qg
KGUgPTNEIGUuZGVmYXVsdFZpZXcpID8gZS5nZXRDb21wdXRlZFN0eWxlKGIs
IG51bGwpIDogPQ0KYi5jdXJyZW50U3R5bGU7DQogICAgICAgIGZvciAodmFy
IGsgPTNEIGIub2Zmc2V0VG9wLCBuID0zRCBiLm9mZnNldExlZnQ7DQogICAg
ICAgIChiID0zRCBiLnBhcmVudE5vZGUpICYmIGIgIT0zRD0zRCBvICYmIGIg
IT0zRD0zRCBpOykgew0KICAgICAgICAgICAgaWYgKGMub2Zmc2V0LnN1cHBv
cnRzRml4ZWRQb3NpdGlvbiAmJiBmLnBvc2l0aW9uID0zRD0zRD0zRCA9DQoi
Zml4ZWQiKSBicmVhazsNCiAgICAgICAgICAgIGogPTNEIGUgPyBlLmdldENv
bXB1dGVkU3R5bGUoYiwgbnVsbCkgOiBiLmN1cnJlbnRTdHlsZTsNCiAgICAg
ICAgICAgIGsgLT0zRCBiLnNjcm9sbFRvcDsNCiAgICAgICAgICAgIG4gLT0z
RCBiLnNjcm9sbExlZnQ7DQogICAgICAgICAgICBpZiAoYiA9M0Q9M0Q9M0Qg
ZCkgew0KICAgICAgICAgICAgICAgIGsgKz0zRCBiLm9mZnNldFRvcDsNCiAg
ICAgICAgICAgICAgICBuICs9M0QgYi5vZmZzZXRMZWZ0Ow0KICAgICAgICAg
ICAgICAgIGlmIChjLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyICYmID0NCiEo
Yy5vZmZzZXQuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHMgJiYgPQ0K
L150KGFibGV8ZHxoKSQvaS50ZXN0KGIubm9kZU5hbWUpKSkgew0KICAgICAg
ICAgICAgICAgICAgICBrICs9M0QgcGFyc2VGbG9hdChqLmJvcmRlclRvcFdp
ZHRoKSB8fCAwOw0KICAgICAgICAgICAgICAgICAgICBuICs9M0QgcGFyc2VG
bG9hdChqLmJvcmRlckxlZnRXaWR0aCkgfHwgMA0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICBmID0zRCBkOw0KICAgICAgICAgICAgICAg
IGQgPTNEIGIub2Zmc2V0UGFyZW50DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBpZiAoYy5vZmZzZXQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dO
b3RWaXNpYmxlICYmID0NCmoub3ZlcmZsb3cgIT0zRD0zRCAidmlzaWJsZSIp
IHsNCiAgICAgICAgICAgICAgICBrICs9M0QgcGFyc2VGbG9hdChqLmJvcmRl
clRvcFdpZHRoKSB8fCAwOw0KICAgICAgICAgICAgICAgIG4gKz0zRCBwYXJz
ZUZsb2F0KGouYm9yZGVyTGVmdFdpZHRoKSB8fCAwDQogICAgICAgICAgICB9
DQogICAgICAgICAgICBmID0zRCBqDQogICAgICAgIH0NCiAgICAgICAgaWYg
KGYucG9zaXRpb24gPTNEPTNEPTNEICJyZWxhdGl2ZSIgfHwgZi5wb3NpdGlv
biA9M0Q9M0Q9M0QgPQ0KInN0YXRpYyIpIHsNCiAgICAgICAgICAgIGsgKz0z
RCBvLm9mZnNldFRvcDsNCiAgICAgICAgICAgIG4gKz0zRCBvLm9mZnNldExl
ZnQNCiAgICAgICAgfQ0KICAgICAgICBpZiAoYy5vZmZzZXQuc3VwcG9ydHNG
aXhlZFBvc2l0aW9uICYmIGYucG9zaXRpb24gPTNEPTNEPTNEID0NCiJmaXhl
ZCIpIHsNCiAgICAgICAgICAgIGsgKz0zRCBNYXRoLm1heChpLnNjcm9sbFRv
cCwgby5zY3JvbGxUb3ApOw0KICAgICAgICAgICAgbiArPTNEIE1hdGgubWF4
KGkuc2Nyb2xsTGVmdCwgby5zY3JvbGxMZWZ0KQ0KICAgICAgICB9DQogICAg
ICAgIHJldHVybiB7DQogICAgICAgICAgICB0b3A6IGssDQogICAgICAgICAg
ICBsZWZ0OiBuDQogICAgICAgIH0NCiAgICB9Ow0KICAgIGMub2Zmc2V0ID0z
RCB7DQogICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgICAgIHZhciBhID0zRCBzLmJvZHksDQogICAgICAgICAgICAgICAgYiA9
M0Qgcy5jcmVhdGVFbGVtZW50KCJkaXYiKSwNCiAgICAgICAgICAgICAgICBk
LCBmLCBlLCBqID0zRCBwYXJzZUZsb2F0KGMuY3VyQ1NTKGEsICJtYXJnaW5U
b3AiLCA9DQp0cnVlKSkgfHwgMDsNCiAgICAgICAgICAgIGMuZXh0ZW5kKGIu
c3R5bGUsIHsNCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRl
IiwNCiAgICAgICAgICAgICAgICB0b3A6IDAsDQogICAgICAgICAgICAgICAg
bGVmdDogMCwNCiAgICAgICAgICAgICAgICBtYXJnaW46IDAsDQogICAgICAg
ICAgICAgICAgYm9yZGVyOiAwLA0KICAgICAgICAgICAgICAgIHdpZHRoOiAi
MXB4IiwNCiAgICAgICAgICAgICAgICBoZWlnaHQ6ICIxcHgiLA0KICAgICAg
ICAgICAgICAgIHZpc2liaWxpdHk6ICJoaWRkZW4iDQogICAgICAgICAgICB9
KTsNCiAgICAgICAgICAgIGIuaW5uZXJIVE1MID0zRCAiPGRpdiA9DQpzdHls
ZT0zRCdwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7
Ym9yZGVyOjVweCBzb2xpZCA9DQojMDAwO3BhZGRpbmc6MDt3aWR0aDoxcHg7
aGVpZ2h0OjFweDsnPjxkaXY+PC9kaXY+PC9kaXY+PHRhYmxlID0NCnN0eWxl
PTNEJ3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDti
b3JkZXI6NXB4IHNvbGlkID0NCiMwMDA7cGFkZGluZzowO3dpZHRoOjFweDto
ZWlnaHQ6MXB4OycgY2VsbHBhZGRpbmc9M0QnMCcgPQ0KY2VsbHNwYWNpbmc9
M0QnMCc+PHRyPjx0ZD48L3RkPjwvdHI+PC90YWJsZT4iOw0KICAgICAgICAg
ICAgYS5pbnNlcnRCZWZvcmUoYiwgYS5maXJzdENoaWxkKTsNCiAgICAgICAg
ICAgIGQgPTNEIGIuZmlyc3RDaGlsZDsNCiAgICAgICAgICAgIGYgPTNEIGQu
Zmlyc3RDaGlsZDsNCiAgICAgICAgICAgIGUgPTNEIGQubmV4dFNpYmxpbmcu
Zmlyc3RDaGlsZC5maXJzdENoaWxkOw0KICAgICAgICAgICAgdGhpcy5kb2Vz
Tm90QWRkQm9yZGVyID0zRCBmLm9mZnNldFRvcCAhPTNEPTNEIDU7DQogICAg
ICAgICAgICB0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzID0z
RCBlLm9mZnNldFRvcCA9M0Q9M0Q9M0QgPQ0KNTsNCiAgICAgICAgICAgIGYu
c3R5bGUucG9zaXRpb24gPTNEICJmaXhlZCI7DQogICAgICAgICAgICBmLnN0
eWxlLnRvcCA9M0QgIjIwcHgiOw0KICAgICAgICAgICAgdGhpcy5zdXBwb3J0
c0ZpeGVkUG9zaXRpb24gPTNEIGYub2Zmc2V0VG9wID0zRD0zRD0zRCAyMCB8
fCA9DQpmLm9mZnNldFRvcCA9M0Q9M0Q9M0QgMTU7DQogICAgICAgICAgICBm
LnN0eWxlLnBvc2l0aW9uID0zRCBmLnN0eWxlLnRvcCA9M0QgIiI7DQogICAg
ICAgICAgICBkLnN0eWxlLm92ZXJmbG93ID0zRCAiaGlkZGVuIjsNCiAgICAg
ICAgICAgIGQuc3R5bGUucG9zaXRpb24gPTNEICJyZWxhdGl2ZSI7DQogICAg
ICAgICAgICB0aGlzLnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90Vmlz
aWJsZSA9M0QgZi5vZmZzZXRUb3AgPQ0KPTNEPTNEPTNEIC01Ow0KICAgICAg
ICAgICAgdGhpcy5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCA9
M0QgYS5vZmZzZXRUb3AgPQ0KIT0zRD0zRCBqOw0KICAgICAgICAgICAgYS5y
ZW1vdmVDaGlsZChiKTsNCiAgICAgICAgICAgIGMub2Zmc2V0LmluaXRpYWxp
emUgPTNEIGMubm9vcA0KICAgICAgICB9LA0KICAgICAgICBib2R5T2Zmc2V0
OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgdmFyIGIgPTNEIGEub2Zm
c2V0VG9wLA0KICAgICAgICAgICAgICAgIGQgPTNEIGEub2Zmc2V0TGVmdDsN
CiAgICAgICAgICAgIGMub2Zmc2V0LmluaXRpYWxpemUoKTsNCiAgICAgICAg
ICAgIGlmIChjLm9mZnNldC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9m
ZnNldCkgew0KICAgICAgICAgICAgICAgIGIgKz0zRCBwYXJzZUZsb2F0KGMu
Y3VyQ1NTKGEsICJtYXJnaW5Ub3AiLCB0cnVlKSkgfHwgMDsNCiAgICAgICAg
ICAgICAgICBkICs9M0QgcGFyc2VGbG9hdChjLmN1ckNTUyhhLCAibWFyZ2lu
TGVmdCIsIHRydWUpKSB8fCAwDQogICAgICAgICAgICB9DQogICAgICAgICAg
ICByZXR1cm4gew0KICAgICAgICAgICAgICAgIHRvcDogYiwNCiAgICAgICAg
ICAgICAgICBsZWZ0OiBkDQogICAgICAgICAgICB9DQogICAgICAgIH0sDQog
ICAgICAgIHNldE9mZnNldDogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAg
ICAgICAgIGlmICgvc3RhdGljLy50ZXN0KGMuY3VyQ1NTKGEsICJwb3NpdGlv
biIpKSkgYS5zdHlsZS5wb3NpdGlvbiA9DQo9M0QgInJlbGF0aXZlIjsNCiAg
ICAgICAgICAgIHZhciBmID0zRCBjKGEpLA0KICAgICAgICAgICAgICAgIGUg
PTNEIGYub2Zmc2V0KCksDQogICAgICAgICAgICAgICAgaiA9M0QgcGFyc2VJ
bnQoYy5jdXJDU1MoYSwgInRvcCIsIHRydWUpLCAxMCkgfHwgMCwNCiAgICAg
ICAgICAgICAgICBpID0zRCBwYXJzZUludChjLmN1ckNTUyhhLCAibGVmdCIs
IHRydWUpLCAxMCkgfHwgMDsNCiAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rp
b24oYikpIGIgPTNEIGIuY2FsbChhLCBkLCBlKTsNCiAgICAgICAgICAgIGQg
PTNEIHsNCiAgICAgICAgICAgICAgICB0b3A6IGIudG9wIC0gZS50b3AgKyBq
LA0KICAgICAgICAgICAgICAgIGxlZnQ6IGIubGVmdCAtIGUubGVmdCArIGkN
CiAgICAgICAgICAgIH07DQogICAgICAgICAgICAidXNpbmciIGluIGIgPyBi
LnVzaW5nLmNhbGwoYSwgZCkgOiBmLmNzcyhkKQ0KICAgICAgICB9DQogICAg
fTsNCiAgICBjLmZuLmV4dGVuZCh7DQogICAgICAgIHBvc2l0aW9uOiBmdW5j
dGlvbiAoKSB7DQogICAgICAgICAgICBpZiAoIXRoaXNbMF0pIHJldHVybiBu
dWxsOw0KICAgICAgICAgICAgdmFyIGEgPTNEIHRoaXNbMF0sDQogICAgICAg
ICAgICAgICAgYiA9M0QgdGhpcy5vZmZzZXRQYXJlbnQoKSwNCiAgICAgICAg
ICAgICAgICBkID0zRCB0aGlzLm9mZnNldCgpLA0KICAgICAgICAgICAgICAg
IGYgPTNEIC9eYm9keXxodG1sJC9pLnRlc3QoYlswXS5ub2RlTmFtZSkgPyB7
DQogICAgICAgICAgICAgICAgdG9wOiAwLA0KICAgICAgICAgICAgICAgIGxl
ZnQ6IDANCiAgICAgICAgICAgIH0gOiBiLm9mZnNldCgpOw0KICAgICAgICAg
ICAgZC50b3AgLT0zRCBwYXJzZUZsb2F0KGMuY3VyQ1NTKGEsICJtYXJnaW5U
b3AiLCB0cnVlKSkgfHwgMDsNCiAgICAgICAgICAgIGQubGVmdCAtPTNEIHBh
cnNlRmxvYXQoYy5jdXJDU1MoYSwgIm1hcmdpbkxlZnQiLCB0cnVlKSkgfHwg
PQ0KMDsNCiAgICAgICAgICAgIGYudG9wICs9M0QgcGFyc2VGbG9hdChjLmN1
ckNTUyhiWzBdLCAiYm9yZGVyVG9wV2lkdGgiLCA9DQp0cnVlKSkgfHwgMDsN
CiAgICAgICAgICAgIGYubGVmdCArPTNEIHBhcnNlRmxvYXQoYy5jdXJDU1Mo
YlswXSwgImJvcmRlckxlZnRXaWR0aCIsID0NCnRydWUpKSB8fCAwOw0KICAg
ICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgICAgICB0b3A6IGQudG9w
IC0gZi50b3AsDQogICAgICAgICAgICAgICAgbGVmdDogZC5sZWZ0IC0gZi5s
ZWZ0DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIG9mZnNl
dFBhcmVudDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRo
aXMubWFwKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZh
ciBhID0zRCB0aGlzLm9mZnNldFBhcmVudCB8fCBzLmJvZHk7IGEgJiYgPQ0K
IS9eYm9keXxodG1sJC9pLnRlc3QoYS5ub2RlTmFtZSkgJiYgYy5jc3MoYSwg
InBvc2l0aW9uIikgPTNEPTNEPTNEID0NCiJzdGF0aWMiOykgYSA9M0QgYS5v
ZmZzZXRQYXJlbnQ7DQogICAgICAgICAgICAgICAgcmV0dXJuIGENCiAgICAg
ICAgICAgIH0pDQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmVhY2goWyJM
ZWZ0IiwgIlRvcCJdLCBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICB2YXIg
ZCA9M0QgInNjcm9sbCIgKyBiOw0KICAgICAgICBjLmZuW2RdID0zRCBmdW5j
dGlvbiAoZikgew0KICAgICAgICAgICAgdmFyIGUgPTNEIHRoaXNbMF0sDQog
ICAgICAgICAgICAgICAgajsNCiAgICAgICAgICAgIGlmICghZSkgcmV0dXJu
IG51bGw7DQogICAgICAgICAgICBpZiAoZiAhPTNEPTNEIHcpIHJldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGlmIChq
ID0zRCB3YSh0aGlzKSkgai5zY3JvbGxUbyghYSA/IGYgOiA9DQpjKGopLnNj
cm9sbExlZnQoKSwgYSA/IGYgOiBjKGopLnNjcm9sbFRvcCgpKTsNCiAgICAg
ICAgICAgICAgICBlbHNlIHRoaXNbZF0gPTNEIGYNCiAgICAgICAgICAgIH0p
Ow0KICAgICAgICAgICAgZWxzZSByZXR1cm4gKGogPTNEIHdhKGUpKSA/ICJw
YWdlWE9mZnNldCIgaW4gaiA/IGpbYSA/ID0NCiJwYWdlWU9mZnNldCIgOiAi
cGFnZVhPZmZzZXQiXSA6IGMuc3VwcG9ydC5ib3hNb2RlbCAmJiA9DQpqLmRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudFtkXSB8fCBqLmRvY3VtZW50LmJvZHlb
ZF0gOiBlW2RdDQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmVhY2goWyJI
ZWlnaHQiLCAiV2lkdGgiXSwgZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAg
dmFyIGQgPTNEIGIudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgYy5mblsiaW5u
ZXIiICsgYl0gPTNEIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHJldHVy
biB0aGlzWzBdID8gYy5jc3ModGhpc1swXSwgZCwgZmFsc2UsICJwYWRkaW5n
IikgOiBudWxsDQogICAgICAgIH07DQogICAgICAgIGMuZm5bIm91dGVyIiAr
IGJdID0zRCBmdW5jdGlvbiAoZikgew0KICAgICAgICAgICAgcmV0dXJuIHRo
aXNbMF0gPyBjLmNzcyh0aGlzWzBdLCBkLCBmYWxzZSwgZiA/ICJtYXJnaW4i
IDogPQ0KImJvcmRlciIpIDogbnVsbA0KICAgICAgICB9Ow0KICAgICAgICBj
LmZuW2RdID0zRCBmdW5jdGlvbiAoZikgew0KICAgICAgICAgICAgdmFyIGUg
PTNEIHRoaXNbMF07DQogICAgICAgICAgICBpZiAoIWUpIHJldHVybiBmID0z
RD0zRCBudWxsID8gbnVsbCA6IHRoaXM7DQogICAgICAgICAgICBpZiAoYy5p
c0Z1bmN0aW9uKGYpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIChqKSB7
DQogICAgICAgICAgICAgICAgdmFyIGkgPTNEIGModGhpcyk7DQogICAgICAg
ICAgICAgICAgaVtkXShmLmNhbGwodGhpcywgaiwgaVtkXSgpKSkNCiAgICAg
ICAgICAgIH0pOw0KICAgICAgICAgICAgcmV0dXJuICJzY3JvbGxUbyIgaW4g
ZSAmJiBlLmRvY3VtZW50ID8gZS5kb2N1bWVudC5jb21wYXRNb2RlID0NCj0z
RD0zRD0zRCAiQ1NTMUNvbXBhdCIgJiYgZS5kb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnRbImNsaWVudCIgKyBiXSB8fCA9DQplLmRvY3VtZW50LmJvZHlbImNs
aWVudCIgKyBiXSA6IGUubm9kZVR5cGUgPTNEPTNEPTNEIDkgPyA9DQpNYXRo
Lm1heChlLmRvY3VtZW50RWxlbWVudFsiY2xpZW50IiArIGJdLCBlLmJvZHlb
InNjcm9sbCIgKyBiXSwgPQ0KZS5kb2N1bWVudEVsZW1lbnRbInNjcm9sbCIg
KyBiXSwgZS5ib2R5WyJvZmZzZXQiICsgYl0sID0NCmUuZG9jdW1lbnRFbGVt
ZW50WyJvZmZzZXQiICsgYl0pIDogZiA9M0Q9M0Q9M0QgdyA/IGMuY3NzKGUs
IGQpIDogPQ0KdGhpcy5jc3MoZCwgdHlwZW9mIGYgPTNEPTNEPTNEICJzdHJp
bmciID8gZiA6IGYgKyAicHgiKQ0KICAgICAgICB9DQogICAgfSk7DQogICAg
QS5qUXVlcnkgPTNEIEEuJCA9M0QgYw0KfSkod2luZG93KTsNCg0KDQoNCi8q
IQ0KICogalF1ZXJ5IFVJIDEuOA0KICoNCiAqIENvcHlyaWdodCAoYykgMjAx
MCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkNCiAq
IER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0
KQ0KICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4NCiAq
DQogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJDQogKi8NCi8qDQogKiBq
UXVlcnkgVUkgMS44DQogKg0KICogQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhP
UlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQ0KICogRHVhbCBs
aWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpDQogKiBh
bmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLg0KICoNCiAqIGh0
dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkNCiAqLw0KalF1ZXJ5LnVpfHwoZnVu
Y3Rpb24oYSl7YS51aT0zRHt2ZXJzaW9uOiIxLjgiLHBsdWdpbjp7YWRkOmZ1
bmN0aW9uKGMsZCxmKT0NCnt2YXIgZT0zRGEudWlbY10ucHJvdG90eXBlO2Zv
cih2YXIgYiBpbiA9DQpmKXtlLnBsdWdpbnNbYl09M0RlLnBsdWdpbnNbYl18
fFtdO2UucGx1Z2luc1tiXS5wdXNoKFtkLGZbYl1dKX19LGNhbGw6ZnVuPQ0K
Y3Rpb24oYixkLGMpe3ZhciA9DQpmPTNEYi5wbHVnaW5zW2RdO2lmKCFmfHwh
Yi5lbGVtZW50WzBdLnBhcmVudE5vZGUpe3JldHVybn1mb3IodmFyID0NCmU9
M0QwO2U8Zi5sZW5ndGg7ZSsrKXtpZihiLm9wdGlvbnNbZltlXVswXV0pe2Zb
ZV1bMV0uYXBwbHkoYi5lbGVtZW50LGMpfX09DQp9fSxjb250YWluczpmdW5j
dGlvbihkLGMpe3JldHVybiA9DQpkb2N1bWVudC5jb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbj9kLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGMpJjE2OmQhPTNE
PTNEPQ0KYyYmZC5jb250YWlucyhjKX0saGFzU2Nyb2xsOmZ1bmN0aW9uKGUs
Yyl7aWYoYShlKS5jc3MoIm92ZXJmbG93Iik9M0Q9M0QiaD0NCmlkZGVuIil7
cmV0dXJuIGZhbHNlfXZhciA9DQpiPTNEKGMmJmM9M0Q9M0QibGVmdCIpPyJz
Y3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIixkPTNEZmFsc2U7aWYoZVtiXT4wKXty
ZXR1PQ0Kcm4gdHJ1ZX1lW2JdPTNEMTtkPTNEKGVbYl0+MCk7ZVtiXT0zRDA7
cmV0dXJuID0NCmR9LGlzT3ZlckF4aXM6ZnVuY3Rpb24oYyxiLGQpe3JldHVy
bihjPmIpJiYoYzwoYitkKSl9LGlzT3ZlcjpmdW5jdGlvbihnLGM9DQosZixl
LGIsZCl7cmV0dXJuID0NCmEudWkuaXNPdmVyQXhpcyhnLGYsYikmJmEudWku
aXNPdmVyQXhpcyhjLGUsZCl9LGtleUNvZGU6e0JBQ0tTUEFDRTo4LENBUFM9
DQpfTE9DSzoyMCxDT01NQToxODgsQ09OVFJPTDoxNyxERUxFVEU6NDYsRE9X
Tjo0MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3PQ0KLEhPTUU6MzYsSU5T
RVJUOjQ1LExFRlQ6MzcsTlVNUEFEX0FERDoxMDcsTlVNUEFEX0RFQ0lNQUw6
MTEwLE5VTVBBRF9ESVZJRD0NCkU6MTExLE5VTVBBRF9FTlRFUjoxMDgsTlVN
UEFEX01VTFRJUExZOjEwNixOVU1QQURfU1VCVFJBQ1Q6MTA5LFBBR0VfRE9X
Tjo9DQozNCxQQUdFX1VQOjMzLFBFUklPRDoxOTAsUklHSFQ6MzksU0hJRlQ6
MTYsU1BBQ0U6MzIsVEFCOjksVVA6Mzh9fTthLmZuLmV4PQ0KdGVuZCh7X2Zv
Y3VzOmEuZm4uZm9jdXMsZm9jdXM6ZnVuY3Rpb24oYixjKXtyZXR1cm4gdHlw
ZW9mID0NCmI9M0Q9M0Q9M0QibnVtYmVyIj90aGlzLmVhY2goZnVuY3Rpb24o
KXt2YXIgPQ0KZD0zRHRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2EoZCku
Zm9jdXMoKTsoYyYmYy5jYWxsKGQpKX0sYil9KTp0aGlzLl9mbz0NCmN1cy5h
cHBseSh0aGlzLGFyZ3VtZW50cyl9LGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlv
bigpe3JldHVybiA9DQp0aGlzLmF0dHIoInVuc2VsZWN0YWJsZSIsIm9mZiIp
LmNzcygiTW96VXNlclNlbGVjdCIsIiIpLnVuYmluZCgic2VsZWN0c3RhPQ0K
cnQudWkiKX0sZGlzYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiA9
DQp0aGlzLmF0dHIoInVuc2VsZWN0YWJsZSIsIm9uIikuY3NzKCJNb3pVc2Vy
U2VsZWN0Iiwibm9uZSIpLmJpbmQoInNlbGVjdHN0PQ0KYXJ0LnVpIixmdW5j
dGlvbigpe3JldHVybiBmYWxzZX0pfSxzY3JvbGxQYXJlbnQ6ZnVuY3Rpb24o
KXt2YXIgPQ0KYjtpZigoYS5icm93c2VyLm1zaWUmJigvKHN0YXRpY3xyZWxh
dGl2ZSkvKS50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKSl8fD0NCigvYWJz
b2x1dGUvKS50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKSl7Yj0zRHRoaXMu
cGFyZW50cygpLmZpbHRlcihmdW5jdGk9DQpvbigpe3JldHVybigvKHJlbGF0
aXZlfGFic29sdXRlfGZpeGVkKS8pLnRlc3QoYS5jdXJDU1ModGhpcywicG9z
aXRpb24iLDEpPQ0KKSYmKC8oYXV0b3xzY3JvbGwpLykudGVzdChhLmN1ckNT
Uyh0aGlzLCJvdmVyZmxvdyIsMSkrYS5jdXJDU1ModGhpcywib3Zlcj0NCmZs
b3cteSIsMSkrYS5jdXJDU1ModGhpcywib3ZlcmZsb3cteCIsMSkpfSkuZXEo
MCl9ZWxzZXtiPTNEdGhpcy5wYXJlbnRzKCk9DQouZmlsdGVyKGZ1bmN0aW9u
KCl7cmV0dXJuKC8oYXV0b3xzY3JvbGwpLykudGVzdChhLmN1ckNTUyh0aGlz
LCJvdmVyZmxvdyIsPQ0KMSkrYS5jdXJDU1ModGhpcywib3ZlcmZsb3cteSIs
MSkrYS5jdXJDU1ModGhpcywib3ZlcmZsb3cteCIsMSkpfSkuZXEoMCl9cj0N
CmV0dXJuKC9maXhlZC8pLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpfHwh
Yi5sZW5ndGg/YShkb2N1bWVudCk6Yn0sekluZGU9DQp4OmZ1bmN0aW9uKGUp
e2lmKGUhPTNEPTNEdW5kZWZpbmVkKXtyZXR1cm4gPQ0KdGhpcy5jc3MoInpJ
bmRleCIsZSl9aWYodGhpcy5sZW5ndGgpe3ZhciA9DQpjPTNEYSh0aGlzWzBd
KSxiLGQ7d2hpbGUoYy5sZW5ndGgmJmNbMF0hPTNEPTNEZG9jdW1lbnQpe2I9
M0RjLmNzcygicG9zaXRpPQ0Kb24iKTtpZihiPTNEPTNEImFic29sdXRlInx8
Yj0zRD0zRCJyZWxhdGl2ZSJ8fGI9M0Q9M0QiZml4ZWQiKXtkPTNEcGFyc2VJ
bj0NCnQoYy5jc3MoInpJbmRleCIpKTtpZighaXNOYU4oZCkmJmQhPTNEMCl7
cmV0dXJuID0NCmR9fWM9M0RjLnBhcmVudCgpfX1yZXR1cm4gPQ0KMH19KTth
LmV4dGVuZChhLmV4cHJbIjoiXSx7ZGF0YTpmdW5jdGlvbihkLGMsYil7cmV0
dXJuID0NCiEhYS5kYXRhKGQsYlszXSl9LGZvY3VzYWJsZTpmdW5jdGlvbihj
KXt2YXIgPQ0KZD0zRGMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxiPTNEYS5h
dHRyKGMsInRhYmluZGV4Iik7cmV0dXJuKC9pbnB1dHxzZWxlYz0NCnR8dGV4
dGFyZWF8YnV0dG9ufG9iamVjdC8udGVzdChkKT8hYy5kaXNhYmxlZDoiYSI9
M0Q9M0RkfHwiYXJlYSI9M0Q9M0RkP2M9DQouaHJlZnx8IWlzTmFOKGIpOiFp
c05hTihiKSkmJiFhKGMpWyJhcmVhIj0zRD0zRGQ/InBhcmVudHMiOiJjbG9z
ZXN0Il0oIjpoPQ0KaWRkZW4iKS5sZW5ndGh9LHRhYmJhYmxlOmZ1bmN0aW9u
KGMpe3ZhciA9DQpiPTNEYS5hdHRyKGMsInRhYmluZGV4Iik7cmV0dXJuKGlz
TmFOKGIpfHxiPj0zRDApJiZhKGMpLmlzKCI6Zm9jdXNhYmxlIil9PQ0KfSl9
KShqUXVlcnkpOzsvKiENCiAqIGpRdWVyeSBVSSBXaWRnZXQgMS44DQogKg0K
ICogQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1
ZXJ5dWkuY29tL2Fib3V0KQ0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUg
TUlUIChNSVQtTElDRU5TRS50eHQpDQogKiBhbmQgR1BMIChHUEwtTElDRU5T
RS50eHQpIGxpY2Vuc2VzLg0KICoNCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5j
b20vVUkvV2lkZ2V0DQogKi8NCi8qDQogKiBqUXVlcnkgVUkgV2lkZ2V0IDEu
OA0KICoNCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0
cDovL2pxdWVyeXVpLmNvbS9hYm91dCkNCiAqIER1YWwgbGljZW5zZWQgdW5k
ZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQ0KICogYW5kIEdQTCAoR1BM
LUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4NCiAqDQogKiBodHRwOi8vZG9jcy5q
cXVlcnkuY29tL1VJL1dpZGdldA0KICovDQooZnVuY3Rpb24oYil7dmFyIGE9
M0RiLmZuLnJlbW92ZTtiLmZuLnJlbW92ZT0zRGZ1bmN0aW9uKGMsZCl7cmV0
dXJuID0NCnRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCFkKXtpZighY3x8Yi5m
aWx0ZXIoYyxbdGhpc10pLmxlbmd0aCl7YigiKiIsdGhpcyk9DQouYWRkKHRo
aXMpLmVhY2goZnVuY3Rpb24oKXtiKHRoaXMpLnRyaWdnZXJIYW5kbGVyKCJy
ZW1vdmUiKX0pfX1yZXR1cm4gPQ0KYS5jYWxsKGIodGhpcyksYyxkKX0pfTti
LndpZGdldD0zRGZ1bmN0aW9uKGQsZixjKXt2YXIgPQ0KZT0zRGQuc3BsaXQo
Ii4iKVswXSxoO2Q9M0RkLnNwbGl0KCIuIilbMV07aD0zRGUrIi0iK2Q7aWYo
IWMpe2M9M0RmO2Y9M0RiLj0NCldpZGdldH1iLmV4cHJbIjoiXVtoXT0zRGZ1
bmN0aW9uKGkpe3JldHVybiA9DQohIWIuZGF0YShpLGQpfTtiW2VdPTNEYltl
XXx8e307YltlXVtkXT0zRGZ1bmN0aW9uKGksail7aWYoYXJndW1lbnRzLmxl
bmd0PQ0KaCl7dGhpcy5fY3JlYXRlV2lkZ2V0KGksail9fTt2YXIgZz0zRG5l
dyA9DQpmKCk7Zy5vcHRpb25zPTNEYi5leHRlbmQoe30sZy5vcHRpb25zKTti
W2VdW2RdLnByb3RvdHlwZT0zRGIuZXh0ZW5kKHRydWUsPQ0KZyx7bmFtZXNw
YWNlOmUsd2lkZ2V0TmFtZTpkLHdpZGdldEV2ZW50UHJlZml4OmJbZV1bZF0u
cHJvdG90eXBlLndpZGdldEV2ZT0NCm50UHJlZml4fHxkLHdpZGdldEJhc2VD
bGFzczpofSxjKTtiLndpZGdldC5icmlkZ2UoZCxiW2VdW2RdKX07Yi53aWRn
ZXQuYnI9DQppZGdlPTNEZnVuY3Rpb24oZCxjKXtiLmZuW2RdPTNEZnVuY3Rp
b24oZyl7dmFyIGU9M0R0eXBlb2YgPQ0KZz0zRD0zRD0zRCJzdHJpbmciLGY9
M0RBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaD0z
RHRoaXM7Zz0NCj0zRCFlJiZmLmxlbmd0aD9iLmV4dGVuZC5hcHBseShudWxs
LFt0cnVlLGddLmNvbmNhdChmKSk6ZztpZihlJiZnLnN1YnN0cmk9DQpuZygw
LDEpPTNEPTNEPTNEIl8iKXtyZXR1cm4gaH1pZihlKXt0aGlzLmVhY2goZnVu
Y3Rpb24oKXt2YXIgPQ0KaT0zRGIuZGF0YSh0aGlzLGQpLGo9M0RpJiZiLmlz
RnVuY3Rpb24oaVtnXSk/aVtnXS5hcHBseShpLGYpOmk7aWYoaiE9M0Q9M0Q9
DQppJiZqIT0zRD0zRHVuZGVmaW5lZCl7aD0zRGo7cmV0dXJuID0NCmZhbHNl
fX0pfWVsc2V7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyID0NCmk9M0RiLmRh
dGEodGhpcyxkKTtpZihpKXtpZihnKXtpLm9wdGlvbihnKX1pLl9pbml0KCl9
ZWxzZXtiLmRhdGEodGhpcyxkLG49DQpldyBjKGcsdGhpcykpfX0pfXJldHVy
biA9DQpofX07Yi5XaWRnZXQ9M0RmdW5jdGlvbihjLGQpe2lmKGFyZ3VtZW50
cy5sZW5ndGgpe3RoaXMuX2NyZWF0ZVdpZGdldChjLGQpPQ0KfX07Yi5XaWRn
ZXQucHJvdG90eXBlPTNEe3dpZGdldE5hbWU6IndpZGdldCIsd2lkZ2V0RXZl
bnRQcmVmaXg6IiIsb3B0aW9ucz0NCjp7ZGlzYWJsZWQ6ZmFsc2V9LF9jcmVh
dGVXaWRnZXQ6ZnVuY3Rpb24oZCxlKXt0aGlzLmVsZW1lbnQ9M0RiKGUpLmRh
dGEodGg9DQppcy53aWRnZXROYW1lLHRoaXMpO3RoaXMub3B0aW9ucz0zRGIu
ZXh0ZW5kKHRydWUse30sdGhpcy5vcHRpb25zLGIubWV0YWRhPQ0KdGEmJmIu
bWV0YWRhdGEuZ2V0KGUpW3RoaXMud2lkZ2V0TmFtZV0sZCk7dmFyID0NCmM9
M0R0aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJyZW1vdmUuIit0aGlzLndpZGdl
dE5hbWUsZnVuY3Rpb24oKXtjLmRlc3Ryb3k9DQooKX0pO3RoaXMuX2NyZWF0
ZSgpO3RoaXMuX2luaXQoKX0sX2NyZWF0ZTpmdW5jdGlvbigpe30sX2luaXQ6
ZnVuY3Rpb24oKXt9PQ0KLGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1l
bnQudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpLnJlbW92ZURhdGEodD0N
Cmhpcy53aWRnZXROYW1lKTt0aGlzLndpZGdldCgpLnVuYmluZCgiLiIrdGhp
cy53aWRnZXROYW1lKS5yZW1vdmVBdHRyKCJhcmk9DQphLWRpc2FibGVkIiku
cmVtb3ZlQ2xhc3ModGhpcy53aWRnZXRCYXNlQ2xhc3MrIi1kaXNhYmxlZCA9
DQoiK3RoaXMubmFtZXNwYWNlKyItc3RhdGUtZGlzYWJsZWQiKX0sd2lkZ2V0
OmZ1bmN0aW9uKCl7cmV0dXJuID0NCnRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1
bmN0aW9uKGUsZil7dmFyID0NCmQ9M0RlLGM9M0R0aGlzO2lmKGFyZ3VtZW50
cy5sZW5ndGg9M0Q9M0Q9M0QwKXtyZXR1cm4gPQ0KYi5leHRlbmQoe30sYy5v
cHRpb25zKX1pZih0eXBlb2YgPQ0KZT0zRD0zRD0zRCJzdHJpbmciKXtpZihm
PTNEPTNEPTNEdW5kZWZpbmVkKXtyZXR1cm4gPQ0KdGhpcy5vcHRpb25zW2Vd
fWQ9M0R7fTtkW2VdPTNEZn1iLmVhY2goZCxmdW5jdGlvbihnLGgpe2MuX3Nl
dE9wdGlvbihnLGgpfT0NCik7cmV0dXJuID0NCmN9LF9zZXRPcHRpb246ZnVu
Y3Rpb24oYyxkKXt0aGlzLm9wdGlvbnNbY109M0RkO2lmKGM9M0Q9M0Q9M0Qi
ZGlzYWJsZWQiKXs9DQp0aGlzLndpZGdldCgpW2Q/ImFkZENsYXNzIjoicmVt
b3ZlQ2xhc3MiXSh0aGlzLndpZGdldEJhc2VDbGFzcysiLWRpc2FibGVkPQ0K
ICIrdGhpcy5uYW1lc3BhY2UrIi1zdGF0ZS1kaXNhYmxlZCIpLmF0dHIoImFy
aWEtZGlzYWJsZWQiLGQpfXJldHVybiA9DQp0aGlzfSxlbmFibGU6ZnVuY3Rp
b24oKXtyZXR1cm4gPQ0KdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsZmFs
c2UpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuID0NCnRoaXMuX3NldE9w
dGlvbigiZGlzYWJsZWQiLHRydWUpfSxfdHJpZ2dlcjpmdW5jdGlvbihkLGUs
Zil7dmFyID0NCmg9M0R0aGlzLm9wdGlvbnNbZF07ZT0zRGIuRXZlbnQoZSk7
ZS50eXBlPTNEKGQ9M0Q9M0Q9M0R0aGlzLndpZGdldEV2ZW50UHI9DQplZml4
P2Q6dGhpcy53aWRnZXRFdmVudFByZWZpeCtkKS50b0xvd2VyQ2FzZSgpO2Y9
M0RmfHx7fTtpZihlLm9yaWdpbmFsRXZlPQ0KbnQpe2Zvcih2YXIgPQ0KYz0z
RGIuZXZlbnQucHJvcHMubGVuZ3RoLGc7Yzspe2c9M0RiLmV2ZW50LnByb3Bz
Wy0tY107ZVtnXT0zRGUub3JpZ2luYWxFdj0NCmVudFtnXX19dGhpcy5lbGVt
ZW50LnRyaWdnZXIoZSxmKTtyZXR1cm4gPQ0KIShiLmlzRnVuY3Rpb24oaCkm
JmguY2FsbCh0aGlzLmVsZW1lbnRbMF0sZSxmKT0zRD0zRD0zRGZhbHNlfHxl
LmlzRGVmYXVsdD0NClByZXZlbnRlZCgpKX19fSkoalF1ZXJ5KTs7LyoNCiAq
IGpRdWVyeSBVSSBBY2NvcmRpb24gMS44DQogKg0KICogQ29weXJpZ2h0IChj
KSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0
KQ0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5T
RS50eHQpDQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2Vz
Lg0KICoNCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvQWNjb3JkaW9u
DQogKg0KICogRGVwZW5kczoNCiAqCWpxdWVyeS51aS5jb3JlLmpzDQogKglq
cXVlcnkudWkud2lkZ2V0LmpzDQogKi8NCihmdW5jdGlvbihhKXthLndpZGdl
dCgidWkuYWNjb3JkaW9uIix7b3B0aW9uczp7YWN0aXZlOjAsYW5pbWF0ZWQ6
InNsaWRlIiw9DQphdXRvSGVpZ2h0OmZhbHNlLGNsZWFyU3R5bGU6ZmFsc2Us
Y29sbGFwc2libGU6ZmFsc2UsZXZlbnQ6ImNsaWNrIixmaWxsU3BhPQ0KY2U6
ZmFsc2UsaGVhZGVyOiI+IGxpID4gOmZpcnN0LWNoaWxkLD4gPQ0KOm5vdChs
aSk6ZXZlbiIsaWNvbnM6e2hlYWRlcjoidWktaWNvbi10cmlhbmdsZS0xLWUi
LGhlYWRlclNlbGVjdGVkOiJ1aS1pYz0NCm9uLXRyaWFuZ2xlLTEtcyJ9LG5h
dmlnYXRpb246ZmFsc2UsbmF2aWdhdGlvbkZpbHRlcjpmdW5jdGlvbigpe3Jl
dHVybiA9DQp0aGlzLmhyZWYudG9Mb3dlckNhc2UoKT0zRD0zRGxvY2F0aW9u
LmhyZWYudG9Mb3dlckNhc2UoKX19LF9jcmVhdGU6ZnVuY3RpPQ0Kb24oKXt2
YXIgPQ0KZD0zRHRoaXMub3B0aW9ucyxiPTNEdGhpczt0aGlzLnJ1bm5pbmc9
M0QwO3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYWNjbz0NCnJkaW9uIHVp
LXdpZGdldCA9DQp1aS1oZWxwZXItcmVzZXQiKTtpZih0aGlzLmVsZW1lbnRb
MF0ubm9kZU5hbWU9M0Q9M0QiVUwiKXt0aGlzLmVsZW1lbnQuY2hpPQ0KbGRy
ZW4oImxpIikuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1saS1maXgiKX10aGlz
LmhlYWRlcnM9M0R0aGlzLmVsZW1lbnQuZj0NCmluZChkLmhlYWRlcikuYWRk
Q2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXIgdWktaGVscGVyLXJlc2V0ID0N
CnVpLXN0YXRlLWRlZmF1bHQgPQ0KdWktY29ybmVyLWFsbCIpLmJpbmQoIm1v
dXNlZW50ZXIuYWNjb3JkaW9uIixmdW5jdGlvbigpe2EodGhpcykuYWRkQ2xh
c3MoIj0NCnVpLXN0YXRlLWhvdmVyIil9KS5iaW5kKCJtb3VzZWxlYXZlLmFj
Y29yZGlvbiIsZnVuY3Rpb24oKXthKHRoaXMpLnJlbW92ZUM9DQpsYXNzKCJ1
aS1zdGF0ZS1ob3ZlciIpfSkuYmluZCgiZm9jdXMuYWNjb3JkaW9uIixmdW5j
dGlvbigpe2EodGhpcykuYWRkQ2xhPQ0Kc3MoInVpLXN0YXRlLWZvY3VzIil9
KS5iaW5kKCJibHVyLmFjY29yZGlvbiIsZnVuY3Rpb24oKXthKHRoaXMpLnJl
bW92ZUNsYT0NCnNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSk7dGhpcy5oZWFkZXJz
Lm5leHQoKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQ9DQogdWkt
aGVscGVyLXJlc2V0IHVpLXdpZGdldC1jb250ZW50ID0NCnVpLWNvcm5lci1i
b3R0b20iKTtpZihkLm5hdmlnYXRpb24pe3ZhciA9DQpjPTNEdGhpcy5lbGVt
ZW50LmZpbmQoImEiKS5maWx0ZXIoZC5uYXZpZ2F0aW9uRmlsdGVyKTtpZihj
Lmxlbmd0aCl7dmFyID0NCmU9M0RjLmNsb3Nlc3QoIi51aS1hY2NvcmRpb24t
aGVhZGVyIik7aWYoZS5sZW5ndGgpe3RoaXMuYWN0aXZlPTNEZX1lbHNle3Q9
DQpoaXMuYWN0aXZlPTNEYy5jbG9zZXN0KCIudWktYWNjb3JkaW9uLWNvbnRl
bnQiKS5wcmV2KCl9fX10aGlzLmFjdGl2ZT0zRHRoPQ0KaXMuX2ZpbmRBY3Rp
dmUodGhpcy5hY3RpdmV8fGQuYWN0aXZlKS50b2dnbGVDbGFzcygidWktc3Rh
dGUtZGVmYXVsdCIpLnRvZz0NCmdsZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUi
KS50b2dnbGVDbGFzcygidWktY29ybmVyLWFsbCIpLnRvZ2dsZUNsYXNzKCJ1
aS09DQpjb3JuZXItdG9wIik7dGhpcy5hY3RpdmUubmV4dCgpLmFkZENsYXNz
KCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKTt0PQ0KaGlzLl9jcmVh
dGVJY29ucygpO2lmKGEuYnJvd3Nlci5tc2llKXt0aGlzLmVsZW1lbnQuZmlu
ZCgiYSIpLmNzcygiem9vbSIsIj0NCjEiKX10aGlzLnJlc2l6ZSgpO3RoaXMu
ZWxlbWVudC5hdHRyKCJyb2xlIiwidGFibGlzdCIpO3RoaXMuaGVhZGVycy5h
dHRyKCI9DQpyb2xlIiwidGFiIikuYmluZCgia2V5ZG93biIsZnVuY3Rpb24o
Zil7cmV0dXJuID0NCmIuX2tleWRvd24oZil9KS5uZXh0KCkuYXR0cigicm9s
ZSIsInRhYnBhbmVsIik7dGhpcy5oZWFkZXJzLm5vdCh0aGlzLmFjdGk9DQp2
ZXx8IiIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLmF0dHIoInRh
YkluZGV4IiwiLTEiKS5uZXh0KCkuaGlkZSgpPQ0KO2lmKCF0aGlzLmFjdGl2
ZS5sZW5ndGgpe3RoaXMuaGVhZGVycy5lcSgwKS5hdHRyKCJ0YWJJbmRleCIs
IjAiKX1lbHNle3RoaT0NCnMuYWN0aXZlLmF0dHIoImFyaWEtZXhwYW5kZWQi
LCJ0cnVlIikuYXR0cigidGFiSW5kZXgiLCIwIil9aWYoIWEuYnJvd3Nlci49
DQpzYWZhcmkpe3RoaXMuaGVhZGVycy5maW5kKCJhIikuYXR0cigidGFiSW5k
ZXgiLCItMSIpfWlmKGQuZXZlbnQpe3RoaXMuaGVhPQ0KZGVycy5iaW5kKChk
LmV2ZW50KSsiLmFjY29yZGlvbiIsZnVuY3Rpb24oZil7Yi5fY2xpY2tIYW5k
bGVyLmNhbGwoYixmLHRoaT0NCnMpO2YucHJldmVudERlZmF1bHQoKX0pfX0s
X2NyZWF0ZUljb25zOmZ1bmN0aW9uKCl7dmFyID0NCmI9M0R0aGlzLm9wdGlv
bnM7aWYoYi5pY29ucyl7YSgiPHNwYW4vPiIpLmFkZENsYXNzKCJ1aS1pY29u
ID0NCiIrYi5pY29ucy5oZWFkZXIpLnByZXBlbmRUbyh0aGlzLmhlYWRlcnMp
O3RoaXMuYWN0aXZlLmZpbmQoIi51aS1pY29uIikudG89DQpnZ2xlQ2xhc3Mo
Yi5pY29ucy5oZWFkZXIpLnRvZ2dsZUNsYXNzKGIuaWNvbnMuaGVhZGVyU2Vs
ZWN0ZWQpO3RoaXMuZWxlbWVuPQ0KdC5hZGRDbGFzcygidWktYWNjb3JkaW9u
LWljb25zIil9fSxfZGVzdHJveUljb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWFk
ZXJzLj0NCmNoaWxkcmVuKCIudWktaWNvbiIpLnJlbW92ZSgpO3RoaXMuZWxl
bWVudC5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9uLWljb249DQpzIil9LGRl
c3Ryb3k6ZnVuY3Rpb24oKXt2YXIgPQ0KYz0zRHRoaXMub3B0aW9uczt0aGlz
LmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbiB1aS13aWRnZXQg
PQ0KdWktaGVscGVyLXJlc2V0IikucmVtb3ZlQXR0cigicm9sZSIpLnVuYmlu
ZCgiLmFjY29yZGlvbiIpLnJlbW92ZURhdGEoImFjYz0NCm9yZGlvbiIpO3Ro
aXMuaGVhZGVycy51bmJpbmQoIi5hY2NvcmRpb24iKS5yZW1vdmVDbGFzcygi
dWktYWNjb3JkaW9uLWhlYWQ9DQplciB1aS1oZWxwZXItcmVzZXQgdWktc3Rh
dGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWFjdGl2ZSA9DQp1
aS1jb3JuZXItdG9wIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIo
ImFyaWEtZXhwYW5kZWQiKS5yZW1vdmVBdHRyPQ0KKCJ0YWJpbmRleCIpO3Ro
aXMuaGVhZGVycy5maW5kKCJhIikucmVtb3ZlQXR0cigidGFiaW5kZXgiKTt0
aGlzLl9kZXN0cm95ST0NCmNvbnMoKTt2YXIgPQ0KYj0zRHRoaXMuaGVhZGVy
cy5uZXh0KCkuY3NzKCJkaXNwbGF5IiwiIikucmVtb3ZlQXR0cigicm9sZSIp
LnJlbW92ZUNsYXNzKD0NCiJ1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNv
bnRlbnQgdWktY29ybmVyLWJvdHRvbSB1aS1hY2NvcmRpb24tY29udGVudCA9
DQp1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKTtpZihjLmF1dG9IZWln
aHR8fGMuZmlsbEhlaWdodCl7Yi5jc3MoImhlaWdoPQ0KdCIsIiIpfXJldHVy
biA9DQp0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGIsYyl7YS5XaWRnZXQu
cHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcyxhPQ0Kcmd1bWVudHMp
O2lmKGI9M0Q9M0QiYWN0aXZlIil7dGhpcy5hY3RpdmF0ZShjKX1pZihiPTNE
PTNEImljb25zIil7dGhpcy5fZD0NCmVzdHJveUljb25zKCk7aWYoYyl7dGhp
cy5fY3JlYXRlSWNvbnMoKX19fSxfa2V5ZG93bjpmdW5jdGlvbihlKXt2YXIg
PQ0KZz0zRHRoaXMub3B0aW9ucyxmPTNEYS51aS5rZXlDb2RlO2lmKGcuZGlz
YWJsZWR8fGUuYWx0S2V5fHxlLmN0cmxLZXkpe3JldD0NCnVybn12YXIgZD0z
RHRoaXMuaGVhZGVycy5sZW5ndGg7dmFyIGI9M0R0aGlzLmhlYWRlcnMuaW5k
ZXgoZS50YXJnZXQpO3ZhciA9DQpjPTNEZmFsc2U7c3dpdGNoKGUua2V5Q29k
ZSl7Y2FzZSBmLlJJR0hUOmNhc2UgPQ0KZi5ET1dOOmM9M0R0aGlzLmhlYWRl
cnNbKGIrMSklZF07YnJlYWs7Y2FzZSBmLkxFRlQ6Y2FzZSA9DQpmLlVQOmM9
M0R0aGlzLmhlYWRlcnNbKGItMStkKSVkXTticmVhaztjYXNlIGYuU1BBQ0U6
Y2FzZSA9DQpmLkVOVEVSOnRoaXMuX2NsaWNrSGFuZGxlcih7dGFyZ2V0OmUu
dGFyZ2V0fSxlLnRhcmdldCk7ZS5wcmV2ZW50RGVmYXVsdCgpPQ0KfWlmKGMp
e2EoZS50YXJnZXQpLmF0dHIoInRhYkluZGV4IiwiLTEiKTthKGMpLmF0dHIo
InRhYkluZGV4IiwiMCIpO2MuZm9jdT0NCnMoKTtyZXR1cm4gZmFsc2V9cmV0
dXJuIHRydWV9LHJlc2l6ZTpmdW5jdGlvbigpe3ZhciA9DQpkPTNEdGhpcy5v
cHRpb25zLGM7aWYoZC5maWxsU3BhY2Upe2lmKGEuYnJvd3Nlci5tc2llKXt2
YXIgPQ0KYj0zRHRoaXMuZWxlbWVudC5wYXJlbnQoKS5jc3MoIm92ZXJmbG93
Iik7dGhpcy5lbGVtZW50LnBhcmVudCgpLmNzcygib3Zlcj0NCmZsb3ciLCJo
aWRkZW4iKX1jPTNEdGhpcy5lbGVtZW50LnBhcmVudCgpLmhlaWdodCgpO2lm
KGEuYnJvd3Nlci5tc2llKXt0aGk9DQpzLmVsZW1lbnQucGFyZW50KCkuY3Nz
KCJvdmVyZmxvdyIsYil9dGhpcy5oZWFkZXJzLmVhY2goZnVuY3Rpb24oKXtj
LT0zRGEoPQ0KdGhpcykub3V0ZXJIZWlnaHQodHJ1ZSl9KTt0aGlzLmhlYWRl
cnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXthKHRoaXMpLmhlaT0NCmdodChN
YXRoLm1heCgwLGMtYSh0aGlzKS5pbm5lckhlaWdodCgpK2EodGhpcykuaGVp
Z2h0KCkpKX0pLmNzcygib3ZlcmZsb3c9DQoiLCJhdXRvIil9ZWxzZXtpZihk
LmF1dG9IZWlnaHQpe2M9M0QwO3RoaXMuaGVhZGVycy5uZXh0KCkuZWFjaChm
dW5jdGlvbigpPQ0Ke2M9M0RNYXRoLm1heChjLGEodGhpcykuaGVpZ2h0KCkp
fSkuaGVpZ2h0KGMpfX1yZXR1cm4gPQ0KdGhpc30sYWN0aXZhdGU6ZnVuY3Rp
b24oYil7dGhpcy5vcHRpb25zLmFjdGl2ZT0zRGI7dmFyID0NCmM9M0R0aGlz
Ll9maW5kQWN0aXZlKGIpWzBdO3RoaXMuX2NsaWNrSGFuZGxlcih7dGFyZ2V0
OmN9LGMpO3JldHVybiA9DQp0aGlzfSxfZmluZEFjdGl2ZTpmdW5jdGlvbihi
KXtyZXR1cm4gYj90eXBlb2YgPQ0KYj0zRD0zRCJudW1iZXIiP3RoaXMuaGVh
ZGVycy5maWx0ZXIoIjplcSgiK2IrIikiKTp0aGlzLmhlYWRlcnMubm90KHRo
aXMuaD0NCmVhZGVycy5ub3QoYikpOmI9M0Q9M0Q9M0RmYWxzZT9hKFtdKTp0
aGlzLmhlYWRlcnMuZmlsdGVyKCI6ZXEoMCkiKX0sX2NsaWM9DQprSGFuZGxl
cjpmdW5jdGlvbihiLGYpe3ZhciA9DQpkPTNEdGhpcy5vcHRpb25zO2lmKGQu
ZGlzYWJsZWQpe3JldHVybn1pZighYi50YXJnZXQpe2lmKCFkLmNvbGxhcHNp
YmxlKXtyPQ0KZXR1cm59dGhpcy5hY3RpdmUucmVtb3ZlQ2xhc3MoInVpLXN0
YXRlLWFjdGl2ZSA9DQp1aS1jb3JuZXItdG9wIikuYWRkQ2xhc3MoInVpLXN0
YXRlLWRlZmF1bHQgPQ0KdWktY29ybmVyLWFsbCIpLmZpbmQoIi51aS1pY29u
IikucmVtb3ZlQ2xhc3MoZC5pY29ucy5oZWFkZXJTZWxlY3RlZCkuYWRkQz0N
Cmxhc3MoZC5pY29ucy5oZWFkZXIpO3RoaXMuYWN0aXZlLm5leHQoKS5hZGRD
bGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQtYWM9DQp0aXZlIik7dmFyID0N
Cmg9M0R0aGlzLmFjdGl2ZS5uZXh0KCksZT0zRHtvcHRpb25zOmQsbmV3SGVh
ZGVyOmEoW10pLG9sZEhlYWRlcjpkLmFjdGl2ZSw9DQpuZXdDb250ZW50OmEo
W10pLG9sZENvbnRlbnQ6aH0sYz0zRCh0aGlzLmFjdGl2ZT0zRGEoW10pKTt0
aGlzLl90b2dnbGUoYyxoPQ0KLGUpO3JldHVybn12YXIgZz0zRGEoYi5jdXJy
ZW50VGFyZ2V0fHxmKTt2YXIgPQ0KaT0zRGdbMF09M0Q9M0R0aGlzLmFjdGl2
ZVswXTtkLmFjdGl2ZT0zRGQuY29sbGFwc2libGUmJmk/ZmFsc2U6YSgiLnVp
LWFjYz0NCm9yZGlvbi1oZWFkZXIiLHRoaXMuZWxlbWVudCkuaW5kZXgoZyk7
aWYodGhpcy5ydW5uaW5nfHwoIWQuY29sbGFwc2libGUmJmk9DQopKXtyZXR1
cm59dGhpcy5hY3RpdmUucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSA9
DQp1aS1jb3JuZXItdG9wIikuYWRkQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQg
PQ0KdWktY29ybmVyLWFsbCIpLmZpbmQoIi51aS1pY29uIikucmVtb3ZlQ2xh
c3MoZC5pY29ucy5oZWFkZXJTZWxlY3RlZCkuYWRkQz0NCmxhc3MoZC5pY29u
cy5oZWFkZXIpO2lmKCFpKXtnLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1kZWZh
dWx0ID0NCnVpLWNvcm5lci1hbGwiKS5hZGRDbGFzcygidWktc3RhdGUtYWN0
aXZlID0NCnVpLWNvcm5lci10b3AiKS5maW5kKCIudWktaWNvbiIpLnJlbW92
ZUNsYXNzKGQuaWNvbnMuaGVhZGVyKS5hZGRDbGFzcyhkLmk9DQpjb25zLmhl
YWRlclNlbGVjdGVkKTtnLm5leHQoKS5hZGRDbGFzcygidWktYWNjb3JkaW9u
LWNvbnRlbnQtYWN0aXZlIil9dmFyPQ0KID0NCmM9M0RnLm5leHQoKSxoPTNE
dGhpcy5hY3RpdmUubmV4dCgpLGU9M0R7b3B0aW9uczpkLG5ld0hlYWRlcjpp
JiZkLmNvbGxhcHM9DQppYmxlP2EoW10pOmcsb2xkSGVhZGVyOnRoaXMuYWN0
aXZlLG5ld0NvbnRlbnQ6aSYmZC5jb2xsYXBzaWJsZT9hKFtdKTpjLG9sPQ0K
ZENvbnRlbnQ6aH0saj0zRHRoaXMuaGVhZGVycy5pbmRleCh0aGlzLmFjdGl2
ZVswXSk+dGhpcy5oZWFkZXJzLmluZGV4KGdbMD0NCl0pO3RoaXMuYWN0aXZl
PTNEaT9hKFtdKTpnO3RoaXMuX3RvZ2dsZShjLGgsZSxpLGopO3JldHVybn0s
X3RvZ2dsZTpmdW5jdGk9DQpvbihiLGksZyxqLGspe3ZhciA9DQpkPTNEdGhp
cy5vcHRpb25zLG09M0R0aGlzO3RoaXMudG9TaG93PTNEYjt0aGlzLnRvSGlk
ZT0zRGk7dGhpcy5kYXRhPTNEZzt2PQ0KYXIgYz0zRGZ1bmN0aW9uKCl7aWYo
IW0pe3JldHVybn1yZXR1cm4gPQ0KbS5fY29tcGxldGVkLmFwcGx5KG0sYXJn
dW1lbnRzKX07dGhpcy5fdHJpZ2dlcigiY2hhbmdlc3RhcnQiLG51bGwsdGhp
cy5kYT0NCnRhKTt0aGlzLnJ1bm5pbmc9M0RpLnNpemUoKT0zRD0zRD0zRDA/
Yi5zaXplKCk6aS5zaXplKCk7aWYoZC5hbmltYXRlZCl7dmE9DQpyID0NCmY9
M0R7fTtpZihkLmNvbGxhcHNpYmxlJiZqKXtmPTNEe3RvU2hvdzphKFtdKSx0
b0hpZGU6aSxjb21wbGV0ZTpjLGRvd246ayw9DQphdXRvSGVpZ2h0OmQuYXV0
b0hlaWdodHx8ZC5maWxsU3BhY2V9fWVsc2V7Zj0zRHt0b1Nob3c6Yix0b0hp
ZGU6aSxjb21wbGV0PQ0KZTpjLGRvd246ayxhdXRvSGVpZ2h0OmQuYXV0b0hl
aWdodHx8ZC5maWxsU3BhY2V9fWlmKCFkLnByb3hpZWQpe2QucHJveGllZD0N
Cj0zRGQuYW5pbWF0ZWR9aWYoIWQucHJveGllZER1cmF0aW9uKXtkLnByb3hp
ZWREdXJhdGlvbj0zRGQuZHVyYXRpb259ZC5hbmk9DQptYXRlZD0zRGEuaXNG
dW5jdGlvbihkLnByb3hpZWQpP2QucHJveGllZChmKTpkLnByb3hpZWQ7ZC5k
dXJhdGlvbj0zRGEuaXNGPQ0KdW5jdGlvbihkLnByb3hpZWREdXJhdGlvbik/
ZC5wcm94aWVkRHVyYXRpb24oZik6ZC5wcm94aWVkRHVyYXRpb247dmFyID0N
Cmw9M0RhLnVpLmFjY29yZGlvbi5hbmltYXRpb25zLGU9M0RkLmR1cmF0aW9u
LGg9M0RkLmFuaW1hdGVkO2lmKGgmJiFsW2hdJiY9DQohYS5lYXNpbmdbaF0p
e2g9M0Qic2xpZGUifWlmKCFsW2hdKXtsW2hdPTNEZnVuY3Rpb24obil7dGhp
cy5zbGlkZShuLHtlYXNpPQ0Kbmc6aCxkdXJhdGlvbjplfHw3MDB9KX19bFto
XShmKX1lbHNle2lmKGQuY29sbGFwc2libGUmJmope2IudG9nZ2xlKCl9ZWxz
ZT0NCntpLmhpZGUoKTtiLnNob3coKX1jKHRydWUpfWkucHJldigpLmF0dHIo
ImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLmF0dHIoInQ9DQphYkluZGV4Iiwi
LTEiKS5ibHVyKCk7Yi5wcmV2KCkuYXR0cigiYXJpYS1leHBhbmRlZCIsInRy
dWUiKS5hdHRyKCJ0YWJJbmRlPQ0KeCIsIjAiKS5mb2N1cygpfSxfY29tcGxl
dGVkOmZ1bmN0aW9uKGIpe3ZhciA9DQpjPTNEdGhpcy5vcHRpb25zO3RoaXMu
cnVubmluZz0zRGI/MDotLXRoaXMucnVubmluZztpZih0aGlzLnJ1bm5pbmcp
e3JldHVyPQ0Kbn1pZihjLmNsZWFyU3R5bGUpe3RoaXMudG9TaG93LmFkZCh0
aGlzLnRvSGlkZSkuY3NzKHtoZWlnaHQ6IiIsb3ZlcmZsb3c6Ij0NCiJ9KX10
aGlzLnRvSGlkZS5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQt
YWN0aXZlIik7dGhpcy5fdHJpZ2dlcig9DQoiY2hhbmdlIixudWxsLHRoaXMu
ZGF0YSl9fSk7YS5leHRlbmQoYS51aS5hY2NvcmRpb24se3ZlcnNpb246IjEu
OCIsYW5pbWF0PQ0KaW9uczp7c2xpZGU6ZnVuY3Rpb24oaixoKXtqPTNEYS5l
eHRlbmQoe2Vhc2luZzoic3dpbmciLGR1cmF0aW9uOjMwMH0saixoKT0NCjtp
Zighai50b0hpZGUuc2l6ZSgpKXtqLnRvU2hvdy5hbmltYXRlKHtoZWlnaHQ6
InNob3cifSxqKTtyZXR1cm59aWYoIWoudG89DQpTaG93LnNpemUoKSl7ai50
b0hpZGUuYW5pbWF0ZSh7aGVpZ2h0OiJoaWRlIn0saik7cmV0dXJufXZhciA9
DQpjPTNEai50b1Nob3cuY3NzKCJvdmVyZmxvdyIpLGc9M0QwLGQ9M0R7fSxm
PTNEe30sZT0zRFsiaGVpZ2h0IiwicGFkZGluZ1RvPQ0KcCIsInBhZGRpbmdC
b3R0b20iXSxiO3ZhciA9DQppPTNEai50b1Nob3c7Yj0zRGlbMF0uc3R5bGUu
d2lkdGg7aS53aWR0aChwYXJzZUludChpLnBhcmVudCgpLndpZHRoKCksMTAp
PQ0KLXBhcnNlSW50KGkuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKS1wYXJzZUlu
dChpLmNzcygicGFkZGluZ1JpZ2h0IiksMTApLShwYT0NCnJzZUludChpLmNz
cygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3Mo
ImJvcmRlclJpZ2h0V2lkdGg9DQoiKSwxMCl8fDApKTthLmVhY2goZSxmdW5j
dGlvbihrLG0pe2ZbbV09M0QiaGlkZSI7dmFyID0NCmw9M0QoIiIrYS5jc3Mo
ai50b1Nob3dbMF0sbSkpLm1hdGNoKC9eKFtcZCstLl0rKSguKikkLyk7ZFtt
XT0zRHt2YWx1ZTpsWzE9DQpdLHVuaXQ6bFsyXXx8InB4In19KTtqLnRvU2hv
dy5jc3Moe2hlaWdodDowLG92ZXJmbG93OiJoaWRkZW4ifSkuc2hvdygpO2ou
PQ0KdG9IaWRlLmZpbHRlcigiOmhpZGRlbiIpLmVhY2goai5jb21wbGV0ZSku
ZW5kKCkuZmlsdGVyKCI6dmlzaWJsZSIpLmFuaW1hdD0NCmUoZix7c3RlcDpm
dW5jdGlvbihrLGwpe2lmKGwucHJvcD0zRD0zRCJoZWlnaHQiKXtnPTNEKGwu
ZW5kLWwuc3RhcnQ9M0Q9M0Q9DQo9M0QwKT8wOihsLm5vdy1sLnN0YXJ0KS8o
bC5lbmQtbC5zdGFydCl9ai50b1Nob3dbMF0uc3R5bGVbbC5wcm9wXT0zRChn
KmRbPQ0KbC5wcm9wXS52YWx1ZSkrZFtsLnByb3BdLnVuaXR9LGR1cmF0aW9u
OmouZHVyYXRpb24sZWFzaW5nOmouZWFzaW5nLGNvbXBsZT0NCnRlOmZ1bmN0
aW9uKCl7aWYoIWouYXV0b0hlaWdodCl7ai50b1Nob3cuY3NzKCJoZWlnaHQi
LCIiKX1qLnRvU2hvdy5jc3MoInc9DQppZHRoIixiKTtqLnRvU2hvdy5jc3Mo
e292ZXJmbG93OmN9KTtqLmNvbXBsZXRlKCl9fSl9LGJvdW5jZXNsaWRlOmZ1
bmN0aW9uPQ0KKGIpe3RoaXMuc2xpZGUoYix7ZWFzaW5nOmIuZG93bj8iZWFz
ZU91dEJvdW5jZSI6InN3aW5nIixkdXJhdGlvbjpiLmRvd24/MT0NCjAwMDoy
MDB9KX19fSl9KShqUXVlcnkpOzsvKg0KICogalF1ZXJ5IFVJIFRhYnMgMS44
DQogKg0KICogQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRw
Oi8vanF1ZXJ5dWkuY29tL2Fib3V0KQ0KICogRHVhbCBsaWNlbnNlZCB1bmRl
ciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpDQogKiBhbmQgR1BMIChHUEwt
TElDRU5TRS50eHQpIGxpY2Vuc2VzLg0KICoNCiAqIGh0dHA6Ly9kb2NzLmpx
dWVyeS5jb20vVUkvVGFicw0KICoNCiAqIERlcGVuZHM6DQogKglqcXVlcnku
dWkuY29yZS5qcw0KICoJanF1ZXJ5LnVpLndpZGdldC5qcw0KICovDQooZnVu
Y3Rpb24oYyl7dmFyID0NCmI9M0QwLGE9M0QwO2Mud2lkZ2V0KCJ1aS50YWJz
Iix7b3B0aW9uczp7YWRkOm51bGwsYWpheE9wdGlvbnM6bnVsbCxjYWNoZTo9
DQpmYWxzZSxjb29raWU6bnVsbCxjb2xsYXBzaWJsZTpmYWxzZSxkaXNhYmxl
Om51bGwsZGlzYWJsZWQ6W10sZW5hYmxlOm51bGwsPQ0KZXZlbnQ6ImNsaWNr
IixmeDpudWxsLGlkUHJlZml4OiJ1aS10YWJzLSIsbG9hZDpudWxsLHBhbmVs
VGVtcGxhdGU6IjxkaXY+PD0NCi9kaXY+IixyZW1vdmU6bnVsbCxzZWxlY3Q6
bnVsbCxzaG93Om51bGwsc3Bpbm5lcjoiPGVtPkxvYWRpbmcmIzgyMzA7PC9l
bT49DQoiLHRhYlRlbXBsYXRlOic8bGk+PGEgPQ0KaHJlZj0zRCIje2hyZWZ9
Ij48c3Bhbj4je2xhYmVsfTwvc3Bhbj48L2E+PC9saT4nfSxfY3JlYXRlOmZ1
bmN0aW9uKCl7dGhpcz0NCi5fdGFiaWZ5KHRydWUpfSxfc2V0T3B0aW9uOmZ1
bmN0aW9uKGQsZSl7aWYoZD0zRD0zRCJzZWxlY3RlZCIpe2lmKHRoaXMub3A9
DQp0aW9ucy5jb2xsYXBzaWJsZSYmZT0zRD0zRHRoaXMub3B0aW9ucy5zZWxl
Y3RlZCl7cmV0dXJufXRoaXMuc2VsZWN0KGUpfWVsPQ0Kc2V7dGhpcy5vcHRp
b25zW2RdPTNEZTt0aGlzLl90YWJpZnkoKX19LF90YWJJZDpmdW5jdGlvbihk
KXtyZXR1cm4gPQ0KZC50aXRsZSYmZC50aXRsZS5yZXBsYWNlKC9ccy9nLCJf
IikucmVwbGFjZSgvW15BLVphLXowLTlcLV86XC5dL2csIiIpfHx0aD0NCmlz
Lm9wdGlvbnMuaWRQcmVmaXgrKCsrYil9LF9zYW5pdGl6ZVNlbGVjdG9yOmZ1
bmN0aW9uKGQpe3JldHVybiA9DQpkLnJlcGxhY2UoLzovZywiXFw6Iil9LF9j
b29raWU6ZnVuY3Rpb24oKXt2YXIgPQ0KZD0zRHRoaXMuY29va2llfHwodGhp
cy5jb29raWU9M0R0aGlzLm9wdGlvbnMuY29va2llLm5hbWV8fCJ1aS10YWJz
LSIrKCsrYT0NCikpO3JldHVybiA9DQpjLmNvb2tpZS5hcHBseShudWxsLFtk
XS5jb25jYXQoYy5tYWtlQXJyYXkoYXJndW1lbnRzKSkpfSxfdWk6ZnVuY3Rp
b24oZSxkPQ0KKXtyZXR1cm57dGFiOmUscGFuZWw6ZCxpbmRleDp0aGlzLmFu
Y2hvcnMuaW5kZXgoZSl9fSxfY2xlYW51cDpmdW5jdGlvbigpez0NCnRoaXMu
bGlzLmZpbHRlcigiLnVpLXN0YXRlLXByb2Nlc3NpbmciKS5yZW1vdmVDbGFz
cygidWktc3RhdGUtcHJvY2Vzc2luZyI9DQopLmZpbmQoInNwYW46ZGF0YShs
YWJlbC50YWJzKSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgPQ0KZD0zRGModGhp
cyk7ZC5odG1sKGQuZGF0YSgibGFiZWwudGFicyIpKS5yZW1vdmVEYXRhKCJs
YWJlbC50YWJzIil9KX0sX3RhYj0NCmlmeTpmdW5jdGlvbihxKXt0aGlzLmxp
c3Q9M0R0aGlzLmVsZW1lbnQuZmluZCgib2wsdWwiKS5lcSgwKTt0aGlzLmxp
cz0zRGM9DQooImxpOmhhcyhhW2hyZWZdKSIsdGhpcy5saXN0KTt0aGlzLmFu
Y2hvcnM9M0R0aGlzLmxpcy5tYXAoZnVuY3Rpb24oKXtyZXR1PQ0Kcm4gYygi
YSIsdGhpcylbMF19KTt0aGlzLnBhbmVscz0zRGMoW10pO3ZhciA9DQpyPTNE
dGhpcyxmPTNEdGhpcy5vcHRpb25zO3ZhciA9DQplPTNEL14jLisvO3RoaXMu
YW5jaG9ycy5lYWNoKGZ1bmN0aW9uKHUsbyl7dmFyIHM9M0RjKG8pLmF0dHIo
ImhyZWYiKTt2YXIgPQ0Kdj0zRHMuc3BsaXQoIiMiKVswXSx3O2lmKHYmJih2
PTNEPTNEPTNEbG9jYXRpb24udG9TdHJpbmcoKS5zcGxpdCgiIyIpWzBdfD0N
Cnwodz0zRGMoImJhc2UiKVswXSkmJnY9M0Q9M0Q9M0R3LmhyZWYpKXtzPTNE
by5oYXNoO28uaHJlZj0zRHN9aWYoZS50ZXN0KHM9DQopKXtyLnBhbmVscz0z
RHIucGFuZWxzLmFkZChyLl9zYW5pdGl6ZVNlbGVjdG9yKHMpKX1lbHNle2lm
KHMhPTNEIiMiKXtjLmRhPQ0KdGEobywiaHJlZi50YWJzIixzKTtjLmRhdGEo
bywibG9hZC50YWJzIixzLnJlcGxhY2UoLyMuKiQvLCIiKSk7dmFyID0NCnk9
M0RyLl90YWJJZChvKTtvLmhyZWY9M0QiIyIreTt2YXIgPQ0KeD0zRGMoIiMi
K3kpO2lmKCF4Lmxlbmd0aCl7eD0zRGMoZi5wYW5lbFRlbXBsYXRlKS5hdHRy
KCJpZCIseSkuYWRkQ2xhc3MoIj0NCnVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0
LWNvbnRlbnQgPQ0KdWktY29ybmVyLWJvdHRvbSIpLmluc2VydEFmdGVyKHIu
cGFuZWxzW3UtMV18fHIubGlzdCk7eC5kYXRhKCJkZXN0cm95LnRhYj0NCnMi
LHRydWUpfXIucGFuZWxzPTNEci5wYW5lbHMuYWRkKHgpfWVsc2V7Zi5kaXNh
YmxlZC5wdXNoKHUpfX19KTtpZihxKXt0aGk9DQpzLmVsZW1lbnQuYWRkQ2xh
c3MoInVpLXRhYnMgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50ID0NCnVp
LWNvcm5lci1hbGwiKTt0aGlzLmxpc3QuYWRkQ2xhc3MoInVpLXRhYnMtbmF2
IHVpLWhlbHBlci1yZXNldCA9DQp1aS1oZWxwZXItY2xlYXJmaXggdWktd2lk
Z2V0LWhlYWRlciA9DQp1aS1jb3JuZXItYWxsIik7dGhpcy5saXMuYWRkQ2xh
c3MoInVpLXN0YXRlLWRlZmF1bHQgPQ0KdWktY29ybmVyLXRvcCIpO3RoaXMu
cGFuZWxzLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250
ZW50ID0NCnVpLWNvcm5lci1ib3R0b20iKTtpZihmLnNlbGVjdGVkPTNEPTNE
PTNEdW5kZWZpbmVkKXtpZihsb2NhdGlvbi5oYXNoKXt0aGk9DQpzLmFuY2hv
cnMuZWFjaChmdW5jdGlvbihzLG8pe2lmKG8uaGFzaD0zRD0zRGxvY2F0aW9u
Lmhhc2gpe2Yuc2VsZWN0ZWQ9M0RzPQ0KO3JldHVybiBmYWxzZX19KX1pZih0
eXBlb2YgPQ0KZi5zZWxlY3RlZCE9M0QibnVtYmVyIiYmZi5jb29raWUpe2Yu
c2VsZWN0ZWQ9M0RwYXJzZUludChyLl9jb29raWUoKSwxMCl9aT0NCmYodHlw
ZW9mID0NCmYuc2VsZWN0ZWQhPTNEIm51bWJlciImJnRoaXMubGlzLmZpbHRl
cigiLnVpLXRhYnMtc2VsZWN0ZWQiKS5sZW5ndGgpe2Yuc2U9DQpsZWN0ZWQ9
M0R0aGlzLmxpcy5pbmRleCh0aGlzLmxpcy5maWx0ZXIoIi51aS10YWJzLXNl
bGVjdGVkIikpfWYuc2VsZWN0ZWQ9M0Q9DQpmLnNlbGVjdGVkfHwodGhpcy5s
aXMubGVuZ3RoPzA6LTEpfWVsc2V7aWYoZi5zZWxlY3RlZD0zRD0zRD0zRG51
bGwpe2Yuc2VsPQ0KZWN0ZWQ9M0QtMX19Zi5zZWxlY3RlZD0zRCgoZi5zZWxl
Y3RlZD49M0QwJiZ0aGlzLmFuY2hvcnNbZi5zZWxlY3RlZF0pfHxmLj0NCnNl
bGVjdGVkPDApP2Yuc2VsZWN0ZWQ6MDtmLmRpc2FibGVkPTNEYy51bmlxdWUo
Zi5kaXNhYmxlZC5jb25jYXQoYy5tYXAodGg9DQppcy5saXMuZmlsdGVyKCIu
dWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihzLG8pe3JldHVybiA9DQpy
Lmxpcy5pbmRleChzKX0pKSkuc29ydCgpO2lmKGMuaW5BcnJheShmLnNlbGVj
dGVkLGYuZGlzYWJsZWQpIT0zRC0xKXtmLmRpPQ0Kc2FibGVkLnNwbGljZShj
LmluQXJyYXkoZi5zZWxlY3RlZCxmLmRpc2FibGVkKSwxKX10aGlzLnBhbmVs
cy5hZGRDbGFzcygidT0NCmktdGFicy1oaWRlIik7dGhpcy5saXMucmVtb3Zl
Q2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQgPQ0KdWktc3RhdGUtYWN0aXZlIik7
aWYoZi5zZWxlY3RlZD49M0QwJiZ0aGlzLmFuY2hvcnMubGVuZ3RoKXt0aGlz
LnBhbmVscy5lcT0NCihmLnNlbGVjdGVkKS5yZW1vdmVDbGFzcygidWktdGFi
cy1oaWRlIik7dGhpcy5saXMuZXEoZi5zZWxlY3RlZCkuYWRkQ2xhc3M9DQoo
InVpLXRhYnMtc2VsZWN0ZWQgPQ0KdWktc3RhdGUtYWN0aXZlIik7ci5lbGVt
ZW50LnF1ZXVlKCJ0YWJzIixmdW5jdGlvbigpe3IuX3RyaWdnZXIoInNob3ci
LG51bD0NCmwsci5fdWkoci5hbmNob3JzW2Yuc2VsZWN0ZWRdLHIucGFuZWxz
W2Yuc2VsZWN0ZWRdKSl9KTt0aGlzLmxvYWQoZi5zZWxlY3Q9DQplZCl9Yyh3
aW5kb3cpLmJpbmQoInVubG9hZCIsZnVuY3Rpb24oKXtyLmxpcy5hZGQoci5h
bmNob3JzKS51bmJpbmQoIi50YWJzPQ0KIik7ci5saXM9M0RyLmFuY2hvcnM9
M0RyLnBhbmVscz0zRG51bGx9KX1lbHNle2Yuc2VsZWN0ZWQ9M0R0aGlzLmxp
cy5pbmRleD0NCih0aGlzLmxpcy5maWx0ZXIoIi51aS10YWJzLXNlbGVjdGVk
IikpfXRoaXMuZWxlbWVudFtmLmNvbGxhcHNpYmxlPyJhZGRDbGE9DQpzcyI6
InJlbW92ZUNsYXNzIl0oInVpLXRhYnMtY29sbGFwc2libGUiKTtpZihmLmNv
b2tpZSl7dGhpcy5fY29va2llKGYuc2VsPQ0KZWN0ZWQsZi5jb29raWUpfWZv
cih2YXIgPQ0Kaj0zRDAscDsocD0zRHRoaXMubGlzW2pdKTtqKyspe2MocClb
Yy5pbkFycmF5KGosZi5kaXNhYmxlZCkhPTNELTEmJiFjKHApLj0NCmhhc0Ns
YXNzKCJ1aS10YWJzLXNlbGVjdGVkIik/ImFkZENsYXNzIjoicmVtb3ZlQ2xh
c3MiXSgidWktc3RhdGUtZGlzYWJsZWQ9DQoiKX1pZihmLmNhY2hlPTNEPTNE
PTNEZmFsc2Upe3RoaXMuYW5jaG9ycy5yZW1vdmVEYXRhKCJjYWNoZS50YWJz
Iil9dGhpcy5sPQ0KaXMuYWRkKHRoaXMuYW5jaG9ycykudW5iaW5kKCIudGFi
cyIpO2lmKGYuZXZlbnQhPTNEIm1vdXNlb3ZlciIpe3ZhciA9DQpoPTNEZnVu
Y3Rpb24obyxpKXtpZihpLmlzKCI6bm90KC51aS1zdGF0ZS1kaXNhYmxlZCki
KSl7aS5hZGRDbGFzcygidWktc3RhPQ0KdGUtIitvKX19O3ZhciA9DQpsPTNE
ZnVuY3Rpb24obyxpKXtpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS0iK28pfTt0
aGlzLmxpcy5iaW5kKCJtb3VzZW92ZXIuPQ0KdGFicyIsZnVuY3Rpb24oKXto
KCJob3ZlciIsYyh0aGlzKSl9KTt0aGlzLmxpcy5iaW5kKCJtb3VzZW91dC50
YWJzIixmdW5jdD0NCmlvbigpe2woImhvdmVyIixjKHRoaXMpKX0pO3RoaXMu
YW5jaG9ycy5iaW5kKCJmb2N1cy50YWJzIixmdW5jdGlvbigpe2goImY9DQpv
Y3VzIixjKHRoaXMpLmNsb3Nlc3QoImxpIikpfSk7dGhpcy5hbmNob3JzLmJp
bmQoImJsdXIudGFicyIsZnVuY3Rpb24oKXtsPQ0KKCJmb2N1cyIsYyh0aGlz
KS5jbG9zZXN0KCJsaSIpKX0pfXZhciA9DQpkLGs7aWYoZi5meCl7aWYoYy5p
c0FycmF5KGYuZngpKXtkPTNEZi5meFswXTtrPTNEZi5meFsxXX1lbHNle2Q9
M0RrPTNEZi5mPQ0KeH19ZnVuY3Rpb24gPQ0KZyhpLG8pe2kuY3NzKHtkaXNw
bGF5OiIifSk7aWYoIWMuc3VwcG9ydC5vcGFjaXR5JiZvLm9wYWNpdHkpe2lb
MF0uc3R5bGUucj0NCmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKX19dmFyID0N
Cm09M0RrP2Z1bmN0aW9uKGksbyl7YyhpKS5jbG9zZXN0KCJsaSIpLmFkZENs
YXNzKCJ1aS10YWJzLXNlbGVjdGVkID0NCnVpLXN0YXRlLWFjdGl2ZSIpO28u
aGlkZSgpLnJlbW92ZUNsYXNzKCJ1aS10YWJzLWhpZGUiKS5hbmltYXRlKGss
ay5kdXJhdGk9DQpvbnx8Im5vcm1hbCIsZnVuY3Rpb24oKXtnKG8sayk7ci5f
dHJpZ2dlcigic2hvdyIsbnVsbCxyLl91aShpLG9bMF0pKX0pfTpmPQ0KdW5j
dGlvbihpLG8pe2MoaSkuY2xvc2VzdCgibGkiKS5hZGRDbGFzcygidWktdGFi
cy1zZWxlY3RlZCA9DQp1aS1zdGF0ZS1hY3RpdmUiKTtvLnJlbW92ZUNsYXNz
KCJ1aS10YWJzLWhpZGUiKTtyLl90cmlnZ2VyKCJzaG93IixudWxsLHIuPQ0K
X3VpKGksb1swXSkpfTt2YXIgPQ0Kbj0zRGQ/ZnVuY3Rpb24obyxpKXtpLmFu
aW1hdGUoZCxkLmR1cmF0aW9ufHwibm9ybWFsIixmdW5jdGlvbigpe3IubGlz
LnJlbT0NCm92ZUNsYXNzKCJ1aS10YWJzLXNlbGVjdGVkID0NCnVpLXN0YXRl
LWFjdGl2ZSIpO2kuYWRkQ2xhc3MoInVpLXRhYnMtaGlkZSIpO2coaSxkKTty
LmVsZW1lbnQuZGVxdWV1ZSgidGE9DQpicyIpfSl9OmZ1bmN0aW9uKG8saSxz
KXtyLmxpcy5yZW1vdmVDbGFzcygidWktdGFicy1zZWxlY3RlZCA9DQp1aS1z
dGF0ZS1hY3RpdmUiKTtpLmFkZENsYXNzKCJ1aS10YWJzLWhpZGUiKTtyLmVs
ZW1lbnQuZGVxdWV1ZSgidGFicyIpfTt0PQ0KaGlzLmFuY2hvcnMuYmluZChm
LmV2ZW50KyIudGFicyIsZnVuY3Rpb24oKXt2YXIgPQ0Kbz0zRHRoaXMsdT0z
RGModGhpcykuY2xvc2VzdCgibGkiKSxpPTNEci5wYW5lbHMuZmlsdGVyKCI6
bm90KC51aS10YWJzLWhpZD0NCmUpIikscz0zRGMoci5fc2FuaXRpemVTZWxl
Y3Rvcih0aGlzLmhhc2gpKTtpZigodS5oYXNDbGFzcygidWktdGFicy1zZWxl
Y3Q9DQplZCIpJiYhZi5jb2xsYXBzaWJsZSl8fHUuaGFzQ2xhc3MoInVpLXN0
YXRlLWRpc2FibGVkIil8fHUuaGFzQ2xhc3MoInVpLXN0PQ0KYXRlLXByb2Nl
c3NpbmciKXx8ci5fdHJpZ2dlcigic2VsZWN0IixudWxsLHIuX3VpKHRoaXMs
c1swXSkpPTNEPTNEPTNEZmFscz0NCmUpe3RoaXMuYmx1cigpO3JldHVybiA9
DQpmYWxzZX1mLnNlbGVjdGVkPTNEci5hbmNob3JzLmluZGV4KHRoaXMpO3Iu
YWJvcnQoKTtpZihmLmNvbGxhcHNpYmxlKXtpZih1PQ0KLmhhc0NsYXNzKCJ1
aS10YWJzLXNlbGVjdGVkIikpe2Yuc2VsZWN0ZWQ9M0QtMTtpZihmLmNvb2tp
ZSl7ci5fY29va2llKGYucz0NCmVsZWN0ZWQsZi5jb29raWUpfXIuZWxlbWVu
dC5xdWV1ZSgidGFicyIsZnVuY3Rpb24oKXtuKG8saSl9KS5kZXF1ZXVlKCJ0
YWI9DQpzIik7dGhpcy5ibHVyKCk7cmV0dXJuID0NCmZhbHNlfWVsc2V7aWYo
IWkubGVuZ3RoKXtpZihmLmNvb2tpZSl7ci5fY29va2llKGYuc2VsZWN0ZWQs
Zi5jb29raWUpfXIuZWw9DQplbWVudC5xdWV1ZSgidGFicyIsZnVuY3Rpb24o
KXttKG8scyl9KTtyLmxvYWQoci5hbmNob3JzLmluZGV4KHRoaXMpKTt0aGlz
PQ0KLmJsdXIoKTtyZXR1cm4gPQ0KZmFsc2V9fX1pZihmLmNvb2tpZSl7ci5f
Y29va2llKGYuc2VsZWN0ZWQsZi5jb29raWUpfWlmKHMubGVuZ3RoKXtpZihp
Lmxlbj0NCmd0aCl7ci5lbGVtZW50LnF1ZXVlKCJ0YWJzIixmdW5jdGlvbigp
e24obyxpKX0pfXIuZWxlbWVudC5xdWV1ZSgidGFicyIsZnU9DQpuY3Rpb24o
KXttKG8scyl9KTtyLmxvYWQoci5hbmNob3JzLmluZGV4KHRoaXMpKX1lbHNl
e3Rocm93ImpRdWVyeSBVSSA9DQpUYWJzOiBNaXNtYXRjaGluZyBmcmFnbWVu
dCA9DQppZGVudGlmaWVyLiJ9aWYoYy5icm93c2VyLm1zaWUpe3RoaXMuYmx1
cigpfX0pO3RoaXMuYW5jaG9ycy5iaW5kKCJjbGljay50PQ0KYWJzIixmdW5j
dGlvbigpe3JldHVybiBmYWxzZX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFy
ID0NCmQ9M0R0aGlzLm9wdGlvbnM7dGhpcy5hYm9ydCgpO3RoaXMuZWxlbWVu
dC51bmJpbmQoIi50YWJzIikucmVtb3ZlQ2xhc3MoInU9DQppLXRhYnMgdWkt
d2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgPQ0KdWkt
dGFicy1jb2xsYXBzaWJsZSIpLnJlbW92ZURhdGEoInRhYnMiKTt0aGlzLmxp
c3QucmVtb3ZlQ2xhc3MoInVpLXRhYnMtbj0NCmF2IHVpLWhlbHBlci1yZXNl
dCB1aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciA9DQp1aS1j
b3JuZXItYWxsIik7dGhpcy5hbmNob3JzLmVhY2goZnVuY3Rpb24oKXt2YXIg
PQ0KZT0zRGMuZGF0YSh0aGlzLCJocmVmLnRhYnMiKTtpZihlKXt0aGlzLmhy
ZWY9M0RlfXZhciA9DQpmPTNEYyh0aGlzKS51bmJpbmQoIi50YWJzIik7Yy5l
YWNoKFsiaHJlZiIsImxvYWQiLCJjYWNoZSJdLGZ1bmN0aW9uKGcsaCl7PQ0K
Zi5yZW1vdmVEYXRhKGgrIi50YWJzIil9KX0pO3RoaXMubGlzLnVuYmluZCgi
LnRhYnMiKS5hZGQodGhpcy5wYW5lbHMpLmVhYz0NCmgoZnVuY3Rpb24oKXtp
ZihjLmRhdGEodGhpcywiZGVzdHJveS50YWJzIikpe2ModGhpcykucmVtb3Zl
KCl9ZWxzZXtjKHRoaXM9DQopLnJlbW92ZUNsYXNzKFsidWktc3RhdGUtZGVm
YXVsdCIsInVpLWNvcm5lci10b3AiLCJ1aS10YWJzLXNlbGVjdGVkIiwidWkt
PQ0Kc3RhdGUtYWN0aXZlIiwidWktc3RhdGUtaG92ZXIiLCJ1aS1zdGF0ZS1m
b2N1cyIsInVpLXN0YXRlLWRpc2FibGVkIiwidWktdD0NCmFicy1wYW5lbCIs
InVpLXdpZGdldC1jb250ZW50IiwidWktY29ybmVyLWJvdHRvbSIsInVpLXRh
YnMtaGlkZSJdLmpvaW4oIiA9DQoiKSl9fSk7aWYoZC5jb29raWUpe3RoaXMu
X2Nvb2tpZShudWxsLGQuY29va2llKX1yZXR1cm4gPQ0KdGhpc30sYWRkOmZ1
bmN0aW9uKGcsZixlKXtpZihlPTNEPTNEPTNEdW5kZWZpbmVkKXtlPTNEdGhp
cy5hbmNob3JzLmxlbmd0aD0NCn12YXIgPQ0KZD0zRHRoaXMsaT0zRHRoaXMu
b3B0aW9ucyxrPTNEYyhpLnRhYlRlbXBsYXRlLnJlcGxhY2UoLyNce2hyZWZc
fS9nLGcpLnJlcD0NCmxhY2UoLyNce2xhYmVsXH0vZyxmKSksaj0zRCFnLmlu
ZGV4T2YoIiMiKT9nLnJlcGxhY2UoIiMiLCIiKTp0aGlzLl90YWJJZCg9DQpj
KCJhIixrKVswXSk7ay5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCA9DQp1
aS1jb3JuZXItdG9wIikuZGF0YSgiZGVzdHJveS50YWJzIix0cnVlKTt2YXIg
PQ0KaD0zRGMoIiMiK2opO2lmKCFoLmxlbmd0aCl7aD0zRGMoaS5wYW5lbFRl
bXBsYXRlKS5hdHRyKCJpZCIsaikuZGF0YSgiZGVzdD0NCnJveS50YWJzIix0
cnVlKX1oLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250
ZW50ID0NCnVpLWNvcm5lci1ib3R0b20gPQ0KdWktdGFicy1oaWRlIik7aWYo
ZT49M0R0aGlzLmxpcy5sZW5ndGgpe2suYXBwZW5kVG8odGhpcy5saXN0KTto
LmFwcGVuZFRvKD0NCnRoaXMubGlzdFswXS5wYXJlbnROb2RlKX1lbHNle2su
aW5zZXJ0QmVmb3JlKHRoaXMubGlzW2VdKTtoLmluc2VydEJlZm9yZSg9DQp0
aGlzLnBhbmVsc1tlXSl9aS5kaXNhYmxlZD0zRGMubWFwKGkuZGlzYWJsZWQs
ZnVuY3Rpb24obSxsKXtyZXR1cm4gPQ0KbT49M0RlPysrbTptfSk7dGhpcy5f
dGFiaWZ5KCk7aWYodGhpcy5hbmNob3JzLmxlbmd0aD0zRD0zRDEpe2kuc2Vs
ZWN0ZWQ9M0Q9DQowO2suYWRkQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQgPQ0K
dWktc3RhdGUtYWN0aXZlIik7aC5yZW1vdmVDbGFzcygidWktdGFicy1oaWRl
Iik7dGhpcy5lbGVtZW50LnF1ZXVlKCJ0YWJzIj0NCixmdW5jdGlvbigpe2Qu
X3RyaWdnZXIoInNob3ciLG51bGwsZC5fdWkoZC5hbmNob3JzWzBdLGQucGFu
ZWxzWzBdKSl9KTt0aGk9DQpzLmxvYWQoMCl9dGhpcy5fdHJpZ2dlcigiYWRk
IixudWxsLHRoaXMuX3VpKHRoaXMuYW5jaG9yc1tlXSx0aGlzLnBhbmVsc1tl
PQ0KXSkpO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oZCl7dmFyID0N
CmY9M0R0aGlzLm9wdGlvbnMsZz0zRHRoaXMubGlzLmVxKGQpLnJlbW92ZSgp
LGU9M0R0aGlzLnBhbmVscy5lcShkKS5yZW1vdmU9DQooKTtpZihnLmhhc0Ns
YXNzKCJ1aS10YWJzLXNlbGVjdGVkIikmJnRoaXMuYW5jaG9ycy5sZW5ndGg+
MSl7dGhpcy5zZWxlY3QoPQ0KZCsoZCsxPHRoaXMuYW5jaG9ycy5sZW5ndGg/
MTotMSkpfWYuZGlzYWJsZWQ9M0RjLm1hcChjLmdyZXAoZi5kaXNhYmxlZCxm
dT0NCm5jdGlvbihqLGgpe3JldHVybiBqIT0zRGR9KSxmdW5jdGlvbihqLGgp
e3JldHVybiA9DQpqPj0zRGQ/LS1qOmp9KTt0aGlzLl90YWJpZnkoKTt0aGlz
Ll90cmlnZ2VyKCJyZW1vdmUiLG51bGwsdGhpcy5fdWkoZy5maW5kPQ0KKCJh
IilbMF0sZVswXSkpO3JldHVybiB0aGlzfSxlbmFibGU6ZnVuY3Rpb24oZCl7
dmFyID0NCmU9M0R0aGlzLm9wdGlvbnM7aWYoYy5pbkFycmF5KGQsZS5kaXNh
YmxlZCk9M0Q9M0QtMSl7cmV0dXJufXRoaXMubGlzLmVxKGQ9DQopLnJlbW92
ZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpO2UuZGlzYWJsZWQ9M0RjLmdy
ZXAoZS5kaXNhYmxlZCxmdW5jdGlvPQ0KbihnLGYpe3JldHVybiA9DQpnIT0z
RGR9KTt0aGlzLl90cmlnZ2VyKCJlbmFibGUiLG51bGwsdGhpcy5fdWkodGhp
cy5hbmNob3JzW2RdLHRoaXMucGFuZWxzPQ0KW2RdKSk7cmV0dXJuIHRoaXN9
LGRpc2FibGU6ZnVuY3Rpb24oZSl7dmFyID0NCmQ9M0R0aGlzLGY9M0R0aGlz
Lm9wdGlvbnM7aWYoZSE9M0RmLnNlbGVjdGVkKXt0aGlzLmxpcy5lcShlKS5h
ZGRDbGFzcygidWk9DQotc3RhdGUtZGlzYWJsZWQiKTtmLmRpc2FibGVkLnB1
c2goZSk7Zi5kaXNhYmxlZC5zb3J0KCk7dGhpcy5fdHJpZ2dlcigiZGlzPQ0K
YWJsZSIsbnVsbCx0aGlzLl91aSh0aGlzLmFuY2hvcnNbZV0sdGhpcy5wYW5l
bHNbZV0pKX1yZXR1cm4gPQ0KdGhpc30sc2VsZWN0OmZ1bmN0aW9uKGQpe2lm
KHR5cGVvZiA9DQpkPTNEPTNEInN0cmluZyIpe2Q9M0R0aGlzLmFuY2hvcnMu
aW5kZXgodGhpcy5hbmNob3JzLmZpbHRlcigiW2hyZWYkPTNEIitkPQ0KKyJd
IikpfWVsc2V7aWYoZD0zRD0zRD0zRG51bGwpe2Q9M0QtMX19aWYoZD0zRD0z
RC0xJiZ0aGlzLm9wdGlvbnMuY29sbGFwcz0NCmlibGUpe2Q9M0R0aGlzLm9w
dGlvbnMuc2VsZWN0ZWR9dGhpcy5hbmNob3JzLmVxKGQpLnRyaWdnZXIodGhp
cy5vcHRpb25zLmU9DQp2ZW50KyIudGFicyIpO3JldHVybiB0aGlzfSxsb2Fk
OmZ1bmN0aW9uKGcpe3ZhciA9DQplPTNEdGhpcyxpPTNEdGhpcy5vcHRpb25z
LGQ9M0R0aGlzLmFuY2hvcnMuZXEoZylbMF0sZj0zRGMuZGF0YShkLCJsb2Fk
LnRhPQ0KYnMiKTt0aGlzLmFib3J0KCk7aWYoIWZ8fHRoaXMuZWxlbWVudC5x
dWV1ZSgidGFicyIpLmxlbmd0aCE9M0Q9M0QwJiZjLmRhdD0NCmEoZCwiY2Fj
aGUudGFicyIpKXt0aGlzLmVsZW1lbnQuZGVxdWV1ZSgidGFicyIpO3JldHVy
bn10aGlzLmxpcy5lcShnKS5hZGQ9DQpDbGFzcygidWktc3RhdGUtcHJvY2Vz
c2luZyIpO2lmKGkuc3Bpbm5lcil7dmFyID0NCmg9M0RjKCJzcGFuIixkKTto
LmRhdGEoImxhYmVsLnRhYnMiLGguaHRtbCgpKS5odG1sKGkuc3Bpbm5lcil9
dGhpcy54aHI9M0Q9DQpjLmFqYXgoYy5leHRlbmQoe30saS5hamF4T3B0aW9u
cyx7dXJsOmYsc3VjY2VzczpmdW5jdGlvbihrLGope2MoZS5fc2FuaXRpPQ0K
emVTZWxlY3RvcihkLmhhc2gpKS5odG1sKGspO2UuX2NsZWFudXAoKTtpZihp
LmNhY2hlKXtjLmRhdGEoZCwiY2FjaGUudGFicz0NCiIsdHJ1ZSl9ZS5fdHJp
Z2dlcigibG9hZCIsbnVsbCxlLl91aShlLmFuY2hvcnNbZ10sZS5wYW5lbHNb
Z10pKTt0cnl7aS5hamE9DQp4T3B0aW9ucy5zdWNjZXNzKGssail9Y2F0Y2go
bCl7fX0sZXJyb3I6ZnVuY3Rpb24obCxqLGspe2UuX2NsZWFudXAoKTtlLl90
PQ0KcmlnZ2VyKCJsb2FkIixudWxsLGUuX3VpKGUuYW5jaG9yc1tnXSxlLnBh
bmVsc1tnXSkpO3RyeXtpLmFqYXhPcHRpb25zLmVycj0NCm9yKGwsaixnLGQp
fWNhdGNoKGspe319fSkpO2UuZWxlbWVudC5kZXF1ZXVlKCJ0YWJzIik7cmV0
dXJuID0NCnRoaXN9LGFib3J0OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnF1
ZXVlKFtdKTt0aGlzLnBhbmVscy5zdG9wKGZhbHNlLHRydWU9DQopO3RoaXMu
ZWxlbWVudC5xdWV1ZSgidGFicyIsdGhpcy5lbGVtZW50LnF1ZXVlKCJ0YWJz
Iikuc3BsaWNlKC0yLDIpKTtpZih0PQ0KaGlzLnhocil7dGhpcy54aHIuYWJv
cnQoKTtkZWxldGUgdGhpcy54aHJ9dGhpcy5fY2xlYW51cCgpO3JldHVybiA9
DQp0aGlzfSx1cmw6ZnVuY3Rpb24oZSxkKXt0aGlzLmFuY2hvcnMuZXEoZSku
cmVtb3ZlRGF0YSgiY2FjaGUudGFicyIpLmRhdGEoPQ0KImxvYWQudGFicyIs
ZCk7cmV0dXJuIHRoaXN9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiA9DQp0
aGlzLmFuY2hvcnMubGVuZ3RofX0pO2MuZXh0ZW5kKGMudWkudGFicyx7dmVy
c2lvbjoiMS44In0pO2MuZXh0ZW5kKGMudWkuPQ0KdGFicy5wcm90b3R5cGUs
e3JvdGF0aW9uOm51bGwscm90YXRlOmZ1bmN0aW9uKGYsaCl7dmFyID0NCmQ9
M0R0aGlzLGk9M0R0aGlzLm9wdGlvbnM7dmFyID0NCmU9M0RkLl9yb3RhdGV8
fChkLl9yb3RhdGU9M0RmdW5jdGlvbihqKXtjbGVhclRpbWVvdXQoZC5yb3Rh
dGlvbik7ZC5yb3RhdGk9DQpvbj0zRHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2
YXIgPQ0Kaz0zRGkuc2VsZWN0ZWQ7ZC5zZWxlY3QoKytrPGQuYW5jaG9ycy5s
ZW5ndGg/azowKX0sZik7aWYoail7ai5zdG9wUHJvcGFnYT0NCnRpb24oKX19
KTt2YXIgPQ0KZz0zRGQuX3Vucm90YXRlfHwoZC5fdW5yb3RhdGU9M0QhaD9m
dW5jdGlvbihqKXtpZihqLmNsaWVudFgpe2Qucm90YXRlKG51bD0NCmwpfX06
ZnVuY3Rpb24oail7dD0zRGkuc2VsZWN0ZWQ7ZSgpfSk7aWYoZil7dGhpcy5l
bGVtZW50LmJpbmQoInRhYnNzaG93Iiw9DQplKTt0aGlzLmFuY2hvcnMuYmlu
ZChpLmV2ZW50KyIudGFicyIsZyk7ZSgpfWVsc2V7Y2xlYXJUaW1lb3V0KGQu
cm90YXRpb24pPQ0KO3RoaXMuZWxlbWVudC51bmJpbmQoInRhYnNzaG93Iixl
KTt0aGlzLmFuY2hvcnMudW5iaW5kKGkuZXZlbnQrIi50YWJzIixnKT0NCjtk
ZWxldGUgdGhpcy5fcm90YXRlO2RlbGV0ZSB0aGlzLl91bnJvdGF0ZX1yZXR1
cm4gdGhpc319KX0pKGpRdWVyeSk7Ow0KLS0tLS0tPV9OZXh0UGFydF8wMDBf
MDAwMF8wMUNDRUM3OC5DRUI1OThBMA0KQ29udGVudC1UeXBlOiBhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0NCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
IHF1b3RlZC1wcmludGFibGUNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly93
d3cuY2FydGFzaS5pdC9ncmV5Ym94L0FKUy5qcw0KDQpBSlM9M0R7QkFTRV9V
Ukw6IiIsZHJhZ19vYmo6bnVsbCxkcmFnX2VsbTpudWxsLF9kcm9wX3pvbmVz
OltdLF9jdXJfcG9zOm51PQ0KbGwsZ2V0U2Nyb2xsVG9wOmZ1bmN0aW9uKCl7
PTBBPQ0KdmFyIHQ7PTBBPQ0KaWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wKXs9MEE9DQp0
PTNEZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDs9MEE9DQp9
ZWxzZXs9MEE9DQppZihkb2N1bWVudC5ib2R5KXs9MEE9DQp0PTNEZG9jdW1l
bnQuYm9keS5zY3JvbGxUb3A7PTBBPQ0KfT0wQT0NCn09MEE9DQpyZXR1cm4g
dDs9MEE9DQp9LGFkZENsYXNzOmZ1bmN0aW9uKCl7PTBBPQ0KdmFyIF8yPTNE
QUpTLmZvcmNlQXJyYXkoYXJndW1lbnRzKTs9MEE9DQp2YXIgXzM9M0RfMi5w
b3AoKTs9MEE9DQp2YXIgXzQ9M0RmdW5jdGlvbihvKXs9MEE9DQppZighbmV3
IFJlZ0V4cCgiKF58XFxzKSIrXzMrIihcXHN8JCkiKS50ZXN0KG8uY2xhc3NO
YW1lKSl7PTBBPQ0Kby5jbGFzc05hbWUrPTNEKG8uY2xhc3NOYW1lPyIgIjoi
IikrXzM7PTBBPQ0KfT0wQT0NCn07PTBBPQ0KQUpTLm1hcChfMixmdW5jdGlv
bihfNil7PTBBPQ0KXzQoXzYpOz0wQT0NCn0pOz0wQT0NCn0sc2V0U3R5bGU6
ZnVuY3Rpb24oKXs9MEE9DQp2YXIgXzc9M0RBSlMuZm9yY2VBcnJheShhcmd1
bWVudHMpOz0wQT0NCnZhciBfOD0zRF83LnBvcCgpOz0wQT0NCnZhciBfOT0z
RF83LnBvcCgpOz0wQT0NCkFKUy5tYXAoXzcsZnVuY3Rpb24oX2Epez0wQT0N
Cl9hLnN0eWxlW185XT0zREFKUy5nZXRDc3NEaW0oXzgpOz0wQT0NCn0pOz0w
QT0NCn0sZXh0ZW5kOmZ1bmN0aW9uKF9iKXs9MEE9DQp2YXIgX2M9M0RuZXcg
dGhpcygibm9faW5pdCIpOz0wQT0NCmZvcihrIGluIF9iKXs9MEE9DQp2YXIg
X2Q9M0RfY1trXTs9MEE9DQp2YXIgX2U9M0RfYltrXTs9MEE9DQppZihfZCYm
X2QhPTNEX2UmJnR5cGVvZiBfZT0zRD0zRCJmdW5jdGlvbiIpez0wQT0NCl9l
PTNEdGhpcy5fcGFyZW50aXplKF9lLF9kKTs9MEE9DQp9PTBBPQ0KX2Nba109
M0RfZTs9MEE9DQp9PTBBPQ0KcmV0dXJuIG5ldyBBSlMuQ2xhc3MoX2MpOz0w
QT0NCn0sbG9nOmZ1bmN0aW9uKG8pez0wQT0NCmlmKHdpbmRvdy5jb25zb2xl
KXs9MEE9DQpjb25zb2xlLmxvZyhvKTs9MEE9DQp9ZWxzZXs9MEE9DQp2YXIg
ZGl2PTNEQUpTLiQoImFqc19sb2dnZXIiKTs9MEE9DQppZighZGl2KXs9MEE9
DQpkaXY9M0RBSlMuRElWKHtpZDoiYWpzX2xvZ2dlciIsInN0eWxlIjoiY29s
b3I6IGdyZWVuOyBwb3NpdGlvbjogPQ0KYWJzb2x1dGU7IGxlZnQ6IDAifSk7
PTBBPQ0KZGl2LnN0eWxlLnRvcD0zREFKUy5nZXRTY3JvbGxUb3AoKSsicHgi
Oz0wQT0NCkFKUy5BQ04oQUpTLmdldEJvZHkoKSxkaXYpOz0wQT0NCn09MEE9
DQpBSlMuc2V0SFRNTChkaXYsIiIrbyk7PTBBPQ0KfT0wQT0NCn0sc2V0SGVp
Z2h0OmZ1bmN0aW9uKCl7PTBBPQ0KdmFyIF8xMT0zREFKUy5mb3JjZUFycmF5
KGFyZ3VtZW50cyk7PTBBPQ0KXzExLnNwbGljZShfMTEubGVuZ3RoLTEsMCwi
aGVpZ2h0Iik7PTBBPQ0KQUpTLnNldFN0eWxlLmFwcGx5KG51bGwsXzExKTs9
MEE9DQp9LF9nZXRSZWFsU2NvcGU6ZnVuY3Rpb24oZm4sXzEzKXs9MEE9DQpf
MTM9M0RBSlMuJEEoXzEzKTs9MEE9DQp2YXIgXzE0PTNEZm4uX2NzY29wZXx8
d2luZG93Oz0wQT0NCnJldHVybiBmdW5jdGlvbigpez0wQT0NCnZhciBfMTU9
M0RBSlMuJEZBKGFyZ3VtZW50cykuY29uY2F0KF8xMyk7PTBBPQ0KcmV0dXJu
IGZuLmFwcGx5KF8xNCxfMTUpOz0wQT0NCn07PTBBPQ0KfSxkb2N1bWVudElu
c2VydDpmdW5jdGlvbihlbG0pez0wQT0NCmlmKHR5cGVvZiAoZWxtKT0zRD0z
RCJzdHJpbmciKXs9MEE9DQplbG09M0RBSlMuSFRNTDJET00oZWxtKTs9MEE9
DQp9PTBBPQ0KZG9jdW1lbnQud3JpdGUoIjxzcGFuIGlkPTNEXCJkdW1teV9o
b2xkZXJcIj48L3NwYW4+Iik7PTBBPQ0KQUpTLnN3YXBET00oQUpTLiQoImR1
bW15X2hvbGRlciIpLGVsbSk7PTBBPQ0KfSxnZXRXaW5kb3dTaXplOmZ1bmN0
aW9uKGRvYyl7PTBBPQ0KZG9jPTNEZG9jfHxkb2N1bWVudDs9MEE9DQp2YXIg
XzE4LF8xOTs9MEE9DQppZihzZWxmLmlubmVySGVpZ2h0KXs9MEE9DQpfMTg9
M0RzZWxmLmlubmVyV2lkdGg7PTBBPQ0KXzE5PTNEc2VsZi5pbm5lckhlaWdo
dDs9MEE9DQp9ZWxzZXs9MEE9DQppZihkb2MuZG9jdW1lbnRFbGVtZW50JiZk
b2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCl7PTBBPQ0KXzE4PTNE
ZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDs9MEE9DQpfMTk9M0Rk
b2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDs9MEE9DQp9ZWxzZXs9
MEE9DQppZihkb2MuYm9keSl7PTBBPQ0KXzE4PTNEZG9jLmJvZHkuY2xpZW50
V2lkdGg7PTBBPQ0KXzE5PTNEZG9jLmJvZHkuY2xpZW50SGVpZ2h0Oz0wQT0N
Cn09MEE9DQp9PTBBPQ0KfT0wQT0NCnJldHVybiB7InciOl8xOCwiaCI6XzE5
fTs9MEE9DQp9LGZsYXR0ZW5MaXN0OmZ1bmN0aW9uKF8xYSl7PTBBPQ0KdmFy
IHI9M0RbXTs9MEE9DQp2YXIgXzFjPTNEZnVuY3Rpb24ocixsKXs9MEE9DQpB
SlMubWFwKGwsZnVuY3Rpb24obyl7PTBBPQ0KaWYobz0zRD0zRG51bGwpez0w
QT0NCn1lbHNlez0wQT0NCmlmKEFKUy5pc0FycmF5KG8pKXs9MEE9DQpfMWMo
cixvKTs9MEE9DQp9ZWxzZXs9MEE9DQpyLnB1c2gobyk7PTBBPQ0KfT0wQT0N
Cn09MEE9DQp9KTs9MEE9DQp9Oz0wQT0NCl8xYyhyLF8xYSk7PTBBPQ0KcmV0
dXJuIHI7PTBBPQ0KfSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKG9iail7PTBBPQ0K
cmV0dXJuICh0eXBlb2Ygb2JqPTNEPTNEImZ1bmN0aW9uIik7PTBBPQ0KfSxz
ZXRFdmVudEtleTpmdW5jdGlvbihlKXs9MEE9DQplLmtleT0zRGUua2V5Q29k
ZT9lLmtleUNvZGU6ZS5jaGFyQ29kZTs9MEE9DQppZih3aW5kb3cuZXZlbnQp
ez0wQT0NCmUuY3RybD0zRHdpbmRvdy5ldmVudC5jdHJsS2V5Oz0wQT0NCmUu
c2hpZnQ9M0R3aW5kb3cuZXZlbnQuc2hpZnRLZXk7PTBBPQ0KfWVsc2V7PTBB
PQ0KZS5jdHJsPTNEZS5jdHJsS2V5Oz0wQT0NCmUuc2hpZnQ9M0RlLnNoaWZ0
S2V5Oz0wQT0NCn09MEE9DQpzd2l0Y2goZS5rZXkpez0wQT0NCmNhc2UgNjMy
MzI6PTBBPQ0KZS5rZXk9M0QzODs9MEE9DQpicmVhazs9MEE9DQpjYXNlIDYz
MjMzOj0wQT0NCmUua2V5PTNENDA7PTBBPQ0KYnJlYWs7PTBBPQ0KY2FzZSA2
MzIzNTo9MEE9DQplLmtleT0zRDM5Oz0wQT0NCmJyZWFrOz0wQT0NCmNhc2Ug
NjMyMzQ6PTBBPQ0KZS5rZXk9M0QzNzs9MEE9DQpicmVhazs9MEE9DQp9PTBB
PQ0KfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKCl7PTBBPQ0KdmFyIF8yMj0z
REFKUy5mb3JjZUFycmF5KGFyZ3VtZW50cyk7PTBBPQ0KQUpTLm1hcChfMjIs
ZnVuY3Rpb24oZWxtKXs9MEE9DQpBSlMuc3dhcERPTShlbG0sbnVsbCk7PTBB
PQ0KfSk7PTBBPQ0KfSxfdW5sb2FkTGlzdGVuZXJzOmZ1bmN0aW9uKCl7PTBB
PQ0KaWYoQUpTLmxpc3RlbmVycyl7PTBBPQ0KQUpTLm1hcChBSlMubGlzdGVu
ZXJzLGZ1bmN0aW9uKGVsbSxfMjUsZm4pez0wQT0NCkFKUy5SRVYoZWxtLF8y
NSxmbik7PTBBPQ0KfSk7PTBBPQ0KfT0wQT0NCkFKUy5saXN0ZW5lcnM9M0Rb
XTs9MEE9DQp9LGpvaW46ZnVuY3Rpb24oXzI3LF8yOCl7PTBBPQ0KdHJ5ez0w
QT0NCnJldHVybiBfMjguam9pbihfMjcpOz0wQT0NCn09MEE9DQpjYXRjaChl
KXs9MEE9DQp2YXIgcj0zRF8yOFswXXx8IiI7PTBBPQ0KQUpTLm1hcChfMjgs
ZnVuY3Rpb24oZWxtKXs9MEE9DQpyKz0zRF8yNytlbG07PTBBPQ0KfSwxKTs9
MEE9DQpyZXR1cm4gcisiIjs9MEE9DQp9PTBBPQ0KfSxnZXRJbmRleDpmdW5j
dGlvbihlbG0sXzJjLF8yZCl7PTBBPQ0KZm9yKHZhciBpPTNEMDtpPF8yYy5s
ZW5ndGg7aSsrKXs9MEE9DQppZihfMmQmJl8yZChfMmNbaV0pfHxlbG09M0Q9
M0RfMmNbaV0pez0wQT0NCnJldHVybiBpOz0wQT0NCn09MEE9DQp9PTBBPQ0K
cmV0dXJuIC0xOz0wQT0NCn0saXNJbjpmdW5jdGlvbihlbG0sXzMwKXs9MEE9
DQp2YXIgaT0zREFKUy5nZXRJbmRleChlbG0sXzMwKTs9MEE9DQppZihpIT0z
RC0xKXs9MEE9DQpyZXR1cm4gdHJ1ZTs9MEE9DQp9ZWxzZXs9MEE9DQpyZXR1
cm4gZmFsc2U7PTBBPQ0KfT0wQT0NCn0saXNBcnJheTpmdW5jdGlvbihvYmop
ez0wQT0NCnJldHVybiBvYmogaW5zdGFuY2VvZiBBcnJheTs9MEE9DQp9LHNl
dExlZnQ6ZnVuY3Rpb24oKXs9MEE9DQp2YXIgXzMzPTNEQUpTLmZvcmNlQXJy
YXkoYXJndW1lbnRzKTs9MEE9DQpfMzMuc3BsaWNlKF8zMy5sZW5ndGgtMSww
LCJsZWZ0Iik7PTBBPQ0KQUpTLnNldFN0eWxlLmFwcGx5KG51bGwsXzMzKTs9
MEE9DQp9LGFwcGVuZENoaWxkTm9kZXM6ZnVuY3Rpb24oZWxtKXs9MEE9DQpp
Zihhcmd1bWVudHMubGVuZ3RoPj0zRDIpez0wQT0NCkFKUy5tYXAoYXJndW1l
bnRzLGZ1bmN0aW9uKG4pez0wQT0NCmlmKEFKUy5pc1N0cmluZyhuKSl7PTBB
PQ0Kbj0zREFKUy5UTihuKTs9MEE9DQp9PTBBPQ0KaWYoQUpTLmlzRGVmaW5l
ZChuKSl7PTBBPQ0KZWxtLmFwcGVuZENoaWxkKG4pOz0wQT0NCn09MEE9DQp9
LDEpOz0wQT0NCn09MEE9DQpyZXR1cm4gZWxtOz0wQT0NCn0sZ2V0RWxlbWVu
dHNCeVRhZ0FuZENsYXNzTmFtZTpmdW5jdGlvbihfMzYsXzM3LF8zOCxfMzkp
ez0wQT0NCnZhciBfM2E9M0RbXTs9MEE9DQppZighQUpTLmlzRGVmaW5lZChf
MzgpKXs9MEE9DQpfMzg9M0Rkb2N1bWVudDs9MEE9DQp9PTBBPQ0KaWYoIUFK
Uy5pc0RlZmluZWQoXzM2KSl7PTBBPQ0KXzM2PTNEIioiOz0wQT0NCn09MEE9
DQp2YXIgZWxzPTNEXzM4LmdldEVsZW1lbnRzQnlUYWdOYW1lKF8zNik7PTBB
PQ0KdmFyIF8zYz0zRGVscy5sZW5ndGg7PTBBPQ0KdmFyIF8zZD0zRG5ldyBS
ZWdFeHAoIihefFxccykiK18zNysiKFxcc3wkKSIpOz0wQT0NCmZvcihpPTNE
MCxqPTNEMDtpPF8zYztpKyspez0wQT0NCmlmKF8zZC50ZXN0KGVsc1tpXS5j
bGFzc05hbWUpfHxfMzc9M0Q9M0RudWxsKXs9MEE9DQpfM2Fbal09M0RlbHNb
aV07PTBBPQ0KaisrOz0wQT0NCn09MEE9DQp9PTBBPQ0KaWYoXzM5KXs9MEE9
DQpyZXR1cm4gXzNhWzBdOz0wQT0NCn1lbHNlez0wQT0NCnJldHVybiBfM2E7
PTBBPQ0KfT0wQT0NCn0saXNPcGVyYTpmdW5jdGlvbigpez0wQT0NCnJldHVy
biAobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yo
Im9wZXJhIikhPTNELTEpOz0wQT0NCn0saXNTdHJpbmc6ZnVuY3Rpb24ob2Jq
KXs9MEE9DQpyZXR1cm4gKHR5cGVvZiBvYmo9M0Q9M0Qic3RyaW5nIik7PTBB
PQ0KfSxoaWRlRWxlbWVudDpmdW5jdGlvbihlbG0pez0wQT0NCnZhciBfNDA9
M0RBSlMuZm9yY2VBcnJheShhcmd1bWVudHMpOz0wQT0NCkFKUy5tYXAoXzQw
LGZ1bmN0aW9uKGVsbSl7PTBBPQ0KZWxtLnN0eWxlLmRpc3BsYXk9M0Qibm9u
ZSI7PTBBPQ0KfSk7PTBBPQ0KfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKGVsbSxw
KXs9MEE9DQplbG0uc3R5bGUub3BhY2l0eT0zRHA7PTBBPQ0KZWxtLnN0eWxl
LmZpbHRlcj0zRCJhbHBoYShvcGFjaXR5PTNEIitwKjEwMCsiKSI7PTBBPQ0K
fSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oZWxtLF80NSl7PTBBPQ0KXzQ1LnBh
cmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsbSxfNDUpOz0wQT0NCnJldHVybiBl
bG07PTBBPQ0KfSxzZXRXaWR0aDpmdW5jdGlvbigpez0wQT0NCnZhciBfNDY9
M0RBSlMuZm9yY2VBcnJheShhcmd1bWVudHMpOz0wQT0NCl80Ni5zcGxpY2Uo
XzQ2Lmxlbmd0aC0xLDAsIndpZHRoIik7PTBBPQ0KQUpTLnNldFN0eWxlLmFw
cGx5KG51bGwsXzQ2KTs9MEE9DQp9LGNyZWF0ZUFycmF5OmZ1bmN0aW9uKHYp
ez0wQT0NCmlmKEFKUy5pc0FycmF5KHYpJiYhQUpTLmlzU3RyaW5nKHYpKXs9
MEE9DQpyZXR1cm4gdjs9MEE9DQp9ZWxzZXs9MEE9DQppZighdil7PTBBPQ0K
cmV0dXJuIFtdOz0wQT0NCn1lbHNlez0wQT0NCnJldHVybiBbdl07PTBBPQ0K
fT0wQT0NCn09MEE9DQp9LGlzRGljdDpmdW5jdGlvbihvKXs9MEE9DQp2YXIg
XzQ5PTNEU3RyaW5nKG8pOz0wQT0NCnJldHVybiBfNDkuaW5kZXhPZigiIE9i
amVjdCIpIT0zRC0xOz0wQT0NCn0saXNNb3ppbGxhOmZ1bmN0aW9uKCl7PTBB
PQ0KcmV0dXJuID0NCihuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNl
KCkuaW5kZXhPZigiZ2Vja28iKSE9M0QtMSYmbmF2aWdhdG9yLnByb2Q9DQp1
Y3RTdWI+PTNEMjAwMzAyMTApOz0wQT0NCn0scmVtb3ZlRXZlbnRMaXN0ZW5l
cjpmdW5jdGlvbihlbG0sXzRiLGZuLF80ZCl7PTBBPQ0KdmFyIF80ZT0zRCJh
anNsXyIrXzRiK2ZuOz0wQT0NCmlmKCFfNGQpez0wQT0NCl80ZD0zRGZhbHNl
Oz0wQT0NCn09MEE9DQpmbj0zRGVsbVtfNGVdfHxmbjs9MEE9DQppZihlbG1b
Im9uIitfNGJdPTNEPTNEZm4pez0wQT0NCmVsbVsib24iK180Yl09M0RlbG1b
XzRlKyJvbGQiXTs9MEE9DQp9PTBBPQ0KaWYoZWxtLnJlbW92ZUV2ZW50TGlz
dGVuZXIpez0wQT0NCmVsbS5yZW1vdmVFdmVudExpc3RlbmVyKF80Yixmbixf
NGQpOz0wQT0NCmlmKEFKUy5pc09wZXJhKCkpez0wQT0NCmVsbS5yZW1vdmVF
dmVudExpc3RlbmVyKF80YixmbiwhXzRkKTs9MEE9DQp9PTBBPQ0KfWVsc2V7
PTBBPQ0KaWYoZWxtLmRldGFjaEV2ZW50KXs9MEE9DQplbG0uZGV0YWNoRXZl
bnQoIm9uIitfNGIsZm4pOz0wQT0NCn09MEE9DQp9PTBBPQ0KfSxjYWxsTGF0
ZXI6ZnVuY3Rpb24oZm4sXzUwKXs9MEE9DQp2YXIgXzUxPTNEZnVuY3Rpb24o
KXs9MEE9DQpmbigpOz0wQT0NCn07PTBBPQ0Kd2luZG93LnNldFRpbWVvdXQo
XzUxLF81MCk7PTBBPQ0KfSxzZXRUb3A6ZnVuY3Rpb24oKXs9MEE9DQp2YXIg
XzUyPTNEQUpTLmZvcmNlQXJyYXkoYXJndW1lbnRzKTs9MEE9DQpfNTIuc3Bs
aWNlKF81Mi5sZW5ndGgtMSwwLCJ0b3AiKTs9MEE9DQpBSlMuc2V0U3R5bGUu
YXBwbHkobnVsbCxfNTIpOz0wQT0NCn0sX2NyZWF0ZURvbVNob3J0Y3V0czpm
dW5jdGlvbigpez0wQT0NCnZhciA9DQpfNTM9M0RbInVsIiwibGkiLCJ0ZCIs
InRyIiwidGgiLCJ0Ym9keSIsInRhYmxlIiwiaW5wdXQiLCJzcGFuIiwiYiIs
ImEiLCJkPQ0KaXYiLCJpbWciLCJidXR0b24iLCJoMSIsImgyIiwiaDMiLCJo
NCIsImg1IiwiaDYiLCJiciIsInRleHRhcmVhIiwiZm9ybSIsIj0NCnAiLCJz
ZWxlY3QiLCJvcHRpb24iLCJvcHRncm91cCIsImlmcmFtZSIsInNjcmlwdCIs
ImNlbnRlciIsImRsIiwiZHQiLCJkZCI9DQosInNtYWxsIiwicHJlIiwiaSJd
Oz0wQT0NCnZhciBfNTQ9M0RmdW5jdGlvbihlbG0pez0wQT0NCkFKU1tlbG0u
dG9VcHBlckNhc2UoKV09M0RmdW5jdGlvbigpez0wQT0NCnJldHVybiBBSlMu
Y3JlYXRlRE9NLmFwcGx5KG51bGwsW2VsbSxhcmd1bWVudHNdKTs9MEE9DQp9
Oz0wQT0NCn07PTBBPQ0KQUpTLm1hcChfNTMsXzU0KTs9MEE9DQpBSlMuVE49
M0RmdW5jdGlvbihfNTYpez0wQT0NCnJldHVybiBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShfNTYpOz0wQT0NCn07PTBBPQ0KfSxhZGRDYWxsYmFjazpmdW5j
dGlvbihmbil7PTBBPQ0KdGhpcy5jYWxsYmFja3MudW5zaGlmdChmbik7PTBB
PQ0KfSxiaW5kTWV0aG9kczpmdW5jdGlvbihfNTgpez0wQT0NCmZvcih2YXIg
ayBpbiBfNTgpez0wQT0NCnZhciBfNWE9M0RfNThba107PTBBPQ0KaWYodHlw
ZW9mIChfNWEpPTNEPTNEImZ1bmN0aW9uIil7PTBBPQ0KXzU4W2tdPTNEQUpT
LiRiKF81YSxfNTgpOz0wQT0NCn09MEE9DQp9PTBBPQ0KfSxwYXJ0aWFsOmZ1
bmN0aW9uKGZuKXs9MEE9DQp2YXIgXzVjPTNEQUpTLiRGQShhcmd1bWVudHMp
Oz0wQT0NCl81Yy5zaGlmdCgpOz0wQT0NCnJldHVybiBmdW5jdGlvbigpez0w
QT0NCl81Yz0zRF81Yy5jb25jYXQoQUpTLiRGQShhcmd1bWVudHMpKTs9MEE9
DQpyZXR1cm4gZm4uYXBwbHkod2luZG93LF81Yyk7PTBBPQ0KfTs9MEE9DQp9
LGlzTnVtYmVyOmZ1bmN0aW9uKG9iail7PTBBPQ0KcmV0dXJuICh0eXBlb2Yg
b2JqPTNEPTNEIm51bWJlciIpOz0wQT0NCn0sZ2V0Q3NzRGltOmZ1bmN0aW9u
KGRpbSl7PTBBPQ0KaWYoQUpTLmlzU3RyaW5nKGRpbSkpez0wQT0NCnJldHVy
biBkaW07PTBBPQ0KfWVsc2V7PTBBPQ0KcmV0dXJuIGRpbSsicHgiOz0wQT0N
Cn09MEE9DQp9LGlzSWU6ZnVuY3Rpb24oKXs9MEE9DQpyZXR1cm4gPQ0KKG5h
dmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJtc2ll
IikhPTNELTEmJm5hdmlnYXRvci51c2VyQT0NCmdlbnQudG9Mb3dlckNhc2Uo
KS5pbmRleE9mKCJvcGVyYSIpPTNEPTNELTEpOz0wQT0NCn0scmVtb3ZlQ2xh
c3M6ZnVuY3Rpb24oKXs9MEE9DQp2YXIgXzVmPTNEQUpTLmZvcmNlQXJyYXko
YXJndW1lbnRzKTs9MEE9DQp2YXIgY2xzPTNEXzVmLnBvcCgpOz0wQT0NCnZh
ciBfNjE9M0RmdW5jdGlvbihvKXs9MEE9DQpvLmNsYXNzTmFtZT0zRG8uY2xh
c3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cCgiXFxzPyIrY2xzLCJnIiksIiIp
Oz0wQT0NCn07PTBBPQ0KQUpTLm1hcChfNWYsZnVuY3Rpb24oZWxtKXs9MEE9
DQpfNjEoZWxtKTs9MEE9DQp9KTs9MEE9DQp9LHNldEhUTUw6ZnVuY3Rpb24o
ZWxtLF82NSl7PTBBPQ0KZWxtLmlubmVySFRNTD0zRF82NTs9MEE9DQpyZXR1
cm4gZWxtOz0wQT0NCn0sbWFwOmZ1bmN0aW9uKF82NixmbixfNjgsXzY5KXs9
MEE9DQp2YXIgaT0zRDAsbD0zRF82Ni5sZW5ndGg7PTBBPQ0KaWYoXzY4KXs9
MEE9DQppPTNEXzY4Oz0wQT0NCn09MEE9DQppZihfNjkpez0wQT0NCmw9M0Rf
Njk7PTBBPQ0KfT0wQT0NCmZvcihpO2k8bDtpKyspez0wQT0NCnZhciB2YWw9
M0RmbihfNjZbaV0saSk7PTBBPQ0KaWYodmFsIT0zRHVuZGVmaW5lZCl7PTBB
PQ0KcmV0dXJuIHZhbDs9MEE9DQp9PTBBPQ0KfT0wQT0NCn0sYWRkRXZlbnRM
aXN0ZW5lcjpmdW5jdGlvbihlbG0sXzZlLGZuLF83MCxfNzEpez0wQT0NCnZh
ciBfNzI9M0QiYWpzbF8iK182ZStmbjs9MEE9DQppZighXzcxKXs9MEE9DQpf
NzE9M0RmYWxzZTs9MEE9DQp9PTBBPQ0KQUpTLmxpc3RlbmVycz0zREFKUy4k
QShBSlMubGlzdGVuZXJzKTs9MEE9DQppZihBSlMuaXNJbihfNmUsWyJrZXlw
cmVzcyIsImtleWRvd24iLCJrZXl1cCIsImNsaWNrIl0pKXs9MEE9DQp2YXIg
XzczPTNEZm47PTBBPQ0KZm49M0RmdW5jdGlvbihlKXs9MEE9DQpBSlMuc2V0
RXZlbnRLZXkoZSk7PTBBPQ0KcmV0dXJuIF83My5hcHBseSh3aW5kb3csYXJn
dW1lbnRzKTs9MEE9DQp9Oz0wQT0NCn09MEE9DQp2YXIgXzc1PTNEQUpTLmlz
SW4oXzZlLFsic3VibWl0IiwibG9hZCIsInNjcm9sbCIsInJlc2l6ZSJdKTs9
MEE9DQp2YXIgXzc2PTNEQUpTLiRBKGVsbSk7PTBBPQ0KQUpTLm1hcChfNzYs
ZnVuY3Rpb24oXzc3KXs9MEE9DQppZihfNzApez0wQT0NCnZhciBfNzg9M0Rm
bjs9MEE9DQpmbj0zRGZ1bmN0aW9uKGUpez0wQT0NCkFKUy5SRVYoXzc3LF82
ZSxmbik7PTBBPQ0KcmV0dXJuIF83OC5hcHBseSh3aW5kb3csYXJndW1lbnRz
KTs9MEE9DQp9Oz0wQT0NCn09MEE9DQppZihfNzUpez0wQT0NCnZhciBfN2E9
M0RfNzdbIm9uIitfNmVdOz0wQT0NCnZhciBfN2I9M0RmdW5jdGlvbigpez0w
QT0NCmlmKF83YSl7PTBBPQ0KZm4oYXJndW1lbnRzKTs9MEE9DQpyZXR1cm4g
XzdhKGFyZ3VtZW50cyk7PTBBPQ0KfWVsc2V7PTBBPQ0KcmV0dXJuIGZuKGFy
Z3VtZW50cyk7PTBBPQ0KfT0wQT0NCn07PTBBPQ0KXzc3W183Ml09M0RfN2I7
PTBBPQ0KXzc3W183Misib2xkIl09M0RfN2E7PTBBPQ0KZWxtWyJvbiIrXzZl
XT0zRF83Yjs9MEE9DQp9ZWxzZXs9MEE9DQpfNzdbXzcyXT0zRGZuOz0wQT0N
CmlmKF83Ny5hdHRhY2hFdmVudCl7PTBBPQ0KXzc3LmF0dGFjaEV2ZW50KCJv
biIrXzZlLGZuKTs9MEE9DQp9ZWxzZXs9MEE9DQppZihfNzcuYWRkRXZlbnRM
aXN0ZW5lcil7PTBBPQ0KXzc3LmFkZEV2ZW50TGlzdGVuZXIoXzZlLGZuLF83
MSk7PTBBPQ0KfT0wQT0NCn09MEE9DQpBSlMubGlzdGVuZXJzLnB1c2goW183
NyxfNmUsZm5dKTs9MEE9DQp9PTBBPQ0KfSk7PTBBPQ0KfSxwcmVsb2FkSW1h
Z2VzOmZ1bmN0aW9uKCl7PTBBPQ0KQUpTLkFFVih3aW5kb3csImxvYWQiLEFK
Uy4kcChmdW5jdGlvbihfN2Mpez0wQT0NCkFKUy5tYXAoXzdjLGZ1bmN0aW9u
KHNyYyl7PTBBPQ0KdmFyIHBpYz0zRG5ldyBJbWFnZSgpOz0wQT0NCnBpYy5z
cmM9M0RzcmM7PTBBPQ0KfSk7PTBBPQ0KfSxhcmd1bWVudHMpKTs9MEE9DQp9
LGZvcmNlQXJyYXk6ZnVuY3Rpb24oXzdmKXs9MEE9DQp2YXIgcj0zRFtdOz0w
QT0NCkFKUy5tYXAoXzdmLGZ1bmN0aW9uKGVsbSl7PTBBPQ0Kci5wdXNoKGVs
bSk7PTBBPQ0KfSk7PTBBPQ0KcmV0dXJuIHI7PTBBPQ0KfSx1cGRhdGU6ZnVu
Y3Rpb24obDEsbDIpez0wQT0NCmZvcih2YXIgaSBpbiBsMil7PTBBPQ0KbDFb
aV09M0RsMltpXTs9MEE9DQp9PTBBPQ0KcmV0dXJuIGwxOz0wQT0NCn0sZ2V0
Qm9keTpmdW5jdGlvbigpez0wQT0NCnJldHVybiBBSlMuJGJ5dGMoImJvZHki
KVswXTs9MEE9DQp9LEhUTUwyRE9NOmZ1bmN0aW9uKF84NSxfODYpez0wQT0N
CnZhciBkPTNEQUpTLkRJVigpOz0wQT0NCmQuaW5uZXJIVE1MPTNEXzg1Oz0w
QT0NCmlmKF84Nil7PTBBPQ0KcmV0dXJuIGQuY2hpbGROb2Rlc1swXTs9MEE9
DQp9ZWxzZXs9MEE9DQpyZXR1cm4gZDs9MEE9DQp9PTBBPQ0KfSxnZXRFbGVt
ZW50OmZ1bmN0aW9uKGlkKXs9MEE9DQppZihBSlMuaXNTdHJpbmcoaWQpfHxB
SlMuaXNOdW1iZXIoaWQpKXs9MEE9DQpyZXR1cm4gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoaWQpOz0wQT0NCn1lbHNlez0wQT0NCnJldHVybiBpZDs9MEE9
DQp9PTBBPQ0KfSxzaG93RWxlbWVudDpmdW5jdGlvbigpez0wQT0NCnZhciBf
ODk9M0RBSlMuZm9yY2VBcnJheShhcmd1bWVudHMpOz0wQT0NCkFKUy5tYXAo
Xzg5LGZ1bmN0aW9uKGVsbSl7PTBBPQ0KZWxtLnN0eWxlLmRpc3BsYXk9M0Qi
Ijs9MEE9DQp9KTs9MEE9DQp9LGJpbmQ6ZnVuY3Rpb24oZm4sXzhjLF84ZCl7
PTBBPQ0KZm4uX2NzY29wZT0zRF84Yzs9MEE9DQpyZXR1cm4gQUpTLl9nZXRS
ZWFsU2NvcGUoZm4sXzhkKTs9MEE9DQp9LGNyZWF0ZURPTTpmdW5jdGlvbihf
OGUsXzhmKXs9MEE9DQp2YXIgaT0zRDAsXzkxOz0wQT0NCnZhciBlbG09M0Rk
b2N1bWVudC5jcmVhdGVFbGVtZW50KF84ZSk7PTBBPQ0KdmFyIF85Mz0zRF84
ZlswXTs9MEE9DQppZihBSlMuaXNEaWN0KF84ZltpXSkpez0wQT0NCmZvcihr
IGluIF85Myl7PTBBPQ0KXzkxPTNEXzkzW2tdOz0wQT0NCmlmKGs9M0Q9M0Qi
c3R5bGUifHxrPTNEPTNEInMiKXs9MEE9DQplbG0uc3R5bGUuY3NzVGV4dD0z
RF85MTs9MEE9DQp9ZWxzZXs9MEE9DQppZihrPTNEPTNEImMifHxrPTNEPTNE
ImNsYXNzInx8az0zRD0zRCJjbGFzc05hbWUiKXs9MEE9DQplbG0uY2xhc3NO
YW1lPTNEXzkxOz0wQT0NCn1lbHNlez0wQT0NCmVsbS5zZXRBdHRyaWJ1dGUo
ayxfOTEpOz0wQT0NCn09MEE9DQp9PTBBPQ0KfT0wQT0NCmkrKzs9MEE9DQp9
PTBBPQ0KaWYoXzkzPTNEPTNEbnVsbCl7PTBBPQ0KaT0zRDE7PTBBPQ0KfT0w
QT0NCmZvcih2YXIgaj0zRGk7ajxfOGYubGVuZ3RoO2orKyl7PTBBPQ0KdmFy
IF85MT0zRF84ZltqXTs9MEE9DQppZihfOTEpez0wQT0NCnZhciBfOTU9M0R0
eXBlb2YgKF85MSk7PTBBPQ0KaWYoXzk1PTNEPTNEInN0cmluZyJ8fF85NT0z
RD0zRCJudW1iZXIiKXs9MEE9DQpfOTE9M0RBSlMuVE4oXzkxKTs9MEE9DQp9
PTBBPQ0KZWxtLmFwcGVuZENoaWxkKF85MSk7PTBBPQ0KfT0wQT0NCn09MEE9
DQpyZXR1cm4gZWxtOz0wQT0NCn0sc3dhcERPTTpmdW5jdGlvbihfOTYsc3Jj
KXs9MEE9DQpfOTY9M0RBSlMuZ2V0RWxlbWVudChfOTYpOz0wQT0NCnZhciBf
OTg9M0RfOTYucGFyZW50Tm9kZTs9MEE9DQppZihzcmMpez0wQT0NCnNyYz0z
REFKUy5nZXRFbGVtZW50KHNyYyk7PTBBPQ0KXzk4LnJlcGxhY2VDaGlsZChz
cmMsXzk2KTs9MEE9DQp9ZWxzZXs9MEE9DQpfOTgucmVtb3ZlQ2hpbGQoXzk2
KTs9MEE9DQp9PTBBPQ0KcmV0dXJuIHNyYzs9MEE9DQp9LGlzRGVmaW5lZDpm
dW5jdGlvbihvKXs9MEE9DQpyZXR1cm4gKG8hPTNEInVuZGVmaW5lZCImJm8h
PTNEbnVsbCk7PTBBPQ0KfX07PTBBPQ0KQUpTLiQ9M0RBSlMuZ2V0RWxlbWVu
dDs9MEE9DQpBSlMuJCQ9M0RBSlMuZ2V0RWxlbWVudHM7PTBBPQ0KQUpTLiRm
PTNEQUpTLmdldEZvcm1FbGVtZW50Oz0wQT0NCkFKUy4kcD0zREFKUy5wYXJ0
aWFsOz0wQT0NCkFKUy4kYj0zREFKUy5iaW5kOz0wQT0NCkFKUy4kQT0zREFK
Uy5jcmVhdGVBcnJheTs9MEE9DQpBSlMuREk9M0RBSlMuZG9jdW1lbnRJbnNl
cnQ7PTBBPQ0KQUpTLkFDTj0zREFKUy5hcHBlbmRDaGlsZE5vZGVzOz0wQT0N
CkFKUy5SQ049M0RBSlMucmVwbGFjZUNoaWxkTm9kZXM7PTBBPQ0KQUpTLkFF
Vj0zREFKUy5hZGRFdmVudExpc3RlbmVyOz0wQT0NCkFKUy5SRVY9M0RBSlMu
cmVtb3ZlRXZlbnRMaXN0ZW5lcjs9MEE9DQpBSlMuJGJ5dGM9M0RBSlMuZ2V0
RWxlbWVudHNCeVRhZ0FuZENsYXNzTmFtZTs9MEE9DQpBSlMuJEFQPTNEQUpT
LmFic29sdXRlUG9zaXRpb247PTBBPQ0KQUpTLiRGQT0zREFKUy5mb3JjZUFy
cmF5Oz0wQT0NCkFKUy5hZGRFdmVudExpc3RlbmVyKHdpbmRvdywidW5sb2Fk
IixBSlMuX3VubG9hZExpc3RlbmVycyk7PTBBPQ0KQUpTLl9jcmVhdGVEb21T
aG9ydGN1dHMoKTs9MEE9DQpBSlMuQ2xhc3M9M0RmdW5jdGlvbihfOWEpez0w
QT0NCnZhciBmbj0zRGZ1bmN0aW9uKCl7PTBBPQ0KaWYoYXJndW1lbnRzWzBd
IT0zRCJub19pbml0Iil7PTBBPQ0KcmV0dXJuIHRoaXMuaW5pdC5hcHBseSh0
aGlzLGFyZ3VtZW50cyk7PTBBPQ0KfT0wQT0NCn07PTBBPQ0KZm4ucHJvdG90
eXBlPTNEXzlhOz0wQT0NCkFKUy51cGRhdGUoZm4sQUpTLkNsYXNzLnByb3Rv
dHlwZSk7PTBBPQ0KcmV0dXJuIGZuOz0wQT0NCn07PTBBPQ0KQUpTLkNsYXNz
LnByb3RvdHlwZT0zRHtleHRlbmQ6ZnVuY3Rpb24oXzljKXs9MEE9DQp2YXIg
XzlkPTNEbmV3IHRoaXMoIm5vX2luaXQiKTs9MEE9DQpmb3IoayBpbiBfOWMp
ez0wQT0NCnZhciBfOWU9M0RfOWRba107PTBBPQ0KdmFyIGN1cj0zRF85Y1tr
XTs9MEE9DQppZihfOWUmJl85ZSE9M0RjdXImJnR5cGVvZiBjdXI9M0Q9M0Qi
ZnVuY3Rpb24iKXs9MEE9DQpjdXI9M0R0aGlzLl9wYXJlbnRpemUoY3VyLF85
ZSk7PTBBPQ0KfT0wQT0NCl85ZFtrXT0zRGN1cjs9MEE9DQp9PTBBPQ0KcmV0
dXJuIG5ldyBBSlMuQ2xhc3MoXzlkKTs9MEE9DQp9LGltcGxlbWVudDpmdW5j
dGlvbihfYTApez0wQT0NCkFKUy51cGRhdGUodGhpcy5wcm90b3R5cGUsX2Ew
KTs9MEE9DQp9LF9wYXJlbnRpemU6ZnVuY3Rpb24oY3VyLF9hMil7PTBBPQ0K
cmV0dXJuIGZ1bmN0aW9uKCl7PTBBPQ0KdGhpcy5wYXJlbnQ9M0RfYTI7PTBB
PQ0KcmV0dXJuIGN1ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7PTBBPQ0KfTs9
MEE9DQp9fTs9MEE9DQpzY3JpcHRfbG9hZGVkPTNEdHJ1ZTs9MEE9DQo9MEE9
DQo9MEE9DQpzY3JpcHRfbG9hZGVkPTNEdHJ1ZTsNCi0tLS0tLT1fTmV4dFBh
cnRfMDAwXzAwMDBfMDFDQ0VDNzguQ0VCNTk4QTANCkNvbnRlbnQtVHlwZTog
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQpDb250ZW50LVRyYW5zZmVyLUVu
Y29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlDQpDb250ZW50LUxvY2F0aW9uOiBo
dHRwOi8vd3d3LmNhcnRhc2kuaXQvZ3JleWJveC9BSlNfZnguanMNCg0KQUpT
LmZ4PTNEe19zaGFkZXM6ezA6ImZmZmZmZiIsMToiZmZmZmVlIiwyOiJmZmZm
ZGQiLDM6ImZmZmZjYyIsNDoiZmZmZmJiIj0NCiw1OiJmZmZmYWEiLDY6ImZm
ZmY5OSJ9LGhpZ2hsaWdodDpmdW5jdGlvbihfMSxfMil7PTBBPQ0KdmFyIF8z
PTNEbmV3IEFKUy5meC5CYXNlKCk7PTBBPQ0KXzMuZWxtPTNEQUpTLiQoXzEp
Oz0wQT0NCl8zLm9wdGlvbnMuZHVyYXRpb249M0Q2MDA7PTBBPQ0KXzMuc2V0
T3B0aW9ucyhfMik7PTBBPQ0KQUpTLnVwZGF0ZShfMyx7aW5jcmVhc2U6ZnVu
Y3Rpb24oKXs9MEE9DQppZih0aGlzLm5vdz0zRD0zRDcpez0wQT0NCl8xLnN0
eWxlLmJhY2tncm91bmRDb2xvcj0zRCIjZmZmIjs9MEE9DQp9ZWxzZXs9MEE9
DQpfMS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9M0QiIyIrQUpTLmZ4Ll9zaGFk
ZXNbTWF0aC5mbG9vcih0aGlzLm5vdyldOz0wQT0NCn09MEE9DQp9fSk7PTBB
PQ0KcmV0dXJuIF8zLmN1c3RvbSg2LDApOz0wQT0NCn0sZmFkZUluOmZ1bmN0
aW9uKF80LF81KXs9MEE9DQpfNT0zRF81fHx7fTs9MEE9DQppZighXzUuZnJv
bSl7PTBBPQ0KXzUuZnJvbT0zRDA7PTBBPQ0KQUpTLnNldE9wYWNpdHkoXzQs
MCk7PTBBPQ0KfT0wQT0NCmlmKCFfNS50byl7PTBBPQ0KXzUudG89M0QxOz0w
QT0NCn09MEE9DQp2YXIgcz0zRG5ldyBBSlMuZnguU3R5bGUoXzQsIm9wYWNp
dHkiLF81KTs9MEE9DQpyZXR1cm4gcy5jdXN0b20oXzUuZnJvbSxfNS50byk7
PTBBPQ0KfSxmYWRlT3V0OmZ1bmN0aW9uKF83LF84KXs9MEE9DQpfOD0zRF84
fHx7fTs9MEE9DQppZighXzguZnJvbSl7PTBBPQ0KXzguZnJvbT0zRDE7PTBB
PQ0KfT0wQT0NCmlmKCFfOC50byl7PTBBPQ0KXzgudG89M0QwOz0wQT0NCn09
MEE9DQpfOC5kdXJhdGlvbj0zRDMwMDs9MEE9DQp2YXIgcz0zRG5ldyBBSlMu
ZnguU3R5bGUoXzcsIm9wYWNpdHkiLF84KTs9MEE9DQpyZXR1cm4gcy5jdXN0
b20oXzguZnJvbSxfOC50byk7PTBBPQ0KfSxzZXRXaWR0aDpmdW5jdGlvbihf
YSxfYil7PTBBPQ0KdmFyIHM9M0RuZXcgQUpTLmZ4LlN0eWxlKF9hLCJ3aWR0
aCIsX2IpOz0wQT0NCnJldHVybiBzLmN1c3RvbShfYi5mcm9tLF9iLnRvKTs9
MEE9DQp9LHNldEhlaWdodDpmdW5jdGlvbihfZCxfZSl7PTBBPQ0KdmFyIHM9
M0RuZXcgQUpTLmZ4LlN0eWxlKF9kLCJoZWlnaHQiLF9lKTs9MEE9DQpyZXR1
cm4gcy5jdXN0b20oX2UuZnJvbSxfZS50byk7PTBBPQ0KfX07PTBBPQ0KQUpT
LmZ4LkJhc2U9M0RuZXcgQUpTLkNsYXNzKHtpbml0OmZ1bmN0aW9uKF8xMCl7
PTBBPQ0KdGhpcy5vcHRpb25zPTNEe29uU3RhcnQ6ZnVuY3Rpb24oKXs9MEE9
DQp9LG9uQ29tcGxldGU6ZnVuY3Rpb24oKXs9MEE9DQp9LHRyYW5zaXRpb246
QUpTLmZ4LlRyYW5zaXRpb25zLnNpbmVJbk91dCxkdXJhdGlvbjo1MDAsd2Fp
dDp0cnVlLGZwczo1MH07PTBBPQ0KQUpTLnVwZGF0ZSh0aGlzLm9wdGlvbnMs
XzEwKTs9MEE9DQpBSlMuYmluZE1ldGhvZHModGhpcyk7PTBBPQ0KfSxzZXRP
cHRpb25zOmZ1bmN0aW9uKF8xMSl7PTBBPQ0KQUpTLnVwZGF0ZSh0aGlzLm9w
dGlvbnMsXzExKTs9MEE9DQp9LHN0ZXA6ZnVuY3Rpb24oKXs9MEE9DQp2YXIg
XzEyPTNEbmV3IERhdGUoKS5nZXRUaW1lKCk7PTBBPQ0KaWYoXzEyPHRoaXMu
dGltZSt0aGlzLm9wdGlvbnMuZHVyYXRpb24pez0wQT0NCnRoaXMuY1RpbWU9
M0RfMTItdGhpcy50aW1lOz0wQT0NCnRoaXMuc2V0Tm93KCk7PTBBPQ0KfWVs
c2V7PTBBPQ0Kc2V0VGltZW91dChBSlMuJGIodGhpcy5vcHRpb25zLm9uQ29t
cGxldGUsdGhpcyxbdGhpcy5lbG1dKSwxMCk7PTBBPQ0KdGhpcy5jbGVhclRp
bWVyKCk7PTBBPQ0KdGhpcy5ub3c9M0R0aGlzLnRvOz0wQT0NCn09MEE9DQp0
aGlzLmluY3JlYXNlKCk7PTBBPQ0KfSxzZXROb3c6ZnVuY3Rpb24oKXs9MEE9
DQp0aGlzLm5vdz0zRHRoaXMuY29tcHV0ZSh0aGlzLmZyb20sdGhpcy50byk7
PTBBPQ0KfSxjb21wdXRlOmZ1bmN0aW9uKF8xMyx0byl7PTBBPQ0KdmFyIF8x
NT0zRHRvLV8xMzs9MEE9DQpyZXR1cm4gdGhpcy5vcHRpb25zLnRyYW5zaXRp
b24odGhpcy5jVGltZSxfMTMsXzE1LHRoaXMub3B0aW9ucy5kdXJhdGlvbik7
PTBBPQ0KfSxjbGVhclRpbWVyOmZ1bmN0aW9uKCl7PTBBPQ0KY2xlYXJJbnRl
cnZhbCh0aGlzLnRpbWVyKTs9MEE9DQp0aGlzLnRpbWVyPTNEbnVsbDs9MEE9
DQpyZXR1cm4gdGhpczs9MEE9DQp9LF9zdGFydDpmdW5jdGlvbihfMTYsdG8p
ez0wQT0NCmlmKCF0aGlzLm9wdGlvbnMud2FpdCl7PTBBPQ0KdGhpcy5jbGVh
clRpbWVyKCk7PTBBPQ0KfT0wQT0NCmlmKHRoaXMudGltZXIpez0wQT0NCnJl
dHVybjs9MEE9DQp9PTBBPQ0Kc2V0VGltZW91dChBSlMuJHAodGhpcy5vcHRp
b25zLm9uU3RhcnQsdGhpcy5lbG0pLDEwKTs9MEE9DQp0aGlzLmZyb209M0Rf
MTY7PTBBPQ0KdGhpcy50bz0zRHRvOz0wQT0NCnRoaXMudGltZT0zRG5ldyBE
YXRlKCkuZ2V0VGltZSgpOz0wQT0NCnRoaXMudGltZXI9M0RzZXRJbnRlcnZh
bCh0aGlzLnN0ZXAsTWF0aC5yb3VuZCgxMDAwL3RoaXMub3B0aW9ucy5mcHMp
KTs9MEE9DQpyZXR1cm4gdGhpczs9MEE9DQp9LGN1c3RvbTpmdW5jdGlvbihf
MTgsdG8pez0wQT0NCnJldHVybiB0aGlzLl9zdGFydChfMTgsdG8pOz0wQT0N
Cn0sc2V0OmZ1bmN0aW9uKHRvKXs9MEE9DQp0aGlzLm5vdz0zRHRvOz0wQT0N
CnRoaXMuaW5jcmVhc2UoKTs9MEE9DQpyZXR1cm4gdGhpczs9MEE9DQp9LHNl
dFN0eWxlOmZ1bmN0aW9uKGVsbSxfMWMsdmFsKXs9MEE9DQppZih0aGlzLnBy
b3BlcnR5PTNEPTNEIm9wYWNpdHkiKXs9MEE9DQpBSlMuc2V0T3BhY2l0eShl
bG0sdmFsKTs9MEE9DQp9ZWxzZXs9MEE9DQpBSlMuc2V0U3R5bGUoZWxtLF8x
Yyx2YWwpOz0wQT0NCn09MEE9DQp9fSk7PTBBPQ0KQUpTLmZ4LlN0eWxlPTNE
QUpTLmZ4LkJhc2UuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGVsbSxfMWYsXzIw
KXs9MEE9DQp0aGlzLnBhcmVudCgpOz0wQT0NCnRoaXMuZWxtPTNEZWxtOz0w
QT0NCnRoaXMuc2V0T3B0aW9ucyhfMjApOz0wQT0NCnRoaXMucHJvcGVydHk9
M0RfMWY7PTBBPQ0KfSxpbmNyZWFzZTpmdW5jdGlvbigpez0wQT0NCnRoaXMu
c2V0U3R5bGUodGhpcy5lbG0sdGhpcy5wcm9wZXJ0eSx0aGlzLm5vdyk7PTBB
PQ0KfX0pOz0wQT0NCkFKUy5meC5TdHlsZXM9M0RBSlMuZnguQmFzZS5leHRl
bmQoe2luaXQ6ZnVuY3Rpb24oZWxtLF8yMil7PTBBPQ0KdGhpcy5wYXJlbnQo
KTs9MEE9DQp0aGlzLmVsbT0zREFKUy4kKGVsbSk7PTBBPQ0KdGhpcy5zZXRP
cHRpb25zKF8yMik7PTBBPQ0KdGhpcy5ub3c9M0R7fTs9MEE9DQp9LHNldE5v
dzpmdW5jdGlvbigpez0wQT0NCmZvcihwIGluIHRoaXMuZnJvbSl7PTBBPQ0K
dGhpcy5ub3dbcF09M0R0aGlzLmNvbXB1dGUodGhpcy5mcm9tW3BdLHRoaXMu
dG9bcF0pOz0wQT0NCn09MEE9DQp9LGN1c3RvbTpmdW5jdGlvbihvYmopez0w
QT0NCmlmKHRoaXMudGltZXImJnRoaXMub3B0aW9ucy53YWl0KXs9MEE9DQpy
ZXR1cm47PTBBPQ0KfT0wQT0NCnZhciBfMjQ9M0R7fTs9MEE9DQp2YXIgdG89
M0R7fTs9MEE9DQpmb3IocCBpbiBvYmopez0wQT0NCl8yNFtwXT0zRG9ialtw
XVswXTs9MEE9DQp0b1twXT0zRG9ialtwXVsxXTs9MEE9DQp9PTBBPQ0KcmV0
dXJuIHRoaXMuX3N0YXJ0KF8yNCx0byk7PTBBPQ0KfSxpbmNyZWFzZTpmdW5j
dGlvbigpez0wQT0NCmZvcih2YXIgcCBpbiB0aGlzLm5vdyl7PTBBPQ0KdGhp
cy5zZXRTdHlsZSh0aGlzLmVsbSxwLHRoaXMubm93W3BdKTs9MEE9DQp9PTBB
PQ0KfX0pOz0wQT0NCkFKUy5meC5UcmFuc2l0aW9ucz0zRHtsaW5lYXI6ZnVu
Y3Rpb24odCxiLGMsZCl7PTBBPQ0KcmV0dXJuIGMqdC9kK2I7PTBBPQ0KfSxz
aW5lSW5PdXQ6ZnVuY3Rpb24odCxiLGMsZCl7PTBBPQ0KcmV0dXJuIC1jLzIq
KE1hdGguY29zKE1hdGguUEkqdC9kKS0xKStiOz0wQT0NCn19Oz0wQT0NCnNj
cmlwdF9sb2FkZWQ9M0R0cnVlOz0wQT0NCj0wQT0NCj0wQT0NCnNjcmlwdF9s
b2FkZWQ9M0R0cnVlOw0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUND
RUM3OC5DRUI1OThBMA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0NCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1w
cmludGFibGUNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly93d3cuY2FydGFz
aS5pdC9ncmV5Ym94L2diX3NjcmlwdHMuanMNCg0KdmFyIEdCX0NVUlJFTlQ9
M0RudWxsOw0KR0JfaGlkZT0zRGZ1bmN0aW9uKGNiKXsNCkdCX0NVUlJFTlQu
aGlkZShjYik7DQp9Ow0KR3JleUJveD0zRG5ldyBBSlMuQ2xhc3Moe2luaXQ6
ZnVuY3Rpb24oXzIpew0KdGhpcy51c2VfZng9M0RBSlMuZng7DQp0aGlzLnR5
cGU9M0QicGFnZSI7DQp0aGlzLm92ZXJsYXlfY2xpY2tfY2xvc2U9M0RmYWxz
ZTsNCnRoaXMuc2FsdD0zRDA7DQp0aGlzLnJvb3RfZGlyPTNER0JfUk9PVF9E
SVI7DQp0aGlzLmNhbGxiYWNrX2Zucz0zRFtdOw0KdGhpcy5yZWxvYWRfb25f
Y2xvc2U9M0RmYWxzZTsNCnRoaXMuc3JjX2xvYWRlcj0zRHRoaXMucm9vdF9k
aXIrImxvYWRlcl9mcmFtZS5odG1sIjsNCnZhciBfMz0zRHdpbmRvdy5sb2Nh
dGlvbi5ob3N0bmFtZS5pbmRleE9mKCJ3d3ciKTsNCnZhciBfND0zRHRoaXMu
c3JjX2xvYWRlci5pbmRleE9mKCJ3d3ciKTsNCmlmKF8zIT0zRC0xJiZfND0z
RD0zRC0xKXsNCnRoaXMuc3JjX2xvYWRlcj0zRHRoaXMuc3JjX2xvYWRlci5y
ZXBsYWNlKCI6Ly8iLCI6Ly93d3cuIik7DQp9DQppZihfMz0zRD0zRC0xJiZf
NCE9M0QtMSl7DQp0aGlzLnNyY19sb2FkZXI9M0R0aGlzLnNyY19sb2FkZXIu
cmVwbGFjZSgiOi8vd3d3LiIsIjovLyIpOw0KfQ0KdGhpcy5zaG93X2xvYWRp
bmc9M0R0cnVlOw0KQUpTLnVwZGF0ZSh0aGlzLF8yKTsNCn0sYWRkQ2FsbGJh
Y2s6ZnVuY3Rpb24oZm4pew0KaWYoZm4pew0KdGhpcy5jYWxsYmFja19mbnMu
cHVzaChmbik7DQp9DQp9LHNob3c6ZnVuY3Rpb24oXzYpew0KR0JfQ1VSUkVO
VD0zRHRoaXM7DQp0aGlzLnVybD0zRF82Ow0KdmFyIF83PTNEW0FKUy4kYnl0
Yygib2JqZWN0IiksQUpTLiRieXRjKCJzZWxlY3QiKV07DQpBSlMubWFwKEFK
Uy5mbGF0dGVuTGlzdChfNyksZnVuY3Rpb24oXzgpew0KXzguc3R5bGUudmlz
aWJpbGl0eT0zRCJoaWRkZW4iOw0KfSk7DQp0aGlzLmNyZWF0ZUVsZW1lbnRz
KCk7DQpyZXR1cm4gZmFsc2U7DQp9LGhpZGU6ZnVuY3Rpb24oY2Ipew0KdmFy
IG1lPTNEdGhpczsNCkFKUy5jYWxsTGF0ZXIoZnVuY3Rpb24oKXsNCnZhciBf
Yj0zRG1lLmNhbGxiYWNrX2ZuczsNCmlmKF9iIT0zRFtdKXsNCkFKUy5tYXAo
X2IsZnVuY3Rpb24oZm4pew0KZm4oKTsNCn0pOw0KfQ0KbWUub25IaWRlKCk7
DQppZihtZS51c2VfZngpew0KdmFyIF9kPTNEbWUub3ZlcmxheTsNCkFKUy5m
eC5mYWRlT3V0KG1lLm92ZXJsYXkse29uQ29tcGxldGU6ZnVuY3Rpb24oKXsN
CkFKUy5yZW1vdmVFbGVtZW50KF9kKTsNCl9kPTNEbnVsbDsNCn0sZHVyYXRp
b246MzAwfSk7DQpBSlMucmVtb3ZlRWxlbWVudChtZS5nX3dpbmRvdyk7DQp9
ZWxzZXsNCkFKUy5yZW1vdmVFbGVtZW50KG1lLmdfd2luZG93LG1lLm92ZXJs
YXkpOw0KfQ0KbWUucmVtb3ZlRnJhbWUoKTsNCkFKUy5SRVYod2luZG93LCJz
Y3JvbGwiLF9HQl9zZXRPdmVybGF5RGltZW5zaW9uKTsNCkFKUy5SRVYod2lu
ZG93LCJyZXNpemUiLF9HQl91cGRhdGUpOw0KdmFyIF9lPTNEW0FKUy4kYnl0
Yygib2JqZWN0IiksQUpTLiRieXRjKCJzZWxlY3QiKV07DQpBSlMubWFwKEFK
Uy5mbGF0dGVuTGlzdChfZSksZnVuY3Rpb24oX2Ypew0KX2Yuc3R5bGUudmlz
aWJpbGl0eT0zRCJ2aXNpYmxlIjsNCn0pOw0KR0JfQ1VSUkVOVD0zRG51bGw7
DQppZihtZS5yZWxvYWRfb25fY2xvc2Upew0Kd2luZG93LmxvY2F0aW9uLnJl
bG9hZCgpOw0KfQ0KaWYoQUpTLmlzRnVuY3Rpb24oY2IpKXsNCmNiKCk7DQp9
DQp9LDEwKTsNCn0sdXBkYXRlOmZ1bmN0aW9uKCl7DQp0aGlzLnNldE92ZXJs
YXlEaW1lbnNpb24oKTsNCnRoaXMuc2V0RnJhbWVTaXplKCk7DQp0aGlzLnNl
dFdpbmRvd1Bvc2l0aW9uKCk7DQp9LGNyZWF0ZUVsZW1lbnRzOmZ1bmN0aW9u
KCl7DQp0aGlzLmluaXRPdmVybGF5KCk7DQp0aGlzLmdfd2luZG93PTNEQUpT
LkRJVih7ImlkIjoiR0Jfd2luZG93In0pOw0KQUpTLmhpZGVFbGVtZW50KHRo
aXMuZ193aW5kb3cpOw0KQUpTLmdldEJvZHkoKS5pbnNlcnRCZWZvcmUodGhp
cy5nX3dpbmRvdyx0aGlzLm92ZXJsYXkubmV4dFNpYmxpbmcpOw0KdGhpcy5p
bml0RnJhbWUoKTsNCnRoaXMuaW5pdEhvb2soKTsNCnRoaXMudXBkYXRlKCk7
DQp2YXIgbWU9M0R0aGlzOw0KaWYodGhpcy51c2VfZngpew0KQUpTLmZ4LmZh
ZGVJbih0aGlzLm92ZXJsYXkse2R1cmF0aW9uOjMwMCx0bzowLjcsb25Db21w
bGV0ZTpmdW5jdGlvbigpew0KbWUub25TaG93KCk7DQpBSlMuc2hvd0VsZW1l
bnQobWUuZ193aW5kb3cpOw0KbWUuc3RhcnRMb2FkaW5nKCk7DQp9fSk7DQp9
ZWxzZXsNCkFKUy5zZXRPcGFjaXR5KHRoaXMub3ZlcmxheSwwLjcpOw0KQUpT
LnNob3dFbGVtZW50KHRoaXMuZ193aW5kb3cpOw0KdGhpcy5vblNob3coKTsN
CnRoaXMuc3RhcnRMb2FkaW5nKCk7DQp9DQpBSlMuQUVWKHdpbmRvdywic2Ny
b2xsIixfR0Jfc2V0T3ZlcmxheURpbWVuc2lvbik7DQpBSlMuQUVWKHdpbmRv
dywicmVzaXplIixfR0JfdXBkYXRlKTsNCn0scmVtb3ZlRnJhbWU6ZnVuY3Rp
b24oKXsNCnRyeXsNCkFKUy5yZW1vdmVFbGVtZW50KHRoaXMuaWZyYW1lKTsN
Cn0NCmNhdGNoKGUpew0KfQ0KdGhpcy5pZnJhbWU9M0RudWxsOw0KfSxzdGFy
dExvYWRpbmc6ZnVuY3Rpb24oKXsNCnRoaXMuaWZyYW1lLnNyYz0zRHRoaXMu
c3JjX2xvYWRlcisiP3M9M0QiK3RoaXMuc2FsdCsrOw0KQUpTLnNob3dFbGVt
ZW50KHRoaXMuaWZyYW1lKTsNCn0sc2V0T3ZlcmxheURpbWVuc2lvbjpmdW5j
dGlvbigpew0KdmFyIF8xMT0zREFKUy5nZXRXaW5kb3dTaXplKCk7DQppZihB
SlMuaXNNb3ppbGxhKCl8fEFKUy5pc09wZXJhKCkpew0KQUpTLnNldFdpZHRo
KHRoaXMub3ZlcmxheSwiMTAwJSIpOw0KfWVsc2V7DQpBSlMuc2V0V2lkdGgo
dGhpcy5vdmVybGF5LF8xMS53KTsNCn0NCnZhciA9DQpfMTI9M0RNYXRoLm1h
eChBSlMuZ2V0U2Nyb2xsVG9wKCkrXzExLmgsQUpTLmdldFNjcm9sbFRvcCgp
K3RoaXMuaGVpZ2h0KTsNCmlmKF8xMjxBSlMuZ2V0U2Nyb2xsVG9wKCkpew0K
QUpTLnNldEhlaWdodCh0aGlzLm92ZXJsYXksXzEyKTsNCn1lbHNlew0KQUpT
LnNldEhlaWdodCh0aGlzLm92ZXJsYXksQUpTLmdldFNjcm9sbFRvcCgpK18x
MS5oKTsNCn0NCn0saW5pdE92ZXJsYXk6ZnVuY3Rpb24oKXsNCnRoaXMub3Zl
cmxheT0zREFKUy5ESVYoeyJpZCI6IkdCX292ZXJsYXkifSk7DQppZih0aGlz
Lm92ZXJsYXlfY2xpY2tfY2xvc2Upew0KQUpTLkFFVih0aGlzLm92ZXJsYXks
ImNsaWNrIixHQl9oaWRlKTsNCn0NCkFKUy5zZXRPcGFjaXR5KHRoaXMub3Zl
cmxheSwwKTsNCkFKUy5nZXRCb2R5KCkuaW5zZXJ0QmVmb3JlKHRoaXMub3Zl
cmxheSxBSlMuZ2V0Qm9keSgpLmZpcnN0Q2hpbGQpOw0KfSxpbml0RnJhbWU6
ZnVuY3Rpb24oKXsNCmlmKCF0aGlzLmlmcmFtZSl7DQp2YXIgZD0zRHsibmFt
ZSI6IkdCX2ZyYW1lIiwiY2xhc3MiOiJHQl9mcmFtZSIsImZyYW1lQm9yZGVy
IjowfTsNCmlmKEFKUy5pc0llKCkpew0KZC5zcmM9M0QiamF2YXNjcmlwdDpm
YWxzZTtkb2N1bWVudC53cml0ZShcIlwiKTsiOw0KfQ0KdGhpcy5pZnJhbWU9
M0RBSlMuSUZSQU1FKGQpOw0KdGhpcy5taWRkbGVfY250PTNEQUpTLkRJVih7
ImNsYXNzIjoiY29udGVudCJ9LHRoaXMuaWZyYW1lKTsNCnRoaXMudG9wX2Nu
dD0zREFKUy5ESVYoKTsNCnRoaXMuYm90dG9tX2NudD0zREFKUy5ESVYoKTsN
CkFKUy5BQ04odGhpcy5nX3dpbmRvdyx0aGlzLnRvcF9jbnQsdGhpcy5taWRk
bGVfY250LHRoaXMuYm90dG9tX2NudCk7DQp9DQp9LG9uSGlkZTpmdW5jdGlv
bigpew0KfSxvblNob3c6ZnVuY3Rpb24oKXsNCn0sc2V0RnJhbWVTaXplOmZ1
bmN0aW9uKCl7DQp9LHNldFdpbmRvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7DQp9
LGluaXRIb29rOmZ1bmN0aW9uKCl7DQp9fSk7DQpfR0JfdXBkYXRlPTNEZnVu
Y3Rpb24oKXsNCmlmKEdCX0NVUlJFTlQpew0KR0JfQ1VSUkVOVC51cGRhdGUo
KTsNCn0NCn07DQpfR0Jfc2V0T3ZlcmxheURpbWVuc2lvbj0zRGZ1bmN0aW9u
KCl7DQppZihHQl9DVVJSRU5UKXsNCkdCX0NVUlJFTlQuc2V0T3ZlcmxheURp
bWVuc2lvbigpOw0KfQ0KfTsNCkFKUy5wcmVsb2FkSW1hZ2VzKEdCX1JPT1Rf
RElSKyJpbmRpY2F0b3IuZ2lmIik7DQpzY3JpcHRfbG9hZGVkPTNEdHJ1ZTsN
CnZhciBHQl9TRVRTPTNEe307DQpmdW5jdGlvbiBkZWNvR3JleWJveExpbmtz
KCl7DQp2YXIgYXM9M0RBSlMuJGJ5dGMoImEiKTsNCkFKUy5tYXAoYXMsZnVu
Y3Rpb24oYSl7DQppZihhLmdldEF0dHJpYnV0ZSgiaHJlZiIpJiZhLmdldEF0
dHJpYnV0ZSgicmVsIikpew0KdmFyIHJlbD0zRGEuZ2V0QXR0cmlidXRlKCJy
ZWwiKTsNCmlmKHJlbC5pbmRleE9mKCJnYl8iKT0zRD0zRDApew0KdmFyIF8x
Nz0zRHJlbC5tYXRjaCgvXHcrLylbMF07DQp2YXIgXzE4PTNEcmVsLm1hdGNo
KC9cWyguKilcXS8pWzFdOw0KdmFyIF8xOT0zRDA7DQp2YXIgXzFhPTNEeyJj
YXB0aW9uIjphLnRpdGxlfHwiIiwidXJsIjphLmhyZWZ9Ow0KaWYoXzE3PTNE
PTNEImdiX3BhZ2VzZXQifHxfMTc9M0Q9M0QiZ2JfaW1hZ2VzZXQiKXsNCmlm
KCFHQl9TRVRTW18xOF0pew0KR0JfU0VUU1tfMThdPTNEW107DQp9DQpHQl9T
RVRTW18xOF0ucHVzaChfMWEpOw0KXzE5PTNER0JfU0VUU1tfMThdLmxlbmd0
aDsNCn0NCmlmKF8xNz0zRD0zRCJnYl9wYWdlc2V0Iil7DQphLm9uY2xpY2s9
M0RmdW5jdGlvbigpew0KR0Jfc2hvd0Z1bGxTY3JlZW5TZXQoR0JfU0VUU1tf
MThdLF8xOSk7DQpyZXR1cm4gZmFsc2U7DQp9Ow0KfQ0KaWYoXzE3PTNEPTNE
ImdiX2ltYWdlc2V0Iil7DQphLm9uY2xpY2s9M0RmdW5jdGlvbigpew0KR0Jf
c2hvd0ltYWdlU2V0KEdCX1NFVFNbXzE4XSxfMTkpOw0KcmV0dXJuIGZhbHNl
Ow0KfTsNCn0NCmlmKF8xNz0zRD0zRCJnYl9pbWFnZSIpew0KYS5vbmNsaWNr
PTNEZnVuY3Rpb24oKXsNCkdCX3Nob3dJbWFnZShfMWEuY2FwdGlvbixfMWEu
dXJsKTsNCnJldHVybiBmYWxzZTsNCn07DQp9DQppZihfMTc9M0Q9M0QiZ2Jf
cGFnZSIpew0KYS5vbmNsaWNrPTNEZnVuY3Rpb24oKXsNCnZhciBzcD0zRF8x
OC5zcGxpdCgvLCA/Lyk7DQpHQl9zaG93KF8xYS5jYXB0aW9uLF8xYS51cmws
cGFyc2VJbnQoc3BbMV0pLHBhcnNlSW50KHNwWzBdKSk7DQpyZXR1cm4gZmFs
c2U7DQp9Ow0KfQ0KaWYoXzE3PTNEPTNEImdiX3BhZ2VfZnMiKXsNCmEub25j
bGljaz0zRGZ1bmN0aW9uKCl7DQpHQl9zaG93RnVsbFNjcmVlbihfMWEuY2Fw
dGlvbixfMWEudXJsKTsNCnJldHVybiBmYWxzZTsNCn07DQp9DQppZihfMTc9
M0Q9M0QiZ2JfcGFnZV9jZW50ZXIiKXsNCmEub25jbGljaz0zRGZ1bmN0aW9u
KCl7DQp2YXIgc3A9M0RfMTguc3BsaXQoLywgPy8pOw0KR0Jfc2hvd0NlbnRl
cihfMWEuY2FwdGlvbixfMWEudXJsLHBhcnNlSW50KHNwWzFdKSxwYXJzZUlu
dChzcFswXSkpOw0KcmV0dXJuIGZhbHNlOw0KfTsNCn0NCn0NCn0NCn0pOw0K
fQ0KQUpTLkFFVih3aW5kb3csImxvYWQiLGRlY29HcmV5Ym94TGlua3MpOw0K
R0Jfc2hvd0ltYWdlPTNEZnVuY3Rpb24oXzFkLHVybCxfMWYpew0KdmFyID0N
Cl8yMD0zRHt3aWR0aDozMDAsaGVpZ2h0OjMwMCx0eXBlOiJpbWFnZSIsZnVs
bHNjcmVlbjpmYWxzZSxjZW50ZXJfd2luOnRydWU9DQosY2FwdGlvbjpfMWQs
Y2FsbGJhY2tfZm46XzFmfTsNCnZhciB3aW49M0RuZXcgR0JfR2FsbGVyeShf
MjApOw0KcmV0dXJuIHdpbi5zaG93KHVybCk7DQp9Ow0KR0Jfc2hvd1BhZ2U9
M0RmdW5jdGlvbihfMjIsdXJsLF8yNCl7DQp2YXIgPQ0KXzI1PTNEe3R5cGU6
InBhZ2UiLGNhcHRpb246XzIyLGNhbGxiYWNrX2ZuOl8yNCxmdWxsc2NyZWVu
OnRydWUsY2VudGVyX3dpbj0NCjpmYWxzZX07DQp2YXIgd2luPTNEbmV3IEdC
X0dhbGxlcnkoXzI1KTsNCnJldHVybiB3aW4uc2hvdyh1cmwpOw0KfTsNCkdC
X0dhbGxlcnk9M0RHcmV5Qm94LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihfMjcp
ew0KdGhpcy5wYXJlbnQoe30pOw0KdGhpcy5pbWdfY2xvc2U9M0R0aGlzLnJv
b3RfZGlyKyJnX2Nsb3NlLmdpZiI7DQpBSlMudXBkYXRlKHRoaXMsXzI3KTsN
CnRoaXMuYWRkQ2FsbGJhY2sodGhpcy5jYWxsYmFja19mbik7DQp9LGluaXRI
b29rOmZ1bmN0aW9uKCl7DQpBSlMuYWRkQ2xhc3ModGhpcy5nX3dpbmRvdywi
R0JfR2FsbGVyeSIpOw0KdmFyIF8yOD0zREFKUy5ESVYoeyJjbGFzcyI6Imlu
bmVyIn0pOw0KdGhpcy5oZWFkZXI9M0RBSlMuRElWKHsiY2xhc3MiOiJHQl9o
ZWFkZXIifSxfMjgpOw0KQUpTLnNldE9wYWNpdHkodGhpcy5oZWFkZXIsMCk7
DQpBSlMuZ2V0Qm9keSgpLmluc2VydEJlZm9yZSh0aGlzLmhlYWRlcix0aGlz
Lm92ZXJsYXkubmV4dFNpYmxpbmcpOw0KdmFyID0NCl8yOT0zREFKUy5URCh7
ImlkIjoiR0JfY2FwdGlvbiIsImNsYXNzIjoiY2FwdGlvbiIsIndpZHRoIjoi
NDAlIn0sdGhpcy5jYXA9DQp0aW9uKTsNCnZhciBfMmE9M0RBSlMuVEQoeyJp
ZCI6IkdCX21pZGRsZSIsImNsYXNzIjoibWlkZGxlIiwid2lkdGgiOiIyMCUi
fSk7DQp2YXIgXzJiPTNEQUpTLklNRyh7InNyYyI6dGhpcy5pbWdfY2xvc2V9
KTsNCkFKUy5BRVYoXzJiLCJjbGljayIsR0JfaGlkZSk7DQp2YXIgXzJjPTNE
QUpTLlREKHsiY2xhc3MiOiJjbG9zZSIsIndpZHRoIjoiNDAlIn0sXzJiKTsN
CnZhciBfMmQ9M0RBSlMuVEJPRFkoQUpTLlRSKF8yOSxfMmEsXzJjKSk7DQp2
YXIgXzJlPTNEQUpTLlRBQkxFKHsiY2VsbHNwYWNpbmciOiIwIiwiY2VsbHBh
ZGRpbmciOjAsImJvcmRlciI6MH0sXzJkKTsNCkFKUy5BQ04oXzI4LF8yZSk7
DQppZih0aGlzLmZ1bGxzY3JlZW4pew0KQUpTLkFFVih3aW5kb3csInNjcm9s
bCIsQUpTLiRiKHRoaXMuc2V0V2luZG93UG9zaXRpb24sdGhpcykpOw0KfWVs
c2V7DQpBSlMuQUVWKHdpbmRvdywic2Nyb2xsIixBSlMuJGIodGhpcy5fc2V0
SGVhZGVyUG9zLHRoaXMpKTsNCn0NCn0sc2V0RnJhbWVTaXplOmZ1bmN0aW9u
KCl7DQp2YXIgXzJmPTNEdGhpcy5vdmVybGF5Lm9mZnNldFdpZHRoOw0KdmFy
IF8zMD0zREFKUy5nZXRXaW5kb3dTaXplKCk7DQppZih0aGlzLmZ1bGxzY3Jl
ZW4pew0KdGhpcy53aWR0aD0zRF8yZi00MDsNCnRoaXMuaGVpZ2h0PTNEXzMw
LmgtODA7DQp9DQpBSlMuc2V0V2lkdGgodGhpcy5pZnJhbWUsdGhpcy53aWR0
aCk7DQpBSlMuc2V0SGVpZ2h0KHRoaXMuaWZyYW1lLHRoaXMuaGVpZ2h0KTsN
CkFKUy5zZXRXaWR0aCh0aGlzLmhlYWRlcixfMmYpOw0KfSxfc2V0SGVhZGVy
UG9zOmZ1bmN0aW9uKCl7DQpBSlMuc2V0VG9wKHRoaXMuaGVhZGVyLEFKUy5n
ZXRTY3JvbGxUb3AoKSsxMCk7DQp9LHNldFdpbmRvd1Bvc2l0aW9uOmZ1bmN0
aW9uKCl7DQp2YXIgXzMxPTNEdGhpcy5vdmVybGF5Lm9mZnNldFdpZHRoOw0K
dmFyIF8zMj0zREFKUy5nZXRXaW5kb3dTaXplKCk7DQpBSlMuc2V0TGVmdCh0
aGlzLmdfd2luZG93LCgoXzMxLTUwLXRoaXMud2lkdGgpLzIpKTsNCnZhciBf
MzM9M0RBSlMuZ2V0U2Nyb2xsVG9wKCkrNTU7DQppZighdGhpcy5jZW50ZXJf
d2luKXsNCkFKUy5zZXRUb3AodGhpcy5nX3dpbmRvdyxfMzMpOw0KfWVsc2V7
DQp2YXIgZmw9M0QoKF8zMi5oLXRoaXMuaGVpZ2h0KS8yKSsyMCtBSlMuZ2V0
U2Nyb2xsVG9wKCk7DQppZihmbDwwKXsNCmZsPTNEMDsNCn0NCmlmKF8zMz5m
bCl7DQpmbD0zRF8zMzsNCn0NCkFKUy5zZXRUb3AodGhpcy5nX3dpbmRvdyxm
bCk7DQp9DQp0aGlzLl9zZXRIZWFkZXJQb3MoKTsNCn0sb25IaWRlOmZ1bmN0
aW9uKCl7DQpBSlMucmVtb3ZlRWxlbWVudCh0aGlzLmhlYWRlcik7DQpBSlMu
cmVtb3ZlQ2xhc3ModGhpcy5nX3dpbmRvdywiR0JfR2FsbGVyeSIpOw0KfSxv
blNob3c6ZnVuY3Rpb24oKXsNCmlmKHRoaXMudXNlX2Z4KXsNCkFKUy5meC5m
YWRlSW4odGhpcy5oZWFkZXIse3RvOjF9KTsNCn1lbHNlew0KQUpTLnNldE9w
YWNpdHkodGhpcy5oZWFkZXIsMSk7DQp9DQp9fSk7DQpBSlMucHJlbG9hZElt
YWdlcyhHQl9ST09UX0RJUisiZ19jbG9zZS5naWYiKTsNCkdCX3Nob3dGdWxs
U2NyZWVuU2V0PTNEZnVuY3Rpb24oc2V0LF8zNixfMzcpew0KdmFyIF8zOD0z
RHt0eXBlOiJwYWdlIixmdWxsc2NyZWVuOnRydWUsY2VudGVyX3dpbjpmYWxz
ZX07DQp2YXIgXzM5PTNEbmV3IEdCX1NldHMoXzM4LHNldCk7DQpfMzkuYWRk
Q2FsbGJhY2soXzM3KTsNCl8zOS5zaG93U2V0KF8zNi0xKTsNCnJldHVybiBm
YWxzZTsNCn07DQpHQl9zaG93SW1hZ2VTZXQ9M0RmdW5jdGlvbihzZXQsXzNi
LF8zYyl7DQp2YXIgPQ0KXzNkPTNEe3R5cGU6ImltYWdlIixmdWxsc2NyZWVu
OmZhbHNlLGNlbnRlcl93aW46dHJ1ZSx3aWR0aDozMDAsaGVpZ2h0OjMwMD0N
Cn07DQp2YXIgXzNlPTNEbmV3IEdCX1NldHMoXzNkLHNldCk7DQpfM2UuYWRk
Q2FsbGJhY2soXzNjKTsNCl8zZS5zaG93U2V0KF8zYi0xKTsNCnJldHVybiBm
YWxzZTsNCn07DQpHQl9TZXRzPTNER0JfR2FsbGVyeS5leHRlbmQoe2luaXQ6
ZnVuY3Rpb24oXzNmLHNldCl7DQp0aGlzLnBhcmVudChfM2YpOw0KaWYoIXRo
aXMuaW1nX25leHQpew0KdGhpcy5pbWdfbmV4dD0zRHRoaXMucm9vdF9kaXIr
Im5leHQuZ2lmIjsNCn0NCmlmKCF0aGlzLmltZ19wcmV2KXsNCnRoaXMuaW1n
X3ByZXY9M0R0aGlzLnJvb3RfZGlyKyJwcmV2LmdpZiI7DQp9DQp0aGlzLmN1
cnJlbnRfc2V0PTNEc2V0Ow0KfSxzaG93U2V0OmZ1bmN0aW9uKF80MSl7DQp0
aGlzLmN1cnJlbnRfaW5kZXg9M0RfNDE7DQp2YXIgXzQyPTNEdGhpcy5jdXJy
ZW50X3NldFt0aGlzLmN1cnJlbnRfaW5kZXhdOw0KdGhpcy5zaG93KF80Mi51
cmwpOw0KdGhpcy5fc2V0Q2FwdGlvbihfNDIuY2FwdGlvbik7DQp0aGlzLmJ0
bl9wcmV2PTNEQUpTLklNRyh7ImNsYXNzIjoibGVmdCIsc3JjOnRoaXMuaW1n
X3ByZXZ9KTsNCnRoaXMuYnRuX25leHQ9M0RBSlMuSU1HKHsiY2xhc3MiOiJy
aWdodCIsc3JjOnRoaXMuaW1nX25leHR9KTsNCkFKUy5BRVYodGhpcy5idG5f
cHJldiwiY2xpY2siLEFKUy4kYih0aGlzLnN3aXRjaFByZXYsdGhpcykpOw0K
QUpTLkFFVih0aGlzLmJ0bl9uZXh0LCJjbGljayIsQUpTLiRiKHRoaXMuc3dp
dGNoTmV4dCx0aGlzKSk7DQpHQl9TVEFUVVM9M0RBSlMuU1BBTih7ImNsYXNz
IjoiR0JfbmF2U3RhdHVzIn0pOw0KQUpTLkFDTihBSlMuJCgiR0JfbWlkZGxl
IiksdGhpcy5idG5fcHJldixHQl9TVEFUVVMsdGhpcy5idG5fbmV4dCk7DQp0
aGlzLnVwZGF0ZVN0YXR1cygpOw0KfSx1cGRhdGVTdGF0dXM6ZnVuY3Rpb24o
KXsNCkFKUy5zZXRIVE1MKEdCX1NUQVRVUywodGhpcy5jdXJyZW50X2luZGV4
KzEpKyIgLyA9DQoiK3RoaXMuY3VycmVudF9zZXQubGVuZ3RoKTsNCmlmKHRo
aXMuY3VycmVudF9pbmRleD0zRD0zRDApew0KQUpTLmFkZENsYXNzKHRoaXMu
YnRuX3ByZXYsImRpc2FibGVkIik7DQp9ZWxzZXsNCkFKUy5yZW1vdmVDbGFz
cyh0aGlzLmJ0bl9wcmV2LCJkaXNhYmxlZCIpOw0KfQ0KaWYodGhpcy5jdXJy
ZW50X2luZGV4PTNEPTNEdGhpcy5jdXJyZW50X3NldC5sZW5ndGgtMSl7DQpB
SlMuYWRkQ2xhc3ModGhpcy5idG5fbmV4dCwiZGlzYWJsZWQiKTsNCn1lbHNl
ew0KQUpTLnJlbW92ZUNsYXNzKHRoaXMuYnRuX25leHQsImRpc2FibGVkIik7
DQp9DQp9LF9zZXRDYXB0aW9uOmZ1bmN0aW9uKF80Myl7DQpBSlMuc2V0SFRN
TChBSlMuJCgiR0JfY2FwdGlvbiIpLF80Myk7DQp9LHVwZGF0ZUZyYW1lOmZ1
bmN0aW9uKCl7DQp2YXIgXzQ0PTNEdGhpcy5jdXJyZW50X3NldFt0aGlzLmN1
cnJlbnRfaW5kZXhdOw0KdGhpcy5fc2V0Q2FwdGlvbihfNDQuY2FwdGlvbik7
DQp0aGlzLnVybD0zRF80NC51cmw7DQp0aGlzLnN0YXJ0TG9hZGluZygpOw0K
fSxzd2l0Y2hQcmV2OmZ1bmN0aW9uKCl7DQppZih0aGlzLmN1cnJlbnRfaW5k
ZXghPTNEMCl7DQp0aGlzLmN1cnJlbnRfaW5kZXgtLTsNCnRoaXMudXBkYXRl
RnJhbWUoKTsNCnRoaXMudXBkYXRlU3RhdHVzKCk7DQp9DQp9LHN3aXRjaE5l
eHQ6ZnVuY3Rpb24oKXsNCmlmKHRoaXMuY3VycmVudF9pbmRleCE9M0R0aGlz
LmN1cnJlbnRfc2V0Lmxlbmd0aC0xKXsNCnRoaXMuY3VycmVudF9pbmRleCsr
Ow0KdGhpcy51cGRhdGVGcmFtZSgpOw0KdGhpcy51cGRhdGVTdGF0dXMoKTsN
Cn0NCn19KTsNCkFKUy5BRVYod2luZG93LCJsb2FkIixmdW5jdGlvbigpew0K
QUpTLnByZWxvYWRJbWFnZXMoR0JfUk9PVF9ESVIrIm5leHQuZ2lmIixHQl9S
T09UX0RJUisicHJldi5naWYiKTsNCn0pOw0KR0Jfc2hvdz0zRGZ1bmN0aW9u
KF80NSx1cmwsXzQ3LF80OCxfNDkpew0KdmFyID0NCl80YT0zRHtjYXB0aW9u
Ol80NSxoZWlnaHQ6XzQ3fHw1MDAsd2lkdGg6XzQ4fHw1MDAsZnVsbHNjcmVl
bjpmYWxzZSxjYWxsYmE9DQpja19mbjpfNDl9Ow0KdmFyIHdpbj0zRG5ldyBH
Ql9XaW5kb3coXzRhKTsNCnJldHVybiB3aW4uc2hvdyh1cmwpOw0KfTsNCkdC
X3Nob3dDZW50ZXI9M0RmdW5jdGlvbihfNGMsdXJsLF80ZSxfNGYsXzUwKXsN
CnZhciA9DQpfNTE9M0R7Y2FwdGlvbjpfNGMsY2VudGVyX3dpbjp0cnVlLGhl
aWdodDpfNGV8fDUwMCx3aWR0aDpfNGZ8fDUwMCxmdWxsc2NyPQ0KZWVuOmZh
bHNlLGNhbGxiYWNrX2ZuOl81MH07DQp2YXIgd2luPTNEbmV3IEdCX1dpbmRv
dyhfNTEpOw0KcmV0dXJuIHdpbi5zaG93KHVybCk7DQp9Ow0KR0Jfc2hvd0Z1
bGxTY3JlZW49M0RmdW5jdGlvbihfNTMsdXJsLF81NSl7DQp2YXIgXzU2PTNE
e2NhcHRpb246XzUzLGZ1bGxzY3JlZW46dHJ1ZSxjYWxsYmFja19mbjpfNTV9
Ow0KdmFyIHdpbj0zRG5ldyBHQl9XaW5kb3coXzU2KTsNCnJldHVybiB3aW4u
c2hvdyh1cmwpOw0KfTsNCkdCX1dpbmRvdz0zREdyZXlCb3guZXh0ZW5kKHtp
bml0OmZ1bmN0aW9uKF81OCl7DQp0aGlzLnBhcmVudCh7fSk7DQp0aGlzLmlt
Z19oZWFkZXI9M0R0aGlzLnJvb3RfZGlyKyJoZWFkZXJfYmcuZ2lmIjsNCnRo
aXMuaW1nX2Nsb3NlPTNEdGhpcy5yb290X2Rpcisid19jbG9zZS5naWYiOw0K
dGhpcy5zaG93X2Nsb3NlX2ltZz0zRHRydWU7DQpBSlMudXBkYXRlKHRoaXMs
XzU4KTsNCnRoaXMuYWRkQ2FsbGJhY2sodGhpcy5jYWxsYmFja19mbik7DQp9
LGluaXRIb29rOmZ1bmN0aW9uKCl7DQpBSlMuYWRkQ2xhc3ModGhpcy5nX3dp
bmRvdywiR0JfV2luZG93Iik7DQp0aGlzLmhlYWRlcj0zREFKUy5UQUJMRSh7
ImNsYXNzIjoiaGVhZGVyIn0pOw0KdGhpcy5oZWFkZXIuc3R5bGUuYmFja2dy
b3VuZEltYWdlPTNEInVybCgiK3RoaXMuaW1nX2hlYWRlcisiKSI7DQp2YXIg
XzU5PTNEQUpTLlREKHsiY2xhc3MiOiJjYXB0aW9uIn0sdGhpcy5jYXB0aW9u
KTsNCnZhciBfNWE9M0RBSlMuVEQoeyJjbGFzcyI6ImNsb3NlIn0pOw0KaWYo
dGhpcy5zaG93X2Nsb3NlX2ltZyl7DQp2YXIgXzViPTNEQUpTLklNRyh7InNy
YyI6dGhpcy5pbWdfY2xvc2V9KTsNCnZhciBfNWM9M0RBSlMuU1BBTigiQ2hp
dWRpIik7IC8qIGNoaXVkaSAqLw0KdmFyIGJ0bj0zREFKUy5ESVYoXzViLF81
Yyk7DQpBSlMuQUVWKFtfNWIsXzVjXSwibW91c2VvdmVyIixmdW5jdGlvbigp
ew0KQUpTLmFkZENsYXNzKF81Yywib24iKTsNCn0pOw0KQUpTLkFFVihbXzVi
LF81Y10sIm1vdXNlb3V0IixmdW5jdGlvbigpew0KQUpTLnJlbW92ZUNsYXNz
KF81Yywib24iKTsNCn0pOw0KQUpTLkFFVihbXzViLF81Y10sIm1vdXNlZG93
biIsZnVuY3Rpb24oKXsNCkFKUy5hZGRDbGFzcyhfNWMsImNsaWNrIik7DQp9
KTsNCkFKUy5BRVYoW181YixfNWNdLCJtb3VzZXVwIixmdW5jdGlvbigpew0K
QUpTLnJlbW92ZUNsYXNzKF81YywiY2xpY2siKTsNCn0pOw0KQUpTLkFFVihb
XzViLF81Y10sImNsaWNrIixHQl9oaWRlKTsNCkFKUy5BQ04oXzVhLGJ0bik7
DQp9DQp0Ym9keV9oZWFkZXI9M0RBSlMuVEJPRFkoKTsNCkFKUy5BQ04odGJv
ZHlfaGVhZGVyLEFKUy5UUihfNTksXzVhKSk7DQpBSlMuQUNOKHRoaXMuaGVh
ZGVyLHRib2R5X2hlYWRlcik7DQpBSlMuQUNOKHRoaXMudG9wX2NudCx0aGlz
LmhlYWRlcik7DQppZih0aGlzLmZ1bGxzY3JlZW4pew0KQUpTLkFFVih3aW5k
b3csInNjcm9sbCIsQUpTLiRiKHRoaXMuc2V0V2luZG93UG9zaXRpb24sdGhp
cykpOw0KfQ0KfSxzZXRGcmFtZVNpemU6ZnVuY3Rpb24oKXsNCmlmKHRoaXMu
ZnVsbHNjcmVlbil7DQp2YXIgXzVlPTNEQUpTLmdldFdpbmRvd1NpemUoKTsN
Cm92ZXJsYXlfaD0zRF81ZS5oOw0KdGhpcy53aWR0aD0zRE1hdGgucm91bmQo
dGhpcy5vdmVybGF5Lm9mZnNldFdpZHRoLSh0aGlzLm92ZXJsYXkub2Zmc2V0
V2lkdD0NCmgvMTAwKSoxMCk7DQp0aGlzLmhlaWdodD0zRE1hdGgucm91bmQo
b3ZlcmxheV9oLShvdmVybGF5X2gvMTAwKSoxMCk7DQp9DQpBSlMuc2V0V2lk
dGgodGhpcy5oZWFkZXIsdGhpcy53aWR0aCs2KTsNCkFKUy5zZXRXaWR0aCh0
aGlzLmlmcmFtZSx0aGlzLndpZHRoKTsNCkFKUy5zZXRIZWlnaHQodGhpcy5p
ZnJhbWUsdGhpcy5oZWlnaHQpOw0KfSxzZXRXaW5kb3dQb3NpdGlvbjpmdW5j
dGlvbigpew0KdmFyIF81Zj0zREFKUy5nZXRXaW5kb3dTaXplKCk7DQpBSlMu
c2V0TGVmdCh0aGlzLmdfd2luZG93LCgoXzVmLnctdGhpcy53aWR0aCkvMikt
MTMpOw0KaWYoIXRoaXMuY2VudGVyX3dpbil7DQpBSlMuc2V0VG9wKHRoaXMu
Z193aW5kb3csQUpTLmdldFNjcm9sbFRvcCgpKTsNCn1lbHNlew0KdmFyIGZs
PTNEKChfNWYuaC10aGlzLmhlaWdodCkvMiktMjArQUpTLmdldFNjcm9sbFRv
cCgpOw0KaWYoZmw8MCl7DQpmbD0zRDA7DQp9DQpBSlMuc2V0VG9wKHRoaXMu
Z193aW5kb3csZmwpOw0KfQ0KfX0pOw0KQUpTLnByZWxvYWRJbWFnZXMoR0Jf
Uk9PVF9ESVIrIndfY2xvc2UuZ2lmIixHQl9ST09UX0RJUisiaGVhZGVyX2Jn
LmdpZiIpOz0NCg0KDQoNCnNjcmlwdF9sb2FkZWQ9M0R0cnVlOw0KLS0tLS0t
PV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDRUM3OC5DRUI1OThBMA0KQ29udGVu
dC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCkNvbnRlbnQtVHJh
bnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCkNvbnRlbnQtTG9j
YXRpb246IGh0dHA6Ly93d3cuY2FydGFzaS5pdC9qYXZhc2NyaXB0L2hvbWUu
anMNCg0KLy9tb2RpZmljYXJlDQp2YXIgY29udGVudF9ob21lPTNEIi9wb3B1
cC8iOw0KdmFyIGhvbWUgPTNEIi9ndHdwYWdlcyI7DQp2YXIgcG9ydGFIdHRw
cyA9M0QiIjsNCg0KLy9kYSBub24gbW9kaWZpY2FyZQ0KdmFyIGNvbnRlbnRf
Y2x1Yj0zRGhvbWUrIi9pb3NpLyI7DQp2YXIgY29udGVudF9jYXJ0ZT0zRGhv
bWUrIi9jYXJ0ZS8iOw0KDQpmdW5jdGlvbiBnb0luaXppYXRpdmFNZXNlKHBh
cmFtKSB7DQoJZG9jdW1lbnQuZ290b3BhZ2UuYWN0aW9uID0zRCBob21lKyIv
Y29tbW9uL2luZGV4LmpzcD9pZD0zRFdReEVVSnVkUVEiOw0KCWRvY3VtZW50
LmdvdG9wYWdlLmpzcE5hbWUudmFsdWU9M0QiL2ltcGVnbm9fc29jaWFsZS9p
bmRleF9nby5qc3AiOw0KCWRvY3VtZW50LmdvdG9wYWdlLnBhcmFtLnZhbHVl
PTNEcGFyYW07DQoJZG9jdW1lbnQuZ290b3BhZ2Uuc3VibWl0KCk7DQp9DQpm
dW5jdGlvbiBnb1BvcHVwKHBhcmFtKSB7DQoJdmFyIGFyZ3MgPTNEIHBhcmFt
LnNwbGl0KCI7Iik7DQoJaWYoYXJnc1sxXT0zRD0zRG51bGwpew0KCQlhcmdz
WzFdPTNEMzAwOw0KCX0NCglpZihhcmdzWzJdPTNEPTNEbnVsbCkgew0KCQlh
cmdzWzJdPTNEMzAwOw0KCX0NCglpZihwYXJhbS5pbmRleE9mKCcuanNwJykh
PTNELTEpIHsNCgkJPQ0Kd2luZG93Lm9wZW4oaG9tZSthcmdzWzBdLCcnLCd3
aWR0aD0zRCcrYXJnc1sxXSsnLGhlaWdodD0zRCcrYXJnc1syXSsnLHNjcj0N
Cm9sbGJhcnM9M0R5ZXMnKTsNCgl9IGVsc2Ugew0KCQk9DQp3aW5kb3cub3Bl
bihjb250ZW50X2hvbWUrYXJnc1swXSwnJywnd2lkdGg9M0QnK2FyZ3NbMV0r
JyxoZWlnaHQ9M0QnK2FyZ3NbPQ0KMl0rJyxzY3JvbGxiYXJzPTNEeWVzJyk7
DQoJfQ0KfQ0KZnVuY3Rpb24gbG9hZChwYWdlKXsNCglkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVsYWlvJykuc3JjPTNEY29udGVudF9ob21lK3BhZ2U7
DQp9DQpmdW5jdGlvbiBocmVmKHBhZ2Upew0KCWRvY3VtZW50LmxvY2F0aW9u
LmhyZWY9M0Rjb250ZW50X2hvbWUrcGFnZTsNCn0NCmZ1bmN0aW9uIGdvQ2x1
YkpzcChwYWdlKXsNCglkb2N1bWVudC5sb2NhdGlvbi5ocmVmPTNEY29udGVu
dF9jbHViK3BhZ2U7DQp9DQpmdW5jdGlvbiBnb0NsdWJKc3BFeChwYXJhbSl7
DQoJdmFyIGFyZ3MgPTNEIHBhcmFtLnNwbGl0KCI7Iik7DQoJaWYoYXJnc1sx
XT0zRD0zRG51bGwpew0KCQlhcmdzWzFdPTNEMzAwOw0KCX0NCglpZihhcmdz
WzJdPTNEPTNEbnVsbCkgew0KCQlhcmdzWzJdPTNEMzAwOw0KCX0NCgkvL2Rv
Y3VtZW50LmxvY2F0aW9uLmhyZWY9M0Rjb250ZW50X2NsdWIrcGFnZTsNCgk9
DQp3aW5kb3cub3Blbihjb250ZW50X2NsdWIrYXJnc1swXSwnJywnd2lkdGg9
M0QnK2FyZ3NbMV0rJyxoZWlnaHQ9M0QnK2FyZ3NbPQ0KMl0rJyxzY3JvbGxi
YXJzPTNEeWVzJyk7DQp9DQpmdW5jdGlvbiBnb1BvcHVwQ2x1YkpzcChwYWdl
LHBhcmFtKXsNCgl3aW5kb3cub3Blbihjb250ZW50X2NsdWIrcGFnZSwnJyxw
YXJhbSsnLHNjcm9sbGJhcnM9M0R5ZXMnKTsNCn0NCmZ1bmN0aW9uIGdvUG9w
dXBDYXJ0ZUpzcChwYWdlLHBhcmFtKXsNCgl3aW5kb3cub3Blbihjb250ZW50
X2NhcnRlK3BhZ2UsJycscGFyYW0rJyxzY3JvbGxiYXJzPTNEeWVzJyk7DQp9
DQpmdW5jdGlvbiBNTV9zd2FwSW1nUmVzdG9yZSgpIHsgLy92My4wDQogIHZh
ciBpLHgsYT0zRGRvY3VtZW50Lk1NX3NyOyA9DQpmb3IoaT0zRDA7YSYmaTxh
Lmxlbmd0aCYmKHg9M0RhW2ldKSYmeC5vU3JjO2krKykgeC5zcmM9M0R4Lm9T
cmM7DQp9DQoNCmZ1bmN0aW9uIE1NX3ByZWxvYWRJbWFnZXMoKSB7IC8vdjMu
MA0KICB2YXIgZD0zRGRvY3VtZW50OyBpZihkLmltYWdlcyl7IGlmKCFkLk1N
X3ApIGQuTU1fcD0zRG5ldyBBcnJheSgpOw0KICAgIHZhciBpLGo9M0RkLk1N
X3AubGVuZ3RoLGE9M0RNTV9wcmVsb2FkSW1hZ2VzLmFyZ3VtZW50czsgZm9y
KGk9M0QwOyA9DQppPGEubGVuZ3RoOyBpKyspDQogICAgaWYgKGFbaV0uaW5k
ZXhPZigiIyIpIT0zRDApeyBkLk1NX3Bbal09M0RuZXcgSW1hZ2U7ID0NCmQu
TU1fcFtqKytdLnNyYz0zRGFbaV07fX0NCn0NCg0KZnVuY3Rpb24gTU1fZmlu
ZE9iaihuLCBkKSB7IC8vdjQuMDENCiAgdmFyIHAsaSx4OyAgaWYoIWQpIGQ9
M0Rkb2N1bWVudDsgPQ0KaWYoKHA9M0RuLmluZGV4T2YoIj8iKSk+MCYmcGFy
ZW50LmZyYW1lcy5sZW5ndGgpIHsNCiAgICBkPTNEcGFyZW50LmZyYW1lc1tu
LnN1YnN0cmluZyhwKzEpXS5kb2N1bWVudDsgbj0zRG4uc3Vic3RyaW5nKDAs
cCk7fQ0KICBpZighKHg9M0RkW25dKSYmZC5hbGwpIHg9M0RkLmFsbFtuXTsg
Zm9yID0NCihpPTNEMDsheCYmaTxkLmZvcm1zLmxlbmd0aDtpKyspIHg9M0Rk
LmZvcm1zW2ldW25dOw0KICBmb3IoaT0zRDA7IXgmJmQubGF5ZXJzJiZpPGQu
bGF5ZXJzLmxlbmd0aDtpKyspID0NCng9M0RNTV9maW5kT2JqKG4sZC5sYXll
cnNbaV0uZG9jdW1lbnQpOw0KICBpZigheCAmJiBkLmdldEVsZW1lbnRCeUlk
KSB4PTNEZC5nZXRFbGVtZW50QnlJZChuKTsgcmV0dXJuIHg7DQp9DQoNCmZ1
bmN0aW9uIE1NX3N3YXBJbWFnZSgpIHsgLy92My4wDQogIHZhciBpLGo9M0Qw
LHgsYT0zRE1NX3N3YXBJbWFnZS5hcmd1bWVudHM7IGRvY3VtZW50Lk1NX3Ny
PTNEbmV3IEFycmF5OyA9DQpmb3IoaT0zRDA7aTwoYS5sZW5ndGgtMik7aSs9
M0QzKQ0KICAgaWYgKCh4PTNETU1fZmluZE9iaihhW2ldKSkhPTNEbnVsbCl7
ZG9jdW1lbnQuTU1fc3JbaisrXT0zRHg7ID0NCmlmKCF4Lm9TcmMpIHgub1Ny
Yz0zRHguc3JjOyB4LnNyYz0zRGFbaSsyXTt9DQp9DQoNCmZ1bmN0aW9uIE1N
X2p1bXBNZW51KHRhcmcsc2VsT2JqLHJlc3RvcmUpeyAvL3YzLjANCiAgPQ0K
ZXZhbCh0YXJnKyIubG9jYXRpb249M0QnIitzZWxPYmoub3B0aW9uc1tzZWxP
Ymouc2VsZWN0ZWRJbmRleF0udmFsdWUrIiciKT0NCjsNCiAgaWYgKHJlc3Rv
cmUpIHNlbE9iai5zZWxlY3RlZEluZGV4PTNEMDsNCn0NCg0KDQoNCi8vIGNv
ZGljZSBXVA0KDQoNCmZ1bmN0aW9uIGFkZFd0UGFyYW0oZGVzdGluYXRpb24p
ew0KCXZhciBiYXJQYXJhbXMgPTNEIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7
DQoJdmFyIGZyb20gPTNEIGJhclBhcmFtcy5pbmRleE9mKCdXVC5tY19pZCcs
MCk7DQoJdmFyIG5ld1BhciA9M0QgJyc7DQoJaWYgKGZyb20+PTNEMCl7DQoJ
CXZhciB0ZW1wID0zRCBiYXJQYXJhbXMuc3Vic3RyaW5nKGZyb20pOw0KCQl2
YXIgdG8gPTNEIHRlbXAuaW5kZXhPZignJicpOw0KCQlpZiAodG88MCl7DQoJ
CQluZXdQYXIgPTNEIGJhclBhcmFtcy5zdWJzdHJpbmcoZnJvbSs5KTsNCgkJ
CS8vIGFsZXJ0KCcxIC0gJyArIG5ld1Bhcik7DQoJCX0NCgkJZWxzZSB7DQoJ
CQluZXdQYXIgPTNEIGJhclBhcmFtcy5zdWJzdHJpbmcoZnJvbSs5LHRvKzEp
Ow0KCQkJLy8gYWxlcnQoJzIgLSAnICsgbmV3UGFyKTsNCgkJfQ0KCQluZXdQ
YXIgPTNEICcmV1QubWNfaWQ9M0QnICsgbmV3UGFyDQoJfT0yMA0KCXZhciBk
aW1YPTNEc2NyZWVuLndpZHRoOyAvL2xhcmdoZXp6YSBwYWdpbmENCgl2YXIg
ZGltWT0zRHNjcmVlbi5oZWlnaHQ7IC8vbHVuZ2hlenphIHBhZ2luYQ0KCWRl
c3RpbmF0aW9uID0zRCBkZXN0aW5hdGlvbiArIG5ld1BhcjsNCgkvLyBhbGVy
dChkZXN0aW5hdGlvbik7DQoJPQ0Kd2luZG93Lm9wZW4oZGVzdGluYXRpb24s
J25ld1dpbicsJ3Rvb2xiYXI9M0RubyxzdGF0dXM9M0RubyxzY3JvbGxiYXJz
PTNEeT0NCmVzLG1lbnViYXI9M0Rubyx3aWR0aD0zRCcrZGltWCsnLGhlaWdo
dD0zRCcrZGltWSsnLGxlZnQ9M0Q3MTIsID0NCnRvcD0zRDMwMCcpOw0KfQ0K
DQoNCg0KZnVuY3Rpb24gYWRkV3RQYXJhbVRBQihkZXN0aW5hdGlvbil7DQov
LyBJTVBPUlRBTlRFOiBEQSBVVElMSVpaQVJFIFNPTE8gTkVMTEUgQ0FNUEFH
TkUsIHNlcnZlIHBlciB0ZW5lcmUgaW4gPQ0KbWVtb3JpYSBpbCBjb2RpY2Ug
V1QgcXVhbG9yYSBzaSBhcnJpdmkgYWxsYSBsYW5kaW5nIHBhZ2UgZGEgcGFn
aW5hID0NCmludGVybWVkaWENCgl2YXIgYmFyUGFyYW1zID0zRCB3aW5kb3cu
bG9jYXRpb24uc2VhcmNoOw0KCXZhciBmcm9tID0zRCBiYXJQYXJhbXMuaW5k
ZXhPZignV1QubWNfaWQnLDApOw0KCXZhciBuZXdQYXIgPTNEICcnOw0KCWlm
IChmcm9tPj0zRDApew0KCQl2YXIgdGVtcCA9M0QgYmFyUGFyYW1zLnN1YnN0
cmluZyhmcm9tKTsNCgkJdmFyIHRvID0zRCB0ZW1wLmluZGV4T2YoJyYnKTsN
CgkJaWYgKHRvPDApew0KCQkJbmV3UGFyID0zRCBiYXJQYXJhbXMuc3Vic3Ry
aW5nKGZyb20rOSk7DQoJCQkvLyBhbGVydCgnMSAtICcgKyBuZXdQYXIpOw0K
CQl9DQoJCWVsc2Ugew0KCQkJbmV3UGFyID0zRCBiYXJQYXJhbXMuc3Vic3Ry
aW5nKGZyb20rOSx0bysxKTsNCgkJCS8vIGFsZXJ0KCcyIC0gJyArIG5ld1Bh
cik7DQoJCX0NCgkJbmV3UGFyID0zRCAnJldULm1jX2lkPTNEJyArIG5ld1Bh
cg0KCX09MjANCgl2YXIgZGltWD0zRHNjcmVlbi53aWR0aDsgLy9sYXJnaGV6
emEgcGFnaW5hDQoJdmFyIGRpbVk9M0RzY3JlZW4uaGVpZ2h0OyAvL2x1bmdo
ZXp6YSBwYWdpbmENCglkZXN0aW5hdGlvbiA9M0QgZGVzdGluYXRpb24gKyBu
ZXdQYXI7DQoJLy8gYWxlcnQoZGVzdGluYXRpb24pOw0KCXdpbmRvdy5sb2Nh
dGlvbi5ocmVmID0zRCBkZXN0aW5hdGlvbjsNCgk9DQovL3dpbmRvdy5vcGVu
KGRlc3RpbmF0aW9uLCduZXdXaW4nLCd0b29sYmFyPTNEeWVzLHN0YXR1cz0z
RHllcyxzY3JvbGxiYXJzPQ0KPTNEeWVzLG1lbnViYXI9M0R5ZXMsd2lkdGg9
M0QnK2RpbVgrJyxoZWlnaHQ9M0QnK2RpbVkrJyxsZWZ0PTNENzEyLCA9DQp0
b3A9M0QzMDAnKTsNCn0NCg0KZnVuY3Rpb24gY2hhbmdlV3RQYXJhbShsaW5r
LCBuZXdDb2RlLCBfbmV3V2luZG93KXsNCgkvLyBBIFQgVCBFIE4gWiBJIE8g
TiBFOj0yMA0KCS8vIHNlLCBuZWwgbGluayBkaSBwcm92ZW5pZW56YSwgZGkg
cGFyYW1ldHJpICJXVC5tY19pZCIgY2Ugbic9RTggcGk9RjkgPQ0KZGkgdW5v
LCBzb2xvIGlsIHByaW1vIHZpZW5lIGNvbnNpZGVyYXRvDQoJLy8gcGFyYW1l
dHJvIF9uZXdXaW5kb3cgPTNEIHNlIHRydWUgaWwgbGluayBjb250ZW51dG8g
aW4gJ2xpbmsnIHNhcj1FMCA9DQplc3NlcmUgYXBlcnRvIGluIHVuYSBudW92
YSBmaW5lc3RyYTsNCgkvLyBwYXJhbWV0cm8gbmV3Q29kZSA9M0QgY29kaWNl
IGRhIGFnZ2l1bmdlcmUgYWxsYSBmaW5lIGRlbCB2YWxvcmUgZGVsID0NCnBh
cmFtZXRybyAiV1QubWNfaWQiDQoJLy8gcGFyYW1ldHJvIGxpbmsgPTNEIHBh
Z2luYSBkaSBkZXN0aW5hemlvbmUgKG5vbiBkZXZlIGNvbnRlbmVyZSBhbHRy
aSA9DQpwYXJhbWV0cmkgIldULm1jX2lkIikNCiAJdmFyIGJhclBhcmFtcyA9
M0Qgd2luZG93LmxvY2F0aW9uLnNlYXJjaDsNCgl2YXIgZnJvbSA9M0QgYmFy
UGFyYW1zLmluZGV4T2YoJ1dULm1jX2lkJywwKTsNCgl2YXIgbmV3UGFyID0z
RCAnJzsNCglpZiAoZnJvbT49M0QwKXsNCgkJdmFyIHRlbXAgPTNEIGJhclBh
cmFtcy5zdWJzdHJpbmcoZnJvbSk7DQoJCXZhciB0byA9M0QgdGVtcC5pbmRl
eE9mKCcmJyk7DQoJCWlmICh0bzwwKXsNCgkJCW5ld1BhciA9M0QgYmFyUGFy
YW1zLnN1YnN0cmluZyhmcm9tKzkpOw0KCQkJLy9hbGVydCgnMSAtICcgKyBu
ZXdQYXIpOw0KCQl9DQoJCWVsc2Ugew0KCQkJbmV3UGFyID0zRCBiYXJQYXJh
bXMuc3Vic3RyaW5nKGZyb20rOSx0bysxKTsNCgkJCS8vYWxlcnQoJzIgLSAn
ICsgbmV3UGFyKTsNCgkJfQ0KCQl2YXIgZmlyc3RDaGFyID0zRCAnJzs9MjAN
CgkJaWYgKGxpbmsuaW5kZXhPZignPycpPDApDQoJCQlmaXJzdENoYXI9M0Qn
Pyc7DQoJCWVsc2UNCgkJCWZpcnN0Q2hhcj0zRCcmJzsNCgkJbmV3UGFyID0z
RCBmaXJzdENoYXIgKyAnV1QubWNfaWQ9M0QnICsgbmV3UGFyICsgbmV3Q29k
ZTsNCgl9DQoJbGluayA9M0QgbGluayArIG5ld1BhcjsNCglpZihfbmV3V2lu
ZG93PTNEPTNEdHJ1ZSl7DQoJCXZhciBkaW1YPTNEc2NyZWVuLndpZHRoOyAv
L2xhcmdoZXp6YSBwYWdpbmENCgkJdmFyIGRpbVk9M0RzY3JlZW4uaGVpZ2h0
OyAvL2x1bmdoZXp6YSBwYWdpbmENCgkJPQ0Kd2luZG93Lm9wZW4obGluaywn
bmV3V2luJywndG9vbGJhcj0zRHllcyxzdGF0dXM9M0R5ZXMsc2Nyb2xsYmFy
cz0zRHllcyxtZT0NCm51YmFyPTNEeWVzLHdpZHRoPTNEJytkaW1YKycsaGVp
Z2h0PTNEJytkaW1ZKycsbGVmdD0zRDcxMiwgdG9wPTNEMzAwJyk7DQoJCXJl
dHVybjsNCgl9DQoJaWYoX25ld1dpbmRvdz0zRD0zRGZhbHNlKXsNCgkJd2lu
ZG93LmxvY2F0aW9uLmhyZWY9M0RsaW5rOw0KCQlyZXR1cm47DQoJfQ0KfQ0K
DQoNCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBfMDFDQ0VDNzguQ0VCNTk4
QTANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQpD
b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlDQpD
b250ZW50LUxvY2F0aW9uOiBodHRwOi8vd3d3LmNhcnRhc2kuaXQvamF2YXNj
cmlwdC9nZXN0dXJsLmpzDQoNCglmdW5jdGlvbiBnbyhpZCkgew0KCQlnbyhp
ZCwnbnVsbCcsJ251bGwnKTsNCgl9DQoJZnVuY3Rpb24gZ28oaWQsIHBhcmFt
KSB7DQoJCWdvKGlkLHBhcmFtLCdudWxsJyk7DQoJfQ0KCWZ1bmN0aW9uIGdv
SHRtbChwYXJhbSwgcGFyYW0yKSB7DQoJCWRvY3VtZW50LmdvdG9wYWdlLmFj
dGlvbiA9M0QgaG9tZSArICIvY29tbW9uL2luZGV4LmpzcCI7DQoJCWRvY3Vt
ZW50LmdvdG9wYWdlLmpzcE5hbWUudmFsdWU9M0RwYXJhbTsNCiAgICBkb2N1
bWVudC5nb3RvcGFnZS5pZGMudmFsdWU9M0RwYXJhbTI7DQoJCWRvY3VtZW50
LmdvdG9wYWdlLnN1Ym1pdCgpOw0KCX0NCj0wOQ0KCWZ1bmN0aW9uIGdldFVy
bChqc3AsaG9tZVBhZ2Upez0wOQ0KCQl2YXIgdXJsID0zRCAiIjsNCgkJaWYo
anNwPTNEPTNEIi9kb25hemlvbmkvZG9uYS5qc3AiIHx8ID0NCmpzcD0zRD0z
RCIvbGF2b3JhcmVfaW5fY2FydGFzaS9tb2R1bG8uanNwIiB8fCA9DQpqc3A9
M0Q9M0QiL2xhdm9yYXJlX2luX2NhcnRhc2kvaW5zZXJpbWVudG8uanNwIiB8
fCA9DQpqc3A9M0Q9M0QibmFkbXVSdFZVWiIpew0KCQkJaWYgKGRvY3VtZW50
LlVSTC5pbmRleE9mKCJuZXdndHdzdiIpIT0zRC0xKXsNCgkJCQl1cmwgPTNE
IGdldE5hbWVIdHRwKCkgKyBob21lICsgIi9jb21tb24vaW5kZXguanNwIjsN
CgkJCX0gZWxzZSB7DQoJCQkJdXJsID0zRCBnZXROYW1lSHR0cHMoKSArIGhv
bWUgKyAiL2NvbW1vbi9pbmRleC5qc3AiOw0KCQkJfQ0KCQl9IGVsc2Ugew0K
CQkJaWYgKGhvbWVQYWdlKXsNCgkJCQlpZiAoZG9jdW1lbnQuVVJMLmluZGV4
T2YoImh0dHBzIikhPTNELTEpew0KCQkJCQl1cmwgPTNEIGdldE5hbWVIdHRw
KCkgKyBob21lICsgIi9pbmRleC5qc3AiOw0KCQkJCX0gZWxzZSB7DQoJCQkJ
CXVybCA9M0QgaG9tZSArICIvaW5kZXguanNwIjsNCgkJCQl9DQoJCQl9IGVs
c2Ugew0KCQkJCWlmIChkb2N1bWVudC5VUkwuaW5kZXhPZigiaHR0cHMiKSE9
M0QtMSl7DQoJCQkJCXVybCA9M0QgZ2V0TmFtZUh0dHAoKSArIGhvbWUgKyAi
L2NvbW1vbi9pbmRleC5qc3AiOw0KCQkJCX0gZWxzZSB7DQoJCQkJCXVybCA9
M0QgaG9tZSArICIvY29tbW9uL2luZGV4LmpzcCI7DQoJCQkJfQ0KCQkJfQ0K
CQl9DQoJCXJldHVybiAodXJsKTsNCgl9DQovKg0KCXVybCA9M0QgImh0dHA6
Ly9uZXdndHcuc2kuaXQvaW5kZXgvIjsNCglwYXJlbnQubG9jYXRpb24uaHJl
Zj0zRHVybDsNCiovCT0wOQ0KCWZ1bmN0aW9uIGdvKGlkLCBwYXJhbSwganNw
KSB7DQoJCXZhciB1cmwgPTNEJyc7DQoJCWlmKGlkPTNEPTNEIm5hZG11UnRW
VVoiKSB7DQoJCQl1cmwgPTNEIGdldFVybCgnbmFkbXVSdFZVWicsZmFsc2Up
Ow0KCQl9IGVsc2Ugew0KCQkJdXJsID0zRCBnZXRVcmwoanNwLGZhbHNlKTsN
CgkJfQ0KCQlpZihpZCE9M0QibnVsbCIpIHt1cmw9M0R1cmwrIj9pZD0zRCIr
aWR9DQoJCWRvY3VtZW50LmdvdG9wYWdlLmFjdGlvbiA9M0QgdXJsOw0KCQlk
b2N1bWVudC5nb3RvcGFnZS5wYXJhbS52YWx1ZT0zRHBhcmFtOw0KCQlkb2N1
bWVudC5nb3RvcGFnZS5qc3BOYW1lLnZhbHVlPTNEanNwOw0KCQlkb2N1bWVu
dC5nb3RvcGFnZS5zdWJtaXQoKTsNCgl9DQoJZnVuY3Rpb24gZ29qc3AoanNw
LCBwYXJhbSkgew0KCQlnbygnbnVsbCcscGFyYW0sanNwKTsNCgl9DQo9MDkN
CglmdW5jdGlvbiBnb0hvbWUoaWQpIHsNCgkJZG9jdW1lbnQuZ290b3BhZ2Uu
YWN0aW9uID0zRCBnZXRVcmwoIiIsdHJ1ZSkgKyAiP2lkPTNEIitpZDsgLy9o
b21lICsgPQ0KIi9pbmRleC5qc3A/aWQ9M0QiK2lkOw0KCQlkb2N1bWVudC5n
b3RvcGFnZS5zdWJtaXQoKTsNCgl9DQoNCglmdW5jdGlvbiBhcHJpQ29tbShp
ZCkgew0KCQlpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYycraWQpIT0z
RG51bGwpew0KCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MnK2lkKS5j
bGFzc05hbWUgPTNEID0NCidsaW5rUHJpdmF0aUJvbGQtSE9WRVInOw0KCQl9
DQoJfQ0KDQoJZnVuY3Rpb24gYXByaVNlcnYoaWQpIHsNCgkJZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3MnK2lkKS5jbGFzc05hbWUgPTNEICdsaW5rR3Jp
Z2lvQm9sZC1IT1ZFUic7DQoJfQ0KCWZ1bmN0aW9uIGdvQm94KGVsZW1lbnQp
IHsNCgkJZG9jdW1lbnQuZ290b3BhZ2UuYWN0aW9uID0zRCBnZXRVcmwoIiIs
ZmFsc2UpICsgIj9pZD0zRCIrZWxlbWVudC52YWx1ZSA9DQo7Ly9ob21lICsg
Ii9jb21tb24vaW5kZXguanNwP2lkPTNEIitlbGVtZW50LnZhbHVlOw0KCQlk
b2N1bWVudC5nb3RvcGFnZS5zdWJtaXQoKTsNCgl9DQovLwlmdW5jdGlvbiBn
b0ZvY3Vzb24ocGFyYW0sIHBhcmFtMikgew0KLy8JCWRvY3VtZW50LmdvdG9w
YWdlLmFjdGlvbiA9M0RnZXRVcmwoIiIsZmFsc2UpIDsvLyBob21lICsgPQ0K
Ii9jb21tb24vaW5kZXguanNwIjsNCi8vCQlkb2N1bWVudC5nb3RvcGFnZS5u
ZXdzUGFnZS52YWx1ZT0zRHBhcmFtOw0KLy8gICAgZG9jdW1lbnQuZ290b3Bh
Z2UucGFyYW0udmFsdWU9M0RwYXJhbTI7DQovLwkJZG9jdW1lbnQuZ290b3Bh
Z2Uuc3VibWl0KCk7DQovLwl9DQoJZnVuY3Rpb24gZ29OZXdzKHBhcmFtKSB7
DQoJCWRvY3VtZW50LmdvdG9wYWdlLmFjdGlvbiA9M0QgZ2V0VXJsKCIiLGZh
bHNlKSA7Ly9ob21lICsgPQ0KIi9jb21tb24vaW5kZXguanNwIjsNCgkJZG9j
dW1lbnQuZ290b3BhZ2UubmV3c1BhZ2UudmFsdWU9M0RwYXJhbTsNCgkJZG9j
dW1lbnQuZ290b3BhZ2Uuc3VibWl0KCk7DQoJfQ0KPTA5DQoJZnVuY3Rpb24g
Z2V0TmFtZUh0dHBzKCl7DQoJCXZhciBuYW1lID0zRCIiOw0KCQl2YXIgZmlu
ZT0zRCBkb2N1bWVudC5VUkwuaW5kZXhPZigiLyIsMTApOw0KCQl2YXIgaW5p
ID0zRCBkb2N1bWVudC5VUkwuaW5kZXhPZigiLy8iKTsNCgkJaWYgKGZpbmUg
IT0zRCAtMSl7DQoJCQluYW1lPTNEZG9jdW1lbnQuVVJMLnN1YnN0cmluZyhp
bmkrMixmaW5lKTsNCgkJCW5hbWU9M0QiaHR0cHM6Ly8iICsgbmFtZSArIHBv
cnRhSHR0cHM7DQoJCX09MjANCgkJcmV0dXJuIChuYW1lKTsNCgl9DQo9MDkN
CglmdW5jdGlvbiBnZXROYW1lSHR0cCgpew0KCQl2YXIgbmFtZSA9M0QiIjsN
CgkJdmFyIGZpbmU9M0QgZG9jdW1lbnQuVVJMLmluZGV4T2YoIi8iLDEwKTsN
CgkJaWYgKGRvY3VtZW50LlVSTC5pbmRleE9mKCI6IiwxMCkhPTNEIi0xIikg
ew0KCQkJZmluZT0zRCBkb2N1bWVudC5VUkwuaW5kZXhPZigiOiIsMTApOw0K
CQl9DQoJCXZhciBpbmkgPTNEIGRvY3VtZW50LlVSTC5pbmRleE9mKCIvLyIp
Ow0KCQlpZiAoZmluZSAhPTNEIC0xKXsNCgkJCW5hbWU9M0Rkb2N1bWVudC5V
Ukwuc3Vic3RyaW5nKGluaSsyLGZpbmUpOw0KCQkJbmFtZT0zRCJodHRwOi8v
IiArIG5hbWU7PTIwDQoJCX09MjANCgkJcmV0dXJuIChuYW1lKTsNCgl9DQoN
Cg0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDRUM3OC5DRUI1OThB
MA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCkNv
bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCkNv
bnRlbnQtTG9jYXRpb246IGh0dHA6Ly83Mi4yOS43OC4xNTcvfm1hcmNvc2xp
L29ubGluZS9ndHdwYWdlcy9TY3JpcHRzL0FDX1J1bkFjdGl2ZUNvbnRlbnQu
anMNCg0KLy92MS4wDQovL0NvcHlyaWdodCAyMDA2IEFkb2JlIFN5c3RlbXMs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmZ1bmN0aW9uIEFDX0FkZEV4
dGVuc2lvbihzcmMsIGV4dCkNCnsNCiAgaWYgKHNyYy5pbmRleE9mKCc/Jykg
IT0zRCAtMSkNCiAgICByZXR1cm4gc3JjLnJlcGxhY2UoL1w/LywgZXh0Kyc/
Jyk7PTIwDQogIGVsc2UNCiAgICByZXR1cm4gc3JjICsgZXh0Ow0KfQ0KDQpm
dW5jdGlvbiBBQ19HZW5lcmF0ZW9iaihvYmpBdHRycywgcGFyYW1zLCBlbWJl
ZEF0dHJzKT0yMA0Kez0yMA0KICB2YXIgc3RyID0zRCAnPG9iamVjdCAnOw0K
ICBmb3IgKHZhciBpIGluIG9iakF0dHJzKQ0KICAgIHN0ciArPTNEIGkgKyAn
PTNEIicgKyBvYmpBdHRyc1tpXSArICciICc7DQogIHN0ciArPTNEICc+JzsN
CiAgZm9yICh2YXIgaSBpbiBwYXJhbXMpDQogICAgc3RyICs9M0QgJzxwYXJh
bSBuYW1lPTNEIicgKyBpICsgJyIgdmFsdWU9M0QiJyArIHBhcmFtc1tpXSAr
ICciIC8+ID0NCic7DQogIHN0ciArPTNEICc8ZW1iZWQgJzsNCiAgZm9yICh2
YXIgaSBpbiBlbWJlZEF0dHJzKQ0KICAgIHN0ciArPTNEIGkgKyAnPTNEIicg
KyBlbWJlZEF0dHJzW2ldICsgJyIgJzsNCiAgc3RyICs9M0QgJyA+PC9lbWJl
ZD48L29iamVjdD4nOw0KDQogIGRvY3VtZW50LndyaXRlKHN0cik7DQp9DQoN
CmZ1bmN0aW9uIEFDX0ZMX1J1bkNvbnRlbnQoKXsNCiAgdmFyIHJldCA9M0Q9
MjANCiAgICBBQ19HZXRBcmdzDQogICAgKCAgYXJndW1lbnRzLCAiLnN3ZiIs
ICJtb3ZpZSIsID0NCiJjbHNpZDpkMjdjZGI2ZS1hZTZkLTExY2YtOTZiOC00
NDQ1NTM1NDAwMDAiDQogICAgICwgImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZl
LWZsYXNoIg0KICAgICk7DQogIEFDX0dlbmVyYXRlb2JqKHJldC5vYmpBdHRy
cywgcmV0LnBhcmFtcywgcmV0LmVtYmVkQXR0cnMpOw0KfQ0KDQpmdW5jdGlv
biBBQ19TV19SdW5Db250ZW50KCl7DQogIHZhciByZXQgPTNEPTIwDQogICAg
QUNfR2V0QXJncw0KICAgICggIGFyZ3VtZW50cywgIi5kY3IiLCAic3JjIiwg
PQ0KImNsc2lkOjE2NkIxQkNBLTNGOUMtMTFDRi04MDc1LTQ0NDU1MzU0MDAw
MCINCiAgICAgLCBudWxsDQogICAgKTsNCiAgQUNfR2VuZXJhdGVvYmoocmV0
Lm9iakF0dHJzLCByZXQucGFyYW1zLCByZXQuZW1iZWRBdHRycyk7DQp9DQoN
CmZ1bmN0aW9uIEFDX0dldEFyZ3MoYXJncywgZXh0LCBzcmNQYXJhbU5hbWUs
IGNsYXNzaWQsIG1pbWVUeXBlKXsNCiAgdmFyIHJldCA9M0QgbmV3IE9iamVj
dCgpOw0KICByZXQuZW1iZWRBdHRycyA9M0QgbmV3IE9iamVjdCgpOw0KICBy
ZXQucGFyYW1zID0zRCBuZXcgT2JqZWN0KCk7DQogIHJldC5vYmpBdHRycyA9
M0QgbmV3IE9iamVjdCgpOw0KICBmb3IgKHZhciBpPTNEMDsgaSA8IGFyZ3Mu
bGVuZ3RoOyBpPTNEaSsyKXsNCiAgICB2YXIgY3VyckFyZyA9M0QgYXJnc1tp
XS50b0xvd2VyQ2FzZSgpOyAgID0yMA0KDQogICAgc3dpdGNoIChjdXJyQXJn
KXs9MDkNCiAgICAgIGNhc2UgImNsYXNzaWQiOg0KICAgICAgICBicmVhazsN
CiAgICAgIGNhc2UgInBsdWdpbnNwYWdlIjoNCiAgICAgICAgcmV0LmVtYmVk
QXR0cnNbYXJnc1tpXV0gPTNEIGFyZ3NbaSsxXTsNCiAgICAgICAgYnJlYWs7
DQogICAgICBjYXNlICJzcmMiOg0KICAgICAgY2FzZSAibW92aWUiOj0wOQ0K
ICAgICAgICBhcmdzW2krMV0gPTNEIEFDX0FkZEV4dGVuc2lvbihhcmdzW2kr
MV0sIGV4dCk7DQogICAgICAgIHJldC5lbWJlZEF0dHJzWyJzcmMiXSA9M0Qg
YXJnc1tpKzFdOw0KICAgICAgICByZXQucGFyYW1zW3NyY1BhcmFtTmFtZV0g
PTNEIGFyZ3NbaSsxXTsNCiAgICAgICAgYnJlYWs7DQogICAgICBjYXNlICJv
bmFmdGVydXBkYXRlIjoNCiAgICAgIGNhc2UgIm9uYmVmb3JldXBkYXRlIjoN
CiAgICAgIGNhc2UgIm9uYmx1ciI6DQogICAgICBjYXNlICJvbmNlbGxjaGFu
Z2UiOg0KICAgICAgY2FzZSAib25jbGljayI6DQogICAgICBjYXNlICJvbmRi
bENsaWNrIjoNCiAgICAgIGNhc2UgIm9uZHJhZyI6DQogICAgICBjYXNlICJv
bmRyYWdlbmQiOg0KICAgICAgY2FzZSAib25kcmFnZW50ZXIiOg0KICAgICAg
Y2FzZSAib25kcmFnbGVhdmUiOg0KICAgICAgY2FzZSAib25kcmFnb3ZlciI6
DQogICAgICBjYXNlICJvbmRyb3AiOg0KICAgICAgY2FzZSAib25maW5pc2gi
Og0KICAgICAgY2FzZSAib25mb2N1cyI6DQogICAgICBjYXNlICJvbmhlbHAi
Og0KICAgICAgY2FzZSAib25tb3VzZWRvd24iOg0KICAgICAgY2FzZSAib25t
b3VzZXVwIjoNCiAgICAgIGNhc2UgIm9ubW91c2VvdmVyIjoNCiAgICAgIGNh
c2UgIm9ubW91c2Vtb3ZlIjoNCiAgICAgIGNhc2UgIm9ubW91c2VvdXQiOg0K
ICAgICAgY2FzZSAib25rZXlwcmVzcyI6DQogICAgICBjYXNlICJvbmtleWRv
d24iOg0KICAgICAgY2FzZSAib25rZXl1cCI6DQogICAgICBjYXNlICJvbmxv
YWQiOg0KICAgICAgY2FzZSAib25sb3NlY2FwdHVyZSI6DQogICAgICBjYXNl
ICJvbnByb3BlcnR5Y2hhbmdlIjoNCiAgICAgIGNhc2UgIm9ucmVhZHlzdGF0
ZWNoYW5nZSI6DQogICAgICBjYXNlICJvbnJvd3NkZWxldGUiOg0KICAgICAg
Y2FzZSAib25yb3dlbnRlciI6DQogICAgICBjYXNlICJvbnJvd2V4aXQiOg0K
ICAgICAgY2FzZSAib25yb3dzaW5zZXJ0ZWQiOg0KICAgICAgY2FzZSAib25z
dGFydCI6DQogICAgICBjYXNlICJvbnNjcm9sbCI6DQogICAgICBjYXNlICJv
bmJlZm9yZWVkaXRmb2N1cyI6DQogICAgICBjYXNlICJvbmFjdGl2YXRlIjoN
CiAgICAgIGNhc2UgIm9uYmVmb3JlZGVhY3RpdmF0ZSI6DQogICAgICBjYXNl
ICJvbmRlYWN0aXZhdGUiOg0KICAgICAgY2FzZSAidHlwZSI6DQogICAgICBj
YXNlICJjb2RlYmFzZSI6DQogICAgICAgIHJldC5vYmpBdHRyc1thcmdzW2ld
XSA9M0QgYXJnc1tpKzFdOw0KICAgICAgICBicmVhazsNCiAgICAgIGNhc2Ug
IndpZHRoIjoNCiAgICAgIGNhc2UgImhlaWdodCI6DQogICAgICBjYXNlICJh
bGlnbiI6DQogICAgICBjYXNlICJ2c3BhY2UiOj0yMA0KICAgICAgY2FzZSAi
aHNwYWNlIjoNCiAgICAgIGNhc2UgImNsYXNzIjoNCiAgICAgIGNhc2UgInRp
dGxlIjoNCiAgICAgIGNhc2UgImFjY2Vzc2tleSI6DQogICAgICBjYXNlICJu
YW1lIjoNCiAgICAgIGNhc2UgImlkIjoNCiAgICAgIGNhc2UgInRhYmluZGV4
IjoNCiAgICAgICAgcmV0LmVtYmVkQXR0cnNbYXJnc1tpXV0gPTNEIHJldC5v
YmpBdHRyc1thcmdzW2ldXSA9M0QgYXJnc1tpKzFdOw0KICAgICAgICBicmVh
azsNCiAgICAgIGRlZmF1bHQ6DQogICAgICAgIHJldC5lbWJlZEF0dHJzW2Fy
Z3NbaV1dID0zRCByZXQucGFyYW1zW2FyZ3NbaV1dID0zRCBhcmdzW2krMV07
DQogICAgfQ0KICB9DQogIHJldC5vYmpBdHRyc1siY2xhc3NpZCJdID0zRCBj
bGFzc2lkOw0KICBpZiAobWltZVR5cGUpIHJldC5lbWJlZEF0dHJzWyJ0eXBl
Il0gPTNEIG1pbWVUeXBlOw0KICByZXR1cm4gcmV0Ow0KfQ0KDQotLS0tLS09
X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0NFQzc4LkNFQjU5OEEwDQpDb250ZW50
LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVudC1UcmFu
c2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KQ29udGVudC1Mb2Nh
dGlvbjogaHR0cDovL3d3dy5jYXJ0YXNpLml0L2FjY29yZGlvbi9saWIvanF1
ZXJ5LmRpbWVuc2lvbnMuanMNCg0KLyogQ29weXJpZ2h0IChjKSAyMDA3IFBh
dWwgQmFrYXVzIChwYXVsLmJha2F1c0Bnb29nbGVtYWlsLmNvbSkgYW5kID0N
CkJyYW5kb24gQWFyb24gKGJyYW5kb24uYWFyb25AZ21haWwuY29tIHx8IGh0
dHA6Ly9icmFuZG9uYWFyb24ubmV0KT0wQT0NCiAqIER1YWwgbGljZW5zZWQg
dW5kZXIgdGhlIE1JVCA9DQooaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9s
aWNlbnNlcy9taXQtbGljZW5zZS5waHApPTBBPQ0KICogYW5kIEdQTCAoaHR0
cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ncGwtbGljZW5zZS5w
aHApIGxpY2Vuc2VzLj0wQT0NCiAqPTBBPQ0KICogJExhc3RDaGFuZ2VkRGF0
ZTogMjAwNy0xMC0wNiAyMDoxMToxNSArMDIwMCAoU2EsIDA2IE9rdCAyMDA3
KSAkPTBBPQ0KICogJFJldjogMzU4MSAkPTBBPQ0KICo9MEE9DQogKiBWZXJz
aW9uOiBAVkVSU0lPTj0wQT0NCiAqPTBBPQ0KICogUmVxdWlyZXM6IGpRdWVy
eSAxLjIrPTBBPQ0KICovPTBBPQ0KPTBBPQ0KKGZ1bmN0aW9uKCQpez0wQT0N
Cgk9MEE9DQokLmRpbWVuc2lvbnMgPTNEIHs9MEE9DQoJdmVyc2lvbjogJ0BW
RVJTSU9OJz0wQT0NCn07PTBBPQ0KPTBBPQ0KLy8gQ3JlYXRlIGlubmVySGVp
Z2h0LCBpbm5lcldpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBt
ZXRob2RzPTBBPQ0KJC5lYWNoKCBbICdIZWlnaHQnLCAnV2lkdGgnIF0sIGZ1
bmN0aW9uKGksIG5hbWUpez0wQT0NCgk9MEE9DQoJLy8gaW5uZXJIZWlnaHQg
YW5kIGlubmVyV2lkdGg9MEE9DQoJJC5mblsgJ2lubmVyJyArIG5hbWUgXSA9
M0QgZnVuY3Rpb24oKSB7PTBBPQ0KCQlpZiAoIXRoaXNbMF0pIHJldHVybjs9
MEE9DQoJCT0wQT0NCgkJdmFyIHRvcmwgPTNEIG5hbWUgPTNEPTNEICdIZWln
aHQnID8gJ1RvcCcgICAgOiAnTGVmdCcsICAvLyB0b3Agb3IgbGVmdD0wQT0N
CgkJICAgIGJvcnIgPTNEIG5hbWUgPTNEPTNEICdIZWlnaHQnID8gJ0JvdHRv
bScgOiAnUmlnaHQnOyAvLyBib3R0b20gb3IgPQ0KcmlnaHQ9MEE9DQoJCT0w
QT0NCgkJcmV0dXJuIG51bSggdGhpcywgbmFtZS50b0xvd2VyQ2FzZSgpICkg
KyBudW0odGhpcywgJ3BhZGRpbmcnICsgdG9ybCkgKyA9DQpudW0odGhpcywg
J3BhZGRpbmcnICsgYm9ycik7PTBBPQ0KCX07PTBBPQ0KCT0wQT0NCgkvLyBv
dXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aD0wQT0NCgkkLmZuWyAnb3V0ZXIn
ICsgbmFtZSBdID0zRCBmdW5jdGlvbihvcHRpb25zKSB7PTBBPQ0KCQlpZiAo
IXRoaXNbMF0pIHJldHVybjs9MEE9DQoJCT0wQT0NCgkJdmFyIHRvcmwgPTNE
IG5hbWUgPTNEPTNEICdIZWlnaHQnID8gJ1RvcCcgICAgOiAnTGVmdCcsICAv
LyB0b3Agb3IgbGVmdD0wQT0NCgkJICAgIGJvcnIgPTNEIG5hbWUgPTNEPTNE
ICdIZWlnaHQnID8gJ0JvdHRvbScgOiAnUmlnaHQnOyAvLyBib3R0b20gb3Ig
PQ0KcmlnaHQ9MEE9DQoJCT0wQT0NCgkJb3B0aW9ucyA9M0QgJC5leHRlbmQo
eyBtYXJnaW46IGZhbHNlIH0sIG9wdGlvbnMgfHwge30pOz0wQT0NCgkJPTBB
PQ0KCQlyZXR1cm4gbnVtKCB0aGlzLCBuYW1lLnRvTG93ZXJDYXNlKCkgKT0w
QT0NCgkJCQkrIG51bSh0aGlzLCAnYm9yZGVyJyArIHRvcmwgKyAnV2lkdGgn
KSArIG51bSh0aGlzLCAnYm9yZGVyJyArIGJvcnIgKyA9DQonV2lkdGgnKT0w
QT0NCgkJCQkrIG51bSh0aGlzLCAncGFkZGluZycgKyB0b3JsKSArIG51bSh0
aGlzLCAncGFkZGluZycgKyBib3JyKT0wQT0NCgkJCQkrIChvcHRpb25zLm1h
cmdpbiA/IChudW0odGhpcywgJ21hcmdpbicgKyB0b3JsKSArIG51bSh0aGlz
LCAnbWFyZ2luJyA9DQorIGJvcnIpKSA6IDApOz0wQT0NCgl9Oz0wQT0NCn0p
Oz0wQT0NCj0wQT0NCi8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFuZCBzY3JvbGxU
b3AgbWV0aG9kcz0wQT0NCiQuZWFjaCggWydMZWZ0JywgJ1RvcCddLCBmdW5j
dGlvbihpLCBuYW1lKSB7PTBBPQ0KCSQuZm5bICdzY3JvbGwnICsgbmFtZSBd
ID0zRCBmdW5jdGlvbih2YWwpIHs9MEE9DQoJCWlmICghdGhpc1swXSkgcmV0
dXJuOz0wQT0NCgkJPTBBPQ0KCQlyZXR1cm4gdmFsICE9M0QgdW5kZWZpbmVk
ID89MEE9DQoJCT0wQT0NCgkJCS8vIFNldCB0aGUgc2Nyb2xsIG9mZnNldD0w
QT0NCgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHs9MEE9DQoJCQkJdGhpcyA9
M0Q9M0Qgd2luZG93IHx8IHRoaXMgPTNEPTNEIGRvY3VtZW50ID89MEE9DQoJ
CQkJCXdpbmRvdy5zY3JvbGxUbyggPTBBPQ0KCQkJCQkJbmFtZSA9M0Q9M0Qg
J0xlZnQnID8gdmFsIDogJCh3aW5kb3cpWyAnc2Nyb2xsTGVmdCcgXSgpLD0w
QT0NCgkJCQkJCW5hbWUgPTNEPTNEICdUb3AnICA/IHZhbCA6ICQod2luZG93
KVsgJ3Njcm9sbFRvcCcgIF0oKT0wQT0NCgkJCQkJKSA6PTBBPQ0KCQkJCQl0
aGlzWyAnc2Nyb2xsJyArIG5hbWUgXSA9M0QgdmFsOz0wQT0NCgkJCX0pIDo9
MEE9DQoJCQk9MEE9DQoJCQkvLyBSZXR1cm4gdGhlIHNjcm9sbCBvZmZzZXQ9
MEE9DQoJCQl0aGlzWzBdID0zRD0zRCB3aW5kb3cgfHwgdGhpc1swXSA9M0Q9
M0QgZG9jdW1lbnQgPz0wQT0NCgkJCQlzZWxmWyAobmFtZSA9M0Q9M0QgJ0xl
ZnQnID8gJ3BhZ2VYT2Zmc2V0JyA6ICdwYWdlWU9mZnNldCcpIF0gfHw9MEE9
DQoJCQkJCSQuYm94TW9kZWwgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
WyAnc2Nyb2xsJyArIG5hbWUgXSB8fD0wQT0NCgkJCQkJZG9jdW1lbnQuYm9k
eVsgJ3Njcm9sbCcgKyBuYW1lIF0gOj0wQT0NCgkJCQl0aGlzWzBdWyAnc2Ny
b2xsJyArIG5hbWUgXTs9MEE9DQoJfTs9MEE9DQp9KTs9MEE9DQo9MEE9DQok
LmZuLmV4dGVuZCh7PTBBPQ0KCXBvc2l0aW9uOiBmdW5jdGlvbigpIHs9MEE9
DQoJCXZhciBsZWZ0ID0zRCAwLCB0b3AgPTNEIDAsIGVsZW0gPTNEIHRoaXNb
MF0sIG9mZnNldCwgcGFyZW50T2Zmc2V0LCA9DQpvZmZzZXRQYXJlbnQsIHJl
c3VsdHM7PTBBPQ0KCQk9MEE9DQoJCWlmIChlbGVtKSB7PTBBPQ0KCQkJLy8g
R2V0ICpyZWFsKiBvZmZzZXRQYXJlbnQ9MEE9DQoJCQlvZmZzZXRQYXJlbnQg
PTNEIHRoaXMub2Zmc2V0UGFyZW50KCk7PTBBPQ0KCQkJPTBBPQ0KCQkJLy8g
R2V0IGNvcnJlY3Qgb2Zmc2V0cz0wQT0NCgkJCW9mZnNldCAgICAgICA9M0Qg
dGhpcy5vZmZzZXQoKTs9MEE9DQoJCQlwYXJlbnRPZmZzZXQgPTNEIG9mZnNl
dFBhcmVudC5vZmZzZXQoKTs9MEE9DQoJCQk9MEE9DQoJCQkvLyBTdWJ0cmFj
dCBlbGVtZW50IG1hcmdpbnM9MEE9DQoJCQlvZmZzZXQudG9wICAtPTNEIG51
bShlbGVtLCAnbWFyZ2luVG9wJyk7PTBBPQ0KCQkJb2Zmc2V0LmxlZnQgLT0z
RCBudW0oZWxlbSwgJ21hcmdpbkxlZnQnKTs9MEE9DQoJCQk9MEE9DQoJCQkv
LyBBZGQgb2Zmc2V0UGFyZW50IGJvcmRlcnM9MEE9DQoJCQlwYXJlbnRPZmZz
ZXQudG9wICArPTNEIG51bShvZmZzZXRQYXJlbnQsICdib3JkZXJUb3BXaWR0
aCcpOz0wQT0NCgkJCXBhcmVudE9mZnNldC5sZWZ0ICs9M0QgbnVtKG9mZnNl
dFBhcmVudCwgJ2JvcmRlckxlZnRXaWR0aCcpOz0wQT0NCgkJCT0wQT0NCgkJ
CS8vIFN1YnRyYWN0IHRoZSB0d28gb2Zmc2V0cz0wQT0NCgkJCXJlc3VsdHMg
PTNEIHs9MEE9DQoJCQkJdG9wOiAgb2Zmc2V0LnRvcCAgLSBwYXJlbnRPZmZz
ZXQudG9wLD0wQT0NCgkJCQlsZWZ0OiBvZmZzZXQubGVmdCAtIHBhcmVudE9m
ZnNldC5sZWZ0PTBBPQ0KCQkJfTs9MEE9DQoJCX09MEE9DQoJCT0wQT0NCgkJ
cmV0dXJuIHJlc3VsdHM7PTBBPQ0KCX0sPTBBPQ0KCT0wQT0NCglvZmZzZXRQ
YXJlbnQ6IGZ1bmN0aW9uKCkgez0wQT0NCgkJdmFyIG9mZnNldFBhcmVudCA9
M0QgdGhpc1swXS5vZmZzZXRQYXJlbnQ7PTBBPQ0KCQl3aGlsZSAoIG9mZnNl
dFBhcmVudCAmJiAoIS9eYm9keXxodG1sJC9pLnRlc3Qob2Zmc2V0UGFyZW50
LnRhZ05hbWUpICYmID0NCiQuY3NzKG9mZnNldFBhcmVudCwgJ3Bvc2l0aW9u
JykgPTNEPTNEICdzdGF0aWMnKSApPTBBPQ0KCQkJb2Zmc2V0UGFyZW50ID0z
RCBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50Oz0wQT0NCgkJcmV0dXJuICQo
b2Zmc2V0UGFyZW50KTs9MEE9DQoJfT0wQT0NCn0pOz0wQT0NCj0wQT0NCmZ1
bmN0aW9uIG51bShlbCwgcHJvcCkgez0wQT0NCglyZXR1cm4gcGFyc2VJbnQo
JC5jc3MoZWwuanF1ZXJ5P2VsWzBdOmVsLHByb3ApKXx8MDs9MEE9DQp9Oz0w
QT0NCj0wQT0NCn0pKGpRdWVyeSk7DQotLS0tLS09X05leHRQYXJ0XzAwMF8w
MDAwXzAxQ0NFQzc4LkNFQjU5OEEwDQpDb250ZW50LVR5cGU6IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog
cXVvdGVkLXByaW50YWJsZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0cDovL3d3
dy5jYXJ0YXNpLml0L2FjY29yZGlvbi9qcXVlcnkuYWNjb3JkaW9uLmpzDQoN
Ci8qDQogKiBqUXVlcnkgVUkgQWNjb3JkaW9uIDEuNg0KICo9MjANCiAqIENv
cHlyaWdodCAoYykgMjAwNyBKPUMzPUI2cm4gWmFlZmZlcmVyDQogKg0KICog
aHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9BY2NvcmRpb24NCiAqDQogKiBE
dWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoN
CiAqICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQt
bGljZW5zZS5waHANCiAqICAgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz
L2dwbC5odG1sDQogKg0KICogUmV2aXNpb246ICRJZDoganF1ZXJ5LmFjY29y
ZGlvbi5qcyA0ODc2IDIwMDgtMDMtMDggMTE6NDk6MDRaID0NCmpvZXJuLnph
ZWZmZXJlciAkDQogKg0KICovDQoNCjsoZnVuY3Rpb24oJCkgew0KPTA5DQov
LyBJZiB0aGUgVUkgc2NvcGUgaXMgbm90IGF2YWlsYWJsZSwgYWRkIGl0DQok
LnVpID0zRCAkLnVpIHx8IHt9Ow0KDQokLmZuLmV4dGVuZCh7DQoJYWNjb3Jk
aW9uOiBmdW5jdGlvbihvcHRpb25zLCBkYXRhKSB7DQoJCXZhciBhcmdzID0z
RCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOw0K
DQoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7DQoJCQlpZiAodHlw
ZW9mIG9wdGlvbnMgPTNEPTNEICJzdHJpbmciKSB7DQoJCQkJdmFyIGFjY29y
ZGlvbiA9M0QgJC5kYXRhKHRoaXMsICJ1aS1hY2NvcmRpb24iKTsNCgkJCQlh
Y2NvcmRpb25bb3B0aW9uc10uYXBwbHkoYWNjb3JkaW9uLCBhcmdzKTsNCgkJ
CS8vIElOSVQgd2l0aCBvcHRpb25hbCBvcHRpb25zDQoJCQl9IGVsc2UgaWYg
KCEkKHRoaXMpLmlzKCIudWktYWNjb3JkaW9uIikpDQoJCQkJJC5kYXRhKHRo
aXMsICJ1aS1hY2NvcmRpb24iLCBuZXcgJC51aS5hY2NvcmRpb24odGhpcywg
b3B0aW9ucykpOw0KCQl9KTsNCgl9LA0KCS8vIGRlcHJlY2F0ZWQsIHVzZSBh
Y2NvcmRpb24oImFjdGl2YXRlIiwgaW5kZXgpIGluc3RlYWQNCglhY3RpdmF0
ZTogZnVuY3Rpb24oaW5kZXgpIHsNCgkJcmV0dXJuIHRoaXMuYWNjb3JkaW9u
KCJhY3RpdmF0ZSIsIGluZGV4KTsNCgl9DQp9KTsNCg0KJC51aS5hY2NvcmRp
b24gPTNEIGZ1bmN0aW9uKGNvbnRhaW5lciwgb3B0aW9ucykgew0KPTA5DQoJ
Ly8gc2V0dXAgY29uZmlndXJhdGlvbg0KCXRoaXMub3B0aW9ucyA9M0Qgb3B0
aW9ucyA9M0QgJC5leHRlbmQoe30sICQudWkuYWNjb3JkaW9uLmRlZmF1bHRz
LCA9DQpvcHRpb25zKTsNCgl0aGlzLmVsZW1lbnQgPTNEIGNvbnRhaW5lcjsN
Cj0wOQ0KCSQoY29udGFpbmVyKS5hZGRDbGFzcygidWktYWNjb3JkaW9uIik7
DQo9MDkNCglpZiAoIG9wdGlvbnMubmF2aWdhdGlvbiApIHsNCgkJdmFyIGN1
cnJlbnQgPTNEID0NCiQoY29udGFpbmVyKS5maW5kKCJoNCIpLmZpbHRlcihv
cHRpb25zLm5hdmlnYXRpb25GaWx0ZXIpOw0KCQlpZiAoIGN1cnJlbnQubGVu
Z3RoICkgew0KCQkJaWYgKCBjdXJyZW50LmZpbHRlcihvcHRpb25zLmhlYWRl
cikubGVuZ3RoICkgew0KCQkJCW9wdGlvbnMuYWN0aXZlID0zRCBjdXJyZW50
Ow0KCQkJfSBlbHNlIHsNCgkJCQlvcHRpb25zLmFjdGl2ZSA9M0QgY3VycmVu
dC5wYXJlbnQoKS5wYXJlbnQoKS5wcmV2KCk7DQoJCQkJY3VycmVudC5hZGRD
bGFzcygiY3VycmVudCIpOw0KCQkJfQ0KCQl9DQoJfQ0KPTA5DQoJLy8gY2Fs
Y3VsYXRlIGFjdGl2ZSBpZiBub3Qgc3BlY2lmaWVkLCB1c2luZyB0aGUgZmly
c3QgaGVhZGVyDQoJb3B0aW9ucy5oZWFkZXJzID0zRCAkKGNvbnRhaW5lciku
ZmluZChvcHRpb25zLmhlYWRlcik7DQoJb3B0aW9ucy5hY3RpdmUgPTNEIGZp
bmRBY3RpdmUob3B0aW9ucy5oZWFkZXJzLCBvcHRpb25zLmFjdGl2ZSk7DQoN
CglpZiAoIG9wdGlvbnMuZmlsbFNwYWNlICkgew0KCQl2YXIgbWF4SGVpZ2h0
ID0zRCAkKGNvbnRhaW5lcikucGFyZW50KCkuaGVpZ2h0KCk7DQoJCW9wdGlv
bnMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJbWF4SGVpZ2h0IC09
M0QgJCh0aGlzKS5vdXRlckhlaWdodCgpOw0KCQl9KTsNCgkJdmFyIG1heFBh
ZGRpbmcgPTNEIDA7DQoJCW9wdGlvbnMuaGVhZGVycy5uZXh0KCkuZWFjaChm
dW5jdGlvbigpIHsNCgkJCW1heFBhZGRpbmcgPTNEIE1hdGgubWF4KG1heFBh
ZGRpbmcsICQodGhpcykuaW5uZXJIZWlnaHQoKSAtID0NCiQodGhpcykuaGVp
Z2h0KCkpOw0KCQl9KS5oZWlnaHQobWF4SGVpZ2h0IC0gbWF4UGFkZGluZyk7
DQoJfSBlbHNlIGlmICggb3B0aW9ucy5hdXRvaGVpZ2h0ICkgew0KCQl2YXIg
bWF4SGVpZ2h0ID0zRCAwOw0KCQlvcHRpb25zLmhlYWRlcnMubmV4dCgpLmVh
Y2goZnVuY3Rpb24oKSB7DQoJCQltYXhIZWlnaHQgPTNEIE1hdGgubWF4KG1h
eEhlaWdodCwgJCh0aGlzKS5vdXRlckhlaWdodCgpKTsNCgkJfSkuaGVpZ2h0
KG1heEhlaWdodCk7DQoJfQ0KDQoJb3B0aW9ucy5oZWFkZXJzDQoJCS5ub3Qo
b3B0aW9ucy5hY3RpdmUgfHwgIiIpDQoJCS5uZXh0KCkNCgkJLmhpZGUoKTsN
CglvcHRpb25zLmFjdGl2ZS5wYXJlbnQoKS5hbmRTZWxmKCkuYWRkQ2xhc3Mo
b3B0aW9ucy5zZWxlY3RlZENsYXNzKTsNCj0wOQ0KCWlmIChvcHRpb25zLmV2
ZW50KQ0KCQkkKGNvbnRhaW5lcikuYmluZCgob3B0aW9ucy5ldmVudCkgKyAi
LnVpLWFjY29yZGlvbiIsIGNsaWNrSGFuZGxlcik7DQp9Ow0KDQokLnVpLmFj
Y29yZGlvbi5wcm90b3R5cGUgPTNEIHsNCglhY3RpdmF0ZTogZnVuY3Rpb24o
aW5kZXgpIHsNCgkJLy8gY2FsbCBjbGlja0hhbmRsZXIgd2l0aCBjdXN0b20g
ZXZlbnQNCgkJY2xpY2tIYW5kbGVyLmNhbGwodGhpcy5lbGVtZW50LCB7DQoJ
CQl0YXJnZXQ6IGZpbmRBY3RpdmUoIHRoaXMub3B0aW9ucy5oZWFkZXJzLCBp
bmRleCApWzBdDQoJCX0pOw0KCX0sDQo9MDkNCgllbmFibGU6IGZ1bmN0aW9u
KCkgew0KCQl0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPTNEIGZhbHNlOw0KCX0s
DQoJZGlzYWJsZTogZnVuY3Rpb24oKSB7DQoJCXRoaXMub3B0aW9ucy5kaXNh
YmxlZCA9M0QgdHJ1ZTsNCgl9LA0KCWRlc3Ryb3k6IGZ1bmN0aW9uKCkgew0K
CQl0aGlzLm9wdGlvbnMuaGVhZGVycy5uZXh0KCkuY3NzKCJkaXNwbGF5Iiwg
IiIpOw0KCQlpZiAoIHRoaXMub3B0aW9ucy5maWxsU3BhY2UgfHwgdGhpcy5v
cHRpb25zLmF1dG9oZWlnaHQgKSB7DQoJCQl0aGlzLm9wdGlvbnMuaGVhZGVy
cy5uZXh0KCkuY3NzKCJoZWlnaHQiLCAiIik7DQoJCX0NCgkJJC5yZW1vdmVE
YXRhKHRoaXMuZWxlbWVudCwgInVpLWFjY29yZGlvbiIpOw0KCQkkKHRoaXMu
ZWxlbWVudCkucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbiIpLnVuYmluZCgi
LnVpLWFjY29yZGlvbiIpOw0KCX0NCn0NCg0KZnVuY3Rpb24gc2NvcGVDYWxs
YmFjayhjYWxsYmFjaywgc2NvcGUpIHsNCglyZXR1cm4gZnVuY3Rpb24oKSB7
DQoJCXJldHVybiBjYWxsYmFjay5hcHBseShzY29wZSwgYXJndW1lbnRzKTsN
Cgl9Ow0KfQ0KDQpmdW5jdGlvbiBjb21wbGV0ZWQoY2FuY2VsKSB7DQoJLy8g
aWYgcmVtb3ZlZCB3aGlsZSBhbmltYXRlZCBkYXRhIGNhbiBiZSBlbXB0eQ0K
CWlmICghJC5kYXRhKHRoaXMsICJ1aS1hY2NvcmRpb24iKSkNCgkJcmV0dXJu
Ow0KCXZhciBpbnN0YW5jZSA9M0QgJC5kYXRhKHRoaXMsICJ1aS1hY2NvcmRp
b24iKTsNCgl2YXIgb3B0aW9ucyA9M0QgaW5zdGFuY2Uub3B0aW9uczsNCglv
cHRpb25zLnJ1bm5pbmcgPTNEIGNhbmNlbCA/IDAgOiAtLW9wdGlvbnMucnVu
bmluZzsNCglpZiAoIG9wdGlvbnMucnVubmluZyApDQoJCXJldHVybjsNCglp
ZiAoIG9wdGlvbnMuY2xlYXJTdHlsZSApIHsNCgkJb3B0aW9ucy50b1Nob3cu
YWRkKG9wdGlvbnMudG9IaWRlKS5jc3Moew0KCQkJaGVpZ2h0OiAiIiwNCgkJ
CW92ZXJmbG93OiAiIg0KCQl9KTsNCgl9DQoJJCh0aGlzKS50cmlnZ2VySGFu
ZGxlcigiY2hhbmdlLnVpLWFjY29yZGlvbiIsIFtvcHRpb25zLmRhdGFdLCA9
DQpvcHRpb25zLmNoYW5nZSk7DQp9DQoNCmZ1bmN0aW9uIHRvZ2dsZSh0b1No
b3csIHRvSGlkZSwgZGF0YSwgY2xpY2tlZEFjdGl2ZSwgZG93bikgew0KCXZh
ciBvcHRpb25zID0zRCAkLmRhdGEodGhpcywgInVpLWFjY29yZGlvbiIpLm9w
dGlvbnM7DQoJb3B0aW9ucy50b1Nob3cgPTNEIHRvU2hvdzsNCglvcHRpb25z
LnRvSGlkZSA9M0QgdG9IaWRlOw0KCW9wdGlvbnMuZGF0YSA9M0QgZGF0YTsN
Cgl2YXIgY29tcGxldGUgPTNEIHNjb3BlQ2FsbGJhY2soY29tcGxldGVkLCB0
aGlzKTsNCj0wOQ0KCS8vIGNvdW50IGVsZW1lbnRzIHRvIGFuaW1hdGUNCglv
cHRpb25zLnJ1bm5pbmcgPTNEIHRvSGlkZS5zaXplKCkgPTNEPTNEIDAgPyB0
b1Nob3cuc2l6ZSgpIDogPQ0KdG9IaWRlLnNpemUoKTsNCj0wOQ0KCWlmICgg
b3B0aW9ucy5hbmltYXRlZCApIHsNCgkJaWYgKCAhb3B0aW9ucy5hbHdheXNP
cGVuICYmIGNsaWNrZWRBY3RpdmUgKSB7DQoJCQkkLnVpLmFjY29yZGlvbi5h
bmltYXRpb25zW29wdGlvbnMuYW5pbWF0ZWRdKHsNCgkJCQl0b1Nob3c6IGpR
dWVyeShbXSksDQoJCQkJdG9IaWRlOiB0b0hpZGUsDQoJCQkJY29tcGxldGU6
IGNvbXBsZXRlLA0KCQkJCWRvd246IGRvd24sDQoJCQkJYXV0b2hlaWdodDog
b3B0aW9ucy5hdXRvaGVpZ2h0DQoJCQl9KTsNCgkJfSBlbHNlIHsNCgkJCSQu
dWkuYWNjb3JkaW9uLmFuaW1hdGlvbnNbb3B0aW9ucy5hbmltYXRlZF0oew0K
CQkJCXRvU2hvdzogdG9TaG93LA0KCQkJCXRvSGlkZTogdG9IaWRlLA0KCQkJ
CWNvbXBsZXRlOiBjb21wbGV0ZSwNCgkJCQlkb3duOiBkb3duLA0KCQkJCWF1
dG9oZWlnaHQ6IG9wdGlvbnMuYXV0b2hlaWdodA0KCQkJfSk7DQoJCX0NCgl9
IGVsc2Ugew0KCQlpZiAoICFvcHRpb25zLmFsd2F5c09wZW4gJiYgY2xpY2tl
ZEFjdGl2ZSApIHsNCgkJCXRvU2hvdy50b2dnbGUoKTsNCgkJfSBlbHNlIHsN
CgkJCXRvSGlkZS5oaWRlKCk7DQoJCQl0b1Nob3cuc2hvdygpOw0KCQl9DQoJ
CWNvbXBsZXRlKHRydWUpOw0KCX0NCn0NCg0KZnVuY3Rpb24gY2xpY2tIYW5k
bGVyKGV2ZW50KSB7DQoJdmFyIG9wdGlvbnMgPTNEICQuZGF0YSh0aGlzLCAi
dWktYWNjb3JkaW9uIikub3B0aW9uczsNCglpZiAob3B0aW9ucy5kaXNhYmxl
ZCkNCgkJcmV0dXJuIGZhbHNlOw0KPTA5DQoJLy8gY2FsbGVkIG9ubHkgd2hl
biB1c2luZyBhY3RpdmF0ZShmYWxzZSkgdG8gY2xvc2UgYWxsIHBhcnRzID0N
CnByb2dyYW1tYXRpY2FsbHkNCglpZiAoICFldmVudC50YXJnZXQgJiYgIW9w
dGlvbnMuYWx3YXlzT3BlbiApIHsNCgkJb3B0aW9ucy5hY3RpdmUucGFyZW50
KCkuYW5kU2VsZigpLnRvZ2dsZUNsYXNzKG9wdGlvbnMuc2VsZWN0ZWRDbGFz
cyk7DQoJCXZhciB0b0hpZGUgPTNEIG9wdGlvbnMuYWN0aXZlLm5leHQoKSwN
CgkJCWRhdGEgPTNEIHsNCgkJCQlpbnN0YW5jZTogdGhpcywNCgkJCQlvcHRp
b25zOiBvcHRpb25zLA0KCQkJCW5ld0hlYWRlcjogalF1ZXJ5KFtdKSwNCgkJ
CQlvbGRIZWFkZXI6IG9wdGlvbnMuYWN0aXZlLA0KCQkJCW5ld0NvbnRlbnQ6
IGpRdWVyeShbXSksDQoJCQkJb2xkQ29udGVudDogdG9IaWRlDQoJCQl9LA0K
CQkJdG9TaG93ID0zRCBvcHRpb25zLmFjdGl2ZSA9M0QgJChbXSk7DQoJCXRv
Z2dsZS5jYWxsKHRoaXMsIHRvU2hvdywgdG9IaWRlLCBkYXRhICk7DQoJCXJl
dHVybiBmYWxzZTsNCgl9DQoJLy8gZ2V0IHRoZSBjbGljayB0YXJnZXQNCgl2
YXIgY2xpY2tlZCA9M0QgJChldmVudC50YXJnZXQpOw0KPTA5DQoJLy8gZHVl
IHRvIHRoZSBldmVudCBkZWxlZ2F0aW9uIG1vZGVsLCB3ZSBoYXZlIHRvIGNo
ZWNrIGlmIG9uZQ0KCS8vIG9mIHRoZSBwYXJlbnQgZWxlbWVudHMgaXMgb3Vy
IGFjdHVhbCBoZWFkZXIsIGFuZCBmaW5kIHRoYXQNCglpZiAoIGNsaWNrZWQu
cGFyZW50cyhvcHRpb25zLmhlYWRlcikubGVuZ3RoICkNCgkJd2hpbGUgKCAh
Y2xpY2tlZC5pcyhvcHRpb25zLmhlYWRlcikgKQ0KCQkJY2xpY2tlZCA9M0Qg
Y2xpY2tlZC5wYXJlbnQoKTsNCj0wOQ0KCXZhciBjbGlja2VkQWN0aXZlID0z
RCBjbGlja2VkWzBdID0zRD0zRCBvcHRpb25zLmFjdGl2ZVswXTsNCj0wOQ0K
CS8vIGlmIGFuaW1hdGlvbnMgYXJlIHN0aWxsIGFjdGl2ZSwgb3IgdGhlIGFj
dGl2ZSBoZWFkZXIgaXMgdGhlIHRhcmdldCwgPQ0KaWdub3JlIGNsaWNrDQoJ
aWYgKG9wdGlvbnMucnVubmluZyB8fCAob3B0aW9ucy5hbHdheXNPcGVuICYm
IGNsaWNrZWRBY3RpdmUpKQ0KCQlyZXR1cm4gZmFsc2U7DQoJaWYgKCFjbGlj
a2VkLmlzKG9wdGlvbnMuaGVhZGVyKSkNCgkJcmV0dXJuOw0KDQoJLy8gc3dp
dGNoIGNsYXNzZXMNCglvcHRpb25zLmFjdGl2ZS5wYXJlbnQoKS5hbmRTZWxm
KCkudG9nZ2xlQ2xhc3Mob3B0aW9ucy5zZWxlY3RlZENsYXNzKTsNCglpZiAo
ICFjbGlja2VkQWN0aXZlICkgew0KCQljbGlja2VkLnBhcmVudCgpLmFuZFNl
bGYoKS5hZGRDbGFzcyhvcHRpb25zLnNlbGVjdGVkQ2xhc3MpOw0KCX0NCg0K
CS8vIGZpbmQgZWxlbWVudHMgdG8gc2hvdyBhbmQgaGlkZQ0KCXZhciB0b1No
b3cgPTNEIGNsaWNrZWQubmV4dCgpLA0KCQl0b0hpZGUgPTNEIG9wdGlvbnMu
YWN0aXZlLm5leHQoKSwNCgkJLy9kYXRhID0zRCBbY2xpY2tlZCwgb3B0aW9u
cy5hY3RpdmUsIHRvU2hvdywgdG9IaWRlXSwNCgkJZGF0YSA9M0Qgew0KCQkJ
aW5zdGFuY2U6IHRoaXMsDQoJCQlvcHRpb25zOiBvcHRpb25zLA0KCQkJbmV3
SGVhZGVyOiBjbGlja2VkLA0KCQkJb2xkSGVhZGVyOiBvcHRpb25zLmFjdGl2
ZSwNCgkJCW5ld0NvbnRlbnQ6IHRvU2hvdywNCgkJCW9sZENvbnRlbnQ6IHRv
SGlkZQ0KCQl9LA0KCQlkb3duID0zRCBvcHRpb25zLmhlYWRlcnMuaW5kZXgo
IG9wdGlvbnMuYWN0aXZlWzBdICkgPiA9DQpvcHRpb25zLmhlYWRlcnMuaW5k
ZXgoIGNsaWNrZWRbMF0gKTsNCj0wOQ0KCW9wdGlvbnMuYWN0aXZlID0zRCBj
bGlja2VkQWN0aXZlID8gJChbXSkgOiBjbGlja2VkOw0KCXRvZ2dsZS5jYWxs
KHRoaXMsIHRvU2hvdywgdG9IaWRlLCBkYXRhLCBjbGlja2VkQWN0aXZlLCBk
b3duICk7DQoNCglyZXR1cm4gZmFsc2U7DQp9Ow0KDQpmdW5jdGlvbiBmaW5k
QWN0aXZlKGhlYWRlcnMsIHNlbGVjdG9yKSB7DQoJcmV0dXJuIHNlbGVjdG9y
ICE9M0QgdW5kZWZpbmVkDQoJCT8gdHlwZW9mIHNlbGVjdG9yID0zRD0zRCAi
bnVtYmVyIg0KCQkJPyBoZWFkZXJzLmZpbHRlcigiOmVxKCIgKyBzZWxlY3Rv
ciArICIpIikNCgkJCTogaGVhZGVycy5ub3QoaGVhZGVycy5ub3Qoc2VsZWN0
b3IpKQ0KCQk6IHNlbGVjdG9yID0zRD0zRD0zRCBmYWxzZQ0KCQkJPyAkKFtd
KQ0KCQkJOiBoZWFkZXJzLmZpbHRlcigiOmVxKDApIik7DQp9DQoNCiQuZXh0
ZW5kKCQudWkuYWNjb3JkaW9uLCB7DQoJZGVmYXVsdHM6IHsNCgkJc2VsZWN0
ZWRDbGFzczogInNlbGVjdGVkIiwNCgkJYWx3YXlzT3BlbjogdHJ1ZSwNCgkJ
YW5pbWF0ZWQ6ICdzbGlkZScsDQoJCWV2ZW50OiAiY2xpY2siLA0KCQloZWFk
ZXI6ICJoNCIsDQoJCWF1dG9oZWlnaHQ6IHRydWUsDQoJCXJ1bm5pbmc6IDAs
DQoJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uKCkgew0KCQkJcmV0dXJu
IHRoaXMuaHJlZi50b0xvd2VyQ2FzZSgpID0zRD0zRCBsb2NhdGlvbi5ocmVm
LnRvTG93ZXJDYXNlKCk7DQoJCX0NCgl9LA0KCWFuaW1hdGlvbnM6IHsNCgkJ
c2xpZGU6IGZ1bmN0aW9uKG9wdGlvbnMsIGFkZGl0aW9ucykgew0KCQkJb3B0
aW9ucyA9M0QgJC5leHRlbmQoew0KCQkJCWVhc2luZzogInN3aW5nIiwNCgkJ
CQlkdXJhdGlvbjogMzAwDQoJCQl9LCBvcHRpb25zLCBhZGRpdGlvbnMpOw0K
CQkJaWYgKCAhb3B0aW9ucy50b0hpZGUuc2l6ZSgpICkgew0KCQkJCW9wdGlv
bnMudG9TaG93LmFuaW1hdGUoe2hlaWdodDogInNob3cifSwgb3B0aW9ucyk7
DQoJCQkJcmV0dXJuOw0KCQkJfQ0KCQkJdmFyIGhpZGVIZWlnaHQgPTNEIG9w
dGlvbnMudG9IaWRlLmhlaWdodCgpLA0KCQkJCXNob3dIZWlnaHQgPTNEIG9w
dGlvbnMudG9TaG93LmhlaWdodCgpLA0KCQkJCWRpZmZlcmVuY2UgPTNEIHNo
b3dIZWlnaHQgLyBoaWRlSGVpZ2h0Ow0KCQkJb3B0aW9ucy50b1Nob3cuY3Nz
KHsgaGVpZ2h0OiAwLCBvdmVyZmxvdzogJ2hpZGRlbicgfSkuc2hvdygpOw0K
CQkJPQ0Kb3B0aW9ucy50b0hpZGUuZmlsdGVyKCI6aGlkZGVuIikuZWFjaChv
cHRpb25zLmNvbXBsZXRlKS5lbmQoKS5maWx0ZXIoIjp2aT0NCnNpYmxlIiku
YW5pbWF0ZSh7aGVpZ2h0OiJoaWRlIn0sew0KCQkJCXN0ZXA6IGZ1bmN0aW9u
KG5vdykgew0KCQkJCQl2YXIgY3VycmVudCA9M0QgKGhpZGVIZWlnaHQgLSBu
b3cpICogZGlmZmVyZW5jZTsNCgkJCQkJaWYgKCQuYnJvd3Nlci5tc2llIHx8
ICQuYnJvd3Nlci5vcGVyYSkgew0KCQkJCQkJY3VycmVudCA9M0QgTWF0aC5j
ZWlsKGN1cnJlbnQpOw0KCQkJCQl9DQoJCQkJCW9wdGlvbnMudG9TaG93Lmhl
aWdodCggY3VycmVudCApOw0KCQkJCX0sDQoJCQkJZHVyYXRpb246IG9wdGlv
bnMuZHVyYXRpb24sDQoJCQkJZWFzaW5nOiBvcHRpb25zLmVhc2luZywNCgkJ
CQljb21wbGV0ZTogZnVuY3Rpb24oKSB7DQoJCQkJCWlmICggIW9wdGlvbnMu
YXV0b2hlaWdodCApIHsNCgkJCQkJCW9wdGlvbnMudG9TaG93LmNzcygiaGVp
Z2h0IiwgImF1dG8iKTsNCgkJCQkJfQ0KCQkJCQlvcHRpb25zLmNvbXBsZXRl
KCk7DQoJCQkJfQ0KCQkJfSk7DQoJCX0sDQoJCWJvdW5jZXNsaWRlOiBmdW5j
dGlvbihvcHRpb25zKSB7DQoJCQl0aGlzLnNsaWRlKG9wdGlvbnMsIHsNCgkJ
CQllYXNpbmc6IG9wdGlvbnMuZG93biA/ICJib3VuY2VvdXQiIDogInN3aW5n
IiwNCgkJCQlkdXJhdGlvbjogb3B0aW9ucy5kb3duID8gMTAwMCA6IDIwMA0K
CQkJfSk7DQoJCX0sDQoJCWVhc2VzbGlkZTogZnVuY3Rpb24ob3B0aW9ucykg
ew0KCQkJdGhpcy5zbGlkZShvcHRpb25zLCB7DQoJCQkJZWFzaW5nOiAiZWFz
ZWlub3V0IiwNCgkJCQlkdXJhdGlvbjogNzAwDQoJCQl9KQ0KCQl9DQoJfQ0K
fSk7DQoNCn0pKGpRdWVyeSk7DQoNCg0KCWpRdWVyeSgpLnJlYWR5KGZ1bmN0
aW9uKCl7DQoJCS8vIHNpbXBsZSBhY2NvcmRpb24NCgkJalF1ZXJ5KCcjbGlz
dDFhJykuYWNjb3JkaW9uKCk7DQoJCWpRdWVyeSgnI2xpc3QxYicpLmFjY29y
ZGlvbih7DQoJCQlhdXRvaGVpZ2h0OiBmYWxzZQ0KCQl9KTsNCgk9MDkNCgk9
MDkNCgkJdmFyIHdpemFyZCA9M0QgJCgiI3dpemFyZCIpLmFjY29yZGlvbih7
DQoJCQloZWFkZXI6ICcudGl0bGUnLA0KCQkJZXZlbnQ6IGZhbHNlDQoJCX0p
Ow0KCT0wOQ0KCQl2YXIgd2l6YXJkQnV0dG9ucyA9M0QgJChbXSk7DQoJCSQo
ImRpdi50aXRsZSIsIHdpemFyZCkuZWFjaChmdW5jdGlvbihpbmRleCkgew0K
CQkJd2l6YXJkQnV0dG9ucyA9M0Qgd2l6YXJkQnV0dG9ucy5hZGQoJCh0aGlz
KQ0KCQkJLm5leHQoKQ0KCQkJLmNoaWxkcmVuKCI6YnV0dG9uIikNCgkJCS5m
aWx0ZXIoIi5uZXh0LCAucHJldmlvdXMiKQ0KCQkJLmNsaWNrKGZ1bmN0aW9u
KCkgew0KCQkJCXdpemFyZC5hY2NvcmRpb24oImFjdGl2YXRlIiwgaW5kZXgg
KyAoJCh0aGlzKS5pcygiLm5leHQiKSA/IDEgOiAtMSkpDQoJCQl9KSk7DQoJ
CX0pOw0KCT0wOQ0KCQkvLyBiaW5kIHRvIGNoYW5nZSBldmVudCBvZiBzZWxl
Y3QgdG8gY29udHJvbCBmaXJzdCBhbmQgc2Vjb25kcyA9DQphY2NvcmRpb24N
CgkJLy8gc2ltaWxhciB0byB0YWIncyBwbHVnaW4gdHJpZ2dlclRhYigpLCB3
aXRob3V0IGFuIGV4dHJhIG1ldGhvZA0KCQl2YXIgYWNjb3JkaW9ucyA9M0Qg
alF1ZXJ5KCcjbGlzdDFhLCAjbGlzdDFiLCAjbGlzdDIsICNsaXN0MywgPQ0K
I25hdmlnYXRpb24sICN3aXphcmQnKTsNCgk9MDkNCgkJalF1ZXJ5KCcjc3dp
dGNoIHNlbGVjdCcpLmNoYW5nZShmdW5jdGlvbigpIHsNCgkJCWFjY29yZGlv
bnMuYWNjb3JkaW9uKCJhY3RpdmF0ZSIsIHRoaXMuc2VsZWN0ZWRJbmRleC0x
ICk7DQoJCX0pOw0KCQlqUXVlcnkoJyNjbG9zZScpLmNsaWNrKGZ1bmN0aW9u
KCkgew0KCQkJYWNjb3JkaW9ucy5hY2NvcmRpb24oImFjdGl2YXRlIiwgLTEp
Ow0KCQl9KTsNCgkJalF1ZXJ5KCcjc3dpdGNoMicpLmNoYW5nZShmdW5jdGlv
bigpIHsNCgkJCWFjY29yZGlvbnMuYWNjb3JkaW9uKCJhY3RpdmF0ZSIsIHRo
aXMudmFsdWUpOw0KCQl9KTsNCgkJalF1ZXJ5KCcjZW5hYmxlJykuY2xpY2so
ZnVuY3Rpb24oKSB7DQoJCQlhY2NvcmRpb25zLmFjY29yZGlvbigiZW5hYmxl
Iik7DQoJCX0pOw0KCQlqUXVlcnkoJyNkaXNhYmxlJykuY2xpY2soZnVuY3Rp
b24oKSB7DQoJCQlhY2NvcmRpb25zLmFjY29yZGlvbigiZGlzYWJsZSIpOw0K
CQl9KTsNCgkJalF1ZXJ5KCcjcmVtb3ZlJykuY2xpY2soZnVuY3Rpb24oKSB7
DQoJCQlhY2NvcmRpb25zLmFjY29yZGlvbigiZGVzdHJveSIpOw0KCQkJd2l6
YXJkQnV0dG9ucy51bmJpbmQoImNsaWNrIik7DQoJCX0pOw0KCX0pOw0KDQot
LS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0NFQzc4LkNFQjU5OEEwDQpD
b250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVu
dC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KQ29udGVu
dC1Mb2NhdGlvbjogaHR0cDovL3d3dy5jYXJ0YXNpLml0L2phdmFzY3JpcHQv
d3Rpbml0LmpzDQoNCi8vIFdlYlRyZW5kcyBTbWFydFNvdXJjZSBEYXRhIENv
bGxlY3RvciBUYWcNCi8vIFZlcnNpb246IDEuMS4xDQovLyBDcmVhdGVkOiAy
LzEyLzIwMDggNTo0NzoyNCBBTQ0KZnVuY3Rpb24gRGNzSW5pdCgpew0KCXZh
ciB0aGF0PTNEdGhpczsNCgl0aGlzLmRjc2lkPTNEImRjc2c5ZjA5cDEwMDAw
ZzRlZTVyNThkejhfNWI4ZiI7DQoJdGhpcy5kb21haW49M0Qic3RhdHNlLndl
YnRyZW5kc2xpdmUuY29tIjsNCgl0aGlzLmVuYWJsZWQ9M0R0cnVlOw0KCXRo
aXMuZXhyZT0zRChmdW5jdGlvbigpe3JldHVybih3aW5kb3cuUmVnRXhwP25l
dyA9DQpSZWdFeHAoImRjcyh1cmkpfChyZWYpfChhdXQpfChtZXQpfChzdGEp
fChzaXApfChwcm8pfChieXQpfChkYXQpfChwM3ApfChjPQ0KZmcpfChyZWRp
cmVjdCl8KGNpcCkiLCJpIik6IiIpO30pKCk7DQoJdGhpcy5mcGM9M0QiV1Rf
RlBDIjsNCgl0aGlzLmZwY2RvbT0zRCIuY2FydGFzaS5pdCI7DQoJdGhpcy5p
MThuPTNEZmFsc2U7DQoJdGhpcy5pbWFnZXM9M0RbXTsNCgl0aGlzLmluZGV4
PTNEMDsNCgl0aGlzLnFwPTNEW107DQoJPQ0KdGhpcy5yZT0zRChmdW5jdGlv
bigpe3JldHVybih3aW5kb3cuUmVnRXhwPyh0aGF0LmkxOG4/eyIlMjUiOi9c
JS9nfTp7IiUwOT0NCiI6L1x0L2csIiUyMCI6LyA9DQovZywiJTIzIjovXCMv
ZywiJTI2IjovXCYvZywiJTJCIjovXCsvZywiJTNGIjovXD8vZywiJTVDIjov
XFwvZywiJTIyIjovXCIvPQ0KZywiJTdGIjovXHg3Ri9nLCIlQTAiOi9ceEEw
L2d9KToiIik7fSkoKTsNCgl0aGlzLm9uc2l0ZWRvbXM9M0QiIjsNCgl0aGlz
LmRvd25sb2FkdHlwZXM9M0QieGxzLGRvYyxwZGYsdHh0LGNzdix6aXAiOw0K
CXRoaXMucmlnaHRjbGlja3R5cGVzPTNEInhscyxkb2MscGRmLHR4dCxjc3Ys
emlwIjsNCgl0aGlzLnRpbWV6b25lPTNEMTsNCgl0aGlzLnRyYWNrZXZlbnRz
PTNEdHJ1ZTsNCgk9DQooZnVuY3Rpb24oKXtpZih0aGF0LmVuYWJsZWQmJihk
b2N1bWVudC5jb29raWUuaW5kZXhPZih0aGF0LmZwYysiPTNEIik9M0Q9M0Q9
DQotMSkmJihkb2N1bWVudC5jb29raWUuaW5kZXhPZigiV1RMT1BUT1VUPTNE
Iik9M0Q9M0QtMSkpe2RvY3VtZW50LndyaXRlKCI8PQ0Kc2NyIisiaXB0IHR5
cGU9M0QndGV4dC9qYXZhc2NyaXB0JyA9DQpzcmM9M0QnIisiaHR0cCIrKHdp
bmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwczonKT0zRD0z
RDA/J3MnOicnPQ0KKSsiOi8vIit0aGF0LmRvbWFpbisiLyIrdGhhdC5kY3Np
ZCsiL3d0aWQuanMiKyInPjxcL3NjciIrImlwdD4iKTt9fSkoKTsNCn0NCnZh
ciBEQ1M9M0R7fTsNCnZhciBXVD0zRHt9Ow0KdmFyIERDU2V4dD0zRHt9Ow0K
dmFyIGRjc0luaXQ9M0RuZXcgRGNzSW5pdCgpOw0KLS0tLS0tPV9OZXh0UGFy
dF8wMDBfMDAwMF8wMUNDRUM3OC5DRUI1OThBMA0KQ29udGVudC1UeXBlOiBh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCkNvbnRlbnQtVHJhbnNmZXItRW5j
b2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCkNvbnRlbnQtTG9jYXRpb246IGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9qYXZhc2NyaXB0L3d0YmFzZS5qcw0KDQov
LyBXZWJUcmVuZHMgU21hcnRTb3VyY2UgRGF0YSBDb2xsZWN0b3IgVGFnDQov
LyBWZXJzaW9uOiAxLjEuMQ0KLy8gQ3JlYXRlZDogMi8xMi8yMDA4IDU6NDc6
MjQgQU0NCmZ1bmN0aW9uIGRjc0Nvb2tpZSgpew0KCWlmICh0eXBlb2YoZGNz
T3RoZXIpPTNEPTNEImZ1bmN0aW9uIil7DQoJCWRjc090aGVyKCk7DQoJfQ0K
CWVsc2UgaWYgKHR5cGVvZihkY3NGUEMpPTNEPTNEImZ1bmN0aW9uIil7DQoJ
CWRjc0ZQQyhkY3NJbml0LnRpbWV6b25lKTsNCgl9DQp9DQpmdW5jdGlvbiBk
Y3NHZXRDb29raWUobmFtZSl7DQoJdmFyIGNvb2tpZXM9M0Rkb2N1bWVudC5j
b29raWUuc3BsaXQoIjsgIik7DQoJdmFyIGNtYXRjaD0zRFtdOw0KCXZhciBp
ZHg9M0QwOw0KCXZhciBpPTNEMDsNCgl2YXIgbmFtZWxlbj0zRG5hbWUubGVu
Z3RoOw0KCXZhciBjbGVuPTNEY29va2llcy5sZW5ndGg7DQoJZm9yIChpPTNE
MDtpPGNsZW47aSsrKXsNCgkJdmFyIGM9M0Rjb29raWVzW2ldOw0KCQlpZiAo
KGMuc3Vic3RyaW5nKDAsbmFtZWxlbisxKSk9M0Q9M0QobmFtZSsiPTNEIikp
ew0KCQkJY21hdGNoW2lkeCsrXT0zRGM7DQoJCX0NCgl9DQoJdmFyIGNtYXRj
aENvdW50PTNEY21hdGNoLmxlbmd0aDsNCglpZiAoY21hdGNoQ291bnQ+MCl7
DQoJCWlkeD0zRDA7DQoJCWlmICgoY21hdGNoQ291bnQ+MSkmJihuYW1lPTNE
PTNEZGNzSW5pdC5mcGMpKXsNCgkJCXZhciBkTGF0ZXN0PTNEbmV3IERhdGUo
MCk7DQoJCQlmb3IgKGk9M0QwO2k8Y21hdGNoQ291bnQ7aSsrKXsNCgkJCQl2
YXIgbHY9M0RwYXJzZUludChkY3NHZXRDcnVtYihjbWF0Y2hbaV0sImx2Iikp
Ow0KCQkJCXZhciBkTHN0PTNEbmV3IERhdGUobHYpOw0KCQkJCWlmIChkTHN0
PmRMYXRlc3Qpew0KCQkJCQlkTGF0ZXN0LnNldFRpbWUoZExzdC5nZXRUaW1l
KCkpOw0KCQkJCQlpZHg9M0RpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlyZXR1
cm4gdW5lc2NhcGUoY21hdGNoW2lkeF0uc3Vic3RyaW5nKG5hbWVsZW4rMSkp
Ow0KCX0NCgllbHNlew0KCQlyZXR1cm4gbnVsbDsNCgl9DQp9DQpmdW5jdGlv
biBkY3NHZXRDcnVtYihjdmFsLGNydW1iKXsNCgl2YXIgYUNvb2tpZT0zRGN2
YWwuc3BsaXQoIjoiKTsNCglmb3IgKHZhciBpPTNEMDtpPGFDb29raWUubGVu
Z3RoO2krKyl7DQoJCXZhciBhQ3J1bWI9M0RhQ29va2llW2ldLnNwbGl0KCI9
M0QiKTsNCgkJaWYgKGNydW1iPTNEPTNEYUNydW1iWzBdKXsNCgkJCXJldHVy
biBhQ3J1bWJbMV07DQoJCX0NCgl9DQoJcmV0dXJuIG51bGw7DQp9DQpmdW5j
dGlvbiBkY3NHZXRJZENydW1iKGN2YWwsY3J1bWIpew0KCXZhciBpZD0zRGN2
YWwuc3Vic3RyaW5nKDAsY3ZhbC5pbmRleE9mKCI6bHY9M0QiKSk7DQoJdmFy
IGFDcnVtYj0zRGlkLnNwbGl0KCI9M0QiKTsNCglmb3IgKHZhciBpPTNEMDtp
PGFDcnVtYi5sZW5ndGg7aSsrKXsNCgkJaWYgKGNydW1iPTNEPTNEYUNydW1i
WzBdKXsNCgkJCXJldHVybiBhQ3J1bWJbMV07DQoJCX0NCgl9DQoJcmV0dXJu
IG51bGw7DQp9DQpmdW5jdGlvbiBkY3NJc0ZwY1NldChuYW1lLGlkLGx2LHNz
KXsNCgl2YXIgYz0zRGRjc0dldENvb2tpZShuYW1lKTsNCglpZiAoYyl7DQoJ
CXJldHVybiA9DQooKGlkPTNEPTNEZGNzR2V0SWRDcnVtYihjLCJpZCIpKSYm
KGx2PTNEPTNEZGNzR2V0Q3J1bWIoYywibHYiKSkmJihzcz0zRGRjPQ0Kc0dl
dENydW1iKGMsInNzIikpKT8wOjM7DQoJfQ0KCXJldHVybiAyOw0KfQ0KZnVu
Y3Rpb24gZGNzRlBDKG9mZnNldCl7DQoJaWYgKHR5cGVvZihvZmZzZXQpPTNE
PTNEInVuZGVmaW5lZCIpew0KCQlyZXR1cm47DQoJfQ0KCWlmIChkb2N1bWVu
dC5jb29raWUuaW5kZXhPZigiV1RMT1BUT1VUPTNEIikhPTNELTEpew0KCQly
ZXR1cm47DQoJfQ0KCXZhciBuYW1lPTNEZGNzSW5pdC5mcGM7DQoJdmFyIGRD
dXI9M0RuZXcgRGF0ZSgpOw0KCXZhciBhZGo9M0QoZEN1ci5nZXRUaW1lem9u
ZU9mZnNldCgpKjYwMDAwKSsob2Zmc2V0KjM2MDAwMDApOw0KCWRDdXIuc2V0
VGltZShkQ3VyLmdldFRpbWUoKSthZGopOw0KCXZhciBkRXhwPTNEbmV3IERh
dGUoZEN1ci5nZXRUaW1lKCkrMzE1MzYwMDAwMDAwKTsNCgl2YXIgZFNlcz0z
RG5ldyBEYXRlKGRDdXIuZ2V0VGltZSgpKTsNCgk9DQpXVC5jb19mPTNEV1Qu
dnRfc2lkPTNEV1QudnRfZj0zRFdULnZ0X2ZfYT0zRFdULnZ0X2Zfcz0zRFdU
LnZ0X2ZfZD0zRFdULnZ0PQ0KX2ZfdGxoPTNEV1QudnRfZl90bHY9M0QiIjsN
CglpZiAoZG9jdW1lbnQuY29va2llLmluZGV4T2YobmFtZSsiPTNEIik9M0Q9
M0QtMSl7DQoJCWlmICgodHlwZW9mKGdXdElkKSE9M0QidW5kZWZpbmVkIikm
JihnV3RJZCE9M0QiIikpew0KCQkJV1QuY29fZj0zRGdXdElkOw0KCQl9DQoJ
CWVsc2UgaWYgKCh0eXBlb2YoZ1RlbXBXdElkKSE9M0QidW5kZWZpbmVkIikm
JihnVGVtcFd0SWQhPTNEIiIpKXsNCgkJCVdULmNvX2Y9M0RnVGVtcFd0SWQ7
DQoJCQlXVC52dF9mPTNEIjEiOw0KCQl9DQoJCWVsc2V7DQoJCQlXVC5jb19m
PTNEIjIiOw0KCQkJdmFyIGN1cj0zRGRDdXIuZ2V0VGltZSgpLnRvU3RyaW5n
KCk7DQoJCQlmb3IgKHZhciBpPTNEMjtpPD0zRCgzMi1jdXIubGVuZ3RoKTtp
Kyspew0KCQkJCVdULmNvX2YrPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvbSgp
KjE2LjApLnRvU3RyaW5nKDE2KTsNCgkJCX0NCgkJCVdULmNvX2YrPTNEY3Vy
Ow0KCQkJV1QudnRfZj0zRCIxIjsNCgkJfQ0KCQlpZiAodHlwZW9mKGdXdEFj
Y291bnRSb2xsdXApPTNEPTNEInVuZGVmaW5lZCIpew0KCQkJV1QudnRfZl9h
PTNEIjEiOw0KCQl9DQoJCVdULnZ0X2Zfcz0zRFdULnZ0X2ZfZD0zRCIxIjsN
CgkJV1QudnRfZl90bGg9M0RXVC52dF9mX3Rsdj0zRCIwIjsNCgl9DQoJZWxz
ZXsNCgkJdmFyIGM9M0RkY3NHZXRDb29raWUobmFtZSk7DQoJCXZhciBpZD0z
RGRjc0dldElkQ3J1bWIoYywiaWQiKTsNCgkJdmFyIGx2PTNEcGFyc2VJbnQo
ZGNzR2V0Q3J1bWIoYywibHYiKSk7DQoJCXZhciBzcz0zRHBhcnNlSW50KGRj
c0dldENydW1iKGMsInNzIikpOw0KCQlpZiAoKGlkPTNEPTNEbnVsbCl8fChp
ZD0zRD0zRCJudWxsIil8fGlzTmFOKGx2KXx8aXNOYU4oc3MpKXsNCgkJCXJl
dHVybjsNCgkJfQ0KCQlXVC5jb19mPTNEaWQ7DQoJCXZhciBkTHN0PTNEbmV3
IERhdGUobHYpOw0KCQlXVC52dF9mX3RsaD0zRE1hdGguZmxvb3IoKGRMc3Qu
Z2V0VGltZSgpLWFkaikvMTAwMCk7DQoJCWRTZXMuc2V0VGltZShzcyk7DQoJ
CWlmID0NCigoZEN1ci5nZXRUaW1lKCk+KGRMc3QuZ2V0VGltZSgpKzE4MDAw
MDApKXx8KGRDdXIuZ2V0VGltZSgpPihkU2VzLmdldFRpbWU9DQooKSsyODgw
MDAwMCkpKXsNCgkJCVdULnZ0X2ZfdGx2PTNETWF0aC5mbG9vcigoZFNlcy5n
ZXRUaW1lKCktYWRqKS8xMDAwKTsNCgkJCWRTZXMuc2V0VGltZShkQ3VyLmdl
dFRpbWUoKSk7DQoJCQlXVC52dF9mX3M9M0QiMSI7DQoJCX0NCgkJaWYgPQ0K
KChkQ3VyLmdldERheSgpIT0zRGRMc3QuZ2V0RGF5KCkpfHwoZEN1ci5nZXRN
b250aCgpIT0zRGRMc3QuZ2V0TW9udGgoKSl8fD0NCihkQ3VyLmdldFllYXIo
KSE9M0RkTHN0LmdldFllYXIoKSkpew0KCQkJV1QudnRfZl9kPTNEIjEiOw0K
CQl9DQoJfQ0KCVdULmNvX2Y9M0Rlc2NhcGUoV1QuY29fZik7DQoJV1QudnRf
c2lkPTNEV1QuY29fZisiLiIrKGRTZXMuZ2V0VGltZSgpLWFkaik7DQoJdmFy
IGV4cGlyeT0zRCI7IGV4cGlyZXM9M0QiK2RFeHAudG9HTVRTdHJpbmcoKTsN
Cgl2YXIgY3VyPTNEZEN1ci5nZXRUaW1lKCkudG9TdHJpbmcoKTsNCgl2YXIg
c2VzPTNEZFNlcy5nZXRUaW1lKCkudG9TdHJpbmcoKTsNCgk9DQpkb2N1bWVu
dC5jb29raWU9M0RuYW1lKyI9M0QiKyJpZD0zRCIrV1QuY29fZisiOmx2PTNE
IitjdXIrIjpzcz0zRCIrc2VzK2V4PQ0KcGlyeSsiOyBwYXRoPTNELyIrKCgo
ZGNzSW5pdC5mcGNkb20hPTNEIiIpKT8oIjsgPQ0KZG9tYWluPTNEIitkY3NJ
bml0LmZwY2RvbSk6KCIiKSk7DQoJdmFyIHJjPTNEZGNzSXNGcGNTZXQobmFt
ZSxXVC5jb19mLGN1cixzZXMpOw0KCWlmIChyYyE9M0QwKXsNCgkJPQ0KV1Qu
Y29fZj0zRFdULnZ0X3NpZD0zRFdULnZ0X2Zfcz0zRFdULnZ0X2ZfZD0zRFdU
LnZ0X2ZfdGxoPTNEV1QudnRfZl90bHY9M0Q9DQoiIjsNCgkJV1QudnRfZj0z
RFdULnZ0X2ZfYT0zRHJjOw0KICAgIH0NCn0NCmZ1bmN0aW9uIGRjc0lzT25z
aXRlKGhvc3Qpew0KCWhvc3Q9M0Rob3N0LnRvTG93ZXJDYXNlKCk7DQoJaWYg
KGhvc3Q9M0Q9M0R3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUudG9Mb3dlckNh
c2UoKSkNCgl7DQoJCXJldHVybiB0cnVlOw0KCX0NCglpZiAodHlwZW9mKGRj
c0luaXQub25zaXRlZG9tcy50ZXN0KT0zRD0zRCJmdW5jdGlvbiIpew0KCQly
ZXR1cm4gZGNzSW5pdC5vbnNpdGVkb21zLnRlc3QoaG9zdCk7DQoJfQ0KCWVs
c2UgaWYgKGRjc0luaXQub25zaXRlZG9tcy5sZW5ndGg+MCl7DQoJCXZhciBk
b21zPTNEZGNzSW5pdC5vbnNpdGVkb21zLnRvTG93ZXJDYXNlKCkuc3BsaXQo
IiwiKTsNCgkJdmFyIGxlbj0zRGRvbXMubGVuZ3RoOw0KCQlmb3IgKHZhciBp
PTNEMDtpPGxlbjtpKyspew0KCQkJaWYgKGhvc3Q9M0Q9M0Rkb21zW2ldKXsN
CgkJCSAgICByZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4g
ZmFsc2U7DQp9DQpmdW5jdGlvbiBkY3NUeXBlTWF0Y2gocHRoLCB0eXBlbGlz
dCl7DQoJdmFyIHR5cGU9M0RwdGguc3Vic3RyaW5nKHB0aC5sYXN0SW5kZXhP
ZigiLiIpKzEscHRoLmxlbmd0aCk7DQoJdmFyIHR5cGVzPTNEdHlwZWxpc3Qu
c3BsaXQoIiwiKTsNCglmb3IgKHZhciBpPTNEMDtpPHR5cGVzLmxlbmd0aDtp
Kyspew0KCQlpZiAodHlwZT0zRD0zRHR5cGVzW2ldKXsNCgkJCXJldHVybiB0
cnVlOw0KCQl9DQoJfQ0KCXJldHVybiBmYWxzZTsNCn0NCmZ1bmN0aW9uIGRj
c0V2dChldnQsdGFnKXsNCgl2YXIgZT0zRGV2dC50YXJnZXR8fGV2dC5zcmNF
bGVtZW50Ow0KCXdoaWxlIChlLnRhZ05hbWUmJihlLnRhZ05hbWUhPTNEdGFn
KSl7DQoJCWU9M0RlLnBhcmVudEVsZW1lbnR8fGUucGFyZW50Tm9kZTsNCgl9
DQoJcmV0dXJuIGU7DQp9DQpmdW5jdGlvbiBkY3NOYXZpZ2F0aW9uKGV2dCl7
DQoJcmV0dXJuICIiOw0KfQ0KZnVuY3Rpb24gZGNzQmluZChldmVudCxmdW5j
KXsNCglpZiAoKHR5cGVvZih3aW5kb3dbZnVuY10pPTNEPTNEImZ1bmN0aW9u
IikmJmRvY3VtZW50LmJvZHkpew0KCQlpZiAoZG9jdW1lbnQuYm9keS5hZGRF
dmVudExpc3RlbmVyKXsNCgkJCWRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0
ZW5lcihldmVudCwgd2luZG93W2Z1bmNdLCB0cnVlKTsNCgkJfQ0KCQllbHNl
IGlmKGRvY3VtZW50LmJvZHkuYXR0YWNoRXZlbnQpew0KCQkJZG9jdW1lbnQu
Ym9keS5hdHRhY2hFdmVudCgib24iK2V2ZW50LCB3aW5kb3dbZnVuY10pOw0K
CQl9DQoJfQ0KfQ0KZnVuY3Rpb24gZGNzRVQoKXsNCgl2YXIgPQ0KZT0zRChu
YXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJNU0lFIikhPTNELTEpPyJj
bGljayI6Im1vdXNlZG93biI7DQoJZGNzQmluZChlLCJkY3NEb3dubG9hZCIp
Ow0KCWRjc0JpbmQoZSwiZGNzRHluYW1pYyIpOw0KCWRjc0JpbmQoZSwiZGNz
Rm9ybUJ1dHRvbiIpOw0KCWRjc0JpbmQoZSwiZGNzT2Zmc2l0ZSIpOw0KCWRj
c0JpbmQoZSwiZGNzQW5jaG9yIik7DQoJZGNzQmluZCgiY29udGV4dG1lbnUi
LCJkY3NSaWdodENsaWNrIik7DQoJZGNzQmluZChlLCJkY3NJbWFnZU1hcCIp
Ow0KfQ0KZnVuY3Rpb24gZGNzTXVsdGlUcmFjaygpew0KCWlmIChhcmd1bWVu
dHMubGVuZ3RoJTI9M0Q9M0QwKXsNCgkJZm9yICh2YXIgaT0zRDA7aTxhcmd1
bWVudHMubGVuZ3RoO2krPTNEMil7DQoJCQlpZiAoYXJndW1lbnRzW2ldLmlu
ZGV4T2YoJ1dULicpPTNEPTNEMCl7DQoJCQkJV1RbYXJndW1lbnRzW2ldLnN1
YnN0cmluZygzKV09M0Rhcmd1bWVudHNbaSsxXTsNCgkJCX0NCgkJCWVsc2Ug
aWYgKGFyZ3VtZW50c1tpXS5pbmRleE9mKCdEQ1MuJyk9M0Q9M0QwKXsNCgkJ
CQlEQ1NbYXJndW1lbnRzW2ldLnN1YnN0cmluZyg0KV09M0Rhcmd1bWVudHNb
aSsxXTsNCgkJCX0NCgkJCWVsc2UgaWYgKGFyZ3VtZW50c1tpXS5pbmRleE9m
KCdEQ1NleHQuJyk9M0Q9M0QwKXsNCgkJCQlEQ1NleHRbYXJndW1lbnRzW2ld
LnN1YnN0cmluZyg3KV09M0Rhcmd1bWVudHNbaSsxXTsNCgkJCX0NCgkJfQ0K
CQl2YXIgZEN1cnJlbnQ9M0RuZXcgRGF0ZSgpOw0KCQlEQ1MuZGNzZGF0PTNE
ZEN1cnJlbnQuZ2V0VGltZSgpOw0KCQlkY3NGdW5jKCJkY3NDb29raWUiKTsN
CgkJZGNzVGFnKCk7DQoJfQ0KfQ0KDQovLyBBZGQgZXZlbnQgaGFuZGxlcnMg
aGVyZQ0KDQovLyBDb2RlIHNlY3Rpb24gZm9yIFRyYWNrIGNsaWNrcyB0byBk
b3dubG9hZCBsaW5rcy4NCmZ1bmN0aW9uIGRjc0Rvd25sb2FkKGV2dCl7DQoJ
ZXZ0PTNEZXZ0fHwod2luZG93LmV2ZW50fHwiIik7DQoJaWYgKGV2dCYmKCh0
eXBlb2YoZXZ0LndoaWNoKSE9M0QibnVtYmVyIil8fChldnQud2hpY2g9M0Q9
M0QxKSkpew0KCQl2YXIgZT0zRGRjc0V2dChldnQsIkEiKTsNCgkJaWYgKGUu
aG9zdG5hbWUmJmRjc0lzT25zaXRlKGUuaG9zdG5hbWUpKXsNCgkJCWlmIChk
Y3NUeXBlTWF0Y2goZS5wYXRobmFtZSxkY3NJbml0LmRvd25sb2FkdHlwZXMp
KXsNCgkJCQl2YXIgPQ0KcXJ5PTNEZS5zZWFyY2g/ZS5zZWFyY2guc3Vic3Ry
aW5nKGUuc2VhcmNoLmluZGV4T2YoIj8iKSsxLGUuc2VhcmNoLmxlbmd0aD0N
Cik6IiI7DQoJCQkJdmFyID0NCnB0aD0zRGUucGF0aG5hbWU/KChlLnBhdGhu
YW1lLmluZGV4T2YoIi8iKSE9M0QwKT8iLyIrZS5wYXRobmFtZTplLnBhdGhu
YW09DQplKToiLyI7DQoJCQkJdmFyIHR0bD0zRCIiOw0KCQkJCXZhciB0ZXh0
PTNEZG9jdW1lbnQuYWxsP2UuaW5uZXJUZXh0OmUudGV4dDsNCgkJCQl2YXIg
aW1nPTNEZGNzRXZ0KGV2dCwiSU1HIik7DQoJCQkJaWYgKGltZy5hbHQpew0K
CQkJCQl0dGw9M0RpbWcuYWx0Ow0KCQkJCX0NCgkJCQllbHNlIGlmICh0ZXh0
KXsNCgkJCQkJdHRsPTNEdGV4dDsNCgkJCQl9DQoJCQkJZWxzZSBpZiAoZS5p
bm5lckhUTUwpew0KCQkJCQl0dGw9M0RlLmlubmVySFRNTDsNCgkJCQl9DQoJ
CQkJPQ0KZGNzTXVsdGlUcmFjaygiRENTLmRjc3NpcCIsZS5ob3N0bmFtZSwi
RENTLmRjc3VyaSIscHRoLCJEQ1MuZGNzcXJ5IixlLnNlYT0NCnJjaHx8IiIs
IldULnRpIiwiRG93bmxvYWQ6Iit0dGwsIldULmRsIiwiMjAiLCJXVC5udiIs
ZGNzTmF2aWdhdGlvbihldnQpKTs9DQoNCgkJCQlEQ1MuZGNzc2lwPTNERENT
LmRjc3VyaT0zRERDUy5kY3Nxcnk9M0RXVC50aT0zRFdULmRsPTNEV1QubnY9
M0QiIjsNCgkJCX0NCgkJfQ0KCX0NCn0NCi8vIENvZGUgc2VjdGlvbiBmb3Ig
VHJhY2sgcmlnaHQgY2xpY2tzIHRvIGRvd25sb2FkIGxpbmtzLg0KZnVuY3Rp
b24gZGNzUmlnaHRDbGljayhldnQpew0KCWV2dD0zRGV2dHx8KHdpbmRvdy5l
dmVudHx8IiIpOw0KCWlmIChldnQpew0KCQl2YXIgYnRuPTNEZXZ0LndoaWNo
fHxldnQuYnV0dG9uOw0KCQlpZiAoKGJ0biE9M0QxKXx8KG5hdmlnYXRvci51
c2VyQWdlbnQuaW5kZXhPZigiU2FmYXJpIikhPTNELTEpKXsNCgkJCXZhciBl
PTNEZGNzRXZ0KGV2dCwiQSIpOw0KCQkJaWYgKCh0eXBlb2YoZS5ocmVmKSE9
M0QidW5kZWZpbmVkIikmJmUuaHJlZil7DQoJCQkJaWYgPQ0KKCh0eXBlb2Yo
ZS5wcm90b2NvbCkhPTNEInVuZGVmaW5lZCIpJiZlLnByb3RvY29sJiYoZS5w
cm90b2NvbC5pbmRleE9mKCJodD0NCnRwIikhPTNELTEpKXsNCgkJCQkJaWYg
PQ0KKCh0eXBlb2YoZS5wYXRobmFtZSkhPTNEInVuZGVmaW5lZCIpJiZkY3NU
eXBlTWF0Y2goZS5wYXRobmFtZSxkY3NJbml0LnJpZz0NCmh0Y2xpY2t0eXBl
cykpew0KCQkJCQkJdmFyID0NCnB0aD0zRGUucGF0aG5hbWU/KChlLnBhdGhu
YW1lLmluZGV4T2YoIi8iKSE9M0QwKT8iLyIrZS5wYXRobmFtZTplLnBhdGhu
YW09DQplKToiLyI7DQoJCQkJCQk9DQpkY3NNdWx0aVRyYWNrKCJEQ1MuZGNz
c2lwIixlLmhvc3RuYW1lLCJEQ1MuZGNzdXJpIixwdGgsIkRDUy5kY3Nxcnki
LCIiLCJXPQ0KVC50aSIsIlJpZ2h0Q2xpY2s6IitwdGgsIldULmRsIiwiMjUi
KTsNCgkJCQkJCURDUy5kY3NzaXA9M0REQ1MuZGNzdXJpPTNEV1QudGk9M0RX
VC5kbD0zRFdULm52PTNEIiI7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0N
Cgl9DQp9DQpmdW5jdGlvbiBkY3NBZHYoKXsNCglpZiAoZGNzSW5pdC50cmFj
a2V2ZW50cyl7DQoJCWRjc0Z1bmMoImRjc0VUIik7DQoJfQ0KCWRjc0Z1bmMo
ImRjc0Nvb2tpZSIpOw0KCWRjc0Z1bmMoImRjc0FkU2VhcmNoIik7DQoJZGNz
RnVuYygiZGNzVFAiKTsNCglkY3NGdW5jKCJkY3NNZXRhQ2FwIik7DQp9DQoN
Ci8vIEFkZCBjdXN0b21pemF0aW9ucyBoZXJlDQoNCmZ1bmN0aW9uIGRjc1Zh
cigpew0KCXZhciBkQ3VycmVudD0zRG5ldyBEYXRlKCk7DQoJV1QudHo9M0Qo
ZEN1cnJlbnQuZ2V0VGltZXpvbmVPZmZzZXQoKS82MCotMSl8fCIwIjsNCglX
VC5iaD0zRGRDdXJyZW50LmdldEhvdXJzKCl8fCIwIjsNCgk9DQpXVC51bD0z
RG5hdmlnYXRvci5hcHBOYW1lPTNEPTNEIk5ldHNjYXBlIj9uYXZpZ2F0b3Iu
bGFuZ3VhZ2U6bmF2aWdhdG9yLnVzPQ0KZXJMYW5ndWFnZTsNCglpZiAodHlw
ZW9mKHNjcmVlbik9M0Q9M0Qib2JqZWN0Iil7DQoJCT0NCldULmNkPTNEbmF2
aWdhdG9yLmFwcE5hbWU9M0Q9M0QiTmV0c2NhcGUiP3NjcmVlbi5waXhlbERl
cHRoOnNjcmVlbi5jb2xvckQ9DQplcHRoOw0KCQlXVC5zcj0zRHNjcmVlbi53
aWR0aCsieCIrc2NyZWVuLmhlaWdodDsNCgl9DQoJaWYgKHR5cGVvZihuYXZp
Z2F0b3IuamF2YUVuYWJsZWQoKSk9M0Q9M0QiYm9vbGVhbiIpew0KCQlXVC5q
bz0zRG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpPyJZZXMiOiJObyI7DQoJfQ0K
CWlmIChkb2N1bWVudC50aXRsZSl7DQoJCWlmICh3aW5kb3cuUmVnRXhwKXsN
CgkJCXZhciB0aXJlPTNEbmV3ID0NClJlZ0V4cCgiXiIrd2luZG93LmxvY2F0
aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKyJc
XHMtXFw9DQpzIik7DQoJCQlXVC50aT0zRGRvY3VtZW50LnRpdGxlLnJlcGxh
Y2UodGlyZSwiIik7DQoJCX0NCgkJZWxzZXsNCgkJCVdULnRpPTNEZG9jdW1l
bnQudGl0bGU7DQoJCX0NCgl9DQoJV1QuanM9M0QiWWVzIjsNCglXVC5qdj0z
RGRjc0pWKCk7DQoJaWYgKGRvY3VtZW50LmJvZHkmJmRvY3VtZW50LmJvZHku
YWRkQmVoYXZpb3Ipew0KCQlkb2N1bWVudC5ib2R5LmFkZEJlaGF2aW9yKCIj
ZGVmYXVsdCNjbGllbnRDYXBzIik7DQoJCVdULmN0PTNEZG9jdW1lbnQuYm9k
eS5jb25uZWN0aW9uVHlwZXx8InVua25vd24iOw0KCQlkb2N1bWVudC5ib2R5
LmFkZEJlaGF2aW9yKCIjZGVmYXVsdCNob21lUGFnZSIpOw0KCQlXVC5ocD0z
RGRvY3VtZW50LmJvZHkuaXNIb21lUGFnZShsb2NhdGlvbi5ocmVmKT8iMSI6
IjAiOw0KCX0NCgllbHNlew0KCQlXVC5jdD0zRCJ1bmtub3duIjsNCgl9DQoJ
aWYgKGRvY3VtZW50LmFsbCl7DQoJCT0NCldULmJzPTNEZG9jdW1lbnQuYm9k
eT9kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKyJ4Iitkb2N1bWVudC5ib2R5
Lm9mZnNldEg9DQplaWdodDoidW5rbm93biI7DQoJfQ0KCWVsc2V7DQoJCVdU
LmJzPTNEd2luZG93LmlubmVyV2lkdGgrIngiK3dpbmRvdy5pbm5lckhlaWdo
dDsNCgl9DQoJV1QuZmk9M0QiTm8iOw0KCWlmICh3aW5kb3cuQWN0aXZlWE9i
amVjdCl7DQoJCWZvcih2YXIgaT0zRDEwO2k+MDtpLS0pew0KCQkJdHJ5ew0K
CQkJCXZhciBmbGFzaCA9M0QgbmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2
ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLiIraSk7DQoJCQkJV1QuZmk9M0QiWWVz
IjsNCgkJCQlXVC5mdj0zRGkrIi4wIjsNCgkJCQlicmVhazsNCgkJCX0NCgkJ
CWNhdGNoKGUpew0KCQkJfQ0KCQl9DQoJfQ0KCWVsc2UgaWYgKG5hdmlnYXRv
ci5wbHVnaW5zJiZuYXZpZ2F0b3IucGx1Z2lucy5sZW5ndGgpew0KCQlmb3Ig
KHZhciBpPTNEMDtpPG5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aDtpKyspew0K
CQkJaWYgKG5hdmlnYXRvci5wbHVnaW5zW2ldLm5hbWUuaW5kZXhPZignU2hv
Y2t3YXZlIEZsYXNoJykhPTNELTEpew0KCQkJCVdULmZpPTNEIlllcyI7DQoJ
CQkJV1QuZnY9M0RuYXZpZ2F0b3IucGx1Z2luc1tpXS5kZXNjcmlwdGlvbi5z
cGxpdCgiICIpWzJdOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KCWlm
IChkY3NJbml0LmkxOG4pew0KCQlpZiAodHlwZW9mKGRvY3VtZW50LmRlZmF1
bHRDaGFyc2V0KT0zRD0zRCJzdHJpbmciKXsNCgkJCVdULmxlPTNEZG9jdW1l
bnQuZGVmYXVsdENoYXJzZXQ7DQoJCX09MjANCgkJZWxzZSBpZiAodHlwZW9m
KGRvY3VtZW50LmNoYXJhY3RlclNldCk9M0Q9M0Qic3RyaW5nIil7DQoJCQlX
VC5sZT0zRGRvY3VtZW50LmNoYXJhY3RlclNldDsNCgkJfQ0KCQllbHNlew0K
CQkJV1QubGU9M0QidW5rbm93biI7DQoJCX0NCgl9DQoJV1QudHY9M0QiMS4x
LjEiOw0KLy8JV1Quc3A9M0QiQEBTUExJVFZBTFVFQEAiOw0KCVdULmRsPTNE
IjAiOw0KCURDUy5kY3NkYXQ9M0RkQ3VycmVudC5nZXRUaW1lKCk7DQoJRENT
LmRjc3NpcD0zRHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTsNCglEQ1MuZGNz
dXJpPTNEd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOw0KCVdULmVzPTNERENT
LmRjc3NpcCtEQ1MuZGNzdXJpOw0KCWlmICh3aW5kb3cubG9jYXRpb24uc2Vh
cmNoKXsNCgkJRENTLmRjc3FyeT0zRHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7
DQoJCWlmIChkY3NJbml0LnFwLmxlbmd0aD4wKXsNCgkJCWZvciAodmFyIGk9
M0QwO2k8ZGNzSW5pdC5xcC5sZW5ndGg7aSsrKXsNCgkJCQl2YXIgcG9zPTNE
RENTLmRjc3FyeS5pbmRleE9mKGRjc0luaXQucXBbaV0pOw0KCQkJCWlmIChw
b3MhPTNELTEpew0KCQkJCQl2YXIgZnJvbnQ9M0REQ1MuZGNzcXJ5LnN1YnN0
cmluZygwLHBvcyk7DQoJCQkJCXZhciA9DQplbmQ9M0REQ1MuZGNzcXJ5LnN1
YnN0cmluZyhwb3MrZGNzSW5pdC5xcFtpXS5sZW5ndGgsRENTLmRjc3FyeS5s
ZW5ndGgpOw0KCQkJCQlEQ1MuZGNzcXJ5PTNEZnJvbnQrZW5kOw0KCQkJCX0N
CgkJCX0NCgkJfQ0KCX0NCglpZiA9DQooKHdpbmRvdy5kb2N1bWVudC5yZWZl
cnJlciE9M0QiIikmJih3aW5kb3cuZG9jdW1lbnQucmVmZXJyZXIhPTNEIi0i
KSl7DQoJCWlmICghKG5hdmlnYXRvci5hcHBOYW1lPTNEPTNEIk1pY3Jvc29m
dCBJbnRlcm5ldCA9DQpFeHBsb3JlciImJnBhcnNlSW50KG5hdmlnYXRvci5h
cHBWZXJzaW9uKTw0KSl7DQoJCQlEQ1MuZGNzcmVmPTNEd2luZG93LmRvY3Vt
ZW50LnJlZmVycmVyOw0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gZGNzQShOLFYp
ew0KCWlmIChkY3NJbml0LmkxOG4mJihkY3NJbml0LmV4cmUhPTNEIiIpJiYh
ZGNzSW5pdC5leHJlLnRlc3QoTikpew0KCQlpZiAoTj0zRD0zRCJkY3Nxcnki
KXsNCgkJCXZhciBuZXdWPTNEIiI7DQoJCQl2YXIgcGFyYW1zPTNEVi5zdWJz
dHJpbmcoMSkuc3BsaXQoIiYiKTsNCgkJCWZvciAodmFyIGk9M0QwO2k8cGFy
YW1zLmxlbmd0aDtpKyspew0KCQkJCXZhciBwYWlyPTNEcGFyYW1zW2ldOw0K
CQkJCXZhciBwb3M9M0RwYWlyLmluZGV4T2YoIj0zRCIpOw0KCQkJCWlmIChw
b3MhPTNELTEpew0KCQkJCQl2YXIga2V5PTNEcGFpci5zdWJzdHJpbmcoMCxw
b3MpOw0KCQkJCQl2YXIgdmFsPTNEcGFpci5zdWJzdHJpbmcocG9zKzEpOw0K
CQkJCQlpZiAoaSE9M0QwKXsNCgkJCQkJCW5ld1YrPTNEIiYiOw0KCQkJCQl9
DQoJCQkJCW5ld1YrPTNEa2V5KyI9M0QiK2Rjc0VuY29kZSh2YWwpOw0KCQkJ
CX0NCgkJCX0NCgkJCVY9M0RWLnN1YnN0cmluZygwLDEpK25ld1Y7DQoJCX0N
CgkJZWxzZXsNCgkJCVY9M0RkY3NFbmNvZGUoVik7DQoJCX0NCgl9DQoJcmV0
dXJuICImIitOKyI9M0QiK2Rjc0VzY2FwZShWLCBkY3NJbml0LnJlKTsNCn0N
CmZ1bmN0aW9uIGRjc0VzY2FwZShTLCBSRUwpew0KCWlmIChSRUwhPTNEIiIp
ew0KCQlTPTNEUy50b1N0cmluZygpOw0KCQlmb3IgKHZhciBSIGluIFJFTCl7
DQoJCQlTPTNEUy5yZXBsYWNlKFJFTFtSXSxSKTsNCgkJfQ0KCQlyZXR1cm4g
UzsNCgl9DQoJZWxzZXsNCgkJcmV0dXJuIGVzY2FwZShTKTsNCgl9DQp9DQpm
dW5jdGlvbiBkY3NFbmNvZGUoUyl7DQoJcmV0dXJuID0NCih0eXBlb2YoZW5j
b2RlVVJJQ29tcG9uZW50KT0zRD0zRCJmdW5jdGlvbiIpP2VuY29kZVVSSUNv
bXBvbmVudChTKTplc2NhcGU9DQooUyk7DQp9DQpmdW5jdGlvbiBkY3NDcmVh
dGVJbWFnZShkY3NTcmMpew0KCWlmIChkb2N1bWVudC5pbWFnZXMpew0KCQlk
Y3NJbml0LmltYWdlc1tkY3NJbml0LmluZGV4XT0zRG5ldyBJbWFnZTsNCgkJ
ZGNzSW5pdC5pbWFnZXNbZGNzSW5pdC5pbmRleF0uc3JjPTNEZGNzU3JjOw0K
CQlkY3NJbml0LmluZGV4Kys7DQoJfQ0KCWVsc2V7DQoJCWRvY3VtZW50Lndy
aXRlKCc8SU1HIEFMVD0zRCIiIEJPUkRFUj0zRCIwIiBOQU1FPTNEIkRDU0lN
RyIgV0lEVEg9M0QiMSIgPQ0KSEVJR0hUPTNEIjEiIFNSQz0zRCInK2Rjc1Ny
YysnIj4nKTsNCgl9DQp9DQpmdW5jdGlvbiBkY3NNZXRhKCl7DQoJdmFyIGVs
ZW1zOw0KCWlmIChkb2N1bWVudC5hbGwpew0KCQllbGVtcz0zRGRvY3VtZW50
LmFsbC50YWdzKCJtZXRhIik7DQoJfQ0KCWVsc2UgaWYgKGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCl7DQoJCWVsZW1zPTNEZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoIm1ldGEiKTsNCgl9DQoJaWYgKHR5cGVvZihlbGVtcykh
PTNEInVuZGVmaW5lZCIpew0KCQl2YXIgbGVuZ3RoPTNEZWxlbXMubGVuZ3Ro
Ow0KCQlmb3IgKHZhciBpPTNEMDtpPGxlbmd0aDtpKyspew0KCQkJdmFyIG5h
bWU9M0RlbGVtcy5pdGVtKGkpLm5hbWU7DQoJCQl2YXIgY29udGVudD0zRGVs
ZW1zLml0ZW0oaSkuY29udGVudDsNCgkJCXZhciBlcXVpdj0zRGVsZW1zLml0
ZW0oaSkuaHR0cEVxdWl2Ow0KCQkJaWYgKG5hbWUubGVuZ3RoPjApew0KCQkJ
CWlmIChuYW1lLmluZGV4T2YoIldULiIpPTNEPTNEMCl7DQoJCQkJCVdUW25h
bWUuc3Vic3RyaW5nKDMpXT0zRGNvbnRlbnQ7DQoJCQkJfQ0KCQkJCWVsc2Ug
aWYgKG5hbWUuaW5kZXhPZigiRENTZXh0LiIpPTNEPTNEMCl7DQoJCQkJCURD
U2V4dFtuYW1lLnN1YnN0cmluZyg3KV09M0Rjb250ZW50Ow0KCQkJCX0NCgkJ
CQllbHNlIGlmIChuYW1lLmluZGV4T2YoIkRDUy4iKT0zRD0zRDApew0KCQkJ
CQlEQ1NbbmFtZS5zdWJzdHJpbmcoNCldPTNEY29udGVudDsNCgkJCQl9DQoJ
CQl9DQoJCX0NCgl9DQp9DQpmdW5jdGlvbiBkY3NUYWcoKXsNCglpZiAoZG9j
dW1lbnQuY29va2llLmluZGV4T2YoIldUTE9QVE9VVD0zRCIpIT0zRC0xKXsN
CgkJcmV0dXJuOw0KCX0NCgl2YXIgPQ0KUD0zRCJodHRwIisod2luZG93Lmxv
Y2F0aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0dHBzOicpPTNEPTNEMD8ncyc6
JycpKyI6Lz0NCi8iK2Rjc0luaXQuZG9tYWluKyhkY3NJbml0LmRjc2lkPTNE
PTNEIiI/Jyc6Jy8nK2Rjc0luaXQuZGNzaWQpKyIvZGNzLmdpZj89DQoiOw0K
CWlmIChkY3NJbml0LmkxOG4pew0KCQlXVC5kZXA9M0QiIjsNCgl9DQoJZm9y
ICh2YXIgTiBpbiBEQ1Mpew0KCQlpZiAoRENTW05dKXsNCgkJCVArPTNEZGNz
QShOLERDU1tOXSk7DQoJCX0NCgl9DQoJdmFyIGtleXM9M0RbImNvX2YiLCJ2
dF9zaWQiLCJ2dF9mX3RsdiJdOw0KCWZvciAodmFyIGk9M0QwO2k8a2V5cy5s
ZW5ndGg7aSsrKXsNCgkJdmFyIGtleT0zRGtleXNbaV07DQoJCWlmIChXVFtr
ZXldKXsNCgkJCVArPTNEZGNzQSgiV1QuIitrZXksV1Rba2V5XSk7DQoJCQlk
ZWxldGUgV1Rba2V5XTsNCgkJfQ0KCX0NCglmb3IgKE4gaW4gV1Qpew0KCQlp
ZiAoV1RbTl0pew0KCQkJUCs9M0RkY3NBKCJXVC4iK04sV1RbTl0pOw0KCQl9
DQoJfQ0KCWZvciAoTiBpbiBEQ1NleHQpew0KCQlpZiAoRENTZXh0W05dKXsN
CgkJCWlmIChkY3NJbml0LmkxOG4pew0KCQkJCVdULmRlcD0zRChXVC5kZXAu
bGVuZ3RoPTNEPTNEMCk/TjooV1QuZGVwKyI7IitOKTsNCgkJCX0NCgkJCVAr
PTNEZGNzQShOLERDU2V4dFtOXSk7DQoJCX0NCgl9DQoJaWYgKGRjc0luaXQu
aTE4biYmKFdULmRlcC5sZW5ndGg+MCkpew0KCQlQKz0zRGRjc0EoIldULmRl
cCIsV1QuZGVwKTsNCgl9DQoJaWYgKFAubGVuZ3RoPjIwNDgmJm5hdmlnYXRv
ci51c2VyQWdlbnQuaW5kZXhPZignTVNJRScpPj0zRDApew0KCQlQPTNEUC5z
dWJzdHJpbmcoMCwyMDQwKSsiJldULnR1PTNEMSI7DQoJfQ0KCWRjc0NyZWF0
ZUltYWdlKFApOw0KCVdULmFkPTNEIiI7DQp9DQpmdW5jdGlvbiBkY3NKVigp
ew0KCXZhciBhZ3Q9M0RuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNl
KCk7DQoJdmFyIG1ham9yPTNEcGFyc2VJbnQobmF2aWdhdG9yLmFwcFZlcnNp
b24pOw0KCXZhciBtYWM9M0QoYWd0LmluZGV4T2YoIm1hYyIpIT0zRC0xKTsN
Cgl2YXIgZmY9M0QoYWd0LmluZGV4T2YoImZpcmVmb3giKSE9M0QtMSk7DQoJ
dmFyIGZmMD0zRChhZ3QuaW5kZXhPZigiZmlyZWZveC8wLiIpIT0zRC0xKTsN
Cgl2YXIgZmYxMD0zRChhZ3QuaW5kZXhPZigiZmlyZWZveC8xLjAiKSE9M0Qt
MSk7DQoJdmFyIGZmMTU9M0QoYWd0LmluZGV4T2YoImZpcmVmb3gvMS41Iikh
PTNELTEpOw0KCXZhciBmZjIwPTNEKGFndC5pbmRleE9mKCJmaXJlZm94LzIu
MCIpIT0zRC0xKTsNCgl2YXIgZmYzdXA9M0QoZmYmJiFmZjAmJiFmZjEwJiFm
ZjE1JiFmZjIwKTsNCgl2YXIgPQ0Kbm49M0QoIWZmJiYoYWd0LmluZGV4T2Yo
Im1vemlsbGEiKSE9M0QtMSkmJihhZ3QuaW5kZXhPZigiY29tcGF0aWJsZSIp
PTNEPTNEPQ0KLTEpKTsNCgl2YXIgbm40PTNEKG5uJiYobWFqb3I9M0Q9M0Q0
KSk7DQoJdmFyIG5uNnVwPTNEKG5uJiYobWFqb3I+PTNENSkpOw0KCXZhciBp
ZT0zRCgoYWd0LmluZGV4T2YoIm1zaWUiKSE9M0QtMSkmJihhZ3QuaW5kZXhP
Zigib3BlcmEiKT0zRD0zRC0xKSk7DQoJdmFyIGllND0zRChpZSYmKG1ham9y
PTNEPTNENCkmJihhZ3QuaW5kZXhPZigibXNpZSA0IikhPTNELTEpKTsNCgl2
YXIgaWU1dXA9M0QoaWUmJiFpZTQpOw0KCXZhciBvcD0zRChhZ3QuaW5kZXhP
Zigib3BlcmEiKSE9M0QtMSk7DQoJdmFyIG9wNT0zRChhZ3QuaW5kZXhPZigi
b3BlcmEgNSIpIT0zRC0xfHxhZ3QuaW5kZXhPZigib3BlcmEvNSIpIT0zRC0x
KTsNCgl2YXIgb3A2PTNEKGFndC5pbmRleE9mKCJvcGVyYSA2IikhPTNELTF8
fGFndC5pbmRleE9mKCJvcGVyYS82IikhPTNELTEpOw0KCXZhciBvcDd1cD0z
RChvcCYmIW9wNSYmIW9wNik7DQoJdmFyIGp2PTNEIjEuMSI7DQoJaWYgKGZm
M3VwKXsNCgkJanY9M0QiMS44IjsNCgl9DQoJZWxzZSBpZiAoZmYyMCl7DQoJ
CWp2PTNEIjEuNyI7DQoJfQ0KCWVsc2UgaWYgKGZmMTUpew0KCQlqdj0zRCIx
LjYiOw0KCX0NCgllbHNlIGlmIChmZjB8fGZmMTB8fG5uNnVwfHxvcDd1cCl7
DQoJCWp2PTNEIjEuNSI7DQoJfQ0KCWVsc2UgaWYgKChtYWMmJmllNXVwKXx8
b3A2KXsNCgkJanY9M0QiMS40IjsNCgl9DQoJZWxzZSBpZiAoaWU1dXB8fG5u
NHx8b3A1KXsNCgkJanY9M0QiMS4zIjsNCgl9DQoJZWxzZSBpZiAoaWU0KXsN
CgkJanY9M0QiMS4yIjsNCgl9DQoJcmV0dXJuIGp2Ow0KfQ0KZnVuY3Rpb24g
ZGNzRnVuYyhmdW5jKXsNCglpZiAodHlwZW9mKHdpbmRvd1tmdW5jXSk9M0Q9
M0QiZnVuY3Rpb24iKXsNCgkJd2luZG93W2Z1bmNdKCk7DQoJfQ0KfQ0KDQpp
ZiAoZGNzSW5pdC5lbmFibGVkKXsNCiAgICBkY3NWYXIoKTsNCiAgICBkY3NN
ZXRhKCk7DQogICAgZGNzRnVuYygiZGNzQWR2Iik7DQogICAgZGNzVGFnKCk7
DQp9DQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0NFQzc4LkNFQjU5
OEEwLS0NCg==

------=_NextPart_000_0094_01C2A9A6.054DBD0A--
