07.10.2009
Návštěva kosmonauta
V rámci tzv. Community Day, který je součástí Mezinárodního kongresu účastníků kosmických letů ASE Prague 2009, nás ve středu 7. října 2009 navštívil astronaut Vance Brand s manželkou. Celou hodinu se tak věnoval otázkám od studentů, pro pár šťastných podepsal fotografie.
Příspěvek Vance Branda je dobře popsán na wikipedii. Hned jeho první mise v roce 1975 na Apollu znamenala mnohé: došlo při ní k propojení s ruskou lodí Sojuz. Další tři mise byly na Challengeru a Columbii. Tedy na raketoplánech, které již neexistují.
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/inquiry-bg.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAKAAMDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAA
AAAAAAYK/8QAHhAAAQIHAQAAAAAAAAAAAAAAAAEDBBEVUVORk9L/xAAUAQEAAAAA
AAAAAAAAAAAAAAAH/8QAIhEAAAUBCQAAAAAAAAAAAAAAAQIRIVFBAwQiYWJxsdHw
/9oADAMBAAIRAxEAPwDT5XYHK5wc8gipJZNIBFCwK2IaRoy28LF4Xk4IxWSkJ1xD
/wD/2Q==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/header-fill.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAZAAEDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAA
AAAAAAoL/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABYBAQEBAAAAAAAAAAAAAAAA
AAgHCf/EABsRAAEEAwAAAAAAAAAAAAAAAAAXGGXlZqWm/9oADAMBAAIRAxEAPwCf
8BpgD8DX4BncVh/QUhYEon9XYn//2Q==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/logo-fill.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCABkAAIDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAA
AAAAAAYJ/8QAKBAAAgEABwgDAAAAAAAAAAAAAAEUAhEhUaHR8AMSE1JhkZLBBEJi
/8QAGAEBAQADAAAAAAAAAAAAAAAABAMFCAn/xAAqEQABAQUHAgcAAAAAAAAAAAAB
YQARElGREyFBYnGh8DGxAkJSwcLS4f/aAAwDAQACEQMRAD8AwC4W06dmwUcX80u4
OmkGuGIR/vSuncem6JrzrSP4irdmFH2Cpj1WVOzo/TA2zMpTy/lC0Ixj4gOl12VV
3QNTRXcsMgUsR63mB9mfSKaLy9XkeEw8oR+GtK1ER3YUgVMR8r8lmBtnrxyL2nca
MTFdFQbtSwtbuSBUw1cvFgdAVoPsxYlOHxd3FEaoivleOYKWItKiDIWQy04vDcaI
ccirsZNQcDZv667AAY4SFA0W/9k=
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/menu-right.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAeAA8DASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAA
AAAAAAn/xAAhEAACAgICAQUAAAAAAAAAAAAEBQMGAAIHCQgBERITFP/EABcBAAMB
AAAAAAAAAAAAAAAAAAMECAn/xAAiEQACAgEEAgMBAAAAAAAAAAABAgMEBQYRITEA
EhMiUUH/2gAMAwEAAhEDEQA/AIb5VTqy7I7h4F8xxzP3diccAWVe+HvfHgxBBYWz
TdQXNXrCjXybyirXcD8dWOYxGF9ZiE87ASX30m+yOVeM2U1JpzE6swt7A5ustrH3
4jHKv1EsT9x2K8jK3w2YG2eGUKSjDkMpZTDePv2sZbgvUpWhsV3Do4J2P6rgEeyM
OGU8EH92PjGMvf059TNO84pbDyzzbZd9eHqt+lPpS6uxZLLc+sRerAQOU5pqDoMq
TrtwiGHyCNLMMnhEElgiGIJ3iV1dq3D6IwVvUOcewlCoY0ZasDWLEsszekUMUYKr
7u3TSyRRLsS8i8blxWLt5m9Dj6Ko1ickJ8jiNAFG7MzHoAd7BmP8U+f/2Q==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.gchd.cz/img/menu-sipka.gif
Content-Transfer-Encoding: Base64
R0lGODlhDQALAIABAC+Eutnk6iH5BAEKAAEALAAAAAANAAsAAAIRjI+py30AnIEP
2hsb1Vn6fxQAOw==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.gchd.cz/img/column-tail.gif
Content-Transfer-Encoding: Base64
R0lGODlhqgAKAIABAP///05+zyH5BAEKAAEALAAAAACqAAoAAAIyjI+py+0Po5y0
2ouz3rz7D4biSJbmiabqyopAC8cw8Mr2TdI1zveYTvMJhxBgkIhEAgsAOw==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/column-title.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAUAKoDASIAAhEBAxEB/8QAHgABAAEEAwEBAAAAAAAA
AAAAAAcBBQYIAgkKAwT/xAA8EAABAwMCBAIHBAgHAAAAAAABAgMEBQYRACEHEjFR
CJETFBYiQWFxMpOhsRUjJFJVwdHSCiUzQmKC8P/EAB0BAAIBBQEBAAAAAAAAAAAA
AAEEAwIFBgcIAAn/xAA0EQACAQIEBAIJAgcAAAAAAAABAgMEEQAFIVESMUGRBhMU
IjJCYXGBsfAjUjNDY6HB0fH/2gAMAwEAAhEDEQA/ALl4hfETf/jD4pXDxh4kVGqr
otSrEyVw4saTWJsui2Ba6nX41Ko1JY9XpEUKi0xERM+sNUenSbpqKn7inRY0moPx
W4YNGpysZignHxefH4BwjVKE0WaNSWVEFTNMgNkBBRu3FaT9kqWUqGPeBUSNt9Xb
8T1wNz5a+u2X5fRZNQ0uVZXTx0WX0EMdNSU0IIjhhiAVVF24mY2JZ2YyO7MzszMS
eEq2uqa+qnrKuZ5qid2kklZjdmJJueQA6WAAUcgALYs5oVIO64DLgz0dU46nJOMh
LpWlKt8cwGQCQCQog0Nv0U9aVB+5T/bq9LQsJK1ApbSApTiyENpSDjKlqISBtjJO
Acb6xOsX5ZFvIUut3db1OCAVKS7UmHVgJ6gtx1OOJPyUkHbYHTLzCMXeYIOd3k4R
be5IwsodjZeJj8Ln7YuPs9RP4TB+6T/brj7N0L+Ewfuh/TUJ1rxR8JKVzIiVGqV5
8Z5U0unOCOvGcYlvFCfe+GU5xvsMaias+Mn7abcsQbZCHq7Ut8fBfo4STjPXkUfh
hRB6oSZzQRe1VqxB5IWc9B7txp30+WGkoqyT2Y3APVjwjoepHwxuH7MUA9aNT1Y6
pUwlSTttlCklJ6gjIO+CN8HVfZKgOpKfZ2lrSoYKTAYIUDsUkFnB26gncZGuuir+
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
G4B7gaaaXk6fX/GKsf/Z
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.gchd.cz/img/a-arrow.gif
Content-Transfer-Encoding: Base64
R0lGODlhFQAUAIABAGyp5////yH5BAEKAAEALAAAAAAVABQAAAIjjI+py+0PowFS
AVrPxXnf5oUeI5YcYoaVun5Z4L7nS9f2/RYAOw==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/news-bottom.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQIARwBHAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAPAKsDASIA
AhEBAxEB/8QAGQABAQADAQAAAAAAAAAAAAAACQABBAoL/8QAMhAAAAMGBAMHAwUA
AAAAAAAAAgMEAAEFBggJBxEZMUFYpycoR0hRV4cKEtcTGFORof/EABoBAQACAwEA
AAAAAAAAAAAAAAABCAUGBwn/xAAzEQAABQEECQIEBwAAAAAAAAABAgMEBQAGBxFh
FRdVVmORlJbUEkEIExQiIzEyQ0Rx0//aAAwDAQACEQMRAD8AEBaiWQ5Yrh8QSKUC
9ApPRLkK0g1KsRLEpoyFKRWmPAWcnUpzgDJPIOAA0k0AyzABGF7nazdmNzqwjG8e
sVp2qMpSm2V4FNk/r1Mzz7hPOYlEIgsZm9YMR0dmSUZoRJVpcPiMzrHji0Wg0fRF
oTo8picUBMaMheCGow3U2NLoidSeQXTQSsLJOMLLVp8aafwp1QADeECggKvFNKqC
UcFzjCwqUyc9wBOcaSUZ9wA+qVkL77vLUxTV6raOJgn5m6Z30ZNvkIxRq5EpQWSR
XfGboPEiqCPylmyhxOl6TKESUBRJOm8xY+dh3ardRi4cpFUMVFw1SM4IqTH7TiCQ
HMmIlw9RVClwNiACYMDCSzTLFoc3R+WDrVTv+Wmxod3RnZ92DbLPtqp447eLTbZr
Fu+37sb3PCedWI0PL7Lkehc/5UTzTLC+x1dGdn3YNt+2qnjjt4tNaHd0Z2fdg2yz
7aqeOO3i0zWNd7v3Y3ueE86p0PL7Kkehc5cLMOdE80ywvsdXRnZ92Dbftqp447eL
TWh3dGdn3YNss+2qnjjt4tM1jXe792N7nhPOpoeX2VI9C5y4WYc6J5plifY5uju8
sHWqnj1y92mtDq6PywdaqeOPy0zWNd7v3Y3ueE86mh5fZUj0LnLhZhzonWmWJ9jm
6O7ywdaqePXL3aa0Oro/LB1qp44/LTNY13u/dje54TzqaHl9lSPQucuFmHOidaZY
n2Obo7vLB1qp49cvdprQ6uj8sHWqnjj8tM1jXe792N7nhPOpoeX2VI9C5y4WYc6J
1plifY5uju8sHWqnj1y92mtDq6PywdaqeOPy0zWNd7v3Y3ueE86mh5fZUj0LnLhZ
hzonWmWJ9jm6O7ywdaqePXL3aa0Oro/LB1qp44/LTNY13u/dje54TzqaHl9lSPQu
cuFmHOidaZYdDq6Pm937YNt+2qnjj8tNnQ5uj8sHWqnf8tM1i3fb92N7nhPOqNDy
+ypL2/guvf8AL9r3xDD+6J1vQtshZ6XlL2f8GMP9Px+xVy/xudGnP6dqtPEqYEb8
dT5Mp6k4lQB8XOWTLL+I05npQnPCYXAoJIUYi8uHqDCg/qBHFpwhJRJZpY3hPOCY
kD2nYB4ByFTfg3h5gbhojOQyThvLqaX4KBcYBTEVeRpy2JRiKqSiCCVEYj0XVr43
Fz06dKnOicQVGJ0qUkRZBdS/iTvKslaRpCWfs/KIy7iOkl3r50yxVYJh9MZumki8
D8F0Y4qGOJ2wrIAQoCC2IiUOo3f2SmSqOnzhqdskq3ImiVbAqp8VCnEwpD9xCgBc
MFPSf1D+jAMa/9k=
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/news-top.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQIARwBHAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAPAKsDASIA
AhEBAxEB/8QAGQABAQADAQAAAAAAAAAAAAAACAABCQsK/8QAMBAAAAQFAgQGAAcB
AAAAAAAAAwQFCAABAgYHGJghSFjWCSgxVnGmERMUIzlBkbf/xAAZAQEAAgMAAAAA
AAAAAAAAAAAABQgGBwn/xAAvEQAABAIJAwMEAwAAAAAAAAABAgMEAAUGERQWQVRV
k5UxQtMHEmETImKRCCHS/9oADAMBAAIRAxEAPwBe+KL47GcK8xZBwKz25UqwMeWA
sH7MWctJBROXLvvm4EgcQjchi11U+EfSEC1CqoEZTEVURCo6sshEqrhJXCAnqhQi
V0ZGX+vrNmBzQrz3V0imBhBxKSzg8sEy9NYtc66qQChS7ACpYGU6pyDLlgQgAaJS
DCDoDpppkR4o62UR9LKE0OlbaXMJDLHC6bdNJ3M3rFBy/frFKX6q6yzgqxyFVUKK
hWyZwboVgRIgFKFdLJtSScTl0o5dvXFRzmMmgmqdNFEoj9pEyEEpfsLUX3iAnNVW
YwiIwsdez5+tB2O4vMHeMY16vn60HY8fXzF5g4/cYJ8UZXdyj2hSbi2PgiLtjvNO
d9X/AFCxm/V88+dB2HH18xWX+P3GMa9Xz9aDsePr5i8wcfuME+KF3KPaDJuLY+CF
sd5pzvq/H5fAfoIWM36vnnzoOw4+vmKy/wAfuMY16vn60HY8fXzF5g4/cYJ8ULuU
e0GTcWx8ELY7zTnfV+Py+A/QQsZv2fPPnQdjuLy/8+8Yter5+tB2O4vMHeME6KF3
KPaDJuLY+CFseZpzvq4dO/CoIWM37PnnzoOx3F5f+feMWvV8/Wg7HcXmDvGCdFC7
lHtBk3FsfBC2PM0531cOnfhUELGb9nzz50HY7i8v/PvGLXq+frQdjuLzB3jBOihd
yj2gybi2PghbHmac76uHTvwqCFjN+z5586DsdxeX/n3jFr1fP1oOx3F5g7xgnRQu
5R7QZNxbHwQtjzNOd9XDp34VBCxm/Z88+dB2O4vL/wA+8Yter5+tB2O4vMHeME6K
F3KPaDJuLY+CFseZpzvq4dO/CoIWOvV8/Wg7HcXmDvGLXs+frQdjuLzB3jBOihdy
j2hSbi2PghbHmac76uHTvwjaW3XxlPEAb1cBNRlna6sxW7SYorVrNzkqKWSyCuWk
PMYUCVwLx0a9EgSqVddIQ6LcpCdEvywhKBiwVBeXvRaY5u23ZtzxQ4a1U4wipOS7
cEUhEM6LSbMIS2kqqjbd0IdR2kAvSoBo1zIqumF1KksVkolyoR6RQrIx+nD5ccdC
3wQf4vGvf3+xmH/v+Vfw/wAlwioX8naDUXlDGRUglMnZyyYP5ouzfmYpFbIuyi2M
5Kqq2SAqFoBRM4nXImVVb6phWMoIFEu0PT2kk3Iq7ZHeLLN025FEirHMcUhKqUnt
IcwiYCiUQACiIlLUHt9v91//2Q==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/news-button-active.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQIARwBHAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAbAFADASIA
AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAdEAACAgMBAQEAAAAAAAAA
AAAABAUGAgMHCAEV/8QAGAEBAQEBAQAAAAAAAAAAAAAAAAQFCAn/xAAeEQACAgMB
AQEBAAAAAAAAAAABAgMEAAURMSESUf/aAAwDAQACEQMRAD8Agj2h7z9C+5OhS9t6
7c5jKpfLA/L0XlCkqz9oPO0t+GSaCUJD4YqpNSasV81ovWdtP9uY2fWmWt2vFrJf
CLgD2e1On1mh19bVaelBr9dUjEVepWQRxRqO9IAHSzt13diWdyzMSxLHhi3ctX7E
lu5NJYsTMWkllYs7E/0nwDwAfAAAPnzAANLJsAAYwABjBZPjv3j6T8P3ZS0cT6BL
x9aZlUXrrzCRZ+SXO76hpfiWJJKbrchqdj0ZaUQiNELhdIRaOu0PF7mVYWfR0NM6
t8bAzttqNZvaFjV7ilX2OvtL+J6lqJZYZF6CvVYHjKwDo6kPG4DKwKgiipcs0Z0t
U55a1iJuxzQuVdSPeEe98IPQR0MD0jAANHJ8AAYwABjAAGMAAYz/2Q==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.gchd.cz/img/plans-button-passive.gif
Content-Transfer-Encoding: Base64
R0lGODlhUAAdAMZQAM7c59Tb4dXc4tbd49Xe49be4dLf6Nfe5Nne4dne4tbf5Nff
4tjf5djf59Xg5trf49rf5dfg5djg49bg6dfg59Ph6tfg6dvf6NTh6dng5tPh7tng
6Nbh59Xh7dvg5tTh8djh5tXh79nh5Nfh6tjh6Nfh69Ti69jh6tTi7dXi69rh59fi
5tTi79rh6dfi6NLj7dzh5dni59ri5dni6dni69Xj8Njj6dPk7trj6tnk6t7j5uLl
6uHm6eHm6uPo7Ojt8ejx9uzx9O7x9u7y9e/z9PL2+fX2+vj8/fz9//39/fn+//3+
//7+/v/+/Pz///7/////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////yH5BAEKAH8ALAAAAABQABgAAAf+gE1MUEhCPTASDAweHhAM
GSAZGYwiMhsbkhsNGQwXFxkHkiIiipmbkpyoqZKPqqqtlDI8QUdOTEmDRjsJD66T
kCCRqi0Nj5eZmL4MBwyXya++0ZIHKqwZEhIIOkRLT09DHgEKMSTlMzMkG+UuLuUk
FO7x8vP07uf1JPfo7sH8kQIFfigpAmPADBvt3J04sY5dQnPy2MGjcM9evIXz2K2z
Uc4Gh3nkSJxwwZFEDAIggPgQASKfSAvo4JXDqJDGuo/xKu6Td25nvIkW6cU0h26F
DQwGRtk7QcOnSIYKT6BDuE8mRKf1KubD4TInxXxYV7ioAAAbBYQP3WlUm9ZhSZf+
X/eh6yl07dp4l/TRG2HixgIRJGy8tUoSIju6JNjleFeOAsUZj3tK9jnjMAkH7WZw
fbehxdydQ/m+GIVY70yo9lrYw4r4qzvXjMHmJIEDB+Wg+UZ0YKE0nefV6E5Y4NlC
nWyIRFfLg4c1qFO5yHXzBky0OeunXbsynNFy9jzrWWdcih7iQ+/Wn79/pTmPhtSQ
yUFnXe7y3PiKI8or1cyzqlCe8jAVXFPKOdYfcv68Q9JCO51QQgcaSCDDTxY1B5FV
TtHEVGz4wNUYRBF0d5c5J0g3ilXfIfjUbQCyl12KH86m0XPu6IbCeRXFxdp6qMnj
3gzwySbffxR+dt8++ZmWBxh/OfkHI24zEShggSge51Q/FCwolUIPRjjhaxXiM5SK
2IlkU5X/ySQTOiE2xFOJu50opooMejebixZmVyU6MwJYjo37IchilOltNpc57jUJ
JWTZ+URSRTGQc+gIKaAgAXWx5ZCZnS5GKY9tPNVmoVaJpRUMqTXu9seqrLbq6quw
xirrrLTWauutuOaq66689uqrrIEAADs=
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/right_col-top.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAKAL4DASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAA
AAAABQABAgYK/8QAPBAAAQICBgYGCAUFAAAAAAAAAQIRACEDBAUxVWESFkFxgcEG
MlGhsbITIiM1QpGT8BQzcuHxQ2PC0dL/xAAXAQEAAwAAAAAAAAAAAAAAAAAAAQIF
/8QAJREAAgAEBgMBAQEAAAAAAAAAAQIAUpLRAxESE2GRITGBUXGh/9oADAMBAAIR
AxEAPwD3H2v00tSuU9IKhTqqVUSpqJNElHp1pAbTpaQhSgSXOggoSAwckORtZLd2
2pXp/wB1d+XrDezZZwKokCRInzV/ofKNnmPERqjDRQAEXx+gE/T7JjDbFxGJYu2Z
/CQPgHgeh6hfWS3cUrt0h6VU3ec38DNp7BNY7dxSu3t+aqd9zEPnPsvLmBVXH9Q8
oix1uCvMYnQkq0i0V3Hneo34HUNayW63vWt7LqZU+JHEkEkNxitY7dxSvcaVQ33G
Q7WEjlKA9qvv4hGgSUzJvPlMNCSrSLQ3Hneo34HUN6yW7ile40qv3k33c1ayW7il
ez9qfDxYpyaBFEsJn7SmISXRPYnvv+e2GhJVpFobjzvUb8DqHD0kt7FK62VKojg2
iTvdsrjE1jt3FK9wpVS3zM+zIzdy4aLzu5/uY0SZTPx9zt8oaElWkWhuPO9RvwOo
a1jt3Fa6N9KXO7uDXEm7YZrHbr+9a4L/AOsphfmAZTA0ZhjnAbmc9g8io0OoN480
NCSrSLQ3Hneo34HUM6x27ilf4Uqv553hzE1kt3FK99Vf/UCuXEz1z4iNm8b+RhoS
VaRaG4871G/A6hjWO3cVrvYfaqldMu/LbMljFax27ildm99KrK9iGGe+QugU3p/U
rzRadu5PhDQkq0i0Nx53qN+B1DZ6SW7ilc4UxnnNM8mkSQH7c6x27ile3GmUOfBM
p3XzAWw7x/lG3OiJm49yg0NCSrSLQ3Hneo34HUNjpJbuKV76quN75N/JNDpJbuKV
5s6Us77byB2z4NKBFEvedvcot8oiusdx8sNCSrSLQ3Hneo34HUNnpJb2KV76quWj
3vwi9Y7dxSvcKQ83nsOzIEAgRG3hziEntPUBv2uJw0JKtItDced6jfgdQ3rHbre9
a6N9KoEZ7pksSeqeD1ldOLSqukivH8fRaHqGkCaOmQvSF9IhA00tpaQWFKCmZQAI
PCn4t6vFMWqSUtK7wiDhoRkUXL+Af6PMWXGxUOau30kj6DmDH//Z
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/right_col-opendays.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCABAALQDASIAAhEBAxEB/8QAHQAAAgIDAQEBAAAAAAAA
AAAAAAECBgMEBwUICv/EADkQAAEDAgUBBgQFAwMFAAAAAAECESEDMQAEEkFRYQUT
InGBoQYykbEjQlLR8BTB4QczYlNyktLx/8QAGwEBAQEBAQEBAQAAAAAAAAAAAAMC
BAEFBgf/xAAtEQABAwIEAwgDAQEAAAAAAAABAAIRITEDQVFhEnHwBBMigZGh0fGx
weEyI//aAAwDAQACEQMRAD8A/Wt8Z/GGc7TzuZyGRzBp9lUD3QTSDf1qk6SqrWUR
qUgrcU6YKQlCQpSSskp54HJDO0RLMZ8oEF7yb4lZ4V6P9wfF0fBzChFy7b3kxzES
98ftmMbhtDWgAAaXOp1JzK/nWJiOxXl7ySSSb0A0GgFgoqcEsSwNg7CAdow0guxJ
IBIIloEdPTyw36KPUEt6MQPYYPQibkxDXckeRbhrY0sKJBdnLEtuwlvL6eWGkE3J
IIN5Yv1j+HDccLPVyx63Ab6DBxcS7n1s7z9Hmz4IoeLksz73Adp8v74kAWJJJgEE
7Xs/3GG44X9T++Di4je56Jd/UAg2lxgigdUyYkXDyBv54kxYyXcMWLsW5ncwMOJh
fq/7zg5v5P4j5bt5HY9cEUPFuSJA3sXkb7euJMWEkFyHYubs8PsP2w77LuLv/wC3
vtge9/IfMOp3+pMEdMEUPFyQS43eA467+l8KpUp0kGpUWKaEJ1LUTpA4cwSSYAdy
8TdVq1KhSVWqqNOmgEqUSX8gH+Y7C5sAXxS+1u1059KKNFK0U0KKjrIHeFvCSA7A
OZJLkvBjGmtLthr+Ym5WHPDQaich10Uu2s5lM9Up1KCllVNJpkqQyVgEqBTu4LwU
i/THglKnh02i3LmL7fZ3DYb9FN735d/774tvw6lNbL1hVp01ilVToUtALan1JBVs
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
dk7S9rXd0RxAGC4NMHhu0kEXsdDqV//Z
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=style.css
Content-Type: text/css; charset=utf-8; name=style.css
Content-Location: http://www.gchd.cz/common/style.css
Content-Transfer-Encoding: 8bit
/****** CSS by AtheIste ********/
/*** Colors *****
dafaultni barva pisma: #004B81;
odkazy: #2D82B4;
barva pozadi v menu: #335ea5;
barva vybrane polozky: #4E7FD5;
pozadi praveho sloupce: #e6edf1;
pozadi novinek: #1d4aa6;
****************/
/*** Widths *****
middle column: 495px
****************/
/*** Hacks ******
1/ menu je pozicovano absolutne, aby nerozhazovalo text. Pod nim je menu_fade, ktere
zastupuje misto zobrazeneho menu. Menu_fade ma modre pozadi a zaoblene rohy.
Menu samo o osbe je pruhledne.
2/ Logo, menu jsou pozicovany absolutne:
* 20px od shora je stranka
* 25px ma vrchni lista s napisem #header
* 100px ma obrazek skoly s logem #logo
*
****************/
body {
font: 11px Verdana, Arial, Sans !important;
color: #004B81;
}
img {
margin: 0;
padding:0;
border: 0;
}
br {clear: both; }
a {
text-decoration: underline;
cursor: pointer;
color: #2D82B4;
font-style: italic;
}
p {
clear: left;
padding-top: 5px;
}
hr {
background-color: #DFE6FE;
border-color: #DFE6FE;
padding: 0;
height: 1px;
}
h4 {
float: left;
margin: 5px 10px 3px 0;
}
h3 {
margin-bottom: 5px;
padding-bottom: 0;
color: #5289D4;
}
.active {font-weight: bold;}
.click {cursor: pointer}
.tail {
clear: both;
padding: 0;
margin: 0;
}
.left { float:left;}
div.left_c {float: left;
width: 171px;
}
.right {float:right;}
.center { margin: 0 auto 0 auto;
text-align: center;
}
.odsazeni {padding: 0 5px 0 10px;}
.red{color: #FF6F5B !important}
div.background {
width: 150px;
background: url(/img/inquiry-bg.jpg);
height: 10px;
margin-left: 4px;
}
div {
border: 0;
margin: 0;
padding:0;
}
div.body {
width: 900px;
margin: 0 auto 0 auto;
clear: both;
}
div#header {
width: 900px;
background: #1e4483 url(/img/header-fill.jpg) left bottom repeat-x;
height: 25px;
clear: both;
position: absolute;
top: 20px;
}
div#header img {
float: left;
}
div#header div.left {
float: left;
margin: 2px 0 0 10px;
width: 94%;
}
div#header div.left h1 {
font: bold 14px Verdana;
color: #6ca4c7;
padding: 0;
margin: 0;
float: left;
}
div#header div.left h2 {
font: 14px Verdana;
color: #ffffff;
padding: 0;
margin: 0;
}
div#logo {
background: #d9e4ea url(/img/logo-fill.jpg) left top repeat-x;
width: 900px;
height: 100px;
margin-bottom: 2px;
position: absolute;
top: 45px;
}
div#logo img.left {
float: left;
}
div#logo img.right {
float: right;
}
div#navigation {
clear: both;
font-size: 11px;
padding: 5px 0 6px 0;
position: absolute;
top: 149px; /* 20+25+100+8(horni mezera) */
}
/* fingovany DIV misto MENU DIVu, ktery je pozicovan absolutne */
div.menu_fade {
position: absolute;
top: 174px;
height: 30px;
clear: both;
background: #1d4aa6 url(../img/menu-right.jpg) right bottom no-repeat;
width: 900px;
}
.logged {
color: #ffffff;
font: bold 12px Sans, Arial;
float: right;
margin-top: 9px;
margin-right: 6px;
}
div.menu {
position: absolute;
top: 174px;
background: transparent;
width: 898px;
height: 30px;
clear: both;
z-index: 2;
}
div.menu ul {
background: transparent;
margin: 0 2px 0 0;
padding: 0 0 0 0;
float: left;
height: 28px;
overflow: hidden;
}
div.menu img{
float: left;
}
div.menu li {
display: block;
margin: 0;
background-color: #1d4aa6;
}
div.menu li a {
display: block;
text-decoration: none;
padding: 8px 10px 6px 18px;
color: #ffffff;
background: url(../img/menu-sipka.gif) left center no-repeat;
font: bold 13px Sans, Arial, Verdana;
border-bottom: 1px solid #216794;
}
div.menu li a.first {
background: none;
border: 0 solid;
}
div.menu li a:hover {
background-color: #4E7FD5;
}
div.menu div.search {
float: right;
margin-top: 4px;
margin-right: 6px;
}
div.menu div.search input {
font: 10px Sans, Arial;
}
div#top_absolute {
height: 210px;
width: 100%;
}
div.widget {
width: 170px;
background: #B2C4E4 url(/img/column-tail.gif) left bottom no-repeat;
margin-bottom: 20px;
clear: left;
}
div.widget h2 {
color: #04184D;
font: bold 12px Verdana, Sans, Arial;
margin: 0 0 0 0;
padding: 1px 10px 2px 10px;
}
div.widget h2.title {
color: #ffffff;
font: bold 13px Verdana, Sans, Arial;
margin: 0;
padding: 1px 10px 10px 10px;
background: #B2C4E4 url(/img/column-title.jpg) left top no-repeat;
border: 0;
}
div.widget ul { margin: 0;
padding-left: 2em;
padding-bottom: 1em;
}
div.widget li { margin-bottom: 10px;
padding-left: 0;
font-size: 11px;
}
div.widget li a { color: #004B81;
text-decoration: none;
}
div.widget a {text-decoration: none;}
div.widget li a:hover {text-decoration: underline;}
div.widget strong {font: bold 11px Verdana;}
a.zajimavy { font: 12px Verdana;
font-style: normal;
text-decoration: none;
display: block;
color: #004B81;
background: url(/img/a-arrow.gif) left bottom no-repeat;
padding: 3px 0 1px 2em;
margin: 0;
border-bottom: 1px solid #7FA9DE;
}
div.news_col {
width: 170px;
background: #1d4aa6 url(/img/news-bottom.jpg) left bottom no-repeat;
margin-bottom: 20px;
float: left;
clear: both;
}
div.news_col img.top {
margin: 0;
background: #1d4aa6 url(/img/news-top.jpg) left top no-repeat;
border: 0;
}
div.news_col ul {
padding-left: 20px;
margin-top: 0;
margin-left: 0;
color: #ffffff;
}
div.news_col li {
font-size: 10px;
margin: 0 0 10px 0;
padding: 0;
color: #ffffff;
}
div.news_col li a { color: #ffffff;
text-decoration: none;
}
div.news_col li strong{
font-size: 12px;
}
a#news_button, a#plans_button {
display: block;
width: 80px;
height: 27px;
padding-top: 2px;
background: url(../img/news-button-active.jpg) left top no-repeat;
color: #ffffff;
position: relative;
top: 9px;
float: left;
font: bold 13px Verdana, Sans, Arial;
text-align: center;
text-decoration:none;
}
a#plans_button {
background: url(../img/plans-button-passive.gif) left top no-repeat;
color: #213991;
}
hr.blue {
width: 100%;
background-color: #002081;
height: 1px;
}
a.zajimavy:hover {
background: url(/img/a-arrow:hover.gif) left bottom no-repeat;
border-bottom: 1px solid #76F095;
}
div.middle_col {float: left;
margin: 0 20px 0 20px;
width: 495px;
}
div.middle_col h1 { font: bold 16px Verdana, Sans, Arial;
margin: 5px 0 5px 10px;
color: #5289D4;
clear: both;
}
div.middle_col h2 { display: block;
width: 100%;
font: bold 13px Verdana, Sans, Arial;
margin: 5px 0 0 3px;
border-bottom: 1px solid #BAC8EA;
color: #004B81;
text-decoration: none;
clear: both;
}
div.middle_col h2.title {margin-top: 25px;}
div.middle_col h2 a{ color: #004B81;
text-decoration:none;
}
div.middle_col h2 em{ color: #8D9CC3;
font: italic 11px Verdana, Sans, Arial;
}
div.middle_col h3{ font: bold 12px Verdana, Arial, Sans;
display: block;
width: 430px;
margin: 0;
float: left;
}
div.middle_col img{ max-width: 497px;}
div.middle_col p{ margin: 0px 0 10px 0; }
div.middle_col div.bg p {margin-bottom: 10px;}
div.middle_col img {margin: 0 10px 0 10px;}
div.middle_col label { display: block;
width: 10em;
float: left;
}
div.middle_col label.wide { display: block;
width: 16em;
float: left;
}
div.middle_col ul {padding-left: 10px;}
div.middle_col li {margin-bottom: 6px;}
div.right_col{ float: right;
width: 185px;
height: 100%;
background: #e6edf1 url(/img/right_col-top.jpg) left top no-repeat;
padding: 5px 0 0 5px;
}
div.right_col h2 { padding: 2px 2em 0 1em;
font-size: 13px;
}
div.right_col div.opendays {width: 180px;
height: 64px;
background: url(/img/right_col-opendays.jpg) right top no-repeat;
}
div.right_col div.opendays h2 { padding: 2px 2em 0 1em;
font-size: 13px;
}
div.right_col div.opendays p { padding: 0 0 0 10px;
font-size: 12px;
margin: 0 0 0 0;
position: relative;
top: -5px;
}
div.right_col a.trida { background-color: #C2D4F1;
padding: 2px;
margin: 2px;
display: block;
float: left;
width: 2em;
font-style: normal;
text-decoration: none;
}
div.right_col a.trida:hover { background-color: #095783;
color: #ffffff;
}
div.footer {width: 100%;
text-align: center;
}
div.footer em { font-size: 10px;
color: #777777;
}
div.footer hr {border-color: #3A67B7;}
strong.wide {width: 20em;
display: block;
float: left;
}
.line {
border-bottom: 1px solid #E1E1E1;
}
div.middle_body {
width: 700px;
margin: 0 auto 0 auto;
clear: both;
}
div.middle_body label{
display: block;
float: left;
width: 12em;
padding-right: 1em;
}
div.middle_body input[type="text"],textarea {
float: left;
width: 400px;
margin-bottom: 5px;
color: #414247;
}
div#inquiry {
padding: 0 3px 0 3px;
}
div#inquiry strong{
color: #273057;
}
h1.rozcestnik {
font-size: 16px;
padding-bottom: 10px;
}
ul.rozcestnik li a{
font: 14px Verdana;
text-decoration: none;
}
ul.rozcestnik li a:hover {color: #100FA3;}
ul.rozcestnik li {
margin-left: 20px;
list-style-image: url(../img/r-arrow.gif);
}
.pocet {
float: right;
}
.hidden {display: none;}
.strankovani {
height: 18px;
padding: 3px 1em 1px 1em;
background: #f7f7f7;
border: solid 1px #e0e0e0;
margin: 1px 0 20px 5px;
}
.strankovani a {
text-decoration: none;
font-style: normal;
}
.fl {
float: left;
}
.fr {
float: right;
}
.bg {
clear: both;
background-color: #DCECFF;
width: 92%;
padding: 5px 2em 5px 2em;
border: 1px solid #9ABADF;
}
.date {
width: 2em !important;
margin-right: 5px;
}
.date:after {content: ".";}
.year {
width: 4em !important;
float: left;
margin-right: 5px;
}
/* in dulezita-data */
.date_block {
display: block;
width: 15em;
font-weight: normal;
margin-right: 1em;
float: left;
text-align: right;
}
.warning {color: #ff0000;}
.success {color: #00ff00;}
a.download {
padding: 1px 8px 1px 8px;
background: #266FBA;
color: #ffffff;
font: bold 10px Verdana, Arial, Sans;
text-decoration: none;
}
ul.nostyle li {list-style: none;}
ul#plans {display: none;}
ul#news {display: block;}
ul.list li {
margin: 0 0 10px 10px;
}
ul.list li a{
font: bold 13px Verdana, Arial, Sans;
}
.bold {
font-weight: bold;
}
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=lightbox.css
Content-Type: text/css; charset=utf-8; name=lightbox.css
Content-Location: http://www.gchd.cz/common/lightbox.css
Content-Transfer-Encoding: 8bit
#lightbox{ position: absolute; left: 0; width: 100%; z-index: 100; text-align: center; line-height: 0;}
#lightbox img{ width: auto; height: auto;}
#lightbox a img{ border: none; }
#outerImageContainer{ position: relative; background-color: #fff; width: 250px; height: 250px; margin: 0 auto; }
#imageContainer{ padding: 10px; }
#loading{ position: absolute; top: 40%; left: 0%; height: 25%; width: 100%; text-align: center; line-height: 0; }
#hoverNav{ position: absolute; top: 0; left: 0; height: 100%; width: 100%; z-index: 10; }
#imageContainer>#hoverNav{ left: 0;}
#hoverNav a{ outline: none;}
#prevLink, #nextLink{ width: 49%; height: 100%; background-image: url(data:image/gif;base64,AAAA); /* Trick IE into showing hover */ display: block; }
#prevLink { left: 0; float: left;}
#nextLink { right: 0; float: right;}
#prevLink:hover, #prevLink:visited:hover { background: url(../img/prevlabel.gif) left 15% no-repeat; }
#nextLink:hover, #nextLink:visited:hover { background: url(../img/nextlabel.gif) right 15% no-repeat; }
#imageDataContainer{ font: 10px Verdana, Helvetica, sans-serif; background-color: #fff; margin: 0 auto; line-height: 1.4em; overflow: auto; width: 100% ; }
#imageData{ padding:0 10px; color: #666; }
#imageData #imageDetails{ width: 70%; float: left; text-align: left; }
#imageData #caption{ font-weight: bold; }
#imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em; }
#imageData #bottomNavClose{ width: 66px; float: right; padding-bottom: 0.7em; outline: none;}
#overlay{ position: absolute; top: 0; left: 0; z-index: 90; width: 100%; height: 500px; background-color: #000; }
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=prototype.js
Content-Type: application/x-javascript; charset=utf-8; name=prototype.js
Content-Location: http://www.gchd.cz/common/prototype.js
Content-Transfer-Encoding: Base64
LyogIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yaywgdmVyc2lvbiAxLjYu
MC4yCiAqICAoYykgMjAwNS0yMDA4IFNhbSBTdGVwaGVuc29uCiAqCiAqICBQcm90
b3R5cGUgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9m
IGFuIE1JVC1zdHlsZSBsaWNlbnNlLgogKiAgRm9yIGRldGFpbHMsIHNlZSB0aGUg
UHJvdG90eXBlIHdlYiBzaXRlOiBodHRwOi8vd3d3LnByb3RvdHlwZWpzLm9yZy8K
ICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUHJvdG90eXBl
ID0gewogIFZlcnNpb246ICcxLjYuMC4yJywKCiAgQnJvd3NlcjogewogICAgSUU6
ICAgICAhISh3aW5kb3cuYXR0YWNoRXZlbnQgJiYgIXdpbmRvdy5vcGVyYSksCiAg
ICBPcGVyYTogICEhd2luZG93Lm9wZXJhLAogICAgV2ViS2l0OiBuYXZpZ2F0b3Iu
dXNlckFnZW50LmluZGV4T2YoJ0FwcGxlV2ViS2l0LycpID4gLTEsCiAgICBHZWNr
bzogIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignR2Vja28nKSA+IC0xICYm
IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignS0hUTUwnKSA9PSAtMSwKICAg
IE1vYmlsZVNhZmFyaTogISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBs
ZS4qTW9iaWxlLipTYWZhcmkvKQogIH0sCgogIEJyb3dzZXJGZWF0dXJlczogewog
ICAgWFBhdGg6ICEhZG9jdW1lbnQuZXZhbHVhdGUsCiAgICBFbGVtZW50RXh0ZW5z
aW9uczogISF3aW5kb3cuSFRNTEVsZW1lbnQsCiAgICBTcGVjaWZpY0VsZW1lbnRF
eHRlbnNpb25zOgogICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5f
X3Byb3RvX18gJiYKICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyku
X19wcm90b19fICE9PQogICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zv
cm0nKS5fX3Byb3RvX18KICB9LAoKICBTY3JpcHRGcmFnbWVudDogJzxzY3JpcHRb
Xj5dKj4oW1xcU1xcc10qPyk8XC9zY3JpcHQ+JywKICBKU09ORmlsdGVyOiAvXlwv
XCotc2VjdXJlLShbXHNcU10qKVwqXC9ccyokLywKCiAgZW1wdHlGdW5jdGlvbjog
ZnVuY3Rpb24oKSB7IH0sCiAgSzogZnVuY3Rpb24oeCkgeyByZXR1cm4geCB9Cn07
CgppZiAoUHJvdG90eXBlLkJyb3dzZXIuTW9iaWxlU2FmYXJpKQogIFByb3RvdHlw
ZS5Ccm93c2VyRmVhdHVyZXMuU3BlY2lmaWNFbGVtZW50RXh0ZW5zaW9ucyA9IGZh
bHNlOwoKCi8qIEJhc2VkIG9uIEFsZXggQXJuZWxsJ3MgaW5oZXJpdGFuY2UgaW1w
bGVtZW50YXRpb24uICovCnZhciBDbGFzcyA9IHsKICBjcmVhdGU6IGZ1bmN0aW9u
KCkgewogICAgdmFyIHBhcmVudCA9IG51bGwsIHByb3BlcnRpZXMgPSAkQShhcmd1
bWVudHMpOwogICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHByb3BlcnRpZXNbMF0p
KQogICAgICBwYXJlbnQgPSBwcm9wZXJ0aWVzLnNoaWZ0KCk7CgogICAgZnVuY3Rp
b24ga2xhc3MoKSB7CiAgICAgIHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBh
cmd1bWVudHMpOwogICAgfQoKICAgIE9iamVjdC5leHRlbmQoa2xhc3MsIENsYXNz
Lk1ldGhvZHMpOwogICAga2xhc3Muc3VwZXJjbGFzcyA9IHBhcmVudDsKICAgIGts
YXNzLnN1YmNsYXNzZXMgPSBbXTsKCiAgICBpZiAocGFyZW50KSB7CiAgICAgIHZh
ciBzdWJjbGFzcyA9IGZ1bmN0aW9uKCkgeyB9OwogICAgICBzdWJjbGFzcy5wcm90
b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOwogICAgICBrbGFzcy5wcm90b3R5cGUg
PSBuZXcgc3ViY2xhc3M7CiAgICAgIHBhcmVudC5zdWJjbGFzc2VzLnB1c2goa2xh
c3MpOwogICAgfQoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5s
ZW5ndGg7IGkrKykKICAgICAga2xhc3MuYWRkTWV0aG9kcyhwcm9wZXJ0aWVzW2ld
KTsKCiAgICBpZiAoIWtsYXNzLnByb3RvdHlwZS5pbml0aWFsaXplKQogICAgICBr
bGFzcy5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0
aW9uOwoKICAgIGtsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGtsYXNzOwoK
ICAgIHJldHVybiBrbGFzczsKICB9Cn07CgpDbGFzcy5NZXRob2RzID0gewogIGFk
ZE1ldGhvZHM6IGZ1bmN0aW9uKHNvdXJjZSkgewogICAgdmFyIGFuY2VzdG9yICAg
PSB0aGlzLnN1cGVyY2xhc3MgJiYgdGhpcy5zdXBlcmNsYXNzLnByb3RvdHlwZTsK
ICAgIHZhciBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc291cmNlKTsKCiAgICBp
ZiAoIU9iamVjdC5rZXlzKHsgdG9TdHJpbmc6IHRydWUgfSkubGVuZ3RoKQogICAg
ICBwcm9wZXJ0aWVzLnB1c2goInRvU3RyaW5nIiwgInZhbHVlT2YiKTsKCiAgICBm
b3IgKHZhciBpID0gMCwgbGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGg7IGkgPCBs
ZW5ndGg7IGkrKykgewogICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ld
LCB2YWx1ZSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgICAgIGlmIChhbmNlc3RvciAm
JiBPYmplY3QuaXNGdW5jdGlvbih2YWx1ZSkgJiYKICAgICAgICAgIHZhbHVlLmFy
Z3VtZW50TmFtZXMoKS5maXJzdCgpID09ICIkc3VwZXIiKSB7CiAgICAgICAgdmFy
IG1ldGhvZCA9IHZhbHVlLCB2YWx1ZSA9IE9iamVjdC5leHRlbmQoKGZ1bmN0aW9u
KG0pIHsKICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsgcmV0dXJuIGFuY2Vz
dG9yW21dLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfTsKICAgICAgICB9KShwcm9w
ZXJ0eSkud3JhcChtZXRob2QpLCB7CiAgICAgICAgICB2YWx1ZU9mOiAgZnVuY3Rp
b24oKSB7IHJldHVybiBtZXRob2QgfSwKICAgICAgICAgIHRvU3RyaW5nOiBmdW5j
dGlvbigpIHsgcmV0dXJuIG1ldGhvZC50b1N0cmluZygpIH0KICAgICAgICB9KTsK
ICAgICAgfQogICAgICB0aGlzLnByb3RvdHlwZVtwcm9wZXJ0eV0gPSB2YWx1ZTsK
ICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9Cn07Cgp2YXIgQWJzdHJhY3QgPSB7
IH07CgpPYmplY3QuZXh0ZW5kID0gZnVuY3Rpb24oZGVzdGluYXRpb24sIHNvdXJj
ZSkgewogIGZvciAodmFyIHByb3BlcnR5IGluIHNvdXJjZSkKICAgIGRlc3RpbmF0
aW9uW3Byb3BlcnR5XSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgcmV0dXJuIGRlc3Rp
bmF0aW9uOwp9OwoKT2JqZWN0LmV4dGVuZChPYmplY3QsIHsKICBpbnNwZWN0OiBm
dW5jdGlvbihvYmplY3QpIHsKICAgIHRyeSB7CiAgICAgIGlmIChPYmplY3QuaXNV
bmRlZmluZWQob2JqZWN0KSkgcmV0dXJuICd1bmRlZmluZWQnOwogICAgICBpZiAo
b2JqZWN0ID09PSBudWxsKSByZXR1cm4gJ251bGwnOwogICAgICByZXR1cm4gb2Jq
ZWN0Lmluc3BlY3QgPyBvYmplY3QuaW5zcGVjdCgpIDogU3RyaW5nKG9iamVjdCk7
CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGlmIChlIGluc3RhbmNlb2YgUmFuZ2VF
cnJvcikgcmV0dXJuICcuLi4nOwogICAgICB0aHJvdyBlOwogICAgfQogIH0sCgog
IHRvSlNPTjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICB2YXIgdHlwZSA9IHR5cGVv
ZiBvYmplY3Q7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAndW5kZWZp
bmVkJzoKICAgICAgY2FzZSAnZnVuY3Rpb24nOgogICAgICBjYXNlICd1bmtub3du
JzogcmV0dXJuOwogICAgICBjYXNlICdib29sZWFuJzogcmV0dXJuIG9iamVjdC50
b1N0cmluZygpOwogICAgfQoKICAgIGlmIChvYmplY3QgPT09IG51bGwpIHJldHVy
biAnbnVsbCc7CiAgICBpZiAob2JqZWN0LnRvSlNPTikgcmV0dXJuIG9iamVjdC50
b0pTT04oKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KG9iamVjdCkpIHJldHVy
bjsKCiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkg
aW4gb2JqZWN0KSB7CiAgICAgIHZhciB2YWx1ZSA9IE9iamVjdC50b0pTT04ob2Jq
ZWN0W3Byb3BlcnR5XSk7CiAgICAgIGlmICghT2JqZWN0LmlzVW5kZWZpbmVkKHZh
bHVlKSkKICAgICAgICByZXN1bHRzLnB1c2gocHJvcGVydHkudG9KU09OKCkgKyAn
OiAnICsgdmFsdWUpOwogICAgfQoKICAgIHJldHVybiAneycgKyByZXN1bHRzLmpv
aW4oJywgJykgKyAnfSc7CiAgfSwKCiAgdG9RdWVyeVN0cmluZzogZnVuY3Rpb24o
b2JqZWN0KSB7CiAgICByZXR1cm4gJEgob2JqZWN0KS50b1F1ZXJ5U3RyaW5nKCk7
CiAgfSwKCiAgdG9IVE1MOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiBv
YmplY3QgJiYgb2JqZWN0LnRvSFRNTCA/IG9iamVjdC50b0hUTUwoKSA6IFN0cmlu
Zy5pbnRlcnByZXQob2JqZWN0KTsKICB9LAoKICBrZXlzOiBmdW5jdGlvbihvYmpl
Y3QpIHsKICAgIHZhciBrZXlzID0gW107CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBp
biBvYmplY3QpCiAgICAgIGtleXMucHVzaChwcm9wZXJ0eSk7CiAgICByZXR1cm4g
a2V5czsKICB9LAoKICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgdmFy
IHZhbHVlcyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KQog
ICAgICB2YWx1ZXMucHVzaChvYmplY3RbcHJvcGVydHldKTsKICAgIHJldHVybiB2
YWx1ZXM7CiAgfSwKCiAgY2xvbmU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0
dXJuIE9iamVjdC5leHRlbmQoeyB9LCBvYmplY3QpOwogIH0sCgogIGlzRWxlbWVu
dDogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gb2JqZWN0ICYmIG9iamVj
dC5ub2RlVHlwZSA9PSAxOwogIH0sCgogIGlzQXJyYXk6IGZ1bmN0aW9uKG9iamVj
dCkgewogICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIHR5cGVvZiBvYmplY3Qg
PT0gIm9iamVjdCIgJiYKICAgICAgJ3NwbGljZScgaW4gb2JqZWN0ICYmICdqb2lu
JyBpbiBvYmplY3Q7CiAgfSwKCiAgaXNIYXNoOiBmdW5jdGlvbihvYmplY3QpIHsK
ICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBIYXNoOwogIH0sCgogIGlzRnVu
Y3Rpb246IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmpl
Y3QgPT0gImZ1bmN0aW9uIjsKICB9LAoKICBpc1N0cmluZzogZnVuY3Rpb24ob2Jq
ZWN0KSB7CiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSAic3RyaW5nIjsKICB9
LAoKICBpc051bWJlcjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gdHlw
ZW9mIG9iamVjdCA9PSAibnVtYmVyIjsKICB9LAoKICBpc1VuZGVmaW5lZDogZnVu
Y3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSAidW5k
ZWZpbmVkIjsKICB9Cn0pOwoKT2JqZWN0LmV4dGVuZChGdW5jdGlvbi5wcm90b3R5
cGUsIHsKICBhcmd1bWVudE5hbWVzOiBmdW5jdGlvbigpIHsKICAgIHZhciBuYW1l
cyA9IHRoaXMudG9TdHJpbmcoKS5tYXRjaCgvXltcc1woXSpmdW5jdGlvblteKF0q
XCgoLio/KVwpLylbMV0uc3BsaXQoIiwiKS5pbnZva2UoInN0cmlwIik7CiAgICBy
ZXR1cm4gbmFtZXMubGVuZ3RoID09IDEgJiYgIW5hbWVzWzBdID8gW10gOiBuYW1l
czsKICB9LAoKICBiaW5kOiBmdW5jdGlvbigpIHsKICAgIGlmIChhcmd1bWVudHMu
bGVuZ3RoIDwgMiAmJiBPYmplY3QuaXNVbmRlZmluZWQoYXJndW1lbnRzWzBdKSkg
cmV0dXJuIHRoaXM7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzLCBhcmdzID0gJEEo
YXJndW1lbnRzKSwgb2JqZWN0ID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1
bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRob2QuYXBwbHkob2JqZWN0LCBh
cmdzLmNvbmNhdCgkQShhcmd1bWVudHMpKSk7CiAgICB9CiAgfSwKCiAgYmluZEFz
RXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7CiAgICB2YXIgX19tZXRob2QgPSB0
aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2JqZWN0ID0gYXJncy5zaGlmdCgp
OwogICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIHJldHVybiBfX21l
dGhvZC5hcHBseShvYmplY3QsIFtldmVudCB8fCB3aW5kb3cuZXZlbnRdLmNvbmNh
dChhcmdzKSk7CiAgICB9CiAgfSwKCiAgY3Vycnk6IGZ1bmN0aW9uKCkgewogICAg
aWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpczsKICAgIHZhciBfX21l
dGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpOwogICAgcmV0dXJuIGZ1
bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRob2QuYXBwbHkodGhpcywgYXJn
cy5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfQogIH0sCgogIGRlbGF5OiBm
dW5jdGlvbigpIHsKICAgIHZhciBfX21ldGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShh
cmd1bWVudHMpLCB0aW1lb3V0ID0gYXJncy5zaGlmdCgpICogMTAwMDsKICAgIHJl
dHVybiB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgcmV0dXJu
IF9fbWV0aG9kLmFwcGx5KF9fbWV0aG9kLCBhcmdzKTsKICAgIH0sIHRpbWVvdXQp
OwogIH0sCgogIHdyYXA6IGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgIHZhciBfX21l
dGhvZCA9IHRoaXM7CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVy
biB3cmFwcGVyLmFwcGx5KHRoaXMsIFtfX21ldGhvZC5iaW5kKHRoaXMpXS5jb25j
YXQoJEEoYXJndW1lbnRzKSkpOwogICAgfQogIH0sCgogIG1ldGhvZGl6ZTogZnVu
Y3Rpb24oKSB7CiAgICBpZiAodGhpcy5fbWV0aG9kaXplZCkgcmV0dXJuIHRoaXMu
X21ldGhvZGl6ZWQ7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzOwogICAgcmV0dXJu
IHRoaXMuX21ldGhvZGl6ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9f
bWV0aG9kLmFwcGx5KG51bGwsIFt0aGlzXS5jb25jYXQoJEEoYXJndW1lbnRzKSkp
OwogICAgfTsKICB9Cn0pOwoKRnVuY3Rpb24ucHJvdG90eXBlLmRlZmVyID0gRnVu
Y3Rpb24ucHJvdG90eXBlLmRlbGF5LmN1cnJ5KDAuMDEpOwoKRGF0ZS5wcm90b3R5
cGUudG9KU09OID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuICciJyArIHRoaXMuZ2V0
VVRDRnVsbFllYXIoKSArICctJyArCiAgICAodGhpcy5nZXRVVENNb250aCgpICsg
MSkudG9QYWRkZWRTdHJpbmcoMikgKyAnLScgKwogICAgdGhpcy5nZXRVVENEYXRl
KCkudG9QYWRkZWRTdHJpbmcoMikgKyAnVCcgKwogICAgdGhpcy5nZXRVVENIb3Vy
cygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzonICsKICAgIHRoaXMuZ2V0VVRDTWlu
dXRlcygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzonICsKICAgIHRoaXMuZ2V0VVRD
U2Vjb25kcygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJ1oiJzsKfTsKCnZhciBUcnkg
PSB7CiAgdGhlc2U6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJldHVyblZhbHVlOwoK
ICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBp
IDwgbGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGxhbWJkYSA9IGFyZ3VtZW50c1tp
XTsKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm5WYWx1ZSA9IGxhbWJkYSgpOwog
ICAgICAgIGJyZWFrOwogICAgICB9IGNhdGNoIChlKSB7IH0KICAgIH0KCiAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiAgfQp9OwoKUmVnRXhwLnByb3RvdHlwZS5tYXRj
aCA9IFJlZ0V4cC5wcm90b3R5cGUudGVzdDsKClJlZ0V4cC5lc2NhcGUgPSBmdW5j
dGlvbihzdHIpIHsKICByZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZSgvKFsuKis/
Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCAnXFwkMScpOwp9OwoKLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUGVyaW9kaWNhbEV4ZWN1dGVyID0gQ2xh
c3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihjYWxsYmFjaywgZnJl
cXVlbmN5KSB7CiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7CiAgICB0aGlz
LmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeTsKICAgIHRoaXMuY3VycmVudGx5RXhlY3V0
aW5nID0gZmFsc2U7CgogICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrKCk7CiAgfSwK
CiAgcmVnaXN0ZXJDYWxsYmFjazogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnRpbWVy
ID0gc2V0SW50ZXJ2YWwodGhpcy5vblRpbWVyRXZlbnQuYmluZCh0aGlzKSwgdGhp
cy5mcmVxdWVuY3kgKiAxMDAwKTsKICB9LAoKICBleGVjdXRlOiBmdW5jdGlvbigp
IHsKICAgIHRoaXMuY2FsbGJhY2sodGhpcyk7CiAgfSwKCiAgc3RvcDogZnVuY3Rp
b24oKSB7CiAgICBpZiAoIXRoaXMudGltZXIpIHJldHVybjsKICAgIGNsZWFySW50
ZXJ2YWwodGhpcy50aW1lcik7CiAgICB0aGlzLnRpbWVyID0gbnVsbDsKICB9LAoK
ICBvblRpbWVyRXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgaWYgKCF0aGlzLmN1cnJl
bnRseUV4ZWN1dGluZykgewogICAgICB0cnkgewogICAgICAgIHRoaXMuY3VycmVu
dGx5RXhlY3V0aW5nID0gdHJ1ZTsKICAgICAgICB0aGlzLmV4ZWN1dGUoKTsKICAg
ICAgfSBmaW5hbGx5IHsKICAgICAgICB0aGlzLmN1cnJlbnRseUV4ZWN1dGluZyA9
IGZhbHNlOwogICAgICB9CiAgICB9CiAgfQp9KTsKT2JqZWN0LmV4dGVuZChTdHJp
bmcsIHsKICBpbnRlcnByZXQ6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICByZXR1cm4g
dmFsdWUgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHZhbHVlKTsKICB9LAogIHNwZWNp
YWxDaGFyOiB7CiAgICAnXGInOiAnXFxiJywKICAgICdcdCc6ICdcXHQnLAogICAg
J1xuJzogJ1xcbicsCiAgICAnXGYnOiAnXFxmJywKICAgICdccic6ICdcXHInLAog
ICAgJ1xcJzogJ1xcXFwnCiAgfQp9KTsKCk9iamVjdC5leHRlbmQoU3RyaW5nLnBy
b3RvdHlwZSwgewogIGdzdWI6IGZ1bmN0aW9uKHBhdHRlcm4sIHJlcGxhY2VtZW50
KSB7CiAgICB2YXIgcmVzdWx0ID0gJycsIHNvdXJjZSA9IHRoaXMsIG1hdGNoOwog
ICAgcmVwbGFjZW1lbnQgPSBhcmd1bWVudHMuY2FsbGVlLnByZXBhcmVSZXBsYWNl
bWVudChyZXBsYWNlbWVudCk7CgogICAgd2hpbGUgKHNvdXJjZS5sZW5ndGggPiAw
KSB7CiAgICAgIGlmIChtYXRjaCA9IHNvdXJjZS5tYXRjaChwYXR0ZXJuKSkgewog
ICAgICAgIHJlc3VsdCArPSBzb3VyY2Uuc2xpY2UoMCwgbWF0Y2guaW5kZXgpOwog
ICAgICAgIHJlc3VsdCArPSBTdHJpbmcuaW50ZXJwcmV0KHJlcGxhY2VtZW50KG1h
dGNoKSk7CiAgICAgICAgc291cmNlICA9IHNvdXJjZS5zbGljZShtYXRjaC5pbmRl
eCArIG1hdGNoWzBdLmxlbmd0aCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVz
dWx0ICs9IHNvdXJjZSwgc291cmNlID0gJyc7CiAgICAgIH0KICAgIH0KICAgIHJl
dHVybiByZXN1bHQ7CiAgfSwKCiAgc3ViOiBmdW5jdGlvbihwYXR0ZXJuLCByZXBs
YWNlbWVudCwgY291bnQpIHsKICAgIHJlcGxhY2VtZW50ID0gdGhpcy5nc3ViLnBy
ZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7CiAgICBjb3VudCA9IE9iamVj
dC5pc1VuZGVmaW5lZChjb3VudCkgPyAxIDogY291bnQ7CgogICAgcmV0dXJuIHRo
aXMuZ3N1YihwYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICBpZiAoLS1j
b3VudCA8IDApIHJldHVybiBtYXRjaFswXTsKICAgICAgcmV0dXJuIHJlcGxhY2Vt
ZW50KG1hdGNoKTsKICAgIH0pOwogIH0sCgogIHNjYW46IGZ1bmN0aW9uKHBhdHRl
cm4sIGl0ZXJhdG9yKSB7CiAgICB0aGlzLmdzdWIocGF0dGVybiwgaXRlcmF0b3Ip
OwogICAgcmV0dXJuIFN0cmluZyh0aGlzKTsKICB9LAoKICB0cnVuY2F0ZTogZnVu
Y3Rpb24obGVuZ3RoLCB0cnVuY2F0aW9uKSB7CiAgICBsZW5ndGggPSBsZW5ndGgg
fHwgMzA7CiAgICB0cnVuY2F0aW9uID0gT2JqZWN0LmlzVW5kZWZpbmVkKHRydW5j
YXRpb24pID8gJy4uLicgOiB0cnVuY2F0aW9uOwogICAgcmV0dXJuIHRoaXMubGVu
Z3RoID4gbGVuZ3RoID8KICAgICAgdGhpcy5zbGljZSgwLCBsZW5ndGggLSB0cnVu
Y2F0aW9uLmxlbmd0aCkgKyB0cnVuY2F0aW9uIDogU3RyaW5nKHRoaXMpOwogIH0s
CgogIHN0cmlwOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnJlcGxhY2Uo
L15ccysvLCAnJykucmVwbGFjZSgvXHMrJC8sICcnKTsKICB9LAoKICBzdHJpcFRh
Z3M6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvPFwvP1te
Pl0rPi9naSwgJycpOwogIH0sCgogIHN0cmlwU2NyaXB0czogZnVuY3Rpb24oKSB7
CiAgICByZXR1cm4gdGhpcy5yZXBsYWNlKG5ldyBSZWdFeHAoUHJvdG90eXBlLlNj
cmlwdEZyYWdtZW50LCAnaW1nJyksICcnKTsKICB9LAoKICBleHRyYWN0U2NyaXB0
czogZnVuY3Rpb24oKSB7CiAgICB2YXIgbWF0Y2hBbGwgPSBuZXcgUmVnRXhwKFBy
b3RvdHlwZS5TY3JpcHRGcmFnbWVudCwgJ2ltZycpOwogICAgdmFyIG1hdGNoT25l
ID0gbmV3IFJlZ0V4cChQcm90b3R5cGUuU2NyaXB0RnJhZ21lbnQsICdpbScpOwog
ICAgcmV0dXJuICh0aGlzLm1hdGNoKG1hdGNoQWxsKSB8fCBbXSkubWFwKGZ1bmN0
aW9uKHNjcmlwdFRhZykgewogICAgICByZXR1cm4gKHNjcmlwdFRhZy5tYXRjaCht
YXRjaE9uZSkgfHwgWycnLCAnJ10pWzFdOwogICAgfSk7CiAgfSwKCiAgZXZhbFNj
cmlwdHM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZXh0cmFjdFNjcmlw
dHMoKS5tYXAoZnVuY3Rpb24oc2NyaXB0KSB7IHJldHVybiBldmFsKHNjcmlwdCkg
fSk7CiAgfSwKCiAgZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICB2YXIgc2Vs
ZiA9IGFyZ3VtZW50cy5jYWxsZWU7CiAgICBzZWxmLnRleHQuZGF0YSA9IHRoaXM7
CiAgICByZXR1cm4gc2VsZi5kaXYuaW5uZXJIVE1MOwogIH0sCgogIHVuZXNjYXBl
SFRNTDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2Rp
dicpOwogICAgZGl2LmlubmVySFRNTCA9IHRoaXMuc3RyaXBUYWdzKCk7CiAgICBy
ZXR1cm4gZGl2LmNoaWxkTm9kZXNbMF0gPyAoZGl2LmNoaWxkTm9kZXMubGVuZ3Ro
ID4gMSA/CiAgICAgICRBKGRpdi5jaGlsZE5vZGVzKS5pbmplY3QoJycsIGZ1bmN0
aW9uKG1lbW8sIG5vZGUpIHsgcmV0dXJuIG1lbW8rbm9kZS5ub2RlVmFsdWUgfSkg
OgogICAgICBkaXYuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpIDogJyc7CiAgfSwK
CiAgdG9RdWVyeVBhcmFtczogZnVuY3Rpb24oc2VwYXJhdG9yKSB7CiAgICB2YXIg
bWF0Y2ggPSB0aGlzLnN0cmlwKCkubWF0Y2goLyhbXj8jXSopKCMuKik/JC8pOwog
ICAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgfTsKCiAgICByZXR1cm4gbWF0Y2hbMV0u
c3BsaXQoc2VwYXJhdG9yIHx8ICcmJykuaW5qZWN0KHsgfSwgZnVuY3Rpb24oaGFz
aCwgcGFpcikgewogICAgICBpZiAoKHBhaXIgPSBwYWlyLnNwbGl0KCc9JykpWzBd
KSB7CiAgICAgICAgdmFyIGtleSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyLnNo
aWZ0KCkpOwogICAgICAgIHZhciB2YWx1ZSA9IHBhaXIubGVuZ3RoID4gMSA/IHBh
aXIuam9pbignPScpIDogcGFpclswXTsKICAgICAgICBpZiAodmFsdWUgIT0gdW5k
ZWZpbmVkKSB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7CgogICAg
ICAgIGlmIChrZXkgaW4gaGFzaCkgewogICAgICAgICAgaWYgKCFPYmplY3QuaXNB
cnJheShoYXNoW2tleV0pKSBoYXNoW2tleV0gPSBbaGFzaFtrZXldXTsKICAgICAg
ICAgIGhhc2hba2V5XS5wdXNoKHZhbHVlKTsKICAgICAgICB9CiAgICAgICAgZWxz
ZSBoYXNoW2tleV0gPSB2YWx1ZTsKICAgICAgfQogICAgICByZXR1cm4gaGFzaDsK
ICAgIH0pOwogIH0sCgogIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJu
IHRoaXMuc3BsaXQoJycpOwogIH0sCgogIHN1Y2M6IGZ1bmN0aW9uKCkgewogICAg
cmV0dXJuIHRoaXMuc2xpY2UoMCwgdGhpcy5sZW5ndGggLSAxKSArCiAgICAgIFN0
cmluZy5mcm9tQ2hhckNvZGUodGhpcy5jaGFyQ29kZUF0KHRoaXMubGVuZ3RoIC0g
MSkgKyAxKTsKICB9LAoKICB0aW1lczogZnVuY3Rpb24oY291bnQpIHsKICAgIHJl
dHVybiBjb3VudCA8IDEgPyAnJyA6IG5ldyBBcnJheShjb3VudCArIDEpLmpvaW4o
dGhpcyk7CiAgfSwKCiAgY2FtZWxpemU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBh
cnRzID0gdGhpcy5zcGxpdCgnLScpLCBsZW4gPSBwYXJ0cy5sZW5ndGg7CiAgICBp
ZiAobGVuID09IDEpIHJldHVybiBwYXJ0c1swXTsKCiAgICB2YXIgY2FtZWxpemVk
ID0gdGhpcy5jaGFyQXQoMCkgPT0gJy0nCiAgICAgID8gcGFydHNbMF0uY2hhckF0
KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1swXS5zdWJzdHJpbmcoMSkKICAgICAg
OiBwYXJ0c1swXTsKCiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKQog
ICAgICBjYW1lbGl6ZWQgKz0gcGFydHNbaV0uY2hhckF0KDApLnRvVXBwZXJDYXNl
KCkgKyBwYXJ0c1tpXS5zdWJzdHJpbmcoMSk7CgogICAgcmV0dXJuIGNhbWVsaXpl
ZDsKICB9LAoKICBjYXBpdGFsaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0
aGlzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGhpcy5zdWJzdHJpbmcoMSku
dG9Mb3dlckNhc2UoKTsKICB9LAoKICB1bmRlcnNjb3JlOiBmdW5jdGlvbigpIHsK
ICAgIHJldHVybiB0aGlzLmdzdWIoLzo6LywgJy8nKS5nc3ViKC8oW0EtWl0rKShb
QS1aXVthLXpdKS8sJyN7MX1fI3syfScpLmdzdWIoLyhbYS16XGRdKShbQS1aXSkv
LCcjezF9XyN7Mn0nKS5nc3ViKC8tLywnXycpLnRvTG93ZXJDYXNlKCk7CiAgfSwK
CiAgZGFzaGVyaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIo
L18vLCctJyk7CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24odXNlRG91YmxlUXVv
dGVzKSB7CiAgICB2YXIgZXNjYXBlZFN0cmluZyA9IHRoaXMuZ3N1YigvW1x4MDAt
XHgxZlxcXS8sIGZ1bmN0aW9uKG1hdGNoKSB7CiAgICAgIHZhciBjaGFyYWN0ZXIg
PSBTdHJpbmcuc3BlY2lhbENoYXJbbWF0Y2hbMF1dOwogICAgICByZXR1cm4gY2hh
cmFjdGVyID8gY2hhcmFjdGVyIDogJ1xcdTAwJyArIG1hdGNoWzBdLmNoYXJDb2Rl
QXQoKS50b1BhZGRlZFN0cmluZygyLCAxNik7CiAgICB9KTsKICAgIGlmICh1c2VE
b3VibGVRdW90ZXMpIHJldHVybiAnIicgKyBlc2NhcGVkU3RyaW5nLnJlcGxhY2Uo
LyIvZywgJ1xcIicpICsgJyInOwogICAgcmV0dXJuICInIiArIGVzY2FwZWRTdHJp
bmcucmVwbGFjZSgvJy9nLCAnXFxcJycpICsgIiciOwogIH0sCgogIHRvSlNPTjog
ZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5pbnNwZWN0KHRydWUpOwogIH0s
CgogIHVuZmlsdGVySlNPTjogZnVuY3Rpb24oZmlsdGVyKSB7CiAgICByZXR1cm4g
dGhpcy5zdWIoZmlsdGVyIHx8IFByb3RvdHlwZS5KU09ORmlsdGVyLCAnI3sxfScp
OwogIH0sCgogIGlzSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIgc3RyID0gdGhp
czsKICAgIGlmIChzdHIuYmxhbmsoKSkgcmV0dXJuIGZhbHNlOwogICAgc3RyID0g
dGhpcy5yZXBsYWNlKC9cXC4vZywgJ0AnKS5yZXBsYWNlKC8iW14iXFxcblxyXSoi
L2csICcnKTsKICAgIHJldHVybiAoL15bLDp7fVxbXF0wLTkuXC0rRWFlZmxuci11
IFxuXHJcdF0qJC8pLnRlc3Qoc3RyKTsKICB9LAoKICBldmFsSlNPTjogZnVuY3Rp
b24oc2FuaXRpemUpIHsKICAgIHZhciBqc29uID0gdGhpcy51bmZpbHRlckpTT04o
KTsKICAgIHRyeSB7CiAgICAgIGlmICghc2FuaXRpemUgfHwganNvbi5pc0pTT04o
KSkgcmV0dXJuIGV2YWwoJygnICsganNvbiArICcpJyk7CiAgICB9IGNhdGNoIChl
KSB7IH0KICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignQmFkbHkgZm9ybWVkIEpT
T04gc3RyaW5nOiAnICsgdGhpcy5pbnNwZWN0KCkpOwogIH0sCgogIGluY2x1ZGU6
IGZ1bmN0aW9uKHBhdHRlcm4pIHsKICAgIHJldHVybiB0aGlzLmluZGV4T2YocGF0
dGVybikgPiAtMTsKICB9LAoKICBzdGFydHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJu
KSB7CiAgICByZXR1cm4gdGhpcy5pbmRleE9mKHBhdHRlcm4pID09PSAwOwogIH0s
CgogIGVuZHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICB2YXIgZCA9IHRo
aXMubGVuZ3RoIC0gcGF0dGVybi5sZW5ndGg7CiAgICByZXR1cm4gZCA+PSAwICYm
IHRoaXMubGFzdEluZGV4T2YocGF0dGVybikgPT09IGQ7CiAgfSwKCiAgZW1wdHk6
IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMgPT0gJyc7CiAgfSwKCiAgYmxh
bms6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIC9eXHMqJC8udGVzdCh0aGlzKTsK
ICB9LAoKICBpbnRlcnBvbGF0ZTogZnVuY3Rpb24ob2JqZWN0LCBwYXR0ZXJuKSB7
CiAgICByZXR1cm4gbmV3IFRlbXBsYXRlKHRoaXMsIHBhdHRlcm4pLmV2YWx1YXRl
KG9iamVjdCk7CiAgfQp9KTsKCmlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQg
fHwgUHJvdG90eXBlLkJyb3dzZXIuSUUpIE9iamVjdC5leHRlbmQoU3RyaW5nLnBy
b3RvdHlwZSwgewogIGVzY2FwZUhUTUw6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJu
IHRoaXMucmVwbGFjZSgvJi9nLCcmYW1wOycpLnJlcGxhY2UoLzwvZywnJmx0Oycp
LnJlcGxhY2UoLz4vZywnJmd0OycpOwogIH0sCiAgdW5lc2NhcGVIVE1MOiBmdW5j
dGlvbigpIHsKICAgIHJldHVybiB0aGlzLnJlcGxhY2UoLyZhbXA7L2csJyYnKS5y
ZXBsYWNlKC8mbHQ7L2csJzwnKS5yZXBsYWNlKC8mZ3Q7L2csJz4nKTsKICB9Cn0p
OwoKU3RyaW5nLnByb3RvdHlwZS5nc3ViLnByZXBhcmVSZXBsYWNlbWVudCA9IGZ1
bmN0aW9uKHJlcGxhY2VtZW50KSB7CiAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJl
cGxhY2VtZW50KSkgcmV0dXJuIHJlcGxhY2VtZW50OwogIHZhciB0ZW1wbGF0ZSA9
IG5ldyBUZW1wbGF0ZShyZXBsYWNlbWVudCk7CiAgcmV0dXJuIGZ1bmN0aW9uKG1h
dGNoKSB7IHJldHVybiB0ZW1wbGF0ZS5ldmFsdWF0ZShtYXRjaCkgfTsKfTsKClN0
cmluZy5wcm90b3R5cGUucGFyc2VRdWVyeSA9IFN0cmluZy5wcm90b3R5cGUudG9R
dWVyeVBhcmFtczsKCk9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZS5lc2Nh
cGVIVE1MLCB7CiAgZGl2OiAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyks
CiAgdGV4dDogZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpCn0pOwoKd2l0aCAo
U3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MKSBkaXYuYXBwZW5kQ2hpbGQodGV4
dCk7Cgp2YXIgVGVtcGxhdGUgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxpemU6
IGZ1bmN0aW9uKHRlbXBsYXRlLCBwYXR0ZXJuKSB7CiAgICB0aGlzLnRlbXBsYXRl
ID0gdGVtcGxhdGUudG9TdHJpbmcoKTsKICAgIHRoaXMucGF0dGVybiA9IHBhdHRl
cm4gfHwgVGVtcGxhdGUuUGF0dGVybjsKICB9LAoKICBldmFsdWF0ZTogZnVuY3Rp
b24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24ob2JqZWN0LnRv
VGVtcGxhdGVSZXBsYWNlbWVudHMpKQogICAgICBvYmplY3QgPSBvYmplY3QudG9U
ZW1wbGF0ZVJlcGxhY2VtZW50cygpOwoKICAgIHJldHVybiB0aGlzLnRlbXBsYXRl
LmdzdWIodGhpcy5wYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICBpZiAo
b2JqZWN0ID09IG51bGwpIHJldHVybiAnJzsKCiAgICAgIHZhciBiZWZvcmUgPSBt
YXRjaFsxXSB8fCAnJzsKICAgICAgaWYgKGJlZm9yZSA9PSAnXFwnKSByZXR1cm4g
bWF0Y2hbMl07CgogICAgICB2YXIgY3R4ID0gb2JqZWN0LCBleHByID0gbWF0Y2hb
M107CiAgICAgIHZhciBwYXR0ZXJuID0gL14oW14uW10rfFxbKCg/Oi4qP1teXFxd
KT8pXF0pKFwufFxbfCQpLzsKICAgICAgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMoZXhw
cik7CiAgICAgIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gYmVmb3JlOwoKICAg
ICAgd2hpbGUgKG1hdGNoICE9IG51bGwpIHsKICAgICAgICB2YXIgY29tcCA9IG1h
dGNoWzFdLnN0YXJ0c1dpdGgoJ1snKSA/IG1hdGNoWzJdLmdzdWIoJ1xcXFxdJywg
J10nKSA6IG1hdGNoWzFdOwogICAgICAgIGN0eCA9IGN0eFtjb21wXTsKICAgICAg
ICBpZiAobnVsbCA9PSBjdHggfHwgJycgPT0gbWF0Y2hbM10pIGJyZWFrOwogICAg
ICAgIGV4cHIgPSBleHByLnN1YnN0cmluZygnWycgPT0gbWF0Y2hbM10gPyBtYXRj
aFsxXS5sZW5ndGggOiBtYXRjaFswXS5sZW5ndGgpOwogICAgICAgIG1hdGNoID0g
cGF0dGVybi5leGVjKGV4cHIpOwogICAgICB9CgogICAgICByZXR1cm4gYmVmb3Jl
ICsgU3RyaW5nLmludGVycHJldChjdHgpOwogICAgfSk7CiAgfQp9KTsKVGVtcGxh
dGUuUGF0dGVybiA9IC8oXnwufFxyfFxuKSgjXHsoLio/KVx9KS87Cgp2YXIgJGJy
ZWFrID0geyB9OwoKdmFyIEVudW1lcmFibGUgPSB7CiAgZWFjaDogZnVuY3Rpb24o
aXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciBpbmRleCA9IDA7CiAgICBpdGVy
YXRvciA9IGl0ZXJhdG9yLmJpbmQoY29udGV4dCk7CiAgICB0cnkgewogICAgICB0
aGlzLl9lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgaXRlcmF0b3IodmFs
dWUsIGluZGV4KyspOwogICAgICB9KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAg
aWYgKGUgIT0gJGJyZWFrKSB0aHJvdyBlOwogICAgfQogICAgcmV0dXJuIHRoaXM7
CiAgfSwKCiAgZWFjaFNsaWNlOiBmdW5jdGlvbihudW1iZXIsIGl0ZXJhdG9yLCBj
b250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmlu
ZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIGluZGV4ID0gLW51bWJl
ciwgc2xpY2VzID0gW10sIGFycmF5ID0gdGhpcy50b0FycmF5KCk7CiAgICB3aGls
ZSAoKGluZGV4ICs9IG51bWJlcikgPCBhcnJheS5sZW5ndGgpCiAgICAgIHNsaWNl
cy5wdXNoKGFycmF5LnNsaWNlKGluZGV4LCBpbmRleCtudW1iZXIpKTsKICAgIHJl
dHVybiBzbGljZXMuY29sbGVjdChpdGVyYXRvciwgY29udGV4dCk7CiAgfSwKCiAg
YWxsOiBmdW5jdGlvbihpdGVyYXRvciwgY29udGV4dCkgewogICAgaXRlcmF0b3Ig
PSBpdGVyYXRvciA/IGl0ZXJhdG9yLmJpbmQoY29udGV4dCkgOiBQcm90b3R5cGUu
SzsKICAgIHZhciByZXN1bHQgPSB0cnVlOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9u
KHZhbHVlLCBpbmRleCkgewogICAgICByZXN1bHQgPSByZXN1bHQgJiYgISFpdGVy
YXRvcih2YWx1ZSwgaW5kZXgpOwogICAgICBpZiAoIXJlc3VsdCkgdGhyb3cgJGJy
ZWFrOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGFueTogZnVu
Y3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0
b3IgPyBpdGVyYXRvci5iaW5kKGNvbnRleHQpIDogUHJvdG90eXBlLks7CiAgICB2
YXIgcmVzdWx0ID0gZmFsc2U7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUs
IGluZGV4KSB7CiAgICAgIGlmIChyZXN1bHQgPSAhIWl0ZXJhdG9yKHZhbHVlLCBp
bmRleCkpCiAgICAgICAgdGhyb3cgJGJyZWFrOwogICAgfSk7CiAgICByZXR1cm4g
cmVzdWx0OwogIH0sCgogIGNvbGxlY3Q6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250
ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChj
b250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAg
IHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmVzdWx0
cy5wdXNoKGl0ZXJhdG9yKHZhbHVlLCBpbmRleCkpOwogICAgfSk7CiAgICByZXR1
cm4gcmVzdWx0czsKICB9LAoKICBkZXRlY3Q6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBj
b250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yLmJpbmQoY29udGV4dCk7
CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBp
bmRleCkgewogICAgICBpZiAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSkgewogICAg
ICAgIHJlc3VsdCA9IHZhbHVlOwogICAgICAgIHRocm93ICRicmVhazsKICAgICAg
fQogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGZpbmRBbGw6IGZ1
bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJh
dG9yLmJpbmQoY29udGV4dCk7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdGhp
cy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAoaXRlcmF0
b3IodmFsdWUsIGluZGV4KSkKICAgICAgICByZXN1bHRzLnB1c2godmFsdWUpOwog
ICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBncmVwOiBmdW5jdGlv
bihmaWx0ZXIsIGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0
ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwog
ICAgdmFyIHJlc3VsdHMgPSBbXTsKCiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKGZp
bHRlcikpCiAgICAgIGZpbHRlciA9IG5ldyBSZWdFeHAoZmlsdGVyKTsKCiAgICB0
aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChmaWx0
ZXIubWF0Y2godmFsdWUpKQogICAgICAgIHJlc3VsdHMucHVzaChpdGVyYXRvcih2
YWx1ZSwgaW5kZXgpKTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwK
CiAgaW5jbHVkZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0Lmlz
RnVuY3Rpb24odGhpcy5pbmRleE9mKSkKICAgICAgaWYgKHRoaXMuaW5kZXhPZihv
YmplY3QpICE9IC0xKSByZXR1cm4gdHJ1ZTsKCiAgICB2YXIgZm91bmQgPSBmYWxz
ZTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSkgewogICAgICBpZiAodmFs
dWUgPT0gb2JqZWN0KSB7CiAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgIHRo
cm93ICRicmVhazsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gZm91bmQ7CiAg
fSwKCiAgaW5Hcm91cHNPZjogZnVuY3Rpb24obnVtYmVyLCBmaWxsV2l0aCkgewog
ICAgZmlsbFdpdGggPSBPYmplY3QuaXNVbmRlZmluZWQoZmlsbFdpdGgpID8gbnVs
bCA6IGZpbGxXaXRoOwogICAgcmV0dXJuIHRoaXMuZWFjaFNsaWNlKG51bWJlciwg
ZnVuY3Rpb24oc2xpY2UpIHsKICAgICAgd2hpbGUoc2xpY2UubGVuZ3RoIDwgbnVt
YmVyKSBzbGljZS5wdXNoKGZpbGxXaXRoKTsKICAgICAgcmV0dXJuIHNsaWNlOwog
ICAgfSk7CiAgfSwKCiAgaW5qZWN0OiBmdW5jdGlvbihtZW1vLCBpdGVyYXRvciwg
Y29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvci5iaW5kKGNvbnRleHQp
OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBt
ZW1vID0gaXRlcmF0b3IobWVtbywgdmFsdWUsIGluZGV4KTsKICAgIH0pOwogICAg
cmV0dXJuIG1lbW87CiAgfSwKCiAgaW52b2tlOiBmdW5jdGlvbihtZXRob2QpIHsK
ICAgIHZhciBhcmdzID0gJEEoYXJndW1lbnRzKS5zbGljZSgxKTsKICAgIHJldHVy
biB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gdmFsdWVb
bWV0aG9kXS5hcHBseSh2YWx1ZSwgYXJncyk7CiAgICB9KTsKICB9LAoKICBtYXg6
IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0
ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwog
ICAgdmFyIHJlc3VsdDsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5k
ZXgpIHsKICAgICAgdmFsdWUgPSBpdGVyYXRvcih2YWx1ZSwgaW5kZXgpOwogICAg
ICBpZiAocmVzdWx0ID09IG51bGwgfHwgdmFsdWUgPj0gcmVzdWx0KQogICAgICAg
IHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0s
CgogIG1pbjogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJh
dG9yID0gaXRlcmF0b3IgPyBpdGVyYXRvci5iaW5kKGNvbnRleHQpIDogUHJvdG90
eXBlLks7CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZh
bHVlLCBpbmRleCkgewogICAgICB2YWx1ZSA9IGl0ZXJhdG9yKHZhbHVlLCBpbmRl
eCk7CiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCB8fCB2YWx1ZSA8IHJlc3VsdCkK
ICAgICAgICByZXN1bHQgPSB2YWx1ZTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3Vs
dDsKICB9LAoKICBwYXJ0aXRpb246IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0
KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250
ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHRydWVzID0gW10sIGZhbHNlcyA9
IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAg
ICAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSA/CiAgICAgICAgdHJ1ZXMgOiBmYWxz
ZXMpLnB1c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gW3RydWVzLCBmYWxz
ZXNdOwogIH0sCgogIHBsdWNrOiBmdW5jdGlvbihwcm9wZXJ0eSkgewogICAgdmFy
IHJlc3VsdHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSkgewog
ICAgICByZXN1bHRzLnB1c2godmFsdWVbcHJvcGVydHldKTsKICAgIH0pOwogICAg
cmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgcmVqZWN0OiBmdW5jdGlvbihpdGVyYXRv
ciwgY29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvci5iaW5kKGNvbnRl
eHQpOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlv
bih2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKCFpdGVyYXRvcih2YWx1ZSwgaW5k
ZXgpKQogICAgICAgIHJlc3VsdHMucHVzaCh2YWx1ZSk7CiAgICB9KTsKICAgIHJl
dHVybiByZXN1bHRzOwogIH0sCgogIHNvcnRCeTogZnVuY3Rpb24oaXRlcmF0b3Is
IGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IuYmluZChjb250ZXh0
KTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsK
ICAgICAgcmV0dXJuIHt2YWx1ZTogdmFsdWUsIGNyaXRlcmlhOiBpdGVyYXRvcih2
YWx1ZSwgaW5kZXgpfTsKICAgIH0pLnNvcnQoZnVuY3Rpb24obGVmdCwgcmlnaHQp
IHsKICAgICAgdmFyIGEgPSBsZWZ0LmNyaXRlcmlhLCBiID0gcmlnaHQuY3JpdGVy
aWE7CiAgICAgIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMDsKICAg
IH0pLnBsdWNrKCd2YWx1ZScpOwogIH0sCgogIHRvQXJyYXk6IGZ1bmN0aW9uKCkg
ewogICAgcmV0dXJuIHRoaXMubWFwKCk7CiAgfSwKCiAgemlwOiBmdW5jdGlvbigp
IHsKICAgIHZhciBpdGVyYXRvciA9IFByb3RvdHlwZS5LLCBhcmdzID0gJEEoYXJn
dW1lbnRzKTsKICAgIGlmIChPYmplY3QuaXNGdW5jdGlvbihhcmdzLmxhc3QoKSkp
CiAgICAgIGl0ZXJhdG9yID0gYXJncy5wb3AoKTsKCiAgICB2YXIgY29sbGVjdGlv
bnMgPSBbdGhpc10uY29uY2F0KGFyZ3MpLm1hcCgkQSk7CiAgICByZXR1cm4gdGhp
cy5tYXAoZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIHJldHVybiBpdGVy
YXRvcihjb2xsZWN0aW9ucy5wbHVjayhpbmRleCkpOwogICAgfSk7CiAgfSwKCiAg
c2l6ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy50b0FycmF5KCkubGVu
Z3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICcj
PEVudW1lcmFibGU6JyArIHRoaXMudG9BcnJheSgpLmluc3BlY3QoKSArICc+JzsK
ICB9Cn07CgpPYmplY3QuZXh0ZW5kKEVudW1lcmFibGUsIHsKICBtYXA6ICAgICBF
bnVtZXJhYmxlLmNvbGxlY3QsCiAgZmluZDogICAgRW51bWVyYWJsZS5kZXRlY3Qs
CiAgc2VsZWN0OiAgRW51bWVyYWJsZS5maW5kQWxsLAogIGZpbHRlcjogIEVudW1l
cmFibGUuZmluZEFsbCwKICBtZW1iZXI6ICBFbnVtZXJhYmxlLmluY2x1ZGUsCiAg
ZW50cmllczogRW51bWVyYWJsZS50b0FycmF5LAogIGV2ZXJ5OiAgIEVudW1lcmFi
bGUuYWxsLAogIHNvbWU6ICAgIEVudW1lcmFibGUuYW55Cn0pOwpmdW5jdGlvbiAk
QShpdGVyYWJsZSkgewogIGlmICghaXRlcmFibGUpIHJldHVybiBbXTsKICBpZiAo
aXRlcmFibGUudG9BcnJheSkgcmV0dXJuIGl0ZXJhYmxlLnRvQXJyYXkoKTsKICB2
YXIgbGVuZ3RoID0gaXRlcmFibGUubGVuZ3RoIHx8IDAsIHJlc3VsdHMgPSBuZXcg
QXJyYXkobGVuZ3RoKTsKICB3aGlsZSAobGVuZ3RoLS0pIHJlc3VsdHNbbGVuZ3Ro
XSA9IGl0ZXJhYmxlW2xlbmd0aF07CiAgcmV0dXJuIHJlc3VsdHM7Cn0KCmlmIChQ
cm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAkQSA9IGZ1bmN0aW9uKGl0ZXJh
YmxlKSB7CiAgICBpZiAoIWl0ZXJhYmxlKSByZXR1cm4gW107CiAgICBpZiAoIShP
YmplY3QuaXNGdW5jdGlvbihpdGVyYWJsZSkgJiYgaXRlcmFibGUgPT0gJ1tvYmpl
Y3QgTm9kZUxpc3RdJykgJiYKICAgICAgICBpdGVyYWJsZS50b0FycmF5KSByZXR1
cm4gaXRlcmFibGUudG9BcnJheSgpOwogICAgdmFyIGxlbmd0aCA9IGl0ZXJhYmxl
Lmxlbmd0aCB8fCAwLCByZXN1bHRzID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICB3
aGlsZSAobGVuZ3RoLS0pIHJlc3VsdHNbbGVuZ3RoXSA9IGl0ZXJhYmxlW2xlbmd0
aF07CiAgICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgpBcnJheS5mcm9tID0gJEE7
CgpPYmplY3QuZXh0ZW5kKEFycmF5LnByb3RvdHlwZSwgRW51bWVyYWJsZSk7Cgpp
ZiAoIUFycmF5LnByb3RvdHlwZS5fcmV2ZXJzZSkgQXJyYXkucHJvdG90eXBlLl9y
ZXZlcnNlID0gQXJyYXkucHJvdG90eXBlLnJldmVyc2U7CgpPYmplY3QuZXh0ZW5k
KEFycmF5LnByb3RvdHlwZSwgewogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikg
ewogICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMubGVuZ3RoOyBpIDwg
bGVuZ3RoOyBpKyspCiAgICAgIGl0ZXJhdG9yKHRoaXNbaV0pOwogIH0sCgogIGNs
ZWFyOiBmdW5jdGlvbigpIHsKICAgIHRoaXMubGVuZ3RoID0gMDsKICAgIHJldHVy
biB0aGlzOwogIH0sCgogIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0
aGlzWzBdOwogIH0sCgogIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRo
aXNbdGhpcy5sZW5ndGggLSAxXTsKICB9LAoKICBjb21wYWN0OiBmdW5jdGlvbigp
IHsKICAgIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAg
ICByZXR1cm4gdmFsdWUgIT0gbnVsbDsKICAgIH0pOwogIH0sCgogIGZsYXR0ZW46
IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuaW5qZWN0KFtdLCBmdW5jdGlv
bihhcnJheSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIGFycmF5LmNvbmNhdChPYmpl
Y3QuaXNBcnJheSh2YWx1ZSkgPwogICAgICAgIHZhbHVlLmZsYXR0ZW4oKSA6IFt2
YWx1ZV0pOwogICAgfSk7CiAgfSwKCiAgd2l0aG91dDogZnVuY3Rpb24oKSB7CiAg
ICB2YXIgdmFsdWVzID0gJEEoYXJndW1lbnRzKTsKICAgIHJldHVybiB0aGlzLnNl
bGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gIXZhbHVlcy5pbmNs
dWRlKHZhbHVlKTsKICAgIH0pOwogIH0sCgogIHJldmVyc2U6IGZ1bmN0aW9uKGlu
bGluZSkgewogICAgcmV0dXJuIChpbmxpbmUgIT09IGZhbHNlID8gdGhpcyA6IHRo
aXMudG9BcnJheSgpKS5fcmV2ZXJzZSgpOwogIH0sCgogIHJlZHVjZTogZnVuY3Rp
b24oKSB7CiAgICByZXR1cm4gdGhpcy5sZW5ndGggPiAxID8gdGhpcyA6IHRoaXNb
MF07CiAgfSwKCiAgdW5pcTogZnVuY3Rpb24oc29ydGVkKSB7CiAgICByZXR1cm4g
dGhpcy5pbmplY3QoW10sIGZ1bmN0aW9uKGFycmF5LCB2YWx1ZSwgaW5kZXgpIHsK
ICAgICAgaWYgKDAgPT0gaW5kZXggfHwgKHNvcnRlZCA/IGFycmF5Lmxhc3QoKSAh
PSB2YWx1ZSA6ICFhcnJheS5pbmNsdWRlKHZhbHVlKSkpCiAgICAgICAgYXJyYXku
cHVzaCh2YWx1ZSk7CiAgICAgIHJldHVybiBhcnJheTsKICAgIH0pOwogIH0sCgog
IGludGVyc2VjdDogZnVuY3Rpb24oYXJyYXkpIHsKICAgIHJldHVybiB0aGlzLnVu
aXEoKS5maW5kQWxsKGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgcmV0dXJuIGFycmF5
LmRldGVjdChmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gaXRlbSA9PT0gdmFsdWUg
fSk7CiAgICB9KTsKICB9LAoKICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICByZXR1
cm4gW10uY29uY2F0KHRoaXMpOwogIH0sCgogIHNpemU6IGZ1bmN0aW9uKCkgewog
ICAgcmV0dXJuIHRoaXMubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9u
KCkgewogICAgcmV0dXJuICdbJyArIHRoaXMubWFwKE9iamVjdC5pbnNwZWN0KS5q
b2luKCcsICcpICsgJ10nOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAg
ICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKG9iamVj
dCkgewogICAgICB2YXIgdmFsdWUgPSBPYmplY3QudG9KU09OKG9iamVjdCk7CiAg
ICAgIGlmICghT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmVzdWx0cy5wdXNo
KHZhbHVlKTsKICAgIH0pOwogICAgcmV0dXJuICdbJyArIHJlc3VsdHMuam9pbign
LCAnKSArICddJzsKICB9Cn0pOwoKLy8gdXNlIG5hdGl2ZSBicm93c2VyIEpTIDEu
NiBpbXBsZW1lbnRhdGlvbiBpZiBhdmFpbGFibGUKaWYgKE9iamVjdC5pc0Z1bmN0
aW9uKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSkKICBBcnJheS5wcm90b3R5cGUu
X2VhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsKCmlmICghQXJyYXkucHJv
dG90eXBlLmluZGV4T2YpIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rp
b24oaXRlbSwgaSkgewogIGkgfHwgKGkgPSAwKTsKICB2YXIgbGVuZ3RoID0gdGhp
cy5sZW5ndGg7CiAgaWYgKGkgPCAwKSBpID0gbGVuZ3RoICsgaTsKICBmb3IgKDsg
aSA8IGxlbmd0aDsgaSsrKQogICAgaWYgKHRoaXNbaV0gPT09IGl0ZW0pIHJldHVy
biBpOwogIHJldHVybiAtMTsKfTsKCmlmICghQXJyYXkucHJvdG90eXBlLmxhc3RJ
bmRleE9mKSBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbihp
dGVtLCBpKSB7CiAgaSA9IGlzTmFOKGkpID8gdGhpcy5sZW5ndGggOiAoaSA8IDAg
PyB0aGlzLmxlbmd0aCArIGkgOiBpKSArIDE7CiAgdmFyIG4gPSB0aGlzLnNsaWNl
KDAsIGkpLnJldmVyc2UoKS5pbmRleE9mKGl0ZW0pOwogIHJldHVybiAobiA8IDAp
ID8gbiA6IGkgLSBuIC0gMTsKfTsKCkFycmF5LnByb3RvdHlwZS50b0FycmF5ID0g
QXJyYXkucHJvdG90eXBlLmNsb25lOwoKZnVuY3Rpb24gJHcoc3RyaW5nKSB7CiAg
aWYgKCFPYmplY3QuaXNTdHJpbmcoc3RyaW5nKSkgcmV0dXJuIFtdOwogIHN0cmlu
ZyA9IHN0cmluZy5zdHJpcCgpOwogIHJldHVybiBzdHJpbmcgPyBzdHJpbmcuc3Bs
aXQoL1xzKy8pIDogW107Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSl7
CiAgQXJyYXkucHJvdG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uKCkgewogICAgdmFy
IGFycmF5ID0gW107CiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gdGhpcy5s
ZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgYXJyYXkucHVzaCh0aGlzW2ldKTsKICAg
IGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwg
bGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKE9iamVjdC5pc0FycmF5KGFyZ3VtZW50
c1tpXSkpIHsKICAgICAgICBmb3IgKHZhciBqID0gMCwgYXJyYXlMZW5ndGggPSBh
cmd1bWVudHNbaV0ubGVuZ3RoOyBqIDwgYXJyYXlMZW5ndGg7IGorKykKICAgICAg
ICAgIGFycmF5LnB1c2goYXJndW1lbnRzW2ldW2pdKTsKICAgICAgfSBlbHNlIHsK
ICAgICAgICBhcnJheS5wdXNoKGFyZ3VtZW50c1tpXSk7CiAgICAgIH0KICAgIH0K
ICAgIHJldHVybiBhcnJheTsKICB9Owp9Ck9iamVjdC5leHRlbmQoTnVtYmVyLnBy
b3RvdHlwZSwgewogIHRvQ29sb3JQYXJ0OiBmdW5jdGlvbigpIHsKICAgIHJldHVy
biB0aGlzLnRvUGFkZGVkU3RyaW5nKDIsIDE2KTsKICB9LAoKICBzdWNjOiBmdW5j
dGlvbigpIHsKICAgIHJldHVybiB0aGlzICsgMTsKICB9LAoKICB0aW1lczogZnVu
Y3Rpb24oaXRlcmF0b3IpIHsKICAgICRSKDAsIHRoaXMsIHRydWUpLmVhY2goaXRl
cmF0b3IpOwogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgdG9QYWRkZWRTdHJpbmc6
IGZ1bmN0aW9uKGxlbmd0aCwgcmFkaXgpIHsKICAgIHZhciBzdHJpbmcgPSB0aGlz
LnRvU3RyaW5nKHJhZGl4IHx8IDEwKTsKICAgIHJldHVybiAnMCcudGltZXMobGVu
Z3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7CiAgfSwKCiAgdG9KU09OOiBm
dW5jdGlvbigpIHsKICAgIHJldHVybiBpc0Zpbml0ZSh0aGlzKSA/IHRoaXMudG9T
dHJpbmcoKSA6ICdudWxsJzsKICB9Cn0pOwoKJHcoJ2FicyByb3VuZCBjZWlsIGZs
b29yJykuZWFjaChmdW5jdGlvbihtZXRob2QpewogIE51bWJlci5wcm90b3R5cGVb
bWV0aG9kXSA9IE1hdGhbbWV0aG9kXS5tZXRob2RpemUoKTsKfSk7CmZ1bmN0aW9u
ICRIKG9iamVjdCkgewogIHJldHVybiBuZXcgSGFzaChvYmplY3QpOwp9OwoKdmFy
IEhhc2ggPSBDbGFzcy5jcmVhdGUoRW51bWVyYWJsZSwgKGZ1bmN0aW9uKCkgewoK
ICBmdW5jdGlvbiB0b1F1ZXJ5UGFpcihrZXksIHZhbHVlKSB7CiAgICBpZiAoT2Jq
ZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJuIGtleTsKICAgIHJldHVybiBr
ZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nLmludGVycHJldCh2
YWx1ZSkpOwogIH0KCiAgcmV0dXJuIHsKICAgIGluaXRpYWxpemU6IGZ1bmN0aW9u
KG9iamVjdCkgewogICAgICB0aGlzLl9vYmplY3QgPSBPYmplY3QuaXNIYXNoKG9i
amVjdCkgPyBvYmplY3QudG9PYmplY3QoKSA6IE9iamVjdC5jbG9uZShvYmplY3Qp
OwogICAgfSwKCiAgICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgICAg
Zm9yICh2YXIga2V5IGluIHRoaXMuX29iamVjdCkgewogICAgICAgIHZhciB2YWx1
ZSA9IHRoaXMuX29iamVjdFtrZXldLCBwYWlyID0gW2tleSwgdmFsdWVdOwogICAg
ICAgIHBhaXIua2V5ID0ga2V5OwogICAgICAgIHBhaXIudmFsdWUgPSB2YWx1ZTsK
ICAgICAgICBpdGVyYXRvcihwYWlyKTsKICAgICAgfQogICAgfSwKCiAgICBzZXQ6
IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIHRoaXMuX29iamVj
dFtrZXldID0gdmFsdWU7CiAgICB9LAoKICAgIGdldDogZnVuY3Rpb24oa2V5KSB7
CiAgICAgIHJldHVybiB0aGlzLl9vYmplY3Rba2V5XTsKICAgIH0sCgogICAgdW5z
ZXQ6IGZ1bmN0aW9uKGtleSkgewogICAgICB2YXIgdmFsdWUgPSB0aGlzLl9vYmpl
Y3Rba2V5XTsKICAgICAgZGVsZXRlIHRoaXMuX29iamVjdFtrZXldOwogICAgICBy
ZXR1cm4gdmFsdWU7CiAgICB9LAoKICAgIHRvT2JqZWN0OiBmdW5jdGlvbigpIHsK
ICAgICAgcmV0dXJuIE9iamVjdC5jbG9uZSh0aGlzLl9vYmplY3QpOwogICAgfSwK
CiAgICBrZXlzOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucGx1Y2so
J2tleScpOwogICAgfSwKCiAgICB2YWx1ZXM6IGZ1bmN0aW9uKCkgewogICAgICBy
ZXR1cm4gdGhpcy5wbHVjaygndmFsdWUnKTsKICAgIH0sCgogICAgaW5kZXg6IGZ1
bmN0aW9uKHZhbHVlKSB7CiAgICAgIHZhciBtYXRjaCA9IHRoaXMuZGV0ZWN0KGZ1
bmN0aW9uKHBhaXIpIHsKICAgICAgICByZXR1cm4gcGFpci52YWx1ZSA9PT0gdmFs
dWU7CiAgICAgIH0pOwogICAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2gua2V5Owog
ICAgfSwKCiAgICBtZXJnZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgIHJldHVy
biB0aGlzLmNsb25lKCkudXBkYXRlKG9iamVjdCk7CiAgICB9LAoKICAgIHVwZGF0
ZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgIHJldHVybiBuZXcgSGFzaChvYmpl
Y3QpLmluamVjdCh0aGlzLCBmdW5jdGlvbihyZXN1bHQsIHBhaXIpIHsKICAgICAg
ICByZXN1bHQuc2V0KHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICB9KTsKICAgIH0sCgogICAgdG9RdWVyeVN0cmluZzog
ZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbihwYWly
KSB7CiAgICAgICAgdmFyIGtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwYWlyLmtl
eSksIHZhbHVlcyA9IHBhaXIudmFsdWU7CgogICAgICAgIGlmICh2YWx1ZXMgJiYg
dHlwZW9mIHZhbHVlcyA9PSAnb2JqZWN0JykgewogICAgICAgICAgaWYgKE9iamVj
dC5pc0FycmF5KHZhbHVlcykpCiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMubWFw
KHRvUXVlcnlQYWlyLmN1cnJ5KGtleSkpLmpvaW4oJyYnKTsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIHRvUXVlcnlQYWlyKGtleSwgdmFsdWVzKTsKICAgICAgfSku
am9pbignJicpOwogICAgfSwKCiAgICBpbnNwZWN0OiBmdW5jdGlvbigpIHsKICAg
ICAgcmV0dXJuICcjPEhhc2g6eycgKyB0aGlzLm1hcChmdW5jdGlvbihwYWlyKSB7
CiAgICAgICAgcmV0dXJuIHBhaXIubWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCc6
ICcpOwogICAgICB9KS5qb2luKCcsICcpICsgJ30+JzsKICAgIH0sCgogICAgdG9K
U09OOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE9iamVjdC50b0pTT04odGhp
cy50b09iamVjdCgpKTsKICAgIH0sCgogICAgY2xvbmU6IGZ1bmN0aW9uKCkgewog
ICAgICByZXR1cm4gbmV3IEhhc2godGhpcyk7CiAgICB9CiAgfQp9KSgpKTsKCkhh
c2gucHJvdG90eXBlLnRvVGVtcGxhdGVSZXBsYWNlbWVudHMgPSBIYXNoLnByb3Rv
dHlwZS50b09iamVjdDsKSGFzaC5mcm9tID0gJEg7CnZhciBPYmplY3RSYW5nZSA9
IENsYXNzLmNyZWF0ZShFbnVtZXJhYmxlLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rp
b24oc3RhcnQsIGVuZCwgZXhjbHVzaXZlKSB7CiAgICB0aGlzLnN0YXJ0ID0gc3Rh
cnQ7CiAgICB0aGlzLmVuZCA9IGVuZDsKICAgIHRoaXMuZXhjbHVzaXZlID0gZXhj
bHVzaXZlOwogIH0sCgogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAg
dmFyIHZhbHVlID0gdGhpcy5zdGFydDsKICAgIHdoaWxlICh0aGlzLmluY2x1ZGUo
dmFsdWUpKSB7CiAgICAgIGl0ZXJhdG9yKHZhbHVlKTsKICAgICAgdmFsdWUgPSB2
YWx1ZS5zdWNjKCk7CiAgICB9CiAgfSwKCiAgaW5jbHVkZTogZnVuY3Rpb24odmFs
dWUpIHsKICAgIGlmICh2YWx1ZSA8IHRoaXMuc3RhcnQpCiAgICAgIHJldHVybiBm
YWxzZTsKICAgIGlmICh0aGlzLmV4Y2x1c2l2ZSkKICAgICAgcmV0dXJuIHZhbHVl
IDwgdGhpcy5lbmQ7CiAgICByZXR1cm4gdmFsdWUgPD0gdGhpcy5lbmQ7CiAgfQp9
KTsKCnZhciAkUiA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIGV4Y2x1c2l2ZSkgewog
IHJldHVybiBuZXcgT2JqZWN0UmFuZ2Uoc3RhcnQsIGVuZCwgZXhjbHVzaXZlKTsK
fTsKCnZhciBBamF4ID0gewogIGdldFRyYW5zcG9ydDogZnVuY3Rpb24oKSB7CiAg
ICByZXR1cm4gVHJ5LnRoZXNlKAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3
IFhNTEh0dHBSZXF1ZXN0KCl9LAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3
IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQJyl9LAogICAgICBmdW5jdGlv
bigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01pY3Jvc29mdC5YTUxIVFRQ
Jyl9CiAgICApIHx8IGZhbHNlOwogIH0sCgogIGFjdGl2ZVJlcXVlc3RDb3VudDog
MAp9OwoKQWpheC5SZXNwb25kZXJzID0gewogIHJlc3BvbmRlcnM6IFtdLAoKICBf
ZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgIHRoaXMucmVzcG9uZGVycy5f
ZWFjaChpdGVyYXRvcik7CiAgfSwKCiAgcmVnaXN0ZXI6IGZ1bmN0aW9uKHJlc3Bv
bmRlcikgewogICAgaWYgKCF0aGlzLmluY2x1ZGUocmVzcG9uZGVyKSkKICAgICAg
dGhpcy5yZXNwb25kZXJzLnB1c2gocmVzcG9uZGVyKTsKICB9LAoKICB1bnJlZ2lz
dGVyOiBmdW5jdGlvbihyZXNwb25kZXIpIHsKICAgIHRoaXMucmVzcG9uZGVycyA9
IHRoaXMucmVzcG9uZGVycy53aXRob3V0KHJlc3BvbmRlcik7CiAgfSwKCiAgZGlz
cGF0Y2g6IGZ1bmN0aW9uKGNhbGxiYWNrLCByZXF1ZXN0LCB0cmFuc3BvcnQsIGpz
b24pIHsKICAgIHRoaXMuZWFjaChmdW5jdGlvbihyZXNwb25kZXIpIHsKICAgICAg
aWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlc3BvbmRlcltjYWxsYmFja10pKSB7CiAg
ICAgICAgdHJ5IHsKICAgICAgICAgIHJlc3BvbmRlcltjYWxsYmFja10uYXBwbHko
cmVzcG9uZGVyLCBbcmVxdWVzdCwgdHJhbnNwb3J0LCBqc29uXSk7CiAgICAgICAg
fSBjYXRjaCAoZSkgeyB9CiAgICAgIH0KICAgIH0pOwogIH0KfTsKCk9iamVjdC5l
eHRlbmQoQWpheC5SZXNwb25kZXJzLCBFbnVtZXJhYmxlKTsKCkFqYXguUmVzcG9u
ZGVycy5yZWdpc3Rlcih7CiAgb25DcmVhdGU6ICAgZnVuY3Rpb24oKSB7IEFqYXgu
YWN0aXZlUmVxdWVzdENvdW50KysgfSwKICBvbkNvbXBsZXRlOiBmdW5jdGlvbigp
IHsgQWpheC5hY3RpdmVSZXF1ZXN0Q291bnQtLSB9Cn0pOwoKQWpheC5CYXNlID0g
Q2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7
CiAgICB0aGlzLm9wdGlvbnMgPSB7CiAgICAgIG1ldGhvZDogICAgICAgJ3Bvc3Qn
LAogICAgICBhc3luY2hyb25vdXM6IHRydWUsCiAgICAgIGNvbnRlbnRUeXBlOiAg
J2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsCiAgICAgIGVuY29k
aW5nOiAgICAgJ1VURi04JywKICAgICAgcGFyYW1ldGVyczogICAnJywKICAgICAg
ZXZhbEpTT046ICAgICB0cnVlLAogICAgICBldmFsSlM6ICAgICAgIHRydWUKICAg
IH07CiAgICBPYmplY3QuZXh0ZW5kKHRoaXMub3B0aW9ucywgb3B0aW9ucyB8fCB7
IH0pOwoKICAgIHRoaXMub3B0aW9ucy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0
aG9kLnRvTG93ZXJDYXNlKCk7CgogICAgaWYgKE9iamVjdC5pc1N0cmluZyh0aGlz
Lm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbWV0
ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRlcnMudG9RdWVyeVBhcmFtcygpOwog
ICAgZWxzZSBpZiAoT2JqZWN0LmlzSGFzaCh0aGlzLm9wdGlvbnMucGFyYW1ldGVy
cykpCiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25z
LnBhcmFtZXRlcnMudG9PYmplY3QoKTsKICB9Cn0pOwoKQWpheC5SZXF1ZXN0ID0g
Q2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewogIF9jb21wbGV0ZTogZmFsc2UsCgog
IGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgdXJsLCBvcHRpb25zKSB7CiAg
ICAkc3VwZXIob3B0aW9ucyk7CiAgICB0aGlzLnRyYW5zcG9ydCA9IEFqYXguZ2V0
VHJhbnNwb3J0KCk7CiAgICB0aGlzLnJlcXVlc3QodXJsKTsKICB9LAoKICByZXF1
ZXN0OiBmdW5jdGlvbih1cmwpIHsKICAgIHRoaXMudXJsID0gdXJsOwogICAgdGhp
cy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0aG9kOwogICAgdmFyIHBhcmFtcyA9
IE9iamVjdC5jbG9uZSh0aGlzLm9wdGlvbnMucGFyYW1ldGVycyk7CgogICAgaWYg
KCFbJ2dldCcsICdwb3N0J10uaW5jbHVkZSh0aGlzLm1ldGhvZCkpIHsKICAgICAg
Ly8gc2ltdWxhdGUgb3RoZXIgdmVyYnMgb3ZlciBwb3N0CiAgICAgIHBhcmFtc1sn
X21ldGhvZCddID0gdGhpcy5tZXRob2Q7CiAgICAgIHRoaXMubWV0aG9kID0gJ3Bv
c3QnOwogICAgfQoKICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtczsKCiAgICBp
ZiAocGFyYW1zID0gT2JqZWN0LnRvUXVlcnlTdHJpbmcocGFyYW1zKSkgewogICAg
ICAvLyB3aGVuIEdFVCwgYXBwZW5kIHBhcmFtZXRlcnMgdG8gVVJMCiAgICAgIGlm
ICh0aGlzLm1ldGhvZCA9PSAnZ2V0JykKICAgICAgICB0aGlzLnVybCArPSAodGhp
cy51cmwuaW5jbHVkZSgnPycpID8gJyYnIDogJz8nKSArIHBhcmFtczsKICAgICAg
ZWxzZSBpZiAoL0tvbnF1ZXJvcnxTYWZhcml8S0hUTUwvLnRlc3QobmF2aWdhdG9y
LnVzZXJBZ2VudCkpCiAgICAgICAgcGFyYW1zICs9ICcmXz0nOwogICAgfQoKICAg
IHRyeSB7CiAgICAgIHZhciByZXNwb25zZSA9IG5ldyBBamF4LlJlc3BvbnNlKHRo
aXMpOwogICAgICBpZiAodGhpcy5vcHRpb25zLm9uQ3JlYXRlKSB0aGlzLm9wdGlv
bnMub25DcmVhdGUocmVzcG9uc2UpOwogICAgICBBamF4LlJlc3BvbmRlcnMuZGlz
cGF0Y2goJ29uQ3JlYXRlJywgdGhpcywgcmVzcG9uc2UpOwoKICAgICAgdGhpcy50
cmFuc3BvcnQub3Blbih0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnVy
bCwKICAgICAgICB0aGlzLm9wdGlvbnMuYXN5bmNocm9ub3VzKTsKCiAgICAgIGlm
ICh0aGlzLm9wdGlvbnMuYXN5bmNocm9ub3VzKSB0aGlzLnJlc3BvbmRUb1JlYWR5
U3RhdGUuYmluZCh0aGlzKS5kZWZlcigxKTsKCiAgICAgIHRoaXMudHJhbnNwb3J0
Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRo
aXMpOwogICAgICB0aGlzLnNldFJlcXVlc3RIZWFkZXJzKCk7CgogICAgICB0aGlz
LmJvZHkgPSB0aGlzLm1ldGhvZCA9PSAncG9zdCcgPyAodGhpcy5vcHRpb25zLnBv
c3RCb2R5IHx8IHBhcmFtcykgOiBudWxsOwogICAgICB0aGlzLnRyYW5zcG9ydC5z
ZW5kKHRoaXMuYm9keSk7CgogICAgICAvKiBGb3JjZSBGaXJlZm94IHRvIGhhbmRs
ZSByZWFkeSBzdGF0ZSA0IGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cyAqLwogICAg
ICBpZiAoIXRoaXMub3B0aW9ucy5hc3luY2hyb25vdXMgJiYgdGhpcy50cmFuc3Bv
cnQub3ZlcnJpZGVNaW1lVHlwZSkKICAgICAgICB0aGlzLm9uU3RhdGVDaGFuZ2Uo
KTsKCiAgICB9CiAgICBjYXRjaCAoZSkgewogICAgICB0aGlzLmRpc3BhdGNoRXhj
ZXB0aW9uKGUpOwogICAgfQogIH0sCgogIG9uU3RhdGVDaGFuZ2U6IGZ1bmN0aW9u
KCkgewogICAgdmFyIHJlYWR5U3RhdGUgPSB0aGlzLnRyYW5zcG9ydC5yZWFkeVN0
YXRlOwogICAgaWYgKHJlYWR5U3RhdGUgPiAxICYmICEoKHJlYWR5U3RhdGUgPT0g
NCkgJiYgdGhpcy5fY29tcGxldGUpKQogICAgICB0aGlzLnJlc3BvbmRUb1JlYWR5
U3RhdGUodGhpcy50cmFuc3BvcnQucmVhZHlTdGF0ZSk7CiAgfSwKCiAgc2V0UmVx
dWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkgewogICAgdmFyIGhlYWRlcnMgPSB7CiAg
ICAgICdYLVJlcXVlc3RlZC1XaXRoJzogJ1hNTEh0dHBSZXF1ZXN0JywKICAgICAg
J1gtUHJvdG90eXBlLVZlcnNpb24nOiBQcm90b3R5cGUuVmVyc2lvbiwKICAgICAg
J0FjY2VwdCc6ICd0ZXh0L2phdmFzY3JpcHQsIHRleHQvaHRtbCwgYXBwbGljYXRp
b24veG1sLCB0ZXh0L3htbCwgKi8qJwogICAgfTsKCiAgICBpZiAodGhpcy5tZXRo
b2QgPT0gJ3Bvc3QnKSB7CiAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtdHlwZSddID0g
dGhpcy5vcHRpb25zLmNvbnRlbnRUeXBlICsKICAgICAgICAodGhpcy5vcHRpb25z
LmVuY29kaW5nID8gJzsgY2hhcnNldD0nICsgdGhpcy5vcHRpb25zLmVuY29kaW5n
IDogJycpOwoKICAgICAgLyogRm9yY2UgIkNvbm5lY3Rpb246IGNsb3NlIiBmb3Ig
b2xkZXIgTW96aWxsYSBicm93c2VycyB0byB3b3JrCiAgICAgICAqIGFyb3VuZCBh
IGJ1ZyB3aGVyZSBYTUxIdHRwUmVxdWVzdCBzZW5kcyBhbiBpbmNvcnJlY3QKICAg
ICAgICogQ29udGVudC1sZW5ndGggaGVhZGVyLiBTZWUgTW96aWxsYSBCdWd6aWxs
YSAjMjQ2NjUxLgogICAgICAgKi8KICAgICAgaWYgKHRoaXMudHJhbnNwb3J0Lm92
ZXJyaWRlTWltZVR5cGUgJiYKICAgICAgICAgIChuYXZpZ2F0b3IudXNlckFnZW50
Lm1hdGNoKC9HZWNrb1wvKFxkezR9KS8pIHx8IFswLDIwMDVdKVsxXSA8IDIwMDUp
CiAgICAgICAgICAgIGhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdjbG9zZSc7CiAg
ICB9CgogICAgLy8gdXNlci1kZWZpbmVkIGhlYWRlcnMKICAgIGlmICh0eXBlb2Yg
dGhpcy5vcHRpb25zLnJlcXVlc3RIZWFkZXJzID09ICdvYmplY3QnKSB7CiAgICAg
IHZhciBleHRyYXMgPSB0aGlzLm9wdGlvbnMucmVxdWVzdEhlYWRlcnM7CgogICAg
ICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24oZXh0cmFzLnB1c2gpKQogICAgICAgIGZv
ciAodmFyIGkgPSAwLCBsZW5ndGggPSBleHRyYXMubGVuZ3RoOyBpIDwgbGVuZ3Ro
OyBpICs9IDIpCiAgICAgICAgICBoZWFkZXJzW2V4dHJhc1tpXV0gPSBleHRyYXNb
aSsxXTsKICAgICAgZWxzZQogICAgICAgICRIKGV4dHJhcykuZWFjaChmdW5jdGlv
bihwYWlyKSB7IGhlYWRlcnNbcGFpci5rZXldID0gcGFpci52YWx1ZSB9KTsKICAg
IH0KCiAgICBmb3IgKHZhciBuYW1lIGluIGhlYWRlcnMpCiAgICAgIHRoaXMudHJh
bnNwb3J0LnNldFJlcXVlc3RIZWFkZXIobmFtZSwgaGVhZGVyc1tuYW1lXSk7CiAg
fSwKCiAgc3VjY2VzczogZnVuY3Rpb24oKSB7CiAgICB2YXIgc3RhdHVzID0gdGhp
cy5nZXRTdGF0dXMoKTsKICAgIHJldHVybiAhc3RhdHVzIHx8IChzdGF0dXMgPj0g
MjAwICYmIHN0YXR1cyA8IDMwMCk7CiAgfSwKCiAgZ2V0U3RhdHVzOiBmdW5jdGlv
bigpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5zdGF0
dXMgfHwgMDsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIDAgfQogIH0sCgogIHJl
c3BvbmRUb1JlYWR5U3RhdGU6IGZ1bmN0aW9uKHJlYWR5U3RhdGUpIHsKICAgIHZh
ciBzdGF0ZSA9IEFqYXguUmVxdWVzdC5FdmVudHNbcmVhZHlTdGF0ZV0sIHJlc3Bv
bnNlID0gbmV3IEFqYXguUmVzcG9uc2UodGhpcyk7CgogICAgaWYgKHN0YXRlID09
ICdDb21wbGV0ZScpIHsKICAgICAgdHJ5IHsKICAgICAgICB0aGlzLl9jb21wbGV0
ZSA9IHRydWU7CiAgICAgICAgKHRoaXMub3B0aW9uc1snb24nICsgcmVzcG9uc2Uu
c3RhdHVzXQogICAgICAgICB8fCB0aGlzLm9wdGlvbnNbJ29uJyArICh0aGlzLnN1
Y2Nlc3MoKSA/ICdTdWNjZXNzJyA6ICdGYWlsdXJlJyldCiAgICAgICAgIHx8IFBy
b3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNwb25zZSwgcmVzcG9uc2UuaGVhZGVy
SlNPTik7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICB0aGlzLmRpc3BhdGNo
RXhjZXB0aW9uKGUpOwogICAgICB9CgogICAgICB2YXIgY29udGVudFR5cGUgPSBy
ZXNwb25zZS5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpOwogICAgICBpZiAodGhp
cy5vcHRpb25zLmV2YWxKUyA9PSAnZm9yY2UnCiAgICAgICAgICB8fCAodGhpcy5v
cHRpb25zLmV2YWxKUyAmJiB0aGlzLmlzU2FtZU9yaWdpbigpICYmIGNvbnRlbnRU
eXBlCiAgICAgICAgICAmJiBjb250ZW50VHlwZS5tYXRjaCgvXlxzKih0ZXh0fGFw
cGxpY2F0aW9uKVwvKHgtKT8oamF2YXxlY21hKXNjcmlwdCg7LiopP1xzKiQvaSkp
KQogICAgICAgIHRoaXMuZXZhbFJlc3BvbnNlKCk7CiAgICB9CgogICAgdHJ5IHsK
ICAgICAgKHRoaXMub3B0aW9uc1snb24nICsgc3RhdGVdIHx8IFByb3RvdHlwZS5l
bXB0eUZ1bmN0aW9uKShyZXNwb25zZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAg
ICAgIEFqYXguUmVzcG9uZGVycy5kaXNwYXRjaCgnb24nICsgc3RhdGUsIHRoaXMs
IHJlc3BvbnNlLCByZXNwb25zZS5oZWFkZXJKU09OKTsKICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KCiAgICBp
ZiAoc3RhdGUgPT0gJ0NvbXBsZXRlJykgewogICAgICAvLyBhdm9pZCBtZW1vcnkg
bGVhayBpbiBNU0lFOiBjbGVhbiB1cAogICAgICB0aGlzLnRyYW5zcG9ydC5vbnJl
YWR5c3RhdGVjaGFuZ2UgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgIH0K
ICB9LAoKICBpc1NhbWVPcmlnaW46IGZ1bmN0aW9uKCkgewogICAgdmFyIG0gPSB0
aGlzLnVybC5tYXRjaCgvXlxzKmh0dHBzPzpcL1wvW15cL10qLyk7CiAgICByZXR1
cm4gIW0gfHwgKG1bMF0gPT0gJyN7cHJvdG9jb2x9Ly8je2RvbWFpbn0je3BvcnR9
Jy5pbnRlcnBvbGF0ZSh7CiAgICAgIHByb3RvY29sOiBsb2NhdGlvbi5wcm90b2Nv
bCwKICAgICAgZG9tYWluOiBkb2N1bWVudC5kb21haW4sCiAgICAgIHBvcnQ6IGxv
Y2F0aW9uLnBvcnQgPyAnOicgKyBsb2NhdGlvbi5wb3J0IDogJycKICAgIH0pKTsK
ICB9LAoKICBnZXRIZWFkZXI6IGZ1bmN0aW9uKG5hbWUpIHsKICAgIHRyeSB7CiAg
ICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRSZXNwb25zZUhlYWRlcihuYW1l
KSB8fCBudWxsOwogICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gbnVsbCB9CiAgfSwK
CiAgZXZhbFJlc3BvbnNlOiBmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAgIHJl
dHVybiBldmFsKCh0aGlzLnRyYW5zcG9ydC5yZXNwb25zZVRleHQgfHwgJycpLnVu
ZmlsdGVySlNPTigpKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNw
YXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KICB9LAoKICBkaXNwYXRjaEV4Y2VwdGlv
bjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7CiAgICAodGhpcy5vcHRpb25zLm9uRXhj
ZXB0aW9uIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKSh0aGlzLCBleGNlcHRp
b24pOwogICAgQWpheC5SZXNwb25kZXJzLmRpc3BhdGNoKCdvbkV4Y2VwdGlvbics
IHRoaXMsIGV4Y2VwdGlvbik7CiAgfQp9KTsKCkFqYXguUmVxdWVzdC5FdmVudHMg
PQogIFsnVW5pbml0aWFsaXplZCcsICdMb2FkaW5nJywgJ0xvYWRlZCcsICdJbnRl
cmFjdGl2ZScsICdDb21wbGV0ZSddOwoKQWpheC5SZXNwb25zZSA9IENsYXNzLmNy
ZWF0ZSh7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocmVxdWVzdCl7CiAgICB0aGlz
LnJlcXVlc3QgPSByZXF1ZXN0OwogICAgdmFyIHRyYW5zcG9ydCAgPSB0aGlzLnRy
YW5zcG9ydCAgPSByZXF1ZXN0LnRyYW5zcG9ydCwKICAgICAgICByZWFkeVN0YXRl
ID0gdGhpcy5yZWFkeVN0YXRlID0gdHJhbnNwb3J0LnJlYWR5U3RhdGU7CgogICAg
aWYoKHJlYWR5U3RhdGUgPiAyICYmICFQcm90b3R5cGUuQnJvd3Nlci5JRSkgfHwg
cmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgIHRoaXMuc3RhdHVzICAgICAgID0gdGhp
cy5nZXRTdGF0dXMoKTsKICAgICAgdGhpcy5zdGF0dXNUZXh0ICAgPSB0aGlzLmdl
dFN0YXR1c1RleHQoKTsKICAgICAgdGhpcy5yZXNwb25zZVRleHQgPSBTdHJpbmcu
aW50ZXJwcmV0KHRyYW5zcG9ydC5yZXNwb25zZVRleHQpOwogICAgICB0aGlzLmhl
YWRlckpTT04gICA9IHRoaXMuX2dldEhlYWRlckpTT04oKTsKICAgIH0KCiAgICBp
ZihyZWFkeVN0YXRlID09IDQpIHsKICAgICAgdmFyIHhtbCA9IHRyYW5zcG9ydC5y
ZXNwb25zZVhNTDsKICAgICAgdGhpcy5yZXNwb25zZVhNTCAgPSBPYmplY3QuaXNV
bmRlZmluZWQoeG1sKSA/IG51bGwgOiB4bWw7CiAgICAgIHRoaXMucmVzcG9uc2VK
U09OID0gdGhpcy5fZ2V0UmVzcG9uc2VKU09OKCk7CiAgICB9CiAgfSwKCiAgc3Rh
dHVzOiAgICAgIDAsCiAgc3RhdHVzVGV4dDogJycsCgogIGdldFN0YXR1czogQWph
eC5SZXF1ZXN0LnByb3RvdHlwZS5nZXRTdGF0dXMsCgogIGdldFN0YXR1c1RleHQ6
IGZ1bmN0aW9uKCkgewogICAgdHJ5IHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNw
b3J0LnN0YXR1c1RleHQgfHwgJyc7CiAgICB9IGNhdGNoIChlKSB7IHJldHVybiAn
JyB9CiAgfSwKCiAgZ2V0SGVhZGVyOiBBamF4LlJlcXVlc3QucHJvdG90eXBlLmdl
dEhlYWRlciwKCiAgZ2V0QWxsSGVhZGVyczogZnVuY3Rpb24oKSB7CiAgICB0cnkg
ewogICAgICByZXR1cm4gdGhpcy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKICAg
IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGwgfQogIH0sCgogIGdldFJlc3BvbnNl
SGVhZGVyOiBmdW5jdGlvbihuYW1lKSB7CiAgICByZXR1cm4gdGhpcy50cmFuc3Bv
cnQuZ2V0UmVzcG9uc2VIZWFkZXIobmFtZSk7CiAgfSwKCiAgZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRyYW5zcG9y
dC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKICB9LAoKICBfZ2V0SGVhZGVySlNP
TjogZnVuY3Rpb24oKSB7CiAgICB2YXIganNvbiA9IHRoaXMuZ2V0SGVhZGVyKCdY
LUpTT04nKTsKICAgIGlmICghanNvbikgcmV0dXJuIG51bGw7CiAgICBqc29uID0g
ZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShqc29uKSk7CiAgICB0cnkgewogICAg
ICByZXR1cm4ganNvbi5ldmFsSlNPTih0aGlzLnJlcXVlc3Qub3B0aW9ucy5zYW5p
dGl6ZUpTT04gfHwKICAgICAgICAhdGhpcy5yZXF1ZXN0LmlzU2FtZU9yaWdpbigp
KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5yZXF1ZXN0LmRpc3BhdGNo
RXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgogIF9nZXRSZXNwb25zZUpTT046IGZ1
bmN0aW9uKCkgewogICAgdmFyIG9wdGlvbnMgPSB0aGlzLnJlcXVlc3Qub3B0aW9u
czsKICAgIGlmICghb3B0aW9ucy5ldmFsSlNPTiB8fCAob3B0aW9ucy5ldmFsSlNP
TiAhPSAnZm9yY2UnICYmCiAgICAgICEodGhpcy5nZXRIZWFkZXIoJ0NvbnRlbnQt
dHlwZScpIHx8ICcnKS5pbmNsdWRlKCdhcHBsaWNhdGlvbi9qc29uJykpIHx8CiAg
ICAgICAgdGhpcy5yZXNwb25zZVRleHQuYmxhbmsoKSkKICAgICAgICAgIHJldHVy
biBudWxsOwogICAgdHJ5IHsKICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VUZXh0
LmV2YWxKU09OKG9wdGlvbnMuc2FuaXRpemVKU09OIHx8CiAgICAgICAgIXRoaXMu
cmVxdWVzdC5pc1NhbWVPcmlnaW4oKSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAg
IHRoaXMucmVxdWVzdC5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KICB9Cn0p
OwoKQWpheC5VcGRhdGVyID0gQ2xhc3MuY3JlYXRlKEFqYXguUmVxdWVzdCwgewog
IGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgY29udGFpbmVyLCB1cmwsIG9w
dGlvbnMpIHsKICAgIHRoaXMuY29udGFpbmVyID0gewogICAgICBzdWNjZXNzOiAo
Y29udGFpbmVyLnN1Y2Nlc3MgfHwgY29udGFpbmVyKSwKICAgICAgZmFpbHVyZTog
KGNvbnRhaW5lci5mYWlsdXJlIHx8IChjb250YWluZXIuc3VjY2VzcyA/IG51bGwg
OiBjb250YWluZXIpKQogICAgfTsKCiAgICBvcHRpb25zID0gT2JqZWN0LmNsb25l
KG9wdGlvbnMpOwogICAgdmFyIG9uQ29tcGxldGUgPSBvcHRpb25zLm9uQ29tcGxl
dGU7CiAgICBvcHRpb25zLm9uQ29tcGxldGUgPSAoZnVuY3Rpb24ocmVzcG9uc2Us
IGpzb24pIHsKICAgICAgdGhpcy51cGRhdGVDb250ZW50KHJlc3BvbnNlLnJlc3Bv
bnNlVGV4dCk7CiAgICAgIGlmIChPYmplY3QuaXNGdW5jdGlvbihvbkNvbXBsZXRl
KSkgb25Db21wbGV0ZShyZXNwb25zZSwganNvbik7CiAgICB9KS5iaW5kKHRoaXMp
OwoKICAgICRzdXBlcih1cmwsIG9wdGlvbnMpOwogIH0sCgogIHVwZGF0ZUNvbnRl
bnQ6IGZ1bmN0aW9uKHJlc3BvbnNlVGV4dCkgewogICAgdmFyIHJlY2VpdmVyID0g
dGhpcy5jb250YWluZXJbdGhpcy5zdWNjZXNzKCkgPyAnc3VjY2VzcycgOiAnZmFp
bHVyZSddLAogICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgogICAgaWYg
KCFvcHRpb25zLmV2YWxTY3JpcHRzKSByZXNwb25zZVRleHQgPSByZXNwb25zZVRl
eHQuc3RyaXBTY3JpcHRzKCk7CgogICAgaWYgKHJlY2VpdmVyID0gJChyZWNlaXZl
cikpIHsKICAgICAgaWYgKG9wdGlvbnMuaW5zZXJ0aW9uKSB7CiAgICAgICAgaWYg
KE9iamVjdC5pc1N0cmluZyhvcHRpb25zLmluc2VydGlvbikpIHsKICAgICAgICAg
IHZhciBpbnNlcnRpb24gPSB7IH07IGluc2VydGlvbltvcHRpb25zLmluc2VydGlv
bl0gPSByZXNwb25zZVRleHQ7CiAgICAgICAgICByZWNlaXZlci5pbnNlcnQoaW5z
ZXJ0aW9uKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBvcHRpb25zLmluc2VydGlv
bihyZWNlaXZlciwgcmVzcG9uc2VUZXh0KTsKICAgICAgfQogICAgICBlbHNlIHJl
Y2VpdmVyLnVwZGF0ZShyZXNwb25zZVRleHQpOwogICAgfQogIH0KfSk7CgpBamF4
LlBlcmlvZGljYWxVcGRhdGVyID0gQ2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewog
IGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgY29udGFpbmVyLCB1cmwsIG9w
dGlvbnMpIHsKICAgICRzdXBlcihvcHRpb25zKTsKICAgIHRoaXMub25Db21wbGV0
ZSA9IHRoaXMub3B0aW9ucy5vbkNvbXBsZXRlOwoKICAgIHRoaXMuZnJlcXVlbmN5
ID0gKHRoaXMub3B0aW9ucy5mcmVxdWVuY3kgfHwgMik7CiAgICB0aGlzLmRlY2F5
ID0gKHRoaXMub3B0aW9ucy5kZWNheSB8fCAxKTsKCiAgICB0aGlzLnVwZGF0ZXIg
PSB7IH07CiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgIHRoaXMu
dXJsID0gdXJsOwoKICAgIHRoaXMuc3RhcnQoKTsKICB9LAoKICBzdGFydDogZnVu
Y3Rpb24oKSB7CiAgICB0aGlzLm9wdGlvbnMub25Db21wbGV0ZSA9IHRoaXMudXBk
YXRlQ29tcGxldGUuYmluZCh0aGlzKTsKICAgIHRoaXMub25UaW1lckV2ZW50KCk7
CiAgfSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnVwZGF0ZXIub3B0
aW9ucy5vbkNvbXBsZXRlID0gdW5kZWZpbmVkOwogICAgY2xlYXJUaW1lb3V0KHRo
aXMudGltZXIpOwogICAgKHRoaXMub25Db21wbGV0ZSB8fCBQcm90b3R5cGUuZW1w
dHlGdW5jdGlvbikuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICB9LAoKICB1cGRh
dGVDb21wbGV0ZTogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgIGlmICh0aGlzLm9w
dGlvbnMuZGVjYXkpIHsKICAgICAgdGhpcy5kZWNheSA9IChyZXNwb25zZS5yZXNw
b25zZVRleHQgPT0gdGhpcy5sYXN0VGV4dCA/CiAgICAgICAgdGhpcy5kZWNheSAq
IHRoaXMub3B0aW9ucy5kZWNheSA6IDEpOwoKICAgICAgdGhpcy5sYXN0VGV4dCA9
IHJlc3BvbnNlLnJlc3BvbnNlVGV4dDsKICAgIH0KICAgIHRoaXMudGltZXIgPSB0
aGlzLm9uVGltZXJFdmVudC5iaW5kKHRoaXMpLmRlbGF5KHRoaXMuZGVjYXkgKiB0
aGlzLmZyZXF1ZW5jeSk7CiAgfSwKCiAgb25UaW1lckV2ZW50OiBmdW5jdGlvbigp
IHsKICAgIHRoaXMudXBkYXRlciA9IG5ldyBBamF4LlVwZGF0ZXIodGhpcy5jb250
YWluZXIsIHRoaXMudXJsLCB0aGlzLm9wdGlvbnMpOwogIH0KfSk7CmZ1bmN0aW9u
ICQoZWxlbWVudCkgewogIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgewogICAg
Zm9yICh2YXIgaSA9IDAsIGVsZW1lbnRzID0gW10sIGxlbmd0aCA9IGFyZ3VtZW50
cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgZWxlbWVudHMucHVzaCgk
KGFyZ3VtZW50c1tpXSkpOwogICAgcmV0dXJuIGVsZW1lbnRzOwogIH0KICBpZiAo
T2JqZWN0LmlzU3RyaW5nKGVsZW1lbnQpKQogICAgZWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpOwogIHJldHVybiBFbGVtZW50LmV4dGVu
ZChlbGVtZW50KTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBh
dGgpIHsKICBkb2N1bWVudC5fZ2V0RWxlbWVudHNCeVhQYXRoID0gZnVuY3Rpb24o
ZXhwcmVzc2lvbiwgcGFyZW50RWxlbWVudCkgewogICAgdmFyIHJlc3VsdHMgPSBb
XTsKICAgIHZhciBxdWVyeSA9IGRvY3VtZW50LmV2YWx1YXRlKGV4cHJlc3Npb24s
ICQocGFyZW50RWxlbWVudCkgfHwgZG9jdW1lbnQsCiAgICAgIG51bGwsIFhQYXRo
UmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxsKTsKICAgIGZv
ciAodmFyIGkgPSAwLCBsZW5ndGggPSBxdWVyeS5zbmFwc2hvdExlbmd0aDsgaSA8
IGxlbmd0aDsgaSsrKQogICAgICByZXN1bHRzLnB1c2goRWxlbWVudC5leHRlbmQo
cXVlcnkuc25hcHNob3RJdGVtKGkpKSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9
Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCmlmICghd2luZG93
Lk5vZGUpIHZhciBOb2RlID0geyB9OwoKaWYgKCFOb2RlLkVMRU1FTlRfTk9ERSkg
ewogIC8vIERPTSBsZXZlbCAyIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZwog
IE9iamVjdC5leHRlbmQoTm9kZSwgewogICAgRUxFTUVOVF9OT0RFOiAxLAogICAg
QVRUUklCVVRFX05PREU6IDIsCiAgICBURVhUX05PREU6IDMsCiAgICBDREFUQV9T
RUNUSU9OX05PREU6IDQsCiAgICBFTlRJVFlfUkVGRVJFTkNFX05PREU6IDUsCiAg
ICBFTlRJVFlfTk9ERTogNiwKICAgIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9E
RTogNywKICAgIENPTU1FTlRfTk9ERTogOCwKICAgIERPQ1VNRU5UX05PREU6IDks
CiAgICBET0NVTUVOVF9UWVBFX05PREU6IDEwLAogICAgRE9DVU1FTlRfRlJBR01F
TlRfTk9ERTogMTEsCiAgICBOT1RBVElPTl9OT0RFOiAxMgogIH0pOwp9CgooZnVu
Y3Rpb24oKSB7CiAgdmFyIGVsZW1lbnQgPSB0aGlzLkVsZW1lbnQ7CiAgdGhpcy5F
bGVtZW50ID0gZnVuY3Rpb24odGFnTmFtZSwgYXR0cmlidXRlcykgewogICAgYXR0
cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwgeyB9OwogICAgdGFnTmFtZSA9IHRhZ05h
bWUudG9Mb3dlckNhc2UoKTsKICAgIHZhciBjYWNoZSA9IEVsZW1lbnQuY2FjaGU7
CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUgJiYgYXR0cmlidXRlcy5uYW1l
KSB7CiAgICAgIHRhZ05hbWUgPSAnPCcgKyB0YWdOYW1lICsgJyBuYW1lPSInICsg
YXR0cmlidXRlcy5uYW1lICsgJyI+JzsKICAgICAgZGVsZXRlIGF0dHJpYnV0ZXMu
bmFtZTsKICAgICAgcmV0dXJuIEVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKSwgYXR0cmlidXRlcyk7CiAgICB9CiAg
ICBpZiAoIWNhY2hlW3RhZ05hbWVdKSBjYWNoZVt0YWdOYW1lXSA9IEVsZW1lbnQu
ZXh0ZW5kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSkpOwogICAgcmV0
dXJuIEVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoY2FjaGVbdGFnTmFtZV0uY2xvbmVO
b2RlKGZhbHNlKSwgYXR0cmlidXRlcyk7CiAgfTsKICBPYmplY3QuZXh0ZW5kKHRo
aXMuRWxlbWVudCwgZWxlbWVudCB8fCB7IH0pOwp9KS5jYWxsKHdpbmRvdyk7CgpF
bGVtZW50LmNhY2hlID0geyB9OwoKRWxlbWVudC5NZXRob2RzID0gewogIHZpc2li
bGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLnN0
eWxlLmRpc3BsYXkgIT0gJ25vbmUnOwogIH0sCgogIHRvZ2dsZTogZnVuY3Rpb24o
ZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBFbGVtZW50
W0VsZW1lbnQudmlzaWJsZShlbGVtZW50KSA/ICdoaWRlJyA6ICdzaG93J10oZWxl
bWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBoaWRlOiBmdW5jdGlv
bihlbGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnbm9u
ZSc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBzaG93OiBmdW5jdGlvbihl
bGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAg
IHJldHVybiBlbGVtZW50OwogIH0sCgogIHJlbW92ZTogZnVuY3Rpb24oZWxlbWVu
dCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsK
ICB9LAoKICB1cGRhdGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAg
IGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGNvbnRlbnQgJiYgY29udGVu
dC50b0VsZW1lbnQpIGNvbnRlbnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAg
aWYgKE9iamVjdC5pc0VsZW1lbnQoY29udGVudCkpIHJldHVybiBlbGVtZW50LnVw
ZGF0ZSgpLmluc2VydChjb250ZW50KTsKICAgIGNvbnRlbnQgPSBPYmplY3QudG9I
VE1MKGNvbnRlbnQpOwogICAgZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0
cmlwU2NyaXB0cygpOwogICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRl
bnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZXBsYWNl
OiBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0gJChl
bGVtZW50KTsKICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBj
b250ZW50ID0gY29udGVudC50b0VsZW1lbnQoKTsKICAgIGVsc2UgaWYgKCFPYmpl
Y3QuaXNFbGVtZW50KGNvbnRlbnQpKSB7CiAgICAgIGNvbnRlbnQgPSBPYmplY3Qu
dG9IVE1MKGNvbnRlbnQpOwogICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50Lm93bmVy
RG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShl
bGVtZW50KTsKICAgICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQp
LmRlZmVyKCk7CiAgICAgIGNvbnRlbnQgPSByYW5nZS5jcmVhdGVDb250ZXh0dWFs
RnJhZ21lbnQoY29udGVudC5zdHJpcFNjcmlwdHMoKSk7CiAgICB9CiAgICBlbGVt
ZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwog
ICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgaW5zZXJ0OiBmdW5jdGlvbihlbGVt
ZW50LCBpbnNlcnRpb25zKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKCiAg
ICBpZiAoT2JqZWN0LmlzU3RyaW5nKGluc2VydGlvbnMpIHx8IE9iamVjdC5pc051
bWJlcihpbnNlcnRpb25zKSB8fAogICAgICAgIE9iamVjdC5pc0VsZW1lbnQoaW5z
ZXJ0aW9ucykgfHwgKGluc2VydGlvbnMgJiYgKGluc2VydGlvbnMudG9FbGVtZW50
IHx8IGluc2VydGlvbnMudG9IVE1MKSkpCiAgICAgICAgICBpbnNlcnRpb25zID0g
e2JvdHRvbTppbnNlcnRpb25zfTsKCiAgICB2YXIgY29udGVudCwgaW5zZXJ0LCB0
YWdOYW1lLCBjaGlsZE5vZGVzOwoKICAgIGZvciAodmFyIHBvc2l0aW9uIGluIGlu
c2VydGlvbnMpIHsKICAgICAgY29udGVudCAgPSBpbnNlcnRpb25zW3Bvc2l0aW9u
XTsKICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi50b0xvd2VyQ2FzZSgpOwogICAg
ICBpbnNlcnQgPSBFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnNbcG9zaXRp
b25dOwoKICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNv
bnRlbnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAgICBpZiAoT2JqZWN0Lmlz
RWxlbWVudChjb250ZW50KSkgewogICAgICAgIGluc2VydChlbGVtZW50LCBjb250
ZW50KTsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgY29udGVudCA9
IE9iamVjdC50b0hUTUwoY29udGVudCk7CgogICAgICB0YWdOYW1lID0gKChwb3Np
dGlvbiA9PSAnYmVmb3JlJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKQogICAgICAg
ID8gZWxlbWVudC5wYXJlbnROb2RlIDogZWxlbWVudCkudGFnTmFtZS50b1VwcGVy
Q2FzZSgpOwoKICAgICAgY2hpbGROb2RlcyA9IEVsZW1lbnQuX2dldENvbnRlbnRG
cm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0
cygpKTsKCiAgICAgIGlmIChwb3NpdGlvbiA9PSAndG9wJyB8fCBwb3NpdGlvbiA9
PSAnYWZ0ZXInKSBjaGlsZE5vZGVzLnJldmVyc2UoKTsKICAgICAgY2hpbGROb2Rl
cy5lYWNoKGluc2VydC5jdXJyeShlbGVtZW50KSk7CgogICAgICBjb250ZW50LmV2
YWxTY3JpcHRzLmJpbmQoY29udGVudCkuZGVmZXIoKTsKICAgIH0KCiAgICByZXR1
cm4gZWxlbWVudDsKICB9LAoKICB3cmFwOiBmdW5jdGlvbihlbGVtZW50LCB3cmFw
cGVyLCBhdHRyaWJ1dGVzKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAg
IGlmIChPYmplY3QuaXNFbGVtZW50KHdyYXBwZXIpKQogICAgICAkKHdyYXBwZXIp
LndyaXRlQXR0cmlidXRlKGF0dHJpYnV0ZXMgfHwgeyB9KTsKICAgIGVsc2UgaWYg
KE9iamVjdC5pc1N0cmluZyh3cmFwcGVyKSkgd3JhcHBlciA9IG5ldyBFbGVtZW50
KHdyYXBwZXIsIGF0dHJpYnV0ZXMpOwogICAgZWxzZSB3cmFwcGVyID0gbmV3IEVs
ZW1lbnQoJ2RpdicsIHdyYXBwZXIpOwogICAgaWYgKGVsZW1lbnQucGFyZW50Tm9k
ZSkKICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwcGVy
LCBlbGVtZW50KTsKICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAg
ICByZXR1cm4gd3JhcHBlcjsKICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbihlbGVt
ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciByZXN1bHQg
PSAnPCcgKyBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgICRIKHsn
aWQnOiAnaWQnLCAnY2xhc3NOYW1lJzogJ2NsYXNzJ30pLmVhY2goZnVuY3Rpb24o
cGFpcikgewogICAgICB2YXIgcHJvcGVydHkgPSBwYWlyLmZpcnN0KCksIGF0dHJp
YnV0ZSA9IHBhaXIubGFzdCgpOwogICAgICB2YXIgdmFsdWUgPSAoZWxlbWVudFtw
cm9wZXJ0eV0gfHwgJycpLnRvU3RyaW5nKCk7CiAgICAgIGlmICh2YWx1ZSkgcmVz
dWx0ICs9ICcgJyArIGF0dHJpYnV0ZSArICc9JyArIHZhbHVlLmluc3BlY3QodHJ1
ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQgKyAnPic7CiAgfSwKCiAgcmVj
dXJzaXZlbHlDb2xsZWN0OiBmdW5jdGlvbihlbGVtZW50LCBwcm9wZXJ0eSkgewog
ICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgZWxlbWVudHMgPSBbXTsK
ICAgIHdoaWxlIChlbGVtZW50ID0gZWxlbWVudFtwcm9wZXJ0eV0pCiAgICAgIGlm
IChlbGVtZW50Lm5vZGVUeXBlID09IDEpCiAgICAgICAgZWxlbWVudHMucHVzaChF
bGVtZW50LmV4dGVuZChlbGVtZW50KSk7CiAgICByZXR1cm4gZWxlbWVudHM7CiAg
fSwKCiAgYW5jZXN0b3JzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4g
JChlbGVtZW50KS5yZWN1cnNpdmVseUNvbGxlY3QoJ3BhcmVudE5vZGUnKTsKICB9
LAoKICBkZXNjZW5kYW50czogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJu
ICQoZWxlbWVudCkuc2VsZWN0KCIqIik7CiAgfSwKCiAgZmlyc3REZXNjZW5kYW50
OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KS5m
aXJzdENoaWxkOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlw
ZSAhPSAxKSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIHJldHVy
biAkKGVsZW1lbnQpOwogIH0sCgogIGltbWVkaWF0ZURlc2NlbmRhbnRzOiBmdW5j
dGlvbihlbGVtZW50KSB7CiAgICBpZiAoIShlbGVtZW50ID0gJChlbGVtZW50KS5m
aXJzdENoaWxkKSkgcmV0dXJuIFtdOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxl
bWVudC5ub2RlVHlwZSAhPSAxKSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGlu
ZzsKICAgIGlmIChlbGVtZW50KSByZXR1cm4gW2VsZW1lbnRdLmNvbmNhdCgkKGVs
ZW1lbnQpLm5leHRTaWJsaW5ncygpKTsKICAgIHJldHVybiBbXTsKICB9LAoKICBw
cmV2aW91c1NpYmxpbmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4g
JChlbGVtZW50KS5yZWN1cnNpdmVseUNvbGxlY3QoJ3ByZXZpb3VzU2libGluZycp
OwogIH0sCgogIG5leHRTaWJsaW5nczogZnVuY3Rpb24oZWxlbWVudCkgewogICAg
cmV0dXJuICQoZWxlbWVudCkucmVjdXJzaXZlbHlDb2xsZWN0KCduZXh0U2libGlu
ZycpOwogIH0sCgogIHNpYmxpbmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBl
bGVtZW50ID0gJChlbGVtZW50KTsKICAgIHJldHVybiBlbGVtZW50LnByZXZpb3Vz
U2libGluZ3MoKS5yZXZlcnNlKCkuY29uY2F0KGVsZW1lbnQubmV4dFNpYmxpbmdz
KCkpOwogIH0sCgogIG1hdGNoOiBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3Rvcikg
ewogICAgaWYgKE9iamVjdC5pc1N0cmluZyhzZWxlY3RvcikpCiAgICAgIHNlbGVj
dG9yID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIHJldHVybiBzZWxlY3Rv
ci5tYXRjaCgkKGVsZW1lbnQpKTsKICB9LAoKICB1cDogZnVuY3Rpb24oZWxlbWVu
dCwgZXhwcmVzc2lvbiwgaW5kZXgpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQp
OwogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgcmV0dXJuICQoZWxlbWVu
dC5wYXJlbnROb2RlKTsKICAgIHZhciBhbmNlc3RvcnMgPSBlbGVtZW50LmFuY2Vz
dG9ycygpOwogICAgcmV0dXJuIE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSA/
IGFuY2VzdG9yc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVt
ZW50KGFuY2VzdG9ycywgZXhwcmVzc2lvbiwgaW5kZXgpOwogIH0sCgogIGRvd246
IGZ1bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb24sIGluZGV4KSB7CiAgICBlbGVt
ZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEp
IHJldHVybiBlbGVtZW50LmZpcnN0RGVzY2VuZGFudCgpOwogICAgcmV0dXJuIE9i
amVjdC5pc051bWJlcihleHByZXNzaW9uKSA/IGVsZW1lbnQuZGVzY2VuZGFudHMo
KVtleHByZXNzaW9uXSA6CiAgICAgIGVsZW1lbnQuc2VsZWN0KGV4cHJlc3Npb24p
W2luZGV4IHx8IDBdOwogIH0sCgogIHByZXZpb3VzOiBmdW5jdGlvbihlbGVtZW50
LCBleHByZXNzaW9uLCBpbmRleCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7
CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rv
ci5oYW5kbGVycy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKGVsZW1lbnQpKTsKICAg
IHZhciBwcmV2aW91c1NpYmxpbmdzID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmdz
KCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24pID8gcHJl
dmlvdXNTaWJsaW5nc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRF
bGVtZW50KHByZXZpb3VzU2libGluZ3MsIGV4cHJlc3Npb24sIGluZGV4KTsKICB9
LAoKICBuZXh0OiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBpbmRleCkg
ewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVycy5uZXh0RWxlbWVu
dFNpYmxpbmcoZWxlbWVudCkpOwogICAgdmFyIG5leHRTaWJsaW5ncyA9IGVsZW1l
bnQubmV4dFNpYmxpbmdzKCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4
cHJlc3Npb24pID8gbmV4dFNpYmxpbmdzW2V4cHJlc3Npb25dIDoKICAgICAgU2Vs
ZWN0b3IuZmluZEVsZW1lbnQobmV4dFNpYmxpbmdzLCBleHByZXNzaW9uLCBpbmRl
eCk7CiAgfSwKCiAgc2VsZWN0OiBmdW5jdGlvbigpIHsKICAgIHZhciBhcmdzID0g
JEEoYXJndW1lbnRzKSwgZWxlbWVudCA9ICQoYXJncy5zaGlmdCgpKTsKICAgIHJl
dHVybiBTZWxlY3Rvci5maW5kQ2hpbGRFbGVtZW50cyhlbGVtZW50LCBhcmdzKTsK
ICB9LAoKICBhZGphY2VudDogZnVuY3Rpb24oKSB7CiAgICB2YXIgYXJncyA9ICRB
KGFyZ3VtZW50cyksIGVsZW1lbnQgPSAkKGFyZ3Muc2hpZnQoKSk7CiAgICByZXR1
cm4gU2VsZWN0b3IuZmluZENoaWxkRWxlbWVudHMoZWxlbWVudC5wYXJlbnROb2Rl
LCBhcmdzKS53aXRob3V0KGVsZW1lbnQpOwogIH0sCgogIGlkZW50aWZ5OiBmdW5j
dGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZh
ciBpZCA9IGVsZW1lbnQucmVhZEF0dHJpYnV0ZSgnaWQnKSwgc2VsZiA9IGFyZ3Vt
ZW50cy5jYWxsZWU7CiAgICBpZiAoaWQpIHJldHVybiBpZDsKICAgIGRvIHsgaWQg
PSAnYW5vbnltb3VzX2VsZW1lbnRfJyArIHNlbGYuY291bnRlcisrIH0gd2hpbGUg
KCQoaWQpKTsKICAgIGVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoJ2lkJywgaWQpOwog
ICAgcmV0dXJuIGlkOwogIH0sCgogIHJlYWRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGVs
ZW1lbnQsIG5hbWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYg
KFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgICAgIHZhciB0ID0gRWxlbWVudC5f
YXR0cmlidXRlVHJhbnNsYXRpb25zLnJlYWQ7CiAgICAgIGlmICh0LnZhbHVlc1tu
YW1lXSkgcmV0dXJuIHQudmFsdWVzW25hbWVdKGVsZW1lbnQsIG5hbWUpOwogICAg
ICBpZiAodC5uYW1lc1tuYW1lXSkgbmFtZSA9IHQubmFtZXNbbmFtZV07CiAgICAg
IGlmIChuYW1lLmluY2x1ZGUoJzonKSkgewogICAgICAgIHJldHVybiAoIWVsZW1l
bnQuYXR0cmlidXRlcyB8fCAhZWxlbWVudC5hdHRyaWJ1dGVzW25hbWVdKSA/IG51
bGwgOgogICAgICAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0udmFsdWU7CiAg
ICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1l
KTsKICB9LAoKICB3cml0ZUF0dHJpYnV0ZTogZnVuY3Rpb24oZWxlbWVudCwgbmFt
ZSwgdmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGF0
dHJpYnV0ZXMgPSB7IH0sIHQgPSBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlv
bnMud3JpdGU7CgogICAgaWYgKHR5cGVvZiBuYW1lID09ICdvYmplY3QnKSBhdHRy
aWJ1dGVzID0gbmFtZTsKICAgIGVsc2UgYXR0cmlidXRlc1tuYW1lXSA9IE9iamVj
dC5pc1VuZGVmaW5lZCh2YWx1ZSkgPyB0cnVlIDogdmFsdWU7CgogICAgZm9yICh2
YXIgYXR0ciBpbiBhdHRyaWJ1dGVzKSB7CiAgICAgIG5hbWUgPSB0Lm5hbWVzW2F0
dHJdIHx8IGF0dHI7CiAgICAgIHZhbHVlID0gYXR0cmlidXRlc1thdHRyXTsKICAg
ICAgaWYgKHQudmFsdWVzW2F0dHJdKSBuYW1lID0gdC52YWx1ZXNbYXR0cl0oZWxl
bWVudCwgdmFsdWUpOwogICAgICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVl
ID09PSBudWxsKQogICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUp
OwogICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gdHJ1ZSkKICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZShuYW1lLCBuYW1lKTsKICAgICAgZWxzZSBlbGVtZW50LnNl
dEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICB9CiAgICByZXR1cm4gZWxlbWVu
dDsKICB9LAoKICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJl
dHVybiAkKGVsZW1lbnQpLmdldERpbWVuc2lvbnMoKS5oZWlnaHQ7CiAgfSwKCiAg
Z2V0V2lkdGg6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1l
bnQpLmdldERpbWVuc2lvbnMoKS53aWR0aDsKICB9LAoKICBjbGFzc05hbWVzOiBm
dW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gbmV3IEVsZW1lbnQuQ2xhc3NO
YW1lcyhlbGVtZW50KTsKICB9LAoKICBoYXNDbGFzc05hbWU6IGZ1bmN0aW9uKGVs
ZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVu
dCkpKSByZXR1cm47CiAgICB2YXIgZWxlbWVudENsYXNzTmFtZSA9IGVsZW1lbnQu
Y2xhc3NOYW1lOwogICAgcmV0dXJuIChlbGVtZW50Q2xhc3NOYW1lLmxlbmd0aCA+
IDAgJiYgKGVsZW1lbnRDbGFzc05hbWUgPT0gY2xhc3NOYW1lIHx8CiAgICAgIG5l
dyBSZWdFeHAoIihefFxccykiICsgY2xhc3NOYW1lICsgIihcXHN8JCkiKS50ZXN0
KGVsZW1lbnRDbGFzc05hbWUpKSk7CiAgfSwKCiAgYWRkQ2xhc3NOYW1lOiBmdW5j
dGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGlmICghKGVsZW1lbnQgPSAk
KGVsZW1lbnQpKSkgcmV0dXJuOwogICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzTmFt
ZShjbGFzc05hbWUpKQogICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAoZWxlbWVu
dC5jbGFzc05hbWUgPyAnICcgOiAnJykgKyBjbGFzc05hbWU7CiAgICByZXR1cm4g
ZWxlbWVudDsKICB9LAoKICByZW1vdmVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1l
bnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkp
KSByZXR1cm47CiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NO
YW1lLnJlcGxhY2UoCiAgICAgIG5ldyBSZWdFeHAoIihefFxccyspIiArIGNsYXNz
TmFtZSArICIoXFxzK3wkKSIpLCAnICcpLnN0cmlwKCk7CiAgICByZXR1cm4gZWxl
bWVudDsKICB9LAoKICB0b2dnbGVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQs
IGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSBy
ZXR1cm47CiAgICByZXR1cm4gZWxlbWVudFtlbGVtZW50Lmhhc0NsYXNzTmFtZShj
bGFzc05hbWUpID8KICAgICAgJ3JlbW92ZUNsYXNzTmFtZScgOiAnYWRkQ2xhc3NO
YW1lJ10oY2xhc3NOYW1lKTsKICB9LAoKICAvLyByZW1vdmVzIHdoaXRlc3BhY2Ut
b25seSB0ZXh0IG5vZGUgY2hpbGRyZW4KICBjbGVhbldoaXRlc3BhY2U6IGZ1bmN0
aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFy
IG5vZGUgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7CiAgICB3aGlsZSAobm9kZSkgewog
ICAgICB2YXIgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICBpZiAo
bm9kZS5ub2RlVHlwZSA9PSAzICYmICEvXFMvLnRlc3Qobm9kZS5ub2RlVmFsdWUp
KQogICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgIG5vZGUg
PSBuZXh0Tm9kZTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVt
cHR5OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5p
bm5lckhUTUwuYmxhbmsoKTsKICB9LAoKICBkZXNjZW5kYW50T2Y6IGZ1bmN0aW9u
KGVsZW1lbnQsIGFuY2VzdG9yKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KSwg
YW5jZXN0b3IgPSAkKGFuY2VzdG9yKTsKICAgIHZhciBvcmlnaW5hbEFuY2VzdG9y
ID0gYW5jZXN0b3I7CgogICAgaWYgKGVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9z
aXRpb24pCiAgICAgIHJldHVybiAoZWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbihhbmNlc3RvcikgJiA4KSA9PT0gODsKCiAgICBpZiAoZWxlbWVudC5zb3Vy
Y2VJbmRleCAmJiAhUHJvdG90eXBlLkJyb3dzZXIuT3BlcmEpIHsKICAgICAgdmFy
IGUgPSBlbGVtZW50LnNvdXJjZUluZGV4LCBhID0gYW5jZXN0b3Iuc291cmNlSW5k
ZXgsCiAgICAgICBuZXh0QW5jZXN0b3IgPSBhbmNlc3Rvci5uZXh0U2libGluZzsK
ICAgICAgaWYgKCFuZXh0QW5jZXN0b3IpIHsKICAgICAgICBkbyB7IGFuY2VzdG9y
ID0gYW5jZXN0b3IucGFyZW50Tm9kZTsgfQogICAgICAgIHdoaWxlICghKG5leHRB
bmNlc3RvciA9IGFuY2VzdG9yLm5leHRTaWJsaW5nKSAmJiBhbmNlc3Rvci5wYXJl
bnROb2RlKTsKICAgICAgfQogICAgICBpZiAobmV4dEFuY2VzdG9yICYmIG5leHRB
bmNlc3Rvci5zb3VyY2VJbmRleCkKICAgICAgIHJldHVybiAoZSA+IGEgJiYgZSA8
IG5leHRBbmNlc3Rvci5zb3VyY2VJbmRleCk7CiAgICB9CgogICAgd2hpbGUgKGVs
ZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpCiAgICAgIGlmIChlbGVtZW50ID09
IG9yaWdpbmFsQW5jZXN0b3IpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNl
OwogIH0sCgogIHNjcm9sbFRvOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVt
ZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBwb3MgPSBlbGVtZW50LmN1bXVsYXRp
dmVPZmZzZXQoKTsKICAgIHdpbmRvdy5zY3JvbGxUbyhwb3NbMF0sIHBvc1sxXSk7
CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBnZXRTdHlsZTogZnVuY3Rpb24o
ZWxlbWVudCwgc3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAg
c3R5bGUgPSBzdHlsZSA9PSAnZmxvYXQnID8gJ2Nzc0Zsb2F0JyA6IHN0eWxlLmNh
bWVsaXplKCk7CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LnN0eWxlW3N0eWxlXTsK
ICAgIGlmICghdmFsdWUpIHsKICAgICAgdmFyIGNzcyA9IGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCk7CiAgICAgIHZh
bHVlID0gY3NzID8gY3NzW3N0eWxlXSA6IG51bGw7CiAgICB9CiAgICBpZiAoc3R5
bGUgPT0gJ29wYWNpdHknKSByZXR1cm4gdmFsdWUgPyBwYXJzZUZsb2F0KHZhbHVl
KSA6IDEuMDsKICAgIHJldHVybiB2YWx1ZSA9PSAnYXV0bycgPyBudWxsIDogdmFs
dWU7CiAgfSwKCiAgZ2V0T3BhY2l0eTogZnVuY3Rpb24oZWxlbWVudCkgewogICAg
cmV0dXJuICQoZWxlbWVudCkuZ2V0U3R5bGUoJ29wYWNpdHknKTsKICB9LAoKICBz
ZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGVzKSB7CiAgICBlbGVtZW50
ID0gJChlbGVtZW50KTsKICAgIHZhciBlbGVtZW50U3R5bGUgPSBlbGVtZW50LnN0
eWxlLCBtYXRjaDsKICAgIGlmIChPYmplY3QuaXNTdHJpbmcoc3R5bGVzKSkgewog
ICAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgKz0gJzsnICsgc3R5bGVzOwogICAg
ICByZXR1cm4gc3R5bGVzLmluY2x1ZGUoJ29wYWNpdHknKSA/CiAgICAgICAgZWxl
bWVudC5zZXRPcGFjaXR5KHN0eWxlcy5tYXRjaCgvb3BhY2l0eTpccyooXGQ/XC4/
XGQqKS8pWzFdKSA6IGVsZW1lbnQ7CiAgICB9CiAgICBmb3IgKHZhciBwcm9wZXJ0
eSBpbiBzdHlsZXMpCiAgICAgIGlmIChwcm9wZXJ0eSA9PSAnb3BhY2l0eScpIGVs
ZW1lbnQuc2V0T3BhY2l0eShzdHlsZXNbcHJvcGVydHldKTsKICAgICAgZWxzZQog
ICAgICAgIGVsZW1lbnRTdHlsZVsocHJvcGVydHkgPT0gJ2Zsb2F0JyB8fCBwcm9w
ZXJ0eSA9PSAnY3NzRmxvYXQnKSA/CiAgICAgICAgICAoT2JqZWN0LmlzVW5kZWZp
bmVkKGVsZW1lbnRTdHlsZS5zdHlsZUZsb2F0KSA/ICdjc3NGbG9hdCcgOiAnc3R5
bGVGbG9hdCcpIDoKICAgICAgICAgICAgcHJvcGVydHldID0gc3R5bGVzW3Byb3Bl
cnR5XTsKCiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBzZXRPcGFjaXR5OiBm
dW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVu
dCk7CiAgICBlbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAodmFsdWUgPT0gMSB8fCB2
YWx1ZSA9PT0gJycpID8gJycgOgogICAgICAodmFsdWUgPCAwLjAwMDAxKSA/IDAg
OiB2YWx1ZTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGdldERpbWVuc2lv
bnM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQp
OwogICAgdmFyIGRpc3BsYXkgPSAkKGVsZW1lbnQpLmdldFN0eWxlKCdkaXNwbGF5
Jyk7CiAgICBpZiAoZGlzcGxheSAhPSAnbm9uZScgJiYgZGlzcGxheSAhPSBudWxs
KSAvLyBTYWZhcmkgYnVnCiAgICAgIHJldHVybiB7d2lkdGg6IGVsZW1lbnQub2Zm
c2V0V2lkdGgsIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHR9OwoKICAgIC8v
IEFsbCAqV2lkdGggYW5kICpIZWlnaHQgcHJvcGVydGllcyBnaXZlIDAgb24gZWxl
bWVudHMgd2l0aCBkaXNwbGF5IG5vbmUsCiAgICAvLyBzbyBlbmFibGUgdGhlIGVs
ZW1lbnQgdGVtcG9yYXJpbHkKICAgIHZhciBlbHMgPSBlbGVtZW50LnN0eWxlOwog
ICAgdmFyIG9yaWdpbmFsVmlzaWJpbGl0eSA9IGVscy52aXNpYmlsaXR5OwogICAg
dmFyIG9yaWdpbmFsUG9zaXRpb24gPSBlbHMucG9zaXRpb247CiAgICB2YXIgb3Jp
Z2luYWxEaXNwbGF5ID0gZWxzLmRpc3BsYXk7CiAgICBlbHMudmlzaWJpbGl0eSA9
ICdoaWRkZW4nOwogICAgZWxzLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKICAgIGVs
cy5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIHZhciBvcmlnaW5hbFdpZHRoID0gZWxl
bWVudC5jbGllbnRXaWR0aDsKICAgIHZhciBvcmlnaW5hbEhlaWdodCA9IGVsZW1l
bnQuY2xpZW50SGVpZ2h0OwogICAgZWxzLmRpc3BsYXkgPSBvcmlnaW5hbERpc3Bs
YXk7CiAgICBlbHMucG9zaXRpb24gPSBvcmlnaW5hbFBvc2l0aW9uOwogICAgZWxz
LnZpc2liaWxpdHkgPSBvcmlnaW5hbFZpc2liaWxpdHk7CiAgICByZXR1cm4ge3dp
ZHRoOiBvcmlnaW5hbFdpZHRoLCBoZWlnaHQ6IG9yaWdpbmFsSGVpZ2h0fTsKICB9
LAoKICBtYWtlUG9zaXRpb25lZDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxl
bWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgcG9zID0gRWxlbWVudC5nZXRTdHls
ZShlbGVtZW50LCAncG9zaXRpb24nKTsKICAgIGlmIChwb3MgPT0gJ3N0YXRpYycg
fHwgIXBvcykgewogICAgICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHRydWU7
CiAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOwogICAg
ICAvLyBPcGVyYSByZXR1cm5zIHRoZSBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIHBv
c2l0aW9uaW5nIGNvbnRleHQsIHdoZW4gYW4KICAgICAgLy8gZWxlbWVudCBpcyBw
b3NpdGlvbiByZWxhdGl2ZSBidXQgdG9wIGFuZCBsZWZ0IGhhdmUgbm90IGJlZW4g
ZGVmaW5lZAogICAgICBpZiAod2luZG93Lm9wZXJhKSB7CiAgICAgICAgZWxlbWVu
dC5zdHlsZS50b3AgPSAwOwogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IDA7
CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHVuZG9Q
b3NpdGlvbmVkOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChl
bGVtZW50KTsKICAgIGlmIChlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCkgewogICAg
ICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHVuZGVmaW5lZDsKICAgICAgZWxl
bWVudC5zdHlsZS5wb3NpdGlvbiA9CiAgICAgICAgZWxlbWVudC5zdHlsZS50b3Ag
PQogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9CiAgICAgICAgZWxlbWVudC5z
dHlsZS5ib3R0b20gPQogICAgICAgIGVsZW1lbnQuc3R5bGUucmlnaHQgPSAnJzsK
ICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIG1ha2VDbGlwcGluZzog
ZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg
ICBpZiAoZWxlbWVudC5fb3ZlcmZsb3cpIHJldHVybiBlbGVtZW50OwogICAgZWxl
bWVudC5fb3ZlcmZsb3cgPSBFbGVtZW50LmdldFN0eWxlKGVsZW1lbnQsICdvdmVy
ZmxvdycpIHx8ICdhdXRvJzsKICAgIGlmIChlbGVtZW50Ll9vdmVyZmxvdyAhPT0g
J2hpZGRlbicpCiAgICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVu
JzsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHVuZG9DbGlwcGluZzogZnVu
Y3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBp
ZiAoIWVsZW1lbnQuX292ZXJmbG93KSByZXR1cm4gZWxlbWVudDsKICAgIGVsZW1l
bnQuc3R5bGUub3ZlcmZsb3cgPSBlbGVtZW50Ll9vdmVyZmxvdyA9PSAnYXV0bycg
PyAnJyA6IGVsZW1lbnQuX292ZXJmbG93OwogICAgZWxlbWVudC5fb3ZlcmZsb3cg
PSBudWxsOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgY3VtdWxhdGl2ZU9m
ZnNldDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHZhbHVlVCA9IDAsIHZh
bHVlTCA9IDA7CiAgICBkbyB7CiAgICAgIHZhbHVlVCArPSBlbGVtZW50Lm9mZnNl
dFRvcCAgfHwgMDsKICAgICAgdmFsdWVMICs9IGVsZW1lbnQub2Zmc2V0TGVmdCB8
fCAwOwogICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CiAgICB9
IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZz
ZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIHBvc2l0aW9uZWRPZmZzZXQ6IGZ1
bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAwLCB2YWx1ZUwgPSAw
OwogICAgZG8gewogICAgICB2YWx1ZVQgKz0gZWxlbWVudC5vZmZzZXRUb3AgIHx8
IDA7CiAgICAgIHZhbHVlTCArPSBlbGVtZW50Lm9mZnNldExlZnQgfHwgMDsKICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgICBpZiAoZWxl
bWVudCkgewogICAgICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT0gJ0JPRFknKSBi
cmVhazsKICAgICAgICB2YXIgcCA9IEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVudCwg
J3Bvc2l0aW9uJyk7CiAgICAgICAgaWYgKHAgIT09ICdzdGF0aWMnKSBicmVhazsK
ICAgICAgfQogICAgfSB3aGlsZSAoZWxlbWVudCk7CiAgICByZXR1cm4gRWxlbWVu
dC5fcmV0dXJuT2Zmc2V0KHZhbHVlTCwgdmFsdWVUKTsKICB9LAoKICBhYnNvbHV0
aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50
KTsKICAgIGlmIChlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpID09ICdhYnNv
bHV0ZScpIHJldHVybjsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8gVG8g
YmUgZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQuCgog
ICAgdmFyIG9mZnNldHMgPSBlbGVtZW50LnBvc2l0aW9uZWRPZmZzZXQoKTsKICAg
IHZhciB0b3AgICAgID0gb2Zmc2V0c1sxXTsKICAgIHZhciBsZWZ0ICAgID0gb2Zm
c2V0c1swXTsKICAgIHZhciB3aWR0aCAgID0gZWxlbWVudC5jbGllbnRXaWR0aDsK
ICAgIHZhciBoZWlnaHQgID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7CgogICAgZWxl
bWVudC5fb3JpZ2luYWxMZWZ0ICAgPSBsZWZ0IC0gcGFyc2VGbG9hdChlbGVtZW50
LnN0eWxlLmxlZnQgIHx8IDApOwogICAgZWxlbWVudC5fb3JpZ2luYWxUb3AgICAg
PSB0b3AgIC0gcGFyc2VGbG9hdChlbGVtZW50LnN0eWxlLnRvcCB8fCAwKTsKICAg
IGVsZW1lbnQuX29yaWdpbmFsV2lkdGggID0gZWxlbWVudC5zdHlsZS53aWR0aDsK
ICAgIGVsZW1lbnQuX29yaWdpbmFsSGVpZ2h0ID0gZWxlbWVudC5zdHlsZS5oZWln
aHQ7CgogICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CiAg
ICBlbGVtZW50LnN0eWxlLnRvcCAgICA9IHRvcCArICdweCc7CiAgICBlbGVtZW50
LnN0eWxlLmxlZnQgICA9IGxlZnQgKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS53
aWR0aCAgPSB3aWR0aCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9
IGhlaWdodCArICdweCc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZWxh
dGl2aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVt
ZW50KTsKICAgIGlmIChlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpID09ICdy
ZWxhdGl2ZScpIHJldHVybjsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8g
VG8gYmUgZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQu
CgogICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CiAgICB2
YXIgdG9wICA9IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS50b3AgIHx8IDApIC0g
KGVsZW1lbnQuX29yaWdpbmFsVG9wIHx8IDApOwogICAgdmFyIGxlZnQgPSBwYXJz
ZUZsb2F0KGVsZW1lbnQuc3R5bGUubGVmdCB8fCAwKSAtIChlbGVtZW50Ll9vcmln
aW5hbExlZnQgfHwgMCk7CgogICAgZWxlbWVudC5zdHlsZS50b3AgICAgPSB0b3Ag
KyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5sZWZ0ICAgPSBsZWZ0ICsgJ3B4JzsK
ICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gZWxlbWVudC5fb3JpZ2luYWxIZWln
aHQ7CiAgICBlbGVtZW50LnN0eWxlLndpZHRoICA9IGVsZW1lbnQuX29yaWdpbmFs
V2lkdGg7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBjdW11bGF0aXZlU2Ny
b2xsT2Zmc2V0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0g
MCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQu
c2Nyb2xsVG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5zY3JvbGxM
ZWZ0IHx8IDA7CiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CiAg
ICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5P
ZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIGdldE9mZnNldFBhcmVudDog
ZnVuY3Rpb24oZWxlbWVudCkgewogICAgaWYgKGVsZW1lbnQub2Zmc2V0UGFyZW50
KSByZXR1cm4gJChlbGVtZW50Lm9mZnNldFBhcmVudCk7CiAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5ib2R5KSByZXR1cm4gJChlbGVtZW50KTsKCiAgICB3aGls
ZSAoKGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpICYmIGVsZW1lbnQgIT0g
ZG9jdW1lbnQuYm9keSkKICAgICAgaWYgKEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVu
dCwgJ3Bvc2l0aW9uJykgIT0gJ3N0YXRpYycpCiAgICAgICAgcmV0dXJuICQoZWxl
bWVudCk7CgogICAgcmV0dXJuICQoZG9jdW1lbnQuYm9keSk7CiAgfSwKCiAgdmll
d3BvcnRPZmZzZXQ6IGZ1bmN0aW9uKGZvckVsZW1lbnQpIHsKICAgIHZhciB2YWx1
ZVQgPSAwLCB2YWx1ZUwgPSAwOwoKICAgIHZhciBlbGVtZW50ID0gZm9yRWxlbWVu
dDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8
fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRMZWZ0IHx8IDA7Cgog
ICAgICAvLyBTYWZhcmkgZml4CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVu
dCA9PSBkb2N1bWVudC5ib2R5ICYmCiAgICAgICAgRWxlbWVudC5nZXRTdHlsZShl
bGVtZW50LCAncG9zaXRpb24nKSA9PSAnYWJzb2x1dGUnKSBicmVhazsKCiAgICB9
IHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpOwoKICAgIGVs
ZW1lbnQgPSBmb3JFbGVtZW50OwogICAgZG8gewogICAgICBpZiAoIVByb3RvdHlw
ZS5Ccm93c2VyLk9wZXJhIHx8IGVsZW1lbnQudGFnTmFtZSA9PSAnQk9EWScpIHsK
ICAgICAgICB2YWx1ZVQgLT0gZWxlbWVudC5zY3JvbGxUb3AgIHx8IDA7CiAgICAg
ICAgdmFsdWVMIC09IGVsZW1lbnQuc2Nyb2xsTGVmdCB8fCAwOwogICAgICB9CiAg
ICB9IHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKTsKCiAgICBy
ZXR1cm4gRWxlbWVudC5fcmV0dXJuT2Zmc2V0KHZhbHVlTCwgdmFsdWVUKTsKICB9
LAoKICBjbG9uZVBvc2l0aW9uOiBmdW5jdGlvbihlbGVtZW50LCBzb3VyY2UpIHsK
ICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICAgIHNldExlZnQ6
ICAgIHRydWUsCiAgICAgIHNldFRvcDogICAgIHRydWUsCiAgICAgIHNldFdpZHRo
OiAgIHRydWUsCiAgICAgIHNldEhlaWdodDogIHRydWUsCiAgICAgIG9mZnNldFRv
cDogIDAsCiAgICAgIG9mZnNldExlZnQ6IDAKICAgIH0sIGFyZ3VtZW50c1syXSB8
fCB7IH0pOwoKICAgIC8vIGZpbmQgcGFnZSBwb3NpdGlvbiBvZiBzb3VyY2UKICAg
IHNvdXJjZSA9ICQoc291cmNlKTsKICAgIHZhciBwID0gc291cmNlLnZpZXdwb3J0
T2Zmc2V0KCk7CgogICAgLy8gZmluZCBjb29yZGluYXRlIHN5c3RlbSB0byB1c2UK
ICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGRlbHRhID0gWzAsIDBd
OwogICAgdmFyIHBhcmVudCA9IG51bGw7CiAgICAvLyBkZWx0YSBbMCwwXSB3aWxs
IGRvIGZpbmUgd2l0aCBwb3NpdGlvbjogZml4ZWQgZWxlbWVudHMsCiAgICAvLyBw
b3NpdGlvbjphYnNvbHV0ZSBuZWVkcyBvZmZzZXRQYXJlbnQgZGVsdGFzCiAgICBp
ZiAoRWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKSA9PSAnYWJz
b2x1dGUnKSB7CiAgICAgIHBhcmVudCA9IGVsZW1lbnQuZ2V0T2Zmc2V0UGFyZW50
KCk7CiAgICAgIGRlbHRhID0gcGFyZW50LnZpZXdwb3J0T2Zmc2V0KCk7CiAgICB9
CgogICAgLy8gY29ycmVjdCBieSBib2R5IG9mZnNldHMgKGZpeGVzIFNhZmFyaSkK
ICAgIGlmIChwYXJlbnQgPT0gZG9jdW1lbnQuYm9keSkgewogICAgICBkZWx0YVsw
XSAtPSBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CiAgICAgIGRlbHRhWzFdIC09
IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgfQoKICAgIC8vIHNldCBwb3Np
dGlvbgogICAgaWYgKG9wdGlvbnMuc2V0TGVmdCkgICBlbGVtZW50LnN0eWxlLmxl
ZnQgID0gKHBbMF0gLSBkZWx0YVswXSArIG9wdGlvbnMub2Zmc2V0TGVmdCkgKyAn
cHgnOwogICAgaWYgKG9wdGlvbnMuc2V0VG9wKSAgICBlbGVtZW50LnN0eWxlLnRv
cCAgID0gKHBbMV0gLSBkZWx0YVsxXSArIG9wdGlvbnMub2Zmc2V0VG9wKSArICdw
eCc7CiAgICBpZiAob3B0aW9ucy5zZXRXaWR0aCkgIGVsZW1lbnQuc3R5bGUud2lk
dGggPSBzb3VyY2Uub2Zmc2V0V2lkdGggKyAncHgnOwogICAgaWYgKG9wdGlvbnMu
c2V0SGVpZ2h0KSBlbGVtZW50LnN0eWxlLmhlaWdodCA9IHNvdXJjZS5vZmZzZXRI
ZWlnaHQgKyAncHgnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfQp9OwoKRWxlbWVu
dC5NZXRob2RzLmlkZW50aWZ5LmNvdW50ZXIgPSAxOwoKT2JqZWN0LmV4dGVuZChF
bGVtZW50Lk1ldGhvZHMsIHsKICBnZXRFbGVtZW50c0J5U2VsZWN0b3I6IEVsZW1l
bnQuTWV0aG9kcy5zZWxlY3QsCiAgY2hpbGRFbGVtZW50czogRWxlbWVudC5NZXRo
b2RzLmltbWVkaWF0ZURlc2NlbmRhbnRzCn0pOwoKRWxlbWVudC5fYXR0cmlidXRl
VHJhbnNsYXRpb25zID0gewogIHdyaXRlOiB7CiAgICBuYW1lczogewogICAgICBj
bGFzc05hbWU6ICdjbGFzcycsCiAgICAgIGh0bWxGb3I6ICAgJ2ZvcicKICAgIH0s
CiAgICB2YWx1ZXM6IHsgfQogIH0KfTsKCmlmIChQcm90b3R5cGUuQnJvd3Nlci5P
cGVyYSkgewogIEVsZW1lbnQuTWV0aG9kcy5nZXRTdHlsZSA9IEVsZW1lbnQuTWV0
aG9kcy5nZXRTdHlsZS53cmFwKAogICAgZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVu
dCwgc3R5bGUpIHsKICAgICAgc3dpdGNoIChzdHlsZSkgewogICAgICAgIGNhc2Ug
J2xlZnQnOiBjYXNlICd0b3AnOiBjYXNlICdyaWdodCc6IGNhc2UgJ2JvdHRvbSc6
CiAgICAgICAgICBpZiAocHJvY2VlZChlbGVtZW50LCAncG9zaXRpb24nKSA9PT0g
J3N0YXRpYycpIHJldHVybiBudWxsOwogICAgICAgIGNhc2UgJ2hlaWdodCc6IGNh
c2UgJ3dpZHRoJzoKICAgICAgICAgIC8vIHJldHVybnMgJzBweCcgZm9yIGhpZGRl
biBlbGVtZW50czsgd2Ugd2FudCBpdCB0byByZXR1cm4gbnVsbAogICAgICAgICAg
aWYgKCFFbGVtZW50LnZpc2libGUoZWxlbWVudCkpIHJldHVybiBudWxsOwoKICAg
ICAgICAgIC8vIHJldHVybnMgdGhlIGJvcmRlci1ib3ggZGltZW5zaW9ucyByYXRo
ZXIgdGhhbiB0aGUgY29udGVudC1ib3gKICAgICAgICAgIC8vIGRpbWVuc2lvbnMs
IHNvIHdlIHN1YnRyYWN0IHBhZGRpbmcgYW5kIGJvcmRlcnMgZnJvbSB0aGUgdmFs
dWUKICAgICAgICAgIHZhciBkaW0gPSBwYXJzZUludChwcm9jZWVkKGVsZW1lbnQs
IHN0eWxlKSwgMTApOwoKICAgICAgICAgIGlmIChkaW0gIT09IGVsZW1lbnRbJ29m
ZnNldCcgKyBzdHlsZS5jYXBpdGFsaXplKCldKQogICAgICAgICAgICByZXR1cm4g
ZGltICsgJ3B4JzsKCiAgICAgICAgICB2YXIgcHJvcGVydGllczsKICAgICAgICAg
IGlmIChzdHlsZSA9PT0gJ2hlaWdodCcpIHsKICAgICAgICAgICAgcHJvcGVydGll
cyA9IFsnYm9yZGVyLXRvcC13aWR0aCcsICdwYWRkaW5nLXRvcCcsCiAgICAgICAg
ICAgICAncGFkZGluZy1ib3R0b20nLCAnYm9yZGVyLWJvdHRvbS13aWR0aCddOwog
ICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHByb3BlcnRp
ZXMgPSBbJ2JvcmRlci1sZWZ0LXdpZHRoJywgJ3BhZGRpbmctbGVmdCcsCiAgICAg
ICAgICAgICAncGFkZGluZy1yaWdodCcsICdib3JkZXItcmlnaHQtd2lkdGgnXTsK
ICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLmluamVjdChk
aW0sIGZ1bmN0aW9uKG1lbW8sIHByb3BlcnR5KSB7CiAgICAgICAgICAgIHZhciB2
YWwgPSBwcm9jZWVkKGVsZW1lbnQsIHByb3BlcnR5KTsKICAgICAgICAgICAgcmV0
dXJuIHZhbCA9PT0gbnVsbCA/IG1lbW8gOiBtZW1vIC0gcGFyc2VJbnQodmFsLCAx
MCk7CiAgICAgICAgICB9KSArICdweCc7CiAgICAgICAgZGVmYXVsdDogcmV0dXJu
IHByb2NlZWQoZWxlbWVudCwgc3R5bGUpOwogICAgICB9CiAgICB9CiAgKTsKCiAg
RWxlbWVudC5NZXRob2RzLnJlYWRBdHRyaWJ1dGUgPSBFbGVtZW50Lk1ldGhvZHMu
cmVhZEF0dHJpYnV0ZS53cmFwKAogICAgZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVu
dCwgYXR0cmlidXRlKSB7CiAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICd0aXRsZScp
IHJldHVybiBlbGVtZW50LnRpdGxlOwogICAgICByZXR1cm4gcHJvY2VlZChlbGVt
ZW50LCBhdHRyaWJ1dGUpOwogICAgfQogICk7Cn0KCmVsc2UgaWYgKFByb3RvdHlw
ZS5Ccm93c2VyLklFKSB7CiAgLy8gSUUgZG9lc24ndCByZXBvcnQgb2Zmc2V0cyBj
b3JyZWN0bHkgZm9yIHN0YXRpYyBlbGVtZW50cywgc28gd2UgY2hhbmdlIHRoZW0K
ICAvLyB0byAicmVsYXRpdmUiIHRvIGdldCB0aGUgdmFsdWVzLCB0aGVuIGNoYW5n
ZSB0aGVtIGJhY2suCiAgRWxlbWVudC5NZXRob2RzLmdldE9mZnNldFBhcmVudCA9
IEVsZW1lbnQuTWV0aG9kcy5nZXRPZmZzZXRQYXJlbnQud3JhcCgKICAgIGZ1bmN0
aW9uKHByb2NlZWQsIGVsZW1lbnQpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVu
dCk7CiAgICAgIHZhciBwb3NpdGlvbiA9IGVsZW1lbnQuZ2V0U3R5bGUoJ3Bvc2l0
aW9uJyk7CiAgICAgIGlmIChwb3NpdGlvbiAhPT0gJ3N0YXRpYycpIHJldHVybiBw
cm9jZWVkKGVsZW1lbnQpOwogICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRp
b246ICdyZWxhdGl2ZScgfSk7CiAgICAgIHZhciB2YWx1ZSA9IHByb2NlZWQoZWxl
bWVudCk7CiAgICAgIGVsZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogcG9zaXRp
b24gfSk7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICApOwoKICAkdygncG9z
aXRpb25lZE9mZnNldCB2aWV3cG9ydE9mZnNldCcpLmVhY2goZnVuY3Rpb24obWV0
aG9kKSB7CiAgICBFbGVtZW50Lk1ldGhvZHNbbWV0aG9kXSA9IEVsZW1lbnQuTWV0
aG9kc1ttZXRob2RdLndyYXAoCiAgICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1l
bnQpIHsKICAgICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICAgICB2YXIg
cG9zaXRpb24gPSBlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpOwogICAgICAg
IGlmIChwb3NpdGlvbiAhPT0gJ3N0YXRpYycpIHJldHVybiBwcm9jZWVkKGVsZW1l
bnQpOwogICAgICAgIC8vIFRyaWdnZXIgaGFzTGF5b3V0IG9uIHRoZSBvZmZzZXQg
cGFyZW50IHNvIHRoYXQgSUU2IHJlcG9ydHMKICAgICAgICAvLyBhY2N1cmF0ZSBv
ZmZzZXRUb3AgYW5kIG9mZnNldExlZnQgdmFsdWVzIGZvciBwb3NpdGlvbjogZml4
ZWQuCiAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW1lbnQuZ2V0T2Zmc2V0
UGFyZW50KCk7CiAgICAgICAgaWYgKG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJl
bnQuZ2V0U3R5bGUoJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpCiAgICAgICAgICBv
ZmZzZXRQYXJlbnQuc2V0U3R5bGUoeyB6b29tOiAxIH0pOwogICAgICAgIGVsZW1l
bnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KTsKICAgICAgICB2
YXIgdmFsdWUgPSBwcm9jZWVkKGVsZW1lbnQpOwogICAgICAgIGVsZW1lbnQuc2V0
U3R5bGUoeyBwb3NpdGlvbjogcG9zaXRpb24gfSk7CiAgICAgICAgcmV0dXJuIHZh
bHVlOwogICAgICB9CiAgICApOwogIH0pOwoKICBFbGVtZW50Lk1ldGhvZHMuZ2V0
U3R5bGUgPSBmdW5jdGlvbihlbGVtZW50LCBzdHlsZSkgewogICAgZWxlbWVudCA9
ICQoZWxlbWVudCk7CiAgICBzdHlsZSA9IChzdHlsZSA9PSAnZmxvYXQnIHx8IHN0
eWxlID09ICdjc3NGbG9hdCcpID8gJ3N0eWxlRmxvYXQnIDogc3R5bGUuY2FtZWxp
emUoKTsKICAgIHZhciB2YWx1ZSA9IGVsZW1lbnQuc3R5bGVbc3R5bGVdOwogICAg
aWYgKCF2YWx1ZSAmJiBlbGVtZW50LmN1cnJlbnRTdHlsZSkgdmFsdWUgPSBlbGVt
ZW50LmN1cnJlbnRTdHlsZVtzdHlsZV07CgogICAgaWYgKHN0eWxlID09ICdvcGFj
aXR5JykgewogICAgICBpZiAodmFsdWUgPSAoZWxlbWVudC5nZXRTdHlsZSgnZmls
dGVyJykgfHwgJycpLm1hdGNoKC9hbHBoYVwob3BhY2l0eT0oLiopXCkvKSkKICAg
ICAgICBpZiAodmFsdWVbMV0pIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlWzFdKSAv
IDEwMDsKICAgICAgcmV0dXJuIDEuMDsKICAgIH0KCiAgICBpZiAodmFsdWUgPT0g
J2F1dG8nKSB7CiAgICAgIGlmICgoc3R5bGUgPT0gJ3dpZHRoJyB8fCBzdHlsZSA9
PSAnaGVpZ2h0JykgJiYgKGVsZW1lbnQuZ2V0U3R5bGUoJ2Rpc3BsYXknKSAhPSAn
bm9uZScpKQogICAgICAgIHJldHVybiBlbGVtZW50WydvZmZzZXQnICsgc3R5bGUu
Y2FwaXRhbGl6ZSgpXSArICdweCc7CiAgICAgIHJldHVybiBudWxsOwogICAgfQog
ICAgcmV0dXJuIHZhbHVlOwogIH07CgogIEVsZW1lbnQuTWV0aG9kcy5zZXRPcGFj
aXR5ID0gZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGZ1bmN0aW9uIHN0
cmlwQWxwaGEoZmlsdGVyKXsKICAgICAgcmV0dXJuIGZpbHRlci5yZXBsYWNlKC9h
bHBoYVwoW15cKV0qXCkvZ2ksJycpOwogICAgfQogICAgZWxlbWVudCA9ICQoZWxl
bWVudCk7CiAgICB2YXIgY3VycmVudFN0eWxlID0gZWxlbWVudC5jdXJyZW50U3R5
bGU7CiAgICBpZiAoKGN1cnJlbnRTdHlsZSAmJiAhY3VycmVudFN0eWxlLmhhc0xh
eW91dCkgfHwKICAgICAgKCFjdXJyZW50U3R5bGUgJiYgZWxlbWVudC5zdHlsZS56
b29tID09ICdub3JtYWwnKSkKICAgICAgICBlbGVtZW50LnN0eWxlLnpvb20gPSAx
OwoKICAgIHZhciBmaWx0ZXIgPSBlbGVtZW50LmdldFN0eWxlKCdmaWx0ZXInKSwg
c3R5bGUgPSBlbGVtZW50LnN0eWxlOwogICAgaWYgKHZhbHVlID09IDEgfHwgdmFs
dWUgPT09ICcnKSB7CiAgICAgIChmaWx0ZXIgPSBzdHJpcEFscGhhKGZpbHRlcikp
ID8KICAgICAgICBzdHlsZS5maWx0ZXIgPSBmaWx0ZXIgOiBzdHlsZS5yZW1vdmVB
dHRyaWJ1dGUoJ2ZpbHRlcicpOwogICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0g
ZWxzZSBpZiAodmFsdWUgPCAwLjAwMDAxKSB2YWx1ZSA9IDA7CiAgICBzdHlsZS5m
aWx0ZXIgPSBzdHJpcEFscGhhKGZpbHRlcikgKwogICAgICAnYWxwaGEob3BhY2l0
eT0nICsgKHZhbHVlICogMTAwKSArICcpJzsKICAgIHJldHVybiBlbGVtZW50Owog
IH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucyA9IHsKICAgIHJl
YWQ6IHsKICAgICAgbmFtZXM6IHsKICAgICAgICAnY2xhc3MnOiAnY2xhc3NOYW1l
JywKICAgICAgICAnZm9yJzogICAnaHRtbEZvcicKICAgICAgfSwKICAgICAgdmFs
dWVzOiB7CiAgICAgICAgX2dldEF0dHI6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJp
YnV0ZSkgewogICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0
dHJpYnV0ZSwgMik7CiAgICAgICAgfSwKICAgICAgICBfZ2V0QXR0ck5vZGU6IGZ1
bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgICAgICAgdmFyIG5vZGUg
PSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoYXR0cmlidXRlKTsKICAgICAgICAg
IHJldHVybiBub2RlID8gbm9kZS52YWx1ZSA6ICIiOwogICAgICAgIH0sCiAgICAg
ICAgX2dldEV2OiBmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsKICAgICAg
ICAgIGF0dHJpYnV0ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7
CiAgICAgICAgICByZXR1cm4gYXR0cmlidXRlID8gYXR0cmlidXRlLnRvU3RyaW5n
KCkuc2xpY2UoMjMsIC0yKSA6IG51bGw7CiAgICAgICAgfSwKICAgICAgICBfZmxh
ZzogZnVuY3Rpb24oZWxlbWVudCwgYXR0cmlidXRlKSB7CiAgICAgICAgICByZXR1
cm4gJChlbGVtZW50KS5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSA/IGF0dHJpYnV0
ZSA6IG51bGw7CiAgICAgICAgfSwKICAgICAgICBzdHlsZTogZnVuY3Rpb24oZWxl
bWVudCkgewogICAgICAgICAgcmV0dXJuIGVsZW1lbnQuc3R5bGUuY3NzVGV4dC50
b0xvd2VyQ2FzZSgpOwogICAgICAgIH0sCiAgICAgICAgdGl0bGU6IGZ1bmN0aW9u
KGVsZW1lbnQpIHsKICAgICAgICAgIHJldHVybiBlbGVtZW50LnRpdGxlOwogICAg
ICAgIH0KICAgICAgfQogICAgfQogIH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRy
YW5zbGF0aW9ucy53cml0ZSA9IHsKICAgIG5hbWVzOiBPYmplY3QuZXh0ZW5kKHsK
ICAgICAgY2VsbHBhZGRpbmc6ICdjZWxsUGFkZGluZycsCiAgICAgIGNlbGxzcGFj
aW5nOiAnY2VsbFNwYWNpbmcnCiAgICB9LCBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFu
c2xhdGlvbnMucmVhZC5uYW1lcyksCiAgICB2YWx1ZXM6IHsKICAgICAgY2hlY2tl
ZDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgICAgICBlbGVtZW50LmNo
ZWNrZWQgPSAhIXZhbHVlOwogICAgICB9LAoKICAgICAgc3R5bGU6IGZ1bmN0aW9u
KGVsZW1lbnQsIHZhbHVlKSB7CiAgICAgICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0
ID0gdmFsdWUgPyB2YWx1ZSA6ICcnOwogICAgICB9CiAgICB9CiAgfTsKCiAgRWxl
bWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhcyA9IHt9OwoKICAkdygnY29s
U3BhbiByb3dTcGFuIHZBbGlnbiBkYXRlVGltZSBhY2Nlc3NLZXkgdGFiSW5kZXgg
JyArCiAgICAgICdlbmNUeXBlIG1heExlbmd0aCByZWFkT25seSBsb25nRGVzYycp
LmVhY2goZnVuY3Rpb24oYXR0cikgewogICAgRWxlbWVudC5fYXR0cmlidXRlVHJh
bnNsYXRpb25zLndyaXRlLm5hbWVzW2F0dHIudG9Mb3dlckNhc2UoKV0gPSBhdHRy
OwogICAgRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyLnRv
TG93ZXJDYXNlKCldID0gYXR0cjsKICB9KTsKCiAgKGZ1bmN0aW9uKHYpIHsKICAg
IE9iamVjdC5leHRlbmQodiwgewogICAgICBocmVmOiAgICAgICAgdi5fZ2V0QXR0
ciwKICAgICAgc3JjOiAgICAgICAgIHYuX2dldEF0dHIsCiAgICAgIHR5cGU6ICAg
ICAgICB2Ll9nZXRBdHRyLAogICAgICBhY3Rpb246ICAgICAgdi5fZ2V0QXR0ck5v
ZGUsCiAgICAgIGRpc2FibGVkOiAgICB2Ll9mbGFnLAogICAgICBjaGVja2VkOiAg
ICAgdi5fZmxhZywKICAgICAgcmVhZG9ubHk6ICAgIHYuX2ZsYWcsCiAgICAgIG11
bHRpcGxlOiAgICB2Ll9mbGFnLAogICAgICBvbmxvYWQ6ICAgICAgdi5fZ2V0RXYs
CiAgICAgIG9udW5sb2FkOiAgICB2Ll9nZXRFdiwKICAgICAgb25jbGljazogICAg
IHYuX2dldEV2LAogICAgICBvbmRibGNsaWNrOiAgdi5fZ2V0RXYsCiAgICAgIG9u
bW91c2Vkb3duOiB2Ll9nZXRFdiwKICAgICAgb25tb3VzZXVwOiAgIHYuX2dldEV2
LAogICAgICBvbm1vdXNlb3Zlcjogdi5fZ2V0RXYsCiAgICAgIG9ubW91c2Vtb3Zl
OiB2Ll9nZXRFdiwKICAgICAgb25tb3VzZW91dDogIHYuX2dldEV2LAogICAgICBv
bmZvY3VzOiAgICAgdi5fZ2V0RXYsCiAgICAgIG9uYmx1cjogICAgICB2Ll9nZXRF
diwKICAgICAgb25rZXlwcmVzczogIHYuX2dldEV2LAogICAgICBvbmtleWRvd246
ICAgdi5fZ2V0RXYsCiAgICAgIG9ua2V5dXA6ICAgICB2Ll9nZXRFdiwKICAgICAg
b25zdWJtaXQ6ICAgIHYuX2dldEV2LAogICAgICBvbnJlc2V0OiAgICAgdi5fZ2V0
RXYsCiAgICAgIG9uc2VsZWN0OiAgICB2Ll9nZXRFdiwKICAgICAgb25jaGFuZ2U6
ICAgIHYuX2dldEV2CiAgICB9KTsKICB9KShFbGVtZW50Ll9hdHRyaWJ1dGVUcmFu
c2xhdGlvbnMucmVhZC52YWx1ZXMpOwp9CgplbHNlIGlmIChQcm90b3R5cGUuQnJv
d3Nlci5HZWNrbyAmJiAvcnY6MVwuOFwuMC8udGVzdChuYXZpZ2F0b3IudXNlckFn
ZW50KSkgewogIEVsZW1lbnQuTWV0aG9kcy5zZXRPcGFjaXR5ID0gZnVuY3Rpb24o
ZWxlbWVudCwgdmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAg
ZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gKHZhbHVlID09IDEpID8gMC45OTk5OTkg
OgogICAgICAodmFsdWUgPT09ICcnKSA/ICcnIDogKHZhbHVlIDwgMC4wMDAwMSkg
PyAwIDogdmFsdWU7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Owp9CgplbHNlIGlm
IChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICBFbGVtZW50Lk1ldGhvZHMu
c2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7CiAgICBlbGVt
ZW50ID0gJChlbGVtZW50KTsKICAgIGVsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICh2
YWx1ZSA9PSAxIHx8IHZhbHVlID09PSAnJykgPyAnJyA6CiAgICAgICh2YWx1ZSA8
IDAuMDAwMDEpID8gMCA6IHZhbHVlOwoKICAgIGlmICh2YWx1ZSA9PSAxKQogICAg
ICBpZihlbGVtZW50LnRhZ05hbWUgPT0gJ0lNRycgJiYgZWxlbWVudC53aWR0aCkg
ewogICAgICAgIGVsZW1lbnQud2lkdGgrKzsgZWxlbWVudC53aWR0aC0tOwogICAg
ICB9IGVsc2UgdHJ5IHsKICAgICAgICB2YXIgbiA9IGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCcgJyk7CiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChuKTsKICAg
ICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKG4pOwogICAgICB9IGNhdGNoIChlKSB7
IH0KCiAgICByZXR1cm4gZWxlbWVudDsKICB9OwoKICAvLyBTYWZhcmkgcmV0dXJu
cyBtYXJnaW5zIG9uIGJvZHkgd2hpY2ggaXMgaW5jb3JyZWN0IGlmIHRoZSBjaGls
ZCBpcyBhYnNvbHV0ZWx5CiAgLy8gcG9zaXRpb25lZC4gIEZvciBwZXJmb3JtYW5j
ZSByZWFzb25zLCByZWRlZmluZSBFbGVtZW50I2N1bXVsYXRpdmVPZmZzZXQgZm9y
CiAgLy8gS0hUTUwvV2ViS2l0IG9ubHkuCiAgRWxlbWVudC5NZXRob2RzLmN1bXVs
YXRpdmVPZmZzZXQgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVU
ID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1l
bnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZz
ZXRMZWZ0IHx8IDA7CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBk
b2N1bWVudC5ib2R5KQogICAgICAgIGlmIChFbGVtZW50LmdldFN0eWxlKGVsZW1l
bnQsICdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIGJyZWFrOwoKICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgfSB3aGlsZSAoZWxlbWVu
dCk7CgogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCh2YWx1ZUwsIHZh
bHVlVCk7CiAgfTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFIHx8IFByb3Rv
dHlwZS5Ccm93c2VyLk9wZXJhKSB7CiAgLy8gSUUgYW5kIE9wZXJhIGFyZSBtaXNz
aW5nIC5pbm5lckhUTUwgc3VwcG9ydCBmb3IgVEFCTEUtcmVsYXRlZCBhbmQgU0VM
RUNUIGVsZW1lbnRzCiAgRWxlbWVudC5NZXRob2RzLnVwZGF0ZSA9IGZ1bmN0aW9u
KGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwoK
ICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0g
Y29udGVudC50b0VsZW1lbnQoKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KGNv
bnRlbnQpKSByZXR1cm4gZWxlbWVudC51cGRhdGUoKS5pbnNlcnQoY29udGVudCk7
CgogICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29udGVudCk7CiAgICB2YXIg
dGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlm
ICh0YWdOYW1lIGluIEVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucy50YWdz
KSB7CiAgICAgICRBKGVsZW1lbnQuY2hpbGROb2RlcykuZWFjaChmdW5jdGlvbihu
b2RlKSB7IGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSkgfSk7CiAgICAgIEVsZW1l
bnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250
ZW50LnN0cmlwU2NyaXB0cygpKQogICAgICAgIC5lYWNoKGZ1bmN0aW9uKG5vZGUp
IHsgZWxlbWVudC5hcHBlbmRDaGlsZChub2RlKSB9KTsKICAgIH0KICAgIGVsc2Ug
ZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwoKICAg
IGNvbnRlbnQuZXZhbFNjcmlwdHMuYmluZChjb250ZW50KS5kZWZlcigpOwogICAg
cmV0dXJuIGVsZW1lbnQ7CiAgfTsKfQoKaWYgKCdvdXRlckhUTUwnIGluIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB7CiAgRWxlbWVudC5NZXRob2RzLnJl
cGxhY2UgPSBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50
ID0gJChlbGVtZW50KTsKCiAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRvRWxl
bWVudCkgY29udGVudCA9IGNvbnRlbnQudG9FbGVtZW50KCk7CiAgICBpZiAoT2Jq
ZWN0LmlzRWxlbWVudChjb250ZW50KSkgewogICAgICBlbGVtZW50LnBhcmVudE5v
ZGUucmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgICByZXR1cm4g
ZWxlbWVudDsKICAgIH0KCiAgICBjb250ZW50ID0gT2JqZWN0LnRvSFRNTChjb250
ZW50KTsKICAgIHZhciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05h
bWUgPSBwYXJlbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmIChFbGVt
ZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMudGFnc1t0YWdOYW1lXSkgewogICAg
ICB2YXIgbmV4dFNpYmxpbmcgPSBlbGVtZW50Lm5leHQoKTsKICAgICAgdmFyIGZy
YWdtZW50cyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVu
dCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKICAgICAgcGFyZW50
LnJlbW92ZUNoaWxkKGVsZW1lbnQpOwogICAgICBpZiAobmV4dFNpYmxpbmcpCiAg
ICAgICAgZnJhZ21lbnRzLmVhY2goZnVuY3Rpb24obm9kZSkgeyBwYXJlbnQuaW5z
ZXJ0QmVmb3JlKG5vZGUsIG5leHRTaWJsaW5nKSB9KTsKICAgICAgZWxzZQogICAg
ICAgIGZyYWdtZW50cy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgcGFyZW50LmFwcGVu
ZENoaWxkKG5vZGUpIH0pOwogICAgfQogICAgZWxzZSBlbGVtZW50Lm91dGVySFRN
TCA9IGNvbnRlbnQuc3RyaXBTY3JpcHRzKCk7CgogICAgY29udGVudC5ldmFsU2Ny
aXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVudDsK
ICB9Owp9CgpFbGVtZW50Ll9yZXR1cm5PZmZzZXQgPSBmdW5jdGlvbihsLCB0KSB7
CiAgdmFyIHJlc3VsdCA9IFtsLCB0XTsKICByZXN1bHQubGVmdCA9IGw7CiAgcmVz
dWx0LnRvcCA9IHQ7CiAgcmV0dXJuIHJlc3VsdDsKfTsKCkVsZW1lbnQuX2dldENv
bnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGh0
bWwpIHsKICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpLCB0ID0gRWxlbWVu
dC5faW5zZXJ0aW9uVHJhbnNsYXRpb25zLnRhZ3NbdGFnTmFtZV07CiAgaWYgKHQp
IHsKICAgIGRpdi5pbm5lckhUTUwgPSB0WzBdICsgaHRtbCArIHRbMV07CiAgICB0
WzJdLnRpbWVzKGZ1bmN0aW9uKCkgeyBkaXYgPSBkaXYuZmlyc3RDaGlsZCB9KTsK
ICB9IGVsc2UgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgcmV0dXJuICRBKGRpdi5j
aGlsZE5vZGVzKTsKfTsKCkVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucyA9
IHsKICBiZWZvcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1l
bnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgZWxlbWVudCk7CiAgfSwK
ICB0b3A6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuaW5z
ZXJ0QmVmb3JlKG5vZGUsIGVsZW1lbnQuZmlyc3RDaGlsZCk7CiAgfSwKICBib3R0
b206IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuYXBwZW5k
Q2hpbGQobm9kZSk7CiAgfSwKICBhZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgbm9k
ZSkgewogICAgZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBl
bGVtZW50Lm5leHRTaWJsaW5nKTsKICB9LAogIHRhZ3M6IHsKICAgIFRBQkxFOiAg
Wyc8dGFibGU+JywgICAgICAgICAgICAgICAgJzwvdGFibGU+JywgICAgICAgICAg
ICAgICAgICAgMV0sCiAgICBUQk9EWTogIFsnPHRhYmxlPjx0Ym9keT4nLCAgICAg
ICAgICc8L3Rib2R5PjwvdGFibGU+JywgICAgICAgICAgIDJdLAogICAgVFI6ICAg
ICBbJzx0YWJsZT48dGJvZHk+PHRyPicsICAgICAnPC90cj48L3Rib2R5PjwvdGFi
bGU+JywgICAgICAzXSwKICAgIFREOiAgICAgWyc8dGFibGU+PHRib2R5Pjx0cj48
dGQ+JywgJzwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+JywgNF0sCiAgICBTRUxF
Q1Q6IFsnPHNlbGVjdD4nLCAgICAgICAgICAgICAgICc8L3NlbGVjdD4nLCAgICAg
ICAgICAgICAgICAgIDFdCiAgfQp9OwoKKGZ1bmN0aW9uKCkgewogIE9iamVjdC5l
eHRlbmQodGhpcy50YWdzLCB7CiAgICBUSEVBRDogdGhpcy50YWdzLlRCT0RZLAog
ICAgVEZPT1Q6IHRoaXMudGFncy5UQk9EWSwKICAgIFRIOiAgICB0aGlzLnRhZ3Mu
VEQKICB9KTsKfSkuY2FsbChFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMp
OwoKRWxlbWVudC5NZXRob2RzLlNpbXVsYXRlZCA9IHsKICBoYXNBdHRyaWJ1dGU6
IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgYXR0cmlidXRlID0g
RWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyaWJ1dGVdIHx8
IGF0dHJpYnV0ZTsKICAgIHZhciBub2RlID0gJChlbGVtZW50KS5nZXRBdHRyaWJ1
dGVOb2RlKGF0dHJpYnV0ZSk7CiAgICByZXR1cm4gbm9kZSAmJiBub2RlLnNwZWNp
ZmllZDsKICB9Cn07CgpFbGVtZW50Lk1ldGhvZHMuQnlUYWcgPSB7IH07CgpPYmpl
Y3QuZXh0ZW5kKEVsZW1lbnQsIEVsZW1lbnQuTWV0aG9kcyk7CgppZiAoIVByb3Rv
dHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMgJiYKICAgIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLl9fcHJvdG9fXykgewogIHdpbmRv
dy5IVE1MRWxlbWVudCA9IHsgfTsKICB3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90
eXBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuX19wcm90b19fOwog
IFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMgPSB0
cnVlOwp9CgpFbGVtZW50LmV4dGVuZCA9IChmdW5jdGlvbigpIHsKICBpZiAoUHJv
dG90eXBlLkJyb3dzZXJGZWF0dXJlcy5TcGVjaWZpY0VsZW1lbnRFeHRlbnNpb25z
KQogICAgcmV0dXJuIFByb3RvdHlwZS5LOwoKICB2YXIgTWV0aG9kcyA9IHsgfSwg
QnlUYWcgPSBFbGVtZW50Lk1ldGhvZHMuQnlUYWc7CgogIHZhciBleHRlbmQgPSBP
YmplY3QuZXh0ZW5kKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGlmICghZWxlbWVu
dCB8fCBlbGVtZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlIHx8CiAgICAgICAgZWxl
bWVudC5ub2RlVHlwZSAhPSAxIHx8IGVsZW1lbnQgPT0gd2luZG93KSByZXR1cm4g
ZWxlbWVudDsKCiAgICB2YXIgbWV0aG9kcyA9IE9iamVjdC5jbG9uZShNZXRob2Rz
KSwKICAgICAgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZSwgcHJvcGVydHksIHZh
bHVlOwoKICAgIC8vIGV4dGVuZCBtZXRob2RzIGZvciBzcGVjaWZpYyB0YWdzCiAg
ICBpZiAoQnlUYWdbdGFnTmFtZV0pIE9iamVjdC5leHRlbmQobWV0aG9kcywgQnlU
YWdbdGFnTmFtZV0pOwoKICAgIGZvciAocHJvcGVydHkgaW4gbWV0aG9kcykgewog
ICAgICB2YWx1ZSA9IG1ldGhvZHNbcHJvcGVydHldOwogICAgICBpZiAoT2JqZWN0
LmlzRnVuY3Rpb24odmFsdWUpICYmICEocHJvcGVydHkgaW4gZWxlbWVudCkpCiAg
ICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPSB2YWx1ZS5tZXRob2RpemUoKTsKICAg
IH0KCiAgICBlbGVtZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlID0gUHJvdG90eXBl
LmVtcHR5RnVuY3Rpb247CiAgICByZXR1cm4gZWxlbWVudDsKCiAgfSwgewogICAg
cmVmcmVzaDogZnVuY3Rpb24oKSB7CiAgICAgIC8vIGV4dGVuZCBtZXRob2RzIGZv
ciBhbGwgdGFncyAoU2FmYXJpIGRvZXNuJ3QgbmVlZCB0aGlzKQogICAgICBpZiAo
IVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMpIHsK
ICAgICAgICBPYmplY3QuZXh0ZW5kKE1ldGhvZHMsIEVsZW1lbnQuTWV0aG9kcyk7
CiAgICAgICAgT2JqZWN0LmV4dGVuZChNZXRob2RzLCBFbGVtZW50Lk1ldGhvZHMu
U2ltdWxhdGVkKTsKICAgICAgfQogICAgfQogIH0pOwoKICBleHRlbmQucmVmcmVz
aCgpOwogIHJldHVybiBleHRlbmQ7Cn0pKCk7CgpFbGVtZW50Lmhhc0F0dHJpYnV0
ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogIGlmIChlbGVtZW50
Lmhhc0F0dHJpYnV0ZSkgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJp
YnV0ZSk7CiAgcmV0dXJuIEVsZW1lbnQuTWV0aG9kcy5TaW11bGF0ZWQuaGFzQXR0
cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSk7Cn07CgpFbGVtZW50LmFkZE1ldGhv
ZHMgPSBmdW5jdGlvbihtZXRob2RzKSB7CiAgdmFyIEYgPSBQcm90b3R5cGUuQnJv
d3NlckZlYXR1cmVzLCBUID0gRWxlbWVudC5NZXRob2RzLkJ5VGFnOwoKICBpZiAo
IW1ldGhvZHMpIHsKICAgIE9iamVjdC5leHRlbmQoRm9ybSwgRm9ybS5NZXRob2Rz
KTsKICAgIE9iamVjdC5leHRlbmQoRm9ybS5FbGVtZW50LCBGb3JtLkVsZW1lbnQu
TWV0aG9kcyk7CiAgICBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcy5CeVRh
ZywgewogICAgICAiRk9STSI6ICAgICBPYmplY3QuY2xvbmUoRm9ybS5NZXRob2Rz
KSwKICAgICAgIklOUFVUIjogICAgT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5N
ZXRob2RzKSwKICAgICAgIlNFTEVDVCI6ICAgT2JqZWN0LmNsb25lKEZvcm0uRWxl
bWVudC5NZXRob2RzKSwKICAgICAgIlRFWFRBUkVBIjogT2JqZWN0LmNsb25lKEZv
cm0uRWxlbWVudC5NZXRob2RzKQogICAgfSk7CiAgfQoKICBpZiAoYXJndW1lbnRz
Lmxlbmd0aCA9PSAyKSB7CiAgICB2YXIgdGFnTmFtZSA9IG1ldGhvZHM7CiAgICBt
ZXRob2RzID0gYXJndW1lbnRzWzFdOwogIH0KCiAgaWYgKCF0YWdOYW1lKSBPYmpl
Y3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcywgbWV0aG9kcyB8fCB7IH0pOwogIGVs
c2UgewogICAgaWYgKE9iamVjdC5pc0FycmF5KHRhZ05hbWUpKSB0YWdOYW1lLmVh
Y2goZXh0ZW5kKTsKICAgIGVsc2UgZXh0ZW5kKHRhZ05hbWUpOwogIH0KCiAgZnVu
Y3Rpb24gZXh0ZW5kKHRhZ05hbWUpIHsKICAgIHRhZ05hbWUgPSB0YWdOYW1lLnRv
VXBwZXJDYXNlKCk7CiAgICBpZiAoIUVsZW1lbnQuTWV0aG9kcy5CeVRhZ1t0YWdO
YW1lXSkKICAgICAgRWxlbWVudC5NZXRob2RzLkJ5VGFnW3RhZ05hbWVdID0geyB9
OwogICAgT2JqZWN0LmV4dGVuZChFbGVtZW50Lk1ldGhvZHMuQnlUYWdbdGFnTmFt
ZV0sIG1ldGhvZHMpOwogIH0KCiAgZnVuY3Rpb24gY29weShtZXRob2RzLCBkZXN0
aW5hdGlvbiwgb25seUlmQWJzZW50KSB7CiAgICBvbmx5SWZBYnNlbnQgPSBvbmx5
SWZBYnNlbnQgfHwgZmFsc2U7CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBtZXRo
b2RzKSB7CiAgICAgIHZhciB2YWx1ZSA9IG1ldGhvZHNbcHJvcGVydHldOwogICAg
ICBpZiAoIU9iamVjdC5pc0Z1bmN0aW9uKHZhbHVlKSkgY29udGludWU7CiAgICAg
IGlmICghb25seUlmQWJzZW50IHx8ICEocHJvcGVydHkgaW4gZGVzdGluYXRpb24p
KQogICAgICAgIGRlc3RpbmF0aW9uW3Byb3BlcnR5XSA9IHZhbHVlLm1ldGhvZGl6
ZSgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZmluZERPTUNsYXNzKHRhZ05hbWUp
IHsKICAgIHZhciBrbGFzczsKICAgIHZhciB0cmFucyA9IHsKICAgICAgIk9QVEdS
T1VQIjogIk9wdEdyb3VwIiwgIlRFWFRBUkVBIjogIlRleHRBcmVhIiwgIlAiOiAi
UGFyYWdyYXBoIiwKICAgICAgIkZJRUxEU0VUIjogIkZpZWxkU2V0IiwgIlVMIjog
IlVMaXN0IiwgIk9MIjogIk9MaXN0IiwgIkRMIjogIkRMaXN0IiwKICAgICAgIkRJ
UiI6ICJEaXJlY3RvcnkiLCAiSDEiOiAiSGVhZGluZyIsICJIMiI6ICJIZWFkaW5n
IiwgIkgzIjogIkhlYWRpbmciLAogICAgICAiSDQiOiAiSGVhZGluZyIsICJINSI6
ICJIZWFkaW5nIiwgIkg2IjogIkhlYWRpbmciLCAiUSI6ICJRdW90ZSIsCiAgICAg
ICJJTlMiOiAiTW9kIiwgIkRFTCI6ICJNb2QiLCAiQSI6ICJBbmNob3IiLCAiSU1H
IjogIkltYWdlIiwgIkNBUFRJT04iOgogICAgICAiVGFibGVDYXB0aW9uIiwgIkNP
TCI6ICJUYWJsZUNvbCIsICJDT0xHUk9VUCI6ICJUYWJsZUNvbCIsICJUSEVBRCI6
CiAgICAgICJUYWJsZVNlY3Rpb24iLCAiVEZPT1QiOiAiVGFibGVTZWN0aW9uIiwg
IlRCT0RZIjogIlRhYmxlU2VjdGlvbiIsICJUUiI6CiAgICAgICJUYWJsZVJvdyIs
ICJUSCI6ICJUYWJsZUNlbGwiLCAiVEQiOiAiVGFibGVDZWxsIiwgIkZSQU1FU0VU
IjoKICAgICAgIkZyYW1lU2V0IiwgIklGUkFNRSI6ICJJRnJhbWUiCiAgICB9Owog
ICAgaWYgKHRyYW5zW3RhZ05hbWVdKSBrbGFzcyA9ICdIVE1MJyArIHRyYW5zW3Rh
Z05hbWVdICsgJ0VsZW1lbnQnOwogICAgaWYgKHdpbmRvd1trbGFzc10pIHJldHVy
biB3aW5kb3dba2xhc3NdOwogICAga2xhc3MgPSAnSFRNTCcgKyB0YWdOYW1lICsg
J0VsZW1lbnQnOwogICAgaWYgKHdpbmRvd1trbGFzc10pIHJldHVybiB3aW5kb3db
a2xhc3NdOwogICAga2xhc3MgPSAnSFRNTCcgKyB0YWdOYW1lLmNhcGl0YWxpemUo
KSArICdFbGVtZW50JzsKICAgIGlmICh3aW5kb3dba2xhc3NdKSByZXR1cm4gd2lu
ZG93W2tsYXNzXTsKCiAgICB3aW5kb3dba2xhc3NdID0geyB9OwogICAgd2luZG93
W2tsYXNzXS5wcm90b3R5cGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05h
bWUpLl9fcHJvdG9fXzsKICAgIHJldHVybiB3aW5kb3dba2xhc3NdOwogIH0KCiAg
aWYgKEYuRWxlbWVudEV4dGVuc2lvbnMpIHsKICAgIGNvcHkoRWxlbWVudC5NZXRo
b2RzLCBIVE1MRWxlbWVudC5wcm90b3R5cGUpOwogICAgY29weShFbGVtZW50Lk1l
dGhvZHMuU2ltdWxhdGVkLCBIVE1MRWxlbWVudC5wcm90b3R5cGUsIHRydWUpOwog
IH0KCiAgaWYgKEYuU3BlY2lmaWNFbGVtZW50RXh0ZW5zaW9ucykgewogICAgZm9y
ICh2YXIgdGFnIGluIEVsZW1lbnQuTWV0aG9kcy5CeVRhZykgewogICAgICB2YXIg
a2xhc3MgPSBmaW5kRE9NQ2xhc3ModGFnKTsKICAgICAgaWYgKE9iamVjdC5pc1Vu
ZGVmaW5lZChrbGFzcykpIGNvbnRpbnVlOwogICAgICBjb3B5KFRbdGFnXSwga2xh
c3MucHJvdG90eXBlKTsKICAgIH0KICB9CgogIE9iamVjdC5leHRlbmQoRWxlbWVu
dCwgRWxlbWVudC5NZXRob2RzKTsKICBkZWxldGUgRWxlbWVudC5CeVRhZzsKCiAg
aWYgKEVsZW1lbnQuZXh0ZW5kLnJlZnJlc2gpIEVsZW1lbnQuZXh0ZW5kLnJlZnJl
c2goKTsKICBFbGVtZW50LmNhY2hlID0geyB9Owp9OwoKZG9jdW1lbnQudmlld3Bv
cnQgPSB7CiAgZ2V0RGltZW5zaW9uczogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGlt
ZW5zaW9ucyA9IHsgfTsKICAgIHZhciBCID0gUHJvdG90eXBlLkJyb3dzZXI7CiAg
ICAkdygnd2lkdGggaGVpZ2h0JykuZWFjaChmdW5jdGlvbihkKSB7CiAgICAgIHZh
ciBEID0gZC5jYXBpdGFsaXplKCk7CiAgICAgIGRpbWVuc2lvbnNbZF0gPSAoQi5X
ZWJLaXQgJiYgIWRvY3VtZW50LmV2YWx1YXRlKSA/IHNlbGZbJ2lubmVyJyArIERd
IDoKICAgICAgICAoQi5PcGVyYSkgPyBkb2N1bWVudC5ib2R5WydjbGllbnQnICsg
RF0gOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbJ2NsaWVudCcgKyBEXTsKICAg
IH0pOwogICAgcmV0dXJuIGRpbWVuc2lvbnM7CiAgfSwKCiAgZ2V0V2lkdGg6IGZ1
bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZ2V0RGltZW5zaW9ucygpLndpZHRo
OwogIH0sCgogIGdldEhlaWdodDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhp
cy5nZXREaW1lbnNpb25zKCkuaGVpZ2h0OwogIH0sCgogIGdldFNjcm9sbE9mZnNl
dHM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNl
dCgKICAgICAgd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudC5zY3JvbGxMZWZ0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCwK
ICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApOwogIH0K
fTsKLyogUG9ydGlvbnMgb2YgdGhlIFNlbGVjdG9yIGNsYXNzIGFyZSBkZXJpdmVk
IGZyb20gSmFjayBTbG9jdW3DouKCrOKEonMgRG9tUXVlcnksCiAqIHBhcnQgb2Yg
WVVJLUV4dCB2ZXJzaW9uIDAuNDAsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJt
cyBvZiBhbiBNSVQtc3R5bGUKICogbGljZW5zZS4gIFBsZWFzZSBzZWUgaHR0cDov
L3d3dy55dWktZXh0LmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uICovCgp2YXIg
U2VsZWN0b3IgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxpemU6IGZ1bmN0aW9u
KGV4cHJlc3Npb24pIHsKICAgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24u
c3RyaXAoKTsKICAgIHRoaXMuY29tcGlsZU1hdGNoZXIoKTsKICB9LAoKICBzaG91
bGRVc2VYUGF0aDogZnVuY3Rpb24oKSB7CiAgICBpZiAoIVByb3RvdHlwZS5Ccm93
c2VyRmVhdHVyZXMuWFBhdGgpIHJldHVybiBmYWxzZTsKCiAgICB2YXIgZSA9IHRo
aXMuZXhwcmVzc2lvbjsKCiAgICAvLyBTYWZhcmkgMyBjaG9rZXMgb24gOiotb2Yt
dHlwZSBhbmQgOmVtcHR5CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0
ICYmCiAgICAgKGUuaW5jbHVkZSgiLW9mLXR5cGUiKSB8fCBlLmluY2x1ZGUoIjpl
bXB0eSIpKSkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIC8vIFhQYXRoIGNhbid0
IGRvIG5hbWVzcGFjZWQgYXR0cmlidXRlcywgbm9yIGNhbiBpdCByZWFkCiAgICAv
LyB0aGUgImNoZWNrZWQiIHByb3BlcnR5IGZyb20gRE9NIG5vZGVzCiAgICBpZiAo
KC8oXFtbXHctXSo/Onw6Y2hlY2tlZCkvKS50ZXN0KHRoaXMuZXhwcmVzc2lvbikp
CiAgICAgIHJldHVybiBmYWxzZTsKCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICBj
b21waWxlTWF0Y2hlcjogZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5zaG91bGRV
c2VYUGF0aCgpKQogICAgICByZXR1cm4gdGhpcy5jb21waWxlWFBhdGhNYXRjaGVy
KCk7CgogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHBzID0gU2VsZWN0b3Iu
cGF0dGVybnMsIGggPSBTZWxlY3Rvci5oYW5kbGVycywKICAgICAgICBjID0gU2Vs
ZWN0b3IuY3JpdGVyaWEsIGxlLCBwLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2Fj
aGVbZV0pIHsKICAgICAgdGhpcy5tYXRjaGVyID0gU2VsZWN0b3IuX2NhY2hlW2Vd
OwogICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5tYXRjaGVyID0gWyJ0aGlz
Lm1hdGNoZXIgPSBmdW5jdGlvbihyb290KSB7IiwKICAgICAgICAgICAgICAgICAg
ICAidmFyIHIgPSByb290LCBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIGMgPSBmYWxz
ZSwgbjsiXTsKCiAgICB3aGlsZSAoZSAmJiBsZSAhPSBlICYmICgvXFMvKS50ZXN0
KGUpKSB7CiAgICAgIGxlID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewog
ICAgICAgIHAgPSBwc1tpXTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsK
ICAgICAgICAgIHRoaXMubWF0Y2hlci5wdXNoKE9iamVjdC5pc0Z1bmN0aW9uKGNb
aV0pID8gY1tpXShtKSA6CiAgICAJICAgICAgbmV3IFRlbXBsYXRlKGNbaV0pLmV2
YWx1YXRlKG0pKTsKICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwgJycpOwog
ICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgdGhp
cy5tYXRjaGVyLnB1c2goInJldHVybiBoLnVuaXF1ZShuKTtcbn0iKTsKICAgIGV2
YWwodGhpcy5tYXRjaGVyLmpvaW4oJ1xuJykpOwogICAgU2VsZWN0b3IuX2NhY2hl
W3RoaXMuZXhwcmVzc2lvbl0gPSB0aGlzLm1hdGNoZXI7CiAgfSwKCiAgY29tcGls
ZVhQYXRoTWF0Y2hlcjogZnVuY3Rpb24oKSB7CiAgICB2YXIgZSA9IHRoaXMuZXhw
cmVzc2lvbiwgcHMgPSBTZWxlY3Rvci5wYXR0ZXJucywKICAgICAgICB4ID0gU2Vs
ZWN0b3IueHBhdGgsIGxlLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2FjaGVbZV0p
IHsKICAgICAgdGhpcy54cGF0aCA9IFNlbGVjdG9yLl9jYWNoZVtlXTsgcmV0dXJu
OwogICAgfQoKICAgIHRoaXMubWF0Y2hlciA9IFsnLi8vKiddOwogICAgd2hpbGUg
KGUgJiYgbGUgIT0gZSAmJiAoL1xTLykudGVzdChlKSkgewogICAgICBsZSA9IGU7
CiAgICAgIGZvciAodmFyIGkgaW4gcHMpIHsKICAgICAgICBpZiAobSA9IGUubWF0
Y2gocHNbaV0pKSB7CiAgICAgICAgICB0aGlzLm1hdGNoZXIucHVzaChPYmplY3Qu
aXNGdW5jdGlvbih4W2ldKSA/IHhbaV0obSkgOgogICAgICAgICAgICBuZXcgVGVt
cGxhdGUoeFtpXSkuZXZhbHVhdGUobSkpOwogICAgICAgICAgZSA9IGUucmVwbGFj
ZShtWzBdLCAnJyk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0K
ICAgIH0KCiAgICB0aGlzLnhwYXRoID0gdGhpcy5tYXRjaGVyLmpvaW4oJycpOwog
ICAgU2VsZWN0b3IuX2NhY2hlW3RoaXMuZXhwcmVzc2lvbl0gPSB0aGlzLnhwYXRo
OwogIH0sCgogIGZpbmRFbGVtZW50czogZnVuY3Rpb24ocm9vdCkgewogICAgcm9v
dCA9IHJvb3QgfHwgZG9jdW1lbnQ7CiAgICBpZiAodGhpcy54cGF0aCkgcmV0dXJu
IGRvY3VtZW50Ll9nZXRFbGVtZW50c0J5WFBhdGgodGhpcy54cGF0aCwgcm9vdCk7
CiAgICByZXR1cm4gdGhpcy5tYXRjaGVyKHJvb3QpOwogIH0sCgogIG1hdGNoOiBm
dW5jdGlvbihlbGVtZW50KSB7CiAgICB0aGlzLnRva2VucyA9IFtdOwoKICAgIHZh
ciBlID0gdGhpcy5leHByZXNzaW9uLCBwcyA9IFNlbGVjdG9yLnBhdHRlcm5zLCBh
cyA9IFNlbGVjdG9yLmFzc2VydGlvbnM7CiAgICB2YXIgbGUsIHAsIG07CgogICAg
d2hpbGUgKGUgJiYgbGUgIT09IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAg
bGUgPSBlOwogICAgICBmb3IgKHZhciBpIGluIHBzKSB7CiAgICAgICAgcCA9IHBz
W2ldOwogICAgICAgIGlmIChtID0gZS5tYXRjaChwKSkgewogICAgICAgICAgLy8g
dXNlIHRoZSBTZWxlY3Rvci5hc3NlcnRpb25zIG1ldGhvZHMgdW5sZXNzIHRoZSBz
ZWxlY3RvcgogICAgICAgICAgLy8gaXMgdG9vIGNvbXBsZXguCiAgICAgICAgICBp
ZiAoYXNbaV0pIHsKICAgICAgICAgICAgdGhpcy50b2tlbnMucHVzaChbaSwgT2Jq
ZWN0LmNsb25lKG0pXSk7CiAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwg
JycpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gcmVsdWN0YW50
bHkgZG8gYSBkb2N1bWVudC13aWRlIHNlYXJjaAogICAgICAgICAgICAvLyBhbmQg
bG9vayBmb3IgYSBtYXRjaCBpbiB0aGUgYXJyYXkKICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZmluZEVsZW1lbnRzKGRvY3VtZW50KS5pbmNsdWRlKGVsZW1lbnQpOwog
ICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHZhciBtYXRj
aCA9IHRydWUsIG5hbWUsIG1hdGNoZXM7CiAgICBmb3IgKHZhciBpID0gMCwgdG9r
ZW47IHRva2VuID0gdGhpcy50b2tlbnNbaV07IGkrKykgewogICAgICBuYW1lID0g
dG9rZW5bMF0sIG1hdGNoZXMgPSB0b2tlblsxXTsKICAgICAgaWYgKCFTZWxlY3Rv
ci5hc3NlcnRpb25zW25hbWVdKGVsZW1lbnQsIG1hdGNoZXMpKSB7CiAgICAgICAg
bWF0Y2ggPSBmYWxzZTsgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4g
bWF0Y2g7CiAgfSwKCiAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJu
IHRoaXMuZXhwcmVzc2lvbjsKICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbigpIHsK
ICAgIHJldHVybiAiIzxTZWxlY3RvcjoiICsgdGhpcy5leHByZXNzaW9uLmluc3Bl
Y3QoKSArICI+IjsKICB9Cn0pOwoKT2JqZWN0LmV4dGVuZChTZWxlY3Rvciwgewog
IF9jYWNoZTogeyB9LAoKICB4cGF0aDogewogICAgZGVzY2VuZGFudDogICAiLy8q
IiwKICAgIGNoaWxkOiAgICAgICAgIi8qIiwKICAgIGFkamFjZW50OiAgICAgIi9m
b2xsb3dpbmctc2libGluZzo6KlsxXSIsCiAgICBsYXRlclNpYmxpbmc6ICcvZm9s
bG93aW5nLXNpYmxpbmc6OionLAogICAgdGFnTmFtZTogICAgICBmdW5jdGlvbiht
KSB7CiAgICAgIGlmIChtWzFdID09ICcqJykgcmV0dXJuICcnOwogICAgICByZXR1
cm4gIltsb2NhbC1uYW1lKCk9JyIgKyBtWzFdLnRvTG93ZXJDYXNlKCkgKwogICAg
ICAgICAgICAgIicgb3IgbG9jYWwtbmFtZSgpPSciICsgbVsxXS50b1VwcGVyQ2Fz
ZSgpICsgIiddIjsKICAgIH0sCiAgICBjbGFzc05hbWU6ICAgICJbY29udGFpbnMo
Y29uY2F0KCcgJywgQGNsYXNzLCAnICcpLCAnICN7MX0gJyldIiwKICAgIGlkOiAg
ICAgICAgICAgIltAaWQ9JyN7MX0nXSIsCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0
aW9uKG0pIHsKICAgICAgbVsxXSA9IG1bMV0udG9Mb3dlckNhc2UoKTsKICAgICAg
cmV0dXJuIG5ldyBUZW1wbGF0ZSgiW0AjezF9XSIpLmV2YWx1YXRlKG0pOwogICAg
fSwKICAgIGF0dHI6IGZ1bmN0aW9uKG0pIHsKICAgICAgbVsxXSA9IG1bMV0udG9M
b3dlckNhc2UoKTsKICAgICAgbVszXSA9IG1bNV0gfHwgbVs2XTsKICAgICAgcmV0
dXJuIG5ldyBUZW1wbGF0ZShTZWxlY3Rvci54cGF0aC5vcGVyYXRvcnNbbVsyXV0p
LmV2YWx1YXRlKG0pOwogICAgfSwKICAgIHBzZXVkbzogZnVuY3Rpb24obSkgewog
ICAgICB2YXIgaCA9IFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbbVsxXV07CiAgICAg
IGlmICghaCkgcmV0dXJuICcnOwogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24o
aCkpIHJldHVybiBoKG0pOwogICAgICByZXR1cm4gbmV3IFRlbXBsYXRlKFNlbGVj
dG9yLnhwYXRoLnBzZXVkb3NbbVsxXV0pLmV2YWx1YXRlKG0pOwogICAgfSwKICAg
IG9wZXJhdG9yczogewogICAgICAnPSc6ICAiW0AjezF9PScjezN9J10iLAogICAg
ICAnIT0nOiAiW0AjezF9IT0nI3szfSddIiwKICAgICAgJ149JzogIltzdGFydHMt
d2l0aChAI3sxfSwgJyN7M30nKV0iLAogICAgICAnJD0nOiAiW3N1YnN0cmluZyhA
I3sxfSwgKHN0cmluZy1sZW5ndGgoQCN7MX0pIC0gc3RyaW5nLWxlbmd0aCgnI3sz
fScpICsgMSkpPScjezN9J10iLAogICAgICAnKj0nOiAiW2NvbnRhaW5zKEAjezF9
LCAnI3szfScpXSIsCiAgICAgICd+PSc6ICJbY29udGFpbnMoY29uY2F0KCcgJywg
QCN7MX0sICcgJyksICcgI3szfSAnKV0iLAogICAgICAnfD0nOiAiW2NvbnRhaW5z
KGNvbmNhdCgnLScsIEAjezF9LCAnLScpLCAnLSN7M30tJyldIgogICAgfSwKICAg
IHBzZXVkb3M6IHsKICAgICAgJ2ZpcnN0LWNoaWxkJzogJ1tub3QocHJlY2VkaW5n
LXNpYmxpbmc6OiopXScsCiAgICAgICdsYXN0LWNoaWxkJzogICdbbm90KGZvbGxv
d2luZy1zaWJsaW5nOjoqKV0nLAogICAgICAnb25seS1jaGlsZCc6ICAnW25vdChw
cmVjZWRpbmctc2libGluZzo6KiBvciBmb2xsb3dpbmctc2libGluZzo6KildJywK
ICAgICAgJ2VtcHR5JzogICAgICAgIltjb3VudCgqKSA9IDAgYW5kIChjb3VudCh0
ZXh0KCkpID0gMCBvciB0cmFuc2xhdGUodGV4dCgpLCAnIFx0XHJcbicsICcnKSA9
ICcnKV0iLAogICAgICAnY2hlY2tlZCc6ICAgICAiW0BjaGVja2VkXSIsCiAgICAg
ICdkaXNhYmxlZCc6ICAgICJbQGRpc2FibGVkXSIsCiAgICAgICdlbmFibGVkJzog
ICAgICJbbm90KEBkaXNhYmxlZCldIiwKICAgICAgJ25vdCc6IGZ1bmN0aW9uKG0p
IHsKICAgICAgICB2YXIgZSA9IG1bNl0sIHAgPSBTZWxlY3Rvci5wYXR0ZXJucywK
ICAgICAgICAgICAgeCA9IFNlbGVjdG9yLnhwYXRoLCBsZSwgdjsKCiAgICAgICAg
dmFyIGV4Y2x1c2lvbiA9IFtdOwogICAgICAgIHdoaWxlIChlICYmIGxlICE9IGUg
JiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgICAgIGxlID0gZTsKICAgICAgICAg
IGZvciAodmFyIGkgaW4gcCkgewogICAgICAgICAgICBpZiAobSA9IGUubWF0Y2go
cFtpXSkpIHsKICAgICAgICAgICAgICB2ID0gT2JqZWN0LmlzRnVuY3Rpb24oeFtp
XSkgPyB4W2ldKG0pIDogbmV3IFRlbXBsYXRlKHhbaV0pLmV2YWx1YXRlKG0pOwog
ICAgICAgICAgICAgIGV4Y2x1c2lvbi5wdXNoKCIoIiArIHYuc3Vic3RyaW5nKDEs
IHYubGVuZ3RoIC0gMSkgKyAiKSIpOwogICAgICAgICAgICAgIGUgPSBlLnJlcGxh
Y2UobVswXSwgJycpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9
CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAiW25vdCgiICsg
ZXhjbHVzaW9uLmpvaW4oIiBhbmQgIikgKyAiKV0iOwogICAgICB9LAogICAgICAn
bnRoLWNoaWxkJzogICAgICBmdW5jdGlvbihtKSB7CiAgICAgICAgcmV0dXJuIFNl
bGVjdG9yLnhwYXRoLnBzZXVkb3MubnRoKCIoY291bnQoLi9wcmVjZWRpbmctc2li
bGluZzo6KikgKyAxKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ250aC1sYXN0LWNo
aWxkJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54cGF0
aC5wc2V1ZG9zLm50aCgiKGNvdW50KC4vZm9sbG93aW5nLXNpYmxpbmc6OiopICsg
MSkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtb2YtdHlwZSc6ICAgIGZ1bmN0
aW9uKG0pIHsKICAgICAgICByZXR1cm4gU2VsZWN0b3IueHBhdGgucHNldWRvcy5u
dGgoInBvc2l0aW9uKCkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtbGFzdC1v
Zi10eXBlJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54
cGF0aC5wc2V1ZG9zLm50aCgiKGxhc3QoKSArIDEgLSBwb3NpdGlvbigpKSAiLCBt
KTsKICAgICAgfSwKICAgICAgJ2ZpcnN0LW9mLXR5cGUnOiAgZnVuY3Rpb24obSkg
ewogICAgICAgIG1bNl0gPSAiMSI7IHJldHVybiBTZWxlY3Rvci54cGF0aC5wc2V1
ZG9zWydudGgtb2YtdHlwZSddKG0pOwogICAgICB9LAogICAgICAnbGFzdC1vZi10
eXBlJzogICBmdW5jdGlvbihtKSB7CiAgICAgICAgbVs2XSA9ICIxIjsgcmV0dXJu
IFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbJ250aC1sYXN0LW9mLXR5cGUnXShtKTsK
ICAgICAgfSwKICAgICAgJ29ubHktb2YtdHlwZSc6ICAgZnVuY3Rpb24obSkgewog
ICAgICAgIHZhciBwID0gU2VsZWN0b3IueHBhdGgucHNldWRvczsgcmV0dXJuIHBb
J2ZpcnN0LW9mLXR5cGUnXShtKSArIHBbJ2xhc3Qtb2YtdHlwZSddKG0pOwogICAg
ICB9LAogICAgICBudGg6IGZ1bmN0aW9uKGZyYWdtZW50LCBtKSB7CiAgICAgICAg
dmFyIG1tLCBmb3JtdWxhID0gbVs2XSwgcHJlZGljYXRlOwogICAgICAgIGlmIChm
b3JtdWxhID09ICdldmVuJykgZm9ybXVsYSA9ICcybiswJzsKICAgICAgICBpZiAo
Zm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAgICAgICAgaWYg
KG1tID0gZm9ybXVsYS5tYXRjaCgvXihcZCspJC8pKSAvLyBkaWdpdCBvbmx5CiAg
ICAgICAgICByZXR1cm4gJ1snICsgZnJhZ21lbnQgKyAiPSAiICsgbW1bMV0gKyAn
XSc7CiAgICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXigtP1xkKik/bigo
WystXSkoXGQrKSk/LykpIHsgLy8gYW4rYgogICAgICAgICAgaWYgKG1tWzFdID09
ICItIikgbW1bMV0gPSAtMTsKICAgICAgICAgIHZhciBhID0gbW1bMV0gPyBOdW1i
ZXIobW1bMV0pIDogMTsKICAgICAgICAgIHZhciBiID0gbW1bMl0gPyBOdW1iZXIo
bW1bMl0pIDogMDsKICAgICAgICAgIHByZWRpY2F0ZSA9ICJbKCgje2ZyYWdtZW50
fSAtICN7Yn0pIG1vZCAje2F9ID0gMCkgYW5kICIgKwogICAgICAgICAgIigoI3tm
cmFnbWVudH0gLSAje2J9KSBkaXYgI3thfSA+PSAwKV0iOwogICAgICAgICAgcmV0
dXJuIG5ldyBUZW1wbGF0ZShwcmVkaWNhdGUpLmV2YWx1YXRlKHsKICAgICAgICAg
ICAgZnJhZ21lbnQ6IGZyYWdtZW50LCBhOiBhLCBiOiBiIH0pOwogICAgICAgIH0K
ICAgICAgfQogICAgfQogIH0sCgogIGNyaXRlcmlhOiB7CiAgICB0YWdOYW1lOiAg
ICAgICduID0gaC50YWdOYW1lKG4sIHIsICIjezF9IiwgYyk7ICAgICAgYyA9IGZh
bHNlOycsCiAgICBjbGFzc05hbWU6ICAgICduID0gaC5jbGFzc05hbWUobiwgciwg
IiN7MX0iLCBjKTsgICAgYyA9IGZhbHNlOycsCiAgICBpZDogICAgICAgICAgICdu
ID0gaC5pZChuLCByLCAiI3sxfSIsIGMpOyAgICAgICAgICAgYyA9IGZhbHNlOycs
CiAgICBhdHRyUHJlc2VuY2U6ICduID0gaC5hdHRyUHJlc2VuY2UobiwgciwgIiN7
MX0iLCBjKTsgYyA9IGZhbHNlOycsCiAgICBhdHRyOiBmdW5jdGlvbihtKSB7CiAg
ICAgIG1bM10gPSAobVs1XSB8fCBtWzZdKTsKICAgICAgcmV0dXJuIG5ldyBUZW1w
bGF0ZSgnbiA9IGguYXR0cihuLCByLCAiI3sxfSIsICIjezN9IiwgIiN7Mn0iLCBj
KTsgYyA9IGZhbHNlOycpLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIHBzZXVkbzog
ZnVuY3Rpb24obSkgewogICAgICBpZiAobVs2XSkgbVs2XSA9IG1bNl0ucmVwbGFj
ZSgvIi9nLCAnXFwiJyk7CiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGUoJ24gPSBo
LnBzZXVkbyhuLCAiI3sxfSIsICIjezZ9IiwgciwgYyk7IGMgPSBmYWxzZTsnKS5l
dmFsdWF0ZShtKTsKICAgIH0sCiAgICBkZXNjZW5kYW50OiAgICdjID0gImRlc2Nl
bmRhbnQiOycsCiAgICBjaGlsZDogICAgICAgICdjID0gImNoaWxkIjsnLAogICAg
YWRqYWNlbnQ6ICAgICAnYyA9ICJhZGphY2VudCI7JywKICAgIGxhdGVyU2libGlu
ZzogJ2MgPSAibGF0ZXJTaWJsaW5nIjsnCiAgfSwKCiAgcGF0dGVybnM6IHsKICAg
IC8vIGNvbWJpbmF0b3JzIG11c3QgYmUgbGlzdGVkIGZpcnN0CiAgICAvLyAoYW5k
IGRlc2NlbmRhbnQgbmVlZHMgdG8gYmUgbGFzdCBjb21iaW5hdG9yKQogICAgbGF0
ZXJTaWJsaW5nOiAvXlxzKn5ccyovLAogICAgY2hpbGQ6ICAgICAgICAvXlxzKj5c
cyovLAogICAgYWRqYWNlbnQ6ICAgICAvXlxzKlwrXHMqLywKICAgIGRlc2NlbmRh
bnQ6ICAgL15ccy8sCgogICAgLy8gc2VsZWN0b3JzIGZvbGxvdwogICAgdGFnTmFt
ZTogICAgICAvXlxzKihcKnxbXHdcLV0rKShcYnwkKT8vLAogICAgaWQ6ICAgICAg
ICAgICAvXiMoW1x3XC1cKl0rKShcYnwkKS8sCiAgICBjbGFzc05hbWU6ICAgIC9e
XC4oW1x3XC1cKl0rKShcYnwkKS8sCiAgICBwc2V1ZG86Ci9eOigoZmlyc3R8bGFz
dHxudGh8bnRoLWxhc3R8b25seSkoLWNoaWxkfC1vZi10eXBlKXxlbXB0eXxjaGVj
a2VkfChlbnxkaXMpYWJsZWR8bm90KShcKCguKj8pXCkpPyhcYnwkfCg/PVxzfFs6
K34+XSkpLywKICAgIGF0dHJQcmVzZW5jZTogL15cWyhbXHddKylcXS8sCiAgICBh
dHRyOiAgICAgICAgIC9cWygoPzpbXHctXSo6KT9bXHctXSspXHMqKD86KFshXiQq
fnxdPz0pXHMqKChbJyJdKShbXlw0XSo/KVw0fChbXiciXVteXF1dKj8pKSk/XF0v
CiAgfSwKCiAgLy8gZm9yIFNlbGVjdG9yLm1hdGNoIGFuZCBFbGVtZW50I21hdGNo
CiAgYXNzZXJ0aW9uczogewogICAgdGFnTmFtZTogZnVuY3Rpb24oZWxlbWVudCwg
bWF0Y2hlcykgewogICAgICByZXR1cm4gbWF0Y2hlc1sxXS50b1VwcGVyQ2FzZSgp
ID09IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwogICAgfSwKCiAgICBj
bGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIG1hdGNoZXMpIHsKICAgICAgcmV0
dXJuIEVsZW1lbnQuaGFzQ2xhc3NOYW1lKGVsZW1lbnQsIG1hdGNoZXNbMV0pOwog
ICAgfSwKCiAgICBpZDogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hlcykgewogICAg
ICByZXR1cm4gZWxlbWVudC5pZCA9PT0gbWF0Y2hlc1sxXTsKICAgIH0sCgogICAg
YXR0clByZXNlbmNlOiBmdW5jdGlvbihlbGVtZW50LCBtYXRjaGVzKSB7CiAgICAg
IHJldHVybiBFbGVtZW50Lmhhc0F0dHJpYnV0ZShlbGVtZW50LCBtYXRjaGVzWzFd
KTsKICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hlcykg
ewogICAgICB2YXIgbm9kZVZhbHVlID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKGVs
ZW1lbnQsIG1hdGNoZXNbMV0pOwogICAgICByZXR1cm4gbm9kZVZhbHVlICYmIFNl
bGVjdG9yLm9wZXJhdG9yc1ttYXRjaGVzWzJdXShub2RlVmFsdWUsIG1hdGNoZXNb
NV0gfHwgbWF0Y2hlc1s2XSk7CiAgICB9CiAgfSwKCiAgaGFuZGxlcnM6IHsKICAg
IC8vIFVUSUxJVFkgRlVOQ1RJT05TCiAgICAvLyBqb2lucyB0d28gY29sbGVjdGlv
bnMKICAgIGNvbmNhdDogZnVuY3Rpb24oYSwgYikgewogICAgICBmb3IgKHZhciBp
ID0gMCwgbm9kZTsgbm9kZSA9IGJbaV07IGkrKykKICAgICAgICBhLnB1c2gobm9k
ZSk7CiAgICAgIHJldHVybiBhOwogICAgfSwKCiAgICAvLyBtYXJrcyBhbiBhcnJh
eSBvZiBub2RlcyBmb3IgY291bnRpbmcKICAgIG1hcms6IGZ1bmN0aW9uKG5vZGVz
KSB7CiAgICAgIHZhciBfdHJ1ZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwog
ICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKysp
CiAgICAgICAgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlID0gX3RydWU7CiAgICAg
IHJldHVybiBub2RlczsKICAgIH0sCgogICAgdW5tYXJrOiBmdW5jdGlvbihub2Rl
cykgewogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ld
OyBpKyspCiAgICAgICAgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlID0gdW5kZWZp
bmVkOwogICAgICByZXR1cm4gbm9kZXM7CiAgICB9LAoKICAgIC8vIG1hcmsgZWFj
aCBjaGlsZCBub2RlIHdpdGggaXRzIHBvc2l0aW9uIChmb3IgbnRoIGNhbGxzKQog
ICAgLy8gIm9mVHlwZSIgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSdyZSBpbmRl
eGluZyBmb3IgbnRoLW9mLXR5cGUKICAgIC8vIHJhdGhlciB0aGFuIG50aC1jaGls
ZAogICAgaW5kZXg6IGZ1bmN0aW9uKHBhcmVudE5vZGUsIHJldmVyc2UsIG9mVHlw
ZSkgewogICAgICBwYXJlbnROb2RlLl9jb3VudGVkQnlQcm90b3R5cGUgPSBQcm90
b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAg
ICBmb3IgKHZhciBub2RlcyA9IHBhcmVudE5vZGUuY2hpbGROb2RlcywgaSA9IG5v
ZGVzLmxlbmd0aCAtIDEsIGogPSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAg
dmFyIG5vZGUgPSBub2Rlc1tpXTsKICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBl
ID09IDEgJiYgKCFvZlR5cGUgfHwgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlKSkg
bm9kZS5ub2RlSW5kZXggPSBqKys7CiAgICAgICAgfQogICAgICB9IGVsc2Ugewog
ICAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gMSwgbm9kZXMgPSBwYXJlbnROb2Rl
LmNoaWxkTm9kZXM7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgaWYg
KG5vZGUubm9kZVR5cGUgPT0gMSAmJiAoIW9mVHlwZSB8fCBub2RlLl9jb3VudGVk
QnlQcm90b3R5cGUpKSBub2RlLm5vZGVJbmRleCA9IGorKzsKICAgICAgfQogICAg
fSwKCiAgICAvLyBmaWx0ZXJzIG91dCBkdXBsaWNhdGVzIGFuZCBleHRlbmRzIGFs
bCBub2RlcwogICAgdW5pcXVlOiBmdW5jdGlvbihub2RlcykgewogICAgICBpZiAo
bm9kZXMubGVuZ3RoID09IDApIHJldHVybiBub2RlczsKICAgICAgdmFyIHJlc3Vs
dHMgPSBbXSwgbjsKICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBub2Rlcy5sZW5n
dGg7IGkgPCBsOyBpKyspCiAgICAgICAgaWYgKCEobiA9IG5vZGVzW2ldKS5fY291
bnRlZEJ5UHJvdG90eXBlKSB7CiAgICAgICAgICBuLl9jb3VudGVkQnlQcm90b3R5
cGUgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgICAgICAgIHJlc3VsdHMu
cHVzaChFbGVtZW50LmV4dGVuZChuKSk7CiAgICAgICAgfQogICAgICByZXR1cm4g
U2VsZWN0b3IuaGFuZGxlcnMudW5tYXJrKHJlc3VsdHMpOwogICAgfSwKCiAgICAv
LyBDT01CSU5BVE9SIEZVTkNUSU9OUwogICAgZGVzY2VuZGFudDogZnVuY3Rpb24o
bm9kZXMpIHsKICAgICAgdmFyIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAg
Zm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVz
W2ldOyBpKyspCiAgICAgICAgaC5jb25jYXQocmVzdWx0cywgbm9kZS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnKicpKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9
LAoKICAgIGNoaWxkOiBmdW5jdGlvbihub2RlcykgewogICAgICB2YXIgaCA9IFNl
bGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9
IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewogICAgICAgIGZvciAo
dmFyIGogPSAwLCBjaGlsZDsgY2hpbGQgPSBub2RlLmNoaWxkTm9kZXNbal07IGor
KykKICAgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PSAxICYmIGNoaWxkLnRh
Z05hbWUgIT0gJyEnKSByZXN1bHRzLnB1c2goY2hpbGQpOwogICAgICB9CiAgICAg
IHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICBhZGphY2VudDogZnVuY3Rpb24o
bm9kZXMpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9k
ZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICB2YXIgbmV4dCA9IHRo
aXMubmV4dEVsZW1lbnRTaWJsaW5nKG5vZGUpOwogICAgICAgIGlmIChuZXh0KSBy
ZXN1bHRzLnB1c2gobmV4dCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7
CiAgICB9LAoKICAgIGxhdGVyU2libGluZzogZnVuY3Rpb24obm9kZXMpIHsKICAg
ICAgdmFyIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgZm9yICh2YXIgaSA9
IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAg
ICAgICAgaC5jb25jYXQocmVzdWx0cywgRWxlbWVudC5uZXh0U2libGluZ3Mobm9k
ZSkpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgbmV4dEVsZW1l
bnRTaWJsaW5nOiBmdW5jdGlvbihub2RlKSB7CiAgICAgIHdoaWxlIChub2RlID0g
bm9kZS5uZXh0U2libGluZykKCSAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEp
IHJldHVybiBub2RlOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgcHJl
dmlvdXNFbGVtZW50U2libGluZzogZnVuY3Rpb24obm9kZSkgewogICAgICB3aGls
ZSAobm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nKQogICAgICAgIGlmIChub2Rl
Lm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAgICByZXR1cm4gbnVsbDsK
ICAgIH0sCgogICAgLy8gVE9LRU4gRlVOQ1RJT05TCiAgICB0YWdOYW1lOiBmdW5j
dGlvbihub2Rlcywgcm9vdCwgdGFnTmFtZSwgY29tYmluYXRvcikgewogICAgICB2
YXIgdVRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICAgIHZhciBy
ZXN1bHRzID0gW10sIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgaWYgKG5v
ZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsKICAgICAgICAgIC8vIGZh
c3RsYW5lIGZvciBvcmRpbmFyeSBkZXNjZW5kYW50IGNvbWJpbmF0b3JzCiAgICAg
ICAgICBpZiAoY29tYmluYXRvciA9PSAiZGVzY2VuZGFudCIpIHsKICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQog
ICAgICAgICAgICAgIGguY29uY2F0KHJlc3VsdHMsIG5vZGUuZ2V0RWxlbWVudHNC
eVRhZ05hbWUodGFnTmFtZSkpOwogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsK
ICAgICAgICAgIH0gZWxzZSBub2RlcyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMp
OwogICAgICAgICAgaWYgKHRhZ05hbWUgPT0gIioiKSByZXR1cm4gbm9kZXM7CiAg
ICAgICAgfQogICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gbm9k
ZXNbaV07IGkrKykKICAgICAgICAgIGlmIChub2RlLnRhZ05hbWUudG9VcHBlckNh
c2UoKSA9PT0gdVRhZ05hbWUpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgICBy
ZXR1cm4gcmVzdWx0czsKICAgICAgfSBlbHNlIHJldHVybiByb290LmdldEVsZW1l
bnRzQnlUYWdOYW1lKHRhZ05hbWUpOwogICAgfSwKCiAgICBpZDogZnVuY3Rpb24o
bm9kZXMsIHJvb3QsIGlkLCBjb21iaW5hdG9yKSB7CiAgICAgIHZhciB0YXJnZXRO
b2RlID0gJChpZCksIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgaWYgKCF0
YXJnZXROb2RlKSByZXR1cm4gW107CiAgICAgIGlmICghbm9kZXMgJiYgcm9vdCA9
PSBkb2N1bWVudCkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgaWYgKG5vZGVz
KSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsKICAgICAgICAgIGlmIChjb21i
aW5hdG9yID09ICdjaGlsZCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAs
IG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlmICh0
YXJnZXROb2RlLnBhcmVudE5vZGUgPT0gbm9kZSkgcmV0dXJuIFt0YXJnZXROb2Rl
XTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRvciA9PSAnZGVzY2VuZGFu
dCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBu
b2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlmIChFbGVtZW50LmRlc2NlbmRh
bnRPZih0YXJnZXROb2RlLCBub2RlKSkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAg
ICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRvciA9PSAnYWRqYWNlbnQnKSB7CiAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gbm9kZXNbaV07
IGkrKykKICAgICAgICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlv
dXNFbGVtZW50U2libGluZyh0YXJnZXROb2RlKSA9PSBub2RlKQogICAgICAgICAg
ICAgICAgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBub2Rl
cyA9IGhbY29tYmluYXRvcl0obm9kZXMpOwogICAgICAgIH0KICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAg
ICBpZiAobm9kZSA9PSB0YXJnZXROb2RlKSByZXR1cm4gW3RhcmdldE5vZGVdOwog
ICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgICByZXR1cm4gKHRhcmdldE5v
ZGUgJiYgRWxlbWVudC5kZXNjZW5kYW50T2YodGFyZ2V0Tm9kZSwgcm9vdCkpID8g
W3RhcmdldE5vZGVdIDogW107CiAgICB9LAoKICAgIGNsYXNzTmFtZTogZnVuY3Rp
b24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSwgY29tYmluYXRvcikgewogICAgICBp
ZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9kZXMgPSB0aGlzW2NvbWJpbmF0b3Jd
KG5vZGVzKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLmhhbmRsZXJzLmJ5Q2xhc3NO
YW1lKG5vZGVzLCByb290LCBjbGFzc05hbWUpOwogICAgfSwKCiAgICBieUNsYXNz
TmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSkgewogICAgICBp
ZiAoIW5vZGVzKSBub2RlcyA9IFNlbGVjdG9yLmhhbmRsZXJzLmRlc2NlbmRhbnQo
W3Jvb3RdKTsKICAgICAgdmFyIG5lZWRsZSA9ICcgJyArIGNsYXNzTmFtZSArICcg
JzsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZSwgbm9k
ZUNsYXNzTmFtZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBub2Rl
Q2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7CiAgICAgICAgaWYgKG5vZGVDbGFz
c05hbWUubGVuZ3RoID09IDApIGNvbnRpbnVlOwogICAgICAgIGlmIChub2RlQ2xh
c3NOYW1lID09IGNsYXNzTmFtZSB8fCAoJyAnICsgbm9kZUNsYXNzTmFtZSArICcg
JykuaW5jbHVkZShuZWVkbGUpKQogICAgICAgICAgcmVzdWx0cy5wdXNoKG5vZGUp
OwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICBhdHRy
UHJlc2VuY2U6IGZ1bmN0aW9uKG5vZGVzLCByb290LCBhdHRyLCBjb21iaW5hdG9y
KSB7CiAgICAgIGlmICghbm9kZXMpIG5vZGVzID0gcm9vdC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiKiIpOwogICAgICBpZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9k
ZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAgICAgdmFyIHJlc3VsdHMg
PSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tp
XTsgaSsrKQogICAgICAgIGlmIChFbGVtZW50Lmhhc0F0dHJpYnV0ZShub2RlLCBh
dHRyKSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICByZXR1cm4gcmVzdWx0czsK
ICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGF0dHIsIHZh
bHVlLCBvcGVyYXRvciwgY29tYmluYXRvcikgewogICAgICBpZiAoIW5vZGVzKSBu
b2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgICAgaWYg
KG5vZGVzICYmIGNvbWJpbmF0b3IpIG5vZGVzID0gdGhpc1tjb21iaW5hdG9yXShu
b2Rlcyk7CiAgICAgIHZhciBoYW5kbGVyID0gU2VsZWN0b3Iub3BlcmF0b3JzW29w
ZXJhdG9yXSwgcmVzdWx0cyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gMCwgbm9k
ZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICB2YXIgbm9kZVZhbHVl
ID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKG5vZGUsIGF0dHIpOwogICAgICAgIGlm
IChub2RlVmFsdWUgPT09IG51bGwpIGNvbnRpbnVlOwogICAgICAgIGlmIChoYW5k
bGVyKG5vZGVWYWx1ZSwgdmFsdWUpKSByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAg
IH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIHBzZXVkbzogZnVu
Y3Rpb24obm9kZXMsIG5hbWUsIHZhbHVlLCByb290LCBjb21iaW5hdG9yKSB7CiAg
ICAgIGlmIChub2RlcyAmJiBjb21iaW5hdG9yKSBub2RlcyA9IHRoaXNbY29tYmlu
YXRvcl0obm9kZXMpOwogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBz
ZXVkb3NbbmFtZV0obm9kZXMsIHZhbHVlLCByb290KTsKICAgIH0KICB9LAoKICBw
c2V1ZG9zOiB7CiAgICAnZmlyc3QtY2hpbGQnOiBmdW5jdGlvbihub2RlcywgdmFs
dWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwg
bm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoU2VsZWN0
b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGluZyhub2RlKSkgY29udGlu
dWU7CiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAg
cmV0dXJuIHJlc3VsdHM7CiAgICB9LAogICAgJ2xhc3QtY2hpbGQnOiBmdW5jdGlv
bihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJl
c3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAg
ICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMubmV4dEVsZW1lbnRTaWJsaW5nKG5vZGUp
KSBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAg
fQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCiAgICAnb25seS1jaGlsZCc6
IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICB2YXIgaCA9IFNl
bGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9
IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAoIWgu
cHJldmlvdXNFbGVtZW50U2libGluZyhub2RlKSAmJiAhaC5uZXh0RWxlbWVudFNp
Ymxpbmcobm9kZSkpCiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAg
IHJldHVybiByZXN1bHRzOwogICAgfSwKICAgICdudGgtY2hpbGQnOiAgICAgICAg
ZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNl
bGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCBmb3JtdWxhLCByb290KTsKICAgIH0s
CiAgICAnbnRoLWxhc3QtY2hpbGQnOiAgIGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxh
LCByb290KSB7CiAgICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2Rl
cywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSk7CiAgICB9LAogICAgJ250aC1vZi10eXBl
JzogICAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICBy
ZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsIGZvcm11bGEsIHJvb3Qs
IGZhbHNlLCB0cnVlKTsKICAgIH0sCiAgICAnbnRoLWxhc3Qtb2YtdHlwZSc6IGZ1
bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxl
Y3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSwgdHJ1
ZSk7CiAgICB9LAogICAgJ2ZpcnN0LW9mLXR5cGUnOiAgICBmdW5jdGlvbihub2Rl
cywgZm9ybXVsYSwgcm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRv
cy5udGgobm9kZXMsICIxIiwgcm9vdCwgZmFsc2UsIHRydWUpOwogICAgfSwKICAg
ICdsYXN0LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJv
b3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCAi
MSIsIHJvb3QsIHRydWUsIHRydWUpOwogICAgfSwKICAgICdvbmx5LW9mLXR5cGUn
OiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgdmFy
IHAgPSBTZWxlY3Rvci5wc2V1ZG9zOwogICAgICByZXR1cm4gcFsnbGFzdC1vZi10
eXBlJ10ocFsnZmlyc3Qtb2YtdHlwZSddKG5vZGVzLCBmb3JtdWxhLCByb290KSwg
Zm9ybXVsYSwgcm9vdCk7CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgdGhlIGFuK2Ig
bG9naWMKICAgIGdldEluZGljZXM6IGZ1bmN0aW9uKGEsIGIsIHRvdGFsKSB7CiAg
ICAgIGlmIChhID09IDApIHJldHVybiBiID4gMCA/IFtiXSA6IFtdOwogICAgICBy
ZXR1cm4gJFIoMSwgdG90YWwpLmluamVjdChbXSwgZnVuY3Rpb24obWVtbywgaSkg
ewogICAgICAgIGlmICgwID09IChpIC0gYikgJSBhICYmIChpIC0gYikgLyBhID49
IDApIG1lbW8ucHVzaChpKTsKICAgICAgICByZXR1cm4gbWVtbzsKICAgICAgfSk7
CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgbnRoKC1sYXN0KS1jaGlsZCwgbnRoKC1s
YXN0KS1vZi10eXBlLCBhbmQgKGZpcnN0fGxhc3QpLW9mLXR5cGUKICAgIG50aDog
ZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QsIHJldmVyc2UsIG9mVHlwZSkg
ewogICAgICBpZiAobm9kZXMubGVuZ3RoID09IDApIHJldHVybiBbXTsKICAgICAg
aWYgKGZvcm11bGEgPT0gJ2V2ZW4nKSBmb3JtdWxhID0gJzJuKzAnOwogICAgICBp
ZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAgICAgIHZh
ciBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIHJlc3VsdHMgPSBbXSwgaW5kZXhlZCA9
IFtdLCBtOwogICAgICBoLm1hcmsobm9kZXMpOwogICAgICBmb3IgKHZhciBpID0g
MCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoIW5v
ZGUucGFyZW50Tm9kZS5fY291bnRlZEJ5UHJvdG90eXBlKSB7CiAgICAgICAgICBo
LmluZGV4KG5vZGUucGFyZW50Tm9kZSwgcmV2ZXJzZSwgb2ZUeXBlKTsKICAgICAg
ICAgIGluZGV4ZWQucHVzaChub2RlLnBhcmVudE5vZGUpOwogICAgICAgIH0KICAg
ICAgfQogICAgICBpZiAoZm9ybXVsYS5tYXRjaCgvXlxkKyQvKSkgeyAvLyBqdXN0
IGEgbnVtYmVyCiAgICAgICAgZm9ybXVsYSA9IE51bWJlcihmb3JtdWxhKTsKICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKysp
CiAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0gZm9ybXVsYSkgcmVzdWx0
cy5wdXNoKG5vZGUpOwogICAgICB9IGVsc2UgaWYgKG0gPSBmb3JtdWxhLm1hdGNo
KC9eKC0/XGQqKT9uKChbKy1dKShcZCspKT8vKSkgeyAvLyBhbitiCiAgICAgICAg
aWYgKG1bMV0gPT0gIi0iKSBtWzFdID0gLTE7CiAgICAgICAgdmFyIGEgPSBtWzFd
ID8gTnVtYmVyKG1bMV0pIDogMTsKICAgICAgICB2YXIgYiA9IG1bMl0gPyBOdW1i
ZXIobVsyXSkgOiAwOwogICAgICAgIHZhciBpbmRpY2VzID0gU2VsZWN0b3IucHNl
dWRvcy5nZXRJbmRpY2VzKGEsIGIsIG5vZGVzLmxlbmd0aCk7CiAgICAgICAgZm9y
ICh2YXIgaSA9IDAsIG5vZGUsIGwgPSBpbmRpY2VzLmxlbmd0aDsgbm9kZSA9IG5v
ZGVzW2ldOyBpKyspIHsKICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbDsg
aisrKQogICAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0gaW5kaWNlc1tq
XSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgIH0KICAgICAgfQogICAgICBo
LnVubWFyayhub2Rlcyk7CiAgICAgIGgudW5tYXJrKGluZGV4ZWQpOwogICAgICBy
ZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2VtcHR5JzogZnVuY3Rpb24obm9k
ZXMsIHZhbHVlLCByb290KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRz
ID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKSB7CiAgICAgICAgLy8g
SUUgdHJlYXRzIGNvbW1lbnRzIGFzIGVsZW1lbnQgbm9kZXMKICAgICAgICBpZiAo
bm9kZS50YWdOYW1lID09ICchJyB8fCAobm9kZS5maXJzdENoaWxkICYmICFub2Rl
LmlubmVySFRNTC5tYXRjaCgvXlxzKiQvKSkpIGNvbnRpbnVlOwogICAgICAgIHJl
c3VsdHMucHVzaChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsK
ICAgIH0sCgogICAgJ25vdCc6IGZ1bmN0aW9uKG5vZGVzLCBzZWxlY3Rvciwgcm9v
dCkgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzLCBzZWxlY3RvclR5
cGUsIG07CiAgICAgIHZhciBleGNsdXNpb25zID0gbmV3IFNlbGVjdG9yKHNlbGVj
dG9yKS5maW5kRWxlbWVudHMocm9vdCk7CiAgICAgIGgubWFyayhleGNsdXNpb25z
KTsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9k
ZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYgKCFub2RlLl9jb3VudGVkQnlQ
cm90b3R5cGUpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgaC51bm1hcmsoZXhj
bHVzaW9ucyk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICAnZW5h
YmxlZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3Ig
KHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07
IGkrKykKICAgICAgICBpZiAoIW5vZGUuZGlzYWJsZWQpIHJlc3VsdHMucHVzaChu
b2RlKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgICdkaXNhYmxl
ZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZh
ciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkr
KykKICAgICAgICBpZiAobm9kZS5kaXNhYmxlZCkgcmVzdWx0cy5wdXNoKG5vZGUp
OwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2NoZWNrZWQnOiBm
dW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9
IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAg
ICAgICAgaWYgKG5vZGUuY2hlY2tlZCkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAg
ICByZXR1cm4gcmVzdWx0czsKICAgIH0KICB9LAoKICBvcGVyYXRvcnM6IHsKICAg
ICc9JzogIGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudiA9PSB2OyB9LAogICAg
JyE9JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0dXJuIG52ICE9IHY7IH0sCiAgICAn
Xj0nOiBmdW5jdGlvbihudiwgdikgeyByZXR1cm4gbnYuc3RhcnRzV2l0aCh2KTsg
fSwKICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5lbmRzV2l0
aCh2KTsgfSwKICAgICcqPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5p
bmNsdWRlKHYpOyB9LAogICAgJ349JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0dXJu
ICgnICcgKyBudiArICcgJykuaW5jbHVkZSgnICcgKyB2ICsgJyAnKTsgfSwKICAg
ICd8PSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiAoJy0nICsgbnYudG9VcHBl
ckNhc2UoKSArICctJykuaW5jbHVkZSgnLScgKyB2LnRvVXBwZXJDYXNlKCkgKyAn
LScpOyB9CiAgfSwKCiAgc3BsaXQ6IGZ1bmN0aW9uKGV4cHJlc3Npb24pIHsKICAg
IHZhciBleHByZXNzaW9ucyA9IFtdOwogICAgZXhwcmVzc2lvbi5zY2FuKC8oKFtc
dyM6Ln4+KygpXHMtXSt8XCp8XFsuKj9cXSkrKVxzKigsfCQpLywgZnVuY3Rpb24o
bSkgewogICAgICBleHByZXNzaW9ucy5wdXNoKG1bMV0uc3RyaXAoKSk7CiAgICB9
KTsKICAgIHJldHVybiBleHByZXNzaW9uczsKICB9LAoKICBtYXRjaEVsZW1lbnRz
OiBmdW5jdGlvbihlbGVtZW50cywgZXhwcmVzc2lvbikgewogICAgdmFyIG1hdGNo
ZXMgPSAkJChleHByZXNzaW9uKSwgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAg
aC5tYXJrKG1hdGNoZXMpOwogICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBb
XSwgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnRzW2ldOyBpKyspCiAgICAgIGlm
IChlbGVtZW50Ll9jb3VudGVkQnlQcm90b3R5cGUpIHJlc3VsdHMucHVzaChlbGVt
ZW50KTsKICAgIGgudW5tYXJrKG1hdGNoZXMpOwogICAgcmV0dXJuIHJlc3VsdHM7
CiAgfSwKCiAgZmluZEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnRzLCBleHByZXNz
aW9uLCBpbmRleCkgewogICAgaWYgKE9iamVjdC5pc051bWJlcihleHByZXNzaW9u
KSkgewogICAgICBpbmRleCA9IGV4cHJlc3Npb247IGV4cHJlc3Npb24gPSBmYWxz
ZTsKICAgIH0KICAgIHJldHVybiBTZWxlY3Rvci5tYXRjaEVsZW1lbnRzKGVsZW1l
bnRzLCBleHByZXNzaW9uIHx8ICcqJylbaW5kZXggfHwgMF07CiAgfSwKCiAgZmlu
ZENoaWxkRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb25zKSB7
CiAgICBleHByZXNzaW9ucyA9IFNlbGVjdG9yLnNwbGl0KGV4cHJlc3Npb25zLmpv
aW4oJywnKSk7CiAgICB2YXIgcmVzdWx0cyA9IFtdLCBoID0gU2VsZWN0b3IuaGFu
ZGxlcnM7CiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGV4cHJlc3Npb25zLmxlbmd0
aCwgc2VsZWN0b3I7IGkgPCBsOyBpKyspIHsKICAgICAgc2VsZWN0b3IgPSBuZXcg
U2VsZWN0b3IoZXhwcmVzc2lvbnNbaV0uc3RyaXAoKSk7CiAgICAgIGguY29uY2F0
KHJlc3VsdHMsIHNlbGVjdG9yLmZpbmRFbGVtZW50cyhlbGVtZW50KSk7CiAgICB9
CiAgICByZXR1cm4gKGwgPiAxKSA/IGgudW5pcXVlKHJlc3VsdHMpIDogcmVzdWx0
czsKICB9Cn0pOwoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgT2JqZWN0
LmV4dGVuZChTZWxlY3Rvci5oYW5kbGVycywgewogICAgLy8gSUUgcmV0dXJucyBj
b21tZW50IG5vZGVzIG9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikuCiAgICAv
LyBGaWx0ZXIgdGhlbSBvdXQuCiAgICBjb25jYXQ6IGZ1bmN0aW9uKGEsIGIpIHsK
ICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBiW2ldOyBpKyspCiAg
ICAgICAgaWYgKG5vZGUudGFnTmFtZSAhPT0gIiEiKSBhLnB1c2gobm9kZSk7CiAg
ICAgIHJldHVybiBhOwogICAgfSwKCiAgICAvLyBJRSBpbXByb3Blcmx5IHNlcmlh
bGl6ZXMgX2NvdW50ZWRCeVByb3RvdHlwZSBpbiAoaW5uZXJ8b3V0ZXIpSFRNTC4K
ICAgIHVubWFyazogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgZm9yICh2YXIgaSA9
IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIG5vZGUucmVt
b3ZlQXR0cmlidXRlKCdfY291bnRlZEJ5UHJvdG90eXBlJyk7CiAgICAgIHJldHVy
biBub2RlczsKICAgIH0KICB9KTsKfQoKZnVuY3Rpb24gJCQoKSB7CiAgcmV0dXJu
IFNlbGVjdG9yLmZpbmRDaGlsZEVsZW1lbnRzKGRvY3VtZW50LCAkQShhcmd1bWVu
dHMpKTsKfQp2YXIgRm9ybSA9IHsKICByZXNldDogZnVuY3Rpb24oZm9ybSkgewog
ICAgJChmb3JtKS5yZXNldCgpOwogICAgcmV0dXJuIGZvcm07CiAgfSwKCiAgc2Vy
aWFsaXplRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1lbnRzLCBvcHRpb25zKSB7CiAg
ICBpZiAodHlwZW9mIG9wdGlvbnMgIT0gJ29iamVjdCcpIG9wdGlvbnMgPSB7IGhh
c2g6ICEhb3B0aW9ucyB9OwogICAgZWxzZSBpZiAoT2JqZWN0LmlzVW5kZWZpbmVk
KG9wdGlvbnMuaGFzaCkpIG9wdGlvbnMuaGFzaCA9IHRydWU7CiAgICB2YXIga2V5
LCB2YWx1ZSwgc3VibWl0dGVkID0gZmFsc2UsIHN1Ym1pdCA9IG9wdGlvbnMuc3Vi
bWl0OwoKICAgIHZhciBkYXRhID0gZWxlbWVudHMuaW5qZWN0KHsgfSwgZnVuY3Rp
b24ocmVzdWx0LCBlbGVtZW50KSB7CiAgICAgIGlmICghZWxlbWVudC5kaXNhYmxl
ZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAgICAgICBrZXkgPSBlbGVtZW50Lm5hbWU7
IHZhbHVlID0gJChlbGVtZW50KS5nZXRWYWx1ZSgpOwogICAgICAgIGlmICh2YWx1
ZSAhPSBudWxsICYmIChlbGVtZW50LnR5cGUgIT0gJ3N1Ym1pdCcgfHwgKCFzdWJt
aXR0ZWQgJiYKICAgICAgICAgICAgc3VibWl0ICE9PSBmYWxzZSAmJiAoIXN1Ym1p
dCB8fCBrZXkgPT0gc3VibWl0KSAmJiAoc3VibWl0dGVkID0gdHJ1ZSkpKSkgewog
ICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpIHsKICAgICAgICAgICAgLy8gYSBr
ZXkgaXMgYWxyZWFkeSBwcmVzZW50OyBjb25zdHJ1Y3QgYW4gYXJyYXkgb2YgdmFs
dWVzCiAgICAgICAgICAgIGlmICghT2JqZWN0LmlzQXJyYXkocmVzdWx0W2tleV0p
KSByZXN1bHRba2V5XSA9IFtyZXN1bHRba2V5XV07CiAgICAgICAgICAgIHJlc3Vs
dFtrZXldLnB1c2godmFsdWUpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBy
ZXN1bHRba2V5XSA9IHZhbHVlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1
cm4gcmVzdWx0OwogICAgfSk7CgogICAgcmV0dXJuIG9wdGlvbnMuaGFzaCA/IGRh
dGEgOiBPYmplY3QudG9RdWVyeVN0cmluZyhkYXRhKTsKICB9Cn07CgpGb3JtLk1l
dGhvZHMgPSB7CiAgc2VyaWFsaXplOiBmdW5jdGlvbihmb3JtLCBvcHRpb25zKSB7
CiAgICByZXR1cm4gRm9ybS5zZXJpYWxpemVFbGVtZW50cyhGb3JtLmdldEVsZW1l
bnRzKGZvcm0pLCBvcHRpb25zKTsKICB9LAoKICBnZXRFbGVtZW50czogZnVuY3Rp
b24oZm9ybSkgewogICAgcmV0dXJuICRBKCQoZm9ybSkuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJyonKSkuaW5qZWN0KFtdLAogICAgICBmdW5jdGlvbihlbGVtZW50cywg
Y2hpbGQpIHsKICAgICAgICBpZiAoRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzW2No
aWxkLnRhZ05hbWUudG9Mb3dlckNhc2UoKV0pCiAgICAgICAgICBlbGVtZW50cy5w
dXNoKEVsZW1lbnQuZXh0ZW5kKGNoaWxkKSk7CiAgICAgICAgcmV0dXJuIGVsZW1l
bnRzOwogICAgICB9CiAgICApOwogIH0sCgogIGdldElucHV0czogZnVuY3Rpb24o
Zm9ybSwgdHlwZU5hbWUsIG5hbWUpIHsKICAgIGZvcm0gPSAkKGZvcm0pOwogICAg
dmFyIGlucHV0cyA9IGZvcm0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7
CgogICAgaWYgKCF0eXBlTmFtZSAmJiAhbmFtZSkgcmV0dXJuICRBKGlucHV0cyku
bWFwKEVsZW1lbnQuZXh0ZW5kKTsKCiAgICBmb3IgKHZhciBpID0gMCwgbWF0Y2hp
bmdJbnB1dHMgPSBbXSwgbGVuZ3RoID0gaW5wdXRzLmxlbmd0aDsgaSA8IGxlbmd0
aDsgaSsrKSB7CiAgICAgIHZhciBpbnB1dCA9IGlucHV0c1tpXTsKICAgICAgaWYg
KCh0eXBlTmFtZSAmJiBpbnB1dC50eXBlICE9IHR5cGVOYW1lKSB8fCAobmFtZSAm
JiBpbnB1dC5uYW1lICE9IG5hbWUpKQogICAgICAgIGNvbnRpbnVlOwogICAgICBt
YXRjaGluZ0lucHV0cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKGlucHV0KSk7CiAgICB9
CgogICAgcmV0dXJuIG1hdGNoaW5nSW5wdXRzOwogIH0sCgogIGRpc2FibGU6IGZ1
bmN0aW9uKGZvcm0pIHsKICAgIGZvcm0gPSAkKGZvcm0pOwogICAgRm9ybS5nZXRF
bGVtZW50cyhmb3JtKS5pbnZva2UoJ2Rpc2FibGUnKTsKICAgIHJldHVybiBmb3Jt
OwogIH0sCgogIGVuYWJsZTogZnVuY3Rpb24oZm9ybSkgewogICAgZm9ybSA9ICQo
Zm9ybSk7CiAgICBGb3JtLmdldEVsZW1lbnRzKGZvcm0pLmludm9rZSgnZW5hYmxl
Jyk7CiAgICByZXR1cm4gZm9ybTsKICB9LAoKICBmaW5kRmlyc3RFbGVtZW50OiBm
dW5jdGlvbihmb3JtKSB7CiAgICB2YXIgZWxlbWVudHMgPSAkKGZvcm0pLmdldEVs
ZW1lbnRzKCkuZmluZEFsbChmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgIHJldHVy
biAnaGlkZGVuJyAhPSBlbGVtZW50LnR5cGUgJiYgIWVsZW1lbnQuZGlzYWJsZWQ7
CiAgICB9KTsKICAgIHZhciBmaXJzdEJ5SW5kZXggPSBlbGVtZW50cy5maW5kQWxs
KGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0
cmlidXRlKCd0YWJJbmRleCcpICYmIGVsZW1lbnQudGFiSW5kZXggPj0gMDsKICAg
IH0pLnNvcnRCeShmdW5jdGlvbihlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnRh
YkluZGV4IH0pLmZpcnN0KCk7CgogICAgcmV0dXJuIGZpcnN0QnlJbmRleCA/IGZp
cnN0QnlJbmRleCA6IGVsZW1lbnRzLmZpbmQoZnVuY3Rpb24oZWxlbWVudCkgewog
ICAgICByZXR1cm4gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXS5pbmNs
dWRlKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKICAgIH0pOwogIH0s
CgogIGZvY3VzRmlyc3RFbGVtZW50OiBmdW5jdGlvbihmb3JtKSB7CiAgICBmb3Jt
ID0gJChmb3JtKTsKICAgIGZvcm0uZmluZEZpcnN0RWxlbWVudCgpLmFjdGl2YXRl
KCk7CiAgICByZXR1cm4gZm9ybTsKICB9LAoKICByZXF1ZXN0OiBmdW5jdGlvbihm
b3JtLCBvcHRpb25zKSB7CiAgICBmb3JtID0gJChmb3JtKSwgb3B0aW9ucyA9IE9i
amVjdC5jbG9uZShvcHRpb25zIHx8IHsgfSk7CgogICAgdmFyIHBhcmFtcyA9IG9w
dGlvbnMucGFyYW1ldGVycywgYWN0aW9uID0gZm9ybS5yZWFkQXR0cmlidXRlKCdh
Y3Rpb24nKSB8fCAnJzsKICAgIGlmIChhY3Rpb24uYmxhbmsoKSkgYWN0aW9uID0g
d2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICBvcHRpb25zLnBhcmFtZXRlcnMgPSBm
b3JtLnNlcmlhbGl6ZSh0cnVlKTsKCiAgICBpZiAocGFyYW1zKSB7CiAgICAgIGlm
IChPYmplY3QuaXNTdHJpbmcocGFyYW1zKSkgcGFyYW1zID0gcGFyYW1zLnRvUXVl
cnlQYXJhbXMoKTsKICAgICAgT2JqZWN0LmV4dGVuZChvcHRpb25zLnBhcmFtZXRl
cnMsIHBhcmFtcyk7CiAgICB9CgogICAgaWYgKGZvcm0uaGFzQXR0cmlidXRlKCdt
ZXRob2QnKSAmJiAhb3B0aW9ucy5tZXRob2QpCiAgICAgIG9wdGlvbnMubWV0aG9k
ID0gZm9ybS5tZXRob2Q7CgogICAgcmV0dXJuIG5ldyBBamF4LlJlcXVlc3QoYWN0
aW9uLCBvcHRpb25zKTsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KCkZvcm0uRWxlbWVudCA9IHsKICBmb2N1czogZnVuY3Rpb24oZWxlbWVu
dCkgewogICAgJChlbGVtZW50KS5mb2N1cygpOwogICAgcmV0dXJuIGVsZW1lbnQ7
CiAgfSwKCiAgc2VsZWN0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAkKGVsZW1l
bnQpLnNlbGVjdCgpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfQp9OwoKRm9ybS5F
bGVtZW50Lk1ldGhvZHMgPSB7CiAgc2VyaWFsaXplOiBmdW5jdGlvbihlbGVtZW50
KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmICghZWxlbWVudC5k
aXNhYmxlZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAgICAgdmFyIHZhbHVlID0gZWxl
bWVudC5nZXRWYWx1ZSgpOwogICAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7
CiAgICAgICAgdmFyIHBhaXIgPSB7IH07CiAgICAgICAgcGFpcltlbGVtZW50Lm5h
bWVdID0gdmFsdWU7CiAgICAgICAgcmV0dXJuIE9iamVjdC50b1F1ZXJ5U3RyaW5n
KHBhaXIpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gJyc7CiAgfSwKCiAgZ2V0
VmFsdWU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1l
bnQpOwogICAgdmFyIG1ldGhvZCA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2Fz
ZSgpOwogICAgcmV0dXJuIEZvcm0uRWxlbWVudC5TZXJpYWxpemVyc1ttZXRob2Rd
KGVsZW1lbnQpOwogIH0sCgogIHNldFZhbHVlOiBmdW5jdGlvbihlbGVtZW50LCB2
YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgbWV0aG9k
ID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICBGb3JtLkVsZW1l
bnQuU2VyaWFsaXplcnNbbWV0aG9kXShlbGVtZW50LCB2YWx1ZSk7CiAgICByZXR1
cm4gZWxlbWVudDsKICB9LAoKICBjbGVhcjogZnVuY3Rpb24oZWxlbWVudCkgewog
ICAgJChlbGVtZW50KS52YWx1ZSA9ICcnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAg
fSwKCiAgcHJlc2VudDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQo
ZWxlbWVudCkudmFsdWUgIT0gJyc7CiAgfSwKCiAgYWN0aXZhdGU6IGZ1bmN0aW9u
KGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdHJ5IHsK
ICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICBpZiAoZWxlbWVudC5zZWxlY3Qg
JiYgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9ICdpbnB1dCcgfHwK
ICAgICAgICAgICFbJ2J1dHRvbicsICdyZXNldCcsICdzdWJtaXQnXS5pbmNsdWRl
KGVsZW1lbnQudHlwZSkpKQogICAgICAgIGVsZW1lbnQuc2VsZWN0KCk7CiAgICB9
IGNhdGNoIChlKSB7IH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGRpc2Fi
bGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQp
OwogICAgZWxlbWVudC5ibHVyKCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gdHJ1
ZTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVuYWJsZTogZnVuY3Rpb24o
ZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50
LmRpc2FibGVkID0gZmFsc2U7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07Cgov
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBGaWVsZCA9IEZvcm0u
RWxlbWVudDsKdmFyICRGID0gRm9ybS5FbGVtZW50Lk1ldGhvZHMuZ2V0VmFsdWU7
CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkZvcm0uRWxlbWVudC5T
ZXJpYWxpemVycyA9IHsKICBpbnB1dDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUp
IHsKICAgIHN3aXRjaCAoZWxlbWVudC50eXBlLnRvTG93ZXJDYXNlKCkpIHsKICAg
ICAgY2FzZSAnY2hlY2tib3gnOgogICAgICBjYXNlICdyYWRpbyc6CiAgICAgICAg
cmV0dXJuIEZvcm0uRWxlbWVudC5TZXJpYWxpemVycy5pbnB1dFNlbGVjdG9yKGVs
ZW1lbnQsIHZhbHVlKTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gRm9y
bS5FbGVtZW50LlNlcmlhbGl6ZXJzLnRleHRhcmVhKGVsZW1lbnQsIHZhbHVlKTsK
ICAgIH0KICB9LAoKICBpbnB1dFNlbGVjdG9yOiBmdW5jdGlvbihlbGVtZW50LCB2
YWx1ZSkgewogICAgaWYgKE9iamVjdC5pc1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVy
biBlbGVtZW50LmNoZWNrZWQgPyBlbGVtZW50LnZhbHVlIDogbnVsbDsKICAgIGVs
c2UgZWxlbWVudC5jaGVja2VkID0gISF2YWx1ZTsKICB9LAoKICB0ZXh0YXJlYTog
ZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGlmIChPYmplY3QuaXNVbmRl
ZmluZWQodmFsdWUpKSByZXR1cm4gZWxlbWVudC52YWx1ZTsKICAgIGVsc2UgZWxl
bWVudC52YWx1ZSA9IHZhbHVlOwogIH0sCgogIHNlbGVjdDogZnVuY3Rpb24oZWxl
bWVudCwgaW5kZXgpIHsKICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQoaW5kZXgp
KQogICAgICByZXR1cm4gdGhpc1tlbGVtZW50LnR5cGUgPT0gJ3NlbGVjdC1vbmUn
ID8KICAgICAgICAnc2VsZWN0T25lJyA6ICdzZWxlY3RNYW55J10oZWxlbWVudCk7
CiAgICBlbHNlIHsKICAgICAgdmFyIG9wdCwgdmFsdWUsIHNpbmdsZSA9ICFPYmpl
Y3QuaXNBcnJheShpbmRleCk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGgg
PSBlbGVtZW50Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3B0
ID0gZWxlbWVudC5vcHRpb25zW2ldOwogICAgICAgIHZhbHVlID0gdGhpcy5vcHRp
b25WYWx1ZShvcHQpOwogICAgICAgIGlmIChzaW5nbGUpIHsKICAgICAgICAgIGlm
ICh2YWx1ZSA9PSBpbmRleCkgewogICAgICAgICAgICBvcHQuc2VsZWN0ZWQgPSB0
cnVlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfQog
ICAgICAgIGVsc2Ugb3B0LnNlbGVjdGVkID0gaW5kZXguaW5jbHVkZSh2YWx1ZSk7
CiAgICAgIH0KICAgIH0KICB9LAoKICBzZWxlY3RPbmU6IGZ1bmN0aW9uKGVsZW1l
bnQpIHsKICAgIHZhciBpbmRleCA9IGVsZW1lbnQuc2VsZWN0ZWRJbmRleDsKICAg
IHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5vcHRpb25WYWx1ZShlbGVtZW50Lm9w
dGlvbnNbaW5kZXhdKSA6IG51bGw7CiAgfSwKCiAgc2VsZWN0TWFueTogZnVuY3Rp
b24oZWxlbWVudCkgewogICAgdmFyIHZhbHVlcywgbGVuZ3RoID0gZWxlbWVudC5s
ZW5ndGg7CiAgICBpZiAoIWxlbmd0aCkgcmV0dXJuIG51bGw7CgogICAgZm9yICh2
YXIgaSA9IDAsIHZhbHVlcyA9IFtdOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAg
dmFyIG9wdCA9IGVsZW1lbnQub3B0aW9uc1tpXTsKICAgICAgaWYgKG9wdC5zZWxl
Y3RlZCkgdmFsdWVzLnB1c2godGhpcy5vcHRpb25WYWx1ZShvcHQpKTsKICAgIH0K
ICAgIHJldHVybiB2YWx1ZXM7CiAgfSwKCiAgb3B0aW9uVmFsdWU6IGZ1bmN0aW9u
KG9wdCkgewogICAgLy8gZXh0ZW5kIGVsZW1lbnQgYmVjYXVzZSBoYXNBdHRyaWJ1
dGUgbWF5IG5vdCBiZSBuYXRpdmUKICAgIHJldHVybiBFbGVtZW50LmV4dGVuZChv
cHQpLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA/IG9wdC52YWx1ZSA6IG9wdC50ZXh0
OwogIH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKQWJzdHJh
Y3QuVGltZWRPYnNlcnZlciA9IENsYXNzLmNyZWF0ZShQZXJpb2RpY2FsRXhlY3V0
ZXIsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbigkc3VwZXIsIGVsZW1lbnQsIGZy
ZXF1ZW5jeSwgY2FsbGJhY2spIHsKICAgICRzdXBlcihjYWxsYmFjaywgZnJlcXVl
bmN5KTsKICAgIHRoaXMuZWxlbWVudCAgID0gJChlbGVtZW50KTsKICAgIHRoaXMu
bGFzdFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpOwogIH0sCgogIGV4ZWN1dGU6IGZ1
bmN0aW9uKCkgewogICAgdmFyIHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpOwogICAg
aWYgKE9iamVjdC5pc1N0cmluZyh0aGlzLmxhc3RWYWx1ZSkgJiYgT2JqZWN0Lmlz
U3RyaW5nKHZhbHVlKSA/CiAgICAgICAgdGhpcy5sYXN0VmFsdWUgIT0gdmFsdWUg
OiBTdHJpbmcodGhpcy5sYXN0VmFsdWUpICE9IFN0cmluZyh2YWx1ZSkpIHsKICAg
ICAgdGhpcy5jYWxsYmFjayh0aGlzLmVsZW1lbnQsIHZhbHVlKTsKICAgICAgdGhp
cy5sYXN0VmFsdWUgPSB2YWx1ZTsKICAgIH0KICB9Cn0pOwoKRm9ybS5FbGVtZW50
Lk9ic2VydmVyID0gQ2xhc3MuY3JlYXRlKEFic3RyYWN0LlRpbWVkT2JzZXJ2ZXIs
IHsKICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5FbGVt
ZW50LmdldFZhbHVlKHRoaXMuZWxlbWVudCk7CiAgfQp9KTsKCkZvcm0uT2JzZXJ2
ZXIgPSBDbGFzcy5jcmVhdGUoQWJzdHJhY3QuVGltZWRPYnNlcnZlciwgewogIGdl
dFZhbHVlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBGb3JtLnNlcmlhbGl6ZSh0
aGlzLmVsZW1lbnQpOwogIH0KfSk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KCkFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoewog
IGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNhbGxiYWNrKSB7CiAgICB0
aGlzLmVsZW1lbnQgID0gJChlbGVtZW50KTsKICAgIHRoaXMuY2FsbGJhY2sgPSBj
YWxsYmFjazsKCiAgICB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsK
ICAgIGlmICh0aGlzLmVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09ICdm
b3JtJykKICAgICAgdGhpcy5yZWdpc3RlckZvcm1DYWxsYmFja3MoKTsKICAgIGVs
c2UKICAgICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrKHRoaXMuZWxlbWVudCk7CiAg
fSwKCiAgb25FbGVtZW50RXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgdmFyIHZhbHVl
ID0gdGhpcy5nZXRWYWx1ZSgpOwogICAgaWYgKHRoaXMubGFzdFZhbHVlICE9IHZh
bHVlKSB7CiAgICAgIHRoaXMuY2FsbGJhY2sodGhpcy5lbGVtZW50LCB2YWx1ZSk7
CiAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7CiAgICB9CiAgfSwKCiAgcmVn
aXN0ZXJGb3JtQ2FsbGJhY2tzOiBmdW5jdGlvbigpIHsKICAgIEZvcm0uZ2V0RWxl
bWVudHModGhpcy5lbGVtZW50KS5lYWNoKHRoaXMucmVnaXN0ZXJDYWxsYmFjaywg
dGhpcyk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxsYmFjazogZnVuY3Rpb24oZWxlbWVu
dCkgewogICAgaWYgKGVsZW1lbnQudHlwZSkgewogICAgICBzd2l0Y2ggKGVsZW1l
bnQudHlwZS50b0xvd2VyQ2FzZSgpKSB7CiAgICAgICAgY2FzZSAnY2hlY2tib3gn
OgogICAgICAgIGNhc2UgJ3JhZGlvJzoKICAgICAgICAgIEV2ZW50Lm9ic2VydmUo
ZWxlbWVudCwgJ2NsaWNrJywgdGhpcy5vbkVsZW1lbnRFdmVudC5iaW5kKHRoaXMp
KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBF
dmVudC5vYnNlcnZlKGVsZW1lbnQsICdjaGFuZ2UnLCB0aGlzLm9uRWxlbWVudEV2
ZW50LmJpbmQodGhpcykpOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0K
ICB9Cn0pOwoKRm9ybS5FbGVtZW50LkV2ZW50T2JzZXJ2ZXIgPSBDbGFzcy5jcmVh
dGUoQWJzdHJhY3QuRXZlbnRPYnNlcnZlciwgewogIGdldFZhbHVlOiBmdW5jdGlv
bigpIHsKICAgIHJldHVybiBGb3JtLkVsZW1lbnQuZ2V0VmFsdWUodGhpcy5lbGVt
ZW50KTsKICB9Cn0pOwoKRm9ybS5FdmVudE9ic2VydmVyID0gQ2xhc3MuY3JlYXRl
KEFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIsIHsKICBnZXRWYWx1ZTogZnVuY3Rpb24o
KSB7CiAgICByZXR1cm4gRm9ybS5zZXJpYWxpemUodGhpcy5lbGVtZW50KTsKICB9
Cn0pOwppZiAoIXdpbmRvdy5FdmVudCkgdmFyIEV2ZW50ID0geyB9OwoKT2JqZWN0
LmV4dGVuZChFdmVudCwgewogIEtFWV9CQUNLU1BBQ0U6IDgsCiAgS0VZX1RBQjog
ICAgICAgOSwKICBLRVlfUkVUVVJOOiAgIDEzLAogIEtFWV9FU0M6ICAgICAgMjcs
CiAgS0VZX0xFRlQ6ICAgICAzNywKICBLRVlfVVA6ICAgICAgIDM4LAogIEtFWV9S
SUdIVDogICAgMzksCiAgS0VZX0RPV046ICAgICA0MCwKICBLRVlfREVMRVRFOiAg
IDQ2LAogIEtFWV9IT01FOiAgICAgMzYsCiAgS0VZX0VORDogICAgICAzNSwKICBL
RVlfUEFHRVVQOiAgIDMzLAogIEtFWV9QQUdFRE9XTjogMzQsCiAgS0VZX0lOU0VS
VDogICA0NSwKCiAgY2FjaGU6IHsgfSwKCiAgcmVsYXRlZFRhcmdldDogZnVuY3Rp
b24oZXZlbnQpIHsKICAgIHZhciBlbGVtZW50OwogICAgc3dpdGNoKGV2ZW50LnR5
cGUpIHsKICAgICAgY2FzZSAnbW91c2VvdmVyJzogZWxlbWVudCA9IGV2ZW50LmZy
b21FbGVtZW50OyBicmVhazsKICAgICAgY2FzZSAnbW91c2VvdXQnOiAgZWxlbWVu
dCA9IGV2ZW50LnRvRWxlbWVudDsgICBicmVhazsKICAgICAgZGVmYXVsdDogcmV0
dXJuIG51bGw7CiAgICB9CiAgICByZXR1cm4gRWxlbWVudC5leHRlbmQoZWxlbWVu
dCk7CiAgfQp9KTsKCkV2ZW50Lk1ldGhvZHMgPSAoZnVuY3Rpb24oKSB7CiAgdmFy
IGlzQnV0dG9uOwoKICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHsKICAgIHZh
ciBidXR0b25NYXAgPSB7IDA6IDEsIDE6IDQsIDI6IDIgfTsKICAgIGlzQnV0dG9u
ID0gZnVuY3Rpb24oZXZlbnQsIGNvZGUpIHsKICAgICAgcmV0dXJuIGV2ZW50LmJ1
dHRvbiA9PSBidXR0b25NYXBbY29kZV07CiAgICB9OwoKICB9IGVsc2UgaWYgKFBy
b3RvdHlwZS5Ccm93c2VyLldlYktpdCkgewogICAgaXNCdXR0b24gPSBmdW5jdGlv
bihldmVudCwgY29kZSkgewogICAgICBzd2l0Y2ggKGNvZGUpIHsKICAgICAgICBj
YXNlIDA6IHJldHVybiBldmVudC53aGljaCA9PSAxICYmICFldmVudC5tZXRhS2V5
OwogICAgICAgIGNhc2UgMTogcmV0dXJuIGV2ZW50LndoaWNoID09IDEgJiYgZXZl
bnQubWV0YUtleTsKICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7CiAgICAg
IH0KICAgIH07CgogIH0gZWxzZSB7CiAgICBpc0J1dHRvbiA9IGZ1bmN0aW9uKGV2
ZW50LCBjb2RlKSB7CiAgICAgIHJldHVybiBldmVudC53aGljaCA/IChldmVudC53
aGljaCA9PT0gY29kZSArIDEpIDogKGV2ZW50LmJ1dHRvbiA9PT0gY29kZSk7CiAg
ICB9OwogIH0KCiAgcmV0dXJuIHsKICAgIGlzTGVmdENsaWNrOiAgIGZ1bmN0aW9u
KGV2ZW50KSB7IHJldHVybiBpc0J1dHRvbihldmVudCwgMCkgfSwKICAgIGlzTWlk
ZGxlQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBpc0J1dHRvbihldmVu
dCwgMSkgfSwKICAgIGlzUmlnaHRDbGljazogIGZ1bmN0aW9uKGV2ZW50KSB7IHJl
dHVybiBpc0J1dHRvbihldmVudCwgMikgfSwKCiAgICBlbGVtZW50OiBmdW5jdGlv
bihldmVudCkgewogICAgICB2YXIgbm9kZSA9IEV2ZW50LmV4dGVuZChldmVudCku
dGFyZ2V0OwogICAgICByZXR1cm4gRWxlbWVudC5leHRlbmQobm9kZS5ub2RlVHlw
ZSA9PSBOb2RlLlRFWFRfTk9ERSA/IG5vZGUucGFyZW50Tm9kZSA6IG5vZGUpOwog
ICAgfSwKCiAgICBmaW5kRWxlbWVudDogZnVuY3Rpb24oZXZlbnQsIGV4cHJlc3Np
b24pIHsKICAgICAgdmFyIGVsZW1lbnQgPSBFdmVudC5lbGVtZW50KGV2ZW50KTsK
ICAgICAgaWYgKCFleHByZXNzaW9uKSByZXR1cm4gZWxlbWVudDsKICAgICAgdmFy
IGVsZW1lbnRzID0gW2VsZW1lbnRdLmNvbmNhdChlbGVtZW50LmFuY2VzdG9ycygp
KTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLmZpbmRFbGVtZW50KGVsZW1lbnRzLCBl
eHByZXNzaW9uLCAwKTsKICAgIH0sCgogICAgcG9pbnRlcjogZnVuY3Rpb24oZXZl
bnQpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICB4OiBldmVudC5wYWdlWCB8fCAo
ZXZlbnQuY2xpZW50WCArCiAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LnNjcm9sbExlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSksCiAg
ICAgICAgeTogZXZlbnQucGFnZVkgfHwgKGV2ZW50LmNsaWVudFkgKwogICAgICAg
ICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1l
bnQuYm9keS5zY3JvbGxUb3ApKQogICAgICB9OwogICAgfSwKCiAgICBwb2ludGVy
WDogZnVuY3Rpb24oZXZlbnQpIHsgcmV0dXJuIEV2ZW50LnBvaW50ZXIoZXZlbnQp
LnggfSwKICAgIHBvaW50ZXJZOiBmdW5jdGlvbihldmVudCkgeyByZXR1cm4gRXZl
bnQucG9pbnRlcihldmVudCkueSB9LAoKICAgIHN0b3A6IGZ1bmN0aW9uKGV2ZW50
KSB7CiAgICAgIEV2ZW50LmV4dGVuZChldmVudCk7CiAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAg
ICBldmVudC5zdG9wcGVkID0gdHJ1ZTsKICAgIH0KICB9Owp9KSgpOwoKRXZlbnQu
ZXh0ZW5kID0gKGZ1bmN0aW9uKCkgewogIHZhciBtZXRob2RzID0gT2JqZWN0Lmtl
eXMoRXZlbnQuTWV0aG9kcykuaW5qZWN0KHsgfSwgZnVuY3Rpb24obSwgbmFtZSkg
ewogICAgbVtuYW1lXSA9IEV2ZW50Lk1ldGhvZHNbbmFtZV0ubWV0aG9kaXplKCk7
CiAgICByZXR1cm4gbTsKICB9KTsKCiAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklF
KSB7CiAgICBPYmplY3QuZXh0ZW5kKG1ldGhvZHMsIHsKICAgICAgc3RvcFByb3Bh
Z2F0aW9uOiBmdW5jdGlvbigpIHsgdGhpcy5jYW5jZWxCdWJibGUgPSB0cnVlIH0s
CiAgICAgIHByZXZlbnREZWZhdWx0OiAgZnVuY3Rpb24oKSB7IHRoaXMucmV0dXJu
VmFsdWUgPSBmYWxzZSB9LAogICAgICBpbnNwZWN0OiBmdW5jdGlvbigpIHsgcmV0
dXJuICJbb2JqZWN0IEV2ZW50XSIgfQogICAgfSk7CgogICAgcmV0dXJuIGZ1bmN0
aW9uKGV2ZW50KSB7CiAgICAgIGlmICghZXZlbnQpIHJldHVybiBmYWxzZTsKICAg
ICAgaWYgKGV2ZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlKSByZXR1cm4gZXZlbnQ7
CgogICAgICBldmVudC5fZXh0ZW5kZWRCeVByb3RvdHlwZSA9IFByb3RvdHlwZS5l
bXB0eUZ1bmN0aW9uOwogICAgICB2YXIgcG9pbnRlciA9IEV2ZW50LnBvaW50ZXIo
ZXZlbnQpOwogICAgICBPYmplY3QuZXh0ZW5kKGV2ZW50LCB7CiAgICAgICAgdGFy
Z2V0OiBldmVudC5zcmNFbGVtZW50LAogICAgICAgIHJlbGF0ZWRUYXJnZXQ6IEV2
ZW50LnJlbGF0ZWRUYXJnZXQoZXZlbnQpLAogICAgICAgIHBhZ2VYOiAgcG9pbnRl
ci54LAogICAgICAgIHBhZ2VZOiAgcG9pbnRlci55CiAgICAgIH0pOwogICAgICBy
ZXR1cm4gT2JqZWN0LmV4dGVuZChldmVudCwgbWV0aG9kcyk7CiAgICB9OwoKICB9
IGVsc2UgewogICAgRXZlbnQucHJvdG90eXBlID0gRXZlbnQucHJvdG90eXBlIHx8
IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIikuX19wcm90b19fOwog
ICAgT2JqZWN0LmV4dGVuZChFdmVudC5wcm90b3R5cGUsIG1ldGhvZHMpOwogICAg
cmV0dXJuIFByb3RvdHlwZS5LOwogIH0KfSkoKTsKCk9iamVjdC5leHRlbmQoRXZl
bnQsIChmdW5jdGlvbigpIHsKICB2YXIgY2FjaGUgPSBFdmVudC5jYWNoZTsKCiAg
ZnVuY3Rpb24gZ2V0RXZlbnRJRChlbGVtZW50KSB7CiAgICBpZiAoZWxlbWVudC5f
cHJvdG90eXBlRXZlbnRJRCkgcmV0dXJuIGVsZW1lbnQuX3Byb3RvdHlwZUV2ZW50
SURbMF07CiAgICBhcmd1bWVudHMuY2FsbGVlLmlkID0gYXJndW1lbnRzLmNhbGxl
ZS5pZCB8fCAxOwogICAgcmV0dXJuIGVsZW1lbnQuX3Byb3RvdHlwZUV2ZW50SUQg
PSBbKythcmd1bWVudHMuY2FsbGVlLmlkXTsKICB9CgogIGZ1bmN0aW9uIGdldERP
TUV2ZW50TmFtZShldmVudE5hbWUpIHsKICAgIGlmIChldmVudE5hbWUgJiYgZXZl
bnROYW1lLmluY2x1ZGUoJzonKSkgcmV0dXJuICJkYXRhYXZhaWxhYmxlIjsKICAg
IHJldHVybiBldmVudE5hbWU7CiAgfQoKICBmdW5jdGlvbiBnZXRDYWNoZUZvcklE
KGlkKSB7CiAgICByZXR1cm4gY2FjaGVbaWRdID0gY2FjaGVbaWRdIHx8IHsgfTsK
ICB9CgogIGZ1bmN0aW9uIGdldFdyYXBwZXJzRm9yRXZlbnROYW1lKGlkLCBldmVu
dE5hbWUpIHsKICAgIHZhciBjID0gZ2V0Q2FjaGVGb3JJRChpZCk7CiAgICByZXR1
cm4gY1tldmVudE5hbWVdID0gY1tldmVudE5hbWVdIHx8IFtdOwogIH0KCiAgZnVu
Y3Rpb24gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIp
IHsKICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCk7CiAgICB2YXIgYyA9
IGdldFdyYXBwZXJzRm9yRXZlbnROYW1lKGlkLCBldmVudE5hbWUpOwogICAgaWYg
KGMucGx1Y2soImhhbmRsZXIiKS5pbmNsdWRlKGhhbmRsZXIpKSByZXR1cm4gZmFs
c2U7CgogICAgdmFyIHdyYXBwZXIgPSBmdW5jdGlvbihldmVudCkgewogICAgICBp
ZiAoIUV2ZW50IHx8ICFFdmVudC5leHRlbmQgfHwKICAgICAgICAoZXZlbnQuZXZl
bnROYW1lICYmIGV2ZW50LmV2ZW50TmFtZSAhPSBldmVudE5hbWUpKQogICAgICAg
ICAgcmV0dXJuIGZhbHNlOwoKICAgICAgRXZlbnQuZXh0ZW5kKGV2ZW50KTsKICAg
ICAgaGFuZGxlci5jYWxsKGVsZW1lbnQsIGV2ZW50KTsKICAgIH07CgogICAgd3Jh
cHBlci5oYW5kbGVyID0gaGFuZGxlcjsKICAgIGMucHVzaCh3cmFwcGVyKTsKICAg
IHJldHVybiB3cmFwcGVyOwogIH0KCiAgZnVuY3Rpb24gZmluZFdyYXBwZXIoaWQs
IGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgdmFyIGMgPSBnZXRXcmFwcGVyc0Zv
ckV2ZW50TmFtZShpZCwgZXZlbnROYW1lKTsKICAgIHJldHVybiBjLmZpbmQoZnVu
Y3Rpb24od3JhcHBlcikgeyByZXR1cm4gd3JhcHBlci5oYW5kbGVyID09IGhhbmRs
ZXIgfSk7CiAgfQoKICBmdW5jdGlvbiBkZXN0cm95V3JhcHBlcihpZCwgZXZlbnRO
YW1lLCBoYW5kbGVyKSB7CiAgICB2YXIgYyA9IGdldENhY2hlRm9ySUQoaWQpOwog
ICAgaWYgKCFjW2V2ZW50TmFtZV0pIHJldHVybiBmYWxzZTsKICAgIGNbZXZlbnRO
YW1lXSA9IGNbZXZlbnROYW1lXS53aXRob3V0KGZpbmRXcmFwcGVyKGlkLCBldmVu
dE5hbWUsIGhhbmRsZXIpKTsKICB9CgogIGZ1bmN0aW9uIGRlc3Ryb3lDYWNoZSgp
IHsKICAgIGZvciAodmFyIGlkIGluIGNhY2hlKQogICAgICBmb3IgKHZhciBldmVu
dE5hbWUgaW4gY2FjaGVbaWRdKQogICAgICAgIGNhY2hlW2lkXVtldmVudE5hbWVd
ID0gbnVsbDsKICB9CgogIGlmICh3aW5kb3cuYXR0YWNoRXZlbnQpIHsKICAgIHdp
bmRvdy5hdHRhY2hFdmVudCgib251bmxvYWQiLCBkZXN0cm95Q2FjaGUpOwogIH0K
CiAgcmV0dXJuIHsKICAgIG9ic2VydmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50
TmFtZSwgaGFuZGxlcikgewogICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAg
ICAgdmFyIG5hbWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAg
IHZhciB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVudE5hbWUs
IGhhbmRsZXIpOwogICAgICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoK
ICAgICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAg
ICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgib24iICsg
bmFtZSwgd3JhcHBlcik7CiAgICAgIH0KCiAgICAgIHJldHVybiBlbGVtZW50Owog
ICAgfSwKCiAgICBzdG9wT2JzZXJ2aW5nOiBmdW5jdGlvbihlbGVtZW50LCBldmVu
dE5hbWUsIGhhbmRsZXIpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg
ICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCksIG5hbWUgPSBnZXRET01F
dmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAgIGlmICghaGFuZGxlciAmJiBldmVu
dE5hbWUpIHsKICAgICAgICBnZXRXcmFwcGVyc0ZvckV2ZW50TmFtZShpZCwgZXZl
bnROYW1lKS5lYWNoKGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgICAgICAgIGVsZW1l
bnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUsIHdyYXBwZXIuaGFuZGxlcik7CiAg
ICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CgogICAgICB9IGVsc2Ug
aWYgKCFldmVudE5hbWUpIHsKICAgICAgICBPYmplY3Qua2V5cyhnZXRDYWNoZUZv
cklEKGlkKSkuZWFjaChmdW5jdGlvbihldmVudE5hbWUpIHsKICAgICAgICAgIGVs
ZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUpOwogICAgICAgIH0pOwogICAg
ICAgIHJldHVybiBlbGVtZW50OwogICAgICB9CgogICAgICB2YXIgd3JhcHBlciA9
IGZpbmRXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAgICBpZiAo
IXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoKICAgICAgaWYgKGVsZW1lbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAgICAgIH0gZWxzZSB7CiAg
ICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCgib24iICsgbmFtZSwgd3JhcHBlcik7
CiAgICAgIH0KCiAgICAgIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhh
bmRsZXIpOwoKICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9LAoKICAgIGZpcmU6
IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgbWVtbykgewogICAgICBlbGVt
ZW50ID0gJChlbGVtZW50KTsKICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQg
JiYgZG9jdW1lbnQuY3JlYXRlRXZlbnQgJiYgIWVsZW1lbnQuZGlzcGF0Y2hFdmVu
dCkKICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoK
ICAgICAgdmFyIGV2ZW50OwogICAgICBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnQp
IHsKICAgICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZl
bnRzIik7CiAgICAgICAgZXZlbnQuaW5pdEV2ZW50KCJkYXRhYXZhaWxhYmxlIiwg
dHJ1ZSwgdHJ1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXZlbnQgPSBkb2N1
bWVudC5jcmVhdGVFdmVudE9iamVjdCgpOwogICAgICAgIGV2ZW50LmV2ZW50VHlw
ZSA9ICJvbmRhdGFhdmFpbGFibGUiOwogICAgICB9CgogICAgICBldmVudC5ldmVu
dE5hbWUgPSBldmVudE5hbWU7CiAgICAgIGV2ZW50Lm1lbW8gPSBtZW1vIHx8IHsg
fTsKCiAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudCkgewogICAgICAgIGVs
ZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAg
ICAgZWxlbWVudC5maXJlRXZlbnQoZXZlbnQuZXZlbnRUeXBlLCBldmVudCk7CiAg
ICAgIH0KCiAgICAgIHJldHVybiBFdmVudC5leHRlbmQoZXZlbnQpOwogICAgfQog
IH07Cn0pKCkpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwgRXZlbnQuTWV0aG9kcyk7
CgpFbGVtZW50LmFkZE1ldGhvZHMoewogIGZpcmU6ICAgICAgICAgIEV2ZW50LmZp
cmUsCiAgb2JzZXJ2ZTogICAgICAgRXZlbnQub2JzZXJ2ZSwKICBzdG9wT2JzZXJ2
aW5nOiBFdmVudC5zdG9wT2JzZXJ2aW5nCn0pOwoKT2JqZWN0LmV4dGVuZChkb2N1
bWVudCwgewogIGZpcmU6ICAgICAgICAgIEVsZW1lbnQuTWV0aG9kcy5maXJlLm1l
dGhvZGl6ZSgpLAogIG9ic2VydmU6ICAgICAgIEVsZW1lbnQuTWV0aG9kcy5vYnNl
cnZlLm1ldGhvZGl6ZSgpLAogIHN0b3BPYnNlcnZpbmc6IEVsZW1lbnQuTWV0aG9k
cy5zdG9wT2JzZXJ2aW5nLm1ldGhvZGl6ZSgpLAogIGxvYWRlZDogICAgICAgIGZh
bHNlCn0pOwoKKGZ1bmN0aW9uKCkgewogIC8qIFN1cHBvcnQgZm9yIHRoZSBET01D
b250ZW50TG9hZGVkIGV2ZW50IGlzIGJhc2VkIG9uIHdvcmsgYnkgRGFuIFdlYmIs
CiAgICAgTWF0dGhpYXMgTWlsbGVyLCBEZWFuIEVkd2FyZHMgYW5kIEpvaG4gUmVz
aWcuICovCgogIHZhciB0aW1lcjsKCiAgZnVuY3Rpb24gZmlyZUNvbnRlbnRMb2Fk
ZWRFdmVudCgpIHsKICAgIGlmIChkb2N1bWVudC5sb2FkZWQpIHJldHVybjsKICAg
IGlmICh0aW1lcikgd2luZG93LmNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgZG9j
dW1lbnQuZmlyZSgiZG9tOmxvYWRlZCIpOwogICAgZG9jdW1lbnQubG9hZGVkID0g
dHJ1ZTsKICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAg
ICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0KSB7CiAgICAgIHRpbWVyID0g
d2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgvbG9h
ZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpKQogICAgICAg
ICAgZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpOwogICAgICB9LCAwKTsKCiAgICAg
IEV2ZW50Lm9ic2VydmUod2luZG93LCAibG9hZCIsIGZpcmVDb250ZW50TG9hZGVk
RXZlbnQpOwoKICAgIH0gZWxzZSB7CiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLAogICAgICAgIGZpcmVDb250ZW50TG9h
ZGVkRXZlbnQsIGZhbHNlKTsKICAgIH0KCiAgfSBlbHNlIHsKICAgIGRvY3VtZW50
LndyaXRlKCI8c2NyaXB0IGlkPV9fb25ET01Db250ZW50TG9hZGVkIGRlZmVyIHNy
Yz0vLzo+PFwvc2NyaXB0PiIpOwogICAgJCgiX19vbkRPTUNvbnRlbnRMb2FkZWQi
KS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRo
aXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CiAgICAgICAgdGhpcy5vbnJl
YWR5c3RhdGVjaGFuZ2UgPSBudWxsOwogICAgICAgIGZpcmVDb250ZW50TG9hZGVk
RXZlbnQoKTsKICAgICAgfQogICAgfTsKICB9Cn0pKCk7Ci8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBERVBSRUNBVEVEIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwoKSGFzaC50b1F1ZXJ5U3RyaW5nID0gT2JqZWN0LnRv
UXVlcnlTdHJpbmc7Cgp2YXIgVG9nZ2xlID0geyBkaXNwbGF5OiBFbGVtZW50LnRv
Z2dsZSB9OwoKRWxlbWVudC5NZXRob2RzLmNoaWxkT2YgPSBFbGVtZW50Lk1ldGhv
ZHMuZGVzY2VuZGFudE9mOwoKdmFyIEluc2VydGlvbiA9IHsKICBCZWZvcmU6IGZ1
bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu
c2VydChlbGVtZW50LCB7YmVmb3JlOmNvbnRlbnR9KTsKICB9LAoKICBUb3A6IGZ1
bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu
c2VydChlbGVtZW50LCB7dG9wOmNvbnRlbnR9KTsKICB9LAoKICBCb3R0b206IGZ1
bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmlu
c2VydChlbGVtZW50LCB7Ym90dG9tOmNvbnRlbnR9KTsKICB9LAoKICBBZnRlcjog
ZnVuY3Rpb24oZWxlbWVudCwgY29udGVudCkgewogICAgcmV0dXJuIEVsZW1lbnQu
aW5zZXJ0KGVsZW1lbnQsIHthZnRlcjpjb250ZW50fSk7CiAgfQp9OwoKdmFyICRj
b250aW51ZSA9IG5ldyBFcnJvcignInRocm93ICRjb250aW51ZSIgaXMgZGVwcmVj
YXRlZCwgdXNlICJyZXR1cm4iIGluc3RlYWQnKTsKCi8vIFRoaXMgc2hvdWxkIGJl
IG1vdmVkIHRvIHNjcmlwdC5hY3Vsby51czsgbm90aWNlIHRoZSBkZXByZWNhdGVk
IG1ldGhvZHMKLy8gZnVydGhlciBiZWxvdywgdGhhdCBtYXAgdG8gdGhlIG5ld2Vy
IEVsZW1lbnQgbWV0aG9kcy4KdmFyIFBvc2l0aW9uID0gewogIC8vIHNldCB0byB0
cnVlIGlmIG5lZWRlZCwgd2FybmluZzogZmlyZWZveCBwZXJmb3JtYW5jZSBwcm9i
bGVtcwogIC8vIE5PVCBuZWVlZGVkIGZvciBwYWdlIHNjcm9sbGluZywgb25seSBp
ZiBkcmFnZ2FibGUgY29udGFpbmVkIGluCiAgLy8gc2Nyb2xsYWJsZSBlbGVtZW50
cwogIGluY2x1ZGVTY3JvbGxPZmZzZXRzOiBmYWxzZSwKCiAgLy8gbXVzdCBiZSBj
YWxsZWQgYmVmb3JlIGNhbGxpbmcgd2l0aGluSW5jbHVkaW5nU2Nyb2xsb2Zmc2V0
LCBldmVyeSB0aW1lIHRoZQogIC8vIHBhZ2UgaXMgc2Nyb2xsZWQKICBwcmVwYXJl
OiBmdW5jdGlvbigpIHsKICAgIHRoaXMuZGVsdGFYID0gIHdpbmRvdy5wYWdlWE9m
ZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LnNjcm9sbExlZnQKICAgICAgICAgICAgICAgIHx8IGRvY3VtZW50LmJvZHkuc2Ny
b2xsTGVmdAogICAgICAgICAgICAgICAgfHwgMDsKICAgIHRoaXMuZGVsdGFZID0g
IHdpbmRvdy5wYWdlWU9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcAogICAgICAgICAgICAgICAgfHwgZG9j
dW1lbnQuYm9keS5zY3JvbGxUb3AKICAgICAgICAgICAgICAgIHx8IDA7CiAgfSwK
CiAgLy8gY2FjaGVzIHgveSBjb29yZGluYXRlIHBhaXIgdG8gdXNlIHdpdGggb3Zl
cmxhcAogIHdpdGhpbjogZnVuY3Rpb24oZWxlbWVudCwgeCwgeSkgewogICAgaWYg
KHRoaXMuaW5jbHVkZVNjcm9sbE9mZnNldHMpCiAgICAgIHJldHVybiB0aGlzLndp
dGhpbkluY2x1ZGluZ1Njcm9sbG9mZnNldHMoZWxlbWVudCwgeCwgeSk7CiAgICB0
aGlzLnhjb21wID0geDsKICAgIHRoaXMueWNvbXAgPSB5OwogICAgdGhpcy5vZmZz
ZXQgPSBFbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0
dXJuICh5ID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHkgPCAgdGhp
cy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAgICAgICAg
ICB4ID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAgICAgIHggPCAgdGhpcy5v
ZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKTsKICB9LAoKICB3aXRoaW5J
bmNsdWRpbmdTY3JvbGxvZmZzZXRzOiBmdW5jdGlvbihlbGVtZW50LCB4LCB5KSB7
CiAgICB2YXIgb2Zmc2V0Y2FjaGUgPSBFbGVtZW50LmN1bXVsYXRpdmVTY3JvbGxP
ZmZzZXQoZWxlbWVudCk7CgogICAgdGhpcy54Y29tcCA9IHggKyBvZmZzZXRjYWNo
ZVswXSAtIHRoaXMuZGVsdGFYOwogICAgdGhpcy55Y29tcCA9IHkgKyBvZmZzZXRj
YWNoZVsxXSAtIHRoaXMuZGVsdGFZOwogICAgdGhpcy5vZmZzZXQgPSBFbGVtZW50
LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0dXJuICh0aGlzLnlj
b21wID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHRoaXMueWNvbXAg
PCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAg
ICAgICAgICB0aGlzLnhjb21wID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAg
ICAgIHRoaXMueGNvbXAgPCAgdGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNl
dFdpZHRoKTsKICB9LAoKICAvLyB3aXRoaW4gbXVzdCBiZSBjYWxsZWQgZGlyZWN0
bHkgYmVmb3JlCiAgb3ZlcmxhcDogZnVuY3Rpb24obW9kZSwgZWxlbWVudCkgewog
ICAgaWYgKCFtb2RlKSByZXR1cm4gMDsKICAgIGlmIChtb2RlID09ICd2ZXJ0aWNh
bCcpCiAgICAgIHJldHVybiAoKHRoaXMub2Zmc2V0WzFdICsgZWxlbWVudC5vZmZz
ZXRIZWlnaHQpIC0gdGhpcy55Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0
SGVpZ2h0OwogICAgaWYgKG1vZGUgPT0gJ2hvcml6b250YWwnKQogICAgICByZXR1
cm4gKCh0aGlzLm9mZnNldFswXSArIGVsZW1lbnQub2Zmc2V0V2lkdGgpIC0gdGhp
cy54Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGg7CiAgfSwKCiAg
Ly8gRGVwcmVjYXRpb24gbGF5ZXIgLS0gdXNlIG5ld2VyIEVsZW1lbnQgbWV0aG9k
cyBub3cgKDEuNS4yKS4KCiAgY3VtdWxhdGl2ZU9mZnNldDogRWxlbWVudC5NZXRo
b2RzLmN1bXVsYXRpdmVPZmZzZXQsCgogIHBvc2l0aW9uZWRPZmZzZXQ6IEVsZW1l
bnQuTWV0aG9kcy5wb3NpdGlvbmVkT2Zmc2V0LAoKICBhYnNvbHV0aXplOiBmdW5j
dGlvbihlbGVtZW50KSB7CiAgICBQb3NpdGlvbi5wcmVwYXJlKCk7CiAgICByZXR1
cm4gRWxlbWVudC5hYnNvbHV0aXplKGVsZW1lbnQpOwogIH0sCgogIHJlbGF0aXZp
emU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIFBvc2l0aW9uLnByZXBhcmUoKTsK
ICAgIHJldHVybiBFbGVtZW50LnJlbGF0aXZpemUoZWxlbWVudCk7CiAgfSwKCiAg
cmVhbE9mZnNldDogRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVTY3JvbGxPZmZz
ZXQsCgogIG9mZnNldFBhcmVudDogRWxlbWVudC5NZXRob2RzLmdldE9mZnNldFBh
cmVudCwKCiAgcGFnZTogRWxlbWVudC5NZXRob2RzLnZpZXdwb3J0T2Zmc2V0LAoK
ICBjbG9uZTogZnVuY3Rpb24oc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpIHsKICAg
IG9wdGlvbnMgPSBvcHRpb25zIHx8IHsgfTsKICAgIHJldHVybiBFbGVtZW50LmNs
b25lUG9zaXRpb24odGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpOwogIH0KfTsKCi8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKaWYgKCFkb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lID0gZnVuY3Rpb24oaW5zdGFuY2VNZXRob2RzKXsKICBmdW5jdGlvbiBpdGVy
KG5hbWUpIHsKICAgIHJldHVybiBuYW1lLmJsYW5rKCkgPyBudWxsIDogIltjb250
YWlucyhjb25jYXQoJyAnLCBAY2xhc3MsICcgJyksICcgIiArIG5hbWUgKyAiICcp
XSI7CiAgfQoKICBpbnN0YW5jZU1ldGhvZHMuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSA9IFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGggPwogIGZ1bmN0aW9u
KGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgY2xhc3NOYW1lID0gY2xhc3NOYW1l
LnRvU3RyaW5nKCkuc3RyaXAoKTsKICAgIHZhciBjb25kID0gL1xzLy50ZXN0KGNs
YXNzTmFtZSkgPyAkdyhjbGFzc05hbWUpLm1hcChpdGVyKS5qb2luKCcnKSA6IGl0
ZXIoY2xhc3NOYW1lKTsKICAgIHJldHVybiBjb25kID8gZG9jdW1lbnQuX2dldEVs
ZW1lbnRzQnlYUGF0aCgnLi8vKicgKyBjb25kLCBlbGVtZW50KSA6IFtdOwogIH0g
OiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGNsYXNzTmFtZSA9
IGNsYXNzTmFtZS50b1N0cmluZygpLnN0cmlwKCk7CiAgICB2YXIgZWxlbWVudHMg
PSBbXSwgY2xhc3NOYW1lcyA9ICgvXHMvLnRlc3QoY2xhc3NOYW1lKSA/ICR3KGNs
YXNzTmFtZSkgOiBudWxsKTsKICAgIGlmICghY2xhc3NOYW1lcyAmJiAhY2xhc3NO
YW1lKSByZXR1cm4gZWxlbWVudHM7CgogICAgdmFyIG5vZGVzID0gJChlbGVtZW50
KS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpOwogICAgY2xhc3NOYW1lID0gJyAn
ICsgY2xhc3NOYW1lICsgJyAnOwoKICAgIGZvciAodmFyIGkgPSAwLCBjaGlsZCwg
Y247IGNoaWxkID0gbm9kZXNbaV07IGkrKykgewogICAgICBpZiAoY2hpbGQuY2xh
c3NOYW1lICYmIChjbiA9ICcgJyArIGNoaWxkLmNsYXNzTmFtZSArICcgJykgJiYg
KGNuLmluY2x1ZGUoY2xhc3NOYW1lKSB8fAogICAgICAgICAgKGNsYXNzTmFtZXMg
JiYgY2xhc3NOYW1lcy5hbGwoZnVuY3Rpb24obmFtZSkgewogICAgICAgICAgICBy
ZXR1cm4gIW5hbWUudG9TdHJpbmcoKS5ibGFuaygpICYmIGNuLmluY2x1ZGUoJyAn
ICsgbmFtZSArICcgJyk7CiAgICAgICAgICB9KSkpKQogICAgICAgIGVsZW1lbnRz
LnB1c2goRWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgIH0KICAgIHJldHVybiBl
bGVtZW50czsKICB9OwoKICByZXR1cm4gZnVuY3Rpb24oY2xhc3NOYW1lLCBwYXJl
bnRFbGVtZW50KSB7CiAgICByZXR1cm4gJChwYXJlbnRFbGVtZW50IHx8IGRvY3Vt
ZW50LmJvZHkpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTsKICB9
Owp9KEVsZW1lbnQuTWV0aG9kcyk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KCkVsZW1lbnQuQ2xhc3NOYW1lcyA9IENsYXNzLmNyZWF0ZSgpOwpFbGVt
ZW50LkNsYXNzTmFtZXMucHJvdG90eXBlID0gewogIGluaXRpYWxpemU6IGZ1bmN0
aW9uKGVsZW1lbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg
fSwKCiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB0aGlzLmVsZW1l
bnQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKS5zZWxlY3QoZnVuY3Rpb24obmFtZSkg
ewogICAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAwOwogICAgfSkuX2VhY2goaXRl
cmF0b3IpOwogIH0sCgogIHNldDogZnVuY3Rpb24oY2xhc3NOYW1lKSB7CiAgICB0
aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogIH0sCgogIGFkZDog
ZnVuY3Rpb24oY2xhc3NOYW1lVG9BZGQpIHsKICAgIGlmICh0aGlzLmluY2x1ZGUo
Y2xhc3NOYW1lVG9BZGQpKSByZXR1cm47CiAgICB0aGlzLnNldCgkQSh0aGlzKS5j
b25jYXQoY2xhc3NOYW1lVG9BZGQpLmpvaW4oJyAnKSk7CiAgfSwKCiAgcmVtb3Zl
OiBmdW5jdGlvbihjbGFzc05hbWVUb1JlbW92ZSkgewogICAgaWYgKCF0aGlzLmlu
Y2x1ZGUoY2xhc3NOYW1lVG9SZW1vdmUpKSByZXR1cm47CiAgICB0aGlzLnNldCgk
QSh0aGlzKS53aXRob3V0KGNsYXNzTmFtZVRvUmVtb3ZlKS5qb2luKCcgJykpOwog
IH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiAkQSh0aGlz
KS5qb2luKCcgJyk7CiAgfQp9OwoKT2JqZWN0LmV4dGVuZChFbGVtZW50LkNsYXNz
TmFtZXMucHJvdG90eXBlLCBFbnVtZXJhYmxlKTsKCi8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0qLwoKRWxlbWVudC5hZGRNZXRob2RzKCk7
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=scriptaculous.js
Content-Type: application/x-javascript; charset=utf-8; name=scriptaculous.js
Content-Location: http://www.gchd.cz/common/scriptaculous.js?load=effects,builder
Content-Transfer-Encoding: Base64
Ly8gc2NyaXB0LmFjdWxvLnVzIHNjcmlwdGFjdWxvdXMuanMgdjEuOC4xLCBUaHUg
SmFuIDAzIDIyOjA3OjEyIC0wNTAwIDIwMDgKCi8vIENvcHlyaWdodCAoYykgMjAw
NS0yMDA3IFRob21hcyBGdWNocyAoaHR0cDovL3NjcmlwdC5hY3Vsby51cywgaHR0
cDovL21pci5hY3Vsby51cykKLy8gCi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwov
LyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu
dGF0aW9uIGZpbGVzICh0aGUKLy8gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhl
IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwovLyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsCi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwovLyBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8KLy8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgovLyAK
Ly8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmUKLy8gaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz
dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELAovLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklM
SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLy8gTk9O
SU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRQovLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi8v
IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTgovLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLy8KLy8g
Rm9yIGRldGFpbHMsIHNlZSB0aGUgc2NyaXB0LmFjdWxvLnVzIHdlYiBzaXRlOiBo
dHRwOi8vc2NyaXB0LmFjdWxvLnVzLwoKdmFyIFNjcmlwdGFjdWxvdXMgPSB7CiAg
VmVyc2lvbjogJzEuOC4xJywKICByZXF1aXJlOiBmdW5jdGlvbihsaWJyYXJ5TmFt
ZSkgewogICAgLy8gaW5zZXJ0aW5nIHZpYSBET00gZmFpbHMgaW4gU2FmYXJpIDIu
MCwgc28gYnJ1dGUgZm9yY2UgYXBwcm9hY2gKICAgIGRvY3VtZW50LndyaXRlKCc8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInK2xpYnJhcnlOYW1l
KyciPjxcL3NjcmlwdD4nKTsKICB9LAogIFJFUVVJUkVEX1BST1RPVFlQRTogJzEu
Ni4wJywKICBsb2FkOiBmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIGNvbnZlcnRW
ZXJzaW9uU3RyaW5nKHZlcnNpb25TdHJpbmcpewogICAgICB2YXIgciA9IHZlcnNp
b25TdHJpbmcuc3BsaXQoJy4nKTsKICAgICAgcmV0dXJuIHBhcnNlSW50KHJbMF0p
KjEwMDAwMCArIHBhcnNlSW50KHJbMV0pKjEwMDAgKyBwYXJzZUludChyWzJdKTsK
ICAgIH0KIAogICAgaWYoKHR5cGVvZiBQcm90b3R5cGU9PSd1bmRlZmluZWQnKSB8
fCAKICAgICAgICh0eXBlb2YgRWxlbWVudCA9PSAndW5kZWZpbmVkJykgfHwgCiAg
ICAgICAodHlwZW9mIEVsZW1lbnQuTWV0aG9kcz09J3VuZGVmaW5lZCcpIHx8CiAg
ICAgICAoY29udmVydFZlcnNpb25TdHJpbmcoUHJvdG90eXBlLlZlcnNpb24pIDwg
CiAgICAgICAgY29udmVydFZlcnNpb25TdHJpbmcoU2NyaXB0YWN1bG91cy5SRVFV
SVJFRF9QUk9UT1RZUEUpKSkKICAgICAgIHRocm93KCJzY3JpcHQuYWN1bG8udXMg
cmVxdWlyZXMgdGhlIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yayA+PSAi
ICsKICAgICAgICBTY3JpcHRhY3Vsb3VzLlJFUVVJUkVEX1BST1RPVFlQRSk7CiAg
ICAKICAgICRBKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQi
KSkuZmluZEFsbCggZnVuY3Rpb24ocykgewogICAgICByZXR1cm4gKHMuc3JjICYm
IHMuc3JjLm1hdGNoKC9zY3JpcHRhY3Vsb3VzXC5qcyhcPy4qKT8kLykpCiAgICB9
KS5lYWNoKCBmdW5jdGlvbihzKSB7CiAgICAgIHZhciBwYXRoID0gcy5zcmMucmVw
bGFjZSgvc2NyaXB0YWN1bG91c1wuanMoXD8uKik/JC8sJycpOwogICAgICB2YXIg
aW5jbHVkZXMgPSBzLnNyYy5tYXRjaCgvXD8uKmxvYWQ9KFthLXosXSopLyk7CiAg
ICAgIChpbmNsdWRlcyA/IGluY2x1ZGVzWzFdIDogJ2J1aWxkZXIsZWZmZWN0cyxk
cmFnZHJvcCxjb250cm9scyxzbGlkZXIsc291bmQnKS5zcGxpdCgnLCcpLmVhY2go
CiAgICAgICBmdW5jdGlvbihpbmNsdWRlKSB7IFNjcmlwdGFjdWxvdXMucmVxdWly
ZShwYXRoK2luY2x1ZGUrJy5qcycpIH0pOwogICAgfSk7CiAgfQp9CgpTY3JpcHRh
Y3Vsb3VzLmxvYWQoKTs=
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=lightbox.js
Content-Type: application/x-javascript; charset=utf-8; name=lightbox.js
Content-Location: http://www.gchd.cz/common/lightbox.js
Content-Transfer-Encoding: Base64
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8KLy8JTGln
aHRib3ggdjIuMDQKLy8JYnkgTG9rZXNoIERoYWthciAtIGh0dHA6Ly93d3cubG9r
ZXNoZGhha2FyLmNvbQovLwlMYXN0IE1vZGlmaWNhdGlvbjogMi85LzA4Ci8vCi8v
CUZvciBtb3JlIGluZm9ybWF0aW9uLCB2aXNpdDoKLy8JaHR0cDovL2xva2VzaGRo
YWthci5jb20vcHJvamVjdHMvbGlnaHRib3gyLwovLwovLwlMaWNlbnNlZCB1bmRl
ciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAyLjUgTGljZW5zZSAt
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzIuNS8KLy8g
IAktIEZyZWUgZm9yIHVzZSBpbiBib3RoIHBlcnNvbmFsIGFuZCBjb21tZXJjaWFs
IHByb2plY3RzCi8vCQktIEF0dHJpYnV0aW9uIHJlcXVpcmVzIGxlYXZpbmcgYXV0
aG9yIG5hbWUsIGF1dGhvciBsaW5rLCBhbmQgdGhlIGxpY2Vuc2UgaW5mbyBpbnRh
Y3QuCi8vCQovLyAgVGhhbmtzOiBTY290dCBVcHRvbih1cHRvbmljLmNvbSksIFBl
dGVyLVBhdWwgS29jaChxdWlya3Ntb2RlLmNvbSksIGFuZCBUaG9tYXMgRnVjaHMo
bWlyLmFjdWxvLnVzKSBmb3IgaWRlYXMsIGxpYnMsIGFuZCBzbmlwcGV0cy4KLy8g
IAkJQXJ0ZW15IFRyZWd1YmVua28gKGFydHkubmFtZSkgZm9yIGNsZWFudXAgYW5k
IGhlbHAgaW4gdXBkYXRpbmcgdG8gbGF0ZXN0IHZlciBvZiBwcm90by1hY3Vsb3Vz
LgovLwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKgoK
ICAgIFRhYmxlIG9mIENvbnRlbnRzCiAgICAtLS0tLS0tLS0tLS0tLS0tLQogICAg
Q29uZmlndXJhdGlvbgoKICAgIExpZ2h0Ym94IENsYXNzIERlY2xhcmF0aW9uCiAg
ICAtIGluaXRpYWxpemUoKQogICAgLSB1cGRhdGVJbWFnZUxpc3QoKQogICAgLSBz
dGFydCgpCiAgICAtIGNoYW5nZUltYWdlKCkKICAgIC0gcmVzaXplSW1hZ2VDb250
YWluZXIoKQogICAgLSBzaG93SW1hZ2UoKQogICAgLSB1cGRhdGVEZXRhaWxzKCkK
ICAgIC0gdXBkYXRlTmF2KCkKICAgIC0gZW5hYmxlS2V5Ym9hcmROYXYoKQogICAg
LSBkaXNhYmxlS2V5Ym9hcmROYXYoKQogICAgLSBrZXlib2FyZEFjdGlvbigpCiAg
ICAtIHByZWxvYWROZWlnaGJvckltYWdlcygpCiAgICAtIGVuZCgpCiAgICAKICAg
IEZ1bmN0aW9uIENhbGxzCiAgICAtIGRvY3VtZW50Lm9ic2VydmUoKQogICAKKi8K
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vCi8vICBD
b25maWd1cmF0aW9ubAovLwpMaWdodGJveE9wdGlvbnMgPSBPYmplY3QuZXh0ZW5k
KHsKICAgIGZpbGVMb2FkaW5nSW1hZ2U6ICAgICAgICAnaW1nL2xvYWRpbmcuZ2lm
JywgICAgIAogICAgZmlsZUJvdHRvbU5hdkNsb3NlSW1hZ2U6ICdpbWcvY2xvc2Vs
YWJlbC5naWYnLAoKICAgIG92ZXJsYXlPcGFjaXR5OiAwLjgsICAgLy8gY29udHJv
bHMgdHJhbnNwYXJlbmN5IG9mIHNoYWRvdyBvdmVybGF5CgogICAgYW5pbWF0ZTog
dHJ1ZSwgICAgICAgICAvLyB0b2dnbGVzIHJlc2l6aW5nIGFuaW1hdGlvbnMKICAg
IHJlc2l6ZVNwZWVkOiA3LCAgICAgICAgLy8gY29udHJvbHMgdGhlIHNwZWVkIG9m
IHRoZSBpbWFnZSByZXNpemluZyBhbmltYXRpb25zICgxPXNsb3dlc3QgYW5kIDEw
PWZhc3Rlc3QpCgogICAgYm9yZGVyU2l6ZTogMTAsICAgICAgICAgLy9pZiB5b3Ug
YWRqdXN0IHRoZSBwYWRkaW5nIGluIHRoZSBDU1MsIHlvdSB3aWxsIG5lZWQgdG8g
dXBkYXRlIHRoaXMgdmFyaWFibGUKCgkvLyBXaGVuIGdyb3VwaW5nIGltYWdlcyB0
aGlzIGlzIHVzZWQgdG8gd3JpdGU6IEltYWdlICMgb2YgIy4KCS8vIENoYW5nZSBp
dCBmb3Igbm9uLWVuZ2xpc2ggbG9jYWxpemF0aW9uCglsYWJlbEltYWdlOiAiSW1h
Z2UiLAoJbGFiZWxPZjogIm9mIgp9LCB3aW5kb3cuTGlnaHRib3hPcHRpb25zIHx8
IHt9KTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp2
YXIgTGlnaHRib3ggPSBDbGFzcy5jcmVhdGUoKTsKCkxpZ2h0Ym94LnByb3RvdHlw
ZSA9IHsKICAgIGltYWdlQXJyYXk6IFtdLAogICAgYWN0aXZlSW1hZ2U6IHVuZGVm
aW5lZCwKICAgIAogICAgLy8gaW5pdGlhbGl6ZSgpCiAgICAvLyBDb25zdHJ1Y3Rv
ciBydW5zIG9uIGNvbXBsZXRpb24gb2YgdGhlIERPTSBsb2FkaW5nLiBDYWxscyB1
cGRhdGVJbWFnZUxpc3QgYW5kIHRoZW4KICAgIC8vIHRoZSBmdW5jdGlvbiBpbnNl
cnRzIGh0bWwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB3aGljaCBpcyB1c2Vk
IHRvIGRpc3BsYXkgdGhlIHNoYWRvdyAKICAgIC8vIG92ZXJsYXkgYW5kIHRoZSBp
bWFnZSBjb250YWluZXIuCiAgICAvLwogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24o
KSB7ICAgIAogICAgICAgIAogICAgICAgIHRoaXMudXBkYXRlSW1hZ2VMaXN0KCk7
CiAgICAgICAgCiAgICAgICAgdGhpcy5rZXlib2FyZEFjdGlvbiA9IHRoaXMua2V5
Ym9hcmRBY3Rpb24uYmluZEFzRXZlbnRMaXN0ZW5lcih0aGlzKTsKCiAgICAgICAg
aWYgKExpZ2h0Ym94T3B0aW9ucy5yZXNpemVTcGVlZCA+IDEwKSBMaWdodGJveE9w
dGlvbnMucmVzaXplU3BlZWQgPSAxMDsKICAgICAgICBpZiAoTGlnaHRib3hPcHRp
b25zLnJlc2l6ZVNwZWVkIDwgMSkgIExpZ2h0Ym94T3B0aW9ucy5yZXNpemVTcGVl
ZCA9IDE7CgoJICAgIHRoaXMucmVzaXplRHVyYXRpb24gPSBMaWdodGJveE9wdGlv
bnMuYW5pbWF0ZSA/ICgoMTEgLSBMaWdodGJveE9wdGlvbnMucmVzaXplU3BlZWQp
ICogMC4xNSkgOiAwOwoJICAgIHRoaXMub3ZlcmxheUR1cmF0aW9uID0gTGlnaHRi
b3hPcHRpb25zLmFuaW1hdGUgPyAwLjIgOiAwOyAgLy8gc2hhZG93IGZhZGUgaW4v
b3V0IGR1cmF0aW9uCgogICAgICAgIC8vIFdoZW4gTGlnaHRib3ggc3RhcnRzIGl0
IHdpbGwgcmVzaXplIGl0c2VsZiBmcm9tIDI1MCBieSAyNTAgdG8gdGhlIGN1cnJl
bnQgaW1hZ2UgZGltZW5zaW9uLgogICAgICAgIC8vIElmIGFuaW1hdGlvbnMgYXJl
IHR1cm5lZCBvZmYsIGl0IHdpbGwgYmUgaGlkZGVuIGFzIHRvIHByZXZlbnQgYSBm
bGlja2VyIG9mIGEKICAgICAgICAvLyB3aGl0ZSAyNTAgYnkgMjUwIGJveC4KICAg
ICAgICB2YXIgc2l6ZSA9IChMaWdodGJveE9wdGlvbnMuYW5pbWF0ZSA/IDI1MCA6
IDEpICsgJ3B4JzsKICAgICAgICAKCiAgICAgICAgLy8gQ29kZSBpbnNlcnRzIGh0
bWwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB0aGF0IGxvb2tzIHNpbWlsYXIg
dG8gdGhpczoKICAgICAgICAvLwogICAgICAgIC8vICA8ZGl2IGlkPSJvdmVybGF5
Ij48L2Rpdj4KICAgICAgICAvLyAgPGRpdiBpZD0ibGlnaHRib3giPgogICAgICAg
IC8vICAgICAgPGRpdiBpZD0ib3V0ZXJJbWFnZUNvbnRhaW5lciI+CiAgICAgICAg
Ly8gICAgICAgICAgPGRpdiBpZD0iaW1hZ2VDb250YWluZXIiPgogICAgICAgIC8v
ICAgICAgICAgICAgICA8aW1nIGlkPSJsaWdodGJveEltYWdlIj4KICAgICAgICAv
LyAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iIiBpZD0iaG92ZXJOYXYiPgogICAg
ICAgIC8vICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9InByZXZMaW5r
Ij48L2E+CiAgICAgICAgLy8gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBp
ZD0ibmV4dExpbmsiPjwvYT4KICAgICAgICAvLyAgICAgICAgICAgICAgPC9kaXY+
CiAgICAgICAgLy8gICAgICAgICAgICAgIDxkaXYgaWQ9ImxvYWRpbmciPgogICAg
ICAgIC8vICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9ImxvYWRpbmdM
aW5rIj4KICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0i
aW1nL2xvYWRpbmcuZ2lmIj4KICAgICAgICAvLyAgICAgICAgICAgICAgICAgIDwv
YT4KICAgICAgICAvLyAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgLy8gICAg
ICAgICAgPC9kaXY+CiAgICAgICAgLy8gICAgICA8L2Rpdj4KICAgICAgICAvLyAg
ICAgIDxkaXYgaWQ9ImltYWdlRGF0YUNvbnRhaW5lciI+CiAgICAgICAgLy8gICAg
ICAgICAgPGRpdiBpZD0iaW1hZ2VEYXRhIj4KICAgICAgICAvLyAgICAgICAgICAg
ICAgPGRpdiBpZD0iaW1hZ2VEZXRhaWxzIj4KICAgICAgICAvLyAgICAgICAgICAg
ICAgICAgIDxzcGFuIGlkPSJjYXB0aW9uIj48L3NwYW4+CiAgICAgICAgLy8gICAg
ICAgICAgICAgICAgICA8c3BhbiBpZD0ibnVtYmVyRGlzcGxheSI+PC9zcGFuPgog
ICAgICAgIC8vICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAvLyAgICAgICAg
ICAgICAgPGRpdiBpZD0iYm90dG9tTmF2Ij4KICAgICAgICAvLyAgICAgICAgICAg
ICAgICAgIDxhIGhyZWY9IiMiIGlkPSJib3R0b21OYXZDbG9zZSI+CiAgICAgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltZy9jbG9zZS5naWYi
PgogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgIC8vICAg
ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAvLyAgICAgICAgICA8L2Rpdj4KICAg
ICAgICAvLyAgICAgIDwvZGl2PgogICAgICAgIC8vICA8L2Rpdj4KCgogICAgICAg
IHZhciBvYmpCb2R5ID0gJCQoJ2JvZHknKVswXTsKCgkJb2JqQm9keS5hcHBlbmRD
aGlsZChCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidvdmVybGF5J30pKTsKCQogICAg
ICAgIG9iakJvZHkuYXBwZW5kQ2hpbGQoQnVpbGRlci5ub2RlKCdkaXYnLHtpZDon
bGlnaHRib3gnfSwgWwogICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2Rpdicse2lk
OidvdXRlckltYWdlQ29udGFpbmVyJ30sIAogICAgICAgICAgICAgICAgQnVpbGRl
ci5ub2RlKCdkaXYnLHtpZDonaW1hZ2VDb250YWluZXInfSwgWwogICAgICAgICAg
ICAgICAgICAgIEJ1aWxkZXIubm9kZSgnaW1nJyx7aWQ6J2xpZ2h0Ym94SW1hZ2Un
fSksIAogICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6
J2hvdmVyTmF2J30sIFsKICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGRlci5u
b2RlKCdhJyx7aWQ6J3ByZXZMaW5rJywgaHJlZjogJyMnIH0pLAogICAgICAgICAg
ICAgICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2EnLHtpZDonbmV4dExpbmsnLCBo
cmVmOiAnIycgfSkKICAgICAgICAgICAgICAgICAgICBdKSwKICAgICAgICAgICAg
ICAgICAgICBCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidsb2FkaW5nJ30sIAogICAg
ICAgICAgICAgICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2EnLHtpZDonbG9hZGlu
Z0xpbmsnLCBocmVmOiAnIycgfSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWlsZGVyLm5vZGUoJ2ltZycsIHtzcmM6IExpZ2h0Ym94T3B0aW9ucy5maWxl
TG9hZGluZ0ltYWdlfSkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAg
ICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIF0pCiAgICAgICAgICAgICks
CiAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jywge2lkOidpbWFnZURhdGFD
b250YWluZXInfSwKICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7
aWQ6J2ltYWdlRGF0YSd9LCBbCiAgICAgICAgICAgICAgICAgICAgQnVpbGRlci5u
b2RlKCdkaXYnLHtpZDonaW1hZ2VEZXRhaWxzJ30sIFsKICAgICAgICAgICAgICAg
ICAgICAgICAgQnVpbGRlci5ub2RlKCdzcGFuJyx7aWQ6J2NhcHRpb24nfSksCiAg
ICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnc3Bhbicse2lkOidu
dW1iZXJEaXNwbGF5J30pCiAgICAgICAgICAgICAgICAgICAgXSksCiAgICAgICAg
ICAgICAgICAgICAgQnVpbGRlci5ub2RlKCdkaXYnLHtpZDonYm90dG9tTmF2J30s
CiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOidi
b3R0b21OYXZDbG9zZScsIGhyZWY6ICcjJyB9LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQnVpbGRlci5ub2RlKCdpbWcnLCB7IHNyYzogTGlnaHRib3hPcHRp
b25zLmZpbGVCb3R0b21OYXZDbG9zZUltYWdlIH0pCiAgICAgICAgICAgICAgICAg
ICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBd
KQogICAgICAgICAgICApCiAgICAgICAgXSkpOwoKCgkJJCgnb3ZlcmxheScpLmhp
ZGUoKS5vYnNlcnZlKCdjbGljaycsIChmdW5jdGlvbigpIHsgdGhpcy5lbmQoKTsg
fSkuYmluZCh0aGlzKSk7CgkJJCgnbGlnaHRib3gnKS5oaWRlKCkub2JzZXJ2ZSgn
Y2xpY2snLCAoZnVuY3Rpb24oZXZlbnQpIHsgaWYgKGV2ZW50LmVsZW1lbnQoKS5p
ZCA9PSAnbGlnaHRib3gnKSB0aGlzLmVuZCgpOyB9KS5iaW5kKHRoaXMpKTsKCQkk
KCdvdXRlckltYWdlQ29udGFpbmVyJykuc2V0U3R5bGUoeyB3aWR0aDogc2l6ZSwg
aGVpZ2h0OiBzaXplIH0pOwoJCSQoJ3ByZXZMaW5rJykub2JzZXJ2ZSgnY2xpY2sn
LCAoZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcCgpOyB0aGlzLmNoYW5nZUlt
YWdlKHRoaXMuYWN0aXZlSW1hZ2UgLSAxKTsgfSkuYmluZEFzRXZlbnRMaXN0ZW5l
cih0aGlzKSk7CgkJJCgnbmV4dExpbmsnKS5vYnNlcnZlKCdjbGljaycsIChmdW5j
dGlvbihldmVudCkgeyBldmVudC5zdG9wKCk7IHRoaXMuY2hhbmdlSW1hZ2UodGhp
cy5hY3RpdmVJbWFnZSArIDEpOyB9KS5iaW5kQXNFdmVudExpc3RlbmVyKHRoaXMp
KTsKCQkkKCdsb2FkaW5nTGluaycpLm9ic2VydmUoJ2NsaWNrJywgKGZ1bmN0aW9u
KGV2ZW50KSB7IGV2ZW50LnN0b3AoKTsgdGhpcy5lbmQoKTsgfSkuYmluZCh0aGlz
KSk7CgkJJCgnYm90dG9tTmF2Q2xvc2UnKS5vYnNlcnZlKCdjbGljaycsIChmdW5j
dGlvbihldmVudCkgeyBldmVudC5zdG9wKCk7IHRoaXMuZW5kKCk7IH0pLmJpbmQo
dGhpcykpOwoKICAgICAgICB2YXIgdGggPSB0aGlzOwogICAgICAgIChmdW5jdGlv
bigpewogICAgICAgICAgICB2YXIgaWRzID0gCiAgICAgICAgICAgICAgICAnb3Zl
cmxheSBsaWdodGJveCBvdXRlckltYWdlQ29udGFpbmVyIGltYWdlQ29udGFpbmVy
IGxpZ2h0Ym94SW1hZ2UgaG92ZXJOYXYgcHJldkxpbmsgbmV4dExpbmsgbG9hZGlu
ZyBsb2FkaW5nTGluayAnICsgCiAgICAgICAgICAgICAgICAnaW1hZ2VEYXRhQ29u
dGFpbmVyIGltYWdlRGF0YSBpbWFnZURldGFpbHMgY2FwdGlvbiBudW1iZXJEaXNw
bGF5IGJvdHRvbU5hdiBib3R0b21OYXZDbG9zZSc7ICAgCiAgICAgICAgICAgICR3
KGlkcykuZWFjaChmdW5jdGlvbihpZCl7IHRoW2lkXSA9ICQoaWQpOyB9KTsKICAg
ICAgICB9KS5kZWZlcigpOwogICAgfSwKCiAgICAvLwogICAgLy8gdXBkYXRlSW1h
Z2VMaXN0KCkKICAgIC8vIExvb3BzIHRocm91Z2ggYW5jaG9yIHRhZ3MgbG9va2lu
ZyBmb3IgJ2xpZ2h0Ym94JyByZWZlcmVuY2VzIGFuZCBhcHBsaWVzIG9uY2xpY2sK
ICAgIC8vIGV2ZW50cyB0byBhcHByb3ByaWF0ZSBsaW5rcy4gWW91IGNhbiByZXJ1
biBhZnRlciBkeW5hbWljYWxseSBhZGRpbmcgaW1hZ2VzIHcvYWpheC4KICAgIC8v
CiAgICB1cGRhdGVJbWFnZUxpc3Q6IGZ1bmN0aW9uKCkgeyAgIAogICAgICAgIHRo
aXMudXBkYXRlSW1hZ2VMaXN0ID0gUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247Cgog
ICAgICAgIGRvY3VtZW50Lm9ic2VydmUoJ2NsaWNrJywgKGZ1bmN0aW9uKGV2ZW50
KXsKICAgICAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LmZpbmRFbGVtZW50KCdh
W3JlbF49bGlnaHRib3hdJykgfHwgZXZlbnQuZmluZEVsZW1lbnQoJ2FyZWFbcmVs
Xj1saWdodGJveF0nKTsKICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAg
ICAgICAgICAgZXZlbnQuc3RvcCgpOwogICAgICAgICAgICAgICAgdGhpcy5zdGFy
dCh0YXJnZXQpOwogICAgICAgICAgICB9CiAgICAgICAgfSkuYmluZCh0aGlzKSk7
CiAgICB9LAogICAgCiAgICAvLwogICAgLy8gIHN0YXJ0KCkKICAgIC8vICBEaXNw
bGF5IG92ZXJsYXkgYW5kIGxpZ2h0Ym94LiBJZiBpbWFnZSBpcyBwYXJ0IG9mIGEg
c2V0LCBhZGQgc2libGluZ3MgdG8gaW1hZ2VBcnJheS4KICAgIC8vCiAgICBzdGFy
dDogZnVuY3Rpb24oaW1hZ2VMaW5rKSB7ICAgIAoKICAgICAgICAkJCgnc2VsZWN0
JywgJ29iamVjdCcsICdlbWJlZCcpLmVhY2goZnVuY3Rpb24obm9kZSl7IG5vZGUu
c3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nIH0pOwoKICAgICAgICAvLyBzdHJl
dGNoIG92ZXJsYXkgdG8gZmlsbCBwYWdlIGFuZCBmYWRlIGluCiAgICAgICAgdmFy
IGFycmF5UGFnZVNpemUgPSB0aGlzLmdldFBhZ2VTaXplKCk7CiAgICAgICAgJCgn
b3ZlcmxheScpLnNldFN0eWxlKHsgd2lkdGg6IGFycmF5UGFnZVNpemVbMF0gKyAn
cHgnLCBoZWlnaHQ6IGFycmF5UGFnZVNpemVbMV0gKyAncHgnIH0pOwoKICAgICAg
ICBuZXcgRWZmZWN0LkFwcGVhcih0aGlzLm92ZXJsYXksIHsgZHVyYXRpb246IHRo
aXMub3ZlcmxheUR1cmF0aW9uLCBmcm9tOiAwLjAsIHRvOiBMaWdodGJveE9wdGlv
bnMub3ZlcmxheU9wYWNpdHkgfSk7CgogICAgICAgIHRoaXMuaW1hZ2VBcnJheSA9
IFtdOwogICAgICAgIHZhciBpbWFnZU51bSA9IDA7ICAgICAgIAoKICAgICAgICBp
ZiAoKGltYWdlTGluay5yZWwgPT0gJ2xpZ2h0Ym94JykpewogICAgICAgICAgICAv
LyBpZiBpbWFnZSBpcyBOT1QgcGFydCBvZiBhIHNldCwgYWRkIHNpbmdsZSBpbWFn
ZSB0byBpbWFnZUFycmF5CiAgICAgICAgICAgIHRoaXMuaW1hZ2VBcnJheS5wdXNo
KFtpbWFnZUxpbmsuaHJlZiwgaW1hZ2VMaW5rLnRpdGxlXSk7ICAgICAgICAgCiAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gaWYgaW1hZ2UgaXMgcGFydCBv
ZiBhIHNldC4uCiAgICAgICAgICAgIHRoaXMuaW1hZ2VBcnJheSA9IAogICAgICAg
ICAgICAgICAgJCQoaW1hZ2VMaW5rLnRhZ05hbWUgKyAnW2hyZWZdW3JlbD0iJyAr
IGltYWdlTGluay5yZWwgKyAnIl0nKS4KICAgICAgICAgICAgICAgIGNvbGxlY3Qo
ZnVuY3Rpb24oYW5jaG9yKXsgcmV0dXJuIFthbmNob3IuaHJlZiwgYW5jaG9yLnRp
dGxlXTsgfSkuCiAgICAgICAgICAgICAgICB1bmlxKCk7CiAgICAgICAgICAgIAog
ICAgICAgICAgICB3aGlsZSAodGhpcy5pbWFnZUFycmF5W2ltYWdlTnVtXVswXSAh
PSBpbWFnZUxpbmsuaHJlZikgeyBpbWFnZU51bSsrOyB9CiAgICAgICAgfQoKICAg
ICAgICAvLyBjYWxjdWxhdGUgdG9wIGFuZCBsZWZ0IG9mZnNldCBmb3IgdGhlIGxp
Z2h0Ym94IAogICAgICAgIHZhciBhcnJheVBhZ2VTY3JvbGwgPSBkb2N1bWVudC52
aWV3cG9ydC5nZXRTY3JvbGxPZmZzZXRzKCk7CiAgICAgICAgdmFyIGxpZ2h0Ym94
VG9wID0gYXJyYXlQYWdlU2Nyb2xsWzFdICsgKGRvY3VtZW50LnZpZXdwb3J0Lmdl
dEhlaWdodCgpIC8gMTApOwogICAgICAgIHZhciBsaWdodGJveExlZnQgPSBhcnJh
eVBhZ2VTY3JvbGxbMF07CiAgICAgICAgdGhpcy5saWdodGJveC5zZXRTdHlsZSh7
IHRvcDogbGlnaHRib3hUb3AgKyAncHgnLCBsZWZ0OiBsaWdodGJveExlZnQgKyAn
cHgnIH0pLnNob3coKTsKICAgICAgICAKICAgICAgICB0aGlzLmNoYW5nZUltYWdl
KGltYWdlTnVtKTsKICAgIH0sCgogICAgLy8KICAgIC8vICBjaGFuZ2VJbWFnZSgp
CiAgICAvLyAgSGlkZSBtb3N0IGVsZW1lbnRzIGFuZCBwcmVsb2FkIGltYWdlIGlu
IHByZXBhcmF0aW9uIGZvciByZXNpemluZyBpbWFnZSBjb250YWluZXIuCiAgICAv
LwogICAgY2hhbmdlSW1hZ2U6IGZ1bmN0aW9uKGltYWdlTnVtKSB7ICAgCiAgICAg
ICAgCiAgICAgICAgdGhpcy5hY3RpdmVJbWFnZSA9IGltYWdlTnVtOyAvLyB1cGRh
dGUgZ2xvYmFsIHZhcgoKICAgICAgICAvLyBoaWRlIGVsZW1lbnRzIGR1cmluZyB0
cmFuc2l0aW9uCiAgICAgICAgaWYgKExpZ2h0Ym94T3B0aW9ucy5hbmltYXRlKSB0
aGlzLmxvYWRpbmcuc2hvdygpOwogICAgICAgIHRoaXMubGlnaHRib3hJbWFnZS5o
aWRlKCk7CiAgICAgICAgdGhpcy5ob3Zlck5hdi5oaWRlKCk7CiAgICAgICAgdGhp
cy5wcmV2TGluay5oaWRlKCk7CiAgICAgICAgdGhpcy5uZXh0TGluay5oaWRlKCk7
CgkJLy8gSEFDSzogT3BlcmE5IGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IHNj
cmlwdGFjdWxvdXMgb3BhY2l0eSBhbmQgYXBwZWFyIGZ4CiAgICAgICAgdGhpcy5p
bWFnZURhdGFDb250YWluZXIuc2V0U3R5bGUoe29wYWNpdHk6IC4wMDAxfSk7CiAg
ICAgICAgdGhpcy5udW1iZXJEaXNwbGF5LmhpZGUoKTsgICAgICAKICAgICAgICAK
ICAgICAgICB2YXIgaW1nUHJlbG9hZGVyID0gbmV3IEltYWdlKCk7CiAgICAgICAg
CiAgICAgICAgLy8gb25jZSBpbWFnZSBpcyBwcmVsb2FkZWQsIHJlc2l6ZSBpbWFn
ZSBjb250YWluZXIKCgogICAgICAgIGltZ1ByZWxvYWRlci5vbmxvYWQgPSAoZnVu
Y3Rpb24oKXsKICAgICAgICAgICAgdGhpcy5saWdodGJveEltYWdlLnNyYyA9IHRo
aXMuaW1hZ2VBcnJheVt0aGlzLmFjdGl2ZUltYWdlXVswXTsKICAgICAgICAgICAg
dGhpcy5yZXNpemVJbWFnZUNvbnRhaW5lcihpbWdQcmVsb2FkZXIud2lkdGgsIGlt
Z1ByZWxvYWRlci5oZWlnaHQpOwogICAgICAgIH0pLmJpbmQodGhpcyk7CiAgICAg
ICAgaW1nUHJlbG9hZGVyLnNyYyA9IHRoaXMuaW1hZ2VBcnJheVt0aGlzLmFjdGl2
ZUltYWdlXVswXTsKICAgIH0sCgogICAgLy8KICAgIC8vICByZXNpemVJbWFnZUNv
bnRhaW5lcigpCiAgICAvLwogICAgcmVzaXplSW1hZ2VDb250YWluZXI6IGZ1bmN0
aW9uKGltZ1dpZHRoLCBpbWdIZWlnaHQpIHsKCiAgICAgICAgLy8gZ2V0IGN1cnJl
bnQgd2lkdGggYW5kIGhlaWdodAogICAgICAgIHZhciB3aWR0aEN1cnJlbnQgID0g
dGhpcy5vdXRlckltYWdlQ29udGFpbmVyLmdldFdpZHRoKCk7CiAgICAgICAgdmFy
IGhlaWdodEN1cnJlbnQgPSB0aGlzLm91dGVySW1hZ2VDb250YWluZXIuZ2V0SGVp
Z2h0KCk7CgogICAgICAgIC8vIGdldCBuZXcgd2lkdGggYW5kIGhlaWdodAogICAg
ICAgIHZhciB3aWR0aE5ldyAgPSAoaW1nV2lkdGggICsgTGlnaHRib3hPcHRpb25z
LmJvcmRlclNpemUgKiAyKTsKICAgICAgICB2YXIgaGVpZ2h0TmV3ID0gKGltZ0hl
aWdodCArIExpZ2h0Ym94T3B0aW9ucy5ib3JkZXJTaXplICogMik7CgogICAgICAg
IC8vIHNjYWxhcnMgYmFzZWQgb24gY2hhbmdlIGZyb20gb2xkIHRvIG5ldwogICAg
ICAgIHZhciB4U2NhbGUgPSAod2lkdGhOZXcgIC8gd2lkdGhDdXJyZW50KSAgKiAx
MDA7CiAgICAgICAgdmFyIHlTY2FsZSA9IChoZWlnaHROZXcgLyBoZWlnaHRDdXJy
ZW50KSAqIDEwMDsKCiAgICAgICAgLy8gY2FsY3VsYXRlIHNpemUgZGlmZmVyZW5j
ZSBiZXR3ZWVuIG5ldyBhbmQgb2xkIGltYWdlLCBhbmQgcmVzaXplIGlmIG5lY2Vz
c2FyeQogICAgICAgIHZhciB3RGlmZiA9IHdpZHRoQ3VycmVudCAtIHdpZHRoTmV3
OwogICAgICAgIHZhciBoRGlmZiA9IGhlaWdodEN1cnJlbnQgLSBoZWlnaHROZXc7
CgogICAgICAgIGlmIChoRGlmZiAhPSAwKSBuZXcgRWZmZWN0LlNjYWxlKHRoaXMu
b3V0ZXJJbWFnZUNvbnRhaW5lciwgeVNjYWxlLCB7c2NhbGVYOiBmYWxzZSwgZHVy
YXRpb246IHRoaXMucmVzaXplRHVyYXRpb24sIHF1ZXVlOiAnZnJvbnQnfSk7IAog
ICAgICAgIGlmICh3RGlmZiAhPSAwKSBuZXcgRWZmZWN0LlNjYWxlKHRoaXMub3V0
ZXJJbWFnZUNvbnRhaW5lciwgeFNjYWxlLCB7c2NhbGVZOiBmYWxzZSwgZHVyYXRp
b246IHRoaXMucmVzaXplRHVyYXRpb24sIGRlbGF5OiB0aGlzLnJlc2l6ZUR1cmF0
aW9ufSk7IAoKICAgICAgICAvLyBpZiBuZXcgYW5kIG9sZCBpbWFnZSBhcmUgc2Ft
ZSBzaXplIGFuZCBubyBzY2FsaW5nIHRyYW5zaXRpb24gaXMgbmVjZXNzYXJ5LCAK
ICAgICAgICAvLyBkbyBhIHF1aWNrIHBhdXNlIHRvIHByZXZlbnQgaW1hZ2UgZmxp
Y2tlci4KICAgICAgICB2YXIgdGltZW91dCA9IDA7CiAgICAgICAgaWYgKChoRGlm
ZiA9PSAwKSAmJiAod0RpZmYgPT0gMCkpewogICAgICAgICAgICB0aW1lb3V0ID0g
MTAwOwogICAgICAgICAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHRpbWVv
dXQgPSAyNTA7ICAgCiAgICAgICAgfQoKICAgICAgICAoZnVuY3Rpb24oKXsKICAg
ICAgICAgICAgdGhpcy5wcmV2TGluay5zZXRTdHlsZSh7IGhlaWdodDogaW1nSGVp
Z2h0ICsgJ3B4JyB9KTsKICAgICAgICAgICAgdGhpcy5uZXh0TGluay5zZXRTdHls
ZSh7IGhlaWdodDogaW1nSGVpZ2h0ICsgJ3B4JyB9KTsKICAgICAgICAgICAgdGhp
cy5pbWFnZURhdGFDb250YWluZXIuc2V0U3R5bGUoeyB3aWR0aDogd2lkdGhOZXcg
KyAncHgnIH0pOwoKICAgICAgICAgICAgdGhpcy5zaG93SW1hZ2UoKTsKICAgICAg
ICB9KS5iaW5kKHRoaXMpLmRlbGF5KHRpbWVvdXQgLyAxMDAwKTsKICAgIH0sCiAg
ICAKICAgIC8vCiAgICAvLyAgc2hvd0ltYWdlKCkKICAgIC8vICBEaXNwbGF5IGlt
YWdlIGFuZCBiZWdpbiBwcmVsb2FkaW5nIG5laWdoYm9ycy4KICAgIC8vCiAgICBz
aG93SW1hZ2U6IGZ1bmN0aW9uKCl7CiAgICAgICAgdGhpcy5sb2FkaW5nLmhpZGUo
KTsKICAgICAgICBuZXcgRWZmZWN0LkFwcGVhcih0aGlzLmxpZ2h0Ym94SW1hZ2Us
IHsgCiAgICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLnJlc2l6ZUR1cmF0aW9uLCAK
ICAgICAgICAgICAgcXVldWU6ICdlbmQnLCAKICAgICAgICAgICAgYWZ0ZXJGaW5p
c2g6IChmdW5jdGlvbigpeyB0aGlzLnVwZGF0ZURldGFpbHMoKTsgfSkuYmluZCh0
aGlzKSAKICAgICAgICB9KTsKICAgICAgICB0aGlzLnByZWxvYWROZWlnaGJvcklt
YWdlcygpOwogICAgfSwKCiAgICAvLwogICAgLy8gIHVwZGF0ZURldGFpbHMoKQog
ICAgLy8gIERpc3BsYXkgY2FwdGlvbiwgaW1hZ2UgbnVtYmVyLCBhbmQgYm90dG9t
IG5hdi4KICAgIC8vCiAgICB1cGRhdGVEZXRhaWxzOiBmdW5jdGlvbigpIHsKICAg
IAogICAgICAgIC8vIGlmIGNhcHRpb24gaXMgbm90IG51bGwKICAgICAgICBpZiAo
dGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2VdWzFdICE9ICIiKXsKICAg
ICAgICAgICAgdGhpcy5jYXB0aW9uLnVwZGF0ZSh0aGlzLmltYWdlQXJyYXlbdGhp
cy5hY3RpdmVJbWFnZV1bMV0pLnNob3coKTsKICAgICAgICB9CiAgICAgICAgCiAg
ICAgICAgLy8gaWYgaW1hZ2UgaXMgcGFydCBvZiBzZXQgZGlzcGxheSAnSW1hZ2Ug
eCBvZiB4JyAKICAgICAgICBpZiAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCA+IDEp
ewogICAgICAgICAgICB0aGlzLm51bWJlckRpc3BsYXkudXBkYXRlKCBMaWdodGJv
eE9wdGlvbnMubGFiZWxJbWFnZSArICcgJyArICh0aGlzLmFjdGl2ZUltYWdlICsg
MSkgKyAnICcgKyBMaWdodGJveE9wdGlvbnMubGFiZWxPZiArICcgICcgKyB0aGlz
LmltYWdlQXJyYXkubGVuZ3RoKS5zaG93KCk7CiAgICAgICAgfQoKICAgICAgICBu
ZXcgRWZmZWN0LlBhcmFsbGVsKAogICAgICAgICAgICBbIAogICAgICAgICAgICAg
ICAgbmV3IEVmZmVjdC5TbGlkZURvd24odGhpcy5pbWFnZURhdGFDb250YWluZXIs
IHsgc3luYzogdHJ1ZSwgZHVyYXRpb246IHRoaXMucmVzaXplRHVyYXRpb24sIGZy
b206IDAuMCwgdG86IDEuMCB9KSwgCiAgICAgICAgICAgICAgICBuZXcgRWZmZWN0
LkFwcGVhcih0aGlzLmltYWdlRGF0YUNvbnRhaW5lciwgeyBzeW5jOiB0cnVlLCBk
dXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiB9KSAKICAgICAgICAgICAgXSwg
CiAgICAgICAgICAgIHsgCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5y
ZXNpemVEdXJhdGlvbiwgCiAgICAgICAgICAgICAgICBhZnRlckZpbmlzaDogKGZ1
bmN0aW9uKCkgewoJICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBvdmVybGF5IHNp
emUgYW5kIHVwZGF0ZSBuYXYKCSAgICAgICAgICAgICAgICB2YXIgYXJyYXlQYWdl
U2l6ZSA9IHRoaXMuZ2V0UGFnZVNpemUoKTsKCSAgICAgICAgICAgICAgICB0aGlz
Lm92ZXJsYXkuc2V0U3R5bGUoeyBoZWlnaHQ6IGFycmF5UGFnZVNpemVbMV0gKyAn
cHgnIH0pOwoJICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2KCk7CiAgICAg
ICAgICAgICAgICB9KS5iaW5kKHRoaXMpCiAgICAgICAgICAgIH0gCiAgICAgICAg
KTsKICAgIH0sCgogICAgLy8KICAgIC8vICB1cGRhdGVOYXYoKQogICAgLy8gIERp
c3BsYXkgYXBwcm9wcmlhdGUgcHJldmlvdXMgYW5kIG5leHQgaG92ZXIgbmF2aWdh
dGlvbi4KICAgIC8vCiAgICB1cGRhdGVOYXY6IGZ1bmN0aW9uKCkgewoKICAgICAg
ICB0aGlzLmhvdmVyTmF2LnNob3coKTsgICAgICAgICAgICAgICAKCiAgICAgICAg
Ly8gaWYgbm90IGZpcnN0IGltYWdlIGluIHNldCwgZGlzcGxheSBwcmV2IGltYWdl
IGJ1dHRvbgogICAgICAgIGlmICh0aGlzLmFjdGl2ZUltYWdlID4gMCkgdGhpcy5w
cmV2TGluay5zaG93KCk7CgogICAgICAgIC8vIGlmIG5vdCBsYXN0IGltYWdlIGlu
IHNldCwgZGlzcGxheSBuZXh0IGltYWdlIGJ1dHRvbgogICAgICAgIGlmICh0aGlz
LmFjdGl2ZUltYWdlIDwgKHRoaXMuaW1hZ2VBcnJheS5sZW5ndGggLSAxKSkgdGhp
cy5uZXh0TGluay5zaG93KCk7CiAgICAgICAgCiAgICAgICAgdGhpcy5lbmFibGVL
ZXlib2FyZE5hdigpOwogICAgfSwKCiAgICAvLwogICAgLy8gIGVuYWJsZUtleWJv
YXJkTmF2KCkKICAgIC8vCiAgICBlbmFibGVLZXlib2FyZE5hdjogZnVuY3Rpb24o
KSB7CiAgICAgICAgZG9jdW1lbnQub2JzZXJ2ZSgna2V5ZG93bicsIHRoaXMua2V5
Ym9hcmRBY3Rpb24pOyAKICAgIH0sCgogICAgLy8KICAgIC8vICBkaXNhYmxlS2V5
Ym9hcmROYXYoKQogICAgLy8KICAgIGRpc2FibGVLZXlib2FyZE5hdjogZnVuY3Rp
b24oKSB7CiAgICAgICAgZG9jdW1lbnQuc3RvcE9ic2VydmluZygna2V5ZG93bics
IHRoaXMua2V5Ym9hcmRBY3Rpb24pOyAKICAgIH0sCgogICAgLy8KICAgIC8vICBr
ZXlib2FyZEFjdGlvbigpCiAgICAvLwogICAga2V5Ym9hcmRBY3Rpb246IGZ1bmN0
aW9uKGV2ZW50KSB7CiAgICAgICAgdmFyIGtleWNvZGUgPSBldmVudC5rZXlDb2Rl
OwoKICAgICAgICB2YXIgZXNjYXBlS2V5OwogICAgICAgIGlmIChldmVudC5ET01f
VktfRVNDQVBFKSB7ICAvLyBtb3ppbGxhCiAgICAgICAgICAgIGVzY2FwZUtleSA9
IGV2ZW50LkRPTV9WS19FU0NBUEU7CiAgICAgICAgfSBlbHNlIHsgLy8gaWUKICAg
ICAgICAgICAgZXNjYXBlS2V5ID0gMjc7CiAgICAgICAgfQoKICAgICAgICB2YXIg
a2V5ID0gU3RyaW5nLmZyb21DaGFyQ29kZShrZXljb2RlKS50b0xvd2VyQ2FzZSgp
OwogICAgICAgIAogICAgICAgIGlmIChrZXkubWF0Y2goL3h8b3xjLykgfHwgKGtl
eWNvZGUgPT0gZXNjYXBlS2V5KSl7IC8vIGNsb3NlIGxpZ2h0Ym94CiAgICAgICAg
ICAgIHRoaXMuZW5kKCk7CiAgICAgICAgfSBlbHNlIGlmICgoa2V5ID09ICdwJykg
fHwgKGtleWNvZGUgPT0gMzcpKXsgLy8gZGlzcGxheSBwcmV2aW91cyBpbWFnZQog
ICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVJbWFnZSAhPSAwKXsKICAgICAgICAg
ICAgICAgIHRoaXMuZGlzYWJsZUtleWJvYXJkTmF2KCk7CiAgICAgICAgICAgICAg
ICB0aGlzLmNoYW5nZUltYWdlKHRoaXMuYWN0aXZlSW1hZ2UgLSAxKTsKICAgICAg
ICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoKGtleSA9PSAnbicpIHx8IChrZXlj
b2RlID09IDM5KSl7IC8vIGRpc3BsYXkgbmV4dCBpbWFnZQogICAgICAgICAgICBp
ZiAodGhpcy5hY3RpdmVJbWFnZSAhPSAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCAt
IDEpKXsKICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUtleWJvYXJkTmF2KCk7
CiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUltYWdlKHRoaXMuYWN0aXZlSW1h
Z2UgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCgogICAgLy8K
ICAgIC8vICBwcmVsb2FkTmVpZ2hib3JJbWFnZXMoKQogICAgLy8gIFByZWxvYWQg
cHJldmlvdXMgYW5kIG5leHQgaW1hZ2VzLgogICAgLy8KICAgIHByZWxvYWROZWln
aGJvckltYWdlczogZnVuY3Rpb24oKXsKICAgICAgICB2YXIgcHJlbG9hZE5leHRJ
bWFnZSwgcHJlbG9hZFByZXZJbWFnZTsKICAgICAgICBpZiAodGhpcy5pbWFnZUFy
cmF5Lmxlbmd0aCA+IHRoaXMuYWN0aXZlSW1hZ2UgKyAxKXsKICAgICAgICAgICAg
cHJlbG9hZE5leHRJbWFnZSA9IG5ldyBJbWFnZSgpOwogICAgICAgICAgICBwcmVs
b2FkTmV4dEltYWdlLnNyYyA9IHRoaXMuaW1hZ2VBcnJheVt0aGlzLmFjdGl2ZUlt
YWdlICsgMV1bMF07CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLmFjdGl2ZUlt
YWdlID4gMCl7CiAgICAgICAgICAgIHByZWxvYWRQcmV2SW1hZ2UgPSBuZXcgSW1h
Z2UoKTsKICAgICAgICAgICAgcHJlbG9hZFByZXZJbWFnZS5zcmMgPSB0aGlzLmlt
YWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZSAtIDFdWzBdOwogICAgICAgIH0KICAg
IAogICAgfSwKCiAgICAvLwogICAgLy8gIGVuZCgpCiAgICAvLwogICAgZW5kOiBm
dW5jdGlvbigpIHsKICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpOwog
ICAgICAgIHRoaXMubGlnaHRib3guaGlkZSgpOwogICAgICAgIG5ldyBFZmZlY3Qu
RmFkZSh0aGlzLm92ZXJsYXksIHsgZHVyYXRpb246IHRoaXMub3ZlcmxheUR1cmF0
aW9uIH0pOwogICAgICAgICQkKCdzZWxlY3QnLCAnb2JqZWN0JywgJ2VtYmVkJyku
ZWFjaChmdW5jdGlvbihub2RlKXsgbm9kZS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zp
c2libGUnIH0pOwogICAgfSwKCiAgICAvLwogICAgLy8gIGdldFBhZ2VTaXplKCkK
ICAgIC8vCiAgICBnZXRQYWdlU2l6ZTogZnVuY3Rpb24oKSB7CgkgICAgICAgIAoJ
ICAgICB2YXIgeFNjcm9sbCwgeVNjcm9sbDsKCQkKCQlpZiAod2luZG93LmlubmVy
SGVpZ2h0ICYmIHdpbmRvdy5zY3JvbGxNYXhZKSB7CQoJCQl4U2Nyb2xsID0gd2lu
ZG93LmlubmVyV2lkdGggKyB3aW5kb3cuc2Nyb2xsTWF4WDsKCQkJeVNjcm9sbCA9
IHdpbmRvdy5pbm5lckhlaWdodCArIHdpbmRvdy5zY3JvbGxNYXhZOwoJCX0gZWxz
ZSBpZiAoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5ib2R5
Lm9mZnNldEhlaWdodCl7IC8vIGFsbCBidXQgRXhwbG9yZXIgTWFjCgkJCXhTY3Jv
bGwgPSBkb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoOwoJCQl5U2Nyb2xsID0gZG9j
dW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ7CgkJfSBlbHNlIHsgLy8gRXhwbG9yZXIg
TWFjLi4ud291bGQgYWxzbyB3b3JrIGluIEV4cGxvcmVyIDYgU3RyaWN0LCBNb3pp
bGxhIGFuZCBTYWZhcmkKCQkJeFNjcm9sbCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0
V2lkdGg7CgkJCXlTY3JvbGwgPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsK
CQl9CgkJCgkJdmFyIHdpbmRvd1dpZHRoLCB3aW5kb3dIZWlnaHQ7CgkJCgkJaWYg
KHNlbGYuaW5uZXJIZWlnaHQpIHsJLy8gYWxsIGV4Y2VwdCBFeHBsb3JlcgoJCQlp
Zihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpewoJCQkJd2lu
ZG93V2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7
IAoJCQl9IGVsc2UgewoJCQkJd2luZG93V2lkdGggPSBzZWxmLmlubmVyV2lkdGg7
CgkJCX0KCQkJd2luZG93SGVpZ2h0ID0gc2VsZi5pbm5lckhlaWdodDsKCQl9IGVs
c2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7IC8vIEV4cGxvcmVyIDYgU3RyaWN0
IE1vZGUKCQkJd2luZG93V2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQu
Y2xpZW50V2lkdGg7CgkJCXdpbmRvd0hlaWdodCA9IGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudC5jbGllbnRIZWlnaHQ7CgkJfSBlbHNlIGlmIChkb2N1bWVudC5ib2R5
KSB7IC8vIG90aGVyIEV4cGxvcmVycwoJCQl3aW5kb3dXaWR0aCA9IGRvY3VtZW50
LmJvZHkuY2xpZW50V2lkdGg7CgkJCXdpbmRvd0hlaWdodCA9IGRvY3VtZW50LmJv
ZHkuY2xpZW50SGVpZ2h0OwoJCX0JCgkJCgkJLy8gZm9yIHNtYWxsIHBhZ2VzIHdp
dGggdG90YWwgaGVpZ2h0IGxlc3MgdGhlbiBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0
CgkJaWYoeVNjcm9sbCA8IHdpbmRvd0hlaWdodCl7CgkJCXBhZ2VIZWlnaHQgPSB3
aW5kb3dIZWlnaHQ7CgkJfSBlbHNlIHsgCgkJCXBhZ2VIZWlnaHQgPSB5U2Nyb2xs
OwoJCX0KCQoJCS8vIGZvciBzbWFsbCBwYWdlcyB3aXRoIHRvdGFsIHdpZHRoIGxl
c3MgdGhlbiB3aWR0aCBvZiB0aGUgdmlld3BvcnQKCQlpZih4U2Nyb2xsIDwgd2lu
ZG93V2lkdGgpewkKCQkJcGFnZVdpZHRoID0geFNjcm9sbDsJCQoJCX0gZWxzZSB7
CgkJCXBhZ2VXaWR0aCA9IHdpbmRvd1dpZHRoOwoJCX0KCgkJcmV0dXJuIFtwYWdl
V2lkdGgscGFnZUhlaWdodF07Cgl9Cn0KCmRvY3VtZW50Lm9ic2VydmUoJ2RvbTps
b2FkZWQnLCBmdW5jdGlvbiAoKSB7IG5ldyBMaWdodGJveCgpOyB9KTsK
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=script.js
Content-Type: application/x-javascript; charset=utf-8; name=script.js
Content-Location: http://www.gchd.cz/common/script.js
Content-Transfer-Encoding: Base64
ZnVuY3Rpb24gZXhwYW5zZShpZCkgewoJLyoKCW5ldyBFZmZlY3QuTW9ycGgoaWQs
IHsKCQkJc3R5bGU6CSdoZWlnaHQ6MzUwcHgnLAoJCQlkdXJhdGlvbjoJMC41fQoJ
CQkpOwoJKi8KCW9iamVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsK
CW9iamVjdC5zdHlsZS5oZWlnaHQ9J2F1dG8nOwoJCn0KCmZ1bmN0aW9uIGNvbGxh
cHNlKGlkKSB7CgkvKgoJbmV3IEVmZmVjdC5Nb3JwaChpZCwgewoJCQlzdHlsZToJ
J2hlaWdodDoyOXB4JywKCQkJZHVyYXRpb246CTAuNX0KCQkJKTsKCSovCglvYmpl
Y3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CglvYmplY3Quc3R5bGUu
aGVpZ2h0PScyOHB4JzsKfQoKZnVuY3Rpb24gaGxhc3VqKGlkKSB7Cgl2YXIgdXJs
ID0gIi9jb21tb24vdm90ZS5waHA/dm9sYmE9IitpZDsKCiAgICAgaWYgKHVybCAh
PSAwKQogICAgIHsKICAgICAgICBpZiAod2luZG93LkFjdGl2ZVhPYmplY3QpCiAg
ICAgICAgewogICAgICAgICAgaHR0cFJlcXVlc3QgPSBuZXcgQWN0aXZlWE9iamVj
dCgiTWljcm9zb2Z0LlhNTEhUVFAiKTsKICAgICAgICB9CiAgICAgICAgZWxzZQog
ICAgICAgIHsKICAgICAgICAgIGh0dHBSZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7CiAgICAgICAgfQogICAgICAgIGh0dHBSZXF1ZXN0Lm9wZW4oIkdFVCIs
IHVybCwgdHJ1ZSk7CiAgICAgICAgaHR0cFJlcXVlc3Qub25yZWFkeXN0YXRlY2hh
bmdlPSBmdW5jdGlvbiAoKSB7cHJvY2Vzc1JlcXVlc3QoKTsgfSA7CiAgICAgICAg
aHR0cFJlcXVlc3Quc2VuZChudWxsKTsKICAgICAgfQp9CgpmdW5jdGlvbiBwcm9j
ZXNzUmVxdWVzdCgpCnsKICBpZiAoaHR0cFJlcXVlc3QucmVhZHlTdGF0ZSA9PSA0
KQogIHsKICAgIGlmKGh0dHBSZXF1ZXN0LnN0YXR1cyA9PSAyMDApCiAgICB7CiAg
ICAgIHZhciBpbnF1aXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucXVp
cnkiKTsKICAgICAgaW5xdWlyeS5pbm5lckhUTUwgPSBodHRwUmVxdWVzdC5yZXNw
b25zZVRleHQ7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgYWxlcnQoIkNo
eWJhIHByaSBuYWNpdGFuaSBzdGFua3kiKyBodHRwUmVxdWVzdC5zdGF0dXMgKyI6
IisgaHR0cFJlcXVlc3Quc3RhdHVzVGV4dCk7CiAgICB9CiAgfQp9CgpmdW5jdGlv
biBjaGFuZ2VfcGFnZShwYWdlKSB7Cgl2YXIgcGFnZXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGFnZXMiKTsKCQoJcGFnZXMuZWxlbWVudHNbJ3BhZ2UnXS52
YWx1ZSA9IHBhZ2U7CglwYWdlcy5zdWJtaXQoKTsKfQoKZnVuY3Rpb24gc2hvd19w
bGFucygpIHsKCS8vIG1heSBiZSB1c2VkIHNjcmlwdC5hY3Vsby51cwoJJCgibmV3
cyIpLmhpZGUoKTsKCSQoInBsYW5zX2J1dHRvbiIpLnN0eWxlLmJhY2tncm91bmQ9
InVybCguLi9pbWcvbmV3cy1idXR0b24tYWN0aXZlLmpwZykgbGVmdCB0b3Agbm8t
cmVwZWF0IjsKCSQoInBsYW5zX2J1dHRvbiIpLnN0eWxlLmNvbG9yPSIjZmZmZmZm
IjsKCSQoIm5ld3NfYnV0dG9uIikuc3R5bGUuYmFja2dyb3VuZD0idXJsKC4uL2lt
Zy9uZXdzLWJ1dHRvbi1wYXNzaXZlLmpwZykgbGVmdCB0b3Agbm8tcmVwZWF0IjsK
CSQoIm5ld3NfYnV0dG9uIikuc3R5bGUuY29sb3I9IiMyMTM5OTEiOwoJJCgicGxh
bnMiKS5zdHlsZS5kaXNwbGF5PSJibG9jayI7Cgl9CgpmdW5jdGlvbiBzaG93X25l
d3MoKSB7CgkvLyBtYXkgYmUgdXNlZCBzY3JpcHQuYWN1bG8udXMKCSQoInBsYW5z
IikuaGlkZSgpOwoJJCgibmV3c19idXR0b24iKS5zdHlsZS5iYWNrZ3JvdW5kPSJ1
cmwoLi4vaW1nL25ld3MtYnV0dG9uLWFjdGl2ZS5qcGcpIGxlZnQgdG9wIG5vLXJl
cGVhdCI7CgkkKCJuZXdzX2J1dHRvbiIpLnN0eWxlLmNvbG9yPSIjZmZmZmZmIjsK
CSQoInBsYW5zX2J1dHRvbiIpLnN0eWxlLmJhY2tncm91bmQ9InVybCguLi9pbWcv
cGxhbnMtYnV0dG9uLXBhc3NpdmUuZ2lmKSBsZWZ0IHRvcCBuby1yZXBlYXQiOwoJ
JCgicGxhbnNfYnV0dG9uIikuc3R5bGUuY29sb3I9IiMyMTM5OTEiOwoJJCgibmV3
cyIpLnNob3coKTsKCX0K
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=header-left.jpg
Content-Type: image/jpeg; name=header-left.jpg
Content-Location: http://www.gchd.cz/img/header-left.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAZAAoDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAA
AAAACQAIC//EACYQAAEDBAAEBwAAAAAAAAAAAAQFBgcAAgMIAQkUFiE5UXGRuNH/
xAAXAQADAQAAAAAAAAAAAAAAAAAGBwgJ/8QAIREAAwEAAgIBBQAAAAAAAAAAAQID
BAURBhITAAciMaH/2gAMAwEAAhEDEQA/ADF3m3UlbeyfXZNEkqahiSylE4WOWFcq
Gmt+NGTwzW2JTaQRSM14uAi8UcYtyqQY4ncLhvOWMw+DqMIw+Oaqq0mxYsvG5M2D
DCebHkikM8JL6pKU1CqoH7J6HbMSWdiWYliSZF0aL67106ava96NStXPbO7Hskn+
ADoKAAAAAPpQnzo3dso1FbZvlwsV3SRE9vQ5Jb1lTFLvuf8AU19rakIBhYVyBjut
fE4RG4iTClaGJcaCAtLKgykV0ASumN10xw71dQLzx9OHzx/KXjkPea3qr7zh9cJf
row0hOd+53L+C8rfx+uefPwhKVMmvVd821IuaKI6rKmgbHmEAXQUlV1ANvlr71c5
weM5eaxR3rU4qUZxWc5ikmYBD7TUtP4gez2nbAE/j6jpR//Z
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=header-right.jpg
Content-Type: image/jpeg; name=header-right.jpg
Content-Location: http://www.gchd.cz/img/header-right.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAZAAoDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAA
AAAAAAkKB//EACMQAAICAgICAgMBAAAAAAAAAAUGAwQBAgcIAAkSFAo1dbT/xAAW
AQEBAQAAAAAAAAAAAAAAAAAIBwn/xAAiEQACAgICAgIDAAAAAAAAAAABAgMEBRIG
EQAhEyIHFEH/2gAMAwEAAhEDEQA/AERKDi3cfModzQmpkSHBet4vgGtQOE1plB3s
RyRYuBzoa1SKDLeIpZYsWKVqCbEckmnz+O+2M1Nce/lCOC6go6+99bSz+8Ak9aDO
T5ry6rrOrs1jAtKkwt2q2N4PlHL+GQvBcM4CUJZKQrF36FWTeCvHtmULw80L5DxD
jnKRWGexkV5qhc13Ms9eWMSdboJq0sMrRsQpMbO0ewDa7e/Ctis9lsIZTjLj1hOF
+VdIpUcoe1b4545EDj2N1UNqSpOp68ZB0m9XHaXusRX2JdTinHPX6wVqRtXYt4Gb
DkUWB+8wDipBFpEbgclzCcpFVYsr6L3HuScFB0lCgng6ijyuT9OqYF6evVyGCBhF
zqwbbbYoUOG2mtm595rosjNZo1Ias7CwUlJyBqlM4ali2JFqqwEDr1e/ZsRBRY8b
pWqQuD5y/aJf85t/1KnmLeF/L/kDkfJJVtPesYyGMusFTGWrFVEUsCTNLFIj2JDq
Ps+qKB9I0JctUsZxPE14D8kX7LuVJeVVPR1UnUewoPZP9PZ9k9Dz/9k=
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=logo-title.jpg
Content-Type: image/jpeg; name=logo-title.jpg
Content-Location: http://www.gchd.cz/img/logo-title.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCABkAQUDASIAAhEBAxEB/8QAHgAAAgICAwEBAAAAAAAA
AAAAAAYBCAUHAgQJAwr/xABBEAAABQIEBAUBBgUDAwMFAAABAgMEBQYRByExQQAU
UWEIEhNxgZEiUqGxwfAVFjLR4UJi8QkXIxgkJSZDcrLC/8QAHQEAAQUBAQEBAAAA
AAAAAAAAAAECAwQFBgcICf/EADoRAAIBAgQEBAUCBQMEAwAAAAECAwQRABIhMQUT
QVEGImFxFIGRofAjwTJCsdHhB2LxFSRSsjNTgv/aAAwDAQACEQMRAD8A8AfIbpv7
X1C/fT8uDyH+6OQ2HLf9/HGeFoA5W2D2vlvv+evXKeUHLIMr79b/AN/bsF+P0zyH
uMfHmf27D7a6le5/4GMABDDttf8Aetvng8h9yiH9r/u/T8eM9yt9g0Ef02ANOmt+
J5XawaX2+mlv17cGRvTBmNr29+nb3/4ItscYACGEdB99t+l9wt78T5DbBcem/f8A
eWfbPjPcoA6h16B+uds7CNtA63EFqHQAz23EQy2ta/45iF+DIdPv6bevv9N+mEz3
2H2Jttv6b6/bvgfTP0EB6WG/0t7DnlmA8R5DfdH92/uHGf5UM8uu2vzt8fGfE8oH
3dh+v5D79b5ZcGQ/ny/z9PXC5xfrb+noB/c9/TGA9M/3R4PTN06fj+/na/Ge5QBz
APbYLb9QEdNeuWl+DlAAbWEO+Vw75jqIhbIcs9B4OWe4/Nvzp64A/f09NyPU7b/s
LYwPpn+6PB6Zunv29+M/ymv2QuAdrW99MunURC3BynULb2tvfTPTS2txsNwDcyHu
Pv8A2wZ9ddu++thf+1+umMB5DWvbr7b2uPcct/wtxHkN0/eo/TfhhFoHTO9huF76
5aZfhncchG4YNabptBwLJWehU3hTeQWhpNkDvzhcPTBr64ricTAIAmVLzmN9kCiY
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
A/twcHBwAAgXA2HT0wY//9k=
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=logo-school.jpg
Content-Type: image/jpeg; name=logo-school.jpg
Content-Location: http://www.gchd.cz/img/logo-school.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCABkAVgDASIA
AhEBAxEB/8QAHwAAAQUAAwEBAQAAAAAAAAAABgAFBwgJAQMEAgoL/8QAQRAAAAYC
AQIFAgQEAwYEBwAAAQIDBAUGBxEhCDEAEhMUQVFhFRZxgQkikaEXIzIkQmKx0fAl
JjRSM0RUZKLB8f/EAB0BAAEEAwEBAAAAAAAAAAAAAAUAAwQGAQIHCAn/xAA7EQAC
AgEDAwIEBAQEBgIDAAABAgMEEQUSIQATMQZBFCJRYQcycYEVI0KRobHB4RYkM1Ji
0SVTcpPw/9oADAMBAAIRAxEAPwDAr2pu/Ovrx/3/AH8cC1N9+e3IfTfyHwHPz/Tn
wTe0+Nca477/AHH9NcCAjv5Hfi0vTPjDFmTpCRplip2acsZmuk/U6ZgzEmGLJW6O
4mpqZVkjz1iuVwtuOskRzWCg27aNRaxEdCoOXh30jLTE/W4WBWdvvpZblSnXksyL
I6RBd4QICoLBWkZ5XiijiiBMk0kskccUSvJI6qpPXkCBHsSJCrKruSF3bsEgZVQq
K8ju5G1I40d5HYIqksMU0BsIjz+v6fTvr9O++/bxyLYQ+vb4AB5/6b43x2+/jbvK
3Qz0nmxj1GKdPU1li55I6bi4Ip1zv8/mnErjp5XzDk2wWM17gIWxyWJMYpuaDQoC
iWeGjsjTdxrzC1297FhHxiccaHLas6HHSpm9hM26FlqjGQH5G/Kf5lsFmvePKxQ2
g32FTstDBjkqw2uNx7OjeauqFppYQNnkvzXWEnVjr4SEI0cvkRmn67pmoJM4mNRo
XjV4NQaGrOElgpWIpjE0pYQyx6hT2MxUh50iZVkIUzLemXarovbM4kVir1Q88W5J
LEUke8R4MiNVnyBkbY2kBZcnqrXth+o7512/bf0+/he2Hkedf3/p3/fnj45Dxc6s
dD3UlblshpRlGgWgYnn6ZW8hurRlPElHjqu/yKsihQXb2Uut7r8atXLodw2NVrex
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
2ooUZIGTgADJ9z79f//Z
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=menu-left.jpg
Content-Type: image/jpeg; name=menu-left.jpg
Content-Location: http://www.gchd.cz/img/menu-left.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAeAA8DASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAA
AAAAAAgJ/8QAHxAAAgEEAwEBAAAAAAAAAAAAAwQFAAIGBwEICRMW/8QAFwEAAwEA
AAAAAAAAAAAAAAAAAwQICf/EAB8RAAICAgMBAQEAAAAAAAAAAAECAwQFEQYSIQAx
Qf/aAAwDAQACEQMRAD8Ah/0E7s7C7v8AYTNtjZDkc4xr1fIZVXUuGOMHFE4hhQWL
1oUK0PwXlJeYdjgrtT0gMAmZKSKwye0fN/xHC9KVs5hMLjePYqjhcTWSpj8dXjrV
oUVRpI1C93Khe80pBkmlI7SyszsSzH6F7duxesz27UjS2LEjSyuxJJZiSQNk6Ufi
qPFUADwfKVrl62ebyPQTb6v4jKV5zUmwyXyWCRUgd8+X40sS576ws2cyVqUgFAyD
IE5UT5GnVuFjNqgOQ1g8jaW41yLGcswmP5Bh3lkx+ShE0BnhaCZdEq8csTb6yRur
I/RnjLKTHI6FWJMhQsYy5YoW1VbFaQxyBHDrsf1WXwqRoj8Oj6Adgf/Z
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.gchd.cz/img/inquiry-fg.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAT
Q3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQH/wAARCAAKAAMDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAA
AAAAAAYI/8QAJBAAAQIBDQAAAAAAAAAAAAAAAQAEBgIFCBEUFiFRVoGRltT/xAAU
AQEAAAAAAAAAAAAAAAAAAAAJ/8QAJhEAAQAFDQAAAAAAAAAAAAAAAQACAwRhBQYH
ERghJlZlkpTV8P/aAAwDAQACEQMRAD8A3+KR7ICq2RBhm8fE8mQSdyiuLjQTo+Fu
vzT5EQS2f1c+zn5D9DVoeuqSYUjMwBhqS9rt16f/2Q==
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=mapa-doppler-s.png
Content-Type: image/png; name=mapa-doppler-s.png
Content-Location: http://www.gchd.cz/img/mapa-doppler-s.png
Content-Transfer-Encoding: Base64
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
------------FgkmpfQsCzxrMiKK0NAZoj
Content-Disposition: inline; filename=favicon.htm
Content-Type: text/html; name=favicon.htm
Content-Location: http://www.gchd.cz/aktualita/favicon.ico
Content-Transfer-Encoding: 8bit