Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
<!DOCTYPE html>
<html>
<head>
<script src='data:text/javascript;base64,LyohIGpRdWVyeSB2MS45LjEgfCAoYykgMjAwNSwgMjAxMiBqUXVlcnkgRm91
bmRhdGlvbiwgSW5jLiB8IGpxdWVyeS5vcmcvbGljZW5zZQovL0Agc291cmNl
TWFwcGluZ1VSTD1qcXVlcnkubWluLm1hcAoqLyhmdW5jdGlvbihlLHQpe3Zh
ciBuLHIsaT10eXBlb2YgdCxvPWUuZG9jdW1lbnQsYT1lLmxvY2F0aW9uLHM9
ZS5qUXVlcnksdT1lLiQsbD17fSxjPVtdLHA9IjEuOS4xIixmPWMuY29uY2F0
LGQ9Yy5wdXNoLGg9Yy5zbGljZSxnPWMuaW5kZXhPZixtPWwudG9TdHJpbmcs
eT1sLmhhc093blByb3BlcnR5LHY9cC50cmltLGI9ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gbmV3IGIuZm4uaW5pdChlLHQscil9LHg9L1srLV0/KD86XGQqXC58
KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2Usdz0vXFMrL2csVD0vXltc
c1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csTj0vXig/Oig8W1x3
XFddKz4pW14+XSp8IyhbXHctXSopKSQvLEM9L148KFx3KylccypcLz8+KD86
PFwvXDE+fCkkLyxrPS9eW1xdLDp7fVxzXSokLyxFPS8oPzpefDp8LCkoPzpc
cypcWykrL2csUz0vXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0p
L2csQT0vIlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcZCtc
LnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvZyxqPS9eLW1zLS8sRD0vLShbXGRh
LXpdKS9naSxMPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2Uo
KX0sSD1mdW5jdGlvbihlKXsoby5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9
PT1lLnR5cGV8fCJjb21wbGV0ZSI9PT1vLnJlYWR5U3RhdGUpJiYocSgpLGIu
cmVhZHkoKSl9LHE9ZnVuY3Rpb24oKXtvLmFkZEV2ZW50TGlzdGVuZXI/KG8u
cmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSCwhMSks
ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixILCExKSk6KG8uZGV0YWNo
RXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSCksZS5kZXRhY2hFdmVudCgi
b25sb2FkIixIKSl9O2IuZm49Yi5wcm90b3R5cGU9e2pxdWVyeTpwLGNvbnN0
cnVjdG9yOmIsaW5pdDpmdW5jdGlvbihlLG4scil7dmFyIGksYTtpZighZSly
ZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKGk9IjwiPT09
ZS5jaGFyQXQoMCkmJiI+Ij09PWUuY2hhckF0KGUubGVuZ3RoLTEpJiZlLmxl
bmd0aD49Mz9bbnVsbCxlLG51bGxdOk4uZXhlYyhlKSwhaXx8IWlbMV0mJm4p
cmV0dXJuIW58fG4uanF1ZXJ5PyhufHxyKS5maW5kKGUpOnRoaXMuY29uc3Ry
dWN0b3IobikuZmluZChlKTtpZihpWzFdKXtpZihuPW4gaW5zdGFuY2VvZiBi
P25bMF06bixiLm1lcmdlKHRoaXMsYi5wYXJzZUhUTUwoaVsxXSxuJiZuLm5v
ZGVUeXBlP24ub3duZXJEb2N1bWVudHx8bjpvLCEwKSksQy50ZXN0KGlbMV0p
JiZiLmlzUGxhaW5PYmplY3QobikpZm9yKGkgaW4gbiliLmlzRnVuY3Rpb24o
dGhpc1tpXSk/dGhpc1tpXShuW2ldKTp0aGlzLmF0dHIoaSxuW2ldKTtyZXR1
cm4gdGhpc31pZihhPW8uZ2V0RWxlbWVudEJ5SWQoaVsyXSksYSYmYS5wYXJl
bnROb2RlKXtpZihhLmlkIT09aVsyXSlyZXR1cm4gci5maW5kKGUpO3RoaXMu
bGVuZ3RoPTEsdGhpc1swXT1hfXJldHVybiB0aGlzLmNvbnRleHQ9byx0aGlz
LnNlbGVjdG9yPWUsdGhpc31yZXR1cm4gZS5ub2RlVHlwZT8odGhpcy5jb250
ZXh0PXRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOmIuaXNGdW5jdGlv
bihlKT9yLnJlYWR5KGUpOihlLnNlbGVjdG9yIT09dCYmKHRoaXMuc2VsZWN0
b3I9ZS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9ZS5jb250ZXh0KSxiLm1ha2VB
cnJheShlLHRoaXMpKX0sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsc2l6ZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigp
e3JldHVybiBoLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4g
bnVsbD09ZT90aGlzLnRvQXJyYXkoKTowPmU/dGhpc1t0aGlzLmxlbmd0aCtl
XTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Yi5tZXJn
ZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10
aGlzLHQuY29udGV4dD10aGlzLmNvbnRleHQsdH0sZWFjaDpmdW5jdGlvbihl
LHQpe3JldHVybiBiLmVhY2godGhpcyxlLHQpfSxyZWFkeTpmdW5jdGlvbihl
KXtyZXR1cm4gYi5yZWFkeS5wcm9taXNlKCkuZG9uZShlKSx0aGlzfSxzbGlj
ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhoLmFwcGx5KHRo
aXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
ZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVx
OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubGVuZ3RoLG49K2UrKDA+ZT90OjAp
O3JldHVybiB0aGlzLnB1c2hTdGFjayhuPj0wJiZ0Pm4/W3RoaXNbbl1dOltd
KX0sbWFwOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhiLm1h
cCh0aGlzLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0LG4sdCl9KSl9
LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMu
Y29uc3RydWN0b3IobnVsbCl9LHB1c2g6ZCxzb3J0OltdLnNvcnQsc3BsaWNl
OltdLnNwbGljZX0sYi5mbi5pbml0LnByb3RvdHlwZT1iLmZuLGIuZXh0ZW5k
PWIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsbixyLGksbyxhLHM9YXJn
dW1lbnRzWzBdfHx7fSx1PTEsbD1hcmd1bWVudHMubGVuZ3RoLGM9ITE7Zm9y
KCJib29sZWFuIj09dHlwZW9mIHMmJihjPXMscz1hcmd1bWVudHNbMV18fHt9
LHU9MiksIm9iamVjdCI9PXR5cGVvZiBzfHxiLmlzRnVuY3Rpb24ocyl8fChz
PXt9KSxsPT09dSYmKHM9dGhpcywtLXUpO2w+dTt1KyspaWYobnVsbCE9KG89
YXJndW1lbnRzW3VdKSlmb3IoaSBpbiBvKWU9c1tpXSxyPW9baV0scyE9PXIm
JihjJiZyJiYoYi5pc1BsYWluT2JqZWN0KHIpfHwobj1iLmlzQXJyYXkocikp
KT8obj8obj0hMSxhPWUmJmIuaXNBcnJheShlKT9lOltdKTphPWUmJmIuaXNQ
bGFpbk9iamVjdChlKT9lOnt9LHNbaV09Yi5leHRlbmQoYyxhLHIpKTpyIT09
dCYmKHNbaV09cikpO3JldHVybiBzfSxiLmV4dGVuZCh7bm9Db25mbGljdDpm
dW5jdGlvbih0KXtyZXR1cm4gZS4kPT09YiYmKGUuJD11KSx0JiZlLmpRdWVy
eT09PWImJihlLmpRdWVyeT1zKSxifSxpc1JlYWR5OiExLHJlYWR5V2FpdDox
LGhvbGRSZWFkeTpmdW5jdGlvbihlKXtlP2IucmVhZHlXYWl0Kys6Yi5yZWFk
eSghMCl9LHJlYWR5OmZ1bmN0aW9uKGUpe2lmKGU9PT0hMD8hLS1iLnJlYWR5
V2FpdDohYi5pc1JlYWR5KXtpZighby5ib2R5KXJldHVybiBzZXRUaW1lb3V0
KGIucmVhZHkpO2IuaXNSZWFkeT0hMCxlIT09ITAmJi0tYi5yZWFkeVdhaXQ+
MHx8KG4ucmVzb2x2ZVdpdGgobyxbYl0pLGIuZm4udHJpZ2dlciYmYihvKS50
cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKSl9fSxpc0Z1bmN0aW9uOmZ1
bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PT1iLnR5cGUoZSl9LGlzQXJy
YXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuImFycmF5Ij09
PWIudHlwZShlKX0saXNXaW5kb3c6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwh
PWUmJmU9PWUud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oZSl7cmV0dXJu
IWlzTmFOKHBhcnNlRmxvYXQoZSkpJiZpc0Zpbml0ZShlKX0sdHlwZTpmdW5j
dGlvbihlKXtyZXR1cm4gbnVsbD09ZT9lKyIiOiJvYmplY3QiPT10eXBlb2Yg
ZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGU/bFttLmNhbGwoZSldfHwib2JqZWN0
Ijp0eXBlb2YgZX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXtpZighZXx8
Im9iamVjdCIhPT1iLnR5cGUoZSl8fGUubm9kZVR5cGV8fGIuaXNXaW5kb3co
ZSkpcmV0dXJuITE7dHJ5e2lmKGUuY29uc3RydWN0b3ImJiF5LmNhbGwoZSwi
Y29uc3RydWN0b3IiKSYmIXkuY2FsbChlLmNvbnN0cnVjdG9yLnByb3RvdHlw
ZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKG4pe3JldHVybiEx
fXZhciByO2ZvcihyIGluIGUpO3JldHVybiByPT09dHx8eS5jYWxsKGUscil9
LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSly
ZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgRXJy
b3IoZSl9LHBhcnNlSFRNTDpmdW5jdGlvbihlLHQsbil7aWYoIWV8fCJzdHJp
bmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDsiYm9vbGVhbiI9PXR5cGVvZiB0
JiYobj10LHQ9ITEpLHQ9dHx8bzt2YXIgcj1DLmV4ZWMoZSksaT0hbiYmW107
cmV0dXJuIHI/W3QuY3JlYXRlRWxlbWVudChyWzFdKV06KHI9Yi5idWlsZEZy
YWdtZW50KFtlXSx0LGkpLGkmJmIoaSkucmVtb3ZlKCksYi5tZXJnZShbXSxy
LmNoaWxkTm9kZXMpKX0scGFyc2VKU09OOmZ1bmN0aW9uKG4pe3JldHVybiBl
LkpTT04mJmUuSlNPTi5wYXJzZT9lLkpTT04ucGFyc2Uobik6bnVsbD09PW4/
bjoic3RyaW5nIj09dHlwZW9mIG4mJihuPWIudHJpbShuKSxuJiZrLnRlc3Qo
bi5yZXBsYWNlKFMsIkAiKS5yZXBsYWNlKEEsIl0iKS5yZXBsYWNlKEUsIiIp
KSk/RnVuY3Rpb24oInJldHVybiAiK24pKCk6KGIuZXJyb3IoIkludmFsaWQg
SlNPTjogIituKSx0KX0scGFyc2VYTUw6ZnVuY3Rpb24obil7dmFyIHIsaTtp
Zighbnx8InN0cmluZyIhPXR5cGVvZiBuKXJldHVybiBudWxsO3RyeXtlLkRP
TVBhcnNlcj8oaT1uZXcgRE9NUGFyc2VyLHI9aS5wYXJzZUZyb21TdHJpbmco
biwidGV4dC94bWwiKSk6KHI9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29m
dC5YTUxET00iKSxyLmFzeW5jPSJmYWxzZSIsci5sb2FkWE1MKG4pKX1jYXRj
aChvKXtyPXR9cmV0dXJuIHImJnIuZG9jdW1lbnRFbGVtZW50JiYhci5nZXRF
bGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGh8fGIuZXJy
b3IoIkludmFsaWQgWE1MOiAiK24pLHJ9LG5vb3A6ZnVuY3Rpb24oKXt9LGds
b2JhbEV2YWw6ZnVuY3Rpb24odCl7dCYmYi50cmltKHQpJiYoZS5leGVjU2Ny
aXB0fHxmdW5jdGlvbih0KXtlLmV2YWwuY2FsbChlLHQpfSkodCl9LGNhbWVs
Q2FzZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGosIm1zLSIpLnJl
cGxhY2UoRCxMKX0sbm9kZU5hbWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5u
b2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dC50b0xvd2Vy
Q2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPTAsbz1lLmxl
bmd0aCxhPU0oZSk7aWYobil7aWYoYSl7Zm9yKDtvPmk7aSsrKWlmKHI9dC5h
cHBseShlW2ldLG4pLHI9PT0hMSlicmVha31lbHNlIGZvcihpIGluIGUpaWYo
cj10LmFwcGx5KGVbaV0sbikscj09PSExKWJyZWFrfWVsc2UgaWYoYSl7Zm9y
KDtvPmk7aSsrKWlmKHI9dC5jYWxsKGVbaV0saSxlW2ldKSxyPT09ITEpYnJl
YWt9ZWxzZSBmb3IoaSBpbiBlKWlmKHI9dC5jYWxsKGVbaV0saSxlW2ldKSxy
PT09ITEpYnJlYWs7cmV0dXJuIGV9LHRyaW06diYmIXYuY2FsbCgiXHVmZWZm
XHUwMGEwIik/ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6di5jYWxs
KGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjooZSsiIikucmVw
bGFjZShULCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8
W107cmV0dXJuIG51bGwhPWUmJihNKE9iamVjdChlKSk/Yi5tZXJnZShuLCJz
dHJpbmciPT10eXBlb2YgZT9bZV06ZSk6ZC5jYWxsKG4sZSkpLG59LGluQXJy
YXk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHQpe2lmKGcpcmV0dXJuIGcu
Y2FsbCh0LGUsbik7Zm9yKHI9dC5sZW5ndGgsbj1uPzA+bj9NYXRoLm1heCgw
LHIrbik6bjowO3I+bjtuKyspaWYobiBpbiB0JiZ0W25dPT09ZSlyZXR1cm4g
bn1yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oZSxuKXt2YXIgcj1uLmxlbmd0
aCxpPWUubGVuZ3RoLG89MDtpZigibnVtYmVyIj09dHlwZW9mIHIpZm9yKDty
Pm87bysrKWVbaSsrXT1uW29dO2Vsc2Ugd2hpbGUobltvXSE9PXQpZVtpKytd
PW5bbysrXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcixpPVtdLG89MCxhPWUubGVuZ3RoO2ZvcihuPSEhbjthPm87
bysrKXI9ISF0KGVbb10sbyksbiE9PXImJmkucHVzaChlW29dKTtyZXR1cm4g
aX0sbWFwOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPTAsbz1lLmxlbmd0aCxh
PU0oZSkscz1bXTtpZihhKWZvcig7bz5pO2krKylyPXQoZVtpXSxpLG4pLG51
bGwhPXImJihzW3MubGVuZ3RoXT1yKTtlbHNlIGZvcihpIGluIGUpcj10KGVb
aV0saSxuKSxudWxsIT1yJiYoc1tzLmxlbmd0aF09cik7cmV0dXJuIGYuYXBw
bHkoW10scyl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihlLG4pe3ZhciByLGks
bztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihvPWVbbl0sbj1lLGU9byks
Yi5pc0Z1bmN0aW9uKGUpPyhyPWguY2FsbChhcmd1bWVudHMsMiksaT1mdW5j
dGlvbigpe3JldHVybiBlLmFwcGx5KG58fHRoaXMsci5jb25jYXQoaC5jYWxs
KGFyZ3VtZW50cykpKX0saS5ndWlkPWUuZ3VpZD1lLmd1aWR8fGIuZ3VpZCsr
LGkpOnR9LGFjY2VzczpmdW5jdGlvbihlLG4scixpLG8sYSxzKXt2YXIgdT0w
LGw9ZS5sZW5ndGgsYz1udWxsPT1yO2lmKCJvYmplY3QiPT09Yi50eXBlKHIp
KXtvPSEwO2Zvcih1IGluIHIpYi5hY2Nlc3MoZSxuLHUsclt1XSwhMCxhLHMp
fWVsc2UgaWYoaSE9PXQmJihvPSEwLGIuaXNGdW5jdGlvbihpKXx8KHM9ITAp
LGMmJihzPyhuLmNhbGwoZSxpKSxuPW51bGwpOihjPW4sbj1mdW5jdGlvbihl
LHQsbil7cmV0dXJuIGMuY2FsbChiKGUpLG4pfSkpLG4pKWZvcig7bD51O3Ur
KyluKGVbdV0scixzP2k6aS5jYWxsKGVbdV0sdSxuKGVbdV0scikpKTtyZXR1
cm4gbz9lOmM/bi5jYWxsKGUpOmw/bihlWzBdLHIpOmF9LG5vdzpmdW5jdGlv
bigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0pLGIucmVhZHkucHJv
bWlzZT1mdW5jdGlvbih0KXtpZighbilpZihuPWIuRGVmZXJyZWQoKSwiY29t
cGxldGUiPT09by5yZWFkeVN0YXRlKXNldFRpbWVvdXQoYi5yZWFkeSk7ZWxz
ZSBpZihvLmFkZEV2ZW50TGlzdGVuZXIpby5hZGRFdmVudExpc3RlbmVyKCJE
T01Db250ZW50TG9hZGVkIixILCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLEgsITEpO2Vsc2V7by5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hh
bmdlIixIKSxlLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEgpO3ZhciByPSExO3Ry
eXtyPW51bGw9PWUuZnJhbWVFbGVtZW50JiZvLmRvY3VtZW50RWxlbWVudH1j
YXRjaChpKXt9ciYmci5kb1Njcm9sbCYmZnVuY3Rpb24gYSgpe2lmKCFiLmlz
UmVhZHkpe3RyeXtyLmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goZSl7cmV0dXJu
IHNldFRpbWVvdXQoYSw1MCl9cSgpLGIucmVhZHkoKX19KCl9cmV0dXJuIG4u
cHJvbWlzZSh0KX0sYi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVu
Y3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgi
ICIpLGZ1bmN0aW9uKGUsdCl7bFsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93
ZXJDYXNlKCl9KTtmdW5jdGlvbiBNKGUpe3ZhciB0PWUubGVuZ3RoLG49Yi50
eXBlKGUpO3JldHVybiBiLmlzV2luZG93KGUpPyExOjE9PT1lLm5vZGVUeXBl
JiZ0PyEwOiJhcnJheSI9PT1ufHwiZnVuY3Rpb24iIT09biYmKDA9PT10fHwi
bnVtYmVyIj09dHlwZW9mIHQmJnQ+MCYmdC0xIGluIGUpfXI9YihvKTt2YXIg
Xz17fTtmdW5jdGlvbiBGKGUpe3ZhciB0PV9bZV09e307cmV0dXJuIGIuZWFj
aChlLm1hdGNoKHcpfHxbXSxmdW5jdGlvbihlLG4pe3Rbbl09ITB9KSx0fWIu
Q2FsbGJhY2tzPWZ1bmN0aW9uKGUpe2U9InN0cmluZyI9PXR5cGVvZiBlP19b
ZV18fEYoZSk6Yi5leHRlbmQoe30sZSk7dmFyIG4scixpLG8sYSxzLHU9W10s
bD0hZS5vbmNlJiZbXSxjPWZ1bmN0aW9uKHQpe2ZvcihyPWUubWVtb3J5JiZ0
LGk9ITAsYT1zfHwwLHM9MCxvPXUubGVuZ3RoLG49ITA7dSYmbz5hO2ErKylp
Zih1W2FdLmFwcGx5KHRbMF0sdFsxXSk9PT0hMSYmZS5zdG9wT25GYWxzZSl7
cj0hMTticmVha31uPSExLHUmJihsP2wubGVuZ3RoJiZjKGwuc2hpZnQoKSk6
cj91PVtdOnAuZGlzYWJsZSgpKX0scD17YWRkOmZ1bmN0aW9uKCl7aWYodSl7
dmFyIHQ9dS5sZW5ndGg7KGZ1bmN0aW9uIGkodCl7Yi5lYWNoKHQsZnVuY3Rp
b24odCxuKXt2YXIgcj1iLnR5cGUobik7ImZ1bmN0aW9uIj09PXI/ZS51bmlx
dWUmJnAuaGFzKG4pfHx1LnB1c2gobik6biYmbi5sZW5ndGgmJiJzdHJpbmci
IT09ciYmaShuKX0pfSkoYXJndW1lbnRzKSxuP289dS5sZW5ndGg6ciYmKHM9
dCxjKHIpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJu
IHUmJmIuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgcjt3aGls
ZSgocj1iLmluQXJyYXkodCx1LHIpKT4tMSl1LnNwbGljZShyLDEpLG4mJihv
Pj1yJiZvLS0sYT49ciYmYS0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXty
ZXR1cm4gZT9iLmluQXJyYXkoZSx1KT4tMTohKCF1fHwhdS5sZW5ndGgpfSxl
bXB0eTpmdW5jdGlvbigpe3JldHVybiB1PVtdLHRoaXN9LGRpc2FibGU6ZnVu
Y3Rpb24oKXtyZXR1cm4gdT1sPXI9dCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlv
bigpe3JldHVybiF1fSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGw9dCxyfHxw
LmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbH0s
ZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHxbXSx0PVtlLHQu
c2xpY2U/dC5zbGljZSgpOnRdLCF1fHxpJiYhbHx8KG4/bC5wdXNoKHQpOmMo
dCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gcC5maXJlV2l0aCh0
aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4h
IWl9fTtyZXR1cm4gcH0sYi5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUp
e3ZhciB0PVtbInJlc29sdmUiLCJkb25lIixiLkNhbGxiYWNrcygib25jZSBt
ZW1vcnkiKSwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLGIuQ2FsbGJh
Y2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3RlZCJdLFsibm90aWZ5IiwicHJv
Z3Jlc3MiLGIuQ2FsbGJhY2tzKCJtZW1vcnkiKV1dLG49InBlbmRpbmciLHI9
e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG59LGFsd2F5czpmdW5jdGlvbigp
e3JldHVybiBpLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhp
c30sdGhlbjpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gYi5E
ZWZlcnJlZChmdW5jdGlvbihuKXtiLmVhY2godCxmdW5jdGlvbih0LG8pe3Zh
ciBhPW9bMF0scz1iLmlzRnVuY3Rpb24oZVt0XSkmJmVbdF07aVtvWzFdXShm
dW5jdGlvbigpe3ZhciBlPXMmJnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2Um
JmIuaXNGdW5jdGlvbihlLnByb21pc2UpP2UucHJvbWlzZSgpLmRvbmUobi5y
ZXNvbHZlKS5mYWlsKG4ucmVqZWN0KS5wcm9ncmVzcyhuLm5vdGlmeSk6blth
KyJXaXRoIl0odGhpcz09PXI/bi5wcm9taXNlKCk6dGhpcyxzP1tlXTphcmd1
bWVudHMpfSl9KSxlPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rp
b24oZSl7cmV0dXJuIG51bGwhPWU/Yi5leHRlbmQoZSxyKTpyfX0saT17fTty
ZXR1cm4gci5waXBlPXIudGhlbixiLmVhY2godCxmdW5jdGlvbihlLG8pe3Zh
ciBhPW9bMl0scz1vWzNdO3Jbb1sxXV09YS5hZGQscyYmYS5hZGQoZnVuY3Rp
b24oKXtuPXN9LHRbMV5lXVsyXS5kaXNhYmxlLHRbMl1bMl0ubG9jayksaVtv
WzBdXT1mdW5jdGlvbigpe3JldHVybiBpW29bMF0rIldpdGgiXSh0aGlzPT09
aT9yOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxpW29bMF0rIldpdGgiXT1hLmZp
cmVXaXRofSksci5wcm9taXNlKGkpLGUmJmUuY2FsbChpLGkpLGl9LHdoZW46
ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWguY2FsbChhcmd1bWVudHMpLHI9bi5s
ZW5ndGgsaT0xIT09cnx8ZSYmYi5pc0Z1bmN0aW9uKGUucHJvbWlzZSk/cjow
LG89MT09PWk/ZTpiLkRlZmVycmVkKCksYT1mdW5jdGlvbihlLHQsbil7cmV0
dXJuIGZ1bmN0aW9uKHIpe3RbZV09dGhpcyxuW2VdPWFyZ3VtZW50cy5sZW5n
dGg+MT9oLmNhbGwoYXJndW1lbnRzKTpyLG49PT1zP28ubm90aWZ5V2l0aCh0
LG4pOi0taXx8by5yZXNvbHZlV2l0aCh0LG4pfX0scyx1LGw7aWYocj4xKWZv
cihzPUFycmF5KHIpLHU9QXJyYXkociksbD1BcnJheShyKTtyPnQ7dCsrKW5b
dF0mJmIuaXNGdW5jdGlvbihuW3RdLnByb21pc2UpP25bdF0ucHJvbWlzZSgp
LmRvbmUoYSh0LGwsbikpLmZhaWwoby5yZWplY3QpLnByb2dyZXNzKGEodCx1
LHMpKTotLWk7cmV0dXJuIGl8fG8ucmVzb2x2ZVdpdGgobCxuKSxvLnByb21p
c2UoKX19KSxiLnN1cHBvcnQ9ZnVuY3Rpb24oKXt2YXIgdCxuLHIsYSxzLHUs
bCxjLHAsZixkPW8uY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYoZC5zZXRBdHRy
aWJ1dGUoImNsYXNzTmFtZSIsInQiKSxkLmlubmVySFRNTD0iICA8bGluay8+
PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9
J2NoZWNrYm94Jy8+IixuPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxy
PWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSwhbnx8IXJ8fCFuLmxl
bmd0aClyZXR1cm57fTtzPW8uY3JlYXRlRWxlbWVudCgic2VsZWN0IiksbD1z
LmFwcGVuZENoaWxkKG8uY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9ZC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxyLnN0eWxlLmNzc1Rl
eHQ9InRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41Iix0PXtnZXRTZXRB
dHRyaWJ1dGU6InQiIT09ZC5jbGFzc05hbWUsbGVhZGluZ1doaXRlc3BhY2U6
Mz09PWQuZmlyc3RDaGlsZC5ub2RlVHlwZSx0Ym9keTohZC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsaHRtbFNlcmlhbGl6ZTohIWQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsc3R5bGU6L3Rv
cC8udGVzdChyLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksaHJlZk5vcm1hbGl6
ZWQ6Ii9hIj09PXIuZ2V0QXR0cmlidXRlKCJocmVmIiksb3BhY2l0eTovXjAu
NS8udGVzdChyLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhci5zdHlsZS5j
c3NGbG9hdCxjaGVja09uOiEhYS52YWx1ZSxvcHRTZWxlY3RlZDpsLnNlbGVj
dGVkLGVuY3R5cGU6ISFvLmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBl
LGh0bWw1Q2xvbmU6Ijw6bmF2PjwvOm5hdj4iIT09by5jcmVhdGVFbGVtZW50
KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxib3hNb2RlbDoiQ1NT
MUNvbXBhdCI9PT1vLmNvbXBhdE1vZGUsZGVsZXRlRXhwYW5kbzohMCxub0Ns
b25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtX
cmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAsYm94U2l6aW5n
UmVsaWFibGU6ITAscGl4ZWxQb3NpdGlvbjohMX0sYS5jaGVja2VkPSEwLHQu
bm9DbG9uZUNoZWNrZWQ9YS5jbG9uZU5vZGUoITApLmNoZWNrZWQscy5kaXNh
YmxlZD0hMCx0Lm9wdERpc2FibGVkPSFsLmRpc2FibGVkO3RyeXtkZWxldGUg
ZC50ZXN0fWNhdGNoKGgpe3QuZGVsZXRlRXhwYW5kbz0hMX1hPW8uY3JlYXRl
RWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSx0
LmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0i
dCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLHQucmFkaW9WYWx1
ZT0idCI9PT1hLnZhbHVlLGEuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwidCIp
LGEuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLHU9by5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCksdS5hcHBlbmRDaGlsZChhKSx0LmFwcGVuZENoZWNrZWQ9
YS5jaGVja2VkLHQuY2hlY2tDbG9uZT11LmNsb25lTm9kZSghMCkuY2xvbmVO
b2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxkLmF0dGFjaEV2ZW50JiYoZC5h
dHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXt0Lm5vQ2xvbmVFdmVu
dD0hMX0pLGQuY2xvbmVOb2RlKCEwKS5jbGljaygpKTtmb3IoZiBpbntzdWJt
aXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWQuc2V0QXR0cmlidXRlKGM9
Im9uIitmLCJ0IiksdFtmKyJCdWJibGVzIl09YyBpbiBlfHxkLmF0dHJpYnV0
ZXNbY10uZXhwYW5kbz09PSExO3JldHVybiBkLnN0eWxlLmJhY2tncm91bmRD
bGlwPSJjb250ZW50LWJveCIsZC5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tn
cm91bmRDbGlwPSIiLHQuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9
PT1kLnN0eWxlLmJhY2tncm91bmRDbGlwLGIoZnVuY3Rpb24oKXt2YXIgbixy
LGEscz0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6Ymxv
Y2s7Ym94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29u
dGVudC1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94OyIsdT1v
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07dSYmKG49by5jcmVh
dGVFbGVtZW50KCJkaXYiKSxuLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dp
ZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDot
OTk5OXB4O21hcmdpbi10b3A6MXB4Iix1LmFwcGVuZENoaWxkKG4pLmFwcGVu
ZENoaWxkKGQpLGQuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZD48L3RkPjx0
ZD50PC90ZD48L3RyPjwvdGFibGU+IixhPWQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInRkIiksYVswXS5zdHlsZS5jc3NUZXh0PSJwYWRkaW5nOjA7bWFyZ2lu
OjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIixwPTA9PT1hWzBdLm9mZnNldEhl
aWdodCxhWzBdLnN0eWxlLmRpc3BsYXk9IiIsYVsxXS5zdHlsZS5kaXNwbGF5
PSJub25lIix0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1wJiYwPT09YVswXS5v
ZmZzZXRIZWlnaHQsZC5pbm5lckhUTUw9IiIsZC5zdHlsZS5jc3NUZXh0PSJi
b3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1i
b3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxcHg7
Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9w
OjElO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTsiLHQuYm94U2l6aW5nPTQ9
PT1kLm9mZnNldFdpZHRoLHQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlP
ZmZzZXQ9MSE9PXUub2Zmc2V0VG9wLGUuZ2V0Q29tcHV0ZWRTdHlsZSYmKHQu
cGl4ZWxQb3NpdGlvbj0iMSUiIT09KGUuZ2V0Q29tcHV0ZWRTdHlsZShkLG51
bGwpfHx7fSkudG9wLHQuYm94U2l6aW5nUmVsaWFibGU9IjRweCI9PT0oZS5n
ZXRDb21wdXRlZFN0eWxlKGQsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRo
LHI9ZC5hcHBlbmRDaGlsZChvLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxyLnN0
eWxlLmNzc1RleHQ9ZC5zdHlsZS5jc3NUZXh0PXMsci5zdHlsZS5tYXJnaW5S
aWdodD1yLnN0eWxlLndpZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLHQu
cmVsaWFibGVNYXJnaW5SaWdodD0hcGFyc2VGbG9hdCgoZS5nZXRDb21wdXRl
ZFN0eWxlKHIsbnVsbCl8fHt9KS5tYXJnaW5SaWdodCkpLHR5cGVvZiBkLnN0
eWxlLnpvb20hPT1pJiYoZC5pbm5lckhUTUw9IiIsZC5zdHlsZS5jc3NUZXh0
PXMrIndpZHRoOjFweDtwYWRkaW5nOjFweDtkaXNwbGF5OmlubGluZTt6b29t
OjEiLHQuaW5saW5lQmxvY2tOZWVkc0xheW91dD0zPT09ZC5vZmZzZXRXaWR0
aCxkLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixkLmlubmVySFRNTD0iPGRpdj48
L2Rpdj4iLGQuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iNXB4Iix0LnNocmlu
a1dyYXBCbG9ja3M9MyE9PWQub2Zmc2V0V2lkdGgsdC5pbmxpbmVCbG9ja05l
ZWRzTGF5b3V0JiYodS5zdHlsZS56b29tPTEpKSx1LnJlbW92ZUNoaWxkKG4p
LG49ZD1hPXI9bnVsbCl9KSxuPXM9dT1sPXI9YT1udWxsLHR9KCk7dmFyIE89
Lyg/Olx7W1xzXFNdKlx9fFxbW1xzXFNdKlxdKSQvLEI9LyhbQS1aXSkvZztm
dW5jdGlvbiBQKGUsbixyLGkpe2lmKGIuYWNjZXB0RGF0YShlKSl7dmFyIG8s
YSxzPWIuZXhwYW5kbyx1PSJzdHJpbmciPT10eXBlb2YgbixsPWUubm9kZVR5
cGUscD1sP2IuY2FjaGU6ZSxmPWw/ZVtzXTplW3NdJiZzO2lmKGYmJnBbZl0m
JihpfHxwW2ZdLmRhdGEpfHwhdXx8ciE9PXQpcmV0dXJuIGZ8fChsP2Vbc109
Zj1jLnBvcCgpfHxiLmd1aWQrKzpmPXMpLHBbZl18fChwW2ZdPXt9LGx8fChw
W2ZdLnRvSlNPTj1iLm5vb3ApKSwoIm9iamVjdCI9PXR5cGVvZiBufHwiZnVu
Y3Rpb24iPT10eXBlb2YgbikmJihpP3BbZl09Yi5leHRlbmQocFtmXSxuKTpw
W2ZdLmRhdGE9Yi5leHRlbmQocFtmXS5kYXRhLG4pKSxvPXBbZl0saXx8KG8u
ZGF0YXx8KG8uZGF0YT17fSksbz1vLmRhdGEpLHIhPT10JiYob1tiLmNhbWVs
Q2FzZShuKV09ciksdT8oYT1vW25dLG51bGw9PWEmJihhPW9bYi5jYW1lbENh
c2UobildKSk6YT1vLGF9fWZ1bmN0aW9uIFIoZSx0LG4pe2lmKGIuYWNjZXB0
RGF0YShlKSl7dmFyIHIsaSxvLGE9ZS5ub2RlVHlwZSxzPWE/Yi5jYWNoZTpl
LHU9YT9lW2IuZXhwYW5kb106Yi5leHBhbmRvO2lmKHNbdV0pe2lmKHQmJihv
PW4/c1t1XTpzW3VdLmRhdGEpKXtiLmlzQXJyYXkodCk/dD10LmNvbmNhdChi
Lm1hcCh0LGIuY2FtZWxDYXNlKSk6dCBpbiBvP3Q9W3RdOih0PWIuY2FtZWxD
YXNlKHQpLHQ9dCBpbiBvP1t0XTp0LnNwbGl0KCIgIikpO2ZvcihyPTAsaT10
Lmxlbmd0aDtpPnI7cisrKWRlbGV0ZSBvW3Rbcl1dO2lmKCEobj8kOmIuaXNF
bXB0eU9iamVjdCkobykpcmV0dXJufShufHwoZGVsZXRlIHNbdV0uZGF0YSwk
KHNbdV0pKSkmJihhP2IuY2xlYW5EYXRhKFtlXSwhMCk6Yi5zdXBwb3J0LmRl
bGV0ZUV4cGFuZG98fHMhPXMud2luZG93P2RlbGV0ZSBzW3VdOnNbdV09bnVs
bCl9fX1iLmV4dGVuZCh7Y2FjaGU6e30sZXhwYW5kbzoialF1ZXJ5IisocCtN
YXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0RhdGE6e2VtYmVk
OiEwLG9iamVjdDoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0
NTUzNTQwMDAwIixhcHBsZXQ6ITB9LGhhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0
dXJuIGU9ZS5ub2RlVHlwZT9iLmNhY2hlW2VbYi5leHBhbmRvXV06ZVtiLmV4
cGFuZG9dLCEhZSYmISQoZSl9LGRhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVy
biBQKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe3JldHVybiBS
KGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUChlLHQsbiwh
MCl9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoZSx0LCEw
KX0sYWNjZXB0RGF0YTpmdW5jdGlvbihlKXtpZihlLm5vZGVUeXBlJiYxIT09
ZS5ub2RlVHlwZSYmOSE9PWUubm9kZVR5cGUpcmV0dXJuITE7dmFyIHQ9ZS5u
b2RlTmFtZSYmYi5ub0RhdGFbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTty
ZXR1cm4hdHx8dCE9PSEwJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09
dH19KSxiLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihlLG4pe3ZhciByLGks
bz10aGlzWzBdLGE9MCxzPW51bGw7aWYoZT09PXQpe2lmKHRoaXMubGVuZ3Ro
JiYocz1iLmRhdGEobyksMT09PW8ubm9kZVR5cGUmJiFiLl9kYXRhKG8sInBh
cnNlZEF0dHJzIikpKXtmb3Iocj1vLmF0dHJpYnV0ZXM7ci5sZW5ndGg+YTth
KyspaT1yW2FdLm5hbWUsaS5pbmRleE9mKCJkYXRhLSIpfHwoaT1iLmNhbWVs
Q2FzZShpLnNsaWNlKDUpKSxXKG8saSxzW2ldKSk7Yi5fZGF0YShvLCJwYXJz
ZWRBdHRycyIsITApfXJldHVybiBzfXJldHVybiJvYmplY3QiPT10eXBlb2Yg
ZT90aGlzLmVhY2goZnVuY3Rpb24oKXtiLmRhdGEodGhpcyxlKX0pOmIuYWNj
ZXNzKHRoaXMsZnVuY3Rpb24obil7cmV0dXJuIG49PT10P28/VyhvLGUsYi5k
YXRhKG8sZSkpOm51bGw6KHRoaXMuZWFjaChmdW5jdGlvbigpe2IuZGF0YSh0
aGlzLGUsbil9KSx0KX0sbnVsbCxuLGFyZ3VtZW50cy5sZW5ndGg+MSxudWxs
LCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7Yi5yZW1vdmVEYXRhKHRoaXMsZSl9KX19KTtmdW5jdGlv
biBXKGUsbixyKXtpZihyPT09dCYmMT09PWUubm9kZVR5cGUpe3ZhciBpPSJk
YXRhLSIrbi5yZXBsYWNlKEIsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYocj1l
LmdldEF0dHJpYnV0ZShpKSwic3RyaW5nIj09dHlwZW9mIHIpe3RyeXtyPSJ0
cnVlIj09PXI/ITA6ImZhbHNlIj09PXI/ITE6Im51bGwiPT09cj9udWxsOity
KyIiPT09cj8rcjpPLnRlc3Qocik/Yi5wYXJzZUpTT04ocik6cn1jYXRjaChv
KXt9Yi5kYXRhKGUsbixyKX1lbHNlIHI9dH1yZXR1cm4gcn1mdW5jdGlvbiAk
KGUpe3ZhciB0O2Zvcih0IGluIGUpaWYoKCJkYXRhIiE9PXR8fCFiLmlzRW1w
dHlPYmplY3QoZVt0XSkpJiYidG9KU09OIiE9PXQpcmV0dXJuITE7cmV0dXJu
ITB9Yi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsbixyKXt2YXIgaTtyZXR1
cm4gZT8obj0obnx8ImZ4IikrInF1ZXVlIixpPWIuX2RhdGEoZSxuKSxyJiYo
IWl8fGIuaXNBcnJheShyKT9pPWIuX2RhdGEoZSxuLGIubWFrZUFycmF5KHIp
KTppLnB1c2gocikpLGl8fFtdKTp0fSxkZXF1ZXVlOmZ1bmN0aW9uKGUsdCl7
dD10fHwiZngiO3ZhciBuPWIucXVldWUoZSx0KSxyPW4ubGVuZ3RoLGk9bi5z
aGlmdCgpLG89Yi5fcXVldWVIb29rcyhlLHQpLGE9ZnVuY3Rpb24oKXtiLmRl
cXVldWUoZSx0KX07ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHIt
LSksby5jdXI9aSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVz
cyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsYSxvKSksIXImJm8mJm8uZW1w
dHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihlLHQpe3ZhciBuPXQr
InF1ZXVlSG9va3MiO3JldHVybiBiLl9kYXRhKGUsbil8fGIuX2RhdGEoZSxu
LHtlbXB0eTpiLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rp
b24oKXtiLl9yZW1vdmVEYXRhKGUsdCsicXVldWUiKSxiLl9yZW1vdmVEYXRh
KGUsbil9KX0pfX0pLGIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihlLG4p
e3ZhciByPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYobj1lLGU9ImZ4
IixyLS0pLHI+YXJndW1lbnRzLmxlbmd0aD9iLnF1ZXVlKHRoaXNbMF0sZSk6
bj09PXQ/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1iLnF1ZXVl
KHRoaXMsZSxuKTtiLl9xdWV1ZUhvb2tzKHRoaXMsZSksImZ4Ij09PWUmJiJp
bnByb2dyZXNzIiE9PXRbMF0mJmIuZGVxdWV1ZSh0aGlzLGUpfSl9LGRlcXVl
dWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2Iu
ZGVxdWV1ZSh0aGlzLGUpfSl9LGRlbGF5OmZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGU9Yi5meD9iLmZ4LnNwZWVkc1tlXXx8ZTplLHQ9dHx8ImZ4Iix0aGlzLnF1
ZXVlKHQsZnVuY3Rpb24odCxuKXt2YXIgcj1zZXRUaW1lb3V0KHQsZSk7bi5z
dG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHIpfX0pfSxjbGVhclF1ZXVl
OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxw
cm9taXNlOmZ1bmN0aW9uKGUsbil7dmFyIHIsaT0xLG89Yi5EZWZlcnJlZCgp
LGE9dGhpcyxzPXRoaXMubGVuZ3RoLHU9ZnVuY3Rpb24oKXstLWl8fG8ucmVz
b2x2ZVdpdGgoYSxbYV0pfTsic3RyaW5nIiE9dHlwZW9mIGUmJihuPWUsZT10
KSxlPWV8fCJmeCI7d2hpbGUocy0tKXI9Yi5fZGF0YShhW3NdLGUrInF1ZXVl
SG9va3MiKSxyJiZyLmVtcHR5JiYoaSsrLHIuZW1wdHkuYWRkKHUpKTtyZXR1
cm4gdSgpLG8ucHJvbWlzZShuKX19KTt2YXIgSSx6LFg9L1tcdFxyXG5dL2cs
VT0vXHIvZyxWPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxv
YmplY3QpJC9pLFk9L14oPzphfGFyZWEpJC9pLEo9L14oPzpjaGVja2VkfHNl
bGVjdGVkfGF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjb250cm9sc3xkZWZl
cnxkaXNhYmxlZHxoaWRkZW58bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5
fHJlcXVpcmVkfHNjb3BlZCkkL2ksRz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQp
JC9pLFE9Yi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSxLPWIuc3VwcG9ydC5p
bnB1dDtiLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiBi
LmFjY2Vzcyh0aGlzLGIuYXR0cixlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0s
cmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7Yi5yZW1vdmVBdHRyKHRoaXMsZSl9KX0scHJvcDpmdW5jdGlvbihl
LHQpe3JldHVybiBiLmFjY2Vzcyh0aGlzLGIucHJvcCxlLHQsYXJndW1lbnRz
Lmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gZT1i
LnByb3BGaXhbZV18fGUsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNb
ZV09dCxkZWxldGUgdGhpc1tlXX1jYXRjaChuKXt9fSl9LGFkZENsYXNzOmZ1
bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYT0wLHM9dGhpcy5sZW5ndGgsdT0i
c3RyaW5nIj09dHlwZW9mIGUmJmU7aWYoYi5pc0Z1bmN0aW9uKGUpKXJldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24odCl7Yih0aGlzKS5hZGRDbGFzcyhlLmNh
bGwodGhpcyx0LHRoaXMuY2xhc3NOYW1lKSl9KTtpZih1KWZvcih0PShlfHwi
IikubWF0Y2godyl8fFtdO3M+YTthKyspaWYobj10aGlzW2FdLHI9MT09PW4u
bm9kZVR5cGUmJihuLmNsYXNzTmFtZT8oIiAiK24uY2xhc3NOYW1lKyIgIiku
cmVwbGFjZShYLCIgIik6IiAiKSl7bz0wO3doaWxlKGk9dFtvKytdKTA+ci5p
bmRleE9mKCIgIitpKyIgIikmJihyKz1pKyIgIik7bi5jbGFzc05hbWU9Yi50
cmltKHIpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihlKXt2
YXIgdCxuLHIsaSxvLGE9MCxzPXRoaXMubGVuZ3RoLHU9MD09PWFyZ3VtZW50
cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgZSYmZTtpZihiLmlzRnVuY3Rp
b24oZSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0KXtiKHRoaXMpLnJl
bW92ZUNsYXNzKGUuY2FsbCh0aGlzLHQsdGhpcy5jbGFzc05hbWUpKX0pO2lm
KHUpZm9yKHQ9KGV8fCIiKS5tYXRjaCh3KXx8W107cz5hO2ErKylpZihuPXRo
aXNbYV0scj0xPT09bi5ub2RlVHlwZSYmKG4uY2xhc3NOYW1lPygiICIrbi5j
bGFzc05hbWUrIiAiKS5yZXBsYWNlKFgsIiAiKToiIikpe289MDt3aGlsZShp
PXRbbysrXSl3aGlsZShyLmluZGV4T2YoIiAiK2krIiAiKT49MClyPXIucmVw
bGFjZSgiICIraSsiICIsIiAiKTtuLmNsYXNzTmFtZT1lP2IudHJpbShyKToi
In1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oZSx0KXt2YXIg
bj10eXBlb2YgZSxyPSJib29sZWFuIj09dHlwZW9mIHQ7cmV0dXJuIGIuaXNG
dW5jdGlvbihlKT90aGlzLmVhY2goZnVuY3Rpb24obil7Yih0aGlzKS50b2dn
bGVDbGFzcyhlLmNhbGwodGhpcyxuLHRoaXMuY2xhc3NOYW1lLHQpLHQpfSk6
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1uKXt2YXIgbyxh
PTAscz1iKHRoaXMpLHU9dCxsPWUubWF0Y2godyl8fFtdO3doaWxlKG89bFth
KytdKXU9cj91OiFzLmhhc0NsYXNzKG8pLHNbdT8iYWRkQ2xhc3MiOiJyZW1v
dmVDbGFzcyJdKG8pfWVsc2Uobj09PWl8fCJib29sZWFuIj09PW4pJiYodGhp
cy5jbGFzc05hbWUmJmIuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsdGhp
cy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxl
PT09ITE/IiI6Yi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKX0p
fSxoYXNDbGFzczpmdW5jdGlvbihlKXt2YXIgdD0iICIrZSsiICIsbj0wLHI9
dGhpcy5sZW5ndGg7Zm9yKDtyPm47bisrKWlmKDE9PT10aGlzW25dLm5vZGVU
eXBlJiYoIiAiK3RoaXNbbl0uY2xhc3NOYW1lKyIgIikucmVwbGFjZShYLCIg
IikuaW5kZXhPZih0KT49MClyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0
aW9uKGUpe3ZhciBuLHIsaSxvPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5n
dGgpcmV0dXJuIGk9Yi5pc0Z1bmN0aW9uKGUpLHRoaXMuZWFjaChmdW5jdGlv
bihuKXt2YXIgbyxhPWIodGhpcyk7MT09PXRoaXMubm9kZVR5cGUmJihvPWk/
ZS5jYWxsKHRoaXMsbixhLnZhbCgpKTplLG51bGw9PW8/bz0iIjoibnVtYmVy
Ij09dHlwZW9mIG8/bys9IiI6Yi5pc0FycmF5KG8pJiYobz1iLm1hcChvLGZ1
bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSkscj1iLnZhbEhv
b2tzW3RoaXMudHlwZV18fGIudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpXSxyJiYic2V0ImluIHImJnIuc2V0KHRoaXMsbywidmFsdWUi
KSE9PXR8fCh0aGlzLnZhbHVlPW8pKX0pO2lmKG8pcmV0dXJuIHI9Yi52YWxI
b29rc1tvLnR5cGVdfHxiLnZhbEhvb2tzW28ubm9kZU5hbWUudG9Mb3dlckNh
c2UoKV0sciYmImdldCJpbiByJiYobj1yLmdldChvLCJ2YWx1ZSIpKSE9PXQ/
bjoobj1vLnZhbHVlLCJzdHJpbmciPT10eXBlb2Ygbj9uLnJlcGxhY2UoVSwi
Iik6bnVsbD09bj8iIjpuKX19fSksYi5leHRlbmQoe3ZhbEhvb2tzOntvcHRp
b246e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLmF0dHJpYnV0ZXMudmFsdWU7
cmV0dXJuIXR8fHQuc3BlY2lmaWVkP2UudmFsdWU6ZS50ZXh0fX0sc2VsZWN0
OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWUub3B0aW9ucyxpPWUuc2Vs
ZWN0ZWRJbmRleCxvPSJzZWxlY3Qtb25lIj09PWUudHlwZXx8MD5pLGE9bz9u
dWxsOltdLHM9bz9pKzE6ci5sZW5ndGgsdT0wPmk/czpvP2k6MDtmb3IoO3M+
dTt1KyspaWYobj1yW3VdLCEoIW4uc2VsZWN0ZWQmJnUhPT1pfHwoYi5zdXBw
b3J0Lm9wdERpc2FibGVkP24uZGlzYWJsZWQ6bnVsbCE9PW4uZ2V0QXR0cmli
dXRlKCJkaXNhYmxlZCIpKXx8bi5wYXJlbnROb2RlLmRpc2FibGVkJiZiLm5v
ZGVOYW1lKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9YihuKS52
YWwoKSxvKXJldHVybiB0O2EucHVzaCh0KX1yZXR1cm4gYX0sc2V0OmZ1bmN0
aW9uKGUsdCl7dmFyIG49Yi5tYWtlQXJyYXkodCk7cmV0dXJuIGIoZSkuZmlu
ZCgib3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9Yi5p
bkFycmF5KGIodGhpcykudmFsKCksbik+PTB9KSxuLmxlbmd0aHx8KGUuc2Vs
ZWN0ZWRJbmRleD0tMSksbn19fSxhdHRyOmZ1bmN0aW9uKGUsbixyKXt2YXIg
byxhLHMsdT1lLm5vZGVUeXBlO2lmKGUmJjMhPT11JiY4IT09dSYmMiE9PXUp
cmV0dXJuIHR5cGVvZiBlLmdldEF0dHJpYnV0ZT09PWk/Yi5wcm9wKGUsbixy
KTooYT0xIT09dXx8IWIuaXNYTUxEb2MoZSksYSYmKG49bi50b0xvd2VyQ2Fz
ZSgpLG89Yi5hdHRySG9va3Nbbl18fChKLnRlc3Qobik/ejpJKSkscj09PXQ/
byYmYSYmImdldCJpbiBvJiZudWxsIT09KHM9by5nZXQoZSxuKSk/czoodHlw
ZW9mIGUuZ2V0QXR0cmlidXRlIT09aSYmKHM9ZS5nZXRBdHRyaWJ1dGUobikp
LG51bGw9PXM/dDpzKTpudWxsIT09cj9vJiZhJiYic2V0ImluIG8mJihzPW8u
c2V0KGUscixuKSkhPT10P3M6KGUuc2V0QXR0cmlidXRlKG4scisiIikscik6
KGIucmVtb3ZlQXR0cihlLG4pLHQpKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihl
LHQpe3ZhciBuLHIsaT0wLG89dCYmdC5tYXRjaCh3KTtpZihvJiYxPT09ZS5u
b2RlVHlwZSl3aGlsZShuPW9baSsrXSlyPWIucHJvcEZpeFtuXXx8bixKLnRl
c3Qobik/IVEmJkcudGVzdChuKT9lW2IuY2FtZWxDYXNlKCJkZWZhdWx0LSIr
bildPWVbcl09ITE6ZVtyXT0hMTpiLmF0dHIoZSxuLCIiKSxlLnJlbW92ZUF0
dHJpYnV0ZShRP246cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9u
KGUsdCl7aWYoIWIuc3VwcG9ydC5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYm
Yi5ub2RlTmFtZShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBl
LnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0s
cHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9u
bHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxl
bmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNl
bGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29s
c3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJm
cmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUi
fSxwcm9wOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxvLGEscz1lLm5vZGVUeXBl
O2lmKGUmJjMhPT1zJiY4IT09cyYmMiE9PXMpcmV0dXJuIGE9MSE9PXN8fCFi
LmlzWE1MRG9jKGUpLGEmJihuPWIucHJvcEZpeFtuXXx8bixvPWIucHJvcEhv
b2tzW25dKSxyIT09dD9vJiYic2V0ImluIG8mJihpPW8uc2V0KGUscixuKSkh
PT10P2k6ZVtuXT1yOm8mJiJnZXQiaW4gbyYmbnVsbCE9PShpPW8uZ2V0KGUs
bikpP2k6ZVtuXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9u
KGUpe3ZhciBuPWUuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1
cm4gbiYmbi5zcGVjaWZpZWQ/cGFyc2VJbnQobi52YWx1ZSwxMCk6Vi50ZXN0
KGUubm9kZU5hbWUpfHxZLnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOnR9
fX19KSx6PXtnZXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcj1iLnByb3AoZSxuKSxp
PSJib29sZWFuIj09dHlwZW9mIHImJmUuZ2V0QXR0cmlidXRlKG4pLG89ImJv
b2xlYW4iPT10eXBlb2Ygcj9LJiZRP251bGwhPWk6Ry50ZXN0KG4pP2VbYi5j
YW1lbENhc2UoImRlZmF1bHQtIituKV06ISFpOmUuZ2V0QXR0cmlidXRlTm9k
ZShuKTtyZXR1cm4gbyYmby52YWx1ZSE9PSExP24udG9Mb3dlckNhc2UoKTp0
fSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PT09ITE/Yi5yZW1vdmVB
dHRyKGUsbik6SyYmUXx8IUcudGVzdChuKT9lLnNldEF0dHJpYnV0ZSghUSYm
Yi5wcm9wRml4W25dfHxuLG4pOmVbYi5jYW1lbENhc2UoImRlZmF1bHQtIitu
KV09ZVtuXT0hMCxufX0sSyYmUXx8KGIuYXR0ckhvb2tzLnZhbHVlPXtnZXQ6
ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLmdldEF0dHJpYnV0ZU5vZGUobik7cmV0
dXJuIGIubm9kZU5hbWUoZSwiaW5wdXQiKT9lLmRlZmF1bHRWYWx1ZTpyJiZy
LnNwZWNpZmllZD9yLnZhbHVlOnR9LHNldDpmdW5jdGlvbihlLG4scil7cmV0
dXJuIGIubm9kZU5hbWUoZSwiaW5wdXQiKT8oZS5kZWZhdWx0VmFsdWU9bix0
KTpJJiZJLnNldChlLG4scil9fSksUXx8KEk9Yi52YWxIb29rcy5idXR0b249
e2dldDpmdW5jdGlvbihlLG4pe3ZhciByPWUuZ2V0QXR0cmlidXRlTm9kZShu
KTtyZXR1cm4gciYmKCJpZCI9PT1ufHwibmFtZSI9PT1ufHwiY29vcmRzIj09
PW4/IiIhPT1yLnZhbHVlOnIuc3BlY2lmaWVkKT9yLnZhbHVlOnR9LHNldDpm
dW5jdGlvbihlLG4scil7dmFyIGk9ZS5nZXRBdHRyaWJ1dGVOb2RlKHIpO3Jl
dHVybiBpfHxlLnNldEF0dHJpYnV0ZU5vZGUoaT1lLm93bmVyRG9jdW1lbnQu
Y3JlYXRlQXR0cmlidXRlKHIpKSxpLnZhbHVlPW4rPSIiLCJ2YWx1ZSI9PT1y
fHxuPT09ZS5nZXRBdHRyaWJ1dGUocik/bjp0fX0sYi5hdHRySG9va3MuY29u
dGVudGVkaXRhYmxlPXtnZXQ6SS5nZXQsc2V0OmZ1bmN0aW9uKGUsdCxuKXtJ
LnNldChlLCIiPT09dD8hMTp0LG4pfX0sYi5lYWNoKFsid2lkdGgiLCJoZWln
aHQiXSxmdW5jdGlvbihlLG4pe2IuYXR0ckhvb2tzW25dPWIuZXh0ZW5kKGIu
YXR0ckhvb2tzW25dLHtzZXQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4iIj09PXI/
KGUuc2V0QXR0cmlidXRlKG4sImF1dG8iKSxyKTp0fX0pfSkpLGIuc3VwcG9y
dC5ocmVmTm9ybWFsaXplZHx8KGIuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0
aCIsImhlaWdodCJdLGZ1bmN0aW9uKGUsbil7Yi5hdHRySG9va3Nbbl09Yi5l
eHRlbmQoYi5hdHRySG9va3Nbbl0se2dldDpmdW5jdGlvbihlKXt2YXIgcj1l
LmdldEF0dHJpYnV0ZShuLDIpO3JldHVybiBudWxsPT1yP3Q6cn19KX0pLGIu
ZWFjaChbImhyZWYiLCJzcmMiXSxmdW5jdGlvbihlLHQpe2IucHJvcEhvb2tz
W3RdPXtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQs
NCl9fX0pKSxiLnN1cHBvcnQuc3R5bGV8fChiLmF0dHJIb29rcy5zdHlsZT17
Z2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlLmNzc1RleHR8fHR9LHNl
dDpmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0eWxlLmNzc1RleHQ9dCsiIn19
KSxiLnN1cHBvcnQub3B0U2VsZWN0ZWR8fChiLnByb3BIb29rcy5zZWxlY3Rl
ZD1iLmV4dGVuZChiLnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9u
KGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmKHQuc2VsZWN0ZWRJ
bmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4
KSxudWxsfX0pKSxiLnN1cHBvcnQuZW5jdHlwZXx8KGIucHJvcEZpeC5lbmN0
eXBlPSJlbmNvZGluZyIpLGIuc3VwcG9ydC5jaGVja09ufHxiLmVhY2goWyJy
YWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtiLnZhbEhvb2tzW3RoaXNd
PXtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lLmdldEF0dHJpYnV0
ZSgidmFsdWUiKT8ib24iOmUudmFsdWV9fX0pLGIuZWFjaChbInJhZGlvIiwi
Y2hlY2tib3giXSxmdW5jdGlvbigpe2IudmFsSG9va3NbdGhpc109Yi5leHRl
bmQoYi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGUsbil7cmV0dXJu
IGIuaXNBcnJheShuKT9lLmNoZWNrZWQ9Yi5pbkFycmF5KGIoZSkudmFsKCks
bik+PTA6dH19KX0pO3ZhciBaPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVh
KSQvaSxldD0vXmtleS8sdHQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xp
Y2svLG50PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxydD0v
XihbXi5dKikoPzpcLiguKyl8KSQvO2Z1bmN0aW9uIGl0KCl7cmV0dXJuITB9
ZnVuY3Rpb24gb3QoKXtyZXR1cm4hMX1iLmV2ZW50PXtnbG9iYWw6e30sYWRk
OmZ1bmN0aW9uKGUsbixyLG8sYSl7dmFyIHMsdSxsLGMscCxmLGQsaCxnLG0s
eSx2PWIuX2RhdGEoZSk7aWYodil7ci5oYW5kbGVyJiYoYz1yLHI9Yy5oYW5k
bGVyLGE9Yy5zZWxlY3Rvciksci5ndWlkfHwoci5ndWlkPWIuZ3VpZCsrKSwo
dT12LmV2ZW50cyl8fCh1PXYuZXZlbnRzPXt9KSwoZj12LmhhbmRsZSl8fChm
PXYuaGFuZGxlPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgYj09PWl8fGUm
JmIuZXZlbnQudHJpZ2dlcmVkPT09ZS50eXBlP3Q6Yi5ldmVudC5kaXNwYXRj
aC5hcHBseShmLmVsZW0sYXJndW1lbnRzKX0sZi5lbGVtPWUpLG49KG58fCIi
KS5tYXRjaCh3KXx8WyIiXSxsPW4ubGVuZ3RoO3doaWxlKGwtLSlzPXJ0LmV4
ZWMobltsXSl8fFtdLGc9eT1zWzFdLG09KHNbMl18fCIiKS5zcGxpdCgiLiIp
LnNvcnQoKSxwPWIuZXZlbnQuc3BlY2lhbFtnXXx8e30sZz0oYT9wLmRlbGVn
YXRlVHlwZTpwLmJpbmRUeXBlKXx8ZyxwPWIuZXZlbnQuc3BlY2lhbFtnXXx8
e30sZD1iLmV4dGVuZCh7dHlwZTpnLG9yaWdUeXBlOnksZGF0YTpvLGhhbmRs
ZXI6cixndWlkOnIuZ3VpZCxzZWxlY3RvcjphLG5lZWRzQ29udGV4dDphJiZi
LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoYSksbmFtZXNwYWNlOm0u
am9pbigiLiIpfSxjKSwoaD11W2ddKXx8KGg9dVtnXT1bXSxoLmRlbGVnYXRl
Q291bnQ9MCxwLnNldHVwJiZwLnNldHVwLmNhbGwoZSxvLG0sZikhPT0hMXx8
KGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoZyxmLCEx
KTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbiIrZyxmKSkpLHAu
YWRkJiYocC5hZGQuY2FsbChlLGQpLGQuaGFuZGxlci5ndWlkfHwoZC5oYW5k
bGVyLmd1aWQ9ci5ndWlkKSksYT9oLnNwbGljZShoLmRlbGVnYXRlQ291bnQr
KywwLGQpOmgucHVzaChkKSxiLmV2ZW50Lmdsb2JhbFtnXT0hMDtlPW51bGx9
fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMs
cCxmLGQsaCxnLG09Yi5oYXNEYXRhKGUpJiZiLl9kYXRhKGUpO2lmKG0mJihj
PW0uZXZlbnRzKSl7dD0odHx8IiIpLm1hdGNoKHcpfHxbIiJdLGw9dC5sZW5n
dGg7d2hpbGUobC0tKWlmKHM9cnQuZXhlYyh0W2xdKXx8W10sZD1nPXNbMV0s
aD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGQpe3A9Yi5ldmVudC5z
cGVjaWFsW2RdfHx7fSxkPShyP3AuZGVsZWdhdGVUeXBlOnAuYmluZFR5cGUp
fHxkLGY9Y1tkXXx8W10scz1zWzJdJiZSZWdFeHAoIihefFxcLikiK2guam9p
bigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksdT1vPWYubGVuZ3RoO3do
aWxlKG8tLSlhPWZbb10sIWkmJmchPT1hLm9yaWdUeXBlfHxuJiZuLmd1aWQh
PT1hLmd1aWR8fHMmJiFzLnRlc3QoYS5uYW1lc3BhY2UpfHxyJiZyIT09YS5z
ZWxlY3RvciYmKCIqKiIhPT1yfHwhYS5zZWxlY3Rvcil8fChmLnNwbGljZShv
LDEpLGEuc2VsZWN0b3ImJmYuZGVsZWdhdGVDb3VudC0tLHAucmVtb3ZlJiZw
LnJlbW92ZS5jYWxsKGUsYSkpO3UmJiFmLmxlbmd0aCYmKHAudGVhcmRvd24m
JnAudGVhcmRvd24uY2FsbChlLGgsbS5oYW5kbGUpIT09ITF8fGIucmVtb3Zl
RXZlbnQoZSxkLG0uaGFuZGxlKSxkZWxldGUgY1tkXSl9ZWxzZSBmb3IoZCBp
biBjKWIuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Yi5pc0VtcHR5
T2JqZWN0KGMpJiYoZGVsZXRlIG0uaGFuZGxlLGIuX3JlbW92ZURhdGEoZSwi
ZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihuLHIsaSxhKXt2YXIgcyx1
LGwsYyxwLGYsZCxoPVtpfHxvXSxnPXkuY2FsbChuLCJ0eXBlIik/bi50eXBl
Om4sbT15LmNhbGwobiwibmFtZXNwYWNlIik/bi5uYW1lc3BhY2Uuc3BsaXQo
Ii4iKTpbXTtpZihsPWY9aT1pfHxvLDMhPT1pLm5vZGVUeXBlJiY4IT09aS5u
b2RlVHlwZSYmIW50LnRlc3QoZytiLmV2ZW50LnRyaWdnZXJlZCkmJihnLmlu
ZGV4T2YoIi4iKT49MCYmKG09Zy5zcGxpdCgiLiIpLGc9bS5zaGlmdCgpLG0u
c29ydCgpKSx1PTA+Zy5pbmRleE9mKCI6IikmJiJvbiIrZyxuPW5bYi5leHBh
bmRvXT9uOm5ldyBiLkV2ZW50KGcsIm9iamVjdCI9PXR5cGVvZiBuJiZuKSxu
LmlzVHJpZ2dlcj0hMCxuLm5hbWVzcGFjZT1tLmpvaW4oIi4iKSxuLm5hbWVz
cGFjZV9yZT1uLm5hbWVzcGFjZT9SZWdFeHAoIihefFxcLikiK20uam9pbigi
XFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxuLnJlc3VsdD10LG4u
dGFyZ2V0fHwobi50YXJnZXQ9aSkscj1udWxsPT1yP1tuXTpiLm1ha2VBcnJh
eShyLFtuXSkscD1iLmV2ZW50LnNwZWNpYWxbZ118fHt9LGF8fCFwLnRyaWdn
ZXJ8fHAudHJpZ2dlci5hcHBseShpLHIpIT09ITEpKXtpZighYSYmIXAubm9C
dWJibGUmJiFiLmlzV2luZG93KGkpKXtmb3IoYz1wLmRlbGVnYXRlVHlwZXx8
ZyxudC50ZXN0KGMrZyl8fChsPWwucGFyZW50Tm9kZSk7bDtsPWwucGFyZW50
Tm9kZSloLnB1c2gobCksZj1sO2Y9PT0oaS5vd25lckRvY3VtZW50fHxvKSYm
aC5wdXNoKGYuZGVmYXVsdFZpZXd8fGYucGFyZW50V2luZG93fHxlKX1kPTA7
d2hpbGUoKGw9aFtkKytdKSYmIW4uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlu
LnR5cGU9ZD4xP2M6cC5iaW5kVHlwZXx8ZyxzPShiLl9kYXRhKGwsImV2ZW50
cyIpfHx7fSlbbi50eXBlXSYmYi5fZGF0YShsLCJoYW5kbGUiKSxzJiZzLmFw
cGx5KGwscikscz11JiZsW3VdLHMmJmIuYWNjZXB0RGF0YShsKSYmcy5hcHBs
eSYmcy5hcHBseShsLHIpPT09ITEmJm4ucHJldmVudERlZmF1bHQoKTtpZihu
LnR5cGU9ZywhKGF8fG4uaXNEZWZhdWx0UHJldmVudGVkKCl8fHAuX2RlZmF1
bHQmJnAuX2RlZmF1bHQuYXBwbHkoaS5vd25lckRvY3VtZW50LHIpIT09ITF8
fCJjbGljayI9PT1nJiZiLm5vZGVOYW1lKGksImEiKXx8IWIuYWNjZXB0RGF0
YShpKXx8IXV8fCFpW2ddfHxiLmlzV2luZG93KGkpKSl7Zj1pW3VdLGYmJihp
W3VdPW51bGwpLGIuZXZlbnQudHJpZ2dlcmVkPWc7dHJ5e2lbZ10oKX1jYXRj
aCh2KXt9Yi5ldmVudC50cmlnZ2VyZWQ9dCxmJiYoaVt1XT1mKX1yZXR1cm4g
bi5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXtlPWIuZXZlbnQuZml4
KGUpO3ZhciBuLHIsaSxvLGEscz1bXSx1PWguY2FsbChhcmd1bWVudHMpLGw9
KGIuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVtlLnR5cGVdfHxbXSxjPWIu
ZXZlbnQuc3BlY2lhbFtlLnR5cGVdfHx7fTtpZih1WzBdPWUsZS5kZWxlZ2F0
ZVRhcmdldD10aGlzLCFjLnByZURpc3BhdGNofHxjLnByZURpc3BhdGNoLmNh
bGwodGhpcyxlKSE9PSExKXtzPWIuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlz
LGUsbCksbj0wO3doaWxlKChvPXNbbisrXSkmJiFlLmlzUHJvcGFnYXRpb25T
dG9wcGVkKCkpe2UuY3VycmVudFRhcmdldD1vLmVsZW0sYT0wO3doaWxlKChp
PW8uaGFuZGxlcnNbYSsrXSkmJiFlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25T
dG9wcGVkKCkpKCFlLm5hbWVzcGFjZV9yZXx8ZS5uYW1lc3BhY2VfcmUudGVz
dChpLm5hbWVzcGFjZSkpJiYoZS5oYW5kbGVPYmo9aSxlLmRhdGE9aS5kYXRh
LHI9KChiLmV2ZW50LnNwZWNpYWxbaS5vcmlnVHlwZV18fHt9KS5oYW5kbGV8
fGkuaGFuZGxlcikuYXBwbHkoby5lbGVtLHUpLHIhPT10JiYoZS5yZXN1bHQ9
cik9PT0hMSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlv
bigpKSl9cmV0dXJuIGMucG9zdERpc3BhdGNoJiZjLnBvc3REaXNwYXRjaC5j
YWxsKHRoaXMsZSksZS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihlLG4p
e3ZhciByLGksbyxhLHM9W10sdT1uLmRlbGVnYXRlQ291bnQsbD1lLnRhcmdl
dDtpZih1JiZsLm5vZGVUeXBlJiYoIWUuYnV0dG9ufHwiY2xpY2siIT09ZS50
eXBlKSlmb3IoO2whPXRoaXM7bD1sLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09
PWwubm9kZVR5cGUmJihsLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1lLnR5
cGUpKXtmb3Iobz1bXSxhPTA7dT5hO2ErKylpPW5bYV0scj1pLnNlbGVjdG9y
KyIgIixvW3JdPT09dCYmKG9bcl09aS5uZWVkc0NvbnRleHQ/YihyLHRoaXMp
LmluZGV4KGwpPj0wOmIuZmluZChyLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCks
b1tyXSYmby5wdXNoKGkpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5k
bGVyczpvfSl9cmV0dXJuIG4ubGVuZ3RoPnUmJnMucHVzaCh7ZWxlbTp0aGlz
LGhhbmRsZXJzOm4uc2xpY2UodSl9KSxzfSxmaXg6ZnVuY3Rpb24oZSl7aWYo
ZVtiLmV4cGFuZG9dKXJldHVybiBlO3ZhciB0LG4scixpPWUudHlwZSxhPWUs
cz10aGlzLmZpeEhvb2tzW2ldO3N8fCh0aGlzLmZpeEhvb2tzW2ldPXM9dHQu
dGVzdChpKT90aGlzLm1vdXNlSG9va3M6ZXQudGVzdChpKT90aGlzLmtleUhv
b2tzOnt9KSxyPXMucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQocy5wcm9wcyk6
dGhpcy5wcm9wcyxlPW5ldyBiLkV2ZW50KGEpLHQ9ci5sZW5ndGg7d2hpbGUo
dC0tKW49clt0XSxlW25dPWFbbl07cmV0dXJuIGUudGFyZ2V0fHwoZS50YXJn
ZXQ9YS5zcmNFbGVtZW50fHxvKSwzPT09ZS50YXJnZXQubm9kZVR5cGUmJihl
LnRhcmdldD1lLnRhcmdldC5wYXJlbnROb2RlKSxlLm1ldGFLZXk9ISFlLm1l
dGFLZXkscy5maWx0ZXI/cy5maWx0ZXIoZSxhKTplfSxwcm9wczoiYWx0S2V5
IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZl
bnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0
IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9
LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIu
c3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09
ZS53aGljaCYmKGUud2hpY2g9bnVsbCE9dC5jaGFyQ29kZT90LmNoYXJDb2Rl
OnQua2V5Q29kZSksZX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0
dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZz
ZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNw
bGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGUsbil7dmFyIHIsaSxhLHM9bi5i
dXR0b24sdT1uLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1lLnBhZ2VYJiZu
dWxsIT1uLmNsaWVudFgmJihpPWUudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fG8s
YT1pLmRvY3VtZW50RWxlbWVudCxyPWkuYm9keSxlLnBhZ2VYPW4uY2xpZW50
WCsoYSYmYS5zY3JvbGxMZWZ0fHxyJiZyLnNjcm9sbExlZnR8fDApLShhJiZh
LmNsaWVudExlZnR8fHImJnIuY2xpZW50TGVmdHx8MCksZS5wYWdlWT1uLmNs
aWVudFkrKGEmJmEuc2Nyb2xsVG9wfHxyJiZyLnNjcm9sbFRvcHx8MCktKGEm
JmEuY2xpZW50VG9wfHxyJiZyLmNsaWVudFRvcHx8MCkpLCFlLnJlbGF0ZWRU
YXJnZXQmJnUmJihlLnJlbGF0ZWRUYXJnZXQ9dT09PWUudGFyZ2V0P24udG9F
bGVtZW50OnUpLGUud2hpY2h8fHM9PT10fHwoZS53aGljaD0xJnM/MToyJnM/
Mzo0JnM/MjowKSxlfX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNs
aWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGIubm9kZU5hbWUodGhp
cywiaW5wdXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGlj
az8odGhpcy5jbGljaygpLCExKTp0fX0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rp
b24oKXtpZih0aGlzIT09by5hY3RpdmVFbGVtZW50JiZ0aGlzLmZvY3VzKXRy
eXtyZXR1cm4gdGhpcy5mb2N1cygpLCExfWNhdGNoKGUpe319LGRlbGVnYXRl
VHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcz09PW8uYWN0aXZlRWxlbWVudCYmdGhpcy5ibHVyPyh0aGlzLmJs
dXIoKSwhMSk6dH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGJlZm9yZXVu
bG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe2UucmVzdWx0IT09dCYm
KGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX0sc2lt
dWxhdGU6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9Yi5leHRlbmQobmV3IGIu
RXZlbnQsbix7dHlwZTplLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6
e319KTtyP2IuZXZlbnQudHJpZ2dlcihpLG51bGwsdCk6Yi5ldmVudC5kaXNw
YXRjaC5jYWxsKHQsaSksaS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmbi5wcmV2
ZW50RGVmYXVsdCgpfX0sYi5yZW1vdmVFdmVudD1vLnJlbW92ZUV2ZW50TGlz
dGVuZXI/ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYm
ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSl9OmZ1bmN0aW9uKGUsdCxu
KXt2YXIgcj0ib24iK3Q7ZS5kZXRhY2hFdmVudCYmKHR5cGVvZiBlW3JdPT09
aSYmKGVbcl09bnVsbCksZS5kZXRhY2hFdmVudChyLG4pKX0sYi5FdmVudD1m
dW5jdGlvbihlLG4pe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYi5FdmVudD8o
ZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50
eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRl
ZHx8ZS5yZXR1cm5WYWx1ZT09PSExfHxlLmdldFByZXZlbnREZWZhdWx0JiZl
LmdldFByZXZlbnREZWZhdWx0KCk/aXQ6b3QpOnRoaXMudHlwZT1lLG4mJmIu
ZXh0ZW5kKHRoaXMsbiksdGhpcy50aW1lU3RhbXA9ZSYmZS50aW1lU3RhbXB8
fGIubm93KCksdGhpc1tiLmV4cGFuZG9dPSEwLHQpOm5ldyBiLkV2ZW50KGUs
bil9LGIuRXZlbnQucHJvdG90eXBlPXtpc0RlZmF1bHRQcmV2ZW50ZWQ6b3Qs
aXNQcm9wYWdhdGlvblN0b3BwZWQ6b3QsaXNJbW1lZGlhdGVQcm9wYWdhdGlv
blN0b3BwZWQ6b3QscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10
aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9aXQs
ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0
dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZD1pdCxlJiYoZS5zdG9wUHJvcGFnYXRpb24mJmUuc3RvcFByb3BhZ2F0aW9u
KCksZS5jYW5jZWxCdWJibGU9ITApfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRp
b246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9w
cGVkPWl0LHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxiLmVhY2goe21vdXNl
ZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxmdW5j
dGlvbihlLHQpe2IuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOnQs
YmluZFR5cGU6dCxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIG4scj10aGlzLGk9
ZS5yZWxhdGVkVGFyZ2V0LG89ZS5oYW5kbGVPYmo7CnJldHVybighaXx8aSE9
PXImJiFiLmNvbnRhaW5zKHIsaSkpJiYoZS50eXBlPW8ub3JpZ1R5cGUsbj1v
LmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT10KSxufX19
KSxiLnN1cHBvcnQuc3VibWl0QnViYmxlc3x8KGIuZXZlbnQuc3BlY2lhbC5z
dWJtaXQ9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIGIubm9kZU5hbWUodGhp
cywiZm9ybSIpPyExOihiLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0
IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGUpe3ZhciBuPWUudGFyZ2V0
LHI9Yi5ub2RlTmFtZShuLCJpbnB1dCIpfHxiLm5vZGVOYW1lKG4sImJ1dHRv
biIpP24uZm9ybTp0O3ImJiFiLl9kYXRhKHIsInN1Ym1pdEJ1YmJsZXMiKSYm
KGIuZXZlbnQuYWRkKHIsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihlKXtl
Ll9zdWJtaXRfYnViYmxlPSEwfSksYi5fZGF0YShyLCJzdWJtaXRCdWJibGVz
IiwhMCkpfSksdCl9LHBvc3REaXNwYXRjaDpmdW5jdGlvbihlKXtlLl9zdWJt
aXRfYnViYmxlJiYoZGVsZXRlIGUuX3N1Ym1pdF9idWJibGUsdGhpcy5wYXJl
bnROb2RlJiYhZS5pc1RyaWdnZXImJmIuZXZlbnQuc2ltdWxhdGUoInN1Ym1p
dCIsdGhpcy5wYXJlbnROb2RlLGUsITApKX0sdGVhcmRvd246ZnVuY3Rpb24o
KXtyZXR1cm4gYi5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6KGIuZXZlbnQu
cmVtb3ZlKHRoaXMsIi5fc3VibWl0IiksdCl9fSksYi5zdXBwb3J0LmNoYW5n
ZUJ1YmJsZXN8fChiLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5j
dGlvbigpe3JldHVybiBaLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2ti
b3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKGIuZXZl
bnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9u
KGUpeyJjaGVja2VkIj09PWUub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUm
Jih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksYi5ldmVudC5hZGQodGhpcywi
Y2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oZSl7dGhpcy5fanVzdF9jaGFuZ2Vk
JiYhZS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLGIuZXZl
bnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxlLCEwKX0pKSwhMSk6KGIuZXZl
bnQuYWRkKHRoaXMsImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLGZ1bmN0aW9u
KGUpe3ZhciB0PWUudGFyZ2V0O1oudGVzdCh0Lm5vZGVOYW1lKSYmIWIuX2Rh
dGEodCwiY2hhbmdlQnViYmxlcyIpJiYoYi5ldmVudC5hZGQodCwiY2hhbmdl
Ll9jaGFuZ2UiLGZ1bmN0aW9uKGUpeyF0aGlzLnBhcmVudE5vZGV8fGUuaXNT
aW11bGF0ZWR8fGUuaXNUcmlnZ2VyfHxiLmV2ZW50LnNpbXVsYXRlKCJjaGFu
Z2UiLHRoaXMucGFyZW50Tm9kZSxlLCEwKX0pLGIuX2RhdGEodCwiY2hhbmdl
QnViYmxlcyIsITApKX0pLHQpfSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIG49
ZS50YXJnZXQ7cmV0dXJuIHRoaXMhPT1ufHxlLmlzU2ltdWxhdGVkfHxlLmlz
VHJpZ2dlcnx8InJhZGlvIiE9PW4udHlwZSYmImNoZWNrYm94IiE9PW4udHlw
ZT9lLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0
fSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBiLmV2ZW50LnJlbW92ZSh0
aGlzLCIuX2NoYW5nZSIpLCFaLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksYi5z
dXBwb3J0LmZvY3VzaW5CdWJibGVzfHxiLmVhY2goe2ZvY3VzOiJmb2N1c2lu
IixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPWZ1
bmN0aW9uKGUpe2IuZXZlbnQuc2ltdWxhdGUodCxlLnRhcmdldCxiLmV2ZW50
LmZpeChlKSwhMCl9O2IuZXZlbnQuc3BlY2lhbFt0XT17c2V0dXA6ZnVuY3Rp
b24oKXswPT09bisrJiZvLmFkZEV2ZW50TGlzdGVuZXIoZSxyLCEwKX0sdGVh
cmRvd246ZnVuY3Rpb24oKXswPT09LS1uJiZvLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoZSxyLCEwKX19fSksYi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGUsbixy
LGksbyl7dmFyIGEscztpZigib2JqZWN0Ij09dHlwZW9mIGUpeyJzdHJpbmci
IT10eXBlb2YgbiYmKHI9cnx8bixuPXQpO2ZvcihhIGluIGUpdGhpcy5vbihh
LG4scixlW2FdLG8pO3JldHVybiB0aGlzfWlmKG51bGw9PXImJm51bGw9PWk/
KGk9bixyPW49dCk6bnVsbD09aSYmKCJzdHJpbmciPT10eXBlb2Ygbj8oaT1y
LHI9dCk6KGk9cixyPW4sbj10KSksaT09PSExKWk9b3Q7ZWxzZSBpZighaSly
ZXR1cm4gdGhpcztyZXR1cm4gMT09PW8mJihzPWksaT1mdW5jdGlvbihlKXty
ZXR1cm4gYigpLm9mZihlKSxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saS5n
dWlkPXMuZ3VpZHx8KHMuZ3VpZD1iLmd1aWQrKykpLHRoaXMuZWFjaChmdW5j
dGlvbigpe2IuZXZlbnQuYWRkKHRoaXMsZSxpLHIsbil9KX0sb25lOmZ1bmN0
aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKGUsdCxuLHIsMSl9LG9mZjpm
dW5jdGlvbihlLG4scil7dmFyIGksbztpZihlJiZlLnByZXZlbnREZWZhdWx0
JiZlLmhhbmRsZU9iailyZXR1cm4gaT1lLmhhbmRsZU9iaixiKGUuZGVsZWdh
dGVUYXJnZXQpLm9mZihpLm5hbWVzcGFjZT9pLm9yaWdUeXBlKyIuIitpLm5h
bWVzcGFjZTppLm9yaWdUeXBlLGkuc2VsZWN0b3IsaS5oYW5kbGVyKSx0aGlz
O2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9yKG8gaW4gZSl0aGlzLm9mZihv
LG4sZVtvXSk7cmV0dXJuIHRoaXN9cmV0dXJuKG49PT0hMXx8ImZ1bmN0aW9u
Ij09dHlwZW9mIG4pJiYocj1uLG49dCkscj09PSExJiYocj1vdCksdGhpcy5l
YWNoKGZ1bmN0aW9uKCl7Yi5ldmVudC5yZW1vdmUodGhpcyxlLHIsbil9KX0s
YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQs
bil9LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51
bGwsdCl9LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlz
Lm9uKHQsZSxuLHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlz
Lm9mZih0LGV8fCIqKiIsbil9LHRyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yi5ldmVudC50cmlnZ2VyKGUsdCx0
aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLG4pe3ZhciByPXRo
aXNbMF07cmV0dXJuIHI/Yi5ldmVudC50cmlnZ2VyKGUsbixyLCEwKTp0fX0p
LGZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbCxjLHAsZixkLGgs
ZyxtLHksdix4PSJzaXp6bGUiKy1uZXcgRGF0ZSx3PWUuZG9jdW1lbnQsVD17
fSxOPTAsQz0wLGs9aXQoKSxFPWl0KCksUz1pdCgpLEE9dHlwZW9mIHQsaj0x
PDwzMSxEPVtdLEw9RC5wb3AsSD1ELnB1c2gscT1ELnNsaWNlLE09RC5pbmRl
eE9mfHxmdW5jdGlvbihlKXt2YXIgdD0wLG49dGhpcy5sZW5ndGg7Zm9yKDtu
PnQ7dCsrKWlmKHRoaXNbdF09PT1lKXJldHVybiB0O3JldHVybi0xfSxfPSJb
XFx4MjBcXHRcXHJcXG5cXGZdIixGPSIoPzpcXFxcLnxbXFx3LV18W15cXHgw
MC1cXHhhMF0pKyIsTz1GLnJlcGxhY2UoInciLCJ3IyIpLEI9IihbKl4kfCF+
XT89KSIsUD0iXFxbIitfKyIqKCIrRisiKSIrXysiKig/OiIrQitfKyIqKD86
KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woIitPKyIpfCl8KSIr
XysiKlxcXSIsUj0iOigiK0YrIikoPzpcXCgoKFsnXCJdKSgoPzpcXFxcLnxb
XlxcXFxdKSo/KVxcM3woKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1AucmVw
bGFjZSgzLDgpKyIpKil8LiopXFwpfCkiLFc9UmVnRXhwKCJeIitfKyIrfCgo
PzpefFteXFxcXF0pKD86XFxcXC4pKikiK18rIiskIiwiZyIpLCQ9UmVnRXhw
KCJeIitfKyIqLCIrXysiKiIpLEk9UmVnRXhwKCJeIitfKyIqKFtcXHgyMFxc
dFxcclxcblxcZj4rfl0pIitfKyIqIiksej1SZWdFeHAoUiksWD1SZWdFeHAo
Il4iK08rIiQiKSxVPXtJRDpSZWdFeHAoIl4jKCIrRisiKSIpLENMQVNTOlJl
Z0V4cCgiXlxcLigiK0YrIikiKSxOQU1FOlJlZ0V4cCgiXlxcW25hbWU9Wydc
Il0/KCIrRisiKVsnXCJdP1xcXSIpLFRBRzpSZWdFeHAoIl4oIitGLnJlcGxh
Y2UoInciLCJ3KiIpKyIpIiksQVRUUjpSZWdFeHAoIl4iK1ApLFBTRVVETzpS
ZWdFeHAoIl4iK1IpLENISUxEOlJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0
fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitfKyIqKGV2
ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitfKyIqKD86KFsrLV18KSIrXysi
KihcXGQrKXwpKSIrXysiKlxcKXwpIiwiaSIpLG5lZWRzQ29udGV4dDpSZWdF
eHAoIl4iK18rIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJz
dHxsYXN0KSg/OlxcKCIrXysiKigoPzotXFxkKT9cXGQqKSIrXysiKlxcKXwp
KD89W14tXXwkKSIsImkiKX0sVj0vW1x4MjBcdFxyXG5cZl0qWyt+XS8sWT0v
Xltee10rXHtccypcW25hdGl2ZSBjb2RlLyxKPS9eKD86IyhbXHctXSspfChc
dyspfFwuKFtcdy1dKykpJC8sRz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJl
YXxidXR0b24pJC9pLFE9L15oXGQkL2ksSz0vJ3xcXC9nLFo9L1w9W1x4MjBc
dFxyXG5cZl0qKFteJyJcXV0qKVtceDIwXHRcclxuXGZdKlxdL2csZXQ9L1xc
KFtcZGEtZkEtRl17MSw2fVtceDIwXHRcclxuXGZdP3wuKS9nLHR0PWZ1bmN0
aW9uKGUsdCl7dmFyIG49IjB4Iit0LTY1NTM2O3JldHVybiBuIT09bj90OjA+
bj9TdHJpbmcuZnJvbUNoYXJDb2RlKG4rNjU1MzYpOlN0cmluZy5mcm9tQ2hh
ckNvZGUoNTUyOTZ8bj4+MTAsNTYzMjB8MTAyMyZuKX07dHJ5e3EuY2FsbCh3
LmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNh
dGNoKG50KXtxPWZ1bmN0aW9uKGUpe3ZhciB0LG49W107d2hpbGUodD10aGlz
W2UrK10pbi5wdXNoKHQpO3JldHVybiBufX1mdW5jdGlvbiBydChlKXtyZXR1
cm4gWS50ZXN0KGUrIiIpfWZ1bmN0aW9uIGl0KCl7dmFyIGUsdD1bXTtyZXR1
cm4gZT1mdW5jdGlvbihuLHIpe3JldHVybiB0LnB1c2gobis9IiAiKT5pLmNh
Y2hlTGVuZ3RoJiZkZWxldGUgZVt0LnNoaWZ0KCldLGVbbl09cn19ZnVuY3Rp
b24gb3QoZSl7cmV0dXJuIGVbeF09ITAsZX1mdW5jdGlvbiBhdChlKXt2YXIg
dD1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RyeXtyZXR1cm4gZSh0KX1jYXRj
aChuKXtyZXR1cm4hMX1maW5hbGx5e3Q9bnVsbH19ZnVuY3Rpb24gc3QoZSx0
LG4scil7dmFyIGksbyxhLHMsdSxsLGYsZyxtLHY7aWYoKHQ/dC5vd25lckRv
Y3VtZW50fHx0OncpIT09cCYmYyh0KSx0PXR8fHAsbj1ufHxbXSwhZXx8InN0
cmluZyIhPXR5cGVvZiBlKXJldHVybiBuO2lmKDEhPT0ocz10Lm5vZGVUeXBl
KSYmOSE9PXMpcmV0dXJuW107aWYoIWQmJiFyKXtpZihpPUouZXhlYyhlKSlp
ZihhPWlbMV0pe2lmKDk9PT1zKXtpZihvPXQuZ2V0RWxlbWVudEJ5SWQoYSks
IW98fCFvLnBhcmVudE5vZGUpcmV0dXJuIG47aWYoby5pZD09PWEpcmV0dXJu
IG4ucHVzaChvKSxufWVsc2UgaWYodC5vd25lckRvY3VtZW50JiYobz10Lm93
bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkpJiZ5KHQsbykmJm8uaWQ9
PT1hKXJldHVybiBuLnB1c2gobyksbn1lbHNle2lmKGlbMl0pcmV0dXJuIEgu
YXBwbHkobixxLmNhbGwodC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKSwwKSks
bjtpZigoYT1pWzNdKSYmVC5nZXRCeUNsYXNzTmFtZSYmdC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4scS5jYWxsKHQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShhKSwwKSksbn1pZihULnFzYSYmIWgudGVzdChl
KSl7aWYoZj0hMCxnPXgsbT10LHY9OT09PXMmJmUsMT09PXMmJiJvYmplY3Qi
IT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtsPWZ0KGUpLChmPXQuZ2V0
QXR0cmlidXRlKCJpZCIpKT9nPWYucmVwbGFjZShLLCJcXCQmIik6dC5zZXRB
dHRyaWJ1dGUoImlkIixnKSxnPSJbaWQ9JyIrZysiJ10gIix1PWwubGVuZ3Ro
O3doaWxlKHUtLSlsW3VdPWcrZHQobFt1XSk7bT1WLnRlc3QoZSkmJnQucGFy
ZW50Tm9kZXx8dCx2PWwuam9pbigiLCIpfWlmKHYpdHJ5e3JldHVybiBILmFw
cGx5KG4scS5jYWxsKG0ucXVlcnlTZWxlY3RvckFsbCh2KSwwKSksbn1jYXRj
aChiKXt9ZmluYWxseXtmfHx0LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJl
dHVybiB3dChlLnJlcGxhY2UoVywiJDEiKSx0LG4scil9YT1zdC5pc1hNTD1m
dW5jdGlvbihlKXt2YXIgdD1lJiYoZS5vd25lckRvY3VtZW50fHxlKS5kb2N1
bWVudEVsZW1lbnQ7cmV0dXJuIHQ/IkhUTUwiIT09dC5ub2RlTmFtZTohMX0s
Yz1zdC5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt2YXIgbj1lP2Uub3duZXJE
b2N1bWVudHx8ZTp3O3JldHVybiBuIT09cCYmOT09PW4ubm9kZVR5cGUmJm4u
ZG9jdW1lbnRFbGVtZW50PyhwPW4sZj1uLmRvY3VtZW50RWxlbWVudCxkPWEo
biksVC50YWdOYW1lTm9Db21tZW50cz1hdChmdW5jdGlvbihlKXtyZXR1cm4g
ZS5hcHBlbmRDaGlsZChuLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLFQuYXR0cmlidXRlcz1hdChm
dW5jdGlvbihlKXtlLmlubmVySFRNTD0iPHNlbGVjdD48L3NlbGVjdD4iO3Zh
ciB0PXR5cGVvZiBlLmxhc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIm11bHRpcGxl
Iik7cmV0dXJuImJvb2xlYW4iIT09dCYmInN0cmluZyIhPT10fSksVC5nZXRC
eUNsYXNzTmFtZT1hdChmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9
IjxkaXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rpdj48ZGl2IGNsYXNzPSdoaWRk
ZW4nPjwvZGl2PiIsZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZlLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg/KGUubGFzdENoaWxkLmNs
YXNzTmFtZT0iZSIsMj09PWUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIp
Lmxlbmd0aCk6ITF9KSxULmdldEJ5TmFtZT1hdChmdW5jdGlvbihlKXtlLmlk
PXgrMCxlLmlubmVySFRNTD0iPGEgbmFtZT0nIit4KyInPjwvYT48ZGl2IG5h
bWU9JyIreCsiJz48L2Rpdj4iLGYuaW5zZXJ0QmVmb3JlKGUsZi5maXJzdENo
aWxkKTt2YXIgdD1uLmdldEVsZW1lbnRzQnlOYW1lJiZuLmdldEVsZW1lbnRz
QnlOYW1lKHgpLmxlbmd0aD09PTIrbi5nZXRFbGVtZW50c0J5TmFtZSh4KzAp
Lmxlbmd0aDtyZXR1cm4gVC5nZXRJZE5vdE5hbWU9IW4uZ2V0RWxlbWVudEJ5
SWQoeCksZi5yZW1vdmVDaGlsZChlKSx0fSksaS5hdHRySGFuZGxlPWF0KGZ1
bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9h
PiIsZS5maXJzdENoaWxkJiZ0eXBlb2YgZS5maXJzdENoaWxkLmdldEF0dHJp
YnV0ZSE9PUEmJiIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhy
ZWYiKX0pP3t9OntocmVmOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJp
YnV0ZSgiaHJlZiIsMil9LHR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0
QXR0cmlidXRlKCJ0eXBlIil9fSxULmdldElkTm90TmFtZT8oaS5maW5kLklE
PWZ1bmN0aW9uKGUsdCl7aWYodHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQhPT1B
JiYhZCl7dmFyIG49dC5nZXRFbGVtZW50QnlJZChlKTtyZXR1cm4gbiYmbi5w
YXJlbnROb2RlP1tuXTpbXX19LGkuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3Zh
ciB0PWUucmVwbGFjZShldCx0dCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVy
biBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSk6KGkuZmluZC5JRD1mdW5j
dGlvbihlLG4pe2lmKHR5cGVvZiBuLmdldEVsZW1lbnRCeUlkIT09QSYmIWQp
e3ZhciByPW4uZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIHI/ci5pZD09PWV8
fHR5cGVvZiByLmdldEF0dHJpYnV0ZU5vZGUhPT1BJiZyLmdldEF0dHJpYnV0
ZU5vZGUoImlkIikudmFsdWU9PT1lP1tyXTp0OltdfX0saS5maWx0ZXIuSUQ9
ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKGV0LHR0KTtyZXR1cm4gZnVu
Y3Rpb24oZSl7dmFyIG49dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9PUEm
JmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gbiYmbi52YWx1ZT09
PXR9fSksaS5maW5kLlRBRz1ULnRhZ05hbWVOb0NvbW1lbnRzP2Z1bmN0aW9u
KGUsbil7cmV0dXJuIHR5cGVvZiBuLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09
QT9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOnR9OmZ1bmN0aW9uKGUsdCl7
dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lm
KCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1
c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGkuZmluZC5OQU1FPVQuZ2V0QnlO
YW1lJiZmdW5jdGlvbihlLG4pe3JldHVybiB0eXBlb2Ygbi5nZXRFbGVtZW50
c0J5TmFtZSE9PUE/bi5nZXRFbGVtZW50c0J5TmFtZShuYW1lKTp0fSxpLmZp
bmQuQ0xBU1M9VC5nZXRCeUNsYXNzTmFtZSYmZnVuY3Rpb24oZSxuKXtyZXR1
cm4gdHlwZW9mIG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT09PUF8fGQ/dDpu
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSl9LGc9W10saD1bIjpmb2N1cyJd
LChULnFzYT1ydChuLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGF0KGZ1bmN0aW9u
KGUpe2UuaW5uZXJIVE1MPSI8c2VsZWN0PjxvcHRpb24gc2VsZWN0ZWQ9Jyc+
PC9vcHRpb24+PC9zZWxlY3Q+IixlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxl
Y3RlZF0iKS5sZW5ndGh8fGgucHVzaCgiXFxbIitfKyIqKD86Y2hlY2tlZHxk
aXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3RlZHx2YWx1
ZSkiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxo
LnB1c2goIjpjaGVja2VkIil9KSxhdChmdW5jdGlvbihlKXtlLmlubmVySFRN
TD0iPGlucHV0IHR5cGU9J2hpZGRlbicgaT0nJy8+IixlLnF1ZXJ5U2VsZWN0
b3JBbGwoIltpXj0nJ10iKS5sZW5ndGgmJmgucHVzaCgiWypeJF09IitfKyIq
KD86XCJcInwnJykiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIiku
bGVuZ3RofHxoLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVy
eVNlbGVjdG9yQWxsKCIqLDp4IiksaC5wdXNoKCIsLio6Iil9KSksKFQubWF0
Y2hlc1NlbGVjdG9yPXJ0KG09Zi5tYXRjaGVzU2VsZWN0b3J8fGYubW96TWF0
Y2hlc1NlbGVjdG9yfHxmLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8Zi5vTWF0
Y2hlc1NlbGVjdG9yfHxmLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmF0KGZ1bmN0
aW9uKGUpe1QuZGlzY29ubmVjdGVkTWF0Y2g9bS5jYWxsKGUsImRpdiIpLG0u
Y2FsbChlLCJbcyE9JyddOngiKSxnLnB1c2goIiE9IixSKX0pLGg9UmVnRXhw
KGguam9pbigifCIpKSxnPVJlZ0V4cChnLmpvaW4oInwiKSkseT1ydChmLmNv
bnRhaW5zKXx8Zi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9mdW5jdGlvbihl
LHQpe3ZhciBuPTk9PT1lLm5vZGVUeXBlP2UuZG9jdW1lbnRFbGVtZW50OmUs
cj10JiZ0LnBhcmVudE5vZGU7cmV0dXJuIGU9PT1yfHwhKCFyfHwxIT09ci5u
b2RlVHlwZXx8IShuLmNvbnRhaW5zP24uY29udGFpbnMocik6ZS5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbiYmMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bihyKSkpfTpmdW5jdGlvbihlLHQpe2lmKHQpd2hpbGUodD10LnBhcmVudE5v
ZGUpaWYodD09PWUpcmV0dXJuITA7cmV0dXJuITF9LHY9Zi5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbj9mdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiBlPT09
dD8odT0hMCwwKToocj10LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiZlLmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uJiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKHQpKT8xJnJ8fGUucGFyZW50Tm9kZSYmMTE9PT1lLnBhcmVudE5vZGUu
bm9kZVR5cGU/ZT09PW58fHkodyxlKT8tMTp0PT09bnx8eSh3LHQpPzE6MDo0
JnI/LTE6MTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjF9OmZ1bmN0
aW9uKGUsdCl7dmFyIHIsaT0wLG89ZS5wYXJlbnROb2RlLGE9dC5wYXJlbnRO
b2RlLHM9W2VdLGw9W3RdO2lmKGU9PT10KXJldHVybiB1PSEwLDA7aWYoIW98
fCFhKXJldHVybiBlPT09bj8tMTp0PT09bj8xOm8/LTE6YT8xOjA7aWYobz09
PWEpcmV0dXJuIHV0KGUsdCk7cj1lO3doaWxlKHI9ci5wYXJlbnROb2RlKXMu
dW5zaGlmdChyKTtyPXQ7d2hpbGUocj1yLnBhcmVudE5vZGUpbC51bnNoaWZ0
KHIpO3doaWxlKHNbaV09PT1sW2ldKWkrKztyZXR1cm4gaT91dChzW2ldLGxb
aV0pOnNbaV09PT13Py0xOmxbaV09PT13PzE6MH0sdT0hMSxbMCwwXS5zb3J0
KHYpLFQuZGV0ZWN0RHVwbGljYXRlcz11LHApOnB9LHN0Lm1hdGNoZXM9ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gc3QoZSxudWxsLG51bGwsdCl9LHN0Lm1hdGNo
ZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKChlLm93bmVyRG9jdW1lbnR8
fGUpIT09cCYmYyhlKSx0PXQucmVwbGFjZShaLCI9JyQxJ10iKSwhKCFULm1h
dGNoZXNTZWxlY3Rvcnx8ZHx8ZyYmZy50ZXN0KHQpfHxoLnRlc3QodCkpKXRy
eXt2YXIgbj1tLmNhbGwoZSx0KTtpZihufHxULmRpc2Nvbm5lY3RlZE1hdGNo
fHxlLmRvY3VtZW50JiYxMSE9PWUuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJu
IG59Y2F0Y2gocil7fXJldHVybiBzdCh0LHAsbnVsbCxbZV0pLmxlbmd0aD4w
fSxzdC5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybihlLm93bmVyRG9j
dW1lbnR8fGUpIT09cCYmYyhlKSx5KGUsdCl9LHN0LmF0dHI9ZnVuY3Rpb24o
ZSx0KXt2YXIgbjtyZXR1cm4oZS5vd25lckRvY3VtZW50fHxlKSE9PXAmJmMo
ZSksZHx8KHQ9dC50b0xvd2VyQ2FzZSgpKSwobj1pLmF0dHJIYW5kbGVbdF0p
P24oZSk6ZHx8VC5hdHRyaWJ1dGVzP2UuZ2V0QXR0cmlidXRlKHQpOigobj1l
LmdldEF0dHJpYnV0ZU5vZGUodCkpfHxlLmdldEF0dHJpYnV0ZSh0KSkmJmVb
dF09PT0hMD90Om4mJm4uc3BlY2lmaWVkP24udmFsdWU6bnVsbH0sc3QuZXJy
b3I9ZnVuY3Rpb24oZSl7dGhyb3cgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5y
ZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHN0LnVuaXF1ZVNvcnQ9ZnVu
Y3Rpb24oZSl7dmFyIHQsbj1bXSxyPTEsaT0wO2lmKHU9IVQuZGV0ZWN0RHVw
bGljYXRlcyxlLnNvcnQodiksdSl7Zm9yKDt0PWVbcl07cisrKXQ9PT1lW3It
MV0mJihpPW4ucHVzaChyKSk7d2hpbGUoaS0tKWUuc3BsaWNlKG5baV0sMSl9
cmV0dXJuIGV9O2Z1bmN0aW9uIHV0KGUsdCl7dmFyIG49dCYmZSxyPW4mJih+
dC5zb3VyY2VJbmRleHx8aiktKH5lLnNvdXJjZUluZGV4fHxqKTtpZihyKXJl
dHVybiByO2lmKG4pd2hpbGUobj1uLm5leHRTaWJsaW5nKWlmKG49PT10KXJl
dHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gbHQoZSl7cmV0dXJuIGZ1
bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1
cm4iaW5wdXQiPT09biYmdC50eXBlPT09ZX19ZnVuY3Rpb24gY3QoZSl7cmV0
dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTtyZXR1cm4oImlucHV0Ij09PW58fCJidXR0b24iPT09bikmJnQudHlwZT09
PWV9fWZ1bmN0aW9uIHB0KGUpe3JldHVybiBvdChmdW5jdGlvbih0KXtyZXR1
cm4gdD0rdCxvdChmdW5jdGlvbihuLHIpe3ZhciBpLG89ZShbXSxuLmxlbmd0
aCx0KSxhPW8ubGVuZ3RoO3doaWxlKGEtLSluW2k9b1thXV0mJihuW2ldPSEo
cltpXT1uW2ldKSl9KX0pfW89c3QuZ2V0VGV4dD1mdW5jdGlvbihlKXt2YXIg
dCxuPSIiLHI9MCxpPWUubm9kZVR5cGU7aWYoaSl7aWYoMT09PWl8fDk9PT1p
fHwxMT09PWkpe2lmKCJzdHJpbmciPT10eXBlb2YgZS50ZXh0Q29udGVudCly
ZXR1cm4gZS50ZXh0Q29udGVudDtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUu
bmV4dFNpYmxpbmcpbis9byhlKX1lbHNlIGlmKDM9PT1pfHw0PT09aSlyZXR1
cm4gZS5ub2RlVmFsdWV9ZWxzZSBmb3IoO3Q9ZVtyXTtyKyspbis9byh0KTty
ZXR1cm4gbn0saT1zdC5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0
ZVBzZXVkbzpvdCxtYXRjaDpVLGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGly
OiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUi
fSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntk
aXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rp
b24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKGV0LHR0KSxlWzNdPShl
WzRdfHxlWzVdfHwiIikucmVwbGFjZShldCx0dCksIn49Ij09PWVbMl0mJihl
WzNdPSIgIitlWzNdKyIgIiksZS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlv
bihlKXtyZXR1cm4gZVsxXT1lWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1l
WzFdLnNsaWNlKDAsMyk/KGVbM118fHN0LmVycm9yKGVbMF0pLGVbNF09Kyhl
WzRdP2VbNV0rKGVbNl18fDEpOjIqKCJldmVuIj09PWVbM118fCJvZGQiPT09
ZVszXSkpLGVbNV09KyhlWzddK2VbOF18fCJvZGQiPT09ZVszXSkpOmVbM10m
JnN0LmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2YXIgdCxu
PSFlWzVdJiZlWzJdO3JldHVybiBVLkNISUxELnRlc3QoZVswXSk/bnVsbDoo
ZVs0XT9lWzJdPWVbNF06biYmei50ZXN0KG4pJiYodD1mdChuLCEwKSkmJih0
PW4uaW5kZXhPZigiKSIsbi5sZW5ndGgtdCktbi5sZW5ndGgpJiYoZVswXT1l
WzBdLnNsaWNlKDAsdCksZVsyXT1uLnNsaWNlKDAsdCkpLGUuc2xpY2UoMCwz
KSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXtyZXR1cm4iKiI9PT1lP2Z1
bmN0aW9uKCl7cmV0dXJuITB9OihlPWUucmVwbGFjZShldCx0dCkudG9Mb3dl
ckNhc2UoKSxmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlTmFtZSYmdC5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpPT09ZX0pfSxDTEFTUzpmdW5jdGlvbihlKXt2
YXIgdD1rW2UrIiAiXTtyZXR1cm4gdHx8KHQ9UmVnRXhwKCIoXnwiK18rIiki
K2UrIigiK18rInwkKSIpKSYmayhlLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRl
c3QoZS5jbGFzc05hbWV8fHR5cGVvZiBlLmdldEF0dHJpYnV0ZSE9PUEmJmUu
Z2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihl
LHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBpPXN0LmF0dHIocixlKTty
ZXR1cm4gbnVsbD09aT8iIT0iPT09dDp0PyhpKz0iIiwiPSI9PT10P2k9PT1u
OiIhPSI9PT10P2khPT1uOiJePSI9PT10P24mJjA9PT1pLmluZGV4T2Yobik6
Iio9Ij09PXQ/biYmaS5pbmRleE9mKG4pPi0xOiIkPSI9PT10P24mJmkuc2xp
Y2UoLW4ubGVuZ3RoKT09PW46In49Ij09PXQ/KCIgIitpKyIgIikuaW5kZXhP
ZihuKT4tMToifD0iPT09dD9pPT09bnx8aS5zbGljZSgwLG4ubGVuZ3RoKzEp
PT09bisiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24oZSx0LG4scixpKXt2
YXIgbz0ibnRoIiE9PWUuc2xpY2UoMCwzKSxhPSJsYXN0IiE9PWUuc2xpY2Uo
LTQpLHM9Im9mLXR5cGUiPT09dDtyZXR1cm4gMT09PXImJjA9PT1pP2Z1bmN0
aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbih0LG4sdSl7
dmFyIGwsYyxwLGYsZCxoLGc9byE9PWE/Im5leHRTaWJsaW5nIjoicHJldmlv
dXNTaWJsaW5nIixtPXQucGFyZW50Tm9kZSx5PXMmJnQubm9kZU5hbWUudG9M
b3dlckNhc2UoKSx2PSF1JiYhcztpZihtKXtpZihvKXt3aGlsZShnKXtwPXQ7
d2hpbGUocD1wW2ddKWlmKHM/cC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09
eToxPT09cC5ub2RlVHlwZSlyZXR1cm4hMTtoPWc9Im9ubHkiPT09ZSYmIWgm
JiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYoaD1bYT9tLmZpcnN0Q2hpbGQ6
bS5sYXN0Q2hpbGRdLGEmJnYpe2M9bVt4XXx8KG1beF09e30pLGw9Y1tlXXx8
W10sZD1sWzBdPT09TiYmbFsxXSxmPWxbMF09PT1OJiZsWzJdLHA9ZCYmbS5j
aGlsZE5vZGVzW2RdO3doaWxlKHA9KytkJiZwJiZwW2ddfHwoZj1kPTApfHxo
LnBvcCgpKWlmKDE9PT1wLm5vZGVUeXBlJiYrK2YmJnA9PT10KXtjW2VdPVtO
LGQsZl07YnJlYWt9fWVsc2UgaWYodiYmKGw9KHRbeF18fCh0W3hdPXt9KSlb
ZV0pJiZsWzBdPT09TilmPWxbMV07ZWxzZSB3aGlsZShwPSsrZCYmcCYmcFtn
XXx8KGY9ZD0wKXx8aC5wb3AoKSlpZigocz9wLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk9PT15OjE9PT1wLm5vZGVUeXBlKSYmKytmJiYodiYmKChwW3hdfHwo
cFt4XT17fSkpW2VdPVtOLGZdKSxwPT09dCkpYnJlYWs7cmV0dXJuIGYtPWks
Zj09PXJ8fDA9PT1mJXImJmYvcj49MH19fSxQU0VVRE86ZnVuY3Rpb24oZSx0
KXt2YXIgbixyPWkucHNldWRvc1tlXXx8aS5zZXRGaWx0ZXJzW2UudG9Mb3dl
ckNhc2UoKV18fHN0LmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrZSk7
cmV0dXJuIHJbeF0/cih0KTpyLmxlbmd0aD4xPyhuPVtlLGUsIiIsdF0saS5z
ZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/b3Qo
ZnVuY3Rpb24oZSxuKXt2YXIgaSxvPXIoZSx0KSxhPW8ubGVuZ3RoO3doaWxl
KGEtLSlpPU0uY2FsbChlLG9bYV0pLGVbaV09IShuW2ldPW9bYV0pfSk6ZnVu
Y3Rpb24oZSl7cmV0dXJuIHIoZSwwLG4pfSk6cn19LHBzZXVkb3M6e25vdDpv
dChmdW5jdGlvbihlKXt2YXIgdD1bXSxuPVtdLHI9cyhlLnJlcGxhY2UoVywi
JDEiKSk7cmV0dXJuIHJbeF0/b3QoZnVuY3Rpb24oZSx0LG4saSl7dmFyIG8s
YT1yKGUsbnVsbCxpLFtdKSxzPWUubGVuZ3RoO3doaWxlKHMtLSkobz1hW3Nd
KSYmKGVbc109ISh0W3NdPW8pKX0pOmZ1bmN0aW9uKGUsaSxvKXtyZXR1cm4g
dFswXT1lLHIodCxudWxsLG8sbiksIW4ucG9wKCl9fSksaGFzOm90KGZ1bmN0
aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gc3QoZSx0KS5sZW5n
dGg+MH19KSxjb250YWluczpvdChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rp
b24odCl7cmV0dXJuKHQudGV4dENvbnRlbnR8fHQuaW5uZXJUZXh0fHxvKHQp
KS5pbmRleE9mKGUpPi0xfX0pLGxhbmc6b3QoZnVuY3Rpb24oZSl7cmV0dXJu
IFgudGVzdChlfHwiIil8fHN0LmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAi
K2UpLGU9ZS5yZXBsYWNlKGV0LHR0KS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9u
KHQpe3ZhciBuO2RvIGlmKG49ZD90LmdldEF0dHJpYnV0ZSgieG1sOmxhbmci
KXx8dC5nZXRBdHRyaWJ1dGUoImxhbmciKTp0LmxhbmcpcmV0dXJuIG49bi50
b0xvd2VyQ2FzZSgpLG49PT1lfHwwPT09bi5pbmRleE9mKGUrIi0iKTt3aGls
ZSgodD10LnBhcmVudE5vZGUpJiYxPT09dC5ub2RlVHlwZSk7cmV0dXJuITF9
fSksdGFyZ2V0OmZ1bmN0aW9uKHQpe3ZhciBuPWUubG9jYXRpb24mJmUubG9j
YXRpb24uaGFzaDtyZXR1cm4gbiYmbi5zbGljZSgxKT09PXQuaWR9LHJvb3Q6
ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1mfSxmb2N1czpmdW5jdGlvbihlKXty
ZXR1cm4gZT09PXAuYWN0aXZlRWxlbWVudCYmKCFwLmhhc0ZvY3VzfHxwLmhh
c0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxl
bmFibGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPT09ITF9LGRp
c2FibGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPT09ITB9LGNo
ZWNrZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpO3JldHVybiJpbnB1dCI9PT10JiYhIWUuY2hlY2tlZHx8Im9wdGlvbiI9
PT10JiYhIWUuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVy
biBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGUu
c2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oZSl7Zm9yKGU9ZS5maXJz
dENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKWlmKGUubm9kZU5hbWU+IkAifHwz
PT09ZS5ub2RlVHlwZXx8ND09PWUubm9kZVR5cGUpcmV0dXJuITE7cmV0dXJu
ITB9LHBhcmVudDpmdW5jdGlvbihlKXtyZXR1cm4haS5wc2V1ZG9zLmVtcHR5
KGUpfSxoZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIFEudGVzdChlLm5vZGVO
YW1lKX0saW5wdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEcudGVzdChlLm5vZGVO
YW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9M
b3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09dCYmImJ1dHRvbiI9PT1lLnR5
cGV8fCJidXR0b24iPT09dH0sdGV4dDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1
cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9
PT1lLnR5cGUmJihudWxsPT0odD1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8
dC50b0xvd2VyQ2FzZSgpPT09ZS50eXBlKX0sZmlyc3Q6cHQoZnVuY3Rpb24o
KXtyZXR1cm5bMF19KSxsYXN0OnB0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuW3Qt
MV19KSxlcTpwdChmdW5jdGlvbihlLHQsbil7cmV0dXJuWzA+bj9uK3Q6bl19
KSxldmVuOnB0KGZ1bmN0aW9uKGUsdCl7dmFyIG49MDtmb3IoO3Q+bjtuKz0y
KWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDpwdChmdW5jdGlvbihlLHQpe3Zh
ciBuPTE7Zm9yKDt0Pm47bis9MillLnB1c2gobik7cmV0dXJuIGV9KSxsdDpw
dChmdW5jdGlvbihlLHQsbil7dmFyIHI9MD5uP24rdDpuO2Zvcig7LS1yPj0w
OyllLnB1c2gocik7cmV0dXJuIGV9KSxndDpwdChmdW5jdGlvbihlLHQsbil7
dmFyIHI9MD5uP24rdDpuO2Zvcig7dD4rK3I7KWUucHVzaChyKTtyZXR1cm4g
ZX0pfX07Zm9yKG4gaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxw
YXNzd29yZDohMCxpbWFnZTohMH0paS5wc2V1ZG9zW25dPWx0KG4pO2Zvcihu
IGlue3N1Ym1pdDohMCxyZXNldDohMH0paS5wc2V1ZG9zW25dPWN0KG4pO2Z1
bmN0aW9uIGZ0KGUsdCl7dmFyIG4scixvLGEscyx1LGwsYz1FW2UrIiAiXTtp
ZihjKXJldHVybiB0PzA6Yy5zbGljZSgwKTtzPWUsdT1bXSxsPWkucHJlRmls
dGVyO3doaWxlKHMpeyghbnx8KHI9JC5leGVjKHMpKSkmJihyJiYocz1zLnNs
aWNlKHJbMF0ubGVuZ3RoKXx8cyksdS5wdXNoKG89W10pKSxuPSExLChyPUku
ZXhlYyhzKSkmJihuPXIuc2hpZnQoKSxvLnB1c2goe3ZhbHVlOm4sdHlwZTpy
WzBdLnJlcGxhY2UoVywiICIpfSkscz1zLnNsaWNlKG4ubGVuZ3RoKSk7Zm9y
KGEgaW4gaS5maWx0ZXIpIShyPVVbYV0uZXhlYyhzKSl8fGxbYV0mJiEocj1s
W2FdKHIpKXx8KG49ci5zaGlmdCgpLG8ucHVzaCh7dmFsdWU6bix0eXBlOmEs
bWF0Y2hlczpyfSkscz1zLnNsaWNlKG4ubGVuZ3RoKSk7aWYoIW4pYnJlYWt9
cmV0dXJuIHQ/cy5sZW5ndGg6cz9zdC5lcnJvcihlKTpFKGUsdSkuc2xpY2Uo
MCl9ZnVuY3Rpb24gZHQoZSl7dmFyIHQ9MCxuPWUubGVuZ3RoLHI9IiI7Zm9y
KDtuPnQ7dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gaHQo
ZSx0LG4pe3ZhciBpPXQuZGlyLG89biYmInBhcmVudE5vZGUiPT09aSxhPUMr
KztyZXR1cm4gdC5maXJzdD9mdW5jdGlvbih0LG4scil7d2hpbGUodD10W2ld
KWlmKDE9PT10Lm5vZGVUeXBlfHxvKXJldHVybiBlKHQsbixyKX06ZnVuY3Rp
b24odCxuLHMpe3ZhciB1LGwsYyxwPU4rIiAiK2E7aWYocyl7d2hpbGUodD10
W2ldKWlmKCgxPT09dC5ub2RlVHlwZXx8bykmJmUodCxuLHMpKXJldHVybiEw
fWVsc2Ugd2hpbGUodD10W2ldKWlmKDE9PT10Lm5vZGVUeXBlfHxvKWlmKGM9
dFt4XXx8KHRbeF09e30pLChsPWNbaV0pJiZsWzBdPT09cCl7aWYoKHU9bFsx
XSk9PT0hMHx8dT09PXIpcmV0dXJuIHU9PT0hMH1lbHNlIGlmKGw9Y1tpXT1b
cF0sbFsxXT1lKHQsbixzKXx8cixsWzFdPT09ITApcmV0dXJuITB9fWZ1bmN0
aW9uIGd0KGUpe3JldHVybiBlLmxlbmd0aD4xP2Z1bmN0aW9uKHQsbixyKXt2
YXIgaT1lLmxlbmd0aDt3aGlsZShpLS0paWYoIWVbaV0odCxuLHIpKXJldHVy
biExO3JldHVybiEwfTplWzBdfWZ1bmN0aW9uIG10KGUsdCxuLHIsaSl7dmFy
IG8sYT1bXSxzPTAsdT1lLmxlbmd0aCxsPW51bGwhPXQ7Zm9yKDt1PnM7cysr
KShvPWVbc10pJiYoIW58fG4obyxyLGkpKSYmKGEucHVzaChvKSxsJiZ0LnB1
c2gocykpO3JldHVybiBhfWZ1bmN0aW9uIHl0KGUsdCxuLHIsaSxvKXtyZXR1
cm4gciYmIXJbeF0mJihyPXl0KHIpKSxpJiYhaVt4XSYmKGk9eXQoaSxvKSks
b3QoZnVuY3Rpb24obyxhLHMsdSl7dmFyIGwsYyxwLGY9W10sZD1bXSxoPWEu
bGVuZ3RoLGc9b3x8eHQodHx8IioiLHMubm9kZVR5cGU/W3NdOnMsW10pLG09
IWV8fCFvJiZ0P2c6bXQoZyxmLGUscyx1KSx5PW4/aXx8KG8/ZTpofHxyKT9b
XTphOm07aWYobiYmbihtLHkscyx1KSxyKXtsPW10KHksZCkscihsLFtdLHMs
dSksYz1sLmxlbmd0aDt3aGlsZShjLS0pKHA9bFtjXSkmJih5W2RbY11dPSEo
bVtkW2NdXT1wKSl9aWYobyl7aWYoaXx8ZSl7aWYoaSl7bD1bXSxjPXkubGVu
Z3RoO3doaWxlKGMtLSkocD15W2NdKSYmbC5wdXNoKG1bY109cCk7aShudWxs
LHk9W10sbCx1KX1jPXkubGVuZ3RoO3doaWxlKGMtLSkocD15W2NdKSYmKGw9
aT9NLmNhbGwobyxwKTpmW2NdKT4tMSYmKG9bbF09IShhW2xdPXApKX19ZWxz
ZSB5PW10KHk9PT1hP3kuc3BsaWNlKGgseS5sZW5ndGgpOnkpLGk/aShudWxs
LGEseSx1KTpILmFwcGx5KGEseSl9KX1mdW5jdGlvbiB2dChlKXt2YXIgdCxu
LHIsbz1lLmxlbmd0aCxhPWkucmVsYXRpdmVbZVswXS50eXBlXSxzPWF8fGku
cmVsYXRpdmVbIiAiXSx1PWE/MTowLGM9aHQoZnVuY3Rpb24oZSl7cmV0dXJu
IGU9PT10fSxzLCEwKSxwPWh0KGZ1bmN0aW9uKGUpe3JldHVybiBNLmNhbGwo
dCxlKT4tMX0scywhMCksZj1bZnVuY3Rpb24oZSxuLHIpe3JldHVybiFhJiYo
cnx8biE9PWwpfHwoKHQ9bikubm9kZVR5cGU/YyhlLG4scik6cChlLG4scikp
fV07Zm9yKDtvPnU7dSsrKWlmKG49aS5yZWxhdGl2ZVtlW3VdLnR5cGVdKWY9
W2h0KGd0KGYpLG4pXTtlbHNle2lmKG49aS5maWx0ZXJbZVt1XS50eXBlXS5h
cHBseShudWxsLGVbdV0ubWF0Y2hlcyksblt4XSl7Zm9yKHI9Kyt1O28+cjty
KyspaWYoaS5yZWxhdGl2ZVtlW3JdLnR5cGVdKWJyZWFrO3JldHVybiB5dCh1
PjEmJmd0KGYpLHU+MSYmZHQoZS5zbGljZSgwLHUtMSkpLnJlcGxhY2UoVywi
JDEiKSxuLHI+dSYmdnQoZS5zbGljZSh1LHIpKSxvPnImJnZ0KGU9ZS5zbGlj
ZShyKSksbz5yJiZkdChlKSl9Zi5wdXNoKG4pfXJldHVybiBndChmKX1mdW5j
dGlvbiBidChlLHQpe3ZhciBuPTAsbz10Lmxlbmd0aD4wLGE9ZS5sZW5ndGg+
MCxzPWZ1bmN0aW9uKHMsdSxjLGYsZCl7dmFyIGgsZyxtLHk9W10sdj0wLGI9
IjAiLHg9cyYmW10sdz1udWxsIT1kLFQ9bCxDPXN8fGEmJmkuZmluZC5UQUco
IioiLGQmJnUucGFyZW50Tm9kZXx8dSksaz1OKz1udWxsPT1UPzE6TWF0aC5y
YW5kb20oKXx8LjE7Zm9yKHcmJihsPXUhPT1wJiZ1LHI9bik7bnVsbCE9KGg9
Q1tiXSk7YisrKXtpZihhJiZoKXtnPTA7d2hpbGUobT1lW2crK10paWYobSho
LHUsYykpe2YucHVzaChoKTticmVha313JiYoTj1rLHI9KytuKX1vJiYoKGg9
IW0mJmgpJiZ2LS0scyYmeC5wdXNoKGgpKX1pZih2Kz1iLG8mJmIhPT12KXtn
PTA7d2hpbGUobT10W2crK10pbSh4LHksdSxjKTtpZihzKXtpZih2PjApd2hp
bGUoYi0tKXhbYl18fHlbYl18fCh5W2JdPUwuY2FsbChmKSk7eT1tdCh5KX1I
LmFwcGx5KGYseSksdyYmIXMmJnkubGVuZ3RoPjAmJnYrdC5sZW5ndGg+MSYm
c3QudW5pcXVlU29ydChmKX1yZXR1cm4gdyYmKE49ayxsPVQpLHh9O3JldHVy
biBvP290KHMpOnN9cz1zdC5jb21waWxlPWZ1bmN0aW9uKGUsdCl7dmFyIG4s
cj1bXSxpPVtdLG89U1tlKyIgIl07aWYoIW8pe3R8fCh0PWZ0KGUpKSxuPXQu
bGVuZ3RoO3doaWxlKG4tLSlvPXZ0KHRbbl0pLG9beF0/ci5wdXNoKG8pOmku
cHVzaChvKTtvPVMoZSxidChpLHIpKX1yZXR1cm4gb307ZnVuY3Rpb24geHQo
ZSx0LG4pe3ZhciByPTAsaT10Lmxlbmd0aDtmb3IoO2k+cjtyKyspc3QoZSx0
W3JdLG4pO3JldHVybiBufWZ1bmN0aW9uIHd0KGUsdCxuLHIpe3ZhciBvLGEs
dSxsLGMscD1mdChlKTtpZighciYmMT09PXAubGVuZ3RoKXtpZihhPXBbMF09
cFswXS5zbGljZSgwKSxhLmxlbmd0aD4yJiYiSUQiPT09KHU9YVswXSkudHlw
ZSYmOT09PXQubm9kZVR5cGUmJiFkJiZpLnJlbGF0aXZlW2FbMV0udHlwZV0p
e2lmKHQ9aS5maW5kLklEKHUubWF0Y2hlc1swXS5yZXBsYWNlKGV0LHR0KSx0
KVswXSwhdClyZXR1cm4gbjtlPWUuc2xpY2UoYS5zaGlmdCgpLnZhbHVlLmxl
bmd0aCl9bz1VLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6YS5sZW5ndGg7d2hp
bGUoby0tKXtpZih1PWFbb10saS5yZWxhdGl2ZVtsPXUudHlwZV0pYnJlYWs7
aWYoKGM9aS5maW5kW2xdKSYmKHI9Yyh1Lm1hdGNoZXNbMF0ucmVwbGFjZShl
dCx0dCksVi50ZXN0KGFbMF0udHlwZSkmJnQucGFyZW50Tm9kZXx8dCkpKXtp
ZihhLnNwbGljZShvLDEpLGU9ci5sZW5ndGgmJmR0KGEpLCFlKXJldHVybiBI
LmFwcGx5KG4scS5jYWxsKHIsMCkpLG47YnJlYWt9fX1yZXR1cm4gcyhlLHAp
KHIsdCxkLG4sVi50ZXN0KGUpKSxufWkucHNldWRvcy5udGg9aS5wc2V1ZG9z
LmVxO2Z1bmN0aW9uIFR0KCl7fWkuZmlsdGVycz1UdC5wcm90b3R5cGU9aS5w
c2V1ZG9zLGkuc2V0RmlsdGVycz1uZXcgVHQsYygpLHN0LmF0dHI9Yi5hdHRy
LGIuZmluZD1zdCxiLmV4cHI9c3Quc2VsZWN0b3JzLGIuZXhwclsiOiJdPWIu
ZXhwci5wc2V1ZG9zLGIudW5pcXVlPXN0LnVuaXF1ZVNvcnQsYi50ZXh0PXN0
LmdldFRleHQsYi5pc1hNTERvYz1zdC5pc1hNTCxiLmNvbnRhaW5zPXN0LmNv
bnRhaW5zfShlKTt2YXIgYXQ9L1VudGlsJC8sc3Q9L14oPzpwYXJlbnRzfHBy
ZXYoPzpVbnRpbHxBbGwpKS8sdXQ9L14uW146I1xbXC4sXSokLyxsdD1iLmV4
cHIubWF0Y2gubmVlZHNDb250ZXh0LGN0PXtjaGlsZHJlbjohMCxjb250ZW50
czohMCxuZXh0OiEwLHByZXY6ITB9O2IuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0
aW9uKGUpe3ZhciB0LG4scixpPXRoaXMubGVuZ3RoO2lmKCJzdHJpbmciIT10
eXBlb2YgZSlyZXR1cm4gcj10aGlzLHRoaXMucHVzaFN0YWNrKGIoZSkuZmls
dGVyKGZ1bmN0aW9uKCl7Zm9yKHQ9MDtpPnQ7dCsrKWlmKGIuY29udGFpbnMo
clt0XSx0aGlzKSlyZXR1cm4hMH0pKTtmb3Iobj1bXSx0PTA7aT50O3QrKyli
LmZpbmQoZSx0aGlzW3RdLG4pO3JldHVybiBuPXRoaXMucHVzaFN0YWNrKGk+
MT9iLnVuaXF1ZShuKTpuKSxuLnNlbGVjdG9yPSh0aGlzLnNlbGVjdG9yP3Ro
aXMuc2VsZWN0b3IrIiAiOiIiKStlLG59LGhhczpmdW5jdGlvbihlKXt2YXIg
dCxuPWIoZSx0aGlzKSxyPW4ubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihm
dW5jdGlvbigpe2Zvcih0PTA7cj50O3QrKylpZihiLmNvbnRhaW5zKHRoaXMs
blt0XSkpcmV0dXJuITB9KX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
LnB1c2hTdGFjayhmdCh0aGlzLGUsITEpKX0sZmlsdGVyOmZ1bmN0aW9uKGUp
e3JldHVybiB0aGlzLnB1c2hTdGFjayhmdCh0aGlzLGUsITApKX0saXM6ZnVu
Y3Rpb24oZSl7cmV0dXJuISFlJiYoInN0cmluZyI9PXR5cGVvZiBlP2x0LnRl
c3QoZSk/YihlLHRoaXMuY29udGV4dCkuaW5kZXgodGhpc1swXSk+PTA6Yi5m
aWx0ZXIoZSx0aGlzKS5sZW5ndGg+MDp0aGlzLmZpbHRlcihlKS5sZW5ndGg+
MCl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxl
bmd0aCxvPVtdLGE9bHQudGVzdChlKXx8InN0cmluZyIhPXR5cGVvZiBlP2Io
ZSx0fHx0aGlzLmNvbnRleHQpOjA7Zm9yKDtpPnI7cisrKXtuPXRoaXNbcl07
d2hpbGUobiYmbi5vd25lckRvY3VtZW50JiZuIT09dCYmMTEhPT1uLm5vZGVU
eXBlKXtpZihhP2EuaW5kZXgobik+LTE6Yi5maW5kLm1hdGNoZXNTZWxlY3Rv
cihuLGUpKXtvLnB1c2gobik7YnJlYWt9bj1uLnBhcmVudE5vZGV9fXJldHVy
biB0aGlzLnB1c2hTdGFjayhvLmxlbmd0aD4xP2IudW5pcXVlKG8pOm8pfSxp
bmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/
Yi5pbkFycmF5KHRoaXNbMF0sYihlKSk6Yi5pbkFycmF5KGUuanF1ZXJ5P2Vb
MF06ZSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5m
aXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihlLHQp
e3ZhciBuPSJzdHJpbmciPT10eXBlb2YgZT9iKGUsdCk6Yi5tYWtlQXJyYXko
ZSYmZS5ub2RlVHlwZT9bZV06ZSkscj1iLm1lcmdlKHRoaXMuZ2V0KCksbik7
cmV0dXJuIHRoaXMucHVzaFN0YWNrKGIudW5pcXVlKHIpKX0sYWRkQmFjazpm
dW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZP
YmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSksYi5mbi5hbmRT
ZWxmPWIuZm4uYWRkQmFjaztmdW5jdGlvbiBwdChlLHQpe2RvIGU9ZVt0XTt3
aGlsZShlJiYxIT09ZS5ub2RlVHlwZSk7cmV0dXJuIGV9Yi5lYWNoKHtwYXJl
bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYx
MSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3Jl
dHVybiBiLmRpcihlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5j
dGlvbihlLHQsbil7cmV0dXJuIGIuZGlyKGUsInBhcmVudE5vZGUiLG4pfSxu
ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBwdChlLCJuZXh0U2libGluZyIpfSxw
cmV2OmZ1bmN0aW9uKGUpe3JldHVybiBwdChlLCJwcmV2aW91c1NpYmxpbmci
KX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gYi5kaXIoZSwibmV4dFNp
YmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihlKXtyZXR1cm4gYi5kaXIoZSwi
cHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7
cmV0dXJuIGIuZGlyKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gYi5kaXIoZSwicHJldmlvdXNTaWJsaW5n
IixuKX0sc2libGluZ3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuc2libGluZygo
ZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVu
Y3Rpb24oZSl7cmV0dXJuIGIuc2libGluZyhlLmZpcnN0Q2hpbGQpfSxjb250
ZW50czpmdW5jdGlvbihlKXtyZXR1cm4gYi5ub2RlTmFtZShlLCJpZnJhbWUi
KT9lLmNvbnRlbnREb2N1bWVudHx8ZS5jb250ZW50V2luZG93LmRvY3VtZW50
OmIubWVyZ2UoW10sZS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGUsdCl7Yi5m
bltlXT1mdW5jdGlvbihuLHIpe3ZhciBpPWIubWFwKHRoaXMsdCxuKTtyZXR1
cm4gYXQudGVzdChlKXx8KHI9biksciYmInN0cmluZyI9PXR5cGVvZiByJiYo
aT1iLmZpbHRlcihyLGkpKSxpPXRoaXMubGVuZ3RoPjEmJiFjdFtlXT9iLnVu
aXF1ZShpKTppLHRoaXMubGVuZ3RoPjEmJnN0LnRlc3QoZSkmJihpPWkucmV2
ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhpKX19KSxiLmV4dGVuZCh7ZmlsdGVy
OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiks
MT09PXQubGVuZ3RoP2IuZmluZC5tYXRjaGVzU2VsZWN0b3IodFswXSxlKT9b
dFswXV06W106Yi5maW5kLm1hdGNoZXMoZSx0KX0sZGlyOmZ1bmN0aW9uKGUs
bixyKXt2YXIgaT1bXSxvPWVbbl07d2hpbGUobyYmOSE9PW8ubm9kZVR5cGUm
JihyPT09dHx8MSE9PW8ubm9kZVR5cGV8fCFiKG8pLmlzKHIpKSkxPT09by5u
b2RlVHlwZSYmaS5wdXNoKG8pLG89b1tuXTtyZXR1cm4gaX0sc2libGluZzpm
dW5jdGlvbihlLHQpe3ZhciBuPVtdO2Zvcig7ZTtlPWUubmV4dFNpYmxpbmcp
MT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59fSk7
ZnVuY3Rpb24gZnQoZSx0LG4pe2lmKHQ9dHx8MCxiLmlzRnVuY3Rpb24odCkp
cmV0dXJuIGIuZ3JlcChlLGZ1bmN0aW9uKGUscil7dmFyIGk9ISF0LmNhbGwo
ZSxyLGUpO3JldHVybiBpPT09bn0pO2lmKHQubm9kZVR5cGUpcmV0dXJuIGIu
Z3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dD09PW59KTtpZigic3Ry
aW5nIj09dHlwZW9mIHQpe3ZhciByPWIuZ3JlcChlLGZ1bmN0aW9uKGUpe3Jl
dHVybiAxPT09ZS5ub2RlVHlwZX0pO2lmKHV0LnRlc3QodCkpcmV0dXJuIGIu
ZmlsdGVyKHQsciwhbik7dD1iLmZpbHRlcih0LHIpfXJldHVybiBiLmdyZXAo
ZSxmdW5jdGlvbihlKXtyZXR1cm4gYi5pbkFycmF5KGUsdCk+PTA9PT1ufSl9
ZnVuY3Rpb24gZHQoZSl7dmFyIHQ9aHQuc3BsaXQoInwiKSxuPWUuY3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpO2lmKG4uY3JlYXRlRWxlbWVudCl3aGlsZSh0
Lmxlbmd0aCluLmNyZWF0ZUVsZW1lbnQodC5wb3AoKSk7cmV0dXJuIG59dmFy
IGh0PSJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRh
fGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhl
YWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNl
Y3Rpb258c3VtbWFyeXx0aW1lfHZpZGVvIixndD0vIGpRdWVyeVxkKz0iKD86
bnVsbHxcZCspIi9nLG10PVJlZ0V4cCgiPCg/OiIraHQrIilbXFxzLz5dIiwi
aSIpLHl0PS9eXHMrLyx2dD0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGlt
Z3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dp
LGJ0PS88KFtcdzpdKykvLHh0PS88dGJvZHkvaSx3dD0vPHwmIz9cdys7LyxU
dD0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLE50PS9eKD86Y2hlY2tib3h8
cmFkaW8pJC9pLEN0PS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQu
KS9pLGt0PS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxFdD0vXnRydWVc
LyguKikvLFN0PS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0p
PlxzKiQvZyxBdD17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0
aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+Iiwi
PC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLHBhcmFt
OlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+
IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5
PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNv
bGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxl
Pjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1
bHQ6Yi5zdXBwb3J0Lmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRp
dj4iLCI8L2Rpdj4iXX0sanQ9ZHQobyksRHQ9anQuYXBwZW5kQ2hpbGQoby5j
cmVhdGVFbGVtZW50KCJkaXYiKSk7QXQub3B0Z3JvdXA9QXQub3B0aW9uLEF0
LnRib2R5PUF0LnRmb290PUF0LmNvbGdyb3VwPUF0LmNhcHRpb249QXQudGhl
YWQsQXQudGg9QXQudGQsYi5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oZSl7
cmV0dXJuIGIuYWNjZXNzKHRoaXMsZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10
P2IudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0
aGlzWzBdLm93bmVyRG9jdW1lbnR8fG8pLmNyZWF0ZVRleHROb2RlKGUpKX0s
bnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSx3cmFwQWxsOmZ1bmN0aW9uKGUp
e2lmKGIuaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KHQpe2IodGhpcykud3JhcEFsbChlLmNhbGwodGhpcyx0KSl9KTtpZih0aGlz
WzBdKXt2YXIgdD1iKGUsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5j
bG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZ0Lmluc2VydEJlZm9yZSh0
aGlzWzBdKSx0Lm1hcChmdW5jdGlvbigpe3ZhciBlPXRoaXM7d2hpbGUoZS5m
aXJzdENoaWxkJiYxPT09ZS5maXJzdENoaWxkLm5vZGVUeXBlKWU9ZS5maXJz
dENoaWxkO3JldHVybiBlfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3
cmFwSW5uZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuaXNGdW5jdGlvbihlKT90
aGlzLmVhY2goZnVuY3Rpb24odCl7Yih0aGlzKS53cmFwSW5uZXIoZS5jYWxs
KHRoaXMsdCkpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9Yih0aGlz
KSxuPXQuY29udGVudHMoKTtuLmxlbmd0aD9uLndyYXBBbGwoZSk6dC5hcHBl
bmQoZSl9KX0sd3JhcDpmdW5jdGlvbihlKXt2YXIgdD1iLmlzRnVuY3Rpb24o
ZSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihuKXtiKHRoaXMpLndyYXBB
bGwodD9lLmNhbGwodGhpcyxuKTplKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Yi5ub2RlTmFt
ZSh0aGlzLCJib2R5Iil8fGIodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGls
ZE5vZGVzKX0pLmVuZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oZSl7KDE9PT10aGlz
Lm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVU
eXBlKSYmdGhpcy5hcHBlbmRDaGlsZChlKX0pfSxwcmVwZW5kOmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9u
KGUpeygxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5
PT09dGhpcy5ub2RlVHlwZSkmJnRoaXMuaW5zZXJ0QmVmb3JlKGUsdGhpcy5m
aXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5k
b21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnRO
b2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcyl9KX0s
YWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVu
dHMsITEsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVu
dE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyl9KX0scmVt
b3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2Zvcig7bnVsbCE9KG49dGhp
c1tyXSk7cisrKSghZXx8Yi5maWx0ZXIoZSxbbl0pLmxlbmd0aD4wKSYmKHR8
fDEhPT1uLm5vZGVUeXBlfHxiLmNsZWFuRGF0YShPdChuKSksbi5wYXJlbnRO
b2RlJiYodCYmYi5jb250YWlucyhuLm93bmVyRG9jdW1lbnQsbikmJk10KE90
KG4sInNjcmlwdCIpKSxuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobikpKTty
ZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXt2YXIgZSx0PTA7Zm9yKDtu
dWxsIT0oZT10aGlzW3RdKTt0KyspezE9PT1lLm5vZGVUeXBlJiZiLmNsZWFu
RGF0YShPdChlLCExKSk7d2hpbGUoZS5maXJzdENoaWxkKWUucmVtb3ZlQ2hp
bGQoZS5maXJzdENoaWxkKTtlLm9wdGlvbnMmJmIubm9kZU5hbWUoZSwic2Vs
ZWN0IikmJihlLm9wdGlvbnMubGVuZ3RoPTApfXJldHVybiB0aGlzfSxjbG9u
ZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGw9PWU/ITE6ZSx0PW51bGw9
PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGIuY2xvbmUodGhp
cyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuYWNjZXNzKHRo
aXMsZnVuY3Rpb24oZSl7dmFyIG49dGhpc1swXXx8e30scj0wLGk9dGhpcy5s
ZW5ndGg7aWYoZT09PXQpcmV0dXJuIDE9PT1uLm5vZGVUeXBlP24uaW5uZXJI
VE1MLnJlcGxhY2UoZ3QsIiIpOnQ7aWYoISgic3RyaW5nIiE9dHlwZW9mIGV8
fFR0LnRlc3QoZSl8fCFiLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZSYmbXQudGVz
dChlKXx8IWIuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmeXQudGVzdChl
KXx8QXRbKGJ0LmV4ZWMoZSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCld
KSl7ZT1lLnJlcGxhY2UodnQsIjwkMT48LyQyPiIpO3RyeXtmb3IoO2k+cjty
Kyspbj10aGlzW3JdfHx7fSwxPT09bi5ub2RlVHlwZSYmKGIuY2xlYW5EYXRh
KE90KG4sITEpKSxuLmlubmVySFRNTD1lKTtuPTB9Y2F0Y2gobyl7fX1uJiZ0
aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0
aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKGUpe3ZhciB0PWIuaXNGdW5jdGlv
bihlKTtyZXR1cm4gdHx8InN0cmluZyI9PXR5cGVvZiBlfHwoZT1iKGUpLm5v
dCh0aGlzKS5kZXRhY2goKSksdGhpcy5kb21NYW5pcChbZV0sITAsZnVuY3Rp
b24oZSl7dmFyIHQ9dGhpcy5uZXh0U2libGluZyxuPXRoaXMucGFyZW50Tm9k
ZTtuJiYoYih0aGlzKS5yZW1vdmUoKSxuLmluc2VydEJlZm9yZShlLHQpKX0p
fSxkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVtb3ZlKGUsITAp
fSxkb21NYW5pcDpmdW5jdGlvbihlLG4scil7ZT1mLmFwcGx5KFtdLGUpO3Zh
ciBpLG8sYSxzLHUsbCxjPTAscD10aGlzLmxlbmd0aCxkPXRoaXMsaD1wLTEs
Zz1lWzBdLG09Yi5pc0Z1bmN0aW9uKGcpO2lmKG18fCEoMT49cHx8InN0cmlu
ZyIhPXR5cGVvZiBnfHxiLnN1cHBvcnQuY2hlY2tDbG9uZSkmJkN0LnRlc3Qo
ZykpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKXt2YXIgbz1kLmVxKGkp
O20mJihlWzBdPWcuY2FsbCh0aGlzLGksbj9vLmh0bWwoKTp0KSksby5kb21N
YW5pcChlLG4scil9KTtpZihwJiYobD1iLmJ1aWxkRnJhZ21lbnQoZSx0aGlz
WzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksaT1sLmZpcnN0Q2hpbGQsMT09
PWwuY2hpbGROb2Rlcy5sZW5ndGgmJihsPWkpLGkpKXtmb3Iobj1uJiZiLm5v
ZGVOYW1lKGksInRyIikscz1iLm1hcChPdChsLCJzY3JpcHQiKSxIdCksYT1z
Lmxlbmd0aDtwPmM7YysrKW89bCxjIT09aCYmKG89Yi5jbG9uZShvLCEwLCEw
KSxhJiZiLm1lcmdlKHMsT3Qobywic2NyaXB0IikpKSxyLmNhbGwobiYmYi5u
b2RlTmFtZSh0aGlzW2NdLCJ0YWJsZSIpP0x0KHRoaXNbY10sInRib2R5Iik6
dGhpc1tjXSxvLGMpO2lmKGEpZm9yKHU9c1tzLmxlbmd0aC0xXS5vd25lckRv
Y3VtZW50LGIubWFwKHMscXQpLGM9MDthPmM7YysrKW89c1tjXSxrdC50ZXN0
KG8udHlwZXx8IiIpJiYhYi5fZGF0YShvLCJnbG9iYWxFdmFsIikmJmIuY29u
dGFpbnModSxvKSYmKG8uc3JjP2IuYWpheCh7dXJsOm8uc3JjLHR5cGU6IkdF
VCIsZGF0YVR5cGU6InNjcmlwdCIsYXN5bmM6ITEsZ2xvYmFsOiExLCJ0aHJv
d3MiOiEwfSk6Yi5nbG9iYWxFdmFsKChvLnRleHR8fG8udGV4dENvbnRlbnR8
fG8uaW5uZXJIVE1MfHwiIikucmVwbGFjZShTdCwiIikpKTtsPWk9bnVsbH1y
ZXR1cm4gdGhpc319KTtmdW5jdGlvbiBMdChlLHQpe3JldHVybiBlLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKHQpWzBdfHxlLmFwcGVuZENoaWxkKGUub3duZXJE
b2N1bWVudC5jcmVhdGVFbGVtZW50KHQpKX1mdW5jdGlvbiBIdChlKXt2YXIg
dD1lLmdldEF0dHJpYnV0ZU5vZGUoInR5cGUiKTtyZXR1cm4gZS50eXBlPSh0
JiZ0LnNwZWNpZmllZCkrIi8iK2UudHlwZSxlfWZ1bmN0aW9uIHF0KGUpe3Zh
ciB0PUV0LmV4ZWMoZS50eXBlKTtyZXR1cm4gdD9lLnR5cGU9dFsxXTplLnJl
bW92ZUF0dHJpYnV0ZSgidHlwZSIpLGV9ZnVuY3Rpb24gTXQoZSx0KXt2YXIg
bixyPTA7Zm9yKDtudWxsIT0obj1lW3JdKTtyKyspYi5fZGF0YShuLCJnbG9i
YWxFdmFsIiwhdHx8Yi5fZGF0YSh0W3JdLCJnbG9iYWxFdmFsIikpfWZ1bmN0
aW9uIF90KGUsdCl7aWYoMT09PXQubm9kZVR5cGUmJmIuaGFzRGF0YShlKSl7
dmFyIG4scixpLG89Yi5fZGF0YShlKSxhPWIuX2RhdGEodCxvKSxzPW8uZXZl
bnRzO2lmKHMpe2RlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fTtmb3IobiBp
biBzKWZvcihyPTAsaT1zW25dLmxlbmd0aDtpPnI7cisrKWIuZXZlbnQuYWRk
KHQsbixzW25dW3JdKX1hLmRhdGEmJihhLmRhdGE9Yi5leHRlbmQoe30sYS5k
YXRhKSl9fWZ1bmN0aW9uIEZ0KGUsdCl7dmFyIG4scixpO2lmKDE9PT10Lm5v
ZGVUeXBlKXtpZihuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwhYi5zdXBw
b3J0Lm5vQ2xvbmVFdmVudCYmdFtiLmV4cGFuZG9dKXtpPWIuX2RhdGEodCk7
Zm9yKHIgaW4gaS5ldmVudHMpYi5yZW1vdmVFdmVudCh0LHIsaS5oYW5kbGUp
O3QucmVtb3ZlQXR0cmlidXRlKGIuZXhwYW5kbyl9InNjcmlwdCI9PT1uJiZ0
LnRleHQhPT1lLnRleHQ/KEh0KHQpLnRleHQ9ZS50ZXh0LHF0KHQpKToib2Jq
ZWN0Ij09PW4/KHQucGFyZW50Tm9kZSYmKHQub3V0ZXJIVE1MPWUub3V0ZXJI
VE1MKSxiLnN1cHBvcnQuaHRtbDVDbG9uZSYmZS5pbm5lckhUTUwmJiFiLnRy
aW0odC5pbm5lckhUTUwpJiYodC5pbm5lckhUTUw9ZS5pbm5lckhUTUwpKToi
aW5wdXQiPT09biYmTnQudGVzdChlLnR5cGUpPyh0LmRlZmF1bHRDaGVja2Vk
PXQuY2hlY2tlZD1lLmNoZWNrZWQsdC52YWx1ZSE9PWUudmFsdWUmJih0LnZh
bHVlPWUudmFsdWUpKToib3B0aW9uIj09PW4/dC5kZWZhdWx0U2VsZWN0ZWQ9
dC5zZWxlY3RlZD1lLmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PW58fCJ0
ZXh0YXJlYSI9PT1uKSYmKHQuZGVmYXVsdFZhbHVlPWUuZGVmYXVsdFZhbHVl
KX19Yi5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBl
bmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIi
LHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oZSx0KXtiLmZu
W2VdPWZ1bmN0aW9uKGUpe3ZhciBuLHI9MCxpPVtdLG89YihlKSxhPW8ubGVu
Z3RoLTE7Zm9yKDthPj1yO3IrKyluPXI9PT1hP3RoaXM6dGhpcy5jbG9uZSgh
MCksYihvW3JdKVt0XShuKSxkLmFwcGx5KGksbi5nZXQoKSk7cmV0dXJuIHRo
aXMucHVzaFN0YWNrKGkpfX0pO2Z1bmN0aW9uIE90KGUsbil7dmFyIHIsbyxh
PTAscz10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PWk/ZS5nZXRF
bGVtZW50c0J5VGFnTmFtZShufHwiKiIpOnR5cGVvZiBlLnF1ZXJ5U2VsZWN0
b3JBbGwhPT1pP2UucXVlcnlTZWxlY3RvckFsbChufHwiKiIpOnQ7aWYoIXMp
Zm9yKHM9W10scj1lLmNoaWxkTm9kZXN8fGU7bnVsbCE9KG89clthXSk7YSsr
KSFufHxiLm5vZGVOYW1lKG8sbik/cy5wdXNoKG8pOmIubWVyZ2UocyxPdChv
LG4pKTtyZXR1cm4gbj09PXR8fG4mJmIubm9kZU5hbWUoZSxuKT9iLm1lcmdl
KFtlXSxzKTpzfWZ1bmN0aW9uIEJ0KGUpe050LnRlc3QoZS50eXBlKSYmKGUu
ZGVmYXVsdENoZWNrZWQ9ZS5jaGVja2VkKX1iLmV4dGVuZCh7Y2xvbmU6ZnVu
Y3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdT1iLmNvbnRhaW5zKGUub3du
ZXJEb2N1bWVudCxlKTtpZihiLnN1cHBvcnQuaHRtbDVDbG9uZXx8Yi5pc1hN
TERvYyhlKXx8IW10LnRlc3QoIjwiK2Uubm9kZU5hbWUrIj4iKT9vPWUuY2xv
bmVOb2RlKCEwKTooRHQuaW5uZXJIVE1MPWUub3V0ZXJIVE1MLER0LnJlbW92
ZUNoaWxkKG89RHQuZmlyc3RDaGlsZCkpLCEoYi5zdXBwb3J0Lm5vQ2xvbmVF
dmVudCYmYi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlw
ZSYmMTEhPT1lLm5vZGVUeXBlfHxiLmlzWE1MRG9jKGUpKSlmb3Iocj1PdChv
KSxzPU90KGUpLGE9MDtudWxsIT0oaT1zW2FdKTsrK2EpclthXSYmRnQoaSxy
W2FdKTtpZih0KWlmKG4pZm9yKHM9c3x8T3QoZSkscj1yfHxPdChvKSxhPTA7
bnVsbCE9KGk9c1thXSk7YSsrKV90KGksclthXSk7ZWxzZSBfdChlLG8pO3Jl
dHVybiByPU90KG8sInNjcmlwdCIpLHIubGVuZ3RoPjAmJk10KHIsIXUmJk90
KGUsInNjcmlwdCIpKSxyPXM9aT1udWxsLG99LGJ1aWxkRnJhZ21lbnQ6ZnVu
Y3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsLGMscD1lLmxlbmd0aCxm
PWR0KHQpLGQ9W10saD0wO2Zvcig7cD5oO2grKylpZihvPWVbaF0sb3x8MD09
PW8paWYoIm9iamVjdCI9PT1iLnR5cGUobykpYi5tZXJnZShkLG8ubm9kZVR5
cGU/W29dOm8pO2Vsc2UgaWYod3QudGVzdChvKSl7cz1zfHxmLmFwcGVuZENo
aWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHU9KGJ0LmV4ZWMobyl8fFsi
IiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksYz1BdFt1XXx8QXQuX2RlZmF1bHQs
cy5pbm5lckhUTUw9Y1sxXStvLnJlcGxhY2UodnQsIjwkMT48LyQyPiIpK2Nb
Ml0saT1jWzBdO3doaWxlKGktLSlzPXMubGFzdENoaWxkO2lmKCFiLnN1cHBv
cnQubGVhZGluZ1doaXRlc3BhY2UmJnl0LnRlc3QobykmJmQucHVzaCh0LmNy
ZWF0ZVRleHROb2RlKHl0LmV4ZWMobylbMF0pKSwhYi5zdXBwb3J0LnRib2R5
KXtvPSJ0YWJsZSIhPT11fHx4dC50ZXN0KG8pPyI8dGFibGU+IiE9PWNbMV18
fHh0LnRlc3Qobyk/MDpzOnMuZmlyc3RDaGlsZCxpPW8mJm8uY2hpbGROb2Rl
cy5sZW5ndGg7d2hpbGUoaS0tKWIubm9kZU5hbWUobD1vLmNoaWxkTm9kZXNb
aV0sInRib2R5IikmJiFsLmNoaWxkTm9kZXMubGVuZ3RoJiZvLnJlbW92ZUNo
aWxkKGwpCn1iLm1lcmdlKGQscy5jaGlsZE5vZGVzKSxzLnRleHRDb250ZW50
PSIiO3doaWxlKHMuZmlyc3RDaGlsZClzLnJlbW92ZUNoaWxkKHMuZmlyc3RD
aGlsZCk7cz1mLmxhc3RDaGlsZH1lbHNlIGQucHVzaCh0LmNyZWF0ZVRleHRO
b2RlKG8pKTtzJiZmLnJlbW92ZUNoaWxkKHMpLGIuc3VwcG9ydC5hcHBlbmRD
aGVja2VkfHxiLmdyZXAoT3QoZCwiaW5wdXQiKSxCdCksaD0wO3doaWxlKG89
ZFtoKytdKWlmKCghcnx8LTE9PT1iLmluQXJyYXkobyxyKSkmJihhPWIuY29u
dGFpbnMoby5vd25lckRvY3VtZW50LG8pLHM9T3QoZi5hcHBlbmRDaGlsZChv
KSwic2NyaXB0IiksYSYmTXQocyksbikpe2k9MDt3aGlsZShvPXNbaSsrXSlr
dC50ZXN0KG8udHlwZXx8IiIpJiZuLnB1c2gobyl9cmV0dXJuIHM9bnVsbCxm
fSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYSxzPTAsdT1i
LmV4cGFuZG8sbD1iLmNhY2hlLHA9Yi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8s
Zj1iLmV2ZW50LnNwZWNpYWw7Zm9yKDtudWxsIT0obj1lW3NdKTtzKyspaWYo
KHR8fGIuYWNjZXB0RGF0YShuKSkmJihvPW5bdV0sYT1vJiZsW29dKSl7aWYo
YS5ldmVudHMpZm9yKHIgaW4gYS5ldmVudHMpZltyXT9iLmV2ZW50LnJlbW92
ZShuLHIpOmIucmVtb3ZlRXZlbnQobixyLGEuaGFuZGxlKTtsW29dJiYoZGVs
ZXRlIGxbb10scD9kZWxldGUgblt1XTp0eXBlb2Ygbi5yZW1vdmVBdHRyaWJ1
dGUhPT1pP24ucmVtb3ZlQXR0cmlidXRlKHUpOm5bdV09bnVsbCxjLnB1c2go
bykpfX19KTt2YXIgUHQsUnQsV3QsJHQ9L2FscGhhXChbXildKlwpL2ksSXQ9
L29wYWNpdHlccyo9XHMqKFteKV0qKS8senQ9L14odG9wfHJpZ2h0fGJvdHRv
bXxsZWZ0KSQvLFh0PS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxVdD0v
Xm1hcmdpbi8sVnQ9UmVnRXhwKCJeKCIreCsiKSguKikkIiwiaSIpLFl0PVJl
Z0V4cCgiXigiK3grIikoPyFweClbYS16JV0rJCIsImkiKSxKdD1SZWdFeHAo
Il4oWystXSk9KCIreCsiKSIsImkiKSxHdD17Qk9EWToiYmxvY2sifSxRdD17
cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3Bs
YXk6ImJsb2NrIn0sS3Q9e2xldHRlclNwYWNpbmc6MCxmb250V2VpZ2h0OjQw
MH0sWnQ9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxlbj1bIldl
YmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIHRuKGUsdCl7aWYodCBp
biBlKXJldHVybiB0O3ZhciBuPXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkr
dC5zbGljZSgxKSxyPXQsaT1lbi5sZW5ndGg7d2hpbGUoaS0tKWlmKHQ9ZW5b
aV0rbix0IGluIGUpcmV0dXJuIHQ7cmV0dXJuIHJ9ZnVuY3Rpb24gbm4oZSx0
KXtyZXR1cm4gZT10fHxlLCJub25lIj09PWIuY3NzKGUsImRpc3BsYXkiKXx8
IWIuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfWZ1bmN0aW9uIHJuKGUs
dCl7dmFyIG4scixpLG89W10sYT0wLHM9ZS5sZW5ndGg7Zm9yKDtzPmE7YSsr
KXI9ZVthXSxyLnN0eWxlJiYob1thXT1iLl9kYXRhKHIsIm9sZGRpc3BsYXki
KSxuPXIuc3R5bGUuZGlzcGxheSx0PyhvW2FdfHwibm9uZSIhPT1ufHwoci5z
dHlsZS5kaXNwbGF5PSIiKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmbm4ocikm
JihvW2FdPWIuX2RhdGEociwib2xkZGlzcGxheSIsdW4oci5ub2RlTmFtZSkp
KSk6b1thXXx8KGk9bm4ociksKG4mJiJub25lIiE9PW58fCFpKSYmYi5fZGF0
YShyLCJvbGRkaXNwbGF5IixpP246Yi5jc3MociwiZGlzcGxheSIpKSkpO2Zv
cihhPTA7cz5hO2ErKylyPWVbYV0sci5zdHlsZSYmKHQmJiJub25lIiE9PXIu
c3R5bGUuZGlzcGxheSYmIiIhPT1yLnN0eWxlLmRpc3BsYXl8fChyLnN0eWxl
LmRpc3BsYXk9dD9vW2FdfHwiIjoibm9uZSIpKTtyZXR1cm4gZX1iLmZuLmV4
dGVuZCh7Y3NzOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGIuYWNjZXNzKHRoaXMs
ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG8sYT17fSxzPTA7aWYoYi5pc0FycmF5
KG4pKXtmb3Iobz1SdChlKSxpPW4ubGVuZ3RoO2k+cztzKyspYVtuW3NdXT1i
LmNzcyhlLG5bc10sITEsbyk7cmV0dXJuIGF9cmV0dXJuIHIhPT10P2Iuc3R5
bGUoZSxuLHIpOmIuY3NzKGUsbil9LGUsbixhcmd1bWVudHMubGVuZ3RoPjEp
fSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHJuKHRoaXMsITApfSxoaWRlOmZ1
bmN0aW9uKCl7cmV0dXJuIHJuKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oZSl7
dmFyIHQ9ImJvb2xlYW4iPT10eXBlb2YgZTtyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKCl7KHQ/ZTpubih0aGlzKSk/Yih0aGlzKS5zaG93KCk6Yih0aGlz
KS5oaWRlKCl9KX19KSxiLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dl
dDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVd0KGUsIm9wYWNpdHkiKTty
ZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6
ITAsZmlsbE9wYWNpdHk6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEw
LG9wYWNpdHk6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpv
b206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOmIuc3VwcG9ydC5jc3NGbG9hdD8i
Y3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oZSxuLHIs
aSl7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0
eWxlKXt2YXIgbyxhLHMsdT1iLmNhbWVsQ2FzZShuKSxsPWUuc3R5bGU7aWYo
bj1iLmNzc1Byb3BzW3VdfHwoYi5jc3NQcm9wc1t1XT10bihsLHUpKSxzPWIu
Y3NzSG9va3Nbbl18fGIuY3NzSG9va3NbdV0scj09PXQpcmV0dXJuIHMmJiJn
ZXQiaW4gcyYmKG89cy5nZXQoZSwhMSxpKSkhPT10P286bFtuXTtpZihhPXR5
cGVvZiByLCJzdHJpbmciPT09YSYmKG89SnQuZXhlYyhyKSkmJihyPShvWzFd
KzEpKm9bMl0rcGFyc2VGbG9hdChiLmNzcyhlLG4pKSxhPSJudW1iZXIiKSwh
KG51bGw9PXJ8fCJudW1iZXIiPT09YSYmaXNOYU4ocil8fCgibnVtYmVyIiE9
PWF8fGIuY3NzTnVtYmVyW3VdfHwocis9InB4IiksYi5zdXBwb3J0LmNsZWFy
Q2xvbmVTdHlsZXx8IiIhPT1yfHwwIT09bi5pbmRleE9mKCJiYWNrZ3JvdW5k
Iil8fChsW25dPSJpbmhlcml0IikscyYmInNldCJpbiBzJiYocj1zLnNldChl
LHIsaSkpPT09dCkpKXRyeXtsW25dPXJ9Y2F0Y2goYyl7fX19LGNzczpmdW5j
dGlvbihlLG4scixpKXt2YXIgbyxhLHMsdT1iLmNhbWVsQ2FzZShuKTtyZXR1
cm4gbj1iLmNzc1Byb3BzW3VdfHwoYi5jc3NQcm9wc1t1XT10bihlLnN0eWxl
LHUpKSxzPWIuY3NzSG9va3Nbbl18fGIuY3NzSG9va3NbdV0scyYmImdldCJp
biBzJiYoYT1zLmdldChlLCEwLHIpKSxhPT09dCYmKGE9V3QoZSxuLGkpKSwi
bm9ybWFsIj09PWEmJm4gaW4gS3QmJihhPUt0W25dKSwiIj09PXJ8fHI/KG89
cGFyc2VGbG9hdChhKSxyPT09ITB8fGIuaXNOdW1lcmljKG8pP298fDA6YSk6
YX0sc3dhcDpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGE9e307Zm9yKG8g
aW4gdClhW29dPWUuc3R5bGVbb10sZS5zdHlsZVtvXT10W29dO2k9bi5hcHBs
eShlLHJ8fFtdKTtmb3IobyBpbiB0KWUuc3R5bGVbb109YVtvXTtyZXR1cm4g
aX19KSxlLmdldENvbXB1dGVkU3R5bGU/KFJ0PWZ1bmN0aW9uKHQpe3JldHVy
biBlLmdldENvbXB1dGVkU3R5bGUodCxudWxsKX0sV3Q9ZnVuY3Rpb24oZSxu
LHIpe3ZhciBpLG8sYSxzPXJ8fFJ0KGUpLHU9cz9zLmdldFByb3BlcnR5VmFs
dWUobil8fHNbbl06dCxsPWUuc3R5bGU7cmV0dXJuIHMmJigiIiE9PXV8fGIu
Y29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfHwodT1iLnN0eWxlKGUsbikp
LFl0LnRlc3QodSkmJlV0LnRlc3QobikmJihpPWwud2lkdGgsbz1sLm1pbldp
ZHRoLGE9bC5tYXhXaWR0aCxsLm1pbldpZHRoPWwubWF4V2lkdGg9bC53aWR0
aD11LHU9cy53aWR0aCxsLndpZHRoPWksbC5taW5XaWR0aD1vLGwubWF4V2lk
dGg9YSkpLHV9KTpvLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihS
dD1mdW5jdGlvbihlKXtyZXR1cm4gZS5jdXJyZW50U3R5bGV9LFd0PWZ1bmN0
aW9uKGUsbixyKXt2YXIgaSxvLGEscz1yfHxSdChlKSx1PXM/c1tuXTp0LGw9
ZS5zdHlsZTtyZXR1cm4gbnVsbD09dSYmbCYmbFtuXSYmKHU9bFtuXSksWXQu
dGVzdCh1KSYmIXp0LnRlc3QobikmJihpPWwubGVmdCxvPWUucnVudGltZVN0
eWxlLGE9byYmby5sZWZ0LGEmJihvLmxlZnQ9ZS5jdXJyZW50U3R5bGUubGVm
dCksbC5sZWZ0PSJmb250U2l6ZSI9PT1uPyIxZW0iOnUsdT1sLnBpeGVsTGVm
dCsicHgiLGwubGVmdD1pLGEmJihvLmxlZnQ9YSkpLCIiPT09dT8iYXV0byI6
dX0pO2Z1bmN0aW9uIG9uKGUsdCxuKXt2YXIgcj1WdC5leGVjKHQpO3JldHVy
biByP01hdGgubWF4KDAsclsxXS0obnx8MCkpKyhyWzJdfHwicHgiKTp0fWZ1
bmN0aW9uIGFuKGUsdCxuLHIsaSl7dmFyIG89bj09PShyPyJib3JkZXIiOiJj
b250ZW50Iik/NDoid2lkdGgiPT09dD8xOjAsYT0wO2Zvcig7ND5vO28rPTIp
Im1hcmdpbiI9PT1uJiYoYSs9Yi5jc3MoZSxuK1p0W29dLCEwLGkpKSxyPygi
Y29udGVudCI9PT1uJiYoYS09Yi5jc3MoZSwicGFkZGluZyIrWnRbb10sITAs
aSkpLCJtYXJnaW4iIT09biYmKGEtPWIuY3NzKGUsImJvcmRlciIrWnRbb10r
IldpZHRoIiwhMCxpKSkpOihhKz1iLmNzcyhlLCJwYWRkaW5nIitadFtvXSwh
MCxpKSwicGFkZGluZyIhPT1uJiYoYSs9Yi5jc3MoZSwiYm9yZGVyIitadFtv
XSsiV2lkdGgiLCEwLGkpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gc24oZSx0LG4p
e3ZhciByPSEwLGk9IndpZHRoIj09PXQ/ZS5vZmZzZXRXaWR0aDplLm9mZnNl
dEhlaWdodCxvPVJ0KGUpLGE9Yi5zdXBwb3J0LmJveFNpemluZyYmImJvcmRl
ci1ib3giPT09Yi5jc3MoZSwiYm94U2l6aW5nIiwhMSxvKTtpZigwPj1pfHxu
dWxsPT1pKXtpZihpPVd0KGUsdCxvKSwoMD5pfHxudWxsPT1pKSYmKGk9ZS5z
dHlsZVt0XSksWXQudGVzdChpKSlyZXR1cm4gaTtyPWEmJihiLnN1cHBvcnQu
Ym94U2l6aW5nUmVsaWFibGV8fGk9PT1lLnN0eWxlW3RdKSxpPXBhcnNlRmxv
YXQoaSl8fDB9cmV0dXJuIGkrYW4oZSx0LG58fChhPyJib3JkZXIiOiJjb250
ZW50IikscixvKSsicHgifWZ1bmN0aW9uIHVuKGUpe3ZhciB0PW8sbj1HdFtl
XTtyZXR1cm4gbnx8KG49bG4oZSx0KSwibm9uZSIhPT1uJiZufHwoUHQ9KFB0
fHxiKCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0
PScwJy8+IikuY3NzKCJjc3NUZXh0IiwiZGlzcGxheTpibG9jayAhaW1wb3J0
YW50IikpLmFwcGVuZFRvKHQuZG9jdW1lbnRFbGVtZW50KSx0PShQdFswXS5j
b250ZW50V2luZG93fHxQdFswXS5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50
LHQud3JpdGUoIjwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5PiIpLHQuY2xv
c2UoKSxuPWxuKGUsdCksUHQuZGV0YWNoKCkpLEd0W2VdPW4pLG59ZnVuY3Rp
b24gbG4oZSx0KXt2YXIgbj1iKHQuY3JlYXRlRWxlbWVudChlKSkuYXBwZW5k
VG8odC5ib2R5KSxyPWIuY3NzKG5bMF0sImRpc3BsYXkiKTtyZXR1cm4gbi5y
ZW1vdmUoKSxyfWIuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24o
ZSxuKXtiLmNzc0hvb2tzW25dPXtnZXQ6ZnVuY3Rpb24oZSxyLGkpe3JldHVy
biByPzA9PT1lLm9mZnNldFdpZHRoJiZYdC50ZXN0KGIuY3NzKGUsImRpc3Bs
YXkiKSk/Yi5zd2FwKGUsUXQsZnVuY3Rpb24oKXtyZXR1cm4gc24oZSxuLGkp
fSk6c24oZSxuLGkpOnR9LHNldDpmdW5jdGlvbihlLHQscil7dmFyIGk9ciYm
UnQoZSk7cmV0dXJuIG9uKGUsdCxyP2FuKGUsbixyLGIuc3VwcG9ydC5ib3hT
aXppbmcmJiJib3JkZXItYm94Ij09PWIuY3NzKGUsImJveFNpemluZyIsITEs
aSksaSk6MCl9fX0pLGIuc3VwcG9ydC5vcGFjaXR5fHwoYi5jc3NIb29rcy5v
cGFjaXR5PXtnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSXQudGVzdCgodCYm
ZS5jdXJyZW50U3R5bGU/ZS5jdXJyZW50U3R5bGUuZmlsdGVyOmUuc3R5bGUu
ZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6dD8i
MSI6IiJ9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3R5bGUscj1lLmN1
cnJlbnRTdHlsZSxpPWIuaXNOdW1lcmljKHQpPyJhbHBoYShvcGFjaXR5PSIr
MTAwKnQrIikiOiIiLG89ciYmci5maWx0ZXJ8fG4uZmlsdGVyfHwiIjtuLnpv
b209MSwodD49MXx8IiI9PT10KSYmIiI9PT1iLnRyaW0oby5yZXBsYWNlKCR0
LCIiKSkmJm4ucmVtb3ZlQXR0cmlidXRlJiYobi5yZW1vdmVBdHRyaWJ1dGUo
ImZpbHRlciIpLCIiPT09dHx8ciYmIXIuZmlsdGVyKXx8KG4uZmlsdGVyPSR0
LnRlc3Qobyk/by5yZXBsYWNlKCR0LGkpOm8rIiAiK2kpfX0pLGIoZnVuY3Rp
b24oKXtiLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KGIuY3NzSG9v
a3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihlLG4pe3JldHVybiBuP2Iu
c3dhcChlLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxXdCxbZSwibWFyZ2lu
UmlnaHQiXSk6dH19KSwhYi5zdXBwb3J0LnBpeGVsUG9zaXRpb24mJmIuZm4u
cG9zaXRpb24mJmIuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4p
e2IuY3NzSG9va3Nbbl09e2dldDpmdW5jdGlvbihlLHIpe3JldHVybiByPyhy
PVd0KGUsbiksWXQudGVzdChyKT9iKGUpLnBvc2l0aW9uKClbbl0rInB4Ijpy
KTp0fX19KX0pLGIuZXhwciYmYi5leHByLmZpbHRlcnMmJihiLmV4cHIuZmls
dGVycy5oaWRkZW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA+PWUub2Zmc2V0V2lk
dGgmJjA+PWUub2Zmc2V0SGVpZ2h0fHwhYi5zdXBwb3J0LnJlbGlhYmxlSGlk
ZGVuT2Zmc2V0cyYmIm5vbmUiPT09KGUuc3R5bGUmJmUuc3R5bGUuZGlzcGxh
eXx8Yi5jc3MoZSwiZGlzcGxheSIpKX0sYi5leHByLmZpbHRlcnMudmlzaWJs
ZT1mdW5jdGlvbihlKXtyZXR1cm4hYi5leHByLmZpbHRlcnMuaGlkZGVuKGUp
fSksYi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRo
In0sZnVuY3Rpb24oZSx0KXtiLmNzc0hvb2tzW2UrdF09e2V4cGFuZDpmdW5j
dGlvbihuKXt2YXIgcj0wLGk9e30sbz0ic3RyaW5nIj09dHlwZW9mIG4/bi5z
cGxpdCgiICIpOltuXTtmb3IoOzQ+cjtyKyspaVtlK1p0W3JdK3RdPW9bcl18
fG9bci0yXXx8b1swXTtyZXR1cm4gaX19LFV0LnRlc3QoZSl8fChiLmNzc0hv
b2tzW2UrdF0uc2V0PW9uKX0pO3ZhciBjbj0vJTIwL2cscG49L1xbXF0kLyxm
bj0vXHI/XG4vZyxkbj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8
ZmlsZSkkL2ksaG49L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2Vu
KS9pO2IuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4g
Yi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJh
eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBl
PWIucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBlP2IubWFrZUFycmF5
KGUpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnR5cGU7
cmV0dXJuIHRoaXMubmFtZSYmIWIodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZo
bi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhZG4udGVzdChlKSYmKHRoaXMuY2hl
Y2tlZHx8IU50LnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG49
Yih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOmIuaXNBcnJheShu
KT9iLm1hcChuLGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOnQubmFtZSx2YWx1
ZTplLnJlcGxhY2UoZm4sIlxyXG4iKX19KTp7bmFtZTp0Lm5hbWUsdmFsdWU6
bi5yZXBsYWNlKGZuLCJcclxuIil9fSkuZ2V0KCl9fSksYi5wYXJhbT1mdW5j
dGlvbihlLG4pe3ZhciByLGk9W10sbz1mdW5jdGlvbihlLHQpe3Q9Yi5pc0Z1
bmN0aW9uKHQpP3QoKTpudWxsPT10PyIiOnQsaVtpLmxlbmd0aF09ZW5jb2Rl
VVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQodCl9O2lm
KG49PT10JiYobj1iLmFqYXhTZXR0aW5ncyYmYi5hamF4U2V0dGluZ3MudHJh
ZGl0aW9uYWwpLGIuaXNBcnJheShlKXx8ZS5qcXVlcnkmJiFiLmlzUGxhaW5P
YmplY3QoZSkpYi5lYWNoKGUsZnVuY3Rpb24oKXtvKHRoaXMubmFtZSx0aGlz
LnZhbHVlKX0pO2Vsc2UgZm9yKHIgaW4gZSlnbihyLGVbcl0sbixvKTtyZXR1
cm4gaS5qb2luKCImIikucmVwbGFjZShjbiwiKyIpfTtmdW5jdGlvbiBnbihl
LHQsbixyKXt2YXIgaTtpZihiLmlzQXJyYXkodCkpYi5lYWNoKHQsZnVuY3Rp
b24odCxpKXtufHxwbi50ZXN0KGUpP3IoZSxpKTpnbihlKyJbIisoIm9iamVj
dCI9PXR5cGVvZiBpP3Q6IiIpKyJdIixpLG4scil9KTtlbHNlIGlmKG58fCJv
YmplY3QiIT09Yi50eXBlKHQpKXIoZSx0KTtlbHNlIGZvcihpIGluIHQpZ24o
ZSsiWyIraSsiXSIsdFtpXSxuLHIpfWIuZWFjaCgiYmx1ciBmb2N1cyBmb2N1
c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sg
ZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3Zl
ciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVj
dCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0
bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe2IuZm5bdF09ZnVuY3Rp
b24oZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24odCxu
dWxsLGUsbik6dGhpcy50cmlnZ2VyKHQpfX0pLGIuZm4uaG92ZXI9ZnVuY3Rp
b24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUo
dHx8ZSl9O3ZhciBtbix5bix2bj1iLm5vdygpLGJuPS9cPy8seG49LyMuKiQv
LHduPS8oWz8mXSlfPVteJl0qLyxUbj0vXiguKj8pOlsgXHRdKihbXlxyXG5d
Kilccj8kL2dtLE5uPS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4
dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLENuPS9eKD86R0VUfEhFQUQp
JC8sa249L15cL1wvLyxFbj0vXihbXHcuKy1dKzopKD86XC9cLyhbXlwvPyM6
XSopKD86OihcZCspfCl8KS8sU249Yi5mbi5sb2FkLEFuPXt9LGpuPXt9LERu
PSIqLyIuY29uY2F0KCIqIik7dHJ5e3luPWEuaHJlZn1jYXRjaChMbil7eW49
by5jcmVhdGVFbGVtZW50KCJhIikseW4uaHJlZj0iIix5bj15bi5ocmVmfW1u
PUVuLmV4ZWMoeW4udG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIEhuKGUp
e3JldHVybiBmdW5jdGlvbih0LG4peyJzdHJpbmciIT10eXBlb2YgdCYmKG49
dCx0PSIqIik7dmFyIHIsaT0wLG89dC50b0xvd2VyQ2FzZSgpLm1hdGNoKHcp
fHxbXTtpZihiLmlzRnVuY3Rpb24obikpd2hpbGUocj1vW2krK10pIisiPT09
clswXT8ocj1yLnNsaWNlKDEpfHwiKiIsKGVbcl09ZVtyXXx8W10pLnVuc2hp
ZnQobikpOihlW3JdPWVbcl18fFtdKS5wdXNoKG4pfX1mdW5jdGlvbiBxbihl
LG4scixpKXt2YXIgbz17fSxhPWU9PT1qbjtmdW5jdGlvbiBzKHUpe3ZhciBs
O3JldHVybiBvW3VdPSEwLGIuZWFjaChlW3VdfHxbXSxmdW5jdGlvbihlLHUp
e3ZhciBjPXUobixyLGkpO3JldHVybiJzdHJpbmciIT10eXBlb2YgY3x8YXx8
b1tjXT9hPyEobD1jKTp0OihuLmRhdGFUeXBlcy51bnNoaWZ0KGMpLHMoYyks
ITEpfSksbH1yZXR1cm4gcyhuLmRhdGFUeXBlc1swXSl8fCFvWyIqIl0mJnMo
IioiKX1mdW5jdGlvbiBNbihlLG4pe3ZhciByLGksbz1iLmFqYXhTZXR0aW5n
cy5mbGF0T3B0aW9uc3x8e307Zm9yKGkgaW4gbiluW2ldIT09dCYmKChvW2ld
P2U6cnx8KHI9e30pKVtpXT1uW2ldKTtyZXR1cm4gciYmYi5leHRlbmQoITAs
ZSxyKSxlfWIuZm4ubG9hZD1mdW5jdGlvbihlLG4scil7aWYoInN0cmluZyIh
PXR5cGVvZiBlJiZTbilyZXR1cm4gU24uYXBwbHkodGhpcyxhcmd1bWVudHMp
O3ZhciBpLG8sYSxzPXRoaXMsdT1lLmluZGV4T2YoIiAiKTtyZXR1cm4gdT49
MCYmKGk9ZS5zbGljZSh1LGUubGVuZ3RoKSxlPWUuc2xpY2UoMCx1KSksYi5p
c0Z1bmN0aW9uKG4pPyhyPW4sbj10KTpuJiYib2JqZWN0Ij09dHlwZW9mIG4m
JihhPSJQT1NUIikscy5sZW5ndGg+MCYmYi5hamF4KHt1cmw6ZSx0eXBlOmEs
ZGF0YVR5cGU6Imh0bWwiLGRhdGE6bn0pLmRvbmUoZnVuY3Rpb24oZSl7bz1h
cmd1bWVudHMscy5odG1sKGk/YigiPGRpdj4iKS5hcHBlbmQoYi5wYXJzZUhU
TUwoZSkpLmZpbmQoaSk6ZSl9KS5jb21wbGV0ZShyJiZmdW5jdGlvbihlLHQp
e3MuZWFjaChyLG98fFtlLnJlc3BvbnNlVGV4dCx0LGVdKX0pLHRoaXN9LGIu
ZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwi
YWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9u
KGUsdCl7Yi5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUp
fX0pLGIuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihlLG4pe2Jbbl09
ZnVuY3Rpb24oZSxyLGksbyl7cmV0dXJuIGIuaXNGdW5jdGlvbihyKSYmKG89
b3x8aSxpPXIscj10KSxiLmFqYXgoe3VybDplLHR5cGU6bixkYXRhVHlwZTpv
LGRhdGE6cixzdWNjZXNzOml9KX19KSxiLmV4dGVuZCh7YWN0aXZlOjAsbGFz
dE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6eW4sdHlw
ZToiR0VUIixpc0xvY2FsOk5uLnRlc3QobW5bMV0pLGdsb2JhbDohMCxwcm9j
ZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24v
eC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRz
OnsiKiI6RG4sdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4
bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0
aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3ht
bC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4
bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0
ZXJzOnsiKiB0ZXh0IjplLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBq
c29uIjpiLnBhcnNlSlNPTiwidGV4dCB4bWwiOmIucGFyc2VYTUx9LGZsYXRP
cHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlv
bihlLHQpe3JldHVybiB0P01uKE1uKGUsYi5hamF4U2V0dGluZ3MpLHQpOk1u
KGIuYWpheFNldHRpbmdzLGUpfSxhamF4UHJlZmlsdGVyOkhuKEFuKSxhamF4
VHJhbnNwb3J0OkhuKGpuKSxhamF4OmZ1bmN0aW9uKGUsbil7Im9iamVjdCI9
PXR5cGVvZiBlJiYobj1lLGU9dCksbj1ufHx7fTt2YXIgcixpLG8sYSxzLHUs
bCxjLHA9Yi5hamF4U2V0dXAoe30sbiksZj1wLmNvbnRleHR8fHAsZD1wLmNv
bnRleHQmJihmLm5vZGVUeXBlfHxmLmpxdWVyeSk/YihmKTpiLmV2ZW50LGg9
Yi5EZWZlcnJlZCgpLGc9Yi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksbT1w
LnN0YXR1c0NvZGV8fHt9LHk9e30sdj17fSx4PTAsVD0iY2FuY2VsZWQiLE49
e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2
YXIgdDtpZigyPT09eCl7aWYoIWMpe2M9e307d2hpbGUodD1Ubi5leGVjKGEp
KWNbdFsxXS50b0xvd2VyQ2FzZSgpXT10WzJdfXQ9Y1tlLnRvTG93ZXJDYXNl
KCldfXJldHVybiBudWxsPT10P251bGw6dH0sZ2V0QWxsUmVzcG9uc2VIZWFk
ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT14P2E6bnVsbH0sc2V0UmVxdWVz
dEhlYWRlcjpmdW5jdGlvbihlLHQpe3ZhciBuPWUudG9Mb3dlckNhc2UoKTty
ZXR1cm4geHx8KGU9dltuXT12W25dfHxlLHlbZV09dCksdGhpc30sb3ZlcnJp
ZGVNaW1lVHlwZTpmdW5jdGlvbihlKXtyZXR1cm4geHx8KHAubWltZVR5cGU9
ZSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihlKXt2YXIgdDtpZihlKWlm
KDI+eClmb3IodCBpbiBlKW1bdF09W21bdF0sZVt0XV07ZWxzZSBOLmFsd2F5
cyhlW04uc3RhdHVzXSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGUp
e3ZhciB0PWV8fFQ7cmV0dXJuIGwmJmwuYWJvcnQodCksaygwLHQpLHRoaXN9
fTtpZihoLnByb21pc2UoTikuY29tcGxldGU9Zy5hZGQsTi5zdWNjZXNzPU4u
ZG9uZSxOLmVycm9yPU4uZmFpbCxwLnVybD0oKGV8fHAudXJsfHx5bikrIiIp
LnJlcGxhY2UoeG4sIiIpLnJlcGxhY2Uoa24sbW5bMV0rIi8vIikscC50eXBl
PW4ubWV0aG9kfHxuLnR5cGV8fHAubWV0aG9kfHxwLnR5cGUscC5kYXRhVHlw
ZXM9Yi50cmltKHAuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRj
aCh3KXx8WyIiXSxudWxsPT1wLmNyb3NzRG9tYWluJiYocj1Fbi5leGVjKHAu
dXJsLnRvTG93ZXJDYXNlKCkpLHAuY3Jvc3NEb21haW49ISghcnx8clsxXT09
PW1uWzFdJiZyWzJdPT09bW5bMl0mJihyWzNdfHwoImh0dHA6Ij09PXJbMV0/
ODA6NDQzKSk9PShtblszXXx8KCJodHRwOiI9PT1tblsxXT84MDo0NDMpKSkp
LHAuZGF0YSYmcC5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBwLmRh
dGEmJihwLmRhdGE9Yi5wYXJhbShwLmRhdGEscC50cmFkaXRpb25hbCkpLHFu
KEFuLHAsbixOKSwyPT09eClyZXR1cm4gTjt1PXAuZ2xvYmFsLHUmJjA9PT1i
LmFjdGl2ZSsrJiZiLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHAudHlw
ZT1wLnR5cGUudG9VcHBlckNhc2UoKSxwLmhhc0NvbnRlbnQ9IUNuLnRlc3Qo
cC50eXBlKSxvPXAudXJsLHAuaGFzQ29udGVudHx8KHAuZGF0YSYmKG89cC51
cmwrPShibi50ZXN0KG8pPyImIjoiPyIpK3AuZGF0YSxkZWxldGUgcC5kYXRh
KSxwLmNhY2hlPT09ITEmJihwLnVybD13bi50ZXN0KG8pP28ucmVwbGFjZSh3
biwiJDFfPSIrdm4rKyk6bysoYm4udGVzdChvKT8iJiI6Ij8iKSsiXz0iK3Zu
KyspKSxwLmlmTW9kaWZpZWQmJihiLmxhc3RNb2RpZmllZFtvXSYmTi5zZXRS
ZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsYi5sYXN0TW9kaWZp
ZWRbb10pLGIuZXRhZ1tvXSYmTi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25l
LU1hdGNoIixiLmV0YWdbb10pKSwocC5kYXRhJiZwLmhhc0NvbnRlbnQmJnAu
Y29udGVudFR5cGUhPT0hMXx8bi5jb250ZW50VHlwZSkmJk4uc2V0UmVxdWVz
dEhlYWRlcigiQ29udGVudC1UeXBlIixwLmNvbnRlbnRUeXBlKSxOLnNldFJl
cXVlc3RIZWFkZXIoIkFjY2VwdCIscC5kYXRhVHlwZXNbMF0mJnAuYWNjZXB0
c1twLmRhdGFUeXBlc1swXV0/cC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXSso
IioiIT09cC5kYXRhVHlwZXNbMF0/IiwgIitEbisiOyBxPTAuMDEiOiIiKTpw
LmFjY2VwdHNbIioiXSk7Zm9yKGkgaW4gcC5oZWFkZXJzKU4uc2V0UmVxdWVz
dEhlYWRlcihpLHAuaGVhZGVyc1tpXSk7aWYocC5iZWZvcmVTZW5kJiYocC5i
ZWZvcmVTZW5kLmNhbGwoZixOLHApPT09ITF8fDI9PT14KSlyZXR1cm4gTi5h
Ym9ydCgpO1Q9ImFib3J0Ijtmb3IoaSBpbntzdWNjZXNzOjEsZXJyb3I6MSxj
b21wbGV0ZToxfSlOW2ldKHBbaV0pO2lmKGw9cW4oam4scCxuLE4pKXtOLnJl
YWR5U3RhdGU9MSx1JiZkLnRyaWdnZXIoImFqYXhTZW5kIixbTixwXSkscC5h
c3luYyYmcC50aW1lb3V0PjAmJihzPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtO
LmFib3J0KCJ0aW1lb3V0Iil9LHAudGltZW91dCkpO3RyeXt4PTEsbC5zZW5k
KHksayl9Y2F0Y2goQyl7aWYoISgyPngpKXRocm93IEM7aygtMSxDKX19ZWxz
ZSBrKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBrKGUsbixyLGkpe3Zh
ciBjLHksdix3LFQsQz1uOzIhPT14JiYoeD0yLHMmJmNsZWFyVGltZW91dChz
KSxsPXQsYT1pfHwiIixOLnJlYWR5U3RhdGU9ZT4wPzQ6MCxyJiYodz1fbihw
LE4scikpLGU+PTIwMCYmMzAwPmV8fDMwND09PWU/KHAuaWZNb2RpZmllZCYm
KFQ9Ti5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLFQmJihi
Lmxhc3RNb2RpZmllZFtvXT1UKSxUPU4uZ2V0UmVzcG9uc2VIZWFkZXIoImV0
YWciKSxUJiYoYi5ldGFnW29dPVQpKSwyMDQ9PT1lPyhjPSEwLEM9Im5vY29u
dGVudCIpOjMwND09PWU/KGM9ITAsQz0ibm90bW9kaWZpZWQiKTooYz1Gbihw
LHcpLEM9Yy5zdGF0ZSx5PWMuZGF0YSx2PWMuZXJyb3IsYz0hdikpOih2PUMs
KGV8fCFDKSYmKEM9ImVycm9yIiwwPmUmJihlPTApKSksTi5zdGF0dXM9ZSxO
LnN0YXR1c1RleHQ9KG58fEMpKyIiLGM/aC5yZXNvbHZlV2l0aChmLFt5LEMs
Tl0pOmgucmVqZWN0V2l0aChmLFtOLEMsdl0pLE4uc3RhdHVzQ29kZShtKSxt
PXQsdSYmZC50cmlnZ2VyKGM/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixb
TixwLGM/eTp2XSksZy5maXJlV2l0aChmLFtOLENdKSx1JiYoZC50cmlnZ2Vy
KCJhamF4Q29tcGxldGUiLFtOLHBdKSwtLWIuYWN0aXZlfHxiLmV2ZW50LnRy
aWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gTn0sZ2V0U2NyaXB0OmZ1bmN0
aW9uKGUsbil7cmV0dXJuIGIuZ2V0KGUsdCxuLCJzY3JpcHQiKX0sZ2V0SlNP
TjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGIuZ2V0KGUsdCxuLCJqc29uIil9
fSk7ZnVuY3Rpb24gX24oZSxuLHIpe3ZhciBpLG8sYSxzLHU9ZS5jb250ZW50
cyxsPWUuZGF0YVR5cGVzLGM9ZS5yZXNwb25zZUZpZWxkcztmb3IocyBpbiBj
KXMgaW4gciYmKG5bY1tzXV09cltzXSk7d2hpbGUoIioiPT09bFswXSlsLnNo
aWZ0KCksbz09PXQmJihvPWUubWltZVR5cGV8fG4uZ2V0UmVzcG9uc2VIZWFk
ZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihvKWZvcihzIGluIHUpaWYodVtzXSYm
dVtzXS50ZXN0KG8pKXtsLnVuc2hpZnQocyk7YnJlYWt9aWYobFswXWluIHIp
YT1sWzBdO2Vsc2V7Zm9yKHMgaW4gcil7aWYoIWxbMF18fGUuY29udmVydGVy
c1tzKyIgIitsWzBdXSl7YT1zO2JyZWFrfWl8fChpPXMpfWE9YXx8aX1yZXR1
cm4gYT8oYSE9PWxbMF0mJmwudW5zaGlmdChhKSxyW2FdKTp0fWZ1bmN0aW9u
IEZuKGUsdCl7dmFyIG4scixpLG8sYT17fSxzPTAsdT1lLmRhdGFUeXBlcy5z
bGljZSgpLGw9dVswXTtpZihlLmRhdGFGaWx0ZXImJih0PWUuZGF0YUZpbHRl
cih0LGUuZGF0YVR5cGUpKSx1WzFdKWZvcihpIGluIGUuY29udmVydGVycylh
W2kudG9Mb3dlckNhc2UoKV09ZS5jb252ZXJ0ZXJzW2ldO2Zvcig7cj11Wysr
c107KWlmKCIqIiE9PXIpe2lmKCIqIiE9PWwmJmwhPT1yKXtpZihpPWFbbCsi
ICIrcl18fGFbIiogIityXSwhaSlmb3IobiBpbiBhKWlmKG89bi5zcGxpdCgi
ICIpLG9bMV09PT1yJiYoaT1hW2wrIiAiK29bMF1dfHxhWyIqICIrb1swXV0p
KXtpPT09ITA/aT1hW25dOmFbbl0hPT0hMCYmKHI9b1swXSx1LnNwbGljZShz
LS0sMCxyKSk7YnJlYWt9aWYoaSE9PSEwKWlmKGkmJmVbInRocm93cyJdKXQ9
aSh0KTtlbHNlIHRyeXt0PWkodCl9Y2F0Y2goYyl7cmV0dXJue3N0YXRlOiJw
YXJzZXJlcnJvciIsZXJyb3I6aT9jOiJObyBjb252ZXJzaW9uIGZyb20gIits
KyIgdG8gIityfX19bD1yfXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTp0
fX1iLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3Jp
cHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFz
Y3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntz
Y3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4
dCBzY3JpcHQiOmZ1bmN0aW9uKGUpe3JldHVybiBiLmdsb2JhbEV2YWwoZSks
ZX19fSksYi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe2Uu
Y2FjaGU9PT10JiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlw
ZT0iR0VUIixlLmdsb2JhbD0hMSl9KSxiLmFqYXhUcmFuc3BvcnQoInNjcmlw
dCIsZnVuY3Rpb24oZSl7aWYoZS5jcm9zc0RvbWFpbil7dmFyIG4scj1vLmhl
YWR8fGIoImhlYWQiKVswXXx8by5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3Nl
bmQ6ZnVuY3Rpb24odCxpKXtuPW8uY3JlYXRlRWxlbWVudCgic2NyaXB0Iiks
bi5hc3luYz0hMCxlLnNjcmlwdENoYXJzZXQmJihuLmNoYXJzZXQ9ZS5zY3Jp
cHRDaGFyc2V0KSxuLnNyYz1lLnVybCxuLm9ubG9hZD1uLm9ucmVhZHlzdGF0
ZWNoYW5nZT1mdW5jdGlvbihlLHQpeyh0fHwhbi5yZWFkeVN0YXRlfHwvbG9h
ZGVkfGNvbXBsZXRlLy50ZXN0KG4ucmVhZHlTdGF0ZSkpJiYobi5vbmxvYWQ9
bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxuLnBhcmVudE5vZGUmJm4ucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxuPW51bGwsdHx8aSgyMDAsInN1Y2Nl
c3MiKSl9LHIuaW5zZXJ0QmVmb3JlKG4sci5maXJzdENoaWxkKX0sYWJvcnQ6
ZnVuY3Rpb24oKXtuJiZuLm9ubG9hZCh0LCEwKX19fX0pO3ZhciBPbj1bXSxC
bj0vKD0pXD8oPz0mfCQpfFw/XD8vO2IuYWpheFNldHVwKHtqc29ucDoiY2Fs
bGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1Pbi5wb3Ao
KXx8Yi5leHBhbmRvKyJfIit2bisrO3JldHVybiB0aGlzW2VdPSEwLGV9fSks
Yi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihuLHIsaSl7
dmFyIG8sYSxzLHU9bi5qc29ucCE9PSExJiYoQm4udGVzdChuLnVybCk/InVy
bCI6InN0cmluZyI9PXR5cGVvZiBuLmRhdGEmJiEobi5jb250ZW50VHlwZXx8
IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2Rl
ZCIpJiZCbi50ZXN0KG4uZGF0YSkmJiJkYXRhIik7cmV0dXJuIHV8fCJqc29u
cCI9PT1uLmRhdGFUeXBlc1swXT8obz1uLmpzb25wQ2FsbGJhY2s9Yi5pc0Z1
bmN0aW9uKG4uanNvbnBDYWxsYmFjayk/bi5qc29ucENhbGxiYWNrKCk6bi5q
c29ucENhbGxiYWNrLHU/blt1XT1uW3VdLnJlcGxhY2UoQm4sIiQxIitvKTpu
Lmpzb25wIT09ITEmJihuLnVybCs9KGJuLnRlc3Qobi51cmwpPyImIjoiPyIp
K24uanNvbnArIj0iK28pLG4uY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1m
dW5jdGlvbigpe3JldHVybiBzfHxiLmVycm9yKG8rIiB3YXMgbm90IGNhbGxl
ZCIpLHNbMF19LG4uZGF0YVR5cGVzWzBdPSJqc29uIixhPWVbb10sZVtvXT1m
dW5jdGlvbigpe3M9YXJndW1lbnRzfSxpLmFsd2F5cyhmdW5jdGlvbigpe2Vb
b109YSxuW29dJiYobi5qc29ucENhbGxiYWNrPXIuanNvbnBDYWxsYmFjayxP
bi5wdXNoKG8pKSxzJiZiLmlzRnVuY3Rpb24oYSkmJmEoc1swXSkscz1hPXR9
KSwic2NyaXB0Iik6dH0pO3ZhciBQbixSbixXbj0wLCRuPWUuQWN0aXZlWE9i
amVjdCYmZnVuY3Rpb24oKXt2YXIgZTtmb3IoZSBpbiBQbilQbltlXSh0LCEw
KX07ZnVuY3Rpb24gSW4oKXt0cnl7cmV0dXJuIG5ldyBlLlhNTEh0dHBSZXF1
ZXN0fWNhdGNoKHQpe319ZnVuY3Rpb24gem4oKXt0cnl7cmV0dXJuIG5ldyBl
LkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2godCl7
fX1iLmFqYXhTZXR0aW5ncy54aHI9ZS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9u
KCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmSW4oKXx8em4oKX06SW4sUm49Yi5h
amF4U2V0dGluZ3MueGhyKCksYi5zdXBwb3J0LmNvcnM9ISFSbiYmIndpdGhD
cmVkZW50aWFscyJpbiBSbixSbj1iLnN1cHBvcnQuYWpheD0hIVJuLFJuJiZi
LmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24obil7aWYoIW4uY3Jvc3NEb21haW58
fGIuc3VwcG9ydC5jb3JzKXt2YXIgcjtyZXR1cm57c2VuZDpmdW5jdGlvbihp
LG8pe3ZhciBhLHMsdT1uLnhocigpO2lmKG4udXNlcm5hbWU/dS5vcGVuKG4u
dHlwZSxuLnVybCxuLmFzeW5jLG4udXNlcm5hbWUsbi5wYXNzd29yZCk6dS5v
cGVuKG4udHlwZSxuLnVybCxuLmFzeW5jKSxuLnhockZpZWxkcylmb3IocyBp
biBuLnhockZpZWxkcyl1W3NdPW4ueGhyRmllbGRzW3NdO24ubWltZVR5cGUm
JnUub3ZlcnJpZGVNaW1lVHlwZSYmdS5vdmVycmlkZU1pbWVUeXBlKG4ubWlt
ZVR5cGUpLG4uY3Jvc3NEb21haW58fGlbIlgtUmVxdWVzdGVkLVdpdGgiXXx8
KGlbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7
Zm9yKHMgaW4gaSl1LnNldFJlcXVlc3RIZWFkZXIocyxpW3NdKX1jYXRjaChs
KXt9dS5zZW5kKG4uaGFzQ29udGVudCYmbi5kYXRhfHxudWxsKSxyPWZ1bmN0
aW9uKGUsaSl7dmFyIHMsbCxjLHA7dHJ5e2lmKHImJihpfHw0PT09dS5yZWFk
eVN0YXRlKSlpZihyPXQsYSYmKHUub25yZWFkeXN0YXRlY2hhbmdlPWIubm9v
cCwkbiYmZGVsZXRlIFBuW2FdKSxpKTQhPT11LnJlYWR5U3RhdGUmJnUuYWJv
cnQoKTtlbHNle3A9e30scz11LnN0YXR1cyxsPXUuZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKCksInN0cmluZyI9PXR5cGVvZiB1LnJlc3BvbnNlVGV4dCYmKHAu
dGV4dD11LnJlc3BvbnNlVGV4dCk7dHJ5e2M9dS5zdGF0dXNUZXh0fWNhdGNo
KGYpe2M9IiJ9c3x8IW4uaXNMb2NhbHx8bi5jcm9zc0RvbWFpbj8xMjIzPT09
cyYmKHM9MjA0KTpzPXAudGV4dD8yMDA6NDA0fX1jYXRjaChkKXtpfHxvKC0x
LGQpfXAmJm8ocyxjLHAsbCl9LG4uYXN5bmM/ND09PXUucmVhZHlTdGF0ZT9z
ZXRUaW1lb3V0KHIpOihhPSsrV24sJG4mJihQbnx8KFBuPXt9LGIoZSkudW5s
b2FkKCRuKSksUG5bYV09ciksdS5vbnJlYWR5c3RhdGVjaGFuZ2U9cik6cigp
fSxhYm9ydDpmdW5jdGlvbigpe3ImJnIodCwhMCl9fX19KTt2YXIgWG4sVW4s
Vm49L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFluPVJlZ0V4cCgiXig/Oihb
Ky1dKT18KSgiK3grIikoW2EteiVdKikkIiwiaSIpLEpuPS9xdWV1ZUhvb2tz
JC8sR249W25yXSxRbj17IioiOltmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT10
aGlzLmNyZWF0ZVR3ZWVuKGUsdCksbz1Zbi5leGVjKHQpLGE9aS5jdXIoKSxz
PSthfHwwLHU9MSxsPTIwO2lmKG8pe2lmKG49K29bMl0scj1vWzNdfHwoYi5j
c3NOdW1iZXJbZV0/IiI6InB4IiksInB4IiE9PXImJnMpe3M9Yi5jc3MoaS5l
bGVtLGUsITApfHxufHwxO2RvIHU9dXx8Ii41IixzLz11LGIuc3R5bGUoaS5l
bGVtLGUscytyKTt3aGlsZSh1IT09KHU9aS5jdXIoKS9hKSYmMSE9PXUmJi0t
bCl9aS51bml0PXIsaS5zdGFydD1zLGkuZW5kPW9bMV0/cysob1sxXSsxKSpu
Om59cmV0dXJuIGl9XX07ZnVuY3Rpb24gS24oKXtyZXR1cm4gc2V0VGltZW91
dChmdW5jdGlvbigpe1huPXR9KSxYbj1iLm5vdygpfWZ1bmN0aW9uIFpuKGUs
dCl7Yi5lYWNoKHQsZnVuY3Rpb24odCxuKXt2YXIgcj0oUW5bdF18fFtdKS5j
b25jYXQoUW5bIioiXSksaT0wLG89ci5sZW5ndGg7Zm9yKDtvPmk7aSsrKWlm
KHJbaV0uY2FsbChlLHQsbikpcmV0dXJufSl9ZnVuY3Rpb24gZXIoZSx0LG4p
e3ZhciByLGksbz0wLGE9R24ubGVuZ3RoLHM9Yi5EZWZlcnJlZCgpLmFsd2F5
cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYo
aSlyZXR1cm4hMTt2YXIgdD1Ybnx8S24oKSxuPU1hdGgubWF4KDAsbC5zdGFy
dFRpbWUrbC5kdXJhdGlvbi10KSxyPW4vbC5kdXJhdGlvbnx8MCxvPTEtcixh
PTAsdT1sLnR3ZWVucy5sZW5ndGg7Zm9yKDt1PmE7YSsrKWwudHdlZW5zW2Fd
LnJ1bihvKTtyZXR1cm4gcy5ub3RpZnlXaXRoKGUsW2wsbyxuXSksMT5vJiZ1
P246KHMucmVzb2x2ZVdpdGgoZSxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2Vs
ZW06ZSxwcm9wczpiLmV4dGVuZCh7fSx0KSxvcHRzOmIuZXh0ZW5kKCEwLHtz
cGVjaWFsRWFzaW5nOnt9fSxuKSxvcmlnaW5hbFByb3BlcnRpZXM6dCxvcmln
aW5hbE9wdGlvbnM6bixzdGFydFRpbWU6WG58fEtuKCksZHVyYXRpb246bi5k
dXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24odCxuKXt2
YXIgcj1iLlR3ZWVuKGUsbC5vcHRzLHQsbixsLm9wdHMuc3BlY2lhbEVhc2lu
Z1t0XXx8bC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2gociks
cn0sc3RvcDpmdW5jdGlvbih0KXt2YXIgbj0wLHI9dD9sLnR3ZWVucy5sZW5n
dGg6MDtpZihpKXJldHVybiB0aGlzO2ZvcihpPSEwO3I+bjtuKyspbC50d2Vl
bnNbbl0ucnVuKDEpO3JldHVybiB0P3MucmVzb2x2ZVdpdGgoZSxbbCx0XSk6
cy5yZWplY3RXaXRoKGUsW2wsdF0pLHRoaXN9fSksYz1sLnByb3BzO2Zvcih0
cihjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTthPm87bysrKWlmKHI9R25bb10u
Y2FsbChsLGUsYyxsLm9wdHMpKXJldHVybiByO3JldHVybiBabihsLGMpLGIu
aXNGdW5jdGlvbihsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChl
LGwpLGIuZngudGltZXIoYi5leHRlbmQodSx7ZWxlbTplLGFuaW06bCxxdWV1
ZTpsLm9wdHMucXVldWV9KSksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3Mp
LmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0
cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyl9ZnVuY3Rpb24gdHIoZSx0
KXt2YXIgbixyLGksbyxhO2ZvcihpIGluIGUpaWYocj1iLmNhbWVsQ2FzZShp
KSxvPXRbcl0sbj1lW2ldLGIuaXNBcnJheShuKSYmKG89blsxXSxuPWVbaV09
blswXSksaSE9PXImJihlW3JdPW4sZGVsZXRlIGVbaV0pLGE9Yi5jc3NIb29r
c1tyXSxhJiYiZXhwYW5kImluIGEpe249YS5leHBhbmQobiksZGVsZXRlIGVb
cl07Zm9yKGkgaW4gbilpIGluIGV8fChlW2ldPW5baV0sdFtpXT1vKX1lbHNl
IHRbcl09b31iLkFuaW1hdGlvbj1iLmV4dGVuZChlcix7dHdlZW5lcjpmdW5j
dGlvbihlLHQpe2IuaXNGdW5jdGlvbihlKT8odD1lLGU9WyIqIl0pOmU9ZS5z
cGxpdCgiICIpO3ZhciBuLHI9MCxpPWUubGVuZ3RoO2Zvcig7aT5yO3IrKylu
PWVbcl0sUW5bbl09UW5bbl18fFtdLFFuW25dLnVuc2hpZnQodCl9LHByZWZp
bHRlcjpmdW5jdGlvbihlLHQpe3Q/R24udW5zaGlmdChlKTpHbi5wdXNoKGUp
fX0pO2Z1bmN0aW9uIG5yKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjLHAs
Zj10aGlzLGQ9ZS5zdHlsZSxoPXt9LGc9W10sbT1lLm5vZGVUeXBlJiZubihl
KTtuLnF1ZXVlfHwoYz1iLl9xdWV1ZUhvb2tzKGUsImZ4IiksbnVsbD09Yy51
bnF1ZXVlZCYmKGMudW5xdWV1ZWQ9MCxwPWMuZW1wdHkuZmlyZSxjLmVtcHR5
LmZpcmU9ZnVuY3Rpb24oKXtjLnVucXVldWVkfHxwKCl9KSxjLnVucXVldWVk
KyssZi5hbHdheXMoZnVuY3Rpb24oKXtmLmFsd2F5cyhmdW5jdGlvbigpe2Mu
dW5xdWV1ZWQtLSxiLnF1ZXVlKGUsImZ4IikubGVuZ3RofHxjLmVtcHR5LmZp
cmUoKX0pfSkpLDE9PT1lLm5vZGVUeXBlJiYoImhlaWdodCJpbiB0fHwid2lk
dGgiaW4gdCkmJihuLm92ZXJmbG93PVtkLm92ZXJmbG93LGQub3ZlcmZsb3dY
LGQub3ZlcmZsb3dZXSwiaW5saW5lIj09PWIuY3NzKGUsImRpc3BsYXkiKSYm
Im5vbmUiPT09Yi5jc3MoZSwiZmxvYXQiKSYmKGIuc3VwcG9ydC5pbmxpbmVC
bG9ja05lZWRzTGF5b3V0JiYiaW5saW5lIiE9PXVuKGUubm9kZU5hbWUpP2Qu
em9vbT0xOmQuZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4ub3ZlcmZsb3cm
JihkLm92ZXJmbG93PSJoaWRkZW4iLGIuc3VwcG9ydC5zaHJpbmtXcmFwQmxv
Y2tzfHxmLmFsd2F5cyhmdW5jdGlvbigpe2Qub3ZlcmZsb3c9bi5vdmVyZmxv
d1swXSxkLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGQub3ZlcmZsb3dZPW4u
b3ZlcmZsb3dbMl19KSk7Zm9yKGkgaW4gdClpZihhPXRbaV0sVm4uZXhlYyhh
KSl7aWYoZGVsZXRlIHRbaV0sdT11fHwidG9nZ2xlIj09PWEsYT09PShtPyJo
aWRlIjoic2hvdyIpKWNvbnRpbnVlO2cucHVzaChpKX1pZihvPWcubGVuZ3Ro
KXtzPWIuX2RhdGEoZSwiZnhzaG93Iil8fGIuX2RhdGEoZSwiZnhzaG93Iix7
fSksImhpZGRlbiJpbiBzJiYobT1zLmhpZGRlbiksdSYmKHMuaGlkZGVuPSFt
KSxtP2IoZSkuc2hvdygpOmYuZG9uZShmdW5jdGlvbigpe2IoZSkuaGlkZSgp
fSksZi5kb25lKGZ1bmN0aW9uKCl7dmFyIHQ7Yi5fcmVtb3ZlRGF0YShlLCJm
eHNob3ciKTtmb3IodCBpbiBoKWIuc3R5bGUoZSx0LGhbdF0pfSk7Zm9yKGk9
MDtvPmk7aSsrKXI9Z1tpXSxsPWYuY3JlYXRlVHdlZW4ocixtP3Nbcl06MCks
aFtyXT1zW3JdfHxiLnN0eWxlKGUsciksciBpbiBzfHwoc1tyXT1sLnN0YXJ0
LG0mJihsLmVuZD1sLnN0YXJ0LGwuc3RhcnQ9IndpZHRoIj09PXJ8fCJoZWln
aHQiPT09cj8xOjApKX19ZnVuY3Rpb24gcnIoZSx0LG4scixpKXtyZXR1cm4g
bmV3IHJyLnByb3RvdHlwZS5pbml0KGUsdCxuLHIsaSl9Yi5Ud2Vlbj1ycixy
ci5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnJyLGluaXQ6ZnVuY3Rpb24oZSx0
LG4scixpLG8pe3RoaXMuZWxlbT1lLHRoaXMucHJvcD1uLHRoaXMuZWFzaW5n
PWl8fCJzd2luZyIsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5v
dz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChiLmNzc051
bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9cnIucHJv
cEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMp
OnJyLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlv
bihlKXt2YXIgdCxuPXJyLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0
aGlzLnBvcz10PXRoaXMub3B0aW9ucy5kdXJhdGlvbj9iLmVhc2luZ1t0aGlz
LmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5v
cHRpb25zLmR1cmF0aW9uKTplLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0
YXJ0KSp0K3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0
aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLG4mJm4u
c2V0P24uc2V0KHRoaXMpOnJyLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhp
cyksdGhpc319LHJyLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1yci5wcm90
b3R5cGUscnIucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUp
e3ZhciB0O3JldHVybiBudWxsPT1lLmVsZW1bZS5wcm9wXXx8ZS5lbGVtLnN0
eWxlJiZudWxsIT1lLmVsZW0uc3R5bGVbZS5wcm9wXT8odD1iLmNzcyhlLmVs
ZW0sZS5wcm9wLCIiKSx0JiYiYXV0byIhPT10P3Q6MCk6ZS5lbGVtW2UucHJv
cF19LHNldDpmdW5jdGlvbihlKXtiLmZ4LnN0ZXBbZS5wcm9wXT9iLmZ4LnN0
ZXBbZS5wcm9wXShlKTplLmVsZW0uc3R5bGUmJihudWxsIT1lLmVsZW0uc3R5
bGVbYi5jc3NQcm9wc1tlLnByb3BdXXx8Yi5jc3NIb29rc1tlLnByb3BdKT9i
LnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KTplLmVsZW1bZS5w
cm9wXT1lLm5vd319fSxyci5wcm9wSG9va3Muc2Nyb2xsVG9wPXJyLnByb3BI
b29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVU
eXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93
KX19LGIuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24o
ZSx0KXt2YXIgbj1iLmZuW3RdO2IuZm5bdF09ZnVuY3Rpb24oZSxyLGkpe3Jl
dHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PXR5cGVvZiBlP24uYXBwbHkodGhp
cyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShpcih0LCEwKSxlLHIsaSl9fSks
Yi5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4g
dGhpcy5maWx0ZXIobm4pLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgp
LmFuaW1hdGUoe29wYWNpdHk6dH0sZSxuLHIpfSxhbmltYXRlOmZ1bmN0aW9u
KGUsdCxuLHIpe3ZhciBpPWIuaXNFbXB0eU9iamVjdChlKSxvPWIuc3BlZWQo
dCxuLHIpLGE9ZnVuY3Rpb24oKXt2YXIgdD1lcih0aGlzLGIuZXh0ZW5kKHt9
LGUpLG8pO2EuZmluaXNoPWZ1bmN0aW9uKCl7dC5zdG9wKCEwKX0sKGl8fGIu
X2RhdGEodGhpcywiZmluaXNoIikpJiZ0LnN0b3AoITApfTtyZXR1cm4gYS5m
aW5pc2g9YSxpfHxvLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGEpOnRoaXMucXVl
dWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihlLG4scil7dmFyIGk9ZnVu
Y3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChyKX07cmV0
dXJuInN0cmluZyIhPXR5cGVvZiBlJiYocj1uLG49ZSxlPXQpLG4mJmUhPT0h
MSYmdGhpcy5xdWV1ZShlfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24o
KXt2YXIgdD0hMCxuPW51bGwhPWUmJmUrInF1ZXVlSG9va3MiLG89Yi50aW1l
cnMsYT1iLl9kYXRhKHRoaXMpO2lmKG4pYVtuXSYmYVtuXS5zdG9wJiZpKGFb
bl0pO2Vsc2UgZm9yKG4gaW4gYSlhW25dJiZhW25dLnN0b3AmJkpuLnRlc3Qo
bikmJmkoYVtuXSk7Zm9yKG49by5sZW5ndGg7bi0tOylvW25dLmVsZW0hPT10
aGlzfHxudWxsIT1lJiZvW25dLnF1ZXVlIT09ZXx8KG9bbl0uYW5pbS5zdG9w
KHIpLHQ9ITEsby5zcGxpY2UobiwxKSk7KHR8fCFyKSYmYi5kZXF1ZXVlKHRo
aXMsZSl9KX0sZmluaXNoOmZ1bmN0aW9uKGUpe3JldHVybiBlIT09ITEmJihl
PWV8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LG49Yi5fZGF0
YSh0aGlzKSxyPW5bZSsicXVldWUiXSxpPW5bZSsicXVldWVIb29rcyJdLG89
Yi50aW1lcnMsYT1yP3IubGVuZ3RoOjA7Zm9yKG4uZmluaXNoPSEwLGIucXVl
dWUodGhpcyxlLFtdKSxpJiZpLmN1ciYmaS5jdXIuZmluaXNoJiZpLmN1ci5m
aW5pc2guY2FsbCh0aGlzKSx0PW8ubGVuZ3RoO3QtLTspb1t0XS5lbGVtPT09
dGhpcyYmb1t0XS5xdWV1ZT09PWUmJihvW3RdLmFuaW0uc3RvcCghMCksby5z
cGxpY2UodCwxKSk7Zm9yKHQ9MDthPnQ7dCsrKXJbdF0mJnJbdF0uZmluaXNo
JiZyW3RdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBuLmZpbmlzaH0pfX0p
O2Z1bmN0aW9uIGlyKGUsdCl7dmFyIG4scj17aGVpZ2h0OmV9LGk9MDtmb3Io
dD10PzE6MDs0Pmk7aSs9Mi10KW49WnRbaV0sclsibWFyZ2luIituXT1yWyJw
YWRkaW5nIituXT1lO3JldHVybiB0JiYoci5vcGFjaXR5PXIud2lkdGg9ZSks
cn1iLmVhY2goe3NsaWRlRG93bjppcigic2hvdyIpLHNsaWRlVXA6aXIoImhp
ZGUiKSxzbGlkZVRvZ2dsZTppcigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5
OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6
e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihlLHQpe2IuZm5bZV09ZnVu
Y3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmFuaW1hdGUodCxlLG4scil9fSks
Yi5zcGVlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSYmIm9iamVjdCI9PXR5
cGVvZiBlP2IuZXh0ZW5kKHt9LGUpOntjb21wbGV0ZTpufHwhbiYmdHx8Yi5p
c0Z1bmN0aW9uKGUpJiZlLGR1cmF0aW9uOmUsZWFzaW5nOm4mJnR8fHQmJiFi
LmlzRnVuY3Rpb24odCkmJnR9O3JldHVybiByLmR1cmF0aW9uPWIuZngub2Zm
PzA6Im51bWJlciI9PXR5cGVvZiByLmR1cmF0aW9uP3IuZHVyYXRpb246ci5k
dXJhdGlvbiBpbiBiLmZ4LnNwZWVkcz9iLmZ4LnNwZWVkc1tyLmR1cmF0aW9u
XTpiLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ci5xdWV1ZXx8ci5xdWV1
ZT09PSEwKSYmKHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNv
bXBsZXRlPWZ1bmN0aW9uKCl7Yi5pc0Z1bmN0aW9uKHIub2xkKSYmci5vbGQu
Y2FsbCh0aGlzKSxyLnF1ZXVlJiZiLmRlcXVldWUodGhpcyxyLnF1ZXVlKX0s
cn0sYi5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dp
bmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8y
fX0sYi50aW1lcnM9W10sYi5meD1yci5wcm90b3R5cGUuaW5pdCxiLmZ4LnRp
Y2s9ZnVuY3Rpb24oKXt2YXIgZSxuPWIudGltZXJzLHI9MDtmb3IoWG49Yi5u
b3coKTtuLmxlbmd0aD5yO3IrKyllPW5bcl0sZSgpfHxuW3JdIT09ZXx8bi5z
cGxpY2Uoci0tLDEpO24ubGVuZ3RofHxiLmZ4LnN0b3AoKSxYbj10fSxiLmZ4
LnRpbWVyPWZ1bmN0aW9uKGUpe2UoKSYmYi50aW1lcnMucHVzaChlKSYmYi5m
eC5zdGFydCgpfSxiLmZ4LmludGVydmFsPTEzLGIuZnguc3RhcnQ9ZnVuY3Rp
b24oKXtVbnx8KFVuPXNldEludGVydmFsKGIuZngudGljayxiLmZ4LmludGVy
dmFsKSl9LGIuZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoVW4p
LFVuPW51bGx9LGIuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVm
YXVsdDo0MDB9LGIuZnguc3RlcD17fSxiLmV4cHImJmIuZXhwci5maWx0ZXJz
JiYoYi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJu
IGIuZ3JlcChiLnRpbWVycyxmdW5jdGlvbih0KXtyZXR1cm4gZT09PXQuZWxl
bX0pLmxlbmd0aH0pLGIuZm4ub2Zmc2V0PWZ1bmN0aW9uKGUpe2lmKGFyZ3Vt
ZW50cy5sZW5ndGgpcmV0dXJuIGU9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0
aW9uKHQpe2Iub2Zmc2V0LnNldE9mZnNldCh0aGlzLGUsdCl9KTt2YXIgbixy
LG89e3RvcDowLGxlZnQ6MH0sYT10aGlzWzBdLHM9YSYmYS5vd25lckRvY3Vt
ZW50O2lmKHMpcmV0dXJuIG49cy5kb2N1bWVudEVsZW1lbnQsYi5jb250YWlu
cyhuLGEpPyh0eXBlb2YgYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1pJiYo
bz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxyPW9yKHMpLHt0b3A6by50
b3ArKHIucGFnZVlPZmZzZXR8fG4uc2Nyb2xsVG9wKS0obi5jbGllbnRUb3B8
fDApLGxlZnQ6by5sZWZ0KyhyLnBhZ2VYT2Zmc2V0fHxuLnNjcm9sbExlZnQp
LShuLmNsaWVudExlZnR8fDApfSk6b30sYi5vZmZzZXQ9e3NldE9mZnNldDpm
dW5jdGlvbihlLHQsbil7dmFyIHI9Yi5jc3MoZSwicG9zaXRpb24iKTsic3Rh
dGljIj09PXImJihlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBp
PWIoZSksbz1pLm9mZnNldCgpLGE9Yi5jc3MoZSwidG9wIikscz1iLmNzcyhl
LCJsZWZ0IiksdT0oImFic29sdXRlIj09PXJ8fCJmaXhlZCI9PT1yKSYmYi5p
bkFycmF5KCJhdXRvIixbYSxzXSk+LTEsbD17fSxjPXt9LHAsZjt1PyhjPWku
cG9zaXRpb24oKSxwPWMudG9wLGY9Yy5sZWZ0KToocD1wYXJzZUZsb2F0KGEp
fHwwLGY9cGFyc2VGbG9hdChzKXx8MCksYi5pc0Z1bmN0aW9uKHQpJiYodD10
LmNhbGwoZSxuLG8pKSxudWxsIT10LnRvcCYmKGwudG9wPXQudG9wLW8udG9w
K3ApLG51bGwhPXQubGVmdCYmKGwubGVmdD10LmxlZnQtby5sZWZ0K2YpLCJ1
c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGwpOmkuY3NzKGwpfX0sYi5mbi5l
eHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGUs
dCxuPXt0b3A6MCxsZWZ0OjB9LHI9dGhpc1swXTtyZXR1cm4iZml4ZWQiPT09
Yi5jc3MociwicG9zaXRpb24iKT90PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk6KGU9dGhpcy5vZmZzZXRQYXJlbnQoKSx0PXRoaXMub2Zmc2V0KCksYi5u
b2RlTmFtZShlWzBdLCJodG1sIil8fChuPWUub2Zmc2V0KCkpLG4udG9wKz1i
LmNzcyhlWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLG4ubGVmdCs9Yi5jc3Mo
ZVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6dC50b3Atbi50b3At
Yi5jc3MociwibWFyZ2luVG9wIiwhMCksbGVmdDp0LmxlZnQtbi5sZWZ0LWIu
Y3NzKHIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9m
ZnNldFBhcmVudHx8by5kb2N1bWVudEVsZW1lbnQ7d2hpbGUoZSYmIWIubm9k
ZU5hbWUoZSwiaHRtbCIpJiYic3RhdGljIj09PWIuY3NzKGUsInBvc2l0aW9u
IikpZT1lLm9mZnNldFBhcmVudDtyZXR1cm4gZXx8by5kb2N1bWVudEVsZW1l
bnR9KX19KSxiLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3Jv
bGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oZSxuKXt2YXIgcj0vWS8u
dGVzdChuKTtiLmZuW2VdPWZ1bmN0aW9uKGkpe3JldHVybiBiLmFjY2Vzcyh0
aGlzLGZ1bmN0aW9uKGUsaSxvKXt2YXIgYT1vcihlKTtyZXR1cm4gbz09PXQ/
YT9uIGluIGE/YVtuXTphLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtpXTpl
W2ldOihhP2Euc2Nyb2xsVG8ocj9iKGEpLnNjcm9sbExlZnQoKTpvLHI/bzpi
KGEpLnNjcm9sbFRvcCgpKTplW2ldPW8sdCl9LGUsaSxhcmd1bWVudHMubGVu
Z3RoLG51bGwpfX0pO2Z1bmN0aW9uIG9yKGUpe3JldHVybiBiLmlzV2luZG93
KGUpP2U6OT09PWUubm9kZVR5cGU/ZS5kZWZhdWx0Vmlld3x8ZS5wYXJlbnRX
aW5kb3c6ITF9Yi5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRo
In0sZnVuY3Rpb24oZSxuKXtiLmVhY2goe3BhZGRpbmc6ImlubmVyIitlLGNv
bnRlbnQ6biwiIjoib3V0ZXIiK2V9LGZ1bmN0aW9uKHIsaSl7Yi5mbltpXT1m
dW5jdGlvbihpLG8pe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGgmJihyfHwiYm9v
bGVhbiIhPXR5cGVvZiBpKSxzPXJ8fChpPT09ITB8fG89PT0hMD8ibWFyZ2lu
IjoiYm9yZGVyIik7cmV0dXJuIGIuYWNjZXNzKHRoaXMsZnVuY3Rpb24obixy
LGkpe3ZhciBvO3JldHVybiBiLmlzV2luZG93KG4pP24uZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50WyJjbGllbnQiK2VdOjk9PT1uLm5vZGVUeXBlPyhvPW4u
ZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KG4uYm9keVsic2Nyb2xsIitlXSxv
WyJzY3JvbGwiK2VdLG4uYm9keVsib2Zmc2V0IitlXSxvWyJvZmZzZXQiK2Vd
LG9bImNsaWVudCIrZV0pKTppPT09dD9iLmNzcyhuLHIscyk6Yi5zdHlsZShu
LHIsaSxzKX0sbixhP2k6dCxhLG51bGwpfX0pfSksZS5qUXVlcnk9ZS4kPWIs
ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5l
LmFtZC5qUXVlcnkmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3Jl
dHVybiBifSl9KSh3aW5kb3cpOw==
'></script><script src='data:text/javascript;base64,IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gbiYmKG4ub3duZXJE
b2N1bWVudHx8bi5kb2N1bWVudHx8bikuZG9jdW1lbnRFbGVtZW50fWZ1bmN0
aW9uIHQobil7cmV0dXJuIG4mJihuLm93bmVyRG9jdW1lbnQmJm4ub3duZXJE
b2N1bWVudC5kZWZhdWx0Vmlld3x8bi5kb2N1bWVudCYmbnx8bi5kZWZhdWx0
Vmlldyl9ZnVuY3Rpb24gZShuLHQpe3JldHVybiB0Pm4/LTE6bj50PzE6bj49
dD8wOk5hTn1mdW5jdGlvbiByKG4pe3JldHVybiBudWxsPT09bj9OYU46K259
ZnVuY3Rpb24gaShuKXtyZXR1cm4haXNOYU4obil9ZnVuY3Rpb24gdShuKXty
ZXR1cm57bGVmdDpmdW5jdGlvbih0LGUscixpKXtmb3IoYXJndW1lbnRzLmxl
bmd0aDwzJiYocj0wKSxhcmd1bWVudHMubGVuZ3RoPDQmJihpPXQubGVuZ3Ro
KTtpPnI7KXt2YXIgdT1yK2k+Pj4xO24odFt1XSxlKTwwP3I9dSsxOmk9dX1y
ZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24odCxlLHIsaSl7Zm9yKGFyZ3VtZW50
cy5sZW5ndGg8MyYmKHI9MCksYXJndW1lbnRzLmxlbmd0aDw0JiYoaT10Lmxl
bmd0aCk7aT5yOyl7dmFyIHU9citpPj4+MTtuKHRbdV0sZSk+MD9pPXU6cj11
KzF9cmV0dXJuIHJ9fX1mdW5jdGlvbiBvKG4pe3JldHVybiBuLmxlbmd0aH1m
dW5jdGlvbiBhKG4pe2Zvcih2YXIgdD0xO24qdCUxOyl0Kj0xMDtyZXR1cm4g
dH1mdW5jdGlvbiBsKG4sdCl7Zm9yKHZhciBlIGluIHQpT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KG4ucHJvdG90eXBlLGUse3ZhbHVlOnRbZV0sZW51bWVyYWJs
ZTohMX0pfWZ1bmN0aW9uIGMoKXt0aGlzLl89T2JqZWN0LmNyZWF0ZShudWxs
KX1mdW5jdGlvbiBmKG4pe3JldHVybihuKz0iIik9PT1ib3x8blswXT09PV9v
P19vK246bn1mdW5jdGlvbiBzKG4pe3JldHVybihuKz0iIilbMF09PT1fbz9u
LnNsaWNlKDEpOm59ZnVuY3Rpb24gaChuKXtyZXR1cm4gZihuKWluIHRoaXMu
X31mdW5jdGlvbiBwKG4pe3JldHVybihuPWYobikpaW4gdGhpcy5fJiZkZWxl
dGUgdGhpcy5fW25dfWZ1bmN0aW9uIGcoKXt2YXIgbj1bXTtmb3IodmFyIHQg
aW4gdGhpcy5fKW4ucHVzaChzKHQpKTtyZXR1cm4gbn1mdW5jdGlvbiB2KCl7
dmFyIG49MDtmb3IodmFyIHQgaW4gdGhpcy5fKSsrbjtyZXR1cm4gbn1mdW5j
dGlvbiBkKCl7Zm9yKHZhciBuIGluIHRoaXMuXylyZXR1cm4hMTtyZXR1cm4h
MH1mdW5jdGlvbiB5KCl7dGhpcy5fPU9iamVjdC5jcmVhdGUobnVsbCl9ZnVu
Y3Rpb24gbShuKXtyZXR1cm4gbn1mdW5jdGlvbiBNKG4sdCxlKXtyZXR1cm4g
ZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHQsYXJndW1lbnRzKTtyZXR1cm4g
cj09PXQ/bjpyfX1mdW5jdGlvbiB4KG4sdCl7aWYodCBpbiBuKXJldHVybiB0
O3Q9dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2Zvcih2
YXIgZT0wLHI9d28ubGVuZ3RoO3I+ZTsrK2Upe3ZhciBpPXdvW2VdK3Q7aWYo
aSBpbiBuKXJldHVybiBpfX1mdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIF8oKXt9
ZnVuY3Rpb24gdyhuKXtmdW5jdGlvbiB0KCl7Zm9yKHZhciB0LHI9ZSxpPS0x
LHU9ci5sZW5ndGg7KytpPHU7KSh0PXJbaV0ub24pJiZ0LmFwcGx5KHRoaXMs
YXJndW1lbnRzKTtyZXR1cm4gbn12YXIgZT1bXSxyPW5ldyBjO3JldHVybiB0
Lm9uPWZ1bmN0aW9uKHQsaSl7dmFyIHUsbz1yLmdldCh0KTtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aDwyP28mJm8ub246KG8mJihvLm9uPW51bGwsZT1lLnNs
aWNlKDAsdT1lLmluZGV4T2YobykpLmNvbmNhdChlLnNsaWNlKHUrMSkpLHIu
cmVtb3ZlKHQpKSxpJiZlLnB1c2goci5zZXQodCx7b246aX0pKSxuKX0sdH1m
dW5jdGlvbiBTKCl7YW8uZXZlbnQucHJldmVudERlZmF1bHQoKX1mdW5jdGlv
biBrKCl7Zm9yKHZhciBuLHQ9YW8uZXZlbnQ7bj10LnNvdXJjZUV2ZW50Oyl0
PW47cmV0dXJuIHR9ZnVuY3Rpb24gTihuKXtmb3IodmFyIHQ9bmV3IF8sZT0w
LHI9YXJndW1lbnRzLmxlbmd0aDsrK2U8cjspdFthcmd1bWVudHNbZV1dPXco
dCk7cmV0dXJuIHQub2Y9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rpb24o
aSl7dHJ5e3ZhciB1PWkuc291cmNlRXZlbnQ9YW8uZXZlbnQ7aS50YXJnZXQ9
bixhby5ldmVudD1pLHRbaS50eXBlXS5hcHBseShlLHIpfWZpbmFsbHl7YW8u
ZXZlbnQ9dX19fSx0fWZ1bmN0aW9uIEUobil7cmV0dXJuIGtvKG4sQ28pLG59
ZnVuY3Rpb24gQShuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1
bmN0aW9uKCl7cmV0dXJuIE5vKG4sdGhpcyl9fWZ1bmN0aW9uIEMobil7cmV0
dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBF
byhuLHRoaXMpfX1mdW5jdGlvbiB6KG4sdCl7ZnVuY3Rpb24gZSgpe3RoaXMu
cmVtb3ZlQXR0cmlidXRlKG4pfWZ1bmN0aW9uIHIoKXt0aGlzLnJlbW92ZUF0
dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCl9ZnVuY3Rpb24gaSgpe3RoaXMu
c2V0QXR0cmlidXRlKG4sdCl9ZnVuY3Rpb24gdSgpe3RoaXMuc2V0QXR0cmli
dXRlTlMobi5zcGFjZSxuLmxvY2FsLHQpfWZ1bmN0aW9uIG8oKXt2YXIgZT10
LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0
cmlidXRlKG4pOnRoaXMuc2V0QXR0cmlidXRlKG4sZSl9ZnVuY3Rpb24gYSgp
e3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/dGhpcy5y
ZW1vdmVBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOnRoaXMuc2V0QXR0
cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsLGUpfXJldHVybiBuPWFvLm5zLnF1
YWxpZnkobiksbnVsbD09dD9uLmxvY2FsP3I6ZToiZnVuY3Rpb24iPT10eXBl
b2YgdD9uLmxvY2FsP2E6bzpuLmxvY2FsP3U6aX1mdW5jdGlvbiBMKG4pe3Jl
dHVybiBuLnRyaW0oKS5yZXBsYWNlKC9ccysvZywiICIpfWZ1bmN0aW9uIHEo
bil7cmV0dXJuIG5ldyBSZWdFeHAoIig/Ol58XFxzKykiK2FvLnJlcXVvdGUo
bikrIig/Olxccyt8JCkiLCJnIil9ZnVuY3Rpb24gVChuKXtyZXR1cm4obisi
IikudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIFIobix0KXtmdW5j
dGlvbiBlKCl7Zm9yKHZhciBlPS0xOysrZTxpOyluW2VdKHRoaXMsdCl9ZnVu
Y3Rpb24gcigpe2Zvcih2YXIgZT0tMSxyPXQuYXBwbHkodGhpcyxhcmd1bWVu
dHMpOysrZTxpOyluW2VdKHRoaXMscil9bj1UKG4pLm1hcChEKTt2YXIgaT1u
Lmxlbmd0aDtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9yOmV9ZnVuY3Rp
b24gRChuKXt2YXIgdD1xKG4pO3JldHVybiBmdW5jdGlvbihlLHIpe2lmKGk9
ZS5jbGFzc0xpc3QpcmV0dXJuIHI/aS5hZGQobik6aS5yZW1vdmUobik7dmFy
IGk9ZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO3I/KHQubGFzdEluZGV4
PTAsdC50ZXN0KGkpfHxlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLEwoaSsiICIr
bikpKTplLnNldEF0dHJpYnV0ZSgiY2xhc3MiLEwoaS5yZXBsYWNlKHQsIiAi
KSkpfX1mdW5jdGlvbiBQKG4sdCxlKXtmdW5jdGlvbiByKCl7dGhpcy5zdHls
ZS5yZW1vdmVQcm9wZXJ0eShuKX1mdW5jdGlvbiBpKCl7dGhpcy5zdHlsZS5z
ZXRQcm9wZXJ0eShuLHQsZSl9ZnVuY3Rpb24gdSgpe3ZhciByPXQuYXBwbHko
dGhpcyxhcmd1bWVudHMpO251bGw9PXI/dGhpcy5zdHlsZS5yZW1vdmVQcm9w
ZXJ0eShuKTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4scixlKX1yZXR1cm4g
bnVsbD09dD9yOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3U6aX1mdW5jdGlvbiBV
KG4sdCl7ZnVuY3Rpb24gZSgpe2RlbGV0ZSB0aGlzW25dfWZ1bmN0aW9uIHIo
KXt0aGlzW25dPXR9ZnVuY3Rpb24gaSgpe3ZhciBlPXQuYXBwbHkodGhpcyxh
cmd1bWVudHMpO251bGw9PWU/ZGVsZXRlIHRoaXNbbl06dGhpc1tuXT1lfXJl
dHVybiBudWxsPT10P2U6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/aTpyfWZ1bmN0
aW9uIGoobil7ZnVuY3Rpb24gdCgpe3ZhciB0PXRoaXMub3duZXJEb2N1bWVu
dCxlPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBlPT09em8mJnQuZG9jdW1l
bnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PXpvP3QuY3JlYXRlRWxlbWVudChu
KTp0LmNyZWF0ZUVsZW1lbnROUyhlLG4pfWZ1bmN0aW9uIGUoKXtyZXR1cm4g
dGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLnNwYWNlLG4u
bG9jYWwpfXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246KG49YW8ubnMu
cXVhbGlmeShuKSkubG9jYWw/ZTp0fWZ1bmN0aW9uIEYoKXt2YXIgbj10aGlz
LnBhcmVudE5vZGU7biYmbi5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBI
KG4pe3JldHVybntfX2RhdGFfXzpufX1mdW5jdGlvbiBPKG4pe3JldHVybiBm
dW5jdGlvbigpe3JldHVybiBBbyh0aGlzLG4pfX1mdW5jdGlvbiBJKG4pe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RofHwobj1lKSxmdW5jdGlvbih0LGUpe3Jl
dHVybiB0JiZlP24odC5fX2RhdGFfXyxlLl9fZGF0YV9fKTohdC0hZX19ZnVu
Y3Rpb24gWShuLHQpe2Zvcih2YXIgZT0wLHI9bi5sZW5ndGg7cj5lO2UrKylm
b3IodmFyIGksdT1uW2VdLG89MCxhPXUubGVuZ3RoO2E+bztvKyspKGk9dVtv
XSkmJnQoaSxvLGUpO3JldHVybiBufWZ1bmN0aW9uIFoobil7cmV0dXJuIGtv
KG4scW8pLG59ZnVuY3Rpb24gVihuKXt2YXIgdCxlO3JldHVybiBmdW5jdGlv
bihyLGksdSl7dmFyIG8sYT1uW3VdLnVwZGF0ZSxsPWEubGVuZ3RoO2Zvcih1
IT1lJiYoZT11LHQ9MCksaT49dCYmKHQ9aSsxKTshKG89YVt0XSkmJisrdDxs
Oyk7cmV0dXJuIG99fWZ1bmN0aW9uIFgobix0LGUpe2Z1bmN0aW9uIHIoKXt2
YXIgdD10aGlzW29dO3QmJih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobix0
LHQuJCksZGVsZXRlIHRoaXNbb10pfWZ1bmN0aW9uIGkoKXt2YXIgaT1sKHQs
Y28oYXJndW1lbnRzKSk7ci5jYWxsKHRoaXMpLHRoaXMuYWRkRXZlbnRMaXN0
ZW5lcihuLHRoaXNbb109aSxpLiQ9ZSksaS5fPXR9ZnVuY3Rpb24gdSgpe3Zh
ciB0LGU9bmV3IFJlZ0V4cCgiXl9fb24oW14uXSspIithby5yZXF1b3RlKG4p
KyIkIik7Zm9yKHZhciByIGluIHRoaXMpaWYodD1yLm1hdGNoKGUpKXt2YXIg
aT10aGlzW3JdO3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0WzFdLGksaS4k
KSxkZWxldGUgdGhpc1tyXX19dmFyIG89Il9fb24iK24sYT1uLmluZGV4T2Yo
Ii4iKSxsPSQ7YT4wJiYobj1uLnNsaWNlKDAsYSkpO3ZhciBjPVRvLmdldChu
KTtyZXR1cm4gYyYmKG49YyxsPUIpLGE/dD9pOnI6dD9iOnV9ZnVuY3Rpb24g
JChuLHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1hby5ldmVudDthby5l
dmVudD1lLHRbMF09dGhpcy5fX2RhdGFfXzt0cnl7bi5hcHBseSh0aGlzLHQp
fWZpbmFsbHl7YW8uZXZlbnQ9cn19fWZ1bmN0aW9uIEIobix0KXt2YXIgZT0k
KG4sdCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMscj1uLnJlbGF0
ZWRUYXJnZXQ7ciYmKHI9PT10fHw4JnIuY29tcGFyZURvY3VtZW50UG9zaXRp
b24odCkpfHxlLmNhbGwodCxuKX19ZnVuY3Rpb24gVyhlKXt2YXIgcj0iLmRy
YWdzdXBwcmVzcy0iKyArK0RvLGk9ImNsaWNrIityLHU9YW8uc2VsZWN0KHQo
ZSkpLm9uKCJ0b3VjaG1vdmUiK3IsUykub24oImRyYWdzdGFydCIrcixTKS5v
bigic2VsZWN0c3RhcnQiK3IsUyk7aWYobnVsbD09Um8mJihSbz0ib25zZWxl
Y3RzdGFydCJpbiBlPyExOngoZS5zdHlsZSwidXNlclNlbGVjdCIpKSxSbyl7
dmFyIG89bihlKS5zdHlsZSxhPW9bUm9dO29bUm9dPSJub25lIn1yZXR1cm4g
ZnVuY3Rpb24obil7aWYodS5vbihyLG51bGwpLFJvJiYob1tSb109YSksbil7
dmFyIHQ9ZnVuY3Rpb24oKXt1Lm9uKGksbnVsbCl9O3Uub24oaSxmdW5jdGlv
bigpe1MoKSx0KCl9LCEwKSxzZXRUaW1lb3V0KHQsMCl9fX1mdW5jdGlvbiBK
KG4sZSl7ZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1sw
XSk7dmFyIHI9bi5vd25lclNWR0VsZW1lbnR8fG47aWYoci5jcmVhdGVTVkdQ
b2ludCl7dmFyIGk9ci5jcmVhdGVTVkdQb2ludCgpO2lmKDA+UG8pe3ZhciB1
PXQobik7aWYodS5zY3JvbGxYfHx1LnNjcm9sbFkpe3I9YW8uc2VsZWN0KCJi
b2R5IikuYXBwZW5kKCJzdmciKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRl
Iix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAscGFkZGluZzowLGJvcmRlcjoibm9u
ZSJ9LCJpbXBvcnRhbnQiKTt2YXIgbz1yWzBdWzBdLmdldFNjcmVlbkNUTSgp
O1BvPSEoby5mfHxvLmUpLHIucmVtb3ZlKCl9fXJldHVybiBQbz8oaS54PWUu
cGFnZVgsaS55PWUucGFnZVkpOihpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVu
dFkpLGk9aS5tYXRyaXhUcmFuc2Zvcm0obi5nZXRTY3JlZW5DVE0oKS5pbnZl
cnNlKCkpLFtpLngsaS55XX12YXIgYT1uLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpO3JldHVybltlLmNsaWVudFgtYS5sZWZ0LW4uY2xpZW50TGVmdCxlLmNs
aWVudFktYS50b3Atbi5jbGllbnRUb3BdfWZ1bmN0aW9uIEcoKXtyZXR1cm4g
YW8uZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmllcn1mdW5jdGlv
biBLKG4pe3JldHVybiBuPjA/MTowPm4/LTE6MH1mdW5jdGlvbiBRKG4sdCxl
KXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS1uWzFdKS0odFsxXS1uWzFdKSoo
ZVswXS1uWzBdKX1mdW5jdGlvbiBubihuKXtyZXR1cm4gbj4xPzA6LTE+bj9G
bzpNYXRoLmFjb3Mobil9ZnVuY3Rpb24gdG4obil7cmV0dXJuIG4+MT9Jbzot
MT5uPy1JbzpNYXRoLmFzaW4obil9ZnVuY3Rpb24gZW4obil7cmV0dXJuKChu
PU1hdGguZXhwKG4pKS0xL24pLzJ9ZnVuY3Rpb24gcm4obil7cmV0dXJuKChu
PU1hdGguZXhwKG4pKSsxL24pLzJ9ZnVuY3Rpb24gdW4obil7cmV0dXJuKChu
PU1hdGguZXhwKDIqbikpLTEpLyhuKzEpfWZ1bmN0aW9uIG9uKG4pe3JldHVy
bihuPU1hdGguc2luKG4vMikpKm59ZnVuY3Rpb24gYW4oKXt9ZnVuY3Rpb24g
bG4obix0LGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbG4/KHRoaXMuaD0r
bix0aGlzLnM9K3Qsdm9pZCh0aGlzLmw9K2UpKTphcmd1bWVudHMubGVuZ3Ro
PDI/biBpbnN0YW5jZW9mIGxuP25ldyBsbihuLmgsbi5zLG4ubCk6X24oIiIr
bix3bixsbik6bmV3IGxuKG4sdCxlKX1mdW5jdGlvbiBjbihuLHQsZSl7ZnVu
Y3Rpb24gcihuKXtyZXR1cm4gbj4zNjA/bi09MzYwOjA+biYmKG4rPTM2MCks
NjA+bj91KyhvLXUpKm4vNjA6MTgwPm4/bzoyNDA+bj91KyhvLXUpKigyNDAt
bikvNjA6dX1mdW5jdGlvbiBpKG4pe3JldHVybiBNYXRoLnJvdW5kKDI1NSpy
KG4pKX12YXIgdSxvO3JldHVybiBuPWlzTmFOKG4pPzA6KG4lPTM2MCk8MD9u
KzM2MDpuLHQ9aXNOYU4odCk/MDowPnQ/MDp0PjE/MTp0LGU9MD5lPzA6ZT4x
PzE6ZSxvPS41Pj1lP2UqKDErdCk6ZSt0LWUqdCx1PTIqZS1vLG5ldyBtbihp
KG4rMTIwKSxpKG4pLGkobi0xMjApKX1mdW5jdGlvbiBmbihuLHQsZSl7cmV0
dXJuIHRoaXMgaW5zdGFuY2VvZiBmbj8odGhpcy5oPStuLHRoaXMuYz0rdCx2
b2lkKHRoaXMubD0rZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNl
b2YgZm4/bmV3IGZuKG4uaCxuLmMsbi5sKTpuIGluc3RhbmNlb2YgaG4/Z24o
bi5sLG4uYSxuLmIpOmduKChuPVNuKChuPWFvLnJnYihuKSkucixuLmcsbi5i
KSkubCxuLmEsbi5iKTpuZXcgZm4obix0LGUpfWZ1bmN0aW9uIHNuKG4sdCxl
KXtyZXR1cm4gaXNOYU4obikmJihuPTApLGlzTmFOKHQpJiYodD0wKSxuZXcg
aG4oZSxNYXRoLmNvcyhuKj1ZbykqdCxNYXRoLnNpbihuKSp0KX1mdW5jdGlv
biBobihuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBobj8odGhpcy5s
PStuLHRoaXMuYT0rdCx2b2lkKHRoaXMuYj0rZSkpOmFyZ3VtZW50cy5sZW5n
dGg8Mj9uIGluc3RhbmNlb2YgaG4/bmV3IGhuKG4ubCxuLmEsbi5iKTpuIGlu
c3RhbmNlb2YgZm4/c24obi5oLG4uYyxuLmwpOlNuKChuPW1uKG4pKS5yLG4u
ZyxuLmIpOm5ldyBobihuLHQsZSl9ZnVuY3Rpb24gcG4obix0LGUpe3ZhciBy
PShuKzE2KS8xMTYsaT1yK3QvNTAwLHU9ci1lLzIwMDtyZXR1cm4gaT12bihp
KSpuYSxyPXZuKHIpKnRhLHU9dm4odSkqZWEsbmV3IG1uKHluKDMuMjQwNDU0
MippLTEuNTM3MTM4NSpyLS40OTg1MzE0KnUpLHluKC0uOTY5MjY2KmkrMS44
NzYwMTA4KnIrLjA0MTU1Nip1KSx5biguMDU1NjQzNCppLS4yMDQwMjU5KnIr
MS4wNTcyMjUyKnUpKX1mdW5jdGlvbiBnbihuLHQsZSl7cmV0dXJuIG4+MD9u
ZXcgZm4oTWF0aC5hdGFuMihlLHQpKlpvLE1hdGguc3FydCh0KnQrZSplKSxu
KTpuZXcgZm4oTmFOLE5hTixuKX1mdW5jdGlvbiB2bihuKXtyZXR1cm4gbj4u
MjA2ODkzMDM0P24qbipuOihuLTQvMjkpLzcuNzg3MDM3fWZ1bmN0aW9uIGRu
KG4pe3JldHVybiBuPi4wMDg4NTY/TWF0aC5wb3cobiwxLzMpOjcuNzg3MDM3
Km4rNC8yOX1mdW5jdGlvbiB5bihuKXtyZXR1cm4gTWF0aC5yb3VuZCgyNTUq
KC4wMDMwND49bj8xMi45MipuOjEuMDU1Kk1hdGgucG93KG4sMS8yLjQpLS4w
NTUpKX1mdW5jdGlvbiBtbihuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2Vv
ZiBtbj8odGhpcy5yPX5+bix0aGlzLmc9fn50LHZvaWQodGhpcy5iPX5+ZSkp
OmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2YgbW4/bmV3IG1uKG4u
cixuLmcsbi5iKTpfbigiIituLG1uLGNuKTpuZXcgbW4obix0LGUpfWZ1bmN0
aW9uIE1uKG4pe3JldHVybiBuZXcgbW4obj4+MTYsbj4+OCYyNTUsMjU1Jm4p
fWZ1bmN0aW9uIHhuKG4pe3JldHVybiBNbihuKSsiIn1mdW5jdGlvbiBibihu
KXtyZXR1cm4gMTY+bj8iMCIrTWF0aC5tYXgoMCxuKS50b1N0cmluZygxNik6
TWF0aC5taW4oMjU1LG4pLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBfbihuLHQs
ZSl7dmFyIHIsaSx1LG89MCxhPTAsbD0wO2lmKHI9LyhbYS16XSspXCgoLiop
XCkvLmV4ZWMobj1uLnRvTG93ZXJDYXNlKCkpKXN3aXRjaChpPXJbMl0uc3Bs
aXQoIiwiKSxyWzFdKXtjYXNlImhzbCI6cmV0dXJuIGUocGFyc2VGbG9hdChp
WzBdKSxwYXJzZUZsb2F0KGlbMV0pLzEwMCxwYXJzZUZsb2F0KGlbMl0pLzEw
MCk7Y2FzZSJyZ2IiOnJldHVybiB0KE5uKGlbMF0pLE5uKGlbMV0pLE5uKGlb
Ml0pKX1yZXR1cm4odT11YS5nZXQobikpP3QodS5yLHUuZyx1LmIpOihudWxs
PT1ufHwiIyIhPT1uLmNoYXJBdCgwKXx8aXNOYU4odT1wYXJzZUludChuLnNs
aWNlKDEpLDE2KSl8fCg0PT09bi5sZW5ndGg/KG89KDM4NDAmdSk+PjQsbz1v
Pj40fG8sYT0yNDAmdSxhPWE+PjR8YSxsPTE1JnUsbD1sPDw0fGwpOjc9PT1u
Lmxlbmd0aCYmKG89KDE2NzExNjgwJnUpPj4xNixhPSg2NTI4MCZ1KT4+OCxs
PTI1NSZ1KSksdChvLGEsbCkpfWZ1bmN0aW9uIHduKG4sdCxlKXt2YXIgcixp
LHU9TWF0aC5taW4obi89MjU1LHQvPTI1NSxlLz0yNTUpLG89TWF0aC5tYXgo
bix0LGUpLGE9by11LGw9KG8rdSkvMjtyZXR1cm4gYT8oaT0uNT5sP2EvKG8r
dSk6YS8oMi1vLXUpLHI9bj09bz8odC1lKS9hKyhlPnQ/NjowKTp0PT1vPyhl
LW4pL2ErMjoobi10KS9hKzQscio9NjApOihyPU5hTixpPWw+MCYmMT5sPzA6
ciksbmV3IGxuKHIsaSxsKX1mdW5jdGlvbiBTbihuLHQsZSl7bj1rbihuKSx0
PWtuKHQpLGU9a24oZSk7dmFyIHI9ZG4oKC40MTI0NTY0Km4rLjM1NzU3NjEq
dCsuMTgwNDM3NSplKS9uYSksaT1kbigoLjIxMjY3MjkqbisuNzE1MTUyMip0
Ky4wNzIxNzUqZSkvdGEpLHU9ZG4oKC4wMTkzMzM5Km4rLjExOTE5Mip0Ky45
NTAzMDQxKmUpL2VhKTtyZXR1cm4gaG4oMTE2KmktMTYsNTAwKihyLWkpLDIw
MCooaS11KSl9ZnVuY3Rpb24ga24obil7cmV0dXJuKG4vPTI1NSk8PS4wNDA0
NT9uLzEyLjkyOk1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rp
b24gTm4obil7dmFyIHQ9cGFyc2VGbG9hdChuKTtyZXR1cm4iJSI9PT1uLmNo
YXJBdChuLmxlbmd0aC0xKT9NYXRoLnJvdW5kKDIuNTUqdCk6dH1mdW5jdGlv
biBFbihuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9u
KCl7cmV0dXJuIG59fWZ1bmN0aW9uIEFuKG4pe3JldHVybiBmdW5jdGlvbih0
LGUscil7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24i
PT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpLENuKHQsZSxuLHIpfX1mdW5jdGlv
biBDbihuLHQsZSxyKXtmdW5jdGlvbiBpKCl7dmFyIG4sdD1sLnN0YXR1cztp
ZighdCYmTG4obCl8fHQ+PTIwMCYmMzAwPnR8fDMwND09PXQpe3RyeXtuPWUu
Y2FsbCh1LGwpfWNhdGNoKHIpe3JldHVybiB2b2lkIG8uZXJyb3IuY2FsbCh1
LHIpfW8ubG9hZC5jYWxsKHUsbil9ZWxzZSBvLmVycm9yLmNhbGwodSxsKX12
YXIgdT17fSxvPWFvLmRpc3BhdGNoKCJiZWZvcmVzZW5kIiwicHJvZ3Jlc3Mi
LCJsb2FkIiwiZXJyb3IiKSxhPXt9LGw9bmV3IFhNTEh0dHBSZXF1ZXN0LGM9
bnVsbDtyZXR1cm4hdGhpcy5YRG9tYWluUmVxdWVzdHx8IndpdGhDcmVkZW50
aWFscyJpbiBsfHwhL14oaHR0cChzKT86KT9cL1wvLy50ZXN0KG4pfHwobD1u
ZXcgWERvbWFpblJlcXVlc3QpLCJvbmxvYWQiaW4gbD9sLm9ubG9hZD1sLm9u
ZXJyb3I9aTpsLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2wucmVh
ZHlTdGF0ZT4zJiZpKCl9LGwub25wcm9ncmVzcz1mdW5jdGlvbihuKXt2YXIg
dD1hby5ldmVudDthby5ldmVudD1uO3RyeXtvLnByb2dyZXNzLmNhbGwodSxs
KX1maW5hbGx5e2FvLmV2ZW50PXR9fSx1LmhlYWRlcj1mdW5jdGlvbihuLHQp
e3JldHVybiBuPShuKyIiKS50b0xvd2VyQ2FzZSgpLGFyZ3VtZW50cy5sZW5n
dGg8Mj9hW25dOihudWxsPT10P2RlbGV0ZSBhW25dOmFbbl09dCsiIix1KX0s
dS5taW1lVHlwZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odD1udWxsPT1uP251bGw6bisiIix1KTp0fSx1LnJlc3BvbnNlVHlwZT1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uLHUpOmN9
LHUucmVzcG9uc2U9ZnVuY3Rpb24obil7cmV0dXJuIGU9bix1fSxbImdldCIs
InBvc3QiXS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3Vbbl09ZnVuY3Rpb24oKXty
ZXR1cm4gdS5zZW5kLmFwcGx5KHUsW25dLmNvbmNhdChjbyhhcmd1bWVudHMp
KSl9fSksdS5zZW5kPWZ1bmN0aW9uKGUscixpKXtpZigyPT09YXJndW1lbnRz
Lmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHImJihpPXIscj1udWxsKSxs
Lm9wZW4oZSxuLCEwKSxudWxsPT10fHwiYWNjZXB0ImluIGF8fChhLmFjY2Vw
dD10KyIsKi8qIiksbC5zZXRSZXF1ZXN0SGVhZGVyKWZvcih2YXIgZiBpbiBh
KWwuc2V0UmVxdWVzdEhlYWRlcihmLGFbZl0pO3JldHVybiBudWxsIT10JiZs
Lm92ZXJyaWRlTWltZVR5cGUmJmwub3ZlcnJpZGVNaW1lVHlwZSh0KSxudWxs
IT1jJiYobC5yZXNwb25zZVR5cGU9YyksbnVsbCE9aSYmdS5vbigiZXJyb3Ii
LGkpLm9uKCJsb2FkIixmdW5jdGlvbihuKXtpKG51bGwsbil9KSxvLmJlZm9y
ZXNlbmQuY2FsbCh1LGwpLGwuc2VuZChudWxsPT1yP251bGw6ciksdX0sdS5h
Ym9ydD1mdW5jdGlvbigpe3JldHVybiBsLmFib3J0KCksdX0sYW8ucmViaW5k
KHUsbywib24iKSxudWxsPT1yP3U6dS5nZXQoem4ocikpfWZ1bmN0aW9uIHpu
KG4pe3JldHVybiAxPT09bi5sZW5ndGg/ZnVuY3Rpb24odCxlKXtuKG51bGw9
PXQ/ZTpudWxsKX06bn1mdW5jdGlvbiBMbihuKXt2YXIgdD1uLnJlc3BvbnNl
VHlwZTtyZXR1cm4gdCYmInRleHQiIT09dD9uLnJlc3BvbnNlOm4ucmVzcG9u
c2VUZXh0fWZ1bmN0aW9uIHFuKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMubGVu
Z3RoOzI+ciYmKHQ9MCksMz5yJiYoZT1EYXRlLm5vdygpKTt2YXIgaT1lK3Qs
dT17YzpuLHQ6aSxuOm51bGx9O3JldHVybiBhYT9hYS5uPXU6b2E9dSxhYT11
LGxhfHwoY2E9Y2xlYXJUaW1lb3V0KGNhKSxsYT0xLGZhKFRuKSksdX1mdW5j
dGlvbiBUbigpe3ZhciBuPVJuKCksdD1EbigpLW47dD4yND8oaXNGaW5pdGUo
dCkmJihjbGVhclRpbWVvdXQoY2EpLGNhPXNldFRpbWVvdXQoVG4sdCkpLGxh
PTApOihsYT0xLGZhKFRuKSl9ZnVuY3Rpb24gUm4oKXtmb3IodmFyIG49RGF0
ZS5ub3coKSx0PW9hO3Q7KW4+PXQudCYmdC5jKG4tdC50KSYmKHQuYz1udWxs
KSx0PXQubjtyZXR1cm4gbn1mdW5jdGlvbiBEbigpe2Zvcih2YXIgbix0PW9h
LGU9MS8wO3Q7KXQuYz8odC50PGUmJihlPXQudCksdD0obj10KS5uKTp0PW4/
bi5uPXQubjpvYT10Lm47cmV0dXJuIGFhPW4sZX1mdW5jdGlvbiBQbihuLHQp
e3JldHVybiB0LShuP01hdGguY2VpbChNYXRoLmxvZyhuKS9NYXRoLkxOMTAp
OjEpfWZ1bmN0aW9uIFVuKG4sdCl7dmFyIGU9TWF0aC5wb3coMTAsMyp4byg4
LXQpKTtyZXR1cm57c2NhbGU6dD44P2Z1bmN0aW9uKG4pe3JldHVybiBuL2V9
OmZ1bmN0aW9uKG4pe3JldHVybiBuKmV9LHN5bWJvbDpufX1mdW5jdGlvbiBq
bihuKXt2YXIgdD1uLmRlY2ltYWwsZT1uLnRob3VzYW5kcyxyPW4uZ3JvdXBp
bmcsaT1uLmN1cnJlbmN5LHU9ciYmZT9mdW5jdGlvbihuLHQpe2Zvcih2YXIg
aT1uLmxlbmd0aCx1PVtdLG89MCxhPXJbMF0sbD0wO2k+MCYmYT4wJiYobCth
KzE+dCYmKGE9TWF0aC5tYXgoMSx0LWwpKSx1LnB1c2gobi5zdWJzdHJpbmco
aS09YSxpK2EpKSwhKChsKz1hKzEpPnQpKTspYT1yW289KG8rMSklci5sZW5n
dGhdO3JldHVybiB1LnJldmVyc2UoKS5qb2luKGUpfTptO3JldHVybiBmdW5j
dGlvbihuKXt2YXIgZT1oYS5leGVjKG4pLHI9ZVsxXXx8IiAiLG89ZVsyXXx8
Ij4iLGE9ZVszXXx8Ii0iLGw9ZVs0XXx8IiIsYz1lWzVdLGY9K2VbNl0scz1l
WzddLGg9ZVs4XSxwPWVbOV0sZz0xLHY9IiIsZD0iIix5PSExLG09ITA7c3dp
dGNoKGgmJihoPStoLnN1YnN0cmluZygxKSksKGN8fCIwIj09PXImJiI9Ij09
PW8pJiYoYz1yPSIwIixvPSI9IikscCl7Y2FzZSJuIjpzPSEwLHA9ImciO2Jy
ZWFrO2Nhc2UiJSI6Zz0xMDAsZD0iJSIscD0iZiI7YnJlYWs7Y2FzZSJwIjpn
PTEwMCxkPSIlIixwPSJyIjticmVhaztjYXNlImIiOmNhc2UibyI6Y2FzZSJ4
IjpjYXNlIlgiOiIjIj09PWwmJih2PSIwIitwLnRvTG93ZXJDYXNlKCkpO2Nh
c2UiYyI6bT0hMTtjYXNlImQiOnk9ITAsaD0wO2JyZWFrO2Nhc2UicyI6Zz0t
MSxwPSJyIn0iJCI9PT1sJiYodj1pWzBdLGQ9aVsxXSksInIiIT1wfHxofHwo
cD0iZyIpLG51bGwhPWgmJigiZyI9PXA/aD1NYXRoLm1heCgxLE1hdGgubWlu
KDIxLGgpKToiZSIhPXAmJiJmIiE9cHx8KGg9TWF0aC5tYXgoMCxNYXRoLm1p
bigyMCxoKSkpKSxwPXBhLmdldChwKXx8Rm47dmFyIE09YyYmcztyZXR1cm4g
ZnVuY3Rpb24obil7dmFyIGU9ZDtpZih5JiZuJTEpcmV0dXJuIiI7dmFyIGk9
MD5ufHwwPT09biYmMD4xL24/KG49LW4sIi0iKToiLSI9PT1hPyIiOmE7aWYo
MD5nKXt2YXIgbD1hby5mb3JtYXRQcmVmaXgobixoKTtuPWwuc2NhbGUobiks
ZT1sLnN5bWJvbCtkfWVsc2Ugbio9ZztuPXAobixoKTt2YXIgeCxiLF89bi5s
YXN0SW5kZXhPZigiLiIpO2lmKDA+Xyl7dmFyIHc9bT9uLmxhc3RJbmRleE9m
KCJlIik6LTE7MD53Pyh4PW4sYj0iIik6KHg9bi5zdWJzdHJpbmcoMCx3KSxi
PW4uc3Vic3RyaW5nKHcpKX1lbHNlIHg9bi5zdWJzdHJpbmcoMCxfKSxiPXQr
bi5zdWJzdHJpbmcoXysxKTshYyYmcyYmKHg9dSh4LDEvMCkpO3ZhciBTPXYu
bGVuZ3RoK3gubGVuZ3RoK2IubGVuZ3RoKyhNPzA6aS5sZW5ndGgpLGs9Zj5T
P25ldyBBcnJheShTPWYtUysxKS5qb2luKHIpOiIiO3JldHVybiBNJiYoeD11
KGsreCxrLmxlbmd0aD9mLWIubGVuZ3RoOjEvMCkpLGkrPXYsbj14K2IsKCI8
Ij09PW8/aStuK2s6Ij4iPT09bz9rK2krbjoiXiI9PT1vP2suc3Vic3RyaW5n
KDAsUz4+PTEpK2krbitrLnN1YnN0cmluZyhTKTppKyhNP246aytuKSkrZX19
fWZ1bmN0aW9uIEZuKG4pe3JldHVybiBuKyIifWZ1bmN0aW9uIEhuKCl7dGhp
cy5fPW5ldyBEYXRlKGFyZ3VtZW50cy5sZW5ndGg+MT9EYXRlLlVUQy5hcHBs
eSh0aGlzLGFyZ3VtZW50cyk6YXJndW1lbnRzWzBdKX1mdW5jdGlvbiBPbihu
LHQsZSl7ZnVuY3Rpb24gcih0KXt2YXIgZT1uKHQpLHI9dShlLDEpO3JldHVy
biByLXQ+dC1lP2U6cn1mdW5jdGlvbiBpKGUpe3JldHVybiB0KGU9bihuZXcg
dmEoZS0xKSksMSksZX1mdW5jdGlvbiB1KG4sZSl7cmV0dXJuIHQobj1uZXcg
dmEoK24pLGUpLG59ZnVuY3Rpb24gbyhuLHIsdSl7dmFyIG89aShuKSxhPVtd
O2lmKHU+MSlmb3IoO3I+bzspZShvKSV1fHxhLnB1c2gobmV3IERhdGUoK28p
KSx0KG8sMSk7ZWxzZSBmb3IoO3I+bzspYS5wdXNoKG5ldyBEYXRlKCtvKSks
dChvLDEpO3JldHVybiBhfWZ1bmN0aW9uIGEobix0LGUpe3RyeXt2YT1Ibjt2
YXIgcj1uZXcgSG47cmV0dXJuIHIuXz1uLG8ocix0LGUpfWZpbmFsbHl7dmE9
RGF0ZX19bi5mbG9vcj1uLG4ucm91bmQ9cixuLmNlaWw9aSxuLm9mZnNldD11
LG4ucmFuZ2U9bzt2YXIgbD1uLnV0Yz1JbihuKTtyZXR1cm4gbC5mbG9vcj1s
LGwucm91bmQ9SW4ociksbC5jZWlsPUluKGkpLGwub2Zmc2V0PUluKHUpLGwu
cmFuZ2U9YSxufWZ1bmN0aW9uIEluKG4pe3JldHVybiBmdW5jdGlvbih0LGUp
e3RyeXt2YT1Ibjt2YXIgcj1uZXcgSG47cmV0dXJuIHIuXz10LG4ocixlKS5f
fWZpbmFsbHl7dmE9RGF0ZX19fWZ1bmN0aW9uIFluKG4pe2Z1bmN0aW9uIHQo
bil7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGUsaSx1LG89W10sYT0tMSxsPTA7
KythPHI7KTM3PT09bi5jaGFyQ29kZUF0KGEpJiYoby5wdXNoKG4uc2xpY2Uo
bCxhKSksbnVsbCE9KGk9eWFbZT1uLmNoYXJBdCgrK2EpXSkmJihlPW4uY2hh
ckF0KCsrYSkpLCh1PUFbZV0pJiYoZT11KHQsbnVsbD09aT8iZSI9PT1lPyIg
IjoiMCI6aSkpLG8ucHVzaChlKSxsPWErMSk7cmV0dXJuIG8ucHVzaChuLnNs
aWNlKGwsYSkpLG8uam9pbigiIil9dmFyIHI9bi5sZW5ndGg7cmV0dXJuIHQu
cGFyc2U9ZnVuY3Rpb24odCl7dmFyIHI9e3k6MTkwMCxtOjAsZDoxLEg6MCxN
OjAsUzowLEw6MCxaOm51bGx9LGk9ZShyLG4sdCwwKTtpZihpIT10Lmxlbmd0
aClyZXR1cm4gbnVsbDsicCJpbiByJiYoci5IPXIuSCUxMisxMipyLnApO3Zh
ciB1PW51bGwhPXIuWiYmdmEhPT1IbixvPW5ldyh1P0huOnZhKTtyZXR1cm4i
aiJpbiByP28uc2V0RnVsbFllYXIoci55LDAsci5qKToiVyJpbiByfHwiVSJp
biByPygidyJpbiByfHwoci53PSJXImluIHI/MTowKSxvLnNldEZ1bGxZZWFy
KHIueSwwLDEpLG8uc2V0RnVsbFllYXIoci55LDAsIlciaW4gcj8oci53KzYp
JTcrNypyLlctKG8uZ2V0RGF5KCkrNSklNzpyLncrNypyLlUtKG8uZ2V0RGF5
KCkrNiklNykpOm8uc2V0RnVsbFllYXIoci55LHIubSxyLmQpLG8uc2V0SG91
cnMoci5IKyhyLlovMTAwfDApLHIuTStyLlolMTAwLHIuUyxyLkwpLHU/by5f
Om99LHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sdH1mdW5jdGlv
biBlKG4sdCxlLHIpe2Zvcih2YXIgaSx1LG8sYT0wLGw9dC5sZW5ndGgsYz1l
Lmxlbmd0aDtsPmE7KXtpZihyPj1jKXJldHVybi0xO2lmKGk9dC5jaGFyQ29k
ZUF0KGErKyksMzc9PT1pKXtpZihvPXQuY2hhckF0KGErKyksdT1DW28gaW4g
eWE/dC5jaGFyQXQoYSsrKTpvXSwhdXx8KHI9dShuLGUscikpPDApcmV0dXJu
LTF9ZWxzZSBpZihpIT1lLmNoYXJDb2RlQXQocisrKSlyZXR1cm4tMX1yZXR1
cm4gcn1mdW5jdGlvbiByKG4sdCxlKXtfLmxhc3RJbmRleD0wO3ZhciByPV8u
ZXhlYyh0LnNsaWNlKGUpKTtyZXR1cm4gcj8obi53PXcuZ2V0KHJbMF0udG9M
b3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaShuLHQs
ZSl7eC5sYXN0SW5kZXg9MDt2YXIgcj14LmV4ZWModC5zbGljZShlKSk7cmV0
dXJuIHI/KG4udz1iLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5s
ZW5ndGgpOi0xfWZ1bmN0aW9uIHUobix0LGUpe04ubGFzdEluZGV4PTA7dmFy
IHI9Ti5leGVjKHQuc2xpY2UoZSkpO3JldHVybiByPyhuLm09RS5nZXQoclsw
XS50b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBv
KG4sdCxlKXtTLmxhc3RJbmRleD0wO3ZhciByPVMuZXhlYyh0LnNsaWNlKGUp
KTtyZXR1cm4gcj8obi5tPWsuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZSty
WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYShuLHQscil7cmV0dXJuIGUobixB
LmMudG9TdHJpbmcoKSx0LHIpfWZ1bmN0aW9uIGwobix0LHIpe3JldHVybiBl
KG4sQS54LnRvU3RyaW5nKCksdCxyKX1mdW5jdGlvbiBjKG4sdCxyKXtyZXR1
cm4gZShuLEEuWC50b1N0cmluZygpLHQscil9ZnVuY3Rpb24gZihuLHQsZSl7
dmFyIHI9TS5nZXQodC5zbGljZShlLGUrPTIpLnRvTG93ZXJDYXNlKCkpO3Jl
dHVybiBudWxsPT1yPy0xOihuLnA9cixlKX12YXIgcz1uLmRhdGVUaW1lLGg9
bi5kYXRlLHA9bi50aW1lLGc9bi5wZXJpb2RzLHY9bi5kYXlzLGQ9bi5zaG9y
dERheXMseT1uLm1vbnRocyxtPW4uc2hvcnRNb250aHM7dC51dGM9ZnVuY3Rp
b24obil7ZnVuY3Rpb24gZShuKXt0cnl7dmE9SG47dmFyIHQ9bmV3IHZhO3Jl
dHVybiB0Ll89bixyKHQpfWZpbmFsbHl7dmE9RGF0ZX19dmFyIHI9dChuKTty
ZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuKXt0cnl7dmE9SG47dmFyIHQ9ci5w
YXJzZShuKTtyZXR1cm4gdCYmdC5ffWZpbmFsbHl7dmE9RGF0ZX19LGUudG9T
dHJpbmc9ci50b1N0cmluZyxlfSx0Lm11bHRpPXQudXRjLm11bHRpPWN0O3Zh
ciBNPWFvLm1hcCgpLHg9Vm4odiksYj1Ybih2KSxfPVZuKGQpLHc9WG4oZCks
Uz1Wbih5KSxrPVhuKHkpLE49Vm4obSksRT1YbihtKTtnLmZvckVhY2goZnVu
Y3Rpb24obix0KXtNLnNldChuLnRvTG93ZXJDYXNlKCksdCl9KTt2YXIgQT17
YTpmdW5jdGlvbihuKXtyZXR1cm4gZFtuLmdldERheSgpXX0sQTpmdW5jdGlv
bihuKXtyZXR1cm4gdltuLmdldERheSgpXX0sYjpmdW5jdGlvbihuKXtyZXR1
cm4gbVtuLmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uKG4pe3JldHVybiB5W24u
Z2V0TW9udGgoKV19LGM6dChzKSxkOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFpu
KG4uZ2V0RGF0ZSgpLHQsMil9LGU6ZnVuY3Rpb24obix0KXtyZXR1cm4gWm4o
bi5nZXREYXRlKCksdCwyKX0sSDpmdW5jdGlvbihuLHQpe3JldHVybiBabihu
LmdldEhvdXJzKCksdCwyKX0sSTpmdW5jdGlvbihuLHQpe3JldHVybiBabihu
LmdldEhvdXJzKCklMTJ8fDEyLHQsMil9LGo6ZnVuY3Rpb24obix0KXtyZXR1
cm4gWm4oMStnYS5kYXlPZlllYXIobiksdCwzKX0sTDpmdW5jdGlvbihuLHQp
e3JldHVybiBabihuLmdldE1pbGxpc2Vjb25kcygpLHQsMyl9LG06ZnVuY3Rp
b24obix0KXtyZXR1cm4gWm4obi5nZXRNb250aCgpKzEsdCwyKX0sTTpmdW5j
dGlvbihuLHQpe3JldHVybiBabihuLmdldE1pbnV0ZXMoKSx0LDIpfSxwOmZ1
bmN0aW9uKG4pe3JldHVybiBnWysobi5nZXRIb3VycygpPj0xMildfSxTOmZ1
bmN0aW9uKG4sdCl7cmV0dXJuIFpuKG4uZ2V0U2Vjb25kcygpLHQsMil9LFU6
ZnVuY3Rpb24obix0KXtyZXR1cm4gWm4oZ2Euc3VuZGF5T2ZZZWFyKG4pLHQs
Mil9LHc6ZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RGF5KCl9LFc6ZnVuY3Rp
b24obix0KXtyZXR1cm4gWm4oZ2EubW9uZGF5T2ZZZWFyKG4pLHQsMil9LHg6
dChoKSxYOnQocCkseTpmdW5jdGlvbihuLHQpe3JldHVybiBabihuLmdldEZ1
bGxZZWFyKCklMTAwLHQsMil9LFk6ZnVuY3Rpb24obix0KXtyZXR1cm4gWm4o
bi5nZXRGdWxsWWVhcigpJTFlNCx0LDQpfSxaOmF0LCIlIjpmdW5jdGlvbigp
e3JldHVybiIlIn19LEM9e2E6cixBOmksYjp1LEI6byxjOmEsZDp0dCxlOnR0
LEg6cnQsSTpydCxqOmV0LEw6b3QsbTpudCxNOml0LHA6ZixTOnV0LFU6Qm4s
dzokbixXOlduLHg6bCxYOmMseTpHbixZOkpuLFo6S24sIiUiOmx0fTtyZXR1
cm4gdH1mdW5jdGlvbiBabihuLHQsZSl7dmFyIHI9MD5uPyItIjoiIixpPShy
Py1uOm4pKyIiLHU9aS5sZW5ndGg7cmV0dXJuIHIrKGU+dT9uZXcgQXJyYXko
ZS11KzEpLmpvaW4odCkraTppKX1mdW5jdGlvbiBWbihuKXtyZXR1cm4gbmV3
IFJlZ0V4cCgiXig/OiIrbi5tYXAoYW8ucmVxdW90ZSkuam9pbigifCIpKyIp
IiwiaSIpfWZ1bmN0aW9uIFhuKG4pe2Zvcih2YXIgdD1uZXcgYyxlPS0xLHI9
bi5sZW5ndGg7KytlPHI7KXQuc2V0KG5bZV0udG9Mb3dlckNhc2UoKSxlKTty
ZXR1cm4gdH1mdW5jdGlvbiAkbihuLHQsZSl7bWEubGFzdEluZGV4PTA7dmFy
IHI9bWEuZXhlYyh0LnNsaWNlKGUsZSsxKSk7cmV0dXJuIHI/KG4udz0rclsw
XSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCbihuLHQsZSl7bWEubGFz
dEluZGV4PTA7dmFyIHI9bWEuZXhlYyh0LnNsaWNlKGUpKTtyZXR1cm4gcj8o
bi5VPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFduKG4sdCxl
KXttYS5sYXN0SW5kZXg9MDt2YXIgcj1tYS5leGVjKHQuc2xpY2UoZSkpO3Jl
dHVybiByPyhuLlc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24g
Sm4obix0LGUpe21hLmxhc3RJbmRleD0wO3ZhciByPW1hLmV4ZWModC5zbGlj
ZShlLGUrNCkpO3JldHVybiByPyhuLnk9K3JbMF0sZStyWzBdLmxlbmd0aCk6
LTF9ZnVuY3Rpb24gR24obix0LGUpe21hLmxhc3RJbmRleD0wO3ZhciByPW1h
LmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiByPyhuLnk9UW4oK3JbMF0p
LGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEtuKG4sdCxlKXtyZXR1cm4v
XlsrLV1cZHs0fSQvLnRlc3QodD10LnNsaWNlKGUsZSs1KSk/KG4uWj0tdCxl
KzUpOi0xfWZ1bmN0aW9uIFFuKG4pe3JldHVybiBuKyhuPjY4PzE5MDA6MmUz
KX1mdW5jdGlvbiBudChuLHQsZSl7bWEubGFzdEluZGV4PTA7dmFyIHI9bWEu
ZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KG4ubT1yWzBdLTEsZSty
WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdHQobix0LGUpe21hLmxhc3RJbmRl
eD0wO3ZhciByPW1hLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiByPyhu
LmQ9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZXQobix0LGUp
e21hLmxhc3RJbmRleD0wO3ZhciByPW1hLmV4ZWModC5zbGljZShlLGUrMykp
O3JldHVybiByPyhuLmo9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rp
b24gcnQobix0LGUpe21hLmxhc3RJbmRleD0wO3ZhciByPW1hLmV4ZWModC5z
bGljZShlLGUrMikpO3JldHVybiByPyhuLkg9K3JbMF0sZStyWzBdLmxlbmd0
aCk6LTF9ZnVuY3Rpb24gaXQobix0LGUpe21hLmxhc3RJbmRleD0wO3ZhciBy
PW1hLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiByPyhuLk09K3JbMF0s
ZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdXQobix0LGUpe21hLmxhc3RJ
bmRleD0wO3ZhciByPW1hLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiBy
PyhuLlM9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gb3Qobix0
LGUpe21hLmxhc3RJbmRleD0wO3ZhciByPW1hLmV4ZWModC5zbGljZShlLGUr
MykpO3JldHVybiByPyhuLkw9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVu
Y3Rpb24gYXQobil7dmFyIHQ9bi5nZXRUaW1lem9uZU9mZnNldCgpLGU9dD4w
PyItIjoiKyIscj14byh0KS82MHwwLGk9eG8odCklNjA7cmV0dXJuIGUrWm4o
ciwiMCIsMikrWm4oaSwiMCIsMil9ZnVuY3Rpb24gbHQobix0LGUpe01hLmxh
c3RJbmRleD0wO3ZhciByPU1hLmV4ZWModC5zbGljZShlLGUrMSkpO3JldHVy
biByP2UrclswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gY3Qobil7Zm9yKHZhciB0
PW4ubGVuZ3RoLGU9LTE7KytlPHQ7KW5bZV1bMF09dGhpcyhuW2VdWzBdKTty
ZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj1uW2VdOyFyWzFdKHQp
OylyPW5bKytlXTtyZXR1cm4gclswXSh0KX19ZnVuY3Rpb24gZnQoKXt9ZnVu
Y3Rpb24gc3Qobix0LGUpe3ZhciByPWUucz1uK3QsaT1yLW4sdT1yLWk7ZS50
PW4tdSsodC1pKX1mdW5jdGlvbiBodChuLHQpe24mJndhLmhhc093blByb3Bl
cnR5KG4udHlwZSkmJndhW24udHlwZV0obix0KX1mdW5jdGlvbiBwdChuLHQs
ZSl7dmFyIHIsaT0tMSx1PW4ubGVuZ3RoLWU7Zm9yKHQubGluZVN0YXJ0KCk7
KytpPHU7KXI9bltpXSx0LnBvaW50KHJbMF0sclsxXSxyWzJdKTt0LmxpbmVF
bmQoKX1mdW5jdGlvbiBndChuLHQpe3ZhciBlPS0xLHI9bi5sZW5ndGg7Zm9y
KHQucG9seWdvblN0YXJ0KCk7KytlPHI7KXB0KG5bZV0sdCwxKTt0LnBvbHln
b25FbmQoKX1mdW5jdGlvbiB2dCgpe2Z1bmN0aW9uIG4obix0KXtuKj1Zbyx0
PXQqWW8vMitGby80O3ZhciBlPW4tcixvPWU+PTA/MTotMSxhPW8qZSxsPU1h
dGguY29zKHQpLGM9TWF0aC5zaW4odCksZj11KmMscz1pKmwrZipNYXRoLmNv
cyhhKSxoPWYqbypNYXRoLnNpbihhKTtrYS5hZGQoTWF0aC5hdGFuMihoLHMp
KSxyPW4saT1sLHU9Y312YXIgdCxlLHIsaSx1O05hLnBvaW50PWZ1bmN0aW9u
KG8sYSl7TmEucG9pbnQ9bixyPSh0PW8pKllvLGk9TWF0aC5jb3MoYT0oZT1h
KSpZby8yK0ZvLzQpLHU9TWF0aC5zaW4oYSl9LE5hLmxpbmVFbmQ9ZnVuY3Rp
b24oKXtuKHQsZSl9fWZ1bmN0aW9uIGR0KG4pe3ZhciB0PW5bMF0sZT1uWzFd
LHI9TWF0aC5jb3MoZSk7cmV0dXJuW3IqTWF0aC5jb3ModCkscipNYXRoLnNp
bih0KSxNYXRoLnNpbihlKV19ZnVuY3Rpb24geXQobix0KXtyZXR1cm4gblsw
XSp0WzBdK25bMV0qdFsxXStuWzJdKnRbMl19ZnVuY3Rpb24gbXQobix0KXty
ZXR1cm5bblsxXSp0WzJdLW5bMl0qdFsxXSxuWzJdKnRbMF0tblswXSp0WzJd
LG5bMF0qdFsxXS1uWzFdKnRbMF1dfWZ1bmN0aW9uIE10KG4sdCl7blswXSs9
dFswXSxuWzFdKz10WzFdLG5bMl0rPXRbMl19ZnVuY3Rpb24geHQobix0KXty
ZXR1cm5bblswXSp0LG5bMV0qdCxuWzJdKnRdfWZ1bmN0aW9uIGJ0KG4pe3Zh
ciB0PU1hdGguc3FydChuWzBdKm5bMF0rblsxXSpuWzFdK25bMl0qblsyXSk7
blswXS89dCxuWzFdLz10LG5bMl0vPXR9ZnVuY3Rpb24gX3Qobil7cmV0dXJu
W01hdGguYXRhbjIoblsxXSxuWzBdKSx0bihuWzJdKV19ZnVuY3Rpb24gd3Qo
bix0KXtyZXR1cm4geG8oblswXS10WzBdKTxVbyYmeG8oblsxXS10WzFdKTxV
b31mdW5jdGlvbiBTdChuLHQpe24qPVlvO3ZhciBlPU1hdGguY29zKHQqPVlv
KTtrdChlKk1hdGguY29zKG4pLGUqTWF0aC5zaW4obiksTWF0aC5zaW4odCkp
fWZ1bmN0aW9uIGt0KG4sdCxlKXsrK0VhLENhKz0obi1DYSkvRWEsemErPSh0
LXphKS9FYSxMYSs9KGUtTGEpL0VhfWZ1bmN0aW9uIE50KCl7ZnVuY3Rpb24g
bihuLGkpe24qPVlvO3ZhciB1PU1hdGguY29zKGkqPVlvKSxvPXUqTWF0aC5j
b3MobiksYT11Kk1hdGguc2luKG4pLGw9TWF0aC5zaW4oaSksYz1NYXRoLmF0
YW4yKE1hdGguc3FydCgoYz1lKmwtciphKSpjKyhjPXIqby10KmwpKmMrKGM9
dCphLWUqbykqYyksdCpvK2UqYStyKmwpO0FhKz1jLHFhKz1jKih0Kyh0PW8p
KSxUYSs9YyooZSsoZT1hKSksUmErPWMqKHIrKHI9bCkpLGt0KHQsZSxyKX12
YXIgdCxlLHI7amEucG9pbnQ9ZnVuY3Rpb24oaSx1KXtpKj1Zbzt2YXIgbz1N
YXRoLmNvcyh1Kj1Zbyk7dD1vKk1hdGguY29zKGkpLGU9bypNYXRoLnNpbihp
KSxyPU1hdGguc2luKHUpLGphLnBvaW50PW4sa3QodCxlLHIpfX1mdW5jdGlv
biBFdCgpe2phLnBvaW50PVN0fWZ1bmN0aW9uIEF0KCl7ZnVuY3Rpb24gbihu
LHQpe24qPVlvO3ZhciBlPU1hdGguY29zKHQqPVlvKSxvPWUqTWF0aC5jb3Mo
biksYT1lKk1hdGguc2luKG4pLGw9TWF0aC5zaW4odCksYz1pKmwtdSphLGY9
dSpvLXIqbCxzPXIqYS1pKm8saD1NYXRoLnNxcnQoYypjK2YqZitzKnMpLHA9
cipvK2kqYSt1KmwsZz1oJiYtbm4ocCkvaCx2PU1hdGguYXRhbjIoaCxwKTtE
YSs9ZypjLFBhKz1nKmYsVWErPWcqcyxBYSs9dixxYSs9dioocisocj1vKSks
VGErPXYqKGkrKGk9YSkpLFJhKz12Kih1Kyh1PWwpKSxrdChyLGksdSl9dmFy
IHQsZSxyLGksdTtqYS5wb2ludD1mdW5jdGlvbihvLGEpe3Q9byxlPWEsamEu
cG9pbnQ9bixvKj1Zbzt2YXIgbD1NYXRoLmNvcyhhKj1Zbyk7cj1sKk1hdGgu
Y29zKG8pLGk9bCpNYXRoLnNpbihvKSx1PU1hdGguc2luKGEpLGt0KHIsaSx1
KX0samEubGluZUVuZD1mdW5jdGlvbigpe24odCxlKSxqYS5saW5lRW5kPUV0
LGphLnBvaW50PVN0fX1mdW5jdGlvbiBDdChuLHQpe2Z1bmN0aW9uIGUoZSxy
KXtyZXR1cm4gZT1uKGUsciksdChlWzBdLGVbMV0pfXJldHVybiBuLmludmVy
dCYmdC5pbnZlcnQmJihlLmludmVydD1mdW5jdGlvbihlLHIpe3JldHVybiBl
PXQuaW52ZXJ0KGUsciksZSYmbi5pbnZlcnQoZVswXSxlWzFdKX0pLGV9ZnVu
Y3Rpb24genQoKXtyZXR1cm4hMH1mdW5jdGlvbiBMdChuLHQsZSxyLGkpe3Zh
ciB1PVtdLG89W107aWYobi5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKCEoKHQ9
bi5sZW5ndGgtMSk8PTApKXt2YXIgdCxlPW5bMF0scj1uW3RdO2lmKHd0KGUs
cikpe2kubGluZVN0YXJ0KCk7Zm9yKHZhciBhPTA7dD5hOysrYSlpLnBvaW50
KChlPW5bYV0pWzBdLGVbMV0pO3JldHVybiB2b2lkIGkubGluZUVuZCgpfXZh
ciBsPW5ldyBUdChlLG4sbnVsbCwhMCksYz1uZXcgVHQoZSxudWxsLGwsITEp
O2wubz1jLHUucHVzaChsKSxvLnB1c2goYyksbD1uZXcgVHQocixuLG51bGws
ITEpLGM9bmV3IFR0KHIsbnVsbCxsLCEwKSxsLm89Yyx1LnB1c2gobCksby5w
dXNoKGMpfX0pLG8uc29ydCh0KSxxdCh1KSxxdChvKSx1Lmxlbmd0aCl7Zm9y
KHZhciBhPTAsbD1lLGM9by5sZW5ndGg7Yz5hOysrYSlvW2FdLmU9bD0hbDtm
b3IodmFyIGYscyxoPXVbMF07Oyl7Zm9yKHZhciBwPWgsZz0hMDtwLnY7KWlm
KChwPXAubik9PT1oKXJldHVybjtmPXAueixpLmxpbmVTdGFydCgpO2Rve2lm
KHAudj1wLm8udj0hMCxwLmUpe2lmKGcpZm9yKHZhciBhPTAsYz1mLmxlbmd0
aDtjPmE7KythKWkucG9pbnQoKHM9ZlthXSlbMF0sc1sxXSk7ZWxzZSByKHAu
eCxwLm4ueCwxLGkpO3A9cC5ufWVsc2V7aWYoZyl7Zj1wLnAuejtmb3IodmFy
IGE9Zi5sZW5ndGgtMTthPj0wOy0tYSlpLnBvaW50KChzPWZbYV0pWzBdLHNb
MV0pfWVsc2UgcihwLngscC5wLngsLTEsaSk7cD1wLnB9cD1wLm8sZj1wLnos
Zz0hZ313aGlsZSghcC52KTtpLmxpbmVFbmQoKX19fWZ1bmN0aW9uIHF0KG4p
e2lmKHQ9bi5sZW5ndGgpe2Zvcih2YXIgdCxlLHI9MCxpPW5bMF07KytyPHQ7
KWkubj1lPW5bcl0sZS5wPWksaT1lO2kubj1lPW5bMF0sZS5wPWl9fWZ1bmN0
aW9uIFR0KG4sdCxlLHIpe3RoaXMueD1uLHRoaXMuej10LHRoaXMubz1lLHRo
aXMuZT1yLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24g
UnQobix0LGUscil7cmV0dXJuIGZ1bmN0aW9uKGksdSl7ZnVuY3Rpb24gbyh0
LGUpe3ZhciByPWkodCxlKTtuKHQ9clswXSxlPXJbMV0pJiZ1LnBvaW50KHQs
ZSl9ZnVuY3Rpb24gYShuLHQpe3ZhciBlPWkobix0KTtkLnBvaW50KGVbMF0s
ZVsxXSl9ZnVuY3Rpb24gbCgpe20ucG9pbnQ9YSxkLmxpbmVTdGFydCgpfWZ1
bmN0aW9uIGMoKXttLnBvaW50PW8sZC5saW5lRW5kKCl9ZnVuY3Rpb24gZihu
LHQpe3YucHVzaChbbix0XSk7dmFyIGU9aShuLHQpO3gucG9pbnQoZVswXSxl
WzFdKX1mdW5jdGlvbiBzKCl7eC5saW5lU3RhcnQoKSx2PVtdfWZ1bmN0aW9u
IGgoKXtmKHZbMF1bMF0sdlswXVsxXSkseC5saW5lRW5kKCk7dmFyIG4sdD14
LmNsZWFuKCksZT1NLmJ1ZmZlcigpLHI9ZS5sZW5ndGg7aWYodi5wb3AoKSxn
LnB1c2godiksdj1udWxsLHIpaWYoMSZ0KXtuPWVbMF07dmFyIGkscj1uLmxl
bmd0aC0xLG89LTE7aWYocj4wKXtmb3IoYnx8KHUucG9seWdvblN0YXJ0KCks
Yj0hMCksdS5saW5lU3RhcnQoKTsrK288cjspdS5wb2ludCgoaT1uW29dKVsw
XSxpWzFdKTt1LmxpbmVFbmQoKX19ZWxzZSByPjEmJjImdCYmZS5wdXNoKGUu
cG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpLHAucHVzaChlLmZpbHRlcihEdCkp
fXZhciBwLGcsdixkPXQodSkseT1pLmludmVydChyWzBdLHJbMV0pLG09e3Bv
aW50Om8sbGluZVN0YXJ0OmwsbGluZUVuZDpjLHBvbHlnb25TdGFydDpmdW5j
dGlvbigpe20ucG9pbnQ9ZixtLmxpbmVTdGFydD1zLG0ubGluZUVuZD1oLHA9
W10sZz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe20ucG9pbnQ9byxtLmxp
bmVTdGFydD1sLG0ubGluZUVuZD1jLHA9YW8ubWVyZ2UocCk7dmFyIG49T3Qo
eSxnKTtwLmxlbmd0aD8oYnx8KHUucG9seWdvblN0YXJ0KCksYj0hMCksTHQo
cCxVdCxuLGUsdSkpOm4mJihifHwodS5wb2x5Z29uU3RhcnQoKSxiPSEwKSx1
LmxpbmVTdGFydCgpLGUobnVsbCxudWxsLDEsdSksdS5saW5lRW5kKCkpLGIm
Jih1LnBvbHlnb25FbmQoKSxiPSExKSxwPWc9bnVsbH0sc3BoZXJlOmZ1bmN0
aW9uKCl7dS5wb2x5Z29uU3RhcnQoKSx1LmxpbmVTdGFydCgpLGUobnVsbCxu
dWxsLDEsdSksdS5saW5lRW5kKCksdS5wb2x5Z29uRW5kKCl9fSxNPVB0KCks
eD10KE0pLGI9ITE7cmV0dXJuIG19fWZ1bmN0aW9uIER0KG4pe3JldHVybiBu
Lmxlbmd0aD4xfWZ1bmN0aW9uIFB0KCl7dmFyIG4sdD1bXTtyZXR1cm57bGlu
ZVN0YXJ0OmZ1bmN0aW9uKCl7dC5wdXNoKG49W10pfSxwb2ludDpmdW5jdGlv
bih0LGUpe24ucHVzaChbdCxlXSl9LGxpbmVFbmQ6YixidWZmZXI6ZnVuY3Rp
b24oKXt2YXIgZT10O3JldHVybiB0PVtdLG49bnVsbCxlfSxyZWpvaW46ZnVu
Y3Rpb24oKXt0Lmxlbmd0aD4xJiZ0LnB1c2godC5wb3AoKS5jb25jYXQodC5z
aGlmdCgpKSl9fX1mdW5jdGlvbiBVdChuLHQpe3JldHVybigobj1uLngpWzBd
PDA/blsxXS1Jby1VbzpJby1uWzFdKS0oKHQ9dC54KVswXTwwP3RbMV0tSW8t
VW86SW8tdFsxXSl9ZnVuY3Rpb24ganQobil7dmFyIHQsZT1OYU4scj1OYU4s
aT1OYU47cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe24ubGluZVN0YXJ0
KCksdD0xfSxwb2ludDpmdW5jdGlvbih1LG8pe3ZhciBhPXU+MD9GbzotRm8s
bD14byh1LWUpO3hvKGwtRm8pPFVvPyhuLnBvaW50KGUscj0ocitvKS8yPjA/
SW86LUlvKSxuLnBvaW50KGksciksbi5saW5lRW5kKCksbi5saW5lU3RhcnQo
KSxuLnBvaW50KGEsciksbi5wb2ludCh1LHIpLHQ9MCk6aSE9PWEmJmw+PUZv
JiYoeG8oZS1pKTxVbyYmKGUtPWkqVW8pLHhvKHUtYSk8VW8mJih1LT1hKlVv
KSxyPUZ0KGUscix1LG8pLG4ucG9pbnQoaSxyKSxuLmxpbmVFbmQoKSxuLmxp
bmVTdGFydCgpLG4ucG9pbnQoYSxyKSx0PTApLG4ucG9pbnQoZT11LHI9byks
aT1hfSxsaW5lRW5kOmZ1bmN0aW9uKCl7bi5saW5lRW5kKCksZT1yPU5hTn0s
Y2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi10fX19ZnVuY3Rpb24gRnQobix0
LGUscil7dmFyIGksdSxvPU1hdGguc2luKG4tZSk7cmV0dXJuIHhvKG8pPlVv
P01hdGguYXRhbigoTWF0aC5zaW4odCkqKHU9TWF0aC5jb3MocikpKk1hdGgu
c2luKGUpLU1hdGguc2luKHIpKihpPU1hdGguY29zKHQpKSpNYXRoLnNpbihu
KSkvKGkqdSpvKSk6KHQrcikvMn1mdW5jdGlvbiBIdChuLHQsZSxyKXt2YXIg
aTtpZihudWxsPT1uKWk9ZSpJbyxyLnBvaW50KC1GbyxpKSxyLnBvaW50KDAs
aSksci5wb2ludChGbyxpKSxyLnBvaW50KEZvLDApLHIucG9pbnQoRm8sLWkp
LHIucG9pbnQoMCwtaSksci5wb2ludCgtRm8sLWkpLHIucG9pbnQoLUZvLDAp
LHIucG9pbnQoLUZvLGkpO2Vsc2UgaWYoeG8oblswXS10WzBdKT5Vbyl7dmFy
IHU9blswXTx0WzBdP0ZvOi1GbztpPWUqdS8yLHIucG9pbnQoLXUsaSksci5w
b2ludCgwLGkpLHIucG9pbnQodSxpKX1lbHNlIHIucG9pbnQodFswXSx0WzFd
KX1mdW5jdGlvbiBPdChuLHQpe3ZhciBlPW5bMF0scj1uWzFdLGk9W01hdGgu
c2luKGUpLC1NYXRoLmNvcyhlKSwwXSx1PTAsbz0wO2thLnJlc2V0KCk7Zm9y
KHZhciBhPTAsbD10Lmxlbmd0aDtsPmE7KythKXt2YXIgYz10W2FdLGY9Yy5s
ZW5ndGg7aWYoZilmb3IodmFyIHM9Y1swXSxoPXNbMF0scD1zWzFdLzIrRm8v
NCxnPU1hdGguc2luKHApLHY9TWF0aC5jb3MocCksZD0xOzspe2Q9PT1mJiYo
ZD0wKSxuPWNbZF07dmFyIHk9blswXSxtPW5bMV0vMitGby80LE09TWF0aC5z
aW4obSkseD1NYXRoLmNvcyhtKSxiPXktaCxfPWI+PTA/MTotMSx3PV8qYixT
PXc+Rm8saz1nKk07aWYoa2EuYWRkKE1hdGguYXRhbjIoaypfKk1hdGguc2lu
KHcpLHYqeCtrKk1hdGguY29zKHcpKSksdSs9Uz9iK18qSG86YixTXmg+PWVe
eT49ZSl7dmFyIE49bXQoZHQocyksZHQobikpO2J0KE4pO3ZhciBFPW10KGks
Tik7YnQoRSk7dmFyIEE9KFNeYj49MD8tMToxKSp0bihFWzJdKTsocj5BfHxy
PT09QSYmKE5bMF18fE5bMV0pKSYmKG8rPVNeYj49MD8xOi0xKX1pZighZCsr
KWJyZWFrO2g9eSxnPU0sdj14LHM9bn19cmV0dXJuKC1Vbz51fHxVbz51JiYt
VW8+a2EpXjEmb31mdW5jdGlvbiBJdChuKXtmdW5jdGlvbiB0KG4sdCl7cmV0
dXJuIE1hdGguY29zKG4pKk1hdGguY29zKHQpPnV9ZnVuY3Rpb24gZShuKXt2
YXIgZSx1LGwsYyxmO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtjPWw9
ITEsZj0xfSxwb2ludDpmdW5jdGlvbihzLGgpe3ZhciBwLGc9W3MsaF0sdj10
KHMsaCksZD1vP3Y/MDppKHMsaCk6dj9pKHMrKDA+cz9GbzotRm8pLGgpOjA7
aWYoIWUmJihjPWw9dikmJm4ubGluZVN0YXJ0KCksdiE9PWwmJihwPXIoZSxn
KSwod3QoZSxwKXx8d3QoZyxwKSkmJihnWzBdKz1VbyxnWzFdKz1Vbyx2PXQo
Z1swXSxnWzFdKSkpLHYhPT1sKWY9MCx2PyhuLmxpbmVTdGFydCgpLHA9cihn
LGUpLG4ucG9pbnQocFswXSxwWzFdKSk6KHA9cihlLGcpLG4ucG9pbnQocFsw
XSxwWzFdKSxuLmxpbmVFbmQoKSksZT1wO2Vsc2UgaWYoYSYmZSYmb152KXt2
YXIgeTtkJnV8fCEoeT1yKGcsZSwhMCkpfHwoZj0wLG8/KG4ubGluZVN0YXJ0
KCksbi5wb2ludCh5WzBdWzBdLHlbMF1bMV0pLG4ucG9pbnQoeVsxXVswXSx5
WzFdWzFdKSxuLmxpbmVFbmQoKSk6KG4ucG9pbnQoeVsxXVswXSx5WzFdWzFd
KSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9pbnQoeVswXVswXSx5
WzBdWzFdKSkpfSF2fHxlJiZ3dChlLGcpfHxuLnBvaW50KGdbMF0sZ1sxXSks
ZT1nLGw9dix1PWR9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZuLmxpbmVFbmQo
KSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIGZ8KGMmJmwpPDwx
fX19ZnVuY3Rpb24gcihuLHQsZSl7dmFyIHI9ZHQobiksaT1kdCh0KSxvPVsx
LDAsMF0sYT1tdChyLGkpLGw9eXQoYSxhKSxjPWFbMF0sZj1sLWMqYztpZigh
ZilyZXR1cm4hZSYmbjt2YXIgcz11KmwvZixoPS11KmMvZixwPW10KG8sYSks
Zz14dChvLHMpLHY9eHQoYSxoKTtNdChnLHYpO3ZhciBkPXAseT15dChnLGQp
LG09eXQoZCxkKSxNPXkqeS1tKih5dChnLGcpLTEpO2lmKCEoMD5NKSl7dmFy
IHg9TWF0aC5zcXJ0KE0pLGI9eHQoZCwoLXkteCkvbSk7aWYoTXQoYixnKSxi
PV90KGIpLCFlKXJldHVybiBiO3ZhciBfLHc9blswXSxTPXRbMF0saz1uWzFd
LE49dFsxXTt3PlMmJihfPXcsdz1TLFM9Xyk7dmFyIEU9Uy13LEE9eG8oRS1G
byk8VW8sQz1BfHxVbz5FO2lmKCFBJiZrPk4mJihfPWssaz1OLE49XyksQz9B
P2srTj4wXmJbMV08KHhvKGJbMF0tdyk8VW8/azpOKTprPD1iWzFdJiZiWzFd
PD1OOkU+Rm9eKHc8PWJbMF0mJmJbMF08PVMpKXt2YXIgej14dChkLCgteSt4
KS9tKTtyZXR1cm4gTXQoeixnKSxbYixfdCh6KV19fX1mdW5jdGlvbiBpKHQs
ZSl7dmFyIHI9bz9uOkZvLW4saT0wO3JldHVybi1yPnQ/aXw9MTp0PnImJihp
fD0yKSwtcj5lP2l8PTQ6ZT5yJiYoaXw9OCksaX12YXIgdT1NYXRoLmNvcyhu
KSxvPXU+MCxhPXhvKHUpPlVvLGw9dmUobiw2KllvKTtyZXR1cm4gUnQodCxl
LGwsbz9bMCwtbl06Wy1GbyxuLUZvXSl9ZnVuY3Rpb24gWXQobix0LGUscil7
cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciB1LG89aS5hLGE9aS5iLGw9by54LGM9
by55LGY9YS54LHM9YS55LGg9MCxwPTEsZz1mLWwsdj1zLWM7aWYodT1uLWws
Z3x8ISh1PjApKXtpZih1Lz1nLDA+Zyl7aWYoaD51KXJldHVybjtwPnUmJihw
PXUpfWVsc2UgaWYoZz4wKXtpZih1PnApcmV0dXJuO3U+aCYmKGg9dSl9aWYo
dT1lLWwsZ3x8ISgwPnUpKXtpZih1Lz1nLDA+Zyl7aWYodT5wKXJldHVybjt1
PmgmJihoPXUpfWVsc2UgaWYoZz4wKXtpZihoPnUpcmV0dXJuO3A+dSYmKHA9
dSl9aWYodT10LWMsdnx8ISh1PjApKXtpZih1Lz12LDA+dil7aWYoaD51KXJl
dHVybjtwPnUmJihwPXUpfWVsc2UgaWYodj4wKXtpZih1PnApcmV0dXJuO3U+
aCYmKGg9dSl9aWYodT1yLWMsdnx8ISgwPnUpKXtpZih1Lz12LDA+dil7aWYo
dT5wKXJldHVybjt1PmgmJihoPXUpfWVsc2UgaWYodj4wKXtpZihoPnUpcmV0
dXJuO3A+dSYmKHA9dSl9cmV0dXJuIGg+MCYmKGkuYT17eDpsK2gqZyx5OmMr
aCp2fSksMT5wJiYoaS5iPXt4OmwrcCpnLHk6YytwKnZ9KSxpfX19fX19ZnVu
Y3Rpb24gWnQobix0LGUscil7ZnVuY3Rpb24gaShyLGkpe3JldHVybiB4byhy
WzBdLW4pPFVvP2k+MD8wOjM6eG8oclswXS1lKTxVbz9pPjA/MjoxOnhvKHJb
MV0tdCk8VW8/aT4wPzE6MDppPjA/MzoyfWZ1bmN0aW9uIHUobix0KXtyZXR1
cm4gbyhuLngsdC54KX1mdW5jdGlvbiBvKG4sdCl7dmFyIGU9aShuLDEpLHI9
aSh0LDEpO3JldHVybiBlIT09cj9lLXI6MD09PWU/dFsxXS1uWzFdOjE9PT1l
P25bMF0tdFswXToyPT09ZT9uWzFdLXRbMV06dFswXS1uWzBdfXJldHVybiBm
dW5jdGlvbihhKXtmdW5jdGlvbiBsKG4pe2Zvcih2YXIgdD0wLGU9ZC5sZW5n
dGgscj1uWzFdLGk9MDtlPmk7KytpKWZvcih2YXIgdSxvPTEsYT1kW2ldLGw9
YS5sZW5ndGgsYz1hWzBdO2w+bzsrK28pdT1hW29dLGNbMV08PXI/dVsxXT5y
JiZRKGMsdSxuKT4wJiYrK3Q6dVsxXTw9ciYmUShjLHUsbik8MCYmLS10LGM9
dTtyZXR1cm4gMCE9PXR9ZnVuY3Rpb24gYyh1LGEsbCxjKXt2YXIgZj0wLHM9
MDtpZihudWxsPT11fHwoZj1pKHUsbCkpIT09KHM9aShhLGwpKXx8byh1LGEp
PDBebD4wKXtkbyBjLnBvaW50KDA9PT1mfHwzPT09Zj9uOmUsZj4xP3I6dCk7
d2hpbGUoKGY9KGYrbCs0KSU0KSE9PXMpfWVsc2UgYy5wb2ludChhWzBdLGFb
MV0pfWZ1bmN0aW9uIGYoaSx1KXtyZXR1cm4gaT49biYmZT49aSYmdT49dCYm
cj49dX1mdW5jdGlvbiBzKG4sdCl7ZihuLHQpJiZhLnBvaW50KG4sdCl9ZnVu
Y3Rpb24gaCgpe0MucG9pbnQ9ZyxkJiZkLnB1c2goeT1bXSksUz0hMCx3PSEx
LGI9Xz1OYU59ZnVuY3Rpb24gcCgpe3YmJihnKG0sTSkseCYmdyYmRS5yZWpv
aW4oKSx2LnB1c2goRS5idWZmZXIoKSkpLEMucG9pbnQ9cyx3JiZhLmxpbmVF
bmQoKX1mdW5jdGlvbiBnKG4sdCl7bj1NYXRoLm1heCgtSGEsTWF0aC5taW4o
SGEsbikpLHQ9TWF0aC5tYXgoLUhhLE1hdGgubWluKEhhLHQpKTt2YXIgZT1m
KG4sdCk7aWYoZCYmeS5wdXNoKFtuLHRdKSxTKW09bixNPXQseD1lLFM9ITEs
ZSYmKGEubGluZVN0YXJ0KCksYS5wb2ludChuLHQpKTtlbHNlIGlmKGUmJncp
YS5wb2ludChuLHQpO2Vsc2V7dmFyIHI9e2E6e3g6Yix5Ol99LGI6e3g6bix5
OnR9fTtBKHIpPyh3fHwoYS5saW5lU3RhcnQoKSxhLnBvaW50KHIuYS54LHIu
YS55KSksYS5wb2ludChyLmIueCxyLmIueSksZXx8YS5saW5lRW5kKCksaz0h
MSk6ZSYmKGEubGluZVN0YXJ0KCksYS5wb2ludChuLHQpLGs9ITEpfWI9bixf
PXQsdz1lfXZhciB2LGQseSxtLE0seCxiLF8sdyxTLGssTj1hLEU9UHQoKSxB
PVl0KG4sdCxlLHIpLEM9e3BvaW50OnMsbGluZVN0YXJ0OmgsbGluZUVuZDpw
LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2E9RSx2PVtdLGQ9W10saz0hMH0s
cG9seWdvbkVuZDpmdW5jdGlvbigpe2E9Tix2PWFvLm1lcmdlKHYpO3ZhciB0
PWwoW24scl0pLGU9ayYmdCxpPXYubGVuZ3RoOyhlfHxpKSYmKGEucG9seWdv
blN0YXJ0KCksZSYmKGEubGluZVN0YXJ0KCksYyhudWxsLG51bGwsMSxhKSxh
LmxpbmVFbmQoKSksaSYmTHQodix1LHQsYyxhKSxhLnBvbHlnb25FbmQoKSks
dj1kPXk9bnVsbH19O3JldHVybiBDfX1mdW5jdGlvbiBWdChuKXt2YXIgdD0w
LGU9Rm8vMyxyPWFlKG4pLGk9cih0LGUpO3JldHVybiBpLnBhcmFsbGVscz1m
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKHQ9blswXSpG
by8xODAsZT1uWzFdKkZvLzE4MCk6W3QvRm8qMTgwLGUvRm8qMTgwXX0saX1m
dW5jdGlvbiBYdChuLHQpe2Z1bmN0aW9uIGUobix0KXt2YXIgZT1NYXRoLnNx
cnQodS0yKmkqTWF0aC5zaW4odCkpL2k7cmV0dXJuW2UqTWF0aC5zaW4obio9
aSksby1lKk1hdGguY29zKG4pXX12YXIgcj1NYXRoLnNpbihuKSxpPShyK01h
dGguc2luKHQpKS8yLHU9MStyKigyKmktciksbz1NYXRoLnNxcnQodSkvaTty
ZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1vLXQ7cmV0dXJu
W01hdGguYXRhbjIobixlKS9pLHRuKCh1LShuKm4rZSplKSppKmkpLygyKmkp
KV19LGV9ZnVuY3Rpb24gJHQoKXtmdW5jdGlvbiBuKG4sdCl7SWErPWkqbi1y
KnQscj1uLGk9dH12YXIgdCxlLHIsaTskYS5wb2ludD1mdW5jdGlvbih1LG8p
eyRhLnBvaW50PW4sdD1yPXUsZT1pPW99LCRhLmxpbmVFbmQ9ZnVuY3Rpb24o
KXtuKHQsZSl9fWZ1bmN0aW9uIEJ0KG4sdCl7WWE+biYmKFlhPW4pLG4+VmEm
JihWYT1uKSxaYT50JiYoWmE9dCksdD5YYSYmKFhhPXQpfWZ1bmN0aW9uIFd0
KCl7ZnVuY3Rpb24gbihuLHQpe28ucHVzaCgiTSIsbiwiLCIsdCx1KX1mdW5j
dGlvbiB0KG4sdCl7by5wdXNoKCJNIixuLCIsIix0KSxhLnBvaW50PWV9ZnVu
Y3Rpb24gZShuLHQpe28ucHVzaCgiTCIsbiwiLCIsdCl9ZnVuY3Rpb24gcigp
e2EucG9pbnQ9bn1mdW5jdGlvbiBpKCl7by5wdXNoKCJaIil9dmFyIHU9SnQo
NC41KSxvPVtdLGE9e3BvaW50Om4sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7YS5w
b2ludD10fSxsaW5lRW5kOnIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7YS5s
aW5lRW5kPWl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9cixh
LnBvaW50PW59LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3JldHVybiB1PUp0
KG4pLGF9LHJlc3VsdDpmdW5jdGlvbigpe2lmKG8ubGVuZ3RoKXt2YXIgbj1v
LmpvaW4oIiIpO3JldHVybiBvPVtdLG59fX07cmV0dXJuIGF9ZnVuY3Rpb24g
SnQobil7cmV0dXJuIm0wLCIrbisiYSIrbisiLCIrbisiIDAgMSwxIDAsIist
MipuKyJhIituKyIsIituKyIgMCAxLDEgMCwiKzIqbisieiJ9ZnVuY3Rpb24g
R3Qobix0KXtDYSs9bix6YSs9dCwrK0xhfWZ1bmN0aW9uIEt0KCl7ZnVuY3Rp
b24gbihuLHIpe3ZhciBpPW4tdCx1PXItZSxvPU1hdGguc3FydChpKmkrdSp1
KTtxYSs9byoodCtuKS8yLFRhKz1vKihlK3IpLzIsUmErPW8sR3QodD1uLGU9
cil9dmFyIHQsZTtXYS5wb2ludD1mdW5jdGlvbihyLGkpe1dhLnBvaW50PW4s
R3QodD1yLGU9aSl9fWZ1bmN0aW9uIFF0KCl7V2EucG9pbnQ9R3R9ZnVuY3Rp
b24gbmUoKXtmdW5jdGlvbiBuKG4sdCl7dmFyIGU9bi1yLHU9dC1pLG89TWF0
aC5zcXJ0KGUqZSt1KnUpO3FhKz1vKihyK24pLzIsVGErPW8qKGkrdCkvMixS
YSs9byxvPWkqbi1yKnQsRGErPW8qKHIrbiksUGErPW8qKGkrdCksVWErPTMq
byxHdChyPW4saT10KX12YXIgdCxlLHIsaTtXYS5wb2ludD1mdW5jdGlvbih1
LG8pe1dhLnBvaW50PW4sR3QodD1yPXUsZT1pPW8pfSxXYS5saW5lRW5kPWZ1
bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiB0ZShuKXtmdW5jdGlvbiB0KHQs
ZSl7bi5tb3ZlVG8odCtvLGUpLG4uYXJjKHQsZSxvLDAsSG8pfWZ1bmN0aW9u
IGUodCxlKXtuLm1vdmVUbyh0LGUpLGEucG9pbnQ9cn1mdW5jdGlvbiByKHQs
ZSl7bi5saW5lVG8odCxlKX1mdW5jdGlvbiBpKCl7YS5wb2ludD10fWZ1bmN0
aW9uIHUoKXtuLmNsb3NlUGF0aCgpfXZhciBvPTQuNSxhPXtwb2ludDp0LGxp
bmVTdGFydDpmdW5jdGlvbigpe2EucG9pbnQ9ZX0sbGluZUVuZDppLHBvbHln
b25TdGFydDpmdW5jdGlvbigpe2EubGluZUVuZD11fSxwb2x5Z29uRW5kOmZ1
bmN0aW9uKCl7YS5saW5lRW5kPWksYS5wb2ludD10fSxwb2ludFJhZGl1czpm
dW5jdGlvbihuKXtyZXR1cm4gbz1uLGF9LHJlc3VsdDpifTtyZXR1cm4gYX1m
dW5jdGlvbiBlZShuKXtmdW5jdGlvbiB0KG4pe3JldHVybihhP3I6ZSkobil9
ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdWUodCxmdW5jdGlvbihlLHIpe2U9bihl
LHIpLHQucG9pbnQoZVswXSxlWzFdKX0pfWZ1bmN0aW9uIHIodCl7ZnVuY3Rp
b24gZShlLHIpe2U9bihlLHIpLHQucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlv
biByKCl7TT1OYU4sUy5wb2ludD11LHQubGluZVN0YXJ0KCl9ZnVuY3Rpb24g
dShlLHIpe3ZhciB1PWR0KFtlLHJdKSxvPW4oZSxyKTtpKE0seCxtLGIsXyx3
LE09b1swXSx4PW9bMV0sbT1lLGI9dVswXSxfPXVbMV0sdz11WzJdLGEsdCks
dC5wb2ludChNLHgpfWZ1bmN0aW9uIG8oKXtTLnBvaW50PWUsdC5saW5lRW5k
KCl9ZnVuY3Rpb24gbCgpewpyKCksUy5wb2ludD1jLFMubGluZUVuZD1mfWZ1
bmN0aW9uIGMobix0KXt1KHM9bixoPXQpLHA9TSxnPXgsdj1iLGQ9Xyx5PXcs
Uy5wb2ludD11fWZ1bmN0aW9uIGYoKXtpKE0seCxtLGIsXyx3LHAsZyxzLHYs
ZCx5LGEsdCksUy5saW5lRW5kPW8sbygpfXZhciBzLGgscCxnLHYsZCx5LG0s
TSx4LGIsXyx3LFM9e3BvaW50OmUsbGluZVN0YXJ0OnIsbGluZUVuZDpvLHBv
bHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCksUy5saW5l
U3RhcnQ9bH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgp
LFMubGluZVN0YXJ0PXJ9fTtyZXR1cm4gU31mdW5jdGlvbiBpKHQsZSxyLGEs
bCxjLGYscyxoLHAsZyx2LGQseSl7dmFyIG09Zi10LE09cy1lLHg9bSptK00q
TTtpZih4PjQqdSYmZC0tKXt2YXIgYj1hK3AsXz1sK2csdz1jK3YsUz1NYXRo
LnNxcnQoYipiK18qXyt3KncpLGs9TWF0aC5hc2luKHcvPVMpLE49eG8oeG8o
dyktMSk8VW98fHhvKHItaCk8VW8/KHIraCkvMjpNYXRoLmF0YW4yKF8sYiks
RT1uKE4sayksQT1FWzBdLEM9RVsxXSx6PUEtdCxMPUMtZSxxPU0qei1tKkw7
KHEqcS94PnV8fHhvKChtKnorTSpMKS94LS41KT4uM3x8bz5hKnArbCpnK2Mq
dikmJihpKHQsZSxyLGEsbCxjLEEsQyxOLGIvPVMsXy89Uyx3LGQseSkseS5w
b2ludChBLEMpLGkoQSxDLE4sYixfLHcsZixzLGgscCxnLHYsZCx5KSl9fXZh
ciB1PS41LG89TWF0aC5jb3MoMzAqWW8pLGE9MTY7cmV0dXJuIHQucHJlY2lz
aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSh1
PW4qbik+MCYmMTYsdCk6TWF0aC5zcXJ0KHUpfSx0fWZ1bmN0aW9uIHJlKG4p
e3ZhciB0PWVlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oW3QqWm8sZSpab10p
fSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBsZSh0KG4pKX19ZnVuY3Rp
b24gaWUobil7dGhpcy5zdHJlYW09bn1mdW5jdGlvbiB1ZShuLHQpe3JldHVy
bntwb2ludDp0LHNwaGVyZTpmdW5jdGlvbigpe24uc3BoZXJlKCl9LGxpbmVT
dGFydDpmdW5jdGlvbigpe24ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rp
b24oKXtuLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7bi5w
b2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe24ucG9seWdv
bkVuZCgpfX19ZnVuY3Rpb24gb2Uobil7cmV0dXJuIGFlKGZ1bmN0aW9uKCl7
cmV0dXJuIG59KSgpfWZ1bmN0aW9uIGFlKG4pe2Z1bmN0aW9uIHQobil7cmV0
dXJuIG49YShuWzBdKllvLG5bMV0qWW8pLFtuWzBdKmgrbCxjLW5bMV0qaF19
ZnVuY3Rpb24gZShuKXtyZXR1cm4gbj1hLmludmVydCgoblswXS1sKS9oLChj
LW5bMV0pL2gpLG4mJltuWzBdKlpvLG5bMV0qWm9dfWZ1bmN0aW9uIHIoKXth
PUN0KG89c2UoeSxNLHgpLHUpO3ZhciBuPXUodixkKTtyZXR1cm4gbD1wLW5b
MF0qaCxjPWcrblsxXSpoLGkoKX1mdW5jdGlvbiBpKCl7cmV0dXJuIGYmJihm
LnZhbGlkPSExLGY9bnVsbCksdH12YXIgdSxvLGEsbCxjLGYscz1lZShmdW5j
dGlvbihuLHQpe3JldHVybiBuPXUobix0KSxbblswXSpoK2wsYy1uWzFdKmhd
fSksaD0xNTAscD00ODAsZz0yNTAsdj0wLGQ9MCx5PTAsTT0wLHg9MCxiPUZh
LF89bSx3PW51bGwsUz1udWxsO3JldHVybiB0LnN0cmVhbT1mdW5jdGlvbihu
KXtyZXR1cm4gZiYmKGYudmFsaWQ9ITEpLGY9bGUoYihvLHMoXyhuKSkpKSxm
LnZhbGlkPSEwLGZ9LHQuY2xpcEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhiPW51bGw9PW4/KHc9bixGYSk6SXQoKHc9K24p
KllvKSxpKCkpOnd9LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oUz1uLF89bj9adChuWzBdWzBdLG5bMF1bMV0s
blsxXVswXSxuWzFdWzFdKTptLGkoKSk6U30sdC5zY2FsZT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rbixyKCkpOmh9LHQudHJh
bnNsYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhw
PStuWzBdLGc9K25bMV0scigpKTpbcCxnXX0sdC5jZW50ZXI9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9blswXSUzNjAqWW8sZD1u
WzFdJTM2MCpZbyxyKCkpOlt2KlpvLGQqWm9dfSx0LnJvdGF0ZT1mdW5jdGlv
bihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1uWzBdJTM2MCpZbyxN
PW5bMV0lMzYwKllvLHg9bi5sZW5ndGg+Mj9uWzJdJTM2MCpZbzowLHIoKSk6
W3kqWm8sTSpabyx4KlpvXX0sYW8ucmViaW5kKHQscywicHJlY2lzaW9uIiks
ZnVuY3Rpb24oKXtyZXR1cm4gdT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0
LmludmVydD11LmludmVydCYmZSxyKCl9fWZ1bmN0aW9uIGxlKG4pe3JldHVy
biB1ZShuLGZ1bmN0aW9uKHQsZSl7bi5wb2ludCh0KllvLGUqWW8pfSl9ZnVu
Y3Rpb24gY2Uobix0KXtyZXR1cm5bbix0XX1mdW5jdGlvbiBmZShuLHQpe3Jl
dHVybltuPkZvP24tSG86LUZvPm4/bitIbzpuLHRdfWZ1bmN0aW9uIHNlKG4s
dCxlKXtyZXR1cm4gbj90fHxlP0N0KHBlKG4pLGdlKHQsZSkpOnBlKG4pOnR8
fGU/Z2UodCxlKTpmZX1mdW5jdGlvbiBoZShuKXtyZXR1cm4gZnVuY3Rpb24o
dCxlKXtyZXR1cm4gdCs9bixbdD5Gbz90LUhvOi1Gbz50P3QrSG86dCxlXX19
ZnVuY3Rpb24gcGUobil7dmFyIHQ9aGUobik7cmV0dXJuIHQuaW52ZXJ0PWhl
KC1uKSx0fWZ1bmN0aW9uIGdlKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBl
PU1hdGguY29zKHQpLGE9TWF0aC5jb3MobikqZSxsPU1hdGguc2luKG4pKmUs
Yz1NYXRoLnNpbih0KSxmPWMqcithKmk7cmV0dXJuW01hdGguYXRhbjIobCp1
LWYqbyxhKnItYyppKSx0bihmKnUrbCpvKV19dmFyIHI9TWF0aC5jb3Mobiks
aT1NYXRoLnNpbihuKSx1PU1hdGguY29zKHQpLG89TWF0aC5zaW4odCk7cmV0
dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9TWF0aC5jb3ModCks
YT1NYXRoLmNvcyhuKSplLGw9TWF0aC5zaW4obikqZSxjPU1hdGguc2luKHQp
LGY9Yyp1LWwqbztyZXR1cm5bTWF0aC5hdGFuMihsKnUrYypvLGEqcitmKmkp
LHRuKGYqci1hKmkpXX0sZX1mdW5jdGlvbiB2ZShuLHQpe3ZhciBlPU1hdGgu
Y29zKG4pLHI9TWF0aC5zaW4obik7cmV0dXJuIGZ1bmN0aW9uKGksdSxvLGEp
e3ZhciBsPW8qdDtudWxsIT1pPyhpPWRlKGUsaSksdT1kZShlLHUpLChvPjA/
dT5pOmk+dSkmJihpKz1vKkhvKSk6KGk9bitvKkhvLHU9bi0uNSpsKTtmb3Io
dmFyIGMsZj1pO28+MD9mPnU6dT5mO2YtPWwpYS5wb2ludCgoYz1fdChbZSwt
cipNYXRoLmNvcyhmKSwtcipNYXRoLnNpbihmKV0pKVswXSxjWzFdKX19ZnVu
Y3Rpb24gZGUobix0KXt2YXIgZT1kdCh0KTtlWzBdLT1uLGJ0KGUpO3ZhciBy
PW5uKC1lWzFdKTtyZXR1cm4oKC1lWzJdPDA/LXI6cikrMipNYXRoLlBJLVVv
KSUoMipNYXRoLlBJKX1mdW5jdGlvbiB5ZShuLHQsZSl7dmFyIHI9YW8ucmFu
Z2Uobix0LVVvLGUpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0
dXJuIHIubWFwKGZ1bmN0aW9uKHQpe3JldHVybltuLHRdfSl9fWZ1bmN0aW9u
IG1lKG4sdCxlKXt2YXIgcj1hby5yYW5nZShuLHQtVW8sZSkuY29uY2F0KHQp
O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gci5tYXAoZnVuY3Rpb24odCl7
cmV0dXJuW3Qsbl19KX19ZnVuY3Rpb24gTWUobil7cmV0dXJuIG4uc291cmNl
fWZ1bmN0aW9uIHhlKG4pe3JldHVybiBuLnRhcmdldH1mdW5jdGlvbiBiZShu
LHQsZSxyKXt2YXIgaT1NYXRoLmNvcyh0KSx1PU1hdGguc2luKHQpLG89TWF0
aC5jb3MociksYT1NYXRoLnNpbihyKSxsPWkqTWF0aC5jb3MobiksYz1pKk1h
dGguc2luKG4pLGY9bypNYXRoLmNvcyhlKSxzPW8qTWF0aC5zaW4oZSksaD0y
Kk1hdGguYXNpbihNYXRoLnNxcnQob24oci10KStpKm8qb24oZS1uKSkpLHA9
MS9NYXRoLnNpbihoKSxnPWg/ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zaW4o
bio9aCkqcCxlPU1hdGguc2luKGgtbikqcCxyPWUqbCt0KmYsaT1lKmMrdCpz
LG89ZSp1K3QqYTtyZXR1cm5bTWF0aC5hdGFuMihpLHIpKlpvLE1hdGguYXRh
bjIobyxNYXRoLnNxcnQocipyK2kqaSkpKlpvXX06ZnVuY3Rpb24oKXtyZXR1
cm5bbipabyx0KlpvXX07cmV0dXJuIGcuZGlzdGFuY2U9aCxnfWZ1bmN0aW9u
IF9lKCl7ZnVuY3Rpb24gbihuLGkpe3ZhciB1PU1hdGguc2luKGkqPVlvKSxv
PU1hdGguY29zKGkpLGE9eG8oKG4qPVlvKS10KSxsPU1hdGguY29zKGEpO0ph
Kz1NYXRoLmF0YW4yKE1hdGguc3FydCgoYT1vKk1hdGguc2luKGEpKSphKyhh
PXIqdS1lKm8qbCkqYSksZSp1K3IqbypsKSx0PW4sZT11LHI9b312YXIgdCxl
LHI7R2EucG9pbnQ9ZnVuY3Rpb24oaSx1KXt0PWkqWW8sZT1NYXRoLnNpbih1
Kj1Zbykscj1NYXRoLmNvcyh1KSxHYS5wb2ludD1ufSxHYS5saW5lRW5kPWZ1
bmN0aW9uKCl7R2EucG9pbnQ9R2EubGluZUVuZD1ifX1mdW5jdGlvbiB3ZShu
LHQpe2Z1bmN0aW9uIGUodCxlKXt2YXIgcj1NYXRoLmNvcyh0KSxpPU1hdGgu
Y29zKGUpLHU9bihyKmkpO3JldHVyblt1KmkqTWF0aC5zaW4odCksdSpNYXRo
LnNpbihlKV19cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sZSl7dmFyIHI9
TWF0aC5zcXJ0KG4qbitlKmUpLGk9dChyKSx1PU1hdGguc2luKGkpLG89TWF0
aC5jb3MoaSk7cmV0dXJuW01hdGguYXRhbjIobip1LHIqbyksTWF0aC5hc2lu
KHImJmUqdS9yKV19LGV9ZnVuY3Rpb24gU2Uobix0KXtmdW5jdGlvbiBlKG4s
dCl7bz4wPy1JbytVbz50JiYodD0tSW8rVW8pOnQ+SW8tVW8mJih0PUlvLVVv
KTt2YXIgZT1vL01hdGgucG93KGkodCksdSk7cmV0dXJuW2UqTWF0aC5zaW4o
dSpuKSxvLWUqTWF0aC5jb3ModSpuKV19dmFyIHI9TWF0aC5jb3MobiksaT1m
dW5jdGlvbihuKXtyZXR1cm4gTWF0aC50YW4oRm8vNCtuLzIpfSx1PW49PT10
P01hdGguc2luKG4pOk1hdGgubG9nKHIvTWF0aC5jb3ModCkpL01hdGgubG9n
KGkodCkvaShuKSksbz1yKk1hdGgucG93KGkobiksdSkvdTtyZXR1cm4gdT8o
ZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1vLXQscj1LKHUpKk1hdGgu
c3FydChuKm4rZSplKTtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL3UsMipNYXRo
LmF0YW4oTWF0aC5wb3coby9yLDEvdSkpLUlvXX0sZSk6TmV9ZnVuY3Rpb24g
a2Uobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFyIGU9dS10O3JldHVybltlKk1h
dGguc2luKGkqbiksdS1lKk1hdGguY29zKGkqbildfXZhciByPU1hdGguY29z
KG4pLGk9bj09PXQ/TWF0aC5zaW4obik6KHItTWF0aC5jb3ModCkpLyh0LW4p
LHU9ci9pK247cmV0dXJuIHhvKGkpPFVvP2NlOihlLmludmVydD1mdW5jdGlv
bihuLHQpe3ZhciBlPXUtdDtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL2ksdS1L
KGkpKk1hdGguc3FydChuKm4rZSplKV19LGUpfWZ1bmN0aW9uIE5lKG4sdCl7
cmV0dXJuW24sTWF0aC5sb2coTWF0aC50YW4oRm8vNCt0LzIpKV19ZnVuY3Rp
b24gRWUobil7dmFyIHQsZT1vZShuKSxyPWUuc2NhbGUsaT1lLnRyYW5zbGF0
ZSx1PWUuY2xpcEV4dGVudDtyZXR1cm4gZS5zY2FsZT1mdW5jdGlvbigpe3Zh
ciBuPXIuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiBuPT09ZT90P2UuY2xp
cEV4dGVudChudWxsKTplOm59LGUudHJhbnNsYXRlPWZ1bmN0aW9uKCl7dmFy
IG49aS5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q/ZS5jbGlw
RXh0ZW50KG51bGwpOmU6bn0sZS5jbGlwRXh0ZW50PWZ1bmN0aW9uKG4pe3Zh
ciBvPXUuYXBwbHkoZSxhcmd1bWVudHMpO2lmKG89PT1lKXtpZih0PW51bGw9
PW4pe3ZhciBhPUZvKnIoKSxsPWkoKTt1KFtbbFswXS1hLGxbMV0tYV0sW2xb
MF0rYSxsWzFdK2FdXSl9fWVsc2UgdCYmKG89bnVsbCk7cmV0dXJuIG99LGUu
Y2xpcEV4dGVudChudWxsKX1mdW5jdGlvbiBBZShuLHQpe3JldHVybltNYXRo
LmxvZyhNYXRoLnRhbihGby80K3QvMikpLC1uXX1mdW5jdGlvbiBDZShuKXty
ZXR1cm4gblswXX1mdW5jdGlvbiB6ZShuKXtyZXR1cm4gblsxXX1mdW5jdGlv
biBMZShuKXtmb3IodmFyIHQ9bi5sZW5ndGgsZT1bMCwxXSxyPTIsaT0yO3Q+
aTtpKyspe2Zvcig7cj4xJiZRKG5bZVtyLTJdXSxuW2Vbci0xXV0sbltpXSk8
PTA7KS0tcjtlW3IrK109aX1yZXR1cm4gZS5zbGljZSgwLHIpfWZ1bmN0aW9u
IHFlKG4sdCl7cmV0dXJuIG5bMF0tdFswXXx8blsxXS10WzFdfWZ1bmN0aW9u
IFRlKG4sdCxlKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKTwoZVsx
XS10WzFdKSooblswXS10WzBdKX1mdW5jdGlvbiBSZShuLHQsZSxyKXt2YXIg
aT1uWzBdLHU9ZVswXSxvPXRbMF0taSxhPXJbMF0tdSxsPW5bMV0sYz1lWzFd
LGY9dFsxXS1sLHM9clsxXS1jLGg9KGEqKGwtYyktcyooaS11KSkvKHMqby1h
KmYpO3JldHVybltpK2gqbyxsK2gqZl19ZnVuY3Rpb24gRGUobil7dmFyIHQ9
blswXSxlPW5bbi5sZW5ndGgtMV07cmV0dXJuISh0WzBdLWVbMF18fHRbMV0t
ZVsxXSl9ZnVuY3Rpb24gUGUoKXtycih0aGlzKSx0aGlzLmVkZ2U9dGhpcy5z
aXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24gVWUobil7dmFyIHQ9Y2wu
cG9wKCl8fG5ldyBQZTtyZXR1cm4gdC5zaXRlPW4sdH1mdW5jdGlvbiBqZShu
KXtCZShuKSxvbC5yZW1vdmUobiksY2wucHVzaChuKSxycihuKX1mdW5jdGlv
biBGZShuKXt2YXIgdD1uLmNpcmNsZSxlPXQueCxyPXQuY3ksaT17eDplLHk6
cn0sdT1uLlAsbz1uLk4sYT1bbl07amUobik7Zm9yKHZhciBsPXU7bC5jaXJj
bGUmJnhvKGUtbC5jaXJjbGUueCk8VW8mJnhvKHItbC5jaXJjbGUuY3kpPFVv
Oyl1PWwuUCxhLnVuc2hpZnQobCksamUobCksbD11O2EudW5zaGlmdChsKSxC
ZShsKTtmb3IodmFyIGM9bztjLmNpcmNsZSYmeG8oZS1jLmNpcmNsZS54KTxV
byYmeG8oci1jLmNpcmNsZS5jeSk8VW87KW89Yy5OLGEucHVzaChjKSxqZShj
KSxjPW87YS5wdXNoKGMpLEJlKGMpO3ZhciBmLHM9YS5sZW5ndGg7Zm9yKGY9
MTtzPmY7KytmKWM9YVtmXSxsPWFbZi0xXSxucihjLmVkZ2UsbC5zaXRlLGMu
c2l0ZSxpKTtsPWFbMF0sYz1hW3MtMV0sYy5lZGdlPUtlKGwuc2l0ZSxjLnNp
dGUsbnVsbCxpKSwkZShsKSwkZShjKX1mdW5jdGlvbiBIZShuKXtmb3IodmFy
IHQsZSxyLGksdT1uLngsbz1uLnksYT1vbC5fO2E7KWlmKHI9T2UoYSxvKS11
LHI+VW8pYT1hLkw7ZWxzZXtpZihpPXUtSWUoYSxvKSwhKGk+VW8pKXtyPi1V
bz8odD1hLlAsZT1hKTppPi1Vbz8odD1hLGU9YS5OKTp0PWU9YTticmVha31p
ZighYS5SKXt0PWE7YnJlYWt9YT1hLlJ9dmFyIGw9VWUobik7aWYob2wuaW5z
ZXJ0KHQsbCksdHx8ZSl7aWYodD09PWUpcmV0dXJuIEJlKHQpLGU9VWUodC5z
aXRlKSxvbC5pbnNlcnQobCxlKSxsLmVkZ2U9ZS5lZGdlPUtlKHQuc2l0ZSxs
LnNpdGUpLCRlKHQpLHZvaWQgJGUoZSk7aWYoIWUpcmV0dXJuIHZvaWQobC5l
ZGdlPUtlKHQuc2l0ZSxsLnNpdGUpKTtCZSh0KSxCZShlKTt2YXIgYz10LnNp
dGUsZj1jLngscz1jLnksaD1uLngtZixwPW4ueS1zLGc9ZS5zaXRlLHY9Zy54
LWYsZD1nLnktcyx5PTIqKGgqZC1wKnYpLG09aCpoK3AqcCxNPXYqditkKmQs
eD17eDooZCptLXAqTSkveStmLHk6KGgqTS12Km0pL3krc307bnIoZS5lZGdl
LGMsZyx4KSxsLmVkZ2U9S2UoYyxuLG51bGwseCksZS5lZGdlPUtlKG4sZyxu
dWxsLHgpLCRlKHQpLCRlKGUpfX1mdW5jdGlvbiBPZShuLHQpe3ZhciBlPW4u
c2l0ZSxyPWUueCxpPWUueSx1PWktdDtpZighdSlyZXR1cm4gcjt2YXIgbz1u
LlA7aWYoIW8pcmV0dXJuLSgxLzApO2U9by5zaXRlO3ZhciBhPWUueCxsPWUu
eSxjPWwtdDtpZighYylyZXR1cm4gYTt2YXIgZj1hLXIscz0xL3UtMS9jLGg9
Zi9jO3JldHVybiBzPygtaCtNYXRoLnNxcnQoaCpoLTIqcyooZipmLygtMipj
KS1sK2MvMitpLXUvMikpKS9zK3I6KHIrYSkvMn1mdW5jdGlvbiBJZShuLHQp
e3ZhciBlPW4uTjtpZihlKXJldHVybiBPZShlLHQpO3ZhciByPW4uc2l0ZTty
ZXR1cm4gci55PT09dD9yLng6MS8wfWZ1bmN0aW9uIFllKG4pe3RoaXMuc2l0
ZT1uLHRoaXMuZWRnZXM9W119ZnVuY3Rpb24gWmUobil7Zm9yKHZhciB0LGUs
cixpLHUsbyxhLGwsYyxmLHM9blswXVswXSxoPW5bMV1bMF0scD1uWzBdWzFd
LGc9blsxXVsxXSx2PXVsLGQ9di5sZW5ndGg7ZC0tOylpZih1PXZbZF0sdSYm
dS5wcmVwYXJlKCkpZm9yKGE9dS5lZGdlcyxsPWEubGVuZ3RoLG89MDtsPm87
KWY9YVtvXS5lbmQoKSxyPWYueCxpPWYueSxjPWFbKytvJWxdLnN0YXJ0KCks
dD1jLngsZT1jLnksKHhvKHItdCk+VW98fHhvKGktZSk+VW8pJiYoYS5zcGxp
Y2UobywwLG5ldyB0cihRZSh1LnNpdGUsZix4byhyLXMpPFVvJiZnLWk+VW8/
e3g6cyx5OnhvKHQtcyk8VW8/ZTpnfTp4byhpLWcpPFVvJiZoLXI+VW8/e3g6
eG8oZS1nKTxVbz90OmgseTpnfTp4byhyLWgpPFVvJiZpLXA+VW8/e3g6aCx5
OnhvKHQtaCk8VW8/ZTpwfTp4byhpLXApPFVvJiZyLXM+VW8/e3g6eG8oZS1w
KTxVbz90OnMseTpwfTpudWxsKSx1LnNpdGUsbnVsbCkpLCsrbCl9ZnVuY3Rp
b24gVmUobix0KXtyZXR1cm4gdC5hbmdsZS1uLmFuZ2xlfWZ1bmN0aW9uIFhl
KCl7cnIodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9
dGhpcy5jeT1udWxsfWZ1bmN0aW9uICRlKG4pe3ZhciB0PW4uUCxlPW4uTjtp
Zih0JiZlKXt2YXIgcj10LnNpdGUsaT1uLnNpdGUsdT1lLnNpdGU7aWYociE9
PXUpe3ZhciBvPWkueCxhPWkueSxsPXIueC1vLGM9ci55LWEsZj11Lngtbyxz
PXUueS1hLGg9MioobCpzLWMqZik7aWYoIShoPj0tam8pKXt2YXIgcD1sKmwr
YypjLGc9ZipmK3Mqcyx2PShzKnAtYypnKS9oLGQ9KGwqZy1mKnApL2gscz1k
K2EseT1mbC5wb3AoKXx8bmV3IFhlO3kuYXJjPW4seS5zaXRlPWkseS54PXYr
byx5Lnk9cytNYXRoLnNxcnQodip2K2QqZCkseS5jeT1zLG4uY2lyY2xlPXk7
Zm9yKHZhciBtPW51bGwsTT1sbC5fO007KWlmKHkueTxNLnl8fHkueT09PU0u
eSYmeS54PD1NLngpe2lmKCFNLkwpe209TS5QO2JyZWFrfU09TS5MfWVsc2V7
aWYoIU0uUil7bT1NO2JyZWFrfU09TS5SfWxsLmluc2VydChtLHkpLG18fChh
bD15KX19fX1mdW5jdGlvbiBCZShuKXt2YXIgdD1uLmNpcmNsZTt0JiYodC5Q
fHwoYWw9dC5OKSxsbC5yZW1vdmUodCksZmwucHVzaCh0KSxycih0KSxuLmNp
cmNsZT1udWxsKX1mdW5jdGlvbiBXZShuKXtmb3IodmFyIHQsZT1pbCxyPVl0
KG5bMF1bMF0sblswXVsxXSxuWzFdWzBdLG5bMV1bMV0pLGk9ZS5sZW5ndGg7
aS0tOyl0PWVbaV0sKCFKZSh0LG4pfHwhcih0KXx8eG8odC5hLngtdC5iLngp
PFVvJiZ4byh0LmEueS10LmIueSk8VW8pJiYodC5hPXQuYj1udWxsLGUuc3Bs
aWNlKGksMSkpfWZ1bmN0aW9uIEplKG4sdCl7dmFyIGU9bi5iO2lmKGUpcmV0
dXJuITA7dmFyIHIsaSx1PW4uYSxvPXRbMF1bMF0sYT10WzFdWzBdLGw9dFsw
XVsxXSxjPXRbMV1bMV0sZj1uLmwscz1uLnIsaD1mLngscD1mLnksZz1zLngs
dj1zLnksZD0oaCtnKS8yLHk9KHArdikvMjtpZih2PT09cCl7aWYobz5kfHxk
Pj1hKXJldHVybjtpZihoPmcpe2lmKHUpe2lmKHUueT49YylyZXR1cm59ZWxz
ZSB1PXt4OmQseTpsfTtlPXt4OmQseTpjfX1lbHNle2lmKHUpe2lmKHUueTxs
KXJldHVybn1lbHNlIHU9e3g6ZCx5OmN9O2U9e3g6ZCx5Omx9fX1lbHNlIGlm
KHI9KGgtZykvKHYtcCksaT15LXIqZCwtMT5yfHxyPjEpaWYoaD5nKXtpZih1
KXtpZih1Lnk+PWMpcmV0dXJufWVsc2UgdT17eDoobC1pKS9yLHk6bH07ZT17
eDooYy1pKS9yLHk6Y319ZWxzZXtpZih1KXtpZih1Lnk8bClyZXR1cm59ZWxz
ZSB1PXt4OihjLWkpL3IseTpjfTtlPXt4OihsLWkpL3IseTpsfX1lbHNlIGlm
KHY+cCl7aWYodSl7aWYodS54Pj1hKXJldHVybn1lbHNlIHU9e3g6byx5OnIq
bytpfTtlPXt4OmEseTpyKmEraX19ZWxzZXtpZih1KXtpZih1Lng8bylyZXR1
cm59ZWxzZSB1PXt4OmEseTpyKmEraX07ZT17eDpvLHk6cipvK2l9fXJldHVy
biBuLmE9dSxuLmI9ZSwhMH1mdW5jdGlvbiBHZShuLHQpe3RoaXMubD1uLHRo
aXMucj10LHRoaXMuYT10aGlzLmI9bnVsbH1mdW5jdGlvbiBLZShuLHQsZSxy
KXt2YXIgaT1uZXcgR2Uobix0KTtyZXR1cm4gaWwucHVzaChpKSxlJiZucihp
LG4sdCxlKSxyJiZucihpLHQsbixyKSx1bFtuLmldLmVkZ2VzLnB1c2gobmV3
IHRyKGksbix0KSksdWxbdC5pXS5lZGdlcy5wdXNoKG5ldyB0cihpLHQsbikp
LGl9ZnVuY3Rpb24gUWUobix0LGUpe3ZhciByPW5ldyBHZShuLG51bGwpO3Jl
dHVybiByLmE9dCxyLmI9ZSxpbC5wdXNoKHIpLHJ9ZnVuY3Rpb24gbnIobix0
LGUscil7bi5hfHxuLmI/bi5sPT09ZT9uLmI9cjpuLmE9cjoobi5hPXIsbi5s
PXQsbi5yPWUpfWZ1bmN0aW9uIHRyKG4sdCxlKXt2YXIgcj1uLmEsaT1uLmI7
dGhpcy5lZGdlPW4sdGhpcy5zaXRlPXQsdGhpcy5hbmdsZT1lP01hdGguYXRh
bjIoZS55LXQueSxlLngtdC54KTpuLmw9PT10P01hdGguYXRhbjIoaS54LXIu
eCxyLnktaS55KTpNYXRoLmF0YW4yKHIueC1pLngsaS55LXIueSl9ZnVuY3Rp
b24gZXIoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBycihuKXtuLlU9bi5DPW4u
TD1uLlI9bi5QPW4uTj1udWxsfWZ1bmN0aW9uIGlyKG4sdCl7dmFyIGU9dCxy
PXQuUixpPWUuVTtpP2kuTD09PWU/aS5MPXI6aS5SPXI6bi5fPXIsci5VPWks
ZS5VPXIsZS5SPXIuTCxlLlImJihlLlIuVT1lKSxyLkw9ZX1mdW5jdGlvbiB1
cihuLHQpe3ZhciBlPXQscj10LkwsaT1lLlU7aT9pLkw9PT1lP2kuTD1yOmku
Uj1yOm4uXz1yLHIuVT1pLGUuVT1yLGUuTD1yLlIsZS5MJiYoZS5MLlU9ZSks
ci5SPWV9ZnVuY3Rpb24gb3Iobil7Zm9yKDtuLkw7KW49bi5MO3JldHVybiBu
fWZ1bmN0aW9uIGFyKG4sdCl7dmFyIGUscixpLHU9bi5zb3J0KGxyKS5wb3Ao
KTtmb3IoaWw9W10sdWw9bmV3IEFycmF5KG4ubGVuZ3RoKSxvbD1uZXcgZXIs
bGw9bmV3IGVyOzspaWYoaT1hbCx1JiYoIWl8fHUueTxpLnl8fHUueT09PWku
eSYmdS54PGkueCkpdS54PT09ZSYmdS55PT09cnx8KHVsW3UuaV09bmV3IFll
KHUpLEhlKHUpLGU9dS54LHI9dS55KSx1PW4ucG9wKCk7ZWxzZXtpZighaSli
cmVhaztGZShpLmFyYyl9dCYmKFdlKHQpLFplKHQpKTt2YXIgbz17Y2VsbHM6
dWwsZWRnZXM6aWx9O3JldHVybiBvbD1sbD1pbD11bD1udWxsLG99ZnVuY3Rp
b24gbHIobix0KXtyZXR1cm4gdC55LW4ueXx8dC54LW4ueH1mdW5jdGlvbiBj
cihuLHQsZSl7cmV0dXJuKG4ueC1lLngpKih0Lnktbi55KS0obi54LXQueCkq
KGUueS1uLnkpfWZ1bmN0aW9uIGZyKG4pe3JldHVybiBuLnh9ZnVuY3Rpb24g
c3Iobil7cmV0dXJuIG4ueX1mdW5jdGlvbiBocigpe3JldHVybntsZWFmOiEw
LG5vZGVzOltdLHBvaW50Om51bGwseDpudWxsLHk6bnVsbH19ZnVuY3Rpb24g
cHIobix0LGUscixpLHUpe2lmKCFuKHQsZSxyLGksdSkpe3ZhciBvPS41Kihl
K2kpLGE9LjUqKHIrdSksbD10Lm5vZGVzO2xbMF0mJnByKG4sbFswXSxlLHIs
byxhKSxsWzFdJiZwcihuLGxbMV0sbyxyLGksYSksbFsyXSYmcHIobixsWzJd
LGUsYSxvLHUpLGxbM10mJnByKG4sbFszXSxvLGEsaSx1KX19ZnVuY3Rpb24g
Z3Iobix0LGUscixpLHUsbyl7dmFyIGEsbD0xLzA7cmV0dXJuIGZ1bmN0aW9u
IGMobixmLHMsaCxwKXtpZighKGY+dXx8cz5vfHxyPmh8fGk+cCkpe2lmKGc9
bi5wb2ludCl7dmFyIGcsdj10LW4ueCxkPWUtbi55LHk9dip2K2QqZDtpZihs
Pnkpe3ZhciBtPU1hdGguc3FydChsPXkpO3I9dC1tLGk9ZS1tLHU9dCttLG89
ZSttLGE9Z319Zm9yKHZhciBNPW4ubm9kZXMseD0uNSooZitoKSxiPS41Kihz
K3ApLF89dD49eCx3PWU+PWIsUz13PDwxfF8saz1TKzQ7az5TOysrUylpZihu
PU1bMyZTXSlzd2l0Y2goMyZTKXtjYXNlIDA6YyhuLGYscyx4LGIpO2JyZWFr
O2Nhc2UgMTpjKG4seCxzLGgsYik7YnJlYWs7Y2FzZSAyOmMobixmLGIseCxw
KTticmVhaztjYXNlIDM6YyhuLHgsYixoLHApfX19KG4scixpLHUsbyksYX1m
dW5jdGlvbiB2cihuLHQpe249YW8ucmdiKG4pLHQ9YW8ucmdiKHQpO3ZhciBl
PW4ucixyPW4uZyxpPW4uYix1PXQuci1lLG89dC5nLXIsYT10LmItaTtyZXR1
cm4gZnVuY3Rpb24obil7cmV0dXJuIiMiK2JuKE1hdGgucm91bmQoZSt1Km4p
KStibihNYXRoLnJvdW5kKHIrbypuKSkrYm4oTWF0aC5yb3VuZChpK2Eqbikp
fX1mdW5jdGlvbiBkcihuLHQpe3ZhciBlLHI9e30saT17fTtmb3IoZSBpbiBu
KWUgaW4gdD9yW2VdPU1yKG5bZV0sdFtlXSk6aVtlXT1uW2VdO2ZvcihlIGlu
IHQpZSBpbiBufHwoaVtlXT10W2VdKTtyZXR1cm4gZnVuY3Rpb24obil7Zm9y
KGUgaW4gcilpW2VdPXJbZV0obik7cmV0dXJuIGl9fWZ1bmN0aW9uIHlyKG4s
dCl7cmV0dXJuIG49K24sdD0rdCxmdW5jdGlvbihlKXtyZXR1cm4gbiooMS1l
KSt0KmV9fWZ1bmN0aW9uIG1yKG4sdCl7dmFyIGUscixpLHU9aGwubGFzdElu
ZGV4PXBsLmxhc3RJbmRleD0wLG89LTEsYT1bXSxsPVtdO2ZvcihuKz0iIix0
Kz0iIjsoZT1obC5leGVjKG4pKSYmKHI9cGwuZXhlYyh0KSk7KShpPXIuaW5k
ZXgpPnUmJihpPXQuc2xpY2UodSxpKSxhW29dP2Fbb10rPWk6YVsrK29dPWkp
LChlPWVbMF0pPT09KHI9clswXSk/YVtvXT9hW29dKz1yOmFbKytvXT1yOihh
Wysrb109bnVsbCxsLnB1c2goe2k6byx4OnlyKGUscil9KSksdT1wbC5sYXN0
SW5kZXg7cmV0dXJuIHU8dC5sZW5ndGgmJihpPXQuc2xpY2UodSksYVtvXT9h
W29dKz1pOmFbKytvXT1pKSxhLmxlbmd0aDwyP2xbMF0/KHQ9bFswXS54LGZ1
bmN0aW9uKG4pe3JldHVybiB0KG4pKyIifSk6ZnVuY3Rpb24oKXtyZXR1cm4g
dH06KHQ9bC5sZW5ndGgsZnVuY3Rpb24obil7Zm9yKHZhciBlLHI9MDt0PnI7
KytyKWFbKGU9bFtyXSkuaV09ZS54KG4pO3JldHVybiBhLmpvaW4oIiIpfSl9
ZnVuY3Rpb24gTXIobix0KXtmb3IodmFyIGUscj1hby5pbnRlcnBvbGF0b3Jz
Lmxlbmd0aDstLXI+PTAmJiEoZT1hby5pbnRlcnBvbGF0b3JzW3JdKG4sdCkp
Oyk7cmV0dXJuIGV9ZnVuY3Rpb24geHIobix0KXt2YXIgZSxyPVtdLGk9W10s
dT1uLmxlbmd0aCxvPXQubGVuZ3RoLGE9TWF0aC5taW4obi5sZW5ndGgsdC5s
ZW5ndGgpO2ZvcihlPTA7YT5lOysrZSlyLnB1c2goTXIobltlXSx0W2VdKSk7
Zm9yKDt1PmU7KytlKWlbZV09bltlXTtmb3IoO28+ZTsrK2UpaVtlXT10W2Vd
O3JldHVybiBmdW5jdGlvbihuKXtmb3IoZT0wO2E+ZTsrK2UpaVtlXT1yW2Vd
KG4pO3JldHVybiBpfX1mdW5jdGlvbiBicihuKXtyZXR1cm4gZnVuY3Rpb24o
dCl7cmV0dXJuIDA+PXQ/MDp0Pj0xPzE6bih0KX19ZnVuY3Rpb24gX3Iobil7
cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLW4oMS10KX19ZnVuY3Rpb24g
d3Iobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybi41KiguNT50P24oMip0
KToyLW4oMi0yKnQpKX19ZnVuY3Rpb24gU3Iobil7cmV0dXJuIG4qbn1mdW5j
dGlvbiBrcihuKXtyZXR1cm4gbipuKm59ZnVuY3Rpb24gTnIobil7aWYoMD49
bilyZXR1cm4gMDtpZihuPj0xKXJldHVybiAxO3ZhciB0PW4qbixlPXQqbjty
ZXR1cm4gNCooLjU+bj9lOjMqKG4tdCkrZS0uNzUpfWZ1bmN0aW9uIEVyKG4p
e3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3codCxuKX19ZnVu
Y3Rpb24gQXIobil7cmV0dXJuIDEtTWF0aC5jb3MobipJbyl9ZnVuY3Rpb24g
Q3Iobil7cmV0dXJuIE1hdGgucG93KDIsMTAqKG4tMSkpfWZ1bmN0aW9uIHpy
KG4pe3JldHVybiAxLU1hdGguc3FydCgxLW4qbil9ZnVuY3Rpb24gTHIobix0
KXt2YXIgZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD0uNDUpLGFy
Z3VtZW50cy5sZW5ndGg/ZT10L0hvKk1hdGguYXNpbigxL24pOihuPTEsZT10
LzQpLGZ1bmN0aW9uKHIpe3JldHVybiAxK24qTWF0aC5wb3coMiwtMTAqcikq
TWF0aC5zaW4oKHItZSkqSG8vdCl9fWZ1bmN0aW9uIHFyKG4pe3JldHVybiBu
fHwobj0xLjcwMTU4KSxmdW5jdGlvbih0KXtyZXR1cm4gdCp0KigobisxKSp0
LW4pfX1mdW5jdGlvbiBUcihuKXtyZXR1cm4gMS8yLjc1Pm4/Ny41NjI1Km4q
bjoyLzIuNzU+bj83LjU2MjUqKG4tPTEuNS8yLjc1KSpuKy43NToyLjUvMi43
NT5uPzcuNTYyNSoobi09Mi4yNS8yLjc1KSpuKy45Mzc1OjcuNTYyNSoobi09
Mi42MjUvMi43NSkqbisuOTg0Mzc1fWZ1bmN0aW9uIFJyKG4sdCl7bj1hby5o
Y2wobiksdD1hby5oY2wodCk7dmFyIGU9bi5oLHI9bi5jLGk9bi5sLHU9dC5o
LWUsbz10LmMtcixhPXQubC1pO3JldHVybiBpc05hTihvKSYmKG89MCxyPWlz
TmFOKHIpP3QuYzpyKSxpc05hTih1KT8odT0wLGU9aXNOYU4oZSk/dC5oOmUp
OnU+MTgwP3UtPTM2MDotMTgwPnUmJih1Kz0zNjApLGZ1bmN0aW9uKG4pe3Jl
dHVybiBzbihlK3UqbixyK28qbixpK2EqbikrIiJ9fWZ1bmN0aW9uIERyKG4s
dCl7bj1hby5oc2wobiksdD1hby5oc2wodCk7dmFyIGU9bi5oLHI9bi5zLGk9
bi5sLHU9dC5oLWUsbz10LnMtcixhPXQubC1pO3JldHVybiBpc05hTihvKSYm
KG89MCxyPWlzTmFOKHIpP3QuczpyKSxpc05hTih1KT8odT0wLGU9aXNOYU4o
ZSk/dC5oOmUpOnU+MTgwP3UtPTM2MDotMTgwPnUmJih1Kz0zNjApLGZ1bmN0
aW9uKG4pe3JldHVybiBjbihlK3UqbixyK28qbixpK2EqbikrIiJ9fWZ1bmN0
aW9uIFByKG4sdCl7bj1hby5sYWIobiksdD1hby5sYWIodCk7dmFyIGU9bi5s
LHI9bi5hLGk9bi5iLHU9dC5sLWUsbz10LmEtcixhPXQuYi1pO3JldHVybiBm
dW5jdGlvbihuKXtyZXR1cm4gcG4oZSt1Km4scitvKm4saSthKm4pKyIifX1m
dW5jdGlvbiBVcihuLHQpe3JldHVybiB0LT1uLGZ1bmN0aW9uKGUpe3JldHVy
biBNYXRoLnJvdW5kKG4rdCplKX19ZnVuY3Rpb24ganIobil7dmFyIHQ9W24u
YSxuLmJdLGU9W24uYyxuLmRdLHI9SHIodCksaT1Gcih0LGUpLHU9SHIoT3Io
ZSx0LC1pKSl8fDA7dFswXSplWzFdPGVbMF0qdFsxXSYmKHRbMF0qPS0xLHRb
MV0qPS0xLHIqPS0xLGkqPS0xKSx0aGlzLnJvdGF0ZT0ocj9NYXRoLmF0YW4y
KHRbMV0sdFswXSk6TWF0aC5hdGFuMigtZVswXSxlWzFdKSkqWm8sdGhpcy50
cmFuc2xhdGU9W24uZSxuLmZdLHRoaXMuc2NhbGU9W3IsdV0sdGhpcy5za2V3
PXU/TWF0aC5hdGFuMihpLHUpKlpvOjB9ZnVuY3Rpb24gRnIobix0KXtyZXR1
cm4gblswXSp0WzBdK25bMV0qdFsxXX1mdW5jdGlvbiBIcihuKXt2YXIgdD1N
YXRoLnNxcnQoRnIobixuKSk7cmV0dXJuIHQmJihuWzBdLz10LG5bMV0vPXQp
LHR9ZnVuY3Rpb24gT3Iobix0LGUpe3JldHVybiBuWzBdKz1lKnRbMF0sblsx
XSs9ZSp0WzFdLG59ZnVuY3Rpb24gSXIobil7cmV0dXJuIG4ubGVuZ3RoP24u
cG9wKCkrIiwiOiIifWZ1bmN0aW9uIFlyKG4sdCxlLHIpe2lmKG5bMF0hPT10
WzBdfHxuWzFdIT09dFsxXSl7dmFyIGk9ZS5wdXNoKCJ0cmFuc2xhdGUoIixu
dWxsLCIsIixudWxsLCIpIik7ci5wdXNoKHtpOmktNCx4OnlyKG5bMF0sdFsw
XSl9LHtpOmktMix4OnlyKG5bMV0sdFsxXSl9KX1lbHNlKHRbMF18fHRbMV0p
JiZlLnB1c2goInRyYW5zbGF0ZSgiK3QrIikiKX1mdW5jdGlvbiBacihuLHQs
ZSxyKXtuIT09dD8obi10PjE4MD90Kz0zNjA6dC1uPjE4MCYmKG4rPTM2MCks
ci5wdXNoKHtpOmUucHVzaChJcihlKSsicm90YXRlKCIsbnVsbCwiKSIpLTIs
eDp5cihuLHQpfSkpOnQmJmUucHVzaChJcihlKSsicm90YXRlKCIrdCsiKSIp
fWZ1bmN0aW9uIFZyKG4sdCxlLHIpe24hPT10P3IucHVzaCh7aTplLnB1c2go
SXIoZSkrInNrZXdYKCIsbnVsbCwiKSIpLTIseDp5cihuLHQpfSk6dCYmZS5w
dXNoKElyKGUpKyJza2V3WCgiK3QrIikiKX1mdW5jdGlvbiBYcihuLHQsZSxy
KXtpZihuWzBdIT09dFswXXx8blsxXSE9PXRbMV0pe3ZhciBpPWUucHVzaChJ
cihlKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7ci5wdXNoKHtpOmkt
NCx4OnlyKG5bMF0sdFswXSl9LHtpOmktMix4OnlyKG5bMV0sdFsxXSl9KX1l
bHNlIDE9PT10WzBdJiYxPT09dFsxXXx8ZS5wdXNoKElyKGUpKyJzY2FsZSgi
K3QrIikiKX1mdW5jdGlvbiAkcihuLHQpe3ZhciBlPVtdLHI9W107cmV0dXJu
IG49YW8udHJhbnNmb3JtKG4pLHQ9YW8udHJhbnNmb3JtKHQpLFlyKG4udHJh
bnNsYXRlLHQudHJhbnNsYXRlLGUsciksWnIobi5yb3RhdGUsdC5yb3RhdGUs
ZSxyKSxWcihuLnNrZXcsdC5za2V3LGUsciksWHIobi5zY2FsZSx0LnNjYWxl
LGUsciksbj10PW51bGwsZnVuY3Rpb24obil7Zm9yKHZhciB0LGk9LTEsdT1y
Lmxlbmd0aDsrK2k8dTspZVsodD1yW2ldKS5pXT10Lngobik7cmV0dXJuIGUu
am9pbigiIil9fWZ1bmN0aW9uIEJyKG4sdCl7cmV0dXJuIHQ9KHQtPW49K24p
fHwxL3QsZnVuY3Rpb24oZSl7cmV0dXJuKGUtbikvdH19ZnVuY3Rpb24gV3Io
bix0KXtyZXR1cm4gdD0odC09bj0rbil8fDEvdCxmdW5jdGlvbihlKXtyZXR1
cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigxLChlLW4pL3QpKX19ZnVuY3Rpb24g
SnIobil7Zm9yKHZhciB0PW4uc291cmNlLGU9bi50YXJnZXQscj1Lcih0LGUp
LGk9W3RdO3QhPT1yOyl0PXQucGFyZW50LGkucHVzaCh0KTtmb3IodmFyIHU9
aS5sZW5ndGg7ZSE9PXI7KWkuc3BsaWNlKHUsMCxlKSxlPWUucGFyZW50O3Jl
dHVybiBpfWZ1bmN0aW9uIEdyKG4pe2Zvcih2YXIgdD1bXSxlPW4ucGFyZW50
O251bGwhPWU7KXQucHVzaChuKSxuPWUsZT1lLnBhcmVudDtyZXR1cm4gdC5w
dXNoKG4pLHR9ZnVuY3Rpb24gS3Iobix0KXtpZihuPT09dClyZXR1cm4gbjtm
b3IodmFyIGU9R3Iobikscj1Hcih0KSxpPWUucG9wKCksdT1yLnBvcCgpLG89
bnVsbDtpPT09dTspbz1pLGk9ZS5wb3AoKSx1PXIucG9wKCk7cmV0dXJuIG99
ZnVuY3Rpb24gUXIobil7bi5maXhlZHw9Mn1mdW5jdGlvbiBuaShuKXtuLmZp
eGVkJj0tN31mdW5jdGlvbiB0aShuKXtuLmZpeGVkfD00LG4ucHg9bi54LG4u
cHk9bi55fWZ1bmN0aW9uIGVpKG4pe24uZml4ZWQmPS01fWZ1bmN0aW9uIHJp
KG4sdCxlKXt2YXIgcj0wLGk9MDtpZihuLmNoYXJnZT0wLCFuLmxlYWYpZm9y
KHZhciB1LG89bi5ub2RlcyxhPW8ubGVuZ3RoLGw9LTE7KytsPGE7KXU9b1ts
XSxudWxsIT11JiYocmkodSx0LGUpLG4uY2hhcmdlKz11LmNoYXJnZSxyKz11
LmNoYXJnZSp1LmN4LGkrPXUuY2hhcmdlKnUuY3kpO2lmKG4ucG9pbnQpe24u
bGVhZnx8KG4ucG9pbnQueCs9TWF0aC5yYW5kb20oKS0uNSxuLnBvaW50Lnkr
PU1hdGgucmFuZG9tKCktLjUpO3ZhciBjPXQqZVtuLnBvaW50LmluZGV4XTtu
LmNoYXJnZSs9bi5wb2ludENoYXJnZT1jLHIrPWMqbi5wb2ludC54LGkrPWMq
bi5wb2ludC55fW4uY3g9ci9uLmNoYXJnZSxuLmN5PWkvbi5jaGFyZ2V9ZnVu
Y3Rpb24gaWkobix0KXtyZXR1cm4gYW8ucmViaW5kKG4sdCwic29ydCIsImNo
aWxkcmVuIiwidmFsdWUiKSxuLm5vZGVzPW4sbi5saW5rcz1maSxufWZ1bmN0
aW9uIHVpKG4sdCl7Zm9yKHZhciBlPVtuXTtudWxsIT0obj1lLnBvcCgpKTsp
aWYodChuKSwoaT1uLmNoaWxkcmVuKSYmKHI9aS5sZW5ndGgpKWZvcih2YXIg
cixpOy0tcj49MDspZS5wdXNoKGlbcl0pfWZ1bmN0aW9uIG9pKG4sdCl7Zm9y
KHZhciBlPVtuXSxyPVtdO251bGwhPShuPWUucG9wKCkpOylpZihyLnB1c2go
biksKHU9bi5jaGlsZHJlbikmJihpPXUubGVuZ3RoKSlmb3IodmFyIGksdSxv
PS0xOysrbzxpOyllLnB1c2godVtvXSk7Zm9yKDtudWxsIT0obj1yLnBvcCgp
KTspdChuKX1mdW5jdGlvbiBhaShuKXtyZXR1cm4gbi5jaGlsZHJlbn1mdW5j
dGlvbiBsaShuKXtyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBjaShuLHQpe3Jl
dHVybiB0LnZhbHVlLW4udmFsdWV9ZnVuY3Rpb24gZmkobil7cmV0dXJuIGFv
Lm1lcmdlKG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybihuLmNoaWxkcmVufHxb
XSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6bix0YXJnZXQ6dH19
KX0pKX1mdW5jdGlvbiBzaShuKXtyZXR1cm4gbi54fWZ1bmN0aW9uIGhpKG4p
e3JldHVybiBuLnl9ZnVuY3Rpb24gcGkobix0LGUpe24ueTA9dCxuLnk9ZX1m
dW5jdGlvbiBnaShuKXtyZXR1cm4gYW8ucmFuZ2Uobi5sZW5ndGgpfWZ1bmN0
aW9uIHZpKG4pe2Zvcih2YXIgdD0tMSxlPW5bMF0ubGVuZ3RoLHI9W107Kyt0
PGU7KXJbdF09MDtyZXR1cm4gcn1mdW5jdGlvbiBkaShuKXtmb3IodmFyIHQs
ZT0xLHI9MCxpPW5bMF1bMV0sdT1uLmxlbmd0aDt1PmU7KytlKSh0PW5bZV1b
MV0pPmkmJihyPWUsaT10KTtyZXR1cm4gcn1mdW5jdGlvbiB5aShuKXtyZXR1
cm4gbi5yZWR1Y2UobWksMCl9ZnVuY3Rpb24gbWkobix0KXtyZXR1cm4gbit0
WzFdfWZ1bmN0aW9uIE1pKG4sdCl7cmV0dXJuIHhpKG4sTWF0aC5jZWlsKE1h
dGgubG9nKHQubGVuZ3RoKS9NYXRoLkxOMisxKSl9ZnVuY3Rpb24geGkobix0
KXtmb3IodmFyIGU9LTEscj0rblswXSxpPShuWzFdLXIpL3QsdT1bXTsrK2U8
PXQ7KXVbZV09aSplK3I7cmV0dXJuIHV9ZnVuY3Rpb24gYmkobil7cmV0dXJu
W2FvLm1pbihuKSxhby5tYXgobildfWZ1bmN0aW9uIF9pKG4sdCl7cmV0dXJu
IG4udmFsdWUtdC52YWx1ZX1mdW5jdGlvbiB3aShuLHQpe3ZhciBlPW4uX3Bh
Y2tfbmV4dDtuLl9wYWNrX25leHQ9dCx0Ll9wYWNrX3ByZXY9bix0Ll9wYWNr
X25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1mdW5jdGlvbiBTaShuLHQpe24uX3Bh
Y2tfbmV4dD10LHQuX3BhY2tfcHJldj1ufWZ1bmN0aW9uIGtpKG4sdCl7dmFy