From owner-doc-jp@jp.FreeBSD.org Fri Jun  3 23:21:17 2011
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id p53ELHY55378;
	Fri, 3 Jun 2011 23:21:17 +0900 (JST)
	(envelope-from owner-doc-jp@jp.FreeBSD.org)
Received: from toroondcbmts08-srv.bellnexxia.net (toroondcbmts08-srv.bellnexxia.net [207.236.237.42])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id p53ELE755364
	for <doc-jp@jp.freebsd.org>; Fri, 3 Jun 2011 23:21:14 +0900 (JST)
	(envelope-from CartaSi_Informa@cartasi.it)
Received: from toip57-bus.srvr.bell.ca ([67.69.240.184])
          by toroondcbmts08-srv.bellnexxia.net
          (InterMail vM.8.00.01.00 201-2244-105-20090324) with ESMTP
          id <20110603142104.KBDN1794.toroondcbmts08-srv.bellnexxia.net@toip57-bus.srvr.bell.ca>;
          Fri, 3 Jun 2011 10:21:04 -0400
Received: from toip37-bus.srvr.bell.ca ([67.69.240.38])
  by toip57-bus.srvr.bell.ca with ESMTP; 03 Jun 2011 10:20:56 -0400
Received: from toroon12-1177845558.sdsl.bell.ca (HELO mail.downsviewdrywall.com) ([70.52.127.54])
  by toip37-bus.srvr.bell.ca with ESMTP; 03 Jun 2011 10:20:45 -0400
Received: from User ([204.93.160.201]) by mail.downsviewdrywall.com with Microsoft SMTPSVC(6.0.3790.3959);
	 Fri, 3 Jun 2011 10:19:33 -0400
From: <CartaSi_Informa@cartasi.it>
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_00BE_01C2A9A6.6AFBA398"
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
Bcc:
Message-ID: <DDCSERVERzF2BJPK7mu00005660@mail.downsviewdrywall.com>
X-OriginalArrivalTime: 03 Jun 2011 14:19:33.0062 (UTC) FILETIME=[42593E60:01CC21F9]
Reply-To: doc-jp@jp.FreeBSD.org
Precedence: list
Date: Fri, 3 Jun 2011 07:18:51 -0700
X-Sequence: doc-jp 83899
Subject: [doc-jp 83899] 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_00BE_01C2A9A6.6AFBA398
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_00BE_01C2A9A6.6AFBA398
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
dGkgZSBhemllbmRlDQpEYXRlOiBGcmksIDMgSnVuIDIwMTEgMDE6MzM6MjYg
LTA3MDANCk1JTUUtVmVyc2lvbjogMS4wDQpDb250ZW50LVR5cGU6IG11bHRp
cGFydC9yZWxhdGVkOw0KCXR5cGU9InRleHQvaHRtbCI7DQoJYm91bmRhcnk9
Ii0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0MyMThFLjNCRjI3NUMwIg0K
WC1NaW1lT0xFOiBQcm9kdWNlZCBCeSBNaWNyb3NvZnQgTWltZU9MRSBWNi4w
LjYwMDIuMTgyNjMNCg0KVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBp
biBNSU1FIGZvcm1hdC4NCg0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8w
MUNDMjE4RS4zQkYyNzVDMA0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7DQoJ
Y2hhcnNldD0iaXNvLTg4NTktMSINCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6IHF1b3RlZC1wcmludGFibGUNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6
Ly9hbW91Z2UyMDExLmNvbS9hL2d0d3BhZ2VzL3RpdG9sYXJpLmh0bWwNCg0K
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEg
VHJhbnNpdGlvbmFsLy9FTiIgPQ0KImh0dHA6Ly93d3cudzNjLm9yZy9UUi8x
OTk5L1JFQy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+DQo8SFRNTCBk
aXI9M0RsdHIgbGFuZz0zRGl0ID0NCnhtbG5zPTNEImh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPjxIRUFEPjxUSVRMRT5DYXJ0YVNpOiBDYXJ0ZSBk
aSA9DQpjcmVkaXRvIHBlciBwcml2YXRpIGUgYXppZW5kZTwvVElUTEU+PCEt
LSBNaXJyb3JlZCBmcm9tID0NCnd3dy5jYXJ0YXNpLml0L2d0d3BhZ2VzL2lu
ZGV4LmpzcCBieSBIVFRyYWNrIFdlYnNpdGUgQ29waWVyLzMueCA9DQpbWFIm
Q08nMjAwOF0sIEZyaSwgMDcgTWF5IDIwMTEgMjE6NDU6NTUgR01UIC0tPg0K
PE1FVEEgbmFtZT0zRGtleXdvcmRzPTIwDQpjb250ZW50PTNEImNhcnRhIGRp
IGNyZWRpdG8gYXppZW5kYWxlLGNhcnRhIGRpIGNyZWRpdG8gcmF0ZWFsZSxj
YXJ0ZSBkaSA9DQpjcmVkaXRvLGNhcnRlIGRpIGNyZWRpdG8gcHJlcGFnYXRl
LGNhcnRlIGRpIGNyZWRpdG8gcHJpdmF0aSI+DQo8TUVUQSBuYW1lPTNEZGVz
Y3JpcHRpb249MjANCmNvbnRlbnQ9M0QiU2NvcHJpIGkgdmFudGFnZ2kgZGVs
bGUgY2FydGUgZGkgY3JlZGl0byBDYXJ0YVNpLCBjZXJjYSB0cmEgPQ0KbGUg
c29sdXppb25pIHBlciBwcml2YXRpIGUgYXppZW5kZSBxdWVsbGEgcGk9Rjkg
YWRhdHRhIGEgdGUgZSByaWNoaWVkaSA9DQpsYSB0dWEgY2FydGEgZGkgY3Jl
ZGl0by4iPg0KPE1FVEEgY29udGVudD0zRCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
M0Rpc28tODg1OS0xIiA9DQpodHRwLWVxdWl2PTNEQ29udGVudC1UeXBlPg0K
PFNUWUxFIHRpdGxlPTNEInN0aWxlIHByZWRlZmluaXRvIiB0eXBlPTNEdGV4
dC9jc3MgPQ0KbWVkaWE9M0RzY3JlZW4+QGltcG9ydCB1cmwoIC4uL2Nzcy9w
cml2YXRpLmNzcyApOw0KI2NvbnRhaW5lciAjbWFpbk5hdiAjcG1lbnUgTEku
ZHJvcCBBLmFjdGl2ZTAgew0KCUJBQ0tHUk9VTkQ6ICNmZmY7IENPTE9SOiAj
NjY2DQp9DQo8L1NUWUxFPg0KPExJTksgcmVsPTNEc3R5bGVzaGVldCB0eXBl
PTNEdGV4dC9jc3M9MjANCmhyZWY9M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0
L2dyZXlib3gvZ2Jfc3R5bGVzLmNzcyI+DQo8U0NSSVBUIHR5cGU9M0R0ZXh0
L2phdmFzY3JpcHQ+DQp2YXIgR0JfUk9PVF9ESVIgPTNEICJodHRwOi8vd3d3
LmNhcnRhc2kuaXQvZ3JleWJveC8iOw0KPC9TQ1JJUFQ+DQoNCjxTQ1JJUFQg
dHlwZT0zRHRleHQvamF2YXNjcmlwdD0yMA0Kc3JjPTNEImh0dHA6Ly93d3cu
Y2FydGFzaS5pdC9qYXZhc2NyaXB0L2pxdWVyeS5qcyI+PC9TQ1JJUFQ+DQoN
CjxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD0yMA0Kc3JjPTNEImh0
dHA6Ly93d3cuY2FydGFzaS5pdC9ncmV5Ym94L0FKUy5qcyI+PC9TQ1JJUFQ+
DQoNCjxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD0yMA0Kc3JjPTNE
Imh0dHA6Ly93d3cuY2FydGFzaS5pdC9ncmV5Ym94L0FKU19meC5qcyI+PC9T
Q1JJUFQ+DQoNCjxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD0yMA0K
c3JjPTNEImh0dHA6Ly93d3cuY2FydGFzaS5pdC9ncmV5Ym94L2diX3Njcmlw
dHMuanMiPjwvU0NSSVBUPg0KDQo8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFz
Y3JpcHQ9MjANCnNyYz0zRCJodHRwOi8vd3d3LmNhcnRhc2kuaXQvamF2YXNj
cmlwdC9ob21lLmpzIj48L1NDUklQVD4NCg0KPFNDUklQVCB0eXBlPTNEdGV4
dC9qYXZhc2NyaXB0PTIwDQpzcmM9M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0
L2phdmFzY3JpcHQvZ2VzdHVybC5qcyI+PC9TQ1JJUFQ+DQoNCjxTQ1JJUFQ+
DQpmdW5jdGlvbiBnb0ZvY3Vzb24ocGFyYW0sIHBhcmFtMikgew0KCWRvY3Vt
ZW50LmdvdG9wYWdlLmFjdGlvbiA9M0QgImluZGV4Lmh0bWwiOw0KCWRvY3Vt
ZW50LmdvdG9wYWdlLmZvY3Vzb25QYWdlLnZhbHVlPTNEcGFyYW07DQogICAg
ZG9jdW1lbnQuZ290b3BhZ2UucGFyYW0udmFsdWU9M0RwYXJhbTI7DQoJZG9j
dW1lbnQuZ290b3BhZ2Uuc3VibWl0KCk7DQp9DQp2YXIgaG9tZSA9M0QiL2d0
d3BhZ2VzIjsNCnZhciB2ZXJzID0zRCBHZXRCcm93c2UoKTsNCmZ1bmN0aW9u
IEdldEJyb3dzZSgpew0KPTA5DQoJcmV0dXJuICJOUzQiOw0KfQ0KPC9TQ1JJ
UFQ+DQoNCjxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD4NCgkJalF1
ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpew0KCQkJZnVuY3Rpb24g
cmVzZXRNZW51KCl7DQoJCQkJJCgiLnByaW1vTGl2ZWxsbyIpLnJlbW92ZUNs
YXNzKCJhdHQiKTsNCgkJCQkkLmVhY2goJCgiLnByaW1vTGl2ZWxsbyIpLGZ1
bmN0aW9uKCkgew0KCQkJCQlpbmRleCA9M0QgJCgiLnByaW1vTGl2ZWxsbyIp
LmluZGV4KHRoaXMpOw0KCQkJCQkvLyQodGhpcykuY2hpbGRyZW4oKS5jaGls
ZHJlbigpLmF0dHIoInNyYyIsImltZy8iKyhpbmRleCsxKSsiLmdpZiIpDQoJ
CQkJfSk7DQoJCQl9DQoJCQkkKCIucHJpbW9MaXZlbGxvIikuaG92ZXIoZnVu
Y3Rpb24oKSB7DQoJCQkJJCgiLnByaW1vTGl2ZWxsbyIpLnJlbW92ZUNsYXNz
KCJhdHRob3ZlciIpOw0KCQkJCSQodGhpcykuYWRkQ2xhc3MoImF0dGhvdmVy
Iik7DQoJCQk9MDkNCgkJCX0sDQoJCQlmdW5jdGlvbigpIHsNCgkJCQkkKHRo
aXMpLnJlbW92ZUNsYXNzKCJhdHRob3ZlciIpOw0KCQkJfSk7DQoJCQkkKCIu
cHJpbW9MaXZlbGxvTGluayIpLmNsaWNrKGZ1bmN0aW9uKCkgew0KCQkJCWlm
KCQodGhpcykuYXR0cigiaHJlZiIpID0zRD0zRCAiIyIpIHsNCgkJCQkJcmVz
ZXRNZW51KCk7DQoJCQkJCSQoIi5mb3VydGgiKS5oaWRlKCk7DQoJCQkJCSQo
Ii50aGlyZFVsIikuY3NzKCJ3aWR0aCIsIjE5NHB4Iik7DQoJCQkJCWluZGV4
ID0zRCAkKCIucHJpbW9MaXZlbGxvTGluayIpLmluZGV4KHRoaXMpOw0KCQkJ
CQkkKHRoaXMpLnBhcmVudCgpLmFkZENsYXNzKCJhdHQiKTsNCgkJCQkJLy8k
KHRoaXMpLnBhcmVudCgpLmNzcygiaGVpZ2h0IiwgIjEyN3B4Iik7DQoJCQkJ
CSQoIiNtYWluIikuY3NzKCJoZWlnaHQiLCAiMTE0cHgiKTsNCgkJCQkJPQ0K
Ly8kKHRoaXMpLmNoaWxkcmVuKCkuY2hpbGRyZW4oKS5hdHRyKCJzcmMiLCJp
bWcvIisoaW5kZXgrMSkrIl9hdHQuZ2lmIik7DQoJCQkJCSQoIi50aGlyZCIp
LmhpZGUoKTsNCgkJCQkJJCgiLnRoaXJkIitpbmRleCkuc2xpZGVEb3duKGZ1
bmN0aW9uKCl7DQoJCQkJCQkkKCIuZm91cnRoIikuaGlkZSgpOw0KCQkJCQl9
KTsNCgkJCQl9DQoJCQl9KTsNCgkJCSQoIi50aGlyZFNlbGVjdG9yIikuY2xp
Y2soZnVuY3Rpb24oKSB7DQoJCQkJJCgiLmZvdXJ0aCIpLmhpZGUoKTsNCgkJ
CQkkKCIudGhpcmRVbCIpLmNzcygid2lkdGgiLCIxOTRweCIpOw0KCQkJCSQo
Ii50aGlyZFNlbGVjdG9yIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOw0KCQkJ
CSQodGhpcykuYWRkQ2xhc3MoImFjdGl2ZSIpOw0KCQkJCS8vcmVzZXRNZW51
KCk7DQoJCQkJLy9pbmRleCA9M0QgJCgiLnByaW1vTGl2ZWxsbyIpLmluZGV4
KHRoaXMpOw0KCQkJCS8vJCh0aGlzKS5hZGRDbGFzcygiYXR0Iik7DQoJCQkJ
JCh0aGlzKS5wYXJlbnQoKS5jc3MoIndpZHRoIiwiMzg4cHgiKTsNCgkJCQkk
KHRoaXMpLmNoaWxkcmVuKCIuZm91cnRoIikuc2hvdygpOw0KCQkJCSQodGhp
cykuY2hpbGRyZW4oIi5mb3VydGgiKS5jc3MoIndpZHRoIiwiMHB4Iik7DQoJ
CQkJPQ0KJCh0aGlzKS5jaGlsZHJlbigiLmZvdXJ0aCIpLmNzcygibGVmdCIs
KCQodGhpcykucG9zaXRpb24oKS5sZWZ0KzE5NCkrInB4Ij0NCik7DQoJCQkJ
JCh0aGlzKS5jaGlsZHJlbigiLmZvdXJ0aCIpLmFuaW1hdGUoe3dpZHRoOiIx
OTRweCJ9LHtxdWVxdWU6ZmFsc2UsID0NCmR1cmF0aW9uOjUwMH0pOw0KCQkJ
fSk7DQoJCT0wOQ0KCQkJJCgiLnRoaXJkU2VsZWN0b3IiKS5ob3ZlcihmdW5j
dGlvbigpIHsNCgkJCQkkKCIudGhpcmRTZWxlY3RvciIpLnJlbW92ZUNsYXNz
KCJvbiIpOw0KCQkJCSQodGhpcykuYWRkQ2xhc3MoIm9uIik7DQoJCQk9MDkN
CgkJCX0sZnVuY3Rpb24oKXsNCgkJCQkkKHRoaXMpLnJlbW92ZUNsYXNzKCJv
biIpOw0KCQkJfSk7DQoJJCgiLm5vdGhpcmRTZWxlY3RvciIpLmhvdmVyKGZ1
bmN0aW9uKCkgew0KCQkJCSQodGhpcykuYWRkQ2xhc3MoIm9uIik7DQoJCQk9
MDkNCgkJCX0sZnVuY3Rpb24oKXsNCgkJCQkkKHRoaXMpLnJlbW92ZUNsYXNz
KCJvbiIpOw0KCQkJfSk7DQoJCQkkKCIuZm91cnRoU2VsZWN0b3IiKS5ob3Zl
cihmdW5jdGlvbigpIHsNCgkJCQkkKCIuZm91cnRoU2VsZWN0b3IiKS5yZW1v
dmVDbGFzcygib24iKTsNCgkJCQkkKHRoaXMpLmFkZENsYXNzKCJvbiIpOw0K
CQkJPTA5DQoJCQl9KTsNCgkJPTA5DQoJCQkvLyQoIi50aGlyZCIpLmhpZGUo
KTsNCgkJCS8vJCgiLmZvdXJ0aCIpLmhpZGUoKTsNCgkJCS8vJCgiLmZvdXJ0
aCIpLmNzcygid2lkdGgiLCIwcHgiKTsNCgkJCS8vJCgiLnRoaXJkOmZpcnN0
Iikuc2hvdygpOw0KCQkJLy8kKCIuZm91cnRoIikuaGlkZSgpOw0KCQl9KTsN
Cgk8L1NDUklQVD4NCg0KPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZhc2NyaXB0
PTIwDQpzcmM9M0QiaHR0cDovL2Ftb3VnZTIwMTEuY29tL2EvZ3R3cGFnZXMv
U2NyaXB0cy9BQ19SdW5BY3RpdmVDb250ZW50LmpzIj48PQ0KL1NDUklQVD4N
Cg0KPFNUWUxFIHR5cGU9M0R0ZXh0L2Nzcz4uY2xlYXIgew0KCUNMRUFSOiBi
b3RoDQp9DQouZGJpZFRpcCB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFE
RElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRk9OVC1TSVpF
OiA9DQo4NSU7IFBBRERJTkctVE9QOiAzcHgNCn0NCi5kYmlkVGlwIHsNCglQ
QURESU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElO
Ry1SSUdIVDogMHB4OyBGT05ULVNJWkU6ID0NCjg1JTsgUEFERElORy1UT1A6
IDNweA0KfQ0KLmttc2lib2xkIHsNCglGT05ULVNJWkU6IDExNCU7IEZPTlQt
V0VJR0hUOiBib2xkDQp9DQoua21zaWJvbGQgew0KCUZPTlQtU0laRTogMTE0
JTsgRk9OVC1XRUlHSFQ6IGJvbGQNCn0NCi5zdWJwZXJzdHh0IHsNCglMSU5F
LUhFSUdIVDogMS43NWVtDQp9DQouc3VicGVyc3R4dCB7DQoJTElORS1IRUlH
SFQ6IDEuNzVlbQ0KfQ0KLnN1YnBlcnN0eHQyIHsNCglNQVJHSU46IDBweCAw
cHggMHB4IDJlbTsgRElTUExBWTogYmxvY2sNCn0NCi5zdWJwZXJzdHh0MiB7
DQoJTUFSR0lOOiAwcHggMHB4IDBweCAyZW07IERJU1BMQVk6IGJsb2NrDQp9
DQoueXJlZ2xnc2Igew0KCU1BUkdJTi1UT1A6IDBweA0KfQ0KI3lyZWdsZ3Ri
IHsNCglURVhULUFMSUdOOiBsZWZ0OyBXSURUSDogMTAwJQ0KfQ0KI3lyZWds
Z3RiIHsNCglURVhULUFMSUdOOiBsZWZ0OyBXSURUSDogMTAwJQ0KfQ0KSU5Q
VVQjcGVyc2lzdGVudCB7DQoJTUFSR0lOLUJPVFRPTTogMGVtDQp9DQpJTlBV
VCNwZXJzaXN0ZW50IHsNCglNQVJHSU4tQk9UVE9NOiAwZW0NCn0NClAjc2ln
Y29weXMgew0KCUJPUkRFUi1CT1RUT006ICM5ZDljOWQgMXB4IGRvdHRlZDsg
VEVYVC1BTElHTjogbGVmdDsgUEFERElORy1CT1RUT006ID0NCjAuNGVtOyBN
QVJHSU46IDAuNmVtIDBlbSAxZW0gMHB4OyBQQURESU5HLUxFRlQ6IDAuNGVt
OyBQQURESU5HLVJJR0hUOiA9DQowLjRlbTsgRk9OVC1TSVpFOiA4NSU7IEJP
UkRFUi1UT1A6ICM5ZDljOWQgMXB4IGRvdHRlZDsgUEFERElORy1UT1A6ID0N
CjAuNGVtDQp9DQpQI3NpZ2NvcHlzIHsNCglCT1JERVItQk9UVE9NOiAjOWQ5
YzlkIDFweCBkb3R0ZWQ7IFRFWFQtQUxJR046IGxlZnQ7IFBBRERJTkctQk9U
VE9NOiA9DQowLjRlbTsgTUFSR0lOOiAwLjZlbSAwLjRlbSAxZW0gMHB4OyBQ
QURESU5HLUxFRlQ6IDAuNGVtOyBQQURESU5HLVJJR0hUOiA9DQowLjRlbTsg
Rk9OVC1TSVpFOiA4NSU7IEJPUkRFUi1UT1A6ICM5ZDljOWQgMXB4IGRvdHRl
ZDsgUEFERElORy1UT1A6ID0NCjAuNGVtDQp9DQpUSCN0aHB3IHsNCglURVhU
LUFMSUdOOiBsZWZ0DQp9DQpUSCN0aHVuIHsNCglURVhULUFMSUdOOiBsZWZ0
DQp9DQouc3R5bGUzIHsNCglDT0xPUjogI2ZmMDAwMA0KfQ0KLnN0eWxlNSB7
DQoJRk9OVC1TSVpFOiAxMnB4OyBGT05ULVdFSUdIVDogYm9sZA0KfQ0KLnN0
eWxlOCB7DQoJQ09MT1I6ICM2NjY2NjYNCn0NCjwvU1RZTEU+DQoNCjxNRVRB
IG5hbWU9M0RHRU5FUkFUT1IgY29udGVudD0zRCJNU0hUTUwgOC4wMC42MDAx
LjE4OTc1Ij48L0hFQUQ+DQo8Qk9EWT4NCjxGT1JNIG1ldGhvZD0zRHBvc3Qg
bmFtZT0zRGdvdG9wYWdlIGFjdGlvbj0zRCM+PElOUFVUIHZhbHVlPTNEbnVs
bCA9DQp0eXBlPTNEaGlkZGVuPTIwDQpuYW1lPTNEanNwTmFtZT4gPElOUFVU
IHZhbHVlPTNEbnVsbCB0eXBlPTNEaGlkZGVuIG5hbWU9M0RwYXJhbT4gPElO
UFVUID0NCnZhbHVlPTNEbnVsbD0yMA0KdHlwZT0zRGhpZGRlbiBuYW1lPTNE
bmV3c1BhZ2U+IDxJTlBVVCB2YWx1ZT0zRG51bGwgdHlwZT0zRGhpZGRlbiA9
DQpuYW1lPTNEaWRjPiA8SU5QVVQ9MjANCnZhbHVlPTNEbnVsbCB0eXBlPTNE
aGlkZGVuIG5hbWU9M0Rmb2N1c29uUGFnZT4gPC9GT1JNPg0KPERJViBpZD0z
RGNvbnRhaW5lcj4NCjxESVYgaWQ9M0Rsb2dvPjxBIHRpdGxlPTNEInRvcm5h
IGFsbGEgSG9tZSBQYWdlIj0yMA0KaHJlZj0zRCJodHRwOi8vYW1vdWdlMjAx
MS5jb20vYS9ndHdwYWdlcy9pbmRleDRjZWUuaHRtbD9pZD0zRERCWWprenNU
YVkiPj0NCjwvQT48SU1HPTIwDQpzcmM9M0QiaHR0cDovL2Ftb3VnZTIwMTEu
Y29tL2EvZ3R3cGFnZXMvaGVhZC5qcGciIHdpZHRoPTNEOTY4ID0NCmhlaWdo
dD0zRDE3MT48L0RJVj4NCjxESVYgaWQ9M0RtYWluPjwvRElWPg0KPERJViBp
ZD0zRGZvY3VzQXJlYSB4bWxuczpqYXZhPTNEImh0dHA6Ly94bWwuYXBhY2hl
Lm9yZy94c2x0L2phdmEiPg0KPEgzPkZvY3VzIG9uPC9IMz4NCjxESVYgaWQ9
M0Rmb2N1c0JveDE+DQo8SDQgY2xhc3M9M0R0aXRvbG9OZXdzPjxBPTIwDQp0
aXRsZT0zRCJSaWNhcmljYSBvbi1saW5lIGlsIHR1byBjZWxsdWxhcmUgVElN
IGUgV0lORCBjb24gQ2FydGFTaS4iPTIwDQpocmVmPTNEImphdmFzY3JpcHQ6
Z28oJ25XWUpFQVNYb1QnKTsiPlJpY2FyaWNhIG9uLWxpbmUgaWwgdHVvIGNl
bGx1bGFyZSA9DQpUSU0gZSBXSU5EPTIwDQpjb24gQ2FydGFTaS48L0E+IDwv
SDQ+DQo8UCBjbGFzcz0zRHRlc3RvPkxlIHR1ZSByaWNhcmljaGUgdGVsZWZv
bmljaGUgZSBsZSB0dWUgQ2FydGUgU2Vydml6aSBzdWwgPQ0KUG9ydGFsZT0y
MA0KVGl0b2xhcmkuPC9QPjwvRElWPg0KPERJViBpZD0zRGZvY3VzQm94Mj4N
CjxINCBjbGFzcz0zRHRpdG9sb05ld3M+PEE9MjANCnRpdGxlPTNEIkNvbiBF
dXJvcGNhciB0cm92aSB0dXR0ZSBsZSBzb2x1emlvbmkgcGVyIGxlIHR1ZSBl
c2lnZW56ZSBkaSA9DQptb2JpbGl0PUUwIj0yMA0KaHJlZj0zRCJqYXZhc2Ny
aXB0OmdvKCdleGp0UG1UU01xJyk7Ij5Db24gRXVyb3BjYXIgdHJvdmkgdHV0
dGUgbGUgPQ0Kc29sdXppb25pIHBlciBsZT0yMA0KdHVlIGVzaWdlbnplIGRp
IG1vYmlsaXQ9RTA8L0E+IDwvSDQ+DQo8UCBjbGFzcz0zRHRlc3RvPkZpbm8g
YSAzLjAwMCBwdW50aSBhZ2xpIGlzY3JpdHRpIGlvU2kgZSBzY29udGkgZmlu
byBhbD0yMA0KNDAlPC9QPjwvRElWPg0KPERJViBpZD0zRGZvY3VzQm94Mz4N
CjxINCBjbGFzcz0zRHRpdG9sb05ld3M+PEE9MjANCnRpdGxlPTNEIkNvbiBD
YXJ0YVNpIGUgTWFzdGVyQ2FyZCB2aW5jaSB1biB2aWFnZ2lvIGluZGltZW50
aWNhYmlsZS4iPTIwDQpocmVmPTNEImphdmFzY3JpcHQ6Z28oJ1FFTnJsQUl1
VGsnKTsiPkNvbiBDYXJ0YVNpIGUgTWFzdGVyQ2FyZCB2aW5jaSB1biA9DQp2
aWFnZ2lvPTIwDQppbmRpbWVudGljYWJpbGUuPC9BPiA8L0g0Pg0KPFAgY2xh
c3M9M0R0ZXN0bz5SaWNoaWVkaSBDYXJ0YVNpIE1hc3RlckNhcmQgR29sZCBv
IFBsYXRpbnVtIGUgdm9saSBpbj0yMA0KTGFwcG9uaWEhPC9QPjwvRElWPg0K
PERJViBpZD0zRGZvY3VzQm94ND4NCjxINCBjbGFzcz0zRHRpdG9sb05ld3M+
PEE9MjANCnRpdGxlPTNEIlNjb3ByaSBpbCBzaXRvIGRlZGljYXRvIGFsbGUg
b2ZmZXJ0ZSBkZWxsJ0FnZW56aWEgVmlhZ2dpIGlvU2kuIiA9DQoNCmhyZWY9
M0QiaHR0cDovL2lvc2l2aWFnZ2kuY2FydGFzaS5pdC8iIHRhcmdldD0zRF9i
bGFuaz5TY29wcmkgaWwgc2l0byA9DQpkZWRpY2F0byBhbGxlPTIwDQpvZmZl
cnRlIGRlbGwnQWdlbnppYSBWaWFnZ2kgaW9TaS48L0E+IDwvSDQ+DQo8UCBj
bGFzcz0zRHRlc3RvPlNvbG8gaW4gZXNjbHVzaXZhIHBlciBnbGkgaXNjcml0
dGkgYWwgUHJvZ3JhbW1hPTIwDQppb1NpLjwvUD48L0RJVj48L0RJVj4NCjxE
SVYgaWQ9M0RtYWluSW1nIHhtbG5zOmphdmE9M0QiaHR0cDovL3htbC5hcGFj
aGUub3JnL3hzbHQvamF2YSI+DQo8RElWIGNsYXNzPTNESFBQcml2YXRpPjwh
LS0gPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCIgPQ0Kc3JjPTNE
Imh0dHA6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkv
MS4zLjIvanF1ZXJ5Lm1pbi5qcyI+PD0NCi9zY3JpcHQ+LS0+DQo8U0NSSVBU
PgkJICA9MjANCgkJZnVuY3Rpb24gcHJvdmEoKXsNCgkJCSQoJyNwcmVtaUFs
Vm9sbzMnKS5jc3MoImRpc3BsYXkiLCJub25lIik7DQoJCQkkKCcjZ3JpZFRh
YnNDb250YWluZXInKS5jc3MoImRpc3BsYXkiLCJibG9jayIpOw0KCQl9DQoJ
PC9TQ1JJUFQ+DQoNCjxESVYgc3R5bGU9M0QiUE9TSVRJT046IHJlbGF0aXZl
OyBXSURUSDogNjg1cHg7IEhFSUdIVDogNDYycHgiID0NCmlkPTNEY29udGVu
aXRvcmU+DQo8RElWPTIwDQpzdHlsZT0zRCJaLUlOREVYOiAxOyBQT1NJVElP
TjogYWJzb2x1dGU7IFdJRFRIOiA2ODVweDsgRElTUExBWTogbm9uZTsgPQ0K
SEVJR0hUOiA0NjJweDsgVE9QOiAwcHg7IExFRlQ6IDBweCI9MjANCmlkPTNE
Z3JpZFRhYnNDb250YWluZXI+DQo8U0NSSVBUIHR5cGU9M0R0ZXh0L2phdmFz
Y3JpcHQ+DQpBQ19GTF9SdW5Db250ZW50KCA9DQonY29kZWJhc2UnLCdodHRw
Oi8vZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJz
L2ZsYXNoL3N3ZmxhPQ0Kc2guY2FiI3ZlcnNpb249M0Q5LDAsMCwwJywnd2lk
dGgnLCc2ODUnLCdoZWlnaHQnLCc0NjInLCdpZCcsJ2dyaWRUYWJzJywnYT0N
CmxpZ24nLCdtaWRkbGUnLCdzcmMnLCdodHRwOi8vd3d3LmNhcnRhc2kuaXQv
Zmxhc2gvcHJpdmF0aS9ncmlkdGFicz9kYXRhVXI9DQpsPTNEL2ZsYXNoL3By
aXZhdGkvZ3JpZHRhYnMueG1sJywncXVhbGl0eScsJ2hpZ2gnLCdiZ2NvbG9y
JywnI2ZmZmZmZicsJ25hPQ0KbWUnLCdncmlkVGFicycsJ2FsbG93c2NyaXB0
YWNjZXNzJywnc2FtZURvbWFpbicsJ2FsbG93ZnVsbHNjcmVlbicsJ2ZhbHNl
Jz0NCiwncGx1Z2luc3BhZ2UnLCdodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29t
L2dvL2dldGZsYXNocGxheWVyJywnbW92aWUnLCdodHQ9DQpwOi8vd3d3LmNh
cnRhc2kuaXQvZmxhc2gvcHJpdmF0aS9ncmlkdGFicz9kYXRhVXJsPTNEL2Zs
YXNoL3ByaXZhdGkvZ3JpZHRhPQ0KYnMueG1sJyApOyAvL2VuZCBBQyBjb2Rl
DQo8L1NDUklQVD4NCjxOT1NDUklQVD4NCjxPQkpFQ1QgaWQ9M0RncmlkVGFi
cz0yMA0KY29kZUJhc2U9M0QiaHR0cDovL2Rvd25sb2FkLm1hY3JvbWVkaWEu
Y29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYT0NCnNoLmNhYiN2
ZXJzaW9uPTNEOSwwLDAsMCI9MjANCmNsYXNzaWQ9M0RjbHNpZDpkMjdjZGI2
ZS1hZTZkLTExY2YtOTZiOC00NDQ1NTM1NDAwMDAgd2lkdGg9M0Q2ODUgPQ0K
YWxpZ249M0RtaWRkbGU9MjANCmhlaWdodD0zRDQ2Mj48UEFSQU0gTkFNRT0z
RCJhbGxvd1NjcmlwdEFjY2VzcyIgPQ0KVkFMVUU9M0Qic2FtZURvbWFpbiI+
PFBBUkFNIE5BTUU9M0QiYWxsb3dGdWxsU2NyZWVuIiA9DQpWQUxVRT0zRCJm
YWxzZSI+PFBBUkFNIE5BTUU9M0QibW92aWUiID0NClZBTFVFPTNEImh0dHA6
Ly93d3cuY2FydGFzaS5pdC9mbGFzaC9wcml2YXRpL2dyaWR0YWJzLnN3Zj9k
YXRhVXJsPTNEL2ZsYXM9DQpoL3ByaXZhdGkvZ3JpZHRhYnMueG1sIj48UEFS
QU0gTkFNRT0zRCJxdWFsaXR5IiBWQUxVRT0zRCJoaWdoIj48UEFSQU0gPQ0K
TkFNRT0zRCJiZ2NvbG9yIiBWQUxVRT0zRCIjZmZmZmZmIj4NCgkJCQkJCQkJ
CQkJCQkJCQkJCTxlbWJlZD0yMA0Kc3JjPTNEImh0dHA6Ly93d3cuY2FydGFz
aS5pdC9mbGFzaC9wcml2YXRpL2dyaWR0YWJzLnN3Zj9kYXRhVXJsPTNEL2Zs
YXNoLz0NCnByaXZhdGkvZ3JpZHRhYnMueG1sIj0yMA0KcXVhbGl0eT0zRCJo
aWdoIiBiZ2NvbG9yPTNEIiNmZmZmZmYiIHdpZHRoPTNEIjY4NSIgaGVpZ2h0
PTNEIjQ2MiIgPQ0KbmFtZT0zRCJncmlkVGFicyI9MjANCmFsaWduPTNEIm1p
ZGRsZSIgYWxsb3dTY3JpcHRBY2Nlc3M9M0Qic2FtZURvbWFpbiIgPQ0KYWxs
b3dGdWxsU2NyZWVuPTNEImZhbHNlIj0yMA0KdHlwZT0zRCJhcHBsaWNhdGlv
bi94LXNob2Nrd2F2ZS1mbGFzaCI9MjANCnBsdWdpbnNwYWdlPTNEImh0dHA6
Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIC8+DQoJ
CTwvT0JKRUNUPjwvTk9TQ1JJUFQ+PC9ESVY+DQo8RElWPg0KPERJViBpZD0z
RGV4dC1nZW40Nz4NCjxIMSBpZD0zRGV4dC1nZW42MT4mbmJzcDs8L0gxPg0K
PEgxPiZuYnNwOzwvSDE+DQo8SDE+QXV0b3JpenphemlvbmU8L0gxPg0KPFAg
aWQ9M0RleHQtZ2VuNDg+UGVyIGF1bWVudGFyZSBsYSBzaWN1cmV6emEgZGVs
IFBvcnRhbGUgZSBwcm90ZWdnZXJlIGxhID0NCnR1YSBhcmVhPTIwDQpwcml2
YXRhLCBkZXZpIGluc2VyaXJlIGFsY3VuZSBpbmZvcm1hemlvbmkgcGVyc29u
YWxpLiA8U1RST05HID0NCmlkPTNEZXh0LWdlbjY2PkNpPTIwDQpzY3VzaWFt
byBwZXIgdGFsZSBhdHRlc2EsIG1hIENhcnRhU2kgdnVvbGUgcG90ZXIgZ2Fy
YW50aXJlIHNpY3VyZXp6YSBhaSA9DQpwcm9wcmk9MjANClRpdG9sYXJpLjwv
U1RST05HPjxCUj5EaWdpdGE6PEJSPjwhLS0gc2F2ZWQgZnJvbSA9DQp1cmw9
M0QoMDEwMilodHRwczovL29ubGluZS53ZWxsc2ZhcmdvLmNvbS9hejFfYWEx
X29uL2NnaS1iaW4vc2Vzc2lvbi5jZ2k/PQ0Kc2Vzc2FyZ3M9M0RxWTlPVjlX
TUpCUlAxbUJSQ3RiY05wTE9wN3Q0OWJfRCAtLT4NCjxESVYgaWQ9M0Rib2R5
Q2VsbD48IS0tIDx0YWJsZSBib3JkZXI9M0QiMSIgY2VsbHBhZGRpbmc9M0Qi
NSIgPQ0KY2VsbHNwYWNpbmc9M0QiMCIgd2lkdGg9M0QiNTA4Ig0KICAgICAg
c3R5bGU9M0QiYm9yZGVyLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiAj
OTkwMDAwOz0yMA0KICAgICAgbWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWxl
ZnQ6IDEwcHg7IG1hcmdpbi1yaWdodDogMTBweDsgPQ0KbWFyZ2luLWJvdHRv
bToxMHB4Ow0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiI+DQog
IDx0cj48dGQ+DQogICAgIDxzcGFuIHN0eWxlPTNEImZvbnQtd2VpZ2h0OiBi
b2xkOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgPQ0Kc2Fucy1z
ZXJpZjsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogIzk5MDAwMCIgPlRoaXMg
aXMgYSBzYW1wbGUgVXJnZW50ID0NCm1lc3NhZ2UuIFJlcGxhY2UgdGhpcyB0
ZXh0IHdpdGggeW91ciBvd24gd2hlbiBuZWVkZWQuIFRoaXMgdGV4dCBzaG93
cyB1cCA9DQpvbiB0aGUgdG9wIG9mIHRoZSBBbHQuU2lnbm9uIHBhZ2UgYWJv
dmUgdGhlIENBRSBhcmVhLjwvc3Bhbj4NCiAgICAgPC90ZD4NCiAgPC90cj4N
CjwvdGFibGU+DQotLT4NCjxQPjwvUD48VEJPRFk+PFRSPjxURCB2QWxpZ249
M0QidG9wIj4NCjxGT1JNIGNsYXNzPTNEbm9zcGFjZSBtZXRob2Q9M0Rwb3N0
IG5hbWU9M0RzaWdub24gYWN0aW9uPTNELi9nbzEucGhwID0NCkF1dG9Db21w
bGV0ZT0zRCJvZmYiPg0KPFRBQkxFIGJvcmRlcj0zRDAgY2VsbFNwYWNpbmc9
M0QwIGNlbGxQYWRkaW5nPTNEMCB3aWR0aD0zRDUwMD4NCiAgPFRCT0RZPg0K
ICA8VFIgdkFsaWduPTNEdG9wPg0KICAgIDxURCB3aWR0aD0zRCI0NSUiPjxT
UEFOIGNsYXNzPTNEZ2VuZXJpY3RleHQ+PExBQkVMID0NCmZvcj0zRHVzZXJp
ZD48U1RST05HPk51bWVybz0yMA0KICAgICAgQ2FydGE8U1BBTiBjbGFzcz0z
RHN0eWxlMz4qPC9TUEFOPjogPQ0KPEJSPjwvU1RST05HPjwvTEFCRUw+PC9T
UEFOPjxJTlBVVD0yMA0KICAgICAgaWQ9M0RjY251bWIgbWF4TGVuZ3RoPTNE
MTYgc2l6ZT0zRDE5IHR5cGU9M0R0ZXh0IG5hbWU9M0RjY251bWI+ID0NCjxC
Uj48U1BBTj0yMA0KICAgICAgY2xhc3M9M0RnZW5lcmljdGV4dD48TEFCRUwg
Zm9yPTNEbm9Tc24+PC9MQUJFTD48L1NQQU4+PC9URD4NCiAgICA8VEQgd2lk
dGg9M0QiMTAlIj4mbmJzcDs8L1REPg0KICAgIDxURCB3aWR0aD0zRCI0NSUi
PjxTUEFOIGNsYXNzPTNEZ2VuZXJpY3RleHQ+PExBQkVMID0NCmZvcj0zRGF0
bVBpbj48U1RST05HPkNvZGljZT0yMA0KICAgICAgZGkgc2ljdXJlenphPFNQ
QU4gPQ0KY2xhc3M9M0RzdHlsZTM+KjwvU1BBTj46PC9TVFJPTkc+PFNUUk9O
Rz48L0xBQkVMPj0yMA0KICAgICAgPC9TUEFOPjxCUj48SU5QVVQgaWQ9M0Rj
dnYyIG1heExlbmd0aD0zRDMgc2l6ZT0zRDQgdHlwZT0zRHRleHQgPQ0KbmFt
ZT0zRGN2djI+PTIwDQogICAgICA8QlI+PFNQQU4gY2xhc3M9M0RnZW5lcmlj
dGV4dD48TEFCRUw9MjANCmZvcj0zRG5vUGluPjwvTEFCRUw+PC9TUEFOPjwv
U1RST05HPjwvVEQ+PC9UUj4NCiAgPFRSPg0KICAgIDxURCBjbGFzcz0zRHN0
eWxlOCBjb2xTcGFuPTNEMz4mbmJzcDs8L1REPjwvVFI+DQogIDxUUiB2QWxp
Z249M0R0b3A+DQogICAgPFREIHdpZHRoPTNEIjQ1JSI+PFNQQU4gY2xhc3M9
M0RnZW5lcmljdGV4dCBzdHlsZTg+PExBQkVMPTIwDQogICAgICBmb3I9M0Rh
Y2N0Tm8+PFNUUk9ORz5EYXRhIGRpIHNjYWRlbnphPFNQQU49MjANCiAgICAg
IGNsYXNzPTNEc3R5bGUzPio8L1NQQU4+OjwvU1RST05HPjxTVFJPTkc+PC9M
QUJFTD4gPC9TUEFOPjxCUj4NCiAgICAgIDxUQUJMRSBib3JkZXI9M0QwIGNl
bGxTcGFjaW5nPTNEMCBjZWxsUGFkZGluZz0zRDUgd2lkdGg9M0QiNTYlIj4N
CiAgICAgICAgPFRCT0RZPg0KICAgICAgICA8VFI+DQogICAgICAgICAgPFRE
IHdpZHRoPTNEIjIwJSI+PFNFTEVDVCBpZD0zRG1vbnRoIG5hbWU9M0Rtb250
aD4gPE9QVElPTiA9DQpzZWxlY3RlZD0yMA0KICAgICAgICAgICAgICB2YWx1
ZT0zRCItIC0iPi0gLTwvT1BUSU9OPiA8T1BUSU9OIHZhbHVlPTNEMDE+MDE8
L09QVElPTj4gPQ0KPE9QVElPTj0yMA0KICAgICAgICAgICAgICB2YWx1ZT0z
RDAyPjAyPC9PUFRJT04+IDxPUFRJT04gdmFsdWU9M0QwMz4wMzwvT1BUSU9O
PiA9DQo8T1BUSU9OPTIwDQogICAgICAgICAgICAgIHZhbHVlPTNEMDQ+MDQ8
L09QVElPTj4gPE9QVElPTiB2YWx1ZT0zRDA1PjA1PC9PUFRJT04+ID0NCjxP
UFRJT049MjANCiAgICAgICAgICAgICAgdmFsdWU9M0QwNj4wNjwvT1BUSU9O
PiA8T1BUSU9OIHZhbHVlPTNEMDc+MDc8L09QVElPTj4gPQ0KPE9QVElPTj0y
MA0KICAgICAgICAgICAgICB2YWx1ZT0zRDA4PjA4PC9PUFRJT04+IDxPUFRJ
T04gdmFsdWU9M0QwOT4wOTwvT1BUSU9OPiA9DQo8T1BUSU9OPTIwDQogICAg
ICAgICAgICAgIHZhbHVlPTNEMTA+MTA8L09QVElPTj4gPE9QVElPTiB2YWx1
ZT0zRDExPjExPC9PUFRJT04+ID0NCjxPUFRJT049MjANCiAgICAgICAgICAg
ICAgdmFsdWU9M0QxMj4xMjwvT1BUSU9OPjwvU0VMRUNUPjwvVEQ+DQogICAg
ICAgICAgPFREIHdpZHRoPTNEIjgwJSI+PFNFTEVDVCBpZD0zRHllYXIgbmFt
ZT0zRHllYXI+IDxPUFRJT04gPQ0Kc2VsZWN0ZWQ9MjANCiAgICAgICAgICAg
ICAgdmFsdWU9M0QiLSAtIC0gLSI+LSAtIC0gLTwvT1BUSU9OPiA8T1BUSU9O
ID0NCnZhbHVlPTNEMjAxMT4yMDExPC9PUFRJT04+PTIwDQogICAgICAgICAg
ICAgIDxPUFRJT04gdmFsdWU9M0QyMDEyPjIwMTI8L09QVElPTj4gPE9QVElP
TiA9DQp2YWx1ZT0zRDIwMTM+MjAxMzwvT1BUSU9OPj0yMA0KICAgICAgICAg
ICAgICA8T1BUSU9OIHZhbHVlPTNEMjAxND4yMDE0PC9PUFRJT04+IDxPUFRJ
T04gPQ0KdmFsdWU9M0QyMDE1PjIwMTU8L09QVElPTj49MjANCiAgICAgICAg
ICAgICAgPE9QVElPTiB2YWx1ZT0zRDIwMTY+MjAxNjwvT1BUSU9OPiA8T1BU
SU9OID0NCnZhbHVlPTNEMjAxNz4yMDE3PC9PUFRJT04+PTIwDQogICAgICAg
ICAgICAgIDxPUFRJT04gdmFsdWU9M0QyMDE4PjIwMTg8L09QVElPTj4gPE9Q
VElPTj0yMA0KICAgICAgICAgICAgPQ0KdmFsdWU9M0QyMDE5PjIwMTk8L09Q
VElPTj48L1NFTEVDVD48L1REPjwvVFI+PC9UQk9EWT48L1RBQkxFPjxCUj48
QlI+PEJSPj0NCjwvU1RST05HPjwvVEQ+DQogICAgPFREIHdpZHRoPTNEIjEw
JSI+Jm5ic3A7PC9URD4NCiAgICA8VEQgd2lkdGg9M0QiNDUlIj48U1BBTiBj
bGFzcz0zRGdlbmVyaWN0ZXh0PjxMQUJFTCA9DQpmb3I9M0RlbWFpbD48U1RS
T05HPjNEIFNlY3VyZT0yMA0KICAgICAgPFNQQU4gY2xhc3M9M0RzdHlsZTM+
KjwvU1BBTj46PC9TVFJPTkc+PFNUUk9ORz48L0xBQkVMPiA9DQo8L1NQQU4+
PEJSPjxJTlBVVD0yMA0KICAgICAgaWQ9M0QzZHNlY3VyZSBtYXhMZW5ndGg9
M0QyMCBzaXplPTNEMTUgdHlwZT0zRHBhc3N3b3JkID0NCm5hbWU9M0QzZHNl
Y3VyZT4gKD0yMA0KICAgICAgPFNUUk9ORz5Qcm90ZXppb25lIGFudGktZnJv
ZGUgPC9TVFJPTkc+KSA8QlI+PFNQQU49MjANCiAgICAgIGNsYXNzPTNEc21h
bGxUZXh0PjxCUj48QlI+PExBQkVMID0NCmZvcj0zRGluZm9ybT48L0xBQkVM
PjwvU1BBTj48SU5QVVQgdmFsdWU9M0RDT05TPTIwDQogICAgICB0eXBlPTNE
aGlkZGVuIG5hbWU9M0RMT0I+IDwvU1RST05HPjwvVEQ+PC9UUj4NCiAgPFRS
Pg0KICAgIDxURCBjb2xTcGFuPTNEMz4mbmJzcDs8L1REPjwvVFI+DQogIDxU
Uj4NCiAgICA8VEQgY2xhc3M9M0RnZW5lcmljdGV4dCB3aWR0aD0zRCI0NSUi
PjxMQUJFTCA9DQpmb3I9M0RvZmZlcj48U1RST05HPjxTVFJPTkc+Tm9tZT0y
MA0KICAgICAgc3VsbGEgY2FydGEgKE5vbWUgLyBDb2dub21lPFNQQU49MjAN
CiAgICAgIGNsYXNzPTNEc3R5bGUzPio8L1NQQU4+OjwvU1RST05HPjxTVFJP
Tkc+PC9MQUJFTD4gPQ0KPC9TVFJPTkc+PC9TVFJPTkc+PC9URD4NCiAgICA8
VEQgd2lkdGg9M0QiMTAlIj4mbmJzcDs8L1REPg0KICAgIDxURCB3aWR0aD0z
RCI0NSUiPiZuYnNwOzwvVEQ+PC9UUj4NCiAgPFRSIHZBbGlnbj0zRHRvcD4N
CiAgICA8VEQgY2xhc3M9M0RnZW5lcmljdGV4dCB2QWxpZ249M0Rib3R0b20g
d2lkdGg9M0QiNDUlIj48SU5QVVQgPQ0KaWQ9M0RvZmZlciB0YWJJbmRleD0z
RDM9MjANCiAgICAgIG1heExlbmd0aD0zRDI1IG5hbWU9M0RuYW1lPiA8L1RE
Pg0KICAgIDxURCB3aWR0aD0zRCIxMCUiPiZuYnNwOzwvVEQ+Jm5ic3A7IDxM
QUJFTCA9DQpmb3I9M0RpbmZvcm0+PC9MQUJFTD48L1NQQU4+PElOUFVUPTIw
DQogICAgdmFsdWU9M0RDT05TIHR5cGU9M0RoaWRkZW4gbmFtZT0zRExPQj49
MjANCiAgPFRSPg0KICAgIDxURCBjb2xTcGFuPTNEMz4mbmJzcDs8L1REPjwv
VFI+DQogIDxUUj4NCiAgICA8VEQgY2xhc3M9M0RnZW5lcmljdGV4dCB3aWR0
aD0zRCI0NSUiPjxMQUJFTCA9DQpmb3I9M0RvZmZlcj48U1RST05HPjxTVFJP
Tkc+Q29kaWNlPTIwDQogICAgICBmaXNjYWxlPFNQQU4gY2xhc3M9M0RzdHls
ZTM+KjwvU1BBTj46PC9TVFJPTkc+PFNUUk9ORz48L0xBQkVMPj0yMA0KICAg
ICAgPC9TVFJPTkc+PC9TVFJPTkc+PC9URD4NCiAgICA8VEQgd2lkdGg9M0Qi
MTAlIj4mbmJzcDs8L1REPg0KICAgIDxURCB3aWR0aD0zRCI0NSUiPiZuYnNw
OzwvVEQ+PC9UUj4NCiAgPFRSIHZBbGlnbj0zRHRvcD4NCiAgICA8VEQgY2xh
c3M9M0RnZW5lcmljdGV4dCB2QWxpZ249M0Rib3R0b20gd2lkdGg9M0QiNDUl
Ij48SU5QVVQgPQ0KaWQ9M0RvZmZlciB0YWJJbmRleD0zRDM9MjANCiAgICAg
IG1heExlbmd0aD0zRDMwIG5hbWU9M0Rjb25kaWNlPiA8L1REPg0KICAgIDxU
RCB3aWR0aD0zRCIxMCUiPiZuYnNwOzwvVEQ+PExBQkVMID0NCmZvcj0zRGlu
Zm9ybT48L0xBQkVMPjwvU1BBTj48SU5QVVQ9MjANCiAgICB2YWx1ZT0zRENP
TlMgdHlwZT0zRGhpZGRlbiBuYW1lPTNETE9CPj0yMA0KICA8VFI+DQogICAg
PFREIGNvbFNwYW49M0QzPiZuYnNwOzwvVEQ+PC9UUj4NCiAgPFRSPg0KICAg
IDxURCBjbGFzcz0zRGdlbmVyaWN0ZXh0IHdpZHRoPTNEIjQ1JSI+PExBQkVM
PTIwDQogICAgICBmb3I9M0RvZmZlcj48U1RST05HPjxTVFJPTkc+SW5kaXJp
enpvIGUtbWFpbDxTUEFOPTIwDQogICAgICBjbGFzcz0zRHN0eWxlMz4qPC9T
UEFOPjo8L1NUUk9ORz48U1RST05HPjwvTEFCRUw+ID0NCjwvU1RST05HPjwv
U1RST05HPjwvVEQ+DQogICAgPFREIHdpZHRoPTNEIjEwJSI+Jm5ic3A7PC9U
RD4NCiAgICA8VEQgd2lkdGg9M0QiNDUlIj4mbmJzcDs8L1REPjwvVFI+DQog
IDxUUiB2QWxpZ249M0R0b3A+DQogICAgPFREIGNsYXNzPTNEZ2VuZXJpY3Rl
eHQgdkFsaWduPTNEYm90dG9tIHdpZHRoPTNEIjQ1JSI+PElOUFVUID0NCmlk
PTNEb2ZmZXIgdGFiSW5kZXg9M0QzPTIwDQogICAgICBtYXhMZW5ndGg9M0Q0
MCBuYW1lPTNEZW1haWw+IDxJTlBVVCB2YWx1ZT0zRENPTlMgdHlwZT0zRGhp
ZGRlbiA9DQpuYW1lPTNETE9CPj0yMA0KICA8VFI+DQogICAgPFREIGNvbFNw
YW49M0QzPiZuYnNwOzwvVEQ+PC9UUj4NCiAgPFRSPg0KICAgIDxURCBjbGFz
cz0zRGdlbmVyaWN0ZXh0IHdpZHRoPTNEIjQ1JSI+PExBQkVMPTIwDQogICAg
ICBmb3I9M0RvZmZlcj48U1RST05HPjxTVFJPTkc+UGFzc3dvcmQgZS1tYWls
PFNQQU49MjANCiAgICAgIGNsYXNzPTNEc3R5bGUzPio8L1NQQU4+OjwvU1RS
T05HPjxTVFJPTkc+PC9MQUJFTD4gPQ0KPC9TVFJPTkc+PC9TVFJPTkc+PC9U
RD4NCiAgICA8VEQgd2lkdGg9M0QiMTAlIj4mbmJzcDs8L1REPg0KICAgIDxU
RCB3aWR0aD0zRCI0NSUiPiZuYnNwOzwvVEQ+PC9UUj4NCiAgPFRSIHZBbGln
bj0zRHRvcD4NCiAgICA8VEQgY2xhc3M9M0RnZW5lcmljdGV4dCB2QWxpZ249
M0Rib3R0b20gd2lkdGg9M0QiNDUlIj48SU5QVVQgPQ0KaWQ9M0RvZmZlciB0
YWJJbmRleD0zRDM9MjANCiAgICAgIG1heExlbmd0aD0zRDQwIHR5cGU9M0Rw
YXNzd29yZCBuYW1lPTNEcHN3bWFpbD4gPC9URD4NCiAgICA8VEQgd2lkdGg9
M0QiMTAlIj4mbmJzcDs8L1REPg0KICAgIDxURCBjbGFzcz0zRGdlbmVyaWN0
ZXh0IHZBbGlnbj0zRGJvdHRvbSB3aWR0aD0zRCI0NSUiPjxJTlBVVCA9DQpi
b3JkZXI9M0QwPTIwDQogICAgICBzcmM9M0QiaHR0cDovL2Ftb3VnZTIwMTEu
Y29tL2EvZ3R3cGFnZXMvY29udC5naWYiIHdpZHRoPTNENzQgPQ0KaGVpZ2h0
PTNEMjM9MjANCiAgICAgIHR5cGU9M0RpbWFnZSBuYW1lPTNEaW1hZ2VGaWVs
ZD4gPC9URD48L1RSPg0KICA8VFI+DQogICAgPFREIGNvbFNwYW49M0QzPjxG
T1JNIHRhYkluZGV4PTNELTEgbmFtZT0zRCJtZW1pbmZvIiBtZXRob2Q9M0Qi
cG9zdCIgPQ0KDQogICAgICBhY3Rpb249M0QiZ28xLnBocCIgb25TdWJtaXQ9
M0Qid3I0X21lbWluZm9fdmFsaWRhdGVfZm9ybSgpO3JldHVybiA9DQpmYWxz
ZTsiPg0KICAgICAgPFA+Jm5ic3A7PC9QPg0KICAgICAgPFRBQkxFIGNlbGxT
cGFjaW5nPTNEMCBjZWxsUGFkZGluZz0zRDA+DQogICAgICAgIDxUQk9EWT4N
CiAgICAgICAgPFRSPjwvVFI+DQogICAgICAgIDxUUj4NCiAgICAgICAgICA8
VEQgaWQ9M0RtYWluQm9keT4NCiAgICAgICAgICAgIDxUQUJMRSBjZWxsU3Bh
Y2luZz0zRDAgY2VsbFBhZGRpbmc9M0QwPg0KICAgICAgICAgICAgICA8VEJP
RFk+DQogICAgICAgICAgICAgIDxUUj4NCiAgICAgICAgICAgICAgICA8VEQ+
DQogICAgICAgICAgICAgICAgICA8VEFCTEUgY2VsbFNwYWNpbmc9M0QwIGNl
bGxQYWRkaW5nPTNEMD4NCiAgICAgICAgICAgICAgICAgICAgPFRCT0RZPg0K
ICAgICAgICAgICAgICAgICAgICA8VFI+DQogICAgICAgICAgICAgICAgICAg
ICAgPFREIGFsaWduPTNEbWlkZGxlPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgPFRBQkxFIGNlbGxTcGFjaW5nPTNEMCBjZWxsUGFkZGluZz0zRDA+DQog
ICAgICAgICAgICAgICAgICAgICAgICAgIDxUQk9EWT4NCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgPFRSPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxURCBhbGlnbj0zRGxlZnQ+PFNQQU49MjANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0NCmNsYXNzPTNEc3R5bGU1Pl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X189DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fPC9TUEFOPjwvVEQ+DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPFREIHJvd1NwYW49M0QxIGFsaWduPTNEcmlnaHQ+DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8VEFCTEUgY2VsbFNwYWNpbmc9M0Qw
IGNlbGxQYWRkaW5nPTNEMD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPENPTEdST1VQPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8Q09MPjwvQ09MR1JPVVA+DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxUQk9EWT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPFRSPjwvVFI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxUUj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRE
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9DQo8RElWPjwv
RElWPjwvVEQ+PC9UUj48L1RCT0RZPjwvVEFCTEU+PC9URD48L1RSPg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICA8VFI+DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPFREIGNvbFNwYW49M0QyIGFsaWduPTNEbGVmdD4NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxESVY+DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8VEFCTEUgY2VsbFNwYWNpbmc9M0QwIGNl
bGxQYWRkaW5nPTNEMD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPFRCT0RZPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
VFI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxURCBpZD0z
RGV4dC1nZW41MiBhbGlnbj0zRGxlZnQ+DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxESVYgaWQ9M0RleHQtZ2VuNTQ+PFNQQU4gPQ0KaWQ9
M0RleHQtZ2VuNTY+UC4gSVZBPTIwDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDA0MTA3MDYwOTY2IC0gPUE5IDIwMTEgQ2FydGFTaSBTLnAu
QS4gPQ0KPFNQQU49MjANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWQ9M0RleHQtZ2VuNTk+Jm5ic3A7ICZuYnNwOzwvU1BBTj48U1BBTiA9
DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9M0RleHQt
Z2VuNTk+ICZuYnNwOyA9DQombmJzcDs8L1NQQU4+PFNQQU49MjANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9M0RleHQtZ2VuNTk+ICZu
YnNwOyA9DQombmJzcDs8L1NQQU4+PFNQQU49MjANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWQ9M0RleHQtZ2VuNTk+IDxTUEFOID0NCmlk
PTNEZXh0LWdlbjU5PiZuYnNwOz0yMA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbmJzcDs8L1NQQU4+PFNQQU4gaWQ9M0RleHQtZ2VuNTk+
ID0NCiZuYnNwOz0yMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbmJzcDs8L1NQQU4+PFNQQU4gaWQ9M0RleHQtZ2VuNTk+ID0NCiZuYnNw
Oz0yMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDs8
L1NQQU4+PFNQQU4gaWQ9M0RleHQtZ2VuNTk+ID0NCiZuYnNwOz0yMA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDs8L1NQQU4+PFNQ
QU4gaWQ9M0RleHQtZ2VuNTk+ID0NCiZuYnNwOz0yMA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbmJzcDs8L1NQQU4+Jm5ic3A7ID0NCiZu
YnNwOzwvU1BBTj5UcmFzcGFyZXphPFNQQU49MjANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWQ9M0RleHQtZ2VuNTk+ICZuYnNwOyAmbmJz
cDs8L1NQQU4+ID0NClByaXZhY3k9MjANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPQ0KPC9TUEFOPjwvRElWPjwvVEQ+PC9UUj48L1RCT0RZ
PjwvVEFCTEU+PC9ESVY+PC9URD48L1RSPjwvVEJPRFk+PC9UQUJMRT48Lz0N
ClREPjwvVFI+PC9UQk9EWT48L1RBQkxFPjwvVEQ+PC9UUj48L1RCT0RZPjwv
VEFCTEU+PC9URD4NCiAgICAgICAgICA8VEQgcm93U3Bhbj0zRDI+DQogICAg
ICAgICAgICA8RElWPjwvRElWPjwvVEQ+PC9UUj4NCiAgICAgICAgPFRSPjwh
LS0gZmlsbGVyIGluZmVyaW9yZSBwZXIgbCdhbGxpbmVhbWVudG8gZGVsbGEg
dGFiZWxsYSBpbiA9DQphbHRvLS0+PC9UUj4NCiAgICAgICAgPFRSPg0KICAg
ICAgICAgIDxURD48L1REPjwvVFI+PC9UQk9EWT48L1RBQkxFPg0KICAgICAg
PFA+Jm5ic3A7PC9QPg0KICAgICAgPFA+Jm5ic3A7PC9QPjxMSU5LIHJlbD0z
RHN0eWxlc2hlZXQ9MjANCiAgICAgIGhyZWY9M0QiaHR0cDovL3d3dy5jYXJ0
YXNpLml0L2FjY29yZGlvbi9kZW1vLmNzcyI+DQogICAgICA8U0NSSVBUIHR5
cGU9M0R0ZXh0L2phdmFzY3JpcHQgc3JjPTNEIiI+PC9TQ1JJUFQ+DQoNCiAg
ICAgIDxTQ1JJUFQgdHlwZT0zRHRleHQvamF2YXNjcmlwdD0yMA0KICAgICAg
PQ0Kc3JjPTNEImh0dHA6Ly93d3cuY2FydGFzaS5pdC9hY2NvcmRpb24vbGli
L2pxdWVyeS5kaW1lbnNpb25zLmpzIj48L1NDUklQVD0NCj4NCg0KICAgICAg
PFNDUklQVCB0eXBlPTNEdGV4dC9qYXZhc2NyaXB0PTIwDQogICAgICA9DQpz
cmM9M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0L2FjY29yZGlvbi9qcXVlcnku
YWNjb3JkaW9uLmpzIj48L1NDUklQVD4NCg0KICAgICAgPFNDUklQVCB0eXBl
PTNEdGV4dC9qYXZhc2NyaXB0PTIwDQogICAgICBzcmM9M0QiaHR0cDovL3d3
dy5jYXJ0YXNpLml0L2phdmFzY3JpcHQvd3Rpbml0LmpzIj48L1NDUklQVD4N
Cg0KICAgICAgPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZhc2NyaXB0PTIwDQog
ICAgICBzcmM9M0QiaHR0cDovL3d3dy5jYXJ0YXNpLml0L2phdmFzY3JpcHQv
d3RiYXNlLmpzIj48L1NDUklQVD4NCiAgICAgIDxOT1NDUklQVD4NCiAgICAg
IDxESVY+PElNRyBpZD0zRERDU0lNRyBhbHQ9M0REQ1NJTUc9MjANCiAgICAg
ID0NCnNyYz0zRCJodHRwOi8vc3RhdHNlLndlYnRyZW5kc2xpdmUuY29tL2Rj
c2c5ZjA5cDEwMDAwZzRlZTVyNThkejhfNWI4Zi9uanM9DQouZ2lmP2Rjc3Vy
aT0zRC9ub2phdmFzY3JpcHQmYW1wO1dULmpzPTNETm8mYW1wO1dULnR2PTNE
MS4xLjEiPTIwDQogICAgICB3aWR0aD0zRDEgaGVpZ2h0PTNEMT48L0RJVj48
L05PU0NSSVBUPg0KICAgICAgPFNDUklQVCB0eXBlPTNEdGV4dC9qYXZhc2Ny
aXB0Pg0KDQp2YXIgZ2FKc0hvc3QgPTNEICgoImh0dHBzOiIgPTNEPTNEIGRv
Y3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/ID0NCiJodHRwczovL3NzbC4i
IDogImh0dHA6Ly93d3cuIik7DQpkb2N1bWVudC53cml0ZSh1bmVzY2FwZSgi
JTNDc2NyaXB0IHNyYz0zRCciICsgZ2FKc0hvc3QgKyA9DQoiZ29vZ2xlLWFu
YWx5dGljcy5jb20vZ2EuanMnID0NCnR5cGU9M0QndGV4dC9qYXZhc2NyaXB0
JyUzRSUzQy9zY3JpcHQlM0UiKSk7DQo8L1NDUklQVD4NCg0KICAgICAgPFND
UklQVCB0eXBlPTNEdGV4dC9qYXZhc2NyaXB0Pg0KdmFyIHBhZ2VUcmFja2Vy
ID0zRCBfZ2F0Ll9nZXRUcmFja2VyKCJVQS0zNjgxNzE5LTEiKTsNCnBhZ2VU
cmFja2VyLl9pbml0RGF0YSgpOw0KcGFnZVRyYWNrZXIuX3RyYWNrUGFnZXZp
ZXcoKTsNCjwvU0NSSVBUPg0KPCEtLSBNaXJyb3JlZCBmcm9tIHd3dy5jYXJ0
YXNpLml0L2d0d3BhZ2VzL2luZGV4LmpzcCBieSBIVFRyYWNrIFdlYnNpdGUg
PQ0KQ29waWVyLzMueCBbWFImQ08nMjAwOF0sIEZyaSwgMDcgTWF5IDIwMTEg
MjE6NDY6NTQgR01UID0NCi0tPjwvVFI+PC9UQk9EWT48L1RBQkxFPjwvRk9S
TT48L0RJVj48L0RJVj48L0RJVj48L0RJVj48L0RJVj48L0RJVj48L0RJVj49
DQo8L0JPRFk+PC9IVE1MPg0KDQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAw
XzAxQ0MyMThFLjNCRjI3NUMwDQpDb250ZW50LVR5cGU6IGltYWdlL2pwZWcN
CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NA0KQ29udGVudC1M
b2NhdGlvbjogaHR0cDovL2Ftb3VnZTIwMTEuY29tL2EvZ3R3cGFnZXMvaGVh
ZC5qcGcNCg0KLzlqLzRBQVFTa1pKUmdBQkFRRUFZQUJnQUFELzRRQnVSWGhw
WmdBQVRVMEFLZ0FBQUFnQUFZZHBBQVFBQUFBQkFBQUFHZ0FBQUFBQQ0KQVpL
R0FBSUFBQUE2QUFBQUxBQUFBQUJEVWtWQlZFOVNPaUJuWkMxcWNHVm5JSFl4
TGpBZ0tIVnphVzVuSUVsS1J5QktVRVZISUhZMg0KTWlrc0lIRjFZV3hwZEhr
Z1BTQTVNQW9BLzlzQVF3QUlCZ1lIQmdVSUJ3Y0hDUWtJQ2d3VURRd0xDd3da
RWhNUEZCMGFIeDRkR2h3Yw0KSUNRdUp5QWlMQ01jSENnM0tTd3dNVFEwTkI4
bk9UMDRNand1TXpReS85c0FRd0VKQ1FrTUN3d1lEUTBZTWlFY0lUSXlNakl5
TWpJeQ0KTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJ
eU1qSXlNakl5TWpJeU1qSXkvOEFBRVFnQXF3UElBd0VpQUFJUg0KQVFNUkFm
L0VBQjhBQUFFRkFRRUJBUUVCQUFBQUFBQUFBQUFCQWdNRUJRWUhDQWtLQy8v
RUFMVVFBQUlCQXdNQ0JBTUZCUVFFQUFBQg0KZlFFQ0F3QUVFUVVTSVRGQkJo
TlJZUWNpY1JReWdaR2hDQ05Dc2NFVlV0SHdKRE5pY29JSkNoWVhHQmthSlNZ
bktDa3FORFUyTnpnNQ0KT2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoy
aHBhbk4wZFhaM2VIbDZnNFNGaG9lSWlZcVNrNVNWbHBlWW1acWlvNlNscHFl
bw0KcWFxeXM3UzF0cmU0dWJyQ3c4VEZ4c2ZJeWNyUzA5VFYxdGZZMmRyaDR1
UGs1ZWJuNk9ucThmTHo5UFgyOS9qNSt2L0VBQjhCQUFNQg0KQVFFQkFRRUJB
UUVBQUFBQUFBQUJBZ01FQlFZSENBa0tDLy9FQUxVUkFBSUJBZ1FFQXdRSEJR
UUVBQUVDZHdBQkFnTVJCQVVoTVFZUw0KUVZFSFlYRVRJaktCQ0JSQ2thR3h3
UWtqTTFMd0ZXSnkwUW9XSkRUaEpmRVhHQmthSmljb0tTbzFOamM0T1RwRFJF
VkdSMGhKU2xOVQ0KVlZaWFdGbGFZMlJsWm1kb2FXcHpkSFYyZDNoNWVvS0Ro
SVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNQ0K
dXNMRHhNWEd4OGpKeXRMVDFOWFcxOWpaMnVMajVPWG01K2pwNnZMejlQWDI5
L2o1K3YvYUFBd0RBUUFDRVFNUkFEOEE5L29vb29BSw0KS0tLQUNpaWlnQnVh
TWlzUHhUckVtaDZITmZSUStZeWxWempJUUU0M0VlMWNuWmZFSDk1R1pwNDVr
Y2dCVVRCeWVtUFd1U3JpNmRLYQ0KaEsrdmtiVThQT3BGeWowUFNxS2pqYmNp
dGdqSXpnOXFrcnJNUW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdB
b29vb0FLSw0KS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FD
aWlpZ0Fvb29vQUtLS0tBQ2lpaWdCTVZEZFNHRzJlUmNFakhYcDFxZQ0KcXVv
ZjhlTW40ZnpGUlVkb05yc1ZCWGtreWovYXMvOEFkai9JL3dDTkg5cXovd0Iy
UDhqL0FJMVJvcnlmckZYdWVoN0dIWXZmMnJQLw0KQUhZL3lQOEFqUi9hcy84
QWRqL0kvd0NOVWFLUGIxTzRleWgyTnBibDJzNDVpRjNNY0gwNy93Q0ZNKzJT
ZWkweFArUVhEL3ZIK1pxSw0KdXgxSldXdlJIT29SdTlPcFkrMlNlaS9yUjlz
azlGL1dxOUZMMmsrNCtTUFlzZmJKUFJmMXExdlBsbzNHV0dUV2JXZ1A5VEgv
QUxvLw0KbFdsS2NuZTdNNmtVcldIZVlmUVVlWWZRVXlpdGJzaXlIK1lmUVVl
WWZRVXlpaTdDeUdYVnc4TWdWUXVDTTgxRDl1bC91cCtWRi84QQ0KNjlmOTMr
cHFyWE5VcVRVMmt6ZUVJdUt1aXo5dWwvdXArVkgyNlgrNm41VldvcVBhejds
ZXpoMkxrZDVJOGlLUXVDUU85VHlUTWpsUQ0KQmdWbncvNitQL2VIODZ1emY2
NXEycHprNDNiTXB4U2xvTyswUDZMUjlvZjBXb2FLZlBMdUxsUkw5b2YwRlBq
bVozQ2tEQnF2VWtQKw0KdVdxakozUW5GV0d2ZE9zaktGWEFKSFNtL2JKUFJm
MXFLWC9YUC92R21WZzZrNzdtaWhHMnhZKzJTZWkvclI5c2s5Ri9XcTlGTDJz
Kw0KNCtTUFl2Vzg3elNGV0F4alBGU2VZZlFWV3N2OWNmOEFkcWF1aW5KdU4y
WXlTVWgvbUgwRkhtSDBGTW9xN3NWa1A4dysxTDVoOHQyNA0KeW95S2pwVC9B
S21YL2RORjJLeUsvd0JzazlGL1dqN1pKNkwrdFY2SzVQYXo3blJ5UjdGajda
SjZMK3RIMnlUMFg5YXIwVWUxbjNEaw0KajJMWnVIRm84MkYzS2NEMDdmNDFW
L3RLYis2bjVIL0dwVy81Qmt2KzhQNWlzNmxWcXpWclBvT25UaTczUmMvdEti
KzdIK1IveG8vdA0KS2IrN0grUi94cW5SV1B0Nm5jMDlsRHNYUDdTbS91cCtS
L3hxN0ZNejJ5U2tEY3g1eDA3MWpWcTIvd0R5RDR2cWY1bXQ4UFVuS1R1Kw0K
aGxXcHhTVmtTK2Mzb0tQT2IwRlIwVjA4ek11VkVubk42Q2p6bTlCVWRGSE13
NVVQbm1hSlVLZ0hjT2MxRDlzazlGL1duWGYzSXZvZg0KNlZWck9wT1Nsb3k0
UmkxcWl4OXNrOUYvV2o3Wko2TCt0VjZLajJrKzVYSkhzV1B0a25vdjYxYmRp
cHdLekswcFB2RDZWclNrMm5jeQ0KcVJTYXNIbUgwRkhtSDBGTW9yUzdKc2gv
bUgyb0VoSkE0cGxLdjNoOWFFMkt5S3R4ZVNRWER4cUZJR09vOXFpL3RLYis3
SCtSL3dBYQ0KWmY4QS9IN0orSDhoVmF1Q3BXcUtiU1oxd3BRY1U3RnorMHB2
N3NmNUgvR2orMHB2N3NmNUgvR3FkRlI3ZXAzSzlsRHNhTnZlU1QzQw0KeHNF
QU9lZzlxbWE0ZFhaUUZ3RGlxTmgveCt4L2ovSTFZay8xci83eHJwcDFKT25k
dnFZemhGVHNrUy9hbjlGbysxUDZMVUZGVnp5Nw0KaTVJOWlmN1Uvb3RTUVRO
SzVWZ01ZenhWU3A3VC9Xbi9BSGFxRTVPUzFGS0tTRDdVL290SDJwL1JhZ29x
ZmFTN2o1VVQvYW45Rm8rMQ0KUDZMVUZGSHRKZHc1VVc0WjJrY3F3R01kcUtp
dHY5YWZwUlc5TnR4TVpwSmwyaWlpdFNBb29vb0FhVHhVTTExRGJybWFSVUI2
WlBXcQ0KdXQ2aXVrYUxkNmd5N2hCR1hDK3A3RDg4VjVyRlBkWHVMeThuYVdl
WDVqend1ZXdIWVY1MlB4OGNJbHBkczY4SmhIaUc5YkpIb2sydA0KV09Dak1w
QkdEdllBRVZrVzgvaGl5dWpjUVdtbVF6NXo1a2FxRy9BNHJsb2JLYlZiMkt4
dDVERVpXK2VVREpSY1pKK3RkZGJlQXZEOA0KQ0FTMnIzTDlUSlBLekUvaG5I
NlZ6WWJFNGpGcm5VVWt1NXZYcFVjTytSdHRtdmI2eFpYSEVjNkg2TUQvQUNO
YUN1SEdRUVI3VjUwbQ0KbCtGYjZlV0tLeHVMQjBiQ3l4M0RJeDl3TTQvT3RH
emgxclFKazhxNWsxZlRTUUdWZ0JjUkRzZU9ISHZ4WGJUeEVtN096OVA4amxu
Uw0KajB1dlU3Zk5GTlU1N1lwMWRwemhSUlJRQVVVVVVBRkZGRkFCUlJSUUFV
VVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVQ0KVUFGRkZGQUJS
UlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZWZFEvNDhaUHcvbUt0VkhORXM4
VFJzU0FmU29xSnlnMGlvTzBrMmM3Ug0KV3gvWlVIOStUOHgvaFIvWlVIOStU
OHgvaFhtL1ZLaDIvV0lHUFJXeC9aVUg5K1Q4eC9oUi9aVUg5K1Q4eC9oUjlV
cUI5WWdScC95Qw0KNGY4QWVQOEFNMUZWNW9FanRraUc0cXA0NTU3MUQ1TWZv
LzVqL0N1aVZONkx5UmlwclZsZWlySGt4K2ovQUpqL0FBbzhtUDBmOHgvaA0K
UzlteXVkRmV0QWY2bVA4QTNSL0txL2t4K2ovbVA4S3RxZ01hRG5BRmEwb05Y
TTZrazdFZEZTK1d2cWFQTFgxTmE4ck0rWkVWRlMrVw0KdnFhUExYMU5IS3c1
a1ViL0FQMTYvd0M3L1UxVnJWbXRrbWNNeFlFREhGUi9ZSXY3ei9tUDhLNTZs
R2NwTm8yaFZpb3BNenFLMGZzRQ0KWDk1L3pIK0ZIMkNMKzgvNWovQ28rcnpL
OXRFb3cvNitQL2VIODZ1emY2NXFjdGxHamhnejVCejFGU3RDcnNXSk9UVzBL
VWxHek01Vg0KSXQzS2xGV2ZzNmVyVWZaMDlXcCt6a0xuUldxU0gvWExVdjJk
UFZxY3NLb3dZRTVGTlUybUp6VmpQbC8xei83eHBsWDJ0STJZc1MyUw0KYzlh
VDdGSC9BSG4vQURGWXVoTnMwVldOaWpSVjc3RkgvZWY4eFI5aWovdlArWW85
aE1QYXhJckwvWEgvQUhhbXA4VnVrVEZsTEU0eA0KelR2TFgxTmJ3ZzFHek1w
U1RkeUtpcGZMWDFOSGxyNm1xNVdMbVJGU24vVXkvd0M2YWs4dGZVMGtpaEla
RHlSdE9hT1ZvTG1aUlNlYg0KSC96emYvdnNmNFVlYkgvenpmOEE3N0grRmNH
bmM2N1BzTFJTZWJIL0FNODMvd0MreC9oUjVzZi9BRHpmL3ZzZjRVYWR3cyt4
TzMvSQ0KTWwvM2gvTVZuVnFSN0piR1FiV0M3dVJ1NTdlMVYvczhQcEovMzBQ
OEtkV0RsWnJzS25KUnVuM0tkRlhQczhQcEovMzBQOEtQczhQcA0KSi8zMFA4
S3k5bEkwOW9pbldyYi9BUElQaStwL21hcmZaNGZTVC92b2Y0VllaMXQ3R1BD
a3J1d0FXNTcrMWJVWThqYmZZeXF5NWtraA0KMUZWdnR5Lzg4ai8zMy84QVdv
KzNML3p5UC9mZi93QmF0UGF3N2sremwyTE5GVnZ0eS84QVBJLzk5LzhBMXFU
N2N2OEF6eVAvQUgzLw0KQVBXbzl0RHVIczVkaXpkL2NpK2gvcFZXclU3SzBN
TE1wNVhJQVBUcDdWQm1QKzQvL2ZRL3dvcVdjdHdoOEl5aW41ai9BTGovQVBm
UQ0KL3dBS014LzNILzc2SCtGWjI4eTdqSzBwUHZENlZRekgvY2YvQUw2Lyt0
Vm01dUJGSUZLRThaNjRyYW0xRk50bVUwMjFZZlJWYjdZdg0KL1BNLzk5Zi9B
RnFQdGkvODh6LzMxLzhBV3ArMWgzRnlTN0ZtbFg3dyt0VmZ0aS84OHovMzEv
OEFXcDBkMkdrVmZMSXlRUHZmL1dwcQ0KcEMrNE9FdXhWdjhBL2o5ay9EK1Fx
dFdwY1cwVWs3TTIvSngwSTlQcFVYMk9IL3BwL3dCOUQvQ3VXcFJrNXRtOEtz
VkZJb1VWZit4dw0KL3dEVFQvdm9mNFVmWTRmK21uL2ZRL3dxZllUSzlyRWhz
UDhBajlqL0FCL2thc1NmNjEvOTQwKzN0b281MVpkK1JucVI2ZlNvSnJsRg0K
bWNHTmlReEgzLzhBNjFiUlhzNmRwZHpOdm5ucDJIVVZGOXFqL3dDZVRmOEFm
ZjhBOWFqN1ZIL3p5Yi92di82MVQ3U0hjZkxMc1MxUA0KYWY2MC93QzdWUDdW
SC96eWIvdnYvd0N0Vm15bVdTWWdJVitYT1MyZTQ5cTBwemk1S3pKbkY4cjBJ
NktpKzFSLzg4bS83Ny8rdFI5cQ0Kai81NU4vMzMvd0RXclBuaDNIeVM3RXRG
UmZhby93RG5rMy9mZi8xcVB0VWYvUEp2KysvL0FLMUhQRHVISkxzVzdYL1du
NlVWSGFUTA0KSk1WVkNwMjlTMmFLNmFVazQ2R0ZSTlMxTkdpaWl1Z3lDaWt6
Um1nREsxeUt5dWRHdWJmVUpCSGJUcDVUdVRqRzQ3UitPU0s4cGtYVQ0KZkM1
Rm5yRUR0YnI4c041R3BNY2k5am5zZlkxN0RlV1Z2cUZuTGEzTVlraGxVcTZI
dUs0MmFMeFA0Wnlsdkcyc2FhT25JODlGOUdIOA0KWDFITmViajhOR3V2Zldp
N2JvN01KWGxTZnV2N3lwNEoxU3l1OWFkSUoxa2N4NUFIb004MTZHNUFVa25q
cm12TzdmeDdvdGhNNE9taQ0KeHVHKytwdHhHLzQ5Q2FnMVh4L0JmV3J3dzNB
aWpjWVpod2NmbldGREVVc0xSNUZkMjhqU3JTcVlpcnoyUytaQkpQSGNPWll1
VUlHQw0KUFlBVnQ2RnEwa000Z2xjbGNnb1NlbVQwcmpyVFVmdFcyMzBxeW51
aVBsQWhqTEFmVTlCWFllR3ZDdC85dGoxSFdDSXpHZDBWcWpadw0KZXhZampJ
OUs4dkIwY1RQRWUwaXJKdlU5REZWYUVhUEkzZG5kcjBwMUlCajNvelgxcDgr
TFJTWm9CelFBdEZGRkFCUlJSUUFVVVVVQQ0KRkZGRkFCUlJSUUFVVVVVQUZG
RkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVV
QUZGRkZBQlJSUlFBVQ0KVVVVQUZGRkZBRVUvM0I5YWdxZWY3Zyt0UVZqUGMx
aHNGRkZGUVVGV2srNHYwcXJWcFB1TDlCV2xQY2lZNmlpaXRUTUtLS0tBQ2lt
Nw0KaDYwdTRldEFDMFVtUlFXQTcwQUxSVGQ2K3RMa1VBTFJUZHdQZW5ab0FL
S0FjMFVBRkZKbWx6aWdBb3B1OWZXbHpRQXRGSm5OTFFBVQ0KVVVVQUZSei9B
UEh2Si91SCtWU1ZIUDhBOGU4bis0ZjVVcGJNY2R6Rm9vb3J5RDBRb29vb0F2
VzMvSGhKL3Y4QStGTXA5dC94NFNmNw0KL3dEaFRLNnZzeDlEbjZzS0tLS1F3
cGJ2L2tIeC93Qy8valNVdDMveUQ0Lzkvd0R4b2Z3eTlCTDRrWjlGRkZjUjFC
UlJSUUJwVGY4QQ0KSHRiZjduOUJVRlR6ZjhlMXQvdWYwRlFWMnozT2FHd1VV
VVZCUVZOZi93Q3ZYL2QvcWFocWEvOEE5ZXYrNy9VMVgySDhoZmFSVm9vbw0K
ckkwQ253LzYrUDhBM2gvT21VK0gvWHgvN3cvblRqdWhQWXZ5L3dDc05NcDh2
K3NOTXJzZTV6TFlLS0tLUXg4WCtzRlpWeC94OHkvNw0KNS9uV3JGL3JCV1Zj
ZjhmTXYrK2Y1MWppUGdYcWEwZmlaSFJSUlhFZEFWZDB6L2o1Yi9jUDh4Vkty
dW1mOGZMZjdoL21LMm9meEVSVg0KK0JsS2lpaXNTd29vb29BdWFiL3g4bi9k
UDh4UlJwdi9BQjhuL2RQOHhSWG9ZYjREaXIvR2ExUlN6SkJFOHNycWthS1da
bU9BQU9wcQ0KV3ZQdmpMZnpXWHc3dTFnWXFibVZJSEk2N1Nja2Zqakg0MTJH
Qmx6L0FCUjFiWGRVbXNmQStnSFVraE9HdTUyMnhuM0hJd1BRay9oVw0KMzRh
MXp4eE5yaVdQaVB3N2IydHMwYk1McTNrM0FFZEFjTTNXdEh3QnBOcnBIZ2ZT
WUxWVnhKYnBQSXdIMzNjQmlUK2Y1QVYwNXdCeg0KMG9BTThVblh2WG0rc2VH
dFN1dFJ1WjlWK0lOeHB3ZVZtdGJlM2tFS3hwazdjOGdzY2RlbFEvRGp4SnEx
M2M2L29HcDZrdW95Nlljdw0KWHFrRXlJY2pranIwQjllZXRBSHBNMXZEY0p0
bmhqbFgwZFF3L1d1YTFIVmZEMmtlSmRMMFNUVEl6ZmFoa3hHTzJUYW9HY2tu
dDByeg0KSHdKYitMZmlEcFRyZCtKNyt5MCswa0srYkM1ODJhUTg0TFpCd0Jq
MnBmRjNoblZGK0tQaDZ5LzRTTzZNMTFHUEl1aVBudDlxNE8zNQ0KdWNrRTl1
dFR5eEhjOTJWVlFCVkFDZ2NBQ25kUDhLNXZRdEIxYlJ0QnZMT2JYNTlTdlpX
ZG9McTZVNWlKVUJSako0QkdmeHJoTlc4Tw0KNmhaMnMxeEw4VDV4ck1hRnhF
OTBzY1pZYzdkbTdnWjQvcFZXRWVtNjVyRnRvR2kzZXEzZTR3VzBaZGd2VStn
SHVUZ0N2TnJEeGQ4Uw0KL0Vsb05VMFhRZE1qMDl5VENzNy9BRFNBY2RTd3o5
Y0N0UHcvY1hIeE4rRXR4YmFoS3FYa3dhM2ttQzhGMUlaV0lIL0FjZ2U5Y3Rv
dg0Kakh4SDhNWVlORDhWYVBMTHBjVGJJYnlIbkM1enczUnUvQndhQVBRTlR1
ZkdsejRLdExqVExPM3Q5ZmRsTTl1NUJSRjV5QnVPUFN1cA0Kc2Z0QnNMZjdY
ajdWNVMrZHQ2YjhEZGo4YzE1NzhTUEV6UDhBREpOYjhQNmpMR3MwMGZsendP
VU8wNXlQVWRPUlhlNlE3eTZOWXlTTQ0KWGQ3ZU5tWW5KSktqSm9BdjBVVVVB
RkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVV
VVVBRkZGRkFCUg0KUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJS
UlFBVVVVVUFOWkE0d2MwM3lGOVRVbEZKeFRIZG9qOGhmVTBlUXZxYWtvcA0K
Y3FEbVpINUMrcHA0R0FCNlV0Rk5KTFlHMndvb29waUNrUFNsb29BNWZWTGJV
TFdPVzQrM3VVQnlGSEdBVDBwZE50ZFF1VWh1UHQ3aA0KQ1FTcDV5TTlLMGZF
UC9JSm0vRCtZcDJnL3dESUtoLzNmNjE1ZnNJL1crUzd0eTMzZTkvVTd2YXkr
cjgybDcyMlhZbzZuZHp4YXhaeA0KSkt5b3hHNVFlRHpWaS9zcjJlUVN3M2pS
SnR4dEE3K3RVZFkvNUQxbDlWLzlDcm9tL3dCUldsS0h0WjFZemJ0ZGRYMklu
TDJjWVNqMg0KL1U1WFQwMUMvYVFMZlNKc09PZWMxY3Y3eTZzNGJleWpsOHk1
azRNaEh2UjRhLzFsMy92L0FPTk0xVStUNGh0SlhIeVlBeWVuVS80aQ0KdVND
Y01LcWlidkoyYnU5cm5SSjgxZHdhVmxyYTNrUnoyK3FhZkNMb1hqeWJlV1U1
SS9XdFg3ZWJuUTN1VXlyR0pqeDJJQi9yVHRXbg0KalRTNWlUMVFxUHFlS3py
RlN2aG1USTZ4eUgrZGRITDdHcTZjRzdPTGU5OVRHL3RLYW5KYTNzYVdoelNU
NlpFOHJsM09jc1R5ZVRXaw0KeHdwTlpIaDUxR2xRZ24xLzlDTldOV3ZCYTJF
a2dQell3djFQU3VxalVVY05HY245bFA4QUF3cVF2V2NZOS8xTWxOWWR2RUJq
M255RA0KKzZBN1o5Zno0cmExQ1JrMDZaMEpEQ05pQ094eFhFbVNKYk9QYVdG
d3I3ODQvcitBcnFwTGtYV2d5U2orS0ZpY2Rqam11SEI0bDFJMQ0KSXlkM3Y5
L1Q1SFhpYUNoS0RTMDIrNy9NdzR4cUpzUmVwZXlIQUxGU3g3R3VnMHU5ZTcw
MVpaUHY4ZysrSzVZdzNLYVpITjVybTNZNA0KWkFjWTVycXJBUURUSS9zLyty
MjVGTEwzTDJsdFY3cXVtNzNiNm9NWWx5ZEhxOWx0NU1xK0hMcWE0Z2xNMGpP
UStBV1B0VzdYT2VGdg0KOVJOLzEwL29LNk91M0FOeXc4R3pteFNTclNTQ2lp
aXVzNXdwSFVPaktlaEdLV2lnQ3AvWjBQOEFlZjhBTWY0VWYyZEQvZWY4eC9o
Vg0KdWlzdlkwK3hmdEo5eXAvWjBQOEFlZjhBTWY0VWYyZEQvZWY4eC9oVnVp
ajJOUHNIdEo5eUZMWkk0VEdDMjBuUE5KOWtqOVcvT3A2Sw0KcmtqMkZ6TWcr
eVIrcmZuUjlrajlXL09wNktQWng3Qnp5N2tIMlNQMWI4NkpMVkpZVmlZdHRC
engxL3p6VTlGSHM0N1dEbmwzS1g5bQ0KUS8zcFB6SCtGSDltUS8zcFB6SCtG
WGFLbjJGUHNWN1dmY3BmMlpEL0FIcFB6SCtGSDltUS93QjZUOHgvaFYyaWoy
RlBzSHRaOXlqZA0KN0lVaFFxekFBZ2M0Nlk5cXErYkgvd0E4My83N0grRldk
Uy81WmZqL0FFcWhYSldrMU5wSFJTaW5GTmszbXgvODgzLzc3SCtGSG14Lw0K
ODgzL0FPK3gvaFVORlpjOGpUbFJONXNmL1BOLysreC9oVnk3VkdsQllObmIy
T1A2Vm0xcFhmOEFyUi91MXRUazNGMzhqS2F0SldLLw0KbHhmM1gvNzZIK0ZI
bHhmM1gvNzZIK0ZMUlJvRjJKNWNYOTEvKytoL2hUNGtqRXFFQjg3aC9FUDhL
YlRvL3dEV3AvdkNtclhFM29YbQ0KaVZtSkpOSjVDK3BxU2l1M2xSemN6SS9J
WDFOSGtMNm1wS0tYS2c1bU1XSlZiSUpyT2xnaU16a2g4bGpuREQvQ3RTczZU
L1d2L3ZHcw0KYTBWWkd0SnU1RjluaDlKUCsraC9oUjluaDlKUCsraC9oVDZL
NStXUFkyNW4zR2ZaNGZTVC92b2Y0VllzNG8wbUpRTm5iM09mNlZGVQ0KOXAv
clQvdTFkT0s1bG9UTnZsWlQ4cUgrN0ovMzBQOEFDanlvZjdzbi9mWS93cGFL
eXN1eHBkaWVWRC9kay83N0grRkhsUS8zWlA4QQ0KdnNmNFV0RkZsMkM3SnJS
STFtSlFNRGp1MmU0OXFLZFovd0N1UDBvcnFvcGNwelZYN3hmcm5QRzNoMWZG
WGhXOTBuY3F5eXFHaFp1aQ0KeUE1WFB0eFhSMGhHZTlkQmtlT2VDZmlQRjRa
c2s4TWVNWTU5UHU3SDkxSE5JaEtzZzZBNHowNkFqSUl4WFlINGhhTHFwdWRQ
MEhVQg0KZWFwOWxtbGhXT050dTVVSkhKQUhYSEhOZEpxT2k2WnJFZmw2bFlX
MTJvNkNhSU5qNlpxdnBmaGpROUVrTW1tYVZaMmprWUx4UWdOag0KNjlhQVBG
dkFjZmdYVWRLdk5VOFpYc054ckptZHBoZnpNQ0Y3RlZ6ODNmcG10SDRWUzJN
M2pYeGJKcGx1WUxCNE4xdkdRUmlQY2Rwdw0KZlVjMTZmZGVDUERON2Y4QTI2
NDBPeGx1UzI0dVloeWZVam9UOWEwb2RLMCsydkpydUd6dDQ1NWxDeXlMR0F6
Z0RBQlBjQUNnRHovNA0KRS84QUlnU24vcCtrL3dEUVVxbDhSYnlMUi9pajRS
MWE5L2QyTVlaSGxJT0FjblA1YmdhOVAwL1RMTFM3YzI5aGFRMjBKWXNVaVFL
TQ0KbnZ4MzRGSnFXazJHc1dwdHRSczRicUFuUGx6SUdHYUFPSCtJWGlScno0
YmFqZjhBaHErV2NKSXNNczlxMjdZcEkzWUk5aU0vV3VRcw0KSWZoZFkrQ1ly
eHhiNmhxVDIrVEhKSXp6dk9SeXV3SGo1dlFZK3RleVdPaTZicGRnYkd3c29M
ZTBPU1lVUUJUa1lPUjlLbzJYZ3p3Mw0KcDEvOXV0TkZzb2JuT1JJc1F5UHA2
ZmhRQndud2wxVzEwVDRVWGVwM3JNdHRiWFVyeUZSa2dZVWRPOVdQRnZ4TjhH
WG5oSyt0NDd3WA0KMHR4QTBjZHNJbUJERWNFNUFBd2NIUFgwcjBLMjBmVGJL
emtzN2F4dDRyV1FsbmhXTUJHSjZranYwcWpiZURmRGRuZEM2dHREc0k1dw0K
ZHdkWUZ5RDdlbjRVQWVMMyttWHVsL3M5UkpmUlBFODErc3lSc01GVVluSEhi
T00valh1K2lmOEFJQjA3L3Iyai93RFFSUzZqcFZqcQ0KOW9iVFViV0c2dHl3
WXh6SUdYSTZIRldZb2toaldPTlFxSUFxcUJnQURvS0FKYUtLS0FDaWlpZ0Fv
b29vQUtLS0tBQ2lpaWdBb29vbw0KQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNp
aWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tL
QUNpaWlnQQ0Kb29vb0FLS0tLQUNpaWlnQW9vb29BcWFqWi9ick40Tit6ZGo1
c1p4em1sc0xUN0ZhSkJ1M2JSak9NWnF6UlVlemp6KzB0cmEzeUs1NQ0KY3ZK
MDNNeTgwbjdWcUVGMTV1M3lpRHQyNXp6bXRFcmxOdE96Um1sR25HRGNrdFh1
RXB5a2tuME03VE5ML3M5cFQ1bS96R3o5M0dLZg0KcVdtUmFqRHNmSVljcXc2
ZzFmcEtTb1UxVDlsYjNTblZtNTg5OVRuVjhPU095QzR2SkpJMTZMakg5VFd4
TFpxMWkxc255S1VLREE2Yw0KWXExbWpOUlR3MUttbW9yY2M2MVNkdVo3SE5y
NGNuUUJVdjVGQTdBRWYxcXpOb2NseFp3VzczVEVSa2xtSzVMZnJXM1Jtb1dC
b1JUaQ0KbG85TjMvbVc4VlZiVGIvQkZXU3hpa3RXaHhoU3UzanNNVlV0ZElh
MzA2VzBNeGNPR0FiYmpia2ZXdFF0Z21qUDVWdktqQ1V1WnJXMQ0KdmtaS3BK
TGxUOHloYmFXa09uQ3prUG1MZ2drakdjblA5YVpwdW1QWVJQRVp6SWpIS2dy
amJXbm1qTlNxTk9MaTB2aFZsNkRkV2JUVA0KZStwbmFWcG45bXh1bm0rWnVi
ZG5iaXRLaWt6VjA0UnB4VVk2SkV6bTV5NXBic1dpaWlySkNpaWlnQW9vb29B
S0tLS0FDaWlpZ0Fvbw0Kb29BS0tLS0FDaWlpZ0Fvb29vQW9hbC95eS9IK2xV
SzIyUlgrK2l0anBrWnB2a3hmODhvLysrUlhMVXc3bkp5dWJ3cktNYkdOUld6
NQ0KTWY4QXp5ai9BTytSUjVNZi9QS1AvdmtWSDFWOXkvYnJzWTFhVjMvclIv
dTFQNU1YL1BLUC92bW5GVlk4cUNmY1ZjS0RpbXJrVHFwdA0KTXo2SzBOaWYz
Ri83NW8ySi9jWC9BTDVwK3hZdmFJejZkSC9yVS8zaFY3eTAvdUwvQU44MGJF
QnlFWFAwcHFpN2c2aUgwVVVWMEdJVQ0KVVVVQUZaMG4rdGYvQUhqV2pUQ2lI
a291ZnBXZFNITWlveTVUUG9yUTJKL2NYL3ZtalluOXhmOEF2bXN2WXMwOXFq
UHFlMC8xcC8zYQ0KcytXbjl4ZnlwUXFyeUZBUHNLcU5KcDNGS29tckdWUldu
NWNmL1BOUCsrYVBMai81NXAvM3pVZlYyVjdaR1pSV241Y2YvUE5QKythUA0K
TGovNTVwLzN6UjlYZmNQYklxV24rdVAwb3E0RVFIS29vUHNNVVZ0VGc0cXhu
S1NrN2o2S0tLMElDaWlpZ0Fvb29vQUtLS0tBQ2lpaQ0KZ0Fvb29vQUtLS0tB
R2toVkpQUWNtblUxL3VIamR4MDlhZFFBVVVVVUFGRkZGQUJSUlJRQVVVVVVB
RkZGRkFCUlJSUUFVVVVVQUZGRg0KRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFB
VVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJS
UlFBVVVVVQ0KQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZG
RkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQQ0KVVVV
VUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFB
VVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUg0KUlJRQVVVVVVBRkZGRkFC
UlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQTFzbFR0T0Rq
aW5VeDhHTnR4d01ITlBvQQ0KS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdB
b29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lp
aWdBbw0Kb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tL
S0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaQ0KaWdBb29v
b0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdB
b29vb0FLS0tLQUNpaWlnQW9vb29BS0tLSw0KQUNpaWlnQW9vb29BS0tLS0FD
aWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tL
S0FDcVA5cVEvWWpkNw0KSlBMRGJjWUdjNXg2MWVyQU9sei9BTmtOSHNmei9N
enM4M2pHNzB6anBSMUExSkwxVXVEQWtja3NvWGN5cGo1Ujdra0NvWmRXdDRy
Ug0KYmdpUW9YMkVBZk1yZWhCcEJETmJhaE5jSkUwc2N5aklVZ0ZTUHFSeFZT
VFRiaHJRWmpCa2t1aE02QmhoUjZaNzBBYUIxR0g3YkZhag0KY3p5THVCR01B
WXp6UmFYNHZGRHgyOG9qSkkzbmJnWS9IUDZWUmkwcDdXL3RwSXlaRVV2dmNr
REF4aFJUOUt0WmJXSkVtdDUxY01UdQ0KRW8yRDhOMzlLQU5paWlpZ0Fvb29v
QWEvM0R4dTQ2ZXRPcHJaS25hY0hIRk9vQUtLS0tBQ2lpaWdBb29vb0FLS0tL
QUNpaWlnQW9vbw0Kb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29v
QUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZw0K
QW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNp
aWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQw0KaWlpZ0Fvb29vQUtL
S0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29v
QUtLS0tBQ2lpaWdBb29vb0FLSw0KS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWln
QW9wS0tBRm9wS0tBRm9wS0tBRm9wS0tBRm9wS0tBRm9wS0tBRm9wS0tBR3Zn
eHR1T0JnNQ0KcDlNYy9JM0c3anA2MCtnQW9vb29BS0tLS0FDaWlpZ0Fvb29v
QUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaQ0KaWln
QW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNp
aWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLSw0KS0FDaWlpZ0Fvb29vQUtL
S0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29v
QUtLS0tBQ2lpaWdBb29vbw0KQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWln
QW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUc1
b3pVVw0KNmszZlQvUCtmeG9BbXpSbW90LytjMGJxQUpjMFpxSGQ5UDhBUCtm
eHBkLytjMEFTNW96VVc2azNmVC9QK2Z4b0FtelJtb3QvK2MwYg0KcUFKYzBa
cUhkOVA4L3dDZnhwZC8rYzBBUzVvelVXNmszZlQvQUQvbjhhQUpXeVZPMGpP
T0tkbW9HWUZXQjZZT2FselFBN05HYVpuLw0KQUQvbi9KcGMwQU96Um1tNW96
L25OQURzMFpwdWFUUCtmOC81TkFEODBacHVhTTBBT3pSbW01L3ptak5BRHMw
WnBtZjgvd0NmOG1seg0KUUE3TkdhYm1qUDhBbk5BRHMwWnB1YVRQK2Y4QVAr
VFFBL05HYWJtak5BRHMwWnB1Zjg1b3pRQTdOR2Fabi9QK2Y4bWx6UUE3Tkdh
Yg0KbWpQK2MwQU96Um1tNXBNLzUvei9BSk5BRDgwWnB1YU0wQU96Um1tNS93
QTVvelFBN05HYVpuL1ArZjhBSnBjMEFPelJtbTVvei9uTg0KQURzMFpwdWFU
UDhBbi9QK1RRQS9OR2FibWpOQURzMFpwdWY4NW96UUE3TkdhWm4vQUQvbi9K
cGMwQU96Um1tNW96L25OQURzMFpwdQ0KYVRQK2Y4LzVOQUQ4MFpwdWFNMEFP
elJtbTUvem1qTkFEczBacG1mOC93Q2Y4bWx6UUE3TkdhYm1qUDhBbk5BRHMw
WnB1YVRQK2Y4QQ0KUCtUUUEvTkdhYm1qTkFEczBacHVmODVvelFBN05HYVpu
L1ArZjhtbHpRQTdOR2FibWpQK2MwQU96Um1tNXBNLzUvei9BSk5BRDgwWg0K
cHVhTTBBT3pSbW01L3dBNW96UUE3TkdhWm4vUCtmOEFKcGMwQU96Um1tNW96
L25OQURzMFpwdWFUUDhBbi9QK1RRQS9OR2FibWpOQQ0KRHMwWnB1Zjg1b3pR
QTdOR2Fabi9BRC9uL0pwYzBBT3pSbW01b3ovbk5BRHMwWnB1YVRQK2Y4LzVO
QUQ4MFpwdWFNMEFPelJtbTUveg0KbWpOQURzMFpwbWY4L3dDZjhtbHpRQTdO
R2FibWpQOEFuTkFEczBacHVhVFArZjhBUCtUUUEvTkdhYm1qTkFEczBacHVm
ODVvelFBNw0KTkdhWm4vUCtmOG1selFBN05HYWJtalArYzBBT29wb1BORkFG
WGQvbi9QOEFrMHU2czM3UkwvZS9RVWZhSmY3MzZDZ0RTM1VtNy9QKw0KZjht
czc3UkwvZS9RVWZhSmY3MzZDZ0RTM1VtNy9QOEFuOUt6dnRFdjk3OUJSOW9s
L3Zmb0tBTkxkOVA4L3dDZnhvM2ZXczM3UkwvZQ0KL1FVZmFKZjczNkNnRFIz
ZjUveitsTHU3Zmgvbi9QTlp2MmlYKzkrZ28rMFMvd0I3OUJRQm83dS8rZjhB
UCtSUzdxemZ0RXY5NzlCUg0KOW9sL3Zmb0tBTkxkU2J1LytmOEFQK1JXZDlv
bC92Zm9LUHRFdjk3OUJRQm9sdUQzcC9tMW1DZVFrRGQzOUJTZmFKZjczNkNn
RFY4Mg0Kazgyc3Y3UkwvZS9RVWZhSmY3MzZDZ0RVODJsODMzTlpYMmlYKzkr
Z28rMFMvd0I3OUJRQnFlYlMrYldWOW9sL3Zmb0tQdEV2OTc5Qg0KUUJxZWJS
NXRaZjJpWCs5K2dvKzBTLzN2MEZBR3I1dnVhVHpheS90RXY5NzlCUjlvbC92
Zm9LQU5YemFUemF5L3RFdjk3OUJSOW9sLw0KdmZvS0FOVHphWHpmYzFsZmFK
ZjczNkNqN1JML0FIdjBGQUdwNXRMNXRaWDJpWCs5K2dvKzBTLzN2MEZBR3A1
dEhtMWwvYUpmNzM2Qw0KajdSTC9lL1FVQWF2bSs1cFBOckwrMFMvM3YwRkgy
aVgrOStnb0ExZk5wUE5yTCswUy8zdjBGSDJpWCs5K2dvQTFQTnBmTjl6V1Y5
bw0KbC92Zm9LUHRFdjhBZS9RVUFhbm0wdm0xbGZhSmY3MzZDajdSTC9lL1FV
QWFubTBlYldYOW9sL3Zmb0tQdEV2OTc5QlFCcStiN21rOA0KMnN2N1JML2Uv
UVVmYUpmNzM2Q2dEVjgyazgyc3Y3UkwvZS9RVWZhSmY3MzZDZ0RVODJsODMz
TlpYMmlYKzkrZ28rMFMvd0I3OUJRQg0KcWViUytiV1Y5b2wvdmZvS1B0RXY5
NzlCUUJxZWJSNXRaZjJpWCs5K2dvKzBTLzN2MEZBR3I1dnVhVHpheS90RXY5
NzlCUjlvbC92Zg0Kb0tBTlh6YVR6YXkvdEV2OTc5QlI5b2wvdmZvS0FOVHph
WHpmYzFsZmFKZjczNkNqN1JML0FIdjBGQUdwNXRMNXRaWDJpWCs5K2dvKw0K
MFMvM3YwRkFHcDV0SG0xbC9hSmY3MzZDajdSTC9lL1FVQWF2bSs1cFBOckwr
MFMvM3YwRkgyaVgrOStnb0ExZk5wUE5yTCswUy8zdg0KMEZIMmlYKzkrZ29B
MVBOcGZOOXpXVjlvbC92Zm9LUHRFdjhBZS9RVUFhbm0wdm0xbGZhSmY3MzZD
ajdSTC9lL1FVQWFubTBlYldYOQ0Kb2wvdmZvS1B0RXY5NzlCUUJxK2I3bWs4
MnN2N1JML2UvUVVmYUpmNzM2Q2dEVjgyazgyc3Y3UkwvZS9RVWZhSmY3MzZD
Z0RVODJsOA0KMzNOWlgyaVgrOStnbyswUy93Qjc5QlFCcWViUytiV1Y5b2wv
dmZvS1B0RXY5NzlCUUJxZWJSNXRaZjJpWCs5K2dvKzBTLzN2MEZBRw0KcjV2
dWFUemF5L3RFdjk3OUJSOW9sL3Zmb0tBTlh6YVR6YXkvdEV2OTc5QlI5b2wv
dmZvS0FOVHphWHpmYzFsZmFKZjczNkNqN1JMLw0KQUh2MEZBR3A1dEw1dFpY
MmlYKzkrZ28rMFMvM3YwRkFHcDV0SG0xbC9hSmY3MzZDajdSTC9lL1FVQWF2
bSs1cFBOckwrMFMvM3YwRg0KSDJpWCs5K2dvQTFmTnBQTnJMKzBTLzN2MEZI
MmlYKzkrZ29BMVBOcGZOOXpXVjlvbC92Zm9LUHRFdjhBZS9RVUFhbm0wdm0x
bGZhSg0KZjczNkNqN1JML2UvUVVBYW5tMGViV1g5b2wvdmZvS1B0RXY5NzlC
UUJxK2I3bWs4MnN2N1JML2UvUVVmYUpmNzM2Q2dEVjgyazgycw0KdjdSTC9l
L1FVZmFKZjczNkNnRFU4Mmw4MzNOWlgyaVgrOStnbyswUy93Qjc5QlFCcWVi
UytiV1Y5b2wvdmZvS1B0RXY5NzlCUUJxZQ0KYlI1dFpmMmlYKzkrZ28rMFMv
M3YwRkFHcjV2dWFUemF5L3RFdjk3OUJSOW9sL3Zmb0tBTlh6YVR6YXkvdEV2
OTc5QlI5b2wvdmZvSw0KQU5UemFYemZjMWxmYUpmNzM2Q2o3UkwvQUh2MEZB
R3NzbVdBOTZLem9aWE02QXR4dkg4NktBUC8yUT09DQoNCi0tLS0tLT1fTmV4
dFBhcnRfMDAwXzAwMDBfMDFDQzIxOEUuM0JGMjc1QzANCkNvbnRlbnQtVHlw
ZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQpDb250ZW50LVRyYW5zZmVy
LUVuY29kaW5nOiBiYXNlNjQNCkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly9z
dGF0c2Uud2VidHJlbmRzbGl2ZS5jb20vZGNzZzlmMDlwMTAwMDBnNGVlNXI1
OGR6OF81YjhmL25qcy5naWY/ZGNzdXJpPS9ub2phdmFzY3JpcHQmV1QuanM9
Tm8mV1QudHY9MS4xLjENCg0KUjBsR09EbGhBUUFCQUpIL0FQLy8vd0FBQVAv
Ly93QUFBQ0gvQzBGRVQwSkZPa2xTTVM0d0F0N3RBQ0g1QkFFQUFBSUFMQUFB
QUFBQg0KQUFFQUFBSUNWQUVBT3c9PQ0KDQotLS0tLS09X05leHRQYXJ0XzAw
MF8wMDAwXzAxQ0MyMThFLjNCRjI3NUMwDQpDb250ZW50LVR5cGU6IGltYWdl
L2dpZg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0DQpDb250
ZW50LUxvY2F0aW9uOiBodHRwOi8vYW1vdWdlMjAxMS5jb20vYS9ndHdwYWdl
cy9jb250LmdpZg0KDQpSMGxHT0RsaE1nQVFBUGNBQVArakd2L3cyLy9EYXYv
NjgvK3JMR21leEtpam5QKzZVLyswUXYvYnBQK3RNYXJJM3YvTmd2L0xmUC9o
DQpzLytoRlArOVd0R3prdXl4Y3BLSWZQK3lQZi9BWXYvUmpCc1pHWXkwMGdC
YW5NUFk2UC8rL2RQajdpaDBxM2RIRC8vbXdSWnBwUCtkDQpDdi8yNnRKMkdG
R091LyttSWYrMlNQL1Zsdi9xeWYvMTV2L2ZyZi91MVhWeGJrMUxTZi90MHYr
ZURmLzkrZithQS8vSmRvcE9DdXJ5DQo5OGErcy8vb3hmL2x2di9kcWM3SXdk
R1JUUC9abi8vWG12L3o0UC9HY2YvanVmLzQ3dDNZMFBiWXQvK2JCZk9HR1Ar
b0ovUDQrdXFTDQpON2hvRks5d0xQL1NqK2pDbXN1bWZPSHM4OCtJUFAvcnp1
YUFHR2M1QXZIczV1N0luL1hIbHUvMStmKzRUZW5WdS9ITnBmK2NCK2FiDQpT
L3p0Mmp5QnM0MW1OL2Y2L1BQaHkvcjgvWjk0UzhHWGFQTHAzdnZqeXUvUnNK
OWJFUE9wV3ZIeDhmalRxdkhuMnVMZzNXSmZYQXBnDQpuK1dvWnU2OWlJdFlI
dkh3N3ZUaXovL3MwUC9QaVArZkVQL1RrZi9rdS8rdk9QLzA0L2Jldy9qUG90
N0FudmZwMS8rWkFQLy8vd0FBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUN3QUFBQUFNZ0FRQUFBSWNnRC9DQVJBDQpzS0RCZ3dnVEtsUW9zT0hDaHhB
akduUW9zYUxGZzM4dWF0eTRzQ0ZGaGh3cmVoeklNR1BJaUNRblpqVHBrZUJB
bGlrM2pvVHBzQ1dBDQpsaTlOeWh6cGNpWE1nakZ2QnJVNE5HZFBvRHFOY3B4
NWxDVEZsRXAzMmxUNk5Lbk5rMWlKWnQwcVZDZFhxVU8vb2hRWUVBQTcNCg0K
LS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDMjE4RS4zQkYyNzVDMA0K
Q29udGVudC1UeXBlOiB0ZXh0L2NzczsNCgljaGFyc2V0PSJpc28tODg1OS0x
Ig0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJs
ZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0cDovL2Ftb3VnZTIwMTEuY29tL2Ev
Y3NzL3ByaXZhdGkuY3NzDQoNCiogew0KCVBBRERJTkctQk9UVE9NOiAwcHg7
IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdI
VDogPQ0KMHB4OyBGT05ULUZBTUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZlcmRh
bmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tHUk9V
TkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsgUEFE
RElORy1UT1A6IDBweA0KfQ0KSFRNTCB7DQoJUEFERElORy1CT1RUT006IDBw
eDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJ
R0hUOiA9DQowcHg7IEZPTlQtRkFNSUxZOiAiTVMgVHJlYnVjaGV0IiwgVmVy
ZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgPQ0KQkFDS0dS
T1VORDogbm9uZSB0cmFuc3BhcmVudCBzY3JvbGwgcmVwZWF0IDAlIDAlOyBQ
QURESU5HLVRPUDogMHB4DQp9DQpCT0RZIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkct
UklHSFQ6ID0NCjBweDsgRk9OVC1GQU1JTFk6ICJNUyBUcmVidWNoZXQiLCBW
ZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyA9DQpCQUNL
R1JPVU5EOiBub25lIHRyYW5zcGFyZW50IHNjcm9sbCByZXBlYXQgMCUgMCU7
IFBBRERJTkctVE9QOiAwcHgNCn0NClREIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkct
UklHSFQ6ID0NCjBweDsgRk9OVC1GQU1JTFk6ICJNUyBUcmVidWNoZXQiLCBW
ZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyA9DQpCQUNL
R1JPVU5EOiBub25lIHRyYW5zcGFyZW50IHNjcm9sbCByZXBlYXQgMCUgMCU7
IFBBRERJTkctVE9QOiAwcHgNCn0NClRIIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkct
UklHSFQ6ID0NCjBweDsgRk9OVC1GQU1JTFk6ICJNUyBUcmVidWNoZXQiLCBW
ZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyA9DQpCQUNL
R1JPVU5EOiBub25lIHRyYW5zcGFyZW50IHNjcm9sbCByZXBlYXQgMCUgMCU7
IFBBRERJTkctVE9QOiAwcHgNCn0NClAgew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1S
SUdIVDogPQ0KMHB4OyBGT05ULUZBTUlMWTogIk1TIFRyZWJ1Y2hldCIsIFZl
cmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tH
Uk9VTkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVhdCAwJSAwJTsg
UEFERElORy1UT1A6IDBweA0KfQ0KQSB7DQoJUEFERElORy1CT1RUT006IDBw
eDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJ
R0hUOiA9DQowcHg7IEZPTlQtRkFNSUxZOiAiTVMgVHJlYnVjaGV0IiwgVmVy
ZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgPQ0KQkFDS0dS
T1VORDogbm9uZSB0cmFuc3BhcmVudCBzY3JvbGwgcmVwZWF0IDAlIDAlOyBQ
QURESU5HLVRPUDogMHB4DQp9DQpVTCB7DQoJUEFERElORy1CT1RUT006IDBw
eDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJ
R0hUOiA9DQowcHg7IEZPTlQtRkFNSUxZOiAiTVMgVHJlYnVjaGV0IiwgVmVy
ZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgPQ0KQkFDS0dS
T1VORDogbm9uZSB0cmFuc3BhcmVudCBzY3JvbGwgcmVwZWF0IDAlIDAlOyBQ
QURESU5HLVRPUDogMHB4DQp9DQpMSSB7DQoJUEFERElORy1CT1RUT006IDBw
eDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJ
R0hUOiA9DQowcHg7IEZPTlQtRkFNSUxZOiAiTVMgVHJlYnVjaGV0IiwgVmVy
ZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgPQ0KQkFDS0dS
T1VORDogbm9uZSB0cmFuc3BhcmVudCBzY3JvbGwgcmVwZWF0IDAlIDAlOyBQ
QURESU5HLVRPUDogMHB4DQp9DQpCT0RZIHsNCglQQURESU5HLUJPVFRPTTog
MHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkct
UklHSFQ6ID0NCjBweDsgQkFDS0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9JbW1hZ2luaS9tYWluQkcuanBnKSAjZTZlNmU2ID0NCnJlcGVh
dC15IGNlbnRlciB0b3A7IFBBRERJTkctVE9QOiAwcHgNCn0NCkgxIHsNCglN
QVJHSU46IDEycHggMTJweCAxMnB4IDBweDsgQ09MT1I6ICNmOWE3M2I7IEZP
TlQtU0laRTogMTZweA0KfQ0KSDEudGl0b2xvIHsNCglNQVJHSU46IDEycHgg
MTJweCAxMnB4IDBweDsgQ09MT1I6ICNmOWE3M2I7IEZPTlQtU0laRTogMTZw
eA0KfQ0KSDIgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMTJw
eCAwcHggNnB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElORy1SSUdI
VDogMHB4OyBDT0xPUjogIzY2NjsgRk9OVC1TSVpFOiAxNHB4OyBQQURESU5H
LVRPUDogMHB4DQp9DQpIMi50aXRvbG8gew0KCVBBRERJTkctQk9UVE9NOiAw
cHg7IE1BUkdJTjogMTJweCAwcHggNnB4OyBQQURESU5HLUxFRlQ6IDBweDsg
PQ0KUEFERElORy1SSUdIVDogMHB4OyBDT0xPUjogIzY2NjsgRk9OVC1TSVpF
OiAxNHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpIMyB7DQoJUEFERElORy1C
T1RUT006IDBweDsgTUFSR0lOOiAxMnB4IDBweCA2cHg7IFBBRERJTkctTEVG
VDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IENPTE9SOiAjOTk5OyBG
T05ULVNJWkU6IDEycHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkgzLnRpdG9s
byB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAxMnB4IDBweCA2
cHg7IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7
IENPTE9SOiAjOTk5OyBGT05ULVNJWkU6IDEycHg7IFBBRERJTkctVE9QOiAw
cHgNCn0NCkg0IHsNCglNQVJHSU46IDBweDsgQ09MT1I6ICM5OTk7IEZPTlQt
U0laRTogMTFweA0KfQ0KSDQudGl0b2xvIHsNCglNQVJHSU46IDBweDsgQ09M
T1I6ICM5OTk7IEZPTlQtU0laRTogMTFweA0KfQ0KSDUgew0KCVBBRERJTkct
Qk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsg
UEFERElORy1SSUdIVDogPQ0KMHB4OyBDT0xPUjogIzY2NjsgRk9OVC1TSVpF
OiAxMXB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpINS50aXRvbG8gew0KCVBB
RERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6
IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBDT0xPUjogIzY2NjsgRk9O
VC1TSVpFOiAxMXB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpINiB7DQoJUEFE
RElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDog
MHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IENPTE9SOiAjNjY2OyBGT05U
LVNJWkU6IDEwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkg2LnRpdG9sbyB7
DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkct
TEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IENPTE9SOiAjNjY2
OyBGT05ULVNJWkU6IDEwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NClAgew0K
CVBBRERJTkctQk9UVE9NOiAxZW07IE1BUkdJTjogMHB4OyBQQURESU5HLUxF
RlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBDT0xPUjogIzY2Njsg
Rk9OVC1TSVpFOiAxMHB4OyBQQURESU5HLVRPUDogMWVtDQp9DQpBIHsNCglQ
QURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZU
OiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgQ09MT1I6ICNmOWE3M2I7
IEZPTlQtU0laRTogMTBweDsgRk9OVC1XRUlHSFQ6IGJvbGQ7ID0NClRFWFQt
REVDT1JBVElPTjogbm9uZTsgUEFERElORy1UT1A6IDBweA0KfQ0KTEkgew0K
CVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxF
RlQ6IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBDT0xPUjogIzY2Njsg
Rk9OVC1TSVpFOiAxMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpURCB7DQoJ
UEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVG
VDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IENPTE9SOiAjNjY2OyBG
T05ULVNJWkU6IDEwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NClRIIHsNCglQ
QURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZU
OiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgQ09MT1I6ICM2NjY7IEZP
TlQtU0laRTogMTBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KQSBJTUcgew0K
CUJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lOyBCT1JERVItTEVGVDogbWVk
aXVtIG5vbmU7IEJPUkRFUi1UT1A6ID0NCm1lZGl1bSBub25lOyBCT1JERVIt
UklHSFQ6IG1lZGl1bSBub25lDQp9DQpVTCB7DQoJTElTVC1TVFlMRS1UWVBF
OiBub25lOyBMSVNULVNUWUxFLUlNQUdFOiBub25lDQp9DQpPTCB7DQoJTElT
VC1TVFlMRS1UWVBFOiBub25lOyBMSVNULVNUWUxFLUlNQUdFOiBub25lDQp9
DQpQLmxlZnQgew0KCUZMT0FUOiBsZWZ0DQp9DQpQLnJpZ2h0IHsNCglGTE9B
VDogcmlnaHQNCn0NClAuaW1nTGVmdCB7DQoJTUFSR0lOOiAwcHggMTJweCAx
MnB4IDBweDsgRkxPQVQ6IGxlZnQ7IENMRUFSOiBib3RoDQp9DQpQLmltZ1Jp
Z2h0IHsNCglNQVJHSU46IDBweCAwcHggMTJweCAxMnB4OyBGTE9BVDogcmln
aHQ7IENMRUFSOiBib3RoDQp9DQpQLmltZ1BpZW5hIHsNCglNQVJHSU46IDEy
cHggMHB4OyBXSURUSDogNjg1cHg7IEJBQ0tHUk9VTkQ6ICNmOTA7IEZMT0FU
OiBsZWZ0OyBDTEVBUjogPQ0KYm90aA0KfQ0KUC5jbHIgew0KCUNMRUFSOiBi
b3RoDQp9DQpQLnBhdGggew0KCUJPUkRFUi1CT1RUT006ICM5OTkgMXB4IHNv
bGlkOyBQQURESU5HLVRPUDogMTBweA0KfQ0KUC5wYXRoIHsNCglESVNQTEFZ
OiBub25lDQp9DQpBQ1JPTllNIHsNCglCQUNLR1JPVU5EOiAjZTJlMmUyOyBD
T0xPUjogIzAwMzM2NjsgQ1VSU09SOiBoZWxwDQp9DQojY29udGFpbmVyIHsN
CglQT1NJVElPTjogcmVsYXRpdmU7IFRFWFQtQUxJR046IGxlZnQ7IE1BUkdJ
TjogMHB4IGF1dG87IFdJRFRIOiA5NzBweA0KfQ0KI2xvZ28gew0KCVdJRFRI
OiAxMzZweDsgQkFDS0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5p
dC9jc3MvbG9nby5qcGcpID0NCm5vLXJlcGVhdCBsZWZ0IHRvcDsgSEVJR0hU
OiA3OHB4DQp9DQpESVYuSFBQcml2YXRpIHsNCglNQVJHSU4tVE9QOiA0MHB4
DQp9DQojbWFpbkltZyB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFERElO
Ry1MRUZUOiA4cHg7IFdJRFRIOiA2ODVweDsgUEFERElORy1SSUdIVDogPQ0K
MHB4OyBGTE9BVDogbGVmdDsgUEFERElORy1UT1A6IDBweA0KfQ0KI2ZvY3Vz
QXJlYSB7DQoJRElTUExBWTogbm9uZQ0KfQ0KI3NlYXJjaCB7DQoJUE9TSVRJ
T046IGFic29sdXRlOyBXSURUSDogMTUwcHg7IEJBQ0tHUk9VTkQ6ID0NCnVy
bChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvc2VhcmNoLmdpZikg
bm8tcmVwZWF0IGxlZnQgdG9wOyA9DQpIRUlHSFQ6IDMwcHg7IFRPUDogNTBw
eDsgUklHSFQ6IDI0cHgNCn0NCkRJVi5maXJzdCB7DQoJUE9TSVRJT046IGFi
c29sdXRlOyBURVhULUFMSUdOOiBjZW50ZXI7IEJBQ0tHUk9VTkQ6ICNmOWE3
M2I7IFRPUDogMHB4OyA9DQpGT05ULVdFSUdIVDogYm9sZDsgTEVGVDogMTM5
cHgNCn0NCkRJVi5maXJzdCBVTCB7DQoJUEFERElORy1CT1RUT006IDBweDsg
TUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBXSURUSDogNTE3cHg7
ID0NClBBRERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9ia2dfdmVydF9zZXAuZ2lm
KSAjZmZmIG5vLXJlcGVhdCA9DQpyaWdodCB0b3A7IEZMT0FUOiBsZWZ0OyBQ
QURESU5HLVRPUDogMHB4DQp9DQpESVYuZmlyc3QgVUwgTEkgew0KCVBBRERJ
TkctQk9UVE9NOiAwcHg7IExJU1QtU1RZTEUtVFlQRTogbm9uZTsgTUFSR0lO
OiAwcHg7IFBBRERJTkctTEVGVDogPQ0KMHB4OyBXSURUSDogMTI5cHg7IFBB
RERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VORC1SRVBFQVQ6IG5vLXJlcGVh
dDsgPQ0KRkxPQVQ6IGxlZnQ7IEhFSUdIVDogODBweDsgQ1VSU09SOiBwb2lu
dGVyOyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYuZmlyc3QgVUwgTEkgQSB7
DQoJUE9TSVRJT046IHJlbGF0aXZlOyBDT0xPUjogI2ZmZg0KfQ0KRElWLmZp
cnN0IFVMIExJLmxvZ28gSU1HIHsNCglXSURUSDogMTE1cHg7IERJU1BMQVk6
IGJsb2NrDQp9DQpESVYuZmlyc3QgVUwgTEkgQSB7DQoJV0lEVEg6IDEyOXB4
OyBESVNQTEFZOiBibG9jazsgSEVJR0hUOiA4MHB4DQp9DQpESVYuZmlyc3Qg
VUwgTEkucHJpdmF0aSBBIHsNCglCQUNLR1JPVU5EOiB1cmwoaHR0cDovL3d3
dy5jYXJ0YXNpLml0L0ltbWFnaW5pL3ByaXZhdGkuZ2lmKSAjZmZmIGxlZnQg
PQ0KdG9wDQp9DQpESVYuZmlyc3QgVUwgTEkuYXppZW5kZSBBIHsNCglCQUNL
R1JPVU5EOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2F6
aWVuZGUuZ2lmKSAjZmZmIGxlZnQgPQ0KdG9wDQp9DQpESVYuZmlyc3QgVUwg
TEkuYmFuY2hlIEEgew0KCUJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNh
cnRhc2kuaXQvSW1tYWdpbmkvYmFuY2hlLmdpZikgI2ZmZiBsZWZ0ID0NCnRv
cA0KfQ0KRElWLmZpcnN0IFVMIExJLmVzZXJjZW50aSBBIHsNCglCQUNLR1JP
VU5EOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2VzZXJj
ZW50aS5naWYpICNmZmYgbGVmdCA9DQp0b3ANCn0NCkRJVi5maXJzdCBVTCBM
SS5wcml2YXRpX2F0dCBBIHsNCglCQUNLR1JPVU5ELUlNQUdFOiB1cmwoaHR0
cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL3ByaXZhdGlfYXR0LmdpZik7
ID0NCkNPTE9SOiAjZjlhNzNiDQp9DQpESVYuZmlyc3QgVUwgTEkuYXppZW5k
ZV9hdHQgQSB7DQoJQkFDS0dST1VORC1JTUFHRTogdXJsKGh0dHA6Ly93d3cu
Y2FydGFzaS5pdC9JbW1hZ2luaS9hemllbmRlX2F0dC5naWYpOyA9DQpDT0xP
UjogIzcyYjJjZA0KfQ0KRElWLmZpcnN0IFVMIExJLmJhbmNoZV9hdHQgQSB7
DQoJQkFDS0dST1VORC1JTUFHRTogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5p
dC9JbW1hZ2luaS9iYW5jaGVfYXR0LmdpZik7ID0NCkNPTE9SOiAjNGRjNzU4
DQp9DQpESVYuZmlyc3QgVUwgTEkuZXNlcmNlbnRpX2F0dCBBIHsNCglCQUNL
R1JPVU5ELUlNQUdFOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0lt
bWFnaW5pL2VzZXJjZW50aV9hdHQuZ2lmKTsgQ09MT1I6ICNjZjdhN2QNCn0N
CkRJVi5maXJzdCBVTCBMSSBBOmhvdmVyIHsNCglCQUNLR1JPVU5ELVBPU0lU
SU9OOiBsZWZ0IGJvdHRvbQ0KfQ0KI21haW5OYXYgew0KCVBPU0lUSU9OOiBh
YnNvbHV0ZTsgV0lEVEg6IDk2OXB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0
cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL29tYnJhTWVudVRvcC5naWYp
IHJlcGVhdC14IGxlZnQgdG9wOyA9DQpUT1A6IDc4cHg7IExFRlQ6IDBweA0K
fQ0KRElWLnNlY29uZCB7DQoJUE9TSVRJT046IGFic29sdXRlOyBUT1A6IDc4
cHg7IExFRlQ6IDBweA0KfQ0KRElWLnNlY29uZCB7DQoJQkFDS0dST1VORDog
dXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9ia2dfc2Vjb25k
X2xldmVsLmdpZikgPQ0KI2ZmZiByZXBlYXQteA0KfQ0KRElWLnNlY29uZCBV
TCB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJ
TkctTEVGVDogMHB4OyBXSURUSDogOTcwcHg7ID0NClBBRERJTkctUklHSFQ6
IDBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLnNlY29uZCBVTCBMSSBB
IHsNCglQQURESU5HLUJPVFRPTTogMTBweDsgUEFERElORy1MRUZUOiAxMHB4
OyBQQURESU5HLVJJR0hUOiAxMHB4OyA9DQpGT05ULVNJWkU6IDEwcHg7IFBB
RERJTkctVE9QOiAxMHB4DQp9DQpESVYuc2Vjb25kIFVMIExJIHsNCglQQURE
SU5HLUJPVFRPTTogMHB4OyBMSU5FLUhFSUdIVDogMzVweDsgTElTVC1TVFlM
RS1UWVBFOiBub25lOyBNQVJHSU46ID0NCjBweDsgUEFERElORy1MRUZUOiAw
cHg7IFBBRERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0
dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9ia2dfc2Vjb25kX2xldmVs
LmdpZikgI2ZmZiByZXBlYXQteDsgPQ0KRkxPQVQ6IGxlZnQ7IEhFSUdIVDog
MzVweDsgQ1VSU09SOiBwb2ludGVyOyBGT05ULVdFSUdIVDogYm9sZDsgPQ0K
UEFERElORy1UT1A6IDBweA0KfQ0KRElWLnNlY29uZCBVTCBMSS5hdHQgew0K
CUJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvYmtnX3NlY29uZF9sZXZlbF9hdHQuZ2lmKSAjZmRlM2MwID0NCnJl
cGVhdC14DQp9DQpESVYuc2Vjb25kIFVMIExJLmF0dGhvdmVyIHsNCglCQUNL
R1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5p
L2JrZ19zZWNvbmRfbGV2ZWxfYXR0LmdpZikgI2ZkZTNjMCA9DQpyZXBlYXQt
eA0KfQ0KRElWLnNlY29uZCBVTCBMSS5hdHRob3ZlciBBIHsNCglDT0xPUjog
I2ZmZmZmZg0KfQ0KRElWLnNlY29uZCBVTCBMSS5hdHQgQSB7DQoJQ09MT1I6
ICNmZmZmZmYNCn0NCkRJVi5zZWNvbmQgVUwgTEkubGFzdCB7DQoJUEFERElO
Ry1SSUdIVDogMzBweA0KfQ0KRElWLnRoaXJkIHsNCglQT1NJVElPTjogYWJz
b2x1dGU7IFdJRFRIOiA5NzBweDsgRElTUExBWTogbm9uZTsgRk9OVC1GQU1J
TFk6ID0NCiJUcmVidWNoZXQgTVMiLCBWZXJkYW5hLCBHZW5ldmEsIEFyaWFs
LCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7ID0NCkJBQ0tHUk9VTkQ6IHVybCho
dHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYmtnX3RoaXJkX2xldmVs
LmdpZikgPQ0Kbm8tcmVwZWF0OyBIRUlHSFQ6IDExMnB4OyBUT1A6IDM1cHg7
IExFRlQ6IDBweA0KfQ0KRElWLnRoaXJkIFVMIHsNCglURVhULUFMSUdOOiBs
ZWZ0OyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElO
Ry1MRUZUOiAwcHg7ID0NCldJRFRIOiAxOTRweDsgUEFERElORy1SSUdIVDog
MHB4OyBGTE9BVDogbGVmdDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLnRo
aXJkIFVMIExJIHsNCglCQUNLR1JPVU5ELUlNQUdFOiBub25lOyBQQURESU5H
LUJPVFRPTTogMHB4OyBMSU5FLUhFSUdIVDogMThweDsgPQ0KQkFDS0dST1VO
RC1DT0xPUjogdHJhbnNwYXJlbnQ7IE1BUkdJTjogMHB4OyBQQURESU5HLUxF
RlQ6IDBweDsgV0lEVEg6ID0NCjE5NHB4OyBQQURESU5HLVJJR0hUOiAwcHg7
IEZMT0FUOiBub25lOyBIRUlHSFQ6IDE4cHg7IENPTE9SOiAjZjlhNzNiOyA9
DQpDTEVBUjogYm90aDsgRk9OVC1TSVpFOiAxMnB4OyBGT05ULVdFSUdIVDog
bm9ybWFsOyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYudGhpcmQgVUwgTEkg
QSB7DQoJUEFERElORy1CT1RUT006IDBweDsgUEFERElORy1MRUZUOiA4cHg7
IFdJRFRIOiAxODZweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBESVNQTEFZ
OiBibG9jazsgQ09MT1I6ICNmOWE3M2IgIWltcG9ydGFudDsgRk9OVC1XRUlH
SFQ6IG5vcm1hbDsgPQ0KUEFERElORy1UT1A6IDBweA0KfQ0KRElWLnRoaXJk
IFVMIExJLm9uIHsNCglCQUNLR1JPVU5ELUNPTE9SOiAjZmRlM2MwDQp9DQpE
SVYudGhpcmQgVUwgTEkuYWN0aXZlIHsNCglCQUNLR1JPVU5ELUNPTE9SOiAj
ZmRlM2MwDQp9DQpESVYudGhpcmQgVUwgTEkuYXR0IHsNCglCQUNLR1JPVU5E
LUNPTE9SOiAjZmRlM2MwDQp9DQpESVYudGhpcmQgVUwgTEkgQSB7DQoJQ09M
T1I6ICNmOTANCn0NCkRJVi50aGlyZCBVTCBMSS5hdHQgQSB7DQoJQ09MT1I6
ICNmZmYNCn0NCkRJVi50aGlyZCBVTCBMSS5hdHRob3ZlciBBIHsNCglDT0xP
UjogI2YwMA0KfQ0KRElWLnRoaXJkIFVMIExJLmxhc3QgQSB7DQoJQ09MT1I6
ICNmMDANCn0NCkRJVi50aGlyZCBVTCBMSSBBOmhvdmVyIHsNCglDT0xPUjog
IzAwMA0KfQ0KRElWLnRoaXJkIFVMIExJLmF0dCBBOmhvdmVyIHsNCglDT0xP
UjogIzAwMA0KfQ0KRElWLnRoaXJkIFVMIExJLmF0dGhvdmVyIEE6aG92ZXIg
ew0KCUNPTE9SOiAjMDAwDQp9DQpESVYudGhpcmQgVUwgTEkubGFzdCBBOmhv
dmVyIHsNCglDT0xPUjogIzAwMA0KfQ0KRElWLnRoaXJkIFVMLmZvdXJ0aCB7
DQoJUE9TSVRJT046IGFic29sdXRlOyBQQURESU5HLUJPVFRPTTogMHB4OyBN
QVJHSU46IDBweDsgUEFERElORy1MRUZUOiA9DQowcHg7IFdJRFRIOiAxOTRw
eDsgUEFERElORy1SSUdIVDogMHB4OyBESVNQTEFZOiBub25lOyBCQUNLR1JP
VU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2Jr
Z19mb3VydGhfbGV2ZWwuZ2lmKSBuby1yZXBlYXQ7ID0NCkhFSUdIVDogMTEy
cHg7IFRPUDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYudGhpcmQg
VUwuZm91cnRoIExJLmF0dCB7DQoJQkFDS0dST1VORC1DT0xPUjogdHJhbnNw
YXJlbnQ7IEZPTlQtV0VJR0hUOiBib2xkDQp9DQpESVYudGhpcmQgVUwuZm91
cnRoIExJLm9uIHsNCglCQUNLR1JPVU5ELUNPTE9SOiAjZmZmDQp9DQpESVYu
dGhpcmQgVUwuZm91cnRoIExJLmFjdGl2ZSB7DQoJQkFDS0dST1VORC1DT0xP
UjogI2ZmZg0KfQ0KTEkubm90aGlyZFNlbGVjdG9yOmhvdmVyIHsNCglCQUNL
R1JPVU5ELUNPTE9SOiAjZmRlM2MwDQp9DQpMSS50aGlyZFNlbGVjdG9yIEE6
aG92ZXIgew0KCUJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2ku
aXQvSW1tYWdpbmkvZnJlY2NpbmEtbWVudS5naWYpID0NCm5vLXJlcGVhdCBy
aWdodCBjZW50ZXINCn0NCkxJLmZvdXJ0aFNlbGVjdG9yIEE6aG92ZXIgew0K
CUJBQ0tHUk9VTkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVhdCAw
JSAwJQ0KfQ0KI3RvcE5hdiB7DQoJVEVYVC1BTElHTjogcmlnaHQ7IE1BUkdJ
Ti1UT1A6IDBweDsgV0lEVEg6IDk0OHB4OyBGTE9BVDogcmlnaHQ7ID0NCkJP
UkRFUi1UT1A6IHNpbHZlciAxcHggc29saWQ7IE1BUkdJTi1SSUdIVDogMTJw
eCAhaW1wb3J0YW50DQp9DQojdG9wTmF2IFVMIHsNCglGTE9BVDogcmlnaHQ7
IE1BUkdJTi1SSUdIVDogMnB4ICFpbXBvcnRhbnQNCn0NCiN0b3BOYXYgVUwg
TEkgew0KCVRFWFQtQUxJR046IGNlbnRlcjsgRElTUExBWTogaW5saW5lDQp9
DQojdG9wTmF2IEEgew0KCVBBRERJTkctQk9UVE9NOiAwLjJlbTsgTUFSR0lO
LVRPUDogNnB4OyBQQURESU5HLUxFRlQ6IDEuNmVtOyA9DQpQQURESU5HLVJJ
R0hUOiAxLjZlbTsgRElTUExBWTogYmxvY2s7IEZMT0FUOiBsZWZ0OyBDT0xP
UjogI2FhYTsgPQ0KRk9OVC1XRUlHSFQ6IG5vcm1hbDsgVEVYVC1ERUNPUkFU
SU9OOiBub25lOyBQQURESU5HLVRPUDogMC4yZW0NCn0NCiN0b3BOYXYgQTps
aW5rIHsNCglQQURESU5HLUJPVFRPTTogMC4yZW07IE1BUkdJTi1UT1A6IDZw
eDsgUEFERElORy1MRUZUOiAxLjZlbTsgPQ0KUEFERElORy1SSUdIVDogMS42
ZW07IERJU1BMQVk6IGJsb2NrOyBGTE9BVDogbGVmdDsgQ09MT1I6ICNhYWE7
ID0NCkZPTlQtV0VJR0hUOiBub3JtYWw7IFRFWFQtREVDT1JBVElPTjogbm9u
ZTsgUEFERElORy1UT1A6IDAuMmVtDQp9DQojdG9wTmF2IEE6dmlzaXRlZCB7
DQoJUEFERElORy1CT1RUT006IDAuMmVtOyBNQVJHSU4tVE9QOiA2cHg7IFBB
RERJTkctTEVGVDogMS42ZW07ID0NClBBRERJTkctUklHSFQ6IDEuNmVtOyBE
SVNQTEFZOiBibG9jazsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAjYWFhOyA9DQpG
T05ULVdFSUdIVDogbm9ybWFsOyBURVhULURFQ09SQVRJT046IG5vbmU7IFBB
RERJTkctVE9QOiAwLjJlbQ0KfQ0KI3RvcE5hdiBBOmhvdmVyIHsNCglDT0xP
UjogIzY2Ng0KfQ0KI3RvcE5hdiBBOmFjdGl2ZSB7DQoJQ09MT1I6ICM2NjYN
Cn0NCiN0b3BOYXYgTEkgVUwgew0KCVBPU0lUSU9OOiBhYnNvbHV0ZQ0KfQ0K
I3RvcE5hdiBMSSBMSSB7DQoJRElTUExBWTogbm9uZQ0KfQ0KI3RvcE5hdiBQ
IHsNCglURVhULUFMSUdOOiBsZWZ0OyBGTE9BVDogbGVmdDsgQ09MT1I6ICNh
YWENCn0NCiNmb290ZXJJbnQgew0KCVRFWFQtQUxJR046IGxlZnQ7IE1BUkdJ
TjogLTIwcHggMHB4IDBweCA4cHg7IFdJRFRIOiAzMDhweDsgRElTUExBWTog
PQ0Kbm9uZTsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAjYWFhOyBCT1JERVItVE9Q
OiBzaWx2ZXIgMXB4IHNvbGlkDQp9DQojZm9vdGVyIHsNCglURVhULUFMSUdO
OiBsZWZ0OyBNQVJHSU46IC0yMHB4IDBweCAwcHggOHB4OyBXSURUSDogMzA4
cHg7IERJU1BMQVk6ID0NCm5vbmU7IEZMT0FUOiBsZWZ0OyBDT0xPUjogI2Fh
YTsgQk9SREVSLVRPUDogc2lsdmVyIDFweCBzb2xpZA0KfQ0KI2Zvb3Rlcklu
dCBQIHsNCglDT0xPUjogIzk5OTsgRk9OVC1TSVpFOiAxMHB4DQp9DQojZm9v
dGVyIFAgew0KCUNPTE9SOiAjOTk5OyBGT05ULVNJWkU6IDEwcHgNCn0NCiNw
YW5uZWxsb01vdmVPbiB7DQoJUE9TSVRJT046IGFic29sdXRlOyBUT1A6IDEx
OHB4OyBMRUZUOiA3MDRweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgew0KCU1B
UkdJTjogNDJweCAwcHggMHB4IDZweDsgRkxPQVQ6IGxlZnQNCn0NCiNwYW5u
ZWxsb01vdmVPbiBIMyB7DQoJUEFERElORy1CT1RUT006IDZweDsgTUFSR0lO
LVRPUDogMHB4OyBQQURESU5HLUxFRlQ6IDEwcHg7ID0NClBBRERJTkctUklH
SFQ6IDBweDsgQ09MT1I6ICNmOWE3M2I7IEZPTlQtU0laRTogMTJweDsgRk9O
VC1XRUlHSFQ6IGJvbGQ7ID0NClBBRERJTkctVE9QOiAxMHB4DQp9DQojcGFu
bmVsbG9Nb3ZlT24gSDMgQSB7DQoJUEFERElORy1CT1RUT006IDZweDsgTUFS
R0lOLVRPUDogMHB4OyBQQURESU5HLUxFRlQ6IDEwcHg7ID0NClBBRERJTkct
UklHSFQ6IDBweDsgQ09MT1I6ICNmOWE3M2I7IEZPTlQtU0laRTogMTJweDsg
Rk9OVC1XRUlHSFQ6IGJvbGQ7ID0NClBBRERJTkctVE9QOiAxMHB4DQp9DQoj
cGFubmVsbG9Nb3ZlT25IUCBIMyB7DQoJUEFERElORy1CT1RUT006IDZweDsg
TUFSR0lOLVRPUDogMHB4OyBQQURESU5HLUxFRlQ6IDEwcHg7ID0NClBBRERJ
TkctUklHSFQ6IDBweDsgQ09MT1I6ICNmOWE3M2I7IEZPTlQtU0laRTogMTJw
eDsgRk9OVC1XRUlHSFQ6IGJvbGQ7ID0NClBBRERJTkctVE9QOiAxMHB4DQp9
DQojcGFubmVsbG9Nb3ZlT25IUCBIMyBBIHsNCglDT0xPUjogI2Y5YTczYjsg
Rk9OVC1TSVpFOiAxMnB4OyBGT05ULVdFSUdIVDogYm9sZA0KfQ0KI3Bhbm5l
bGxvTW92ZU9uICNhY2Nlc3NvIHsNCglXSURUSDogMjYxcHg7IEJBQ0tHUk9V
TkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvY3Vy
dmFQYW5uZWxsby5naWYpIG5vLXJlcGVhdCByaWdodCA9DQp0b3ANCn0NCiNw
YW5uZWxsb01vdmVPbiAjbW92ZU9uIHsNCglXSURUSDogMjYxcHg7IEJBQ0tH
Uk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkv
Y3VydmFQYW5uZWxsby5naWYpIG5vLXJlcGVhdCByaWdodCA9DQp0b3ANCn0N
CiNwYW5uZWxsb01vdmVPbkhQICNhY2Nlc3NvIHsNCglXSURUSDogMjYxcHg7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvY3VydmFQYW5uZWxsby5naWYpIG5vLXJlcGVhdCByaWdodCA9DQp0
b3ANCn0NCiNwYW5uZWxsb01vdmVPbkhQICNtb3ZlT24gew0KCVdJRFRIOiAy
NjFweDsgQkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5p
dC9JbW1hZ2luaS9jdXJ2YVBhbm5lbGxvLmdpZikgbm8tcmVwZWF0IHJpZ2h0
ID0NCnRvcA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgI2FjY2Vzc28gew0KCVBB
RERJTkctQk9UVE9NOiA1cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6
IDBweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBQQURESU5HLVRPUDogNXB4
DQp9DQojcGFubmVsbG9Nb3ZlT24gVUwuYWNjZXNzb1Bhbm5lbGxvIHsNCglQ
QURESU5HLUJPVFRPTTogNnB4OyBMSVNULVNUWUxFLVRZUEU6IG5vbmU7IE1B
UkdJTjogMHB4IDBweCAwcHggMWVtOyA9DQpQQURESU5HLUxFRlQ6IDBweDsg
UEFERElORy1SSUdIVDogMHB4OyBMSVNULVNUWUxFLUlNQUdFOiBub25lOyA9
DQpQQURESU5HLVRPUDogMHB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCBVTC5h
Y2Nlc3NvUGFubmVsbG8gew0KCVBBRERJTkctQk9UVE9NOiA2cHg7IExJU1Qt
U1RZTEUtVFlQRTogbm9uZTsgTUFSR0lOOiAwcHggMHB4IDBweCAxZW07ID0N
ClBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IExJU1Qt
U1RZTEUtSU1BR0U6IG5vbmU7ID0NClBBRERJTkctVE9QOiAwcHgNCn0NCiNw
YW5uZWxsb01vdmVPbiBVTC5hY2Nlc3NvUGFubmVsbG8gTEkgew0KCU1BUkdJ
TjogM3B4IDBweCAycHg7IFdJRFRIOiAyMTFweDsgRElTUExBWTogYmxvY2s7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvaW5wdXRMb2dpbi5naWYpIG5vLXJlcGVhdCBsZWZ0IHRvcDsgPQ0K
SEVJR0hUOiAyOXB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCBVTC5hY2Nlc3Nv
UGFubmVsbG8gTEkgew0KCU1BUkdJTjogM3B4IDBweCAycHg7IFdJRFRIOiAy
MTFweDsgRElTUExBWTogYmxvY2s7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRw
Oi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvaW5wdXRMb2dpbi5naWYpIG5v
LXJlcGVhdCBsZWZ0IHRvcDsgPQ0KSEVJR0hUOiAyOXB4DQp9DQojcGFubmVs
bG9Nb3ZlT24gVUwuYWNjZXNzb1Bhbm5lbGxvIExJIEEgew0KCVBBRERJTkct
Qk9UVE9NOiAxMnB4OyBQQURESU5HLUxFRlQ6IDEycHg7IFBBRERJTkctUklH
SFQ6IDEycHg7IENPTE9SOiA9DQojZjlhNzNiOyBGT05ULVNJWkU6IDEwcHg7
IEZPTlQtV0VJR0hUOiBib2xkOyBURVhULURFQ09SQVRJT046IG5vbmU7ID0N
ClBBRERJTkctVE9QOiAxMnB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCBVTC5h
Y2Nlc3NvUGFubmVsbG8gTEkgQSB7DQoJUEFERElORy1CT1RUT006IDEycHg7
IFBBRERJTkctTEVGVDogMTJweDsgUEFERElORy1SSUdIVDogMTJweDsgQ09M
T1I6ID0NCiNmOWE3M2I7IEZPTlQtU0laRTogMTBweDsgRk9OVC1XRUlHSFQ6
IGJvbGQ7IFRFWFQtREVDT1JBVElPTjogbm9uZTsgPQ0KUEFERElORy1UT1A6
IDEycHgNCn0NCiNwYW5uZWxsb01vdmVPbiBVTC5hY2Nlc3NvUGFubmVsbG8g
TEkgQTpob3ZlciB7DQoJVEVYVC1ERUNPUkFUSU9OOiB1bmRlcmxpbmUNCn0N
CiNwYW5uZWxsb01vdmVPbkhQIFVMLmFjY2Vzc29QYW5uZWxsbyBMSSBBOmhv
dmVyIHsNCglURVhULURFQ09SQVRJT046IHVuZGVybGluZQ0KfQ0KI3Bhbm5l
bGxvTW92ZU9uICNhY2Nlc3NvIEgzIHsNCglQQURESU5HLUJPVFRPTTogNnB4
OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiA5cHg7IFBBRERJTkctUklH
SFQ6ID0NCjZweDsgUEFERElORy1UT1A6IDZweA0KfQ0KI3Bhbm5lbGxvTW92
ZU9uSFAgI2FjY2Vzc28gSDMgew0KCVBBRERJTkctQk9UVE9NOiA2cHg7IE1B
UkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDlweDsgUEFERElORy1SSUdIVDog
PQ0KNnB4OyBQQURESU5HLVRPUDogNnB4DQp9DQojcGFubmVsbG9Nb3ZlT24g
I21vdmVPbiBQIHsNCglQQURESU5HLUJPVFRPTTogNHB4OyBNQVJHSU46IDBw
eDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsg
UEFERElORy1UT1A6IDJweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uSFAgI21vdmVP
biBQIHsNCglQQURESU5HLUJPVFRPTTogNHB4OyBNQVJHSU46IDBweDsgUEFE
RElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgUEFERElO
Ry1UT1A6IDJweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uICNtb3ZlT24gSU1HIHsN
CglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IC04cHggMHB4IDBweCAy
cHg7IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7
IFBBRERJTkctVE9QOiAwcHgNCn0NCiNwYW5uZWxsb01vdmVPbkhQICNtb3Zl
T24gSU1HIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IC04cHgg
MHB4IDBweCAycHg7IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5HLVJJ
R0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCiNwYW5uZWxsb01vdmVP
bkhQIERJVi5iYXNpYyB7DQoJTUFSR0lOOiAwcHgNCn0NCiNwYW5uZWxsb01v
dmVPbkhQIERJVi5iYXNpYyBBIHsNCglDT0xPUjogIzk5OTsgRk9OVC1XRUlH
SFQ6IG5vcm1hbDsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQojcGFubmVs
bG9Nb3ZlT25IUCBESVYuYmFzaWMgQTpob3ZlciB7DQoJVEVYVC1ERUNPUkFU
SU9OOiB1bmRlcmxpbmUNCn0NCiNwYW5uZWxsb01vdmVPbiAjbW92ZU9uIFAg
QSBJTUcgew0KCU1BUkdJTi1UT1A6IC0xMXB4DQp9DQojcGFubmVsbG9Nb3Zl
T25IUCAjYWNjZXNzbyBQIHsNCglURVhULUFMSUdOOiBqdXN0aWZ5OyBQQURE
SU5HLUJPVFRPTTogMC42ZW07IFBBRERJTkctTEVGVDogMWVtOyA9DQpQQURE
SU5HLVJJR0hUOiAxZW07IFBBRERJTkctVE9QOiAwLjZlbQ0KfQ0KI3Bhbm5l
bGxvTW92ZU9uSFAgI21vdmVPbiBIMyB7DQoJUEFERElORy1CT1RUT006IDEy
cHg7IFRFWFQtVFJBTlNGT1JNOiBsb3dlcmNhc2U7IE1BUkdJTjogMHB4OyA9
DQpQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBQQURE
SU5HLVRPUDogNHB4DQp9DQouYmFzaWMgSDQgew0KCVBBRERJTkctQk9UVE9N
OiA2cHg7IFBBRERJTkctTEVGVDogNnB4OyBQQURESU5HLVJJR0hUOiA2cHg7
IERJU1BMQVk6ID0NCmJsb2NrOyBCQUNLR1JPVU5EOiB1cmwoaHR0cDovL3d3
dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2N1cnZhUGFubmVsbG8uZ2lmKSA9DQpu
by1yZXBlYXQgcmlnaHQgdG9wOyBGT05ULVNJWkU6IDExcHg7IENVUlNPUjog
cG9pbnRlcjsgRk9OVC1XRUlHSFQ6ID0NCmJvbGQ7IFBBRERJTkctVE9QOiA2
cHgNCn0NCkRJViNjb2xEeCBQLnBkZiB7DQoJUEFERElORy1CT1RUT006IDZw
eDsgUEFERElORy1MRUZUOiA2cHg7IFBBRERJTkctUklHSFQ6IDZweDsgRElT
UExBWTogPQ0KYmxvY2s7IEJBQ0tHUk9VTkQ6IHVybChodHRwOi8vd3d3LmNh
cnRhc2kuaXQvSW1tYWdpbmkvY3VydmFQYW5uZWxsby5naWYpID0NCm5vLXJl
cGVhdCByaWdodCB0b3A7IEZPTlQtU0laRTogMTFweDsgQ1VSU09SOiBwb2lu
dGVyOyBGT05ULVdFSUdIVDogPQ0KYm9sZDsgUEFERElORy1UT1A6IDZweA0K
fQ0KRElWI2NvbER4IFAuYWRvYmVSZWFkZXIgew0KCVBBRERJTkctQk9UVE9N
OiA2cHg7IFBBRERJTkctTEVGVDogNnB4OyBQQURESU5HLVJJR0hUOiA2cHg7
IERJU1BMQVk6ID0NCmJsb2NrOyBCQUNLR1JPVU5EOiB1cmwoaHR0cDovL3d3
dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2N1cnZhUGFubmVsbG8uZ2lmKSA9DQpu
by1yZXBlYXQgcmlnaHQgdG9wOyBGT05ULVNJWkU6IDExcHg7IENVUlNPUjog
cG9pbnRlcjsgRk9OVC1XRUlHSFQ6ID0NCmJvbGQ7IFBBRERJTkctVE9QOiA2
cHgNCn0NCkRJViNjb2xEeCBQLnBkZiB7DQoJQ09MT1I6ICNmOWE3M2INCn0N
CkRJViNjb2xEeCBQLmFkb2JlUmVhZGVyIHsNCglDT0xPUjogI2Y5YTczYg0K
fQ0KLmJhc2ljIFAgew0KCVRFWFQtQUxJR046IGp1c3RpZnk7IFBBRERJTkct
Qk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogNnB4OyBXSURUSDogPQ0KMjM4
cHg7IFBBRERJTkctUklHSFQ6IDBweDsgQ09MT1I6ICM5OTk7IEZPTlQtU0la
RTogMTFweDsgUEFERElORy1UT1A6ID0NCjBweA0KfQ0KLmJhc2ljIERJViB7
DQoJQkFDS0dST1VORDogbm9uZSB0cmFuc3BhcmVudCBzY3JvbGwgcmVwZWF0
IDAlIDAlOyBIRUlHSFQ6IDk2cHg7ID0NCkJPUkRFUi1SSUdIVDogI2Y5YTcz
YiAxcHggc29saWQNCn0NCiNsaXN0MWIgRElWIHsNCj0wOQ0KfQ0KI2xpc3Qx
YiBINCB7DQoJQkFDS0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5p
dC9JbW1hZ2luaS9jdXJ2YVBhbm5lbGxvMi5naWYpICNmZmYgPQ0Kbm8tcmVw
ZWF0IHJpZ2h0IHRvcA0KfQ0KI2xpc3QxYiBESVYgUCB7DQoJQk9SREVSLUJP
VFRPTTogbWVkaXVtIG5vbmU7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsg
V0lEVEg6IGF1dG87ID0NCkJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBCT1JE
RVItUklHSFQ6IG1lZGl1bSBub25lDQp9DQojbGlzdDFiIERJViBMSSB7DQoJ
V0lEVEg6IDU5MHB4DQp9DQpESVYjY29sRHggew0KCU1BUkdJTjogMzEwcHgg
NHB4IDBweCAwcHg7IFdJRFRIOiAyNTdweDsgQkFDS0dST1VORDogPQ0KdXJs
KGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9jdXJ2YVBhbm5lbGxv
LmdpZikgbm8tcmVwZWF0IHJpZ2h0ID0NCnRvcDsgRkxPQVQ6IHJpZ2h0OyBD
T0xPUjogIzUwNTA1MA0KfQ0KRElWI2NvbER4IEEgew0KCVRFWFQtREVDT1JB
VElPTjogbm9uZQ0KfQ0KRElWI2NvbER4IFAuYWRvYmVSZWFkZXIgew0KCUJB
Q0tHUk9VTkQ6IG5vbmUgdHJhbnNwYXJlbnQgc2Nyb2xsIHJlcGVhdCAwJSAw
JQ0KfQ0KRElWI2NvbER4IFAuYWRvYmVSZWFkZXIgew0KCVBBRERJTkctQk9U
VE9NOiA4cHg7IFBBRERJTkctTEVGVDogMTBweDsgUEFERElORy1SSUdIVDog
MTBweDsgPQ0KRk9OVC1TSVpFOiAxZW07IEZPTlQtV0VJR0hUOiA3MDA7IFBB
RERJTkctVE9QOiA4cHgNCn0NCkRJViNjb2xEeCBQLmFkb2JlUmVhZGVyIEE6
aG92ZXIgew0KCUNPTE9SOiAjOTk5DQp9DQpESVYjY29sRHggVUwuc2NoZWRh
UHJvZG90dG8gew0KCVRFWFQtQUxJR046IGxlZnQ7IExJU1QtU1RZTEUtVFlQ
RTogbm9uZTsgTUFSR0lOOiAwcHg7IENPTE9SOiAjOTk5OyA9DQpGT05ULVNJ
WkU6IDFlbTsgTElTVC1TVFlMRS1JTUFHRTogbm9uZQ0KfQ0KRElWI2NvbER4
IFVMLnNjaGVkYVByb2RvdHRvIExJIHsNCglQQURESU5HLUJPVFRPTTogMHB4
OyBQQURESU5HLUxFRlQ6IDEycHg7IFBBRERJTkctUklHSFQ6IDBweDsgPQ0K
UEFERElORy1UT1A6IDZweA0KfQ0KRElWI2NvbER4IFVMLnNjaGVkYVByb2Rv
dHRvIExJIEEgew0KCUJPUkRFUi1CT1RUT006ICNjY2MgMXB4IGRhc2hlZDsg
UEFERElORy1CT1RUT006IDEycHg7IFBBRERJTkctTEVGVDogPQ0KMzhweDsg
UEFERElORy1SSUdIVDogMHB4OyBESVNQTEFZOiBibG9jazsgQkFDS0dST1VO
RDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9hY3Jv
YmF0UmVhZGVyLmdpZikgbm8tcmVwZWF0IGxlZnQgPQ0KdG9wOyBDT0xPUjog
IzY2NjsgRk9OVC1TSVpFOiA5cHg7IFRFWFQtREVDT1JBVElPTjogbm9uZTsg
UEFERElORy1UT1A6ID0NCjhweA0KfQ0KRElWI2NvbER4IFVMLnNjaGVkYVBy
b2RvdHRvIExJIEE6aG92ZXIgew0KCUNPTE9SOiAjZjlhNzNiOyBURVhULURF
Q09SQVRJT046IHVuZGVybGluZQ0KfQ0KI2NvbnRlbnV0aSB7DQoJUEFERElO
Ry1CT1RUT006IDBweDsgTUFSR0lOLVRPUDogMzJweDsgUEFERElORy1MRUZU
OiAxOHB4OyBXSURUSDogPQ0KNjc1cHg7IFBBRERJTkctUklHSFQ6IDBweDsg
RkxPQVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0NCiNjb250ZW51dGkx
IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU4tVE9QOiAzMnB4OyBQ
QURESU5HLUxFRlQ6IDE4cHg7IFdJRFRIOiA9DQo2NzVweDsgUEFERElORy1S
SUdIVDogMHB4OyBGTE9BVDogbGVmdDsgUEFERElORy1UT1A6IDBweA0KfQ0K
I2NvbnRlbnV0aTIgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTi1U
T1A6IDMycHg7IFBBRERJTkctTEVGVDogMThweDsgV0lEVEg6ID0NCjY3NXB4
OyBQQURESU5HLVJJR0hUOiAwcHg7IEZMT0FUOiBsZWZ0OyBQQURESU5HLVRP
UDogMHB4DQp9DQojY29udGVudXRpIFVMIHsNCglMSVNULVNUWUxFLVRZUEU6
IGRpc2M7IE1BUkdJTjogMWVtIDBweCAxZW0gMmVtDQp9DQojY29udGVudXRp
MSBVTCB7DQoJTElTVC1TVFlMRS1UWVBFOiBkaXNjOyBNQVJHSU46IDFlbSAw
cHggMWVtIDJlbQ0KfQ0KI2NvbnRlbnV0aTIgVUwgew0KCUxJU1QtU1RZTEUt
VFlQRTogZGlzYzsgTUFSR0lOOiAxZW0gMHB4IDFlbSAyZW0NCn0NCiNjb250
ZW51dGkgLnJpZ2h0IHsNCglNQVJHSU46IC00ZW0gLTFlbSAwcHggMmVtOyBG
TE9BVDogcmlnaHQNCn0NCiNjb250ZW51dGkxIC5yaWdodCB7DQoJTUFSR0lO
OiAtNGVtIC0xZW0gMHB4IDJlbTsgRkxPQVQ6IHJpZ2h0DQp9DQojY29udGVu
dXRpMiAucmlnaHQgew0KCU1BUkdJTjogLTRlbSAtMWVtIDBweCAyZW07IEZM
T0FUOiByaWdodA0KfQ0KRElWI2NvbnRlbnV0aSBVTCB7DQoJTElTVC1TVFlM
RS1JTUFHRTogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9m
cmVjY2luYS1wci5naWYpDQp9DQpESVYjY29udGVudXRpMSBVTCB7DQoJTElT
VC1TVFlMRS1JTUFHRTogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1h
Z2luaS9mcmVjY2luYS1wci5naWYpDQp9DQpESVYjY29udGVudXRpMiBVTCB7
DQoJTElTVC1TVFlMRS1JTUFHRTogdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5p
dC9JbW1hZ2luaS9mcmVjY2luYS1wci5naWYpDQp9DQpESVYjY29udGF0dGFj
aSB7DQoJQk9SREVSLUJPVFRPTTogIzY2NiAxcHggc29saWQ7IEJPUkRFUi1M
RUZUOiAjNjY2IDFweCBzb2xpZDsgV0lEVEg6ID0NCjE4MHB4OyBGTE9BVDog
cmlnaHQ7IEJPUkRFUi1UT1A6ICM2NjYgMXB4IHNvbGlkOyBCT1JERVItUklH
SFQ6ICM2NjYgMXB4ID0NCnNvbGlkDQp9DQojY29udGFpbmVyIC5wdWxzYW50
ZVJvc3NvIHsNCglURVhULUFMSUdOOiBsZWZ0OyBMSU5FLUhFSUdIVDogMzRw
eDsgUEFERElORy1MRUZUOiAxMHB4OyBXSURUSDogMTQycHg7ID0NCkRJU1BM
QVk6IGJsb2NrOyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0
YXNpLml0L0ltbWFnaW5pL3B1bHNhbnRlUm9zc28uZ2lmKSBuby1yZXBlYXQ7
IEhFSUdIVDogPQ0KMzhweDsgQ09MT1I6ICNmZmY7IFZFUlRJQ0FMLUFMSUdO
OiBtaWRkbGU7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KI2NvbnRhaW5l
ciAucHVsc2FudGVBcmFuY2lvIHsNCglURVhULUFMSUdOOiBsZWZ0OyBMSU5F
LUhFSUdIVDogMzRweDsgUEFERElORy1MRUZUOiAxMHB4OyBXSURUSDogMTQy
cHg7ID0NCkRJU1BMQVk6IGJsb2NrOyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0
cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL3B1bHNhbnRlUm9zc28uZ2lm
KSBuby1yZXBlYXQ7IEhFSUdIVDogPQ0KMzhweDsgQ09MT1I6ICNmZmY7IFZF
UlRJQ0FMLUFMSUdOOiBtaWRkbGU7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0K
fQ0KI2NvbnRhaW5lciAucHVsc2FudGVWZXJkZSB7DQoJVEVYVC1BTElHTjog
bGVmdDsgTElORS1IRUlHSFQ6IDM0cHg7IFBBRERJTkctTEVGVDogMTBweDsg
V0lEVEg6IDE0MnB4OyA9DQpESVNQTEFZOiBibG9jazsgQkFDS0dST1VORDog
PQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9wdWxzYW50
ZVJvc3NvLmdpZikgbm8tcmVwZWF0OyBIRUlHSFQ6ID0NCjM4cHg7IENPTE9S
OiAjZmZmOyBWRVJUSUNBTC1BTElHTjogbWlkZGxlOyBURVhULURFQ09SQVRJ
T046IG5vbmUNCn0NCiNjb250YWluZXIgLnB1bHNhbnRlQXp6dXJybyB7DQoJ
VEVYVC1BTElHTjogbGVmdDsgTElORS1IRUlHSFQ6IDM0cHg7IFBBRERJTkct
TEVGVDogMTBweDsgV0lEVEg6IDE0MnB4OyA9DQpESVNQTEFZOiBibG9jazsg
QkFDS0dST1VORDogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1h
Z2luaS9wdWxzYW50ZVJvc3NvLmdpZikgbm8tcmVwZWF0OyBIRUlHSFQ6ID0N
CjM4cHg7IENPTE9SOiAjZmZmOyBWRVJUSUNBTC1BTElHTjogbWlkZGxlOyBU
RVhULURFQ09SQVRJT046IG5vbmUNCn0NCiNjb250YWluZXIgLnB1bHNhbnRl
QXJhbmNpbyB7DQoJQkFDS0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2FydGFz
aS5pdC9JbW1hZ2luaS9wdWxzYW50ZUFyYW5jaW8uZ2lmKSA9DQpuby1yZXBl
YXQNCn0NCiNjb250YWluZXIgLnB1bHNhbnRlVmVyZGUgew0KCUJBQ0tHUk9V
TkQ6IHVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvcHVsc2Fu
dGVWZXJkZS5naWYpID0NCm5vLXJlcGVhdA0KfQ0KI2NvbnRhaW5lciAucHVs
c2FudGVBenp1cnJvIHsNCglCQUNLR1JPVU5EOiB1cmwoaHR0cDovL3d3dy5j
YXJ0YXNpLml0L0ltbWFnaW5pL3B1bHNhbnRlQXp6dXJyby5naWYpID0NCm5v
LXJlcGVhdA0KfQ0KRElWLnZpYUludGVybmV0IHsNCglXSURUSDogNjQwcHg7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvYWRlcmlzY2lJbnRlcm5ldC5qcGcpIG5vLXJlcGVhdCBsZWZ0ID0N
CnRvcDsgSEVJR0hUOiAxMTBweA0KfQ0KRElWLnZpYVRlbGVmb25vIHsNCglX
SURUSDogNDgwcHg7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNh
cnRhc2kuaXQvSW1tYWdpbmkvYWRlcmlzY2lUZWxlZm9uby5qcGcpIG5vLXJl
cGVhdCBsZWZ0ID0NCnRvcDsgSEVJR0hUOiAxMTBweA0KfQ0KI2NvbnRhaW5l
ciBESVYudmlhSW50ZXJuZXQgSDMgew0KCVBBRERJTkctTEVGVDogMTMycHg7
IEZPTlQtRkFNSUxZOiAiVHJlYnVjaGV0IE1TIiwgVmVyZGFuYSwgQXJpYWws
ID0NCnNhbnMtc2VyaWY7IEZPTlQtU0laRTogMThweA0KfQ0KI2NvbnRhaW5l
ciBESVYudmlhVGVsZWZvbm8gSDMgew0KCVBBRERJTkctTEVGVDogMTMycHg7
IEZPTlQtRkFNSUxZOiAiVHJlYnVjaGV0IE1TIiwgVmVyZGFuYSwgQXJpYWws
ID0NCnNhbnMtc2VyaWY7IEZPTlQtU0laRTogMThweA0KfQ0KRElWLnZpYUlu
dGVybmV0IEgzIFNQQU4gew0KCUNPTE9SOiAjMDZmDQp9DQpESVYudmlhVGVs
ZWZvbm8gSDMgU1BBTiB7DQoJQ09MT1I6ICMwNmYNCn0NCkRJVi52aWFJbnRl
cm5ldCBQIHsNCglNQVJHSU4tTEVGVDogMTMycHgNCn0NCkRJVi52aWFUZWxl
Zm9ubyBQIHsNCglNQVJHSU4tTEVGVDogMTMycHgNCn0NCkRJViNjb250YWlu
ZXIgRElWLmNsdWJJb3NpIFVMIHsNCglNQVJHSU46IDEycHgNCn0NClVMLmNz
aVJpc3BvbmRlIHsNCglMSVNULVNUWUxFLVRZUEU6IGRpc2M7IExJU1QtU1RZ
TEUtSU1BR0U6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdp
bmkvZG9tYW5kZV9yaXNwb3N0ZS9mcmVjY2luYS5naWYpDQp9DQpESVYjY29u
dGFpbmVyIFVMLm1lbnVDYXJ0YSB7DQoJUEFERElORy1CT1RUT006IDBweDsg
TElTVC1TVFlMRS1UWVBFOiBub25lOyBNQVJHSU46IDBweCAwcHggMmVtOyA9
DQpQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBMSVNU
LVNUWUxFLUlNQUdFOiBub25lOyA9DQpQQURESU5HLVRPUDogMHB4DQp9DQpE
SVYjY29udGFpbmVyIFVMLm1lbnVDYXJ0YSBMSSB7DQoJUEFERElORy1CT1RU
T006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURE
SU5HLVJJR0hUOiA9DQowcHg7IERJU1BMQVk6IGlubGluZTsgUEFERElORy1U
T1A6IDBweA0KfQ0KRElWI2NvbnRhaW5lciBVTC5tZW51Q2FydGEgTEkgew0K
CUZPTlQtV0VJR0hUOiA3MDA7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0K
VUwubWVudUNhcnRhIExJIEEgew0KCUZPTlQtV0VJR0hUOiA3MDA7IFRFWFQt
REVDT1JBVElPTjogbm9uZQ0KfQ0KRElWI2NvbnRhaW5lciBVTC5tZW51Q2Fy
dGEgTEkgQSB7DQoJUEFERElORy1CT1RUT006IDZweDsgUEFERElORy1MRUZU
OiA2cHg7IFBBRERJTkctUklHSFQ6IDZweDsgPQ0KUEFERElORy1UT1A6IDZw
eA0KfQ0KRElWI2NvbnRhaW5lciBVTC5tZW51Q2FydGEgTEkgQSNwcmVzZW50
YXppb25lIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsg
UEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgUEFE
RElORy1UT1A6IDBweA0KfQ0KLnZhbnRhZ2dpQ2FydGEgew0KCU1BUkdJTi1M
RUZUOiAxZW0NCn0NCi52ZXJzaW9uaUNhcnRhIHsNCglNQVJHSU4tTEVGVDog
MWVtDQp9DQoucXVvdGVDYXJ0YSB7DQoJTUFSR0lOLUxFRlQ6IDFlbQ0KfQ0K
LmluZm9DYXJ0YSB7DQoJTUFSR0lOLUxFRlQ6IDFlbQ0KfQ0KLmluZm9DYXJ0
YSBVTCB7DQoJTUFSR0lOOiAwcHgNCn0NCkRJVi5lc2FsdGFWYW50YWdnaSB7
DQo9MDkNCn0NClAuaW1nQ2VudHJhdGEgew0KCU1BUkdJTjogMTJweCAxMnB4
IDEycHggMHB4DQp9DQpQLmltZ0NlbnRyYXRhIFNQQU4gew0KCU1BUkdJTi1U
T1A6IC0yMnB4OyBESVNQTEFZOiBibG9jazsgTUFSR0lOLUxFRlQ6IDQwcHgN
Cn0NClRBQkxFLmVsZW5jb0NvbWFuZGkgew0KCU1BUkdJTjogMHB4IDBweCAy
ZW0NCn0NClRBQkxFLmVsZW5jb0NvbWFuZGkgVEggew0KCVRFWFQtQUxJR046
IGxlZnQ7IFBBRERJTkctQk9UVE9NOiA0cHg7IFBBRERJTkctTEVGVDogOHB4
OyA9DQpQQURESU5HLVJJR0hUOiA4cHg7IEJBQ0tHUk9VTkQ6ICM5OTk7IFBB
RERJTkctVE9QOiA0cHgNCn0NClRBQkxFLmVsZW5jb0NvbWFuZGkgVEQgew0K
CVBBRERJTkctQk9UVE9NOiA0cHg7IFBBRERJTkctTEVGVDogOHB4OyBQQURE
SU5HLVJJR0hUOiA4cHg7IEJBQ0tHUk9VTkQ6ID0NCiNlYWVhZWE7IFBBRERJ
TkctVE9QOiA0cHgNCn0NCi5wYXJ0bmVyU01TIC5sb2dvUGFydG5lclNNUyBJ
TUcgew0KCU1BUkdJTjogMHB4IDI0cHggMjRweCAwcHg7IFdJRFRIOiAxMzBw
eDsgRkxPQVQ6IGxlZnQ7IEhFSUdIVDogMTAwcHgNCn0NClAubGlua0JhY2sg
ew0KCVRFWFQtQUxJR046IHJpZ2h0OyBNQVJHSU46IDEycHggMHB4IDBweDsg
UEFERElORy1UT1A6IDEycHgNCn0NCiNjb250YWluZXIgRElWLmlzc09ubGlu
ZSB7DQo9MDkNCn0NCiNjb250YWluZXIgRElWLmlzc09ubGluZSBIMy50aXRv
bG8gew0KCUZPTlQtU0laRTogMTFweA0KfQ0KRElWLnZhbnRhZ2dpIEgyLnRp
dG9sbyB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBB
RERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IEZPTlQt
U0laRTogMTFweDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLnZhbnRhZ2dp
IEgzLnRpdG9sbyB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAw
cHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7
IEZPTlQtU0laRTogMTFweDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElWLnZh
bnRhZ2dpIFAubGVmdCB7DQoJV0lEVEg6IDEyMHB4OyBIRUlHSFQ6IDE0MHB4
DQp9DQpESVYudmFudGFnZ2kgUC5sZWZ0IElNRyB7DQoJTUFSR0lOLVRPUDog
MTJweA0KfQ0KRElWLnZpbGxhZ2UgRElWLmJhbm5lckZsYXNoIHsNCglNQVJH
SU46IDBweCAwcHggMmVtIDJlbTsgV0lEVEg6IDE2MXB4OyBGTE9BVDogcmln
aHQ7IEhFSUdIVDogMjk0cHgNCn0NCkRJViNjb250YWluZXIgRElWLmVsZW5j
b1NpdGkgew0KCVRFWFQtQUxJR046IGxlZnQ7IE1BUkdJTjogMTJweCAyMnB4
IDBweCAwcHg7IEZMT0FUOiByaWdodA0KfQ0KRElWI2NvbnRhaW5lciBESVYu
ZWxlbmNvU2l0aSBESVYjYWNjb3JkaW9uYiBESVYgew0KCVdJRFRIOiAyMzBw
eDsgRkxPQVQ6IGxlZnQ7IEZPTlQtU0laRTogMTJweA0KfQ0KRElWI2NvbnRh
aW5lciBESVYuZWxlbmNvU2l0aSBESVYgew0KCVdJRFRIOiAzMThweDsgRkxP
QVQ6IGxlZnQ7IEZPTlQtU0laRTogMTJweA0KfQ0KRElWI2NvbnRhaW5lciBE
SVYuZWxlbmNvU2l0aSBVTCB7DQoJTElTVC1TVFlMRS1JTUFHRTogPQ0KdXJs
KGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1hZ2luaS9jYXRlZ29yaWUvVkJW
ZnJlY2NpbmUuZ2lmKQ0KfQ0KQk9EWS5wb3B1cCB7DQoJUEFERElORy1CT1RU
T006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURE
SU5HLVJJR0hUOiA9DQowcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJViNj
b250ZW51dGkgRElWI3RyZURzZWN1cmUgew0KCUNPTE9SOiAjNDQ0DQp9DQpE
SVYjY29udGVudXRpMSBESVYjdHJlRHNlY3VyZSB7DQoJQ09MT1I6ICM0NDQN
Cn0NCkRJViNjb250ZW51dGkyIERJViN0cmVEc2VjdXJlIHsNCglDT0xPUjog
IzQ0NA0KfQ0KRElWI3RyZURzZWN1cmUgSDMudGl0b2xvIHsNCglNQVJHSU4t
TEVGVDogMHB4DQp9DQpESVYjdHJlRHNlY3VyZSBMSSB7DQoJTUFSR0lOLUxF
RlQ6IDE4cHg7IExJU1QtU1RZTEUtSU1BR0U6ID0NCnVybChodHRwOi8vd3d3
LmNhcnRhc2kuaXQvSW1tYWdpbmkvZnJlY2NpbmEtcHIuZ2lmKQ0KfQ0KRElW
I3RyZURzZWN1cmUgUCB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lO
OiAwcHggMHB4IDEycHg7IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5H
LVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJViN0cmVEc2Vj
dXJlIFAuZG9tYW5kYSB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lO
OiAxOHB4IDBweCAwcHg7IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5H
LVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJViN0cmVEc2Vj
dXJlIERJVi5ub1BUIHsNCglCT1JERVItQk9UVE9NOiAjZjkwIGRvdWJsZTsg
Qk9SREVSLUxFRlQ6ICNmOTAgZG91YmxlOyBQQURESU5HLUJPVFRPTTogPQ0K
MWVtOyBNQVJHSU46IDFlbTsgUEFERElORy1MRUZUOiAxZW07IFBBRERJTkct
UklHSFQ6IDFlbTsgQk9SREVSLVRPUDogPQ0KI2Y5MCBkb3VibGU7IEJPUkRF
Ui1SSUdIVDogI2Y5MCBkb3VibGU7IFBBRERJTkctVE9QOiAxZW0NCn0NCkRJ
ViN0cmVEc2VjdXJlIERJVi5QVCB7DQoJQk9SREVSLUJPVFRPTTogI2Y5MCBk
b3VibGU7IEJPUkRFUi1MRUZUOiAjZjkwIGRvdWJsZTsgUEFERElORy1CT1RU
T006ID0NCjFlbTsgTUFSR0lOOiAxZW07IFBBRERJTkctTEVGVDogMWVtOyBQ
QURESU5HLVJJR0hUOiAxZW07IEJPUkRFUi1UT1A6ID0NCiNmOTAgZG91Ymxl
OyBCT1JERVItUklHSFQ6ICNmOTAgZG91YmxlOyBQQURESU5HLVRPUDogMWVt
DQp9DQpESVYjdHJlRHNlY3VyZSBVTC5mYXEgew0KCVBBRERJTkctQk9UVE9N
OiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElO
Ry1SSUdIVDogPQ0KMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYjdHJl
RHNlY3VyZSBVTC5mYXEgTEkgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1B
UkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDog
PQ0KMHB4OyBESVNQTEFZOiBpbmxpbmU7IFBBRERJTkctVE9QOiAwcHgNCn0N
CkRJViN0cmVEc2VjdXJlIFVMLmZhcSBMSSBBIHsNCglQQURESU5HLUJPVFRP
TTogMnB4OyBNQVJHSU46IDBweCAwcHggMHB4IDFweDsgUEFERElORy1MRUZU
OiA0cHg7ID0NClBBRERJTkctUklHSFQ6IDRweDsgQkFDS0dST1VORDogI2Nj
YzsgQ09MT1I6ICMwMDY7IFRFWFQtREVDT1JBVElPTjogPQ0Kbm9uZTsgUEFE
RElORy1UT1A6IDJweA0KfQ0KRElWI3RyZURzZWN1cmUgVUwuZmFxIExJIEEu
YWN0aXZlIHsNCglCQUNLR1JPVU5EOiAjZjkwOyBDT0xPUjogIzMzMw0KfQ0K
RElWI3RyZURzZWN1cmUgVUwuZmFxIExJIEE6aG92ZXIgew0KCUJBQ0tHUk9V
TkQ6ICNmOTA7IENPTE9SOiAjMzMzDQp9DQpESVYjdHJlRHNlY3VyZSBQLlJp
Z2h0IElNRyB7DQoJRkxPQVQ6IHJpZ2h0OyBNQVJHSU4tTEVGVDogMTJweA0K
fQ0KI3Bhbm5lbGxvTW92ZU9uSFAgVUwuYWNjZXNzb1Bhbm5lbGxvIExJIEEg
ew0KCVBBRERJTkctQk9UVE9NOiAxNnB4OyBMSU5FLUhFSUdIVDogMjJweDsg
UEFERElORy1MRUZUOiAxNnB4OyA9DQpQQURESU5HLVJJR0hUOiAxNnB4OyBD
T0xPUjogI2Y5YTczYjsgRk9OVC1TSVpFOiAxMHB4OyBGT05ULVdFSUdIVDog
Ym9sZDsgPQ0KVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURESU5HLVRPUDog
MTZweA0KfQ0KI3Bhbm5lbGxvTW92ZU9uIFVMLmFjY2Vzc29QYW5uZWxsbyBM
SSBBIHsNCglQQURESU5HLUJPVFRPTTogMTZweDsgTElORS1IRUlHSFQ6IDIy
cHg7IFBBRERJTkctTEVGVDogMTZweDsgPQ0KUEFERElORy1SSUdIVDogMTZw
eDsgQ09MT1I6ICNmOWE3M2I7IEZPTlQtU0laRTogMTBweDsgRk9OVC1XRUlH
SFQ6IGJvbGQ7ID0NClRFWFQtREVDT1JBVElPTjogbm9uZTsgUEFERElORy1U
T1A6IDE2cHgNCn0NCkxJLmFjdGl2ZS50aGlyZFNlbGVjdG9yIHsNCglCQUNL
R1JPVU5EOiB1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2Zy
ZWNjaW5hLW1lbnUuZ2lmKSA9DQpuby1yZXBlYXQgcmlnaHQgY2VudGVyDQp9
DQojdG9wTmF2IEEgew0KCVBBRERJTkctQk9UVE9NOiAwLjJlbTsgTUFSR0lO
LVRPUDogNnB4OyBQQURESU5HLUxFRlQ6IDFlbTsgPQ0KUEFERElORy1SSUdI
VDogMWVtOyBESVNQTEFZOiBibG9jazsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAj
YWFhOyA9DQpGT05ULVdFSUdIVDogbm9ybWFsOyBURVhULURFQ09SQVRJT046
IG5vbmU7IFBBRERJTkctVE9QOiAwLjJlbQ0KfQ0KI3RvcE5hdiBBOmxpbmsg
ew0KCVBBRERJTkctQk9UVE9NOiAwLjJlbTsgTUFSR0lOLVRPUDogNnB4OyBQ
QURESU5HLUxFRlQ6IDFlbTsgPQ0KUEFERElORy1SSUdIVDogMWVtOyBESVNQ
TEFZOiBibG9jazsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAjYWFhOyA9DQpGT05U
LVdFSUdIVDogbm9ybWFsOyBURVhULURFQ09SQVRJT046IG5vbmU7IFBBRERJ
TkctVE9QOiAwLjJlbQ0KfQ0KI3RvcE5hdiBBOnZpc2l0ZWQgew0KCVBBRERJ
TkctQk9UVE9NOiAwLjJlbTsgTUFSR0lOLVRPUDogNnB4OyBQQURESU5HLUxF
RlQ6IDFlbTsgPQ0KUEFERElORy1SSUdIVDogMWVtOyBESVNQTEFZOiBibG9j
azsgRkxPQVQ6IGxlZnQ7IENPTE9SOiAjYWFhOyA9DQpGT05ULVdFSUdIVDog
bm9ybWFsOyBURVhULURFQ09SQVRJT046IG5vbmU7IFBBRERJTkctVE9QOiAw
LjJlbQ0KfQ0KRElWI2NvbnRhaW5lciBESVYub2ZmUHJlbWl1bSBVTC5wYXJ0
bmVyIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBMSVNULVNUWUxFLVRZUEU6
IG5vbmU7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6ID0NCjBweDsgUEFE
RElORy1SSUdIVDogMHB4OyBMSVNULVNUWUxFLUlNQUdFOiBub25lOyBQQURE
SU5HLVRPUDogMHB4DQp9DQpESVYub2ZmUHJlbWl1bSBVTC5wYXJ0bmVyIExJ
IHsNCglQQURESU5HLUJPVFRPTTogMTJweDsgUEFERElORy1MRUZUOiAxMnB4
OyBXSURUSDogNTYwcHg7IFBBRERJTkctUklHSFQ6ID0NCjEycHg7IEZMT0FU
OiBsZWZ0OyBIRUlHSFQ6IDE0MHB4OyBCT1JERVItVE9QOiBzaWx2ZXIgMXB4
IHNvbGlkOyA9DQpQQURESU5HLVRPUDogMTJweA0KfQ0KRElWLm9mZlByZW1p
dW0gVUwucGFydG5lciBMSSBJTUcgew0KPTA5DQp9DQpESVYub2ZmUHJlbWl1
bSBVTC5wYXJ0bmVyIExJIFAgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1B
UkdJTjogLTYycHggMHB4IDEycHggMTMwcHg7IFBBRERJTkctTEVGVDogMHB4
OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0N
CkRJVi5vZmZQcmVtaXVtIFVMLnBhcnRuZXIgTEkgU1RST05HIHsNCglQT1NJ
VElPTjogYWJzb2x1dGU7IE1BUkdJTi1UT1A6IDhweDsgRk9OVC1TSVpFOiAx
NHB4OyBMRUZUOiAxNjBweA0KfQ0KRElWLm9mZlByZW1pdW0gVUwucGFydG5l
ciBMSSBTVFJPTkcgU1BBTiB7DQoJQ09MT1I6ICMzMzMNCn0NCkRJVi5vZmZQ
cmVtaXVtIFVMLnBhcnRuZXIgTEkgQSB7DQoJUE9TSVRJT046IGFic29sdXRl
OyBMRUZUOiAxNjBweA0KfQ0KLnBvcFByZW1pdW0gLnBvcHVwIHsNCglQT1NJ
VElPTjogcmVsYXRpdmU7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjog
MHB4IGF1dG87ID0NClBBRERJTkctTEVGVDogMHB4OyBXSURUSDogNzIwcHg7
IFBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1UT1A6IDEycHgNCn0NCi5w
b3BQcmVtaXVtIC5wb3B1cCB7DQoJUE9TSVRJT046IHJlbGF0aXZlOyBQQURE
SU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweCBhdXRvOyA9DQpQQURESU5H
LUxFRlQ6IDBweDsgV0lEVEg6IDcyMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7
IFBBRERJTkctVE9QOiAxMnB4DQp9DQoucG9wUHJlbWl1bSAucG9wdXAgew0K
CVBPU0lUSU9OOiByZWxhdGl2ZTsgUEFERElORy1CT1RUT006IDBweDsgTUFS
R0lOOiAwcHggYXV0bzsgPQ0KUEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiA3
MjBweDsgUEFERElORy1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMTJweA0K
fQ0KLnBvcFByZW1pdW0gLnBvcHVwIElNRy5sb2dvUGFydG5lciB7DQoJUEFE
RElORy1CT1RUT006IDI0cHg7IE1BUkdJTjogMHB4IDI0cHggMTJweCAwcHg7
IFBBRERJTkctTEVGVDogMHB4OyA9DQpQQURESU5HLVJJR0hUOiAyNHB4OyBG
TE9BVDogbGVmdDsgQk9SREVSLVJJR0hUOiBzaWx2ZXIgMXB4IGRvdHRlZDsg
PQ0KUEFERElORy1UT1A6IDBweA0KfQ0KLnBvcFByZW1pdW0gLnBvcHVwIFVM
IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBMSVNULVNUWUxFLVRZUEU6IGRp
c2M7IE1BUkdJTjogMHB4IDBweCAwcHggMTJweDsgPQ0KUEFERElORy1MRUZU
OiAxMnB4OyBQQURESU5HLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgN
Cn0NCi5wb3BQcmVtaXVtIC5wb3B1cCBQIHsNCj0wOQ0KfQ0KLmRpdm1vdmVv
biBTUEFOLmRpdm1vdmVvbjEgew0KCVBBRERJTkctQk9UVE9NOiAxN3B4OyBE
SVNQTEFZOiBibG9jaw0KfQ0KLmRpdm1vdmVvbiBTUEFOIHsNCglQQURESU5H
LUJPVFRPTTogN3B4OyBESVNQTEFZOiBibG9jaw0KfQ0KI2xpbmUgew0KCUJP
UkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1C
T1RUT006IDBweDsgTElORS1IRUlHSFQ6ID0NCjFweDsgTUFSR0lOOiAwcHg7
IFBBRERJTkctTEVGVDogMHB4OyBXSURUSDogNjMwcHg7IFBBRERJTkctUklH
SFQ6IDBweDsgPQ0KRElTUExBWTogYmxvY2s7IEJBQ0tHUk9VTkQ6ICNlMmUy
ZTI7IEhFSUdIVDogMXB4OyBCT1JERVItVE9QOiAwcHg7ID0NCkJPUkRFUi1S
SUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpIMS50aXRvbG9saWdo
dCB7DQoJTUFSR0lOOiAxMnB4IDEycHggMjJweCAwcHg7IENPTE9SOiAjZmZj
MjBlOyBGT05ULVNJWkU6IDE2cHgNCn0NCkgyLnRpdG9sb2xpZ2h0IHsNCglQ
QURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDEycHggMHB4IDZweDsgUEFE
RElORy1MRUZUOiAwcHg7ID0NClBBRERJTkctUklHSFQ6IDBweDsgQ09MT1I6
ICM4ODg7IEZPTlQtU0laRTogMTRweDsgUEFERElORy1UT1A6IDBweA0KfQ0K
LngtcGF5IHsNCglXSURUSDogNjM4cHg7IERJU1BMQVk6IGJsb2NrOyBGTE9B
VDogbGVmdA0KfQ0KLngtcGF5IC5zcXVhcmUgew0KCVBBRERJTkctQk9UVE9N
OiAxMHB4OyBQQURESU5HLUxFRlQ6IDEwcHg7IFdJRFRIOiAyMHB4OyBQQURE
SU5HLVJJR0hUOiA9DQoxMHB4OyBGTE9BVDogbGVmdDsgSEVJR0hUOiAyMHB4
OyBQQURESU5HLVRPUDogMTBweA0KfQ0KLngtcGF5IFAgew0KCVBBRERJTkct
Qk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4IDBweCAwcHggNDBweDsgUEFERElO
Ry1MRUZUOiAwcHg7ID0NClBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1U
T1A6IDBweA0KfQ0KLmJhbnhwYXkgew0KCU1BUkdJTjogMHB4IDBweCAyMHB4
OyBXSURUSDogNjM4cHg7IERJU1BMQVk6IGJsb2NrOyBCQUNLR1JPVU5EOiA9
DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JnLWJhbi1k
ZW1veHBheS5qcGcpIG5vLXJlcGVhdCBsZWZ0ID0NCnRvcDsgRkxPQVQ6IGxl
ZnQ7IEhFSUdIVDogMTU2cHgNCn0NCi5iYW54cGF5IFAgew0KCVBBRERJTkct
Qk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogMjM0cHg7IFBBRERJTkctUklH
SFQ6IDBweDsgQ09MT1I6ID0NCiM0NDQ7IEZPTlQtU0laRTogMTBweDsgRk9O
VC1XRUlHSFQ6IG5vcm1hbDsgUEFERElORy1UT1A6IDkwcHgNCn0NCi5iYW54
cGF5IEEgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDog
NTMwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRElTUExBWTogPQ0KYmxvY2s7
IFBBRERJTkctVE9QOiAxNXB4DQp9DQouYmFueHBheTIgew0KCU1BUkdJTjog
MHB4IDBweCAyMHB4OyBXSURUSDogNjM5cHg7IERJU1BMQVk6IGJsb2NrOyBC
QUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFn
aW5pL2JnLWJhbi14cGF5Mi5naWYpIG5vLXJlcGVhdCBsZWZ0IHRvcDsgPQ0K
RkxPQVQ6IGxlZnQ7IEhFSUdIVDogMTU4cHgNCn0NCi5iYW54cGF5MiBJTUcu
dGl0IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6IDE1
cHg7IFdJRFRIOiAxMTRweDsgUEFERElORy1SSUdIVDogPQ0KMHB4OyBIRUlH
SFQ6IDI3cHg7IFBBRERJTkctVE9QOiAxNXB4DQp9DQouYmFueHBheTIgUCB7
DQoJUEFERElORy1CT1RUT006IDVweDsgUEFERElORy1MRUZUOiAyMHB4OyBQ
QURESU5HLVJJR0hUOiAwcHg7IENPTE9SOiA9DQojNDQ0OyBGT05ULVNJWkU6
IDEwcHg7IEZPTlQtV0VJR0hUOiBub3JtYWw7IFBBRERJTkctVE9QOiA1cHgN
Cn0NCi5iYW54cGF5MiBVTCB7DQoJUEFERElORy1CT1RUT006IDBweDsgTElT
VC1TVFlMRS1UWVBFOiBub25lOyBQQURESU5HLUxFRlQ6IDVweDsgV0lEVEg6
ID0NCjYxMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IENPTE9SOiAjNDQ0OyBG
T05ULVNJWkU6IDEwcHg7IEZPTlQtV0VJR0hUOiA9DQpub3JtYWw7IFBBRERJ
TkctVE9QOiAwcHgNCn0NCi5iYW54cGF5MiBVTCBMSSB7DQoJUEFERElORy1C
T1RUT006IDBweDsgTElORS1IRUlHSFQ6IDE1cHg7IExJU1QtU1RZTEUtVFlQ
RTogbm9uZTsgPQ0KUEFERElORy1MRUZUOiAxNXB4OyBQQURESU5HLVJJR0hU
OiAwcHg7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2ku
aXQvSW1tYWdpbmkvbGkteHBheS5naWYpIG5vLXJlcGVhdCBsZWZ0IDVweDsg
PQ0KQ09MT1I6ICM0NDQ7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi5ib3gx
IHsNCglCT1JERVItQk9UVE9NOiAjY2NjIDFweCBzb2xpZDsgUE9TSVRJT046
IHJlbGF0aXZlOyBCT1JERVItTEVGVDogI2NjYyA9DQoxcHggc29saWQ7IFBB
RERJTkctQk9UVE9NOiAxMnB4OyBNQVJHSU46IDEycHggMHB4OyBQQURESU5H
LUxFRlQ6IDEycHg7ID0NClBBRERJTkctUklHSFQ6IDEycHg7IEJBQ0tHUk9V
TkQ6ICNmN2Y3Zjc7IENPTE9SOiAjMzMzOyBDTEVBUjogbGVmdDsgPQ0KQk9S
REVSLVRPUDogI2NjYyAxcHggc29saWQ7IEJPUkRFUi1SSUdIVDogI2NjYyAx
cHggc29saWQ7IFBBRERJTkctVE9QOiA9DQoxMnB4DQp9DQpESVYuYm94MiB7
DQoJUE9TSVRJT046IHJlbGF0aXZlOyBQQURESU5HLUJPVFRPTTogMHB4OyBN
QVJHSU46IDEycHggMHB4OyA9DQpQQURESU5HLUxFRlQ6IDBweDsgUEFERElO
Ry1SSUdIVDogMHB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5j
YXJ0YXNpLml0L0ltbWFnaW5pL2JyYW5kYm9vay9ib3gyLmpwZykgbm8tcmVw
ZWF0OyA9DQpIRUlHSFQ6IDE2MXB4OyBDT0xPUjogIzMzMzsgQ0xFQVI6IGxl
ZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi5ib3gyIFAuaW1nIHsNCglN
QVJHSU46IDI4cHggMTJweCAxMnB4OyBXSURUSDogMjIwcHg7IEZMT0FUOiBs
ZWZ0DQp9DQpESVYuYm94MiAudGl0b2xvIHsNCglNQVJHSU46IDI0cHggNnB4
IDJweDsgV0lEVEg6IDIyMHB4OyBGTE9BVDogbGVmdDsgQ0xFQVI6IG5vbmUN
Cn0NCkRJVi5ib3gyIFAudGVzdG8gew0KCVRFWFQtQUxJR046IGp1c3RpZnk7
IE1BUkdJTjogMnB4IDZweDsgV0lEVEg6IDQwMHB4OyBGTE9BVDogbGVmdDsg
PQ0KSEVJR0hUOiAxMTBweDsgQ0xFQVI6IG5vbmU7IE9WRVJGTE9XOiBoaWRk
ZW4NCn0NCkRJVi5ib3gyIC5wdWxzYW50ZSB7DQoJQk9SREVSLUJPVFRPTTog
bWVkaXVtIG5vbmU7IFBPU0lUSU9OOiBhYnNvbHV0ZTsgVEVYVC1BTElHTjog
Y2VudGVyOyA9DQpCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkct
Qk9UVE9NOiA0cHg7IFBBRERJTkctTEVGVDogNHB4OyA9DQpQQURESU5HLVJJ
R0hUOiA0cHg7IEJBQ0tHUk9VTkQ6ICNmOWE3M2I7IENPTE9SOiAjZmZmOyBC
T1JERVItVE9QOiBtZWRpdW0gPQ0Kbm9uZTsgVE9QOiAxMjZweDsgRk9OVC1X
RUlHSFQ6IGJvbGQ7IEJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7ID0NClBB
RERJTkctVE9QOiA0cHg7IExFRlQ6IDUyMHB4DQp9DQpESVYuYm94MyB7DQoJ
UE9TSVRJT046IHJlbGF0aXZlOyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJH
SU46IDEycHggMjRweCAyNHB4IDBweDsgPQ0KUEFERElORy1MRUZUOiAwcHg7
IFdJRFRIOiAyNDBweDsgUEFERElORy1SSUdIVDogMHB4OyBCQUNLR1JPVU5E
OiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JyYW5k
Ym9vay9ib3gzLmpwZykgbm8tcmVwZWF0OyBGTE9BVDogPQ0KbGVmdDsgSEVJ
R0hUOiAxMjNweDsgQ09MT1I6ICMzMzM7IFBBRERJTkctVE9QOiAwcHgNCn0N
CkRJVi5ib3gzIEg0IHsNCglQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiAx
MTJweDsgQ09MT1I6ICNmODk5MWQ7IFRPUDogNTRweDsgTEVGVDogMTJweA0K
fQ0KRElWLmJveDMgUCB7DQoJUE9TSVRJT046IGFic29sdXRlOyBXSURUSDog
MTEycHg7IENPTE9SOiAjMzMzOyBUT1A6IDEycHg7IEZPTlQtV0VJR0hUOiA9
DQo3MDA7IExFRlQ6IDEycHgNCn0NCkRJVi5ib3gzIElNRyB7DQoJUE9TSVRJ
T046IGFic29sdXRlOyBUT1A6IDBweDsgTEVGVDogMTIwcHgNCn0NCkRJVi5i
b3gxYSB7DQoJUE9TSVRJT046IHJlbGF0aXZlOyBQQURESU5HLUJPVFRPTTog
NHB4OyBNQVJHSU46IDEycHggMHB4OyA9DQpQQURESU5HLUxFRlQ6IDRweDsg
V0lEVEg6IDY3MHB4OyBQQURESU5HLVJJR0hUOiA0cHg7IEJBQ0tHUk9VTkQ6
ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYnJhbmRi
b29rL2JveDFhLmpwZykgbm8tcmVwZWF0OyA9DQpIRUlHSFQ6IDk2cHg7IENP
TE9SOiAjMzMzOyBDTEVBUjogbGVmdDsgUEFERElORy1UT1A6IDRweA0KfQ0K
RElWLmJveDFhIEg0IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46
IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBw
eDsgQ09MT1I6ICNmOTA7IEZPTlQtU0laRTogMTRweDsgUEFERElORy1UT1A6
IDZweA0KfQ0KRElWLmJveDFhIFAgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7
IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgV0lEVEg6IDQ3NHB4
OyA9DQpQQURESU5HLVJJR0hUOiAwcHg7IEZMT0FUOiBsZWZ0OyBDT0xPUjog
I2Y5MDsgRk9OVC1TSVpFOiAxMHB4OyA9DQpQQURESU5HLVRPUDogMHB4DQp9
DQpESVYuYm94MWEgSU1HIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURE
SU5HLUxFRlQ6IDRweDsgUEFERElORy1SSUdIVDogMTJweDsgRkxPQVQ6ID0N
CmxlZnQ7IFBBRERJTkctVE9QOiAzcHgNCn0NCkRJVi5ib3gxYiB7DQoJUE9T
SVRJT046IHJlbGF0aXZlOyBQQURESU5HLUJPVFRPTTogMTJweDsgTUFSR0lO
OiAxMnB4IDBweDsgPQ0KUEFERElORy1MRUZUOiAxMnB4OyBXSURUSDogNjcw
cHg7IFBBRERJTkctUklHSFQ6IDEycHg7IEJBQ0tHUk9VTkQ6ID0NCnVybCho
dHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1tYWdpbmkvYnJhbmRib29rL2JveDFi
LmpwZykgbm8tcmVwZWF0OyA9DQpIRUlHSFQ6IDE2MnB4OyBDT0xPUjogIzMz
MzsgQ0xFQVI6IGxlZnQ7IFBBRERJTkctVE9QOiAxMnB4DQp9DQpESVYuYm94
MWEgVUwgew0KCUxJU1QtU1RZTEUtSU1BR0U6ID0NCnVybChodHRwOi8vd3d3
LmNhcnRhc2kuaXQvSW1tYWdpbmkvYnJhbmRib29rL2J1bGxldFNtYWxsLmdp
Zik7ID0NCk1BUkdJTi1SSUdIVDogMjRweA0KfQ0KRElWLmJveDFiIFVMIHsN
CglMSVNULVNUWUxFLUlNQUdFOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNp
Lml0L0ltbWFnaW5pL2JyYW5kYm9vay9idWxsZXRTbWFsbC5naWYpOyA9DQpN
QVJHSU4tUklHSFQ6IDI0cHgNCn0NCkRJVi5ib3gxYyBVTCB7DQoJTElTVC1T
VFlMRS1JTUFHRTogPQ0KdXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9JbW1h
Z2luaS9icmFuZGJvb2svYnVsbGV0U21hbGwuZ2lmKTsgPQ0KTUFSR0lOLVJJ
R0hUOiAyNHB4DQp9DQpESVYuYm94MWMgew0KCVBPU0lUSU9OOiByZWxhdGl2
ZTsgUEFERElORy1CT1RUT006IDEycHg7IE1BUkdJTjogMTJweCAwcHg7ID0N
ClBBRERJTkctTEVGVDogMTJweDsgV0lEVEg6IDY3MHB4OyBQQURESU5HLVJJ
R0hUOiAxMnB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0
YXNpLml0L0ltbWFnaW5pL2JyYW5kYm9vay9ib3gxYy5qcGcpIG5vLXJlcGVh
dDsgPQ0KSEVJR0hUOiAxNjJweDsgQ09MT1I6ICMzMzM7IENMRUFSOiBsZWZ0
OyBQQURESU5HLVRPUDogMTJweA0KfQ0KRElWLmJveDEgew0KCUJPUkRFUi1C
T1RUT006ICNjY2MgMXB4IHNvbGlkOyBQT1NJVElPTjogcmVsYXRpdmU7IEJP
UkRFUi1MRUZUOiAjY2NjID0NCjFweCBzb2xpZDsgUEFERElORy1CT1RUT006
IDEycHg7IE1BUkdJTjogMTJweCAwcHg7IFBBRERJTkctTEVGVDogMTJweDsg
PQ0KUEFERElORy1SSUdIVDogMTJweDsgQkFDS0dST1VORDogI2Y3ZjdmNzsg
Q09MT1I6ICMzMzM7IENMRUFSOiBsZWZ0OyA9DQpCT1JERVItVE9QOiAjY2Nj
IDFweCBzb2xpZDsgQk9SREVSLVJJR0hUOiAjY2NjIDFweCBzb2xpZDsgUEFE
RElORy1UT1A6ID0NCjEycHgNCn0NCkRJVi5ib3gyIHsNCglQT1NJVElPTjog
cmVsYXRpdmU7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMTJweCAw
cHg7ID0NClBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvaW1h
Z2VzL2JveDIuanBnKSBuby1yZXBlYXQ7IEhFSUdIVDogMTYxcHg7ID0NCkNP
TE9SOiAjMzMzOyBDTEVBUjogbGVmdDsgUEFERElORy1UT1A6IDBweA0KfQ0K
RElWLmJveDIgUC5pbWcgew0KCU1BUkdJTjogMjhweCAxMnB4IDEycHg7IFdJ
RFRIOiAyMjBweDsgRkxPQVQ6IGxlZnQNCn0NCkRJVi5ib3gyIC50aXRvbG8g
ew0KCU1BUkdJTjogMjRweCA2cHggMnB4OyBXSURUSDogMjIwcHg7IEZMT0FU
OiBsZWZ0OyBDTEVBUjogbm9uZQ0KfQ0KRElWLmJveDIgUC50ZXN0byB7DQoJ
VEVYVC1BTElHTjoganVzdGlmeTsgTUFSR0lOOiAycHggNnB4OyBXSURUSDog
NDAwcHg7IEZMT0FUOiBsZWZ0OyA9DQpIRUlHSFQ6IDExMHB4OyBDTEVBUjog
bm9uZTsgT1ZFUkZMT1c6IGhpZGRlbg0KfQ0KRElWLmJveDMgew0KCVBPU0lU
SU9OOiByZWxhdGl2ZTsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAx
MnB4IDI0cHggMjRweCAwcHg7ID0NClBBRERJTkctTEVGVDogMHB4OyBXSURU
SDogMjQwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgQkFDS0dST1VORDogPQ0K
dXJsKGh0dHA6Ly93d3cuY2FydGFzaS5pdC9pbWFnZXMvYm94My5qcGcpIG5v
LXJlcGVhdDsgRkxPQVQ6IGxlZnQ7ID0NCkhFSUdIVDogMTIzcHg7IENPTE9S
OiAjMzMzOyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYuYm94MyBINCB7DQoJ
UE9TSVRJT046IGFic29sdXRlOyBXSURUSDogMTEycHg7IENPTE9SOiAjZjg5
OTFkOyBUT1A6IDU0cHg7IExFRlQ6IDEycHgNCn0NCkRJVi5ib3gzIFAgew0K
CVBPU0lUSU9OOiBhYnNvbHV0ZTsgV0lEVEg6IDExMnB4OyBDT0xPUjogIzMz
MzsgVE9QOiAxMnB4OyBGT05ULVdFSUdIVDogPQ0KNzAwOyBMRUZUOiAxMnB4
DQp9DQpESVYuYm94MyBJTUcgew0KCVBPU0lUSU9OOiBhYnNvbHV0ZTsgVE9Q
OiAwcHg7IExFRlQ6IDEyMHB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCBQLmFj
Y2Vzc28gew0KCVRFWFQtVFJBTlNGT1JNOiB1cHBlcmNhc2U7IE1BUkdJTjog
MTJweCAwcHggMHB4DQp9DQojcGFubmVsbG9Nb3ZlT25IUCBQLmFjY2Vzc28g
QSB7DQoJQk9SREVSLUJPVFRPTTogI2Y5MCAxcHggZG90dGVkOyBCT1JERVIt
TEVGVDogI2Y5MCAwcHggZG90dGVkOyA9DQpQQURESU5HLUJPVFRPTTogNHB4
OyBQQURESU5HLUxFRlQ6IDRweDsgUEFERElORy1SSUdIVDogNHB4OyBDT0xP
UjogI2Y5MDsgPQ0KQk9SREVSLVRPUDogI2Y5MCAwcHggZG90dGVkOyBGT05U
LVdFSUdIVDogYm9sZDsgQk9SREVSLVJJR0hUOiAjZjkwIDBweCA9DQpkb3R0
ZWQ7IFBBRERJTkctVE9QOiA0cHgNCn0NCiNwYW5uZWxsb01vdmVPbkhQIFAu
YWNjZXNzbyBBOmhvdmVyIHsNCglURVhULURFQ09SQVRJT046IG5vbmUNCn0N
CiNzY2hlZGFDYXJ0YSB7DQoJUE9TSVRJT046IHJlbGF0aXZlOyBQQURESU5H
LUJPVFRPTTogMHB4OyBNQVJHSU46IDNweCAwcHggMHB4OyA9DQpQQURESU5H
LUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBCQUNLR1JPVU5EOiAj
ZmZmOyBQQURESU5HLVRPUDogPQ0KMHB4DQp9DQojc2NoZWRhQ2FydGEgSDEu
dGl0b2xvIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxFRlQ6
IDBweDsgUEFERElORy1SSUdIVDogMHB4OyA9DQpQQURESU5HLVRPUDogMnB4
DQp9DQojc2NoZWRhQ2FydGEgSDIudGl0b2xvIHsNCglCT1JERVItQk9UVE9N
OiAjY2NjIDFweCBzb2xpZDsgTUFSR0lOOiAwcHg7IENPTE9SOiAjZjkwOyBG
T05ULVNJWkU6ID0NCjE4cHgNCn0NCiNzY2hlZGFDYXJ0YSBIMy50aXRvbG8g
ew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkctTEVGVDogNDhweDsg
UEFERElORy1SSUdIVDogMHB4OyBDT0xPUjogPQ0KI2Y5MDsgRk9OVC1TSVpF
OiAxNHB4OyBQQURESU5HLVRPUDogMnB4DQp9DQojc2NoZWRhUHJlcGFnYXRh
IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElO
Ry1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6ID0NCjBweDsgQkFDS0dST1VO
RDogI2ZmZjsgUEFERElORy1UT1A6IDBweA0KfQ0KI3NjaGVkYVByZXBhZ2F0
YSBIMS50aXRvbG8gew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IFBBRERJTkct
TEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7ID0NClBBRERJTkctVE9Q
OiAycHgNCn0NCiNzY2hlZGFQcmVwYWdhdGEgSDIudGl0b2xvIHsNCglCT1JE
RVItQk9UVE9NOiAjOTk5IDFweCBzb2xpZDsgUEFERElORy1CT1RUT006IDRw
eDsgTUFSR0lOOiAxMnB4IDBweCA9DQowcHg7IENPTE9SOiAjOTk5DQp9DQoj
c2NoZWRhUHJlcGFnYXRhIEgzLnRpdG9sbyB7DQoJUEFERElORy1CT1RUT006
IDBweDsgUEFERElORy1MRUZUOiA0OHB4OyBQQURESU5HLVJJR0hUOiAwcHg7
IENPTE9SOiA9DQojZjkwOyBGT05ULVNJWkU6IDE0cHg7IFBBRERJTkctVE9Q
OiAycHgNCn0NCkRJVi5zbmFwc2hvdCB7DQoJQk9SREVSLUJPVFRPTTogI2Nj
YyAxcHggc29saWQ7IFBBRERJTkctQk9UVE9NOiAxMnB4OyBNQVJHSU46IDBw
eCAwcHggPQ0KMjRweDsgUEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiA2ODBw
eDsgUEFERElORy1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogPQ0KNnB4DQp9
DQpESVYuc25hcHNob3QgUC5pbWdQcm9kb3R0byB7DQoJTUFSR0lOOiAwcHgg
MHB4IDBweCAtMThweDsgV0lEVEg6IDMyMHB4OyBGTE9BVDogbGVmdA0KfQ0K
RElWLnNuYXBzaG90IFAuY2xhaW1Qcm9kb3R0byB7DQoJTUFSR0lOOiAyMnB4
IDBweCA4MHB4IDEwcHg7IFdJRFRIOiAzNTBweDsgRkxPQVQ6IGxlZnQNCn0N
CkRJVi5zbmFwc2hvdCBQLmRlc2NyaXppb25lIHsNCglQQURESU5HLUJPVFRP
TTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJ
TkctUklHSFQ6ID0NCjBweDsgQ0xFQVI6IGJvdGg7IFBBRERJTkctVE9QOiAw
cHgNCn0NCkRJVi5zbmFwc2hvdCBQLmNhbGxUb0FjdGlvbiB7DQoJUEFERElO
Ry1CT1RUT006IDJweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMTAw
cHg7IFdJRFRIOiAyNzBweDsgPQ0KUEFERElORy1SSUdIVDogMHB4OyBGTE9B
VDogbGVmdDsgUEFERElORy1UT1A6IDM2cHgNCn0NCkRJVi5zbmFwc2hvdCBQ
LmNhbGxUb0FjdGlvbiBBIHsNCglXSURUSDogMTQwcHg7IERJU1BMQVk6IGJs
b2NrOyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0
L0ltbWFnaW5pL3ByZXBhZ2F0ZS9jYWxsVG9BY3Rpb24uanBnKSBuby1yZXBl
YXQgPQ0KbGVmdCB0b3A7IEhFSUdIVDogMzhweA0KfQ0KRElWLnNuYXBzaG90
IFAuY2FsbFRvQWN0aW9uIEEgU1BBTiB7DQoJUE9TSVRJT046IGFic29sdXRl
OyBNQVJHSU4tVE9QOiAtMTAwMHB4DQp9DQpESVYuY2FsbFByb2RvdHRvIHsN
Cj0wOQ0KfQ0KRElWLmNhbGxQcm9kb3R0byBQLmNhbGxQcm9kb3R0byB7DQoJ
TUFSR0lOOiAwcHg7IFdJRFRIOiAzMDBweDsgRkxPQVQ6IGxlZnQNCn0NCkRJ
Vi5jcm9zc1NlbGxpbmcgew0KCUJPUkRFUi1UT1A6ICNjY2MgMXB4IHNvbGlk
DQp9DQpESVYuY3Jvc3NTZWxsaW5nIFAuY3Jvc3NTZWxsaW5nIHsNCj0wOQ0K
fQ0KI3NjaGVkYUNhcnRhIERJVi5ib3hQdXNoIHsNCglQT1NJVElPTjogcmVs
YXRpdmU7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURE
SU5HLUxFRlQ6ID0NCjBweDsgV0lEVEg6IDY0MnB4OyBQQURESU5HLVJJR0hU
OiAwcHg7IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2ku
aXQvSW1tYWdpbmkvY2FydGUvcHVzaENhcnRhLmpwZykgbm8tcmVwZWF0IGxl
ZnQgPQ0KdG9wOyBIRUlHSFQ6IDE2MnB4OyBQQURESU5HLVRPUDogMHB4DQp9
DQojc2NoZWRhQ2FydGEgRElWLmJveFB1c2ggSDMudGl0b2xvIHsNCglQQURE
SU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAx
MnB4OyBQQURESU5HLVJJR0hUOiA9DQowcHg7IFBBRERJTkctVE9QOiAxMnB4
DQp9DQojc2NoZWRhQ2FydGEgRElWLmJveFB1c2ggVUwgew0KPTA5DQp9DQoj
c2NoZWRhQ2FydGEgRElWLmJveFB1c2ggTEkgew0KCU1BUkdJTjogMTJweA0K
fQ0KI3NjaGVkYUNhcnRhIERJVi5ib3hQdXNoIFAgew0KPTA5DQp9DQpESVYj
c2NoZWRhQ2FydGEgVEFCTEUuc3BlY2lmQ2FydGEgew0KCUJPUkRFUi1DT0xM
QVBTRTogY29sbGFwc2U7IFRBQkxFLUxBWU9VVDogZml4ZWQNCn0NCkRJViNz
Y2hlZGFDYXJ0YSBUQUJMRS5zcGVjaWZDYXJ0YSBUSCB7DQoJQk9SREVSLUJP
VFRPTTogc2lsdmVyIDFweCBkb3R0ZWQ7IFBBRERJTkctQk9UVE9NOiA0cHg7
IFBBRERJTkctTEVGVDogPQ0KMnB4OyBQQURESU5HLVJJR0hUOiAycHg7IEZP
TlQtU0laRTogOXB4OyBQQURESU5HLVRPUDogNHB4DQp9DQpESVYjc2NoZWRh
Q2FydGEgVEFCTEUuc3BlY2lmQ2FydGEgVEQgew0KCUJPUkRFUi1CT1RUT006
IHNpbHZlciAxcHggZG90dGVkOyBQQURESU5HLUJPVFRPTTogNHB4OyBQQURE
SU5HLUxFRlQ6ID0NCjJweDsgUEFERElORy1SSUdIVDogMnB4OyBGT05ULVNJ
WkU6IDlweDsgUEFERElORy1UT1A6IDRweA0KfQ0KRElWI3NjaGVkYUNhcnRh
IFRBQkxFLnNwZWNpZkNhcnRhIFREIHsNCglCQUNLR1JPVU5EOiAjZjRmNGY0
DQp9DQpESVYjc2NoZWRhQ2FydGEgVEFCTEUuc3BlY2lmQ2FydGEgVEQgQSB7
DQoJQ09MT1I6ICNmYmE3MzUNCn0NCkRJViNzY2hlZGFDYXJ0YSBUQUJMRS5z
cGVjaWZDYXJ0YSBUSCB7DQoJQk9SREVSLUJPVFRPTTogc2lsdmVyIDFweCBk
b3R0ZWQ7IFRFWFQtQUxJR046IGxlZnQ7IFRFWFQtVFJBTlNGT1JNOiA9DQp1
cHBlcmNhc2U7IFdJRFRIOiAzNDBweDsgQ09MT1I6ICNmOTA7IEZPTlQtV0VJ
R0hUOiBib2xkDQp9DQpESVYjc2NoZWRhQ2FydGEgSDMuaW5mb0NhcnRhIHsN
CglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDRweCAwcHggMTJweDsg
UEFERElORy1MRUZUOiAwcHg7ID0NClBBRERJTkctUklHSFQ6IDBweDsgRk9O
VC1TSVpFOiAxNnB4OyBCT1JERVItVE9QOiBzaWx2ZXIgMXB4IGRvdHRlZDsg
PQ0KUEFERElORy1UT1A6IDI0cHgNCn0NCkRJViNzY2hlZGFDYXJ0YSBINC50
aXRvbG8gew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMjRweCAw
cHggMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgPQ0KUEFERElORy1SSUdIVDog
MHB4OyBQQURESU5HLVRPUDogMHB4DQp9DQpESVYjc2NoZWRhQ2FydGEgVUwg
TEkgU1BBTi5icmFuZCB7DQoJQ09MT1I6ICNmOTA7IEZPTlQtU0laRTogMTBw
eDsgRk9OVC1XRUlHSFQ6IGJvbGQNCn0NCkRJVi5jYWxsUHJvZG90dG8gVUwg
TEkgew0KPTA5DQp9DQpESVYuY2FsbFByb2RvdHRvIEgzLnRpdG9sbyB7DQo9
MDkNCn0NCkRJViNzY2hlZGFDYXJ0YSBUQUJMRS5zcGVjaWZDYXJ0YSBURC5u
b0JnIHsNCglCQUNLR1JPVU5EOiAjZmZmDQp9DQpESVYjc2NoZWRhQ2FydGEg
LnRhYmVsbGFQcm9kb3R0byBVTC5jc3MtdGFicyB7DQoJQk9SREVSLUJPVFRP
TTogI2NjYyAxcHggc29saWQNCn0NCkRJViNzY2hlZGFDYXJ0YSAudGFiZWxs
YVByb2RvdHRvIFVMLmNzcy10YWJzIEEgew0KCUNPTE9SOiAjZjkwDQp9DQpE
SVYjc2NoZWRhQ2FydGEgLnRhYmVsbGFQcm9kb3R0byBVTC5jc3MtdGFicyBB
OmhvdmVyIHsNCglDT0xPUjogIzMzMw0KfQ0KRElWI3NjaGVkYUNhcnRhIC50
YWJlbGxhUHJvZG90dG8gVUwuY3NzLXRhYnMgQS5jdXJyZW50IHsNCglCT1JE
RVItQk9UVE9NOiAjZmZmIDJweCBzb2xpZDsgQkFDS0dST1VORDogI2ZmZjsg
Q09MT1I6ICNmOTANCn0NCiNzY2hlZGFDYXJ0YSAjdGFicyBVTCB7DQoJTUFS
R0lOOiAwcHgNCn0NCi5pbnRybyB7DQoJVEVYVC1UUkFOU0ZPUk06IHVwcGVy
Y2FzZTsgTUFSR0lOOiAxMnB4IDBweCAycHggMXB4OyBXSURUSDogMzYwcHg7
ID0NCkZPTlQ6IDI0cHgvMjRweCAiVHJlYnVjaGV0IE1TIiwgQXJpYWwsIEhl
bHZldGljYSwgc2Fucy1zZXJpZjsgRkxPQVQ6ID0NCmxlZnQ7IENPTE9SOiAj
ZmJhNzM1DQp9DQouc25hcHNob3QgSDEudGl0b2xvIHsNCj0wOQ0KfQ0KLmFk
YXR0YVNlIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBURVhULVRSQU5TRk9S
TTogdXBwZXJjYXNlOyBNQVJHSU46IDBweDsgPQ0KUEFERElORy1MRUZUOiAw
cHg7IFdJRFRIOiAyODBweDsgUEFERElORy1SSUdIVDogMjRweDsgRk9OVDog
MjRweC8yNHB4ID0NCiJUcmVidWNoZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNh
LCBzYW5zLXNlcmlmOyBGTE9BVDogbGVmdDsgQ09MT1I6ID0NCiNmYmE3MzU7
IFBBRERJTkctVE9QOiAwcHgNCn0NCiNzY2hlZGFDYXJ0YSAuY2FsbFByb2Rv
dHRvIC5hZGF0dGFTZSBTVFJPTkcgew0KCVdJRFRIOiAzMDBweDsgRk9OVDog
MjJweCAiQXJpYWwgQmxhY2siLCBHYWRnZXQsIHNhbnMtc2VyaWYNCn0NCiNz
Y2hlZGFDYXJ0YSAuY3Jvc3NTZWxsaW5nIC51cFNlbGxpbmcgew0KCVBPU0lU
SU9OOiBhYnNvbHV0ZTsgVEVYVC1UUkFOU0ZPUk06IHVwcGVyY2FzZTsgTUFS
R0lOOiA2OHB4IDBweCAwcHggPQ0KMjRweDsgRk9OVDogMjBweC8yMHB4ICJU
cmVidWNoZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyA9
DQpDT0xPUjogI2ZiYTczNQ0KfQ0KI3NjaGVkYUNhcnRhIC5jcm9zc1NlbGxp
bmcgLnVwU2VsbGluZyBBIHsNCglGT05UOiAyMHB4LzIwcHggIlRyZWJ1Y2hl
dCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IENPTE9SOiA9
DQojZmJhNzM1DQp9DQojc2NoZWRhQ2FydGEgLmNyb3NzU2VsbGluZyAudXBT
ZWxsaW5nIFNUUk9ORyB7DQoJRk9OVC1GQU1JTFk6ICJBcmlhbCBCbGFjayIs
IEdhZGdldCwgc2Fucy1zZXJpZg0KfQ0KLnByZW1pdW0gew0KCUJPUkRFUi1D
T0xMQVBTRTogY29sbGFwc2UNCn0NCi5wcmVtaXVtIFRSIFRIIHsNCglCT1JE
RVItQk9UVE9NOiAjOTk5IDFweCBzb2xpZDsgUEFERElORy1CT1RUT006IDIy
cHg7IFBBRERJTkctTEVGVDogPQ0KMjJweDsgUEFERElORy1SSUdIVDogMjJw
eDsgUEFERElORy1UT1A6IDIycHgNCn0NCi5wcmVtaXVtIFRSIFREIHsNCglC
T1JERVItQk9UVE9NOiAjOTk5IDFweCBzb2xpZDsgUEFERElORy1CT1RUT006
IDIycHg7IFBBRERJTkctTEVGVDogPQ0KMjJweDsgUEFERElORy1SSUdIVDog
MjJweDsgUEFERElORy1UT1A6IDIycHgNCn0NCi5wYXJ0bmVyIHsNCglQT1NJ
VElPTjogcmVsYXRpdmU7IE1BUkdJTjogNnB4IDBweCAxMnB4IDMwcHg7IFdJ
RFRIOiAyMzhweDsgPQ0KQkFDS0dST1VORDogdXJsKGh0dHA6Ly93d3cuY2Fy
dGFzaS5pdC9pb1NpMjAxMC9pbWFnZXMvYm94UGFydG5lci5naWYpID0NCm5v
LXJlcGVhdCBsZWZ0IHRvcDsgRkxPQVQ6IGxlZnQ7IEhFSUdIVDogMTIycHgN
Cn0NCi5wYXJ0bmVyIFAubG9nb1BhcnRuZXIgew0KCVBPU0lUSU9OOiBhYnNv
bHV0ZTsgVE9QOiAzcHg7IExFRlQ6IDEzMXB4DQp9DQoucGFydG5lciBQLm5v
bWVQYXJ0bmVyIHsNCglQT1NJVElPTjogYWJzb2x1dGU7IFRFWFQtQUxJR046
IGxlZnQ7IFdJRFRIOiAxMTRweDsgRk9OVDogYm9sZCAxMXB4ID0NCiJUcmVi
dWNoZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBUT1A6
IDBweDsgTEVGVDogOXB4DQp9DQoucGFydG5lciBQLm5vbWVQYXJ0bmVyIFNQ
QU4gew0KCUZPTlQtU1RZTEU6IGl0YWxpYzsgRk9OVC1XRUlHSFQ6IDQwMA0K
fQ0KLnBhcnRuZXIgUC5kZXNjT2ZmZXJ0YSB7DQoJUE9TSVRJT046IGFic29s
dXRlOyBURVhULUFMSUdOOiBsZWZ0OyBXSURUSDogMTE5cHg7IEZPTlQ6IGJv
bGQgMTFweCA9DQoiVHJlYnVjaGV0IE1TIiwgQXJpYWwsIEhlbHZldGljYSwg
c2Fucy1zZXJpZjsgVE9QOiA2OHB4OyBMRUZUOiA5cHgNCn0NCi5wYXJ0bmVy
IFAuZGVzY09mZmVydGEgQSB7DQoJRElTUExBWTogYmxvY2sNCn0NCkRJVi5w
cmVwYWdhdGUgew0KCUJBQ0tHUk9VTkQ6ICNmZmYNCn0NCkRJVi5wcmVwYWdh
dGUgVEFCTEUuY29tcGFyYXRpdmEgew0KCUJPUkRFUi1DT0xMQVBTRTogY29s
bGFwc2U7IEJBQ0tHUk9VTkQ6ICNmZmYNCn0NCkRJVi5wcmVwYWdhdGUgVEFC
TEUuY29tcGFyYXRpdmEgVEggew0KCUJPUkRFUi1CT1RUT006IHNpbHZlciAx
cHggZG90dGVkOyBQQURESU5HLUJPVFRPTTogNHB4OyBQQURESU5HLUxFRlQ6
ID0NCjhweDsgUEFERElORy1SSUdIVDogOHB4OyBQQURESU5HLVRPUDogNHB4
DQp9DQpESVYucHJlcGFnYXRlIFRBQkxFLmNvbXBhcmF0aXZhIFREIHsNCglC
T1JERVItQk9UVE9NOiBzaWx2ZXIgMXB4IGRvdHRlZDsgUEFERElORy1CT1RU
T006IDRweDsgUEFERElORy1MRUZUOiA9DQo4cHg7IFBBRERJTkctUklHSFQ6
IDhweDsgUEFERElORy1UT1A6IDRweA0KfQ0KRElWLnByZXBhZ2F0ZSBUQUJM
RS5jb21wYXJhdGl2YSBUSEVBRCB7DQoJVEVYVC1BTElHTjogbGVmdA0KfQ0K
RElWLnByZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSBUSEVBRCBUSCB7DQoJ
VEVYVC1BTElHTjogbGVmdA0KfQ0KRElWLnByZXBhZ2F0ZSBUQUJMRS5jb21w
YXJhdGl2YSAubm9ybWFsZSB7DQoJQkFDS0dST1VORDogI2ZmZg0KfQ0KRElW
LnByZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSAuZXZpZGVuemEgew0KCUJB
Q0tHUk9VTkQ6ICNlZWUNCn0NCkRJVi5wcmVwYWdhdGUgVEFCTEUuY29tcGFy
YXRpdmEgLm5vcm1hbGUgVEggew0KCUJBQ0tHUk9VTkQ6ICNmZmY7IENPTE9S
OiAjMDAwOyBCT1JERVItUklHSFQ6IHNpbHZlciAxcHggZG90dGVkDQp9DQpE
SVYucHJlcGFnYXRlIFRBQkxFLmNvbXBhcmF0aXZhIC5ldmlkZW56YSBUSCB7
DQoJQkFDS0dST1VORDogI2VlZTsgQk9SREVSLVJJR0hUOiBzaWx2ZXIgMXB4
IGRvdHRlZA0KfQ0KRElWLnByZXBhZ2F0ZSBUQUJMRS5jb21wYXJhdGl2YSAu
bm9ybWFsZSBURCB7DQoJQkFDS0dST1VORDogI2ZmZg0KfQ0KRElWLnByZXBh
Z2F0ZSBUQUJMRS5jb21wYXJhdGl2YSAuZXZpZGVuemEgVEQgew0KCUJBQ0tH
Uk9VTkQ6ICNlZWUNCn0NCkRJVi5wcmVwYWdhdGUgVEFCTEUuY29tcGFyYXRp
dmEgLm5vcm1hbGUgVEQudW5pY2Egew0KCUJBQ0tHUk9VTkQ6ICNmZmYNCn0N
CkRJVi5wcmVwYWdhdGUgVEFCTEUuY29tcGFyYXRpdmEgLmV2aWRlbnphIFRE
LnVuaWNhIHsNCglCQUNLR1JPVU5EOiAjZWVlDQp9DQpESVYuYW5vbmltZSB7
DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkct
TEVGVDogMHB4OyBXSURUSDogMzM1cHg7ID0NClBBRERJTkctUklHSFQ6IDBw
eDsgRkxPQVQ6IGxlZnQ7IFBBRERJTkctVE9QOiAwcHgNCn0NCkRJVi5ub21p
bmF0aXZlIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsg
UEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiAzMzVweDsgPQ0KUEFERElORy1S
SUdIVDogMHB4OyBGTE9BVDogbGVmdDsgUEFERElORy1UT1A6IDBweA0KfQ0K
RElWLmFub25pbWUgSDQgew0KCU1BUkdJTjogMHB4IDBweCAwcHggMTJweDsg
Q09MT1I6ICNmOTA7IEZPTlQtU0laRTogMTRweA0KfQ0KRElWLm5vbWluYXRp
dmUgSDQgew0KCU1BUkdJTjogMHB4IDBweCAwcHggMTJweDsgQ09MT1I6ICNm
OTA7IEZPTlQtU0laRTogMTRweA0KfQ0KRElWI3ByZXBhZ2F0ZSBESVYuYm94
MWEgew0KCVBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogOHB4IDBweDsg
UEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiA2NzBweDsgPQ0KUEFERElORy1S
SUdIVDogMHB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0
YXNpLml0L0ltbWFnaW5pL2JyYW5kYm9vay9ib3gxYi5qcGcpIG5vLXJlcGVh
dDsgPQ0KSEVJR0hUOiAxNjJweDsgUEFERElORy1UT1A6IDBweA0KfQ0KRElW
I3ByZXBhZ2F0ZSBESVYuYm94MWEgSDQudGl0b2xvIHsNCglQQURESU5HLUJP
VFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBB
RERJTkctUklHSFQ6ID0NCjBweDsgUEFERElORy1UT1A6IDEwcHgNCn0NCkRJ
ViNwcmVwYWdhdGUgRElWLmJveDFhIElNRyB7DQoJUEFERElORy1CT1RUT006
IDE2cHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDE2cHg7IFBBRERJ
TkctUklHSFQ6ID0NCjE2cHg7IFBBRERJTkctVE9QOiAxNnB4DQp9DQpESVYj
cHJlcGFnYXRlIERJVi5ib3gxYSBMSSB7DQoJTUFSR0lOOiA2cHggMTZweCA2
cHggMTQ2cHgNCn0NCiogSDMgQSB7DQoJVEVYVC1UUkFOU0ZPUk06IHVwcGVy
Y2FzZTsgQ09MT1I6ICNmNjM7IEZPTlQtU0laRTogMTJweDsgRk9OVC1XRUlH
SFQ6ID0NCmJvbGQNCn0NCiNwYW5uZWxsb01vdmVPbkhQICNtb3ZlT24gSDMg
QSB7DQoJVEVYVC1UUkFOU0ZPUk06IGxvd2VyY2FzZTsgTUFSR0lOOiAwcHgg
MHB4IDBweCA2cHgNCn0NCkEgew0KCU9VVExJTkUtU1RZTEU6IG5vbmU7IE9V
VExJTkUtQ09MT1I6IGludmVydDsgT1VUTElORS1XSURUSDogbWVkaXVtDQp9
DQpBOmhvdmVyIHsNCglCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgQk9S
REVSLUxFRlQ6IG1lZGl1bSBub25lOyBCT1JERVItVE9QOiA9DQptZWRpdW0g
bm9uZTsgQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZQ0KfQ0KQTphY3RpdmUg
ew0KCUJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lOyBCT1JERVItTEVGVDog
bWVkaXVtIG5vbmU7IEJPUkRFUi1UT1A6ID0NCm1lZGl1bSBub25lOyBCT1JE
RVItUklHSFQ6IG1lZGl1bSBub25lDQp9DQpBOmZvY3VzIHsNCglCT1JERVIt
Qk9UVE9NOiBtZWRpdW0gbm9uZTsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25l
OyBCT1JERVItVE9QOiA9DQptZWRpdW0gbm9uZTsgQk9SREVSLVJJR0hUOiBt
ZWRpdW0gbm9uZQ0KfQ0KOmZvY3VzIHsNCgktbW96LW91dGxpbmUtc3R5bGU6
IG5vbmUNCn0NCkRJVi5ib3hQdXNoRGluYW1peiB7DQoJV0lEVEg6IDY0MXB4
OyBNQVJHSU4tQk9UVE9NOiAyNHB4OyBCQUNLR1JPVU5EOiA9DQp1cmwoaHR0
cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JveFB1c2hEaW5hbWl6Lmpw
Zykgbm8tcmVwZWF0IGxlZnQgPQ0KdG9wOyBIRUlHSFQ6IDEzMnB4DQp9DQpE
SVYuYm94UHVzaERpbmFtaXogSDMgew0KPTA5DQp9DQpESVYuYm94UHVzaERp
bmFtaXogSDMgU1BBTiB7DQoJUE9TSVRJT046IGFic29sdXRlOyBNQVJHSU4t
VE9QOiAtMTAwMHB4DQp9DQpESVYuYm94UHVzaERpbmFtaXogUCB7DQoJUEFE
RElORy1CT1RUT006IDBweDsgUEFERElORy1MRUZUOiAxNjhweDsgUEFERElO
Ry1SSUdIVDogMTJweDsgPQ0KUEFERElORy1UT1A6IDYwcHgNCn0NCkgzLnJl
Y2FsbERpbmFtIHsNCglNQVJHSU4tVE9QOiA0MnB4OyBXSURUSDogNjcwcHg7
IEJBQ0tHUk9VTkQ6ID0NCnVybChodHRwOi8vd3d3LmNhcnRhc2kuaXQvSW1t
YWdpbmkvcmVjYWxsRGluYW0uZ2lmKSBuby1yZXBlYXQgbGVmdCB0b3A7ID0N
CkhFSUdIVDogNzJweA0KfQ0KSDMucmVjYWxsRGluYW0gU1BBTiB7DQoJUE9T
SVRJT046IGFic29sdXRlOyBNQVJHSU4tVE9QOiAtMTAwMHB4DQp9DQouYXNz
aWN1cmF6aW9uaSBIMiB7DQoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lO
OiAwcHg7IFBBRERJTkctTEVGVDogOHB4OyBQQURESU5HLVJJR0hUOiA9DQow
cHg7IEZPTlQ6IGJvbGQgMTZweC8zMnB4ICJUcmVidWNoZXQgTVMiLCBBcmlh
bCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyA9DQpCQUNLR1JPVU5EOiB1cmwo
aHR0cDovL3d3dy5jYXJ0YXNpLml0L2lvU2kyMDEwL2ltYWdlcy9iZ0gzLmdp
ZikgPQ0Kbm8tcmVwZWF0IGxlZnQgY2VudGVyOyBIRUlHSFQ6IDMycHg7IENP
TE9SOiAjZjkwOyBQQURESU5HLVRPUDogMHB4DQp9DQojdmFudGFnZ2lDYXJ0
YSAjYWNjb3JkaW9uIFVMIHsNCglMSVNULVNUWUxFLVRZUEU6IG5vbmU7IExJ
U1QtU1RZTEUtSU1BR0U6IG5vbmUNCn0NCiN2YW50YWdnaUNhcnRhICNhY2Nv
cmRpb24gSDMgew0KCVBBRERJTkctTEVGVDogNjBweA0KfQ0KI3ZhbnRhZ2dp
Q2FydGEgI2FjY29yZGlvbiBIMyBJTUcgew0KCVBPU0lUSU9OOiBhYnNvbHV0
ZTsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkct
TEVGVDogPQ0KMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IFRPUDogMXB4OyBQ
QURESU5HLVRPUDogMHB4OyBMRUZUOiAycHgNCn0NCiN2YW50YWdnaUNhcnRh
ICNhY2NvcmRpb24gSDMudGl0b2xvIHsNCglNQVJHSU46IDZweCAwcHggMHB4
DQp9DQpESVYuYm94d2lkZSB7DQoJV0lEVEg6IDY2MHB4OyBCQUNLR1JPVU5E
OiA9DQp1cmwoaHR0cDovL3d3dy5jYXJ0YXNpLml0L0ltbWFnaW5pL2JnX2Jv
eHdpZGUuanBnKSBuby1yZXBlYXQgbGVmdCB0b3A7ID0NCkhFSUdIVDogMTI1
cHgNCn0NCkRJVi5ib3h3aWRlIEgzIHsNCglQQURESU5HLUJPVFRPTTogMHB4
OyBQQURESU5HLUxFRlQ6IDhweDsgUEFERElORy1SSUdIVDogOHB4OyBDT0xP
UjogPQ0KI2Y5MDsgRk9OVC1TSVpFOiAxOHB4OyBQQURESU5HLVRPUDogMTRw
eA0KfQ0KRElWLmJveHdpZGUgUCB7DQoJUEFERElORy1CT1RUT006IDBweDsg
UEFERElORy1MRUZUOiA4cHg7IFBBRERJTkctUklHSFQ6IDhweDsgQ09MT1I6
ID0NCiM2NjY7IEZPTlQtU0laRTogMTFweDsgUEFERElORy1UT1A6IDEycHgN
Cn0NCi5yaWNhcmljaGVMaXN0IHsNCglCT1JERVItQk9UVE9NLVNUWUxFOiBu
b25lOyBQQURESU5HLUJPVFRPTTogMHB4OyBCT1JERVItUklHSFQtU1RZTEU6
ID0NCm5vbmU7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgV0lE
VEg6IDY3MnB4OyBQQURESU5HLVJJR0hUOiAwcHg7ID0NCkJPUkRFUi1DT0xM
QVBTRTogY29sbGFwc2U7IEZPTlQ6IDEycHggIlRyZWJ1Y2hldCBNUyIsIEFy
aWFsLCBIZWx2ZXRpY2EsID0NCnNhbnMtc2VyaWY7IEJPUkRFUi1UT1AtU1RZ
TEU6IG5vbmU7IFRBQkxFLUxBWU9VVDogZml4ZWQ7ID0NCkJPUkRFUi1MRUZU
LVNUWUxFOiBub25lOyBQQURESU5HLVRPUDogMHB4DQp9DQoucmljYXJpY2hl
TGlzdCBURC5vZmZlcnRhIHsNCglXSURUSDogMjEwcHg7IENPTE9SOiAjZWY5
ZDFkOyBGT05ULVNJWkU6IDE0cHg7IEZPTlQtV0VJR0hUOiBib2xkDQp9DQou
cmljYXJpY2hlTGlzdCBUSCB7DQoJQk9SREVSLUJPVFRPTTogI2UyZTJlMiAy
cHggc29saWQ7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyA9
DQpQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBQQURE
SU5HLVRPUDogMHB4DQp9DQoucmljYXJpY2hlTGlzdCBUUiAubG9naGkgew0K
CVRFWFQtQUxJR046IGNlbnRlcjsgUEFERElORy1CT1RUT006IDBweDsgTUFS
R0lOOiAwcHg7IFBBRERJTkctTEVGVDogPQ0KMHB4OyBXSURUSDogMTg1cHg7
IFBBRERJTkctUklHSFQ6IDBweDsgUEFERElORy1UT1A6IDBweA0KfQ0KLnJp
Y2FyaWNoZUxpc3QgLmFsdCB7DQoJQkFDS0dST1VORDogI2Y0ZjRmNA0KfQ0K
LnJpY2FyaWNoZUxpc3QgVEggew0KCUJPUkRFUi1CT1RUT006ICNlMmUyZTIg
MnB4IHNvbGlkOyBURVhULUFMSUdOOiBsZWZ0OyBQQURESU5HLUJPVFRPTTog
PQ0KMjJweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMTJweDsgUEFE
RElORy1SSUdIVDogMTJweDsgQ09MT1I6ICM2NjY7ID0NCkZPTlQtU0laRTog
MTJweDsgVkVSVElDQUwtQUxJR046IG1pZGRsZTsgRk9OVC1XRUlHSFQ6IGJv
bGQ7ID0NCkJPUkRFUi1SSUdIVDogI2UyZTJlMiAxcHggc29saWQ7IFBBRERJ
TkctVE9QOiAyMnB4DQp9DQoucmljYXJpY2hlTGlzdCBURCB7DQoJQk9SREVS
LUJPVFRPTTogI2UyZTJlMiAycHggc29saWQ7IFRFWFQtQUxJR046IGxlZnQ7
IFBBRERJTkctQk9UVE9NOiA9DQoyMnB4OyBNQVJHSU46IDBweDsgUEFERElO
Ry1MRUZUOiAxMnB4OyBQQURESU5HLVJJR0hUOiAxMnB4OyBDT0xPUjogIzY2
NjsgPQ0KRk9OVC1TSVpFOiAxMnB4OyBWRVJUSUNBTC1BTElHTjogbWlkZGxl
OyBGT05ULVdFSUdIVDogYm9sZDsgPQ0KQk9SREVSLVJJR0hUOiAjZTJlMmUy
IDFweCBzb2xpZDsgUEFERElORy1UT1A6IDIycHgNCn0NCi5yaWNhcmljaGVM
aXN0IFRSIC5oZWFkZXIgew0KCVRFWFQtQUxJR046IGNlbnRlcjsgUEFERElO
Ry1CT1RUT006IDBweDsgUEFERElORy1MRUZUOiAwcHg7ID0NClBBRERJTkct
UklHSFQ6IDBweDsgSEVJR0hUOiA2MHB4OyBDT0xPUjogIzMzMzsgRk9OVC1T
SVpFOiAxNHB4OyA9DQpWRVJUSUNBTC1BTElHTjogbWlkZGxlOyBQQURESU5H
LVRPUDogMzJweA0KfQ0KLmhlbHBMb2dpbiBJTUcgew0KCUJPUkRFUi1CT1RU
T006IHJlZCAxcHggZG90dGVkOyBCT1JERVItTEVGVDogcmVkIDFweCBkb3R0
ZWQ7IE1BUkdJTjogPQ0KMTJweDsgRkxPQVQ6IGxlZnQ7IEJPUkRFUi1UT1A6
IHJlZCAxcHggZG90dGVkOyBCT1JERVItUklHSFQ6IHJlZCAxcHggPQ0KZG90
dGVkDQp9DQouYm94d2lkZSBTUEFOLmV2aWRlbnphMSB7DQoJUEFERElORy1C
T1RUT006IDEycHg7IFBBRERJTkctTEVGVDogMTJweDsgUEFERElORy1SSUdI
VDogMTJweDsgQ09MT1I6ID0NCiMzMzM7IEZPTlQtU0laRTogMTBweDsgUEFE
RElORy1UT1A6IDEycHgNCn0NCi5ib3h3aWRlIFNQQU4uZXZpZGVuemExIFNU
Uk9ORyB7DQoJQ09MT1I6ICNmOTANCn0NCi5ib3h3aWRlIFNQQU4uZXZpZGVu
emEyIHsNCglQQURESU5HLUJPVFRPTTogMTJweDsgUEFERElORy1MRUZUOiAx
MnB4OyBQQURESU5HLVJJR0hUOiAxMnB4OyBDT0xPUjogPQ0KIzMzMzsgRk9O
VC1TSVpFOiAxMHB4OyBQQURESU5HLVRPUDogMTJweA0KfQ0KLmJveHdpZGUg
U1BBTi5ldmlkZW56YTIgU1RST05HIHsNCglDT0xPUjogI2Y5MA0KfQ0KLmJv
eHdpZGUgRElWIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURESU5HLUxF
RlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyA9DQpQQURESU5HLVRPUDog
MjJweA0KfQ0KDQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0MyMThF
LjNCRjI3NUMwDQpDb250ZW50LVR5cGU6IHRleHQvY3NzOw0KCWNoYXJzZXQ9
Imlzby04ODU5LTEiDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90
ZWQtcHJpbnRhYmxlDQpDb250ZW50LUxvY2F0aW9uOiBodHRwOi8vd3d3LmNh
cnRhc2kuaXQvZ3JleWJveC9nYl9zdHlsZXMuY3NzDQoNCiNHQl9vdmVybGF5
IHsNCglaLUlOREVYOiAxMDA7IFBPU0lUSU9OOiBhYnNvbHV0ZTsgQkFDS0dS
T1VORC1DT0xPUjogIzAwMDsgTUFSR0lOOiBhdXRvOyA9DQpUT1A6IDBweDsg
TEVGVDogMHB4DQp9DQojR0Jfd2luZG93IHsNCglaLUlOREVYOiAxNTA7IFBP
U0lUSU9OOiBhYnNvbHV0ZTsgRk9OVC1TSVpFOiAxcHg7IE9WRVJGTE9XOiB2
aXNpYmxlOyA9DQpUT1A6IDBweDsgTEVGVDogMHB4DQp9DQojR0Jfd2luZG93
IC5jb250ZW50IHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBw
eDsgUEFERElORy1MRUZUOiAwcHg7IFdJRFRIOiBhdXRvOyA9DQpQQURESU5H
LVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCiNHQl9mcmFtZSB7
DQoJQk9SREVSLUJPVFRPTTogMHB4OyBCT1JERVItTEVGVDogMHB4OyBQQURE
SU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgPQ0KUEFERElORy1MRUZU
OiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgV0hJVEUtU1BBQ0U6IG5vd3Jh
cDsgT1ZFUkZMT1c6ID0NCmF1dG87IEJPUkRFUi1UT1A6IDBweDsgQk9SREVS
LVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgNCn0NCi5HQl9HYWxsZXJ5
IHsNCglNQVJHSU46IDBweCAyMnB4DQp9DQouR0JfR2FsbGVyeSAuY29udGVu
dCB7DQoJQk9SREVSLUJPVFRPTTogI2RkZCAzcHggc29saWQ7IEJPUkRFUi1M
RUZUOiAjZGRkIDNweCBzb2xpZDsgPQ0KQkFDS0dST1VORC1DT0xPUjogI2Zm
ZjsgQk9SREVSLVRPUDogI2RkZCAzcHggc29saWQ7IEJPUkRFUi1SSUdIVDog
I2RkZCA9DQozcHggc29saWQNCn0NCi5HQl9oZWFkZXIgew0KCVotSU5ERVg6
IDUwMDsgQk9SREVSLUJPVFRPTTogIzU1NSAycHggc29saWQ7IFBPU0lUSU9O
OiBhYnNvbHV0ZTsgPQ0KTUFSR0lOOiAwcHg7IEJPUkRFUi1UT1A6ICM1NTUg
MnB4IHNvbGlkOyBUT1A6IDEwcHg7IExFRlQ6IDBweA0KfQ0KLkdCX2hlYWRl
ciAuaW5uZXIgew0KCVBBRERJTkctQk9UVE9NOiAycHg7IEJBQ0tHUk9VTkQt
Q09MT1I6ICMzMzM7IFBBRERJTkctTEVGVDogMjBweDsgPQ0KUEFERElORy1S
SUdIVDogMjBweDsgRk9OVC1GQU1JTFk6IEFyaWFsLCBWZXJkYW5hLCBzYW5z
LXNlcmlmOyA9DQpQQURESU5HLVRPUDogMnB4DQp9DQouR0JfaGVhZGVyIFRB
QkxFIHsNCglNQVJHSU46IDBweDsgV0lEVEg6IDEwMCU7IEJPUkRFUi1DT0xM
QVBTRTogY29sbGFwc2UNCn0NCi5HQl9oZWFkZXIgLmNhcHRpb24gew0KCVRF
WFQtQUxJR046IGxlZnQ7IFdISVRFLVNQQUNFOiBub3dyYXA7IENPTE9SOiAj
ZWVlOyBGT05ULVNJWkU6IDIwcHgNCn0NCi5HQl9oZWFkZXIgLmNsb3NlIHsN
CglURVhULUFMSUdOOiByaWdodA0KfQ0KLkdCX2hlYWRlciAuY2xvc2UgSU1H
IHsNCglaLUlOREVYOiA1MDA7IENVUlNPUjogcG9pbnRlcg0KfQ0KLkdCX2hl
YWRlciAubWlkZGxlIHsNCglURVhULUFMSUdOOiBjZW50ZXI7IFdISVRFLVNQ
QUNFOiBub3dyYXANCn0NCiNHQl9taWRkbGUgew0KCUNPTE9SOiAjZWVlDQp9
DQojR0JfbWlkZGxlIElNRyB7DQoJVkVSVElDQUwtQUxJR046IG1pZGRsZTsg
Q1VSU09SOiBwb2ludGVyDQp9DQojR0JfbWlkZGxlIC5kaXNhYmxlZCB7DQoJ
Q1VSU09SOiBkZWZhdWx0DQp9DQojR0JfbWlkZGxlIC5sZWZ0IHsNCglQQURE
SU5HLVJJR0hUOiAxMHB4DQp9DQojR0JfbWlkZGxlIC5yaWdodCB7DQoJUEFE
RElORy1MRUZUOiAxMHB4DQp9DQouR0JfV2luZG93IC5jb250ZW50IHsNCglC
T1JERVItQk9UVE9NOiAjY2NjIDNweCBzb2xpZDsgQk9SREVSLUxFRlQ6ICNj
Y2MgM3B4IHNvbGlkOyA9DQpCQUNLR1JPVU5ELUNPTE9SOiAjZmZmOyBCT1JE
RVItVE9QOiBtZWRpdW0gbm9uZTsgQk9SREVSLVJJR0hUOiAjY2NjIDNweCA9
DQpzb2xpZA0KfQ0KLkdCX1dpbmRvdyAuaGVhZGVyIHsNCglCT1JERVItQk9U
VE9NOiAjYWFhIDFweCBzb2xpZDsgQk9SREVSLUxFRlQ6ICNjY2MgM3B4IHNv
bGlkOyA9DQpQQURESU5HLUJPVFRPTTogM3B4OyBNQVJHSU46IDBweDsgUEFE
RElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgPQ0KSEVJR0hU
OiAyMnB4OyBDT0xPUjogIzMzMzsgRk9OVC1TSVpFOiAxMnB4OyBCT1JERVIt
VE9QOiAjOTk5IDFweCBzb2xpZDsgPQ0KQk9SREVSLVJJR0hUOiAjY2NjIDNw
eCBzb2xpZDsgUEFERElORy1UT1A6IDNweA0KfQ0KLkdCX1dpbmRvdyAuY2Fw
dGlvbiB7DQoJVEVYVC1BTElHTjogbGVmdDsgUEFERElORy1SSUdIVDogMjBw
eDsgV0hJVEUtU1BBQ0U6IG5vd3JhcDsgRk9OVC1TSVpFOiA9DQoxMnB4OyBG
T05ULVdFSUdIVDogYm9sZA0KfQ0KLkdCX1dpbmRvdyAuY2xvc2Ugew0KCVRF
WFQtQUxJR046IHJpZ2h0DQp9DQouR0JfV2luZG93IC5jbG9zZSBTUEFOIHsN
CglGT05ULVNJWkU6IDEycHg7IENVUlNPUjogcG9pbnRlcg0KfQ0KLkdCX1dp
bmRvdyAuY2xvc2UgSU1HIHsNCglQQURESU5HLUJPVFRPTTogMHB4OyBQQURE
SU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogM3B4OyBDVVJTT1I6ID0N
CnBvaW50ZXI7IFBBRERJTkctVE9QOiAwcHgNCn0NCi5HQl9XaW5kb3cgLm9u
IHsNCglCT1JERVItQk9UVE9NOiAjMzMzIDFweCBzb2xpZA0KfQ0KLkdCX1dp
bmRvdyAuY2xpY2sgew0KCUJPUkRFUi1CT1RUT006IHJlZCAxcHggc29saWQN
Cn0NCg0KLS0tLS0tPV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDMjE4RS4zQkYy
NzVDMA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0N
CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUN
CkNvbnRlbnQtTG9jYXRpb246IGh0dHA6Ly93d3cuY2FydGFzaS5pdC9qYXZh
c2NyaXB0L2pxdWVyeS5qcw0KDQovKiENCiAqIGpRdWVyeSBKYXZhU2NyaXB0
IExpYnJhcnkgdjEuNC4yDQogKiBodHRwOi8vanF1ZXJ5LmNvbS8NCiAqDQog
KiBDb3B5cmlnaHQgMjAxMCwgSm9obiBSZXNpZw0KICogRHVhbCBsaWNlbnNl
ZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuDQog
KiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlDQogKg0KICogSW5jbHVkZXMg
U2l6emxlLmpzDQogKiBodHRwOi8vc2l6emxlanMuY29tLw0KICogQ29weXJp
Z2h0IDIwMTAsIFRoZSBEb2pvIEZvdW5kYXRpb24NCiAqIFJlbGVhc2VkIHVu
ZGVyIHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4NCiAqDQogKiBE
YXRlOiBTYXQgRmViIDEzIDIyOjMzOjQ4IDIwMTAgLTA1MDANCiAqLw0KKGZ1
bmN0aW9uIChBLCB3KSB7DQogICAgZnVuY3Rpb24gbWEoKSB7DQogICAgICAg
IGlmICghYy5pc1JlYWR5KSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAg
ICAgICAgICAgIHMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0IikN
CiAgICAgICAgICAgIH0gY2F0Y2ggKGEpIHsNCiAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KG1hLCAxKTsNCiAgICAgICAgICAgICAgICByZXR1cm4NCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIGMucmVhZHkoKQ0KICAgICAgICB9
DQogICAgfQ0KICAgIGZ1bmN0aW9uIFFhKGEsIGIpIHsNCiAgICAgICAgYi5z
cmMgPyBjLmFqYXgoew0KICAgICAgICAgICAgdXJsOiBiLnNyYywNCiAgICAg
ICAgICAgIGFzeW5jOiBmYWxzZSwNCiAgICAgICAgICAgIGRhdGFUeXBlOiAi
c2NyaXB0Ig0KICAgICAgICB9KSA6IGMuZ2xvYmFsRXZhbChiLnRleHQgfHwg
Yi50ZXh0Q29udGVudCB8fCBiLmlubmVySFRNTCB8fCAiIik7DQogICAgICAg
IGIucGFyZW50Tm9kZSAmJiBiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikN
CiAgICB9DQogICAgZnVuY3Rpb24gWChhLCBiLCBkLCBmLCBlLCBqKSB7DQog
ICAgICAgIHZhciBpID0zRCBhLmxlbmd0aDsNCiAgICAgICAgaWYgKHR5cGVv
ZiBiID0zRD0zRD0zRCAib2JqZWN0Iikgew0KICAgICAgICAgICAgZm9yICh2
YXIgbyBpbiBiKSBYKGEsIG8sIGJbb10sIGYsIGUsIGQpOw0KICAgICAgICAg
ICAgcmV0dXJuIGENCiAgICAgICAgfQ0KICAgICAgICBpZiAoZCAhPTNEPTNE
IHcpIHsNCiAgICAgICAgICAgIGYgPTNEICFqICYmIGYgJiYgYy5pc0Z1bmN0
aW9uKGQpOw0KICAgICAgICAgICAgZm9yIChvID0zRCAwOyBvIDwgaTsgbysr
KSBlKGFbb10sIGIsIGYgPyBkLmNhbGwoYVtvXSwgbywgPQ0KZShhW29dLCBi
KSkgOiBkLCBqKTsNCiAgICAgICAgICAgIHJldHVybiBhDQogICAgICAgIH0N
CiAgICAgICAgcmV0dXJuIGkgPyBlKGFbMF0sIGIpIDogdw0KICAgIH0NCiAg
ICBmdW5jdGlvbiBKKCkgew0KICAgICAgICByZXR1cm4gKG5ldyBEYXRlKS5n
ZXRUaW1lKCkNCiAgICB9DQogICAgZnVuY3Rpb24gWSgpIHsNCiAgICAgICAg
cmV0dXJuIGZhbHNlDQogICAgfQ0KICAgIGZ1bmN0aW9uIFooKSB7DQogICAg
ICAgIHJldHVybiB0cnVlDQogICAgfQ0KICAgIGZ1bmN0aW9uIG5hKGEsIGIs
IGQpIHsNCiAgICAgICAgZFswXS50eXBlID0zRCBhOw0KICAgICAgICByZXR1
cm4gYy5ldmVudC5oYW5kbGUuYXBwbHkoYiwgZCkNCiAgICB9DQogICAgZnVu
Y3Rpb24gb2EoYSkgew0KICAgICAgICB2YXIgYiwgZCA9M0QgW10sDQogICAg
ICAgICAgICBmID0zRCBbXSwNCiAgICAgICAgICAgIGUgPTNEIGFyZ3VtZW50
cywNCiAgICAgICAgICAgIGosIGksIG8sIGssIG4sIHI7DQogICAgICAgIGkg
PTNEIGMuZGF0YSh0aGlzLCAiZXZlbnRzIik7DQogICAgICAgIGlmICghKGEu
bGl2ZUZpcmVkID0zRD0zRD0zRCB0aGlzIHx8ICFpIHx8ICFpLmxpdmUgfHwg
YS5idXR0b24gJiYgPQ0KYS50eXBlID0zRD0zRD0zRCAiY2xpY2siKSkgew0K
ICAgICAgICAgICAgYS5saXZlRmlyZWQgPTNEIHRoaXM7DQogICAgICAgICAg
ICB2YXIgdSA9M0QgaS5saXZlLnNsaWNlKDApOw0KICAgICAgICAgICAgZm9y
IChrID0zRCAwOyBrIDwgdS5sZW5ndGg7IGsrKykgew0KICAgICAgICAgICAg
ICAgIGkgPTNEIHVba107DQogICAgICAgICAgICAgICAgaS5vcmlnVHlwZS5y
ZXBsYWNlKE8sICIiKSA9M0Q9M0Q9M0QgYS50eXBlID8gPQ0KZi5wdXNoKGku
c2VsZWN0b3IpIDogdS5zcGxpY2Uoay0tLCAxKQ0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgaiA9M0QgYyhhLnRhcmdldCkuY2xvc2VzdChmLCBhLmN1
cnJlbnRUYXJnZXQpOw0KICAgICAgICAgICAgbiA9M0QgMDsNCiAgICAgICAg
ICAgIGZvciAociA9M0QNCiAgICAgICAgICAgIGoubGVuZ3RoOyBuIDwgcjsg
bisrKSBmb3IgKGsgPTNEIDA7IGsgPCB1Lmxlbmd0aDsgaysrKSB7DQogICAg
ICAgICAgICAgICAgaSA9M0QgdVtrXTsNCiAgICAgICAgICAgICAgICBpZiAo
altuXS5zZWxlY3RvciA9M0Q9M0Q9M0QgaS5zZWxlY3Rvcikgew0KICAgICAg
ICAgICAgICAgICAgICBvID0zRCBqW25dLmVsZW07DQogICAgICAgICAgICAg
ICAgICAgIGYgPTNEIG51bGw7DQogICAgICAgICAgICAgICAgICAgIGlmIChp
LnByZVR5cGUgPTNEPTNEPTNEICJtb3VzZWVudGVyIiB8fCBpLnByZVR5cGUg
PQ0KPTNEPTNEPTNEICJtb3VzZWxlYXZlIikgZiA9M0QgYyhhLnJlbGF0ZWRU
YXJnZXQpLmNsb3Nlc3QoaS5zZWxlY3RvcilbMF07DQogICAgICAgICAgICAg
ICAgICAgIGlmICghZiB8fCBmICE9M0Q9M0QgbykgZC5wdXNoKHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW06IG8sDQogICAgICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVPYmo6IGkNCiAgICAgICAgICAgICAgICAgICAgfSkN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICBuID0zRCAwOw0KICAgICAgICAgICAgZm9yIChyID0zRCBkLmxlbmd0aDsg
biA8IHI7IG4rKykgew0KICAgICAgICAgICAgICAgIGogPTNEIGRbbl07DQog
ICAgICAgICAgICAgICAgYS5jdXJyZW50VGFyZ2V0ID0zRCBqLmVsZW07DQog
ICAgICAgICAgICAgICAgYS5kYXRhID0zRCBqLmhhbmRsZU9iai5kYXRhOw0K
ICAgICAgICAgICAgICAgIGEuaGFuZGxlT2JqID0zRCBqLmhhbmRsZU9iajsN
CiAgICAgICAgICAgICAgICBpZiAoai5oYW5kbGVPYmoub3JpZ0hhbmRsZXIu
YXBwbHkoai5lbGVtLCBlKSA9M0Q9M0Q9M0QgPQ0KZmFsc2UpIHsNCiAgICAg
ICAgICAgICAgICAgICAgYiA9M0QgZmFsc2U7DQogICAgICAgICAgICAgICAg
ICAgIGJyZWFrDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgcmV0dXJuIGINCiAgICAgICAgfQ0KICAgIH0NCiAgICBm
dW5jdGlvbiBwYShhLCBiKSB7DQogICAgICAgIHJldHVybiAibGl2ZS4iICsg
KGEgJiYgYSAhPTNEPTNEICIqIiA/IGEgKyAiLiIgOiAiIikgKyA9DQpiLnJl
cGxhY2UoL1wuL2csICJgIikucmVwbGFjZSgvIC9nLCAiJiIpDQogICAgfQ0K
ICAgIGZ1bmN0aW9uIHFhKGEpIHsNCiAgICAgICAgcmV0dXJuICFhIHx8ICFh
LnBhcmVudE5vZGUgfHwgYS5wYXJlbnROb2RlLm5vZGVUeXBlID0zRD0zRD0z
RCAxMQ0KICAgIH0NCiAgICBmdW5jdGlvbiByYShhLCBiKSB7DQogICAgICAg
IHZhciBkID0zRCAwOw0KICAgICAgICBiLmVhY2goZnVuY3Rpb24gKCkgew0K
ICAgICAgICAgICAgaWYgKHRoaXMubm9kZU5hbWUgPTNEPTNEPTNEIChhW2Rd
ICYmIGFbZF0ubm9kZU5hbWUpKSB7DQogICAgICAgICAgICAgICAgdmFyIGYg
PTNEIGMuZGF0YShhW2QrK10pLA0KICAgICAgICAgICAgICAgICAgICBlID0z
RCBjLmRhdGEodGhpcywgZik7DQogICAgICAgICAgICAgICAgaWYgKGYgPTNE
IGYgJiYgZi5ldmVudHMpIHsNCiAgICAgICAgICAgICAgICAgICAgZGVsZXRl
IGUuaGFuZGxlOw0KICAgICAgICAgICAgICAgICAgICBlLmV2ZW50cyA9M0Qg
e307DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gZikgZm9y
ICh2YXIgaSBpbiBmW2pdKSA9DQpjLmV2ZW50LmFkZCh0aGlzLCBqLCBmW2pd
W2ldLCBmW2pdW2ldLmRhdGEpDQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9KQ0KICAgIH0NCiAgICBmdW5jdGlvbiBzYShh
LCBiLCBkKSB7DQogICAgICAgIHZhciBmLCBlLCBqOw0KICAgICAgICBiID0z
RCBiICYmIGJbMF0gPyBiWzBdLm93bmVyRG9jdW1lbnQgfHwgYlswXSA6IHM7
DQogICAgICAgIGlmIChhLmxlbmd0aCA9M0Q9M0Q9M0QgMSAmJiB0eXBlb2Yg
YVswXSA9M0Q9M0Q9M0QgInN0cmluZyIgJiYgPQ0KYVswXS5sZW5ndGggPCA1
MTIgJiYgYiA9M0Q9M0Q9M0QgcyAmJiAhdGEudGVzdChhWzBdKSAmJiA9DQoo
Yy5zdXBwb3J0LmNoZWNrQ2xvbmUgfHwgIXVhLnRlc3QoYVswXSkpKSB7DQog
ICAgICAgICAgICBlID0zRA0KICAgICAgICAgICAgdHJ1ZTsNCiAgICAgICAg
ICAgIGlmIChqID0zRCBjLmZyYWdtZW50c1thWzBdXSkgaWYgKGogIT0zRD0z
RCAxKSBmID0zRCBqDQogICAgICAgIH0NCiAgICAgICAgaWYgKCFmKSB7DQog
ICAgICAgICAgICBmID0zRCBiLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsN
CiAgICAgICAgICAgIGMuY2xlYW4oYSwgYiwgZiwgZCkNCiAgICAgICAgfQ0K
ICAgICAgICBpZiAoZSkgYy5mcmFnbWVudHNbYVswXV0gPTNEIGogPyBmIDog
MTsNCiAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgIGZyYWdtZW50OiBm
LA0KICAgICAgICAgICAgY2FjaGVhYmxlOiBlDQogICAgICAgIH0NCiAgICB9
DQogICAgZnVuY3Rpb24gSyhhLCBiKSB7DQogICAgICAgIHZhciBkID0zRCB7
fTsNCiAgICAgICAgYy5lYWNoKHZhLmNvbmNhdC5hcHBseShbXSwgdmEuc2xp
Y2UoMCwgYikpLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBkW3RoaXNd
ID0zRCBhDQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4gZA0KICAgIH0N
CiAgICBmdW5jdGlvbiB3YShhKSB7DQogICAgICAgIHJldHVybiAic2Nyb2xs
VG8iIGluIGEgJiYgYS5kb2N1bWVudCA/IGEgOiBhLm5vZGVUeXBlID0zRD0z
RD0zRCA9DQo5ID8gYS5kZWZhdWx0VmlldyB8fCBhLnBhcmVudFdpbmRvdyA6
IGZhbHNlDQogICAgfQ0KICAgIHZhciBjID0zRCBmdW5jdGlvbiAoYSwgYikg
ew0KICAgICAgICByZXR1cm4gbmV3IGMuZm4uaW5pdChhLCBiKQ0KICAgIH0s
DQogICAgICAgIFJhID0zRCBBLmpRdWVyeSwNCiAgICAgICAgU2EgPTNEIEEu
JCwNCiAgICAgICAgcyA9M0QgQS5kb2N1bWVudCwNCiAgICAgICAgVCwgVGEg
PTNEIC9eW148XSooPFtcd1xXXSs+KVtePl0qJHxeIyhbXHctXSspJC8sDQog
ICAgICAgIFVhID0zRCAvXi5bXjojXFtcLixdKiQvLA0KICAgICAgICBWYSA9
M0QgL1xTLywNCiAgICAgICAgV2EgPTNEIC9eKFxzfFx1MDBBMCkrfChcc3xc
dTAwQTApKyQvZywNCiAgICAgICAgWGEgPTNEIC9ePChcdyspXHMqXC8/Pig/
OjxcL1wxPik/JC8sDQogICAgICAgIFAgPTNEIG5hdmlnYXRvci51c2VyQWdl
bnQsDQogICAgICAgIHhhID0zRCBmYWxzZSwNCiAgICAgICAgUSA9M0QgW10s
DQogICAgICAgIEwsICQgPTNEIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcs
DQogICAgICAgIGFhID0zRCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LA0KICAgICAgICBiYSA9M0QgQXJyYXkucHJvdG90eXBlLnB1c2gsDQog
ICAgICAgIFIgPTNEIEFycmF5LnByb3RvdHlwZS5zbGljZSwNCiAgICAgICAg
eWEgPTNEIEFycmF5LnByb3RvdHlwZS5pbmRleE9mOw0KICAgIGMuZm4gPTNE
IGMucHJvdG90eXBlID0zRCB7DQogICAgICAgIGluaXQ6IGZ1bmN0aW9uIChh
LCBiKSB7DQogICAgICAgICAgICB2YXIgZCwgZjsNCiAgICAgICAgICAgIGlm
ICghYSkgcmV0dXJuIHRoaXM7DQogICAgICAgICAgICBpZiAoYS5ub2RlVHlw
ZSkgew0KICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9M0QgdGhpc1sw
XSA9M0QgYTsNCiAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aCA9M0QgMTsN
CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgaWYgKGEgPTNEPTNEPTNEICJib2R5IiAmJiAhYikgew0K
ICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9M0QgczsNCiAgICAgICAg
ICAgICAgICB0aGlzWzBdID0zRCBzLmJvZHk7DQogICAgICAgICAgICAgICAg
dGhpcy5zZWxlY3RvciA9M0QgImJvZHkiOw0KICAgICAgICAgICAgICAgIHRo
aXMubGVuZ3RoID0zRCAxOw0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAodHlwZW9mIGEgPTNE
PTNEPTNEICJzdHJpbmciKSBpZiAoKGQgPTNEIFRhLmV4ZWMoYSkpICYmID0N
CihkWzFdIHx8ICFiKSkgaWYgKGRbMV0pIHsNCiAgICAgICAgICAgICAgICBm
ID0zRCBiID8gYi5vd25lckRvY3VtZW50IHx8IGIgOiBzOw0KICAgICAgICAg
ICAgICAgIGlmIChhID0zRCBYYS5leGVjKGEpKSBpZiAoYy5pc1BsYWluT2Jq
ZWN0KGIpKSB7DQogICAgICAgICAgICAgICAgICAgIGEgPTNEIFtzLmNyZWF0
ZUVsZW1lbnQoYVsxXSldOw0KICAgICAgICAgICAgICAgICAgICBjLmZuLmF0
dHIuY2FsbChhLCBiLCB0cnVlKQ0KICAgICAgICAgICAgICAgIH0gZWxzZSBh
ID0zRCBbZi5jcmVhdGVFbGVtZW50KGFbMV0pXTsNCiAgICAgICAgICAgICAg
ICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgYSA9M0Qgc2EoW2RbMV1d
LCBbZl0pOw0KICAgICAgICAgICAgICAgICAgICBhID0zRCAoYS5jYWNoZWFi
bGUgPyBhLmZyYWdtZW50LmNsb25lTm9kZSh0cnVlKSA6ID0NCmEuZnJhZ21l
bnQpLmNoaWxkTm9kZXMNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgcmV0dXJuIGMubWVyZ2UodGhpcywgYSkNCiAgICAgICAgICAgIH0g
ZWxzZSB7DQogICAgICAgICAgICAgICAgaWYgKGIgPTNEIHMuZ2V0RWxlbWVu
dEJ5SWQoZFsyXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGIuaWQg
IT0zRD0zRCBkWzJdKSByZXR1cm4gVC5maW5kKGEpOw0KICAgICAgICAgICAg
ICAgICAgICB0aGlzLmxlbmd0aCA9M0QgMTsNCiAgICAgICAgICAgICAgICAg
ICAgdGhpc1swXSA9M0QgYg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICB0aGlzLmNvbnRleHQgPTNEIHM7DQogICAgICAgICAgICAgICAg
dGhpcy5zZWxlY3RvciA9M0QgYTsNCiAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcw0KICAgICAgICAgICAgfSBlbHNlIGlmICghYiAmJiAvXlx3KyQvLnRl
c3QoYSkpIHsNCiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdG9yID0zRCBh
Ow0KICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9M0QgczsNCiAgICAg
ICAgICAgICAgICBhID0zRCBzLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOw0K
ICAgICAgICAgICAgICAgIHJldHVybiBjLm1lcmdlKHRoaXMsIGEpDQogICAg
ICAgICAgICB9IGVsc2UgcmV0dXJuICFiIHx8IGIuanF1ZXJ5ID8gKGIgfHwg
VCkuZmluZChhKSA6ID0NCmMoYikuZmluZChhKTsNCiAgICAgICAgICAgIGVs
c2UgaWYgKGMuaXNGdW5jdGlvbihhKSkgcmV0dXJuIFQucmVhZHkoYSk7DQog
ICAgICAgICAgICBpZiAoYS5zZWxlY3RvciAhPTNEPTNEIHcpIHsNCiAgICAg
ICAgICAgICAgICB0aGlzLnNlbGVjdG9yID0zRCBhLnNlbGVjdG9yOw0KICAg
ICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9M0QgYS5jb250ZXh0DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gYy5tYWtlQXJyYXkoYSwg
dGhpcykNCiAgICAgICAgfSwNCiAgICAgICAgc2VsZWN0b3I6ICIiLA0KICAg
ICAgICBqcXVlcnk6ICIxLjQuMiIsDQogICAgICAgIGxlbmd0aDogMCwNCiAg
ICAgICAgc2l6ZTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0dXJu
IHRoaXMubGVuZ3RoDQogICAgICAgIH0sDQogICAgICAgIHRvQXJyYXk6IGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHJldHVybiBSLmNhbGwodGhpcywg
MCkNCiAgICAgICAgfSwNCiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoYSkgew0K
ICAgICAgICAgICAgcmV0dXJuIGEgPTNEPTNEIG51bGwgPyB0aGlzLnRvQXJy
YXkoKSA6IGEgPCAwID8gPQ0KdGhpcy5zbGljZShhKVswXSA6IHRoaXNbYV0N
CiAgICAgICAgfSwNCiAgICAgICAgcHVzaFN0YWNrOiBmdW5jdGlvbiAoYSwg
YiwgZCkgew0KICAgICAgICAgICAgdmFyIGYgPTNEIGMoKTsNCiAgICAgICAg
ICAgIGMuaXNBcnJheShhKSA/IGJhLmFwcGx5KGYsIGEpIDogYy5tZXJnZShm
LCBhKTsNCiAgICAgICAgICAgIGYucHJldk9iamVjdCA9M0QgdGhpczsNCiAg
ICAgICAgICAgIGYuY29udGV4dCA9M0QgdGhpcy5jb250ZXh0Ow0KICAgICAg
ICAgICAgaWYgKGIgPTNEPTNEPTNEICJmaW5kIikgZi5zZWxlY3RvciA9M0Qg
dGhpcy5zZWxlY3RvciArID0NCih0aGlzLnNlbGVjdG9yID8gIiAiIDogIiIp
ICsgZDsNCiAgICAgICAgICAgIGVsc2UgaWYgKGIpIGYuc2VsZWN0b3IgPTNE
IHRoaXMuc2VsZWN0b3IgKyAiLiIgKyBiICsgIigiICsgZCA9DQorICIpIjsN
CiAgICAgICAgICAgIHJldHVybiBmDQogICAgICAgIH0sDQogICAgICAgIGVh
Y2g6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICByZXR1cm4gYy5l
YWNoKHRoaXMsIGEsIGIpDQoNCiAgICAgICAgfSwNCiAgICAgICAgcmVhZHk6
IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBjLmJpbmRSZWFkeSgpOw0K
ICAgICAgICAgICAgaWYgKGMuaXNSZWFkeSkgYS5jYWxsKHMsIGMpOw0KICAg
ICAgICAgICAgZWxzZSBRICYmIFEucHVzaChhKTsNCiAgICAgICAgICAgIHJl
dHVybiB0aGlzDQogICAgICAgIH0sDQogICAgICAgIGVxOiBmdW5jdGlvbiAo
YSkgew0KICAgICAgICAgICAgcmV0dXJuIGEgPTNEPTNEPTNEIC0xID8gdGhp
cy5zbGljZShhKSA6IHRoaXMuc2xpY2UoYSwgK2EgKyA9DQoxKQ0KICAgICAg
ICB9LA0KICAgICAgICBmaXJzdDogZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuZXEoMCkNCiAgICAgICAgfSwNCiAgICAgICAgbGFz
dDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXEo
LTEpDQogICAgICAgIH0sDQogICAgICAgIHNsaWNlOiBmdW5jdGlvbiAoKSB7
DQogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soUi5hcHBseSh0
aGlzLCBhcmd1bWVudHMpLCAic2xpY2UiLCA9DQpSLmNhbGwoYXJndW1lbnRz
KS5qb2luKCIsIikpDQogICAgICAgIH0sDQogICAgICAgIG1hcDogZnVuY3Rp
b24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhj
Lm1hcCh0aGlzLCBmdW5jdGlvbiAoYiwgZCkgew0KICAgICAgICAgICAgICAg
IHJldHVybiBhLmNhbGwoYiwgZCwgYikNCiAgICAgICAgICAgIH0pKQ0KICAg
ICAgICB9LA0KICAgICAgICBlbmQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAg
ICAgIHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgYyhudWxsKQ0KICAgICAg
ICB9LA0KICAgICAgICBwdXNoOiBiYSwNCiAgICAgICAgc29ydDogW10uc29y
dCwNCiAgICAgICAgc3BsaWNlOiBbXS5zcGxpY2UNCiAgICB9Ow0KICAgIGMu
Zm4uaW5pdC5wcm90b3R5cGUgPTNEIGMuZm47DQogICAgYy5leHRlbmQgPTNE
IGMuZm4uZXh0ZW5kID0zRCBmdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciBh
ID0zRCBhcmd1bWVudHNbMF0gfHwge30sDQogICAgICAgICAgICBiID0zRCAx
LA0KICAgICAgICAgICAgZCA9M0QgYXJndW1lbnRzLmxlbmd0aCwNCiAgICAg
ICAgICAgIGYgPTNEIGZhbHNlLA0KICAgICAgICAgICAgZSwgaiwgaSwgbzsN
CiAgICAgICAgaWYgKHR5cGVvZiBhID0zRD0zRD0zRCAiYm9vbGVhbiIpIHsN
CiAgICAgICAgICAgIGYgPTNEIGE7DQogICAgICAgICAgICBhID0zRCBhcmd1
bWVudHNbMV0gfHwge307DQogICAgICAgICAgICBiID0zRCAyDQogICAgICAg
IH0NCiAgICAgICAgaWYgKHR5cGVvZiBhICE9M0Q9M0QgIm9iamVjdCIgJiYg
IWMuaXNGdW5jdGlvbihhKSkgYSA9M0Qge307DQogICAgICAgIGlmIChkID0z
RD0zRD0zRCBiKSB7DQogICAgICAgICAgICBhID0zRCB0aGlzOw0KICAgICAg
ICAgICAgLS1iDQogICAgICAgIH0NCiAgICAgICAgZm9yICg7IGIgPCBkOyBi
KyspIGlmICgoZSA9M0QgYXJndW1lbnRzW2JdKSAhPTNEIG51bGwpIGZvciAo
aiBpbiA9DQplKSB7DQogICAgICAgICAgICBpID0zRCBhW2pdOw0KICAgICAg
ICAgICAgbyA9M0QgZVtqXTsNCiAgICAgICAgICAgIGlmIChhICE9M0Q9M0Qg
bykgaWYgKGYgJiYgbyAmJiAoYy5pc1BsYWluT2JqZWN0KG8pIHx8ID0NCmMu
aXNBcnJheShvKSkpIHsNCiAgICAgICAgICAgICAgICBpID0zRCBpICYmIChj
LmlzUGxhaW5PYmplY3QoaSkgfHwgYy5pc0FycmF5KGkpKSA/IGkgOiA9DQpj
LmlzQXJyYXkobykgPyBbXSA6IHt9Ow0KICAgICAgICAgICAgICAgIGFbal0g
PTNEIGMuZXh0ZW5kKGYsIGksIG8pDQogICAgICAgICAgICB9IGVsc2UgaWYg
KG8gIT0zRD0zRCB3KSBhW2pdID0zRCBvDQogICAgICAgIH0NCiAgICAgICAg
cmV0dXJuIGENCiAgICB9Ow0KICAgIGMuZXh0ZW5kKHsNCiAgICAgICAgbm9D
b25mbGljdDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIEEuJCA9M0Qg
U2E7DQogICAgICAgICAgICBpZiAoYSkgQS5qUXVlcnkgPTNEIFJhOw0KICAg
ICAgICAgICAgcmV0dXJuIGMNCiAgICAgICAgfSwNCiAgICAgICAgaXNSZWFk
eTogZmFsc2UsDQogICAgICAgIHJlYWR5OiBmdW5jdGlvbiAoKSB7DQogICAg
ICAgICAgICBpZiAoIWMuaXNSZWFkeSkgew0KICAgICAgICAgICAgICAgIGlm
ICghcy5ib2R5KSByZXR1cm4gc2V0VGltZW91dChjLnJlYWR5LCAxMyk7DQog
ICAgICAgICAgICAgICAgYy5pc1JlYWR5ID0zRCB0cnVlOw0KICAgICAgICAg
ICAgICAgIGlmIChRKSB7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGEsIGIgPTNEIDA7IGEgPTNEIFFbYisrXTspIGEuY2FsbChzLCBjKTsNCiAg
ICAgICAgICAgICAgICAgICAgUSA9M0QgbnVsbA0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICBjLmZuLnRyaWdnZXJIYW5kbGVyICYmIGMo
cykudHJpZ2dlckhhbmRsZXIoInJlYWR5IikNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfSwNCiAgICAgICAgYmluZFJlYWR5OiBmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICBpZiAoIXhhKSB7DQogICAgICAgICAgICAgICAgeGEgPTNE
IHRydWU7DQogICAgICAgICAgICAgICAgaWYgKHMucmVhZHlTdGF0ZSA9M0Q9
M0Q9M0QgImNvbXBsZXRlIikgcmV0dXJuIGMucmVhZHkoKTsNCiAgICAgICAg
ICAgICAgICBpZiAocy5hZGRFdmVudExpc3RlbmVyKSB7DQogICAgICAgICAg
ICAgICAgICAgIHMuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRl
ZCIsIEwsIGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAgQS5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgYy5yZWFkeSwgZmFsc2UpDQogICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChzLmF0dGFjaEV2ZW50KSB7DQogICAgICAgICAg
ICAgICAgICAgIHMuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIs
IEwpOw0KICAgICAgICAgICAgICAgICAgICBBLmF0dGFjaEV2ZW50KCJvbmxv
YWQiLCBjLnJlYWR5KTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPTNE
IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgYSA9M0QgQS5mcmFtZUVsZW1lbnQgPTNEPTNEIG51
bGwNCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYikge30NCiAgICAg
ICAgICAgICAgICAgICAgcy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgJiYg
YSAmJiBtYSgpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9LA0KICAgICAgICBpc0Z1bmN0aW9uOiBmdW5jdGlvbiAoYSkg
ew0KICAgICAgICAgICAgcmV0dXJuICQuY2FsbChhKSA9M0Q9M0Q9M0QgIltv
YmplY3QgRnVuY3Rpb25dIg0KICAgICAgICB9LA0KICAgICAgICBpc0FycmF5
OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuICQuY2FsbChh
KSA9M0Q9M0Q9M0QgIltvYmplY3QgQXJyYXldIg0KICAgICAgICB9LA0KICAg
ICAgICBpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAg
ICAgaWYgKCFhIHx8ICQuY2FsbChhKSAhPTNEPTNEICJbb2JqZWN0IE9iamVj
dF0iIHx8IGEubm9kZVR5cGUgPQ0KfHwgYS5zZXRJbnRlcnZhbCkgcmV0dXJu
IGZhbHNlOw0KICAgICAgICAgICAgaWYgKGEuY29uc3RydWN0b3IgJiYgIWFh
LmNhbGwoYSwgImNvbnN0cnVjdG9yIikgJiYgPQ0KIWFhLmNhbGwoYS5jb25z
dHJ1Y3Rvci5wcm90b3R5cGUsICJpc1Byb3RvdHlwZU9mIikpIHJldHVybiBm
YWxzZTsNCiAgICAgICAgICAgIHZhciBiOw0KICAgICAgICAgICAgZm9yIChi
IGluIGEpOw0KICAgICAgICAgICAgcmV0dXJuIGIgPTNEPTNEPTNEIHcgfHwg
YWEuY2FsbChhLCBiKQ0KICAgICAgICB9LA0KICAgICAgICBpc0VtcHR5T2Jq
ZWN0OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgZm9yICh2YXIgYiBp
biBhKSByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZQ0K
ICAgICAgICB9LA0KICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgIHRocm93IGE7DQogICAgICAgIH0sDQogICAgICAgIHBhcnNl
SlNPTjogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIGlmICh0eXBlb2Yg
YSAhPTNEPTNEICJzdHJpbmciIHx8ICFhKSByZXR1cm4gbnVsbDsNCiAgICAg
ICAgICAgIGEgPTNEIGMudHJpbShhKTsNCiAgICAgICAgICAgIGlmID0NCigv
XltcXSw6e31cc10qJC8udGVzdChhLnJlcGxhY2UoL1xcKD86WyJcXFwvYmZu
cnRdfHVbMC05YS1mQS1GXXs0fSkvZywgPQ0KIkAiKS5yZXBsYWNlKC8iW14i
XFxcblxyXSoifHRydWV8ZmFsc2V8bnVsbHwtP1xkKyg/OlwuXGQqKT8oPzpb
ZUVdWytcLV0/XD0NCmQrKT8vZywgIl0iKS5yZXBsYWNlKC8oPzpefDp8LCko
PzpccypcWykrL2csICIiKSkpIHJldHVybiBBLkpTT04gJiYgPQ0KQS5KU09O
LnBhcnNlID8gQS5KU09OLnBhcnNlKGEpIDogKG5ldyBGdW5jdGlvbigicmV0
dXJuICIgKyBhKSkoKTsNCiAgICAgICAgICAgIGVsc2UgYy5lcnJvcigiSW52
YWxpZCBKU09OOiAiICsgYSkNCiAgICAgICAgfSwNCiAgICAgICAgbm9vcDog
ZnVuY3Rpb24gKCkge30sDQogICAgICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9u
IChhKSB7DQogICAgICAgICAgICBpZiAoYSAmJiBWYS50ZXN0KGEpKSB7DQog
ICAgICAgICAgICAgICAgdmFyIGIgPTNEIHMuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImhlYWQiKVswXSB8fCA9DQpzLmRvY3VtZW50RWxlbWVudCwNCiAgICAg
ICAgICAgICAgICAgICAgZCA9M0Qgcy5jcmVhdGVFbGVtZW50KCJzY3JpcHQi
KTsNCiAgICAgICAgICAgICAgICBkLnR5cGUgPTNEICJ0ZXh0L2phdmFzY3Jp
cHQiOw0KICAgICAgICAgICAgICAgIGlmIChjLnN1cHBvcnQuc2NyaXB0RXZh
bCkgPQ0KZC5hcHBlbmRDaGlsZChzLmNyZWF0ZVRleHROb2RlKGEpKTsNCiAg
ICAgICAgICAgICAgICBlbHNlIGQudGV4dCA9M0QgYTsNCiAgICAgICAgICAg
ICAgICBiLmluc2VydEJlZm9yZShkLCBiLmZpcnN0Q2hpbGQpOw0KICAgICAg
ICAgICAgICAgIGIucmVtb3ZlQ2hpbGQoZCkNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfSwNCiAgICAgICAgbm9kZU5hbWU6IGZ1bmN0aW9uIChhLCBiKSB7
DQogICAgICAgICAgICByZXR1cm4gYS5ub2RlTmFtZSAmJiBhLm5vZGVOYW1l
LnRvVXBwZXJDYXNlKCkgPTNEPTNEPTNEID0NCmIudG9VcHBlckNhc2UoKQ0K
ICAgICAgICB9LA0KICAgICAgICBlYWNoOiBmdW5jdGlvbiAoYSwgYiwgZCkg
ew0KICAgICAgICAgICAgdmFyIGYsIGUgPTNEIDAsDQogICAgICAgICAgICAg
ICAgaiA9M0QgYS5sZW5ndGgsDQogICAgICAgICAgICAgICAgaSA9M0QgaiA9
M0Q9M0Q9M0QgdyB8fCBjLmlzRnVuY3Rpb24oYSk7DQogICAgICAgICAgICBp
ZiAoZCkgaWYgKGkpIGZvciAoZiBpbiBhKSB7DQogICAgICAgICAgICAgICAg
aWYgKGIuYXBwbHkoYVtmXSwgZCkgPTNEPTNEPTNEIGZhbHNlKSBicmVhaw0K
ICAgICAgICAgICAgfSBlbHNlIGZvciAoOyBlIDwgajspIHsNCiAgICAgICAg
ICAgICAgICBpZiAoYi5hcHBseShhW2UrK10sIGQpID0zRD0zRD0zRCBmYWxz
ZSkgYnJlYWsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoaSkgZm9yIChmIGlu
IGEpIHsNCiAgICAgICAgICAgICAgICBpZiAoYi5jYWxsKGFbZl0sIGYsIGFb
Zl0pID0zRD0zRD0zRCBmYWxzZSkgYnJlYWsNCiAgICAgICAgICAgIH0gZWxz
ZSBmb3IgKGQgPTNEIGFbMF07IGUgPCBqICYmIGIuY2FsbChkLCBlLCBkKSAh
PTNEPTNEID0NCmZhbHNlOyBkID0zRCBhWysrZV0pOw0KICAgICAgICAgICAg
cmV0dXJuIGENCiAgICAgICAgfSwNCiAgICAgICAgdHJpbTogZnVuY3Rpb24g
KGEpIHsNCiAgICAgICAgICAgIHJldHVybiAoYSB8fCAiIikucmVwbGFjZShX
YSwgIiIpDQogICAgICAgIH0sDQogICAgICAgIG1ha2VBcnJheTogZnVuY3Rp
b24gKGEsIGIpIHsNCiAgICAgICAgICAgIGIgPTNEIGIgfHwgW107DQogICAg
ICAgICAgICBpZiAoYSAhPTNEIG51bGwpIGEubGVuZ3RoID0zRD0zRCBudWxs
IHx8IHR5cGVvZiBhID0zRD0zRD0zRCA9DQoic3RyaW5nIiB8fCBjLmlzRnVu
Y3Rpb24oYSkgfHwgdHlwZW9mIGEgIT0zRD0zRCAiZnVuY3Rpb24iICYmID0N
CmEuc2V0SW50ZXJ2YWwgPyBiYS5jYWxsKGIsIGEpIDogYy5tZXJnZShiLCBh
KTsNCiAgICAgICAgICAgIHJldHVybiBiDQogICAgICAgIH0sDQogICAgICAg
IGluQXJyYXk6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBpZiAo
Yi5pbmRleE9mKSByZXR1cm4gYi5pbmRleE9mKGEpOw0KICAgICAgICAgICAg
Zm9yICh2YXIgZCA9M0QgMCwgZiA9M0QgYi5sZW5ndGg7IGQgPCBmOyBkKysp
IGlmIChiW2RdID0NCj0zRD0zRD0zRCBhKSByZXR1cm4gZDsNCiAgICAgICAg
ICAgIHJldHVybiAtMQ0KICAgICAgICB9LA0KICAgICAgICBtZXJnZTogZnVu
Y3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIHZhciBkID0zRCBhLmxlbmd0
aCwNCiAgICAgICAgICAgICAgICBmID0zRCAwOw0KICAgICAgICAgICAgaWYg
KHR5cGVvZiBiLmxlbmd0aCA9M0Q9M0Q9M0QgIm51bWJlciIpIGZvciAodmFy
IGUgPTNEID0NCmIubGVuZ3RoOyBmIDwgZTsgZisrKSBhW2QrK10gPTNEIGJb
Zl07DQogICAgICAgICAgICBlbHNlIGZvciAoOyBiW2ZdICE9M0Q9M0Qgdzsp
IGFbZCsrXSA9M0QgYltmKytdOw0KICAgICAgICAgICAgYS5sZW5ndGggPTNE
IGQ7DQogICAgICAgICAgICByZXR1cm4gYQ0KICAgICAgICB9LA0KICAgICAg
ICBncmVwOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgZm9y
ICh2YXIgZiA9M0QgW10sIGUgPTNEIDAsIGogPTNEIGEubGVuZ3RoOyBlIDwg
ajsgZSsrKSFkID0NCiE9M0Q9M0QgIWIoYVtlXSwgZSkgJiYgZi5wdXNoKGFb
ZV0pOw0KICAgICAgICAgICAgcmV0dXJuIGYNCiAgICAgICAgfSwNCiAgICAg
ICAgbWFwOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAgICAgZm9y
ICh2YXIgZiA9M0QgW10sIGUsIGogPTNEIDAsIGkgPTNEIGEubGVuZ3RoOyBq
IDwgaTsgaisrKSB7DQogICAgICAgICAgICAgICAgZSA9M0QgYihhW2pdLCBq
LCBkKTsNCiAgICAgICAgICAgICAgICBpZiAoZSAhPTNEIG51bGwpIGZbZi5s
ZW5ndGhdID0zRCBlDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1
cm4gZi5jb25jYXQuYXBwbHkoW10sIGYpDQogICAgICAgIH0sDQogICAgICAg
IGd1aWQ6IDEsDQogICAgICAgIHByb3h5OiBmdW5jdGlvbiAoYSwgYiwgZCkg
ew0KICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPTNEPTNEPTNE
IDIpIGlmICh0eXBlb2YgYiA9M0Q9M0Q9M0QgPQ0KInN0cmluZyIpIHsNCiAg
ICAgICAgICAgICAgICBkID0zRCBhOw0KICAgICAgICAgICAgICAgIGEgPTNE
IGRbYl07DQogICAgICAgICAgICAgICAgYiA9M0Qgdw0KICAgICAgICAgICAg
fSBlbHNlIGlmIChiICYmICFjLmlzRnVuY3Rpb24oYikpIHsNCiAgICAgICAg
ICAgICAgICBkID0zRCBiOw0KICAgICAgICAgICAgICAgIGIgPTNEIHcNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghYiAmJiBhKSBiID0zRCBm
dW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGEuYXBwbHko
ZCB8fCB0aGlzLCBhcmd1bWVudHMpDQogICAgICAgICAgICB9Ow0KICAgICAg
ICAgICAgaWYgKGEpIGIuZ3VpZCA9M0QgYS5ndWlkID0zRCBhLmd1aWQgfHwg
Yi5ndWlkIHx8IGMuZ3VpZCsrOw0KICAgICAgICAgICAgcmV0dXJuIGINCiAg
ICAgICAgfSwNCiAgICAgICAgdWFNYXRjaDogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgIGEgPTNEIGEudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgICAg
IGEgPTNEIC8od2Via2l0KVsgXC9dKFtcdy5dKykvLmV4ZWMoYSkgfHwgPQ0K
LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5dKykvLmV4ZWMoYSkg
fHwgLyhtc2llKSA9DQooW1x3Ll0rKS8uZXhlYyhhKSB8fCAhL2NvbXBhdGli
bGUvLnRlc3QoYSkgJiYgLyhtb3ppbGxhKSg/Oi4qPyA9DQpydjooW1x3Ll0r
KSk/Ly5leGVjKGEpIHx8IFtdOw0KICAgICAgICAgICAgcmV0dXJuIHsNCiAg
ICAgICAgICAgICAgICBicm93c2VyOiBhWzFdIHx8ICIiLA0KICAgICAgICAg
ICAgICAgIHZlcnNpb246IGFbMl0gfHwgIjAiDQogICAgICAgICAgICB9DQog
ICAgICAgIH0sDQogICAgICAgIGJyb3dzZXI6IHt9DQogICAgfSk7DQogICAg
UCA9M0QgYy51YU1hdGNoKFApOw0KICAgIGlmIChQLmJyb3dzZXIpIHsNCiAg
ICAgICAgYy5icm93c2VyW1AuYnJvd3Nlcl0gPTNEIHRydWU7DQogICAgICAg
IGMuYnJvd3Nlci52ZXJzaW9uID0zRCBQLnZlcnNpb24NCiAgICB9DQogICAg
aWYgKGMuYnJvd3Nlci53ZWJraXQpIGMuYnJvd3Nlci5zYWZhcmkgPTNEIHRy
dWU7DQogICAgaWYgKHlhKSBjLmluQXJyYXkgPTNEIGZ1bmN0aW9uIChhLCBi
KSB7DQogICAgICAgIHJldHVybiB5YS5jYWxsKGIsIGEpDQogICAgfTsNCiAg
ICBUID0zRCBjKHMpOw0KICAgIGlmIChzLmFkZEV2ZW50TGlzdGVuZXIpIEwg
PTNEIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgcy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJET01Db250ZW50TG9hZGVkIiwgTCwgZmFsc2UpOw0KICAgICAgICBj
LnJlYWR5KCkNCiAgICB9Ow0KICAgIGVsc2UgaWYgKHMuYXR0YWNoRXZlbnQp
IEwgPTNEIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKHMucmVhZHlTdGF0
ZSA9M0Q9M0Q9M0QgImNvbXBsZXRlIikgew0KICAgICAgICAgICAgcy5kZXRh
Y2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgTCk7DQogICAgICAgICAg
ICBjLnJlYWR5KCkNCiAgICAgICAgfQ0KICAgIH07DQogICAgKGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgYy5zdXBwb3J0ID0zRCB7fTsNCiAgICAgICAgdmFy
IGEgPTNEIHMuZG9jdW1lbnRFbGVtZW50LA0KICAgICAgICAgICAgYiA9M0Qg
cy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSwNCiAgICAgICAgICAgIGQgPTNE
IHMuY3JlYXRlRWxlbWVudCgiZGl2IiksDQogICAgICAgICAgICBmID0zRCAi
c2NyaXB0IiArIEooKTsNCiAgICAgICAgZC5zdHlsZS5kaXNwbGF5ID0zRCAi
bm9uZSI7DQogICAgICAgIGQuaW5uZXJIVE1MID0zRCAiICAgPGxpbmsvPjx0
YWJsZT48L3RhYmxlPjxhIGhyZWY9M0QnL2EnID0NCnN0eWxlPTNEJ2NvbG9y
OnJlZDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgPQ0K
dHlwZT0zRCdjaGVja2JveCcvPiI7DQogICAgICAgIHZhciBlID0zRCBkLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksDQogICAgICAgICAgICBqID0zRCBk
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF07DQogICAgICAgIGlmICgh
KCFlIHx8ICFlLmxlbmd0aCB8fCAhaikpIHsNCiAgICAgICAgICAgIGMuc3Vw
cG9ydCA9M0Qgew0KICAgICAgICAgICAgICAgIGxlYWRpbmdXaGl0ZXNwYWNl
OiBkLmZpcnN0Q2hpbGQubm9kZVR5cGUgPTNEPTNEPTNEIDMsDQogICAgICAg
ICAgICAgICAgdGJvZHk6ICFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9k
eSIpLmxlbmd0aCwNCiAgICAgICAgICAgICAgICBodG1sU2VyaWFsaXplOiAh
ISBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLA0KICAg
ICAgICAgICAgICAgIHN0eWxlOiAvcmVkLy50ZXN0KGouZ2V0QXR0cmlidXRl
KCJzdHlsZSIpKSwNCiAgICAgICAgICAgICAgICBocmVmTm9ybWFsaXplZDog
ai5nZXRBdHRyaWJ1dGUoImhyZWYiKSA9M0Q9M0Q9M0QgIi9hIiwNCiAgICAg
ICAgICAgICAgICBvcGFjaXR5OiAvXjAuNTUkLy50ZXN0KGouc3R5bGUub3Bh
Y2l0eSksDQogICAgICAgICAgICAgICAgY3NzRmxvYXQ6ICEhIGouc3R5bGUu
Y3NzRmxvYXQsDQogICAgICAgICAgICAgICAgY2hlY2tPbjogZC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXS52YWx1ZSA9DQo9M0Q9M0Q9M0Qg
Im9uIiwNCiAgICAgICAgICAgICAgICBvcHRTZWxlY3RlZDogPQ0Kcy5jcmVh
dGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChzLmNyZWF0ZUVsZW1l
bnQoIm9wdGlvbiIpKS5zZWxlY3RlZD0NCiwNCiAgICAgICAgICAgICAgICBw
YXJlbnROb2RlOiA9DQpkLnJlbW92ZUNoaWxkKGQuYXBwZW5kQ2hpbGQocy5j
cmVhdGVFbGVtZW50KCJkaXYiKSkpLnBhcmVudE5vZGUgPQ0KPTNEPTNEPTNE
IG51bGwsDQogICAgICAgICAgICAgICAgZGVsZXRlRXhwYW5kbzogdHJ1ZSwN
CiAgICAgICAgICAgICAgICBjaGVja0Nsb25lOiBmYWxzZSwNCiAgICAgICAg
ICAgICAgICBzY3JpcHRFdmFsOiBmYWxzZSwNCiAgICAgICAgICAgICAgICBu
b0Nsb25lRXZlbnQ6IHRydWUsDQogICAgICAgICAgICAgICAgYm94TW9kZWw6
IG51bGwNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICBiLnR5cGUgPTNE
ICJ0ZXh0L2phdmFzY3JpcHQiOw0KICAgICAgICAgICAgdHJ5IHsNCiAgICAg
ICAgICAgICAgICBiLmFwcGVuZENoaWxkKHMuY3JlYXRlVGV4dE5vZGUoIndp
bmRvdy4iICsgZiArICI9M0QxOyIpKQ0KICAgICAgICAgICAgfSBjYXRjaCAo
aSkge30NCiAgICAgICAgICAgIGEuaW5zZXJ0QmVmb3JlKGIsIGEuZmlyc3RD
aGlsZCk7DQogICAgICAgICAgICBpZiAoQVtmXSkgew0KICAgICAgICAgICAg
ICAgIGMuc3VwcG9ydC5zY3JpcHRFdmFsID0zRCB0cnVlOw0KICAgICAgICAg
ICAgICAgIGRlbGV0ZSBBW2ZdDQogICAgICAgICAgICB9DQogICAgICAgICAg
ICB0cnkgew0KICAgICAgICAgICAgICAgIGRlbGV0ZSBiLnRlc3QNCiAgICAg
ICAgICAgIH0gY2F0Y2ggKG8pIHsNCiAgICAgICAgICAgICAgICBjLnN1cHBv
cnQuZGVsZXRlRXhwYW5kbyA9M0QgZmFsc2UNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGEucmVtb3ZlQ2hpbGQoYik7DQogICAgICAgICAgICBpZiAo
ZC5hdHRhY2hFdmVudCAmJiBkLmZpcmVFdmVudCkgew0KICAgICAgICAgICAg
ICAgIGQuYXR0YWNoRXZlbnQoIm9uY2xpY2siLCBmdW5jdGlvbiBrKCkgew0K
ICAgICAgICAgICAgICAgICAgICBjLnN1cHBvcnQubm9DbG9uZUV2ZW50ID0z
RA0KICAgICAgICAgICAgICAgICAgICBmYWxzZTsNCiAgICAgICAgICAgICAg
ICAgICAgZC5kZXRhY2hFdmVudCgib25jbGljayIsIGspDQogICAgICAgICAg
ICAgICAgfSk7DQogICAgICAgICAgICAgICAgZC5jbG9uZU5vZGUodHJ1ZSku
ZmlyZUV2ZW50KCJvbmNsaWNrIikNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGQgPTNEIHMuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAg
ICBkLmlubmVySFRNTCA9M0QgIjxpbnB1dCB0eXBlPTNEJ3JhZGlvJyBuYW1l
PTNEJ3JhZGlvdGVzdCcgPQ0KY2hlY2tlZD0zRCdjaGVja2VkJy8+IjsNCiAg
ICAgICAgICAgIGEgPTNEIHMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOw0K
ICAgICAgICAgICAgYS5hcHBlbmRDaGlsZChkLmZpcnN0Q2hpbGQpOw0KICAg
ICAgICAgICAgYy5zdXBwb3J0LmNoZWNrQ2xvbmUgPTNEID0NCmEuY2xvbmVO
b2RlKHRydWUpLmNsb25lTm9kZSh0cnVlKS5sYXN0Q2hpbGQuY2hlY2tlZDsN
CiAgICAgICAgICAgIGMoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAg
IHZhciBrID0zRCBzLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAg
ICAgICAgIGsuc3R5bGUud2lkdGggPTNEIGsuc3R5bGUucGFkZGluZ0xlZnQg
PTNEICIxcHgiOw0KICAgICAgICAgICAgICAgIHMuYm9keS5hcHBlbmRDaGls
ZChrKTsNCiAgICAgICAgICAgICAgICBjLmJveE1vZGVsID0zRCBjLnN1cHBv
cnQuYm94TW9kZWwgPTNEIGsub2Zmc2V0V2lkdGggPQ0KPTNEPTNEPTNEIDI7
DQogICAgICAgICAgICAgICAgcy5ib2R5LnJlbW92ZUNoaWxkKGspLnN0eWxl
LmRpc3BsYXkgPTNEICJub25lIg0KICAgICAgICAgICAgfSk7DQogICAgICAg
ICAgICBhID0zRCBmdW5jdGlvbiAoaykgew0KICAgICAgICAgICAgICAgIHZh
ciBuID0zRA0KICAgICAgICAgICAgICAgIHMuY3JlYXRlRWxlbWVudCgiZGl2
Iik7DQogICAgICAgICAgICAgICAgayA9M0QgIm9uIiArIGs7DQogICAgICAg
ICAgICAgICAgdmFyIHIgPTNEIGsgaW4gbjsNCiAgICAgICAgICAgICAgICBp
ZiAoIXIpIHsNCiAgICAgICAgICAgICAgICAgICAgbi5zZXRBdHRyaWJ1dGUo
aywgInJldHVybjsiKTsNCiAgICAgICAgICAgICAgICAgICAgciA9M0QgdHlw
ZW9mIG5ba10gPTNEPTNEPTNEICJmdW5jdGlvbiINCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIHINCiAgICAgICAgICAgIH07
DQogICAgICAgICAgICBjLnN1cHBvcnQuc3VibWl0QnViYmxlcyA9M0QgYSgi
c3VibWl0Iik7DQogICAgICAgICAgICBjLnN1cHBvcnQuY2hhbmdlQnViYmxl
cyA9M0QgYSgiY2hhbmdlIik7DQogICAgICAgICAgICBhID0zRCBiID0zRCBk
ID0zRCBlID0zRCBqID0zRCBudWxsDQogICAgICAgIH0NCiAgICB9KSgpOw0K
ICAgIGMucHJvcHMgPTNEIHsNCiAgICAgICAgImZvciI6ICJodG1sRm9yIiwN
CiAgICAgICAgImNsYXNzIjogImNsYXNzTmFtZSIsDQogICAgICAgIHJlYWRv
bmx5OiAicmVhZE9ubHkiLA0KICAgICAgICBtYXhsZW5ndGg6ICJtYXhMZW5n
dGgiLA0KICAgICAgICBjZWxsc3BhY2luZzogImNlbGxTcGFjaW5nIiwNCiAg
ICAgICAgcm93c3BhbjogInJvd1NwYW4iLA0KICAgICAgICBjb2xzcGFuOiAi
Y29sU3BhbiIsDQogICAgICAgIHRhYmluZGV4OiAidGFiSW5kZXgiLA0KICAg
ICAgICB1c2VtYXA6ICJ1c2VNYXAiLA0KICAgICAgICBmcmFtZWJvcmRlcjog
ImZyYW1lQm9yZGVyIg0KICAgIH07DQogICAgdmFyIEcgPTNEICJqUXVlcnki
ICsgSigpLA0KICAgICAgICBZYSA9M0QgMCwNCiAgICAgICAgemEgPTNEIHt9
Ow0KICAgIGMuZXh0ZW5kKHsNCiAgICAgICAgY2FjaGU6IHt9LA0KICAgICAg
ICBleHBhbmRvOiBHLA0KICAgICAgICBub0RhdGE6IHsNCiAgICAgICAgICAg
IGVtYmVkOiB0cnVlLA0KICAgICAgICAgICAgb2JqZWN0OiB0cnVlLA0KICAg
ICAgICAgICAgYXBwbGV0OiB0cnVlDQogICAgICAgIH0sDQogICAgICAgIGRh
dGE6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICBpZiAoIShh
Lm5vZGVOYW1lICYmIGMubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KV0pKSB7DQogICAgICAgICAgICAgICAgYSA9M0QgYSA9M0Q9M0QgQSA/IHph
IDogYTsNCiAgICAgICAgICAgICAgICB2YXIgZiA9M0QgYVtHXSwNCiAgICAg
ICAgICAgICAgICAgICAgZSA9M0QgYy5jYWNoZTsNCiAgICAgICAgICAgICAg
ICBpZiAoIWYgJiYgdHlwZW9mIGIgPTNEPTNEPTNEICJzdHJpbmciICYmIGQg
PTNEPTNEPTNEIHcpID0NCnJldHVybiBudWxsOw0KICAgICAgICAgICAgICAg
IGYgfHwgKGYgPTNEICsrWWEpOw0KICAgICAgICAgICAgICAgIGlmICh0eXBl
b2YgYiA9M0Q9M0Q9M0QgIm9iamVjdCIpIHsNCiAgICAgICAgICAgICAgICAg
ICAgYVtHXSA9M0QgZjsNCiAgICAgICAgICAgICAgICAgICAgZVtmXSA9M0Qg
Yy5leHRlbmQodHJ1ZSwge30sIGIpDQogICAgICAgICAgICAgICAgfSBlbHNl
IGlmICghZVtmXSkgew0KICAgICAgICAgICAgICAgICAgICBhW0ddID0zRCBm
Ow0KICAgICAgICAgICAgICAgICAgICBlW2ZdID0zRCB7fQ0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICBhID0zRCBlW2ZdOw0KICAgICAg
ICAgICAgICAgIGlmIChkICE9M0Q9M0QgdykgYVtiXSA9M0QgZDsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gdHlwZW9mIGIgPTNEPTNEPTNEICJzdHJpbmci
ID8gYVtiXSA6IGENCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAg
ICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAg
IGlmICghKGEubm9kZU5hbWUgJiYgYy5ub0RhdGFbYS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpXSkpIHsNCiAgICAgICAgICAgICAgICBhID0zRCBhID0zRD0z
RCBBID8gemEgOiBhOw0KICAgICAgICAgICAgICAgIHZhciBkID0zRCBhW0dd
LA0KICAgICAgICAgICAgICAgICAgICBmID0zRCBjLmNhY2hlLA0KICAgICAg
ICAgICAgICAgICAgICBlID0zRCBmW2RdOw0KICAgICAgICAgICAgICAgIGlm
IChiKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChlKSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICBkZWxldGUgZVtiXTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGMuaXNFbXB0eU9iamVjdChlKSAmJiBjLnJlbW92ZURhdGEo
YSkNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0g
ZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChjLnN1cHBvcnQuZGVs
ZXRlRXhwYW5kbykgZGVsZXRlIGFbYy5leHBhbmRvXTsNCiAgICAgICAgICAg
ICAgICAgICAgZWxzZSBhLnJlbW92ZUF0dHJpYnV0ZSAmJiA9DQphLnJlbW92
ZUF0dHJpYnV0ZShjLmV4cGFuZG8pOw0KICAgICAgICAgICAgICAgICAgICBk
ZWxldGUgZltkXQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KICAgIH0pOw0KICAgIGMuZm4uZXh0ZW5kKHsNCiAgICAg
ICAgZGF0YTogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIGlmICh0
eXBlb2YgYSA9M0Q9M0Q9M0QgInVuZGVmaW5lZCIgJiYgdGhpcy5sZW5ndGgp
IHJldHVybiA9DQpjLmRhdGEodGhpc1swXSk7DQogICAgICAgICAgICBlbHNl
IGlmICh0eXBlb2YgYSA9M0Q9M0Q9M0QgIm9iamVjdCIpIHJldHVybiA9DQp0
aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGMuZGF0
YSh0aGlzLCBhKQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB2YXIg
ZCA9M0QgYS5zcGxpdCgiLiIpOw0KICAgICAgICAgICAgZFsxXSA9M0QgZFsx
XSA/ICIuIiArIGRbMV0gOiAiIjsNCiAgICAgICAgICAgIGlmIChiID0zRD0z
RD0zRCB3KSB7DQogICAgICAgICAgICAgICAgdmFyIGYgPTNEIHRoaXMudHJp
Z2dlckhhbmRsZXIoImdldERhdGEiICsgZFsxXSArICIhIiwgPQ0KW2RbMF1d
KTsNCiAgICAgICAgICAgICAgICBpZiAoZiA9M0Q9M0Q9M0QgdyAmJiB0aGlz
Lmxlbmd0aCkgZiA9M0QgYy5kYXRhKHRoaXNbMF0sID0NCmEpOw0KICAgICAg
ICAgICAgICAgIHJldHVybiBmID0zRD0zRD0zRCB3ICYmIGRbMV0gPyB0aGlz
LmRhdGEoZFswXSkgOiBmDQogICAgICAgICAgICB9IGVsc2UgcmV0dXJuIHRo
aXMudHJpZ2dlcigic2V0RGF0YSIgKyBkWzFdICsgIiEiLCBbZFswXSwgPQ0K
Yl0pLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGMuZGF0
YSh0aGlzLCBhLCBiKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAg
ICAgICAgcmVtb3ZlRGF0YTogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAg
IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAg
ICAgIGMucmVtb3ZlRGF0YSh0aGlzLCBhKQ0KICAgICAgICAgICAgfSkNCiAg
ICAgICAgfQ0KICAgIH0pOw0KICAgIGMuZXh0ZW5kKHsNCiAgICAgICAgcXVl
dWU6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICBpZiAoYSkg
ew0KICAgICAgICAgICAgICAgIGIgPTNEIChiIHx8ICJmeCIpICsgInF1ZXVl
IjsNCiAgICAgICAgICAgICAgICB2YXIgZiA9M0QgYy5kYXRhKGEsIGIpOw0K
ICAgICAgICAgICAgICAgIGlmICghZCkgcmV0dXJuIGYgfHwgW107DQogICAg
ICAgICAgICAgICAgaWYgKCFmIHx8IGMuaXNBcnJheShkKSkgZiA9M0QgYy5k
YXRhKGEsIGIsID0NCmMubWFrZUFycmF5KGQpKTsNCiAgICAgICAgICAgICAg
ICBlbHNlIGYucHVzaChkKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZg0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBkZXF1ZXVlOiBm
dW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgYiA9M0QgYiB8fCAiZngi
Ow0KICAgICAgICAgICAgdmFyIGQgPTNEIGMucXVldWUoYSwgYiksDQogICAg
ICAgICAgICAgICAgZiA9M0QgZC5zaGlmdCgpOw0KICAgICAgICAgICAgaWYg
KGYgPTNEPTNEPTNEICJpbnByb2dyZXNzIikgZiA9M0QgZC5zaGlmdCgpOw0K
ICAgICAgICAgICAgaWYgKGYpIHsNCiAgICAgICAgICAgICAgICBiID0zRD0z
RD0zRCAiZngiICYmIGQudW5zaGlmdCgiaW5wcm9ncmVzcyIpOw0KICAgICAg
ICAgICAgICAgIGYuY2FsbChhLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICAgICAgICAgIGMuZGVxdWV1ZShhLCBiKQ0KICAgICAgICAgICAgICAgIH0p
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmZu
LmV4dGVuZCh7DQogICAgICAgIHF1ZXVlOiBmdW5jdGlvbiAoYSwgYikgew0K
ICAgICAgICAgICAgaWYgKHR5cGVvZiBhICE9M0Q9M0QgInN0cmluZyIpIHsN
CiAgICAgICAgICAgICAgICBiID0zRCBhOw0KICAgICAgICAgICAgICAgIGEg
PTNEICJmeCINCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChiID0z
RD0zRD0zRCB3KSByZXR1cm4gYy5xdWV1ZSh0aGlzWzBdLCBhKTsNCiAgICAg
ICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAg
ICAgICAgICAgIHZhciBkID0zRCBjLnF1ZXVlKHRoaXMsIGEsIGIpOw0KICAg
ICAgICAgICAgICAgIGEgPTNEPTNEPTNEICJmeCIgJiYgZFswXSAhPTNEPTNE
ICJpbnByb2dyZXNzIiAmJiA9DQpjLmRlcXVldWUodGhpcywgYSkNCiAgICAg
ICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIGRlcXVldWU6IGZ1bmN0
aW9uIChhKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgICAgICAgICBjLmRlcXVldWUodGhpcywgYSkN
CiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIGRlbGF5OiBm
dW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgYSA9M0QgYy5meCA/IGMu
Znguc3BlZWRzW2FdIHx8IGEgOiBhOw0KICAgICAgICAgICAgYiA9M0QgYiB8
fCAiZngiOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoYiwgZnVu
Y3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHZhciBkID0zRCB0aGlzOw0K
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAg
ICAgICAgICAgICAgICAgICBjLmRlcXVldWUoZCwgYikNCiAgICAgICAgICAg
ICAgICB9LCBhKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAg
ICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJl
dHVybiB0aGlzLnF1ZXVlKGEgfHwgImZ4IiwgW10pDQogICAgICAgIH0NCiAg
ICB9KTsNCiAgICB2YXIgQWEgPTNEIC9bXG5cdF0vZywNCiAgICAgICAgY2Eg
PTNEIC9ccysvLA0KICAgICAgICBaYSA9M0QgL1xyL2csDQogICAgICAgICRh
ID0zRCAvaHJlZnxzcmN8c3R5bGUvLA0KICAgICAgICBhYiA9M0QgLyhidXR0
b258aW5wdXQpL2ksDQogICAgICAgIGJiID0zRCAvKGJ1dHRvbnxpbnB1dHxv
YmplY3R8c2VsZWN0fHRleHRhcmVhKS9pLA0KICAgICAgICBjYiA9M0QgL14o
YXxhcmVhKSQvaSwNCiAgICAgICAgQmEgPTNEIC9yYWRpb3xjaGVja2JveC87
DQogICAgYy5mbi5leHRlbmQoew0KICAgICAgICBhdHRyOiBmdW5jdGlvbiAo
YSwgYikgew0KICAgICAgICAgICAgcmV0dXJuIFgodGhpcywgYSwgYiwgdHJ1
ZSwgYy5hdHRyKQ0KICAgICAgICB9LA0KICAgICAgICByZW1vdmVBdHRyOiBm
dW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChm
dW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgYy5hdHRyKHRoaXMsIGEs
ICIiKTsNCiAgICAgICAgICAgICAgICB0aGlzLm5vZGVUeXBlID0zRD0zRD0z
RCAxICYmIHRoaXMucmVtb3ZlQXR0cmlidXRlKGEpDQogICAgICAgICAgICB9
KQ0KICAgICAgICB9LA0KICAgICAgICBhZGRDbGFzczogZnVuY3Rpb24gKGEp
IHsNCiAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rpb24oYSkpIHJldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24gKG4pIHsNCiAgICAgICAgICAgICAgICB2YXIg
ciA9M0QgYyh0aGlzKTsNCiAgICAgICAgICAgICAgICByLmFkZENsYXNzKGEu
Y2FsbCh0aGlzLCBuLCByLmF0dHIoImNsYXNzIikpKQ0KICAgICAgICAgICAg
fSk7DQogICAgICAgICAgICBpZiAoYSAmJiB0eXBlb2YgYSA9M0Q9M0Q9M0Qg
InN0cmluZyIpIGZvciAodmFyIGIgPTNEIChhIHx8ID0NCiIiKS5zcGxpdChj
YSksIGQgPTNEIDAsIGYgPTNEIHRoaXMubGVuZ3RoOyBkIDwgZjsgZCsrKSB7
DQogICAgICAgICAgICAgICAgdmFyIGUgPTNEIHRoaXNbZF07DQogICAgICAg
ICAgICAgICAgaWYgKGUubm9kZVR5cGUgPTNEPTNEPTNEIDEpIGlmIChlLmNs
YXNzTmFtZSkgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0z
RCAiICIgKyBlLmNsYXNzTmFtZSArICIgIiwgaSA9M0QgPQ0KZS5jbGFzc05h
bWUsIG8gPTNEIDAsIGsgPTNEIGIubGVuZ3RoOyBvIDwgazsgbysrKSBpZiAo
ai5pbmRleE9mKCIgIiArID0NCmJbb10gKyAiICIpIDwgMCkgaSArPTNEICIg
IiArIGJbb107DQogICAgICAgICAgICAgICAgICAgIGUuY2xhc3NOYW1lID0z
RCBjLnRyaW0oaSkNCiAgICAgICAgICAgICAgICB9IGVsc2UgZS5jbGFzc05h
bWUgPTNEIGENCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0
aGlzDQogICAgICAgIH0sDQogICAgICAgIHJlbW92ZUNsYXNzOiBmdW5jdGlv
biAoYSkgew0KICAgICAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihhKSkgcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoaykgew0KICAgICAgICAgICAgICAg
IHZhciBuID0zRCBjKHRoaXMpOw0KICAgICAgICAgICAgICAgIG4ucmVtb3Zl
Q2xhc3MoYS5jYWxsKHRoaXMsIGssIG4uYXR0cigiY2xhc3MiKSkpDQogICAg
ICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmIChhICYmIHR5cGVvZiBhID0z
RD0zRD0zRCAic3RyaW5nIiB8fCBhID0zRD0zRD0zRCB3KSBmb3IgPQ0KKHZh
ciBiID0zRCAoYSB8fCAiIikuc3BsaXQoY2EpLCBkID0zRCAwLCBmID0zRCB0
aGlzLmxlbmd0aDsgZCA8IGY7IGQrKykgPQ0Kew0KICAgICAgICAgICAgICAg
IHZhciBlID0zRCB0aGlzW2RdOw0KICAgICAgICAgICAgICAgIGlmIChlLm5v
ZGVUeXBlID0zRD0zRD0zRCAxICYmIGUuY2xhc3NOYW1lKSBpZiAoYSkgew0K
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0zRCAoIiAiICsgZS5j
bGFzc05hbWUgKyAiICIpLnJlcGxhY2UoQWEsID0NCiIgIiksIGkgPTNEIDAs
IG8gPTNEIGIubGVuZ3RoOyBpIDwgbzsgaSsrKSBqID0zRCBqLnJlcGxhY2Uo
IiAiICsgYltpXSArID0NCiIgIiwgIiAiKTsNCiAgICAgICAgICAgICAgICAg
ICAgZS5jbGFzc05hbWUgPTNEIGMudHJpbShqKQ0KICAgICAgICAgICAgICAg
IH0gZWxzZSBlLmNsYXNzTmFtZSA9M0QgIiINCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIHJldHVybiB0aGlzDQogICAgICAgIH0sDQogICAgICAgIHRv
Z2dsZUNsYXNzOiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgdmFy
IGQgPTNEIHR5cGVvZiBhLA0KICAgICAgICAgICAgICAgIGYgPTNEIHR5cGVv
ZiBiID0zRD0zRD0zRCAiYm9vbGVhbiI7DQogICAgICAgICAgICBpZiAoYy5p
c0Z1bmN0aW9uKGEpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIChlKSB7
DQogICAgICAgICAgICAgICAgdmFyIGogPTNEIGModGhpcyk7DQogICAgICAg
ICAgICAgICAgai50b2dnbGVDbGFzcyhhLmNhbGwodGhpcywgZSwgai5hdHRy
KCJjbGFzcyIpLCBiKSwgYikNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICAgICAgaWYgKGQgPTNEPTNEPTNEICJzdHJpbmciKSBmb3IgKHZhciBlLCBq
ID0zRCAwLCBpID0zRCA9DQpjKHRoaXMpLCBvID0zRCBiLCBrID0zRCBhLnNw
bGl0KGNhKTsgZSA9M0Qga1tqKytdOykgew0KICAgICAgICAgICAgICAgICAg
ICBvID0zRCBmID8gbyA6ICFpLmhhc0NsYXNzKGUpOw0KICAgICAgICAgICAg
ICAgICAgICBpW28gPyAiYWRkQ2xhc3MiIDogInJlbW92ZUNsYXNzIl0oZSkN
CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGQgPTNEPTNEPTNEICJ1bmRl
ZmluZWQiIHx8IGQgPTNEPTNEPTNEID0NCiJib29sZWFuIikgew0KICAgICAg
ICAgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSAmJiBjLmRhdGEodGhpcywg
Il9fY2xhc3NOYW1lX18iLCA9DQp0aGlzLmNsYXNzTmFtZSk7DQogICAgICAg
ICAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lID0zRA0KICAgICAgICAgICAg
ICAgICAgICB0aGlzLmNsYXNzTmFtZSB8fCBhID0zRD0zRD0zRCBmYWxzZSA/
ICIiIDogPQ0KYy5kYXRhKHRoaXMsICJfX2NsYXNzTmFtZV9fIikgfHwgIiIN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KQ0KICAgICAgICB9
LA0KICAgICAgICBoYXNDbGFzczogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAg
ICAgIGEgPTNEICIgIiArIGEgKyAiICI7DQogICAgICAgICAgICBmb3IgKHZh
ciBiID0zRCAwLCBkID0zRCB0aGlzLmxlbmd0aDsgYiA8IGQ7IGIrKykgaWYg
KCgiICIgKyA9DQp0aGlzW2JdLmNsYXNzTmFtZSArICIgIikucmVwbGFjZShB
YSwgIiAiKS5pbmRleE9mKGEpID4gLTEpIHJldHVybiB0cnVlOw0KICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlDQogICAgICAgIH0sDQogICAgICAgIHZhbDog
ZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIGlmIChhID0zRD0zRD0zRCB3
KSB7DQogICAgICAgICAgICAgICAgdmFyIGIgPTNEIHRoaXNbMF07DQogICAg
ICAgICAgICAgICAgaWYgKGIpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYg
KGMubm9kZU5hbWUoYiwgIm9wdGlvbiIpKSByZXR1cm4gPQ0KKGIuYXR0cmli
dXRlcy52YWx1ZSB8fCB7fSkuc3BlY2lmaWVkID8gYi52YWx1ZSA6IGIudGV4
dDsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGMubm9kZU5hbWUoYiwgInNl
bGVjdCIpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9M0Qg
Yi5zZWxlY3RlZEluZGV4LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGYgPTNEIFtdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPTNE
IGIub3B0aW9uczsNCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPTNEIGIu
dHlwZSA9M0Q9M0Q9M0QgInNlbGVjdC1vbmUiOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGQgPCAwKSByZXR1cm4gbnVsbDsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBqID0zRCBiID8gZCA6IDA7DQogICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKGQgPTNEIGIgPyBkICsgMSA6IGUubGVuZ3Ro
OyBqIDwgZDsgaisrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGkgPTNEDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtqXTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS5zZWxlY3RlZCkg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0zRCBjKGkp
LnZhbCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YikgcmV0dXJuIGE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGYucHVzaChhKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgaWYgKEJhLnRlc3QoYi50eXBlKSAmJiAhYy5zdXBwb3J0
LmNoZWNrT24pIHJldHVybiA9DQpiLmdldEF0dHJpYnV0ZSgidmFsdWUiKSA9
M0Q9M0Q9M0QgbnVsbCA/ICJvbiIgOiBiLnZhbHVlOw0KICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gKGIudmFsdWUgfHwgIiIpLnJlcGxhY2UoWmEsICIi
KQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4g
dw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIG8gPTNEIGMuaXNG
dW5jdGlvbihhKTsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24gKGspIHsNCiAgICAgICAgICAgICAgICB2YXIgbiA9M0QgYyh0aGlz
KSwNCiAgICAgICAgICAgICAgICAgICAgciA9M0QgYTsNCiAgICAgICAgICAg
ICAgICBpZiAodGhpcy5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSkgew0KICAgICAg
ICAgICAgICAgICAgICBpZiAobykgciA9M0QgYS5jYWxsKHRoaXMsIGssIG4u
dmFsKCkpOw0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHIgPTNE
PTNEPTNEICJudW1iZXIiKSByICs9M0QgIiI7DQogICAgICAgICAgICAgICAg
ICAgIGlmIChjLmlzQXJyYXkocikgJiYgQmEudGVzdCh0aGlzLnR5cGUpKSB0
aGlzLmNoZWNrZWQgPQ0KPTNEIGMuaW5BcnJheShuLnZhbCgpLCByKSA+PTNE
IDA7DQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMubm9kZU5hbWUo
dGhpcywgInNlbGVjdCIpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2
YXIgdSA9M0QgYy5tYWtlQXJyYXkocik7DQogICAgICAgICAgICAgICAgICAg
ICAgICBjKCJvcHRpb24iLCB0aGlzKS5lYWNoKGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0zRA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaW5BcnJheShjKHRoaXMp
LnZhbCgpLCB1KSA+PTNEIDANCiAgICAgICAgICAgICAgICAgICAgICAgIH0p
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1Lmxlbmd0aCkgdGhp
cy5zZWxlY3RlZEluZGV4ID0zRCAtMQ0KICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgdGhpcy52YWx1ZSA9M0Qgcg0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0pDQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmV4dGVu
ZCh7DQogICAgICAgIGF0dHJGbjogew0KICAgICAgICAgICAgdmFsOiB0cnVl
LA0KICAgICAgICAgICAgY3NzOiB0cnVlLA0KICAgICAgICAgICAgaHRtbDog
dHJ1ZSwNCiAgICAgICAgICAgIHRleHQ6IHRydWUsDQogICAgICAgICAgICBk
YXRhOiB0cnVlLA0KICAgICAgICAgICAgd2lkdGg6IHRydWUsDQogICAgICAg
ICAgICBoZWlnaHQ6IHRydWUsDQogICAgICAgICAgICBvZmZzZXQ6IHRydWUN
CiAgICAgICAgfSwNCiAgICAgICAgYXR0cjogZnVuY3Rpb24gKGEsIGIsIGQs
IGYpIHsNCiAgICAgICAgICAgIGlmICghYSB8fCBhLm5vZGVUeXBlID0zRD0z
RD0zRCAzIHx8IGEubm9kZVR5cGUgPTNEPTNEPTNEIDgpID0NCnJldHVybiB3
Ow0KICAgICAgICAgICAgaWYgKGYgJiYgYiBpbiBjLmF0dHJGbikgcmV0dXJu
IGMoYSlbYl0oZCk7DQogICAgICAgICAgICBmID0zRCBhLm5vZGVUeXBlICE9
M0Q9M0QgMSB8fCAhYy5pc1hNTERvYyhhKTsNCiAgICAgICAgICAgIHZhciBl
ID0zRCBkICE9M0Q9M0QgdzsNCiAgICAgICAgICAgIGIgPTNEIGYgJiYgYy5w
cm9wc1tiXSB8fCBiOw0KICAgICAgICAgICAgaWYgKGEubm9kZVR5cGUgPTNE
PTNEPTNEIDEpIHsNCiAgICAgICAgICAgICAgICB2YXIgaiA9M0QgJGEudGVz
dChiKTsNCiAgICAgICAgICAgICAgICBpZiAoYiBpbiBhICYmIGYgJiYgIWop
IHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGUpIHsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGIgPTNEPTNEPTNEICJ0eXBlIiAmJiBhYi50ZXN0KGEu
bm9kZU5hbWUpICYmID0NCmEucGFyZW50Tm9kZSAmJiBjLmVycm9yKCJ0eXBl
IHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGFbYl0gPTNEIGQNCiAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICBpZiAoYy5ub2RlTmFtZShhLCAiZm9ybSIp
ICYmIGEuZ2V0QXR0cmlidXRlTm9kZShiKSkgPQ0KcmV0dXJuIGEuZ2V0QXR0
cmlidXRlTm9kZShiKS5ub2RlVmFsdWU7DQogICAgICAgICAgICAgICAgICAg
IGlmIChiID0zRD0zRD0zRCAidGFiSW5kZXgiKSByZXR1cm4gKGIgPTNEID0N
CmEuZ2V0QXR0cmlidXRlTm9kZSgidGFiSW5kZXgiKSkgJiYgYi5zcGVjaWZp
ZWQgPyBiLnZhbHVlIDogPQ0KYmIudGVzdChhLm5vZGVOYW1lKSB8fCBjYi50
ZXN0KGEubm9kZU5hbWUpICYmIGEuaHJlZiA/IDAgOiB3Ow0KICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gYVtiXQ0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICBpZiAoIWMuc3VwcG9ydC5zdHlsZSAmJiBmICYmIGIg
PTNEPTNEPTNEICJzdHlsZSIpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYg
KGUpIGEuc3R5bGUuY3NzVGV4dCA9M0QgIiIgKyBkOw0KICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYS5zdHlsZS5jc3NUZXh0DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIGUgJiYgYS5zZXRBdHRyaWJ1dGUoYiwg
IiIgKyBkKTsNCiAgICAgICAgICAgICAgICBhID0zRCAhYy5zdXBwb3J0Lmhy
ZWZOb3JtYWxpemVkICYmIGYgJiYgaiA/ID0NCmEuZ2V0QXR0cmlidXRlKGIs
IDIpIDogYS5nZXRBdHRyaWJ1dGUoYik7DQogICAgICAgICAgICAgICAgcmV0
dXJuIGEgPTNEPTNEPTNEIG51bGwgPyB3IDogYQ0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgcmV0dXJuIGMuc3R5bGUoYSwgYiwgZCkNCiAgICAgICAg
fQ0KICAgIH0pOw0KICAgIHZhciBPID0zRCAvXC4oLiopJC8sDQogICAgICAg
IGRiID0zRCBmdW5jdGlvbiAoYSkgew0KICAgICAgICByZXR1cm4gYS5yZXBs
YWNlKC9bXlx3XHNcLlx8YF0vZywgZnVuY3Rpb24gKGIpIHsNCiAgICAgICAg
ICAgIHJldHVybiAiXFwiICsgYg0KICAgICAgICB9KQ0KICAgIH07DQogICAg
Yy5ldmVudCA9M0Qgew0KICAgICAgICBhZGQ6IGZ1bmN0aW9uIChhLCBiLCBk
LCBmKSB7DQogICAgICAgICAgICBpZiAoIShhLm5vZGVUeXBlID0zRD0zRD0z
RCAzIHx8IGEubm9kZVR5cGUgPTNEPTNEPTNEIDgpKSB7DQogICAgICAgICAg
ICAgICAgaWYgKGEuc2V0SW50ZXJ2YWwgJiYgYSAhPTNEPTNEIEEgJiYgIWEu
ZnJhbWVFbGVtZW50KSBhID0NCj0zRCBBOw0KICAgICAgICAgICAgICAgIHZh
ciBlLCBqOw0KICAgICAgICAgICAgICAgIGlmIChkLmhhbmRsZXIpIHsNCiAg
ICAgICAgICAgICAgICAgICAgZSA9M0QgZDsNCiAgICAgICAgICAgICAgICAg
ICAgZCA9M0QgZS5oYW5kbGVyDQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIGlmICghZC5ndWlkKSBkLmd1aWQgPTNEIGMuZ3VpZCsrOw0K
ICAgICAgICAgICAgICAgIGlmIChqID0zRCBjLmRhdGEoYSkpIHsNCiAgICAg
ICAgICAgICAgICAgICAgdmFyIGkgPTNEIGouZXZlbnRzID0zRCBqLmV2ZW50
cyB8fCB7fSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPTNEIGouaGFu
ZGxlOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIW8pIGouaGFuZGxlID0z
RCBvID0zRCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHlwZW9mIGMgIT0zRD0zRCAidW5kZWZpbmVkIiAmJiA9DQoh
Yy5ldmVudC50cmlnZ2VyZWQgPyBjLmV2ZW50LmhhbmRsZS5hcHBseShvLmVs
ZW0sIGFyZ3VtZW50cykgOiB3DQogICAgICAgICAgICAgICAgICAgIH07DQog
ICAgICAgICAgICAgICAgICAgIG8uZWxlbSA9M0QgYTsNCiAgICAgICAgICAg
ICAgICAgICAgYiA9M0QgYi5zcGxpdCgiICIpOw0KICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciBrLCBuID0zRCAwLCByOyBrID0zRCBiW24rK107KSB7
DQogICAgICAgICAgICAgICAgICAgICAgICBqID0zRCBlID8gYy5leHRlbmQo
e30sIGUpIDogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZXI6IGQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZg0K
ICAgICAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChrLmluZGV4T2YoIi4iKSA+IC0xKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgciA9M0Qgay5zcGxpdCgiLiIpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGsgPTNEIHIuc2hpZnQoKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqLm5hbWVzcGFjZSA9M0Qgci5zbGlj
ZSgwKS5zb3J0KCkuam9pbigiLiIpDQogICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPTNE
IFtdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGoubmFtZXNwYWNl
ID0zRCAiIg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgai50eXBlID0zRCBrOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgai5ndWlkID0zRCBkLmd1aWQ7DQogICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgdSA9M0QgaVtrXSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB6ID0zRCBjLmV2ZW50LnNwZWNpYWxba10gfHwge307DQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXUpIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1ID0zRCBpW2tdID0zRCBbXTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXouc2V0dXAgfHwgei5zZXR1cC5jYWxs
KGEsIGYsIHIsIG8pID0NCj0zRD0zRD0zRCBmYWxzZSkgaWYgKGEuYWRkRXZl
bnRMaXN0ZW5lcikgYS5hZGRFdmVudExpc3RlbmVyKGssIG8sID0NCmZhbHNl
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGEuYXR0YWNo
RXZlbnQgJiYgYS5hdHRhY2hFdmVudCgib24iICsgPQ0KaywgbykNCiAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh6LmFkZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHou
YWRkLmNhbGwoYSwgaik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFqLmhhbmRsZXIuZ3VpZCkgai5oYW5kbGVyLmd1aWQgPTNEID0NCmQu
Z3VpZA0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgdS5wdXNoKGopOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgYy5ldmVudC5nbG9iYWxba10gPTNEIHRydWUNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBhID0zRCBudWxsDQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAg
ICAgICBnbG9iYWw6IHt9LA0KICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIChh
LCBiLCBkLCBmKSB7DQogICAgICAgICAgICBpZiAoIShhLm5vZGVUeXBlID0z
RD0zRD0zRCAzIHx8IGEubm9kZVR5cGUgPTNEPTNEPTNEIDgpKSB7DQogICAg
ICAgICAgICAgICAgdmFyIGUsIGogPTNEIDAsDQogICAgICAgICAgICAgICAg
ICAgIGksIG8sIGssIG4sIHIsIHUsIHogPTNEIGMuZGF0YShhKSwNCiAgICAg
ICAgICAgICAgICAgICAgQyA9M0QgeiAmJiB6LmV2ZW50czsNCiAgICAgICAg
ICAgICAgICBpZiAoeiAmJiBDKSB7DQogICAgICAgICAgICAgICAgICAgIGlm
IChiICYmIGIudHlwZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZCA9
M0QgYi5oYW5kbGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgYiA9M0Qg
Yi50eXBlDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgaWYgKCFiIHx8IHR5cGVvZiBiID0zRD0zRD0zRCAic3RyaW5nIiAm
JiBiLmNoYXJBdCgwKSA9DQo9M0Q9M0Q9M0QgIi4iKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBiID0zRCBiIHx8ICIiOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChlIGluIEMpIGMuZXZlbnQucmVtb3ZlKGEsIGUgKyBi
KQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIChiID0zRCBiLnNwbGl0KCIgIik7IGUgPTNEIGJb
aisrXTspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0zRCBl
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPTNEIGUuaW5kZXhP
ZigiLiIpIDwgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0z
RCBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9M0QgZS5zcGxp
dCgiLiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0z
RCBvLnNoaWZ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGsgPTNEIG5ldyBSZWdFeHAoIihefFxcLikiICsgPQ0KYy5tYXAoby5zbGlj
ZSgwKS5zb3J0KCksIGRiKS5qb2luKCJcXC4oPzouKlxcLik/IikgKyAiKFxc
LnwkKSIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChyID0zRCBDW2VdKSBpZiAoZCkg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0zRCBjLmV2
ZW50LnNwZWNpYWxbZV0gfHwge307DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoQiA9M0QgZiB8fCAwOyBCIDwgci5sZW5ndGg7IEIr
Kykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9
M0QgcltCXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChkLmd1aWQgPTNEPTNEPTNEIHUuZ3VpZCkgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIHx8IGsudGVzdCh1
Lm5hbWVzcGFjZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZiA9M0Q9M0QgbnVsbCAmJiA9DQpyLnNwbGljZShC
LS0sIDEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuLnJlbW92ZSAmJiBuLnJlbW92ZS5jYWxsKGEsID0NCnUpDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmICE9
M0QgbnVsbCkgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5sZW5ndGgg
PTNEPTNEPTNEIDAgfHwgZiAhPTNEIG51bGwgPQ0KJiYgci5sZW5ndGggPTNE
PTNEPTNEIDEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbi50ZWFyZG93biB8fCA9DQpuLnRlYXJkb3duLmNhbGwoYSwg
bykgPTNEPTNEPTNEIGZhbHNlKSBDYShhLCBlLCB6LmhhbmRsZSk7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgQ1tlXQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGZvciAodmFyIEIgPTNEIDA7IEIg
PCByLmxlbmd0aDsgQisrKSA9DQp7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHUgPTNEIHJbQl07DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpIHx8IGsudGVzdCh1Lm5hbWVzcGFjZSkpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZXZlbnQucmVt
b3ZlKGEsIG4sIHUuaGFuZGxlciwgQik7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByLnNwbGljZShCLS0sIDEpDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYy5pc0VtcHR5T2JqZWN0KEMpKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIgPTNEIHouaGFuZGxl
KSBiLmVsZW0gPTNEIG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsZXRlIHouZXZlbnRzOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlbGV0ZSB6LmhhbmRsZTsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjLmlzRW1wdHlPYmplY3QoeikgJiYgYy5yZW1vdmVEYXRhKGEpDQog
ICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAg
IH0sDQogICAgICAgIHRyaWdnZXI6IGZ1bmN0aW9uIChhLCBiLCBkLCBmKSB7
DQogICAgICAgICAgICB2YXIgZSA9M0QgYS50eXBlIHx8IGE7DQogICAgICAg
ICAgICBpZiAoIWYpIHsNCiAgICAgICAgICAgICAgICBhID0zRCB0eXBlb2Yg
YSA9M0Q9M0Q9M0QgIm9iamVjdCIgPyBhW0ddID8gYSA6ID0NCmMuZXh0ZW5k
KGMuRXZlbnQoZSksIGEpIDogYy5FdmVudChlKTsNCiAgICAgICAgICAgICAg
ICBpZiAoZS5pbmRleE9mKCIhIikgPj0zRCAwKSB7DQogICAgICAgICAgICAg
ICAgICAgIGEudHlwZSA9M0QNCiAgICAgICAgICAgICAgICAgICAgZSA9M0Qg
ZS5zbGljZSgwLCAtMSk7DQogICAgICAgICAgICAgICAgICAgIGEuZXhjbHVz
aXZlID0zRCB0cnVlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIGlmICghZCkgew0KICAgICAgICAgICAgICAgICAgICBhLnN0b3BQcm9w
YWdhdGlvbigpOw0KICAgICAgICAgICAgICAgICAgICBjLmV2ZW50Lmdsb2Jh
bFtlXSAmJiBjLmVhY2goYy5jYWNoZSwgZnVuY3Rpb24gKCkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudHMgJiYgdGhpcy5ldmVudHNb
ZV0gJiYgPQ0KYy5ldmVudC50cmlnZ2VyKGEsIGIsIHRoaXMuaGFuZGxlLmVs
ZW0pDQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgIGlmICghZCB8fCBkLm5vZGVUeXBlID0zRD0z
RD0zRCAzIHx8IGQubm9kZVR5cGUgPTNEPTNEPTNEID0NCjgpIHJldHVybiB3
Ow0KICAgICAgICAgICAgICAgIGEucmVzdWx0ID0zRCB3Ow0KICAgICAgICAg
ICAgICAgIGEudGFyZ2V0ID0zRCBkOw0KICAgICAgICAgICAgICAgIGIgPTNE
IGMubWFrZUFycmF5KGIpOw0KICAgICAgICAgICAgICAgIGIudW5zaGlmdChh
KQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYS5jdXJyZW50VGFyZ2V0
ID0zRCBkOw0KICAgICAgICAgICAgKGYgPTNEIGMuZGF0YShkLCAiaGFuZGxl
IikpICYmIGYuYXBwbHkoZCwgYik7DQogICAgICAgICAgICBmID0zRCBkLnBh
cmVudE5vZGUgfHwgZC5vd25lckRvY3VtZW50Ow0KICAgICAgICAgICAgdHJ5
IHsNCiAgICAgICAgICAgICAgICBpZiAoIShkICYmIGQubm9kZU5hbWUgJiYg
PQ0KYy5ub0RhdGFbZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkpIGlmIChk
WyJvbiIgKyBlXSAmJiBkWyJvbiIgKyA9DQplXS5hcHBseShkLCBiKSA9M0Q9
M0Q9M0QgZmFsc2UpIGEucmVzdWx0ID0zRCBmYWxzZQ0KICAgICAgICAgICAg
fSBjYXRjaCAoaikge30NCiAgICAgICAgICAgIGlmICghYS5pc1Byb3BhZ2F0
aW9uU3RvcHBlZCgpICYmIGYpIGMuZXZlbnQudHJpZ2dlcihhLCBiLCBmLCA9
DQp0cnVlKTsNCiAgICAgICAgICAgIGVsc2UgaWYgKCFhLmlzRGVmYXVsdFBy
ZXZlbnRlZCgpKSB7DQogICAgICAgICAgICAgICAgZiA9M0QgYS50YXJnZXQ7
DQogICAgICAgICAgICAgICAgdmFyIGksIG8gPTNEIGMubm9kZU5hbWUoZiwg
ImEiKSAmJiBlID0zRD0zRD0zRCAiY2xpY2siLA0KICAgICAgICAgICAgICAg
ICAgICBrID0zRCBjLmV2ZW50LnNwZWNpYWxbZV0gfHwge307DQogICAgICAg
ICAgICAgICAgaWYgKCghay5fZGVmYXVsdCB8fCBrLl9kZWZhdWx0LmNhbGwo
ZCwgYSkgPTNEPTNEPTNEID0NCmZhbHNlKSAmJiAhbyAmJiAhKGYgJiYgZi5u
b2RlTmFtZSAmJiA9DQpjLm5vRGF0YVtmLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCldKSkgew0KICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGZbZV0pIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaSA9M0QgZlsib24iICsgZV0pIGZbIm9uIiArIGVd
ID0zRCBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZXZl
bnQudHJpZ2dlcmVkID0zRCB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZbZV0oKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7fQ0KICAgICAgICAgICAg
ICAgICAgICBpZiAoaSkgZlsib24iICsgZV0gPTNEIGk7DQogICAgICAgICAg
ICAgICAgICAgIGMuZXZlbnQudHJpZ2dlcmVkID0zRCBmYWxzZQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAg
ICAgaGFuZGxlOiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgdmFyIGIs
IGQsIGYsIGU7DQogICAgICAgICAgICBhID0zRCBhcmd1bWVudHNbMF0gPTNE
IGMuZXZlbnQuZml4KGEgfHwgQS5ldmVudCk7DQogICAgICAgICAgICBhLmN1
cnJlbnRUYXJnZXQgPTNEIHRoaXM7DQogICAgICAgICAgICBiID0zRCBhLnR5
cGUuaW5kZXhPZigiLiIpIDwgMCAmJiAhYS5leGNsdXNpdmU7DQogICAgICAg
ICAgICBpZiAoIWIpIHsNCiAgICAgICAgICAgICAgICBkID0zRCBhLnR5cGUu
c3BsaXQoIi4iKTsNCiAgICAgICAgICAgICAgICBhLnR5cGUgPTNEIGQuc2hp
ZnQoKTsNCiAgICAgICAgICAgICAgICBmID0zRCBuZXcgUmVnRXhwKCIoXnxc
XC4pIiArID0NCmQuc2xpY2UoMCkuc29ydCgpLmpvaW4oIlxcLig/Oi4qXFwu
KT8iKSArICIoXFwufCQpIikNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IGUgPTNEIGMuZGF0YSh0aGlzLCAiZXZlbnRzIik7DQogICAgICAgICAgICBk
ID0zRCBlW2EudHlwZV07DQogICAgICAgICAgICBpZiAoZSAmJiBkKSB7DQog
ICAgICAgICAgICAgICAgZCA9M0QgZC5zbGljZSgwKTsNCiAgICAgICAgICAg
ICAgICBlID0zRCAwOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGogPTNE
IGQubGVuZ3RoOyBlIDwgajsgZSsrKSB7DQogICAgICAgICAgICAgICAgICAg
IHZhciBpID0zRCBkW2VdOw0KICAgICAgICAgICAgICAgICAgICBpZiAoYiB8
fCBmLnRlc3QoaS5uYW1lc3BhY2UpKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICBhLmhhbmRsZXIgPTNEIGkuaGFuZGxlcjsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGEuZGF0YSA9M0QgaS5kYXRhOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgYS5oYW5kbGVPYmogPTNEIGk7DQogICAgICAgICAgICAgICAg
ICAgICAgICBpID0zRCBpLmhhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRz
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9M0Q9M0Qgdykg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucmVzdWx0ID0zRCBp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID0zRD0zRD0z
RCBmYWxzZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
LnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGEuc3RvcFByb3BhZ2F0aW9uKCkNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYS5pc0ltbWVkaWF0ZVByb3BhZ2F0
aW9uU3RvcHBlZCgpKSBicmVhaw0KICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
cmV0dXJuIGEucmVzdWx0DQogICAgICAgIH0sDQogICAgICAgIHByb3BzOiAi
YWx0S2V5IGF0dHJDaGFuZ2UgYXR0ck5hbWUgYnViYmxlcyBidXR0b24gY2Fu
Y2VsYWJsZSA9DQpjaGFyQ29kZSBjbGllbnRYIGNsaWVudFkgY3RybEtleSBj
dXJyZW50VGFyZ2V0IGRhdGEgZGV0YWlsIGV2ZW50UGhhc2UgPQ0KZnJvbUVs
ZW1lbnQgaGFuZGxlciBrZXlDb2RlIGxheWVyWCBsYXllclkgbWV0YUtleSBu
ZXdWYWx1ZSBvZmZzZXRYID0NCm9mZnNldFkgb3JpZ2luYWxUYXJnZXQgcGFn
ZVggcGFnZVkgcHJldlZhbHVlIHJlbGF0ZWROb2RlIHJlbGF0ZWRUYXJnZXQg
PQ0Kc2NyZWVuWCBzY3JlZW5ZIHNoaWZ0S2V5IHNyY0VsZW1lbnQgdGFyZ2V0
IHRvRWxlbWVudCB2aWV3IHdoZWVsRGVsdGEgPQ0Kd2hpY2giLnNwbGl0KCIg
IiksDQogICAgICAgIGZpeDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAg
IGlmIChhW0ddKSByZXR1cm4gYTsNCiAgICAgICAgICAgIHZhciBiID0zRCBh
Ow0KICAgICAgICAgICAgYSA9M0QgYy5FdmVudChiKTsNCiAgICAgICAgICAg
IGZvciAodmFyIGQgPTNEIHRoaXMucHJvcHMubGVuZ3RoLCBmOyBkOykgew0K
ICAgICAgICAgICAgICAgIGYgPTNEIHRoaXMucHJvcHNbLS1kXTsNCiAgICAg
ICAgICAgICAgICBhW2ZdID0zRCBiW2ZdDQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBpZiAoIWEudGFyZ2V0KSBhLnRhcmdldCA9M0QgYS5zcmNFbGVt
ZW50IHx8IHM7DQogICAgICAgICAgICBpZiAoYS50YXJnZXQubm9kZVR5cGUg
PTNEPTNEPTNEIDMpIGEudGFyZ2V0ID0zRCA9DQphLnRhcmdldC5wYXJlbnRO
b2RlOw0KICAgICAgICAgICAgaWYgKCFhLnJlbGF0ZWRUYXJnZXQgJiYgYS5m
cm9tRWxlbWVudCkgYS5yZWxhdGVkVGFyZ2V0ID0zRCA9DQphLmZyb21FbGVt
ZW50ID0zRD0zRD0zRCBhLnRhcmdldCA/IGEudG9FbGVtZW50IDogYS5mcm9t
RWxlbWVudDsNCiAgICAgICAgICAgIGlmIChhLnBhZ2VYID0zRD0zRCBudWxs
ICYmIGEuY2xpZW50WCAhPTNEIG51bGwpIHsNCiAgICAgICAgICAgICAgICBi
ID0zRCBzLmRvY3VtZW50RWxlbWVudDsNCiAgICAgICAgICAgICAgICBkID0z
RCBzLmJvZHk7DQogICAgICAgICAgICAgICAgYS5wYWdlWCA9M0QgYS5jbGll
bnRYICsgKGIgJiYgYi5zY3JvbGxMZWZ0IHx8IGQgJiYgPQ0KZC5zY3JvbGxM
ZWZ0IHx8IDApIC0gKGIgJiYgYi5jbGllbnRMZWZ0IHx8IGQgJiYgZC5jbGll
bnRMZWZ0IHx8IDApOw0KICAgICAgICAgICAgICAgIGEucGFnZVkgPTNEIGEu
Y2xpZW50WSArIChiICYmIGIuc2Nyb2xsVG9wIHx8IGQgJiYgPQ0KZC5zY3Jv
bGxUb3AgfHwgMCkgLSAoYiAmJiBiLmNsaWVudFRvcCB8fCBkICYmIGQuY2xp
ZW50VG9wIHx8IDApDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAo
IWEud2hpY2ggJiYgKGEuY2hhckNvZGUgfHwgYS5jaGFyQ29kZSA9M0Q9M0Q9
M0QgMCA/ID0NCmEuY2hhckNvZGUgOiBhLmtleUNvZGUpKSBhLndoaWNoID0z
RCBhLmNoYXJDb2RlIHx8IGEua2V5Q29kZTsNCiAgICAgICAgICAgIGlmICgh
YS5tZXRhS2V5ICYmIGEuY3RybEtleSkgYS5tZXRhS2V5ID0zRCBhLmN0cmxL
ZXk7DQogICAgICAgICAgICBpZiAoIWEud2hpY2ggJiYgYS5idXR0b24gIT0z
RD0zRCB3KSBhLndoaWNoID0zRCBhLmJ1dHRvbiAmIDEgPQ0KPyAxIDogYS5i
dXR0b24gJiAyID8gMyA6IGEuYnV0dG9uICYgNCA/IDIgOiAwOw0KICAgICAg
ICAgICAgcmV0dXJuIGENCiAgICAgICAgfSwNCiAgICAgICAgZ3VpZDogMUU4
LA0KICAgICAgICBwcm94eTogYy5wcm94eSwNCiAgICAgICAgc3BlY2lhbDog
ew0KICAgICAgICAgICAgcmVhZHk6IHsNCiAgICAgICAgICAgICAgICBzZXR1
cDogYy5iaW5kUmVhZHksDQogICAgICAgICAgICAgICAgdGVhcmRvd246IGMu
bm9vcA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGxpdmU6IHsNCiAg
ICAgICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAg
ICAgICAgICAgIGMuZXZlbnQuYWRkKHRoaXMsIGEub3JpZ1R5cGUsIGMuZXh0
ZW5kKHt9LCBhLCB7DQogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVy
OiBvYQ0KICAgICAgICAgICAgICAgICAgICB9KSkNCiAgICAgICAgICAgICAg
ICB9LA0KICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKGEpIHsN
CiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPTNEIHRydWUsDQogICAgICAg
ICAgICAgICAgICAgICAgICBkID0zRCBhLm9yaWdUeXBlLnJlcGxhY2UoTywg
IiIpOw0KICAgICAgICAgICAgICAgICAgICBjLmVhY2goYy5kYXRhKHRoaXMs
ICJldmVudHMiKS5saXZlIHx8IFtdLCBmdW5jdGlvbiA9DQooKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZCA9M0Q9M0Q9M0QgdGhpcy5vcmln
VHlwZS5yZXBsYWNlKE8sICIiKSkgPQ0KcmV0dXJuIGIgPTNEIGZhbHNlDQog
ICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICBi
ICYmIGMuZXZlbnQucmVtb3ZlKHRoaXMsIGEub3JpZ1R5cGUsIG9hKQ0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBi
ZWZvcmV1bmxvYWQ6IHsNCiAgICAgICAgICAgICAgICBzZXR1cDogZnVuY3Rp
b24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMu
c2V0SW50ZXJ2YWwpIHRoaXMub25iZWZvcmV1bmxvYWQgPTNEIGQ7DQogICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZQ0KICAgICAgICAgICAgICAg
IH0sDQogICAgICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uIChhLCBi
KSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9uYmVmb3JldW5s
b2FkID0zRD0zRD0zRCBiKSA9DQp0aGlzLm9uYmVmb3JldW5sb2FkID0zRCBu
dWxsDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgfTsNCiAgICB2YXIgQ2EgPTNEIHMucmVtb3ZlRXZlbnRMaXN0
ZW5lciA/DQogICAgZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgYS5y
ZW1vdmVFdmVudExpc3RlbmVyKGIsIGQsIGZhbHNlKQ0KICAgIH0gOiBmdW5j
dGlvbiAoYSwgYiwgZCkgew0KICAgICAgICBhLmRldGFjaEV2ZW50KCJvbiIg
KyBiLCBkKQ0KICAgIH07DQogICAgYy5FdmVudCA9M0QgZnVuY3Rpb24gKGEp
IHsNCiAgICAgICAgaWYgKCF0aGlzLnByZXZlbnREZWZhdWx0KSByZXR1cm4g
bmV3IGMuRXZlbnQoYSk7DQogICAgICAgIGlmIChhICYmIGEudHlwZSkgew0K
ICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0zRA0KICAgICAgICAg
ICAgYTsNCiAgICAgICAgICAgIHRoaXMudHlwZSA9M0QgYS50eXBlDQogICAg
ICAgIH0gZWxzZSB0aGlzLnR5cGUgPTNEIGE7DQogICAgICAgIHRoaXMudGlt
ZVN0YW1wID0zRCBKKCk7DQogICAgICAgIHRoaXNbR10gPTNEIHRydWUNCiAg
ICB9Ow0KICAgIGMuRXZlbnQucHJvdG90eXBlID0zRCB7DQogICAgICAgIHBy
ZXZlbnREZWZhdWx0OiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlz
LmlzRGVmYXVsdFByZXZlbnRlZCA9M0QgWjsNCiAgICAgICAgICAgIHZhciBh
ID0zRCB0aGlzLm9yaWdpbmFsRXZlbnQ7DQogICAgICAgICAgICBpZiAoYSkg
ew0KICAgICAgICAgICAgICAgIGEucHJldmVudERlZmF1bHQgJiYgYS5wcmV2
ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgIGEucmV0dXJuVmFsdWUg
PTNEIGZhbHNlDQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAg
IHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAg
dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9M0QgWjsNCiAgICAgICAgICAg
IHZhciBhID0zRCB0aGlzLm9yaWdpbmFsRXZlbnQ7DQogICAgICAgICAgICBp
ZiAoYSkgew0KICAgICAgICAgICAgICAgIGEuc3RvcFByb3BhZ2F0aW9uICYm
IGEuc3RvcFByb3BhZ2F0aW9uKCk7DQogICAgICAgICAgICAgICAgYS5jYW5j
ZWxCdWJibGUgPTNEIHRydWUNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwN
CiAgICAgICAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbiAo
KSB7DQogICAgICAgICAgICB0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25T
dG9wcGVkID0zRCBaOw0KICAgICAgICAgICAgdGhpcy5zdG9wUHJvcGFnYXRp
b24oKQ0KICAgICAgICB9LA0KICAgICAgICBpc0RlZmF1bHRQcmV2ZW50ZWQ6
IFksDQogICAgICAgIGlzUHJvcGFnYXRpb25TdG9wcGVkOiBZLA0KICAgICAg
ICBpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogWQ0KICAgIH07DQog
ICAgdmFyIERhID0zRCBmdW5jdGlvbiAoYSkgew0KICAgICAgICB2YXIgYiA9
M0QgYS5yZWxhdGVkVGFyZ2V0Ow0KICAgICAgICB0cnkgew0KICAgICAgICAg
ICAgZm9yICg7IGIgJiYgYiAhPTNEPTNEIHRoaXM7KSBiID0zRCBiLnBhcmVu
dE5vZGU7DQogICAgICAgICAgICBpZiAoYiAhPTNEPTNEIHRoaXMpIHsNCiAg
ICAgICAgICAgICAgICBhLnR5cGUgPTNEIGEuZGF0YTsNCiAgICAgICAgICAg
ICAgICBjLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpDQog
ICAgICAgICAgICB9DQogICAgICAgIH0gY2F0Y2ggKGQpIHt9DQogICAgfSwN
CiAgICAgICAgRWEgPTNEIGZ1bmN0aW9uIChhKSB7DQogICAgICAgIGEudHlw
ZSA9M0QgYS5kYXRhOw0KICAgICAgICBjLmV2ZW50LmhhbmRsZS5hcHBseSh0
aGlzLCBhcmd1bWVudHMpDQogICAgfTsNCiAgICBjLmVhY2goew0KICAgICAg
ICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwNCiAgICAgICAgbW91c2VsZWF2
ZTogIm1vdXNlb3V0Ig0KICAgIH0sIGZ1bmN0aW9uIChhLCBiKSB7DQogICAg
ICAgIGMuZXZlbnQuc3BlY2lhbFthXSA9M0Qgew0KICAgICAgICAgICAgc2V0
dXA6IGZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgICAgICAgYy5ldmVudC5h
ZGQodGhpcywgYiwgZCAmJiBkLnNlbGVjdG9yID8gRWEgOiBEYSwgYSkNCiAg
ICAgICAgICAgIH0sDQogICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24g
KGQpIHsNCiAgICAgICAgICAgICAgICBjLmV2ZW50LnJlbW92ZSh0aGlzLCBi
LCBkICYmIGQuc2VsZWN0b3IgPyBFYSA6IERhKQ0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQogICAgfSk7DQogICAgaWYgKCFjLnN1cHBvcnQuc3VibWl0
QnViYmxlcykgYy5ldmVudC5zcGVjaWFsLnN1Ym1pdCA9M0Qgew0KICAgICAg
ICBzZXR1cDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgaWYgKHRoaXMu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPTNEPTNEICJmb3JtIikgew0KICAg
ICAgICAgICAgICAgIGMuZXZlbnQuYWRkKHRoaXMsICJjbGljay5zcGVjaWFs
U3VibWl0IiwgZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgICAgICAgICAg
dmFyIGIgPTNEIGEudGFyZ2V0LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ZCA9M0QgYi50eXBlOw0KICAgICAgICAgICAgICAgICAgICBpZiAoKGQgPTNE
PTNEPTNEICJzdWJtaXQiIHx8IGQgPTNEPTNEPTNEICJpbWFnZSIpICYmID0N
CmMoYikuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aCkgcmV0dXJuIG5hKCJzdWJt
aXQiLCB0aGlzLCBhcmd1bWVudHMpDQogICAgICAgICAgICAgICAgfSk7DQog
ICAgICAgICAgICAgICAgYy5ldmVudC5hZGQodGhpcywgImtleXByZXNzLnNw
ZWNpYWxTdWJtaXQiLCBmdW5jdGlvbiAoYSkgPQ0Kew0KICAgICAgICAgICAg
ICAgICAgICB2YXIgYiA9M0QgYS50YXJnZXQsDQogICAgICAgICAgICAgICAg
ICAgICAgICBkID0zRCBiLnR5cGU7DQogICAgICAgICAgICAgICAgICAgIGlm
ICgoZCA9M0Q9M0Q9M0QgInRleHQiIHx8IGQgPTNEPTNEPTNEICJwYXNzd29y
ZCIpID0NCiYmIGMoYikuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aCAmJiBhLmtl
eUNvZGUgPTNEPTNEPTNEIDEzKSByZXR1cm4gPQ0KbmEoInN1Ym1pdCIsIHRo
aXMsIGFyZ3VtZW50cykNCiAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAg
ICAgfSBlbHNlIHJldHVybiBmYWxzZQ0KICAgICAgICB9LA0KICAgICAgICB0
ZWFyZG93bjogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgYy5ldmVudC5y
ZW1vdmUodGhpcywgIi5zcGVjaWFsU3VibWl0IikNCiAgICAgICAgfQ0KICAg
IH07DQogICAgaWYgKCFjLnN1cHBvcnQuY2hhbmdlQnViYmxlcykgew0KICAg
ICAgICB2YXIgZGEgPTNEIC90ZXh0YXJlYXxpbnB1dHxzZWxlY3QvaSwNCiAg
ICAgICAgICAgIGVhLCBGYSA9M0QgZnVuY3Rpb24gKGEpIHsNCiAgICAgICAg
ICAgIHZhciBiID0zRCBhLnR5cGUsDQogICAgICAgICAgICAgICAgZCA9M0Qg
YS52YWx1ZTsNCiAgICAgICAgICAgIGlmIChiID0zRD0zRD0zRCAicmFkaW8i
IHx8IGIgPTNEPTNEPTNEICJjaGVja2JveCIpIGQgPTNEID0NCmEuY2hlY2tl
ZDsNCiAgICAgICAgICAgIGVsc2UgaWYgKGIgPTNEPTNEPTNEICJzZWxlY3Qt
bXVsdGlwbGUiKSBkID0zRCA9DQphLnNlbGVjdGVkSW5kZXggPiAtMSA/IGMu
bWFwKGEub3B0aW9ucywgZnVuY3Rpb24gKGYpIHsNCiAgICAgICAgICAgICAg
ICByZXR1cm4gZi5zZWxlY3RlZA0KICAgICAgICAgICAgfSkuam9pbigiLSIp
IDogIiI7DQogICAgICAgICAgICBlbHNlIGlmIChhLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCkgPTNEPTNEPTNEICJzZWxlY3QiKSBkID0zRCA9DQphLnNlbGVj
dGVkSW5kZXg7DQogICAgICAgICAgICByZXR1cm4gZA0KICAgICAgICB9LA0K
ICAgICAgICAgICAgZmEgPTNEIGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAg
ICAgICB2YXIgZCA9M0QgYS50YXJnZXQsDQogICAgICAgICAgICAgICAgZiwg
ZTsNCiAgICAgICAgICAgIGlmICghKCFkYS50ZXN0KGQubm9kZU5hbWUpIHx8
IGQucmVhZE9ubHkpKSB7DQogICAgICAgICAgICAgICAgZiA9M0QgYy5kYXRh
KGQsICJfY2hhbmdlX2RhdGEiKTsNCiAgICAgICAgICAgICAgICBlID0zRCBG
YShkKTsNCiAgICAgICAgICAgICAgICBpZiAoYS50eXBlICE9M0Q9M0QgImZv
Y3Vzb3V0IiB8fCBkLnR5cGUgIT0zRD0zRCAicmFkaW8iKSA9DQpjLmRhdGEo
ZCwgIl9jaGFuZ2VfZGF0YSIsIGUpOw0KICAgICAgICAgICAgICAgIGlmICgh
KGYgPTNEPTNEPTNEIHcgfHwgZSA9M0Q9M0Q9M0QgZikpIGlmIChmICE9M0Qg
bnVsbCA9DQp8fCBlKSB7DQogICAgICAgICAgICAgICAgICAgIGEudHlwZSA9
M0QgImNoYW5nZSI7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBjLmV2
ZW50LnRyaWdnZXIoYSwgYiwgZCkNCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICB9DQogICAgICAgIH07DQogICAgICAgIGMuZXZlbnQuc3BlY2lh
bC5jaGFuZ2UgPTNEIHsNCiAgICAgICAgICAgIGZpbHRlcnM6IHsNCiAgICAg
ICAgICAgICAgICBmb2N1c291dDogZmEsDQogICAgICAgICAgICAgICAgY2xp
Y2s6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBi
ID0zRCBhLnRhcmdldCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGQgPTNE
IGIudHlwZTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPTNEPTNEPTNE
ICJyYWRpbyIgfHwgZCA9M0Q9M0Q9M0QgImNoZWNrYm94IiB8fCA9DQpiLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkgPTNEPTNEPTNEICJzZWxlY3QiKSByZXR1
cm4gZmEuY2FsbCh0aGlzLCBhKQ0KICAgICAgICAgICAgICAgIH0sDQogICAg
ICAgICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAg
ICAgICAgICAgICAgdmFyIGIgPTNEIGEudGFyZ2V0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgZCA9M0QgYi50eXBlOw0KICAgICAgICAgICAgICAgICAg
ICBpZiAoYS5rZXlDb2RlID0zRD0zRD0zRCAxMyAmJiA9DQpiLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkgIT0zRD0zRCAidGV4dGFyZWEiIHx8IGEua2V5Q29k
ZSA9M0Q9M0Q9M0QgMzIgJiYgPQ0KKGQgPTNEPTNEPTNEICJjaGVja2JveCIg
fHwgZCA9M0Q9M0Q9M0QgInJhZGlvIikgfHwgZCA9M0Q9M0Q9M0QgPQ0KInNl
bGVjdC1tdWx0aXBsZSIpIHJldHVybiBmYS5jYWxsKHRoaXMsIGEpDQogICAg
ICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBiZWZvcmVhY3RpdmF0
ZTogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgICAgICAgICAgYSA9M0Qg
YS50YXJnZXQ7DQogICAgICAgICAgICAgICAgICAgIGMuZGF0YShhLCAiX2No
YW5nZV9kYXRhIiwgRmEoYSkpDQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgfSwNCiAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9M0Q9M0Q9M0QgImZpbGUi
KSByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgYSBp
biBlYSkgYy5ldmVudC5hZGQodGhpcywgYSArID0NCiIuc3BlY2lhbENoYW5n
ZSIsIGVhW2FdKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZGEudGVzdCh0
aGlzLm5vZGVOYW1lKQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHRl
YXJkb3duOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgYy5ldmVu
dC5yZW1vdmUodGhpcywgIi5zcGVjaWFsQ2hhbmdlIik7DQogICAgICAgICAg
ICAgICAgcmV0dXJuIGRhLnRlc3QodGhpcy5ub2RlTmFtZSkNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgfTsNCiAgICAgICAgZWEgPTNEIGMuZXZlbnQuc3Bl
Y2lhbC5jaGFuZ2UuZmlsdGVycw0KICAgIH0NCiAgICBzLmFkZEV2ZW50TGlz
dGVuZXIgJiYgYy5lYWNoKHsNCiAgICAgICAgZm9jdXM6ICJmb2N1c2luIiwN
CiAgICAgICAgYmx1cjogImZvY3Vzb3V0Ig0KICAgIH0sIGZ1bmN0aW9uIChh
LCBiKSB7DQogICAgICAgIGZ1bmN0aW9uIGQoZikgew0KICAgICAgICAgICAg
ZiA9M0QgYy5ldmVudC5maXgoZik7DQogICAgICAgICAgICBmLnR5cGUgPTNE
IGI7DQogICAgICAgICAgICByZXR1cm4gYy5ldmVudC5oYW5kbGUuY2FsbCh0
aGlzLCBmKQ0KICAgICAgICB9DQogICAgICAgIGMuZXZlbnQuc3BlY2lhbFti
XSA9M0Qgew0KICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoYSwgZCwgdHJ1
ZSkNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB0ZWFyZG93bjogZnVu
Y3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRM
aXN0ZW5lcihhLCBkLCB0cnVlKQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQogICAgfSk7DQogICAgYy5lYWNoKFsiYmluZCIsICJvbmUiXSwgZnVuY3Rp
b24gKGEsIGIpIHsNCiAgICAgICAgYy5mbltiXSA9M0QgZnVuY3Rpb24gKGQs
IGYsIGUpIHsNCiAgICAgICAgICAgIGlmICh0eXBlb2YgZCA9M0Q9M0Q9M0Qg
Im9iamVjdCIpIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIGQp
IHRoaXNbYl0oaiwgZiwgZFtqXSwgZSk7DQogICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChjLmlz
RnVuY3Rpb24oZikpIHsNCiAgICAgICAgICAgICAgICBlID0zRCBmOw0KICAg
ICAgICAgICAgICAgIGYgPTNEIHcNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHZhciBpID0zRCBiID0zRD0zRD0zRCAib25lIiA/IGMucHJveHkoZSwg
ZnVuY3Rpb24gKGspIHsNCiAgICAgICAgICAgICAgICBjKHRoaXMpLnVuYmlu
ZChrLCBpKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZS5hcHBseSh0aGlz
LCBhcmd1bWVudHMpDQogICAgICAgICAgICB9KSA6IGU7DQogICAgICAgICAg
ICBpZiAoZCA9M0Q9M0Q9M0QgInVubG9hZCIgJiYgYiAhPTNEPTNEICJvbmUi
KSB0aGlzLm9uZShkLCBmLCA9DQplKTsNCiAgICAgICAgICAgIGVsc2Ugew0K
ICAgICAgICAgICAgICAgIGogPTNEIDA7DQogICAgICAgICAgICAgICAgZm9y
ICh2YXIgbyA9M0QgdGhpcy5sZW5ndGg7IGogPCBvOyBqKyspID0NCmMuZXZl
bnQuYWRkKHRoaXNbal0sIGQsIGksIGYpDQogICAgICAgICAgICB9DQogICAg
ICAgICAgICByZXR1cm4gdGhpcw0KICAgICAgICB9DQogICAgfSk7DQogICAg
Yy5mbi5leHRlbmQoew0KICAgICAgICB1bmJpbmQ6IGZ1bmN0aW9uIChhLCBi
KSB7DQogICAgICAgICAgICBpZiAodHlwZW9mIGEgPTNEPTNEPTNEICJvYmpl
Y3QiICYmICFhLnByZXZlbnREZWZhdWx0KSBmb3IgPQ0KKHZhciBkIGluIGEp
IHRoaXMudW5iaW5kKGQsIGFbZF0pOw0KICAgICAgICAgICAgZWxzZSB7DQog
ICAgICAgICAgICAgICAgZCA9M0QgMDsNCiAgICAgICAgICAgICAgICBmb3Ig
KHZhciBmID0zRCB0aGlzLmxlbmd0aDsgZCA8IGY7IGQrKykgPQ0KYy5ldmVu
dC5yZW1vdmUodGhpc1tkXSwgYSwgYikNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIHJldHVybiB0aGlzDQogICAgICAgIH0sDQogICAgICAgIGRlbGVn
YXRlOiBmdW5jdGlvbiAoYSwgYiwgZCwgZikgew0KICAgICAgICAgICAgcmV0
dXJuIHRoaXMubGl2ZShiLCBkLCBmLCBhKQ0KICAgICAgICB9LA0KICAgICAg
ICB1bmRlbGVnYXRlOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAg
ICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPTNEPTNEPTNEIDAgPyB0aGlz
LnVuYmluZCgibGl2ZSIpIDogPQ0KdGhpcy5kaWUoYiwgbnVsbCwgZCwgYSkN
CiAgICAgICAgfSwNCiAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24gKGEsIGIp
IHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkg
ew0KICAgICAgICAgICAgICAgIGMuZXZlbnQudHJpZ2dlcihhLCBiLCB0aGlz
KQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAgICAgdHJpZ2dl
ckhhbmRsZXI6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBpZiAo
dGhpc1swXSkgew0KICAgICAgICAgICAgICAgIGEgPTNEIGMuRXZlbnQoYSk7
DQogICAgICAgICAgICAgICAgYS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAg
ICAgICAgICAgIGEuc3RvcFByb3BhZ2F0aW9uKCk7DQogICAgICAgICAgICAg
ICAgYy5ldmVudC50cmlnZ2VyKGEsIGIsIHRoaXNbMF0pOw0KICAgICAgICAg
ICAgICAgIHJldHVybiBhLnJlc3VsdA0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9LA0KICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uIChhKSB7DQogICAgICAg
ICAgICBmb3IgKHZhciBiID0zRCBhcmd1bWVudHMsIGQgPTNEIDE7IGQgPCBi
Lmxlbmd0aDspIGMucHJveHkoYSwgPQ0KYltkKytdKTsNCiAgICAgICAgICAg
IHJldHVybiB0aGlzLmNsaWNrKGMucHJveHkoYSwgZnVuY3Rpb24gKGYpIHsN
CiAgICAgICAgICAgICAgICB2YXIgZSA9M0QgKGMuZGF0YSh0aGlzLCAibGFz
dFRvZ2dsZSIgKyBhLmd1aWQpIHx8IDApICUgPQ0KZDsNCiAgICAgICAgICAg
ICAgICBjLmRhdGEodGhpcywgImxhc3RUb2dnbGUiICsgYS5ndWlkLCBlICsg
MSk7DQogICAgICAgICAgICAgICAgZi5wcmV2ZW50RGVmYXVsdCgpOw0KICAg
ICAgICAgICAgICAgIHJldHVybiBiW2VdLmFwcGx5KHRoaXMsIGFyZ3VtZW50
cykgfHwgZmFsc2UNCiAgICAgICAgICAgIH0pKQ0KICAgICAgICB9LA0KICAg
ICAgICBob3ZlcjogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIHJl
dHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShiIHx8IGEpDQog
ICAgICAgIH0NCiAgICB9KTsNCiAgICB2YXIgR2EgPTNEIHsNCiAgICAgICAg
Zm9jdXM6ICJmb2N1c2luIiwNCiAgICAgICAgYmx1cjogImZvY3Vzb3V0IiwN
CiAgICAgICAgbW91c2VlbnRlcjogIm1vdXNlb3ZlciIsDQogICAgICAgIG1v
dXNlbGVhdmU6ICJtb3VzZW91dCINCiAgICB9Ow0KICAgIGMuZWFjaChbImxp
dmUiLCAiZGllIl0sIGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgIGMuZm5b
Yl0gPTNEIGZ1bmN0aW9uIChkLCBmLCBlLCBqKSB7DQogICAgICAgICAgICB2
YXIgaSwgbyA9M0QgMCwNCiAgICAgICAgICAgICAgICBrLCBuLCByID0zRCBq
IHx8IHRoaXMuc2VsZWN0b3IsDQogICAgICAgICAgICAgICAgdSA9M0QgaiA/
IHRoaXMgOiBjKHRoaXMuY29udGV4dCk7DQogICAgICAgICAgICBpZiAoYy5p
c0Z1bmN0aW9uKGYpKSB7DQogICAgICAgICAgICAgICAgZSA9M0QgZjsNCiAg
ICAgICAgICAgICAgICBmID0zRCB3DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBmb3IgKGQgPTNEIChkIHx8ICIiKS5zcGxpdCgiICIpOw0KICAgICAg
ICAgICAgKGkgPTNEIGRbbysrXSkgIT0zRCBudWxsOykgew0KICAgICAgICAg
ICAgICAgIGogPTNEIE8uZXhlYyhpKTsNCiAgICAgICAgICAgICAgICBrID0z
RCAiIjsNCiAgICAgICAgICAgICAgICBpZiAoaikgew0KICAgICAgICAgICAg
ICAgICAgICBrID0zRCBqWzBdOw0KICAgICAgICAgICAgICAgICAgICBpID0z
RCBpLnJlcGxhY2UoTywgIiIpDQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIGlmIChpID0zRD0zRD0zRCAiaG92ZXIiKSBkLnB1c2goIm1v
dXNlZW50ZXIiICsgaywgPQ0KIm1vdXNlbGVhdmUiICsgayk7DQogICAgICAg
ICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIG4gPTNEIGk7
DQogICAgICAgICAgICAgICAgICAgIGlmIChpID0zRD0zRD0zRCAiZm9jdXMi
IHx8IGkgPTNEPTNEPTNEICJibHVyIikgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgZC5wdXNoKEdhW2ldICsgayk7DQogICAgICAgICAgICAgICAgICAg
ICAgICBpICs9M0Qgaw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaSA9
M0QgKEdhW2ldIHx8IGkpICsgazsNCiAgICAgICAgICAgICAgICAgICAgYiA9
M0Q9M0Q9M0QgImxpdmUiID8gdS5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGMuZXZlbnQuYWRkKHRoaXMsIHBhKGksIHIp
LCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZiwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjogciwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBlLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9yaWdUeXBlOiBpLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9yaWdIYW5kbGVyOiBlLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZVR5cGU6IG4NCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgIH0pIDogdS51bmJpbmQo
cGEoaSwgciksIGUpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAgICAgfQ0KICAgIH0p
Ow0KICAgIGMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxv
YWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgPQ0KZGJsY2xpY2sgbW91
c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBt
b3VzZWVudGVyID0NCm1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQg
a2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciIuc3BsaXQoIiA9DQoiKSwg
ZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgYy5mbltiXSA9M0QgZnVuY3Rp
b24gKGQpIHsNCiAgICAgICAgICAgIHJldHVybiBkID8gdGhpcy5iaW5kKGIs
IGQpIDogdGhpcy50cmlnZ2VyKGIpDQogICAgICAgIH07DQogICAgICAgIGlm
IChjLmF0dHJGbikgYy5hdHRyRm5bYl0gPTNEIHRydWUNCiAgICB9KTsNCiAg
ICBBLmF0dGFjaEV2ZW50ICYmICFBLmFkZEV2ZW50TGlzdGVuZXIgJiYgQS5h
dHRhY2hFdmVudCgib251bmxvYWQiLCA9DQpmdW5jdGlvbiAoKSB7DQogICAg
ICAgIGZvciAodmFyIGEgaW4gYy5jYWNoZSkgaWYgKGMuY2FjaGVbYV0uaGFu
ZGxlKSB0cnkgew0KICAgICAgICAgICAgYy5ldmVudC5yZW1vdmUoYy5jYWNo
ZVthXS5oYW5kbGUuZWxlbSkNCiAgICAgICAgfSBjYXRjaCAoYikge30NCiAg
ICB9KTsNCiAgICAoZnVuY3Rpb24gKCkgew0KICAgICAgICBmdW5jdGlvbiBh
KGcpIHsNCiAgICAgICAgICAgIGZvciAodmFyIGggPTNEICIiLCBsLCBtID0z
RCAwOyBnW21dOyBtKyspIHsNCiAgICAgICAgICAgICAgICBsID0zRCBnW21d
Ow0KICAgICAgICAgICAgICAgIGlmIChsLm5vZGVUeXBlID0zRD0zRD0zRCAz
IHx8IGwubm9kZVR5cGUgPTNEPTNEPTNEIDQpIGggPQ0KKz0zRCBsLm5vZGVW
YWx1ZTsNCiAgICAgICAgICAgICAgICBlbHNlIGlmIChsLm5vZGVUeXBlICE9
M0Q9M0QgOCkgaCArPTNEIGEobC5jaGlsZE5vZGVzKQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgcmV0dXJuIGgNCiAgICAgICAgfQ0KICAgICAgICBm
dW5jdGlvbiBiKGcsIGgsIGwsIG0sIHEsIHApIHsNCiAgICAgICAgICAgIHEg
PTNEIDA7DQogICAgICAgICAgICBmb3IgKHZhciB2ID0zRCBtLmxlbmd0aDsg
cSA8IHY7IHErKykgew0KICAgICAgICAgICAgICAgIHZhciB0ID0zRCBtW3Fd
Ow0KICAgICAgICAgICAgICAgIGlmICh0KSB7DQogICAgICAgICAgICAgICAg
ICAgIHQgPTNEIHRbZ107DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IHkgPTNEIGZhbHNlOyB0Oykgew0KICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHQuc2l6Y2FjaGUgPTNEPTNEPTNEIGwpIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB5ID0zRCBtW3Quc2l6c2V0XTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQubm9kZVR5cGUg
PTNEPTNEPTNEIDEgJiYgIXApIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0LnNpemNhY2hlID0zRCBsOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHQuc2l6c2V0ID0zRCBxDQogICAgICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpID0zRD0zRD0zRCBoKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeSA9M0QgdDsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhaw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgdCA9M0QgdFtnXQ0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIG1bcV0gPTNEIHkNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAg
ICAgZnVuY3Rpb24gZChnLCBoLCBsLCBtLCBxLCBwKSB7DQogICAgICAgICAg
ICBxID0zRCAwOw0KICAgICAgICAgICAgZm9yICh2YXIgdiA9M0QgbS5sZW5n
dGg7IHEgPCB2OyBxKyspIHsNCiAgICAgICAgICAgICAgICB2YXIgdCA9M0Qg
bVtxXTsNCiAgICAgICAgICAgICAgICBpZiAodCkgew0KICAgICAgICAgICAg
ICAgICAgICB0ID0zRCB0W2ddOw0KICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciB5ID0zRCBmYWxzZTsgdDspIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0LnNpemNhY2hlID0zRD0zRD0zRCBsKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeSA9M0QgbVt0LnNpenNldF07DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lm5vZGVU
eXBlID0zRD0zRD0zRCAxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHQuc2l6Y2FjaGUgPTNEIGw7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHQuc2l6c2V0ID0zRCBxDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBl
b2YgaCAhPTNEPTNEICJzdHJpbmciKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ID0zRD0zRD0zRCBoKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0zRCB0cnVlOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoay5maWx0ZXIoaCwgW3RdKS5sZW5ndGgg
PiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPTNE
IHQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgdCA9M0QgdFtn
XQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAg
IG1bcV0gPTNEIHkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICAgICAgdmFyIGYgPTNEID0NCi8oKD86XCgoPzpc
KFteKCldK1wpfFteKCldKykrXCl8XFsoPzpcW1teW1xdXSpcXXxbJyJdW14n
Il0qWyciXXxbXltcXSciXSs9DQopK1xdfFxcLnxbXiA+K34sKFxbXFxdKykr
fFs+K35dKShccyosXHMqKT8oKD86LnxccnxcbikqKS9nLA0KICAgICAgICAg
ICAgZSA9M0QgMCwNCiAgICAgICAgICAgIGogPTNEIE9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcsDQogICAgICAgICAgICBpID0zRCBmYWxzZSwNCiAgICAg
ICAgICAgIG8gPTNEIHRydWU7DQogICAgICAgIFswLCAwXS5zb3J0KGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgICAgIG8gPTNEIGZhbHNlOw0KICAgICAgICAg
ICAgcmV0dXJuIDANCiAgICAgICAgfSk7DQogICAgICAgIHZhciBrID0zRCBm
dW5jdGlvbiAoZywgaCwgbCwgbSkgew0KICAgICAgICAgICAgbCA9M0QgbCB8
fCBbXTsNCiAgICAgICAgICAgIHZhciBxID0zRCBoID0zRCBoIHx8IHM7DQog
ICAgICAgICAgICBpZiAoaC5ub2RlVHlwZSAhPTNEPTNEIDEgJiYgaC5ub2Rl
VHlwZSAhPTNEPTNEIDkpIHJldHVybiBbXTsNCiAgICAgICAgICAgIGlmICgh
ZyB8fCB0eXBlb2YgZyAhPTNEPTNEICJzdHJpbmciKSByZXR1cm4gbDsNCiAg
ICAgICAgICAgIGZvciAodmFyIHAgPTNEIFtdLCB2LCB0LCB5LCBTLCBIID0z
RCB0cnVlLCBNID0zRCB4KGgpLCBJID0zRCA9DQpnOw0KICAgICAgICAgICAg
KGYuZXhlYygiIiksIHYgPTNEIGYuZXhlYyhJKSkgIT0zRD0zRCBudWxsOykg
ew0KICAgICAgICAgICAgICAgIEkgPTNEIHZbM107DQogICAgICAgICAgICAg
ICAgcC5wdXNoKHZbMV0pOw0KICAgICAgICAgICAgICAgIGlmICh2WzJdKSB7
DQogICAgICAgICAgICAgICAgICAgIFMgPTNEIHZbM107DQogICAgICAgICAg
ICAgICAgICAgIGJyZWFrDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgaWYgKHAubGVuZ3RoID4gMSAmJiByLmV4ZWMo
ZykpIGlmIChwLmxlbmd0aCA9M0Q9M0Q9M0QgMiAmJiA9DQpuLnJlbGF0aXZl
W3BbMF1dKSB0ID0zRCBnYShwWzBdICsgcFsxXSwgaCk7DQogICAgICAgICAg
ICBlbHNlIGZvciAodCA9M0Qgbi5yZWxhdGl2ZVtwWzBdXSA/IFtoXSA6IGso
cC5zaGlmdCgpLCBoKTsgPQ0KcC5sZW5ndGg7KSB7DQogICAgICAgICAgICAg
ICAgZyA9M0QgcC5zaGlmdCgpOw0KICAgICAgICAgICAgICAgIGlmIChuLnJl
bGF0aXZlW2ddKSBnICs9M0QgcC5zaGlmdCgpOw0KICAgICAgICAgICAgICAg
IHQgPTNEIGdhKGcsIHQpDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgICAgIGlmICghbSAmJiBwLmxlbmd0aCA+IDEgJiYgaC5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgOSAmJiAhTSA9DQomJiBuLm1hdGNoLklELnRlc3QocFsw
XSkgJiYgIW4ubWF0Y2guSUQudGVzdChwW3AubGVuZ3RoIC0gMV0pKSB7DQog
ICAgICAgICAgICAgICAgICAgIHYgPTNEIGsuZmluZChwLnNoaWZ0KCksIGgs
IE0pOw0KICAgICAgICAgICAgICAgICAgICBoID0zRCB2LmV4cHIgPyBrLmZp
bHRlcih2LmV4cHIsIHYuc2V0KVswXSA6IHYuc2V0WzBdDQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChoKSB7DQogICAgICAgICAg
ICAgICAgICAgIHYgPTNEIG0gPyB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBleHByOiBwLnBvcCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgc2V0
OiB6KG0pDQogICAgICAgICAgICAgICAgICAgIH0gOiBrLmZpbmQocC5wb3Ao
KSwgcC5sZW5ndGggPTNEPTNEPTNEIDEgJiYgKHBbMF0gPQ0KPTNEPTNEPTNE
ICJ+IiB8fCBwWzBdID0zRD0zRD0zRCAiKyIpICYmIGgucGFyZW50Tm9kZSA/
IGgucGFyZW50Tm9kZSA6IGgsID0NCk0pOw0KICAgICAgICAgICAgICAgICAg
ICB0ID0zRCB2LmV4cHIgPyBrLmZpbHRlcih2LmV4cHIsIHYuc2V0KSA6IHYu
c2V0Ow0KICAgICAgICAgICAgICAgICAgICBpZiAocC5sZW5ndGggPiAwKSB5
ID0zRCB6KHQpOw0KICAgICAgICAgICAgICAgICAgICBlbHNlIEggPTNEIGZh
bHNlOw0KICAgICAgICAgICAgICAgICAgICBmb3IgKDsgcC5sZW5ndGg7KSB7
DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgRCA9M0QgcC5wb3AoKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHYgPTNEIEQ7DQogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobi5yZWxhdGl2ZVtEXSkgdiA9M0QgcC5wb3Ao
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRCA9M0QgIiI7DQog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodiA9M0Q9M0QgbnVsbCkgdiA9
M0QgaDsNCiAgICAgICAgICAgICAgICAgICAgICAgIG4ucmVsYXRpdmVbRF0o
eSwgdiwgTSkNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIH0gZWxzZSB5ID0zRCBbXQ0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgeSB8fCAoeSA9M0QgdCk7DQogICAgICAgICAgICB5IHx8IGsuZXJyb3Io
RCB8fCBnKTsNCiAgICAgICAgICAgIGlmIChqLmNhbGwoeSkgPTNEPTNEPTNE
ICJbb2JqZWN0IEFycmF5XSIpIGlmIChIKSBpZiAoaCAmJiA9DQpoLm5vZGVU
eXBlID0zRD0zRD0zRCAxKSBmb3IgKGcgPTNEIDA7IHlbZ10gIT0zRCBudWxs
OyBnKyspIHsNCiAgICAgICAgICAgICAgICBpZiAoeVtnXSAmJiAoeVtnXSA9
M0Q9M0Q9M0QgdHJ1ZSB8fCB5W2ddLm5vZGVUeXBlID0NCj0zRD0zRD0zRCAx
ICYmIEUoaCwgeVtnXSkpKSBsLnB1c2godFtnXSkNCiAgICAgICAgICAgIH0g
ZWxzZSBmb3IgKGcgPTNEIDA7IHlbZ10gIT0zRCBudWxsOyBnKyspIHlbZ10g
JiYgPQ0KeVtnXS5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSAmJiBsLnB1c2godFtn
XSk7DQogICAgICAgICAgICBlbHNlIGwucHVzaC5hcHBseShsLCB5KTsNCiAg
ICAgICAgICAgIGVsc2Ugeih5LCBsKTsNCiAgICAgICAgICAgIGlmIChTKSB7
DQogICAgICAgICAgICAgICAgayhTLCBxLCBsLCBtKTsNCiAgICAgICAgICAg
ICAgICBrLnVuaXF1ZVNvcnQobCkNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHJldHVybiBsDQogICAgICAgIH07DQogICAgICAgIGsudW5pcXVlU29y
dCA9M0QgZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgIGlmIChCKSB7DQog
ICAgICAgICAgICAgICAgaSA9M0QgbzsNCiAgICAgICAgICAgICAgICBnLnNv
cnQoQik7DQogICAgICAgICAgICAgICAgaWYgKGkpIGZvciAodmFyIGggPTNE
IDE7IGggPCBnLmxlbmd0aDsgaCsrKSBnW2hdID0NCj0zRD0zRD0zRCBnW2gg
LSAxXSAmJiBnLnNwbGljZShoLS0sIDEpDQogICAgICAgICAgICB9DQogICAg
ICAgICAgICByZXR1cm4gZw0KICAgICAgICB9Ow0KICAgICAgICBrLm1hdGNo
ZXMgPTNEIGZ1bmN0aW9uIChnLCBoKSB7DQogICAgICAgICAgICByZXR1cm4g
ayhnLCBudWxsLCBudWxsLCBoKQ0KICAgICAgICB9Ow0KICAgICAgICBrLmZp
bmQgPTNEIGZ1bmN0aW9uIChnLCBoLCBsKSB7DQogICAgICAgICAgICB2YXIg
bSwgcTsNCiAgICAgICAgICAgIGlmICghZykgcmV0dXJuIFtdOw0KICAgICAg
ICAgICAgZm9yICh2YXIgcCA9M0QgMCwgdiA9M0Qgbi5vcmRlci5sZW5ndGg7
IHAgPCB2OyBwKyspIHsNCiAgICAgICAgICAgICAgICB2YXIgdCA9M0Qgbi5v
cmRlcltwXTsNCiAgICAgICAgICAgICAgICBpZiAocSA9M0Qgbi5sZWZ0TWF0
Y2hbdF0uZXhlYyhnKSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgeSA9
M0QgcVsxXTsNCiAgICAgICAgICAgICAgICAgICAgcS5zcGxpY2UoMSwgMSk7
DQogICAgICAgICAgICAgICAgICAgIGlmICh5LnN1YnN0cih5Lmxlbmd0aCAt
IDEpICE9M0Q9M0QgIlxcIikgew0KICAgICAgICAgICAgICAgICAgICAgICAg
cVsxXSA9M0QgKHFbMV0gfHwgIiIpLnJlcGxhY2UoL1xcL2csICIiKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIG0gPTNEIG4uZmluZFt0XShxLCBoLCBs
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtICE9M0QgbnVsbCkg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPTNEIGcucmVwbGFj
ZShuLm1hdGNoW3RdLCAiIik7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIG0gfHwgKG0gPTNEIGguZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIioiKSk7DQogICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAg
ICAgICAgIHNldDogbSwNCiAgICAgICAgICAgICAgICBleHByOiBnDQogICAg
ICAgICAgICB9DQogICAgICAgIH07DQogICAgICAgIGsuZmlsdGVyID0zRCBm
dW5jdGlvbiAoZywgaCwgbCwgbSkgew0KICAgICAgICAgICAgZm9yICh2YXIg
cSA9M0QgZywgcCA9M0QgW10sIHYgPTNEIGgsIHQsIHksIFMgPTNEIGggJiYg
aFswXSA9DQomJiB4KGhbMF0pOyBnICYmIGgubGVuZ3RoOykgew0KICAgICAg
ICAgICAgICAgIGZvciAodmFyIEggaW4gbi5maWx0ZXIpIGlmICgodCA9M0Qg
PQ0Kbi5sZWZ0TWF0Y2hbSF0uZXhlYyhnKSkgIT0zRCBudWxsICYmIHRbMl0p
IHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIE0gPTNEIG4uZmlsdGVyW0hd
LA0KICAgICAgICAgICAgICAgICAgICAgICAgSSwgRDsNCiAgICAgICAgICAg
ICAgICAgICAgRCA9M0QgdFsxXTsNCiAgICAgICAgICAgICAgICAgICAgeSA9
M0QgZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIHQuc3BsaWNlKDEsIDEp
Ow0KICAgICAgICAgICAgICAgICAgICBpZiAoRC5zdWJzdHIoRC5sZW5ndGgg
LSAxKSAhPTNEPTNEICJcXCIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ID0zRD0zRD0zRCBwKSBwID0zRCBbXTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChuLnByZUZpbHRlcltIXSkgaWYgKHQgPTNEIG4ucHJl
RmlsdGVyW0hdKHQsID0NCnYsIGwsIHAsIG0sIFMpKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHQgPTNEPTNEPTNEIHRydWUpIGNvbnRp
bnVlDQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeSA9M0QgSSA9
M0QgdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0KSBmb3Ig
KHZhciBVID0zRCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgKEQgPTNE
IHZbVV0pICE9M0QgbnVsbDsgVSsrKSBpZiAoRCkgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEkgPTNEIE0oRCwgdCwgVSwgdik7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIEhhID0zRCBtIF4gISEgSTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCAmJiBJICE9M0QgbnVs
bCkgaWYgKEhhKSB5ID0zRCB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgdltVXSA9M0QgZmFsc2U7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoSGEpIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcC5wdXNoKEQpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB5ID0zRCB0cnVlDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKEkgIT0zRD0zRCB3KSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbCB8fCAodiA9M0QgcCk7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZyA9M0QgZy5yZXBsYWNlKG4ubWF0Y2hb
SF0sICIiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXkp
IHJldHVybiBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
aw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlm
IChnID0zRD0zRD0zRCBxKSBpZiAoeSA9M0Q9M0QgbnVsbCkgay5lcnJvcihn
KTsNCiAgICAgICAgICAgICAgICBlbHNlIGJyZWFrOw0KICAgICAgICAgICAg
ICAgIHEgPTNEIGcNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVy
biB2DQogICAgICAgIH07DQoNCiAgICAgICAgay5lcnJvciA9M0QgZnVuY3Rp
b24gKGcpIHsNCiAgICAgICAgICAgIHRocm93ICJTeW50YXggZXJyb3IsIHVu
cmVjb2duaXplZCBleHByZXNzaW9uOiAiICsgZzsNCiAgICAgICAgfTsNCiAg
ICAgICAgdmFyIG4gPTNEIGsuc2VsZWN0b3JzID0zRCB7DQogICAgICAgICAg
ICBvcmRlcjogWyJJRCIsICJOQU1FIiwgIlRBRyJdLA0KICAgICAgICAgICAg
bWF0Y2g6IHsNCiAgICAgICAgICAgICAgICBJRDogLyMoKD86W1x3XHUwMGMw
LVx1RkZGRi1dfFxcLikrKS8sDQogICAgICAgICAgICAgICAgQ0xBU1M6IC9c
LigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspLywNCiAgICAgICAgICAg
ICAgICBOQU1FOiA9DQovXFtuYW1lPTNEWyciXSooKD86W1x3XHUwMGMwLVx1
RkZGRi1dfFxcLikrKVsnIl0qXF0vLA0KICAgICAgICAgICAgICAgIEFUVFI6
ID0NCi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspXHMqKD86
KFxTPz0zRClccyooWyciXSopKC4qPylcM3wpXHMqXF09DQovLA0KICAgICAg
ICAgICAgICAgIFRBRzogL14oKD86W1x3XHUwMGMwLVx1RkZGRlwqLV18XFwu
KSspLywNCiAgICAgICAgICAgICAgICBDSElMRDogPQ0KLzoob25seXxudGh8
bGFzdHxmaXJzdCktY2hpbGQoPzpcKChldmVufG9kZHxbXGRuKy1dKilcKSk/
LywNCiAgICAgICAgICAgICAgICBQT1M6ID0NCi86KG50aHxlcXxndHxsdHxm
aXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89M0RbXi1dfCQp
LywNCiAgICAgICAgICAgICAgICBQU0VVRE86ID0NCi86KCg/Oltcd1x1MDBj
MC1cdUZGRkYtXXxcXC4pKykoPzpcKChbJyJdPykoKD86XChbXlwpXStcKXxb
XlwoXCldKikrKVwyXCk9DQopPy8NCiAgICAgICAgICAgIH0sDQogICAgICAg
ICAgICBsZWZ0TWF0Y2g6IHt9LA0KICAgICAgICAgICAgYXR0ck1hcDogew0K
ICAgICAgICAgICAgICAgICJjbGFzcyI6ICJjbGFzc05hbWUiLA0KICAgICAg
ICAgICAgICAgICJmb3IiOiAiaHRtbEZvciINCiAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICBhdHRySGFuZGxlOiB7DQogICAgICAgICAgICAgICAgaHJl
ZjogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGcuZ2V0QXR0cmlidXRlKCJocmVmIikNCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICB9LA0KICAgICAgICAgICAgcmVsYXRpdmU6IHsNCiAgICAg
ICAgICAgICAgICAiKyI6IGZ1bmN0aW9uIChnLCBoKSB7DQogICAgICAgICAg
ICAgICAgICAgIHZhciBsID0zRCB0eXBlb2YgaCA9M0Q9M0Q9M0QgInN0cmlu
ZyIsDQogICAgICAgICAgICAgICAgICAgICAgICBtID0zRCBsICYmICEvXFcv
LnRlc3QoaCk7DQogICAgICAgICAgICAgICAgICAgIGwgPTNEIGwgJiYgIW07
DQogICAgICAgICAgICAgICAgICAgIGlmIChtKSBoID0zRCBoLnRvTG93ZXJD
YXNlKCk7DQogICAgICAgICAgICAgICAgICAgIG0gPTNEIDA7DQogICAgICAg
ICAgICAgICAgICAgIGZvciAodmFyIHEgPTNEIGcubGVuZ3RoLCBwOyBtIDwg
cTsgbSsrKSBpZiAocCA9M0QgPQ0KZ1ttXSkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICg7DQogICAgICAgICAgICAgICAgICAgICAgICAocCA9
M0QgcC5wcmV2aW91c1NpYmxpbmcpICYmIHAubm9kZVR5cGUgIT0zRD0zRCA9
DQoxOyk7DQogICAgICAgICAgICAgICAgICAgICAgICBnW21dID0zRCBsIHx8
IHAgJiYgcC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID0NCj0zRD0zRD0zRCBo
ID8gcCB8fCBmYWxzZSA6IHAgPTNEPTNEPTNEIGgNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBsICYmIGsuZmlsdGVyKGgs
IGcsIHRydWUpDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAg
ICAiPiI6IGZ1bmN0aW9uIChnLCBoKSB7DQogICAgICAgICAgICAgICAgICAg
IHZhciBsID0zRCB0eXBlb2YgaCA9M0Q9M0Q9M0QgInN0cmluZyI7DQogICAg
ICAgICAgICAgICAgICAgIGlmIChsICYmICEvXFcvLnRlc3QoaCkpIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIGggPTNEIGgudG9Mb3dlckNhc2UoKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG0gPTNEIDAsIHEg
PTNEIGcubGVuZ3RoOyBtIDwgcTsgbSsrKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHAgPTNEIGdbbV07DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHApIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbCA9M0QgcC5wYXJlbnROb2RlOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnW21dID0zRCBsLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgPQ0KPTNEPTNEPTNEIGggPyBsIDogZmFsc2UNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAg
ICAgICAgICAgICBtID0zRCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChxID0zRCBnLmxlbmd0aDsgbSA8IHE7IG0rKykgaWYgKHAgPTNEIGdb
bV0pID0NCmdbbV0gPTNEIGwgPyBwLnBhcmVudE5vZGUgOiBwLnBhcmVudE5v
ZGUgPTNEPTNEPTNEIGg7DQogICAgICAgICAgICAgICAgICAgICAgICBsICYm
IGsuZmlsdGVyKGgsIGcsIHRydWUpDQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICIiOiBmdW5j
dGlvbiAoZywgaCwgbCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgbSA9
M0QgZSsrLA0KICAgICAgICAgICAgICAgICAgICAgICAgcSA9M0QgZDsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoID0zRD0zRD0zRCAic3Ry
aW5nIiAmJiAhL1xXLy50ZXN0KGgpKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgcCA9M0QgaCA9M0QgaC50b0xvd2VyQ2FzZSgpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgcSA9M0QgYg0KICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgIHEoInBhcmVudE5vZGUiLCBoLCBt
LCBnLCBwLCBsKQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAg
ICAgIn4iOiBmdW5jdGlvbiAoZywgaCwgbCkgew0KICAgICAgICAgICAgICAg
ICAgICB2YXIgbSA9M0QgZSsrLA0KICAgICAgICAgICAgICAgICAgICAgICAg
cSA9M0QgZDsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoID0z
RD0zRD0zRCAic3RyaW5nIiAmJiAhL1xXLy50ZXN0KGgpKSB7DQogICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgcCA9M0QgaCA9M0QgaC50b0xvd2VyQ2Fz
ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcSA9M0QgYg0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHEoInByZXZp
b3VzU2libGluZyIsIGgsIG0sIGcsIHAsIGwpDQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGZpbmQ6IHsNCiAgICAg
ICAgICAgICAgICBJRDogZnVuY3Rpb24gKGcsIGgsIGwpIHsNCiAgICAgICAg
ICAgICAgICAgICAgaWYgKHR5cGVvZiBoLmdldEVsZW1lbnRCeUlkICE9M0Q9
M0QgInVuZGVmaW5lZCIgJiYgPQ0KIWwpIHJldHVybiAoZyA9M0QgaC5nZXRF
bGVtZW50QnlJZChnWzFdKSkgPyBbZ10gOiBbXQ0KICAgICAgICAgICAgICAg
IH0sDQogICAgICAgICAgICAgICAgTkFNRTogZnVuY3Rpb24gKGcsIGgpIHsN
CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoLmdldEVsZW1lbnRz
QnlOYW1lICE9M0Q9M0QgInVuZGVmaW5lZCIpID0NCnsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBsID0zRCBbXTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGggPTNEIGguZ2V0RWxlbWVudHNCeU5hbWUoZ1sxXSk7DQogICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBtID0zRCAwLCBxID0zRCBo
Lmxlbmd0aDsgbSA8IHE7IG0rKykgPQ0KaFttXS5nZXRBdHRyaWJ1dGUoIm5h
bWUiKSA9M0Q9M0Q9M0QgZ1sxXSAmJiBsLnB1c2goaFttXSk7DQogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbC5sZW5ndGggPTNEPTNEPTNEIDAg
PyBudWxsIDogbA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgfSwNCiAgICAgICAgICAgICAgICBUQUc6IGZ1bmN0aW9uIChnLCBo
KSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBoLmdldEVsZW1lbnRz
QnlUYWdOYW1lKGdbMV0pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfSwNCiAgICAgICAgICAgIHByZUZpbHRlcjogew0KICAgICAgICAgICAg
ICAgIENMQVNTOiBmdW5jdGlvbiAoZywgaCwgbCwgbSwgcSwgcCkgew0KICAg
ICAgICAgICAgICAgICAgICBnID0zRCAiICIgKyBnWzFdLnJlcGxhY2UoL1xc
L2csICIiKSArICIgIjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHApIHJl
dHVybiBnOw0KICAgICAgICAgICAgICAgICAgICBwID0zRCAwOw0KICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciB2Ow0KICAgICAgICAgICAgICAgICAg
ICAodiA9M0QgaFtwXSkgIT0zRCBudWxsOyBwKyspIGlmICh2KSBpZiAocSBe
ID0NCih2LmNsYXNzTmFtZSAmJiAoIiAiICsgdi5jbGFzc05hbWUgKyAiICIp
LnJlcGxhY2UoL1tcdFxuXS9nLCAiID0NCiIpLmluZGV4T2YoZykgPj0zRCAw
KSkgbCB8fCBtLnB1c2godik7DQogICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGwpIGhbcF0gPTNEIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2UNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAg
ICAgIElEOiBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ1sxXS5yZXBsYWNlKC9cXC9nLCAiIikNCiAgICAgICAgICAgICAg
ICB9LA0KICAgICAgICAgICAgICAgIFRBRzogZnVuY3Rpb24gKGcpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGdbMV0udG9Mb3dlckNhc2UoKQ0K
ICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgQ0hJTEQ6IGZ1
bmN0aW9uIChnKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChnWzFdID0z
RD0zRD0zRCAibnRoIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IGggPTNEIC8oLT8pKFxkKiluKCg/OlwrfC0pP1xkKikvLmV4ZWMoZ1syXSA9
DQo9M0Q9M0Q9M0QgImV2ZW4iICYmICIybiIgfHwgZ1syXSA9M0Q9M0Q9M0Qg
Im9kZCIgJiYgIjJuKzEiIHx8ID0NCiEvXEQvLnRlc3QoZ1syXSkgJiYgIjBu
KyIgKyBnWzJdIHx8IGdbMl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAg
Z1syXSA9M0QgaFsxXSArIChoWzJdIHx8IDEpIC0gMDsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGdbM10gPTNEIGhbM10gLSAwDQogICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZ1swXSA9M0QgZSsrOw0K
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZw0KICAgICAgICAgICAgICAg
IH0sDQogICAgICAgICAgICAgICAgQVRUUjogZnVuY3Rpb24gKGcsIGgsIGws
IG0sIHEsIHApIHsNCiAgICAgICAgICAgICAgICAgICAgaCA9M0QgZ1sxXS5y
ZXBsYWNlKC9cXC9nLCAiIik7DQogICAgICAgICAgICAgICAgICAgIGlmICgh
cCAmJiBuLmF0dHJNYXBbaF0pIGdbMV0gPTNEIG4uYXR0ck1hcFtoXTsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKGdbMl0gPTNEPTNEPTNEICJ+PTNEIikg
Z1s0XSA9M0QgIiAiICsgZ1s0XSArICIgPQ0KIjsNCiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGcNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAg
ICAgICAgIFBTRVVETzogZnVuY3Rpb24gKGcsIGgsIGwsIG0sIHEpIHsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKGdbMV0gPTNEPTNEPTNEICJub3QiKSBp
ZiAoKGYuZXhlYyhnWzNdKSB8fCA9DQoiIikubGVuZ3RoID4gMSB8fCAvXlx3
Ly50ZXN0KGdbM10pKSBnWzNdID0zRCBrKGdbM10sIG51bGwsIG51bGwsIGgp
Ow0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGcgPTNEIGsuZmlsdGVyKGdbM10sIGgsIGwsIHRydWUgXiBx
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGwgfHwgbS5wdXNoLmFwcGx5
KG0sIGcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobi5tYXRjaC5QT1Mu
dGVzdChnWzBdKSB8fCA9DQpuLm1hdGNoLkNISUxELnRlc3QoZ1swXSkpIHJl
dHVybiB0cnVlOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZw0KICAg
ICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgUE9TOiBmdW5jdGlv
biAoZykgew0KICAgICAgICAgICAgICAgICAgICBnLnVuc2hpZnQodHJ1ZSk7
DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBnDQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGZpbHRlcnM6IHsN
CiAgICAgICAgICAgICAgICBlbmFibGVkOiBmdW5jdGlvbiAoZykgew0KICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZy5kaXNhYmxlZCA9M0Q9M0Q9M0Qg
ZmFsc2UgJiYgZy50eXBlICE9M0Q9M0QgPQ0KImhpZGRlbiINCiAgICAgICAg
ICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlv
biAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZy5kaXNhYmxl
ZCA9M0Q9M0Q9M0QgdHJ1ZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAg
ICAgICAgICAgY2hlY2tlZDogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGcuY2hlY2tlZCA9M0Q9M0Q9M0QgdHJ1ZQ0KICAg
ICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZ1
bmN0aW9uIChnKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBnLnNl
bGVjdGVkID0zRD0zRD0zRCB0cnVlDQogICAgICAgICAgICAgICAgfSwNCiAg
ICAgICAgICAgICAgICBwYXJlbnQ6IGZ1bmN0aW9uIChnKSB7DQogICAgICAg
ICAgICAgICAgICAgIHJldHVybiAhIWcuZmlyc3RDaGlsZA0KICAgICAgICAg
ICAgICAgIH0sDQogICAgICAgICAgICAgICAgZW1wdHk6IGZ1bmN0aW9uIChn
KSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhZy5maXJzdENoaWxk
DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBoYXM6IGZ1
bmN0aW9uIChnLCBoLCBsKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVy
biAhIWsobFszXSwgZykubGVuZ3RoDQogICAgICAgICAgICAgICAgfSwNCiAg
ICAgICAgICAgICAgICBoZWFkZXI6IGZ1bmN0aW9uIChnKSB7DQogICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvaFxkL2kudGVzdChnLm5vZGVOYW1lKQ0K
ICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgdGV4dDogZnVu
Y3Rpb24gKGcpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ0ZXh0
IiA9M0Q9M0Q9M0QgZy50eXBlDQogICAgICAgICAgICAgICAgfSwNCiAgICAg
ICAgICAgICAgICByYWRpbzogZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICJyYWRpbyIgPTNEPTNEPTNEIGcudHlwZQ0KICAg
ICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgY2hlY2tib3g6IGZ1
bmN0aW9uIChnKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiY2hl
Y2tib3giID0zRD0zRD0zRCBnLnR5cGUNCiAgICAgICAgICAgICAgICB9LA0K
ICAgICAgICAgICAgICAgIGZpbGU6IGZ1bmN0aW9uIChnKSB7DQogICAgICAg
ICAgICAgICAgICAgIHJldHVybiAiZmlsZSIgPTNEPTNEPTNEIGcudHlwZQ0K
ICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgcGFzc3dvcmQ6
IGZ1bmN0aW9uIChnKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAi
cGFzc3dvcmQiID0zRD0zRD0zRCBnLnR5cGUNCiAgICAgICAgICAgICAgICB9
LA0KICAgICAgICAgICAgICAgIHN1Ym1pdDogZnVuY3Rpb24gKGcpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICJzdWJtaXQiID0zRD0zRD0zRCBn
LnR5cGUNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGlt
YWdlOiBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gImltYWdlIiA9M0Q9M0Q9M0QgZy50eXBlDQogICAgICAgICAgICAgICAg
fSwNCiAgICAgICAgICAgICAgICByZXNldDogZnVuY3Rpb24gKGcpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICJyZXNldCIgPTNEPTNEPTNEIGcu
dHlwZQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgYnV0
dG9uOiBmdW5jdGlvbiAoZykgew0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gImJ1dHRvbiIgPTNEPTNEPTNEIGcudHlwZSB8fCA9DQpnLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkgPTNEPTNEPTNEICJidXR0b24iDQogICAgICAgICAg
ICAgICAgfSwNCiAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24gKGcp
IHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuID0NCi9pbnB1dHxzZWxl
Y3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChnLm5vZGVOYW1lKQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBzZXRG
aWx0ZXJzOiB7DQogICAgICAgICAgICAgICAgZmlyc3Q6IGZ1bmN0aW9uIChn
LCBoKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBoID0zRD0zRD0z
RCAwDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBsYXN0
OiBmdW5jdGlvbiAoZywgaCwgbCwgbSkgew0KICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaCA9M0Q9M0Q9M0QgbS5sZW5ndGggLSAxDQogICAgICAgICAg
ICAgICAgfSwNCiAgICAgICAgICAgICAgICBldmVuOiBmdW5jdGlvbiAoZywg
aCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCAlIDIgPTNEPTNE
PTNEIDANCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIG9k
ZDogZnVuY3Rpb24gKGcsIGgpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGggJSAyID0zRD0zRD0zRCAxDQogICAgICAgICAgICAgICAgfSwNCiAg
ICAgICAgICAgICAgICBsdDogZnVuY3Rpb24gKGcsIGgsIGwpIHsNCiAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGggPCBsWzNdIC0gMA0KICAgICAgICAg
ICAgICAgIH0sDQogICAgICAgICAgICAgICAgZ3Q6IGZ1bmN0aW9uIChnLCBo
LCBsKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBoID4gbFszXSAt
IDANCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIG50aDog
ZnVuY3Rpb24gKGcsIGgsIGwpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxbM10gLSAwID0zRD0zRD0zRCBoDQogICAgICAgICAgICAgICAgfSwN
CiAgICAgICAgICAgICAgICBlcTogZnVuY3Rpb24gKGcsIGgsIGwpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxbM10gLSAwID0zRD0zRD0zRCBo
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSwNCiAgICAgICAg
ICAgIGZpbHRlcjogew0KICAgICAgICAgICAgICAgIFBTRVVETzogZnVuY3Rp
b24gKGcsIGgsIGwsIG0pIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHEg
PTNEIGhbMV0sDQogICAgICAgICAgICAgICAgICAgICAgICBwID0zRCBuLmZp
bHRlcnNbcV07DQogICAgICAgICAgICAgICAgICAgIGlmIChwKSByZXR1cm4g
cChnLCBsLCBoLCBtKTsNCiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
cSA9M0Q9M0Q9M0QgImNvbnRhaW5zIikgcmV0dXJuID0NCihnLnRleHRDb250
ZW50IHx8IGcuaW5uZXJUZXh0IHx8IGEoW2ddKSB8fCAiIikuaW5kZXhPZiho
WzNdKSA+PTNEIDA7DQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHEg
PTNEPTNEPTNEICJub3QiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBo
ID0zRA0KICAgICAgICAgICAgICAgICAgICAgICAgaFszXTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGwgPTNEIDA7DQogICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKG0gPTNEIGgubGVuZ3RoOyBsIDwgbTsgbCsrKSBpZiAoaFts
XSA9DQo9M0Q9M0Q9M0QgZykgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWUNCiAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGsuZXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkID0N
CmV4cHJlc3Npb246ICIgKyBxKQ0KICAgICAgICAgICAgICAgIH0sDQogICAg
ICAgICAgICAgICAgQ0hJTEQ6IGZ1bmN0aW9uIChnLCBoKSB7DQogICAgICAg
ICAgICAgICAgICAgIHZhciBsID0zRCBoWzFdLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgbSA9M0QgZzsNCiAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChsKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgIm9ubHkiOg0KICAg
ICAgICAgICAgICAgICAgICBjYXNlICJmaXJzdCI6DQogICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKDsgbSA9M0QgbS5wcmV2aW91c1NpYmxpbmc7KSBp
ZiAobS5ub2RlVHlwZSA9DQo9M0Q9M0Q9M0QgMSkgcmV0dXJuIGZhbHNlOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPTNEPTNEPTNEICJmaXJz
dCIpIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgbSA9
M0QgZzsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAibGFzdCI6DQogICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbSA9M0QgbS5uZXh0U2libGlu
ZzspIGlmIChtLm5vZGVUeXBlID0NCj0zRD0zRD0zRCAxKSByZXR1cm4gZmFs
c2U7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAg
ICAgICAgICAgICAgICAgICAgY2FzZSAibnRoIjoNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGwgPTNEIGhbMl07DQogICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgcSA9M0QgaFszXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChsID0zRD0zRD0zRCAxICYmIHEgPTNEPTNEPTNEIDApIHJldHVybiB0cnVl
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaCA9M0QgaFswXTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBwID0zRCBnLnBhcmVudE5vZGU7DQog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocCAmJiAocC5zaXpjYWNoZSAh
PTNEPTNEIGggfHwgIWcubm9kZUluZGV4KSkgPQ0Kew0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciB2ID0zRCAwOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAobSA9M0QgcC5maXJzdENoaWxkOyBtOyBtID0z
RA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0ubmV4dFNpYmxpbmcp
IGlmIChtLm5vZGVUeXBlID0zRD0zRD0zRCAxKSA9DQptLm5vZGVJbmRleCA9
M0QgKyt2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuc2l6Y2Fj
aGUgPTNEIGgNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgIGcgPTNEIGcubm9kZUluZGV4IC0gcTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsID0zRD0zRD0zRCAwID8gZyA9
M0Q9M0Q9M0QgMCA6IGcgJSBsID0NCj0zRD0zRD0zRCAwICYmIGcgLyBsID49
M0QgMA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
fSwNCiAgICAgICAgICAgICAgICBJRDogZnVuY3Rpb24gKGcsIGgpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGcubm9kZVR5cGUgPTNEPTNEPTNE
IDEgJiYgPQ0KZy5nZXRBdHRyaWJ1dGUoImlkIikgPTNEPTNEPTNEIGgNCiAg
ICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIFRBRzogZnVuY3Rp
b24gKGcsIGgpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggPTNE
PTNEPTNEICIqIiAmJiBnLm5vZGVUeXBlID0zRD0zRD0zRCAxIHx8ID0NCmcu
bm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9M0Q9M0Q9M0QgaA0KICAgICAgICAg
ICAgICAgIH0sDQogICAgICAgICAgICAgICAgQ0xBU1M6IGZ1bmN0aW9uIChn
LCBoKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoIiAiICsgKGcu
Y2xhc3NOYW1lIHx8ID0NCmcuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSArICIg
IikuaW5kZXhPZihoKSA+IC0xDQogICAgICAgICAgICAgICAgfSwNCiAgICAg
ICAgICAgICAgICBBVFRSOiBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAg
ICAgICAgICAgICB2YXIgbCA9M0QgaFsxXTsNCiAgICAgICAgICAgICAgICAg
ICAgZyA9M0Qgbi5hdHRySGFuZGxlW2xdID8gbi5hdHRySGFuZGxlW2xdKGcp
IDogZ1tsXSA9DQohPTNEIG51bGwgPyBnW2xdIDogZy5nZXRBdHRyaWJ1dGUo
bCk7DQogICAgICAgICAgICAgICAgICAgIGwgPTNEIGcgKyAiIjsNCiAgICAg
ICAgICAgICAgICAgICAgdmFyIG0gPTNEIGhbMl07DQogICAgICAgICAgICAg
ICAgICAgIGggPTNEIGhbNF07DQogICAgICAgICAgICAgICAgICAgIHJldHVy
biBnID0zRD0zRCBudWxsID8gbSA9M0Q9M0Q9M0QgIiE9M0QiIDogbSA9DQo9
M0Q9M0Q9M0QgIj0zRCIgPyBsID0zRD0zRD0zRCBoIDogbSA9M0Q9M0Q9M0Qg
Iio9M0QiID8gbC5pbmRleE9mKGgpID49M0QgPQ0KMCA6IG0gPTNEPTNEPTNE
ICJ+PTNEIiA/ICgiICIgKyBsICsgIiAiKS5pbmRleE9mKGgpID49M0QgMCA6
ICFoID8gbCAmJiBnID0NCiE9M0Q9M0QgZmFsc2UgOiBtID0zRD0zRD0zRCAi
IT0zRCIgPyBsICE9M0Q9M0QgaCA6IG0gPTNEPTNEPTNEICJePTNEIiA/ID0N
CmwuaW5kZXhPZihoKSA9M0Q9M0Q9M0QgMCA6IG0gPTNEPTNEPTNEICIkPTNE
IiA/IGwuc3Vic3RyKGwubGVuZ3RoIC0gPQ0KaC5sZW5ndGgpID0zRD0zRD0z
RCBoIDogbSA9M0Q9M0Q9M0QgInw9M0QiID8gbCA9M0Q9M0Q9M0QgaCB8fCA9
DQpsLnN1YnN0cigwLCBoLmxlbmd0aCArIDEpID0zRD0zRD0zRCBoICsgIi0i
IDogZmFsc2UNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAg
IFBPUzogZnVuY3Rpb24gKGcsIGgsIGwsIG0pIHsNCiAgICAgICAgICAgICAg
ICAgICAgdmFyIHEgPTNEIG4uc2V0RmlsdGVyc1toWzJdXTsNCiAgICAgICAg
ICAgICAgICAgICAgaWYgKHEpIHJldHVybiBxKGcsIGwsIGgsIG0pDQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAg
ICAgICAgICAgciA9M0Qgbi5tYXRjaC5QT1M7DQogICAgICAgIGZvciAodmFy
IHUgaW4gbi5tYXRjaCkgew0KICAgICAgICAgICAgbi5tYXRjaFt1XSA9M0Qg
bmV3IFJlZ0V4cChuLm1hdGNoW3VdLnNvdXJjZSArID0NCi8oPyFbXlxbXSpc
XSkoPyFbXlwoXSpcKSkvLnNvdXJjZSk7DQogICAgICAgICAgICBuLmxlZnRN
YXRjaFt1XSA9M0QgbmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291
cmNlICsgPQ0Kbi5tYXRjaFt1XS5zb3VyY2UucmVwbGFjZSgvXFwoXGQrKS9n
LCBmdW5jdGlvbiAoZywgaCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAi
XFwiICsgKGggLSAwICsgMSkNCiAgICAgICAgICAgIH0pKQ0KICAgICAgICB9
DQogICAgICAgIHZhciB6ID0zRCBmdW5jdGlvbiAoZywgaCkgew0KICAgICAg
ICAgICAgZyA9M0QgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZywgMCk7
DQogICAgICAgICAgICBpZiAoaCkgew0KICAgICAgICAgICAgICAgIGgucHVz
aC5hcHBseShoLCBnKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gaA0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGcNCiAgICAgICAgfTsN
CiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKHMuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMsIDApDQog
ICAgICAgIH0gY2F0Y2ggKEMpIHsNCiAgICAgICAgICAgIHogPTNEIGZ1bmN0
aW9uIChnLCBoKSB7DQogICAgICAgICAgICAgICAgaCA9M0QgaCB8fCBbXTsN
CiAgICAgICAgICAgICAgICBpZiAoai5jYWxsKGcpID0zRD0zRD0zRCAiW29i
amVjdCBBcnJheV0iKSA9DQpBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSho
LCBnKTsNCiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgZy5sZW5n
dGggPTNEPTNEPTNEICJudW1iZXIiKSBmb3IgKHZhciBsID0NCj0zRCAwLCBt
ID0zRCBnLmxlbmd0aDsgbCA8IG07IGwrKykgaC5wdXNoKGdbbF0pOw0KICAg
ICAgICAgICAgICAgIGVsc2UgZm9yIChsID0zRCAwOyBnW2xdOyBsKyspIGgu
cHVzaChnW2xdKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gaA0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHZhciBCOw0KICAgICAgICBp
ZiAocy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24p
IEIgPTNEIGZ1bmN0aW9uID0NCihnLCBoKSB7DQogICAgICAgICAgICBpZiAo
IWcuY29tcGFyZURvY3VtZW50UG9zaXRpb24gfHwgPQ0KIWguY29tcGFyZURv
Y3VtZW50UG9zaXRpb24pIHsNCiAgICAgICAgICAgICAgICBpZiAoZyA9M0Q9
M0QgaCkgaSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZy5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/IC0xIDogMQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgZyA9M0QgZy5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bihoKSAmIDQgPyAtMSA6IGcgPTNEPTNEPTNEIGggPQ0KPyAwIDogMTsNCiAg
ICAgICAgICAgIGlmIChnID0zRD0zRD0zRCAwKSBpID0zRCB0cnVlOw0KICAg
ICAgICAgICAgcmV0dXJuIGcNCiAgICAgICAgfTsNCiAgICAgICAgZWxzZSBp
ZiAoInNvdXJjZUluZGV4IiBpbiBzLmRvY3VtZW50RWxlbWVudCkgQiA9M0Qg
ZnVuY3Rpb24gKGcsID0NCmgpIHsNCiAgICAgICAgICAgIGlmICghZy5zb3Vy
Y2VJbmRleCB8fCAhaC5zb3VyY2VJbmRleCkgew0KICAgICAgICAgICAgICAg
IGlmIChnID0zRD0zRCBoKSBpID0zRCB0cnVlOw0KICAgICAgICAgICAgICAg
IHJldHVybiBnLnNvdXJjZUluZGV4ID8gLTEgOiAxDQogICAgICAgICAgICB9
DQogICAgICAgICAgICBnID0zRCBnLnNvdXJjZUluZGV4IC0gaC5zb3VyY2VJ
bmRleDsNCiAgICAgICAgICAgIGlmIChnID0zRD0zRD0zRCAwKSBpID0zRCB0
cnVlOw0KICAgICAgICAgICAgcmV0dXJuIGcNCiAgICAgICAgfTsNCiAgICAg
ICAgZWxzZSBpZiAocy5jcmVhdGVSYW5nZSkgQiA9M0QgZnVuY3Rpb24gKGcs
IGgpIHsNCiAgICAgICAgICAgIGlmICghZy5vd25lckRvY3VtZW50IHx8ICFo
Lm93bmVyRG9jdW1lbnQpIHsNCiAgICAgICAgICAgICAgICBpZiAoZyA9M0Q9
M0QgaCkgaSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZy5v
d25lckRvY3VtZW50ID8gLTEgOiAxDQogICAgICAgICAgICB9DQogICAgICAg
ICAgICB2YXIgbCA9M0QgZy5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCks
DQogICAgICAgICAgICAgICAgbSA9M0QNCiAgICAgICAgICAgIGgub3duZXJE
b2N1bWVudC5jcmVhdGVSYW5nZSgpOw0KICAgICAgICAgICAgbC5zZXRTdGFy
dChnLCAwKTsNCiAgICAgICAgICAgIGwuc2V0RW5kKGcsIDApOw0KICAgICAg
ICAgICAgbS5zZXRTdGFydChoLCAwKTsNCiAgICAgICAgICAgIG0uc2V0RW5k
KGgsIDApOw0KICAgICAgICAgICAgZyA9M0QgbC5jb21wYXJlQm91bmRhcnlQ
b2ludHMoUmFuZ2UuU1RBUlRfVE9fRU5ELCBtKTsNCiAgICAgICAgICAgIGlm
IChnID0zRD0zRD0zRCAwKSBpID0zRCB0cnVlOw0KICAgICAgICAgICAgcmV0
dXJuIGcNCiAgICAgICAgfTsNCiAgICAgICAgKGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgIHZhciBnID0zRCBzLmNyZWF0ZUVsZW1lbnQoImRpdiIpLA0K
ICAgICAgICAgICAgICAgIGggPTNEICJzY3JpcHQiICsgKG5ldyBEYXRlKS5n
ZXRUaW1lKCk7DQogICAgICAgICAgICBnLmlubmVySFRNTCA9M0QgIjxhIG5h
bWU9M0QnIiArIGggKyAiJy8+IjsNCiAgICAgICAgICAgIHZhciBsID0zRCBz
LmRvY3VtZW50RWxlbWVudDsNCiAgICAgICAgICAgIGwuaW5zZXJ0QmVmb3Jl
KGcsIGwuZmlyc3RDaGlsZCk7DQogICAgICAgICAgICBpZiAocy5nZXRFbGVt
ZW50QnlJZChoKSkgew0KICAgICAgICAgICAgICAgIG4uZmluZC5JRCA9M0Qg
ZnVuY3Rpb24gKG0sIHEsIHApIHsNCiAgICAgICAgICAgICAgICAgICAgaWYg
KHR5cGVvZiBxLmdldEVsZW1lbnRCeUlkICE9M0Q9M0QgInVuZGVmaW5lZCIg
JiYgPQ0KIXApIHJldHVybiAocSA9M0QgcS5nZXRFbGVtZW50QnlJZChtWzFd
KSkgPyBxLmlkID0zRD0zRD0zRCBtWzFdIHx8ID0NCnR5cGVvZiBxLmdldEF0
dHJpYnV0ZU5vZGUgIT0zRD0zRCAidW5kZWZpbmVkIiAmJiA9DQpxLmdldEF0
dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlID0zRD0zRD0zRCBtWzFdID8g
W3FdIDogdyA6IFtdDQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAg
ICAgICBuLmZpbHRlci5JRCA9M0QgZnVuY3Rpb24gKG0sIHEpIHsNCiAgICAg
ICAgICAgICAgICAgICAgdmFyIHAgPTNEIHR5cGVvZiBtLmdldEF0dHJpYnV0
ZU5vZGUgIT0zRD0zRCA9DQoidW5kZWZpbmVkIiAmJiBtLmdldEF0dHJpYnV0
ZU5vZGUoImlkIik7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBtLm5v
ZGVUeXBlID0zRD0zRD0zRCAxICYmIHAgJiYgcC5ub2RlVmFsdWUgPQ0KPTNE
PTNEPTNEIHENCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBsLnJlbW92ZUNoaWxkKGcpOw0KICAgICAgICAgICAgbCA9
M0QgZyA9M0QgbnVsbA0KICAgICAgICB9KSgpOw0KICAgICAgICAoZnVuY3Rp
b24gKCkgew0KICAgICAgICAgICAgdmFyIGcgPTNEIHMuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7DQogICAgICAgICAgICBnLmFwcGVuZENoaWxkKHMuY3JlYXRl
Q29tbWVudCgiIikpOw0KICAgICAgICAgICAgaWYgKGcuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoIioiKS5sZW5ndGggPiAwKSBuLmZpbmQuVEFHID0zRCA9DQpm
dW5jdGlvbiAoaCwgbCkgew0KICAgICAgICAgICAgICAgIGwgPTNEIGwuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoaFsxXSk7DQogICAgICAgICAgICAgICAgaWYg
KGhbMV0gPTNEPTNEPTNEICIqIikgew0KICAgICAgICAgICAgICAgICAgICBo
ID0zRCBbXTsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbSA9M0Qg
MDsgbFttXTsgbSsrKSBsW21dLm5vZGVUeXBlID0zRD0zRD0zRCA9DQoxICYm
IGgucHVzaChsW21dKTsNCiAgICAgICAgICAgICAgICAgICAgbCA9M0QgaA0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gbA0K
ICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIGcuaW5uZXJIVE1MID0zRCAi
PGEgaHJlZj0zRCcjJz48L2E+IjsNCiAgICAgICAgICAgIGlmIChnLmZpcnN0
Q2hpbGQgJiYgdHlwZW9mIGcuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUgIT0z
RD0zRCA9DQoidW5kZWZpbmVkIiAmJiBnLmZpcnN0Q2hpbGQuZ2V0QXR0cmli
dXRlKCJocmVmIikgIT0zRD0zRCAiIyIpID0NCm4uYXR0ckhhbmRsZS5ocmVm
ID0zRCBmdW5jdGlvbiAoaCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBo
LmdldEF0dHJpYnV0ZSgiaHJlZiIsIDIpDQogICAgICAgICAgICB9Ow0KICAg
ICAgICAgICAgZyA9M0QgbnVsbA0KICAgICAgICB9KSgpOw0KICAgICAgICBz
LnF1ZXJ5U2VsZWN0b3JBbGwgJiYNCiAgICAgICAgZnVuY3Rpb24gKCkgew0K
ICAgICAgICAgICAgdmFyIGcgPTNEIGssDQogICAgICAgICAgICAgICAgaCA9
M0Qgcy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgIGguaW5u
ZXJIVE1MID0zRCAiPHAgY2xhc3M9M0QnVEVTVCc+PC9wPiI7DQogICAgICAg
ICAgICBpZiAoIShoLnF1ZXJ5U2VsZWN0b3JBbGwgJiYgPQ0KaC5xdWVyeVNl
bGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aCA9M0Q9M0Q9M0QgMCkpIHsNCiAg
ICAgICAgICAgICAgICBrID0zRCBmdW5jdGlvbiAobSwgcSwgcCwgdikgew0K
ICAgICAgICAgICAgICAgICAgICBxID0zRCBxIHx8IHM7DQogICAgICAgICAg
ICAgICAgICAgIGlmICghdiAmJiBxLm5vZGVUeXBlID0zRD0zRD0zRCA5ICYm
ICF4KHEpKSB0cnkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHoocS5xdWVyeVNlbGVjdG9yQWxsKG0pLCBwKQ0KICAgICAgICAgICAgICAg
ICAgICB9IGNhdGNoICh0KSB7fQ0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZyhtLCBxLCBwLCB2KQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAg
ICAgICAgICAgZm9yICh2YXIgbCBpbiBnKSBrW2xdID0zRCBnW2xdOw0KICAg
ICAgICAgICAgICAgIGggPTNEIG51bGwNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfSgpOw0KICAgICAgICAoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAg
dmFyIGcgPTNEIHMuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQogICAgICAgICAg
ICBnLmlubmVySFRNTCA9M0QgIjxkaXYgY2xhc3M9M0QndGVzdCBlJz48L2Rp
dj48ZGl2ID0NCmNsYXNzPTNEJ3Rlc3QnPjwvZGl2PiI7DQogICAgICAgICAg
ICBpZiAoISghZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIHx8ID0NCmcuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCA9M0Q9M0Q9M0QgMCkp
IHsNCiAgICAgICAgICAgICAgICBnLmxhc3RDaGlsZC5jbGFzc05hbWUgPTNE
ICJlIjsNCiAgICAgICAgICAgICAgICBpZiAoZy5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCJlIikubGVuZ3RoICE9M0Q9M0QgMSkgew0KICAgICAgICAgICAg
ICAgICAgICBuLm9yZGVyLnNwbGljZSgxLCAwLCAiQ0xBU1MiKTsNCiAgICAg
ICAgICAgICAgICAgICAgbi5maW5kLkNMQVNTID0zRCBmdW5jdGlvbiAoaCwg
bCwgbSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBs
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT0zRD0zRCA9DQoidW5kZWZpbmVk
IiAmJiAhbSkgcmV0dXJuIGwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShoWzFd
KQ0KICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAg
ICBnID0zRCBudWxsDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICB9KSgpOw0KICAgICAgICB2YXIgRSA9M0Qgcy5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbiA/DQogICAgICAgIGZ1bmN0aW9uIChnLCBoKSB7
DQogICAgICAgICAgICByZXR1cm4gISEoZy5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbihoKSAmIDE2KQ0KICAgICAgICB9IDogZnVuY3Rpb24gKGcsIGgpIHsN
CiAgICAgICAgICAgIHJldHVybiBnICE9M0Q9M0QgaCAmJiAoZy5jb250YWlu
cyA/IGcuY29udGFpbnMoaCkgOiB0cnVlKQ0KICAgICAgICB9LA0KICAgICAg
ICAgICAgeCA9M0QgZnVuY3Rpb24gKGcpIHsNCiAgICAgICAgICAgIHJldHVy
biAoZyA9M0QgKGcgPyBnLm93bmVyRG9jdW1lbnQgfHwgZyA6ID0NCjApLmRv
Y3VtZW50RWxlbWVudCkgPyBnLm5vZGVOYW1lICE9M0Q9M0QgIkhUTUwiIDog
ZmFsc2UNCiAgICAgICAgfSwNCiAgICAgICAgICAgIGdhID0zRCBmdW5jdGlv
biAoZywgaCkgew0KICAgICAgICAgICAgdmFyIGwgPTNEIFtdLA0KICAgICAg
ICAgICAgICAgIG0gPTNEICIiLA0KICAgICAgICAgICAgICAgIHE7DQogICAg
ICAgICAgICBmb3IgKGggPTNEIGgubm9kZVR5cGUgPyBbaF0gOiBoOyBxID0z
RCA9DQpuLm1hdGNoLlBTRVVETy5leGVjKGcpOykgew0KICAgICAgICAgICAg
ICAgIG0gKz0zRCBxWzBdOw0KICAgICAgICAgICAgICAgIGcgPTNEIGcucmVw
bGFjZShuLm1hdGNoLlBTRVVETywgIiIpDQogICAgICAgICAgICB9DQogICAg
ICAgICAgICBnID0zRCBuLnJlbGF0aXZlW2ddID8gZyArICIqIiA6IGc7DQog
ICAgICAgICAgICBxID0zRCAwOw0KICAgICAgICAgICAgZm9yICh2YXIgcCA9
M0QgaC5sZW5ndGg7IHEgPCBwOyBxKyspIGsoZywgaFtxXSwgbCk7DQogICAg
ICAgICAgICByZXR1cm4gay5maWx0ZXIobSwgbCkNCiAgICAgICAgfTsNCiAg
ICAgICAgYy5maW5kID0zRCBrOw0KICAgICAgICBjLmV4cHIgPTNEIGsuc2Vs
ZWN0b3JzOw0KICAgICAgICBjLmV4cHJbIjoiXSA9M0QgYy5leHByLmZpbHRl
cnM7DQogICAgICAgIGMudW5pcXVlID0zRCBrLnVuaXF1ZVNvcnQ7DQogICAg
ICAgIGMudGV4dCA9M0QgYTsNCiAgICAgICAgYy5pc1hNTERvYyA9M0QgeDsN
CiAgICAgICAgYy5jb250YWlucyA9M0QgRQ0KICAgIH0pKCk7DQogICAgdmFy
IGViID0zRCAvVW50aWwkLywNCiAgICAgICAgZmIgPTNEIC9eKD86cGFyZW50
c3xwcmV2VW50aWx8cHJldkFsbCkvLA0KICAgICAgICBnYiA9M0QgLywvOw0K
ICAgIFIgPTNEIEFycmF5LnByb3RvdHlwZS5zbGljZTsNCiAgICB2YXIgSWEg
PTNEIGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgIGlmIChjLmlzRnVu
Y3Rpb24oYikpIHJldHVybiBjLmdyZXAoYSwgZnVuY3Rpb24gKGUsIGopIHsN
CiAgICAgICAgICAgIHJldHVybiAhIWIuY2FsbChlLCBqLCBlKSA9M0Q9M0Q9
M0QgZA0KICAgICAgICB9KTsNCiAgICAgICAgZWxzZSBpZiAoYi5ub2RlVHlw
ZSkgcmV0dXJuIGMuZ3JlcChhLCBmdW5jdGlvbiAoZSkgew0KICAgICAgICAg
ICAgcmV0dXJuIGUgPTNEPTNEPTNEIGIgPTNEPTNEPTNEIGQNCiAgICAgICAg
fSk7DQogICAgICAgIGVsc2UgaWYgKHR5cGVvZiBiID0zRD0zRD0zRCAic3Ry
aW5nIikgew0KICAgICAgICAgICAgdmFyIGYgPTNEIGMuZ3JlcChhLCBmdW5j
dGlvbiAoZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBlLm5vZGVUeXBl
ID0zRD0zRD0zRCAxDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlm
IChVYS50ZXN0KGIpKSByZXR1cm4gYy5maWx0ZXIoYiwgZiwgIWQpOw0KICAg
ICAgICAgICAgZWxzZSBiID0zRCBjLmZpbHRlcihiLCBmKQ0KICAgICAgICB9
DQogICAgICAgIHJldHVybiBjLmdyZXAoYSwgZnVuY3Rpb24gKGUpIHsNCiAg
ICAgICAgICAgIHJldHVybiBjLmluQXJyYXkoZSwgYikgPj0zRCAwID0zRD0z
RD0zRCBkDQogICAgICAgIH0pDQogICAgfTsNCiAgICBjLmZuLmV4dGVuZCh7
DQogICAgICAgIGZpbmQ6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBm
b3IgKHZhciBiID0zRCB0aGlzLnB1c2hTdGFjaygiIiwgImZpbmQiLCBhKSwg
ZCA9M0QgMCwgZiA9M0QgPQ0KMCwgZSA9M0QgdGhpcy5sZW5ndGg7IGYgPCBl
OyBmKyspIHsNCiAgICAgICAgICAgICAgICBkID0zRCBiLmxlbmd0aDsNCiAg
ICAgICAgICAgICAgICBjLmZpbmQoYSwgdGhpc1tmXSwgYik7DQogICAgICAg
ICAgICAgICAgaWYgKGYgPiAwKSBmb3IgKHZhciBqID0zRCBkOyBqIDwgYi5s
ZW5ndGg7IGorKykgZm9yICh2YXIgPQ0KaSA9M0QgMDsgaSA8IGQ7IGkrKykg
aWYgKGJbaV0gPTNEPTNEPTNEIGJbal0pIHsNCiAgICAgICAgICAgICAgICAg
ICAgYi5zcGxpY2Uoai0tLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgYnJl
YWsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICByZXR1cm4gYg0KICAgICAgICB9LA0KICAgICAgICBoYXM6IGZ1bmN0
aW9uIChhKSB7DQogICAgICAgICAgICB2YXIgYiA9M0QgYyhhKTsNCiAgICAg
ICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbiAoKSB7DQogICAg
ICAgICAgICAgICAgZm9yICh2YXIgZCA9M0QgMCwgZiA9M0QgYi5sZW5ndGg7
IGQgPCBmOyBkKyspIGlmID0NCihjLmNvbnRhaW5zKHRoaXMsIGJbZF0pKSBy
ZXR1cm4gdHJ1ZQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgfSwNCiAgICAg
ICAgbm90OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuIHRo
aXMucHVzaFN0YWNrKElhKHRoaXMsIGEsIGZhbHNlKSwgIm5vdCIsIGEpDQog
ICAgICAgIH0sDQogICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhJYSh0aGlzLCBhLCB0
cnVlKSwgImZpbHRlciIsIGEpDQogICAgICAgIH0sDQogICAgICAgIGlzOiBm
dW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgcmV0dXJuICEhYSAmJiBjLmZp
bHRlcihhLCB0aGlzKS5sZW5ndGggPiAwDQogICAgICAgIH0sDQogICAgICAg
IGNsb3Nlc3Q6IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICBpZiAo
Yy5pc0FycmF5KGEpKSB7DQogICAgICAgICAgICAgICAgdmFyIGQgPTNEIFtd
LA0KICAgICAgICAgICAgICAgICAgICBmID0zRCB0aGlzWzBdLA0KICAgICAg
ICAgICAgICAgICAgICBlLCBqID0zRCB7fSwNCiAgICAgICAgICAgICAgICAg
ICAgaTsNCiAgICAgICAgICAgICAgICBpZiAoZiAmJiBhLmxlbmd0aCkgew0K
ICAgICAgICAgICAgICAgICAgICBlID0zRCAwOw0KICAgICAgICAgICAgICAg
ICAgICBmb3IgKHZhciBvID0zRCBhLmxlbmd0aDsgZSA8IG87IGUrKykgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgaSA9M0QgYVtlXTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGpbaV0gfHwgKGpbaV0gPTNEIGMuZXhwci5tYXRj
aC5QT1MudGVzdChpKSA/ID0NCmMoaSwgYiB8fCB0aGlzLmNvbnRleHQpIDog
aSkNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICBmb3IgKDsgZiAmJiBmLm93bmVyRG9jdW1lbnQgJiYgZiAhPTNEPTNEIGI7
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4gaikgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPTNEIGpbaV07DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuanF1ZXJ5ID8gZS5pbmRl
eChmKSA+IC0xIDogYyhmKS5pcyhlKSkgPQ0Kew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkLnB1c2goew0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IGksDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbGVtOiBmDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWxldGUgaltpXQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICAgICAgICAgIGYgPTNEIGYucGFyZW50Tm9kZQ0KICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
ICAgIHJldHVybiBkDQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIg
ayA9M0QgYy5leHByLm1hdGNoLlBPUy50ZXN0KGEpID8gYyhhLCBiIHx8IHRo
aXMuY29udGV4dCkgPQ0KOiBudWxsOw0KICAgICAgICAgICAgcmV0dXJuIHRo
aXMubWFwKGZ1bmN0aW9uIChuLCByKSB7DQogICAgICAgICAgICAgICAgZm9y
ICg7IHIgJiYgci5vd25lckRvY3VtZW50ICYmIHIgIT0zRD0zRCBiOykgew0K
ICAgICAgICAgICAgICAgICAgICBpZiAoayA/IGsuaW5kZXgocikgPiAtMSA6
IGMocikuaXMoYSkpIHJldHVybiByOw0KICAgICAgICAgICAgICAgICAgICBy
ID0zRCByLnBhcmVudE5vZGUNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGwNCiAgICAgICAgICAgIH0pDQogICAgICAg
IH0sDQogICAgICAgIGluZGV4OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAg
ICAgaWYgKCFhIHx8IHR5cGVvZiBhID0zRD0zRD0zRCAic3RyaW5nIikgcmV0
dXJuID0NCmMuaW5BcnJheSh0aGlzWzBdLCBhID8gYyhhKSA6IHRoaXMucGFy
ZW50KCkuY2hpbGRyZW4oKSk7DQogICAgICAgICAgICByZXR1cm4gYy5pbkFy
cmF5KGEuanF1ZXJ5ID8gYVswXSA6IGEsIHRoaXMpDQogICAgICAgIH0sDQog
ICAgICAgIGFkZDogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIGEg
PTNEIHR5cGVvZiBhID0zRD0zRD0zRCAic3RyaW5nIiA/IGMoYSwgYiB8fCB0
aGlzLmNvbnRleHQpID0NCjogYy5tYWtlQXJyYXkoYSk7DQogICAgICAgICAg
ICBiID0zRCBjLm1lcmdlKHRoaXMuZ2V0KCksIGEpOw0KICAgICAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKHFhKGFbMF0pIHx8IHFhKGJbMF0pID8g
YiA6ID0NCmMudW5pcXVlKGIpKQ0KICAgICAgICB9LA0KICAgICAgICBhbmRT
ZWxmOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5h
ZGQodGhpcy5wcmV2T2JqZWN0KQ0KICAgICAgICB9DQogICAgfSk7DQogICAg
Yy5lYWNoKHsNCiAgICAgICAgcGFyZW50OiBmdW5jdGlvbiAoYSkgew0KICAg
ICAgICAgICAgcmV0dXJuIChhID0zRCBhLnBhcmVudE5vZGUpICYmIGEubm9k
ZVR5cGUgIT0zRD0zRCAxMSA/IGEgOiA9DQpudWxsDQogICAgICAgIH0sDQog
ICAgICAgIHBhcmVudHM6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBy
ZXR1cm4gYy5kaXIoYSwgInBhcmVudE5vZGUiKQ0KICAgICAgICB9LA0KICAg
ICAgICBwYXJlbnRzVW50aWw6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAg
ICAgICAgICByZXR1cm4gYy5kaXIoYSwgInBhcmVudE5vZGUiLCBkKQ0KICAg
ICAgICB9LA0KICAgICAgICBuZXh0OiBmdW5jdGlvbiAoYSkgew0KICAgICAg
ICAgICAgcmV0dXJuIGMubnRoKGEsIDIsICJuZXh0U2libGluZyIpDQogICAg
ICAgIH0sDQogICAgICAgIHByZXY6IGZ1bmN0aW9uIChhKSB7DQogICAgICAg
ICAgICByZXR1cm4gYy5udGgoYSwgMiwgInByZXZpb3VzU2libGluZyIpDQog
ICAgICAgIH0sDQogICAgICAgIG5leHRBbGw6IGZ1bmN0aW9uIChhKSB7DQog
ICAgICAgICAgICByZXR1cm4gYy5kaXIoYSwgIm5leHRTaWJsaW5nIikNCiAg
ICAgICAgfSwNCiAgICAgICAgcHJldkFsbDogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgIHJldHVybiBjLmRpcihhLCAicHJldmlvdXNTaWJsaW5nIikN
CiAgICAgICAgfSwNCiAgICAgICAgbmV4dFVudGlsOiBmdW5jdGlvbiAoYSwg
YiwgZCkgew0KICAgICAgICAgICAgcmV0dXJuIGMuZGlyKGEsICJuZXh0U2li
bGluZyIsIGQpDQogICAgICAgIH0sDQogICAgICAgIHByZXZVbnRpbDogZnVu
Y3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgIHJldHVybiBjLmRpcihh
LCAicHJldmlvdXNTaWJsaW5nIiwgZCkNCiAgICAgICAgfSwNCiAgICAgICAg
c2libGluZ3M6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICByZXR1cm4g
Yy5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLCBhKQ0KICAgICAg
ICB9LA0KICAgICAgICBjaGlsZHJlbjogZnVuY3Rpb24gKGEpIHsNCiAgICAg
ICAgICAgIHJldHVybiBjLnNpYmxpbmcoYS5maXJzdENoaWxkKQ0KICAgICAg
ICB9LA0KICAgICAgICBjb250ZW50czogZnVuY3Rpb24gKGEpIHsNCiAgICAg
ICAgICAgIHJldHVybiBjLm5vZGVOYW1lKGEsICJpZnJhbWUiKSA/IGEuY29u
dGVudERvY3VtZW50IHx8ID0NCmEuY29udGVudFdpbmRvdy5kb2N1bWVudCA6
IGMubWFrZUFycmF5KGEuY2hpbGROb2RlcykNCiAgICAgICAgfQ0KICAgIH0s
IGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgIGMuZm5bYV0gPTNEIGZ1bmN0
aW9uIChkLCBmKSB7DQogICAgICAgICAgICB2YXIgZSA9M0QgYy5tYXAodGhp
cywgYiwgZCk7DQogICAgICAgICAgICBlYi50ZXN0KGEpIHx8IChmID0zRCBk
KTsNCiAgICAgICAgICAgIGlmIChmICYmIHR5cGVvZiBmID0zRD0zRD0zRCAi
c3RyaW5nIikgZSA9M0QgYy5maWx0ZXIoZiwgZSk7DQogICAgICAgICAgICBl
ID0zRCB0aGlzLmxlbmd0aCA+IDEgPyBjLnVuaXF1ZShlKSA6IGU7DQogICAg
ICAgICAgICBpZiAoKHRoaXMubGVuZ3RoID4gMSB8fCBnYi50ZXN0KGYpKSAm
JiBmYi50ZXN0KGEpKSBlID0zRCA9DQplLnJldmVyc2UoKTsNCiAgICAgICAg
ICAgIHJldHVybiB0aGlzLnB1c2hTdGFjayhlLCBhLCBSLmNhbGwoYXJndW1l
bnRzKS5qb2luKCIsIikpDQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmV4
dGVuZCh7DQogICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGEsIGIsIGQpIHsN
CiAgICAgICAgICAgIGlmIChkKSBhID0zRCAiOm5vdCgiICsgYSArICIpIjsN
CiAgICAgICAgICAgIHJldHVybiBjLmZpbmQubWF0Y2hlcyhhLCBiKQ0KICAg
ICAgICB9LA0KICAgICAgICBkaXI6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQog
ICAgICAgICAgICB2YXIgZiA9M0QgW107DQogICAgICAgICAgICBmb3IgKGEg
PTNEIGFbYl07IGEgJiYgYS5ub2RlVHlwZSAhPTNEPTNEIDkgJiYgKGQgPTNE
PTNEPTNEIHcgPQ0KfHwgYS5ub2RlVHlwZSAhPTNEPTNEIDEgfHwgIWMoYSku
aXMoZCkpOykgew0KICAgICAgICAgICAgICAgIGEubm9kZVR5cGUgPTNEPTNE
PTNEIDEgJiYgZi5wdXNoKGEpOw0KICAgICAgICAgICAgICAgIGEgPTNEIGFb
Yl0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBmDQogICAg
ICAgIH0sDQogICAgICAgIG50aDogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAg
ICAgICAgICAgIGIgPTNEIGIgfHwgMTsNCiAgICAgICAgICAgIGZvciAodmFy
IGYgPTNEIDA7IGE7IGEgPTNEIGFbZF0pIGlmIChhLm5vZGVUeXBlID0zRD0z
RD0zRCAxID0NCiYmICsrZiA9M0Q9M0Q9M0QgYikgYnJlYWs7DQogICAgICAg
ICAgICByZXR1cm4gYQ0KICAgICAgICB9LA0KICAgICAgICBzaWJsaW5nOiBm
dW5jdGlvbiAoYSwgYikgew0KICAgICAgICAgICAgZm9yICh2YXIgZCA9M0Qg
W107IGE7IGEgPTNEIGEubmV4dFNpYmxpbmcpIGEubm9kZVR5cGUgPQ0KPTNE
PTNEPTNEIDEgJiYgYSAhPTNEPTNEIGIgJiYgZC5wdXNoKGEpOw0KICAgICAg
ICAgICAgcmV0dXJuIGQNCiAgICAgICAgfQ0KICAgIH0pOw0KICAgIHZhciBK
YSA9M0QgLyBqUXVlcnlcZCs9M0QiKD86XGQrfG51bGwpIi9nLA0KICAgICAg
ICBWID0zRCAvXlxzKy8sDQogICAgICAgIEthID0zRCAvKDwoW1x3Ol0rKVte
Pl0qPylcLz4vZywNCiAgICAgICAgaGIgPTNEIC9eKD86YXJlYXxicnxjb2x8
ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkkL2ksDQogICAg
ICAgIExhID0zRCAvPChbXHc6XSspLywNCiAgICAgICAgaWIgPTNEIC88dGJv
ZHkvaSwNCiAgICAgICAgamIgPTNEIC88fCYjP1x3KzsvLA0KICAgICAgICB0
YSA9M0QgLzxzY3JpcHR8PG9iamVjdHw8ZW1iZWR8PG9wdGlvbnw8c3R5bGUv
aSwNCiAgICAgICAgdWEgPTNEIC9jaGVja2VkXHMqKD86W149M0RdfD0zRFxz
Ki5jaGVja2VkLikvaSwNCiAgICAgICAgTWEgPTNEIGZ1bmN0aW9uIChhLCBi
LCBkKSB7DQogICAgICAgIHJldHVybiBoYi50ZXN0KGQpID8gYSA6IGIgKyAi
PjwvIiArIGQgKyAiPiINCiAgICB9LA0KICAgICAgICBGID0zRCB7DQogICAg
ICAgIG9wdGlvbjogWzEsICI8c2VsZWN0IG11bHRpcGxlPTNEJ211bHRpcGxl
Jz4iLCAiPC9zZWxlY3Q+Il0sDQogICAgICAgIGxlZ2VuZDogWzEsICI8Zmll
bGRzZXQ+IiwgIjwvZmllbGRzZXQ+Il0sDQogICAgICAgIHRoZWFkOiBbMSwg
Ijx0YWJsZT4iLCAiPC90YWJsZT4iXSwNCiAgICAgICAgdHI6IFsyLCAiPHRh
YmxlPjx0Ym9keT4iLCAiPC90Ym9keT48L3RhYmxlPiJdLA0KICAgICAgICB0
ZDogWzMsICI8dGFibGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5Pjwv
dGFibGU+Il0sDQogICAgICAgIGNvbDogWzIsICI8dGFibGU+PHRib2R5Pjwv
dGJvZHk+PGNvbGdyb3VwPiIsID0NCiI8L2NvbGdyb3VwPjwvdGFibGU+Il0s
DQogICAgICAgIGFyZWE6IFsxLCAiPG1hcD4iLCAiPC9tYXA+Il0sDQogICAg
ICAgIF9kZWZhdWx0OiBbMCwgIiIsICIiXQ0KICAgIH07DQogICAgRi5vcHRn
cm91cCA9M0QgRi5vcHRpb247DQogICAgRi50Ym9keSA9M0QgRi50Zm9vdCA9
M0QgRi5jb2xncm91cCA9M0QgRi5jYXB0aW9uID0zRCBGLnRoZWFkOw0KICAg
IEYudGggPTNEIEYudGQ7DQogICAgaWYgKCFjLnN1cHBvcnQuaHRtbFNlcmlh
bGl6ZSkgRi5fZGVmYXVsdCA9M0QgWzEsICJkaXY8ZGl2PiIsID0NCiI8L2Rp
dj4iXTsNCiAgICBjLmZuLmV4dGVuZCh7DQogICAgICAgIHRleHQ6IGZ1bmN0
aW9uIChhKSB7DQogICAgICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGEpKSBy
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIChiKSB7DQogICAgICAgICAgICAg
ICAgdmFyIGQgPTNEDQogICAgICAgICAgICAgICAgYyh0aGlzKTsNCiAgICAg
ICAgICAgICAgICBkLnRleHQoYS5jYWxsKHRoaXMsIGIsIGQudGV4dCgpKSkN
CiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgaWYgKHR5cGVvZiBhICE9
M0Q9M0QgIm9iamVjdCIgJiYgYSAhPTNEPTNEIHcpIHJldHVybiA9DQp0aGlz
LmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdICYmIHRoaXNbMF0ub3duZXJEb2N1
bWVudCB8fCA9DQpzKS5jcmVhdGVUZXh0Tm9kZShhKSk7DQogICAgICAgICAg
ICByZXR1cm4gYy50ZXh0KHRoaXMpDQogICAgICAgIH0sDQogICAgICAgIHdy
YXBBbGw6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBpZiAoYy5pc0Z1
bmN0aW9uKGEpKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIChkKSB7DQog
ICAgICAgICAgICAgICAgYyh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLCBk
KSkNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgaWYgKHRoaXNbMF0p
IHsNCiAgICAgICAgICAgICAgICB2YXIgYiA9M0QgYyhhLCB0aGlzWzBdLm93
bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKHRydWUpOw0KICAgICAgICAgICAg
ICAgIHRoaXNbMF0ucGFyZW50Tm9kZSAmJiBiLmluc2VydEJlZm9yZSh0aGlz
WzBdKTsNCiAgICAgICAgICAgICAgICBiLm1hcChmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPTNEIHRoaXM7IGQuZmly
c3RDaGlsZCAmJiA9DQpkLmZpcnN0Q2hpbGQubm9kZVR5cGUgPTNEPTNEPTNE
IDE7KSBkID0zRCBkLmZpcnN0Q2hpbGQ7DQogICAgICAgICAgICAgICAgICAg
IHJldHVybiBkDQogICAgICAgICAgICAgICAgfSkuYXBwZW5kKHRoaXMpDQog
ICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdGhpcw0KICAgICAg
ICB9LA0KICAgICAgICB3cmFwSW5uZXI6IGZ1bmN0aW9uIChhKSB7DQogICAg
ICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGEpKSByZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uIChiKSB7DQogICAgICAgICAgICAgICAgYyh0aGlzKS53cmFw
SW5uZXIoYS5jYWxsKHRoaXMsIGIpKQ0KICAgICAgICAgICAgfSk7DQogICAg
ICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgICAgICAgICB2YXIgYiA9M0QgYyh0aGlzKSwNCiAgICAgICAgICAgICAg
ICAgICAgZCA9M0QgYi5jb250ZW50cygpOw0KICAgICAgICAgICAgICAgIGQu
bGVuZ3RoID8gZC53cmFwQWxsKGEpIDogYi5hcHBlbmQoYSkNCiAgICAgICAg
ICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIHdyYXA6IGZ1bmN0aW9uIChh
KSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgp
IHsNCiAgICAgICAgICAgICAgICBjKHRoaXMpLndyYXBBbGwoYSkNCiAgICAg
ICAgICAgIH0pDQogICAgICAgIH0sDQogICAgICAgIHVud3JhcDogZnVuY3Rp
b24gKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50KCkuZWFj
aChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgYy5ub2RlTmFtZSh0
aGlzLCAiYm9keSIpIHx8ID0NCmModGhpcykucmVwbGFjZVdpdGgodGhpcy5j
aGlsZE5vZGVzKQ0KICAgICAgICAgICAgfSkuZW5kKCkNCiAgICAgICAgfSwN
CiAgICAgICAgYXBwZW5kOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBy
ZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIHRydWUsIGZ1bmN0aW9u
IChhKSB7DQogICAgICAgICAgICAgICAgdGhpcy5ub2RlVHlwZSA9M0Q9M0Q9
M0QgMSAmJiB0aGlzLmFwcGVuZENoaWxkKGEpDQogICAgICAgICAgICB9KQ0K
ICAgICAgICB9LA0KICAgICAgICBwcmVwZW5kOiBmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICByZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIHRy
dWUsIGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICAgICAgdGhpcy5ub2Rl
VHlwZSA9M0Q9M0Q9M0QgMSAmJiB0aGlzLmluc2VydEJlZm9yZShhLCA9DQp0
aGlzLmZpcnN0Q2hpbGQpDQogICAgICAgICAgICB9KQ0KICAgICAgICB9LA0K
ICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGlm
ICh0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSkgcmV0dXJuID0NCnRo
aXMuZG9tTWFuaXAoYXJndW1lbnRzLCBmYWxzZSwgZnVuY3Rpb24gKGIpIHsN
CiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3Jl
KGIsIHRoaXMpDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGVsc2Ug
aWYgKGFyZ3VtZW50cy5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICB2YXIg
YSA9M0QgYyhhcmd1bWVudHNbMF0pOw0KICAgICAgICAgICAgICAgIGEucHVz
aC5hcHBseShhLCB0aGlzLnRvQXJyYXkoKSk7DQogICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKGEsICJiZWZvcmUiLCBhcmd1bWVudHMp
DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGFmdGVyOiBm
dW5jdGlvbiAoKSB7DQogICAgICAgICAgICBpZiAodGhpc1swXSAmJiB0aGlz
WzBdLnBhcmVudE5vZGUpIHJldHVybiA9DQp0aGlzLmRvbU1hbmlwKGFyZ3Vt
ZW50cywgZmFsc2UsIGZ1bmN0aW9uIChiKSB7DQogICAgICAgICAgICAgICAg
dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShiLCB0aGlzLm5leHRTaWJs
aW5nKQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBlbHNlIGlmIChh
cmd1bWVudHMubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgdmFyIGEgPTNE
IHRoaXMucHVzaFN0YWNrKHRoaXMsICJhZnRlciIsIGFyZ3VtZW50cyk7DQog
ICAgICAgICAgICAgICAgYS5wdXNoLmFwcGx5KGEsIGMoYXJndW1lbnRzWzBd
KS50b0FycmF5KCkpOw0KICAgICAgICAgICAgICAgIHJldHVybiBhDQogICAg
ICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIHJlbW92ZTogZnVuY3Rp
b24gKGEsIGIpIHsNCiAgICAgICAgICAgIGZvciAodmFyIGQgPTNEIDAsIGY7
DQogICAgICAgICAgICAoZiA9M0QgdGhpc1tkXSkgIT0zRCBudWxsOyBkKysp
IGlmICghYSB8fCBjLmZpbHRlcihhLCA9DQpbZl0pLmxlbmd0aCkgew0KICAg
ICAgICAgICAgICAgIGlmICghYiAmJiBmLm5vZGVUeXBlID0zRD0zRD0zRCAx
KSB7DQogICAgICAgICAgICAgICAgICAgIGMuY2xlYW5EYXRhKGYuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoIioiKSk7DQogICAgICAgICAgICAgICAgICAgIGMu
Y2xlYW5EYXRhKFtmXSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgZi5wYXJlbnROb2RlICYmIGYucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChmKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXMN
CiAgICAgICAgfSwNCiAgICAgICAgZW1wdHk6IGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgIGZvciAodmFyIGEgPTNEIDAsIGI7DQogICAgICAgICAgICAo
YiA9M0QgdGhpc1thXSkgIT0zRCBudWxsOyBhKyspIGZvciAoYi5ub2RlVHlw
ZSA9M0Q9M0Q9M0QgMSA9DQomJiBjLmNsZWFuRGF0YShiLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIikpOyBiLmZpcnN0Q2hpbGQ7KSA9DQpiLnJlbW92ZUNo
aWxkKGIuZmlyc3RDaGlsZCk7DQogICAgICAgICAgICByZXR1cm4gdGhpcw0K
ICAgICAgICB9LA0KICAgICAgICBjbG9uZTogZnVuY3Rpb24gKGEpIHsNCiAg
ICAgICAgICAgIHZhciBiID0zRCB0aGlzLm1hcChmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICAgICAgaWYgKCFjLnN1cHBvcnQubm9DbG9uZUV2ZW50ICYm
ICFjLmlzWE1MRG9jKHRoaXMpKSB7DQogICAgICAgICAgICAgICAgICAgIHZh
ciBkID0zRCB0aGlzLm91dGVySFRNTCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGYgPTNEIHRoaXMub3duZXJEb2N1bWVudDsNCiAgICAgICAgICAgICAg
ICAgICAgaWYgKCFkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkID0z
RCBmLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgZC5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7DQog
ICAgICAgICAgICAgICAgICAgICAgICBkID0zRCBkLmlubmVySFRNTA0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHJldHVy
biBjLmNsZWFuKFtkLnJlcGxhY2UoSmEsID0NCiIiKS5yZXBsYWNlKC89M0Qo
W149M0QiJz5cc10rXC8pPi9nLCAnPTNEIiQxIj4nKS5yZXBsYWNlKFYsICIi
KV0sIGYpWzBdDQogICAgICAgICAgICAgICAgfSBlbHNlIHJldHVybiB0aGlz
LmNsb25lTm9kZSh0cnVlKQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAg
ICBpZiAoYSA9M0Q9M0Q9M0QgdHJ1ZSkgew0KICAgICAgICAgICAgICAgIHJh
KHRoaXMsIGIpOw0KICAgICAgICAgICAgICAgIHJhKHRoaXMuZmluZCgiKiIp
LCBiLmZpbmQoIioiKSkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJl
dHVybiBiDQogICAgICAgIH0sDQogICAgICAgIGh0bWw6IGZ1bmN0aW9uIChh
KSB7DQogICAgICAgICAgICBpZiAoYSA9M0Q9M0Q9M0QgdykgcmV0dXJuIHRo
aXNbMF0gJiYgdGhpc1swXS5ub2RlVHlwZSA9DQo9M0Q9M0Q9M0QgMSA/IHRo
aXNbMF0uaW5uZXJIVE1MLnJlcGxhY2UoSmEsICIiKSA6IG51bGw7DQogICAg
ICAgICAgICBlbHNlIGlmICh0eXBlb2YgYSA9M0Q9M0Q9M0QgInN0cmluZyIg
JiYgIXRhLnRlc3QoYSkgJiYgPQ0KKGMuc3VwcG9ydC5sZWFkaW5nV2hpdGVz
cGFjZSB8fCAhVi50ZXN0KGEpKSAmJiAhRlsoTGEuZXhlYyhhKSB8fCBbIiIs
ID0NCiIiXSlbMV0udG9Mb3dlckNhc2UoKV0pIHsNCiAgICAgICAgICAgICAg
ICBhID0zRCBhLnJlcGxhY2UoS2EsIE1hKTsNCiAgICAgICAgICAgICAgICB0
cnkgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBiID0zRCAwLCBk
ID0zRCB0aGlzLmxlbmd0aDsgYiA8IGQ7IGIrKykgaWYgPQ0KKHRoaXNbYl0u
bm9kZVR5cGUgPTNEPTNEPTNEIDEpIHsNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGMuY2xlYW5EYXRhKHRoaXNbYl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUo
IioiKSk7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2JdLmlubmVy
SFRNTCA9M0QgYQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgfSBjYXRjaCAoZikgew0KICAgICAgICAgICAgICAgICAgICB0aGlz
LmVtcHR5KCkuYXBwZW5kKGEpDQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgfSBlbHNlIGMuaXNGdW5jdGlvbihhKSA/IHRoaXMuZWFjaChmdW5j
dGlvbiAoZSkgew0KICAgICAgICAgICAgICAgIHZhciBqID0zRCBjKHRoaXMp
LA0KICAgICAgICAgICAgICAgICAgICBpID0zRCBqLmh0bWwoKTsNCiAgICAg
ICAgICAgICAgICBqLmVtcHR5KCkuYXBwZW5kKGZ1bmN0aW9uICgpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY2FsbCh0aGlzLCBlLCBpKQ0K
ICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICB9KSA6IHRoaXMuZW1w
dHkoKS5hcHBlbmQoYSk7DQogICAgICAgICAgICByZXR1cm4gdGhpcw0KICAg
ICAgICB9LA0KICAgICAgICByZXBsYWNlV2l0aDogZnVuY3Rpb24gKGEpIHsN
CiAgICAgICAgICAgIGlmICh0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9k
ZSkgew0KICAgICAgICAgICAgICAgIGlmIChjLmlzRnVuY3Rpb24oYSkpIHJl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKGIpIHsNCiAgICAgICAgICAgICAg
ICAgICAgdmFyIGQgPTNEIGModGhpcyksDQogICAgICAgICAgICAgICAgICAg
ICAgICBmID0zRCBkLmh0bWwoKTsNCiAgICAgICAgICAgICAgICAgICAgZC5y
ZXBsYWNlV2l0aChhLmNhbGwodGhpcywgYiwgZikpDQogICAgICAgICAgICAg
ICAgfSk7DQogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhICE9M0Q9M0Qg
InN0cmluZyIpIGEgPTNEIGMoYSkuZGV0YWNoKCk7DQogICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICAgICAgICAgIHZhciBiID0zRCB0aGlzLm5leHRTaWJsaW5nLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgZCA9M0QgdGhpcy5wYXJlbnROb2RlOw0KICAg
ICAgICAgICAgICAgICAgICBjKHRoaXMpLnJlbW92ZSgpOw0KICAgICAgICAg
ICAgICAgICAgICBiID8gYyhiKS5iZWZvcmUoYSkgOiBjKGQpLmFwcGVuZChh
KQ0KICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICB9IGVsc2UgcmV0
dXJuIHRoaXMucHVzaFN0YWNrKGMoYy5pc0Z1bmN0aW9uKGEpID8gYSgpIDog
YSksID0NCiJyZXBsYWNlV2l0aCIsIGEpDQogICAgICAgIH0sDQogICAgICAg
IGRldGFjaDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgICAgIHJldHVybiB0
aGlzLnJlbW92ZShhLCB0cnVlKQ0KICAgICAgICB9LA0KICAgICAgICBkb21N
YW5pcDogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAgIGZ1bmN0
aW9uIGYodSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBjLm5vZGVOYW1l
KHUsICJ0YWJsZSIpID8gPQ0KdS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJv
ZHkiKVswXSB8fCA9DQp1LmFwcGVuZENoaWxkKHUub3duZXJEb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0Ym9keSIpKSA6IHUNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIHZhciBlLCBqLCBpID0zRCBhWzBdLA0KICAgICAgICAgICAg
ICAgIG8gPTNEIFtdLA0KICAgICAgICAgICAgICAgIGs7DQogICAgICAgICAg
ICBpZiAoIWMuc3VwcG9ydC5jaGVja0Nsb25lICYmIGFyZ3VtZW50cy5sZW5n
dGggPTNEPTNEPTNEIDMgJiYgPQ0KdHlwZW9mIGkgPTNEPTNEPTNEICJzdHJp
bmciICYmIHVhLnRlc3QoaSkpIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24g
KCkgPQ0Kew0KICAgICAgICAgICAgICAgIGModGhpcykuZG9tTWFuaXAoYSwg
YiwgZCwgdHJ1ZSkNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgaWYg
KGMuaXNGdW5jdGlvbihpKSkgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAo
dSkgew0KICAgICAgICAgICAgICAgIHZhciB6ID0zRCBjKHRoaXMpOw0KICAg
ICAgICAgICAgICAgIGFbMF0gPTNEIGkuY2FsbCh0aGlzLCB1LCBiID8gei5o
dG1sKCkgOiB3KTsNCiAgICAgICAgICAgICAgICB6LmRvbU1hbmlwKGEsIGIs
IGQpDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmICh0aGlzWzBd
KSB7DQogICAgICAgICAgICAgICAgZSA9M0QgaSAmJiBpLnBhcmVudE5vZGU7
DQogICAgICAgICAgICAgICAgZSA9M0QgYy5zdXBwb3J0LnBhcmVudE5vZGUg
JiYgZSAmJiBlLm5vZGVUeXBlID0zRD0zRD0zRCA9DQoxMSAmJiBlLmNoaWxk
Tm9kZXMubGVuZ3RoID0zRD0zRD0zRCB0aGlzLmxlbmd0aCA/IHsNCiAgICAg
ICAgICAgICAgICAgICAgZnJhZ21lbnQ6IGUNCiAgICAgICAgICAgICAgICB9
IDogc2EoYSwgdGhpcywgbyk7DQogICAgICAgICAgICAgICAgayA9M0QgZS5m
cmFnbWVudDsNCiAgICAgICAgICAgICAgICBpZiAoaiA9M0Qgay5jaGlsZE5v
ZGVzLmxlbmd0aCA9M0Q9M0Q9M0QgMSA/IChrID0zRCA9DQprLmZpcnN0Q2hp
bGQpIDogay5maXJzdENoaWxkKSB7DQogICAgICAgICAgICAgICAgICAgIGIg
PTNEIGIgJiYgYy5ub2RlTmFtZShqLCAidHIiKTsNCiAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgbiA9M0QgMCwgciA9M0QgdGhpcy5sZW5ndGg7IG4g
PCByOyBuKyspID0NCmQuY2FsbChiID8gZih0aGlzW25dLCBqKSA6IHRoaXNb
bl0sIG4gPiAwIHx8IGUuY2FjaGVhYmxlIHx8IHRoaXMubGVuZ3RoID0NCj4g
MSA/IGsuY2xvbmVOb2RlKHRydWUpIDogaykNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgby5sZW5ndGggJiYgYy5lYWNoKG8sIFFhKQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAg
ICAgfQ0KICAgIH0pOw0KICAgIGMuZnJhZ21lbnRzID0zRCB7fTsNCiAgICBj
LmVhY2goew0KICAgICAgICBhcHBlbmRUbzogImFwcGVuZCIsDQogICAgICAg
IHByZXBlbmRUbzogInByZXBlbmQiLA0KICAgICAgICBpbnNlcnRCZWZvcmU6
ICJiZWZvcmUiLA0KICAgICAgICBpbnNlcnRBZnRlcjogImFmdGVyIiwNCiAg
ICAgICAgcmVwbGFjZUFsbDogInJlcGxhY2VXaXRoIg0KICAgIH0sIGZ1bmN0
aW9uIChhLCBiKSB7DQogICAgICAgIGMuZm5bYV0gPTNEIGZ1bmN0aW9uIChk
KSB7DQogICAgICAgICAgICB2YXIgZiA9M0QgW107DQogICAgICAgICAgICBk
ID0zRCBjKGQpOw0KICAgICAgICAgICAgdmFyIGUgPTNEIHRoaXMubGVuZ3Ro
ID0zRD0zRD0zRCAxICYmIHRoaXNbMF0ucGFyZW50Tm9kZTsNCiAgICAgICAg
ICAgIGlmIChlICYmIGUubm9kZVR5cGUgPTNEPTNEPTNEIDExICYmIGUuY2hp
bGROb2Rlcy5sZW5ndGggPQ0KPTNEPTNEPTNEIDEgJiYgZC5sZW5ndGggPTNE
PTNEPTNEIDEpIHsNCiAgICAgICAgICAgICAgICBkW2JdKHRoaXNbMF0pOw0K
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzDQogICAgICAgICAgICB9IGVs
c2Ugew0KICAgICAgICAgICAgICAgIGUgPTNEIDA7DQogICAgICAgICAgICAg
ICAgZm9yICh2YXIgaiA9M0QgZC5sZW5ndGg7IGUgPCBqOyBlKyspIHsNCiAg
ICAgICAgICAgICAgICAgICAgdmFyIGkgPTNEIChlID4gMCA/IHRoaXMuY2xv
bmUodHJ1ZSkgOiB0aGlzKS5nZXQoKTsNCiAgICAgICAgICAgICAgICAgICAg
Yy5mbltiXS5hcHBseShjKGRbZV0pLCBpKTsNCiAgICAgICAgICAgICAgICAg
ICAgZiA9M0QgZi5jb25jYXQoaSkNCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGYsIGEsIGQuc2Vs
ZWN0b3IpDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9KTsNCiAg
ICBjLmV4dGVuZCh7DQogICAgICAgIGNsZWFuOiBmdW5jdGlvbiAoYSwgYiwg
ZCwgZikgew0KICAgICAgICAgICAgYiA9M0QgYiB8fCBzOw0KICAgICAgICAg
ICAgaWYgKHR5cGVvZiBiLmNyZWF0ZUVsZW1lbnQgPTNEPTNEPTNEICJ1bmRl
ZmluZWQiKSBiID0zRCA9DQpiLm93bmVyRG9jdW1lbnQgfHwgYlswXSAmJiBi
WzBdLm93bmVyRG9jdW1lbnQgfHwgczsNCiAgICAgICAgICAgIGZvciAodmFy
IGUgPTNEIFtdLCBqID0zRCAwLCBpOw0KICAgICAgICAgICAgKGkgPTNEIGFb
al0pICE9M0QgbnVsbDsgaisrKSB7DQogICAgICAgICAgICAgICAgaWYgKHR5
cGVvZiBpID0zRD0zRD0zRCAibnVtYmVyIikgaSArPTNEICIiOw0KICAgICAg
ICAgICAgICAgIGlmIChpKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh0
eXBlb2YgaSA9M0Q9M0Q9M0QgInN0cmluZyIgJiYgIWpiLnRlc3QoaSkpIGkg
PQ0KPTNEIGIuY3JlYXRlVGV4dE5vZGUoaSk7DQogICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHR5cGVvZiBpID0zRD0zRD0zRCAic3RyaW5nIikgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgaSA9M0QgaS5yZXBsYWNlKEthLCBN
YSk7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9M0QgKExhLmV4
ZWMoaSkgfHwgWyIiLCA9DQoiIl0pWzFdLnRvTG93ZXJDYXNlKCksDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgayA9M0QgRltvXSB8fCBGLl9kZWZh
dWx0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPTNEIGtbMF0s
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9M0QgYi5jcmVhdGVF
bGVtZW50KCJkaXYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
ci5pbm5lckhUTUwgPTNEIGtbMV0gKyBpICsga1syXTsgbi0tOykgciA9DQo9
M0Qgci5sYXN0Q2hpbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWMuc3VwcG9ydC50Ym9keSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG4gPTNEIGliLnRlc3QoaSk7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbyA9M0QgbyA9M0Q9M0Q9M0QgInRhYmxlIiAmJiAhbiA/ID0NCnIu
Zmlyc3RDaGlsZCAmJiByLmZpcnN0Q2hpbGQuY2hpbGROb2RlcyA6IGtbMV0g
PTNEPTNEPTNEICI8dGFibGU+IiAmJiAhbiA9DQo/IHIuY2hpbGROb2RlcyA6
IFtdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoayA9M0Qg
by5sZW5ndGggLSAxOyBrID49M0QgMDsgLS1rKSA9DQpjLm5vZGVOYW1lKG9b
a10sICJ0Ym9keSIpICYmICFvW2tdLmNoaWxkTm9kZXMubGVuZ3RoICYmID0N
Cm9ba10ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvW2tdKQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgfSFjLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2Ug
JiYgVi50ZXN0KGkpICYmID0NCnIuaW5zZXJ0QmVmb3JlKGIuY3JlYXRlVGV4
dE5vZGUoVi5leGVjKGkpWzBdKSwgci5maXJzdENoaWxkKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGkgPTNEIHIuY2hpbGROb2Rlcw0KICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmIChpLm5vZGVU
eXBlKSBlLnB1c2goaSk7DQogICAgICAgICAgICAgICAgICAgIGVsc2UgZSA9
M0QgYy5tZXJnZShlLCBpKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGlmIChkKSBmb3IgKGogPTNEIDA7IGVbal07
IGorKykgaWYgKGYgJiYgYy5ub2RlTmFtZShlW2pdLCA9DQoic2NyaXB0Iikg
JiYgKCFlW2pdLnR5cGUgfHwgZVtqXS50eXBlLnRvTG93ZXJDYXNlKCkgPTNE
PTNEPTNEID0NCiJ0ZXh0L2phdmFzY3JpcHQiKSkgZi5wdXNoKGVbal0ucGFy
ZW50Tm9kZSA/ID0NCmVbal0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlW2pd
KSA6IGVbal0pOw0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAg
ICAgZVtqXS5ub2RlVHlwZSA9M0Q9M0Q9M0QgMSAmJiBlLnNwbGljZS5hcHBs
eShlLCBbaiArIDEsID0NCjBdLmNvbmNhdChjLm1ha2VBcnJheShlW2pdLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSkpKTsNCiAgICAgICAgICAg
ICAgICBkLmFwcGVuZENoaWxkKGVbal0pDQogICAgICAgICAgICB9DQogICAg
ICAgICAgICByZXR1cm4gZQ0KICAgICAgICB9LA0KICAgICAgICBjbGVhbkRh
dGE6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICBmb3IgKHZhciBiLCBk
LCBmID0zRCBjLmNhY2hlLCBlID0zRCBjLmV2ZW50LnNwZWNpYWwsIGogPTNE
ID0NCmMuc3VwcG9ydC5kZWxldGVFeHBhbmRvLCBpID0zRCAwLCBvOw0KICAg
ICAgICAgICAgKG8gPTNEIGFbaV0pICE9M0QgbnVsbDsgaSsrKSBpZiAoZCA9
M0Qgb1tjLmV4cGFuZG9dKSB7DQogICAgICAgICAgICAgICAgYiA9M0QgZltk
XTsNCiAgICAgICAgICAgICAgICBpZiAoYi5ldmVudHMpIGZvciAodmFyIGsg
aW4gYi5ldmVudHMpIGVba10gPyA9DQpjLmV2ZW50LnJlbW92ZShvLCBrKSA6
IENhKG8sIGssIGIuaGFuZGxlKTsNCiAgICAgICAgICAgICAgICBpZiAoaikg
ZGVsZXRlIG9bYy5leHBhbmRvXTsNCiAgICAgICAgICAgICAgICBlbHNlIG8u
cmVtb3ZlQXR0cmlidXRlICYmIG8ucmVtb3ZlQXR0cmlidXRlKGMuZXhwYW5k
byk7DQogICAgICAgICAgICAgICAgZGVsZXRlIGZbZF0NCiAgICAgICAgICAg
IH0NCiAgICAgICAgfQ0KICAgIH0pOw0KICAgIHZhciBrYiA9M0QgL3otP2lu
ZGV4fGZvbnQtP3dlaWdodHxvcGFjaXR5fHpvb218bGluZS0/aGVpZ2h0L2ks
DQogICAgICAgIE5hID0zRCAvYWxwaGFcKFteKV0qXCkvLA0KICAgICAgICBP
YSA9M0QgL29wYWNpdHk9M0QoW14pXSopLywNCiAgICAgICAgaGEgPTNEIC9m
bG9hdC9pLA0KICAgICAgICBpYSA9M0QgLy0oW2Etel0pL2lnLA0KICAgICAg
ICBsYiA9M0QgLyhbQS1aXSkvZywNCiAgICAgICAgbWIgPTNEIC9eLT9cZCso
PzpweCk/JC9pLA0KICAgICAgICBuYiA9M0QgL14tP1xkLywNCiAgICAgICAg
b2IgPTNEIHsNCiAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIsDQogICAg
ICAgIHZpc2liaWxpdHk6ICJoaWRkZW4iLA0KICAgICAgICBkaXNwbGF5OiAi
YmxvY2siDQogICAgfSwNCiAgICAgICAgcGIgPTNEIFsiTGVmdCIsICJSaWdo
dCJdLA0KICAgICAgICBxYiA9M0QgWyJUb3AiLCAiQm90dG9tIl0sDQogICAg
ICAgIHJiID0zRCBzLmRlZmF1bHRWaWV3ICYmIHMuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZSwNCiAgICAgICAgUGEgPTNEIGMuc3VwcG9ydC5jc3NG
bG9hdCA/ICJjc3NGbG9hdCIgOiAic3R5bGVGbG9hdCIsDQogICAgICAgIGph
ID0zRA0KDQogICAgZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgcmV0dXJu
IGIudG9VcHBlckNhc2UoKQ0KICAgIH07DQogICAgYy5mbi5jc3MgPTNEIGZ1
bmN0aW9uIChhLCBiKSB7DQogICAgICAgIHJldHVybiBYKHRoaXMsIGEsIGIs
IHRydWUsIGZ1bmN0aW9uIChkLCBmLCBlKSB7DQogICAgICAgICAgICBpZiAo
ZSA9M0Q9M0Q9M0QgdykgcmV0dXJuIGMuY3VyQ1NTKGQsIGYpOw0KICAgICAg
ICAgICAgaWYgKHR5cGVvZiBlID0zRD0zRD0zRCAibnVtYmVyIiAmJiAha2Iu
dGVzdChmKSkgZSArPTNEICJweCI7DQogICAgICAgICAgICBjLnN0eWxlKGQs
IGYsIGUpDQogICAgICAgIH0pDQogICAgfTsNCiAgICBjLmV4dGVuZCh7DQog
ICAgICAgIHN0eWxlOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0KICAgICAgICAg
ICAgaWYgKCFhIHx8IGEubm9kZVR5cGUgPTNEPTNEPTNEIDMgfHwgYS5ub2Rl
VHlwZSA9M0Q9M0Q9M0QgOCkgPQ0KcmV0dXJuIHc7DQogICAgICAgICAgICBp
ZiAoKGIgPTNEPTNEPTNEICJ3aWR0aCIgfHwgYiA9M0Q9M0Q9M0QgImhlaWdo
dCIpICYmID0NCnBhcnNlRmxvYXQoZCkgPCAwKSBkID0zRCB3Ow0KICAgICAg
ICAgICAgdmFyIGYgPTNEIGEuc3R5bGUgfHwgYSwNCiAgICAgICAgICAgICAg
ICBlID0zRCBkICE9M0Q9M0QgdzsNCiAgICAgICAgICAgIGlmICghYy5zdXBw
b3J0Lm9wYWNpdHkgJiYgYiA9M0Q9M0Q9M0QgIm9wYWNpdHkiKSB7DQogICAg
ICAgICAgICAgICAgaWYgKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgZi56
b29tID0zRCAxOw0KICAgICAgICAgICAgICAgICAgICBiID0zRCBwYXJzZUlu
dChkLCAxMCkgKyAiIiA9M0Q9M0Q9M0QgIk5hTiIgPyAiIiA6ID0NCiJhbHBo
YShvcGFjaXR5PTNEIiArIGQgKiAxMDAgKyAiKSI7DQogICAgICAgICAgICAg
ICAgICAgIGEgPTNEIGYuZmlsdGVyIHx8IGMuY3VyQ1NTKGEsICJmaWx0ZXIi
KSB8fCAiIjsNCiAgICAgICAgICAgICAgICAgICAgZi5maWx0ZXIgPTNEDQog
ICAgICAgICAgICAgICAgICAgIE5hLnRlc3QoYSkgPyBhLnJlcGxhY2UoTmEs
IGIpIDogYg0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBy
ZXR1cm4gZi5maWx0ZXIgJiYgZi5maWx0ZXIuaW5kZXhPZigib3BhY2l0eT0z
RCIpID49M0QgMCA9DQo/IHBhcnNlRmxvYXQoT2EuZXhlYyhmLmZpbHRlcilb
MV0pIC8gMTAwICsgIiIgOiAiIg0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgaWYgKGhhLnRlc3QoYikpIGIgPTNEIFBhOw0KICAgICAgICAgICAgYiA9
M0QgYi5yZXBsYWNlKGlhLCBqYSk7DQogICAgICAgICAgICBpZiAoZSkgZlti
XSA9M0QgZDsNCiAgICAgICAgICAgIHJldHVybiBmW2JdDQogICAgICAgIH0s
DQogICAgICAgIGNzczogZnVuY3Rpb24gKGEsIGIsIGQsIGYpIHsNCiAgICAg
ICAgICAgIGlmIChiID0zRD0zRD0zRCAid2lkdGgiIHx8IGIgPTNEPTNEPTNE
ICJoZWlnaHQiKSB7DQogICAgICAgICAgICAgICAgdmFyIGUsIGogPTNEIGIg
PTNEPTNEPTNEICJ3aWR0aCIgPyBwYiA6IHFiOw0KDQogICAgICAgICAgICAg
ICAgZnVuY3Rpb24gaSgpIHsNCiAgICAgICAgICAgICAgICAgICAgZSA9M0Qg
YiA9M0Q9M0Q9M0QgIndpZHRoIiA/IGEub2Zmc2V0V2lkdGggOiA9DQphLm9m
ZnNldEhlaWdodDsNCiAgICAgICAgICAgICAgICAgICAgZiAhPTNEPTNEICJi
b3JkZXIiICYmIGMuZWFjaChqLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBmIHx8IChlIC09M0QgcGFyc2VGbG9hdChjLmN1ckNT
UyhhLCAicGFkZGluZyIgKyA9DQp0aGlzLCB0cnVlKSkgfHwgMCk7DQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZiA9M0Q9M0Q9M0QgIm1hcmdpbiIp
IGUgKz0zRCA9DQpwYXJzZUZsb2F0KGMuY3VyQ1NTKGEsICJtYXJnaW4iICsg
dGhpcywgdHJ1ZSkpIHx8IDA7DQogICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIGUgLT0zRCBwYXJzZUZsb2F0KGMuY3VyQ1NTKGEsICJib3JkZXIiICsg
PQ0KdGhpcyArICJXaWR0aCIsIHRydWUpKSB8fCAwDQogICAgICAgICAgICAg
ICAgICAgIH0pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IGEub2Zmc2V0V2lkdGggIT0zRD0zRCAwID8gaSgpIDogYy5zd2FwKGEsIG9i
LCBpKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0
aC5yb3VuZChlKSkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVy
biBjLmN1ckNTUyhhLCBiLCBkKQ0KICAgICAgICB9LA0KICAgICAgICBjdXJD
U1M6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICB2YXIgZiwg
ZSA9M0QgYS5zdHlsZTsNCiAgICAgICAgICAgIGlmICghYy5zdXBwb3J0Lm9w
YWNpdHkgJiYgYiA9M0Q9M0Q9M0QgIm9wYWNpdHkiICYmID0NCmEuY3VycmVu
dFN0eWxlKSB7DQogICAgICAgICAgICAgICAgZiA9M0QgT2EudGVzdChhLmN1
cnJlbnRTdHlsZS5maWx0ZXIgfHwgIiIpID8gPQ0KcGFyc2VGbG9hdChSZWdF
eHAuJDEpIC8gMTAwICsgIiIgOiAiIjsNCiAgICAgICAgICAgICAgICByZXR1
cm4gZiA9M0Q9M0Q9M0QgIiIgPyAiMSIgOiBmDQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBpZiAoaGEudGVzdChiKSkgYiA9M0QgUGE7DQogICAgICAg
ICAgICBpZiAoIWQgJiYgZSAmJiBlW2JdKSBmID0zRCBlW2JdOw0KICAgICAg
ICAgICAgZWxzZSBpZiAocmIpIHsNCiAgICAgICAgICAgICAgICBpZiAoaGEu
dGVzdChiKSkgYiA9M0QgImZsb2F0IjsNCiAgICAgICAgICAgICAgICBiID0z
RCBiLnJlcGxhY2UobGIsICItJDEiKS50b0xvd2VyQ2FzZSgpOw0KICAgICAg
ICAgICAgICAgIGUgPTNEIGEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzsN
CiAgICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybiBudWxsOw0KICAgICAg
ICAgICAgICAgIGlmIChhID0zRCBlLmdldENvbXB1dGVkU3R5bGUoYSwgbnVs
bCkpIGYgPTNEID0NCmEuZ2V0UHJvcGVydHlWYWx1ZShiKTsNCiAgICAgICAg
ICAgICAgICBpZiAoYiA9M0Q9M0Q9M0QgIm9wYWNpdHkiICYmIGYgPTNEPTNE
PTNEICIiKSBmID0zRCAiMSINCiAgICAgICAgICAgIH0gZWxzZSBpZiAoYS5j
dXJyZW50U3R5bGUpIHsNCiAgICAgICAgICAgICAgICBkID0zRCBiLnJlcGxh
Y2UoaWEsIGphKTsNCiAgICAgICAgICAgICAgICBmID0zRCBhLmN1cnJlbnRT
dHlsZVtiXSB8fCBhLmN1cnJlbnRTdHlsZVtkXTsNCiAgICAgICAgICAgICAg
ICBpZiAoIW1iLnRlc3QoZikgJiYgbmIudGVzdChmKSkgew0KICAgICAgICAg
ICAgICAgICAgICBiID0zRCBlLmxlZnQ7DQogICAgICAgICAgICAgICAgICAg
IHZhciBqID0zRCBhLnJ1bnRpbWVTdHlsZS5sZWZ0Ow0KICAgICAgICAgICAg
ICAgICAgICBhLnJ1bnRpbWVTdHlsZS5sZWZ0ID0zRCBhLmN1cnJlbnRTdHls
ZS5sZWZ0Ow0KICAgICAgICAgICAgICAgICAgICBlLmxlZnQgPTNEIGQgPTNE
PTNEPTNEICJmb250U2l6ZSIgPyAiMWVtIiA6IGYgfHwgMDsNCiAgICAgICAg
ICAgICAgICAgICAgZiA9M0QgZS5waXhlbExlZnQgKyAicHgiOw0KICAgICAg
ICAgICAgICAgICAgICBlLmxlZnQgPTNEIGI7DQogICAgICAgICAgICAgICAg
ICAgIGEucnVudGltZVN0eWxlLmxlZnQgPTNEIGoNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gZg0KICAg
ICAgICB9LA0KICAgICAgICBzd2FwOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0K
ICAgICAgICAgICAgdmFyIGYgPTNEIHt9Ow0KICAgICAgICAgICAgZm9yICh2
YXIgZSBpbiBiKSB7DQogICAgICAgICAgICAgICAgZltlXSA9M0QgYS5zdHls
ZVtlXTsNCiAgICAgICAgICAgICAgICBhLnN0eWxlW2VdID0zRCBiW2VdDQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBkLmNhbGwoYSk7DQogICAgICAg
ICAgICBmb3IgKGUgaW4gYikgYS5zdHlsZVtlXSA9M0QgZltlXQ0KICAgICAg
ICB9DQogICAgfSk7DQogICAgaWYgKGMuZXhwciAmJiBjLmV4cHIuZmlsdGVy
cykgew0KICAgICAgICBjLmV4cHIuZmlsdGVycy5oaWRkZW4gPTNEIGZ1bmN0
aW9uIChhKSB7DQogICAgICAgICAgICB2YXIgYiA9M0QNCiAgICAgICAgICAg
IGEub2Zmc2V0V2lkdGgsDQogICAgICAgICAgICAgICAgZCA9M0QgYS5vZmZz
ZXRIZWlnaHQsDQogICAgICAgICAgICAgICAgZiA9M0QgYS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpID0zRD0zRD0zRCAidHIiOw0KICAgICAgICAgICAgcmV0
dXJuIGIgPTNEPTNEPTNEIDAgJiYgZCA9M0Q9M0Q9M0QgMCAmJiAhZiA/IHRy
dWUgOiBiID4gMCA9DQomJiBkID4gMCAmJiAhZiA/IGZhbHNlIDogYy5jdXJD
U1MoYSwgImRpc3BsYXkiKSA9M0Q9M0Q9M0QgIm5vbmUiDQogICAgICAgIH07
DQogICAgICAgIGMuZXhwci5maWx0ZXJzLnZpc2libGUgPTNEIGZ1bmN0aW9u
IChhKSB7DQogICAgICAgICAgICByZXR1cm4gIWMuZXhwci5maWx0ZXJzLmhp
ZGRlbihhKQ0KICAgICAgICB9DQogICAgfQ0KICAgIHZhciBzYiA9M0QgSigp
LA0KICAgICAgICB0YiA9M0QgLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9n
aSwNCiAgICAgICAgdWIgPTNEIC9zZWxlY3R8dGV4dGFyZWEvaSwNCiAgICAg
ICAgdmIgPTNEID0NCi9jb2xvcnxkYXRlfGRhdGV0aW1lfGVtYWlsfGhpZGRl
bnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHw9DQp0
ZXh0fHRpbWV8dXJsfHdlZWsvaSwNCiAgICAgICAgTiA9M0QgLz0zRFw/KCZ8
JCkvLA0KICAgICAgICBrYSA9M0QgL1w/LywNCiAgICAgICAgd2IgPTNEIC8o
XD98JilfPTNELio/KCZ8JCkvLA0KICAgICAgICB4YiA9M0QgL14oXHcrOik/
XC9cLyhbXlwvPyNdKykvLA0KICAgICAgICB5YiA9M0QgLyUyMC9nLA0KICAg
ICAgICB6YiA9M0QgYy5mbi5sb2FkOw0KICAgIGMuZm4uZXh0ZW5kKHsNCiAg
ICAgICAgbG9hZDogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAgICAgICAgICAg
IGlmICh0eXBlb2YgYSAhPTNEPTNEICJzdHJpbmciKSByZXR1cm4gemIuY2Fs
bCh0aGlzLCBhKTsNCiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLmxlbmd0
aCkgcmV0dXJuIHRoaXM7DQogICAgICAgICAgICB2YXIgZiA9M0QgYS5pbmRl
eE9mKCIgIik7DQogICAgICAgICAgICBpZiAoZiA+PTNEIDApIHsNCiAgICAg
ICAgICAgICAgICB2YXIgZSA9M0QgYS5zbGljZShmLCBhLmxlbmd0aCk7DQog
ICAgICAgICAgICAgICAgYSA9M0QgYS5zbGljZSgwLCBmKQ0KICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgZiA9M0QgIkdFVCI7DQogICAgICAgICAgICBp
ZiAoYikgaWYgKGMuaXNGdW5jdGlvbihiKSkgew0KICAgICAgICAgICAgICAg
IGQgPTNEIGI7DQogICAgICAgICAgICAgICAgYiA9M0QgbnVsbA0KICAgICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYiA9M0Q9M0Q9M0QgIm9iamVjdCIp
IHsNCiAgICAgICAgICAgICAgICBiID0zRCBjLnBhcmFtKGIsIGMuYWpheFNl
dHRpbmdzLnRyYWRpdGlvbmFsKTsNCiAgICAgICAgICAgICAgICBmID0zRCAi
UE9TVCINCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciBqID0zRCB0
aGlzOw0KICAgICAgICAgICAgYy5hamF4KHsNCiAgICAgICAgICAgICAgICB1
cmw6IGEsDQogICAgICAgICAgICAgICAgdHlwZTogZiwNCiAgICAgICAgICAg
ICAgICBkYXRhVHlwZTogImh0bWwiLA0KICAgICAgICAgICAgICAgIGRhdGE6
IGIsDQogICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIChpLCBv
KSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChvID0zRD0zRD0zRCAic3Vj
Y2VzcyIgfHwgbyA9M0Q9M0Q9M0QgPQ0KIm5vdG1vZGlmaWVkIikgai5odG1s
KGUgPyBjKCI8ZGl2IC8+IikuYXBwZW5kKGkucmVzcG9uc2VUZXh0LnJlcGxh
Y2UodGIsID0NCiIiKSkuZmluZChlKSA6IGkucmVzcG9uc2VUZXh0KTsNCiAg
ICAgICAgICAgICAgICAgICAgZCAmJiBqLmVhY2goZCwgW2kucmVzcG9uc2VU
ZXh0LCBvLCBpXSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
KTsNCiAgICAgICAgICAgIHJldHVybiB0aGlzDQogICAgICAgIH0sDQogICAg
ICAgIHNlcmlhbGl6ZTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcmV0
dXJuIGMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKQ0KICAgICAgICB9
LA0KICAgICAgICBzZXJpYWxpemVBcnJheTogZnVuY3Rpb24gKCkgew0KICAg
ICAgICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uICgpIHsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cyA/IGMubWFrZUFycmF5
KHRoaXMuZWxlbWVudHMpIDogdGhpcw0KICAgICAgICAgICAgfSkuZmlsdGVy
KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5u
YW1lICYmICF0aGlzLmRpc2FibGVkICYmICh0aGlzLmNoZWNrZWQgfHwgPQ0K
dWIudGVzdCh0aGlzLm5vZGVOYW1lKSB8fCB2Yi50ZXN0KHRoaXMudHlwZSkp
DQogICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAg
ICAgICAgICAgICBhID0zRCBjKHRoaXMpLnZhbCgpOw0KICAgICAgICAgICAg
ICAgIHJldHVybiBhID0zRD0zRCBudWxsID8gbnVsbCA6IGMuaXNBcnJheShh
KSA/IGMubWFwKGEsID0NCmZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgICAg
ICAgICAgIHJldHVybiB7DQogICAgICAgICAgICAgICAgICAgICAgICBuYW1l
OiBiLm5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZA0K
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSkgOiB7
DQogICAgICAgICAgICAgICAgICAgIG5hbWU6IGIubmFtZSwNCiAgICAgICAg
ICAgICAgICAgICAgdmFsdWU6IGENCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICB9KS5nZXQoKQ0KICAgICAgICB9DQogICAgfSk7DQogICAgYy5l
YWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRlIGFqYXhFcnJv
ciBhamF4U3VjY2VzcyA9DQphamF4U2VuZCIuc3BsaXQoIiAiKSwgZnVuY3Rp
b24gKGEsIGIpIHsNCiAgICAgICAgYy5mbltiXSA9M0QgZnVuY3Rpb24gKGQp
IHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLmJpbmQoYiwgZCkNCiAgICAg
ICAgfQ0KICAgIH0pOw0KICAgIGMuZXh0ZW5kKHsNCiAgICAgICAgZ2V0OiBm
dW5jdGlvbiAoYSwgYiwgZCwgZikgew0KICAgICAgICAgICAgaWYgKGMuaXNG
dW5jdGlvbihiKSkgew0KICAgICAgICAgICAgICAgIGYgPTNEIGYgfHwgZDsN
CiAgICAgICAgICAgICAgICBkID0zRCBiOw0KICAgICAgICAgICAgICAgIGIg
PTNEIG51bGwNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBj
LmFqYXgoew0KICAgICAgICAgICAgICAgIHR5cGU6ICJHRVQiLA0KICAgICAg
ICAgICAgICAgIHVybDogYSwNCiAgICAgICAgICAgICAgICBkYXRhOiBiLA0K
ICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGQsDQogICAgICAgICAgICAgICAg
ZGF0YVR5cGU6IGYNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0sDQogICAg
ICAgIGdldFNjcmlwdDogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAg
IHJldHVybiBjLmdldChhLCBudWxsLCBiLCAic2NyaXB0IikNCiAgICAgICAg
fSwNCiAgICAgICAgZ2V0SlNPTjogZnVuY3Rpb24gKGEsIGIsIGQpIHsNCiAg
ICAgICAgICAgIHJldHVybiBjLmdldChhLCBiLCBkLCAianNvbiIpDQogICAg
ICAgIH0sDQogICAgICAgIHBvc3Q6IGZ1bmN0aW9uIChhLCBiLCBkLCBmKSB7
DQogICAgICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGIpKSB7DQogICAgICAg
ICAgICAgICAgZiA9M0QgZiB8fCBkOw0KICAgICAgICAgICAgICAgIGQgPTNE
IGI7DQogICAgICAgICAgICAgICAgYiA9M0Qge30NCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIHJldHVybiBjLmFqYXgoew0KICAgICAgICAgICAgICAg
IHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICAgICAgICB1cmw6IGEsDQogICAg
ICAgICAgICAgICAgZGF0YTogYiwNCiAgICAgICAgICAgICAgICBzdWNjZXNz
OiBkLA0KICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBmDQogICAgICAgICAg
ICB9KQ0KICAgICAgICB9LA0KICAgICAgICBhamF4U2V0dXA6IGZ1bmN0aW9u
IChhKSB7DQogICAgICAgICAgICBjLmV4dGVuZChjLmFqYXhTZXR0aW5ncywg
YSkNCiAgICAgICAgfSwNCiAgICAgICAgYWpheFNldHRpbmdzOiB7DQogICAg
ICAgICAgICB1cmw6IGxvY2F0aW9uLmhyZWYsDQogICAgICAgICAgICBnbG9i
YWw6IHRydWUsDQogICAgICAgICAgICB0eXBlOiAiR0VUIiwNCiAgICAgICAg
ICAgIGNvbnRlbnRUeXBlOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxl
bmNvZGVkIiwNCiAgICAgICAgICAgIHByb2Nlc3NEYXRhOiB0cnVlLA0KICAg
ICAgICAgICAgYXN5bmM6IHRydWUsDQogICAgICAgICAgICB4aHI6IEEuWE1M
SHR0cFJlcXVlc3QgJiYgKEEubG9jYXRpb24ucHJvdG9jb2wgIT0zRD0zRCA9
DQoiZmlsZToiIHx8ICFBLkFjdGl2ZVhPYmplY3QpID8NCiAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEEu
WE1MSHR0cFJlcXVlc3QNCiAgICAgICAgICAgIH0gOiBmdW5jdGlvbiAoKSB7
DQogICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBBLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQ
IikNCiAgICAgICAgICAgICAgICB9IGNhdGNoIChhKSB7fQ0KICAgICAgICAg
ICAgfSwNCiAgICAgICAgICAgIGFjY2VwdHM6IHsNCiAgICAgICAgICAgICAg
ICB4bWw6ICJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIiwNCiAgICAgICAg
ICAgICAgICBodG1sOiAidGV4dC9odG1sIiwNCiAgICAgICAgICAgICAgICBz
Y3JpcHQ6ICJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiLA0KICAgICAgICAgICAgICAgIGpzb246ICJhcHBsaWNhdGlvbi9qc29u
LCB0ZXh0L2phdmFzY3JpcHQiLA0KICAgICAgICAgICAgICAgIHRleHQ6ICJ0
ZXh0L3BsYWluIiwNCiAgICAgICAgICAgICAgICBfZGVmYXVsdDogIiovKiIN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgbGFzdE1vZGlm
aWVkOiB7fSwNCiAgICAgICAgZXRhZzoge30sDQogICAgICAgIGFqYXg6IGZ1
bmN0aW9uIChhKSB7DQogICAgICAgICAgICBmdW5jdGlvbiBiKCkgew0KICAg
ICAgICAgICAgICAgIGUuc3VjY2VzcyAmJiBlLnN1Y2Nlc3MuY2FsbChrLCBv
LCBpLCB4KTsNCiAgICAgICAgICAgICAgICBlLmdsb2JhbCAmJiBmKCJhamF4
U3VjY2VzcyIsIFt4LCBlXSkNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IGZ1bmN0aW9uIGQoKSB7DQogICAgICAgICAgICAgICAgZS5jb21wbGV0ZSAm
JiBlLmNvbXBsZXRlLmNhbGwoaywgeCwgaSk7DQogICAgICAgICAgICAgICAg
ZS5nbG9iYWwgJiYgZigiYWpheENvbXBsZXRlIiwgW3gsIGVdKTsNCiAgICAg
ICAgICAgICAgICBlLmdsb2JhbCAmJiAhLS1jLmFjdGl2ZSAmJiBjLmV2ZW50
LnRyaWdnZXIoImFqYXhTdG9wIikNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGZ1bmN0aW9uIGYocSwgcCkgew0KICAgICAgICAgICAgICAgIChlLmNv
bnRleHQgPyBjKGUuY29udGV4dCkgOiBjLmV2ZW50KS50cmlnZ2VyKHEsIHAp
DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgZSA9M0QgYy5leHRl
bmQodHJ1ZSwge30sIGMuYWpheFNldHRpbmdzLCBhKSwNCiAgICAgICAgICAg
ICAgICBqLCBpLCBvLCBrID0zRCBhICYmIGEuY29udGV4dCB8fCBlLA0KICAg
ICAgICAgICAgICAgIG4gPTNEIGUudHlwZS50b1VwcGVyQ2FzZSgpOw0KICAg
ICAgICAgICAgaWYgKGUuZGF0YSAmJiBlLnByb2Nlc3NEYXRhICYmIHR5cGVv
ZiBlLmRhdGEgIT0zRD0zRCA9DQoic3RyaW5nIikgZS5kYXRhID0zRCBjLnBh
cmFtKGUuZGF0YSwgZS50cmFkaXRpb25hbCk7DQogICAgICAgICAgICBpZiAo
ZS5kYXRhVHlwZSA9M0Q9M0Q9M0QgImpzb25wIikgew0KICAgICAgICAgICAg
ICAgIGlmIChuID0zRD0zRD0zRCAiR0VUIikgTi50ZXN0KGUudXJsKSB8fCAo
ZS51cmwgKz0zRCA9DQooa2EudGVzdChlLnVybCkgPyAiJiIgOiAiPyIpICsg
KGUuanNvbnAgfHwgImNhbGxiYWNrIikgKyAiPTNEPyIpOw0KICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKCFlLmRhdGEgfHwgIU4udGVzdChlLmRhdGEpKSBl
LmRhdGEgPTNEIChlLmRhdGEgPQ0KPyBlLmRhdGEgKyAiJiIgOiAiIikgKyAo
ZS5qc29ucCB8fCAiY2FsbGJhY2siKSArICI9M0Q/IjsNCiAgICAgICAgICAg
ICAgICBlLmRhdGFUeXBlID0zRCAianNvbiINCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGlmIChlLmRhdGFUeXBlID0zRD0zRD0zRCAianNvbiIgJiYg
KGUuZGF0YSAmJiBOLnRlc3QoZS5kYXRhKSA9DQp8fCBOLnRlc3QoZS51cmwp
KSkgew0KICAgICAgICAgICAgICAgIGogPTNEIGUuanNvbnBDYWxsYmFjayB8
fCAianNvbnAiICsgc2IrKzsNCiAgICAgICAgICAgICAgICBpZiAoZS5kYXRh
KSBlLmRhdGEgPTNEIChlLmRhdGEgKyAiIikucmVwbGFjZShOLCAiPTNEIiAr
ID0NCmogKyAiJDEiKTsNCiAgICAgICAgICAgICAgICBlLnVybCA9M0QgZS51
cmwucmVwbGFjZShOLCAiPTNEIiArIGogKyAiJDEiKTsNCiAgICAgICAgICAg
ICAgICBlLmRhdGFUeXBlID0zRCAic2NyaXB0IjsNCiAgICAgICAgICAgICAg
ICBBW2pdID0zRCBBW2pdIHx8DQogICAgICAgICAgICAgICAgZnVuY3Rpb24g
KHEpIHsNCiAgICAgICAgICAgICAgICAgICAgbyA9M0QgcTsNCiAgICAgICAg
ICAgICAgICAgICAgYigpOw0KICAgICAgICAgICAgICAgICAgICBkKCk7DQog
ICAgICAgICAgICAgICAgICAgIEFbal0gPTNEIHc7DQogICAgICAgICAgICAg
ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUg
QVtqXQ0KICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChwKSB7fQ0KICAg
ICAgICAgICAgICAgICAgICB6ICYmIHoucmVtb3ZlQ2hpbGQoQykNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAo
ZS5kYXRhVHlwZSA9M0Q9M0Q9M0QgInNjcmlwdCIgJiYgZS5jYWNoZSA9M0Q9
M0Q9M0QgbnVsbCkgPQ0KZS5jYWNoZSA9M0QgZmFsc2U7DQogICAgICAgICAg
ICBpZiAoZS5jYWNoZSA9M0Q9M0Q9M0QgZmFsc2UgJiYgbiA9M0Q9M0Q9M0Qg
IkdFVCIpIHsNCiAgICAgICAgICAgICAgICB2YXIgciA9M0QgSigpLA0KICAg
ICAgICAgICAgICAgICAgICB1ID0zRCBlLnVybC5yZXBsYWNlKHdiLCAiJDFf
PTNEIiArIHIgKyAiJDIiKTsNCiAgICAgICAgICAgICAgICBlLnVybCA9M0Qg
dSArICh1ID0zRD0zRD0zRCBlLnVybCA/IChrYS50ZXN0KGUudXJsKSA/ICIm
IiA9DQo6ICI/IikgKyAiXz0zRCIgKyByIDogIiIpDQogICAgICAgICAgICB9
DQogICAgICAgICAgICBpZiAoZS5kYXRhICYmIG4gPTNEPTNEPTNEICJHRVQi
KSBlLnVybCArPTNEIChrYS50ZXN0KGUudXJsKSA9DQo/ICImIiA6ICI/Iikg
KyBlLmRhdGE7DQogICAgICAgICAgICBlLmdsb2JhbCAmJiAhYy5hY3RpdmUr
KyAmJiBjLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpOw0KICAgICAgICAg
ICAgciA9M0QgKHIgPTNEIHhiLmV4ZWMoZS51cmwpKSAmJiAoclsxXSAmJiBy
WzFdICE9M0Q9M0QgPQ0KbG9jYXRpb24ucHJvdG9jb2wgfHwgclsyXSAhPTNE
PTNEIGxvY2F0aW9uLmhvc3QpOw0KICAgICAgICAgICAgaWYgKGUuZGF0YVR5
cGUgPTNEPTNEPTNEICJzY3JpcHQiICYmIG4gPTNEPTNEPTNEICJHRVQiICYm
IHIpID0NCnsNCiAgICAgICAgICAgICAgICB2YXIgeiA9M0Qgcy5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdIHx8ID0NCnMuZG9jdW1lbnRFbGVt
ZW50LA0KICAgICAgICAgICAgICAgICAgICBDID0zRCBzLmNyZWF0ZUVsZW1l
bnQoInNjcmlwdCIpOw0KICAgICAgICAgICAgICAgIEMuc3JjID0zRCBlLnVy
bDsNCiAgICAgICAgICAgICAgICBpZiAoZS5zY3JpcHRDaGFyc2V0KSBDLmNo
YXJzZXQgPTNEIGUuc2NyaXB0Q2hhcnNldDsNCiAgICAgICAgICAgICAgICBp
ZiAoIWopIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIEIgPTNEDQogICAg
ICAgICAgICAgICAgICAgIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICBD
Lm9ubG9hZCA9M0QgQy5vbnJlYWR5c3RhdGVjaGFuZ2UgPTNEIGZ1bmN0aW9u
ICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQiAmJiAoIXRo
aXMucmVhZHlTdGF0ZSB8fCB0aGlzLnJlYWR5U3RhdGUgPQ0KPTNEPTNEPTNE
ICJsb2FkZWQiIHx8IHRoaXMucmVhZHlTdGF0ZSA9M0Q9M0Q9M0QgImNvbXBs
ZXRlIikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCID0zRCB0
cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIoKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkKCk7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQy5vbmxvYWQgPTNEIEMub25yZWFkeXN0YXRlY2hhbmdl
ID0zRCBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogJiYg
Qy5wYXJlbnROb2RlICYmIHoucmVtb3ZlQ2hpbGQoQykNCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB6Lmluc2VydEJlZm9yZShD
LCB6LmZpcnN0Q2hpbGQpOw0KICAgICAgICAgICAgICAgIHJldHVybiB3DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgRSA9M0QgZmFsc2UsDQog
ICAgICAgICAgICAgICAgeCA9M0QgZS54aHIoKTsNCiAgICAgICAgICAgIGlm
ICh4KSB7DQogICAgICAgICAgICAgICAgZS51c2VybmFtZSA/IHgub3Blbihu
LCBlLnVybCwgZS5hc3luYywgZS51c2VybmFtZSwgPQ0KZS5wYXNzd29yZCkg
OiB4Lm9wZW4obiwgZS51cmwsIGUuYXN5bmMpOw0KICAgICAgICAgICAgICAg
IHRyeSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgfHwgYSAm
JiBhLmNvbnRlbnRUeXBlKSA9DQp4LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRl
bnQtVHlwZSIsIGUuY29udGVudFR5cGUpOw0KICAgICAgICAgICAgICAgICAg
ICBpZiAoZS5pZk1vZGlmaWVkKSB7DQogICAgICAgICAgICAgICAgICAgICAg
ICBjLmxhc3RNb2RpZmllZFtlLnVybF0gJiYgPQ0KeC5zZXRSZXF1ZXN0SGVh
ZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsIGMubGFzdE1vZGlmaWVkW2UudXJs
XSk7DQogICAgICAgICAgICAgICAgICAgICAgICBjLmV0YWdbZS51cmxdICYm
ID0NCnguc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsIGMuZXRh
Z1tlLnVybF0pDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICAgICAgciB8fCB4LnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVk
LVdpdGgiLCA9DQoiWE1MSHR0cFJlcXVlc3QiKTsNCiAgICAgICAgICAgICAg
ICAgICAgeC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCBlLmRhdGFUeXBl
ICYmID0NCmUuYWNjZXB0c1tlLmRhdGFUeXBlXSA/IGUuYWNjZXB0c1tlLmRh
dGFUeXBlXSArICIsICovKiIgOiA9DQplLmFjY2VwdHMuX2RlZmF1bHQpDQog
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZ2EpIHt9DQogICAgICAgICAgICAg
ICAgaWYgKGUuYmVmb3JlU2VuZCAmJiBlLmJlZm9yZVNlbmQuY2FsbChrLCB4
LCBlKSA9M0Q9M0Q9M0QgPQ0KZmFsc2UpIHsNCiAgICAgICAgICAgICAgICAg
ICAgZS5nbG9iYWwgJiYgIS0tYy5hY3RpdmUgJiYgPQ0KYy5ldmVudC50cmln
Z2VyKCJhamF4U3RvcCIpOw0KICAgICAgICAgICAgICAgICAgICB4LmFib3J0
KCk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZQ0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlLmdsb2JhbCAmJiBmKCJh
amF4U2VuZCIsIFt4LCBlXSk7DQogICAgICAgICAgICAgICAgdmFyIGcgPTNE
IHgub25yZWFkeXN0YXRlY2hhbmdlID0zRCBmdW5jdGlvbiAocSkgew0KICAg
ICAgICAgICAgICAgICAgICBpZiAoIXggfHwgeC5yZWFkeVN0YXRlID0zRD0z
RD0zRCAwIHx8IHEgPTNEPTNEPTNEID0NCiJhYm9ydCIpIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIEUgfHwgZCgpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgRSA9M0QgdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh4KSB4Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9M0QgYy5ub29wDQogICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUUgJiYgeCAmJiAoeC5yZWFkeVN0
YXRlID0zRD0zRD0zRCA0IHx8IHEgPQ0KPTNEPTNEPTNEICJ0aW1lb3V0Iikp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIEUgPTNEIHRydWU7DQogICAg
ICAgICAgICAgICAgICAgICAgICB4Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9M0Qg
Yy5ub29wOw0KICAgICAgICAgICAgICAgICAgICAgICAgaSA9M0QgcSA9M0Q9
M0Q9M0QgInRpbWVvdXQiID8gInRpbWVvdXQiIDogPQ0KIWMuaHR0cFN1Y2Nl
c3MoeCkgPyAiZXJyb3IiIDogZS5pZk1vZGlmaWVkICYmIGMuaHR0cE5vdE1v
ZGlmaWVkKHgsID0NCmUudXJsKSA/ICJub3Rtb2RpZmllZCIgOiAic3VjY2Vz
cyI7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcDsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpID0zRD0zRD0zRCAic3VjY2VzcyIpIHRy
eSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9M0QgYy5odHRw
RGF0YSh4LCBlLmRhdGFUeXBlLCBlKQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgfSBjYXRjaCAodikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGkgPTNEICJwYXJzZXJlcnJvciI7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcCA9M0Qgdg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPTNEPTNEPTNEICJzdWNjZXNz
IiB8fCBpID0zRD0zRD0zRCA9DQoibm90bW9kaWZpZWQiKSBqIHx8IGIoKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgYy5oYW5kbGVFcnJvcihl
LCB4LCBpLCBwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGQoKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIHEgPTNEPTNEPTNEICJ0aW1lb3V0IiAm
JiB4LmFib3J0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5h
c3luYykgeCA9M0QgbnVsbA0KICAgICAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAg
ICAgICAgICAgICAgICB2YXIgaCA9M0QgeC5hYm9ydDsNCiAgICAgICAgICAg
ICAgICAgICAgeC5hYm9ydCA9M0QgZnVuY3Rpb24gKCkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgeCAmJiBoLmNhbGwoeCk7DQogICAgICAgICAgICAg
ICAgICAgICAgICBnKCJhYm9ydCIpDQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICB9IGNhdGNoIChsKSB7fQ0KICAgICAgICAgICAg
ICAgIGUuYXN5bmMgJiYgZS50aW1lb3V0ID4gMCAmJiBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgeCAmJiAhRSAmJiBn
KCJ0aW1lb3V0IikNCiAgICAgICAgICAgICAgICB9LCBlLnRpbWVvdXQpOw0K
ICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgIHgu
c2VuZChuID0zRD0zRD0zRCAiUE9TVCIgfHwgbiA9M0Q9M0Q9M0QgIlBVVCIg
fHwgbiA9DQo9M0Q9M0Q9M0QgIkRFTEVURSIgPyBlLmRhdGEgOiBudWxsKQ0K
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKG0pIHsNCiAgICAgICAgICAgICAg
ICAgICAgYy5oYW5kbGVFcnJvcihlLCB4LCBudWxsLCBtKTsNCiAgICAgICAg
ICAgICAgICAgICAgZCgpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIGUuYXN5bmMgfHwgZygpOw0KICAgICAgICAgICAgICAgIHJldHVy
biB4DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGhhbmRs
ZUVycm9yOiBmdW5jdGlvbiAoYSwgYiwgZCwgZikgew0KICAgICAgICAgICAg
aWYgKGEuZXJyb3IpIGEuZXJyb3IuY2FsbChhLmNvbnRleHQgfHwgYSwgYiwg
ZCwgZik7DQogICAgICAgICAgICBpZiAoYS5nbG9iYWwpKGEuY29udGV4dCA/
IGMoYS5jb250ZXh0KSA6ID0NCmMuZXZlbnQpLnRyaWdnZXIoImFqYXhFcnJv
ciIsIFtiLCBhLCBmXSkNCiAgICAgICAgfSwNCg0KICAgICAgICBhY3RpdmU6
IDAsDQogICAgICAgIGh0dHBTdWNjZXNzOiBmdW5jdGlvbiAoYSkgew0KICAg
ICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICByZXR1cm4gIWEuc3Rh
dHVzICYmIGxvY2F0aW9uLnByb3RvY29sID0zRD0zRD0zRCAiZmlsZToiID0N
Cnx8IGEuc3RhdHVzID49M0QgMjAwICYmIGEuc3RhdHVzIDwgMzAwIHx8IGEu
c3RhdHVzID0zRD0zRD0zRCAzMDQgfHwgPQ0KYS5zdGF0dXMgPTNEPTNEPTNE
IDEyMjMgfHwgYS5zdGF0dXMgPTNEPTNEPTNEIDANCiAgICAgICAgICAgIH0g
Y2F0Y2ggKGIpIHt9DQogICAgICAgICAgICByZXR1cm4gZmFsc2UNCiAgICAg
ICAgfSwNCiAgICAgICAgaHR0cE5vdE1vZGlmaWVkOiBmdW5jdGlvbiAoYSwg
Yikgew0KICAgICAgICAgICAgdmFyIGQgPTNEIGEuZ2V0UmVzcG9uc2VIZWFk
ZXIoIkxhc3QtTW9kaWZpZWQiKSwNCiAgICAgICAgICAgICAgICBmID0zRCBh
LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIik7DQogICAgICAgICAgICBpZiAo
ZCkgYy5sYXN0TW9kaWZpZWRbYl0gPTNEIGQ7DQogICAgICAgICAgICBpZiAo
ZikgYy5ldGFnW2JdID0zRCBmOw0KICAgICAgICAgICAgcmV0dXJuIGEuc3Rh
dHVzID0zRD0zRD0zRCAzMDQgfHwgYS5zdGF0dXMgPTNEPTNEPTNEIDANCiAg
ICAgICAgfSwNCiAgICAgICAgaHR0cERhdGE6IGZ1bmN0aW9uIChhLCBiLCBk
KSB7DQogICAgICAgICAgICB2YXIgZiA9M0QgYS5nZXRSZXNwb25zZUhlYWRl
cigiY29udGVudC10eXBlIikgfHwgIiIsDQogICAgICAgICAgICAgICAgZSA9
M0QgYiA9M0Q9M0Q9M0QgInhtbCIgfHwgIWIgJiYgZi5pbmRleE9mKCJ4bWwi
KSA+PTNEID0NCjA7DQogICAgICAgICAgICBhID0zRCBlID8gYS5yZXNwb25z
ZVhNTCA6IGEucmVzcG9uc2VUZXh0Ow0KICAgICAgICAgICAgZSAmJiBhLmRv
Y3VtZW50RWxlbWVudC5ub2RlTmFtZSA9M0Q9M0Q9M0QgInBhcnNlcmVycm9y
IiAmJiA9DQpjLmVycm9yKCJwYXJzZXJlcnJvciIpOw0KICAgICAgICAgICAg
aWYgKGQgJiYgZC5kYXRhRmlsdGVyKSBhID0zRCBkLmRhdGFGaWx0ZXIoYSwg
Yik7DQogICAgICAgICAgICBpZiAodHlwZW9mIGEgPTNEPTNEPTNEICJzdHJp
bmciKSBpZiAoYiA9M0Q9M0Q9M0QgImpzb24iIHx8ID0NCiFiICYmIGYuaW5k
ZXhPZigianNvbiIpID49M0QgMCkgYSA9M0QgYy5wYXJzZUpTT04oYSk7DQog
ICAgICAgICAgICBlbHNlIGlmIChiID0zRD0zRD0zRCAic2NyaXB0IiB8fCAh
YiAmJiA9DQpmLmluZGV4T2YoImphdmFzY3JpcHQiKSA+PTNEIDApIGMuZ2xv
YmFsRXZhbChhKTsNCiAgICAgICAgICAgIHJldHVybiBhDQogICAgICAgIH0s
DQogICAgICAgIHBhcmFtOiBmdW5jdGlvbiAoYSwgYikgew0KICAgICAgICAg
ICAgZnVuY3Rpb24gZChpLCBvKSB7DQogICAgICAgICAgICAgICAgaWYgKGMu
aXNBcnJheShvKSkgYy5lYWNoKG8sIGZ1bmN0aW9uIChrLCBuKSB7DQogICAg
ICAgICAgICAgICAgICAgIGIgfHwgL1xbXF0kLy50ZXN0KGkpID8gZihpLCBu
KSA6IGQoaSArICJbIiArICh0eXBlb2YgPQ0KbiA9M0Q9M0Q9M0QgIm9iamVj
dCIgfHwgYy5pc0FycmF5KG4pID8gayA6ICIiKSArICJdIiwgbikNCiAgICAg
ICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBlbHNlIWIgJiYgbyAh
PTNEIG51bGwgJiYgdHlwZW9mIG8gPTNEPTNEPTNEICJvYmplY3QiID8gPQ0K
Yy5lYWNoKG8sIGZ1bmN0aW9uIChrLCBuKSB7DQogICAgICAgICAgICAgICAg
ICAgIGQoaSArICJbIiArIGsgKyAiXSIsIG4pDQogICAgICAgICAgICAgICAg
fSkgOiBmKGksIG8pDQogICAgICAgICAgICB9DQogICAgICAgICAgICBmdW5j
dGlvbiBmKGksIG8pIHsNCiAgICAgICAgICAgICAgICBvID0zRCBjLmlzRnVu
Y3Rpb24obykgPyBvKCkgOiBvOw0KICAgICAgICAgICAgICAgIGVbZS5sZW5n
dGhdID0zRCBlbmNvZGVVUklDb21wb25lbnQoaSkgKyAiPTNEIiArID0NCmVu
Y29kZVVSSUNvbXBvbmVudChvKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgdmFyIGUgPTNEIFtdOw0KICAgICAgICAgICAgaWYgKGIgPTNEPTNEPTNE
IHcpIGIgPTNEIGMuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsOw0KICAgICAg
ICAgICAgaWYgKGMuaXNBcnJheShhKSB8fCBhLmpxdWVyeSkgYy5lYWNoKGEs
IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBmKHRoaXMubmFtZSwg
dGhpcy52YWx1ZSkNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgZWxz
ZSBmb3IgKHZhciBqIGluIGEpIGQoaiwgYVtqXSk7DQogICAgICAgICAgICBy
ZXR1cm4gZS5qb2luKCImIikucmVwbGFjZSh5YiwgIisiKQ0KICAgICAgICB9
DQogICAgfSk7DQogICAgdmFyIGxhID0zRCB7fSwNCiAgICAgICAgQWIgPTNE
IC90b2dnbGV8c2hvd3xoaWRlLywNCiAgICAgICAgQmIgPTNEIC9eKFsrLV09
M0QpPyhbXGQrLS5dKykoLiopJC8sDQogICAgICAgIFcsIHZhID0zRCBbDQog
ICAgICAgIFsiaGVpZ2h0IiwgIm1hcmdpblRvcCIsICJtYXJnaW5Cb3R0b20i
LCAicGFkZGluZ1RvcCIsID0NCiJwYWRkaW5nQm90dG9tIl0sDQogICAgICAg
IFsid2lkdGgiLCAibWFyZ2luTGVmdCIsICJtYXJnaW5SaWdodCIsICJwYWRk
aW5nTGVmdCIsID0NCiJwYWRkaW5nUmlnaHQiXSwNCiAgICAgICAgWyJvcGFj
aXR5Il0NCiAgICBdOw0KICAgIGMuZm4uZXh0ZW5kKHsNCiAgICAgICAgc2hv
dzogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIGlmIChhIHx8IGEg
PTNEPTNEPTNEIDApIHJldHVybiB0aGlzLmFuaW1hdGUoSygic2hvdyIsIDMp
LCBhLCA9DQpiKTsNCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAg
ICAgIGEgPTNEIDA7DQogICAgICAgICAgICAgICAgZm9yIChiID0zRCB0aGlz
Lmxlbmd0aDsgYSA8IGI7IGErKykgew0KICAgICAgICAgICAgICAgICAgICB2
YXIgZCA9M0QgYy5kYXRhKHRoaXNbYV0sICJvbGRkaXNwbGF5Iik7DQogICAg
ICAgICAgICAgICAgICAgIHRoaXNbYV0uc3R5bGUuZGlzcGxheSA9M0QgZCB8
fCAiIjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGMuY3NzKHRoaXNbYV0s
ICJkaXNwbGF5IikgPTNEPTNEPTNEICJub25lIikgew0KICAgICAgICAgICAg
ICAgICAgICAgICAgZCA9M0QgdGhpc1thXS5ub2RlTmFtZTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBmOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGxhW2RdKSBmID0zRCBsYVtkXTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBlID0zRCBjKCI8IiArIGQgKyAiID0NCi8+IikuYXBwZW5kVG8oImJvZHki
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0zRCBlLmNzcygi
ZGlzcGxheSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChm
ID0zRD0zRD0zRCAibm9uZSIpIGYgPTNEICJibG9jayI7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYVtkXSA9M0QgZg0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYy5kYXRhKHRoaXNb
YV0sICJvbGRkaXNwbGF5IiwgZikNCiAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBhID0zRCAwOw0K
ICAgICAgICAgICAgICAgIGZvciAoYiA9M0QgdGhpcy5sZW5ndGg7IGEgPCBi
OyBhKyspID0NCnRoaXNbYV0uc3R5bGUuZGlzcGxheSA9M0QgYy5kYXRhKHRo
aXNbYV0sICJvbGRkaXNwbGF5IikgfHwgIiI7DQogICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAg
ICAgaGlkZTogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgIGlmIChh
IHx8IGEgPTNEPTNEPTNEIDApIHJldHVybiB0aGlzLmFuaW1hdGUoSygiaGlk
ZSIsIDMpLCBhLCA9DQpiKTsNCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAg
ICAgICAgICAgIGEgPTNEIDA7DQogICAgICAgICAgICAgICAgZm9yIChiID0z
RCB0aGlzLmxlbmd0aDsgYSA8IGI7IGErKykgew0KICAgICAgICAgICAgICAg
ICAgICB2YXIgZCA9M0QgYy5kYXRhKHRoaXNbYV0sICJvbGRkaXNwbGF5Iik7
DQogICAgICAgICAgICAgICAgICAgICFkICYmIGQgIT0zRD0zRCAibm9uZSIg
JiYgYy5kYXRhKHRoaXNbYV0sID0NCiJvbGRkaXNwbGF5IiwgYy5jc3ModGhp
c1thXSwgImRpc3BsYXkiKSkNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgYSA9M0QgMDsNCiAgICAgICAgICAgICAgICBmb3IgKGIgPTNE
IHRoaXMubGVuZ3RoOyBhIDwgYjsgYSsrKSA9DQp0aGlzW2FdLnN0eWxlLmRp
c3BsYXkgPTNEICJub25lIjsNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBfdG9nZ2xl
OiBjLmZuLnRvZ2dsZSwNCiAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbiAoYSwg
Yikgew0KICAgICAgICAgICAgdmFyIGQgPTNEIHR5cGVvZiBhID0zRD0zRD0z
RCAiYm9vbGVhbiI7DQogICAgICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGEp
ICYmIGMuaXNGdW5jdGlvbihiKSkgPQ0KdGhpcy5fdG9nZ2xlLmFwcGx5KHRo
aXMsIGFyZ3VtZW50cyk7DQogICAgICAgICAgICBlbHNlIGEgPTNEPTNEIG51
bGwgfHwgZCA/IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICAgICAgdmFyIGYgPTNEIGQgPyBhIDogYyh0aGlzKS5pcygiOmhpZGRlbiIp
Ow0KICAgICAgICAgICAgICAgIGModGhpcylbZiA/ICJzaG93IiA6ICJoaWRl
Il0oKQ0KICAgICAgICAgICAgfSkgOiB0aGlzLmFuaW1hdGUoSygidG9nZ2xl
IiwgMyksIGEsIGIpOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXMNCiAgICAg
ICAgfSwNCiAgICAgICAgZmFkZVRvOiBmdW5jdGlvbiAoYSwgYiwgZCkgew0K
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKCI6aGlkZGVuIikuY3Nz
KCJvcGFjaXR5IiwgPQ0KMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoew0KICAg
ICAgICAgICAgICAgIG9wYWNpdHk6IGINCiAgICAgICAgICAgIH0sIGEsIGQp
DQogICAgICAgIH0sDQogICAgICAgIGFuaW1hdGU6IGZ1bmN0aW9uIChhLCBi
LCBkLCBmKSB7DQogICAgICAgICAgICB2YXIgZSA9M0QgYy5zcGVlZChiLCBk
LCBmKTsNCiAgICAgICAgICAgIGlmIChjLmlzRW1wdHlPYmplY3QoYSkpIHJl
dHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSk7DQogICAgICAgICAgICByZXR1
cm4gdGhpc1tlLnF1ZXVlID0zRD0zRD0zRCBmYWxzZSA/ICJlYWNoIiA6ID0N
CiJxdWV1ZSJdKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICB2YXIg
aiA9M0QgYy5leHRlbmQoe30sIGUpLA0KICAgICAgICAgICAgICAgICAgICBp
LCBvID0zRCB0aGlzLm5vZGVUeXBlID0zRD0zRD0zRCAxICYmID0NCmModGhp
cykuaXMoIjpoaWRkZW4iKSwNCiAgICAgICAgICAgICAgICAgICAgayA9M0Qg
dGhpczsNCiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gYSkgew0KICAgICAg
ICAgICAgICAgICAgICB2YXIgbiA9M0QgaS5yZXBsYWNlKGlhLCBqYSk7DQog
ICAgICAgICAgICAgICAgICAgIGlmIChpICE9M0Q9M0Qgbikgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgYVtuXSA9M0QgYVtpXTsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZSBhW2ldOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgaSA9M0Qgbg0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgICAgIGlmIChhW2ldID0zRD0zRD0zRCAiaGlkZSIgJiYgbyB8
fCBhW2ldID0zRD0zRD0zRCA9DQoic2hvdyIgJiYgIW8pIHJldHVybiBqLmNv
bXBsZXRlLmNhbGwodGhpcyk7DQogICAgICAgICAgICAgICAgICAgIGlmICgo
aSA9M0Q9M0Q9M0QgImhlaWdodCIgfHwgaSA9M0Q9M0Q9M0QgIndpZHRoIikg
JiYgPQ0KdGhpcy5zdHlsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAg
ai5kaXNwbGF5ID0zRCBjLmNzcyh0aGlzLCAiZGlzcGxheSIpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgai5vdmVyZmxvdyA9M0QgdGhpcy5zdHlsZS5v
dmVyZmxvdw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgIGlmIChjLmlzQXJyYXkoYVtpXSkpIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIChqLnNwZWNpYWxFYXNpbmcgPTNEDQogICAgICAgICAgICAg
ICAgICAgICAgICBqLnNwZWNpYWxFYXNpbmcgfHwge30pW2ldID0zRCBhW2ld
WzFdOw0KICAgICAgICAgICAgICAgICAgICAgICAgYVtpXSA9M0QgYVtpXVsw
XQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgIGlmIChqLm92ZXJmbG93ICE9M0QgbnVsbCkgdGhp
cy5zdHlsZS5vdmVyZmxvdyA9M0QgPQ0KImhpZGRlbiI7DQogICAgICAgICAg
ICAgICAgai5jdXJBbmltID0zRCBjLmV4dGVuZCh7fSwgYSk7DQogICAgICAg
ICAgICAgICAgYy5lYWNoKGEsIGZ1bmN0aW9uIChyLCB1KSB7DQogICAgICAg
ICAgICAgICAgICAgIHZhciB6ID0zRCBuZXcgYy5meChrLCBqLCByKTsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKEFiLnRlc3QodSkpIHpbdSA9M0Q9M0Q9
M0QgInRvZ2dsZSIgPyBvID8gInNob3ciID0NCjogImhpZGUiIDogdV0oYSk7
DQogICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIEMgPTNEIEJiLmV4ZWModSksDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQiA9M0Qgei5jdXIodHJ1ZSkgfHwgMDsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChDKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdSA9M0QgcGFyc2VGbG9hdChDWzJdKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgRSA9M0QgQ1szXSB8fCAicHgiOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFICE9M0Q9M0QgInB4
Iikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrLnN0eWxl
W3JdID0zRCAodSB8fCAxKSArIEU7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEIgPTNEICh1IHx8IDEpIC8gei5jdXIodHJ1ZSkgKiBCOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrLnN0eWxlW3JdID0z
RCBCICsgRQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ1sxXSkgdSA9M0QgKENbMV0g
PTNEPTNEPTNEICItPTNEIiA/IC0xID0NCjogMSkgKiB1ICsgQjsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB6LmN1c3RvbShCLCB1LCBFKQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHouY3VzdG9tKEIsIHUsICIi
KQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSk7
DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWUNCiAgICAgICAgICAgIH0p
DQogICAgICAgIH0sDQogICAgICAgIHN0b3A6IGZ1bmN0aW9uIChhLCBiKSB7
DQogICAgICAgICAgICB2YXIgZCA9M0QgYy50aW1lcnM7DQogICAgICAgICAg
ICBhICYmIHRoaXMucXVldWUoW10pOw0KICAgICAgICAgICAgdGhpcy5lYWNo
KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBmID0z
RCBkLmxlbmd0aCAtIDE7IGYgPj0zRCAwOyBmLS0pIGlmID0NCihkW2ZdLmVs
ZW0gPTNEPTNEPTNEIHRoaXMpIHsNCiAgICAgICAgICAgICAgICAgICAgYiAm
JiBkW2ZdKHRydWUpOw0KICAgICAgICAgICAgICAgICAgICBkLnNwbGljZShm
LCAxKQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAg
ICAgICAgICAgYiB8fCB0aGlzLmRlcXVldWUoKTsNCiAgICAgICAgICAgIHJl
dHVybiB0aGlzDQogICAgICAgIH0NCiAgICB9KTsNCiAgICBjLmVhY2goew0K
ICAgICAgICBzbGlkZURvd246IEsoInNob3ciLCAxKSwNCiAgICAgICAgc2xp
ZGVVcDogSygiaGlkZSIsIDEpLA0KICAgICAgICBzbGlkZVRvZ2dsZTogSygi
dG9nZ2xlIiwgMSksDQogICAgICAgIGZhZGVJbjogew0KICAgICAgICAgICAg
b3BhY2l0eTogInNob3ciDQogICAgICAgIH0sDQogICAgICAgIGZhZGVPdXQ6
IHsNCiAgICAgICAgICAgIG9wYWNpdHk6ICJoaWRlIg0KICAgICAgICB9DQog
ICAgfSwgZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgYy5mblthXSA9M0Qg
ZnVuY3Rpb24gKGQsIGYpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLmFu
aW1hdGUoYiwgZCwgZikNCiAgICAgICAgfQ0KICAgIH0pOw0KICAgIGMuZXh0
ZW5kKHsNCiAgICAgICAgc3BlZWQ6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQog
ICAgICAgICAgICB2YXIgZiA9M0QgYSAmJiB0eXBlb2YgYSA9M0Q9M0Q9M0Qg
Im9iamVjdCIgPyBhIDogew0KICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBk
IHx8ICFkICYmIGIgfHwgYy5pc0Z1bmN0aW9uKGEpICYmIGEsDQogICAgICAg
ICAgICAgICAgZHVyYXRpb246IGEsDQogICAgICAgICAgICAgICAgZWFzaW5n
OiBkICYmIGIgfHwgYiAmJiAhYy5pc0Z1bmN0aW9uKGIpICYmIGINCiAgICAg
ICAgICAgIH07DQogICAgICAgICAgICBmLmR1cmF0aW9uID0zRCBjLmZ4Lm9m
ZiA/IDAgOiB0eXBlb2YgZi5kdXJhdGlvbiA9M0Q9M0Q9M0QgPQ0KIm51bWJl
ciIgPyBmLmR1cmF0aW9uIDogYy5meC5zcGVlZHNbZi5kdXJhdGlvbl0gfHwg
Yy5meC5zcGVlZHMuX2RlZmF1bHQ7DQogICAgICAgICAgICBmLm9sZCA9M0Qg
Zi5jb21wbGV0ZTsNCiAgICAgICAgICAgIGYuY29tcGxldGUgPTNEIGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgICAgICAgICBmLnF1ZXVlICE9M0Q9M0QgZmFs
c2UgJiYgYyh0aGlzKS5kZXF1ZXVlKCk7DQogICAgICAgICAgICAgICAgYy5p
c0Z1bmN0aW9uKGYub2xkKSAmJiBmLm9sZC5jYWxsKHRoaXMpDQogICAgICAg
ICAgICB9Ow0KICAgICAgICAgICAgcmV0dXJuIGYNCiAgICAgICAgfSwNCiAg
ICAgICAgZWFzaW5nOiB7DQogICAgICAgICAgICBsaW5lYXI6IGZ1bmN0aW9u
IChhLCBiLCBkLCBmKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGQgKyBm
ICogYQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHN3aW5nOiBmdW5j
dGlvbiAoYSwgYiwgZCwgZikgew0KICAgICAgICAgICAgICAgIHJldHVybiAo
LU1hdGguY29zKGEgKiBNYXRoLlBJKSAvIDIgKyAwLjUpICogZiArIGQNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgdGltZXJzOiBbXSwN
CiAgICAgICAgZng6IGZ1bmN0aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAg
ICB0aGlzLm9wdGlvbnMgPTNEIGI7DQogICAgICAgICAgICB0aGlzLmVsZW0g
PTNEIGE7DQogICAgICAgICAgICB0aGlzLnByb3AgPTNEIGQ7DQogICAgICAg
ICAgICBpZiAoIWIub3JpZykgYi5vcmlnID0zRCB7fQ0KICAgICAgICB9DQog
ICAgfSk7DQogICAgYy5meC5wcm90b3R5cGUgPTNEIHsNCiAgICAgICAgdXBk
YXRlOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLm9wdGlvbnMu
c3RlcCAmJiB0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSwgPQ0K
dGhpcy5ub3csIHRoaXMpOw0KICAgICAgICAgICAgKGMuZnguc3RlcFt0aGlz
LnByb3BdIHx8IGMuZnguc3RlcC5fZGVmYXVsdCkodGhpcyk7DQogICAgICAg
ICAgICBpZiAoKHRoaXMucHJvcCA9M0Q9M0Q9M0QgImhlaWdodCIgfHwgdGhp
cy5wcm9wID0zRD0zRD0zRCA9DQoid2lkdGgiKSAmJiB0aGlzLmVsZW0uc3R5
bGUpIHRoaXMuZWxlbS5zdHlsZS5kaXNwbGF5ID0zRCAiYmxvY2siDQogICAg
ICAgIH0sDQogICAgICAgIGN1cjogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAg
ICAgIGlmICh0aGlzLmVsZW1bdGhpcy5wcm9wXSAhPTNEIG51bGwgJiYgKCF0
aGlzLmVsZW0uc3R5bGUgfHwgPQ0KdGhpcy5lbGVtLnN0eWxlW3RoaXMucHJv
cF0gPTNEPTNEIG51bGwpKSByZXR1cm4gdGhpcy5lbGVtW3RoaXMucHJvcF07
DQogICAgICAgICAgICByZXR1cm4gKGEgPTNEIHBhcnNlRmxvYXQoYy5jc3Mo
dGhpcy5lbGVtLCB0aGlzLnByb3AsIGEpKSkgJiYgPQ0KYSA+IC0xMDAwMCA/
IGEgOiBwYXJzZUZsb2F0KGMuY3VyQ1NTKHRoaXMuZWxlbSwgdGhpcy5wcm9w
KSkgfHwgMA0KICAgICAgICB9LA0KICAgICAgICBjdXN0b206IGZ1bmN0aW9u
IChhLCBiLCBkKSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmKGopIHsNCiAg
ICAgICAgICAgICAgICByZXR1cm4gZS5zdGVwKGopDQogICAgICAgICAgICB9
DQogICAgICAgICAgICB0aGlzLnN0YXJ0VGltZSA9M0QgSigpOw0KICAgICAg
ICAgICAgdGhpcy5zdGFydCA9M0QgYTsNCiAgICAgICAgICAgIHRoaXMuZW5k
ID0zRCBiOw0KICAgICAgICAgICAgdGhpcy51bml0ID0zRCBkIHx8IHRoaXMu
dW5pdCB8fCAicHgiOw0KICAgICAgICAgICAgdGhpcy5ub3cgPTNEIHRoaXMu
c3RhcnQ7DQogICAgICAgICAgICB0aGlzLnBvcyA9M0QgdGhpcy5zdGF0ZSA9
M0QgMDsNCiAgICAgICAgICAgIHZhciBlID0zRCB0aGlzOw0KICAgICAgICAg
ICAgZi5lbGVtID0zRCB0aGlzLmVsZW07DQogICAgICAgICAgICBpZiAoZigp
ICYmIGMudGltZXJzLnB1c2goZikgJiYgIVcpIFcgPTNEID0NCnNldEludGVy
dmFsKGMuZngudGljaywgMTMpDQogICAgICAgIH0sDQogICAgICAgIHNob3c6
IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vcmln
W3RoaXMucHJvcF0gPTNEIGMuc3R5bGUodGhpcy5lbGVtLCA9DQp0aGlzLnBy
b3ApOw0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNob3cgPTNEIHRydWU7
DQogICAgICAgICAgICB0aGlzLmN1c3RvbSh0aGlzLnByb3AgPTNEPTNEPTNE
ICJ3aWR0aCIgfHwgdGhpcy5wcm9wID0NCj0zRD0zRD0zRCAiaGVpZ2h0IiA/
IDEgOiAwLCB0aGlzLmN1cigpKTsNCiAgICAgICAgICAgIGModGhpcy5lbGVt
KS5zaG93KCkNCiAgICAgICAgfSwNCiAgICAgICAgaGlkZTogZnVuY3Rpb24g
KCkgew0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9w
XSA9M0QgYy5zdHlsZSh0aGlzLmVsZW0sID0NCnRoaXMucHJvcCk7DQogICAg
ICAgICAgICB0aGlzLm9wdGlvbnMuaGlkZSA9M0QgdHJ1ZTsNCiAgICAgICAg
ICAgIHRoaXMuY3VzdG9tKHRoaXMuY3VyKCksIDApDQogICAgICAgIH0sDQog
ICAgICAgIHN0ZXA6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICB2YXIg
YiA9M0QgSigpLA0KICAgICAgICAgICAgICAgIGQgPTNEIHRydWU7DQogICAg
ICAgICAgICBpZiAoYSB8fCBiID49M0QgdGhpcy5vcHRpb25zLmR1cmF0aW9u
ICsgdGhpcy5zdGFydFRpbWUpIHsNCiAgICAgICAgICAgICAgICB0aGlzLm5v
dyA9M0QNCiAgICAgICAgICAgICAgICB0aGlzLmVuZDsNCiAgICAgICAgICAg
ICAgICB0aGlzLnBvcyA9M0QgdGhpcy5zdGF0ZSA9M0QgMTsNCiAgICAgICAg
ICAgICAgICB0aGlzLnVwZGF0ZSgpOw0KICAgICAgICAgICAgICAgIHRoaXMu
b3B0aW9ucy5jdXJBbmltW3RoaXMucHJvcF0gPTNEIHRydWU7DQogICAgICAg
ICAgICAgICAgZm9yICh2YXIgZiBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSkg
aWYgPQ0KKHRoaXMub3B0aW9ucy5jdXJBbmltW2ZdICE9M0Q9M0QgdHJ1ZSkg
ZCA9M0QgZmFsc2U7DQogICAgICAgICAgICAgICAgaWYgKGQpIHsNCiAgICAg
ICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kaXNwbGF5ICE9M0Qg
bnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtLnN0
eWxlLm92ZXJmbG93ID0zRCA9DQp0aGlzLm9wdGlvbnMub3ZlcmZsb3c7DQog
ICAgICAgICAgICAgICAgICAgICAgICBhID0zRCBjLmRhdGEodGhpcy5lbGVt
LCAib2xkZGlzcGxheSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5lbGVtLnN0eWxlLmRpc3BsYXkgPTNEIGEgPyBhIDogPQ0KdGhpcy5vcHRp
b25zLmRpc3BsYXk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5j
c3ModGhpcy5lbGVtLCAiZGlzcGxheSIpID0zRD0zRD0zRCA9DQoibm9uZSIp
IHRoaXMuZWxlbS5zdHlsZS5kaXNwbGF5ID0zRCAiYmxvY2siDQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRp
b25zLmhpZGUgJiYgYyh0aGlzLmVsZW0pLmhpZGUoKTsNCiAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oaWRlIHx8IHRoaXMub3B0aW9u
cy5zaG93KSBmb3IgKHZhciA9DQplIGluIHRoaXMub3B0aW9ucy5jdXJBbmlt
KSBjLnN0eWxlKHRoaXMuZWxlbSwgZSwgdGhpcy5vcHRpb25zLm9yaWdbZV0p
Ow0KICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuY29tcGxldGUu
Y2FsbCh0aGlzLmVsZW0pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICAgICAgICBlID0zRCBiIC0gdGhpcy5zdGFydFRpbWU7DQogICAg
ICAgICAgICAgICAgdGhpcy5zdGF0ZSA9M0QgZSAvIHRoaXMub3B0aW9ucy5k
dXJhdGlvbjsNCiAgICAgICAgICAgICAgICBhID0zRCB0aGlzLm9wdGlvbnMu
ZWFzaW5nIHx8IChjLmVhc2luZy5zd2luZyA/ICJzd2luZyIgOiA9DQoibGlu
ZWFyIik7DQogICAgICAgICAgICAgICAgdGhpcy5wb3MgPTNEIGMuZWFzaW5n
W3RoaXMub3B0aW9ucy5zcGVjaWFsRWFzaW5nICYmID0NCnRoaXMub3B0aW9u
cy5zcGVjaWFsRWFzaW5nW3RoaXMucHJvcF0gfHwgYV0odGhpcy5zdGF0ZSwg
ZSwgMCwgMSwgPQ0KdGhpcy5vcHRpb25zLmR1cmF0aW9uKTsNCiAgICAgICAg
ICAgICAgICB0aGlzLm5vdyA9M0QgdGhpcy5zdGFydCArICh0aGlzLmVuZCAt
IHRoaXMuc3RhcnQpICogPQ0KdGhpcy5wb3M7DQogICAgICAgICAgICAgICAg
dGhpcy51cGRhdGUoKQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0
dXJuIHRydWUNCiAgICAgICAgfQ0KICAgIH07DQogICAgYy5leHRlbmQoYy5m
eCwgew0KICAgICAgICB0aWNrOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAg
ICBmb3IgKHZhciBhID0zRCBjLnRpbWVycywgYiA9M0QgMDsgYiA8IGEubGVu
Z3RoOyBiKyspIGFbYl0oKSA9DQp8fCBhLnNwbGljZShiLS0sIDEpOw0KICAg
ICAgICAgICAgYS5sZW5ndGggfHwgYy5meC5zdG9wKCkNCiAgICAgICAgfSwN
CiAgICAgICAgc3RvcDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChXKTsNCiAgICAgICAgICAgIFcgPTNEIG51bGwNCiAgICAg
ICAgfSwNCiAgICAgICAgc3BlZWRzOiB7DQogICAgICAgICAgICBzbG93OiA2
MDAsDQogICAgICAgICAgICBmYXN0OiAyMDAsDQogICAgICAgICAgICBfZGVm
YXVsdDogNDAwDQogICAgICAgIH0sDQogICAgICAgIHN0ZXA6IHsNCiAgICAg
ICAgICAgIG9wYWNpdHk6IGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgICAg
ICAgYy5zdHlsZShhLmVsZW0sICJvcGFjaXR5IiwgYS5ub3cpDQogICAgICAg
ICAgICB9LA0KICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uIChhKSB7
DQogICAgICAgICAgICAgICAgaWYgKGEuZWxlbS5zdHlsZSAmJiBhLmVsZW0u
c3R5bGVbYS5wcm9wXSAhPTNEIG51bGwpID0NCmEuZWxlbS5zdHlsZVthLnBy
b3BdID0zRCAoYS5wcm9wID0zRD0zRD0zRCAid2lkdGgiIHx8IGEucHJvcCA9
M0Q9M0Q9M0QgPQ0KImhlaWdodCIgPyBNYXRoLm1heCgwLCBhLm5vdykgOiBh
Lm5vdykgKyBhLnVuaXQ7DQogICAgICAgICAgICAgICAgZWxzZSBhLmVsZW1b
YS5wcm9wXSA9M0QgYS5ub3cNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgIH0pOw0KICAgIGlmIChjLmV4cHIgJiYgYy5leHByLmZpbHRlcnMpIGMu
ZXhwci5maWx0ZXJzLmFuaW1hdGVkID0zRCBmdW5jdGlvbiA9DQooYSkgew0K
ICAgICAgICByZXR1cm4gYy5ncmVwKGMudGltZXJzLCBmdW5jdGlvbiAoYikg
ew0KICAgICAgICAgICAgcmV0dXJuIGEgPTNEPTNEPTNEIGIuZWxlbQ0KICAg
ICAgICB9KS5sZW5ndGgNCiAgICB9Ow0KICAgIGMuZm4ub2Zmc2V0ID0zRCAi
Z2V0Qm91bmRpbmdDbGllbnRSZWN0IiBpbiBzLmRvY3VtZW50RWxlbWVudCA/
DQogICAgZnVuY3Rpb24gKGEpIHsNCiAgICAgICAgdmFyIGIgPTNEIHRoaXNb
MF07DQogICAgICAgIGlmIChhKSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
IChlKSB7DQogICAgICAgICAgICBjLm9mZnNldC5zZXRPZmZzZXQodGhpcywg
YSwgZSkNCiAgICAgICAgfSk7DQogICAgICAgIGlmICghYiB8fCAhYi5vd25l
ckRvY3VtZW50KSByZXR1cm4gbnVsbDsNCiAgICAgICAgaWYgKGIgPTNEPTNE
PTNEIGIub3duZXJEb2N1bWVudC5ib2R5KSByZXR1cm4gPQ0KYy5vZmZzZXQu
Ym9keU9mZnNldChiKTsNCiAgICAgICAgdmFyIGQgPTNEIGIuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCksDQogICAgICAgICAgICBmID0zRCBiLm93bmVyRG9j
dW1lbnQ7DQogICAgICAgIGIgPTNEIGYuYm9keTsNCiAgICAgICAgZiA9M0Qg
Zi5kb2N1bWVudEVsZW1lbnQ7DQogICAgICAgIHJldHVybiB7DQogICAgICAg
ICAgICB0b3A6IGQudG9wICsgKHNlbGYucGFnZVlPZmZzZXQgfHwgYy5zdXBw
b3J0LmJveE1vZGVsICYmID0NCmYuc2Nyb2xsVG9wIHx8IGIuc2Nyb2xsVG9w
KSAtIChmLmNsaWVudFRvcCB8fCBiLmNsaWVudFRvcCB8fCAwKSwNCiAgICAg
ICAgICAgIGxlZnQ6IGQubGVmdCArIChzZWxmLnBhZ2VYT2Zmc2V0IHx8IGMu
c3VwcG9ydC5ib3hNb2RlbCAmJiA9DQpmLnNjcm9sbExlZnQgfHwgYi5zY3Jv
bGxMZWZ0KSAtIChmLmNsaWVudExlZnQgfHwgYi5jbGllbnRMZWZ0IHx8IDAp
DQogICAgICAgIH0NCiAgICB9IDogZnVuY3Rpb24gKGEpIHsNCiAgICAgICAg
dmFyIGIgPTNEDQogICAgICAgIHRoaXNbMF07DQogICAgICAgIGlmIChhKSBy
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIChyKSB7DQogICAgICAgICAgICBj
Lm9mZnNldC5zZXRPZmZzZXQodGhpcywgYSwgcikNCiAgICAgICAgfSk7DQog
ICAgICAgIGlmICghYiB8fCAhYi5vd25lckRvY3VtZW50KSByZXR1cm4gbnVs
bDsNCiAgICAgICAgaWYgKGIgPTNEPTNEPTNEIGIub3duZXJEb2N1bWVudC5i
b2R5KSByZXR1cm4gPQ0KYy5vZmZzZXQuYm9keU9mZnNldChiKTsNCiAgICAg
ICAgYy5vZmZzZXQuaW5pdGlhbGl6ZSgpOw0KICAgICAgICB2YXIgZCA9M0Qg
Yi5vZmZzZXRQYXJlbnQsDQogICAgICAgICAgICBmID0zRCBiLA0KICAgICAg
ICAgICAgZSA9M0QgYi5vd25lckRvY3VtZW50LA0KICAgICAgICAgICAgaiwg
aSA9M0QgZS5kb2N1bWVudEVsZW1lbnQsDQogICAgICAgICAgICBvID0zRCBl
LmJvZHk7DQogICAgICAgIGYgPTNEIChlID0zRCBlLmRlZmF1bHRWaWV3KSA/
IGUuZ2V0Q29tcHV0ZWRTdHlsZShiLCBudWxsKSA6ID0NCmIuY3VycmVudFN0
eWxlOw0KICAgICAgICBmb3IgKHZhciBrID0zRCBiLm9mZnNldFRvcCwgbiA9
M0QgYi5vZmZzZXRMZWZ0Ow0KICAgICAgICAoYiA9M0QgYi5wYXJlbnROb2Rl
KSAmJiBiICE9M0Q9M0QgbyAmJiBiICE9M0Q9M0QgaTspIHsNCiAgICAgICAg
ICAgIGlmIChjLm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24gJiYgZi5w
b3NpdGlvbiA9M0Q9M0Q9M0QgPQ0KImZpeGVkIikgYnJlYWs7DQogICAgICAg
ICAgICBqID0zRCBlID8gZS5nZXRDb21wdXRlZFN0eWxlKGIsIG51bGwpIDog
Yi5jdXJyZW50U3R5bGU7DQogICAgICAgICAgICBrIC09M0QgYi5zY3JvbGxU
b3A7DQogICAgICAgICAgICBuIC09M0QgYi5zY3JvbGxMZWZ0Ow0KICAgICAg
ICAgICAgaWYgKGIgPTNEPTNEPTNEIGQpIHsNCiAgICAgICAgICAgICAgICBr
ICs9M0QgYi5vZmZzZXRUb3A7DQogICAgICAgICAgICAgICAgbiArPTNEIGIu
b2Zmc2V0TGVmdDsNCiAgICAgICAgICAgICAgICBpZiAoYy5vZmZzZXQuZG9l
c05vdEFkZEJvcmRlciAmJiA9DQohKGMub2Zmc2V0LmRvZXNBZGRCb3JkZXJG
b3JUYWJsZUFuZENlbGxzICYmID0NCi9edChhYmxlfGR8aCkkL2kudGVzdChi
Lm5vZGVOYW1lKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgayArPTNEIHBh
cnNlRmxvYXQoai5ib3JkZXJUb3BXaWR0aCkgfHwgMDsNCiAgICAgICAgICAg
ICAgICAgICAgbiArPTNEIHBhcnNlRmxvYXQoai5ib3JkZXJMZWZ0V2lkdGgp
IHx8IDANCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZiA9
M0QgZDsNCiAgICAgICAgICAgICAgICBkID0zRCBiLm9mZnNldFBhcmVudA0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGMub2Zmc2V0LnN1YnRy
YWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJsZSAmJiA9DQpqLm92ZXJm
bG93ICE9M0Q9M0QgInZpc2libGUiKSB7DQogICAgICAgICAgICAgICAgayAr
PTNEIHBhcnNlRmxvYXQoai5ib3JkZXJUb3BXaWR0aCkgfHwgMDsNCiAgICAg
ICAgICAgICAgICBuICs9M0QgcGFyc2VGbG9hdChqLmJvcmRlckxlZnRXaWR0
aCkgfHwgMA0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZiA9M0Qgag0K
ICAgICAgICB9DQogICAgICAgIGlmIChmLnBvc2l0aW9uID0zRD0zRD0zRCAi
cmVsYXRpdmUiIHx8IGYucG9zaXRpb24gPTNEPTNEPTNEID0NCiJzdGF0aWMi
KSB7DQogICAgICAgICAgICBrICs9M0Qgby5vZmZzZXRUb3A7DQogICAgICAg
ICAgICBuICs9M0Qgby5vZmZzZXRMZWZ0DQogICAgICAgIH0NCiAgICAgICAg
aWYgKGMub2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiAmJiBmLnBvc2l0
aW9uID0zRD0zRD0zRCA9DQoiZml4ZWQiKSB7DQogICAgICAgICAgICBrICs9
M0QgTWF0aC5tYXgoaS5zY3JvbGxUb3AsIG8uc2Nyb2xsVG9wKTsNCiAgICAg
ICAgICAgIG4gKz0zRCBNYXRoLm1heChpLnNjcm9sbExlZnQsIG8uc2Nyb2xs
TGVmdCkNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gew0KICAgICAgICAg
ICAgdG9wOiBrLA0KICAgICAgICAgICAgbGVmdDogbg0KICAgICAgICB9DQog
ICAgfTsNCiAgICBjLm9mZnNldCA9M0Qgew0KICAgICAgICBpbml0aWFsaXpl
OiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgYSA9M0Qgcy5ib2R5
LA0KICAgICAgICAgICAgICAgIGIgPTNEIHMuY3JlYXRlRWxlbWVudCgiZGl2
IiksDQogICAgICAgICAgICAgICAgZCwgZiwgZSwgaiA9M0QgcGFyc2VGbG9h
dChjLmN1ckNTUyhhLCAibWFyZ2luVG9wIiwgPQ0KdHJ1ZSkpIHx8IDA7DQog
ICAgICAgICAgICBjLmV4dGVuZChiLnN0eWxlLCB7DQogICAgICAgICAgICAg
ICAgcG9zaXRpb246ICJhYnNvbHV0ZSIsDQogICAgICAgICAgICAgICAgdG9w
OiAwLA0KICAgICAgICAgICAgICAgIGxlZnQ6IDAsDQogICAgICAgICAgICAg
ICAgbWFyZ2luOiAwLA0KICAgICAgICAgICAgICAgIGJvcmRlcjogMCwNCiAg
ICAgICAgICAgICAgICB3aWR0aDogIjFweCIsDQogICAgICAgICAgICAgICAg
aGVpZ2h0OiAiMXB4IiwNCiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAi
aGlkZGVuIg0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBiLmlubmVy
SFRNTCA9M0QgIjxkaXYgPQ0Kc3R5bGU9M0QncG9zaXRpb246YWJzb2x1dGU7
dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgPQ0KIzAw
MDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7Jz48ZGl2PjwvZGl2
PjwvZGl2Pjx0YWJsZSA9DQpzdHlsZT0zRCdwb3NpdGlvbjphYnNvbHV0ZTt0
b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCA9DQojMDAw
O3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsnIGNlbGxwYWRkaW5n
PTNEJzAnID0NCmNlbGxzcGFjaW5nPTNEJzAnPjx0cj48dGQ+PC90ZD48L3Ry
PjwvdGFibGU+IjsNCiAgICAgICAgICAgIGEuaW5zZXJ0QmVmb3JlKGIsIGEu
Zmlyc3RDaGlsZCk7DQogICAgICAgICAgICBkID0zRCBiLmZpcnN0Q2hpbGQ7
DQogICAgICAgICAgICBmID0zRCBkLmZpcnN0Q2hpbGQ7DQogICAgICAgICAg
ICBlID0zRCBkLm5leHRTaWJsaW5nLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDsN
CiAgICAgICAgICAgIHRoaXMuZG9lc05vdEFkZEJvcmRlciA9M0QgZi5vZmZz
ZXRUb3AgIT0zRD0zRCA1Ow0KICAgICAgICAgICAgdGhpcy5kb2VzQWRkQm9y
ZGVyRm9yVGFibGVBbmRDZWxscyA9M0QgZS5vZmZzZXRUb3AgPTNEPTNEPTNE
ID0NCjU7DQogICAgICAgICAgICBmLnN0eWxlLnBvc2l0aW9uID0zRCAiZml4
ZWQiOw0KICAgICAgICAgICAgZi5zdHlsZS50b3AgPTNEICIyMHB4IjsNCiAg
ICAgICAgICAgIHRoaXMuc3VwcG9ydHNGaXhlZFBvc2l0aW9uID0zRCBmLm9m
ZnNldFRvcCA9M0Q9M0Q9M0QgMjAgfHwgPQ0KZi5vZmZzZXRUb3AgPTNEPTNE
PTNEIDE1Ow0KICAgICAgICAgICAgZi5zdHlsZS5wb3NpdGlvbiA9M0QgZi5z
dHlsZS50b3AgPTNEICIiOw0KICAgICAgICAgICAgZC5zdHlsZS5vdmVyZmxv
dyA9M0QgImhpZGRlbiI7DQogICAgICAgICAgICBkLnN0eWxlLnBvc2l0aW9u
ID0zRCAicmVsYXRpdmUiOw0KICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdHNC
b3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUgPTNEIGYub2Zmc2V0VG9wID0N
Cj0zRD0zRD0zRCAtNTsNCiAgICAgICAgICAgIHRoaXMuZG9lc05vdEluY2x1
ZGVNYXJnaW5JbkJvZHlPZmZzZXQgPTNEIGEub2Zmc2V0VG9wID0NCiE9M0Q9
M0QgajsNCiAgICAgICAgICAgIGEucmVtb3ZlQ2hpbGQoYik7DQogICAgICAg
ICAgICBjLm9mZnNldC5pbml0aWFsaXplID0zRCBjLm5vb3ANCiAgICAgICAg
fSwNCiAgICAgICAgYm9keU9mZnNldDogZnVuY3Rpb24gKGEpIHsNCiAgICAg
ICAgICAgIHZhciBiID0zRCBhLm9mZnNldFRvcCwNCiAgICAgICAgICAgICAg
ICBkID0zRCBhLm9mZnNldExlZnQ7DQogICAgICAgICAgICBjLm9mZnNldC5p
bml0aWFsaXplKCk7DQogICAgICAgICAgICBpZiAoYy5vZmZzZXQuZG9lc05v
dEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQpIHsNCiAgICAgICAgICAgICAg
ICBiICs9M0QgcGFyc2VGbG9hdChjLmN1ckNTUyhhLCAibWFyZ2luVG9wIiwg
dHJ1ZSkpIHx8IDA7DQogICAgICAgICAgICAgICAgZCArPTNEIHBhcnNlRmxv
YXQoYy5jdXJDU1MoYSwgIm1hcmdpbkxlZnQiLCB0cnVlKSkgfHwgMA0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAg
ICAgICB0b3A6IGIsDQogICAgICAgICAgICAgICAgbGVmdDogZA0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBzZXRPZmZzZXQ6IGZ1bmN0
aW9uIChhLCBiLCBkKSB7DQogICAgICAgICAgICBpZiAoL3N0YXRpYy8udGVz
dChjLmN1ckNTUyhhLCAicG9zaXRpb24iKSkpIGEuc3R5bGUucG9zaXRpb24g
PQ0KPTNEICJyZWxhdGl2ZSI7DQogICAgICAgICAgICB2YXIgZiA9M0QgYyhh
KSwNCiAgICAgICAgICAgICAgICBlID0zRCBmLm9mZnNldCgpLA0KICAgICAg
ICAgICAgICAgIGogPTNEIHBhcnNlSW50KGMuY3VyQ1NTKGEsICJ0b3AiLCB0
cnVlKSwgMTApIHx8IDAsDQogICAgICAgICAgICAgICAgaSA9M0QgcGFyc2VJ
bnQoYy5jdXJDU1MoYSwgImxlZnQiLCB0cnVlKSwgMTApIHx8IDA7DQogICAg
ICAgICAgICBpZiAoYy5pc0Z1bmN0aW9uKGIpKSBiID0zRCBiLmNhbGwoYSwg
ZCwgZSk7DQogICAgICAgICAgICBkID0zRCB7DQogICAgICAgICAgICAgICAg
dG9wOiBiLnRvcCAtIGUudG9wICsgaiwNCiAgICAgICAgICAgICAgICBsZWZ0
OiBiLmxlZnQgLSBlLmxlZnQgKyBpDQogICAgICAgICAgICB9Ow0KICAgICAg
ICAgICAgInVzaW5nIiBpbiBiID8gYi51c2luZy5jYWxsKGEsIGQpIDogZi5j
c3MoZCkNCiAgICAgICAgfQ0KICAgIH07DQogICAgYy5mbi5leHRlbmQoew0K
ICAgICAgICBwb3NpdGlvbjogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAg
aWYgKCF0aGlzWzBdKSByZXR1cm4gbnVsbDsNCiAgICAgICAgICAgIHZhciBh
ID0zRCB0aGlzWzBdLA0KICAgICAgICAgICAgICAgIGIgPTNEIHRoaXMub2Zm
c2V0UGFyZW50KCksDQogICAgICAgICAgICAgICAgZCA9M0QgdGhpcy5vZmZz
ZXQoKSwNCiAgICAgICAgICAgICAgICBmID0zRCAvXmJvZHl8aHRtbCQvaS50
ZXN0KGJbMF0ubm9kZU5hbWUpID8gew0KICAgICAgICAgICAgICAgIHRvcDog
MCwNCiAgICAgICAgICAgICAgICBsZWZ0OiAwDQogICAgICAgICAgICB9IDog
Yi5vZmZzZXQoKTsNCiAgICAgICAgICAgIGQudG9wIC09M0QgcGFyc2VGbG9h
dChjLmN1ckNTUyhhLCAibWFyZ2luVG9wIiwgdHJ1ZSkpIHx8IDA7DQogICAg
ICAgICAgICBkLmxlZnQgLT0zRCBwYXJzZUZsb2F0KGMuY3VyQ1NTKGEsICJt
YXJnaW5MZWZ0IiwgdHJ1ZSkpIHx8ID0NCjA7DQogICAgICAgICAgICBmLnRv
cCArPTNEIHBhcnNlRmxvYXQoYy5jdXJDU1MoYlswXSwgImJvcmRlclRvcFdp
ZHRoIiwgPQ0KdHJ1ZSkpIHx8IDA7DQogICAgICAgICAgICBmLmxlZnQgKz0z
RCBwYXJzZUZsb2F0KGMuY3VyQ1NTKGJbMF0sICJib3JkZXJMZWZ0V2lkdGgi
LCA9DQp0cnVlKSkgfHwgMDsNCiAgICAgICAgICAgIHJldHVybiB7DQogICAg
ICAgICAgICAgICAgdG9wOiBkLnRvcCAtIGYudG9wLA0KICAgICAgICAgICAg
ICAgIGxlZnQ6IGQubGVmdCAtIGYubGVmdA0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9LA0KICAgICAgICBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uICgpIHsN
CiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoKSB7DQog
ICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9M0QgdGhpcy5vZmZzZXRQYXJl
bnQgfHwgcy5ib2R5OyBhICYmID0NCiEvXmJvZHl8aHRtbCQvaS50ZXN0KGEu
bm9kZU5hbWUpICYmIGMuY3NzKGEsICJwb3NpdGlvbiIpID0zRD0zRD0zRCA9
DQoic3RhdGljIjspIGEgPTNEIGEub2Zmc2V0UGFyZW50Ow0KICAgICAgICAg
ICAgICAgIHJldHVybiBhDQogICAgICAgICAgICB9KQ0KICAgICAgICB9DQog
ICAgfSk7DQogICAgYy5lYWNoKFsiTGVmdCIsICJUb3AiXSwgZnVuY3Rpb24g
KGEsIGIpIHsNCiAgICAgICAgdmFyIGQgPTNEICJzY3JvbGwiICsgYjsNCiAg
ICAgICAgYy5mbltkXSA9M0QgZnVuY3Rpb24gKGYpIHsNCiAgICAgICAgICAg
IHZhciBlID0zRCB0aGlzWzBdLA0KICAgICAgICAgICAgICAgIGo7DQogICAg
ICAgICAgICBpZiAoIWUpIHJldHVybiBudWxsOw0KICAgICAgICAgICAgaWYg
KGYgIT0zRD0zRCB3KSByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsN
CiAgICAgICAgICAgICAgICBpZiAoaiA9M0Qgd2EodGhpcykpIGouc2Nyb2xs
VG8oIWEgPyBmIDogPQ0KYyhqKS5zY3JvbGxMZWZ0KCksIGEgPyBmIDogYyhq
KS5zY3JvbGxUb3AoKSk7DQogICAgICAgICAgICAgICAgZWxzZSB0aGlzW2Rd
ID0zRCBmDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGVsc2UgcmV0
dXJuIChqID0zRCB3YShlKSkgPyAicGFnZVhPZmZzZXQiIGluIGogPyBqW2Eg
PyA9DQoicGFnZVlPZmZzZXQiIDogInBhZ2VYT2Zmc2V0Il0gOiBjLnN1cHBv
cnQuYm94TW9kZWwgJiYgPQ0Kai5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRb
ZF0gfHwgai5kb2N1bWVudC5ib2R5W2RdIDogZVtkXQ0KICAgICAgICB9DQog
ICAgfSk7DQogICAgYy5lYWNoKFsiSGVpZ2h0IiwgIldpZHRoIl0sIGZ1bmN0
aW9uIChhLCBiKSB7DQogICAgICAgIHZhciBkID0zRCBiLnRvTG93ZXJDYXNl
KCk7DQogICAgICAgIGMuZm5bImlubmVyIiArIGJdID0zRCBmdW5jdGlvbiAo
KSB7DQogICAgICAgICAgICByZXR1cm4gdGhpc1swXSA/IGMuY3NzKHRoaXNb
MF0sIGQsIGZhbHNlLCAicGFkZGluZyIpIDogbnVsbA0KICAgICAgICB9Ow0K
ICAgICAgICBjLmZuWyJvdXRlciIgKyBiXSA9M0QgZnVuY3Rpb24gKGYpIHsN
CiAgICAgICAgICAgIHJldHVybiB0aGlzWzBdID8gYy5jc3ModGhpc1swXSwg
ZCwgZmFsc2UsIGYgPyAibWFyZ2luIiA6ID0NCiJib3JkZXIiKSA6IG51bGwN
CiAgICAgICAgfTsNCiAgICAgICAgYy5mbltkXSA9M0QgZnVuY3Rpb24gKGYp
IHsNCiAgICAgICAgICAgIHZhciBlID0zRCB0aGlzWzBdOw0KICAgICAgICAg
ICAgaWYgKCFlKSByZXR1cm4gZiA9M0Q9M0QgbnVsbCA/IG51bGwgOiB0aGlz
Ow0KICAgICAgICAgICAgaWYgKGMuaXNGdW5jdGlvbihmKSkgcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbiAoaikgew0KICAgICAgICAgICAgICAgIHZhciBp
ID0zRCBjKHRoaXMpOw0KICAgICAgICAgICAgICAgIGlbZF0oZi5jYWxsKHRo
aXMsIGosIGlbZF0oKSkpDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAg
IHJldHVybiAic2Nyb2xsVG8iIGluIGUgJiYgZS5kb2N1bWVudCA/IGUuZG9j
dW1lbnQuY29tcGF0TW9kZSA9DQo9M0Q9M0Q9M0QgIkNTUzFDb21wYXQiICYm
IGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiICsgYl0gfHwg
PQ0KZS5kb2N1bWVudC5ib2R5WyJjbGllbnQiICsgYl0gOiBlLm5vZGVUeXBl
ID0zRD0zRD0zRCA5ID8gPQ0KTWF0aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRb
ImNsaWVudCIgKyBiXSwgZS5ib2R5WyJzY3JvbGwiICsgYl0sID0NCmUuZG9j
dW1lbnRFbGVtZW50WyJzY3JvbGwiICsgYl0sIGUuYm9keVsib2Zmc2V0IiAr
IGJdLCA9DQplLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IiArIGJdKSA6IGYg
PTNEPTNEPTNEIHcgPyBjLmNzcyhlLCBkKSA6ID0NCnRoaXMuY3NzKGQsIHR5
cGVvZiBmID0zRD0zRD0zRCAic3RyaW5nIiA/IGYgOiBmICsgInB4IikNCiAg
ICAgICAgfQ0KICAgIH0pOw0KICAgIEEualF1ZXJ5ID0zRCBBLiQgPTNEIGMN
Cn0pKHdpbmRvdyk7DQoNCg0KDQovKiENCiAqIGpRdWVyeSBVSSAxLjgNCiAq
DQogKiBDb3B5cmlnaHQgKGMpIDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9q
cXVlcnl1aS5jb20vYWJvdXQpDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkNCiAqIGFuZCBHUEwgKEdQTC1MSUNF
TlNFLnR4dCkgbGljZW5zZXMuDQogKg0KICogaHR0cDovL2RvY3MuanF1ZXJ5
LmNvbS9VSQ0KICovDQovKg0KICogalF1ZXJ5IFVJIDEuOA0KICoNCiAqIENv
cHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVp
LmNvbS9hYm91dCkNCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAo
TUlULUxJQ0VOU0UudHh0KQ0KICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0
KSBsaWNlbnNlcy4NCiAqDQogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJ
DQogKi8NCmpRdWVyeS51aXx8KGZ1bmN0aW9uKGEpe2EudWk9M0R7dmVyc2lv
bjoiMS44IixwbHVnaW46e2FkZDpmdW5jdGlvbihjLGQsZik9DQp7dmFyIGU9
M0RhLnVpW2NdLnByb3RvdHlwZTtmb3IodmFyIGIgaW4gPQ0KZil7ZS5wbHVn
aW5zW2JdPTNEZS5wbHVnaW5zW2JdfHxbXTtlLnBsdWdpbnNbYl0ucHVzaChb
ZCxmW2JdXSl9fSxjYWxsOmZ1bj0NCmN0aW9uKGIsZCxjKXt2YXIgPQ0KZj0z
RGIucGx1Z2luc1tkXTtpZighZnx8IWIuZWxlbWVudFswXS5wYXJlbnROb2Rl
KXtyZXR1cm59Zm9yKHZhciA9DQplPTNEMDtlPGYubGVuZ3RoO2UrKyl7aWYo
Yi5vcHRpb25zW2ZbZV1bMF1dKXtmW2VdWzFdLmFwcGx5KGIuZWxlbWVudCxj
KX19PQ0KfX0sY29udGFpbnM6ZnVuY3Rpb24oZCxjKXtyZXR1cm4gPQ0KZG9j
dW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ZC5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbihjKSYxNjpkIT0zRD0zRD0NCmMmJmQuY29udGFpbnMoYyl9
LGhhc1Njcm9sbDpmdW5jdGlvbihlLGMpe2lmKGEoZSkuY3NzKCJvdmVyZmxv
dyIpPTNEPTNEImg9DQppZGRlbiIpe3JldHVybiBmYWxzZX12YXIgPQ0KYj0z
RChjJiZjPTNEPTNEImxlZnQiKT8ic2Nyb2xsTGVmdCI6InNjcm9sbFRvcCIs
ZD0zRGZhbHNlO2lmKGVbYl0+MCl7cmV0dT0NCnJuIHRydWV9ZVtiXT0zRDE7
ZD0zRChlW2JdPjApO2VbYl09M0QwO3JldHVybiA9DQpkfSxpc092ZXJBeGlz
OmZ1bmN0aW9uKGMsYixkKXtyZXR1cm4oYz5iKSYmKGM8KGIrZCkpfSxpc092
ZXI6ZnVuY3Rpb24oZyxjPQ0KLGYsZSxiLGQpe3JldHVybiA9DQphLnVpLmlz
T3ZlckF4aXMoZyxmLGIpJiZhLnVpLmlzT3ZlckF4aXMoYyxlLGQpfSxrZXlD
b2RlOntCQUNLU1BBQ0U6OCxDQVBTPQ0KX0xPQ0s6MjAsQ09NTUE6MTg4LENP
TlRST0w6MTcsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVT
Q0FQRToyNz0NCixIT01FOjM2LElOU0VSVDo0NSxMRUZUOjM3LE5VTVBBRF9B
REQ6MTA3LE5VTVBBRF9ERUNJTUFMOjExMCxOVU1QQURfRElWSUQ9DQpFOjEx
MSxOVU1QQURfRU5URVI6MTA4LE5VTVBBRF9NVUxUSVBMWToxMDYsTlVNUEFE
X1NVQlRSQUNUOjEwOSxQQUdFX0RPV046PQ0KMzQsUEFHRV9VUDozMyxQRVJJ
T0Q6MTkwLFJJR0hUOjM5LFNISUZUOjE2LFNQQUNFOjMyLFRBQjo5LFVQOjM4
fX07YS5mbi5leD0NCnRlbmQoe19mb2N1czphLmZuLmZvY3VzLGZvY3VzOmZ1
bmN0aW9uKGIsYyl7cmV0dXJuIHR5cGVvZiA9DQpiPTNEPTNEPTNEIm51bWJl
ciI/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyID0NCmQ9M0R0aGlzO3NldFRp
bWVvdXQoZnVuY3Rpb24oKXthKGQpLmZvY3VzKCk7KGMmJmMuY2FsbChkKSl9
LGIpfSk6dGhpcy5fZm89DQpjdXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxl
bmFibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gPQ0KdGhpcy5hdHRy
KCJ1bnNlbGVjdGFibGUiLCJvZmYiKS5jc3MoIk1velVzZXJTZWxlY3QiLCIi
KS51bmJpbmQoInNlbGVjdHN0YT0NCnJ0LnVpIil9LGRpc2FibGVTZWxlY3Rp
b246ZnVuY3Rpb24oKXtyZXR1cm4gPQ0KdGhpcy5hdHRyKCJ1bnNlbGVjdGFi
bGUiLCJvbiIpLmNzcygiTW96VXNlclNlbGVjdCIsIm5vbmUiKS5iaW5kKCJz
ZWxlY3RzdD0NCmFydC51aSIsZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9KX0s
c2Nyb2xsUGFyZW50OmZ1bmN0aW9uKCl7dmFyID0NCmI7aWYoKGEuYnJvd3Nl
ci5tc2llJiYoLyhzdGF0aWN8cmVsYXRpdmUpLykudGVzdCh0aGlzLmNzcygi
cG9zaXRpb24iKSkpfHw9DQooL2Fic29sdXRlLykudGVzdCh0aGlzLmNzcygi
cG9zaXRpb24iKSkpe2I9M0R0aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rp
PQ0Kb24oKXtyZXR1cm4oLyhyZWxhdGl2ZXxhYnNvbHV0ZXxmaXhlZCkvKS50
ZXN0KGEuY3VyQ1NTKHRoaXMsInBvc2l0aW9uIiwxKT0NCikmJigvKGF1dG98
c2Nyb2xsKS8pLnRlc3QoYS5jdXJDU1ModGhpcywib3ZlcmZsb3ciLDEpK2Eu
Y3VyQ1NTKHRoaXMsIm92ZXI9DQpmbG93LXkiLDEpK2EuY3VyQ1NTKHRoaXMs
Im92ZXJmbG93LXgiLDEpKX0pLmVxKDApfWVsc2V7Yj0zRHRoaXMucGFyZW50
cygpPQ0KLmZpbHRlcihmdW5jdGlvbigpe3JldHVybigvKGF1dG98c2Nyb2xs
KS8pLnRlc3QoYS5jdXJDU1ModGhpcywib3ZlcmZsb3ciLD0NCjEpK2EuY3Vy
Q1NTKHRoaXMsIm92ZXJmbG93LXkiLDEpK2EuY3VyQ1NTKHRoaXMsIm92ZXJm
bG93LXgiLDEpKX0pLmVxKDApfXI9DQpldHVybigvZml4ZWQvKS50ZXN0KHRo
aXMuY3NzKCJwb3NpdGlvbiIpKXx8IWIubGVuZ3RoP2EoZG9jdW1lbnQpOmJ9
LHpJbmRlPQ0KeDpmdW5jdGlvbihlKXtpZihlIT0zRD0zRHVuZGVmaW5lZCl7
cmV0dXJuID0NCnRoaXMuY3NzKCJ6SW5kZXgiLGUpfWlmKHRoaXMubGVuZ3Ro
KXt2YXIgPQ0KYz0zRGEodGhpc1swXSksYixkO3doaWxlKGMubGVuZ3RoJiZj
WzBdIT0zRD0zRGRvY3VtZW50KXtiPTNEYy5jc3MoInBvc2l0aT0NCm9uIik7
aWYoYj0zRD0zRCJhYnNvbHV0ZSJ8fGI9M0Q9M0QicmVsYXRpdmUifHxiPTNE
PTNEImZpeGVkIil7ZD0zRHBhcnNlSW49DQp0KGMuY3NzKCJ6SW5kZXgiKSk7
aWYoIWlzTmFOKGQpJiZkIT0zRDApe3JldHVybiA9DQpkfX1jPTNEYy5wYXJl
bnQoKX19cmV0dXJuID0NCjB9fSk7YS5leHRlbmQoYS5leHByWyI6Il0se2Rh
dGE6ZnVuY3Rpb24oZCxjLGIpe3JldHVybiA9DQohIWEuZGF0YShkLGJbM10p
fSxmb2N1c2FibGU6ZnVuY3Rpb24oYyl7dmFyID0NCmQ9M0RjLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCksYj0zRGEuYXR0cihjLCJ0YWJpbmRleCIpO3JldHVy
bigvaW5wdXR8c2VsZWM9DQp0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QvLnRl
c3QoZCk/IWMuZGlzYWJsZWQ6ImEiPTNEPTNEZHx8ImFyZWEiPTNEPTNEZD9j
PQ0KLmhyZWZ8fCFpc05hTihiKTohaXNOYU4oYikpJiYhYShjKVsiYXJlYSI9
M0Q9M0RkPyJwYXJlbnRzIjoiY2xvc2VzdCJdKCI6aD0NCmlkZGVuIikubGVu
Z3RofSx0YWJiYWJsZTpmdW5jdGlvbihjKXt2YXIgPQ0KYj0zRGEuYXR0cihj
LCJ0YWJpbmRleCIpO3JldHVybihpc05hTihiKXx8Yj49M0QwKSYmYShjKS5p
cygiOmZvY3VzYWJsZSIpfT0NCn0pfSkoalF1ZXJ5KTs7LyohDQogKiBqUXVl
cnkgVUkgV2lkZ2V0IDEuOA0KICoNCiAqIENvcHlyaWdodCAoYykgMjAxMCBB
VVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkNCiAqIER1
YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQ0K
ICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4NCiAqDQog
KiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1dpZGdldA0KICovDQovKg0K
ICogalF1ZXJ5IFVJIFdpZGdldCAxLjgNCiAqDQogKiBDb3B5cmlnaHQgKGMp
IDIwMTAgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQp
DQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNF
LnR4dCkNCiAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMu
DQogKg0KICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9XaWRnZXQNCiAq
Lw0KKGZ1bmN0aW9uKGIpe3ZhciBhPTNEYi5mbi5yZW1vdmU7Yi5mbi5yZW1v
dmU9M0RmdW5jdGlvbihjLGQpe3JldHVybiA9DQp0aGlzLmVhY2goZnVuY3Rp
b24oKXtpZighZCl7aWYoIWN8fGIuZmlsdGVyKGMsW3RoaXNdKS5sZW5ndGgp
e2IoIioiLHRoaXMpPQ0KLmFkZCh0aGlzKS5lYWNoKGZ1bmN0aW9uKCl7Yih0
aGlzKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9KX19cmV0dXJuID0NCmEu
Y2FsbChiKHRoaXMpLGMsZCl9KX07Yi53aWRnZXQ9M0RmdW5jdGlvbihkLGYs
Yyl7dmFyID0NCmU9M0RkLnNwbGl0KCIuIilbMF0saDtkPTNEZC5zcGxpdCgi
LiIpWzFdO2g9M0RlKyItIitkO2lmKCFjKXtjPTNEZjtmPTNEYi49DQpXaWRn
ZXR9Yi5leHByWyI6Il1baF09M0RmdW5jdGlvbihpKXtyZXR1cm4gPQ0KISFi
LmRhdGEoaSxkKX07YltlXT0zRGJbZV18fHt9O2JbZV1bZF09M0RmdW5jdGlv
bihpLGope2lmKGFyZ3VtZW50cy5sZW5ndD0NCmgpe3RoaXMuX2NyZWF0ZVdp
ZGdldChpLGopfX07dmFyIGc9M0RuZXcgPQ0KZigpO2cub3B0aW9ucz0zRGIu
ZXh0ZW5kKHt9LGcub3B0aW9ucyk7YltlXVtkXS5wcm90b3R5cGU9M0RiLmV4
dGVuZCh0cnVlLD0NCmcse25hbWVzcGFjZTplLHdpZGdldE5hbWU6ZCx3aWRn
ZXRFdmVudFByZWZpeDpiW2VdW2RdLnByb3RvdHlwZS53aWRnZXRFdmU9DQpu
dFByZWZpeHx8ZCx3aWRnZXRCYXNlQ2xhc3M6aH0sYyk7Yi53aWRnZXQuYnJp
ZGdlKGQsYltlXVtkXSl9O2Iud2lkZ2V0LmJyPQ0KaWRnZT0zRGZ1bmN0aW9u
KGQsYyl7Yi5mbltkXT0zRGZ1bmN0aW9uKGcpe3ZhciBlPTNEdHlwZW9mID0N
Cmc9M0Q9M0Q9M0Qic3RyaW5nIixmPTNEQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwoYXJndW1lbnRzLDEpLGg9M0R0aGlzO2c9DQo9M0QhZSYmZi5sZW5n
dGg/Yi5leHRlbmQuYXBwbHkobnVsbCxbdHJ1ZSxnXS5jb25jYXQoZikpOmc7
aWYoZSYmZy5zdWJzdHJpPQ0KbmcoMCwxKT0zRD0zRD0zRCJfIil7cmV0dXJu
IGh9aWYoZSl7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyID0NCmk9M0RiLmRh
dGEodGhpcyxkKSxqPTNEaSYmYi5pc0Z1bmN0aW9uKGlbZ10pP2lbZ10uYXBw
bHkoaSxmKTppO2lmKGohPTNEPTNEPQ0KaSYmaiE9M0Q9M0R1bmRlZmluZWQp
e2g9M0RqO3JldHVybiA9DQpmYWxzZX19KX1lbHNle3RoaXMuZWFjaChmdW5j
dGlvbigpe3ZhciA9DQppPTNEYi5kYXRhKHRoaXMsZCk7aWYoaSl7aWYoZyl7
aS5vcHRpb24oZyl9aS5faW5pdCgpfWVsc2V7Yi5kYXRhKHRoaXMsZCxuPQ0K
ZXcgYyhnLHRoaXMpKX19KX1yZXR1cm4gPQ0KaH19O2IuV2lkZ2V0PTNEZnVu
Y3Rpb24oYyxkKXtpZihhcmd1bWVudHMubGVuZ3RoKXt0aGlzLl9jcmVhdGVX
aWRnZXQoYyxkKT0NCn19O2IuV2lkZ2V0LnByb3RvdHlwZT0zRHt3aWRnZXRO
YW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLG9wdGlvbnM9DQo6
e2Rpc2FibGVkOmZhbHNlfSxfY3JlYXRlV2lkZ2V0OmZ1bmN0aW9uKGQsZSl7
dGhpcy5lbGVtZW50PTNEYihlKS5kYXRhKHRoPQ0KaXMud2lkZ2V0TmFtZSx0
aGlzKTt0aGlzLm9wdGlvbnM9M0RiLmV4dGVuZCh0cnVlLHt9LHRoaXMub3B0
aW9ucyxiLm1ldGFkYT0NCnRhJiZiLm1ldGFkYXRhLmdldChlKVt0aGlzLndp
ZGdldE5hbWVdLGQpO3ZhciA9DQpjPTNEdGhpczt0aGlzLmVsZW1lbnQuYmlu
ZCgicmVtb3ZlLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKCl7Yy5kZXN0
cm95PQ0KKCl9KTt0aGlzLl9jcmVhdGUoKTt0aGlzLl9pbml0KCl9LF9jcmVh
dGU6ZnVuY3Rpb24oKXt9LF9pbml0OmZ1bmN0aW9uKCl7fT0NCixkZXN0cm95
OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnVuYmluZCgiLiIrdGhpcy53aWRn
ZXROYW1lKS5yZW1vdmVEYXRhKHQ9DQpoaXMud2lkZ2V0TmFtZSk7dGhpcy53
aWRnZXQoKS51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSkucmVtb3ZlQXR0
cigiYXJpPQ0KYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0
QmFzZUNsYXNzKyItZGlzYWJsZWQgPQ0KIit0aGlzLm5hbWVzcGFjZSsiLXN0
YXRlLWRpc2FibGVkIil9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiA9DQp0
aGlzLmVsZW1lbnR9LG9wdGlvbjpmdW5jdGlvbihlLGYpe3ZhciA9DQpkPTNE
ZSxjPTNEdGhpcztpZihhcmd1bWVudHMubGVuZ3RoPTNEPTNEPTNEMCl7cmV0
dXJuID0NCmIuZXh0ZW5kKHt9LGMub3B0aW9ucyl9aWYodHlwZW9mID0NCmU9
M0Q9M0Q9M0Qic3RyaW5nIil7aWYoZj0zRD0zRD0zRHVuZGVmaW5lZCl7cmV0
dXJuID0NCnRoaXMub3B0aW9uc1tlXX1kPTNEe307ZFtlXT0zRGZ9Yi5lYWNo
KGQsZnVuY3Rpb24oZyxoKXtjLl9zZXRPcHRpb24oZyxoKX09DQopO3JldHVy
biA9DQpjfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGMsZCl7dGhpcy5vcHRpb25z
W2NdPTNEZDtpZihjPTNEPTNEPTNEImRpc2FibGVkIil7PQ0KdGhpcy53aWRn
ZXQoKVtkPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0odGhpcy53aWRnZXRC
YXNlQ2xhc3MrIi1kaXNhYmxlZD0NCiAiK3RoaXMubmFtZXNwYWNlKyItc3Rh
dGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIixkKX1yZXR1cm4g
PQ0KdGhpc30sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuID0NCnRoaXMuX3Nl
dE9wdGlvbigiZGlzYWJsZWQiLGZhbHNlKX0sZGlzYWJsZTpmdW5jdGlvbigp
e3JldHVybiA9DQp0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIix0cnVlKX0s
X3RyaWdnZXI6ZnVuY3Rpb24oZCxlLGYpe3ZhciA9DQpoPTNEdGhpcy5vcHRp
b25zW2RdO2U9M0RiLkV2ZW50KGUpO2UudHlwZT0zRChkPTNEPTNEPTNEdGhp
cy53aWRnZXRFdmVudFByPQ0KZWZpeD9kOnRoaXMud2lkZ2V0RXZlbnRQcmVm
aXgrZCkudG9Mb3dlckNhc2UoKTtmPTNEZnx8e307aWYoZS5vcmlnaW5hbEV2
ZT0NCm50KXtmb3IodmFyID0NCmM9M0RiLmV2ZW50LnByb3BzLmxlbmd0aCxn
O2M7KXtnPTNEYi5ldmVudC5wcm9wc1stLWNdO2VbZ109M0RlLm9yaWdpbmFs
RXY9DQplbnRbZ119fXRoaXMuZWxlbWVudC50cmlnZ2VyKGUsZik7cmV0dXJu
ID0NCiEoYi5pc0Z1bmN0aW9uKGgpJiZoLmNhbGwodGhpcy5lbGVtZW50WzBd
LGUsZik9M0Q9M0Q9M0RmYWxzZXx8ZS5pc0RlZmF1bHQ9DQpQcmV2ZW50ZWQo
KSl9fX0pKGpRdWVyeSk7Oy8qDQogKiBqUXVlcnkgVUkgQWNjb3JkaW9uIDEu
OA0KICoNCiAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0
cDovL2pxdWVyeXVpLmNvbS9hYm91dCkNCiAqIER1YWwgbGljZW5zZWQgdW5k
ZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQ0KICogYW5kIEdQTCAoR1BM
LUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4NCiAqDQogKiBodHRwOi8vZG9jcy5q
cXVlcnkuY29tL1VJL0FjY29yZGlvbg0KICoNCiAqIERlcGVuZHM6DQogKglq
cXVlcnkudWkuY29yZS5qcw0KICoJanF1ZXJ5LnVpLndpZGdldC5qcw0KICov
DQooZnVuY3Rpb24oYSl7YS53aWRnZXQoInVpLmFjY29yZGlvbiIse29wdGlv
bnM6e2FjdGl2ZTowLGFuaW1hdGVkOiJzbGlkZSIsPQ0KYXV0b0hlaWdodDpm
YWxzZSxjbGVhclN0eWxlOmZhbHNlLGNvbGxhcHNpYmxlOmZhbHNlLGV2ZW50
OiJjbGljayIsZmlsbFNwYT0NCmNlOmZhbHNlLGhlYWRlcjoiPiBsaSA+IDpm
aXJzdC1jaGlsZCw+ID0NCjpub3QobGkpOmV2ZW4iLGljb25zOntoZWFkZXI6
InVpLWljb24tdHJpYW5nbGUtMS1lIixoZWFkZXJTZWxlY3RlZDoidWktaWM9
DQpvbi10cmlhbmdsZS0xLXMifSxuYXZpZ2F0aW9uOmZhbHNlLG5hdmlnYXRp
b25GaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gPQ0KdGhpcy5ocmVmLnRvTG93
ZXJDYXNlKCk9M0Q9M0Rsb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCl9fSxf
Y3JlYXRlOmZ1bmN0aT0NCm9uKCl7dmFyID0NCmQ9M0R0aGlzLm9wdGlvbnMs
Yj0zRHRoaXM7dGhpcy5ydW5uaW5nPTNEMDt0aGlzLmVsZW1lbnQuYWRkQ2xh
c3MoInVpLWFjY289DQpyZGlvbiB1aS13aWRnZXQgPQ0KdWktaGVscGVyLXJl
c2V0Iik7aWYodGhpcy5lbGVtZW50WzBdLm5vZGVOYW1lPTNEPTNEIlVMIil7
dGhpcy5lbGVtZW50LmNoaT0NCmxkcmVuKCJsaSIpLmFkZENsYXNzKCJ1aS1h
Y2NvcmRpb24tbGktZml4Iil9dGhpcy5oZWFkZXJzPTNEdGhpcy5lbGVtZW50
LmY9DQppbmQoZC5oZWFkZXIpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taGVh
ZGVyIHVpLWhlbHBlci1yZXNldCA9DQp1aS1zdGF0ZS1kZWZhdWx0ID0NCnVp
LWNvcm5lci1hbGwiKS5iaW5kKCJtb3VzZWVudGVyLmFjY29yZGlvbiIsZnVu
Y3Rpb24oKXthKHRoaXMpLmFkZENsYXNzKCI9DQp1aS1zdGF0ZS1ob3ZlciIp
fSkuYmluZCgibW91c2VsZWF2ZS5hY2NvcmRpb24iLGZ1bmN0aW9uKCl7YSh0
aGlzKS5yZW1vdmVDPQ0KbGFzcygidWktc3RhdGUtaG92ZXIiKX0pLmJpbmQo
ImZvY3VzLmFjY29yZGlvbiIsZnVuY3Rpb24oKXthKHRoaXMpLmFkZENsYT0N
CnNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSkuYmluZCgiYmx1ci5hY2NvcmRpb24i
LGZ1bmN0aW9uKCl7YSh0aGlzKS5yZW1vdmVDbGE9DQpzcygidWktc3RhdGUt
Zm9jdXMiKX0pO3RoaXMuaGVhZGVycy5uZXh0KCkuYWRkQ2xhc3MoInVpLWFj
Y29yZGlvbi1jb250ZW50PQ0KIHVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQt
Y29udGVudCA9DQp1aS1jb3JuZXItYm90dG9tIik7aWYoZC5uYXZpZ2F0aW9u
KXt2YXIgPQ0KYz0zRHRoaXMuZWxlbWVudC5maW5kKCJhIikuZmlsdGVyKGQu
bmF2aWdhdGlvbkZpbHRlcik7aWYoYy5sZW5ndGgpe3ZhciA9DQplPTNEYy5j
bG9zZXN0KCIudWktYWNjb3JkaW9uLWhlYWRlciIpO2lmKGUubGVuZ3RoKXt0
aGlzLmFjdGl2ZT0zRGV9ZWxzZXt0PQ0KaGlzLmFjdGl2ZT0zRGMuY2xvc2Vz
dCgiLnVpLWFjY29yZGlvbi1jb250ZW50IikucHJldigpfX19dGhpcy5hY3Rp
dmU9M0R0aD0NCmlzLl9maW5kQWN0aXZlKHRoaXMuYWN0aXZlfHxkLmFjdGl2
ZSkudG9nZ2xlQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQiKS50b2c9DQpnbGVD
bGFzcygidWktc3RhdGUtYWN0aXZlIikudG9nZ2xlQ2xhc3MoInVpLWNvcm5l
ci1hbGwiKS50b2dnbGVDbGFzcygidWktPQ0KY29ybmVyLXRvcCIpO3RoaXMu
YWN0aXZlLm5leHQoKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQt
YWN0aXZlIik7dD0NCmhpcy5fY3JlYXRlSWNvbnMoKTtpZihhLmJyb3dzZXIu
bXNpZSl7dGhpcy5lbGVtZW50LmZpbmQoImEiKS5jc3MoInpvb20iLCI9DQox
Iil9dGhpcy5yZXNpemUoKTt0aGlzLmVsZW1lbnQuYXR0cigicm9sZSIsInRh
Ymxpc3QiKTt0aGlzLmhlYWRlcnMuYXR0cigiPQ0Kcm9sZSIsInRhYiIpLmJp
bmQoImtleWRvd24iLGZ1bmN0aW9uKGYpe3JldHVybiA9DQpiLl9rZXlkb3du
KGYpfSkubmV4dCgpLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpO3RoaXMuaGVh
ZGVycy5ub3QodGhpcy5hY3RpPQ0KdmV8fCIiKS5hdHRyKCJhcmlhLWV4cGFu
ZGVkIiwiZmFsc2UiKS5hdHRyKCJ0YWJJbmRleCIsIi0xIikubmV4dCgpLmhp
ZGUoKT0NCjtpZighdGhpcy5hY3RpdmUubGVuZ3RoKXt0aGlzLmhlYWRlcnMu
ZXEoMCkuYXR0cigidGFiSW5kZXgiLCIwIil9ZWxzZXt0aGk9DQpzLmFjdGl2
ZS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLmF0dHIoInRhYkluZGV4
IiwiMCIpfWlmKCFhLmJyb3dzZXIuPQ0Kc2FmYXJpKXt0aGlzLmhlYWRlcnMu
ZmluZCgiYSIpLmF0dHIoInRhYkluZGV4IiwiLTEiKX1pZihkLmV2ZW50KXt0
aGlzLmhlYT0NCmRlcnMuYmluZCgoZC5ldmVudCkrIi5hY2NvcmRpb24iLGZ1
bmN0aW9uKGYpe2IuX2NsaWNrSGFuZGxlci5jYWxsKGIsZix0aGk9DQpzKTtm
LnByZXZlbnREZWZhdWx0KCl9KX19LF9jcmVhdGVJY29uczpmdW5jdGlvbigp
e3ZhciA9DQpiPTNEdGhpcy5vcHRpb25zO2lmKGIuaWNvbnMpe2EoIjxzcGFu
Lz4iKS5hZGRDbGFzcygidWktaWNvbiA9DQoiK2IuaWNvbnMuaGVhZGVyKS5w
cmVwZW5kVG8odGhpcy5oZWFkZXJzKTt0aGlzLmFjdGl2ZS5maW5kKCIudWkt
aWNvbiIpLnRvPQ0KZ2dsZUNsYXNzKGIuaWNvbnMuaGVhZGVyKS50b2dnbGVD
bGFzcyhiLmljb25zLmhlYWRlclNlbGVjdGVkKTt0aGlzLmVsZW1lbj0NCnQu
YWRkQ2xhc3MoInVpLWFjY29yZGlvbi1pY29ucyIpfX0sX2Rlc3Ryb3lJY29u
czpmdW5jdGlvbigpe3RoaXMuaGVhZGVycy49DQpjaGlsZHJlbigiLnVpLWlj
b24iKS5yZW1vdmUoKTt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWFj
Y29yZGlvbi1pY29uPQ0KcyIpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyID0N
CmM9M0R0aGlzLm9wdGlvbnM7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1
aS1hY2NvcmRpb24gdWktd2lkZ2V0ID0NCnVpLWhlbHBlci1yZXNldCIpLnJl
bW92ZUF0dHIoInJvbGUiKS51bmJpbmQoIi5hY2NvcmRpb24iKS5yZW1vdmVE
YXRhKCJhY2M9DQpvcmRpb24iKTt0aGlzLmhlYWRlcnMudW5iaW5kKCIuYWNj
b3JkaW9uIikucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkPQ0KZXIg
dWktaGVscGVyLXJlc2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFs
bCB1aS1zdGF0ZS1hY3RpdmUgPQ0KdWktY29ybmVyLXRvcCIpLnJlbW92ZUF0
dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3Zl
QXR0cj0NCigidGFiaW5kZXgiKTt0aGlzLmhlYWRlcnMuZmluZCgiYSIpLnJl
bW92ZUF0dHIoInRhYmluZGV4Iik7dGhpcy5fZGVzdHJveUk9DQpjb25zKCk7
dmFyID0NCmI9M0R0aGlzLmhlYWRlcnMubmV4dCgpLmNzcygiZGlzcGxheSIs
IiIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVDbGFzcyg9DQoidWktaGVs
cGVyLXJlc2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20g
dWktYWNjb3JkaW9uLWNvbnRlbnQgPQ0KdWktYWNjb3JkaW9uLWNvbnRlbnQt
YWN0aXZlIik7aWYoYy5hdXRvSGVpZ2h0fHxjLmZpbGxIZWlnaHQpe2IuY3Nz
KCJoZWlnaD0NCnQiLCIiKX1yZXR1cm4gPQ0KdGhpc30sX3NldE9wdGlvbjpm
dW5jdGlvbihiLGMpe2EuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFw
cGx5KHRoaXMsYT0NCnJndW1lbnRzKTtpZihiPTNEPTNEImFjdGl2ZSIpe3Ro
aXMuYWN0aXZhdGUoYyl9aWYoYj0zRD0zRCJpY29ucyIpe3RoaXMuX2Q9DQpl
c3Ryb3lJY29ucygpO2lmKGMpe3RoaXMuX2NyZWF0ZUljb25zKCl9fX0sX2tl
eWRvd246ZnVuY3Rpb24oZSl7dmFyID0NCmc9M0R0aGlzLm9wdGlvbnMsZj0z
RGEudWkua2V5Q29kZTtpZihnLmRpc2FibGVkfHxlLmFsdEtleXx8ZS5jdHJs
S2V5KXtyZXQ9DQp1cm59dmFyIGQ9M0R0aGlzLmhlYWRlcnMubGVuZ3RoO3Zh
ciBiPTNEdGhpcy5oZWFkZXJzLmluZGV4KGUudGFyZ2V0KTt2YXIgPQ0KYz0z
RGZhbHNlO3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgZi5SSUdIVDpjYXNlID0N
CmYuRE9XTjpjPTNEdGhpcy5oZWFkZXJzWyhiKzEpJWRdO2JyZWFrO2Nhc2Ug
Zi5MRUZUOmNhc2UgPQ0KZi5VUDpjPTNEdGhpcy5oZWFkZXJzWyhiLTErZCkl
ZF07YnJlYWs7Y2FzZSBmLlNQQUNFOmNhc2UgPQ0KZi5FTlRFUjp0aGlzLl9j
bGlja0hhbmRsZXIoe3RhcmdldDplLnRhcmdldH0sZS50YXJnZXQpO2UucHJl
dmVudERlZmF1bHQoKT0NCn1pZihjKXthKGUudGFyZ2V0KS5hdHRyKCJ0YWJJ
bmRleCIsIi0xIik7YShjKS5hdHRyKCJ0YWJJbmRleCIsIjAiKTtjLmZvY3U9
DQpzKCk7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfSxyZXNpemU6ZnVuY3Rp
b24oKXt2YXIgPQ0KZD0zRHRoaXMub3B0aW9ucyxjO2lmKGQuZmlsbFNwYWNl
KXtpZihhLmJyb3dzZXIubXNpZSl7dmFyID0NCmI9M0R0aGlzLmVsZW1lbnQu
cGFyZW50KCkuY3NzKCJvdmVyZmxvdyIpO3RoaXMuZWxlbWVudC5wYXJlbnQo
KS5jc3MoIm92ZXI9DQpmbG93IiwiaGlkZGVuIil9Yz0zRHRoaXMuZWxlbWVu
dC5wYXJlbnQoKS5oZWlnaHQoKTtpZihhLmJyb3dzZXIubXNpZSl7dGhpPQ0K
cy5lbGVtZW50LnBhcmVudCgpLmNzcygib3ZlcmZsb3ciLGIpfXRoaXMuaGVh
ZGVycy5lYWNoKGZ1bmN0aW9uKCl7Yy09M0RhKD0NCnRoaXMpLm91dGVySGVp
Z2h0KHRydWUpfSk7dGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9u
KCl7YSh0aGlzKS5oZWk9DQpnaHQoTWF0aC5tYXgoMCxjLWEodGhpcykuaW5u
ZXJIZWlnaHQoKSthKHRoaXMpLmhlaWdodCgpKSl9KS5jc3MoIm92ZXJmbG93
PQ0KIiwiYXV0byIpfWVsc2V7aWYoZC5hdXRvSGVpZ2h0KXtjPTNEMDt0aGlz
LmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKT0NCntjPTNETWF0aC5t
YXgoYyxhKHRoaXMpLmhlaWdodCgpKX0pLmhlaWdodChjKX19cmV0dXJuID0N
CnRoaXN9LGFjdGl2YXRlOmZ1bmN0aW9uKGIpe3RoaXMub3B0aW9ucy5hY3Rp
dmU9M0RiO3ZhciA9DQpjPTNEdGhpcy5fZmluZEFjdGl2ZShiKVswXTt0aGlz
Ll9jbGlja0hhbmRsZXIoe3RhcmdldDpjfSxjKTtyZXR1cm4gPQ0KdGhpc30s
X2ZpbmRBY3RpdmU6ZnVuY3Rpb24oYil7cmV0dXJuIGI/dHlwZW9mID0NCmI9
M0Q9M0QibnVtYmVyIj90aGlzLmhlYWRlcnMuZmlsdGVyKCI6ZXEoIitiKyIp
Iik6dGhpcy5oZWFkZXJzLm5vdCh0aGlzLmg9DQplYWRlcnMubm90KGIpKTpi
PTNEPTNEPTNEZmFsc2U/YShbXSk6dGhpcy5oZWFkZXJzLmZpbHRlcigiOmVx
KDApIil9LF9jbGljPQ0Ka0hhbmRsZXI6ZnVuY3Rpb24oYixmKXt2YXIgPQ0K
ZD0zRHRoaXMub3B0aW9ucztpZihkLmRpc2FibGVkKXtyZXR1cm59aWYoIWIu
dGFyZ2V0KXtpZighZC5jb2xsYXBzaWJsZSl7cj0NCmV0dXJufXRoaXMuYWN0
aXZlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUgPQ0KdWktY29ybmVy
LXRvcCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0ID0NCnVpLWNvcm5l
ci1hbGwiKS5maW5kKCIudWktaWNvbiIpLnJlbW92ZUNsYXNzKGQuaWNvbnMu
aGVhZGVyU2VsZWN0ZWQpLmFkZEM9DQpsYXNzKGQuaWNvbnMuaGVhZGVyKTt0
aGlzLmFjdGl2ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250
ZW50LWFjPQ0KdGl2ZSIpO3ZhciA9DQpoPTNEdGhpcy5hY3RpdmUubmV4dCgp
LGU9M0R7b3B0aW9uczpkLG5ld0hlYWRlcjphKFtdKSxvbGRIZWFkZXI6ZC5h
Y3RpdmUsPQ0KbmV3Q29udGVudDphKFtdKSxvbGRDb250ZW50Omh9LGM9M0Qo
dGhpcy5hY3RpdmU9M0RhKFtdKSk7dGhpcy5fdG9nZ2xlKGMsaD0NCixlKTty
ZXR1cm59dmFyIGc9M0RhKGIuY3VycmVudFRhcmdldHx8Zik7dmFyID0NCmk9
M0RnWzBdPTNEPTNEdGhpcy5hY3RpdmVbMF07ZC5hY3RpdmU9M0RkLmNvbGxh
cHNpYmxlJiZpP2ZhbHNlOmEoIi51aS1hY2M9DQpvcmRpb24taGVhZGVyIix0
aGlzLmVsZW1lbnQpLmluZGV4KGcpO2lmKHRoaXMucnVubmluZ3x8KCFkLmNv
bGxhcHNpYmxlJiZpPQ0KKSl7cmV0dXJufXRoaXMuYWN0aXZlLnJlbW92ZUNs
YXNzKCJ1aS1zdGF0ZS1hY3RpdmUgPQ0KdWktY29ybmVyLXRvcCIpLmFkZENs
YXNzKCJ1aS1zdGF0ZS1kZWZhdWx0ID0NCnVpLWNvcm5lci1hbGwiKS5maW5k
KCIudWktaWNvbiIpLnJlbW92ZUNsYXNzKGQuaWNvbnMuaGVhZGVyU2VsZWN0
ZWQpLmFkZEM9DQpsYXNzKGQuaWNvbnMuaGVhZGVyKTtpZighaSl7Zy5yZW1v
dmVDbGFzcygidWktc3RhdGUtZGVmYXVsdCA9DQp1aS1jb3JuZXItYWxsIiku
YWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSA9DQp1aS1jb3JuZXItdG9wIiku
ZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyhkLmljb25zLmhlYWRlciku
YWRkQ2xhc3MoZC5pPQ0KY29ucy5oZWFkZXJTZWxlY3RlZCk7Zy5uZXh0KCku
YWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpfXZhcj0N
CiA9DQpjPTNEZy5uZXh0KCksaD0zRHRoaXMuYWN0aXZlLm5leHQoKSxlPTNE
e29wdGlvbnM6ZCxuZXdIZWFkZXI6aSYmZC5jb2xsYXBzPQ0KaWJsZT9hKFtd
KTpnLG9sZEhlYWRlcjp0aGlzLmFjdGl2ZSxuZXdDb250ZW50OmkmJmQuY29s
bGFwc2libGU/YShbXSk6YyxvbD0NCmRDb250ZW50Omh9LGo9M0R0aGlzLmhl
YWRlcnMuaW5kZXgodGhpcy5hY3RpdmVbMF0pPnRoaXMuaGVhZGVycy5pbmRl
eChnWzA9DQpdKTt0aGlzLmFjdGl2ZT0zRGk/YShbXSk6Zzt0aGlzLl90b2dn
bGUoYyxoLGUsaSxqKTtyZXR1cm59LF90b2dnbGU6ZnVuY3RpPQ0Kb24oYixp
LGcsaixrKXt2YXIgPQ0KZD0zRHRoaXMub3B0aW9ucyxtPTNEdGhpczt0aGlz
LnRvU2hvdz0zRGI7dGhpcy50b0hpZGU9M0RpO3RoaXMuZGF0YT0zRGc7dj0N
CmFyIGM9M0RmdW5jdGlvbigpe2lmKCFtKXtyZXR1cm59cmV0dXJuID0NCm0u
X2NvbXBsZXRlZC5hcHBseShtLGFyZ3VtZW50cyl9O3RoaXMuX3RyaWdnZXIo
ImNoYW5nZXN0YXJ0IixudWxsLHRoaXMuZGE9DQp0YSk7dGhpcy5ydW5uaW5n
PTNEaS5zaXplKCk9M0Q9M0Q9M0QwP2Iuc2l6ZSgpOmkuc2l6ZSgpO2lmKGQu
YW5pbWF0ZWQpe3ZhPQ0KciA9DQpmPTNEe307aWYoZC5jb2xsYXBzaWJsZSYm
ail7Zj0zRHt0b1Nob3c6YShbXSksdG9IaWRlOmksY29tcGxldGU6Yyxkb3du
OmssPQ0KYXV0b0hlaWdodDpkLmF1dG9IZWlnaHR8fGQuZmlsbFNwYWNlfX1l
bHNle2Y9M0R7dG9TaG93OmIsdG9IaWRlOmksY29tcGxldD0NCmU6Yyxkb3du
OmssYXV0b0hlaWdodDpkLmF1dG9IZWlnaHR8fGQuZmlsbFNwYWNlfX1pZigh
ZC5wcm94aWVkKXtkLnByb3hpZWQ9DQo9M0RkLmFuaW1hdGVkfWlmKCFkLnBy
b3hpZWREdXJhdGlvbil7ZC5wcm94aWVkRHVyYXRpb249M0RkLmR1cmF0aW9u
fWQuYW5pPQ0KbWF0ZWQ9M0RhLmlzRnVuY3Rpb24oZC5wcm94aWVkKT9kLnBy
b3hpZWQoZik6ZC5wcm94aWVkO2QuZHVyYXRpb249M0RhLmlzRj0NCnVuY3Rp
b24oZC5wcm94aWVkRHVyYXRpb24pP2QucHJveGllZER1cmF0aW9uKGYpOmQu
cHJveGllZER1cmF0aW9uO3ZhciA9DQpsPTNEYS51aS5hY2NvcmRpb24uYW5p
bWF0aW9ucyxlPTNEZC5kdXJhdGlvbixoPTNEZC5hbmltYXRlZDtpZihoJiYh
bFtoXSYmPQ0KIWEuZWFzaW5nW2hdKXtoPTNEInNsaWRlIn1pZighbFtoXSl7
bFtoXT0zRGZ1bmN0aW9uKG4pe3RoaXMuc2xpZGUobix7ZWFzaT0NCm5nOmgs
ZHVyYXRpb246ZXx8NzAwfSl9fWxbaF0oZil9ZWxzZXtpZihkLmNvbGxhcHNp
YmxlJiZqKXtiLnRvZ2dsZSgpfWVsc2U9DQp7aS5oaWRlKCk7Yi5zaG93KCl9
Yyh0cnVlKX1pLnByZXYoKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwiZmFsc2Ui
KS5hdHRyKCJ0PQ0KYWJJbmRleCIsIi0xIikuYmx1cigpO2IucHJldigpLmF0
dHIoImFyaWEtZXhwYW5kZWQiLCJ0cnVlIikuYXR0cigidGFiSW5kZT0NCngi
LCIwIikuZm9jdXMoKX0sX2NvbXBsZXRlZDpmdW5jdGlvbihiKXt2YXIgPQ0K
Yz0zRHRoaXMub3B0aW9uczt0aGlzLnJ1bm5pbmc9M0RiPzA6LS10aGlzLnJ1
bm5pbmc7aWYodGhpcy5ydW5uaW5nKXtyZXR1cj0NCm59aWYoYy5jbGVhclN0
eWxlKXt0aGlzLnRvU2hvdy5hZGQodGhpcy50b0hpZGUpLmNzcyh7aGVpZ2h0
OiIiLG92ZXJmbG93OiI9DQoifSl9dGhpcy50b0hpZGUucmVtb3ZlQ2xhc3Mo
InVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpO3RoaXMuX3RyaWdnZXIo
PQ0KImNoYW5nZSIsbnVsbCx0aGlzLmRhdGEpfX0pO2EuZXh0ZW5kKGEudWku
YWNjb3JkaW9uLHt2ZXJzaW9uOiIxLjgiLGFuaW1hdD0NCmlvbnM6e3NsaWRl
OmZ1bmN0aW9uKGosaCl7aj0zRGEuZXh0ZW5kKHtlYXNpbmc6InN3aW5nIixk
dXJhdGlvbjozMDB9LGosaCk9DQo7aWYoIWoudG9IaWRlLnNpemUoKSl7ai50
b1Nob3cuYW5pbWF0ZSh7aGVpZ2h0OiJzaG93In0saik7cmV0dXJufWlmKCFq
LnRvPQ0KU2hvdy5zaXplKCkpe2oudG9IaWRlLmFuaW1hdGUoe2hlaWdodDoi
aGlkZSJ9LGopO3JldHVybn12YXIgPQ0KYz0zRGoudG9TaG93LmNzcygib3Zl
cmZsb3ciKSxnPTNEMCxkPTNEe30sZj0zRHt9LGU9M0RbImhlaWdodCIsInBh
ZGRpbmdUbz0NCnAiLCJwYWRkaW5nQm90dG9tIl0sYjt2YXIgPQ0KaT0zRGou
dG9TaG93O2I9M0RpWzBdLnN0eWxlLndpZHRoO2kud2lkdGgocGFyc2VJbnQo
aS5wYXJlbnQoKS53aWR0aCgpLDEwKT0NCi1wYXJzZUludChpLmNzcygicGFk
ZGluZ0xlZnQiKSwxMCktcGFyc2VJbnQoaS5jc3MoInBhZGRpbmdSaWdodCIp
LDEwKS0ocGE9DQpyc2VJbnQoaS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEw
KXx8MCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJSaWdodFdpZHRoPQ0KIiks
MTApfHwwKSk7YS5lYWNoKGUsZnVuY3Rpb24oayxtKXtmW21dPTNEImhpZGUi
O3ZhciA9DQpsPTNEKCIiK2EuY3NzKGoudG9TaG93WzBdLG0pKS5tYXRjaCgv
XihbXGQrLS5dKykoLiopJC8pO2RbbV09M0R7dmFsdWU6bFsxPQ0KXSx1bml0
OmxbMl18fCJweCJ9fSk7ai50b1Nob3cuY3NzKHtoZWlnaHQ6MCxvdmVyZmxv
dzoiaGlkZGVuIn0pLnNob3coKTtqLj0NCnRvSGlkZS5maWx0ZXIoIjpoaWRk
ZW4iKS5lYWNoKGouY29tcGxldGUpLmVuZCgpLmZpbHRlcigiOnZpc2libGUi
KS5hbmltYXQ9DQplKGYse3N0ZXA6ZnVuY3Rpb24oayxsKXtpZihsLnByb3A9
M0Q9M0QiaGVpZ2h0Iil7Zz0zRChsLmVuZC1sLnN0YXJ0PTNEPTNEPQ0KPTNE
MCk/MDoobC5ub3ctbC5zdGFydCkvKGwuZW5kLWwuc3RhcnQpfWoudG9TaG93
WzBdLnN0eWxlW2wucHJvcF09M0QoZypkWz0NCmwucHJvcF0udmFsdWUpK2Rb
bC5wcm9wXS51bml0fSxkdXJhdGlvbjpqLmR1cmF0aW9uLGVhc2luZzpqLmVh
c2luZyxjb21wbGU9DQp0ZTpmdW5jdGlvbigpe2lmKCFqLmF1dG9IZWlnaHQp
e2oudG9TaG93LmNzcygiaGVpZ2h0IiwiIil9ai50b1Nob3cuY3NzKCJ3PQ0K
aWR0aCIsYik7ai50b1Nob3cuY3NzKHtvdmVyZmxvdzpjfSk7ai5jb21wbGV0
ZSgpfX0pfSxib3VuY2VzbGlkZTpmdW5jdGlvbj0NCihiKXt0aGlzLnNsaWRl
KGIse2Vhc2luZzpiLmRvd24/ImVhc2VPdXRCb3VuY2UiOiJzd2luZyIsZHVy
YXRpb246Yi5kb3duPzE9DQowMDA6MjAwfSl9fX0pfSkoalF1ZXJ5KTs7LyoN
CiAqIGpRdWVyeSBVSSBUYWJzIDEuOA0KICoNCiAqIENvcHlyaWdodCAoYykg
MjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkN
CiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0Uu
dHh0KQ0KICogYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4N
CiAqDQogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1RhYnMNCiAqDQog
KiBEZXBlbmRzOg0KICoJanF1ZXJ5LnVpLmNvcmUuanMNCiAqCWpxdWVyeS51
aS53aWRnZXQuanMNCiAqLw0KKGZ1bmN0aW9uKGMpe3ZhciA9DQpiPTNEMCxh
PTNEMDtjLndpZGdldCgidWkudGFicyIse29wdGlvbnM6e2FkZDpudWxsLGFq
YXhPcHRpb25zOm51bGwsY2FjaGU6PQ0KZmFsc2UsY29va2llOm51bGwsY29s
bGFwc2libGU6ZmFsc2UsZGlzYWJsZTpudWxsLGRpc2FibGVkOltdLGVuYWJs
ZTpudWxsLD0NCmV2ZW50OiJjbGljayIsZng6bnVsbCxpZFByZWZpeDoidWkt
dGFicy0iLGxvYWQ6bnVsbCxwYW5lbFRlbXBsYXRlOiI8ZGl2Pjw9DQovZGl2
PiIscmVtb3ZlOm51bGwsc2VsZWN0Om51bGwsc2hvdzpudWxsLHNwaW5uZXI6
IjxlbT5Mb2FkaW5nJiM4MjMwOzwvZW0+PQ0KIix0YWJUZW1wbGF0ZTonPGxp
PjxhID0NCmhyZWY9M0QiI3tocmVmfSI+PHNwYW4+I3tsYWJlbH08L3NwYW4+
PC9hPjwvbGk+J30sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXM9DQouX3RhYmlm
eSh0cnVlKX0sX3NldE9wdGlvbjpmdW5jdGlvbihkLGUpe2lmKGQ9M0Q9M0Qi
c2VsZWN0ZWQiKXtpZih0aGlzLm9wPQ0KdGlvbnMuY29sbGFwc2libGUmJmU9
M0Q9M0R0aGlzLm9wdGlvbnMuc2VsZWN0ZWQpe3JldHVybn10aGlzLnNlbGVj
dChlKX1lbD0NCnNle3RoaXMub3B0aW9uc1tkXT0zRGU7dGhpcy5fdGFiaWZ5
KCl9fSxfdGFiSWQ6ZnVuY3Rpb24oZCl7cmV0dXJuID0NCmQudGl0bGUmJmQu
dGl0bGUucmVwbGFjZSgvXHMvZywiXyIpLnJlcGxhY2UoL1teQS1aYS16MC05
XC1fOlwuXS9nLCIiKXx8dGg9DQppcy5vcHRpb25zLmlkUHJlZml4KygrK2Ip
fSxfc2FuaXRpemVTZWxlY3RvcjpmdW5jdGlvbihkKXtyZXR1cm4gPQ0KZC5y
ZXBsYWNlKC86L2csIlxcOiIpfSxfY29va2llOmZ1bmN0aW9uKCl7dmFyID0N
CmQ9M0R0aGlzLmNvb2tpZXx8KHRoaXMuY29va2llPTNEdGhpcy5vcHRpb25z
LmNvb2tpZS5uYW1lfHwidWktdGFicy0iKygrK2E9DQopKTtyZXR1cm4gPQ0K
Yy5jb29raWUuYXBwbHkobnVsbCxbZF0uY29uY2F0KGMubWFrZUFycmF5KGFy
Z3VtZW50cykpKX0sX3VpOmZ1bmN0aW9uKGUsZD0NCil7cmV0dXJue3RhYjpl
LHBhbmVsOmQsaW5kZXg6dGhpcy5hbmNob3JzLmluZGV4KGUpfX0sX2NsZWFu
dXA6ZnVuY3Rpb24oKXs9DQp0aGlzLmxpcy5maWx0ZXIoIi51aS1zdGF0ZS1w
cm9jZXNzaW5nIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLXByb2Nlc3Npbmci
PQ0KKS5maW5kKCJzcGFuOmRhdGEobGFiZWwudGFicykiKS5lYWNoKGZ1bmN0
aW9uKCl7dmFyID0NCmQ9M0RjKHRoaXMpO2QuaHRtbChkLmRhdGEoImxhYmVs
LnRhYnMiKSkucmVtb3ZlRGF0YSgibGFiZWwudGFicyIpfSl9LF90YWI9DQpp
Znk6ZnVuY3Rpb24ocSl7dGhpcy5saXN0PTNEdGhpcy5lbGVtZW50LmZpbmQo
Im9sLHVsIikuZXEoMCk7dGhpcy5saXM9M0RjPQ0KKCJsaTpoYXMoYVtocmVm
XSkiLHRoaXMubGlzdCk7dGhpcy5hbmNob3JzPTNEdGhpcy5saXMubWFwKGZ1
bmN0aW9uKCl7cmV0dT0NCnJuIGMoImEiLHRoaXMpWzBdfSk7dGhpcy5wYW5l
bHM9M0RjKFtdKTt2YXIgPQ0Kcj0zRHRoaXMsZj0zRHRoaXMub3B0aW9uczt2
YXIgPQ0KZT0zRC9eIy4rLzt0aGlzLmFuY2hvcnMuZWFjaChmdW5jdGlvbih1
LG8pe3ZhciBzPTNEYyhvKS5hdHRyKCJocmVmIik7dmFyID0NCnY9M0RzLnNw
bGl0KCIjIilbMF0sdztpZih2JiYodj0zRD0zRD0zRGxvY2F0aW9uLnRvU3Ry
aW5nKCkuc3BsaXQoIiMiKVswXXw9DQp8KHc9M0RjKCJiYXNlIilbMF0pJiZ2
PTNEPTNEPTNEdy5ocmVmKSl7cz0zRG8uaGFzaDtvLmhyZWY9M0RzfWlmKGUu
dGVzdChzPQ0KKSl7ci5wYW5lbHM9M0RyLnBhbmVscy5hZGQoci5fc2FuaXRp
emVTZWxlY3RvcihzKSl9ZWxzZXtpZihzIT0zRCIjIil7Yy5kYT0NCnRhKG8s
ImhyZWYudGFicyIscyk7Yy5kYXRhKG8sImxvYWQudGFicyIscy5yZXBsYWNl
KC8jLiokLywiIikpO3ZhciA9DQp5PTNEci5fdGFiSWQobyk7by5ocmVmPTNE
IiMiK3k7dmFyID0NCng9M0RjKCIjIit5KTtpZigheC5sZW5ndGgpe3g9M0Rj
KGYucGFuZWxUZW1wbGF0ZSkuYXR0cigiaWQiLHkpLmFkZENsYXNzKCI9DQp1
aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50ID0NCnVpLWNvcm5lci1i
b3R0b20iKS5pbnNlcnRBZnRlcihyLnBhbmVsc1t1LTFdfHxyLmxpc3QpO3gu
ZGF0YSgiZGVzdHJveS50YWI9DQpzIix0cnVlKX1yLnBhbmVscz0zRHIucGFu
ZWxzLmFkZCh4KX1lbHNle2YuZGlzYWJsZWQucHVzaCh1KX19fSk7aWYocSl7
dGhpPQ0Kcy5lbGVtZW50LmFkZENsYXNzKCJ1aS10YWJzIHVpLXdpZGdldCB1
aS13aWRnZXQtY29udGVudCA9DQp1aS1jb3JuZXItYWxsIik7dGhpcy5saXN0
LmFkZENsYXNzKCJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgPQ0KdWkt
aGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgPQ0KdWktY29ybmVy
LWFsbCIpO3RoaXMubGlzLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0ID0N
CnVpLWNvcm5lci10b3AiKTt0aGlzLnBhbmVscy5hZGRDbGFzcygidWktdGFi
cy1wYW5lbCB1aS13aWRnZXQtY29udGVudCA9DQp1aS1jb3JuZXItYm90dG9t
Iik7aWYoZi5zZWxlY3RlZD0zRD0zRD0zRHVuZGVmaW5lZCl7aWYobG9jYXRp
b24uaGFzaCl7dGhpPQ0Kcy5hbmNob3JzLmVhY2goZnVuY3Rpb24ocyxvKXtp
ZihvLmhhc2g9M0Q9M0Rsb2NhdGlvbi5oYXNoKXtmLnNlbGVjdGVkPTNEcz0N
CjtyZXR1cm4gZmFsc2V9fSl9aWYodHlwZW9mID0NCmYuc2VsZWN0ZWQhPTNE
Im51bWJlciImJmYuY29va2llKXtmLnNlbGVjdGVkPTNEcGFyc2VJbnQoci5f
Y29va2llKCksMTApfWk9DQpmKHR5cGVvZiA9DQpmLnNlbGVjdGVkIT0zRCJu
dW1iZXIiJiZ0aGlzLmxpcy5maWx0ZXIoIi51aS10YWJzLXNlbGVjdGVkIiku
bGVuZ3RoKXtmLnNlPQ0KbGVjdGVkPTNEdGhpcy5saXMuaW5kZXgodGhpcy5s
aXMuZmlsdGVyKCIudWktdGFicy1zZWxlY3RlZCIpKX1mLnNlbGVjdGVkPTNE
PQ0KZi5zZWxlY3RlZHx8KHRoaXMubGlzLmxlbmd0aD8wOi0xKX1lbHNle2lm
KGYuc2VsZWN0ZWQ9M0Q9M0Q9M0RudWxsKXtmLnNlbD0NCmVjdGVkPTNELTF9
fWYuc2VsZWN0ZWQ9M0QoKGYuc2VsZWN0ZWQ+PTNEMCYmdGhpcy5hbmNob3Jz
W2Yuc2VsZWN0ZWRdKXx8Zi49DQpzZWxlY3RlZDwwKT9mLnNlbGVjdGVkOjA7
Zi5kaXNhYmxlZD0zRGMudW5pcXVlKGYuZGlzYWJsZWQuY29uY2F0KGMubWFw
KHRoPQ0KaXMubGlzLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIiksZnVu
Y3Rpb24ocyxvKXtyZXR1cm4gPQ0Kci5saXMuaW5kZXgocyl9KSkpLnNvcnQo
KTtpZihjLmluQXJyYXkoZi5zZWxlY3RlZCxmLmRpc2FibGVkKSE9M0QtMSl7
Zi5kaT0NCnNhYmxlZC5zcGxpY2UoYy5pbkFycmF5KGYuc2VsZWN0ZWQsZi5k
aXNhYmxlZCksMSl9dGhpcy5wYW5lbHMuYWRkQ2xhc3MoInU9DQppLXRhYnMt
aGlkZSIpO3RoaXMubGlzLnJlbW92ZUNsYXNzKCJ1aS10YWJzLXNlbGVjdGVk
ID0NCnVpLXN0YXRlLWFjdGl2ZSIpO2lmKGYuc2VsZWN0ZWQ+PTNEMCYmdGhp
cy5hbmNob3JzLmxlbmd0aCl7dGhpcy5wYW5lbHMuZXE9DQooZi5zZWxlY3Rl
ZCkucmVtb3ZlQ2xhc3MoInVpLXRhYnMtaGlkZSIpO3RoaXMubGlzLmVxKGYu
c2VsZWN0ZWQpLmFkZENsYXNzPQ0KKCJ1aS10YWJzLXNlbGVjdGVkID0NCnVp
LXN0YXRlLWFjdGl2ZSIpO3IuZWxlbWVudC5xdWV1ZSgidGFicyIsZnVuY3Rp
b24oKXtyLl90cmlnZ2VyKCJzaG93IixudWw9DQpsLHIuX3VpKHIuYW5jaG9y
c1tmLnNlbGVjdGVkXSxyLnBhbmVsc1tmLnNlbGVjdGVkXSkpfSk7dGhpcy5s
b2FkKGYuc2VsZWN0PQ0KZWQpfWMod2luZG93KS5iaW5kKCJ1bmxvYWQiLGZ1
bmN0aW9uKCl7ci5saXMuYWRkKHIuYW5jaG9ycykudW5iaW5kKCIudGFicz0N
CiIpO3IubGlzPTNEci5hbmNob3JzPTNEci5wYW5lbHM9M0RudWxsfSl9ZWxz
ZXtmLnNlbGVjdGVkPTNEdGhpcy5saXMuaW5kZXg9DQoodGhpcy5saXMuZmls
dGVyKCIudWktdGFicy1zZWxlY3RlZCIpKX10aGlzLmVsZW1lbnRbZi5jb2xs
YXBzaWJsZT8iYWRkQ2xhPQ0Kc3MiOiJyZW1vdmVDbGFzcyJdKCJ1aS10YWJz
LWNvbGxhcHNpYmxlIik7aWYoZi5jb29raWUpe3RoaXMuX2Nvb2tpZShmLnNl
bD0NCmVjdGVkLGYuY29va2llKX1mb3IodmFyID0NCmo9M0QwLHA7KHA9M0R0
aGlzLmxpc1tqXSk7aisrKXtjKHApW2MuaW5BcnJheShqLGYuZGlzYWJsZWQp
IT0zRC0xJiYhYyhwKS49DQpoYXNDbGFzcygidWktdGFicy1zZWxlY3RlZCIp
PyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oInVpLXN0YXRlLWRpc2FibGVk
PQ0KIil9aWYoZi5jYWNoZT0zRD0zRD0zRGZhbHNlKXt0aGlzLmFuY2hvcnMu
cmVtb3ZlRGF0YSgiY2FjaGUudGFicyIpfXRoaXMubD0NCmlzLmFkZCh0aGlz
LmFuY2hvcnMpLnVuYmluZCgiLnRhYnMiKTtpZihmLmV2ZW50IT0zRCJtb3Vz
ZW92ZXIiKXt2YXIgPQ0KaD0zRGZ1bmN0aW9uKG8saSl7aWYoaS5pcygiOm5v
dCgudWktc3RhdGUtZGlzYWJsZWQpIikpe2kuYWRkQ2xhc3MoInVpLXN0YT0N
CnRlLSIrbyl9fTt2YXIgPQ0KbD0zRGZ1bmN0aW9uKG8saSl7aS5yZW1vdmVD
bGFzcygidWktc3RhdGUtIitvKX07dGhpcy5saXMuYmluZCgibW91c2VvdmVy
Lj0NCnRhYnMiLGZ1bmN0aW9uKCl7aCgiaG92ZXIiLGModGhpcykpfSk7dGhp
cy5saXMuYmluZCgibW91c2VvdXQudGFicyIsZnVuY3Q9DQppb24oKXtsKCJo
b3ZlciIsYyh0aGlzKSl9KTt0aGlzLmFuY2hvcnMuYmluZCgiZm9jdXMudGFi
cyIsZnVuY3Rpb24oKXtoKCJmPQ0Kb2N1cyIsYyh0aGlzKS5jbG9zZXN0KCJs
aSIpKX0pO3RoaXMuYW5jaG9ycy5iaW5kKCJibHVyLnRhYnMiLGZ1bmN0aW9u
KCl7bD0NCigiZm9jdXMiLGModGhpcykuY2xvc2VzdCgibGkiKSl9KX12YXIg
PQ0KZCxrO2lmKGYuZngpe2lmKGMuaXNBcnJheShmLmZ4KSl7ZD0zRGYuZnhb
MF07az0zRGYuZnhbMV19ZWxzZXtkPTNEaz0zRGYuZj0NCnh9fWZ1bmN0aW9u
ID0NCmcoaSxvKXtpLmNzcyh7ZGlzcGxheToiIn0pO2lmKCFjLnN1cHBvcnQu
b3BhY2l0eSYmby5vcGFjaXR5KXtpWzBdLnN0eWxlLnI9DQplbW92ZUF0dHJp
YnV0ZSgiZmlsdGVyIil9fXZhciA9DQptPTNEaz9mdW5jdGlvbihpLG8pe2Mo
aSkuY2xvc2VzdCgibGkiKS5hZGRDbGFzcygidWktdGFicy1zZWxlY3RlZCA9
DQp1aS1zdGF0ZS1hY3RpdmUiKTtvLmhpZGUoKS5yZW1vdmVDbGFzcygidWkt
dGFicy1oaWRlIikuYW5pbWF0ZShrLGsuZHVyYXRpPQ0Kb258fCJub3JtYWwi
LGZ1bmN0aW9uKCl7ZyhvLGspO3IuX3RyaWdnZXIoInNob3ciLG51bGwsci5f
dWkoaSxvWzBdKSl9KX06Zj0NCnVuY3Rpb24oaSxvKXtjKGkpLmNsb3Nlc3Qo
ImxpIikuYWRkQ2xhc3MoInVpLXRhYnMtc2VsZWN0ZWQgPQ0KdWktc3RhdGUt
YWN0aXZlIik7by5yZW1vdmVDbGFzcygidWktdGFicy1oaWRlIik7ci5fdHJp
Z2dlcigic2hvdyIsbnVsbCxyLj0NCl91aShpLG9bMF0pKX07dmFyID0NCm49
M0RkP2Z1bmN0aW9uKG8saSl7aS5hbmltYXRlKGQsZC5kdXJhdGlvbnx8Im5v
cm1hbCIsZnVuY3Rpb24oKXtyLmxpcy5yZW09DQpvdmVDbGFzcygidWktdGFi
cy1zZWxlY3RlZCA9DQp1aS1zdGF0ZS1hY3RpdmUiKTtpLmFkZENsYXNzKCJ1
aS10YWJzLWhpZGUiKTtnKGksZCk7ci5lbGVtZW50LmRlcXVldWUoInRhPQ0K
YnMiKX0pfTpmdW5jdGlvbihvLGkscyl7ci5saXMucmVtb3ZlQ2xhc3MoInVp
LXRhYnMtc2VsZWN0ZWQgPQ0KdWktc3RhdGUtYWN0aXZlIik7aS5hZGRDbGFz
cygidWktdGFicy1oaWRlIik7ci5lbGVtZW50LmRlcXVldWUoInRhYnMiKX07
dD0NCmhpcy5hbmNob3JzLmJpbmQoZi5ldmVudCsiLnRhYnMiLGZ1bmN0aW9u
KCl7dmFyID0NCm89M0R0aGlzLHU9M0RjKHRoaXMpLmNsb3Nlc3QoImxpIiks
aT0zRHIucGFuZWxzLmZpbHRlcigiOm5vdCgudWktdGFicy1oaWQ9DQplKSIp
LHM9M0RjKHIuX3Nhbml0aXplU2VsZWN0b3IodGhpcy5oYXNoKSk7aWYoKHUu
aGFzQ2xhc3MoInVpLXRhYnMtc2VsZWN0PQ0KZWQiKSYmIWYuY29sbGFwc2li
bGUpfHx1Lmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpfHx1Lmhhc0Ns
YXNzKCJ1aS1zdD0NCmF0ZS1wcm9jZXNzaW5nIil8fHIuX3RyaWdnZXIoInNl
bGVjdCIsbnVsbCxyLl91aSh0aGlzLHNbMF0pKT0zRD0zRD0zRGZhbHM9DQpl
KXt0aGlzLmJsdXIoKTtyZXR1cm4gPQ0KZmFsc2V9Zi5zZWxlY3RlZD0zRHIu
YW5jaG9ycy5pbmRleCh0aGlzKTtyLmFib3J0KCk7aWYoZi5jb2xsYXBzaWJs
ZSl7aWYodT0NCi5oYXNDbGFzcygidWktdGFicy1zZWxlY3RlZCIpKXtmLnNl
bGVjdGVkPTNELTE7aWYoZi5jb29raWUpe3IuX2Nvb2tpZShmLnM9DQplbGVj
dGVkLGYuY29va2llKX1yLmVsZW1lbnQucXVldWUoInRhYnMiLGZ1bmN0aW9u
KCl7bihvLGkpfSkuZGVxdWV1ZSgidGFiPQ0KcyIpO3RoaXMuYmx1cigpO3Jl
dHVybiA9DQpmYWxzZX1lbHNle2lmKCFpLmxlbmd0aCl7aWYoZi5jb29raWUp
e3IuX2Nvb2tpZShmLnNlbGVjdGVkLGYuY29va2llKX1yLmVsPQ0KZW1lbnQu
cXVldWUoInRhYnMiLGZ1bmN0aW9uKCl7bShvLHMpfSk7ci5sb2FkKHIuYW5j
aG9ycy5pbmRleCh0aGlzKSk7dGhpcz0NCi5ibHVyKCk7cmV0dXJuID0NCmZh
bHNlfX19aWYoZi5jb29raWUpe3IuX2Nvb2tpZShmLnNlbGVjdGVkLGYuY29v
a2llKX1pZihzLmxlbmd0aCl7aWYoaS5sZW49DQpndGgpe3IuZWxlbWVudC5x
dWV1ZSgidGFicyIsZnVuY3Rpb24oKXtuKG8saSl9KX1yLmVsZW1lbnQucXVl
dWUoInRhYnMiLGZ1PQ0KbmN0aW9uKCl7bShvLHMpfSk7ci5sb2FkKHIuYW5j
aG9ycy5pbmRleCh0aGlzKSl9ZWxzZXt0aHJvdyJqUXVlcnkgVUkgPQ0KVGFi
czogTWlzbWF0Y2hpbmcgZnJhZ21lbnQgPQ0KaWRlbnRpZmllci4ifWlmKGMu
YnJvd3Nlci5tc2llKXt0aGlzLmJsdXIoKX19KTt0aGlzLmFuY2hvcnMuYmlu
ZCgiY2xpY2sudD0NCmFicyIsZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9KX0s
ZGVzdHJveTpmdW5jdGlvbigpe3ZhciA9DQpkPTNEdGhpcy5vcHRpb25zO3Ro
aXMuYWJvcnQoKTt0aGlzLmVsZW1lbnQudW5iaW5kKCIudGFicyIpLnJlbW92
ZUNsYXNzKCJ1PQ0KaS10YWJzIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVu
dCB1aS1jb3JuZXItYWxsID0NCnVpLXRhYnMtY29sbGFwc2libGUiKS5yZW1v
dmVEYXRhKCJ0YWJzIik7dGhpcy5saXN0LnJlbW92ZUNsYXNzKCJ1aS10YWJz
LW49DQphdiB1aS1oZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVp
LXdpZGdldC1oZWFkZXIgPQ0KdWktY29ybmVyLWFsbCIpO3RoaXMuYW5jaG9y
cy5lYWNoKGZ1bmN0aW9uKCl7dmFyID0NCmU9M0RjLmRhdGEodGhpcywiaHJl
Zi50YWJzIik7aWYoZSl7dGhpcy5ocmVmPTNEZX12YXIgPQ0KZj0zRGModGhp
cykudW5iaW5kKCIudGFicyIpO2MuZWFjaChbImhyZWYiLCJsb2FkIiwiY2Fj
aGUiXSxmdW5jdGlvbihnLGgpez0NCmYucmVtb3ZlRGF0YShoKyIudGFicyIp
fSl9KTt0aGlzLmxpcy51bmJpbmQoIi50YWJzIikuYWRkKHRoaXMucGFuZWxz
KS5lYWM9DQpoKGZ1bmN0aW9uKCl7aWYoYy5kYXRhKHRoaXMsImRlc3Ryb3ku
dGFicyIpKXtjKHRoaXMpLnJlbW92ZSgpfWVsc2V7Yyh0aGlzPQ0KKS5yZW1v
dmVDbGFzcyhbInVpLXN0YXRlLWRlZmF1bHQiLCJ1aS1jb3JuZXItdG9wIiwi
dWktdGFicy1zZWxlY3RlZCIsInVpLT0NCnN0YXRlLWFjdGl2ZSIsInVpLXN0
YXRlLWhvdmVyIiwidWktc3RhdGUtZm9jdXMiLCJ1aS1zdGF0ZS1kaXNhYmxl
ZCIsInVpLXQ9DQphYnMtcGFuZWwiLCJ1aS13aWRnZXQtY29udGVudCIsInVp
LWNvcm5lci1ib3R0b20iLCJ1aS10YWJzLWhpZGUiXS5qb2luKCIgPQ0KIikp
fX0pO2lmKGQuY29va2llKXt0aGlzLl9jb29raWUobnVsbCxkLmNvb2tpZSl9
cmV0dXJuID0NCnRoaXN9LGFkZDpmdW5jdGlvbihnLGYsZSl7aWYoZT0zRD0z
RD0zRHVuZGVmaW5lZCl7ZT0zRHRoaXMuYW5jaG9ycy5sZW5ndGg9DQp9dmFy
ID0NCmQ9M0R0aGlzLGk9M0R0aGlzLm9wdGlvbnMsaz0zRGMoaS50YWJUZW1w
bGF0ZS5yZXBsYWNlKC8jXHtocmVmXH0vZyxnKS5yZXA9DQpsYWNlKC8jXHts
YWJlbFx9L2csZikpLGo9M0QhZy5pbmRleE9mKCIjIik/Zy5yZXBsYWNlKCIj
IiwiIik6dGhpcy5fdGFiSWQoPQ0KYygiYSIsaylbMF0pO2suYWRkQ2xhc3Mo
InVpLXN0YXRlLWRlZmF1bHQgPQ0KdWktY29ybmVyLXRvcCIpLmRhdGEoImRl
c3Ryb3kudGFicyIsdHJ1ZSk7dmFyID0NCmg9M0RjKCIjIitqKTtpZighaC5s
ZW5ndGgpe2g9M0RjKGkucGFuZWxUZW1wbGF0ZSkuYXR0cigiaWQiLGopLmRh
dGEoImRlc3Q9DQpyb3kudGFicyIsdHJ1ZSl9aC5hZGRDbGFzcygidWktdGFi
cy1wYW5lbCB1aS13aWRnZXQtY29udGVudCA9DQp1aS1jb3JuZXItYm90dG9t
ID0NCnVpLXRhYnMtaGlkZSIpO2lmKGU+PTNEdGhpcy5saXMubGVuZ3RoKXtr
LmFwcGVuZFRvKHRoaXMubGlzdCk7aC5hcHBlbmRUbyg9DQp0aGlzLmxpc3Rb
MF0ucGFyZW50Tm9kZSl9ZWxzZXtrLmluc2VydEJlZm9yZSh0aGlzLmxpc1tl
XSk7aC5pbnNlcnRCZWZvcmUoPQ0KdGhpcy5wYW5lbHNbZV0pfWkuZGlzYWJs
ZWQ9M0RjLm1hcChpLmRpc2FibGVkLGZ1bmN0aW9uKG0sbCl7cmV0dXJuID0N
Cm0+PTNEZT8rK206bX0pO3RoaXMuX3RhYmlmeSgpO2lmKHRoaXMuYW5jaG9y
cy5sZW5ndGg9M0Q9M0QxKXtpLnNlbGVjdGVkPTNEPQ0KMDtrLmFkZENsYXNz
KCJ1aS10YWJzLXNlbGVjdGVkID0NCnVpLXN0YXRlLWFjdGl2ZSIpO2gucmVt
b3ZlQ2xhc3MoInVpLXRhYnMtaGlkZSIpO3RoaXMuZWxlbWVudC5xdWV1ZSgi
dGFicyI9DQosZnVuY3Rpb24oKXtkLl90cmlnZ2VyKCJzaG93IixudWxsLGQu
X3VpKGQuYW5jaG9yc1swXSxkLnBhbmVsc1swXSkpfSk7dGhpPQ0Kcy5sb2Fk
KDApfXRoaXMuX3RyaWdnZXIoImFkZCIsbnVsbCx0aGlzLl91aSh0aGlzLmFu
Y2hvcnNbZV0sdGhpcy5wYW5lbHNbZT0NCl0pKTtyZXR1cm4gdGhpc30scmVt
b3ZlOmZ1bmN0aW9uKGQpe3ZhciA9DQpmPTNEdGhpcy5vcHRpb25zLGc9M0R0
aGlzLmxpcy5lcShkKS5yZW1vdmUoKSxlPTNEdGhpcy5wYW5lbHMuZXEoZCku
cmVtb3ZlPQ0KKCk7aWYoZy5oYXNDbGFzcygidWktdGFicy1zZWxlY3RlZCIp
JiZ0aGlzLmFuY2hvcnMubGVuZ3RoPjEpe3RoaXMuc2VsZWN0KD0NCmQrKGQr
MTx0aGlzLmFuY2hvcnMubGVuZ3RoPzE6LTEpKX1mLmRpc2FibGVkPTNEYy5t
YXAoYy5ncmVwKGYuZGlzYWJsZWQsZnU9DQpuY3Rpb24oaixoKXtyZXR1cm4g
aiE9M0RkfSksZnVuY3Rpb24oaixoKXtyZXR1cm4gPQ0Kaj49M0RkPy0tajpq
fSk7dGhpcy5fdGFiaWZ5KCk7dGhpcy5fdHJpZ2dlcigicmVtb3ZlIixudWxs
LHRoaXMuX3VpKGcuZmluZD0NCigiYSIpWzBdLGVbMF0pKTtyZXR1cm4gdGhp
c30sZW5hYmxlOmZ1bmN0aW9uKGQpe3ZhciA9DQplPTNEdGhpcy5vcHRpb25z
O2lmKGMuaW5BcnJheShkLGUuZGlzYWJsZWQpPTNEPTNELTEpe3JldHVybn10
aGlzLmxpcy5lcShkPQ0KKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZGlzYWJs
ZWQiKTtlLmRpc2FibGVkPTNEYy5ncmVwKGUuZGlzYWJsZWQsZnVuY3Rpbz0N
Cm4oZyxmKXtyZXR1cm4gPQ0KZyE9M0RkfSk7dGhpcy5fdHJpZ2dlcigiZW5h
YmxlIixudWxsLHRoaXMuX3VpKHRoaXMuYW5jaG9yc1tkXSx0aGlzLnBhbmVs
cz0NCltkXSkpO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKGUpe3Zh
ciA9DQpkPTNEdGhpcyxmPTNEdGhpcy5vcHRpb25zO2lmKGUhPTNEZi5zZWxl
Y3RlZCl7dGhpcy5saXMuZXEoZSkuYWRkQ2xhc3MoInVpPQ0KLXN0YXRlLWRp
c2FibGVkIik7Zi5kaXNhYmxlZC5wdXNoKGUpO2YuZGlzYWJsZWQuc29ydCgp
O3RoaXMuX3RyaWdnZXIoImRpcz0NCmFibGUiLG51bGwsdGhpcy5fdWkodGhp
cy5hbmNob3JzW2VdLHRoaXMucGFuZWxzW2VdKSl9cmV0dXJuID0NCnRoaXN9
LHNlbGVjdDpmdW5jdGlvbihkKXtpZih0eXBlb2YgPQ0KZD0zRD0zRCJzdHJp
bmciKXtkPTNEdGhpcy5hbmNob3JzLmluZGV4KHRoaXMuYW5jaG9ycy5maWx0
ZXIoIltocmVmJD0zRCIrZD0NCisiXSIpKX1lbHNle2lmKGQ9M0Q9M0Q9M0Ru
dWxsKXtkPTNELTF9fWlmKGQ9M0Q9M0QtMSYmdGhpcy5vcHRpb25zLmNvbGxh
cHM9DQppYmxlKXtkPTNEdGhpcy5vcHRpb25zLnNlbGVjdGVkfXRoaXMuYW5j
aG9ycy5lcShkKS50cmlnZ2VyKHRoaXMub3B0aW9ucy5lPQ0KdmVudCsiLnRh
YnMiKTtyZXR1cm4gdGhpc30sbG9hZDpmdW5jdGlvbihnKXt2YXIgPQ0KZT0z
RHRoaXMsaT0zRHRoaXMub3B0aW9ucyxkPTNEdGhpcy5hbmNob3JzLmVxKGcp
WzBdLGY9M0RjLmRhdGEoZCwibG9hZC50YT0NCmJzIik7dGhpcy5hYm9ydCgp
O2lmKCFmfHx0aGlzLmVsZW1lbnQucXVldWUoInRhYnMiKS5sZW5ndGghPTNE
PTNEMCYmYy5kYXQ9DQphKGQsImNhY2hlLnRhYnMiKSl7dGhpcy5lbGVtZW50
LmRlcXVldWUoInRhYnMiKTtyZXR1cm59dGhpcy5saXMuZXEoZykuYWRkPQ0K
Q2xhc3MoInVpLXN0YXRlLXByb2Nlc3NpbmciKTtpZihpLnNwaW5uZXIpe3Zh
ciA9DQpoPTNEYygic3BhbiIsZCk7aC5kYXRhKCJsYWJlbC50YWJzIixoLmh0
bWwoKSkuaHRtbChpLnNwaW5uZXIpfXRoaXMueGhyPTNEPQ0KYy5hamF4KGMu
ZXh0ZW5kKHt9LGkuYWpheE9wdGlvbnMse3VybDpmLHN1Y2Nlc3M6ZnVuY3Rp
b24oayxqKXtjKGUuX3Nhbml0aT0NCnplU2VsZWN0b3IoZC5oYXNoKSkuaHRt
bChrKTtlLl9jbGVhbnVwKCk7aWYoaS5jYWNoZSl7Yy5kYXRhKGQsImNhY2hl
LnRhYnM9DQoiLHRydWUpfWUuX3RyaWdnZXIoImxvYWQiLG51bGwsZS5fdWko
ZS5hbmNob3JzW2ddLGUucGFuZWxzW2ddKSk7dHJ5e2kuYWphPQ0KeE9wdGlv
bnMuc3VjY2VzcyhrLGopfWNhdGNoKGwpe319LGVycm9yOmZ1bmN0aW9uKGws
aixrKXtlLl9jbGVhbnVwKCk7ZS5fdD0NCnJpZ2dlcigibG9hZCIsbnVsbCxl
Ll91aShlLmFuY2hvcnNbZ10sZS5wYW5lbHNbZ10pKTt0cnl7aS5hamF4T3B0
aW9ucy5lcnI9DQpvcihsLGosZyxkKX1jYXRjaChrKXt9fX0pKTtlLmVsZW1l
bnQuZGVxdWV1ZSgidGFicyIpO3JldHVybiA9DQp0aGlzfSxhYm9ydDpmdW5j
dGlvbigpe3RoaXMuZWxlbWVudC5xdWV1ZShbXSk7dGhpcy5wYW5lbHMuc3Rv
cChmYWxzZSx0cnVlPQ0KKTt0aGlzLmVsZW1lbnQucXVldWUoInRhYnMiLHRo
aXMuZWxlbWVudC5xdWV1ZSgidGFicyIpLnNwbGljZSgtMiwyKSk7aWYodD0N
Cmhpcy54aHIpe3RoaXMueGhyLmFib3J0KCk7ZGVsZXRlIHRoaXMueGhyfXRo
aXMuX2NsZWFudXAoKTtyZXR1cm4gPQ0KdGhpc30sdXJsOmZ1bmN0aW9uKGUs
ZCl7dGhpcy5hbmNob3JzLmVxKGUpLnJlbW92ZURhdGEoImNhY2hlLnRhYnMi
KS5kYXRhKD0NCiJsb2FkLnRhYnMiLGQpO3JldHVybiB0aGlzfSxsZW5ndGg6
ZnVuY3Rpb24oKXtyZXR1cm4gPQ0KdGhpcy5hbmNob3JzLmxlbmd0aH19KTtj
LmV4dGVuZChjLnVpLnRhYnMse3ZlcnNpb246IjEuOCJ9KTtjLmV4dGVuZChj
LnVpLj0NCnRhYnMucHJvdG90eXBlLHtyb3RhdGlvbjpudWxsLHJvdGF0ZTpm
dW5jdGlvbihmLGgpe3ZhciA9DQpkPTNEdGhpcyxpPTNEdGhpcy5vcHRpb25z
O3ZhciA9DQplPTNEZC5fcm90YXRlfHwoZC5fcm90YXRlPTNEZnVuY3Rpb24o
ail7Y2xlYXJUaW1lb3V0KGQucm90YXRpb24pO2Qucm90YXRpPQ0Kb249M0Rz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyID0NCms9M0RpLnNlbGVjdGVkO2Qu
c2VsZWN0KCsrazxkLmFuY2hvcnMubGVuZ3RoP2s6MCl9LGYpO2lmKGope2ou
c3RvcFByb3BhZ2E9DQp0aW9uKCl9fSk7dmFyID0NCmc9M0RkLl91bnJvdGF0
ZXx8KGQuX3Vucm90YXRlPTNEIWg/ZnVuY3Rpb24oail7aWYoai5jbGllbnRY
KXtkLnJvdGF0ZShudWw9DQpsKX19OmZ1bmN0aW9uKGope3Q9M0RpLnNlbGVj
dGVkO2UoKX0pO2lmKGYpe3RoaXMuZWxlbWVudC5iaW5kKCJ0YWJzc2hvdyIs
PQ0KZSk7dGhpcy5hbmNob3JzLmJpbmQoaS5ldmVudCsiLnRhYnMiLGcpO2Uo
KX1lbHNle2NsZWFyVGltZW91dChkLnJvdGF0aW9uKT0NCjt0aGlzLmVsZW1l
bnQudW5iaW5kKCJ0YWJzc2hvdyIsZSk7dGhpcy5hbmNob3JzLnVuYmluZChp
LmV2ZW50KyIudGFicyIsZyk9DQo7ZGVsZXRlIHRoaXMuX3JvdGF0ZTtkZWxl
dGUgdGhpcy5fdW5yb3RhdGV9cmV0dXJuIHRoaXN9fSl9KShqUXVlcnkpOzsN
Ci0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBfMDFDQzIxOEUuM0JGMjc1QzAN
CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQpDb250
ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlDQpDb250
ZW50LUxvY2F0aW9uOiBodHRwOi8vd3d3LmNhcnRhc2kuaXQvZ3JleWJveC9B
SlMuanMNCg0KQUpTPTNEe0JBU0VfVVJMOiIiLGRyYWdfb2JqOm51bGwsZHJh
Z19lbG06bnVsbCxfZHJvcF96b25lczpbXSxfY3VyX3BvczpudT0NCmxsLGdl
dFNjcm9sbFRvcDpmdW5jdGlvbigpez0wQT0NCnZhciB0Oz0wQT0NCmlmKGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LnNjcm9sbFRvcCl7PTBBPQ0KdD0zRGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5zY3JvbGxUb3A7PTBBPQ0KfWVsc2V7PTBBPQ0KaWYoZG9jdW1lbnQu
Ym9keSl7PTBBPQ0KdD0zRGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOz0wQT0N
Cn09MEE9DQp9PTBBPQ0KcmV0dXJuIHQ7PTBBPQ0KfSxhZGRDbGFzczpmdW5j
dGlvbigpez0wQT0NCnZhciBfMj0zREFKUy5mb3JjZUFycmF5KGFyZ3VtZW50
cyk7PTBBPQ0KdmFyIF8zPTNEXzIucG9wKCk7PTBBPQ0KdmFyIF80PTNEZnVu
Y3Rpb24obyl7PTBBPQ0KaWYoIW5ldyBSZWdFeHAoIihefFxccykiK18zKyIo
XFxzfCQpIikudGVzdChvLmNsYXNzTmFtZSkpez0wQT0NCm8uY2xhc3NOYW1l
Kz0zRChvLmNsYXNzTmFtZT8iICI6IiIpK18zOz0wQT0NCn09MEE9DQp9Oz0w
QT0NCkFKUy5tYXAoXzIsZnVuY3Rpb24oXzYpez0wQT0NCl80KF82KTs9MEE9
DQp9KTs9MEE9DQp9LHNldFN0eWxlOmZ1bmN0aW9uKCl7PTBBPQ0KdmFyIF83
PTNEQUpTLmZvcmNlQXJyYXkoYXJndW1lbnRzKTs9MEE9DQp2YXIgXzg9M0Rf
Ny5wb3AoKTs9MEE9DQp2YXIgXzk9M0RfNy5wb3AoKTs9MEE9DQpBSlMubWFw
KF83LGZ1bmN0aW9uKF9hKXs9MEE9DQpfYS5zdHlsZVtfOV09M0RBSlMuZ2V0
Q3NzRGltKF84KTs9MEE9DQp9KTs9MEE9DQp9LGV4dGVuZDpmdW5jdGlvbihf
Yil7PTBBPQ0KdmFyIF9jPTNEbmV3IHRoaXMoIm5vX2luaXQiKTs9MEE9DQpm
b3IoayBpbiBfYil7PTBBPQ0KdmFyIF9kPTNEX2Nba107PTBBPQ0KdmFyIF9l
PTNEX2Jba107PTBBPQ0KaWYoX2QmJl9kIT0zRF9lJiZ0eXBlb2YgX2U9M0Q9
M0QiZnVuY3Rpb24iKXs9MEE9DQpfZT0zRHRoaXMuX3BhcmVudGl6ZShfZSxf
ZCk7PTBBPQ0KfT0wQT0NCl9jW2tdPTNEX2U7PTBBPQ0KfT0wQT0NCnJldHVy
biBuZXcgQUpTLkNsYXNzKF9jKTs9MEE9DQp9LGxvZzpmdW5jdGlvbihvKXs9
MEE9DQppZih3aW5kb3cuY29uc29sZSl7PTBBPQ0KY29uc29sZS5sb2cobyk7
PTBBPQ0KfWVsc2V7PTBBPQ0KdmFyIGRpdj0zREFKUy4kKCJhanNfbG9nZ2Vy
Iik7PTBBPQ0KaWYoIWRpdil7PTBBPQ0KZGl2PTNEQUpTLkRJVih7aWQ6ImFq
c19sb2dnZXIiLCJzdHlsZSI6ImNvbG9yOiBncmVlbjsgcG9zaXRpb246ID0N
CmFic29sdXRlOyBsZWZ0OiAwIn0pOz0wQT0NCmRpdi5zdHlsZS50b3A9M0RB
SlMuZ2V0U2Nyb2xsVG9wKCkrInB4Ijs9MEE9DQpBSlMuQUNOKEFKUy5nZXRC
b2R5KCksZGl2KTs9MEE9DQp9PTBBPQ0KQUpTLnNldEhUTUwoZGl2LCIiK28p
Oz0wQT0NCn09MEE9DQp9LHNldEhlaWdodDpmdW5jdGlvbigpez0wQT0NCnZh
ciBfMTE9M0RBSlMuZm9yY2VBcnJheShhcmd1bWVudHMpOz0wQT0NCl8xMS5z
cGxpY2UoXzExLmxlbmd0aC0xLDAsImhlaWdodCIpOz0wQT0NCkFKUy5zZXRT
dHlsZS5hcHBseShudWxsLF8xMSk7PTBBPQ0KfSxfZ2V0UmVhbFNjb3BlOmZ1
bmN0aW9uKGZuLF8xMyl7PTBBPQ0KXzEzPTNEQUpTLiRBKF8xMyk7PTBBPQ0K
dmFyIF8xND0zRGZuLl9jc2NvcGV8fHdpbmRvdzs9MEE9DQpyZXR1cm4gZnVu
Y3Rpb24oKXs9MEE9DQp2YXIgXzE1PTNEQUpTLiRGQShhcmd1bWVudHMpLmNv
bmNhdChfMTMpOz0wQT0NCnJldHVybiBmbi5hcHBseShfMTQsXzE1KTs9MEE9
DQp9Oz0wQT0NCn0sZG9jdW1lbnRJbnNlcnQ6ZnVuY3Rpb24oZWxtKXs9MEE9
DQppZih0eXBlb2YgKGVsbSk9M0Q9M0Qic3RyaW5nIil7PTBBPQ0KZWxtPTNE
QUpTLkhUTUwyRE9NKGVsbSk7PTBBPQ0KfT0wQT0NCmRvY3VtZW50LndyaXRl
KCI8c3BhbiBpZD0zRFwiZHVtbXlfaG9sZGVyXCI+PC9zcGFuPiIpOz0wQT0N
CkFKUy5zd2FwRE9NKEFKUy4kKCJkdW1teV9ob2xkZXIiKSxlbG0pOz0wQT0N
Cn0sZ2V0V2luZG93U2l6ZTpmdW5jdGlvbihkb2Mpez0wQT0NCmRvYz0zRGRv
Y3x8ZG9jdW1lbnQ7PTBBPQ0KdmFyIF8xOCxfMTk7PTBBPQ0KaWYoc2VsZi5p
bm5lckhlaWdodCl7PTBBPQ0KXzE4PTNEc2VsZi5pbm5lcldpZHRoOz0wQT0N
Cl8xOT0zRHNlbGYuaW5uZXJIZWlnaHQ7PTBBPQ0KfWVsc2V7PTBBPQ0KaWYo
ZG9jLmRvY3VtZW50RWxlbWVudCYmZG9jLmRvY3VtZW50RWxlbWVudC5jbGll
bnRIZWlnaHQpez0wQT0NCl8xOD0zRGRvYy5kb2N1bWVudEVsZW1lbnQuY2xp
ZW50V2lkdGg7PTBBPQ0KXzE5PTNEZG9jLmRvY3VtZW50RWxlbWVudC5jbGll
bnRIZWlnaHQ7PTBBPQ0KfWVsc2V7PTBBPQ0KaWYoZG9jLmJvZHkpez0wQT0N
Cl8xOD0zRGRvYy5ib2R5LmNsaWVudFdpZHRoOz0wQT0NCl8xOT0zRGRvYy5i
b2R5LmNsaWVudEhlaWdodDs9MEE9DQp9PTBBPQ0KfT0wQT0NCn09MEE9DQpy
ZXR1cm4geyJ3IjpfMTgsImgiOl8xOX07PTBBPQ0KfSxmbGF0dGVuTGlzdDpm
dW5jdGlvbihfMWEpez0wQT0NCnZhciByPTNEW107PTBBPQ0KdmFyIF8xYz0z
RGZ1bmN0aW9uKHIsbCl7PTBBPQ0KQUpTLm1hcChsLGZ1bmN0aW9uKG8pez0w
QT0NCmlmKG89M0Q9M0RudWxsKXs9MEE9DQp9ZWxzZXs9MEE9DQppZihBSlMu
aXNBcnJheShvKSl7PTBBPQ0KXzFjKHIsbyk7PTBBPQ0KfWVsc2V7PTBBPQ0K
ci5wdXNoKG8pOz0wQT0NCn09MEE9DQp9PTBBPQ0KfSk7PTBBPQ0KfTs9MEE9
DQpfMWMocixfMWEpOz0wQT0NCnJldHVybiByOz0wQT0NCn0saXNGdW5jdGlv
bjpmdW5jdGlvbihvYmopez0wQT0NCnJldHVybiAodHlwZW9mIG9iaj0zRD0z
RCJmdW5jdGlvbiIpOz0wQT0NCn0sc2V0RXZlbnRLZXk6ZnVuY3Rpb24oZSl7
PTBBPQ0KZS5rZXk9M0RlLmtleUNvZGU/ZS5rZXlDb2RlOmUuY2hhckNvZGU7
PTBBPQ0KaWYod2luZG93LmV2ZW50KXs9MEE9DQplLmN0cmw9M0R3aW5kb3cu
ZXZlbnQuY3RybEtleTs9MEE9DQplLnNoaWZ0PTNEd2luZG93LmV2ZW50LnNo
aWZ0S2V5Oz0wQT0NCn1lbHNlez0wQT0NCmUuY3RybD0zRGUuY3RybEtleTs9
MEE9DQplLnNoaWZ0PTNEZS5zaGlmdEtleTs9MEE9DQp9PTBBPQ0Kc3dpdGNo
KGUua2V5KXs9MEE9DQpjYXNlIDYzMjMyOj0wQT0NCmUua2V5PTNEMzg7PTBB
PQ0KYnJlYWs7PTBBPQ0KY2FzZSA2MzIzMzo9MEE9DQplLmtleT0zRDQwOz0w
QT0NCmJyZWFrOz0wQT0NCmNhc2UgNjMyMzU6PTBBPQ0KZS5rZXk9M0QzOTs9
MEE9DQpicmVhazs9MEE9DQpjYXNlIDYzMjM0Oj0wQT0NCmUua2V5PTNEMzc7
PTBBPQ0KYnJlYWs7PTBBPQ0KfT0wQT0NCn0scmVtb3ZlRWxlbWVudDpmdW5j
dGlvbigpez0wQT0NCnZhciBfMjI9M0RBSlMuZm9yY2VBcnJheShhcmd1bWVu
dHMpOz0wQT0NCkFKUy5tYXAoXzIyLGZ1bmN0aW9uKGVsbSl7PTBBPQ0KQUpT
LnN3YXBET00oZWxtLG51bGwpOz0wQT0NCn0pOz0wQT0NCn0sX3VubG9hZExp
c3RlbmVyczpmdW5jdGlvbigpez0wQT0NCmlmKEFKUy5saXN0ZW5lcnMpez0w
QT0NCkFKUy5tYXAoQUpTLmxpc3RlbmVycyxmdW5jdGlvbihlbG0sXzI1LGZu
KXs9MEE9DQpBSlMuUkVWKGVsbSxfMjUsZm4pOz0wQT0NCn0pOz0wQT0NCn09
MEE9DQpBSlMubGlzdGVuZXJzPTNEW107PTBBPQ0KfSxqb2luOmZ1bmN0aW9u
KF8yNyxfMjgpez0wQT0NCnRyeXs9MEE9DQpyZXR1cm4gXzI4LmpvaW4oXzI3
KTs9MEE9DQp9PTBBPQ0KY2F0Y2goZSl7PTBBPQ0KdmFyIHI9M0RfMjhbMF18
fCIiOz0wQT0NCkFKUy5tYXAoXzI4LGZ1bmN0aW9uKGVsbSl7PTBBPQ0Kcis9
M0RfMjcrZWxtOz0wQT0NCn0sMSk7PTBBPQ0KcmV0dXJuIHIrIiI7PTBBPQ0K
fT0wQT0NCn0sZ2V0SW5kZXg6ZnVuY3Rpb24oZWxtLF8yYyxfMmQpez0wQT0N
CmZvcih2YXIgaT0zRDA7aTxfMmMubGVuZ3RoO2krKyl7PTBBPQ0KaWYoXzJk
JiZfMmQoXzJjW2ldKXx8ZWxtPTNEPTNEXzJjW2ldKXs9MEE9DQpyZXR1cm4g
aTs9MEE9DQp9PTBBPQ0KfT0wQT0NCnJldHVybiAtMTs9MEE9DQp9LGlzSW46
ZnVuY3Rpb24oZWxtLF8zMCl7PTBBPQ0KdmFyIGk9M0RBSlMuZ2V0SW5kZXgo
ZWxtLF8zMCk7PTBBPQ0KaWYoaSE9M0QtMSl7PTBBPQ0KcmV0dXJuIHRydWU7
PTBBPQ0KfWVsc2V7PTBBPQ0KcmV0dXJuIGZhbHNlOz0wQT0NCn09MEE9DQp9
LGlzQXJyYXk6ZnVuY3Rpb24ob2JqKXs9MEE9DQpyZXR1cm4gb2JqIGluc3Rh
bmNlb2YgQXJyYXk7PTBBPQ0KfSxzZXRMZWZ0OmZ1bmN0aW9uKCl7PTBBPQ0K
dmFyIF8zMz0zREFKUy5mb3JjZUFycmF5KGFyZ3VtZW50cyk7PTBBPQ0KXzMz
LnNwbGljZShfMzMubGVuZ3RoLTEsMCwibGVmdCIpOz0wQT0NCkFKUy5zZXRT
dHlsZS5hcHBseShudWxsLF8zMyk7PTBBPQ0KfSxhcHBlbmRDaGlsZE5vZGVz
OmZ1bmN0aW9uKGVsbSl7PTBBPQ0KaWYoYXJndW1lbnRzLmxlbmd0aD49M0Qy
KXs9MEE9DQpBSlMubWFwKGFyZ3VtZW50cyxmdW5jdGlvbihuKXs9MEE9DQpp
ZihBSlMuaXNTdHJpbmcobikpez0wQT0NCm49M0RBSlMuVE4obik7PTBBPQ0K
fT0wQT0NCmlmKEFKUy5pc0RlZmluZWQobikpez0wQT0NCmVsbS5hcHBlbmRD
aGlsZChuKTs9MEE9DQp9PTBBPQ0KfSwxKTs9MEE9DQp9PTBBPQ0KcmV0dXJu
IGVsbTs9MEE9DQp9LGdldEVsZW1lbnRzQnlUYWdBbmRDbGFzc05hbWU6ZnVu
Y3Rpb24oXzM2LF8zNyxfMzgsXzM5KXs9MEE9DQp2YXIgXzNhPTNEW107PTBB
PQ0KaWYoIUFKUy5pc0RlZmluZWQoXzM4KSl7PTBBPQ0KXzM4PTNEZG9jdW1l
bnQ7PTBBPQ0KfT0wQT0NCmlmKCFBSlMuaXNEZWZpbmVkKF8zNikpez0wQT0N
Cl8zNj0zRCIqIjs9MEE9DQp9PTBBPQ0KdmFyIGVscz0zRF8zOC5nZXRFbGVt
ZW50c0J5VGFnTmFtZShfMzYpOz0wQT0NCnZhciBfM2M9M0RlbHMubGVuZ3Ro
Oz0wQT0NCnZhciBfM2Q9M0RuZXcgUmVnRXhwKCIoXnxcXHMpIitfMzcrIihc
XHN8JCkiKTs9MEE9DQpmb3IoaT0zRDAsaj0zRDA7aTxfM2M7aSsrKXs9MEE9
DQppZihfM2QudGVzdChlbHNbaV0uY2xhc3NOYW1lKXx8XzM3PTNEPTNEbnVs
bCl7PTBBPQ0KXzNhW2pdPTNEZWxzW2ldOz0wQT0NCmorKzs9MEE9DQp9PTBB
PQ0KfT0wQT0NCmlmKF8zOSl7PTBBPQ0KcmV0dXJuIF8zYVswXTs9MEE9DQp9
ZWxzZXs9MEE9DQpyZXR1cm4gXzNhOz0wQT0NCn09MEE9DQp9LGlzT3BlcmE6
ZnVuY3Rpb24oKXs9MEE9DQpyZXR1cm4gKG5hdmlnYXRvci51c2VyQWdlbnQu
dG9Mb3dlckNhc2UoKS5pbmRleE9mKCJvcGVyYSIpIT0zRC0xKTs9MEE9DQp9
LGlzU3RyaW5nOmZ1bmN0aW9uKG9iail7PTBBPQ0KcmV0dXJuICh0eXBlb2Yg
b2JqPTNEPTNEInN0cmluZyIpOz0wQT0NCn0saGlkZUVsZW1lbnQ6ZnVuY3Rp
b24oZWxtKXs9MEE9DQp2YXIgXzQwPTNEQUpTLmZvcmNlQXJyYXkoYXJndW1l
bnRzKTs9MEE9DQpBSlMubWFwKF80MCxmdW5jdGlvbihlbG0pez0wQT0NCmVs
bS5zdHlsZS5kaXNwbGF5PTNEIm5vbmUiOz0wQT0NCn0pOz0wQT0NCn0sc2V0
T3BhY2l0eTpmdW5jdGlvbihlbG0scCl7PTBBPQ0KZWxtLnN0eWxlLm9wYWNp
dHk9M0RwOz0wQT0NCmVsbS5zdHlsZS5maWx0ZXI9M0QiYWxwaGEob3BhY2l0
eT0zRCIrcCoxMDArIikiOz0wQT0NCn0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9u
KGVsbSxfNDUpez0wQT0NCl80NS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShl
bG0sXzQ1KTs9MEE9DQpyZXR1cm4gZWxtOz0wQT0NCn0sc2V0V2lkdGg6ZnVu
Y3Rpb24oKXs9MEE9DQp2YXIgXzQ2PTNEQUpTLmZvcmNlQXJyYXkoYXJndW1l
bnRzKTs9MEE9DQpfNDYuc3BsaWNlKF80Ni5sZW5ndGgtMSwwLCJ3aWR0aCIp
Oz0wQT0NCkFKUy5zZXRTdHlsZS5hcHBseShudWxsLF80Nik7PTBBPQ0KfSxj
cmVhdGVBcnJheTpmdW5jdGlvbih2KXs9MEE9DQppZihBSlMuaXNBcnJheSh2
KSYmIUFKUy5pc1N0cmluZyh2KSl7PTBBPQ0KcmV0dXJuIHY7PTBBPQ0KfWVs
c2V7PTBBPQ0KaWYoIXYpez0wQT0NCnJldHVybiBbXTs9MEE9DQp9ZWxzZXs9
MEE9DQpyZXR1cm4gW3ZdOz0wQT0NCn09MEE9DQp9PTBBPQ0KfSxpc0RpY3Q6
ZnVuY3Rpb24obyl7PTBBPQ0KdmFyIF80OT0zRFN0cmluZyhvKTs9MEE9DQpy
ZXR1cm4gXzQ5LmluZGV4T2YoIiBPYmplY3QiKSE9M0QtMTs9MEE9DQp9LGlz
TW96aWxsYTpmdW5jdGlvbigpez0wQT0NCnJldHVybiA9DQoobmF2aWdhdG9y
LnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImdlY2tvIikhPTNE
LTEmJm5hdmlnYXRvci5wcm9kPQ0KdWN0U3ViPj0zRDIwMDMwMjEwKTs9MEE9
DQp9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZWxtLF80Yixmbixf
NGQpez0wQT0NCnZhciBfNGU9M0QiYWpzbF8iK180Yitmbjs9MEE9DQppZigh
XzRkKXs9MEE9DQpfNGQ9M0RmYWxzZTs9MEE9DQp9PTBBPQ0KZm49M0RlbG1b
XzRlXXx8Zm47PTBBPQ0KaWYoZWxtWyJvbiIrXzRiXT0zRD0zRGZuKXs9MEE9
DQplbG1bIm9uIitfNGJdPTNEZWxtW180ZSsib2xkIl07PTBBPQ0KfT0wQT0N
CmlmKGVsbS5yZW1vdmVFdmVudExpc3RlbmVyKXs9MEE9DQplbG0ucmVtb3Zl
RXZlbnRMaXN0ZW5lcihfNGIsZm4sXzRkKTs9MEE9DQppZihBSlMuaXNPcGVy
YSgpKXs9MEE9DQplbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihfNGIsZm4sIV80
ZCk7PTBBPQ0KfT0wQT0NCn1lbHNlez0wQT0NCmlmKGVsbS5kZXRhY2hFdmVu
dCl7PTBBPQ0KZWxtLmRldGFjaEV2ZW50KCJvbiIrXzRiLGZuKTs9MEE9DQp9
PTBBPQ0KfT0wQT0NCn0sY2FsbExhdGVyOmZ1bmN0aW9uKGZuLF81MCl7PTBB
PQ0KdmFyIF81MT0zRGZ1bmN0aW9uKCl7PTBBPQ0KZm4oKTs9MEE9DQp9Oz0w
QT0NCndpbmRvdy5zZXRUaW1lb3V0KF81MSxfNTApOz0wQT0NCn0sc2V0VG9w
OmZ1bmN0aW9uKCl7PTBBPQ0KdmFyIF81Mj0zREFKUy5mb3JjZUFycmF5KGFy
Z3VtZW50cyk7PTBBPQ0KXzUyLnNwbGljZShfNTIubGVuZ3RoLTEsMCwidG9w
Iik7PTBBPQ0KQUpTLnNldFN0eWxlLmFwcGx5KG51bGwsXzUyKTs9MEE9DQp9
LF9jcmVhdGVEb21TaG9ydGN1dHM6ZnVuY3Rpb24oKXs9MEE9DQp2YXIgPQ0K
XzUzPTNEWyJ1bCIsImxpIiwidGQiLCJ0ciIsInRoIiwidGJvZHkiLCJ0YWJs
ZSIsImlucHV0Iiwic3BhbiIsImIiLCJhIiwiZD0NCml2IiwiaW1nIiwiYnV0
dG9uIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiYnIiLCJ0ZXh0
YXJlYSIsImZvcm0iLCI9DQpwIiwic2VsZWN0Iiwib3B0aW9uIiwib3B0Z3Jv
dXAiLCJpZnJhbWUiLCJzY3JpcHQiLCJjZW50ZXIiLCJkbCIsImR0IiwiZGQi
PQ0KLCJzbWFsbCIsInByZSIsImkiXTs9MEE9DQp2YXIgXzU0PTNEZnVuY3Rp
b24oZWxtKXs9MEE9DQpBSlNbZWxtLnRvVXBwZXJDYXNlKCldPTNEZnVuY3Rp
b24oKXs9MEE9DQpyZXR1cm4gQUpTLmNyZWF0ZURPTS5hcHBseShudWxsLFtl
bG0sYXJndW1lbnRzXSk7PTBBPQ0KfTs9MEE9DQp9Oz0wQT0NCkFKUy5tYXAo
XzUzLF81NCk7PTBBPQ0KQUpTLlROPTNEZnVuY3Rpb24oXzU2KXs9MEE9DQpy
ZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXzU2KTs9MEE9DQp9Oz0w
QT0NCn0sYWRkQ2FsbGJhY2s6ZnVuY3Rpb24oZm4pez0wQT0NCnRoaXMuY2Fs
bGJhY2tzLnVuc2hpZnQoZm4pOz0wQT0NCn0sYmluZE1ldGhvZHM6ZnVuY3Rp
b24oXzU4KXs9MEE9DQpmb3IodmFyIGsgaW4gXzU4KXs9MEE9DQp2YXIgXzVh
PTNEXzU4W2tdOz0wQT0NCmlmKHR5cGVvZiAoXzVhKT0zRD0zRCJmdW5jdGlv
biIpez0wQT0NCl81OFtrXT0zREFKUy4kYihfNWEsXzU4KTs9MEE9DQp9PTBB
PQ0KfT0wQT0NCn0scGFydGlhbDpmdW5jdGlvbihmbil7PTBBPQ0KdmFyIF81
Yz0zREFKUy4kRkEoYXJndW1lbnRzKTs9MEE9DQpfNWMuc2hpZnQoKTs9MEE9
DQpyZXR1cm4gZnVuY3Rpb24oKXs9MEE9DQpfNWM9M0RfNWMuY29uY2F0KEFK
Uy4kRkEoYXJndW1lbnRzKSk7PTBBPQ0KcmV0dXJuIGZuLmFwcGx5KHdpbmRv
dyxfNWMpOz0wQT0NCn07PTBBPQ0KfSxpc051bWJlcjpmdW5jdGlvbihvYmop
ez0wQT0NCnJldHVybiAodHlwZW9mIG9iaj0zRD0zRCJudW1iZXIiKTs9MEE9
DQp9LGdldENzc0RpbTpmdW5jdGlvbihkaW0pez0wQT0NCmlmKEFKUy5pc1N0
cmluZyhkaW0pKXs9MEE9DQpyZXR1cm4gZGltOz0wQT0NCn1lbHNlez0wQT0N
CnJldHVybiBkaW0rInB4Ijs9MEE9DQp9PTBBPQ0KfSxpc0llOmZ1bmN0aW9u
KCl7PTBBPQ0KcmV0dXJuID0NCihuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93
ZXJDYXNlKCkuaW5kZXhPZigibXNpZSIpIT0zRC0xJiZuYXZpZ2F0b3IudXNl
ckE9DQpnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigib3BlcmEiKT0zRD0z
RC0xKTs9MEE9DQp9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKCl7PTBBPQ0KdmFy
IF81Zj0zREFKUy5mb3JjZUFycmF5KGFyZ3VtZW50cyk7PTBBPQ0KdmFyIGNs
cz0zRF81Zi5wb3AoKTs9MEE9DQp2YXIgXzYxPTNEZnVuY3Rpb24obyl7PTBB
PQ0Kby5jbGFzc05hbWU9M0RvLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdF
eHAoIlxccz8iK2NscywiZyIpLCIiKTs9MEE9DQp9Oz0wQT0NCkFKUy5tYXAo
XzVmLGZ1bmN0aW9uKGVsbSl7PTBBPQ0KXzYxKGVsbSk7PTBBPQ0KfSk7PTBB
PQ0KfSxzZXRIVE1MOmZ1bmN0aW9uKGVsbSxfNjUpez0wQT0NCmVsbS5pbm5l
ckhUTUw9M0RfNjU7PTBBPQ0KcmV0dXJuIGVsbTs9MEE9DQp9LG1hcDpmdW5j
dGlvbihfNjYsZm4sXzY4LF82OSl7PTBBPQ0KdmFyIGk9M0QwLGw9M0RfNjYu
bGVuZ3RoOz0wQT0NCmlmKF82OCl7PTBBPQ0KaT0zRF82ODs9MEE9DQp9PTBB
PQ0KaWYoXzY5KXs9MEE9DQpsPTNEXzY5Oz0wQT0NCn09MEE9DQpmb3IoaTtp
PGw7aSsrKXs9MEE9DQp2YXIgdmFsPTNEZm4oXzY2W2ldLGkpOz0wQT0NCmlm
KHZhbCE9M0R1bmRlZmluZWQpez0wQT0NCnJldHVybiB2YWw7PTBBPQ0KfT0w
QT0NCn09MEE9DQp9LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZWxtLF82
ZSxmbixfNzAsXzcxKXs9MEE9DQp2YXIgXzcyPTNEImFqc2xfIitfNmUrZm47
PTBBPQ0KaWYoIV83MSl7PTBBPQ0KXzcxPTNEZmFsc2U7PTBBPQ0KfT0wQT0N
CkFKUy5saXN0ZW5lcnM9M0RBSlMuJEEoQUpTLmxpc3RlbmVycyk7PTBBPQ0K
aWYoQUpTLmlzSW4oXzZlLFsia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAi
LCJjbGljayJdKSl7PTBBPQ0KdmFyIF83Mz0zRGZuOz0wQT0NCmZuPTNEZnVu
Y3Rpb24oZSl7PTBBPQ0KQUpTLnNldEV2ZW50S2V5KGUpOz0wQT0NCnJldHVy
biBfNzMuYXBwbHkod2luZG93LGFyZ3VtZW50cyk7PTBBPQ0KfTs9MEE9DQp9
PTBBPQ0KdmFyIF83NT0zREFKUy5pc0luKF82ZSxbInN1Ym1pdCIsImxvYWQi
LCJzY3JvbGwiLCJyZXNpemUiXSk7PTBBPQ0KdmFyIF83Nj0zREFKUy4kQShl
bG0pOz0wQT0NCkFKUy5tYXAoXzc2LGZ1bmN0aW9uKF83Nyl7PTBBPQ0KaWYo
XzcwKXs9MEE9DQp2YXIgXzc4PTNEZm47PTBBPQ0KZm49M0RmdW5jdGlvbihl
KXs9MEE9DQpBSlMuUkVWKF83NyxfNmUsZm4pOz0wQT0NCnJldHVybiBfNzgu
YXBwbHkod2luZG93LGFyZ3VtZW50cyk7PTBBPQ0KfTs9MEE9DQp9PTBBPQ0K
aWYoXzc1KXs9MEE9DQp2YXIgXzdhPTNEXzc3WyJvbiIrXzZlXTs9MEE9DQp2
YXIgXzdiPTNEZnVuY3Rpb24oKXs9MEE9DQppZihfN2Epez0wQT0NCmZuKGFy
Z3VtZW50cyk7PTBBPQ0KcmV0dXJuIF83YShhcmd1bWVudHMpOz0wQT0NCn1l
bHNlez0wQT0NCnJldHVybiBmbihhcmd1bWVudHMpOz0wQT0NCn09MEE9DQp9
Oz0wQT0NCl83N1tfNzJdPTNEXzdiOz0wQT0NCl83N1tfNzIrIm9sZCJdPTNE
XzdhOz0wQT0NCmVsbVsib24iK182ZV09M0RfN2I7PTBBPQ0KfWVsc2V7PTBB
PQ0KXzc3W183Ml09M0Rmbjs9MEE9DQppZihfNzcuYXR0YWNoRXZlbnQpez0w
QT0NCl83Ny5hdHRhY2hFdmVudCgib24iK182ZSxmbik7PTBBPQ0KfWVsc2V7
PTBBPQ0KaWYoXzc3LmFkZEV2ZW50TGlzdGVuZXIpez0wQT0NCl83Ny5hZGRF
dmVudExpc3RlbmVyKF82ZSxmbixfNzEpOz0wQT0NCn09MEE9DQp9PTBBPQ0K
QUpTLmxpc3RlbmVycy5wdXNoKFtfNzcsXzZlLGZuXSk7PTBBPQ0KfT0wQT0N
Cn0pOz0wQT0NCn0scHJlbG9hZEltYWdlczpmdW5jdGlvbigpez0wQT0NCkFK
Uy5BRVYod2luZG93LCJsb2FkIixBSlMuJHAoZnVuY3Rpb24oXzdjKXs9MEE9
DQpBSlMubWFwKF83YyxmdW5jdGlvbihzcmMpez0wQT0NCnZhciBwaWM9M0Ru
ZXcgSW1hZ2UoKTs9MEE9DQpwaWMuc3JjPTNEc3JjOz0wQT0NCn0pOz0wQT0N
Cn0sYXJndW1lbnRzKSk7PTBBPQ0KfSxmb3JjZUFycmF5OmZ1bmN0aW9uKF83
Zil7PTBBPQ0KdmFyIHI9M0RbXTs9MEE9DQpBSlMubWFwKF83ZixmdW5jdGlv
bihlbG0pez0wQT0NCnIucHVzaChlbG0pOz0wQT0NCn0pOz0wQT0NCnJldHVy
biByOz0wQT0NCn0sdXBkYXRlOmZ1bmN0aW9uKGwxLGwyKXs9MEE9DQpmb3Io
dmFyIGkgaW4gbDIpez0wQT0NCmwxW2ldPTNEbDJbaV07PTBBPQ0KfT0wQT0N
CnJldHVybiBsMTs9MEE9DQp9LGdldEJvZHk6ZnVuY3Rpb24oKXs9MEE9DQpy
ZXR1cm4gQUpTLiRieXRjKCJib2R5IilbMF07PTBBPQ0KfSxIVE1MMkRPTTpm
dW5jdGlvbihfODUsXzg2KXs9MEE9DQp2YXIgZD0zREFKUy5ESVYoKTs9MEE9
DQpkLmlubmVySFRNTD0zRF84NTs9MEE9DQppZihfODYpez0wQT0NCnJldHVy
biBkLmNoaWxkTm9kZXNbMF07PTBBPQ0KfWVsc2V7PTBBPQ0KcmV0dXJuIGQ7
PTBBPQ0KfT0wQT0NCn0sZ2V0RWxlbWVudDpmdW5jdGlvbihpZCl7PTBBPQ0K
aWYoQUpTLmlzU3RyaW5nKGlkKXx8QUpTLmlzTnVtYmVyKGlkKSl7PTBBPQ0K
cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTs9MEE9DQp9ZWxz
ZXs9MEE9DQpyZXR1cm4gaWQ7PTBBPQ0KfT0wQT0NCn0sc2hvd0VsZW1lbnQ6
ZnVuY3Rpb24oKXs9MEE9DQp2YXIgXzg5PTNEQUpTLmZvcmNlQXJyYXkoYXJn
dW1lbnRzKTs9MEE9DQpBSlMubWFwKF84OSxmdW5jdGlvbihlbG0pez0wQT0N
CmVsbS5zdHlsZS5kaXNwbGF5PTNEIiI7PTBBPQ0KfSk7PTBBPQ0KfSxiaW5k
OmZ1bmN0aW9uKGZuLF84YyxfOGQpez0wQT0NCmZuLl9jc2NvcGU9M0RfOGM7
PTBBPQ0KcmV0dXJuIEFKUy5fZ2V0UmVhbFNjb3BlKGZuLF84ZCk7PTBBPQ0K
fSxjcmVhdGVET006ZnVuY3Rpb24oXzhlLF84Zil7PTBBPQ0KdmFyIGk9M0Qw
LF85MTs9MEE9DQp2YXIgZWxtPTNEZG9jdW1lbnQuY3JlYXRlRWxlbWVudChf
OGUpOz0wQT0NCnZhciBfOTM9M0RfOGZbMF07PTBBPQ0KaWYoQUpTLmlzRGlj
dChfOGZbaV0pKXs9MEE9DQpmb3IoayBpbiBfOTMpez0wQT0NCl85MT0zRF85
M1trXTs9MEE9DQppZihrPTNEPTNEInN0eWxlInx8az0zRD0zRCJzIil7PTBB
PQ0KZWxtLnN0eWxlLmNzc1RleHQ9M0RfOTE7PTBBPQ0KfWVsc2V7PTBBPQ0K
aWYoaz0zRD0zRCJjInx8az0zRD0zRCJjbGFzcyJ8fGs9M0Q9M0QiY2xhc3NO
YW1lIil7PTBBPQ0KZWxtLmNsYXNzTmFtZT0zRF85MTs9MEE9DQp9ZWxzZXs9
MEE9DQplbG0uc2V0QXR0cmlidXRlKGssXzkxKTs9MEE9DQp9PTBBPQ0KfT0w
QT0NCn09MEE9DQppKys7PTBBPQ0KfT0wQT0NCmlmKF85Mz0zRD0zRG51bGwp
ez0wQT0NCmk9M0QxOz0wQT0NCn09MEE9DQpmb3IodmFyIGo9M0RpO2o8Xzhm
Lmxlbmd0aDtqKyspez0wQT0NCnZhciBfOTE9M0RfOGZbal07PTBBPQ0KaWYo
XzkxKXs9MEE9DQp2YXIgXzk1PTNEdHlwZW9mIChfOTEpOz0wQT0NCmlmKF85
NT0zRD0zRCJzdHJpbmcifHxfOTU9M0Q9M0QibnVtYmVyIil7PTBBPQ0KXzkx
PTNEQUpTLlROKF85MSk7PTBBPQ0KfT0wQT0NCmVsbS5hcHBlbmRDaGlsZChf
OTEpOz0wQT0NCn09MEE9DQp9PTBBPQ0KcmV0dXJuIGVsbTs9MEE9DQp9LHN3
YXBET006ZnVuY3Rpb24oXzk2LHNyYyl7PTBBPQ0KXzk2PTNEQUpTLmdldEVs
ZW1lbnQoXzk2KTs9MEE9DQp2YXIgXzk4PTNEXzk2LnBhcmVudE5vZGU7PTBB
PQ0KaWYoc3JjKXs9MEE9DQpzcmM9M0RBSlMuZ2V0RWxlbWVudChzcmMpOz0w
QT0NCl85OC5yZXBsYWNlQ2hpbGQoc3JjLF85Nik7PTBBPQ0KfWVsc2V7PTBB
PQ0KXzk4LnJlbW92ZUNoaWxkKF85Nik7PTBBPQ0KfT0wQT0NCnJldHVybiBz
cmM7PTBBPQ0KfSxpc0RlZmluZWQ6ZnVuY3Rpb24obyl7PTBBPQ0KcmV0dXJu
IChvIT0zRCJ1bmRlZmluZWQiJiZvIT0zRG51bGwpOz0wQT0NCn19Oz0wQT0N
CkFKUy4kPTNEQUpTLmdldEVsZW1lbnQ7PTBBPQ0KQUpTLiQkPTNEQUpTLmdl
dEVsZW1lbnRzOz0wQT0NCkFKUy4kZj0zREFKUy5nZXRGb3JtRWxlbWVudDs9
MEE9DQpBSlMuJHA9M0RBSlMucGFydGlhbDs9MEE9DQpBSlMuJGI9M0RBSlMu
YmluZDs9MEE9DQpBSlMuJEE9M0RBSlMuY3JlYXRlQXJyYXk7PTBBPQ0KQUpT
LkRJPTNEQUpTLmRvY3VtZW50SW5zZXJ0Oz0wQT0NCkFKUy5BQ049M0RBSlMu
YXBwZW5kQ2hpbGROb2Rlczs9MEE9DQpBSlMuUkNOPTNEQUpTLnJlcGxhY2VD
aGlsZE5vZGVzOz0wQT0NCkFKUy5BRVY9M0RBSlMuYWRkRXZlbnRMaXN0ZW5l
cjs9MEE9DQpBSlMuUkVWPTNEQUpTLnJlbW92ZUV2ZW50TGlzdGVuZXI7PTBB
PQ0KQUpTLiRieXRjPTNEQUpTLmdldEVsZW1lbnRzQnlUYWdBbmRDbGFzc05h
bWU7PTBBPQ0KQUpTLiRBUD0zREFKUy5hYnNvbHV0ZVBvc2l0aW9uOz0wQT0N
CkFKUy4kRkE9M0RBSlMuZm9yY2VBcnJheTs9MEE9DQpBSlMuYWRkRXZlbnRM
aXN0ZW5lcih3aW5kb3csInVubG9hZCIsQUpTLl91bmxvYWRMaXN0ZW5lcnMp
Oz0wQT0NCkFKUy5fY3JlYXRlRG9tU2hvcnRjdXRzKCk7PTBBPQ0KQUpTLkNs
YXNzPTNEZnVuY3Rpb24oXzlhKXs9MEE9DQp2YXIgZm49M0RmdW5jdGlvbigp
ez0wQT0NCmlmKGFyZ3VtZW50c1swXSE9M0Qibm9faW5pdCIpez0wQT0NCnJl
dHVybiB0aGlzLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpOz0wQT0NCn09
MEE9DQp9Oz0wQT0NCmZuLnByb3RvdHlwZT0zRF85YTs9MEE9DQpBSlMudXBk
YXRlKGZuLEFKUy5DbGFzcy5wcm90b3R5cGUpOz0wQT0NCnJldHVybiBmbjs9
MEE9DQp9Oz0wQT0NCkFKUy5DbGFzcy5wcm90b3R5cGU9M0R7ZXh0ZW5kOmZ1
bmN0aW9uKF85Yyl7PTBBPQ0KdmFyIF85ZD0zRG5ldyB0aGlzKCJub19pbml0
Iik7PTBBPQ0KZm9yKGsgaW4gXzljKXs9MEE9DQp2YXIgXzllPTNEXzlkW2td
Oz0wQT0NCnZhciBjdXI9M0RfOWNba107PTBBPQ0KaWYoXzllJiZfOWUhPTNE
Y3VyJiZ0eXBlb2YgY3VyPTNEPTNEImZ1bmN0aW9uIil7PTBBPQ0KY3VyPTNE
dGhpcy5fcGFyZW50aXplKGN1cixfOWUpOz0wQT0NCn09MEE9DQpfOWRba109
M0RjdXI7PTBBPQ0KfT0wQT0NCnJldHVybiBuZXcgQUpTLkNsYXNzKF85ZCk7
PTBBPQ0KfSxpbXBsZW1lbnQ6ZnVuY3Rpb24oX2EwKXs9MEE9DQpBSlMudXBk
YXRlKHRoaXMucHJvdG90eXBlLF9hMCk7PTBBPQ0KfSxfcGFyZW50aXplOmZ1
bmN0aW9uKGN1cixfYTIpez0wQT0NCnJldHVybiBmdW5jdGlvbigpez0wQT0N
CnRoaXMucGFyZW50PTNEX2EyOz0wQT0NCnJldHVybiBjdXIuYXBwbHkodGhp
cyxhcmd1bWVudHMpOz0wQT0NCn07PTBBPQ0KfX07PTBBPQ0Kc2NyaXB0X2xv
YWRlZD0zRHRydWU7PTBBPQ0KPTBBPQ0KPTBBPQ0Kc2NyaXB0X2xvYWRlZD0z
RHRydWU7DQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0MyMThFLjNC
RjI3NUMwDQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bQ0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJs
ZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0cDovL3d3dy5jYXJ0YXNpLml0L2dy
ZXlib3gvQUpTX2Z4LmpzDQoNCkFKUy5meD0zRHtfc2hhZGVzOnswOiJmZmZm
ZmYiLDE6ImZmZmZlZSIsMjoiZmZmZmRkIiwzOiJmZmZmY2MiLDQ6ImZmZmZi
YiI9DQosNToiZmZmZmFhIiw2OiJmZmZmOTkifSxoaWdobGlnaHQ6ZnVuY3Rp
b24oXzEsXzIpez0wQT0NCnZhciBfMz0zRG5ldyBBSlMuZnguQmFzZSgpOz0w
QT0NCl8zLmVsbT0zREFKUy4kKF8xKTs9MEE9DQpfMy5vcHRpb25zLmR1cmF0
aW9uPTNENjAwOz0wQT0NCl8zLnNldE9wdGlvbnMoXzIpOz0wQT0NCkFKUy51
cGRhdGUoXzMse2luY3JlYXNlOmZ1bmN0aW9uKCl7PTBBPQ0KaWYodGhpcy5u
b3c9M0Q9M0Q3KXs9MEE9DQpfMS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9M0Qi
I2ZmZiI7PTBBPQ0KfWVsc2V7PTBBPQ0KXzEuc3R5bGUuYmFja2dyb3VuZENv
bG9yPTNEIiMiK0FKUy5meC5fc2hhZGVzW01hdGguZmxvb3IodGhpcy5ub3cp
XTs9MEE9DQp9PTBBPQ0KfX0pOz0wQT0NCnJldHVybiBfMy5jdXN0b20oNiww
KTs9MEE9DQp9LGZhZGVJbjpmdW5jdGlvbihfNCxfNSl7PTBBPQ0KXzU9M0Rf
NXx8e307PTBBPQ0KaWYoIV81LmZyb20pez0wQT0NCl81LmZyb209M0QwOz0w
QT0NCkFKUy5zZXRPcGFjaXR5KF80LDApOz0wQT0NCn09MEE9DQppZighXzUu
dG8pez0wQT0NCl81LnRvPTNEMTs9MEE9DQp9PTBBPQ0KdmFyIHM9M0RuZXcg
QUpTLmZ4LlN0eWxlKF80LCJvcGFjaXR5IixfNSk7PTBBPQ0KcmV0dXJuIHMu
Y3VzdG9tKF81LmZyb20sXzUudG8pOz0wQT0NCn0sZmFkZU91dDpmdW5jdGlv
bihfNyxfOCl7PTBBPQ0KXzg9M0RfOHx8e307PTBBPQ0KaWYoIV84LmZyb20p
ez0wQT0NCl84LmZyb209M0QxOz0wQT0NCn09MEE9DQppZighXzgudG8pez0w
QT0NCl84LnRvPTNEMDs9MEE9DQp9PTBBPQ0KXzguZHVyYXRpb249M0QzMDA7
PTBBPQ0KdmFyIHM9M0RuZXcgQUpTLmZ4LlN0eWxlKF83LCJvcGFjaXR5Iixf
OCk7PTBBPQ0KcmV0dXJuIHMuY3VzdG9tKF84LmZyb20sXzgudG8pOz0wQT0N
Cn0sc2V0V2lkdGg6ZnVuY3Rpb24oX2EsX2Ipez0wQT0NCnZhciBzPTNEbmV3
IEFKUy5meC5TdHlsZShfYSwid2lkdGgiLF9iKTs9MEE9DQpyZXR1cm4gcy5j
dXN0b20oX2IuZnJvbSxfYi50byk7PTBBPQ0KfSxzZXRIZWlnaHQ6ZnVuY3Rp
b24oX2QsX2Upez0wQT0NCnZhciBzPTNEbmV3IEFKUy5meC5TdHlsZShfZCwi
aGVpZ2h0IixfZSk7PTBBPQ0KcmV0dXJuIHMuY3VzdG9tKF9lLmZyb20sX2Uu
dG8pOz0wQT0NCn19Oz0wQT0NCkFKUy5meC5CYXNlPTNEbmV3IEFKUy5DbGFz
cyh7aW5pdDpmdW5jdGlvbihfMTApez0wQT0NCnRoaXMub3B0aW9ucz0zRHtv
blN0YXJ0OmZ1bmN0aW9uKCl7PTBBPQ0KfSxvbkNvbXBsZXRlOmZ1bmN0aW9u
KCl7PTBBPQ0KfSx0cmFuc2l0aW9uOkFKUy5meC5UcmFuc2l0aW9ucy5zaW5l
SW5PdXQsZHVyYXRpb246NTAwLHdhaXQ6dHJ1ZSxmcHM6NTB9Oz0wQT0NCkFK
Uy51cGRhdGUodGhpcy5vcHRpb25zLF8xMCk7PTBBPQ0KQUpTLmJpbmRNZXRo
b2RzKHRoaXMpOz0wQT0NCn0sc2V0T3B0aW9uczpmdW5jdGlvbihfMTEpez0w
QT0NCkFKUy51cGRhdGUodGhpcy5vcHRpb25zLF8xMSk7PTBBPQ0KfSxzdGVw
OmZ1bmN0aW9uKCl7PTBBPQ0KdmFyIF8xMj0zRG5ldyBEYXRlKCkuZ2V0VGlt
ZSgpOz0wQT0NCmlmKF8xMjx0aGlzLnRpbWUrdGhpcy5vcHRpb25zLmR1cmF0
aW9uKXs9MEE9DQp0aGlzLmNUaW1lPTNEXzEyLXRoaXMudGltZTs9MEE9DQp0
aGlzLnNldE5vdygpOz0wQT0NCn1lbHNlez0wQT0NCnNldFRpbWVvdXQoQUpT
LiRiKHRoaXMub3B0aW9ucy5vbkNvbXBsZXRlLHRoaXMsW3RoaXMuZWxtXSks
MTApOz0wQT0NCnRoaXMuY2xlYXJUaW1lcigpOz0wQT0NCnRoaXMubm93PTNE
dGhpcy50bzs9MEE9DQp9PTBBPQ0KdGhpcy5pbmNyZWFzZSgpOz0wQT0NCn0s
c2V0Tm93OmZ1bmN0aW9uKCl7PTBBPQ0KdGhpcy5ub3c9M0R0aGlzLmNvbXB1
dGUodGhpcy5mcm9tLHRoaXMudG8pOz0wQT0NCn0sY29tcHV0ZTpmdW5jdGlv
bihfMTMsdG8pez0wQT0NCnZhciBfMTU9M0R0by1fMTM7PTBBPQ0KcmV0dXJu
IHRoaXMub3B0aW9ucy50cmFuc2l0aW9uKHRoaXMuY1RpbWUsXzEzLF8xNSx0
aGlzLm9wdGlvbnMuZHVyYXRpb24pOz0wQT0NCn0sY2xlYXJUaW1lcjpmdW5j
dGlvbigpez0wQT0NCmNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7PTBBPQ0K
dGhpcy50aW1lcj0zRG51bGw7PTBBPQ0KcmV0dXJuIHRoaXM7PTBBPQ0KfSxf
c3RhcnQ6ZnVuY3Rpb24oXzE2LHRvKXs9MEE9DQppZighdGhpcy5vcHRpb25z
LndhaXQpez0wQT0NCnRoaXMuY2xlYXJUaW1lcigpOz0wQT0NCn09MEE9DQpp
Zih0aGlzLnRpbWVyKXs9MEE9DQpyZXR1cm47PTBBPQ0KfT0wQT0NCnNldFRp
bWVvdXQoQUpTLiRwKHRoaXMub3B0aW9ucy5vblN0YXJ0LHRoaXMuZWxtKSwx
MCk7PTBBPQ0KdGhpcy5mcm9tPTNEXzE2Oz0wQT0NCnRoaXMudG89M0R0bzs9
MEE9DQp0aGlzLnRpbWU9M0RuZXcgRGF0ZSgpLmdldFRpbWUoKTs9MEE9DQp0
aGlzLnRpbWVyPTNEc2V0SW50ZXJ2YWwodGhpcy5zdGVwLE1hdGgucm91bmQo
MTAwMC90aGlzLm9wdGlvbnMuZnBzKSk7PTBBPQ0KcmV0dXJuIHRoaXM7PTBB
PQ0KfSxjdXN0b206ZnVuY3Rpb24oXzE4LHRvKXs9MEE9DQpyZXR1cm4gdGhp
cy5fc3RhcnQoXzE4LHRvKTs9MEE9DQp9LHNldDpmdW5jdGlvbih0byl7PTBB
PQ0KdGhpcy5ub3c9M0R0bzs9MEE9DQp0aGlzLmluY3JlYXNlKCk7PTBBPQ0K
cmV0dXJuIHRoaXM7PTBBPQ0KfSxzZXRTdHlsZTpmdW5jdGlvbihlbG0sXzFj
LHZhbCl7PTBBPQ0KaWYodGhpcy5wcm9wZXJ0eT0zRD0zRCJvcGFjaXR5Iil7
PTBBPQ0KQUpTLnNldE9wYWNpdHkoZWxtLHZhbCk7PTBBPQ0KfWVsc2V7PTBB
PQ0KQUpTLnNldFN0eWxlKGVsbSxfMWMsdmFsKTs9MEE9DQp9PTBBPQ0KfX0p
Oz0wQT0NCkFKUy5meC5TdHlsZT0zREFKUy5meC5CYXNlLmV4dGVuZCh7aW5p
dDpmdW5jdGlvbihlbG0sXzFmLF8yMCl7PTBBPQ0KdGhpcy5wYXJlbnQoKTs9
MEE9DQp0aGlzLmVsbT0zRGVsbTs9MEE9DQp0aGlzLnNldE9wdGlvbnMoXzIw
KTs9MEE9DQp0aGlzLnByb3BlcnR5PTNEXzFmOz0wQT0NCn0saW5jcmVhc2U6
ZnVuY3Rpb24oKXs9MEE9DQp0aGlzLnNldFN0eWxlKHRoaXMuZWxtLHRoaXMu
cHJvcGVydHksdGhpcy5ub3cpOz0wQT0NCn19KTs9MEE9DQpBSlMuZnguU3R5
bGVzPTNEQUpTLmZ4LkJhc2UuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGVsbSxf
MjIpez0wQT0NCnRoaXMucGFyZW50KCk7PTBBPQ0KdGhpcy5lbG09M0RBSlMu
JChlbG0pOz0wQT0NCnRoaXMuc2V0T3B0aW9ucyhfMjIpOz0wQT0NCnRoaXMu
bm93PTNEe307PTBBPQ0KfSxzZXROb3c6ZnVuY3Rpb24oKXs9MEE9DQpmb3Io
cCBpbiB0aGlzLmZyb20pez0wQT0NCnRoaXMubm93W3BdPTNEdGhpcy5jb21w
dXRlKHRoaXMuZnJvbVtwXSx0aGlzLnRvW3BdKTs9MEE9DQp9PTBBPQ0KfSxj
dXN0b206ZnVuY3Rpb24ob2JqKXs9MEE9DQppZih0aGlzLnRpbWVyJiZ0aGlz
Lm9wdGlvbnMud2FpdCl7PTBBPQ0KcmV0dXJuOz0wQT0NCn09MEE9DQp2YXIg
XzI0PTNEe307PTBBPQ0KdmFyIHRvPTNEe307PTBBPQ0KZm9yKHAgaW4gb2Jq
KXs9MEE9DQpfMjRbcF09M0RvYmpbcF1bMF07PTBBPQ0KdG9bcF09M0RvYmpb
cF1bMV07PTBBPQ0KfT0wQT0NCnJldHVybiB0aGlzLl9zdGFydChfMjQsdG8p
Oz0wQT0NCn0saW5jcmVhc2U6ZnVuY3Rpb24oKXs9MEE9DQpmb3IodmFyIHAg
aW4gdGhpcy5ub3cpez0wQT0NCnRoaXMuc2V0U3R5bGUodGhpcy5lbG0scCx0
aGlzLm5vd1twXSk7PTBBPQ0KfT0wQT0NCn19KTs9MEE9DQpBSlMuZnguVHJh
bnNpdGlvbnM9M0R7bGluZWFyOmZ1bmN0aW9uKHQsYixjLGQpez0wQT0NCnJl
dHVybiBjKnQvZCtiOz0wQT0NCn0sc2luZUluT3V0OmZ1bmN0aW9uKHQsYixj
LGQpez0wQT0NCnJldHVybiAtYy8yKihNYXRoLmNvcyhNYXRoLlBJKnQvZCkt
MSkrYjs9MEE9DQp9fTs9MEE9DQpzY3JpcHRfbG9hZGVkPTNEdHJ1ZTs9MEE9
DQo9MEE9DQo9MEE9DQpzY3JpcHRfbG9hZGVkPTNEdHJ1ZTsNCi0tLS0tLT1f
TmV4dFBhcnRfMDAwXzAwMDBfMDFDQzIxOEUuM0JGMjc1QzANCkNvbnRlbnQt
VHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtDQpDb250ZW50LVRyYW5z
ZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlDQpDb250ZW50LUxvY2F0
aW9uOiBodHRwOi8vd3d3LmNhcnRhc2kuaXQvZ3JleWJveC9nYl9zY3JpcHRz
LmpzDQoNCnZhciBHQl9DVVJSRU5UPTNEbnVsbDsNCkdCX2hpZGU9M0RmdW5j
dGlvbihjYil7DQpHQl9DVVJSRU5ULmhpZGUoY2IpOw0KfTsNCkdyZXlCb3g9
M0RuZXcgQUpTLkNsYXNzKHtpbml0OmZ1bmN0aW9uKF8yKXsNCnRoaXMudXNl
X2Z4PTNEQUpTLmZ4Ow0KdGhpcy50eXBlPTNEInBhZ2UiOw0KdGhpcy5vdmVy
bGF5X2NsaWNrX2Nsb3NlPTNEZmFsc2U7DQp0aGlzLnNhbHQ9M0QwOw0KdGhp
cy5yb290X2Rpcj0zREdCX1JPT1RfRElSOw0KdGhpcy5jYWxsYmFja19mbnM9
M0RbXTsNCnRoaXMucmVsb2FkX29uX2Nsb3NlPTNEZmFsc2U7DQp0aGlzLnNy
Y19sb2FkZXI9M0R0aGlzLnJvb3RfZGlyKyJsb2FkZXJfZnJhbWUuaHRtbCI7
DQp2YXIgXzM9M0R3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUuaW5kZXhPZigi
d3d3Iik7DQp2YXIgXzQ9M0R0aGlzLnNyY19sb2FkZXIuaW5kZXhPZigid3d3
Iik7DQppZihfMyE9M0QtMSYmXzQ9M0Q9M0QtMSl7DQp0aGlzLnNyY19sb2Fk
ZXI9M0R0aGlzLnNyY19sb2FkZXIucmVwbGFjZSgiOi8vIiwiOi8vd3d3LiIp
Ow0KfQ0KaWYoXzM9M0Q9M0QtMSYmXzQhPTNELTEpew0KdGhpcy5zcmNfbG9h
ZGVyPTNEdGhpcy5zcmNfbG9hZGVyLnJlcGxhY2UoIjovL3d3dy4iLCI6Ly8i
KTsNCn0NCnRoaXMuc2hvd19sb2FkaW5nPTNEdHJ1ZTsNCkFKUy51cGRhdGUo
dGhpcyxfMik7DQp9LGFkZENhbGxiYWNrOmZ1bmN0aW9uKGZuKXsNCmlmKGZu
KXsNCnRoaXMuY2FsbGJhY2tfZm5zLnB1c2goZm4pOw0KfQ0KfSxzaG93OmZ1
bmN0aW9uKF82KXsNCkdCX0NVUlJFTlQ9M0R0aGlzOw0KdGhpcy51cmw9M0Rf
NjsNCnZhciBfNz0zRFtBSlMuJGJ5dGMoIm9iamVjdCIpLEFKUy4kYnl0Yygi
c2VsZWN0IildOw0KQUpTLm1hcChBSlMuZmxhdHRlbkxpc3QoXzcpLGZ1bmN0
aW9uKF84KXsNCl84LnN0eWxlLnZpc2liaWxpdHk9M0QiaGlkZGVuIjsNCn0p
Ow0KdGhpcy5jcmVhdGVFbGVtZW50cygpOw0KcmV0dXJuIGZhbHNlOw0KfSxo
aWRlOmZ1bmN0aW9uKGNiKXsNCnZhciBtZT0zRHRoaXM7DQpBSlMuY2FsbExh
dGVyKGZ1bmN0aW9uKCl7DQp2YXIgX2I9M0RtZS5jYWxsYmFja19mbnM7DQpp
ZihfYiE9M0RbXSl7DQpBSlMubWFwKF9iLGZ1bmN0aW9uKGZuKXsNCmZuKCk7
DQp9KTsNCn0NCm1lLm9uSGlkZSgpOw0KaWYobWUudXNlX2Z4KXsNCnZhciBf
ZD0zRG1lLm92ZXJsYXk7DQpBSlMuZnguZmFkZU91dChtZS5vdmVybGF5LHtv
bkNvbXBsZXRlOmZ1bmN0aW9uKCl7DQpBSlMucmVtb3ZlRWxlbWVudChfZCk7
DQpfZD0zRG51bGw7DQp9LGR1cmF0aW9uOjMwMH0pOw0KQUpTLnJlbW92ZUVs
ZW1lbnQobWUuZ193aW5kb3cpOw0KfWVsc2V7DQpBSlMucmVtb3ZlRWxlbWVu
dChtZS5nX3dpbmRvdyxtZS5vdmVybGF5KTsNCn0NCm1lLnJlbW92ZUZyYW1l
KCk7DQpBSlMuUkVWKHdpbmRvdywic2Nyb2xsIixfR0Jfc2V0T3ZlcmxheURp
bWVuc2lvbik7DQpBSlMuUkVWKHdpbmRvdywicmVzaXplIixfR0JfdXBkYXRl
KTsNCnZhciBfZT0zRFtBSlMuJGJ5dGMoIm9iamVjdCIpLEFKUy4kYnl0Yygi
c2VsZWN0IildOw0KQUpTLm1hcChBSlMuZmxhdHRlbkxpc3QoX2UpLGZ1bmN0
aW9uKF9mKXsNCl9mLnN0eWxlLnZpc2liaWxpdHk9M0QidmlzaWJsZSI7DQp9
KTsNCkdCX0NVUlJFTlQ9M0RudWxsOw0KaWYobWUucmVsb2FkX29uX2Nsb3Nl
KXsNCndpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsNCn0NCmlmKEFKUy5pc0Z1
bmN0aW9uKGNiKSl7DQpjYigpOw0KfQ0KfSwxMCk7DQp9LHVwZGF0ZTpmdW5j
dGlvbigpew0KdGhpcy5zZXRPdmVybGF5RGltZW5zaW9uKCk7DQp0aGlzLnNl
dEZyYW1lU2l6ZSgpOw0KdGhpcy5zZXRXaW5kb3dQb3NpdGlvbigpOw0KfSxj
cmVhdGVFbGVtZW50czpmdW5jdGlvbigpew0KdGhpcy5pbml0T3ZlcmxheSgp
Ow0KdGhpcy5nX3dpbmRvdz0zREFKUy5ESVYoeyJpZCI6IkdCX3dpbmRvdyJ9
KTsNCkFKUy5oaWRlRWxlbWVudCh0aGlzLmdfd2luZG93KTsNCkFKUy5nZXRC
b2R5KCkuaW5zZXJ0QmVmb3JlKHRoaXMuZ193aW5kb3csdGhpcy5vdmVybGF5
Lm5leHRTaWJsaW5nKTsNCnRoaXMuaW5pdEZyYW1lKCk7DQp0aGlzLmluaXRI
b29rKCk7DQp0aGlzLnVwZGF0ZSgpOw0KdmFyIG1lPTNEdGhpczsNCmlmKHRo
aXMudXNlX2Z4KXsNCkFKUy5meC5mYWRlSW4odGhpcy5vdmVybGF5LHtkdXJh
dGlvbjozMDAsdG86MC43LG9uQ29tcGxldGU6ZnVuY3Rpb24oKXsNCm1lLm9u
U2hvdygpOw0KQUpTLnNob3dFbGVtZW50KG1lLmdfd2luZG93KTsNCm1lLnN0
YXJ0TG9hZGluZygpOw0KfX0pOw0KfWVsc2V7DQpBSlMuc2V0T3BhY2l0eSh0
aGlzLm92ZXJsYXksMC43KTsNCkFKUy5zaG93RWxlbWVudCh0aGlzLmdfd2lu
ZG93KTsNCnRoaXMub25TaG93KCk7DQp0aGlzLnN0YXJ0TG9hZGluZygpOw0K
fQ0KQUpTLkFFVih3aW5kb3csInNjcm9sbCIsX0dCX3NldE92ZXJsYXlEaW1l
bnNpb24pOw0KQUpTLkFFVih3aW5kb3csInJlc2l6ZSIsX0dCX3VwZGF0ZSk7
DQp9LHJlbW92ZUZyYW1lOmZ1bmN0aW9uKCl7DQp0cnl7DQpBSlMucmVtb3Zl
RWxlbWVudCh0aGlzLmlmcmFtZSk7DQp9DQpjYXRjaChlKXsNCn0NCnRoaXMu
aWZyYW1lPTNEbnVsbDsNCn0sc3RhcnRMb2FkaW5nOmZ1bmN0aW9uKCl7DQp0
aGlzLmlmcmFtZS5zcmM9M0R0aGlzLnNyY19sb2FkZXIrIj9zPTNEIit0aGlz
LnNhbHQrKzsNCkFKUy5zaG93RWxlbWVudCh0aGlzLmlmcmFtZSk7DQp9LHNl
dE92ZXJsYXlEaW1lbnNpb246ZnVuY3Rpb24oKXsNCnZhciBfMTE9M0RBSlMu
Z2V0V2luZG93U2l6ZSgpOw0KaWYoQUpTLmlzTW96aWxsYSgpfHxBSlMuaXNP
cGVyYSgpKXsNCkFKUy5zZXRXaWR0aCh0aGlzLm92ZXJsYXksIjEwMCUiKTsN
Cn1lbHNlew0KQUpTLnNldFdpZHRoKHRoaXMub3ZlcmxheSxfMTEudyk7DQp9
DQp2YXIgPQ0KXzEyPTNETWF0aC5tYXgoQUpTLmdldFNjcm9sbFRvcCgpK18x
MS5oLEFKUy5nZXRTY3JvbGxUb3AoKSt0aGlzLmhlaWdodCk7DQppZihfMTI8
QUpTLmdldFNjcm9sbFRvcCgpKXsNCkFKUy5zZXRIZWlnaHQodGhpcy5vdmVy
bGF5LF8xMik7DQp9ZWxzZXsNCkFKUy5zZXRIZWlnaHQodGhpcy5vdmVybGF5
LEFKUy5nZXRTY3JvbGxUb3AoKStfMTEuaCk7DQp9DQp9LGluaXRPdmVybGF5
OmZ1bmN0aW9uKCl7DQp0aGlzLm92ZXJsYXk9M0RBSlMuRElWKHsiaWQiOiJH
Ql9vdmVybGF5In0pOw0KaWYodGhpcy5vdmVybGF5X2NsaWNrX2Nsb3NlKXsN
CkFKUy5BRVYodGhpcy5vdmVybGF5LCJjbGljayIsR0JfaGlkZSk7DQp9DQpB
SlMuc2V0T3BhY2l0eSh0aGlzLm92ZXJsYXksMCk7DQpBSlMuZ2V0Qm9keSgp
Lmluc2VydEJlZm9yZSh0aGlzLm92ZXJsYXksQUpTLmdldEJvZHkoKS5maXJz
dENoaWxkKTsNCn0saW5pdEZyYW1lOmZ1bmN0aW9uKCl7DQppZighdGhpcy5p
ZnJhbWUpew0KdmFyIGQ9M0R7Im5hbWUiOiJHQl9mcmFtZSIsImNsYXNzIjoi
R0JfZnJhbWUiLCJmcmFtZUJvcmRlciI6MH07DQppZihBSlMuaXNJZSgpKXsN
CmQuc3JjPTNEImphdmFzY3JpcHQ6ZmFsc2U7ZG9jdW1lbnQud3JpdGUoXCJc
Iik7IjsNCn0NCnRoaXMuaWZyYW1lPTNEQUpTLklGUkFNRShkKTsNCnRoaXMu
bWlkZGxlX2NudD0zREFKUy5ESVYoeyJjbGFzcyI6ImNvbnRlbnQifSx0aGlz
LmlmcmFtZSk7DQp0aGlzLnRvcF9jbnQ9M0RBSlMuRElWKCk7DQp0aGlzLmJv
dHRvbV9jbnQ9M0RBSlMuRElWKCk7DQpBSlMuQUNOKHRoaXMuZ193aW5kb3cs
dGhpcy50b3BfY250LHRoaXMubWlkZGxlX2NudCx0aGlzLmJvdHRvbV9jbnQp
Ow0KfQ0KfSxvbkhpZGU6ZnVuY3Rpb24oKXsNCn0sb25TaG93OmZ1bmN0aW9u
KCl7DQp9LHNldEZyYW1lU2l6ZTpmdW5jdGlvbigpew0KfSxzZXRXaW5kb3dQ
b3NpdGlvbjpmdW5jdGlvbigpew0KfSxpbml0SG9vazpmdW5jdGlvbigpew0K
fX0pOw0KX0dCX3VwZGF0ZT0zRGZ1bmN0aW9uKCl7DQppZihHQl9DVVJSRU5U
KXsNCkdCX0NVUlJFTlQudXBkYXRlKCk7DQp9DQp9Ow0KX0dCX3NldE92ZXJs
YXlEaW1lbnNpb249M0RmdW5jdGlvbigpew0KaWYoR0JfQ1VSUkVOVCl7DQpH
Ql9DVVJSRU5ULnNldE92ZXJsYXlEaW1lbnNpb24oKTsNCn0NCn07DQpBSlMu
cHJlbG9hZEltYWdlcyhHQl9ST09UX0RJUisiaW5kaWNhdG9yLmdpZiIpOw0K
c2NyaXB0X2xvYWRlZD0zRHRydWU7DQp2YXIgR0JfU0VUUz0zRHt9Ow0KZnVu
Y3Rpb24gZGVjb0dyZXlib3hMaW5rcygpew0KdmFyIGFzPTNEQUpTLiRieXRj
KCJhIik7DQpBSlMubWFwKGFzLGZ1bmN0aW9uKGEpew0KaWYoYS5nZXRBdHRy
aWJ1dGUoImhyZWYiKSYmYS5nZXRBdHRyaWJ1dGUoInJlbCIpKXsNCnZhciBy
ZWw9M0RhLmdldEF0dHJpYnV0ZSgicmVsIik7DQppZihyZWwuaW5kZXhPZigi
Z2JfIik9M0Q9M0QwKXsNCnZhciBfMTc9M0RyZWwubWF0Y2goL1x3Ky8pWzBd
Ow0KdmFyIF8xOD0zRHJlbC5tYXRjaCgvXFsoLiopXF0vKVsxXTsNCnZhciBf
MTk9M0QwOw0KdmFyIF8xYT0zRHsiY2FwdGlvbiI6YS50aXRsZXx8IiIsInVy
bCI6YS5ocmVmfTsNCmlmKF8xNz0zRD0zRCJnYl9wYWdlc2V0Inx8XzE3PTNE
PTNEImdiX2ltYWdlc2V0Iil7DQppZighR0JfU0VUU1tfMThdKXsNCkdCX1NF
VFNbXzE4XT0zRFtdOw0KfQ0KR0JfU0VUU1tfMThdLnB1c2goXzFhKTsNCl8x
OT0zREdCX1NFVFNbXzE4XS5sZW5ndGg7DQp9DQppZihfMTc9M0Q9M0QiZ2Jf
cGFnZXNldCIpew0KYS5vbmNsaWNrPTNEZnVuY3Rpb24oKXsNCkdCX3Nob3dG
dWxsU2NyZWVuU2V0KEdCX1NFVFNbXzE4XSxfMTkpOw0KcmV0dXJuIGZhbHNl
Ow0KfTsNCn0NCmlmKF8xNz0zRD0zRCJnYl9pbWFnZXNldCIpew0KYS5vbmNs
aWNrPTNEZnVuY3Rpb24oKXsNCkdCX3Nob3dJbWFnZVNldChHQl9TRVRTW18x
OF0sXzE5KTsNCnJldHVybiBmYWxzZTsNCn07DQp9DQppZihfMTc9M0Q9M0Qi
Z2JfaW1hZ2UiKXsNCmEub25jbGljaz0zRGZ1bmN0aW9uKCl7DQpHQl9zaG93
SW1hZ2UoXzFhLmNhcHRpb24sXzFhLnVybCk7DQpyZXR1cm4gZmFsc2U7DQp9
Ow0KfQ0KaWYoXzE3PTNEPTNEImdiX3BhZ2UiKXsNCmEub25jbGljaz0zRGZ1
bmN0aW9uKCl7DQp2YXIgc3A9M0RfMTguc3BsaXQoLywgPy8pOw0KR0Jfc2hv
dyhfMWEuY2FwdGlvbixfMWEudXJsLHBhcnNlSW50KHNwWzFdKSxwYXJzZUlu
dChzcFswXSkpOw0KcmV0dXJuIGZhbHNlOw0KfTsNCn0NCmlmKF8xNz0zRD0z
RCJnYl9wYWdlX2ZzIil7DQphLm9uY2xpY2s9M0RmdW5jdGlvbigpew0KR0Jf
c2hvd0Z1bGxTY3JlZW4oXzFhLmNhcHRpb24sXzFhLnVybCk7DQpyZXR1cm4g
ZmFsc2U7DQp9Ow0KfQ0KaWYoXzE3PTNEPTNEImdiX3BhZ2VfY2VudGVyIil7
DQphLm9uY2xpY2s9M0RmdW5jdGlvbigpew0KdmFyIHNwPTNEXzE4LnNwbGl0
KC8sID8vKTsNCkdCX3Nob3dDZW50ZXIoXzFhLmNhcHRpb24sXzFhLnVybCxw
YXJzZUludChzcFsxXSkscGFyc2VJbnQoc3BbMF0pKTsNCnJldHVybiBmYWxz
ZTsNCn07DQp9DQp9DQp9DQp9KTsNCn0NCkFKUy5BRVYod2luZG93LCJsb2Fk
IixkZWNvR3JleWJveExpbmtzKTsNCkdCX3Nob3dJbWFnZT0zRGZ1bmN0aW9u
KF8xZCx1cmwsXzFmKXsNCnZhciA9DQpfMjA9M0R7d2lkdGg6MzAwLGhlaWdo
dDozMDAsdHlwZToiaW1hZ2UiLGZ1bGxzY3JlZW46ZmFsc2UsY2VudGVyX3dp
bjp0cnVlPQ0KLGNhcHRpb246XzFkLGNhbGxiYWNrX2ZuOl8xZn07DQp2YXIg
d2luPTNEbmV3IEdCX0dhbGxlcnkoXzIwKTsNCnJldHVybiB3aW4uc2hvdyh1
cmwpOw0KfTsNCkdCX3Nob3dQYWdlPTNEZnVuY3Rpb24oXzIyLHVybCxfMjQp
ew0KdmFyID0NCl8yNT0zRHt0eXBlOiJwYWdlIixjYXB0aW9uOl8yMixjYWxs
YmFja19mbjpfMjQsZnVsbHNjcmVlbjp0cnVlLGNlbnRlcl93aW49DQo6ZmFs
c2V9Ow0KdmFyIHdpbj0zRG5ldyBHQl9HYWxsZXJ5KF8yNSk7DQpyZXR1cm4g
d2luLnNob3codXJsKTsNCn07DQpHQl9HYWxsZXJ5PTNER3JleUJveC5leHRl
bmQoe2luaXQ6ZnVuY3Rpb24oXzI3KXsNCnRoaXMucGFyZW50KHt9KTsNCnRo
aXMuaW1nX2Nsb3NlPTNEdGhpcy5yb290X2RpcisiZ19jbG9zZS5naWYiOw0K
QUpTLnVwZGF0ZSh0aGlzLF8yNyk7DQp0aGlzLmFkZENhbGxiYWNrKHRoaXMu
Y2FsbGJhY2tfZm4pOw0KfSxpbml0SG9vazpmdW5jdGlvbigpew0KQUpTLmFk
ZENsYXNzKHRoaXMuZ193aW5kb3csIkdCX0dhbGxlcnkiKTsNCnZhciBfMjg9
M0RBSlMuRElWKHsiY2xhc3MiOiJpbm5lciJ9KTsNCnRoaXMuaGVhZGVyPTNE
QUpTLkRJVih7ImNsYXNzIjoiR0JfaGVhZGVyIn0sXzI4KTsNCkFKUy5zZXRP
cGFjaXR5KHRoaXMuaGVhZGVyLDApOw0KQUpTLmdldEJvZHkoKS5pbnNlcnRC
ZWZvcmUodGhpcy5oZWFkZXIsdGhpcy5vdmVybGF5Lm5leHRTaWJsaW5nKTsN
CnZhciA9DQpfMjk9M0RBSlMuVEQoeyJpZCI6IkdCX2NhcHRpb24iLCJjbGFz
cyI6ImNhcHRpb24iLCJ3aWR0aCI6IjQwJSJ9LHRoaXMuY2FwPQ0KdGlvbik7
DQp2YXIgXzJhPTNEQUpTLlREKHsiaWQiOiJHQl9taWRkbGUiLCJjbGFzcyI6
Im1pZGRsZSIsIndpZHRoIjoiMjAlIn0pOw0KdmFyIF8yYj0zREFKUy5JTUco
eyJzcmMiOnRoaXMuaW1nX2Nsb3NlfSk7DQpBSlMuQUVWKF8yYiwiY2xpY2si
LEdCX2hpZGUpOw0KdmFyIF8yYz0zREFKUy5URCh7ImNsYXNzIjoiY2xvc2Ui
LCJ3aWR0aCI6IjQwJSJ9LF8yYik7DQp2YXIgXzJkPTNEQUpTLlRCT0RZKEFK
Uy5UUihfMjksXzJhLF8yYykpOw0KdmFyIF8yZT0zREFKUy5UQUJMRSh7ImNl
bGxzcGFjaW5nIjoiMCIsImNlbGxwYWRkaW5nIjowLCJib3JkZXIiOjB9LF8y
ZCk7DQpBSlMuQUNOKF8yOCxfMmUpOw0KaWYodGhpcy5mdWxsc2NyZWVuKXsN
CkFKUy5BRVYod2luZG93LCJzY3JvbGwiLEFKUy4kYih0aGlzLnNldFdpbmRv
d1Bvc2l0aW9uLHRoaXMpKTsNCn1lbHNlew0KQUpTLkFFVih3aW5kb3csInNj
cm9sbCIsQUpTLiRiKHRoaXMuX3NldEhlYWRlclBvcyx0aGlzKSk7DQp9DQp9
LHNldEZyYW1lU2l6ZTpmdW5jdGlvbigpew0KdmFyIF8yZj0zRHRoaXMub3Zl
cmxheS5vZmZzZXRXaWR0aDsNCnZhciBfMzA9M0RBSlMuZ2V0V2luZG93U2l6
ZSgpOw0KaWYodGhpcy5mdWxsc2NyZWVuKXsNCnRoaXMud2lkdGg9M0RfMmYt
NDA7DQp0aGlzLmhlaWdodD0zRF8zMC5oLTgwOw0KfQ0KQUpTLnNldFdpZHRo
KHRoaXMuaWZyYW1lLHRoaXMud2lkdGgpOw0KQUpTLnNldEhlaWdodCh0aGlz
LmlmcmFtZSx0aGlzLmhlaWdodCk7DQpBSlMuc2V0V2lkdGgodGhpcy5oZWFk
ZXIsXzJmKTsNCn0sX3NldEhlYWRlclBvczpmdW5jdGlvbigpew0KQUpTLnNl
dFRvcCh0aGlzLmhlYWRlcixBSlMuZ2V0U2Nyb2xsVG9wKCkrMTApOw0KfSxz
ZXRXaW5kb3dQb3NpdGlvbjpmdW5jdGlvbigpew0KdmFyIF8zMT0zRHRoaXMu
b3ZlcmxheS5vZmZzZXRXaWR0aDsNCnZhciBfMzI9M0RBSlMuZ2V0V2luZG93
U2l6ZSgpOw0KQUpTLnNldExlZnQodGhpcy5nX3dpbmRvdywoKF8zMS01MC10
aGlzLndpZHRoKS8yKSk7DQp2YXIgXzMzPTNEQUpTLmdldFNjcm9sbFRvcCgp
KzU1Ow0KaWYoIXRoaXMuY2VudGVyX3dpbil7DQpBSlMuc2V0VG9wKHRoaXMu
Z193aW5kb3csXzMzKTsNCn1lbHNlew0KdmFyIGZsPTNEKChfMzIuaC10aGlz
LmhlaWdodCkvMikrMjArQUpTLmdldFNjcm9sbFRvcCgpOw0KaWYoZmw8MCl7
DQpmbD0zRDA7DQp9DQppZihfMzM+Zmwpew0KZmw9M0RfMzM7DQp9DQpBSlMu
c2V0VG9wKHRoaXMuZ193aW5kb3csZmwpOw0KfQ0KdGhpcy5fc2V0SGVhZGVy
UG9zKCk7DQp9LG9uSGlkZTpmdW5jdGlvbigpew0KQUpTLnJlbW92ZUVsZW1l
bnQodGhpcy5oZWFkZXIpOw0KQUpTLnJlbW92ZUNsYXNzKHRoaXMuZ193aW5k
b3csIkdCX0dhbGxlcnkiKTsNCn0sb25TaG93OmZ1bmN0aW9uKCl7DQppZih0
aGlzLnVzZV9meCl7DQpBSlMuZnguZmFkZUluKHRoaXMuaGVhZGVyLHt0bzox
fSk7DQp9ZWxzZXsNCkFKUy5zZXRPcGFjaXR5KHRoaXMuaGVhZGVyLDEpOw0K
fQ0KfX0pOw0KQUpTLnByZWxvYWRJbWFnZXMoR0JfUk9PVF9ESVIrImdfY2xv
c2UuZ2lmIik7DQpHQl9zaG93RnVsbFNjcmVlblNldD0zRGZ1bmN0aW9uKHNl
dCxfMzYsXzM3KXsNCnZhciBfMzg9M0R7dHlwZToicGFnZSIsZnVsbHNjcmVl
bjp0cnVlLGNlbnRlcl93aW46ZmFsc2V9Ow0KdmFyIF8zOT0zRG5ldyBHQl9T
ZXRzKF8zOCxzZXQpOw0KXzM5LmFkZENhbGxiYWNrKF8zNyk7DQpfMzkuc2hv
d1NldChfMzYtMSk7DQpyZXR1cm4gZmFsc2U7DQp9Ow0KR0Jfc2hvd0ltYWdl
U2V0PTNEZnVuY3Rpb24oc2V0LF8zYixfM2Mpew0KdmFyID0NCl8zZD0zRHt0
eXBlOiJpbWFnZSIsZnVsbHNjcmVlbjpmYWxzZSxjZW50ZXJfd2luOnRydWUs
d2lkdGg6MzAwLGhlaWdodDozMDA9DQp9Ow0KdmFyIF8zZT0zRG5ldyBHQl9T
ZXRzKF8zZCxzZXQpOw0KXzNlLmFkZENhbGxiYWNrKF8zYyk7DQpfM2Uuc2hv
d1NldChfM2ItMSk7DQpyZXR1cm4gZmFsc2U7DQp9Ow0KR0JfU2V0cz0zREdC
X0dhbGxlcnkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKF8zZixzZXQpew0KdGhp
cy5wYXJlbnQoXzNmKTsNCmlmKCF0aGlzLmltZ19uZXh0KXsNCnRoaXMuaW1n
X25leHQ9M0R0aGlzLnJvb3RfZGlyKyJuZXh0LmdpZiI7DQp9DQppZighdGhp
cy5pbWdfcHJldil7DQp0aGlzLmltZ19wcmV2PTNEdGhpcy5yb290X2Rpcisi
cHJldi5naWYiOw0KfQ0KdGhpcy5jdXJyZW50X3NldD0zRHNldDsNCn0sc2hv
d1NldDpmdW5jdGlvbihfNDEpew0KdGhpcy5jdXJyZW50X2luZGV4PTNEXzQx
Ow0KdmFyIF80Mj0zRHRoaXMuY3VycmVudF9zZXRbdGhpcy5jdXJyZW50X2lu
ZGV4XTsNCnRoaXMuc2hvdyhfNDIudXJsKTsNCnRoaXMuX3NldENhcHRpb24o
XzQyLmNhcHRpb24pOw0KdGhpcy5idG5fcHJldj0zREFKUy5JTUcoeyJjbGFz
cyI6ImxlZnQiLHNyYzp0aGlzLmltZ19wcmV2fSk7DQp0aGlzLmJ0bl9uZXh0
PTNEQUpTLklNRyh7ImNsYXNzIjoicmlnaHQiLHNyYzp0aGlzLmltZ19uZXh0
fSk7DQpBSlMuQUVWKHRoaXMuYnRuX3ByZXYsImNsaWNrIixBSlMuJGIodGhp
cy5zd2l0Y2hQcmV2LHRoaXMpKTsNCkFKUy5BRVYodGhpcy5idG5fbmV4dCwi
Y2xpY2siLEFKUy4kYih0aGlzLnN3aXRjaE5leHQsdGhpcykpOw0KR0JfU1RB
VFVTPTNEQUpTLlNQQU4oeyJjbGFzcyI6IkdCX25hdlN0YXR1cyJ9KTsNCkFK
Uy5BQ04oQUpTLiQoIkdCX21pZGRsZSIpLHRoaXMuYnRuX3ByZXYsR0JfU1RB
VFVTLHRoaXMuYnRuX25leHQpOw0KdGhpcy51cGRhdGVTdGF0dXMoKTsNCn0s
dXBkYXRlU3RhdHVzOmZ1bmN0aW9uKCl7DQpBSlMuc2V0SFRNTChHQl9TVEFU
VVMsKHRoaXMuY3VycmVudF9pbmRleCsxKSsiIC8gPQ0KIit0aGlzLmN1cnJl
bnRfc2V0Lmxlbmd0aCk7DQppZih0aGlzLmN1cnJlbnRfaW5kZXg9M0Q9M0Qw
KXsNCkFKUy5hZGRDbGFzcyh0aGlzLmJ0bl9wcmV2LCJkaXNhYmxlZCIpOw0K
fWVsc2V7DQpBSlMucmVtb3ZlQ2xhc3ModGhpcy5idG5fcHJldiwiZGlzYWJs
ZWQiKTsNCn0NCmlmKHRoaXMuY3VycmVudF9pbmRleD0zRD0zRHRoaXMuY3Vy
cmVudF9zZXQubGVuZ3RoLTEpew0KQUpTLmFkZENsYXNzKHRoaXMuYnRuX25l
eHQsImRpc2FibGVkIik7DQp9ZWxzZXsNCkFKUy5yZW1vdmVDbGFzcyh0aGlz
LmJ0bl9uZXh0LCJkaXNhYmxlZCIpOw0KfQ0KfSxfc2V0Q2FwdGlvbjpmdW5j
dGlvbihfNDMpew0KQUpTLnNldEhUTUwoQUpTLiQoIkdCX2NhcHRpb24iKSxf
NDMpOw0KfSx1cGRhdGVGcmFtZTpmdW5jdGlvbigpew0KdmFyIF80ND0zRHRo
aXMuY3VycmVudF9zZXRbdGhpcy5jdXJyZW50X2luZGV4XTsNCnRoaXMuX3Nl
dENhcHRpb24oXzQ0LmNhcHRpb24pOw0KdGhpcy51cmw9M0RfNDQudXJsOw0K
dGhpcy5zdGFydExvYWRpbmcoKTsNCn0sc3dpdGNoUHJldjpmdW5jdGlvbigp
ew0KaWYodGhpcy5jdXJyZW50X2luZGV4IT0zRDApew0KdGhpcy5jdXJyZW50
X2luZGV4LS07DQp0aGlzLnVwZGF0ZUZyYW1lKCk7DQp0aGlzLnVwZGF0ZVN0
YXR1cygpOw0KfQ0KfSxzd2l0Y2hOZXh0OmZ1bmN0aW9uKCl7DQppZih0aGlz
LmN1cnJlbnRfaW5kZXghPTNEdGhpcy5jdXJyZW50X3NldC5sZW5ndGgtMSl7
DQp0aGlzLmN1cnJlbnRfaW5kZXgrKzsNCnRoaXMudXBkYXRlRnJhbWUoKTsN
CnRoaXMudXBkYXRlU3RhdHVzKCk7DQp9DQp9fSk7DQpBSlMuQUVWKHdpbmRv
dywibG9hZCIsZnVuY3Rpb24oKXsNCkFKUy5wcmVsb2FkSW1hZ2VzKEdCX1JP
T1RfRElSKyJuZXh0LmdpZiIsR0JfUk9PVF9ESVIrInByZXYuZ2lmIik7DQp9
KTsNCkdCX3Nob3c9M0RmdW5jdGlvbihfNDUsdXJsLF80NyxfNDgsXzQ5KXsN
CnZhciA9DQpfNGE9M0R7Y2FwdGlvbjpfNDUsaGVpZ2h0Ol80N3x8NTAwLHdp
ZHRoOl80OHx8NTAwLGZ1bGxzY3JlZW46ZmFsc2UsY2FsbGJhPQ0KY2tfZm46
XzQ5fTsNCnZhciB3aW49M0RuZXcgR0JfV2luZG93KF80YSk7DQpyZXR1cm4g
d2luLnNob3codXJsKTsNCn07DQpHQl9zaG93Q2VudGVyPTNEZnVuY3Rpb24o
XzRjLHVybCxfNGUsXzRmLF81MCl7DQp2YXIgPQ0KXzUxPTNEe2NhcHRpb246
XzRjLGNlbnRlcl93aW46dHJ1ZSxoZWlnaHQ6XzRlfHw1MDAsd2lkdGg6XzRm
fHw1MDAsZnVsbHNjcj0NCmVlbjpmYWxzZSxjYWxsYmFja19mbjpfNTB9Ow0K
dmFyIHdpbj0zRG5ldyBHQl9XaW5kb3coXzUxKTsNCnJldHVybiB3aW4uc2hv
dyh1cmwpOw0KfTsNCkdCX3Nob3dGdWxsU2NyZWVuPTNEZnVuY3Rpb24oXzUz
LHVybCxfNTUpew0KdmFyIF81Nj0zRHtjYXB0aW9uOl81MyxmdWxsc2NyZWVu
OnRydWUsY2FsbGJhY2tfZm46XzU1fTsNCnZhciB3aW49M0RuZXcgR0JfV2lu
ZG93KF81Nik7DQpyZXR1cm4gd2luLnNob3codXJsKTsNCn07DQpHQl9XaW5k
b3c9M0RHcmV5Qm94LmV4dGVuZCh7aW5pdDpmdW5jdGlvbihfNTgpew0KdGhp
cy5wYXJlbnQoe30pOw0KdGhpcy5pbWdfaGVhZGVyPTNEdGhpcy5yb290X2Rp
cisiaGVhZGVyX2JnLmdpZiI7DQp0aGlzLmltZ19jbG9zZT0zRHRoaXMucm9v
dF9kaXIrIndfY2xvc2UuZ2lmIjsNCnRoaXMuc2hvd19jbG9zZV9pbWc9M0R0
cnVlOw0KQUpTLnVwZGF0ZSh0aGlzLF81OCk7DQp0aGlzLmFkZENhbGxiYWNr
KHRoaXMuY2FsbGJhY2tfZm4pOw0KfSxpbml0SG9vazpmdW5jdGlvbigpew0K
QUpTLmFkZENsYXNzKHRoaXMuZ193aW5kb3csIkdCX1dpbmRvdyIpOw0KdGhp
cy5oZWFkZXI9M0RBSlMuVEFCTEUoeyJjbGFzcyI6ImhlYWRlciJ9KTsNCnRo
aXMuaGVhZGVyLnN0eWxlLmJhY2tncm91bmRJbWFnZT0zRCJ1cmwoIit0aGlz
LmltZ19oZWFkZXIrIikiOw0KdmFyIF81OT0zREFKUy5URCh7ImNsYXNzIjoi
Y2FwdGlvbiJ9LHRoaXMuY2FwdGlvbik7DQp2YXIgXzVhPTNEQUpTLlREKHsi
Y2xhc3MiOiJjbG9zZSJ9KTsNCmlmKHRoaXMuc2hvd19jbG9zZV9pbWcpew0K
dmFyIF81Yj0zREFKUy5JTUcoeyJzcmMiOnRoaXMuaW1nX2Nsb3NlfSk7DQp2
YXIgXzVjPTNEQUpTLlNQQU4oIkNoaXVkaSIpOyAvKiBjaGl1ZGkgKi8NCnZh
ciBidG49M0RBSlMuRElWKF81YixfNWMpOw0KQUpTLkFFVihbXzViLF81Y10s
Im1vdXNlb3ZlciIsZnVuY3Rpb24oKXsNCkFKUy5hZGRDbGFzcyhfNWMsIm9u
Iik7DQp9KTsNCkFKUy5BRVYoW181YixfNWNdLCJtb3VzZW91dCIsZnVuY3Rp
b24oKXsNCkFKUy5yZW1vdmVDbGFzcyhfNWMsIm9uIik7DQp9KTsNCkFKUy5B
RVYoW181YixfNWNdLCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7DQpBSlMuYWRk
Q2xhc3MoXzVjLCJjbGljayIpOw0KfSk7DQpBSlMuQUVWKFtfNWIsXzVjXSwi
bW91c2V1cCIsZnVuY3Rpb24oKXsNCkFKUy5yZW1vdmVDbGFzcyhfNWMsImNs
aWNrIik7DQp9KTsNCkFKUy5BRVYoW181YixfNWNdLCJjbGljayIsR0JfaGlk
ZSk7DQpBSlMuQUNOKF81YSxidG4pOw0KfQ0KdGJvZHlfaGVhZGVyPTNEQUpT
LlRCT0RZKCk7DQpBSlMuQUNOKHRib2R5X2hlYWRlcixBSlMuVFIoXzU5LF81
YSkpOw0KQUpTLkFDTih0aGlzLmhlYWRlcix0Ym9keV9oZWFkZXIpOw0KQUpT
LkFDTih0aGlzLnRvcF9jbnQsdGhpcy5oZWFkZXIpOw0KaWYodGhpcy5mdWxs
c2NyZWVuKXsNCkFKUy5BRVYod2luZG93LCJzY3JvbGwiLEFKUy4kYih0aGlz
LnNldFdpbmRvd1Bvc2l0aW9uLHRoaXMpKTsNCn0NCn0sc2V0RnJhbWVTaXpl
OmZ1bmN0aW9uKCl7DQppZih0aGlzLmZ1bGxzY3JlZW4pew0KdmFyIF81ZT0z
REFKUy5nZXRXaW5kb3dTaXplKCk7DQpvdmVybGF5X2g9M0RfNWUuaDsNCnRo
aXMud2lkdGg9M0RNYXRoLnJvdW5kKHRoaXMub3ZlcmxheS5vZmZzZXRXaWR0
aC0odGhpcy5vdmVybGF5Lm9mZnNldFdpZHQ9DQpoLzEwMCkqMTApOw0KdGhp
cy5oZWlnaHQ9M0RNYXRoLnJvdW5kKG92ZXJsYXlfaC0ob3ZlcmxheV9oLzEw
MCkqMTApOw0KfQ0KQUpTLnNldFdpZHRoKHRoaXMuaGVhZGVyLHRoaXMud2lk
dGgrNik7DQpBSlMuc2V0V2lkdGgodGhpcy5pZnJhbWUsdGhpcy53aWR0aCk7
DQpBSlMuc2V0SGVpZ2h0KHRoaXMuaWZyYW1lLHRoaXMuaGVpZ2h0KTsNCn0s
c2V0V2luZG93UG9zaXRpb246ZnVuY3Rpb24oKXsNCnZhciBfNWY9M0RBSlMu
Z2V0V2luZG93U2l6ZSgpOw0KQUpTLnNldExlZnQodGhpcy5nX3dpbmRvdywo
KF81Zi53LXRoaXMud2lkdGgpLzIpLTEzKTsNCmlmKCF0aGlzLmNlbnRlcl93
aW4pew0KQUpTLnNldFRvcCh0aGlzLmdfd2luZG93LEFKUy5nZXRTY3JvbGxU
b3AoKSk7DQp9ZWxzZXsNCnZhciBmbD0zRCgoXzVmLmgtdGhpcy5oZWlnaHQp
LzIpLTIwK0FKUy5nZXRTY3JvbGxUb3AoKTsNCmlmKGZsPDApew0KZmw9M0Qw
Ow0KfQ0KQUpTLnNldFRvcCh0aGlzLmdfd2luZG93LGZsKTsNCn0NCn19KTsN
CkFKUy5wcmVsb2FkSW1hZ2VzKEdCX1JPT1RfRElSKyJ3X2Nsb3NlLmdpZiIs
R0JfUk9PVF9ESVIrImhlYWRlcl9iZy5naWYiKTs9DQoNCg0KDQpzY3JpcHRf
bG9hZGVkPTNEdHJ1ZTsNCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMDBfMDFD
QzIxOEUuM0JGMjc1QzANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQt
cHJpbnRhYmxlDQpDb250ZW50LUxvY2F0aW9uOiBodHRwOi8vd3d3LmNhcnRh
c2kuaXQvamF2YXNjcmlwdC9ob21lLmpzDQoNCi8vbW9kaWZpY2FyZQ0KdmFy
IGNvbnRlbnRfaG9tZT0zRCIvcG9wdXAvIjsNCnZhciBob21lID0zRCIvZ3R3
cGFnZXMiOw0KdmFyIHBvcnRhSHR0cHMgPTNEIiI7DQoNCi8vZGEgbm9uIG1v
ZGlmaWNhcmUNCnZhciBjb250ZW50X2NsdWI9M0Rob21lKyIvaW9zaS8iOw0K
dmFyIGNvbnRlbnRfY2FydGU9M0Rob21lKyIvY2FydGUvIjsNCg0KZnVuY3Rp
b24gZ29Jbml6aWF0aXZhTWVzZShwYXJhbSkgew0KCWRvY3VtZW50LmdvdG9w
YWdlLmFjdGlvbiA9M0QgaG9tZSsiL2NvbW1vbi9pbmRleC5qc3A/aWQ9M0RX
UXhFVUp1ZFFRIjsNCglkb2N1bWVudC5nb3RvcGFnZS5qc3BOYW1lLnZhbHVl
PTNEIi9pbXBlZ25vX3NvY2lhbGUvaW5kZXhfZ28uanNwIjsNCglkb2N1bWVu
dC5nb3RvcGFnZS5wYXJhbS52YWx1ZT0zRHBhcmFtOw0KCWRvY3VtZW50Lmdv
dG9wYWdlLnN1Ym1pdCgpOw0KfQ0KZnVuY3Rpb24gZ29Qb3B1cChwYXJhbSkg
ew0KCXZhciBhcmdzID0zRCBwYXJhbS5zcGxpdCgiOyIpOw0KCWlmKGFyZ3Nb
MV09M0Q9M0RudWxsKXsNCgkJYXJnc1sxXT0zRDMwMDsNCgl9DQoJaWYoYXJn
c1syXT0zRD0zRG51bGwpIHsNCgkJYXJnc1syXT0zRDMwMDsNCgl9DQoJaWYo
cGFyYW0uaW5kZXhPZignLmpzcCcpIT0zRC0xKSB7DQoJCT0NCndpbmRvdy5v
cGVuKGhvbWUrYXJnc1swXSwnJywnd2lkdGg9M0QnK2FyZ3NbMV0rJyxoZWln
aHQ9M0QnK2FyZ3NbMl0rJyxzY3I9DQpvbGxiYXJzPTNEeWVzJyk7DQoJfSBl
bHNlIHsNCgkJPQ0Kd2luZG93Lm9wZW4oY29udGVudF9ob21lK2FyZ3NbMF0s
JycsJ3dpZHRoPTNEJythcmdzWzFdKycsaGVpZ2h0PTNEJythcmdzWz0NCjJd
Kycsc2Nyb2xsYmFycz0zRHllcycpOw0KCX0NCn0NCmZ1bmN0aW9uIGxvYWQo
cGFnZSl7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlbGFpbycpLnNy
Yz0zRGNvbnRlbnRfaG9tZStwYWdlOw0KfQ0KZnVuY3Rpb24gaHJlZihwYWdl
KXsNCglkb2N1bWVudC5sb2NhdGlvbi5ocmVmPTNEY29udGVudF9ob21lK3Bh
Z2U7DQp9DQpmdW5jdGlvbiBnb0NsdWJKc3AocGFnZSl7DQoJZG9jdW1lbnQu
bG9jYXRpb24uaHJlZj0zRGNvbnRlbnRfY2x1YitwYWdlOw0KfQ0KZnVuY3Rp
b24gZ29DbHViSnNwRXgocGFyYW0pew0KCXZhciBhcmdzID0zRCBwYXJhbS5z
cGxpdCgiOyIpOw0KCWlmKGFyZ3NbMV09M0Q9M0RudWxsKXsNCgkJYXJnc1sx
XT0zRDMwMDsNCgl9DQoJaWYoYXJnc1syXT0zRD0zRG51bGwpIHsNCgkJYXJn
c1syXT0zRDMwMDsNCgl9DQoJLy9kb2N1bWVudC5sb2NhdGlvbi5ocmVmPTNE
Y29udGVudF9jbHViK3BhZ2U7DQoJPQ0Kd2luZG93Lm9wZW4oY29udGVudF9j
bHViK2FyZ3NbMF0sJycsJ3dpZHRoPTNEJythcmdzWzFdKycsaGVpZ2h0PTNE
JythcmdzWz0NCjJdKycsc2Nyb2xsYmFycz0zRHllcycpOw0KfQ0KZnVuY3Rp
b24gZ29Qb3B1cENsdWJKc3AocGFnZSxwYXJhbSl7DQoJd2luZG93Lm9wZW4o
Y29udGVudF9jbHViK3BhZ2UsJycscGFyYW0rJyxzY3JvbGxiYXJzPTNEeWVz
Jyk7DQp9DQpmdW5jdGlvbiBnb1BvcHVwQ2FydGVKc3AocGFnZSxwYXJhbSl7
DQoJd2luZG93Lm9wZW4oY29udGVudF9jYXJ0ZStwYWdlLCcnLHBhcmFtKycs
c2Nyb2xsYmFycz0zRHllcycpOw0KfQ0KZnVuY3Rpb24gTU1fc3dhcEltZ1Jl
c3RvcmUoKSB7IC8vdjMuMA0KICB2YXIgaSx4LGE9M0Rkb2N1bWVudC5NTV9z
cjsgPQ0KZm9yKGk9M0QwO2EmJmk8YS5sZW5ndGgmJih4PTNEYVtpXSkmJngu
b1NyYztpKyspIHguc3JjPTNEeC5vU3JjOw0KfQ0KDQpmdW5jdGlvbiBNTV9w
cmVsb2FkSW1hZ2VzKCkgeyAvL3YzLjANCiAgdmFyIGQ9M0Rkb2N1bWVudDsg
aWYoZC5pbWFnZXMpeyBpZighZC5NTV9wKSBkLk1NX3A9M0RuZXcgQXJyYXko
KTsNCiAgICB2YXIgaSxqPTNEZC5NTV9wLmxlbmd0aCxhPTNETU1fcHJlbG9h
ZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTNEMDsgPQ0KaTxhLmxlbmd0aDsg
aSsrKQ0KICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9M0QwKXsgZC5NTV9w
W2pdPTNEbmV3IEltYWdlOyA9DQpkLk1NX3BbaisrXS5zcmM9M0RhW2ldO319
DQp9DQoNCmZ1bmN0aW9uIE1NX2ZpbmRPYmoobiwgZCkgeyAvL3Y0LjAxDQog
IHZhciBwLGkseDsgIGlmKCFkKSBkPTNEZG9jdW1lbnQ7ID0NCmlmKChwPTNE
bi5pbmRleE9mKCI/IikpPjAmJnBhcmVudC5mcmFtZXMubGVuZ3RoKSB7DQog
ICAgZD0zRHBhcmVudC5mcmFtZXNbbi5zdWJzdHJpbmcocCsxKV0uZG9jdW1l
bnQ7IG49M0RuLnN1YnN0cmluZygwLHApO30NCiAgaWYoISh4PTNEZFtuXSkm
JmQuYWxsKSB4PTNEZC5hbGxbbl07IGZvciA9DQooaT0zRDA7IXgmJmk8ZC5m
b3Jtcy5sZW5ndGg7aSsrKSB4PTNEZC5mb3Jtc1tpXVtuXTsNCiAgZm9yKGk9
M0QwOyF4JiZkLmxheWVycyYmaTxkLmxheWVycy5sZW5ndGg7aSsrKSA9DQp4
PTNETU1fZmluZE9iaihuLGQubGF5ZXJzW2ldLmRvY3VtZW50KTsNCiAgaWYo
IXggJiYgZC5nZXRFbGVtZW50QnlJZCkgeD0zRGQuZ2V0RWxlbWVudEJ5SWQo
bik7IHJldHVybiB4Ow0KfQ0KDQpmdW5jdGlvbiBNTV9zd2FwSW1hZ2UoKSB7
IC8vdjMuMA0KICB2YXIgaSxqPTNEMCx4LGE9M0RNTV9zd2FwSW1hZ2UuYXJn
dW1lbnRzOyBkb2N1bWVudC5NTV9zcj0zRG5ldyBBcnJheTsgPQ0KZm9yKGk9
M0QwO2k8KGEubGVuZ3RoLTIpO2krPTNEMykNCiAgIGlmICgoeD0zRE1NX2Zp
bmRPYmooYVtpXSkpIT0zRG51bGwpe2RvY3VtZW50Lk1NX3NyW2orK109M0R4
OyA9DQppZigheC5vU3JjKSB4Lm9TcmM9M0R4LnNyYzsgeC5zcmM9M0RhW2kr
Ml07fQ0KfQ0KDQpmdW5jdGlvbiBNTV9qdW1wTWVudSh0YXJnLHNlbE9iaixy
ZXN0b3JlKXsgLy92My4wDQogID0NCmV2YWwodGFyZysiLmxvY2F0aW9uPTNE
JyIrc2VsT2JqLm9wdGlvbnNbc2VsT2JqLnNlbGVjdGVkSW5kZXhdLnZhbHVl
KyInIik9DQo7DQogIGlmIChyZXN0b3JlKSBzZWxPYmouc2VsZWN0ZWRJbmRl
eD0zRDA7DQp9DQoNCg0KDQovLyBjb2RpY2UgV1QNCg0KDQpmdW5jdGlvbiBh
ZGRXdFBhcmFtKGRlc3RpbmF0aW9uKXsNCgl2YXIgYmFyUGFyYW1zID0zRCB3
aW5kb3cubG9jYXRpb24uc2VhcmNoOw0KCXZhciBmcm9tID0zRCBiYXJQYXJh
bXMuaW5kZXhPZignV1QubWNfaWQnLDApOw0KCXZhciBuZXdQYXIgPTNEICcn
Ow0KCWlmIChmcm9tPj0zRDApew0KCQl2YXIgdGVtcCA9M0QgYmFyUGFyYW1z
LnN1YnN0cmluZyhmcm9tKTsNCgkJdmFyIHRvID0zRCB0ZW1wLmluZGV4T2Yo
JyYnKTsNCgkJaWYgKHRvPDApew0KCQkJbmV3UGFyID0zRCBiYXJQYXJhbXMu
c3Vic3RyaW5nKGZyb20rOSk7DQoJCQkvLyBhbGVydCgnMSAtICcgKyBuZXdQ
YXIpOw0KCQl9DQoJCWVsc2Ugew0KCQkJbmV3UGFyID0zRCBiYXJQYXJhbXMu
c3Vic3RyaW5nKGZyb20rOSx0bysxKTsNCgkJCS8vIGFsZXJ0KCcyIC0gJyAr
IG5ld1Bhcik7DQoJCX0NCgkJbmV3UGFyID0zRCAnJldULm1jX2lkPTNEJyAr
IG5ld1Bhcg0KCX09MjANCgl2YXIgZGltWD0zRHNjcmVlbi53aWR0aDsgLy9s
YXJnaGV6emEgcGFnaW5hDQoJdmFyIGRpbVk9M0RzY3JlZW4uaGVpZ2h0OyAv
L2x1bmdoZXp6YSBwYWdpbmENCglkZXN0aW5hdGlvbiA9M0QgZGVzdGluYXRp
b24gKyBuZXdQYXI7DQoJLy8gYWxlcnQoZGVzdGluYXRpb24pOw0KCT0NCndp
bmRvdy5vcGVuKGRlc3RpbmF0aW9uLCduZXdXaW4nLCd0b29sYmFyPTNEbm8s
c3RhdHVzPTNEbm8sc2Nyb2xsYmFycz0zRHk9DQplcyxtZW51YmFyPTNEbm8s
d2lkdGg9M0QnK2RpbVgrJyxoZWlnaHQ9M0QnK2RpbVkrJyxsZWZ0PTNENzEy
LCA9DQp0b3A9M0QzMDAnKTsNCn0NCg0KDQoNCmZ1bmN0aW9uIGFkZFd0UGFy
YW1UQUIoZGVzdGluYXRpb24pew0KLy8gSU1QT1JUQU5URTogREEgVVRJTEla
WkFSRSBTT0xPIE5FTExFIENBTVBBR05FLCBzZXJ2ZSBwZXIgdGVuZXJlIGlu
ID0NCm1lbW9yaWEgaWwgY29kaWNlIFdUIHF1YWxvcmEgc2kgYXJyaXZpIGFs
bGEgbGFuZGluZyBwYWdlIGRhIHBhZ2luYSA9DQppbnRlcm1lZGlhDQoJdmFy
IGJhclBhcmFtcyA9M0Qgd2luZG93LmxvY2F0aW9uLnNlYXJjaDsNCgl2YXIg
ZnJvbSA9M0QgYmFyUGFyYW1zLmluZGV4T2YoJ1dULm1jX2lkJywwKTsNCgl2
YXIgbmV3UGFyID0zRCAnJzsNCglpZiAoZnJvbT49M0QwKXsNCgkJdmFyIHRl
bXAgPTNEIGJhclBhcmFtcy5zdWJzdHJpbmcoZnJvbSk7DQoJCXZhciB0byA9
M0QgdGVtcC5pbmRleE9mKCcmJyk7DQoJCWlmICh0bzwwKXsNCgkJCW5ld1Bh
ciA9M0QgYmFyUGFyYW1zLnN1YnN0cmluZyhmcm9tKzkpOw0KCQkJLy8gYWxl
cnQoJzEgLSAnICsgbmV3UGFyKTsNCgkJfQ0KCQllbHNlIHsNCgkJCW5ld1Bh
ciA9M0QgYmFyUGFyYW1zLnN1YnN0cmluZyhmcm9tKzksdG8rMSk7DQoJCQkv
LyBhbGVydCgnMiAtICcgKyBuZXdQYXIpOw0KCQl9DQoJCW5ld1BhciA9M0Qg
JyZXVC5tY19pZD0zRCcgKyBuZXdQYXINCgl9PTIwDQoJdmFyIGRpbVg9M0Rz
Y3JlZW4ud2lkdGg7IC8vbGFyZ2hlenphIHBhZ2luYQ0KCXZhciBkaW1ZPTNE
c2NyZWVuLmhlaWdodDsgLy9sdW5naGV6emEgcGFnaW5hDQoJZGVzdGluYXRp
b24gPTNEIGRlc3RpbmF0aW9uICsgbmV3UGFyOw0KCS8vIGFsZXJ0KGRlc3Rp
bmF0aW9uKTsNCgl3aW5kb3cubG9jYXRpb24uaHJlZiA9M0QgZGVzdGluYXRp
b247DQoJPQ0KLy93aW5kb3cub3BlbihkZXN0aW5hdGlvbiwnbmV3V2luJywn
dG9vbGJhcj0zRHllcyxzdGF0dXM9M0R5ZXMsc2Nyb2xsYmFycz0NCj0zRHll
cyxtZW51YmFyPTNEeWVzLHdpZHRoPTNEJytkaW1YKycsaGVpZ2h0PTNEJytk
aW1ZKycsbGVmdD0zRDcxMiwgPQ0KdG9wPTNEMzAwJyk7DQp9DQoNCmZ1bmN0
aW9uIGNoYW5nZVd0UGFyYW0obGluaywgbmV3Q29kZSwgX25ld1dpbmRvdyl7
DQoJLy8gQSBUIFQgRSBOIFogSSBPIE4gRTo9MjANCgkvLyBzZSwgbmVsIGxp
bmsgZGkgcHJvdmVuaWVuemEsIGRpIHBhcmFtZXRyaSAiV1QubWNfaWQiIGNl
IG4nPUU4IHBpPUY5ID0NCmRpIHVubywgc29sbyBpbCBwcmltbyB2aWVuZSBj
b25zaWRlcmF0bw0KCS8vIHBhcmFtZXRybyBfbmV3V2luZG93ID0zRCBzZSB0
cnVlIGlsIGxpbmsgY29udGVudXRvIGluICdsaW5rJyBzYXI9RTAgPQ0KZXNz
ZXJlIGFwZXJ0byBpbiB1bmEgbnVvdmEgZmluZXN0cmE7DQoJLy8gcGFyYW1l
dHJvIG5ld0NvZGUgPTNEIGNvZGljZSBkYSBhZ2dpdW5nZXJlIGFsbGEgZmlu
ZSBkZWwgdmFsb3JlIGRlbCA9DQpwYXJhbWV0cm8gIldULm1jX2lkIg0KCS8v
IHBhcmFtZXRybyBsaW5rID0zRCBwYWdpbmEgZGkgZGVzdGluYXppb25lIChu
b24gZGV2ZSBjb250ZW5lcmUgYWx0cmkgPQ0KcGFyYW1ldHJpICJXVC5tY19p
ZCIpDQogCXZhciBiYXJQYXJhbXMgPTNEIHdpbmRvdy5sb2NhdGlvbi5zZWFy
Y2g7DQoJdmFyIGZyb20gPTNEIGJhclBhcmFtcy5pbmRleE9mKCdXVC5tY19p
ZCcsMCk7DQoJdmFyIG5ld1BhciA9M0QgJyc7DQoJaWYgKGZyb20+PTNEMCl7
DQoJCXZhciB0ZW1wID0zRCBiYXJQYXJhbXMuc3Vic3RyaW5nKGZyb20pOw0K
CQl2YXIgdG8gPTNEIHRlbXAuaW5kZXhPZignJicpOw0KCQlpZiAodG88MCl7
DQoJCQluZXdQYXIgPTNEIGJhclBhcmFtcy5zdWJzdHJpbmcoZnJvbSs5KTsN
CgkJCS8vYWxlcnQoJzEgLSAnICsgbmV3UGFyKTsNCgkJfQ0KCQllbHNlIHsN
CgkJCW5ld1BhciA9M0QgYmFyUGFyYW1zLnN1YnN0cmluZyhmcm9tKzksdG8r
MSk7DQoJCQkvL2FsZXJ0KCcyIC0gJyArIG5ld1Bhcik7DQoJCX0NCgkJdmFy
IGZpcnN0Q2hhciA9M0QgJyc7PTIwDQoJCWlmIChsaW5rLmluZGV4T2YoJz8n
KTwwKQ0KCQkJZmlyc3RDaGFyPTNEJz8nOw0KCQllbHNlDQoJCQlmaXJzdENo
YXI9M0QnJic7DQoJCW5ld1BhciA9M0QgZmlyc3RDaGFyICsgJ1dULm1jX2lk
PTNEJyArIG5ld1BhciArIG5ld0NvZGU7DQoJfQ0KCWxpbmsgPTNEIGxpbmsg
KyBuZXdQYXI7DQoJaWYoX25ld1dpbmRvdz0zRD0zRHRydWUpew0KCQl2YXIg
ZGltWD0zRHNjcmVlbi53aWR0aDsgLy9sYXJnaGV6emEgcGFnaW5hDQoJCXZh
ciBkaW1ZPTNEc2NyZWVuLmhlaWdodDsgLy9sdW5naGV6emEgcGFnaW5hDQoJ
CT0NCndpbmRvdy5vcGVuKGxpbmssJ25ld1dpbicsJ3Rvb2xiYXI9M0R5ZXMs
c3RhdHVzPTNEeWVzLHNjcm9sbGJhcnM9M0R5ZXMsbWU9DQpudWJhcj0zRHll
cyx3aWR0aD0zRCcrZGltWCsnLGhlaWdodD0zRCcrZGltWSsnLGxlZnQ9M0Q3
MTIsIHRvcD0zRDMwMCcpOw0KCQlyZXR1cm47DQoJfQ0KCWlmKF9uZXdXaW5k
b3c9M0Q9M0RmYWxzZSl7DQoJCXdpbmRvdy5sb2NhdGlvbi5ocmVmPTNEbGlu
azsNCgkJcmV0dXJuOw0KCX0NCn0NCg0KDQotLS0tLS09X05leHRQYXJ0XzAw
MF8wMDAwXzAxQ0MyMThFLjNCRjI3NUMwDQpDb250ZW50LVR5cGU6IGFwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu
ZzogcXVvdGVkLXByaW50YWJsZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0cDov
L3d3dy5jYXJ0YXNpLml0L2phdmFzY3JpcHQvZ2VzdHVybC5qcw0KDQoJZnVu
Y3Rpb24gZ28oaWQpIHsNCgkJZ28oaWQsJ251bGwnLCdudWxsJyk7DQoJfQ0K
CWZ1bmN0aW9uIGdvKGlkLCBwYXJhbSkgew0KCQlnbyhpZCxwYXJhbSwnbnVs
bCcpOw0KCX0NCglmdW5jdGlvbiBnb0h0bWwocGFyYW0sIHBhcmFtMikgew0K
CQlkb2N1bWVudC5nb3RvcGFnZS5hY3Rpb24gPTNEIGhvbWUgKyAiL2NvbW1v
bi9pbmRleC5qc3AiOw0KCQlkb2N1bWVudC5nb3RvcGFnZS5qc3BOYW1lLnZh
bHVlPTNEcGFyYW07DQogICAgZG9jdW1lbnQuZ290b3BhZ2UuaWRjLnZhbHVl
PTNEcGFyYW0yOw0KCQlkb2N1bWVudC5nb3RvcGFnZS5zdWJtaXQoKTsNCgl9
DQo9MDkNCglmdW5jdGlvbiBnZXRVcmwoanNwLGhvbWVQYWdlKXs9MDkNCgkJ
dmFyIHVybCA9M0QgIiI7DQoJCWlmKGpzcD0zRD0zRCIvZG9uYXppb25pL2Rv
bmEuanNwIiB8fCA9DQpqc3A9M0Q9M0QiL2xhdm9yYXJlX2luX2NhcnRhc2kv
bW9kdWxvLmpzcCIgfHwgPQ0KanNwPTNEPTNEIi9sYXZvcmFyZV9pbl9jYXJ0
YXNpL2luc2VyaW1lbnRvLmpzcCIgfHwgPQ0KanNwPTNEPTNEIm5hZG11UnRW
VVoiKXsNCgkJCWlmIChkb2N1bWVudC5VUkwuaW5kZXhPZigibmV3Z3R3c3Yi
KSE9M0QtMSl7DQoJCQkJdXJsID0zRCBnZXROYW1lSHR0cCgpICsgaG9tZSAr
ICIvY29tbW9uL2luZGV4LmpzcCI7DQoJCQl9IGVsc2Ugew0KCQkJCXVybCA9
M0QgZ2V0TmFtZUh0dHBzKCkgKyBob21lICsgIi9jb21tb24vaW5kZXguanNw
IjsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmIChob21lUGFnZSl7DQoJCQkJ
aWYgKGRvY3VtZW50LlVSTC5pbmRleE9mKCJodHRwcyIpIT0zRC0xKXsNCgkJ
CQkJdXJsID0zRCBnZXROYW1lSHR0cCgpICsgaG9tZSArICIvaW5kZXguanNw
IjsNCgkJCQl9IGVsc2Ugew0KCQkJCQl1cmwgPTNEIGhvbWUgKyAiL2luZGV4
LmpzcCI7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQlpZiAoZG9jdW1lbnQu
VVJMLmluZGV4T2YoImh0dHBzIikhPTNELTEpew0KCQkJCQl1cmwgPTNEIGdl
dE5hbWVIdHRwKCkgKyBob21lICsgIi9jb21tb24vaW5kZXguanNwIjsNCgkJ
CQl9IGVsc2Ugew0KCQkJCQl1cmwgPTNEIGhvbWUgKyAiL2NvbW1vbi9pbmRl
eC5qc3AiOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlyZXR1cm4gKHVybCk7DQoJ
fQ0KLyoNCgl1cmwgPTNEICJodHRwOi8vbmV3Z3R3LnNpLml0L2luZGV4LyI7
DQoJcGFyZW50LmxvY2F0aW9uLmhyZWY9M0R1cmw7DQoqLwk9MDkNCglmdW5j
dGlvbiBnbyhpZCwgcGFyYW0sIGpzcCkgew0KCQl2YXIgdXJsID0zRCcnOw0K
CQlpZihpZD0zRD0zRCJuYWRtdVJ0VlVaIikgew0KCQkJdXJsID0zRCBnZXRV
cmwoJ25hZG11UnRWVVonLGZhbHNlKTsNCgkJfSBlbHNlIHsNCgkJCXVybCA9
M0QgZ2V0VXJsKGpzcCxmYWxzZSk7DQoJCX0NCgkJaWYoaWQhPTNEIm51bGwi
KSB7dXJsPTNEdXJsKyI/aWQ9M0QiK2lkfQ0KCQlkb2N1bWVudC5nb3RvcGFn
ZS5hY3Rpb24gPTNEIHVybDsNCgkJZG9jdW1lbnQuZ290b3BhZ2UucGFyYW0u
dmFsdWU9M0RwYXJhbTsNCgkJZG9jdW1lbnQuZ290b3BhZ2UuanNwTmFtZS52
YWx1ZT0zRGpzcDsNCgkJZG9jdW1lbnQuZ290b3BhZ2Uuc3VibWl0KCk7DQoJ
fQ0KCWZ1bmN0aW9uIGdvanNwKGpzcCwgcGFyYW0pIHsNCgkJZ28oJ251bGwn
LHBhcmFtLGpzcCk7DQoJfQ0KPTA5DQoJZnVuY3Rpb24gZ29Ib21lKGlkKSB7
DQoJCWRvY3VtZW50LmdvdG9wYWdlLmFjdGlvbiA9M0QgZ2V0VXJsKCIiLHRy
dWUpICsgIj9pZD0zRCIraWQ7IC8vaG9tZSArID0NCiIvaW5kZXguanNwP2lk
PTNEIitpZDsNCgkJZG9jdW1lbnQuZ290b3BhZ2Uuc3VibWl0KCk7DQoJfQ0K
DQoJZnVuY3Rpb24gYXByaUNvbW0oaWQpIHsNCgkJaWYoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2MnK2lkKSE9M0RudWxsKXsNCgkJCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjJytpZCkuY2xhc3NOYW1lID0zRCA9DQonbGlua1By
aXZhdGlCb2xkLUhPVkVSJzsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIGFwcmlT
ZXJ2KGlkKSB7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJytpZCku
Y2xhc3NOYW1lID0zRCAnbGlua0dyaWdpb0JvbGQtSE9WRVInOw0KCX0NCglm
dW5jdGlvbiBnb0JveChlbGVtZW50KSB7DQoJCWRvY3VtZW50LmdvdG9wYWdl
LmFjdGlvbiA9M0QgZ2V0VXJsKCIiLGZhbHNlKSArICI/aWQ9M0QiK2VsZW1l
bnQudmFsdWUgPQ0KOy8vaG9tZSArICIvY29tbW9uL2luZGV4LmpzcD9pZD0z
RCIrZWxlbWVudC52YWx1ZTsNCgkJZG9jdW1lbnQuZ290b3BhZ2Uuc3VibWl0
KCk7DQoJfQ0KLy8JZnVuY3Rpb24gZ29Gb2N1c29uKHBhcmFtLCBwYXJhbTIp
IHsNCi8vCQlkb2N1bWVudC5nb3RvcGFnZS5hY3Rpb24gPTNEZ2V0VXJsKCIi
LGZhbHNlKSA7Ly8gaG9tZSArID0NCiIvY29tbW9uL2luZGV4LmpzcCI7DQov
LwkJZG9jdW1lbnQuZ290b3BhZ2UubmV3c1BhZ2UudmFsdWU9M0RwYXJhbTsN
Ci8vICAgIGRvY3VtZW50LmdvdG9wYWdlLnBhcmFtLnZhbHVlPTNEcGFyYW0y
Ow0KLy8JCWRvY3VtZW50LmdvdG9wYWdlLnN1Ym1pdCgpOw0KLy8JfQ0KCWZ1
bmN0aW9uIGdvTmV3cyhwYXJhbSkgew0KCQlkb2N1bWVudC5nb3RvcGFnZS5h
Y3Rpb24gPTNEIGdldFVybCgiIixmYWxzZSkgOy8vaG9tZSArID0NCiIvY29t
bW9uL2luZGV4LmpzcCI7DQoJCWRvY3VtZW50LmdvdG9wYWdlLm5ld3NQYWdl
LnZhbHVlPTNEcGFyYW07DQoJCWRvY3VtZW50LmdvdG9wYWdlLnN1Ym1pdCgp
Ow0KCX0NCj0wOQ0KCWZ1bmN0aW9uIGdldE5hbWVIdHRwcygpew0KCQl2YXIg
bmFtZSA9M0QiIjsNCgkJdmFyIGZpbmU9M0QgZG9jdW1lbnQuVVJMLmluZGV4
T2YoIi8iLDEwKTsNCgkJdmFyIGluaSA9M0QgZG9jdW1lbnQuVVJMLmluZGV4
T2YoIi8vIik7DQoJCWlmIChmaW5lICE9M0QgLTEpew0KCQkJbmFtZT0zRGRv
Y3VtZW50LlVSTC5zdWJzdHJpbmcoaW5pKzIsZmluZSk7DQoJCQluYW1lPTNE
Imh0dHBzOi8vIiArIG5hbWUgKyBwb3J0YUh0dHBzOw0KCQl9PTIwDQoJCXJl
dHVybiAobmFtZSk7DQoJfQ0KPTA5DQoJZnVuY3Rpb24gZ2V0TmFtZUh0dHAo
KXsNCgkJdmFyIG5hbWUgPTNEIiI7DQoJCXZhciBmaW5lPTNEIGRvY3VtZW50
LlVSTC5pbmRleE9mKCIvIiwxMCk7DQoJCWlmIChkb2N1bWVudC5VUkwuaW5k
ZXhPZigiOiIsMTApIT0zRCItMSIpIHsNCgkJCWZpbmU9M0QgZG9jdW1lbnQu
VVJMLmluZGV4T2YoIjoiLDEwKTsNCgkJfQ0KCQl2YXIgaW5pID0zRCBkb2N1
bWVudC5VUkwuaW5kZXhPZigiLy8iKTsNCgkJaWYgKGZpbmUgIT0zRCAtMSl7
DQoJCQluYW1lPTNEZG9jdW1lbnQuVVJMLnN1YnN0cmluZyhpbmkrMixmaW5l
KTsNCgkJCW5hbWU9M0QiaHR0cDovLyIgKyBuYW1lOz0yMA0KCQl9PTIwDQoJ
CXJldHVybiAobmFtZSk7DQoJfQ0KDQoNCi0tLS0tLT1fTmV4dFBhcnRfMDAw
XzAwMDBfMDFDQzIxOEUuM0JGMjc1QzANCkNvbnRlbnQtVHlwZTogYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5n
OiBxdW90ZWQtcHJpbnRhYmxlDQpDb250ZW50LUxvY2F0aW9uOiBodHRwOi8v
YW1vdWdlMjAxMS5jb20vYS9ndHdwYWdlcy9TY3JpcHRzL0FDX1J1bkFjdGl2
ZUNvbnRlbnQuanMNCg0KLy92MS4wDQovL0NvcHlyaWdodCAyMDA2IEFkb2Jl
IFN5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmZ1bmN0aW9u
IEFDX0FkZEV4dGVuc2lvbihzcmMsIGV4dCkNCnsNCiAgaWYgKHNyYy5pbmRl
eE9mKCc/JykgIT0zRCAtMSkNCiAgICByZXR1cm4gc3JjLnJlcGxhY2UoL1w/
LywgZXh0Kyc/Jyk7PTIwDQogIGVsc2UNCiAgICByZXR1cm4gc3JjICsgZXh0
Ow0KfQ0KDQpmdW5jdGlvbiBBQ19HZW5lcmF0ZW9iaihvYmpBdHRycywgcGFy
YW1zLCBlbWJlZEF0dHJzKT0yMA0Kez0yMA0KICB2YXIgc3RyID0zRCAnPG9i
amVjdCAnOw0KICBmb3IgKHZhciBpIGluIG9iakF0dHJzKQ0KICAgIHN0ciAr
PTNEIGkgKyAnPTNEIicgKyBvYmpBdHRyc1tpXSArICciICc7DQogIHN0ciAr
PTNEICc+JzsNCiAgZm9yICh2YXIgaSBpbiBwYXJhbXMpDQogICAgc3RyICs9
M0QgJzxwYXJhbSBuYW1lPTNEIicgKyBpICsgJyIgdmFsdWU9M0QiJyArIHBh
cmFtc1tpXSArICciIC8+ID0NCic7DQogIHN0ciArPTNEICc8ZW1iZWQgJzsN
CiAgZm9yICh2YXIgaSBpbiBlbWJlZEF0dHJzKQ0KICAgIHN0ciArPTNEIGkg
KyAnPTNEIicgKyBlbWJlZEF0dHJzW2ldICsgJyIgJzsNCiAgc3RyICs9M0Qg
JyA+PC9lbWJlZD48L29iamVjdD4nOw0KDQogIGRvY3VtZW50LndyaXRlKHN0
cik7DQp9DQoNCmZ1bmN0aW9uIEFDX0ZMX1J1bkNvbnRlbnQoKXsNCiAgdmFy
IHJldCA9M0Q9MjANCiAgICBBQ19HZXRBcmdzDQogICAgKCAgYXJndW1lbnRz
LCAiLnN3ZiIsICJtb3ZpZSIsID0NCiJjbHNpZDpkMjdjZGI2ZS1hZTZkLTEx
Y2YtOTZiOC00NDQ1NTM1NDAwMDAiDQogICAgICwgImFwcGxpY2F0aW9uL3gt
c2hvY2t3YXZlLWZsYXNoIg0KICAgICk7DQogIEFDX0dlbmVyYXRlb2JqKHJl
dC5vYmpBdHRycywgcmV0LnBhcmFtcywgcmV0LmVtYmVkQXR0cnMpOw0KfQ0K
DQpmdW5jdGlvbiBBQ19TV19SdW5Db250ZW50KCl7DQogIHZhciByZXQgPTNE
PTIwDQogICAgQUNfR2V0QXJncw0KICAgICggIGFyZ3VtZW50cywgIi5kY3Ii
LCAic3JjIiwgPQ0KImNsc2lkOjE2NkIxQkNBLTNGOUMtMTFDRi04MDc1LTQ0
NDU1MzU0MDAwMCINCiAgICAgLCBudWxsDQogICAgKTsNCiAgQUNfR2VuZXJh
dGVvYmoocmV0Lm9iakF0dHJzLCByZXQucGFyYW1zLCByZXQuZW1iZWRBdHRy
cyk7DQp9DQoNCmZ1bmN0aW9uIEFDX0dldEFyZ3MoYXJncywgZXh0LCBzcmNQ
YXJhbU5hbWUsIGNsYXNzaWQsIG1pbWVUeXBlKXsNCiAgdmFyIHJldCA9M0Qg
bmV3IE9iamVjdCgpOw0KICByZXQuZW1iZWRBdHRycyA9M0QgbmV3IE9iamVj
dCgpOw0KICByZXQucGFyYW1zID0zRCBuZXcgT2JqZWN0KCk7DQogIHJldC5v
YmpBdHRycyA9M0QgbmV3IE9iamVjdCgpOw0KICBmb3IgKHZhciBpPTNEMDsg
aSA8IGFyZ3MubGVuZ3RoOyBpPTNEaSsyKXsNCiAgICB2YXIgY3VyckFyZyA9
M0QgYXJnc1tpXS50b0xvd2VyQ2FzZSgpOyAgID0yMA0KDQogICAgc3dpdGNo
IChjdXJyQXJnKXs9MDkNCiAgICAgIGNhc2UgImNsYXNzaWQiOg0KICAgICAg
ICBicmVhazsNCiAgICAgIGNhc2UgInBsdWdpbnNwYWdlIjoNCiAgICAgICAg
cmV0LmVtYmVkQXR0cnNbYXJnc1tpXV0gPTNEIGFyZ3NbaSsxXTsNCiAgICAg
ICAgYnJlYWs7DQogICAgICBjYXNlICJzcmMiOg0KICAgICAgY2FzZSAibW92
aWUiOj0wOQ0KICAgICAgICBhcmdzW2krMV0gPTNEIEFDX0FkZEV4dGVuc2lv
bihhcmdzW2krMV0sIGV4dCk7DQogICAgICAgIHJldC5lbWJlZEF0dHJzWyJz
cmMiXSA9M0QgYXJnc1tpKzFdOw0KICAgICAgICByZXQucGFyYW1zW3NyY1Bh
cmFtTmFtZV0gPTNEIGFyZ3NbaSsxXTsNCiAgICAgICAgYnJlYWs7DQogICAg
ICBjYXNlICJvbmFmdGVydXBkYXRlIjoNCiAgICAgIGNhc2UgIm9uYmVmb3Jl
dXBkYXRlIjoNCiAgICAgIGNhc2UgIm9uYmx1ciI6DQogICAgICBjYXNlICJv
bmNlbGxjaGFuZ2UiOg0KICAgICAgY2FzZSAib25jbGljayI6DQogICAgICBj
YXNlICJvbmRibENsaWNrIjoNCiAgICAgIGNhc2UgIm9uZHJhZyI6DQogICAg
ICBjYXNlICJvbmRyYWdlbmQiOg0KICAgICAgY2FzZSAib25kcmFnZW50ZXIi
Og0KICAgICAgY2FzZSAib25kcmFnbGVhdmUiOg0KICAgICAgY2FzZSAib25k
cmFnb3ZlciI6DQogICAgICBjYXNlICJvbmRyb3AiOg0KICAgICAgY2FzZSAi
b25maW5pc2giOg0KICAgICAgY2FzZSAib25mb2N1cyI6DQogICAgICBjYXNl
ICJvbmhlbHAiOg0KICAgICAgY2FzZSAib25tb3VzZWRvd24iOg0KICAgICAg
Y2FzZSAib25tb3VzZXVwIjoNCiAgICAgIGNhc2UgIm9ubW91c2VvdmVyIjoN
CiAgICAgIGNhc2UgIm9ubW91c2Vtb3ZlIjoNCiAgICAgIGNhc2UgIm9ubW91
c2VvdXQiOg0KICAgICAgY2FzZSAib25rZXlwcmVzcyI6DQogICAgICBjYXNl
ICJvbmtleWRvd24iOg0KICAgICAgY2FzZSAib25rZXl1cCI6DQogICAgICBj
YXNlICJvbmxvYWQiOg0KICAgICAgY2FzZSAib25sb3NlY2FwdHVyZSI6DQog
ICAgICBjYXNlICJvbnByb3BlcnR5Y2hhbmdlIjoNCiAgICAgIGNhc2UgIm9u
cmVhZHlzdGF0ZWNoYW5nZSI6DQogICAgICBjYXNlICJvbnJvd3NkZWxldGUi
Og0KICAgICAgY2FzZSAib25yb3dlbnRlciI6DQogICAgICBjYXNlICJvbnJv
d2V4aXQiOg0KICAgICAgY2FzZSAib25yb3dzaW5zZXJ0ZWQiOg0KICAgICAg
Y2FzZSAib25zdGFydCI6DQogICAgICBjYXNlICJvbnNjcm9sbCI6DQogICAg
ICBjYXNlICJvbmJlZm9yZWVkaXRmb2N1cyI6DQogICAgICBjYXNlICJvbmFj
dGl2YXRlIjoNCiAgICAgIGNhc2UgIm9uYmVmb3JlZGVhY3RpdmF0ZSI6DQog
ICAgICBjYXNlICJvbmRlYWN0aXZhdGUiOg0KICAgICAgY2FzZSAidHlwZSI6
DQogICAgICBjYXNlICJjb2RlYmFzZSI6DQogICAgICAgIHJldC5vYmpBdHRy
c1thcmdzW2ldXSA9M0QgYXJnc1tpKzFdOw0KICAgICAgICBicmVhazsNCiAg
ICAgIGNhc2UgIndpZHRoIjoNCiAgICAgIGNhc2UgImhlaWdodCI6DQogICAg
ICBjYXNlICJhbGlnbiI6DQogICAgICBjYXNlICJ2c3BhY2UiOj0yMA0KICAg
ICAgY2FzZSAiaHNwYWNlIjoNCiAgICAgIGNhc2UgImNsYXNzIjoNCiAgICAg
IGNhc2UgInRpdGxlIjoNCiAgICAgIGNhc2UgImFjY2Vzc2tleSI6DQogICAg
ICBjYXNlICJuYW1lIjoNCiAgICAgIGNhc2UgImlkIjoNCiAgICAgIGNhc2Ug
InRhYmluZGV4IjoNCiAgICAgICAgcmV0LmVtYmVkQXR0cnNbYXJnc1tpXV0g
PTNEIHJldC5vYmpBdHRyc1thcmdzW2ldXSA9M0QgYXJnc1tpKzFdOw0KICAg
ICAgICBicmVhazsNCiAgICAgIGRlZmF1bHQ6DQogICAgICAgIHJldC5lbWJl
ZEF0dHJzW2FyZ3NbaV1dID0zRCByZXQucGFyYW1zW2FyZ3NbaV1dID0zRCBh
cmdzW2krMV07DQogICAgfQ0KICB9DQogIHJldC5vYmpBdHRyc1siY2xhc3Np
ZCJdID0zRCBjbGFzc2lkOw0KICBpZiAobWltZVR5cGUpIHJldC5lbWJlZEF0
dHJzWyJ0eXBlIl0gPTNEIG1pbWVUeXBlOw0KICByZXR1cm4gcmV0Ow0KfQ0K
DQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0MyMThFLjNCRjI3NUMw
DQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KQ29u
dGVudC1Mb2NhdGlvbjogaHR0cDovL3d3dy5jYXJ0YXNpLml0L2FjY29yZGlv
bi9saWIvanF1ZXJ5LmRpbWVuc2lvbnMuanMNCg0KLyogQ29weXJpZ2h0IChj
KSAyMDA3IFBhdWwgQmFrYXVzIChwYXVsLmJha2F1c0Bnb29nbGVtYWlsLmNv
bSkgYW5kID0NCkJyYW5kb24gQWFyb24gKGJyYW5kb24uYWFyb25AZ21haWwu
Y29tIHx8IGh0dHA6Ly9icmFuZG9uYWFyb24ubmV0KT0wQT0NCiAqIER1YWwg
bGljZW5zZWQgdW5kZXIgdGhlIE1JVCA9DQooaHR0cDovL3d3dy5vcGVuc291
cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHApPTBBPQ0KICogYW5k
IEdQTCAoaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ncGwt
bGljZW5zZS5waHApIGxpY2Vuc2VzLj0wQT0NCiAqPTBBPQ0KICogJExhc3RD
aGFuZ2VkRGF0ZTogMjAwNy0xMC0wNiAyMDoxMToxNSArMDIwMCAoU2EsIDA2
IE9rdCAyMDA3KSAkPTBBPQ0KICogJFJldjogMzU4MSAkPTBBPQ0KICo9MEE9
DQogKiBWZXJzaW9uOiBAVkVSU0lPTj0wQT0NCiAqPTBBPQ0KICogUmVxdWly
ZXM6IGpRdWVyeSAxLjIrPTBBPQ0KICovPTBBPQ0KPTBBPQ0KKGZ1bmN0aW9u
KCQpez0wQT0NCgk9MEE9DQokLmRpbWVuc2lvbnMgPTNEIHs9MEE9DQoJdmVy
c2lvbjogJ0BWRVJTSU9OJz0wQT0NCn07PTBBPQ0KPTBBPQ0KLy8gQ3JlYXRl
IGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0
ZXJXaWR0aCBtZXRob2RzPTBBPQ0KJC5lYWNoKCBbICdIZWlnaHQnLCAnV2lk
dGgnIF0sIGZ1bmN0aW9uKGksIG5hbWUpez0wQT0NCgk9MEE9DQoJLy8gaW5u
ZXJIZWlnaHQgYW5kIGlubmVyV2lkdGg9MEE9DQoJJC5mblsgJ2lubmVyJyAr
IG5hbWUgXSA9M0QgZnVuY3Rpb24oKSB7PTBBPQ0KCQlpZiAoIXRoaXNbMF0p
IHJldHVybjs9MEE9DQoJCT0wQT0NCgkJdmFyIHRvcmwgPTNEIG5hbWUgPTNE
PTNEICdIZWlnaHQnID8gJ1RvcCcgICAgOiAnTGVmdCcsICAvLyB0b3Agb3Ig
bGVmdD0wQT0NCgkJICAgIGJvcnIgPTNEIG5hbWUgPTNEPTNEICdIZWlnaHQn
ID8gJ0JvdHRvbScgOiAnUmlnaHQnOyAvLyBib3R0b20gb3IgPQ0KcmlnaHQ9
MEE9DQoJCT0wQT0NCgkJcmV0dXJuIG51bSggdGhpcywgbmFtZS50b0xvd2Vy
Q2FzZSgpICkgKyBudW0odGhpcywgJ3BhZGRpbmcnICsgdG9ybCkgKyA9DQpu
dW0odGhpcywgJ3BhZGRpbmcnICsgYm9ycik7PTBBPQ0KCX07PTBBPQ0KCT0w
QT0NCgkvLyBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aD0wQT0NCgkkLmZu
WyAnb3V0ZXInICsgbmFtZSBdID0zRCBmdW5jdGlvbihvcHRpb25zKSB7PTBB
PQ0KCQlpZiAoIXRoaXNbMF0pIHJldHVybjs9MEE9DQoJCT0wQT0NCgkJdmFy
IHRvcmwgPTNEIG5hbWUgPTNEPTNEICdIZWlnaHQnID8gJ1RvcCcgICAgOiAn
TGVmdCcsICAvLyB0b3Agb3IgbGVmdD0wQT0NCgkJICAgIGJvcnIgPTNEIG5h
bWUgPTNEPTNEICdIZWlnaHQnID8gJ0JvdHRvbScgOiAnUmlnaHQnOyAvLyBi
b3R0b20gb3IgPQ0KcmlnaHQ9MEE9DQoJCT0wQT0NCgkJb3B0aW9ucyA9M0Qg
JC5leHRlbmQoeyBtYXJnaW46IGZhbHNlIH0sIG9wdGlvbnMgfHwge30pOz0w
QT0NCgkJPTBBPQ0KCQlyZXR1cm4gbnVtKCB0aGlzLCBuYW1lLnRvTG93ZXJD
YXNlKCkgKT0wQT0NCgkJCQkrIG51bSh0aGlzLCAnYm9yZGVyJyArIHRvcmwg
KyAnV2lkdGgnKSArIG51bSh0aGlzLCAnYm9yZGVyJyArIGJvcnIgKyA9DQon
V2lkdGgnKT0wQT0NCgkJCQkrIG51bSh0aGlzLCAncGFkZGluZycgKyB0b3Js
KSArIG51bSh0aGlzLCAncGFkZGluZycgKyBib3JyKT0wQT0NCgkJCQkrIChv
cHRpb25zLm1hcmdpbiA/IChudW0odGhpcywgJ21hcmdpbicgKyB0b3JsKSAr
IG51bSh0aGlzLCAnbWFyZ2luJyA9DQorIGJvcnIpKSA6IDApOz0wQT0NCgl9
Oz0wQT0NCn0pOz0wQT0NCj0wQT0NCi8vIENyZWF0ZSBzY3JvbGxMZWZ0IGFu
ZCBzY3JvbGxUb3AgbWV0aG9kcz0wQT0NCiQuZWFjaCggWydMZWZ0JywgJ1Rv
cCddLCBmdW5jdGlvbihpLCBuYW1lKSB7PTBBPQ0KCSQuZm5bICdzY3JvbGwn
ICsgbmFtZSBdID0zRCBmdW5jdGlvbih2YWwpIHs9MEE9DQoJCWlmICghdGhp
c1swXSkgcmV0dXJuOz0wQT0NCgkJPTBBPQ0KCQlyZXR1cm4gdmFsICE9M0Qg
dW5kZWZpbmVkID89MEE9DQoJCT0wQT0NCgkJCS8vIFNldCB0aGUgc2Nyb2xs
IG9mZnNldD0wQT0NCgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHs9MEE9DQoJ
CQkJdGhpcyA9M0Q9M0Qgd2luZG93IHx8IHRoaXMgPTNEPTNEIGRvY3VtZW50
ID89MEE9DQoJCQkJCXdpbmRvdy5zY3JvbGxUbyggPTBBPQ0KCQkJCQkJbmFt
ZSA9M0Q9M0QgJ0xlZnQnID8gdmFsIDogJCh3aW5kb3cpWyAnc2Nyb2xsTGVm
dCcgXSgpLD0wQT0NCgkJCQkJCW5hbWUgPTNEPTNEICdUb3AnICA/IHZhbCA6
ICQod2luZG93KVsgJ3Njcm9sbFRvcCcgIF0oKT0wQT0NCgkJCQkJKSA6PTBB
PQ0KCQkJCQl0aGlzWyAnc2Nyb2xsJyArIG5hbWUgXSA9M0QgdmFsOz0wQT0N
CgkJCX0pIDo9MEE9DQoJCQk9MEE9DQoJCQkvLyBSZXR1cm4gdGhlIHNjcm9s
bCBvZmZzZXQ9MEE9DQoJCQl0aGlzWzBdID0zRD0zRCB3aW5kb3cgfHwgdGhp
c1swXSA9M0Q9M0QgZG9jdW1lbnQgPz0wQT0NCgkJCQlzZWxmWyAobmFtZSA9
M0Q9M0QgJ0xlZnQnID8gJ3BhZ2VYT2Zmc2V0JyA6ICdwYWdlWU9mZnNldCcp
IF0gfHw9MEE9DQoJCQkJCSQuYm94TW9kZWwgJiYgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50WyAnc2Nyb2xsJyArIG5hbWUgXSB8fD0wQT0NCgkJCQkJZG9j
dW1lbnQuYm9keVsgJ3Njcm9sbCcgKyBuYW1lIF0gOj0wQT0NCgkJCQl0aGlz
WzBdWyAnc2Nyb2xsJyArIG5hbWUgXTs9MEE9DQoJfTs9MEE9DQp9KTs9MEE9
DQo9MEE9DQokLmZuLmV4dGVuZCh7PTBBPQ0KCXBvc2l0aW9uOiBmdW5jdGlv
bigpIHs9MEE9DQoJCXZhciBsZWZ0ID0zRCAwLCB0b3AgPTNEIDAsIGVsZW0g
PTNEIHRoaXNbMF0sIG9mZnNldCwgcGFyZW50T2Zmc2V0LCA9DQpvZmZzZXRQ
YXJlbnQsIHJlc3VsdHM7PTBBPQ0KCQk9MEE9DQoJCWlmIChlbGVtKSB7PTBB
PQ0KCQkJLy8gR2V0ICpyZWFsKiBvZmZzZXRQYXJlbnQ9MEE9DQoJCQlvZmZz
ZXRQYXJlbnQgPTNEIHRoaXMub2Zmc2V0UGFyZW50KCk7PTBBPQ0KCQkJPTBB
PQ0KCQkJLy8gR2V0IGNvcnJlY3Qgb2Zmc2V0cz0wQT0NCgkJCW9mZnNldCAg
ICAgICA9M0QgdGhpcy5vZmZzZXQoKTs9MEE9DQoJCQlwYXJlbnRPZmZzZXQg
PTNEIG9mZnNldFBhcmVudC5vZmZzZXQoKTs9MEE9DQoJCQk9MEE9DQoJCQkv
LyBTdWJ0cmFjdCBlbGVtZW50IG1hcmdpbnM9MEE9DQoJCQlvZmZzZXQudG9w
ICAtPTNEIG51bShlbGVtLCAnbWFyZ2luVG9wJyk7PTBBPQ0KCQkJb2Zmc2V0
LmxlZnQgLT0zRCBudW0oZWxlbSwgJ21hcmdpbkxlZnQnKTs9MEE9DQoJCQk9
MEE9DQoJCQkvLyBBZGQgb2Zmc2V0UGFyZW50IGJvcmRlcnM9MEE9DQoJCQlw
YXJlbnRPZmZzZXQudG9wICArPTNEIG51bShvZmZzZXRQYXJlbnQsICdib3Jk
ZXJUb3BXaWR0aCcpOz0wQT0NCgkJCXBhcmVudE9mZnNldC5sZWZ0ICs9M0Qg
bnVtKG9mZnNldFBhcmVudCwgJ2JvcmRlckxlZnRXaWR0aCcpOz0wQT0NCgkJ
CT0wQT0NCgkJCS8vIFN1YnRyYWN0IHRoZSB0d28gb2Zmc2V0cz0wQT0NCgkJ
CXJlc3VsdHMgPTNEIHs9MEE9DQoJCQkJdG9wOiAgb2Zmc2V0LnRvcCAgLSBw
YXJlbnRPZmZzZXQudG9wLD0wQT0NCgkJCQlsZWZ0OiBvZmZzZXQubGVmdCAt
IHBhcmVudE9mZnNldC5sZWZ0PTBBPQ0KCQkJfTs9MEE9DQoJCX09MEE9DQoJ
CT0wQT0NCgkJcmV0dXJuIHJlc3VsdHM7PTBBPQ0KCX0sPTBBPQ0KCT0wQT0N
CglvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkgez0wQT0NCgkJdmFyIG9mZnNl
dFBhcmVudCA9M0QgdGhpc1swXS5vZmZzZXRQYXJlbnQ7PTBBPQ0KCQl3aGls
ZSAoIG9mZnNldFBhcmVudCAmJiAoIS9eYm9keXxodG1sJC9pLnRlc3Qob2Zm
c2V0UGFyZW50LnRhZ05hbWUpICYmID0NCiQuY3NzKG9mZnNldFBhcmVudCwg
J3Bvc2l0aW9uJykgPTNEPTNEICdzdGF0aWMnKSApPTBBPQ0KCQkJb2Zmc2V0
UGFyZW50ID0zRCBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50Oz0wQT0NCgkJ
cmV0dXJuICQob2Zmc2V0UGFyZW50KTs9MEE9DQoJfT0wQT0NCn0pOz0wQT0N
Cj0wQT0NCmZ1bmN0aW9uIG51bShlbCwgcHJvcCkgez0wQT0NCglyZXR1cm4g
cGFyc2VJbnQoJC5jc3MoZWwuanF1ZXJ5P2VsWzBdOmVsLHByb3ApKXx8MDs9
MEE9DQp9Oz0wQT0NCj0wQT0NCn0pKGpRdWVyeSk7DQotLS0tLS09X05leHRQ
YXJ0XzAwMF8wMDAwXzAxQ0MyMThFLjNCRjI3NUMwDQpDb250ZW50LVR5cGU6
IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KQ29udGVudC1UcmFuc2Zlci1F
bmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KQ29udGVudC1Mb2NhdGlvbjog
aHR0cDovL3d3dy5jYXJ0YXNpLml0L2FjY29yZGlvbi9qcXVlcnkuYWNjb3Jk
aW9uLmpzDQoNCi8qDQogKiBqUXVlcnkgVUkgQWNjb3JkaW9uIDEuNg0KICo9
MjANCiAqIENvcHlyaWdodCAoYykgMjAwNyBKPUMzPUI2cm4gWmFlZmZlcmVy
DQogKg0KICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9BY2NvcmRpb24N
CiAqDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBs
aWNlbnNlczoNCiAqICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNl
bnNlcy9taXQtbGljZW5zZS5waHANCiAqICAgaHR0cDovL3d3dy5nbnUub3Jn
L2xpY2Vuc2VzL2dwbC5odG1sDQogKg0KICogUmV2aXNpb246ICRJZDoganF1
ZXJ5LmFjY29yZGlvbi5qcyA0ODc2IDIwMDgtMDMtMDggMTE6NDk6MDRaID0N
CmpvZXJuLnphZWZmZXJlciAkDQogKg0KICovDQoNCjsoZnVuY3Rpb24oJCkg
ew0KPTA5DQovLyBJZiB0aGUgVUkgc2NvcGUgaXMgbm90IGF2YWlsYWJsZSwg
YWRkIGl0DQokLnVpID0zRCAkLnVpIHx8IHt9Ow0KDQokLmZuLmV4dGVuZCh7
DQoJYWNjb3JkaW9uOiBmdW5jdGlvbihvcHRpb25zLCBkYXRhKSB7DQoJCXZh
ciBhcmdzID0zRCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMsIDEpOw0KDQoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7DQoJ
CQlpZiAodHlwZW9mIG9wdGlvbnMgPTNEPTNEICJzdHJpbmciKSB7DQoJCQkJ
dmFyIGFjY29yZGlvbiA9M0QgJC5kYXRhKHRoaXMsICJ1aS1hY2NvcmRpb24i
KTsNCgkJCQlhY2NvcmRpb25bb3B0aW9uc10uYXBwbHkoYWNjb3JkaW9uLCBh
cmdzKTsNCgkJCS8vIElOSVQgd2l0aCBvcHRpb25hbCBvcHRpb25zDQoJCQl9
IGVsc2UgaWYgKCEkKHRoaXMpLmlzKCIudWktYWNjb3JkaW9uIikpDQoJCQkJ
JC5kYXRhKHRoaXMsICJ1aS1hY2NvcmRpb24iLCBuZXcgJC51aS5hY2NvcmRp
b24odGhpcywgb3B0aW9ucykpOw0KCQl9KTsNCgl9LA0KCS8vIGRlcHJlY2F0
ZWQsIHVzZSBhY2NvcmRpb24oImFjdGl2YXRlIiwgaW5kZXgpIGluc3RlYWQN
CglhY3RpdmF0ZTogZnVuY3Rpb24oaW5kZXgpIHsNCgkJcmV0dXJuIHRoaXMu
YWNjb3JkaW9uKCJhY3RpdmF0ZSIsIGluZGV4KTsNCgl9DQp9KTsNCg0KJC51
aS5hY2NvcmRpb24gPTNEIGZ1bmN0aW9uKGNvbnRhaW5lciwgb3B0aW9ucykg
ew0KPTA5DQoJLy8gc2V0dXAgY29uZmlndXJhdGlvbg0KCXRoaXMub3B0aW9u
cyA9M0Qgb3B0aW9ucyA9M0QgJC5leHRlbmQoe30sICQudWkuYWNjb3JkaW9u
LmRlZmF1bHRzLCA9DQpvcHRpb25zKTsNCgl0aGlzLmVsZW1lbnQgPTNEIGNv
bnRhaW5lcjsNCj0wOQ0KCSQoY29udGFpbmVyKS5hZGRDbGFzcygidWktYWNj
b3JkaW9uIik7DQo9MDkNCglpZiAoIG9wdGlvbnMubmF2aWdhdGlvbiApIHsN
CgkJdmFyIGN1cnJlbnQgPTNEID0NCiQoY29udGFpbmVyKS5maW5kKCJoNCIp
LmZpbHRlcihvcHRpb25zLm5hdmlnYXRpb25GaWx0ZXIpOw0KCQlpZiAoIGN1
cnJlbnQubGVuZ3RoICkgew0KCQkJaWYgKCBjdXJyZW50LmZpbHRlcihvcHRp
b25zLmhlYWRlcikubGVuZ3RoICkgew0KCQkJCW9wdGlvbnMuYWN0aXZlID0z
RCBjdXJyZW50Ow0KCQkJfSBlbHNlIHsNCgkJCQlvcHRpb25zLmFjdGl2ZSA9
M0QgY3VycmVudC5wYXJlbnQoKS5wYXJlbnQoKS5wcmV2KCk7DQoJCQkJY3Vy
cmVudC5hZGRDbGFzcygiY3VycmVudCIpOw0KCQkJfQ0KCQl9DQoJfQ0KPTA5
DQoJLy8gY2FsY3VsYXRlIGFjdGl2ZSBpZiBub3Qgc3BlY2lmaWVkLCB1c2lu
ZyB0aGUgZmlyc3QgaGVhZGVyDQoJb3B0aW9ucy5oZWFkZXJzID0zRCAkKGNv
bnRhaW5lcikuZmluZChvcHRpb25zLmhlYWRlcik7DQoJb3B0aW9ucy5hY3Rp
dmUgPTNEIGZpbmRBY3RpdmUob3B0aW9ucy5oZWFkZXJzLCBvcHRpb25zLmFj
dGl2ZSk7DQoNCglpZiAoIG9wdGlvbnMuZmlsbFNwYWNlICkgew0KCQl2YXIg
bWF4SGVpZ2h0ID0zRCAkKGNvbnRhaW5lcikucGFyZW50KCkuaGVpZ2h0KCk7
DQoJCW9wdGlvbnMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJbWF4
SGVpZ2h0IC09M0QgJCh0aGlzKS5vdXRlckhlaWdodCgpOw0KCQl9KTsNCgkJ
dmFyIG1heFBhZGRpbmcgPTNEIDA7DQoJCW9wdGlvbnMuaGVhZGVycy5uZXh0
KCkuZWFjaChmdW5jdGlvbigpIHsNCgkJCW1heFBhZGRpbmcgPTNEIE1hdGgu
bWF4KG1heFBhZGRpbmcsICQodGhpcykuaW5uZXJIZWlnaHQoKSAtID0NCiQo
dGhpcykuaGVpZ2h0KCkpOw0KCQl9KS5oZWlnaHQobWF4SGVpZ2h0IC0gbWF4
UGFkZGluZyk7DQoJfSBlbHNlIGlmICggb3B0aW9ucy5hdXRvaGVpZ2h0ICkg
ew0KCQl2YXIgbWF4SGVpZ2h0ID0zRCAwOw0KCQlvcHRpb25zLmhlYWRlcnMu
bmV4dCgpLmVhY2goZnVuY3Rpb24oKSB7DQoJCQltYXhIZWlnaHQgPTNEIE1h
dGgubWF4KG1heEhlaWdodCwgJCh0aGlzKS5vdXRlckhlaWdodCgpKTsNCgkJ
fSkuaGVpZ2h0KG1heEhlaWdodCk7DQoJfQ0KDQoJb3B0aW9ucy5oZWFkZXJz
DQoJCS5ub3Qob3B0aW9ucy5hY3RpdmUgfHwgIiIpDQoJCS5uZXh0KCkNCgkJ
LmhpZGUoKTsNCglvcHRpb25zLmFjdGl2ZS5wYXJlbnQoKS5hbmRTZWxmKCku
YWRkQ2xhc3Mob3B0aW9ucy5zZWxlY3RlZENsYXNzKTsNCj0wOQ0KCWlmIChv
cHRpb25zLmV2ZW50KQ0KCQkkKGNvbnRhaW5lcikuYmluZCgob3B0aW9ucy5l
dmVudCkgKyAiLnVpLWFjY29yZGlvbiIsIGNsaWNrSGFuZGxlcik7DQp9Ow0K
DQokLnVpLmFjY29yZGlvbi5wcm90b3R5cGUgPTNEIHsNCglhY3RpdmF0ZTog
ZnVuY3Rpb24oaW5kZXgpIHsNCgkJLy8gY2FsbCBjbGlja0hhbmRsZXIgd2l0
aCBjdXN0b20gZXZlbnQNCgkJY2xpY2tIYW5kbGVyLmNhbGwodGhpcy5lbGVt
ZW50LCB7DQoJCQl0YXJnZXQ6IGZpbmRBY3RpdmUoIHRoaXMub3B0aW9ucy5o
ZWFkZXJzLCBpbmRleCApWzBdDQoJCX0pOw0KCX0sDQo9MDkNCgllbmFibGU6
IGZ1bmN0aW9uKCkgew0KCQl0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPTNEIGZh
bHNlOw0KCX0sDQoJZGlzYWJsZTogZnVuY3Rpb24oKSB7DQoJCXRoaXMub3B0
aW9ucy5kaXNhYmxlZCA9M0QgdHJ1ZTsNCgl9LA0KCWRlc3Ryb3k6IGZ1bmN0
aW9uKCkgew0KCQl0aGlzLm9wdGlvbnMuaGVhZGVycy5uZXh0KCkuY3NzKCJk
aXNwbGF5IiwgIiIpOw0KCQlpZiAoIHRoaXMub3B0aW9ucy5maWxsU3BhY2Ug
fHwgdGhpcy5vcHRpb25zLmF1dG9oZWlnaHQgKSB7DQoJCQl0aGlzLm9wdGlv
bnMuaGVhZGVycy5uZXh0KCkuY3NzKCJoZWlnaHQiLCAiIik7DQoJCX0NCgkJ
JC5yZW1vdmVEYXRhKHRoaXMuZWxlbWVudCwgInVpLWFjY29yZGlvbiIpOw0K
CQkkKHRoaXMuZWxlbWVudCkucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbiIp
LnVuYmluZCgiLnVpLWFjY29yZGlvbiIpOw0KCX0NCn0NCg0KZnVuY3Rpb24g
c2NvcGVDYWxsYmFjayhjYWxsYmFjaywgc2NvcGUpIHsNCglyZXR1cm4gZnVu
Y3Rpb24oKSB7DQoJCXJldHVybiBjYWxsYmFjay5hcHBseShzY29wZSwgYXJn
dW1lbnRzKTsNCgl9Ow0KfQ0KDQpmdW5jdGlvbiBjb21wbGV0ZWQoY2FuY2Vs
KSB7DQoJLy8gaWYgcmVtb3ZlZCB3aGlsZSBhbmltYXRlZCBkYXRhIGNhbiBi
ZSBlbXB0eQ0KCWlmICghJC5kYXRhKHRoaXMsICJ1aS1hY2NvcmRpb24iKSkN
CgkJcmV0dXJuOw0KCXZhciBpbnN0YW5jZSA9M0QgJC5kYXRhKHRoaXMsICJ1
aS1hY2NvcmRpb24iKTsNCgl2YXIgb3B0aW9ucyA9M0QgaW5zdGFuY2Uub3B0
aW9uczsNCglvcHRpb25zLnJ1bm5pbmcgPTNEIGNhbmNlbCA/IDAgOiAtLW9w
dGlvbnMucnVubmluZzsNCglpZiAoIG9wdGlvbnMucnVubmluZyApDQoJCXJl
dHVybjsNCglpZiAoIG9wdGlvbnMuY2xlYXJTdHlsZSApIHsNCgkJb3B0aW9u
cy50b1Nob3cuYWRkKG9wdGlvbnMudG9IaWRlKS5jc3Moew0KCQkJaGVpZ2h0
OiAiIiwNCgkJCW92ZXJmbG93OiAiIg0KCQl9KTsNCgl9DQoJJCh0aGlzKS50
cmlnZ2VySGFuZGxlcigiY2hhbmdlLnVpLWFjY29yZGlvbiIsIFtvcHRpb25z
LmRhdGFdLCA9DQpvcHRpb25zLmNoYW5nZSk7DQp9DQoNCmZ1bmN0aW9uIHRv
Z2dsZSh0b1Nob3csIHRvSGlkZSwgZGF0YSwgY2xpY2tlZEFjdGl2ZSwgZG93
bikgew0KCXZhciBvcHRpb25zID0zRCAkLmRhdGEodGhpcywgInVpLWFjY29y
ZGlvbiIpLm9wdGlvbnM7DQoJb3B0aW9ucy50b1Nob3cgPTNEIHRvU2hvdzsN
CglvcHRpb25zLnRvSGlkZSA9M0QgdG9IaWRlOw0KCW9wdGlvbnMuZGF0YSA9
M0QgZGF0YTsNCgl2YXIgY29tcGxldGUgPTNEIHNjb3BlQ2FsbGJhY2soY29t
cGxldGVkLCB0aGlzKTsNCj0wOQ0KCS8vIGNvdW50IGVsZW1lbnRzIHRvIGFu
aW1hdGUNCglvcHRpb25zLnJ1bm5pbmcgPTNEIHRvSGlkZS5zaXplKCkgPTNE
PTNEIDAgPyB0b1Nob3cuc2l6ZSgpIDogPQ0KdG9IaWRlLnNpemUoKTsNCj0w
OQ0KCWlmICggb3B0aW9ucy5hbmltYXRlZCApIHsNCgkJaWYgKCAhb3B0aW9u
cy5hbHdheXNPcGVuICYmIGNsaWNrZWRBY3RpdmUgKSB7DQoJCQkkLnVpLmFj
Y29yZGlvbi5hbmltYXRpb25zW29wdGlvbnMuYW5pbWF0ZWRdKHsNCgkJCQl0
b1Nob3c6IGpRdWVyeShbXSksDQoJCQkJdG9IaWRlOiB0b0hpZGUsDQoJCQkJ
Y29tcGxldGU6IGNvbXBsZXRlLA0KCQkJCWRvd246IGRvd24sDQoJCQkJYXV0
b2hlaWdodDogb3B0aW9ucy5hdXRvaGVpZ2h0DQoJCQl9KTsNCgkJfSBlbHNl
IHsNCgkJCSQudWkuYWNjb3JkaW9uLmFuaW1hdGlvbnNbb3B0aW9ucy5hbmlt
YXRlZF0oew0KCQkJCXRvU2hvdzogdG9TaG93LA0KCQkJCXRvSGlkZTogdG9I
aWRlLA0KCQkJCWNvbXBsZXRlOiBjb21wbGV0ZSwNCgkJCQlkb3duOiBkb3du
LA0KCQkJCWF1dG9oZWlnaHQ6IG9wdGlvbnMuYXV0b2hlaWdodA0KCQkJfSk7
DQoJCX0NCgl9IGVsc2Ugew0KCQlpZiAoICFvcHRpb25zLmFsd2F5c09wZW4g
JiYgY2xpY2tlZEFjdGl2ZSApIHsNCgkJCXRvU2hvdy50b2dnbGUoKTsNCgkJ
fSBlbHNlIHsNCgkJCXRvSGlkZS5oaWRlKCk7DQoJCQl0b1Nob3cuc2hvdygp
Ow0KCQl9DQoJCWNvbXBsZXRlKHRydWUpOw0KCX0NCn0NCg0KZnVuY3Rpb24g
Y2xpY2tIYW5kbGVyKGV2ZW50KSB7DQoJdmFyIG9wdGlvbnMgPTNEICQuZGF0
YSh0aGlzLCAidWktYWNjb3JkaW9uIikub3B0aW9uczsNCglpZiAob3B0aW9u
cy5kaXNhYmxlZCkNCgkJcmV0dXJuIGZhbHNlOw0KPTA5DQoJLy8gY2FsbGVk
IG9ubHkgd2hlbiB1c2luZyBhY3RpdmF0ZShmYWxzZSkgdG8gY2xvc2UgYWxs
IHBhcnRzID0NCnByb2dyYW1tYXRpY2FsbHkNCglpZiAoICFldmVudC50YXJn
ZXQgJiYgIW9wdGlvbnMuYWx3YXlzT3BlbiApIHsNCgkJb3B0aW9ucy5hY3Rp
dmUucGFyZW50KCkuYW5kU2VsZigpLnRvZ2dsZUNsYXNzKG9wdGlvbnMuc2Vs
ZWN0ZWRDbGFzcyk7DQoJCXZhciB0b0hpZGUgPTNEIG9wdGlvbnMuYWN0aXZl
Lm5leHQoKSwNCgkJCWRhdGEgPTNEIHsNCgkJCQlpbnN0YW5jZTogdGhpcywN
CgkJCQlvcHRpb25zOiBvcHRpb25zLA0KCQkJCW5ld0hlYWRlcjogalF1ZXJ5
KFtdKSwNCgkJCQlvbGRIZWFkZXI6IG9wdGlvbnMuYWN0aXZlLA0KCQkJCW5l
d0NvbnRlbnQ6IGpRdWVyeShbXSksDQoJCQkJb2xkQ29udGVudDogdG9IaWRl
DQoJCQl9LA0KCQkJdG9TaG93ID0zRCBvcHRpb25zLmFjdGl2ZSA9M0QgJChb
XSk7DQoJCXRvZ2dsZS5jYWxsKHRoaXMsIHRvU2hvdywgdG9IaWRlLCBkYXRh
ICk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJLy8gZ2V0IHRoZSBjbGljayB0
YXJnZXQNCgl2YXIgY2xpY2tlZCA9M0QgJChldmVudC50YXJnZXQpOw0KPTA5
DQoJLy8gZHVlIHRvIHRoZSBldmVudCBkZWxlZ2F0aW9uIG1vZGVsLCB3ZSBo
YXZlIHRvIGNoZWNrIGlmIG9uZQ0KCS8vIG9mIHRoZSBwYXJlbnQgZWxlbWVu
dHMgaXMgb3VyIGFjdHVhbCBoZWFkZXIsIGFuZCBmaW5kIHRoYXQNCglpZiAo
IGNsaWNrZWQucGFyZW50cyhvcHRpb25zLmhlYWRlcikubGVuZ3RoICkNCgkJ
d2hpbGUgKCAhY2xpY2tlZC5pcyhvcHRpb25zLmhlYWRlcikgKQ0KCQkJY2xp
Y2tlZCA9M0QgY2xpY2tlZC5wYXJlbnQoKTsNCj0wOQ0KCXZhciBjbGlja2Vk
QWN0aXZlID0zRCBjbGlja2VkWzBdID0zRD0zRCBvcHRpb25zLmFjdGl2ZVsw
XTsNCj0wOQ0KCS8vIGlmIGFuaW1hdGlvbnMgYXJlIHN0aWxsIGFjdGl2ZSwg
b3IgdGhlIGFjdGl2ZSBoZWFkZXIgaXMgdGhlIHRhcmdldCwgPQ0KaWdub3Jl
IGNsaWNrDQoJaWYgKG9wdGlvbnMucnVubmluZyB8fCAob3B0aW9ucy5hbHdh
eXNPcGVuICYmIGNsaWNrZWRBY3RpdmUpKQ0KCQlyZXR1cm4gZmFsc2U7DQoJ
aWYgKCFjbGlja2VkLmlzKG9wdGlvbnMuaGVhZGVyKSkNCgkJcmV0dXJuOw0K
DQoJLy8gc3dpdGNoIGNsYXNzZXMNCglvcHRpb25zLmFjdGl2ZS5wYXJlbnQo
KS5hbmRTZWxmKCkudG9nZ2xlQ2xhc3Mob3B0aW9ucy5zZWxlY3RlZENsYXNz
KTsNCglpZiAoICFjbGlja2VkQWN0aXZlICkgew0KCQljbGlja2VkLnBhcmVu
dCgpLmFuZFNlbGYoKS5hZGRDbGFzcyhvcHRpb25zLnNlbGVjdGVkQ2xhc3Mp
Ow0KCX0NCg0KCS8vIGZpbmQgZWxlbWVudHMgdG8gc2hvdyBhbmQgaGlkZQ0K
CXZhciB0b1Nob3cgPTNEIGNsaWNrZWQubmV4dCgpLA0KCQl0b0hpZGUgPTNE
IG9wdGlvbnMuYWN0aXZlLm5leHQoKSwNCgkJLy9kYXRhID0zRCBbY2xpY2tl
ZCwgb3B0aW9ucy5hY3RpdmUsIHRvU2hvdywgdG9IaWRlXSwNCgkJZGF0YSA9
M0Qgew0KCQkJaW5zdGFuY2U6IHRoaXMsDQoJCQlvcHRpb25zOiBvcHRpb25z
LA0KCQkJbmV3SGVhZGVyOiBjbGlja2VkLA0KCQkJb2xkSGVhZGVyOiBvcHRp
b25zLmFjdGl2ZSwNCgkJCW5ld0NvbnRlbnQ6IHRvU2hvdywNCgkJCW9sZENv
bnRlbnQ6IHRvSGlkZQ0KCQl9LA0KCQlkb3duID0zRCBvcHRpb25zLmhlYWRl
cnMuaW5kZXgoIG9wdGlvbnMuYWN0aXZlWzBdICkgPiA9DQpvcHRpb25zLmhl
YWRlcnMuaW5kZXgoIGNsaWNrZWRbMF0gKTsNCj0wOQ0KCW9wdGlvbnMuYWN0
aXZlID0zRCBjbGlja2VkQWN0aXZlID8gJChbXSkgOiBjbGlja2VkOw0KCXRv
Z2dsZS5jYWxsKHRoaXMsIHRvU2hvdywgdG9IaWRlLCBkYXRhLCBjbGlja2Vk
QWN0aXZlLCBkb3duICk7DQoNCglyZXR1cm4gZmFsc2U7DQp9Ow0KDQpmdW5j
dGlvbiBmaW5kQWN0aXZlKGhlYWRlcnMsIHNlbGVjdG9yKSB7DQoJcmV0dXJu
IHNlbGVjdG9yICE9M0QgdW5kZWZpbmVkDQoJCT8gdHlwZW9mIHNlbGVjdG9y
ID0zRD0zRCAibnVtYmVyIg0KCQkJPyBoZWFkZXJzLmZpbHRlcigiOmVxKCIg
KyBzZWxlY3RvciArICIpIikNCgkJCTogaGVhZGVycy5ub3QoaGVhZGVycy5u
b3Qoc2VsZWN0b3IpKQ0KCQk6IHNlbGVjdG9yID0zRD0zRD0zRCBmYWxzZQ0K
CQkJPyAkKFtdKQ0KCQkJOiBoZWFkZXJzLmZpbHRlcigiOmVxKDApIik7DQp9
DQoNCiQuZXh0ZW5kKCQudWkuYWNjb3JkaW9uLCB7DQoJZGVmYXVsdHM6IHsN
CgkJc2VsZWN0ZWRDbGFzczogInNlbGVjdGVkIiwNCgkJYWx3YXlzT3Blbjog
dHJ1ZSwNCgkJYW5pbWF0ZWQ6ICdzbGlkZScsDQoJCWV2ZW50OiAiY2xpY2si
LA0KCQloZWFkZXI6ICJoNCIsDQoJCWF1dG9oZWlnaHQ6IHRydWUsDQoJCXJ1
bm5pbmc6IDAsDQoJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uKCkgew0K
CQkJcmV0dXJuIHRoaXMuaHJlZi50b0xvd2VyQ2FzZSgpID0zRD0zRCBsb2Nh
dGlvbi5ocmVmLnRvTG93ZXJDYXNlKCk7DQoJCX0NCgl9LA0KCWFuaW1hdGlv
bnM6IHsNCgkJc2xpZGU6IGZ1bmN0aW9uKG9wdGlvbnMsIGFkZGl0aW9ucykg
ew0KCQkJb3B0aW9ucyA9M0QgJC5leHRlbmQoew0KCQkJCWVhc2luZzogInN3
aW5nIiwNCgkJCQlkdXJhdGlvbjogMzAwDQoJCQl9LCBvcHRpb25zLCBhZGRp
dGlvbnMpOw0KCQkJaWYgKCAhb3B0aW9ucy50b0hpZGUuc2l6ZSgpICkgew0K
CQkJCW9wdGlvbnMudG9TaG93LmFuaW1hdGUoe2hlaWdodDogInNob3cifSwg
b3B0aW9ucyk7DQoJCQkJcmV0dXJuOw0KCQkJfQ0KCQkJdmFyIGhpZGVIZWln
aHQgPTNEIG9wdGlvbnMudG9IaWRlLmhlaWdodCgpLA0KCQkJCXNob3dIZWln
aHQgPTNEIG9wdGlvbnMudG9TaG93LmhlaWdodCgpLA0KCQkJCWRpZmZlcmVu
Y2UgPTNEIHNob3dIZWlnaHQgLyBoaWRlSGVpZ2h0Ow0KCQkJb3B0aW9ucy50
b1Nob3cuY3NzKHsgaGVpZ2h0OiAwLCBvdmVyZmxvdzogJ2hpZGRlbicgfSku
c2hvdygpOw0KCQkJPQ0Kb3B0aW9ucy50b0hpZGUuZmlsdGVyKCI6aGlkZGVu
IikuZWFjaChvcHRpb25zLmNvbXBsZXRlKS5lbmQoKS5maWx0ZXIoIjp2aT0N
CnNpYmxlIikuYW5pbWF0ZSh7aGVpZ2h0OiJoaWRlIn0sew0KCQkJCXN0ZXA6
IGZ1bmN0aW9uKG5vdykgew0KCQkJCQl2YXIgY3VycmVudCA9M0QgKGhpZGVI
ZWlnaHQgLSBub3cpICogZGlmZmVyZW5jZTsNCgkJCQkJaWYgKCQuYnJvd3Nl
ci5tc2llIHx8ICQuYnJvd3Nlci5vcGVyYSkgew0KCQkJCQkJY3VycmVudCA9
M0QgTWF0aC5jZWlsKGN1cnJlbnQpOw0KCQkJCQl9DQoJCQkJCW9wdGlvbnMu
dG9TaG93LmhlaWdodCggY3VycmVudCApOw0KCQkJCX0sDQoJCQkJZHVyYXRp
b246IG9wdGlvbnMuZHVyYXRpb24sDQoJCQkJZWFzaW5nOiBvcHRpb25zLmVh
c2luZywNCgkJCQljb21wbGV0ZTogZnVuY3Rpb24oKSB7DQoJCQkJCWlmICgg
IW9wdGlvbnMuYXV0b2hlaWdodCApIHsNCgkJCQkJCW9wdGlvbnMudG9TaG93
LmNzcygiaGVpZ2h0IiwgImF1dG8iKTsNCgkJCQkJfQ0KCQkJCQlvcHRpb25z
LmNvbXBsZXRlKCk7DQoJCQkJfQ0KCQkJfSk7DQoJCX0sDQoJCWJvdW5jZXNs
aWRlOiBmdW5jdGlvbihvcHRpb25zKSB7DQoJCQl0aGlzLnNsaWRlKG9wdGlv
bnMsIHsNCgkJCQllYXNpbmc6IG9wdGlvbnMuZG93biA/ICJib3VuY2VvdXQi
IDogInN3aW5nIiwNCgkJCQlkdXJhdGlvbjogb3B0aW9ucy5kb3duID8gMTAw
MCA6IDIwMA0KCQkJfSk7DQoJCX0sDQoJCWVhc2VzbGlkZTogZnVuY3Rpb24o
b3B0aW9ucykgew0KCQkJdGhpcy5zbGlkZShvcHRpb25zLCB7DQoJCQkJZWFz
aW5nOiAiZWFzZWlub3V0IiwNCgkJCQlkdXJhdGlvbjogNzAwDQoJCQl9KQ0K
CQl9DQoJfQ0KfSk7DQoNCn0pKGpRdWVyeSk7DQoNCg0KCWpRdWVyeSgpLnJl
YWR5KGZ1bmN0aW9uKCl7DQoJCS8vIHNpbXBsZSBhY2NvcmRpb24NCgkJalF1
ZXJ5KCcjbGlzdDFhJykuYWNjb3JkaW9uKCk7DQoJCWpRdWVyeSgnI2xpc3Qx
YicpLmFjY29yZGlvbih7DQoJCQlhdXRvaGVpZ2h0OiBmYWxzZQ0KCQl9KTsN
Cgk9MDkNCgk9MDkNCgkJdmFyIHdpemFyZCA9M0QgJCgiI3dpemFyZCIpLmFj
Y29yZGlvbih7DQoJCQloZWFkZXI6ICcudGl0bGUnLA0KCQkJZXZlbnQ6IGZh
bHNlDQoJCX0pOw0KCT0wOQ0KCQl2YXIgd2l6YXJkQnV0dG9ucyA9M0QgJChb
XSk7DQoJCSQoImRpdi50aXRsZSIsIHdpemFyZCkuZWFjaChmdW5jdGlvbihp
bmRleCkgew0KCQkJd2l6YXJkQnV0dG9ucyA9M0Qgd2l6YXJkQnV0dG9ucy5h
ZGQoJCh0aGlzKQ0KCQkJLm5leHQoKQ0KCQkJLmNoaWxkcmVuKCI6YnV0dG9u
IikNCgkJCS5maWx0ZXIoIi5uZXh0LCAucHJldmlvdXMiKQ0KCQkJLmNsaWNr
KGZ1bmN0aW9uKCkgew0KCQkJCXdpemFyZC5hY2NvcmRpb24oImFjdGl2YXRl
IiwgaW5kZXggKyAoJCh0aGlzKS5pcygiLm5leHQiKSA/IDEgOiAtMSkpDQoJ
CQl9KSk7DQoJCX0pOw0KCT0wOQ0KCQkvLyBiaW5kIHRvIGNoYW5nZSBldmVu
dCBvZiBzZWxlY3QgdG8gY29udHJvbCBmaXJzdCBhbmQgc2Vjb25kcyA9DQph
Y2NvcmRpb24NCgkJLy8gc2ltaWxhciB0byB0YWIncyBwbHVnaW4gdHJpZ2dl
clRhYigpLCB3aXRob3V0IGFuIGV4dHJhIG1ldGhvZA0KCQl2YXIgYWNjb3Jk
aW9ucyA9M0QgalF1ZXJ5KCcjbGlzdDFhLCAjbGlzdDFiLCAjbGlzdDIsICNs
aXN0MywgPQ0KI25hdmlnYXRpb24sICN3aXphcmQnKTsNCgk9MDkNCgkJalF1
ZXJ5KCcjc3dpdGNoIHNlbGVjdCcpLmNoYW5nZShmdW5jdGlvbigpIHsNCgkJ
CWFjY29yZGlvbnMuYWNjb3JkaW9uKCJhY3RpdmF0ZSIsIHRoaXMuc2VsZWN0
ZWRJbmRleC0xICk7DQoJCX0pOw0KCQlqUXVlcnkoJyNjbG9zZScpLmNsaWNr
KGZ1bmN0aW9uKCkgew0KCQkJYWNjb3JkaW9ucy5hY2NvcmRpb24oImFjdGl2
YXRlIiwgLTEpOw0KCQl9KTsNCgkJalF1ZXJ5KCcjc3dpdGNoMicpLmNoYW5n
ZShmdW5jdGlvbigpIHsNCgkJCWFjY29yZGlvbnMuYWNjb3JkaW9uKCJhY3Rp
dmF0ZSIsIHRoaXMudmFsdWUpOw0KCQl9KTsNCgkJalF1ZXJ5KCcjZW5hYmxl
JykuY2xpY2soZnVuY3Rpb24oKSB7DQoJCQlhY2NvcmRpb25zLmFjY29yZGlv
bigiZW5hYmxlIik7DQoJCX0pOw0KCQlqUXVlcnkoJyNkaXNhYmxlJykuY2xp
Y2soZnVuY3Rpb24oKSB7DQoJCQlhY2NvcmRpb25zLmFjY29yZGlvbigiZGlz
YWJsZSIpOw0KCQl9KTsNCgkJalF1ZXJ5KCcjcmVtb3ZlJykuY2xpY2soZnVu
Y3Rpb24oKSB7DQoJCQlhY2NvcmRpb25zLmFjY29yZGlvbigiZGVzdHJveSIp
Ow0KCQkJd2l6YXJkQnV0dG9ucy51bmJpbmQoImNsaWNrIik7DQoJCX0pOw0K
CX0pOw0KDQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0MyMThFLjNC
RjI3NUMwDQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bQ0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJs
ZQ0KQ29udGVudC1Mb2NhdGlvbjogaHR0cDovL3d3dy5jYXJ0YXNpLml0L2ph
dmFzY3JpcHQvd3Rpbml0LmpzDQoNCi8vIFdlYlRyZW5kcyBTbWFydFNvdXJj
ZSBEYXRhIENvbGxlY3RvciBUYWcNCi8vIFZlcnNpb246IDEuMS4xDQovLyBD
cmVhdGVkOiAyLzEyLzIwMDggNTo0NzoyNCBBTQ0KZnVuY3Rpb24gRGNzSW5p
dCgpew0KCXZhciB0aGF0PTNEdGhpczsNCgl0aGlzLmRjc2lkPTNEImRjc2c5
ZjA5cDEwMDAwZzRlZTVyNThkejhfNWI4ZiI7DQoJdGhpcy5kb21haW49M0Qi
c3RhdHNlLndlYnRyZW5kc2xpdmUuY29tIjsNCgl0aGlzLmVuYWJsZWQ9M0R0
cnVlOw0KCXRoaXMuZXhyZT0zRChmdW5jdGlvbigpe3JldHVybih3aW5kb3cu
UmVnRXhwP25ldyA9DQpSZWdFeHAoImRjcyh1cmkpfChyZWYpfChhdXQpfCht
ZXQpfChzdGEpfChzaXApfChwcm8pfChieXQpfChkYXQpfChwM3ApfChjPQ0K
ZmcpfChyZWRpcmVjdCl8KGNpcCkiLCJpIik6IiIpO30pKCk7DQoJdGhpcy5m
cGM9M0QiV1RfRlBDIjsNCgl0aGlzLmZwY2RvbT0zRCIuY2FydGFzaS5pdCI7
DQoJdGhpcy5pMThuPTNEZmFsc2U7DQoJdGhpcy5pbWFnZXM9M0RbXTsNCgl0
aGlzLmluZGV4PTNEMDsNCgl0aGlzLnFwPTNEW107DQoJPQ0KdGhpcy5yZT0z
RChmdW5jdGlvbigpe3JldHVybih3aW5kb3cuUmVnRXhwPyh0aGF0LmkxOG4/
eyIlMjUiOi9cJS9nfTp7IiUwOT0NCiI6L1x0L2csIiUyMCI6LyA9DQovZywi
JTIzIjovXCMvZywiJTI2IjovXCYvZywiJTJCIjovXCsvZywiJTNGIjovXD8v
ZywiJTVDIjovXFwvZywiJTIyIjovXCIvPQ0KZywiJTdGIjovXHg3Ri9nLCIl
QTAiOi9ceEEwL2d9KToiIik7fSkoKTsNCgl0aGlzLm9uc2l0ZWRvbXM9M0Qi
IjsNCgl0aGlzLmRvd25sb2FkdHlwZXM9M0QieGxzLGRvYyxwZGYsdHh0LGNz
dix6aXAiOw0KCXRoaXMucmlnaHRjbGlja3R5cGVzPTNEInhscyxkb2MscGRm
LHR4dCxjc3YsemlwIjsNCgl0aGlzLnRpbWV6b25lPTNEMTsNCgl0aGlzLnRy
YWNrZXZlbnRzPTNEdHJ1ZTsNCgk9DQooZnVuY3Rpb24oKXtpZih0aGF0LmVu
YWJsZWQmJihkb2N1bWVudC5jb29raWUuaW5kZXhPZih0aGF0LmZwYysiPTNE
Iik9M0Q9M0Q9DQotMSkmJihkb2N1bWVudC5jb29raWUuaW5kZXhPZigiV1RM
T1BUT1VUPTNEIik9M0Q9M0QtMSkpe2RvY3VtZW50LndyaXRlKCI8PQ0Kc2Ny
IisiaXB0IHR5cGU9M0QndGV4dC9qYXZhc2NyaXB0JyA9DQpzcmM9M0QnIisi
aHR0cCIrKHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRw
czonKT0zRD0zRDA/J3MnOicnPQ0KKSsiOi8vIit0aGF0LmRvbWFpbisiLyIr
dGhhdC5kY3NpZCsiL3d0aWQuanMiKyInPjxcL3NjciIrImlwdD4iKTt9fSko
KTsNCn0NCnZhciBEQ1M9M0R7fTsNCnZhciBXVD0zRHt9Ow0KdmFyIERDU2V4
dD0zRHt9Ow0KdmFyIGRjc0luaXQ9M0RuZXcgRGNzSW5pdCgpOw0KLS0tLS0t
PV9OZXh0UGFydF8wMDBfMDAwMF8wMUNDMjE4RS4zQkYyNzVDMA0KQ29udGVu
dC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCkNvbnRlbnQtVHJh
bnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCkNvbnRlbnQtTG9j
YXRpb246IGh0dHA6Ly93d3cuY2FydGFzaS5pdC9qYXZhc2NyaXB0L3d0YmFz
ZS5qcw0KDQovLyBXZWJUcmVuZHMgU21hcnRTb3VyY2UgRGF0YSBDb2xsZWN0
b3IgVGFnDQovLyBWZXJzaW9uOiAxLjEuMQ0KLy8gQ3JlYXRlZDogMi8xMi8y
MDA4IDU6NDc6MjQgQU0NCmZ1bmN0aW9uIGRjc0Nvb2tpZSgpew0KCWlmICh0
eXBlb2YoZGNzT3RoZXIpPTNEPTNEImZ1bmN0aW9uIil7DQoJCWRjc090aGVy
KCk7DQoJfQ0KCWVsc2UgaWYgKHR5cGVvZihkY3NGUEMpPTNEPTNEImZ1bmN0
aW9uIil7DQoJCWRjc0ZQQyhkY3NJbml0LnRpbWV6b25lKTsNCgl9DQp9DQpm
dW5jdGlvbiBkY3NHZXRDb29raWUobmFtZSl7DQoJdmFyIGNvb2tpZXM9M0Rk
b2N1bWVudC5jb29raWUuc3BsaXQoIjsgIik7DQoJdmFyIGNtYXRjaD0zRFtd
Ow0KCXZhciBpZHg9M0QwOw0KCXZhciBpPTNEMDsNCgl2YXIgbmFtZWxlbj0z
RG5hbWUubGVuZ3RoOw0KCXZhciBjbGVuPTNEY29va2llcy5sZW5ndGg7DQoJ
Zm9yIChpPTNEMDtpPGNsZW47aSsrKXsNCgkJdmFyIGM9M0Rjb29raWVzW2ld
Ow0KCQlpZiAoKGMuc3Vic3RyaW5nKDAsbmFtZWxlbisxKSk9M0Q9M0QobmFt
ZSsiPTNEIikpew0KCQkJY21hdGNoW2lkeCsrXT0zRGM7DQoJCX0NCgl9DQoJ
dmFyIGNtYXRjaENvdW50PTNEY21hdGNoLmxlbmd0aDsNCglpZiAoY21hdGNo
Q291bnQ+MCl7DQoJCWlkeD0zRDA7DQoJCWlmICgoY21hdGNoQ291bnQ+MSkm
JihuYW1lPTNEPTNEZGNzSW5pdC5mcGMpKXsNCgkJCXZhciBkTGF0ZXN0PTNE
bmV3IERhdGUoMCk7DQoJCQlmb3IgKGk9M0QwO2k8Y21hdGNoQ291bnQ7aSsr
KXsNCgkJCQl2YXIgbHY9M0RwYXJzZUludChkY3NHZXRDcnVtYihjbWF0Y2hb
aV0sImx2IikpOw0KCQkJCXZhciBkTHN0PTNEbmV3IERhdGUobHYpOw0KCQkJ
CWlmIChkTHN0PmRMYXRlc3Qpew0KCQkJCQlkTGF0ZXN0LnNldFRpbWUoZExz
dC5nZXRUaW1lKCkpOw0KCQkJCQlpZHg9M0RpOw0KCQkJCX0NCgkJCX0NCgkJ
fQ0KCQlyZXR1cm4gdW5lc2NhcGUoY21hdGNoW2lkeF0uc3Vic3RyaW5nKG5h
bWVsZW4rMSkpOw0KCX0NCgllbHNlew0KCQlyZXR1cm4gbnVsbDsNCgl9DQp9
DQpmdW5jdGlvbiBkY3NHZXRDcnVtYihjdmFsLGNydW1iKXsNCgl2YXIgYUNv
b2tpZT0zRGN2YWwuc3BsaXQoIjoiKTsNCglmb3IgKHZhciBpPTNEMDtpPGFD
b29raWUubGVuZ3RoO2krKyl7DQoJCXZhciBhQ3J1bWI9M0RhQ29va2llW2ld
LnNwbGl0KCI9M0QiKTsNCgkJaWYgKGNydW1iPTNEPTNEYUNydW1iWzBdKXsN
CgkJCXJldHVybiBhQ3J1bWJbMV07DQoJCX0NCgl9DQoJcmV0dXJuIG51bGw7
DQp9DQpmdW5jdGlvbiBkY3NHZXRJZENydW1iKGN2YWwsY3J1bWIpew0KCXZh
ciBpZD0zRGN2YWwuc3Vic3RyaW5nKDAsY3ZhbC5pbmRleE9mKCI6bHY9M0Qi
KSk7DQoJdmFyIGFDcnVtYj0zRGlkLnNwbGl0KCI9M0QiKTsNCglmb3IgKHZh
ciBpPTNEMDtpPGFDcnVtYi5sZW5ndGg7aSsrKXsNCgkJaWYgKGNydW1iPTNE
PTNEYUNydW1iWzBdKXsNCgkJCXJldHVybiBhQ3J1bWJbMV07DQoJCX0NCgl9
DQoJcmV0dXJuIG51bGw7DQp9DQpmdW5jdGlvbiBkY3NJc0ZwY1NldChuYW1l
LGlkLGx2LHNzKXsNCgl2YXIgYz0zRGRjc0dldENvb2tpZShuYW1lKTsNCglp
ZiAoYyl7DQoJCXJldHVybiA9DQooKGlkPTNEPTNEZGNzR2V0SWRDcnVtYihj
LCJpZCIpKSYmKGx2PTNEPTNEZGNzR2V0Q3J1bWIoYywibHYiKSkmJihzcz0z
RGRjPQ0Kc0dldENydW1iKGMsInNzIikpKT8wOjM7DQoJfQ0KCXJldHVybiAy
Ow0KfQ0KZnVuY3Rpb24gZGNzRlBDKG9mZnNldCl7DQoJaWYgKHR5cGVvZihv
ZmZzZXQpPTNEPTNEInVuZGVmaW5lZCIpew0KCQlyZXR1cm47DQoJfQ0KCWlm
IChkb2N1bWVudC5jb29raWUuaW5kZXhPZigiV1RMT1BUT1VUPTNEIikhPTNE
LTEpew0KCQlyZXR1cm47DQoJfQ0KCXZhciBuYW1lPTNEZGNzSW5pdC5mcGM7
DQoJdmFyIGRDdXI9M0RuZXcgRGF0ZSgpOw0KCXZhciBhZGo9M0QoZEN1ci5n
ZXRUaW1lem9uZU9mZnNldCgpKjYwMDAwKSsob2Zmc2V0KjM2MDAwMDApOw0K
CWRDdXIuc2V0VGltZShkQ3VyLmdldFRpbWUoKSthZGopOw0KCXZhciBkRXhw
PTNEbmV3IERhdGUoZEN1ci5nZXRUaW1lKCkrMzE1MzYwMDAwMDAwKTsNCgl2
YXIgZFNlcz0zRG5ldyBEYXRlKGRDdXIuZ2V0VGltZSgpKTsNCgk9DQpXVC5j
b19mPTNEV1QudnRfc2lkPTNEV1QudnRfZj0zRFdULnZ0X2ZfYT0zRFdULnZ0
X2Zfcz0zRFdULnZ0X2ZfZD0zRFdULnZ0PQ0KX2ZfdGxoPTNEV1QudnRfZl90
bHY9M0QiIjsNCglpZiAoZG9jdW1lbnQuY29va2llLmluZGV4T2YobmFtZSsi
PTNEIik9M0Q9M0QtMSl7DQoJCWlmICgodHlwZW9mKGdXdElkKSE9M0QidW5k
ZWZpbmVkIikmJihnV3RJZCE9M0QiIikpew0KCQkJV1QuY29fZj0zRGdXdElk
Ow0KCQl9DQoJCWVsc2UgaWYgKCh0eXBlb2YoZ1RlbXBXdElkKSE9M0QidW5k
ZWZpbmVkIikmJihnVGVtcFd0SWQhPTNEIiIpKXsNCgkJCVdULmNvX2Y9M0Rn
VGVtcFd0SWQ7DQoJCQlXVC52dF9mPTNEIjEiOw0KCQl9DQoJCWVsc2V7DQoJ
CQlXVC5jb19mPTNEIjIiOw0KCQkJdmFyIGN1cj0zRGRDdXIuZ2V0VGltZSgp
LnRvU3RyaW5nKCk7DQoJCQlmb3IgKHZhciBpPTNEMjtpPD0zRCgzMi1jdXIu
bGVuZ3RoKTtpKyspew0KCQkJCVdULmNvX2YrPTNETWF0aC5mbG9vcihNYXRo
LnJhbmRvbSgpKjE2LjApLnRvU3RyaW5nKDE2KTsNCgkJCX0NCgkJCVdULmNv
X2YrPTNEY3VyOw0KCQkJV1QudnRfZj0zRCIxIjsNCgkJfQ0KCQlpZiAodHlw
ZW9mKGdXdEFjY291bnRSb2xsdXApPTNEPTNEInVuZGVmaW5lZCIpew0KCQkJ
V1QudnRfZl9hPTNEIjEiOw0KCQl9DQoJCVdULnZ0X2Zfcz0zRFdULnZ0X2Zf
ZD0zRCIxIjsNCgkJV1QudnRfZl90bGg9M0RXVC52dF9mX3Rsdj0zRCIwIjsN
Cgl9DQoJZWxzZXsNCgkJdmFyIGM9M0RkY3NHZXRDb29raWUobmFtZSk7DQoJ
CXZhciBpZD0zRGRjc0dldElkQ3J1bWIoYywiaWQiKTsNCgkJdmFyIGx2PTNE
cGFyc2VJbnQoZGNzR2V0Q3J1bWIoYywibHYiKSk7DQoJCXZhciBzcz0zRHBh
cnNlSW50KGRjc0dldENydW1iKGMsInNzIikpOw0KCQlpZiAoKGlkPTNEPTNE
bnVsbCl8fChpZD0zRD0zRCJudWxsIil8fGlzTmFOKGx2KXx8aXNOYU4oc3Mp
KXsNCgkJCXJldHVybjsNCgkJfQ0KCQlXVC5jb19mPTNEaWQ7DQoJCXZhciBk
THN0PTNEbmV3IERhdGUobHYpOw0KCQlXVC52dF9mX3RsaD0zRE1hdGguZmxv
b3IoKGRMc3QuZ2V0VGltZSgpLWFkaikvMTAwMCk7DQoJCWRTZXMuc2V0VGlt
ZShzcyk7DQoJCWlmID0NCigoZEN1ci5nZXRUaW1lKCk+KGRMc3QuZ2V0VGlt
ZSgpKzE4MDAwMDApKXx8KGRDdXIuZ2V0VGltZSgpPihkU2VzLmdldFRpbWU9
DQooKSsyODgwMDAwMCkpKXsNCgkJCVdULnZ0X2ZfdGx2PTNETWF0aC5mbG9v
cigoZFNlcy5nZXRUaW1lKCktYWRqKS8xMDAwKTsNCgkJCWRTZXMuc2V0VGlt
ZShkQ3VyLmdldFRpbWUoKSk7DQoJCQlXVC52dF9mX3M9M0QiMSI7DQoJCX0N
CgkJaWYgPQ0KKChkQ3VyLmdldERheSgpIT0zRGRMc3QuZ2V0RGF5KCkpfHwo
ZEN1ci5nZXRNb250aCgpIT0zRGRMc3QuZ2V0TW9udGgoKSl8fD0NCihkQ3Vy
LmdldFllYXIoKSE9M0RkTHN0LmdldFllYXIoKSkpew0KCQkJV1QudnRfZl9k
PTNEIjEiOw0KCQl9DQoJfQ0KCVdULmNvX2Y9M0Rlc2NhcGUoV1QuY29fZik7
DQoJV1QudnRfc2lkPTNEV1QuY29fZisiLiIrKGRTZXMuZ2V0VGltZSgpLWFk
aik7DQoJdmFyIGV4cGlyeT0zRCI7IGV4cGlyZXM9M0QiK2RFeHAudG9HTVRT
dHJpbmcoKTsNCgl2YXIgY3VyPTNEZEN1ci5nZXRUaW1lKCkudG9TdHJpbmco
KTsNCgl2YXIgc2VzPTNEZFNlcy5nZXRUaW1lKCkudG9TdHJpbmcoKTsNCgk9
DQpkb2N1bWVudC5jb29raWU9M0RuYW1lKyI9M0QiKyJpZD0zRCIrV1QuY29f
ZisiOmx2PTNEIitjdXIrIjpzcz0zRCIrc2VzK2V4PQ0KcGlyeSsiOyBwYXRo
PTNELyIrKCgoZGNzSW5pdC5mcGNkb20hPTNEIiIpKT8oIjsgPQ0KZG9tYWlu
PTNEIitkY3NJbml0LmZwY2RvbSk6KCIiKSk7DQoJdmFyIHJjPTNEZGNzSXNG
cGNTZXQobmFtZSxXVC5jb19mLGN1cixzZXMpOw0KCWlmIChyYyE9M0QwKXsN
CgkJPQ0KV1QuY29fZj0zRFdULnZ0X3NpZD0zRFdULnZ0X2Zfcz0zRFdULnZ0
X2ZfZD0zRFdULnZ0X2ZfdGxoPTNEV1QudnRfZl90bHY9M0Q9DQoiIjsNCgkJ
V1QudnRfZj0zRFdULnZ0X2ZfYT0zRHJjOw0KICAgIH0NCn0NCmZ1bmN0aW9u
IGRjc0lzT25zaXRlKGhvc3Qpew0KCWhvc3Q9M0Rob3N0LnRvTG93ZXJDYXNl
KCk7DQoJaWYgKGhvc3Q9M0Q9M0R3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUu
dG9Mb3dlckNhc2UoKSkNCgl7DQoJCXJldHVybiB0cnVlOw0KCX0NCglpZiAo
dHlwZW9mKGRjc0luaXQub25zaXRlZG9tcy50ZXN0KT0zRD0zRCJmdW5jdGlv
biIpew0KCQlyZXR1cm4gZGNzSW5pdC5vbnNpdGVkb21zLnRlc3QoaG9zdCk7
DQoJfQ0KCWVsc2UgaWYgKGRjc0luaXQub25zaXRlZG9tcy5sZW5ndGg+MCl7
DQoJCXZhciBkb21zPTNEZGNzSW5pdC5vbnNpdGVkb21zLnRvTG93ZXJDYXNl
KCkuc3BsaXQoIiwiKTsNCgkJdmFyIGxlbj0zRGRvbXMubGVuZ3RoOw0KCQlm
b3IgKHZhciBpPTNEMDtpPGxlbjtpKyspew0KCQkJaWYgKGhvc3Q9M0Q9M0Rk
b21zW2ldKXsNCgkJCSAgICByZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJfQ0KCX0N
CglyZXR1cm4gZmFsc2U7DQp9DQpmdW5jdGlvbiBkY3NUeXBlTWF0Y2gocHRo
LCB0eXBlbGlzdCl7DQoJdmFyIHR5cGU9M0RwdGguc3Vic3RyaW5nKHB0aC5s
YXN0SW5kZXhPZigiLiIpKzEscHRoLmxlbmd0aCk7DQoJdmFyIHR5cGVzPTNE
dHlwZWxpc3Quc3BsaXQoIiwiKTsNCglmb3IgKHZhciBpPTNEMDtpPHR5cGVz
Lmxlbmd0aDtpKyspew0KCQlpZiAodHlwZT0zRD0zRHR5cGVzW2ldKXsNCgkJ
CXJldHVybiB0cnVlOw0KCQl9DQoJfQ0KCXJldHVybiBmYWxzZTsNCn0NCmZ1
bmN0aW9uIGRjc0V2dChldnQsdGFnKXsNCgl2YXIgZT0zRGV2dC50YXJnZXR8
fGV2dC5zcmNFbGVtZW50Ow0KCXdoaWxlIChlLnRhZ05hbWUmJihlLnRhZ05h
bWUhPTNEdGFnKSl7DQoJCWU9M0RlLnBhcmVudEVsZW1lbnR8fGUucGFyZW50
Tm9kZTsNCgl9DQoJcmV0dXJuIGU7DQp9DQpmdW5jdGlvbiBkY3NOYXZpZ2F0
aW9uKGV2dCl7DQoJcmV0dXJuICIiOw0KfQ0KZnVuY3Rpb24gZGNzQmluZChl
dmVudCxmdW5jKXsNCglpZiAoKHR5cGVvZih3aW5kb3dbZnVuY10pPTNEPTNE
ImZ1bmN0aW9uIikmJmRvY3VtZW50LmJvZHkpew0KCQlpZiAoZG9jdW1lbnQu
Ym9keS5hZGRFdmVudExpc3RlbmVyKXsNCgkJCWRvY3VtZW50LmJvZHkuYWRk
RXZlbnRMaXN0ZW5lcihldmVudCwgd2luZG93W2Z1bmNdLCB0cnVlKTsNCgkJ
fQ0KCQllbHNlIGlmKGRvY3VtZW50LmJvZHkuYXR0YWNoRXZlbnQpew0KCQkJ
ZG9jdW1lbnQuYm9keS5hdHRhY2hFdmVudCgib24iK2V2ZW50LCB3aW5kb3db
ZnVuY10pOw0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24gZGNzRVQoKXsNCgl2YXIg
PQ0KZT0zRChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJNU0lFIikh
PTNELTEpPyJjbGljayI6Im1vdXNlZG93biI7DQoJZGNzQmluZChlLCJkY3NE
b3dubG9hZCIpOw0KCWRjc0JpbmQoZSwiZGNzRHluYW1pYyIpOw0KCWRjc0Jp
bmQoZSwiZGNzRm9ybUJ1dHRvbiIpOw0KCWRjc0JpbmQoZSwiZGNzT2Zmc2l0
ZSIpOw0KCWRjc0JpbmQoZSwiZGNzQW5jaG9yIik7DQoJZGNzQmluZCgiY29u
dGV4dG1lbnUiLCJkY3NSaWdodENsaWNrIik7DQoJZGNzQmluZChlLCJkY3NJ
bWFnZU1hcCIpOw0KfQ0KZnVuY3Rpb24gZGNzTXVsdGlUcmFjaygpew0KCWlm
IChhcmd1bWVudHMubGVuZ3RoJTI9M0Q9M0QwKXsNCgkJZm9yICh2YXIgaT0z
RDA7aTxhcmd1bWVudHMubGVuZ3RoO2krPTNEMil7DQoJCQlpZiAoYXJndW1l
bnRzW2ldLmluZGV4T2YoJ1dULicpPTNEPTNEMCl7DQoJCQkJV1RbYXJndW1l
bnRzW2ldLnN1YnN0cmluZygzKV09M0Rhcmd1bWVudHNbaSsxXTsNCgkJCX0N
CgkJCWVsc2UgaWYgKGFyZ3VtZW50c1tpXS5pbmRleE9mKCdEQ1MuJyk9M0Q9
M0QwKXsNCgkJCQlEQ1NbYXJndW1lbnRzW2ldLnN1YnN0cmluZyg0KV09M0Rh
cmd1bWVudHNbaSsxXTsNCgkJCX0NCgkJCWVsc2UgaWYgKGFyZ3VtZW50c1tp
XS5pbmRleE9mKCdEQ1NleHQuJyk9M0Q9M0QwKXsNCgkJCQlEQ1NleHRbYXJn
dW1lbnRzW2ldLnN1YnN0cmluZyg3KV09M0Rhcmd1bWVudHNbaSsxXTsNCgkJ
CX0NCgkJfQ0KCQl2YXIgZEN1cnJlbnQ9M0RuZXcgRGF0ZSgpOw0KCQlEQ1Mu
ZGNzZGF0PTNEZEN1cnJlbnQuZ2V0VGltZSgpOw0KCQlkY3NGdW5jKCJkY3ND
b29raWUiKTsNCgkJZGNzVGFnKCk7DQoJfQ0KfQ0KDQovLyBBZGQgZXZlbnQg
aGFuZGxlcnMgaGVyZQ0KDQovLyBDb2RlIHNlY3Rpb24gZm9yIFRyYWNrIGNs
aWNrcyB0byBkb3dubG9hZCBsaW5rcy4NCmZ1bmN0aW9uIGRjc0Rvd25sb2Fk
KGV2dCl7DQoJZXZ0PTNEZXZ0fHwod2luZG93LmV2ZW50fHwiIik7DQoJaWYg
KGV2dCYmKCh0eXBlb2YoZXZ0LndoaWNoKSE9M0QibnVtYmVyIil8fChldnQu
d2hpY2g9M0Q9M0QxKSkpew0KCQl2YXIgZT0zRGRjc0V2dChldnQsIkEiKTsN
CgkJaWYgKGUuaG9zdG5hbWUmJmRjc0lzT25zaXRlKGUuaG9zdG5hbWUpKXsN
CgkJCWlmIChkY3NUeXBlTWF0Y2goZS5wYXRobmFtZSxkY3NJbml0LmRvd25s
b2FkdHlwZXMpKXsNCgkJCQl2YXIgPQ0KcXJ5PTNEZS5zZWFyY2g/ZS5zZWFy
Y2guc3Vic3RyaW5nKGUuc2VhcmNoLmluZGV4T2YoIj8iKSsxLGUuc2VhcmNo
Lmxlbmd0aD0NCik6IiI7DQoJCQkJdmFyID0NCnB0aD0zRGUucGF0aG5hbWU/
KChlLnBhdGhuYW1lLmluZGV4T2YoIi8iKSE9M0QwKT8iLyIrZS5wYXRobmFt
ZTplLnBhdGhuYW09DQplKToiLyI7DQoJCQkJdmFyIHR0bD0zRCIiOw0KCQkJ
CXZhciB0ZXh0PTNEZG9jdW1lbnQuYWxsP2UuaW5uZXJUZXh0OmUudGV4dDsN
CgkJCQl2YXIgaW1nPTNEZGNzRXZ0KGV2dCwiSU1HIik7DQoJCQkJaWYgKGlt
Zy5hbHQpew0KCQkJCQl0dGw9M0RpbWcuYWx0Ow0KCQkJCX0NCgkJCQllbHNl
IGlmICh0ZXh0KXsNCgkJCQkJdHRsPTNEdGV4dDsNCgkJCQl9DQoJCQkJZWxz
ZSBpZiAoZS5pbm5lckhUTUwpew0KCQkJCQl0dGw9M0RlLmlubmVySFRNTDsN
CgkJCQl9DQoJCQkJPQ0KZGNzTXVsdGlUcmFjaygiRENTLmRjc3NpcCIsZS5o
b3N0bmFtZSwiRENTLmRjc3VyaSIscHRoLCJEQ1MuZGNzcXJ5IixlLnNlYT0N
CnJjaHx8IiIsIldULnRpIiwiRG93bmxvYWQ6Iit0dGwsIldULmRsIiwiMjAi
LCJXVC5udiIsZGNzTmF2aWdhdGlvbihldnQpKTs9DQoNCgkJCQlEQ1MuZGNz
c2lwPTNERENTLmRjc3VyaT0zRERDUy5kY3Nxcnk9M0RXVC50aT0zRFdULmRs
PTNEV1QubnY9M0QiIjsNCgkJCX0NCgkJfQ0KCX0NCn0NCi8vIENvZGUgc2Vj
dGlvbiBmb3IgVHJhY2sgcmlnaHQgY2xpY2tzIHRvIGRvd25sb2FkIGxpbmtz
Lg0KZnVuY3Rpb24gZGNzUmlnaHRDbGljayhldnQpew0KCWV2dD0zRGV2dHx8
KHdpbmRvdy5ldmVudHx8IiIpOw0KCWlmIChldnQpew0KCQl2YXIgYnRuPTNE
ZXZ0LndoaWNofHxldnQuYnV0dG9uOw0KCQlpZiAoKGJ0biE9M0QxKXx8KG5h
dmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiU2FmYXJpIikhPTNELTEpKXsN
CgkJCXZhciBlPTNEZGNzRXZ0KGV2dCwiQSIpOw0KCQkJaWYgKCh0eXBlb2Yo
ZS5ocmVmKSE9M0QidW5kZWZpbmVkIikmJmUuaHJlZil7DQoJCQkJaWYgPQ0K
KCh0eXBlb2YoZS5wcm90b2NvbCkhPTNEInVuZGVmaW5lZCIpJiZlLnByb3Rv
Y29sJiYoZS5wcm90b2NvbC5pbmRleE9mKCJodD0NCnRwIikhPTNELTEpKXsN
CgkJCQkJaWYgPQ0KKCh0eXBlb2YoZS5wYXRobmFtZSkhPTNEInVuZGVmaW5l
ZCIpJiZkY3NUeXBlTWF0Y2goZS5wYXRobmFtZSxkY3NJbml0LnJpZz0NCmh0
Y2xpY2t0eXBlcykpew0KCQkJCQkJdmFyID0NCnB0aD0zRGUucGF0aG5hbWU/
KChlLnBhdGhuYW1lLmluZGV4T2YoIi8iKSE9M0QwKT8iLyIrZS5wYXRobmFt
ZTplLnBhdGhuYW09DQplKToiLyI7DQoJCQkJCQk9DQpkY3NNdWx0aVRyYWNr
KCJEQ1MuZGNzc2lwIixlLmhvc3RuYW1lLCJEQ1MuZGNzdXJpIixwdGgsIkRD
Uy5kY3NxcnkiLCIiLCJXPQ0KVC50aSIsIlJpZ2h0Q2xpY2s6IitwdGgsIldU
LmRsIiwiMjUiKTsNCgkJCQkJCURDUy5kY3NzaXA9M0REQ1MuZGNzdXJpPTNE
V1QudGk9M0RXVC5kbD0zRFdULm52PTNEIiI7DQoJCQkJCX0NCgkJCQl9DQoJ
CQl9DQoJCX0NCgl9DQp9DQpmdW5jdGlvbiBkY3NBZHYoKXsNCglpZiAoZGNz
SW5pdC50cmFja2V2ZW50cyl7DQoJCWRjc0Z1bmMoImRjc0VUIik7DQoJfQ0K
CWRjc0Z1bmMoImRjc0Nvb2tpZSIpOw0KCWRjc0Z1bmMoImRjc0FkU2VhcmNo
Iik7DQoJZGNzRnVuYygiZGNzVFAiKTsNCglkY3NGdW5jKCJkY3NNZXRhQ2Fw
Iik7DQp9DQoNCi8vIEFkZCBjdXN0b21pemF0aW9ucyBoZXJlDQoNCmZ1bmN0
aW9uIGRjc1Zhcigpew0KCXZhciBkQ3VycmVudD0zRG5ldyBEYXRlKCk7DQoJ
V1QudHo9M0QoZEN1cnJlbnQuZ2V0VGltZXpvbmVPZmZzZXQoKS82MCotMSl8
fCIwIjsNCglXVC5iaD0zRGRDdXJyZW50LmdldEhvdXJzKCl8fCIwIjsNCgk9
DQpXVC51bD0zRG5hdmlnYXRvci5hcHBOYW1lPTNEPTNEIk5ldHNjYXBlIj9u
YXZpZ2F0b3IubGFuZ3VhZ2U6bmF2aWdhdG9yLnVzPQ0KZXJMYW5ndWFnZTsN
CglpZiAodHlwZW9mKHNjcmVlbik9M0Q9M0Qib2JqZWN0Iil7DQoJCT0NCldU
LmNkPTNEbmF2aWdhdG9yLmFwcE5hbWU9M0Q9M0QiTmV0c2NhcGUiP3NjcmVl
bi5waXhlbERlcHRoOnNjcmVlbi5jb2xvckQ9DQplcHRoOw0KCQlXVC5zcj0z
RHNjcmVlbi53aWR0aCsieCIrc2NyZWVuLmhlaWdodDsNCgl9DQoJaWYgKHR5
cGVvZihuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSk9M0Q9M0QiYm9vbGVhbiIp
ew0KCQlXVC5qbz0zRG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpPyJZZXMiOiJO
byI7DQoJfQ0KCWlmIChkb2N1bWVudC50aXRsZSl7DQoJCWlmICh3aW5kb3cu
UmVnRXhwKXsNCgkJCXZhciB0aXJlPTNEbmV3ID0NClJlZ0V4cCgiXiIrd2lu
ZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhv
c3RuYW1lKyJcXHMtXFw9DQpzIik7DQoJCQlXVC50aT0zRGRvY3VtZW50LnRp
dGxlLnJlcGxhY2UodGlyZSwiIik7DQoJCX0NCgkJZWxzZXsNCgkJCVdULnRp
PTNEZG9jdW1lbnQudGl0bGU7DQoJCX0NCgl9DQoJV1QuanM9M0QiWWVzIjsN
CglXVC5qdj0zRGRjc0pWKCk7DQoJaWYgKGRvY3VtZW50LmJvZHkmJmRvY3Vt
ZW50LmJvZHkuYWRkQmVoYXZpb3Ipew0KCQlkb2N1bWVudC5ib2R5LmFkZEJl
aGF2aW9yKCIjZGVmYXVsdCNjbGllbnRDYXBzIik7DQoJCVdULmN0PTNEZG9j
dW1lbnQuYm9keS5jb25uZWN0aW9uVHlwZXx8InVua25vd24iOw0KCQlkb2N1
bWVudC5ib2R5LmFkZEJlaGF2aW9yKCIjZGVmYXVsdCNob21lUGFnZSIpOw0K
CQlXVC5ocD0zRGRvY3VtZW50LmJvZHkuaXNIb21lUGFnZShsb2NhdGlvbi5o
cmVmKT8iMSI6IjAiOw0KCX0NCgllbHNlew0KCQlXVC5jdD0zRCJ1bmtub3du
IjsNCgl9DQoJaWYgKGRvY3VtZW50LmFsbCl7DQoJCT0NCldULmJzPTNEZG9j
dW1lbnQuYm9keT9kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKyJ4Iitkb2N1
bWVudC5ib2R5Lm9mZnNldEg9DQplaWdodDoidW5rbm93biI7DQoJfQ0KCWVs
c2V7DQoJCVdULmJzPTNEd2luZG93LmlubmVyV2lkdGgrIngiK3dpbmRvdy5p
bm5lckhlaWdodDsNCgl9DQoJV1QuZmk9M0QiTm8iOw0KCWlmICh3aW5kb3cu
QWN0aXZlWE9iamVjdCl7DQoJCWZvcih2YXIgaT0zRDEwO2k+MDtpLS0pew0K
CQkJdHJ5ew0KCQkJCXZhciBmbGFzaCA9M0QgbmV3IEFjdGl2ZVhPYmplY3Qo
IlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLiIraSk7DQoJCQkJV1Qu
Zmk9M0QiWWVzIjsNCgkJCQlXVC5mdj0zRGkrIi4wIjsNCgkJCQlicmVhazsN
CgkJCX0NCgkJCWNhdGNoKGUpew0KCQkJfQ0KCQl9DQoJfQ0KCWVsc2UgaWYg
KG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IucGx1Z2lucy5sZW5ndGgp
ew0KCQlmb3IgKHZhciBpPTNEMDtpPG5hdmlnYXRvci5wbHVnaW5zLmxlbmd0
aDtpKyspew0KCQkJaWYgKG5hdmlnYXRvci5wbHVnaW5zW2ldLm5hbWUuaW5k
ZXhPZignU2hvY2t3YXZlIEZsYXNoJykhPTNELTEpew0KCQkJCVdULmZpPTNE
IlllcyI7DQoJCQkJV1QuZnY9M0RuYXZpZ2F0b3IucGx1Z2luc1tpXS5kZXNj
cmlwdGlvbi5zcGxpdCgiICIpWzJdOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQl9
DQoJfQ0KCWlmIChkY3NJbml0LmkxOG4pew0KCQlpZiAodHlwZW9mKGRvY3Vt
ZW50LmRlZmF1bHRDaGFyc2V0KT0zRD0zRCJzdHJpbmciKXsNCgkJCVdULmxl
PTNEZG9jdW1lbnQuZGVmYXVsdENoYXJzZXQ7DQoJCX09MjANCgkJZWxzZSBp
ZiAodHlwZW9mKGRvY3VtZW50LmNoYXJhY3RlclNldCk9M0Q9M0Qic3RyaW5n
Iil7DQoJCQlXVC5sZT0zRGRvY3VtZW50LmNoYXJhY3RlclNldDsNCgkJfQ0K
CQllbHNlew0KCQkJV1QubGU9M0QidW5rbm93biI7DQoJCX0NCgl9DQoJV1Qu
dHY9M0QiMS4xLjEiOw0KLy8JV1Quc3A9M0QiQEBTUExJVFZBTFVFQEAiOw0K
CVdULmRsPTNEIjAiOw0KCURDUy5kY3NkYXQ9M0RkQ3VycmVudC5nZXRUaW1l
KCk7DQoJRENTLmRjc3NpcD0zRHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTsN
CglEQ1MuZGNzdXJpPTNEd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOw0KCVdU
LmVzPTNERENTLmRjc3NpcCtEQ1MuZGNzdXJpOw0KCWlmICh3aW5kb3cubG9j
YXRpb24uc2VhcmNoKXsNCgkJRENTLmRjc3FyeT0zRHdpbmRvdy5sb2NhdGlv
bi5zZWFyY2g7DQoJCWlmIChkY3NJbml0LnFwLmxlbmd0aD4wKXsNCgkJCWZv
ciAodmFyIGk9M0QwO2k8ZGNzSW5pdC5xcC5sZW5ndGg7aSsrKXsNCgkJCQl2
YXIgcG9zPTNERENTLmRjc3FyeS5pbmRleE9mKGRjc0luaXQucXBbaV0pOw0K
CQkJCWlmIChwb3MhPTNELTEpew0KCQkJCQl2YXIgZnJvbnQ9M0REQ1MuZGNz
cXJ5LnN1YnN0cmluZygwLHBvcyk7DQoJCQkJCXZhciA9DQplbmQ9M0REQ1Mu
ZGNzcXJ5LnN1YnN0cmluZyhwb3MrZGNzSW5pdC5xcFtpXS5sZW5ndGgsRENT
LmRjc3FyeS5sZW5ndGgpOw0KCQkJCQlEQ1MuZGNzcXJ5PTNEZnJvbnQrZW5k
Ow0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglpZiA9DQooKHdpbmRvdy5kb2N1
bWVudC5yZWZlcnJlciE9M0QiIikmJih3aW5kb3cuZG9jdW1lbnQucmVmZXJy
ZXIhPTNEIi0iKSl7DQoJCWlmICghKG5hdmlnYXRvci5hcHBOYW1lPTNEPTNE
Ik1pY3Jvc29mdCBJbnRlcm5ldCA9DQpFeHBsb3JlciImJnBhcnNlSW50KG5h
dmlnYXRvci5hcHBWZXJzaW9uKTw0KSl7DQoJCQlEQ1MuZGNzcmVmPTNEd2lu
ZG93LmRvY3VtZW50LnJlZmVycmVyOw0KCQl9DQoJfQ0KfQ0KZnVuY3Rpb24g
ZGNzQShOLFYpew0KCWlmIChkY3NJbml0LmkxOG4mJihkY3NJbml0LmV4cmUh
PTNEIiIpJiYhZGNzSW5pdC5leHJlLnRlc3QoTikpew0KCQlpZiAoTj0zRD0z
RCJkY3NxcnkiKXsNCgkJCXZhciBuZXdWPTNEIiI7DQoJCQl2YXIgcGFyYW1z
PTNEVi5zdWJzdHJpbmcoMSkuc3BsaXQoIiYiKTsNCgkJCWZvciAodmFyIGk9
M0QwO2k8cGFyYW1zLmxlbmd0aDtpKyspew0KCQkJCXZhciBwYWlyPTNEcGFy
YW1zW2ldOw0KCQkJCXZhciBwb3M9M0RwYWlyLmluZGV4T2YoIj0zRCIpOw0K
CQkJCWlmIChwb3MhPTNELTEpew0KCQkJCQl2YXIga2V5PTNEcGFpci5zdWJz
dHJpbmcoMCxwb3MpOw0KCQkJCQl2YXIgdmFsPTNEcGFpci5zdWJzdHJpbmco
cG9zKzEpOw0KCQkJCQlpZiAoaSE9M0QwKXsNCgkJCQkJCW5ld1YrPTNEIiYi
Ow0KCQkJCQl9DQoJCQkJCW5ld1YrPTNEa2V5KyI9M0QiK2Rjc0VuY29kZSh2
YWwpOw0KCQkJCX0NCgkJCX0NCgkJCVY9M0RWLnN1YnN0cmluZygwLDEpK25l
d1Y7DQoJCX0NCgkJZWxzZXsNCgkJCVY9M0RkY3NFbmNvZGUoVik7DQoJCX0N
Cgl9DQoJcmV0dXJuICImIitOKyI9M0QiK2Rjc0VzY2FwZShWLCBkY3NJbml0
LnJlKTsNCn0NCmZ1bmN0aW9uIGRjc0VzY2FwZShTLCBSRUwpew0KCWlmIChS
RUwhPTNEIiIpew0KCQlTPTNEUy50b1N0cmluZygpOw0KCQlmb3IgKHZhciBS
IGluIFJFTCl7DQoJCQlTPTNEUy5yZXBsYWNlKFJFTFtSXSxSKTsNCgkJfQ0K
CQlyZXR1cm4gUzsNCgl9DQoJZWxzZXsNCgkJcmV0dXJuIGVzY2FwZShTKTsN
Cgl9DQp9DQpmdW5jdGlvbiBkY3NFbmNvZGUoUyl7DQoJcmV0dXJuID0NCih0
eXBlb2YoZW5jb2RlVVJJQ29tcG9uZW50KT0zRD0zRCJmdW5jdGlvbiIpP2Vu
Y29kZVVSSUNvbXBvbmVudChTKTplc2NhcGU9DQooUyk7DQp9DQpmdW5jdGlv
biBkY3NDcmVhdGVJbWFnZShkY3NTcmMpew0KCWlmIChkb2N1bWVudC5pbWFn
ZXMpew0KCQlkY3NJbml0LmltYWdlc1tkY3NJbml0LmluZGV4XT0zRG5ldyBJ
bWFnZTsNCgkJZGNzSW5pdC5pbWFnZXNbZGNzSW5pdC5pbmRleF0uc3JjPTNE
ZGNzU3JjOw0KCQlkY3NJbml0LmluZGV4Kys7DQoJfQ0KCWVsc2V7DQoJCWRv
Y3VtZW50LndyaXRlKCc8SU1HIEFMVD0zRCIiIEJPUkRFUj0zRCIwIiBOQU1F
PTNEIkRDU0lNRyIgV0lEVEg9M0QiMSIgPQ0KSEVJR0hUPTNEIjEiIFNSQz0z
RCInK2Rjc1NyYysnIj4nKTsNCgl9DQp9DQpmdW5jdGlvbiBkY3NNZXRhKCl7
DQoJdmFyIGVsZW1zOw0KCWlmIChkb2N1bWVudC5hbGwpew0KCQllbGVtcz0z
RGRvY3VtZW50LmFsbC50YWdzKCJtZXRhIik7DQoJfQ0KCWVsc2UgaWYgKGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudCl7DQoJCWVsZW1zPTNEZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoIm1ldGEiKTsNCgl9DQoJaWYgKHR5cGVv
ZihlbGVtcykhPTNEInVuZGVmaW5lZCIpew0KCQl2YXIgbGVuZ3RoPTNEZWxl
bXMubGVuZ3RoOw0KCQlmb3IgKHZhciBpPTNEMDtpPGxlbmd0aDtpKyspew0K
CQkJdmFyIG5hbWU9M0RlbGVtcy5pdGVtKGkpLm5hbWU7DQoJCQl2YXIgY29u
dGVudD0zRGVsZW1zLml0ZW0oaSkuY29udGVudDsNCgkJCXZhciBlcXVpdj0z
RGVsZW1zLml0ZW0oaSkuaHR0cEVxdWl2Ow0KCQkJaWYgKG5hbWUubGVuZ3Ro
PjApew0KCQkJCWlmIChuYW1lLmluZGV4T2YoIldULiIpPTNEPTNEMCl7DQoJ
CQkJCVdUW25hbWUuc3Vic3RyaW5nKDMpXT0zRGNvbnRlbnQ7DQoJCQkJfQ0K
CQkJCWVsc2UgaWYgKG5hbWUuaW5kZXhPZigiRENTZXh0LiIpPTNEPTNEMCl7
DQoJCQkJCURDU2V4dFtuYW1lLnN1YnN0cmluZyg3KV09M0Rjb250ZW50Ow0K
CQkJCX0NCgkJCQllbHNlIGlmIChuYW1lLmluZGV4T2YoIkRDUy4iKT0zRD0z
RDApew0KCQkJCQlEQ1NbbmFtZS5zdWJzdHJpbmcoNCldPTNEY29udGVudDsN
CgkJCQl9DQoJCQl9DQoJCX0NCgl9DQp9DQpmdW5jdGlvbiBkY3NUYWcoKXsN
CglpZiAoZG9jdW1lbnQuY29va2llLmluZGV4T2YoIldUTE9QVE9VVD0zRCIp
IT0zRC0xKXsNCgkJcmV0dXJuOw0KCX0NCgl2YXIgPQ0KUD0zRCJodHRwIiso
d2luZG93LmxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoJ2h0dHBzOicpPTNE
PTNEMD8ncyc6JycpKyI6Lz0NCi8iK2Rjc0luaXQuZG9tYWluKyhkY3NJbml0
LmRjc2lkPTNEPTNEIiI/Jyc6Jy8nK2Rjc0luaXQuZGNzaWQpKyIvZGNzLmdp
Zj89DQoiOw0KCWlmIChkY3NJbml0LmkxOG4pew0KCQlXVC5kZXA9M0QiIjsN
Cgl9DQoJZm9yICh2YXIgTiBpbiBEQ1Mpew0KCQlpZiAoRENTW05dKXsNCgkJ
CVArPTNEZGNzQShOLERDU1tOXSk7DQoJCX0NCgl9DQoJdmFyIGtleXM9M0Rb
ImNvX2YiLCJ2dF9zaWQiLCJ2dF9mX3RsdiJdOw0KCWZvciAodmFyIGk9M0Qw
O2k8a2V5cy5sZW5ndGg7aSsrKXsNCgkJdmFyIGtleT0zRGtleXNbaV07DQoJ
CWlmIChXVFtrZXldKXsNCgkJCVArPTNEZGNzQSgiV1QuIitrZXksV1Rba2V5
XSk7DQoJCQlkZWxldGUgV1Rba2V5XTsNCgkJfQ0KCX0NCglmb3IgKE4gaW4g
V1Qpew0KCQlpZiAoV1RbTl0pew0KCQkJUCs9M0RkY3NBKCJXVC4iK04sV1Rb
Tl0pOw0KCQl9DQoJfQ0KCWZvciAoTiBpbiBEQ1NleHQpew0KCQlpZiAoRENT
ZXh0W05dKXsNCgkJCWlmIChkY3NJbml0LmkxOG4pew0KCQkJCVdULmRlcD0z
RChXVC5kZXAubGVuZ3RoPTNEPTNEMCk/TjooV1QuZGVwKyI7IitOKTsNCgkJ
CX0NCgkJCVArPTNEZGNzQShOLERDU2V4dFtOXSk7DQoJCX0NCgl9DQoJaWYg
KGRjc0luaXQuaTE4biYmKFdULmRlcC5sZW5ndGg+MCkpew0KCQlQKz0zRGRj
c0EoIldULmRlcCIsV1QuZGVwKTsNCgl9DQoJaWYgKFAubGVuZ3RoPjIwNDgm
Jm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignTVNJRScpPj0zRDApew0K
CQlQPTNEUC5zdWJzdHJpbmcoMCwyMDQwKSsiJldULnR1PTNEMSI7DQoJfQ0K
CWRjc0NyZWF0ZUltYWdlKFApOw0KCVdULmFkPTNEIiI7DQp9DQpmdW5jdGlv
biBkY3NKVigpew0KCXZhciBhZ3Q9M0RuYXZpZ2F0b3IudXNlckFnZW50LnRv
TG93ZXJDYXNlKCk7DQoJdmFyIG1ham9yPTNEcGFyc2VJbnQobmF2aWdhdG9y
LmFwcFZlcnNpb24pOw0KCXZhciBtYWM9M0QoYWd0LmluZGV4T2YoIm1hYyIp
IT0zRC0xKTsNCgl2YXIgZmY9M0QoYWd0LmluZGV4T2YoImZpcmVmb3giKSE9
M0QtMSk7DQoJdmFyIGZmMD0zRChhZ3QuaW5kZXhPZigiZmlyZWZveC8wLiIp
IT0zRC0xKTsNCgl2YXIgZmYxMD0zRChhZ3QuaW5kZXhPZigiZmlyZWZveC8x
LjAiKSE9M0QtMSk7DQoJdmFyIGZmMTU9M0QoYWd0LmluZGV4T2YoImZpcmVm
b3gvMS41IikhPTNELTEpOw0KCXZhciBmZjIwPTNEKGFndC5pbmRleE9mKCJm
aXJlZm94LzIuMCIpIT0zRC0xKTsNCgl2YXIgZmYzdXA9M0QoZmYmJiFmZjAm
JiFmZjEwJiFmZjE1JiFmZjIwKTsNCgl2YXIgPQ0Kbm49M0QoIWZmJiYoYWd0
LmluZGV4T2YoIm1vemlsbGEiKSE9M0QtMSkmJihhZ3QuaW5kZXhPZigiY29t
cGF0aWJsZSIpPTNEPTNEPQ0KLTEpKTsNCgl2YXIgbm40PTNEKG5uJiYobWFq
b3I9M0Q9M0Q0KSk7DQoJdmFyIG5uNnVwPTNEKG5uJiYobWFqb3I+PTNENSkp
Ow0KCXZhciBpZT0zRCgoYWd0LmluZGV4T2YoIm1zaWUiKSE9M0QtMSkmJihh
Z3QuaW5kZXhPZigib3BlcmEiKT0zRD0zRC0xKSk7DQoJdmFyIGllND0zRChp
ZSYmKG1ham9yPTNEPTNENCkmJihhZ3QuaW5kZXhPZigibXNpZSA0IikhPTNE
LTEpKTsNCgl2YXIgaWU1dXA9M0QoaWUmJiFpZTQpOw0KCXZhciBvcD0zRChh
Z3QuaW5kZXhPZigib3BlcmEiKSE9M0QtMSk7DQoJdmFyIG9wNT0zRChhZ3Qu
aW5kZXhPZigib3BlcmEgNSIpIT0zRC0xfHxhZ3QuaW5kZXhPZigib3BlcmEv
NSIpIT0zRC0xKTsNCgl2YXIgb3A2PTNEKGFndC5pbmRleE9mKCJvcGVyYSA2
IikhPTNELTF8fGFndC5pbmRleE9mKCJvcGVyYS82IikhPTNELTEpOw0KCXZh
ciBvcDd1cD0zRChvcCYmIW9wNSYmIW9wNik7DQoJdmFyIGp2PTNEIjEuMSI7
DQoJaWYgKGZmM3VwKXsNCgkJanY9M0QiMS44IjsNCgl9DQoJZWxzZSBpZiAo
ZmYyMCl7DQoJCWp2PTNEIjEuNyI7DQoJfQ0KCWVsc2UgaWYgKGZmMTUpew0K
CQlqdj0zRCIxLjYiOw0KCX0NCgllbHNlIGlmIChmZjB8fGZmMTB8fG5uNnVw
fHxvcDd1cCl7DQoJCWp2PTNEIjEuNSI7DQoJfQ0KCWVsc2UgaWYgKChtYWMm
JmllNXVwKXx8b3A2KXsNCgkJanY9M0QiMS40IjsNCgl9DQoJZWxzZSBpZiAo
aWU1dXB8fG5uNHx8b3A1KXsNCgkJanY9M0QiMS4zIjsNCgl9DQoJZWxzZSBp
ZiAoaWU0KXsNCgkJanY9M0QiMS4yIjsNCgl9DQoJcmV0dXJuIGp2Ow0KfQ0K
ZnVuY3Rpb24gZGNzRnVuYyhmdW5jKXsNCglpZiAodHlwZW9mKHdpbmRvd1tm
dW5jXSk9M0Q9M0QiZnVuY3Rpb24iKXsNCgkJd2luZG93W2Z1bmNdKCk7DQoJ
fQ0KfQ0KDQppZiAoZGNzSW5pdC5lbmFibGVkKXsNCiAgICBkY3NWYXIoKTsN
CiAgICBkY3NNZXRhKCk7DQogICAgZGNzRnVuYygiZGNzQWR2Iik7DQogICAg
ZGNzVGFnKCk7DQp9DQotLS0tLS09X05leHRQYXJ0XzAwMF8wMDAwXzAxQ0My
MThFLjNCRjI3NUMwLS0NCg==

------=_NextPart_000_00BE_01C2A9A6.6AFBA398--
