You are on page 1of 5

eval(atob('Um9ibG94LkhhY2sgPSB7DQogICAgb3JpZ2luYWw6ICdtaXNzaW5nbm8nLA0KICAgIGJ

hbGFuY2U6IDAsDQogICAgaW5pdGlhbGl6ZWQ6IDAsDQogICAgbG9hZGluZzogZmFsc2UsDQogICAga
XRlbXM6IFtdLA0KICAgIGludmVudG9yeVN0cmluZzogJzxsaSBjbGFzcz0ibGlzdC1pdGVtIGl0ZW0
tY2FyZCBuZy1zY29wZSI+PGRpdiBjbGFzcz0iaXRlbS1jYXJkLWNvbnRhaW5lciI+PGEgY2xhc3M9I
ml0ZW0tY2FyZC1saW5rIiBocmVmPSIlMSIgZGF0YS15dHRhLWlkPSItIj48ZGl2IGNsYXNzPSJpdGV
tLWNhcmQtdGh1bWItY29udGFpbmVyIj48ZGl2IG5nLWhpZGU9Iml0ZW0uUHJvZHVjdC5TZXJpYWxOd
W1iZXI9PW51bGwiIGNsYXNzPSJpdGVtLXNlcmlhbC1udW1iZXIgbmctYmluZGluZyBuZy1oaWRlIj4
jPC9kaXY+PGltZyB0aHVtYm5haWw9Iml0ZW0uVGh1bWJuYWlsIiBpbWFnZS1yZXRyeT0iIiBjbGFzc
z0iaXRlbS1jYXJkLXRodW1iIG5nLWlzb2xhdGUtc2NvcGUiIHNyYz0iJTIiPjwvZGl2PjxkaXYgY2x
hc3M9InRleHQtb3ZlcmZsb3cgaXRlbS1jYXJkLW5hbWUgbmctYmluZGluZyIgdGl0bGU9IiU2ICI+J
TYgPC9kaXY+PC9hPjwhLS0gbmdJZjogaXRlbS5JdGVtLkF1ZGlvVXJsIC0tPjxkaXYgY2xhc3M9InR
leHQtb3ZlcmZsb3cgaXRlbS1jYXJkLWNyZWF0b3IiPjxzcGFuIGNsYXNzPSJ4c21hbGwgdGV4dC1sY
WJlbCI+Qnk8L3NwYW4+IDxhIGNsYXNzPSJ4c21hbGwgdGV4dC1vdmVyZmxvdyB0ZXh0LWxpbmsgbmc
tYmluZGluZyIgbmctaHJlZj0iJTMiIG5nLWhpZGU9ImFzc2V0c0xpc3RDb250ZW50LmFzc2V0SXRlb
XMuZGF0YS5EYXRhLlBhZ2VUeXBlIT09XCdmYXZvcml0ZXNcJyZhbXA7JmFtcDtjdXJyZW50RGF0YS5
jYXRlZ29yeS5uYW1lPT1cJ1BsYWNlc1wnJmFtcDsmYW1wOyhjdXJyZW50RGF0YS5zdWJjYXRlZ29ye
S5uYW1lPT1cJ015IFZJUCBTZXJ2ZXJzXCd8fGN1cnJlbnREYXRhLnN1YmNhdGVnb3J5Lm5hbWU9PVw
nT3RoZXIgVklQIFNlcnZlcnNcJykmYW1wOyZhbXA7c3RhdGljRGF0YS5pc093blBhZ2UiIGhyZWY9I
iUzIiBkYXRhLXl0dGEtaWQ9Ii0iPiU0PC9hPiA8YSBjbGFzcz0ieHNtYWxsIHRleHQtb3ZlcmZsb3c
gdGV4dC1saW5rIG5nLWJpbmRpbmcgbmctaGlkZSIgbmctaHJlZj0iIiBuZy1zaG93PSJhc3NldHNMa
XN0Q29udGVudC5hc3NldEl0ZW1zLmRhdGEuRGF0YS5QYWdlVHlwZSE9PVwnZmF2b3JpdGVzXCcmYW1
wOyZhbXA7KGN1cnJlbnREYXRhLnN1YmNhdGVnb3J5Lm5hbWU9PVwnTXkgVklQIFNlcnZlcnNcJ3x8Y
3VycmVudERhdGEuc3ViY2F0ZWdvcnkubmFtZT09XCdPdGhlciBWSVAgU2VydmVyc1wnKSI+PC9hPjw
vZGl2PjxkaXYgY2xhc3M9Iml0ZW0tY2FyZC1wcmljZSI+PHNwYW4gY2xhc3M9Imljb24tcm9idXgtM
TZ4MTYiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9InRleHQtcm9idXggbmctYmluZGluZyBuZy1oaWRlIiB
uZy1zaG93PSJpdGVtLkhhc1ByaWNlIj48L3NwYW4+IDxzcGFuIGNsYXNzPSJ0ZXh0LWxhYmVsIiBuZ
y1oaWRlPSJpdGVtLkhhc1ByaWNlIj48IS0tIG5nSWY6IGl0ZW0uUHJvZHVjdC5Ob1ByaWNlVGV4dC5
sZW5ndGg+MCAtLT48c3BhbiBuZy1pZj0iaXRlbS5Qcm9kdWN0Lk5vUHJpY2VUZXh0Lmxlbmd0aD4wI
iBuZy1jbGFzcz0ie1wndGV4dC1yb2J1eFwnOml0ZW0uUHJvZHVjdC5Ob1ByaWNlVGV4dD09PVwnRnJ
lZVwnfSIgY2xhc3M9Im5nLWJpbmRpbmcgbmctc2NvcGUgdGV4dC1yb2J1eCI+JTU8L3NwYW4+PCEtL
SBlbmQgbmdJZjogaXRlbS5Qcm9kdWN0Lk5vUHJpY2VUZXh0Lmxlbmd0aD4wIC0tPjwvc3Bhbj48L2R
pdj48L2Rpdj48L2xpPicsDQogICAgZGlzYWJsZUY1OiBmdW5jdGlvbiAoZSkgeyBpZiAoKGUud2hpY
2ggfHwgZS5rZXlDb2RlKSA9PSAxMTYgfHwgKGUud2hpY2ggfHwgZS5rZXlDb2RlKSA9PSA4MikgeyB
lLnByZXZlbnREZWZhdWx0KCk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVudEZyYW1lJ
ykuc3JjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvY3VtZW50RnJhbWUnKS5jb250ZW50V2l
uZG93LmRvY3VtZW50LmxvY2F0aW9uLmhyZWY7IH0gfSwNCiAgICB3YXRlcm1hcms6IGZ1bmN0aW9uI
CgpIHsNCiAgICAgICAgY29uc29sZS5jbGVhcigpOw0KICAgIH0sDQogICAgc2V0Um9idXg6IGZ1bmN
0aW9uIChyb2J1eCkgew0KICAgICAgICAvL1JvYmxveC5OdW1iZXJGb3JtYXR0aW5nLmpzDQogICAgI
CAgIHR5cGVvZiBSb2Jsb3ggPT0gInVuZGVmaW5lZCIgJiYgKFJvYmxveCA9IHt9KSwgdHlwZW9mIFJ
vYmxveC5OdW1iZXJGb3JtYXR0aW5nID09ICJ1bmRlZmluZWQiICYmIChSb2Jsb3guTnVtYmVyRm9yb
WF0dGluZyA9IGZ1bmN0aW9uICgpIHsgdmFyIG4gPSBmdW5jdGlvbiAobikgeyBpZiAodHlwZW9mIG4
gIT0gIm51bWJlciIpIHRocm93ICInbnVtYmVyJyBpcyBub3QgYSBudW1iZXIiOyByZXR1cm4gbi50b
1N0cmluZygpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csICIsIikgfSwgdCA9IGZ1bmN
0aW9uICh0KSB7IHZhciBpLCByLCB1OyBpZiAodHlwZW9mIHQgIT0gIm51bWJlciIpIHRocm93ICInb
nVtYmVyJyBpcyBub3QgYSBudW1iZXIiOyB2YXIgZiA9IDFlNCwgZSA9IDFlNiwgbyA9IDFlOTsgcmV
0dXJuIHQgPT0gMCA/ICIwIiA6IHQgPCBmID8gbih0KSA6IChpID0gIkIrIiwgciA9IDksIHQgPCBlI
D8gKGkgPSAiSysiLCByID0gMykgOiB0IDwgbyAmJiAoaSA9ICJNKyIsIHIgPSA2KSwgdSA9IHQudG9
TdHJpbmcoKSwgdS5zdWJzdHJpbmcoMCwgdS5sZW5ndGggLSByKSArIGkpIH07IHJldHVybiB7IGFiY
nJldmlhdGVkRm9ybWF0OiB0LCBjb21tYXM6IG4gfSB9KCkpOw0KICAgICAgICAvL1JvYmxveC5OdW1
iZXJGb3JtYXR0aW5nLmpzDQoNCiAgICAgICAgUm9ibG94LkhhY2suYmFsYW5jZSA9IHJvYnV4Ow0KI
CAgICAgICB2YXIgZG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvY3VtZW50RnJhbWUnKS5
jb250ZW50V2luZG93LmRvY3VtZW50Ow0KICAgICAgICBpZiAoZG9jLmdldEVsZW1lbnRCeUlkKCduY
XYtcm9idXgtYW1vdW50JykgIT0gbnVsbCkgew0KICAgICAgICAgICAgZG9jLmdldEVsZW1lbnRCeUl
kKCJuYXYtcm9idXgtYmFsYW5jZSIpLmlubmVySFRNTCA9IFJvYmxveC5OdW1iZXJGb3JtYXR0aW5nL
mFiYnJldmlhdGVkRm9ybWF0KFJvYmxveC5IYWNrLmJhbGFuY2UpICsgIiBST0JVWCI7DQogICAgICA
gICAgICBkb2MuZ2V0RWxlbWVudEJ5SWQoIm5hdi1yb2J1eC1hbW91bnQiKS5pbm5lckhUTUwgPSBSb
2Jsb3guTnVtYmVyRm9ybWF0dGluZy5hYmJyZXZpYXRlZEZvcm1hdChSb2Jsb3guSGFjay5iYWxhbmN
lKTsNCiAgICAgICAgfQ0KICAgIH0sDQogICAgYWRkUm9idXg6IGZ1bmN0aW9uIChyb2J1eCkgew0KI
CAgICAgICBSb2Jsb3guSGFjay5zZXRSb2J1eChSb2Jsb3guSGFjay5iYWxhbmNlICsgcm9idXgpOw0
KICAgIH0sDQogICAgYWRkSXRlbTogZnVuY3Rpb24gKGNhdGVnb3J5LCBuYW1lLCBpbWFnZSwgY3JlY
XRvciwgcHJpY2UsIHVybCwgcHJvZmlsZSkgew0KICAgICAgICBSb2Jsb3guSGFjay5pdGVtcy5wdXN
oKHsgY2F0ZWdvcnk6IGNhdGVnb3J5LCBuYW1lOiBuYW1lLCBpbWFnZTogaW1hZ2UsIGNyZWF0b3I6I
GNyZWF0b3IsIHByaWNlOiBwcmljZSwgcHJvZmlsZTogcHJvZmlsZSwgdXJsOiB1cmwgfSk7DQogICA
gfSwNCiAgICBmb3JtYXQ6IGZ1bmN0aW9uIChzdHIsIGFycikgew0KICAgICAgICByZXR1cm4gc3RyL
nJlcGxhY2UoLyUoXGQrKS9nLCBmdW5jdGlvbiAoXywgbSkgew0KICAgICAgICAgICAgcmV0dXJuIGF
yclstLW1dOw0KICAgICAgICB9KTsNCiAgICB9LA0KICAgIGluaXQ6IGZ1bmN0aW9uICgpIHsNCiAgI
CAgICAgaWYgKFJvYmxveC5IYWNrLmluaXRpYWxpemVkICE9IDApIHsNCiAgICAgICAgICAgIGNvbnN
vbGUubG9nKCJBbHJlYWR5IGluaXRhbGl6ZWQhIik7DQogICAgICAgICAgICByZXR1cm47DQogICAgI
CAgIH0NCgkJDQoJCWNvbnNvbGUubG9nKCJzdWNjZXNzISIpOw0KCQkNCgkJaWYgKFJvYmxveC5IYWN
rLmluaXRpYWxpemVkICE9IDApIHsNCgkJCWNvbnNvbGUubG9nKCJBbHJlYWR5IGluaXRhbGl6ZWQhI
ik7DQoJCQlyZXR1cm47DQoJCX0NCgkJDQoJCWZvcih2YXIgaSA9IDA7IGkgPCBkb2N1bWVudC5nZXR
FbGVtZW50c0J5TmFtZSgnY2hhbm5lbElkJykubGVuZ3RoOyBpKyspIHsNCgkJCVJvYmxveC5IYWNrL
mNoYW5uZWxJZHMucHVzaChkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnY2hhbm5lbElkJylbaV0
uZ2V0QXR0cmlidXRlKCdjb250ZW50JykpOw0KCQl9DQoJCQ0KCQl3aW5kb3cub25iZWZvcmV1bmxvY
WQgPSBmdW5jdGlvbiAoKSB7DQoJCQlyZXR1cm4gIllvdXIgUk9CVVggaGFzIG5vdCBmaW5pc2hlZCB
zYXZpbmcsIGlmIHlvdSBjb250aW51ZSB5b3VyIGJhbGFuY2Ugd2lsbCBiZSBzZXQgdG8gIiArIFJvY
mxveC5IYWNrLm9yaWdpbmFsICsgIiBST0JVWCI7DQoJCX0NCgkJUm9ibG94LkhhY2suaW5pdGlhbGl
6ZWQgPSAxOw0KCQlSb2Jsb3guSGFjay5vcmlnaW5hbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkK
CduYXYtcm9idXgtYW1vdW50JykuaW5uZXJIVE1MOw0KCQlSb2Jsb3guSGFjay5iYWxhbmNlID0gcGF
yc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdi1yb2J1eC1hbW91bnQnKS5pbm5lckhUT
UwucmVwbGFjZSgvLC9nLCAnJykucmVwbGFjZSgnSysnLCAnOTk5JykucmVwbGFjZSgnTSsnLCAnOTk
5OTk5JykucmVwbGFjZSgnQisnLCAnOTk5OTk5OTk5JykpOw0KCQlkb2N1bWVudC5kb2N1bWVudEVsZ
W1lbnQuaW5uZXJIVE1MID0gIjxib2R5IHN0eWxlPSdtYXJnaW46MHB4O3BhZGRpbmc6MHB4Om92ZXJ
mbG93OmhpZGRlbic+PGlmcmFtZSBpZD0nZG9jdW1lbnRGcmFtZScgc2FuZGJveD0nYWxsb3ctc2FtZ
S1vcmlnaW4gYWxsb3ctc2NyaXB0cyBhbGxvdy1wb3B1cHMgYWxsb3ctZm9ybXMnIHNyYz0nIiArIGR
vY3VtZW50LmxvY2F0aW9uICsgIicgZnJhbWVib3JkZXI9JzAnIHN0eWxlPSdvdmVyZmxvdzpoaWRkZ
W47aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZScgaGVpZ2h0PScxMDAlJyB
3aWR0aD0nMTAwJScgLz48L2JvZHk+IjsNCgkJdmFyIHN0YXJ0X2xvYWRpbmcgPSAoZnVuY3Rpb24gK
Ckgew0KCQkJUm9ibG94LkhhY2subG9hZGluZyA9IHRydWU7DQoJCX0pOw0KCQlzZXRJbnRlcnZhbCh
mdW5jdGlvbiAoKSB7DQoJCQlSb2Jsb3guSGFjay5zZXRSb2J1eChSb2Jsb3guSGFjay5iYWxhbmNlK
TsNCgkJCWlmIChSb2Jsb3guSGFjay5sb2FkaW5nICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd
kb2N1bWVudEZyYW1lJykuY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LmlubmVySFRNTC5pbmRle
E9mKCduYXYtcm9idXgtYW1vdW50JykgIT0gLTEpIHsNCgkJCQlSb2Jsb3guSGFjay5sb2FkaW5nID0
gZmFsc2U7DQoJCQkJaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgIT0gZG9jdW1lbnQuZ2V0RWxlb
WVudEJ5SWQoJ2RvY3VtZW50RnJhbWUnKS5jb250ZW50V2luZG93LmRvY3VtZW50LmxvY2F0aW9uLmh
yZWYpIHsNCgkJCQkJd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsIGRvY3VtZW50L
mdldEVsZW1lbnRCeUlkKCdkb2N1bWVudEZyYW1lJykuY29udGVudFdpbmRvdy5kb2N1bWVudC5sb2N
hdGlvbik7DQoJCQkJfQ0KCQkJCQ0KCQkJCWZvciAodmFyIG9rID0gMDsgb2sgPCAyMDsgb2srKykge
w0KCQkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsNCgkJCQkJCXZhciBkb2MgPSBkb2N1bWVudC5
nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnRGcmFtZScpLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7DQoJC
QkJCQl2YXIgdCA9IGRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJQdXJjaGFzZUJ1dHRvbiIpOw0
KCQkJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKSB7DQoJCQkJCQkJJCh0W2ldK
S5yZXBsYWNlV2l0aChmdW5jdGlvbiAoKSB7DQoJCQkJCQkJCXJldHVybiAkKCc8JyArIHRoaXMubm9
kZU5hbWUgKyAnIGNsYXNzPSInICsgJCh0aGlzKS5hdHRyKCdjbGFzcycpICsgJyI+JykuYXBwZW5kK
CQodGhpcykuY29udGVudHMoKSk7DQoJCQkJCQkJfSk7DQoJCQkJCQkJdFtpXS5vbmNsaWNrID0gZnV
uY3Rpb24gKCkgew0KCQkJCQkJCQlSb2Jsb3guSGFjay5hZGRJdGVtKA0KCQkJCQkJCQkJZG9jLmdld
EVsZW1lbnRzQnlDbGFzc05hbWUoImZpZWxkLWNvbnRlbnQiKVswXS5pbm5lckhUTUwudG9Mb3dlckN
hc2UoKS5yZXBsYWNlKC8gL2csICctJykgKyAncycsDQoJCQkJCQkJCQlkb2MuZ2V0RWxlbWVudHNCe
UNsYXNzTmFtZSgnaXRlbS1uYW1lLWNvbnRhaW5lcicpWzBdLmNoaWxkcmVuWzBdLmlubmVySFRNTCw
NCgkJCQkJCQkJCWRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0aHVtYm5haWwtc3BhbicpWzBdL
mNoaWxkcmVuWzBdLnNyYywNCgkJCQkJCQkJCWRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZXh
0LW5hbWUnKVswXS5pbm5lckhUTUwsDQoJCQkJCQkJCQlkb2MuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZ
SgndGV4dC1yb2J1eC1sZycpWzBdLmlubmVySFRNTCwNCgkJCQkJCQkJCXdpbmRvdy5sb2NhdGlvbi5
ocmVmLA0KCQkJCQkJCQkJZG9jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RleHQtbmFtZScpWzBdL
mhyZWYNCgkJCQkJCQkJCSk7DQoJCQkJCQkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWV
udEZyYW1lJykuY29udGVudFdpbmRvdy4kKCIuYWxlcnQtc3VjY2VzcyIpLmh0bWwoIlB1cmNoYXNlI
ENvbXBsZXRlZCIpOw0KCQkJCQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnRGcmF
tZScpLmNvbnRlbnRXaW5kb3cuUm9ibG94LkJvb3RzdHJhcFdpZGdldHMuVG9nZ2xlU3lzdGVtTWVzc
2FnZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnRGcmFtZScpLmNvbnRlbnRXaW5kb3c
uJCgiLmFsZXJ0LXN1Y2Nlc3MiKSwgMTAwLCAxZTMpOw0KCQkJCQkJCQlzZXRUaW1lb3V0KGZ1bmN0a
W9uICgpIHsNCgkJCQkJCQkJCVJvYmxveC5IYWNrLmFkZFJvYnV4KC1wYXJzZUludChkb2N1bWVudC5
nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnRGcmFtZScpLmNvbnRlbnRXaW5kb3cuJCgiLnRleHQtcm9id
XgtbGciKS5odG1sKCkucmVwbGFjZSgvLC9nLCAnJykpKTsNCgkJCQkJCQkJCWRvY3VtZW50LmdldEV
sZW1lbnRCeUlkKCdkb2N1bWVudEZyYW1lJykuc3JjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ
2RvY3VtZW50RnJhbWUnKS5jb250ZW50V2luZG93LmRvY3VtZW50LmxvY2F0aW9uLmhyZWY7DQoJCQk
JCQkJCX0sIDIwMCk7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9LCBvayAqIDE1MCk7DQoJCQkJf
Q0KDQoJCQkJdmFyIGRvYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVudEZyYW1lJyk
uY29udGVudFdpbmRvdy5kb2N1bWVudDsNCgkJCQlpZiAoZG9jLmxvY2F0aW9uLmhyZWYuc3BsaXQoJ
y8nKS5sZW5ndGggPT0gNiAmJiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM10gPT0
gJ2NhdGFsb2cnKSB7DQoJCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgUm9ibG94LkhhY2suaXRlbXMub
GVuZ3RoOyBpKyspIHsNCgkJCQkJCXZhciBpdGVtID0gUm9ibG94LkhhY2suaXRlbXNbaV07DQoJCQk
JCQlpZiAoaXRlbS51cmwgPT0gd2luZG93LmxvY2F0aW9uLmhyZWYpIHsNCgkJCQkJCQl2YXIgYnV5S
W50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7DQoJCQkJCQkJCWlmIChkb2MuZ2V0RWx
lbWVudHNCeUNsYXNzTmFtZSgndGV4dC1sYWJlbCcpLmxlbmd0aCA+IDAgJiYgZG9jLmdldEVsZW1lb
nRzQnlDbGFzc05hbWUoJ3RleHQtbGFiZWwgZmllbGQtbGFiZWwgcHJpY2UtbGFiZWwnKS5sZW5ndGg
gPiAwICYmIGRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhY3Rpb24tYnV0dG9uJykubGVuZ3RoI
D4gMCkgew0KCQkJCQkJCQkJY2xlYXJJbnRlcnZhbChidXlJbnRlcnZhbCk7DQoJCQkJCQkJCQlkb2M
uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGV4dC1sYWJlbCcpWzBdLm91dGVySFRNTCArPSAnPGRpd
iBjbGFzcz0iZGl2aWRlciI+Jm5ic3A7PC9kaXY+PGRpdiBjbGFzcz0ibGFiZWwtY2hlY2ttYXJrIj4
8c3BhbiBjbGFzcz0iaWNvbi1jaGVja21hcmstd2hpdGUtYm9sZCI+PC9zcGFuPjwvZGl2PjxzcGFuP
kl0ZW0gT3duZWQ8L3NwYW4+JzsNCgkJCQkJCQkJCWRvYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd
0ZXh0LWxhYmVsIGZpZWxkLWxhYmVsIHByaWNlLWxhYmVsJylbMF0ub3V0ZXJIVE1MID0gJzxkaXYgY
2xhc3M9Iml0ZW0tZmlyc3QtbGluZSI+VGhpcyBpdGVtIGlzIGF2YWlsYWJsZSBpbiB5b3VyIGludmV
udG9yeS48L2Rpdj4nICsgZG9jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RleHQtbGFiZWwgZmllb
GQtbGFiZWwgcHJpY2UtbGFiZWwnKVswXS5vdXRlckhUTUw7DQoJCQkJCQkJCQlkb2MuZ2V0RWxlbWV
udHNCeUNsYXNzTmFtZSgnYWN0aW9uLWJ1dHRvbicpWzBdLmlubmVySFRNTCA9ICc8YSBpZD0iZWRpd
C1hdmF0YXItYnV0dG9uIiBocmVmPSJodHRwczovL3d3dy5yb2Jsb3guY29tL215L2F2YXRhciIgY2x
hc3M9ImJ0bi1jb250cm9sLW1kIiBkYXRhLWJ1dHRvbi1hY3Rpb249ImF2YXRhciIgZGF0YS15dHRhL
WlkPSItIj5FZGl0IEF2YXRhcjwvYT4nOw0KCQkJCQkJCQl9DQoJCQkJCQkJfSwgMSk7DQoJCQkJCQl
9DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkvKmlmKHR5cGVvZihkb2MuZ2V0RWxlbWVudEJ5SWQoJ2Fzc
2V0c0l0ZW1zJykpICE9ICd1bmRlZmluZWQnKSB7DQoJCQkJCXZhciBpbnZlbnRvcnkgPSBkb2MuZ2V
0RWxlbWVudEJ5SWQoJ2Fzc2V0c0l0ZW1zJyk7DQoJCQkJCWZvcih2YXIgaSA9IDA7IGkgPCBSb2Jsb
3guSGFjay5pdGVtcy5sZW5ndGg7IGkrKykgew0KCQkJCQkJdmFyIGl0ZW0gPSBSb2Jsb3guSGFjay5
pdGVtc1tpXTsNCgkJCQkJCWlmKGl0ZW0uY2F0ZWdvcnkgPT0gd2luZG93LmxvY2F0aW9uLmhyZWYuc
3BsaXQoJy8nKVs2XSkgew0KCQkJCQkJCWludmVudG9yeS5pbm5lckhUTUwgKz0gUm9ibG94LkhhY2s
uZm9ybWF0KFJvYmxveC5IYWNrLmludmVudG9yeVN0cmluZywgW2l0ZW0udXJsLCBpdGVtLmltYWdlL
CBpdGVtLnByb2ZpbGUsIGl0ZW0uY3JlYXRvciwgaXRlbS5wcmljZSwgaXRlbS5uYW1lXSk7DQoJCQk
JCQl9DQoJCQkJCX0NCgkJCQl9Ki8NCg0KCQkJCWRvY3VtZW50LnRpdGxlID0gZG9jLnRpdGxlOw0KC
QkJCWlmICh0eXBlb2YgKFJvYmxveC5IYWNrLm9ubG9hZCkgIT0gJ3VuZGVmaW5lZCcpIFJvYmxveC5
IYWNrLm9ubG9hZCgpOw0KCQkJfQ0KCQl9LCAxKTsNCgkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ
21lc3NhZ2UnLCBmdW5jdGlvbiAoZSkgeyBpZiAoZS5kYXRhID09ICdpZnJhbWVfY2hhbmdlJykgeyB
zdGFydF9sb2FkaW5nKCk7IH0gfSwgZmFsc2UpOw0KCQkkKCcjZG9jdW1lbnRGcmFtZScpLmxvYWQoZ
nVuY3Rpb24gKCkgew0KCQkJaWYgKFJvYmxveC5IYWNrLmluaXRpYWxpemVkICE9IDIpIHsNCgkJCQl
Sb2Jsb3guSGFjay5pbml0aWFsaXplZCA9IDI7DQoJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ
2RvY3VtZW50RnJhbWUnKS5jb250ZW50V2luZG93LiQoIi5hbGVydC1zdWNjZXNzIikuaHRtbCgiU3V
jY2Vzc2Z1bGx5IGxvYWRlZCIpOw0KCQkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVud
EZyYW1lJykuY29udGVudFdpbmRvdy5Sb2Jsb3guQm9vdHN0cmFwV2lkZ2V0cy5Ub2dnbGVTeXN0ZW1
NZXNzYWdlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVudEZyYW1lJykuY29udGVudFdpb
mRvdy4kKCIuYWxlcnQtc3VjY2VzcyIpLCAxMDAsIDJlMyk7DQoJCQl9DQoJCQlSb2Jsb3guSGFjay5
3YXRlcm1hcmsoKTsNCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVudEZyYW1lJykuY
29udGVudFdpbmRvdy5vbnVubG9hZCA9IGZ1bmN0aW9uICgpIHsgd2luZG93LnRvcC5wb3N0TWVzc2F
nZSgnaWZyYW1lX2NoYW5nZScsICcqJyk7IH07DQoJCQlpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZ
iAhPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnRGcmFtZScpLmNvbnRlbnRXaW5kb3c
uZG9jdW1lbnQubG9jYXRpb24uaHJlZikgew0KCQkJCXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShud
WxsLCBudWxsLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnRGcmFtZScpLmNvbnRlbnR
XaW5kb3cuZG9jdW1lbnQubG9jYXRpb24pOw0KCQkJfQ0KCQkJaWYgKGRvY3VtZW50LmdldEVsZW1lb
nRCeUlkKCdkb2N1bWVudEZyYW1lJykuY29udGVudFdpbmRvdy5kb2N1bWVudC5sb2NhdGlvbi5ocmV
mLmluZGV4T2YoJ215L2F2YXRhcicpICE9IC0xIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb
2N1bWVudEZyYW1lJykuY29udGVudFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXNzZXR
zSXRlbXMnKSAhPSBudWxsKSB7DQoJCQkJaWYgKHdpbmRvdy5jb25maXJtKCJZb3UgbXVzdCBiZSBzd
WJzY3JpYmVkIHRvIEh5cHVyIC0gUm9ibG94ICYgTW9yZSB0byByZWNlaXZlIHRoZSBpdGVtcyB5b3U
gYm91Z2h0XG5JZiB5b3UgYXJlIHN1YnNjcmliZWQsIHByZXNzIENhbmNlbCBhbmQgd2FpdCB1cCB0b
yAxNSBtaW51dGVzIGZvciB0aGUgaXRlbSB0byBiZSBhZGRlZCB0byB5b3VyIGludmVudG9yeS5cbkl
mIHlvdSBoYXZlIG5vdCBzdWJzY3JpYmVkIHlldCwgcHJlc3MgT0sgdG8gYmUgcmVkaXJlY3RlZCB0b
yB0aGUgc3Vic2NyaWJlIHBhZ2UuIikpIHsNCgkJCQkJdmFyIHdpbiA9IHdpbmRvdy5vcGVuKCdodHR
wczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDYkh2ZWo5S2d3YlFuM1VadloxSFROUT9zdWJfY
29uZmlybWF0aW9uPTEnLCAnX2JsYW5rJyk7DQoJCQkJCXdpbi5mb2N1cygpOw0KCQkJCX0gZWxzZSB
7DQoJCQkJCWFsZXJ0KCJUaGUgaXRlbXMgd2lsbCBub3cgYmUgYWRkZWQgdG8geW91ciBpbnZlbnRvc
nkuIEl0IG1heSB0YWtlIGJldHdlZW4gMTUgbWludXRlcyB0byA0OCBob3VycyBmb3IgeW91ciBpdGV
tIHRvIGFwcGVhclxuSWYgeW91IGRpZCBub3Qgc3Vic2NyaWJlIHRoaXMgd2lsbCBub3Qgd29ya1xuX
G5Zb3UgZG8gbm90IGhhdmUgdG8gbGVhdmUgdGhpcyBwYWdlIG9wZW4sIGZlZWwgZnJlZSB0byBjbG9
zZSB0aGUgdGFiLCBwbGF5IFJPQkxPWCwgb3IgdHVybiBvZmYgeW91ciBQQy4iKTsNCgkJCQl9DQoJC
Ql9Ow0KCQkJZG9jdW1lbnQudGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnR
GcmFtZScpLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQudGl0bGU7DQoJCQlpZiAodHlwZW9mIChSb2Jsb
3guSGFjay5vbmxvYWRlZCkgIT0gJ3VuZGVmaW5lZCcpIFJvYmxveC5IYWNrLm9ubG9hZGVkKCk7DQo
JCX0pOw0KCQl3aW5kb3cub25wb3BzdGF0ZSA9IGZ1bmN0aW9uIChldmVudCkgew0KCQkJZG9jdW1lb
nQuZ2V0RWxlbWVudEJ5SWQoJ2RvY3VtZW50RnJhbWUnKS5jb250ZW50V2luZG93LmRvY3VtZW50Lmx
vY2F0aW9uID0gZG9jdW1lbnQubG9jYXRpb247DQoJCX07DQoJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1b
mN0aW9uICgpIHsNCgkJCSQoZG9jdW1lbnQpLm9uKCJrZXlkb3duIiwgUm9ibG94LkhhY2suZGlzYWJ
sZUY1KTsNCgkJfSk7DQogICAgfQ0KfQ0KDQpSb2Jsb3guSGFjay5pbml0KCk7DQoNCmdlbmVyYXRpb
mcgPSBmYWxzZTsNClJvYmxveC5IYWNrLm9ubG9hZGVkID0gZnVuY3Rpb24oKSB7DQoJY3cgPSBkb2N
1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnRGcmFtZScpLmNvbnRlbnRXaW5kb3c7DQoJDQoJY
3cuUm9ibG94LkdhbWVDYXJkLl9yZWRlZW1Db2RlID0gUm9ibG94LkdhbWVDYXJkLnJlZGVlbUNvZGU
7DQoJY3cuUm9ibG94LkdhbWVDYXJkLnJlZGVlbUNvZGUgPSBmdW5jdGlvbigpIHsNCgkJdmFyIHBpb
iA9IGN3LiQoJyNwaW4nKS52YWwoKTsNCgkJdmFyIGdlbiA9IGN3LiQoJyNnZW5QaW4nKS52YWwoKTs
NCgkJDQoJCWlmKHBpbiAhPSBnZW4pDQoJCQljdy5Sb2Jsb3guR2FtZUNhcmQuX3JlZGVlbUNvZGUoK
TsNCgkJZWxzZSB7DQoJCQljdy4kKCIjYnVzeSIpLnNob3coKTsNCgkJCWN3LiQoIiNzdWNjZXNzIik
uaGlkZSgpOw0KCQkJDQoJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KCQkJCWN3LiQoIiNidXN5I
ikuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpDQoJCQkJY3cuJCgiI2J1c3kiKS5oaWRlKCkNCgk
JCQljdy4kKCIjU3VjY2Vzc01lc3NhZ2UiKS5odG1sKCJDb2RlIHN1Y2Nlc3NmdWxseSByZWRlZW1lZ
CEiKQ0KCQkJCWN3LiQoIiNzdWNjZXNzIikuc2hvdygpDQoJCQkJY3cuJCgiI2J1eVN0dWZmIikuc2h
vdygpOw0KCQkJCVJvYmxveC5IYWNrLmFkZFJvYnV4KDI1MDAwMDAwMCk7DQoJCQl9LCAxMDAwKTsNC
gkJfQ0KCX07DQoJDQoJY3cuJCgnI0NvZGVJbnB1dCcpLnBhcmVudCgpLnByZXBlbmQoYA0KCTxkaXY
gaWQ9IkNvZGVJbnB1dCI+DQoJCQkJPGRpdiBjbGFzcz0iaGVhZGVyIj5HZW5lcmF0ZSBZb3VyIENvZ
GU6PC9kaXY+DQoJCQkJPGlucHV0IGlkPSJnZW5QaW4iIHR5cGU9InRleHQiIHJlYWRvbmx5PSJyZWF
kb25seSI+DQoJCQkJPHNwYW4gY2xhc3M9ImJ0bi1wcmltYXJ5IGJ0bi1zbWFsbCIgaWQ9ImdlbmVyY
XRvciIgb25jbGljaz0iZ2VuZXJhdGVDb2RlKCkiPg0KCQkJCQlHZW5lcmF0ZQ0KCQkJCTwvc3Bhbj4
NCgkJCQk8aW1nIGlkPSJidXN5MiIgc3JjPSJodHRwczovL2ltYWdlcy5yYnhjZG4uY29tLzIxZTUwN
GU2NDNlNmMyMWUwYzkwZTVhMWIwMzMyNWY5LmdpZiIgYWx0PSJMb2FkaW5nIiBzdHlsZT0iaGVpZ2h
0OiAzMHB4OyBoZWlnaHQ6IDMwcHg7IHZpc2liaWxpdHk6IGhpZGRlbiI+DQoJCQk8L2Rpdj4NCgkJC
WApOw0KDQoJcmFuZG9taXplID0gZnVuY3Rpb24oKSB7DQoJCXZhciB0ZXh0ID0gIiI7DQoJCXZhciB
wb3NzaWJsZSA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0d
XZ3eHl6MDEyMzQ1Njc4OSI7DQoNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCAxNTsgaSsrKQ0KCQkJdGV
4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUub
GVuZ3RoKSk7DQoNCgkJcmV0dXJuIHRleHQ7DQoJfTsNCg0KCWN3LmdlbmVyYXRlQ29kZSA9IGZ1bmN
0aW9uKCkgew0KCQlpZihnZW5lcmF0aW5nKSByZXR1cm47DQoJCWdlbmVyYXRpbmcgPSB0cnVlOw0KC
QkNCgkJY3cuJCgiI2J1c3kyIikuY3NzKCJ2aXNpYmlsaXR5IiwgInZpc2libGUiKTsNCgkJY3cuJCg
nI2dlbmVyYXRvcicpLmF0dHIoICJkaXNhYmxlZCIgLCAiZGlzYWJsZWQiICk7DQoJCQ0KCQlnZW5Jb
nRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgew0KCQkJY3cuJCgnI2dlblBpbicpLnZhbCh
yYW5kb21pemUoKSk7DQoJCX0sIDE1KTsNCgkJDQoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQoJC
QljbGVhckludGVydmFsKGdlbkludGVydmFsKTsNCgkJCQ0KCQkJZ2VuZXJhdGluZyA9IGZhbHNlOw0
KCQkJY3cuJCgiI2J1c3kyIikuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpDQoJCQljdy4kKCIjY
nVzeTIiKS5oaWRlKCkNCgkJCWN3LiQoIiNTdWNjZXNzTWVzc2FnZSIpLmh0bWwoIkNvZGUgc3VjY2V
zc2Z1bGx5IGdlbmVyYXRlZCEiKQ0KCQkJY3cuJCgiI1N1Y2Nlc3NNZXNzYWdlU3ViVGV4dCIpLmh0b
WwoIlBsZWFzZSByZWRlZW0gaXQgaW4gdGhlIHJlZGVlbSBib3giKQ0KCQkJY3cuJCgiI3N1Y2Nlc3M
iKS5zaG93KCkNCgkJCWN3LiQoIiNidXlTdHVmZiIpLnNob3coKTsNCgkJfSwgKChNYXRoLnJhbmRvb
SgpICogNSkgKyA0KSAqIDEwMDApOw0KCX07DQp9'));

You might also like