### SYNC-TRANSFER 2/2 -- mit sync-entpacken.bat entpacken
### Base64
### FILE: index.html | 554837
PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImRlIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0
PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+RC5SLkkuVi5FLiAtIFZJMyBD
bHVzdGVyPC90aXRsZT4KICAgIDxzdHlsZT4KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgRC5S
LkkuVi5FLiBQb3J0YWwgdjEuMCAtIFN0eWxlc2hlZXQKICAgT3B0aW1pZXJ0IGZ1ZXIgMTkyMHgx
MDgwIChGdWxsIEhEKQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKKiB7IG1hcmdpbjogMDsg
cGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQoKLyogLS0tIFRoZW1lIFZhcmlh
YmxlcyAtLS0gKi8KOnJvb3QgewogICAgLS1iZy1wcmltYXJ5OiAjMWEyMzMyOwogICAgLS1iZy1w
cmltYXJ5LWRhcms6ICMxMTFkMmE7CiAgICAtLWJnLWJvZHk6ICNmNWY1ZjU7CiAgICAtLWJnLWNh
cmQ6ICNmZmZmZmY7CiAgICAtLWJnLWNhcmQtYWx0OiAjZThlY2YwOwogICAgLS1iZy10b29sYmFy
OiAjZjBmMGYwOwogICAgLS1iZy1ob3ZlcjogI2YwZjhmZjsKICAgIC0tYmctYWN0aXZlOiAjZThm
MWY3OwogICAgLS1iZy1pbnB1dDogI2ZmZmZmZjsKICAgIC0tdGV4dC1wcmltYXJ5OiAjMzMzOwog
ICAgLS10ZXh0LXNlY29uZGFyeTogIzY2NjsKICAgIC0tdGV4dC1tdXRlZDogIzk5OTsKICAgIC0t
dGV4dC1oZWFkaW5nOiAjMkU0QTYyOwogICAgLS1ib3JkZXItY29sb3I6ICNkZGQ7CiAgICAtLWJv
cmRlci1saWdodDogI2UwZTBlMDsKICAgIC0tYm9yZGVyLXN0cm9uZzogI2MwYzBjMDsKICAgIC0t
c2hhZG93LWxpZ2h0OiByZ2JhKDAsMCwwLDAuMSk7CiAgICAtLXNoYWRvdy1tZWRpdW06IHJnYmEo
MCwwLDAsMC4xNSk7CiAgICAtLXNoYWRvdy1tb2RhbDogMCAxMHB4IDQwcHggcmdiYSgwLDAsMCww
LjMpOwogICAgLS10cmFuc2l0aW9uLXN0ZDogYWxsIDAuM3M7CiAgICAtLXJhZGl1cy1zbTogNHB4
OwogICAgLS1yYWRpdXMtbW9kYWw6IDhweDsKfQoKW2RhdGEtdGhlbWU9Im5pZ2h0Il0gewogICAg
LS1iZy1wcmltYXJ5OiAjMWEyMzMyOwogICAgLS1iZy1wcmltYXJ5LWRhcms6ICMxMTE4Mjc7CiAg
ICAtLWJnLWJvZHk6ICMwZjE0MTk7CiAgICAtLWJnLWNhcmQ6ICMxYzIzMzM7CiAgICAtLWJnLWNh
cmQtYWx0OiAjMjMyYjNhOwogICAgLS1iZy10b29sYmFyOiAjMjMyYjNhOwogICAgLS1iZy1ob3Zl
cjogIzI1MzA0NTsKICAgIC0tYmctYWN0aXZlOiAjMmEzNjUwOwogICAgLS1iZy1pbnB1dDogIzFj
MjMzMzsKICAgIC0tdGV4dC1wcmltYXJ5OiAjZTBlNmVkOwogICAgLS10ZXh0LXNlY29uZGFyeTog
I2EwYWVjMDsKICAgIC0tdGV4dC1tdXRlZDogIzcxODA5NjsKICAgIC0tdGV4dC1oZWFkaW5nOiAj
N2ViOGRhOwogICAgLS1ib3JkZXItY29sb3I6ICMyZDM3NDg7CiAgICAtLWJvcmRlci1saWdodDog
IzJkMzc0ODsKICAgIC0tYm9yZGVyLXN0cm9uZzogIzRhNTU2ODsKICAgIC0tc2hhZG93LWxpZ2h0
OiByZ2JhKDAsMCwwLDAuMyk7CiAgICAtLXNoYWRvdy1tZWRpdW06IHJnYmEoMCwwLDAsMC40KTsK
ICAgIC0tc2hhZG93LW1vZGFsOiAwIDEwcHggNDBweCByZ2JhKDAsMCwwLDAuNSk7CiAgICAtLXRy
YW5zaXRpb24tc3RkOiBhbGwgMC4zczsKICAgIC0tcmFkaXVzLXNtOiA0cHg7CiAgICAtLXJhZGl1
cy1tb2RhbDogOHB4Owp9Cgpib2R5IHsKICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBC
bGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwg
QXJpYWwsIHNhbnMtc2VyaWY7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZy1ib2R5KTsK
ICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGZs
ZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcywgY29sb3IgMC4zczsK
fQoKLyogLS0tIEhlYWRlciAtLS0gKi8KaGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZh
cigtLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHdoaXRlOwogICAgYm94LXNoYWRvdzogMCAycHgg
NHB4IHZhcigtLXNoYWRvdy1saWdodCk7CiAgICBmbGV4LXNocmluazogMDsKICAgIHotaW5kZXg6
IDEwMDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVz
dGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgcGFkZGluZzogMTZweCAzMnB4OwogICAg
dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOwp9CgouZHJpdmUtbG9nbyB7IHdpZHRo
OiAyMDBweDsgbWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IH0KCi5kcml2ZS1oZWFkZXIt
Y2VudGVyIHsKICAgIGZsZXg6IDE7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOwp9CgouZHJpdmUtaGVhZGVyLWNlbnRlciBwIHsgZm9udC1zaXplOiAyMHB4
OyBmb250LXdlaWdodDogNTAwOyBsZXR0ZXItc3BhY2luZzogMC41cHg7IG9wYWNpdHk6IDAuOTU7
IG1hcmdpbjogMDsgfQoKLyogLS0tIFRoZW1lIFRvZ2dsZSAtLS0gKi8KLnRoZW1lLXRvZ2dsZSB7
CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpOwogICAgYm9yZGVyOiAxcHgg
c29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjMpOwogICAgY29sb3I6IHdoaXRlOwogICAgd2lkdGg6
IDQ0cHg7CiAgICBoZWlnaHQ6IDQ0cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBjdXJz
b3I6IHBvaW50ZXI7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsK
ICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNp
dGlvbi1zdGQpOwogICAgZmxleC1zaHJpbms6IDA7Cn0KCi50aGVtZS10b2dnbGU6aG92ZXIgeyBi
YWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpOyB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7
IH0KCi50aGVtZS10b2dnbGUgLmljb24tZGF5LCAudGhlbWUtdG9nZ2xlIC5pY29uLW5pZ2h0IHsK
ICAgIGZvbnQtc2l6ZTogMjJweDsgY29sb3I6IHdoaXRlOyB3aWR0aDogNDRweDsgaGVpZ2h0OiA0
NHB4OwogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250
ZW50OiBjZW50ZXI7CiAgICBtYXJnaW4tdG9wOiAtMnB4Owp9Ci50aGVtZS10b2dnbGUgLmljb24t
ZGF5IHsgfQoudGhlbWUtdG9nZ2xlIC5pY29uLW5pZ2h0IHsgZGlzcGxheTogbm9uZTsgfQpbZGF0
YS10aGVtZT0ibmlnaHQiXSAudGhlbWUtdG9nZ2xlIC5pY29uLWRheSB7IGRpc3BsYXk6IG5vbmU7
IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLnRoZW1lLXRvZ2dsZSAuaWNvbi1uaWdodCB7IGRpc3Bs
YXk6IGZsZXg7IH0KCi8qIC0tLSBDb25uZWN0aW9uIEJhciAtLS0gKi8KLmNvbm5lY3Rpb24tYmFy
IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXByaW1hcnktZGFyayk7CiAgICBjb2xv
cjogd2hpdGU7CiAgICBwYWRkaW5nOiA2cHggMzJweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBh
bGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgZm9udC1zaXplOiAxM3B4Owog
ICAgZmxleC1zaHJpbms6IDA7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7
Cn0KCi5jb25uZWN0aW9uLWJhciAuc3RhdHVzLWRvdCB7CiAgICB3aWR0aDogOHB4OyBoZWlnaHQ6
IDhweDsgYm9yZGVyLXJhZGl1czogNTAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDQ0NDsK
ICAgIGZsZXgtc2hyaW5rOiAwOwp9CgouY29ubmVjdGlvbi1iYXIgLnN0YXR1cy1kb3QuY29ubmVj
dGVkIHsgYmFja2dyb3VuZC1jb2xvcjogIzRDQUY1MDsgfQouY29ubmVjdGlvbi1iYXIgLnN0YXR1
cy1kb3QucmVhZG9ubHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY3ZTIyOyB9CgouY29ubmVjdGlv
bi1iYXIgYnV0dG9uIHsKICAgIHBhZGRpbmc6IDRweCAxMnB4OwogICAgYmFja2dyb3VuZDogdHJh
bnNwYXJlbnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNCk7CiAg
ICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBmb250LXNpemU6IDEycHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKfQoKLmNv
bm5lY3Rpb24tYmFyIGJ1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUs
MC4xNSk7IH0KCi5jb25uZWN0aW9uLWJhciAuc3BhY2VyIHsgZmxleDogMTsgfQoKLmNvbm5lY3Rp
b24tYmFyIC5zeW5jLWluZm8geyBvcGFjaXR5OiAwLjc7IGZvbnQtc2l6ZTogMTJweDsgfQoKLyog
LS0tIE1haW4gQ29udGFpbmVyIC0tLSAqLwptYWluIHsKICAgIHdpZHRoOiAxMDAlOwogICAgbWF4
LXdpZHRoOiAxODAwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIHBhZGRpbmc6IDE1cHggMzBw
eDsKICAgIGZsZXg6IDE7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNv
bHVtbjsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi8qIC0tLSBDb250cm9scyAtLS0gKi8KLmNv
bnRyb2xzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwog
ICAgZ2FwOiA4cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgZmxleC1zaHJpbms6IDA7
Cn0KCi5jb250cm9scy1yb3ctdG9wIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDEwcHg7
CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgouY29udHJvbHMtcm93LWNhdGVnb3JpZXMgewog
ICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogOHB4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAg
YWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLnNlYXJjaC1ib3ggeyBmbGV4OiAxOyBtaW4td2lkdGg6
IDI1MHB4OyB9Cgouc2VhcmNoLWJveCBpbnB1dCB7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRp
bmc6IDhweCAxNXB4OwogICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsK
ICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHRyYW5zaXRp
b246IGJvcmRlci1jb2xvciAwLjNzLCBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MsIGNvbG9yIDAuM3M7
CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZy1pbnB1dCk7CiAgICBjb2xvcjogdmFyKC0t
dGV4dC1wcmltYXJ5KTsKfQoKLnNlYXJjaC1ib3ggaW5wdXQ6Zm9jdXMgewogICAgb3V0bGluZTog
bm9uZTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJveC1zaGFk
b3c6IDAgMCA1cHggcmdiYSg0NiwgNzQsIDk4LCAwLjIpOwp9CgouZmlsdGVyLWJ1dHRvbnMsIC5z
dGF0dXMtZmlsdGVycyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBmbGV4LXdyYXA6IHdyYXA7
IH0KCi5maWx0ZXItYnRuIHsKICAgIHBhZGRpbmc6IDhweCAxNXB4OwogICAgYmFja2dyb3VuZC1j
b2xvcjogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS10ZXh0LWhl
YWRpbmcpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBib3JkZXItcmFkaXVz
OiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZm9u
dC1zaXplOiAxNHB4OwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zdGQpOwp9Cgou
ZmlsdGVyLWJ0bjpob3ZlciwgLmZpbHRlci1idG4uYWN0aXZlIHsgYmFja2dyb3VuZC1jb2xvcjog
dmFyKC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHdoaXRlOyB9Cgouc3RhdHVzLWZpbHRlci1idG4g
ewogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZy1j
YXJkKTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3Jk
ZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNTAw
OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1z
dGQpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6
IDVweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9Cgouc3RhdHVzLWZpbHRlci1i
dG46aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLnN0YXR1cy1m
aWx0ZXItYnRuLmFjdGl2ZSB7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgYmFj
a2dyb3VuZC1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHdoaXRlOyB9CgovKiAt
LS0gVHdvLUNvbHVtbiBMYXlvdXQgLS0tICovCi5jb250YWluZXIgewogICAgZGlzcGxheTogZ3Jp
ZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzUwcHggMWZyOwogICAgZ2FwOiAyMHB4Owog
ICAgZmxleDogMTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi8qIC0tLSBMaXN0ZSAtLS0gKi8K
LmRvY3VtZW50LWxpc3QgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3Jk
ZXItcmFkaXVzOiA0cHg7CiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggdmFyKC0tc2hhZG93LWxp
Z2h0KTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1k
aXJlY3Rpb246IGNvbHVtbjsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zczsK
fQoKLmxpc3QtaGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWNhcmQtYWx0
KTsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0t
dGV4dC1oZWFkaW5nKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4
dC1oZWFkaW5nKTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNl
LWJldHdlZW47CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgdHJhbnNpdGlvbjogYmFja2dy
b3VuZC1jb2xvciAwLjNzOwp9CgoubGlzdC1oZWFkZXIgLmRvYy1jb3VudCB7IGZvbnQtc2l6ZTog
MTJweDsgZm9udC13ZWlnaHQ6IDQwMDsgb3BhY2l0eTogMC43OyB9CgoubGlzdC1pdGVtcyB7IG92
ZXJmbG93LXk6IGF1dG87IGZsZXg6IDE7IH0KCi5kb2N1bWVudC1pdGVtIHsKICAgIHBhZGRpbmc6
IDE2cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNw
YXJlbnQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0
aW9uLXN0ZCk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5kb2N1bWVudC1pdGVtOmhvdmVy
IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWhvdmVyKTsKICAgIGJvcmRlci1sZWZ0
LWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9CgouZG9jdW1lbnQtaXRlbS5hY3RpdmUgewog
ICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctYWN0aXZlKTsKICAgIGJvcmRlci1sZWZ0LWNv
bG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9CgouZG9jdW1lbnQtaXRlbS5kcmFmdCB7IG9wYWNp
dHk6IDAuNzsgfQoKLmRvYy1pdGVtLXRpdGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXpl
OiAxNXB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTogNXB4OyB9
CgouZG9jLWl0ZW0tbWV0YSB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgZmxleC13cmFwOiB3
cmFwOyBtYXJnaW4tYm90dG9tOiA1cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5kb2MtaXRl
bS1jYXRlZ29yeSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgcGFkZGluZzogMnB4IDhweDsKICAgIGJvcmRl
ci1yYWRpdXM6IDNweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGNvbG9yOiB2YXIoLS10ZXh0
LXNlY29uZGFyeSk7Cn0KCi5zdGF0dXMtYmFkZ2Utc21hbGwgewogICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOwogICAgcGFkZGluZzogMnB4IDZweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAg
IGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCi5kb2MtaXRlbS1kYXRl
IHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KCi8qIC0tLSBE
ZXRhaWwgVmlldyAtLS0gKi8KLmRvY3VtZW50LWRldGFpbCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIo
LS1iZy1jYXJkKTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGJveC1zaGFkb3c6IDAgMXB4
IDNweCB2YXIoLS1zaGFkb3ctbGlnaHQpOwogICAgcGFkZGluZzogMzBweDsKICAgIG92ZXJmbG93
LXk6IGF1dG87CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBhbmltYXRpb246IGZhZGVJbiAwLjNzIGVh
c2UtaW47CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7Cn0KCi5kZXRhaWwt
ZW1wdHkgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBq
dXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGhlaWdodDogMTAwJTsKICAgIGNvbG9yOiB2YXIo
LS10ZXh0LW11dGVkKTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmRldGFpbC1oZWFkZXIg
ewogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4OwogICAg
Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7Cn0KCi5kZXRhaWwt
dGl0bGUgeyBmb250LXNpemU6IDI4cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJn
aW4tYm90dG9tOiAxMHB4OyBmb250LXdlaWdodDogNjAwOyB9CgouZGV0YWlsLW1ldGEgeyBkaXNw
bGF5OiBmbGV4OyBnYXA6IDI1cHg7IGZsZXgtd3JhcDogd3JhcDsgZm9udC1zaXplOiAxNXB4OyBj
b2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9CgoubWV0YS1pdGVtIHsgZGlzcGxheTogZmxl
eDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQoubWV0YS1sYWJlbCB7IGZvbnQtd2VpZ2h0OiA2
MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBtYXJnaW4tYm90dG9tOiAzcHg7IH0KCi5z
dGF0dXMtYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogM3B4
IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBm
b250LXdlaWdodDogNjAwOwogICAgd2lkdGg6IGZpdC1jb250ZW50OwogICAgbGluZS1oZWlnaHQ6
IDEuNDsKfQoKLmRldGFpbC1jb250ZW50IHsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGxpbmUt
aGVpZ2h0OiAxLjY7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIG1hcmdpbjog
MTVweCAwIDI1cHggMDsKICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgIG92ZXJmbG93LXdy
YXA6IGJyZWFrLXdvcmQ7CiAgICBvdmVyZmxvdy14OiBoaWRkZW47Cn0KCi5kZXRhaWwtY29udGVu
dCBoMSB7CiAgICBmb250LXNpemU6IDI0cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBm
b250LXdlaWdodDogNzAwOwogICAgbWFyZ2luOiAyNHB4IDAgMTJweCAwOyBwYWRkaW5nOiAxMnB4
IDA7IGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9Ci5kZXRh
aWwtY29udGVudCBoMiB7CiAgICBmb250LXNpemU6IDIwcHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhl
YWRpbmcpOyBmb250LXdlaWdodDogNzAwOwogICAgbWFyZ2luOiAyMHB4IDAgMTBweCAwOyBwYWRk
aW5nOiAxMHB4IDA7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp
Owp9Ci5kZXRhaWwtY29udGVudCBoMyB7CiAgICBmb250LXNpemU6IDE3cHg7IGNvbG9yOiB2YXIo
LS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNzAwOwogICAgbWFyZ2luOiAxNnB4IDAgOHB4
IDA7IHBhZGRpbmc6IDZweCAwOwp9Ci5kZXRhaWwtY29udGVudCBoNCB7CiAgICBmb250LXNpemU6
IDE1cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNjAwOwogICAg
bWFyZ2luOiAxMnB4IDAgNnB4IDA7Cn0KCi5kZXRhaWwtY29udGVudCBwIHsgbWFyZ2luOiAwIDAg
MC40ZW0gMDsgfQouZGV0YWlsLWNvbnRlbnQgKiB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50
OyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7IHdvcmQtYnJlYWs6IGJyZWFr
LXdvcmQgIWltcG9ydGFudDsgfQouZGV0YWlsLWNvbnRlbnQgc3BhbiB7IHdoaXRlLXNwYWNlOiBp
bmhlcml0ICFpbXBvcnRhbnQ7IH0KLmRldGFpbC1jb250ZW50OjphZnRlciB7IGNvbnRlbnQ6ICIi
OyBkaXNwbGF5OiB0YWJsZTsgY2xlYXI6IGJvdGg7IH0KCi8qIC0tLSBBY2NvcmRpb24gKEF1Zmts
YXBwYmFyZSBUZXh0YmVyZWljaGUpIC0tLSAqLwouZHJpdmUtYWNjb3JkaW9uIHsKICAgIGJvcmRl
cjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGJvcmRlci1yYWRpdXM6IDhweDsKICAg
IG1hcmdpbjogNnB4IDA7IG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kOiAjZjBmNWZh
Owp9Ci5kcml2ZS1hY2NvcmRpb24gKyAuZHJpdmUtYWNjb3JkaW9uIHsgbWFyZ2luLXRvcDogMDsg
Ym9yZGVyLXRvcDogbm9uZTsgYm9yZGVyLXJhZGl1czogMDsgfQouZHJpdmUtYWNjb3JkaW9uOmZp
cnN0LWNoaWxkLCAuZHJpdmUtYWNjb3JkaW9uOm5vdCguZHJpdmUtYWNjb3JkaW9uICsgLmRyaXZl
LWFjY29yZGlvbikgeyBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDsgfQouZHJpdmUtYWNjb3Jk
aW9uOmxhc3Qtb2YtdHlwZSB7IGJvcmRlci1yYWRpdXM6IDAgMCA4cHggOHB4OyB9Ci5kcml2ZS1h
Y2NvcmRpb246b25seS1vZi10eXBlIHsgYm9yZGVyLXJhZGl1czogOHB4OyB9CltkYXRhLXRoZW1l
PSJuaWdodCJdIC5kcml2ZS1hY2NvcmRpb24geyBiYWNrZ3JvdW5kOiAjMWMyYTNhOyB9CgouZHJp
dmUtYWNjb3JkaW9uLWhlYWRlciB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2Vu
dGVyOyBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiAxMXB4IDE2cHg7IGN1cnNvcjogcG9pbnRlcjsg
dXNlci1zZWxlY3Q6IG5vbmU7CiAgICBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE0cHg7
IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYmFja2dyb3VuZDogI2U0ZWNmNDsgdHJh
bnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUt
YWNjb3JkaW9uLWhlYWRlciB7IGJhY2tncm91bmQ6ICMyNDMwNDA7IH0KLmRyaXZlLWFjY29yZGlv
bi1oZWFkZXI6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZDhlNGYwOyB9CltkYXRhLXRoZW1lPSJuaWdo
dCJdIC5kcml2ZS1hY2NvcmRpb24taGVhZGVyOmhvdmVyIHsgYmFja2dyb3VuZDogIzJhM2E0ZTsg
fQoKLmRyaXZlLWFjY29yZGlvbi1hcnJvdyB7CiAgICBmbGV4LXNocmluazogMDsgd2lkdGg6IDE2
cHg7IGhlaWdodDogMTZweDsKICAgIGJhY2tncm91bmQ6IHVybCgnY3NzL2ljb25zL0NoZXZyb25f
YXJ0aWNsZV9jbG9zZWQucG5nJykgY2VudGVyL2NvbnRhaW4gbm8tcmVwZWF0OwogICAgdHJhbnNp
dGlvbjogdHJhbnNmb3JtIDAuMnM7Cn0KLmRyaXZlLWFjY29yZGlvbi1hcnJvdyBpbWcgeyBkaXNw
bGF5OiBub25lOyB9Ci5kcml2ZS1hY2NvcmRpb24ub3BlbiAuZHJpdmUtYWNjb3JkaW9uLWFycm93
IHsgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5kcml2
ZS1hY2NvcmRpb24tYXJyb3cgeyBmaWx0ZXI6IGludmVydCgxKSBicmlnaHRuZXNzKDEuNSk7IH0K
Ci5kcml2ZS1hY2NvcmRpb24tYm9keSB7CiAgICBkaXNwbGF5OiBub25lOyBwYWRkaW5nOiAxNHB4
IDE4cHg7CiAgICBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjc7IGNvbG9yOiB2YXIo
LS10ZXh0LXByaW1hcnkpOwp9Ci5kcml2ZS1hY2NvcmRpb24ub3BlbiAuZHJpdmUtYWNjb3JkaW9u
LWJvZHkgeyBkaXNwbGF5OiBibG9jazsgfQouZHJpdmUtYWNjb3JkaW9uLWJvZHkgdWwsIC5kcml2
ZS1hY2NvcmRpb24tYm9keSBvbCB7IHBhZGRpbmctbGVmdDogMjBweDsgbWFyZ2luOiA2cHggMDsg
fQouZHJpdmUtYWNjb3JkaW9uLWJvZHkgbGkgeyBtYXJnaW4tYm90dG9tOiAycHg7IH0KCi8qIFN1
Yi1IZWFkZXIgaW5uZXJoYWxiIGVpbmVzIEFjY29yZGlvbnMgKEZBUS1TdGlsKSAqLwouZHJpdmUt
YWNjb3JkaW9uLXN1YiB7CiAgICBtYXJnaW46IDEwcHggMCA2cHggMDsgcGFkZGluZzogOHB4IDEy
cHg7CiAgICBiYWNrZ3JvdW5kOiAjZGNlNmYwOyBib3JkZXItcmFkaXVzOiA1cHg7IGJvcmRlci1s
ZWZ0OiAzcHggc29saWQgdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7
IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0KW2RhdGEtdGhl
bWU9Im5pZ2h0Il0gLmRyaXZlLWFjY29yZGlvbi1zdWIgeyBiYWNrZ3JvdW5kOiAjMWUyZTQwOyB9
CgovKiAtLS0gRkFRLUJlcmVpY2ggLS0tICovCi5kcml2ZS1mYXEgewogICAgYm9yZGVyOiAxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogOHB4OwogICAgbWFyZ2lu
OiAxNnB4IDA7IG92ZXJmbG93OiBoaWRkZW47Cn0KLmRyaXZlLWZhcS1oZWFkZXIgewogICAgZGlz
cGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OwogICAgcGFkZGluZzog
MTJweCAxNnB4OyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDE1cHg7CiAgICBjb2xvcjog
d2hpdGU7IGJhY2tncm91bmQ6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0KLmRyaXZlLWZhcS1ib2R5
IHsgcGFkZGluZzogMDsgfQouZHJpdmUtZmFxLWl0ZW0geyBib3JkZXItYm90dG9tOiAxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgfQouZHJpdmUtZmFxLWl0ZW06bGFzdC1jaGlsZCB7IGJv
cmRlci1ib3R0b206IG5vbmU7IH0KLmRyaXZlLWZhcS1xdWVzdGlvbiB7CiAgICBkaXNwbGF5OiBm
bGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiAxMHB4IDE2
cHg7IGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBmb250LXdlaWdodDog
NjAwOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYmFj
a2dyb3VuZDogI2VkZjJmODsgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQpbZGF0YS10
aGVtZT0ibmlnaHQiXSAuZHJpdmUtZmFxLXF1ZXN0aW9uIHsgYmFja2dyb3VuZDogIzFlMmEzODsg
fQouZHJpdmUtZmFxLXF1ZXN0aW9uOmhvdmVyIHsgYmFja2dyb3VuZDogI2UwZWFmNDsgfQpbZGF0
YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtZmFxLXF1ZXN0aW9uOmhvdmVyIHsgYmFja2dyb3VuZDog
IzI1MzQ0NDsgfQouZHJpdmUtZmFxLWFycm93IHsKICAgIGZsZXgtc2hyaW5rOiAwOyB3aWR0aDog
MTRweDsgaGVpZ2h0OiAxNHB4OwogICAgYmFja2dyb3VuZDogdXJsKCdjc3MvaWNvbnMvQ2hldnJv
bl9hcnRpY2xlX2Nsb3NlZC5wbmcnKSBjZW50ZXIvY29udGFpbiBuby1yZXBlYXQ7CiAgICB0cmFu
c2l0aW9uOiB0cmFuc2Zvcm0gMC4yczsKfQouZHJpdmUtZmFxLWFycm93IGltZyB7IGRpc3BsYXk6
IG5vbmU7IH0KLmRyaXZlLWZhcS1pdGVtLm9wZW4gLmRyaXZlLWZhcS1hcnJvdyB7IHRyYW5zZm9y
bTogcm90YXRlKDkwZGVnKTsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtZmFxLWFycm93
IHsgZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVzcygxLjUpOyB9Ci5kcml2ZS1mYXEtYW5zd2Vy
IHsKICAgIGRpc3BsYXk6IG5vbmU7IHBhZGRpbmc6IDEwcHggMTZweCAxNHB4IDE2cHg7CiAgICBm
b250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjc7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1h
cnkpOwogICAgYmFja2dyb3VuZDogI2Y2ZjlmYzsKfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJp
dmUtZmFxLWFuc3dlciB7IGJhY2tncm91bmQ6ICMxYTI0MzA7IH0KLmRyaXZlLWZhcS1pdGVtLm9w
ZW4gLmRyaXZlLWZhcS1hbnN3ZXIgeyBkaXNwbGF5OiBibG9jazsgfQouZHJpdmUtZmFxLWFuc3dl
ciB1bCwgLmRyaXZlLWZhcS1hbnN3ZXIgb2wgeyBwYWRkaW5nLWxlZnQ6IDIwcHg7IG1hcmdpbjog
NnB4IDA7IH0KCi8qIC0tLSBJbmZvYm94IChoZXJ2b3JnZWhvYmVuZXIgQmxvY2ssIHdpZSBpbmZv
LXNlY3Rpb24gYXVmIGRlciBTdGFydHNlaXRlKSAtLS0gKi8KLmRyaXZlLWluZm9ib3ggewogICAg
YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItbGVmdDogNHB4IHNv
bGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBwYWRkaW5nOiAxOHB4IDIwcHg7IG1hcmdpbjog
MTRweCAwOyBib3JkZXItcmFkaXVzOiA2cHg7CiAgICBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVp
Z2h0OiAxLjc7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9Ci5kcml2ZS1pbmZvYm94IGgy
IHsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQtc2l6ZTogMThweDsgZm9udC13ZWln
aHQ6IDcwMDsgbWFyZ2luOiAwIDAgOHB4IDA7IH0KLmRyaXZlLWluZm9ib3ggaDMgeyBjb2xvcjog
dmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNzAwOyBt
YXJnaW46IDAgMCA2cHggMDsgfQouZHJpdmUtaW5mb2JveCB1bCwgLmRyaXZlLWluZm9ib3ggb2wg
eyBtYXJnaW4tbGVmdDogMjBweDsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfQouZHJp
dmUtaW5mb2JveCBsaSB7IG1hcmdpbi1ib3R0b206IDZweDsgbGluZS1oZWlnaHQ6IDEuNTsgfQou
ZHJpdmUtaW5mb2JveCBzdHJvbmcgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoKLyog
LS0tIFdpY2h0aWctQmxvY2sgKGF1ZmZhZWxsaWdlIEhlcnZvcmhlYnVuZyBmdWVyIHdpY2h0aWdl
IEhpbndlaXNlKSAtLS0gKi8KLmRyaXZlLWltcG9ydGFudCB7CiAgICBib3JkZXI6IDFweCBzb2xp
ZCAjM2E3YWEzOyBib3JkZXItbGVmdDogNHB4IHNvbGlkICMxYTIzMzI7CiAgICBib3JkZXItcmFk
aXVzOiA4cHg7IG1hcmdpbjogMTRweCAwOyBvdmVyZmxvdzogaGlkZGVuOwp9Ci5kcml2ZS1pbXBv
cnRhbnQtaGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdh
cDogMTBweDsKICAgIHBhZGRpbmc6IDExcHggMTZweDsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1z
aXplOiAxNHB4OwogICAgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMxYTIzMzI7Cn0KW2RhdGEt
dGhlbWU9Im5pZ2h0Il0gLmRyaXZlLWltcG9ydGFudCB7IGJvcmRlci1jb2xvcjogIzNhN2FhMzsg
fQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtaW1wb3J0YW50LWhlYWRlciB7IGNvbG9yOiAj
ZmZmOyBiYWNrZ3JvdW5kOiAjMWUzYTVmOyB9Ci5kcml2ZS1pbXBvcnRhbnQtaGVhZGVyIGltZyB7
IHdpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IGZpbHRlcjogaW52ZXJ0KDEpIGJyaWdodG5lc3Mo
Mik7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmRyaXZlLWltcG9ydGFudC1oZWFkZXIgaW1nIHsg
ZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVzcygyKTsgfQouZHJpdmUtaW1wb3J0YW50LWJvZHkg
ewogICAgcGFkZGluZzogMTRweCAxOHB4OyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAx
Ljc7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgYmFja2dyb3VuZDogI2VkZjRmYjsK
fQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtaW1wb3J0YW50LWJvZHkgeyBiYWNrZ3JvdW5k
OiAjMTYyYTNlOyB9Ci5kcml2ZS1pbXBvcnRhbnQtYm9keSB1bCwgLmRyaXZlLWltcG9ydGFudC1i
b2R5IG9sIHsgcGFkZGluZy1sZWZ0OiAyMHB4OyBtYXJnaW46IDZweCAwOyB9Ci5kcml2ZS1pbXBv
cnRhbnQtYm9keSBsaSB7IG1hcmdpbi1ib3R0b206IDJweDsgfQoKLyogLS0tIFRyZW5ubGluaWUg
LS0tICovCi5kcml2ZS1kaXZpZGVyIHsKICAgIGJvcmRlcjogbm9uZTsgYm9yZGVyLXRvcDogMnB4
IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBtYXJnaW46IDIwcHggMDsKfQpbZGF0YS10
aGVtZT0ibmlnaHQiXSAuZHJpdmUtZGl2aWRlciB7IGJvcmRlci10b3AtY29sb3I6IHZhcigtLWJv
cmRlci1zdHJvbmcpOyB9CgovKiAtLS0gQXJ0aWtlbC1UYWJlbGxlbiAoZHJpdmUtdGFibGUpIC0t
LSAqLwouZHJpdmUtdGFibGUtd3JhcCB7IG1hcmdpbjogMTRweCAwOyBvdmVyZmxvdy14OiBhdXRv
OyB9Ci5kcml2ZS10YWJsZSB7CiAgICB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xs
YXBzZTsgZm9udC1zaXplOiAxM3B4OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVy
LWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogNnB4Owp9Ci5kcml2ZS10YWJsZSB0aCwgLmRyaXZlLXRh
YmxlIHRkIHsKICAgIHBhZGRpbmc6IDhweCAxMnB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i
b3JkZXItbGlnaHQpOwogICAgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsK
fQouZHJpdmUtdGFibGUgdGggewogICAgYmFja2dyb3VuZDogI2U0ZWNmNDsgZm9udC13ZWlnaHQ6
IDYwMDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBmb250LXNpemU6IDEycHg7IHRl
eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjNweDsKfQpbZGF0YS10
aGVtZT0ibmlnaHQiXSAuZHJpdmUtdGFibGUgdGggeyBiYWNrZ3JvdW5kOiAjMjQzMDQwOyB9Ci5k
cml2ZS10YWJsZSB0aC5zb3J0YWJsZSB7IGN1cnNvcjogcG9pbnRlcjsgdXNlci1zZWxlY3Q6IG5v
bmU7IH0KLmRyaXZlLXRhYmxlIHRoLnNvcnRhYmxlOmhvdmVyIHsgYmFja2dyb3VuZDogI2Q4ZTRm
MDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtdGFibGUgdGguc29ydGFibGU6aG92ZXIg
eyBiYWNrZ3JvdW5kOiAjMmEzYTRlOyB9Ci5kcml2ZS10YWJsZSB0aC5zb3J0LWFzYzo6YWZ0ZXIg
eyBjb250ZW50OiAnIOKWsic7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6IHZhcigtLXRleHQtbXV0
ZWQpOyB9Ci5kcml2ZS10YWJsZSB0aC5zb3J0LWRlc2M6OmFmdGVyIHsgY29udGVudDogJyDilrwn
OyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfQouZHJpdmUtdGFi
bGUgdGQgeyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgfQouZHJpdmUtdGFibGUgdGJvZHkg
dHI6bnRoLWNoaWxkKGV2ZW4pIHsgYmFja2dyb3VuZDogI2Y4ZmFmYzsgfQpbZGF0YS10aGVtZT0i
bmlnaHQiXSAuZHJpdmUtdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHsgYmFja2dyb3Vu
ZDogIzFjMjgzNjsgfQouZHJpdmUtdGFibGUgdGJvZHkgdHI6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2
YXIoLS1iZy1ob3Zlcik7IH0KLmRyaXZlLXRhYmxlIC5yb3ctaGVhZGVyIHsKICAgIGJhY2tncm91
bmQ6ICNlZGYyZjg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp
Owp9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5kcml2ZS10YWJsZSAucm93LWhlYWRlciB7IGJhY2tn
cm91bmQ6ICMxZTJhMzg7IH0KCi8qIEFjY29yZGlvbiBpbSBFZGl0b3I6IGJlYXJiZWl0YmFyICov
Ci5kcml2ZS1hY2NvcmRpb25bY29udGVudGVkaXRhYmxlPSJmYWxzZSJdIHsgY3Vyc29yOiBkZWZh
dWx0OyB9Ci5kcml2ZS1hY2NvcmRpb24gLmRyaXZlLWFjY29yZGlvbi1ib2R5IGEgeyBjb2xvcjog
IzI1NjNlYjsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0
Il0gLmRyaXZlLWFjY29yZGlvbiAuZHJpdmUtYWNjb3JkaW9uLWJvZHkgYSB7IGNvbG9yOiAjNjBh
NWZhOyB9CgouZGV0YWlsLWNvbnRlbnQgYSB7IGNvbG9yOiAjMjU2M2ViOyB0ZXh0LWRlY29yYXRp
b246IHVuZGVybGluZTsgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHg7IH0KLmRldGFpbC1jb250
ZW50IGE6aG92ZXIgeyBjb2xvcjogIzFkNGVkODsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZGV0
YWlsLWNvbnRlbnQgYSB7IGNvbG9yOiAjNjBhNWZhOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5k
ZXRhaWwtY29udGVudCBhOmhvdmVyIHsgY29sb3I6ICM5M2JiZmM7IH0KCi8qIC0tLSBDcm9zc2xp
bmstRXJrZW5udW5nIC0tLSAqLwouY3Jvc3NsaW5rIHsKICAgIGJvcmRlci1ib3R0b206IDEuNXB4
IGRhc2hlZCB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgcG9z
aXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsKfQouY3Jv
c3NsaW5rOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgfQouY3Jvc3NsaW5r
LXBvcG92ZXIgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHot
aW5kZXg6IDkwMDA7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlcjog
MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAg
ICBib3gtc2hhZG93OiAwIDZweCAyNHB4IHZhcigtLXNoYWRvdy1tZWRpdW0pOwogICAgcGFkZGlu
ZzogMTJweCAxNHB4OwogICAgd2lkdGg6IDMyMHB4OwogICAgbWF4LXdpZHRoOiA5MHZ3OwogICAg
Zm9udC1zaXplOiAxM3B4OwogICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgIGNvbG9yOiB2YXIoLS10
ZXh0LXByaW1hcnkpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLmNyb3NzbGluay1wb3Bv
dmVyLnZpc2libGUgeyBkaXNwbGF5OiBibG9jazsgfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhsaW5r
LWhlYWRlciB7CiAgICBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiB2
YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgbWFyZ2luLWJvdHRvbTogNnB4OyBkaXNwbGF5OiBmbGV4
OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsKfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhs
aW5rLWhlYWRlciAueGxpbmstaWNvbiB7IGZvbnQtc2l6ZTogMTJweDsgb3BhY2l0eTogMC42OyB9
Ci5jcm9zc2xpbmstcG9wb3ZlciAueGxpbmstbWV0YSB7CiAgICBmb250LXNpemU6IDExcHg7IGNv
bG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLWJvdHRvbTogNnB4OwogICAgZGlzcGxheTog
ZmxleDsgZ2FwOiA4cHg7IGZsZXgtd3JhcDogd3JhcDsKfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhs
aW5rLWV4Y2VycHQgewogICAgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNv
bmRhcnkpOyBsaW5lLWhlaWdodDogMS41OwogICAgbWF4LWhlaWdodDogNjBweDsgb3ZlcmZsb3c6
IGhpZGRlbjsKfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhsaW5rLXRhZ3MgeyBtYXJnaW4tdG9wOiA2
cHg7IGRpc3BsYXk6IGZsZXg7IGdhcDogNHB4OyBmbGV4LXdyYXA6IHdyYXA7IH0KLmNyb3NzbGlu
ay1wb3BvdmVyIC54bGluay10YWdzIHNwYW4gewogICAgZm9udC1zaXplOiAxMHB4OyBwYWRkaW5n
OiAxcHggNnB4OyBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1h
Y3RpdmUpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKfQouY3Jvc3NsaW5rLXBvcG92ZXIg
LnhsaW5rLWFjdGlvbiB7CiAgICBtYXJnaW4tdG9wOiA4cHg7IHBhZGRpbmctdG9wOiA2cHg7IGJv
cmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZm9udC1zaXplOiAx
MXB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgcG9pbnRlci1ldmVudHM6IGF1dG87IGN1
cnNvcjogcG9pbnRlcjsKfQouY3Jvc3NsaW5rLXBvcG92ZXIgLnhsaW5rLWFjdGlvbjpob3ZlciB7
IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CgovKiAtLS0gRGlmZi1BbnNpY2h0IGZ1ZXIg
UmV2aWV3IC0tLSAqLwouZGlmZi1hZGRlZCB7IGJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7IGNv
bG9yOiAjMTU1NzI0OyBwYWRkaW5nOiAxcHggMnB4OyBib3JkZXItcmFkaXVzOiAycHg7IH0KLmRp
ZmYtcmVtb3ZlZCB7IGJhY2tncm91bmQtY29sb3I6ICNmOGQ3ZGE7IGNvbG9yOiAjNzIxYzI0OyBw
YWRkaW5nOiAxcHggMnB4OyBib3JkZXItcmFkaXVzOiAycHg7IHRleHQtZGVjb3JhdGlvbjogbGlu
ZS10aHJvdWdoOyB9CltkYXRhLXRoZW1lPSJuaWdodCJdIC5kaWZmLWFkZGVkIHsgYmFja2dyb3Vu
ZC1jb2xvcjogIzFhNDAyODsgY29sb3I6ICNhM2U0Yjg7IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0g
LmRpZmYtcmVtb3ZlZCB7IGJhY2tncm91bmQtY29sb3I6ICM0NTFhMjA7IGNvbG9yOiAjZjBiMGI4
OyB9Ci5kaWZmLWxlZ2VuZCB7CiAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDE2cHg7IHBhZGRpbmc6
IDhweCAxNHB4OyBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmct
Y2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOiA2cHg7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZh
cigtLXRleHQtc2Vjb25kYXJ5KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1s
aWdodCk7Cn0KLmRpZmYtbGVnZW5kIHNwYW4geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24t
aXRlbXM6IGNlbnRlcjsgZ2FwOiA0cHg7IH0KCi8qIC0tLSBSZXZpc2lvbnNoaXN0b3JpZSAtLS0g
Ki8KLnJldmlzaW9uLW1vZGFsIHsKICAgIGRpc3BsYXk6IG5vbmU7IHBvc2l0aW9uOiBmaXhlZDsg
dG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3Vu
ZDogcmdiYSgwLDAsMCwwLjYpOyB6LWluZGV4OiAxMDAwMDsganVzdGlmeS1jb250ZW50OiBjZW50
ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLnJldmlzaW9uLW1vZGFsLm9wZW4geyBkaXNwbGF5
OiBmbGV4OyB9Ci5yZXZpc2lvbi1jb250YWluZXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmct
cHJpbWFyeSk7IGJvcmRlci1yYWRpdXM6IDhweDsgd2lkdGg6IDk1JTsgbWF4LXdpZHRoOiAxMjAw
cHg7IGhlaWdodDogODV2aDsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1u
czogMjgwcHggMWZyOyBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFy
KC0tYm9yZGVyLWNvbG9yKTsgYm94LXNoYWRvdzogMCA4cHggMzJweCByZ2JhKDAsMCwwLDAuNCk7
Cn0KLnJldmlzaW9uLXNpZGViYXIgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7IGJv
cmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBkaXNwbGF5OiBm
bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBvdmVyZmxvdzogaGlkZGVuOwp9Ci5yZXZpc2lv
bi1zaWRlYmFyLWhlYWRlciB7CiAgICBwYWRkaW5nOiAxNnB4OyBib3JkZXItYm90dG9tOiAxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6
ZTogMTRweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBkaXNwbGF5OiBmbGV4OyBq
dXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLnJl
dmlzaW9uLXNpZGViYXItaGVhZGVyIGJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1j
YXJkLWFsdCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGNvbG9yOiB2
YXIoLS10ZXh0LXNlY29uZGFyeSk7IGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMTFw
eDsgcGFkZGluZzogNHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDRweDsKfQoucmV2aXNpb24tc2lk
ZWJhci1oZWFkZXIgYnV0dG9uOmhvdmVyIHsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGJh
Y2tncm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgfQoucmV2aXNpb24tbGlzdCB7IGZsZXg6IDE7IG92
ZXJmbG93LXk6IGF1dG87IHBhZGRpbmc6IDhweDsgfQoucmV2aXNpb24taXRlbSB7CiAgICBwYWRk
aW5nOiAxMHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDZweDsgY3Vyc29yOiBwb2ludGVyOyBtYXJn
aW4tYm90dG9tOiA0cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgdHJhbnNp
dGlvbjogYmFja2dyb3VuZCAwLjE1cywgYm9yZGVyLWNvbG9yIDAuMTVzOwp9Ci5yZXZpc2lvbi1p
dGVtOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQpOyB9Ci5yZXZpc2lvbi1p
dGVtLmFjdGl2ZSB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgYm9yZGVyLWNvbG9y
OiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci5yZXZpc2lvbi1pdGVtIC5yZXYtbGFiZWwgewogICAg
Zm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFk
aW5nKTsKICAgIGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjsg
YWxpZ24taXRlbXM6IGNlbnRlcjsKfQoucmV2aXNpb24taXRlbSAucmV2LWxhYmVsIC5yZXYtYmFk
Z2UgewogICAgZm9udC1zaXplOiAxMHB4OyBmb250LXdlaWdodDogNTAwOyBwYWRkaW5nOiAxcHgg
NnB4OyBib3JkZXItcmFkaXVzOiAzcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LWhlYWRp
bmcpOyBjb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7Cn0KLnJldmlzaW9uLWl0ZW0gLnJldi1kYXRl
IHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1hcmdpbi10b3A6
IDJweDsgfQoucmV2aXNpb24taXRlbSAucmV2LXVzZXIgeyBmb250LXNpemU6IDExcHg7IGNvbG9y
OiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IG1hcmdpbi10b3A6IDFweDsgfQoucmV2aXNpb24tbWFp
biB7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBvdmVyZmxvdzog
aGlkZGVuOwp9Ci5yZXZpc2lvbi10b29sYmFyIHsKICAgIHBhZGRpbmc6IDEycHggMTZweDsgYm9y
ZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBkaXNwbGF5OiBm
bGV4OyBnYXA6IDhweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleC1zaHJpbms6IDA7Cn0KLnJl
dmlzaW9uLXRvb2xiYXIgYnV0dG9uIHsKICAgIHBhZGRpbmc6IDZweCAxNHB4OyBib3JkZXI6IDFw
eCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsK
ICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vy
c29yOiBwb2ludGVyOyBmb250LXNpemU6IDEycHg7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5k
IDAuMTVzLCBjb2xvciAwLjE1czsKfQoucmV2aXNpb24tdG9vbGJhciBidXR0b246aG92ZXIgeyBi
YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp
OyB9Ci5yZXZpc2lvbi10b29sYmFyIGJ1dHRvbi5hY3RpdmUgeyBiYWNrZ3JvdW5kOiB2YXIoLS10
ZXh0LWhlYWRpbmcpOyBjb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7IGJvcmRlci1jb2xvcjogdmFy
KC0tdGV4dC1oZWFkaW5nKTsgfQoucmV2aXNpb24tdG9vbGJhciAucmV2LWluZm8geyBtYXJnaW4t
bGVmdDogYXV0bzsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0K
LnJldmlzaW9uLWNvbnRlbnQgewogICAgZmxleDogMTsgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGlu
ZzogMjBweCAyNHB4OyBmb250LXNpemU6IDE0cHg7CiAgICBsaW5lLWhlaWdodDogMS43OyBjb2xv
cjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQoucmV2aXNpb24tY29udGVudCBhIHsgY29sb3I6IHZh
cigtLXRleHQtaGVhZGluZyk7IH0KLnJldmlzaW9uLWNvbnRlbnQgaDEsIC5yZXZpc2lvbi1jb250
ZW50IGgyLCAucmV2aXNpb24tY29udGVudCBoMywgLnJldmlzaW9uLWNvbnRlbnQgaDQgewogICAg
Y29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0KCi8qIFJldmlzaW9uLU1vZGFsOiBEYXktVGhl
bWUgT3ZlcnJpZGVzICgtLWJnLXByaW1hcnkgaXN0IGR1bmtlbCBpbiBiZWlkZW4gVGhlbWVzLCBk
YWhlciBleHBsaXppdCkgKi8KOnJvb3Q6bm90KFtkYXRhLXRoZW1lPSJuaWdodCJdKSAucmV2aXNp
b24tY29udGFpbmVyIHsgYmFja2dyb3VuZDogI2ZmZmZmZjsgfQo6cm9vdDpub3QoW2RhdGEtdGhl
bWU9Im5pZ2h0Il0pIC5yZXZpc2lvbi1zaWRlYmFyIHsgYmFja2dyb3VuZDogI2Y4ZjlmYTsgfQo6
cm9vdDpub3QoW2RhdGEtdGhlbWU9Im5pZ2h0Il0pIC5yZXZpc2lvbi1pdGVtOmhvdmVyIHsgYmFj
a2dyb3VuZDogI2U4ZWNmMDsgfQo6cm9vdDpub3QoW2RhdGEtdGhlbWU9Im5pZ2h0Il0pIC5yZXZp
c2lvbi1pdGVtLmFjdGl2ZSB7IGJhY2tncm91bmQ6ICNlOGVjZjA7IGJvcmRlci1jb2xvcjogIzJF
NEE2MjsgfQo6cm9vdDpub3QoW2RhdGEtdGhlbWU9Im5pZ2h0Il0pIC5yZXZpc2lvbi10b29sYmFy
IGJ1dHRvbiB7IGJhY2tncm91bmQ6ICNmZmZmZmY7IGJvcmRlci1jb2xvcjogI2RkZDsgY29sb3I6
ICM2NjY7IH0KOnJvb3Q6bm90KFtkYXRhLXRoZW1lPSJuaWdodCJdKSAucmV2aXNpb24tdG9vbGJh
ciBidXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZThlY2YwOyBjb2xvcjogIzMzMzsgfQo6cm9v
dDpub3QoW2RhdGEtdGhlbWU9Im5pZ2h0Il0pIC5yZXZpc2lvbi10b29sYmFyIGJ1dHRvbi5hY3Rp
dmUgeyBiYWNrZ3JvdW5kOiAjMkU0QTYyOyBjb2xvcjogI2ZmZmZmZjsgYm9yZGVyLWNvbG9yOiAj
MkU0QTYyOyB9Cjpyb290Om5vdChbZGF0YS10aGVtZT0ibmlnaHQiXSkgLnJldmlzaW9uLWl0ZW0g
LnJldi1sYWJlbCAucmV2LWJhZGdlIHsgYmFja2dyb3VuZDogIzJFNEE2MjsgY29sb3I6ICNmZmZm
ZmY7IH0KCi8qIC0tLSBBY3Rpb24gQnV0dG9ucyBpbSBEZXRhaWwgLS0tICovCi5kZXRhaWwtYWN0
aW9ucyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiA4cHg7CiAgICBmbGV4LXNocmluazog
MDsKfQoKLmRldGFpbC1hY3Rpb25zIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAg
IGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBiYWNrZ3JvdW5kOiB2
YXIoLS1iZy1jYXJkKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYm9yZGVy
LXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC13ZWlnaHQ6IDUwMDsK
ICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3Rk
KTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5kZXRhaWwtYWN0aW9ucyBidXR0b246aG92
ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjogd2hpdGUg
IWltcG9ydGFudDsgfQoKLmRldGFpbC1hY3Rpb25zIGJ1dHRvbi5idG4tZGFuZ2VyIHsgYm9yZGVy
LWNvbG9yOiAjZGMzNTQ1OyBjb2xvcjogI2RjMzU0NTsgfQouZGV0YWlsLWFjdGlvbnMgYnV0dG9u
LmJ0bi1kYW5nZXI6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1OyBjb2xvcjogd2hp
dGUgIWltcG9ydGFudDsgfQoKLmRldGFpbC1hY3Rpb25zIGJ1dHRvbltzdHlsZSo9ImJvcmRlci1j
b2xvcjojM2I4MmY2Il06aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjM2I4MmY2OyB9Ci5kZXRh
aWwtYWN0aW9ucyBidXR0b25bc3R5bGUqPSJib3JkZXItY29sb3I6IzI4YTc0NSJdOmhvdmVyIHsg
YmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsgfQouZGV0YWlsLWFjdGlvbnMgYnV0dG9uW3N0eWxl
Kj0iYm9yZGVyLWNvbG9yOiNkYzM1NDUiXTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNkYzM1
NDU7IH0KCi8qIC0tLSBNZWRpYSBTZWN0aW9uIC0tLSAqLwoubWVkaWEtc2VjdGlvbiB7CiAgICBt
YXJnaW4tdG9wOiAzMHB4OwogICAgcGFkZGluZy10b3A6IDIwcHg7CiAgICBib3JkZXItdG9wOiAx
cHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKfQoKLm1lZGlhcy1jb250YWluZXIgewogICAg
ZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmls
bCwgbWlubWF4KDI4MHB4LCAxZnIpKTsKICAgIGdhcDogMTVweDsKfQoKLm1lZGlhLWl0ZW0gewog
ICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctY2FyZC1hbHQpOwogICAgYm9yZGVyOiAxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIG92
ZXJmbG93OiBoaWRkZW47CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7Cn0K
Ci5tZWRpYS1pdGVtOmhvdmVyIHsgYm94LXNoYWRvdzogMCA0cHggOHB4IHZhcigtLXNoYWRvdy1t
ZWRpdW0pOyB9CgoubWVkaWEtaW1hZ2UgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDIw
MHB4OwogICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1i
b3JkZXItbGlnaHQpOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoubWVkaWEtY29udGVudCB7IHBh
ZGRpbmc6IDEycHg7IH0KCi5tZWRpYS10eXBlLWJhZGdlIHsKICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBwYWRk
aW5nOiAzcHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgbWFyZ2luLWJvdHRvbTog
OHB4Owp9CgoubWVkaWEtdHlwZS1iYWRnZS5pbWFnZSB7IGJhY2tncm91bmQtY29sb3I6ICNkNGVk
ZGE7IGNvbG9yOiAjMTU1NzI0OyB9Ci5tZWRpYS10eXBlLWJhZGdlLnBkZiB7IGJhY2tncm91bmQt
Y29sb3I6ICNmZmYzY2Q7IGNvbG9yOiAjODU2NDA0OyB9Ci5tZWRpYS10eXBlLWJhZGdlLnZpZGVv
IHsgYmFja2dyb3VuZC1jb2xvcjogI2NmZTJmZjsgY29sb3I6ICMwODQyOTg7IH0KW2RhdGEtdGhl
bWU9Im5pZ2h0Il0gLm1lZGlhLXR5cGUtYmFkZ2UuaW1hZ2UgeyBiYWNrZ3JvdW5kLWNvbG9yOiAj
MWE0MDI4OyBjb2xvcjogI2EzZTRiODsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubWVkaWEtdHlw
ZS1iYWRnZS5wZGYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNGEzYTFhOyBjb2xvcjogI2YwZDA4MDsg
fQpbZGF0YS10aGVtZT0ibmlnaHQiXSAubWVkaWEtdHlwZS1iYWRnZS52aWRlbyB7IGJhY2tncm91
bmQtY29sb3I6ICMxYTJhNGE7IGNvbG9yOiAjODBiMGYwOyB9CgoubWVkaWEtdGl0bGUgeyBmb250
LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTog
NXB4OyBmb250LXNpemU6IDE0cHg7IH0KLm1lZGlhLWRlc2NyaXB0aW9uIHsgZm9udC1zaXplOiAx
M3B4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBsaW5lLWhlaWdodDogMS40OyB9Cgov
KiAtLS0gRWRpdG9yIE1vZGFsIC0tLSAqLwouZWRpdG9yLW1vZGFsIHsKICAgIGRpc3BsYXk6IG5v
bmU7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAgICB3aWR0aDog
MTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjQp
OwogICAgei1pbmRleDogMTAwMDsKICAgIG92ZXJmbG93OiBhdXRvOwogICAgcGFkZGluZzogMzBw
eCAyMHB4Owp9CgouZWRpdG9yLW1vZGFsLmFjdGl2ZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAg
YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouZWRp
dG9yLW1vZGFsLWNvbnRlbnQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctY2FyZCk7
CiAgICB3aWR0aDogOTAlOwogICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICBoZWlnaHQ6IDkyJTsK
ICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYm9yZGVy
LXJhZGl1czogOHB4OwogICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1vZGFsKTsKfQoKLmVk
aXRvci1tb2RhbC1oZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctcHJpbWFy
eSk7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAxNXB4IDMwcHg7CiAgICBkaXNwbGF5
OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgYWxpZ24taXRl
bXM6IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwOwp9CgouZWRpdG9yLW1v
ZGFsLWhlYWRlciBoMiB7IG1hcmdpbjogMDsgZm9udC1zaXplOiAyMHB4OyB9CgouZWRpdG9yLW1v
ZGFsLWhlYWRlciBidXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAg
ICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTsKICAgIHBhZGRpbmc6
IDhweCAxNXB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwog
ICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3Rk
KTsKfQoKLmVkaXRvci1tb2RhbC1oZWFkZXIgYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xv
cjogd2hpdGU7IGNvbG9yOiAjMkU0QTYyOyB9CgouZWRpdG9yLW1ldGEtcm93IHsKICAgIGJhY2tn
cm91bmQtY29sb3I6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIHBhZGRpbmc6IDEwcHggMzBweDsK
ICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDEycHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVy
OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7CiAgICBm
bGV4LXdyYXA6IG5vd3JhcDsKICAgIG92ZXJmbG93LXg6IGF1dG87Cn0KCi5lZGl0b3ItbWV0YS1y
b3cgbGFiZWwgeyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsg
Zm9udC1zaXplOiAxM3B4OyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CgouZWRpdG9yLW1ldGEtcm93
IGlucHV0LAouZWRpdG9yLW1ldGEtcm93IHNlbGVjdCB7CiAgICBwYWRkaW5nOiA2cHggMTBweDsK
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOwogICAgYm9yZGVyLXJh
ZGl1czogNHB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFy
KC0tYmctaW5wdXQpOwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KCi5lZGl0b3It
bWV0YS1yb3cgaW5wdXQjZWRpdG9yVGl0ZWwgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDE2MHB4OyB9
Ci5lZGl0b3ItbWV0YS1yb3cgc2VsZWN0I2VkaXRvclBhcmVudCB7IG1heC13aWR0aDogMTYwcHg7
IH0KCi5lZGl0b3ItbW9kYWwtYm9keSB7CiAgICBmbGV4OiAxOwogICAgb3ZlcmZsb3cteTogYXV0
bzsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgouZWRp
dG9yLXRvb2xiYXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctdG9vbGJhcik7CiAg
ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBwYWRk
aW5nOiAwOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKfQoKLmVkaXRv
ci10b29sYmFyIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgIGJvcmRlcjogbm9u
ZTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXRvb2xiYXIpOwogICAgY29sb3I6IHZhcigtLXRl
eHQtcHJpbWFyeSk7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogNDAwOwog
ICAgZm9udC1zaXplOiAxM3B4OwogICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzOwogICAgYm9yZGVy
LXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBsaW5lLWhlaWdodDog
MTsKICAgIG1pbi1oZWlnaHQ6IDMycHg7Cn0KCi5lZGl0b3ItdG9vbGJhciBidXR0b246aG92ZXIg
eyBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXItbGlnaHQpOyB9CltkYXRhLXRoZW1lPSJuaWdodCJd
IC5lZGl0b3ItdG9vbGJhciBidXR0b24gaW1nIHsgZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVz
cygxLjUpOyB9CgouZWRpdG9yLXRvb2xiYXIgc2VsZWN0IHsKICAgIHBhZGRpbmc6IDZweCA4cHg7
CiAgICBib3JkZXI6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy10b29sYmFyKTsKICAg
IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgbWFyZ2luOiAwIDRweDsKICAgIGhlaWdo
dDogMzJweDsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjMGMwYzA7Cn0KCi50b29sYmFy
LXNlcGFyYXRvciB7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYzBjMGMwOwogICAgbWFy
Z2luOiAwIDRweDsKICAgIGhlaWdodDogMzJweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
fQoKLmNvbG9yLXN3YXRjaCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDog
MTZweDsgaGVpZ2h0OiAxNnB4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTsKICAgIGJvcmRl
ci1yYWRpdXM6IDJweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5lZGl0b3ItYXJl
YSB7IGZsZXg6IDE7IHBhZGRpbmc6IDIwcHg7IG92ZXJmbG93LXk6IGF1dG87IH0KCi5lZGl0b3It
aW5wdXQgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBtaW4taGVpZ2h0
OiA0MDBweDsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1i
b3JkZXItY29sb3IpOwogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOwogICAgZm9u
dC1zaXplOiAxNXB4OwogICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgIGJvcmRlci1yYWRpdXM6IDRw
eDsKICAgIG91dGxpbmU6IG5vbmU7CiAgICByZXNpemU6IG5vbmU7CiAgICB3aGl0ZS1zcGFjZTog
bm9ybWFsOwogICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgb3ZlcmZsb3cteTogYXV0bzsK
ICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWlucHV0KTsKICAgIGNvbG9yOiB2YXIoLS10
ZXh0LXByaW1hcnkpOwp9CgouZWRpdG9yLWlucHV0OmZvY3VzIHsgYm9yZGVyLWNvbG9yOiB2YXIo
LS10ZXh0LWhlYWRpbmcpOyBib3gtc2hhZG93OiAwIDAgNXB4IHJnYmEoNDYsIDc0LCA5OCwgMC4y
KTsgfQoKLmVkaXRvci1pbnB1dCBoMSB7CiAgICBmb250LXNpemU6IDI0cHg7IGNvbG9yOiB2YXIo
LS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNzAwOwogICAgbWFyZ2luOiAyNHB4IDAgMTJw
eCAwOyBwYWRkaW5nOiAxMnB4IDA7IGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB2YXIoLS10ZXh0
LWhlYWRpbmcpOyBkaXNwbGF5OiBibG9jazsKfQouZWRpdG9yLWlucHV0IGgyIHsKICAgIGZvbnQt
c2l6ZTogMjBweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGZvbnQtd2VpZ2h0OiA3MDA7
CiAgICBtYXJnaW46IDIwcHggMCAxMHB4IDA7IHBhZGRpbmc6IDEwcHggMDsgYm9yZGVyLWJvdHRv
bTogMnB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGRpc3BsYXk6IGJsb2NrOwp9Ci5lZGl0
b3ItaW5wdXQgaDMgewogICAgZm9udC1zaXplOiAxN3B4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFk
aW5nKTsgZm9udC13ZWlnaHQ6IDcwMDsKICAgIG1hcmdpbjogMTZweCAwIDhweCAwOyBwYWRkaW5n
OiA2cHggMDsgZGlzcGxheTogYmxvY2s7Cn0KLmVkaXRvci1pbnB1dCBoNCB7CiAgICBmb250LXNp
emU6IDE1cHg7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBmb250LXdlaWdodDogNjAwOwog
ICAgbWFyZ2luOiAxMnB4IDAgNnB4IDA7IGRpc3BsYXk6IGJsb2NrOwp9CgouZWRpdG9yLWlucHV0
IHAgeyBtYXJnaW46IDAgMCAwLjRlbSAwOyB9Ci5lZGl0b3ItaW5wdXQgKiB7IGZvbnQtZmFtaWx5
OiBBcmlhbCwgc2Fucy1zZXJpZjsgbGluZS1oZWlnaHQ6IDEuNjsgYm94LXNpemluZzogYm9yZGVy
LWJveDsgfQoKLmVkaXRvci1mb290ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmct
Y2FyZC1hbHQpOwogICAgcGFkZGluZzogMTVweCAzMHB4OwogICAgZGlzcGxheTogZmxleDsKICAg
IGdhcDogMTBweDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICBib3JkZXItdG9w
OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGJvcmRlci1yYWRpdXM6IDAgMCA4
cHggOHB4Owp9CgouZWRpdG9yLWZvb3RlciBidXR0b24gewogICAgcGFkZGluZzogMTBweCAyMHB4
OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJhY2tncm91
bmQtY29sb3I6IHZhcigtLWJnLWNhcmQpOwogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7
CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdl
aWdodDogNjAwOwogICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zdGQpOwp9CgouZWRp
dG9yLWZvb3RlciBidXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10ZXh0LWhl
YWRpbmcpOyBjb2xvcjogd2hpdGU7IH0KCi5lZGl0b3ItZm9vdGVyIGJ1dHRvbi5zYXZlLWJ0biB7
IGJhY2tncm91bmQtY29sb3I6ICMyZDlkNzg7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyLWNvbG9yOiAj
MmQ5ZDc4OyB9Ci5lZGl0b3ItZm9vdGVyIGJ1dHRvbi5zYXZlLWJ0bjpob3ZlciB7IGJhY2tncm91
bmQtY29sb3I6ICMxZTdhNWY7IGJvcmRlci1jb2xvcjogIzFlN2E1ZjsgfQoKLyogLS0tIE1lZGlh
IFVwbG9hZCBpbSBFZGl0b3IgLS0tICovCi5tZWRpYS11cGxvYWQtem9uZSB7CiAgICBib3JkZXI6
IDJweCBkYXNoZWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7
CiAgICBwYWRkaW5nOiAyMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luOiAx
MHB4IDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0
aW9uLXN0ZCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7Cn0KCi5tZWRpYS11cGxvYWQt
em9uZTpob3ZlciwgLm1lZGlhLXVwbG9hZC16b25lLmRyYWdvdmVyIHsKICAgIGJvcmRlci1jb2xv
cjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWhv
dmVyKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwp9CgovKiAtLS0gTWVkaWEgTW9k
YWwgKHplbnRyaWVydCwgbmljaHQgVm9sbGJpbGQpIC0tLSAqLwoubWVkaWEtbW9kYWwgewogICAg
ZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDEwMDAwOwog
ICAgbGVmdDogMDsgdG9wOiAwOwogICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKfQoKLm1lZGlhLW1vZGFsLWNvbnRl
bnQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7IGxlZnQ6IDUwJTsKICAg
IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgYmFja2dyb3VuZDogdmFyKC0t
YmctY2FyZCwgI2ZmZik7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgYm94LXNoYWRvdzog
dmFyKC0tc2hhZG93LW1vZGFsKTsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBtYXgtd2lkdGg6IDkw
MHB4OwogICAgd2lkdGg6IDkwJTsKICAgIG1heC1oZWlnaHQ6IDg1dmg7CiAgICBvdmVyZmxvdzog
aGlkZGVuOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAg
ICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4Owp9CgoubWVkaWEtbW9kYWwtY2xv
c2UgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMHB4OyByaWdodDogMTBweDsK
ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0LCAjZWVlKTsKICAgIGNvbG9yOiB2YXIo
LS10ZXh0LXNlY29uZGFyeSwgIzY2Nik7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IsICNkZGQpOwogICAgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogNjAwOwog
ICAgY3Vyc29yOiBwb2ludGVyOwogICAgcGFkZGluZzogNXB4IDE0cHg7CiAgICBib3JkZXItcmFk
aXVzOiA0cHg7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7CiAgICB6LWlu
ZGV4OiAxMDAwMTsKfQoKLm1lZGlhLW1vZGFsLWNsb3NlOmhvdmVyIHsgYmFja2dyb3VuZDogdmFy
KC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHdoaXRlOyBib3JkZXItY29sb3I6IHZhcigtLXRleHQt
aGVhZGluZyk7IH0KCiNtZWRpYU1vZGFsQ29udGFpbmVyIHsKICAgIG1heC13aWR0aDogMTAwJTsg
d2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBh
bGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7CiAgICBmbGV4OiAxOyBtaW4taGVpZ2h0OiAw
Owp9CiNtZWRpYU1vZGFsQ29udGFpbmVyIGltZyB7IG1heC13aWR0aDogMTAwJTsgbWF4LWhlaWdo
dDogNTV2aDsgb2JqZWN0LWZpdDogY29udGFpbjsgYm9yZGVyLXJhZGl1czogNnB4OyBjdXJzb3I6
IHpvb20taW47IH0KI21lZGlhTW9kYWxDb250YWluZXIgaW1nLnpvb21lZCB7IG1heC1oZWlnaHQ6
IG5vbmU7IG1heC13aWR0aDogbm9uZTsgY3Vyc29yOiB6b29tLW91dDsgfQoubWVkaWEtbW9kYWwt
dG9vbGJhciB7CiAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgYWxpZ24taXRlbXM6IGNlbnRl
cjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGZsZXgtd3JhcDogd3JhcDsKICAgIHBhZGRpbmct
dG9wOiA4cHg7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQsICNlMGUw
ZTApOwogICAgd2lkdGg6IDEwMCU7Cn0KLm1lZGlhLW1vZGFsLXRvb2xiYXIgYnV0dG9uLCAubWVk
aWEtbW9kYWwtdG9vbGJhciBhIHsKICAgIHBhZGRpbmc6IDZweCAxNHB4OyBib3JkZXItcmFkaXVz
OiA0cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcsICNjMGMwYzApOwog
ICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZC1hbHQsICNmMGYwZjApOyBjb2xvcjogdmFyKC0t
dGV4dC1wcmltYXJ5LCAjMzMzKTsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDEycHg7CiAg
ICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3Rk
KTsKfQoubWVkaWEtbW9kYWwtdG9vbGJhciBidXR0b246aG92ZXIsIC5tZWRpYS1tb2RhbC10b29s
YmFyIGE6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjogd2hp
dGU7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoubWVkaWEtbW9kYWwtdGl0
bGUgewogICAgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZywgIzJFNEE2Mik7IGZvbnQtc2l6ZTog
MTRweDsgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6IDEw
MCU7IHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFy
KC0tYm9yZGVyLWxpZ2h0LCAjZTBlMGUwKTsKICAgIG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3Zl
cmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgovKiAtLS0gTm90aWZpY2F0
aW9uIFRvYXN0IC0tLSAqLwoudG9hc3QgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgYm90dG9t
OiA4MHB4OwogICAgcmlnaHQ6IDMwcHg7CiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7CiAgICBib3Jk
ZXItcmFkaXVzOiA2cHg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDE0cHg7CiAg
ICB6LWluZGV4OiA5OTk5OwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRl
WSgyMHB4KTsKICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc3RkKTsKICAgIG1heC13
aWR0aDogNDAwcHg7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC4zKTsK
fQoKLnRvYXN0LnNob3cgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0K
LnRvYXN0LnN1Y2Nlc3MgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQ5ZDc4OyB9Ci50b2FzdC5lcnJv
ciB7IGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7IH0KLnRvYXN0LmluZm8geyBiYWNrZ3JvdW5k
LWNvbG9yOiAjMkU0QTYyOyB9Ci50b2FzdC53YXJuaW5nIHsgYmFja2dyb3VuZC1jb2xvcjogI2U2
N2UyMjsgfQoKLyogLS0tIFNhdmUtSGlnaGxpZ2h0IEFuaW1hdGlvbiAtLS0gKi8KQGtleWZyYW1l
cyBoaWdobGlnaHRGYWRlIHsKICAgIDAlICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ1LCAx
NTcsIDEyMCwgMC4zNSk7IH0KICAgIDEwMCUgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVu
dDsgfQp9Ci5kb2N1bWVudC1pdGVtLmhpZ2hsaWdodC1zYXZlZCB7CiAgICBhbmltYXRpb246IGhp
Z2hsaWdodEZhZGUgMS44cyBlYXNlLW91dDsKfQoKLyogLS0tIEZvb3RlciAtLS0gKi8KZm9vdGVy
IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOwogICAgYm9yZGVyLXRv
cDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBwYWRkaW5nOiAxMnB4IDMwcHg7
CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwog
ICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGNvbG9yOiB3
aGl0ZTsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xv
ciAwLjNzOwp9Cgpmb290ZXIgYSB7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuOCk7IHRleHQt
ZGVjb3JhdGlvbjogbm9uZTsgY3Vyc29yOiBwb2ludGVyOyB9CmZvb3RlciBhOmhvdmVyIHsgY29s
b3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQouZm9vdGVyLXJpZ2h0IHsg
ZGlzcGxheTogZmxleDsgZ2FwOiAxNnB4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9Ci5mb290ZXIt
c3luYy1zdGF0dXMgeyBmb250LXNpemU6IDExcHg7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IG9w
YWNpdHkgMS4ycyBlYXNlLWluLW91dDsgbWluLXdpZHRoOiAxMjBweDsgdGV4dC1hbGlnbjogcmln
aHQ7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNyk7IH0KLmZvb3Rlci1zeW5jLXN0YXR1cy52
aXNpYmxlIHsgb3BhY2l0eTogMTsgfQoKLmZvb3Rlci12ZXJzaW9uIHsgY3Vyc29yOiBwb2ludGVy
OyBvcGFjaXR5OiAwLjg7IHRyYW5zaXRpb246IG9wYWNpdHkgMC4yczsgfQouZm9vdGVyLXZlcnNp
b246aG92ZXIgeyBvcGFjaXR5OiAxOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQoKLyog
LS0tIFZlcnNpb25zaGlzdG9yaWUgTW9kYWwgLS0tICovCi52ZXJzaW9uLW1vZGFsIHsKICAgIGRp
c3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAg
ICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCww
LjUpOwogICAgei1pbmRleDogMjAwMDsKfQoKLnZlcnNpb24tbW9kYWwuYWN0aXZlIHsgZGlzcGxh
eTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0K
Ci52ZXJzaW9uLW1vZGFsLWNvbnRlbnQgewogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7
CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICB3aWR0aDogNTIwcHg7CiAgICBtYXgtd2lkdGg6
IDk1JTsKICAgIG1heC1oZWlnaHQ6IDgwdmg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgYm94
LXNoYWRvdzogdmFyKC0tc2hhZG93LW1vZGFsKTsKfQoKLnZlcnNpb24tbW9kYWwtaGVhZGVyIHsK
ICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOwogICAgY29sb3I6IHdoaXRlOwogICAg
cGFkZGluZzogMTVweCAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogOHB4IDhweCAwIDA7CiAgICBk
aXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1z
OiBjZW50ZXI7CiAgICBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE2cHg7Cn0KCi52ZXJz
aW9uLW1vZGFsLWhlYWRlciBidXR0b24gewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJv
cmRlcjogMXB4IHNvbGlkIHdoaXRlOyBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiA0cHggMTJw
eDsgYm9yZGVyLXJhZGl1czogNHB4OyBjdXJzb3I6IHBvaW50ZXI7Cn0KCi52ZXJzaW9uLW1vZGFs
LWJvZHkgeyBwYWRkaW5nOiAyMHB4OyB9CgoudmVyc2lvbi1pdGVtIHsKICAgIGRpc3BsYXk6IGZs
ZXg7CiAgICBnYXA6IDEycHg7CiAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICBib3JkZXItYm90dG9t
OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAg
IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9CgoudmVyc2lvbi1pdGVtOmxhc3QtY2hpbGQg
eyBib3JkZXItYm90dG9tOiBub25lOyB9CgoudmVyc2lvbi1iYWRnZSB7CiAgICBmbGV4LXNocmlu
azogMDsKICAgIHBhZGRpbmc6IDNweCAxMHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0
aXZlKTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYm9yZGVyLXJhZGl1czog
NHB4OwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIG1pbi13
aWR0aDogNDhweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnZlcnNpb24tYmFkZ2UuY3Vy
cmVudCB7IGJhY2tncm91bmQ6ICMyZDlkNzg7IGNvbG9yOiB3aGl0ZTsgfQoKLnZlcnNpb24taW5m
byB7IGZsZXg6IDE7IH0KLnZlcnNpb24tZGF0ZSB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZh
cigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOiAycHg7IH0KCi8qIC0tLSBGcmVpZ2FiZS1VZWJl
cnNpY2h0IE1vZGFsIC0tLSAqLwouaW1wcmludC1tb2RhbCB7CiAgICBkaXNwbGF5OiBub25lOwog
ICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7
IGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTsKICAgIHotaW5k
ZXg6IDIwMDA7Cn0KCi5pbXByaW50LW1vZGFsLmFjdGl2ZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWdu
LWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CgouaW1wcmludC1jb250
ZW50IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgYm9yZGVyLXJhZGl1czog
OHB4OwogICAgd2lkdGg6IDcwMHB4OwogICAgbWF4LXdpZHRoOiA5NSU7CiAgICBtYXgtaGVpZ2h0
OiA4NXZoOwogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRv
dy1tb2RhbCk7Cn0KCi5pbXByaW50LWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1w
cmltYXJ5KTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgIGJv
cmRlci1yYWRpdXM6IDhweCA4cHggMCAwOwogICAgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250
ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZm9udC13ZWlnaHQ6
IDYwMDsgZm9udC1zaXplOiAxNnB4Owp9CgouaW1wcmludC1oZWFkZXIgYnV0dG9uIHsKICAgIGJh
Y2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTsgY29sb3I6IHdo
aXRlOwogICAgcGFkZGluZzogNHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vyc29yOiBw
b2ludGVyOwp9CgouaW1wcmludC1ib2R5IHsgcGFkZGluZzogMjBweDsgfQoKLmltcHJpbnQtdGFi
bGUgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAg
Zm9udC1zaXplOiAxM3B4OwogICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KCi5pbXBy
aW50LXRhYmxlIHRoIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBwYWRkaW5nOiA4cHggMTBw
eDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXRvb2xiYXIpOwogICAgY29sb3I6IHZhcigtLXRl
eHQtaGVhZGluZyk7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgYm9yZGVyLWJvdHRvbTogMnB4
IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7Cn0KCi5pbXByaW50LXRhYmxlIHRkIHsKICAgIHBh
ZGRpbmc6IDhweCAxMHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRl
ci1jb2xvcik7Cn0KCi5pbXByaW50LXRhYmxlIC5rYXQtYmFkZ2UgewogICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwogICAgcGFkZGluZzogMnB4IDhweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn
LWFjdGl2ZSk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIGJvcmRlci1yYWRp
dXM6IDNweDsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIG1hcmdpbjogMXB4IDJweDsKfQoKLyog
LS0tIENvbnRyaWJ1dG9ycyAoTWl0d2lya2VuZGUpIC0tLSAqLwouY29udHJpYnV0b3JzLXNlY3Rp
b24gewogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHBhZGRpbmctdG9wOiAxNXB4OwogICAgYm9y
ZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Cn0KCi5jb250cmlidXRvcnMt
c2VjdGlvbiBoMyB7IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7
IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KCi5jb250cmlidXRvci1yb3cgewogICAgZGlzcGxheTog
ZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDEwcHg7CiAgICBwYWRkaW5n
OiA2cHggMDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp
OwogICAgZm9udC1zaXplOiAxM3B4Owp9CgouY29udHJpYnV0b3ItbmFtZSB7IGZvbnQtd2VpZ2h0
OiA2MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB3aWR0aDogMTAwcHg7IGZsZXgtc2hy
aW5rOiAwOyB9CgouY29udHJpYnV0b3Itcm9sZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgZm9udC1z
aXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIHdpZHRoOiA3NXB4OwogICAgdGV4
dC1hbGlnbjogY2VudGVyOwogICAgZmxleC1zaHJpbms6IDA7Cn0KCi5jb250cmlidXRvci1yb2xl
LmF1dG9yIHsgYmFja2dyb3VuZDogI0Q0RUREQTsgY29sb3I6ICMxNTU3MjQ7IH0KLmNvbnRyaWJ1
dG9yLXJvbGUucmVkYWt0aW9uIHsgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgY29sb3I6
IHZhcigtLXRleHQtaGVhZGluZyk7IH0KLmNvbnRyaWJ1dG9yLXJvbGUucmV2aWV3IHsgYmFja2dy
b3VuZDogI0ZGRTVCNDsgY29sb3I6ICM3QTQ0MTk7IH0KCi5jb250cmlidXRvci1iYXIgewogICAg
ZmxleDogMTsKICAgIGhlaWdodDogOHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLWxp
Z2h0KTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5j
b250cmlidXRvci1iYXItZmlsbCB7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItcmFkaXVz
OiA0cHg7CiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzOwp9CgouY29udHJpYnV0b3ItYmFyLWZp
bGwuYXV0b3IgeyBiYWNrZ3JvdW5kOiAjMjhhNzQ1OyB9Ci5jb250cmlidXRvci1iYXItZmlsbC5y
ZWRha3Rpb24geyBiYWNrZ3JvdW5kOiAjMkU0QTYyOyB9Ci5jb250cmlidXRvci1iYXItZmlsbC5y
ZXZpZXcgeyBiYWNrZ3JvdW5kOiAjZTY3ZTIyOyB9CgouY29udHJpYnV0b3ItcGN0IHsgZm9udC1z
aXplOiAxMnB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IG1pbi13aWR0aDogNDBweDsgdGV4
dC1hbGlnbjogcmlnaHQ7IH0KCi8qIC0tLSBDb250cmlidXRpb24gVHlwZSBEaWFsb2cgLS0tICov
Ci5jb250cmliLWRpYWxvZyB7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGZpeGVk
OwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAg
IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTsKICAgIHotaW5kZXg6IDMwMDA7Cn0KCi5jb250
cmliLWRpYWxvZy5hY3RpdmUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBq
dXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLmNvbnRyaWItZGlhbG9nLWNvbnRlbnQgewogICAg
YmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICB3
aWR0aDogNDIwcHg7CiAgICBtYXgtd2lkdGg6IDk1JTsKICAgIGJveC1zaGFkb3c6IHZhcigtLXNo
YWRvdy1tb2RhbCk7Cn0KCi5jb250cmliLWRpYWxvZy1oZWFkZXIgewogICAgYmFja2dyb3VuZDog
dmFyKC0tYmctcHJpbWFyeSk7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAxNXB4IDIw
cHg7CiAgICBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7
Cn0KCi5jb250cmliLWRpYWxvZy1ib2R5IHsgcGFkZGluZzogMjBweDsgfQoKLmNvbnRyaWItdHlw
ZS1idG4gewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6
IDEycHggMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIGJvcmRlcjogMnB4IHNvbGlk
IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAg
IGJvcmRlci1yYWRpdXM6IDZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRleHQtYWxpZ246
IGxlZnQ7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKfQoKLmNvbnRyaWItdHlwZS1idG46aG92
ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGJhY2tncm91bmQ6IHZhcigt
LWJnLWhvdmVyKTsgfQouY29udHJpYi10eXBlLWJ0bi5zZWxlY3RlZCB7IGJvcmRlci1jb2xvcjog
dmFyKC0tdGV4dC1oZWFkaW5nKTsgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgfQoKLmNv
bnRyaWItdHlwZS1idG4gLmxhYmVsIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRl
eHQtaGVhZGluZyk7IGZvbnQtc2l6ZTogMTRweDsgfQouY29udHJpYi10eXBlLWJ0biAuZGVzYyB7
IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOiAz
cHg7IH0KCi8qIC0tLSBFbXB0eSBTdGF0ZSAtLS0gKi8KLmVtcHR5LXN0YXRlIHsgdGV4dC1hbGln
bjogY2VudGVyOyBwYWRkaW5nOiA0MHB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH0KCi8q
IC0tLSBXZWxjb21lIC0tLSAqLwoud2VsY29tZS1jb250ZW50IHsgcGFkZGluZzogMzBweDsgbWF4
LXdpZHRoOiA4MDBweDsgfQoud2VsY29tZS1jb250ZW50IGgxIHsgY29sb3I6IHZhcigtLXRleHQt
aGVhZGluZyk7IGZvbnQtc2l6ZTogMjhweDsgbWFyZ2luLWJvdHRvbTogMTVweDsgYm9yZGVyLWJv
dHRvbTogM3B4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7IHBhZGRpbmctYm90dG9tOiAxMHB4
OyB9Ci53ZWxjb21lLWNvbnRlbnQgcCB7IGZvbnQtc2l6ZTogMTVweDsgbGluZS1oZWlnaHQ6IDEu
NjsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgbWFyZ2luLWJvdHRvbTogMTJweDsgfQou
d2VsY29tZS1jb250ZW50IC5pbmZvLXNlY3Rpb24geyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1i
Zy1jYXJkLWFsdCk7IGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tdGV4dC1oZWFkaW5nKTsg
cGFkZGluZzogMTVweDsgbWFyZ2luOiAxNXB4IDA7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoud2Vs
Y29tZS1jb250ZW50IC5pbmZvLXNlY3Rpb24gaDIgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5n
KTsgZm9udC1zaXplOiAxOHB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IH0KLndlbGNvbWUtY29udGVu
dCAuaW5mby1zZWN0aW9uIHVsIHsgbWFyZ2luLWxlZnQ6IDIwcHg7IGNvbG9yOiB2YXIoLS10ZXh0
LXNlY29uZGFyeSk7IH0KLndlbGNvbWUtY29udGVudCAuaW5mby1zZWN0aW9uIGxpIHsgbWFyZ2lu
LWJvdHRvbTogNnB4OyBsaW5lLWhlaWdodDogMS41OyB9CgovKiAtLS0gU2Nyb2xsYmFyIC0tLSAq
LwoubGlzdC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXIsCi5kb2N1bWVudC1kZXRhaWw6Oi13ZWJr
aXQtc2Nyb2xsYmFyLAouZWRpdG9yLWFyZWE6Oi13ZWJraXQtc2Nyb2xsYmFyLAouZWRpdG9yLWlu
cHV0Ojotd2Via2l0LXNjcm9sbGJhciwKLnJldmlzaW9uLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xs
YmFyIHsgd2lkdGg6IDhweDsgfQoKLmxpc3QtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNr
LAouZG9jdW1lbnQtZGV0YWlsOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywKLmVkaXRvci1hcmVh
Ojotd2Via2l0LXNjcm9sbGJhci10cmFjaywKLmVkaXRvci1pbnB1dDo6LXdlYmtpdC1zY3JvbGxi
YXItdHJhY2ssCi5yZXZpc2lvbi1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7IGJh
Y2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoubGlz
dC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsCi5kb2N1bWVudC1kZXRhaWw6Oi13ZWJr
aXQtc2Nyb2xsYmFyLXRodW1iLAouZWRpdG9yLWFyZWE6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
LAouZWRpdG9yLWlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiwKLnJldmlzaW9uLWNvbnRl
bnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgYmFja2dyb3VuZDogdmFyKC0tdGV4dC1oZWFk
aW5nKTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoubGlzdC1pdGVtczo6LXdlYmtpdC1zY3JvbGxi
YXItdGh1bWI6aG92ZXIsCi5kb2N1bWVudC1kZXRhaWw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
OmhvdmVyLAouZWRpdG9yLWFyZWE6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLAouZWRp
dG9yLWlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciwKLnJldmlzaW9uLWNvbnRl
bnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmct
cHJpbWFyeS1kYXJrKTsgfQoKLyogLS0tIEZvY3VzIFN0YXRlcyAoQWNjZXNzaWJpbGl0eSkgLS0t
ICovCmJ1dHRvbjpmb2N1cy12aXNpYmxlLApzZWxlY3Q6Zm9jdXMtdmlzaWJsZSwKaW5wdXQ6Zm9j
dXMtdmlzaWJsZSwKLmZpbHRlci1idG46Zm9jdXMtdmlzaWJsZSwKLnN0YXR1cy1maWx0ZXItYnRu
OmZvY3VzLXZpc2libGUsCi5kb2N1bWVudC1pdGVtOmZvY3VzLXZpc2libGUgewogICAgb3V0bGlu
ZTogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBvdXRsaW5lLW9mZnNldDogMnB4
Owp9CgouZGV0YWlsLWFjdGlvbnMgYnV0dG9uOmZvY3VzLXZpc2libGUsCi5lZGl0b3ItdG9vbGJh
ciBidXR0b246Zm9jdXMtdmlzaWJsZSwKLmVkaXRvci1mb290ZXIgYnV0dG9uOmZvY3VzLXZpc2li
bGUgewogICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGluZyk7CiAgICBvdXRs
aW5lLW9mZnNldDogMXB4Owp9CgovKiAtLS0gQW5pbWF0aW9ucyAtLS0gKi8KQGtleWZyYW1lcyBm
YWRlSW4geyBmcm9tIHsgb3BhY2l0eTogMDsgfSB0byB7IG9wYWNpdHk6IDE7IH0gfQpAa2V5ZnJh
bWVzIHNsaWRlRG93biB7IGZyb20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOyBvcGFj
aXR5OiAwOyB9IHRvIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyBvcGFjaXR5OiAxOyB9IH0K
Ci8qIC0tLSBSZXNwb25zaXZlIC0tLSAqLwpAbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7CiAg
ICAuY29udGFpbmVyIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyODBweCAxZnI7IH0KfQpAbWVk
aWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5jb250YWluZXIgeyBncmlkLXRlbXBsYXRlLWNv
bHVtbnM6IDFmcjsgfQogICAgbWFpbiB7IHBhZGRpbmc6IDEwcHg7IH0KfQoKLyogLS0tIElubGlu
ZSBNZWRpYSAoQXJ0aWtlbC1JbmhhbHRlKSAtLS0gKi8KLmRyaXZlLW1lZGlhIHsKICAgIGRpc3Bs
YXk6IGJsb2NrOwogICAgbWFyZ2luOiAxNXB4IDA7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZv
aWQ7CiAgICBtYXgtd2lkdGg6IDEwMCU7Cn0KCi5kcml2ZS1tZWRpYVtjb250ZW50ZWRpdGFibGU9
ImZhbHNlIl0geyB1c2VyLXNlbGVjdDogbm9uZTsgfQoKLmRyaXZlLWFsaWduLWNlbnRlciB7IGRp
c3BsYXk6IGJsb2NrOyBtYXJnaW46IDE2cHggYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyBjbGVh
cjogYm90aDsgfQouZHJpdmUtYWxpZ24tbGVmdCB7IGZsb2F0OiBsZWZ0OyBtYXJnaW46IDhweCAy
MHB4IDEwcHggMDsgbWF4LXdpZHRoOiA1MCU7IH0KLmRyaXZlLWFsaWduLXJpZ2h0IHsgZmxvYXQ6
IHJpZ2h0OyBtYXJnaW46IDhweCAwIDEwcHggMjBweDsgbWF4LXdpZHRoOiA1MCU7IH0KCi5kcml2
ZS1tZWRpYS10aHVtYm5haWwgaW1nIHsgbWF4LXdpZHRoOiAyMDBweDsgbWF4LWhlaWdodDogMjAw
cHg7IGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyLXJhZGl1czogNHB4OyB0cmFuc2l0aW9uOiBvcGFj
aXR5IDAuMnM7IH0KLmRyaXZlLW1lZGlhLXRodW1ibmFpbCBpbWc6aG92ZXIgeyBvcGFjaXR5OiAw
Ljg1OyB9Ci5kcml2ZS1tZWRpYS1sYXJnZSBpbWcgeyBtYXgtd2lkdGg6IDY0MHB4OyBtYXgtaGVp
Z2h0OiA0ODBweDsgd2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bzsgYm9yZGVyLXJhZGl1czogNHB4
OyB9CgouZHJpdmUtbWVkaWEgZmlnY2FwdGlvbiwgLmRyaXZlLW1lZGlhLWNhcHRpb24gewogICAg
Zm9udC1zaXplOiAxMnB4OwogICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgZm9udC1z
dHlsZTogaXRhbGljOwogICAgbWFyZ2luLXRvcDogNnB4OwogICAgbGluZS1oZWlnaHQ6IDEuNDsK
fQoKLmRyaXZlLW1lZGlhLXBkZi1saW5rIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAg
YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogOHB4OwogICAgcGFkZGluZzogOHB4IDE0cHg7
CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgbWFyZ2lu
OiA4cHggMDsKfQoKLmRyaXZlLXBkZi1pY29uIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4Owog
ICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAg
d2lkdGg6IDM2cHg7IGhlaWdodDogMzZweDsKICAgIGJhY2tncm91bmQ6ICNkYzM1NDU7CiAgICBj
b2xvcjogd2hpdGU7CiAgICBmb250LXNpemU6IDExcHg7CiAgICBmb250LXdlaWdodDogNzAwOwog
ICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgZmxleC1zaHJpbms6IDA7Cn0KCi5kcml2ZS1tZWRp
YS1wZGYtbGluayB7IGN1cnNvcjogcG9pbnRlcjsgfQouZHJpdmUtbWVkaWEtcGRmLWxpbmsgc3Bh
bi5wZGYtdGl0bGUgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC13ZWlnaHQ6IDUw
MDsgZm9udC1zaXplOiAxNHB4OyB9Ci5kcml2ZS1tZWRpYS1wZGYtbGluazpob3ZlciB7IGJhY2tn
cm91bmQ6IHZhcigtLWJnLWhvdmVyKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp
OyB9CgouZHJpdmUtbWVkaWEtcGRmLWlmcmFtZSB7IGN1cnNvcjogcG9pbnRlcjsgcG9zaXRpb246
IHJlbGF0aXZlOyB9Ci5kcml2ZS1tZWRpYS1wZGYtaWZyYW1lIGlmcmFtZSB7CiAgICB3aWR0aDog
MTAwJTsKICAgIGhlaWdodDogMzAwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0t
YmctY2FyZCk7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouZHJpdmUtbWVkaWEtcGRmLWlm
cmFtZTpob3ZlciB7IG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOyBvdXRs
aW5lLW9mZnNldDogMnB4OyB9Ci5kcml2ZS1tZWRpYS1wZGYtaWZyYW1lOjphZnRlciB7CiAgICBj
b250ZW50OiAnS2xpY2tlbiB6dW0gVmVyZ3JvZXNzZXJuJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsgYm90dG9tOiA4cHg7IHJpZ2h0OiA4cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAu
Nyk7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogM3B4IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiAz
cHg7IGZvbnQtc2l6ZTogMTFweDsgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBvcGFjaXR5OiAw
OyB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7Cn0KLmRyaXZlLW1lZGlhLXBkZi1pZnJhbWU6aG92
ZXI6OmFmdGVyIHsgb3BhY2l0eTogMTsgfQoKLyogLS0tIElubGluZS1NZWRpZW4tRW1iZWRzIChW
aWRlbywgQXVkaW8sIE9mZmljZSkgLS0tICovCi5kcml2ZS1tZWRpYS1lbWJlZCB7CiAgICBkaXNw
bGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OwogICAgcGFk
ZGluZzogMTBweCAxNnB4OyBtYXJnaW46IDhweCAwOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmct
Y2FyZC1hbHQpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYm9y
ZGVyLXJhZGl1czogNnB4OyBjdXJzb3I6IHBvaW50ZXI7IHRyYW5zaXRpb246IHZhcigtLXRyYW5z
aXRpb24tc3RkKTsKICAgIG1heC13aWR0aDogNDAwcHg7Cn0KLmRyaXZlLW1lZGlhLWVtYmVkLmRy
aXZlLWFsaWduLWxlZnQsCi5kcml2ZS1tZWRpYS1lbWJlZC5kcml2ZS1hbGlnbi1yaWdodCB7IGRp
c3BsYXk6IGZsZXg7IG1heC13aWR0aDogNTAlOyB9Ci5kcml2ZS1tZWRpYS1lbWJlZC5kcml2ZS1h
bGlnbi1jZW50ZXIgeyBkaXNwbGF5OiBmbGV4OyBtYXJnaW46IDE2cHggYXV0bzsgY2xlYXI6IGJv
dGg7IH0KLmRyaXZlLW1lZGlhLWVtYmVkOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS10ZXh0
LWhlYWRpbmcpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmRyaXZlLWVtYmVkLWlj
b24gewogICAgd2lkdGg6IDMycHg7IGhlaWdodDogMzJweDsgZmxleC1zaHJpbms6IDA7CiAgICBi
YWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IGJh
Y2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKfQouZHJpdmUtZW1iZWQtaWNvbi5pY29uLWF1ZGlv
IHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjc3MvaWNvbnMvYXVkaW8ucG5nJyk7IH0KLmRyaXZl
LWVtYmVkLWljb24uaWNvbi12aWRlbyB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnY3NzL2ljb25z
L3ZpZGVvLnBuZycpOyB9Ci5kcml2ZS1lbWJlZC1pY29uLmljb24tcGRmIHsgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCdjc3MvaWNvbnMvcGRmLnBuZycpOyB9Ci5kcml2ZS1lbWJlZC1pY29uLmljb24t
ZG9jeCwgLmRyaXZlLWVtYmVkLWljb24uaWNvbi1kb2MgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwo
J2Nzcy9pY29ucy93b3JkLnBuZycpOyB9Ci5kcml2ZS1lbWJlZC1pY29uLmljb24teGxzeCwgLmRy
aXZlLWVtYmVkLWljb24uaWNvbi14bHMgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2Nzcy9pY29u
cy9leGNlbC5wbmcnKTsgfQouZHJpdmUtZW1iZWQtaWNvbi5pY29uLXBwdHgsIC5kcml2ZS1lbWJl
ZC1pY29uLmljb24tcHB0IHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjc3MvaWNvbnMvcG93ZXJw
b2ludC5wbmcnKTsgfQouZHJpdmUtZW1iZWQtbGFiZWwgewogICAgZm9udC1zaXplOiAxM3B4OyBm
b250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAgIG92ZXJmbG93
OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOwp9
CgovKiAtLS0gRmlsZSBUeXBlIEljb25zIChjc3MvaWNvbnMvKSAtLS0gKi8KLmRyaXZlLWZpbGUt
aWNvbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7
CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdpZHRoOiAzNnB4OyBoZWlnaHQ6IDM2
cHg7CiAgICBmbGV4LXNocmluazogMDsKICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKICAg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBj
ZW50ZXI7CiAgICBmb250LXNpemU6IDA7IC8qIFRleHQgYXVzYmxlbmRlbiwgSWNvbiBwZXIgQmFj
a2dyb3VuZCAqLwp9CgouZHJpdmUtZmlsZS1pY29uLmltYWdlIHsgYmFja2dyb3VuZC1pbWFnZTog
dXJsKCdjc3MvaWNvbnMvaW1hZ2UucG5nJyk7IH0KLmRyaXZlLWZpbGUtaWNvbi5wZGYgICB7IGJh
Y2tncm91bmQtaW1hZ2U6IHVybCgnY3NzL2ljb25zL3BkZi5wbmcnKTsgfQouZHJpdmUtZmlsZS1p
Y29uLmF1ZGlvIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjc3MvaWNvbnMvYXVkaW8ucG5nJyk7
IH0KLmRyaXZlLWZpbGUtaWNvbi52aWRlbyB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnY3NzL2lj
b25zL3ZpZGVvLnBuZycpOyB9Ci5kcml2ZS1maWxlLWljb24uZG9jeCAgeyBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoJ2Nzcy9pY29ucy93b3JkLnBuZycpOyB9Ci5kcml2ZS1maWxlLWljb24ueGxzeCAg
eyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2Nzcy9pY29ucy9leGNlbC5wbmcnKTsgfQouZHJpdmUt
ZmlsZS1pY29uLnBwdHggIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjc3MvaWNvbnMvcG93ZXJw
b2ludC5wbmcnKTsgfQouZHJpdmUtZmlsZS1pY29uLmZpbGUgIHsgYmFja2dyb3VuZC1jb2xvcjog
IzZjNzU3ZDsgYm9yZGVyLXJhZGl1czogNHB4OyBjb2xvcjogd2hpdGU7IGZvbnQtc2l6ZTogMTFw
eDsgZm9udC13ZWlnaHQ6IDcwMDsgfQpbZGF0YS10aGVtZT0ibmlnaHQiXSAuZHJpdmUtZmlsZS1p
Y29uIHsgZmlsdGVyOiBpbnZlcnQoMSkgYnJpZ2h0bmVzcygyKTsgfQpbZGF0YS10aGVtZT0ibmln
aHQiXSAuZHJpdmUtZmlsZS1pY29uLmZpbGUgeyBmaWx0ZXI6IG5vbmU7IH0KW2RhdGEtdGhlbWU9
Im5pZ2h0Il0gLmRyaXZlLWVtYmVkLWljb24geyBmaWx0ZXI6IGludmVydCgxKSBicmlnaHRuZXNz
KDIpOyB9CgovKiAtLS0gQXR0YWNobWVudCBHcmlkIChEZXRhaWwgVmlldykgLS0tICovCi5hdHRh
Y2htZW50LWl0ZW0gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7
CiAgICBnYXA6IDEycHg7CiAgICBwYWRkaW5nOiAxMHB4IDE0cHg7CiAgICBiYWNrZ3JvdW5kOiB2
YXIoLS1iZy1jYXJkLWFsdCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln
aHQpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJh
bnNpdGlvbjogYWxsIDAuMnM7Cn0KCi5hdHRhY2htZW50LWl0ZW06aG92ZXIgeyBiYWNrZ3JvdW5k
OiB2YXIoLS1iZy1ob3Zlcik7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgfQoK
LmF0dGFjaG1lbnQtaW5mbyB7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgfQouYXR0YWNobWVudC10
aXRsZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IHZhcigtLXRl
eHQtaGVhZGluZyk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQt
b3ZlcmZsb3c6IGVsbGlwc2lzOyB9Ci5hdHRhY2htZW50LW1ldGEgeyBmb250LXNpemU6IDEycHg7
IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLXRvcDogMnB4OyB9Ci5hdHRhY2htZW50
LWFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgfQoKLmF0dGFjaG1lbnQtYWN0aW9u
cyBidXR0b24gewogICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2
YXIoLS1ib3JkZXItY29sb3IpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBj
b2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGZv
bnQtc2l6ZTogMTJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAw
LjJzOwp9CgouYXR0YWNobWVudC1hY3Rpb25zIGJ1dHRvbjpob3ZlciB7IGJvcmRlci1jb2xvcjog
dmFyKC0tdGV4dC1oZWFkaW5nKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IH0KCi8qIC0t
LSBNZWRpYSBVcGxvYWQgRGlhbG9nIC0tLSAqLwoubWVkaWEtdXBsb2FkLWRpYWxvZyB7CiAgICBk
aXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwog
ICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAs
MC41KTsKICAgIHotaW5kZXg6IDIwMDA7Cn0KCi5tZWRpYS11cGxvYWQtZGlhbG9nLmFjdGl2ZSB7
IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2Vu
dGVyOyB9CgoubWVkaWEtdXBsb2FkLWRpYWxvZy1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6IHZh
cigtLWJnLWNhcmQpOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgd2lkdGg6IDU1MHB4Owog
ICAgbWF4LXdpZHRoOiA5NSU7CiAgICBtYXgtaGVpZ2h0OiA5MHZoOwogICAgb3ZlcmZsb3cteTog
YXV0bzsKICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tb2RhbCk7Cn0KCi5tZWRpYS11cGxv
YWQtZGlhbG9nLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsKICAg
IGNvbG9yOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDE1cHggMjBweDsKICAgIGJvcmRlci1yYWRpdXM6
IDhweCA4cHggMCAwOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogMTZweDsK
ICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAg
ICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoubWVkaWEtdXBsb2FkLWRpYWxvZy1oZWFkZXIgYnV0
dG9uIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3JkZXI6IDFweCBzb2xpZCB3aGl0
ZTsgY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogNHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDRw
eDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDEzcHg7Cn0KCi5tZWRpYS11cGxvYWQtZGlh
bG9nLWJvZHkgeyBwYWRkaW5nOiAyMHB4OyB9CgoudXBsb2FkLXByZXZpZXcgewogICAgdGV4dC1h
bGlnbjogY2VudGVyOwogICAgcGFkZGluZzogMTVweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn
LWNhcmQtYWx0KTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIG1hcmdpbi1ib3R0b206IDE1
cHg7Cn0KCi51cGxvYWQtcHJldmlldyBpbWcgeyBtYXgtd2lkdGg6IDEwMCU7IG1heC1oZWlnaHQ6
IDIwMHB4OyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi51cGxvYWQtZm9ybS1ncm91cCB7IG1hcmdp
bi1ib3R0b206IDEycHg7IH0KLnVwbG9hZC1mb3JtLWdyb3VwIGxhYmVsIHsgZGlzcGxheTogYmxv
Y2s7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZhcigtLXRleHQt
aGVhZGluZyk7IG1hcmdpbi1ib3R0b206IDRweDsgfQoudXBsb2FkLWZvcm0tZ3JvdXAgaW5wdXQs
IC51cGxvYWQtZm9ybS1ncm91cCB0ZXh0YXJlYSB7CiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzog
OHB4IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOyBib3JkZXIt
cmFkaXVzOiA0cHg7IGZvbnQtc2l6ZTogMTNweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWlu
cHV0KTsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KLnVwbG9hZC1mb3JtLWdyb3VwIHRl
eHRhcmVhIHsgcmVzaXplOiB2ZXJ0aWNhbDsgbWluLWhlaWdodDogNTBweDsgfQoKLnVwbG9hZC1v
cHRpb24tZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgZmxleC13cmFwOiB3cmFwOyB9
CgoudXBsb2FkLW9wdGlvbi1idG4gewogICAgcGFkZGluZzogNnB4IDEycHg7CiAgICBib3JkZXI6
IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYmFja2dyb3VuZDogdmFyKC0tYmct
Y2FyZCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKICAgIGJvcmRlci1yYWRpdXM6
IDRweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQt
d2VpZ2h0OiA1MDA7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgIHRleHQtYWxpZ246IGNl
bnRlcjsKfQoKLnVwbG9hZC1vcHRpb24tYnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS10
ZXh0LWhlYWRpbmcpOyB9Ci51cGxvYWQtb3B0aW9uLWJ0bi5hY3RpdmUgeyBib3JkZXItY29sb3I6
IHZhcigtLXRleHQtaGVhZGluZyk7IGJhY2tncm91bmQ6IHZhcigtLXRleHQtaGVhZGluZyk7IGNv
bG9yOiB3aGl0ZTsgfQoKLnVwbG9hZC1kaWFsb2ctZm9vdGVyIHsKICAgIHBhZGRpbmc6IDE1cHgg
MjBweDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAg
ZGlzcGxheTogZmxleDsKICAgIGdhcDogMTBweDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1l
bmQ7Cn0KCi51cGxvYWQtZGlhbG9nLWZvb3RlciBidXR0b24gewogICAgcGFkZGluZzogOHB4IDIw
cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYmFja2dy
b3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsKICAg
IGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtd2VpZ2h0
OiA2MDA7CiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXN0ZCk7Cn0KCi51cGxvYWQt
ZGlhbG9nLWZvb3RlciBidXR0b24ucHJpbWFyeSB7IGJhY2tncm91bmQ6ICMyZDlkNzg7IGNvbG9y
OiB3aGl0ZTsgYm9yZGVyLWNvbG9yOiAjMmQ5ZDc4OyB9Ci51cGxvYWQtZGlhbG9nLWZvb3RlciBi
dXR0b24ucHJpbWFyeTpob3ZlciB7IGJhY2tncm91bmQ6ICMxZTdhNWY7IH0KCi51cGxvYWQtZHJv
cC16b25lIHsKICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1ib3JkZXItY29sb3IsICNjY2Mp
OwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgcGFkZGluZzogMzJweCAyMHB4OwogICAgdGV4
dC1hbGlnbjogY2VudGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICBjdXJzb3I6IHBv
aW50ZXI7Cn0KLnVwbG9hZC1kcm9wLXpvbmU6aG92ZXIsIC51cGxvYWQtZHJvcC16b25lLmRyYWct
b3ZlciB7CiAgICBib3JkZXItY29sb3I6ICMyZDlkNzg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ1
LCAxNTcsIDEyMCwgMC4wNik7Cn0KLnVwbG9hZC1kcm9wLXpvbmUuZHJhZy1vdmVyIHsKICAgIGJv
cmRlci1zdHlsZTogc29saWQ7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDEpOwp9Ci51cGxvYWQt
c3RhcnQtYnRuIHsKICAgIHBhZGRpbmc6IDEwcHggMjhweDsKICAgIGJhY2tncm91bmQ6ICMyZDlk
Nzg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVz
OiA2cHg7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY3Vy
c29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzOwp9Ci51cGxvYWQt
c3RhcnQtYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogIzFlN2E1ZjsgfQoKLyogLS0tIE1lZGlhIENv
bnRleHQgTWVudSAoRWRpdG9yKSAtLS0gKi8KLm1lZGlhLWNvbnRleHQtbWVudSB7CiAgICBkaXNw
bGF5OiBub25lOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYmFja2dyb3VuZDogdmFyKC0t
YmctY2FyZCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAg
Ym9yZGVyLXJhZGl1czogNnB4OwogICAgYm94LXNoYWRvdzogMCA0cHggMTZweCB2YXIoLS1zaGFk
b3ctbWVkaXVtKTsKICAgIHotaW5kZXg6IDMwMDA7CiAgICBwYWRkaW5nOiA4cHg7CiAgICBtaW4t
d2lkdGg6IDE4MHB4Owp9CgoubWVkaWEtY29udGV4dC1tZW51LmFjdGl2ZSB7IGRpc3BsYXk6IGJs
b2NrOyB9CgoubWVkaWEtY29udGV4dC1tZW51IGJ1dHRvbiB7CiAgICBkaXNwbGF5OiBibG9jazsK
ICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogNnB4IDEwcHg7CiAgICBib3JkZXI6IG5vbmU7
CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBj
dXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBib3JkZXItcmFkaXVzOiAz
cHg7CiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzOwp9CgoubWVkaWEtY29udGV4dC1t
ZW51IGJ1dHRvbiB7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOyB9Ci5tZWRpYS1jb250ZXh0
LW1lbnUgYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9CgoubWVk
aWEtY29udGV4dC1zZXAgeyBoZWlnaHQ6IDFweDsgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLWxp
Z2h0KTsgbWFyZ2luOiA0cHggMDsgfQoKLm1lZGlhLWNvbnRleHQtZ3JvdXAgeyBkaXNwbGF5OiBm
bGV4OyBnYXA6IDRweDsgcGFkZGluZzogNHB4IDZweDsgfQoKLm1lZGlhLWNvbnRleHQtZ3JvdXAg
YnV0dG9uIHsKICAgIGZsZXg6IDE7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5n
OiA1cHggOHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKSAhaW1w
b3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgZm9udC1zaXplOiAxMnB4OwogICAg
Y29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7Cn0KCi5tZWRpYS1jb250ZXh0LWdyb3VwIGJ1dHRv
bi5hY3RpdmUgeyBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjogd2hpdGU7
IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKSAhaW1wb3J0YW50OyB9CgovKiAtLS0g
VW5pdmVyc2FsIE1lZGlhIE1vZGFsIEV4dHJhcyAtLS0gKi8KLmF1ZGlvLW1vZGFsLWNvbnRlbnQs
IC5vZmZpY2UtbW9kYWwtY29udGVudCwgLmZpbGUtbW9kYWwtY29udGVudCB7CiAgICB0ZXh0LWFs
aWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiA0MHB4OwogICAgY29sb3I6IHdoaXRlOwp9CgouYXVk
aW8tbW9kYWwtY29udGVudCAuYXVkaW8taWNvbiwgLm9mZmljZS1tb2RhbC1jb250ZW50IC5vZmZp
Y2UtaWNvbiB7CiAgICBmb250LXNpemU6IDY0cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9
CgouYXVkaW8tbW9kYWwtY29udGVudCBwLCAub2ZmaWNlLW1vZGFsLWNvbnRlbnQgcCB7IGZvbnQt
c2l6ZTogMThweDsgbWFyZ2luLWJvdHRvbTogMTVweDsgfQoub2ZmaWNlLW1vZGFsLWNvbnRlbnQg
Lm9mZmljZS1oaW50IHsgZm9udC1zaXplOiAxNHB4OyBvcGFjaXR5OiAwLjc7IG1hcmdpbi1ib3R0
b206IDIwcHg7IH0KCi5vZmZpY2UtZG93bmxvYWQtYnRuIHsKICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKICAgIHBhZGRpbmc6IDEycHggMzBweDsKICAgIGJhY2tncm91bmQ6ICMyRTRBNjI7CiAg
ICBjb2xvcjogd2hpdGU7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICBib3JkZXItcmFk
aXVzOiA0cHg7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3Vu
ZCAwLjJzOwp9Cgoub2ZmaWNlLWRvd25sb2FkLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6ICMxZTM0
NDc7IH0KCi8qIC0tLSBHb3Zlcm5hbmNlOiBSZXZpZXcgQmFkZ2UgLS0tICovCi5yZXZpZXctYmFk
Z2UgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwog
ICAgZ2FwOiA2cHg7CiAgICBwYWRkaW5nOiAzcHggMTBweDsKICAgIGJhY2tncm91bmQ6ICNkYzM1
NDU7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgZm9udC1z
aXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAg
IGFuaW1hdGlvbjogcmV2aWV3UHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICB0cmFu
c2l0aW9uOiBhbGwgMC4yczsKfQoKLnJldmlldy1iYWRnZTpob3ZlciB7IGJhY2tncm91bmQ6ICNj
ODIzMzM7IHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IH0KCkBrZXlmcmFtZXMgcmV2aWV3UHVsc2Ug
ewogICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDAgMCAwIHJnYmEoMjIwLDUzLDY5LDAuNCk7
IH0KICAgIDUwJSB7IGJveC1zaGFkb3c6IDAgMCAwIDZweCByZ2JhKDIyMCw1Myw2OSwwKTsgfQp9
CgovKiAtLS0gR292ZXJuYW5jZTogUmV2aWV3IFBhbmVsIC0tLSAqLwoucmV2aWV3LXBhbmVsLW92
ZXJsYXkgewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDog
MDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJn
YmEoMCwwLDAsMC4zKTsKICAgIHotaW5kZXg6IDE0OTk7Cn0KLnJldmlldy1wYW5lbC1vdmVybGF5
LmFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyB9CgoucmV2aWV3LXBhbmVsIHsKICAgIGRpc3BsYXk6
IG5vbmU7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IHJpZ2h0OiAwOwogICAgd2lk
dGg6IDM0MHB4OwogICAgbWF4LXdpZHRoOiA5NXZ3OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFj
a2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICBib3gtc2hhZG93OiAtNHB4IDAgMjBweCB2YXIo
LS1zaGFkb3ctbWVkaXVtKTsKICAgIHotaW5kZXg6IDE1MDA7CiAgICBmbGV4LWRpcmVjdGlvbjog
Y29sdW1uOwp9CgoucmV2aWV3LXBhbmVsLmFjdGl2ZSB7IGRpc3BsYXk6IGZsZXg7IH0KCi5yZXZp
ZXctcGFuZWwtaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpOwogICAg
Y29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgZGlzcGxheTogZmxleDsK
ICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50
ZXI7CiAgICBmb250LXdlaWdodDogNjAwOwogICAgZm9udC1zaXplOiAxNnB4Owp9CgoucmV2aWV3
LXBhbmVsLWhlYWRlciBidXR0b24gewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSww
LjE1KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjQpOyBjb2xvcjogd2hp
dGU7CiAgICBwYWRkaW5nOiA1cHggMTRweDsgYm9yZGVyLXJhZGl1czogNHB4OyBjdXJzb3I6IHBv
aW50ZXI7IGZvbnQtc2l6ZTogMTJweDsKfQoucmV2aWV3LXBhbmVsLWhlYWRlciBidXR0b246aG92
ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpOyB9CgoucmV2aWV3LXBhbmVs
LWJvZHkgeyBmbGV4OiAxOyBvdmVyZmxvdy15OiBhdXRvOyBwYWRkaW5nOiAxNXB4OyB9CgoucmV2
aWV3LWl0ZW0gewogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAg
IGJvcmRlci1yYWRpdXM6IDZweDsKICAgIHBhZGRpbmc6IDEycHg7CiAgICBtYXJnaW4tYm90dG9t
OiAxMHB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7Cn0K
Ci5yZXZpZXctaXRlbTpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsg
YmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9CgoucmV2aWV3LWl0ZW0tdGl0bGUgeyBmb250
LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTog
NHB4OyB9Ci5yZXZpZXctaXRlbS1tZXRhIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0t
dGV4dC1tdXRlZCk7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgZmxleC13cmFwOiB3cmFwOyB9
CgoucmV2aWV3LWl0ZW0tYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogNnB4OyBtYXJnaW4t
dG9wOiA4cHg7IH0KCi5yZXZpZXctaXRlbS1hY3Rpb25zIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA1
cHggMTJweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBi
YWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGN1
cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7
CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKfQoKLnJldmlldy1pdGVtLWFjdGlvbnMgLmJ0bi1h
cHByb3ZlIHsgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyBjb2xvcjogIzI4YTc0NTsgfQoucmV2aWV3
LWl0ZW0tYWN0aW9ucyAuYnRuLWFwcHJvdmU6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMjhhNzQ1OyBj
b2xvcjogd2hpdGU7IH0KLnJldmlldy1pdGVtLWFjdGlvbnMgLmJ0bi1yZWplY3QgeyBib3JkZXIt
Y29sb3I6ICNkYzM1NDU7IGNvbG9yOiAjZGMzNTQ1OyB9Ci5yZXZpZXctaXRlbS1hY3Rpb25zIC5i
dG4tcmVqZWN0OmhvdmVyIHsgYmFja2dyb3VuZDogI2RjMzU0NTsgY29sb3I6IHdoaXRlOyB9Cgov
KiAtLS0gR292ZXJuYW5jZTogUmV2aWV3IERpYWxvZyAtLS0gKi8KLnJldmlldy1kaWFsb2cgewog
ICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsgbGVmdDog
MDsKICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAs
MCwwLDAuNSk7CiAgICB6LWluZGV4OiAyNTAwOwp9CgoucmV2aWV3LWRpYWxvZy5hY3RpdmUgeyBk
aXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRl
cjsgfQoKLnJldmlldy1kaWFsb2ctY29udGVudCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1j
YXJkKTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIHdpZHRoOiA5MDBweDsKICAgIG1heC13
aWR0aDogOTUlOwogICAgbWF4LWhlaWdodDogODV2aDsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgt
ZGlyZWN0aW9uOiBjb2x1bW47CiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbW9kYWwpOwog
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnJldmlldy1kaWFsb2ctaGVhZGVyIHsKICAgIHBhZGRp
bmc6IDE0cHggMjBweDsKICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwOwogICAgZm9udC13
ZWlnaHQ6IDYwMDsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGZs
ZXgtc2hyaW5rOiAwOwogICAgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1i
ZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOwp9CgoucmV2aWV3LWRpYWxvZy1oZWFkZXIuYXBw
cm92ZSB7IGJhY2tncm91bmQ6ICMyOGE3NDU7IH0KLnJldmlldy1kaWFsb2ctaGVhZGVyLnJlamVj
dCB7IGJhY2tncm91bmQ6ICNkYzM1NDU7IH0KCi5yZXZpZXctZGlhbG9nLWJvZHkgewogICAgcGFk
ZGluZzogMDsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7CiAgICBmbGV4OiAxOyBtaW4taGVp
Z2h0OiAwOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBvdmVyZmxvdzog
aGlkZGVuOwp9CgoucmV2aWV3LXNwbGl0IHsKICAgIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxh
dGUtY29sdW1uczogMWZyIDFmcjsgZmxleDogMTsgbWluLWhlaWdodDogMDsgb3ZlcmZsb3c6IGhp
ZGRlbjsKfQoucmV2aWV3LXNwbGl0LWxlZnQgewogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQg
dmFyKC0tYm9yZGVyLWxpZ2h0KTsgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGluZzogMTZweDsKICAg
IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNzsgY29sb3I6IHZhcigtLXRleHQtcHJp
bWFyeSk7Cn0KLnJldmlldy1zcGxpdC1sZWZ0IGgzIHsgY29sb3I6IHZhcigtLXRleHQtaGVhZGlu
Zyk7IGZvbnQtc2l6ZTogMTRweDsgbWFyZ2luLWJvdHRvbTogOHB4OyB9Ci5yZXZpZXctc3BsaXQt
cmlnaHQgewogICAgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGluZzogMTZweDsgZGlzcGxheTogZmxl
eDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMHB4Owp9Ci5yZXZpZXctc3BsaXQtcmln
aHQgaDMgeyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOiAxNHB4OyBtYXJn
aW4tYm90dG9tOiA0cHg7IH0KCi5yZXZpZXctcHJldi1jb21tZW50cyB7IGRpc3BsYXk6IGZsZXg7
IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNnB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9
Ci5yZXZpZXctY29tbWVudC1idWJibGUgewogICAgcGFkZGluZzogOHB4IDEwcHg7IGJvcmRlci1y
YWRpdXM6IDZweDsgZm9udC1zaXplOiAxMnB4OyBsaW5lLWhlaWdodDogMS41OwogICAgYm9yZGVy
LWxlZnQ6IDNweCBzb2xpZDsgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5yZXZpZXctY29tbWVudC1i
dWJibGUgLnJjLWF1dGhvciB7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTFweDsgfQou
cmV2aWV3LWNvbW1lbnQtYnViYmxlIC5yYy10ZXh0IHsgbWFyZ2luLXRvcDogM3B4OyBjb2xvcjog
dmFyKC0tdGV4dC1wcmltYXJ5KTsgfQoucmV2aWV3LWNvbW1lbnQtYnViYmxlIC5yYy1kYXRlIHsK
ICAgIGZvbnQtc2l6ZTogMTBweDsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogNHB4OyByaWdodDogOHB4Owp9CgoucmV2aWV3LWRpYWxvZy1ib2R5IHRl
eHRhcmVhIHsKICAgIHdpZHRoOiAxMDAlOyBtaW4taGVpZ2h0OiAxMDBweDsgcGFkZGluZzogMTBw
eDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRp
dXM6IDRweDsgZm9udC1zaXplOiAxM3B4OyByZXNpemU6IHZlcnRpY2FsOwogICAgYmFja2dyb3Vu
ZDogdmFyKC0tYmctaW5wdXQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgZmxleC1zaHJp
bms6IDA7Cn0KCi5yZXZpZXctZGlhbG9nLWZvb3RlciB7CiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7
CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsKICAgIGRpc3Bs
YXk6IGZsZXg7IGdhcDogMTBweDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgZmxleC1zaHJp
bms6IDA7Cn0KCi5yZXZpZXctZGlhbG9nLWZvb3RlciBidXR0b24gewogICAgcGFkZGluZzogOHB4
IDIwcHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBm
b250LXdlaWdodDogNjAwOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9y
KTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwogICAgY29sb3I6IHZhcigtLXRleHQt
cHJpbWFyeSk7Cn0KCi5yZXZpZXctZGlhbG9nLWZvb3RlciAuYnRuLWNvbmZpcm0geyBjb2xvcjog
d2hpdGU7IGJvcmRlcjogbm9uZTsgfQoucmV2aWV3LWRpYWxvZy1mb290ZXIgLmJ0bi1jb25maXJt
LmFwcHJvdmUgeyBiYWNrZ3JvdW5kOiAjMjhhNzQ1OyB9Ci5yZXZpZXctZGlhbG9nLWZvb3RlciAu
YnRuLWNvbmZpcm0ucmVqZWN0IHsgYmFja2dyb3VuZDogI2RjMzU0NTsgfQoKI3Jldmlld0RpYWxv
Z0NvbW1lbnQ6ZW1wdHk6OmJlZm9yZSB7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtcGxhY2Vob2xk
ZXIpOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IHBvaW50ZXItZXZlbnRzOiBub25lOwp9CiNy
ZXZpZXdEaWFsb2dDb21tZW50IHVsLCAjcmV2aWV3RGlhbG9nQ29tbWVudCBvbCB7IHBhZGRpbmct
bGVmdDogMThweDsgbWFyZ2luOiA0cHggMDsgfQoKLyogLS0tIEdvdmVybmFuY2U6IEFkbWluIFBh
bmVsIC0tLSAqLwouZ292LWFkbWluLXBhbmVsIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3Np
dGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0
OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjUpOwogICAgei1pbmRleDogMjAw
MDsKfQoKLmdvdi1hZG1pbi1wYW5lbC5hY3RpdmUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVt
czogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLmdvdi1hZG1pbi1jb250ZW50
IHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQtYWx0KTsKICAgIGJvcmRlci1yYWRpdXM6
IDEwcHg7CiAgICB3aWR0aDogOTIwcHg7CiAgICBtYXgtd2lkdGg6IDk1JTsKICAgIG1heC1oZWln
aHQ6IDg1dmg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogZmxleDsKICAgIGZs
ZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBib3gtc2hhZG93OiAwIDEycHggNDhweCByZ2JhKDAs
MCwwLDAuMjUpOwp9CgouZ292LWFkbWluLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiAjMWEyMzMy
OwogICAgY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgYm9yZGVyLXJh
ZGl1czogMTBweCAxMHB4IDAgMDsKICAgIGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDog
c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7
IGZvbnQtc2l6ZTogMTZweDsKfQoKLmdvdi1hZG1pbi1oZWFkZXIgYnV0dG9uIHsKICAgIGJhY2tn
cm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1
LDI1NSwyNTUsMC40KTsgY29sb3I6IHdoaXRlOwogICAgcGFkZGluZzogNXB4IDE0cHg7IGJvcmRl
ci1yYWRpdXM6IDRweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDEzcHg7IHRyYW5zaXRp
b246IGJhY2tncm91bmQgMC4yczsKfQoKLmdvdi1hZG1pbi1oZWFkZXIgYnV0dG9uOmhvdmVyIHsg
YmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjI1KTsgfQoKLmdvdi1hZG1pbi10b29sYmFy
IHsKICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2
YXIoLS1ib3JkZXItbGlnaHQpOwogICAgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IGZsZXgtd3Jh
cDogd3JhcDsgZmxleC1zaHJpbms6IDA7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFs
dCk7Cn0KCi5nb3YtYWRtaW4tYm9keSB7IHBhZGRpbmc6IDIwcHg7IG92ZXJmbG93LXk6IGF1dG87
IGZsZXg6IDE7IG1pbi1oZWlnaHQ6IDA7IH0KCi5nb3Ytc2VjdGlvbiB7CiAgICBiYWNrZ3JvdW5k
OiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIHBhZGRpbmc6IDE2
cHggMThweDsKICAgIG1hcmdpbi1ib3R0b206IDE0cHg7CiAgICBib3gtc2hhZG93OiAwIDFweCAz
cHggdmFyKC0tc2hhZG93LWxpZ2h0KTsKfQoKLmdvdi1zZWN0aW9uLXRpdGxlIHsKICAgIGZvbnQt
c2l6ZTogMTNweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1o
ZWFkaW5nKTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2lu
ZzogMC41cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgcGFkZGluZy1ib3R0b206IDhw
eDsKICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwp9Cgou
Z292LXVzZXItcm93IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVy
OwogICAgZ2FwOiAxMHB4OwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBib3JkZXI6IDFweCBz
b2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgbWFy
Z2luLWJvdHRvbTogNnB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICB0cmFu
c2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXM7Cn0KCi5nb3YtdXNlci1yb3c6aG92ZXIgeyBib3Jk
ZXItY29sb3I6IHZhcigtLWJvcmRlci1zdHJvbmcpOyB9CgouZ292LXVzZXItcm93IC5nb3Ytcm9s
ZS1pY29uIHsKICAgIHdpZHRoOiAyOHB4OyBoZWlnaHQ6IDI4cHg7IGJvcmRlci1yYWRpdXM6IDUw
JTsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVu
dDogY2VudGVyOwogICAgZm9udC1zaXplOiAxM3B4OyBmbGV4LXNocmluazogMDsKfQoKLmdvdi11
c2VyLXJvdyAuZ292LXJvbGUtaWNvbi5zdSB7IGJhY2tncm91bmQ6ICNlOGYwZmU7IGNvbG9yOiAj
MWE1NmRiOyB9Ci5nb3YtdXNlci1yb3cgLmdvdi1yb2xlLWljb24ucmV2IHsgYmFja2dyb3VuZDog
I2ZlZjNlMjsgY29sb3I6ICNiNDUzMDk7IH0KCi5nb3YtdXNlci1yb3cgLmdvdi11c2VyLWluZm8g
eyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IH0KLmdvdi11c2VyLXJvdyAuZ292LXVzZXItaW5mbyAu
Z292LXVzZXItbmFtZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6
IHZhcigtLXRleHQtcHJpbWFyeSk7IH0KLmdvdi11c2VyLXJvdyAuZ292LXVzZXItaW5mbyAuZ292
LXVzZXItZGV0YWlsIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7
IG1hcmdpbi10b3A6IDFweDsgfQoKLmdvdi11c2VyLXJvdyAuZ292LWNhdC10YWdzIHsgZGlzcGxh
eTogZmxleDsgZ2FwOiA0cHg7IGZsZXgtd3JhcDogd3JhcDsgZmxleDogMTsgfQoKLmdvdi1jYXQt
dGFnIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMnB4IDhweDsgYm9yZGVy
LXJhZGl1czogMTBweDsKICAgIGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDUwMDsgYmFj
a2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7Cn0K
Ci5nb3YtdXNlci1yb3cgYnV0dG9uIHsKICAgIHBhZGRpbmc6IDRweCAxMHB4OyBib3JkZXI6IDFw
eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFs
dCk7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAx
MXB4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7
Cn0KCi5nb3YtdXNlci1yb3cgYnV0dG9uLnJlbW92ZSB7IGNvbG9yOiAjZGMzNTQ1OyBib3JkZXIt
Y29sb3I6ICNmNWM2Y2I7IH0KLmdvdi11c2VyLXJvdyBidXR0b24ucmVtb3ZlOmhvdmVyIHsgYmFj
a2dyb3VuZDogI2RjMzU0NTsgY29sb3I6IHdoaXRlOyB9Ci5nb3YtY2F0LWl0ZW0gYnV0dG9uIHsg
YmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiAxcHgg
c29saWQgdmFyKC0tYmctcHJpbWFyeSk7IHBhZGRpbmc6IDVweCAxNHB4OyBmb250LXNpemU6IDEy
cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vyc29yOiBwb2ludGVyOyB9Ci5nb3YtY2F0LWl0ZW0g
YnV0dG9uOmhvdmVyIHsgb3BhY2l0eTogMC44NTsgfQouZ292LWNhdC1pdGVtLmhpZGRlbi1jYXQg
eyBvcGFjaXR5OiAwLjQ1OyB9Ci5nb3YtY2F0LWl0ZW0uaGlkZGVuLWNhdCAuZ292LWNhdC1uYW1l
IHsgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7IH0KCi5nb3YtYWRkLWdyaWQgewogICAg
ZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMC42ZnIgMWZyOwogICAg
Z2FwOiAxMHB4OwogICAgbWFyZ2luLXRvcDogMTBweDsKfQoKLmdvdi1maWVsZCB7IGRpc3BsYXk6
IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogM3B4OyB9CgouZ292LWZpZWxkLmZ1
bGwtd2lkdGggeyBncmlkLWNvbHVtbjogMSAvIC0xOyB9CgouZ292LWZpZWxkIGxhYmVsIHsgZm9u
dC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyBmb250LXdlaWdodDog
NjAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC4zcHg7IH0K
Ci5nb3YtZmllbGQgaW5wdXQsIC5nb3YtZmllbGQgc2VsZWN0IHsKICAgIHBhZGRpbmc6IDZweCAx
MHB4OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsgYm9yZGVyLXJhZGl1
czogNXB4OwogICAgZm9udC1zaXplOiAxM3B4OyBoZWlnaHQ6IDMycHg7IGJhY2tncm91bmQ6IHZh
cigtLWJnLWlucHV0KTsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IHRyYW5zaXRpb246IGJv
cmRlci1jb2xvciAwLjE1czsKfQoKLmdvdi1maWVsZCBpbnB1dDpmb2N1cywgLmdvdi1maWVsZCBz
ZWxlY3Q6Zm9jdXMgeyBib3JkZXItY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG91dGxpbmU6
IG5vbmU7IGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDQ2LDc0LDk4LDAuMSk7IH0KCi5nb3Yt
ZmllbGQgc2VsZWN0W211bHRpcGxlXSB7IGhlaWdodDogYXV0bzsgbWluLWhlaWdodDogNDhweDsg
fQoKLmdvdi1maWVsZCAuZ292LWhpbnQgeyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjOTk5OyBm
b250LXN0eWxlOiBpdGFsaWM7IH0KCi5nb3YtYWRkLWFjdGlvbnMgeyBncmlkLWNvbHVtbjogMSAv
IC0xOyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgbWFyZ2luLXRvcDogNHB4OyB9CgouZ292LWFk
ZC1idG4gewogICAgcGFkZGluZzogOHB4IDIwcHg7IGJhY2tncm91bmQ6IHZhcigtLXRleHQtaGVh
ZGluZyk7IGNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogbm9uZTsgYm9yZGVyLXJhZGl1czogNnB4
OyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsKICAg
IHRyYW5zaXRpb246IGFsbCAwLjE1czsKfQoKLmdvdi1hZGQtYnRuOmhvdmVyIHsgb3BhY2l0eTog
MC44NTsgfQouZ292LWJ0bi1kYW5nZXIgeyBiYWNrZ3JvdW5kOiAjOGIxYTFhICFpbXBvcnRhbnQ7
IH0KW2RhdGEtdGhlbWU9Im5pZ2h0Il0gLmdvdi1idG4tZGFuZ2VyIHsgYmFja2dyb3VuZDogI2E4
MzIzMiAhaW1wb3J0YW50OyB9CgouZ292LWNhbmNlbC1idG4gewogICAgcGFkZGluZzogOHB4IDIw
cHg7IGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1zdHJvbmcpOyBjb2xvcjogdmFyKC0tdGV4dC1w
cmltYXJ5KTsKICAgIGJvcmRlcjogbm9uZTsgYm9yZGVyLXJhZGl1czogNnB4OyBjdXJzb3I6IHBv
aW50ZXI7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsKICAgIHRyYW5zaXRpb246
IGFsbCAwLjE1czsKfQoKLmdvdi1jYW5jZWwtYnRuOmhvdmVyIHsgb3BhY2l0eTogMC44NTsgfQoK
Lmdvdi11c2VyLXJvdyBidXR0b24uZWRpdCB7CiAgICBwYWRkaW5nOiAzcHggMTBweDsgYmFja2dy
b3VuZDogdmFyKC0tYmctY2FyZCk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRleHQtaGVhZGlu
Zyk7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgYm9yZGVyLXJhZGl1czogNHB4OyBj
dXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTFweDsgdHJhbnNpdGlvbjogYWxsIDAuMTVzOwp9
CgouZ292LXVzZXItcm93IGJ1dHRvbi5lZGl0OmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tdGV4
dC1oZWFkaW5nKTsgY29sb3I6IHdoaXRlOyB9CgouZ292LXNldHRpbmctcm93IHsKICAgIGRpc3Bs
YXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTBweDsKICAgIHBhZGRpbmc6IDhw
eCAwOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOwp9CgouZ292
LXNldHRpbmctcm93ICsgLmdvdi1zZXR0aW5nLXJvdyB7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2
YXIoLS1ib3JkZXItbGlnaHQpOyB9CgouZ292LXNldHRpbmctcm93IGlucHV0W3R5cGU9ImNoZWNr
Ym94Il0gewogICAgd2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsgYWNjZW50LWNvbG9yOiAjMkU0
QTYyOyBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5nb3YtZW1wdHkgeyBjb2xvcjogdmFyKC0tdGV4dC1t
dXRlZCk7IGZvbnQtc2l6ZTogMTNweDsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAxMnB4
OyBmb250LXN0eWxlOiBpdGFsaWM7IH0KCi8qIC0tLSBSZXZpZXcgSGlzdG9yeSBpbiBEZXRhaWwg
LS0tICovCi5yZXZpZXctaGlzdG9yeSB7CiAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgcGFkZGlu
Zy10b3A6IDE1cHg7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTBlMDsKfQoKLnJldmll
dy1oaXN0b3J5IGgzIHsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5n
KTsgbWFyZ2luLWJvdHRvbTogMTBweDsgfQoKLnJldmlldy1oaXN0b3J5LWl0ZW0gewogICAgZGlz
cGxheTogZmxleDsKICAgIGdhcDogMTBweDsKICAgIHBhZGRpbmc6IDhweCAwOwogICAgYm9yZGVy
LWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7CiAgICBmb250LXNpemU6IDEzcHg7Cn0KCi5yZXZp
ZXctaGlzdG9yeS1pdGVtIC5hY3Rpb24tYmFkZ2UgewogICAgcGFkZGluZzogMnB4IDhweDsKICAg
IGJvcmRlci1yYWRpdXM6IDNweDsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0
OiA2MDA7CiAgICBmbGV4LXNocmluazogMDsKfQoKLnJldmlldy1oaXN0b3J5LWl0ZW0gLmFjdGlv
bi1iYWRnZS5hcHByb3ZlZCB7IGJhY2tncm91bmQ6ICNENEVEREE7IGNvbG9yOiAjMTU1NzI0OyB9
Ci5yZXZpZXctaGlzdG9yeS1pdGVtIC5hY3Rpb24tYmFkZ2UucmVqZWN0ZWQgeyBiYWNrZ3JvdW5k
OiAjRjhEN0RBOyBjb2xvcjogIzcyMUMyNDsgfQoucmV2aWV3LWhpc3RvcnktaXRlbSAuYWN0aW9u
LWJhZGdlLnN1Ym1pdHRlZCB7IGJhY2tncm91bmQ6ICNGRkU1QjQ7IGNvbG9yOiAjN0E0NDE5OyB9
CgovKiAtLS0gQ29uZmxpY3QgV2FybmluZyAtLS0gKi8KLmNvbmZsaWN0LXdhcm5pbmcgewogICAg
YmFja2dyb3VuZC1jb2xvcjogI2ZmZjNjZDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmMxMDc7
CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBtYXJn
aW4tYm90dG9tOiAxMHB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgY29sb3I6ICM4NTY0MDQ7
CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogOHB4
Owp9CgovKiAtLS0gU2NobGFnd8O2cnRlciAvIEtleXdvcmRzIC0tLSAqLwoua2V5d29yZC10YWcg
eyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDJweCA4cHg7IGJvcmRlci1yYWRpdXM6
IDEwcHg7IGZvbnQtc2l6ZTogMTFweDsgYmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgY29s
b3I6IHZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbjogMXB4OyB9Ci5rZXl3b3JkLWlucHV0LXdy
YXAgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGZsZXg6IDE7IG1pbi13aWR0aDogMjAwcHg7IH0KLmtl
eXdvcmQtaW5wdXQtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3Jh
cDsgZ2FwOiA0cHg7IHBhZGRpbmc6IDRweCA4cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIo
LS1ib3JkZXItc3Ryb25nKTsgYm9yZGVyLXJhZGl1czogNHB4OwogICAgbWluLWhlaWdodDogMzJw
eDsgYmFja2dyb3VuZDogdmFyKC0tYmctaW5wdXQpOyBhbGlnbi1pdGVtczogY2VudGVyOyBjdXJz
b3I6IHRleHQ7Cn0KLmtleXdvcmQtaW5wdXQtY29udGFpbmVyIGlucHV0IHsgYm9yZGVyOiBub25l
OyBvdXRsaW5lOiBub25lOyBmb250LXNpemU6IDEzcHg7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50
OyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgbWluLXdpZHRoOiA4MHB4OyBmbGV4OiAxOyBw
YWRkaW5nOiAycHggMDsgfQoua2V5d29yZC1waWxsIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFs
aWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNHB4OyBwYWRkaW5nOiAycHggOHB4OyBiYWNrZ3JvdW5k
OiB2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjogd2hpdGU7IGJvcmRlci1yYWRpdXM6IDEwcHg7
IGZvbnQtc2l6ZTogMTJweDsgfQoua2V5d29yZC1waWxsIC5rdy1yZW1vdmUgeyBjdXJzb3I6IHBv
aW50ZXI7IGZvbnQtd2VpZ2h0OiBib2xkOyBvcGFjaXR5OiAwLjc7IH0KLmtleXdvcmQtcGlsbCAu
a3ctcmVtb3ZlOmhvdmVyIHsgb3BhY2l0eTogMTsgfQoua2V5d29yZC1hdXRvY29tcGxldGUgewog
ICAgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMCU7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBiYWNr
Z3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRl
ci1jb2xvcik7IGJvcmRlci1yYWRpdXM6IDRweDsgbWF4LWhlaWdodDogMTUwcHg7CiAgICBvdmVy
Zmxvdy15OiBhdXRvOyB6LWluZGV4OiAxMDsgYm94LXNoYWRvdzogMCA0cHggMTJweCB2YXIoLS1z
aGFkb3ctbGlnaHQpOyBkaXNwbGF5OiBub25lOwp9Ci5rZXl3b3JkLWF1dG9jb21wbGV0ZS5hY3Rp
dmUgeyBkaXNwbGF5OiBibG9jazsgfQoua2V5d29yZC1hdXRvY29tcGxldGUtaXRlbSB7IHBhZGRp
bmc6IDZweCAxMnB4OyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZh
cigtLXRleHQtcHJpbWFyeSk7IH0KLmtleXdvcmQtYXV0b2NvbXBsZXRlLWl0ZW06aG92ZXIgeyBi
YWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLmtleXdvcmQtc3VnZ2VzdGlvbiB7CiAgICBk
aXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzozcHggMTBweDsgYm9yZGVyLXJhZGl1czoxMnB4
OyBmb250LXNpemU6MTFweDsKICAgIGJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpOyBjb2xv
cjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp
Z2h0KTsKICAgIGN1cnNvcjpwb2ludGVyOyB0cmFuc2l0aW9uOmFsbCAwLjE1czsgdXNlci1zZWxl
Y3Q6bm9uZTsKfQoua2V5d29yZC1zdWdnZXN0aW9uOmhvdmVyIHsgYmFja2dyb3VuZDp2YXIoLS1i
Zy1hY3RpdmUpOyBjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyBib3JkZXItY29sb3I6dmFyKC0t
dGV4dC1oZWFkaW5nKTsgfQoKLyogLS0tIFNjaGxhZ3dvcnQtVmVyd2FsdHVuZyAoR292ZXJuYW5j
ZSkgLS0tICovCi5nb3Yta3ctbGlzdCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsg
Z2FwOiA2cHg7IG1hcmdpbi10b3A6IDhweDsgbWF4LWhlaWdodDogMjAwcHg7IG92ZXJmbG93LXk6
IGF1dG87IH0KLmdvdi1rdy1waWxsIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1p
dGVtczogY2VudGVyOyBnYXA6IDRweDsKICAgIHBhZGRpbmc6IDRweCAxMHB4OyBib3JkZXItcmFk
aXVzOiAxMnB4OyBmb250LXNpemU6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1hY3Rp
dmUpOyBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0t
Ym9yZGVyLWxpZ2h0KTsKICAgIGN1cnNvcjogcG9pbnRlcjsgdHJhbnNpdGlvbjogYWxsIDAuMTVz
Owp9Ci5nb3Yta3ctcGlsbDpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5n
KTsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9Ci5nb3Yta3ctcGlsbCAua3ctY291bnQg
eyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgbWFyZ2luLWxlZnQ6
IDJweDsgfQoKLmt3LW1hbmFnZS1tb2RhbCB7CiAgICBkaXNwbGF5OiBub25lOyBwb3NpdGlvbjog
Zml4ZWQ7IHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgIGJh
Y2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTsgei1pbmRleDogMTA1MDA7IGp1c3RpZnktY29udGVu
dDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5rdy1tYW5hZ2UtbW9kYWwub3BlbiB7
IGRpc3BsYXk6IGZsZXg7IH0KLmt3LW1hbmFnZS1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6IHZh
cigtLWJnLWNhcmQpOyBib3JkZXItcmFkaXVzOiA4cHg7IHdpZHRoOiA1MjBweDsgbWF4LXdpZHRo
OiA5NSU7CiAgICBtYXgtaGVpZ2h0OiA4MHZoOyBvdmVyZmxvdzogaGlkZGVuOyBkaXNwbGF5OiBm
bGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYm94LXNoYWRvdzogMCA4cHggMzJweCBy
Z2JhKDAsMCwwLDAuMyk7Cn0KLmt3LW1hbmFnZS1oZWFkZXIgewogICAgcGFkZGluZzogMTRweCAy
MHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTsgY29sb3I6IHdoaXRlOwogICAgZm9u
dC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxNXB4OyBib3JkZXItcmFkaXVzOiA4cHggOHB4IDAg
MDsKICAgIGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxp
Z24taXRlbXM6IGNlbnRlcjsKfQoua3ctbWFuYWdlLWJvZHkgeyBwYWRkaW5nOiAxNnB4IDIwcHg7
IG92ZXJmbG93LXk6IGF1dG87IGZsZXg6IDE7IH0KLmt3LW1hbmFnZS1mb290ZXIgewogICAgcGFk
ZGluZzogMTJweCAyMHB4OyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0
KTsKICAgIGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5k
Owp9Ci5rdy1tYW5hZ2UtZm9vdGVyIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA2cHggMTZweDsgYm9y
ZGVyLXJhZGl1czogNHB4OyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQt
c2l6ZTogMTNweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IGJh
Y2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsKfQou
a3ctbWFuYWdlLWZvb3RlciBidXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJk
LWFsdCk7IH0KLmt3LW1hbmFnZS1mb290ZXIgYnV0dG9uLmRhbmdlciB7IGJhY2tncm91bmQ6ICNk
YzM1NDU7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiBub25lOyB9Ci5rdy1tYW5hZ2UtZm9vdGVyIGJ1
dHRvbi5kYW5nZXI6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjYzgyMzMzOyB9Ci5rdy1tYW5hZ2UtZm9v
dGVyIGJ1dHRvbi5wcmltYXJ5IHsgYmFja2dyb3VuZDogdmFyKC0tdGV4dC1oZWFkaW5nKTsgY29s
b3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IH0KLmt3LW1hbmFnZS1mb290ZXIgYnV0dG9uLnByaW1h
cnk6aG92ZXIgeyBvcGFjaXR5OiAwLjg1OyB9Ci5rdy1kb2MtbGlzdCB7IG1hcmdpbjogMTBweCAw
OyB9Ci5rdy1kb2MtaXRlbSB7CiAgICBwYWRkaW5nOiA4cHggMTBweDsgYm9yZGVyOiAxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogNHB4OwogICAgbWFyZ2luLWJv
dHRvbTogNHB4OyBmb250LXNpemU6IDEzcHg7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVu
dDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoua3ctZG9jLWl0ZW0gLmt3
LWRvYy10aXRsZSB7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcp
OyB9Ci5rdy1kb2MtaXRlbSAua3ctZG9jLWthdCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZh
cigtLXRleHQtbXV0ZWQpOyB9CgovKiAtLS0gQXJ0aWtlbC1SZWZlcmVueiAoIy1BdXRvY29tcGxl
dGUgaW0gRWRpdG9yKSAtLS0gKi8KLnhyZWYtZHJvcGRvd24gewogICAgZGlzcGxheTogbm9uZTsg
cG9zaXRpb246IGZpeGVkOyB6LWluZGV4OiAxMDEwMDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJn
LWNhcmQpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOyBib3JkZXItcmFk
aXVzOiA4cHg7CiAgICBib3gtc2hhZG93OiAwIDhweCAyOHB4IHZhcigtLXNoYWRvdy1tZWRpdW0p
OyB3aWR0aDogMzgwcHg7IG1heC1oZWlnaHQ6IDM2MHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsg
ZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoueHJlZi1kcm9wZG93bi52aXNpYmxlIHsgZGlzcGxh
eTogZmxleDsgfQoueHJlZi1zZWFyY2ggewogICAgcGFkZGluZzogOHB4IDEycHg7IGJvcmRlci1i
b3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOwp9Ci54cmVmLXNlYXJjaCBpbnB1
dCB7CiAgICB3aWR0aDogMTAwJTsgcGFkZGluZzogNnB4IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlk
IHZhcigtLWJvcmRlci1jb2xvcik7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7IGZvbnQtc2l6ZTog
MTNweDsgYmFja2dyb3VuZDogdmFyKC0tYmctaW5wdXQpOyBjb2xvcjogdmFyKC0tdGV4dC1wcmlt
YXJ5KTsKICAgIG91dGxpbmU6IG5vbmU7Cn0KLnhyZWYtc2VhcmNoIGlucHV0OmZvY3VzIHsgYm9y
ZGVyLWNvbG9yOiB2YXIoLS10ZXh0LWhlYWRpbmcpOyB9Ci54cmVmLWxpc3QgeyBmbGV4OiAxOyBv
dmVyZmxvdy15OiBhdXRvOyBtYXgtaGVpZ2h0OiAzMDBweDsgfQoueHJlZi1pdGVtIHsKICAgIHBh
ZGRpbmc6IDhweCAxMnB4OyBjdXJzb3I6IHBvaW50ZXI7IGJvcmRlci1ib3R0b206IDFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItbGlnaHQpOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzOwp9
Ci54cmVmLWl0ZW06aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1ob3Zlcik7IH0KLnhyZWYt
aXRlbTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQoueHJlZi1pdGVtIC54cmVm
LXRpdGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0t
dGV4dC1oZWFkaW5nKTsgfQoueHJlZi1pdGVtIC54cmVmLWNhdCB7IGZvbnQtc2l6ZTogMTFweDsg
Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci54cmVmLWl0ZW0uaGVhZGluZyB7IHBhZGRpbmct
bGVmdDogMjhweDsgfQoueHJlZi1pdGVtLmhlYWRpbmcgLnhyZWYtdGl0bGUgeyBmb250LXdlaWdo
dDogNTAwOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IH0K
LnhyZWYtaXRlbS5oZWFkaW5nIC54cmVmLXRpdGxlOjpiZWZvcmUgeyBjb250ZW50OiAnwqcgJzsg
Y29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9Ci54cmVmLWJhY2sgewogICAgcGFkZGluZzogNnB4
IDEycHg7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZhcigtLXRleHQtaGVhZGluZyk7IGN1cnNv
cjogcG9pbnRlcjsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGln
aHQpOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDRweDsKfQoueHJl
Zi1iYWNrOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaG92ZXIpOyB9CgovKiBDcm9zc2xp
bmstUmVmZXJlbnogaW0gVGV4dCAobWFudWVsbCBlaW5nZWbDvGd0IHZpYSAjKSAqLwouZHJpdmUt
eHJlZiB7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC13ZWlnaHQ6IDUwMDsg
Y3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyLWJvdHRvbTogMS41cHggc29saWQgdmFyKC0tdGV4
dC1oZWFkaW5nKTsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdHJhbnNpdGlvbjogYmFja2dy
b3VuZCAwLjE1czsKfQouZHJpdmUteHJlZjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWFj
dGl2ZSk7IH0KCi8qIC0tLSBVbnRlcmFydGlrZWwgLS0tICovCi5kb2N1bWVudC1pdGVtLmNoaWxk
LWFydGljbGUgeyBwYWRkaW5nLWxlZnQ6IDM2cHg7IGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFy
KC0tYm9yZGVyLWxpZ2h0KTsgfQouZG9jLXBhcmVudC1yZWYgeyBmb250LXNpemU6IDEwcHg7IGNv
bG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZm9udC1zdHlsZTogaXRhbGljOyB9CgovKiAtLS0gVGFi
ZWxsZW5hbnNpY2h0IC0tLSAqLwoudGFibGUtdmlldy1jb250YWluZXIgeyBmbGV4OiAxOyBvdmVy
ZmxvdzogYXV0bzsgZGlzcGxheTogbm9uZTsgfQoudGFibGUtdmlldy1jb250YWluZXIuYWN0aXZl
IHsgZGlzcGxheTogYmxvY2s7IH0KLmRyaXZlLXRhYmxlIHsgd2lkdGg6IDEwMCU7IGJvcmRlci1j
b2xsYXBzZTogY29sbGFwc2U7IGZvbnQtc2l6ZTogMTNweDsgfQouZHJpdmUtdGFibGUgdGggewog
ICAgY3Vyc29yOiBwb2ludGVyOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkLWFsdCk7IGNvbG9y
OiB2YXIoLS10ZXh0LWhlYWRpbmcpOwogICAgcGFkZGluZzogMTBweCAxMnB4OyB0ZXh0LWFsaWdu
OiBsZWZ0OyBmb250LXdlaWdodDogNjAwOyBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0t
dGV4dC1oZWFkaW5nKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IHVzZXItc2VsZWN0OiBub25l
OyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7Cn0KLmRyaXZlLXRhYmxlIHRoOmhvdmVyIHsg
YmFja2dyb3VuZDogdmFyKC0tYmctYWN0aXZlKTsgfQouZHJpdmUtdGFibGUgdGguc29ydGVkLWFz
Yzo6YWZ0ZXIgeyBjb250ZW50OiAiIFwyNUIyIjsgZm9udC1zaXplOiAxMHB4OyB9Ci5kcml2ZS10
YWJsZSB0aC5zb3J0ZWQtZGVzYzo6YWZ0ZXIgeyBjb250ZW50OiAiIFwyNUJDIjsgZm9udC1zaXpl
OiAxMHB4OyB9Ci5kcml2ZS10YWJsZSB0ZCB7IHBhZGRpbmc6IDhweCAxMnB4OyBib3JkZXItYm90
dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsgY29sb3I6IHZhcigtLXRleHQtcHJp
bWFyeSk7IH0KLmRyaXZlLXRhYmxlIHRyIHsgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1czsg
Y3Vyc29yOiBwb2ludGVyOyB9Ci5kcml2ZS10YWJsZSB0cjpob3ZlciB7IGJhY2tncm91bmQ6IHZh
cigtLWJnLWhvdmVyKTsgfQouZHJpdmUtdGFibGUgdGQgLmtleXdvcmQtdGFnIHsgZm9udC1zaXpl
OiAxMHB4OyBwYWRkaW5nOiAxcHggNnB4OyB9CgovKiAtLS0gS2F0ZWdvcmllLVZlcndhbHR1bmcg
LS0tICovCi5nb3YtY2F0LWl0ZW0gewogICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNl
bnRlcjsgZ2FwOiA4cHg7IHBhZGRpbmc6IDZweCAxMnB4OwogICAgYm9yZGVyOiAxcHggc29saWQg
dmFyKC0tYm9yZGVyLWxpZ2h0KTsgYm9yZGVyLXJhZGl1czogNnB4OyBtYXJnaW4tYm90dG9tOiA0
cHg7IGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpOwp9Ci5nb3YtY2F0LWl0ZW0gLmdvdi1jYXQt
bmFtZSB7IGZsZXg6IDE7IGZvbnQtd2VpZ2h0OiA1MDA7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6
IHZhcigtLXRleHQtcHJpbWFyeSk7IH0KLmdvdi1jYXQtbGlzdCB7IG1heC1oZWlnaHQ6IDI0MHB4
OyBvdmVyZmxvdy15OiBhdXRvOyBwYWRkaW5nLXJpZ2h0OiA0cHg7IH0KLmdvdi1jYXQtYWRkLXJv
dyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBtYXJnaW4tdG9wOiA4cHg7IH0KLmdvdi1jYXQt
YWRkLXJvdyBpbnB1dCB7IGZsZXg6IDE7IHBhZGRpbmc6IDZweCAxMHB4OyBib3JkZXI6IDFweCBz
b2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTsgYm9yZGVyLXJhZGl1czogNXB4OyBmb250LXNpemU6
IDEzcHg7IGJhY2tncm91bmQ6IHZhcigtLWJnLWlucHV0KTsgY29sb3I6IHZhcigtLXRleHQtcHJp
bWFyeSk7IH0KLmdvdi10d28tY29sIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zOiAxZnIgMWZyOyBnYXA6IDE0cHg7IH0KLmdvdi10d28tY29sLmNhdC1zZXR0aW5ncyB7IGdy
aWQtdGVtcGxhdGUtY29sdW1uczogM2ZyIDJmcjsgfQouZ292LWhlbHAtZWRpdG9yIHsgd2lkdGg6
MTAwJTsgbWluLWhlaWdodDoyMDBweDsgcGFkZGluZzoxMnB4OyBib3JkZXI6MXB4IHNvbGlkIHZh
cigtLWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6NHB4OyBmb250LXNpemU6MTNweDsgbGlu
ZS1oZWlnaHQ6MS42OyBiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTsgY29sb3I6dmFyKC0tdGV4
dC1wcmltYXJ5KTsgb3ZlcmZsb3cteTphdXRvOyB9Ci5nb3YtaGVscC1lZGl0b3I6Zm9jdXMgeyBi
b3JkZXItY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgb3V0bGluZTpub25lOyB9Ci5nb3YtYWN0
aW9uLWJhciB7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IG1hcmdpbi10b3A6OHB4OyBmbGV4LXdy
YXA6d3JhcDsgfQouZ292LXVzZXItcm93IC5nb3Ytcm9sZS1pY29uLmZhIHsgYmFja2dyb3VuZDog
I2ZjZTRlYzsgY29sb3I6ICNjNjI4Mjg7IH0KCi8qIC0tLSBMw7ZzY2gtQmVzdMOkdGlndW5nIE1v
ZGFsIC0tLSAqLwouZGVsZXRlLWNvbmZpcm0tbW9kYWwgeyBkaXNwbGF5Om5vbmU7IHBvc2l0aW9u
OmZpeGVkOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgYmFja2dyb3Vu
ZDpyZ2JhKDAsMCwwLDAuNSk7IHotaW5kZXg6MzAwMDsgfQouZGVsZXRlLWNvbmZpcm0tbW9kYWwu
YWN0aXZlIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVu
dDpjZW50ZXI7IH0KLmRlbGV0ZS1jb25maXJtLWNvbnRlbnQgeyBiYWNrZ3JvdW5kOnZhcigtLWJn
LWNhcmQpOyBib3JkZXItcmFkaXVzOjhweDsgd2lkdGg6NDQwcHg7IG1heC13aWR0aDo5NSU7IGJv
eC1zaGFkb3c6MCAxMHB4IDQwcHggcmdiYSgwLDAsMCwwLjMpOyB9Ci5kZWxldGUtY29uZmlybS1o
ZWFkZXIgeyBiYWNrZ3JvdW5kOiNkYzM1NDU7IGNvbG9yOndoaXRlOyBwYWRkaW5nOjE1cHggMjBw
eDsgYm9yZGVyLXJhZGl1czo4cHggOHB4IDAgMDsgZm9udC13ZWlnaHQ6NjAwOyBmb250LXNpemU6
MTZweDsgfQouZGVsZXRlLWNvbmZpcm0tYm9keSB7IHBhZGRpbmc6MjBweDsgfQouZGVsZXRlLWNv
bmZpcm0tYm9keSBpbnB1dCB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6OHB4IDEwcHg7IGJvcmRlcjox
cHggc29saWQgdmFyKC0tYm9yZGVyLXN0cm9uZyk7IGJvcmRlci1yYWRpdXM6NHB4OyBmb250LXNp
emU6MTRweDsgbWFyZ2luLXRvcDo4cHg7IGJhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpOyBjb2xv
cjp2YXIoLS10ZXh0LXByaW1hcnkpOyB9Ci5kZWxldGUtY29uZmlybS1mb290ZXIgeyBwYWRkaW5n
OjE1cHggMjBweDsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsgZGlz
cGxheTpmbGV4OyBnYXA6MTBweDsganVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyB9Ci5kZWxldGUt
Y29uZmlybS1mb290ZXIgYnV0dG9uIHsgcGFkZGluZzo4cHggMjBweDsgYm9yZGVyLXJhZGl1czo0
cHg7IGN1cnNvcjpwb2ludGVyOyBmb250LXdlaWdodDo2MDA7IGJvcmRlcjoxcHggc29saWQgI2Rk
ZDsgYmFja2dyb3VuZDp3aGl0ZTsgfQouZGVsZXRlLWNvbmZpcm0tZm9vdGVyIC5idG4tZGVsZXRl
IHsgYmFja2dyb3VuZDojZGMzNTQ1OyBjb2xvcjp3aGl0ZTsgYm9yZGVyOm5vbmU7IH0KLmRlbGV0
ZS1jb25maXJtLWZvb3RlciAuYnRuLWRlbGV0ZTpkaXNhYmxlZCB7IG9wYWNpdHk6MC41OyBjdXJz
b3I6bm90LWFsbG93ZWQ7IH0KCi8qIC0tLSBQYXBpZXJrb3JiIC8gR2Vsw7ZzY2h0ZSBBcnRpa2Vs
IC0tLSAqLwoudHJhc2gtYmFkZ2UgeyBmb250LXNpemU6MTFweDsgcGFkZGluZzoycHggOHB4OyBi
YWNrZ3JvdW5kOiNGOEQ3REE7IGNvbG9yOiM3MjFDMjQ7IGJvcmRlci1yYWRpdXM6M3B4OyBjdXJz
b3I6cG9pbnRlcjsgfQoudHJhc2gtaXRlbSB7IHBhZGRpbmc6MTBweCAxMnB4OyBib3JkZXI6MXB4
IHNvbGlkICNmNWM2Y2I7IGJvcmRlci1yYWRpdXM6NnB4OyBtYXJnaW4tYm90dG9tOjhweDsgYmFj
a2dyb3VuZDojZmZmNWY1OyB9Ci50cmFzaC1pdGVtLXRpdGxlIHsgZm9udC13ZWlnaHQ6NjAwOyBm
b250LXNpemU6MTNweDsgY29sb3I6IzcyMUMyNDsgfQoudHJhc2gtaXRlbS1tZXRhIHsgZm9udC1z
aXplOjExcHg7IGNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOjNweDsgfQoudHJh
c2gtaXRlbS1hY3Rpb25zIHsgZGlzcGxheTpmbGV4OyBnYXA6NnB4OyBtYXJnaW4tdG9wOjZweDsg
fQoudHJhc2gtaXRlbS1hY3Rpb25zIGJ1dHRvbiB7IHBhZGRpbmc6NHB4IDEwcHg7IGJvcmRlcjox
cHggc29saWQgI2RkZDsgYmFja2dyb3VuZDp3aGl0ZTsgYm9yZGVyLXJhZGl1czo0cHg7IGZvbnQt
c2l6ZToxMnB4OyBjdXJzb3I6cG9pbnRlcjsgfQoudHJhc2gtaXRlbS1hY3Rpb25zIC5idG4tcmVz
dG9yZSB7IGJvcmRlci1jb2xvcjojMjhhNzQ1OyBjb2xvcjojMjhhNzQ1OyB9Ci50cmFzaC1pdGVt
LWFjdGlvbnMgLmJ0bi1yZXN0b3JlOmhvdmVyIHsgYmFja2dyb3VuZDojMjhhNzQ1OyBjb2xvcjp3
aGl0ZTsgfQoKLyogLS0tIEVuZ2FnZW1lbnQtU3RhdGlzdGlrIC0tLSAqLwouc3RhdC1ncmlkIHsg
ZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5t
YXgoMTgwcHgsMWZyKSk7IGdhcDoxMnB4OyBtYXJnaW4tYm90dG9tOjE2cHg7IH0KLnN0YXQtY2Fy
ZCB7IGJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpOyBib3JkZXItcmFkaXVzOjhweDsgcGFk
ZGluZzoxNnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfQouc3RhdC1jYXJkIC5zdGF0LXZhbHVlIHsg
Zm9udC1zaXplOjI4cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5n
KTsgfQouc3RhdC1jYXJkIC5zdGF0LWxhYmVsIHsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigt
LXRleHQtbXV0ZWQpOyBtYXJnaW4tdG9wOjRweDsgfQouc3RhdC1iYXItcm93IHsgZGlzcGxheTpm
bGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBwYWRkaW5nOjZweCAwOyBmb250LXNp
emU6MTNweDsgfQouc3RhdC1iYXItcm93IC5zdGF0LWJhci1sYWJlbCB7IG1pbi13aWR0aDoxMDBw
eDsgZm9udC13ZWlnaHQ6NTAwOyBjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyB9Ci5zdGF0LWJh
ci1yb3cgLnN0YXQtYmFyIHsgZmxleDoxOyBoZWlnaHQ6MjBweDsgYmFja2dyb3VuZDp2YXIoLS1i
b3JkZXItbGlnaHQpOyBib3JkZXItcmFkaXVzOjRweDsgb3ZlcmZsb3c6aGlkZGVuOyB9Ci5zdGF0
LWJhci1yb3cgLnN0YXQtYmFyLWZpbGwgeyBoZWlnaHQ6MTAwJTsgYm9yZGVyLXJhZGl1czo0cHg7
IHRyYW5zaXRpb246d2lkdGggMC4zczsgfQouc3RhdC1iYXItcm93IC5zdGF0LWJhci12YWwgeyBt
aW4td2lkdGg6NDBweDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZh
cigtLXRleHQtbXV0ZWQpOyB9CgovKiAtLS0gSGlsZmUtTW9kYWwgLS0tICovCi5oZWxwLW1vZGFs
IHsgZGlzcGxheTpub25lOyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAw
JTsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpOyB6LWluZGV4OjIwMDA7
IH0KLmhlbHAtbW9kYWwuYWN0aXZlIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7
IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0KLmhlbHAtbW9kYWwtY29udGVudCB7CiAgICBiYWNr
Z3JvdW5kOnZhcigtLWJnLWNhcmQpOyBib3JkZXItcmFkaXVzOjEwcHg7IHdpZHRoOjk2MHB4OyBt
YXgtd2lkdGg6OTUlOyBoZWlnaHQ6ODV2aDsKICAgIGRpc3BsYXk6ZmxleDsgb3ZlcmZsb3c6aGlk
ZGVuOyBib3gtc2hhZG93OjAgMTJweCA0OHB4IHJnYmEoMCwwLDAsMC4zKTsKfQouaGVscC10b2Mg
ewogICAgd2lkdGg6MjQwcHg7IG1pbi13aWR0aDoyMDBweDsgYmFja2dyb3VuZDp2YXIoLS1iZy1w
cmltYXJ5KTsgY29sb3I6d2hpdGU7CiAgICBvdmVyZmxvdy15OmF1dG87IHBhZGRpbmc6MjBweCAw
OyBmbGV4LXNocmluazowOwp9Ci5oZWxwLXRvYy10aXRsZSB7IHBhZGRpbmc6MCAyMHB4IDE1cHg7
IGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IGJvcmRlci1ib3R0b206MXB4IHNvbGlk
IHJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7IG1hcmdpbi1ib3R0b206MTBweDsgfQouaGVscC10b2Mg
YSB7CiAgICBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOjdweCAyMHB4OyBmb250LXNpemU6MTNweDsg
Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjcpOwogICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJv
cmRlci1sZWZ0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgdHJhbnNpdGlvbjphbGwgMC4xNXM7IGN1
cnNvcjpwb2ludGVyOwp9Ci5oZWxwLXRvYyBhOmhvdmVyIHsgY29sb3I6d2hpdGU7IGJhY2tncm91
bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjA4KTsgfQouaGVscC10b2MgYS5hY3RpdmUgeyBjb2xvcjp3
aGl0ZTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTIpOyBib3JkZXItbGVmdC1jb2xv
cjojMmQ5ZDc4OyBmb250LXdlaWdodDo2MDA7IH0KLmhlbHAtdG9jIGEuc3ViIHsgcGFkZGluZy1s
ZWZ0OjM0cHg7IGZvbnQtc2l6ZToxMnB4OyB9Ci5oZWxwLWJvZHkgewogICAgZmxleDoxOyBvdmVy
Zmxvdy15OmF1dG87IHBhZGRpbmc6MzBweCAzNXB4OyBjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
OyBzY3JvbGwtYmVoYXZpb3I6c21vb3RoOwp9Ci5oZWxwLWJvZHkgaDIgeyBjb2xvcjp2YXIoLS10
ZXh0LWhlYWRpbmcpOyBmb250LXNpemU6MjBweDsgbWFyZ2luOjMwcHggMCAxMnB4OyBwYWRkaW5n
LWJvdHRvbTo4cHg7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7
IH0KLmhlbHAtYm9keSBoMjpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6MDsgfQouaGVscC1ib2R5
IGgzIHsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgZm9udC1zaXplOjE1cHg7IG1hcmdpbjoy
MHB4IDAgOHB4OyB9Ci5oZWxwLWJvZHkgcCB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDox
Ljc7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9Ci5o
ZWxwLWJvZHkgdWwgeyBtYXJnaW46MCAwIDEycHggMjBweDsgY29sb3I6dmFyKC0tdGV4dC1zZWNv
bmRhcnkpOyB9Ci5oZWxwLWJvZHkgbGkgeyBmb250LXNpemU6MTRweDsgbGluZS1oZWlnaHQ6MS42
OyBtYXJnaW4tYm90dG9tOjRweDsgfQouaGVscC1ib2R5IGtiZCB7CiAgICBkaXNwbGF5OmlubGlu
ZS1ibG9jazsgcGFkZGluZzoxcHggNnB4OyBiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTsg
Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgYm9yZGVyLXJhZGl1czoz
cHg7IGZvbnQtc2l6ZToxMnB4OyBmb250LWZhbWlseTptb25vc3BhY2U7IGNvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Cn0KLmhlbHAtYm9keSAuaGVscC1iYWRnZSB7CiAgICBkaXNwbGF5OmlubGlu
ZS1ibG9jazsgcGFkZGluZzoycHggOHB4OyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEx
cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLXJpZ2h0OjRweDsKfQouaGVscC1ib2R5IC5oZWxw
LWJhZGdlLnN1IHsgYmFja2dyb3VuZDojZThmMGZlOyBjb2xvcjojMWE1NmRiOyB9Ci5oZWxwLWJv
ZHkgLmhlbHAtYmFkZ2UucmV2IHsgYmFja2dyb3VuZDojZmVmM2UyOyBjb2xvcjojYjQ1MzA5OyB9
Ci5oZWxwLWJvZHkgLmhlbHAtYmFkZ2UuYWxsIHsgYmFja2dyb3VuZDojRDRFRERBOyBjb2xvcjoj
MTU1NzI0OyB9Ci5oZWxwLWVkaXQtYnRuIHsKICAgIGRpc3BsYXk6bm9uZTsgbWFyZ2luOjEwcHgg
MjBweDsgcGFkZGluZzo4cHggMTRweDsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTIp
OyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4zKTsKICAgIGNvbG9yOndoaXRl
OyBib3JkZXItcmFkaXVzOjRweDsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZToxMnB4OyBmb250
LXdlaWdodDo2MDA7CiAgICB0cmFuc2l0aW9uOmFsbCAwLjJzOyB0ZXh0LWFsaWduOmNlbnRlcjsg
d2lkdGg6Y2FsYygxMDAlIC0gNDBweCk7Cn0KLmhlbHAtZWRpdC1idG46aG92ZXIgeyBiYWNrZ3Jv
dW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4yNSk7IH0KLmhlbHAtZWRpdC1iYXIgewogICAgZGlzcGxh
eTpub25lOyBwYWRkaW5nOjhweCAxNnB4OyBiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTsg
Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgIGdhcDo2cHg7
IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC1zaHJpbms6MDsKfQouaGVscC1lZGl0LWJhci5hY3Rp
dmUgeyBkaXNwbGF5OmZsZXg7IH0KLmhlbHAtZWRpdC1iYXIgYnV0dG9uIHsKICAgIHBhZGRpbmc6
NXB4IDEwcHg7IGJvcmRlcjpub25lOyBiYWNrZ3JvdW5kOnZhcigtLWJnLXRvb2xiYXIpOyBjb2xv
cjp2YXIoLS10ZXh0LXByaW1hcnkpOwogICAgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZToxM3B4
OyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOyBtaW4taGVpZ2h0
OjI4cHg7Cn0KLmhlbHAtZWRpdC1iYXIgYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDp2YXIoLS1i
b3JkZXItbGlnaHQpOyB9Ci5oZWxwLWVkaXQtYmFyIC5oZWxwLXNhdmUtYnRuIHsgYmFja2dyb3Vu
ZDp2YXIoLS10ZXh0LWhlYWRpbmcpOyBjb2xvcjp3aGl0ZTsgYm9yZGVyOm5vbmU7IGJvcmRlci1y
YWRpdXM6NHB4OyBwYWRkaW5nOjVweCAxNnB4OyBtYXJnaW4tbGVmdDphdXRvOyB9Ci5oZWxwLWVk
aXQtYmFyIC5oZWxwLXNhdmUtYnRuOmhvdmVyIHsgb3BhY2l0eTowLjg1OyB9Ci5oZWxwLWVkaXQt
YmFyIC5oZWxwLWNhbmNlbC1idG4geyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6MXB4
IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzo1
cHggMTJweDsgfQouaGVscC1ib2R5W2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdIHsgYm9yZGVyOjJw
eCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpOyBib3JkZXItcmFkaXVzOjRweDsgbWFyZ2luOjRw
eDsgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCiAgICA8IS0tIEhlYWRlciAtLT4KICAg
IDxoZWFkZXI+CiAgICAgICAgPGltZyBzcmM9ImNzcy9pbWFnZXMvZHJpdmVfbG9nb19uaWdodC5w
bmciCiAgICAgICAgICAgICBhbHQ9IkQuUi5JLlYuRS4iCiAgICAgICAgICAgICBjbGFzcz0iZHJp
dmUtbG9nbyIKICAgICAgICAgICAgIHN0eWxlPSJjdXJzb3I6cG9pbnRlcjsiCiAgICAgICAgICAg
ICBvbmNsaWNrPSJEcml2ZVBvcnRhbC5zaG93SG9tZSgpIgogICAgICAgICAgICAgb25lcnJvcj0i
dGhpcy5zdHlsZS5kaXNwbGF5PSdub25lJyI+CiAgICAgICAgPGRpdiBjbGFzcz0iZHJpdmUtaGVh
ZGVyLWNlbnRlciI+CiAgICAgICAgICAgIDxwPkRpZ2l0YWxlcyBSZXNzb3VyY2VuLSB1bmQgSW5m
b3JtYXRpb25zcG9ydGFsIFZlcmtlaHI8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGJ1dHRv
biBjbGFzcz0idGhlbWUtdG9nZ2xlIiBpZD0idGhlbWVUb2dnbGUiIG9uY2xpY2s9InRvZ2dsZVRo
ZW1lKCkiIHRpdGxlPSJUYWcvTmFjaHQtTW9kdXMgdW1zY2hhbHRlbiI+CiAgICAgICAgICAgIDxz
cGFuIGNsYXNzPSJpY29uLWRheSI+JiM5Nzg5Ozwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xh
c3M9Imljb24tbmlnaHQiPiYjOTc4ODs8L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICA8L2hl
YWRlcj4KCiAgICA8IS0tIENvbm5lY3Rpb24gQmFyIChudXIgc2ljaHRiYXIgd2VubiB2ZXJidW5k
ZW4pIC0tPgogICAgPGRpdiBjbGFzcz0iY29ubmVjdGlvbi1iYXIiIGlkPSJjb25uZWN0aW9uQmFy
IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0YXR1cy1kb3Qi
IGlkPSJzdGF0dXNEb3QiPjwvc3Bhbj4KICAgICAgICA8c3BhbiBpZD0iY29ubmVjdGlvblRleHQi
Pjwvc3Bhbj4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRlMucmVjb25uZWN0KCkiIGlk
PSJidG5SZWNvbm5lY3QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij5PcmRuZXIgd2VjaHNlbG48L2J1
dHRvbj4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRlMuYWN0aXZhdGVTZXJ2ZXIoKSIg
aWQ9ImJ0bkFjdGl2YXRlU2VydmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+U2VydmVyIHN0YXJ0
ZW4gZsO8ciBCZWFyYmVpdHVuZzwvYnV0dG9uPgogICAgICAgIDxzcGFuIGNsYXNzPSJzcGFjZXIi
Pjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icmV2aWV3LWJhZGdlIiBpZD0icmV2aWV3QmFk
Z2UiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd1F1
ZXVlKCkiIHRpdGxlPSJBcnRpa2VsLCBkaWUgYXVmIGRlaW5lIEZyZWlnYWJlIG9kZXIgQWJsZWhu
dW5nIHdhcnRlbiI+UHLDvGZ1bmdlbjogPHNwYW4gaWQ9InJldmlld0NvdW50Ij4wPC9zcGFuPjwv
c3Bhbj4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5zaG93QWRtaW4o
KSIgaWQ9ImJ0bkdvdkFkbWluIiBzdHlsZT0iZGlzcGxheTpub25lOyBwYWRkaW5nOjRweCAxMHB4
OyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7IGJvcmRlcjoxcHggc29saWQgcmdi
YSgyNTUsMjU1LDI1NSwwLjQpOyBjb2xvcjp3aGl0ZTsgYm9yZGVyLXJhZGl1czozcHg7IGN1cnNv
cjpwb2ludGVyOyBmb250LXNpemU6MTJweDsiIHRpdGxlPSJWZXJ3YWx0dW5nc2JlcmVpY2g6IFJv
bGxlbiwgS2F0ZWdvcmllbiwgRWluc3RlbGx1bmdlbiB1bmQgbWVociI+R292ZXJuYW5jZTwvYnV0
dG9uPgogICAgICAgIDxzcGFuIGNsYXNzPSJzeW5jLWluZm8iIGlkPSJzeW5jSW5mbyI+PC9zcGFu
PgogICAgPC9kaXY+CgogICAgPCEtLSBNYWluIENvbnRlbnQgLS0+CiAgICA8bWFpbj4KICAgICAg
ICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xz
LXJvdy10b3AiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoLWJveCI+CiAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJzZWFyY2hJbnB1dCIgcGxhY2Vo
b2xkZXI9IkRva3VtZW50IHN1Y2hlbi4uLiIgZGlzYWJsZWQ+CiAgICAgICAgICAgICAgICA8L2Rp
dj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXR1cy1maWx0ZXJzIiBpZD0ic3RhdHVz
RmlsdGVycyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRu
IiBpZD0iYnRuTmV3RG9jIiBvbmNsaWNrPSJEcml2ZUVkaXRvci5jcmVhdGVOZXcoKSIgZGlzYWJs
ZWQKICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICMyZDlk
Nzg7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyLWNvbG9yOiAjMmQ5ZDc4OyIgdGl0bGU9IkVpbmVuIG5l
dWVuIEFydGlrZWwgZXJzdGVsbGVuIj4rIE5ldTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1
dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biIgaWQ9ImJ0blRhYmxlVmlldyIgb25jbGljaz0iRHJpdmVQ
b3J0YWwudG9nZ2xlVGFibGVWaWV3KCkiIHRpdGxlPSJad2lzY2hlbiBMaXN0ZW5hbnNpY2h0IHVu
ZCBUYWJlbGxlbmFuc2ljaHQgd2VjaHNlbG4iPiYjOTc3NjsgVGFiZWxsZTwvYnV0dG9uPgogICAg
ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMtcm93LWNhdGVn
b3JpZXMiIGlkPSJjYXRlZ29yeUZpbHRlcnMiPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAg
ICA8ZGl2IGNsYXNzPSJ0YWJsZS12aWV3LWNvbnRhaW5lciIgaWQ9InRhYmxlVmlld0NvbnRhaW5l
ciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIiBpZD0iY29udGFpbmVyIj4K
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9jdW1lbnQtbGlzdCI+CiAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJsaXN0LWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgRG9rdW1lbnRlCiAg
ICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImRvYy1jb3VudCIgaWQ9ImRvY0NvdW50Ij48
L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
Imxpc3QtaXRlbXMiIGlkPSJkb2N1bWVudExpc3QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImVtcHR5LXN0YXRlIj48cD5WZXJiaW5kdW5nIHdpcmQgaGVyZ2VzdGVsbHQuLi48L3A+
PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImRvY3VtZW50LWRldGFpbCIgaWQ9ImRvY3VtZW50RGV0YWlsIj4KICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndlbGNvbWUtY29udGVudCI+CiAgICAgICAgICAgICAg
ICAgICAgPGgxPldpbGxrb21tZW4gYmVpIEQuUi5JLlYuRS48L2gxPgogICAgICAgICAgICAgICAg
ICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxLjg7bWFyZ2luLWJvdHRv
bToxNnB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgIERhcyA8c3Ryb25nPkRpZ2l0YWxlIFJl
c3NvdXJjZW4tIHVuZCBJbmZvcm1hdGlvbnNwb3J0YWwgVmVya2Vocjwvc3Ryb25nPiBpc3QgdW5z
ZXJlIGdlbWVpbnNhbWUgV2lzc2Vuc3BsYXR0Zm9ybS4KICAgICAgICAgICAgICAgICAgICA8L3A+
CiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0
OjEuODttYXJnaW4tYm90dG9tOjE2cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgSGllciBz
YW1tZWxuIHdpciBGYWNod2lzc2VuLCBFcmZhaHJ1bmdlbiB1bmQgQXJiZWl0c2hpbGZlbiBhdXMg
YWxsZW4gQmVyZWljaGVuLCBkaWUgdW5zIGltIEFyYmVpdHNhbGx0YWcgYmVnZWduZW4g4oCTCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZvbiBWZXJrZWhyc3JlY2h0IMO8YmVyIExhZHVuZ3NzaWNo
ZXJ1bmcgYmlzIGhpbiB6dSB0ZWNobmlzY2hlbiBLb250cm9sbGVuIHVuZCB6dSBIaWxmZXN0ZWxs
dW5nZW4gYmVpIGRlciBhYnNjaGxpZcOfZW5kZW4gQW56ZWlnZW5mZXJ0aWd1bmcuCiAgICAgICAg
ICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6
MTZweDtsaW5lLWhlaWdodDoxLjg7bWFyZ2luLWJvdHRvbToxNnB4OyI+CiAgICAgICAgICAgICAg
ICAgICAgICAgIEQuUi5JLlYuRS4gbGVidCBkYXZvbiwgZGFzcyA8c3Ryb25nPmFsbGUgbWl0bWFj
aGVuPC9zdHJvbmc+Li4uIHZvbSBLQSBiaXMgenVtIFZLIQogICAgICAgICAgICAgICAgICAgIDwv
cD4KICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjE1cHg7bGluZS1oZWln
aHQ6MS44O21hcmdpbi1ib3R0b206MjBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICBKZWRl
IEtvbGxlZ2luIHVuZCBqZWRlciBLb2xsZWdlIGlzdCBoZXJ6bGljaCBlaW5nZWxhZGVuLAogICAg
ICAgICAgICAgICAgICAgICAgICBlaWdlbmVzIFdpc3NlbiBlaW56dWJyaW5nZW4sIGJlc3RlaGVu
ZGUgQXJ0aWtlbCB6dSBlcmfDpG56ZW4gb2RlciBuZXVlIFRoZW1lbiBhbnp1bGVnZW4uCiAgICAg
ICAgICAgICAgICAgICAgICAgIE51ciBnZW1laW5zYW0gc2NoYWZmZW4gd2lyIGVpbmUgV2lzc2Vu
c2Jhc2lzLCBkaWUgYWt0dWVsbCwgZnVuZGllcnQgdW5kIGltIEVpbnNhdHogc293aWUgZGVyIEJl
YXJiZWl0dW5nIHdpcmtsaWNoIGhpbGZ0LgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1zZWN0aW9uIj4KICAgICAgICAgICAgICAg
ICAgICAgICAgPGgyPk1pdG1hY2hlbiDigJMgc28gZWluZmFjaCBnZWh0J3M8L2gyPgogICAgICAg
ICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHN0
cm9uZz5MZXNlbjo8L3N0cm9uZz4gw5ZmZm5lIGVpbmZhY2ggZGllc2UgRGF0ZWkgaW0gQnJvd3Nl
ciDigJMgYWxsZSBmcmVpZ2VnZWJlbmVuIEFydGlrZWwgd2VyZGVuIGF1dG9tYXRpc2NoIGdlbGFk
ZW48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+TWl0YXJiZWl0
ZW46PC9zdHJvbmc+IFN0YXJ0ZSA8Y29kZT5EUklWRV9TdGFydC5iYXQ8L2NvZGU+IHBlciBEb3Bw
ZWxrbGljayDigJMgZGFtaXQga2FubnN0IGR1IEFydGlrZWwgZXJzdGVsbGVuLCBiZWFyYmVpdGVu
IHVuZCBNZWRpZW4gaG9jaGxhZGVuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxs
aT48c3Ryb25nPkZyZWlnYWJlOjwvc3Ryb25nPiBOZXVlIHVuZCDDvGJlcmFyYmVpdGV0ZSBBcnRp
a2VsIGR1cmNobGF1ZmVuIGVpbmVuIGt1cnplbiBQcsO8ZnByb3plc3MsIGRhbWl0IGRpZSBRdWFs
aXTDpHQgc3RpbW10PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAg
ICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1z
ZWN0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPldhcnVtIEQuUi5JLlYuRS4/PC9o
Mj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbSBBcmJlaXRzYWxsdGFnIHN0b8OfZW4gd2lyIHJlZ2VsbcOkw59pZyBhdWYgRnJhZ2VuLCBk
ZXJlbiBBbnR3b3J0ZW4gaXJnZW5kd28gaW4gT3JkbmVybiwgRS1NYWlscyBvZGVyIEvDtnBmZW4g
dmVydGVpbHQgc2luZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQuUi5JLlYuRS4gYnJp
bmd0IGRpZXNlcyBXaXNzZW4gYW4gZWluZW0gT3J0IHp1c2FtbWVuLiBTbyBwcm9maXRpZXJlbiBh
bGxlIHZvbiBkZXIgaW5ow6RyZW50ZW4gRXJmYWhydW5nIGRlciBNaXRhcmJlaXRlciBkZXIgRGly
ZWt0aW9uIFZlcmtlaHIgZGVzIFBQIERvcnRtdW5kIQogICAgICAgICAgICAgICAgICAgICAgICA8
L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImluZm8tc2VjdGlvbiIgaWQ9IndlbGNvbWVDb25uZWN0SGludCIgc3R5bGU9ImRpc3Bs
YXk6bm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5adW0gTGVzZW46IMOWZmZuZSBk
aWUgaW5kZXguaHRtbCBkaXJla3Qg4oCTIGRpZSBBcnRpa2VsIHdlcmRlbiBhdXRvbWF0aXNjaCBn
ZWxhZGVuLjxicj5adW0gQmVhcmJlaXRlbjogU3RhcnRlIDxzdHJvbmc+RFJJVkVfU3RhcnQuYmF0
PC9zdHJvbmc+IHBlciBEb3BwZWxrbGljay48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+
CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+
CiAgICA8L21haW4+CgogICAgPCEtLSBFZGl0b3IgTW9kYWwgLS0+CiAgICA8ZGl2IGNsYXNzPSJl
ZGl0b3ItbW9kYWwiIGlkPSJlZGl0b3JNb2RhbCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9y
LW1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItbW9kYWwtaGVh
ZGVyIj4KICAgICAgICAgICAgICAgIDxoMiBpZD0iZWRpdG9yTW9kYWxUaXRsZSI+RWRpdG9yPC9o
Mj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIE1ldGFkYXRlbi1aZWlsZSAx
IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZGl0b3ItbWV0YS1yb3ciPgogICAgICAgICAg
ICAgICAgPGxhYmVsPlRpdGVsOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9ImVkaXRvclRpdGVsIiBwbGFjZWhvbGRlcj0iRG9rdW1lbnR0aXRlbCBlaW5nZWJl
bi4uLiI+CiAgICAgICAgICAgICAgICA8bGFiZWw+S2F0ZWdvcmllOjwvbGFiZWw+CiAgICAgICAg
ICAgICAgICA8c2VsZWN0IGlkPSJlZGl0b3JLYXRlZ29yaWUiPjwvc2VsZWN0PgogICAgICAgICAg
ICAgICAgPGxhYmVsPlN0YXR1czo8L2xhYmVsPgogICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0i
ZWRpdG9yU3RhdHVzIj48L3NlbGVjdD4KICAgICAgICAgICAgICAgIDxsYWJlbD7DnGJlcmFydGlr
ZWw6PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImVkaXRvclBhcmVudCI+PG9w
dGlvbiB2YWx1ZT0iIj4tLSBLZWluIMOcYmVyYXJ0aWtlbCAtLTwvb3B0aW9uPjwvc2VsZWN0Pgog
ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPCEtLSBUb29sYmFyIC0tPgogICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJlZGl0b3ItdG9vbGJhciI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9u
Y2xpY2s9IkRyaXZlRWRpdG9yLnVuZG8oKSIgdGl0bGU9IlLDvGNrZ8OkbmdpZyAoU3RyZytaKSI+
PGltZyBzcmM9ImNzcy9pY29ucy91bmRvLnBuZyIgc3R5bGU9IndpZHRoOjE2cHg7aGVpZ2h0OjE2
cHg7dmVydGljYWwtYWxpZ246bWlkZGxlOyI+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnJlZG8oKSIgdGl0bGU9IldpZWRlcmhvbGVuIChTdHJn
K1kpIj48aW1nIHNyYz0iY3NzL2ljb25zL3JlZG8ucG5nIiBzdHlsZT0id2lkdGg6MTZweDtoZWln
aHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ij48L2J1dHRvbj4KICAgICAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJ0b29sYmFyLXNlcGFyYXRvciI+PC9zcGFuPgogICAgICAgICAgICAgICAg
PHNlbGVjdCBvbmNoYW5nZT0iRHJpdmVFZGl0b3IuaGVhZGluZyh0aGlzLnZhbHVlKTt0aGlzLnZh
bHVlPScnIiBzdHlsZT0iZm9udC1zaXplOjEycHg7cGFkZGluZzoycHggNHB4OyI+CiAgICAgICAg
ICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5BYnNhdHo8L29wdGlvbj4KICAgICAgICAgICAg
ICAgICAgICA8b3B0aW9uIHZhbHVlPSJoMSIgc3R5bGU9ImZvbnQtc2l6ZToxOHB4O2ZvbnQtd2Vp
Z2h0OmJvbGQ7Ij5IMSDDnGJlcnNjaHJpZnQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8
b3B0aW9uIHZhbHVlPSJoMiIgc3R5bGU9ImZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7
Ij5IMiDDnGJlcnNjaHJpZnQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZh
bHVlPSJoMyIgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Ij5IMyDDnGJl
cnNjaHJpZnQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJoNCIg
c3R5bGU9ImZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OmJvbGQ7Ij5INCDDnGJlcnNjaHJpZnQ8
L29wdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgPGJ1dHRv
biBvbmNsaWNrPSJEcml2ZUVkaXRvci5jb21tYW5kKCdib2xkJykiIHRpdGxlPSJGZXR0Ij48Yj5C
PC9iPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRv
ci5jb21tYW5kKCdpdGFsaWMnKSIgdGl0bGU9Ikt1cnNpdiI+PGk+STwvaT48L2J1dHRvbj4KICAg
ICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuY29tbWFuZCgndW5kZXJs
aW5lJykiIHRpdGxlPSJVbnRlcnN0cmljaGVuIj48dT5VPC91PjwvYnV0dG9uPgogICAgICAgICAg
ICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5jb21tYW5kKCdpbnNlcnRVbm9yZGVy
ZWRMaXN0JykiIHRpdGxlPSJBdWZ6w6RobHVuZyI+PGltZyBzcmM9ImNzcy9pY29ucy9idWxsZXRf
bGlzdC5naWYiIHN0eWxlPSJ3aWR0aDoxNnB4O2hlaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1p
ZGRsZTsiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVk
aXRvci5jb21tYW5kKCdpbnNlcnRPcmRlcmVkTGlzdCcpIiB0aXRsZT0iTnVtbWVyaWVydGUgTGlz
dGUiPjxpbWcgc3JjPSJjc3MvaWNvbnMvbnVtYmVyZWRfbGlzdC5wbmciIHN0eWxlPSJ3aWR0aDox
NnB4O2hlaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTsiPjwvYnV0dG9uPgoKICAgICAg
ICAgICAgICAgIDxzZWxlY3QgaWQ9ImZvbnRTaXplU2VsZWN0IiBvbmNoYW5nZT0iRHJpdmVFZGl0
b3IuZm9udFNpemUodGhpcy52YWx1ZSkiPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9IiI+R3LDtsOfZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9
IjEyIj4xMjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE0Ij4x
NDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0
aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPgog
ICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIwIj4yMDwvb3B0aW9uPgogICAgICAg
ICAgICAgICAgPC9zZWxlY3Q+CgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2
ZUVkaXRvci5jb2xvcignIzAwMDAwMCcpIiB0aXRsZT0iU2Nod2FyeiI+PHNwYW4gY2xhc3M9ImNv
bG9yLXN3YXRjaCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzAwMDAwMCI+PC9zcGFuPjwvYnV0
dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5jb2xvcign
IzJFNEE2MicpIiB0aXRsZT0iUG9saXplaS1CbGF1Ij48c3BhbiBjbGFzcz0iY29sb3Itc3dhdGNo
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojMkU0QTYyIj48L3NwYW4+PC9idXR0b24+CiAgICAg
ICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNvbG9yKCcjM2E3YWEzJyki
IHRpdGxlPSJCbGF1Ij48c3BhbiBjbGFzcz0iY29sb3Itc3dhdGNoIiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjojM2E3YWEzIj48L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9u
IG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNvbG9yKCcjNmI5YmMzJykiIHRpdGxlPSJIZWxsYmxhdSI+
PHNwYW4gY2xhc3M9ImNvbG9yLXN3YXRjaCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzZiOWJj
MyI+PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2
ZUVkaXRvci5jb2xvcignIzhiM2E2MicpIiB0aXRsZT0iQm9yZGVhdXgiPjxzcGFuIGNsYXNzPSJj
b2xvci1zd2F0Y2giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiM4YjNhNjIiPjwvc3Bhbj48L2J1
dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuY29sb3Io
JyNmZjAwMDAnKSIgdGl0bGU9IlJvdCI+PHNwYW4gY2xhc3M9ImNvbG9yLXN3YXRjaCIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6I2ZmMDAwMCI+PC9zcGFuPjwvYnV0dG9uPgoKICAgICAgICAgICAg
ICAgIDxzcGFuIGNsYXNzPSJ0b29sYmFyLXNlcGFyYXRvciI+PC9zcGFuPgogICAgICAgICAgICAg
ICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5pbnNlcnRBY2NvcmRpb24oKSIgdGl0bGU9
IkF1ZmtsYXBwYmFyZW4gVGV4dGJlcmVpY2ggZWluZsO8Z2VuIj48aW1nIHNyYz0iY3NzL2ljb25z
L0NoZXZyb24ucG5nIiBzdHlsZT0id2lkdGg6MTZweDtoZWlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGln
bjptaWRkbGU7Ij48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJp
dmVFZGl0b3IuaW5zZXJ0RkFRKCkiIHRpdGxlPSJGQVEtQmVyZWljaCBtaXQgRnJhZ2UtQW50d29y
dC1QYWFyZW4gZWluZsO8Z2VuIj48aW1nIHNyYz0iY3NzL2ljb25zL2ZhcS5wbmciIHN0eWxlPSJ3
aWR0aDoxNnB4O2hlaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTsiPjwvYnV0dG9uPgog
ICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5pbnNlcnRUYWJsZSgp
IiB0aXRsZT0iVGFiZWxsZSBlaW5mw7xnZW4iPjxpbWcgc3JjPSJjc3MvaWNvbnMvdGFibGUucG5n
IiBzdHlsZT0id2lkdGg6MTZweDtoZWlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ij48
L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuaW5z
ZXJ0RGl2aWRlcigpIiB0aXRsZT0iSG9yaXpvbnRhbGUgVHJlbm5saW5pZSBlaW5mw7xnZW4iIHN0
eWxlPSJmb250LXNpemU6MTRweDtsZXR0ZXItc3BhY2luZzotMXB4OyI+4oCVPC9idXR0b24+CiAg
ICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmluc2VydEluZm9ib3go
KSIgdGl0bGU9IkhlcnZvcmdlaG9iZW5lciBJbmZvYmxvY2sgbWl0IEFremVudGxpbmllIiBzdHls
ZT0iZm9udC1zaXplOjExcHg7Ij7ilpAgSW5mbzwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5pbnNlcnRJbXBvcnRhbnQoKSIgdGl0bGU9IldpY2h0
aWdlbiBIaW53ZWlzIGVpbmbDvGdlbiI+PGltZyBzcmM9ImNzcy9pY29ucy9pbXBvcnRhbnQucG5n
IiBzdHlsZT0id2lkdGg6MTZweDtoZWlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ij48
L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3Iuc2hv
d1VwbG9hZE1vZGFsKCkiIHRpdGxlPSJEYXRlaWVuIGhvY2hsYWRlbiIgc3R5bGU9ImZvbnQtd2Vp
Z2h0OjYwMDsiPlVwbG9hZDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZs
ZXg6MTsiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0
b3IudG9nZ2xlUmF3KCkiIGlkPSJidG5SYXdNb2RlIiB0aXRsZT0iSFRNTC1RdWVsbHRleHQgYW56
ZWlnZW4vYmVhcmJlaXRlbiIgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Om1vbm9z
cGFjZTtvcGFjaXR5OjAuNjsiPiZsdDsvJmd0OzwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4K
CiAgICAgICAgICAgIDwhLS0gRWRpdG9yIEFyZWEgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImVkaXRvci1hcmVhIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImVkaXRvcklucHV0IiBjbGFz
cz0iZWRpdG9yLWlucHV0IiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUi
PjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gTWVkaWVuLVZlcndh
bHR1bmcgKG51ciBBbnplaWdlL0JlYXJiZWl0dW5nLCBVcGxvYWQgdWViZXIgVG9vbGJhcikgLS0+
CiAgICAgICAgICAgIDxkaXYgaWQ9ImVkaXRvck1lZGlhUGFuZWwiIHN0eWxlPSJkaXNwbGF5Om5v
bmU7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7IHBhZGRpbmc6OHB4
IDE2cHg7IGJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpOyBtYXgtaGVpZ2h0OjIyMHB4OyBv
dmVyZmxvdy15OmF1dG87Ij4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6Zmxl
eDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgbWFy
Z2luLWJvdHRvbTo2cHg7Ij4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1z
aXplOjEycHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPkhv
Y2hnZWxhZGVuZSBEYXRlaWVuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9
ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDsiPgogICAgICAgICAgICAg
ICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNob3dVcGxvYWRNb2RhbCgp
IiBzdHlsZT0iYmFja2dyb3VuZDpub25lOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1j
b2xvcik7IGJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjJweCA4cHg7IGN1cnNvcjpwb2ludGVy
OyBmb250LXNpemU6MTFweDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPisgSGluenVmw7xn
ZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2
ZUVkaXRvci50b2dnbGVNZWRpYVBhbmVsKCkiIHN0eWxlPSJiYWNrZ3JvdW5kOm5vbmU7IGJvcmRl
cjpub25lOyBjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLXRleHQt
bXV0ZWQpOyI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAg
ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJlZGl0b3JNZWRpYUxp
c3QiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gU2NobGFnd8O2
cnRlciAodW50ZXJoYWxiIGRlcyBFZGl0b3JzKSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0i
ZWRpdG9yLW1ldGEtcm93IiBpZD0iZWRpdG9yS2V5d29yZFJvdyIgc3R5bGU9ImZsZXgtd3JhcDp3
cmFwO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7cGFkZGluZzo4cHgg
MTZweDttYXJnaW46MDsiPgogICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPSJmb250LXNpemU6
MTJweDsiPlNjaGxhZ3fDtnJ0ZXI6PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImtleXdvcmQtaW5wdXQtd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ia2V5
d29yZC1pbnB1dC1jb250YWluZXIiIGlkPSJlZGl0b3JLZXl3b3JkcyIgb25jbGljaz0iZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcktleXdvcmRJbnB1dCcpLmZvY3VzKCkiPgogICAgICAg
ICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImVkaXRvcktleXdvcmRJbnB1
dCIgcGxhY2Vob2xkZXI9InouQi4gVmVya2VocnNmw7xocnVuZywgQmF1c3RlbGxlLCBBdXRvYmFo
biwgSW5uZW5zdGFkdC4uLiI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0ia2V5d29yZC1hdXRvY29tcGxldGUiIGlkPSJrZXl3b3JkQXV0
b2NvbXBsZXRlIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAg
PGRpdiBpZD0ia2V5d29yZFN1Z2dlc3Rpb25zIiBzdHlsZT0id2lkdGg6MTAwJTttYXJnaW4tdG9w
OjRweDtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjRweDsiPjwvZGl2PgogICAgICAg
ICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gRm9vdGVyIC0tPgogICAgICAgICAgICA8ZGl2
IGNsYXNzPSJlZGl0b3ItZm9vdGVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0i
RHJpdmVFZGl0b3IuY2FuY2VsV2l0aFByb21wdCgpIj5BYmJyZWNoZW48L2J1dHRvbj4KICAgICAg
ICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IudG9nZ2xlTWVkaWFQYW5lbCgp
IiBzdHlsZT0iZm9udC1zaXplOjEycHg7IiB0aXRsZT0iSG9jaGdlbGFkZW5lIERhdGVpZW4gYW56
ZWlnZW4sIGJlYXJiZWl0ZW4gb2RlciBsw7ZzY2hlbi4gTmV1ZSBEYXRlaWVuIGhvY2hsYWRlbjog
VXBsb2FkLUJ1dHRvbiBpbiBkZXIgV2Vya3pldWdsZWlzdGUgb2Jlbi4iPkFuaMOkbmdlIHZlcndh
bHRlbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic2F2ZS1idG4iIG9u
Y2xpY2s9IkRyaXZlRWRpdG9yLnNhdmUoKSI+U3BlaWNoZXJuPC9idXR0b24+CiAgICAgICAgICAg
ICAgICA8YnV0dG9uIGNsYXNzPSJzYXZlLWJ0biIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2F2ZUFu
ZENsb3NlKCkiPlNwZWljaGVybiAmYW1wOyBTY2hsaWXDn2VuPC9idXR0b24+CiAgICAgICAgICAg
IDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBNZWRpYSBGdWxsc2Ny
ZWVuIE1vZGFsIC0tPgogICAgPGRpdiBjbGFzcz0ibWVkaWEtbW9kYWwiIGlkPSJtZWRpYU1vZGFs
IiBvbmNsaWNrPSJjbG9zZU1lZGlhTW9kYWwoKSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEt
bW9kYWwtY29udGVudCIgb25jbGljaz0iZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkiPgogICAgICAg
ICAgICA8YnV0dG9uIGNsYXNzPSJtZWRpYS1tb2RhbC1jbG9zZSIgb25jbGljaz0iY2xvc2VNZWRp
YU1vZGFsKCkiPlNjaGxpZcOfZW48L2J1dHRvbj4KICAgICAgICAgICAgPGRpdiBpZD0ibWVkaWFN
b2RhbENvbnRhaW5lciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0t
IE1lZGlhIFVwbG9hZCBFaW5zdGllZ3MtTW9kYWwgKERhdGVpYXVzd2FobCArIEVya2xhZXJ1bmcp
IC0tPgogICAgPGRpdiBjbGFzcz0ibWVkaWEtdXBsb2FkLWRpYWxvZyIgaWQ9Im1lZGlhVXBsb2Fk
U3RhcnRNb2RhbCI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtdXBsb2FkLWRpYWxvZy1jb250
ZW50IiBzdHlsZT0id2lkdGg6NTIwcHg7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEt
dXBsb2FkLWRpYWxvZy1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4+RGF0ZWllbiBob2No
bGFkZW48L3NwYW4+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9y
LmNsb3NlVXBsb2FkU3RhcnRNb2RhbCgpIj5TY2hsaWXDn2VuPC9idXR0b24+CiAgICAgICAgICAg
IDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYS11cGxvYWQtZGlhbG9nLWJvZHki
IHN0eWxlPSJwYWRkaW5nOjI0cHg7Ij4KICAgICAgICAgICAgICAgIDwhLS0gRHJhZyAmIERyb3Ag
Wm9uZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InVwbG9hZERyb3Bab25lIiBjbGFzcz0i
dXBsb2FkLWRyb3Atem9uZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1z
aXplOjI4cHg7bWFyZ2luLWJvdHRvbTo4cHg7b3BhY2l0eTowLjU7Ij4rPC9kaXY+CiAgICAgICAg
ICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO2Nv
bG9yOnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbTo0cHg7Ij5EYXRlaWVuIGhpZXJo
ZXIgemllaGVuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXpl
OjEzcHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO21hcmdpbi1ib3R0b206MTRweDsiPm9k
ZXIga2xpY2tlIGF1ZiBkZW4gQnV0dG9uPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRv
biBvbmNsaWNrPSJEcml2ZUVkaXRvci51cGxvYWRNZWRpYSgpIiBjbGFzcz0idXBsb2FkLXN0YXJ0
LWJ0biI+RGF0ZWllbiBhdXN3w6RobGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4K
ICAgICAgICAgICAgICAgIDwhLS0gSW5mby1CZXJlaWNoIC0tPgogICAgICAgICAgICAgICAgPGRp
diBzdHlsZT0ibWFyZ2luLXRvcDoxOHB4O3BhZGRpbmc6MTRweCAxNnB4O2JhY2tncm91bmQ6dmFy
KC0tYmctY2FyZC1hbHQsI2Y2ZjhmYSk7Ym9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyOjFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItY29sb3IsI2UwZTBlMCk7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2
IHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1o
ZWFkaW5nKTttYXJnaW4tYm90dG9tOjhweDsiPkhpbndlaXNlIHp1bSBVcGxvYWQ8L2Rpdj4KICAg
ICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbjowO3BhZGRpbmctbGVmdDoxOHB4O2Zv
bnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtsaW5lLWhlaWdodDoxLjg7
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+TWVocmZhY2hhdXN3YWhsPC9z
dHJvbmc+IG3DtmdsaWNoIChTdHJnL1NoaWZ0IGdlZHLDvGNrdCBoYWx0ZW4pPC9saT4KICAgICAg
ICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+QmlsZGVyOjwvc3Ryb25nPiBKUEcsIFBORywg
R0lGLCBTVkcsIFdlYlA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5E
b2t1bWVudGU6PC9zdHJvbmc+IFBERiwgV29yZCwgRXhjZWwsIFBvd2VyUG9pbnQ8L2xpPgogICAg
ICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5NZWRpZW46PC9zdHJvbmc+IE1QNCwgV2Vi
TSwgTVAzLCBXQVYsIE9HRzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5Gw7xyIGpl
ZGUgRGF0ZWkga2FubnN0IGR1IDxzdHJvbmc+VGl0ZWwsIFVudGVydGl0ZWwsIERhcnN0ZWxsdW5n
PC9zdHJvbmc+IHVuZCA8c3Ryb25nPlBsYXR6aWVydW5nPC9zdHJvbmc+IGVpbnplbG4gZmVzdGxl
Z2VuPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+
CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBN
ZWRpYSBVcGxvYWQgRm9ybWF0aWVydW5ncy1EaWFsb2cgKHBybyBEYXRlaTogVGl0ZWwsIERhcnN0
ZWxsdW5nLCBldGMuKSAtLT4KICAgIDxkaXYgY2xhc3M9Im1lZGlhLXVwbG9hZC1kaWFsb2ciIGlk
PSJtZWRpYVVwbG9hZERpYWxvZyI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtdXBsb2FkLWRp
YWxvZy1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEtdXBsb2FkLWRpYWxv
Zy1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9InVwbG9hZERpYWxvZ1RpdGxlIj5N
ZWRpZW4gZWluZsO8Z2VuPC9zcGFuPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJE
cml2ZUVkaXRvci5jbG9zZVVwbG9hZERpYWxvZygpIj5BYmJyZWNoZW48L2J1dHRvbj4KICAgICAg
ICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLXVwbG9hZC1kaWFsb2ct
Ym9keSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtcHJldmlldyIgaWQ9InVw
bG9hZFByZXZpZXciPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLWZv
cm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5UaXRlbDwvbGFiZWw+CiAgICAg
ICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ1cGxvYWRUaXRsZSIgcGxhY2Vo
b2xkZXI9IlRpdGVsIGRlciBEYXRlaS4uLiI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1mb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAg
ICAgICA8bGFiZWw+VW50ZXJ0aXRlbCAvIEJlc2NocmVpYnVuZzwvbGFiZWw+CiAgICAgICAgICAg
ICAgICAgICAgPHRleHRhcmVhIGlkPSJ1cGxvYWRDYXB0aW9uIiBwbGFjZWhvbGRlcj0iT3B0aW9u
YWxlciBVbnRlcnRpdGVsLi4uIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtZm9ybS1ncm91cCIgaWQ9InVwbG9hZERp
c3BsYXlHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRhcnN0ZWxsdW5nPC9sYWJl
bD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtb3B0aW9uLWdyb3VwIiBp
ZD0idXBsb2FkRGlzcGxheU9wdGlvbnMiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQtZm9ybS1ncm91cCIgaWQ9InVwbG9hZEFs
aWduR3JvdXAiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8bGFi
ZWw+QXVzcmljaHR1bmc8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVw
bG9hZC1vcHRpb24tZ3JvdXAiIGlkPSJ1cGxvYWRBbGlnbk9wdGlvbnMiPgogICAgICAgICAgICAg
ICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ1cGxvYWQtb3B0aW9uLWJ0biIgZGF0YS1hbGlnbj0i
bGVmdCIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0VXBsb2FkT3B0aW9uKCdhbGlnbicsdGhpcyki
PkxpbmtzPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVw
bG9hZC1vcHRpb24tYnRuIGFjdGl2ZSIgZGF0YS1hbGlnbj0iY2VudGVyIiBvbmNsaWNrPSJEcml2
ZUVkaXRvci5zZXRVcGxvYWRPcHRpb24oJ2FsaWduJyx0aGlzKSI+TWl0dGlnPC9idXR0b24+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVwbG9hZC1vcHRpb24tYnRuIiBk
YXRhLWFsaWduPSJyaWdodCIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0VXBsb2FkT3B0aW9uKCdh
bGlnbicsdGhpcykiPlJlY2h0czwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog
ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ1cGxvYWQt
Zm9ybS1ncm91cCIgaWQ9InVwbG9hZFNpemVHcm91cCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgog
ICAgICAgICAgICAgICAgICAgIDxsYWJlbD5CaWxkZ3LDtsOfZTwvbGFiZWw+CiAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0idXBsb2FkLW9wdGlvbi1ncm91cCIgaWQ9InVwbG9hZFNpemVP
cHRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idXBsb2FkLW9w
dGlvbi1idG4gYWN0aXZlIiBkYXRhLXNpemU9InRodW1ibmFpbCIgb25jbGljaz0iRHJpdmVFZGl0
b3Iuc2V0VXBsb2FkT3B0aW9uKCdzaXplJyx0aGlzKSI+Vm9yc2NoYXViaWxkPC9idXR0b24+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVwbG9hZC1vcHRpb24tYnRuIiBk
YXRhLXNpemU9ImxhcmdlIiBvbmNsaWNrPSJEcml2ZUVkaXRvci5zZXRVcGxvYWRPcHRpb24oJ3Np
emUnLHRoaXMpIj5Hcm/DnyAobWF4IDY0MHg0ODApPC9idXR0b24+CiAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgIDxkaXYgaWQ9InVwbG9hZFByb2dyZXNzQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpu
b25lO3BhZGRpbmc6MCAyMHB4IDEycHg7Ij4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRp
c3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tYm90dG9tOjRw
eDsiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJ1cGxvYWRQcm9ncmVzc0xhYmVsIiBz
dHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpOyI+V2lyZCBo
b2NoZ2VsYWRlbi4uLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0idXBsb2Fk
UHJvZ3Jlc3NQY3QiIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6
dmFyKC0tdGV4dC1oZWFkaW5nKTsiPjAlPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAg
ICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDo2cHg7YmFja2dyb3Vu
ZDp2YXIoLS1iZy1tYWluLCNlZWUpO2JvcmRlci1yYWRpdXM6M3B4O292ZXJmbG93OmhpZGRlbjsi
PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InVwbG9hZFByb2dyZXNzQmFyIiBzdHlsZT0i
d2lkdGg6MCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzM0
OThkYiwjMmVjYzcxKTtib3JkZXItcmFkaXVzOjNweDt0cmFuc2l0aW9uOndpZHRoIDAuMTVzIGVh
c2U7Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBp
ZD0idXBsb2FkUHJvZ3Jlc3NTaXplIiBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0t
dGV4dC1zZWNvbmRhcnkpO21hcmdpbi10b3A6M3B4O3RleHQtYWxpZ246cmlnaHQ7Ij48L2Rpdj4K
ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1kaWFsb2ct
Zm9vdGVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuY2xv
c2VVcGxvYWREaWFsb2coKSI+QWJicmVjaGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0
dG9uIGNsYXNzPSJwcmltYXJ5IiBpZD0idXBsb2FkQ29uZmlybUJ0biIgb25jbGljaz0iRHJpdmVF
ZGl0b3IuY29uZmlybVVwbG9hZCgpIj5FaW5mw7xnZW48L2J1dHRvbj4KICAgICAgICAgICAgPC9k
aXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tIE1lZGlhIENvbnRleHQgTWVu
dSAoRWRpdG9yKSAtLT4KICAgIDxkaXYgY2xhc3M9Im1lZGlhLWNvbnRleHQtbWVudSIgaWQ9Im1l
ZGlhQ29udGV4dE1lbnUiPgogICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6NHB4IDEwcHg7IGZv
bnQtc2l6ZToxMXB4OyBjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwOyI+
QVVTUklDSFRVTkc8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYS1jb250ZXh0LWdyb3Vw
Ij4KICAgICAgICAgICAgPGJ1dHRvbiBkYXRhLWFsaWduPSJsZWZ0IiBvbmNsaWNrPSJEcml2ZUVk
aXRvci5jb250ZXh0QWxpZ24oJ2xlZnQnKSI+TGlua3M8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1
dHRvbiBkYXRhLWFsaWduPSJjZW50ZXIiIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNvbnRleHRBbGln
bignY2VudGVyJykiPk1pdHRpZzwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGRhdGEtYWxp
Z249InJpZ2h0IiBvbmNsaWNrPSJEcml2ZUVkaXRvci5jb250ZXh0QWxpZ24oJ3JpZ2h0JykiPlJl
Y2h0czwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhLWNv
bnRleHQtc2VwIj48L2Rpdj4KICAgICAgICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNv
bnRleHRFZGl0Q2FwdGlvbigpIj5VbnRlcnRpdGVsIGJlYXJiZWl0ZW48L2J1dHRvbj4KICAgICAg
ICA8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmNvbnRleHRSZW1vdmUoKSIgc3R5bGU9ImNv
bG9yOiNkYzM1NDU7Ij5FbnRmZXJuZW48L2J1dHRvbj4KICAgIDwvZGl2PgoKICAgIDwhLS0gUmV2
aWV3IFNpZGUgUGFuZWwgLS0+CiAgICA8ZGl2IGNsYXNzPSJyZXZpZXctcGFuZWwtb3ZlcmxheSIg
aWQ9InJldmlld1BhbmVsT3ZlcmxheSIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmNsb3NlUXVl
dWUoKSI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJyZXZpZXctcGFuZWwiIGlkPSJyZXZpZXdQYW5l
bCI+CiAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3LXBhbmVsLWhlYWRlciI+CiAgICAgICAgICAg
IFByw7xmdW5nZW4KICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uu
Y2xvc2VRdWV1ZSgpIj5TY2hsaWXDn2VuPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAg
PGRpdiBjbGFzcz0icmV2aWV3LXBhbmVsLWJvZHkiIGlkPSJyZXZpZXdQYW5lbEJvZHkiPjwvZGl2
PgogICAgPC9kaXY+CgogICAgPCEtLSBSZXZpZXcgQ29tbWVudCBEaWFsb2cgLS0+CiAgICA8ZGl2
IGNsYXNzPSJyZXZpZXctZGlhbG9nIiBpZD0icmV2aWV3RGlhbG9nIiBvbmNsaWNrPSJpZihldmVu
dC50YXJnZXQ9PT10aGlzKURyaXZlR292ZXJuYW5jZS5jbG9zZVJldmlld0RpYWxvZygpIj4KICAg
ICAgICA8ZGl2IGNsYXNzPSJyZXZpZXctZGlhbG9nLWNvbnRlbnQiPgogICAgICAgICAgICA8ZGl2
IGNsYXNzPSJyZXZpZXctZGlhbG9nLWhlYWRlciIgaWQ9InJldmlld0RpYWxvZ0hlYWRlciI+CiAg
ICAgICAgICAgICAgICA8c3Bhbj5Eb2t1bWVudCBwcsO8ZmVuPC9zcGFuPgogICAgICAgICAgICAg
ICAgPHNwYW4gaWQ9InJldmlld0RpYWxvZ0luZm8iIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250
LXdlaWdodDo0MDA7b3BhY2l0eTowLjk7Ij48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXctZGlhbG9nLWJvZHkiPgogICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0icmV2aWV3LXNwbGl0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJyZXZpZXctc3BsaXQtbGVmdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5BcnRpa2Vs
aW5oYWx0PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmV2aWV3QXJ0aWNs
ZUNvbnRlbnQiIHN0eWxlPSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjc7Ij48L2Rpdj4K
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJyZXZpZXctc3BsaXQtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+QmlzaGVy
aWdlIEtvbW1lbnRhcmU8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJy
ZXZpZXctcHJldi1jb21tZW50cyIgaWQ9InJldmlld1ByZXZDb21tZW50cyI+PC9kaXY+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDxoMz5EZWluIEtvbW1lbnRhcjwvaDM+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxwIGlkPSJyZXZpZXdEaWFsb2dIaW50IiBzdHlsZT0iZm9udC1zaXplOjExcHg7
Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bGluZS1oZWlnaHQ6MS41O21hcmdpbi1ib3R0b206NHB4
OyI+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7
Z2FwOjNweDttYXJnaW4tYm90dG9tOjRweDtmbGV4LXdyYXA6d3JhcDsiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmV2aWV3RGlhbG9nQ29tbWVudCcpLmZvY3VzKCk7ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2JvbGQn
KSIgc3R5bGU9InBhZGRpbmc6MnB4IDhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1j
b2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7Ym9yZGVyLXJhZGl1czozcHg7Y3Vy
c29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Ij5GPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFsb2dDb21tZW50
JykuZm9jdXMoKTtkb2N1bWVudC5leGVjQ29tbWFuZCgnaXRhbGljJykiIHN0eWxlPSJwYWRkaW5n
OjJweCA4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6
dmFyKC0tYmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO2ZvbnQt
c3R5bGU6aXRhbGljO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij5L
PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFsb2dDb21tZW50JykuZm9jdXMoKTtkb2N1
bWVudC5leGVjQ29tbWFuZCgndW5kZXJsaW5lJykiIHN0eWxlPSJwYWRkaW5nOjJweCA4cHg7Ym9y
ZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2Fy
ZC1hbHQpO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1
bmRlcmxpbmU7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsiPlU8L2J1
dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jldmlld0RpYWxvZ0NvbW1lbnQnKS5mb2N1cygpO2RvY3VtZW50
LmV4ZWNDb21tYW5kKCdpbnNlcnRVbm9yZGVyZWRMaXN0JykiIHN0eWxlPSJwYWRkaW5nOjJweCA4
cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0t
YmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTox
MnB4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij4mYnVsbDs8L2J1dHRvbj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jldmlld0RpYWxvZ0NvbW1lbnQnKS5mb2N1cygpO2RvY3VtZW50LmV4ZWNDb21tYW5kKCdm
b3JlQ29sb3InLGZhbHNlLCcjZGMzNTQ1JykiIHN0eWxlPSJwYWRkaW5nOjJweCA4cHg7Ym9yZGVy
OjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1h
bHQpO2JvcmRlci1yYWRpdXM6M3B4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2NvbG9y
OiNkYzM1NDU7Zm9udC13ZWlnaHQ6NzAwOyI+Um90PC9idXR0b24+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZp
ZXdEaWFsb2dDb21tZW50JykuZm9jdXMoKTtkb2N1bWVudC5leGVjQ29tbWFuZCgncmVtb3ZlRm9y
bWF0JykiIHN0eWxlPSJwYWRkaW5nOjJweCA4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6M3B4
O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7
Ij5TdGFuZGFyZDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmV2aWV3RGlhbG9nQ29tbWVudCIgY29udGVudGVk
aXRhYmxlPSJ0cnVlIiBzdHlsZT0ibWluLWhlaWdodDoxMDBweDtmbGV4OjE7cGFkZGluZzoxMHB4
O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtm
b250LXNpemU6MTNweDtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpO2xpbmUtaGVpZ2h0OjEuNjtvdmVyZmxvdy15OmF1dG87IiBkYXRhLXBsYWNlaG9s
ZGVyPSJCZWdyw7xuZHVuZyBlaW5nZWJlbi4uLiI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAg
PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InJldmlldy1kaWFsb2ctZm9vdGVyIj4KICAgICAgICAgICAgICAgIDxi
dXR0b24gb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmNsb3NlUmV2aWV3RGlhbG9nKCkiPlNjaGxp
ZcOfZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1jb25maXJt
IiBpZD0icmV2aWV3RGlhbG9nQ29uZmlybSI+QmVzdMOkdGlnZW48L2J1dHRvbj4KICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tIEdvdmVybmFuY2Ug
QWRtaW4gUGFuZWwgLS0+CiAgICA8ZGl2IGNsYXNzPSJnb3YtYWRtaW4tcGFuZWwiIGlkPSJnb3ZB
ZG1pblBhbmVsIiBvbmNsaWNrPSJpZihldmVudC50YXJnZXQ9PT10aGlzKURyaXZlR292ZXJuYW5j
ZS5jbG9zZUFkbWluKCkiPgogICAgICAgIDxkaXYgY2xhc3M9Imdvdi1hZG1pbi1jb250ZW50Ij4K
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ292LWFkbWluLWhlYWRlciI+CiAgICAgICAgICAgICAg
ICBHb3Zlcm5hbmNlLVZlcndhbHR1bmcKICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0i
RHJpdmVHb3Zlcm5hbmNlLmNsb3NlQWRtaW4oKSI+U2NobGllw59lbjwvYnV0dG9uPgogICAgICAg
ICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ292LWFkbWluLXRvb2xiYXIiIGlk
PSJnb3ZBZG1pblRvb2xiYXIiIHN0eWxlPSJqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjsi
PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13
cmFwOndyYXA7Ij4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0
biIgc3R5bGU9InBhZGRpbmc6NnB4IDE0cHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuZWRp
dFN0YXJ0c2VpdGUoKTsiIHRpdGxlPSJEZW4gQmVncsO8w591bmdzdGV4dCBhdWYgZGVyIFN0YXJ0
c2VpdGUgYmVhcmJlaXRlbiI+U3RhcnRzZWl0ZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAg
IDxidXR0b24gY2xhc3M9Imdvdi1hZGQtYnRuIiBzdHlsZT0icGFkZGluZzo2cHggMTRweDsiIG9u
Y2xpY2s9IkRyaXZlR292ZXJuYW5jZS5zaG93RW5nYWdlbWVudFN0YXRzKCk7IiB0aXRsZT0iU3Rh
dGlzdGlrOiBXZXIgaGF0IHdpZSB2aWVsZSBBcnRpa2VsIGVyc3RlbGx0LCBiZWFyYmVpdGV0IG9k
ZXIgZ2VwcsO8ZnQ/Ij5Vc2VyLUVuZ2FnZW1lbnQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0biIgc3R5bGU9InBhZGRpbmc6NnB4IDE0cHg7IiBv
bmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0FkbWluR3VpZGUoKTsiIHRpdGxlPSJBbmxlaXR1
bmcgZsO8ciBFaW5zdGVpZ2VyOiBGYXJiZW4gw6RuZGVybiwgVGV4dGUgYW5wYXNzZW4sIERhdGVp
ZW4gdmVyc3RlaGVuIj5BZG1pbi1BbmxlaXR1bmc8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAg
ICA8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0biBnb3YtYnRuLWRhbmdlciIgc3R5bGU9InBhZGRp
bmc6NnB4IDE0cHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuY2xvc2VBZG1pbigpO0RyaXZl
UG9ydGFsLnNob3dUcmFzaCgpOyIgdGl0bGU9IkdlbMO2c2NodGUgQXJ0aWtlbCBhbnplaWdlbiB1
bmQgZ2dmLiB3aWVkZXJoZXJzdGVsbGVuICgyOCBUYWdlIEF1ZmJld2FocnVuZykiPlBhcGllcmtv
cmI8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0
biIgc3R5bGU9InBhZGRpbmc6NnB4IDE0cHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hv
d0ltcG9ydEV4cG9ydCgpOyIgdGl0bGU9IkFydGlrZWwgdW5kIE1lZGllbiBleHBvcnRpZXJlbiBv
ZGVyIGltcG9ydGllcmVuIj5JbXBvcnQgLyBFeHBvcnQ8L2J1dHRvbj4KICAgICAgICAgICAgICAg
IDwvZGl2PgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ292LWFkZC1idG4iIHN0eWxl
PSJwYWRkaW5nOjZweCAxNHB4OyIgb25jbGljaz0ic2hvd0NvbnRhY3RGb3JtKCk7IiB0aXRsZT0i
VGVjaG5pc2NoZSBIaWxmZSB2b20gRW50d2lja2xlciBhbmZvcmRlcm4iPlRlY2huaXNjaGVyIFN1
cHBvcnQ8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9
Imdvdi1hZG1pbi1ib2R5IiBpZD0iZ292QWRtaW5Cb2R5Ij48L2Rpdj4KICAgICAgICA8L2Rpdj4K
ICAgIDwvZGl2PgoKICAgIDwhLS0gUmV2aXNpb25zaGlzdG9yaWUgTW9kYWwgLS0+CiAgICA8ZGl2
IGNsYXNzPSJyZXZpc2lvbi1tb2RhbCIgaWQ9InJldmlzaW9uTW9kYWwiIG9uY2xpY2s9ImlmKGV2
ZW50LnRhcmdldD09PXRoaXMpRHJpdmVQb3J0YWwuY2xvc2VSZXZpc2lvbnMoKSI+CiAgICAgICAg
PGRpdiBjbGFzcz0icmV2aXNpb24tY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0i
cmV2aXNpb24tc2lkZWJhciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpc2lvbi1z
aWRlYmFyLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbmVuCiAgICAgICAgICAg
ICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5jbG9zZVJldmlzaW9ucygpIj5T
Y2hsaWXDn2VuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InJldmlzaW9uLWxpc3QiIGlkPSJyZXZpc2lvbkxpc3QiPjwvZGl2PgogICAg
ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmV2aXNpb24tbWFpbiI+CiAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpc2lvbi10b29sYmFyIiBpZD0icmV2aXNpb25U
b29sYmFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlzaW9uLWNvbnRl
bnQiIGlkPSJyZXZpc2lvbkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9
InRleHQtYWxpZ246Y2VudGVyO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NjBw
eDsiPgogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIGF1c3dhZWhsZW4sIHVtIGRlbiBJ
bmhhbHQgYW56dXplaWdlbgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cgog
ICAgPCEtLSBDcm9zc2xpbmsgUG9wb3ZlciAtLT4KICAgIDxkaXYgY2xhc3M9ImNyb3NzbGluay1w
b3BvdmVyIiBpZD0iY3Jvc3NsaW5rUG9wb3ZlciI+PC9kaXY+CgogICAgPCEtLSBBcnRpa2VsLVJl
ZmVyZW56IERyb3Bkb3duICgjLUF1dG9jb21wbGV0ZSkgLS0+CiAgICA8ZGl2IGNsYXNzPSJ4cmVm
LWRyb3Bkb3duIiBpZD0ieHJlZkRyb3Bkb3duIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ4cmVmLXNl
YXJjaCI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ4cmVmU2VhcmNoSW5wdXQiIHBsYWNlaG9sZGVy
PSJBcnRpa2VsIHN1Y2hlbi4uLiIgYXV0b2NvbXBsZXRlPSJvZmYiPjwvZGl2PgogICAgICAgIDxk
aXYgY2xhc3M9InhyZWYtbGlzdCIgaWQ9InhyZWZMaXN0Ij48L2Rpdj4KICAgIDwvZGl2PgoKICAg
IDwhLS0gU2NobGFnd29ydC1WZXJ3YWx0dW5nIE1vZGFsIC0tPgogICAgPGRpdiBjbGFzcz0ia3ct
bWFuYWdlLW1vZGFsIiBpZD0ia3dNYW5hZ2VNb2RhbCIgb25jbGljaz0iaWYoZXZlbnQudGFyZ2V0
PT09dGhpcylEcml2ZUdvdmVybmFuY2UuY2xvc2VLd01hbmFnZSgpIj4KICAgICAgICA8ZGl2IGNs
YXNzPSJrdy1tYW5hZ2UtY29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Imt3LW1hbmFn
ZS1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9Imt3TWFuYWdlVGl0bGUiPlNjaGxh
Z3dvcnQgYmVhcmJlaXRlbjwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxk
aXYgY2xhc3M9Imt3LW1hbmFnZS1ib2R5IiBpZD0ia3dNYW5hZ2VCb2R5Ij48L2Rpdj4KICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ia3ctbWFuYWdlLWZvb3RlciIgaWQ9Imt3TWFuYWdlRm9vdGVyIj48
L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gVG9hc3QgLS0+CiAgICA8
ZGl2IGNsYXNzPSJ0b2FzdCIgaWQ9InRvYXN0Ij48L2Rpdj4KCiAgICA8IS0tIEZvb3RlciAtLT4K
ICAgIDxmb290ZXI+CiAgICAgICAgPHA+RC5SLkkuVi5FLiAtIFBvbGl6ZWkgTlJXIHwgUFAgRG9y
dG11bmQgfCA8Yj48dT5WSTMtSW50ZXJuZXM8L3U+PC9iPiBJbmZvcm1hdGlvbiBDbHVzdGVyPC9w
PgogICAgICAgIDxzcGFuIGlkPSJmb290ZXJSZWFkTW9kZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTtj
b2xvcjojN2ViOGRhO2ZvbnQtc2l6ZToxMnB4O2N1cnNvcjpwb2ludGVyO29wYWNpdHk6MC44OyIg
b25jbGljaz0ic2hvd1JlYWRNb2RlSW5mbygpIiB0aXRsZT0iRHUgYmVmaW5kZXN0IGRpY2ggaW0g
TGVzZW1vZHVzLiBLbGlja2UgaGllciBmw7xyIG1laHIgSW5mb3MuIj5MZXNlbW9kdXM8L3NwYW4+
CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLXJpZ2h0Ij4KICAgICAgICAgICAgPGEgb25jbGlj
az0ic2hvd0hlbHAoKSIgc3R5bGU9ImZvbnQtd2VpZ2h0OjcwMDsiPkhpbGZlPC9hPgogICAgICAg
ICAgICA8YSBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0ltcHJpbnQoKSI+RnJlaWdhYmV2
ZXJhbnR3b3J0bGljaGU8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJmb290ZXItdmVyc2lvbiIg
b25jbGljaz0ic2hvd1ZlcnNpb25IaXN0b3J5KCkiPnYxLjA8L2E+CiAgICAgICAgICAgIDxzcGFu
IGlkPSJmb290ZXJTeW5jU3RhdHVzIiBjbGFzcz0iZm9vdGVyLXN5bmMtc3RhdHVzIj48L3NwYW4+
CiAgICAgICAgPC9kaXY+CiAgICA8L2Zvb3Rlcj4KCiAgICA8IS0tIFZlcnNpb25zaGlzdG9yaWUg
LS0+CiAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLW1vZGFsIiBpZD0idmVyc2lvbk1vZGFsIiBvbmNs
aWNrPSJpZihldmVudC50YXJnZXQ9PT10aGlzKWNsb3NlVmVyc2lvbkhpc3RvcnkoKSI+CiAgICAg
ICAgPGRpdiBjbGFzcz0idmVyc2lvbi1tb2RhbC1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBj
bGFzcz0idmVyc2lvbi1tb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgVmVyc2lvbnNoaXN0
b3JpZQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lvbi1t
b2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24taXRlbSI+CiAg
ICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZlcnNpb24tYmFkZ2UgY3VycmVudCI+djEu
MDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWluZm8iPgog
ICAgICAgICAgICAgICAgICAgICAgICBPZmZpemllbGxlIMOcYmVyZ2FiZSDigJMgTGVzZW1vZHVz
IChpbmRleC5odG1sIGRpcmVrdCDDtmZmbmVuKSwgQWNjb3JkaW9uLSwgRkFRLSB1bmQgVGFiZWxs
ZW4tS29tcG9uZW50ZW4gaW0gRWRpdG9yLCBhdXRvbWF0aXNjaGUgQXJ0aWtlbHZlcnNpb25pZXJ1
bmcsIEFkbWluLUFubGVpdHVuZywgdGVjaG5pc2NoZXIgU3VwcG9ydC1Lb250YWt0CiAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24tZGF0ZSI+TcOkcnogMjAyNjwvZGl2
PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWl0ZW0iPgogICAgICAgICAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52MC45NTwvc3Bhbj4KICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICBT
ZWN1cml0eS1BdWRpdCDigJMgUHLDvGZ1bmcgYWxsZXIgU2ljaGVyaGVpdHNtZWNoYW5pc21lbjog
WFNTLVNjaHV0eiwgUGF0aC1UcmF2ZXJzYWwsIFNTUkYtQmxvY2tpZXJ1bmcsIEFFUy0yNTYtVmVy
c2NobMO8c3NlbHVuZywgU2NocmVpYnNjaHV0eiwgTmV0endlcmstSXNvbGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24tZGF0ZSI+TcOkcnogMjAyNjwvZGl2
PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWl0ZW0iPgogICAgICAgICAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52MC45PC9zcGFuPgogICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InZlcnNpb24taW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIEF1
dG9tYXRpc2NoZSBDcm9zc2xpbmstRXJrZW5udW5nIChBcnRpa2VsdGl0ZWwgdW5kIFNjaGxhZ3fD
tnJ0ZXIgaW0gVGV4dCksIG1hbnVlbGxlIEFydGlrZWxyZWZlcmVuemVuIHZpYSAjLVRhc3RlIG1p
dCDDnGJlcnNjaHJpZnRlbi1BbmtlciwgUmV2aXNpb25zaGlzdG9yaWUgbWl0IERpZmYtQW5zaWNo
dCwgU2NobGFnd29ydC1WZXJ3YWx0dW5nCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9InZlcnNpb24tZGF0ZSI+TcOkcnogMjAyNjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2
ZXJzaW9uLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJh
ZGdlIj52MC44PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24t
aW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIEFibGVobnVuZ3MtV29ya2Zsb3cgbWl0IGtv
bmZpZ3VyaWVyYmFyZXIgQmVncsO8bmR1bmdzcGZsaWNodCwgw7xiZXJhcmJlaXRldGVzIFJldmll
dy1QYW5lbCwgZHVyY2hnw6RuZ2lnZXIgVGFnLS9OYWNodC1Nb2R1cyBmw7xyIGFsbGUgVUktRWxl
bWVudGUKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lvbi1kYXRlIj5N
w6RyeiAyMDI2PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAg
ICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24taXRlbSI+CiAgICAg
ICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZlcnNpb24tYmFkZ2UiPnYwLjc8L3NwYW4+CiAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lvbi1pbmZvIj4KICAgICAgICAgICAg
ICAgICAgICAgICAgR292ZXJuYW5jZS1TeXN0ZW0gbWl0IFJvbGxlbiwgRG9rdW1lbnQtU3BlcnJl
IChMb2NraW5nKSwgQUVTLTI1Ni1WZXJzY2hsw7xzc2VsdW5nLCBTY2hsYWd3w7ZydGVyIG1pdCBB
dXRvY29tcGxldGUsIFRhYmVsbGVuYW5zaWNodCwgRW5nYWdlbWVudC1TdGF0aXN0aWssIEzDtnNj
aC1BdWRpdCBtaXQgMjgtVGFnZS1QYXBpZXJrb3JiCiAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InZlcnNpb24tZGF0ZSI+RmVicnVhciAyMDI2PC9kaXY+CiAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYg
Y2xhc3M9InZlcnNpb24taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZl
cnNpb24tYmFkZ2UiPnYwLjY8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dmVyc2lvbi1pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgRnJlaWdhYmUtV29ya2Zsb3cg
KFN1cGVyVXNlciwgUmV2aWV3ZXIsIEthdGVnb3JpZW4tWnVvcmRudW5nKSwgTWVkaWVuLVVwbG9h
ZCBtaXQgTW9kYWwtVm9yc2NoYXUsIE1pdHdpcmtlbmRlbi1UcmFja2luZyBtaXQgQmVpdHJhZ3Nh
cnRlbgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWRhdGUiPkZl
YnJ1YXIgMjAyNjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWl0ZW0iPgogICAg
ICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52MC41PC9zcGFuPgog
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24taW5mbyI+CiAgICAgICAgICAg
ICAgICAgICAgICAgIFdZU0lXWUctRWRpdG9yIG1pdCBGb3JtYXRpZXJ1bmcgdW5kIFVuZG8vUmVk
bywgUGFzdGUtQmVyZWluaWd1bmcsIFVudGVyYXJ0aWtlbC1TeXN0ZW0sIFN0YXJ0c2VpdGVuLUVk
aXRvciwgSGlsZmUtTW9kYWwKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVy
c2lvbi1kYXRlIj5KYW51YXIgMjAyNjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog
ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9u
LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52
MC40PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24taW5mbyI+
CiAgICAgICAgICAgICAgICAgICAgICAgIFVtYmF1IHp1ciBTaW5nbGUtRmlsZS1BcHAgKGluZGV4
Lmh0bWwpLCBQb3dlclNoZWxsIEhUVFAtU2VydmVyIG1pdCBSRVNULUFQSSwgYXV0b21hdGlzY2hl
ciBCcm93c2VyLVN0YXJ0LCBUYWcvTmFjaHQtTW9kdXMKICAgICAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0idmVyc2lvbi1kYXRlIj5EZXplbWJlciAyMDI1PC9kaXY+CiAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InZlcnNpb24taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9
InZlcnNpb24tYmFkZ2UiPnYwLjM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0idmVyc2lvbi1pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi1Eb2t1bWVudGVu
c3RydWt0dXIgaW4gS2F0ZWdvcmllLU9yZG5lcm4sIDI3IEZhY2hiZXJlaWNoZSwgU3RhdHVzLVN5
c3RlbSAoRW50d3VyZi9QcsO8ZnVuZy9GcmVpZ2VnZWJlbi9BYmdlbGVobnQpCiAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24tZGF0ZSI+Tm92ZW1iZXIgMjAyNTwvZGl2
PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2ZXJzaW9uLWl0ZW0iPgogICAgICAgICAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJ2ZXJzaW9uLWJhZGdlIj52MC4yPC9zcGFuPgogICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9InZlcnNpb24taW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIEtv
bnplcHR2YWxpZGllcnVuZyBhdWYgYmVow7ZyZGxpY2hlbiBXaW5kb3dzLVJlY2huZXJuLCBUZXN0
IGRlciBOZXR6bGF1ZndlcmstS29tcGF0aWJpbGl0w6R0LCBCZW51dHplcmlkZW50aWZpa2F0aW9u
IHZpYSBXaW5kb3dzLVNlc3Npb24KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
dmVyc2lvbi1kYXRlIj5Ob3ZlbWJlciAyMDI1PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9k
aXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InZl
cnNpb24taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InZlcnNpb24tYmFk
Z2UiPnYwLjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lvbi1p
bmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgRXJzdGVyIFByb3RvdHlwIOKAkyBQcm9vZi1v
Zi1Db25jZXB0IGbDvHIgT2ZmbGluZS1Eb2t1bWVudGVudmVyd2FsdHVuZyBvaG5lIERhdGVuYmFu
ayB1bmQgSW50ZXJuZXQKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmVyc2lv
bi1kYXRlIj5Pa3RvYmVyIDIwMjU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg
ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAg
IDwvZGl2PgoKICAgIDwhLS0gRnJlaWdhYmXDvGJlcnNpY2h0IChJbXByZXNzdW0pIC0tPgogICAg
PGRpdiBjbGFzcz0iaW1wcmludC1tb2RhbCIgaWQ9ImltcHJpbnRNb2RhbCIgb25jbGljaz0iaWYo
ZXZlbnQudGFyZ2V0PT09dGhpcylEcml2ZUdvdmVybmFuY2UuY2xvc2VJbXByaW50KCkiPgogICAg
ICAgIDxkaXYgY2xhc3M9ImltcHJpbnQtY29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImltcHJpbnQtaGVhZGVyIj4KICAgICAgICAgICAgICAgIEZyZWlnYWJldmVyYW50d29ydGxpY2hl
CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbXByaW50LWJvZHki
IGlkPSJpbXByaW50Qm9keSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8
IS0tIENvbnRyaWJ1dGlvbiBUeXBlIERpYWxvZyAtLT4KICAgIDxkaXYgY2xhc3M9ImNvbnRyaWIt
ZGlhbG9nIiBpZD0iY29udHJpYkRpYWxvZyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJpYi1k
aWFsb2ctY29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyaWItZGlhbG9nLWhl
YWRlciI+QXJ0IGRlciBCZWFyYmVpdHVuZzwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b250cmliLWRpYWxvZy1ib2R5Ij4KICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tYm90
dG9tOjEycHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7Ij5C
aXR0ZSB3w6RobGUgZGllIEFydCBkZWluZXMgQmVpdHJhZ3M6PC9wPgogICAgICAgICAgICAgICAg
PGJ1dHRvbiBjbGFzcz0iY29udHJpYi10eXBlLWJ0biIgb25jbGljaz0iRHJpdmVFZGl0b3Iuc2V0
Q29udHJpYlR5cGUoJ2F1dG9yJykiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imxh
YmVsIj5BdXRvciAvIEluaGFsdGxpY2hlIEVyc3RlbGx1bmc8L2Rpdj4KICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJkZXNjIj5TaWduaWZpa2FudGUgbmV1ZSBJbmhhbHRlIHZlcmZhc3N0
LCBBYnNjaG5pdHRlIGdlc2NocmllYmVuIG9kZXIgd2VzZW50bGljaGUgRXJnw6RuenVuZ2VuPC9k
aXY+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xh
c3M9ImNvbnRyaWItdHlwZS1idG4iIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNldENvbnRyaWJUeXBl
KCdyZWRha3Rpb24nKSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwiPlJl
ZGFrdGlvbmVsbGUgw5xiZXJhcmJlaXR1bmc8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJkZXNjIj5SZWNodHNjaHJlaWJ1bmcsIEdyYW1tYXRpaywgRm9ybWF0aWVydW5nIG9k
ZXIga2xlaW5lcmUgS29ycmVrdHVyZW48L2Rpdj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgog
ICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY29udHJpYi10eXBlLWJ0biIgb25jbGljaz0i
RHJpdmVFZGl0b3Iuc2V0Q29udHJpYlR5cGUoJ3JldmlldycpIj4KICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJsYWJlbCI+RmFjaGxpY2hlIFByw7xmdW5nIC8gUmV2aWV3PC9kaXY+CiAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzYyI+SW5oYWx0bGljaGUgUHLDvGZ1bmcs
IGZhY2hsaWNoZSBBbm1lcmt1bmdlbiBvZGVyIFF1YWxpdMOkdHNzaWNoZXJ1bmc8L2Rpdj4KICAg
ICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4K
ICAgIDwvZGl2PgoKICAgIDwhLS0gTMO2c2NoLUJlc3TDpHRpZ3VuZyAtLT4KICAgIDxkaXYgY2xh
c3M9ImRlbGV0ZS1jb25maXJtLW1vZGFsIiBpZD0iZGVsZXRlQ29uZmlybU1vZGFsIj4KICAgICAg
ICA8ZGl2IGNsYXNzPSJkZWxldGUtY29uZmlybS1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZGVsZXRlLWNvbmZpcm0taGVhZGVyIj5Eb2t1bWVudCBlbmRnw7xsdGlnIGzDtnNjaGVu
PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlbGV0ZS1jb25maXJtLWJvZHkiPgogICAg
ICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLXRleHQtc2Vj
b25kYXJ5KTttYXJnaW4tYm90dG9tOjhweDsiIGlkPSJkZWxldGVDb25maXJtVGV4dCI+PC9wPgog
ICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQt
c2Vjb25kYXJ5KTttYXJnaW4tYm90dG9tOjEycHg7Ij5HaWIgenVyIEJlc3TDpHRpZ3VuZyBkZWlu
ZSBOVy1LZW5udW5nIGVpbjo8L3A+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIg
aWQ9ImRlbGV0ZUNvbmZpcm1JbnB1dCIgcGxhY2Vob2xkZXI9Ik5XLUtlbm51bmcgZWluZ2ViZW4u
Li4iIGF1dG9jb21wbGV0ZT0ib2ZmIj4KICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNp
emU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tdG9wOjZweDsiPkRhcyBEb2t1
bWVudCB3aXJkIGluIGRlbiBQYXBpZXJrb3JiIHZlcnNjaG9iZW4gdW5kIGlzdCAyOCBUYWdlIHdp
ZWRlcmhlcnN0ZWxsYmFyLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYg
Y2xhc3M9ImRlbGV0ZS1jb25maXJtLWZvb3RlciI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9u
Y2xpY2s9IkRyaXZlUG9ydGFsLmNhbmNlbERlbGV0ZSgpIj5BYmJyZWNoZW48L2J1dHRvbj4KICAg
ICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1kZWxldGUiIGlkPSJkZWxldGVDb25maXJt
QnRuIiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5jb25maXJtRGVsZXRlKCkiIGRpc2FibGVkPkVuZGfD
vGx0aWcgbMO2c2NoZW48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+
CiAgICA8L2Rpdj4KCiAgICA8IS0tIEhpbGZlLU1vZGFsIC0tPgogICAgPGRpdiBjbGFzcz0iaGVs
cC1tb2RhbCIgaWQ9ImhlbHBNb2RhbCIgb25jbGljaz0iaWYoZXZlbnQudGFyZ2V0PT09dGhpcyYm
IWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwQm9keScpLmlzQ29udGVudEVkaXRhYmxlKWNs
b3NlSGVscCgpIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLW1vZGFsLWNvbnRlbnQiIHN0eWxl
PSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgogICAgICAgICAgICA8bmF2IGNsYXNzPSJoZWxwLXRvYyIg
aWQ9ImhlbHBUb2MiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC10b2MtdGl0bGUi
PkhpbGZlICZhbXA7IEFubGVpdHVuZzwvZGl2PgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hl
bHAtc3RhcnQiIGNsYXNzPSJhY3RpdmUiIGRhdGEtc2VjdGlvbj0iaGVscC1zdGFydCI+RXJzdGUg
U2Nocml0dGU8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVscC1jb25uZWN0IiBkYXRh
LXNlY3Rpb249ImhlbHAtY29ubmVjdCI+VmVyYmluZHVuZ3Ntb2RpPC9hPgogICAgICAgICAgICAg
ICAgPGEgaHJlZj0iI2hlbHAtc2VhcmNoIiBkYXRhLXNlY3Rpb249ImhlbHAtc2VhcmNoIj5TdWNo
ZSAmYW1wOyBGaWx0ZXI8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVscC1kb2NzIiBk
YXRhLXNlY3Rpb249ImhlbHAtZG9jcyI+RG9rdW1lbnRlbmxpc3RlPC9hPgogICAgICAgICAgICAg
ICAgPGEgaHJlZj0iI2hlbHAtZGV0YWlsIiBkYXRhLXNlY3Rpb249ImhlbHAtZGV0YWlsIj5EZXRh
aWxhbnNpY2h0PC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hlbHAtdGFibGUiIGRhdGEt
c2VjdGlvbj0iaGVscC10YWJsZSI+VGFiZWxsZW5hbnNpY2h0PC9hPgogICAgICAgICAgICAgICAg
PGEgaHJlZj0iI2hlbHAtZWRpdG9yIiBkYXRhLXNlY3Rpb249ImhlbHAtZWRpdG9yIj5FZGl0b3I8
L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVscC1rZXl3b3JkcyIgY2xhc3M9InN1YiIg
ZGF0YS1zZWN0aW9uPSJoZWxwLWtleXdvcmRzIj5TY2hsYWd3w7ZydGVyPC9hPgogICAgICAgICAg
ICAgICAgPGEgaHJlZj0iI2hlbHAtcGFyZW50IiBjbGFzcz0ic3ViIiBkYXRhLXNlY3Rpb249Imhl
bHAtcGFyZW50Ij5VbnRlcmFydGlrZWw8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVs
cC1tZWRpYSIgY2xhc3M9InN1YiIgZGF0YS1zZWN0aW9uPSJoZWxwLW1lZGlhIj5NZWRpZW4gZWlu
ZsO8Z2VuPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hlbHAtZGVsZXRlIiBkYXRhLXNl
Y3Rpb249ImhlbHAtZGVsZXRlIj5Mw7ZzY2hlbiAmYW1wOyBQYXBpZXJrb3JiPC9hPgogICAgICAg
ICAgICAgICAgPGEgaHJlZj0iI2hlbHAtdGhlbWUiIGRhdGEtc2VjdGlvbj0iaGVscC10aGVtZSI+
VGFnL05hY2h0LU1vZHVzPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hlbHAtc2hvcnRj
dXRzIiBkYXRhLXNlY3Rpb249ImhlbHAtc2hvcnRjdXRzIj5UYXN0ZW5rw7xyemVsPC9hPgogICAg
ICAgICAgICAgICAgPGEgaHJlZj0iI2hlbHAtdmVyc2lvbiIgZGF0YS1zZWN0aW9uPSJoZWxwLXZl
cnNpb24iPlZlcnNpb25zaGlzdG9yaWU8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGVs
cC1jb250YWN0IiBkYXRhLXNlY3Rpb249ImhlbHAtY29udGFjdCI+RnJhZ2VuICZhbXA7IFVudGVy
c3TDvHR6dW5nPC9hPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaGVscC1lZGl0LWJ0
biIgaWQ9ImhlbHBFZGl0QnRuIiBvbmNsaWNrPSJzdGFydEVkaXRIZWxwKCkiPkJlYXJiZWl0ZW48
L2J1dHRvbj4KICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6
MTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmhpZGRlbjsiPgog
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWVkaXQtYmFyIiBpZD0iaGVscEVkaXRCYXIiPgog
ICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5leGVjQ29tbWFuZCgnYm9s
ZCcpIiB0aXRsZT0iRmV0dCI+PGI+QjwvYj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0
b24gb25jbGljaz0iZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2l0YWxpYycpIiB0aXRsZT0iS3Vyc2l2
Ij48aT5JPC9pPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1
bWVudC5leGVjQ29tbWFuZCgndW5kZXJsaW5lJykiIHRpdGxlPSJVbnRlcnN0cmljaGVuIj48dT5V
PC91PjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5l
eGVjQ29tbWFuZCgnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpIj4mYnVsbDs8L2J1dHRvbj4KICAgICAg
ICAgICAgICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydE9y
ZGVyZWRMaXN0JykiPjEuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9
InZhciBoPXByb21wdCgnw5xiZXJzY2hyaWZ0LVRleHQ6Jyk7aWYoaCl7ZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoJ2luc2VydEhUTUwnLCc8aDIgaWQ9JnF1b3Q7aGVscC0nK2gudG9Mb3dlckNhc2UoKS5y
ZXBsYWNlKC9bXmEtejAtOV0vZywnLScpKycmcXVvdDs+JytoKyc8L2gyPicpO30iPkgyPC9idXR0
b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InZhciBoPXByb21wdCgnVW50ZXLD
vGJlcnNjaHJpZnQtVGV4dDonKTtpZihoKXtkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRN
TCcsJzxoMyBpZD0mcXVvdDtoZWxwLScraC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05
XS9nLCctJykrJyZxdW90Oz4nK2grJzwvaDM+Jyk7fSI+SDM8L2J1dHRvbj4KICAgICAgICAgICAg
ICAgIDxidXR0b24gY2xhc3M9ImhlbHAtY2FuY2VsLWJ0biIgb25jbGljaz0iY2FuY2VsRWRpdEhl
bHAoKSI+QWJicmVjaGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJo
ZWxwLXNhdmUtYnRuIiBvbmNsaWNrPSJzYXZlRWRpdEhlbHAoKSI+U3BlaWNoZXJuPC9idXR0b24+
CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWJvZHkiIGlk
PSJoZWxwQm9keSI+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJoZWxwLXN0YXJ0Ij5FcnN0ZSBT
Y2hyaXR0ZTwvaDI+CiAgICAgICAgICAgICAgICA8cD5XaWxsa29tbWVuIGJlaW0gPHN0cm9uZz5E
LlIuSS5WLkUuPC9zdHJvbmc+IFBvcnRhbCDigJMgZGVtIERpZ2l0YWxlbiBSZXNzb3VyY2VuLSB1
bmQgSW5mb3JtYXRpb25zcG9ydGFsIFZlcmtlaHIgZGVzIFBQIERvcnRtdW5kIChWSTMpLjwvcD4K
ICAgICAgICAgICAgICAgIDxwPkRhcyBQb3J0YWwgdmVyd2FsdGV0IERva3VtZW50ZSBvZmZsaW5l
LWbDpGhpZyBpbiBlaW5lbSBsb2thbGVuIE9yZG5lci4gQWxsZSBBcnRpa2VsLCBNZWRpZW4gdW5k
IEtvbmZpZ3VyYXRpb25lbiBsaWVnZW4gYWxzIERhdGVpZW4gdm9yIOKAkyBrZWluIEludGVybmV0
IHVuZCBrZWluZSBEYXRlbmJhbmsgZXJmb3JkZXJsaWNoLjwvcD4KICAgICAgICAgICAgICAgIDxo
Mz5TY2huZWxsc3RhcnQ8L2gzPgogICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAg
ICAgIDxsaT48c3Ryb25nPk51ciBsZXNlbjo8L3N0cm9uZz4gw5ZmZm5lIGRpZSA8Y29kZT5pbmRl
eC5odG1sPC9jb2RlPiBkaXJla3QgaW0gQnJvd3Nlci4gRG9rdW1lbnRlIHdlcmRlbiBhdXRvbWF0
aXNjaCBhdXMgZGVtIDxjb2RlPmRhdGEvPC9jb2RlPi1PcmRuZXIgZ2VsYWRlbi48L2xpPgogICAg
ICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkJlYXJiZWl0ZW4gKFdpbmRvd3MpOjwvc3Ryb25n
PiBTdGFydGUgPGNvZGU+RFJJVkVfU3RhcnQuYmF0PC9jb2RlPiBwZXIgRG9wcGVsa2xpY2suIERl
ciBTZXJ2ZXIgw7ZmZm5ldCBkYXMgUG9ydGFsIGltIEJyb3dzZXIgbWl0IFZvbGx6dWdyaWZmLjwv
bGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC1j
b25uZWN0Ij5WZXJiaW5kdW5nc21vZGk8L2gyPgogICAgICAgICAgICAgICAgPHA+RGFzIFBvcnRh
bCBlcmtlbm50IGF1dG9tYXRpc2NoIGRlbiBiZXN0ZW4gdmVyZsO8Z2JhcmVuIE1vZHVzOjwvcD4K
ICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5TZXJ2
ZXItTW9kdXM8L3N0cm9uZz4gKGdyw7xuZXIgUHVua3QpOiBWb2xsZXIgTGVzZS0gdW5kIFNjaHJl
aWJ6dWdyaWZmIMO8YmVyIDxjb2RlPkRSSVZFX1N0YXJ0LmJhdDwvY29kZT4uIFVudGVyc3TDvHR6
dCBMb2NraW5nIGJlaSBtZWhyZXJlbiBCZW51dHplcm4uPC9saT4KICAgICAgICAgICAgICAgICAg
ICA8bGk+PHN0cm9uZz5MZXNlbW9kdXM8L3N0cm9uZz4gKG9yYW5nZXIgUHVua3QpOiDDlmZmbmUg
ZWluZmFjaCBkaWUgPGNvZGU+aW5kZXguaHRtbDwvY29kZT4gaW0gQnJvd3Nlci4gQWxsZSBmcmVp
Z2VnZWJlbmVuIERva3VtZW50ZSB3ZXJkZW4gYXV0b21hdGlzY2ggYW5nZXplaWd0LjwvbGk+CiAg
ICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPHA+RGVyIGFrdHVlbGxlIFN0YXR1
cyB3aXJkIGluIGRlciBWZXJiaW5kdW5nc2xlaXN0ZSB1bnRlciBkZW0gSGVhZGVyIGFuZ2V6ZWln
dC48L3A+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJoZWxwLXNlYXJjaCI+U3VjaGUgJmFtcDsg
RmlsdGVyPC9oMj4KICAgICAgICAgICAgICAgIDxwPkRpZSBTdGV1ZXJ1bmdzbGVpc3RlIGJpZXRl
dCBtZWhyZXJlIE3DtmdsaWNoa2VpdGVuLCBEb2t1bWVudGUgenUgZmluZGVuOjwvcD4KICAgICAg
ICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5TdWNoZmVsZDo8
L3N0cm9uZz4gRHVyY2hzdWNodCBUaXRlbCwgSW5oYWx0LCBLYXRlZ29yaWUgdW5kIFNjaGxhZ3fD
tnJ0ZXIgaW4gRWNodHplaXQuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5L
YXRlZ29yaWUtRmlsdGVyPC9zdHJvbmc+ICh6d2VpdGUgWmVpbGUpOiBLbGlja2UgYXVmIGVpbmUg
S2F0ZWdvcmllLCB1bSBudXIgZGVyZW4gRG9rdW1lbnRlIGFuenV6ZWlnZW4uIOKAnkFsbGUiIHpl
aWd0IGFsbGVzLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+U3RhdHVzLUZp
bHRlcjo8L3N0cm9uZz4gRmlsdGVydCBuYWNoIERva3VtZW50ZW5zdGF0dXMgKEVudHd1cmYsIFp1
ciBQcsO8ZnVuZywgRnJlaWdlZ2ViZW4pLjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAg
ICAgICAgICAgICAgPHA+QWxsZSBGaWx0ZXIgbGFzc2VuIHNpY2gga29tYmluaWVyZW4uIERpZSBB
bnplaWdlIOKAnlggLyBZIiB6ZWlndCBnZWZpbHRlcnRlIC8gZ2VzYW10ZSBEb2t1bWVudGUuPC9w
PgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC1kb2NzIj5Eb2t1bWVudGVubGlzdGU8L2gy
PgogICAgICAgICAgICAgICAgPHA+RGllIGxpbmtlIFNwYWx0ZSB6ZWlndCBhbGxlIERva3VtZW50
ZSwgZGllIGRlbiBha3R1ZWxsZW4gRmlsdGVybiBlbnRzcHJlY2hlbi48L3A+CiAgICAgICAgICAg
ICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+VGl0ZWw6PC9zdHJvbmc+
IEZldHQgZGFyZ2VzdGVsbHQuIERlciBIaW53ZWlzIOKAnltnZXNwZXJydF0iIHplaWd0IGFuLCBk
YXNzIGVpbiBhbmRlcmVyIEJlbnV0emVyIGRhcyBEb2t1bWVudCBnZXJhZGUgYmVhcmJlaXRldC48
L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPk1ldGFkYXRlbjo8L3N0cm9uZz4g
S2F0ZWdvcmllLUJhZGdlLCBTdGF0dXMtQmFkZ2UgKGZhcmJpZyksIG9wdGlvbmFsIOKAnitNZWRp
ZW4iLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+U2NobGFnd8O2cnRlcjo8
L3N0cm9uZz4gQmlzIHp1IDQgVGFncyB3ZXJkZW4gdW50ZXIgZGVuIE1ldGFkYXRlbiBhbmdlemVp
Z3QuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5VbnRlcmFydGlrZWw6PC9z
dHJvbmc+IFdlcmRlbiBlaW5nZXLDvGNrdCB1bnRlciBpaHJlbSDDnGJlcmFydGlrZWwgZGFyZ2Vz
dGVsbHQgdW5kIG1pdCDigJ7ihrMiIG1hcmtpZXJ0LjwvbGk+CiAgICAgICAgICAgICAgICA8L3Vs
PgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC1kZXRhaWwiPkRldGFpbGFuc2ljaHQ8L2gy
PgogICAgICAgICAgICAgICAgPHA+RGllIHJlY2h0ZSBTcGFsdGUgemVpZ3QgZGVuIGF1c2dld8Ok
aGx0ZW4gQXJ0aWtlbCBtaXQgYWxsZW4gRGV0YWlsczo8L3A+CiAgICAgICAgICAgICAgICA8dWw+
CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+S29wZmJlcmVpY2g6PC9zdHJvbmc+IFRp
dGVsLCBLYXRlZ29yaWUsIFN0YXR1cyAoZmFyYmlnKSwgVmVyc2lvbiwgRXJzdGVsbHVuZ3MtIHVu
ZCDDhG5kZXJ1bmdzZGF0dW0sIEVyc3RlbGxlci9CZWFyYmVpdGVyLjwvbGk+CiAgICAgICAgICAg
ICAgICAgICAgPGxpPjxzdHJvbmc+U2NobGFnd8O2cnRlcjo8L3N0cm9uZz4gQWxsZSBTY2hsYWd3
w7ZydGVyIGFscyBUYWdzLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+w5xi
ZXJhcnRpa2VsIC8gVW50ZXJhcnRpa2VsOjwvc3Ryb25nPiBLbGlja2JhcmUgTGlua3MgenUgdmVy
d2FuZHRlbiBBcnRpa2Vsbi48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPklu
aGFsdDo8L3N0cm9uZz4gRGVyIGZvcm1hdGllcnRlIEFydGlrZWx0ZXh0LjwvbGk+CiAgICAgICAg
ICAgICAgICAgICAgPGxpPjxzdHJvbmc+TWl0d2lya2VuZGU6PC9zdHJvbmc+IEF1Zmxpc3R1bmcg
YWxsZXIgQmVpdHJhZ2VuZGVuIG1pdCBSb2xsZSB1bmQgcHJvemVudHVhbGVtIEFudGVpbC48L2xp
PgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlByw7xmdW5nc3ZlcmxhdWY6PC9zdHJv
bmc+IENocm9ub2xvZ2llIGFsbGVyIEZyZWlnYWJlLS9BYmxlaG51bmdzYWt0aW9uZW4uPC9saT4K
ICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5BbmjDpG5nZTo8L3N0cm9uZz4gTWVkaWVu
IHVuZCBEYXRlaWVuIG1pdCBWb3JzY2hhdS0vRG93bmxvYWQtTcO2Z2xpY2hrZWl0LjwvbGk+CiAg
ICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPGgzPkFrdGlvbnNzY2hhbHRmbMOk
Y2hlbjwvaDM+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxz
dHJvbmc+QmVhcmJlaXRlbjo8L3N0cm9uZz4gw5ZmZm5ldCBkZW4gRWRpdG9yIChTY2hyZWlienVn
cmlmZiBlcmZvcmRlcmxpY2gpLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+
TMO2c2NoZW46PC9zdHJvbmc+IEVudGZlcm50IGRhcyBEb2t1bWVudCBuYWNoIEJlc3TDpHRpZ3Vu
ZyBtaXQgTlctS2VubnVuZy4gR2Vsw7ZzY2h0ZSBEb2t1bWVudGUgc2luZCAyOCBUYWdlIHdpZWRl
cmhlcnN0ZWxsYmFyLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+RnJlaWdl
YmVuIC8gQWJsZWhuZW46PC9zdHJvbmc+IE51ciBiZWkgU3RhdHVzIOKAnlp1ciBQcsO8ZnVuZyIg
dW5kIG1pdCBlbnRzcHJlY2hlbmRlciBCZXJlY2h0aWd1bmcgc2ljaHRiYXIuPC9saT4KICAgICAg
ICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJoZWxwLXRhYmxlIj5UYWJl
bGxlbmFuc2ljaHQ8L2gyPgogICAgICAgICAgICAgICAgPHA+S2xpY2tlIGF1ZiA8c3Ryb25nPuKA
nlRhYmVsbGUiPC9zdHJvbmc+IGluIGRlciBTdGV1ZXJ1bmdzbGVpc3RlLCB1bSBhbGxlIERva3Vt
ZW50ZSBpbiBlaW5lciBzb3J0aWVyYmFyZW4gR2VzYW10w7xiZXJzaWNodCBhbnp1emVpZ2VuLjwv
cD4KICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5T
cGFsdGVuOjwvc3Ryb25nPiBUaXRlbCwgS2F0ZWdvcmllLCBTdGF0dXMsIEVyc3RlbGxlciwgRXJz
dGVsbHQsIEdlw6RuZGVydCwgU2NobGFnd8O2cnRlciwgVmVyc2lvbi48L2xpPgogICAgICAgICAg
ICAgICAgICAgIDxsaT48c3Ryb25nPlNvcnRpZXJ1bmc6PC9zdHJvbmc+IEtsaWNrIGF1ZiBlaW5l
IFNwYWx0ZW7DvGJlcnNjaHJpZnQgc29ydGllcnQgYXVmc3RlaWdlbmQgKOKWsikgYnp3LiBhYnN0
ZWlnZW5kICjilrwpLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+S2xpY2sg
YXVmIGVpbmUgWmVpbGU6PC9zdHJvbmc+IFdlY2hzZWx0IHp1csO8Y2sgenVyIERldGFpbGFuc2lj
aHQgdW5kIHplaWd0IGRhcyBnZXfDpGhsdGUgRG9rdW1lbnQuPC9saT4KICAgICAgICAgICAgICAg
IDwvdWw+CiAgICAgICAgICAgICAgICA8cD5EaWUgVGFiZWxsZSByZXNwZWt0aWVydCBhbGxlIGFr
dGl2ZW4gRmlsdGVyIChLYXRlZ29yaWUsIFN0YXR1cywgU3VjaGUpLjwvcD4KCiAgICAgICAgICAg
ICAgICA8aDIgaWQ9ImhlbHAtZWRpdG9yIj5FZGl0b3I8L2gyPgogICAgICAgICAgICAgICAgPHA+
RGVyIEVkaXRvciDDtmZmbmV0IHNpY2ggYWxzIFZvbGxiaWxkLU92ZXJsYXkgYmVpbSBFcnN0ZWxs
ZW4gb2RlciBCZWFyYmVpdGVuIGVpbmVzIERva3VtZW50cy48L3A+CiAgICAgICAgICAgICAgICA8
aDM+TWV0YWRhdGVuIChvYmVyZSBaZWlsZW4pPC9oMz4KICAgICAgICAgICAgICAgIDx1bD4KICAg
ICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5UaXRlbDo8L3N0cm9uZz4gUGZsaWNodGZlbGQg
4oCTIGRlciBEb2t1bWVudG5hbWUuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9u
Zz5LYXRlZ29yaWU6PC9zdHJvbmc+IEF1c3dhaGwgZGVyIE9iZXJrYXRlZ29yaWUuPC9saT4KICAg
ICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5TdGF0dXM6PC9zdHJvbmc+IEVudHd1cmYsIFp1
ciBQcsO8ZnVuZywgRnJlaWdlZ2ViZW4gKGplIG5hY2ggQmVyZWNodGlndW5nKS48L2xpPgogICAg
ICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlZlcnNpb246PC9zdHJvbmc+IFdpcmQgYXV0b21h
dGlzY2ggYmVyZWNobmV0LiBLbGlja2UgaW4gZGVyIERldGFpbGFuc2ljaHQgYXVmIGRpZSBWZXJz
aW9uc251bW1lciBmw7xyIGVpbmUgRXJrbMOkcnVuZy48L2xpPgogICAgICAgICAgICAgICAgICAg
IDxsaT48c3Ryb25nPsOcYmVyYXJ0aWtlbDo8L3N0cm9uZz4gT3B0aW9uYWwg4oCTIG9yZG5ldCBk
YXMgRG9rdW1lbnQgYWxzIFVudGVyYXJ0aWtlbCBlaW5lbSBiZXN0ZWhlbmRlbiBEb2t1bWVudCB6
dS48L2xpPgogICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8aDM+VmVyc2lv
bmllcnVuZzwvaDM+CiAgICAgICAgICAgICAgICA8cD5EaWUgQXJ0aWtlbHZlcnNpb24gd2lyZCBh
dXRvbWF0aXNjaCBiZWltIFNwZWljaGVybiBiZXJlY2huZXQuIERpZSBaYWhsIDxzdHJvbmc+dm9y
PC9zdHJvbmc+IGRlbSBQdW5rdCB6ZWlndCwgd2llIG9mdCBkZXIgQXJ0aWtlbCBmcmVpZ2VnZWJl
biB3dXJkZS4gRGllIFphaGwgPHN0cm9uZz5uYWNoPC9zdHJvbmc+IGRlbSBQdW5rdCB6ZWlndCBk
aWUgQmVhcmJlaXR1bmdlbiBzZWl0IGRlciBsZXR6dGVuIEZyZWlnYWJlLjwvcD4KICAgICAgICAg
ICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52MC4xLCB2MC4yLCB2
MC4zLCAuLi46PC9zdHJvbmc+IEVudHd1cmZzcGhhc2Ug4oCTIGplZGUgQmVhcmJlaXR1bmcgesOk
aGx0ICswLjE8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPnYxLjA6PC9zdHJv
bmc+IEVyc3RlIEZyZWlnYWJlPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52
MS4xLCB2MS4yLCAuLi46PC9zdHJvbmc+IMOcYmVyYXJiZWl0dW5nZW4gbmFjaCBGcmVpZ2FiZTwv
bGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+djIuMCwgdjMuMCwgLi4uOjwvc3Ry
b25nPiBKZWRlIHdlaXRlcmUgRnJlaWdhYmU8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAg
ICAgICAgICAgICAgIDxwPkJlaXNwaWVsOiA8c3Ryb25nPnYyLjU8L3N0cm9uZz4gYmVkZXV0ZXQ6
IHp3ZWltYWwgZnJlaWdlZ2ViZW4sIGRhbmFjaCA1IEJlYXJiZWl0dW5nZW4uIEtsaWNrZSBpbiBk
ZXIgRGV0YWlsYW5zaWNodCBhdWYgZGllIFZlcnNpb25zbnVtbWVyIGbDvHIgZWluZSBhdXNmw7xo
cmxpY2hlIEVya2zDpHJ1bmcuPC9wPgoKICAgICAgICAgICAgICAgIDxoMyBpZD0iaGVscC1rZXl3
b3JkcyI+U2NobGFnd8O2cnRlcjwvaDM+CiAgICAgICAgICAgICAgICA8cD5TY2hsYWd3w7ZydGVy
IGhlbGZlbiBkYWJlaSwgQXJ0aWtlbCBzY2huZWxsZXIgenUgZmluZGVuIHVuZCB0aGVtYXRpc2No
IHp1IHZlcmtuw7xwZmVuLjwvcD4KICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAg
ICAgICA8bGk+R2liIGVpbiBTY2hsYWd3b3J0IGVpbiB1bmQgZHLDvGNrZSA8a2JkPkVudGVyPC9r
YmQ+IG9kZXIgPGtiZD4sPC9rYmQ+IHp1bSBIaW56dWbDvGdlbi48L2xpPgogICAgICAgICAgICAg
ICAgICAgIDxsaT48c3Ryb25nPkF1dG9jb21wbGV0ZTo8L3N0cm9uZz4gQmVpbSBUaXBwZW4gd2Vy
ZGVuIHBhc3NlbmRlIFNjaGxhZ3fDtnJ0ZXIgYXVzIGFsbGVuIERva3VtZW50ZW4gdm9yZ2VzY2hs
YWdlbi48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlZvcnNjaGzDpGdlOjwv
c3Ryb25nPiBVbnRlcmhhbGIgZGVzIEVpbmdhYmVmZWxkcyB3ZXJkZW4gdGhlbWVudmVyd2FuZHRl
IFNjaGxhZ3fDtnJ0ZXIgYWxzIGtsaWNrYmFyZSBDaGlwcyBhbmdlemVpZ3Qg4oCTIGJhc2llcmVu
ZCBhdWYgS2F0ZWdvcmllLCB2ZXJ3YW5kdGVuIEFydGlrZWxuIHVuZCBiZXJlaXRzIGdlc2V0enRl
biBUYWdzLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPktsaWNrZSBhdWYgPHN0cm9uZz7D
lzwvc3Ryb25nPiBhbiBlaW5lbSBUYWcgenVtIEVudGZlcm5lbiwgb2RlciBkcsO8Y2tlIDxrYmQ+
QmFja3NwYWNlPC9rYmQ+IGJlaSBsZWVyZW0gRWluZ2FiZWZlbGQuPC9saT4KICAgICAgICAgICAg
ICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGgzIGlkPSJoZWxwLXBhcmVudCI+VW50ZXJhcnRp
a2VsPC9oMz4KICAgICAgICAgICAgICAgIDxwPsOcYmVyIGRhcyBEcm9wZG93biDigJ7DnGJlcmFy
dGlrZWwiIGthbm5zdCBkdSBlaW4gRG9rdW1lbnQgYWxzIEVyZ8Okbnp1bmcgZWluZXMgYmVzdGVo
ZW5kZW4gQXJ0aWtlbHMgYW5sZWdlbi48L3A+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAg
ICAgICAgICAgICAgPGxpPlVudGVyYXJ0aWtlbCB3ZXJkZW4gaW4gZGVyIERva3VtZW50ZW5saXN0
ZSBlaW5nZXLDvGNrdCB1bnRlciBpaHJlbSDDnGJlcmFydGlrZWwgYW5nZXplaWd0LjwvbGk+CiAg
ICAgICAgICAgICAgICAgICAgPGxpPkluIGRlciBEZXRhaWxhbnNpY2h0IHdlcmRlbiDDnGJlci0g
dW5kIFVudGVyYXJ0aWtlbCBhbHMga2xpY2tiYXJlIExpbmtzIGRhcmdlc3RlbGx0LjwvbGk+CiAg
ICAgICAgICAgICAgICAgICAgPGxpPlppcmtlbHZlcndlaXNlIHdlcmRlbiBhdXRvbWF0aXNjaCB2
ZXJoaW5kZXJ0LjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxo
MyBpZD0iaGVscC1tZWRpYSI+TWVkaWVuIGVpbmbDvGdlbjwvaDM+CiAgICAgICAgICAgICAgICA8
cD7DnGJlciBkZW4gPHN0cm9uZz5EYXRlaS1CdXR0b248L3N0cm9uZz4gaW4gZGVyIFdlcmt6ZXVn
bGVpc3RlIGthbm5zdCBkdSBEYXRlaWVuIGhvY2hsYWRlbi4gTWVocmZhY2hhdXN3YWhsIGlzdCBt
w7ZnbGljaCDigJMgaGFsdGUgZGF6dSA8a2JkPlN0cmc8L2tiZD4gZ2VkcsO8Y2t0LjwvcD4KCiAg
ICAgICAgICAgICAgICA8aDQ+VW50ZXJzdMO8dHp0ZSBEYXRlaXR5cGVuPC9oND4KICAgICAgICAg
ICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5CaWxkZXI6PC9zdHJv
bmc+IFBORywgSlBHLCBKUEVHLCBHSUYsIFNWRywgV2ViUDwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+UERGLURva3VtZW50ZTo8L3N0cm9uZz4gQWxzIERvd25sb2FkLUxpbmss
IGVpbmdlYmV0dGV0ZSBWb3JzY2hhdSBvZGVyIEFuaGFuZzwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+VmlkZW9zOjwvc3Ryb25nPiBNUDQsIFdlYk08L2xpPgogICAgICAgICAg
ICAgICAgICAgIDxsaT48c3Ryb25nPkF1ZGlvOjwvc3Ryb25nPiBNUDMsIFdBViwgT0dHPC9saT4K
ICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5PZmZpY2UtRG9rdW1lbnRlOjwvc3Ryb25n
PiBXb3JkIChET0NYKSwgRXhjZWwgKFhMU1gpLCBQb3dlclBvaW50IChQUFRYKTwvbGk+CiAgICAg
ICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxoND5XaWUgd2VyZGVuIE1lZGllbiBl
aW5nZWbDvGd0PzwvaDQ+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAg
PGxpPjxzdHJvbmc+RGF0ZWktQnV0dG9uOjwvc3Ryb25nPiDDlmZmbmV0IGRlbiBEYXRlaWRpYWxv
ZyDigJMgZHUga2FubnN0IGVpbmUgb2RlciBtZWhyZXJlIERhdGVpZW4gZ2xlaWNoemVpdGlnIGF1
c3fDpGhsZW48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkVpbmbDvGdlbiBh
dXMgWndpc2NoZW5hYmxhZ2U6PC9zdHJvbmc+IEJpbGRlciBhdXMgU2NyZWVuc2hvdHMgb2RlciBr
b3BpZXJ0ZW4gV2Vic2VpdGVuIHdlcmRlbiBhdXRvbWF0aXNjaCBoZXJ1bnRlcmdlbGFkZW4gdW5k
IGxva2FsIGdlc3BlaWNoZXJ0PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5E
cmFnICZhbXA7IERyb3A6PC9zdHJvbmc+IERhdGVpZW4ga8O2bm5lbiBkaXJla3QgaW4gZGVuIEVk
aXRvciBnZXpvZ2VuIHdlcmRlbjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAg
ICAgICAgIDxoND5EYXJzdGVsbHVuZ3Ntb2RpPC9oND4KICAgICAgICAgICAgICAgIDx1bD4KICAg
ICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5Bbmhhbmc6PC9zdHJvbmc+IERhdGVpIHdpcmQg
dW50ZXJoYWxiIGRlcyBBcnRpa2VscyBhbHMgRG93bmxvYWQtTGluayBhbmdlemVpZ3Q8L2xpPgog
ICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPklubGluZSAoQmlsZCk6PC9zdHJvbmc+IEJp
bGQgd2lyZCBkaXJla3QgaW0gVGV4dCBhbmdlemVpZ3Qg4oCTIGFscyBWb3JzY2hhdWJpbGQgb2Rl
ciBpbiBPcmlnaW5hbGdyw7bDn2UgKG1heC4gNjQww5c0ODAgcHgpPC9saT4KICAgICAgICAgICAg
ICAgICAgICA8bGk+PHN0cm9uZz5QREYtTGluazo8L3N0cm9uZz4gS2xpY2tiYXJlciBMaW5rLCBk
ZXIgZGFzIFBERiBpbiBlaW5lbSBWb3JzY2hhdS1GZW5zdGVyIMO2ZmZuZXQ8L2xpPgogICAgICAg
ICAgICAgICAgICAgIDxsaT48c3Ryb25nPlBERiBlaW5nZWJldHRldDo8L3N0cm9uZz4gUERGIHdp
cmQgYWxzIHNjcm9sbGJhcmVyIFJhaG1lbiBkaXJla3QgaW0gQXJ0aWtlbCBhbmdlemVpZ3Q8L2xp
PgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlZpZGVvL0F1ZGlvL09mZmljZTo8L3N0
cm9uZz4gSWNvbi1FbGVtZW50IGltIFRleHQg4oCTIEtsaWNrIMO2ZmZuZXQgZGllIFZvcnNjaGF1
PC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGg0Pk1lZGllbiBi
ZWFyYmVpdGVuPC9oND4KICAgICAgICAgICAgICAgIDxwPktsaWNrZSBpbSBFZGl0b3IgYXVmIGVp
biBlaW5nZWbDvGd0ZXMgTWVkaXVtLCB1bSBlcyB6dSBiZWFyYmVpdGVuOjwvcD4KICAgICAgICAg
ICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5BdXNyaWNodHVuZzo8
L3N0cm9uZz4gTGlua3MsIE1pdHRpZyBvZGVyIFJlY2h0czwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+VW50ZXJ0aXRlbDo8L3N0cm9uZz4gT3B0aW9uYWxlIEJlc2NocmlmdHVu
ZyB1bnRlciBkZW0gTWVkaXVtPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5F
bnRmZXJuZW46PC9zdHJvbmc+IE1lZGl1bSBhdXMgZGVtIEFydGlrZWwgbMO2c2NoZW4gKGRpZSBE
YXRlaSBibGVpYnQgaW0gTWVkaWVuLU9yZG5lcik8L2xpPgogICAgICAgICAgICAgICAgPC91bD4K
CiAgICAgICAgICAgICAgICA8aDM+V2Vya3pldWdsZWlzdGU8L2gzPgogICAgICAgICAgICAgICAg
PHVsPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlLDvGNrZ8OkbmdpZyAvIFdpZWRl
cmhvbGVuOjwvc3Ryb25nPiDihrYgLyDihrc8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48
c3Ryb25nPlRleHRmb3JtYXRpZXJ1bmc6PC9zdHJvbmc+IEZldHQgKEIpLCBLdXJzaXYgKEkpLCBV
bnRlcnN0cmljaGVuIChVKTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+TGlz
dGVuOjwvc3Ryb25nPiBBdWZ6w6RobHVuZyAo4oCiKSwgTnVtbWVyaWVydGUgTGlzdGUgKDEuKTwv
bGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+U2NocmlmdGdyw7bDn2U6PC9zdHJv
bmc+IDEy4oCTMjAgcHg8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPlRleHRm
YXJiZTo8L3N0cm9uZz4gNiB2b3JkZWZpbmllcnRlIEZhcmJlbjwvbGk+CiAgICAgICAgICAgICAg
ICAgICAgPGxpPjxzdHJvbmc+QWtrb3JkZW9uOjwvc3Ryb25nPiBBdWZrbGFwcGJhcmUgVGV4dGJl
cmVpY2hlIOKAkyBpZGVhbCBmw7xyIGVyZ8OkbnplbmRlIEluZm9ybWF0aW9uZW4sIGRpZSBuaWNo
dCBzb2ZvcnQgc2ljaHRiYXIgc2VpbiBtw7xzc2VuPC9saT4KICAgICAgICAgICAgICAgICAgICA8
bGk+PHN0cm9uZz5GQVE6PC9zdHJvbmc+IEZyYWdlLUFudHdvcnQtQmVyZWljaGUg4oCTIG1laHJl
cmUgRnJhZ2VuIG1pdCBhdXNrbGFwcGJhcmVuIEFudHdvcnRlbiBpbiBlaW5lbSBCbG9jazwvbGk+
CiAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+VGFiZWxsZTo8L3N0cm9uZz4gU29ydGll
cmJhcmUgVGFiZWxsZW4gbWl0IG9wdGlvbmFsZW4gU3BhbHRlbi0gdW5kIFplaWxlbsO8YmVyc2No
cmlmdGVuPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5BcnRpa2VscmVmZXJl
bnogKCMpOjwvc3Ryb25nPiBUaXBwZSA8a2JkPiM8L2tiZD4gaW0gVGV4dCwgdW0gYXVmIGVpbmVu
IGFuZGVyZW4gQXJ0aWtlbCB6dSB2ZXJsaW5rZW4g4oCTIG1pdCDDnGJlcnNjaHJpZnRlbi1BdXN3
YWhsIGFscyBTcHJ1bmd6aWVsPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz5E
YXRlaTo8L3N0cm9uZz4gQmlsZGVyLCBQREZzLCBWaWRlb3MsIEF1ZGlvIHVuZCBPZmZpY2UtRGF0
ZWllbiBob2NobGFkZW4gdW5kIGltIEFydGlrZWwgZWluYmV0dGVuPC9saT4KICAgICAgICAgICAg
ICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGgzPkJlaXRyYWdzYXJ0PC9oMz4KICAgICAgICAg
ICAgICAgIDxwPkJlaW0gU3BlaWNoZXJuIGVpbmVzIGJlc3RlaGVuZGVuIERva3VtZW50cyB3aXJz
dCBkdSBuYWNoIGRlciBBcnQgZGVpbmVzIEJlaXRyYWdzIGdlZnJhZ3Q6PC9wPgogICAgICAgICAg
ICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPkF1dG9yOjwvc3Ryb25n
PiBTaWduaWZpa2FudGUgaW5oYWx0bGljaGUgRXJzdGVsbHVuZy48L2xpPgogICAgICAgICAgICAg
ICAgICAgIDxsaT48c3Ryb25nPlJlZGFrdGlvbjo8L3N0cm9uZz4gUmVjaHRzY2hyZWlidW5nLCBG
b3JtYXRpZXJ1bmcsIGtsZWluZXJlIEtvcnJla3R1cmVuLjwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+UmV2aWV3Ojwvc3Ryb25nPiBGYWNobGljaGUgUHLDvGZ1bmcgdW5kIEFu
bWVya3VuZ2VuLjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPHA+
RGllc2UgQW5nYWJlbiBmbGllw59lbiBpbiBkaWUgTWl0d2lya2VuZGVuLUFuemVpZ2UgaW0gRG9r
dW1lbnQgZWluLjwvcD4KCiAgICAgICAgICAgICAgICA8aDIgaWQ9ImhlbHAtZGVsZXRlIj5Mw7Zz
Y2hlbiAmYW1wOyBQYXBpZXJrb3JiPC9oMj4KICAgICAgICAgICAgICAgIDxwPkJlaW0gTMO2c2No
ZW4gZWluZXMgRG9rdW1lbnRzIHdpcmQgZWluIEJlc3TDpHRpZ3VuZ3NkaWFsb2cgYW5nZXplaWd0
OjwvcD4KICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+RHUgbXVz
c3QgZGVpbmUgPHN0cm9uZz5OVy1LZW5udW5nPC9zdHJvbmc+IHp1ciBJZGVudGlmaWthdGlvbiBl
aW5nZWJlbi48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT5EYXMgTMO2c2NoZXJlaWduaXMg
d2lyZCBwcm90b2tvbGxpZXJ0IChXZXIsIFdhbm4sIFdlbGNoZXMgRG9rdW1lbnQpLjwvbGk+CiAg
ICAgICAgICAgICAgICAgICAgPGxpPkdlbMO2c2NodGUgRG9rdW1lbnRlIHdlcmRlbiBpbiBkZW4g
PHN0cm9uZz5QYXBpZXJrb3JiPC9zdHJvbmc+IHZlcnNjaG9iZW4gdW5kIHNpbmQgPHN0cm9uZz4y
OCBUYWdlPC9zdHJvbmc+IGxhbmcgd2llZGVyaGVyc3RlbGxiYXIuPC9saT4KICAgICAgICAgICAg
ICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8cD5HZWzDtnNjaHRlIERva3VtZW50ZSB3ZXJkZW4g
MjggVGFnZSBpbSBQYXBpZXJrb3JiIGF1ZmJld2FocnQgdW5kIGvDtm5uZW4gaW4gZGllc2VtIFpl
aXRyYXVtIHdpZWRlcmhlcmdlc3RlbGx0IHdlcmRlbi48L3A+CgogICAgICAgICAgICAgICAgPGgy
IGlkPSJoZWxwLXRoZW1lIj5UYWcvTmFjaHQtTW9kdXM8L2gyPgogICAgICAgICAgICAgICAgPHA+
S2xpY2tlIGF1ZiBkZW4gQnV0dG9uIG9iZW4gcmVjaHRzIGltIEhlYWRlciwgdW0gendpc2NoZW4g
aGVsbGVtIHVuZCBkdW5rbGVtIERlc2lnbiB6dSB3ZWNoc2Vsbi48L3A+CiAgICAgICAgICAgICAg
ICA8cD5EZWluZSBBdXN3YWhsIHdpcmQgaW0gQnJvd3NlciBnZXNwZWljaGVydCB1bmQgYmVpbSBu
w6RjaHN0ZW4gQmVzdWNoIGF1dG9tYXRpc2NoIHdpZWRlcmhlcmdlc3RlbGx0LjwvcD4KCiAgICAg
ICAgICAgICAgICA8aDM+RGlhbG9nZmVuc3RlciBzY2hsaWXDn2VuPC9oMz4KICAgICAgICAgICAg
ICAgIDxwPkRpZSBtZWlzdGVuIERpYWxvZ2ZlbnN0ZXIgKEhpbGZlLCBWZXJzaW9uc2hpc3Rvcmll
LCBGcmVpZ2FiZXZlcmFudHdvcnRsaWNoZSkga8O2bm5lbiBkdXJjaCBlaW5lbiBLbGljayBhdWYg
ZGVuIEJlcmVpY2ggYXXDn2VyaGFsYiBkZXMgRGlhbG9ncyBnZXNjaGxvc3NlbiB3ZXJkZW4uIERp
YWxvZ2UgbWl0IEVpbmdhYmVmZWxkZXJuIChFZGl0b3IsIEzDtnNjaGJlc3TDpHRpZ3VuZykgZXJm
b3JkZXJuIGV4cGxpeml0ZXMgU3BlaWNoZXJuIG9kZXIgQWJicmVjaGVuLjwvcD4KCiAgICAgICAg
ICAgICAgICA8aDIgaWQ9ImhlbHAtc2hvcnRjdXRzIj5UYXN0ZW5rw7xyemVsPC9oMj4KICAgICAg
ICAgICAgICAgIDxoMz5JbSBFZGl0b3I8L2gzPgogICAgICAgICAgICAgICAgPHVsPgogICAgICAg
ICAgICAgICAgICAgIDxsaT48a2JkPlN0cmc8L2tiZD4rPGtiZD5aPC9rYmQ+IOKAkyBSw7xja2fD
pG5naWc8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48a2JkPlN0cmc8L2tiZD4rPGtiZD5Z
PC9rYmQ+IC8gPGtiZD5TdHJnPC9rYmQ+KzxrYmQ+U2hpZnQ8L2tiZD4rPGtiZD5aPC9rYmQ+IOKA
kyBXaWVkZXJob2xlbjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAg
PGgzPlNjaGxhZ3fDtnJ0ZXItRWluZ2FiZTwvaDM+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAg
ICAgICAgICAgICAgICAgPGxpPjxrYmQ+RW50ZXI8L2tiZD4gb2RlciA8a2JkPiw8L2tiZD4g4oCT
IFNjaGxhZ3dvcnQgaGluenVmw7xnZW48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48a2Jk
PkJhY2tzcGFjZTwva2JkPiAoYmVpIGxlZXJlbSBGZWxkKSDigJMgTGV0enRlcyBTY2hsYWd3b3J0
IGVudGZlcm5lbjwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPGgz
PkFsbGdlbWVpbjwvaDM+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAg
PGxpPjxrYmQ+RXNjPC9rYmQ+IOKAkyBNZWRpZW4tVm9sbGFuc2ljaHQgc2NobGllw59lbjwvbGk+
CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC12ZXJz
aW9uIj5WZXJzaW9uc2hpc3RvcmllPC9oMj4KICAgICAgICAgICAgICAgIDxwPktsaWNrZSBhdWYg
ZGllIFZlcnNpb25zbnVtbWVyICh6LiBCLiA8c3Ryb25nPnYxLjA8L3N0cm9uZz4pIGltIEZvb3Rl
ciwgdW0gZGllIHZvbGxzdMOkbmRpZ2UgVmVyc2lvbnNoaXN0b3JpZSBhbnp1emVpZ2VuLjwvcD4K
ICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52MS4w
PC9zdHJvbmc+IOKAkyBPZmZpemllbGxlIMOcYmVyZ2FiZTogTGVzZW1vZHVzLCBFZGl0b3ItS29t
cG9uZW50ZW4sIFZlcnNpb25pZXJ1bmcsIEFkbWluLUFubGVpdHVuZzwvbGk+CiAgICAgICAgICAg
ICAgICAgICAgPGxpPjxzdHJvbmc+djAuOTwvc3Ryb25nPiDigJMgQ3Jvc3NsaW5rcywgUmV2aXNp
b25zaGlzdG9yaWUsIFNjaGxhZ3dvcnQtVmVyd2FsdHVuZzwvbGk+CiAgICAgICAgICAgICAgICAg
ICAgPGxpPjxzdHJvbmc+djAuODwvc3Ryb25nPiDigJMgUmV2aWV3LVdvcmtmbG93LCBUYWctL05h
Y2h0LU1vZHVzPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52MC43PC9zdHJv
bmc+IOKAkyBHb3Zlcm5hbmNlLCBMb2NraW5nLCBWZXJzY2hsw7xzc2VsdW5nLCBTdGF0aXN0aWs8
L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48c3Ryb25nPnYwLjY8L3N0cm9uZz4g4oCTIEZy
ZWlnYWJlLVdvcmtmbG93LCBNZWRpZW4tVXBsb2FkPC9saT4KICAgICAgICAgICAgICAgICAgICA8
bGk+PHN0cm9uZz52MC41PC9zdHJvbmc+IOKAkyBXWVNJV1lHLUVkaXRvciwgVW50ZXJhcnRpa2Vs
PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PHN0cm9uZz52MC40PC9zdHJvbmc+IOKAkyBT
aW5nbGUtRmlsZS1BcHAsIFBvd2VyU2hlbGwtU2VydmVyPC9saT4KICAgICAgICAgICAgICAgICAg
ICA8bGk+PHN0cm9uZz52MC4xPC9zdHJvbmc+IOKAkyBFcnN0ZXIgUHJvdG90eXA8L2xpPgogICAg
ICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8aDIgaWQ9ImhlbHAtY29udGFjdCI+
RnJhZ2VuIHVuZCBVbnRlcnN0w7x0enVuZzwvaDI+CiAgICAgICAgICAgICAgICA8cD5CZWkgPHN0
cm9uZz50ZWNobmlzY2hlbiBQcm9ibGVtZW48L3N0cm9uZz4gKEZlaGxlcm1lbGR1bmdlbiwgRGFy
c3RlbGx1bmdzZmVobGVyLCBBYnN0w7xyemUpIHN0ZWh0IGRlciB0ZWNobmlzY2hlIFN1cHBvcnQg
w7xiZXIgZGFzIFZlcndhbHR1bmdzcGFuZWwgenVyIFZlcmbDvGd1bmcuPC9wPgogICAgICAgICAg
ICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6OHB4OyI+QmVpIEZyYWdlbiBydW5kIHVtIGRlbiA8
c3Ryb25nPkVyc3RlbGx1bmdzcHJvemVzcywgRnJlaWdhYmUtV29ya2Zsb3cgb2RlciBpbmhhbHRs
aWNoZSBUaGVtZW48L3N0cm9uZz4gd2VuZGUgZGljaCBiaXR0ZSBhbiBkaWUgZsO8ciBkZWluZSBL
YXRlZ29yaWUgenVzdMOkbmRpZ2VuIDxzdHJvbmc+RnJlaWdhYmV2ZXJhbnR3b3J0bGljaGVuPC9z
dHJvbmc+IG9kZXIgZGllIDxzdHJvbmc+RmFjaGF1ZnNpY2h0PC9zdHJvbmc+LiBEdSBmaW5kZXN0
IGRpZSBadXN0w6RuZGlna2VpdGVuIMO8YmVyIGRlbiBMaW5rIOKAnkZyZWlnYWJldmVyYW50d29y
dGxpY2hlIiBpbSBGb290ZXIuPC9wPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwv
ZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cgo8IS0tIFN0YXRpc2NoZXIgSW5kZXggZnVl
ciBmaWxlOi8vIExlc2Vtb2R1cyAod2lyZCB2b20gU2VydmVyIGF1dG9tYXRpc2NoIGFrdHVhbGlz
aWVydCkgLS0+CjxzY3JpcHQgc3JjPSJkYXRhL2luZGV4LmpzIiBvbmVycm9yPSIiPjwvc2NyaXB0
PgoKPHNjcmlwdD4KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gRC5SLkkuVi5FLiBQb3J0YWwg
djEuMCAtIEtvbXBsZXR0ZSBBcHAtTG9naWsKLy8gRmlsZSBTeXN0ZW0gQWNjZXNzIEFQSSArIEpT
T04tYmFzaWVydGUgRG9rdW1lbnRlbnZlcndhbHR1bmcKLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Ci8vID09PT09PT09PT09PT09PT09PT09PSBUSEVNRSBUT0dHTEUgPT09PT09PT09PT09PT09PT09
PT09CgpmdW5jdGlvbiB0b2dnbGVUaGVtZSgpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk7CiAgICBjb25zdCBu
ZXh0ID0gY3VycmVudCA9PT0gJ25pZ2h0JyA/ICdkYXknIDogJ25pZ2h0JzsKICAgIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnLCBuZXh0KTsKICAgIHRy
eSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkcml2ZS10aGVtZScsIG5leHQpOyB9IGNhdGNoKGUp
IHt9Cn0KCihmdW5jdGlvbiBpbml0VGhlbWUoKSB7CiAgICB2YXIgc2F2ZWQgPSBudWxsOwogICAg
dHJ5IHsgc2F2ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZHJpdmUtdGhlbWUnKTsgfSBjYXRj
aChlKSB7fQogICAgaWYgKHNhdmVkID09PSAnbmlnaHQnKSB7CiAgICAgICAgZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsICduaWdodCcpOwogICAgfQp9
KSgpOwoKLy8gPT09PT09PT09PT09PT09PT09PT09IEhJTEZFLU1PREFMID09PT09PT09PT09PT09
PT09PT09PQoKdmFyIF9oZWxwT3JpZ2luYWxDb250ZW50ID0gJyc7CgpmdW5jdGlvbiBzaG93SGVs
cCgpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwTW9kYWwnKS5jbGFzc0xpc3Qu
YWRkKCdhY3RpdmUnKTsKICAgIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hl
bHBCb2R5Jyk7CiAgICBib2R5LnNjcm9sbFRvcCA9IDA7CiAgICBib2R5LmNvbnRlbnRFZGl0YWJs
ZSA9ICdmYWxzZSc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscEVkaXRCYXInKS5j
bGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgIC8vIEVkaXQtQnV0dG9uIG51ciBmdWVyIFN1
cGVyVXNlciBpbSBTZXJ2ZXItTW9kdXMgYW56ZWlnZW4KICAgIHZhciBlZGl0QnRuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBFZGl0QnRuJyk7CiAgICB2YXIgY2FuRWRpdCA9IGZhbHNl
OwogICAgdHJ5IHsgY2FuRWRpdCA9IERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicgJiYgRHJpdmVH
b3Zlcm5hbmNlLmlzU3VwZXJVc2VyKCk7IH0gY2F0Y2goZSkge30KICAgIGVkaXRCdG4uc3R5bGUu
ZGlzcGxheSA9IGNhbkVkaXQgPyAnYmxvY2snIDogJ25vbmUnOwogICAgX3VwZGF0ZUhlbHBUb2NB
Y3RpdmUoKTsKICAgIGJvZHkub25zY3JvbGwgPSBfdXBkYXRlSGVscFRvY0FjdGl2ZTsKfQoKZnVu
Y3Rpb24gY2xvc2VIZWxwKCkgewogICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaGVscEJvZHknKTsKICAgIGJvZHkuY29udGVudEVkaXRhYmxlID0gJ2ZhbHNlJzsKICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwRWRpdEJhcicpLmNsYXNzTGlzdC5yZW1vdmUoJ2Fj
dGl2ZScpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBNb2RhbCcpLmNsYXNzTGlz
dC5yZW1vdmUoJ2FjdGl2ZScpOwp9CgpmdW5jdGlvbiBzdGFydEVkaXRIZWxwKCkgewogICAgdmFy
IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscEJvZHknKTsKICAgIF9oZWxwT3Jp
Z2luYWxDb250ZW50ID0gYm9keS5pbm5lckhUTUw7CiAgICBib2R5LmNvbnRlbnRFZGl0YWJsZSA9
ICd0cnVlJzsKICAgIGJvZHkuZm9jdXMoKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdo
ZWxwRWRpdEJhcicpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2hlbHBFZGl0QnRuJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKfQoKZnVuY3Rp
b24gY2FuY2VsRWRpdEhlbHAoKSB7CiAgICB2YXIgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdoZWxwQm9keScpOwogICAgYm9keS5pbm5lckhUTUwgPSBfaGVscE9yaWdpbmFsQ29udGVu
dDsKICAgIGJvZHkuY29udGVudEVkaXRhYmxlID0gJ2ZhbHNlJzsKICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdoZWxwRWRpdEJhcicpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBFZGl0QnRuJykuc3R5bGUuZGlzcGxheSA9ICcn
OwogICAgc2hvd1RvYXN0KCdCZWFyYmVpdHVuZyBhYmdlYnJvY2hlbicsICdpbmZvJyk7Cn0KCmZ1
bmN0aW9uIHNhdmVFZGl0SGVscCgpIHsKICAgIHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2hlbHBCb2R5Jyk7CiAgICB2YXIgY29udGVudCA9IGJvZHkuaW5uZXJIVE1MOwogICAg
Ym9keS5jb250ZW50RWRpdGFibGUgPSAnZmFsc2UnOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2hlbHBFZGl0QmFyJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaGVscEVkaXRCdG4nKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAv
LyBQZXJzaXN0aWVyZW4KICAgIERyaXZlR292ZXJuYW5jZS5zYXZlSGVscENvbnRlbnQoKTsKICAg
IC8vIFRPQyBha3R1YWxpc2llcmVuIGJhc2llcmVuZCBhdWYgZGVuIGgyL2gzIElEcwogICAgX3Jl
YnVpbGRIZWxwVG9jKCk7CiAgICBzaG93VG9hc3QoJ0hpbGZlLUluaGFsdCBnZXNwZWljaGVydCcs
ICdzdWNjZXNzJyk7Cn0KCmZ1bmN0aW9uIF9yZWJ1aWxkSGVscFRvYygpIHsKICAgIHZhciBib2R5
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBCb2R5Jyk7CiAgICB2YXIgdG9jID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBUb2MnKTsKICAgIHZhciBoZWFkaW5ncyA9IGJvZHku
cXVlcnlTZWxlY3RvckFsbCgnaDJbaWRdLCBoM1tpZF0nKTsKICAgIHZhciBodG1sID0gJzxkaXYg
Y2xhc3M9ImhlbHAtdG9jLXRpdGxlIj5IaWxmZSAmYW1wOyBBbmxlaXR1bmc8L2Rpdj4nOwogICAg
aGVhZGluZ3MuZm9yRWFjaChmdW5jdGlvbihoKSB7CiAgICAgICAgdmFyIGlzU3ViID0gaC50YWdO
YW1lID09PSAnSDMnOwogICAgICAgIHZhciBzYWZlSWQgPSBoLmlkLnJlcGxhY2UoL1teYS16QS1a
MC05XC1fXS9nLCAnJyk7CiAgICAgICAgaHRtbCArPSAnPGEgaHJlZj0iIycgKyBzYWZlSWQgKyAn
IiBkYXRhLXNlY3Rpb249IicgKyBzYWZlSWQgKyAnIicgKyAoaXNTdWIgPyAnIGNsYXNzPSJzdWIi
JyA6ICcnKSArICc+JyArIGgudGV4dENvbnRlbnQgKyAnPC9hPic7CiAgICB9KTsKICAgIHRvYy5p
bm5lckhUTUwgPSBodG1sOwp9CgpmdW5jdGlvbiBfdXBkYXRlSGVscFRvY0FjdGl2ZSgpIHsKICAg
IHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHBCb2R5Jyk7CiAgICB2YXIg
c2VjdGlvbnMgPSBib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gyW2lkXSwgaDNbaWRdJyk7CiAgICB2
YXIgc2Nyb2xsVG9wID0gYm9keS5zY3JvbGxUb3AgKyA0MDsKICAgIHZhciBhY3RpdmVJZCA9ICcn
OwogICAgc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgaWYgKHMub2Zmc2V0
VG9wIDw9IHNjcm9sbFRvcCkgYWN0aXZlSWQgPSBzLmlkOwogICAgfSk7CiAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCcjaGVscFRvYyBhJykuZm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAg
ICAgYS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCBhLmdldEF0dHJpYnV0ZSgnZGF0YS1zZWN0
aW9uJykgPT09IGFjdGl2ZUlkKTsKICAgIH0pOwp9CgovLyBUT0MtS2xpY2tzOiBzbW9vdGggc2Ny
b2xsIGltIGhlbHAtYm9keQpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0
aW9uKGUpIHsKICAgIHZhciBsaW5rID0gZS50YXJnZXQuY2xvc2VzdCgnI2hlbHBUb2MgYScpOwog
ICAgaWYgKCFsaW5rKSByZXR1cm47CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB2YXIgdGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobGluay5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2Vj
dGlvbicpKTsKICAgIGlmICh0YXJnZXQpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaGVscEJvZHknKS5zY3JvbGxUbyh7IHRvcDogdGFyZ2V0Lm9mZnNldFRvcCAtIDIwLCBiZWhh
dmlvcjogJ3Ntb290aCcgfSk7CiAgICB9Cn0pOwoKLy8gPT09PT09PT09PT09PT09PT09PT09IFZF
UlNJT04gSElTVE9SWSA9PT09PT09PT09PT09PT09PT09PT0KCmZ1bmN0aW9uIHNob3dWZXJzaW9u
SGlzdG9yeSgpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJzaW9uTW9kYWwnKS5j
bGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKfQoKZnVuY3Rpb24gY2xvc2VWZXJzaW9uSGlzdG9yeSgp
IHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJzaW9uTW9kYWwnKS5jbGFzc0xpc3Qu
cmVtb3ZlKCdhY3RpdmUnKTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09IFRPQVNUIE5PVElG
SUNBVElPTlMgPT09PT09PT09PT09PT09PT09PT09CgovLyBEYXR1bS9aZWl0LUZvcm1hdGllcnVu
ZzogSVNPIC0+IGRldXRzY2hlcyBGb3JtYXQKZnVuY3Rpb24gZm9ybWF0RGF0ZShpc29TdHIpIHsK
ICAgIGlmICghaXNvU3RyIHx8IGlzb1N0ciA9PT0gJy0nKSByZXR1cm4gJy0nOwogICAgLy8gIjIw
MjYtMDMtMjYiIG9kZXIgIjIwMjYtMDMtMjZUMTk6MjY6NTIuMDAwWiIKICAgIHZhciBwYXJ0cyA9
IGlzb1N0ci5zcGxpdCgnVCcpWzBdLnNwbGl0KCctJyk7CiAgICBpZiAocGFydHMubGVuZ3RoICE9
PSAzKSByZXR1cm4gaXNvU3RyOwogICAgcmV0dXJuIHBhcnRzWzJdICsgJy4nICsgcGFydHNbMV0g
KyAnLicgKyBwYXJ0c1swXTsKfQpmdW5jdGlvbiBmb3JtYXREYXRlVGltZShpc29TdHIpIHsKICAg
IGlmICghaXNvU3RyIHx8IGlzb1N0ciA9PT0gJy0nKSByZXR1cm4gJy0nOwogICAgdmFyIGQgPSBu
ZXcgRGF0ZShpc29TdHIpOwogICAgaWYgKGlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuIGlzb1N0
cjsKICAgIHJldHVybiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZGUtREUnLCB7ZGF5OicyLWRpZ2l0
Jyxtb250aDonMi1kaWdpdCcseWVhcjonbnVtZXJpYyd9KSArCiAgICAgICAgJyAnICsgZC50b0xv
Y2FsZVRpbWVTdHJpbmcoJ2RlLURFJywge2hvdXI6JzItZGlnaXQnLG1pbnV0ZTonMi1kaWdpdCd9
KTsKfQoKLy8gQXV0b21hdGlzY2hlIEFydGlrZWx2ZXJzaW9uaWVydW5nIChTZW1hbnRpYyBWZXJz
aW9uaW5nKQovLyBNYWpvciA9IEZyZWlnYWJlenlrbGVuICh2MC54ID0gbmllIGZyZWlnZWdlYmVu
LCB2MS54ID0gZWlubWFsLCB2Mi54ID0gendlaW1hbCwgLi4uKQovLyBNaW5vciA9IEJlYXJiZWl0
dW5nZW4gaW5uZXJoYWxiIGVpbmVzIFp5a2x1cyAoKzAuMSBwcm8gU3BlaWNoZXJ1bmcpCi8vIEZy
ZWlnYWJlID0gbmFlY2hzdGUgdm9sbGUgVmVyc2lvbiAodjEuMCwgdjIuMCwgLi4uKQpmdW5jdGlv
biBjYWxjdWxhdGVWZXJzaW9uKGRvYywgb2xkSW5oYWx0LCBuZXdJbmhhbHQsIG5ld1N0YXR1cykg
ewogICAgdmFyIGN1cnJlbnQgPSBwYXJzZVZlcnNpb24oZG9jLnZlcnNpb24pOwoKICAgIC8vIEZy
ZWlnYWJlOiBTcHJ1bmcgYXVmIG5hZWNoc3RlIHZvbGxlIFZlcnNpb24gKG1pbmQuIHYxLjApCiAg
ICAvLyBHaWx0IGF1Y2ggZnVlciBuZXVlIEFydGlrZWwgZGllIGRpcmVrdCBmcmVpZ2VnZWJlbiB3
ZXJkZW4gKHYwLjEgLT4gdjEuMCkKICAgIGlmIChuZXdTdGF0dXMgPT09ICdGcmVpZ2VnZWJlbicg
JiYgZG9jLnN0YXR1cyAhPT0gJ0ZyZWlnZWdlYmVuJykgewogICAgICAgIHJldHVybiAndicgKyBN
YXRoLm1heCgxLCBjdXJyZW50Lm1ham9yICsgMSkgKyAnLjAnOwogICAgfQoKICAgIC8vIE5ldWVz
IERva3VtZW50IChFbnR3dXJmKTogYmxlaWJ0IHYwLjEKICAgIGlmICghZG9jLnZlcnNpb24gfHwg
ZG9jLnZlcnNpb24gPT09ICd2MC4xJykgcmV0dXJuICd2MC4xJzsKCiAgICAvLyBBYmxlaG51bmc6
IFZlcnNpb24gYmxlaWJ0CiAgICBpZiAobmV3U3RhdHVzID09PSAnQWJnZWxlaG50JykgcmV0dXJu
IGRvYy52ZXJzaW9uOwoKICAgIC8vIEluaGFsdCBnZWFlbmRlcnQ6ICswLjEKICAgIGlmIChvbGRJ
bmhhbHQgJiYgbmV3SW5oYWx0ICYmIG9sZEluaGFsdCAhPT0gbmV3SW5oYWx0KSB7CiAgICAgICAg
cmV0dXJuICd2JyArIGN1cnJlbnQubWFqb3IgKyAnLicgKyAoY3VycmVudC5taW5vciArIDEpOwog
ICAgfQoKICAgIHJldHVybiBkb2MudmVyc2lvbjsKfQoKZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHYp
IHsKICAgIGlmICghdikgcmV0dXJuIHsgbWFqb3I6IDAsIG1pbm9yOiAxIH07CiAgICB2YXIgbSA9
IHYucmVwbGFjZSgndicsICcnKS5zcGxpdCgnLicpOwogICAgcmV0dXJuIHsgbWFqb3I6IHBhcnNl
SW50KG1bMF0pIHx8IDAsIG1pbm9yOiBwYXJzZUludChtWzFdKSB8fCAwIH07Cn0KCi8vIFZlcnNp
b25zaW50ZWdyaXRhZXRzcHJ1ZWZ1bmc6IFN0ZWxsdCBzaWNoZXIsIGRhc3MgZGllIFZlcnNpb24g
enVtIFN0YXR1cyBwYXNzdC4KLy8gV2lyZCBiZWltIExhZGVuIGplZGVzIERva3VtZW50cyBhdWZn
ZXJ1ZmVuIHVuZCBrb3JyaWdpZXJ0IElua29uc2lzdGVuemVuLgovLyBSZWdlbG46Ci8vICAgRW50
d3VyZi9QcnVlZnVuZzogdjAueCAobWluZC4gdjAuMSkKLy8gICBGcmVpZ2VnZWJlbjogICAgICB2
MS4wKyAoTWFqb3IgPj0gMSkKLy8gICBBYmdlbGVobnQ6ICAgICAgICB1bnZlcmFlbmRlcnQKLy8g
R2lidCB0cnVlIHp1cnVlY2sgd2VubiBkaWUgVmVyc2lvbiBrb3JyaWdpZXJ0IHd1cmRlLgpmdW5j
dGlvbiBlbnN1cmVDb3JyZWN0VmVyc2lvbihkb2MpIHsKICAgIGlmICghZG9jIHx8ICFkb2Muc3Rh
dHVzKSByZXR1cm4gZmFsc2U7CiAgICB2YXIgdiA9IHBhcnNlVmVyc2lvbihkb2MudmVyc2lvbik7
CiAgICB2YXIgc3RhdHVzID0gZG9jLnN0YXR1czsKICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7Cgog
ICAgaWYgKHN0YXR1cyA9PT0gJ0ZyZWlnZWdlYmVuJyAmJiB2Lm1ham9yIDwgMSkgewogICAgICAg
IC8vIEZyZWlnZWdlYmVuZXIgQXJ0aWtlbCBtdXNzIG1pbmRlc3RlbnMgdjEuMCBzZWluCiAgICAg
ICAgZG9jLnZlcnNpb24gPSAndjEuMCc7CiAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICB9IGVs
c2UgaWYgKChzdGF0dXMgPT09ICdFbnR3dXJmJyB8fCBzdGF0dXMgPT09ICdQcsO8ZnVuZycpICYm
ICFkb2MudmVyc2lvbikgewogICAgICAgIC8vIEVudHd1cmYvUHJ1ZWZ1bmcgb2huZSBWZXJzaW9u
OiB2MC4xCiAgICAgICAgZG9jLnZlcnNpb24gPSAndjAuMSc7CiAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CiAgICB9CgogICAgcmV0dXJuIGNoYW5nZWQ7Cn0KCmZ1bmN0aW9uIHNob3dWZXJzaW9uTG9n
aWMoKSB7CiAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAg
IG1vZGFsLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRo
OjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7ei1pbmRleDoxMDAw
MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7
JzsKICAgIG1vZGFsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGlmIChlLnRhcmdldCA9PT0gbW9k
YWwpIG1vZGFsLnJlbW92ZSgpOyB9OwogICAgbW9kYWwuaW5uZXJIVE1MID0KICAgICAgICAnPGRp
diBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXItcmFkaXVzOjEwcHg7cGFk
ZGluZzoyNHB4IDI4cHg7bWF4LXdpZHRoOjQ4MHB4O3dpZHRoOjkwJTtib3gtc2hhZG93OjAgOHB4
IDMycHggcmdiYSgwLDAsMCwwLjMpOyI+JyArCiAgICAgICAgICAgICc8aDIgc3R5bGU9ImNvbG9y
OnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbToxNHB4O2ZvbnQtc2l6ZToxN3B4OyI+
QXV0b21hdGlzY2hlIFZlcnNpb25pZXJ1bmc8L2gyPicgKwogICAgICAgICAgICAnPHAgc3R5bGU9
ImNvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS43
O21hcmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICAgICAgICAgJ0RpZSBWZXJzaW9uIHpl
aWd0IGRpciBhdWYgZWluZW4gQmxpY2ssIHdpZSBvZnQgZWluIEFydGlrZWwgYmVhcmJlaXRldCB1
bmQgZnJlaWdlZ2ViZW4gd3VyZGUuJyArCiAgICAgICAgICAgICc8L3A+JyArCiAgICAgICAgICAg
ICc8dGFibGUgc3R5bGU9IndpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2ZvbnQt
c2l6ZToxM3B4O21hcmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICAgICAgICAgJzx0ciBz
dHlsZT0iYm9yZGVyLWJvdHRvbToycHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicgKwog
ICAgICAgICAgICAgICAgICAgICc8dGggc3R5bGU9InRleHQtYWxpZ246bGVmdDtwYWRkaW5nOjhw
eDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyI+VmVyc2lvbjwvdGg+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzx0aCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6OHB4O2NvbG9yOnZh
cigtLXRleHQtaGVhZGluZyk7Ij5CZWRldXR1bmc8L3RoPicgKwogICAgICAgICAgICAgICAgJzwv
dHI+JyArCiAgICAgICAgICAgICAgICAnPHRyIHN0eWxlPSJib3JkZXItYm90dG9tOjFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItbGlnaHQpOyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHls
ZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NjAwOyI+djAuMTwvdGQ+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5
KTsiPkVyc3RlciBFbnR3dXJmPC90ZD4nICsKICAgICAgICAgICAgICAgICc8L3RyPicgKwogICAg
ICAgICAgICAgICAgJzx0ciBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9y
ZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQgc3R5bGU9InBhZGRpbmc6
OHB4O2ZvbnQtd2VpZ2h0OjYwMDsiPnYwLjIsIHYwLjMsIC4uLjwvdGQ+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5
KTsiPkplZGUgQmVhcmJlaXR1bmcgaW0gRW50d3VyZjwvdGQ+JyArCiAgICAgICAgICAgICAgICAn
PC90cj4nICsKICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9ImJvcmRlci1ib3R0b206MXB4IHNv
bGlkIHZhcigtLWJvcmRlci1saWdodCk7YmFja2dyb3VuZDp2YXIoLS1iZy1hY3RpdmUpOyI+JyAr
CiAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6
NzAwO2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Ij52MS4wPC90ZD4nICsKICAgICAgICAgICAg
ICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
O2ZvbnQtd2VpZ2h0OjYwMDsiPkVyc3RlIEZyZWlnYWJlPC90ZD4nICsKICAgICAgICAgICAgICAg
ICc8L3RyPicgKwogICAgICAgICAgICAgICAgJzx0ciBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHgg
c29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQg
c3R5bGU9InBhZGRpbmc6OHB4O2ZvbnQtd2VpZ2h0OjYwMDsiPnYxLjEsIHYxLjIsIC4uLjwvdGQ+
JyArCiAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFy
KC0tdGV4dC1wcmltYXJ5KTsiPsOcYmVyYXJiZWl0dW5nZW4gbmFjaCBGcmVpZ2FiZTwvdGQ+JyAr
CiAgICAgICAgICAgICAgICAnPC90cj4nICsKICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9ImJh
Y2tncm91bmQ6dmFyKC0tYmctYWN0aXZlKTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQg
c3R5bGU9InBhZGRpbmc6OHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRp
bmcpOyI+djIuMCwgdjMuMCwgLi4uPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAnPHRkIHN0
eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2ZvbnQtd2VpZ2h0OjYw
MDsiPkplZGUgd2VpdGVyZSBGcmVpZ2FiZTwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPC90cj4n
ICsKICAgICAgICAgICAgJzwvdGFibGU+JyArCiAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1z
aXplOjEzcHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2xpbmUtaGVpZ2h0OjEuNzttYXJn
aW4tYm90dG9tOjZweDsiPicgKwogICAgICAgICAgICAgICAgJzxzdHJvbmc+U28gbGllc3QgZHUg
ZGllIFZlcnNpb246PC9zdHJvbmc+IERpZSBaYWhsIHZvciBkZW0gUHVua3QgemVpZ3QsIHdpZSBv
ZnQgZGVyIEFydGlrZWwgZnJlaWdlZ2ViZW4gd3VyZGUuIERpZSBaYWhsIG5hY2ggZGVtIFB1bmt0
IHplaWd0LCB3aWUgdmllbGUgQmVhcmJlaXR1bmdlbiBzZWl0IGRlciBsZXR6dGVuIEZyZWlnYWJl
IHN0YXR0ZmFuZGVuLicgKwogICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAnPHAgc3R5
bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2xpbmUtaGVpZ2h0OjEu
NjttYXJnaW4tdG9wOjhweDsiPicgKwogICAgICAgICAgICAgICAgJ0JlaXNwaWVsOiA8c3Ryb25n
PnYyLjU8L3N0cm9uZz4gPSB6d2VpbWFsIGZyZWlnZWdlYmVuLCBkYW5hY2ggNSB3ZWl0ZXJlIEJl
YXJiZWl0dW5nZW4uJyArCiAgICAgICAgICAgICc8L3A+JyArCiAgICAgICAgICAgICc8ZGl2IHN0
eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbi10b3A6MTRweDsiPicgKwogICAgICAgICAgICAg
ICAgJzxidXR0b24gb25jbGljaz0idmFyIG09dGhpczt3aGlsZShtLnBhcmVudEVsZW1lbnQhPT1k
b2N1bWVudC5ib2R5KW09bS5wYXJlbnRFbGVtZW50O20ucmVtb3ZlKCk7IiBzdHlsZT0icGFkZGlu
Zzo4cHggMjBweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnZhcigt
LXRleHQtaGVhZGluZyk7Y29sb3I6d2hpdGU7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAw
OyI+VmVyc3RhbmRlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAg
JzwvZGl2Pic7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKfQoKZnVuY3Rp
b24gc2hvd1RvYXN0KG1lc3NhZ2UsIHR5cGUgPSAnaW5mbycsIGR1cmF0aW9uID0gMzAwMCkgewog
ICAgY29uc3QgdG9hc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTsKICAgIHRv
YXN0LnRleHRDb250ZW50ID0gbWVzc2FnZTsKICAgIHRvYXN0LmNsYXNzTmFtZSA9ICd0b2FzdCAn
ICsgdHlwZTsKICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0b2FzdC5jbGFzc0xpc3Qu
YWRkKCdzaG93JykpOwogICAgY2xlYXJUaW1lb3V0KHRvYXN0Ll90aW1lb3V0KTsKICAgIHRvYXN0
Ll90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0b2FzdC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93
JyksIGR1cmF0aW9uKTsKfQoKZnVuY3Rpb24gc2hvd0NvbnRhY3RGb3JtKCkgewogICAgdmFyIGlu
cHV0U3R5bGUgPSAnd2lkdGg6MTAwJTtwYWRkaW5nOjhweCAxMHB4O2JvcmRlcjoxcHggc29saWQg
dmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTRweDtiYWNr
Z3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyc7CiAgICB2
YXIgdXNlcm5hbWUgPSAoRHJpdmVGUy5lbnZpcm9uICYmIERyaXZlRlMuZW52aXJvbi51c2VybmFt
ZSkgPyBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUgOiAnJzsKICAgIHZhciBtb2RhbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9ICdwb3Np
dGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5k
OnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjEwMDAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpj
ZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjsnOwogICAgbW9kYWwub25jbGljayA9IGZ1bmN0
aW9uKGUpIHsgaWYgKGUudGFyZ2V0ID09PSBtb2RhbCkgbW9kYWwucmVtb3ZlKCk7IH07CiAgICBt
b2RhbC5pbm5lckhUTUwgPQogICAgICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJn
LWNhcmQpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjI0cHggMjhweDttYXgtd2lkdGg6NTIw
cHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMyk7Ij4nICsK
ICAgICAgICAgICAgJzxoMiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4t
Ym90dG9tOjRweDtmb250LXNpemU6MTdweDsiPlRlY2huaXNjaGVyIFN1cHBvcnQ8L2gyPicgKwog
ICAgICAgICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZTox
MnB4O21hcmdpbi1ib3R0b206MTRweDsiPkJlaSB0ZWNobmlzY2hlbiBQcm9ibGVtZW4gbWl0IGRl
bSBTeXN0ZW0gKEZlaGxlciwgQWJzdMO8cnplLCBEYXJzdGVsbHVuZ3Nwcm9ibGVtZSkga2FubnN0
IGR1IGhpZXIgZGVuIEVudHdpY2tsZXIga29udGFrdGllcmVuLiBEaWUgTmFjaHJpY2h0IHdpcmQg
w7xiZXIgZGVpbiBFLU1haWwtUHJvZ3JhbW0gZ2VzZW5kZXQuPC9wPicgKwogICAgICAgICAgICAn
PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGxh
YmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4
dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7Ij5CZXRyZWZmPC9s
YWJlbD4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvbnRhY3RT
dWJqZWN0IiBwbGFjZWhvbGRlcj0iV29ydW0gZ2VodCBlcz8iIHN0eWxlPSInICsgaW5wdXRTdHls
ZSArICciIHZhbHVlPSJELlIuSS5WLkUuIOKAkyAiPicgKwogICAgICAgICAgICAnPC9kaXY+JyAr
CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKICAgICAg
ICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtj
b2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjNw
eDsiPk5hY2hyaWNodDwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPHRleHRhcmVhIGlkPSJj
b250YWN0Qm9keSIgcm93cz0iNiIgcGxhY2Vob2xkZXI9IkJlc2NocmVpYmUgZGVpbiBBbmxpZWdl
bi4uLiIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJ3Jlc2l6ZTp2ZXJ0aWNhbDtsaW5lLWhlaWdo
dDoxLjY7Ij48L3RleHRhcmVhPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAg
ICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1l
bmQ7Ij4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9InRoaXMuY2xvc2VzdChc
J2RpdltzdHlsZV1cJykucGFyZW50RWxlbWVudC5yZW1vdmUoKSIgc3R5bGU9InBhZGRpbmc6OHB4
IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29s
b3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtj
dXJzb3I6cG9pbnRlcjsiPkFiYnJlY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxi
dXR0b24gb25jbGljaz0ic2VuZENvbnRhY3RNYWlsKCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4
O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6dmFyKC0tdGV4dC1oZWFk
aW5nKTtjb2xvcjp3aGl0ZTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDA7Ij5BYnNlbmRl
bjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2Pic7CiAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWN0U3ViamVjdCcpLmZvY3VzKCk7
IH0sIDUwKTsKfQoKZnVuY3Rpb24gc2VuZENvbnRhY3RNYWlsKCkgewogICAgdmFyIHN1YmplY3Qg
PSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhY3RTdWJqZWN0JykudmFsdWUgfHwgJycp
LnRyaW0oKTsKICAgIHZhciBib2R5ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWN0
Qm9keScpLnZhbHVlIHx8ICcnKS50cmltKCk7CiAgICBpZiAoIXN1YmplY3QpIHsgc2hvd1RvYXN0
KCdCaXR0ZSBlaW5lbiBCZXRyZWZmIGVpbmdlYmVuJywgJ3dhcm5pbmcnKTsgcmV0dXJuOyB9CiAg
ICBpZiAoIWJvZHkpIHsgc2hvd1RvYXN0KCdCaXR0ZSBlaW5lIE5hY2hyaWNodCBlaW5nZWJlbics
ICd3YXJuaW5nJyk7IHJldHVybjsgfQogICAgdmFyIHVzZXJuYW1lID0gKERyaXZlRlMuZW52aXJv
biAmJiBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUpID8gRHJpdmVGUy5lbnZpcm9uLnVzZXJuYW1l
IDogJ1VuYmVrYW5udCc7CiAgICB2YXIgZnVsbEJvZHkgPSBib2R5ICsgJ1xuXG4tLS1cbkdlc2Vu
ZGV0IGF1cyBELlIuSS5WLkUuIHYxLjBcbkJlbnV0emVyOiAnICsgdXNlcm5hbWU7CiAgICB2YXIg
bWFpbHRvID0gJ21haWx0bzpwaGlsaXBwLnJvZXNnZW5AcG9saXplaS5ucncuZGU/c3ViamVjdD0n
ICsgZW5jb2RlVVJJQ29tcG9uZW50KHN1YmplY3QpICsgJyZib2R5PScgKyBlbmNvZGVVUklDb21w
b25lbnQoZnVsbEJvZHkpOwogICAgLy8gTW9kYWwgKyBPdmVybGF5IHNvZm9ydCBzY2hsaWVzc2Vu
LCBkYW5uIE1haWwtUHJvZ3JhbW0gb2VmZm5lbgogICAgdmFyIGNvbnRhY3RNb2RhbCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWN0U3ViamVjdCcpOwogICAgaWYgKGNvbnRhY3RNb2Rh
bCkgewogICAgICAgIHZhciBvdmVybGF5ID0gY29udGFjdE1vZGFsLmNsb3Nlc3QoJ2RpdltzdHls
ZSo9InBvc2l0aW9uOmZpeGVkIl0nKTsKICAgICAgICBpZiAob3ZlcmxheSkgb3ZlcmxheS5yZW1v
dmUoKTsKICAgIH0KICAgIHNob3dUb2FzdCgnRS1NYWlsLVByb2dyYW1tIHdpcmQgZ2XDtmZmbmV0
Li4uJywgJ3N1Y2Nlc3MnKTsKICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbWFpbHRvOwp9Cgpm
dW5jdGlvbiBzaG93UmVhZE1vZGVJbmZvKCkgewogICAgdmFyIG1vZGFsID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CiAgICBtb2RhbC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZp
eGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6cmdiYSgw
LDAsMCwwLjUpO3otaW5kZXg6MTAwMDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtq
dXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyc7CiAgICBtb2RhbC5vbmNsaWNrID0gZnVuY3Rpb24oZSkg
eyBpZiAoZS50YXJnZXQgPT09IG1vZGFsKSBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG1vZGFs
KTsgfTsKICAgIG1vZGFsLmlubmVySFRNTCA9CiAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91
bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjRweCAyOHB4O21h
eC13aWR0aDo0ODBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCAzMnB4IHJnYmEoMCwwLDAs
MC4zKTsiPicgKwogICAgICAgICAgICAnPGgyIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRp
bmcpO21hcmdpbi1ib3R0b206MTJweDtmb250LXNpemU6MThweDsiPkxlc2Vtb2R1czwvaDI+JyAr
CiAgICAgICAgICAgICc8cCBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtmb250LXNp
emU6MTRweDtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToxMnB4OyI+JyArCiAgICAgICAg
ICAgICAgICAnRHUgYmVmaW5kZXN0IGRpY2ggZ2VyYWRlIGltIDxzdHJvbmc+TGVzZW1vZHVzPC9z
dHJvbmc+LiBIaWVyIGthbm5zdCBkdSBhbGxlIEFydGlrZWwgbGVzZW4sIGR1cmNoc3VjaGVuIHVu
ZCBmaWx0ZXJuIOKAkyBhYmVyIG5pY2h0cyB2ZXLDpG5kZXJuLicgKwogICAgICAgICAgICAnPC9w
PicgKwogICAgICAgICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Zm9u
dC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTZweDsiPicgKwogICAg
ICAgICAgICAgICAgJzxzdHJvbmc+V2VubiBkdSBtaXRhcmJlaXRlbiBtw7ZjaHRlc3QsIGJpc3Qg
ZHUgaGVyemxpY2ggZWluZ2VsYWRlbiE8L3N0cm9uZz4nICsKICAgICAgICAgICAgJzwvcD4nICsK
ICAgICAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2ZvbnQtc2l6
ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHg7Ij4nICsKICAgICAgICAg
ICAgICAgICdTdGFydGUgZGF6dSBlaW5mYWNoIGRhcyBTeXN0ZW0gw7xiZXIgPHN0cm9uZz5EUklW
RV9TdGFydC5iYXQ8L3N0cm9uZz4uPC9icj4nICsKICAgICAgICAgICAgICAgICcoRGllIERhdGVp
IGxpZWd0IGltIFN0YW1tdmVyemVpY2huaXMgdm9uIEQuUi5JLlYuRS4pLicgKwogICAgICAgICAg
ICAnPC9wPicgKwogICAgICAgICAgICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtcHJpbWFy
eSk7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTZweDsiPicg
KwogICAgICAgICAgICAgICAgJ0RhbWl0IMO2ZmZuZXQgc2ljaCBkZXIgdm9sbHN0w6RuZGlnZSBC
ZWFyYmVpdHVuZ3Ntb2R1cywgaW4gZGVtIGR1IEFydGlrZWwgZXJzdGVsbGVuLCBiZWFyYmVpdGVu
IHVuZCBNZWRpZW4gaG9jaGxhZGVuIGthbm5zdC4nICsKICAgICAgICAgICAgJzwvcD4nICsKICAg
ICAgICAgICAgJzxkaXYgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7Ij4nICsKICAgICAgICAgICAg
ICAgICc8YnV0dG9uIG9uY2xpY2s9InZhciBtPXRoaXM7d2hpbGUobS5wYXJlbnRFbGVtZW50IT09
ZG9jdW1lbnQuYm9keSltPW0ucGFyZW50RWxlbWVudDttLnJlbW92ZSgpOyIgc3R5bGU9InBhZGRp
bmc6OHB4IDIwcHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDp2YXIo
LS10ZXh0LWhlYWRpbmcpO2NvbG9yOndoaXRlO2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjYw
MDsiPlZlcnN0YW5kZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAg
ICc8L2Rpdj4nOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7Cn0KCi8vID09
PT09PT09PT09PT09PT09PT09PSBGSUxFIFNZU1RFTSBBQ0NFU1MgQVBJID09PT09PT09PT09PT09
PT09PT09PQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTW9kdWw6IERyaXZlRlMgLSBEYXRl
aXN5c3RlbS1BYnN0cmFrdGlvbnNzY2hpY2h0Ci8vIFp1c3RhZW5kaWcgZnVlcjogTGFkZW4vU3Bl
aWNoZXJuIHZvbiBEb2t1bWVudGVuLCBNZWRpZW4sIEtvbmZpZ3VyYXRpb24KLy8gRGF0ZW5xdWVs
bGVuOiBTZXJ2ZXItQVBJIChwcmltYWVyKSwgc3RhdGlzY2hlIERhdGVpZW4gKEZhbGxiYWNrKSwg
RmlsZSBTeXN0ZW0gQWNjZXNzIEFQSQovLyBTaWNoZXJoZWl0OiBQZmFkdmFsaWRpZXJ1bmcgdmlh
IHNhbml0aXplRmlsZW5hbWUoKSArIHNlcnZlcnNlaXRpZ2UgUmVzb2x2ZS1TYWZlUGF0aCgpCi8v
ICAgICAgICAgICAgIENsaWVudC1zZWl0aWdlIFZhbGlkaWVydW5nIGlzdCBFcmdhZW56dW5nLCBu
aWNodCBFcnNhdHogZnVlciBzZXJ2ZXJzZWl0aWdlIFBydWVmdW5nLgovLyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpjb25zdCBEcml2ZUZTID0gewogICAgbW9kZTogbnVsbCwgICAgICAgICAgICAgLy8g
J3NlcnZlcicgb2RlciAnZmlsZXN5c3RlbScKICAgIGNvbm5lY3RlZDogZmFsc2UsCiAgICByZWFk
T25seTogdHJ1ZSwgICAgICAgICAvLyBTdGFydGV0IGltbWVyIGltIE51ci1MZXNlbi1Nb2R1cwog
ICAgY29uZmlnOiBudWxsLAogICAgX2lkYk5hbWU6ICdEcml2ZVBvcnRhbCcsCiAgICBfaWRiU3Rv
cmU6ICdoYW5kbGVzJywKICAgIGRvY3VtZW50czogW10sCiAgICBpbmRleDogbnVsbCwKICAgIGZp
bGVUaW1lc3RhbXBzOiB7fSwgICAgIC8vIGRvY0lkIC0+IHsgbW9kaWZpZWQsIGthdGVnb3JpZSwg
ZmlsZW5hbWUsIHBhdGggfQogICAgc3luY0ludGVydmFsOiBudWxsLAogICAgZW52aXJvbjogbnVs
bCwKCiAgICAvLyAtLS0gSW5kZXhlZERCOiBPcmRuZXItSGFuZGxlIHNwZWljaGVybi9sYWRlbiAt
LS0KICAgIF9vcGVuSURCKCkgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHJlcSA9IGluZGV4ZWREQi5vcGVuKHRoaXMu
X2lkYk5hbWUsIDEpOwogICAgICAgICAgICByZXEub251cGdyYWRlbmVlZGVkID0gKCkgPT4gcmVx
LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLl9pZGJTdG9yZSk7CiAgICAgICAgICAgIHJl
cS5vbnN1Y2Nlc3MgPSAoKSA9PiByZXNvbHZlKHJlcS5yZXN1bHQpOwogICAgICAgICAgICByZXEu
b25lcnJvciA9ICgpID0+IHJlamVjdChyZXEuZXJyb3IpOwogICAgICAgIH0pOwogICAgfSwKCiAg
ICBhc3luYyBfc2F2ZUhhbmRsZShkaXJIYW5kbGUpIHsKICAgICAgICB0cnkgewogICAgICAgICAg
ICBjb25zdCBkYiA9IGF3YWl0IHRoaXMuX29wZW5JREIoKTsKICAgICAgICAgICAgY29uc3QgdHgg
PSBkYi50cmFuc2FjdGlvbih0aGlzLl9pZGJTdG9yZSwgJ3JlYWR3cml0ZScpOwogICAgICAgICAg
ICB0eC5vYmplY3RTdG9yZSh0aGlzLl9pZGJTdG9yZSkucHV0KGRpckhhbmRsZSwgJ3Jvb3REaXIn
KTsKICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7IHR4Lm9uY29t
cGxldGUgPSByZXM7IHR4Lm9uZXJyb3IgPSByZWo7IH0pOwogICAgICAgICAgICBkYi5jbG9zZSgp
OwogICAgICAgIH0gY2F0Y2gge30KICAgIH0sCgogICAgYXN5bmMgX2xvYWRIYW5kbGUoKSB7CiAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLl9vcGVuSURCKCk7
CiAgICAgICAgICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24odGhpcy5faWRiU3RvcmUsICdy
ZWFkb25seScpOwogICAgICAgICAgICBjb25zdCByZXEgPSB0eC5vYmplY3RTdG9yZSh0aGlzLl9p
ZGJTdG9yZSkuZ2V0KCdyb290RGlyJyk7CiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGF3YWl0
IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4geyByZXEub25zdWNjZXNzID0gKCkgPT4gcmVzKHJl
cS5yZXN1bHQpOyByZXEub25lcnJvciA9IHJlajsgfSk7CiAgICAgICAgICAgIGRiLmNsb3NlKCk7
CiAgICAgICAgICAgIHJldHVybiBoYW5kbGUgfHwgbnVsbDsKICAgICAgICB9IGNhdGNoIHsgcmV0
dXJuIG51bGw7IH0KICAgIH0sCgogICAgLy8gLS0tIEhpbGZzZnVua3Rpb25lbiAtLS0KICAgICAg
ICAvLyBEYXRlaW5hbWVuLUJlcmVpbmlndW5nOiBFbnRmZXJudCBTb25kZXJ6ZWljaGVuLCBlcnNl
dHp0IFVtbGF1dGUsIG5vcm1hbGlzaWVydCBMZWVyemVpY2hlbi4KICAgICAgICAvLyBWZXJoaW5k
ZXJ0IGNsaWVudC1zZWl0aWcgUGF0aC1UcmF2ZXJzYWwgKC4uLykgdW5kIHVuZ3VlbHRpZ2UgRGF0
ZWluYW1lbi4KICAgICAgICAvLyBTZXJ2ZXJzZWl0aWcgd2lyZCB6dXNhZXR6bGljaCBSZXNvbHZl
LVNhZmVQYXRoKCkgLyByZXNvbHZlX3NhZmVfcGF0aCgpIGF1ZmdlcnVmZW4uCiAgICBzYW5pdGl6
ZUZpbGVuYW1lKHRpdGVsKSB7CiAgICAgICAgcmV0dXJuIHRpdGVsCiAgICAgICAgICAgIC5yZXBs
YWNlKC9cdTAwZTQvZywgJ2FlJykucmVwbGFjZSgvXHUwMGY2L2csICdvZScpLnJlcGxhY2UoL1x1
MDBmYy9nLCAndWUnKQogICAgICAgICAgICAucmVwbGFjZSgvXHUwMGM0L2csICdBZScpLnJlcGxh
Y2UoL1x1MDBkNi9nLCAnT2UnKS5yZXBsYWNlKC9cdTAwZGMvZywgJ1VlJykKICAgICAgICAgICAg
LnJlcGxhY2UoL1x1MDBkZi9nLCAnc3MnKQogICAgICAgICAgICAucmVwbGFjZSgvW1xzXSsvZywg
J18nKQogICAgICAgICAgICAucmVwbGFjZSgvW15hLXpBLVowLTlfXC1dL2csICcnKQogICAgICAg
ICAgICAucmVwbGFjZSgvXysvZywgJ18nKQogICAgICAgICAgICAucmVwbGFjZSgvXl98XyQvZywg
JycpOwogICAgfSwKCiAgICBkb2NGaWxlbmFtZShkb2MpIHsKICAgICAgICByZXR1cm4gZG9jLmlk
ICsgJ18nICsgdGhpcy5zYW5pdGl6ZUZpbGVuYW1lKGRvYy50aXRlbCkgKyAnLmpzb24nOwogICAg
fSwKCiAgICBkb2NQYXRoKGRvYykgewogICAgICAgIHJldHVybiAnZGF0YS8nICsgZG9jLmthdGVn
b3JpZSArICcvJyArIHRoaXMuZG9jRmlsZW5hbWUoZG9jKTsKICAgIH0sCgogICAgZ2VuZXJhdGVJ
ZCgpIHsKICAgICAgICBsZXQgbWF4TnVtID0gMDsKICAgICAgICB0aGlzLmRvY3VtZW50cy5mb3JF
YWNoKGRvYyA9PiB7CiAgICAgICAgICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KGRvYy5pZC5yZXBs
YWNlKCdEJywgJycpLCAxMCk7CiAgICAgICAgICAgIGlmIChudW0gPiBtYXhOdW0pIG1heE51bSA9
IG51bTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gJ0QnICsgU3RyaW5nKG1heE51bSArIDEp
LnBhZFN0YXJ0KDMsICcwJyk7CiAgICB9LAoKICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBDT05ORUNU
IC0gU3R1ZmVuOiAxLiBTZXJ2ZXIgKHZvbGwpLCAyLiBGaWxlc3lzdGVtIGxlc2VuZCwgMy4gSGlu
d2VpcwogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KCiAgICBhc3luYyBjb25uZWN0KHVzZXJJbml0aWF0ZWQpIHsK
ICAgICAgICAvLyAxLiBWZXJzdWNoZSBTZXJ2ZXItTW9kdXMgKERSSVZFX1N0YXJ0LmJhdCAvIHNl
cnZlci5wczEpCiAgICAgICAgaWYgKGF3YWl0IHRoaXMudHJ5U2VydmVyQ29ubmVjdCgpKSByZXR1
cm47CgogICAgICAgIC8vIDIuIFZlcnN1Y2hlIHN0YXRpc2NoZW4gTW9kdXMgKGRhdGEvIE9yZG5l
ciByZWxhdGl2IHp1ciBIVE1MLURhdGVpKQogICAgICAgIGlmIChhd2FpdCB0aGlzLnRyeVN0YXRp
Y0Nvbm5lY3QoKSkgcmV0dXJuOwoKICAgICAgICAvLyAzLiBWZXJzdWNoZSBnZXNwZWljaGVydGVu
IE9yZG5lci1IYW5kbGUgKGF1dG8tcmVjb25uZWN0KQogICAgICAgIGlmICh3aW5kb3cuc2hvd0Rp
cmVjdG9yeVBpY2tlcikgewogICAgICAgICAgICBpZiAoYXdhaXQgdGhpcy50cnlBdXRvUmVjb25u
ZWN0KHVzZXJJbml0aWF0ZWQpKSByZXR1cm47CiAgICAgICAgICAgIGlmICh1c2VySW5pdGlhdGVk
KSB7CiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbm5lY3RGaWxlc3lzdGVtKCdyZWFkJyk7
CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAg
IC8vIDQuIEtlaW4gTW9kdXMgdmVyZnVlZ2JhciDigJMgV2lsbGtvbW1lbnNzZWl0ZSBtaXQgSGlu
d2VpcyBhbnplaWdlbgogICAgICAgIGNvbnN0IGhpbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnd2VsY29tZUNvbm5lY3RIaW50Jyk7CiAgICAgICAgaWYgKGhpbnQpIGhpbnQuc3R5bGUuZGlz
cGxheSA9ICcnOwogICAgICAgIHRoaXMudXBkYXRlQ29ubmVjdGlvblVJKCk7CiAgICB9LAoKICAg
IGFzeW5jIHRyeVN0YXRpY0Nvbm5lY3QoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8g
RFJJVkVfU1RBVElDX0lOREVYIHdpcmQgdmlhIDxzY3JpcHQgc3JjPSJkYXRhL2luZGV4LmpzIj4g
Z2VsYWRlbgogICAgICAgICAgICAvLyB1bmQgZW50aGFlbHQgQUxMRSBEb2t1bWVudGUgKyBDb25m
aWcgKGZ1bmt0aW9uaWVydCBiZWkgZmlsZTovLykKICAgICAgICAgICAgaWYgKHR5cGVvZiBEUklW
RV9TVEFUSUNfSU5ERVggPT09ICd1bmRlZmluZWQnIHx8ICFEUklWRV9TVEFUSUNfSU5ERVgpIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgdmFyIGRhdGEgPSBEUklWRV9TVEFUSUNfSU5ERVg7CiAg
ICAgICAgICAgIGlmICghZGF0YS5kb2N1bWVudHMgfHwgZGF0YS5kb2N1bWVudHMubGVuZ3RoID09
PSAwKSByZXR1cm4gZmFsc2U7CgogICAgICAgICAgICB0aGlzLm1vZGUgPSAnc3RhdGljJzsKICAg
ICAgICAgICAgdGhpcy5yZWFkT25seSA9IHRydWU7CiAgICAgICAgICAgIHRoaXMuaW5kZXggPSBk
YXRhOwoKICAgICAgICAgICAgLy8gQ29uZmlnIGF1cyBlaW5nZWJldHRldGVuIERhdGVuIG9kZXIg
RmFsbGJhY2sKICAgICAgICAgICAgaWYgKGRhdGEuY29uZmlnKSB7CiAgICAgICAgICAgICAgICB0
aGlzLmNvbmZpZyA9IGRhdGEuY29uZmlnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgdmFyIGNhdHMgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICAgICBkYXRhLmRvY3VtZW50
cy5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsgaWYgKGQua2F0ZWdvcmllKSBjYXRzLmFkZChkLmthdGVn
b3JpZSk7IH0pOwogICAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB7IGthdGVnb3JpZW46IFsu
Li5jYXRzXS5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIsICdk
ZScpOyB9KSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBEb2t1bWVudGUgZGlyZWt0
IGF1cyBkZW4gZWluZ2ViZXR0ZXRlbiBEYXRlbiBsYWRlbgogICAgICAgICAgICAvLyBJbSBMZXNl
bW9kdXM6IE5VUiBmcmVpZ2VnZWJlbmUgRG9rdW1lbnRlIGFuemVpZ2VuCiAgICAgICAgICAgIHRo
aXMuZG9jdW1lbnRzID0gW107CiAgICAgICAgICAgIHRoaXMuZmlsZVRpbWVzdGFtcHMgPSB7fTsK
ICAgICAgICAgICAgZGF0YS5kb2N1bWVudHMuZm9yRWFjaChmdW5jdGlvbihkb2MpIHsKICAgICAg
ICAgICAgICAgIGlmIChkb2Muc3RhdHVzICE9PSAnRnJlaWdlZ2ViZW4nKSByZXR1cm47CiAgICAg
ICAgICAgICAgICBlbnN1cmVDb3JyZWN0VmVyc2lvbihkb2MpOwogICAgICAgICAgICAgICAgRHJp
dmVGUy5kb2N1bWVudHMucHVzaChkb2MpOwogICAgICAgICAgICAgICAgRHJpdmVGUy5maWxlVGlt
ZXN0YW1wc1tkb2MuaWRdID0gewogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkOiBkb2MuZ2Vh
ZW5kZXJ0IHx8IGRvYy5lcnN0ZWxsdCwKICAgICAgICAgICAgICAgICAgICBrYXRlZ29yaWU6IGRv
Yy5rYXRlZ29yaWUsCiAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IGRvYy5pZCArICcuanNv
bicsCiAgICAgICAgICAgICAgICAgICAgcGF0aDogJ2RhdGEvJyArIGRvYy5rYXRlZ29yaWUgKyAn
LycgKyBkb2MuaWQgKyAnLmpzb24nCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgdGhpcy5kb2N1bWVudHMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAo
Yi5lcnN0ZWxsdCB8fCAnJykubG9jYWxlQ29tcGFyZShhLmVyc3RlbGx0IHx8ICcnKTsgfSk7Cgog
ICAgICAgICAgICB0aGlzLmNvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgICAgIHRoaXMuZW52aXJv
biA9IHsgdXNlcm5hbWU6ICdMZXNlcicsIGNvbXB1dGVybmFtZTogJy0nIH07CiAgICAgICAgICAg
IHRoaXMudXBkYXRlQ29ubmVjdGlvblVJKCk7CiAgICAgICAgICAgIGF3YWl0IERyaXZlR292ZXJu
YW5jZS5sb2FkKCk7CgogICAgICAgICAgICAvLyBTdGFydHNlaXRlIGF1cyBlaW5nZWJldHRldGVu
IERhdGVuIGxhZGVuCiAgICAgICAgICAgIGlmIChkYXRhLnN0YXJ0c2VpdGUpIHsKICAgICAgICAg
ICAgICAgIHZhciB3ZWxjb21lRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcud2VsY29tZS1j
b250ZW50Jyk7CiAgICAgICAgICAgICAgICBpZiAod2VsY29tZUVsKSB3ZWxjb21lRWwuaW5uZXJI
VE1MID0gRHJpdmVQb3J0YWwuc2FuaXRpemVIVE1MKGRhdGEuc3RhcnRzZWl0ZSk7CiAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgIERyaXZlUG9ydGFsLmluaXQoKTsKICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgfSBjYXRjaChlKSB7IGNvbnNvbGUud2FybignU3RhdGljIGNvbm5lY3Q6
JywgZSk7IHJldHVybiBmYWxzZTsgfQogICAgfSwKCiAgICBhc3luYyB0cnlBdXRvUmVjb25uZWN0
KHVzZXJJbml0aWF0ZWQpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBzdG9yZWQg
PSBhd2FpdCB0aGlzLl9sb2FkSGFuZGxlKCk7CiAgICAgICAgICAgIGlmICghc3RvcmVkKSByZXR1
cm4gZmFsc2U7CgogICAgICAgICAgICAvLyBQcnVlZmVuIG9iIEJlcmVjaHRpZ3VuZyBub2NoIGFr
dGl2CiAgICAgICAgICAgIGxldCBwZXJtID0gYXdhaXQgc3RvcmVkLnF1ZXJ5UGVybWlzc2lvbih7
IG1vZGU6ICdyZWFkJyB9KTsKICAgICAgICAgICAgaWYgKHBlcm0gPT09ICdwcm9tcHQnICYmIHVz
ZXJJbml0aWF0ZWQpIHsKICAgICAgICAgICAgICAgIC8vIEJlaSBVc2VyLUtsaWNrOiBlaW5mYWNo
ZW4gRXJsYXViZW4tRGlhbG9nIHplaWdlbiAoa2VpbiBQaWNrZXIpCiAgICAgICAgICAgICAgICBw
ZXJtID0gYXdhaXQgc3RvcmVkLnJlcXVlc3RQZXJtaXNzaW9uKHsgbW9kZTogJ3JlYWQnIH0pOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChwZXJtICE9PSAnZ3JhbnRlZCcpIHJldHVybiBm
YWxzZTsKCiAgICAgICAgICAgIC8vIGRhdGEtVW50ZXJvcmRuZXIgYmVzdGltbWVuIChnZXNwZWlj
aGVydGVyIEhhbmRsZSBrYW5uIFJvb3Qgb2RlciBkYXRhIHNlaW4pCiAgICAgICAgICAgIGxldCBk
YXRhSGFuZGxlLCBtZWRpYUhhbmRsZSA9IG51bGwsIHJvb3RIYW5kbGUgPSBzdG9yZWQ7CiAgICAg
ICAgICAgIGlmIChzdG9yZWQubmFtZSA9PT0gJ2RhdGEnKSB7CiAgICAgICAgICAgICAgICAvLyBV
c2VyIGhhdHRlICJkYXRhIiBkaXJla3QgZ2V3YWVobHQKICAgICAgICAgICAgICAgIGRhdGFIYW5k
bGUgPSBzdG9yZWQ7CiAgICAgICAgICAgICAgICAvLyBNZWRpYSBsaWVndCBlaW5lIEViZW5lIGhv
ZWhlciAtIG5pY2h0IHZlcmZ1ZWdiYXIKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIGRhdGFIYW5kbGUgPSBhd2FpdCBzdG9yZWQuZ2V0RGlyZWN0b3J5SGFuZGxlKCdkYXRhJyk7
CiAgICAgICAgICAgICAgICB0cnkgeyBtZWRpYUhhbmRsZSA9IGF3YWl0IHN0b3JlZC5nZXREaXJl
Y3RvcnlIYW5kbGUoJ21lZGlhJyk7IH0gY2F0Y2gge30KICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgLy8gQWxsZXMgb2sgLSB2ZXJiaW5kZW4KICAgICAgICAgICAgdGhpcy5tb2RlID0gJ2ZpbGVz
eXN0ZW0nOwogICAgICAgICAgICB0aGlzLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICAgICAgICAgdGhp
cy5fZGlySGFuZGxlID0gcm9vdEhhbmRsZTsKICAgICAgICAgICAgdGhpcy5fZGF0YUhhbmRsZSA9
IGRhdGFIYW5kbGU7CiAgICAgICAgICAgIHRoaXMuX21lZGlhSGFuZGxlID0gbWVkaWFIYW5kbGU7
CiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEVudmlyb24oKTsKICAgICAgICAgICAgYXdhaXQg
dGhpcy5sb2FkQ29uZmlnKCk7CiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEFsbERvY3VtZW50
cygpOwogICAgICAgICAgICB0aGlzLmNvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgICAgIHRoaXMu
dXBkYXRlQ29ubmVjdGlvblVJKCk7CiAgICAgICAgICAgIGF3YWl0IERyaXZlR292ZXJuYW5jZS5s
b2FkKCk7CiAgICAgICAgICAgIERyaXZlUG9ydGFsLmluaXQoKTsKICAgICAgICAgICAgc2hvd1Rv
YXN0KCdPcmRuZXIgYXV0b21hdGlzY2ggdmVyYnVuZGVuIChOdXItTGVzZW4pJywgJ3N1Y2Nlc3Mn
KTsKICAgICAgICAgICAgdGhpcy5zdGFydFN5bmMoKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgfSBjYXRjaCB7IHJldHVybiBmYWxzZTsgfQogICAgfSwKCiAgICBhc3luYyB0cnlT
ZXJ2ZXJDb25uZWN0KCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHNjYW5SZXMg
PSBhd2FpdCBmZXRjaCgnL2FwaS9zY2FuJyk7CiAgICAgICAgICAgIGlmIChzY2FuUmVzLm9rKSB7
CiAgICAgICAgICAgICAgICB0aGlzLm1vZGUgPSAnc2VydmVyJzsKICAgICAgICAgICAgICAgIHRo
aXMucmVhZE9ubHkgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEVudmly
b24oKTsKICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZENvbmZpZygpOwogICAgICAgICAg
ICAgICAgYXdhaXQgdGhpcy5sb2FkQWxsRG9jdW1lbnRzKCk7CiAgICAgICAgICAgICAgICB0aGlz
LmNvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbm5lY3Rpb25V
SSgpOwogICAgICAgICAgICAgICAgYXdhaXQgRHJpdmVHb3Zlcm5hbmNlLmxvYWQoKTsKICAgICAg
ICAgICAgICAgIERyaXZlUG9ydGFsLmluaXQoKTsKICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJJ
bmZvID0gdGhpcy5lbnZpcm9uID8gJyAoQmVudXR6ZXI6ICcgKyB0aGlzLmVudmlyb24udXNlcm5h
bWUgKyAnKScgOiAnJzsKICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnVm9sbHp1Z3JpZmYgYWt0
aXYnICsgdXNlckluZm8sICdzdWNjZXNzJyk7CiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0U3lu
YygpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9
IGNhdGNoIHt9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICBhc3luYyBjb25uZWN0
RmlsZXN5c3RlbShhY2Nlc3NNb2RlKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3Qg
aXNSZWFkT25seSA9IChhY2Nlc3NNb2RlID09PSAncmVhZCcpOwogICAgICAgICAgICBjb25zdCBk
aXJIYW5kbGUgPSBhd2FpdCB3aW5kb3cuc2hvd0RpcmVjdG9yeVBpY2tlcih7CiAgICAgICAgICAg
ICAgICBtb2RlOiBpc1JlYWRPbmx5ID8gJ3JlYWQnIDogJ3JlYWR3cml0ZScsCiAgICAgICAgICAg
ICAgICBpZDogJ2RyaXZlLWRhdGEnCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLm1v
ZGUgPSAnZmlsZXN5c3RlbSc7CiAgICAgICAgICAgIHRoaXMucmVhZE9ubHkgPSBpc1JlYWRPbmx5
OwogICAgICAgICAgICB0aGlzLl9kaXJIYW5kbGUgPSBkaXJIYW5kbGU7CgogICAgICAgICAgICAv
LyBFcmtlbm51bmc6IFVzZXIgaGF0ICJkYXRhIiBkaXJla3Qgb2RlciBkZW4gSGF1cHRvcmRuZXIg
Z2V3YWVobHQKICAgICAgICAgICAgbGV0IGhhc0RhdGFTdWIgPSBmYWxzZTsKICAgICAgICAgICAg
dHJ5IHsgYXdhaXQgZGlySGFuZGxlLmdldERpcmVjdG9yeUhhbmRsZSgnZGF0YScpOyBoYXNEYXRh
U3ViID0gdHJ1ZTsgfSBjYXRjaCB7fQoKICAgICAgICAgICAgaWYgKGhhc0RhdGFTdWIpIHsKICAg
ICAgICAgICAgICAgIC8vIEhhdXB0b3JkbmVyIGdld2FlaGx0IChlbnRoYWVsdCBkYXRhLykKICAg
ICAgICAgICAgICAgIHRoaXMuX2RhdGFIYW5kbGUgPSBhd2FpdCBkaXJIYW5kbGUuZ2V0RGlyZWN0
b3J5SGFuZGxlKCdkYXRhJywgeyBjcmVhdGU6ICFpc1JlYWRPbmx5IH0pOwogICAgICAgICAgICAg
ICAgaWYgKCFpc1JlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWVkaWFIYW5k
bGUgPSBhd2FpdCBkaXJIYW5kbGUuZ2V0RGlyZWN0b3J5SGFuZGxlKCdtZWRpYScsIHsgY3JlYXRl
OiB0cnVlIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0
cnkgeyB0aGlzLl9tZWRpYUhhbmRsZSA9IGF3YWl0IGRpckhhbmRsZS5nZXREaXJlY3RvcnlIYW5k
bGUoJ21lZGlhJyk7IH0gY2F0Y2ggeyB0aGlzLl9tZWRpYUhhbmRsZSA9IG51bGw7IH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vICJkYXRh
IiBPcmRuZXIgZGlyZWt0IGdld2FlaGx0IChvZGVyIGFuZGVyZXIgT3JkbmVyIG1pdCBjb25maWcu
anNvbikKICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFIYW5kbGUgPSBkaXJIYW5kbGU7CiAgICAg
ICAgICAgICAgICB0aGlzLl9tZWRpYUhhbmRsZSA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgYXdhaXQgdGhpcy5sb2FkRW52aXJvbigpOwogICAgICAgICAgICBhd2FpdCB0aGlzLmxv
YWRDb25maWcoKTsKICAgICAgICAgICAgaWYgKCFpc1JlYWRPbmx5KSB7CiAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGthdCBvZiAodGhpcy5jb25maWcua2F0ZWdvcmllbiB8fCBbXSkpIHsKICAg
ICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kYXRhSGFuZGxlLmdldERpcmVjdG9yeUhhbmRs
ZShrYXQsIHsgY3JlYXRlOiB0cnVlIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
CiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEFsbERvY3VtZW50cygpOwogICAgICAgICAgICB0
aGlzLmNvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29ubmVjdGlvblVJ
KCk7CiAgICAgICAgICAgIGF3YWl0IERyaXZlR292ZXJuYW5jZS5sb2FkKCk7CiAgICAgICAgICAg
IERyaXZlUG9ydGFsLmluaXQoKTsKICAgICAgICAgICAgY29uc3QgbW9kZVRleHQgPSBpc1JlYWRP
bmx5ID8gJ051ci1MZXNlbi1Nb2R1cycgOiAnVm9sbHp1Z3JpZmYnOwogICAgICAgICAgICBzaG93
VG9hc3QobW9kZVRleHQgKyAnOiAnICsgZGlySGFuZGxlLm5hbWUsICdzdWNjZXNzJyk7CiAgICAg
ICAgICAgIHRoaXMuc3RhcnRTeW5jKCk7CgogICAgICAgICAgICAvLyBIYW5kbGUgc3BlaWNoZXJu
IGZ1ZXIgYXV0b21hdGlzY2hlIFdpZWRlcnZlcmJpbmR1bmcKICAgICAgICAgICAgYXdhaXQgdGhp
cy5fc2F2ZUhhbmRsZShkaXJIYW5kbGUpOwogICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAg
ICAgICBpZiAoZXJyLm5hbWUgIT09ICdBYm9ydEVycm9yJykgewogICAgICAgICAgICAgICAgc2hv
d1RvYXN0KCdGZWhsZXI6ICcgKyBlcnIubWVzc2FnZSwgJ2Vycm9yJyk7CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICB9LAoKICAgIC8vIFdpcmQgYXVmZ2VydWZlbiB3ZW5uIFVzZXIgQmVhcmJl
aXR1bmcgYWt0aXZpZXJlbiB3aWxsCiAgICBhc3luYyBhY3RpdmF0ZVNlcnZlcigpIHsKICAgICAg
ICAvLyBQcnVlZmVuIG9iIFNlcnZlciBpbnp3aXNjaGVuIGxhZXVmdAogICAgICAgIGlmIChhd2Fp
dCB0aGlzLnRyeVNlcnZlckNvbm5lY3QoKSkgewogICAgICAgICAgICBzaG93VG9hc3QoJ1NlcnZl
ciBlcmthbm50IC0gVm9sbHp1Z3JpZmYgYWt0aXZpZXJ0IScsICdzdWNjZXNzJyk7CiAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIFNlcnZlciBuaWNodCBlcnJlaWNoYmFy
IC0gSGlud2VpcyBhbnplaWdlbgogICAgICAgIHNob3dUb2FzdCgnU2VydmVyIG5pY2h0IGVycmVp
Y2hiYXIuIEJpdHRlIHN0YXJ0ZSBEUklWRV9TdGFydC5iYXQgcGVyIERvcHBlbGtsaWNrIHVuZCB2
ZXJzdWNoZSBlcyBlcm5ldXQuJywgJ3dhcm5pbmcnLCA1MDAwKTsKICAgIH0sCgogICAgLy8gVXBn
cmFkZSB2b24gTnVyLUxlc2VuIGF1ZiBTY2hyZWliZW4gKEZpbGVzeXN0ZW0tTW9kdXMpCiAgICBh
c3luYyB1cGdyYWRlVG9SZWFkV3JpdGUoKSB7CiAgICAgICAgLy8gRXJzdCBTZXJ2ZXIgcHJ1ZWZl
bgogICAgICAgIGlmIChhd2FpdCB0aGlzLnRyeVNlcnZlckNvbm5lY3QoKSkgcmV0dXJuIHRydWU7
CgogICAgICAgIC8vIEZpbGVzeXN0ZW06IFNjaHJlaWJyZWNodGUgYW5mb3JkZXJuCiAgICAgICAg
aWYgKHRoaXMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIHRoaXMuX2RpckhhbmRsZSkgewogICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgY29uc3QgcGVybSA9IGF3YWl0IHRoaXMuX2Rp
ckhhbmRsZS5yZXF1ZXN0UGVybWlzc2lvbih7IG1vZGU6ICdyZWFkd3JpdGUnIH0pOwogICAgICAg
ICAgICAgICAgaWYgKHBlcm0gPT09ICdncmFudGVkJykgewogICAgICAgICAgICAgICAgICAgIHRo
aXMucmVhZE9ubHkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZWRpYUhhbmRs
ZSA9IGF3YWl0IHRoaXMuX2RpckhhbmRsZS5nZXREaXJlY3RvcnlIYW5kbGUoJ21lZGlhJywgeyBj
cmVhdGU6IHRydWUgfSk7CiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrYXQgb2YgKHRo
aXMuY29uZmlnLmthdGVnb3JpZW4gfHwgW10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF3
YWl0IHRoaXMuX2RhdGFIYW5kbGUuZ2V0RGlyZWN0b3J5SGFuZGxlKGthdCwgeyBjcmVhdGU6IHRy
dWUgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMudXBk
YXRlQ29ubmVjdGlvblVJKCk7CiAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdTY2hyZWli
enVncmlmZiBha3RpdmllcnQnLCAnc3VjY2VzcycpOwogICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAoKICAgIC8vIFBydWVmZW4gb2IgU2NocmVp
Ynp1Z3JpZmYgdm9yaGFuZGVuLCBzb25zdCBVcGdyYWRlIHZlcnN1Y2hlbgogICAgYXN5bmMgZW5z
dXJlV3JpdGVBY2Nlc3MoKSB7CiAgICAgICAgaWYgKCF0aGlzLnJlYWRPbmx5KSByZXR1cm4gdHJ1
ZTsKCiAgICAgICAgY29uc3QgY2hvaWNlID0gY29uZmlybSgKICAgICAgICAgICAgJ1p1bSBCZWFy
YmVpdGVuIHdpcmQgU2NocmVpYnp1Z3JpZmYgYmVuw7Z0aWd0LlxuXG4nICsKICAgICAgICAgICAg
J09wdGlvbiAxOiBTdGFydGUgRFJJVkVfU3RhcnQuYmF0IHVuZCBrbGlja2UgT0suXG4nICsKICAg
ICAgICAgICAgJ09wdGlvbiAyOiBLbGlja2UgT0ssIHVtIFNjaHJlaWJyZWNodGUgaW0gQnJvd3Nl
ciB6dSBlcnRlaWxlbi4nCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCFjaG9pY2UpIHJldHVybiBm
YWxzZTsKICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy51cGdyYWRlVG9SZWFkV3JpdGUoKTsKICAg
IH0sCgogICAgcmVjb25uZWN0KCkgewogICAgICAgIGlmICh3aW5kb3cuc2hvd0RpcmVjdG9yeVBp
Y2tlcikgewogICAgICAgICAgICB0aGlzLmNvbm5lY3RGaWxlc3lzdGVtKCdyZWFkJyk7CiAgICAg
ICAgfQogICAgfSwKCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gRU5WSVJPTgogICAgLy8gPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KCiAgICBhc3luYyBsb2FkRW52aXJvbigpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBj
b25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS9lbnZpcm9uJyk7CiAgICAgICAgICAgIGlmIChy
ZXMub2spIHsKICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbiA9IGF3YWl0IHJlcy5qc29uKCk7
CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQmVudXR6ZXI6JywgdGhpcy5lbnZpcm9uLnVz
ZXJuYW1lLCAnQCcsIHRoaXMuZW52aXJvbi5jb21wdXRlcm5hbWUpOwogICAgICAgICAgICAgICAg
aWYgKHRoaXMuZW52aXJvbi51cGRhdGVBdmFpbGFibGUgJiYgIXdpbmRvdy5fZHJpdmVVcGRhdGVU
b2FzdFNob3duKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9kcml2ZVVwZGF0ZVRvYXN0
U2hvd24gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXNnLnN0eWxlLmNzc1RleHQgPSAncG9zaXRp
b246Zml4ZWQ7Ym90dG9tOjIwcHg7cmlnaHQ6MjBweDt6LWluZGV4Ojk5OTk7YmFja2dyb3VuZDoj
MWE3M2U4O2NvbG9yOiNmZmY7cGFkZGluZzoxNHB4IDIwcHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym94
LXNoYWRvdzowIDRweCAxMnB4IHJnYmEoMCwwLDAsLjMpO21heC13aWR0aDozNDBweDtmb250LXNp
emU6MTRweDtsaW5lLWhlaWdodDoxLjQ7Y3Vyc29yOnBvaW50ZXInOwogICAgICAgICAgICAgICAg
ICAgICAgICBtc2cuaW5uZXJIVE1MID0gJzxzdHJvbmc+VXBkYXRlIHZlcmbDvGdiYXI6IHYnICsg
KHRoaXMuZW52aXJvbi5yZW1vdGVWZXJzaW9uIHx8ICc/JykgKyAnPC9zdHJvbmc+PGJyPnVwZGF0
ZS5iYXQgYXVzZsO8aHJlbiB1bmQgU2VydmVyIG5ldSBzdGFydGVuLic7CiAgICAgICAgICAgICAg
ICAgICAgICAgIG1zZy50aXRsZSA9ICdLbGlja2VuIHp1bSBTY2hsaWXDn2VuJzsKICAgICAgICAg
ICAgICAgICAgICAgICAgbXNnLm9uY2xpY2sgPSAoKSA9PiBtc2cucmVtb3ZlKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gbXNnLnJlbW92ZSgpLCAyMDAwMCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobXNnKTsKICAg
ICAgICAgICAgICAgICAgICB9LCAyMDAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2gge30KICAgICAgICAvLyBG
YWxsYmFjazogSW0gTnVyLUxlc2VuLU1vZHVzIGtlaW5lbiBOYW1lbiBhYmZyYWdlbgogICAgICAg
IGlmICh0aGlzLnJlYWRPbmx5KSB7CiAgICAgICAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3Rv
cmFnZS5nZXRJdGVtKCdkcml2ZV91c2VybmFtZScpOwogICAgICAgICAgICBpZiAoc3RvcmVkKSB7
CiAgICAgICAgICAgICAgICB0aGlzLmVudmlyb24gPSB7IHVzZXJuYW1lOiBzdG9yZWQsIGNvbXB1
dGVybmFtZTogJy0nIH07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlz
LmVudmlyb24gPSB7IHVzZXJuYW1lOiAnTGVzZXInLCBjb21wdXRlcm5hbWU6ICctJyB9OwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgLy8gU2NocmVp
Ym1vZHVzOiBOYW1lbiBhYmZyYWdlbgogICAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFn
ZS5nZXRJdGVtKCdkcml2ZV91c2VybmFtZScpOwogICAgICAgIGlmIChzdG9yZWQpIHsKICAgICAg
ICAgICAgdGhpcy5lbnZpcm9uID0geyB1c2VybmFtZTogc3RvcmVkLCBjb21wdXRlcm5hbWU6ICct
JyB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwcm9tcHQoJ0Jp
dHRlIGdpYiBkZWluZW4gQmVudXR6ZXJuYW1lbiBlaW46Jyk7CiAgICAgICAgICAgIGlmIChuYW1l
KSB7CiAgICAgICAgICAgICAgICB0aGlzLmVudmlyb24gPSB7IHVzZXJuYW1lOiBuYW1lLnRyaW0o
KSwgY29tcHV0ZXJuYW1lOiAnLScgfTsKICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJ
dGVtKCdkcml2ZV91c2VybmFtZScsIG5hbWUudHJpbSgpKTsKICAgICAgICAgICAgfQogICAgICAg
IH0KICAgIH0sCgogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIENPTkZJRwogICAgLy8gPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
CiAgICBhc3luYyBsb2FkQ29uZmlnKCkgewogICAgICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSB7
CiAgICAgICAgICAgIHZlcnNpb246ICczLjAnLAogICAgICAgICAgICBrYXRlZ29yaWVuOiBbJ1Zl
cmtlaHInLCAnU2ljaGVyaGVpdCcsICdQbGFudW5nJywgJ09yZ2FuaXNhdGlvbiddLAogICAgICAg
ICAgICBzdGF0dXM6IHsKICAgICAgICAgICAgICAgICdFbnR3dXJmJzogeyBsYWJlbDogJ0VudHd1
cmYnLCBjb2xvcjogJyNGRkYzQ0QnLCB0ZXh0Q29sb3I6ICcjODU2NDA0JywgaWNvbjogJ1x1ZDgz
ZFx1ZGNkZCcsIGJlc2NocmVpYnVuZzogJ0Rva3VtZW50IGluIEJlYXJiZWl0dW5nJyB9LAogICAg
ICAgICAgICAgICAgJ1Byw7xmdW5nJzogeyBsYWJlbDogJ1p1ciBQcsO8ZnVuZycsIGNvbG9yOiAn
I0ZGRTVCNCcsIHRleHRDb2xvcjogJyM3QTQ0MTknLCBpY29uOiAn8J+Rge+4jycsIGJlc2NocmVp
YnVuZzogJ1dhcnRldCBhdWYgRnJlaWdhYmUnIH0sCiAgICAgICAgICAgICAgICAnRnJlaWdlZ2Vi
ZW4nOiB7IGxhYmVsOiAnRnJlaWdlZ2ViZW4nLCBjb2xvcjogJyNENEVEREEnLCB0ZXh0Q29sb3I6
ICcjMTU1NzI0JywgaWNvbjogJ+KchScsIGJlc2NocmVpYnVuZzogJ1ZlcmbDvGdiYXIgdW5kIGVp
bnNhdHpiZXJlaXQnIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIC8vIFNlcnZl
ci1Nb2R1czogY29uZmlnIHZpYSBIVFRQIGxhZGVuIChhYnNvbHV0ZXIgUGZhZCkKICAgICAgICBp
ZiAodGhpcy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goJy9kYXRhL2NvbmZpZy5qc29uJyk7CiAgICAg
ICAgICAgICAgICBpZiAocmVzLm9rKSB7IHRoaXMuY29uZmlnID0gYXdhaXQgcmVzLmpzb24oKTsg
dGhpcy5zb3J0S2F0ZWdvcmllbigpOyByZXR1cm47IH0KICAgICAgICAgICAgfSBjYXRjaCB7fQog
ICAgICAgIH0KCiAgICAgICAgLy8gU3RhdGlzY2hlciBNb2R1czogY29uZmlnIHZpYSByZWxhdGl2
ZW0gUGZhZCBsYWRlbgogICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzdGF0aWMnKSB7CiAgICAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnZGF0
YS9jb25maWcuanNvbicpOwogICAgICAgICAgICAgICAgaWYgKHJlcy5vaykgeyB0aGlzLmNvbmZp
ZyA9IGF3YWl0IHJlcy5qc29uKCk7IHRoaXMuc29ydEthdGVnb3JpZW4oKTsgcmV0dXJuOyB9CiAg
ICAgICAgICAgIH0gY2F0Y2gge30KICAgICAgICB9CgogICAgICAgIC8vIEZpbGVzeXN0ZW0tTW9k
dXM6IGNvbmZpZy5qc29uIGF1cyBkYXRhLUhhbmRsZSBsYWRlbgogICAgICAgIGlmICh0aGlzLl9k
YXRhSGFuZGxlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBjb25zdCBmaCA9
IGF3YWl0IHRoaXMuX2RhdGFIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnY29uZmlnLmpzb24nKTsKICAg
ICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBmaC5nZXRGaWxlKCk7CiAgICAgICAgICAg
ICAgICB0aGlzLmNvbmZpZyA9IEpTT04ucGFyc2UoYXdhaXQgZmlsZS50ZXh0KCkpOwogICAgICAg
ICAgICAgICAgdGhpcy5zb3J0S2F0ZWdvcmllbigpOwogICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAgICAgfQoKICAgICAgICB0aGlzLmNvbmZpZyA9IGRl
ZmF1bHRDb25maWc7CiAgICAgICAgdGhpcy5zb3J0S2F0ZWdvcmllbigpOwogICAgfSwKCiAgICAv
LyBLYXRlZ29yaWVuIGFscGhhYmV0aXNjaCBzb3J0aWVydCBoYWx0ZW4gKG5hY2ggamVkZW0gTGFk
ZW4vQWVuZGVybiBhdWZydWZlbikKICAgIHNvcnRLYXRlZ29yaWVuKCkgewogICAgICAgIGlmICh0
aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5rYXRlZ29yaWVuKSB7CiAgICAgICAgICAgIHRoaXMu
Y29uZmlnLmthdGVnb3JpZW4uc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhLmxvY2FsZUNv
bXBhcmUoYiwgJ2RlJyk7IH0pOwogICAgICAgIH0KICAgIH0sCgogICAgLy8gPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAg
IC8vIExPQUQgQUxMIERPQ1VNRU5UUwogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICBhc3luYyBsb2FkQWxs
RG9jdW1lbnRzKCkgewogICAgICAgIHRoaXMuZG9jdW1lbnRzID0gW107CiAgICAgICAgdGhpcy5m
aWxlVGltZXN0YW1wcyA9IHt9OwoKICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnc3RhdGljJykg
ewogICAgICAgICAgICAvLyBTdGF0aXNjaGVyIE1vZHVzOiBEb2t1bWVudGUgd3VyZGVuIGJlcmVp
dHMgaW4gdHJ5U3RhdGljQ29ubmVjdCgpIGdlbGFkZW4KICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAvLyBT
ZXJ2ZXIgc2Nhbm50IGRpZSBPcmRuZXIgZnVlciB1bnMKICAgICAgICAgICAgY29uc3QgcmVzID0g
YXdhaXQgZmV0Y2goJy9hcGkvc2NhbicpOwogICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQg
cmVzLmpzb24oKTsKCiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgKGRhdGEuZmlsZXMg
fHwgW10pKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0
IGRvY1JlcyA9IGF3YWl0IGZldGNoKCcvJyArIGVudHJ5LnBhdGgpOwogICAgICAgICAgICAgICAg
ICAgIGlmIChkb2NSZXMub2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9jID0g
YXdhaXQgZG9jUmVzLmpzb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVyc2lvbnNp
bnRlZ3JpdGFldCBwcnVlZmVuIHVuZCBnZ2YuIGtvcnJpZ2llcmVuCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChlbnN1cmVDb3JyZWN0VmVyc2lvbihkb2MpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBLb3JyaWdpZXJ0ZSBWZXJzaW9uIHp1cnVlY2tzY2hyZWliZW4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZldGNoKCcvYXBpL3dyaXRlJywgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsg
cGF0aDogZW50cnkucGF0aCwgZGF0YTogZG9jIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9KS5jYXRjaChmdW5jdGlvbigpIHt9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50cy5wdXNoKGRvYyk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuZmlsZVRpbWVzdGFtcHNbZG9jLmlkXSA9IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZGlmaWVkOiBlbnRyeS5tb2RpZmllZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGthdGVnb3JpZTogZW50cnkua2F0ZWdvcmllLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmlsZW5hbWU6IGVudHJ5LmZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGF0aDogZW50cnkucGF0aAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGUud2FybignRmVobGVyIGJlaW0gTGFkZW46ICcgKyBlbnRyeS5w
YXRoLCBlcnIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgLy8gRmlsZXN5c3RlbS1Nb2R1czogS2F0ZWdvcmllLU9yZG5lciBkdXJj
aGxhdWZlbgogICAgICAgICAgICBmb3IgKGNvbnN0IGthdCBvZiAodGhpcy5jb25maWcua2F0ZWdv
cmllbiB8fCBbXSkpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAg
Y29uc3Qga2F0RGlyID0gYXdhaXQgdGhpcy5fZGF0YUhhbmRsZS5nZXREaXJlY3RvcnlIYW5kbGUo
a2F0KTsKICAgICAgICAgICAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IFtuYW1lLCBoYW5kbGVd
IG9mIGthdERpcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlLmtpbmQgPT09
ICdmaWxlJyAmJiBuYW1lLmVuZHNXaXRoKCcuanNvbicpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUg
PSBhd2FpdCBoYW5kbGUuZ2V0RmlsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGRvYyA9IEpTT04ucGFyc2UoYXdhaXQgZmlsZS50ZXh0KCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVuc3VyZUNvcnJlY3RWZXJzaW9uKGRvYyk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudHMucHVzaChkb2MpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZVRpbWVzdGFtcHNbZG9jLmlkXSA9IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQ6IGZpbGUubGFzdE1vZGlm
aWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRlZ29yaWU6IGthdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICdkYXRhLycgKyBrYXQgKyAnLycg
KyBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnNvbGUud2FybignRmVobGVyOiAnICsga2F0ICsgJy8nICsgbmFtZSwgZXJyKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gY2F0Y2gge30KICAgICAgICAgICAg
fQogICAgICAgIH0KCiAgICAgICAgdGhpcy5kb2N1bWVudHMuc29ydCgoYSwgYikgPT4gKGIuZXJz
dGVsbHQgfHwgJycpLmxvY2FsZUNvbXBhcmUoYS5lcnN0ZWxsdCB8fCAnJykpOwogICAgICAgIGF3
YWl0IHRoaXMudXBkYXRlSW5kZXgoKTsKICAgIH0sCgogICAgLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIExP
QUQgU0lOR0xFIERPQ1VNRU5UIChmcmlzY2ggdm9uIERpc2spCiAgICAvLyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAg
IGFzeW5jIGxvYWREb2N1bWVudChkb2NJZCkgewogICAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLmZp
bGVUaW1lc3RhbXBzW2RvY0lkXTsKICAgICAgICBpZiAoIW1ldGEpIHsKICAgICAgICAgICAgLy8g
S2VpbiBEYXRlaXBmYWQgYmVrYW5udCAtIEluLU1lbW9yeS1GYWxsYmFjawogICAgICAgICAgICBy
ZXR1cm4gdGhpcy5kb2N1bWVudHMuZmluZChkID0+IGQuaWQgPT09IGRvY0lkKSB8fCBudWxsOwog
ICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3Nl
cnZlcicpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKCcvJyArIG1l
dGEucGF0aCArICc/dD0nICsgRGF0ZS5ub3coKSk7CiAgICAgICAgICAgICAgICBpZiAoIXJlcy5v
aykgdGhyb3cgbmV3IEVycm9yKCdIVFRQICcgKyByZXMuc3RhdHVzKTsKICAgICAgICAgICAgICAg
IHJldHVybiBhd2FpdCByZXMuanNvbigpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9k
ZSA9PT0gJ3N0YXRpYycpIHsKICAgICAgICAgICAgICAgIC8vIFN0YXRpc2NoOiBJbi1NZW1vcnkg
dmVyd2VuZGVuIChiZXJlaXRzIGtvbXBsZXR0IGdlbGFkZW4pCiAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5kb2N1bWVudHMuZmluZChkID0+IGQuaWQgPT09IGRvY0lkKSB8fCBudWxsOwogICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY29uc3Qga2F0RGlyID0gYXdhaXQgdGhp
cy5fZGF0YUhhbmRsZS5nZXREaXJlY3RvcnlIYW5kbGUobWV0YS5rYXRlZ29yaWUpOwogICAgICAg
ICAgICAgICAgY29uc3QgZmggPSBhd2FpdCBrYXREaXIuZ2V0RmlsZUhhbmRsZShtZXRhLmZpbGVu
YW1lKTsKICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBmaC5nZXRGaWxlKCk7CiAg
ICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCBmaWxlLnRleHQoKSk7CiAgICAg
ICAgICAgIH0KICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgY29uc29sZS53YXJu
KCdsb2FkRG9jdW1lbnQgRmVobGVyIGZ1ZXIgJyArIGRvY0lkICsgJzonLCBlcnIpOwogICAgICAg
ICAgICAvLyBGYWxsYmFjazogSW4tTWVtb3J5LVZlcnNpb24gdmVyd2VuZGVuIChiZXJlaXRzIGJl
aW0gU3RhcnQgZ2VsYWRlbikKICAgICAgICAgICAgY29uc3QgbWVtRG9jID0gdGhpcy5kb2N1bWVu
dHMuZmluZChkID0+IGQuaWQgPT09IGRvY0lkKTsKICAgICAgICAgICAgaWYgKG1lbURvYykgcmV0
dXJuIG1lbURvYzsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfSwKCiAg
ICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQogICAgLy8gU0FWRSBET0NVTUVOVAogICAgLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICBh
c3luYyBzYXZlRG9jdW1lbnQoZG9jKSB7CiAgICAgICAgY29uc3QgZG9jSWQgPSBkb2MuaWQ7CiAg
ICAgICAgY29uc3QgbWV0YSA9IHRoaXMuZmlsZVRpbWVzdGFtcHNbZG9jSWRdOwogICAgICAgIGNv
bnN0IG5ld1BhdGggPSB0aGlzLmRvY1BhdGgoZG9jKTsKCiAgICAgICAgLy8gQWx0ZSBEYXRlaSBs
b2VzY2hlbiBmYWxscyBQZmFkIHNpY2ggZ2VhZW5kZXJ0IGhhdAogICAgICAgIGlmIChtZXRhICYm
IG1ldGEucGF0aCAhPT0gbmV3UGF0aCkgewogICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZUZp
bGUobWV0YS5wYXRoKTsKICAgICAgICB9CgogICAgICAgIC8vIEdlYWVuZGVydC1UaW1lc3RhbXAg
dW5kIEJlYXJiZWl0ZXIgc2V0emVuCiAgICAgICAgZG9jLmdlYWVuZGVydCA9IG5ldyBEYXRlKCku
dG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdOwogICAgICAgIGlmICh0aGlzLmVudmlyb24gJiYg
dGhpcy5lbnZpcm9uLnVzZXJuYW1lKSB7CiAgICAgICAgICAgIGRvYy5iZWFyYmVpdGV0Vm9uID0g
dGhpcy5lbnZpcm9uLnVzZXJuYW1lOwogICAgICAgIH0KCiAgICAgICAgLy8gVGVtcG9yYWVyZSBQ
cm9wZXJ0aWVzIGVudGZlcm5lbiAobWl0IF8gUHJlZml4LCBuaWNodCBwZXJzaXN0aWVyZW4pCiAg
ICAgICAgZGVsZXRlIGRvYy5fcHJldmlvdXNJbmhhbHQ7CiAgICAgICAgZGVsZXRlIGRvYy5fcHJl
dmlvdXNUaXRlbDsKCiAgICAgICAgLy8gU3BlaWNoZXJuCiAgICAgICAgaWYgKHRoaXMubW9kZSA9
PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goJy9hcGkv
d3JpdGUnLCB7CiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICAgICAgICAg
IGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0
Zi04JyB9LAogICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBwYXRoOiBuZXdQ
YXRoLCBkYXRhOiBkb2MgfSkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNvbnN0IHJlc3Vs
dCA9IGF3YWl0IHJlcy5qc29uKCk7CiAgICAgICAgICAgIGlmICghcmVzdWx0Lm9rKSB7CiAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LmVycm9yIHx8ICdVbmJla2FubnRlciBGZWhsZXInOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuZmlsZVRpbWVzdGFtcHNbZG9jSWRdID0gewog
ICAgICAgICAgICAgICAgbW9kaWZpZWQ6IHJlc3VsdC5tb2RpZmllZCwKICAgICAgICAgICAgICAg
IGthdGVnb3JpZTogZG9jLmthdGVnb3JpZSwKICAgICAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlz
LmRvY0ZpbGVuYW1lKGRvYyksCiAgICAgICAgICAgICAgICBwYXRoOiBuZXdQYXRoCiAgICAgICAg
ICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3Qga2F0RGlyID0gYXdhaXQg
dGhpcy5fZGF0YUhhbmRsZS5nZXREaXJlY3RvcnlIYW5kbGUoZG9jLmthdGVnb3JpZSwgeyBjcmVh
dGU6IHRydWUgfSk7CiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gdGhpcy5kb2NGaWxlbmFt
ZShkb2MpOwogICAgICAgICAgICBjb25zdCBmaCA9IGF3YWl0IGthdERpci5nZXRGaWxlSGFuZGxl
KGZpbGVuYW1lLCB7IGNyZWF0ZTogdHJ1ZSB9KTsKICAgICAgICAgICAgY29uc3Qgd3JpdGFibGUg
PSBhd2FpdCBmaC5jcmVhdGVXcml0YWJsZSgpOwogICAgICAgICAgICBhd2FpdCB3cml0YWJsZS53
cml0ZShKU09OLnN0cmluZ2lmeShkb2MsIG51bGwsIDIpKTsKICAgICAgICAgICAgYXdhaXQgd3Jp
dGFibGUuY2xvc2UoKTsKICAgICAgICAgICAgY29uc3Qgc2F2ZWRGaWxlID0gYXdhaXQgKGF3YWl0
IGthdERpci5nZXRGaWxlSGFuZGxlKGZpbGVuYW1lKSkuZ2V0RmlsZSgpOwogICAgICAgICAgICB0
aGlzLmZpbGVUaW1lc3RhbXBzW2RvY0lkXSA9IHsKICAgICAgICAgICAgICAgIG1vZGlmaWVkOiBz
YXZlZEZpbGUubGFzdE1vZGlmaWVkLAogICAgICAgICAgICAgICAga2F0ZWdvcmllOiBkb2Mua2F0
ZWdvcmllLAogICAgICAgICAgICAgICAgZmlsZW5hbWU6IGZpbGVuYW1lLAogICAgICAgICAgICAg
ICAgcGF0aDogbmV3UGF0aAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgLy8gSW4t
TWVtb3J5IGFrdHVhbGlzaWVyZW4KICAgICAgICBjb25zdCBpZHggPSB0aGlzLmRvY3VtZW50cy5m
aW5kSW5kZXgoZCA9PiBkLmlkID09PSBkb2NJZCk7CiAgICAgICAgaWYgKGlkeCA+PSAwKSB7IHRo
aXMuZG9jdW1lbnRzW2lkeF0gPSBkb2M7IH0gZWxzZSB7IHRoaXMuZG9jdW1lbnRzLnB1c2goZG9j
KTsgfQoKICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUluZGV4KCk7CiAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICB9LAoKICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBERUxFVEUKICAgIC8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CgogICAgYXN5bmMgZGVsZXRlRmlsZShwYXRoKSB7CiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0g
J3NlcnZlcicpIHsKICAgICAgICAgICAgdmFyIHJlcyA9IGF3YWl0IGZldGNoKCcvYXBpL2RlbGV0
ZScsIHsKICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAgICAgaGVh
ZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgn
IH0sCiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBhdGg6IHBhdGggfSkK
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICghcmVzLm9rKSB7CiAgICAgICAgICAgICAg
ICB2YXIgZXJyID0gYXdhaXQgcmVzLmpzb24oKS5jYXRjaChmdW5jdGlvbigpIHsgcmV0dXJuIHt9
OyB9KTsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIuZXJyb3IgfHwgJ0zDtnNj
aGVuIGZlaGxnZXNjaGxhZ2VuIChIVFRQICcgKyByZXMuc3RhdHVzICsgJyknKTsKICAgICAgICAg
ICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEZpbGVzeXN0ZW06IERhdGVpIGF1
cyBLYXRlZ29yaWUtT3JkbmVyIGxvZXNjaGVuCiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gcGF0
aC5zcGxpdCgnLycpOwogICAgICAgICAgICBjb25zdCBrYXQgPSBwYXJ0c1sxXTsKICAgICAgICAg
ICAgY29uc3QgZmlsZW5hbWUgPSBwYXJ0c1syXTsKICAgICAgICAgICAgY29uc3Qga2F0RGlyID0g
YXdhaXQgdGhpcy5fZGF0YUhhbmRsZS5nZXREaXJlY3RvcnlIYW5kbGUoa2F0KTsKICAgICAgICAg
ICAgYXdhaXQga2F0RGlyLnJlbW92ZUVudHJ5KGZpbGVuYW1lKTsKICAgICAgICB9CiAgICB9LAoK
ICAgIGFzeW5jIGRlbGV0ZURvY3VtZW50KGRvY0lkKSB7CiAgICAgICAgY29uc3QgbWV0YSA9IHRo
aXMuZmlsZVRpbWVzdGFtcHNbZG9jSWRdOwogICAgICAgIGlmICghbWV0YSkgcmV0dXJuIGZhbHNl
OwoKICAgICAgICB0cnkgewogICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZUZpbGUobWV0YS5w
YXRoKTsKICAgICAgICAgICAgdGhpcy5kb2N1bWVudHMgPSB0aGlzLmRvY3VtZW50cy5maWx0ZXIo
ZCA9PiBkLmlkICE9PSBkb2NJZCk7CiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmZpbGVUaW1lc3Rh
bXBzW2RvY0lkXTsKCiAgICAgICAgICAgIC8vIE1lZGlhLU9yZG5lciBsb2VzY2hlbgogICAgICAg
ICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3NlcnZlcicpIHsK
ICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZXRjaCgnL2FwaS9kZWxldGUnLCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYt
OCcgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBwYXRo
OiAnbWVkaWEvJyArIGRvY0lkIH0pCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lZGlhSGFuZGxl
LnJlbW92ZUVudHJ5KGRvY0lkLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfSBjYXRjaCB7fQoKICAgICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVJ
bmRleCgpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChlcnIpIHsK
ICAgICAgICAgICAgY29uc29sZS5lcnJvcignTG9lc2NoZmVobGVyOicsIGVycik7CiAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9LAoKICAgIC8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAv
LyBJTkRFWAogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICBhc3luYyB1cGRhdGVJbmRleCgpIHsKICAgICAg
ICAvLyBTdGF0aXNjaGVyIE1vZHVzOiBJbmRleCBuaWNodCBzY2hyZWliZW4gKGtlaW4gU2NocmVp
Ynp1Z3JpZmYpCiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3N0YXRpYycpIHJldHVybjsKCiAg
ICAgICAgY29uc3QgaW5kZXhEYXRhID0gewogICAgICAgICAgICB2ZXJzaW9uOiAnMy4wJywKICAg
ICAgICAgICAgbGFzdFVwZGF0ZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgICAgICAg
ICAgZG9jdW1lbnRzOiB0aGlzLmRvY3VtZW50cy5tYXAoZG9jID0+ICh7CiAgICAgICAgICAgICAg
ICBpZDogZG9jLmlkLAogICAgICAgICAgICAgICAgdGl0ZWw6IGRvYy50aXRlbCwKICAgICAgICAg
ICAgICAgIGthdGVnb3JpZTogZG9jLmthdGVnb3JpZSwKICAgICAgICAgICAgICAgIHN0YXR1czog
ZG9jLnN0YXR1cywKICAgICAgICAgICAgICAgIGVyc3RlbGx0OiBkb2MuZXJzdGVsbHQsCiAgICAg
ICAgICAgICAgICBnZWFlbmRlcnQ6IGRvYy5nZWFlbmRlcnQgfHwgZG9jLmVyc3RlbGx0LAogICAg
ICAgICAgICAgICAgdmVyc2lvbjogZG9jLnZlcnNpb24sCiAgICAgICAgICAgICAgICBoYXNNZWRp
YTogKGRvYy5tZWRpYXMgJiYgZG9jLm1lZGlhcy5sZW5ndGggPiAwKSB8fCBmYWxzZSwKICAgICAg
ICAgICAgICAgIGVyc3RlbGx0Vm9uOiBkb2MuZXJzdGVsbHRWb24gfHwgbnVsbCwKICAgICAgICAg
ICAgICAgIGJlYXJiZWl0ZXRWb246IGRvYy5iZWFyYmVpdGV0Vm9uIHx8IG51bGwsCiAgICAgICAg
ICAgICAgICBzY2hsYWd3b2VydGVyOiBkb2Muc2NobGFnd29lcnRlciB8fCBbXSwKICAgICAgICAg
ICAgICAgIHBhcmVudElkOiBkb2MucGFyZW50SWQgfHwgbnVsbAogICAgICAgICAgICB9KSkKICAg
ICAgICB9OwoKICAgICAgICAvLyBLb21wbGV0dGUgRGF0ZW4gZnVlciBmaWxlOi8vLUxlc2Vtb2R1
cyAoYWxsZSBEb2t1bWVudGUgKyBDb25maWcgKyBHb3Zlcm5hbmNlLVNldHRpbmdzKQogICAgICAg
IHZhciBnb3ZQdWJsaWMgPSBudWxsOwogICAgICAgIGlmIChEcml2ZUdvdmVybmFuY2UuZGF0YSkg
ewogICAgICAgICAgICAvLyBOdXIgbGVzYmFyZSBHb3Zlcm5hbmNlLURhdGVuOiBTZXR0aW5ncywg
S2F0ZWdvcmllbi1TaWNodGJhcmtlaXQsIFJldmlld2VyLUthdGVnb3JpZW4gKGtlaW5lIENyZWRl
bnRpYWxzKQogICAgICAgICAgICBnb3ZQdWJsaWMgPSB7CiAgICAgICAgICAgICAgICBzZXR0aW5n
czogRHJpdmVHb3Zlcm5hbmNlLmRhdGEuc2V0dGluZ3MgfHwge30sCiAgICAgICAgICAgICAgICBy
ZXZpZXdlcnM6IChEcml2ZUdvdmVybmFuY2UuZGF0YS5yZXZpZXdlcnMgfHwgW10pLm1hcChmdW5j
dGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZGlzcGxheU5hbWU6IHIuZGlz
cGxheU5hbWUgfHwgci51c2VybmFtZSwga2F0ZWdvcmllbjogci5rYXRlZ29yaWVuIHx8IFtdIH07
CiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIGhpZGRlbkthdGVnb3JpZW46IHRo
aXMuY29uZmlnLmhpZGRlbkthdGVnb3JpZW4gfHwgW10KICAgICAgICAgICAgfTsKICAgICAgICB9
CiAgICAgICAgLy8gU3RhcnRzZWl0ZSBmdWVyIExlc2Vtb2R1cyBlaW5iZXR0ZW4KICAgICAgICB2
YXIgc3RhcnRzZWl0ZUh0bWwgPSBudWxsOwogICAgICAgIHZhciB3ZWxjb21lRWwgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCcud2VsY29tZS1jb250ZW50Jyk7CiAgICAgICAgaWYgKHdlbGNvbWVF
bCkgc3RhcnRzZWl0ZUh0bWwgPSB3ZWxjb21lRWwuaW5uZXJIVE1MOwoKICAgICAgICB2YXIgc3Rh
dGljRGF0YSA9IHsKICAgICAgICAgICAgdmVyc2lvbjogaW5kZXhEYXRhLnZlcnNpb24sCiAgICAg
ICAgICAgIGxhc3RVcGRhdGVkOiBpbmRleERhdGEubGFzdFVwZGF0ZWQsCiAgICAgICAgICAgIGNv
bmZpZzogdGhpcy5jb25maWcgfHwgbnVsbCwKICAgICAgICAgICAgZ292ZXJuYW5jZTogZ292UHVi
bGljLAogICAgICAgICAgICBzdGFydHNlaXRlOiBzdGFydHNlaXRlSHRtbCwKICAgICAgICAgICAg
ZG9jdW1lbnRzOiB0aGlzLmRvY3VtZW50cy5tYXAoZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgICAg
ICAgICAvLyBLb21wbGV0dGVzIERva3VtZW50IGtvcGllcmVuLCBhYmVyIF9wcml2YXRlIFByb3Bl
cnRpZXMgZW50ZmVybmVuCiAgICAgICAgICAgICAgICB2YXIgY29weSA9IHt9OwogICAgICAgICAg
ICAgICAgZm9yICh2YXIgayBpbiBkb2MpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoay5jaGFy
QXQoMCkgIT09ICdfJykgY29weVtrXSA9IGRvY1trXTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIHJldHVybiBjb3B5OwogICAgICAgICAgICB9KQogICAgICAgIH07CiAgICAgICAg
dmFyIGpzQ29udGVudCA9ICd2YXIgRFJJVkVfU1RBVElDX0lOREVYID0gJyArIEpTT04uc3RyaW5n
aWZ5KHN0YXRpY0RhdGEpICsgJzsnOwoKICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnc2VydmVy
JykgewogICAgICAgICAgICBhd2FpdCBmZXRjaCgnL2FwaS93cml0ZScsIHsKICAgICAgICAgICAg
ICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1U
eXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnIH0sCiAgICAgICAgICAgICAg
ICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBhdGg6ICdkYXRhL2luZGV4Lmpzb24nLCBkYXRhOiBp
bmRleERhdGEgfSkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGF3YWl0IGZldGNoKCcvYXBp
L3dyaXRlJywgewogICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAg
ICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11
dGYtOCcgfSwKICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcGF0aDogJ2Rh
dGEvaW5kZXguanMnLCBkYXRhOiBqc0NvbnRlbnQgfSkKICAgICAgICAgICAgfSk7CiAgICAgICAg
fSBlbHNlIGlmICh0aGlzLl9kYXRhSGFuZGxlKSB7CiAgICAgICAgICAgIGNvbnN0IGZoID0gYXdh
aXQgdGhpcy5fZGF0YUhhbmRsZS5nZXRGaWxlSGFuZGxlKCdpbmRleC5qc29uJywgeyBjcmVhdGU6
IHRydWUgfSk7CiAgICAgICAgICAgIGNvbnN0IHdyaXRhYmxlID0gYXdhaXQgZmguY3JlYXRlV3Jp
dGFibGUoKTsKICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUud3JpdGUoSlNPTi5zdHJpbmdpZnko
aW5kZXhEYXRhLCBudWxsLCAyKSk7CiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLmNsb3NlKCk7
CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBjb25zdCBmaEpzID0gYXdhaXQgdGhp
cy5fZGF0YUhhbmRsZS5nZXRGaWxlSGFuZGxlKCdpbmRleC5qcycsIHsgY3JlYXRlOiB0cnVlIH0p
OwogICAgICAgICAgICAgICAgY29uc3Qgd0pzID0gYXdhaXQgZmhKcy5jcmVhdGVXcml0YWJsZSgp
OwogICAgICAgICAgICAgICAgYXdhaXQgd0pzLndyaXRlKGpzQ29udGVudCk7CiAgICAgICAgICAg
ICAgICBhd2FpdCB3SnMuY2xvc2UoKTsKICAgICAgICAgICAgfSBjYXRjaCB7fQogICAgICAgIH0K
CiAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4RGF0YTsKICAgIH0sCgogICAgLy8gPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
ICAgIC8vIE1FRElBIFVQTE9BRAogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAvLyBEYXRlaW5hbWVuIGJl
cmVpbmlnZW46IFVtbGF1dGUgdW5kIFNvbmRlcnplaWNoZW4gZHVyY2ggQVNDSUkgZXJzZXR6ZW4K
ICAgIHNhbml0aXplRmlsZW5hbWUobmFtZSkgewogICAgICAgIHJldHVybiBuYW1lCiAgICAgICAg
ICAgIC5yZXBsYWNlKC/DpC9nLCAnYWUnKS5yZXBsYWNlKC/DhC9nLCAnQWUnKQogICAgICAgICAg
ICAucmVwbGFjZSgvw7YvZywgJ29lJykucmVwbGFjZSgvw5YvZywgJ09lJykKICAgICAgICAgICAg
LnJlcGxhY2UoL8O8L2csICd1ZScpLnJlcGxhY2UoL8OcL2csICdVZScpCiAgICAgICAgICAgIC5y
ZXBsYWNlKC/Dny9nLCAnc3MnKQogICAgICAgICAgICAucmVwbGFjZSgvW15cdy5cLV0vZywgJ18n
KQogICAgICAgICAgICAucmVwbGFjZSgvXysvZywgJ18nKTsKICAgIH0sCgogICAgYXN5bmMgdXBs
b2FkTWVkaWEoZG9jSWQsIGZpbGUsIG9uUHJvZ3Jlc3MpIHsKICAgICAgICBjb25zdCBzYWZlTmFt
ZSA9IHRoaXMuc2FuaXRpemVGaWxlbmFtZShmaWxlLm5hbWUpOwogICAgICAgIGNvbnN0IHJlbFBh
dGggPSAnbWVkaWEvJyArIGRvY0lkICsgJy8nICsgc2FmZU5hbWU7CgogICAgICAgIGlmICh0aGlz
Lm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIC8vIFhNTEh0dHBSZXF1ZXN0IHN0YXR0
IGZldGNoOiBFcm1vZWdsaWNodCBVcGxvYWQtRm9ydHNjaHJpdHRzYW56ZWlnZQogICAgICAgICAg
ICAvLyB2aWEgeGhyLnVwbG9hZC5vbnByb2dyZXNzIChmZXRjaCB1bnRlcnN0dWV0enQga2VpbiBV
cGxvYWQtUHJvZ3Jlc3MpCiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRh
KCk7CiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpOwogICAgICAgICAg
ICBjb25zdCB1cmwgPSAnL2FwaS91cGxvYWQ/cGF0aD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHJl
bFBhdGgpOwoKICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwg
cmVqZWN0KSB7CiAgICAgICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CiAgICAgICAgICAgICAgICB4aHIub3BlbignUE9TVCcsIHVybCk7CiAgICAgICAgICAgICAgICBp
ZiAob25Qcm9ncmVzcykgewogICAgICAgICAgICAgICAgICAgIHhoci51cGxvYWQub25wcm9ncmVz
cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUubGVuZ3RoQ29t
cHV0YWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Qcm9ncmVzcyhNYXRoLnJv
dW5kKChlLmxvYWRlZCAvIGUudG90YWwpICogMTAwKSwgZS5sb2FkZWQsIGUudG90YWwpOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkgewog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob25Qcm9ncmVzcykgb25Qcm9ncmVzcygxMDAsIGZp
bGUuc2l6ZSwgZmlsZS5zaXplKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwog
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBl
cnIgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgZXJyID0gSlNPTi5wYXJzZSh4
aHIucmVzcG9uc2VUZXh0KTsgfSBjYXRjaChleCkge30KICAgICAgICAgICAgICAgICAgICAgICAg
cmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IgfHwgJ1VwbG9hZCBmZWhsZ2VzY2hsYWdlbiAoSFRU
UCAnICsgeGhyLnN0YXR1cyArICcpJykpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1NlcnZlciBuaWNodCBlcnJlaWNoYmFy
LiBMYWV1ZnQgZGVyIFNlcnZlciBub2NoPycpKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAg
ICAgICAgICB4aHIuc2VuZChmb3JtRGF0YSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIGNvbnN0IGRvY01lZGlhRGlyID0gYXdhaXQgdGhpcy5fbWVkaWFIYW5k
bGUuZ2V0RGlyZWN0b3J5SGFuZGxlKGRvY0lkLCB7IGNyZWF0ZTogdHJ1ZSB9KTsKICAgICAgICAg
ICAgY29uc3QgZmggPSBhd2FpdCBkb2NNZWRpYURpci5nZXRGaWxlSGFuZGxlKHNhZmVOYW1lLCB7
IGNyZWF0ZTogdHJ1ZSB9KTsKICAgICAgICAgICAgY29uc3Qgd3JpdGFibGUgPSBhd2FpdCBmaC5j
cmVhdGVXcml0YWJsZSgpOwogICAgICAgICAgICBhd2FpdCB3cml0YWJsZS53cml0ZShmaWxlKTsK
ICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUuY2xvc2UoKTsKICAgICAgICAgICAgaWYgKG9uUHJv
Z3Jlc3MpIG9uUHJvZ3Jlc3MoMTAwLCBmaWxlLnNpemUsIGZpbGUuc2l6ZSk7CiAgICAgICAgfQoK
ICAgICAgICByZXR1cm4gcmVsUGF0aDsKICAgIH0sCgogICAgLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIFVJ
CiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQoKICAgIHVwZGF0ZUNvbm5lY3Rpb25VSSgpIHsKICAgICAgICBjb25z
dCBiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29ubmVjdGlvbkJhcicpOwogICAgICAg
IGNvbnN0IGRvdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0dXNEb3QnKTsKICAgICAg
ICBjb25zdCB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nvbm5lY3Rpb25UZXh0Jyk7
CiAgICAgICAgY29uc3Qgc2VhcmNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaElu
cHV0Jyk7CiAgICAgICAgY29uc3QgYnRuTmV3ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0
bk5ld0RvYycpOwogICAgICAgIGNvbnN0IGJ0blJlY29ubmVjdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdidG5SZWNvbm5lY3QnKTsKICAgICAgICBjb25zdCBidG5TZXJ2ZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYnRuQWN0aXZhdGVTZXJ2ZXInKTsKCiAgICAgICAgaWYgKHRoaXMu
Y29ubmVjdGVkKSB7CiAgICAgICAgICAgIGJhci5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAg
ICAgIGRvdC5jbGFzc0xpc3QucmVtb3ZlKCdjb25uZWN0ZWQnLCAncmVhZG9ubHknKTsKICAgICAg
ICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHsKICAgICAgICAgICAgICAgIGRvdC5jbGFzc0xpc3Qu
YWRkKCdyZWFkb25seScpOwogICAgICAgICAgICAgICAgY29uc3QgbW9kZVByZWZpeCA9IHRoaXMu
bW9kZSA9PT0gJ3N0YXRpYycgPyAnTGVzZW1vZHVzJyA6ICdOdXIgTGVzZW4nOwogICAgICAgICAg
ICAgICAgY29uc3QgdXNlclN0ciA9ICh0aGlzLmVudmlyb24gJiYgdGhpcy5tb2RlICE9PSAnc3Rh
dGljJykgPyAnIHwgJyArIHRoaXMuZW52aXJvbi51c2VybmFtZSA6ICcnOwogICAgICAgICAgICAg
ICAgdGV4dC50ZXh0Q29udGVudCA9IG1vZGVQcmVmaXggKyAnICgnICsgdGhpcy5kb2N1bWVudHMu
bGVuZ3RoICsgJyBEb2t1bWVudGUpJyArIHVzZXJTdHI7CiAgICAgICAgICAgICAgICBidG5OZXcu
ZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgYnRuTmV3LnN0eWxlLmRpc3BsYXkgPSAo
dGhpcy5tb2RlID09PSAnc3RhdGljJykgPyAnbm9uZScgOiAnJzsKICAgICAgICAgICAgICAgIGJ0
bk5ldy50aXRsZSA9ICdTZXJ2ZXIgc3RhcnRlbiBmw7xyIEJlYXJiZWl0dW5nJzsKICAgICAgICAg
ICAgICAgIGJ0blNlcnZlci5zdHlsZS5kaXNwbGF5ID0gKHRoaXMubW9kZSA9PT0gJ3N0YXRpYycp
ID8gJ25vbmUnIDogJyc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkb3Qu
Y2xhc3NMaXN0LmFkZCgnY29ubmVjdGVkJyk7CiAgICAgICAgICAgICAgICBjb25zdCB1c2VyU3Ry
ID0gdGhpcy5lbnZpcm9uID8gJyB8IEJlbnV0emVyOiAnICsgdGhpcy5lbnZpcm9uLnVzZXJuYW1l
IDogJyc7CiAgICAgICAgICAgICAgICBjb25zdCBtb2RlU3RyID0gdGhpcy5tb2RlID09PSAnc2Vy
dmVyJyA/ICdTZXJ2ZXInIDogJ0xva2FsIChWb2xsenVncmlmZiknOwogICAgICAgICAgICAgICAg
dGV4dC50ZXh0Q29udGVudCA9IG1vZGVTdHIgKyAnICgnICsgdGhpcy5kb2N1bWVudHMubGVuZ3Ro
ICsgJyBEb2t1bWVudGUpJyArIHVzZXJTdHI7CiAgICAgICAgICAgICAgICBidG5OZXcuZGlzYWJs
ZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGJ0bk5ldy5zdHlsZS5kaXNwbGF5ID0gJyc7CiAg
ICAgICAgICAgICAgICBidG5OZXcudGl0bGUgPSAnJzsKICAgICAgICAgICAgICAgIGJ0blNlcnZl
ci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlYXJj
aC5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICAgICBidG5SZWNvbm5lY3Quc3R5bGUuZGlzcGxh
eSA9ICh0aGlzLm1vZGUgPT09ICdmaWxlc3lzdGVtJykgPyAnJyA6ICdub25lJzsKICAgICAgICAg
ICAgLy8gTGVzZW1vZHVzLUJhZGdlIGltIEZvb3RlcgogICAgICAgICAgICB2YXIgcmVhZEJhZGdl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvb3RlclJlYWRNb2RlJyk7CiAgICAgICAgICAg
IGlmIChyZWFkQmFkZ2UpIHJlYWRCYWRnZS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5yZWFkT25seSA/
ICcnIDogJ25vbmUnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJhci5zdHlsZS5kaXNw
bGF5ID0gJ25vbmUnOwogICAgICAgICAgICBkb3QuY2xhc3NMaXN0LnJlbW92ZSgnY29ubmVjdGVk
JywgJ3JlYWRvbmx5Jyk7CiAgICAgICAgICAgIHNlYXJjaC5kaXNhYmxlZCA9IHRydWU7CiAgICAg
ICAgICAgIGJ0bk5ldy5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIGJ0bk5ldy5zdHlsZS5k
aXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICBidG5SZWNvbm5lY3Quc3R5bGUuZGlzcGxheSA9
ICdub25lJzsKICAgICAgICAgICAgYnRuU2VydmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAg
ICAgICAgfQogICAgfSwKCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gU1lOQyAocGVyaW9kaXNjaCBw
cnVlZmVuIG9iIGFuZGVyZSBVc2VyIGV0d2FzIGdlYWVuZGVydCBoYWJlbikKICAgIC8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CgogICAgc3RhcnRTeW5jKCkgewogICAgICAgIGlmICh0aGlzLnN5bmNJbnRlcnZhbCkgY2xl
YXJJbnRlcnZhbCh0aGlzLnN5bmNJbnRlcnZhbCk7CiAgICAgICAgdGhpcy5fbGFzdFZpc3VhbFN5
bmMgPSAwOwoKICAgICAgICB0aGlzLnN5bmNJbnRlcnZhbCA9IHNldEludGVydmFsKGFzeW5jICgp
ID0+IHsKICAgICAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3RlZCkgcmV0dXJuOwoKICAgICAgICAg
ICAgdHJ5IHsKICAgICAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7CgogICAgICAgICAg
ICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgICAgICAgICBj
b25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS9zY2FuJyk7CiAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c2VydmVyRmlsZXMgPSBkYXRhLmZpbGVzIHx8IFtdOwoKICAgICAgICAgICAgICAgICAgICAvLyBB
bnphaGwgZ2VhZW5kZXJ0PwogICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2ZXJGaWxlcy5sZW5n
dGggIT09IHRoaXMuZG9jdW1lbnRzLmxlbmd0aCkgeyBjaGFuZ2VkID0gdHJ1ZTsgfQoKICAgICAg
ICAgICAgICAgICAgICAvLyBUaW1lc3RhbXBzIGdlYWVuZGVydD8KICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNoYW5nZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbnRy
eSBvZiBzZXJ2ZXJGaWxlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9j
SWQgPSBlbnRyeS5maWxlbmFtZS5zcGxpdCgnXycpWzBdOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgbWV0YSA9IHRoaXMuZmlsZVRpbWVzdGFtcHNbZG9jSWRdOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtZXRhIHx8IGVudHJ5Lm1vZGlmaWVkICE9PSBtZXRhLm1v
ZGlmaWVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIEZpbGVz
eXN0ZW0tTW9kdXM6IERhdGVpZW4gcHJ1ZWZlbgogICAgICAgICAgICAgICAgICAgIGxldCB0b3Rh
bEZpbGVzID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGthdCBvZiAodGhpcy5j
b25maWcua2F0ZWdvcmllbiB8fCBbXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGthdERpciA9IGF3YWl0IHRoaXMuX2Rh
dGFIYW5kbGUuZ2V0RGlyZWN0b3J5SGFuZGxlKGthdCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgYXdhaXQgKGNvbnN0IFtuYW1lLCBoYW5kbGVdIG9mIGthdERpcikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLmVuZHNXaXRoKCcuanNvbicpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsRmlsZXMrKzsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGhhbmRsZS5nZXRG
aWxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvY0lkID0g
bmFtZS5zcGxpdCgnXycpWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBtZXRhID0gdGhpcy5maWxlVGltZXN0YW1wc1tkb2NJZF07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghbWV0YSB8fCBmaWxlLmxhc3RNb2RpZmllZCA+IG1ldGEu
bW9kaWZpZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgIGlmICh0b3RhbEZpbGVzICE9PSB0aGlzLmRvY3VtZW50cy5sZW5n
dGgpIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8v
IExvY2tzIGltbWVyIGFrdHVhbGlzaWVyZW4gKHVuYWJoYWVuZ2lnIHZvbiBEb2t1bWVudGVuYWVu
ZGVydW5nZW4pCiAgICAgICAgICAgICAgICBhd2FpdCBEcml2ZVBvcnRhbC5sb2FkTG9ja3MoKTsK
CiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkgewogICAgICAgICAgICAgICAgICAgIGF3YWl0
IHRoaXMubG9hZEFsbERvY3VtZW50cygpOwogICAgICAgICAgICAgICAgICAgIGF3YWl0IERyaXZl
R292ZXJuYW5jZS5sb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgRHJpdmVQb3J0YWwucmVuZGVy
KCk7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N5bmNJbmZv
JykudGV4dENvbnRlbnQgPSAnQWt0dWFsaXNpZXJ0OiAnICsgbmV3IERhdGUoKS50b0xvY2FsZVRp
bWVTdHJpbmcoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
Ly8gQXVjaCBvaG5lIERva3VtZW50ZW5hZW5kZXJ1bmdlbiBkaWUgTGlzdGUgbmV1IHJlbmRlcm4g
KExvY2stU3RhdHVzKQogICAgICAgICAgICAgICAgICAgIERyaXZlUG9ydGFsLnJlbmRlckxpc3Qo
KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBWaXN1ZWxsZSBBbnplaWdl
IGltIEZvb3RlciBudXIgYWxsZSAyMCBNaW51dGVuCiAgICAgICAgICAgICAgICBjb25zdCBub3cg
PSBEYXRlLm5vdygpOwogICAgICAgICAgICAgICAgaWYgKG5vdyAtIHRoaXMuX2xhc3RWaXN1YWxT
eW5jID49IDEyMDAwMDApIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0VmlzdWFsU3lu
YyA9IG5vdzsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdmb290ZXJTeW5jU3RhdHVzJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gJ0QuUi5JLlYuRS4gYWt0
dWFsaXNpZXJ0JzsKICAgICAgICAgICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgndmlz
aWJsZScpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGVsLmNsYXNz
TGlzdC5yZW1vdmUoJ3Zpc2libGUnKSwgNDAwMCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgICAg
IGNvbnNvbGUud2FybignU3luYy1GZWhsZXI6JywgZXJyKTsKICAgICAgICAgICAgfQogICAgICAg
IH0sIDMwMDAwMCk7CiAgICB9Cn07CgovLyA9PT09PT09PT09PT09PT09PT09PT0gUE9SVEFMIFVJ
ID09PT09PT09PT09PT09PT09PT09PQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTW9kdWw6
IERyaXZlUG9ydGFsIC0gRG9rdW1lbnRlbmxpc3RlLCBGaWx0ZXIsIERldGFpbGFuc2ljaHQKLy8g
WnVzdGFlbmRpZyBmdWVyOiBSZW5kZXJuIGRlciBEb2t1bWVudGVubGlzdGUsIFN1Y2hlcmdlYm5p
c3NlLCBEZXRhaWwtVmlldywgVGFiZWxsZW5hbnNpY2h0Ci8vIFNpY2hlcmhlaXQ6IEFsbGUgQmVu
dXR6ZXJkYXRlbiB3ZXJkZW4gdm9yIGRlciBEYXJzdGVsbHVuZyB1ZWJlciBlc2NhcGVIVE1MKCkg
LyBlc2NhcGVBdHRyKCkKLy8gICAgICAgICAgICAgYmVyZWluaWd0IChYU1MtU2NodXR6KS4gU2lj
aHRiYXJrZWl0c2ZpbHRlciAoY2FuU2VlRG9jdW1lbnQpIGlzdCByZWluIGNsaWVudHNlaXRpZwov
LyAgICAgICAgICAgICB1bmQgZGllbnQgZGVyIEJlbnV0emVyZnVlaHJ1bmcgLSBkaWUgc2VydmVy
c2VpdGlnZSBBdXRvcmlzaWVydW5nIGJsZWlidCBtYXNzZ2VibGljaC4KLy8gPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KY29uc3QgRHJpdmVQb3J0YWwgPSB7CiAgICBmaWx0ZXJlZERvY3VtZW50czogW10s
CiAgICBzZWxlY3RlZERvY0lkOiBudWxsLAogICAgY3VycmVudENhdGVnb3J5RmlsdGVyOiAnYWxs
JywKICAgIGN1cnJlbnRTdGF0dXNGaWx0ZXI6ICdhbGwnLAogICAgdGFibGVWaWV3QWN0aXZlOiBm
YWxzZSwKICAgIF90YWJsZVNvcnRDb2w6ICdlcnN0ZWxsdCcsCiAgICBfdGFibGVTb3J0RGlyOiAn
ZGVzYycsCgogICAgYXN5bmMgaW5pdCgpIHsKICAgICAgICAvLyBTdGFydHNlaXRlbi1IVE1MOiB3
aXJkIGluaXRpYWwgYXVzIGRlbSBET00gZ2VsZXNlbiwgc3BhZXRlciB2b24KICAgICAgICAvLyBs
b2FkU3RhcnRzZWl0ZSgpL3NhdmVTdGFydHNlaXRlKCkgbWl0IGRlbSBnZXNwZWljaGVydGVuIElu
aGFsdCB1ZWJlcnNjaHJpZWJlbi4KICAgICAgICB0aGlzLl93ZWxjb21lSFRNTCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVudERldGFpbCcpLmlubmVySFRNTDsKICAgICAgICB0aGlz
LnNldHVwRmlsdGVycygpOwogICAgICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVycygpOwogICAg
ICAgIGF3YWl0IHRoaXMubG9hZExvY2tzKCk7CiAgICAgICAgdGhpcy5yZW5kZXIoKTsKICAgIH0s
CgogICAgc2V0dXBGaWx0ZXJzKCkgewogICAgICAgIGNvbnN0IGNhdENvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjYXRlZ29yeUZpbHRlcnMnKTsKICAgICAgICBjYXRDb250YWlu
ZXIuaW5uZXJIVE1MID0gJyc7CgogICAgICAgIC8vICJBbGxlIiBCdXR0b24KICAgICAgICBjb25z
dCBhbGxCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICAgICBhbGxC
dG4uY2xhc3NOYW1lID0gJ2ZpbHRlci1idG4gYWN0aXZlJzsKICAgICAgICBhbGxCdG4uc2V0QXR0
cmlidXRlKCdkYXRhLWZpbHRlcicsICdhbGwnKTsKICAgICAgICBhbGxCdG4udGV4dENvbnRlbnQg
PSAnQWxsZSc7CiAgICAgICAgYWxsQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4g
dGhpcy5zZXRDYXRlZ29yeSgnYWxsJykpOwogICAgICAgIGNhdENvbnRhaW5lci5hcHBlbmRDaGls
ZChhbGxCdG4pOwoKICAgICAgICAvLyBLYXRlZ29yaWUtQnV0dG9ucyAoYWxwaGFiZXRpc2NoIHNv
cnRpZXJ0LCBhdXNnZWJsZW5kZXRlIHVlYmVyc3ByaW5nZW4pCiAgICAgICAgdmFyIGhpZGRlbkth
dHMgPSBEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRlZ29yaWVuIHx8IFtdOwogICAgICAgIChEcml2
ZUZTLmNvbmZpZy5rYXRlZ29yaWVuIHx8IFtdKS5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSxiKXsg
cmV0dXJuIGEubG9jYWxlQ29tcGFyZShiLCAnZGUnKTsgfSkuZm9yRWFjaChrYXQgPT4gewogICAg
ICAgICAgICBpZiAoaGlkZGVuS2F0cy5pbmNsdWRlcyhrYXQpKSByZXR1cm47CiAgICAgICAgICAg
IGNvbnN0IGJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICAgICAg
ICBidG4uY2xhc3NOYW1lID0gJ2ZpbHRlci1idG4nOwogICAgICAgICAgICBidG4uc2V0QXR0cmli
dXRlKCdkYXRhLWZpbHRlcicsIGthdCk7CiAgICAgICAgICAgIGJ0bi50ZXh0Q29udGVudCA9IGth
dDsKICAgICAgICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5z
ZXRDYXRlZ29yeShrYXQpKTsKICAgICAgICAgICAgY2F0Q29udGFpbmVyLmFwcGVuZENoaWxkKGJ0
bik7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFN0YXR1cy1GaWx0ZXIgKGltIExlc2Vtb2R1cyBh
dXNibGVuZGVuIOKAkyBlcyBnaWJ0IG51ciBmcmVpZ2VnZWJlbmUgRG9rdW1lbnRlKQogICAgICAg
IGNvbnN0IHN0YXR1c0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0dXNG
aWx0ZXJzJyk7CiAgICAgICAgc3RhdHVzQ29udGFpbmVyLmlubmVySFRNTCA9ICcnOwoKICAgICAg
ICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc3RhdGljJykgewogICAgICAgICAgICAvLyBMZXNlbW9k
dXM6IEtlaW5lIFN0YXR1cy1GaWx0ZXIgbm9ldGlnCiAgICAgICAgICAgIHN0YXR1c0NvbnRhaW5l
ci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0
YXR1c0NvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgIGNvbnN0IGFsbFN0
YXR1c0J0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICAgICAgICBh
bGxTdGF0dXNCdG4uY2xhc3NOYW1lID0gJ3N0YXR1cy1maWx0ZXItYnRuIGFjdGl2ZSc7CiAgICAg
ICAgICAgIGFsbFN0YXR1c0J0bi5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdHVzJywgJ2FsbCcpOwog
ICAgICAgICAgICBhbGxTdGF0dXNCdG4udGV4dENvbnRlbnQgPSAnQWxsZSBTdGF0dXMnOwogICAg
ICAgICAgICBhbGxTdGF0dXNCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlz
LnNldFN0YXR1cygnYWxsJykpOwogICAgICAgICAgICBzdGF0dXNDb250YWluZXIuYXBwZW5kQ2hp
bGQoYWxsU3RhdHVzQnRuKTsKCiAgICAgICAgICAgIGNvbnN0IGlzU1UgPSBEcml2ZUdvdmVybmFu
Y2UuaXNTdXBlclVzZXIoKTsKICAgICAgICAgICAgY29uc3QgaXNGQSA9IERyaXZlR292ZXJuYW5j
ZS5pc0ZhY2hhdWZzaWNodCgpOwogICAgICAgICAgICBjb25zdCBzdGF0dXNDb25maWcgPSBEcml2
ZUZTLmNvbmZpZy5zdGF0dXMgfHwge307CiAgICAgICAgICAgIE9iamVjdC5rZXlzKHN0YXR1c0Nv
bmZpZykuZm9yRWFjaChzdGF0dXMgPT4gewogICAgICAgICAgICAgICAgLy8gIkFiZ2VsZWhudCIg
bnVyIGZ1ZXIgU3VwZXJVc2VyIHVuZCBGYWNoYXVmc2ljaHQKICAgICAgICAgICAgICAgIGlmIChz
dGF0dXMgPT09ICdBYmdlbGVobnQnICYmICFpc1NVICYmICFpc0ZBKSByZXR1cm47CiAgICAgICAg
ICAgICAgICBjb25zdCBjZmcgPSBzdGF0dXNDb25maWdbc3RhdHVzXTsKICAgICAgICAgICAgICAg
IGNvbnN0IGJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICAgICAg
ICAgICAgYnRuLmNsYXNzTmFtZSA9ICdzdGF0dXMtZmlsdGVyLWJ0bic7CiAgICAgICAgICAgICAg
ICBidG4uc2V0QXR0cmlidXRlKCdkYXRhLXN0YXR1cycsIHN0YXR1cyk7CiAgICAgICAgICAgICAg
ICBidG4uaW5uZXJIVE1MID0gY2ZnLmxhYmVsOwogICAgICAgICAgICAgICAgYnRuLnN0eWxlLmJv
cmRlckNvbG9yID0gY2ZnLmNvbG9yOwogICAgICAgICAgICAgICAgYnRuLmFkZEV2ZW50TGlzdGVu
ZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5zZXRTdGF0dXMoc3RhdHVzKSk7CiAgICAgICAgICAgICAg
ICBzdGF0dXNDb250YWluZXIuYXBwZW5kQ2hpbGQoYnRuKTsKICAgICAgICAgICAgfSk7CiAgICAg
ICAgfQogICAgfSwKCiAgICBzZXR1cEV2ZW50TGlzdGVuZXJzKCkgewogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzZWFyY2hJbnB1dCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywg
KCkgPT4gdGhpcy5yZW5kZXIoKSk7CiAgICB9LAoKICAgIHNldENhdGVnb3J5KGNhdCkgewogICAg
ICAgIHRoaXMuY3VycmVudENhdGVnb3J5RmlsdGVyID0gY2F0OwogICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJyNjYXRlZ29yeUZpbHRlcnMgLmZpbHRlci1idG4nKS5mb3JFYWNoKGJ0
biA9PiB7CiAgICAgICAgICAgIGJ0bi5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCBidG4uZ2V0
QXR0cmlidXRlKCdkYXRhLWZpbHRlcicpID09PSBjYXQpOwogICAgICAgIH0pOwogICAgICAgIHRo
aXMucmVuZGVyKCk7CiAgICB9LAoKICAgIHNldFN0YXR1cyhzdGF0dXMpIHsKICAgICAgICB0aGlz
LmN1cnJlbnRTdGF0dXNGaWx0ZXIgPSBzdGF0dXM7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgnI3N0YXR1c0ZpbHRlcnMgLnN0YXR1cy1maWx0ZXItYnRuJykuZm9yRWFjaChidG4g
PT4gewogICAgICAgICAgICBidG4uY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgYnRuLmdldEF0
dHJpYnV0ZSgnZGF0YS1zdGF0dXMnKSA9PT0gc3RhdHVzKTsKICAgICAgICB9KTsKICAgICAgICB0
aGlzLnJlbmRlcigpOwogICAgfSwKCiAgICByZW5kZXIoKSB7CiAgICAgICAgY29uc3Qgc2VhcmNo
ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2hJbnB1dCcpLnZhbHVlIHx8ICcnKS50
b0xvd2VyQ2FzZSgpOwoKICAgICAgICB0aGlzLmZpbHRlcmVkRG9jdW1lbnRzID0gRHJpdmVGUy5k
b2N1bWVudHMuZmlsdGVyKGRvYyA9PiB7CiAgICAgICAgICAgIC8vIEdvdmVybmFuY2U6IFNpY2h0
YmFya2VpdHNwcnVlZnVuZwogICAgICAgICAgICBpZiAoIURyaXZlR292ZXJuYW5jZS5jYW5TZWVE
b2N1bWVudChkb2MpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRD
YXRlZ29yeUZpbHRlciAhPT0gJ2FsbCcgJiYgZG9jLmthdGVnb3JpZSAhPT0gdGhpcy5jdXJyZW50
Q2F0ZWdvcnlGaWx0ZXIpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVu
dFN0YXR1c0ZpbHRlciAhPT0gJ2FsbCcgJiYgZG9jLnN0YXR1cyAhPT0gdGhpcy5jdXJyZW50U3Rh
dHVzRmlsdGVyKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGlmIChzZWFyY2gpIHsKICAgICAg
ICAgICAgICAgIGNvbnN0IG1hdGNoID0gKGRvYy50aXRlbCB8fCAnJykudG9Mb3dlckNhc2UoKS5p
bmNsdWRlcyhzZWFyY2gpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2MuaW5o
YWx0IHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGRvYy5rYXRlZ29yaWUgfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5j
bHVkZXMoc2VhcmNoKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jLnNjaGxh
Z3dvZXJ0ZXIgfHwgW10pLnNvbWUoayA9PiBrLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNo
KSk7CiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSk7CgogICAgICAgIHRoaXMucmVu
ZGVyTGlzdCgpOwogICAgICAgIGlmICh0aGlzLnRhYmxlVmlld0FjdGl2ZSkgdGhpcy5yZW5kZXJU
YWJsZVZpZXcoKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jQ291bnQnKS50
ZXh0Q29udGVudCA9IHRoaXMuZmlsdGVyZWREb2N1bWVudHMubGVuZ3RoICsgJyAvICcgKyBEcml2
ZUZTLmRvY3VtZW50cy5sZW5ndGg7CgogICAgICAgIC8vIFVwZGF0ZSBjb25uZWN0aW9uIHRleHQK
ICAgICAgICBEcml2ZUZTLnVwZGF0ZUNvbm5lY3Rpb25VSSh0cnVlKTsKICAgIH0sCgogICAgYWN0
aXZlTG9ja3M6IHt9LCAgLy8gZG9jSWQgLT4geyB1c2VybmFtZSwgbWludXRlcyB9CgogICAgYXN5
bmMgbG9hZExvY2tzKCkgewogICAgICAgIGlmIChEcml2ZUZTLm1vZGUgIT09ICdzZXJ2ZXInKSBy
ZXR1cm47CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2go
Jy9hcGkvbG9ja3MnKTsKICAgICAgICAgICAgaWYgKHJlcy5vaykgewogICAgICAgICAgICAgICAg
Y29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7CiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2
ZUxvY2tzID0ge307CiAgICAgICAgICAgICAgICAoZGF0YS5sb2NrcyB8fCBbXSkuZm9yRWFjaChs
ID0+IHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUxvY2tzW2wuZG9jSWRdID0geyB1
c2VybmFtZTogbC51c2VybmFtZSwgbWludXRlczogbC5taW51dGVzIH07CiAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2gge30KICAgIH0sCgogICAgX3NvcnRX
aXRoQ2hpbGRyZW4oZG9jcykgewogICAgICAgIC8vIFNvcnRpZXJlOiBFbHRlcm5hcnRpa2VsIHp1
ZXJzdCwgS2luZGVyIGRpcmVrdCBkYWhpbnRlcgogICAgICAgIGNvbnN0IHRvcExldmVsID0gZG9j
cy5maWx0ZXIoZnVuY3Rpb24oZCl7IHJldHVybiAhZC5wYXJlbnRJZDsgfSk7CiAgICAgICAgY29u
c3QgY2hpbGRNYXAgPSB7fTsKICAgICAgICBkb2NzLmZpbHRlcihmdW5jdGlvbihkKXsgcmV0dXJu
IGQucGFyZW50SWQ7IH0pLmZvckVhY2goZnVuY3Rpb24oZCl7CiAgICAgICAgICAgIGlmICghY2hp
bGRNYXBbZC5wYXJlbnRJZF0pIGNoaWxkTWFwW2QucGFyZW50SWRdID0gW107CiAgICAgICAgICAg
IGNoaWxkTWFwW2QucGFyZW50SWRdLnB1c2goZCk7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIHJl
c3VsdCA9IFtdOwogICAgICAgIHRvcExldmVsLmZvckVhY2goZnVuY3Rpb24ocCl7CiAgICAgICAg
ICAgIHJlc3VsdC5wdXNoKHApOwogICAgICAgICAgICBpZiAoY2hpbGRNYXBbcC5pZF0pIGNoaWxk
TWFwW3AuaWRdLmZvckVhY2goZnVuY3Rpb24oYyl7IHJlc3VsdC5wdXNoKGMpOyB9KTsKICAgICAg
ICB9KTsKICAgICAgICAvLyBXYWlzZW4tS2luZGVyIChFbHRlcm4gbmljaHQgaW4gZGVyIGdlZmls
dGVydGVuIExpc3RlKQogICAgICAgIGRvY3MuZmlsdGVyKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5w
YXJlbnRJZCAmJiAhdG9wTGV2ZWwuZmluZChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD09PWQucGFy
ZW50SWQ7fSk7IH0pLmZvckVhY2goZnVuY3Rpb24oZCl7CiAgICAgICAgICAgIGlmIChyZXN1bHQu
aW5kZXhPZihkKSA9PT0gLTEpIHJlc3VsdC5wdXNoKGQpOwogICAgICAgIH0pOwogICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICB9LAoKICAgIHJlbmRlckxpc3QoKSB7CiAgICAgICAgY29uc3QgbGlz
dENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb2N1bWVudExpc3QnKTsKICAg
ICAgICBjb25zdCBzdGF0dXNDb25maWcgPSBEcml2ZUZTLmNvbmZpZy5zdGF0dXMgfHwge307Cgog
ICAgICAgIGlmICh0aGlzLmZpbHRlcmVkRG9jdW1lbnRzLmxlbmd0aCA9PT0gMCkgewogICAgICAg
ICAgICBsaXN0Q29udGFpbmVyLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+
PHA+S2VpbmUgRG9rdW1lbnRlIGdlZnVuZGVuLjwvcD48L2Rpdj4nOwogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgfQoKICAgICAgICBjb25zdCBzb3J0ZWQgPSB0aGlzLl9zb3J0V2l0aENoaWxk
cmVuKHRoaXMuZmlsdGVyZWREb2N1bWVudHMpOwogICAgICAgIGxpc3RDb250YWluZXIuaW5uZXJI
VE1MID0gc29ydGVkLm1hcChkb2MgPT4gewogICAgICAgICAgICBjb25zdCBjZmcgPSBzdGF0dXND
b25maWdbZG9jLnN0YXR1c10gfHwgeyBjb2xvcjogJyNlZWUnLCB0ZXh0Q29sb3I6ICcjMzMzJywg
aWNvbjogJycgfTsKICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLnNlbGVjdGVkRG9j
SWQgPT09IGRvYy5pZDsKICAgICAgICAgICAgY29uc3QgaXNEcmFmdCA9IGRvYy5zdGF0dXMgPT09
ICdFbnR3dXJmJzsKICAgICAgICAgICAgY29uc3QgaGFzTWVkaWEgPSBkb2MubWVkaWFzICYmIGRv
Yy5tZWRpYXMubGVuZ3RoID4gMDsKICAgICAgICAgICAgY29uc3QgbG9jayA9IHRoaXMuYWN0aXZl
TG9ja3NbZG9jLmlkXTsKICAgICAgICAgICAgY29uc3QgaXNMb2NrZWQgPSBsb2NrICYmIGxvY2su
dXNlcm5hbWUgIT09IChEcml2ZUZTLmVudmlyb24gPyBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUg
OiAnJyk7CgogICAgICAgICAgICAvLyBTdGF0dXMtQmFkZ2U6ICJGcmVpZ2VnZWJlbiIgbmljaHQg
YW56ZWlnZW4gKGlzdCBkZXIgTm9ybWFsenVzdGFuZCkKICAgICAgICAgICAgdmFyIHNob3dTdGF0
dXMgPSBkb2Muc3RhdHVzICE9PSAnRnJlaWdlZ2ViZW4nOwoKICAgICAgICAgICAgcmV0dXJuICc8
ZGl2IGNsYXNzPSJkb2N1bWVudC1pdGVtJyArIChpc0FjdGl2ZSA/ICcgYWN0aXZlJyA6ICcnKSAr
IChpc0RyYWZ0ID8gJyBkcmFmdCcgOiAnJykgKyAoZG9jLnBhcmVudElkID8gJyBjaGlsZC1hcnRp
Y2xlJyA6ICcnKSArICciIG9uY2xpY2s9IkRyaXZlUG9ydGFsLnNlbGVjdERvY3VtZW50KFwnJyAr
IERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLmlkKSArICdcJykiPicgKwogICAgICAgICAgICAg
ICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vl
bjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYg
c3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MDsiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAn
PGRpdiBjbGFzcz0iZG9jLWl0ZW0tdGl0bGUiPicgKyB0aGlzLmVzY2FwZUhUTUwoZG9jLnRpdGVs
KSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNMb2NrZWQgPyAnIDxzcGFuIHN0eWxl
PSJmb250LXNpemU6MTFweDsgY29sb3I6I2RjMzU0NTsgZm9udC13ZWlnaHQ6NDAwOyIgdGl0bGU9
IldpcmQgYmVhcmJlaXRldCB2b24gJyArIHRoaXMuZXNjYXBlQXR0cihsb2NrLnVzZXJuYW1lKSAr
ICciPltnZXNwZXJydDogJyArIHRoaXMuZXNjYXBlSFRNTChsb2NrLnVzZXJuYW1lKSArICddPC9z
cGFuPicgOiAnJykgKwogICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAg
ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkb2MtaXRlbS1tZXRhIj4nICsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkb2MtaXRlbS1jYXRlZ29yeSI+JyArIHRo
aXMuZXNjYXBlSFRNTChkb2Mua2F0ZWdvcmllKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChoYXNNZWRpYSA/ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHg7IGNv
bG9yOnZhcigtLXRleHQtbXV0ZWQpOyI+K01lZGllbjwvc3Bhbj4nIDogJycpICsKICAgICAgICAg
ICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBj
bGFzcz0iZG9jLWl0ZW0tZGF0ZSI+JyArIGZvcm1hdERhdGUoZG9jLmVyc3RlbGx0KSArCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZG9jLmJlYXJiZWl0ZXRWb24gPyAnIHwgJyArIHRoaXMu
ZXNjYXBlSFRNTChkb2MuYmVhcmJlaXRldFZvbikgOiAnJykgKwogICAgICAgICAgICAgICAgICAg
ICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgIChkb2MucGFyZW50SWQgPyAn
PGRpdiBjbGFzcz0iZG9jLXBhcmVudC1yZWYiPuKGsyBVbnRlcmFydGlrZWw8L2Rpdj4nIDogJycp
ICsKICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgKHNo
b3dTdGF0dXMgPyAnPGRpdiBjbGFzcz0ic3RhdHVzLWJhZGdlLXNtYWxsIiBzdHlsZT0iYmFja2dy
b3VuZC1jb2xvcjonICsgY2ZnLmNvbG9yICsgJzsgY29sb3I6JyArIGNmZy50ZXh0Q29sb3IgKyAn
O2ZsZXgtc2hyaW5rOjA7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi10b3A6MnB4OyI+JyArIGRvYy5z
dGF0dXMgKyAnPC9kaXY+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAg
ICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pLmpvaW4oJycpOwogICAgfSwKCiAgICB0b2dnbGVU
YWJsZVZpZXcoKSB7CiAgICAgICAgdGhpcy50YWJsZVZpZXdBY3RpdmUgPSAhdGhpcy50YWJsZVZp
ZXdBY3RpdmU7CiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRhaW5lcicpOwogICAgICAgIGNvbnN0IHRhYmxlQ29udGFpbmVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RhYmxlVmlld0NvbnRhaW5lcicpOwogICAgICAgIGNvbnN0IGJ0biA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5UYWJsZVZpZXcnKTsKICAgICAgICBpZiAodGhp
cy50YWJsZVZpZXdBY3RpdmUpIHsKICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLmRpc3BsYXkg
PSAnbm9uZSc7CiAgICAgICAgICAgIHRhYmxlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2FjdGl2
ZScpOwogICAgICAgICAgICBidG4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3ZhcigtLXRleHQt
aGVhZGluZyknOyBidG4uc3R5bGUuY29sb3IgPSAnd2hpdGUnOwogICAgICAgICAgICB0aGlzLnJl
bmRlclRhYmxlVmlldygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnRhaW5lci5z
dHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgIHRhYmxlQ29udGFpbmVyLmNsYXNzTGlzdC5y
ZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgICAgICBidG4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
Jyc7IGJ0bi5zdHlsZS5jb2xvciA9ICcnOwogICAgICAgIH0KICAgIH0sCgogICAgc29ydFRhYmxl
KGNvbCkgewogICAgICAgIGlmICh0aGlzLl90YWJsZVNvcnRDb2wgPT09IGNvbCkgewogICAgICAg
ICAgICB0aGlzLl90YWJsZVNvcnREaXIgPSB0aGlzLl90YWJsZVNvcnREaXIgPT09ICdhc2MnID8g
J2Rlc2MnIDogJ2FzYyc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fdGFibGVT
b3J0Q29sID0gY29sOwogICAgICAgICAgICB0aGlzLl90YWJsZVNvcnREaXIgPSAnYXNjJzsKICAg
ICAgICB9CiAgICAgICAgdGhpcy5yZW5kZXJUYWJsZVZpZXcoKTsKICAgIH0sCgogICAgX3RhYmxl
U2VsZWN0ZWQ6IFtdLAoKICAgIHJlbmRlclRhYmxlVmlldygpIHsKICAgICAgICBjb25zdCBkb2Nz
ID0gdGhpcy5maWx0ZXJlZERvY3VtZW50czsKICAgICAgICBjb25zdCBjb2wgPSB0aGlzLl90YWJs
ZVNvcnRDb2w7CiAgICAgICAgY29uc3QgZGlyID0gdGhpcy5fdGFibGVTb3J0RGlyID09PSAnYXNj
JyA/IDEgOiAtMTsKICAgICAgICBjb25zdCBzb3J0ZWQgPSBbLi4uZG9jc10uc29ydChmdW5jdGlv
bihhLCBiKSB7CiAgICAgICAgICAgIHZhciB2YSwgdmI7CiAgICAgICAgICAgIGlmIChjb2wgPT09
ICdzY2hsYWd3b2VydGVyJykgewogICAgICAgICAgICAgICAgdmEgPSAoYS5zY2hsYWd3b2VydGVy
IHx8IFtdKS5qb2luKCcsJyk7IHZiID0gKGIuc2NobGFnd29lcnRlciB8fCBbXSkuam9pbignLCcp
OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmEgPSAoYVtjb2xdIHx8ICcn
KTsgdmIgPSAoYltjb2xdIHx8ICcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodHlw
ZW9mIHZhID09PSAnc3RyaW5nJykgcmV0dXJuIHZhLmxvY2FsZUNvbXBhcmUodmIsICdkZScpICog
ZGlyOwogICAgICAgICAgICByZXR1cm4gKHZhIC0gdmIpICogZGlyOwogICAgICAgIH0pOwoKICAg
ICAgICBjb25zdCBzYyA9IHRoaXMuX3RhYmxlU29ydENvbDsKICAgICAgICBjb25zdCBzZCA9IHRo
aXMuX3RhYmxlU29ydERpcjsKICAgICAgICB2YXIgY2xzID0gZnVuY3Rpb24oYykgeyByZXR1cm4g
YyA9PT0gc2MgPyAnIGNsYXNzPSJzb3J0ZWQtJyArIHNkICsgJyInIDogJyc7IH07CiAgICAgICAg
Y29uc3Qgc3RhdHVzQ29uZmlnID0gRHJpdmVGUy5jb25maWcuc3RhdHVzIHx8IHt9OwogICAgICAg
IC8vIEFkbWluLUZ1bmt0aW9uZW4gKENoZWNrYm94ZW4sIFN0aWZ0KSBudXIgd2VubjoKICAgICAg
ICAvLyAxLiBTZXJ2ZXItTW9kdXMgYWt0aXYgKHNlcnZlcnNlaXRpZ2VyIFNjaHV0eiB2b3JoYW5k
ZW4pCiAgICAgICAgLy8gMi4gR292ZXJuYW5jZS1EYXRlbiBnZWxhZGVuIFVORCBVc2VyIGlzdCBT
VS9GQQogICAgICAgIHZhciBoYXNHb3Zlcm5hbmNlID0gRHJpdmVHb3Zlcm5hbmNlLmRhdGEgJiYg
RHJpdmVHb3Zlcm5hbmNlLmRhdGEuc3VwZXJVc2VyczsKICAgICAgICB2YXIgaXNBZG1pbiA9IERy
aXZlRlMubW9kZSA9PT0gJ3NlcnZlcicgJiYgaGFzR292ZXJuYW5jZSAmJiAoRHJpdmVHb3Zlcm5h
bmNlLmlzU3VwZXJVc2VyKCkgfHwgRHJpdmVHb3Zlcm5hbmNlLmlzRmFjaGF1ZnNpY2h0KCkpOwog
ICAgICAgIHRoaXMuX3RhYmxlU2VsZWN0ZWQgPSBbXTsKCiAgICAgICAgLy8gQnVsay1Ba3Rpb25z
bGVpc3RlIChudXIgU1UvRkEpCiAgICAgICAgdmFyIGh0bWwgPSAnJzsKICAgICAgICBpZiAoaXNB
ZG1pbikgewogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPSJ0YWJsZUJ1bGtCYXIiIHN0eWxl
PSJkaXNwbGF5Om5vbmU7cGFkZGluZzo4cHggMTRweDtiYWNrZ3JvdW5kOnZhcigtLXRleHQtaGVh
ZGluZyk7Y29sb3I6d2hpdGU7Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luLWJvdHRvbTo4cHg7ZGlz
cGxheTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtmb250LXNpemU6MTNweDsiPicg
KwogICAgICAgICAgICAgICAgJzxzcGFuIGlkPSJ0YWJsZUJ1bGtDb3VudCI+MCBhdXNnZXfDpGhs
dDwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IkRyaXZlUG9ydGFs
LmJ1bGtRdWlja0VkaXQoKSIgc3R5bGU9InBhZGRpbmc6NHB4IDEycHg7Ym9yZGVyOjFweCBzb2xp
ZCB3aGl0ZTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOndoaXRlO2JvcmRlci1yYWRpdXM6
NHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4OyI+U2NobmVsbGJlYXJiZWl0dW5nPC9i
dXR0b24+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5i
dWxrRGVsZXRlKCkiIHN0eWxlPSJwYWRkaW5nOjRweCAxMnB4O2JvcmRlcjoxcHggc29saWQgI2Y4
ODtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiNmYWE7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vy
c29yOnBvaW50ZXI7Zm9udC1zaXplOjEycHg7Ij5Mw7ZzY2hlbjwvYnV0dG9uPicgKwogICAgICAg
ICAgICAnPC9kaXY+JzsKICAgICAgICB9CgogICAgICAgIGh0bWwgKz0gJzx0YWJsZSBjbGFzcz0i
ZHJpdmUtdGFibGUiPjx0aGVhZD48dHI+JyArCiAgICAgICAgICAgIChpc0FkbWluID8gJzx0aCBz
dHlsZT0id2lkdGg6MzBweDsiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InRhYmxlU2VsZWN0
QWxsIiBvbmNoYW5nZT0iRHJpdmVQb3J0YWwudGFibGVUb2dnbGVBbGwodGhpcy5jaGVja2VkKSIg
dGl0bGU9IkFsbGUgYXVzd8OkaGxlbiI+PC90aD4nIDogJycpICsKICAgICAgICAgICAgJzx0aCcg
KyBjbHMoJ3RpdGVsJykgKyAnIG9uY2xpY2s9IkRyaXZlUG9ydGFsLnNvcnRUYWJsZShcJ3RpdGVs
XCcpIj5UaXRlbDwvdGg+JyArCiAgICAgICAgICAgICc8dGgnICsgY2xzKCdrYXRlZ29yaWUnKSAr
ICcgb25jbGljaz0iRHJpdmVQb3J0YWwuc29ydFRhYmxlKFwna2F0ZWdvcmllXCcpIj5LYXRlZ29y
aWU8L3RoPicgKwogICAgICAgICAgICAnPHRoJyArIGNscygnc3RhdHVzJykgKyAnIG9uY2xpY2s9
IkRyaXZlUG9ydGFsLnNvcnRUYWJsZShcJ3N0YXR1c1wnKSI+U3RhdHVzPC90aD4nICsKICAgICAg
ICAgICAgJzx0aCcgKyBjbHMoJ2Vyc3RlbGx0Vm9uJykgKyAnIG9uY2xpY2s9IkRyaXZlUG9ydGFs
LnNvcnRUYWJsZShcJ2Vyc3RlbGx0Vm9uXCcpIj5FcnN0ZWxsZXI8L3RoPicgKwogICAgICAgICAg
ICAnPHRoJyArIGNscygnZXJzdGVsbHQnKSArICcgb25jbGljaz0iRHJpdmVQb3J0YWwuc29ydFRh
YmxlKFwnZXJzdGVsbHRcJykiPkVyc3RlbGx0PC90aD4nICsKICAgICAgICAgICAgJzx0aCcgKyBj
bHMoJ2dlYWVuZGVydCcpICsgJyBvbmNsaWNrPSJEcml2ZVBvcnRhbC5zb3J0VGFibGUoXCdnZWFl
bmRlcnRcJykiPkdlw6RuZGVydDwvdGg+JyArCiAgICAgICAgICAgICc8dGgnICsgY2xzKCd2ZXJz
aW9uJykgKyAnIG9uY2xpY2s9IkRyaXZlUG9ydGFsLnNvcnRUYWJsZShcJ3ZlcnNpb25cJykiPlZl
cnNpb248L3RoPicgKwogICAgICAgICAgICAoaXNBZG1pbiA/ICc8dGggc3R5bGU9IndpZHRoOjQw
cHg7Ij48L3RoPicgOiAnJykgKwogICAgICAgICc8L3RyPjwvdGhlYWQ+PHRib2R5Pic7CgogICAg
ICAgIHNvcnRlZC5mb3JFYWNoKGZ1bmN0aW9uKGRvYykgewogICAgICAgICAgICB2YXIgY2ZnID0g
c3RhdHVzQ29uZmlnW2RvYy5zdGF0dXNdIHx8IHsgY29sb3I6ICcjZWVlJywgdGV4dENvbG9yOiAn
IzMzMycsIGljb246ICcnIH07CiAgICAgICAgICAgIGh0bWwgKz0gJzx0cj4nICsKICAgICAgICAg
ICAgICAgIChpc0FkbWluID8gJzx0ZCBvbmNsaWNrPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKSI+
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0idGFibGUtcm93LWNiIiB2YWx1ZT0iJyArIERy
aXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLmlkKSArICciIG9uY2hhbmdlPSJEcml2ZVBvcnRhbC50
YWJsZVNlbGVjdGlvbkNoYW5nZWQoKSI+PC90ZD4nIDogJycpICsKICAgICAgICAgICAgICAgICc8
dGQgb25jbGljaz0iRHJpdmVQb3J0YWwuX3RhYmxlT3BlbkRvYyhcJycgKyBEcml2ZVBvcnRhbC5l
c2NhcGVBdHRyKGRvYy5pZCkgKyAnXCcpOyIgc3R5bGU9ImN1cnNvcjpwb2ludGVyOyI+PHN0cm9u
Zz4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChkb2MudGl0ZWwpICsgJzwvc3Ryb25nPjwvdGQ+
JyArCiAgICAgICAgICAgICAgICAnPHRkPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy5r
YXRlZ29yaWUpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkPjxzcGFuIGNsYXNzPSJz
dGF0dXMtYmFkZ2Utc21hbGwiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOicgKyBjZmcuY29sb3Ig
KyAnO2NvbG9yOicgKyBjZmcudGV4dENvbG9yICsgJzsiPicgKyBkb2Muc3RhdHVzICsgJzwvc3Bh
bj48L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZD4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRN
TChkb2MuZXJzdGVsbHRWb24gfHwgJy0nKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0
ZD4nICsgZm9ybWF0RGF0ZShkb2MuZXJzdGVsbHQpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAg
ICAnPHRkPicgKyBmb3JtYXREYXRlKGRvYy5nZWFlbmRlcnQpICsgJzwvdGQ+JyArCiAgICAgICAg
ICAgICAgICAnPHRkPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy52ZXJzaW9uIHx8ICct
JykgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgIChpc0FkbWluID8gJzx0ZCBvbmNsaWNrPSJl
dmVudC5zdG9wUHJvcGFnYXRpb24oKSI+PGJ1dHRvbiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5xdWlj
a0VkaXRTaW5nbGUoXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQpICsgJ1wnKSIg
c3R5bGU9InBhZGRpbmc6MnB4IDhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xv
cik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7Ym9yZGVyLXJhZGl1czozcHg7Y3Vyc29y
OnBvaW50ZXI7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpOyIgdGl0
bGU9IlNjaG5lbGxiZWFyYmVpdHVuZyI+4pyOPC9idXR0b24+PC90ZD4nIDogJycpICsKICAgICAg
ICAgICAgJzwvdHI+JzsKICAgICAgICB9KTsKICAgICAgICBodG1sICs9ICc8L3Rib2R5PjwvdGFi
bGU+JzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGVWaWV3Q29udGFpbmVy
JykuaW5uZXJIVE1MID0gaHRtbDsKICAgIH0sCgogICAgX3RhYmxlT3BlbkRvYyhkb2NJZCkgewog
ICAgICAgIHRoaXMudGFibGVWaWV3QWN0aXZlID0gZmFsc2U7CiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGVWaWV3Q29udGFpbmVyJykuY2xhc3NMaXN0LnJlbW92
ZSgnYWN0aXZlJyk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0blRhYmxlVmll
dycpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdidG5UYWJsZVZpZXcnKS5zdHlsZS5jb2xvciA9ICcnOwogICAgICAgIHRoaXMuc2Vs
ZWN0RG9jdW1lbnQoZG9jSWQpOwogICAgfSwKCiAgICB0YWJsZVRvZ2dsZUFsbChjaGVja2VkKSB7
CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhYmxlLXJvdy1jYicpLmZvckVh
Y2goZnVuY3Rpb24oY2IpIHsgY2IuY2hlY2tlZCA9IGNoZWNrZWQ7IH0pOwogICAgICAgIHRoaXMu
dGFibGVTZWxlY3Rpb25DaGFuZ2VkKCk7CiAgICB9LAoKICAgIHRhYmxlU2VsZWN0aW9uQ2hhbmdl
ZCgpIHsKICAgICAgICB2YXIgc2VsZWN0ZWQgPSBbXTsKICAgICAgICBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcudGFibGUtcm93LWNiOmNoZWNrZWQnKS5mb3JFYWNoKGZ1bmN0aW9uKGNiKSB7
IHNlbGVjdGVkLnB1c2goY2IudmFsdWUpOyB9KTsKICAgICAgICB0aGlzLl90YWJsZVNlbGVjdGVk
ID0gc2VsZWN0ZWQ7CiAgICAgICAgdmFyIGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
YWJsZUJ1bGtCYXInKTsKICAgICAgICBpZiAoYmFyKSB7CiAgICAgICAgICAgIGJhci5zdHlsZS5k
aXNwbGF5ID0gc2VsZWN0ZWQubGVuZ3RoID4gMCA/ICdmbGV4JyA6ICdub25lJzsKICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlQnVsa0NvdW50JykudGV4dENvbnRlbnQg
PSBzZWxlY3RlZC5sZW5ndGggKyAnIGF1c2dld8OkaGx0JzsKICAgICAgICB9CiAgICB9LAoKICAg
IGJ1bGtRdWlja0VkaXQoKSB7CiAgICAgICAgaWYgKHRoaXMuX3RhYmxlU2VsZWN0ZWQubGVuZ3Ro
ID09PSAwKSByZXR1cm47CiAgICAgICAgdmFyIGRvY3MgPSB0aGlzLl90YWJsZVNlbGVjdGVkLm1h
cChmdW5jdGlvbihpZCkgeyByZXR1cm4gRHJpdmVGUy5kb2N1bWVudHMuZmluZChmdW5jdGlvbihk
KSB7IHJldHVybiBkLmlkID09PSBpZDsgfSk7IH0pLmZpbHRlcihCb29sZWFuKTsKICAgICAgICB2
YXIga2F0ZWdvcmllbiA9IERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW4gfHwgW107CiAgICAgICAg
dmFyIHN0YXR1c0xpc3QgPSBPYmplY3Qua2V5cyhEcml2ZUZTLmNvbmZpZy5zdGF0dXMgfHwge30p
OwoKICAgICAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAg
ICAgICBtb2RhbC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3
aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6
MTA1MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2Vu
dGVyOyc7CiAgICAgICAgbW9kYWwub25jbGljayA9IGZ1bmN0aW9uKGUpIHsgaWYgKGUudGFyZ2V0
ID09PSBtb2RhbCkgbW9kYWwucmVtb3ZlKCk7IH07CgogICAgICAgIHZhciBpbnB1dFN0eWxlID0g
J3dpZHRoOjEwMCU7cGFkZGluZzo2cHggMTBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRl
ci1jb2xvcik7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZDp2YXIo
LS1iZy1pbnB1dCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsnOwoKICAgICAgICB2YXIgaHRt
bCA9ICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRlci1yYWRpdXM6
MTBweDtwYWRkaW5nOjIwcHggMjRweDttYXgtd2lkdGg6NTAwcHg7d2lkdGg6OTAlO2JveC1zaGFk
b3c6MCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMyk7bWF4LWhlaWdodDo4NXZoO292ZXJmbG93LXk6
YXV0bzsiPicgKwogICAgICAgICAgICAnPGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRp
bmcpO21hcmdpbi1ib3R0b206NnB4OyI+U2NobmVsbGJlYXJiZWl0dW5nPC9oMz4nICsKICAgICAg
ICAgICAgJzxwIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtt
YXJnaW4tYm90dG9tOjE0cHg7Ij4nICsgZG9jcy5sZW5ndGggKyAnIEFydGlrZWwgYXVzZ2V3w6Ro
bHQuIE51ciBhdXNnZWbDvGxsdGUgRmVsZGVyIHdlcmRlbiBnZcOkbmRlcnQuPC9wPicgKwoKICAg
ICAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDsiPjxsYWJlbCBzdHlsZT0i
Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5
KTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206M3B4OyI+S2F0ZWdvcmllIMOkbmRlcm48L2xh
YmVsPicgKwogICAgICAgICAgICAnPHNlbGVjdCBpZD0iYnVsa0thdGVnb3JpZSIgc3R5bGU9Iicg
KyBpbnB1dFN0eWxlICsgJyI+PG9wdGlvbiB2YWx1ZT0iIj7igJQgTmljaHQgw6RuZGVybiDigJQ8
L29wdGlvbj4nOwogICAgICAgIGthdGVnb3JpZW4uZm9yRWFjaChmdW5jdGlvbihrKSB7IGh0bWwg
Kz0gJzxvcHRpb24gdmFsdWU9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGspICsgJyI+JyAr
IERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoaykgKyAnPC9vcHRpb24+JzsgfSk7CiAgICAgICAgaHRt
bCArPSAnPC9zZWxlY3Q+PC9kaXY+JyArCgogICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWFyZ2lu
LWJvdHRvbToxMHB4OyI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2
MDA7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRv
bTozcHg7Ij5TdGF0dXMgw6RuZGVybjwvbGFiZWw+JyArCiAgICAgICAgICAgICc8c2VsZWN0IGlk
PSJidWxrU3RhdHVzIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnIj48b3B0aW9uIHZhbHVlPSIi
PuKAlCBOaWNodCDDpG5kZXJuIOKAlDwvb3B0aW9uPic7CiAgICAgICAgc3RhdHVzTGlzdC5mb3JF
YWNoKGZ1bmN0aW9uKHMpIHsgaHRtbCArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIERyaXZlUG9ydGFs
LmVzY2FwZUF0dHIocykgKyAnIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChzKSArICc8L29w
dGlvbj4nOyB9KTsKICAgICAgICBodG1sICs9ICc8L3NlbGVjdD48L2Rpdj4nICsKCiAgICAgICAg
ICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQt
c2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7ZGlz
cGxheTpibG9jazttYXJnaW4tYm90dG9tOjNweDsiPlNjaGxhZ3dvcnQgaGluenVmw7xnZW48L2xh
YmVsPicgKwogICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJidWxrQWRkVGFnIiBw
bGFjZWhvbGRlcj0iTmV1ZXMgU2NobGFnd29ydC4uLiIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsg
JyI+PC9kaXY+JyArCgogICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4
OyI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFy
KC0tdGV4dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7Ij5TY2hs
YWd3b3J0IGVudGZlcm5lbjwvbGFiZWw+JyArCiAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4
dCIgaWQ9ImJ1bGtSZW1vdmVUYWciIHBsYWNlaG9sZGVyPSJadSBlbnRmZXJuZW5kZXMgU2NobGFn
d29ydC4uLiIgc3R5bGU9IicgKyBpbnB1dFN0eWxlICsgJyI+PC9kaXY+JyArCgogICAgICAgICAg
ICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmZsZXgt
ZW5kO21hcmdpbi10b3A6MTRweDsiPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGlj
az0idGhpcy5jbG9zZXN0KFwnZGl2W3N0eWxlXVwnKS5wYXJlbnRFbGVtZW50LnJlbW92ZSgpIiBz
dHlsZT0icGFkZGluZzo4cHggMTZweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4IHNvbGlk
IHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtjb2xvcjp2YXIo
LS10ZXh0LXByaW1hcnkpO2N1cnNvcjpwb2ludGVyOyI+QWJicmVjaGVuPC9idXR0b24+JyArCiAg
ICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZVBvcnRhbC5fY29uZmlybUJ1bGtF
ZGl0KCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjpu
b25lO2JhY2tncm91bmQ6dmFyKC0tdGV4dC1oZWFkaW5nKTtjb2xvcjp3aGl0ZTtjdXJzb3I6cG9p
bnRlcjtmb250LXdlaWdodDo2MDA7Ij7DhG5kZXJ1bmdlbiBhbndlbmRlbjwvYnV0dG9uPicgKwog
ICAgICAgICAgICAnPC9kaXY+PC9kaXY+JzsKCiAgICAgICAgbW9kYWwuaW5uZXJIVE1MID0gaHRt
bDsKICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgIH0sCgogICAg
YXN5bmMgX2NvbmZpcm1CdWxrRWRpdCgpIHsKICAgICAgICB2YXIgbmV3S2F0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2J1bGtLYXRlZ29yaWUnKS52YWx1ZTsKICAgICAgICB2YXIgbmV3U3Rh
dHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1bGtTdGF0dXMnKS52YWx1ZTsKICAgICAg
ICB2YXIgYWRkVGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1bGtBZGRUYWcnKS52YWx1
ZS50cmltKCk7CiAgICAgICAgdmFyIHJlbW92ZVRhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdidWxrUmVtb3ZlVGFnJykudmFsdWUudHJpbSgpOwoKICAgICAgICBpZiAoIW5ld0thdCAmJiAh
bmV3U3RhdHVzICYmICFhZGRUYWcgJiYgIXJlbW92ZVRhZykgewogICAgICAgICAgICBzaG93VG9h
c3QoJ0JpdHRlIG1pbmRlc3RlbnMgZWluIEZlbGQgYXVzZsO8bGxlbicsICd3YXJuaW5nJyk7CiAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIE1vZGFsIHNjaGxpZXNzZW4K
ICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnVsa0thdGVnb3JpZScp
OwogICAgICAgIGlmIChlbCkgeyB2YXIgbSA9IGVsOyB3aGlsZSAobS5wYXJlbnRFbGVtZW50ICE9
PSBkb2N1bWVudC5ib2R5KSBtID0gbS5wYXJlbnRFbGVtZW50OyBtLnJlbW92ZSgpOyB9CgogICAg
ICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl90YWJs
ZVNlbGVjdGVkLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBkb2MgPSBEcml2ZUZTLmRv
Y3VtZW50cy5maW5kKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuaWQgPT09IERyaXZlUG9ydGFsLl90
YWJsZVNlbGVjdGVkW2ldOyB9KTsKICAgICAgICAgICAgaWYgKCFkb2MpIGNvbnRpbnVlOwogICAg
ICAgICAgICBpZiAobmV3S2F0KSBkb2Mua2F0ZWdvcmllID0gbmV3S2F0OwogICAgICAgICAgICBp
ZiAobmV3U3RhdHVzKSB7CiAgICAgICAgICAgICAgICBkb2MudmVyc2lvbiA9IGNhbGN1bGF0ZVZl
cnNpb24oZG9jLCBkb2MuaW5oYWx0LCBkb2MuaW5oYWx0LCBuZXdTdGF0dXMpOwogICAgICAgICAg
ICAgICAgZG9jLnN0YXR1cyA9IG5ld1N0YXR1czsKICAgICAgICAgICAgfQogICAgICAgICAgICBp
ZiAoYWRkVGFnKSB7CiAgICAgICAgICAgICAgICBpZiAoIWRvYy5zY2hsYWd3b2VydGVyKSBkb2Mu
c2NobGFnd29lcnRlciA9IFtdOwogICAgICAgICAgICAgICAgaWYgKCFkb2Muc2NobGFnd29lcnRl
ci5pbmNsdWRlcyhhZGRUYWcpKSBkb2Muc2NobGFnd29lcnRlci5wdXNoKGFkZFRhZyk7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgaWYgKHJlbW92ZVRhZyAmJiBkb2Muc2NobGFnd29lcnRlcikg
ewogICAgICAgICAgICAgICAgZG9jLnNjaGxhZ3dvZXJ0ZXIgPSBkb2Muc2NobGFnd29lcnRlci5m
aWx0ZXIoZnVuY3Rpb24oaykgeyByZXR1cm4gayAhPT0gcmVtb3ZlVGFnOyB9KTsKICAgICAgICAg
ICAgfQogICAgICAgICAgICBhd2FpdCBEcml2ZUZTLnNhdmVEb2N1bWVudChkb2MpOwogICAgICAg
ICAgICBjb3VudCsrOwogICAgICAgIH0KICAgICAgICBzaG93VG9hc3QoY291bnQgKyAnIEFydGlr
ZWwgYWt0dWFsaXNpZXJ0JywgJ3N1Y2Nlc3MnKTsKICAgICAgICB0aGlzLnJlbmRlcigpOwogICAg
ICAgIHRoaXMucmVuZGVyVGFibGVWaWV3KCk7CiAgICB9LAoKICAgIGJ1bGtEZWxldGUoKSB7CiAg
ICAgICAgdmFyIGNvdW50ID0gdGhpcy5fdGFibGVTZWxlY3RlZC5sZW5ndGg7CiAgICAgICAgaWYg
KGNvdW50ID09PSAwKSByZXR1cm47CgogICAgICAgIHZhciBtb2RhbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIG1vZGFsLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246
Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDpyZ2Jh
KDAsMCwwLDAuNSk7ei1pbmRleDoxMDUwMDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVy
O2p1c3RpZnktY29udGVudDpjZW50ZXI7JzsKICAgICAgICBtb2RhbC5vbmNsaWNrID0gZnVuY3Rp
b24oZSkgeyBpZiAoZS50YXJnZXQgPT09IG1vZGFsKSBtb2RhbC5yZW1vdmUoKTsgfTsKICAgICAg
ICBtb2RhbC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2
YXIoLS1iZy1jYXJkKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoyNHB4IDI4cHg7bWF4LXdp
ZHRoOjQyMHB4O3dpZHRoOjkwJTtib3gtc2hhZG93OjAgOHB4IDMycHggcmdiYSgwLDAsMCwwLjMp
OyI+JyArCiAgICAgICAgICAgICAgICAnPGgzIHN0eWxlPSJjb2xvcjojZGMzNTQ1O21hcmdpbi1i
b3R0b206MTBweDsiPicgKyBjb3VudCArICcgQXJ0aWtlbCBsw7ZzY2hlbj88L2gzPicgKwogICAg
ICAgICAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2ZvbnQtc2l6
ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKICAgICAgICAg
ICAgICAgICAgICAnRGllIGF1c2dld8OkaGx0ZW4gQXJ0aWtlbCB3ZXJkZW4gaW4gZGVuIFBhcGll
cmtvcmIgdmVyc2Nob2JlbiB1bmQga8O2bm5lbiAyOCBUYWdlIGxhbmcgd2llZGVyaGVyZ2VzdGVs
bHQgd2VyZGVuLicgKwogICAgICAgICAgICAgICAgJzwvcD4nICsKICAgICAgICAgICAgICAgICc8
bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10
ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjRweDsiPk5XLUtlbm51
bmcgenVyIEJlc3TDpHRpZ3VuZzwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPGlucHV0IHR5
cGU9InRleHQiIGlkPSJidWxrRGVsZXRlTlciIHBsYWNlaG9sZGVyPSJOVy1LZW5udW5nIGVpbmdl
YmVuLi4uIiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjhweCAxMHB4O2JvcmRlcjoxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTRweDti
YWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO21hcmdp
bi1ib3R0b206MTRweDsiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6
ZmxleDtnYXA6OHB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDsiPicgKwogICAgICAgICAgICAg
ICAgICAgICc8YnV0dG9uIG9uY2xpY2s9InRoaXMuY2xvc2VzdChcJ2RpdltzdHlsZV1cJykucGFy
ZW50RWxlbWVudC5yZW1vdmUoKSIgc3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1
czo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFy
KC0tYmctY2FyZCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtjdXJzb3I6cG9pbnRlcjsiPkFi
YnJlY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9
IkRyaXZlUG9ydGFsLl9jb25maXJtQnVsa0RlbGV0ZSgpIiBzdHlsZT0icGFkZGluZzo4cHggMTZw
eDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOiNkYzM1NDU7Y29sb3I6
d2hpdGU7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAwOyI+TMO2c2NoZW48L2J1dHRvbj4n
ICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7CiAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1bGtEZWxldGVOVycpLmZvY3Vz
KCk7IH0sIDUwKTsKICAgIH0sCgogICAgcXVpY2tFZGl0U2luZ2xlKGRvY0lkKSB7CiAgICAgICAg
dmFyIGRvYyA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbmQoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5p
ZCA9PT0gZG9jSWQ7IH0pOwogICAgICAgIGlmICghZG9jKSByZXR1cm47CiAgICAgICAgdmFyIGth
dGVnb3JpZW4gPSBEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuIHx8IFtdOwogICAgICAgIHZhciBz
dGF0dXNMaXN0ID0gT2JqZWN0LmtleXMoRHJpdmVGUy5jb25maWcuc3RhdHVzIHx8IHt9KTsKICAg
ICAgICB2YXIgaW5wdXRTdHlsZSA9ICd3aWR0aDoxMDAlO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVy
OjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6
ZToxM3B4O2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFy
eSk7JzsKCiAgICAgICAgdmFyIG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CiAgICAgICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0
OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWlu
ZGV4OjEwNTAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50
OmNlbnRlcjsnOwogICAgICAgIG1vZGFsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGlmIChlLnRh
cmdldCA9PT0gbW9kYWwpIG1vZGFsLnJlbW92ZSgpOyB9OwoKICAgICAgICB2YXIgaHRtbCA9ICc8
ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRlci1yYWRpdXM6MTBweDtw
YWRkaW5nOjIwcHggMjRweDttYXgtd2lkdGg6NDgwcHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4
cHggMzJweCByZ2JhKDAsMCwwLDAuMyk7Ij4nICsKICAgICAgICAgICAgJzxoMyBzdHlsZT0iY29s
b3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4tYm90dG9tOjE0cHg7Ij5TY2huZWxsYmVhcmJl
aXR1bmc8L2gzPicgKwoKICAgICAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206OHB4
OyI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFy
KC0tdGV4dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTozcHg7Ij5UaXRl
bDwvbGFiZWw+JyArCiAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InNxZVRpdGVs
IiB2YWx1ZT0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLnRpdGVsKSArICciIHN0eWxl
PSInICsgaW5wdXRTdHlsZSArICciPjwvZGl2PicgKwoKICAgICAgICAgICAgJzxkaXYgc3R5bGU9
ImRpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6OHB4O21hcmdp
bi1ib3R0b206OHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGRpdj48bGFiZWwgc3R5bGU9ImZv
bnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7
ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjNweDsiPkthdGVnb3JpZTwvbGFiZWw+JyArCiAg
ICAgICAgICAgICAgICAnPHNlbGVjdCBpZD0ic3FlS2F0ZWdvcmllIiBzdHlsZT0iJyArIGlucHV0
U3R5bGUgKyAnIj4nOwogICAgICAgIGthdGVnb3JpZW4uZm9yRWFjaChmdW5jdGlvbihrKSB7IGh0
bWwgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGspICsgJyIn
ICsgKGsgPT09IGRvYy5rYXRlZ29yaWUgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIERyaXZl
UG9ydGFsLmVzY2FwZUhUTUwoaykgKyAnPC9vcHRpb24+JzsgfSk7CiAgICAgICAgaHRtbCArPSAn
PC9zZWxlY3Q+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdj48bGFiZWwgc3R5bGU9ImZv
bnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7
ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjNweDsiPlN0YXR1czwvbGFiZWw+JyArCiAgICAg
ICAgICAgICAgICAnPHNlbGVjdCBpZD0ic3FlU3RhdHVzIiBzdHlsZT0iJyArIGlucHV0U3R5bGUg
KyAnIj4nOwogICAgICAgIHN0YXR1c0xpc3QuZm9yRWFjaChmdW5jdGlvbihzKSB7IGh0bWwgKz0g
JzxvcHRpb24gdmFsdWU9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKHMpICsgJyInICsgKHMg
PT09IGRvYy5zdGF0dXMgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIERyaXZlUG9ydGFsLmVz
Y2FwZUhUTUwocykgKyAnPC9vcHRpb24+JzsgfSk7CiAgICAgICAgaHRtbCArPSAnPC9zZWxlY3Q+
PC9kaXY+PC9kaXY+JyArCgogICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpncmlkO2dy
aWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDo4cHg7bWFyZ2luLWJvdHRvbTo4cHg7Ij4n
ICsKICAgICAgICAgICAgICAgICc8ZGl2PjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEycHg7Zm9u
dC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtkaXNwbGF5OmJsb2NrO21h
cmdpbi1ib3R0b206M3B4OyI+RXJzdGVsbHQgdm9uPC9sYWJlbD4nICsKICAgICAgICAgICAgICAg
ICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InNxZUVyc3RlbGxlciIgdmFsdWU9IicgKyBEcml2ZVBv
cnRhbC5lc2NhcGVBdHRyKGRvYy5lcnN0ZWxsdFZvbiB8fCAnJykgKyAnIiBzdHlsZT0iJyArIGlu
cHV0U3R5bGUgKyAnIj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2PjxsYWJlbCBzdHls
ZT0iZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtc2Vjb25k
YXJ5KTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206M3B4OyI+VmVyc2lvbjwvbGFiZWw+JyAr
CiAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJzcWVWZXJzaW9uIiB2YWx1
ZT0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLnZlcnNpb24gfHwgJycpICsgJyIgc3R5
bGU9IicgKyBpbnB1dFN0eWxlICsgJyI+PC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsK
CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNv
bnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLXRvcDoxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGJ1
dHRvbiBvbmNsaWNrPSJ0aGlzLmNsb3Nlc3QoXCdkaXZbc3R5bGVdXCcpLnBhcmVudEVsZW1lbnQu
cmVtb3ZlKCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRl
cjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQp
O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Y3Vyc29yOnBvaW50ZXI7Ij5BYmJyZWNoZW48L2J1
dHRvbj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IkRyaXZlUG9ydGFsLl9j
b25maXJtU2luZ2xlRWRpdChcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvY0lkKSArICdc
JykiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjpub25l
O2JhY2tncm91bmQ6dmFyKC0tdGV4dC1oZWFkaW5nKTtjb2xvcjp3aGl0ZTtjdXJzb3I6cG9pbnRl
cjtmb250LXdlaWdodDo2MDA7Ij5TcGVpY2hlcm48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwv
ZGl2PjwvZGl2Pic7CgogICAgICAgIG1vZGFsLmlubmVySFRNTCA9IGh0bWw7CiAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NxZVRpdGVsJykuZm9jdXMoKTsgfSwgNTAp
OwogICAgfSwKCiAgICBhc3luYyBfY29uZmlybVNpbmdsZUVkaXQoZG9jSWQpIHsKICAgICAgICB2
YXIgZG9jID0gRHJpdmVGUy5kb2N1bWVudHMuZmluZChmdW5jdGlvbihkKSB7IHJldHVybiBkLmlk
ID09PSBkb2NJZDsgfSk7CiAgICAgICAgaWYgKCFkb2MpIHJldHVybjsKCiAgICAgICAgZG9jLnRp
dGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NxZVRpdGVsJykudmFsdWUudHJpbSgpIHx8
IGRvYy50aXRlbDsKICAgICAgICBkb2Mua2F0ZWdvcmllID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NxZUthdGVnb3JpZScpLnZhbHVlOwogICAgICAgIHZhciBuZXdTdGF0dXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc3FlU3RhdHVzJykudmFsdWU7CiAgICAgICAgaWYgKG5ld1N0YXR1
cyAhPT0gZG9jLnN0YXR1cykgewogICAgICAgICAgICBkb2MudmVyc2lvbiA9IGNhbGN1bGF0ZVZl
cnNpb24oZG9jLCBkb2MuaW5oYWx0LCBkb2MuaW5oYWx0LCBuZXdTdGF0dXMpOwogICAgICAgICAg
ICBkb2Muc3RhdHVzID0gbmV3U3RhdHVzOwogICAgICAgIH0KICAgICAgICBkb2MuZXJzdGVsbHRW
b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3FlRXJzdGVsbGVyJykudmFsdWUudHJpbSgp
IHx8IGRvYy5lcnN0ZWxsdFZvbjsKICAgICAgICBkb2MudmVyc2lvbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzcWVWZXJzaW9uJykudmFsdWUudHJpbSgpIHx8IGRvYy52ZXJzaW9uOwoKICAg
ICAgICAvLyBNb2RhbCBzY2hsaWVzc2VuCiAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NxZVRpdGVsJyk7CiAgICAgICAgaWYgKGVsKSB7IHZhciBtID0gZWw7IHdoaWxl
IChtLnBhcmVudEVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkpIG0gPSBtLnBhcmVudEVsZW1lbnQ7
IG0ucmVtb3ZlKCk7IH0KCiAgICAgICAgYXdhaXQgRHJpdmVGUy5zYXZlRG9jdW1lbnQoZG9jKTsK
ICAgICAgICBzaG93VG9hc3QoJ0FydGlrZWwgYWt0dWFsaXNpZXJ0OiAnICsgZG9jLnRpdGVsLCAn
c3VjY2VzcycpOwogICAgICAgIHRoaXMucmVuZGVyKCk7CiAgICAgICAgdGhpcy5yZW5kZXJUYWJs
ZVZpZXcoKTsKICAgIH0sCgogICAgYXN5bmMgX2NvbmZpcm1CdWxrRGVsZXRlKCkgewogICAgICAg
IHZhciBud0lucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J1bGtEZWxldGVOVycpOwog
ICAgICAgIHZhciBud0tlbm51bmcgPSBud0lucHV0ID8gbndJbnB1dC52YWx1ZS50cmltKCkgOiAn
JzsKICAgICAgICBpZiAoIW53S2VubnVuZykgeyBzaG93VG9hc3QoJ0JpdHRlIE5XLUtlbm51bmcg
ZWluZ2ViZW4nLCAnd2FybmluZycpOyBud0lucHV0LmZvY3VzKCk7IHJldHVybjsgfQoKICAgICAg
ICAvLyBNb2RhbCBzY2hsaWVzc2VuCiAgICAgICAgdmFyIG0gPSBud0lucHV0OyB3aGlsZSAobS5w
YXJlbnRFbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5KSBtID0gbS5wYXJlbnRFbGVtZW50OyBtLnJl
bW92ZSgpOwoKICAgICAgICB2YXIgZGVsZXRlZCA9IDA7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl90YWJsZVNlbGVjdGVkLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBk
b2NJZCA9IHRoaXMuX3RhYmxlU2VsZWN0ZWRbaV07CiAgICAgICAgICAgIHZhciBkb2MgPSBEcml2
ZUZTLmRvY3VtZW50cy5maW5kKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuaWQgPT09IGRvY0lkOyB9
KTsKICAgICAgICAgICAgaWYgKCFkb2MpIGNvbnRpbnVlOwoKICAgICAgICAgICAgLy8gSW4gUGFw
aWVya29yYiB2ZXJzY2hpZWJlbgogICAgICAgICAgICB2YXIgdHJhc2ggPSBhd2FpdCB0aGlzLl9s
b2FkVHJhc2goKTsKICAgICAgICAgICAgdHJhc2gucHVzaCh7CiAgICAgICAgICAgICAgICBkb2M6
IGRvYywKICAgICAgICAgICAgICAgIGRlbGV0ZWRCeTogbndLZW5udW5nLnRyaW0oKSwKICAgICAg
ICAgICAgICAgIGRlbGV0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLAogICAgICAgICAg
ICAgICAgZXhwaXJlc0F0OiBuZXcgRGF0ZShEYXRlLm5vdygpICsgMjggKiAyNCAqIDYwICogNjAg
KiAxMDAwKS50b0lTT1N0cmluZygpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhd2FpdCB0
aGlzLl9zYXZlVHJhc2godHJhc2gpOwoKICAgICAgICAgICAgLy8gQXVkaXQtTG9nCiAgICAgICAg
ICAgIGF3YWl0IHRoaXMuX2FwcGVuZERlbGV0ZUxvZyh7CiAgICAgICAgICAgICAgICBkb2NJZDog
ZG9jLmlkLAogICAgICAgICAgICAgICAgdGl0ZWw6IGRvYy50aXRlbCwKICAgICAgICAgICAgICAg
IGthdGVnb3JpZTogZG9jLmthdGVnb3JpZSwKICAgICAgICAgICAgICAgIGRlbGV0ZWRCeTogbndL
ZW5udW5nLnRyaW0oKSwKICAgICAgICAgICAgICAgIGRlbGV0ZWRBdDogbmV3IERhdGUoKS50b0lT
T1N0cmluZygpCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gRGF0ZWkgbG9lc2NoZW4g
KyBNZWRpZW4tT3JkbmVyCiAgICAgICAgICAgIHZhciBwYXRoID0gRHJpdmVGUy5maWxlVGltZXN0
YW1wc1tkb2NJZF0gPyBEcml2ZUZTLmZpbGVUaW1lc3RhbXBzW2RvY0lkXS5wYXRoIDogbnVsbDsK
ICAgICAgICAgICAgaWYgKHBhdGgpIGF3YWl0IERyaXZlRlMuZGVsZXRlRmlsZShwYXRoKTsKCiAg
ICAgICAgICAgIC8vIE1lZGllbi1PcmRuZXIgdmVyc2NoaWViZW4gKFNlcnZlci1Nb2R1cykKICAg
ICAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgLy8gTWVkaWVuIGJsZWliZW4gaW0gbWVkaWEvLU9y
ZG5lciBlcmhhbHRlbiAoUGFwaWVya29yYi1XaWVkZXJoZXJzdGVsbHVuZykKICAgICAgICAgICAg
ICAgIH0gY2F0Y2goZSkge30KICAgICAgICAgICAgfQoKICAgICAgICAgICAgRHJpdmVGUy5kb2N1
bWVudHMgPSBEcml2ZUZTLmRvY3VtZW50cy5maWx0ZXIoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5p
ZCAhPT0gZG9jSWQ7IH0pOwogICAgICAgICAgICBkZWxldGVkKys7CiAgICAgICAgfQoKICAgICAg
ICBhd2FpdCBEcml2ZUZTLnVwZGF0ZUluZGV4KCk7CiAgICAgICAgc2hvd1RvYXN0KGRlbGV0ZWQg
KyAnIEFydGlrZWwgaW4gZGVuIFBhcGllcmtvcmIgdmVyc2Nob2JlbicsICdzdWNjZXNzJyk7CiAg
ICAgICAgdGhpcy5fdGFibGVTZWxlY3RlZCA9IFtdOwogICAgICAgIHRoaXMucmVuZGVyKCk7CiAg
ICAgICAgdGhpcy5yZW5kZXJUYWJsZVZpZXcoKTsKICAgIH0sCgogICAgc2hvd0hvbWUoKSB7CiAg
ICAgICAgdGhpcy5zZWxlY3RlZERvY0lkID0gbnVsbDsKICAgICAgICAvLyBTdGFydHNlaXRlIHdp
ZWRlcmhlcnN0ZWxsZW4KICAgICAgICBpZiAodGhpcy5fd2VsY29tZUhUTUwpIHsKICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvY3VtZW50RGV0YWlsJykuaW5uZXJIVE1MID0g
dGhpcy5fd2VsY29tZUhUTUw7CiAgICAgICAgfQogICAgICAgIC8vIEFrdGl2ZXMgRWxlbWVudCBp
biBkZXIgTGlzdGUgYWJ3YWVobGVuCiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn
LmRvY3VtZW50LWl0ZW0uYWN0aXZlJykuZm9yRWFjaChmdW5jdGlvbihlbCkgeyBlbC5jbGFzc0xp
c3QucmVtb3ZlKCdhY3RpdmUnKTsgfSk7CiAgICB9LAoKICAgIF9kaWZmVmlzaWJsZTogZmFsc2Us
CgogICAgdG9nZ2xlRGlmZihkb2NJZCkgewogICAgICAgIHZhciBkb2MgPSBEcml2ZUZTLmRvY3Vt
ZW50cy5maW5kKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5pZCA9PT0gZG9jSWQ7IH0pOwogICAgICAg
IGlmICghZG9jKSByZXR1cm47CiAgICAgICAgLy8gVmVyZ2xlaWNoc2Jhc2lzOiBsZXR6dGUgUmV2
aXNpb24gKHBlcnNpc3RpZXJ0KSBvZGVyIF9wcmV2aW91c0luaGFsdCAoTGVnYWN5KQogICAgICAg
IHZhciBwcmV2SW5oYWx0ID0gZG9jLl9wcmV2aW91c0luaGFsdDsKICAgICAgICBpZiAoIXByZXZJ
bmhhbHQgJiYgZG9jLnJldmlzaW9ucyAmJiBkb2MucmV2aXNpb25zLmxlbmd0aCA+IDApIHsKICAg
ICAgICAgICAgcHJldkluaGFsdCA9IGRvYy5yZXZpc2lvbnNbZG9jLnJldmlzaW9ucy5sZW5ndGgg
LSAxXS5pbmhhbHQ7CiAgICAgICAgfQogICAgICAgIGlmICghcHJldkluaGFsdCkgcmV0dXJuOwoK
ICAgICAgICB2YXIgY29udGVudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RldGFpbENv
bnRlbnQnKTsKICAgICAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bkRp
ZmYnKTsKICAgICAgICBpZiAoIWNvbnRlbnRFbCkgcmV0dXJuOwoKICAgICAgICBpZiAodGhpcy5f
ZGlmZlZpc2libGUpIHsKICAgICAgICAgICAgLy8gWnVydWVjayB6dXIgbm9ybWFsZW4gQW5zaWNo
dAogICAgICAgICAgICBjb250ZW50RWwuaW5uZXJIVE1MID0gRHJpdmVQb3J0YWwuc2FuaXRpemVI
VE1MKGRvYy5pbmhhbHQpOwogICAgICAgICAgICBpZiAoYnRuKSBidG4udGV4dENvbnRlbnQgPSAn
w4RuZGVydW5nZW4gYW56ZWlnZW4nOwogICAgICAgICAgICB0aGlzLl9kaWZmVmlzaWJsZSA9IGZh
bHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIERpZmYgYmVyZWNobmVuIHVuZCBh
bnplaWdlbgogICAgICAgICAgICB2YXIgZGlmZkh0bWwgPSB0aGlzLl9jb21wdXRlRGlmZihwcmV2
SW5oYWx0LCBkb2MuaW5oYWx0IHx8ICcnKTsKICAgICAgICAgICAgY29udGVudEVsLmlubmVySFRN
TCA9CiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGlmZi1sZWdlbmQiPicgKwogICAgICAg
ICAgICAgICAgICAgICc8c3Bhbj48c3BhbiBjbGFzcz0iZGlmZi1hZGRlZCI+QmVpc3BpZWw8L3Nw
YW4+IEhpbnp1Z2Vmw7xndDwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNwYW4+PHNw
YW4gY2xhc3M9ImRpZmYtcmVtb3ZlZCI+QmVpc3BpZWw8L3NwYW4+IEVudGZlcm50PC9zcGFuPicg
KwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgZGlmZkh0bWw7CiAg
ICAgICAgICAgIGlmIChidG4pIGJ0bi50ZXh0Q29udGVudCA9ICdPcmlnaW5hbGFuc2ljaHQnOwog
ICAgICAgICAgICB0aGlzLl9kaWZmVmlzaWJsZSA9IHRydWU7CiAgICAgICAgfQogICAgfSwKCiAg
ICBfY29tcHV0ZURpZmYob2xkSHRtbCwgbmV3SHRtbCkgewogICAgICAgIC8vIEhUTUwgaW4gV29l
cnRlciB6ZXJsZWdlbiAoVGFncyBhbHMgRWluaGVpdCBiZWhhbHRlbikKICAgICAgICBmdW5jdGlv
biB0b2tlbml6ZShodG1sKSB7CiAgICAgICAgICAgIHZhciB0b2tlbnMgPSBbXTsKICAgICAgICAg
ICAgdmFyIHJlID0gLzxbXj5dKz58W15cczxdK3xccysvZzsKICAgICAgICAgICAgdmFyIG07CiAg
ICAgICAgICAgIHdoaWxlICgobSA9IHJlLmV4ZWMoaHRtbCkpICE9PSBudWxsKSB7CiAgICAgICAg
ICAgICAgICB0b2tlbnMucHVzaChtWzBdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1
cm4gdG9rZW5zOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9sZFRva2VucyA9IHRva2VuaXplKG9s
ZEh0bWwpOwogICAgICAgIHZhciBuZXdUb2tlbnMgPSB0b2tlbml6ZShuZXdIdG1sKTsKCiAgICAg
ICAgLy8gTENTIChMb25nZXN0IENvbW1vbiBTdWJzZXF1ZW5jZSkgYmVyZWNobmVuCiAgICAgICAg
dmFyIG4gPSBvbGRUb2tlbnMubGVuZ3RoLCBtID0gbmV3VG9rZW5zLmxlbmd0aDsKCiAgICAgICAg
Ly8gRnVlciBzZWhyIGdyb3NzZSBEb2t1bWVudGU6IHZlcmVpbmZhY2h0ZXIgQW5zYXR6IG1pdCBi
ZWdyZW56dGVyIE1hdHJpeAogICAgICAgIGlmIChuICogbSA+IDIwMDAwMDApIHsKICAgICAgICAg
ICAgLy8gRmFsbGJhY2s6IFplaWxlbndlaXNlciBWZXJnbGVpY2gKICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbXB1dGVMaW5lRGlmZihvbGRIdG1sLCBuZXdIdG1sKTsKICAgICAgICB9CgogICAg
ICAgIHZhciBkcCA9IFtdOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IG47IGkrKykgewog
ICAgICAgICAgICBkcFtpXSA9IG5ldyBVaW50MTZBcnJheShtICsgMSk7CiAgICAgICAgfQoKICAg
ICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgZm9yICh2YXIg
aiA9IDE7IGogPD0gbTsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAob2xkVG9rZW5zW2ktMV0g
PT09IG5ld1Rva2Vuc1tqLTFdKSB7CiAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0gPSBkcFtp
LTFdW2otMV0gKyAxOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICBkcFtpXVtqXSA9IE1hdGgubWF4KGRwW2ktMV1bal0sIGRwW2ldW2otMV0pOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBCYWNrdHJhY2s6IERp
ZmYtU2VxdWVueiBlcnN0ZWxsZW4KICAgICAgICB2YXIgcmVzdWx0ID0gW107CiAgICAgICAgdmFy
IGkgPSBuLCBqID0gbTsKICAgICAgICB3aGlsZSAoaSA+IDAgfHwgaiA+IDApIHsKICAgICAgICAg
ICAgaWYgKGkgPiAwICYmIGogPiAwICYmIG9sZFRva2Vuc1tpLTFdID09PSBuZXdUb2tlbnNbai0x
XSkgewogICAgICAgICAgICAgICAgcmVzdWx0LnVuc2hpZnQoeyB0eXBlOiAnc2FtZScsIHRleHQ6
IG9sZFRva2Vuc1tpLTFdIH0pOwogICAgICAgICAgICAgICAgaS0tOyBqLS07CiAgICAgICAgICAg
IH0gZWxzZSBpZiAoaiA+IDAgJiYgKGkgPT09IDAgfHwgZHBbaV1bai0xXSA+PSBkcFtpLTFdW2pd
KSkgewogICAgICAgICAgICAgICAgcmVzdWx0LnVuc2hpZnQoeyB0eXBlOiAnYWRkJywgdGV4dDog
bmV3VG9rZW5zW2otMV0gfSk7CiAgICAgICAgICAgICAgICBqLS07CiAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICByZXN1bHQudW5zaGlmdCh7IHR5cGU6ICdkZWwnLCB0ZXh0OiBv
bGRUb2tlbnNbaS0xXSB9KTsKICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgfQogICAg
ICAgIH0KCiAgICAgICAgLy8gRXJnZWJuaXMgYWxzIEhUTUwgcmVuZGVybgogICAgICAgIHZhciBo
dG1sID0gJyc7CiAgICAgICAgdmFyIGluQWRkID0gZmFsc2UsIGluRGVsID0gZmFsc2U7CgogICAg
ICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcmVzdWx0Lmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAg
IHZhciByID0gcmVzdWx0W2tdOwogICAgICAgICAgICB2YXIgaXNUYWcgPSByLnRleHQuY2hhckF0
KDApID09PSAnPCc7CgogICAgICAgICAgICBpZiAoci50eXBlID09PSAnc2FtZScpIHsKICAgICAg
ICAgICAgICAgIGlmIChpbkFkZCkgeyBodG1sICs9ICc8L3NwYW4+JzsgaW5BZGQgPSBmYWxzZTsg
fQogICAgICAgICAgICAgICAgaWYgKGluRGVsKSB7IGh0bWwgKz0gJzwvc3Bhbj4nOyBpbkRlbCA9
IGZhbHNlOyB9CiAgICAgICAgICAgICAgICBodG1sICs9IHIudGV4dDsKICAgICAgICAgICAgfSBl
bHNlIGlmIChyLnR5cGUgPT09ICdhZGQnKSB7CiAgICAgICAgICAgICAgICBpZiAoaW5EZWwpIHsg
aHRtbCArPSAnPC9zcGFuPic7IGluRGVsID0gZmFsc2U7IH0KICAgICAgICAgICAgICAgIGlmIChp
c1RhZykgeyBodG1sICs9IHIudGV4dDsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGlmICgh
aW5BZGQpIHsgaHRtbCArPSAnPHNwYW4gY2xhc3M9ImRpZmYtYWRkZWQiPic7IGluQWRkID0gdHJ1
ZTsgfQogICAgICAgICAgICAgICAgaHRtbCArPSByLnRleHQ7CiAgICAgICAgICAgIH0gZWxzZSBp
ZiAoci50eXBlID09PSAnZGVsJykgewogICAgICAgICAgICAgICAgaWYgKGluQWRkKSB7IGh0bWwg
Kz0gJzwvc3Bhbj4nOyBpbkFkZCA9IGZhbHNlOyB9CiAgICAgICAgICAgICAgICBpZiAoaXNUYWcp
IGNvbnRpbnVlOyAvLyBFbnRmZXJudGUgVGFncyBuaWNodCBhbnplaWdlbgogICAgICAgICAgICAg
ICAgaWYgKCFpbkRlbCkgeyBodG1sICs9ICc8c3BhbiBjbGFzcz0iZGlmZi1yZW1vdmVkIj4nOyBp
bkRlbCA9IHRydWU7IH0KICAgICAgICAgICAgICAgIGh0bWwgKz0gci50ZXh0OwogICAgICAgICAg
ICB9CiAgICAgICAgfQogICAgICAgIGlmIChpbkFkZCkgaHRtbCArPSAnPC9zcGFuPic7CiAgICAg
ICAgaWYgKGluRGVsKSBodG1sICs9ICc8L3NwYW4+JzsKCiAgICAgICAgcmV0dXJuIGh0bWw7CiAg
ICB9LAoKICAgIF9jb21wdXRlTGluZURpZmYob2xkSHRtbCwgbmV3SHRtbCkgewogICAgICAgIC8v
IEVpbmZhY2hlciBGYWxsYmFjayBmdWVyIHNlaHIgZ3Jvc3NlIERva3VtZW50ZTogQWJzYXR6d2Vp
c2VyIFZlcmdsZWljaAogICAgICAgIGZ1bmN0aW9uIGdldFBhcmFzKGh0bWwpIHsKICAgICAgICAg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBk
aXYuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICAgICAgdmFyIGJsb2NrcyA9IFtdOwogICAgICAg
ICAgICBkaXYuY2hpbGROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG4pIHsKICAgICAgICAgICAgICAg
IGJsb2Nrcy5wdXNoKG4ub3V0ZXJIVE1MIHx8IG4udGV4dENvbnRlbnQpOwogICAgICAgICAgICB9
KTsKICAgICAgICAgICAgcmV0dXJuIGJsb2NrczsKICAgICAgICB9CgogICAgICAgIHZhciBvbGRQ
YXJhcyA9IGdldFBhcmFzKG9sZEh0bWwpOwogICAgICAgIHZhciBuZXdQYXJhcyA9IGdldFBhcmFz
KG5ld0h0bWwpOwogICAgICAgIHZhciBvbGRTZXQgPSBuZXcgU2V0KG9sZFBhcmFzKTsKICAgICAg
ICB2YXIgbmV3U2V0ID0gbmV3IFNldChuZXdQYXJhcyk7CgogICAgICAgIHZhciBodG1sID0gJyc7
CiAgICAgICAgbmV3UGFyYXMuZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgICAgIGlmIChv
bGRTZXQuaGFzKHApKSB7CiAgICAgICAgICAgICAgICBodG1sICs9IHA7CiAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJkaWZmLWFkZGVkIiBz
dHlsZT0iZGlzcGxheTpibG9jaztwYWRkaW5nOjRweCA4cHg7bWFyZ2luOjRweCAwO2JvcmRlci1y
YWRpdXM6NHB4OyI+JyArIHAgKyAnPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgIH0pOwog
ICAgICAgIG9sZFBhcmFzLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgICAgICBpZiAoIW5l
d1NldC5oYXMocCkpIHsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9ImRpZmYt
cmVtb3ZlZCIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7cGFkZGluZzo0cHggOHB4O21hcmdpbjo0cHgg
MDtib3JkZXItcmFkaXVzOjRweDsiPicgKyBwICsgJzwvZGl2Pic7CiAgICAgICAgICAgIH0KICAg
ICAgICB9KTsKCiAgICAgICAgcmV0dXJuIGh0bWw7CiAgICB9LAoKICAgIC8vID09PT0gUmV2aXNp
b25zaGlzdG9yaWUgPT09PQogICAgX3JldkRvY0lkOiBudWxsLAogICAgX3JldlNlbGVjdGVkSWR4
OiAtMSwKICAgIF9yZXZNb2RlOiAnY29udGVudCcsIC8vICdjb250ZW50JyBvZGVyICdkaWZmJwoK
ICAgIG9wZW5SZXZpc2lvbnMoZG9jSWQpIHsKICAgICAgICB2YXIgZG9jID0gRHJpdmVGUy5kb2N1
bWVudHMuZmluZChmdW5jdGlvbihkKSB7IHJldHVybiBkLmlkID09PSBkb2NJZDsgfSk7CiAgICAg
ICAgaWYgKCFkb2MpIHJldHVybjsKICAgICAgICB0aGlzLl9yZXZEb2NJZCA9IGRvY0lkOwogICAg
ICAgIHRoaXMuX3JldlNlbGVjdGVkSWR4ID0gLTE7CiAgICAgICAgdGhpcy5fcmV2TW9kZSA9ICdj
b250ZW50JzsKCiAgICAgICAgdmFyIHJldmlzaW9ucyA9IGRvYy5yZXZpc2lvbnMgfHwgW107CiAg
ICAgICAgdmFyIGxpc3RFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpc2lvbkxpc3Qn
KTsKCiAgICAgICAgaWYgKHJldmlzaW9ucy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgc2hv
d1RvYXN0KCdLZWluZSBmcnVlaGVyZW4gVmVyc2lvbmVuIHZvcmhhbmRlbicsICdpbmZvJyk7CiAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIExpc3RlIGF1ZmJhdWVuIChu
ZXVlc3RlIHp1ZXJzdCkKICAgICAgICB2YXIgaHRtbCA9ICcnOwogICAgICAgIC8vIEFrdHVlbGxl
IFZlcnNpb24gYWxzIGVyc3RlcyBFbGVtZW50CiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0i
cmV2aXNpb24taXRlbSIgb25jbGljaz0iRHJpdmVQb3J0YWwuc2VsZWN0UmV2aXNpb24oLTEpIj4n
ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InJldi1sYWJlbCI+QWt0dWVsbGUgVmVyc2lvbiA8
c3BhbiBjbGFzcz0icmV2LWJhZGdlIj5MaXZlPC9zcGFuPjwvZGl2PicgKwogICAgICAgICAgICAn
PGRpdiBjbGFzcz0icmV2LWRhdGUiPicgKyAoZG9jLnRpdGVsIHx8ICdPaG5lIFRpdGVsJykgKyAn
PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJyZXYtdXNlciI+U3RhdHVzOiAnICsg
RHJpdmVQb3J0YWwuZXNjYXBlSFRNTChkb2Muc3RhdHVzIHx8ICdFbnR3dXJmJykgKyAnPC9kaXY+
JyArCiAgICAgICAgJzwvZGl2Pic7CgogICAgICAgIGZvciAodmFyIGkgPSByZXZpc2lvbnMubGVu
Z3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgdmFyIHJldiA9IHJldmlzaW9uc1tp
XTsKICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShyZXYuc2F2ZWRBdCk7CiAgICAgICAgICAg
IHZhciBkYXRlU3RyID0gZC50b0xvY2FsZURhdGVTdHJpbmcoJ2RlLURFJywgeyBkYXk6ICcyLWRp
Z2l0JywgbW9udGg6ICcyLWRpZ2l0JywgeWVhcjogJ251bWVyaWMnIH0pOwogICAgICAgICAgICB2
YXIgdGltZVN0ciA9IGQudG9Mb2NhbGVUaW1lU3RyaW5nKCdkZS1ERScsIHsgaG91cjogJzItZGln
aXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsKICAgICAgICAgICAgdmFyIHJldk51bSA9IGkgKyAx
OwogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJyZXZpc2lvbi1pdGVtIiBvbmNsaWNr
PSJEcml2ZVBvcnRhbC5zZWxlY3RSZXZpc2lvbignICsgaSArICcpIj4nICsKICAgICAgICAgICAg
ICAgICc8ZGl2IGNsYXNzPSJyZXYtbGFiZWwiPlZlcnNpb24gJyArIHJldk51bSArICcgPHNwYW4g
Y2xhc3M9InJldi1iYWRnZSI+dicgKyByZXZOdW0gKyAnPC9zcGFuPjwvZGl2PicgKwogICAgICAg
ICAgICAgICAgJzxkaXYgY2xhc3M9InJldi1kYXRlIj4nICsgZGF0ZVN0ciArICcgdW0gJyArIHRp
bWVTdHIgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icmV2LXVzZXIi
PnZvbiAnICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChyZXYuc2F2ZWRCeSB8fCAnVW5iZWthbm50
JykgKwogICAgICAgICAgICAgICAgICAgIChyZXYuc3RhdHVzID8gJyAmbWlkZG90OyAnICsgRHJp
dmVQb3J0YWwuZXNjYXBlSFRNTChyZXYuc3RhdHVzKSA6ICcnKSArICc8L2Rpdj4nICsKICAgICAg
ICAgICAgJzwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGxpc3RFbC5pbm5lckhUTUwgPSBodG1s
OwoKICAgICAgICAvLyBUb29sYmFyIHVuZCBDb250ZW50IHp1cnVlY2tzZXR6ZW4KICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aXNpb25Ub29sYmFyJykuaW5uZXJIVE1MID0gJyc7
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JldmlzaW9uQ29udGVudCcpLmlubmVy
SFRNTCA9CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjp2
YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tdG9wOjYwcHg7Ij5WZXJzaW9uIGF1cyBkZXIgTGlzdGUg
YXVzd2FlaGxlbjwvZGl2Pic7CgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZp
c2lvbk1vZGFsJykuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwogICAgfSwKCiAgICBjbG9zZVJldmlz
aW9ucygpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aXNpb25Nb2RhbCcp
LmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTsKICAgICAgICB0aGlzLl9yZXZEb2NJZCA9IG51bGw7
CiAgICB9LAoKICAgIHNlbGVjdFJldmlzaW9uKGlkeCkgewogICAgICAgIHZhciBkb2MgPSBEcml2
ZUZTLmRvY3VtZW50cy5maW5kKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuaWQgPT09IERyaXZlUG9y
dGFsLl9yZXZEb2NJZDsgfSk7CiAgICAgICAgaWYgKCFkb2MpIHJldHVybjsKICAgICAgICB0aGlz
Ll9yZXZTZWxlY3RlZElkeCA9IGlkeDsKICAgICAgICB0aGlzLl9yZXZNb2RlID0gJ2NvbnRlbnQn
OwoKICAgICAgICAvLyBBa3RpdmUgTWFya2llcnVuZyBzZXR6ZW4KICAgICAgICB2YXIgaXRlbXMg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjcmV2aXNpb25MaXN0IC5yZXZpc2lvbi1pdGVt
Jyk7CiAgICAgICAgdmFyIHJldmlzaW9ucyA9IGRvYy5yZXZpc2lvbnMgfHwgW107CiAgICAgICAg
Ly8gaWR4PS0xIGlzdCAiQWt0dWVsbGUgVmVyc2lvbiIgKGVyc3RlciBFaW50cmFnKSwgc29uc3Qg
dW1nZWtlaHJ0IHdlaWwgTGlzdGUgaW52ZXJ0aWVydAogICAgICAgIHZhciBhY3RpdmVQb3MgPSAo
aWR4ID09PSAtMSkgPyAwIDogKHJldmlzaW9ucy5sZW5ndGggLSBpZHgpOwogICAgICAgIGl0ZW1z
LmZvckVhY2goZnVuY3Rpb24oZWwsIGkpIHsKICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnRvZ2ds
ZSgnYWN0aXZlJywgaSA9PT0gYWN0aXZlUG9zKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gVG9v
bGJhcgogICAgICAgIHZhciByZXYgPSAoaWR4ID09PSAtMSkgPyBudWxsIDogcmV2aXNpb25zW2lk
eF07CiAgICAgICAgdmFyIHRvb2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aXNp
b25Ub29sYmFyJyk7CiAgICAgICAgdmFyIGxhYmVsID0gJyc7CiAgICAgICAgaWYgKGlkeCA9PT0g
LTEpIHsKICAgICAgICAgICAgbGFiZWwgPSAnQWt0dWVsbGUgVmVyc2lvbic7CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZShyZXYuc2F2ZWRBdCk7CiAgICAgICAg
ICAgIGxhYmVsID0gJ1ZlcnNpb24gJyArIChpZHggKyAxKSArICcgJm1pZGRvdDsgJyArCiAgICAg
ICAgICAgICAgICBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZGUtREUnLCB7IGRheTogJzItZGlnaXQn
LCBtb250aDogJzItZGlnaXQnLCB5ZWFyOiAnbnVtZXJpYycgfSkgKyAnICcgKwogICAgICAgICAg
ICAgICAgZC50b0xvY2FsZVRpbWVTdHJpbmcoJ2RlLURFJywgeyBob3VyOiAnMi1kaWdpdCcsIG1p
bnV0ZTogJzItZGlnaXQnLCBzZWNvbmQ6ICcyLWRpZ2l0JyB9KSArCiAgICAgICAgICAgICAgICAn
ICZtaWRkb3Q7ICcgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHJldi5zYXZlZEJ5IHx8ICdVbmJl
a2FubnQnKTsKICAgICAgICB9CgogICAgICAgIHRvb2xiYXIuaW5uZXJIVE1MID0KICAgICAgICAg
ICAgJzxidXR0b24gY2xhc3M9ImFjdGl2ZSIgaWQ9InJldkJ0bkNvbnRlbnQiIG9uY2xpY2s9IkRy
aXZlUG9ydGFsLnNob3dSZXZDb250ZW50KCkiPkluaGFsdDwvYnV0dG9uPicgKwogICAgICAgICAg
ICAnPGJ1dHRvbiBpZD0icmV2QnRuRGlmZiIgb25jbGljaz0iRHJpdmVQb3J0YWwuc2hvd1JldkRp
ZmYoKSI+RGlmZiB6dXIgYWt0dWVsbGVuIFZlcnNpb248L2J1dHRvbj4nICsKICAgICAgICAgICAg
KGlkeCA+PSAwID8gJzxidXR0b24gaWQ9InJldkJ0blJlc3RvcmUiIG9uY2xpY2s9IkRyaXZlUG9y
dGFsLnJlc3RvcmVSZXZpc2lvbigpIj5EaWVzZSBWZXJzaW9uIHdpZWRlcmhlcnN0ZWxsZW48L2J1
dHRvbj4nIDogJycpICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJyZXYtaW5mbyI+JyArIGxh
YmVsICsgJzwvc3Bhbj4nOwoKICAgICAgICB0aGlzLnNob3dSZXZDb250ZW50KCk7CiAgICB9LAoK
ICAgIHNob3dSZXZDb250ZW50KCkgewogICAgICAgIHZhciBkb2MgPSBEcml2ZUZTLmRvY3VtZW50
cy5maW5kKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuaWQgPT09IERyaXZlUG9ydGFsLl9yZXZEb2NJ
ZDsgfSk7CiAgICAgICAgaWYgKCFkb2MpIHJldHVybjsKICAgICAgICB0aGlzLl9yZXZNb2RlID0g
J2NvbnRlbnQnOwoKICAgICAgICB2YXIgY29udGVudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3JldmlzaW9uQ29udGVudCcpOwogICAgICAgIHZhciByZXYgPSAodGhpcy5fcmV2U2VsZWN0
ZWRJZHggPT09IC0xKSA/IG51bGwgOiAoZG9jLnJldmlzaW9ucyB8fCBbXSlbdGhpcy5fcmV2U2Vs
ZWN0ZWRJZHhdOwogICAgICAgIHZhciBpbmhhbHQgPSByZXYgPyByZXYuaW5oYWx0IDogZG9jLmlu
aGFsdDsKICAgICAgICB2YXIgdGl0ZWwgPSByZXYgPyByZXYudGl0ZWwgOiBkb2MudGl0ZWw7Cgog
ICAgICAgIGNvbnRlbnRFbC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBzdHlsZT0iZm9u
dC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7bWFy
Z2luLWJvdHRvbToxNnB4O3BhZGRpbmctYm90dG9tOjhweDtib3JkZXItYm90dG9tOjFweCBzb2xp
ZCB2YXIoLS1ib3JkZXItbGlnaHQpOyI+JyArCiAgICAgICAgICAgICAgICBEcml2ZVBvcnRhbC5l
c2NhcGVIVE1MKHRpdGVsIHx8ICdPaG5lIFRpdGVsJykgKwogICAgICAgICAgICAnPC9kaXY+JyAr
CiAgICAgICAgICAgIChpbmhhbHQgfHwgJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11
dGVkKTsiPktlaW4gSW5oYWx0PC9zcGFuPicpOwoKICAgICAgICAvLyBCdXR0b24tU3RhdHVzCiAg
ICAgICAgdmFyIGJ0bkMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2QnRuQ29udGVudCcp
OwogICAgICAgIHZhciBidG5EID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JldkJ0bkRpZmYn
KTsKICAgICAgICBpZiAoYnRuQykgYnRuQy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAg
ICBpZiAoYnRuRCkgYnRuRC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgIH0sCgogICAg
c2hvd1JldkRpZmYoKSB7CiAgICAgICAgdmFyIGRvYyA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbmQo
ZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZCA9PT0gRHJpdmVQb3J0YWwuX3JldkRvY0lkOyB9KTsK
ICAgICAgICBpZiAoIWRvYykgcmV0dXJuOwogICAgICAgIHRoaXMuX3Jldk1vZGUgPSAnZGlmZic7
CgogICAgICAgIHZhciBjb250ZW50RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aXNp
b25Db250ZW50Jyk7CiAgICAgICAgdmFyIHJldiA9ICh0aGlzLl9yZXZTZWxlY3RlZElkeCA9PT0g
LTEpID8gbnVsbCA6IChkb2MucmV2aXNpb25zIHx8IFtdKVt0aGlzLl9yZXZTZWxlY3RlZElkeF07
CgogICAgICAgIGlmICghcmV2IHx8IHRoaXMuX3JldlNlbGVjdGVkSWR4ID09PSAtMSkgewogICAg
ICAgICAgICBjb250ZW50RWwuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2Vu
dGVyO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NjBweDsiPkRpZmYgbnVyIGbD
vHIgZnLDvGhlcmUgVmVyc2lvbmVuIHZlcmZ1ZWdiYXI8L2Rpdj4nOwogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgb2xkSW5oYWx0ID0gcmV2LmluaGFsdCB8fCAnJzsK
ICAgICAgICB2YXIgbmV3SW5oYWx0ID0gZG9jLmluaGFsdCB8fCAnJzsKICAgICAgICB2YXIgZGlm
Zkh0bWwgPSB0aGlzLl9jb21wdXRlRGlmZihvbGRJbmhhbHQsIG5ld0luaGFsdCk7CgogICAgICAg
IHZhciB0aXRlbENoYW5nZWQgPSByZXYudGl0ZWwgIT09IGRvYy50aXRlbDsKCiAgICAgICAgY29u
dGVudEVsLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkaWZmLWxlZ2VuZCI+
JyArCiAgICAgICAgICAgICAgICAnPHNwYW4+PHNwYW4gY2xhc3M9ImRpZmYtYWRkZWQiPkJlaXNw
aWVsPC9zcGFuPiBIaW56dWdlZnVlZ3Q8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4+
PHNwYW4gY2xhc3M9ImRpZmYtcmVtb3ZlZCI+QmVpc3BpZWw8L3NwYW4+IEVudGZlcm50PC9zcGFu
PicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICh0aXRlbENoYW5nZWQgPwog
ICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTJweDtwYWRkaW5nOjhw
eCAxMnB4O2JvcmRlci1yYWRpdXM6NnB4O2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO2Zv
bnQtc2l6ZToxM3B4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJ1RpdGVsOiA8c3BhbiBjbGFz
cz0iZGlmZi1yZW1vdmVkIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChyZXYudGl0ZWwgfHwg
JycpICsgJzwvc3Bhbj4gJnJhcnI7ICcgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFz
cz0iZGlmZi1hZGRlZCI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLnRpdGVsIHx8ICcn
KSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyA6ICcnKSArCiAgICAgICAg
ICAgIGRpZmZIdG1sOwoKICAgICAgICAvLyBCdXR0b24tU3RhdHVzCiAgICAgICAgdmFyIGJ0bkMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2QnRuQ29udGVudCcpOwogICAgICAgIHZhciBi
dG5EID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JldkJ0bkRpZmYnKTsKICAgICAgICBpZiAo
YnRuQykgYnRuQy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICBpZiAoYnRuRCkg
YnRuRC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIH0sCgogICAgYXN5bmMgcmVzdG9yZVJl
dmlzaW9uKCkgewogICAgICAgIHZhciBkb2MgPSBEcml2ZUZTLmRvY3VtZW50cy5maW5kKGZ1bmN0
aW9uKGQpIHsgcmV0dXJuIGQuaWQgPT09IERyaXZlUG9ydGFsLl9yZXZEb2NJZDsgfSk7CiAgICAg
ICAgaWYgKCFkb2MgfHwgdGhpcy5fcmV2U2VsZWN0ZWRJZHggPCAwKSByZXR1cm47CiAgICAgICAg
dmFyIHJldiA9IChkb2MucmV2aXNpb25zIHx8IFtdKVt0aGlzLl9yZXZTZWxlY3RlZElkeF07CiAg
ICAgICAgaWYgKCFyZXYpIHJldHVybjsKCiAgICAgICAgaWYgKCFjb25maXJtKCdWZXJzaW9uICcg
KyAodGhpcy5fcmV2U2VsZWN0ZWRJZHggKyAxKSArICcgd2llZGVyaGVyc3RlbGxlbj9cblxuRGVy
IGFrdHVlbGxlIEluaGFsdCB3aXJkIGFscyBuZXVlIFJldmlzaW9uIGdlc2ljaGVydC4nKSkgcmV0
dXJuOwoKICAgICAgICB2YXIgdXNlcm5hbWUgPSAoRHJpdmVGUy5lbnZpcm9uICYmIERyaXZlRlMu
ZW52aXJvbi51c2VybmFtZSkgPyBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUgOiAnVW5iZWthbm50
JzsKCiAgICAgICAgLy8gQWt0dWVsbGVuIFN0YW5kIGFscyBSZXZpc2lvbiBzaWNoZXJuCiAgICAg
ICAgaWYgKCFkb2MucmV2aXNpb25zKSBkb2MucmV2aXNpb25zID0gW107CiAgICAgICAgZG9jLnJl
dmlzaW9ucy5wdXNoKHsKICAgICAgICAgICAgaW5oYWx0OiBkb2MuaW5oYWx0LAogICAgICAgICAg
ICB0aXRlbDogZG9jLnRpdGVsLAogICAgICAgICAgICBzdGF0dXM6IGRvYy5zdGF0dXMsCiAgICAg
ICAgICAgIHNhdmVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgICAgICAgICAgc2F2
ZWRCeTogdXNlcm5hbWUKICAgICAgICB9KTsKICAgICAgICB3aGlsZSAoZG9jLnJldmlzaW9ucy5s
ZW5ndGggPiA2KSB7CiAgICAgICAgICAgIGRvYy5yZXZpc2lvbnMuc2hpZnQoKTsKICAgICAgICB9
CgogICAgICAgIC8vIFJldmlzaW9uIHdpZWRlcmhlcnN0ZWxsZW4KICAgICAgICBkb2MuaW5oYWx0
ID0gcmV2LmluaGFsdDsKICAgICAgICBkb2MudGl0ZWwgPSByZXYudGl0ZWw7CgogICAgICAgIHRy
eSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBEcml2ZUZTLnNhdmVEb2N1bWVudChk
b2MpOwogICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBz
aG93VG9hc3QoJ1ZlcnNpb24gJyArICh0aGlzLl9yZXZTZWxlY3RlZElkeCArIDEpICsgJyB3aWVk
ZXJoZXJnZXN0ZWxsdCcsICdzdWNjZXNzJyk7CiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUmV2
aXNpb25zKCk7CiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcigpOwogICAgICAgICAgICAgICAg
YXdhaXQgdGhpcy5zZWxlY3REb2N1bWVudChkb2MuaWQpOwogICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdGZWhsZXI6ICcgKyByZXN1bHQsICdlcnJvcicpOwog
ICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBzaG93VG9hc3Qo
J0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2Vycm9yJyk7CiAgICAgICAgfQogICAgfSwKCiAgICBh
c3luYyBzZWxlY3REb2N1bWVudChkb2NJZCkgewogICAgICAgIHRoaXMuc2VsZWN0ZWREb2NJZCA9
IGRvY0lkOwogICAgICAgIHRoaXMuX2RpZmZWaXNpYmxlID0gZmFsc2U7CgogICAgICAgIC8vIExh
ZGUgYWt0dWVsbHN0ZSBWZXJzaW9uIHZvbiBEaXNrCiAgICAgICAgY29uc3QgZG9jID0gYXdhaXQg
RHJpdmVGUy5sb2FkRG9jdW1lbnQoZG9jSWQpOwogICAgICAgIGlmICghZG9jKSB7CiAgICAgICAg
ICAgIHNob3dUb2FzdCgnRG9rdW1lbnQga29ubnRlIG5pY2h0IGdlbGFkZW4gd2VyZGVuJywgJ2Vy
cm9yJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIEluLU1lbW9y
eSBha3R1YWxpc2llcmVuCiAgICAgICAgY29uc3QgaWR4ID0gRHJpdmVGUy5kb2N1bWVudHMuZmlu
ZEluZGV4KGQgPT4gZC5pZCA9PT0gZG9jSWQpOwogICAgICAgIGlmIChpZHggPj0gMCkgRHJpdmVG
Uy5kb2N1bWVudHNbaWR4XSA9IGRvYzsKCiAgICAgICAgdGhpcy5yZW5kZXJMaXN0KCk7CiAgICAg
ICAgdGhpcy5yZW5kZXJEZXRhaWwoZG9jKTsKICAgIH0sCgogICAgcmVuZGVyRGV0YWlsKGRvYykg
ewogICAgICAgIGNvbnN0IGRldGFpbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkb2N1bWVudERldGFpbCcpOwogICAgICAgIGNvbnN0IHN0YXR1c0NvbmZpZyA9IERyaXZlRlMu
Y29uZmlnLnN0YXR1cyB8fCB7fTsKICAgICAgICBjb25zdCBjZmcgPSBzdGF0dXNDb25maWdbZG9j
LnN0YXR1c10gfHwgeyBjb2xvcjogJyNlZWUnLCB0ZXh0Q29sb3I6ICcjMzMzJywgaWNvbjogJycs
IGxhYmVsOiBkb2Muc3RhdHVzIH07CgogICAgICAgIGxldCBtZWRpYUhUTUwgPSAnJzsKICAgICAg
ICBpZiAoZG9jLm1lZGlhcyAmJiBkb2MubWVkaWFzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAg
Ly8gT25seSBzaG93IGF0dGFjaG1lbnRzIHNlY3Rpb24gKGlubGluZSBtZWRpYSBpcyByZW5kZXJl
ZCBpbiBkb2MuaW5oYWx0KQogICAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IGRvYy5tZWRp
YXMuZmlsdGVyKG0gPT4gIW0uZGlzcGxheU1vZGUgfHwgbS5kaXNwbGF5TW9kZSA9PT0gJ2F0dGFj
aG1lbnQnKTsKICAgICAgICAgICAgY29uc3QgaW5saW5lTWVkaWEgPSBkb2MubWVkaWFzLmZpbHRl
cihtID0+IG0uZGlzcGxheU1vZGUgJiYgbS5kaXNwbGF5TW9kZSAhPT0gJ2F0dGFjaG1lbnQnKTsK
CiAgICAgICAgICAgIGxldCBzZWN0aW9ucyA9ICcnOwoKICAgICAgICAgICAgaWYgKGF0dGFjaG1l
bnRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8aDMgc3R5bGU9
ImZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQtaGVhZGlu
Zyk7IG1hcmdpbi1ib3R0b206MTJweDsiPkFuaMOkbmdlICgnICsgYXR0YWNobWVudHMubGVuZ3Ro
ICsgJyk8L2gzPic7CiAgICAgICAgICAgICAgICBzZWN0aW9ucyArPSAnPGRpdiBzdHlsZT0iZGlz
cGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDo4cHg7IG1hcmdpbi1ib3R0b206
MjBweDsiPic7CiAgICAgICAgICAgICAgICBhdHRhY2htZW50cy5mb3JFYWNoKG1lZGlhID0+IHsK
ICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gbWVkaWEudHlwZSB8fCAnZmlsZSc7CiAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZUxhYmVsID0gdHlwZS50b1VwcGVyQ2FzZSgpOwog
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLmVzY2FwZUF0dHIobWVkaWEu
dXJsKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzYWZlVGl0bGUgPSB0aGlzLmVzY2FwZUF0
dHIobWVkaWEudGl0bGUgfHwgJycpOwoKICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyArPSAn
PGRpdiBjbGFzcz0iYXR0YWNobWVudC1pdGVtIiBvbmNsaWNrPSJvcGVuTWVkaWFNb2RhbChcJycg
KyBzYWZlVXJsICsgJ1wnLFwnJyArIHR5cGUgKyAnXCcsXCcnICsgc2FmZVRpdGxlICsgJ1wnKSI+
JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZHJpdmUtZmlsZS1pY29u
ICcgKyB0eXBlICsgJyI+JyArIHR5cGVMYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgICc8ZGl2IGNsYXNzPSJhdHRhY2htZW50LWluZm8iPicgKwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImF0dGFjaG1lbnQtdGl0bGUiPicgKyB0aGlzLmVz
Y2FwZUhUTUwobWVkaWEudGl0bGUgfHwgbWVkaWEudXJsLnNwbGl0KCcvJykucG9wKCkpICsgJzwv
ZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImF0dGFjaG1l
bnQtbWV0YSI+JyArIHRoaXMuZXNjYXBlSFRNTChtZWRpYS5kZXNjcmlwdGlvbiB8fCAnJykgKyAn
PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAg
ICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImF0dGFjaG1lbnQtYWN0aW9ucyIgb25jbGljaz0iZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCkiPic7CgogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09
PSAncGRmJykgewogICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyArPSAnPGJ1dHRvbiBv
bmNsaWNrPSJ3aW5kb3cub3BlbihcJycgKyBzYWZlVXJsICsgJ1wnLFwnX2JsYW5rXCcpIj5OZXVl
ciBUYWI8L2J1dHRvbj4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICBzZWN0aW9ucyArPSAnPGJ1dHRvbiBvbmNsaWNrPSJvcGVuTWVkaWFNb2RhbChcJycgKyBzYWZl
VXJsICsgJ1wnLFwnJyArIHR5cGUgKyAnXCcsXCcnICsgc2FmZVRpdGxlICsgJ1wnKSI+QW56ZWln
ZW48L2J1dHRvbj4nOwogICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8L2Rpdj48L2Rp
dj4nOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzZWN0aW9ucyArPSAnPC9k
aXY+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlubGluZU1lZGlhLmxlbmd0aCA+
IDApIHsKICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8aDMgc3R5bGU9ImZvbnQtc2l6ZTox
NnB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbi1i
b3R0b206MTJweDsiPkVpbmdlYmV0dGV0ZSBNZWRpZW4gKCcgKyBpbmxpbmVNZWRpYS5sZW5ndGgg
KyAnKTwvaDM+JzsKICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8ZGl2IHN0eWxlPSJkaXNw
bGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjhweDsiPic7CiAgICAgICAgICAg
ICAgICBpbmxpbmVNZWRpYS5mb3JFYWNoKG1lZGlhID0+IHsKICAgICAgICAgICAgICAgICAgICBj
b25zdCB0eXBlID0gbWVkaWEudHlwZSB8fCAnZmlsZSc7CiAgICAgICAgICAgICAgICAgICAgY29u
c3QgdHlwZUxhYmVsID0gdHlwZS50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIGNv
bnN0IHNhZmVVcmwgPSB0aGlzLmVzY2FwZUF0dHIobWVkaWEudXJsKTsKICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzYWZlVGl0bGUgPSB0aGlzLmVzY2FwZUF0dHIobWVkaWEudGl0bGUgfHwgJycp
OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVMYWJlbCA9IG1lZGlhLmRpc3BsYXlNb2Rl
ID09PSAnaW5saW5lJyA/ICdCaWxkJyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVkaWEuZGlzcGxheU1vZGUgPT09ICdwZGYtbGluaycgPyAnUERGLUxpbmsnIDoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYS5kaXNwbGF5TW9kZSA9PT0g
J3BkZi1pZnJhbWUnID8gJ1BERiBlaW5nZWJldHRldCcgOiBtZWRpYS5kaXNwbGF5TW9kZTsKCiAg
ICAgICAgICAgICAgICAgICAgc2VjdGlvbnMgKz0gJzxkaXYgY2xhc3M9ImF0dGFjaG1lbnQtaXRl
bSIgb25jbGljaz0ib3Blbk1lZGlhTW9kYWwoXCcnICsgc2FmZVVybCArICdcJyxcJycgKyB0eXBl
ICsgJ1wnLFwnJyArIHNhZmVUaXRsZSArICdcJykiPicgKwogICAgICAgICAgICAgICAgICAgICAg
ICAnPHNwYW4gY2xhc3M9ImRyaXZlLWZpbGUtaWNvbiAnICsgdHlwZSArICciPicgKyB0eXBlTGFi
ZWwgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYXR0
YWNobWVudC1pbmZvIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz
PSJhdHRhY2htZW50LXRpdGxlIj4nICsgdGhpcy5lc2NhcGVIVE1MKG1lZGlhLnRpdGxlIHx8ICcn
KSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJh
dHRhY2htZW50LW1ldGEiPicgKyB0aGlzLmVzY2FwZUhUTUwobW9kZUxhYmVsKSArIChtZWRpYS5h
bGlnbm1lbnQgPyAnIHwgJyArIG1lZGlhLmFsaWdubWVudCA6ICcnKSArICc8L2Rpdj4nICsKICAg
ICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgICAgIHNlY3Rpb25zICs9ICc8L2Rpdj4nOwogICAgICAgICAgICB9CgogICAg
ICAgICAgICBpZiAoc2VjdGlvbnMpIHsKICAgICAgICAgICAgICAgIG1lZGlhSFRNTCA9ICc8ZGl2
IGNsYXNzPSJtZWRpYS1zZWN0aW9uIj4nICsgc2VjdGlvbnMgKyAnPC9kaXY+JzsKICAgICAgICAg
ICAgfQogICAgICAgIH0KCiAgICAgICAgZGV0YWlsQ29udGFpbmVyLmlubmVySFRNTCA9CiAgICAg
ICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1i
ZXR3ZWVuOyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyBtYXJnaW4tYm90dG9tOjIwcHg7Ij4nICsK
ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkZXRhaWwtaGVhZGVyIiBzdHlsZT0iZmxleDox
OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxoMSBjbGFzcz0iZGV0YWlsLXRpdGxlIj4nICsg
dGhpcy5lc2NhcGVIVE1MKGRvYy50aXRlbCkgKyAnPC9oMT4nICsKICAgICAgICAgICAgICAgICAg
ICAnPGRpdiBjbGFzcz0iZGV0YWlsLW1ldGEiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAn
PGRpdiBjbGFzcz0ibWV0YS1pdGVtIj48ZGl2IGNsYXNzPSJtZXRhLWxhYmVsIj5LYXRlZ29yaWU8
L2Rpdj48ZGl2PicgKyB0aGlzLmVzY2FwZUhUTUwoZG9jLmthdGVnb3JpZSkgKyAnPC9kaXY+PC9k
aXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXRhLWl0ZW0iPjxk
aXYgY2xhc3M9Im1ldGEtbGFiZWwiPlN0YXR1czwvZGl2PjxkaXY+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InN0YXR1cy1iYWRnZSIgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6JyArIGNmZy5jb2xvciArICc7IGNvbG9yOicgKyBjZmcudGV4dENvbG9yICsgJzsi
PicgKyBjZmcubGFiZWwgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPC9k
aXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXRhLWl0
ZW0iPjxkaXYgY2xhc3M9Im1ldGEtbGFiZWwiPlZlcnNpb248L2Rpdj48ZGl2PjxzcGFuIHN0eWxl
PSJjdXJzb3I6cG9pbnRlcjtib3JkZXItYm90dG9tOjFweCBkYXNoZWQgdmFyKC0tdGV4dC1tdXRl
ZCk7IiBvbmNsaWNrPSJzaG93VmVyc2lvbkxvZ2ljKCkiIHRpdGxlPSJLbGlja2UgZsO8ciBlaW5l
IEVya2zDpHJ1bmcgZGVyIFZlcnNpb25pZXJ1bmciPicgKyB0aGlzLmVzY2FwZUhUTUwoZG9jLnZl
cnNpb24gfHwgJy0nKSArICc8L3NwYW4+PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAg
ICAgICAgICc8ZGl2IGNsYXNzPSJtZXRhLWl0ZW0iPjxkaXYgY2xhc3M9Im1ldGEtbGFiZWwiPkVy
c3RlbGx0PC9kaXY+PGRpdj4nICsgZm9ybWF0RGF0ZShkb2MuZXJzdGVsbHQpICsgJzwvZGl2Pjwv
ZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ibWV0YS1pdGVtIj48
ZGl2IGNsYXNzPSJtZXRhLWxhYmVsIj5HZcOkbmRlcnQ8L2Rpdj48ZGl2PicgKyBmb3JtYXREYXRl
KGRvYy5nZWFlbmRlcnQpICsgJzwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAg
ICAoZG9jLmVyc3RlbGx0Vm9uID8gJzxkaXYgY2xhc3M9Im1ldGEtaXRlbSI+PGRpdiBjbGFzcz0i
bWV0YS1sYWJlbCI+RXJzdGVsbHQgdm9uPC9kaXY+PGRpdj4nICsgdGhpcy5lc2NhcGVIVE1MKGRv
Yy5lcnN0ZWxsdFZvbikgKyAnPC9kaXY+PC9kaXY+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAg
ICAgICAgIChkb2MuYmVhcmJlaXRldFZvbiA/ICc8ZGl2IGNsYXNzPSJtZXRhLWl0ZW0iPjxkaXYg
Y2xhc3M9Im1ldGEtbGFiZWwiPkJlYXJiZWl0ZXQgdm9uPC9kaXY+PGRpdj4nICsgdGhpcy5lc2Nh
cGVIVE1MKGRvYy5iZWFyYmVpdGV0Vm9uKSArICc8L2Rpdj48L2Rpdj4nIDogJycpICsKICAgICAg
ICAgICAgICAgICAgICAgICAgKGRvYy5wYXJlbnRJZCA/ICc8ZGl2IGNsYXNzPSJtZXRhLWl0ZW0i
PjxkaXYgY2xhc3M9Im1ldGEtbGFiZWwiPsOcYmVyYXJ0aWtlbDwvZGl2PjxkaXY+PGEgc3R5bGU9
ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Y3Vyc29yOnBvaW50ZXI7IiBvbmNsaWNrPSJEcml2
ZVBvcnRhbC5zZWxlY3REb2N1bWVudChcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvYy5w
YXJlbnRJZCkgKyAnXCcpIj4nICsgdGhpcy5lc2NhcGVIVE1MKChEcml2ZUZTLmRvY3VtZW50cy5m
aW5kKGZ1bmN0aW9uKGQpe3JldHVybiBkLmlkPT09ZG9jLnBhcmVudElkfSl8fHt9KS50aXRlbCB8
fCBkb2MucGFyZW50SWQpICsgJzwvYT48L2Rpdj48L2Rpdj4nIDogJycpICsKICAgICAgICAgICAg
ICAgICAgICAgICAgKChkb2Muc2NobGFnd29lcnRlciAmJiBkb2Muc2NobGFnd29lcnRlci5sZW5n
dGgpID8gJzxkaXYgY2xhc3M9Im1ldGEtaXRlbSIgc3R5bGU9ImZsZXgtYmFzaXM6MTAwJTsiPjxk
aXYgY2xhc3M9Im1ldGEtbGFiZWwiPlNjaGxhZ3fDtnJ0ZXI8L2Rpdj48ZGl2PicgKyBkb2Muc2No
bGFnd29lcnRlci5tYXAoZnVuY3Rpb24oayl7cmV0dXJuICc8c3BhbiBjbGFzcz0ia2V5d29yZC10
YWciPicrRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrKSsnPC9zcGFuPic7fSkuam9pbignICcpICsg
JzwvZGl2PjwvZGl2PicgOiAnJykgKwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5k
ZXJDaGlsZEFydGljbGVzKGRvYykgKwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAg
ICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkZXRh
aWwtYWN0aW9ucyI+JyArCiAgICAgICAgICAgICAgICAgICAgKERyaXZlRlMucmVhZE9ubHkgPyAn
JyA6ICc8YnV0dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLmVkaXQoXCcnICsgRHJpdmVQb3J0YWwu
ZXNjYXBlQXR0cihkb2MuaWQpICsgJ1wnKSI+QmVhcmJlaXRlbjwvYnV0dG9uPicpICsKICAgICAg
ICAgICAgICAgICAgICAodGhpcy5fY2FuU2VlUmV2aXNpb25zKGRvYykgJiYgZG9jLnJldmlzaW9u
cyAmJiBkb2MucmV2aXNpb25zLmxlbmd0aCA+IDAgPyAnPGJ1dHRvbiBzdHlsZT0iYm9yZGVyLWNv
bG9yOiMzYjgyZjY7Y29sb3I6IzNiODJmNjsiIG9uY2xpY2s9IkRyaXZlUG9ydGFsLm9wZW5SZXZp
c2lvbnMoXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQpICsgJ1wnKSI+VmVyc2lv
bmVuICgnICsgZG9jLnJldmlzaW9ucy5sZW5ndGggKyAnKTwvYnV0dG9uPicgOiAnJykgKwogICAg
ICAgICAgICAgICAgICAgIChEcml2ZUZTLnJlYWRPbmx5ID8gJycgOiAnPGJ1dHRvbiBjbGFzcz0i
YnRuLWRhbmdlciIgb25jbGljaz0iRHJpdmVQb3J0YWwuZGVsZXRlRG9jdW1lbnQoXCcnICsgRHJp
dmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQpICsgJ1wnKSI+TMO2c2NoZW48L2J1dHRvbj4nKSAr
CiAgICAgICAgICAgICAgICAgICAgKGRvYy5zdGF0dXMgPT09ICdQcsO8ZnVuZycgJiYgRHJpdmVH
b3Zlcm5hbmNlLmNhbkFwcHJvdmUoZG9jKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICgoZG9j
LnJldmlzaW9ucyAmJiBkb2MucmV2aXNpb25zLmxlbmd0aCA+IDApID8gJzxidXR0b24gc3R5bGU9
ImJvcmRlci1jb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO2NvbG9yOnZhcigtLXRleHQtaGVhZGlu
Zyk7IiBvbmNsaWNrPSJEcml2ZVBvcnRhbC50b2dnbGVEaWZmKFwnJyArIERyaXZlUG9ydGFsLmVz
Y2FwZUF0dHIoZG9jLmlkKSArICdcJykiIGlkPSJidG5EaWZmIj7DhG5kZXJ1bmdlbiBhbnplaWdl
bjwvYnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBzdHls
ZT0iYm9yZGVyLWNvbG9yOiMyOGE3NDU7Y29sb3I6IzI4YTc0NTsiIG9uY2xpY2s9IkRyaXZlR292
ZXJuYW5jZS5vcGVuUmV2aWV3RGlhbG9nKFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9j
LmlkKSArICdcJyxcJ2FwcHJvdmVcJykiPkZyZWlnZWJlbjwvYnV0dG9uPicgKwogICAgICAgICAg
ICAgICAgICAgICAgICAnPGJ1dHRvbiBzdHlsZT0iYm9yZGVyLWNvbG9yOiNkYzM1NDU7Y29sb3I6
I2RjMzU0NTsiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5vcGVuUmV2aWV3RGlhbG9nKFwnJyAr
IERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLmlkKSArICdcJyxcJ3JlamVjdFwnKSI+QWJsZWhu
ZW48L2J1dHRvbj4nIDogJycpICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAg
ICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGV0YWlsLWNvbnRlbnQiIGlk
PSJkZXRhaWxDb250ZW50Ij4nICsgKGRvYy5pbmhhbHQgfHwgJycpICsgJzwvZGl2PicgKwogICAg
ICAgICAgICB0aGlzLnJlbmRlckNvbnRyaWJ1dG9ycyhkb2MpICsKICAgICAgICAgICAgdGhpcy5y
ZW5kZXJSZXZpZXdIaXN0b3J5KGRvYykgKwogICAgICAgICAgICBtZWRpYUhUTUw7CgogICAgICAg
IC8vIFBvc3QtUmVuZGVyOiBBbGxlIE1lZGllbiBpbSBJbmhhbHQga2xpY2tiYXIgbWFjaGVuIChv
ZWZmbmV0IE1vZGFsKQogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICBjb25z
dCBjb250ZW50ID0gZGV0YWlsQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5kZXRhaWwtY29udGVu
dCcpOwogICAgICAgICAgICBpZiAoIWNvbnRlbnQpIHJldHVybjsKCiAgICAgICAgICAgIC8vIEJp
bGRlcjogS2xpY2sgb2VmZm5ldCBNb2RhbAogICAgICAgICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJy5kcml2ZS1tZWRpYSBpbWcsIC5kZXRhaWwtY29udGVudCA+IGltZycpLmZvckVhY2go
aW1nID0+IHsKICAgICAgICAgICAgICAgIGlmIChpbWcuX21vZGFsQm91bmQpIHJldHVybjsKICAg
ICAgICAgICAgICAgIGltZy5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7CiAgICAgICAgICAgICAg
ICBpbWcub25jbGljayA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnN0b3BQ
cm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgIG9wZW5NZWRpYU1vZGFsKGltZy5zcmMs
ICdpbWFnZScsIGltZy5hbHQgfHwgJycpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgIGltZy5fbW9kYWxCb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAg
Ly8gUERGLUxpbmtzOiA8YSB0YXJnZXQ9Il9ibGFuayI+IGluIE1vZGFsLUtsaWNrIHVtd2FuZGVs
bgogICAgICAgICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcml2ZS1tZWRpYS1wZGYt
bGluaycpLmZvckVhY2goZWwgPT4gewogICAgICAgICAgICAgICAgY29uc3QgbGluayA9IGVsLnF1
ZXJ5U2VsZWN0b3IoJ2EnKTsKICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlU3BhbiA9IGVsLnF1
ZXJ5U2VsZWN0b3IoJy5wZGYtdGl0bGUnKTsKICAgICAgICAgICAgICAgIGNvbnN0IHBkZlVybCA9
IGxpbmsgPyBsaW5rLmhyZWYgOiAnJzsKICAgICAgICAgICAgICAgIGNvbnN0IHBkZlRpdGxlID0g
KHRpdGxlU3BhbiB8fCBsaW5rIHx8IHt9KS50ZXh0Q29udGVudCB8fCAnUERGJzsKICAgICAgICAg
ICAgICAgIGlmIChsaW5rKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgICAgICAgICBzcGFuLmNsYXNz
TmFtZSA9ICdwZGYtdGl0bGUnOwogICAgICAgICAgICAgICAgICAgIHNwYW4udGV4dENvbnRlbnQg
PSBsaW5rLnRleHRDb250ZW50OwogICAgICAgICAgICAgICAgICAgIGxpbmsucmVwbGFjZVdpdGgo
c3Bhbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbC5vbmNsaWNrID0gZnVu
Y3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5N
ZWRpYU1vZGFsKHBkZlVybCwgJ3BkZicsIHBkZlRpdGxlKTsgfTsKICAgICAgICAgICAgfSk7Cgog
ICAgICAgICAgICAvLyBQREYtaUZyYW1lczogS2xpY2sgb2VmZm5ldCBNb2RhbAogICAgICAgICAg
ICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcml2ZS1tZWRpYS1wZGYtaWZyYW1lJykuZm9y
RWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBpZnJhbWUgPSBlbC5xdWVyeVNlbGVj
dG9yKCdpZnJhbWUnKTsKICAgICAgICAgICAgICAgIGlmIChpZnJhbWUpIHsKICAgICAgICAgICAg
ICAgICAgICBlbC5vbmNsaWNrID0gZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUu
c3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5NZWRpYU1vZGFsKGlmcmFtZS5zcmMsICdwZGYnLCAnUERG
Jyk7IH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8g
VmlkZW86IEtsaWNrIGF1ZiBDb250YWluZXIgb2VmZm5ldCBNb2RhbCAoZmFsbHMgbmljaHQgYmVy
ZWl0cyBjb250cm9scy1ha3RpdikKICAgICAgICAgICAgY29udGVudC5xdWVyeVNlbGVjdG9yQWxs
KCd2aWRlbycpLmZvckVhY2godmlkID0+IHsKICAgICAgICAgICAgICAgIGlmICh2aWQuX21vZGFs
Qm91bmQpIHJldHVybjsKICAgICAgICAgICAgICAgIGNvbnN0IHNyYyA9IHZpZC5xdWVyeVNlbGVj
dG9yKCdzb3VyY2UnKSA/IHZpZC5xdWVyeVNlbGVjdG9yKCdzb3VyY2UnKS5zcmMgOiB2aWQuc3Jj
OwogICAgICAgICAgICAgICAgaWYgKHNyYykgewogICAgICAgICAgICAgICAgICAgIHZpZC5zdHls
ZS5jdXJzb3IgPSAncG9pbnRlcic7CiAgICAgICAgICAgICAgICAgICAgdmlkLm9uZGJsY2xpY2sg
PSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9u
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5NZWRpYU1vZGFsKHNyYywgJ3ZpZGVvJywg
JycpOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB2aWQuX21vZGFsQm91bmQgPSB0cnVlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAg
IC8vIEF1ZGlvOiBEb3BwZWxrbGljayBvZWZmbmV0IE1vZGFsCiAgICAgICAgICAgIGNvbnRlbnQu
cXVlcnlTZWxlY3RvckFsbCgnYXVkaW8nKS5mb3JFYWNoKGF1ZCA9PiB7CiAgICAgICAgICAgICAg
ICBpZiAoYXVkLl9tb2RhbEJvdW5kKSByZXR1cm47CiAgICAgICAgICAgICAgICBjb25zdCBzcmMg
PSBhdWQuc3JjIHx8IChhdWQucXVlcnlTZWxlY3Rvcignc291cmNlJykgPyBhdWQucXVlcnlTZWxl
Y3Rvcignc291cmNlJykuc3JjIDogJycpOwogICAgICAgICAgICAgICAgaWYgKHNyYykgewogICAg
ICAgICAgICAgICAgICAgIGF1ZC5vbmRibGNsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAg
ICBvcGVuTWVkaWFNb2RhbChzcmMsICdhdWRpbycsICcnKTsKICAgICAgICAgICAgICAgICAgICB9
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXVkLl9tb2RhbEJvdW5kID0gdHJ1
ZTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBJbmxpbmUtRW1iZWRzIChWaWRlbywg
QXVkaW8sIE9mZmljZSk6IEtsaWNrIG9lZmZuZXQgTW9kYWwKICAgICAgICAgICAgY29udGVudC5x
dWVyeVNlbGVjdG9yQWxsKCcuZHJpdmUtbWVkaWEtZW1iZWQnKS5mb3JFYWNoKGVsID0+IHsKICAg
ICAgICAgICAgICAgIGlmIChlbC5fbW9kYWxCb3VuZCkgcmV0dXJuOwogICAgICAgICAgICAgICAg
Y29uc3QgbWVkaWFVcmwgPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtdXJsJyk7CiAgICAg
ICAgICAgICAgICBjb25zdCBtZWRpYVR5cGUgPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEt
dHlwZScpOwogICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBlbC5xdWVyeVNlbGVjdG9yKCcu
ZHJpdmUtZW1iZWQtbGFiZWwnKTsKICAgICAgICAgICAgICAgIGNvbnN0IG1lZGlhVGl0bGUgPSBs
YWJlbCA/IGxhYmVsLnRleHRDb250ZW50IDogJyc7CiAgICAgICAgICAgICAgICBpZiAobWVkaWFV
cmwpIHsKICAgICAgICAgICAgICAgICAgICBlbC5vbmNsaWNrID0gZnVuY3Rpb24oZSkgeyBlLnBy
ZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IG9wZW5NZWRpYU1vZGFsKG1lZGlh
VXJsLCBtZWRpYVR5cGUsIG1lZGlhVGl0bGUpOyB9OwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgZWwuX21vZGFsQm91bmQgPSB0cnVlOwogICAgICAgICAgICB9KTsKCiAgICAgICAg
ICAgIC8vID09PSBBY2NvcmRpb25zIGFrdGl2aWVyZW4gKEF1Zi0vWnVrbGFwcGVuLCBzdGFuZGFy
ZG1hZXNzaWcgZWluZ2VrbGFwcHQpID09PQogICAgICAgICAgICBjb250ZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJy5kcml2ZS1hY2NvcmRpb24nKS5mb3JFYWNoKGZ1bmN0aW9uKGFjYykgewogICAgICAg
ICAgICAgICAgYWNjLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgJ2ZhbHNlJyk7CiAg
ICAgICAgICAgICAgICBhY2MuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpOwogICAgICAgICAgICAg
ICAgdmFyIGhlYWRlciA9IGFjYy5xdWVyeVNlbGVjdG9yKCcuZHJpdmUtYWNjb3JkaW9uLWhlYWRl
cicpOwogICAgICAgICAgICAgICAgaWYgKGhlYWRlciAmJiAhaGVhZGVyLl9hY2NCb3VuZCkgewog
ICAgICAgICAgICAgICAgICAgIGhlYWRlci5vbmNsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjYy5jbGFz
c0xpc3QudG9nZ2xlKCdvcGVuJyk7CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgICAgICBoZWFkZXIuX2FjY0JvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfSk7CgogICAgICAgICAgICAvLyA9PT0gRkFRLUJlcmVpY2hlIGFrdGl2aWVyZW4gKEF1
Zi0vWnVrbGFwcGVuLCBzdGFuZGFyZG1hZXNzaWcgZWluZ2VrbGFwcHQpID09PQogICAgICAgICAg
ICBjb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcml2ZS1mYXEnKS5mb3JFYWNoKGZ1bmN0aW9u
KGZhcSkgewogICAgICAgICAgICAgICAgZmFxLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxl
JywgJ2ZhbHNlJyk7CiAgICAgICAgICAgICAgICBmYXEucXVlcnlTZWxlY3RvckFsbCgnLmRyaXZl
LWZhcS1pdGVtJykuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7IGl0ZW0uY2xhc3NMaXN0LnJlbW92
ZSgnb3BlbicpOyB9KTsKICAgICAgICAgICAgICAgIGZhcS5xdWVyeVNlbGVjdG9yQWxsKCcuZHJp
dmUtZmFxLXF1ZXN0aW9uJykuZm9yRWFjaChmdW5jdGlvbihxKSB7CiAgICAgICAgICAgICAgICAg
ICAgaWYgKHEuX2ZhcUJvdW5kKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgcS5vbmNsaWNr
ID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHEuY2xvc2VzdCgnLmRyaXZlLWZhcS1pdGVtJykuY2xhc3NMaXN0LnRv
Z2dsZSgnb3BlbicpOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAg
cS5fZmFxQm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwoK
ICAgICAgICAgICAgLy8gPT09IFNvcnRpZXJiYXJlIFRhYmVsbGVuIGFrdGl2aWVyZW4gPT09CiAg
ICAgICAgICAgIGNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyaXZlLXRhYmxlW2RhdGEtc29y
dGFibGU9InRydWUiXScpLmZvckVhY2goZnVuY3Rpb24odGFibGUpIHsKICAgICAgICAgICAgICAg
IHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoLnNvcnRhYmxlJykuZm9yRWFjaChmdW5jdGlvbih0
aCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aC5fc29ydEJvdW5kKSByZXR1cm47CiAgICAg
ICAgICAgICAgICAgICAgdGguc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2Un
KTsKICAgICAgICAgICAgICAgICAgICB0aC5vbmNsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZHgg
PSBBcnJheS5mcm9tKHRoLnBhcmVudEVsZW1lbnQuY2hpbGRyZW4pLmluZGV4T2YodGgpOwogICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgdGJvZHkgPSB0YWJsZS5xdWVyeVNlbGVjdG9yKCd0Ym9k
eScpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRib2R5KSByZXR1cm47CiAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBhc2MgPSAhdGguY2xhc3NMaXN0LmNvbnRhaW5zKCdzb3J0LWFz
YycpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGxlIFNvcnQtTWFya2VyIGVudGZlcm5l
bgogICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpLmZv
ckVhY2goZnVuY3Rpb24oaCkgeyBoLmNsYXNzTGlzdC5yZW1vdmUoJ3NvcnQtYXNjJywgJ3NvcnQt
ZGVzYycpOyB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGguY2xhc3NMaXN0LmFkZChhc2Mg
PyAnc29ydC1hc2MnIDogJ3NvcnQtZGVzYycpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIg
cm93cyA9IEFycmF5LmZyb20odGJvZHkucXVlcnlTZWxlY3RvckFsbCgndHInKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJvd3Muc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgYVRleHQgPSAoYS5jZWxsc1tpZHhdID8gYS5jZWxsc1tpZHhdLnRl
eHRDb250ZW50LnRyaW0oKSA6ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGJUZXh0ID0gKGIuY2VsbHNbaWR4XSA/IGIuY2VsbHNbaWR4XS50ZXh0Q29u
dGVudC50cmltKCkgOiAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIE51bWVyaXNjaGUgU29ydGllcnVuZyB3ZW5uIG1vZWdsaWNoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgYU51bSA9IHBhcnNlRmxvYXQoYVRleHQpLCBiTnVtID0gcGFyc2VG
bG9hdChiVGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGFOdW0p
ICYmICFpc05hTihiTnVtKSkgcmV0dXJuIGFzYyA/IGFOdW0gLSBiTnVtIDogYk51bSAtIGFOdW07
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXNjID8gYVRleHQubG9jYWxlQ29t
cGFyZShiVGV4dCwgJ2RlJykgOiBiVGV4dC5sb2NhbGVDb21wYXJlKGFUZXh0LCAnZGUnKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3MuZm9y
RWFjaChmdW5jdGlvbihyb3cpIHsgdGJvZHkuYXBwZW5kQ2hpbGQocm93KTsgfSk7CiAgICAgICAg
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB0aC5fc29ydEJvdW5kID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vID09PSDD
nGJlcnNjaHJpZnRlbiBtaXQgQW5jaG9yLUlEcyB2ZXJzZWhlbiA9PT0KICAgICAgICAgICAgY29u
dGVudC5xdWVyeVNlbGVjdG9yQWxsKCdoMSwgaDIsIGgzLCBoNCcpLmZvckVhY2goZnVuY3Rpb24o
aCkgewogICAgICAgICAgICAgICAgdmFyIHRleHQgPSBoLnRleHRDb250ZW50LnRyaW0oKTsKICAg
ICAgICAgICAgICAgIGlmICghdGV4dCkgcmV0dXJuOwogICAgICAgICAgICAgICAgdmFyIHNsdWcg
PSB0ZXh0LnRvTG93ZXJDYXNlKCkKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvw6QvZywg
J2FlJykucmVwbGFjZSgvw7YvZywgJ29lJykucmVwbGFjZSgvw7wvZywgJ3VlJykucmVwbGFjZSgv
w58vZywgJ3NzJykKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW15hLXowLTldKy9nLCAn
LScpLnJlcGxhY2UoL14tfC0kL2csICcnKTsKICAgICAgICAgICAgICAgIGguaWQgPSBzbHVnOwog
ICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vID09PSBNYW51ZWxsZSBDcm9zc2xpbmtzICgu
ZHJpdmUteHJlZikga2xpY2tiYXIgbWFjaGVuID09PQogICAgICAgICAgICBjb250ZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJy5kcml2ZS14cmVmJykuZm9yRWFjaChmdW5jdGlvbihlbCkgewogICAgICAg
ICAgICAgICAgdmFyIHRhcmdldCA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS14cmVmLXRhcmdldCcp
OwogICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHJldHVybjsKICAgICAgICAgICAgICAgIGVs
Lm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVm
YXVsdCgpOwogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAg
ICAgICAgICAgICAgdmFyIHBhcnRzID0gdGFyZ2V0LnNwbGl0KCcjJyk7CiAgICAgICAgICAgICAg
ICAgICAgdmFyIGRvY0lkID0gcGFydHNbMF07CiAgICAgICAgICAgICAgICAgICAgdmFyIGhlYWRp
bmdTbHVnID0gcGFydHNbMV0gfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgRHJpdmVQb3J0YWwu
c2VsZWN0RG9jdW1lbnQoZG9jSWQpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIERyaXZlUG9ydGFsLmhpZ2hsaWdodEl0ZW0oZG9jSWQpOwogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaGVhZGluZ1NsdWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IE5hY2ggUmVuZGVyIHp1bSBIZWFkaW5nIHNjcm9sbGVuCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBoZWFkaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaGVhZGluZ1NsdWcpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkaW5nKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmcuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlv
cjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWFkaW5nLnN0eWxlLnRyYW5zaXRpb24gPSAnYmFja2dyb3VuZCAwLjNzJzsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZy5zdHlsZS5iYWNrZ3Jv
dW5kID0gJ3ZhcigtLWJnLWFjdGl2ZSknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBoZWFkaW5nLnN0eWxlLmJhY2tncm91bmQgPSAn
JzsgfSwgMjAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgMjAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIC8v
IE1vdXNlb3ZlcjogUG9wb3ZlciBtaXQgWmllbC1JbmZvCiAgICAgICAgICAgICAgICBlbC5hZGRF
dmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgICAg
ICAgICB2YXIgcGFydHMgPSB0YXJnZXQuc3BsaXQoJyMnKTsKICAgICAgICAgICAgICAgICAgICB2
YXIgZG9jSWQgPSBwYXJ0c1swXTsKICAgICAgICAgICAgICAgICAgICB2YXIgZG9jID0gRHJpdmVG
Uy5kb2N1bWVudHMuZmluZChmdW5jdGlvbihkKSB7IHJldHVybiBkLmlkID09PSBkb2NJZDsgfSk7
CiAgICAgICAgICAgICAgICAgICAgaWYgKGRvYykgewogICAgICAgICAgICAgICAgICAgICAgICBE
cml2ZVBvcnRhbC5fc2hvd0Nyb3NzbGlua1BvcG92ZXIoZXYsIFt7IHRlcm06IGRvYy50aXRlbCwg
dHlwZTogJ3JlZmVyZW56JywgZG9jOiBkb2MgfV0pOwogICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbW91
c2VsZWF2ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIERyaXZlUG9ydGFsLl9o
aWRlQ3Jvc3NsaW5rUG9wb3ZlcigpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0p
OwoKICAgICAgICAgICAgLy8gPT09IEF1dG9tYXRpc2NoZSBDcm9zc2xpbmstRXJrZW5udW5nID09
PQogICAgICAgICAgICB0aGlzLl9hcHBseUNyb3NzbGlua3MoY29udGVudCwgZG9jKTsKICAgICAg
ICB9LCA1MCk7CiAgICB9LAoKICAgIC8vIENyb3NzbGluay1FbmdpbmU6IEVya2VubnQgVmVyd2Vp
c2UgYXVmIGFuZGVyZSBBcnRpa2VsIGltIEluaGFsdAogICAgX2Nyb3NzbGlua1BvcG92ZXI6IG51
bGwsCiAgICBfY3Jvc3NsaW5rVGltZW91dDogbnVsbCwKCiAgICBfYnVpbGRDcm9zc2xpbmtJbmRl
eChleGNsdWRlRG9jSWQpIHsKICAgICAgICAvLyBJbmRleCBhbGxlciBEb2t1bWVudGUgbWl0IFRp
dGVsbiB1bmQgU2NobGFnd29lcnRlcm4KICAgICAgICB2YXIgaW5kZXggPSBbXTsKICAgICAgICBE
cml2ZUZTLmRvY3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgaWYgKGQu
aWQgPT09IGV4Y2x1ZGVEb2NJZCkgcmV0dXJuOwogICAgICAgICAgICAvLyBUaXRlbCBhbHMgU3Vj
aGJlZ3JpZmYgKG1pbiA0IFplaWNoZW4pCiAgICAgICAgICAgIGlmIChkLnRpdGVsICYmIGQudGl0
ZWwubGVuZ3RoID49IDQpIHsKICAgICAgICAgICAgICAgIGluZGV4LnB1c2goeyB0ZXJtOiBkLnRp
dGVsLCB0eXBlOiAndGl0ZWwnLCBkb2M6IGQgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
Ly8gU2NobGFnd29lcnRlciBhbHMgU3VjaGJlZ3JpZmZlIChtaW4gMyBaZWljaGVuKQogICAgICAg
ICAgICAoZC5zY2hsYWd3b2VydGVyIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGt3KSB7CiAgICAg
ICAgICAgICAgICBpZiAoa3cgJiYga3cubGVuZ3RoID49IDMpIHsKICAgICAgICAgICAgICAgICAg
ICBpbmRleC5wdXNoKHsgdGVybToga3csIHR5cGU6ICdzY2hsYWd3b3J0JywgZG9jOiBkIH0pOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICAvLyBM
YWVuZ3N0ZSBCZWdyaWZmZSB6dWVyc3QgKHZlcmhpbmRlcnQgVGVpbG1hdGNoZXMpCiAgICAgICAg
aW5kZXguc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiLnRlcm0ubGVuZ3RoIC0gYS50ZXJt
Lmxlbmd0aDsgfSk7CiAgICAgICAgcmV0dXJuIGluZGV4OwogICAgfSwKCiAgICBfYXBwbHlDcm9z
c2xpbmtzKGNvbnRlbnRFbCwgY3VycmVudERvYykgewogICAgICAgIC8vIEdvdmVybmFuY2UtRWlu
c3RlbGx1bmcgcHLDvGZlbgogICAgICAgIHZhciBzZXR0aW5ncyA9IChEcml2ZUdvdmVybmFuY2Uu
ZGF0YSAmJiBEcml2ZUdvdmVybmFuY2UuZGF0YS5zZXR0aW5ncykgPyBEcml2ZUdvdmVybmFuY2Uu
ZGF0YS5zZXR0aW5ncyA6IHt9OwogICAgICAgIGlmIChzZXR0aW5ncy5jcm9zc2xpbmtNb2RlID09
PSAnZGlzYWJsZWQnKSByZXR1cm47CgogICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2J1aWxkQ3Jv
c3NsaW5rSW5kZXgoY3VycmVudERvYy5pZCk7CiAgICAgICAgaWYgKGluZGV4Lmxlbmd0aCA9PT0g
MCkgcmV0dXJuOwoKICAgICAgICAvLyBCZXJlaXRzIHZlcmxpbmt0ZSBUZXJtZSB0cmFja2VuIChr
ZWluIGRvcHBlbHRlcyBNYXRjaGluZykKICAgICAgICB2YXIgbWF0Y2hlZCA9IG5ldyBTZXQoKTsK
ICAgICAgICAvLyBTYW1tbGUgYWxsZSB1bmlxdWUgRG9rdW1lbnQtSURzIGRpZSBqZSBUZXJtIG1h
dGNoZW4KICAgICAgICB2YXIgdGVybURvY3MgPSB7fTsKICAgICAgICBpbmRleC5mb3JFYWNoKGZ1
bmN0aW9uKGVudHJ5KSB7CiAgICAgICAgICAgIHZhciBrZXkgPSBlbnRyeS50ZXJtLnRvTG93ZXJD
YXNlKCk7CiAgICAgICAgICAgIGlmICghdGVybURvY3Nba2V5XSkgdGVybURvY3Nba2V5XSA9IFtd
OwogICAgICAgICAgICAvLyBOdXIgdW5pcXVlIERvY3MgcHJvIFRlcm0KICAgICAgICAgICAgaWYg
KCF0ZXJtRG9jc1trZXldLmZpbmQoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5kb2MuaWQgPT09IGVu
dHJ5LmRvYy5pZDsgfSkpIHsKICAgICAgICAgICAgICAgIHRlcm1Eb2NzW2tleV0ucHVzaChlbnRy
eSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgdmFyIHdhbGtlciA9IGRvY3Vt
ZW50LmNyZWF0ZVRyZWVXYWxrZXIoY29udGVudEVsLCBOb2RlRmlsdGVyLlNIT1dfVEVYVCwgbnVs
bCwgZmFsc2UpOwogICAgICAgIHZhciB0ZXh0Tm9kZXMgPSBbXTsKICAgICAgICB3aGlsZSAod2Fs
a2VyLm5leHROb2RlKCkpIHsKICAgICAgICAgICAgdmFyIG5vZGUgPSB3YWxrZXIuY3VycmVudE5v
ZGU7CiAgICAgICAgICAgIC8vIE5pY2h0IGlubmVyaGFsYiB2b24gTGlua3MsIEJ1dHRvbnMsIGJl
cmVpdHMgbWFya2llcnRlbiBDcm9zc2xpbmtzLCBvZGVyIGRyaXZlLW1lZGlhIEVsZW1lbnRlbgog
ICAgICAgICAgICB2YXIgcGFyZW50ID0gbm9kZS5wYXJlbnRFbGVtZW50OwogICAgICAgICAgICBp
ZiAocGFyZW50ICYmIChwYXJlbnQuY2xvc2VzdCgnYScpIHx8IHBhcmVudC5jbG9zZXN0KCdidXR0
b24nKSB8fCBwYXJlbnQuY2xvc2VzdCgnLmNyb3NzbGluaycpIHx8IHBhcmVudC5jbG9zZXN0KCcu
ZHJpdmUtbWVkaWEnKSkpIGNvbnRpbnVlOwogICAgICAgICAgICBpZiAobm9kZS50ZXh0Q29udGVu
dC50cmltKCkubGVuZ3RoID4gMikgewogICAgICAgICAgICAgICAgdGV4dE5vZGVzLnB1c2gobm9k
ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBtYXhMaW5rcyA9IDMwOyAv
LyBQZXJmb3JtYW5jZS1MaW1pdAogICAgICAgIHZhciBsaW5rQ291bnQgPSAwOwoKICAgICAgICB0
ZXh0Tm9kZXMuZm9yRWFjaChmdW5jdGlvbih0ZXh0Tm9kZSkgewogICAgICAgICAgICBpZiAobGlu
a0NvdW50ID49IG1heExpbmtzKSByZXR1cm47CiAgICAgICAgICAgIHZhciB0ZXh0ID0gdGV4dE5v
ZGUudGV4dENvbnRlbnQ7CiAgICAgICAgICAgIHZhciByZXBsYWNlbWVudHMgPSBbXTsKCiAgICAg
ICAgICAgIGluZGV4LmZvckVhY2goZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAgICAgICAgIGlm
IChsaW5rQ291bnQgPj0gbWF4TGlua3MpIHJldHVybjsKICAgICAgICAgICAgICAgIHZhciB0ZXJt
TG93ZXIgPSBlbnRyeS50ZXJtLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICBpZiAobWF0
Y2hlZC5oYXModGVybUxvd2VyKSkgcmV0dXJuOwoKICAgICAgICAgICAgICAgIC8vIFdvcnRncmVu
emVuLVN1Y2hlIChjYXNlLWluc2Vuc2l0aXZlKQogICAgICAgICAgICAgICAgdmFyIGVzY2FwZWQg
PSBlbnRyeS50ZXJtLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpOwogICAg
ICAgICAgICAgICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgnXFxiJyArIGVzY2FwZWQgKyAnXFxiJywg
J2knKTsKICAgICAgICAgICAgICAgIHZhciBtID0gcmUuZXhlYyh0ZXh0KTsKICAgICAgICAgICAg
ICAgIGlmIChtKSB7CiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2goewogICAg
ICAgICAgICAgICAgICAgICAgICBzdGFydDogbS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kOiBtLmluZGV4ICsgbVswXS5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIG9y
aWdpbmFsOiBtWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBlbnRyeTogZW50cnksCiAgICAg
ICAgICAgICAgICAgICAgICAgIGVudHJpZXM6IHRlcm1Eb2NzW3Rlcm1Mb3dlcl0gfHwgW2VudHJ5
XQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYWRk
KHRlcm1Mb3dlcik7CiAgICAgICAgICAgICAgICAgICAgbGlua0NvdW50Kys7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50cy5sZW5n
dGggPT09IDApIHJldHVybjsKCiAgICAgICAgICAgIC8vIE5hY2ggUG9zaXRpb24gc29ydGllcmVu
IChydWVja3dhZXJ0cyBlcnNldHplbikKICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnNvcnQoZnVu
Y3Rpb24oYSwgYikgeyByZXR1cm4gYi5zdGFydCAtIGEuc3RhcnQ7IH0pOwoKICAgICAgICAgICAg
Ly8gVWViZXJsYXBwdW5nZW4gZW50ZmVybmVuCiAgICAgICAgICAgIHZhciBjbGVhbiA9IFtyZXBs
YWNlbWVudHNbMF1dOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHJlcGxhY2VtZW50
cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50c1tpXS5lbmQg
PD0gY2xlYW5bY2xlYW4ubGVuZ3RoIC0gMV0uc3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICBj
bGVhbi5wdXNoKHJlcGxhY2VtZW50c1tpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0KCiAgICAgICAgICAgIC8vIEZyYWdtZW50IGJhdWVuCiAgICAgICAgICAgIHZhciBmcmFnID0g
ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAgICB2YXIgbGFzdElk
eCA9IDA7CiAgICAgICAgICAgIC8vIFZvcndhZXJ0cyBzb3J0aWVyZW4gZnVlciBGcmFnbWVudC1B
dWZiYXUKICAgICAgICAgICAgY2xlYW4uc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhLnN0
YXJ0IC0gYi5zdGFydDsgfSk7CgogICAgICAgICAgICBjbGVhbi5mb3JFYWNoKGZ1bmN0aW9uKHIp
IHsKICAgICAgICAgICAgICAgIC8vIFRleHQgdm9yIGRlbSBNYXRjaAogICAgICAgICAgICAgICAg
aWYgKHIuc3RhcnQgPiBsYXN0SWR4KSB7CiAgICAgICAgICAgICAgICAgICAgZnJhZy5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0LnN1YnN0cmluZyhsYXN0SWR4LCByLnN0
YXJ0KSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gQ3Jvc3NsaW5rLVNw
YW4KICAgICAgICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Bh
bicpOwogICAgICAgICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSAnY3Jvc3NsaW5rJzsKICAgICAg
ICAgICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSByLm9yaWdpbmFsOwogICAgICAgICAgICAgICAg
Ly8gRGF0ZW4gZnVlciBQb3BvdmVyCiAgICAgICAgICAgICAgICB2YXIgZG9jcyA9IHIuZW50cmll
cy5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5kb2M7IH0pOwogICAgICAgICAgICAgICAgdmFy
IHR5cGVzID0gci5lbnRyaWVzLm1hcChmdW5jdGlvbihlKSB7IHJldHVybiBlLnR5cGU7IH0pOwog
ICAgICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2RhdGEteGxpbmstZG9jcycsIEpTT04u
c3RyaW5naWZ5KGRvY3MubWFwKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQuaWQ7IH0pKSk7CiAgICAg
ICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZGF0YS14bGluay10eXBlJywgdHlwZXNbMF0p
OwoKICAgICAgICAgICAgICAgIHNwYW4uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIGZ1
bmN0aW9uKGV2KSB7CiAgICAgICAgICAgICAgICAgICAgRHJpdmVQb3J0YWwuX3Nob3dDcm9zc2xp
bmtQb3BvdmVyKGV2LCByLmVudHJpZXMpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICAgICBzcGFuLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICAgICBEcml2ZVBvcnRhbC5faGlkZUNyb3NzbGlua1BvcG92ZXIoKTsKICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgc3Bhbi5hZGRFdmVudExpc3RlbmVyKCdj
bGljaycsIGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1
bHQoKTsKICAgICAgICAgICAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAg
ICAgICAgICAgICAvLyBCZWkgbnVyIGVpbmVtIFRyZWZmZXI6IGRpcmVrdCBvZWZmbmVuCiAgICAg
ICAgICAgICAgICAgICAgaWYgKGRvY3MubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIERyaXZlUG9ydGFsLnNlbGVjdERvY3VtZW50KGRvY3NbMF0uaWQpOwogICAgICAgICAg
ICAgICAgICAgICAgICBEcml2ZVBvcnRhbC5oaWdobGlnaHRJdGVtKGRvY3NbMF0uaWQpOwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGZy
YWcuYXBwZW5kQ2hpbGQoc3Bhbik7CiAgICAgICAgICAgICAgICBsYXN0SWR4ID0gci5lbmQ7CiAg
ICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gUmVzdC1UZXh0CiAgICAgICAgICAgIGlmIChs
YXN0SWR4IDwgdGV4dC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dC5zdWJzdHJpbmcobGFzdElkeCkpKTsKICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgdGV4dE5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZnJh
ZywgdGV4dE5vZGUpOwogICAgICAgIH0pOwogICAgfSwKCiAgICBfc2hvd0Nyb3NzbGlua1BvcG92
ZXIoZXYsIGVudHJpZXMpIHsKICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fY3Jvc3NsaW5rVGlt
ZW91dCk7CiAgICAgICAgdmFyIHBvcG92ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3Jv
c3NsaW5rUG9wb3ZlcicpOwogICAgICAgIGlmICghcG9wb3ZlcikgcmV0dXJuOwoKICAgICAgICAv
LyBNZWhyZXJlIERva3VtZW50ZSBrb2VubmVuIGRlbnNlbGJlbiBCZWdyaWZmIG1hdGNoZW4KICAg
ICAgICB2YXIgc2VlbiA9IG5ldyBTZXQoKTsKICAgICAgICB2YXIgdW5pcXVlRW50cmllcyA9IGVu
dHJpZXMuZmlsdGVyKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKHNlZW4uaGFzKGUuZG9j
LmlkKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBzZWVuLmFkZChlLmRvYy5pZCk7CiAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0pOwoKICAgICAgICB2YXIgaHRtbCA9ICcnOwog
ICAgICAgIHVuaXF1ZUVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSwgaWR4KSB7CiAgICAg
ICAgICAgIHZhciBkb2MgPSBlbnRyeS5kb2M7CiAgICAgICAgICAgIHZhciBtYXRjaFR5cGUgPSBl
bnRyeS50eXBlID09PSAndGl0ZWwnID8gJ0FydGlrZWx0aXRlbCcgOiAnU2NobGFnd29ydCc7CiAg
ICAgICAgICAgIC8vIFRleHRhdXN6dWcgKGVyc3RlIDEyMCBaZWljaGVuIGRlcyBJbmhhbHRzLCBI
VE1MLVRhZ3MgZW50ZmVybnQpCiAgICAgICAgICAgIHZhciBleGNlcnB0ID0gJyc7CiAgICAgICAg
ICAgIGlmIChkb2MuaW5oYWx0KSB7CiAgICAgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gRHJp
dmVQb3J0YWwuc2FuaXRpemVIVE1MKGRvYy5pbmhhbHQpOwogICAgICAgICAgICAgICAgZXhjZXJw
dCA9IGRpdi50ZXh0Q29udGVudC5zdWJzdHJpbmcoMCwgMTIwKTsKICAgICAgICAgICAgICAgIGlm
IChkaXYudGV4dENvbnRlbnQubGVuZ3RoID4gMTIwKSBleGNlcnB0ICs9ICcuLi4nOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGlmIChpZHggPiAwKSBodG1sICs9ICc8ZGl2IHN0eWxlPSJib3Jk
ZXItdG9wOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO21hcmdpbjo4cHggMDsiPjwvZGl2
Pic7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InhsaW5rLWhlYWRlciI+PHNwYW4g
Y2xhc3M9InhsaW5rLWljb24iPiYjeDFGNTE3Ozwvc3Bhbj4gJyArIERyaXZlUG9ydGFsLmVzY2Fw
ZUhUTUwoZG9jLnRpdGVsKSArICc8L2Rpdj4nOwogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNs
YXNzPSJ4bGluay1tZXRhIj4nOwogICAgICAgICAgICBodG1sICs9ICc8c3Bhbj4nICsgRHJpdmVQ
b3J0YWwuZXNjYXBlSFRNTChkb2Mua2F0ZWdvcmllKSArICc8L3NwYW4+JzsKICAgICAgICAgICAg
aHRtbCArPSAnPHNwYW4+VHJlZmZlcjogJyArIG1hdGNoVHlwZSArICc8L3NwYW4+JzsKICAgICAg
ICAgICAgaHRtbCArPSAnPHNwYW4+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLnN0YXR1
cyB8fCAnRW50d3VyZicpICsgJzwvc3Bhbj4nOwogICAgICAgICAgICBodG1sICs9ICc8L2Rpdj4n
OwogICAgICAgICAgICBpZiAoZXhjZXJwdCkgewogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRp
diBjbGFzcz0ieGxpbmstZXhjZXJwdCI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZXhjZXJw
dCkgKyAnPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZG9jLnNjaGxhZ3dv
ZXJ0ZXIgJiYgZG9jLnNjaGxhZ3dvZXJ0ZXIubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAg
aHRtbCArPSAnPGRpdiBjbGFzcz0ieGxpbmstdGFncyI+JyArIGRvYy5zY2hsYWd3b2VydGVyLnNs
aWNlKDAsIDUpLm1hcChmdW5jdGlvbihrKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8
c3Bhbj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrKSArICc8L3NwYW4+JzsKICAgICAgICAg
ICAgICAgIH0pLmpvaW4oJycpICsgJzwvZGl2Pic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
aWYgKHVuaXF1ZUVudHJpZXMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgICAgICBodG1sICs9
ICc8ZGl2IGNsYXNzPSJ4bGluay1hY3Rpb24iIG9uY2xpY2s9IkRyaXZlUG9ydGFsLnNlbGVjdERv
Y3VtZW50KFwnJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIoZG9jLmlkKSArICdcJyk7RHJpdmVQ
b3J0YWwuaGlnaGxpZ2h0SXRlbShcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvYy5pZCkg
KyAnXCcpOyI+QXJ0aWtlbCDDtmZmbmVuIOKGkjwvZGl2Pic7CiAgICAgICAgICAgIH0KICAgICAg
ICB9KTsKCiAgICAgICAgaWYgKHVuaXF1ZUVudHJpZXMubGVuZ3RoID4gMSkgewogICAgICAgICAg
ICBodG1sICs9ICc8ZGl2IHN0eWxlPSJib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIt
bGlnaHQpO21hcmdpbi10b3A6OHB4O3BhZGRpbmctdG9wOjZweDtmb250LXNpemU6MTFweDtjb2xv
cjp2YXIoLS10ZXh0LW11dGVkKTsiPicgKyB1bmlxdWVFbnRyaWVzLmxlbmd0aCArICcgdmVyd2Fu
ZHRlIEFydGlrZWwgZ2VmdW5kZW48L2Rpdj4nOwogICAgICAgIH0KCiAgICAgICAgcG9wb3Zlci5p
bm5lckhUTUwgPSBodG1sOwogICAgICAgIHBvcG92ZXIuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScp
OwoKICAgICAgICAvLyBQb3NpdGlvbiByZWxhdGl2IHp1bSBUcmlnZ2VyLUVsZW1lbnQKICAgICAg
ICB2YXIgcmVjdCA9IGV2LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICB2
YXIgcG9wVyA9IDMyMDsKICAgICAgICB2YXIgcG9wSCA9IHBvcG92ZXIub2Zmc2V0SGVpZ2h0IHx8
IDIwMDsKICAgICAgICB2YXIgbGVmdCA9IHJlY3QubGVmdDsKICAgICAgICB2YXIgdG9wID0gcmVj
dC5ib3R0b20gKyA2OwogICAgICAgIC8vIFJlY2h0cyByYXVzPyBMaW5rcyB2ZXJzY2hpZWJlbgog
ICAgICAgIGlmIChsZWZ0ICsgcG9wVyA+IHdpbmRvdy5pbm5lcldpZHRoIC0gMTApIHsKICAgICAg
ICAgICAgbGVmdCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gcG9wVyAtIDEwOwogICAgICAgIH0KICAg
ICAgICAvLyBVbnRlbiByYXVzPyBVZWJlciBkZW0gRWxlbWVudCBhbnplaWdlbgogICAgICAgIGlm
ICh0b3AgKyBwb3BIID4gd2luZG93LmlubmVySGVpZ2h0IC0gMTApIHsKICAgICAgICAgICAgdG9w
ID0gcmVjdC50b3AgLSBwb3BIIC0gNjsKICAgICAgICB9CiAgICAgICAgcG9wb3Zlci5zdHlsZS5s
ZWZ0ID0gTWF0aC5tYXgoMTAsIGxlZnQpICsgJ3B4JzsKICAgICAgICBwb3BvdmVyLnN0eWxlLnRv
cCA9IE1hdGgubWF4KDEwLCB0b3ApICsgJ3B4JzsKICAgIH0sCgogICAgX2hpZGVDcm9zc2xpbmtQ
b3BvdmVyKCkgewogICAgICAgIHRoaXMuX2Nyb3NzbGlua1RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgcG9wb3ZlciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjcm9zc2xpbmtQb3BvdmVyJyk7CiAgICAgICAgICAgIGlmIChwb3BvdmVyKSBwb3BvdmVy
LmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTsKICAgICAgICB9LCAyMDApOwogICAgfSwKCiAg
ICAvLyBQcnVlZmVuIG9iIGRlciBha3R1ZWxsZSBVc2VyIFJldmlzaW9uZW4vRGlmZiBzZWhlbiBk
YXJmOgogICAgLy8gLSBMZXNlbW9kdXM6IG5pZQogICAgLy8gLSBTdXBlclVzZXIgLyBGYWNoYXVm
c2ljaHQ6IGltbWVyCiAgICAvLyAtIFp1c3RhZW5kaWdlciBSZXZpZXdlciBmdWVyIGRpZSBLYXRl
Z29yaWU6IGphCiAgICAvLyAtIE1pdHdpcmtlbmRlciBhbSBBcnRpa2VsIChDb250cmlidXRvcik6
IGphCiAgICAvLyAtIEFsbGUgYW5kZXJlbjogbmVpbgogICAgX2NhblNlZVJldmlzaW9ucyhkb2Mp
IHsKICAgICAgICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc3RhdGljJykgcmV0dXJuIGZhbHNlOwog
ICAgICAgIGlmIChEcml2ZUdvdmVybmFuY2UuaXNTdXBlclVzZXIoKSB8fCBEcml2ZUdvdmVybmFu
Y2UuaXNGYWNoYXVmc2ljaHQoKSkgcmV0dXJuIHRydWU7CiAgICAgICAgaWYgKERyaXZlR292ZXJu
YW5jZS5pc1Jldmlld2VyKGRvYy5rYXRlZ29yaWUpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAvLyBN
aXR3aXJrZW5kZTogVXNlcm5hbWUgcHJ1ZWZlbgogICAgICAgIHZhciB1c2VybmFtZSA9IChEcml2
ZUZTLmVudmlyb24gJiYgRHJpdmVGUy5lbnZpcm9uLnVzZXJuYW1lKSA/IERyaXZlRlMuZW52aXJv
bi51c2VybmFtZS50b0xvd2VyQ2FzZSgpIDogJyc7CiAgICAgICAgaWYgKHVzZXJuYW1lICYmIGRv
Yy5jb250cmlidXRvcnMpIHsKICAgICAgICAgICAgaWYgKGRvYy5jb250cmlidXRvcnMuc29tZShm
dW5jdGlvbihjKSB7IHJldHVybiAoYy51c2VybmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0g
dXNlcm5hbWU7IH0pKSByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgLy8gRXJzdGVsbGVy
IG9kZXIgbGV0enRlciBCZWFyYmVpdGVyCiAgICAgICAgaWYgKHVzZXJuYW1lICYmICgoZG9jLmVy
c3RlbGx0Vm9uIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB1c2VybmFtZSB8fCAoZG9jLmJlYXJi
ZWl0ZXRWb24gfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IHVzZXJuYW1lKSkgcmV0dXJuIHRydWU7
CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICBfcmVuZGVyQ2hpbGRBcnRpY2xlcyhk
b2MpIHsKICAgICAgICBjb25zdCBjaGlsZHJlbiA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbHRlcihm
dW5jdGlvbihkKXsgcmV0dXJuIGQucGFyZW50SWQgPT09IGRvYy5pZDsgfSk7CiAgICAgICAgaWYg
KGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnOwogICAgICAgIHJldHVybiAnPGRpdiBj
bGFzcz0ibWV0YS1pdGVtIiBzdHlsZT0iZmxleC1iYXNpczoxMDAlOyI+PGRpdiBjbGFzcz0ibWV0
YS1sYWJlbCI+VW50ZXJhcnRpa2VsPC9kaXY+PGRpdj4nICsKICAgICAgICAgICAgY2hpbGRyZW4u
bWFwKGZ1bmN0aW9uKGMpeyByZXR1cm4gJzxhIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRp
bmcpO2N1cnNvcjpwb2ludGVyO21hcmdpbi1yaWdodDo4cHg7IiBvbmNsaWNrPSJEcml2ZVBvcnRh
bC5zZWxlY3REb2N1bWVudChcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGMuaWQpICsgJ1wn
KSI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoYy50aXRlbCkgKyAnPC9hPic7IH0pLmpvaW4o
JycpICsKICAgICAgICAnPC9kaXY+PC9kaXY+JzsKICAgIH0sCgogICAgcmVuZGVyQ29udHJpYnV0
b3JzKGRvYykgewogICAgICAgIGlmICghZG9jLmNvbnRyaWJ1dG9ycyB8fCBkb2MuY29udHJpYnV0
b3JzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnOwoKICAgICAgICAvLyBHZXdpY2h0dW5nZW4gYmVy
ZWNobmVuCiAgICAgICAgY29uc3Qgcm9sZVdlaWdodHMgPSB7IGF1dG9yOiAzLCByZWRha3Rpb246
IDEsIHJldmlldzogMS41IH07CiAgICAgICAgbGV0IHRvdGFsV2VpZ2h0ID0gMDsKICAgICAgICBj
b25zdCB3ZWlnaHRlZCA9IGRvYy5jb250cmlidXRvcnMubWFwKGMgPT4gewogICAgICAgICAgICBj
b25zdCB3ID0gKGMuZW50cmllcyB8fCAxKSAqIChyb2xlV2VpZ2h0c1tjLnJvbGVdIHx8IDEpOwog
ICAgICAgICAgICB0b3RhbFdlaWdodCArPSB3OwogICAgICAgICAgICByZXR1cm4geyAuLi5jLCB3
ZWlnaHQ6IHcgfTsKICAgICAgICB9KTsKCiAgICAgICAgY29uc3Qgcm9sZUxhYmVscyA9IHsgYXV0
b3I6ICdBdXRvcicsIHJlZGFrdGlvbjogJ1JlZGFrdGlvbicsIHJldmlldzogJ1JldmlldycgfTsK
CiAgICAgICAgbGV0IGh0bWwgPSAnPGRpdiBjbGFzcz0iY29udHJpYnV0b3JzLXNlY3Rpb24iPjxo
Mz5NaXR3aXJrZW5kZTwvaDM+JzsKICAgICAgICB3ZWlnaHRlZAogICAgICAgICAgICAuc29ydCgo
YSwgYikgPT4gYi53ZWlnaHQgLSBhLndlaWdodCkKICAgICAgICAgICAgLmZvckVhY2goYyA9PiB7
CiAgICAgICAgICAgICAgICBjb25zdCBwY3QgPSB0b3RhbFdlaWdodCA+IDAgPyBNYXRoLnJvdW5k
KChjLndlaWdodCAvIHRvdGFsV2VpZ2h0KSAqIDEwMCkgOiAwOwogICAgICAgICAgICAgICAgY29u
c3Qgcm9sZSA9IGMucm9sZSB8fCAnYXV0b3InOwogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRp
diBjbGFzcz0iY29udHJpYnV0b3Itcm93Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPHNwYW4g
Y2xhc3M9ImNvbnRyaWJ1dG9yLW5hbWUiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGMudXNl
cm5hbWUpICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImNv
bnRyaWJ1dG9yLXJvbGUgJyArIHJvbGUgKyAnIj4nICsgKHJvbGVMYWJlbHNbcm9sZV0gfHwgcm9s
ZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZm9udC1z
aXplOjExcHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7d2lkdGg6MjRweDt0ZXh0LWFsaWduOnJp
Z2h0O2ZsZXgtc2hyaW5rOjA7Ij4nICsgKGMuZW50cmllcyA+IDEgPyBjLmVudHJpZXMgKyAneCcg
OiAnJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjb250
cmlidXRvci1iYXIiPjxkaXYgY2xhc3M9ImNvbnRyaWJ1dG9yLWJhci1maWxsICcgKyByb2xlICsg
JyIgc3R5bGU9IndpZHRoOicgKyBwY3QgKyAnJTsiPjwvZGl2PjwvZGl2PicgKwogICAgICAgICAg
ICAgICAgICAgICc8c3BhbiBjbGFzcz0iY29udHJpYnV0b3ItcGN0Ij4nICsgcGN0ICsgJyU8L3Nw
YW4+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAgICAgfSk7CiAgICAgICAg
aHRtbCArPSAnPC9kaXY+JzsKICAgICAgICByZXR1cm4gaHRtbDsKICAgIH0sCgogICAgcmVuZGVy
UmV2aWV3SGlzdG9yeShkb2MpIHsKICAgICAgICAvLyBQcnVlZnVuZ3N2ZXJsYXVmIG51ciBmdWVy
IFNVLCBGQSB1bmQgenVzdGFlbmRpZ2UgUmV2aWV3ZXIgYW56ZWlnZW4KICAgICAgICBpZiAoIURy
aXZlR292ZXJuYW5jZS5pc1N1cGVyVXNlcigpICYmICFEcml2ZUdvdmVybmFuY2UuaXNGYWNoYXVm
c2ljaHQoKSAmJiAhRHJpdmVHb3Zlcm5hbmNlLmlzUmV2aWV3ZXIoZG9jLmthdGVnb3JpZSkpIHJl
dHVybiAnJzsKCiAgICAgICAgY29uc3QgZ292ID0gZG9jLmdvdmVybmFuY2U7CiAgICAgICAgaWYg
KCFnb3YgfHwgIWdvdi5yZXZpZXdIaXN0b3J5IHx8IGdvdi5yZXZpZXdIaXN0b3J5Lmxlbmd0aCA9
PT0gMCkgcmV0dXJuICcnOwoKICAgICAgICBsZXQgaHRtbCA9ICc8ZGl2IGNsYXNzPSJyZXZpZXct
aGlzdG9yeSI+PGgzPlByw7xmdW5nc3ZlcmxhdWY8L2gzPic7CiAgICAgICAgZ292LnJldmlld0hp
c3Rvcnkuc2xpY2UoKS5yZXZlcnNlKCkuZm9yRWFjaChmdW5jdGlvbihlbnRyeSwgaWR4KSB7CiAg
ICAgICAgICAgIHZhciBhY3Rpb25MYWJlbCA9IGVudHJ5LmFjdGlvbiA9PT0gJ2FwcHJvdmVkJyA/
ICdGcmVpZ2VnZWJlbicgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LmFj
dGlvbiA9PT0gJ3JlamVjdGVkJyA/ICdBYmdlbGVobnQnIDoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnRyeS5hY3Rpb24gPT09ICdzdWJtaXR0ZWQnID8gJ1p1ciBQcsO8ZnVuZycg
OiBlbnRyeS5hY3Rpb247CiAgICAgICAgICAgIHZhciBkYXRlID0gZm9ybWF0RGF0ZVRpbWUoZW50
cnkuYXQpOwogICAgICAgICAgICB2YXIgY29tbWVudEh0bWwgPSAnJzsKICAgICAgICAgICAgaWYg
KGVudHJ5LmNvbW1lbnQpIHsKICAgICAgICAgICAgICAgIC8vIEtvbW1lbnRhciBhbHMgc2ljaGVy
ZXMgSFRNTCByZW5kZXJuIChlcmxhdWJ0OiBiLCBpLCB1LCB1bCwgbGksIGJyLCBmb250KQogICAg
ICAgICAgICAgICAgLy8gQWxsZXMgYW5kZXJlOiBUYWdzIGFscyBnZXJlbmRlcnRlbiBUZXh0IHpl
aWdlbgogICAgICAgICAgICAgICAgdmFyIHNhZmVDb21tZW50ID0gZW50cnkuY29tbWVudDsKICAg
ICAgICAgICAgICAgIC8vIEZhbGxzIGRlciBLb21tZW50YXIgcmF3LUhUTUwtVGFncyBhbHMgVGV4
dCBlbnRoYWVsdCAoYWx0ZSBFaW50cmFlZ2UpLCBlc2NhcGVuCiAgICAgICAgICAgICAgICBpZiAo
c2FmZUNvbW1lbnQuaW5kZXhPZignPHNwYW4gc3R5bGU9JykgPj0gMCB8fCBzYWZlQ29tbWVudC5p
bmRleE9mKCc8ZGl2JykgPj0gMCB8fCBzYWZlQ29tbWVudC5pbmRleE9mKCc8YSBocmVmPScpID49
IDApIHsKICAgICAgICAgICAgICAgICAgICAvLyBBbHRlcyB1bnNhbml0aWVydGVzIEhUTUw6IEFs
cyBLbGFydGV4dCBkYXJzdGVsbGVuCiAgICAgICAgICAgICAgICAgICAgdmFyIHRtcERpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgICAgIHRtcERpdi5p
bm5lckhUTUwgPSBzYWZlQ29tbWVudDsKICAgICAgICAgICAgICAgICAgICBzYWZlQ29tbWVudCA9
IERyaXZlUG9ydGFsLmVzY2FwZUhUTUwodG1wRGl2LnRleHRDb250ZW50KTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIHZhciB1aWQgPSAncmNfJyArIGlkeDsKICAgICAgICAgICAg
ICAgIGNvbW1lbnRIdG1sID0gJzxkaXYgc3R5bGU9ImZsZXgtYmFzaXM6MTAwJTttYXJnaW4tdG9w
OjRweDsiPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGlkPSInICsgdWlkICsgJyIgc3R5
bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6MCAxMHB4O2JvcmRlci1y
YWRpdXM6NHB4O2JvcmRlci1sZWZ0OjNweCBzb2xpZCAjZGMzNTQ1O2ZvbnQtc2l6ZToxMnB4O2Nv
bG9yOnZhcigtLXRleHQtcHJpbWFyeSk7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweDtvdmVy
ZmxvdzpoaWRkZW47Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpoZWlnaHQgMC4zczt3aGl0ZS1z
cGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpczsiIG9uY2xpY2s9InZhciBlbD1kb2N1
bWVudC5nZXRFbGVtZW50QnlJZChcJycgKyB1aWQgKyAnXCcpO2lmKGVsLnN0eWxlLmhlaWdodD09
PVwnYXV0b1wnKXtlbC5zdHlsZS5oZWlnaHQ9XCcyOHB4XCc7ZWwuc3R5bGUubGluZUhlaWdodD1c
JzI4cHhcJztlbC5zdHlsZS53aGl0ZVNwYWNlPVwnbm93cmFwXCc7ZWwuc3R5bGUucGFkZGluZz1c
JzAgMTBweFwnO31lbHNle2VsLnN0eWxlLmhlaWdodD1cJ2F1dG9cJztlbC5zdHlsZS5saW5lSGVp
Z2h0PVwnMS41XCc7ZWwuc3R5bGUud2hpdGVTcGFjZT1cJ25vcm1hbFwnO2VsLnN0eWxlLnBhZGRp
bmc9XCc4cHggMTBweFwnO30iIHRpdGxlPSJLbGlja2UgenVtIEF1Zi0vWnVrbGFwcGVuIj4nICsK
ICAgICAgICAgICAgICAgICAgICAgICAgc2FmZUNvbW1lbnQgKwogICAgICAgICAgICAgICAgICAg
ICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAg
ICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InJldmlldy1oaXN0b3J5LWl0ZW0iIHN0eWxlPSJm
bGV4LXdyYXA6d3JhcDsiPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJhY3Rpb24t
YmFkZ2UgJyArIGVudHJ5LmFjdGlvbiArICciPicgKyBhY3Rpb25MYWJlbCArICc8L3NwYW4+JyAr
CiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5
KTsiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGVudHJ5LmJ5IHx8ICctJykgKyAnPC9zcGFu
PicgKwogICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVk
KTsiPicgKyBkYXRlICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgIGNvbW1lbnRIdG1sICsK
ICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGh0bWwgKyAn
PC9kaXY+JzsKICAgIH0sCgogICAgX2RlbGV0ZURvY0lkOiBudWxsLAoKICAgIGFzeW5jIGRlbGV0
ZURvY3VtZW50KGRvY0lkKSB7CiAgICAgICAgaWYgKERyaXZlRlMucmVhZE9ubHkpIHsKICAgICAg
ICAgICAgdmFyIGdyYW50ZWQgPSBhd2FpdCBEcml2ZUZTLmVuc3VyZVdyaXRlQWNjZXNzKCk7CiAg
ICAgICAgICAgIGlmICghZ3JhbnRlZCkgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgZG9j
ID0gRHJpdmVGUy5kb2N1bWVudHMuZmluZChmdW5jdGlvbihkKXsgcmV0dXJuIGQuaWQgPT09IGRv
Y0lkOyB9KTsKICAgICAgICBpZiAoIWRvYykgcmV0dXJuOwogICAgICAgIHRoaXMuX2RlbGV0ZURv
Y0lkID0gZG9jSWQ7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlbGV0ZUNvbmZp
cm1UZXh0JykudGV4dENvbnRlbnQgPSAnRG9rdW1lbnQ6IOKAnicgKyBkb2MudGl0ZWwgKyAnIiAo
JyArIGRvYy5rYXRlZ29yaWUgKyAnKSc7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2RlbGV0ZUNvbmZpcm1JbnB1dCcpLnZhbHVlID0gJyc7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2RlbGV0ZUNvbmZpcm1CdG4nKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlbGV0ZUNvbmZpcm1Nb2RhbCcpLmNsYXNzTGlzdC5hZGQo
J2FjdGl2ZScpOwogICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
ZWxldGVDb25maXJtSW5wdXQnKTsKICAgICAgICBpbnB1dC5mb2N1cygpOwogICAgICAgIGlucHV0
Lm9uaW5wdXQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RlbGV0ZUNvbmZpcm1CdG4nKS5kaXNhYmxlZCA9ICFpbnB1dC52YWx1ZS50cmltKCk7CiAg
ICAgICAgfTsKICAgIH0sCgogICAgY2FuY2VsRGVsZXRlKCkgewogICAgICAgIHRoaXMuX2RlbGV0
ZURvY0lkID0gbnVsbDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVsZXRlQ29u
ZmlybU1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICB9LAoKICAgIGFzeW5j
IGNvbmZpcm1EZWxldGUoKSB7CiAgICAgICAgdmFyIGRvY0lkID0gdGhpcy5fZGVsZXRlRG9jSWQ7
CiAgICAgICAgaWYgKCFkb2NJZCkgcmV0dXJuOwogICAgICAgIHZhciBud0tlbm51bmcgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZGVsZXRlQ29uZmlybUlucHV0JykudmFsdWUudHJpbSgpOwog
ICAgICAgIGlmICghbndLZW5udW5nKSB7IHNob3dUb2FzdCgnQml0dGUgTlctS2VubnVuZyBlaW5n
ZWJlbicsICd3YXJuaW5nJyk7IHJldHVybjsgfQoKICAgICAgICB2YXIgZG9jID0gRHJpdmVGUy5k
b2N1bWVudHMuZmluZChmdW5jdGlvbihkKXsgcmV0dXJuIGQuaWQgPT09IGRvY0lkOyB9KTsKICAg
ICAgICBpZiAoIWRvYykgcmV0dXJuOwoKICAgICAgICAvLyBTb2Z0LURlbGV0ZTogSW4gUGFwaWVy
a29yYiB2ZXJzY2hpZWJlbiBzdGF0dCBwaHlzaXNjaCBsw7ZzY2hlbgogICAgICAgIHZhciB0cmFz
aEVudHJ5ID0gewogICAgICAgICAgICBkb2M6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZG9j
KSksCiAgICAgICAgICAgIGRlbGV0ZWRCeTogbndLZW5udW5nLAogICAgICAgICAgICBkZWxldGVk
QXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgICAgICAgICAgZXhwaXJlc0F0OiBuZXcg
RGF0ZShEYXRlLm5vdygpICsgMjggKiAyNCAqIDYwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygp
CiAgICAgICAgfTsKCiAgICAgICAgLy8gUGFwaWVya29yYiBsYWRlbi9lcnN0ZWxsZW4KICAgICAg
ICB2YXIgdHJhc2ggPSBhd2FpdCB0aGlzLl9sb2FkVHJhc2goKTsKICAgICAgICB0cmFzaC5wdXNo
KHRyYXNoRW50cnkpOwogICAgICAgIGF3YWl0IHRoaXMuX3NhdmVUcmFzaCh0cmFzaCk7CgogICAg
ICAgIC8vIEzDtnNjaC1Mb2cKICAgICAgICB2YXIgbG9nRW50cnkgPSB7IGFjdGlvbjogJ2RlbGV0
ZScsIGRvY0lkOiBkb2NJZCwgdGl0ZWw6IGRvYy50aXRlbCwga2F0ZWdvcmllOiBkb2Mua2F0ZWdv
cmllLCBkZWxldGVkQnk6IG53S2VubnVuZywgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3Ry
aW5nKCkgfTsKICAgICAgICBhd2FpdCB0aGlzLl9hcHBlbmREZWxldGVMb2cobG9nRW50cnkpOwoK
ICAgICAgICAvLyBEb2t1bWVudCBwaHlzaXNjaCBsw7ZzY2hlbgogICAgICAgIHZhciBzdWNjZXNz
ID0gYXdhaXQgRHJpdmVGUy5kZWxldGVEb2N1bWVudChkb2NJZCk7CiAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2RlbGV0ZUNvbmZpcm1Nb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ2Fj
dGl2ZScpOwogICAgICAgIHRoaXMuX2RlbGV0ZURvY0lkID0gbnVsbDsKCiAgICAgICAgaWYgKHN1
Y2Nlc3MpIHsKICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERvY0lkID0gbnVsbDsKICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvY3VtZW50RGV0YWlsJykuaW5uZXJIVE1MID0g
JzxkaXYgY2xhc3M9ImRldGFpbC1lbXB0eSI+PHA+RG9rdW1lbnQgZ2Vsw7ZzY2h0LiBXw6RobGUg
ZWluIGFuZGVyZXMgRG9rdW1lbnQuPC9wPjwvZGl2Pic7CiAgICAgICAgICAgIHRoaXMucmVuZGVy
KCk7CiAgICAgICAgICAgIHNob3dUb2FzdCgnRG9rdW1lbnQgZ2Vsw7ZzY2h0ICgyOCBUYWdlIHdp
ZWRlcmhlcnN0ZWxsYmFyKScsICdzdWNjZXNzJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgc2hvd1RvYXN0KCdGZWhsZXIgYmVpbSBMw7ZzY2hlbicsICdlcnJvcicpOwogICAgICAgIH0K
ICAgIH0sCgogICAgYXN5bmMgX2xvYWRUcmFzaCgpIHsKICAgICAgICB0cnkgewogICAgICAgICAg
ICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgdmFyIHJl
cyA9IGF3YWl0IGZldGNoKCcvZGF0YS8udHJhc2guanNvbicpOwogICAgICAgICAgICAgICAgaWYg
KHJlcy5vaykgcmV0dXJuIGF3YWl0IHJlcy5qc29uKCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAo
RHJpdmVGUy5tb2RlID09PSAnZmlsZXN5c3RlbScgJiYgRHJpdmVGUy5fZGF0YUhhbmRsZSkgewog
ICAgICAgICAgICAgICAgdmFyIGZoID0gYXdhaXQgRHJpdmVGUy5fZGF0YUhhbmRsZS5nZXRGaWxl
SGFuZGxlKCcudHJhc2guanNvbicpOwogICAgICAgICAgICAgICAgdmFyIGZpbGUgPSBhd2FpdCBm
aC5nZXRGaWxlKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCBmaWxl
LnRleHQoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGUpIHt9CiAgICAgICAgcmV0
dXJuIFtdOwogICAgfSwKCiAgICBhc3luYyBfc2F2ZVRyYXNoKHRyYXNoKSB7CiAgICAgICAgLy8g
QWJnZWxhdWZlbmUgZW50ZmVybmVuICg+MjggVGFnZSkKICAgICAgICB2YXIgbm93ID0gbmV3IERh
dGUoKS50b0lTT1N0cmluZygpOwogICAgICAgIHRyYXNoID0gdHJhc2guZmlsdGVyKGZ1bmN0aW9u
KHQpeyByZXR1cm4gdC5leHBpcmVzQXQgPiBub3c7IH0pOwogICAgICAgIGlmIChEcml2ZUZTLm1v
ZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIGF3YWl0IGZldGNoKCcvYXBpL3dyaXRlJywg
eyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogeydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9q
c29uOyBjaGFyc2V0PXV0Zi04J30sCiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lm
eSh7IHBhdGg6ICdkYXRhLy50cmFzaC5qc29uJywgZGF0YTogdHJhc2ggfSkgfSk7CiAgICAgICAg
fSBlbHNlIGlmIChEcml2ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAmJiBEcml2ZUZTLl9kYXRh
SGFuZGxlKSB7CiAgICAgICAgICAgIHZhciBmaCA9IGF3YWl0IERyaXZlRlMuX2RhdGFIYW5kbGUu
Z2V0RmlsZUhhbmRsZSgnLnRyYXNoLmpzb24nLCB7IGNyZWF0ZTogdHJ1ZSB9KTsKICAgICAgICAg
ICAgdmFyIHdyaXRhYmxlID0gYXdhaXQgZmguY3JlYXRlV3JpdGFibGUoKTsKICAgICAgICAgICAg
YXdhaXQgd3JpdGFibGUud3JpdGUoSlNPTi5zdHJpbmdpZnkodHJhc2gsIG51bGwsIDIpKTsKICAg
ICAgICAgICAgYXdhaXQgd3JpdGFibGUuY2xvc2UoKTsKICAgICAgICB9CiAgICB9LAoKICAgIGFz
eW5jIF9hcHBlbmREZWxldGVMb2coZW50cnkpIHsKICAgICAgICB2YXIgbG9nID0gW107CiAgICAg
ICAgdHJ5IHsKICAgICAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicpIHsKICAg
ICAgICAgICAgICAgIHZhciByZXMgPSBhd2FpdCBmZXRjaCgnL2RhdGEvLmRlbGV0ZS1sb2cuanNv
bicpOwogICAgICAgICAgICAgICAgaWYgKHJlcy5vaykgbG9nID0gYXdhaXQgcmVzLmpzb24oKTsK
ICAgICAgICAgICAgfSBlbHNlIGlmIChEcml2ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAmJiBE
cml2ZUZTLl9kYXRhSGFuZGxlKSB7CiAgICAgICAgICAgICAgICB2YXIgZmggPSBhd2FpdCBEcml2
ZUZTLl9kYXRhSGFuZGxlLmdldEZpbGVIYW5kbGUoJy5kZWxldGUtbG9nLmpzb24nKTsKICAgICAg
ICAgICAgICAgIHZhciBmaWxlID0gYXdhaXQgZmguZ2V0RmlsZSgpOwogICAgICAgICAgICAgICAg
bG9nID0gSlNPTi5wYXJzZShhd2FpdCBmaWxlLnRleHQoKSk7CiAgICAgICAgICAgIH0KICAgICAg
ICB9IGNhdGNoKGUpIHt9CiAgICAgICAgbG9nLnB1c2goZW50cnkpOwogICAgICAgIGlmIChEcml2
ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIGF3YWl0IGZldGNoKCcvYXBpL3dy
aXRlJywgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogeydDb250ZW50LVR5cGUnOidhcHBsaWNh
dGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04J30sCiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0
cmluZ2lmeSh7IHBhdGg6ICdkYXRhLy5kZWxldGUtbG9nLmpzb24nLCBkYXRhOiBsb2cgfSkgfSk7
CiAgICAgICAgfSBlbHNlIGlmIChEcml2ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAmJiBEcml2
ZUZTLl9kYXRhSGFuZGxlKSB7CiAgICAgICAgICAgIHZhciBmaDIgPSBhd2FpdCBEcml2ZUZTLl9k
YXRhSGFuZGxlLmdldEZpbGVIYW5kbGUoJy5kZWxldGUtbG9nLmpzb24nLCB7IGNyZWF0ZTogdHJ1
ZSB9KTsKICAgICAgICAgICAgdmFyIHdyaXRhYmxlID0gYXdhaXQgZmgyLmNyZWF0ZVdyaXRhYmxl
KCk7CiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLndyaXRlKEpTT04uc3RyaW5naWZ5KGxvZywg
bnVsbCwgMikpOwogICAgICAgICAgICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpOwogICAgICAgIH0K
ICAgIH0sCgogICAgYXN5bmMgc2hvd1RyYXNoKCkgewogICAgICAgIHZhciB0cmFzaCA9IGF3YWl0
IHRoaXMuX2xvYWRUcmFzaCgpOwogICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3Ry
aW5nKCk7CiAgICAgICAgdHJhc2ggPSB0cmFzaC5maWx0ZXIoZnVuY3Rpb24odCl7IHJldHVybiB0
LmV4cGlyZXNBdCA+IG5vdzsgfSk7CiAgICAgICAgdmFyIGh0bWwgPSAnJzsKICAgICAgICBpZiAo
dHJhc2gubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgIGh0bWwgPSAnPGRpdiBjbGFzcz0iZ292
LWVtcHR5Ij5QYXBpZXJrb3JiIGlzdCBsZWVyPC9kaXY+JzsKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICB0cmFzaC5mb3JFYWNoKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICAgICAgICAgIHZh
ciBkYXlzTGVmdCA9IE1hdGguY2VpbCgobmV3IERhdGUodC5leHBpcmVzQXQpIC0gbmV3IERhdGUo
KSkgLyAoMjQqNjAqNjAqMTAwMCkpOwogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFz
cz0idHJhc2gtaXRlbSI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InRyYXNo
LWl0ZW0tdGl0bGUiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHQuZG9jLnRpdGVsKSArICc8
L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0idHJhc2gtaXRlbS1tZXRh
Ij5HZWzDtnNjaHQgdm9uICcgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHQuZGVsZXRlZEJ5KSAr
ICcgYW0gJyArIGZvcm1hdERhdGVUaW1lKHQuZGVsZXRlZEF0KSArICcgfCBOb2NoICcgKyBkYXlz
TGVmdCArICcgVGFnZSB2ZXJmw7xnYmFyPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxk
aXYgY2xhc3M9InRyYXNoLWl0ZW0tYWN0aW9ucyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAg
ICc8YnV0dG9uIGNsYXNzPSJidG4tcmVzdG9yZSIgb25jbGljaz0iRHJpdmVQb3J0YWwucmVzdG9y
ZUZyb21UcmFzaCgnICsgaSArICcpIj5XaWVkZXJoZXJzdGVsbGVuPC9idXR0b24+JyArCiAgICAg
ICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAg
ICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9j
dW1lbnREZXRhaWwnKS5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBzdHlsZT0icGFkZGlu
ZzoyMHB4OyI+PGgyIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO21hcmdpbi1ib3R0
b206MTVweDsiPlBhcGllcmtvcmIgKCcgKyB0cmFzaC5sZW5ndGggKyAnKTwvaDI+JyArIGh0bWwg
KyAnPC9kaXY+JzsKICAgIH0sCgogICAgYXN5bmMgcmVzdG9yZUZyb21UcmFzaChpbmRleCkgewog
ICAgICAgIHZhciB0cmFzaCA9IGF3YWl0IHRoaXMuX2xvYWRUcmFzaCgpOwogICAgICAgIGlmICgh
dHJhc2hbaW5kZXhdKSByZXR1cm47CiAgICAgICAgdmFyIGVudHJ5ID0gdHJhc2hbaW5kZXhdOwog
ICAgICAgIHZhciBkb2MgPSBlbnRyeS5kb2M7CiAgICAgICAgdmFyIHNhdmVSZXN1bHQgPSBhd2Fp
dCBEcml2ZUZTLnNhdmVEb2N1bWVudChkb2MpOwogICAgICAgIGlmIChzYXZlUmVzdWx0ID09PSB0
cnVlKSB7CiAgICAgICAgICAgIHRyYXNoLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgICAgIGF3
YWl0IHRoaXMuX3NhdmVUcmFzaCh0cmFzaCk7CiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7CiAg
ICAgICAgICAgIHRoaXMuc2VsZWN0RG9jdW1lbnQoZG9jLmlkKTsKICAgICAgICAgICAgc2hvd1Rv
YXN0KCdEb2t1bWVudCDigJ4nICsgZG9jLnRpdGVsICsgJyIgd2llZGVyaGVyZ2VzdGVsbHQnLCAn
c3VjY2VzcycpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnRmVobGVy
IGJlaW0gV2llZGVyaGVyc3RlbGxlbicsICdlcnJvcicpOwogICAgICAgIH0KICAgIH0sCgogICAg
Ly8gWFNTLVNjaHV0ejogQmVyZWluaWd0IFplaWNoZW5rZXR0ZW4gYmV2b3Igc2llIGFscyBIVE1M
IGRhcmdlc3RlbGx0IHdlcmRlbi4KICAgICAgICAvLyBlc2NhcGVIVE1MKCkgLSBmdWVyIEVsZW1l
bnQtSW5oYWx0ZSAodGV4dENvbnRlbnQtYmFzaWVydCwgYnJvd3NlcnNpY2hlcikKICAgICAgICAv
LyBlc2NhcGVBdHRyKCkgLSBmdWVyIEhUTUwtQXR0cmlidXR3ZXJ0ZSAobWFudWVsbGVzIEVzY2Fw
aW5nIGFsbGVyIHJlbGV2YW50ZW4gWmVpY2hlbikKICAgICAgICAvLyBCZWlkZSBGdW5rdGlvbmVu
IHdlcmRlbiBpbiBEcml2ZVBvcnRhbCBiZWkgamVkZXIgRGFyc3RlbGx1bmcgdm9uIEJlbnV0emVy
ZGF0ZW4gYXVmZ2VydWZlbi4KICAgIGVzY2FwZUhUTUwoc3RyKSB7CiAgICAgICAgaWYgKCFzdHIp
IHJldHVybiAnJzsKICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKICAgICAgICBkaXYudGV4dENvbnRlbnQgPSBzdHI7CiAgICAgICAgcmV0dXJuIGRpdi5p
bm5lckhUTUw7CiAgICB9LAoKICAgIGVzY2FwZUF0dHIoc3RyKSB7CiAgICAgICAgaWYgKCFzdHIp
IHJldHVybiAnJzsKICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVw
bGFjZSgvIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCAnJiMzOTsnKS5yZXBsYWNlKC88L2cs
ICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpLnJlcGxhY2UoL2AvZywgJyYjOTY7Jyk7CiAg
ICB9LAoKICAgIC8vIFNhbml0aXplLUZ1bmt0aW9uIGZ1ZXIgUmljaC1UZXh0LUluaGFsdGUgKGRv
Yy5pbmhhbHQpLgogICAgLy8gRW50ZmVybnQgZ2VmYWVocmxpY2hlIEVsZW1lbnRlIChzY3JpcHQs
IGlmcmFtZSwgb2JqZWN0LCBlbWJlZCwgZm9ybSwgZXRjLikKICAgIC8vIHVuZCBhbGxlIEV2ZW50
LUhhbmRsZXIgKG9uY2xpY2ssIG9uZXJyb3IsIG9ubG9hZCwgLi4uKSBzb3dpZSBqYXZhc2NyaXB0
Oi1VUkxzLAogICAgLy8gYmVoYWVsdCBhYmVyIGFsbGUgRm9ybWF0aWVydW5nZW4gKGIsIGksIHUs
IGgxLWg2LCBwLCB1bCwgb2wsIHRhYmxlLCBpbWcsIGEsIGV0Yy4pCiAgICBzYW5pdGl6ZUhUTUwo
aHRtbCkgewogICAgICAgIGlmICghaHRtbCkgcmV0dXJuICcnOwogICAgICAgIHZhciBkb2MgPSBu
ZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGh0bWwsICd0ZXh0L2h0bWwnKTsKICAgICAg
ICAvLyBHZWZhZWhybGljaGUgVGFncyBrb21wbGV0dCBlbnRmZXJuZW4KICAgICAgICAvLyBpZnJh
bWVzIHdlcmRlbiBudXIgZW50ZmVybnQgd2VubiBzaWUgTklDSFQgaW4gZWluZW0gRFJJVkUtZWln
ZW5lbiBQREYtQ29udGFpbmVyIHN0ZWNrZW4KICAgICAgICAvLyAoZHJpdmUtbWVkaWEtcGRmLWlm
cmFtZSkgdW5kIGtlaW5lIGxva2FsZSBzcmMgaGFiZW4KICAgICAgICB2YXIgZGFuZ2Vyb3VzVGFn
cyA9IFsnc2NyaXB0Jywnb2JqZWN0JywnZW1iZWQnLCdmb3JtJywnbWF0aCcsJ2Jhc2UnLCdsaW5r
JywnbWV0YScsJ25vc2NyaXB0Jywnc3R5bGUnXTsKICAgICAgICBkYW5nZXJvdXNUYWdzLmZvckVh
Y2goZnVuY3Rpb24odGFnKSB7CiAgICAgICAgICAgIGRvYy5xdWVyeVNlbGVjdG9yQWxsKHRhZyku
Zm9yRWFjaChmdW5jdGlvbihlbCkgeyBlbC5yZW1vdmUoKTsgfSk7CiAgICAgICAgfSk7CiAgICAg
ICAgLy8gaWZyYW1lcyBzZXBhcmF0OiBudXIgZnJlbWRlL2dlZmFlaHJsaWNoZSBlbnRmZXJuZW4s
IGxva2FsZSBQREYtRWluYmV0dHVuZ2VuIGJlaWJlaGFsdGVuCiAgICAgICAgZG9jLnF1ZXJ5U2Vs
ZWN0b3JBbGwoJ2lmcmFtZScpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAgICAgICAgICAgdmFy
IHNyYyA9IChlbC5nZXRBdHRyaWJ1dGUoJ3NyYycpIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2Uo
KTsKICAgICAgICAgICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudEVsZW1lbnQ7CiAgICAgICAgICAg
IHZhciBpc0RyaXZlUGRmID0gcGFyZW50ICYmIHBhcmVudC5jbGFzc0xpc3QgJiYgcGFyZW50LmNs
YXNzTGlzdC5jb250YWlucygnZHJpdmUtbWVkaWEtcGRmLWlmcmFtZScpOwogICAgICAgICAgICB2
YXIgaXNMb2NhbFNyYyA9IHNyYy5zdGFydHNXaXRoKCdtZWRpYS8nKSB8fCBzcmMuc3RhcnRzV2l0
aCgnL21lZGlhLycpIHx8IHNyYy5zdGFydHNXaXRoKCcuL21lZGlhLycpOwogICAgICAgICAgICBp
ZiAoIWlzRHJpdmVQZGYgJiYgIWlzTG9jYWxTcmMpIGVsLnJlbW92ZSgpOwogICAgICAgIH0pOwog
ICAgICAgIC8vIEFsbGUgRXZlbnQtSGFuZGxlciB1bmQgamF2YXNjcmlwdDotVVJMcyBlbnRmZXJu
ZW4KICAgICAgICBkb2MucXVlcnlTZWxlY3RvckFsbCgnKicpLmZvckVhY2goZnVuY3Rpb24oZWwp
IHsKICAgICAgICAgICAgdmFyIGF0dHJzID0gQXJyYXkuZnJvbShlbC5hdHRyaWJ1dGVzKTsKICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykgewogICAgICAg
ICAgICAgICAgdmFyIG5hbWUgPSBhdHRyc1tpXS5uYW1lLnRvTG93ZXJDYXNlKCk7CiAgICAgICAg
ICAgICAgICAvLyBvbiotRXZlbnQtSGFuZGxlciBlbnRmZXJuZW4KICAgICAgICAgICAgICAgIGlm
IChuYW1lLnN0YXJ0c1dpdGgoJ29uJykpIHsKICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVB
dHRyaWJ1dGUoYXR0cnNbaV0ubmFtZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAvLyBqYXZhc2NyaXB0Oi9kYXRhOiBVUkxzIGluIGhyZWYvc3JjL2FjdGlvbiBlbnRmZXJuZW4K
ICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSAnaHJlZicgfHwgbmFtZSA9PT0gJ3NyYycgfHwg
bmFtZSA9PT0gJ2FjdGlvbicpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gKGF0dHJz
W2ldLnZhbHVlIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAg
ICBpZiAodmFsLnN0YXJ0c1dpdGgoJ2phdmFzY3JpcHQ6JykgfHwgdmFsLnN0YXJ0c1dpdGgoJ2Rh
dGE6dGV4dC9odG1sJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmli
dXRlKGF0dHJzW2ldLm5hbWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIC8vIEFsbGUgTGlua3MgbXVlc3Nl
biBpbiBuZXVlbSBUYWIgb2VmZm5lbiAoUG9ydGFsIGRhcmYgbmljaHQgdmVybGFzc2VuIHdlcmRl
bikKICAgICAgICBkb2MucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmXScpLmZvckVhY2goZnVuY3Rp
b24oYSkgewogICAgICAgICAgICB2YXIgaHJlZiA9IChhLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8
ICcnKS50cmltKCk7CiAgICAgICAgICAgIC8vIEludGVybmUgQW5rZXIgKCMuLi4pIHVuZCBEUklW
RS1Dcm9zc2xpbmtzICguZHJpdmUteHJlZikgYXVzbmVobWVuCiAgICAgICAgICAgIGlmIChocmVm
LnN0YXJ0c1dpdGgoJyMnKSB8fCBhLmNsYXNzTGlzdC5jb250YWlucygnZHJpdmUteHJlZicpKSBy
ZXR1cm47CiAgICAgICAgICAgIGEuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7CiAg
ICAgICAgICAgIGEuc2V0QXR0cmlidXRlKCdyZWwnLCAnbm9vcGVuZXIgbm9yZWZlcnJlcicpOwog
ICAgICAgIH0pOwogICAgICAgIHJldHVybiBkb2MuYm9keS5pbm5lckhUTUw7CiAgICB9LAoKICAg
IGhpZ2hsaWdodEl0ZW0oZG9jSWQpIHsKICAgICAgICBjb25zdCBpdGVtcyA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJyNkb2N1bWVudExpc3QgLmRvY3VtZW50LWl0ZW0nKTsKICAgICAgICBp
dGVtcy5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgICAgICBpZiAoaXRlbS5nZXRBdHRyaWJ1dGUo
J29uY2xpY2snKSAmJiBpdGVtLmdldEF0dHJpYnV0ZSgnb25jbGljaycpLmluY2x1ZGVzKGRvY0lk
KSkgewogICAgICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHQtc2F2ZWQn
KTsKICAgICAgICAgICAgICAgIGl0ZW0uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290
aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7CiAgICAgICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlz
dGVuZXIoJ2FuaW1hdGlvbmVuZCcsICgpID0+IGl0ZW0uY2xhc3NMaXN0LnJlbW92ZSgnaGlnaGxp
Z2h0LXNhdmVkJyksIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwog
ICAgfQp9OwoKLy8gPT09PT09PT09PT09PT09PT09PT09IEVESVRPUiA9PT09PT09PT09PT09PT09
PT09PT0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIE1vZHVsOiBEcml2ZUVkaXRvciAtIFdZ
U0lXWUctRWRpdG9yLCBNZWRpZW4tVXBsb2FkLCBEb2t1bWVudGVuYmVhcmJlaXR1bmcKLy8gWnVz
dGFlbmRpZyBmdWVyOiBFZGl0b3ItTW9kYWwsIEZvcm1hdGllcnVuZywgTWVkaWVuLVVwbG9hZC1E
aWFsb2csIFNwZWljaGVybgovLyBTaWNoZXJoZWl0OiBFaW5nZWZ1ZWd0ZSBIVE1MLUluaGFsdGUg
KFBhc3RlKSB3ZXJkZW4gdmlhIERPTVBhcnNlciBub3JtYWxpc2llcnQuCi8vICAgICAgICAgICAg
IERhdGVpbmFtZW4gd2VyZGVuIHVlYmVyIHNhbml0aXplRmlsZW5hbWUoKSBiZXJlaW5pZ3QgKGtl
aW5lIFNvbmRlcnplaWNoZW4vUGZhZHRyZW5uZXIpLgovLyAgICAgICAgICAgICBTcGVpY2hlcm4g
c2VuZGV0IERhdGVuIGFuIC9hcGkvd3JpdGUsIHdvIHNlcnZlcnNlaXRpZ2UgQXV0b3Jpc2llcnVu
ZyBncmVpZnQuCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmNvbnN0IERyaXZlRWRpdG9yID0gewog
ICAgY3VycmVudERvYzogbnVsbCwKICAgIGlzTmV3OiBmYWxzZSwKICAgIGhpc3Rvcnk6IFtdLAog
ICAgaGlzdG9yeUluZGV4OiAtMSwKICAgIGlzUmVzdG9yaW5nOiBmYWxzZSwKCiAgICBhc3luYyBj
cmVhdGVOZXcoKSB7CiAgICAgICAgaWYgKCFEcml2ZUZTLmNvbm5lY3RlZCkgewogICAgICAgICAg
ICBzaG93VG9hc3QoJ1p1bSBCZWFyYmVpdGVuIGJpdHRlIERSSVZFX1N0YXJ0LmJhdCBzdGFydGVu
JywgJ3dhcm5pbmcnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAo
RHJpdmVGUy5yZWFkT25seSkgewogICAgICAgICAgICBjb25zdCBncmFudGVkID0gYXdhaXQgRHJp
dmVGUy5lbnN1cmVXcml0ZUFjY2VzcygpOwogICAgICAgICAgICBpZiAoIWdyYW50ZWQpIHJldHVy
bjsKICAgICAgICB9CgogICAgICAgIHRoaXMuaXNOZXcgPSB0cnVlOwogICAgICAgIGNvbnN0IHVz
ZXJuYW1lID0gKERyaXZlRlMuZW52aXJvbiAmJiBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUpID8g
RHJpdmVGUy5lbnZpcm9uLnVzZXJuYW1lIDogbnVsbDsKICAgICAgICB0aGlzLmN1cnJlbnREb2Mg
PSB7CiAgICAgICAgICAgIGlkOiBEcml2ZUZTLmdlbmVyYXRlSWQoKSwKICAgICAgICAgICAgdGl0
ZWw6ICcnLAogICAgICAgICAgICBrYXRlZ29yaWU6IChEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVu
IHx8IFsnVmVya2VociddKVswXSwKICAgICAgICAgICAgaW5oYWx0OiAnJywKICAgICAgICAgICAg
c3RhdHVzOiAnRW50d3VyZicsCiAgICAgICAgICAgIGVyc3RlbGx0OiBuZXcgRGF0ZSgpLnRvSVNP
U3RyaW5nKCkuc3BsaXQoJ1QnKVswXSwKICAgICAgICAgICAgZ2VhZW5kZXJ0OiBuZXcgRGF0ZSgp
LnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSwKICAgICAgICAgICAgZXJzdGVsbHRWb246IHVz
ZXJuYW1lLAogICAgICAgICAgICBiZWFyYmVpdGV0Vm9uOiB1c2VybmFtZSwKICAgICAgICAgICAg
dmVyc2lvbjogJ3YwLjEnLAogICAgICAgICAgICBtZWRpYXM6IFtdLAogICAgICAgICAgICBzY2hs
YWd3b2VydGVyOiBbXSwKICAgICAgICAgICAgcGFyZW50SWQ6IG51bGwKICAgICAgICB9OwoKICAg
ICAgICB0aGlzLm9wZW5Nb2RhbCgnTmV1ZXMgRG9rdW1lbnQgZXJzdGVsbGVuJyk7CiAgICB9LAoK
ICAgIF9sb2NrZWREb2NJZDogbnVsbCwKCiAgICBhc3luYyBlZGl0KGRvY0lkKSB7CiAgICAgICAg
aWYgKERyaXZlRlMucmVhZE9ubHkpIHsKICAgICAgICAgICAgY29uc3QgZ3JhbnRlZCA9IGF3YWl0
IERyaXZlRlMuZW5zdXJlV3JpdGVBY2Nlc3MoKTsKICAgICAgICAgICAgaWYgKCFncmFudGVkKSBy
ZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBQZXNzaW1pc3RpYyBMb2NraW5nOiBMb2NrIGFu
Zm9yZGVybiBiZXZvciBFZGl0b3Igb2VmZm5ldAogICAgICAgIGNvbnN0IGxvY2tSZXN1bHQgPSBh
d2FpdCB0aGlzLmFjcXVpcmVMb2NrKGRvY0lkKTsKICAgICAgICBpZiAoIWxvY2tSZXN1bHQub2sp
IHsKICAgICAgICAgICAgc2hvd1RvYXN0KCdEb2t1bWVudCB3aXJkIHZvbiAnICsgbG9ja1Jlc3Vs
dC5ieSArICcgYmVhcmJlaXRldCAoc2VpdCAnICsgbG9ja1Jlc3VsdC5taW51dGVzICsgJyBNaW4u
KScsICd3YXJuaW5nJywgNTAwMCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAg
ICAgIGNvbnN0IGRvYyA9IGF3YWl0IERyaXZlRlMubG9hZERvY3VtZW50KGRvY0lkKTsKICAgICAg
ICBpZiAoIWRvYykgewogICAgICAgICAgICBhd2FpdCB0aGlzLnJlbGVhc2VMb2NrKGRvY0lkKTsK
ICAgICAgICAgICAgc2hvd1RvYXN0KCdEb2t1bWVudCBrb25udGUgbmljaHQgZ2VsYWRlbiB3ZXJk
ZW4nLCAnZXJyb3InKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdGhp
cy5pc05ldyA9IGZhbHNlOwogICAgICAgIHRoaXMuX2xvY2tlZERvY0lkID0gZG9jSWQ7CiAgICAg
ICAgdGhpcy5jdXJyZW50RG9jID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkb2MpKTsgLy8g
RGVlcCBjb3B5CiAgICAgICAgdGhpcy5vcGVuTW9kYWwoJ0Rva3VtZW50IGJlYXJiZWl0ZW46ICcg
KyBkb2MudGl0ZWwpOwogICAgfSwKCiAgICBvcGVuTW9kYWwodGl0bGUpIHsKICAgICAgICBjb25z
dCBkb2MgPSB0aGlzLmN1cnJlbnREb2M7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2VkaXRvck1vZGFsVGl0bGUnKS50ZXh0Q29udGVudCA9IHRpdGxlOwogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JUaXRlbCcpLnZhbHVlID0gZG9jLnRpdGVsIHx8ICcnOwoK
ICAgICAgICAvLyBLYXRlZ29yaWUtU2VsZWN0IGZ1ZWxsZW4gKGF1c2dlYmxlbmRldGUgS2F0ZWdv
cmllbiB1ZWJlcnNwcmluZ2VuLCBlcyBzZWkgZGVubiBkYXMgRG9rdW1lbnQgaGF0IGRpZXNlIEth
dGVnb3JpZSkKICAgICAgICBjb25zdCBrYXRTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZWRpdG9yS2F0ZWdvcmllJyk7CiAgICAgICAga2F0U2VsZWN0LmlubmVySFRNTCA9ICcnOwog
ICAgICAgIHZhciBlZGl0b3JIaWRkZW5LYXRzID0gRHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdv
cmllbiB8fCBbXTsKICAgICAgICAoRHJpdmVGUy5jb25maWcua2F0ZWdvcmllbiB8fCBbXSkuZm9y
RWFjaChrYXQgPT4gewogICAgICAgICAgICBpZiAoZWRpdG9ySGlkZGVuS2F0cy5pbmNsdWRlcyhr
YXQpICYmIGthdCAhPT0gZG9jLmthdGVnb3JpZSkgcmV0dXJuOwogICAgICAgICAgICBjb25zdCBv
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsKICAgICAgICAgICAgb3B0LnZh
bHVlID0ga2F0OwogICAgICAgICAgICBvcHQudGV4dENvbnRlbnQgPSBrYXQ7CiAgICAgICAgICAg
IGlmIChrYXQgPT09IGRvYy5rYXRlZ29yaWUpIG9wdC5zZWxlY3RlZCA9IHRydWU7CiAgICAgICAg
ICAgIGthdFNlbGVjdC5hcHBlbmRDaGlsZChvcHQpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBV
bnRlcmthdGVnb3JpZW4tSGlud2VpcyBiZWkgS2F0ZWdvcmllLVdlY2hzZWwKICAgICAgICBjb25z
dCB0aXRlbElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclRpdGVsJyk7CiAg
ICAgICAgY29uc3QgdXBkYXRlU3VidGFnSGludCA9ICgpID0+IHsKICAgICAgICAgICAgY29uc3Qg
c3VicyA9IERyaXZlRWRpdG9yLkNBVEVHT1JZX1NVQlRBR1Nba2F0U2VsZWN0LnZhbHVlXTsKICAg
ICAgICAgICAgaWYgKHN1YnMpIHsKICAgICAgICAgICAgICAgIHRpdGVsSW5wdXQucGxhY2Vob2xk
ZXIgPSAnVGl0ZWwgei5CLiAnICsga2F0U2VsZWN0LnZhbHVlICsgJyAoJyArIHN1YnMuam9pbign
IC8gJykgKyAnKSc7CiAgICAgICAgICAgICAgICAvLyBTdWItVGFncyBhdXRvbWF0aXNjaCBhbHMg
S2V5d29yZC1Wb3JzY2hsYWVnZSBwcmlvcmlzaWVyZW4KICAgICAgICAgICAgICAgIHN1YnMuZm9y
RWFjaChzID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIURyaXZlRWRpdG9yLl9jdXJyZW50
S2V5d29yZHMuaW5jbHVkZXMocykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgRHJpdmVFZGl0
b3IuX3JlbmRlclN1Z2dlc3Rpb25zKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aXRlbElucHV0
LnBsYWNlaG9sZGVyID0gJ1RpdGVsIGRlcyBEb2t1bWVudHMnOwogICAgICAgICAgICB9CiAgICAg
ICAgfTsKICAgICAgICBrYXRTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdXBkYXRl
U3VidGFnSGludCk7CiAgICAgICAgdXBkYXRlU3VidGFnSGludCgpOwoKICAgICAgICAvLyBTdGF0
dXMtU2VsZWN0IGZ1ZWxsZW4gKGdlZmlsdGVydCBuYWNoIEdvdmVybmFuY2UtUm9sbGUpCiAgICAg
ICAgY29uc3Qgc3RhdHVzU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclN0
YXR1cycpOwogICAgICAgIHN0YXR1c1NlbGVjdC5pbm5lckhUTUwgPSAnJzsKICAgICAgICBjb25z
dCBpc1NVID0gRHJpdmVHb3Zlcm5hbmNlLmlzU3VwZXJVc2VyKCk7CiAgICAgICAgY29uc3QgaXNG
QSA9IERyaXZlR292ZXJuYW5jZS5pc0ZhY2hhdWZzaWNodCgpOwogICAgICAgIGNvbnN0IGlzUmV2
ID0gRHJpdmVHb3Zlcm5hbmNlLmlzUmV2aWV3ZXIoZG9jLmthdGVnb3JpZSk7CiAgICAgICAgT2Jq
ZWN0LmtleXMoRHJpdmVGUy5jb25maWcuc3RhdHVzIHx8IHt9KS5mb3JFYWNoKHN0YXR1cyA9PiB7
CiAgICAgICAgICAgIC8vIE5vcm1hbGUgVXNlcjogbnVyIEVudHd1cmYgKyBQcnVlZnVuZwogICAg
ICAgICAgICBpZiAoIWlzU1UgJiYgIWlzRkEgJiYgIWlzUmV2ICYmIChzdGF0dXMgPT09ICdGcmVp
Z2VnZWJlbicgfHwgc3RhdHVzID09PSAnQWJnZWxlaG50JykpIHJldHVybjsKICAgICAgICAgICAg
Y29uc3QgY2ZnID0gRHJpdmVGUy5jb25maWcuc3RhdHVzW3N0YXR1c107CiAgICAgICAgICAgIGNv
bnN0IG9wdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgICAgICAgICBv
cHQudmFsdWUgPSBzdGF0dXM7CiAgICAgICAgICAgIG9wdC50ZXh0Q29udGVudCA9IGNmZy5sYWJl
bDsKICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gZG9jLnN0YXR1cykgb3B0LnNlbGVjdGVkID0g
dHJ1ZTsKICAgICAgICAgICAgc3RhdHVzU2VsZWN0LmFwcGVuZENoaWxkKG9wdCk7CiAgICAgICAg
fSk7CgogICAgICAgIC8vIMOcYmVyYXJ0aWtlbC1TZWxlY3QgZsO8bGxlbgogICAgICAgIGNvbnN0
IHBhcmVudFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JQYXJlbnQnKTsK
ICAgICAgICBwYXJlbnRTZWxlY3QuaW5uZXJIVE1MID0gJzxvcHRpb24gdmFsdWU9IiI+LS0gS2Vp
biDDnGJlcmFydGlrZWwgLS08L29wdGlvbj4nOwogICAgICAgIERyaXZlRlMuZG9jdW1lbnRzLmZv
ckVhY2goZCA9PiB7CiAgICAgICAgICAgIGlmIChkLmlkID09PSBkb2MuaWQpIHJldHVybjsgLy8g
c2ljaCBzZWxic3QgYXVzc2NobGllw59lbgogICAgICAgICAgICBpZiAoZC5wYXJlbnRJZCA9PT0g
ZG9jLmlkKSByZXR1cm47IC8vIEtpbmRlciBhdXNzY2hsaWXDn2VuIChaaXJrZWx2ZXJtZWlkdW5n
KQogICAgICAgICAgICBjb25zdCBvcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24n
KTsKICAgICAgICAgICAgb3B0LnZhbHVlID0gZC5pZDsKICAgICAgICAgICAgb3B0LnRleHRDb250
ZW50ID0gZC50aXRlbDsKICAgICAgICAgICAgaWYgKGQuaWQgPT09IGRvYy5wYXJlbnRJZCkgb3B0
LnNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgcGFyZW50U2VsZWN0LmFwcGVuZENoaWxkKG9w
dCk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIFNjaGxhZ3fDtnJ0ZXIgaW5pdGlhbGlzaWVyZW4g
KGFiaGFlbmdpZyB2b24gR292ZXJuYW5jZS1Nb2R1cykKICAgICAgICBjb25zdCBrd01vZGUgPSAo
RHJpdmVHb3Zlcm5hbmNlLmRhdGEgJiYgRHJpdmVHb3Zlcm5hbmNlLmRhdGEuc2V0dGluZ3MpID8g
KERyaXZlR292ZXJuYW5jZS5kYXRhLnNldHRpbmdzLmtleXdvcmRNb2RlIHx8ICdyZXF1aXJlZCcp
IDogJ3JlcXVpcmVkJzsKICAgICAgICBjb25zdCBrd1JvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdlZGl0b3JLZXl3b3JkUm93Jyk7CiAgICAgICAgaWYgKGt3Um93KSBrd1Jvdy5zdHlsZS5k
aXNwbGF5ID0gKGt3TW9kZSA9PT0gJ2Rpc2FibGVkJykgPyAnbm9uZScgOiAnJzsKICAgICAgICB0
aGlzLl9jdXJyZW50S2V5d29yZHMgPSBbLi4uKGRvYy5zY2hsYWd3b2VydGVyIHx8IFtdKV07CiAg
ICAgICAgdGhpcy5fcmVuZGVyS2V5d29yZHMoKTsKICAgICAgICB0aGlzLl9zZXR1cEtleXdvcmRJ
bnB1dCgpOwoKICAgICAgICAvLyBJbmhhbHQgbGFkZW4KICAgICAgICBjb25zdCBlZGl0b3JJbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1dCcpOwogICAgICAgIGVkaXRv
cklucHV0LmlubmVySFRNTCA9IERyaXZlUG9ydGFsLnNhbml0aXplSFRNTChkb2MuaW5oYWx0KTsK
CiAgICAgICAgLy8gTW9kYWwgemVpZ2VuCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2VkaXRvck1vZGFsJykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgICAgZWRpdG9ySW5w
dXQuZm9jdXMoKTsKCiAgICAgICAgLy8gSGlzdG9yeSBpbml0aWFsaXNpZXJlbgogICAgICAgIHRo
aXMuaW5pdEhpc3RvcnkoKTsKCiAgICAgICAgLy8gTWVkaWEgY29udGV4dCBtZW51IGV2ZW50cwog
ICAgICAgIHRoaXMuc2V0dXBFZGl0b3JNZWRpYUV2ZW50cygpOwogICAgfSwKCiAgICBhc3luYyBj
YW5jZWxXaXRoUHJvbXB0KCkgewogICAgICAgIC8vIFBydWVmZW4gb2IgSW5oYWx0IHZvcmhhbmRl
bgogICAgICAgIHZhciBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5w
dXQnKTsKICAgICAgICB2YXIgdGl0ZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9y
VGl0ZWwnKTsKICAgICAgICB2YXIgaGFzQ29udGVudCA9IChlZGl0b3IgJiYgZWRpdG9yLnRleHRD
b250ZW50LnRyaW0oKS5sZW5ndGggPiAwKSB8fCAodGl0ZWwgJiYgdGl0ZWwudmFsdWUudHJpbSgp
Lmxlbmd0aCA+IDApOwoKICAgICAgICBpZiAoaGFzQ29udGVudCkgewogICAgICAgICAgICB2YXIg
bW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgbW9kYWwu
c3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTto
ZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjEwNjAwO2Rpc3Bs
YXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjsnOwogICAg
ICAgICAgICBtb2RhbC5pbm5lckhUTUwgPQogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJh
Y2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjRweCAy
OHB4O21heC13aWR0aDo0MjBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCAzMnB4IHJnYmEo
MCwwLDAsMC4zKTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOnZh
cigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbToxMnB4OyI+QXJ0aWtlbCBzY2hsaWXDn2Vu
PzwvaDM+JyArCiAgICAgICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2
cHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJ03DtmNodGVzdCBkdSBkZW4gYWt0dWVs
bGVuIFN0YW5kIGFscyBFbnR3dXJmIHNwZWljaGVybiwgZGFtaXQgZHUgc3DDpHRlciBkYXJhbiB3
ZWl0ZXJhcmJlaXRlbiBrYW5uc3Q/JyArCiAgICAgICAgICAgICAgICAgICAgJzwvcD4nICsKICAg
ICAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7anVzdGlm
eS1jb250ZW50OmZsZXgtZW5kOyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9u
IGlkPSJjYW5jZWxEaXNjYXJkIiBzdHlsZT0icGFkZGluZzo4cHggMTZweDtib3JkZXItcmFkaXVz
OjRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIo
LS1iZy1jYXJkKTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2N1cnNvcjpwb2ludGVyOyI+VmVy
d2VyZmVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGlkPSJj
YW5jZWxTYXZlRHJhZnQiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4
O2JvcmRlcjpub25lO2JhY2tncm91bmQ6dmFyKC0tdGV4dC1oZWFkaW5nKTtjb2xvcjp3aGl0ZTtj
dXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDA7Ij5BbHMgRW50d3VyZiBzcGVpY2hlcm48L2J1
dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAn
PC9kaXY+JzsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7Cgog
ICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjYW5jZWxEaXNjYXJkJykub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgbW9kYWwucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7CiAgICAg
ICAgICAgIH07CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW5jZWxTYXZl
RHJhZnQnKS5vbmNsaWNrID0gYXN5bmMgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBtb2Rh
bC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIC8vIFN0YXR1cyBhdWYgRW50d3VyZiBzZXR6ZW4g
dW5kIHNwZWljaGVybgogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vk
aXRvclN0YXR1cycpLnZhbHVlID0gJ0VudHd1cmYnOwogICAgICAgICAgICAgICAgYXdhaXQgc2Vs
Zi5zYXZlKHRydWUpOwogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IHRoaXMuY2xvc2UoKTsKICAgICAgICB9CiAgICB9LAoKICAgIGNsb3NlKCkgewogICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JNb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ2Fj
dGl2ZScpOwogICAgICAgIHRoaXMuaGlkZUNvbnRleHRNZW51KCk7CiAgICAgICAgdGhpcy5jbG9z
ZVVwbG9hZERpYWxvZygpOwogICAgICAgIHRoaXMuY2xvc2VDb250cmliRGlhbG9nKCk7CiAgICAg
ICAgLy8gTWV0YS1aZWlsZW4gd2llZGVyIGVpbmJsZW5kZW4gKGtvZW5uZW4gYmVpIFN0YXJ0c2Vp
dGVuLUJlYXJiZWl0dW5nIGF1c2dlYmxlbmRldCBzZWluKQogICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJy5lZGl0b3ItbWV0YS1yb3cnKS5mb3JFYWNoKGZ1bmN0aW9uKHJvdykgeyBy
b3cuc3R5bGUuZGlzcGxheSA9ICcnOyB9KTsKICAgICAgICB0aGlzLl9pc1N0YXJ0c2VpdGUgPSBm
YWxzZTsKICAgICAgICAvLyBMb2NrIGZyZWlnZWJlbgogICAgICAgIGlmICh0aGlzLl9sb2NrZWRE
b2NJZCkgewogICAgICAgICAgICB0aGlzLnJlbGVhc2VMb2NrKHRoaXMuX2xvY2tlZERvY0lkKTsK
ICAgICAgICAgICAgdGhpcy5fbG9ja2VkRG9jSWQgPSBudWxsOwogICAgICAgIH0KICAgICAgICB0
aGlzLmN1cnJlbnREb2MgPSBudWxsOwogICAgICAgIHRoaXMuaXNOZXcgPSBmYWxzZTsKICAgICAg
ICB0aGlzLl9wZW5kaW5nQ29udHJpYlR5cGUgPSBudWxsOwogICAgfSwKCiAgICBfcGVuZGluZ0Nv
bnRyaWJUeXBlOiBudWxsLAoKICAgIF9pc1N0YXJ0c2VpdGU6IGZhbHNlLAoKICAgIGFzeW5jIHNh
dmVBbmRDbG9zZSgpIHsKICAgICAgICBhd2FpdCB0aGlzLnNhdmUodHJ1ZSk7CiAgICB9LAoKICAg
IGFzeW5jIHNhdmUoY2xvc2VBZnRlcikgewogICAgICAgIGlmICghdGhpcy5jdXJyZW50RG9jKSBy
ZXR1cm47CgogICAgICAgIC8vIFNvbmRlcmZhbGw6IFN0YXJ0c2VpdGVuLUJlYXJiZWl0dW5nCiAg
ICAgICAgaWYgKHRoaXMuX2lzU3RhcnRzZWl0ZSkgewogICAgICAgICAgICB2YXIgY29udGVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1dCcpLmlubmVySFRNTDsKICAgICAg
ICAgICAgYXdhaXQgRHJpdmVHb3Zlcm5hbmNlLnNhdmVTdGFydHNlaXRlKGNvbnRlbnQpOwogICAg
ICAgICAgICBpZiAoY2xvc2VBZnRlcikgewogICAgICAgICAgICAgICAgdGhpcy5faXNTdGFydHNl
aXRlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CiAgICAgICAgICAgICAg
ICAvLyBadXLDvGNrIGlucyBHb3Zlcm5hbmNlLU1vZGFsCiAgICAgICAgICAgICAgICBEcml2ZUdv
dmVybmFuY2Uuc2hvd0FkbWluKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgIH0KCiAgICAgICAgY29uc3QgdGl0ZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZWRpdG9yVGl0ZWwnKS52YWx1ZS50cmltKCk7CiAgICAgICAgaWYgKCF0aXRlbCkgewogICAgICAg
ICAgICBzaG93VG9hc3QoJ0JpdHRlIGVpbmVuIFRpdGVsIGVpbmdlYmVuJywgJ3dhcm5pbmcnKTsK
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclRpdGVsJykuZm9jdXMo
KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gQmVpIGJlc3RlaGVu
ZGVuIERva3VtZW50ZW46IEJlaXRyYWdzYXJ0IGFiZnJhZ2VuIGZhbGxzIG5vY2ggbmljaHQgZ2V3
YWVobHQKICAgICAgICBpZiAoIXRoaXMuaXNOZXcgJiYgIXRoaXMuX3BlbmRpbmdDb250cmliVHlw
ZSkgewogICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ2xvc2VBZnRlciA9IGNsb3NlQWZ0ZXIgfHwg
ZmFsc2U7CiAgICAgICAgICAgIHRoaXMuc2hvd0NvbnRyaWJEaWFsb2coKTsKICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gU2NobGFnd8O2cnRlciBQZmxpY2h0ZmVsZCAo
bnVyIHdlbm4gTW9kdXMgPSAicmVxdWlyZWQiKQogICAgICAgIGNvbnN0IGt3TW9kZSA9IChEcml2
ZUdvdmVybmFuY2UuZGF0YSAmJiBEcml2ZUdvdmVybmFuY2UuZGF0YS5zZXR0aW5ncykgPyAoRHJp
dmVHb3Zlcm5hbmNlLmRhdGEuc2V0dGluZ3Mua2V5d29yZE1vZGUgfHwgJ3JlcXVpcmVkJykgOiAn
cmVxdWlyZWQnOwogICAgICAgIGlmIChrd01vZGUgPT09ICdyZXF1aXJlZCcgJiYgKCF0aGlzLl9j
dXJyZW50S2V5d29yZHMgfHwgdGhpcy5fY3VycmVudEtleXdvcmRzLmxlbmd0aCA9PT0gMCkpIHsK
ICAgICAgICAgICAgc2hvd1RvYXN0KCdCaXR0ZSBtaW5kZXN0ZW5zIGVpbiBTY2hsYWd3b3J0IGVp
bmdlYmVuJywgJ3dhcm5pbmcnKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2VkaXRvcktleXdvcmRJbnB1dCcpLmZvY3VzKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICB9CgogICAgICAgIHRoaXMuY3VycmVudERvYy50aXRlbCA9IHRpdGVsOwogICAgICAgIHRoaXMu
Y3VycmVudERvYy5rYXRlZ29yaWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yS2F0
ZWdvcmllJykudmFsdWU7CiAgICAgICAgdGhpcy5jdXJyZW50RG9jLnBhcmVudElkID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclBhcmVudCcpLnZhbHVlIHx8IG51bGw7CiAgICAgICAg
aWYgKGt3TW9kZSAhPT0gJ2Rpc2FibGVkJykgewogICAgICAgICAgICB0aGlzLmN1cnJlbnREb2Mu
c2NobGFnd29lcnRlciA9IFsuLi50aGlzLl9jdXJyZW50S2V5d29yZHNdOwogICAgICAgIH0KICAg
ICAgICBjb25zdCBzZWxlY3RlZFN0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0
b3JTdGF0dXMnKS52YWx1ZTsKICAgICAgICBjb25zdCBuZXdJbmhhbHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKS5pbm5lckhUTUw7CgogICAgICAgIC8vIENvbnRyaWJ1
dG9yLVRyYWNraW5nOiBCZWl0cmFnc2FydCBiZXN0aW1tZW4KICAgICAgICBjb25zdCB1c2VybmFt
ZSA9IChEcml2ZUZTLmVudmlyb24gJiYgRHJpdmVGUy5lbnZpcm9uLnVzZXJuYW1lKSA/IERyaXZl
RlMuZW52aXJvbi51c2VybmFtZSA6ICdVbmJla2FubnQnOwogICAgICAgIGlmICghdGhpcy5jdXJy
ZW50RG9jLmNvbnRyaWJ1dG9ycykgdGhpcy5jdXJyZW50RG9jLmNvbnRyaWJ1dG9ycyA9IFtdOwoK
ICAgICAgICBpZiAodGhpcy5pc05ldykgewogICAgICAgICAgICAvLyBOZXVlcyBEb2t1bWVudDog
RXJzdGVsbGVyID0gMTAwJSBBdXRvcgogICAgICAgICAgICB0aGlzLmN1cnJlbnREb2MuY29udHJp
YnV0b3JzID0gW3sgdXNlcm5hbWU6IHVzZXJuYW1lLCByb2xlOiAnYXV0b3InLCBlbnRyaWVzOiAx
LCBmaXJzdENvbnRyaWI6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9XTsKICAgICAgICB9IGVs
c2UgaWYgKHRoaXMuX3BlbmRpbmdDb250cmliVHlwZSkgewogICAgICAgICAgICAvLyBCZXN0ZWhl
bmQ6IEVpbnRyYWcgZ2VtYWVzcyBnZXdhZWhsdGVyIEJlaXRyYWdzYXJ0IGhpbnp1ZnVlZ2VuCiAg
ICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jdXJyZW50RG9jLmNvbnRyaWJ1dG9ycy5m
aW5kKGMgPT4gYy51c2VybmFtZSA9PT0gdXNlcm5hbWUgJiYgYy5yb2xlID09PSB0aGlzLl9wZW5k
aW5nQ29udHJpYlR5cGUpOwogICAgICAgICAgICBpZiAoZXhpc3RpbmcpIHsKICAgICAgICAgICAg
ICAgIGV4aXN0aW5nLmVudHJpZXMgPSAoZXhpc3RpbmcuZW50cmllcyB8fCAxKSArIDE7CiAgICAg
ICAgICAgICAgICBleGlzdGluZy5sYXN0Q29udHJpYiA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmco
KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERvYy5j
b250cmlidXRvcnMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1l
LAogICAgICAgICAgICAgICAgICAgIHJvbGU6IHRoaXMuX3BlbmRpbmdDb250cmliVHlwZSwKICAg
ICAgICAgICAgICAgICAgICBlbnRyaWVzOiAxLAogICAgICAgICAgICAgICAgICAgIGZpcnN0Q29u
dHJpYjogbmV3IERhdGUoKS50b0lTT1N0cmluZygpCiAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ29udHJpYlR5cGUgPSBudWxsOwogICAg
ICAgIH0KCiAgICAgICAgLy8gUmV2aXNpb24gc2ljaGVybjogVm9yaGVyaWdlbiBTdGFuZCBzcGVp
Y2hlcm4gKG1heCA2IFJldmlzaW9uZW4pCiAgICAgICAgaWYgKCF0aGlzLmlzTmV3ICYmIHRoaXMu
Y3VycmVudERvYy5pbmhhbHQgJiYgdGhpcy5jdXJyZW50RG9jLmluaGFsdCAhPT0gbmV3SW5oYWx0
KSB7CiAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50RG9jLnJldmlzaW9ucykgdGhpcy5jdXJy
ZW50RG9jLnJldmlzaW9ucyA9IFtdOwogICAgICAgICAgICB0aGlzLmN1cnJlbnREb2MucmV2aXNp
b25zLnB1c2goewogICAgICAgICAgICAgICAgaW5oYWx0OiB0aGlzLmN1cnJlbnREb2MuaW5oYWx0
LAogICAgICAgICAgICAgICAgdGl0ZWw6IHRoaXMuY3VycmVudERvYy50aXRlbCwKICAgICAgICAg
ICAgICAgIHN0YXR1czogdGhpcy5jdXJyZW50RG9jLnN0YXR1cywKICAgICAgICAgICAgICAgIHNh
dmVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgICAgICAgICAgICAgIHNhdmVkQnk6
IHVzZXJuYW1lCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvLyBNYXggNiBSZXZpc2lvbmVu
IGJlaGFsdGVuIChhZWx0ZXN0ZSBlbnRmZXJuZW4pCiAgICAgICAgICAgIHdoaWxlICh0aGlzLmN1
cnJlbnREb2MucmV2aXNpb25zLmxlbmd0aCA+IDYpIHsKICAgICAgICAgICAgICAgIHRoaXMuY3Vy
cmVudERvYy5yZXZpc2lvbnMuc2hpZnQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg
ICAgLy8gVmVyc2lvbiBhdXRvbWF0aXNjaCBiZXJlY2huZW4KICAgICAgICB0aGlzLmN1cnJlbnRE
b2MudmVyc2lvbiA9IGNhbGN1bGF0ZVZlcnNpb24odGhpcy5jdXJyZW50RG9jLCB0aGlzLmN1cnJl
bnREb2MuaW5oYWx0LCBuZXdJbmhhbHQsIHNlbGVjdGVkU3RhdHVzKTsKCiAgICAgICAgdGhpcy5j
dXJyZW50RG9jLmluaGFsdCA9IG5ld0luaGFsdDsKCiAgICAgICAgLy8gR292ZXJuYW5jZS1Xb3Jr
ZmxvdzogU3RhdHVzLVVlYmVyZ2FlbmdlIHBydWVmZW4KICAgICAgICBjb25zdCBnb3YgPSBEcml2
ZUdvdmVybmFuY2UuZGF0YTsKICAgICAgICBjb25zdCBzZXR0aW5ncyA9IGdvdiA/IGdvdi5zZXR0
aW5ncyA6IHt9OwogICAgICAgIGNvbnN0IGlzU1UgPSBEcml2ZUdvdmVybmFuY2UuaXNTdXBlclVz
ZXIoKTsKICAgICAgICBjb25zdCBpc0ZBID0gRHJpdmVHb3Zlcm5hbmNlLmlzRmFjaGF1ZnNpY2h0
KCk7CiAgICAgICAgY29uc3QgaXNSZXYgPSBEcml2ZUdvdmVybmFuY2UuaXNSZXZpZXdlcih0aGlz
LmN1cnJlbnREb2Mua2F0ZWdvcmllKTsKCiAgICAgICAgaWYgKHNlbGVjdGVkU3RhdHVzID09PSAn
UHLDvGZ1bmcnICYmICFpc1NVICYmICFpc0ZBKSB7CiAgICAgICAgICAgIC8vIFp1ciBQcnVlZnVu
ZyBlaW5yZWljaGVuCiAgICAgICAgICAgIGF3YWl0IERyaXZlR292ZXJuYW5jZS5zdWJtaXRGb3JS
ZXZpZXcodGhpcy5jdXJyZW50RG9jKTsKICAgICAgICAgICAgc2hvd1RvYXN0KCdEb2t1bWVudCB6
dXIgUHLDvGZ1bmcgZWluZ2VyZWljaHQnLCAnaW5mbycpOwogICAgICAgIH0gZWxzZSBpZiAoc2Vs
ZWN0ZWRTdGF0dXMgPT09ICdGcmVpZ2VnZWJlbicgJiYgIWlzU1UgJiYgIWlzRkEgJiYgIWlzUmV2
KSB7CiAgICAgICAgICAgIC8vIE5vcm1hbGVyIFVzZXIgZGFyZiBuaWNodCBkaXJla3QgZnJlaWdl
YmVuCiAgICAgICAgICAgIHNob3dUb2FzdCgnS2VpbmUgQmVyZWNodGlndW5nIHp1ciBGcmVpZ2Fi
ZS4gQml0dGUgenVyIFByw7xmdW5nIGVpbnJlaWNoZW4uJywgJ3dhcm5pbmcnKTsKICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFdlbm4gU3RhdHVzIGF1
ZiBQcnVlZnVuZyBnZXNldHp0IHdpcmQ6IHZvcmhlcmlnZW4gSW5oYWx0IHNpY2hlcm4gZnVlciBE
aWZmCiAgICAgICAgICAgIGlmIChzZWxlY3RlZFN0YXR1cyA9PT0gJ1Byw7xmdW5nJyAmJiB0aGlz
LmN1cnJlbnREb2Muc3RhdHVzICE9PSAnUHLDvGZ1bmcnKSB7CiAgICAgICAgICAgICAgICB0cnkg
ewogICAgICAgICAgICAgICAgICAgIHZhciBzYXZlZERvYyA9IGF3YWl0IERyaXZlRlMubG9hZERv
Y3VtZW50KHRoaXMuY3VycmVudERvYy5pZCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNhdmVk
RG9jICYmIHNhdmVkRG9jLmluaGFsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1
cnJlbnREb2MuX3ByZXZpb3VzSW5oYWx0ID0gc2F2ZWREb2MuaW5oYWx0OwogICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLmN1cnJlbnREb2MuX3ByZXZpb3VzVGl0ZWwgPSBzYXZlZERvYy50aXRl
bDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHt9CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5jdXJyZW50RG9jLnN0YXR1cyA9IHNlbGVjdGVk
U3RhdHVzOwogICAgICAgIH0KCiAgICAgICAgLy8gQmVpIG5ldWVtIERva3VtZW50OiBHb3Zlcm5h
bmNlIGVyendpbmdlbgogICAgICAgIGlmICh0aGlzLmlzTmV3ICYmIHNldHRpbmdzLnJlcXVpcmVB
cHByb3ZhbEZvck5ldyAmJiAhaXNTVSkgewogICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50RG9j
LnN0YXR1cyAhPT0gJ0VudHd1cmYnICYmIHRoaXMuY3VycmVudERvYy5zdGF0dXMgIT09ICdQcsO8
ZnVuZycpIHsKICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERvYy5zdGF0dXMgPSAnRW50d3Vy
Zic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNv
bnN0IHNhdmVSZXN1bHQgPSBhd2FpdCBEcml2ZUZTLnNhdmVEb2N1bWVudCh0aGlzLmN1cnJlbnRE
b2MpOwogICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAg
ICAgY29uc3Qgc2F2ZWREb2NJZCA9IHRoaXMuY3VycmVudERvYy5pZDsKICAgICAgICAgICAgICAg
IHNob3dUb2FzdCgnRG9rdW1lbnQgIicgKyB0aXRlbCArICciIGdlc3BlaWNoZXJ0JywgJ3N1Y2Nl
c3MnKTsKICAgICAgICAgICAgICAgIERyaXZlR292ZXJuYW5jZS51cGRhdGVVSSgpOwogICAgICAg
ICAgICAgICAgRHJpdmVQb3J0YWwucmVuZGVyKCk7CiAgICAgICAgICAgICAgICBpZiAoY2xvc2VB
ZnRlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsKICAgICAgICAgICAgICAg
ICAgICBhd2FpdCBEcml2ZVBvcnRhbC5zZWxlY3REb2N1bWVudChzYXZlZERvY0lkKTsKICAgICAg
ICAgICAgICAgICAgICBEcml2ZVBvcnRhbC5oaWdobGlnaHRJdGVtKHNhdmVkRG9jSWQpOwogICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBFZGl0b3Igb2ZmZW4g
bGFzc2VuLCBhYmVyIERva3VtZW50ZW5saXN0ZSBha3R1YWxpc2llcmVuCiAgICAgICAgICAgICAg
ICAgICAgdGhpcy5pc05ldyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRp
bmdDb250cmliVHlwZSA9IG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICBzaG93VG9hc3QoJ1NwZWljaGVybiBmZWhsZ2VzY2hsYWdlbjog
JyArIHNhdmVSZXN1bHQsICdlcnJvcicsIDUwMDApOwogICAgICAgICAgICB9CiAgICAgICAgfSBj
YXRjaCAoZXJyKSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnU3BlaWNoZXJuIGZlaGxnZXNjaGxh
Z2VuOiAnICsgZXJyLm1lc3NhZ2UsICdlcnJvcicsIDUwMDApOwogICAgICAgIH0KICAgIH0sCgog
ICAgLy8gLS0tIEhpc3RvcnkgKFVuZG8vUmVkbykgLS0tCiAgICBpbml0SGlzdG9yeSgpIHsKICAg
ICAgICBjb25zdCBlZGl0b3JJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJ
bnB1dCcpOwogICAgICAgIHRoaXMuaGlzdG9yeSA9IFtlZGl0b3JJbnB1dC5pbm5lckhUTUxdOwog
ICAgICAgIHRoaXMuaGlzdG9yeUluZGV4ID0gMDsKCiAgICAgICAgLy8gUGFzdGUtSGFuZGxlcjog
SFRNTC1JbmhhbHRlIG5vcm1hbGlzaWVyZW4gKyBleHRlcm5lIEJpbGRlciBsb2thbCBzcGVpY2hl
cm4KICAgICAgICBlZGl0b3JJbnB1dC5vbnBhc3RlID0gKGUpID0+IHsKICAgICAgICAgICAgZS5w
cmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgLy8gQmlsZGVyIGF1cyBDbGlwYm9hcmQgKFNj
cmVlbnNob3QgLyBDb3B5LUltYWdlKQogICAgICAgICAgICBjb25zdCBpdGVtcyA9IEFycmF5LmZy
b20oZS5jbGlwYm9hcmREYXRhLml0ZW1zIHx8IFtdKTsKICAgICAgICAgICAgY29uc3QgaW1nSXRl
bSA9IGl0ZW1zLmZpbmQoaSA9PiBpLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpOwogICAgICAg
ICAgICBpZiAoaW1nSXRlbSAmJiB0aGlzLmN1cnJlbnREb2MpIHsKICAgICAgICAgICAgICAgIGNv
bnN0IGJsb2IgPSBpbWdJdGVtLmdldEFzRmlsZSgpOwogICAgICAgICAgICAgICAgaWYgKGJsb2Ip
IHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXN0ZUltYWdlQmxvYihibG9iKTsKICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgIGNvbnN0IGNsaXBIdG1sID0gZS5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQv
aHRtbCcpOwogICAgICAgICAgICBjb25zdCBjbGlwVGV4dCA9IGUuY2xpcGJvYXJkRGF0YS5nZXRE
YXRhKCd0ZXh0L3BsYWluJyk7CgogICAgICAgICAgICBpZiAoY2xpcEh0bWwpIHsKICAgICAgICAg
ICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTsKICAgICAgICAgICAgICAgIGNv
bnN0IHBhcnNlZCA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoY2xpcEh0bWwsICd0ZXh0L2h0bWwn
KTsKICAgICAgICAgICAgICAgIGNvbnN0IGltZ3MgPSBwYXJzZWQuYm9keS5xdWVyeVNlbGVjdG9y
QWxsKCdpbWcnKTsKICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVybmFsSW1ncyA9IEFycmF5LmZy
b20oaW1ncykuZmlsdGVyKGltZyA9PgogICAgICAgICAgICAgICAgICAgIGltZy5zcmMgJiYgKGlt
Zy5zcmMuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IGltZy5zcmMuc3RhcnRzV2l0aCgnaHR0cHM6
Ly8nKSkKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgLy8gSW5saW5lLVN0eWxl
cyBiZXJlaW5pZ2VuOiBGYXJiZW4sIEhpbnRlcmdydWVuZGUgdW5kIFNjaHJpZnRhcnRlbiBlbnRm
ZXJuZW4sCiAgICAgICAgICAgICAgICAvLyBkYW1pdCBlaW5nZWZ1ZWd0ZXIgVGV4dCBpbSBEYXJr
LS9MaWdodC1Nb2RlIGtvcnJla3QgZGFyZ2VzdGVsbHQgd2lyZC4KICAgICAgICAgICAgICAgIC8v
IExpc3RlbiAodWwvb2wvbGkpIHVuZCBUYWJlbGxlbiAodGFibGUvdHIvdGQvdGgpIHdlcmRlbiBn
ZXNjaG9udCwKICAgICAgICAgICAgICAgIC8vIGRhbWl0IFN0cnVrdHVyIHVuZCBFaW5ydWVja3Vu
ZyBlcmhhbHRlbiBibGVpYmVuLgogICAgICAgICAgICAgICAgdmFyIGxpc3RUYWdzID0gWydVTCcs
J09MJywnTEknXTsKICAgICAgICAgICAgICAgIHZhciB0YWJsZVRhZ3MgPSBbJ1RBQkxFJywnVEhF
QUQnLCdUQk9EWScsJ1RSJywnVEQnLCdUSCddOwogICAgICAgICAgICAgICAgcGFyc2VkLmJvZHku
cXVlcnlTZWxlY3RvckFsbCgnKicpLmZvckVhY2goZWwgPT4gewogICAgICAgICAgICAgICAgICAg
IHZhciB0YWcgPSBlbC50YWdOYW1lOwogICAgICAgICAgICAgICAgICAgIHZhciBpc0xpc3QgPSBs
aXN0VGFncy5pbmNsdWRlcyh0YWcpOwogICAgICAgICAgICAgICAgICAgIHZhciBpc1RhYmxlID0g
dGFibGVUYWdzLmluY2x1ZGVzKHRhZyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLnN0eWxl
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdjb2xv
cicpOwogICAgICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnYmFj
a2dyb3VuZC1jb2xvcicpOwogICAgICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5yZW1vdmVQ
cm9wZXJ0eSgnYmFja2dyb3VuZCcpOwogICAgICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5y
ZW1vdmVQcm9wZXJ0eSgnZm9udC1mYW1pbHknKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWwu
c3R5bGUucmVtb3ZlUHJvcGVydHkoJ2ZvbnQtc2l6ZScpOwogICAgICAgICAgICAgICAgICAgICAg
ICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnd2hpdGUtc3BhY2UnKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ292ZXJmbG93LXdyYXAnKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3dvcmQtYnJlYWsnKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RleHQtZGVj
b3JhdGlvbi1saW5lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLnJlbW92ZVBy
b3BlcnR5KCdib3JkZXItcmFkaXVzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNU
YWJsZSkgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2JvcmRlcicpOwogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWlzTGlzdCAmJiAhaXNUYWJsZSkgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHko
J21hcmdpbicpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTGlzdCAmJiAhaXNUYWJs
ZSkgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3BhZGRpbmcnKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2xpbmUtaGVpZ2h0Jyk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNMaXN0KSBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnZGlzcGxh
eScpOwogICAgICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWF4
LXdpZHRoJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYWJsZSkgZWwuc3R5bGUu
cmVtb3ZlUHJvcGVydHkoJ3dpZHRoJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgIC8vIGNsYXNzLSB1bmQgc3R5bGUtQXR0cmlidXRlIGV4dGVybmVyIFNlaXRlbiBl
bnRmZXJuZW4gd2VubiBzdHlsZSBsZWVyCiAgICAgICAgICAgICAgICAgICAgLy8gRFJJVkUtaW50
ZXJuZSBLbGFzc2VuIChkcml2ZS0qKSBiZWliZWhhbHRlbgogICAgICAgICAgICAgICAgICAgIGlm
IChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IGNsYXNzZXMgPSBlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykuc3BsaXQoJyAnKS5maWx0ZXIoZnVu
Y3Rpb24oYykgeyByZXR1cm4gYy5zdGFydHNXaXRoKCdkcml2ZS0nKTsgfSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjbGFzc2VzLmxlbmd0aCA+IDApIGVsLnNldEF0dHJpYnV0ZSgnY2xh
c3MnLCBjbGFzc2VzLmpvaW4oJyAnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZWwu
cmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICBpZiAoZWwuZ2V0QXR0cmlidXRlKCdzdHlsZScpID09PSAnJykgZWwucmVtb3Zl
QXR0cmlidXRlKCdzdHlsZScpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAg
Ly8gQWxsZSBMaW5rcyBhdWYgdGFyZ2V0PV9ibGFuayBzZXR6ZW4gKFBvcnRhbCBkYXJmIG5pY2h0
IHZlcmxhc3NlbiB3ZXJkZW4pCiAgICAgICAgICAgICAgICBwYXJzZWQuYm9keS5xdWVyeVNlbGVj
dG9yQWxsKCdhW2hyZWZdJykuZm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICAg
ICAgdmFyIGhyZWYgPSAoYS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJykudHJpbSgpOwogICAg
ICAgICAgICAgICAgICAgIGlmIChocmVmLnN0YXJ0c1dpdGgoJyMnKSkgcmV0dXJuOwogICAgICAg
ICAgICAgICAgICAgIGEuc2V0QXR0cmlidXRlKCd0YXJnZXQnLCAnX2JsYW5rJyk7CiAgICAgICAg
ICAgICAgICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdub29wZW5lciBub3JlZmVycmVyJyk7
CiAgICAgICAgICAgICAgICAgICAgLy8gdGFyZ2V0PV9zZWxmIGV4cGxpeml0IGVudGZlcm5lbiBm
YWxscyBnZXNldHp0CiAgICAgICAgICAgICAgICAgICAgaWYgKGEuZ2V0QXR0cmlidXRlKCd0YXJn
ZXQnKSA9PT0gJ19zZWxmJykgYS5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsICdfYmxhbmsnKTsKICAg
ICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGlmIChleHRlcm5hbEltZ3MubGVuZ3Ro
ID4gMCAmJiB0aGlzLmN1cnJlbnREb2MgJiYgRHJpdmVGUy5jb25uZWN0ZWQpIHsKICAgICAgICAg
ICAgICAgICAgICAvLyBFeHRlcm5lIEJpbGRlciBoZXJ1bnRlcmxhZGVuIHVuZCBsb2thbCBzcGVp
Y2hlcm4KICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXN0ZUh0bWxXaXRoRXh0ZXJuYWxJbWFn
ZXMocGFyc2VkLmJvZHksIGV4dGVybmFsSW1ncyk7CiAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFs
c2UsIHBhcnNlZC5ib2R5LmlubmVySFRNTCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0gZWxzZSBpZiAoY2xpcFRleHQpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCdpbnNlcnRUZXh0JywgZmFsc2UsIGNsaXBUZXh0KTsKICAgICAgICAgICAgfQogICAgICAg
IH07CgogICAgICAgIGxldCBzYXZlVGltZW91dDsKICAgICAgICBlZGl0b3JJbnB1dC5vbmlucHV0
ID0gKCkgPT4gewogICAgICAgICAgICBjbGVhclRpbWVvdXQoc2F2ZVRpbWVvdXQpOwogICAgICAg
ICAgICBzYXZlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zYXZlU3RhdGUoKSwgNTAw
KTsKICAgICAgICB9OwoKICAgICAgICBlZGl0b3JJbnB1dC5vbmtleWRvd24gPSAoZSkgPT4gewog
ICAgICAgICAgICAvLyAjLVJlZmVyZW56IERyb3Bkb3duIHNjaGxpZXNzZW4gYmVpIEVzY2FwZQog
ICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnICYmIHRoaXMuX3hyZWZWaXNpYmxlKSB7
CiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlWHJlZkRyb3Bkb3duKCk7CiAgICAgICAgICAgICAg
ICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgaWYgKChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSAmJiBlLmtleSA9PT0g
J3onICYmICFlLnNoaWZ0S2V5KSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7
CiAgICAgICAgICAgICAgICB0aGlzLnVuZG8oKTsKICAgICAgICAgICAgfSBlbHNlIGlmICgoZS5j
dHJsS2V5IHx8IGUubWV0YUtleSkgJiYgKGUua2V5ID09PSAneScgfHwgKGUua2V5ID09PSAneicg
JiYgZS5zaGlmdEtleSkpKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAg
ICAgICAgICAgICAgICB0aGlzLnJlZG8oKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChlLmtleSA9
PT0gJyMnICYmICFlLmN0cmxLZXkgJiYgIWUubWV0YUtleSkgewogICAgICAgICAgICAgICAgLy8g
Iy1UcmlnZ2VyOiBBcnRpa2VsLVJlZmVyZW56LURyb3Bkb3duIMO2ZmZuZW4KICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vcGVuWHJlZkRyb3Bkb3duKCksIDEwKTsKICAgICAg
ICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0VudGVyJykgewogICAgICAgICAgICAgICAgZS5w
cmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNl
bGVjdGlvbigpOwogICAgICAgICAgICAgICAgaWYgKCFzZWwucmFuZ2VDb3VudCkgcmV0dXJuOwog
ICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTsKICAgICAgICAg
ICAgICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CgogICAgICAgICAgICAgICAgLy8gQmxvY2st
S29udGV4dCBlcm1pdHRlbG4KICAgICAgICAgICAgICAgIGxldCBibG9jayA9IHJhbmdlLnN0YXJ0
Q29udGFpbmVyOwogICAgICAgICAgICAgICAgd2hpbGUgKGJsb2NrICYmIGJsb2NrICE9PSBpbnB1
dCAmJiAhWydQJywnRElWJywnSDEnLCdIMicsJ0gzJywnSDQnLCdINScsJ0g2JywnTEknXS5pbmNs
dWRlcyhibG9jay5ub2RlTmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICBibG9jayA9IGJsb2Nr
LnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGJsb2Nr
ICYmIFsnSDEnLCdIMicsJ0gzJywnSDQnLCdINScsJ0g2J10uaW5jbHVkZXMoYmxvY2subm9kZU5h
bWUpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gSW4gSGVhZGluZzogQ3Vyc29yIGFtIEVuZGU/
IC0+IG5ldWVyIDxwPiBuYWNoIEhlYWRpbmcKICAgICAgICAgICAgICAgICAgICBjb25zdCBhZnRl
clJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICBhZnRl
clJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhibG9jayk7CiAgICAgICAgICAgICAgICAgICAgYWZ0
ZXJSYW5nZS5zZXRTdGFydChyYW5nZS5lbmRDb250YWluZXIsIHJhbmdlLmVuZE9mZnNldCk7CiAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdHJhaWxpbmcgPSBhZnRlclJhbmdlLmNsb25lQ29udGVu
dHMoKS50ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRyYWlsaW5nLnRyaW0o
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBDdXJzb3IgYW0gRW5kZSBkZXMgSGVhZGlu
Z3MgLT4gbmV1ZXIgQWJzYXR6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5uZXJI
VE1MID0gJzxicj4nOwogICAgICAgICAgICAgICAgICAgICAgICBibG9jay5wYXJlbnROb2RlLmlu
c2VydEJlZm9yZShwLCBibG9jay5uZXh0U2libGluZyk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG5ld1JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3UmFuZ2Uuc2V0U3RhcnQocCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAg
IG5ld1JhbmdlLmNvbGxhcHNlKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBzZWwucmVt
b3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbC5hZGRSYW5nZShuZXdS
YW5nZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gQ3Vyc29yIG1pdHRlbiBpbSBIZWFkaW5nIC0+IEhlYWRpbmcgdGVpbGVuLCBSZXN0IGlu
IDxwPgogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN0RnJhZyA9IGFmdGVyUmFuZ2Uu
ZXh0cmFjdENvbnRlbnRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAuYXBwZW5k
Q2hpbGQocmVzdEZyYWcpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXAudGV4dENvbnRl
bnQudHJpbSgpICYmICFwLnF1ZXJ5U2VsZWN0b3IoJ2ltZyxicicpKSBwLmlubmVySFRNTCA9ICc8
YnI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucGFyZW50Tm9kZS5pbnNlcnRCZWZv
cmUocCwgYmxvY2submV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBu
ZXdSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
IG5ld1JhbmdlLnNldFN0YXJ0KHAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXdSYW5n
ZS5jb2xsYXBzZSh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsLnJlbW92ZUFsbFJh
bmdlcygpOwogICAgICAgICAgICAgICAgICAgICAgICBzZWwuYWRkUmFuZ2UobmV3UmFuZ2UpOwog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2sgJiYg
YmxvY2subm9kZU5hbWUgPT09ICdMSScpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJbiBMaXN0
ZW5lbGVtZW50OiBsZWVyZXMgTEkgLT4gTGlzdGUgdmVybGFzc2VuCiAgICAgICAgICAgICAgICAg
ICAgaWYgKCFibG9jay50ZXh0Q29udGVudC50cmltKCkgJiYgIWJsb2NrLnF1ZXJ5U2VsZWN0b3Io
J2ltZycpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBibG9jay5wYXJl
bnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgncCcpOwogICAgICAgICAgICAgICAgICAgICAgICBwLmlubmVySFRNTCA9ICc8YnI+
JzsKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShw
LCBsaXN0Lm5leHRTaWJsaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sucmVtb3Zl
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xp
JykubGVuZ3RoID09PSAwKSBsaXN0LnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBuZXdSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld1JhbmdlLnNldFN0YXJ0KHAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICBu
ZXdSYW5nZS5jb2xsYXBzZSh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsLnJlbW92
ZUFsbFJhbmdlcygpOwogICAgICAgICAgICAgICAgICAgICAgICBzZWwuYWRkUmFuZ2UobmV3UmFu
Z2UpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIE5ldWVzIExJIGVpbmZ1ZWdlbgogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdM
aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGFmdGVyUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAg
ICAgICAgICAgICBhZnRlclJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhibG9jayk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGFmdGVyUmFuZ2Uuc2V0U3RhcnQocmFuZ2UuZW5kQ29udGFpbmVyLCBy
YW5nZS5lbmRPZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXdMaS5hcHBlbmRDaGls
ZChhZnRlclJhbmdlLmV4dHJhY3RDb250ZW50cygpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFuZXdMaS50ZXh0Q29udGVudC50cmltKCkgJiYgIW5ld0xpLnF1ZXJ5U2VsZWN0b3IoJ2lt
ZyxicicpKSBuZXdMaS5pbm5lckhUTUwgPSAnPGJyPic7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJsb2NrLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5ld0xpLCBibG9jay5uZXh0U2libGluZyk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1JhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmFuZ2Uuc2V0U3RhcnQobmV3TGks
IDApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXdSYW5nZS5jb2xsYXBzZSh0cnVlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICAg
ICAgICAgICAgICBzZWwuYWRkUmFuZ2UobmV3UmFuZ2UpOwogICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gTm9ybWFsZXIg
VGV4dDogPGJyPiBlaW5mdWVnZW4gKFNvZnQtQnJlYWspCiAgICAgICAgICAgICAgICAgICAgY29u
c3QgYnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpOwogICAgICAgICAgICAgICAgICAg
IHJhbmdlLmluc2VydE5vZGUoYnIpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnXHUyMDBCJyk7CiAgICAgICAgICAgICAgICAgICAgcmFu
Z2Uuc2V0U3RhcnRBZnRlcihicik7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9k
ZSh0ZXh0KTsKICAgICAgICAgICAgICAgICAgICByYW5nZS5zZXRTdGFydEFmdGVyKHRleHQpOwog
ICAgICAgICAgICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpOwogICAgICAgICAgICAgICAg
ICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgICAgICAgICAgICBzZWwuYWRkUmFu
Z2UocmFuZ2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAg
IH0sCgogICAgc2F2ZVN0YXRlKCkgewogICAgICAgIGlmICh0aGlzLmlzUmVzdG9yaW5nKSByZXR1
cm47CiAgICAgICAgY29uc3QgZWRpdG9ySW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZWRpdG9ySW5wdXQnKTsKICAgICAgICBpZiAoIWVkaXRvcklucHV0KSByZXR1cm47CiAgICAgICAg
aWYgKHRoaXMuaGlzdG9yeUluZGV4IDwgdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDEpIHsKICAgICAg
ICAgICAgdGhpcy5oaXN0b3J5ID0gdGhpcy5oaXN0b3J5LnNsaWNlKDAsIHRoaXMuaGlzdG9yeUlu
ZGV4ICsgMSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKGVkaXRvcklucHV0
LmlubmVySFRNTCk7CiAgICAgICAgdGhpcy5oaXN0b3J5SW5kZXgrKzsKICAgICAgICBpZiAodGhp
cy5oaXN0b3J5Lmxlbmd0aCA+IDUwKSB7IHRoaXMuaGlzdG9yeS5zaGlmdCgpOyB0aGlzLmhpc3Rv
cnlJbmRleC0tOyB9CiAgICB9LAoKICAgIHVuZG8oKSB7CiAgICAgICAgaWYgKHRoaXMuaGlzdG9y
eUluZGV4ID4gMCkgewogICAgICAgICAgICB0aGlzLmhpc3RvcnlJbmRleC0tOwogICAgICAgICAg
ICB0aGlzLmlzUmVzdG9yaW5nID0gdHJ1ZTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2VkaXRvcklucHV0JykuaW5uZXJIVE1MID0gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9y
eUluZGV4XTsKICAgICAgICAgICAgdGhpcy5pc1Jlc3RvcmluZyA9IGZhbHNlOwogICAgICAgIH0K
ICAgIH0sCgogICAgcmVkbygpIHsKICAgICAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPCB0aGlz
Lmhpc3RvcnkubGVuZ3RoIC0gMSkgewogICAgICAgICAgICB0aGlzLmhpc3RvcnlJbmRleCsrOwog
ICAgICAgICAgICB0aGlzLmlzUmVzdG9yaW5nID0gdHJ1ZTsKICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0JykuaW5uZXJIVE1MID0gdGhpcy5oaXN0b3J5W3Ro
aXMuaGlzdG9yeUluZGV4XTsKICAgICAgICAgICAgdGhpcy5pc1Jlc3RvcmluZyA9IGZhbHNlOwog
ICAgICAgIH0KICAgIH0sCgogICAgLy8gPT09IEFydGlrZWwtUmVmZXJlbnogKCMtQXV0b2NvbXBs
ZXRlKSA9PT0KICAgIF94cmVmVmlzaWJsZTogZmFsc2UsCiAgICBfeHJlZlJhbmdlOiBudWxsLAog
ICAgX3hyZWZTZWxlY3RlZERvYzogbnVsbCwKCiAgICBvcGVuWHJlZkRyb3Bkb3duKCkgewogICAg
ICAgIC8vIEN1cnNvci1Qb3NpdGlvbiBtZXJrZW4gKGRhcyAjIHd1cmRlIGdlcmFkZSBnZXRpcHB0
KQogICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgaWYgKCFz
ZWwucmFuZ2VDb3VudCkgcmV0dXJuOwogICAgICAgIHRoaXMuX3hyZWZSYW5nZSA9IHNlbC5nZXRS
YW5nZUF0KDApLmNsb25lUmFuZ2UoKTsKCiAgICAgICAgdmFyIGRyb3Bkb3duID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3hyZWZEcm9wZG93bicpOwogICAgICAgIHZhciBpbnB1dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd4cmVmU2VhcmNoSW5wdXQnKTsKCiAgICAgICAgLy8gUG9zaXRp
b246IHVudGVyIGRlbSBDdXJzb3IKICAgICAgICB2YXIgcmVjdCA9IHRoaXMuX3hyZWZSYW5nZS5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICB2YXIgbGVmdCA9IHJlY3QubGVmdDsKICAg
ICAgICB2YXIgdG9wID0gcmVjdC5ib3R0b20gKyA0OwogICAgICAgIGlmIChsZWZ0ICsgMzgwID4g
d2luZG93LmlubmVyV2lkdGgpIGxlZnQgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIDM5MDsKICAgICAg
ICBpZiAodG9wICsgMzYwID4gd2luZG93LmlubmVySGVpZ2h0KSB0b3AgPSByZWN0LnRvcCAtIDM2
NDsKICAgICAgICBkcm9wZG93bi5zdHlsZS5sZWZ0ID0gTWF0aC5tYXgoMTAsIGxlZnQpICsgJ3B4
JzsKICAgICAgICBkcm9wZG93bi5zdHlsZS50b3AgPSBNYXRoLm1heCgxMCwgdG9wKSArICdweCc7
CgogICAgICAgIHRoaXMuX3hyZWZTZWxlY3RlZERvYyA9IG51bGw7CiAgICAgICAgaW5wdXQudmFs
dWUgPSAnJzsKICAgICAgICB0aGlzLl9yZW5kZXJYcmVmQXJ0aWNsZXMoJycpOwogICAgICAgIGRy
b3Bkb3duLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICAgICAgICB0aGlzLl94cmVmVmlzaWJs
ZSA9IHRydWU7CiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBpbnB1dC5mb2N1cygpLCAzMCk7Cgog
ICAgICAgIC8vIEVpbmdhYmUtSGFuZGxlcgogICAgICAgIGlucHV0Lm9uaW5wdXQgPSAoKSA9PiB7
CiAgICAgICAgICAgIGlmICh0aGlzLl94cmVmU2VsZWN0ZWREb2MpIHsKICAgICAgICAgICAgICAg
IHRoaXMuX3JlbmRlclhyZWZIZWFkaW5ncyh0aGlzLl94cmVmU2VsZWN0ZWREb2MsIGlucHV0LnZh
bHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlclhy
ZWZBcnRpY2xlcyhpbnB1dC52YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAg
IGlucHV0Lm9ua2V5ZG93biA9IChlKSA9PiB7CiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Vz
Y2FwZScpIHsgdGhpcy5jbG9zZVhyZWZEcm9wZG93bigpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0K
ICAgICAgICB9OwoKICAgICAgICAvLyBDbGljay1PdXRzaWRlIHNjaGxpZXNzZW4KICAgICAgICBz
ZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
bW91c2Vkb3duJywgdGhpcy5feHJlZk91dHNpZGVIYW5kbGVyID0gKGUpID0+IHsKICAgICAgICAg
ICAgICAgIGlmICghZHJvcGRvd24uY29udGFpbnMoZS50YXJnZXQpKSB0aGlzLmNsb3NlWHJlZkRy
b3Bkb3duKCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sIDUwKTsKICAgIH0sCgogICAgY2xv
c2VYcmVmRHJvcGRvd24oKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3hyZWZE
cm9wZG93bicpLmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTsKICAgICAgICB0aGlzLl94cmVm
VmlzaWJsZSA9IGZhbHNlOwogICAgICAgIHRoaXMuX3hyZWZTZWxlY3RlZERvYyA9IG51bGw7CiAg
ICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5feHJl
Zk91dHNpZGVIYW5kbGVyKTsKICAgICAgICAvLyBGb2t1cyB6dXLDvGNrIHp1bSBFZGl0b3IKICAg
ICAgICB2YXIgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7
CiAgICAgICAgaWYgKGVkaXRvcikgZWRpdG9yLmZvY3VzKCk7CiAgICB9LAoKICAgIF9yZW5kZXJY
cmVmQXJ0aWNsZXMocXVlcnkpIHsKICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd4cmVmTGlzdCcpOwogICAgICAgIHZhciBxID0gcXVlcnkudG9Mb3dlckNhc2UoKS50
cmltKCk7CiAgICAgICAgdmFyIGRvY3MgPSBEcml2ZUZTLmRvY3VtZW50cy5maWx0ZXIoZnVuY3Rp
b24oZCkgewogICAgICAgICAgICBpZiAoRHJpdmVFZGl0b3IuY3VycmVudERvYyAmJiBkLmlkID09
PSBEcml2ZUVkaXRvci5jdXJyZW50RG9jLmlkKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGlm
ICghcSkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIHJldHVybiAoZC50aXRlbCAmJiBkLnRpdGVs
LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpIHx8CiAgICAgICAgICAgICAgICAgICAoZC5rYXRl
Z29yaWUgJiYgZC5rYXRlZ29yaWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSkgfHwKICAgICAg
ICAgICAgICAgICAgIChkLnNjaGxhZ3dvZXJ0ZXIgJiYgZC5zY2hsYWd3b2VydGVyLnNvbWUoZnVu
Y3Rpb24oaykgeyByZXR1cm4gay50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpOyB9KSk7CiAgICAg
ICAgfSkuc2xpY2UoMCwgMjApOwoKICAgICAgICBpZiAoZG9jcy5sZW5ndGggPT09IDApIHsKICAg
ICAgICAgICAgbGlzdC5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT0icGFkZGluZzoxNnB4O3RleHQt
YWxpZ246Y2VudGVyO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxM3B4OyI+S2Vp
bmUgQXJ0aWtlbCBnZWZ1bmRlbjwvZGl2Pic7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9
CgogICAgICAgIGxpc3QuaW5uZXJIVE1MID0gZG9jcy5tYXAoZnVuY3Rpb24oZCkgewogICAgICAg
ICAgICByZXR1cm4gJzxkaXYgY2xhc3M9InhyZWYtaXRlbSIgb25jbGljaz0iRHJpdmVFZGl0b3Iu
c2VsZWN0WHJlZkFydGljbGUoXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkLmlkKSArICdc
JykiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InhyZWYtdGl0bGUiPicgKyBEcml2
ZVBvcnRhbC5lc2NhcGVIVE1MKGQudGl0ZWwpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAg
JzxkaXYgY2xhc3M9InhyZWYtY2F0Ij4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChkLmthdGVn
b3JpZSkgKwogICAgICAgICAgICAgICAgKGQuc2NobGFnd29lcnRlciAmJiBkLnNjaGxhZ3dvZXJ0
ZXIubGVuZ3RoID8gJyDCtyAnICsgZC5zY2hsYWd3b2VydGVyLnNsaWNlKDAsIDMpLmpvaW4oJywg
JykgOiAnJykgKwogICAgICAgICAgICAgICAgJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgfSkuam9p
bignJyk7CiAgICB9LAoKICAgIHNlbGVjdFhyZWZBcnRpY2xlKGRvY0lkKSB7CiAgICAgICAgdmFy
IGRvYyA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbmQoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZCA9
PT0gZG9jSWQ7IH0pOwogICAgICAgIGlmICghZG9jKSByZXR1cm47CiAgICAgICAgdGhpcy5feHJl
ZlNlbGVjdGVkRG9jID0gZG9jOwoKICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgneHJlZlNlYXJjaElucHV0Jyk7CiAgICAgICAgaW5wdXQudmFsdWUgPSAnJzsKICAg
ICAgICBpbnB1dC5wbGFjZWhvbGRlciA9ICfDnGJlcnNjaHJpZnQgc3VjaGVuIChvZGVyIGxlZXIg
bGFzc2VuIGbDvHIgQXJ0aWtlbC1MaW5rKS4uLic7CgogICAgICAgIHRoaXMuX3JlbmRlclhyZWZI
ZWFkaW5ncyhkb2MsICcnKTsKICAgICAgICBpbnB1dC5mb2N1cygpOwogICAgfSwKCiAgICBfZXh0
cmFjdEhlYWRpbmdzKGh0bWxDb250ZW50KSB7CiAgICAgICAgaWYgKCFodG1sQ29udGVudCkgcmV0
dXJuIFtdOwogICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
ICAgICAgICBkaXYuaW5uZXJIVE1MID0gaHRtbENvbnRlbnQ7CiAgICAgICAgdmFyIGhlYWRpbmdz
ID0gW107CiAgICAgICAgZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gxLCBoMiwgaDMsIGg0JykuZm9y
RWFjaChmdW5jdGlvbihoKSB7CiAgICAgICAgICAgIHZhciB0ZXh0ID0gaC50ZXh0Q29udGVudC50
cmltKCk7CiAgICAgICAgICAgIGlmICh0ZXh0KSB7CiAgICAgICAgICAgICAgICB2YXIgc2x1ZyA9
IHRleHQudG9Mb3dlckNhc2UoKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC/DpC9nLCAn
YWUnKS5yZXBsYWNlKC/Dti9nLCAnb2UnKS5yZXBsYWNlKC/DvC9nLCAndWUnKS5yZXBsYWNlKC/D
ny9nLCAnc3MnKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICct
JykucmVwbGFjZSgvXi18LSQvZywgJycpOwogICAgICAgICAgICAgICAgaGVhZGluZ3MucHVzaCh7
CiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dCwKICAgICAgICAgICAgICAgICAgICBsZXZl
bDogcGFyc2VJbnQoaC50YWdOYW1lLmNoYXJBdCgxKSksCiAgICAgICAgICAgICAgICAgICAgc2x1
Zzogc2x1ZwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAg
ICAgICByZXR1cm4gaGVhZGluZ3M7CiAgICB9LAoKICAgIF9yZW5kZXJYcmVmSGVhZGluZ3MoZG9j
LCBxdWVyeSkgewogICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3hy
ZWZMaXN0Jyk7CiAgICAgICAgdmFyIGhlYWRpbmdzID0gdGhpcy5fZXh0cmFjdEhlYWRpbmdzKGRv
Yy5pbmhhbHQpOwogICAgICAgIHZhciBxID0gcXVlcnkudG9Mb3dlckNhc2UoKS50cmltKCk7Cgog
ICAgICAgIC8vIFp1csO8Y2stQnV0dG9uICsgQXJ0aWtlbC1MaW5rIChvaG5lIMOcYmVyc2Nocmlm
dCkKICAgICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPSJ4cmVmLWJhY2siIG9uY2xpY2s9IkRy
aXZlRWRpdG9yLl94cmVmU2VsZWN0ZWREb2M9bnVsbDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChc
J3hyZWZTZWFyY2hJbnB1dFwnKS5wbGFjZWhvbGRlcj1cJ0FydGlrZWwgc3VjaGVuLi4uXCc7RHJp
dmVFZGl0b3IuX3JlbmRlclhyZWZBcnRpY2xlcyhcJ1wnKTsiPuKGkCBadXLDvGNrIHp1ciBBcnRp
a2VsbGlzdGU8L2Rpdj4nOwogICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InhyZWYtaXRlbSIg
b25jbGljaz0iRHJpdmVFZGl0b3IuaW5zZXJ0WHJlZihcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVB
dHRyKGRvYy5pZCkgKyAnXCcsIFwnXCcpIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9Inhy
ZWYtdGl0bGUiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy50aXRlbCkgKyAnPC9kaXY+
JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ4cmVmLWNhdCI+R2VzYW10ZW4gQXJ0aWtlbCB2
ZXJsaW5rZW48L2Rpdj48L2Rpdj4nOwoKICAgICAgICB2YXIgZmlsdGVyZWQgPSBoZWFkaW5ncy5m
aWx0ZXIoZnVuY3Rpb24oaCkgewogICAgICAgICAgICByZXR1cm4gIXEgfHwgaC50ZXh0LnRvTG93
ZXJDYXNlKCkuaW5jbHVkZXMocSk7CiAgICAgICAgfSk7CgogICAgICAgIGZpbHRlcmVkLmZvckVh
Y2goZnVuY3Rpb24oaCkgewogICAgICAgICAgICB2YXIgaW5kZW50ID0gKGgubGV2ZWwgLSAxKSAq
IDEyOwogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJ4cmVmLWl0ZW0gaGVhZGluZyIg
c3R5bGU9InBhZGRpbmctbGVmdDonICsgKDE2ICsgaW5kZW50KSArICdweDsiIG9uY2xpY2s9IkRy
aXZlRWRpdG9yLmluc2VydFhyZWYoXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQp
ICsgJ1wnLCBcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGguc2x1ZykgKyAnXCcpIj4nICsK
ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ4cmVmLXRpdGxlIj4nICsgRHJpdmVQb3J0YWwu
ZXNjYXBlSFRNTChoLnRleHQpICsgJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgfSk7CgogICAgICAg
IGlmIChoZWFkaW5ncy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBz
dHlsZT0icGFkZGluZzoxMnB4IDE2cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1t
dXRlZCk7Ij5LZWluZSDDnGJlcnNjaHJpZnRlbiBpbSBBcnRpa2VsIHZvcmhhbmRlbjwvZGl2Pic7
CiAgICAgICAgfQoKICAgICAgICBsaXN0LmlubmVySFRNTCA9IGh0bWw7CiAgICB9LAoKICAgIGlu
c2VydFhyZWYoZG9jSWQsIGhlYWRpbmdTbHVnKSB7CiAgICAgICAgdmFyIGRvYyA9IERyaXZlRlMu
ZG9jdW1lbnRzLmZpbmQoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZCA9PT0gZG9jSWQ7IH0pOwog
ICAgICAgIGlmICghZG9jKSByZXR1cm47CgogICAgICAgIHRoaXMuY2xvc2VYcmVmRHJvcGRvd24o
KTsKCiAgICAgICAgLy8gRGFzICMgZW50ZmVybmVuIGRhcyBkZW4gRHJvcGRvd24gZ2V0cmlnZ2Vy
dCBoYXQKICAgICAgICB2YXIgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRv
cklucHV0Jyk7CiAgICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKCiAgICAg
ICAgLy8gQ3Vyc29yLVBvc2l0aW9uIHdpZWRlcmhlcnN0ZWxsZW4KICAgICAgICBpZiAodGhpcy5f
eHJlZlJhbmdlKSB7CiAgICAgICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAg
ICAgc2VsLmFkZFJhbmdlKHRoaXMuX3hyZWZSYW5nZSk7CiAgICAgICAgfQoKICAgICAgICAvLyBF
aW4gWmVpY2hlbiB6dXLDvGNrIChkYXMgIykgbMO2c2NoZW4KICAgICAgICBpZiAoc2VsLnJhbmdl
Q291bnQpIHsKICAgICAgICAgICAgdmFyIHJhbmdlID0gc2VsLmdldFJhbmdlQXQoMCk7CiAgICAg
ICAgICAgIHJhbmdlLnNldFN0YXJ0KHJhbmdlLnN0YXJ0Q29udGFpbmVyLCBNYXRoLm1heCgwLCBy
YW5nZS5zdGFydE9mZnNldCAtIDEpKTsKICAgICAgICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMo
KTsKICAgICAgICB9CgogICAgICAgIC8vIENyb3NzbGluay1FbGVtZW50IGVpbmbDvGdlbgogICAg
ICAgIHZhciBhbmNob3IgPSBoZWFkaW5nU2x1ZyA/IGRvY0lkICsgJyMnICsgaGVhZGluZ1NsdWcg
OiBkb2NJZDsKICAgICAgICB2YXIgbGFiZWwgPSBkb2MudGl0ZWw7CiAgICAgICAgaWYgKGhlYWRp
bmdTbHVnKSB7CiAgICAgICAgICAgIHZhciBoZWFkaW5ncyA9IHRoaXMuX2V4dHJhY3RIZWFkaW5n
cyhkb2MuaW5oYWx0KTsKICAgICAgICAgICAgdmFyIG1hdGNoID0gaGVhZGluZ3MuZmluZChmdW5j
dGlvbihoKSB7IHJldHVybiBoLnNsdWcgPT09IGhlYWRpbmdTbHVnOyB9KTsKICAgICAgICAgICAg
aWYgKG1hdGNoKSBsYWJlbCA9IGRvYy50aXRlbCArICcg4oaSICcgKyBtYXRjaC50ZXh0OwogICAg
ICAgIH0KCiAgICAgICAgdmFyIHhyZWZIdG1sID0gJzxzcGFuIGNsYXNzPSJkcml2ZS14cmVmIiBk
YXRhLXhyZWYtdGFyZ2V0PSInICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihhbmNob3IpICsgJyIg
Y29udGVudGVkaXRhYmxlPSJmYWxzZSI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwobGFiZWwp
ICsgJzwvc3Bhbj4mbmJzcDsnOwoKICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0
SFRNTCcsIGZhbHNlLCB4cmVmSHRtbCk7CiAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTsKICAgIH0s
CgogICAgLy8gLS0tIEFjY29yZGlvbiAoQXVma2xhcHBiYXJlciBUZXh0YmVyZWljaCkgLS0tCiAg
ICBfYWNjQ291bnRlcjogMCwKCiAgICBpbnNlcnRBY2NvcmRpb24oKSB7CiAgICAgICAgdmFyIHNl
bCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICB0aGlzLl9hY2NSYW5nZSA9IChzZWwg
JiYgc2VsLnJhbmdlQ291bnQpID8gc2VsLmdldFJhbmdlQXQoMCkuY2xvbmVSYW5nZSgpIDogbnVs
bDsKICAgICAgICB0aGlzLl9hY2NDb3VudGVyID0gMTsKICAgICAgICB2YXIgaW5wdXRTdHlsZSA9
ICd3aWR0aDoxMDAlO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQ6dmFy
KC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7JzsKCiAgICAgICAgdmFyIG1v
ZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgbW9kYWwuc3R5bGUu
Y3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6
MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjEwNTAwO2Rpc3BsYXk6Zmxl
eDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjsnOwogICAgICAgIG1v
ZGFsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGlmIChlLnRhcmdldCA9PT0gbW9kYWwpIG1vZGFs
LnJlbW92ZSgpOyB9OwogICAgICAgIG1vZGFsLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2
IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRk
aW5nOjIwcHggMjRweDttYXgtd2lkdGg6NjAwcHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHgg
MzJweCByZ2JhKDAsMCwwLDAuMyk7bWF4LWhlaWdodDo4NXZoO2Rpc3BsYXk6ZmxleDtmbGV4LWRp
cmVjdGlvbjpjb2x1bW47Ij4nICsKICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOnZh
cigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbToxMHB4O2ZsZXgtc2hyaW5rOjA7Ij5BdWZr
bGFwcGJhcmUgQmVyZWljaGUgZWluZsO8Z2VuPC9oMz4nICsKICAgICAgICAgICAgICAgICc8cCBz
dHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLWJvdHRv
bToxMnB4O2ZsZXgtc2hyaW5rOjA7Ij5KZWRlciBCZXJlaWNoIGhhdCBlaW5lbiBUaXRlbCAoaW1t
ZXIgc2ljaHRiYXIpIHVuZCBlaW5lbiBJbmhhbHQgKHdpcmQgYmVpbSBLbGljayBhdWZnZWtsYXBw
dCkuIER1IGthbm5zdCBtZWhyZXJlIEJlcmVpY2hlIGF1ZiBlaW5tYWwgZWluZsO8Z2VuLjwvcD4n
ICsKICAgICAgICAgICAgICAgICc8ZGl2IGlkPSJhY2NJbnNlcnRJdGVtcyIgc3R5bGU9Im92ZXJm
bG93LXk6YXV0bztmbGV4OjE7bWluLWhlaWdodDowO3BhZGRpbmctcmlnaHQ6NHB4OyI+JyArCiAg
ICAgICAgICAgICAgICAgICAgRHJpdmVFZGl0b3IuX2FjY0l0ZW1IdG1sKDEpICsKICAgICAgICAg
ICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJmbGV4LXNocmlu
azowO21hcmdpbi10b3A6MTBweDtwYWRkaW5nLXRvcDoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlk
IHZhcigtLWJvcmRlci1saWdodCk7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBv
bmNsaWNrPSJEcml2ZUVkaXRvci5fYWRkQWNjSXRlbSgpIiBzdHlsZT0id2lkdGg6MTAwJTtwYWRk
aW5nOjhweDtib3JkZXI6MXB4IGRhc2hlZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6
dmFyKC0tYmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6NHB4O2N1cnNvcjpwb2ludGVyO2NvbG9y
OnZhcigtLXRleHQtaGVhZGluZyk7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxM3B4OyI+KyBX
ZWl0ZXJlbiBCZXJlaWNoIGhpbnp1ZsO8Z2VuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAn
PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4
cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbi10b3A6MTBweDtmbGV4LXNocmluazow
OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0idGhpcy5jbG9zZXN0
KFwnZGl2W3N0eWxlXVwnKS5wYXJlbnRFbGVtZW50LnJlbW92ZSgpIiBzdHlsZT0icGFkZGluZzo4
cHggMTZweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1j
b2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
O2N1cnNvcjpwb2ludGVyOyI+QWJicmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAg
ICAgJzxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuX2NvbmZpcm1BY2NvcmRpb24oKSIgc3R5
bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmU7YmFja2dy
b3VuZDp2YXIoLS10ZXh0LWhlYWRpbmcpO2NvbG9yOndoaXRlO2N1cnNvcjpwb2ludGVyO2ZvbnQt
d2VpZ2h0OjYwMDsiPkVpbmbDvGdlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzwvZGl2
PicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKG1vZGFsKTsKICAgICAgICB0aGlzLl9hY2NNb2RhbCA9IG1vZGFsOwogICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBmaXJzdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY2NUXzEnKTsKICAgICAgICAgICAgaWYgKGZpcnN0KSBmaXJzdC5mb2N1cygp
OwogICAgICAgIH0sIDUwKTsKICAgIH0sCgogICAgX2FjY01vZGFsOiBudWxsLAoKICAgIF9hY2NJ
dGVtSHRtbChudW0pIHsKICAgICAgICB2YXIgaW5wdXRTdHlsZSA9ICd3aWR0aDoxMDAlO3BhZGRp
bmc6NnB4IDEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JvcmRlci1y
YWRpdXM6NHB4O2ZvbnQtc2l6ZToxM3B4O2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9y
OnZhcigtLXRleHQtcHJpbWFyeSk7JzsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImFjYy1p
bnNlcnQtaXRlbSIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDtwYWRkaW5nOjEwcHggMTJweDti
YWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtib3JkZXItcmFkaXVzOjZweDtib3JkZXI6MXB4
IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ij4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9
ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpj
ZW50ZXI7bWFyZ2luLWJvdHRvbTo2cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5
bGU9ImZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRp
bmcpOyI+QmVyZWljaCAnICsgbnVtICsgJzwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAobnVt
ID4gMSA/ICc8YnV0dG9uIG9uY2xpY2s9InRoaXMuY2xvc2VzdChcJy5hY2MtaW5zZXJ0LWl0ZW1c
JykucmVtb3ZlKCkiIHN0eWxlPSJiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFy
KC0tdGV4dC1tdXRlZCk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE0cHg7IiB0aXRsZT0iRW50
ZmVybmVuIj4mdGltZXM7PC9idXR0b24+JyA6ICcnKSArCiAgICAgICAgICAgICc8L2Rpdj4nICsK
ICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWNjVF8nICsgbnVtICsgJyIgcGxh
Y2Vob2xkZXI9IlRpdGVsIChpbW1lciBzaWNodGJhcikuLi4iIHN0eWxlPSInICsgaW5wdXRTdHls
ZSArICdtYXJnaW4tYm90dG9tOjZweDtmb250LXdlaWdodDo2MDA7Ij4nICsKICAgICAgICAgICAg
Jzx0ZXh0YXJlYSBpZD0iYWNjQ18nICsgbnVtICsgJyIgcGxhY2Vob2xkZXI9IkluaGFsdCAod2ly
ZCBhdWZnZWtsYXBwdCkuLi4iIHJvd3M9IjMiIHN0eWxlPSInICsgaW5wdXRTdHlsZSArICdyZXNp
emU6dmVydGljYWw7bGluZS1oZWlnaHQ6MS41OyI+PC90ZXh0YXJlYT4nICsKICAgICAgICAnPC9k
aXY+JzsKICAgIH0sCgogICAgX2FkZEFjY0l0ZW0oKSB7CiAgICAgICAgdGhpcy5fYWNjQ291bnRl
cisrOwogICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWNj
SW5zZXJ0SXRlbXMnKTsKICAgICAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuOwogICAgICAgIHZh
ciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBkaXYuaW5uZXJI
VE1MID0gdGhpcy5fYWNjSXRlbUh0bWwodGhpcy5fYWNjQ291bnRlcik7CiAgICAgICAgY29udGFp
bmVyLmFwcGVuZENoaWxkKGRpdi5maXJzdENoaWxkKTsKICAgICAgICB2YXIgbmV3VCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY2NUXycgKyB0aGlzLl9hY2NDb3VudGVyKTsKICAgICAgICBp
ZiAobmV3VCkgeyBuZXdULmZvY3VzKCk7IG5ld1Quc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjog
J3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7IH0KICAgIH0sCgogICAgX2NvbmZpcm1BY2Nv
cmRpb24oKSB7CiAgICAgICAgdmFyIGl0ZW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn
I2FjY0luc2VydEl0ZW1zIC5hY2MtaW5zZXJ0LWl0ZW0nKTsKICAgICAgICB2YXIgZW50cmllcyA9
IFtdOwogICAgICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXRlbSkgewogICAgICAgICAgICB2
YXIgdElucHV0ID0gaXRlbS5xdWVyeVNlbGVjdG9yKCdpbnB1dFtpZF49ImFjY1RfIl0nKTsKICAg
ICAgICAgICAgdmFyIGNJbnB1dCA9IGl0ZW0ucXVlcnlTZWxlY3RvcigndGV4dGFyZWFbaWRePSJh
Y2NDXyJdJyk7CiAgICAgICAgICAgIHZhciB0ID0gdElucHV0ID8gdElucHV0LnZhbHVlLnRyaW0o
KSA6ICcnOwogICAgICAgICAgICB2YXIgYyA9IGNJbnB1dCA/IGNJbnB1dC52YWx1ZS50cmltKCkg
OiAnJzsKICAgICAgICAgICAgaWYgKHQpIGVudHJpZXMucHVzaCh7IHRpdGxlOiB0LCBjb250ZW50
OiBjIHx8ICcnIH0pOwogICAgICAgIH0pOwogICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0g
MCkgewogICAgICAgICAgICBzaG93VG9hc3QoJ0JpdHRlIG1pbmRlc3RlbnMgZWluZW4gVGl0ZWwg
ZWluZ2ViZW4nLCAnd2FybmluZycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAg
ICAgICBpZiAodGhpcy5fYWNjTW9kYWwpIHsgdGhpcy5fYWNjTW9kYWwucmVtb3ZlKCk7IHRoaXMu
X2FjY01vZGFsID0gbnVsbDsgfQoKICAgICAgICB2YXIgYWNjSHRtbCA9ICcnOwogICAgICAgIGVu
dHJpZXMuZm9yRWFjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBjb250ZW50ID0gRHJp
dmVQb3J0YWwuZXNjYXBlSFRNTChlLmNvbnRlbnQpLnJlcGxhY2UoL1xuL2csICc8YnI+JykgfHwg
JzxwPjwvcD4nOwogICAgICAgICAgICBhY2NIdG1sICs9CiAgICAgICAgICAgICAgICAnPGRpdiBj
bGFzcz0iZHJpdmUtYWNjb3JkaW9uIiBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj4nICsKICAgICAg
ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZHJpdmUtYWNjb3JkaW9uLWhlYWRlciI+JyArCiAg
ICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZHJpdmUtYWNjb3JkaW9uLWFycm93
Ij48aW1nIHNyYz0iY3NzL2ljb25zL0NoZXZyb24ucG5nIiBzdHlsZT0id2lkdGg6MTJweDtoZWln
aHQ6MTJweDsiPjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuPicgKyBE
cml2ZVBvcnRhbC5lc2NhcGVIVE1MKGUudGl0bGUpICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAg
ICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImRyaXZl
LWFjY29yZGlvbi1ib2R5Ij4nICsgY29udGVudCArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAg
ICc8L2Rpdj4nOwogICAgICAgIH0pOwogICAgICAgIGFjY0h0bWwgKz0gJzxicj4nOwoKICAgICAg
ICB2YXIgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7CiAg
ICAgICAgZWRpdG9yLmZvY3VzKCk7CiAgICAgICAgaWYgKHRoaXMuX2FjY1JhbmdlKSB7CiAgICAg
ICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAgIHNlbC5y
ZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgICAgc2VsLmFkZFJhbmdlKHRoaXMuX2FjY1Jhbmdl
KTsKICAgICAgICAgICAgdGhpcy5fYWNjUmFuZ2UgPSBudWxsOwogICAgICAgIH0KICAgICAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCBhY2NIdG1sKTsKICAgICAg
ICB0aGlzLnNhdmVTdGF0ZSgpOwogICAgfSwKCiAgICAvLyAtLS0gRkFRLUJlcmVpY2ggLS0tCiAg
ICBfZmFxQ291bnRlcjogMCwKCiAgICBpbnNlcnRGQVEoKSB7CiAgICAgICAgdGhpcy5fZmFxQ291
bnRlciA9IDE7CiAgICAgICAgLy8gQ3Vyc29yLVBvc2l0aW9uIG1lcmtlbgogICAgICAgIHZhciBz
ZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgdGhpcy5fZmFxUmFuZ2UgPSAoc2Vs
ICYmIHNlbC5yYW5nZUNvdW50KSA/IHNlbC5nZXRSYW5nZUF0KDApLmNsb25lUmFuZ2UoKSA6IG51
bGw7CiAgICAgICAgdmFyIGlucHV0U3R5bGUgPSAnd2lkdGg6MTAwJTtwYWRkaW5nOjZweCAxMHB4
O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtm
b250LXNpemU6MTNweDtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpOyc7CiAgICAgICAgdmFyIG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CiAgICAgICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhlZDt0b3A6
MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41
KTt6LWluZGV4OjEwNTAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1j
b250ZW50OmNlbnRlcjsnOwogICAgICAgIG1vZGFsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGlm
IChlLnRhcmdldCA9PT0gbW9kYWwpIG1vZGFsLnJlbW92ZSgpOyB9OwogICAgICAgIG1vZGFsLmlu
bmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNh
cmQpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjIwcHggMjRweDttYXgtd2lkdGg6NjQwcHg7
d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMyk7bWF4LWhlaWdo
dDo4NXZoO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ij4nICsKICAgICAgICAg
ICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRv
bToxNHB4O2ZsZXgtc2hyaW5rOjA7Ij5GQVEtQmVyZWljaCBlaW5mw7xnZW48L2gzPicgKwogICAg
ICAgICAgICAgICAgJzxkaXYgaWQ9ImZhcUluc2VydEl0ZW1zIiBzdHlsZT0ib3ZlcmZsb3cteTph
dXRvO2ZsZXg6MTttaW4taGVpZ2h0OjA7cGFkZGluZy1yaWdodDo0cHg7Ij4nICsKICAgICAgICAg
ICAgICAgICAgICBEcml2ZUVkaXRvci5fZmFxSXRlbUh0bWwoMSkgKwogICAgICAgICAgICAgICAg
JzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZsZXgtc2hyaW5rOjA7bWFy
Z2luLXRvcDoxMHB4O3BhZGRpbmctdG9wOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0t
Ym9yZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9
IkRyaXZlRWRpdG9yLl9hZGRGYXFJdGVtKCkiIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6OHB4
O2JvcmRlcjoxcHggZGFzaGVkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1i
Zy1jYXJkLWFsdCk7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0t
dGV4dC1oZWFkaW5nKTtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEzcHg7Ij4rIFdlaXRlcmUg
RnJhZ2UgaGluenVmw7xnZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsK
ICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5
LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLXRvcDoxMHB4O2ZsZXgtc2hyaW5rOjA7Ij4nICsKICAg
ICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJ0aGlzLmNsb3Nlc3QoXCdkaXZbc3R5
bGVdXCcpLnBhcmVudEVsZW1lbnQucmVtb3ZlKCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2Jv
cmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtiYWNr
Z3JvdW5kOnZhcigtLWJnLWNhcmQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Y3Vyc29yOnBv
aW50ZXI7Ij5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRv
biBvbmNsaWNrPSJEcml2ZUVkaXRvci5fY29uZmlybUZBUSgpIiBzdHlsZT0icGFkZGluZzo4cHgg
MTZweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnZhcigtLXRleHQt
aGVhZGluZyk7Y29sb3I6d2hpdGU7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAwOyI+RWlu
ZsO8Z2VuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAg
ICc8L2Rpdj4nOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwpOwogICAg
ICAgIHRoaXMuX2ZhcU1vZGFsID0gbW9kYWw7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKICAgICAgICAgICAgdmFyIGZpcnN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhcVFf
MScpOwogICAgICAgICAgICBpZiAoZmlyc3QpIGZpcnN0LmZvY3VzKCk7CiAgICAgICAgfSwgNTAp
OwogICAgfSwKCiAgICBfZmFxTW9kYWw6IG51bGwsCgogICAgX2ZhcUl0ZW1IdG1sKG51bSkgewog
ICAgICAgIHZhciBpbnB1dFN0eWxlID0gJ3dpZHRoOjEwMCU7cGFkZGluZzo2cHggMTBweDtib3Jk
ZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1z
aXplOjEzcHg7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Y29sb3I6dmFyKC0tdGV4dC1wcmlt
YXJ5KTsnOwogICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZmFxLWluc2VydC1pdGVtIiBzdHls
ZT0ibWFyZ2luLWJvdHRvbToxMnB4O3BhZGRpbmc6MTBweCAxMnB4O2JhY2tncm91bmQ6dmFyKC0t
YmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9y
ZGVyLWxpZ2h0KTsiPicgKwogICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2p1
c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90
dG9tOjZweDsiPicgKwogICAgICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEx
cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Ij5GcmFnZSAnICsg
bnVtICsgJzwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAobnVtID4gMSA/ICc8YnV0dG9uIG9u
Y2xpY2s9InRoaXMuY2xvc2VzdChcJy5mYXEtaW5zZXJ0LWl0ZW1cJykucmVtb3ZlKCkiIHN0eWxl
PSJiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Y3Vy
c29yOnBvaW50ZXI7Zm9udC1zaXplOjE0cHg7IiB0aXRsZT0iRW50ZmVybmVuIj4mdGltZXM7PC9i
dXR0b24+JyA6ICcnKSArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxpbnB1
dCB0eXBlPSJ0ZXh0IiBpZD0iZmFxUV8nICsgbnVtICsgJyIgcGxhY2Vob2xkZXI9IkZyYWdlIGVp
bmdlYmVuLi4uIiBzdHlsZT0iJyArIGlucHV0U3R5bGUgKyAnbWFyZ2luLWJvdHRvbTo2cHg7Zm9u
dC13ZWlnaHQ6NjAwOyI+JyArCiAgICAgICAgICAgICc8dGV4dGFyZWEgaWQ9ImZhcUFfJyArIG51
bSArICciIHBsYWNlaG9sZGVyPSJBbnR3b3J0IGVpbmdlYmVuLi4uIiByb3dzPSIzIiBzdHlsZT0i
JyArIGlucHV0U3R5bGUgKyAncmVzaXplOnZlcnRpY2FsO2xpbmUtaGVpZ2h0OjEuNTsiPjwvdGV4
dGFyZWE+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB9LAoKICAgIF9hZGRGYXFJdGVtKCkgewog
ICAgICAgIHRoaXMuX2ZhcUNvdW50ZXIrKzsKICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhcUluc2VydEl0ZW1zJyk7CiAgICAgICAgaWYgKCFjb250YWlu
ZXIpIHJldHVybjsKICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CiAgICAgICAgZGl2LmlubmVySFRNTCA9IHRoaXMuX2ZhcUl0ZW1IdG1sKHRoaXMuX2ZhcUNv
dW50ZXIpOwogICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkaXYuZmlyc3RDaGlsZCk7CiAg
ICAgICAgdmFyIG5ld1EgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmFxUV8nICsgdGhpcy5f
ZmFxQ291bnRlcik7CiAgICAgICAgaWYgKG5ld1EpIHsgbmV3US5mb2N1cygpOyBuZXdRLnNjcm9s
bEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ25lYXJlc3QnIH0pOyB9CiAg
ICB9LAoKICAgIF9jb25maXJtRkFRKCkgewogICAgICAgIHZhciBpdGVtcyA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJyNmYXFJbnNlcnRJdGVtcyAuZmFxLWluc2VydC1pdGVtJyk7CiAgICAg
ICAgdmFyIHBhaXJzID0gW107CiAgICAgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7
CiAgICAgICAgICAgIHZhciBxSW5wdXQgPSBpdGVtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W2lkXj0i
ZmFxUV8iXScpOwogICAgICAgICAgICB2YXIgYUlucHV0ID0gaXRlbS5xdWVyeVNlbGVjdG9yKCd0
ZXh0YXJlYVtpZF49ImZhcUFfIl0nKTsKICAgICAgICAgICAgdmFyIHEgPSBxSW5wdXQgPyBxSW5w
dXQudmFsdWUudHJpbSgpIDogJyc7CiAgICAgICAgICAgIHZhciBhID0gYUlucHV0ID8gYUlucHV0
LnZhbHVlLnRyaW0oKSA6ICcnOwogICAgICAgICAgICBpZiAocSkgcGFpcnMucHVzaCh7IHE6IHEs
IGE6IGEgfHwgJ0FudHdvcnQgYXVzc3RlaGVuZC4nIH0pOwogICAgICAgIH0pOwogICAgICAgIGlm
IChwYWlycy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgc2hvd1RvYXN0KCdCaXR0ZSBtaW5k
ZXN0ZW5zIGVpbmUgRnJhZ2UgZWluZ2ViZW4nLCAnd2FybmluZycpOwogICAgICAgICAgICByZXR1
cm47CiAgICAgICAgfQoKICAgICAgICBpZiAodGhpcy5fZmFxTW9kYWwpIHsgdGhpcy5fZmFxTW9k
YWwucmVtb3ZlKCk7IHRoaXMuX2ZhcU1vZGFsID0gbnVsbDsgfQoKICAgICAgICAvLyBTcHJ1bmdt
YXJrZTogZmFxLXthcnRpa2VsdGl0ZWwtc2x1Z30KICAgICAgICB2YXIgc2x1ZyA9ICdmYXEnOwog
ICAgICAgIGlmICh0aGlzLmN1cnJlbnREb2MgJiYgdGhpcy5jdXJyZW50RG9jLnRpdGVsKSB7CiAg
ICAgICAgICAgIHNsdWcgPSAnZmFxLScgKyB0aGlzLmN1cnJlbnREb2MudGl0ZWwudG9Mb3dlckNh
c2UoKQogICAgICAgICAgICAgICAgLnJlcGxhY2UoL8OkL2csJ2FlJykucmVwbGFjZSgvw7YvZywn
b2UnKS5yZXBsYWNlKC/DvC9nLCd1ZScpLnJlcGxhY2UoL8OfL2csJ3NzJykKICAgICAgICAgICAg
ICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csJy0nKS5yZXBsYWNlKC9eLXwtJC9nLCcnKTsKICAg
ICAgICB9CgogICAgICAgIHZhciBmYXFIdG1sID0gJzxkaXYgY2xhc3M9ImRyaXZlLWZhcSIgaWQ9
IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKHNsdWcpICsgJyIgY29udGVudGVkaXRhYmxlPSJm
YWxzZSI+JzsKICAgICAgICBmYXFIdG1sICs9ICc8ZGl2IGNsYXNzPSJkcml2ZS1mYXEtaGVhZGVy
Ij48aW1nIHNyYz0iY3NzL2ljb25zL2ZhcS5wbmciIHN0eWxlPSJ3aWR0aDoyMHB4O2hlaWdodDoy
MHB4O2ZpbHRlcjppbnZlcnQoMSkgYnJpZ2h0bmVzcygyKTsiPiBGQVE8L2Rpdj4nOwogICAgICAg
IGZhcUh0bWwgKz0gJzxkaXYgY2xhc3M9ImRyaXZlLWZhcS1ib2R5Ij4nOwogICAgICAgIHBhaXJz
LmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgICAgICBmYXFIdG1sICs9ICc8ZGl2IGNsYXNz
PSJkcml2ZS1mYXEtaXRlbSI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZHJpdmUt
ZmFxLXF1ZXN0aW9uIj48c3BhbiBjbGFzcz0iZHJpdmUtZmFxLWFycm93Ij48aW1nIHNyYz0iY3Nz
L2ljb25zL0NoZXZyb24ucG5nIiBzdHlsZT0id2lkdGg6MTBweDtoZWlnaHQ6MTBweDsiPjwvc3Bh
bj48c3Bhbj4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChwLnEpICsgJzwvc3Bhbj48L2Rpdj4n
ICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkcml2ZS1mYXEtYW5zd2VyIj4nICsgRHJp
dmVQb3J0YWwuZXNjYXBlSFRNTChwLmEpLnJlcGxhY2UoL1xuL2csICc8YnI+JykgKyAnPC9kaXY+
JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pOwogICAgICAgIGZhcUh0bWwgKz0g
JzwvZGl2PjwvZGl2Pjxicj4nOwoKICAgICAgICB2YXIgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7CiAgICAgICAgZWRpdG9yLmZvY3VzKCk7CiAgICAgICAg
Ly8gQ3Vyc29yLVBvc2l0aW9uIHdpZWRlcmhlcnN0ZWxsZW4KICAgICAgICBpZiAodGhpcy5fZmFx
UmFuZ2UpIHsKICAgICAgICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAg
ICAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICBzZWwuYWRkUmFuZ2Uo
dGhpcy5fZmFxUmFuZ2UpOwogICAgICAgICAgICB0aGlzLl9mYXFSYW5nZSA9IG51bGw7CiAgICAg
ICAgfQogICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2UsIGZh
cUh0bWwpOwogICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7CiAgICB9LAoKICAgIC8vIC0tLSBUYWJl
bGxlIGVpbmbDvGdlbiAtLS0KICAgIGluc2VydFRhYmxlKCkgewogICAgICAgIHZhciBzZWwgPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgdGhpcy5fdGJsUmFuZ2UgPSAoc2VsICYmIHNl
bC5yYW5nZUNvdW50KSA/IHNlbC5nZXRSYW5nZUF0KDApLmNsb25lUmFuZ2UoKSA6IG51bGw7CiAg
ICAgICAgdmFyIGxhYmVsU3R5bGUgPSAnZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2Nv
bG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206M3B4
Oyc7CiAgICAgICAgdmFyIGlucHV0U3R5bGUgPSAnd2lkdGg6MTAwJTtwYWRkaW5nOjZweCAxMHB4
O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtm
b250LXNpemU6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpOyc7CiAgICAgICAgdmFyIGNiU3R5bGUgPSAnZGlzcGxheTpmbGV4O2FsaWduLWl0
ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFy
eSk7Y3Vyc29yOnBvaW50ZXI7JzsKCiAgICAgICAgdmFyIG1vZGFsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CiAgICAgICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpm
aXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnJnYmEo
MCwwLDAsMC41KTt6LWluZGV4OjEwNTAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7
anVzdGlmeS1jb250ZW50OmNlbnRlcjsnOwogICAgICAgIG1vZGFsLm9uY2xpY2sgPSBmdW5jdGlv
bihlKSB7IGlmIChlLnRhcmdldCA9PT0gbW9kYWwpIG1vZGFsLnJlbW92ZSgpOyB9OwogICAgICAg
IG1vZGFsLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZh
cigtLWJnLWNhcmQpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjIwcHggMjRweDttYXgtd2lk
dGg6NDQwcHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMyk7
Ij4nICsKICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGlu
Zyk7bWFyZ2luLWJvdHRvbToxNnB4OyI+VGFiZWxsZSBlaW5mw7xnZW48L2gzPicgKwoKICAgICAg
ICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5z
OjFmciAxZnI7Z2FwOjEycHg7bWFyZ2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgICAgICAg
ICAgICAgJzxkaXY+PGxhYmVsIHN0eWxlPSInICsgbGFiZWxTdHlsZSArICciPlNwYWx0ZW48L2xh
YmVsPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9
InRibENvbHMiIHZhbHVlPSIzIiBtaW49IjEiIG1heD0iMjAiIHN0eWxlPSInICsgaW5wdXRTdHls
ZSArICciPjwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2PjxsYWJlbCBzdHlsZT0i
JyArIGxhYmVsU3R5bGUgKyAnIj5aZWlsZW48L2xhYmVsPicgKwogICAgICAgICAgICAgICAgICAg
ICAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InRibFJvd3MiIHZhbHVlPSI0IiBtaW49IjEi
IG1heD0iNTAiIHN0eWxlPSInICsgaW5wdXRTdHlsZSArICciPjwvZGl2PicgKwogICAgICAgICAg
ICAgICAgJzwvZGl2PicgKwoKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90
dG9tOjE0cHg7cGFkZGluZzoxMnB4O2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO2JvcmRl
ci1yYWRpdXM6NnB4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9IicgKyBs
YWJlbFN0eWxlICsgJ21hcmdpbi1ib3R0b206OHB4OyI+w5xiZXJzY2hyaWZ0ZW48L2Rpdj4nICsK
ICAgICAgICAgICAgICAgICAgICAnPGxhYmVsIHN0eWxlPSInICsgY2JTdHlsZSArICdtYXJnaW4t
Ym90dG9tOjZweDsiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InRibENvbEhlYWRlcnMiIGNo
ZWNrZWQ+IFNwYWx0ZW7DvGJlcnNjaHJpZnRlbiAoZXJzdGUgWmVpbGUgZmV0dCk8L2xhYmVsPicg
KwogICAgICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9IicgKyBjYlN0eWxlICsgJyI+PGlu
cHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idGJsUm93SGVhZGVycyI+IFplaWxlbsO8YmVyc2Nocmlm
dGVuIChlcnN0ZSBTcGFsdGUgZmV0dCk8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzwvZGl2
PicgKwoKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjE2cHg7cGFk
ZGluZzoxMnB4O2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO2JvcmRlci1yYWRpdXM6NnB4
OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0iJyArIGNiU3R5bGUgKyAn
Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ0YmxTb3J0YWJsZSI+IFNvcnRpZXJiYXIgKEts
aWNrIGF1ZiBTcGFsdGVuw7xiZXJzY2hyaWZ0IHNvcnRpZXJ0KTwvbGFiZWw+JyArCiAgICAgICAg
ICAgICAgICAnPC9kaXY+JyArCgogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6
ZmxleDtnYXA6OHB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDsiPicgKwogICAgICAgICAgICAg
ICAgICAgICc8YnV0dG9uIG9uY2xpY2s9InRoaXMuY2xvc2VzdChcJ2RpdltzdHlsZV1cJykucGFy
ZW50RWxlbWVudC5yZW1vdmUoKSIgc3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9yZGVyLXJhZGl1
czo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFy
KC0tYmctY2FyZCk7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtjdXJzb3I6cG9pbnRlcjsiPkFi
YnJlY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9
IkRyaXZlRWRpdG9yLl9jb25maXJtVGFibGUoKSIgc3R5bGU9InBhZGRpbmc6OHB4IDE2cHg7Ym9y
ZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDp2YXIoLS10ZXh0LWhlYWRpbmcp
O2NvbG9yOndoaXRlO2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjYwMDsiPkVpbmbDvGdlbjwv
YnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+
JzsKICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgICAgICB0aGlz
Ll90YmxNb2RhbCA9IG1vZGFsOwogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0YmxDb2xzJykuZm9jdXMoKTsgfSwgNTApOwogICAgfSwKCiAg
ICBfdGJsTW9kYWw6IG51bGwsCgogICAgX2NvbmZpcm1UYWJsZSgpIHsKICAgICAgICB2YXIgY29s
cyA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YmxDb2xzJykudmFsdWUpIHx8
IDM7CiAgICAgICAgdmFyIHJvd3MgPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGJsUm93cycpLnZhbHVlKSB8fCA0OwogICAgICAgIHZhciBjb2xIZWFkZXJzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RibENvbEhlYWRlcnMnKS5jaGVja2VkOwogICAgICAgIHZhciByb3dI
ZWFkZXJzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RibFJvd0hlYWRlcnMnKS5jaGVja2Vk
OwogICAgICAgIHZhciBzb3J0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YmxTb3J0
YWJsZScpLmNoZWNrZWQ7CgogICAgICAgIGNvbHMgPSBNYXRoLm1heCgxLCBNYXRoLm1pbigyMCwg
Y29scykpOwogICAgICAgIHJvd3MgPSBNYXRoLm1heCgxLCBNYXRoLm1pbig1MCwgcm93cykpOwoK
ICAgICAgICBpZiAodGhpcy5fdGJsTW9kYWwpIHsgdGhpcy5fdGJsTW9kYWwucmVtb3ZlKCk7IHRo
aXMuX3RibE1vZGFsID0gbnVsbDsgfQoKICAgICAgICB2YXIgc29ydENsYXNzID0gc29ydGFibGUg
PyAnIHNvcnRhYmxlJyA6ICcnOwogICAgICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9ImRyaXZl
LXRhYmxlLXdyYXAiIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiPjx0YWJsZSBjbGFzcz0iZHJpdmUt
dGFibGUiJyArIChzb3J0YWJsZSA/ICcgZGF0YS1zb3J0YWJsZT0idHJ1ZSInIDogJycpICsgJz4n
OwoKICAgICAgICAvLyBTcGFsdGVuLUhlYWRlcgogICAgICAgIGlmIChjb2xIZWFkZXJzKSB7CiAg
ICAgICAgICAgIGh0bWwgKz0gJzx0aGVhZD48dHI+JzsKICAgICAgICAgICAgZm9yICh2YXIgYyA9
IDA7IGMgPCBjb2xzOyBjKyspIHsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzx0aCBjbGFzcz0i
JyArIHNvcnRDbGFzcyArICciIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+U3BhbHRlICcgKyAoYyAr
IDEpICsgJzwvdGg+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBodG1sICs9ICc8L3RyPjwv
dGhlYWQ+JzsKICAgICAgICB9CgogICAgICAgIGh0bWwgKz0gJzx0Ym9keT4nOwogICAgICAgIHZh
ciBkYXRhUm93cyA9IGNvbEhlYWRlcnMgPyByb3dzIC0gMSA6IHJvd3M7CiAgICAgICAgZm9yICh2
YXIgciA9IDA7IHIgPCBkYXRhUm93czsgcisrKSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzx0cj4n
OwogICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNvbHM7IGMrKykgewogICAgICAgICAg
ICAgICAgaWYgKGMgPT09IDAgJiYgcm93SGVhZGVycykgewogICAgICAgICAgICAgICAgICAgIGh0
bWwgKz0gJzx0ZCBjbGFzcz0icm93LWhlYWRlciIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5aZWls
ZSAnICsgKHIgKyAxKSArICc8L3RkPic7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgIGh0bWwgKz0gJzx0ZCBjb250ZW50ZWRpdGFibGU9InRydWUiPjwvdGQ+JzsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBodG1sICs9ICc8L3Ry
Pic7CiAgICAgICAgfQogICAgICAgIGh0bWwgKz0gJzwvdGJvZHk+PC90YWJsZT48L2Rpdj48YnI+
JzsKCiAgICAgICAgdmFyIGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJ
bnB1dCcpOwogICAgICAgIGVkaXRvci5mb2N1cygpOwogICAgICAgIGlmICh0aGlzLl90YmxSYW5n
ZSkgewogICAgICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAg
ICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgIHNlbC5hZGRSYW5nZSh0aGlz
Ll90YmxSYW5nZSk7CiAgICAgICAgICAgIHRoaXMuX3RibFJhbmdlID0gbnVsbDsKICAgICAgICB9
CiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwgaHRtbCk7
CiAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTsKICAgIH0sCgogICAgLy8gLS0tIFRyZW5ubGluaWUg
KyBJbmZvYm94IC0tLQogICAgLy8gLS0tIFJBVy1Nb2R1cyAoSFRNTC1RdWVsbHRleHQpIC0tLQog
ICAgX3Jhd01vZGU6IGZhbHNlLAoKICAgIHRvZ2dsZVJhdygpIHsKICAgICAgICB2YXIgZWRpdG9y
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7CiAgICAgICAgdmFyIGJ0
biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5SYXdNb2RlJyk7CiAgICAgICAgaWYgKCFl
ZGl0b3IpIHJldHVybjsKCiAgICAgICAgaWYgKHRoaXMuX3Jhd01vZGUpIHsKICAgICAgICAgICAg
Ly8gUkFXIOKGkiBXWVNJV1lHOiB0ZXh0YXJlYS1JbmhhbHQgenVydWVjayBpbiBkZW4gRWRpdG9y
CiAgICAgICAgICAgIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0
b3JSYXdUZXh0YXJlYScpOwogICAgICAgICAgICBpZiAodGV4dGFyZWEpIHsKICAgICAgICAgICAg
ICAgIGVkaXRvci5pbm5lckhUTUwgPSB0ZXh0YXJlYS52YWx1ZTsKICAgICAgICAgICAgICAgIHRl
eHRhcmVhLnJlbW92ZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVkaXRvci5zdHlsZS5k
aXNwbGF5ID0gJyc7CiAgICAgICAgICAgIGVkaXRvci5jb250ZW50RWRpdGFibGUgPSAndHJ1ZSc7
CiAgICAgICAgICAgIGJ0bi5zdHlsZS5vcGFjaXR5ID0gJzAuNic7CiAgICAgICAgICAgIGJ0bi5z
dHlsZS5iYWNrZ3JvdW5kID0gJyc7CiAgICAgICAgICAgIHRoaXMuX3Jhd01vZGUgPSBmYWxzZTsK
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBXWVNJV1lHIOKGkiBSQVc6IEVkaXRvci1I
VE1MIGluIFRleHRhcmVhIGFuemVpZ2VuCiAgICAgICAgICAgIHZhciByYXdIdG1sID0gZWRpdG9y
LmlubmVySFRNTDsKICAgICAgICAgICAgZWRpdG9yLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAg
ICAgICAgICAgIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVh
Jyk7CiAgICAgICAgICAgIHRleHRhcmVhLmlkID0gJ2VkaXRvclJhd1RleHRhcmVhJzsKICAgICAg
ICAgICAgdGV4dGFyZWEudmFsdWUgPSByYXdIdG1sOwogICAgICAgICAgICB0ZXh0YXJlYS5zdHls
ZS5jc3NUZXh0ID0gJ3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDozMDBweDtwYWRk
aW5nOjEycHg7Ym9yZGVyOm5vbmU7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4
O2xpbmUtaGVpZ2h0OjEuNjtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10
ZXh0LXByaW1hcnkpO3Jlc2l6ZTpub25lO2ZsZXg6MTsnOwogICAgICAgICAgICBlZGl0b3IucGFy
ZW50Tm9kZS5pbnNlcnRCZWZvcmUodGV4dGFyZWEsIGVkaXRvci5uZXh0U2libGluZyk7CiAgICAg
ICAgICAgIGJ0bi5zdHlsZS5vcGFjaXR5ID0gJzEnOwogICAgICAgICAgICBidG4uc3R5bGUuYmFj
a2dyb3VuZCA9ICd2YXIoLS10ZXh0LWhlYWRpbmcpJzsKICAgICAgICAgICAgYnRuLnN0eWxlLmNv
bG9yID0gJ3doaXRlJzsKICAgICAgICAgICAgdGhpcy5fcmF3TW9kZSA9IHRydWU7CiAgICAgICAg
fQogICAgfSwKCiAgICBpbnNlcnREaXZpZGVyKCkgewogICAgICAgIHZhciBlZGl0b3IgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAgICAgICBlZGl0b3IuZm9jdXMo
KTsKICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCAnPGhy
IGNsYXNzPSJkcml2ZS1kaXZpZGVyIj48YnI+Jyk7CiAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTsK
ICAgIH0sCgogICAgaW5zZXJ0SW5mb2JveCgpIHsKICAgICAgICB2YXIgc2VsID0gd2luZG93Lmdl
dFNlbGVjdGlvbigpOwogICAgICAgIHRoaXMuX2luZm9ib3hSYW5nZSA9IChzZWwgJiYgc2VsLnJh
bmdlQ291bnQpID8gc2VsLmdldFJhbmdlQXQoMCkuY2xvbmVSYW5nZSgpIDogbnVsbDsKCiAgICAg
ICAgdmFyIGJ0blN0eWxlID0gJ2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MXB4IHNvbGlkIHZhcigt
LWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czozcHg7cGFkZGluZzozcHggOHB4O2N1cnNvcjpw
b2ludGVyO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7bWluLXdpZHRo
OjI4cHg7JzsKICAgICAgICB2YXIgYnRuU3R5bGVCb2xkID0gYnRuU3R5bGUgKyAnZm9udC13ZWln
aHQ6NzAwOyc7CiAgICAgICAgdmFyIGJ0blN0eWxlSXRhbGljID0gYnRuU3R5bGUgKyAnZm9udC1z
dHlsZTppdGFsaWM7JzsKICAgICAgICB2YXIgYnRuU3R5bGVVbmRlcmxpbmUgPSBidG5TdHlsZSAr
ICd0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyc7CiAgICAgICAgdmFyIHNlbGVjdFN0eWxlID0g
J2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVy
LWNvbG9yKTtib3JkZXItcmFkaXVzOjNweDtwYWRkaW5nOjNweCA0cHg7Zm9udC1zaXplOjExcHg7
Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtjdXJzb3I6cG9pbnRlcjsnOwoKICAgICAgICB2YXIg
bW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBtb2RhbC5zdHls
ZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdo
dDoxMDAlO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6MTA1MDA7ZGlzcGxheTpm
bGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyc7CiAgICAgICAg
bW9kYWwub25jbGljayA9IGZ1bmN0aW9uKGUpIHsgaWYgKGUudGFyZ2V0ID09PSBtb2RhbCkgbW9k
YWwucmVtb3ZlKCk7IH07CiAgICAgICAgbW9kYWwuaW5uZXJIVE1MID0KICAgICAgICAgICAgJzxk
aXYgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O3Bh
ZGRpbmc6MjBweCAyNHB4O21heC13aWR0aDo1MjBweDt3aWR0aDo5NCU7Ym94LXNoYWRvdzowIDhw
eCAzMnB4IHJnYmEoMCwwLDAsMC4zKTsiPicgKwogICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0i
Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4tYm90dG9tOjE0cHg7Ij5JbmZvYmxvY2sg
ZWluZsO8Z2VuPC9oMz4nICsKCiAgICAgICAgICAgICAgICAnPGxhYmVsIHN0eWxlPSJmb250LXNp
emU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2Rpc3Bs
YXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo0cHg7Ij7DnGJlcnNjaHJpZnQ8L2xhYmVsPicgKwogICAg
ICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5mb2JveFRpdGxlIiB2YWx1ZT0i
SGlud2VpcyIgcGxhY2Vob2xkZXI9InouQi4gSGlud2VpcywgV2ljaHRpZywgVGlwcC4uLiIgJyAr
CiAgICAgICAgICAgICAgICAnc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo4cHggMTBweDtib3Jk
ZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1z
aXplOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1iZy1pbnB1dCk7Y29sb3I6dmFyKC0tdGV4dC1wcmlt
YXJ5KTttYXJnaW4tYm90dG9tOjE0cHg7Ij4nICsKCiAgICAgICAgICAgICAgICAnPGxhYmVsIHN0
eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1zZWNv
bmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo0cHg7Ij5JbmhhbHQ8L2xhYmVsPicg
KwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9y
ZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luLWJvdHRv
bToxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgaWQ9ImluZm9ib3hUb29sYmFy
IiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo0cHg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6
Y2VudGVyO3BhZGRpbmc6NnB4IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1ib3Jk
ZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQsI2Y2ZjhmYSk7Ij4nICsKICAg
ICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuX2luZm9i
b3hDbWQoXCd1bmRvXCcpIiB0aXRsZT0iUsO8Y2tnw6RuZ2lnIiBzdHlsZT0iJyArIGJ0blN0eWxl
ICsgJyI+JiM4NjMwOzwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRv
biBvbmNsaWNrPSJEcml2ZUVkaXRvci5faW5mb2JveENtZChcJ3JlZG9cJykiIHRpdGxlPSJXaWVk
ZXJob2xlbiIgc3R5bGU9IicgKyBidG5TdHlsZSArICciPiYjODYzMTs8L2J1dHRvbj4nICsKICAg
ICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjE4cHg7
YmFja2dyb3VuZDp2YXIoLS1ib3JkZXItY29sb3IpO21hcmdpbjowIDJweDsiPjwvc3Bhbj4nICsK
ICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuX2lu
Zm9ib3hDbWQoXCdib2xkXCcpIiB0aXRsZT0iRmV0dCIgc3R5bGU9IicgKyBidG5TdHlsZUJvbGQg
KyAnIj5CPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIG9uY2xp
Y2s9IkRyaXZlRWRpdG9yLl9pbmZvYm94Q21kKFwnaXRhbGljXCcpIiB0aXRsZT0iS3Vyc2l2IiBz
dHlsZT0iJyArIGJ0blN0eWxlSXRhbGljICsgJyI+STwvYnV0dG9uPicgKwogICAgICAgICAgICAg
ICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5faW5mb2JveENtZChcJ3Vu
ZGVybGluZVwnKSIgdGl0bGU9IlVudGVyc3RyaWNoZW4iIHN0eWxlPSInICsgYnRuU3R5bGVVbmRl
cmxpbmUgKyAnIj5VPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBz
dHlsZT0id2lkdGg6MXB4O2hlaWdodDoxOHB4O2JhY2tncm91bmQ6dmFyKC0tYm9yZGVyLWNvbG9y
KTttYXJnaW46MCAycHg7Ij48L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0
dG9uIG9uY2xpY2s9IkRyaXZlRWRpdG9yLl9pbmZvYm94Q21kKFwnaW5zZXJ0VW5vcmRlcmVkTGlz
dFwnKSIgdGl0bGU9IkF1ZnrDpGhsdW5nIiBzdHlsZT0iJyArIGJ0blN0eWxlICsgJyI+JiM4MjI2
OyBMaXN0ZTwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBvbmNs
aWNrPSJEcml2ZUVkaXRvci5faW5mb2JveENtZChcJ2luc2VydE9yZGVyZWRMaXN0XCcpIiB0aXRs
ZT0iTnVtbWVyaWVydW5nIiBzdHlsZT0iJyArIGJ0blN0eWxlICsgJyI+MS4gTGlzdGU8L2J1dHRv
bj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxlPSJ3aWR0aDoxcHg7aGVp
Z2h0OjE4cHg7YmFja2dyb3VuZDp2YXIoLS1ib3JkZXItY29sb3IpO21hcmdpbjowIDJweDsiPjwv
c3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxzZWxlY3Qgb25jaGFuZ2U9IkRyaXZl
RWRpdG9yLl9pbmZvYm94Q21kKFwnZm9udFNpemVcJyx0aGlzLnZhbHVlKTt0aGlzLnNlbGVjdGVk
SW5kZXg9MDsiIHRpdGxlPSJTY2hyaWZ0Z3LDtsOfZSIgc3R5bGU9IicgKyBzZWxlY3RTdHlsZSAr
ICciPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9IiIgZGlz
YWJsZWQgc2VsZWN0ZWQ+R3LDtsOfZTwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzxvcHRpb24gdmFsdWU9IjEiPktsZWluPC9vcHRpb24+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iMyI+Tm9ybWFsPC9vcHRpb24+JyArCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iNCI+R3Jvw588L29wdGlvbj4n
ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSI1Ij5TZWhyIGdy
b8OfPC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L3NlbGVjdD4nICsKICAg
ICAgICAgICAgICAgICAgICAgICAgJzxzZWxlY3Qgb25jaGFuZ2U9IkRyaXZlRWRpdG9yLl9pbmZv
Ym94Q21kKFwnZm9yZUNvbG9yXCcsdGhpcy52YWx1ZSk7dGhpcy5zZWxlY3RlZEluZGV4PTA7IiB0
aXRsZT0iVGV4dGZhcmJlIiBzdHlsZT0iJyArIHNlbGVjdFN0eWxlICsgJyI+JyArCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIiBkaXNhYmxlZCBzZWxlY3RlZD5G
YXJiZTwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFs
dWU9IiMwMDAwMDAiIHN0eWxlPSJjb2xvcjojMDAwMDAwOyI+U2Nod2Fyejwvb3B0aW9uPicgKwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9IiMyRTRBNjIiIHN0eWxl
PSJjb2xvcjojMkU0QTYyOyI+UG9saXplaS1CbGF1PC9vcHRpb24+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIzNhN2FhMyIgc3R5bGU9ImNvbG9yOiMzYTdh
YTM7Ij5CbGF1PC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPG9wdGlv
biB2YWx1ZT0iIzhiM2E2MiIgc3R5bGU9ImNvbG9yOiM4YjNhNjI7Ij5Cb3JkZWF1eDwvb3B0aW9u
PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9IiNmZjAwMDAi
IHN0eWxlPSJjb2xvcjojZmYwMDAwOyI+Um90PC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAg
ICAgICAgICc8L3NlbGVjdD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxl
PSJ3aWR0aDoxcHg7aGVpZ2h0OjE4cHg7YmFja2dyb3VuZDp2YXIoLS1ib3JkZXItY29sb3IpO21h
cmdpbjowIDJweDsiPjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24g
b25jbGljaz0iRHJpdmVFZGl0b3IuX2luZm9ib3hDbWQoXCdpbnNlcnRIb3Jpem9udGFsUnVsZVwn
KSIgdGl0bGU9IlRyZW5ubGluaWUiIHN0eWxlPSInICsgYnRuU3R5bGUgKyAnIj7igJUgTGluaWU8
L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAg
ICAgICAgJzxkaXYgaWQ9ImluZm9ib3hDb250ZW50IiBjb250ZW50ZWRpdGFibGU9InRydWUiICcg
KwogICAgICAgICAgICAgICAgICAgICdzdHlsZT0icGFkZGluZzoxMHB4IDEycHg7bWluLWhlaWdo
dDoxMDBweDttYXgtaGVpZ2h0OjI1MHB4O292ZXJmbG93LXk6YXV0bztmb250LXNpemU6MTRweDts
aW5lLWhlaWdodDoxLjY7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigt
LWJnLWlucHV0KTtvdXRsaW5lOm5vbmU7Ij48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rp
dj4nICsKCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7
anVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0
b24gb25jbGljaz0idGhpcy5jbG9zZXN0KFwnZGl2W3N0eWxlXVwnKS5wYXJlbnRFbGVtZW50LnJl
bW92ZSgpIiBzdHlsZT0icGFkZGluZzo4cHggMTZweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6
MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtj
b2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2N1cnNvcjpwb2ludGVyOyI+QWJicmVjaGVuPC9idXR0
b24+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3Iu
X2NvbmZpcm1JbmZvYm94KCkiIHN0eWxlPSJwYWRkaW5nOjhweCAxNnB4O2JvcmRlci1yYWRpdXM6
NHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6dmFyKC0tdGV4dC1oZWFkaW5nKTtjb2xvcjp3aGl0
ZTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDA7Ij5FaW5mw7xnZW48L2J1dHRvbj4nICsK
ICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAg
dGhpcy5faW5mb2JveE1vZGFsID0gbW9kYWw7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChtb2RhbCk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZm9ib3hUaXRsZScpLnNlbGVjdCgpOwogICAgICAg
ICAgICAvLyBGb2t1cy1IYW5kbGluZzogVG9vbGJhci1CdXR0b25zIHNvbGxlbiBGb2t1cyBpbSBD
b250ZW50IGxhc3NlbgogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5mb2Jv
eFRvb2xiYXInKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudGFnTmFtZSA9PT0gJ0JVVFRPTicpIGUucHJldmVu
dERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwgNTApOwogICAgfSwKCiAgICBf
aW5mb2JveE1vZGFsOiBudWxsLAoKICAgIC8vIEZvcm1hdGllcnVuZ3NiZWZlaGwgaW0gSW5mb2Jv
eC1Db250ZW50ZWRpdGFibGUgYXVzZnVlaHJlbgogICAgX2luZm9ib3hDbWQoY21kLCB2YWx1ZSkg
ewogICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luZm9ib3hD
b250ZW50Jyk7CiAgICAgICAgaWYgKCFjb250ZW50KSByZXR1cm47CiAgICAgICAgY29udGVudC5m
b2N1cygpOwogICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNtZCwgZmFsc2UsIHZhbHVlIHx8
IG51bGwpOwogICAgfSwKCiAgICBfY29uZmlybUluZm9ib3goKSB7CiAgICAgICAgdmFyIHRpdGxl
SW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5mb2JveFRpdGxlJyk7CiAgICAgICAg
dmFyIGNvbnRlbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmZvYm94Q29udGVudCcp
OwogICAgICAgIHZhciB0aXRsZSA9IHRpdGxlSW5wdXQgPyB0aXRsZUlucHV0LnZhbHVlLnRyaW0o
KSA6ICdIaW53ZWlzJzsKICAgICAgICBpZiAoIXRpdGxlKSB0aXRsZSA9ICdIaW53ZWlzJzsKICAg
ICAgICB2YXIgY29udGVudCA9IGNvbnRlbnRFbCA/IGNvbnRlbnRFbC5pbm5lckhUTUwudHJpbSgp
IDogJyc7CiAgICAgICAgaWYgKCFjb250ZW50IHx8IGNvbnRlbnQgPT09ICc8YnI+JykgY29udGVu
dCA9ICc8cD5UZXh0IGhpZXIgZWluZ2ViZW4uLi48L3A+JzsKCiAgICAgICAgLy8gTW9kYWwgc2No
bGllc3NlbgogICAgICAgIGlmICh0aGlzLl9pbmZvYm94TW9kYWwpIHsgdGhpcy5faW5mb2JveE1v
ZGFsLnJlbW92ZSgpOyB0aGlzLl9pbmZvYm94TW9kYWwgPSBudWxsOyB9CgogICAgICAgIHZhciBo
dG1sID0gJzxkaXYgY2xhc3M9ImRyaXZlLWluZm9ib3giPjxoMz4nICsgRHJpdmVQb3J0YWwuZXNj
YXBlSFRNTCh0aXRsZSkgKyAnPC9oMz4nICsgY29udGVudCArICc8L2Rpdj48cD48YnI+PC9wPic7
CgogICAgICAgIHZhciBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5w
dXQnKTsKICAgICAgICBlZGl0b3IuZm9jdXMoKTsKICAgICAgICBpZiAodGhpcy5faW5mb2JveFJh
bmdlKSB7CiAgICAgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAg
ICAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKICAgICAgICAgICAgc2VsLmFkZFJhbmdlKHRo
aXMuX2luZm9ib3hSYW5nZSk7CiAgICAgICAgICAgIHRoaXMuX2luZm9ib3hSYW5nZSA9IG51bGw7
CiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFs
c2UsIGh0bWwpOwogICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7CiAgICB9LAoKICAgIC8vIC0tLSBX
aWNodGlnLUJsb2NrIGVpbmZ1ZWdlbiAtLS0KICAgIF9pbXBvcnRhbnRNb2RhbDogbnVsbCwKCiAg
ICBpbnNlcnRJbXBvcnRhbnQoKSB7CiAgICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKICAgICAgICB0aGlzLl9pbXBvcnRhbnRSYW5nZSA9IChzZWwgJiYgc2VsLnJhbmdlQ291
bnQpID8gc2VsLmdldFJhbmdlQXQoMCkuY2xvbmVSYW5nZSgpIDogbnVsbDsKCiAgICAgICAgdmFy
IG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgbW9kYWwuc3R5
bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWln
aHQ6MTAwJTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjEwNTAwO2Rpc3BsYXk6
ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjsnOwogICAgICAg
IG1vZGFsLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGlmIChlLnRhcmdldCA9PT0gbW9kYWwpIG1v
ZGFsLnJlbW92ZSgpOyB9OwogICAgICAgIG1vZGFsLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8
ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRlci1yYWRpdXM6MTBweDtw
YWRkaW5nOjIwcHggMjRweDttYXgtd2lkdGg6NTIwcHg7d2lkdGg6OTQlO2JveC1zaGFkb3c6MCA4
cHggMzJweCByZ2JhKDAsMCwwLDAuMyk7Ij4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxl
PSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O21hcmdpbi1ib3R0b206
MTRweDsiPicgKwogICAgICAgICAgICAgICAgICAgICc8aW1nIHNyYz0iY3NzL2ljb25zL2ltcG9y
dGFudC5wbmciIHN0eWxlPSJ3aWR0aDoyMnB4O2hlaWdodDoyMnB4OyI+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW46MDsi
PldpY2h0aWdlbiBIaW53ZWlzIGVpbmZ1ZWdlbjwvaDM+JyArCiAgICAgICAgICAgICAgICAnPC9k
aXY+JyArCiAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZh
cigtLXRleHQtbXV0ZWQpO21hcmdpbi1ib3R0b206MTJweDsiPkRlciBUZXh0IHdpcmQgYWxzIGF1
ZmZhZWxsaWdlciBCbG9jayBpbSBBcnRpa2VsIGRhcmdlc3RlbGx0LCB1bSBhdWYgYmVzb25kZXJz
IHdpY2h0aWdlIEluZm9ybWF0aW9uZW4gaGluenV3ZWlzZW4uPC9wPicgKwogICAgICAgICAgICAg
ICAgJzxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZh
cigtLXRleHQtc2Vjb25kYXJ5KTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206NHB4OyI+SGlu
d2Vpc3RleHQ8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzx0ZXh0YXJlYSBpZD0iaW1wb3J0
YW50VGV4dCIgcm93cz0iNCIgcGxhY2Vob2xkZXI9InouQi4gQml0dGUgYmVhY2h0ZW4gU2llLCBk
YXNzLi4uIiAnICsKICAgICAgICAgICAgICAgICdzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjEw
cHggMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1
czo0cHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS42O2JhY2tncm91bmQ6dmFyKC0tYmct
aW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7cmVzaXplOnZlcnRpY2FsOyI+PC90ZXh0
YXJlYT4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhw
eDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLXRvcDoxNHB4OyI+JyArCiAgICAgICAg
ICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0idGhpcy5jbG9zZXN0KFwnZGl2W3N0eWxlXVwn
KS5wYXJlbnRFbGVtZW50LnJlbW92ZSgpIiBzdHlsZT0icGFkZGluZzo4cHggMTZweDtib3JkZXIt
cmFkaXVzOjRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7YmFja2dyb3Vu
ZDp2YXIoLS1iZy1jYXJkKTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO2N1cnNvcjpwb2ludGVy
OyI+QWJicmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gb25j
bGljaz0iRHJpdmVFZGl0b3IuX2NvbmZpcm1JbXBvcnRhbnQoKSIgc3R5bGU9InBhZGRpbmc6OHB4
IDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDojMWEyMzMyO2Nv
bG9yOndoaXRlO2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjYwMDsiPkVpbmZ1ZWdlbjwvYnV0
dG9uPicgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JzsK
ICAgICAgICB0aGlzLl9pbXBvcnRhbnRNb2RhbCA9IG1vZGFsOwogICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQobW9kYWwpOwogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgIHZhciB0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXBvcnRhbnRUZXh0
Jyk7CiAgICAgICAgICAgIGlmICh0YSkgdGEuZm9jdXMoKTsKICAgICAgICB9LCA1MCk7CiAgICB9
LAoKICAgIF9jb25maXJtSW1wb3J0YW50KCkgewogICAgICAgIHZhciB0ZXh0RWwgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW1wb3J0YW50VGV4dCcpOwogICAgICAgIHZhciB0ZXh0ID0gdGV4
dEVsID8gdGV4dEVsLnZhbHVlLnRyaW0oKSA6ICcnOwogICAgICAgIGlmICghdGV4dCkgewogICAg
ICAgICAgICBzaG93VG9hc3QoJ0JpdHRlIGVpbmVuIEhpbndlaXN0ZXh0IGVpbmdlYmVuJywgJ3dh
cm5pbmcnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gTW9kYWwg
c2NobGllc3NlbgogICAgICAgIGlmICh0aGlzLl9pbXBvcnRhbnRNb2RhbCkgeyB0aGlzLl9pbXBv
cnRhbnRNb2RhbC5yZW1vdmUoKTsgdGhpcy5faW1wb3J0YW50TW9kYWwgPSBudWxsOyB9CgogICAg
ICAgIHZhciBjb250ZW50ID0gRHJpdmVQb3J0YWwuZXNjYXBlSFRNTCh0ZXh0KS5yZXBsYWNlKC9c
bi9nLCAnPGJyPicpOwogICAgICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9ImRyaXZlLWltcG9y
dGFudCIgY29udGVudGVkaXRhYmxlPSJmYWxzZSI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNz
PSJkcml2ZS1pbXBvcnRhbnQtaGVhZGVyIj48aW1nIHNyYz0iY3NzL2ljb25zL2ltcG9ydGFudC5w
bmciPiBXaWNodGlnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJkcml2ZS1pbXBv
cnRhbnQtYm9keSI+JyArIGNvbnRlbnQgKyAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2PjxwPjxi
cj48L3A+JzsKCiAgICAgICAgdmFyIGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
ZGl0b3JJbnB1dCcpOwogICAgICAgIGVkaXRvci5mb2N1cygpOwogICAgICAgIGlmICh0aGlzLl9p
bXBvcnRhbnRSYW5nZSkgewogICAgICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlv
bigpOwogICAgICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgIHNlbC5h
ZGRSYW5nZSh0aGlzLl9pbXBvcnRhbnRSYW5nZSk7CiAgICAgICAgICAgIHRoaXMuX2ltcG9ydGFu
dFJhbmdlID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2lu
c2VydEhUTUwnLCBmYWxzZSwgaHRtbCk7CiAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTsKICAgIH0s
CgogICAgLy8gLS0tIEZvcm1hdGllcnVuZ3NiZWZlaGxlIC0tLQogICAgaGVhZGluZyh0YWcpIHsK
ICAgICAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1
dCcpOwogICAgICAgIGlucHV0LmZvY3VzKCk7CiAgICAgICAgY29uc3Qgc2VsID0gd2luZG93Lmdl
dFNlbGVjdGlvbigpOwogICAgICAgIGlmICghc2VsLnJhbmdlQ291bnQpIHJldHVybjsKICAgICAg
ICBjb25zdCByYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApOwoKICAgICAgICAvLyBBa3R1ZWxsZW4g
QmxvY2sgZmluZGVuIChQLCBESVYgb2RlciBiZXJlaXRzIGVpbiBIZWFkaW5nKQogICAgICAgIGxl
dCBibG9jayA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyOwogICAgICAgIHdoaWxlIChibG9jayAmJiBi
bG9jayAhPT0gaW5wdXQgJiYgIVsnUCcsJ0RJVicsJ0gxJywnSDInLCdIMycsJ0g0JywnSDUnLCdI
NiddLmluY2x1ZGVzKGJsb2NrLm5vZGVOYW1lKSkgewogICAgICAgICAgICBibG9jayA9IGJsb2Nr
LnBhcmVudE5vZGU7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRhZykgewogICAgICAgICAgICAv
LyAiQWJzYXR6IiBnZXdhZWhsdDogSGVhZGluZyB6dXJ1ZWNrIGluIDxwPiB1bXdhbmRlbG4KICAg
ICAgICAgICAgaWYgKGJsb2NrICYmIGJsb2NrICE9PSBpbnB1dCAmJiBbJ0gxJywnSDInLCdIMycs
J0g0JywnSDUnLCdINiddLmluY2x1ZGVzKGJsb2NrLm5vZGVOYW1lKSkgewogICAgICAgICAgICAg
ICAgY29uc3QgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgICAgICAgICAg
IHAuaW5uZXJIVE1MID0gYmxvY2suaW5uZXJIVE1MOwogICAgICAgICAgICAgICAgYmxvY2sucGFy
ZW50Tm9kZS5yZXBsYWNlQ2hpbGQocCwgYmxvY2spOwogICAgICAgICAgICAgICAgY29uc3QgbmV3
UmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAgICAgbmV3UmFuZ2Uu
c2VsZWN0Tm9kZUNvbnRlbnRzKHApOwogICAgICAgICAgICAgICAgbmV3UmFuZ2UuY29sbGFwc2Uo
ZmFsc2UpOwogICAgICAgICAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAg
ICAgICAgc2VsLmFkZFJhbmdlKG5ld1JhbmdlKTsKICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVN0
YXRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAg
ICAgaWYgKGJsb2NrICYmIGJsb2NrICE9PSBpbnB1dCkgewogICAgICAgICAgICAvLyBCZXN0ZWhl
bmRlbiBCbG9jayBpbiBIZWFkaW5nIHVtd2FuZGVsbgogICAgICAgICAgICBjb25zdCBoZWFkaW5n
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgICAgICAgICBoZWFkaW5nLmlubmVy
SFRNTCA9IGJsb2NrLmlubmVySFRNTDsKICAgICAgICAgICAgYmxvY2sucGFyZW50Tm9kZS5yZXBs
YWNlQ2hpbGQoaGVhZGluZywgYmxvY2spOwogICAgICAgICAgICAvLyBDdXJzb3IgYW5zIEVuZGUg
c2V0emVuCiAgICAgICAgICAgIGNvbnN0IG5ld1JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKICAgICAgICAgICAgbmV3UmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGhlYWRpbmcpOwogICAg
ICAgICAgICBuZXdSYW5nZS5jb2xsYXBzZShmYWxzZSk7CiAgICAgICAgICAgIHNlbC5yZW1vdmVB
bGxSYW5nZXMoKTsKICAgICAgICAgICAgc2VsLmFkZFJhbmdlKG5ld1JhbmdlKTsKICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAvLyBLZWluIEJsb2NrOiBOZXVlcyBIZWFkaW5nIGVpbmZ1ZWdl
bgogICAgICAgICAgICBjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcp
OwogICAgICAgICAgICBoZWFkaW5nLnRleHRDb250ZW50ID0gc2VsLnRvU3RyaW5nKCkgfHwgJ8Oc
YmVyc2NocmlmdCc7CiAgICAgICAgICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CiAgICAgICAg
ICAgIHJhbmdlLmluc2VydE5vZGUoaGVhZGluZyk7CiAgICAgICAgICAgIC8vIEN1cnNvciBhbnMg
RW5kZQogICAgICAgICAgICBjb25zdCBuZXdSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CiAgICAgICAgICAgIG5ld1JhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhoZWFkaW5nKTsKICAgICAg
ICAgICAgbmV3UmFuZ2UuY29sbGFwc2UoZmFsc2UpOwogICAgICAgICAgICBzZWwucmVtb3ZlQWxs
UmFuZ2VzKCk7CiAgICAgICAgICAgIHNlbC5hZGRSYW5nZShuZXdSYW5nZSk7CiAgICAgICAgfQog
ICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7CiAgICB9LAoKICAgIGNvbW1hbmQoY21kKSB7CiAgICAg
ICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsK
ICAgICAgICBpbnB1dC5mb2N1cygpOwogICAgICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTsKICAgICAgICBpZiAoIXNlbC5yYW5nZUNvdW50KSByZXR1cm47CgogICAgICAgIHN3
aXRjaCAoY21kKSB7CiAgICAgICAgICAgIGNhc2UgJ2JvbGQnOiB0aGlzLndyYXBTZWxlY3Rpb24o
J3N0cm9uZycpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnaXRhbGljJzogdGhpcy53cmFwU2Vs
ZWN0aW9uKCdlbScpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAndW5kZXJsaW5lJzogdGhpcy53
cmFwU2VsZWN0aW9uKCd1Jyk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICdpbnNlcnRVbm9yZGVy
ZWRMaXN0JzogdGhpcy5pbnNlcnRMaXN0KCd1bCcpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAn
aW5zZXJ0T3JkZXJlZExpc3QnOiB0aGlzLmluc2VydExpc3QoJ29sJyk7IGJyZWFrOwogICAgICAg
IH0KICAgICAgICBpbnB1dC5mb2N1cygpOwogICAgfSwKCiAgICB3cmFwU2VsZWN0aW9uKHRhZ05h
bWUpIHsKICAgICAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAg
aWYgKCFzZWwucmFuZ2VDb3VudCkgcmV0dXJuOwogICAgICAgIGNvbnN0IHJhbmdlID0gc2VsLmdl
dFJhbmdlQXQoMCk7CiAgICAgICAgaWYgKHJhbmdlLmNvbGxhcHNlZCkgcmV0dXJuOwogICAgICAg
IGNvbnN0IFRBRyA9IHRhZ05hbWUudG9VcHBlckNhc2UoKTsKCiAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgLy8gUHJ1ZWZlbiBvYiBkaWUgZ2VzYW10ZSBTZWxla3Rpb24gYmVyZWl0cyBpbiBkaWVz
ZW0gVGFnIGxpZWd0CiAgICAgICAgICAgIGxldCBub2RlID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JD
b250YWluZXI7CiAgICAgICAgICAgIGxldCBleGlzdGluZyA9IG51bGw7CiAgICAgICAgICAgIHdo
aWxlIChub2RlICYmIG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRE9DVU1FTlRfTk9ERSkgewogICAg
ICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIG5v
ZGUudGFnTmFtZSA9PT0gVEFHKSB7CiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgPSBub2Rl
OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAg
aWYgKGV4aXN0aW5nKSB7CiAgICAgICAgICAgICAgICAvLyBUb2dnbGUgT0ZGOiBUYWcgZW50ZmVy
bmVuLCBLaW5kZXIgYmVpYmVoYWx0ZW4KICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGV4
aXN0aW5nLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5
LmZyb20oZXhpc3RpbmcuY2hpbGROb2Rlcyk7CiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9
IGNoaWxkcmVuWzBdLCBsYXN0ID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV07CiAgICAg
ICAgICAgICAgICB3aGlsZSAoZXhpc3RpbmcuZmlyc3RDaGlsZCkgcGFyZW50Lmluc2VydEJlZm9y
ZShleGlzdGluZy5maXJzdENoaWxkLCBleGlzdGluZyk7CiAgICAgICAgICAgICAgICBwYXJlbnQu
cmVtb3ZlQ2hpbGQoZXhpc3RpbmcpOwogICAgICAgICAgICAgICAgaWYgKGZpcnN0ICYmIGxhc3Qp
IHsKICAgICAgICAgICAgICAgICAgICByYW5nZS5zZXRTdGFydEJlZm9yZShmaXJzdCk7CiAgICAg
ICAgICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kQWZ0ZXIobGFzdCk7CiAgICAgICAgICAgICAgICAg
ICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICAgICAgICAgIHNlbC5hZGRSYW5n
ZShyYW5nZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICBjb25zdCBmcmFnID0gcmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7CiAgICAgICAgICAg
ICAgICAvLyBCZXJlaXRzIHZvcmhhbmRlbmUgZ2xlaWNoZSBUYWdzIGltIEZyYWdtZW50IGF1Zmxv
ZXNlbiAodmVyaGluZGVydCBWZXJzY2hhY2h0ZWx1bmcpCiAgICAgICAgICAgICAgICBmcmFnLnF1
ZXJ5U2VsZWN0b3JBbGwodGFnTmFtZSkuZm9yRWFjaChmdW5jdGlvbihpbm5lcikgewogICAgICAg
ICAgICAgICAgICAgIHdoaWxlIChpbm5lci5maXJzdENoaWxkKSBpbm5lci5wYXJlbnROb2RlLmlu
c2VydEJlZm9yZShpbm5lci5maXJzdENoaWxkLCBpbm5lcik7CiAgICAgICAgICAgICAgICAgICAg
aW5uZXIucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGNvbnN0
IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpOwogICAgICAgICAgICAg
ICAgd3JhcHBlci5hcHBlbmRDaGlsZChmcmFnKTsKICAgICAgICAgICAgICAgIHJhbmdlLmluc2Vy
dE5vZGUod3JhcHBlcik7CiAgICAgICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMo
d3JhcHBlcik7CiAgICAgICAgICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAg
ICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRj
aCAoZSkgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXcmFwIGVycm9yOicsIGUpOwogICAg
ICAgIH0KICAgIH0sCgogICAgaW5zZXJ0TGlzdChsaXN0VHlwZSkgewogICAgICAgIGNvbnN0IHNl
bCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICBpZiAoIXNlbC5yYW5nZUNvdW50KSBy
ZXR1cm47CiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWwuZ2V0UmFuZ2VBdCgwKTsKICAgICAgICBj
b25zdCBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChsaXN0VHlwZSk7CgogICAgICAgIGlm
ICghcmFuZ2UuY29sbGFwc2VkKSB7CiAgICAgICAgICAgIGNvbnN0IGZyYWcgPSByYW5nZS5leHRy
YWN0Q29udGVudHMoKTsKICAgICAgICAgICAgLy8gVGV4dCBhdWYgWmVpbGVudW1icnVlY2hlIGF1
ZnRlaWxlbiBmdWVyIHNlcGFyYXRlIExJLUVsZW1lbnRlCiAgICAgICAgICAgIGNvbnN0IHRlbXBE
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgdGVtcERpdi5h
cHBlbmRDaGlsZChmcmFnKTsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHRlbXBEaXYuaW5uZXJI
VE1MOwogICAgICAgICAgICAvLyBTcGxpdCBhdWYgPGJyPiwgXG4gb2RlciBCbG9jay1FbGVtZW50
ZQogICAgICAgICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoLzxiclxzKlwvPz4vZ2kpLm1h
cChmdW5jdGlvbihsKSB7IHJldHVybiBsLnRyaW0oKTsgfSkuZmlsdGVyKGZ1bmN0aW9uKGwpIHsg
cmV0dXJuIGwubGVuZ3RoID4gMDsgfSk7CiAgICAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggPiAx
KSB7CiAgICAgICAgICAgICAgICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHsKICAgICAg
ICAgICAgICAgICAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAg
ICAgICAgICAgICAgICAgICAgbGkuaW5uZXJIVE1MID0gbGluZTsKICAgICAgICAgICAgICAgICAg
ICBsaXN0LmFwcGVuZENoaWxkKGxpKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdsaScpOwogICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQodGVtcERpdi5maXJzdENoaWxk
IHx8IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlbXBEaXYudGV4dENvbnRlbnQpKTsKICAgICAg
ICAgICAgICAgIHdoaWxlICh0ZW1wRGl2LmZpcnN0Q2hpbGQpIGxpLmFwcGVuZENoaWxkKHRlbXBE
aXYuZmlyc3RDaGlsZCk7CiAgICAgICAgICAgICAgICBsaXN0LmFwcGVuZENoaWxkKGxpKTsKICAg
ICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnN0IGxpID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnbGknKTsKICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ1x1MDBBMCcpKTsKICAgICAgICAgICAgbGlzdC5hcHBlbmRDaGls
ZChsaSk7CiAgICAgICAgfQoKICAgICAgICByYW5nZS5kZWxldGVDb250ZW50cygpOwogICAgICAg
IHJhbmdlLmluc2VydE5vZGUobGlzdCk7CiAgICAgICAgY29uc3QgbGFzdExpID0gbGlzdC5xdWVy
eVNlbGVjdG9yKCdsaTpsYXN0LWNoaWxkJyk7CiAgICAgICAgaWYgKGxhc3RMaSkgewogICAgICAg
ICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobGFzdExpKTsKICAgICAgICAgICAgcmFuZ2Uu
Y29sbGFwc2UoZmFsc2UpOwogICAgICAgIH0KICAgICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7
CiAgICAgICAgc2VsLmFkZFJhbmdlKHJhbmdlKTsKICAgIH0sCgogICAgZm9udFNpemUoc2l6ZSkg
ewogICAgICAgIGlmICghc2l6ZSkgcmV0dXJuOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7CiAgICAgICAgaW5wdXQuZm9jdXMoKTsK
ICAgICAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgaWYgKCFz
ZWwucmFuZ2VDb3VudCkgcmV0dXJuOwogICAgICAgIGNvbnN0IHJhbmdlID0gc2VsLmdldFJhbmdl
QXQoMCk7CiAgICAgICAgaWYgKHJhbmdlLmNvbGxhcHNlZCkgcmV0dXJuOwoKICAgICAgICBjb25z
dCBmcmFnID0gcmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7CiAgICAgICAgLy8gQmVzdGVoZW5kZSBm
b250U2l6ZS1TcGFucyBpbSBGcmFnbWVudCBhdWZsb2VzZW4KICAgICAgICBmcmFnLnF1ZXJ5U2Vs
ZWN0b3JBbGwoJ3NwYW4nKS5mb3JFYWNoKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgaWYgKHMu
c3R5bGUuZm9udFNpemUgJiYgcy5zdHlsZS5sZW5ndGggPD0gMSkgewogICAgICAgICAgICAgICAg
Ly8gU3BhbiBoYXQgbnVyIGZvbnQtc2l6ZSAtPiBkdXJjaCBJbmhhbHQgZXJzZXR6ZW4KICAgICAg
ICAgICAgICAgIHdoaWxlIChzLmZpcnN0Q2hpbGQpIHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo
cy5maXJzdENoaWxkLCBzKTsKICAgICAgICAgICAgICAgIHMucmVtb3ZlKCk7CiAgICAgICAgICAg
IH0gZWxzZSBpZiAocy5zdHlsZS5mb250U2l6ZSkgewogICAgICAgICAgICAgICAgcy5zdHlsZS5y
ZW1vdmVQcm9wZXJ0eSgnZm9udC1zaXplJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAg
ICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAg
ICAgIHdyYXBwZXIuc3R5bGUuZm9udFNpemUgPSBzaXplICsgJ3B4JzsKICAgICAgICB3cmFwcGVy
LmFwcGVuZENoaWxkKGZyYWcpOwogICAgICAgIHJhbmdlLmluc2VydE5vZGUod3JhcHBlcik7CiAg
ICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHdyYXBwZXIpOwogICAgICAgIHNlbC5yZW1v
dmVBbGxSYW5nZXMoKTsKICAgICAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpOwoKICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZm9udFNpemVTZWxlY3QnKS52YWx1ZSA9ICcnOwogICAgICAg
IGlucHV0LmZvY3VzKCk7CiAgICB9LAoKICAgIGNvbG9yKGNvbG9yKSB7CiAgICAgICAgY29uc3Qg
aW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9ySW5wdXQnKTsKICAgICAgICBj
b25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgbGV0IHNhdmVkUmFuZ2Ug
PSBudWxsOwogICAgICAgIGlmIChzZWwucmFuZ2VDb3VudCA+IDApIHNhdmVkUmFuZ2UgPSBzZWwu
Z2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCk7CgogICAgICAgIGlucHV0LmZvY3VzKCk7CgogICAg
ICAgIGlmIChzYXZlZFJhbmdlICYmICFzYXZlZFJhbmdlLmNvbGxhcHNlZCkgewogICAgICAgICAg
ICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgIHNlbC5hZGRSYW5nZShzYXZlZFJh
bmdlKTsKICAgICAgICAgICAgY29uc3QgZnJhZyA9IHNhdmVkUmFuZ2UuZXh0cmFjdENvbnRlbnRz
KCk7CiAgICAgICAgICAgIC8vIEJlc3RlaGVuZGUgY29sb3ItU3BhbnMgaW0gRnJhZ21lbnQgYXVm
bG9lc2VuCiAgICAgICAgICAgIGZyYWcucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpLmZvckVhY2go
ZnVuY3Rpb24ocykgewogICAgICAgICAgICAgICAgaWYgKHMuc3R5bGUuY29sb3IgJiYgcy5zdHls
ZS5sZW5ndGggPD0gMSkgewogICAgICAgICAgICAgICAgICAgIHdoaWxlIChzLmZpcnN0Q2hpbGQp
IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocy5maXJzdENoaWxkLCBzKTsKICAgICAgICAgICAg
ICAgICAgICBzLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzLnN0eWxlLmNv
bG9yKSB7CiAgICAgICAgICAgICAgICAgICAgcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnY29sb3In
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNvbnN0IHdy
YXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgICAgICAgIHdyYXBw
ZXIuc3R5bGUuY29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgd3JhcHBlci5hcHBlbmRDaGlsZChm
cmFnKTsKICAgICAgICAgICAgc2F2ZWRSYW5nZS5pbnNlcnROb2RlKHdyYXBwZXIpOwogICAgICAg
ICAgICBzYXZlZFJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh3cmFwcGVyKTsKICAgICAgICAgICAg
c2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICBzZWwuYWRkUmFuZ2Uoc2F2ZWRSYW5n
ZSk7CiAgICAgICAgfQogICAgICAgIGlucHV0LmZvY3VzKCk7CiAgICB9LAoKICAgIC8vIC0tLSBN
ZWRpYSBUeXBlIERldGVjdGlvbiAtLS0KICAgIC8vIC0tLSBQYXN0ZTogRXh0ZXJuZSBCaWxkZXIg
bG9rYWwgc3BlaWNoZXJuIC0tLQoKICAgIF9wYXN0ZVVwbG9hZEluUHJvZ3Jlc3M6IGZhbHNlLAoK
ICAgIGFzeW5jIF9wYXN0ZUltYWdlQmxvYihibG9iKSB7CiAgICAgICAgaWYgKCF0aGlzLmN1cnJl
bnREb2MgfHwgIURyaXZlRlMuY29ubmVjdGVkKSByZXR1cm47CiAgICAgICAgaWYgKHRoaXMuX3Bh
c3RlVXBsb2FkSW5Qcm9ncmVzcykgcmV0dXJuOyAvLyBEb3BwZWwtRWluZnVlZ2VuIHZlcmhpbmRl
cm4KICAgICAgICB0aGlzLl9wYXN0ZVVwbG9hZEluUHJvZ3Jlc3MgPSB0cnVlOwogICAgICAgIGNv
bnN0IGRvY0lkID0gdGhpcy5jdXJyZW50RG9jLmlkOwogICAgICAgIGNvbnN0IGV4dCA9IGJsb2Iu
dHlwZS5zcGxpdCgnLycpWzFdIHx8ICdwbmcnOwogICAgICAgIGNvbnN0IHRzID0gRGF0ZS5ub3co
KTsKICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICdwYXN0ZV8nICsgdHMgKyAnLicgKyBleHQ7CiAg
ICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgZmlsZW5hbWUsIHsgdHlwZTogYmxv
Yi50eXBlIH0pOwoKICAgICAgICB0cnkgewogICAgICAgICAgICBzaG93VG9hc3QoJ0JpbGQgd2ly
ZCBnZXNwZWljaGVydC4uLicsICdpbmZvJywgMzAwMCk7CiAgICAgICAgICAgIGNvbnN0IHJlbFBh
dGggPSBhd2FpdCBEcml2ZUZTLnVwbG9hZE1lZGlhKGRvY0lkLCBmaWxlKTsKICAgICAgICAgICAg
Y29uc3QgbWVkaWFJZCA9IHRoaXMuZ2VuZXJhdGVNZWRpYUlkKCk7CgogICAgICAgICAgICBpZiAo
IXRoaXMuY3VycmVudERvYy5tZWRpYXMpIHRoaXMuY3VycmVudERvYy5tZWRpYXMgPSBbXTsKICAg
ICAgICAgICAgdGhpcy5jdXJyZW50RG9jLm1lZGlhcy5wdXNoKHsKICAgICAgICAgICAgICAgIHR5
cGU6ICdpbWFnZScsIHVybDogcmVsUGF0aCwgdGl0bGU6IGZpbGVuYW1lLAogICAgICAgICAgICAg
ICAgZGVzY3JpcHRpb246ICcnLCBkaXNwbGF5TW9kZTogJ2lubGluZScsCiAgICAgICAgICAgICAg
ICBhbGlnbm1lbnQ6ICdjZW50ZXInLCBzaXplOiAnbGFyZ2UnLCBtZWRpYUlkOiBtZWRpYUlkCiAg
ICAgICAgICAgIH0pOwoKICAgICAgICAgICAgY29uc3QgZmlndXJlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZmlndXJlJyk7CiAgICAgICAgICAgIGZpZ3VyZS5jbGFzc05hbWUgPSAnZHJpdmUt
bWVkaWEgbWVkaWEtbGFyZ2UgbWVkaWEtY2VudGVyJzsKICAgICAgICAgICAgZmlndXJlLnNldEF0
dHJpYnV0ZSgnZGF0YS1tZWRpYS1pZCcsIG1lZGlhSWQpOwogICAgICAgICAgICBmaWd1cmUuY29u
dGVudEVkaXRhYmxlID0gJ2ZhbHNlJzsKICAgICAgICAgICAgY29uc3QgaW1nID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnaW1nJyk7CiAgICAgICAgICAgIGltZy5zcmMgPSByZWxQYXRoOwogICAg
ICAgICAgICBpbWcuYWx0ID0gZmlsZW5hbWU7CiAgICAgICAgICAgIGZpZ3VyZS5hcHBlbmRDaGls
ZChpbWcpOwogICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZh
bHNlLCBmaWd1cmUub3V0ZXJIVE1MKTsKICAgICAgICAgICAgdGhpcy5fcmVuZGVyTWVkaWFMaXN0
KCk7CiAgICAgICAgICAgIHNob3dUb2FzdCgnQmlsZCBlaW5nZWbDvGd0JywgJ3N1Y2Nlc3MnKTsK
ICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgc2hvd1RvYXN0KCdCaWxkIGtvbm50
ZSBuaWNodCBnZXNwZWljaGVydCB3ZXJkZW46ICcgKyBlcnIubWVzc2FnZSwgJ2Vycm9yJyk7CiAg
ICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgdGhpcy5fcGFzdGVVcGxvYWRJblByb2dyZXNz
ID0gZmFsc2U7CiAgICAgICAgfQogICAgfSwKCiAgICBhc3luYyBfcGFzdGVIdG1sV2l0aEV4dGVy
bmFsSW1hZ2VzKGJvZHlFbCwgZXh0ZXJuYWxJbWdzKSB7CiAgICAgICAgY29uc3QgZG9jSWQgPSB0
aGlzLmN1cnJlbnREb2MuaWQ7CiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnREb2MubWVkaWFzKSB0
aGlzLmN1cnJlbnREb2MubWVkaWFzID0gW107CgogICAgICAgIHNob3dUb2FzdCgnRXh0ZXJuZSBC
aWxkZXIgd2VyZGVuIGhlcnVudGVyZ2VsYWRlbiAoJyArIGV4dGVybmFsSW1ncy5sZW5ndGggKyAn
KS4uLicsICdpbmZvJywgNDAwMCk7CiAgICAgICAgbGV0IHNhdmVkID0gMDsKCiAgICAgICAgZm9y
IChjb25zdCBpbWcgb2YgZXh0ZXJuYWxJbWdzKSB7CiAgICAgICAgICAgIGNvbnN0IHNyYyA9IGlt
Zy5zcmM7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAvLyBCaWxkIGhlcnVudGVy
bGFkZW46IEltIFNlcnZlci1Nb2R1cyB1ZWJlciBQcm94eSAodW1nZWh0IENPUlMpCiAgICAgICAg
ICAgICAgICBsZXQgcmVzcG9uc2U7CiAgICAgICAgICAgICAgICBpZiAoRHJpdmVGUy5tb2RlID09
PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2go
Jy9hcGkvZmV0Y2gtaW1hZ2UnLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BP
U1QnLAogICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAn
YXBwbGljYXRpb24vanNvbicgfSwKICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5z
dHJpbmdpZnkoeyB1cmw6IHNyYyB9KQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNo
KHNyYywgeyBtb2RlOiAnY29ycycgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBpZiAoIXJlc3BvbnNlLm9rKSB7IGltZy5yZW1vdmUoKTsgY29udGludWU7IH0KICAgICAgICAg
ICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCByZXNwb25zZS5ibG9iKCk7CgogICAgICAgICAgICAg
ICAgLy8gTnVyIGVjaHRlIEJpbGRlciB2ZXJhcmJlaXRlbiAoa2VpbmUgMC1CeXRlIHRyYWNraW5n
LXBpeGVsIG9kZXIgRmVobGVyKQogICAgICAgICAgICAgICAgaWYgKCFibG9iLnR5cGUuc3RhcnRz
V2l0aCgnaW1hZ2UvJykgfHwgYmxvYi5zaXplIDwgMTAwKSB7CiAgICAgICAgICAgICAgICAgICAg
aW1nLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIGNvbnN0IGV4dCA9IGJsb2IudHlwZS5zcGxpdCgnLycpWzFd
IHx8ICdwbmcnOwogICAgICAgICAgICAgICAgY29uc3QgdHMgPSBEYXRlLm5vdygpICsgJ18nICsg
c2F2ZWQ7CiAgICAgICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9ICd3ZWJfJyArIHRzICsgJy4n
ICsgZXh0OwogICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgZmls
ZW5hbWUsIHsgdHlwZTogYmxvYi50eXBlIH0pOwoKICAgICAgICAgICAgICAgIGNvbnN0IHJlbFBh
dGggPSBhd2FpdCBEcml2ZUZTLnVwbG9hZE1lZGlhKGRvY0lkLCBmaWxlKTsKICAgICAgICAgICAg
ICAgIGNvbnN0IG1lZGlhSWQgPSB0aGlzLmdlbmVyYXRlTWVkaWFJZCgpOwoKICAgICAgICAgICAg
ICAgIHRoaXMuY3VycmVudERvYy5tZWRpYXMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgdHlw
ZTogJ2ltYWdlJywgdXJsOiByZWxQYXRoLCB0aXRsZTogZmlsZW5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgZGVzY3JpcHRpb246ICcnLCBkaXNwbGF5TW9kZTogJ2lubGluZScsCiAgICAgICAgICAg
ICAgICAgICAgYWxpZ25tZW50OiAnJywgc2l6ZTogJ2xhcmdlJywgbWVkaWFJZDogbWVkaWFJZAog
ICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gZmlndXJlLUVsZW1lbnQgZXJz
dGVsbGVuIGRhbWl0IGVzIG9mZmxpbmUgZnVua3Rpb25pZXJ0CiAgICAgICAgICAgICAgICBjb25z
dCBmaWd1cmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmaWd1cmUnKTsKICAgICAgICAgICAg
ICAgIGZpZ3VyZS5jbGFzc05hbWUgPSAnZHJpdmUtbWVkaWEgbWVkaWEtbGFyZ2UnOwogICAgICAg
ICAgICAgICAgZmlndXJlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1pZCcsIG1lZGlhSWQpOwog
ICAgICAgICAgICAgICAgZmlndXJlLmNvbnRlbnRFZGl0YWJsZSA9ICdmYWxzZSc7CiAgICAgICAg
ICAgICAgICBjb25zdCBuZXdJbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKICAg
ICAgICAgICAgICAgIG5ld0ltZy5zcmMgPSByZWxQYXRoOwogICAgICAgICAgICAgICAgbmV3SW1n
LmFsdCA9IGltZy5hbHQgfHwgZmlsZW5hbWU7CiAgICAgICAgICAgICAgICBmaWd1cmUuYXBwZW5k
Q2hpbGQobmV3SW1nKTsKCiAgICAgICAgICAgICAgICAvLyBPcmlnaW5hbCBpbWcgZHVyY2ggZmln
dXJlIGVyc2V0emVuCiAgICAgICAgICAgICAgICBpbWcucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQo
ZmlndXJlLCBpbWcpOwogICAgICAgICAgICAgICAgc2F2ZWQrKzsKICAgICAgICAgICAgfSBjYXRj
aCB7CiAgICAgICAgICAgICAgICAvLyBCaWxkIGtvbm50ZSBuaWNodCBnZWxhZGVuIHdlcmRlbiAt
IGVudGZlcm5lbiBzdGF0dCBrYXB1dHRlIFJlZmVyZW56CiAgICAgICAgICAgICAgICBpbWcucmVt
b3ZlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEJlcmVpbmlndGVzIEhU
TUwgZWluZnVlZ2VuCiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBm
YWxzZSwgYm9keUVsLmlubmVySFRNTCk7CiAgICAgICAgdGhpcy5fcmVuZGVyTWVkaWFMaXN0KCk7
CiAgICAgICAgaWYgKHNhdmVkID4gMCkgewogICAgICAgICAgICBzaG93VG9hc3Qoc2F2ZWQgKyAn
IEJpbGQnICsgKHNhdmVkID4gMSA/ICdlcicgOiAnJykgKyAnIGxva2FsIGdlc3BlaWNoZXJ0Jywg
J3N1Y2Nlc3MnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzaG93VG9hc3QoJ0tlaW5l
IEJpbGRlciBrb25udGVuIGhlcnVudGVyZ2VsYWRlbiB3ZXJkZW4gKGV2dGwuIENPUlMtU2NodXR6
KScsICd3YXJuaW5nJyk7CiAgICAgICAgfQogICAgfSwKCiAgICBkZXRlY3RNZWRpYVR5cGUoZmls
ZSkgewogICAgICAgIGlmIChmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHJldHVybiAn
aW1hZ2UnOwogICAgICAgIGlmIChmaWxlLnR5cGUuc3RhcnRzV2l0aCgndmlkZW8vJykpIHJldHVy
biAndmlkZW8nOwogICAgICAgIGlmIChmaWxlLnR5cGUuc3RhcnRzV2l0aCgnYXVkaW8vJykpIHJl
dHVybiAnYXVkaW8nOwogICAgICAgIGlmIChmaWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi9wZGYn
KSByZXR1cm4gJ3BkZic7CiAgICAgICAgY29uc3QgZXh0ID0gZmlsZS5uYW1lLnNwbGl0KCcuJyku
cG9wKCkudG9Mb3dlckNhc2UoKTsKICAgICAgICBpZiAoZXh0ID09PSAnZG9jeCcpIHJldHVybiAn
ZG9jeCc7CiAgICAgICAgaWYgKGV4dCA9PT0gJ3hsc3gnKSByZXR1cm4gJ3hsc3gnOwogICAgICAg
IGlmIChleHQgPT09ICdwcHR4JykgcmV0dXJuICdwcHR4JzsKICAgICAgICByZXR1cm4gJ2ZpbGUn
OwogICAgfSwKCiAgICBnZW5lcmF0ZU1lZGlhSWQoKSB7CiAgICAgICAgaWYgKCF0aGlzLmN1cnJl
bnREb2MgfHwgIXRoaXMuY3VycmVudERvYy5tZWRpYXMpIHJldHVybiAnbTAwMSc7CiAgICAgICAg
bGV0IG1heCA9IDA7CiAgICAgICAgdGhpcy5jdXJyZW50RG9jLm1lZGlhcy5mb3JFYWNoKG0gPT4g
ewogICAgICAgICAgICBpZiAobS5tZWRpYUlkKSB7CiAgICAgICAgICAgICAgICBjb25zdCBuID0g
cGFyc2VJbnQobS5tZWRpYUlkLnJlcGxhY2UoJ20nLCAnJyksIDEwKTsKICAgICAgICAgICAgICAg
IGlmIChuID4gbWF4KSBtYXggPSBuOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAg
cmV0dXJuICdtJyArIFN0cmluZyhtYXggKyAxKS5wYWRTdGFydCgzLCAnMCcpOwogICAgfSwKCiAg
ICAvLyAtLS0gVXBsb2FkIERpYWxvZyAtLS0KICAgIF9wZW5kaW5nRmlsZXM6IFtdLAogICAgX3Bl
bmRpbmdJbmRleDogMCwKICAgIF91cGxvYWRPcHRpb25zOiB7IGRpc3BsYXlNb2RlOiAnYXR0YWNo
bWVudCcsIGFsaWduOiAnY2VudGVyJywgc2l6ZTogJ3RodW1ibmFpbCcgfSwKICAgIF9zYXZlZEVk
aXRvclJhbmdlOiBudWxsLAoKICAgIC8vIFVwbG9hZC1FaW5zdGllZ3MtTW9kYWwgbWl0IERyYWcm
RHJvcCB1bmQgRXJrbGFlcnVuZyBvZWZmbmVuCiAgICBzaG93VXBsb2FkTW9kYWwoKSB7CiAgICAg
ICAgaWYgKCF0aGlzLmN1cnJlbnREb2MgfHwgIURyaXZlRlMuY29ubmVjdGVkKSB7CiAgICAgICAg
ICAgIHNob3dUb2FzdCgnQml0dGUgenVlcnN0IGVpbiBEb2t1bWVudCDDtmZmbmVuJywgJ3dhcm5p
bmcnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyBDdXJzb3ItUG9z
aXRpb24gbWVya2VuCiAgICAgICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwog
ICAgICAgIGlmIChzZWwucmFuZ2VDb3VudCA+IDApIHsKICAgICAgICAgICAgdGhpcy5fc2F2ZWRF
ZGl0b3JSYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApLmNsb25lUmFuZ2UoKTsKICAgICAgICB9CiAg
ICAgICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVkaWFVcGxvYWRT
dGFydE1vZGFsJyk7CiAgICAgICAgbW9kYWwuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CgogICAg
ICAgIC8vIERyYWcgJiBEcm9wIFNldHVwIChudXIgZWlubWFsKQogICAgICAgIGNvbnN0IGRyb3Ba
b25lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZERyb3Bab25lJyk7CiAgICAgICAg
aWYgKCFkcm9wWm9uZS5fZHJhZ1NldHVwKSB7CiAgICAgICAgICAgIGRyb3Bab25lLl9kcmFnU2V0
dXAgPSB0cnVlOwogICAgICAgICAgICBkcm9wWm9uZS5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3Zl
cicsIChlKSA9PiB7IGUucHJldmVudERlZmF1bHQoKTsgZHJvcFpvbmUuY2xhc3NMaXN0LmFkZCgn
ZHJhZy1vdmVyJyk7IH0pOwogICAgICAgICAgICBkcm9wWm9uZS5hZGRFdmVudExpc3RlbmVyKCdk
cmFnbGVhdmUnLCAoKSA9PiB7IGRyb3Bab25lLmNsYXNzTGlzdC5yZW1vdmUoJ2RyYWctb3Zlcicp
OyB9KTsKICAgICAgICAgICAgZHJvcFpvbmUuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9
PiB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBk
cm9wWm9uZS5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnLW92ZXInKTsKICAgICAgICAgICAgICAgIGNv
bnN0IGZpbGVzID0gQXJyYXkuZnJvbShlLmRhdGFUcmFuc2Zlci5maWxlcykuZmlsdGVyKGYgPT4g
ewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4dCA9IGYubmFtZS5zcGxpdCgnLicpLnBvcCgp
LnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYudHlwZS5zdGFydHNX
aXRoKCdpbWFnZS8nKSB8fCBmLnR5cGUuc3RhcnRzV2l0aCgndmlkZW8vJykgfHwgZi50eXBlLnN0
YXJ0c1dpdGgoJ2F1ZGlvLycpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIGYudHlwZSA9PT0g
J2FwcGxpY2F0aW9uL3BkZicgfHwgWydkb2N4JywneGxzeCcsJ3BwdHgnXS5pbmNsdWRlcyhleHQp
OwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID09
PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdEYXRlaXR5cCBuaWNodCB1bnRl
cnN0w7x0enQnLCAnd2FybmluZycpOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIERyaXZlRWRpdG9yLl9zdGFydEZpbGVzVXBsb2Fk
KGZpbGVzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIEtsaWNrIGF1ZiBab25lID0g
RGF0ZWlhdXN3YWhsCiAgICAgICAgICAgIGRyb3Bab25lLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr
JywgKGUpID0+IHsKICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC50YWdOYW1lICE9PSAnQlVU
VE9OJykgRHJpdmVFZGl0b3IudXBsb2FkTWVkaWEoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAg
fQogICAgfSwKCiAgICBjbG9zZVVwbG9hZFN0YXJ0TW9kYWwoKSB7CiAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ21lZGlhVXBsb2FkU3RhcnRNb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUo
J2FjdGl2ZScpOwogICAgfSwKCiAgICAvLyBEYXRlaWF1c3dhaGwtRGlhbG9nIChuYXRpdikgb2Vm
Zm5lbgogICAgdXBsb2FkTWVkaWEoKSB7CiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnREb2MgfHwg
IURyaXZlRlMuY29ubmVjdGVkKSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnQml0dGUgenVlcnN0
IGVpbiBEb2t1bWVudCDDtmZmbmVuJywgJ3dhcm5pbmcnKTsKICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgIH0KCiAgICAgICAgY29uc3QgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnaW5wdXQnKTsKICAgICAgICBmaWxlSW5wdXQudHlwZSA9ICdmaWxlJzsKICAgICAgICBmaWxl
SW5wdXQuYWNjZXB0ID0gJ2ltYWdlLyosdmlkZW8vKixhdWRpby8qLC5wZGYsLmRvY3gsLnhsc3gs
LnBwdHgnOwogICAgICAgIGZpbGVJbnB1dC5tdWx0aXBsZSA9IHRydWU7CgogICAgICAgIGZpbGVJ
bnB1dC5vbmNoYW5nZSA9IChlKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXku
ZnJvbShlLnRhcmdldC5maWxlcyk7CiAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDAp
IHJldHVybjsKICAgICAgICAgICAgdGhpcy5fc3RhcnRGaWxlc1VwbG9hZChmaWxlcyk7CiAgICAg
ICAgfTsKCiAgICAgICAgZmlsZUlucHV0LmNsaWNrKCk7CiAgICB9LAoKICAgIC8vIEdlbWVpbnNh
bWVyIEVpbnN0aWVnOiBEYXRlaWVuIGluIEZvcm1hdGllcnVuZ3MtUXVldWUgc3RlbGxlbgogICAg
X3N0YXJ0RmlsZXNVcGxvYWQoZmlsZXMpIHsKICAgICAgICAvLyBDdXJzb3ItUG9zaXRpb24gbWVy
a2VuIGZhbGxzIG5vY2ggbmljaHQgZ2VzY2hlaGVuCiAgICAgICAgaWYgKCF0aGlzLl9zYXZlZEVk
aXRvclJhbmdlKSB7CiAgICAgICAgICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24o
KTsKICAgICAgICAgICAgaWYgKHNlbC5yYW5nZUNvdW50ID4gMCkgewogICAgICAgICAgICAgICAg
dGhpcy5fc2F2ZWRFZGl0b3JSYW5nZSA9IHNlbC5nZXRSYW5nZUF0KDApLmNsb25lUmFuZ2UoKTsK
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0aGlzLl9wZW5kaW5nRmlsZXMgPSBmaWxl
czsKICAgICAgICB0aGlzLl9wZW5kaW5nSW5kZXggPSAwOwogICAgICAgIC8vIEVpbnN0aWVncy1N
b2RhbCBzY2hsaWVzc2VuLCBGb3JtYXRpZXJ1bmdzLURpYWxvZyBvZWZmbmVuCiAgICAgICAgdGhp
cy5jbG9zZVVwbG9hZFN0YXJ0TW9kYWwoKTsKICAgICAgICB0aGlzLnNob3dVcGxvYWREaWFsb2co
KTsKICAgIH0sCgogICAgc2hvd1VwbG9hZERpYWxvZygpIHsKICAgICAgICBpZiAodGhpcy5fcGVu
ZGluZ0luZGV4ID49IHRoaXMuX3BlbmRpbmdGaWxlcy5sZW5ndGgpIHsKICAgICAgICAgICAgdGhp
cy5jbG9zZVVwbG9hZERpYWxvZygpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAg
ICAgICBjb25zdCBmaWxlID0gdGhpcy5fcGVuZGluZ0ZpbGVzW3RoaXMuX3BlbmRpbmdJbmRleF07
CiAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMuZGV0ZWN0TWVkaWFUeXBlKGZpbGUpOwogICAgICAg
IGNvbnN0IHJlbWFpbmluZyA9IHRoaXMuX3BlbmRpbmdGaWxlcy5sZW5ndGggLSB0aGlzLl9wZW5k
aW5nSW5kZXg7CgogICAgICAgIC8vIFJlc2V0IG9wdGlvbnMKICAgICAgICB0aGlzLl91cGxvYWRP
cHRpb25zID0geyBkaXNwbGF5TW9kZTogJ2F0dGFjaG1lbnQnLCBhbGlnbjogJ2NlbnRlcicsIHNp
emU6ICd0aHVtYm5haWwnIH07CgogICAgICAgIC8vIEhlYWRlciBtaXQgRm9ydHNjaHJpdHQKICAg
ICAgICBjb25zdCB0aXRsZUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZERpYWxv
Z1RpdGxlJyk7CiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdGaWxlcy5sZW5ndGggPiAxKSB7CiAg
ICAgICAgICAgIHRpdGxlRWwuaW5uZXJIVE1MID0gJ0RhdGVpIGtvbmZpZ3VyaWVyZW4gPHNwYW4g
c3R5bGU9ImZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTNweDtvcGFjaXR5OjAuODsiPignICsg
KHRoaXMuX3BlbmRpbmdJbmRleCArIDEpICsgJyB2b24gJyArIHRoaXMuX3BlbmRpbmdGaWxlcy5s
ZW5ndGggKyAnKTwvc3Bhbj4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRpdGxlRWwu
dGV4dENvbnRlbnQgPSAnRGF0ZWkga29uZmlndXJpZXJlbic7CiAgICAgICAgfQoKICAgICAgICAv
LyBQcmV2aWV3IG1pdCBEYXRlaWluZm8KICAgICAgICBjb25zdCBwcmV2aWV3ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3VwbG9hZFByZXZpZXcnKTsKICAgICAgICBjb25zdCBmaWxlU2l6ZU1C
ID0gKGZpbGUuc2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSk7CiAgICAgICAgY29uc3Qg
ZmlsZVNpemVUZXh0ID0gZmlsZS5zaXplIDwgMTAyNCoxMDI0CiAgICAgICAgICAgID8gTWF0aC5y
b3VuZChmaWxlLnNpemUgLyAxMDI0KSArICcgS0InCiAgICAgICAgICAgIDogZmlsZVNpemVNQiAr
ICcgTUInOwogICAgICAgIGNvbnN0IGZpbGVJbmZvSHRtbCA9ICc8cCBzdHlsZT0ibWFyZ2luLXRv
cDo4cHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC1zaXplOjEycHg7Ij4nICsKICAgICAg
ICAgICAgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChmaWxlLm5hbWUpICsgJyAoJyArIGZpbGVTaXpl
VGV4dCArICcpPC9wPic7CgogICAgICAgIGlmICh0eXBlID09PSAnaW1hZ2UnKSB7CiAgICAgICAg
ICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgICAgIHJlYWRlci5v
bmxvYWQgPSAoZSkgPT4geyBwcmV2aWV3LmlubmVySFRNTCA9ICc8aW1nIHNyYz0iJyArIGUudGFy
Z2V0LnJlc3VsdCArICciPicgKyBmaWxlSW5mb0h0bWw7IH07CiAgICAgICAgICAgIHJlYWRlci5y
ZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnN0IGlj
b25DbGFzcyA9IHR5cGU7CiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdHlwZS50b1VwcGVyQ2Fz
ZSgpOwogICAgICAgICAgICBwcmV2aWV3LmlubmVySFRNTCA9ICc8c3BhbiBjbGFzcz0iZHJpdmUt
ZmlsZS1pY29uICcgKyBpY29uQ2xhc3MgKyAnIiBzdHlsZT0id2lkdGg6NjBweDtoZWlnaHQ6NjBw
eDtmb250LXNpemU6MThweDttYXJnaW46MTBweCBhdXRvOyI+JyArIGxhYmVsICsgJzwvc3Bhbj4n
ICsgZmlsZUluZm9IdG1sOwogICAgICAgIH0KCiAgICAgICAgLy8gVGl0bGUgKyBDYXB0aW9uCiAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZFRpdGxlJykudmFsdWUgPSBmaWxl
Lm5hbWUucmVwbGFjZSgvXC5bXi5dKyQvLCAnJyk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3VwbG9hZENhcHRpb24nKS52YWx1ZSA9ICcnOwoKICAgICAgICAvLyBEaXNwbGF5IG1v
ZGUgb3B0aW9ucyAodHlwZS1kZXBlbmRlbnQpCiAgICAgICAgY29uc3QgZGlzcGxheUdyb3VwID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZERpc3BsYXlPcHRpb25zJyk7CiAgICAgICAg
bGV0IG9wdGlvbnMgPSAnPGJ1dHRvbiBjbGFzcz0idXBsb2FkLW9wdGlvbi1idG4gYWN0aXZlIiBk
YXRhLWRpc3BsYXk9ImF0dGFjaG1lbnQiIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNldFVwbG9hZE9w
dGlvbihcJ2Rpc3BsYXlcJyx0aGlzKSI+QW5oYW5nPC9idXR0b24+JzsKCiAgICAgICAgaWYgKHR5
cGUgPT09ICdpbWFnZScpIHsKICAgICAgICAgICAgb3B0aW9ucyArPSAnPGJ1dHRvbiBjbGFzcz0i
dXBsb2FkLW9wdGlvbi1idG4iIGRhdGEtZGlzcGxheT0iaW5saW5lIiBvbmNsaWNrPSJEcml2ZUVk
aXRvci5zZXRVcGxvYWRPcHRpb24oXCdkaXNwbGF5XCcsdGhpcykiPkltIEFydGlrZWw8L2J1dHRv
bj4nOwogICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BkZicpIHsKICAgICAgICAgICAgb3B0
aW9ucyArPSAnPGJ1dHRvbiBjbGFzcz0idXBsb2FkLW9wdGlvbi1idG4iIGRhdGEtZGlzcGxheT0i
cGRmLWxpbmsiIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNldFVwbG9hZE9wdGlvbihcJ2Rpc3BsYXlc
Jyx0aGlzKSI+UERGLUxpbmsgaW0gQXJ0aWtlbDwvYnV0dG9uPic7CiAgICAgICAgICAgIG9wdGlv
bnMgKz0gJzxidXR0b24gY2xhc3M9InVwbG9hZC1vcHRpb24tYnRuIiBkYXRhLWRpc3BsYXk9InBk
Zi1pZnJhbWUiIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNldFVwbG9hZE9wdGlvbihcJ2Rpc3BsYXlc
Jyx0aGlzKSI+UERGIGVpbmdlYmV0dGV0PC9idXR0b24+JzsKICAgICAgICB9IGVsc2UgaWYgKHR5
cGUgPT09ICd2aWRlbycgfHwgdHlwZSA9PT0gJ2F1ZGlvJykgewogICAgICAgICAgICBvcHRpb25z
ICs9ICc8YnV0dG9uIGNsYXNzPSJ1cGxvYWQtb3B0aW9uLWJ0biIgZGF0YS1kaXNwbGF5PSJtZWRp
YS1pbmxpbmUiIG9uY2xpY2s9IkRyaXZlRWRpdG9yLnNldFVwbG9hZE9wdGlvbihcJ2Rpc3BsYXlc
Jyx0aGlzKSI+SW0gQXJ0aWtlbDwvYnV0dG9uPic7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09
PSAnZG9jeCcgfHwgdHlwZSA9PT0gJ3hsc3gnIHx8IHR5cGUgPT09ICdwcHR4JykgewogICAgICAg
ICAgICBvcHRpb25zICs9ICc8YnV0dG9uIGNsYXNzPSJ1cGxvYWQtb3B0aW9uLWJ0biIgZGF0YS1k
aXNwbGF5PSJvZmZpY2UtaW5saW5lIiBvbmNsaWNrPSJEcml2ZUVkaXRvci5zZXRVcGxvYWRPcHRp
b24oXCdkaXNwbGF5XCcsdGhpcykiPkltIEFydGlrZWw8L2J1dHRvbj4nOwogICAgICAgIH0KCiAg
ICAgICAgZGlzcGxheUdyb3VwLmlubmVySFRNTCA9IG9wdGlvbnM7CgogICAgICAgIC8vIEhpZGUg
aW1hZ2Utc3BlY2lmaWMgb3B0aW9ucyBpbml0aWFsbHkKICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndXBsb2FkQWxpZ25Hcm91cCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZFNpemVHcm91cCcpLnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7CgogICAgICAgIC8vIENvbmZpcm0tQnV0dG9uIEJlc2NocmlmdHVuZwogICAg
ICAgIGNvbnN0IGNvbmZpcm1CdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkQ29u
ZmlybUJ0bicpOwogICAgICAgIGlmICh0aGlzLl9wZW5kaW5nSW5kZXggPCB0aGlzLl9wZW5kaW5n
RmlsZXMubGVuZ3RoIC0gMSkgewogICAgICAgICAgICBjb25maXJtQnRuLnRleHRDb250ZW50ID0g
J0VpbmbDvGdlbiAmIG7DpGNoc3RlIERhdGVpJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICBjb25maXJtQnRuLnRleHRDb250ZW50ID0gJ0VpbmbDvGdlbic7CiAgICAgICAgfQoKICAgICAg
ICAvLyBTaG93IGRpYWxvZwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWRpYVVw
bG9hZERpYWxvZycpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgfSwKCiAgICBzZXRVcGxv
YWRPcHRpb24oZ3JvdXAsIGJ0bikgewogICAgICAgIC8vIFRvZ2dsZSBhY3RpdmUgaW4gZ3JvdXAK
ICAgICAgICBidG4ucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudXBsb2FkLW9wdGlv
bi1idG4nKS5mb3JFYWNoKGIgPT4gYi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgICAg
ICAgYnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwoKICAgICAgICBpZiAoZ3JvdXAgPT09ICdk
aXNwbGF5JykgewogICAgICAgICAgICBjb25zdCBtb2RlID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0
YS1kaXNwbGF5Jyk7CiAgICAgICAgICAgIHRoaXMuX3VwbG9hZE9wdGlvbnMuZGlzcGxheU1vZGUg
PSBtb2RlOwogICAgICAgICAgICBjb25zdCBpc0lubGluZUltYWdlID0gKG1vZGUgPT09ICdpbmxp
bmUnKTsKICAgICAgICAgICAgY29uc3QgaXNJbmxpbmVQZGYgPSAobW9kZSA9PT0gJ3BkZi1saW5r
JyB8fCBtb2RlID09PSAncGRmLWlmcmFtZScpOwogICAgICAgICAgICBjb25zdCBpc0lubGluZU1l
ZGlhID0gKG1vZGUgPT09ICdtZWRpYS1pbmxpbmUnIHx8IG1vZGUgPT09ICdvZmZpY2UtaW5saW5l
Jyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRBbGlnbkdyb3Vw
Jykuc3R5bGUuZGlzcGxheSA9IChpc0lubGluZUltYWdlIHx8IGlzSW5saW5lUGRmIHx8IGlzSW5s
aW5lTWVkaWEpID8gJycgOiAnbm9uZSc7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd1cGxvYWRTaXplR3JvdXAnKS5zdHlsZS5kaXNwbGF5ID0gaXNJbmxpbmVJbWFnZSA/ICcn
IDogJ25vbmUnOwogICAgICAgIH0gZWxzZSBpZiAoZ3JvdXAgPT09ICdhbGlnbicpIHsKICAgICAg
ICAgICAgdGhpcy5fdXBsb2FkT3B0aW9ucy5hbGlnbiA9IGJ0bi5nZXRBdHRyaWJ1dGUoJ2RhdGEt
YWxpZ24nKTsKICAgICAgICB9IGVsc2UgaWYgKGdyb3VwID09PSAnc2l6ZScpIHsKICAgICAgICAg
ICAgdGhpcy5fdXBsb2FkT3B0aW9ucy5zaXplID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1zaXpl
Jyk7CiAgICAgICAgfQogICAgfSwKCiAgICBjbG9zZVVwbG9hZERpYWxvZygpIHsKICAgICAgICBp
ZiAodGhpcy5fdXBsb2FkSW5Qcm9ncmVzcykgcmV0dXJuOyAvLyBMYXVmZW5kZW4gVXBsb2FkIG5p
Y2h0IGFiYnJlY2hlbgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWRpYVVwbG9h
ZERpYWxvZycpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgIHRoaXMuX3BlbmRp
bmdGaWxlcyA9IFtdOwogICAgICAgIHRoaXMuX3BlbmRpbmdJbmRleCA9IDA7CiAgICAgICAgdGhp
cy5fc2hvd1VwbG9hZFByb2dyZXNzKGZhbHNlKTsKICAgIH0sCgogICAgX3VwbG9hZEluUHJvZ3Jl
c3M6IGZhbHNlLAoKICAgIF9mb3JtYXRCeXRlcyhieXRlcykgewogICAgICAgIGlmIChieXRlcyA8
IDEwMjQpIHJldHVybiBieXRlcyArICcgQic7CiAgICAgICAgaWYgKGJ5dGVzIDwgMTAyNCAqIDEw
MjQpIHJldHVybiAoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDApICsgJyBLQic7CiAgICAgICAgcmV0
dXJuIChieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSkgKyAnIE1CJzsKICAgIH0sCgog
ICAgX3Nob3dVcGxvYWRQcm9ncmVzcyhzaG93KSB7CiAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRQcm9ncmVzc0NvbnRhaW5lcicpOwogICAgICAg
IHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkQ29uZmlybUJ0bicpOwog
ICAgICAgIGlmIChjb250YWluZXIpIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gc2hvdyA/ICcn
IDogJ25vbmUnOwogICAgICAgIGlmIChidG4pIHsKICAgICAgICAgICAgYnRuLmRpc2FibGVkID0g
c2hvdzsKICAgICAgICAgICAgYnRuLnRleHRDb250ZW50ID0gc2hvdyA/ICdXaXJkIGhvY2hnZWxh
ZGVuLi4uJyA6ICdFaW5mw7xnZW4nOwogICAgICAgICAgICBidG4uc3R5bGUub3BhY2l0eSA9IHNo
b3cgPyAnMC41JyA6ICcnOwogICAgICAgICAgICBidG4uc3R5bGUuY3Vyc29yID0gc2hvdyA/ICdu
b3QtYWxsb3dlZCcgOiAnJzsKICAgICAgICB9CiAgICAgICAgaWYgKHNob3cpIHsKICAgICAgICAg
ICAgdmFyIGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRQcm9ncmVzc0Jhcicp
OwogICAgICAgICAgICB2YXIgcGN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZFBy
b2dyZXNzUGN0Jyk7CiAgICAgICAgICAgIHZhciBzaXplRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndXBsb2FkUHJvZ3Jlc3NTaXplJyk7CiAgICAgICAgICAgIGlmIChiYXIpIGJhci5zdHls
ZS53aWR0aCA9ICcwJSc7CiAgICAgICAgICAgIGlmIChwY3QpIHBjdC50ZXh0Q29udGVudCA9ICcw
JSc7CiAgICAgICAgICAgIGlmIChzaXplRWwpIHNpemVFbC50ZXh0Q29udGVudCA9ICcnOwogICAg
ICAgIH0KICAgIH0sCgogICAgYXN5bmMgY29uZmlybVVwbG9hZCgpIHsKICAgICAgICBjb25zdCBm
aWxlID0gdGhpcy5fcGVuZGluZ0ZpbGVzW3RoaXMuX3BlbmRpbmdJbmRleF07CiAgICAgICAgaWYg
KCFmaWxlIHx8IHRoaXMuX3VwbG9hZEluUHJvZ3Jlc3MpIHJldHVybjsKCiAgICAgICAgY29uc3Qg
dHlwZSA9IHRoaXMuZGV0ZWN0TWVkaWFUeXBlKGZpbGUpOwogICAgICAgIGNvbnN0IHRpdGxlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZFRpdGxlJykudmFsdWUudHJpbSgpIHx8IGZp
bGUubmFtZTsKICAgICAgICBjb25zdCBjYXB0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3VwbG9hZENhcHRpb24nKS52YWx1ZS50cmltKCk7CiAgICAgICAgY29uc3Qgb3B0cyA9IHRoaXMu
X3VwbG9hZE9wdGlvbnM7CiAgICAgICAgY29uc3QgbWVkaWFJZCA9IHRoaXMuZ2VuZXJhdGVNZWRp
YUlkKCk7CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAvLyBVcGxvYWQtVUk6IEJ1
dHRvbiBkZWFrdGl2aWVyZW4gKyBGb3J0c2Nocml0dHNiYWxrZW4gYW56ZWlnZW4KICAgICAgICB0
aGlzLl91cGxvYWRJblByb2dyZXNzID0gdHJ1ZTsKICAgICAgICB0aGlzLl9zaG93VXBsb2FkUHJv
Z3Jlc3ModHJ1ZSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8vIFVwbG9hZCBmaWxlIG1p
dCBGb3J0c2Nocml0dHNhbnplaWdlCiAgICAgICAgICAgIGNvbnN0IHJlbFBhdGggPSBhd2FpdCBE
cml2ZUZTLnVwbG9hZE1lZGlhKHRoaXMuY3VycmVudERvYy5pZCwgZmlsZSwgZnVuY3Rpb24ocGN0
LCBsb2FkZWQsIHRvdGFsKSB7CiAgICAgICAgICAgICAgICB2YXIgYmFyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3VwbG9hZFByb2dyZXNzQmFyJyk7CiAgICAgICAgICAgICAgICB2YXIgcGN0
RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkUHJvZ3Jlc3NQY3QnKTsKICAgICAg
ICAgICAgICAgIHZhciBzaXplRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkUHJv
Z3Jlc3NTaXplJyk7CiAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndXBsb2FkUHJvZ3Jlc3NMYWJlbCcpOwogICAgICAgICAgICAgICAgaWYgKGJhcikg
YmFyLnN0eWxlLndpZHRoID0gcGN0ICsgJyUnOwogICAgICAgICAgICAgICAgaWYgKHBjdEVsKSBw
Y3RFbC50ZXh0Q29udGVudCA9IHBjdCArICclJzsKICAgICAgICAgICAgICAgIGlmIChzaXplRWwp
IHNpemVFbC50ZXh0Q29udGVudCA9IHNlbGYuX2Zvcm1hdEJ5dGVzKGxvYWRlZCkgKyAnIC8gJyAr
IHNlbGYuX2Zvcm1hdEJ5dGVzKHRvdGFsKTsKICAgICAgICAgICAgICAgIGlmIChsYWJlbCAmJiBw
Y3QgPj0gMTAwKSBsYWJlbC50ZXh0Q29udGVudCA9ICdXaXJkIHZlcmFyYmVpdGV0Li4uJzsKICAg
ICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBBZGQgdG8gZG9jdW1lbnQgbWVkaWEgbGlzdAog
ICAgICAgICAgICBpZiAoIXRoaXMuY3VycmVudERvYy5tZWRpYXMpIHRoaXMuY3VycmVudERvYy5t
ZWRpYXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5jdXJyZW50RG9jLm1lZGlhcy5wdXNoKHsKICAg
ICAgICAgICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgICAgICAgICB1cmw6IHJlbFBhdGgsCiAg
ICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsCiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjog
Y2FwdGlvbiwKICAgICAgICAgICAgICAgIGRpc3BsYXlNb2RlOiBvcHRzLmRpc3BsYXlNb2RlLAog
ICAgICAgICAgICAgICAgYWxpZ25tZW50OiBvcHRzLmFsaWduLAogICAgICAgICAgICAgICAgc2l6
ZTogb3B0cy5zaXplLAogICAgICAgICAgICAgICAgbWVkaWFJZDogbWVkaWFJZAogICAgICAgICAg
ICB9KTsKCiAgICAgICAgICAgIC8vIEluc2VydCBpbmxpbmUgSFRNTCBpZiByZXF1ZXN0ZWQKICAg
ICAgICAgICAgaWYgKG9wdHMuZGlzcGxheU1vZGUgIT09ICdhdHRhY2htZW50JykgewogICAgICAg
ICAgICAgICAgdGhpcy5pbnNlcnRJbmxpbmVNZWRpYShyZWxQYXRoLCB0eXBlLCB0aXRsZSwgY2Fw
dGlvbiwgb3B0cywgbWVkaWFJZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRoaXMuX3Jl
bmRlck1lZGlhTGlzdCgpOwogICAgICAgICAgICBzaG93VG9hc3QodGl0bGUgKyAnIGhpbnp1Z2Vm
w7xndCcsICdzdWNjZXNzJyk7CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIHNo
b3dUb2FzdCgnRmVobGVyOiAnICsgZXJyLm1lc3NhZ2UsICdlcnJvcicpOwogICAgICAgIH0KCiAg
ICAgICAgLy8gVXBsb2FkIGFiZ2VzY2hsb3NzZW4gLSBVSSB6dXJ1ZWNrc2V0emVuCiAgICAgICAg
dGhpcy5fdXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgIHRoaXMuX3Nob3dVcGxvYWRQ
cm9ncmVzcyhmYWxzZSk7CgogICAgICAgIC8vIFByb2Nlc3MgbmV4dCBmaWxlIG9yIGNsb3NlCiAg
ICAgICAgdGhpcy5fcGVuZGluZ0luZGV4Kys7CiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdJbmRl
eCA8IHRoaXMuX3BlbmRpbmdGaWxlcy5sZW5ndGgpIHsKICAgICAgICAgICAgdGhpcy5zaG93VXBs
b2FkRGlhbG9nKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5jbG9zZVVwbG9h
ZERpYWxvZygpOwogICAgICAgIH0KICAgIH0sCgogICAgaW5zZXJ0SW5saW5lTWVkaWEodXJsLCB0
eXBlLCB0aXRsZSwgY2FwdGlvbiwgb3B0cywgbWVkaWFJZCkgewogICAgICAgIGNvbnN0IGVkaXRv
cklucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7CiAgICAgICAg
bGV0IGVsZW1lbnQ7CgogICAgICAgIGlmICh0eXBlID09PSAnaW1hZ2UnICYmIG9wdHMuZGlzcGxh
eU1vZGUgPT09ICdpbmxpbmUnKSB7CiAgICAgICAgICAgIC8vIEltYWdlIGZpZ3VyZQogICAgICAg
ICAgICBjb25zdCBzaXplQ2xhc3MgPSBvcHRzLnNpemUgPT09ICdsYXJnZScgPyAnZHJpdmUtbWVk
aWEtbGFyZ2UnIDogJ2RyaXZlLW1lZGlhLXRodW1ibmFpbCc7CiAgICAgICAgICAgIGNvbnN0IGFs
aWduQ2xhc3MgPSAnZHJpdmUtYWxpZ24tJyArIG9wdHMuYWxpZ247CgogICAgICAgICAgICBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZmlndXJlJyk7CiAgICAgICAgICAgIGVsZW1l
bnQuY2xhc3NOYW1lID0gJ2RyaXZlLW1lZGlhICcgKyBzaXplQ2xhc3MgKyAnICcgKyBhbGlnbkNs
YXNzOwogICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1pZCcsIG1l
ZGlhSWQpOwogICAgICAgICAgICBlbGVtZW50LmNvbnRlbnRFZGl0YWJsZSA9ICdmYWxzZSc7Cgog
ICAgICAgICAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKICAg
ICAgICAgICAgaW1nLnNyYyA9IHVybDsKICAgICAgICAgICAgaW1nLmFsdCA9IHRpdGxlOwogICAg
ICAgICAgICBpbWcuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInOwogICAgICAgICAgICBpbWcub25j
bGljayA9IGZ1bmN0aW9uKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBlLnN0b3BQcm9wYWdhdGlv
bigpOyBvcGVuTWVkaWFNb2RhbCh1cmwsICdpbWFnZScsIHRpdGxlKTsgfTsKICAgICAgICAgICAg
ZWxlbWVudC5hcHBlbmRDaGlsZChpbWcpOwoKICAgICAgICAgICAgaWYgKGNhcHRpb24pIHsKICAg
ICAgICAgICAgICAgIGNvbnN0IGZpZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ZpZ2NhcHRp
b24nKTsKICAgICAgICAgICAgICAgIGZpZy50ZXh0Q29udGVudCA9IGNhcHRpb247CiAgICAgICAg
ICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGZpZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9
IGVsc2UgaWYgKHR5cGUgPT09ICdwZGYnICYmIG9wdHMuZGlzcGxheU1vZGUgPT09ICdwZGYtbGlu
aycpIHsKICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwogICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdkcml2ZS1tZWRpYSBkcml2ZS1tZWRp
YS1wZGYtbGluayBkcml2ZS1hbGlnbi0nICsgb3B0cy5hbGlnbjsKICAgICAgICAgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtaWQnLCBtZWRpYUlkKTsKICAgICAgICAgICAgZWxl
bWVudC5jb250ZW50RWRpdGFibGUgPSAnZmFsc2UnOwogICAgICAgICAgICBlbGVtZW50LmlubmVy
SFRNTCA9ICc8c3BhbiBjbGFzcz0iZHJpdmUtcGRmLWljb24iPlBERjwvc3Bhbj4nICsKICAgICAg
ICAgICAgICAgICc8c3BhbiBjbGFzcz0icGRmLXRpdGxlIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBl
SFRNTCh0aXRsZSkgKyAnPC9zcGFuPic7CiAgICAgICAgICAgIGVsZW1lbnQub25jbGljayA9IGZ1
bmN0aW9uKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyBvcGVu
TWVkaWFNb2RhbCh1cmwsICdwZGYnLCB0aXRsZSk7IH07CiAgICAgICAgfSBlbHNlIGlmICh0eXBl
ID09PSAncGRmJyAmJiBvcHRzLmRpc3BsYXlNb2RlID09PSAncGRmLWlmcmFtZScpIHsKICAgICAg
ICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAg
ICBlbGVtZW50LmNsYXNzTmFtZSA9ICdkcml2ZS1tZWRpYSBkcml2ZS1tZWRpYS1wZGYtaWZyYW1l
IGRyaXZlLWFsaWduLScgKyBvcHRzLmFsaWduOwogICAgICAgICAgICBlbGVtZW50LnNldEF0dHJp
YnV0ZSgnZGF0YS1tZWRpYS1pZCcsIG1lZGlhSWQpOwogICAgICAgICAgICBlbGVtZW50LmNvbnRl
bnRFZGl0YWJsZSA9ICdmYWxzZSc7CiAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gJzxp
ZnJhbWUgc3JjPSInICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cih1cmwpICsgJyI+PC9pZnJhbWU+
JyArCiAgICAgICAgICAgICAgICAoY2FwdGlvbiA/ICc8cCBjbGFzcz0iZHJpdmUtbWVkaWEtY2Fw
dGlvbiI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoY2FwdGlvbikgKyAnPC9wPicgOiAnJyk7
CiAgICAgICAgICAgIGVsZW1lbnQub25jbGljayA9IGZ1bmN0aW9uKGUpIHsgZS5wcmV2ZW50RGVm
YXVsdCgpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuTWVkaWFNb2RhbCh1cmwsICdwZGYnLCB0
aXRsZSk7IH07CiAgICAgICAgfSBlbHNlIGlmIChvcHRzLmRpc3BsYXlNb2RlID09PSAnbWVkaWEt
aW5saW5lJyAmJiAodHlwZSA9PT0gJ3ZpZGVvJyB8fCB0eXBlID09PSAnYXVkaW8nKSkgewogICAg
ICAgICAgICAvLyBWaWRlby9BdWRpbyBhbHMga2xpY2tiYXJlcyBJY29uLUVsZW1lbnQgaW0gQXJ0
aWtlbAogICAgICAgICAgICB2YXIgaWNvbiA9IHR5cGUgPT09ICd2aWRlbycgPyAnJiMxMjc5MTA7
JyA6ICcmIzEyNzkyNTsnOwogICAgICAgICAgICB2YXIgbGFiZWwgPSB0eXBlID09PSAndmlkZW8n
ID8gJ1ZpZGVvJyA6ICdBdWRpbyc7CiAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZHJpdmUt
bWVkaWEgZHJpdmUtbWVkaWEtZW1iZWQgZHJpdmUtYWxpZ24tJyArIG9wdHMuYWxpZ247CiAgICAg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLWlkJywgbWVkaWFJZCk7CiAg
ICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXR5cGUnLCB0eXBlKTsK
ICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtdXJsJywgdXJsKTsK
ICAgICAgICAgICAgZWxlbWVudC5jb250ZW50RWRpdGFibGUgPSAnZmFsc2UnOwogICAgICAgICAg
ICBlbGVtZW50LnRpdGxlID0gbGFiZWwgKyAnIGFic3BpZWxlbjogJyArIHRpdGxlOwogICAgICAg
ICAgICBlbGVtZW50LmlubmVySFRNTCA9ICc8c3BhbiBjbGFzcz0iZHJpdmUtZW1iZWQtaWNvbiBp
Y29uLScgKyB0eXBlICsgJyI+PC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNz
PSJkcml2ZS1lbWJlZC1sYWJlbCI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwodGl0bGUpICsg
Jzwvc3Bhbj4nOwogICAgICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGUu
cHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgb3Blbk1lZGlhTW9kYWwodXJs
LCB0eXBlLCB0aXRsZSk7IH07CiAgICAgICAgfSBlbHNlIGlmIChvcHRzLmRpc3BsYXlNb2RlID09
PSAnb2ZmaWNlLWlubGluZScgJiYgKHR5cGUgPT09ICdkb2N4JyB8fCB0eXBlID09PSAneGxzeCcg
fHwgdHlwZSA9PT0gJ3BwdHgnKSkgewogICAgICAgICAgICAvLyBPZmZpY2UtRGF0ZWllbiBhbHMg
a2xpY2tiYXJlcyBJY29uLUVsZW1lbnQgaW0gQXJ0aWtlbAogICAgICAgICAgICBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NO
YW1lID0gJ2RyaXZlLW1lZGlhIGRyaXZlLW1lZGlhLWVtYmVkIGRyaXZlLWFsaWduLScgKyBvcHRz
LmFsaWduOwogICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1pZCcs
IG1lZGlhSWQpOwogICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS10
eXBlJywgdHlwZSk7CiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlh
LXVybCcsIHVybCk7CiAgICAgICAgICAgIGVsZW1lbnQuY29udGVudEVkaXRhYmxlID0gJ2ZhbHNl
JzsKICAgICAgICAgICAgZWxlbWVudC50aXRsZSA9IHR5cGUudG9VcHBlckNhc2UoKSArICcgaGVy
dW50ZXJsYWRlbjogJyArIHRpdGxlOwogICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICc8
c3BhbiBjbGFzcz0iZHJpdmUtZW1iZWQtaWNvbiBpY29uLScgKyB0eXBlICsgJyI+PC9zcGFuPicg
KwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJkcml2ZS1lbWJlZC1sYWJlbCI+JyArIERy
aXZlUG9ydGFsLmVzY2FwZUhUTUwodGl0bGUpICsgJzwvc3Bhbj4nOwogICAgICAgICAgICBlbGVt
ZW50Lm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJv
cGFnYXRpb24oKTsgb3Blbk1lZGlhTW9kYWwodXJsLCB0eXBlLCB0aXRsZSk7IH07CiAgICAgICAg
fQoKICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybjsKCiAgICAgICAgLy8gSW5zZXJ0IGF0IGN1
cnNvciBwb3NpdGlvbiBvciBhcHBlbmQKICAgICAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CiAgICAgICAgaWYgKHRoaXMuX3NhdmVkRWRpdG9yUmFuZ2UgJiYgZWRpdG9ySW5w
dXQuY29udGFpbnModGhpcy5fc2F2ZWRFZGl0b3JSYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5l
cikpIHsKICAgICAgICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICAgICBzZWwu
YWRkUmFuZ2UodGhpcy5fc2F2ZWRFZGl0b3JSYW5nZSk7CiAgICAgICAgICAgIGNvbnN0IHJhbmdl
ID0gc2VsLmdldFJhbmdlQXQoMCk7CiAgICAgICAgICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7
CiAgICAgICAgICAgIHJhbmdlLmluc2VydE5vZGUoZWxlbWVudCk7CiAgICAgICAgICAgIC8vIFBs
YWNlIGN1cnNvciBhZnRlciBlbGVtZW50CiAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIo
ZWxlbWVudCk7CiAgICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpOwogICAgICAgICAgICBz
ZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAgICAgICAgICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7CiAg
ICAgICAgICAgIHRoaXMuX3NhdmVkRWRpdG9yUmFuZ2UgPSByYW5nZS5jbG9uZVJhbmdlKCk7CiAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWRpdG9ySW5wdXQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CiAgICAgICAgfQogICAgfSwKCiAgICAvLyAtLS0gTWVkaWEgQ29udGV4dCBNZW51IChpbiBF
ZGl0b3IpIC0tLQogICAgX2NvbnRleHRUYXJnZXQ6IG51bGwsCgogICAgLy8gLS0tIFNjaGxhZ3fD
tnJ0ZXIgLS0tCiAgICBQUkVERUZJTkVEX0tFWVdPUkRTOiBbCiAgICAgICAgJ1NvemlhbHZvcnNj
aHJpZnRlbicsICdMYWR1bmdzc2ljaGVydW5nJywgJ8OcYmVybGFkdW5nJywgJ0tPTScsICdHR1ZT
JywKICAgICAgICAnRmFocnpldWd0ZWNobmlrJywgJ1RlY2hLb250cm9sbFZPJywgJ0thYm90YWdl
JywgJ0Rva3VtZW50ZW5mw6Rsc2NodW5nJywKICAgICAgICAnWnVsYXNzdW5nZW4nLCAnWnVsYXNz
dW5nZW4gbmF0aW9uYWwnLCAnWnVsYXNzdW5nZW4gaW50ZXJuYXRpb25hbCcsCiAgICAgICAgJ0Fs
a29ob2wnLCAnQlRNJywgJ0dlc2Nod2luZGlna2VpdCcsICdBYnN0YW5kJywgJ0ZhbHNjaGZhaHJl
cicsCiAgICAgICAgJ1ZlcmZvbGd1bmdzZmFocnQnLCAnVHVubmVsJywgJ1N0w7ZyZmFsbCcsICdG
b3RvZ3JhZmllJywKICAgICAgICAnRm90b2dyYWZpZSBCcsO8Y2tlJywgJ0ZvdG9ncmFmaWUgQmF1
c3RlbGxlJywgJ0ZvdG9ncmFmaWUgQWJzdGFuZCcsCiAgICAgICAgJ1R1bmluZycsICdWS1InLCAn
U2NobGVwcGVuJywgJ1NjaHJvdHRzYW1tbGVyJwogICAgXSwKICAgIC8vIFVudGVya2F0ZWdvcmll
bjogS2F0ZWdvcmllIC0+IFN1Yi1UYWdzIChmdWVyIEtsYW1tZXJ2ZXJtZXJrIGltIFRpdGVsICsg
QXV0by1UYWcpCiAgICBDQVRFR09SWV9TVUJUQUdTOiB7CiAgICAgICAgJ1p1bGFzc3VuZ2VuJzog
WyduYXRpb25hbCcsICdpbnRlcm5hdGlvbmFsJ10sCiAgICAgICAgJ0ZvdG9ncmFmaWUnOiAgWydC
csO8Y2tlJywgJ0JhdXN0ZWxsZScsICdBYnN0YW5kJ10KICAgIH0sCiAgICBfY3VycmVudEtleXdv
cmRzOiBbXSwKCiAgICBfZ2V0QWxsS25vd25LZXl3b3JkcygpIHsKICAgICAgICBjb25zdCBzZXQg
PSBuZXcgU2V0KHRoaXMuUFJFREVGSU5FRF9LRVlXT1JEUyk7CiAgICAgICAgRHJpdmVGUy5kb2N1
bWVudHMuZm9yRWFjaChkID0+IChkLnNjaGxhZ3dvZXJ0ZXIgfHwgW10pLmZvckVhY2goayA9PiBz
ZXQuYWRkKGspKSk7CiAgICAgICAgcmV0dXJuIFsuLi5zZXRdLnNvcnQoKGEsIGIpID0+IGEubG9j
YWxlQ29tcGFyZShiLCAnZGUnKSk7CiAgICB9LAoKICAgIF9yZW5kZXJLZXl3b3JkcygpIHsKICAg
ICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yS2V5
d29yZHMnKTsKICAgICAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
ZGl0b3JLZXl3b3JkSW5wdXQnKTsKICAgICAgICBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgn
LmtleXdvcmQtcGlsbCcpLmZvckVhY2gocCA9PiBwLnJlbW92ZSgpKTsKICAgICAgICB0aGlzLl9j
dXJyZW50S2V5d29yZHMuZm9yRWFjaCgoa3csIGkpID0+IHsKICAgICAgICAgICAgY29uc3QgcGls
bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgcGlsbC5jbGFz
c05hbWUgPSAna2V5d29yZC1waWxsJzsKICAgICAgICAgICAgcGlsbC5pbm5lckhUTUwgPSBEcml2
ZVBvcnRhbC5lc2NhcGVIVE1MKGt3KSArICcgPHNwYW4gY2xhc3M9Imt3LXJlbW92ZSIgb25jbGlj
az0iRHJpdmVFZGl0b3IucmVtb3ZlS2V5d29yZCgnICsgaSArICcpIj4mdGltZXM7PC9zcGFuPic7
CiAgICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRCZWZvcmUocGlsbCwgaW5wdXQpOwogICAgICAg
IH0pOwogICAgICAgIHRoaXMuX3JlbmRlclN1Z2dlc3Rpb25zKCk7CiAgICB9LAoKICAgIF9yZW5k
ZXJTdWdnZXN0aW9ucygpIHsKICAgICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdrZXl3b3JkU3VnZ2VzdGlvbnMnKTsKICAgICAgICBpZiAoIXBhbmVsKSByZXR1cm47
CiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRLZXl3b3JkczsKICAgICAgICBj
b25zdCBkb2MgPSB0aGlzLmN1cnJlbnREb2M7CiAgICAgICAgY29uc3Qga2F0ZWdvcmllID0gZG9j
ID8gZG9jLmthdGVnb3JpZSA6ICcnOwoKICAgICAgICAvLyBBbGxlIGJla2FubnRlbiBTY2hsYWd3
w7ZydGVyIHNhbW1lbG4gbWl0IEdld2ljaHR1bmcKICAgICAgICB2YXIga3dTY29yZXMgPSB7fTsK
ICAgICAgICBEcml2ZUZTLmRvY3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICAg
ICAgdmFyIHJlbGV2YW5jZSA9IDE7CiAgICAgICAgICAgIGlmIChkLmthdGVnb3JpZSA9PT0ga2F0
ZWdvcmllKSByZWxldmFuY2UgPSAzOyAvLyBnbGVpY2hlIEthdGVnb3JpZSA9IGjDtmhlcmUgUmVs
ZXZhbnoKICAgICAgICAgICAgaWYgKGQucGFyZW50SWQgPT09IChkb2MgJiYgZG9jLmlkKSkgcmVs
ZXZhbmNlID0gNDsgLy8gVW50ZXJhcnRpa2VsCiAgICAgICAgICAgIGlmIChkb2MgJiYgZG9jLnBh
cmVudElkICYmIGQuaWQgPT09IGRvYy5wYXJlbnRJZCkgcmVsZXZhbmNlID0gNDsgLy8gw5xiZXJh
cnRpa2VsCiAgICAgICAgICAgIC8vIFRoZW1lbsOkaG5saWNoa2VpdDogZ2VtZWluc2FtZSBTY2hs
YWd3w7ZydGVyCiAgICAgICAgICAgIHZhciBvdmVybGFwID0gKGQuc2NobGFnd29lcnRlciB8fCBb
XSkuZmlsdGVyKGZ1bmN0aW9uKGspIHsgcmV0dXJuIGN1cnJlbnQuaW5jbHVkZXMoayk7IH0pLmxl
bmd0aDsKICAgICAgICAgICAgaWYgKG92ZXJsYXAgPiAwKSByZWxldmFuY2UgKz0gb3ZlcmxhcCAq
IDI7CiAgICAgICAgICAgIChkLnNjaGxhZ3dvZXJ0ZXIgfHwgW10pLmZvckVhY2goZnVuY3Rpb24o
aykgewogICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50LmluY2x1ZGVzKGspKSB7CiAgICAgICAg
ICAgICAgICAgICAga3dTY29yZXNba10gPSAoa3dTY29yZXNba10gfHwgMCkgKyByZWxldmFuY2U7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAv
LyBWb3JkZWZpbmllcnRlIEtleXdvcmRzIGFscyBCYXNpcy1Wb3JzY2hsw6RnZSBtaXQgbmllZHJp
Z2VyIEdld2ljaHR1bmcKICAgICAgICB0aGlzLlBSRURFRklORURfS0VZV09SRFMuZm9yRWFjaChm
dW5jdGlvbihrKSB7CiAgICAgICAgICAgIGlmICghY3VycmVudC5pbmNsdWRlcyhrKSAmJiAha3dT
Y29yZXNba10pIGt3U2NvcmVzW2tdID0gMC41OwogICAgICAgIH0pOwogICAgICAgIC8vIFVudGVy
a2F0ZWdvcmllLVN1Yi1UYWdzIGRlciBha3R1ZWxsZW4gS2F0ZWdvcmllIGhvY2ggcHJpb3Jpc2ll
cmVuCiAgICAgICAgdmFyIGNhdFN1YnMgPSB0aGlzLkNBVEVHT1JZX1NVQlRBR1Nba2F0ZWdvcmll
XSB8fCBbXTsKICAgICAgICBjYXRTdWJzLmZvckVhY2goZnVuY3Rpb24ocykgewogICAgICAgICAg
ICBpZiAoIWN1cnJlbnQuaW5jbHVkZXMocykpIGt3U2NvcmVzW3NdID0gKGt3U2NvcmVzW3NdIHx8
IDApICsgNTsKICAgICAgICB9KTsKICAgICAgICB2YXIgc29ydGVkID0gT2JqZWN0LmVudHJpZXMo
a3dTY29yZXMpLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGJbMV0gLSBhWzFdOyB9KS5zbGlj
ZSgwLCAxNSk7CgogICAgICAgIGlmIChzb3J0ZWQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAg
IHBhbmVsLmlubmVySFRNTCA9ICcnOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAg
ICAgICBwYW5lbC5pbm5lckhUTUwgPSAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMHB4O2NvbG9y
OnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi1yaWdodDo0cHg7Ij5Wb3JzY2hsw6RnZTo8L3NwYW4+
JyArCiAgICAgICAgICAgIHNvcnRlZC5tYXAoZnVuY3Rpb24oa3YpIHsKICAgICAgICAgICAgICAg
IHJldHVybiAnPHNwYW4gY2xhc3M9ImtleXdvcmQtc3VnZ2VzdGlvbiIgb25jbGljaz0iRHJpdmVF
ZGl0b3IuYWRkS2V5d29yZChcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGt2WzBdKSArICdc
JykiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGt2WzBdKSArICc8L3NwYW4+JzsKICAgICAg
ICAgICAgfSkuam9pbignJyk7CiAgICB9LAoKICAgIGFkZEtleXdvcmQod29yZCkgewogICAgICAg
IHdvcmQgPSB3b3JkLnRyaW0oKTsKICAgICAgICBpZiAoIXdvcmQgfHwgdGhpcy5fY3VycmVudEtl
eXdvcmRzLmluY2x1ZGVzKHdvcmQpKSByZXR1cm47CiAgICAgICAgdGhpcy5fY3VycmVudEtleXdv
cmRzLnB1c2god29yZCk7CiAgICAgICAgdGhpcy5fcmVuZGVyS2V5d29yZHMoKTsKICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yS2V5d29yZElucHV0JykudmFsdWUgPSAnJzsK
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna2V5d29yZEF1dG9jb21wbGV0ZScpLmNs
YXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgfSwKCiAgICByZW1vdmVLZXl3b3JkKGluZGV4
KSB7CiAgICAgICAgdGhpcy5fY3VycmVudEtleXdvcmRzLnNwbGljZShpbmRleCwgMSk7CiAgICAg
ICAgdGhpcy5fcmVuZGVyS2V5d29yZHMoKTsKICAgIH0sCgogICAgX3NldHVwS2V5d29yZElucHV0
KCkgewogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRv
cktleXdvcmRJbnB1dCcpOwogICAgICAgIGNvbnN0IGFjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2tleXdvcmRBdXRvY29tcGxldGUnKTsKICAgICAgICBpbnB1dC5vbmtleWRvd24gPSAoZSkg
PT4gewogICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcsJykg
ewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdGhp
cy5hZGRLZXl3b3JkKGlucHV0LnZhbHVlLnJlcGxhY2UoJywnLCAnJykpOwogICAgICAgICAgICB9
IGVsc2UgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyAmJiAhaW5wdXQudmFsdWUgJiYgdGhpcy5f
Y3VycmVudEtleXdvcmRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHRoaXMucmVtb3Zl
S2V5d29yZCh0aGlzLl9jdXJyZW50S2V5d29yZHMubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgIH0K
ICAgICAgICB9OwogICAgICAgIGlucHV0Lm9uaW5wdXQgPSAoKSA9PiB7CiAgICAgICAgICAgIGNv
bnN0IHEgPSBpbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTsKICAgICAgICAgICAgaWYg
KHEubGVuZ3RoIDwgMSkgeyBhYy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsgcmV0dXJuOyB9
CiAgICAgICAgICAgIGNvbnN0IGtub3duID0gdGhpcy5fZ2V0QWxsS25vd25LZXl3b3JkcygpLmZp
bHRlcihrID0+CiAgICAgICAgICAgICAgICBrLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgJiYg
IXRoaXMuX2N1cnJlbnRLZXl3b3Jkcy5pbmNsdWRlcyhrKQogICAgICAgICAgICApLnNsaWNlKDAs
IDgpOwogICAgICAgICAgICBpZiAoa25vd24ubGVuZ3RoID09PSAwKSB7IGFjLmNsYXNzTGlzdC5y
ZW1vdmUoJ2FjdGl2ZScpOyByZXR1cm47IH0KICAgICAgICAgICAgYWMuaW5uZXJIVE1MID0ga25v
d24ubWFwKGsgPT4KICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJrZXl3b3JkLWF1dG9jb21w
bGV0ZS1pdGVtIiBvbm1vdXNlZG93bj0iRHJpdmVFZGl0b3IuYWRkS2V5d29yZChcJycgKyBEcml2
ZVBvcnRhbC5lc2NhcGVBdHRyKGspICsgJ1wnKSI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwo
aykgKyAnPC9kaXY+JwogICAgICAgICAgICApLmpvaW4oJycpOwogICAgICAgICAgICBhYy5jbGFz
c0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICB9OwogICAgICAgIGlucHV0Lm9uYmx1ciA9ICgp
ID0+IHNldFRpbWVvdXQoKCkgPT4gYWMuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyksIDIwMCk7
CiAgICB9LAoKICAgIF9zZWxlY3RlZEJsb2NrOiBudWxsLAoKICAgIF9zZWxlY3RCbG9jayhibG9j
aykgewogICAgICAgIHRoaXMuX2Rlc2VsZWN0QmxvY2soKTsKICAgICAgICB0aGlzLl9zZWxlY3Rl
ZEJsb2NrID0gYmxvY2s7CiAgICAgICAgYmxvY2suc3R5bGUub3V0bGluZSA9ICcycHggc29saWQg
dmFyKC0tdGV4dC1oZWFkaW5nKSc7CiAgICAgICAgYmxvY2suc3R5bGUub3V0bGluZU9mZnNldCA9
ICcycHgnOwogICAgfSwKCiAgICBfZGVzZWxlY3RCbG9jaygpIHsKICAgICAgICBpZiAodGhpcy5f
c2VsZWN0ZWRCbG9jaykgewogICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEJsb2NrLnN0eWxlLm91
dGxpbmUgPSAnJzsKICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRCbG9jay5zdHlsZS5vdXRsaW5l
T2Zmc2V0ID0gJyc7CiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQmxvY2sgPSBudWxsOwogICAg
ICAgIH0KICAgIH0sCgogICAgc2V0dXBFZGl0b3JNZWRpYUV2ZW50cygpIHsKICAgICAgICBjb25z
dCBlZGl0b3JJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JJbnB1dCcpOwog
ICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzOwoKICAgICAgICBlZGl0b3JJbnB1dC5hZGRFdmVudExp
c3RlbmVyKCdjbGljaycsIChlKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IG1lZGlhID0gZS50YXJn
ZXQuY2xvc2VzdCgnLmRyaXZlLW1lZGlhJyk7CiAgICAgICAgICAgIGlmIChtZWRpYSAmJiBlZGl0
b3JJbnB1dC5jb250YWlucyhtZWRpYSkpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1
bHQoKTsKICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51KG1lZGlhLCBlKTsKICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gS2xpY2sg
YXVmIEFjY29yZGlvbiwgRkFRLCBUYWJlbGxlOiBtYXJraWVyZW4KICAgICAgICAgICAgdmFyIGJs
b2NrID0gZS50YXJnZXQuY2xvc2VzdCgnLmRyaXZlLWFjY29yZGlvbiwgLmRyaXZlLWZhcSwgLmRy
aXZlLXRhYmxlLXdyYXAsIC5kcml2ZS1pbmZvYm94LCBoci5kcml2ZS1kaXZpZGVyJyk7CiAgICAg
ICAgICAgIGlmIChibG9jayAmJiBlZGl0b3JJbnB1dC5jb250YWlucyhibG9jaykpIHsKICAgICAg
ICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVj
dEJsb2NrKGJsb2NrKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMu
X2Rlc2VsZWN0QmxvY2soKTsKICAgICAgICAgICAgICAgIHRoaXMuaGlkZUNvbnRleHRNZW51KCk7
CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gQmFja3NwYWNlL0RlbGV0ZSBs
b2VzY2h0IG1hcmtpZXJ0ZW4gQmxvY2sKICAgICAgICBlZGl0b3JJbnB1dC5hZGRFdmVudExpc3Rl
bmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoc2VsZi5fc2VsZWN0
ZWRCbG9jayAmJiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykp
IHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHNl
bGYuX3NlbGVjdGVkQmxvY2sucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICBzZWxmLl9zZWxlY3Rl
ZEJsb2NrID0gbnVsbDsKICAgICAgICAgICAgICAgIHNlbGYuc2F2ZVN0YXRlKCk7CiAgICAgICAg
ICAgIH0KICAgICAgICB9KTsKICAgIH0sCgogICAgc2hvd0NvbnRleHRNZW51KGVsZW1lbnQsIGV2
ZW50KSB7CiAgICAgICAgdGhpcy5fY29udGV4dFRhcmdldCA9IGVsZW1lbnQ7CiAgICAgICAgY29u
c3QgbWVudSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWRpYUNvbnRleHRNZW51Jyk7CiAg
ICAgICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CgogICAg
ICAgIG1lbnUuc3R5bGUudG9wID0gKHJlY3QuYm90dG9tICsgd2luZG93LnNjcm9sbFkgKyA1KSAr
ICdweCc7CiAgICAgICAgbWVudS5zdHlsZS5sZWZ0ID0gTWF0aC5taW4ocmVjdC5sZWZ0ICsgd2lu
ZG93LnNjcm9sbFgsIHdpbmRvdy5pbm5lcldpZHRoIC0gMjAwKSArICdweCc7CiAgICAgICAgbWVu
dS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKCiAgICAgICAgLy8gSGlnaGxpZ2h0IGN1cnJlbnQg
YWxpZ25tZW50CiAgICAgICAgY29uc3QgY3VycmVudEFsaWduID0gZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoJ2RyaXZlLWFsaWduLWxlZnQnKSA/ICdsZWZ0JwogICAgICAgICAgICA6IGVsZW1l
bnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcml2ZS1hbGlnbi1yaWdodCcpID8gJ3JpZ2h0JyA6ICdj
ZW50ZXInOwogICAgICAgIG1lbnUucXVlcnlTZWxlY3RvckFsbCgnLm1lZGlhLWNvbnRleHQtZ3Jv
dXAgYnV0dG9uJykuZm9yRWFjaChidG4gPT4gewogICAgICAgICAgICBidG4uY2xhc3NMaXN0LnRv
Z2dsZSgnYWN0aXZlJywgYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1hbGlnbicpID09PSBjdXJyZW50
QWxpZ24pOwogICAgICAgIH0pOwogICAgfSwKCiAgICBoaWRlQ29udGV4dE1lbnUoKSB7CiAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lZGlhQ29udGV4dE1lbnUnKS5jbGFzc0xpc3Qu
cmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICB0aGlzLl9jb250ZXh0VGFyZ2V0ID0gbnVsbDsKICAg
IH0sCgogICAgY29udGV4dEFsaWduKGFsaWduKSB7CiAgICAgICAgaWYgKCF0aGlzLl9jb250ZXh0
VGFyZ2V0KSByZXR1cm47CiAgICAgICAgdGhpcy5fY29udGV4dFRhcmdldC5jbGFzc0xpc3QucmVt
b3ZlKCdkcml2ZS1hbGlnbi1sZWZ0JywgJ2RyaXZlLWFsaWduLWNlbnRlcicsICdkcml2ZS1hbGln
bi1yaWdodCcpOwogICAgICAgIHRoaXMuX2NvbnRleHRUYXJnZXQuY2xhc3NMaXN0LmFkZCgnZHJp
dmUtYWxpZ24tJyArIGFsaWduKTsKCiAgICAgICAgLy8gVXBkYXRlIG1lZGlhIG1ldGFkYXRhCiAg
ICAgICAgY29uc3QgbWVkaWFJZCA9IHRoaXMuX2NvbnRleHRUYXJnZXQuZ2V0QXR0cmlidXRlKCdk
YXRhLW1lZGlhLWlkJyk7CiAgICAgICAgaWYgKG1lZGlhSWQgJiYgdGhpcy5jdXJyZW50RG9jKSB7
CiAgICAgICAgICAgIGNvbnN0IG1lZGlhID0gKHRoaXMuY3VycmVudERvYy5tZWRpYXMgfHwgW10p
LmZpbmQobSA9PiBtLm1lZGlhSWQgPT09IG1lZGlhSWQpOwogICAgICAgICAgICBpZiAobWVkaWEp
IG1lZGlhLmFsaWdubWVudCA9IGFsaWduOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5oaWRlQ29u
dGV4dE1lbnUoKTsKICAgIH0sCgogICAgY29udGV4dEVkaXRDYXB0aW9uKCkgewogICAgICAgIGlm
ICghdGhpcy5fY29udGV4dFRhcmdldCkgcmV0dXJuOwogICAgICAgIGNvbnN0IGZpZ2NhcHRpb24g
PSB0aGlzLl9jb250ZXh0VGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJ2ZpZ2NhcHRpb24sIC5kcml2ZS1t
ZWRpYS1jYXB0aW9uJyk7CiAgICAgICAgY29uc3QgY3VycmVudCA9IGZpZ2NhcHRpb24gPyBmaWdj
YXB0aW9uLnRleHRDb250ZW50IDogJyc7CiAgICAgICAgY29uc3QgbmV3Q2FwdGlvbiA9IHByb21w
dCgnVW50ZXJ0aXRlbCBiZWFyYmVpdGVuOicsIGN1cnJlbnQpOwogICAgICAgIGlmIChuZXdDYXB0
aW9uID09PSBudWxsKSByZXR1cm47CgogICAgICAgIGlmIChmaWdjYXB0aW9uKSB7CiAgICAgICAg
ICAgIGlmIChuZXdDYXB0aW9uKSB7IGZpZ2NhcHRpb24udGV4dENvbnRlbnQgPSBuZXdDYXB0aW9u
OyB9CiAgICAgICAgICAgIGVsc2UgeyBmaWdjYXB0aW9uLnJlbW92ZSgpOyB9CiAgICAgICAgfSBl
bHNlIGlmIChuZXdDYXB0aW9uKSB7CiAgICAgICAgICAgIGNvbnN0IGNhcCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2ZpZ2NhcHRpb24nKTsKICAgICAgICAgICAgY2FwLnRleHRDb250ZW50ID0g
bmV3Q2FwdGlvbjsKICAgICAgICAgICAgdGhpcy5fY29udGV4dFRhcmdldC5hcHBlbmRDaGlsZChj
YXApOwogICAgICAgIH0KCiAgICAgICAgLy8gVXBkYXRlIG1ldGFkYXRhCiAgICAgICAgY29uc3Qg
bWVkaWFJZCA9IHRoaXMuX2NvbnRleHRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLWlk
Jyk7CiAgICAgICAgaWYgKG1lZGlhSWQgJiYgdGhpcy5jdXJyZW50RG9jKSB7CiAgICAgICAgICAg
IGNvbnN0IG1lZGlhID0gKHRoaXMuY3VycmVudERvYy5tZWRpYXMgfHwgW10pLmZpbmQobSA9PiBt
Lm1lZGlhSWQgPT09IG1lZGlhSWQpOwogICAgICAgICAgICBpZiAobWVkaWEpIG1lZGlhLmRlc2Ny
aXB0aW9uID0gbmV3Q2FwdGlvbjsKICAgICAgICB9CgogICAgICAgIHRoaXMuaGlkZUNvbnRleHRN
ZW51KCk7CiAgICB9LAoKICAgIGNvbnRleHRSZW1vdmUoKSB7CiAgICAgICAgaWYgKCF0aGlzLl9j
b250ZXh0VGFyZ2V0KSByZXR1cm47CiAgICAgICAgY29uc3QgbWVkaWFJZCA9IHRoaXMuX2NvbnRl
eHRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLWlkJyk7CiAgICAgICAgaWYgKG1lZGlh
SWQgJiYgdGhpcy5jdXJyZW50RG9jICYmIHRoaXMuY3VycmVudERvYy5tZWRpYXMpIHsKICAgICAg
ICAgICAgY29uc3QgaWR4ID0gdGhpcy5jdXJyZW50RG9jLm1lZGlhcy5maW5kSW5kZXgobSA9PiBt
Lm1lZGlhSWQgPT09IG1lZGlhSWQpOwogICAgICAgICAgICBpZiAoaWR4ID49IDApIHsKICAgICAg
ICAgICAgICAgIGNvbnN0IG1lZGlhID0gdGhpcy5jdXJyZW50RG9jLm1lZGlhc1tpZHhdOwogICAg
ICAgICAgICAgICAgLy8gRGF0ZWkgYXVmIGRlbSBTZXJ2ZXIgbG9lc2NoZW4KICAgICAgICAgICAg
ICAgIGlmIChtZWRpYS51cmwgJiYgRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAg
ICAgICAgICAgICAgIGZldGNoKCcvYXBpL2RlbGV0ZScsIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0Nv
bnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyB9LAogICAgICAg
ICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBhdGg6IG1lZGlhLnVybCB9
KQogICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHt9KTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERvYy5tZWRpYXMuc3BsaWNlKGlkeCwgMSk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5fY29udGV4dFRhcmdldC5yZW1v
dmUoKTsKICAgICAgICB0aGlzLl9yZW5kZXJNZWRpYUxpc3QoKTsKICAgICAgICB0aGlzLmhpZGVD
b250ZXh0TWVudSgpOwogICAgICAgIHNob3dUb2FzdCgnTWVkaXVtIGVudGZlcm50JywgJ3N1Y2Nl
c3MnKTsKICAgIH0sCgogICAgLy8gLS0tIE1lZGllbi1WZXJ3YWx0dW5nIGltIEVkaXRvciAtLS0K
ICAgIHRvZ2dsZU1lZGlhUGFuZWwoKSB7CiAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZWRpdG9yTWVkaWFQYW5lbCcpOwogICAgICAgIGlmIChwYW5lbC5zdHls
ZS5kaXNwbGF5ID09PSAnbm9uZScpIHsKICAgICAgICAgICAgdGhpcy5fcmVuZGVyTWVkaWFMaXN0
KCk7CiAgICAgICAgICAgIHBhbmVsLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICBwYW5lbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0KICAg
IH0sCgogICAgX3JlbmRlck1lZGlhTGlzdCgpIHsKICAgICAgICBjb25zdCBjb250YWluZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yTWVkaWFMaXN0Jyk7CiAgICAgICAgY29uc3Qg
cGFuZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yTWVkaWFQYW5lbCcpOwogICAg
ICAgIGlmICghY29udGFpbmVyIHx8ICF0aGlzLmN1cnJlbnREb2MpIHJldHVybjsKICAgICAgICBj
b25zdCBtZWRpYXMgPSB0aGlzLmN1cnJlbnREb2MubWVkaWFzIHx8IFtdOwoKICAgICAgICBpZiAo
bWVkaWFzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0g
JzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsgcGFk
ZGluZzo4cHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjEuODsiPicgKwogICAg
ICAgICAgICAgICAgJ05vY2gga2VpbmUgRGF0ZWllbiBob2NoZ2VsYWRlbi48YnI+JyArCiAgICAg
ICAgICAgICAgICAnPGJ1dHRvbiBvbmNsaWNrPSJEcml2ZUVkaXRvci5zaG93VXBsb2FkTW9kYWwo
KSIgc3R5bGU9Im1hcmdpbi10b3A6NHB4O3BhZGRpbmc6NHB4IDE0cHg7Ym9yZGVyOjFweCBkYXNo
ZWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kOm5vbmU7
Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsi
PkRhdGVpZW4gaG9jaGxhZGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0g
bWVkaWFzLm1hcCgobSwgaSkgPT4gewogICAgICAgICAgICBjb25zdCB0eXBlID0gKG0udHlwZSB8
fCAnZmlsZScpLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gRHJpdmVQ
b3J0YWwuZXNjYXBlSFRNTChtLnRpdGxlIHx8IG0udXJsLnNwbGl0KCcvJykucG9wKCkpOwogICAg
ICAgICAgICBjb25zdCBkZXNjID0gbS5kZXNjcmlwdGlvbiA/IERyaXZlUG9ydGFsLmVzY2FwZUhU
TUwobS5kZXNjcmlwdGlvbikgOiAnJzsKICAgICAgICAgICAgY29uc3QgbW9kZSA9IG0uZGlzcGxh
eU1vZGUgPT09ICdpbmxpbmUnID8gJ0lubGluZScgOiBtLmRpc3BsYXlNb2RlID09PSAncGRmLWlm
cmFtZScgPyAnRWluZ2ViZXR0ZXQnIDogJ0FuaGFuZyc7CiAgICAgICAgICAgIHJldHVybiAnPGRp
diBzdHlsZT0iZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7IHBhZGRp
bmc6NHB4IDA7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7IGZv
bnQtc2l6ZToxMnB4OyI+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtd2Vp
Z2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgbWluLXdpZHRoOjQwcHg7Ij4nICsg
dHlwZSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZsZXg6MTsg
b3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dy
YXA7IiB0aXRsZT0iJyArIERyaXZlUG9ydGFsLmVzY2FwZUF0dHIobS51cmwpICsgJyI+JyArIHRp
dGxlICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iY29sb3I6dmFy
KC0tdGV4dC1tdXRlZCk7IGZvbnQtc2l6ZToxMHB4OyI+JyArIG1vZGUgKyAnPC9zcGFuPicgKwog
ICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJpdmVFZGl0b3IuZWRpdE1lZGlhKCcg
KyBpICsgJykiIHN0eWxlPSJiYWNrZ3JvdW5kOm5vbmU7IGJvcmRlcjoxcHggc29saWQgdmFyKC0t
Ym9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6MXB4IDZweDsgZm9udC1z
aXplOjExcHg7IGN1cnNvcjpwb2ludGVyOyBjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+QmVh
cmJlaXRlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0iRHJp
dmVFZGl0b3IucmVtb3ZlTWVkaWEoJyArIGkgKyAnKSIgc3R5bGU9ImJhY2tncm91bmQ6bm9uZTsg
Ym9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoxcHgg
NnB4OyBmb250LXNpemU6MTFweDsgY3Vyc29yOnBvaW50ZXI7IGNvbG9yOiNkYzM1NDU7Ij5Mw7Zz
Y2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICB9KS5qb2luKCcn
KTsKICAgIH0sCgogICAgZWRpdE1lZGlhKGluZGV4KSB7CiAgICAgICAgaWYgKCF0aGlzLmN1cnJl
bnREb2MgfHwgIXRoaXMuY3VycmVudERvYy5tZWRpYXMgfHwgIXRoaXMuY3VycmVudERvYy5tZWRp
YXNbaW5kZXhdKSByZXR1cm47CiAgICAgICAgY29uc3QgbWVkaWEgPSB0aGlzLmN1cnJlbnREb2Mu
bWVkaWFzW2luZGV4XTsKCiAgICAgICAgY29uc3QgbmV3VGl0bGUgPSBwcm9tcHQoJ1RpdGVsOics
IG1lZGlhLnRpdGxlIHx8ICcnKTsKICAgICAgICBpZiAobmV3VGl0bGUgPT09IG51bGwpIHJldHVy
bjsKICAgICAgICBtZWRpYS50aXRsZSA9IG5ld1RpdGxlOwoKICAgICAgICBjb25zdCBuZXdEZXNj
ID0gcHJvbXB0KCdCZXNjaHJlaWJ1bmc6JywgbWVkaWEuZGVzY3JpcHRpb24gfHwgJycpOwogICAg
ICAgIGlmIChuZXdEZXNjID09PSBudWxsKSByZXR1cm47CiAgICAgICAgbWVkaWEuZGVzY3JpcHRp
b24gPSBuZXdEZXNjOwoKICAgICAgICAvLyBJbmxpbmUtTWVkaWVuIGltIEVkaXRvciBha3R1YWxp
c2llcmVuIChmaWdjYXB0aW9uKQogICAgICAgIGlmIChtZWRpYS5tZWRpYUlkKSB7CiAgICAgICAg
ICAgIGNvbnN0IGZpZ3VyZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlZGl0b3JJbnB1dCBb
ZGF0YS1tZWRpYS1pZD0iJyArIG1lZGlhLm1lZGlhSWQgKyAnIl0nKTsKICAgICAgICAgICAgaWYg
KGZpZ3VyZSkgewogICAgICAgICAgICAgICAgbGV0IGNhcCA9IGZpZ3VyZS5xdWVyeVNlbGVjdG9y
KCdmaWdjYXB0aW9uJyk7CiAgICAgICAgICAgICAgICBpZiAobmV3RGVzYykgewogICAgICAgICAg
ICAgICAgICAgIGlmICghY2FwKSB7IGNhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ZpZ2Nh
cHRpb24nKTsgZmlndXJlLmFwcGVuZENoaWxkKGNhcCk7IH0KICAgICAgICAgICAgICAgICAgICBj
YXAudGV4dENvbnRlbnQgPSBuZXdEZXNjOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXAp
IHsKICAgICAgICAgICAgICAgICAgICBjYXAucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRoaXMuX3JlbmRlck1lZGlhTGlzdCgpOwog
ICAgICAgIHNob3dUb2FzdCgnQW5oYW5nIGFrdHVhbGlzaWVydCcsICdzdWNjZXNzJyk7CiAgICB9
LAoKICAgIHJlbW92ZU1lZGlhKGluZGV4KSB7CiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnREb2Mg
fHwgIXRoaXMuY3VycmVudERvYy5tZWRpYXMgfHwgIXRoaXMuY3VycmVudERvYy5tZWRpYXNbaW5k
ZXhdKSByZXR1cm47CiAgICAgICAgY29uc3QgbWVkaWEgPSB0aGlzLmN1cnJlbnREb2MubWVkaWFz
W2luZGV4XTsKICAgICAgICBjb25zdCBuYW1lID0gbWVkaWEudGl0bGUgfHwgbWVkaWEudXJsLnNw
bGl0KCcvJykucG9wKCk7CgogICAgICAgIC8vIEJlc3RhZXRpZ3VuZ3NkaWFsb2cgYWxzIE1vZGFs
IChzdGF0dCBicm93c2VyLW5hdGl2ZW0gY29uZmlybSkKICAgICAgICB2YXIgb3ZlcmxheSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIG92ZXJsYXkuc3R5bGUuY3NzVGV4
dCA9ICdwb3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6MTEwMDA7YmFja2dyb3VuZDpyZ2Jh
KDAsMCwwLDAuNSk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRl
bnQ6Y2VudGVyOyc7CiAgICAgICAgdmFyIG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CiAgICAgICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9ICdiYWNrZ3JvdW5kOnZhcigtLWJn
LWNhcmQsI2ZmZik7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjRweDttYXgtd2lkdGg6NDAw
cHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggMzJweCByZ2JhKDAsMCwwLDAuMjUpO3RleHQt
YWxpZ246Y2VudGVyOyc7CiAgICAgICAgbW9kYWwuaW5uZXJIVE1MID0KICAgICAgICAgICAgJzxk
aXYgc3R5bGU9ImZvbnQtc2l6ZTozMnB4O21hcmdpbi1ib3R0b206OHB4OyI+JiMxMjg0NjU7PC9k
aXY+JyArCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcp
O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYm90dG9tOjhweDsiPkFuaGFu
ZyBlbnRmZXJuZW4/PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJjb2xvcjp2YXIo
LS10ZXh0LXByaW1hcnkpO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi1ib3R0b206MThweDsiPjxzdHJv
bmc+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwobmFtZSkgKyAnPC9zdHJvbmc+IHdpcmQgYXVz
IGRlbSBBcnRpa2VsIHVuZCB2b20gU2VydmVyIGdlbG9lc2NodC48L2Rpdj4nICsKICAgICAgICAg
ICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2p1c3RpZnktY29udGVudDpjZW50
ZXI7Ij4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGlkPSJybU1lZGlhQ2FuY2VsIiBzdHls
ZT0icGFkZGluZzo4cHggMjBweDtib3JkZXItcmFkaXVzOjZweDtib3JkZXI6MXB4IHNvbGlkIHZh
cigtLWJvcmRlci1jb2xvcik7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtjb2xvcjp2YXIoLS10
ZXh0LXByaW1hcnkpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxM3B4OyI+QWJicmVjaGVuPC9i
dXR0b24+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBpZD0icm1NZWRpYUNvbmZpcm0iIHN0
eWxlPSJwYWRkaW5nOjhweCAyMHB4O2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjpub25lO2JhY2tn
cm91bmQ6I2RjMzU0NTtjb2xvcjojZmZmO2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjYwMDtm
b250LXNpemU6MTNweDsiPkVudGZlcm5lbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+
JzsKICAgICAgICBvdmVybGF5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKG92ZXJsYXkpOwoKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JtTWVkaWFDYW5jZWwnKS5vbmNsaWNrID0gZnVu
Y3Rpb24oKSB7IG92ZXJsYXkucmVtb3ZlKCk7IH07CiAgICAgICAgb3ZlcmxheS5vbmNsaWNrID0g
ZnVuY3Rpb24oZSkgeyBpZiAoZS50YXJnZXQgPT09IG92ZXJsYXkpIG92ZXJsYXkucmVtb3ZlKCk7
IH07CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JtTWVkaWFDb25maXJtJykub25j
bGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBvdmVybGF5LnJlbW92ZSgpOwoKICAgICAg
ICAgICAgLy8gSW5saW5lLUVsZW1lbnQgYXVzIEVkaXRvciBlbnRmZXJuZW4KICAgICAgICAgICAg
aWYgKG1lZGlhLm1lZGlhSWQpIHsKICAgICAgICAgICAgICAgIHZhciBmaWd1cmUgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCcjZWRpdG9ySW5wdXQgW2RhdGEtbWVkaWEtaWQ9IicgKyBtZWRpYS5t
ZWRpYUlkICsgJyJdJyk7CiAgICAgICAgICAgICAgICBpZiAoZmlndXJlKSBmaWd1cmUucmVtb3Zl
KCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIERhdGVpIGF1ZiBkZW0gU2VydmVyIGxv
ZXNjaGVuCiAgICAgICAgICAgIGlmIChtZWRpYS51cmwgJiYgRHJpdmVGUy5tb2RlID09PSAnc2Vy
dmVyJykgewogICAgICAgICAgICAgICAgZmV0Y2goJy9hcGkvZGVsZXRlJywgewogICAgICAgICAg
ICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsg
J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyB9LAogICAg
ICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcGF0aDogbWVkaWEudXJsIH0p
CiAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbigpIHt9KTsKICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgc2VsZi5jdXJyZW50RG9jLm1lZGlhcy5zcGxpY2UoaW5kZXgsIDEpOwogICAg
ICAgICAgICBzZWxmLl9yZW5kZXJNZWRpYUxpc3QoKTsKICAgICAgICAgICAgc2hvd1RvYXN0KCci
JyArIG5hbWUgKyAnIiBlbnRmZXJudCcsICdzdWNjZXNzJyk7CiAgICAgICAgfTsKICAgIH0sCgog
ICAgLy8gLS0tIFBlc3NpbWlzdGljIExvY2tpbmcgLS0tCiAgICBhc3luYyBhY3F1aXJlTG9jayhk
b2NJZCkgewogICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7CiAgICAgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS9s
b2NrJywgewogICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFy
c2V0PXV0Zi04JyB9LAogICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsg
ZG9jSWQ6IGRvY0lkIH0pCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmIChy
ZXMub2spIHJldHVybiB7IG9rOiB0cnVlIH07CiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0g
YXdhaXQgcmVzLmpzb24oKTsKICAgICAgICAgICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgYnk6
IGRhdGEuYnkgfHwgJ1VuYmVrYW5udCcsIG1pbnV0ZXM6IGRhdGEubWludXRlcyB8fCAnPycgfTsK
ICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICAgICAvLyBLZWluIFNlcnZlciBvZGVy
IEZlaGxlcjogTG9jayB1ZWJlcnNwcmluZ2VuCiAgICAgICAgICAgICAgICByZXR1cm4geyBvazog
dHJ1ZSB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIEZpbGVzeXN0ZW0tTW9k
dXM6IEtlaW4gTG9ja2luZyAoU2luZ2xlLVVzZXItU3plbmFyaW8pCiAgICAgICAgcmV0dXJuIHsg
b2s6IHRydWUgfTsKICAgIH0sCgogICAgYXN5bmMgcmVsZWFzZUxvY2soZG9jSWQpIHsKICAgICAg
ICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgYXdhaXQgZmV0Y2goJy9hcGkvdW5sb2NrJywgewogICAgICAgICAgICAgICAg
ICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRl
bnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyB9LAogICAgICAgICAg
ICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZG9jSWQ6IGRvY0lkIH0pCiAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgfSBjYXRjaCB7fQogICAgICAgIH0KICAgIH0sCgogICAg
Ly8gLS0tIENvbnRyaWJ1dGlvbiBUeXBlIERpYWxvZyAtLS0KICAgIHNob3dDb250cmliRGlhbG9n
KCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250cmliRGlhbG9nJykuY2xh
c3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICB9LAoKICAgIGNsb3NlQ29udHJpYkRpYWxvZygpIHsK
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udHJpYkRpYWxvZycpLmNsYXNzTGlz
dC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgfSwKCiAgICBzZXRDb250cmliVHlwZSh0eXBlKSB7CiAg
ICAgICAgdGhpcy5fcGVuZGluZ0NvbnRyaWJUeXBlID0gdHlwZTsKICAgICAgICB0aGlzLmNsb3Nl
Q29udHJpYkRpYWxvZygpOwogICAgICAgIC8vIFNhdmUtUHJvemVzcyBmb3J0c2V0emVuIChjbG9z
ZUFmdGVyIGF1cyB2b3JoZXJpZ2VtIEF1ZnJ1ZiB1ZWJlcm5laG1lbikKICAgICAgICB0aGlzLnNh
dmUodGhpcy5fcGVuZGluZ0Nsb3NlQWZ0ZXIpOwogICAgICAgIHRoaXMuX3BlbmRpbmdDbG9zZUFm
dGVyID0gZmFsc2U7CiAgICB9Cn07CgovLyA9PT09PT09PT09PT09PT09PT09PT0gTUVESUEgTU9E
QUwgPT09PT09PT09PT09PT09PT09PT09CgovLyA9PT09PT09PT09PT09PT09PT09PT0gVU5JVkVS
U0FMIE1FRElBIE1PREFMID09PT09PT09PT09PT09PT09PT09PQoKZnVuY3Rpb24gb3Blbk1lZGlh
TW9kYWwodXJsLCB0eXBlLCB0aXRsZSkgewogICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbWVkaWFNb2RhbCcpOwogICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ21lZGlhTW9kYWxDb250YWluZXInKTsKICAgIGNvbnN0IHNhZmVVcmwg
PSBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKHVybCk7CiAgICBjb25zdCBzYWZlVGl0bGUgPSBEcml2
ZVBvcnRhbC5lc2NhcGVIVE1MKHRpdGxlIHx8IHVybC5zcGxpdCgnLycpLnBvcCgpKTsKICAgIGxl
dCBjb250ZW50ID0gJyc7CiAgICBsZXQgdG9vbGJhciA9ICcnOwoKICAgIHN3aXRjaCAodHlwZSkg
ewogICAgICAgIGNhc2UgJ2ltYWdlJzoKICAgICAgICAgICAgY29udGVudCA9ICc8aW1nIHNyYz0i
JyArIHNhZmVVcmwgKyAnIiBhbHQ9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKHRpdGxlIHx8
ICcnKSArICciIG9uY2xpY2s9InRoaXMuY2xhc3NMaXN0LnRvZ2dsZShcJ3pvb21lZFwnKSI+JzsK
ICAgICAgICAgICAgdG9vbGJhciA9ICc8YnV0dG9uIG9uY2xpY2s9ImRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoXCcjbWVkaWFNb2RhbENvbnRhaW5lciBpbWdcJykuY2xhc3NMaXN0LnRvZ2dsZShcJ3pv
b21lZFwnKSI+Wm9vbTwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICc8YSBocmVm
PSInICsgc2FmZVVybCArICciIGRvd25sb2FkPkhlcnVudGVybGFkZW48L2E+JyArCiAgICAgICAg
ICAgICAgICAgICAgICAgJzxidXR0b24gb25jbGljaz0id2luZG93Lm9wZW4oXCcnICsgc2FmZVVy
bCArICdcJyxcJ19ibGFua1wnKSI+SW4gbmV1ZW0gVGFiPC9idXR0b24+JzsKICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgY2FzZSAncGRmJzoKICAgICAgICAgICAgLy8gUERGOiBNYXhpbWFsZSBC
cmVpdGUgdW5kIEhvZWhlIGZ1ZXIgZ3V0ZSBMZXNiYXJrZWl0CiAgICAgICAgICAgIHZhciBtYyA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tZWRpYS1tb2RhbC1jb250ZW50Jyk7CiAgICAgICAg
ICAgIG1jLnN0eWxlLm1heFdpZHRoID0gJzk1dncnOwogICAgICAgICAgICBtYy5zdHlsZS53aWR0
aCA9ICcxMjAwcHgnOwogICAgICAgICAgICBtYy5zdHlsZS5tYXhIZWlnaHQgPSAnOTV2aCc7CiAg
ICAgICAgICAgIG1jLnN0eWxlLnBhZGRpbmcgPSAnMTJweCc7CiAgICAgICAgICAgIGNvbnRlbnQg
PSAnPGlmcmFtZSBzcmM9IicgKyBzYWZlVXJsICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0
Ojgydmg7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo0cHg7YmFja2dyb3VuZDp3aGl0ZTsiPjwv
aWZyYW1lPic7CiAgICAgICAgICAgIHRvb2xiYXIgPSAnPGEgaHJlZj0iJyArIHNhZmVVcmwgKyAn
IiBkb3dubG9hZD5IZXJ1bnRlcmxhZGVuPC9hPicgKwogICAgICAgICAgICAgICAgICAgICAgICc8
YnV0dG9uIG9uY2xpY2s9IndpbmRvdy5vcGVuKFwnJyArIHNhZmVVcmwgKyAnXCcsXCdfYmxhbmtc
JykiPkluIG5ldWVtIFRhYjwvYnV0dG9uPic7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgJ3ZpZGVvJzoKICAgICAgICAgICAgY29udGVudCA9ICc8dmlkZW8gY29udHJvbHMgYXV0b3Bs
YXkgc3R5bGU9Im1heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6NzB2aDtib3JkZXItcmFkaXVzOjhw
eDsiPicgKwogICAgICAgICAgICAgICAgICAgICAgICc8c291cmNlIHNyYz0iJyArIHNhZmVVcmwg
KyAnIj48L3ZpZGVvPic7CiAgICAgICAgICAgIHRvb2xiYXIgPSAnPGEgaHJlZj0iJyArIHNhZmVV
cmwgKyAnIiBkb3dubG9hZD5IZXJ1bnRlcmxhZGVuPC9hPic7CiAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgJ2F1ZGlvJzoKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
Lm1lZGlhLW1vZGFsLWNvbnRlbnQnKS5zdHlsZS5tYXhXaWR0aCA9ICc2MDBweCc7CiAgICAgICAg
ICAgIGNvbnRlbnQgPSAnPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxNnB4
IDA7Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZm9udC1zaXplOjQ4
cHg7bWFyZ2luLWJvdHRvbToxMnB4OyI+JiMxMjc5MjU7PC9kaXY+PC9kaXY+JyArCiAgICAgICAg
ICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVz
OjMwcHg7cGFkZGluZzo2cHggMTBweDt3aWR0aDoxMDAlOyI+JyArCiAgICAgICAgICAgICAgICAg
ICAgICAgJzxhdWRpbyBjb250cm9scyBhdXRvcGxheSBzcmM9IicgKyBzYWZlVXJsICsgJyIgc3R5
bGU9ImRpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6NDBweDtmaWx0ZXI6bm9uZTsiPjwv
YXVkaW8+PC9kaXY+JzsKICAgICAgICAgICAgdG9vbGJhciA9ICc8YSBocmVmPSInICsgc2FmZVVy
bCArICciIGRvd25sb2FkPkhlcnVudGVybGFkZW48L2E+JzsKICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgY2FzZSAnZG9jeCc6IGNhc2UgJ3hsc3gnOiBjYXNlICdwcHR4JzoKICAgICAgICAgICAg
dmFyIHR5cGVMYWJlbCA9IHR5cGUudG9VcHBlckNhc2UoKTsKICAgICAgICAgICAgY29udGVudCA9
ICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjMwcHggMDsiPicgKwogICAg
ICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZHJpdmUtZmlsZS1pY29uICcgKyB0eXBl
ICsgJyIgc3R5bGU9IndpZHRoOjgwcHg7aGVpZ2h0OjgwcHg7Zm9udC1zaXplOjI0cHg7bWFyZ2lu
OjAgYXV0byAxNXB4OyI+JyArIHR5cGVMYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7bWFyZ2luLXRv
cDoxMHB4OyI+RGllc2VzIERva3VtZW50IGthbm4gbnVyIGxva2FsIGdlb2VmZm5ldCB3ZXJkZW4u
PC9wPjwvZGl2Pic7CiAgICAgICAgICAgIHRvb2xiYXIgPSAnPGEgaHJlZj0iJyArIHNhZmVVcmwg
KyAnIiBkb3dubG9hZD5IZXJ1bnRlcmxhZGVuPC9hPic7CiAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGNvbnRlbnQgPSAnPGRpdiBzdHlsZT0idGV4dC1hbGln
bjpjZW50ZXI7cGFkZGluZzozMHB4IDA7Zm9udC1zaXplOjY0cHg7Ij4mIzEyODE5Njs8L2Rpdj4n
OwogICAgICAgICAgICB0b29sYmFyID0gJzxhIGhyZWY9IicgKyBzYWZlVXJsICsgJyIgZG93bmxv
YWQ+SGVydW50ZXJsYWRlbjwvYT4nOwogICAgfQoKICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPQog
ICAgICAgICc8ZGl2IGNsYXNzPSJtZWRpYS1tb2RhbC10aXRsZSI+JyArIHNhZmVUaXRsZSArICc8
L2Rpdj4nICsKICAgICAgICBjb250ZW50ICsKICAgICAgICAnPGRpdiBjbGFzcz0ibWVkaWEtbW9k
YWwtdG9vbGJhciI+JyArIHRvb2xiYXIgKyAnPC9kaXY+JzsKCiAgICBtb2RhbC5zdHlsZS5kaXNw
bGF5ID0gJ2Jsb2NrJzsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBt
ZWRpYU1vZGFsS2V5SGFuZGxlcik7Cn0KCmZ1bmN0aW9uIGNsb3NlTWVkaWFNb2RhbCgpIHsKICAg
IGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lZGlhTW9kYWwnKTsKICAg
IG1vZGFsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAvLyBNb2RhbC1TdHlsZXMgenVydWVj
a3NldHplbiAoUERGL0F1ZGlvIHNldHplbiBlaWdlbmUgR3JvZXNzZW4pCiAgICB2YXIgbWMgPSBt
b2RhbC5xdWVyeVNlbGVjdG9yKCcubWVkaWEtbW9kYWwtY29udGVudCcpOwogICAgaWYgKG1jKSB7
IG1jLnN0eWxlLm1heFdpZHRoID0gJyc7IG1jLnN0eWxlLndpZHRoID0gJyc7IG1jLnN0eWxlLm1h
eEhlaWdodCA9ICcnOyBtYy5zdHlsZS5wYWRkaW5nID0gJyc7IH0KICAgIC8vIEF1ZGlvL1ZpZGVv
IHN0b3BwZW4KICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3ZpZGVvLCBhdWRpbycpLmZvckVh
Y2goZWwgPT4geyBlbC5wYXVzZSgpOyBlbC5zcmMgPSAnJzsgfSk7CiAgICBkb2N1bWVudC5yZW1v
dmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgbWVkaWFNb2RhbEtleUhhbmRsZXIpOwp9CgpmdW5j
dGlvbiBtZWRpYU1vZGFsS2V5SGFuZGxlcihlKSB7CiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUn
KSBjbG9zZU1lZGlhTW9kYWwoKTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09IEdPVkVSTkFO
Q0UgPT09PT09PT09PT09PT09PT09PT09CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBNb2R1
bDogRHJpdmVHb3Zlcm5hbmNlIC0gUm9sbGVuLCBGcmVpZ2FiZS1Xb3JrZmxvdywgQWRtaW4tUGFu
ZWwKLy8gWnVzdGFlbmRpZyBmdWVyOiBMYWRlbiBkZXIgR292ZXJuYW5jZS1EYXRlbiwgQmVyZWNo
dGlndW5nc3BydWVmdW5nLCBSZXZpZXctVUksIEF1ZGl0LVRyYWlsCi8vIFNpY2hlcmhlaXQ6IENs
aWVudC1zZWl0aWdlIEJlcmVjaHRpZ3VuZ3NwcnVlZnVuZ2VuIChjYW5BcHByb3ZlLCBjYW5TZWVE
b2N1bWVudCwgaXNTdXBlclVzZXIpCi8vICAgICAgICAgICAgIHN0ZXVlcm4gbnVyIGRpZSBVSS1E
YXJzdGVsbHVuZy4gRGllIHRhdHNhZWNobGljaGUgQXV0b3Jpc2llcnVuZyBlcmZvbGd0IHNlcnZl
cnNlaXRpZwovLyAgICAgICAgICAgICBpbiBzZXJ2ZXIucHMxIC8gc2VydmVyLnB5IChUZXN0LVN1
cGVyVXNlciwgVGVzdC1SZXZpZXdlcikgYmVpIGplZGVtIFNjaHJlaWJ6dWdyaWZmLgovLyAgICAg
ICAgICAgICBnb3Zlcm5hbmNlLmpzb24gaXN0IGltIFNlcnZlci1Nb2R1cyBBRVMtMjU2LXZlcnNj
aGx1ZXNzZWx0IChzaWVoZSBzZXJ2ZXIucHMxKS4KLy8gPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KY29u
c3QgRHJpdmVHb3Zlcm5hbmNlID0gewogICAgZGF0YTogbnVsbCwKICAgIGN1cnJlbnRVc2VyOiBu
dWxsLAogICAgY3VycmVudERvbWFpbjogbnVsbCwKICAgIF9pc1N1cGVyVXNlcjogZmFsc2UsCiAg
ICBfcmV2aWV3RGlhbG9nQ2FsbGJhY2s6IG51bGwsCiAgICBfcmV2aWV3RGlhbG9nQWN0aW9uOiBu
dWxsLAogICAgX2VkaXRpbmdSZXZpZXdlckluZGV4OiAtMSwKCiAgICBhc3luYyBsb2FkKCkgewog
ICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXInKSB7
CiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS9nb3Zlcm5hbmNl
Jyk7CiAgICAgICAgICAgICAgICBpZiAocmVzLm9rKSB7CiAgICAgICAgICAgICAgICAgICAgY29u
c3QgcmVzdWx0ID0gYXdhaXQgcmVzLmpzb24oKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRh
dGEgPSByZXN1bHQuZ292ZXJuYW5jZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRV
c2VyID0gcmVzdWx0LmN1cnJlbnRVc2VyOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVu
dERvbWFpbiA9IHJlc3VsdC5jdXJyZW50RG9tYWluOwogICAgICAgICAgICAgICAgICAgIHRoaXMu
X2lzU3VwZXJVc2VyID0gcmVzdWx0LmlzU3VwZXJVc2VyOwogICAgICAgICAgICAgICAgICAgIHRo
aXMudXBkYXRlVUkoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRIZWxwQ29udGVudCgp
OwogICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFN0YXJ0c2VpdGUoKTsKICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg
ICAgICB9IGNhdGNoIHt9CgogICAgICAgIC8vIFN0YXRpc2NoZXIgTW9kdXM6IEdvdmVybmFuY2Ug
YXVzIGVpbmdlYmV0dGV0ZW4gRGF0ZW4gbGFkZW4KICAgICAgICBpZiAoRHJpdmVGUy5tb2RlID09
PSAnc3RhdGljJykgewogICAgICAgICAgICBpZiAodHlwZW9mIERSSVZFX1NUQVRJQ19JTkRFWCAh
PT0gJ3VuZGVmaW5lZCcgJiYgRFJJVkVfU1RBVElDX0lOREVYICYmIERSSVZFX1NUQVRJQ19JTkRF
WC5nb3Zlcm5hbmNlKSB7CiAgICAgICAgICAgICAgICAvLyBMZXNiYXJlIEdvdmVybmFuY2UtRGF0
ZW4gYXVzIGluZGV4LmpzIChTZXR0aW5ncyArIFJldmlld2VyLUluZm8pCiAgICAgICAgICAgICAg
ICB0aGlzLmRhdGEgPSBEUklWRV9TVEFUSUNfSU5ERVguZ292ZXJuYW5jZTsKICAgICAgICAgICAg
fQogICAgICAgIH0KCiAgICAgICAgLy8gRmlsZXN5c3RlbS1Nb2R1czogZ292ZXJuYW5jZS5qc29u
IGF1cyBIYW5kbGUgbGFkZW4KICAgICAgICBpZiAoRHJpdmVGUy5tb2RlID09PSAnZmlsZXN5c3Rl
bScgJiYgRHJpdmVGUy5fZGF0YUhhbmRsZSkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgY29uc3QgZmggPSBhd2FpdCBEcml2ZUZTLl9kYXRhSGFuZGxlLmdldEZpbGVIYW5kbGUo
J2dvdmVybmFuY2UuanNvbicpOwogICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZo
LmdldEZpbGUoKTsKICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UoYXdhaXQg
ZmlsZS50ZXh0KCkpOwogICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAgICAgfQoKICAgICAgICB0
aGlzLmN1cnJlbnRVc2VyID0gRHJpdmVGUy5lbnZpcm9uID8gRHJpdmVGUy5lbnZpcm9uLnVzZXJu
YW1lIDogbnVsbDsKICAgICAgICB0aGlzLmN1cnJlbnREb21haW4gPSBEcml2ZUZTLmVudmlyb24g
PyAoRHJpdmVGUy5lbnZpcm9uLnVzZXJkb21haW4gfHwgJyonKSA6ICcqJzsKICAgICAgICB0aGlz
Ll9pc1N1cGVyVXNlciA9IHRoaXMuX2NoZWNrU3VwZXJVc2VyKCk7CiAgICAgICAgdGhpcy51cGRh
dGVVSSgpOwogICAgICAgIHRoaXMubG9hZEhlbHBDb250ZW50KCk7CiAgICAgICAgYXdhaXQgdGhp
cy5sb2FkU3RhcnRzZWl0ZSgpOwogICAgfSwKCiAgICBfY2hlY2tTdXBlclVzZXIoKSB7CiAgICAg
ICAgaWYgKCF0aGlzLmRhdGEgfHwgIXRoaXMuZGF0YS5zdXBlclVzZXJzKSByZXR1cm4gdHJ1ZTsg
Ly8gS2VpbiBHb3Zlcm5hbmNlID0gYWxsZXMgZXJsYXVidAogICAgICAgIGNvbnN0IHVzZXIgPSAo
dGhpcy5jdXJyZW50VXNlciB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICBjb25zdCBkb21h
aW4gPSAodGhpcy5jdXJyZW50RG9tYWluIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIHJl
dHVybiB0aGlzLmRhdGEuc3VwZXJVc2Vycy5zb21lKHN1ID0+CiAgICAgICAgICAgIHN1LnVzZXJu
YW1lLnRvTG93ZXJDYXNlKCkgPT09IHVzZXIgJiYgKHN1LmRvbWFpbiA9PT0gJyonIHx8IHN1LmRv
bWFpbi50b0xvd2VyQ2FzZSgpID09PSBkb21haW4pCiAgICAgICAgKTsKICAgIH0sCgogICAgaXNT
dXBlclVzZXIoKSB7IHJldHVybiB0aGlzLl9pc1N1cGVyVXNlcjsgfSwKCiAgICBpc0ZhY2hhdWZz
aWNodCgpIHsKICAgICAgICBpZiAoIXRoaXMuZGF0YSB8fCAhdGhpcy5kYXRhLmZhY2hhdWZzaWNo
dCkgcmV0dXJuIGZhbHNlOwogICAgICAgIHZhciB1c2VyID0gKHRoaXMuY3VycmVudFVzZXIgfHwg
JycpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgdmFyIGRvbWFpbiA9ICh0aGlzLmN1cnJlbnREb21h
aW4gfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5mYWNoYXVm
c2ljaHQuc29tZShmdW5jdGlvbihmYSkgewogICAgICAgICAgICByZXR1cm4gZmEudXNlcm5hbWUu
dG9Mb3dlckNhc2UoKSA9PT0gdXNlciAmJiAoZmEuZG9tYWluID09PSAnKicgfHwgZmEuZG9tYWlu
LnRvTG93ZXJDYXNlKCkgPT09IGRvbWFpbik7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIGlzUmV2
aWV3ZXIoa2F0ZWdvcmllKSB7CiAgICAgICAgaWYgKCF0aGlzLmRhdGEgfHwgIXRoaXMuZGF0YS5y
ZXZpZXdlcnMpIHJldHVybiBmYWxzZTsKICAgICAgICBjb25zdCB1c2VyID0gKHRoaXMuY3VycmVu
dFVzZXIgfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgY29uc3QgZG9tYWluID0gKHRoaXMu
Y3VycmVudERvbWFpbiB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICByZXR1cm4gdGhpcy5k
YXRhLnJldmlld2Vycy5zb21lKHIgPT4KICAgICAgICAgICAgci51c2VybmFtZS50b0xvd2VyQ2Fz
ZSgpID09PSB1c2VyICYmCiAgICAgICAgICAgIChyLmRvbWFpbiA9PT0gJyonIHx8IHIuZG9tYWlu
LnRvTG93ZXJDYXNlKCkgPT09IGRvbWFpbikgJiYKICAgICAgICAgICAgci5rYXRlZ29yaWVuICYm
IHIua2F0ZWdvcmllbi5pbmNsdWRlcyhrYXRlZ29yaWUpCiAgICAgICAgKTsKICAgIH0sCgogICAg
Z2V0UmV2aWV3YWJsZUNhdGVnb3JpZXMoKSB7CiAgICAgICAgaWYgKCF0aGlzLmRhdGEgfHwgIXRo
aXMuZGF0YS5yZXZpZXdlcnMpIHJldHVybiBbXTsKICAgICAgICBjb25zdCBjYXRzID0gW107CiAg
ICAgICAgY29uc3QgdXNlciA9ICh0aGlzLmN1cnJlbnRVc2VyIHx8ICcnKS50b0xvd2VyQ2FzZSgp
OwogICAgICAgIGNvbnN0IGRvbWFpbiA9ICh0aGlzLmN1cnJlbnREb21haW4gfHwgJycpLnRvTG93
ZXJDYXNlKCk7CiAgICAgICAgdGhpcy5kYXRhLnJldmlld2Vycy5mb3JFYWNoKHIgPT4gewogICAg
ICAgICAgICBpZiAoci51c2VybmFtZS50b0xvd2VyQ2FzZSgpID09PSB1c2VyICYmIChyLmRvbWFp
biA9PT0gJyonIHx8IHIuZG9tYWluLnRvTG93ZXJDYXNlKCkgPT09IGRvbWFpbikpIHsKICAgICAg
ICAgICAgICAgIChyLmthdGVnb3JpZW4gfHwgW10pLmZvckVhY2goayA9PiB7IGlmICghY2F0cy5p
bmNsdWRlcyhrKSkgY2F0cy5wdXNoKGspOyB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwog
ICAgICAgIHJldHVybiBjYXRzOwogICAgfSwKCiAgICAvLyBTaWNodGJhcmtlaXRzZmlsdGVyIChy
ZWluIGNsaWVudC1zZWl0aWcsIHN0ZXVlcnQgVUktRGFyc3RlbGx1bmcpOgogICAgICAgIC8vIC0g
RnJlaWdlZ2ViZW5lIERva3VtZW50ZTogZnVlciBhbGxlIHNpY2h0YmFyCiAgICAgICAgLy8gLSBF
bnR3dWVyZmUvQWJnZWxlaG50ZTogbnVyIGZ1ZXIgQXV0b3IsIHp1c3RhZW5kaWdlIFJldmlld2Vy
IHVuZCBTdXBlclVzZXIKICAgICAgICAvLyBIaW53ZWlzOiBEaWVzIGlzdCBrZWluZSBadWdyaWZm
c2tvbnRyb2xsZSAtIGRpZSBEb2t1bWVudGUgbGllZ2VuIGFscyBEYXRlaWVuIGltIGRhdGEvLU9y
ZG5lci4KICAgICAgICAvLyBEZXIgRmlsdGVyIHZlcmhpbmRlcnQsIGRhc3MgQmVudXR6ZXIgaW4g
ZGVyIE9iZXJmbGFlY2hlIERva3VtZW50ZSBzZWhlbiwgZGllIHNpZSBuaWNodCBiZWFyYmVpdGVu
IHNvbGxlbi4KICAgIGNhblNlZURvY3VtZW50KGRvYykgewogICAgICAgIGlmICghdGhpcy5kYXRh
KSByZXR1cm4gdHJ1ZTsgLy8gS2VpbiBHb3Zlcm5hbmNlID0gYWxsZXMgc2ljaHRiYXIKICAgICAg
ICAvLyBGcmVpZ2VnZWJlbmUgRG9rdW1lbnRlOiBhbGxlIHNlaGVuCiAgICAgICAgaWYgKGRvYy5z
dGF0dXMgPT09ICdGcmVpZ2VnZWJlbicpIHJldHVybiB0cnVlOwogICAgICAgIC8vIEVpZ2VuZSBE
b2t1bWVudGU6IEF1dG9yIHNpZWh0IGltbWVyCiAgICAgICAgY29uc3QgdXNlciA9ICh0aGlzLmN1
cnJlbnRVc2VyIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmICgoZG9jLmVyc3RlbGx0
Vm9uIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB1c2VyIHx8IChkb2MuYmVhcmJlaXRldFZvbiB8
fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdXNlcikgcmV0dXJuIHRydWU7CiAgICAgICAgLy8gU3Vw
ZXJVc2VyL0ZhY2hhdWZzaWNodCBzaWVodCBhbGxlcwogICAgICAgIGlmICh0aGlzLmlzU3VwZXJV
c2VyKCkgfHwgdGhpcy5pc0ZhY2hhdWZzaWNodCgpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAvLyBS
ZXZpZXdlciBzaWVodCBEb2t1bWVudGUgaW4gc2VpbmVuIEthdGVnb3JpZW4KICAgICAgICBpZiAo
dGhpcy5pc1Jldmlld2VyKGRvYy5rYXRlZ29yaWUpKSByZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICB9LAoKICAgIGNhbkFwcHJvdmUoZG9jKSB7CiAgICAgICAgaWYgKHRoaXMu
aXNTdXBlclVzZXIoKSB8fCB0aGlzLmlzRmFjaGF1ZnNpY2h0KCkpIHJldHVybiB0cnVlOwogICAg
ICAgIHJldHVybiB0aGlzLmlzUmV2aWV3ZXIoZG9jLmthdGVnb3JpZSk7CiAgICB9LAoKICAgIGNh
blNldFN0YXR1cyhzdGF0dXMpIHsKICAgICAgICBpZiAodGhpcy5pc1N1cGVyVXNlcigpIHx8IHRo
aXMuaXNGYWNoYXVmc2ljaHQoKSkgcmV0dXJuIHRydWU7CiAgICAgICAgaWYgKHN0YXR1cyA9PT0g
J0VudHd1cmYnIHx8IHN0YXR1cyA9PT0gJ1Byw7xmdW5nJykgcmV0dXJuIHRydWU7CiAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyBGcmVpZ2VnZWJlbi9BYmdlbGVobnQgbnVyIGZ1ZXIgUmV2aWV3ZXIv
U3VwZXJVc2VyCiAgICB9LAoKICAgIC8vIC0tLSBVSSBVcGRhdGVzIC0tLQogICAgdXBkYXRlVUko
KSB7CiAgICAgICAgLy8gUmV2aWV3IEJhZGdlCiAgICAgICAgY29uc3QgYmFkZ2UgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmV2aWV3QmFkZ2UnKTsKICAgICAgICBjb25zdCBwZW5kaW5nID0g
dGhpcy5nZXRQZW5kaW5nUmV2aWV3cygpOwogICAgICAgIGlmIChwZW5kaW5nLmxlbmd0aCA+IDAg
JiYgKHRoaXMuaXNTdXBlclVzZXIoKSB8fCB0aGlzLmlzRmFjaGF1ZnNpY2h0KCkgfHwgdGhpcy5n
ZXRSZXZpZXdhYmxlQ2F0ZWdvcmllcygpLmxlbmd0aCA+IDApKSB7CiAgICAgICAgICAgIGJhZGdl
LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jldmlld0NvdW50JykudGV4dENvbnRlbnQgPSBwZW5kaW5nLmxlbmd0aDsKICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICBiYWRnZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0K
CiAgICAgICAgLy8gR292ZXJuYW5jZSBBZG1pbiBCdXR0b24gKG51ciBTdXBlclVzZXIvRmFjaGF1
ZnNpY2h0IGltIFNlcnZlci1Nb2R1cykKICAgICAgICBjb25zdCBhZG1pbkJ0biA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdidG5Hb3ZBZG1pbicpOwogICAgICAgIGFkbWluQnRuLnN0eWxlLmRp
c3BsYXkgPSAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJyAmJiAodGhpcy5pc1N1cGVyVXNlcigp
IHx8IHRoaXMuaXNGYWNoYXVmc2ljaHQoKSkpID8gJycgOiAnbm9uZSc7CiAgICB9LAoKICAgIGdl
dFBlbmRpbmdSZXZpZXdzKCkgewogICAgICAgIGlmICghRHJpdmVGUy5kb2N1bWVudHMpIHJldHVy
biBbXTsKICAgICAgICBjb25zdCBjYXRzID0gKHRoaXMuaXNTdXBlclVzZXIoKSB8fCB0aGlzLmlz
RmFjaGF1ZnNpY2h0KCkpCiAgICAgICAgICAgID8gKERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW4g
fHwgW10pCiAgICAgICAgICAgIDogdGhpcy5nZXRSZXZpZXdhYmxlQ2F0ZWdvcmllcygpOwogICAg
ICAgIHJldHVybiBEcml2ZUZTLmRvY3VtZW50cy5maWx0ZXIoZG9jID0+CiAgICAgICAgICAgIGRv
Yy5zdGF0dXMgPT09ICdQcsO8ZnVuZycgJiYgY2F0cy5pbmNsdWRlcyhkb2Mua2F0ZWdvcmllKQog
ICAgICAgICk7CiAgICB9LAoKICAgIC8vIC0tLSBSZXZpZXcgUXVldWUgUGFuZWwgLS0tCiAgICBz
aG93UXVldWUoKSB7CiAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmV2aWV3UGFuZWwnKTsKICAgICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jldmlld1BhbmVsQm9keScpOwogICAgICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlzLmdl
dFBlbmRpbmdSZXZpZXdzKCk7CgogICAgICAgIGlmIChwZW5kaW5nLmxlbmd0aCA9PT0gMCkgewog
ICAgICAgICAgICBib2R5LmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRl
cjsgcGFkZGluZzo0MHB4OyBjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsiPktlaW5lIG9mZmVuZW4g
UHLDvGZ1bmdlbi48L2Rpdj4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJvZHkuaW5u
ZXJIVE1MID0gcGVuZGluZy5tYXAoZG9jID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IGdvdiA9
IGRvYy5nb3Zlcm5hbmNlIHx8IHt9OwogICAgICAgICAgICAgICAgY29uc3Qgc3VibWl0dGVkID0g
Z292LnN1Ym1pdHRlZEZvclJldmlldyB8fCBkb2MuZ2VhZW5kZXJ0IHx8ICcnOwogICAgICAgICAg
ICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJyZXZpZXctaXRlbSI+JyArCiAgICAgICAgICAgICAg
ICAgICAgJzxkaXYgY2xhc3M9InJldmlldy1pdGVtLXRpdGxlIj4nICsgRHJpdmVQb3J0YWwuZXNj
YXBlSFRNTChkb2MudGl0ZWwpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJyZXZpZXctaXRlbS1tZXRhIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxz
cGFuPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy5rYXRlZ29yaWUpICsgJzwvc3Bhbj4n
ICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuPnZvbiAnICsgRHJpdmVQb3J0YWwuZXNj
YXBlSFRNTChkb2MuZXJzdGVsbHRWb24gfHwgZG9jLmJlYXJiZWl0ZXRWb24gfHwgJy0nKSArICc8
L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8c3Bhbj4nICsgZm9ybWF0RGF0ZShz
dWJtaXR0ZWQpICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAg
ICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InJldmlldy1pdGVtLWFjdGlvbnMiPicgKwog
ICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuLWFwcHJvdmUiIG9uY2xp
Y2s9ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBEcml2ZUdvdmVybmFuY2UucmV2aWV3QW5kT3Bl
bihcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvYy5pZCkgKyAnXCcpIj5QcsO8ZmVuPC9i
dXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4tcmVq
ZWN0IiBvbmNsaWNrPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgRHJpdmVHb3Zlcm5hbmNlLm9w
ZW5SZXZpZXdEaWFsb2coXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihkb2MuaWQpICsgJ1wn
LCBcJ3JlamVjdFwnKSI+QWJsZWhuZW4gdW5kIEJlZ3LDvG5kZW48L2J1dHRvbj4nICsKICAgICAg
ICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAg
ICAgICAgfSkuam9pbignJyk7CiAgICAgICAgfQoKICAgICAgICBwYW5lbC5jbGFzc0xpc3QuYWRk
KCdhY3RpdmUnKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aWV3UGFuZWxP
dmVybGF5JykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICB9LAoKICAgIGNsb3NlUXVldWUo
KSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jldmlld1BhbmVsJykuY2xhc3NM
aXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
dmlld1BhbmVsT3ZlcmxheScpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgfSwKCiAg
ICAvLyBBcnRpa2VsIG9lZmZuZW4gdW5kIFBhbmVsIHNjaGxpZXNzZW4KICAgIGFzeW5jIHJldmll
d0FuZE9wZW4oZG9jSWQpIHsKICAgICAgICB0aGlzLmNsb3NlUXVldWUoKTsKICAgICAgICBhd2Fp
dCBEcml2ZVBvcnRhbC5zZWxlY3REb2N1bWVudChkb2NJZCk7CiAgICAgICAgRHJpdmVQb3J0YWwu
aGlnaGxpZ2h0SXRlbShkb2NJZCk7CiAgICB9LAoKICAgIC8vIC0tLSBSZXZpZXcgRGlhbG9nIC0t
LQogICAgLy8gUmV2aWV3ZXItRmFyYnBhbGV0dGUgKGJpcyB6dSA4IHVudGVyc2NoaWVkbGljaGUg
UmV2aWV3ZXIpCiAgICBfcmV2aWV3ZXJDb2xvcnM6IFsKICAgICAgICB7IGJnOiAnI2U4ZjVlOScs
IGJvcmRlcjogJyMyZTdkMzInLCB0ZXh0OiAnIzFiNWUyMCcgfSwKICAgICAgICB7IGJnOiAnI2Uz
ZjJmZCcsIGJvcmRlcjogJyMxNTY1YzAnLCB0ZXh0OiAnIzBkNDdhMScgfSwKICAgICAgICB7IGJn
OiAnI2ZmZjNlMCcsIGJvcmRlcjogJyNlNjUxMDAnLCB0ZXh0OiAnI2JmMzYwYycgfSwKICAgICAg
ICB7IGJnOiAnI2YzZTVmNScsIGJvcmRlcjogJyM3YjFmYTInLCB0ZXh0OiAnIzRhMTQ4YycgfSwK
ICAgICAgICB7IGJnOiAnI2UwZjdmYScsIGJvcmRlcjogJyMwMDgzOGYnLCB0ZXh0OiAnIzAwNjA2
NCcgfSwKICAgICAgICB7IGJnOiAnI2ZjZTRlYycsIGJvcmRlcjogJyNjNjI4MjgnLCB0ZXh0OiAn
I2I3MWMxYycgfSwKICAgICAgICB7IGJnOiAnI2YxZjhlOScsIGJvcmRlcjogJyM1NThiMmYnLCB0
ZXh0OiAnIzMzNjkxZScgfSwKICAgICAgICB7IGJnOiAnI2VkZTdmNicsIGJvcmRlcjogJyM0NTI3
YTAnLCB0ZXh0OiAnIzMxMWI5MicgfQogICAgXSwKCiAgICBfZ2V0UmV2aWV3ZXJDb2xvcihyZXZp
ZXdlck5hbWUpIHsKICAgICAgICBpZiAoIXRoaXMuX3Jldmlld2VyQ29sb3JNYXApIHRoaXMuX3Jl
dmlld2VyQ29sb3JNYXAgPSB7fTsKICAgICAgICBpZiAodGhpcy5fcmV2aWV3ZXJDb2xvck1hcFty
ZXZpZXdlck5hbWVdKSByZXR1cm4gdGhpcy5fcmV2aWV3ZXJDb2xvck1hcFtyZXZpZXdlck5hbWVd
OwogICAgICAgIHZhciBpZHggPSBPYmplY3Qua2V5cyh0aGlzLl9yZXZpZXdlckNvbG9yTWFwKS5s
ZW5ndGggJSB0aGlzLl9yZXZpZXdlckNvbG9ycy5sZW5ndGg7CiAgICAgICAgdGhpcy5fcmV2aWV3
ZXJDb2xvck1hcFtyZXZpZXdlck5hbWVdID0gdGhpcy5fcmV2aWV3ZXJDb2xvcnNbaWR4XTsKICAg
ICAgICByZXR1cm4gdGhpcy5fcmV2aWV3ZXJDb2xvck1hcFtyZXZpZXdlck5hbWVdOwogICAgfSwK
CiAgICBvcGVuUmV2aWV3RGlhbG9nKGRvY0lkLCBhY3Rpb24pIHsKICAgICAgICBjb25zdCBkb2Mg
PSBEcml2ZUZTLmRvY3VtZW50cy5maW5kKGQgPT4gZC5pZCA9PT0gZG9jSWQpOwogICAgICAgIGlm
ICghZG9jKSByZXR1cm47CgogICAgICAgIHZhciBoZWFkZXJFbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXZpZXdEaWFsb2dIZWFkZXInKTsKICAgICAgICB2YXIgaW5mbyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFsb2dJbmZvJyk7CiAgICAgICAgdmFyIGhpbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aWV3RGlhbG9nSGludCcpOwogICAgICAgIHZhciB0
ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZpZXdEaWFsb2dDb21tZW50Jyk7
CiAgICAgICAgdmFyIGNvbmZpcm1CdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aWV3
RGlhbG9nQ29uZmlybScpOwogICAgICAgIHZhciBhcnRpY2xlQ29udGVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXZpZXdBcnRpY2xlQ29udGVudCcpOwogICAgICAgIHZhciBwcmV2Q29t
bWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aWV3UHJldkNvbW1lbnRzJyk7Cgog
ICAgICAgIC8vIEhlYWRlcgogICAgICAgIHZhciBoZWFkZXJTcGFuID0gaGVhZGVyRWwucXVlcnlT
ZWxlY3Rvcignc3BhbjpmaXJzdC1jaGlsZCcpOwogICAgICAgIGlmIChhY3Rpb24gPT09ICdhcHBy
b3ZlJykgewogICAgICAgICAgICBpZiAoaGVhZGVyU3BhbikgaGVhZGVyU3Bhbi50ZXh0Q29udGVu
dCA9ICdEb2t1bWVudCBmcmVpZ2ViZW4nOwogICAgICAgICAgICBoZWFkZXJFbC5jbGFzc05hbWUg
PSAncmV2aWV3LWRpYWxvZy1oZWFkZXIgYXBwcm92ZSc7CiAgICAgICAgICAgIGNvbmZpcm1CdG4u
dGV4dENvbnRlbnQgPSAnRnJlaWdlYmVuJzsKICAgICAgICAgICAgY29uZmlybUJ0bi5jbGFzc05h
bWUgPSAnYnRuLWNvbmZpcm0gYXBwcm92ZSc7CiAgICAgICAgICAgIGhpbnQudGV4dENvbnRlbnQg
PSAnJzsKICAgICAgICAgICAgaGludC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAg
ICB0ZXh0YXJlYS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhY2Vob2xkZXInLCAnS29tbWVudGFyIChv
cHRpb25hbCkuLi4nKTsKICAgICAgICAgICAgdGhpcy5fcmV2aWV3Q29tbWVudFJlcXVpcmVkID0g
ZmFsc2U7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGhlYWRlclNwYW4pIGhlYWRl
clNwYW4udGV4dENvbnRlbnQgPSAnRG9rdW1lbnQgYWJsZWhuZW4gdW5kIGJlZ3LDvG5kZW4nOwog
ICAgICAgICAgICBoZWFkZXJFbC5jbGFzc05hbWUgPSAncmV2aWV3LWRpYWxvZy1oZWFkZXIgcmVq
ZWN0JzsKICAgICAgICAgICAgY29uZmlybUJ0bi50ZXh0Q29udGVudCA9ICdBYmxlaG5lbic7CiAg
ICAgICAgICAgIGNvbmZpcm1CdG4uY2xhc3NOYW1lID0gJ2J0bi1jb25maXJtIHJlamVjdCc7CiAg
ICAgICAgICAgIHZhciByZWpNb2RlID0gKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEuc2V0dGluZ3Mp
ID8gKHRoaXMuZGF0YS5zZXR0aW5ncy5yZWplY3Rpb25SZWFzb25Nb2RlIHx8ICdyZXF1aXJlZCcp
IDogJ3JlcXVpcmVkJzsKICAgICAgICAgICAgaGludC5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAg
ICAgICAgIGlmIChyZWpNb2RlID09PSAncmVxdWlyZWQnKSB7CiAgICAgICAgICAgICAgICBoaW50
LnRleHRDb250ZW50ID0gJ0VpbmUgYXVzZsO8aHJsaWNoZSBCZWdyw7xuZHVuZyBpc3QgZXJmb3Jk
ZXJsaWNoLiBCZXNjaHJlaWJlLCB3YXJ1bSBkZXIgQXJ0aWtlbCBhYmdlbGVobnQgd2lyZCB1bmQg
d2VsY2hlIMOEbmRlcnVuZ2VuIG5vdHdlbmRpZyBzaW5kLic7CiAgICAgICAgICAgICAgICB0ZXh0
YXJlYS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhY2Vob2xkZXInLCAnQmVncsO8bmR1bmcgKFBmbGlj
aHRmZWxkKS4uLicpOwogICAgICAgICAgICAgICAgdGhpcy5fcmV2aWV3Q29tbWVudFJlcXVpcmVk
ID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIGlmIChyZWpNb2RlID09PSAnb3B0aW9uYWwnKSB7
CiAgICAgICAgICAgICAgICBoaW50LnRleHRDb250ZW50ID0gJ0VpbmUgQmVncsO8bmR1bmcgaXN0
IG9wdGlvbmFsLCB3aXJkIGFiZXIgZW1wZm9obGVuLic7CiAgICAgICAgICAgICAgICB0ZXh0YXJl
YS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhY2Vob2xkZXInLCAnQmVncsO8bmR1bmcgKG9wdGlvbmFs
KS4uLicpOwogICAgICAgICAgICAgICAgdGhpcy5fcmV2aWV3Q29tbWVudFJlcXVpcmVkID0gZmFs
c2U7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBoaW50LnRleHRDb250ZW50
ID0gJyc7IGhpbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHRleHRh
cmVhLnNldEF0dHJpYnV0ZSgnZGF0YS1wbGFjZWhvbGRlcicsICdLb21tZW50YXIgKG9wdGlvbmFs
KS4uLicpOwogICAgICAgICAgICAgICAgdGhpcy5fcmV2aWV3Q29tbWVudFJlcXVpcmVkID0gZmFs
c2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGluZm8udGV4dENvbnRlbnQgPSBk
b2MudGl0ZWwgKyAnICgnICsgZG9jLmthdGVnb3JpZSArICcpJzsKICAgICAgICB0ZXh0YXJlYS5p
bm5lckhUTUwgPSAnJzsKCiAgICAgICAgLy8gQXJ0aWtlbGluaGFsdCBsaW5rcyBhbnplaWdlbgog
ICAgICAgIHZhciBpbmhhbHQgPSBkb2MuaW5oYWx0IHx8ICc8ZW0gc3R5bGU9ImNvbG9yOnZhcigt
LXRleHQtbXV0ZWQpOyI+S2VpbiBJbmhhbHQ8L2VtPic7CiAgICAgICAgYXJ0aWNsZUNvbnRlbnQu
aW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206OHB4O2ZvbnQtd2VpZ2h0OjYw
MDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO2ZvbnQtc2l6ZToxNXB4OyI+JyArCiAgICAgICAg
ICAgIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZG9jLnRpdGVsKSArICc8L2Rpdj4nICsgaW5oYWx0
OwoKICAgICAgICAvLyBCaXNoZXJpZ2UgS29tbWVudGFyZSBtaXQgUmV2aWV3ZXItRmFyYmVuIGFu
emVpZ2VuCiAgICAgICAgdGhpcy5fcmV2aWV3ZXJDb2xvck1hcCA9IHt9OwogICAgICAgIHZhciBo
aXN0b3J5ID0gKGRvYy5nb3Zlcm5hbmNlICYmIGRvYy5nb3Zlcm5hbmNlLnJldmlld0hpc3Rvcnkp
ID8gZG9jLmdvdmVybmFuY2UucmV2aWV3SGlzdG9yeSA6IFtdOwogICAgICAgIHZhciBjb21tZW50
c0h0bWwgPSAnJzsKICAgICAgICBoaXN0b3J5LmZvckVhY2goZnVuY3Rpb24oZW50cnkpIHsKICAg
ICAgICAgICAgaWYgKCFlbnRyeS5jb21tZW50KSByZXR1cm47CiAgICAgICAgICAgIHZhciBjb2xv
ciA9IERyaXZlR292ZXJuYW5jZS5fZ2V0UmV2aWV3ZXJDb2xvcihlbnRyeS5ieSB8fCAnVW5iZWth
bm50Jyk7CiAgICAgICAgICAgIHZhciBhY3Rpb25MYWJlbCA9IGVudHJ5LmFjdGlvbiA9PT0gJ2Fw
cHJvdmVkJyA/ICdGcmVpZ2VnZWJlbicgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bnRyeS5hY3Rpb24gPT09ICdyZWplY3RlZCcgPyAnQWJnZWxlaG50JyA6ICdFaW5nZXJlaWNodCc7
CiAgICAgICAgICAgIHZhciBuaWdodEJnID0gY29sb3IuYmc7CiAgICAgICAgICAgIGNvbW1lbnRz
SHRtbCArPSAnPGRpdiBjbGFzcz0icmV2aWV3LWNvbW1lbnQtYnViYmxlIiBzdHlsZT0iYmFja2dy
b3VuZDonICsgY29sb3IuYmcgKyAnO2JvcmRlci1sZWZ0LWNvbG9yOicgKyBjb2xvci5ib3JkZXIg
KyAnOyIgdGl0bGU9IicgKyBmb3JtYXREYXRlVGltZShlbnRyeS5hdCkgKyAnIj4nICsKICAgICAg
ICAgICAgICAgICc8c3BhbiBjbGFzcz0icmMtYXV0aG9yIiBzdHlsZT0iY29sb3I6JyArIGNvbG9y
LnRleHQgKyAnOyI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZW50cnkuYnkgfHwgJ1VuYmVr
YW5udCcpICsgJyDigJMgJyArIGFjdGlvbkxhYmVsICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAg
ICAgICc8c3BhbiBjbGFzcz0icmMtZGF0ZSI+JyArIGZvcm1hdERhdGVUaW1lKGVudHJ5LmF0KSAr
ICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icmMtdGV4dCI+JyArIGVu
dHJ5LmNvbW1lbnQgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0p
OwogICAgICAgIGlmICghY29tbWVudHNIdG1sKSB7CiAgICAgICAgICAgIGNvbW1lbnRzSHRtbCA9
ICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtwYWRk
aW5nOjhweCAwOyI+Tm9jaCBrZWluZSBLb21tZW50YXJlIHZvcmhhbmRlbi48L2Rpdj4nOwogICAg
ICAgIH0KICAgICAgICBwcmV2Q29tbWVudHMuaW5uZXJIVE1MID0gY29tbWVudHNIdG1sOwoKICAg
ICAgICB0aGlzLl9yZXZpZXdEaWFsb2dBY3Rpb24gPSBhY3Rpb247CiAgICAgICAgdGhpcy5fcmV2
aWV3RGlhbG9nQ2FsbGJhY2sgPSBkb2NJZDsKICAgICAgICBjb25maXJtQnRuLm9uY2xpY2sgPSAo
KSA9PiB0aGlzLmNvbmZpcm1SZXZpZXcoKTsKCiAgICAgICAgLy8gUGFzdGUtSGFuZGxlcjogTnVy
IEtsYXJ0ZXh0IGVpbmZ1ZWdlbgogICAgICAgIHRleHRhcmVhLm9ucGFzdGUgPSBmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgdmFyIHRleHQg
PSAoZS5jbGlwYm9hcmREYXRhIHx8IHdpbmRvdy5jbGlwYm9hcmREYXRhKS5nZXREYXRhKCd0ZXh0
L3BsYWluJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRUZXh0Jywg
ZmFsc2UsIHRleHQpOwogICAgICAgIH07CgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXZpZXdEaWFsb2cnKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIH0sCgogICAgY2xv
c2VSZXZpZXdEaWFsb2coKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jldmll
d0RpYWxvZycpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgIHRoaXMuX3Jldmll
d0RpYWxvZ0NhbGxiYWNrID0gbnVsbDsKICAgIH0sCgogICAgYXN5bmMgY29uZmlybVJldmlldygp
IHsKICAgICAgICBjb25zdCBkb2NJZCA9IHRoaXMuX3Jldmlld0RpYWxvZ0NhbGxiYWNrOwogICAg
ICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Jldmlld0RpYWxvZ0FjdGlvbjsKICAgICAgICBjb25z
dCBjb21tZW50RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2aWV3RGlhbG9nQ29tbWVu
dCcpOwogICAgICAgIC8vIEtvbW1lbnRhci1IVE1MIHNhbml0aXplbjogbnVyIGVybGF1YnRlIFRh
Z3MgYmVoYWx0ZW4KICAgICAgICB2YXIgcmF3SHRtbCA9IGNvbW1lbnRFbC5pbm5lckhUTUwudHJp
bSgpLnJlcGxhY2UoL148YnI+JC8sICcnKTsKICAgICAgICB2YXIgc2FuaXRpemVEaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBzYW5pdGl6ZURpdi5pbm5lckhUTUwg
PSByYXdIdG1sOwogICAgICAgIC8vIEFsbGUgdW5lcmxhdWJ0ZW4gVGFncyBkdXJjaCBpaHJlbiBU
ZXh0aW5oYWx0IGVyc2V0emVuCiAgICAgICAgc2FuaXRpemVEaXYucXVlcnlTZWxlY3RvckFsbCgn
YSwgaW1nLCBzY3JpcHQsIHN0eWxlLCBpZnJhbWUsIGRpdiwgc3BhbltzdHlsZSo9ImZvbnQtc2l6
ZSJdLCBzcGFuW3N0eWxlKj0id2hpdGUtc3BhY2UiXScpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsK
ICAgICAgICAgICAgaWYgKGVsLnRhZ05hbWUgPT09ICdESVYnKSB7CiAgICAgICAgICAgICAgICAv
LyBEaXZzIGR1cmNoIGlocmVuIEluaGFsdCArIFplaWxlbnVtYnJ1Y2ggZXJzZXR6ZW4KICAgICAg
ICAgICAgICAgIGVsLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCAnPGJyPicpOwogICAg
ICAgICAgICAgICAgZWwucmVwbGFjZVdpdGgoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZWwudGV4
dENvbnRlbnQpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVsLnJlcGxh
Y2VXaXRoKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGVsLnRleHRDb250ZW50KSk7CiAgICAgICAg
ICAgIH0KICAgICAgICB9KTsKICAgICAgICBjb25zdCBjb21tZW50ID0gc2FuaXRpemVEaXYuaW5u
ZXJIVE1MLnRyaW0oKS5yZXBsYWNlKC9ePGJyPiQvLCAnJyk7CgogICAgICAgIGlmICghZG9jSWQp
IHJldHVybjsKCiAgICAgICAgLy8gUGZsaWNodGZlbGQtUHJ1ZWZ1bmcgZnVlciBBYmxlaG51bmdz
YmVncnVlbmR1bmcKICAgICAgICB2YXIgY29tbWVudFRleHQgPSBjb21tZW50RWwudGV4dENvbnRl
bnQudHJpbSgpOwogICAgICAgIGlmIChhY3Rpb24gPT09ICdyZWplY3QnKSB7CiAgICAgICAgICAg
IGlmICh0aGlzLl9yZXZpZXdDb21tZW50UmVxdWlyZWQgJiYgIWNvbW1lbnRUZXh0KSB7CiAgICAg
ICAgICAgICAgICBzaG93VG9hc3QoJ0JpdHRlIGVpbmUgQmVncsO8bmR1bmcgZWluZ2ViZW4gKFBm
bGljaHRmZWxkKScsICd3YXJuaW5nJyk7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmV2aWV3RGlhbG9nQ29tbWVudCcpLmZvY3VzKCk7CiAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFNjaHJlaWJ6dWdyaWZm
IHNpY2hlcnN0ZWxsZW4gKGZpbGU6Ly8gTW9kdXMgaXN0IHN0YW5kYXJkbWFlc3NpZyByZWFkLW9u
bHkpCiAgICAgICAgaWYgKERyaXZlRlMucmVhZE9ubHkpIHsKICAgICAgICAgICAgY29uc3QgZ3Jh
bnRlZCA9IGF3YWl0IERyaXZlRlMuZW5zdXJlV3JpdGVBY2Nlc3MoKTsKICAgICAgICAgICAgaWYg
KCFncmFudGVkKSB7CiAgICAgICAgICAgICAgICBzaG93VG9hc3QoJ1NjaHJlaWJ6dWdyaWZmIGVy
Zm9yZGVybGljaCBmw7xyIEZyZWlnYWJlLUFrdGlvbmVuJywgJ3dhcm5pbmcnKTsKICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgY29uc3QgZG9j
ID0gRHJpdmVGUy5kb2N1bWVudHMuZmluZChkID0+IGQuaWQgPT09IGRvY0lkKTsKICAgICAgICBp
ZiAoIWRvYykgcmV0dXJuOwoKICAgICAgICAvLyBHb3Zlcm5hbmNlLURhdGVuIHp1bSBEb2t1bWVu
dCBoaW56dWZ1ZWdlbgogICAgICAgIGlmICghZG9jLmdvdmVybmFuY2UpIGRvYy5nb3Zlcm5hbmNl
ID0geyByZXZpZXdIaXN0b3J5OiBbXSB9OwogICAgICAgIGlmICghZG9jLmdvdmVybmFuY2UucmV2
aWV3SGlzdG9yeSkgZG9jLmdvdmVybmFuY2UucmV2aWV3SGlzdG9yeSA9IFtdOwoKICAgICAgICBk
b2MuZ292ZXJuYW5jZS5yZXZpZXdIaXN0b3J5LnB1c2goewogICAgICAgICAgICBhY3Rpb246IGFj
dGlvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCcsCiAgICAgICAgICAg
IGJ5OiB0aGlzLmN1cnJlbnRVc2VyLAogICAgICAgICAgICBhdDogbmV3IERhdGUoKS50b0lTT1N0
cmluZygpLAogICAgICAgICAgICBjb21tZW50OiBjb21tZW50CiAgICAgICAgfSk7CgogICAgICAg
IHZhciBuZXdTdGF0dXMgPSBhY3Rpb24gPT09ICdhcHByb3ZlJyA/ICdGcmVpZ2VnZWJlbicgOiAn
QWJnZWxlaG50JzsKICAgICAgICBkb2MudmVyc2lvbiA9IGNhbGN1bGF0ZVZlcnNpb24oZG9jLCBk
b2MuaW5oYWx0LCBkb2MuaW5oYWx0LCBuZXdTdGF0dXMpOwogICAgICAgIGlmIChhY3Rpb24gPT09
ICdhcHByb3ZlJykgewogICAgICAgICAgICBkb2Muc3RhdHVzID0gJ0ZyZWlnZWdlYmVuJzsKICAg
ICAgICAgICAgZG9jLmdvdmVybmFuY2UuYXBwcm92ZWRCeSA9IHRoaXMuY3VycmVudFVzZXI7CiAg
ICAgICAgICAgIGRvYy5nb3Zlcm5hbmNlLmFwcHJvdmVkQXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3Ry
aW5nKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9jLnN0YXR1cyA9ICdBYmdlbGVo
bnQnOwogICAgICAgIH0KICAgICAgICAvLyBEaWZmLURhdGVuIGJlcmVpbmlnZW4gKG5hY2ggRnJl
aWdhYmUvQWJsZWhudW5nIG5pY2h0IG1laHIgbm9ldGlnKQogICAgICAgIGRlbGV0ZSBkb2MuX3By
ZXZpb3VzSW5oYWx0OwogICAgICAgIGRlbGV0ZSBkb2MuX3ByZXZpb3VzVGl0ZWw7CgogICAgICAg
IHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHNhdmVSZXN1bHQgPSBhd2FpdCBEcml2ZUZTLnNhdmVE
b2N1bWVudChkb2MpOwogICAgICAgICAgICBpZiAoc2F2ZVJlc3VsdCA9PT0gdHJ1ZSkgewogICAg
ICAgICAgICAgICAgY29uc3QgbXNnID0gYWN0aW9uID09PSAnYXBwcm92ZScgPyAnRG9rdW1lbnQg
ZnJlaWdlZ2ViZW4nIDogJ0Rva3VtZW50IGFiZ2VsZWhudCc7CiAgICAgICAgICAgICAgICBzaG93
VG9hc3QobXNnICsgJzogJyArIGRvYy50aXRlbCwgYWN0aW9uID09PSAnYXBwcm92ZScgPyAnc3Vj
Y2VzcycgOiAnd2FybmluZycpOwogICAgICAgICAgICAgICAgdGhpcy5jbG9zZVJldmlld0RpYWxv
ZygpOwogICAgICAgICAgICAgICAgdGhpcy5jbG9zZVF1ZXVlKCk7CiAgICAgICAgICAgICAgICBE
cml2ZVBvcnRhbC5yZW5kZXIoKTsKICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVUkoKTsKICAg
ICAgICAgICAgICAgIGF3YWl0IERyaXZlUG9ydGFsLnNlbGVjdERvY3VtZW50KGRvY0lkKTsKICAg
ICAgICAgICAgICAgIERyaXZlUG9ydGFsLmhpZ2hsaWdodEl0ZW0oZG9jSWQpOwogICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdGZWhsZXIgYmVpbSBTcGVpY2hl
cm46ICcgKyBzYXZlUmVzdWx0LCAnZXJyb3InLCA1MDAwKTsKICAgICAgICAgICAgfQogICAgICAg
IH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBzaG93VG9hc3QoJ1NwZWljaGVybiBmZWhsZ2Vz
Y2hsYWdlbjogJyArIGVyci5tZXNzYWdlLCAnZXJyb3InLCA1MDAwKTsKICAgICAgICB9CiAgICB9
LAoKICAgIC8vIC0tLSBTdWJtaXQgZm9yIFJldmlldyAtLS0KICAgIGFzeW5jIHN1Ym1pdEZvclJl
dmlldyhkb2MpIHsKICAgICAgICBpZiAoIWRvYy5nb3Zlcm5hbmNlKSBkb2MuZ292ZXJuYW5jZSA9
IHsgcmV2aWV3SGlzdG9yeTogW10gfTsKICAgICAgICBpZiAoIWRvYy5nb3Zlcm5hbmNlLnJldmll
d0hpc3RvcnkpIGRvYy5nb3Zlcm5hbmNlLnJldmlld0hpc3RvcnkgPSBbXTsKCiAgICAgICAgLy8g
Vm9yaGVyaWdlbiBJbmhhbHQgc2ljaGVybiBmdWVyIERpZmYtQW56ZWlnZSBiZWltIFJldmlldwog
ICAgICAgIC8vIExlc2UgZGllIHp1bGV0enQgZ2VzcGVpY2hlcnRlIFZlcnNpb24gdm9uIERpc2sg
KG5pY2h0IGRpZSBnZXJhZGUgYmVhcmJlaXRldGUpCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAg
dmFyIHNhdmVkRG9jID0gYXdhaXQgRHJpdmVGUy5sb2FkRG9jdW1lbnQoZG9jLmlkKTsKICAgICAg
ICAgICAgaWYgKHNhdmVkRG9jICYmIHNhdmVkRG9jLmluaGFsdCkgewogICAgICAgICAgICAgICAg
ZG9jLl9wcmV2aW91c0luaGFsdCA9IHNhdmVkRG9jLmluaGFsdDsKICAgICAgICAgICAgICAgIGRv
Yy5fcHJldmlvdXNUaXRlbCA9IHNhdmVkRG9jLnRpdGVsOwogICAgICAgICAgICB9CiAgICAgICAg
fSBjYXRjaChlKSB7fQoKICAgICAgICBkb2Muc3RhdHVzID0gJ1Byw7xmdW5nJzsKICAgICAgICBk
b2MuZ292ZXJuYW5jZS5zdWJtaXR0ZWRGb3JSZXZpZXcgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5n
KCk7CiAgICAgICAgZG9jLmdvdmVybmFuY2UucmV2aWV3SGlzdG9yeS5wdXNoKHsKICAgICAgICAg
ICAgYWN0aW9uOiAnc3VibWl0dGVkJywKICAgICAgICAgICAgYnk6IHRoaXMuY3VycmVudFVzZXIs
CiAgICAgICAgICAgIGF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAgICAgICAgIGNv
bW1lbnQ6ICcnCiAgICAgICAgfSk7CiAgICB9LAoKICAgIC8vIC0tLSBHb3Zlcm5hbmNlIEFkbWlu
IFBhbmVsIC0tLQogICAgc2hvd0FkbWluKCkgewogICAgICAgIGlmICghdGhpcy5pc1N1cGVyVXNl
cigpICYmICF0aGlzLmlzRmFjaGF1ZnNpY2h0KCkpIHJldHVybjsKICAgICAgICB0aGlzLnJlbmRl
ckFkbWluKCk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdkFkbWluUGFuZWwn
KS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIH0sCgogICAgY2xvc2VBZG1pbigpIHsKICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292QWRtaW5QYW5lbCcpLmNsYXNzTGlzdC5y
ZW1vdmUoJ2FjdGl2ZScpOwogICAgfSwKCiAgICByZW5kZXJBZG1pbigpIHsKICAgICAgICBjb25z
dCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdkFkbWluQm9keScpOwogICAgICAg
IGNvbnN0IGdvdiA9IHRoaXMuZGF0YSB8fCB7IHN1cGVyVXNlcnM6IFtdLCByZXZpZXdlcnM6IFtd
LCBmYWNoYXVmc2ljaHQ6IFtdLCBzZXR0aW5nczoge30gfTsKICAgICAgICBpZiAoIWdvdi5mYWNo
YXVmc2ljaHQpIGdvdi5mYWNoYXVmc2ljaHQgPSBbXTsKICAgICAgICBpZiAoIWdvdi5zZXR0aW5n
cykgZ292LnNldHRpbmdzID0ge307CiAgICAgICAgY29uc3Qga2F0ZWdvcmllbiA9IERyaXZlRlMu
Y29uZmlnLmthdGVnb3JpZW4gfHwgW107CiAgICAgICAgY29uc3QgaXNTVSA9IHRoaXMuaXNTdXBl
clVzZXIoKTsKCiAgICAgICAgLy8gLS0tIFN1cGVyVXNlciAtLS0KICAgICAgICBsZXQgaHRtbCA9
ICc8ZGl2IGNsYXNzPSJnb3Ytc2VjdGlvbiI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJn
b3Ytc2VjdGlvbi10aXRsZSIgdGl0bGU9IlN1cGVyVXNlciBoYWJlbiBWb2xsenVncmlmZiBhdWYg
YWxsZSBGdW5rdGlvbmVuOiBSb2xsZW4gdmVyZ2ViZW4sIEVpbnN0ZWxsdW5nZW4gw6RuZGVybiwg
YWxsZSBBcnRpa2VsIGZyZWlnZWJlbiBvZGVyIGFibGVobmVuLiI+QWRtaW5pc3RyYXRvcmVuIChT
dXBlclVzZXIpPC9kaXY+JzsKICAgICAgICBnb3Yuc3VwZXJVc2Vycy5mb3JFYWNoKGZ1bmN0aW9u
KHN1LCBpKSB7CiAgICAgICAgICAgIHZhciBvZSA9IHN1Lm9yZ2FuaXNhdGlvbnNlaW5oZWl0ID8g
JyDCtyAnICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChzdS5vcmdhbmlzYXRpb25zZWluaGVpdCkg
OiAnJzsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZ292LXVzZXItcm93Ij4nICsK
ICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZ292LXJvbGUtaWNvbiBzdSI+U1U8L3NwYW4+
JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZ292LXVzZXItaW5mbyI+PGRpdiBjbGFz
cz0iZ292LXVzZXItbmFtZSI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoc3UuZGlzcGxheU5h
bWUgfHwgc3UudXNlcm5hbWUpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJnb3YtdXNlci1kZXRhaWwiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHN1LnVz
ZXJuYW1lKSArIG9lICsgJzwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAgICAgKGlzU1UgJiYg
Z292LnN1cGVyVXNlcnMubGVuZ3RoID4gMSA/ICc8YnV0dG9uIGNsYXNzPSJyZW1vdmUiIG9uY2xp
Y2s9IkRyaXZlR292ZXJuYW5jZS5yZW1vdmVTdXBlclVzZXIoJyArIGkgKyAnKSI+RW50ZmVybmVu
PC9idXR0b24+JyA6ICcnKSArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0pOwogICAg
ICAgIGlmIChpc1NVKSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Imdvdi1jYXQt
YWRkLXJvdyIgc3R5bGU9ImdhcDo2cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9ImdvdlNVVXNlciIgcGxhY2Vob2xkZXI9Ik5XLUtlbm51bmciIHN0eWxlPSJt
YXgtd2lkdGg6MTIwcHg7Ij4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIg
aWQ9ImdvdlNVTmFtZSIgcGxhY2Vob2xkZXI9IkFuemVpZ2VuYW1lIiBzdHlsZT0iZmxleDoyOyI+
JyArCiAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJnb3ZTVU9FIiBwbGFj
ZWhvbGRlcj0iT3JnYW5pc2F0aW9uc2VpbmhlaXQiIHN0eWxlPSJmbGV4OjI7Ij4nICsKICAgICAg
ICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0biIgc3R5bGU9InBhZGRpbmc6NnB4
IDE0cHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuYWRkU3VwZXJVc2VyKCkiPkhpbnp1ZsO8
Z2VuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0KICAgICAgICBo
dG1sICs9ICc8L2Rpdj4nOwoKICAgICAgICAvLyAtLS0gRmFjaGF1ZnNpY2h0IC0tLQogICAgICAg
IGh0bWwgKz0gJzxkaXYgY2xhc3M9Imdvdi1zZWN0aW9uIj4nICsKICAgICAgICAgICAgJzxkaXYg
Y2xhc3M9Imdvdi1zZWN0aW9uLXRpdGxlIiB0aXRsZT0iRGllIEZhY2hhdWZzaWNodCBoYXQgZGll
IGdsZWljaGVuIFJlY2h0ZSB3aWUgZWluIFN1cGVyVXNlciwga2FubiBhYmVyIGtlaW5lIFJvbGxl
biB2ZXJnZWJlbi4gR2VkYWNodCBmw7xyIFZvcmdlc2V0enRlLCBkaWUgSW5oYWx0ZSBwcsO8ZmVu
IHNvbGxlbi4iPkZhY2hhdWZzaWNodCAoJyArIGdvdi5mYWNoYXVmc2ljaHQubGVuZ3RoICsgJyk8
L2Rpdj4nOwogICAgICAgIGlmIChnb3YuZmFjaGF1ZnNpY2h0Lmxlbmd0aCA9PT0gMCkgewogICAg
ICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJnb3YtZW1wdHkiPk5vY2gga2VpbmUgRmFjaGF1
ZnNpY2h0IGtvbmZpZ3VyaWVydDwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGdvdi5mYWNoYXVm
c2ljaHQuZm9yRWFjaChmdW5jdGlvbihmYSwgaSkgewogICAgICAgICAgICB2YXIgb2UgPSBmYS5v
cmdhbmlzYXRpb25zZWluaGVpdCA/ICcgwrcgJyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoZmEu
b3JnYW5pc2F0aW9uc2VpbmhlaXQpIDogJyc7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xh
c3M9Imdvdi11c2VyLXJvdyI+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9Imdvdi1y
b2xlLWljb24gZmEiPkZBPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdv
di11c2VyLWluZm8iPjxkaXYgY2xhc3M9Imdvdi11c2VyLW5hbWUiPicgKyBEcml2ZVBvcnRhbC5l
c2NhcGVIVE1MKGZhLmRpc3BsYXlOYW1lIHx8IGZhLnVzZXJuYW1lKSArICc8L2Rpdj4nICsKICAg
ICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZ292LXVzZXItZGV0YWlsIj4nICsgRHJpdmVQ
b3J0YWwuZXNjYXBlSFRNTChmYS51c2VybmFtZSkgKyBvZSArICc8L2Rpdj48L2Rpdj4nICsKICAg
ICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6I2M2MjgyODsi
PkFsbGUgS2F0ZWdvcmllbjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgIChpc1NVID8gJzxidXR0
b24gY2xhc3M9InJlbW92ZSIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLnJlbW92ZUZhY2hhdWZz
aWNodCgnICsgaSArICcpIj5FbnRmZXJuZW48L2J1dHRvbj4nIDogJycpICsKICAgICAgICAgICAg
JzwvZGl2Pic7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKGlzU1UpIHsKICAgICAgICAgICAgaHRt
bCArPSAnPGRpdiBjbGFzcz0iZ292LWNhdC1hZGQtcm93IiBzdHlsZT0iZ2FwOjZweDsiPicgKwog
ICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZ292RkFVc2VyIiBwbGFjZWhv
bGRlcj0iTlctS2VubnVuZyIgc3R5bGU9Im1heC13aWR0aDoxMjBweDsiPicgKwogICAgICAgICAg
ICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZ292RkFOYW1lIiBwbGFjZWhvbGRlcj0iQW56
ZWlnZW5hbWUiIHN0eWxlPSJmbGV4OjI7Ij4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9ImdvdkZBT0UiIHBsYWNlaG9sZGVyPSJPcmdhbmlzYXRpb25zZWluaGVpdCIg
c3R5bGU9ImZsZXg6MjsiPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9Imdvdi1h
ZGQtYnRuIiBzdHlsZT0icGFkZGluZzo2cHggMTRweDsiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5j
ZS5hZGRGYWNoYXVmc2ljaHQoKSI+SGluenVmw7xnZW48L2J1dHRvbj4nICsKICAgICAgICAgICAg
JzwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CgogICAgICAgIC8v
IC0tLSBSZXZpZXdlciAtLS0KICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJnb3Ytc2VjdGlv
biI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnb3Ytc2VjdGlvbi10aXRsZSIgdGl0bGU9
IlJldmlld2VyIGTDvHJmZW4gQXJ0aWtlbCBpbiBkZW4gaWhuZW4genVnZXdpZXNlbmVuIEthdGVn
b3JpZW4gZnJlaWdlYmVuIG9kZXIgYWJsZWhuZW4uIEplZGVyIFJldmlld2VyIGJla29tbXQgYmVz
dGltbXRlIEZhY2hiZXJlaWNoZSB6dWdld2llc2VuLiI+UmV2aWV3ZXIgKCcgKyBnb3YucmV2aWV3
ZXJzLmxlbmd0aCArICcpPC9kaXY+JzsKICAgICAgICBpZiAoZ292LnJldmlld2Vycy5sZW5ndGgg
PT09IDApIHsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZ292LWVtcHR5Ij5Ob2No
IGtlaW5lIFJldmlld2VyIGtvbmZpZ3VyaWVydDwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGdv
di5yZXZpZXdlcnMuZm9yRWFjaChmdW5jdGlvbihyLCBpKSB7CiAgICAgICAgICAgIHZhciBvZSA9
IHIub3JnYW5pc2F0aW9uc2VpbmhlaXQgPyAnIMK3ICcgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1M
KHIub3JnYW5pc2F0aW9uc2VpbmhlaXQpIDogJyc7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYg
Y2xhc3M9Imdvdi11c2VyLXJvdyI+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9Imdv
di1yb2xlLWljb24gcmV2Ij5SPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9
Imdvdi11c2VyLWluZm8iPjxkaXYgY2xhc3M9Imdvdi11c2VyLW5hbWUiPicgKyBEcml2ZVBvcnRh
bC5lc2NhcGVIVE1MKHIuZGlzcGxheU5hbWUgfHwgci51c2VybmFtZSkgKyAnPC9kaXY+JyArCiAg
ICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdvdi11c2VyLWRldGFpbCI+JyArIERyaXZl
UG9ydGFsLmVzY2FwZUhUTUwoci51c2VybmFtZSkgKyBvZSArICc8L2Rpdj48L2Rpdj4nICsKICAg
ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnb3YtY2F0LXRhZ3MiPicgKyAoci5rYXRlZ29yaWVu
IHx8IFtdKS5tYXAoZnVuY3Rpb24oaykgeyByZXR1cm4gJzxzcGFuIGNsYXNzPSJnb3YtY2F0LXRh
ZyI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoaykgKyAnPC9zcGFuPic7IH0pLmpvaW4oJycp
ICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImVkaXQiIG9uY2xp
Y2s9IkRyaXZlR292ZXJuYW5jZS5lZGl0UmV2aWV3ZXIoJyArIGkgKyAnKSI+QmVhcmJlaXRlbjwv
YnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9InJlbW92ZSIgb25jbGlj
az0iRHJpdmVHb3Zlcm5hbmNlLnJlbW92ZVJldmlld2VyKCcgKyBpICsgJykiPkVudGZlcm5lbjwv
YnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICB9KTsKICAgICAgICBodG1s
ICs9ICc8L2Rpdj4nOwoKICAgICAgICAvLyAtLS0gUmV2aWV3ZXItRm9ybXVsYXI6IEZlbGRlciBs
aW5rcywgS2F0ZWdvcmllbiByZWNodHMgLS0tCiAgICAgICAgdmFyIGlzRWRpdGluZyA9IHRoaXMu
X2VkaXRpbmdSZXZpZXdlckluZGV4ID49IDA7CiAgICAgICAgdmFyIGVkaXREYXRhID0gaXNFZGl0
aW5nID8gZ292LnJldmlld2Vyc1t0aGlzLl9lZGl0aW5nUmV2aWV3ZXJJbmRleF0gOiBudWxsOwog
ICAgICAgIHZhciBmb3JtVGl0bGUgPSBpc0VkaXRpbmcgPyAnUmV2aWV3ZXIgYmVhcmJlaXRlbicg
OiAnUmV2aWV3ZXIgaGluenVmw7xnZW4nOwogICAgICAgIHZhciBmb3JtQnRuTGFiZWwgPSBpc0Vk
aXRpbmcgPyAnU3BlaWNoZXJuJyA6ICdIaW56dWbDvGdlbic7CgogICAgICAgIGh0bWwgKz0gJzxk
aXYgY2xhc3M9Imdvdi1zZWN0aW9uIiBpZD0iZ292QWRkU2VjdGlvbiI+JyArCiAgICAgICAgICAg
ICc8ZGl2IGNsYXNzPSJnb3Ytc2VjdGlvbi10aXRsZSI+JyArIGZvcm1UaXRsZSArICc8L2Rpdj4n
ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9Imdvdi10d28tY29sIiBzdHlsZT0iZ2FwOjEycHg7
YWxpZ24taXRlbXM6c3RyZXRjaDsiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRp
c3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ij4nICsKICAgICAgICAgICAgICAgICAg
ICAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo2cHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6
ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtmb250LXdlaWdodDo2MDA7Ij5OVy1L
ZW5udW5nPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0iZ292QWRkVXNlciIgcGxhY2Vob2xkZXI9InouQi4gbncxMjM0NSIgdmFsdWU9Iicg
KyAoZWRpdERhdGEgPyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGVkaXREYXRhLnVzZXJuYW1lKSA6
ICcnKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6NXB4IDhweDtib3JkZXI6MXB4IHNv
bGlkIHZhcigtLWJvcmRlci1zdHJvbmcpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxM3B4
O21hcmdpbi10b3A6MnB4O2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Ij48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0i
bWFyZ2luLWJvdHRvbTo2cHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZh
cigtLXRleHQtc2Vjb25kYXJ5KTtmb250LXdlaWdodDo2MDA7Ij5BbnplaWdlbmFtZTwvbGFiZWw+
JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImdvdkFk
ZE5hbWUiIHBsYWNlaG9sZGVyPSJWb3ItIHVuZCBOYWNobmFtZSIgdmFsdWU9IicgKyAoZWRpdERh
dGEgPyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGVkaXREYXRhLmRpc3BsYXlOYW1lIHx8ICcnKSA6
ICcnKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6NXB4IDhweDtib3JkZXI6MXB4IHNv
bGlkIHZhcigtLWJvcmRlci1zdHJvbmcpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZToxM3B4
O21hcmdpbi10b3A6MnB4O2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2NvbG9yOnZhcigtLXRl
eHQtcHJpbWFyeSk7Ij48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0i
bWFyZ2luLWJvdHRvbTo2cHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZh
cigtLXRleHQtc2Vjb25kYXJ5KTtmb250LXdlaWdodDo2MDA7Ij5PcmdhbmlzYXRpb25zZWluaGVp
dDwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIg
aWQ9ImdvdkFkZE9FIiBwbGFjZWhvbGRlcj0iYnNwLiBGdWVTdCBWLCBWRC1BUC4uLiIgdmFsdWU9
IicgKyAoZWRpdERhdGEgPyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGVkaXREYXRhLm9yZ2FuaXNh
dGlvbnNlaW5oZWl0IHx8ICcnKSA6ICcnKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6
NXB4IDhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1zdHJvbmcpO2JvcmRlci1yYWRp
dXM6NHB4O2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MnB4O2JhY2tncm91bmQ6dmFyKC0tYmct
aW5wdXQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij48L2Rpdj4nICsKICAgICAgICAgICAg
ICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo2cHg7bWFyZ2luLXRvcDo0cHg7
anVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgIChp
c0VkaXRpbmcgPyAnPGJ1dHRvbiBjbGFzcz0iZ292LWNhbmNlbC1idG4iIHN0eWxlPSJwYWRkaW5n
OjZweCAxMnB4OyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmNhbmNlbEVkaXQoKSI+QWJicmVj
aGVuPC9idXR0b24+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNs
YXNzPSJnb3YtYWRkLWJ0biIgc3R5bGU9InBhZGRpbmc6NnB4IDE2cHg7IiBvbmNsaWNrPSJEcml2
ZUdvdmVybmFuY2UuYWRkUmV2aWV3ZXIoKSI+JyArIGZvcm1CdG5MYWJlbCArICc8L2J1dHRvbj4n
ICsKICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+
JyArCiAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0
aW9uOmNvbHVtbjsiPicgKwogICAgICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImZvbnQt
c2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtmb250LXdlaWdodDo2MDA7Ij5L
YXRlZ29yaWVuIChNZWhyZmFjaGF1c3dhaGwgbWl0IFN0cmcrS2xpY2spPC9sYWJlbD4nICsKICAg
ICAgICAgICAgICAgICAgICAnPHNlbGVjdCBpZD0iZ292QWRkS2F0IiBtdWx0aXBsZSBzdHlsZT0i
d2lkdGg6MTAwJTtmbGV4OjE7bWFyZ2luLXRvcDoycHg7cGFkZGluZzo0cHg7Ym9yZGVyOjFweCBz
b2xpZCB2YXIoLS1ib3JkZXItc3Ryb25nKTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTNw
eDtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+
JzsKICAgICAgICB2YXIgZWRpdEthdHMgPSBlZGl0RGF0YSA/IChlZGl0RGF0YS5rYXRlZ29yaWVu
IHx8IFtdKSA6IFtdOwogICAgICAgIGthdGVnb3JpZW4uZm9yRWFjaChmdW5jdGlvbihrKSB7CiAg
ICAgICAgICAgIHZhciBzZWwgPSBlZGl0S2F0cy5pbmNsdWRlcyhrKSA/ICcgc2VsZWN0ZWQnIDog
Jyc7CiAgICAgICAgICAgIGh0bWwgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBEcml2ZVBvcnRhbC5l
c2NhcGVBdHRyKGspICsgJyInICsgc2VsICsgJz4nICsgRHJpdmVQb3J0YWwuZXNjYXBlSFRNTChr
KSArICc8L29wdGlvbj4nOwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvc2VsZWN0Pjwv
ZGl2PjwvZGl2PjwvZGl2Pic7CgogICAgICAgIC8vIC0tLSBLYXRlZ29yaWVuICsgRWluc3RlbGx1
bmdlbiBpbiBlaW5lciBnZW1laW5zYW1lbiBCb3ggLS0tCiAgICAgICAgaHRtbCArPSAnPGRpdiBj
bGFzcz0iZ292LXNlY3Rpb24iPic7CiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZ292LXR3
by1jb2wgY2F0LXNldHRpbmdzIiBzdHlsZT0iYWxpZ24taXRlbXM6c3RyZXRjaDsiPic7CgogICAg
ICAgIC8vIEthdGVnb3JpZW4gKGxpbmtlIFNwYWx0ZSkKICAgICAgICB2YXIgaGlkZGVuS2F0cyA9
IERyaXZlRlMuY29uZmlnLmhpZGRlbkthdGVnb3JpZW4gfHwgW107CiAgICAgICAgaHRtbCArPSAn
PGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjsiPicgKwogICAg
ICAgICAgICAnPGRpdiBjbGFzcz0iZ292LXNlY3Rpb24tdGl0bGUiIHRpdGxlPSJLYXRlZ29yaWVu
IHNpbmQgZGllIEZhY2hiZXJlaWNoZSwgaW4gZGllIEFydGlrZWwgZWluc29ydGllcnQgd2VyZGVu
LiBEdSBrYW5uc3QgS2F0ZWdvcmllbiBhdXNibGVuZGVuICh1bnNpY2h0YmFyIGbDvHIgTnV0emVy
KSBvZGVyIGdhbnogZW50ZmVybmVuLiI+S2F0ZWdvcmllbiAoJyArIGthdGVnb3JpZW4ubGVuZ3Ro
ICsgKGhpZGRlbkthdHMubGVuZ3RoID4gMCA/ICcsICcgKyBoaWRkZW5LYXRzLmxlbmd0aCArICcg
YXVzZ2VibGVuZGV0JyA6ICcnKSArICcpPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNz
PSJnb3YtY2F0LWxpc3QiIHN0eWxlPSJmbGV4OjE7Ij4nOwogICAgICAgIGthdGVnb3JpZW4uZm9y
RWFjaChmdW5jdGlvbihrYXQsIGkpIHsKICAgICAgICAgICAgdmFyIGRvY0NvdW50ID0gRHJpdmVG
Uy5kb2N1bWVudHMuZmlsdGVyKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5rYXRlZ29yaWUgPT09IGth
dDsgfSkubGVuZ3RoOwogICAgICAgICAgICB2YXIgaXNIaWRkZW4gPSBoaWRkZW5LYXRzLmluY2x1
ZGVzKGthdCk7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Imdvdi1jYXQtaXRlbScg
KyAoaXNIaWRkZW4gPyAnIGhpZGRlbi1jYXQnIDogJycpICsgJyI+JyArCiAgICAgICAgICAgICAg
ICAnPHNwYW4gY2xhc3M9Imdvdi1jYXQtbmFtZSI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwo
a2F0KSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6
ZToxMXB4O2NvbG9yOiM4ODg7Ij4nICsgZG9jQ291bnQgKyAnIERvay48L3NwYW4+JyArCiAgICAg
ICAgICAgICAgICAoaXNIaWRkZW4KICAgICAgICAgICAgICAgICAgICA/ICc8YnV0dG9uIGNsYXNz
PSJzaG93IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0NhdGVnb3J5KCcgKyBpICsgJyki
PkVpbmJsZW5kZW48L2J1dHRvbj4nCiAgICAgICAgICAgICAgICAgICAgOiAnPGJ1dHRvbiBjbGFz
cz0iaGlkZSIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmhpZGVDYXRlZ29yeSgnICsgaSArICcp
Ij5BdXNibGVuZGVuPC9idXR0b24+JykgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9
InJlbW92ZSIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLnJlbW92ZUNhdGVnb3J5KCcgKyBpICsg
JykiPkVudGZlcm5lbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICB9
KTsKICAgICAgICBodG1sICs9ICc8L2Rpdj4nOwogICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9
ImJvcmRlci10b3A6MnB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7bWFyZ2luLXRvcDo4cHg7
cGFkZGluZy10b3A6MTBweDsiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZ292LWNhdC1h
ZGQtcm93Ij4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Imdvdk5l
d0NhdCIgcGxhY2Vob2xkZXI9Ik5ldWUgS2F0ZWdvcmllLi4uIj4nICsKICAgICAgICAgICAgICAg
ICc8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0biIgc3R5bGU9InBhZGRpbmc6NnB4IDE0cHg7IiBv
bmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuYWRkQ2F0ZWdvcnkoKSI+SGluenVmw7xnZW48L2J1dHRv
bj4nICsKICAgICAgICAgICAgJzwvZGl2PjwvZGl2PjwvZGl2Pic7CgogICAgICAgIC8vIEVpbnN0
ZWxsdW5nZW4gKHJlY2h0ZSBTcGFsdGUpCiAgICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT0iZGlz
cGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3JkZXItbGVmdDoxcHggc29saWQgdmFy
KC0tYm9yZGVyLWxpZ2h0KTtwYWRkaW5nLWxlZnQ6MTRweDsiPicgKwogICAgICAgICAgICAnPGRp
diBjbGFzcz0iZ292LXNlY3Rpb24tdGl0bGUiPkVpbnN0ZWxsdW5nZW48L2Rpdj4nICsKICAgICAg
ICAgICAgJzxsYWJlbCBjbGFzcz0iZ292LXNldHRpbmctcm93IiB0aXRsZT0iV2VubiBha3Rpdiwg
bcO8c3NlbiBuZXVlIEFydGlrZWwgZXJzdCB2b24gZWluZW0gUmV2aWV3ZXIgZnJlaWdlZ2ViZW4g
d2VyZGVuLCBiZXZvciBzaWUgZsO8ciBhbGxlIHNpY2h0YmFyIHNpbmQuIj48aW5wdXQgdHlwZT0i
Y2hlY2tib3giIGlkPSJnb3ZSZXFOZXciICcgKyAoZ292LnNldHRpbmdzLnJlcXVpcmVBcHByb3Zh
bEZvck5ldyA/ICdjaGVja2VkJyA6ICcnKSArICcgb25jaGFuZ2U9IkRyaXZlR292ZXJuYW5jZS5z
YXZlU2V0dGluZ3MoKSI+IEZyZWlnYWJlIGbDvHIgbmV1ZSBBcnRpa2VsPC9sYWJlbD4nICsKICAg
ICAgICAgICAgJzxsYWJlbCBjbGFzcz0iZ292LXNldHRpbmctcm93IiB0aXRsZT0iV2VubiBha3Rp
diwgbXVzcyBqZWRlIEJlYXJiZWl0dW5nIGVpbmVzIGJlc3RlaGVuZGVuIEFydGlrZWxzIGVybmV1
dCBmcmVpZ2VnZWJlbiB3ZXJkZW4uIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJnb3ZSZXFF
ZGl0IiAnICsgKGdvdi5zZXR0aW5ncy5yZXF1aXJlQXBwcm92YWxGb3JFZGl0ID8gJ2NoZWNrZWQn
IDogJycpICsgJyBvbmNoYW5nZT0iRHJpdmVHb3Zlcm5hbmNlLnNhdmVTZXR0aW5ncygpIj4gRnJl
aWdhYmUgbmFjaCBCZWFyYmVpdHVuZzwvbGFiZWw+JyArCiAgICAgICAgICAgICc8bGFiZWwgY2xh
c3M9Imdvdi1zZXR0aW5nLXJvdyIgdGl0bGU9IlplaWd0IHVudGVyIGplZGVtIEFydGlrZWwgYW4s
IHdlciBkYXJhbiBtaXRnZXdpcmt0IGhhdCAoQXV0b3IsIFJlZGFrdGlvbiwgS29ycmVrdHVyIHVz
dy4pLiI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZ292U2hvd0NvbnRyaWIiICcgKyAoZ292
LnNldHRpbmdzLnNob3dDb250cmlidXRvcnMgIT09IGZhbHNlID8gJ2NoZWNrZWQnIDogJycpICsg
JyBvbmNoYW5nZT0iRHJpdmVHb3Zlcm5hbmNlLnNhdmVTZXR0aW5ncygpIj4gTWl0d2lya2VuZGUg
YW56ZWlnZW48L2xhYmVsPicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJnb3Ytc2V0dGlu
Zy1yb3ciIHRpdGxlPSJaZWlndCB1bnRlciBqZWRlbSBBcnRpa2VsIGRpZSBIaXN0b3JpZSBhbGxl
ciBGcmVpZ2FiZW4gdW5kIEFibGVobnVuZ2VuIGFuLiI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBp
ZD0iZ292U2hvd1Jldmlld0hpc3QiICcgKyAoZ292LnNldHRpbmdzLnNob3dSZXZpZXdIaXN0b3J5
ICE9PSBmYWxzZSA/ICdjaGVja2VkJyA6ICcnKSArICcgb25jaGFuZ2U9IkRyaXZlR292ZXJuYW5j
ZS5zYXZlU2V0dGluZ3MoKSI+IFByw7xmdW5nc3ZlcmxhdWYgYW56ZWlnZW48L2xhYmVsPicgKwog
ICAgICAgICAgICAnPGRpdiBjbGFzcz0iZ292LXNldHRpbmctcm93IiBzdHlsZT0iZGlzcGxheTpm
bGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6
OHB4OyIgdGl0bGU9IlBmbGljaHQgPSBKZWRlciBBcnRpa2VsIGJyYXVjaHQgbWluZGVzdGVucyBl
aW4gU2NobGFnd29ydC4gT3B0aW9uYWwgPSBTY2hsYWd3w7ZydGVyIHdlcmRlbiB2b3JnZXNjaGxh
Z2VuLCBzaW5kIGFiZXIgbmljaHQgbsO2dGlnLiBEZWFrdGl2aWVydCA9IEtlaW5lIFNjaGxhZ3fD
tnJ0ZXIuIj4nICsKICAgICAgICAgICAgICAgICc8bGFiZWwgZm9yPSJnb3ZLZXl3b3JkTW9kZSI+
U2NobGFnd8O2cnRlcjo8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxzZWxlY3QgaWQ9Imdv
dktleXdvcmRNb2RlIiBvbmNoYW5nZT0iRHJpdmVHb3Zlcm5hbmNlLnNhdmVTZXR0aW5ncygpIiBz
dHlsZT0icGFkZGluZzo0cHggOHB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQg
dmFyKC0tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIo
LS10ZXh0LXByaW1hcnkpO2ZvbnQtc2l6ZToxM3B4O21pbi13aWR0aDoxMzBweDsiPicgKwogICAg
ICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJyZXF1aXJlZCInICsgKChnb3Yuc2V0dGlu
Z3Mua2V5d29yZE1vZGUgfHwgJ3JlcXVpcmVkJykgPT09ICdyZXF1aXJlZCcgPyAnIHNlbGVjdGVk
JyA6ICcnKSArICc+UGZsaWNodDwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgICAgICc8b3B0
aW9uIHZhbHVlPSJvcHRpb25hbCInICsgKGdvdi5zZXR0aW5ncy5rZXl3b3JkTW9kZSA9PT0gJ29w
dGlvbmFsJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5PcHRpb25hbDwvb3B0aW9uPicgKwogICAg
ICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJkaXNhYmxlZCInICsgKGdvdi5zZXR0aW5n
cy5rZXl3b3JkTW9kZSA9PT0gJ2Rpc2FibGVkJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5EZWFr
dGl2aWVydDwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgJzwvc2VsZWN0PicgKwogICAgICAg
ICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnb3Ytc2V0dGluZy1yb3ci
IHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpz
cGFjZS1iZXR3ZWVuO2dhcDo4cHg7IiB0aXRsZT0iUGZsaWNodCA9IFJldmlld2VyIG3DvHNzZW4g
YmVpIEFibGVobnVuZyBpbW1lciBlaW5lIEJlZ3LDvG5kdW5nIHNjaHJlaWJlbi4gT3B0aW9uYWwg
PSBCZWdyw7xuZHVuZyB3aXJkIGVtcGZvaGxlbi4gTmVpbiA9IEtlaW5lIEJlZ3LDvG5kdW5nIG7D
tnRpZy4iPicgKwogICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9ImdvdlJlamVjdGlvbk1vZGUi
PkFibGVobnVuZ3NiZWdyw7xuZHVuZzo8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxzZWxl
Y3QgaWQ9ImdvdlJlamVjdGlvbk1vZGUiIG9uY2hhbmdlPSJEcml2ZUdvdmVybmFuY2Uuc2F2ZVNl
dHRpbmdzKCkiIHN0eWxlPSJwYWRkaW5nOjRweCA4cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVy
OjFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQp
O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Zm9udC1zaXplOjEzcHg7bWluLXdpZHRoOjEzMHB4
OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9InJlcXVpcmVkIicgKyAo
KGdvdi5zZXR0aW5ncy5yZWplY3Rpb25SZWFzb25Nb2RlIHx8ICdyZXF1aXJlZCcpID09PSAncmVx
dWlyZWQnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPlBmbGljaHQ8L29wdGlvbj4nICsKICAgICAg
ICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0ib3B0aW9uYWwiJyArIChnb3Yuc2V0dGluZ3Mu
cmVqZWN0aW9uUmVhc29uTW9kZSA9PT0gJ29wdGlvbmFsJyA/ICcgc2VsZWN0ZWQnIDogJycpICsg
Jz5PcHRpb25hbDwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVl
PSJkaXNhYmxlZCInICsgKGdvdi5zZXR0aW5ncy5yZWplY3Rpb25SZWFzb25Nb2RlID09PSAnZGlz
YWJsZWQnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPk5laW48L29wdGlvbj4nICsKICAgICAgICAg
ICAgICAgICc8L3NlbGVjdD4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAn
PGRpdiBjbGFzcz0iZ292LXNldHRpbmctcm93IiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0
ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4OyIgdGl0bGU9
Ildlbm4gYWt0aXZpZXJ0LCBlcmtlbm50IGRhcyBQb3J0YWwgYXV0b21hdGlzY2ggVmVyd2Vpc2Ug
YXVmIGFuZGVyZSBBcnRpa2VsIGltIFRleHQgdW5kIHplaWd0IGJlaSBNb3VzZW92ZXIgZWluZSBW
b3JzY2hhdSBhbi4iPicgKwogICAgICAgICAgICAgICAgJzxsYWJlbCBmb3I9ImdvdkNyb3NzbGlu
a01vZGUiPkNyb3NzbGlua2luZzo8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxzZWxlY3Qg
aWQ9ImdvdkNyb3NzbGlua01vZGUiIG9uY2hhbmdlPSJEcml2ZUdvdmVybmFuY2Uuc2F2ZVNldHRp
bmdzKCkiIHN0eWxlPSJwYWRkaW5nOjRweCA4cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFw
eCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctaW5wdXQpO2Nv
bG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Zm9udC1zaXplOjEzcHg7bWluLXdpZHRoOjEzMHB4OyI+
JyArCiAgICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImVuYWJsZWQiJyArICgoZ292
LnNldHRpbmdzLmNyb3NzbGlua01vZGUgfHwgJ2VuYWJsZWQnKSA9PT0gJ2VuYWJsZWQnID8gJyBz
ZWxlY3RlZCcgOiAnJykgKyAnPkFrdGl2aWVydDwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAg
ICAgICc8b3B0aW9uIHZhbHVlPSJkaXNhYmxlZCInICsgKGdvdi5zZXR0aW5ncy5jcm9zc2xpbmtN
b2RlID09PSAnZGlzYWJsZWQnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkRlYWt0aXZpZXJ0PC9v
cHRpb24+JyArCiAgICAgICAgICAgICAgICAnPC9zZWxlY3Q+JyArCiAgICAgICAgICAgICc8L2Rp
dj4nICsKICAgICAgICAnPC9kaXY+JzsgLy8gRW5kZSBFaW5zdGVsbHVuZ2VuLVNwYWx0ZQoKICAg
ICAgICBodG1sICs9ICc8L2Rpdj4nOyAvLyBFbmRlIGdvdi10d28tY29sCiAgICAgICAgaHRtbCAr
PSAnPC9kaXY+JzsgLy8gRW5kZSBnb3Ytc2VjdGlvbiAoS2F0ZWdvcmllbitFaW5zdGVsbHVuZ2Vu
KQoKICAgICAgICAvLyAtLS0gU2NobGFnd8O2cnRlciB2ZXJ3YWx0ZW4gLS0tCiAgICAgICAgaHRt
bCArPSAnPGRpdiBjbGFzcz0iZ292LXNlY3Rpb24iPicgKwogICAgICAgICAgICAnPGRpdiBjbGFz
cz0iZ292LXNlY3Rpb24tdGl0bGUiIHRpdGxlPSJTY2hsYWd3w7ZydGVyIGhlbGZlbiBiZWltIFN1
Y2hlbiB1bmQgRmlsdGVybiB2b24gQXJ0aWtlbG4uIEhpZXIga2FubnN0IGR1IGJlc3RlaGVuZGUg
U2NobGFnd8O2cnRlciB1bWJlbmVubmVuLCB6dXNhbW1lbmbDvGhyZW4gb2RlciBsw7ZzY2hlbi4i
PlNjaGxhZ3fDtnJ0ZXIgdmVyd2FsdGVuPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IHN0eWxl
PSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tYm90dG9tOjhw
eDsiPktsaWNrZSBhdWYgZWluIFNjaGxhZ3dvcnQsIHVtIGVzIHp1IGJlYXJiZWl0ZW4gb2RlciB6
dSBsw7ZzY2hlbi4gRGllIFphaGwgemVpZ3QsIGluIHdpZSB2aWVsZW4gQXJ0aWtlbG4gZXMgdmVy
d2VuZGV0IHdpcmQuPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnb3Yta3ctbGlz
dCIgaWQ9Imdvdkt3TGlzdCI+JzsKICAgICAgICB2YXIgYWxsS3cgPSBEcml2ZUVkaXRvci5fZ2V0
QWxsS25vd25LZXl3b3JkcygpOwogICAgICAgIGFsbEt3LmZvckVhY2goZnVuY3Rpb24oa3cpIHsK
ICAgICAgICAgICAgdmFyIGNvdW50ID0gRHJpdmVGUy5kb2N1bWVudHMuZmlsdGVyKGZ1bmN0aW9u
KGQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkLnNjaGxhZ3dvZXJ0ZXIgJiYgZC5zY2hsYWd3
b2VydGVyLmluY2x1ZGVzKGt3KTsKICAgICAgICAgICAgfSkubGVuZ3RoOwogICAgICAgICAgICBo
dG1sICs9ICc8c3BhbiBjbGFzcz0iZ292LWt3LXBpbGwiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5j
ZS5vcGVuS3dNYW5hZ2UoXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihrdykgKyAnXCcpIj4n
ICsKICAgICAgICAgICAgICAgIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoa3cpICsgJyA8c3BhbiBj
bGFzcz0ia3ctY291bnQiPignICsgY291bnQgKyAnKTwvc3Bhbj48L3NwYW4+JzsKICAgICAgICB9
KTsKICAgICAgICBodG1sICs9ICc8L2Rpdj48L2Rpdj4nOwoKICAgICAgICBib2R5LmlubmVySFRN
TCA9IGh0bWw7CiAgICB9LAoKICAgIGFzeW5jIGFkZFJldmlld2VyKCkgewogICAgICAgIGNvbnN0
IHVzZXJuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdkFkZFVzZXInKS52YWx1ZS50
cmltKCk7CiAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZ292QWRkTmFtZScpLnZhbHVlLnRyaW0oKSB8fCB1c2VybmFtZTsKICAgICAgICBjb25zdCBv
cmdhbmlzYXRpb25zZWluaGVpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZBZGRPRScp
LnZhbHVlLnRyaW0oKTsKICAgICAgICBjb25zdCBrYXRTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZ292QWRkS2F0Jyk7CiAgICAgICAgY29uc3Qga2F0ZWdvcmllbiA9IEFycmF5LmZy
b20oa2F0U2VsZWN0LnNlbGVjdGVkT3B0aW9ucykubWFwKG8gPT4gby52YWx1ZSk7CgogICAgICAg
IGlmICghdXNlcm5hbWUpIHsgc2hvd1RvYXN0KCdOVy1LZW5udW5nIGVyZm9yZGVybGljaCcsICd3
YXJuaW5nJyk7IHJldHVybjsgfQogICAgICAgIGlmIChrYXRlZ29yaWVuLmxlbmd0aCA9PT0gMCkg
eyBzaG93VG9hc3QoJ01pbmRlc3RlbnMgZWluZSBLYXRlZ29yaWUgd8OkaGxlbicsICd3YXJuaW5n
Jyk7IHJldHVybjsgfQoKICAgICAgICBpZiAoIXRoaXMuZGF0YSkgdGhpcy5kYXRhID0geyB2ZXJz
aW9uOiAnMS4wJywgc3VwZXJVc2VyczogW10sIHJldmlld2VyczogW10sIHNldHRpbmdzOiB7fSB9
OwogICAgICAgIGNvbnN0IHJldmlld2VyID0geyB1c2VybmFtZTogdXNlcm5hbWUsIGRvbWFpbjog
JyonLCBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUsIGthdGVnb3JpZW46IGthdGVnb3JpZW4gfTsK
ICAgICAgICBpZiAob3JnYW5pc2F0aW9uc2VpbmhlaXQpIHJldmlld2VyLm9yZ2FuaXNhdGlvbnNl
aW5oZWl0ID0gb3JnYW5pc2F0aW9uc2VpbmhlaXQ7CgogICAgICAgIGlmICh0aGlzLl9lZGl0aW5n
UmV2aWV3ZXJJbmRleCA+PSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVkaXRJZHggPSB0aGlzLl9l
ZGl0aW5nUmV2aWV3ZXJJbmRleDsKICAgICAgICAgICAgY29uc3QgYmFja3VwID0geyAuLi50aGlz
LmRhdGEucmV2aWV3ZXJzW2VkaXRJZHhdIH07CiAgICAgICAgICAgIHRoaXMuZGF0YS5yZXZpZXdl
cnNbZWRpdElkeF0gPSByZXZpZXdlcjsKICAgICAgICAgICAgdGhpcy5fZWRpdGluZ1Jldmlld2Vy
SW5kZXggPSAtMTsKICAgICAgICAgICAgY29uc3Qgb2sgPSBhd2FpdCB0aGlzLnNhdmVHb3Zlcm5h
bmNlKCk7CiAgICAgICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHRo
aXMuZGF0YS5yZXZpZXdlcnNbZWRpdElkeF0gPSBiYWNrdXA7CiAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5yZW5kZXJBZG1pbigpOwogICAgICAg
ICAgICBzaG93VG9hc3QoZGlzcGxheU5hbWUgKyAnIGFrdHVhbGlzaWVydCcsICdzdWNjZXNzJyk7
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5kYXRhLnJldmlld2Vycy5wdXNoKHJl
dmlld2VyKTsKICAgICAgICAgICAgY29uc3Qgb2sgPSBhd2FpdCB0aGlzLnNhdmVHb3Zlcm5hbmNl
KCk7CiAgICAgICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHRoaXMu
ZGF0YS5yZXZpZXdlcnMucG9wKCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgdGhpcy5yZW5kZXJBZG1pbigpOwogICAgICAgICAgICBzaG93VG9hc3Qo
ZGlzcGxheU5hbWUgKyAnIGFscyBSZXZpZXdlciBoaW56dWdlZsO8Z3QnLCAnc3VjY2VzcycpOwog
ICAgICAgIH0KICAgIH0sCgogICAgZWRpdFJldmlld2VyKGluZGV4KSB7CiAgICAgICAgaWYgKCF0
aGlzLmRhdGEgfHwgIXRoaXMuZGF0YS5yZXZpZXdlcnNbaW5kZXhdKSByZXR1cm47CiAgICAgICAg
dGhpcy5fZWRpdGluZ1Jldmlld2VySW5kZXggPSBpbmRleDsKICAgICAgICB0aGlzLnJlbmRlckFk
bWluKCk7CiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdn
b3ZBZGRTZWN0aW9uJyk7CiAgICAgICAgaWYgKHNlY3Rpb24pIHNlY3Rpb24uc2Nyb2xsSW50b1Zp
ZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7CiAgICB9LAoKICAgIGNhbmNlbEVkaXQoKSB7CiAg
ICAgICAgdGhpcy5fZWRpdGluZ1Jldmlld2VySW5kZXggPSAtMTsKICAgICAgICB0aGlzLnJlbmRl
ckFkbWluKCk7CiAgICB9LAoKICAgIGFzeW5jIHJlbW92ZVJldmlld2VyKGluZGV4KSB7CiAgICAg
ICAgaWYgKCF0aGlzLmRhdGEgfHwgIXRoaXMuZGF0YS5yZXZpZXdlcnNbaW5kZXhdKSByZXR1cm47
CiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZGF0YS5yZXZpZXdlcnNbaW5kZXhdLmRpc3BsYXlO
YW1lIHx8IHRoaXMuZGF0YS5yZXZpZXdlcnNbaW5kZXhdLnVzZXJuYW1lOwogICAgICAgIGlmICgh
Y29uZmlybSgnUmV2aWV3ZXIgIicgKyBuYW1lICsgJyIgZW50ZmVybmVuPycpKSByZXR1cm47CiAg
ICAgICAgY29uc3QgYmFja3VwID0gdGhpcy5kYXRhLnJldmlld2Vyc1tpbmRleF07CiAgICAgICAg
dGhpcy5kYXRhLnJldmlld2Vycy5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgIGNvbnN0IG9rID0g
YXdhaXQgdGhpcy5zYXZlR292ZXJuYW5jZSgpOwogICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsK
ICAgICAgICAgICAgdGhpcy5kYXRhLnJldmlld2Vycy5zcGxpY2UoaW5kZXgsIDAsIGJhY2t1cCk7
CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdGhpcy5yZW5kZXJBZG1pbigp
OwogICAgICAgIHNob3dUb2FzdChuYW1lICsgJyBlbnRmZXJudCcsICdzdWNjZXNzJyk7CiAgICB9
LAoKICAgIGFzeW5jIGFkZFN1cGVyVXNlcigpIHsKICAgICAgICB2YXIgdXNlcm5hbWUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZ292U1VVc2VyJykudmFsdWUudHJpbSgpOwogICAgICAgIGlm
ICghdXNlcm5hbWUpIHsgc2hvd1RvYXN0KCdOVy1LZW5udW5nIGVyZm9yZGVybGljaCcsICd3YXJu
aW5nJyk7IHJldHVybjsgfQogICAgICAgIHZhciBkaXNwbGF5TmFtZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdnb3ZTVU5hbWUnKS52YWx1ZS50cmltKCkgfHwgdXNlcm5hbWU7CiAgICAgICAg
dmFyIG9lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdlNVT0UnKS52YWx1ZS50cmltKCk7
CiAgICAgICAgaWYgKCF0aGlzLmRhdGEuc3VwZXJVc2VycykgdGhpcy5kYXRhLnN1cGVyVXNlcnMg
PSBbXTsKICAgICAgICB0aGlzLmRhdGEuc3VwZXJVc2Vycy5wdXNoKHsgdXNlcm5hbWU6IHVzZXJu
YW1lLCBkb21haW46ICcqJywgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLCBvcmdhbmlzYXRpb25z
ZWluaGVpdDogb2UgfSk7CiAgICAgICAgY29uc3Qgb2sgPSBhd2FpdCB0aGlzLnNhdmVHb3Zlcm5h
bmNlKCk7CiAgICAgICAgaWYgKG9rID09PSBmYWxzZSkgewogICAgICAgICAgICB0aGlzLmRhdGEu
c3VwZXJVc2Vycy5wb3AoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB0
aGlzLnJlbmRlckFkbWluKCk7CiAgICAgICAgc2hvd1RvYXN0KGRpc3BsYXlOYW1lICsgJyBhbHMg
U3VwZXJVc2VyIGhpbnp1Z2Vmw7xndCcsICdzdWNjZXNzJyk7CiAgICB9LAoKICAgIGFzeW5jIHJl
bW92ZVN1cGVyVXNlcihpbmRleCkgewogICAgICAgIGlmICh0aGlzLmRhdGEuc3VwZXJVc2Vycy5s
ZW5ndGggPD0gMSkgeyBzaG93VG9hc3QoJ01pbmRlc3RlbnMgZWluIFN1cGVyVXNlciBlcmZvcmRl
cmxpY2gnLCAnd2FybmluZycpOyByZXR1cm47IH0KICAgICAgICBpZiAoIWNvbmZpcm0oJ1N1cGVy
VXNlciB3aXJrbGljaCBlbnRmZXJuZW4/JykpIHJldHVybjsKICAgICAgICBjb25zdCBiYWNrdXAg
PSB0aGlzLmRhdGEuc3VwZXJVc2Vyc1tpbmRleF07CiAgICAgICAgdGhpcy5kYXRhLnN1cGVyVXNl
cnMuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICBjb25zdCBvayA9IGF3YWl0IHRoaXMuc2F2ZUdv
dmVybmFuY2UoKTsKICAgICAgICBpZiAob2sgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRoaXMu
ZGF0YS5zdXBlclVzZXJzLnNwbGljZShpbmRleCwgMCwgYmFja3VwKTsKICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgIH0KICAgICAgICB0aGlzLnJlbmRlckFkbWluKCk7CiAgICAgICAgc2hvd1Rv
YXN0KCdTdXBlclVzZXIgZW50ZmVybnQnLCAnc3VjY2VzcycpOwogICAgfSwKCiAgICBhc3luYyBh
ZGRGYWNoYXVmc2ljaHQoKSB7CiAgICAgICAgdmFyIHVzZXJuYW1lID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2dvdkZBVXNlcicpLnZhbHVlLnRyaW0oKTsKICAgICAgICBpZiAoIXVzZXJuYW1l
KSB7IHNob3dUb2FzdCgnTlctS2VubnVuZyBlcmZvcmRlcmxpY2gnLCAnd2FybmluZycpOyByZXR1
cm47IH0KICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Z292RkFOYW1lJykudmFsdWUudHJpbSgpIHx8IHVzZXJuYW1lOwogICAgICAgIHZhciBvZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZGQU9FJykudmFsdWUudHJpbSgpOwogICAgICAgIGlm
ICghdGhpcy5kYXRhLmZhY2hhdWZzaWNodCkgdGhpcy5kYXRhLmZhY2hhdWZzaWNodCA9IFtdOwog
ICAgICAgIHRoaXMuZGF0YS5mYWNoYXVmc2ljaHQucHVzaCh7IHVzZXJuYW1lOiB1c2VybmFtZSwg
ZG9tYWluOiAnKicsIGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZSwgb3JnYW5pc2F0aW9uc2Vpbmhl
aXQ6IG9lIH0pOwogICAgICAgIGNvbnN0IG9rID0gYXdhaXQgdGhpcy5zYXZlR292ZXJuYW5jZSgp
OwogICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhpcy5kYXRhLmZhY2hh
dWZzaWNodC5wb3AoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB0aGlz
LnJlbmRlckFkbWluKCk7CiAgICAgICAgc2hvd1RvYXN0KGRpc3BsYXlOYW1lICsgJyBhbHMgRmFj
aGF1ZnNpY2h0IGhpbnp1Z2Vmw7xndCcsICdzdWNjZXNzJyk7CiAgICB9LAoKICAgIGFzeW5jIHJl
bW92ZUZhY2hhdWZzaWNodChpbmRleCkgewogICAgICAgIGlmICghY29uZmlybSgnRmFjaGF1ZnNp
Y2h0IHdpcmtsaWNoIGVudGZlcm5lbj8nKSkgcmV0dXJuOwogICAgICAgIGNvbnN0IGJhY2t1cCA9
IHRoaXMuZGF0YS5mYWNoYXVmc2ljaHRbaW5kZXhdOwogICAgICAgIHRoaXMuZGF0YS5mYWNoYXVm
c2ljaHQuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICBjb25zdCBvayA9IGF3YWl0IHRoaXMuc2F2
ZUdvdmVybmFuY2UoKTsKICAgICAgICBpZiAob2sgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRo
aXMuZGF0YS5mYWNoYXVmc2ljaHQuc3BsaWNlKGluZGV4LCAwLCBiYWNrdXApOwogICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRoaXMucmVuZGVyQWRtaW4oKTsKICAgICAgICBz
aG93VG9hc3QoJ0ZhY2hhdWZzaWNodCBlbnRmZXJudCcsICdzdWNjZXNzJyk7CiAgICB9LAoKICAg
IGFzeW5jIGFkZENhdGVnb3J5KCkgewogICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdnb3ZOZXdDYXQnKTsKICAgICAgICB2YXIgbmFtZSA9IGlucHV0LnZhbHVlLnRy
aW0oKTsKICAgICAgICBpZiAoIW5hbWUpIHJldHVybjsKICAgICAgICBpZiAoRHJpdmVGUy5jb25m
aWcua2F0ZWdvcmllbi5pbmNsdWRlcyhuYW1lKSkgewogICAgICAgICAgICBzaG93VG9hc3QoJ0th
dGVnb3JpZSBleGlzdGllcnQgYmVyZWl0cycsICd3YXJuaW5nJyk7CiAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICB9CiAgICAgICAgRHJpdmVGUy5jb25maWcua2F0ZWdvcmllbi5wdXNoKG5hbWUp
OwogICAgICAgIERyaXZlRlMuc29ydEthdGVnb3JpZW4oKTsKCiAgICAgICAgLy8gMS4gQ29uZmln
IHNwZWljaGVybgogICAgICAgIGNvbnN0IG9rID0gYXdhaXQgdGhpcy5zYXZlQ29uZmlnKCk7CiAg
ICAgICAgaWYgKG9rID09PSBmYWxzZSkgewogICAgICAgICAgICB2YXIgcm1JZHggPSBEcml2ZUZT
LmNvbmZpZy5rYXRlZ29yaWVuLmluZGV4T2YobmFtZSk7CiAgICAgICAgICAgIGlmIChybUlkeCA+
PSAwKSBEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuLnNwbGljZShybUlkeCwgMSk7CiAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIDIuIE9yZG5lciBlcnN0ZWxsZW46IGRh
dGEvW0thdGVnb3JpZV0vCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKERyaXZlRlMubW9k
ZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IHsgX3Bs
YWNlaG9sZGVyOiB0cnVlIH07CiAgICAgICAgICAgICAgICBhd2FpdCBmZXRjaCgnL2FwaS93cml0
ZScsIHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzonYXBwbGljYXRp
b24vanNvbjsgY2hhcnNldD11dGYtOCd9LAogICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04u
c3RyaW5naWZ5KHsgcGF0aDogJ2RhdGEvJyArIG5hbWUgKyAnL19pbml0Lmpzb24nLCBkYXRhOiBw
bGFjZWhvbGRlciB9KSB9KTsKICAgICAgICAgICAgICAgIGF3YWl0IGZldGNoKCcvYXBpL2RlbGV0
ZScsIHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzonYXBwbGljYXRp
b24vanNvbjsgY2hhcnNldD11dGYtOCd9LAogICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04u
c3RyaW5naWZ5KHsgcGF0aDogJ2RhdGEvJyArIG5hbWUgKyAnL19pbml0Lmpzb24nIH0pIH0pOwog
ICAgICAgICAgICB9IGVsc2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVzeXN0ZW0nICYmIERy
aXZlRlMuX2RhdGFIYW5kbGUpIHsKICAgICAgICAgICAgICAgIGF3YWl0IERyaXZlRlMuX2RhdGFI
YW5kbGUuZ2V0RGlyZWN0b3J5SGFuZGxlKG5hbWUsIHsgY3JlYXRlOiB0cnVlIH0pOwogICAgICAg
ICAgICB9CiAgICAgICAgfSBjYXRjaChlKSB7IGNvbnNvbGUud2FybignT3JkbmVyLUVyc3RlbGx1
bmc6JywgZSk7IH0KCiAgICAgICAgLy8gMy4gVUkga29tcGxldHQgYWt0dWFsaXNpZXJlbgogICAg
ICAgIGlucHV0LnZhbHVlID0gJyc7CiAgICAgICAgRHJpdmVQb3J0YWwuc2V0dXBGaWx0ZXJzKCk7
CiAgICAgICAgRHJpdmVQb3J0YWwucmVuZGVyKCk7CiAgICAgICAgaWYgKHRoaXMudGFibGVWaWV3
QWN0aXZlKSBEcml2ZVBvcnRhbC5yZW5kZXJUYWJsZVZpZXcoKTsKICAgICAgICB0aGlzLnJlbmRl
ckFkbWluKCk7CiAgICAgICAgc2hvd1RvYXN0KCdLYXRlZ29yaWUgIicgKyBuYW1lICsgJyIgaGlu
enVnZWbDvGd0JywgJ3N1Y2Nlc3MnKTsKICAgIH0sCgogICAgYXN5bmMgcmVtb3ZlQ2F0ZWdvcnko
aW5kZXgpIHsKICAgICAgICB2YXIga2F0ID0gRHJpdmVGUy5jb25maWcua2F0ZWdvcmllbltpbmRl
eF07CiAgICAgICAgdmFyIGRvY0NvdW50ID0gRHJpdmVGUy5kb2N1bWVudHMuZmlsdGVyKGZ1bmN0
aW9uKGQpeyByZXR1cm4gZC5rYXRlZ29yaWUgPT09IGthdDsgfSkubGVuZ3RoOwogICAgICAgIGlm
IChkb2NDb3VudCA+IDApIHsKICAgICAgICAgICAgaWYgKCFjb25maXJtKCdEaWUgS2F0ZWdvcmll
ICInICsga2F0ICsgJyIgZW50aMOkbHQgJyArIGRvY0NvdW50ICsgJyBEb2t1bWVudChlKS5cbldp
cmtsaWNoIGVudGZlcm5lbj8gRGllIERva3VtZW50ZSBiZWhhbHRlbiBpaHJlIEthdGVnb3JpZS4n
KSkgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuLnNw
bGljZShpbmRleCwgMSk7CiAgICAgICAgY29uc3Qgb2sgPSBhd2FpdCB0aGlzLnNhdmVDb25maWco
KTsKICAgICAgICBpZiAob2sgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIERyaXZlRlMuY29uZmln
LmthdGVnb3JpZW4uc3BsaWNlKGluZGV4LCAwLCBrYXQpOwogICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgfQogICAgICAgIERyaXZlUG9ydGFsLnNldHVwRmlsdGVycygpOwogICAgICAgIERyaXZl
UG9ydGFsLnJlbmRlcigpOwogICAgICAgIGlmIChEcml2ZVBvcnRhbC50YWJsZVZpZXdBY3RpdmUp
IERyaXZlUG9ydGFsLnJlbmRlclRhYmxlVmlldygpOwogICAgICAgIHRoaXMucmVuZGVyQWRtaW4o
KTsKICAgICAgICBzaG93VG9hc3QoJ0thdGVnb3JpZSAiJyArIGthdCArICciIGVudGZlcm50Jywg
J3N1Y2Nlc3MnKTsKICAgIH0sCgogICAgYXN5bmMgaGlkZUNhdGVnb3J5KGluZGV4KSB7CiAgICAg
ICAgdmFyIGthdCA9IERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW5baW5kZXhdOwogICAgICAgIGlm
ICghRHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdvcmllbikgRHJpdmVGUy5jb25maWcuaGlkZGVu
S2F0ZWdvcmllbiA9IFtdOwogICAgICAgIGlmICghRHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdv
cmllbi5pbmNsdWRlcyhrYXQpKSB7CiAgICAgICAgICAgIERyaXZlRlMuY29uZmlnLmhpZGRlbkth
dGVnb3JpZW4ucHVzaChrYXQpOwogICAgICAgIH0KICAgICAgICBjb25zdCBvayA9IGF3YWl0IHRo
aXMuc2F2ZUNvbmZpZygpOwogICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAgICAgICAgICAg
RHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdvcmllbiA9IERyaXZlRlMuY29uZmlnLmhpZGRlbkth
dGVnb3JpZW4uZmlsdGVyKGZ1bmN0aW9uKGspeyByZXR1cm4gayAhPT0ga2F0OyB9KTsKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBEcml2ZVBvcnRhbC5zZXR1cEZpbHRlcnMo
KTsKICAgICAgICBEcml2ZVBvcnRhbC5yZW5kZXIoKTsKICAgICAgICBpZiAoRHJpdmVQb3J0YWwu
dGFibGVWaWV3QWN0aXZlKSBEcml2ZVBvcnRhbC5yZW5kZXJUYWJsZVZpZXcoKTsKICAgICAgICB0
aGlzLnJlbmRlckFkbWluKCk7CiAgICAgICAgc2hvd1RvYXN0KCdLYXRlZ29yaWUgIicgKyBrYXQg
KyAnIiBhdXNnZWJsZW5kZXQnLCAnc3VjY2VzcycpOwogICAgfSwKCiAgICBhc3luYyBzaG93Q2F0
ZWdvcnkoaW5kZXgpIHsKICAgICAgICB2YXIga2F0ID0gRHJpdmVGUy5jb25maWcua2F0ZWdvcmll
bltpbmRleF07CiAgICAgICAgaWYgKCFEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRlZ29yaWVuKSBy
ZXR1cm47CiAgICAgICAgRHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdvcmllbiA9IERyaXZlRlMu
Y29uZmlnLmhpZGRlbkthdGVnb3JpZW4uZmlsdGVyKGZ1bmN0aW9uKGspeyByZXR1cm4gayAhPT0g
a2F0OyB9KTsKICAgICAgICBjb25zdCBvayA9IGF3YWl0IHRoaXMuc2F2ZUNvbmZpZygpOwogICAg
ICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgRHJpdmVGUy5jb25maWcuaGlkZGVu
S2F0ZWdvcmllbi5wdXNoKGthdCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAg
ICAgRHJpdmVQb3J0YWwuc2V0dXBGaWx0ZXJzKCk7CiAgICAgICAgRHJpdmVQb3J0YWwucmVuZGVy
KCk7CiAgICAgICAgaWYgKERyaXZlUG9ydGFsLnRhYmxlVmlld0FjdGl2ZSkgRHJpdmVQb3J0YWwu
cmVuZGVyVGFibGVWaWV3KCk7CiAgICAgICAgdGhpcy5yZW5kZXJBZG1pbigpOwogICAgICAgIHNo
b3dUb2FzdCgnS2F0ZWdvcmllICInICsga2F0ICsgJyIgd2llZGVyIGVpbmdlYmxlbmRldCcsICdz
dWNjZXNzJyk7CiAgICB9LAoKICAgIGFzeW5jIGVkaXRTdGFydHNlaXRlKCkgewogICAgICAgIHRo
aXMuY2xvc2VBZG1pbigpOwogICAgICAgIC8vIEFrdHVlbGxlbiBTdGFydHNlaXRlbi1JbmhhbHQg
bGFkZW4KICAgICAgICB2YXIgd2VsY29tZUVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndl
bGNvbWUtY29udGVudCcpOwogICAgICAgIHZhciBjb250ZW50ID0gd2VsY29tZUVsID8gd2VsY29t
ZUVsLmlubmVySFRNTCA6ICcnOwoKICAgICAgICAvLyBHZXNwZWljaGVydGVuIEluaGFsdCBhdXMg
RGF0ZWkgbGFkZW4gKGZhbGxzIHZvcmhhbmRlbikKICAgICAgICB0cnkgewogICAgICAgICAgICBp
ZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgdmFyIHJlcyA9
IGF3YWl0IGZldGNoKCcvZGF0YS8uc3RhcnRzZWl0ZS5odG1sJyk7CiAgICAgICAgICAgICAgICBp
ZiAocmVzLm9rKSBjb250ZW50ID0gYXdhaXQgcmVzLnRleHQoKTsKICAgICAgICAgICAgfSBlbHNl
IGlmIChEcml2ZUZTLm1vZGUgPT09ICdzdGF0aWMnKSB7CiAgICAgICAgICAgICAgICB2YXIgcmVz
MiA9IGF3YWl0IGZldGNoKCdkYXRhLy5zdGFydHNlaXRlLmh0bWwnKTsKICAgICAgICAgICAgICAg
IGlmIChyZXMyLm9rKSBjb250ZW50ID0gYXdhaXQgcmVzMi50ZXh0KCk7CiAgICAgICAgICAgIH0g
ZWxzZSBpZiAoRHJpdmVGUy5tb2RlID09PSAnZmlsZXN5c3RlbScgJiYgRHJpdmVGUy5fZGF0YUhh
bmRsZSkgewogICAgICAgICAgICAgICAgdmFyIGZoID0gYXdhaXQgRHJpdmVGUy5fZGF0YUhhbmRs
ZS5nZXRGaWxlSGFuZGxlKCcuc3RhcnRzZWl0ZS5odG1sJyk7CiAgICAgICAgICAgICAgICB2YXIg
ZmlsZSA9IGF3YWl0IGZoLmdldEZpbGUoKTsKICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBhd2Fp
dCBmaWxlLnRleHQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2goZSkge30KCiAgICAg
ICAgLy8gRWRpdG9yIG9lZmZuZW4gbWl0IFN0YXJ0c2VpdGVuLUluaGFsdAogICAgICAgIERyaXZl
RWRpdG9yLmlzTmV3ID0gZmFsc2U7CiAgICAgICAgRHJpdmVFZGl0b3IuX2lzU3RhcnRzZWl0ZSA9
IHRydWU7CiAgICAgICAgRHJpdmVFZGl0b3IuY3VycmVudERvYyA9IHsKICAgICAgICAgICAgaWQ6
ICdfc3RhcnRzZWl0ZScsCiAgICAgICAgICAgIHRpdGVsOiAnU3RhcnRzZWl0ZScsCiAgICAgICAg
ICAgIGthdGVnb3JpZTogJycsCiAgICAgICAgICAgIGluaGFsdDogY29udGVudCwKICAgICAgICAg
ICAgc3RhdHVzOiAnJywKICAgICAgICAgICAgbWVkaWFzOiBbXQogICAgICAgIH07CiAgICAgICAg
RHJpdmVFZGl0b3Iub3Blbk1vZGFsKCdTdGFydHNlaXRlIGJlYXJiZWl0ZW4nKTsKICAgICAgICAv
LyBLYXRlZ29yaWUvU3RhdHVzL01ldGEtRmVsZGVyIGF1c2JsZW5kZW4gKG5pY2h0IHJlbGV2YW50
IGZ1ZXIgU3RhcnRzZWl0ZSkKICAgICAgICB2YXIgbWV0YVJvd3MgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcuZWRpdG9yLW1ldGEtcm93Jyk7CiAgICAgICAgbWV0YVJvd3MuZm9yRWFjaChm
dW5jdGlvbihyb3cpIHsgcm93LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7IH0pOwogICAgfSwKCiAg
ICBhc3luYyBzYXZlU3RhcnRzZWl0ZShjb250ZW50KSB7CiAgICAgICAgaWYgKERyaXZlRlMubW9k
ZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgYXdhaXQgZmV0Y2goJy9hcGkvd3JpdGUnLCB7
IG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pz
b247IGNoYXJzZXQ9dXRmLTgnfSwKICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5
KHsgcGF0aDogJ2RhdGEvLnN0YXJ0c2VpdGUuaHRtbCcsIGRhdGE6IGNvbnRlbnQgfSkgfSk7CiAg
ICAgICAgfSBlbHNlIGlmIChEcml2ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAmJiBEcml2ZUZT
Ll9kYXRhSGFuZGxlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2YXIgZmgg
PSBhd2FpdCBEcml2ZUZTLl9kYXRhSGFuZGxlLmdldEZpbGVIYW5kbGUoJy5zdGFydHNlaXRlLmh0
bWwnLCB7IGNyZWF0ZTogdHJ1ZSB9KTsKICAgICAgICAgICAgICAgIHZhciB3cml0YWJsZSA9IGF3
YWl0IGZoLmNyZWF0ZVdyaXRhYmxlKCk7CiAgICAgICAgICAgICAgICBhd2FpdCB3cml0YWJsZS53
cml0ZShjb250ZW50KTsKICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLmNsb3NlKCk7CiAg
ICAgICAgICAgIH0gY2F0Y2goZSkge30KICAgICAgICB9CiAgICAgICAgLy8gU3RhcnRzZWl0ZSBp
bSBET00gYWt0dWFsaXNpZXJlbiArIENhY2hlIGZ1ZXIgc2hvd0hvbWUoKSBlcm5ldWVybgogICAg
ICAgIHZhciB3ZWxjb21lRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcud2VsY29tZS1jb250
ZW50Jyk7CiAgICAgICAgaWYgKHdlbGNvbWVFbCkgewogICAgICAgICAgICB3ZWxjb21lRWwuaW5u
ZXJIVE1MID0gdGhpcy5fc2FuaXRpemVIVE1MKGNvbnRlbnQpOwogICAgICAgICAgICBEcml2ZVBv
cnRhbC5fd2VsY29tZUhUTUwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jdW1lbnREZXRh
aWwnKS5pbm5lckhUTUw7CiAgICAgICAgfQogICAgICAgIHNob3dUb2FzdCgnU3RhcnRzZWl0ZSBn
ZXNwZWljaGVydCcsICdzdWNjZXNzJyk7CiAgICAgICAgLy8gaW5kZXguanMgZnVlciBMZXNlbW9k
dXMgYWt0dWFsaXNpZXJlbiAoU3RhcnRzZWl0ZSBpc3QgZGFyaW4gZWluZ2ViZXR0ZXQpCiAgICAg
ICAgYXdhaXQgRHJpdmVGUy51cGRhdGVJbmRleCgpOwogICAgfSwKCiAgICBhc3luYyBsb2FkU3Rh
cnRzZWl0ZSgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICB2YXIgcmF3ID0gbnVsbDsKICAg
ICAgICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgICAg
IHZhciByZXMgPSBhd2FpdCBmZXRjaCgnL2RhdGEvLnN0YXJ0c2VpdGUuaHRtbCcpOwogICAgICAg
ICAgICAgICAgaWYgKHJlcy5vaykgcmF3ID0gYXdhaXQgcmVzLnRleHQoKTsKICAgICAgICAgICAg
fSBlbHNlIGlmIChEcml2ZUZTLm1vZGUgPT09ICdzdGF0aWMnKSB7CiAgICAgICAgICAgICAgICB2
YXIgcmVzMiA9IGF3YWl0IGZldGNoKCdkYXRhLy5zdGFydHNlaXRlLmh0bWwnKTsKICAgICAgICAg
ICAgICAgIGlmIChyZXMyLm9rKSByYXcgPSBhd2FpdCByZXMyLnRleHQoKTsKICAgICAgICAgICAg
fSBlbHNlIGlmIChEcml2ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAmJiBEcml2ZUZTLl9kYXRh
SGFuZGxlKSB7CiAgICAgICAgICAgICAgICB2YXIgZmggPSBhd2FpdCBEcml2ZUZTLl9kYXRhSGFu
ZGxlLmdldEZpbGVIYW5kbGUoJy5zdGFydHNlaXRlLmh0bWwnKTsKICAgICAgICAgICAgICAgIHZh
ciBmaWxlID0gYXdhaXQgZmguZ2V0RmlsZSgpOwogICAgICAgICAgICAgICAgcmF3ID0gYXdhaXQg
ZmlsZS50ZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHJhdyAmJiByYXcubGVu
Z3RoID4gMTApIHsKICAgICAgICAgICAgICAgIHZhciB3ZWxjb21lRWwgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCcud2VsY29tZS1jb250ZW50Jyk7CiAgICAgICAgICAgICAgICBpZiAod2VsY29t
ZUVsKSB7CiAgICAgICAgICAgICAgICAgICAgd2VsY29tZUVsLmlubmVySFRNTCA9IHRoaXMuX3Nh
bml0aXplSFRNTChyYXcpOwogICAgICAgICAgICAgICAgICAgIC8vIENhY2hlIGFrdHVhbGlzaWVy
ZW4sIGRhbWl0IHNob3dIb21lKCkgZGVuIGdlc3BlaWNoZXJ0ZW4gSW5oYWx0IHplaWd0CiAgICAg
ICAgICAgICAgICAgICAgRHJpdmVQb3J0YWwuX3dlbGNvbWVIVE1MID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2RvY3VtZW50RGV0YWlsJykuaW5uZXJIVE1MOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChlKSB7fQogICAgfSwKCiAgICBhc3luYyBzYXZl
SGVscENvbnRlbnQoKSB7CiAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaGVscEJvZHknKS5pbm5lckhUTUw7CiAgICAgICAgLy8gUGVyc2lzdGllcmVuIGFscyBk
YXRhLy5oZWxwLWNvbnRlbnQuaHRtbAogICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2
ZXInKSB7CiAgICAgICAgICAgIGF3YWl0IGZldGNoKCcvYXBpL3dyaXRlJywgeyBtZXRob2Q6ICdQ
T1NUJywgaGVhZGVyczogeydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0
PXV0Zi04J30sCiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBhdGg6ICdk
YXRhLy5oZWxwLWNvbnRlbnQuaHRtbCcsIGRhdGE6IGNvbnRlbnQgfSkgfSk7CiAgICAgICAgfSBl
bHNlIGlmIChEcml2ZUZTLm1vZGUgPT09ICdmaWxlc3lzdGVtJyAmJiBEcml2ZUZTLl9kYXRhSGFu
ZGxlKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2YXIgZmggPSBhd2FpdCBE
cml2ZUZTLl9kYXRhSGFuZGxlLmdldEZpbGVIYW5kbGUoJy5oZWxwLWNvbnRlbnQuaHRtbCcsIHsg
Y3JlYXRlOiB0cnVlIH0pOwogICAgICAgICAgICAgICAgdmFyIHdyaXRhYmxlID0gYXdhaXQgZmgu
Y3JlYXRlV3JpdGFibGUoKTsKICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLndyaXRlKGNv
bnRlbnQpOwogICAgICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUuY2xvc2UoKTsKICAgICAgICAg
ICAgfSBjYXRjaChlKSB7fQogICAgICAgIH0KICAgICAgICBzaG93VG9hc3QoJ0hpbGZlLUluaGFs
dCBnZXNwZWljaGVydCcsICdzdWNjZXNzJyk7CiAgICB9LAoKICAgIF9zYW5pdGl6ZUhUTUwoaHRt
bCkgewogICAgICAgIC8vIFNjcmlwdC1UYWdzLCBFdmVudC1IYW5kbGVyIHVuZCBnZWbDpGhybGlj
aGUgQXR0cmlidXRlIGVudGZlcm5lbgogICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKICAgICAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICBkaXYu
cXVlcnlTZWxlY3RvckFsbCgnc2NyaXB0LGlmcmFtZSxvYmplY3QsZW1iZWQsZm9ybScpLmZvckVh
Y2goZnVuY3Rpb24oZWwpeyBlbC5yZW1vdmUoKTsgfSk7CiAgICAgICAgZGl2LnF1ZXJ5U2VsZWN0
b3JBbGwoJyonKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgICAgIEFycmF5LmZyb20o
ZWwuYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbihhdHRyKSB7CiAgICAgICAgICAgICAgICBp
ZiAoYXR0ci5uYW1lLnN0YXJ0c1dpdGgoJ29uJykgfHwgYXR0ci52YWx1ZS50cmltKCkudG9Mb3dl
ckNhc2UoKS5zdGFydHNXaXRoKCdqYXZhc2NyaXB0OicpKSB7CiAgICAgICAgICAgICAgICAgICAg
ZWwucmVtb3ZlQXR0cmlidXRlKGF0dHIubmFtZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MOwogICAgfSwK
CiAgICBhc3luYyBsb2FkSGVscENvbnRlbnQoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAg
dmFyIHJhdyA9IG51bGw7CiAgICAgICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXIn
KSB7CiAgICAgICAgICAgICAgICB2YXIgcmVzID0gYXdhaXQgZmV0Y2goJy9kYXRhLy5oZWxwLWNv
bnRlbnQuaHRtbCcpOwogICAgICAgICAgICAgICAgaWYgKHJlcy5vaykgcmF3ID0gYXdhaXQgcmVz
LnRleHQoKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChEcml2ZUZTLm1vZGUgPT09ICdzdGF0aWMn
KSB7CiAgICAgICAgICAgICAgICB2YXIgcmVzMiA9IGF3YWl0IGZldGNoKCdkYXRhLy5oZWxwLWNv
bnRlbnQuaHRtbCcpOwogICAgICAgICAgICAgICAgaWYgKHJlczIub2spIHJhdyA9IGF3YWl0IHJl
czIudGV4dCgpOwogICAgICAgICAgICB9IGVsc2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVz
eXN0ZW0nICYmIERyaXZlRlMuX2RhdGFIYW5kbGUpIHsKICAgICAgICAgICAgICAgIHZhciBmaCA9
IGF3YWl0IERyaXZlRlMuX2RhdGFIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnLmhlbHAtY29udGVudC5o
dG1sJyk7CiAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IGF3YWl0IGZoLmdldEZpbGUoKTsKICAg
ICAgICAgICAgICAgIHJhdyA9IGF3YWl0IGZpbGUudGV4dCgpOwogICAgICAgICAgICB9CiAgICAg
ICAgICAgIGlmIChyYXcgJiYgcmF3Lmxlbmd0aCA+IDEwKSB7CiAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscEJvZHknKS5pbm5lckhUTUwgPSB0aGlzLl9zYW5pdGl6
ZUhUTUwocmF3KTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2goZSkge30KICAgIH0sCgog
ICAgYXN5bmMgc2F2ZUNvbmZpZygpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoRHJp
dmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAgICAgY29uc3QgcmVzID0gYXdh
aXQgZmV0Y2goJy9hcGkvd3JpdGUnLCB7CiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9T
VCcsCiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxp
Y2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnIH0sCiAgICAgICAgICAgICAgICAgICAgYm9keTog
SlNPTi5zdHJpbmdpZnkoeyBwYXRoOiAnZGF0YS9jb25maWcuanNvbicsIGRhdGE6IERyaXZlRlMu
Y29uZmlnIH0pCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGNvbnN0IHJlc3Vs
dCA9IGF3YWl0IHJlcy5qc29uKCk7CiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5vaykgewog
ICAgICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnS29uZmlndXJhdGlvbiBzcGVpY2hlcm4gZmVo
bGdlc2NobGFnZW46ICcgKyAocmVzdWx0LmVycm9yIHx8ICdVbmJla2FubnRlciBGZWhsZXInKSwg
J2Vycm9yJywgNTAwMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVz
eXN0ZW0nICYmIERyaXZlRlMuX2RhdGFIYW5kbGUpIHsKICAgICAgICAgICAgICAgIHZhciBmaCA9
IGF3YWl0IERyaXZlRlMuX2RhdGFIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnY29uZmlnLmpzb24nLCB7
IGNyZWF0ZTogdHJ1ZSB9KTsKICAgICAgICAgICAgICAgIHZhciB3cml0YWJsZSA9IGF3YWl0IGZo
LmNyZWF0ZVdyaXRhYmxlKCk7CiAgICAgICAgICAgICAgICBhd2FpdCB3cml0YWJsZS53cml0ZShK
U09OLnN0cmluZ2lmeShEcml2ZUZTLmNvbmZpZywgbnVsbCwgMikpOwogICAgICAgICAgICAgICAg
YXdhaXQgd3JpdGFibGUuY2xvc2UoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgc2hvd1RvYXN0KCdLb25m
aWd1cmF0aW9uIHNwZWljaGVybiBmZWhsZ2VzY2hsYWdlbjogJyArIGVyci5tZXNzYWdlLCAnZXJy
b3InLCA1MDAwKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0sCgog
ICAgX2VuZ2FnZW1lbnRTb3J0OiAndG90YWwnLAogICAgX2VuZ2FnZW1lbnRDYXQ6ICdhbGwnLAoK
ICAgIHNob3dFbmdhZ2VtZW50U3RhdHMoc29ydEJ5LCBmaWx0ZXJDYXQpIHsKICAgICAgICB0aGlz
LmNsb3NlQWRtaW4oKTsKICAgICAgICBpZiAoc29ydEJ5KSB0aGlzLl9lbmdhZ2VtZW50U29ydCA9
IHNvcnRCeTsKICAgICAgICBpZiAoZmlsdGVyQ2F0ICE9PSB1bmRlZmluZWQpIHRoaXMuX2VuZ2Fn
ZW1lbnRDYXQgPSBmaWx0ZXJDYXQ7CiAgICAgICAgdmFyIHNvcnQgPSB0aGlzLl9lbmdhZ2VtZW50
U29ydDsKICAgICAgICB2YXIgY2F0RmlsdGVyID0gdGhpcy5fZW5nYWdlbWVudENhdDsKICAgICAg
ICB2YXIgZG9jcyA9IERyaXZlRlMuZG9jdW1lbnRzOwogICAgICAgIHZhciBrYXRlZ29yaWVuID0g
RHJpdmVGUy5jb25maWcua2F0ZWdvcmllbiB8fCBbXTsKICAgICAgICB2YXIgdG90YWxEb2NzID0g
ZG9jcy5sZW5ndGg7CiAgICAgICAgdmFyIHRvdGFsRnJlaWdlZ2ViZW4gPSBkb2NzLmZpbHRlcihm
dW5jdGlvbihkKXsgcmV0dXJuIGQuc3RhdHVzID09PSAnRnJlaWdlZ2ViZW4nOyB9KS5sZW5ndGg7
CiAgICAgICAgdmFyIHRvdGFsUHJ1ZWZ1bmcgPSBkb2NzLmZpbHRlcihmdW5jdGlvbihkKXsgcmV0
dXJuIGQuc3RhdHVzID09PSAnUHLDvGZ1bmcnOyB9KS5sZW5ndGg7CiAgICAgICAgdmFyIHRvdGFs
RW50d3VyZiA9IGRvY3MuZmlsdGVyKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5zdGF0dXMgPT09ICdF
bnR3dXJmJzsgfSkubGVuZ3RoOwogICAgICAgIHZhciB0b3RhbFdpdGhNZWRpYSA9IGRvY3MuZmls
dGVyKGZ1bmN0aW9uKGQpeyByZXR1cm4gZC5tZWRpYXMgJiYgZC5tZWRpYXMubGVuZ3RoID4gMDsg
fSkubGVuZ3RoOwoKICAgICAgICAvLyBVc2VyLUJlaXRyw6RnZSB6w6RobGVuIOKAkyBhdWZnZXNj
aGzDvHNzZWx0IG5hY2ggS2F0ZWdvcmllCiAgICAgICAgdmFyIHVzZXJTdGF0cyA9IHt9OwogICAg
ICAgIGRvY3MuZm9yRWFjaChmdW5jdGlvbihkb2MpIHsKICAgICAgICAgICAgdmFyIGthdCA9IGRv
Yy5rYXRlZ29yaWUgfHwgJ1NvbnN0aWdlJzsKICAgICAgICAgICAgZnVuY3Rpb24gZW5zdXJlKG5h
bWUpIHsKICAgICAgICAgICAgICAgIGlmICghdXNlclN0YXRzW25hbWVdKSB1c2VyU3RhdHNbbmFt
ZV0gPSB7IGNyZWF0ZWQ6IDAsIGVkaXRlZDogMCwgcmV2aWV3czogMCwga2F0ZWdvcmllbjoge30g
fTsKICAgICAgICAgICAgICAgIGlmICghdXNlclN0YXRzW25hbWVdLmthdGVnb3JpZW5ba2F0XSkg
dXNlclN0YXRzW25hbWVdLmthdGVnb3JpZW5ba2F0XSA9IHsgY3JlYXRlZDogMCwgZWRpdGVkOiAw
LCByZXZpZXdzOiAwIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGRvYy5lcnN0ZWxs
dFZvbikgewogICAgICAgICAgICAgICAgZW5zdXJlKGRvYy5lcnN0ZWxsdFZvbik7CiAgICAgICAg
ICAgICAgICB1c2VyU3RhdHNbZG9jLmVyc3RlbGx0Vm9uXS5jcmVhdGVkKys7CiAgICAgICAgICAg
ICAgICB1c2VyU3RhdHNbZG9jLmVyc3RlbGx0Vm9uXS5rYXRlZ29yaWVuW2thdF0uY3JlYXRlZCsr
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkb2MuYmVhcmJlaXRldFZvbiAmJiBkb2Mu
YmVhcmJlaXRldFZvbiAhPT0gZG9jLmVyc3RlbGx0Vm9uKSB7CiAgICAgICAgICAgICAgICBlbnN1
cmUoZG9jLmJlYXJiZWl0ZXRWb24pOwogICAgICAgICAgICAgICAgdXNlclN0YXRzW2RvYy5iZWFy
YmVpdGV0Vm9uXS5lZGl0ZWQrKzsKICAgICAgICAgICAgICAgIHVzZXJTdGF0c1tkb2MuYmVhcmJl
aXRldFZvbl0ua2F0ZWdvcmllbltrYXRdLmVkaXRlZCsrOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIChkb2MuY29udHJpYnV0b3JzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAg
ICAgICAgICAgIGVuc3VyZShjLnVzZXJuYW1lKTsKICAgICAgICAgICAgICAgIGlmIChjLnJvbGUg
PT09ICdyZXZpZXcnKSB7CiAgICAgICAgICAgICAgICAgICAgdXNlclN0YXRzW2MudXNlcm5hbWVd
LnJldmlld3MgKz0gKGMuZW50cmllcyB8fCAxKTsKICAgICAgICAgICAgICAgICAgICB1c2VyU3Rh
dHNbYy51c2VybmFtZV0ua2F0ZWdvcmllbltrYXRdLnJldmlld3MgKz0gKGMuZW50cmllcyB8fCAx
KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYy5yb2xlID09PSAnYXV0b3InKSB7CiAgICAg
ICAgICAgICAgICAgICAgdXNlclN0YXRzW2MudXNlcm5hbWVdLmNyZWF0ZWQgKz0gKGMuZW50cmll
cyB8fCAxKSAtIDE7IC8vIC0xIHdlaWwgZXJzdGVsbHRWb24gc2Nob24gesOkaGx0CiAgICAgICAg
ICAgICAgICAgICAgdXNlclN0YXRzW2MudXNlcm5hbWVdLmthdGVnb3JpZW5ba2F0XS5jcmVhdGVk
ICs9IChjLmVudHJpZXMgfHwgMSkgLSAxOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjLnJv
bGUgPT09ICdyZWRha3Rpb24nKSB7CiAgICAgICAgICAgICAgICAgICAgdXNlclN0YXRzW2MudXNl
cm5hbWVdLmVkaXRlZCArPSAoYy5lbnRyaWVzIHx8IDEpOwogICAgICAgICAgICAgICAgICAgIHVz
ZXJTdGF0c1tjLnVzZXJuYW1lXS5rYXRlZ29yaWVuW2thdF0uZWRpdGVkICs9IChjLmVudHJpZXMg
fHwgMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIg
Z292ID0gZG9jLmdvdmVybmFuY2UgfHwge307CiAgICAgICAgICAgIChnb3YucmV2aWV3SGlzdG9y
eSB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICBpZiAoci5yZXZp
ZXdlcikgewogICAgICAgICAgICAgICAgICAgIGVuc3VyZShyLnJldmlld2VyKTsKICAgICAgICAg
ICAgICAgICAgICB1c2VyU3RhdHNbci5yZXZpZXdlcl0ucmV2aWV3cysrOwogICAgICAgICAgICAg
ICAgICAgIHVzZXJTdGF0c1tyLnJldmlld2VyXS5rYXRlZ29yaWVuW2thdF0ucmV2aWV3cysrOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKCiAgICAgICAgLy8g
U29ydGllcnVuZwogICAgICAgIHZhciBzb3J0ZWRVc2VycyA9IE9iamVjdC5lbnRyaWVzKHVzZXJT
dGF0cyk7CiAgICAgICAgdmFyIGdldFZhbCA9IGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgdmFy
IGQgPSBzWzFdOwogICAgICAgICAgICBpZiAoY2F0RmlsdGVyICE9PSAnYWxsJykgZCA9IGQua2F0
ZWdvcmllbltjYXRGaWx0ZXJdIHx8IHsgY3JlYXRlZDowLCBlZGl0ZWQ6MCwgcmV2aWV3czowIH07
CiAgICAgICAgICAgIGlmIChzb3J0ID09PSAnY3JlYXRlZCcpIHJldHVybiBkLmNyZWF0ZWQ7CiAg
ICAgICAgICAgIGlmIChzb3J0ID09PSAnZWRpdGVkJykgcmV0dXJuIGQuZWRpdGVkOwogICAgICAg
ICAgICBpZiAoc29ydCA9PT0gJ3Jldmlld3MnKSByZXR1cm4gZC5yZXZpZXdzOwogICAgICAgICAg
ICByZXR1cm4gZC5jcmVhdGVkICsgZC5lZGl0ZWQgKyBkLnJldmlld3M7CiAgICAgICAgfTsKICAg
ICAgICBzb3J0ZWRVc2Vycy5zb3J0KGZ1bmN0aW9uKGEsYil7IHJldHVybiBnZXRWYWwoYikgLSBn
ZXRWYWwoYSk7IH0pOwogICAgICAgIHNvcnRlZFVzZXJzID0gc29ydGVkVXNlcnMuZmlsdGVyKGZ1
bmN0aW9uKHUpeyByZXR1cm4gZ2V0VmFsKHUpID4gMDsgfSk7CgogICAgICAgIC8vIEthdGVnb3Jp
ZW4tVmVydGVpbHVuZwogICAgICAgIHZhciBjYXRTdGF0cyA9IHt9OwogICAgICAgIGRvY3MuZm9y
RWFjaChmdW5jdGlvbihkKSB7IGNhdFN0YXRzW2Qua2F0ZWdvcmllXSA9IChjYXRTdGF0c1tkLmth
dGVnb3JpZV0gfHwgMCkgKyAxOyB9KTsKCiAgICAgICAgLy8gU2NobGFnd29ydC1Iw6R1Zmlna2Vp
dGVuCiAgICAgICAgdmFyIGt3U3RhdHMgPSB7fTsKICAgICAgICBkb2NzLmZvckVhY2goZnVuY3Rp
b24oZCkgeyAoZC5zY2hsYWd3b2VydGVyIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsga3dT
dGF0c1trXSA9IChrd1N0YXRzW2tdIHx8IDApICsgMTsgfSk7IH0pOwogICAgICAgIHZhciB0b3BL
d3MgPSBPYmplY3QuZW50cmllcyhrd1N0YXRzKS5zb3J0KGZ1bmN0aW9uKGEsYil7IHJldHVybiBi
WzFdLWFbMV07IH0pLnNsaWNlKDAsIDEwKTsKCiAgICAgICAgLy8gTW9uYXRsaWNoZSBFcnN0ZWxs
dW5nCiAgICAgICAgdmFyIG1vbnRoU3RhdHMgPSB7fTsKICAgICAgICBkb2NzLmZvckVhY2goZnVu
Y3Rpb24oZCkgeyB2YXIgbSA9IChkLmVyc3RlbGx0IHx8ICcnKS5zdWJzdHJpbmcoMCwgNyk7IGlm
IChtKSBtb250aFN0YXRzW21dID0gKG1vbnRoU3RhdHNbbV0gfHwgMCkgKyAxOyB9KTsKICAgICAg
ICB2YXIgbW9udGhzID0gT2JqZWN0LmVudHJpZXMobW9udGhTdGF0cykuc29ydChmdW5jdGlvbihh
LGIpeyByZXR1cm4gYVswXS5sb2NhbGVDb21wYXJlKGJbMF0pOyB9KTsKCiAgICAgICAgdmFyIG1h
eENhdCA9IE1hdGgubWF4LmFwcGx5KG51bGwsIE9iamVjdC52YWx1ZXMoY2F0U3RhdHMpLmNvbmNh
dChbMV0pKTsKICAgICAgICB2YXIgbWF4S3cgPSB0b3BLd3MubGVuZ3RoID4gMCA/IHRvcEt3c1sw
XVsxXSA6IDE7CiAgICAgICAgdmFyIG1heE1vbnRoID0gbW9udGhzLmxlbmd0aCA+IDAgPyBNYXRo
Lm1heC5hcHBseShudWxsLCBtb250aHMubWFwKGZ1bmN0aW9uKG0pe3JldHVybiBtWzFdO30pKSA6
IDE7CgogICAgICAgIHZhciBodG1sID0gJzxkaXYgc3R5bGU9InBhZGRpbmc6MjBweDsiPjxoMiBz
dHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4tYm90dG9tOjIwcHg7Ij5Vc2Vy
LUVuZ2FnZW1lbnQgU3RhdGlzdGlrPC9oMj4nOwoKICAgICAgICAvLyDDnGJlcnNpY2h0c2thcnRl
bgogICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InN0YXQtZ3JpZCI+JyArCiAgICAgICAgICAg
ICc8ZGl2IGNsYXNzPSJzdGF0LWNhcmQiPjxkaXYgY2xhc3M9InN0YXQtdmFsdWUiPicgKyB0b3Rh
bERvY3MgKyAnPC9kaXY+PGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+RG9rdW1lbnRlIGdlc2FtdDwv
ZGl2PjwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj48ZGl2IGNs
YXNzPSJzdGF0LXZhbHVlIiBzdHlsZT0iY29sb3I6IzE1NTcyNDsiPicgKyB0b3RhbEZyZWlnZWdl
YmVuICsgJzwvZGl2PjxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPkZyZWlnZWdlYmVuPC9kaXY+PC9k
aXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0LWNhcmQiPjxkaXYgY2xhc3M9InN0
YXQtdmFsdWUiIHN0eWxlPSJjb2xvcjojN0E0NDE5OyI+JyArIHRvdGFsUHJ1ZWZ1bmcgKyAnPC9k
aXY+PGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+SW4gUHLDvGZ1bmc8L2Rpdj48L2Rpdj4nICsKICAg
ICAgICAgICAgJzxkaXYgY2xhc3M9InN0YXQtY2FyZCI+PGRpdiBjbGFzcz0ic3RhdC12YWx1ZSIg
c3R5bGU9ImNvbG9yOiM4NTY0MDQ7Ij4nICsgdG90YWxFbnR3dXJmICsgJzwvZGl2PjxkaXYgY2xh
c3M9InN0YXQtbGFiZWwiPkVudHfDvHJmZTwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAnPGRp
diBjbGFzcz0ic3RhdC1jYXJkIj48ZGl2IGNsYXNzPSJzdGF0LXZhbHVlIj4nICsgdG90YWxXaXRo
TWVkaWEgKyAnPC9kaXY+PGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+TWl0IE1lZGllbjwvZGl2Pjwv
ZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj48ZGl2IGNsYXNzPSJz
dGF0LXZhbHVlIj4nICsgT2JqZWN0LmtleXModXNlclN0YXRzKS5sZW5ndGggKyAnPC9kaXY+PGRp
diBjbGFzcz0ic3RhdC1sYWJlbCI+QWt0aXZlIEJlbnV0emVyPC9kaXY+PC9kaXY+JyArCiAgICAg
ICAgJzwvZGl2Pic7CgogICAgICAgIC8vIC0tLSBCZW51dHplci1Ba3Rpdml0w6R0IG1pdCBGaWx0
ZXIgKyBTb3J0aWVydW5nIC0tLQogICAgICAgIGh0bWwgKz0gJzxoMyBzdHlsZT0iY29sb3I6dmFy
KC0tdGV4dC1oZWFkaW5nKTttYXJnaW46MjBweCAwIDhweDsiPkJlbnV0emVyLUFrdGl2aXTDpHQg
bmFjaCBCZXJlaWNoPC9oMz4nOwoKICAgICAgICAvLyBGaWx0ZXItTGVpc3RlCiAgICAgICAgdmFy
IGJ0blN0eWxlID0gZnVuY3Rpb24odmFsLCBjdXJyZW50LCBlbXB0eSkgewogICAgICAgICAgICBp
ZiAodmFsID09PSBjdXJyZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ3BhZGRpbmc6NHB4
IDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS10ZXh0LWhlYWRpbmcpO2JhY2tncm91bmQ6dmFy
KC0tdGV4dC1oZWFkaW5nKTtjb2xvcjp3aGl0ZTtib3JkZXItcmFkaXVzOjRweDtjdXJzb3I6cG9p
bnRlcjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDA7JzsKICAgICAgICAgICAgfQogICAg
ICAgICAgICBpZiAoZW1wdHkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAncGFkZGluZzo0cHgg
MTJweDtib3JkZXI6MXB4IHNvbGlkICM4YjFhMWE7YmFja2dyb3VuZDojOGIxYTFhO2NvbG9yOiNm
ZmY7Ym9yZGVyLXJhZGl1czo0cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEycHg7Zm9udC13
ZWlnaHQ6NTAwOyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICdwYWRkaW5nOjRw
eCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtiYWNrZ3JvdW5kOnZh
cigtLWJnLWNhcmQpO2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ym9yZGVyLXJhZGl1czo0cHg7
Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwOyc7CiAgICAgICAg
fTsKICAgICAgICBodG1sICs9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZweDtmbGV4
LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjZweDthbGlnbi1pdGVtczpjZW50ZXI7Ij4nICsKICAg
ICAgICAgICAgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11
dGVkKTttYXJnaW4tcmlnaHQ6NHB4OyI+S2F0ZWdvcmllOjwvc3Bhbj4nICsKICAgICAgICAgICAg
JzxidXR0b24gc3R5bGU9IicgKyBidG5TdHlsZSgnYWxsJywgY2F0RmlsdGVyLCBmYWxzZSkgKyAn
IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0VuZ2FnZW1lbnRTdGF0cyhudWxsLFwnYWxs
XCcpIj5BbGxlPC9idXR0b24+JzsKICAgICAgICBrYXRlZ29yaWVuLmZvckVhY2goZnVuY3Rpb24o
aykgewogICAgICAgICAgICB2YXIgaGFzTm9Eb2NzID0gIWNhdFN0YXRzW2tdOwogICAgICAgICAg
ICBodG1sICs9ICc8YnV0dG9uIHN0eWxlPSInICsgYnRuU3R5bGUoaywgY2F0RmlsdGVyLCBoYXNO
b0RvY3MpICsgJyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLnNob3dFbmdhZ2VtZW50U3RhdHMo
bnVsbCxcJycgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGspICsgJ1wnKSI+JyArIERyaXZlUG9y
dGFsLmVzY2FwZUhUTUwoaykgKyAnPC9idXR0b24+JzsKICAgICAgICB9KTsKICAgICAgICBodG1s
ICs9ICc8L2Rpdj4nOwoKICAgICAgICBodG1sICs9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7
Z2FwOjZweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEwcHg7YWxpZ24taXRlbXM6Y2Vu
dGVyOyI+JyArCiAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6
dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLXJpZ2h0OjRweDsiPlNvcnRpZXJ1bmc6PC9zcGFuPicg
KwogICAgICAgICAgICAnPGJ1dHRvbiBzdHlsZT0iJyArIGJ0blN0eWxlKCd0b3RhbCcsIHNvcnQp
ICsgJyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLnNob3dFbmdhZ2VtZW50U3RhdHMoXCd0b3Rh
bFwnKSI+R2VzYW10PC9idXR0b24+JyArCiAgICAgICAgICAgICc8YnV0dG9uIHN0eWxlPSInICsg
YnRuU3R5bGUoJ2NyZWF0ZWQnLCBzb3J0KSArICciIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5z
aG93RW5nYWdlbWVudFN0YXRzKFwnY3JlYXRlZFwnKSI+RXJzdGVsbHQ8L2J1dHRvbj4nICsKICAg
ICAgICAgICAgJzxidXR0b24gc3R5bGU9IicgKyBidG5TdHlsZSgnZWRpdGVkJywgc29ydCkgKyAn
IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uuc2hvd0VuZ2FnZW1lbnRTdGF0cyhcJ2VkaXRlZFwn
KSI+QmVhcmJlaXRldDwvYnV0dG9uPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBzdHlsZT0iJyAr
IGJ0blN0eWxlKCdyZXZpZXdzJywgc29ydCkgKyAnIiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2Uu
c2hvd0VuZ2FnZW1lbnRTdGF0cyhcJ3Jldmlld3NcJykiPlJldmlld3M8L2J1dHRvbj4nICsKICAg
ICAgICAnPC9kaXY+JzsKCiAgICAgICAgLy8gVXNlci1UYWJlbGxlCiAgICAgICAgaWYgKHNvcnRl
ZFVzZXJzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgaHRtbCArPSAnPHRhYmxlIGNsYXNzPSJk
cml2ZS10YWJsZSIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTZweDsiPjx0aGVhZD48dHI+JyArCiAg
ICAgICAgICAgICAgICAnPHRoPkJlbnV0emVyPC90aD48dGggc3R5bGU9InRleHQtYWxpZ246Y2Vu
dGVyOyI+RXJzdGVsbHQ8L3RoPjx0aCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij5CZWFyYmVp
dGV0PC90aD48dGggc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+UmV2aWV3czwvdGg+PHRoIHN0
eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPkdlc2FtdDwvdGg+PHRoPkFrdGl2c3RlIEJlcmVpY2hl
PC90aD4nICsKICAgICAgICAgICAgJzwvdHI+PC90aGVhZD48dGJvZHk+JzsKICAgICAgICAgICAg
c29ydGVkVXNlcnMuZm9yRWFjaChmdW5jdGlvbih1KSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9
IHVbMV07CiAgICAgICAgICAgICAgICB2YXIgdmFscyA9IChjYXRGaWx0ZXIgIT09ICdhbGwnICYm
IGQua2F0ZWdvcmllbltjYXRGaWx0ZXJdKSA/IGQua2F0ZWdvcmllbltjYXRGaWx0ZXJdIDogZDsK
ICAgICAgICAgICAgICAgIHZhciB0b3RhbCA9IHZhbHMuY3JlYXRlZCArIHZhbHMuZWRpdGVkICsg
dmFscy5yZXZpZXdzOwogICAgICAgICAgICAgICAgLy8gVG9wLUthdGVnb3JpZW4gZsO8ciBkaWVz
ZW4gVXNlcgogICAgICAgICAgICAgICAgdmFyIHRvcENhdHMgPSBPYmplY3QuZW50cmllcyhkLmth
dGVnb3JpZW4pLnNvcnQoZnVuY3Rpb24oYSxiKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KGJbMV0uY3JlYXRlZCtiWzFdLmVkaXRlZCtiWzFdLnJldmlld3MpIC0gKGFbMV0uY3JlYXRlZCth
WzFdLmVkaXRlZCthWzFdLnJldmlld3MpOwogICAgICAgICAgICAgICAgfSkuc2xpY2UoMCwgMyk7
CiAgICAgICAgICAgICAgICB2YXIgY2F0VGFncyA9IHRvcENhdHMubWFwKGZ1bmN0aW9uKGMpIHsK
ICAgICAgICAgICAgICAgICAgICB2YXIgY3QgPSBjWzFdLmNyZWF0ZWQgKyBjWzFdLmVkaXRlZCAr
IGNbMV0ucmV2aWV3czsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPSJr
ZXl3b3JkLXRhZyI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoY1swXSkgKyAnICgnICsgY3Qg
KyAnKTwvc3Bhbj4nOwogICAgICAgICAgICAgICAgfSkuam9pbignICcpOwoKICAgICAgICAgICAg
ICAgIGh0bWwgKz0gJzx0cj4nICsKICAgICAgICAgICAgICAgICAgICAnPHRkPjxzdHJvbmc+JyAr
IERyaXZlUG9ydGFsLmVzY2FwZUhUTUwodVswXSkgKyAnPC9zdHJvbmc+PC90ZD4nICsKICAgICAg
ICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPicgKyB2YWxzLmNy
ZWF0ZWQgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFs
aWduOmNlbnRlcjsiPicgKyB2YWxzLmVkaXRlZCArICc8L3RkPicgKwogICAgICAgICAgICAgICAg
ICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+JyArIHZhbHMucmV2aWV3cyArICc8
L3RkPicgKwogICAgICAgICAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVy
O2ZvbnQtd2VpZ2h0OjYwMDsiPicgKyB0b3RhbCArICc8L3RkPicgKwogICAgICAgICAgICAgICAg
ICAgICc8dGQ+JyArIGNhdFRhZ3MgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICc8L3RyPic7
CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBodG1sICs9ICc8L3Rib2R5PjwvdGFibGU+JzsK
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBodG1sICs9ICc8ZGl2IHN0eWxlPSJwYWRkaW5n
OjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Ij5LZWluZSBE
YXRlbiBmw7xyIGRpZXNlIEF1c3dhaGwuPC9kaXY+JzsKICAgICAgICB9CgogICAgICAgIC8vIEJh
bGtlbmRpYWdyYW1tIChrb21wYWt0KQogICAgICAgIGlmIChzb3J0ZWRVc2Vycy5sZW5ndGggPiAw
KSB7CiAgICAgICAgICAgIHZhciBtYXhVc2VyID0gZ2V0VmFsKHNvcnRlZFVzZXJzWzBdKSB8fCAx
OwogICAgICAgICAgICBzb3J0ZWRVc2Vycy5mb3JFYWNoKGZ1bmN0aW9uKHUpIHsKICAgICAgICAg
ICAgICAgIHZhciBkID0gdVsxXTsKICAgICAgICAgICAgICAgIHZhciB2YWxzID0gKGNhdEZpbHRl
ciAhPT0gJ2FsbCcgJiYgZC5rYXRlZ29yaWVuW2NhdEZpbHRlcl0pID8gZC5rYXRlZ29yaWVuW2Nh
dEZpbHRlcl0gOiBkOwogICAgICAgICAgICAgICAgdmFyIHRvdGFsID0gdmFscy5jcmVhdGVkICsg
dmFscy5lZGl0ZWQgKyB2YWxzLnJldmlld3M7CiAgICAgICAgICAgICAgICBpZiAodG90YWwgPT09
IDApIHJldHVybjsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InN0YXQtYmFy
LXJvdyI+PHNwYW4gY2xhc3M9InN0YXQtYmFyLWxhYmVsIj4nICsgRHJpdmVQb3J0YWwuZXNjYXBl
SFRNTCh1WzBdKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9
InN0YXQtYmFyIj48ZGl2IGNsYXNzPSJzdGF0LWJhci1maWxsIiBzdHlsZT0id2lkdGg6JyArICh0
b3RhbC9tYXhVc2VyKjEwMCkgKyAnJTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZywj
MmQ5ZDc4ICcgKyAodmFscy5jcmVhdGVkL3RvdGFsKjEwMCkgKyAnJSwjM2I4MmY2ICcgKyAodmFs
cy5jcmVhdGVkL3RvdGFsKjEwMCkgKyAnJSAnICsgKCh2YWxzLmNyZWF0ZWQrdmFscy5lZGl0ZWQp
L3RvdGFsKjEwMCkgKyAnJSwjZTY3ZTIyICcgKyAoKHZhbHMuY3JlYXRlZCt2YWxzLmVkaXRlZCkv
dG90YWwqMTAwKSArICclIDEwMCUpOyI+PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAg
ICAgJzxzcGFuIGNsYXNzPSJzdGF0LWJhci12YWwiPicgKyB0b3RhbCArICc8L3NwYW4+PC9kaXY+
JzsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImZvbnQt
c2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NHB4OyI+TGVnZW5k
ZTogPHNwYW4gc3R5bGU9ImNvbG9yOiMyZDlkNzg7Ij7ilqA8L3NwYW4+IEVyc3RlbGx0IC8gPHNw
YW4gc3R5bGU9ImNvbG9yOiMzYjgyZjY7Ij7ilqA8L3NwYW4+IEJlYXJiZWl0ZXQgLyA8c3BhbiBz
dHlsZT0iY29sb3I6I2U2N2UyMjsiPuKWoDwvc3Bhbj4gUmV2aWV3czwvZGl2Pic7CiAgICAgICAg
fQoKICAgICAgICAvLyAtLS0gS2F0ZWdvcmllLVZlcnRlaWx1bmcgKyBUb3AgU2NobGFnd8O2cnRl
ciBuZWJlbmVpbmFuZGVyIC0tLQogICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9ImRpc3BsYXk6
Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MjBweDttYXJnaW4tdG9wOjE2
cHg7Ij4nOwoKICAgICAgICAvLyBLYXRlZ29yaWVuCiAgICAgICAgaHRtbCArPSAnPGRpdj48aDMg
c3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luLWJvdHRvbTo4cHg7Ij5Eb2t1
bWVudGUgcHJvIEthdGVnb3JpZTwvaDM+JzsKICAgICAgICB2YXIgYWxsQ2F0RW50cmllcyA9IGth
dGVnb3JpZW4ubWFwKGZ1bmN0aW9uKGspIHsgcmV0dXJuIFtrLCBjYXRTdGF0c1trXSB8fCAwXTsg
fSk7CiAgICAgICAgYWxsQ2F0RW50cmllcy5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gYlsx
XSAtIGFbMV0gfHwgYVswXS5sb2NhbGVDb21wYXJlKGJbMF0sICdkZScpOyB9KTsKICAgICAgICBh
bGxDYXRFbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAgICBodG1sICs9ICc8
ZGl2IGNsYXNzPSJzdGF0LWJhci1yb3ciPjxzcGFuIGNsYXNzPSJzdGF0LWJhci1sYWJlbCI+JyAr
IERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoY1swXSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAg
ICAgJzxkaXYgY2xhc3M9InN0YXQtYmFyIj48ZGl2IGNsYXNzPSJzdGF0LWJhci1maWxsIiBzdHls
ZT0id2lkdGg6JyArIChjWzFdL21heENhdCoxMDApICsgJyU7YmFja2dyb3VuZDojM2I4MmY2OyI+
PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InN0YXQtYmFyLXZh
bCI+JyArIGNbMV0gKyAnPC9zcGFuPjwvZGl2Pic7CiAgICAgICAgfSk7CiAgICAgICAgaHRtbCAr
PSAnPC9kaXY+JzsKCiAgICAgICAgLy8gVG9wIFNjaGxhZ3fDtnJ0ZXIKICAgICAgICBodG1sICs9
ICc8ZGl2PjxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTttYXJnaW4tYm90dG9t
OjhweDsiPlRvcCAxMCBTY2hsYWd3w7ZydGVyPC9oMz4nOwogICAgICAgIGlmICh0b3BLd3MubGVu
Z3RoID4gMCkgewogICAgICAgICAgICB0b3BLd3MuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAg
ICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJzdGF0LWJhci1yb3ciPjxzcGFuIGNsYXNz
PSJzdGF0LWJhci1sYWJlbCI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoa1swXSkgKyAnPC9z
cGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJzdGF0LWJhciI+PGRpdiBj
bGFzcz0ic3RhdC1iYXItZmlsbCIgc3R5bGU9IndpZHRoOicgKyAoa1sxXS9tYXhLdyoxMDApICsg
JyU7YmFja2dyb3VuZDojMmQ5ZDc4OyI+PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAg
ICAgJzxzcGFuIGNsYXNzPSJzdGF0LWJhci12YWwiPicgKyBrWzFdICsgJzwvc3Bhbj48L2Rpdj4n
OwogICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgeyBodG1sICs9ICc8ZGl2IHN0eWxlPSJj
b2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6MTNweDsiPktlaW5lIFNjaGxhZ3fDtnJ0
ZXIgdm9yaGFuZGVuLjwvZGl2Pic7IH0KICAgICAgICBodG1sICs9ICc8L2Rpdj48L2Rpdj4nOwoK
ICAgICAgICAvLyBNb25hdGxpY2hlIEVyc3RlbGx1bmcKICAgICAgICBpZiAobW9udGhzLmxlbmd0
aCA+IDApIHsKICAgICAgICAgICAgaHRtbCArPSAnPGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0
LWhlYWRpbmcpO21hcmdpbjoxNnB4IDAgOHB4OyI+RXJzdGVsbHVuZyBwcm8gTW9uYXQ8L2gzPic7
CiAgICAgICAgICAgIG1vbnRocy5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgICAg
IGh0bWwgKz0gJzxkaXYgY2xhc3M9InN0YXQtYmFyLXJvdyI+PHNwYW4gY2xhc3M9InN0YXQtYmFy
LWxhYmVsIj4nICsgbVswXSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYg
Y2xhc3M9InN0YXQtYmFyIj48ZGl2IGNsYXNzPSJzdGF0LWJhci1maWxsIiBzdHlsZT0id2lkdGg6
JyArIChtWzFdL21heE1vbnRoKjEwMCkgKyAnJTtiYWNrZ3JvdW5kOiMzYTdhYTM7Ij48L2Rpdj48
L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InN0YXQtYmFyLXZhbCI+
JyArIG1bMV0gKyAnPC9zcGFuPjwvZGl2Pic7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAg
ICAgICAgaHRtbCArPSAnPC9kaXY+JzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZG9jdW1lbnREZXRhaWwnKS5pbm5lckhUTUwgPSBodG1sOwogICAgfSwKCiAgICAvLyA9PT0gU2No
bGFnd29ydC1WZXJ3YWx0dW5nID09PQogICAgX2t3TWFuYWdlQ3VycmVudDogbnVsbCwKCiAgICBv
cGVuS3dNYW5hZ2Uoa2V5d29yZCkgewogICAgICAgIHRoaXMuX2t3TWFuYWdlQ3VycmVudCA9IGtl
eXdvcmQ7CiAgICAgICAgdmFyIGFmZmVjdGVkRG9jcyA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbHRl
cihmdW5jdGlvbihkKSB7CiAgICAgICAgICAgIHJldHVybiBkLnNjaGxhZ3dvZXJ0ZXIgJiYgZC5z
Y2hsYWd3b2VydGVyLmluY2x1ZGVzKGtleXdvcmQpOwogICAgICAgIH0pOwoKICAgICAgICB2YXIg
Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrd01hbmFnZUJvZHknKTsKICAgICAgICB2
YXIgZm9vdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t3TWFuYWdlRm9vdGVyJyk7CiAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t3TWFuYWdlVGl0bGUnKS50ZXh0Q29udGVu
dCA9ICdTY2hsYWd3b3J0OiAnICsga2V5d29yZDsKCiAgICAgICAgdmFyIGh0bWwgPSAnJzsKICAg
ICAgICAvLyBCZWFyYmVpdHVuZ3NmZWxkCiAgICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT0ibWFy
Z2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImZvbnQtc2l6
ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7ZGlzcGxh
eTpibG9jazttYXJnaW4tYm90dG9tOjRweDsiPlNjaGxhZ3dvcnQgdW1iZW5lbm5lbjwvbGFiZWw+
JyArCiAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Imt3TWFuYWdlTmV3TmFtZSIg
dmFsdWU9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGtleXdvcmQpICsgJyIgJyArCiAgICAg
ICAgICAgICdzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjhweCAxMHB4O2JvcmRlcjoxcHggc29s
aWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTRweDti
YWNrZ3JvdW5kOnZhcigtLWJnLWlucHV0KTtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+JyAr
CiAgICAgICAgJzwvZGl2Pic7CgogICAgICAgIC8vIEJldHJvZmZlbmUgQXJ0aWtlbAogICAgICAg
IGlmIChhZmZlY3RlZERvY3MubGVuZ3RoID4gMCkgewogICAgICAgICAgICBodG1sICs9ICc8ZGl2
IHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1z
ZWNvbmRhcnkpO21hcmdpbi1ib3R0b206NnB4OyI+VmVyd2VuZGV0IGluICcgKyBhZmZlY3RlZERv
Y3MubGVuZ3RoICsgJyBBcnRpa2VsJyArIChhZmZlY3RlZERvY3MubGVuZ3RoID4gMSA/ICduJyA6
ICcnKSArICc6PC9kaXY+JzsKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0ia3ctZG9j
LWxpc3QiPic7CiAgICAgICAgICAgIGFmZmVjdGVkRG9jcy5mb3JFYWNoKGZ1bmN0aW9uKGRvYykg
ewogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0ia3ctZG9jLWl0ZW0iPicgKwog
ICAgICAgICAgICAgICAgICAgICc8ZGl2PjxzcGFuIGNsYXNzPSJrdy1kb2MtdGl0bGUiPicgKyBE
cml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy50aXRlbCkgKyAnPC9zcGFuPicgKwogICAgICAgICAg
ICAgICAgICAgICc8ZGl2IGNsYXNzPSJrdy1kb2Mta2F0Ij4nICsgRHJpdmVQb3J0YWwuZXNjYXBl
SFRNTChkb2Mua2F0ZWdvcmllKSArCiAgICAgICAgICAgICAgICAgICAgKGRvYy5lcnN0ZWxsdFZv
biA/ICcgwrcgdm9uICcgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy5lcnN0ZWxsdFZvbikg
OiAnJykgKwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAg
ICAgICc8L2Rpdj4nOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaHRtbCArPSAnPC9kaXY+
JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBodG1sICs9ICc8ZGl2IHN0eWxlPSJmb250
LXNpemU6MTNweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtwYWRkaW5nOjEwcHggMDsiPldpcmQg
aW4ga2VpbmVtIEFydGlrZWwgdmVyd2VuZGV0LjwvZGl2Pic7CiAgICAgICAgfQoKICAgICAgICAv
LyBFcnNldHplbi1PcHRpb24KICAgICAgICB2YXIgb3RoZXJLdyA9IERyaXZlRWRpdG9yLl9nZXRB
bGxLbm93bktleXdvcmRzKCkuZmlsdGVyKGZ1bmN0aW9uKGspIHsgcmV0dXJuIGsgIT09IGtleXdv
cmQ7IH0pOwogICAgICAgIGh0bWwgKz0gJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTRweDtib3Jk
ZXItdG9wOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO3BhZGRpbmctdG9wOjEycHg7Ij4n
ICsKICAgICAgICAgICAgJzxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6
NjAwO2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0
b206NnB4OyI+RXJzZXR6ZW4gZHVyY2g8L2xhYmVsPicgKwogICAgICAgICAgICAnPGlucHV0IHR5
cGU9ImhpZGRlbiIgaWQ9Imt3TWFuYWdlUmVwbGFjZSIgdmFsdWU9IiI+JyArCiAgICAgICAgICAg
ICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJn
aW4tYm90dG9tOjZweDsiPlfDpGhsZSBlaW4gU2NobGFnd29ydCwgZHVyY2ggZGFzIGRpZXNlcyBi
ZWltIEzDtnNjaGVuIG9kZXIgVW1iZW5lbm5lbiBlcnNldHp0IHdlcmRlbiBzb2xsOjwvZGl2Picg
KwogICAgICAgICAgICAnPGRpdiBpZD0ia3dSZXBsYWNlU2VsZWN0ZWQiIHN0eWxlPSJtYXJnaW4t
Ym90dG9tOjhweDtkaXNwbGF5Om5vbmU7cGFkZGluZzo2cHggMTBweDtib3JkZXItcmFkaXVzOjRw
eDtiYWNrZ3JvdW5kOnZhcigtLWJnLWFjdGl2ZSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS10ZXh0
LWhlYWRpbmcpO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7ZGlzcGxh
eTpub25lOyI+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gaWQ9Imt3UmVwbGFjZUxhYmVsIj48
L3NwYW4+IDxzcGFuIHN0eWxlPSJjdXJzb3I6cG9pbnRlcjttYXJnaW4tbGVmdDo2cHg7Y29sb3I6
dmFyKC0tdGV4dC1tdXRlZCk7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuX2NsZWFyS3dSZXBs
YWNlKCkiPuKclTwvc3Bhbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAn
PGRpdiBjbGFzcz0iZ292LWt3LWxpc3QiIHN0eWxlPSJtYXgtaGVpZ2h0OjEyMHB4OyIgaWQ9Imt3
UmVwbGFjZU9wdGlvbnMiPic7CiAgICAgICAgb3RoZXJLdy5mb3JFYWNoKGZ1bmN0aW9uKGt3KSB7
CiAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIGNsYXNzPSJnb3Yta3ctcGlsbCIgb25jbGljaz0i
RHJpdmVHb3Zlcm5hbmNlLl9zZWxlY3RLd1JlcGxhY2UoXCcnICsgRHJpdmVQb3J0YWwuZXNjYXBl
QXR0cihrdykgKyAnXCcpIj4nICsKICAgICAgICAgICAgICAgIERyaXZlUG9ydGFsLmVzY2FwZUhU
TUwoa3cpICsgJzwvc3Bhbj4nOwogICAgICAgIH0pOwogICAgICAgIGlmIChvdGhlckt3Lmxlbmd0
aCA9PT0gMCkgewogICAgICAgICAgICBodG1sICs9ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEy
cHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Ij5LZWluZSBhbmRlcmVuIFNjaGxhZ3fDtnJ0ZXIg
dm9yaGFuZGVuPC9zcGFuPic7CiAgICAgICAgfQogICAgICAgIGh0bWwgKz0gJzwvZGl2PjwvZGl2
Pic7CgogICAgICAgIGJvZHkuaW5uZXJIVE1MID0gaHRtbDsKCiAgICAgICAgZm9vdGVyLmlubmVy
SFRNTCA9CiAgICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5jbG9z
ZUt3TWFuYWdlKCkiPlNjaGxpZcOfZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24g
Y2xhc3M9ImRhbmdlciIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLmRlbGV0ZUtleXdvcmQoKSI+
TMO2c2NoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9InByaW1hcnki
IG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5yZW5hbWVLZXl3b3JkKCkiPlVtYmVuZW5uZW48L2J1
dHRvbj4nOwoKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3dNYW5hZ2VNb2RhbCcp
LmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKICAgIH0sCgogICAgY2xvc2VLd01hbmFnZSgpIHsKICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3dNYW5hZ2VNb2RhbCcpLmNsYXNzTGlzdC5y
ZW1vdmUoJ29wZW4nKTsKICAgICAgICB0aGlzLl9rd01hbmFnZUN1cnJlbnQgPSBudWxsOwogICAg
fSwKCiAgICBfc2VsZWN0S3dSZXBsYWNlKGt3KSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2t3TWFuYWdlUmVwbGFjZScpLnZhbHVlID0ga3c7CiAgICAgICAgdmFyIHNlbCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdrd1JlcGxhY2VTZWxlY3RlZCcpOwogICAgICAgIHNlbC5z
dHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgIHNlbC5zdHlsZS5hbGlnbkl0ZW1zID0gJ2Nl
bnRlcic7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t3UmVwbGFjZUxhYmVsJyku
dGV4dENvbnRlbnQgPSBrdzsKICAgICAgICAvLyBBdXNnZXfDpGhsdGUgUGlsbCBoZXJ2b3JoZWJl
bgogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNrd1JlcGxhY2VPcHRpb25zIC5n
b3Yta3ctcGlsbCcpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAgICAgICAgICAgZWwuc3R5bGUu
b3V0bGluZSA9IGVsLnRleHRDb250ZW50LnRyaW0oKSA9PT0ga3cgPyAnMnB4IHNvbGlkIHZhcigt
LXRleHQtaGVhZGluZyknIDogJyc7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIF9jbGVhckt3UmVw
bGFjZSgpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3dNYW5hZ2VSZXBsYWNl
JykudmFsdWUgPSAnJzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3dSZXBsYWNl
U2VsZWN0ZWQnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJyNrd1JlcGxhY2VPcHRpb25zIC5nb3Yta3ctcGlsbCcpLmZvckVhY2goZnVu
Y3Rpb24oZWwpIHsKICAgICAgICAgICAgZWwuc3R5bGUub3V0bGluZSA9ICcnOwogICAgICAgIH0p
OwogICAgfSwKCiAgICBhc3luYyByZW5hbWVLZXl3b3JkKCkgewogICAgICAgIHZhciBvbGROYW1l
ID0gdGhpcy5fa3dNYW5hZ2VDdXJyZW50OwogICAgICAgIHZhciBuZXdOYW1lID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2t3TWFuYWdlTmV3TmFtZScpLnZhbHVlLnRyaW0oKTsKICAgICAgICBp
ZiAoIW5ld05hbWUgfHwgbmV3TmFtZSA9PT0gb2xkTmFtZSkgewogICAgICAgICAgICBzaG93VG9h
c3QoJ0JpdHRlIGVpbmVuIG5ldWVuIE5hbWVuIGVpbmdlYmVuJywgJ3dhcm5pbmcnKTsKICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIGFmZmVjdGVkID0gRHJpdmVGUy5k
b2N1bWVudHMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgcmV0dXJuIGQuc2NobGFn
d29lcnRlciAmJiBkLnNjaGxhZ3dvZXJ0ZXIuaW5jbHVkZXMob2xkTmFtZSk7CiAgICAgICAgfSk7
CgogICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZmZl
Y3RlZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgZG9jID0gYWZmZWN0ZWRbaV07CiAg
ICAgICAgICAgIHZhciBpZHggPSBkb2Muc2NobGFnd29lcnRlci5pbmRleE9mKG9sZE5hbWUpOwog
ICAgICAgICAgICBpZiAoaWR4ID49IDApIHsKICAgICAgICAgICAgICAgIGRvYy5zY2hsYWd3b2Vy
dGVyW2lkeF0gPSBuZXdOYW1lOwogICAgICAgICAgICAgICAgLy8gRHVwbGlrYXRlIGVudGZlcm5l
bgogICAgICAgICAgICAgICAgZG9jLnNjaGxhZ3dvZXJ0ZXIgPSBbLi4ubmV3IFNldChkb2Muc2No
bGFnd29lcnRlcildOwogICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IERyaXZlRlMu
c2F2ZURvY3VtZW50KGRvYyk7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSBj
b3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBdWNoIGluIFBSRURF
RklORURfS0VZV09SRFMgZXJzZXR6ZW4KICAgICAgICB2YXIgcHJlZElkeCA9IERyaXZlRWRpdG9y
LlBSRURFRklORURfS0VZV09SRFMuaW5kZXhPZihvbGROYW1lKTsKICAgICAgICBpZiAocHJlZElk
eCA+PSAwKSBEcml2ZUVkaXRvci5QUkVERUZJTkVEX0tFWVdPUkRTW3ByZWRJZHhdID0gbmV3TmFt
ZTsKCiAgICAgICAgc2hvd1RvYXN0KCdTY2hsYWd3b3J0IHVtYmVuYW5udDogIicgKyBvbGROYW1l
ICsgJyIg4oaSICInICsgbmV3TmFtZSArICciICgnICsgY291bnQgKyAnIEFydGlrZWwpJywgJ3N1
Y2Nlc3MnKTsKICAgICAgICB0aGlzLmNsb3NlS3dNYW5hZ2UoKTsKICAgICAgICB0aGlzLnJlbmRl
ckFkbWluKCk7CiAgICAgICAgRHJpdmVQb3J0YWwucmVuZGVyKCk7CiAgICB9LAoKICAgIGFzeW5j
IGRlbGV0ZUtleXdvcmQoKSB7CiAgICAgICAgdmFyIGtleXdvcmQgPSB0aGlzLl9rd01hbmFnZUN1
cnJlbnQ7CiAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2t3TWFuYWdlUmVwbGFjZScpLnZhbHVlLnRyaW0oKTsKCiAgICAgICAgdmFyIGFmZmVjdGVkID0g
RHJpdmVGUy5kb2N1bWVudHMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgcmV0dXJu
IGQuc2NobGFnd29lcnRlciAmJiBkLnNjaGxhZ3dvZXJ0ZXIuaW5jbHVkZXMoa2V5d29yZCk7CiAg
ICAgICAgfSk7CgogICAgICAgIGlmIChhZmZlY3RlZC5sZW5ndGggPiAwICYmICFjb25maXJtKCdT
Y2hsYWd3b3J0ICInICsga2V5d29yZCArICciIGF1cyAnICsgYWZmZWN0ZWQubGVuZ3RoICsgJyBB
cnRpa2VsJyArIChhZmZlY3RlZC5sZW5ndGggPiAxID8gJ24nIDogJycpICsgJyBlbnRmZXJuZW4/
JyArIChyZXBsYWNlbWVudCA/ICdcbkVyc2V0enQgZHVyY2g6ICInICsgcmVwbGFjZW1lbnQgKyAn
IicgOiAnJykpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBj
b3VudCA9IDA7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZmZlY3RlZC5sZW5ndGg7IGkr
KykgewogICAgICAgICAgICB2YXIgZG9jID0gYWZmZWN0ZWRbaV07CiAgICAgICAgICAgIGRvYy5z
Y2hsYWd3b2VydGVyID0gZG9jLnNjaGxhZ3dvZXJ0ZXIuZmlsdGVyKGZ1bmN0aW9uKGspIHsgcmV0
dXJuIGsgIT09IGtleXdvcmQ7IH0pOwogICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgJiYgIWRv
Yy5zY2hsYWd3b2VydGVyLmluY2x1ZGVzKHJlcGxhY2VtZW50KSkgewogICAgICAgICAgICAgICAg
ZG9jLnNjaGxhZ3dvZXJ0ZXIucHVzaChyZXBsYWNlbWVudCk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IERyaXZlRlMuc2F2ZURvY3VtZW50KGRvYyk7CiAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIGNvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAv
LyBBdXMgUFJFREVGSU5FRF9LRVlXT1JEUyBlbnRmZXJuZW4KICAgICAgICB2YXIgcHJlZElkeCA9
IERyaXZlRWRpdG9yLlBSRURFRklORURfS0VZV09SRFMuaW5kZXhPZihrZXl3b3JkKTsKICAgICAg
ICBpZiAocHJlZElkeCA+PSAwKSBEcml2ZUVkaXRvci5QUkVERUZJTkVEX0tFWVdPUkRTLnNwbGlj
ZShwcmVkSWR4LCAxKTsKCiAgICAgICAgc2hvd1RvYXN0KCdTY2hsYWd3b3J0ICInICsga2V5d29y
ZCArICciIGdlbMO2c2NodCcgKyAocmVwbGFjZW1lbnQgPyAnLCBlcnNldHp0IGR1cmNoICInICsg
cmVwbGFjZW1lbnQgKyAnIicgOiAnJykgKyAnICgnICsgY291bnQgKyAnIEFydGlrZWwpJywgJ3N1
Y2Nlc3MnKTsKICAgICAgICB0aGlzLmNsb3NlS3dNYW5hZ2UoKTsKICAgICAgICB0aGlzLnJlbmRl
ckFkbWluKCk7CiAgICAgICAgRHJpdmVQb3J0YWwucmVuZGVyKCk7CiAgICB9LAoKICAgIC8vID09
PSBBZG1pbi1BbmxlaXR1bmcgZnVlciBFaW5zdGVpZ2VyID09PQogICAgc2hvd0FkbWluR3VpZGUo
KSB7CiAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292QWRtaW5C
b2R5Jyk7CiAgICAgICAgYm9keS5pbm5lckhUTUwgPQogICAgICAgICc8ZGl2IHN0eWxlPSJtYXgt
d2lkdGg6ODAwcHg7bWFyZ2luOjAgYXV0bzsiPicgKwogICAgICAgICAgICAnPGRpdiBzdHlsZT0i
ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNl
bnRlcjttYXJnaW4tYm90dG9tOjE2cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8aDIgc3R5bGU9
ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7bWFyZ2luOjA7Ij5BZG1pbi1BbmxlaXR1bmc8L2gy
PicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9Imdvdi1hZGQtYnRuIiBzdHlsZT0i
cGFkZGluZzo2cHggMTRweDsiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5yZW5kZXJBZG1pbigp
OyI+WnVyw7xjayB6dXIgVmVyd2FsdHVuZzwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+
JyArCgogICAgICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTti
b3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1czo4cHg7cGFk
ZGluZzoxNnB4IDIwcHg7bWFyZ2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAn
PGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO2ZvbnQtc2l6ZToxNXB4O21hcmdp
bi1ib3R0b206OHB4OyI+V2FzIGlzdCBkaWVzZSBEYXRlaT88L2gzPicgKwogICAgICAgICAgICAg
ICAgJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjc7Y29sb3I6dmFyKC0t
dGV4dC1wcmltYXJ5KTsiPicgKwogICAgICAgICAgICAgICAgICAgICdEYXMgZ2VzYW10ZSBELlIu
SS5WLkUuIFBvcnRhbCBiZXN0ZWh0IGF1cyA8c3Ryb25nPmVpbmVyIGVpbnppZ2VuIERhdGVpPC9z
dHJvbmc+OiA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGlu
ZzoycHggNnB4O2JvcmRlci1yYWRpdXM6M3B4OyI+aW5kZXguaHRtbDwvY29kZT4uICcgKwogICAg
ICAgICAgICAgICAgICAgICdJbiBkaWVzZXIgRGF0ZWkgc3RlY2t0IGFsbGVzOiBkYXMgQXVzc2Vo
ZW4gKEZhcmJlbiwgU2NocmlmdGdyw7bDn2VuLCBBYnN0w6RuZGUpLCBkaWUgU3RydWt0dXIgKHdh
cyB3byBhbmdlemVpZ3Qgd2lyZCkgdW5kIGRpZSBMb2dpayAod2FzIHBhc3NpZXJ0IHdlbm4gbWFu
IGtsaWNrdCkuICcgKwogICAgICAgICAgICAgICAgICAgICdNYW4ga2FubiBzaWUgbWl0IGplZGVt
IFRleHRlZGl0b3Igw7ZmZm5lbiDigJMgZsO8ciB1bnMga2xhcHB0IGhpZXIgbnVyIGRlciBub3Jt
YWxlIFdpbmRvd3MtRWRpdG9yIChXaW5kb3dzIFN1Y2hlOiBFZGl0b3IpJyArCiAgICAgICAgICAg
ICAgICAnPC9wPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCgogICAgICAgICAgICAnPGRpdiBz
dHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJv
cmRlci1saWdodCk7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4IDIwcHg7bWFyZ2luLWJv
dHRvbToxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10
ZXh0LWhlYWRpbmcpO2ZvbnQtc2l6ZToxNXB4O21hcmdpbi1ib3R0b206OHB4OyI+QXVmYmF1IGRl
ciBEYXRlaSAoMyBCZXJlaWNoZSk8L2gzPicgKwogICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJm
b250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjc7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTtt
YXJnaW4tYm90dG9tOjEwcHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnRGllIERhdGVpIGhh
dCBkcmVpIGdyb8OfZSBBYnNjaG5pdHRlLiBJaHIgZXJrZW5udCBzaWUgYW4gZGVuIEtvbW1lbnRh
cmVuIGltIENvZGU6JyArCiAgICAgICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAgICAg
Jzx0YWJsZSBzdHlsZT0id2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Zm9udC1z
aXplOjEzcHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPHRyIHN0eWxlPSJib3JkZXItYm90
dG9tOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyI+JyArCiAgICAgICAgICAgICAgICAg
ICAgICAgICc8dGQgc3R5bGU9InBhZGRpbmc6OHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIo
LS10ZXh0LWhlYWRpbmcpO3dpZHRoOjEyMHB4OyI+MS4gQ1NTPC90ZD4nICsKICAgICAgICAgICAg
ICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmlt
YXJ5KTsiPkFsbGVzIHp3aXNjaGVuIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNh
cmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4mbHQ7c3R5bGUmZ3Q7
PC9jb2RlPiB1bmQgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3Bh
ZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPiZsdDsvc3R5bGUmZ3Q7PC9jb2RlPiDi
gJMgaGllciBzdGVoZW4gPHN0cm9uZz5GYXJiZW4sIFNjaHJpZnRncsO2w59lbiwgQWJzdMOkbmRl
PC9zdHJvbmc+LiBEYXMgaXN0IGRlciBCZXJlaWNoLCBkZW4gaWhyIGFtIGjDpHVmaWdzdGVuIGFu
cGFzc2VuIHdlcmRldC48L3RkPicgKwogICAgICAgICAgICAgICAgICAgICc8L3RyPicgKwogICAg
ICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9ImJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigt
LWJvcmRlci1saWdodCk7Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0i
cGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Ij4y
LiBIVE1MPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGlu
Zzo4cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsiPkRlciBtaXR0bGVyZSBUZWlsIOKAkyBo
aWVyIHN0ZWh0IGRpZSA8c3Ryb25nPlN0cnVrdHVyPC9zdHJvbmc+OiBCdXR0b25zLCDDnGJlcnNj
aHJpZnRlbiwgRWluZ2FiZWZlbGRlci4gVGV4dGUgd2llIOKAnlByw7xmdW5nZW4iIG9kZXIg4oCe
R292ZXJuYW5jZSIgZmluZGV0IGlociBoaWVyLjwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAg
JzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0cj4nICsKICAgICAgICAgICAgICAgICAg
ICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigt
LXRleHQtaGVhZGluZyk7Ij4zLiBKYXZhU2NyaXB0PC90ZD4nICsKICAgICAgICAgICAgICAgICAg
ICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsi
PkFsbGVzIHp3aXNjaGVuIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0
KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4mbHQ7c2NyaXB0Jmd0OzwvY29k
ZT4gdW5kIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5n
OjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4mbHQ7L3NjcmlwdCZndDs8L2NvZGU+IOKAkyBk
aWUgPHN0cm9uZz5Mb2dpazwvc3Ryb25nPi4gSGllciBwYXNzaWVydCBhbGxlcywgd2FzIGJlaSBL
bGlja3MsIFNwZWljaGVybiB1c3cuIGF1c2dlZsO8aHJ0IHdpcmQuIDxzdHJvbmcgc3R5bGU9ImNv
bG9yOiNkYzM1NDU7Ij5WT1JTSUNIVDogw4RuZGVydW5nZW4gaGllciBrw7ZubmVuIGRhcyBnZXNh
bXRlIFN5c3RlbSBrYXB1dHRtYWNoZW4hPC9zdHJvbmc+PC90ZD4nICsKICAgICAgICAgICAgICAg
ICAgICAnPC90cj4nICsKICAgICAgICAgICAgICAgICc8L3RhYmxlPicgKwogICAgICAgICAgICAn
PC9kaXY+JyArCgogICAgICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1j
YXJkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1czo4
cHg7cGFkZGluZzoxNnB4IDIwcHg7bWFyZ2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgICAg
ICAgICAnPGgzIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO2ZvbnQtc2l6ZToxNXB4
O21hcmdpbi1ib3R0b206OHB4OyI+RmFyYmVuIMOkbmRlcm4g4oCTIHNvIGdlaHRcJ3M8L2gzPicg
KwogICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDox
Ljc7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTttYXJnaW4tYm90dG9tOjEwcHg7Ij4nICsKICAg
ICAgICAgICAgICAgICAgICAnR2FueiBvYmVuIGluIGRlciBEYXRlaSAoY2EuIFplaWxlIDE2KSBz
dGVodCBlaW4gQmxvY2sgbWl0IDxzdHJvbmc+Q1NTLVZhcmlhYmxlbjwvc3Ryb25nPi4gRGFzIHNp
bmQgZGllIOKAnkdydW5kZmFyYmVuIiBkZXMgZ2VzYW10ZW4gU3lzdGVtcy4gJyArCiAgICAgICAg
ICAgICAgICAgICAgJ1dlbm4gaWhyIGhpZXIgZWluZSBGYXJiZSDDpG5kZXJ0LCDDpG5kZXJ0IHNp
ZSBzaWNoIDxzdHJvbmc+w7xiZXJhbGw8L3N0cm9uZz4gYXVmIGRlciBTZWl0ZTonICsKICAgICAg
ICAgICAgICAgICc8L3A+JyArCiAgICAgICAgICAgICAgICAnPHByZSBzdHlsZT0iYmFja2dyb3Vu
ZDp2YXIoLS1iZy1jYXJkLWFsdCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQp
O2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MTJweCAxNnB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUt
aGVpZ2h0OjEuODtvdmVyZmxvdy14OmF1dG87Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsiPicg
KwonOnJvb3QgeycgKyAnXFxuJyArCicgICAgLS1iZy1wcmltYXJ5OiAjMWEyMzMyOyAgICAgIDxz
cGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsiPi8qIEtvcGZ6ZWlsZSAoZHVua2xl
cyBCbGF1KSAqLzwvc3Bhbj4nICsgJ1xcbicgKwonICAgIC0tYmctYm9keTogI2Y1ZjVmNTsgICAg
ICAgICA8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Ij4vKiBTZWl0ZW5oaW50
ZXJncnVuZCAoaGVsbGdyYXUpICovPC9zcGFuPicgKyAnXFxuJyArCicgICAgLS1iZy1jYXJkOiAj
ZmZmZmZmOyAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsiPi8q
IEthcnRlbi9Cb3hlbiAod2Vpw58pICovPC9zcGFuPicgKyAnXFxuJyArCicgICAgLS10ZXh0LXBy
aW1hcnk6ICMzMzM7ICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsi
Pi8qIE5vcm1hbGVyIFRleHQgKGR1bmtlbGdyYXUpICovPC9zcGFuPicgKyAnXFxuJyArCicgICAg
LS10ZXh0LWhlYWRpbmc6ICMyRTRBNjI7ICAgIDxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0
LW11dGVkKTsiPi8qIMOcYmVyc2NocmlmdGVuIChQb2xpemVpLUJsYXUpICovPC9zcGFuPicgKyAn
XFxuJyArCicgICAgLS1ib3JkZXItY29sb3I6ICNkZGQ7ICAgICAgIDxzcGFuIHN0eWxlPSJjb2xv
cjp2YXIoLS10ZXh0LW11dGVkKTsiPi8qIFJhaG1lbmxpbmllbiAoaGVsbGdyYXUpICovPC9zcGFu
PicgKyAnXFxuJyArCid9JyArCiAgICAgICAgICAgICAgICAnPC9wcmU+JyArCiAgICAgICAgICAg
ICAgICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIo
LS10ZXh0LXByaW1hcnkpO21hcmdpbi10b3A6MTBweDsiPicgKwogICAgICAgICAgICAgICAgICAg
ICc8c3Ryb25nPkJlaXNwaWVsOjwvc3Ryb25nPiBJaHIgd29sbHQgZGllIEtvcGZ6ZWlsZSByb3Qg
bWFjaGVuPyDDhG5kZXJ0IDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0
KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4jMWEyMzMyPC9jb2RlPiAnICsK
ICAgICAgICAgICAgICAgICAgICAnaGludGVyIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigt
LWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4tLWJnLXBy
aW1hcnk8L2NvZGU+IHp1IDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0
KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4jY2MwMDAwPC9jb2RlPi4gU3Bl
aWNoZXJuLCBTZWl0ZSBuZXUgbGFkZW4g4oCTIGZlcnRpZy4nICsKICAgICAgICAgICAgICAgICc8
L3A+JyArCiAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVp
Z2h0OjEuNztjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO21hcmdpbi10b3A6NnB4OyI+JyArCiAg
ICAgICAgICAgICAgICAgICAgJzxzdHJvbmc+VGlwcDo8L3N0cm9uZz4gRmFyYmVuIHNpbmQgYWxz
IOKAnkhleC1Db2RlcyIgYW5nZWdlYmVuICh6LkIuIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZh
cigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4jMkU0
QTYyPC9jb2RlPikuICcgKwogICAgICAgICAgICAgICAgICAgICdTdWNodCBpbSBJbnRlcm5ldCBu
YWNoIOKAnkhUTUwgQ29sb3IgUGlja2VyIiDigJMgZGEga8O2bm50IGlociBGYXJiZW4gdmlzdWVs
bCBhdXN3w6RobGVuIHVuZCBkZW4gQ29kZSBrb3BpZXJlbi4nICsKICAgICAgICAgICAgICAgICc8
L3A+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJi
YWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxp
Z2h0KTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE2cHggMjBweDttYXJnaW4tYm90dG9tOjE0
cHg7Ij4nICsKICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVh
ZGluZyk7Zm9udC1zaXplOjE1cHg7bWFyZ2luLWJvdHRvbTo4cHg7Ij5OYWNodC1Nb2R1cyBGYXJi
ZW4gw6RuZGVybjwvaDM+JyArCiAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQtc2l6ZTox
M3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+JyArCiAgICAg
ICAgICAgICAgICAgICAgJ0RpcmVrdCB1bnRlciBkZW0gPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6
dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPjpy
b290PC9jb2RlPi1CbG9jayAoY2EuIFplaWxlIDQxKSBzdGVodCBlaW4gendlaXRlciBCbG9jayBt
aXQgJyArCiAgICAgICAgICAgICAgICAgICAgJzxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigt
LWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij5bZGF0YS10
aGVtZT0ibmlnaHQiXTwvY29kZT4uIERhcyBzaW5kIGRpZSBGYXJiZW4gZsO8ciBkZW4gPHN0cm9u
Zz5EdW5rZWxtb2R1czwvc3Ryb25nPi4gJyArCiAgICAgICAgICAgICAgICAgICAgJ0dsZWljaGUg
VmFyaWFibGVuLU5hbWVuLCBhbmRlcmUgV2VydGUuIFdlbm4gaWhyIHouQi4gZGVuIEhpbnRlcmdy
dW5kIGltIER1bmtlbG1vZHVzIGhlbGxlciB3b2xsdCwgw6RuZGVydCBpaHIgJyArCiAgICAgICAg
ICAgICAgICAgICAgJzxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtw
YWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij4tLWJnLWJvZHk8L2NvZGU+IGRvcnQu
JyArCiAgICAgICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCgogICAg
ICAgICAgICAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXI6MXB4
IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4
IDIwcHg7bWFyZ2luLWJvdHRvbToxNHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGgzIHN0eWxl
PSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO2ZvbnQtc2l6ZToxNXB4O21hcmdpbi1ib3R0b206
OHB4OyI+VGV4dGUgdW5kIEJlc2NocmlmdHVuZ2VuIMOkbmRlcm48L2gzPicgKwogICAgICAgICAg
ICAgICAgJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjc7Y29sb3I6dmFy
KC0tdGV4dC1wcmltYXJ5KTttYXJnaW4tYm90dG9tOjEwcHg7Ij4nICsKICAgICAgICAgICAgICAg
ICAgICAnTnV0enQgZGllIDxzdHJvbmc+U3VjaGVuLUZ1bmt0aW9uPC9zdHJvbmc+IGV1cmVzIEVk
aXRvcnMgKFN0cmcrRikgdW5kIHN1Y2h0IG5hY2ggZGVtIFRleHQsIGRlbiBpaHIgw6RuZGVybiB3
b2xsdC4gQmVpc3BpZWxlOicgKwogICAgICAgICAgICAgICAgJzwvcD4nICsKICAgICAgICAgICAg
ICAgICc8dWwgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjI7Y29sb3I6dmFyKC0t
dGV4dC1wcmltYXJ5KTtwYWRkaW5nLWxlZnQ6MjBweDsiPicgKwogICAgICAgICAgICAgICAgICAg
ICc8bGk+S29wZnplaWxlIOKAnkRpZ2l0YWxlcyBSZXNzb3VyY2VuLSB1bmQgSW5mb3JtYXRpb25z
cG9ydGFsIFZlcmtlaHIiIOKGkiBzdWNodCBnZW5hdSBkaWVzZW4gVGV4dDwvbGk+JyArCiAgICAg
ICAgICAgICAgICAgICAgJzxsaT5Gb290ZXItVGV4dCDigJ5ELlIuSS5WLkUuIC0gUG9saXplaSBO
UlciIOKGkiBzdWNodCBkaWVzZW4gVGV4dDwvbGk+JyArCiAgICAgICAgICAgICAgICAgICAgJzxs
aT5CdXR0b24tQmVzY2hyaWZ0dW5nZW4gd2llIOKAnkJlYXJiZWl0ZW4iLCDigJ5Mw7ZzY2hlbiIg
4oaSIHN1Y2h0IGRlbiBCdXR0b24tVGV4dDwvbGk+JyArCiAgICAgICAgICAgICAgICAgICAgJzxs
aT5LYXRlZ29yaWVuIHdpZSDigJ5WZXJrZWhyIiwg4oCeU2ljaGVyaGVpdCIg4oaSIGRpZXNlIHN0
ZWhlbiBpbiA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGlu
ZzoxcHggNHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+ZGF0YS9jb25maWcuanNvbjwvY29kZT4gKG5p
Y2h0IGluIGluZGV4Lmh0bWwhKTwvbGk+JyArCiAgICAgICAgICAgICAgICAnPC91bD4nICsKICAg
ICAgICAgICAgJzwvZGl2PicgKwoKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6
dmFyKC0tYmctY2FyZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO2JvcmRl
ci1yYWRpdXM6OHB4O3BhZGRpbmc6MTZweCAyMHB4O21hcmdpbi1ib3R0b206MTRweDsiPicgKwog
ICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTtmb250
LXNpemU6MTVweDttYXJnaW4tYm90dG9tOjhweDsiPkJyb3dzZXItRW50d2lja2xlcnRvb2xzIG51
dHplbiAoZGVyIGJlc3RlIFRyaWNrISk8L2gzPicgKwogICAgICAgICAgICAgICAgJzxwIHN0eWxl
PSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjc7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5
KTttYXJnaW4tYm90dG9tOjEwcHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnRHLDvGNrdCBp
bSBCcm93c2VyIDxzdHJvbmc+RjEyPC9zdHJvbmc+IChvZGVyIFJlY2h0c2tsaWNrIOKGkiDigJ5V
bnRlcnN1Y2hlbiIpLiBFcyDDtmZmbmV0IHNpY2ggZWluIFdlcmt6ZXVnLUZlbnN0ZXIuIERhbWl0
IGvDtm5udCBpaHI6JyArCiAgICAgICAgICAgICAgICAnPC9wPicgKwogICAgICAgICAgICAgICAg
JzxvbCBzdHlsZT0iZm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6Mjtjb2xvcjp2YXIoLS10ZXh0
LXByaW1hcnkpO3BhZGRpbmctbGVmdDoyMHB4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxs
aT5NaXQgZGVtIDxzdHJvbmc+QXVzd2FobC1XZXJremV1Zzwvc3Ryb25nPiAoUGZlaWwtSWNvbiBv
YmVuIGxpbmtzIGltIFdlcmt6ZXVnKSBhdWYgZWluIGJlbGllYmlnZXMgRWxlbWVudCBrbGlja2Vu
PC9saT4nICsKICAgICAgICAgICAgICAgICAgICAnPGxpPkltIHJlY2h0ZW4gQmVyZWljaCBzZWh0
IGlociBkaWUgPHN0cm9uZz5DU1MtRWlnZW5zY2hhZnRlbjwvc3Ryb25nPiBkaWVzZXMgRWxlbWVu
dHM8L2xpPicgKwogICAgICAgICAgICAgICAgICAgICc8bGk+SWhyIGvDtm5udCBGYXJiZW4sIFNj
aHJpZnRncsO2w59lbiB1c3cuIDxzdHJvbmc+bGl2ZSDDpG5kZXJuPC9zdHJvbmc+IHVuZCBkYXMg
RXJnZWJuaXMgc29mb3J0IHNlaGVuPC9saT4nICsKICAgICAgICAgICAgICAgICAgICAnPGxpPldl
bm4gZXMgZ3V0IGF1c3NpZWh0OiBkZW4gV2VydCBub3RpZXJlbiB1bmQgaW4gZGVyIGVjaHRlbiBE
YXRlaSDDpG5kZXJuPC9saT4nICsKICAgICAgICAgICAgICAgICc8L29sPicgKwogICAgICAgICAg
ICAgICAgJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjc7Y29sb3I6dmFy
KC0tdGV4dC1wcmltYXJ5KTttYXJnaW4tdG9wOjZweDsiPicgKwogICAgICAgICAgICAgICAgICAg
ICc8c3Ryb25nPldpY2h0aWc6PC9zdHJvbmc+IMOEbmRlcnVuZ2VuIGltIEJyb3dzZXItV2Vya3pl
dWcgc2luZCA8ZW0+dGVtcG9yw6RyPC9lbT4g4oCTIG5hY2ggZGVtIE5ldWxhZGVuIHNpbmQgc2ll
IHdlZy4gJyArCiAgICAgICAgICAgICAgICAgICAgJ1p1bSBkYXVlcmhhZnRlbiDDhG5kZXJuIG3D
vHNzdCBpaHIgZGllIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQtYWx0KTtw
YWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij5pbmRleC5odG1sPC9jb2RlPiBiZWFy
YmVpdGVuLicgKwogICAgICAgICAgICAgICAgJzwvcD4nICsKICAgICAgICAgICAgJzwvZGl2Picg
KwoKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9y
ZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRp
bmc6MTZweCAyMHB4O21hcmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICAgICAgICAgJzxo
MyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTtmb250LXNpemU6MTVweDttYXJnaW4t
Ym90dG9tOjhweDsiPldpY2h0aWdlIERhdGVpZW4gaW0gw5xiZXJibGljazwvaDM+JyArCiAgICAg
ICAgICAgICAgICAnPHRhYmxlIHN0eWxlPSJ3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xs
YXBzZTtmb250LXNpemU6MTNweDsiPicgKwogICAgICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9
ImJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ij4nICsKICAgICAg
ICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NjAw
O2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7d2lkdGg6MjAwcHg7Ij5pbmRleC5odG1sPC90ZD4n
ICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6
dmFyKC0tdGV4dC1wcmltYXJ5KTsiPkRpZSBrb21wbGV0dGUgQXBwIOKAkyBBdXNzZWhlbiArIExv
Z2lrLiBIaWVyIMOkbmRlcnQgaWhyIEZhcmJlbiwgVGV4dGUsIExheW91dC48L3RkPicgKwogICAg
ICAgICAgICAgICAgICAgICc8L3RyPicgKwogICAgICAgICAgICAgICAgICAgICc8dHIgc3R5bGU9
ImJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ij4nICsKICAgICAg
ICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9udC13ZWlnaHQ6NjAw
O2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Ij5kYXRhL2NvbmZpZy5qc29uPC90ZD4nICsKICAg
ICAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFyKC0t
dGV4dC1wcmltYXJ5KTsiPkthdGVnb3JpZW4gdW5kIFN0YXR1cy1EZWZpbml0aW9uZW4uIEhpZXIg
c3RlaGVuIGRpZSAyNyBGYWNoYmVyZWljaGUuPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAn
PC90cj4nICsKICAgICAgICAgICAgICAgICAgICAnPHRyIHN0eWxlPSJib3JkZXItYm90dG9tOjFw
eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpOyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAg
ICc8dGQgc3R5bGU9InBhZGRpbmc6OHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0
LWhlYWRpbmcpOyI+ZGF0YS9nb3Zlcm5hbmNlLmpzb248L3RkPicgKwogICAgICAgICAgICAgICAg
ICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkp
OyI+Um9sbGVuIChTdXBlclVzZXIsIFJldmlld2VyKS4gPHN0cm9uZz5WZXJzY2hsw7xzc2VsdDwv
c3Ryb25nPiDigJMgbnVyIMO8YmVyIGRpZXNlcyBQYW5lbCBoaWVyIGJlYXJiZWl0YmFyITwvdGQ+
JyArCiAgICAgICAgICAgICAgICAgICAgJzwvdHI+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0
ciBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTsiPicg
KwogICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJwYWRkaW5nOjhweDtmb250LXdl
aWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPmRhdGEvW0thdGVnb3JpZV0vKi5q
c29uPC90ZD4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4
cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5KTsiPkRpZSBlaWdlbnRsaWNoZW4gRG9rdW1lbnRl
LiBKZWRlciBBcnRpa2VsIGlzdCBlaW5lIEpTT04tRGF0ZWkgaW0gS2F0ZWdvcmllLU9yZG5lci48
L3RkPicgKwogICAgICAgICAgICAgICAgICAgICc8L3RyPicgKwogICAgICAgICAgICAgICAgICAg
ICc8dHIgc3R5bGU9ImJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7
Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Zm9u
dC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7Ij5zZXJ2ZXIucHMxPC90ZD4n
ICsKICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6
dmFyKC0tdGV4dC1wcmltYXJ5KTsiPkRlciBTZXJ2ZXIgKFBvd2VyU2hlbGwpLiBTdGFydGV0IGF1
dG9tYXRpc2NoIMO8YmVyIERSSVZFX1N0YXJ0LmJhdC48L3RkPicgKwogICAgICAgICAgICAgICAg
ICAgICc8L3RyPicgKwogICAgICAgICAgICAgICAgICAgICc8dHI+JyArCiAgICAgICAgICAgICAg
ICAgICAgICAgICc8dGQgc3R5bGU9InBhZGRpbmc6OHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2
YXIoLS10ZXh0LWhlYWRpbmcpOyI+RFJJVkVfU3RhcnQuYmF0PC90ZD4nICsKICAgICAgICAgICAg
ICAgICAgICAgICAgJzx0ZCBzdHlsZT0icGFkZGluZzo4cHg7Y29sb3I6dmFyKC0tdGV4dC1wcmlt
YXJ5KTsiPkRvcHBlbGtsaWNrIHp1bSBTdGFydGVuLiDDlmZmbmV0IGRlbiBTZXJ2ZXIgdW5kIGRl
biBCcm93c2VyLjwvdGQ+JyArCiAgICAgICAgICAgICAgICAgICAgJzwvdHI+JyArCiAgICAgICAg
ICAgICAgICAnPC90YWJsZT4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwoKICAgICAgICAgICAg
JzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Ym9yZGVyOjFweCBzb2xpZCB2
YXIoLS1ib3JkZXItbGlnaHQpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTZweCAyMHB4O21h
cmdpbi1ib3R0b206MTRweDsiPicgKwogICAgICAgICAgICAgICAgJzxoMyBzdHlsZT0iY29sb3I6
dmFyKC0tdGV4dC1oZWFkaW5nKTtmb250LXNpemU6MTVweDttYXJnaW4tYm90dG9tOjhweDsiPkjD
pHVmaWdlIEFucGFzc3VuZ2VuIOKAkyBTY2hyaXR0IGbDvHIgU2Nocml0dDwvaDM+JyArCiAgICAg
ICAgICAgICAgICAnPGRpdiBzdHlsZT0iZm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS43O2Nv
bG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPHAgc3R5
bGU9ImZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tdG9wOjEwcHg7Y29sb3I6dmFyKC0tdGV4dC1oZWFk
aW5nKTsiPkxvZ28vVGl0ZWwgaW4gZGVyIEtvcGZ6ZWlsZSDDpG5kZXJuOjwvcD4nICsKICAgICAg
ICAgICAgICAgICAgICAnPHA+U3VjaHQgbmFjaCDigJ5EaWdpdGFsZXMgUmVzc291cmNlbi0gdW5k
IEluZm9ybWF0aW9uc3BvcnRhbCIgaW4gZGVyIGluZGV4Lmh0bWwuIERlciBUZXh0IHN0ZWh0IGlt
IEhUTUwtQmVyZWljaCBpbiBlaW5lbSA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1j
YXJkLWFsdCk7cGFkZGluZzoxcHggNHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+Jmx0O2hlYWRlciZn
dDs8L2NvZGU+LVRhZy48L3A+JyArCgogICAgICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9u
dC13ZWlnaHQ6NzAwO21hcmdpbi10b3A6MTJweDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyI+
TmV1ZSBLYXRlZ29yaWUgaGluenVmw7xnZW46PC9wPicgKwogICAgICAgICAgICAgICAgICAgICc8
cD5HZWh0IMO8YmVyIGRpZXNlcyBHb3Zlcm5hbmNlLVBhbmVsIChLYXRlZ29yaWVuLVNla3Rpb24g
dW50ZW4gbGlua3MpLiBBbHRlcm5hdGl2OiA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1i
Zy1jYXJkLWFsdCk7cGFkZGluZzoxcHggNHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+ZGF0YS9jb25m
aWcuanNvbjwvY29kZT4gw7ZmZm5lbiB1bmQgZGVuIEthdGVnb3JpZW5hbWVuIGluIGRpZSBMaXN0
ZSBlaW5mw7xnZW4uPC9wPicgKwoKICAgICAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQt
d2VpZ2h0OjcwMDttYXJnaW4tdG9wOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPlNj
aHJpZnRhcnQgw6RuZGVybjo8L3A+JyArCiAgICAgICAgICAgICAgICAgICAgJzxwPlN1Y2h0IG5h
Y2ggPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6MXB4
IDRweDtib3JkZXItcmFkaXVzOjJweDsiPmZvbnQtZmFtaWx5PC9jb2RlPiBpbiBkZXIgaW5kZXgu
aHRtbC4gRGllIEhhdXB0c2NocmlmdGFydCBzdGVodCBiZWltIDxjb2RlIHN0eWxlPSJiYWNrZ3Jv
dW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7
Ij5ib2R5PC9jb2RlPi1FbGVtZW50LiAnICsKICAgICAgICAgICAgICAgICAgICAnRGEgZGFzIFN5
c3RlbSBvZmZsaW5lIGzDpHVmdCwgZnVua3Rpb25pZXJlbiBudXIgU2NocmlmdGFydGVuLCBkaWUg
YXVmIGRlbSBSZWNobmVyIGluc3RhbGxpZXJ0IHNpbmQgKHouQi4gQXJpYWwsIFNlZ29lIFVJLCBD
YWxpYnJpKS48L3A+JyArCgogICAgICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC13ZWln
aHQ6NzAwO21hcmdpbi10b3A6MTJweDtjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpOyI+U2Nocmlm
dGdyw7bDn2Ugw6RuZGVybjo8L3A+JyArCiAgICAgICAgICAgICAgICAgICAgJzxwPlN1Y2h0IG5h
Y2ggPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6MXB4
IDRweDtib3JkZXItcmFkaXVzOjJweDsiPmZvbnQtc2l6ZTwvY29kZT4gaW0gQ1NTLUJlcmVpY2gu
IFdlcnRlIHdpZSA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFk
ZGluZzoxcHggNHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+MTRweDwvY29kZT4gb2RlciA8Y29kZSBz
dHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGluZzoxcHggNHB4O2JvcmRl
ci1yYWRpdXM6MnB4OyI+MTZweDwvY29kZT4gYmVzdGltbWVuIGRpZSBHcsO2w59lLiBHcsO2w59l
cmUgWmFobCA9IGdyw7bDn2VyZSBTY2hyaWZ0LjwvcD4nICsKCiAgICAgICAgICAgICAgICAgICAg
JzxwIHN0eWxlPSJmb250LXdlaWdodDo3MDA7bWFyZ2luLXRvcDoxMnB4O2NvbG9yOnZhcigtLXRl
eHQtaGVhZGluZyk7Ij5Wb3JoYW5kZW5lIFNjaGxhZ3fDtnJ0ZXIgYW5wYXNzZW46PC9wPicgKwog
ICAgICAgICAgICAgICAgICAgICc8cD5TdWNodCBuYWNoIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5k
OnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7Ij5Q
UkVERUZJTkVEX0tFWVdPUkRTPC9jb2RlPiBpbiBkZXIgaW5kZXguaHRtbCAoaW0gSmF2YVNjcmlw
dC1CZXJlaWNoKS4gRG9ydCBzdGVodCBkaWUgTGlzdGUgZGVyIHZvcmRlZmluaWVydGVuIFNjaGxh
Z3fDtnJ0ZXIuICcgKwogICAgICAgICAgICAgICAgICAgICdCZXN0ZWhlbmRlIFNjaGxhZ3fDtnJ0
ZXIga8O2bm50IGlociBhdWNoIGJlcXVlbSDDvGJlciDigJ5TY2hsYWd3w7ZydGVyIHZlcndhbHRl
biIgb2JlbiBpbiBkaWVzZW0gUGFuZWwgdW1iZW5lbm5lbiBvZGVyIGzDtnNjaGVuLjwvcD4nICsK
ICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwoKICAgICAg
ICAgICAgJzxkaXYgc3R5bGU9ImJhY2tncm91bmQ6I2ZmZjNjZDtib3JkZXI6MXB4IHNvbGlkICNm
ZmMxMDc7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4IDIwcHg7bWFyZ2luLWJvdHRvbTox
NHB4O2NvbG9yOiM2NjRkMDM7Ij4nICsKICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImZvbnQt
c2l6ZToxNXB4O21hcmdpbi1ib3R0b206OHB4OyI+V2ljaHRpZ2UgUmVnZWxuPC9oMz4nICsKICAg
ICAgICAgICAgICAgICc8dWwgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjI7cGFk
ZGluZy1sZWZ0OjIwcHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+SW1t
ZXIgZWluZSBTaWNoZXJ1bmdza29waWUgbWFjaGVuPC9zdHJvbmc+IGJldm9yIGlociBldHdhcyDD
pG5kZXJ0ISBLb3BpZXJ0IGRpZSBpbmRleC5odG1sIHZvcmhlciB6LkIuIGFscyBpbmRleF9iYWNr
dXAuaHRtbC48L2xpPicgKwogICAgICAgICAgICAgICAgICAgICc8bGk+PHN0cm9uZz5OdXIgZWlu
ZSBTYWNoZSBhdWYgZWlubWFsIMOkbmRlcm48L3N0cm9uZz4sIGRhbm4gdGVzdGVuLiBTbyBmaW5k
ZXQgaWhyIEZlaGxlciBzb2ZvcnQuPC9saT4nICsKICAgICAgICAgICAgICAgICAgICAnPGxpPjxz
dHJvbmc+QW5mw7xocnVuZ3N6ZWljaGVuIHVuZCBLbGFtbWVybjwvc3Ryb25nPiBtw7xzc2VuIGlt
bWVyIHBhYXJ3ZWlzZSB2b3Jrb21tZW4uIEZlaGx0IGVpbnMsIGdlaHQgZGllIFNlaXRlIGthcHV0
dC48L2xpPicgKwogICAgICAgICAgICAgICAgICAgICc8bGk+PHN0cm9uZz5GYXJiLUNvZGVzPC9z
dHJvbmc+IGJlZ2lubmVuIGltbWVyIG1pdCAjIHVuZCBoYWJlbiAzIG9kZXIgNiBaZWljaGVuIGRh
aGludGVyICh6LkIuICNmZmYgb2RlciAjMkU0QTYyKS48L2xpPicgKwogICAgICAgICAgICAgICAg
ICAgICc8bGk+SW0gWndlaWZlbDogPHN0cm9uZz5CYWNrdXAgenVyw7xja2tvcGllcmVuPC9zdHJv
bmc+IHVuZCBub2NobWFsIHZvbiB2b3JuZS48L2xpPicgKwogICAgICAgICAgICAgICAgJzwvdWw+
JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJiYWNr
Z3JvdW5kOnZhcigtLWJnLWNhcmQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0
KTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE2cHggMjBweDttYXJnaW4tYm90dG9tOjE0cHg7
Ij4nICsKICAgICAgICAgICAgICAgICc8aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGlu
Zyk7Zm9udC1zaXplOjE1cHg7bWFyZ2luLWJvdHRvbTo4cHg7Ij5GZWhsZXIgZ2VtYWNodD8gS2Vp
biBQcm9ibGVtITwvaDM+JyArCiAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQtc2l6ZTox
M3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpOyI+JyArCiAgICAg
ICAgICAgICAgICAgICAgJ1dlbm4gbmFjaCBlaW5lciDDhG5kZXJ1bmcgZGllIFNlaXRlIG5pY2h0
IG1laHIgZnVua3Rpb25pZXJ0OicgKwogICAgICAgICAgICAgICAgJzwvcD4nICsKICAgICAgICAg
ICAgICAgICc8b2wgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjI7Y29sb3I6dmFy
KC0tdGV4dC1wcmltYXJ5KTtwYWRkaW5nLWxlZnQ6MjBweDsiPicgKwogICAgICAgICAgICAgICAg
ICAgICc8bGk+QnJvd3Nlci1UYWIgc2NobGllw59lbiAoZGVyIFNlcnZlciBiZWVuZGV0IHNpY2gg
YXV0b21hdGlzY2ggbmFjaCAyMCBTZWt1bmRlbik8L2xpPicgKwogICAgICAgICAgICAgICAgICAg
ICc8bGk+RXVyZSBTaWNoZXJ1bmdza29waWUgKHouQi4gaW5kZXhfYmFja3VwLmh0bWwpIHdpZWRl
ciBhbHMgPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3BhZGRpbmc6
MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPmluZGV4Lmh0bWw8L2NvZGU+IHVtYmVuZW5uZW48
L2xpPicgKwogICAgICAgICAgICAgICAgICAgICc8bGk+RFJJVkVfU3RhcnQuYmF0IGRvcHBlbGts
aWNrZW4g4oCTIGZlcnRpZywgYWxsZXMgd2llZGVyIHdpZSB2b3JoZXI8L2xpPicgKwogICAgICAg
ICAgICAgICAgJzwvb2w+JyArCiAgICAgICAgICAgICAgICAnPHAgc3R5bGU9ImZvbnQtc2l6ZTox
M3B4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnkpO21hcmdpbi10b3A6
NnB4OyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzdHJvbmc+RXVyZSBBcnRpa2VsLURhdGVu
IHNpbmQgc2ljaGVyITwvc3Ryb25nPiBEaWUgbGllZ2VuIGltIDxjb2RlIHN0eWxlPSJiYWNrZ3Jv
dW5kOnZhcigtLWJnLWNhcmQtYWx0KTtwYWRkaW5nOjFweCA0cHg7Ym9yZGVyLXJhZGl1czoycHg7
Ij5kYXRhLzwvY29kZT4tT3JkbmVyIHVuZCB3ZXJkZW4gZHVyY2ggw4RuZGVydW5nZW4gYW4gZGVy
IGluZGV4Lmh0bWwgbmljaHQgdmVyw6RuZGVydC4nICsKICAgICAgICAgICAgICAgICc8L3A+JyAr
CiAgICAgICAgICAgICc8L2Rpdj4nICsKCiAgICAgICAgJzwvZGl2Pic7CiAgICB9LAoKICAgIC8v
ID09PSBJbXBvcnQgLyBFeHBvcnQgPT09CiAgICBzaG93SW1wb3J0RXhwb3J0KCkgewogICAgICAg
IHZhciBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdkFkbWluQm9keScpOwogICAg
ICAgIHZhciBkb2NzID0gRHJpdmVGUy5kb2N1bWVudHM7CiAgICAgICAgdmFyIGthdGVnb3JpZW4g
PSBEcml2ZUZTLmNvbmZpZy5rYXRlZ29yaWVuIHx8IFtdOwoKICAgICAgICB2YXIgaHRtbCA9ICc8
ZGl2IHN0eWxlPSJtYXgtd2lkdGg6ODAwcHg7bWFyZ2luOjAgYXV0bzsiPicgKwogICAgICAgICAg
ICAnPGgyIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcpO21hcmdpbi1ib3R0b206MTZw
eDsiPkltcG9ydCAvIEV4cG9ydDwvaDI+JzsKCiAgICAgICAgLy8gPT09IEVYUE9SVCA9PT0KICAg
ICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJnb3Ytc2VjdGlvbiI+JyArCiAgICAgICAgICAgICc8
ZGl2IGNsYXNzPSJnb3Ytc2VjdGlvbi10aXRsZSI+RXhwb3J0PC9kaXY+JyArCiAgICAgICAgICAg
ICc8cCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2lu
LWJvdHRvbToxMHB4OyI+V8OkaGxlIEthdGVnb3JpZW4gb2RlciBlaW56ZWxuZSBBcnRpa2VsIGF1
cy4gRGllIE1lZGllbi1WZXJsaW5rdW5nZW4gYmxlaWJlbiBpbiBkZXIgRXhwb3J0LURhdGVpIGVy
aGFsdGVuLiBEZW4gPGNvZGUgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYmctY2FyZC1hbHQpO3Bh
ZGRpbmc6MXB4IDRweDtib3JkZXItcmFkaXVzOjJweDsiPm1lZGlhLzwvY29kZT4tT3JkbmVyIGJp
dHRlIG1hbnVlbGwgbWl0a29waWVyZW4uPC9wPicgKwoKICAgICAgICAgICAgLy8gS2F0ZWdvcmll
LUZpbHRlcgogICAgICAgICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHg7Ij4nICsK
ICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0
OjYwMDtjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90
dG9tOjRweDsiPkthdGVnb3JpZW48L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5
bGU9ImRpc3BsYXk6ZmxleDtnYXA6NHB4O2ZsZXgtd3JhcDp3cmFwOyIgaWQ9ImV4cG9ydENhdEZp
bHRlciI+JzsKICAgICAgICBrYXRlZ29yaWVuLmZvckVhY2goZnVuY3Rpb24oa2F0KSB7CiAgICAg
ICAgICAgIHZhciBjb3VudCA9IGRvY3MuZmlsdGVyKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQua2F0
ZWdvcmllID09PSBrYXQ7IH0pLmxlbmd0aDsKICAgICAgICAgICAgaWYgKGNvdW50ID09PSAwKSBy
ZXR1cm47CiAgICAgICAgICAgIGh0bWwgKz0gJzxsYWJlbCBjbGFzcz0iZ292LWt3LXBpbGwiIHN0
eWxlPSJjdXJzb3I6cG9pbnRlcjsiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImV4cG9y
dC1jYXQtY2IiIHZhbHVlPSInICsgRHJpdmVQb3J0YWwuZXNjYXBlQXR0cihrYXQpICsgJyIgY2hl
Y2tlZCBzdHlsZT0ibWFyZ2luLXJpZ2h0OjRweDsiIG9uY2hhbmdlPSJEcml2ZUdvdmVybmFuY2Uu
X2V4cG9ydEZpbHRlckJ5Q2F0ZWdvcnkoKSI+ICcgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGth
dCkgKyAnIDxzcGFuIGNsYXNzPSJrdy1jb3VudCI+KCcgKyBjb3VudCArICcpPC9zcGFuPjwvbGFi
ZWw+JzsKICAgICAgICB9KTsKICAgICAgICBodG1sICs9ICc8L2Rpdj48L2Rpdj4nICsKCiAgICAg
ICAgICAgIC8vIEJ1dHRvbnMKICAgICAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206
OHB4O2Rpc3BsYXk6ZmxleDtnYXA6OHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBj
bGFzcz0iZ292LWFkZC1idG4iIHN0eWxlPSJwYWRkaW5nOjRweCAxMnB4O2ZvbnQtc2l6ZToxMnB4
OyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLl9leHBvcnRTZWxlY3RBbGwodHJ1ZSkiPkFsbGUg
QXJ0aWtlbDwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9Imdvdi1h
ZGQtYnRuIiBzdHlsZT0icGFkZGluZzo0cHggMTJweDtmb250LXNpemU6MTJweDsiIG9uY2xpY2s9
IkRyaXZlR292ZXJuYW5jZS5fZXhwb3J0U2VsZWN0QWxsKGZhbHNlKSI+S2VpbmUgQXJ0aWtlbDwv
YnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCgogICAgICAgICAgICAvLyBBcnRpa2Vs
bGlzdGUKICAgICAgICAgICAgJzxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6MjIwcHg7b3ZlcmZsb3ct
eTphdXRvO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtib3JkZXItcmFkaXVz
OjRweDtwYWRkaW5nOjRweDsiIGlkPSJleHBvcnREb2NMaXN0Ij4nOwoKICAgICAgICBkb2NzLmZv
ckVhY2goZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgICAgIHZhciBoYXNNZWRpYSA9IGRvYy5tZWRp
YXMgJiYgZG9jLm1lZGlhcy5sZW5ndGggPiAwOwogICAgICAgICAgICBodG1sICs9ICc8bGFiZWwg
Y2xhc3M9ImV4cG9ydC1kb2Mtcm93IiBkYXRhLWthdGVnb3JpZT0iJyArIERyaXZlUG9ydGFsLmVz
Y2FwZUF0dHIoZG9jLmthdGVnb3JpZSkgKyAnIiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0
ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6NnB4IDhweDtjdXJzb3I6cG9pbnRlcjtib3JkZXIt
Ym90dG9tOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO2ZvbnQtc2l6ZToxM3B4OyI+JyAr
CiAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZXhwb3J0LWRv
Yy1jYiIgdmFsdWU9IicgKyBEcml2ZVBvcnRhbC5lc2NhcGVBdHRyKGRvYy5pZCkgKyAnIiBjaGVj
a2VkPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxlPSJmbGV4OjE7Y29sb3I6dmFyKC0t
dGV4dC1wcmltYXJ5KTsiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy50aXRlbCkgKyAn
PC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFweDtj
b2xvcjp2YXIoLS10ZXh0LW11dGVkKTsiPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGRvYy5r
YXRlZ29yaWUpICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgIChoYXNNZWRpYSA/ICc8c3Bh
biBzdHlsZT0iZm9udC1zaXplOjEwcHg7Y29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsiPicgKyBk
b2MubWVkaWFzLmxlbmd0aCArICcgTWVkaWVuPC9zcGFuPicgOiAnJykgKwogICAgICAgICAgICAn
PC9sYWJlbD4nOwogICAgICAgIH0pOwoKICAgICAgICBodG1sICs9ICc8L2Rpdj4nICsKICAgICAg
ICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTBweDtkaXNwbGF5OmZsZXg7Z2FwOjhweDth
bGlnbi1pdGVtczpjZW50ZXI7Ij4nICsKICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImZv
bnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7ZGlzcGxheTpmbGV4O2FsaWdu
LWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2N1cnNvcjpwb2ludGVyOyIgdGl0bGU9Ik1lZGllbi1WZXJs
aW5rdW5nZW4gaW4gZGVyIEV4cG9ydC1EYXRlaSBiZWliZWhhbHRlbiI+JyArCiAgICAgICAgICAg
ICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImV4cG9ydEluY2x1ZGVNZWRpYSIg
Y2hlY2tlZD4gTWVkaWVuLVZlcmxpbmt1bmdlbiBiZWliZWhhbHRlbicgKwogICAgICAgICAgICAg
ICAgJzwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZsZXg6MTsiPjwv
c3Bhbj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0biIgc3R5
bGU9InBhZGRpbmc6OHB4IDIwcHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuX2RvRXhwb3J0
KCkiPkV4cG9ydGllcmVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAg
ICAnPC9kaXY+JzsKCiAgICAgICAgLy8gPT09IElNUE9SVCA9PT0KICAgICAgICBodG1sICs9ICc8
ZGl2IGNsYXNzPSJnb3Ytc2VjdGlvbiI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnb3Yt
c2VjdGlvbi10aXRsZSI+SW1wb3J0PC9kaXY+JyArCiAgICAgICAgICAgICc8cCBzdHlsZT0iZm9u
dC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLWJvdHRvbToxMHB4OyI+
SW1wb3J0aWVyZSBlaW5lIHp1dm9yIGV4cG9ydGllcnRlIEpTT04tRGF0ZWkuIEFydGlrZWwgd2Vy
ZGVuIGF1dG9tYXRpc2NoIGluIGRpZSBlbnRzcHJlY2hlbmRlbiBLYXRlZ29yaWVuIGVpbnNvcnRp
ZXJ0LiBOZXVlIEthdGVnb3JpZW4gd2VyZGVuIGJlaSBCZWRhcmYgYW5nZWxlZ3QuPC9wPicgKwog
ICAgICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVt
bjtnYXA6OHB4OyI+JyArCiAgICAgICAgICAgICAgICAnPGRpdj4nICsKICAgICAgICAgICAgICAg
ICAgICAnPGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6
dmFyKC0tdGV4dC1zZWNvbmRhcnkpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo0cHg7Ij5F
eHBvcnQtRGF0ZWkgKEpTT04pPC9sYWJlbD4nICsKICAgICAgICAgICAgICAgICAgICAnPGlucHV0
IHR5cGU9ImZpbGUiIGlkPSJpbXBvcnRKc29uRmlsZSIgYWNjZXB0PSIuanNvbiIgc3R5bGU9ImZv
bnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQtcHJpbWFyeSk7Ij4nICsKICAgICAgICAgICAg
ICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8cCBzdHlsZT0iZm9udC1zaXplOjExcHg7
Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bGluZS1oZWlnaHQ6MS41O21hcmdpbi10b3A6NHB4OyI+
RmFsbHMgZGllIEV4cG9ydC1EYXRlaSBNZWRpZW4tVmVybGlua3VuZ2VuIGVudGjDpGx0LCBrb3Bp
ZXJlIGRlbiA8Y29kZSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkLWFsdCk7cGFkZGlu
ZzoxcHggNHB4O2JvcmRlci1yYWRpdXM6MnB4OyI+bWVkaWEvPC9jb2RlPi1PcmRuZXIgZGVyIFF1
ZWxsZSBpbiBkYXMgWmllbHZlcnplaWNobmlzLCBkYW1pdCBkaWUgQW5ow6RuZ2UgdmVyZsO8Z2Jh
ciBzaW5kLjwvcD4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjZw
eDsiPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJnb3YtYWRkLWJ0biIg
c3R5bGU9InBhZGRpbmc6OHB4IDIwcHg7IiBvbmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuX2RvSW1w
b3J0KCkiPkltcG9ydGllcmVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyAr
CiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JzsKCiAgICAgICAgaHRtbCAr
PSAnPC9kaXY+JzsKICAgICAgICBib2R5LmlubmVySFRNTCA9IGh0bWw7CiAgICB9LAoKICAgIF9l
eHBvcnRTZWxlY3RBbGwoY2hlY2tlZCkgewogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJy5leHBvcnQtZG9jLWNiOm5vdCg6ZGlzYWJsZWQpJykuZm9yRWFjaChmdW5jdGlvbihjYikg
eyBjYi5jaGVja2VkID0gY2hlY2tlZDsgfSk7CiAgICB9LAoKICAgIF9leHBvcnRGaWx0ZXJCeUNh
dGVnb3J5KCkgewogICAgICAgIHZhciBzZWxlY3RlZENhdHMgPSBbXTsKICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCcuZXhwb3J0LWNhdC1jYjpjaGVja2VkJykuZm9yRWFjaChmdW5j
dGlvbihjYikgeyBzZWxlY3RlZENhdHMucHVzaChjYi52YWx1ZSk7IH0pOwogICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5leHBvcnQtZG9jLXJvdycpLmZvckVhY2goZnVuY3Rpb24o
cm93KSB7CiAgICAgICAgICAgIHZhciBrYXQgPSByb3cuZ2V0QXR0cmlidXRlKCdkYXRhLWthdGVn
b3JpZScpOwogICAgICAgICAgICB2YXIgY2IgPSByb3cucXVlcnlTZWxlY3RvcignLmV4cG9ydC1k
b2MtY2InKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2F0cy5pbmNsdWRlcyhrYXQpKSB7CiAg
ICAgICAgICAgICAgICByb3cuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgY2Iu
ZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGNiLmNoZWNrZWQgPSB0cnVlOwogICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcm93LnN0eWxlLmRpc3BsYXkgPSAnbm9u
ZSc7CiAgICAgICAgICAgICAgICBjYi5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgICAgICBj
Yi5jaGVja2VkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0sCgogICAg
YXN5bmMgX2RvRXhwb3J0KCkgewogICAgICAgIHZhciBzZWxlY3RlZElkcyA9IFtdOwogICAgICAg
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5leHBvcnQtZG9jLWNiOmNoZWNrZWQnKS5mb3JF
YWNoKGZ1bmN0aW9uKGNiKSB7IHNlbGVjdGVkSWRzLnB1c2goY2IudmFsdWUpOyB9KTsKICAgICAg
ICBpZiAoc2VsZWN0ZWRJZHMubGVuZ3RoID09PSAwKSB7IHNob3dUb2FzdCgnQml0dGUgbWluZGVz
dGVucyBlaW5lbiBBcnRpa2VsIGF1c3fDpGhsZW4nLCAnd2FybmluZycpOyByZXR1cm47IH0KCiAg
ICAgICAgdmFyIGluY2x1ZGVNZWRpYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBvcnRJ
bmNsdWRlTWVkaWEnKS5jaGVja2VkOwogICAgICAgIHZhciBleHBvcnREb2NzID0gRHJpdmVGUy5k
b2N1bWVudHMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHNlbGVjdGVkSWRzLmluY2x1ZGVz
KGQuaWQpOyB9KTsKCiAgICAgICAgLy8gQXJ0aWtlbCBiZXJlaW5pZ2VuCiAgICAgICAgdmFyIGNs
ZWFuRG9jcyA9IGV4cG9ydERvY3MubWFwKGZ1bmN0aW9uKGRvYykgewogICAgICAgICAgICB2YXIg
Y29weSA9IHt9OwogICAgICAgICAgICBmb3IgKHZhciBrIGluIGRvYykgeyBpZiAoay5jaGFyQXQo
MCkgIT09ICdfJykgY29weVtrXSA9IGRvY1trXTsgfQogICAgICAgICAgICByZXR1cm4gY29weTsK
ICAgICAgICB9KTsKCiAgICAgICAgLy8gTWVkaWVuLVBmYWRlIHNhbW1lbG4gKGZ1ZXIgSGlud2Vp
cykKICAgICAgICB2YXIgbWVkaWFQYXRocyA9IFtdOwogICAgICAgIGlmIChpbmNsdWRlTWVkaWEp
IHsKICAgICAgICAgICAgY2xlYW5Eb2NzLmZvckVhY2goZnVuY3Rpb24oZG9jKSB7CiAgICAgICAg
ICAgICAgICBpZiAoZG9jLm1lZGlhcykgZG9jLm1lZGlhcy5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsK
ICAgICAgICAgICAgICAgICAgICBpZiAobS51cmwpIG1lZGlhUGF0aHMucHVzaChtLnVybCk7CiAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICB2YXIg
ZXhwb3J0RGF0YSA9IHsKICAgICAgICAgICAgZXhwb3J0VmVyc2lvbjogJzEuMCcsCiAgICAgICAg
ICAgIGV4cG9ydERhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgICAgICAgICAgZXhw
b3J0ZWRCeTogKERyaXZlRlMuZW52aXJvbiAmJiBEcml2ZUZTLmVudmlyb24udXNlcm5hbWUpIHx8
ICdVbmJla2FubnQnLAogICAgICAgICAgICBhcnRpY2xlQ291bnQ6IGNsZWFuRG9jcy5sZW5ndGgs
CiAgICAgICAgICAgIGFydGljbGVzOiBjbGVhbkRvY3MsCiAgICAgICAgICAgIG1lZGlhUGF0aHM6
IG1lZGlhUGF0aHMubGVuZ3RoID4gMCA/IG1lZGlhUGF0aHMgOiB1bmRlZmluZWQKICAgICAgICB9
OwoKICAgICAgICAvLyBKU09OIGhlcnVudGVybGFkZW4KICAgICAgICB2YXIganNvblN0ciA9IEpT
T04uc3RyaW5naWZ5KGV4cG9ydERhdGEsIG51bGwsIDIpOwogICAgICAgIHZhciBqc29uQmxvYiA9
IG5ldyBCbG9iKFtqc29uU3RyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vanNvbicgfSk7CiAgICAg
ICAgdmFyIGpzb25VcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGpzb25CbG9iKTsKICAgICAgICB2
YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgICBhLmhyZWYgPSBqc29u
VXJsOwogICAgICAgIGEuZG93bmxvYWQgPSAnRFJJVkVfRXhwb3J0XycgKyBuZXcgRGF0ZSgpLnRv
SVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSArICcuanNvbic7CiAgICAgICAgYS5jbGljaygpOwog
ICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoanNvblVybCk7CgogICAgICAgIHZhciBtc2cgPSBj
bGVhbkRvY3MubGVuZ3RoICsgJyBBcnRpa2VsIGV4cG9ydGllcnQnOwogICAgICAgIGlmIChtZWRp
YVBhdGhzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgbXNnICs9ICcgKCcgKyBtZWRpYVBhdGhz
Lmxlbmd0aCArICcgTWVkaWVuLVZlcmxpbmt1bmdlbiBlbnRoYWx0ZW4pJzsKICAgICAgICAgICAg
c2hvd1RvYXN0KG1zZywgJ3N1Y2Nlc3MnLCA0MDAwKTsKICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnQml0dGUga29waWVyZSBkZW4g
bWVkaWEvLU9yZG5lciBtYW51ZWxsIHp1bSBaaWVsLCBkYW1pdCBkaWUgQW5ow6RuZ2UgdmVyZsO8
Z2JhciBibGVpYmVuLicsICdpbmZvJywgNjAwMCk7CiAgICAgICAgICAgIH0sIDE1MDApOwogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNob3dUb2FzdChtc2csICdzdWNjZXNzJyk7CiAgICAg
ICAgfQogICAgfSwKCiAgICBhc3luYyBfZG9JbXBvcnQoKSB7CiAgICAgICAgdmFyIGpzb25JbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXBvcnRKc29uRmlsZScpOwogICAgICAgIGlm
ICghanNvbklucHV0LmZpbGVzIHx8IGpzb25JbnB1dC5maWxlcy5sZW5ndGggPT09IDApIHsKICAg
ICAgICAgICAgc2hvd1RvYXN0KCdCaXR0ZSBlaW5lIEpTT04tRGF0ZWkgYXVzd8OkaGxlbicsICd3
YXJuaW5nJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAg
ICAgICAgICAgIHNob3dUb2FzdCgnSW1wb3J0IHdpcmQgdmVyYXJiZWl0ZXQuLi4nLCAnaW5mbycs
IDMwMDApOwogICAgICAgICAgICB2YXIganNvblRleHQgPSBhd2FpdCBqc29uSW5wdXQuZmlsZXNb
MF0udGV4dCgpOwogICAgICAgICAgICB2YXIgaW1wb3J0RGF0YSA9IEpTT04ucGFyc2UoanNvblRl
eHQpOwoKICAgICAgICAgICAgaWYgKCFpbXBvcnREYXRhLmFydGljbGVzIHx8ICFBcnJheS5pc0Fy
cmF5KGltcG9ydERhdGEuYXJ0aWNsZXMpKSB7CiAgICAgICAgICAgICAgICBzaG93VG9hc3QoJ1Vu
Z8O8bHRpZ2VzIEV4cG9ydGZvcm1hdDogS2VpbiBhcnRpY2xlcy1BcnJheSBnZWZ1bmRlbicsICdl
cnJvcicpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAg
ICB2YXIgYXJ0aWNsZXMgPSBpbXBvcnREYXRhLmFydGljbGVzOwogICAgICAgICAgICB2YXIgaW1w
b3J0ZWQgPSAwOwogICAgICAgICAgICB2YXIgc2tpcHBlZCA9IDA7CiAgICAgICAgICAgIHZhciBo
YXNNZWRpYSA9ICEhKGltcG9ydERhdGEubWVkaWFQYXRocyAmJiBpbXBvcnREYXRhLm1lZGlhUGF0
aHMubGVuZ3RoID4gMCk7CiAgICAgICAgICAgIHZhciBrYXRlZ29yaWVuID0gRHJpdmVGUy5jb25m
aWcua2F0ZWdvcmllbiB8fCBbXTsKCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJ0
aWNsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBkb2MgPSBhcnRpY2xlc1tp
XTsKICAgICAgICAgICAgICAgIGlmICghZG9jLmlkIHx8ICFkb2MudGl0ZWwgfHwgIWRvYy5rYXRl
Z29yaWUpIHsgc2tpcHBlZCsrOyBjb250aW51ZTsgfQoKICAgICAgICAgICAgICAgIC8vIEthdGVn
b3JpZSBnZ2YuIGFubGVnZW4KICAgICAgICAgICAgICAgIGlmICgha2F0ZWdvcmllbi5pbmNsdWRl
cyhkb2Mua2F0ZWdvcmllKSkgewogICAgICAgICAgICAgICAgICAgIGthdGVnb3JpZW4ucHVzaChk
b2Mua2F0ZWdvcmllKTsKICAgICAgICAgICAgICAgICAgICBEcml2ZUZTLmNvbmZpZy5rYXRlZ29y
aWVuID0ga2F0ZWdvcmllbjsKICAgICAgICAgICAgICAgICAgICBEcml2ZUZTLnNvcnRLYXRlZ29y
aWVuKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gRG9rdW1lbnQgc3Bl
aWNoZXJuICjDvGJlcnNjaHJlaWJlbiBvZGVyIG5ldSkKICAgICAgICAgICAgICAgIHZhciBleGlz
dGluZyA9IERyaXZlRlMuZG9jdW1lbnRzLmZpbmQoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC5pZCA9
PT0gZG9jLmlkOyB9KTsKICAgICAgICAgICAgICAgIGlmIChleGlzdGluZykgewogICAgICAgICAg
ICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXhpc3RpbmcsIGRvYyk7CiAgICAgICAgICAgICAgICAg
ICAgYXdhaXQgRHJpdmVGUy5zYXZlRG9jdW1lbnQoZXhpc3RpbmcpOwogICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBEcml2ZUZTLmRvY3VtZW50cy5wdXNoKGRvYyk7
CiAgICAgICAgICAgICAgICAgICAgYXdhaXQgRHJpdmVGUy5zYXZlRG9jdW1lbnQoZG9jKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGltcG9ydGVkKys7CiAgICAgICAgICAgIH0K
CiAgICAgICAgICAgIC8vIENvbmZpZyBzcGVpY2hlcm4gKG5ldWUgS2F0ZWdvcmllbikKICAgICAg
ICAgICAgaWYgKERyaXZlRlMubW9kZSA9PT0gJ3NlcnZlcicpIHsKICAgICAgICAgICAgICAgIGF3
YWl0IGZldGNoKCcvYXBpL3dyaXRlJywgewogICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BP
U1QnLAogICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBs
aWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyB9LAogICAgICAgICAgICAgICAgICAgIGJvZHk6
IEpTT04uc3RyaW5naWZ5KHsgcGF0aDogJ2RhdGEvY29uZmlnLmpzb24nLCBkYXRhOiBEcml2ZUZT
LmNvbmZpZyB9KQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
IGF3YWl0IERyaXZlRlMudXBkYXRlSW5kZXgoKTsKICAgICAgICAgICAgRHJpdmVQb3J0YWwucmVu
ZGVyKCk7CiAgICAgICAgICAgIHRoaXMudXBkYXRlVUkoKTsKCiAgICAgICAgICAgIHZhciBpbXBv
cnRNc2cgPSBpbXBvcnRlZCArICcgQXJ0aWtlbCBpbXBvcnRpZXJ0JyArIChza2lwcGVkID4gMCA/
ICcsICcgKyBza2lwcGVkICsgJyDDvGJlcnNwcnVuZ2VuJyA6ICcnKTsKICAgICAgICAgICAgc2hv
d1RvYXN0KGltcG9ydE1zZywgJ3N1Y2Nlc3MnKTsKICAgICAgICAgICAgaWYgKGhhc01lZGlhKSB7
CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
ICAgIHNob3dUb2FzdCgnRGllIGltcG9ydGllcnRlbiBBcnRpa2VsIGVudGhhbHRlbiBNZWRpZW4t
VmVybGlua3VuZ2VuLiBCaXR0ZSBzdGVsbGUgc2ljaGVyLCBkYXNzIGRlciBtZWRpYS8tT3JkbmVy
IGtvcGllcnQgd3VyZGUuJywgJ2luZm8nLCA2MDAwKTsKICAgICAgICAgICAgICAgIH0sIDE1MDAp
OwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAgIHNob3dUb2Fz
dCgnSW1wb3J0IGZlaGxnZXNjaGxhZ2VuOiAnICsgZS5tZXNzYWdlLCAnZXJyb3InLCA1MDAwKTsK
ICAgICAgICB9CiAgICB9LAoKICAgIGFzeW5jIHNhdmVTZXR0aW5ncygpIHsKICAgICAgICBpZiAo
IXRoaXMuZGF0YSkgcmV0dXJuOwogICAgICAgIGNvbnN0IHByZXZTZXR0aW5ncyA9IHsgLi4udGhp
cy5kYXRhLnNldHRpbmdzIH07CiAgICAgICAgdGhpcy5kYXRhLnNldHRpbmdzLnJlcXVpcmVBcHBy
b3ZhbEZvck5ldyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZSZXFOZXcnKS5jaGVja2Vk
OwogICAgICAgIHRoaXMuZGF0YS5zZXR0aW5ncy5yZXF1aXJlQXBwcm92YWxGb3JFZGl0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdlJlcUVkaXQnKS5jaGVja2VkOwogICAgICAgIHZhciBl
bDsKICAgICAgICBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZTaG93Q29udHJpYicp
OyBpZiAoZWwpIHRoaXMuZGF0YS5zZXR0aW5ncy5zaG93Q29udHJpYnV0b3JzID0gZWwuY2hlY2tl
ZDsKICAgICAgICBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb3ZTaG93UmV2aWV3SGlz
dCcpOyBpZiAoZWwpIHRoaXMuZGF0YS5zZXR0aW5ncy5zaG93UmV2aWV3SGlzdG9yeSA9IGVsLmNo
ZWNrZWQ7CiAgICAgICAgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ292S2V5d29yZE1v
ZGUnKTsgaWYgKGVsKSB7CiAgICAgICAgICAgIHRoaXMuZGF0YS5zZXR0aW5ncy5rZXl3b3JkTW9k
ZSA9IGVsLnZhbHVlOwogICAgICAgICAgICB0aGlzLmRhdGEuc2V0dGluZ3Mua2V5d29yZHNSZXF1
aXJlZCA9IChlbC52YWx1ZSA9PT0gJ3JlcXVpcmVkJyk7CiAgICAgICAgfQogICAgICAgIGVsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdlJlamVjdGlvbk1vZGUnKTsgaWYgKGVsKSB7CiAg
ICAgICAgICAgIHRoaXMuZGF0YS5zZXR0aW5ncy5yZWplY3Rpb25SZWFzb25Nb2RlID0gZWwudmFs
dWU7CiAgICAgICAgfQogICAgICAgIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvdkNy
b3NzbGlua01vZGUnKTsgaWYgKGVsKSB7CiAgICAgICAgICAgIHRoaXMuZGF0YS5zZXR0aW5ncy5j
cm9zc2xpbmtNb2RlID0gZWwudmFsdWU7CiAgICAgICAgfQogICAgICAgIGNvbnN0IG9rID0gYXdh
aXQgdGhpcy5zYXZlR292ZXJuYW5jZSgpOwogICAgICAgIGlmIChvayA9PT0gZmFsc2UpIHsKICAg
ICAgICAgICAgdGhpcy5kYXRhLnNldHRpbmdzID0gcHJldlNldHRpbmdzOwogICAgICAgICAgICB0
aGlzLnJlbmRlckFkbWluKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAg
dGhpcy5yZW5kZXJBZG1pbigpOwogICAgICAgIHNob3dUb2FzdCgnRWluc3RlbGx1bmdlbiBnZXNw
ZWljaGVydCcsICdzdWNjZXNzJyk7CiAgICB9LAoKICAgIGFzeW5jIHNhdmVHb3Zlcm5hbmNlKCkg
ewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmIChEcml2ZUZTLm1vZGUgPT09ICdzZXJ2ZXIn
KSB7CiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgnL2FwaS9nb3Zlcm5h
bmNlJywgewogICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICAg
ICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFy
c2V0PXV0Zi04JyB9LAogICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHRo
aXMuZGF0YSkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0
ID0gYXdhaXQgcmVzLmpzb24oKTsKICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHsK
ICAgICAgICAgICAgICAgICAgICBzaG93VG9hc3QoJ0ZlaGxlcjogJyArIHJlc3VsdC5lcnJvciwg
J2Vycm9yJywgNTAwMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKERyaXZlRlMubW9kZSA9PT0gJ2ZpbGVz
eXN0ZW0nICYmIERyaXZlRlMuX2RhdGFIYW5kbGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGZo
ID0gYXdhaXQgRHJpdmVGUy5fZGF0YUhhbmRsZS5nZXRGaWxlSGFuZGxlKCdnb3Zlcm5hbmNlLmpz
b24nLCB7IGNyZWF0ZTogdHJ1ZSB9KTsKICAgICAgICAgICAgICAgIGNvbnN0IHdyaXRhYmxlID0g
YXdhaXQgZmguY3JlYXRlV3JpdGFibGUoKTsKICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxl
LndyaXRlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSwgbnVsbCwgMikpOwogICAgICAgICAgICAg
ICAgYXdhaXQgd3JpdGFibGUuY2xvc2UoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlz
Ll9pc1N1cGVyVXNlciA9IHRoaXMuX2NoZWNrU3VwZXJVc2VyKCk7CiAgICAgICAgICAgIHRoaXMu
dXBkYXRlVUkoKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBjYXRjaCAoZXJy
KSB7CiAgICAgICAgICAgIHNob3dUb2FzdCgnR292ZXJuYW5jZSBzcGVpY2hlcm4gZmVobGdlc2No
bGFnZW46ICcgKyBlcnIubWVzc2FnZSwgJ2Vycm9yJywgNTAwMCk7CiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICB9CiAgICB9LAoKICAgIC8vIC0tLSBGcmVpZ2FiZXZlcmFudHdvcnRs
aWNoZSAoSW1wcmVzc3VtKSAtLS0KICAgIHNob3dJbXByaW50KCkgewogICAgICAgIGNvbnN0IGJv
ZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wcmludEJvZHknKTsKICAgICAgICBjb25z
dCBnb3YgPSB0aGlzLmRhdGE7CiAgICAgICAgY29uc3QgaXNTdGF0aWMgPSBEcml2ZUZTLm1vZGUg
PT09ICdzdGF0aWMnOwoKICAgICAgICBsZXQgaHRtbCA9ICc8cCBzdHlsZT0ibWFyZ2luLWJvdHRv
bTo0cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSk7Ij7DnGJl
cnNpY2h0IGRlciBGcmVpZ2FiZXZlcmFudHdvcnRsaWNoZW4gaW0gRC5SLkkuVi5FLiBQb3J0YWwu
PC9wPjxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2
YXIoLS10ZXh0LXNlY29uZGFyeSk7Ij5EaWVzZSBQZXJzb25lbiBwcsO8ZmVuIHVuZCBnZW5laG1p
Z2VuIEFydGlrZWwgaW4gZGVuIGpld2VpbGlnZW4gS2F0ZWdvcmllbi48L3A+JzsKCiAgICAgICAg
aWYgKGlzU3RhdGljKSB7CiAgICAgICAgICAgIC8vIExlc2Vtb2R1czogS2F0ZWdvcmllbiBtaXQg
WnVzdGFlbmRpZ2tlaXQgKG9obmUgQmVudXR6ZXItSURzKQogICAgICAgICAgICBodG1sICs9ICc8
aDMgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbi1ib3R0b206OHB4OyI+
WnVzdMOkbmRpZ2tlaXQgbmFjaCBLYXRlZ29yaWU8L2gzPic7CiAgICAgICAgICAgIHZhciBzUmV2
aWV3ZXJzID0gKGdvdiAmJiBnb3YucmV2aWV3ZXJzKSA/IGdvdi5yZXZpZXdlcnMgOiBbXTsKICAg
ICAgICAgICAgdmFyIHNLYXRzID0gKERyaXZlRlMuY29uZmlnICYmIERyaXZlRlMuY29uZmlnLmth
dGVnb3JpZW4pID8gRHJpdmVGUy5jb25maWcua2F0ZWdvcmllbiA6IFtdOwogICAgICAgICAgICB2
YXIgc0hpZGRlbiA9IChEcml2ZUZTLmNvbmZpZyAmJiBEcml2ZUZTLmNvbmZpZy5oaWRkZW5LYXRl
Z29yaWVuKSA/IERyaXZlRlMuY29uZmlnLmhpZGRlbkthdGVnb3JpZW4gOiBbXTsKICAgICAgICAg
ICAgaWYgKHNLYXRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzx0YWJs
ZSBjbGFzcz0iaW1wcmludC10YWJsZSIgaWQ9ImltcHJpbnRDYXRUYWJsZSI+PHRoZWFkPjx0cj4n
ICsKICAgICAgICAgICAgICAgICAgICAnPHRoIHN0eWxlPSJjdXJzb3I6cG9pbnRlcjsiIG9uY2xp
Y2s9IkRyaXZlR292ZXJuYW5jZS5fc29ydEltcHJpbnRUYWJsZSgwKSI+S2F0ZWdvcmllIOKGlTwv
dGg+JyArCiAgICAgICAgICAgICAgICAgICAgJzx0aCBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7IiBv
bmNsaWNrPSJEcml2ZUdvdmVybmFuY2UuX3NvcnRJbXByaW50VGFibGUoMSkiPlp1c3TDpG5kaWcg
4oaVPC90aD4nICsKICAgICAgICAgICAgICAgICc8L3RyPjwvdGhlYWQ+PHRib2R5Pic7CiAgICAg
ICAgICAgICAgICBzS2F0cy5maWx0ZXIoZnVuY3Rpb24oaykgeyByZXR1cm4gIXNIaWRkZW4uaW5j
bHVkZXMoayk7IH0pLmZvckVhY2goZnVuY3Rpb24oa2F0KSB7CiAgICAgICAgICAgICAgICAgICAg
dmFyIHp1c3RhZW5kaWcgPSBzUmV2aWV3ZXJzLmZpbHRlcihmdW5jdGlvbihyKSB7IHJldHVybiAo
ci5rYXRlZ29yaWVuIHx8IFtdKS5pbmNsdWRlcyhrYXQpOyB9KTsKICAgICAgICAgICAgICAgICAg
ICBpZiAoenVzdGFlbmRpZy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHp1
c3RhZW5kaWcuZm9yRWFjaChmdW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBodG1sICs9ICc8dHI+PHRkPjxzdHJvbmc+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoa2F0
KSArICc8L3N0cm9uZz48L3RkPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8
dGQ+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoci5kaXNwbGF5TmFtZSB8fCAnLScpICsgJzwv
dGQ+PC90cj4nOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8dHI+PHRkPjxzdHJv
bmc+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoa2F0KSArICc8L3N0cm9uZz48L3RkPicgKwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD48ZW0gc3R5bGU9ImNvbG9yOnZhcigtLXRl
eHQtbXV0ZWQpOyI+S2VpbiBSZXZpZXdlciB6dWdld2llc2VuPC9lbT48L3RkPjwvdHI+JzsKICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGh0
bWwgKz0gJzwvdGJvZHk+PC90YWJsZT4nOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgaHRtbCArPSAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpOyI+S2VpbmUg
S2F0ZWdvcmllbiB2ZXJmw7xnYmFyLjwvcD4nOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgLy8gU2VydmVyLU1vZHVzOiBWb2xsc3TDpG5kaWdlIEFuc2ljaHQgbWl0
IGFsbGVuIFJvbGxlbgoKICAgICAgICAgICAgLy8gU3VwZXJVc2VyCiAgICAgICAgICAgIGh0bWwg
Kz0gJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luLWJvdHRvbTo4
cHg7Ij5TeXN0ZW1hZG1pbmlzdHJhdGlvbjwvaDM+JzsKICAgICAgICAgICAgaHRtbCArPSAnPHRh
YmxlIGNsYXNzPSJpbXByaW50LXRhYmxlIj48dGhlYWQ+PHRyPjx0aD5OYW1lPC90aD48dGg+QmVu
dXR6ZXItSUQ8L3RoPjx0aD5Sb2xsZTwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4nOwogICAgICAg
ICAgICBpZiAoZ292ICYmIGdvdi5zdXBlclVzZXJzKSB7CiAgICAgICAgICAgICAgICBnb3Yuc3Vw
ZXJVc2Vycy5mb3JFYWNoKHN1ID0+IHsKICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8dHI+
PHRkPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKHN1LmRpc3BsYXlOYW1lIHx8IHN1LnVzZXJu
YW1lKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHRkPicgKyBEcml2ZVBv
cnRhbC5lc2NhcGVIVE1MKHN1LnVzZXJuYW1lKSArICc8L3RkPicgKwogICAgICAgICAgICAgICAg
ICAgICAgICAnPHRkIHN0eWxlPSJmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQtaGVh
ZGluZyk7Ij5TdXBlclVzZXI8L3RkPjwvdHI+JzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGh0bWwgKz0gJzwvdGJvZHk+PC90YWJsZT4nOwoKICAgICAgICAg
ICAgLy8gRmFjaGF1ZnNpY2h0CiAgICAgICAgICAgIGlmIChnb3YgJiYgZ292LmZhY2hhdWZzaWNo
dCAmJiBnb3YuZmFjaGF1ZnNpY2h0Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIGh0bWwg
Kz0gJzxoMyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nKTsgbWFyZ2luOjIwcHggMCA4
cHg7Ij5GYWNoYXVmc2ljaHQ8L2gzPic7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8dGFibGUg
Y2xhc3M9ImltcHJpbnQtdGFibGUiPjx0aGVhZD48dHI+PHRoPk5hbWU8L3RoPjx0aD5CZW51dHpl
ci1JRDwvdGg+PHRoPlp1c3TDpG5kaWdrZWl0PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5Pic7CiAg
ICAgICAgICAgICAgICBnb3YuZmFjaGF1ZnNpY2h0LmZvckVhY2goZnVuY3Rpb24oZmEpIHsKICAg
ICAgICAgICAgICAgICAgICBodG1sICs9ICc8dHI+PHRkPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVI
VE1MKGZhLmRpc3BsYXlOYW1lIHx8IGZhLnVzZXJuYW1lKSArICc8L3RkPicgKwogICAgICAgICAg
ICAgICAgICAgICAgICAnPHRkPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGZhLnVzZXJuYW1l
KSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPHRkIHN0eWxlPSJmb250LXdl
aWdodDo2MDA7IGNvbG9yOiNlNTczNzM7Ij5BbGxlIEthdGVnb3JpZW48L3RkPjwvdHI+JzsKICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaHRtbCArPSAnPC90Ym9keT48L3RhYmxl
Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFp1c3RhZW5kaWdrZWl0IG5hY2ggS2F0
ZWdvcmllIChzb3J0aWVyYmFyZSBUYWJlbGxlKQogICAgICAgICAgICBodG1sICs9ICc8aDMgc3R5
bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZyk7IG1hcmdpbjoyMHB4IDAgOHB4OyI+WnVzdMOk
bmRpZ2tlaXQgbmFjaCBLYXRlZ29yaWU8L2gzPic7CiAgICAgICAgICAgIHZhciBpbXBIaWRkZW5L
YXRzID0gRHJpdmVGUy5jb25maWcuaGlkZGVuS2F0ZWdvcmllbiB8fCBbXTsKICAgICAgICAgICAg
dmFyIHJldmlld2VycyA9IChnb3YgJiYgZ292LnJldmlld2VycykgPyBnb3YucmV2aWV3ZXJzIDog
W107CiAgICAgICAgICAgIGh0bWwgKz0gJzx0YWJsZSBjbGFzcz0iaW1wcmludC10YWJsZSIgaWQ9
ImltcHJpbnRDYXRUYWJsZSI+PHRoZWFkPjx0cj4nICsKICAgICAgICAgICAgICAgICc8dGggc3R5
bGU9ImN1cnNvcjpwb2ludGVyOyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLl9zb3J0SW1wcmlu
dFRhYmxlKDApIj5LYXRlZ29yaWUg4oaVPC90aD4nICsKICAgICAgICAgICAgICAgICc8dGggc3R5
bGU9ImN1cnNvcjpwb2ludGVyOyIgb25jbGljaz0iRHJpdmVHb3Zlcm5hbmNlLl9zb3J0SW1wcmlu
dFRhYmxlKDEpIj5adXN0w6RuZGlnIOKGlTwvdGg+JyArCiAgICAgICAgICAgICAgICAnPHRoIHN0
eWxlPSJjdXJzb3I6cG9pbnRlcjsiIG9uY2xpY2s9IkRyaXZlR292ZXJuYW5jZS5fc29ydEltcHJp
bnRUYWJsZSgyKSI+QmVudXR6ZXItSUQg4oaVPC90aD4nICsKICAgICAgICAgICAgJzwvdHI+PC90
aGVhZD48dGJvZHk+JzsKICAgICAgICAgICAgKERyaXZlRlMuY29uZmlnLmthdGVnb3JpZW4gfHwg
W10pLmZpbHRlcihmdW5jdGlvbihrYXQpIHsgcmV0dXJuICFpbXBIaWRkZW5LYXRzLmluY2x1ZGVz
KGthdCk7IH0pLmZvckVhY2goZnVuY3Rpb24oa2F0KSB7CiAgICAgICAgICAgICAgICB2YXIgenVz
dGFlbmRpZyA9IHJldmlld2Vycy5maWx0ZXIoZnVuY3Rpb24ocikgeyByZXR1cm4gKHIua2F0ZWdv
cmllbiB8fCBbXSkuaW5jbHVkZXMoa2F0KTsgfSk7CiAgICAgICAgICAgICAgICBpZiAoenVzdGFl
bmRpZy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgenVzdGFlbmRpZy5mb3JFYWNo
KGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPHRyPjx0ZD48
c3Ryb25nPicgKyBEcml2ZVBvcnRhbC5lc2NhcGVIVE1MKGthdCkgKyAnPC9zdHJvbmc+PC90ZD4n
ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+JyArIERyaXZlUG9ydGFsLmVzY2Fw
ZUhUTUwoci5kaXNwbGF5TmFtZSB8fCByLnVzZXJuYW1lKSArICc8L3RkPicgKwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0t
dGV4dC1zZWNvbmRhcnkpOyI+JyArIERyaXZlUG9ydGFsLmVzY2FwZUhUTUwoci51c2VybmFtZSkg
KyAnPC90ZD48L3RyPic7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzx0cj48dGQ+PHN0cm9uZz4nICsg
RHJpdmVQb3J0YWwuZXNjYXBlSFRNTChrYXQpICsgJzwvc3Ryb25nPjwvdGQ+JyArCiAgICAgICAg
ICAgICAgICAgICAgICAgICc8dGQgY29sc3Bhbj0iMiI+PGVtIHN0eWxlPSJjb2xvcjp2YXIoLS10
ZXh0LW11dGVkKTsiPktlaW4gUmV2aWV3ZXIgenVnZXdpZXNlbjwvZW0+PC90ZD48L3RyPic7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBodG1sICs9ICc8L3Ri
b2R5PjwvdGFibGU+JzsKICAgICAgICB9CgogICAgICAgIGh0bWwgKz0gJzxwIHN0eWxlPSJtYXJn
aW4tdG9wOjIwcHg7IGZvbnQtc2l6ZToxMXB4OyBjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsiPlN0
YW5kOiAnICsgbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2RlLURFJywge2RheTonMi1k
aWdpdCcsbW9udGg6JzItZGlnaXQnLHllYXI6J251bWVyaWMnfSkgKyAnPC9wPic7CgogICAgICAg
IGJvZHkuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW1wcmludE1vZGFsJykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICB9LAoKICAgIF9pbXBy
aW50U29ydENvbDogLTEsCiAgICBfaW1wcmludFNvcnRBc2M6IHRydWUsCgogICAgX3NvcnRJbXBy
aW50VGFibGUoY29sSWR4KSB7CiAgICAgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ltcHJpbnRDYXRUYWJsZScpOwogICAgICAgIGlmICghdGFibGUpIHJldHVybjsKICAg
ICAgICB2YXIgdGJvZHkgPSB0YWJsZS5xdWVyeVNlbGVjdG9yKCd0Ym9keScpOwogICAgICAgIGlm
ICghdGJvZHkpIHJldHVybjsKCiAgICAgICAgLy8gU29ydGllcnJpY2h0dW5nIHVtc2NoYWx0ZW4K
ICAgICAgICBpZiAodGhpcy5faW1wcmludFNvcnRDb2wgPT09IGNvbElkeCkgewogICAgICAgICAg
ICB0aGlzLl9pbXByaW50U29ydEFzYyA9ICF0aGlzLl9pbXByaW50U29ydEFzYzsKICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICB0aGlzLl9pbXByaW50U29ydENvbCA9IGNvbElkeDsKICAgICAg
ICAgICAgdGhpcy5faW1wcmludFNvcnRBc2MgPSB0cnVlOwogICAgICAgIH0KICAgICAgICB2YXIg
YXNjID0gdGhpcy5faW1wcmludFNvcnRBc2M7CgogICAgICAgIHZhciByb3dzID0gQXJyYXkuZnJv
bSh0Ym9keS5xdWVyeVNlbGVjdG9yQWxsKCd0cicpKTsKICAgICAgICByb3dzLnNvcnQoZnVuY3Rp
b24oYSwgYikgewogICAgICAgICAgICB2YXIgYVRleHQgPSAoYS5jZWxsc1tjb2xJZHhdID8gYS5j
ZWxsc1tjb2xJZHhdLnRleHRDb250ZW50LnRyaW0oKSA6ICcnKS50b0xvd2VyQ2FzZSgpOwogICAg
ICAgICAgICB2YXIgYlRleHQgPSAoYi5jZWxsc1tjb2xJZHhdID8gYi5jZWxsc1tjb2xJZHhdLnRl
eHRDb250ZW50LnRyaW0oKSA6ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICB2YXIgY21w
ID0gYVRleHQubG9jYWxlQ29tcGFyZShiVGV4dCwgJ2RlJyk7CiAgICAgICAgICAgIHJldHVybiBh
c2MgPyBjbXAgOiAtY21wOwogICAgICAgIH0pOwogICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlv
bihyb3cpIHsgdGJvZHkuYXBwZW5kQ2hpbGQocm93KTsgfSk7CiAgICB9LAoKICAgIGNsb3NlSW1w
cmludCgpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1wcmludE1vZGFsJyku
Y2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICB9Cn07CgovLyA9PT09PT09PT09PT09PT09
PT09PT0gSU5JVCA9PT09PT09PT09PT09PT09PT09PT0KCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBhc3luYyAoKSA9PiB7CiAgICAvLyBDbGljay1IYW5kbGVy
IGZ1ZXIgaW5saW5lIE1lZGllbiBpbiBkZXIgRGV0YWlsLUFuc2ljaHQKICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkb2N1bWVudERldGFpbCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg
KGUpID0+IHsKICAgICAgICAvLyBCaWxkZXIgaW4gLmRyaXZlLW1lZGlhLXRodW1ibmFpbAogICAg
ICAgIGNvbnN0IHRodW1iID0gZS50YXJnZXQuY2xvc2VzdCgnLmRyaXZlLW1lZGlhLXRodW1ibmFp
bCcpOwogICAgICAgIGlmICh0aHVtYiAmJiAhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRv
ck1vZGFsJykuY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKSkgewogICAgICAgICAgICBjb25z
dCBpbWcgPSB0aHVtYi5xdWVyeVNlbGVjdG9yKCdpbWcnKTsKICAgICAgICAgICAgaWYgKGltZykg
ewogICAgICAgICAgICAgICAgb3Blbk1lZGlhTW9kYWwoaW1nLnNyYywgJ2ltYWdlJywgaW1nLmFs
dCB8fCAnJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgICAgLy8gQmlsZGVyIGRpcmVrdCBhbmdla2xpY2t0IChpbiAuZHJpdmUtbWVkaWEtbGFy
Z2Ugb2RlciBhbHRlIEJpbGRlcikKICAgICAgICBpZiAoZS50YXJnZXQudGFnTmFtZSA9PT0gJ0lN
RycgJiYgZS50YXJnZXQuY2xvc2VzdCgnLmRldGFpbC1jb250ZW50JykpIHsKICAgICAgICAgICAg
b3Blbk1lZGlhTW9kYWwoZS50YXJnZXQuc3JjLCAnaW1hZ2UnLCBlLnRhcmdldC5hbHQgfHwgJycp
OwogICAgICAgIH0KCiAgICAgICAgLy8gU2ljaGVyaGVpdHNuZXR6OiBBbGxlIGV4dGVybmVuIExp
bmtzIGltIEFydGlrZWxpbmhhbHQgaW4gbmV1ZW0gVGFiIG9lZmZuZW4uCiAgICAgICAgLy8gVmVy
aGluZGVydCwgZGFzcyBkYXMgUG9ydGFsIGR1cmNoIExpbmtzIGF1cyBrb3BpZXJ0ZW4vYmVzdGVo
ZW5kZW4gSW5oYWx0ZW4KICAgICAgICAvLyB2ZXJsYXNzZW4gd2lyZCAoYXVjaCBiZWkgQWx0ZGF0
ZW4gZGllIG5vY2ggdGFyZ2V0PV9zZWxmIGhhYmVuKS4KICAgICAgICB2YXIgbGluayA9IGUudGFy
Z2V0LmNsb3Nlc3QoJ2FbaHJlZl0nKTsKICAgICAgICBpZiAobGluayAmJiBsaW5rLmNsb3Nlc3Qo
Jy5kZXRhaWwtY29udGVudCwgI2VkaXRvcklucHV0JykpIHsKICAgICAgICAgICAgdmFyIGhyZWYg
PSAobGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAnJykudHJpbSgpOwogICAgICAgICAgICAv
LyBJbnRlcm5lIEFua2VyICgjLi4uKSB1bmQgRFJJVkUtQ3Jvc3NsaW5rcyBhdXNuZWhtZW4KICAg
ICAgICAgICAgaWYgKCFocmVmLnN0YXJ0c1dpdGgoJyMnKSAmJiAhbGluay5jbGFzc0xpc3QuY29u
dGFpbnMoJ2RyaXZlLXhyZWYnKSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIHdp
bmRvdy5vcGVuKGhyZWYsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpOwogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgfSk7CgogICAgLy8gQ29udGV4dC1NZW51IHNjaGxpZXNzZW4g
YmVpIEtsaWNrIGF1c3NlcmhhbGIKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr
JywgKGUpID0+IHsKICAgICAgICBpZiAoIWUudGFyZ2V0LmNsb3Nlc3QoJy5tZWRpYS1jb250ZXh0
LW1lbnUnKSAmJiAhZS50YXJnZXQuY2xvc2VzdCgnLmRyaXZlLW1lZGlhJykpIHsKICAgICAgICAg
ICAgRHJpdmVFZGl0b3IuaGlkZUNvbnRleHRNZW51KCk7CiAgICAgICAgfQogICAgfSk7CgogICAg
Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KICAgIC8vIFNlc3Npb24tU2NodXR6OiBIZWFydGJlYXQsIEF1dG8tU2F2ZSwg
V2FybnVuZywgV2llZGVyYXVmbmFobWUKICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgLy8gQWt0dWVsbGUg
RWRpdG9yLURhdGVuIGZ1ZXIgQXV0by1TYXZlIHNhbW1lbG4gKG9obmUgVmFsaWRpZXJ1bmcvV29y
a2Zsb3cpCiAgICBmdW5jdGlvbiBfZ2F0aGVyRWRpdG9yU25hcHNob3QoKSB7CiAgICAgICAgaWYg
KCFEcml2ZUVkaXRvci5jdXJyZW50RG9jKSByZXR1cm4gbnVsbDsKICAgICAgICB2YXIgZWRpdG9y
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcklucHV0Jyk7CiAgICAgICAgdmFyIHRp
dGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclRpdGVsJyk7CiAgICAgICAgaWYg
KCFlZGl0b3IgJiYgIXRpdGVsKSByZXR1cm4gbnVsbDsKICAgICAgICB2YXIgc25hcCA9IEpTT04u
cGFyc2UoSlNPTi5zdHJpbmdpZnkoRHJpdmVFZGl0b3IuY3VycmVudERvYykpOwogICAgICAgIGlm
ICh0aXRlbCkgc25hcC50aXRlbCA9IHRpdGVsLnZhbHVlLnRyaW0oKTsKICAgICAgICBpZiAoZWRp
dG9yKSBzbmFwLmluaGFsdCA9IGVkaXRvci5pbm5lckhUTUw7CiAgICAgICAgdmFyIGthdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3JLYXRlZ29yaWUnKTsKICAgICAgICBpZiAoa2F0
KSBzbmFwLmthdGVnb3JpZSA9IGthdC52YWx1ZTsKICAgICAgICB2YXIgc3RhdHVzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvclN0YXR1cycpOwogICAgICAgIGlmIChzdGF0dXMpIHNu
YXAuX2xhc3RFZGl0b3JTdGF0dXMgPSBzdGF0dXMudmFsdWU7CiAgICAgICAgc25hcC5zdGF0dXMg
PSAnRW50d3VyZic7CiAgICAgICAgc25hcC5zY2hsYWd3b2VydGVyID0gRHJpdmVFZGl0b3IuX2N1
cnJlbnRLZXl3b3JkcyA/IFsuLi5Ecml2ZUVkaXRvci5fY3VycmVudEtleXdvcmRzXSA6IChzbmFw
LnNjaGxhZ3dvZXJ0ZXIgfHwgW10pOwogICAgICAgIHJldHVybiBzbmFwOwogICAgfQoKICAgIC8v
IEF1dG8tU2F2ZTogRW50d3VyZiBhdWYgZGVtIFNlcnZlciBzcGVpY2hlcm4gKyBsb2NhbFN0b3Jh
Z2UtQmFja3VwCiAgICBhc3luYyBmdW5jdGlvbiBfZW1lcmdlbmN5U2F2ZURyYWZ0KCkgewogICAg
ICAgIHZhciBzbmFwID0gX2dhdGhlckVkaXRvclNuYXBzaG90KCk7CiAgICAgICAgaWYgKCFzbmFw
KSByZXR1cm4gZmFsc2U7CiAgICAgICAgLy8gbG9jYWxTdG9yYWdlLUJhY2t1cCAoaW1tZXIsIGF1
Y2ggd2VubiBTZXJ2ZXItU2F2ZSBmZWhsc2NobGFlZ3QpCiAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RyaXZlLXJlc3VtZS1kb2MnLCBKU09OLnN0cmluZ2lm
eSh7CiAgICAgICAgICAgICAgICBkb2NJZDogc25hcC5pZCwKICAgICAgICAgICAgICAgIHRpdGVs
OiBzbmFwLnRpdGVsLAogICAgICAgICAgICAgICAga2F0ZWdvcmllOiBzbmFwLmthdGVnb3JpZSwK
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLAogICAg
ICAgICAgICAgICAgaXNOZXc6IERyaXZlRWRpdG9yLmlzTmV3CiAgICAgICAgICAgIH0pKTsKICAg
ICAgICB9IGNhdGNoKGUpIHt9CiAgICAgICAgLy8gU2VydmVyLVNhdmUgYWxzIEVudHd1cmYKICAg
ICAgICBpZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICB0cnkgewog
ICAgICAgICAgICAgICAgc25hcC5nZWFlbmRlcnQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCku
c3BsaXQoJ1QnKVswXTsKICAgICAgICAgICAgICAgIHZhciB1c2VybmFtZSA9IChEcml2ZUZTLmVu
dmlyb24gJiYgRHJpdmVGUy5lbnZpcm9uLnVzZXJuYW1lKSA/IERyaXZlRlMuZW52aXJvbi51c2Vy
bmFtZSA6ICdVbmJla2FubnQnOwogICAgICAgICAgICAgICAgc25hcC5iZWFyYmVpdGV0Vm9uID0g
dXNlcm5hbWU7CiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgRHJpdmVGUy5zYXZl
RG9jdW1lbnQoc25hcCk7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7CiAg
ICAgICAgICAgICAgICAgICAgLy8gY3VycmVudERvYyBha3R1YWxpc2llcmVuIGRhbWl0IGNsb3Nl
KCkga2VpbmVuIERhdGVudmVybHVzdCB2ZXJ1cnNhY2h0CiAgICAgICAgICAgICAgICAgICAgRHJp
dmVFZGl0b3IuY3VycmVudERvYyA9IHNuYXA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2goZSkge30KICAgICAgICB9
CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIFRpbWVvdXQtV2FybnVuZzogSW5m
by1Nb2RhbCAxIE1pbnV0ZSB2b3IgU2VydmVyLVNodXRkb3duCiAgICB2YXIgX3NlcnZlclRpbWVv
dXRNb2RhbCA9IG51bGw7CiAgICB2YXIgX3NlcnZlclRpbWVvdXRDb3VudGRvd24gPSBudWxsOwog
ICAgZnVuY3Rpb24gX3Nob3dTZXJ2ZXJUaW1lb3V0V2FybmluZyhyZW1haW5pbmdTZWMpIHsKICAg
ICAgICBpZiAoX3NlcnZlclRpbWVvdXRNb2RhbCkgcmV0dXJuOyAvLyBCZXJlaXRzIHNpY2h0YmFy
CiAgICAgICAgLy8gT3ZlcmxheQogICAgICAgIHZhciBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CiAgICAgICAgb3ZlcmxheS5pZCA9ICdzZXJ2ZXJUaW1lb3V0T3Zlcmxh
eSc7CiAgICAgICAgb3ZlcmxheS5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO2luc2V0
OjA7ei1pbmRleDoxMTAwMDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTtkaXNwbGF5OmZsZXg7
YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7YW5pbWF0aW9uOmZhZGVJ
biAuM3MgZWFzZTsnOwogICAgICAgIC8vIE1vZGFsCiAgICAgICAgdmFyIG1vZGFsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgbW9kYWwuc3R5bGUuY3NzVGV4dCA9ICdi
YWNrZ3JvdW5kOnZhcigtLWJnLWNhcmQsI2ZmZik7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6
MzJweDttYXgtd2lkdGg6NDYwcHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCAxMnB4IDQ4cHggcmdi
YSgwLDAsMCwwLjI1KTt0ZXh0LWFsaWduOmNlbnRlcjsnOwogICAgICAgIHZhciBjb3VudGRvd25T
ZWMgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKHJlbWFpbmluZ1NlYykpOwogICAgICAgIG1vZGFs
LmlubmVySFRNTCA9CiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNpemU6NDBweDttYXJn
aW4tYm90dG9tOjEycHg7Ij4mIzk4ODg7PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IHN0eWxl
PSJjb2xvcjp2YXIoLS10ZXh0LWhlYWRpbmcsIzMzMyk7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWln
aHQ6NzAwO21hcmdpbi1ib3R0b206OHB4OyI+U2VydmVyIHdpcmQgYmVlbmRldDwvZGl2PicgKwog
ICAgICAgICAgICAnPGRpdiBpZD0ic2VydmVyVGltZW91dENvdW50ZG93biIgc3R5bGU9ImNvbG9y
OiNlNzRjM2M7Zm9udC1zaXplOjI4cHg7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZw
eDsiPicgKyBfZm10Q291bnRkb3duKGNvdW50ZG93blNlYykgKyAnPC9kaXY+JyArCiAgICAgICAg
ICAgICc8ZGl2IHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LXByaW1hcnksIzU1NSk7Zm9udC1zaXpl
OjE0cHg7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MjBweDsiPicgKwogICAgICAgICAg
ICAgICAgJ0RlciBEUklWRS1TZXJ2ZXIgd2FyIGxhZW5nZXJlIFplaXQgaW5ha3RpdiB1bmQgd2ly
ZCBzaWNoIGluIEt1ZXJ6ZSBhdXRvbWF0aXNjaCBiZWVuZGVuLjxicj48YnI+JyArCiAgICAgICAg
ICAgICAgICAnPHN0cm9uZyBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFkaW5nLCMzMzMpOyI+
S2VpbmUgU29yZ2U6PC9zdHJvbmc+IE9mZmVuZSBBcnRpa2VsIHd1cmRlbiBhdXRvbWF0aXNjaCBh
bHMgPHN0cm9uZz5FbnR3dXJmPC9zdHJvbmc+IGdlc3BlaWNoZXJ0IHVuZCBnZWhlbiBuaWNodCB2
ZXJsb3Jlbi4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBzdHls
ZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1tYWluLCNmNWY1ZjUpO2JvcmRlci1yYWRpdXM6OHB4O3Bh
ZGRpbmc6MTRweCAxOHB4O21hcmdpbi1ib3R0b206MjBweDt0ZXh0LWFsaWduOmxlZnQ7Ij4nICsK
ICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LXNlY29uZGFyeSwj
Nzc3KTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJj
YXNlO21hcmdpbi1ib3R0b206NnB4OyI+U28gZ2VodHMgd2VpdGVyPC9kaXY+JyArCiAgICAgICAg
ICAgICAgICAnPGRpdiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1wcmltYXJ5LCM1NTUpO2ZvbnQt
c2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNjsiPicgKwogICAgICAgICAgICAgICAgICAgICcxLiBE
aWVzZW4gVGFiIHNjaGxpZXNzZW48YnI+JyArCiAgICAgICAgICAgICAgICAgICAgJzIuIDxzdHJv
bmc+RFJJVkVfU3RhcnQuYmF0PC9zdHJvbmc+IGVybmV1dCBhdXNmdWVocmVuPGJyPicgKwogICAg
ICAgICAgICAgICAgICAgICczLiBEZXIgZ2VzcGVpY2hlcnRlIEVudHd1cmYga2FubiBkYW5uIGZv
cnRnZXNldHp0IHdlcmRlbicgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAg
ICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEw
cHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjsiPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24g
aWQ9InNlcnZlclRpbWVvdXRSZXN1bWUiIHN0eWxlPSJwYWRkaW5nOjEwcHggMjRweDtib3JkZXIt
cmFkaXVzOjZweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOiMyN2FlNjA7Y29sb3I6I2ZmZjtjdXJz
b3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE0cHg7Ij5XZWl0ZXJhcmJlaXRl
bjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICBvdmVybGF5LmFwcGVu
ZENoaWxkKG1vZGFsKTsKICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXkp
OwogICAgICAgIF9zZXJ2ZXJUaW1lb3V0TW9kYWwgPSBvdmVybGF5OwogICAgICAgIC8vIENvdW50
ZG93biBha3R1YWxpc2llcmVuCiAgICAgICAgX3NlcnZlclRpbWVvdXRDb3VudGRvd24gPSBzZXRJ
bnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgY291bnRkb3duU2VjLS07CiAgICAgICAg
ICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZXJ2ZXJUaW1lb3V0Q291bnRk
b3duJyk7CiAgICAgICAgICAgIGlmIChlbCkgZWwudGV4dENvbnRlbnQgPSBfZm10Q291bnRkb3du
KE1hdGgubWF4KDAsIGNvdW50ZG93blNlYykpOwogICAgICAgICAgICBpZiAoY291bnRkb3duU2Vj
IDw9IDApIHsKICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoX3NlcnZlclRpbWVvdXRDb3Vu
dGRvd24pOwogICAgICAgICAgICAgICAgX3NlcnZlclRpbWVvdXRDb3VudGRvd24gPSBudWxsOwog
ICAgICAgICAgICAgICAgLy8gTW9kYWwtVGV4dCBha3R1YWxpc2llcmVuOiBTZXJ2ZXIgaXN0IGpl
dHp0IGJlZW5kZXQKICAgICAgICAgICAgICAgIGlmIChlbCkgZWwudGV4dENvbnRlbnQgPSAnU2Vy
dmVyIGJlZW5kZXQnOwogICAgICAgICAgICAgICAgdmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzZXJ2ZXJUaW1lb3V0UmVzdW1lJyk7CiAgICAgICAgICAgICAgICBpZiAoYnRuKSBi
dG4ucmVtb3ZlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCAxMDAwKTsKICAgICAgICAvLyBX
ZWl0ZXJhcmJlaXRlbi1CdXR0b246IE1vZGFsIHNjaGxpZXNzZW4gKyBIZWFydGJlYXQgc2VuZGVu
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlcnZlclRpbWVvdXRSZXN1bWUnKS5v
bmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIF9oaWRlU2VydmVyVGltZW91dFdhcm5p
bmcoKTsKICAgICAgICAgICAgZmV0Y2goJy9hcGkvaGVhcnRiZWF0JywgeyBtZXRob2Q6ICdQT1NU
JyB9KS5jYXRjaChmdW5jdGlvbigpIHt9KTsKICAgICAgICB9OwogICAgfQogICAgZnVuY3Rpb24g
X2ZtdENvdW50ZG93bihzZWMpIHsKICAgICAgICB2YXIgbSA9IE1hdGguZmxvb3Ioc2VjIC8gNjAp
OwogICAgICAgIHZhciBzID0gc2VjICUgNjA7CiAgICAgICAgcmV0dXJuIChtID4gMCA/IG0gKyAn
IE1pbi4gJyA6ICcnKSArIHMgKyAnIFNlay4nOwogICAgfQogICAgZnVuY3Rpb24gX2hpZGVTZXJ2
ZXJUaW1lb3V0V2FybmluZygpIHsKICAgICAgICBpZiAoX3NlcnZlclRpbWVvdXRDb3VudGRvd24p
IHsKICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChfc2VydmVyVGltZW91dENvdW50ZG93bik7CiAg
ICAgICAgICAgIF9zZXJ2ZXJUaW1lb3V0Q291bnRkb3duID0gbnVsbDsKICAgICAgICB9CiAgICAg
ICAgaWYgKF9zZXJ2ZXJUaW1lb3V0TW9kYWwpIHsKICAgICAgICAgICAgX3NlcnZlclRpbWVvdXRN
b2RhbC5yZW1vdmUoKTsKICAgICAgICAgICAgX3NlcnZlclRpbWVvdXRNb2RhbCA9IG51bGw7CiAg
ICAgICAgfQogICAgfQoKICAgIC8vIFRhYi1TY2hsaWVzc2VuIGVya2VubmVuOiBiZWZvcmV1bmxv
YWQgKyB2aXNpYmlsaXR5Y2hhbmdlIGtvbWJpbmllcnQuCiAgICAvLyB2aXNpYmlsaXR5Y2hhbmdl
KCdoaWRkZW4nKSBmZXVlcnQgYmVpIFRhYi1XZWNoc2VsIFVORCBUYWItU2NobGllc3NlbiwKICAg
IC8vIGFiZXIgYmVmb3JldW5sb2FkIGZldWVydCBOVVIgYmVpIFRhYi1TY2hsaWVzc2VuIC8gTmF2
aWdhdGlvbiB3ZWcuCiAgICAvLyBTdHJhdGVnaWU6IEZsYWcgaW4gYmVmb3JldW5sb2FkIHNldHpl
biwgZGFubiBpbiBwYWdlaGlkZS91bmxvYWQgZGVuIFNodXRkb3duIHNlbmRlbi4KICAgIHZhciBf
dGFiSXNDbG9zaW5nID0gZmFsc2U7CgogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9y
ZXVubG9hZCcsICgpID0+IHsKICAgICAgICBfdGFiSXNDbG9zaW5nID0gdHJ1ZTsKICAgICAgICBp
ZiAoRHJpdmVGUy5tb2RlID09PSAnc2VydmVyJykgewogICAgICAgICAgICAvLyBPZmZlbmVuIEFy
dGlrZWwgYWxzIEVudHd1cmYgaW4gbG9jYWxTdG9yYWdlIG1lcmtlbgogICAgICAgICAgICB2YXIg
c25hcCA9IF9nYXRoZXJFZGl0b3JTbmFwc2hvdCgpOwogICAgICAgICAgICBpZiAoc25hcCkgewog
ICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0
SXRlbSgnZHJpdmUtcmVzdW1lLWRvYycsIEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jSWQ6IHNuYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGVsOiBz
bmFwLnRpdGVsLAogICAgICAgICAgICAgICAgICAgICAgICBrYXRlZ29yaWU6IHNuYXAua2F0ZWdv
cmllLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09T
dHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXc6IERyaXZlRWRpdG9yLmlzTmV3
CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIC8vIEVudHd1cmYg
dmlhIHNlbmRCZWFjb24gc3BlaWNoZXJuIChmaXJlLWFuZC1mb3JnZXQsIHVlYmVybGVidCBUYWIt
Q2xvc2UpCiAgICAgICAgICAgICAgICAgICAgdmFyIHBhdGggPSAnZGF0YS8nICsgc25hcC5rYXRl
Z29yaWUgKyAnLycgKyBzbmFwLmlkICsgJy5qc29uJzsKICAgICAgICAgICAgICAgICAgICBzbmFw
LmdlYWVuZGVydCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdOwogICAg
ICAgICAgICAgICAgICAgIHZhciB1c2VybmFtZSA9IChEcml2ZUZTLmVudmlyb24gJiYgRHJpdmVG
Uy5lbnZpcm9uLnVzZXJuYW1lKSA/IERyaXZlRlMuZW52aXJvbi51c2VybmFtZSA6ICdVbmJla2Fu
bnQnOwogICAgICAgICAgICAgICAgICAgIHNuYXAuYmVhcmJlaXRldFZvbiA9IHVzZXJuYW1lOwog
ICAgICAgICAgICAgICAgICAgIC8vIFRlbXBvcmFlcmUgUHJvcGVydGllcyBlbnRmZXJuZW4KICAg
ICAgICAgICAgICAgICAgICBkZWxldGUgc25hcC5fcHJldmlvdXNJbmhhbHQ7CiAgICAgICAgICAg
ICAgICAgICAgZGVsZXRlIHNuYXAuX3ByZXZpb3VzVGl0ZWw7CiAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHNuYXAuX2xhc3RFZGl0b3JTdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgbmF2aWdh
dG9yLnNlbmRCZWFjb24oJy9hcGkvd3JpdGUnLAogICAgICAgICAgICAgICAgICAgICAgICBKU09O
LnN0cmluZ2lmeSh7IHBhdGg6IHBhdGgsIGRhdGE6IHNuYXAgfSkpOwogICAgICAgICAgICAgICAg
fSBjYXRjaChlKSB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIExvY2sgZnJlaWdlYmVu
IGZhbGxzIGFrdGl2CiAgICAgICAgICAgIGlmIChEcml2ZUVkaXRvci5fbG9ja2VkRG9jSWQpIHsK
ICAgICAgICAgICAgICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKCcvYXBpL3VubG9jaycsCiAgICAg
ICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBkb2NJZDogRHJpdmVFZGl0b3IuX2xvY2tl
ZERvY0lkIH0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBTZXJ2ZXIgaGVydW50ZXJm
YWhyZW4gLSBUYWIgd2lyZCBnZXNjaGxvc3NlbgogICAgICAgICAgICBuYXZpZ2F0b3Iuc2VuZEJl
YWNvbignL2FwaS9zaHV0ZG93bicsICd7fScpOwogICAgICAgIH0KICAgIH0pOwoKICAgIC8vIEhl
YXJ0YmVhdDogV2ViIFdvcmtlciBmdWVyIHp1dmVybGFlc3NpZ2UgSGVhcnRiZWF0cyBhdWNoIGJl
aSBCYWNrZ3JvdW5kLVRhYnMuCiAgICAvLyBCcm93c2VyIGRyb3NzZWxuIHNldEludGVydmFsIGlt
IE1haW4tVGhyZWFkIGF1ZiB+NjBzIGJlaSBCYWNrZ3JvdW5kLVRhYnMsCiAgICAvLyBhYmVyIFdl
YiBXb3JrZXIgc2luZCBkYXZvbiBOSUNIVCBiZXRyb2ZmZW4gdW5kIGxhdWZlbiBpbW1lciBtaXQg
dm9sbGVyIEZyZXF1ZW56LgogICAgLy8gU2VydmVyLVRpbWVvdXQ6IDMwIE1pbnV0ZW4gKDE4MDBz
KS4gSGVhcnRiZWF0IHdpcmQgbnVyIGdlc2VuZGV0IHdlbm4gZGVyIFRhYgogICAgLy8gc2ljaHRi
YXIgaXN0IC0gYmVpIHVuc2ljaHRiYXJlbSBUYWIgbGFldWZ0IGRlciBTZXJ2ZXItVGltZXIgd2Vp
dGVyLgogICAgLy8gMSBNaW51dGUgdm9yIEFibGF1ZjogSW5mby1Nb2RhbCBtaXQgQ291bnRkb3du
LgogICAgdmFyIGhlYXJ0YmVhdEZhaWxDb3VudCA9IDA7CiAgICB2YXIgX3RpbWVvdXRXYXJuaW5n
U2hvd24gPSBmYWxzZTsKICAgIGNvbnN0IGhlYXJ0YmVhdFdvcmtlckNvZGUgPSBgCiAgICAgICAg
c2V0SW50ZXJ2YWwoKCkgPT4geyBzZWxmLnBvc3RNZXNzYWdlKCdoZWFydGJlYXQnKTsgfSwgNTAw
MCk7CiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgnaGVhcnRiZWF0Jyk7CiAgICBgOwogICAgY29u
c3QgaGVhcnRiZWF0QmxvYiA9IG5ldyBCbG9iKFtoZWFydGJlYXRXb3JrZXJDb2RlXSwgeyB0eXBl
OiAnYXBwbGljYXRpb24vamF2YXNjcmlwdCcgfSk7CiAgICBjb25zdCBoZWFydGJlYXRXb3JrZXIg
PSBuZXcgV29ya2VyKFVSTC5jcmVhdGVPYmplY3RVUkwoaGVhcnRiZWF0QmxvYikpOwogICAgaGVh
cnRiZWF0V29ya2VyLm9ubWVzc2FnZSA9IGFzeW5jICgpID0+IHsKICAgICAgICAvLyBIZWFydGJl
YXQgbnVyIHNlbmRlbiB3ZW5uIFRhYiBzaWNodGJhciBpc3QuCiAgICAgICAgLy8gQmVpIHVuc2lj
aHRiYXJlbSBUYWI6IFNlcnZlci1UaW1lciBsYWV1ZnQgd2VpdGVyIChnZXd1ZW5zY2h0ZXMgVmVy
aGFsdGVuKS4KICAgICAgICAvLyBBdXNuYWhtZTogV2VubiBkZXIgVGFiIGdlcmFkZSBzaWNodGJh
ciB3aXJkLCBzb2ZvcnQgSGVhcnRiZWF0IHNlbmRlbgogICAgICAgIC8vIHVtIFNlcnZlci1UaW1l
ciB6dXJ1ZWNrenVzZXR6ZW4uCiAgICAgICAgaWYgKGRvY3VtZW50LmhpZGRlbikgcmV0dXJuOwog
ICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhciByZXNwID0gYXdhaXQgZmV0Y2goJy9hcGkvaGVh
cnRiZWF0JywgeyBtZXRob2Q6ICdQT1NUJyB9KTsKICAgICAgICAgICAgdmFyIGRhdGEgPSBhd2Fp
dCByZXNwLmpzb24oKTsKICAgICAgICAgICAgaGVhcnRiZWF0RmFpbENvdW50ID0gMDsKICAgICAg
ICAgICAgLy8gV2FybnVuZyB6dXJ1ZWNrc2V0emVuIHdlbm4gVGltZXIgd2llZGVyIGZyaXNjaAog
ICAgICAgICAgICBpZiAoX3RpbWVvdXRXYXJuaW5nU2hvd24gJiYgIWRhdGEud2FybmluZykgewog
ICAgICAgICAgICAgICAgX3RpbWVvdXRXYXJuaW5nU2hvd24gPSBmYWxzZTsKICAgICAgICAgICAg
ICAgIF9oaWRlU2VydmVyVGltZW91dFdhcm5pbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAg
ICAvLyAxIE1pbnV0ZSB2b3IgVGltZW91dDogTW9kYWwgKyBBdXRvLVNhdmUKICAgICAgICAgICAg
aWYgKGRhdGEucmVtYWluaW5nU2Vjb25kcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEucmVtYWluaW5n
U2Vjb25kcyA8PSA2MCAmJiAhX3RpbWVvdXRXYXJuaW5nU2hvd24pIHsKICAgICAgICAgICAgICAg
IF90aW1lb3V0V2FybmluZ1Nob3duID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHZhciBzYXZlZCA9
IGF3YWl0IF9lbWVyZ2VuY3lTYXZlRHJhZnQoKTsKICAgICAgICAgICAgICAgIF9zaG93U2VydmVy
VGltZW91dFdhcm5pbmcoZGF0YS5yZW1haW5pbmdTZWNvbmRzKTsKICAgICAgICAgICAgICAgIGlm
IChzYXZlZCkgewogICAgICAgICAgICAgICAgICAgIHNob3dUb2FzdCgnQXJ0aWtlbCBhdXRvbWF0
aXNjaCBhbHMgRW50d3VyZiBnZXNwZWljaGVydCcsICdpbmZvJywgNTAwMCk7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgaGVh
cnRiZWF0RmFpbENvdW50Kys7CiAgICAgICAgICAgIC8vIE5hY2ggNiBmZWhsZ2VzY2hsYWdlbmVu
IEhlYXJ0YmVhdHMgKDMwcyk6IFdhcm51bmcgKyBsb2NhbFN0b3JhZ2UtQmFja3VwCiAgICAgICAg
ICAgIGlmIChoZWFydGJlYXRGYWlsQ291bnQgPT09IDYgJiYgRHJpdmVFZGl0b3IuY3VycmVudERv
YykgewogICAgICAgICAgICAgICAgdmFyIHNuYXAgPSBfZ2F0aGVyRWRpdG9yU25hcHNob3QoKTsK
ICAgICAgICAgICAgICAgIGlmIChzbmFwKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RyaXZlLXJlc3VtZS1k
b2MnLCBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NJZDog
c25hcC5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGVsOiBzbmFwLnRpdGVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0ZWdvcmllOiBzbmFwLmthdGVnb3JpZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmlu
ZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXc6IERyaXZlRWRpdG9yLmlzTmV3
CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICB9IGNhdGNo
KGV4KSB7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2hvd1RvYXN0KCdTZXJ2
ZXIgbmljaHQgZXJyZWljaGJhciAtIEVudHd1cmYgbG9rYWwgZ2VzaWNoZXJ0JywgJ3dhcm5pbmcn
LCA4MDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgLy8gV2VubiBUYWIg
d2llZGVyIHNpY2h0YmFyIHdpcmQ6IHNvZm9ydCBIZWFydGJlYXQgc2VuZGVuIHVtIFNlcnZlci1U
aW1lcgogICAgLy8genVydWVja3p1c2V0emVuIChVc2VyIGlzdCB6dXJ1ZWNrIGltIERSSVZFLVRh
YikKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5j
dGlvbigpIHsKICAgICAgICBpZiAoIWRvY3VtZW50LmhpZGRlbiAmJiBEcml2ZUZTLm1vZGUgPT09
ICdzZXJ2ZXInKSB7CiAgICAgICAgICAgIF90aW1lb3V0V2FybmluZ1Nob3duID0gZmFsc2U7CiAg
ICAgICAgICAgIF9oaWRlU2VydmVyVGltZW91dFdhcm5pbmcoKTsKICAgICAgICAgICAgZmV0Y2go
Jy9hcGkvaGVhcnRiZWF0JywgeyBtZXRob2Q6ICdQT1NUJyB9KS5jYXRjaChmdW5jdGlvbigpIHt9
KTsKICAgICAgICB9CiAgICB9KTsKCiAgICAvLyBBdXRvbWF0aXNjaCB2ZXJiaW5kZW4gLSBTZXJ2
ZXItTW9kdXMgd2lyZCBiZXZvcnp1Z3QKICAgIGF3YWl0IERyaXZlRlMuY29ubmVjdCgpOwoKICAg
IC8vIFdpZWRlcmF1Zm5haG1lOiBQcnVlZmVuIG9iIGJlaW0gbGV0enRlbiBNYWwgZWluIEFydGlr
ZWwgb2ZmZW4gd2FyCiAgICB0cnkgewogICAgICAgIHZhciByZXN1bWVSYXcgPSBsb2NhbFN0b3Jh
Z2UuZ2V0SXRlbSgnZHJpdmUtcmVzdW1lLWRvYycpOwogICAgICAgIGlmIChyZXN1bWVSYXcpIHsK
ICAgICAgICAgICAgdmFyIHJlc3VtZSA9IEpTT04ucGFyc2UocmVzdW1lUmF3KTsKICAgICAgICAg
ICAgLy8gTnVyIGFuYmlldGVuIHdlbm4gd2VuaWdlciBhbHMgMjRoIGFsdAogICAgICAgICAgICB2
YXIgcmVzdW1lQWdlID0gRGF0ZS5ub3coKSAtIG5ldyBEYXRlKHJlc3VtZS50aW1lc3RhbXApLmdl
dFRpbWUoKTsKICAgICAgICAgICAgaWYgKHJlc3VtZUFnZSA8IDI0ICogNjAgKiA2MCAqIDEwMDAg
JiYgcmVzdW1lLmRvY0lkKSB7CiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRl
bSgnZHJpdmUtcmVzdW1lLWRvYycpOwogICAgICAgICAgICAgICAgLy8gS3VyeiB3YXJ0ZW4gYmlz
IFBvcnRhbCBnZXJlbmRlcnQgaXN0CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgICAgIHZhciBiYW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgICAgICBiYW5uZXIuc3R5bGUuY3NzVGV4dCA9ICdw
b3NpdGlvbjpmaXhlZDtib3R0b206MjRweDtyaWdodDoyNHB4O3otaW5kZXg6MTA1MDA7YmFja2dy
b3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7
Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkICMzNDk4ZGI7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzox
NnB4IDIwcHg7bWF4LXdpZHRoOjQwMHB4O2JveC1zaGFkb3c6MCA4cHggMzJweCByZ2JhKDAsMCww
LDAuMTUpO2FuaW1hdGlvbjpzbGlkZURvd24gLjNzIGVhc2U7JzsKICAgICAgICAgICAgICAgICAg
ICB2YXIgemVpdFRleHQgPSAnJzsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKHJlc3VtZS50aW1lc3RhbXApOwogICAgICAg
ICAgICAgICAgICAgICAgICB6ZWl0VGV4dCA9ICcgKHp1bGV0enQgJyArIGQudG9Mb2NhbGVEYXRl
U3RyaW5nKCdkZS1ERScpICsgJywgJyArIGQudG9Mb2NhbGVUaW1lU3RyaW5nKCdkZS1ERScsIHto
b3VyOicyLWRpZ2l0JyxtaW51dGU6JzItZGlnaXQnfSkgKyAnKSc7CiAgICAgICAgICAgICAgICAg
ICAgfSBjYXRjaChlKSB7fQogICAgICAgICAgICAgICAgICAgIGJhbm5lci5pbm5lckhUTUwgPQog
ICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1oZWFk
aW5nKTtmb250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo2cHg7Ij5BcnRpa2VsIGZvcnRzZXR6
ZW4/PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJjb2xvcjp2
YXIoLS10ZXh0LXByaW1hcnkpO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNjttYXJnaW4t
Ym90dG9tOjEycHg7Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEdSBoYXN0IHp1
bGV0enQgYW4gPHN0cm9uZz4nICsgKHJlc3VtZS50aXRlbCB8fCAnZWluZW0gQXJ0aWtlbCcpICsg
Jzwvc3Ryb25nPiBnZWFyYmVpdGV0JyArIHplaXRUZXh0ICsgJy4nICsKICAgICAgICAgICAgICAg
ICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBzdHlsZT0i
ZGlzcGxheTpmbGV4O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyI+JyArCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBpZD0icmVzdW1lRGlzbWlzcyIgc3R5bGU9
InBhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIo
LS1ib3JkZXItY29sb3IpO2JhY2tncm91bmQ6dmFyKC0tYmctY2FyZCk7Y29sb3I6dmFyKC0tdGV4
dC1zZWNvbmRhcnkpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxM3B4OyI+TmVpbiBkYW5rZTwv
YnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gaWQ9InJlc3Vt
ZU9wZW4iIHN0eWxlPSJwYWRkaW5nOjZweCAxNHB4O2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjpu
b25lO2JhY2tncm91bmQ6IzM0OThkYjtjb2xvcjp3aGl0ZTtjdXJzb3I6cG9pbnRlcjtmb250LXdl
aWdodDo2MDA7Zm9udC1zaXplOjEzcHg7Ij5XZWl0ZXJhcmJlaXRlbjwvYnV0dG9uPicgKwogICAg
ICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGJhbm5lcik7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jlc3VtZURpc21pc3MnKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IGJh
bm5lci5yZW1vdmUoKTsgfTsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdW1lT3BlbicpLm9uY2xpY2sgPSBhc3luYyBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgYmFubmVyLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmVzdW1lLmlzTmV3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXVlbiBB
cnRpa2VsIHdhciBub2NoIG5pY2h0IGdlc3BlaWNoZXJ0IC0genVtIEVyc3RlbGxlbiBvZWZmbmVu
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZUVkaXRvci5jcmVhdGVOZXcoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEJlc3RlaGVuZGVuIEFydGlrZWwgaW0gRWRpdG9yIG9lZmZuZW4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF3YWl0IERyaXZlUG9ydGFsLnNlbGVjdERvY3VtZW50KHJlc3VtZS5kb2NJ
ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZVBvcnRhbC5oaWdobGlnaHRJdGVt
KHJlc3VtZS5kb2NJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZUVkaXRvci5l
ZGl0KHJlc3VtZS5kb2NJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIC8vIEF1dG8tRGlzbWlzcyBuYWNoIDMwIFNl
a3VuZGVuCiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgaWYgKGJh
bm5lci5wYXJlbnROb2RlKSBiYW5uZXIucmVtb3ZlKCk7IH0sIDMwMDAwKTsKICAgICAgICAgICAg
ICAgIH0sIDE1MDApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbG9jYWxT
dG9yYWdlLnJlbW92ZUl0ZW0oJ2RyaXZlLXJlc3VtZS1kb2MnKTsKICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgIH0gY2F0Y2goZSkgewogICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdk
cml2ZS1yZXN1bWUtZG9jJyk7CiAgICB9Cn0pOwo8L3NjcmlwdD4KCjwvYm9keT4KPC9odG1sPgo=
### FILE: rollback.bat | 5232
QGVjaG8gb2ZmCnNldGxvY2FsCnNldCAiQkRJUj0lfmRwMCIKZWNoby4KZWNobyAgPT09IEQuUi5J
LlYuRS46IFJvbGxiYWNrIChvZmZsaW5lKSA9PT0KZWNobyAgU3RlbGx0IGRlbiBTdGFuZCB2b3Ig
ZGVtIGxldHp0ZW4gVXBkYXRlIHdpZWRlciBoZXIuCmVjaG8uCnBvd2Vyc2hlbGwgLU5vUHJvZmls
ZSAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtQ29tbWFuZCAiJG09JyMjIyBQUycrJ0NPREUgIyMj
JzskbWU9W0lPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJX5mMCcpOyRwPSRtZS5JbmRleE9mKCRtKTsk
bmw9JG1lLkluZGV4T2YoW2NoYXJdMTAsJHApOyRyb290PSRlbnY6QkRJUi5UcmltRW5kKCdcJyk7
JHN0b3BCYXQ9J0RSSVZFX1N0b3AuYmF0Jzskc3RhcnRCYXQ9J0RSSVZFX1N0YXJ0LmJhdCc7SW52
b2tlLUV4cHJlc3Npb24gJG1lLlN1YnN0cmluZygkbmwrMSkiCmVjaG8uCnBhdXNlCmV4aXQgL2IK
IyMjIFBTQ09ERSAjIyMKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICdTdG9wJwojIEVyd2FydGV0
IGltIFNjb3BlOiAkcm9vdCwgJHN0b3BCYXQsICRzdGFydEJhdAokX3N0b3BOYW1lICA9IGlmICgk
bnVsbCAtbmUgJHN0b3BCYXQpICB7ICRzdG9wQmF0IH0gIGVsc2UgeyAnc3RvcC5iYXQnIH0KJF9z
dGFydE5hbWUgPSBpZiAoJG51bGwgLW5lICRzdGFydEJhdCkgeyAkc3RhcnRCYXQgfSBlbHNlIHsg
J2RnbC5iYXQnIH0KCiMgQXVzc2NobHVzc2xpc3RlIChpZGVudGlzY2ggenUgdXBkYXRlLnBzMSk6
IC5iYWNrdXAgbmllIGFuZmFzc2VuLCBwbHVzIGdyb8OfZQojIENvbnRlbnQtT3JkbmVyIGF1cyAu
YmFja3VwaWdub3JlIOKAlCBkaWVzZSBibGVpYmVuIGJlaW0gUm9sbGJhY2sgdW52ZXLDpG5kZXJ0
LgokX2V4Y2wgPSBAKCcuYmFja3VwJykKJF9pZ25vcmVGaWxlID0gSm9pbi1QYXRoICRyb290ICcu
YmFja3VwaWdub3JlJwppZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkX2lnbm9yZUZpbGUpIHsK
ICAgICRfZXh0cmEgPSBAKEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkX2lnbm9yZUZpbGUgfCBG
b3JFYWNoLU9iamVjdCB7ICRfLlRyaW0oKSB9IHwKICAgICAgICAgICAgICAgIFdoZXJlLU9iamVj
dCB7ICRfIC1uZSAnJyAtYW5kIC1ub3QgJF8uU3RhcnRzV2l0aCgnIycpIH0pCiAgICAkX2V4Y2wg
PSAkX2V4Y2wgKyAkX2V4dHJhCn0KJF9leGNsID0gQCgkX2V4Y2wpICAgIyBzdHJpa3QgYWxzIEFy
cmF5ICh2ZXJoaW5kZXJ0IFNrYWxhci1FbnRwYWNrdW5nKQoKJGJrID0gSm9pbi1QYXRoICRyb290
ICcuYmFja3VwJwppZiAoLW5vdCAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0aCAkYmspKSB7CiAgICBX
cml0ZS1Ib3N0ICJLZWluIEJhY2t1cC1WZXJ6ZWljaG5pcyBnZWZ1bmRlbi4gU2ljaGVydW5nZW4g
ZW50c3RlaGVuIGF1dG9tYXRpc2NoIGJlaW0gZXJzdGVuIFVwZGF0ZS4iIC1Gb3JlZ3JvdW5kQ29s
b3IgUmVkCiAgICByZXR1cm4KfQokc25hcHMgPSBHZXQtQ2hpbGRJdGVtIC1MaXRlcmFsUGF0aCAk
YmsgLUZpbHRlciAnc25hcHNob3QtKi56aXAnIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVl
IHwgU29ydC1PYmplY3QgTmFtZSAtRGVzY2VuZGluZwppZiAoLW5vdCAkc25hcHMpIHsKICAgIFdy
aXRlLUhvc3QgIktlaW5lIFNpY2hlcnVuZ2VuIHZvcmhhbmRlbi4gU2ljaGVydW5nZW4gZW50c3Rl
aGVuIGF1dG9tYXRpc2NoIGJlaW0gZXJzdGVuIFVwZGF0ZS4iIC1Gb3JlZ3JvdW5kQ29sb3IgUmVk
CiAgICByZXR1cm4KfQoKV3JpdGUtSG9zdCAiIgpXcml0ZS1Ib3N0ICJWZXJmw7xnYmFyZSBTaWNo
ZXJ1bmdlbiAobmV1ZXN0ZSB6dWVyc3QpOiIgLUZvcmVncm91bmRDb2xvciBDeWFuCiRpID0gMApm
b3JlYWNoICgkcyBpbiAkc25hcHMpIHsKICAgICRzaXplID0gJ3swOk4xfSBNQicgLWYgKCRzLkxl
bmd0aCAvIDFNQikKICAgICR0YWcgID0gaWYgKCRpIC1lcSAwKSB7ICIgIDwtIG5ldWVzdGUiIH0g
ZWxzZSB7ICIiIH0KICAgIFdyaXRlLUhvc3QgKCIgIFt7MH1dIHsxfSAgKHsyfSl7M30iIC1mICRp
LCAkcy5OYW1lLCAkc2l6ZSwgJHRhZykKICAgICRpKysKfQpXcml0ZS1Ib3N0ICIiCiRjID0gUmVh
ZC1Ib3N0ICJOdW1tZXIgZGVyIFNpY2hlcnVuZyB3w6RobGVuIChFbnRlciA9IG5ldWVzdGUgWzBd
KSIKaWYgKCRjIC1lcSAnJykgeyAkYyA9ICcwJyB9CmlmICgkYyAtbm90bWF0Y2ggJ15cZCskJyAt
b3IgW2ludF0kYyAtZ2UgJHNuYXBzLkNvdW50KSB7CiAgICBXcml0ZS1Ib3N0ICJVbmfDvGx0aWdl
IEF1c3dhaGwuIEFiZ2Vicm9jaGVuLiIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cKICAgIHJldHVy
bgp9CiRjaG9zZW4gPSAkc25hcHNbW2ludF0kY10KJHppcCAgICA9ICRjaG9zZW4uRnVsbE5hbWUK
CiMgSW50ZWdyaXTDpHQgZGVyIFNpY2hlcnVuZyBwcsO8ZmVuLCBCRVZPUiBpcmdlbmRldHdhcyBl
cnNldHp0IHdpcmQKQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uSU8uQ29tcHJlc3Npb24u
RmlsZVN5c3RlbQp0cnkgewogICAgJHogPSBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVd
OjpPcGVuUmVhZCgkemlwKQogICAgJG51bGwgPSAkei5FbnRyaWVzLkNvdW50CiAgICAkei5EaXNw
b3NlKCkKfSBjYXRjaCB7CiAgICBXcml0ZS1Ib3N0ICJGRUhMRVI6IFNpY2hlcnVuZyBpc3QgYmVz
Y2jDpGRpZ3Qg4oCUIFJvbGxiYWNrIGFiZ2Vicm9jaGVuOiAkemlwIiAtRm9yZWdyb3VuZENvbG9y
IFJlZAogICAgcmV0dXJuCn0KCldyaXRlLUhvc3QgIiIKJHluID0gUmVhZC1Ib3N0ICJTdGFuZCAn
JCgkY2hvc2VuLk5hbWUpJyB3aWVkZXJoZXJzdGVsbGVuPyBEZXIgYWt0dWVsbGUgU3RhbmQgd2ly
ZCBlcnNldHp0ISBbai9OXSIKaWYgKCR5biAtbm90aW4gJ2onLCdKJywneScsJ1knKSB7IFdyaXRl
LUhvc3QgIkFiZ2Vicm9jaGVuLiI7IHJldHVybiB9CgojIFNlcnZlciBzdG9wcGVuCldyaXRlLUhv
c3QgIlN0b3BwZSBTZXJ2ZXIgLi4uIgppZiAoJF9zdG9wTmFtZSAtbmUgJycpIHsKICAgICRzcCA9
IEpvaW4tUGF0aCAkcm9vdCAkX3N0b3BOYW1lCiAgICBpZiAoVGVzdC1QYXRoIC1MaXRlcmFsUGF0
aCAkc3ApIHsgJiBjbWQgL2MgImAiJHNwYCIiOyBTdGFydC1TbGVlcCAtU2Vjb25kcyAyIH0KICAg
IGVsc2UgeyBXcml0ZS1Ib3N0ICIgIChTdG9wLVNrcmlwdCAnJF9zdG9wTmFtZScgbmljaHQgZ2Vm
dW5kZW4g4oCUIMO8YmVyc3BydW5nZW4pIiAtRm9yZWdyb3VuZENvbG9yIERhcmtZZWxsb3cgfQp9
IGVsc2UgeyBXcml0ZS1Ib3N0ICIgIChLZWluIFN0b3AtU2tyaXB0IGtvbmZpZ3VyaWVydCDigJQg
w7xiZXJzcHJ1bmdlbikiIC1Gb3JlZ3JvdW5kQ29sb3IgRGFya1llbGxvdyB9CgojIEFrdHVlbGxl
biBTdGFuZCBiZWlzZWl0ZSB2ZXJzY2hpZWJlbiAoU2ljaGVyaGVpdHNuZXR6LCBrZWluIERhdGVu
dmVybHVzdCkKJGFzaWRlID0gSm9pbi1QYXRoICRiayAoIl92b3Itcm9sbGJhY2stIiArIChHZXQt
RGF0ZSAtRm9ybWF0ICd5eXl5TU1kZC1ISG1tc3MnKSkKTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVj
dG9yeSAtUGF0aCAkYXNpZGUgLUZvcmNlIHwgT3V0LU51bGwKR2V0LUNoaWxkSXRlbSAtTGl0ZXJh
bFBhdGggJHJvb3QgLUZvcmNlIHwgV2hlcmUtT2JqZWN0IHsgJF9leGNsIC1ub3Rjb250YWlucyAk
Xy5OYW1lIH0gfCBGb3JFYWNoLU9iamVjdCB7CiAgICBNb3ZlLUl0ZW0gLUxpdGVyYWxQYXRoICRf
LkZ1bGxOYW1lIC1EZXN0aW5hdGlvbiAoSm9pbi1QYXRoICRhc2lkZSAkXy5OYW1lKSAtRm9yY2UK
fQoKIyBTaWNoZXJ1bmcgd2llZGVyaGVyc3RlbGxlbgp0cnkgewogICAgRXhwYW5kLUFyY2hpdmUg
LUxpdGVyYWxQYXRoICR6aXAgLURlc3RpbmF0aW9uUGF0aCAkcm9vdCAtRm9yY2UKICAgIFdyaXRl
LUhvc3QgIlN0YW5kIHdpZWRlcmhlcmdlc3RlbGx0OiAkKCRjaG9zZW4uTmFtZSkiIC1Gb3JlZ3Jv
dW5kQ29sb3IgR3JlZW4KfSBjYXRjaCB7CiAgICBXcml0ZS1Ib3N0ICJGRUhMRVIgYmVpbSBXaWVk
ZXJoZXJzdGVsbGVuIOKAlCBtYWNoZSDDhG5kZXJ1bmcgcsO8Y2tnw6RuZ2lnIC4uLiIgLUZvcmVn
cm91bmRDb2xvciBSZWQKICAgIEdldC1DaGlsZEl0ZW0gLUxpdGVyYWxQYXRoICRyb290IC1Gb3Jj
ZSB8IFdoZXJlLU9iamVjdCB7ICRfZXhjbCAtbm90Y29udGFpbnMgJF8uTmFtZSB9IHwKICAgICAg
ICBSZW1vdmUtSXRlbSAtUmVjdXJzZSAtRm9yY2UgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGlu
dWUKICAgIEdldC1DaGlsZEl0ZW0gLUxpdGVyYWxQYXRoICRhc2lkZSAtRm9yY2UgfCBGb3JFYWNo
LU9iamVjdCB7CiAgICAgICAgTW92ZS1JdGVtIC1MaXRlcmFsUGF0aCAkXy5GdWxsTmFtZSAtRGVz
dGluYXRpb24gKEpvaW4tUGF0aCAkcm9vdCAkXy5OYW1lKSAtRm9yY2UKICAgIH0KICAgIFdyaXRl
LUhvc3QgIlZvcmhlcmlnZXIgWnVzdGFuZCB3aWVkZXJoZXJnZXN0ZWxsdCDigJQga2VpbiBEYXRl
bnZlcmx1c3QuIiAtRm9yZWdyb3VuZENvbG9yIFllbGxvdwogICAgcmV0dXJuCn0KCiMgQmVpc2Vp
dGUtT3JkbmVyIGF1ZnLDpHVtZW46IG51ciBkaWUgbGV0enRlbiAyIGJlaGFsdGVuCkdldC1DaGls
ZEl0ZW0gLUxpdGVyYWxQYXRoICRiayAtRGlyZWN0b3J5IC1GaWx0ZXIgJ192b3Itcm9sbGJhY2st
KicgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUgfAogICAgU29ydC1PYmplY3QgTmFtZSAt
RGVzY2VuZGluZyB8IFNlbGVjdC1PYmplY3QgLVNraXAgMiB8CiAgICBSZW1vdmUtSXRlbSAtUmVj
dXJzZSAtRm9yY2UgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUKCiMgU2VydmVyIHN0YXJ0
ZW4KJHN0cCA9IEpvaW4tUGF0aCAkcm9vdCAkX3N0YXJ0TmFtZQppZiAoVGVzdC1QYXRoIC1MaXRl
cmFsUGF0aCAkc3RwKSB7CiAgICBTdGFydC1Qcm9jZXNzIC1GaWxlUGF0aCAnY21kLmV4ZScgLUFy
Z3VtZW50TGlzdCAiL2MgYCIkc3RwYCIiIC1XaW5kb3dTdHlsZSBIaWRkZW4KICAgIFdyaXRlLUhv
c3QgIlNlcnZlciBnZXN0YXJ0ZXQuIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCn0gZWxzZSB7CiAg
ICBXcml0ZS1Ib3N0ICJTdGFydC1Ta3JpcHQgJyRfc3RhcnROYW1lJyBuaWNodCBnZWZ1bmRlbiDi
gJQgYml0dGUgU2VydmVyIG1hbnVlbGwgc3RhcnRlbi4iIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93
Cn0KCldyaXRlLUhvc3QgIiIKV3JpdGUtSG9zdCAiPT09IFJvbGxiYWNrIGFiZ2VzY2hsb3NzZW4g
PT09IiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCldyaXRlLUhvc3QgIiAgICBXaWVkZXJoZXJnZXN0
ZWxsdDogJCgkY2hvc2VuLk5hbWUpIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4K
### FILE: server.ps1 | 52721
IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQojIEQuUi5JLlYuRS4gUG9ydGFsIHYxLjAgLSBMb2thbGVy
IEhUVFAtU2VydmVyCiMgUG93ZXJTaGVsbC1iYXNpZXJ0IC0gS2VpbmUgSW5zdGFsbGF0aW9uIG5v
ZXRpZwojIFVudGVyc3R1ZXR6dDogU3RhdGlzY2hlIERhdGVpZW4gKyBBUEkgKExlc2VuLCBTY2hy
ZWliZW4sIExvZXNjaGVuLCBVcGxvYWQpCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIwojIFNpY2hl
cmhlaXRzYXJjaGl0ZWt0dXI6CiMgICAtIEF1dGhlbnRpZml6aWVydW5nOiAgJGVudjpVU0VSTkFN
RSBhdXMgV2luZG93cy1TZXNzaW9uIChuaWNodCBjbGllbnRzZWl0aWcgbWFuaXB1bGllcmJhcikK
IyAgIC0gQXV0b3Jpc2llcnVuZzogICAgICBTZXJ2ZXJzZWl0aWcgdmlhIFRlc3QtU3VwZXJVc2Vy
IC8gVGVzdC1SZXZpZXdlciB2b3IgamVkZXIgQWt0aW9uCiMgICAtIFBmYWR2YWxpZGllcnVuZzog
ICAgUmVzb2x2ZS1TYWZlUGF0aCgpIGdlZ2VuIFBhdGgtVHJhdmVyc2FsIChhbGxlIEFQSS1QZmFk
ZSkKIyAgIC0gR292ZXJuYW5jZS1TY2h1dHo6ICBnb3Zlcm5hbmNlLmpzb24gQUVTLTI1Ni12ZXJz
Y2hsdWVzc2VsdCwgbnVyIHVlYmVyIC9hcGkvZ292ZXJuYW5jZSBhZW5kZXJiYXIKIyAgIC0gRGF0
ZWlzY2h1dHo6ICAgICAgICBSZWFkLU9ubHktQXR0cmlidXRlIGF1ZiBhbGxlbiBKU09OLURhdGVp
ZW4gKGF1ZmdlaG9iZW4gbnVyIHdhZWhyZW5kIFNjaHJlaWJ2b3JnYW5nKQojICAgLSBOZXR6d2Vy
azogICAgICAgICAgIE51ciBsb2NhbGhvc3Q6e1BvcnR9LCBrZWluIGV4dGVybmVyIFp1Z3JpZmYg
bW9lZ2xpY2gKIyAgIC0gTG9ja2luZzogICAgICAgICAgICBQZXNzaW1pc3RpYyBMb2NraW5nIG1p
dCAxMC1NaW4tVGltZW91dCBnZWdlbiBnbGVpY2h6ZWl0aWdlIEJlYXJiZWl0dW5nCiMKIyBBUEkt
RW5kcHVua3RlIHVuZCBCZXJlY2h0aWd1bmdlbjoKIyAgIEdFVCAgL2FwaS9lbnZpcm9uICAgICAg
LSBPZWZmZW50bGljaCAoZ2lidCBXaW5kb3dzLUJlbnV0emVyaW5mbyB6dXJ1ZWNrKQojICAgR0VU
ICAvYXBpL3NjYW4gICAgICAgICAtIE9lZmZlbnRsaWNoIChsaXN0ZXQgRG9rdW1lbnRlKQojICAg
R0VUICAvYXBpL2dvdmVybmFuY2UgICAtIE9lZmZlbnRsaWNoIChHb3Zlcm5hbmNlLURhdGVuICsg
YWt0dWVsbGUgUm9sbGUpCiMgICBHRVQgIC9hcGkvbG9ja3MgICAgICAgIC0gT2VmZmVudGxpY2gg
KGFrdGl2ZSBTcGVycmVuKQojICAgUE9TVCAvYXBpL3dyaXRlICAgICAgICAtIEF1dGhlbnRpZml6
aWVydDsgU3RhdHVzICJGcmVpZ2VnZWJlbiIvIkFiZ2VsZWhudCIgbnVyIGZ1ZXIgUmV2aWV3ZXIv
U3VwZXJVc2VyCiMgICBQT1NUIC9hcGkvZGVsZXRlICAgICAgIC0gQXV0aGVudGlmaXppZXJ0OyBl
cmZvcmRlcnQgTlctS2VubnVuZy1CZXN0YWV0aWd1bmcsIEF1ZGl0LUxvZwojICAgUE9TVCAvYXBp
L3VwbG9hZCAgICAgICAtIEF1dGhlbnRpZml6aWVydDsgUGZhZHZhbGlkaWVydW5nIHZpYSBSZXNv
bHZlLVNhZmVQYXRoCiMgICBQT1NUIC9hcGkvZ292ZXJuYW5jZSAgIC0gTnVyIFN1cGVyVXNlcgoj
ICAgUE9TVCAvYXBpL2xvY2sgICAgICAgICAtIEF1dGhlbnRpZml6aWVydDsgUGVzc2ltaXN0aWMg
TG9ja2luZwojICAgUE9TVCAvYXBpL3VubG9jayAgICAgICAtIExvY2stSW5oYWJlciBvZGVyIFN1
cGVyVXNlcgojICAgUE9TVCAvYXBpL2hlYXJ0YmVhdCAgICAtIE9lZmZlbnRsaWNoIChCcm93c2Vy
LUxlYmVuc3plaWNoZW4pCiMgICBQT1NUIC9hcGkvc2h1dGRvd24gICAgIC0gT2VmZmVudGxpY2gg
KGJlZW5kZXQgU2VydmVyIGJlaSBUYWItU2NobGllc3N1bmcpCgpwYXJhbSgKICAgIFtpbnRdJFBv
cnQgPSA4MDgwLAogICAgW3N0cmluZ10kUm9vdFBhdGggPSAnJwopCgojIFJvb3QtVmVyemVpY2hu
aXM6IEV4cGxpeml0ZXIgUGFyYW1ldGVyIGhhdCBWb3JyYW5nIChmdWVyIGxva2FsZSBLb3BpZSB2
b20gTmV0emxhdWZ3ZXJrKQokUm9vdCA9IGlmICgkUm9vdFBhdGggLWFuZCAoVGVzdC1QYXRoICRS
b290UGF0aCkpIHsgJFJvb3RQYXRoIH0gZWxzZSB7ICRQU1NjcmlwdFJvb3QgfQokc2NyaXB0OkNv
cnNPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDokUG9ydCIKCiMgTUlNRS1UeXBlcwokTWltZVR5
cGVzID0gQHsKICAgICcuaHRtbCcgPSAndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JwogICAgJy5j
c3MnICA9ICd0ZXh0L2NzczsgY2hhcnNldD11dGYtOCcKICAgICcuanMnICAgPSAnYXBwbGljYXRp
b24vamF2YXNjcmlwdDsgY2hhcnNldD11dGYtOCcKICAgICcuanNvbicgPSAnYXBwbGljYXRpb24v
anNvbjsgY2hhcnNldD11dGYtOCcKICAgICcucG5nJyAgPSAnaW1hZ2UvcG5nJwogICAgJy5qcGcn
ICA9ICdpbWFnZS9qcGVnJwogICAgJy5qcGVnJyA9ICdpbWFnZS9qcGVnJwogICAgJy5naWYnICA9
ICdpbWFnZS9naWYnCiAgICAnLnN2ZycgID0gJ2ltYWdlL3N2Zyt4bWwnCiAgICAnLmljbycgID0g
J2ltYWdlL3gtaWNvbicKICAgICcucGRmJyAgPSAnYXBwbGljYXRpb24vcGRmJwogICAgJy5tcDQn
ICA9ICd2aWRlby9tcDQnCiAgICAnLm1wMycgID0gJ2F1ZGlvL21wZWcnCiAgICAnLndlYm0nID0g
J3ZpZGVvL3dlYm0nCiAgICAnLm9nZycgID0gJ2F1ZGlvL29nZycKICAgICcud29mZicgPSAnZm9u
dC93b2ZmJwogICAgJy53b2ZmMic9ICdmb250L3dvZmYyJwogICAgJy5kb2N4JyA9ICdhcHBsaWNh
dGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5k
b2N1bWVudCcKICAgICcueGxzeCcgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9m
ZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnCiAgICAnLnBwdHgnID0gJ2FwcGxpY2F0
aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVz
ZW50YXRpb24nCiAgICAnLndhdicgID0gJ2F1ZGlvL3dhdicKICAgICcud2VicCcgPSAnaW1hZ2Uv
d2VicCcKfQoKIyBIaWxmc2Z1bmt0aW9uOiBKU09OLUFudHdvcnQgc2VuZGVuCmZ1bmN0aW9uIEFk
ZC1TZWN1cml0eUhlYWRlcnMoJFJlc3BvbnNlKSB7CiAgICAkUmVzcG9uc2UuSGVhZGVycy5BZGQo
IkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICRzY3JpcHQ6Q29yc09yaWdpbikKICAgICRS
ZXNwb25zZS5IZWFkZXJzLkFkZCgiWC1Db250ZW50LVR5cGUtT3B0aW9ucyIsICJub3NuaWZmIikK
ICAgICMgU0FNRU9SSUdJTiBzdGF0dCBERU5ZOiBFcmxhdWJ0IGlmcmFtZS1FaW5iZXR0dW5nIHZv
biBQREZzIGlubmVyaGFsYiBkZXIgZWlnZW5lbiBTZWl0ZQogICAgJFJlc3BvbnNlLkhlYWRlcnMu
QWRkKCJYLUZyYW1lLU9wdGlvbnMiLCAiU0FNRU9SSUdJTiIpCn0KCmZ1bmN0aW9uIFNlbmQtSnNv
bigkUmVzcG9uc2UsICREYXRhLCAkU3RhdHVzQ29kZSA9IDIwMCkgewogICAgdHJ5IHsKICAgICAg
ICAkSnNvbiA9ICREYXRhIHwgQ29udmVydFRvLUpzb24gLURlcHRoIDEwIC1Db21wcmVzcwogICAg
ICAgICRCeXRlcyA9IFtUZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcygkSnNvbikKICAgICAg
ICAkUmVzcG9uc2UuU3RhdHVzQ29kZSA9ICRTdGF0dXNDb2RlCiAgICAgICAgJFJlc3BvbnNlLkNv
bnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnCiAgICAgICAgQWRk
LVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UKICAgICAgICAkUmVzcG9uc2UuQ29udGVudExlbmd0
aDY0ID0gJEJ5dGVzLkxlbmd0aAogICAgICAgICRSZXNwb25zZS5PdXRwdXRTdHJlYW0uV3JpdGUo
JEJ5dGVzLCAwLCAkQnl0ZXMuTGVuZ3RoKQogICAgICAgICRSZXNwb25zZS5PdXRwdXRTdHJlYW0u
Rmx1c2goKQogICAgfSBjYXRjaCB7CiAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFNlbmQtSnNv
bjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICB9Cn0K
CiMgSGlsZnNmdW5rdGlvbjogUmVxdWVzdC1Cb2R5IGxlc2VuIChpbW1lciBVVEYtOCwgZGEgQnJv
d3NlciBVVEYtOCBzZW5kZXQpCiMgTGltaXQ6IDEwIE1CIGZ1ZXIgSlNPTi1SZXF1ZXN0cyAodmVy
aGluZGVydCBTcGVpY2hlcmVyc2Nob2VwZnVuZyBkdXJjaCB1ZWJlcmdyb3NzZSBQYXlsb2FkcykK
JHNjcmlwdDpNYXhCb2R5Qnl0ZXMgPSAxMCAqIDEwMjQgKiAxMDI0CgpmdW5jdGlvbiBSZWFkLUJv
ZHkoJFJlcXVlc3QpIHsKICAgIGlmICgkUmVxdWVzdC5Db250ZW50TGVuZ3RoNjQgLWd0ICRzY3Jp
cHQ6TWF4Qm9keUJ5dGVzKSB7CiAgICAgICAgdGhyb3cgIlJlcXVlc3QtQm9keSB6dSBncm9zcyAo
bWF4LiAkKFtNYXRoXTo6Um91bmQoJHNjcmlwdDpNYXhCb2R5Qnl0ZXMgLyAxMDI0IC8gMTAyNCkp
IE1CKSIKICAgIH0KICAgICRSZWFkZXIgPSBOZXctT2JqZWN0IFN5c3RlbS5JTy5TdHJlYW1SZWFk
ZXIoJFJlcXVlc3QuSW5wdXRTdHJlYW0sIFtUZXh0LkVuY29kaW5nXTo6VVRGOCkKICAgICRCb2R5
ID0gJFJlYWRlci5SZWFkVG9FbmQoKQogICAgJFJlYWRlci5DbG9zZSgpCiAgICByZXR1cm4gJEJv
ZHkKfQoKIyBQZmFkdmFsaWRpZXJ1bmc6IFZlcmhpbmRlcnQgUGF0aC1UcmF2ZXJzYWwtQW5ncmlm
ZmUgKC4uLyBvZGVyIGFic29sdXRlIFBmYWRlKS4KIyBHZXRGdWxsUGF0aCgpIGthbm9uaXNpZXJ0
IGRlbiBQZmFkIChsb2VzdCAuLi8gYXVmKSwgU3RhcnRzV2l0aCgpIHBydWVmdCBDb250YWlubWVu
dC4KIyBHaWJ0ICRudWxsIHp1cnVlY2sgYmVpIHVuZ3VlbHRpZ2VtIFBmYWQgLSBBdWZydWZlciBt
dXNzIGRhcmF1ZiBwcnVlZmVuLgojIFdpcmQgaW4gL2FwaS93cml0ZSwgL2FwaS9kZWxldGUsIC9h
cGkvdXBsb2FkIHZvciBqZWRlbSBEYXRlaXp1Z3JpZmYgYXVmZ2VydWZlbi4KZnVuY3Rpb24gUmVz
b2x2ZS1TYWZlUGF0aCgkUmVsUGF0aCkgewogICAgJEZ1bGwgPSBbSU8uUGF0aF06OkdldEZ1bGxQ
YXRoKChKb2luLVBhdGggJFJvb3QgJFJlbFBhdGgpKQogICAgaWYgKC1ub3QgJEZ1bGwuU3RhcnRz
V2l0aCgkUm9vdCkpIHsgcmV0dXJuICRudWxsIH0KICAgIHJldHVybiAkRnVsbAp9CgojIEhpbGZz
ZnVua3Rpb246IFNjaHJlaWJzY2h1dHogYXVmaGViZW4gdm9yIFNjaHJlaWJ2b3JnYW5nCmZ1bmN0
aW9uIFVucHJvdGVjdC1GaWxlKCRQYXRoKSB7CiAgICBpZiAoVGVzdC1QYXRoICRQYXRoKSB7CiAg
ICAgICAgJGl0ZW0gPSBHZXQtSXRlbSAkUGF0aCAtRm9yY2UKICAgICAgICBpZiAoJGl0ZW0uQXR0
cmlidXRlcyAtYmFuZCBbSU8uRmlsZUF0dHJpYnV0ZXNdOjpSZWFkT25seSkgewogICAgICAgICAg
ICAkaXRlbS5BdHRyaWJ1dGVzID0gJGl0ZW0uQXR0cmlidXRlcyAtYnhvciBbSU8uRmlsZUF0dHJp
YnV0ZXNdOjpSZWFkT25seQogICAgICAgIH0KICAgIH0KfQoKIyBIaWxmc2Z1bmt0aW9uOiBTY2hy
ZWlic2NodXR6IHdpZWRlciBzZXR6ZW4KZnVuY3Rpb24gUHJvdGVjdC1GaWxlKCRQYXRoKSB7CiAg
ICBpZiAoVGVzdC1QYXRoICRQYXRoKSB7CiAgICAgICAgJGl0ZW0gPSBHZXQtSXRlbSAkUGF0aCAt
Rm9yY2UKICAgICAgICAkaXRlbS5BdHRyaWJ1dGVzID0gJGl0ZW0uQXR0cmlidXRlcyAtYm9yIFtJ
Ty5GaWxlQXR0cmlidXRlc106OlJlYWRPbmx5CiAgICB9Cn0KCiMgLS0tLSBBRVMtMjU2LVZlcnNj
aGx1ZXNzZWx1bmcgZnVlciBnb3Zlcm5hbmNlLmpzb24gLS0tLQojIFNjaHV0emtvbnplcHQ6IGdv
dmVybmFuY2UuanNvbiBlbnRoYWVsdCBSb2xsZW56dXdlaXN1bmdlbiAoU3VwZXJVc2VyLCBSZXZp
ZXdlcikuCiMgRGllIERhdGVpIHdpcmQgYmVpbSBlcnN0ZW4gU2VydmVyLVN0YXJ0IGF1dG9tYXRp
c2NoIHZlcnNjaGx1ZXNzZWx0LgojIFNjaHV0enppZWw6IFZlcmhpbmRlcm4sIGRhc3MgUm9sbGVu
c3RydWt0dXJlbiBpbSBEYXRlaXN5c3RlbSBpbSBLbGFydGV4dCBlaW5zZWhiYXIgc2luZC4KIyBF
aW5zY2hyYWVua3VuZzogRGVyIFNjaGx1ZXNzZWwgbGllZ3QgaW0gUXVlbGxjb2RlIC0gZGVyIFNj
aHV0eiByaWNodGV0IHNpY2ggZ2VnZW4KIyBvcHBvcnR1bmlzdGlzY2hlcyBMZXNlbiwgbmljaHQg
Z2VnZW4gQW5ncmVpZmVyIG1pdCBadWdyaWZmIGF1ZiBkZW4gUXVlbGxjb2RlLgojIEFsZ29yaXRo
bXVzOiBBRVMtMjU2LUNCQyBtaXQgUEtDUzctUGFkZGluZywgenVmYWVsbGlnZXIgSVYgcHJvIFZl
cnNjaGx1ZXNzZWx1bmcuCiMgRm9ybWF0OiAiRFJJVkUtRU5DOiIgKyBCYXNlNjQoSVZbMTYgQnl0
ZXNdICsgQ2lwaGVydGV4dCkKIyBTY2hsdWVzc2VsICgzMiBCeXRlcyA9IEFFUy0yNTYpLiBJZGVu
dGlzY2ggaW4gc2VydmVyLnBzMSB1bmQgc2VydmVyLnB5Lgokc2NyaXB0OkdvdkFlc0tleSA9IFtD
b252ZXJ0XTo6RnJvbUJhc2U2NFN0cmluZygiUkZKSlZrVXRkak11TmkxSGIzWmxjbTVoYm1ObExV
dGxlUzB5TURJMklTRT0iKQokc2NyaXB0OkdvdkVuY1ByZWZpeCA9ICJEUklWRS1FTkM6IgoKZnVu
Y3Rpb24gUHJvdGVjdC1Hb3Zlcm5hbmNlRGF0YShbc3RyaW5nXSRKc29uVGV4dCkgewogICAgJEFl
cyA9IFtTZWN1cml0eS5DcnlwdG9ncmFwaHkuQWVzXTo6Q3JlYXRlKCkKICAgICRBZXMuS2V5ID0g
JHNjcmlwdDpHb3ZBZXNLZXkKICAgICRBZXMuR2VuZXJhdGVJVigpCiAgICAkQWVzLk1vZGUgPSBb
U2VjdXJpdHkuQ3J5cHRvZ3JhcGh5LkNpcGhlck1vZGVdOjpDQkMKICAgICRBZXMuUGFkZGluZyA9
IFtTZWN1cml0eS5DcnlwdG9ncmFwaHkuUGFkZGluZ01vZGVdOjpQS0NTNwogICAgJEVuYyA9ICRB
ZXMuQ3JlYXRlRW5jcnlwdG9yKCkKICAgICRQbGFpbiA9IFtUZXh0LkVuY29kaW5nXTo6VVRGOC5H
ZXRCeXRlcygkSnNvblRleHQpCiAgICAkQ2lwaGVyID0gJEVuYy5UcmFuc2Zvcm1GaW5hbEJsb2Nr
KCRQbGFpbiwgMCwgJFBsYWluLkxlbmd0aCkKICAgICRDb21iaW5lZCA9IE5ldy1PYmplY3QgYnl0
ZVtdICgkQWVzLklWLkxlbmd0aCArICRDaXBoZXIuTGVuZ3RoKQogICAgW0FycmF5XTo6Q29weSgk
QWVzLklWLCAwLCAkQ29tYmluZWQsIDAsICRBZXMuSVYuTGVuZ3RoKQogICAgW0FycmF5XTo6Q29w
eSgkQ2lwaGVyLCAwLCAkQ29tYmluZWQsICRBZXMuSVYuTGVuZ3RoLCAkQ2lwaGVyLkxlbmd0aCkK
ICAgICRBZXMuRGlzcG9zZSgpCiAgICByZXR1cm4gJHNjcmlwdDpHb3ZFbmNQcmVmaXggKyBbQ29u
dmVydF06OlRvQmFzZTY0U3RyaW5nKCRDb21iaW5lZCkKfQoKZnVuY3Rpb24gVW5wcm90ZWN0LUdv
dmVybmFuY2VEYXRhKFtzdHJpbmddJEVuY1RleHQpIHsKICAgICRCNjQgPSAkRW5jVGV4dC5TdWJz
dHJpbmcoJHNjcmlwdDpHb3ZFbmNQcmVmaXguTGVuZ3RoKQogICAgJENvbWJpbmVkID0gW0NvbnZl
cnRdOjpGcm9tQmFzZTY0U3RyaW5nKCRCNjQpCiAgICAkSVYgPSAkQ29tYmluZWRbMC4uMTVdCiAg
ICAkQ2lwaGVyID0gJENvbWJpbmVkWzE2Li4oJENvbWJpbmVkLkxlbmd0aCAtIDEpXQogICAgJEFl
cyA9IFtTZWN1cml0eS5DcnlwdG9ncmFwaHkuQWVzXTo6Q3JlYXRlKCkKICAgICRBZXMuS2V5ID0g
JHNjcmlwdDpHb3ZBZXNLZXkKICAgICRBZXMuSVYgPSAkSVYKICAgICRBZXMuTW9kZSA9IFtTZWN1
cml0eS5DcnlwdG9ncmFwaHkuQ2lwaGVyTW9kZV06OkNCQwogICAgJEFlcy5QYWRkaW5nID0gW1Nl
Y3VyaXR5LkNyeXB0b2dyYXBoeS5QYWRkaW5nTW9kZV06OlBLQ1M3CiAgICAkRGVjID0gJEFlcy5D
cmVhdGVEZWNyeXB0b3IoKQogICAgJFBsYWluID0gJERlYy5UcmFuc2Zvcm1GaW5hbEJsb2NrKCRD
aXBoZXIsIDAsICRDaXBoZXIuTGVuZ3RoKQogICAgJEFlcy5EaXNwb3NlKCkKICAgIHJldHVybiBb
VGV4dC5FbmNvZGluZ106OlVURjguR2V0U3RyaW5nKCRQbGFpbikKfQoKIyBIaWxmc2Z1bmt0aW9u
OiBHb3Zlcm5hbmNlLURhdGVuIGxhZGVuIChnZWNhY2h0LCBJbnZhbGlkaWVydW5nIGJlaSBEYXRl
aS1BZW5kZXJ1bmcpCiMgRXJrZW5udCBhdXRvbWF0aXNjaCBLbGFydGV4dC1KU09OIHVuZCB2ZXJz
Y2hsdWVzc2VsdCBlcyBiZWltIGVyc3RlbiBMZXNlbi4KJHNjcmlwdDpHb3ZDYWNoZSA9ICRudWxs
CiRzY3JpcHQ6R292Q2FjaGVUaW1lID0gW0RhdGVUaW1lXTo6TWluVmFsdWUKCmZ1bmN0aW9uIEdl
dC1Hb3Zlcm5hbmNlIHsKICAgICRHb3ZQYXRoID0gSm9pbi1QYXRoICRSb290ICJkYXRhL2dvdmVy
bmFuY2UuanNvbiIKICAgIGlmIChUZXN0LVBhdGggJEdvdlBhdGgpIHsKICAgICAgICAkTGFzdFdy
aXRlID0gKEdldC1JdGVtICRHb3ZQYXRoIC1Gb3JjZSkuTGFzdFdyaXRlVGltZVV0YwogICAgICAg
IGlmICgkc2NyaXB0OkdvdkNhY2hlIC1hbmQgJExhc3RXcml0ZSAtbGUgJHNjcmlwdDpHb3ZDYWNo
ZVRpbWUpIHsKICAgICAgICAgICAgcmV0dXJuICRzY3JpcHQ6R292Q2FjaGUKICAgICAgICB9CiAg
ICAgICAgJFJhdyA9IEdldC1Db250ZW50ICRHb3ZQYXRoIC1SYXcgLUVuY29kaW5nIFVURjgKICAg
ICAgICBpZiAoJFJhdy5TdGFydHNXaXRoKCRzY3JpcHQ6R292RW5jUHJlZml4KSkgewogICAgICAg
ICAgICAkSnNvblRleHQgPSBVbnByb3RlY3QtR292ZXJuYW5jZURhdGEgJFJhdwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICMgS2xhcnRleHQgZXJrYW5udCAtIGF1dG9tYXRpc2NoIHZlcnNj
aGx1ZXNzZWxuIChNaWdyYXRpb24pCiAgICAgICAgICAgICRKc29uVGV4dCA9ICRSYXcKICAgICAg
ICAgICAgJEVuY3J5cHRlZCA9IFByb3RlY3QtR292ZXJuYW5jZURhdGEgJEpzb25UZXh0CiAgICAg
ICAgICAgIFVucHJvdGVjdC1GaWxlICRHb3ZQYXRoCiAgICAgICAgICAgIFtJTy5GaWxlXTo6V3Jp
dGVBbGxUZXh0KCRHb3ZQYXRoLCAkRW5jcnlwdGVkLCBbVGV4dC5VVEY4RW5jb2RpbmddOjpuZXco
JGZhbHNlKSkKICAgICAgICAgICAgUHJvdGVjdC1GaWxlICRHb3ZQYXRoCiAgICAgICAgICAgIFdy
aXRlLUhvc3QgIiAgQ1JZUFQgIGdvdmVybmFuY2UuanNvbiB3dXJkZSB2ZXJzY2hsdWVzc2VsdCAo
QUVTLTI1NikiIC1Gb3JlZ3JvdW5kQ29sb3IgTWFnZW50YQogICAgICAgIH0KICAgICAgICAkc2Ny
aXB0OkdvdkNhY2hlID0gJEpzb25UZXh0IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICRzY3Jp
cHQ6R292Q2FjaGVUaW1lID0gKEdldC1JdGVtICRHb3ZQYXRoIC1Gb3JjZSkuTGFzdFdyaXRlVGlt
ZVV0YwogICAgICAgIHJldHVybiAkc2NyaXB0OkdvdkNhY2hlCiAgICB9CiAgICByZXR1cm4gJG51
bGwKfQoKZnVuY3Rpb24gQ2xlYXItR292ZXJuYW5jZUNhY2hlIHsKICAgICRzY3JpcHQ6R292Q2Fj
aGUgPSAkbnVsbAogICAgJHNjcmlwdDpHb3ZDYWNoZVRpbWUgPSBbRGF0ZVRpbWVdOjpNaW5WYWx1
ZQp9CgpmdW5jdGlvbiBTYXZlLUdvdmVybmFuY2UoJEdvdk9iamVjdCkgewogICAgJEdvdlBhdGgg
PSBKb2luLVBhdGggJFJvb3QgImRhdGEvZ292ZXJuYW5jZS5qc29uIgogICAgJEpzb25Db250ZW50
ID0gJEdvdk9iamVjdCB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAyMAogICAgJEVuY3J5cHRlZCA9
IFByb3RlY3QtR292ZXJuYW5jZURhdGEgJEpzb25Db250ZW50CiAgICBVbnByb3RlY3QtRmlsZSAk
R292UGF0aAogICAgW0lPLkZpbGVdOjpXcml0ZUFsbFRleHQoJEdvdlBhdGgsICRFbmNyeXB0ZWQs
IFtUZXh0LlVURjhFbmNvZGluZ106Om5ldygkZmFsc2UpKQogICAgUHJvdGVjdC1GaWxlICRHb3ZQ
YXRoCiAgICBDbGVhci1Hb3Zlcm5hbmNlQ2FjaGUKfQoKIyBBdXRvcmlzaWVydW5nc3BydWVmdW5n
OiBWZXJnbGVpY2h0ICRlbnY6VVNFUk5BTUUgKyAkZW52OlVTRVJET01BSU4gbWl0IGdvdmVybmFu
Y2UuanNvbi4KIyBGYWxsYmFjazogV2VubiBrZWluZSBnb3Zlcm5hbmNlLmpzb24gZXhpc3RpZXJ0
LCB3aXJkICR0cnVlIHp1cnVlY2tnZWdlYmVuIChFcnN0aW5iZXRyaWVibmFobWUpLgojIERvbWFl
bmUgIioiIGluIGdvdmVybmFuY2UuanNvbiBiZWRldXRldDogQmVudXR6ZXJuYW1lIHJlaWNodCwg
RG9tYWVuZSB3aXJkIG5pY2h0IGdlcHJ1ZWZ0LgpmdW5jdGlvbiBUZXN0LVN1cGVyVXNlcigkR292
ZXJuYW5jZSkgewogICAgaWYgKC1ub3QgJEdvdmVybmFuY2UpIHsgcmV0dXJuICR0cnVlIH0gICMg
S2VpbiBHb3Zlcm5hbmNlID0gYWxsZXMgZXJsYXVidAogICAgZm9yZWFjaCAoJHN1IGluICRHb3Zl
cm5hbmNlLnN1cGVyVXNlcnMpIHsKICAgICAgICBpZiAoJHN1LnVzZXJuYW1lIC1lcSAkZW52OlVT
RVJOQU1FKSB7CiAgICAgICAgICAgIGlmICgkc3UuZG9tYWluIC1lcSAnKicgLW9yICRzdS5kb21h
aW4gLWVxICRlbnY6VVNFUkRPTUFJTikgeyByZXR1cm4gJHRydWUgfQogICAgICAgIH0KICAgIH0K
ICAgIHJldHVybiAkZmFsc2UKfQoKIyBGYWNoYXVmc2ljaHQtUHJ1ZWZ1bmc6IFdpZSBUZXN0LVN1
cGVyVXNlciwgYWJlciBmdWVyIEZhY2hhdWZzaWNodC1Sb2xsZS4KIyBPaG5lIGdvdmVybmFuY2Uu
anNvbjogJGZhbHNlIChrZWluZSBGYWNoYXVmc2ljaHQgb2huZSBleHBsaXppdGUgWnV3ZWlzdW5n
KS4KZnVuY3Rpb24gVGVzdC1GYWNoYXVmc2ljaHQoJEdvdmVybmFuY2UpIHsKICAgIGlmICgtbm90
ICRHb3Zlcm5hbmNlKSB7IHJldHVybiAkZmFsc2UgfQogICAgZm9yZWFjaCAoJGZhIGluICRHb3Zl
cm5hbmNlLmZhY2hhdWZzaWNodCkgewogICAgICAgIGlmICgkZmEudXNlcm5hbWUgLWVxICRlbnY6
VVNFUk5BTUUpIHsKICAgICAgICAgICAgaWYgKCRmYS5kb21haW4gLWVxICcqJyAtb3IgJGZhLmRv
bWFpbiAtZXEgJGVudjpVU0VSRE9NQUlOKSB7IHJldHVybiAkdHJ1ZSB9CiAgICAgICAgfQogICAg
fQogICAgcmV0dXJuICRmYWxzZQp9CgojIFJldmlld2VyLVBydWVmdW5nOiBXaWUgVGVzdC1TdXBl
clVzZXIsIGFiZXIgenVzYWV0emxpY2ggS2F0ZWdvcmllLVp1b3JkbnVuZy4KIyBPaG5lIGdvdmVy
bmFuY2UuanNvbjogJGZhbHNlIChrZWluIFJldmlld2VyIG9obmUgZXhwbGl6aXRlIFp1d2Vpc3Vu
ZykuCiMgQXN5bW1ldHJpZSB6dSBUZXN0LVN1cGVyVXNlciBpc3QgYmVhYnNpY2h0aWd0OiBSZXZp
ZXdlci1SZWNodGUgbXVlc3NlbiBleHBsaXppdCB2ZXJnZWJlbiB3ZXJkZW4uCmZ1bmN0aW9uIFRl
c3QtUmV2aWV3ZXIoJEdvdmVybmFuY2UsICRLYXRlZ29yaWUpIHsKICAgIGlmICgtbm90ICRHb3Zl
cm5hbmNlKSB7IHJldHVybiAkZmFsc2UgfQogICAgZm9yZWFjaCAoJHIgaW4gJEdvdmVybmFuY2Uu
cmV2aWV3ZXJzKSB7CiAgICAgICAgaWYgKCRyLnVzZXJuYW1lIC1lcSAkZW52OlVTRVJOQU1FKSB7
CiAgICAgICAgICAgIGlmICgkci5kb21haW4gLWVxICcqJyAtb3IgJHIuZG9tYWluIC1lcSAkZW52
OlVTRVJET01BSU4pIHsKICAgICAgICAgICAgICAgIGlmICgkci5rYXRlZ29yaWVuIC1jb250YWlu
cyAkS2F0ZWdvcmllKSB7IHJldHVybiAkdHJ1ZSB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICB9CiAgICByZXR1cm4gJGZhbHNlCn0KCiMgUHJvemVzcyBpbSBUYXNrLU1hbmFnZXIgYWxzICJE
UklWRV9Mb2NhbGhvc3QiIHNpY2h0YmFyIG1hY2hlbgokSG9zdC5VSS5SYXdVSS5XaW5kb3dUaXRs
ZSA9ICJEUklWRV9Mb2NhbGhvc3QiCgpXcml0ZS1Ib3N0ICIiCldyaXRlLUhvc3QgIj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IiAtRm9yZWdyb3VuZENvbG9yIEN5
YW4KV3JpdGUtSG9zdCAiICBELlIuSS5WLkUuIFBvcnRhbCB2MS4wIC0gU2VydmVyIiAgICAgICAg
ICAgIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbgpXcml0ZS1Ib3N0ICI9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSIgLUZvcmVncm91bmRDb2xvciBDeWFuCldyaXRlLUhv
c3QgIiIKV3JpdGUtSG9zdCAiICBPcmRuZXI6ICAkUm9vdCIgLUZvcmVncm91bmRDb2xvciBHcmF5
CldyaXRlLUhvc3QgIiAgVVJMOiAgICAgaHR0cDovL2xvY2FsaG9zdDokUG9ydCIgICAgICAgICAg
ICAgIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KV3JpdGUtSG9zdCAiIgpXcml0ZS1Ib3N0ICIgIFp1
bSBCZWVuZGVuOiBTdHJnK0MgZHJ1ZWNrZW4iICAgICAgICAgICAgICAgICAtRm9yZWdyb3VuZENv
bG9yIFllbGxvdwpXcml0ZS1Ib3N0ICIiCgojIFNjaHJlaWJzY2h1dHogYmVpbSBTdGFydCBhdWZo
ZWJlbiAoZnVlciBkaWUgZ2VzYW10ZSBTZXNzaW9uKQpXcml0ZS1Ib3N0ICIgIFNjaHJlaWJzY2h1
dHogd2lyZCBhdWZnZWhvYmVuLi4uIiAgICAgICAgICAgICAtRm9yZWdyb3VuZENvbG9yIEdyYXkK
R2V0LUNoaWxkSXRlbSAiJFJvb3RcZGF0YSIgLVJlY3Vyc2UgLUZpbHRlciAiKi5qc29uIiAtRXJy
b3JBY3Rpb24gU2lsZW50bHlDb250aW51ZSB8IEZvckVhY2gtT2JqZWN0IHsgVW5wcm90ZWN0LUZp
bGUgJF8uRnVsbE5hbWUgfQpVbnByb3RlY3QtRmlsZSAoSm9pbi1QYXRoICRSb290ICJpbmRleC5o
dG1sIikKCiMgTGluay1CZXJlaW5pZ3VuZzogQWxsZSA8YT4tVGFncyBpbiBiZXN0ZWhlbmRlbiBB
cnRpa2VsbiBhdWYgdGFyZ2V0PSJfYmxhbmsiIHNldHplbi4KIyBWZXJoaW5kZXJ0LCBkYXNzIGtv
cGllcnRlIExpbmtzIG1pdCB0YXJnZXQ9Il9zZWxmIiBkYXMgUG9ydGFsIHZlcmxhc3Nlbi4KV3Jp
dGUtSG9zdCAiICBMaW5rcyBpbiBBcnRpa2VsbiB3ZXJkZW4gZ2VwcnVlZnQuLi4iICAgICAgICAg
IC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQokTGlua0ZpeENvdW50ID0gMApHZXQtQ2hpbGRJdGVtICIk
Um9vdFxkYXRhIiAtUmVjdXJzZSAtRmlsdGVyICIqLmpzb24iIC1FcnJvckFjdGlvbiBTaWxlbnRs
eUNvbnRpbnVlIHwgRm9yRWFjaC1PYmplY3QgewogICAgdHJ5IHsKICAgICAgICAkSnNvblRleHQg
PSBbSU8uRmlsZV06OlJlYWRBbGxUZXh0KCRfLkZ1bGxOYW1lLCBbVGV4dC5VVEY4RW5jb2Rpbmdd
OjpuZXcoJGZhbHNlKSkKICAgICAgICAjIE51ciBEYXRlaWVuIG1pdCA8YSBocmVmIGJlYXJiZWl0
ZW4gKFBlcmZvcm1hbmNlOiBKU09OIG9obmUgTGlua3MgdWViZXJzcHJpbmdlbikKICAgICAgICBp
ZiAoJEpzb25UZXh0IC1tYXRjaCAnPGFccytbXj5dKmhyZWYnKSB7CiAgICAgICAgICAgICRDaGFu
Z2VkID0gJGZhbHNlCiAgICAgICAgICAgICMgdGFyZ2V0PSJfc2VsZiIgZHVyY2ggdGFyZ2V0PSJf
YmxhbmsiIGVyc2V0emVuCiAgICAgICAgICAgIGlmICgkSnNvblRleHQgLW1hdGNoICd0YXJnZXRc
cyo9XHMqWyInJ11fc2VsZlsiJyddJykgewogICAgICAgICAgICAgICAgJEpzb25UZXh0ID0gW3Jl
Z2V4XTo6UmVwbGFjZSgkSnNvblRleHQsICd0YXJnZXRccyo9XHMqWyInJ11fc2VsZlsiJyddJywg
J3RhcmdldD0iX2JsYW5rIicpCiAgICAgICAgICAgICAgICAkQ2hhbmdlZCA9ICR0cnVlCiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIyBMaW5rcyBvaG5lIHRhcmdldC1BdHRyaWJ1dDogdGFyZ2V0
PSJfYmxhbmsiIGhpbnp1ZnVlZ2VuCiAgICAgICAgICAgICMgUmVnZXg6IDxhIC4uLiBocmVmPSIu
Li4iIG9obmUgdGFyZ2V0PSAuLi4gPiAobnVyIGV4dGVybmUgTGlua3MsIG5pY2h0ICMtQW5rZXIp
CiAgICAgICAgICAgICRKc29uVGV4dCA9IFtyZWdleF06OlJlcGxhY2UoJEpzb25UZXh0LCAnKDxh
XHMrKD8hW14+XSp0YXJnZXRccyo9KVtePl0qaHJlZlxzKj1ccypbIicnXSkoPyEjKScsIHsKICAg
ICAgICAgICAgICAgIHBhcmFtKCRtKQogICAgICAgICAgICAgICAgJHRhZyA9ICRtLlZhbHVlCiAg
ICAgICAgICAgICAgICAjIHRhcmdldD0iX2JsYW5rIiB2b3IgaHJlZiBlaW5mdWVnZW4KICAgICAg
ICAgICAgICAgICR0YWcgLXJlcGxhY2UgJyg8YVxzKyknLCAnJDF0YXJnZXQ9Il9ibGFuayIgcmVs
PSJub29wZW5lciBub3JlZmVycmVyIiAnCiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIGlmICgk
SnNvblRleHQgLW5lIFtJTy5GaWxlXTo6UmVhZEFsbFRleHQoJF8uRnVsbE5hbWUsIFtUZXh0LlVU
RjhFbmNvZGluZ106Om5ldygkZmFsc2UpKSkgewogICAgICAgICAgICAgICAgJENoYW5nZWQgPSAk
dHJ1ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkQ2hhbmdlZCkgewogICAgICAgICAg
ICAgICAgW0lPLkZpbGVdOjpXcml0ZUFsbFRleHQoJF8uRnVsbE5hbWUsICRKc29uVGV4dCwgW1Rl
eHQuVVRGOEVuY29kaW5nXTo6bmV3KCRmYWxzZSkpCiAgICAgICAgICAgICAgICAkTGlua0ZpeENv
dW50KysKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gY2F0Y2gge30KfQppZiAoJExpbmtG
aXhDb3VudCAtZ3QgMCkgewogICAgV3JpdGUtSG9zdCAiICBbT0tdICAgICAgJExpbmtGaXhDb3Vu
dCBBcnRpa2VsIGJlcmVpbmlndCAoTGlua3MgLT4gdGFyZ2V0PV9ibGFuaykiIC1Gb3JlZ3JvdW5k
Q29sb3IgR3JlZW4KfSBlbHNlIHsKICAgIFdyaXRlLUhvc3QgIiAgW09LXSAgICAgIEFsbGUgTGlu
a3Mga29ycmVrdCIgLUZvcmVncm91bmRDb2xvciBHcmVlbgp9CgojIFZlcnNpb25zaW50ZWdyaXRh
ZXQ6IFN0ZWxsdCBzaWNoZXIsIGRhc3MgZGllIFZlcnNpb24genVtIFN0YXR1cyBwYXNzdC4KIyBG
cmVpZ2VnZWJlbiBtdXNzIG1pbmRlc3RlbnMgdjEuMCBzZWluLCBFbnR3dXJmL1BydWVmdW5nIG1p
bmRlc3RlbnMgdjAuMS4KV3JpdGUtSG9zdCAiICBWZXJzaW9uaWVydW5nIHdpcmQgZ2VwcnVlZnQu
Li4iICAgICAgICAgICAgICAgIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQokVmVyc2lvbkZpeENvdW50
ID0gMApHZXQtQ2hpbGRJdGVtICIkUm9vdFxkYXRhIiAtUmVjdXJzZSAtRmlsdGVyICIqLmpzb24i
IC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIHwgRm9yRWFjaC1PYmplY3QgewogICAgIyBn
b3Zlcm5hbmNlLmpzb24sIGNvbmZpZy5qc29uLCAudHJhc2guanNvbiBldGMuIHVlYmVyc3ByaW5n
ZW4KICAgIGlmICgkXy5OYW1lIC1tYXRjaCAnXlwuJyAtb3IgJF8uTmFtZSAtZXEgJ2NvbmZpZy5q
c29uJyAtb3IgJF8uTmFtZSAtZXEgJ2dvdmVybmFuY2UuanNvbicpIHsgcmV0dXJuIH0KICAgIHRy
eSB7CiAgICAgICAgJEpzb25UZXh0ID0gW0lPLkZpbGVdOjpSZWFkQWxsVGV4dCgkXy5GdWxsTmFt
ZSwgW1RleHQuVVRGOEVuY29kaW5nXTo6bmV3KCRmYWxzZSkpCiAgICAgICAgJERvYyA9ICRKc29u
VGV4dCB8IENvbnZlcnRGcm9tLUpzb24KICAgICAgICBpZiAoLW5vdCAkRG9jLnN0YXR1cykgeyBy
ZXR1cm4gfQogICAgICAgICROZWVkc1VwZGF0ZSA9ICRmYWxzZQogICAgICAgICRWZXJzaW9uID0g
aWYgKCREb2MudmVyc2lvbikgeyAkRG9jLnZlcnNpb24gfSBlbHNlIHsgJycgfQogICAgICAgICRN
YWpvciA9IDA7ICRNaW5vciA9IDEKICAgICAgICBpZiAoJFZlcnNpb24gLW1hdGNoICdedj8oXGQr
KVwuKFxkKyknKSB7CiAgICAgICAgICAgICRNYWpvciA9IFtpbnRdJE1hdGNoZXNbMV0KICAgICAg
ICAgICAgJE1pbm9yID0gW2ludF0kTWF0Y2hlc1syXQogICAgICAgIH0KCiAgICAgICAgaWYgKCRE
b2Muc3RhdHVzIC1lcSAnRnJlaWdlZ2ViZW4nIC1hbmQgJE1ham9yIC1sdCAxKSB7CiAgICAgICAg
ICAgICREb2MudmVyc2lvbiA9ICd2MS4wJwogICAgICAgICAgICAkTmVlZHNVcGRhdGUgPSAkdHJ1
ZQogICAgICAgIH0gZWxzZWlmICgkRG9jLnN0YXR1cyAtaW4gQCgnRW50d3VyZicsICJQciQoW2No
YXJdMHhGQylmdW5nIikgLWFuZCAtbm90ICRWZXJzaW9uKSB7CiAgICAgICAgICAgICREb2MudmVy
c2lvbiA9ICd2MC4xJwogICAgICAgICAgICAkTmVlZHNVcGRhdGUgPSAkdHJ1ZQogICAgICAgIH0K
CiAgICAgICAgaWYgKCROZWVkc1VwZGF0ZSkgewogICAgICAgICAgICAkTmV3SnNvbiA9ICREb2Mg
fCBDb252ZXJ0VG8tSnNvbiAtRGVwdGggMjAKICAgICAgICAgICAgW0lPLkZpbGVdOjpXcml0ZUFs
bFRleHQoJF8uRnVsbE5hbWUsICROZXdKc29uLCBbVGV4dC5VVEY4RW5jb2RpbmddOjpuZXcoJGZh
bHNlKSkKICAgICAgICAgICAgJFZlcnNpb25GaXhDb3VudCsrCiAgICAgICAgfQogICAgfSBjYXRj
aCB7fQp9CmlmICgkVmVyc2lvbkZpeENvdW50IC1ndCAwKSB7CiAgICBXcml0ZS1Ib3N0ICIgIFtP
S10gICAgICAkVmVyc2lvbkZpeENvdW50IEFydGlrZWwtVmVyc2lvbmVuIGtvcnJpZ2llcnQiIC1G
b3JlZ3JvdW5kQ29sb3IgR3JlZW4KfSBlbHNlIHsKICAgIFdyaXRlLUhvc3QgIiAgW09LXSAgICAg
IEFsbGUgVmVyc2lvbmVuIGtvcnJla3QiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KfQoKIyBTdGF0
aWMtRmlsZS1DYWNoZSAoVGV4dGRhdGVpZW4gaW0gU3BlaWNoZXIgaGFsdGVuKQokc2NyaXB0OlN0
YXRpY0NhY2hlID0gQHt9CgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgVVBEQVRFLUNIRUNLCiMg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KCiRzY3JpcHQ6VXBkYXRlQXZhaWxhYmxlICAgID0gJGZhbHNl
CiRzY3JpcHQ6UmVtb3RlVmVyc2lvbiAgICAgID0gJycKJHNjcmlwdDpVcGRhdGVMYXN0Q2hlY2tV
dGMgPSBbZGF0ZXRpbWVdOjpNaW5WYWx1ZQoKZnVuY3Rpb24gUmVmcmVzaC1VcGRhdGVDaGVjayB7
CiAgICBpZiAoKFtkYXRldGltZV06OlV0Y05vdyAtICRzY3JpcHQ6VXBkYXRlTGFzdENoZWNrVXRj
KS5Ub3RhbE1pbnV0ZXMgLWx0IDYwKSB7IHJldHVybiB9CiAgICAkc2NyaXB0OlVwZGF0ZUxhc3RD
aGVja1V0YyA9IFtkYXRldGltZV06OlV0Y05vdwogICAgJGxvY2FsVmVyID0gJzAuMC4wJwogICAg
JF92ZiA9IEpvaW4tUGF0aCAkUm9vdCAnVkVSU0lPTicKICAgIGlmIChUZXN0LVBhdGggLUxpdGVy
YWxQYXRoICRfdmYpIHsgJGxvY2FsVmVyID0gKEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkX3Zm
IC1SYXcpLlRyaW0oKSB9CiAgICB0cnkgewogICAgICAgICRydiA9IChJbnZva2UtV2ViUmVxdWVz
dCAtVXJpICdodHRwczovL3VwZGF0ZXMucmhpbm8ubnJ3L3JoaW5vL1N0YXR1c1F1b19VcGRhdGVz
L3Jhdy9icmFuY2gvbWFpbi9EUklWRS9WRVJTSU9OJyBgCiAgICAgICAgICAgICAgIC1Vc2VCYXNp
Y1BhcnNpbmcgLVRpbWVvdXRTZWMgMyAtRXJyb3JBY3Rpb24gU3RvcCkuQ29udGVudC5UcmltKCkK
ICAgICAgICAkc2NyaXB0OlJlbW90ZVZlcnNpb24gICA9ICRydgogICAgICAgICRzY3JpcHQ6VXBk
YXRlQXZhaWxhYmxlID0gKFtTeXN0ZW0uVmVyc2lvbl0kcnYgLWd0IFtTeXN0ZW0uVmVyc2lvbl0k
bG9jYWxWZXIpCiAgICAgICAgV3JpdGUtSG9zdCAiICBbVVBEQVRFLUNIRUNLXSBsb2thbD0kbG9j
YWxWZXIgcmVtb3RlPSRydiBhdmFpbGFibGU9JCgkc2NyaXB0OlVwZGF0ZUF2YWlsYWJsZSkiCiAg
ICB9IGNhdGNoIHsKICAgICAgICBXcml0ZS1Ib3N0ICIgIFtVUERBVEUtQ0hFQ0tdIG5pY2h0IGVy
cmVpY2hiYXIgKCQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpKSIKICAgIH0KfQpSZWZyZXNoLVVwZGF0
ZUNoZWNrCgojIEhUVFAgTGlzdGVuZXIgc3RhcnRlbgokTGlzdGVuZXIgPSBOZXctT2JqZWN0IFN5
c3RlbS5OZXQuSHR0cExpc3RlbmVyCiRMaXN0ZW5lci5QcmVmaXhlcy5BZGQoImh0dHA6Ly9sb2Nh
bGhvc3Q6JFBvcnQvIikKCnRyeSB7CiAgICAkTGlzdGVuZXIuU3RhcnQoKQp9IGNhdGNoIHsKICAg
IFdyaXRlLUhvc3QgIkZFSExFUjogUG9ydCAkUG9ydCBpc3QgYmVyZWl0cyBiZWxlZ3QuIiAtRm9y
ZWdyb3VuZENvbG9yIFJlZAogICAgV3JpdGUtSG9zdCAiVmVyc3VjaGVuIFNpZSBlaW5lbiBhbmRl
cmVuIFBvcnQ6IC5cc2VydmVyLnBzMSAtUG9ydCA4MDgxIiAtRm9yZWdyb3VuZENvbG9yIFllbGxv
dwogICAgUmVhZC1Ib3N0ICJFbnRlciBkcnVlY2tlbiB6dW0gQmVlbmRlbiIKICAgIGV4aXQgMQp9
CgojIEJyb3dzZXIgb2VmZm5lbiAoQ2hyb21lID4gRWRnZSA+IFN0YW5kYXJkLUJyb3dzZXIpCiRC
cm93c2VyVXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6JFBvcnQiCiRCcm93c2VyT3BlbmVkID0gJGZh
bHNlCgojIENocm9tZS1QZmFkZSBwcnVlZmVuCiRDaHJvbWVQYXRocyA9IEAoCiAgICAiJHtlbnY6
UHJvZ3JhbUZpbGVzfVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0aW9uXGNocm9tZS5leGUiLAogICAg
IiR7ZW52OlByb2dyYW1GaWxlcyh4ODYpfVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0aW9uXGNocm9t
ZS5leGUiLAogICAgIiRlbnY6TE9DQUxBUFBEQVRBXEdvb2dsZVxDaHJvbWVcQXBwbGljYXRpb25c
Y2hyb21lLmV4ZSIKKQpmb3JlYWNoICgkY3AgaW4gJENocm9tZVBhdGhzKSB7CiAgICBpZiAoVGVz
dC1QYXRoICRjcCkgewogICAgICAgIFN0YXJ0LVByb2Nlc3MgJGNwICRCcm93c2VyVXJsCiAgICAg
ICAgJEJyb3dzZXJPcGVuZWQgPSAkdHJ1ZQogICAgICAgIGJyZWFrCiAgICB9Cn0KCiMgRmFsbGJh
Y2s6IEVkZ2UKaWYgKC1ub3QgJEJyb3dzZXJPcGVuZWQpIHsKICAgICRFZGdlUGF0aCA9ICIke2Vu
djpQcm9ncmFtRmlsZXMoeDg2KX1cTWljcm9zb2Z0XEVkZ2VcQXBwbGljYXRpb25cbXNlZGdlLmV4
ZSIKICAgIGlmIChUZXN0LVBhdGggJEVkZ2VQYXRoKSB7CiAgICAgICAgU3RhcnQtUHJvY2VzcyAk
RWRnZVBhdGggJEJyb3dzZXJVcmwKICAgICAgICAkQnJvd3Nlck9wZW5lZCA9ICR0cnVlCiAgICB9
Cn0KCiMgRmFsbGJhY2s6IFN0YW5kYXJkLUJyb3dzZXIgdmlhIFN0YXJ0CmlmICgtbm90ICRCcm93
c2VyT3BlbmVkKSB7CiAgICB0cnkgeyBTdGFydC1Qcm9jZXNzICRCcm93c2VyVXJsOyAkQnJvd3Nl
ck9wZW5lZCA9ICR0cnVlIH0gY2F0Y2gge30KfQoKaWYgKC1ub3QgJEJyb3dzZXJPcGVuZWQpIHsK
ICAgIFdyaXRlLUhvc3QgIiAgQnJvd3NlciBrb25udGUgbmljaHQgZ2VvZWZmbmV0IHdlcmRlbi4i
IC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93CiAgICBXcml0ZS1Ib3N0ICIgIEJpdHRlIG1hbnVlbGwg
b2VmZm5lbjogJEJyb3dzZXJVcmwiIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93Cn0KCiMgSGVhcnRi
ZWF0LVRyYWNraW5nOiBTZXJ2ZXIgYmVlbmRldCBzaWNoIHdlbm4gMTAgTWludXRlbiBrZWluIEhl
YXJ0YmVhdCBrb21tdC4KIyBDbGllbnQgbnV0enQgZWluZW4gV2ViIFdvcmtlciBmdWVyIHp1dmVy
bGFlc3NpZ2UgSGVhcnRiZWF0cyBhdWNoIGJlaSBCYWNrZ3JvdW5kLVRhYnMuCiMgMTAgTWluIFRp
bWVvdXQgPSBtYXhpbWFsZSBSb2J1c3RoZWl0IGdlZ2VuIGplZGUgQXJ0IHZvbiBCcm93c2VyLVRo
cm90dGxpbmcuCiRzY3JpcHQ6TGFzdEhlYXJ0YmVhdCA9IEdldC1EYXRlCiRIZWFydGJlYXRUaW1l
b3V0U2VjID0gMTgwMCAgIyAzMCBNaW4gLSBUYWItV2VjaHNlbCBwYXVzaWVydCBIZWFydGJlYXQs
IE5ldXN0YXJ0IHBydWVmdCBQb3J0CiRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nID0gJG51bGwgICMg
R25hZGVuZnJpc3QgZnVlciBTaHV0ZG93biAoRjUvUmVmcmVzaCB2cy4gVGFiLUNsb3NlKQokc2Ny
aXB0OlNodXRkb3duR3JhY2VTZWMgPSA1ICAgICAjIFNla3VuZGVuIFdhcnRlemVpdCBiZXZvciBT
ZXJ2ZXIgdGF0c2FlY2hsaWNoIGJlZW5kZXQgd2lyZAoKIyBSZXF1ZXN0LUxvb3AgKG5pY2h0LWJs
b2NraWVyZW5kIGZ1ZXIgSGVhcnRiZWF0LVRpbWVvdXQtUHJ1ZWZ1bmcpCnRyeSB7CiAgICB3aGls
ZSAoJExpc3RlbmVyLklzTGlzdGVuaW5nKSB7CiAgICAgICAgIyBBc3luY2hyb25lbiBSZXF1ZXN0
IG1pdCBUaW1lb3V0IHdhcnRlbgogICAgICAgICRBc3luY1Jlc3VsdCA9ICRMaXN0ZW5lci5CZWdp
bkdldENvbnRleHQoJG51bGwsICRudWxsKQogICAgICAgIHdoaWxlICgtbm90ICRBc3luY1Jlc3Vs
dC5Bc3luY1dhaXRIYW5kbGUuV2FpdE9uZSgyMDAwKSkgewogICAgICAgICAgICAjIFBydWVmZW4g
b2IgZWluIFNodXRkb3duIGFuc3RlaHQgKGJlZm9yZXVubG9hZCBnZXNlbmRldCkKICAgICAgICAg
ICAgIyBHbmFkZW5mcmlzdDogRmFsbHMgU2VpdGUgbnVyIG5ldSBnZWxhZGVuIHdpcmQgKEY1KSwg
a29tbXQgaW5uZXJoYWxiCiAgICAgICAgICAgICMgdm9uIDUgU2VrdW5kZW4gZWluIG5ldWVyIEhl
YXJ0YmVhdCB1bmQgYnJpY2h0IGRlbiBTaHV0ZG93biBhYi4KICAgICAgICAgICAgaWYgKCRzY3Jp
cHQ6U2h1dGRvd25QZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAkR3JhY2VFbGFwc2VkID0gKChH
ZXQtRGF0ZSkgLSAkc2NyaXB0OlNodXRkb3duUGVuZGluZykuVG90YWxTZWNvbmRzCiAgICAgICAg
ICAgICAgICBpZiAoJEdyYWNlRWxhcHNlZCAtZ3QgJHNjcmlwdDpTaHV0ZG93bkdyYWNlU2VjKSB7
CiAgICAgICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiIgogICAgICAgICAgICAgICAgICAgIFdy
aXRlLUhvc3QgIiAgU2h1dGRvd24tR25hZGVuZnJpc3QgYWJnZWxhdWZlbiAoJHtHcmFjZUVsYXBz
ZWR9cykgLSBrZWluIFJlbG9hZCBlcmthbm50LCBTZXJ2ZXIgd2lyZCBiZWVuZGV0Li4uIiAtRm9y
ZWdyb3VuZENvbG9yIFllbGxvdwogICAgICAgICAgICAgICAgICAgICRMaXN0ZW5lci5TdG9wKCkK
ICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
CiAgICAgICAgICAgICMgQWxsZSAyIFNla3VuZGVuIHBydWVmZW4gb2IgSGVhcnRiZWF0LVRpbWVv
dXQgZXJyZWljaHQKICAgICAgICAgICAgJFNlY1NpbmNlSGVhcnRiZWF0ID0gKChHZXQtRGF0ZSkg
LSAkc2NyaXB0Okxhc3RIZWFydGJlYXQpLlRvdGFsU2Vjb25kcwogICAgICAgICAgICBpZiAoJFNl
Y1NpbmNlSGVhcnRiZWF0IC1ndCAkSGVhcnRiZWF0VGltZW91dFNlYykgewogICAgICAgICAgICAg
ICAgV3JpdGUtSG9zdCAiIgogICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBLZWluIEhlYXJ0
YmVhdCBzZWl0ICQoW01hdGhdOjpSb3VuZCgkU2VjU2luY2VIZWFydGJlYXQpKXMgLSBUYWIgd3Vy
ZGUgZ2VzY2hsb3NzZW4sIFNlcnZlciB3aXJkIGJlZW5kZXQuLi4iIC1Gb3JlZ3JvdW5kQ29sb3Ig
WWVsbG93CiAgICAgICAgICAgICAgICAkTGlzdGVuZXIuU3RvcCgpCiAgICAgICAgICAgICAgICBi
cmVhawogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgtbm90ICRMaXN0ZW5lci5J
c0xpc3RlbmluZykgeyBicmVhayB9CiAgICAgICAgJENvbnRleHQgPSAkTGlzdGVuZXIuRW5kR2V0
Q29udGV4dCgkQXN5bmNSZXN1bHQpCiAgICAgICAgJFJlcXVlc3QgPSAkQ29udGV4dC5SZXF1ZXN0
CiAgICAgICAgJFJlc3BvbnNlID0gJENvbnRleHQuUmVzcG9uc2UKICAgICAgICAkTWV0aG9kID0g
JFJlcXVlc3QuSHR0cE1ldGhvZAogICAgICAgICRVcmxQYXRoID0gJFJlcXVlc3QuVXJsLkxvY2Fs
UGF0aAoKICAgICAgICAjIFBlbmRpbmcgU2h1dGRvd24gYmVpIGplZGVtIGVpbmdlaGVuZGVuIFJl
cXVlc3QgYWJicmVjaGVuCiAgICAgICAgIyAoU2VpdGUgd3VyZGUgbmV1IGdlbGFkZW4gdW5kIGZy
YWd0IERhdGVpZW4vQVBJIGFuKQogICAgICAgIGlmICgkc2NyaXB0OlNodXRkb3duUGVuZGluZyAt
YW5kICRVcmxQYXRoIC1uZSAnL2FwaS9zaHV0ZG93bicpIHsKICAgICAgICAgICAgV3JpdGUtSG9z
dCAiICBIQiAgIFNodXRkb3duIGFiZ2Vicm9jaGVuIC0gbmV1ZSBBbmZyYWdlIGVya2FubnQgKCRN
ZXRob2QgJFVybFBhdGgpIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCiAgICAgICAgICAgICRzY3Jp
cHQ6U2h1dGRvd25QZW5kaW5nID0gJG51bGwKICAgICAgICB9CgogICAgICAgICMgUmVxdWVzdC1M
b2dnaW5nIChudXIgQVBJLUF1ZnJ1ZmUsIG5pY2h0IEhlYXJ0YmVhdC9zdGF0aXNjaGUgRGF0ZWll
bikKICAgICAgICBpZiAoJFVybFBhdGguU3RhcnRzV2l0aCgnL2FwaS8nKSAtYW5kICRVcmxQYXRo
IC1uZSAnL2FwaS9oZWFydGJlYXQnKSB7CiAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgLS0+ICAk
TWV0aG9kICRVcmxQYXRoIiAtRm9yZWdyb3VuZENvbG9yIERhcmtHcmF5CiAgICAgICAgfQoKICAg
ICAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KICAgICAgICAjIENPUlMgUHJlZmxpZ2h0CiAgICAgICAgIyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAg
ICAgIGlmICgkTWV0aG9kIC1lcSAnT1BUSU9OUycpIHsKICAgICAgICAgICAgJFJlc3BvbnNlLlN0
YXR1c0NvZGUgPSAyMDQKICAgICAgICAgICAgQWRkLVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UK
ICAgICAgICAgICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1N
ZXRob2RzIiwgIkdFVCwgUE9TVCwgT1BUSU9OUyIpCiAgICAgICAgICAgICRSZXNwb25zZS5IZWFk
ZXJzLkFkZCgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJDb250ZW50LVR5cGUiKQog
ICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBjb250aW51ZQogICAgICAg
IH0KCiAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAgICAgICAgIyBBUEktRW5kcHVua3RlCiAgICAgICAgIyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9oZWFydGJlYXQgLS0tCiAgICAgICAgIyBCcm93c2Vy
IHNlbmRldCBhbGxlIDUgU2VrdW5kZW4gZWluZW4gSGVhcnRiZWF0ICh2aWEgV2ViIFdvcmtlciwg
bmllIGdlZHJvc3NlbHQpCiAgICAgICAgIyBTZXJ2ZXIgZmFlaHJ0IGF1dG9tYXRpc2NoIGhlcnVu
dGVyIHdlbm4gMTAgTWludXRlbiBrZWluIEhlYXJ0YmVhdCBrb21tdAogICAgICAgICMgQW50d29y
dCBlbnRoYWVsdCBpZGxlLVNla3VuZGVuIHVuZCBXYXJudW5nIDYwcyB2b3IgU2h1dGRvd24KICAg
ICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2hlYXJ0YmVhdCcgLWFuZCAkTWV0aG9kIC1lcSAn
UE9TVCcpIHsKICAgICAgICAgICAgIyBQZW5kaW5nIFNodXRkb3duIGFiYnJlY2hlbiAoU2VpdGUg
d3VyZGUgbnVyIG5ldSBnZWxhZGVuLCBuaWNodCBnZXNjaGxvc3NlbikKICAgICAgICAgICAgaWYg
KCRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nKSB7CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIg
IEhCICAgU2h1dGRvd24gYWJnZWJyb2NoZW4gLSBTZWl0ZSB3dXJkZSBuZXUgZ2VsYWRlbiAoRjUv
UmVmcmVzaCkiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KICAgICAgICAgICAgICAgICRzY3JpcHQ6
U2h1dGRvd25QZW5kaW5nID0gJG51bGwKICAgICAgICAgICAgfQogICAgICAgICAgICAkSWRsZVNl
YyA9IFtNYXRoXTo6Um91bmQoKChHZXQtRGF0ZSkgLSAkc2NyaXB0Okxhc3RIZWFydGJlYXQpLlRv
dGFsU2Vjb25kcykKICAgICAgICAgICAgJFdhcm5pbmdUaHJlc2hvbGQgPSAkSGVhcnRiZWF0VGlt
ZW91dFNlYyAtIDYwICAjIFdhcm51bmcgNjBzIHZvciBUaW1lb3V0CiAgICAgICAgICAgICRSZW1h
aW5pbmcgPSBbTWF0aF06Ok1heCgwLCAkSGVhcnRiZWF0VGltZW91dFNlYyAtICRJZGxlU2VjKQog
ICAgICAgICAgICAkc2NyaXB0Okxhc3RIZWFydGJlYXQgPSBHZXQtRGF0ZQogICAgICAgICAgICBp
ZiAoJElkbGVTZWMgLWd0ICRXYXJuaW5nVGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICBTZW5k
LUpzb24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IGlkbGUgPSAkSWRsZVNlYzsgd2FybmluZyA9
ICR0cnVlOyByZW1haW5pbmdTZWNvbmRzID0gJFJlbWFpbmluZyB9CiAgICAgICAgICAgICAgICBX
cml0ZS1Ib3N0ICIgIEhCICAgSGVhcnRiZWF0IG5hY2ggJHtJZGxlU2VjfXMgUGF1c2UgLSBXYXJu
dW5nIGdlc2VuZGV0IChub2NoICR7UmVtYWluaW5nfXMpIiAtRm9yZWdyb3VuZENvbG9yIFllbGxv
dwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25z
ZSBAeyBvayA9ICR0cnVlOyBpZGxlID0gJElkbGVTZWM7IHdhcm5pbmcgPSAkZmFsc2U7IHJlbWFp
bmluZ1NlY29uZHMgPSAkUmVtYWluaW5nIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkUmVz
cG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgIyAt
LS0gR0VUIC9hcGkvZW52aXJvbiAtLS0KICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2Vu
dmlyb24nIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsKICAgICAgICAgICAgUmVmcmVzaC1VcGRh
dGVDaGVjawogICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7CiAgICAgICAgICAgICAg
ICB1c2VybmFtZSAgICAgICAgPSAkZW52OlVTRVJOQU1FCiAgICAgICAgICAgICAgICBjb21wdXRl
cm5hbWUgICAgPSAkZW52OkNPTVBVVEVSTkFNRQogICAgICAgICAgICAgICAgdXNlcmRvbWFpbiAg
ICAgID0gJGVudjpVU0VSRE9NQUlOCiAgICAgICAgICAgICAgICB1cGRhdGVBdmFpbGFibGUgPSAk
c2NyaXB0OlVwZGF0ZUF2YWlsYWJsZQogICAgICAgICAgICAgICAgcmVtb3RlVmVyc2lvbiAgID0g
JHNjcmlwdDpSZW1vdGVWZXJzaW9uCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFJlc3BvbnNl
LkNsb3NlKCkKICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIC9hcGkvZW52aXJvbiAgKFVz
ZXI6ICRlbnY6VVNFUk5BTUUpIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgY29u
dGludWUKICAgICAgICB9CgogICAgICAgICMgLS0tIEdFVCAvYXBpL3NjYW4gLS0tCiAgICAgICAg
IyBTY2FubnQgYWxsZSBLYXRlZ29yaWUtVW50ZXJvcmRuZXIgdW5kIGxpZWZlcnQgRG9rdW1lbnQt
RGF0ZWllbgogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvc2NhbicgLWFuZCAkTWV0aG9k
IC1lcSAnR0VUJykgewogICAgICAgICAgICAkRGF0YURpciA9IEpvaW4tUGF0aCAkUm9vdCAiZGF0
YSIKICAgICAgICAgICAgJFJlc3VsdCA9IFtTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0XTo6
bmV3KCkKCiAgICAgICAgICAgIGlmIChUZXN0LVBhdGggJERhdGFEaXIpIHsKICAgICAgICAgICAg
ICAgIEdldC1DaGlsZEl0ZW0gJERhdGFEaXIgLURpcmVjdG9yeSB8IEZvckVhY2gtT2JqZWN0IHsK
ICAgICAgICAgICAgICAgICAgICAkS2F0TmFtZSA9ICRfLk5hbWUKICAgICAgICAgICAgICAgICAg
ICBHZXQtQ2hpbGRJdGVtICRfLkZ1bGxOYW1lIC1GaWx0ZXIgIiouanNvbiIgfCBGb3JFYWNoLU9i
amVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIFt2b2lkXSRSZXN1bHQuQWRkKEB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrYXRlZ29yaWUgPSAkS2F0TmFtZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmlsZW5hbWUgID0gJF8uTmFtZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGF0aCAgICAgID0gImRhdGEvJEthdE5hbWUvJCgkXy5OYW1lKSIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemUgICAgICA9ICRfLkxlbmd0aAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kaWZpZWQgID0gJF8uTGFzdFdyaXRlVGltZVV0Yy5Ub1N0cmluZygibyIpCiAg
ICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7
IGZpbGVzID0gQCgkUmVzdWx0KSB9CiAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAg
ICAgICAgIFdyaXRlLUhvc3QgIiAgQVBJICAvYXBpL3NjYW4gICgkKCRSZXN1bHQuQ291bnQpIERv
a3VtZW50ZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbgogICAgICAgICAgICBjb250aW51ZQogICAg
ICAgIH0KCiAgICAgICAgIyAtLS0gR0VUIC9hcGkvZ292ZXJuYW5jZSAtLS0KICAgICAgICBpZiAo
JFVybFBhdGggLWVxICcvYXBpL2dvdmVybmFuY2UnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsK
ICAgICAgICAgICAgJEdvdiA9IEdldC1Hb3Zlcm5hbmNlCiAgICAgICAgICAgIGlmICgkR292KSB7
CiAgICAgICAgICAgICAgICAkSXNTVSA9IFRlc3QtU3VwZXJVc2VyICRHb3YKICAgICAgICAgICAg
ICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsKICAgICAgICAgICAgICAgICAgICBnb3Zlcm5hbmNl
ID0gJEdvdgogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVc2VyID0gJGVudjpVU0VSTkFNRQog
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnREb21haW4gPSAkZW52OlVTRVJET01BSU4KICAgICAg
ICAgICAgICAgICAgICBpc1N1cGVyVXNlciA9ICRJc1NVCiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7CiAg
ICAgICAgICAgICAgICAgICAgZ292ZXJuYW5jZSA9ICRudWxsCiAgICAgICAgICAgICAgICAgICAg
Y3VycmVudFVzZXIgPSAkZW52OlVTRVJOQU1FCiAgICAgICAgICAgICAgICAgICAgY3VycmVudERv
bWFpbiA9ICRlbnY6VVNFUkRPTUFJTgogICAgICAgICAgICAgICAgICAgIGlzU3VwZXJVc2VyID0g
JHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkUmVzcG9u
c2UuQ2xvc2UoKQogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgL2FwaS9nb3Zlcm5hbmNl
ICAoVXNlcjogJGVudjpVU0VSTkFNRSwgU1U6ICQoVGVzdC1TdXBlclVzZXIgKEdldC1Hb3Zlcm5h
bmNlKSkpIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgY29udGludWUKICAgICAg
ICB9CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9nb3Zlcm5hbmNlIC0tLQogICAgICAgICMgTnVy
IFN1cGVyVXNlciBkYXJmIGdvdmVybmFuY2UuanNvbiBhZW5kZXJuCiAgICAgICAgaWYgKCRVcmxQ
YXRoIC1lcSAnL2FwaS9nb3Zlcm5hbmNlJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgewogICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJEdvdiA9IEdldC1Hb3Zlcm5hbmNlCiAgICAg
ICAgICAgICAgICAkSXNTVSA9IFRlc3QtU3VwZXJVc2VyICRHb3YKICAgICAgICAgICAgICAgIGlm
ICgtbm90ICRJc1NVKSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBA
eyBlcnJvciA9ICJOdXIgU3VwZXJVc2VyIGRhcmYgR292ZXJuYW5jZS1EYXRlbiBhZW5kZXJuIChV
c2VyOiAkZW52OlVTRVJOQU1FKSIgfSA0MDMKICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0
ICIgIEVSUiAgUE9TVCAvYXBpL2dvdmVybmFuY2UgIEFCR0VMRUhOVCAoVXNlcjogJGVudjpVU0VS
TkFNRSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICRCb2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0CiAgICAgICAgICAgICAg
ICAgICAgaWYgKC1ub3QgJEJvZHkgLW9yICRCb2R5Lkxlbmd0aCAtbHQgMikgewogICAgICAgICAg
ICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIkxlZXJlciBSZXF1
ZXN0LUJvZHkiIH0gNDAwCiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJS
ICBQT1NUIC9hcGkvZ292ZXJuYW5jZSAgTGVlcmVyIEJvZHkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVk
CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5l
d0dvdiA9ICRCb2R5IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgICAgICAgICBT
YXZlLUdvdmVybmFuY2UgJE5ld0dvdgogICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24g
JFJlc3BvbnNlIEB7IG9rID0gJHRydWUgfQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1I
b3N0ICIgIEFQSSAgUE9TVCAvYXBpL2dvdmVybmFuY2UgIGFrdHVhbGlzaWVydCB2b24gJGVudjpV
U0VSTkFNRSAoJCgkQm9keS5MZW5ndGgpIEJ5dGVzKSIgLUZvcmVncm91bmRDb2xvciBHcmVlbgog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRj
aCB7CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL2dvdmVybmFu
Y2UgIEVYQ0VQVElPTjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3Ig
UmVkCiAgICAgICAgICAgICAgICB0cnkgeyBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0g
JF8uRXhjZXB0aW9uLk1lc3NhZ2UgfSA1MDAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAgICAg
ICAgICAgIHRyeSB7ICRSZXNwb25zZS5DbG9zZSgpIH0gY2F0Y2gge30KICAgICAgICAgICAgY29u
dGludWUKICAgICAgICB9CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9sb2NrIC0tLQogICAgICAg
ICMgU2V0enQgZWluZW4gTG9jayBhdWYgZWluIERva3VtZW50IChQZXNzaW1pc3RpYyBMb2NraW5n
KQogICAgICAgICMgQm9keTogeyAiZG9jSWQiOiAiRDAwMSIgfQogICAgICAgICMgTG9jay1EYXRl
aWVuOiBkYXRhLy5sb2Nrcy9EMDAxLmxvY2sgKEpTT04gbWl0IHVzZXJuYW1lICsgdGltZXN0YW1w
KQogICAgICAgICMgTG9ja3MgdmVyZmFsbGVuIGF1dG9tYXRpc2NoIG5hY2ggMTAgTWludXRlbiAo
U3RhbGUtTG9jay1Qcm90ZWN0aW9uKQogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvbG9j
aycgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgICAgICRCb2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0CiAgICAgICAgICAgICAgICAkUGFyc2Vk
ID0gJEJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uCiAgICAgICAgICAgICAgICAkRG9jSWQgPSAkUGFy
c2VkLmRvY0lkCiAgICAgICAgICAgICAgICAkTG9ja0RpciA9IEpvaW4tUGF0aCAkUm9vdCAiZGF0
YS8ubG9ja3MiCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoICRMb2NrRGlyKSkg
eyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRMb2NrRGlyIC1Gb3JjZSB8IE91
dC1OdWxsIH0KICAgICAgICAgICAgICAgICRMb2NrRmlsZSA9IEpvaW4tUGF0aCAkTG9ja0RpciAi
JERvY0lkLmxvY2siCgogICAgICAgICAgICAgICAgIyBQcnVlZmVuIG9iIGJlcmVpdHMgZ2Vsb2Nr
dCAodW5kIExvY2sgbmljaHQgYWJnZWxhdWZlbikKICAgICAgICAgICAgICAgIGlmIChUZXN0LVBh
dGggJExvY2tGaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgJEV4aXN0aW5nID0gR2V0LUNvbnRl
bnQgJExvY2tGaWxlIC1SYXcgLUVuY29kaW5nIFVURjggfCBDb252ZXJ0RnJvbS1Kc29uCiAgICAg
ICAgICAgICAgICAgICAgJExvY2tUaW1lID0gW0RhdGVUaW1lXTo6UGFyc2UoJEV4aXN0aW5nLmxv
Y2tlZEF0KQogICAgICAgICAgICAgICAgICAgICRNaW51dGVzU2luY2UgPSAoKEdldC1EYXRlKSAt
ICRMb2NrVGltZSkuVG90YWxNaW51dGVzCgogICAgICAgICAgICAgICAgICAgIGlmICgkTWludXRl
c1NpbmNlIC1sdCAxMCAtYW5kICRFeGlzdGluZy51c2VybmFtZSAtbmUgJGVudjpVU0VSTkFNRSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAjIExvY2sgaXN0IGFrdGl2IHVuZCB2b24gZWluZW0g
YW5kZXJlbiBVc2VyCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2Ug
QHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZCA9ICR0cnVlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBieSA9ICRFeGlzdGluZy51c2VybmFtZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2luY2UgPSAkRXhpc3RpbmcubG9ja2VkQXQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1pbnV0ZXMgPSBbTWF0aF06OlJvdW5kKCRNaW51dGVzU2luY2UsIDEpCiAgICAg
ICAgICAgICAgICAgICAgICAgIH0gNDA5CiAgICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25z
ZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgQVBJICBQT1NU
IC9hcGkvbG9jayAgJERvY0lkIEJFTEVHVCB2b24gJCgkRXhpc3RpbmcudXNlcm5hbWUpIiAtRm9y
ZWdyb3VuZENvbG9yIFllbGxvdwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAjIExvY2sgYWJnZWxhdWZlbiBv
ZGVyIGVpZ2VuZXIgTG9jayAtPiB1ZWJlcnNjaHJlaWJlbgogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgICMgTG9jayBzZXR6ZW4KICAgICAgICAgICAgICAgICRMb2NrRGF0YSA9IEB7
CiAgICAgICAgICAgICAgICAgICAgZG9jSWQgPSAkRG9jSWQKICAgICAgICAgICAgICAgICAgICB1
c2VybmFtZSA9ICRlbnY6VVNFUk5BTUUKICAgICAgICAgICAgICAgICAgICBsb2NrZWRBdCA9IChH
ZXQtRGF0ZSkuVG9TdHJpbmcoIm8iKQogICAgICAgICAgICAgICAgfSB8IENvbnZlcnRUby1Kc29u
IC1Db21wcmVzcwogICAgICAgICAgICAgICAgVW5wcm90ZWN0LUZpbGUgJExvY2tGaWxlCiAgICAg
ICAgICAgICAgICBbSU8uRmlsZV06OldyaXRlQWxsVGV4dCgkTG9ja0ZpbGUsICRMb2NrRGF0YSwg
W1RleHQuVVRGOEVuY29kaW5nXTo6bmV3KCRmYWxzZSkpCiAgICAgICAgICAgICAgICBTZW5kLUpz
b24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IGRvY0lkID0gJERvY0lkIH0KICAgICAgICAgICAg
ICAgIFdyaXRlLUhvc3QgIiAgQVBJICBQT1NUIC9hcGkvbG9jayAgJERvY0lkIGdlbG9ja3Qgdm9u
ICRlbnY6VVNFUk5BTUUiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbgogICAgICAgICAgICB9IGNhdGNo
IHsKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9hcGkvbG9jayAgJCgk
Xy5FeGNlcHRpb24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAg
ICB0cnkgeyBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gJF8uRXhjZXB0aW9uLk1lc3Nh
Z2UgfSA1MDAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7ICRSZXNw
b25zZS5DbG9zZSgpIH0gY2F0Y2gge30KICAgICAgICAgICAgY29udGludWUKICAgICAgICB9Cgog
ICAgICAgICMgLS0tIFBPU1QgL2FwaS91bmxvY2sgLS0tCiAgICAgICAgIyBHaWJ0IGVpbmVuIExv
Y2sgZnJlaS4gQm9keTogeyAiZG9jSWQiOiAiRDAwMSIgfQogICAgICAgICMgTnVyIGRlciBMb2Nr
LUluaGFiZXIgb2RlciBTdXBlclVzZXIga2FubiBmcmVpZ2ViZW4KICAgICAgICBpZiAoJFVybFBh
dGggLWVxICcvYXBpL3VubG9jaycgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsKICAgICAgICAg
ICAgdHJ5IHsKICAgICAgICAgICAgICAgICRCb2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0CiAgICAg
ICAgICAgICAgICAkUGFyc2VkID0gJEJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uCiAgICAgICAgICAg
ICAgICAkRG9jSWQgPSAkUGFyc2VkLmRvY0lkCiAgICAgICAgICAgICAgICAkTG9ja0ZpbGUgPSBK
b2luLVBhdGggJFJvb3QgImRhdGEvLmxvY2tzLyREb2NJZC5sb2NrIgoKICAgICAgICAgICAgICAg
IGlmIChUZXN0LVBhdGggJExvY2tGaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgJEV4aXN0aW5n
ID0gR2V0LUNvbnRlbnQgJExvY2tGaWxlIC1SYXcgLUVuY29kaW5nIFVURjggfCBDb252ZXJ0RnJv
bS1Kc29uCiAgICAgICAgICAgICAgICAgICAgJEdvdiA9IEdldC1Hb3Zlcm5hbmNlCiAgICAgICAg
ICAgICAgICAgICAgJElzU1UgPSBUZXN0LVN1cGVyVXNlciAkR292CgogICAgICAgICAgICAgICAg
ICAgIGlmICgkRXhpc3RpbmcudXNlcm5hbWUgLWVxICRlbnY6VVNFUk5BTUUgLW9yICRJc1NVKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZS1JdGVtICRMb2NrRmlsZSAtRm9yY2UKICAg
ICAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBvayA9ICR0cnVlOyBk
b2NJZCA9ICREb2NJZCB9CiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgQVBJ
ICBQT1NUIC9hcGkvdW5sb2NrICAkRG9jSWQgZnJlaWdlZ2ViZW4iIC1Gb3JlZ3JvdW5kQ29sb3Ig
R3JlZW4KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIkxvY2sgZ2Vob2VydCAkKCRFeGlzdGlu
Zy51c2VybmFtZSkiIH0gNDAzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IG9rID0g
JHRydWU7IGRvY0lkID0gJERvY0lkIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBj
YXRjaCB7CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL3VubG9j
ayAgJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAg
ICAgICAgICB0cnkgeyBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gJF8uRXhjZXB0aW9u
Lk1lc3NhZ2UgfSA1MDAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7
ICRSZXNwb25zZS5DbG9zZSgpIH0gY2F0Y2gge30KICAgICAgICAgICAgY29udGludWUKICAgICAg
ICB9CgogICAgICAgICMgLS0tIEdFVCAvYXBpL2xvY2tzIC0tLQogICAgICAgICMgTGlzdGV0IGFs
bGUgYWt0aXZlbiBMb2NrcyBhdWYgKGZ1ZXIgVUktQW56ZWlnZSkKICAgICAgICBpZiAoJFVybFBh
dGggLWVxICcvYXBpL2xvY2tzJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7CiAgICAgICAgICAg
ICRMb2NrRGlyID0gSm9pbi1QYXRoICRSb290ICJkYXRhLy5sb2NrcyIKICAgICAgICAgICAgJExv
Y2tzID0gW1N5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3RdOjpuZXcoKQogICAgICAgICAgICBp
ZiAoVGVzdC1QYXRoICRMb2NrRGlyKSB7CiAgICAgICAgICAgICAgICBHZXQtQ2hpbGRJdGVtICRM
b2NrRGlyIC1GaWx0ZXIgIioubG9jayIgfCBGb3JFYWNoLU9iamVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgJExvY2sgPSBHZXQtQ29udGVudCAk
Xy5GdWxsTmFtZSAtUmF3IC1FbmNvZGluZyBVVEY4IHwgQ29udmVydEZyb20tSnNvbgogICAgICAg
ICAgICAgICAgICAgICAgICAkTG9ja1RpbWUgPSBbRGF0ZVRpbWVdOjpQYXJzZSgkTG9jay5sb2Nr
ZWRBdCkKICAgICAgICAgICAgICAgICAgICAgICAgJE1pbnV0ZXNTaW5jZSA9ICgoR2V0LURhdGUp
IC0gJExvY2tUaW1lKS5Ub3RhbE1pbnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRN
aW51dGVzU2luY2UgLWx0IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdm9pZF0k
TG9ja3MuQWRkKEB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jSWQgPSAkTG9j
ay5kb2NJZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lID0gJExvY2su
dXNlcm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZWRBdCA9ICRMb2Nr
LmxvY2tlZEF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlcyA9IFtNYXRo
XTo6Um91bmQoJE1pbnV0ZXNTaW5jZSwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p
CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjIEFiZ2VsYXVmZW5lbiBMb2NrIGF1ZnJhZXVtZW4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbW92ZS1JdGVtICRfLkZ1bGxOYW1lIC1Gb3JjZQogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgbG9ja3MgPSBA
KCRMb2NrcykgfQogICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBXcml0
ZS1Ib3N0ICIgIEFQSSAgL2FwaS9sb2NrcyAgKCQoJExvY2tzLkNvdW50KSBha3RpdmUgTG9ja3Mp
IiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgY29udGludWUKICAgICAgICB9Cgog
ICAgICAgICMgLS0tIFBPU1QgL2FwaS93cml0ZSAtLS0KICAgICAgICAjIEJvZHk6IHsgInBhdGgi
OiAiZGF0YS9WZXJrZWhyL0QwMDFfeHh4Lmpzb24iLCAiZGF0YSI6IHsgLi4uIH0gfQogICAgICAg
IGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvd3JpdGUnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7
CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkQm9keSA9IFJlYWQtQm9keSAkUmVx
dWVzdAogICAgICAgICAgICAgICAgJFBhcnNlZCA9ICRCb2R5IHwgQ29udmVydEZyb20tSnNvbgog
ICAgICAgICAgICAgICAgJFJlbFBhdGggPSAkUGFyc2VkLnBhdGgKICAgICAgICAgICAgICAgICRT
YWZlUGF0aCA9IFJlc29sdmUtU2FmZVBhdGggJFJlbFBhdGgKCiAgICAgICAgICAgICAgICBpZiAo
LW5vdCAkU2FmZVBhdGgpIHsKICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNl
IEB7IGVycm9yID0gIlVuZ3VlbHRpZ2VyIFBmYWQiIH0gNDAwCiAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICMgU2NocmVpYnNjaHV0ejogZ292ZXJuYW5jZS5qc29u
IGlzdCB1ZWJlciAvYXBpL3dyaXRlIG5pY2h0IGJlc2NocmVpYmJhci4KICAgICAgICAgICAgICAg
ICAgICBpZiAoJFJlbFBhdGggLWVxICdkYXRhL2dvdmVybmFuY2UuanNvbicpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJnb3Zlcm5hbmNl
Lmpzb24ga2FubiBudXIgdWViZXIgL2FwaS9nb3Zlcm5hbmNlIGdlYWVuZGVydCB3ZXJkZW4iIH0g
NDAzCiAgICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICAjIFNjaHJlaWJzY2h1dHo6IGNvbmZpZy5qc29uIG51ciBkdXJjaCBTdXBlclVzZXIg
YWVuZGVyYmFyLgogICAgICAgICAgICAgICAgICAgIGlmICgkUmVsUGF0aCAtZXEgJ2RhdGEvY29u
ZmlnLmpzb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5j
ZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1TdXBlclVzZXIgJEdvdikp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJy
b3IgPSAiY29uZmlnLmpzb24ga2FubiBudXIgdm9uIFN1cGVyVXNlcm4gZ2VhZW5kZXJ0IHdlcmRl
biIgfSA0MDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQ
T1NUIC9hcGkvd3JpdGUgIGNvbmZpZy5qc29uIEJlcmVjaHRpZ3VuZyB2ZXJ3ZWlnZXJ0ICgkZW52
OlVTRVJOQU1FKSIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgICAgICAkRG9jRGF0YSA9ICRQYXJzZWQuZGF0YQoKICAgICAgICAgICAgICAgICAg
ICAjIFVudGVyc2NoZWlkdW5nOiBKU09OLURva3VtZW50IChQU0N1c3RvbU9iamVjdC9IYXNodGFi
bGUvQXJyYXkpIHZzLiBSb2hkYXRlbiAoU3RyaW5nLCB6LkIuIEhUTUwpCiAgICAgICAgICAgICAg
ICAgICAgaWYgKCREb2NEYXRhIC1pcyBbUFNDdXN0b21PYmplY3RdIC1vciAkRG9jRGF0YSAtaXMg
W0hhc2h0YWJsZV0gLW9yICREb2NEYXRhIC1pcyBbU3lzdGVtLk9iamVjdFtdXSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAjIFN0YXR1c2FlbmRlcnVuZyBhdWYgIkZyZWlnZWdlYmVuIiBvZGVy
ICJBYmdlbGVobnQiIGVyZm9yZGVydCBSZXZpZXdlci0KICAgICAgICAgICAgICAgICAgICAgICAg
IyBvZGVyIFN1cGVyVXNlci1CZXJlY2h0aWd1bmcuIERlciBTZXJ2ZXIgcHJ1ZWZ0IGRpZXMgdW5h
YmhhZW5naWcgdm9tIENsaWVudC4KICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1N0YXR1cyA9
ICRudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkRG9jRGF0YS5zdGF0dXMpIHsgJE5l
d1N0YXR1cyA9ICREb2NEYXRhLnN0YXR1cyB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JE5ld1N0YXR1cyAtZXEgJ0ZyZWlnZWdlYmVuJyAtb3IgJE5ld1N0YXR1cyAtZXEgJ0FiZ2VsZWhu
dCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5jZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJERvY0thdCA9ICRudWxsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJERvY0RhdGEua2F0ZWdvcmllKSB7ICREb2NLYXQgPSAkRG9jRGF0
YS5rYXRlZ29yaWUgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElzU1UgPSBUZXN0LVN1
cGVyVXNlciAkR292CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXNSZXYgPSBUZXN0LVJl
dmlld2VyICRHb3YgJERvY0thdAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtbm90
ICRJc1NVIC1hbmQgLW5vdCAkSXNSZXYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIktlaW5lIEJlcmVjaHRpZ3VuZyBmdWVy
IFN0YXR1cyAnJE5ld1N0YXR1cycgaW4gS2F0ZWdvcmllICckRG9jS2F0JyIgfSA0MDMKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL3dy
aXRlICBTdGF0dXMtQmVyZWNodGlndW5nIHZlcndlaWdlcnQgKCRlbnY6VVNFUk5BTUUgLT4gJE5l
d1N0YXR1cykiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRXcml0ZUNvbnRlbnQgPSAkRG9jRGF0YSB8
IENvbnZlcnRUby1Kc29uIC1EZXB0aCAyMAogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICMgUm9oZGF0ZW4gKEhUTUwtU3RyaW5ncyBmdWVyIFN0YXJ0
c2VpdGUsIEhpbGZlLUluaGFsdCwgZXRjLikKICAgICAgICAgICAgICAgICAgICAgICAgJFdyaXRl
Q29udGVudCA9IFtzdHJpbmddJERvY0RhdGEKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgICMgT3JkbmVyIGVyc3RlbGxlbiBmYWxscyBub2V0aWcKICAgICAgICAgICAg
ICAgICAgICAkRGlyID0gW0lPLlBhdGhdOjpHZXREaXJlY3RvcnlOYW1lKCRTYWZlUGF0aCkKICAg
ICAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoICREaXIpKSB7IE5ldy1JdGVtIC1J
dGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJERpciAtRm9yY2UgfCBPdXQtTnVsbCB9CgogICAgICAg
ICAgICAgICAgICAgICMgU2NocmVpYnNjaHV0eiBhdWZoZWJlbiwgSW5oYWx0IHNjaHJlaWJlbiwg
U2NocmVpYnNjaHV0eiBzZXR6ZW4KICAgICAgICAgICAgICAgICAgICBVbnByb3RlY3QtRmlsZSAk
U2FmZVBhdGgKICAgICAgICAgICAgICAgICAgICBbSU8uRmlsZV06OldyaXRlQWxsVGV4dCgkU2Fm
ZVBhdGgsICRXcml0ZUNvbnRlbnQsIFtUZXh0LlVURjhFbmNvZGluZ106Om5ldygkZmFsc2UpKQog
ICAgICAgICAgICAgICAgICAgIFByb3RlY3QtRmlsZSAkU2FmZVBhdGgKCiAgICAgICAgICAgICAg
ICAgICAgJEZpbGVJbmZvID0gR2V0LUl0ZW0gJFNhZmVQYXRoCiAgICAgICAgICAgICAgICAgICAg
U2VuZC1Kc29uICRSZXNwb25zZSBAewogICAgICAgICAgICAgICAgICAgICAgICBvayAgICAgICA9
ICR0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggICAgID0gJFJlbFBhdGgKICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSAkRmlsZUluZm8uTGFzdFdyaXRlVGltZVV0Yy5U
b1N0cmluZygibyIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIFdy
aXRlLUhvc3QgIiAgQVBJICBQT1NUIC9hcGkvd3JpdGUgICRSZWxQYXRoIiAtRm9yZWdyb3VuZENv
bG9yIEdyZWVuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggewogICAgICAg
ICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS93cml0ZSAgJCgkXy5FeGNlcHRp
b24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICAjIFNjaHJl
aWJzY2h1dHogd2llZGVyaGVyc3RlbGxlbiBmYWxscyBhdWZnZWhvYmVuCiAgICAgICAgICAgICAg
ICBpZiAoJFNhZmVQYXRoKSB7IHRyeSB7IFByb3RlY3QtRmlsZSAkU2FmZVBhdGggfSBjYXRjaCB7
fSB9CiAgICAgICAgICAgICAgICB0cnkgeyBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0g
JF8uRXhjZXB0aW9uLk1lc3NhZ2UgfSA1MDAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAgICAg
ICAgICAgIHRyeSB7ICRSZXNwb25zZS5DbG9zZSgpIH0gY2F0Y2gge30KICAgICAgICAgICAgY29u
dGludWUKICAgICAgICB9CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9kZWxldGUgLS0tCiAgICAg
ICAgIyBCb2R5OiB7ICJwYXRoIjogImRhdGEvVmVya2Voci9EMDAxX3h4eC5qc29uIiB9CiAgICAg
ICAgIyBBdXRvcmlzaWVydW5nOgogICAgICAgICMgICAtIEFydGlrZWwgKGRhdGEvS2F0L0R4eHgu
anNvbikgdW5kIE1lZGlhIChtZWRpYS8uLi4pOiBKZWRlciBhdXRoZW50aWZpemllcnRlIFVzZXIK
ICAgICAgICAjICAgICAoUGFwaWVya29yYi1Xb3JrZmxvdyBpbSBGcm9udGVuZCBwcnVlZnQgTlct
S2VubnVuZyArIFNvZnQtRGVsZXRlKQogICAgICAgICMgICAtIFN5c3RlbWRhdGVpZW4gKGNvbmZp
Zy5qc29uLCBnb3Zlcm5hbmNlLmpzb24sIC50cmFzaC5qc29uIGV0Yy4pOiBOdXIgU1UvRkEKICAg
ICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2RlbGV0ZScgLWFuZCAkTWV0aG9kIC1lcSAnUE9T
VCcpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRCb2R5ID0gUmVhZC1Cb2R5
ICRSZXF1ZXN0CiAgICAgICAgICAgICAgICAkUGFyc2VkID0gJEJvZHkgfCBDb252ZXJ0RnJvbS1K
c29uCiAgICAgICAgICAgICAgICAkUmVsUGF0aCA9ICRQYXJzZWQucGF0aAoKICAgICAgICAgICAg
ICAgICMgU3lzdGVtZGF0ZWllbiBzY2h1ZXR6ZW46IE51ciBTdXBlclVzZXIvRmFjaGF1ZnNpY2h0
CiAgICAgICAgICAgICAgICAkSXNTeXN0ZW1GaWxlID0gKCRSZWxQYXRoIC1lcSAnZGF0YS9jb25m
aWcuanNvbicgLW9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSZWxQYXRoIC1l
cSAnZGF0YS9nb3Zlcm5hbmNlLmpzb24nIC1vcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkUmVsUGF0aCAtbWF0Y2ggJ15kYXRhWy9cXF1cLicpCiAgICAgICAgICAgICAgICBpZiAo
JElzU3lzdGVtRmlsZSkgewogICAgICAgICAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5j
ZQogICAgICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVN1cGVyVXNlciAkR292KSAtYW5k
IC1ub3QgKFRlc3QtRmFjaGF1ZnNpY2h0ICRHb3YpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiTnVyIFN1cGVyVXNlciB1bmQgRmFjaGF1
ZnNpY2h0IGR1ZXJmZW4gU3lzdGVtZGF0ZWllbiBsb2VzY2hlbiIgfSA0MDMKICAgICAgICAgICAg
ICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS9kZWxldGUgIFN5c3RlbWRh
dGVpLUJlcmVjaHRpZ3VuZyB2ZXJ3ZWlnZXJ0ICgkZW52OlVTRVJOQU1FIC0+ICRSZWxQYXRoKSIg
LUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNs
b3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNhZmVQYXRoID0gUmVzb2x2
ZS1TYWZlUGF0aCAkUmVsUGF0aAoKICAgICAgICAgICAgICAgIGlmICgtbm90ICRTYWZlUGF0aCkg
ewogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiVW5n
dWVsdGlnZXIgUGZhZCIgfSA0MDAKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChUZXN0LVBhdGgg
JFNhZmVQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgVW5wcm90ZWN0LUZpbGUgJFNhZmVQYXRo
CiAgICAgICAgICAgICAgICAgICAgUmVtb3ZlLUl0ZW0gJFNhZmVQYXRoIC1SZWN1cnNlIC1Gb3Jj
ZQogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgb2sgPSAkdHJ1ZTsg
cGF0aCA9ICRSZWxQYXRoIH0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAg
UE9TVCAvYXBpL2RlbGV0ZSAgJFJlbFBhdGggKHZvbiAkZW52OlVTRVJOQU1FKSIgLUZvcmVncm91
bmRDb2xvciBZZWxsb3cKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJEYXRlaSBuaWNodCBnZWZ1bmRlbiIg
fSA0MDQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAg
ICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL2RlbGV0ZSAgJCgkXy5FeGNlcHRpb24u
TWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICB0cnkgeyBTZW5k
LUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gJF8uRXhjZXB0aW9uLk1lc3NhZ2UgfSA1MDAgfSBj
YXRjaCB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7ICRSZXNwb25zZS5DbG9zZSgp
IH0gY2F0Y2gge30KICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgICMgLS0t
IFBPU1QgL2FwaS9mZXRjaC1pbWFnZT91cmw9aHR0cHM6Ly8uLi4gLS0tCiAgICAgICAgIyBQcm94
eTogRXh0ZXJuZXMgQmlsZCBoZXJ1bnRlcmxhZGVuIChmdWVyIFBhc3RlIGF1cyBXV1csIHVtZ2Vo
dCBDT1JTKQogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvZmV0Y2gtaW1hZ2UnIC1hbmQg
JE1ldGhvZCAtZXEgJ1BPU1QnKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAk
Qm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdAogICAgICAgICAgICAgICAgJFBhcnNlZCA9ICRCb2R5
IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgJEltZ1VybCA9ICRQYXJzZWQudXJs
CgogICAgICAgICAgICAgICAgIyBOdXIgaHR0cC9odHRwcyBVUkxzIGVybGF1YmVuCiAgICAgICAg
ICAgICAgICBpZiAoJEltZ1VybCAtbm90bWF0Y2ggJ15odHRwcz86Ly8nKSB7CiAgICAgICAgICAg
ICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJOdXIgSFRUUC9IVFRQUyBV
UkxzIGVybGF1YnQiIH0gNDAwCiAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkK
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICMgU1NSRi1TY2h1dHo6IFByaXZhdGUgSVBzIHVuZCBsb2NhbGhvc3QgYmxvY2tpZXJl
bgogICAgICAgICAgICAgICAgJFBhcnNlZFVyaSA9IFtTeXN0ZW0uVXJpXSRJbWdVcmwKICAgICAg
ICAgICAgICAgICRJbWdIb3N0ID0gJFBhcnNlZFVyaS5Ib3N0CiAgICAgICAgICAgICAgICBpZiAo
JEltZ0hvc3QgLW1hdGNoICdeKGxvY2FsaG9zdHwxMjdcLnwxMFwufDE5MlwuMTY4XC58MTcyXC4o
MVs2LTldfDJbMC05XXwzWzAxXSlcLnwwXC4wXC4wXC4wfDE2OVwuMjU0XC4pJyAtb3IgJEltZ0hv
c3QgLWVxICc6OjEnKSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBA
eyBlcnJvciA9ICJadWdyaWZmIGF1ZiBpbnRlcm5lIEFkcmVzc2VuIG5pY2h0IGVybGF1YnQiIH0g
NDAzCiAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRXZWJDbGll
bnQgPSBOZXctT2JqZWN0IFN5c3RlbS5OZXQuV2ViQ2xpZW50CiAgICAgICAgICAgICAgICAkV2Vi
Q2xpZW50LkhlYWRlcnMuQWRkKCJVc2VyLUFnZW50IiwgIk1vemlsbGEvNS4wIERSSVZFLVBvcnRh
bC8zLjYiKQogICAgICAgICAgICAgICAgJEltZ0J5dGVzID0gJFdlYkNsaWVudC5Eb3dubG9hZERh
dGEoJEltZ1VybCkKICAgICAgICAgICAgICAgICRDb250ZW50VHlwZSA9ICRXZWJDbGllbnQuUmVz
cG9uc2VIZWFkZXJzWyJDb250ZW50LVR5cGUiXQogICAgICAgICAgICAgICAgJFdlYkNsaWVudC5E
aXNwb3NlKCkKCiAgICAgICAgICAgICAgICAjIE51ciBCaWxkZXIgZHVyY2hsYXNzZW4KICAgICAg
ICAgICAgICAgIGlmICgkQ29udGVudFR5cGUgLW5vdGxpa2UgJ2ltYWdlLyonKSB7CiAgICAgICAg
ICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJLZWluIEJpbGQ6ICRD
b250ZW50VHlwZSIgfSA0MDAKICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQog
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgJFJlc3BvbnNlLlN0YXR1c0NvZGUgPSAyMDAKICAgICAgICAgICAgICAgICRSZXNwb25z
ZS5Db250ZW50VHlwZSA9ICRDb250ZW50VHlwZQogICAgICAgICAgICAgICAgQWRkLVNlY3VyaXR5
SGVhZGVycyAkUmVzcG9uc2UKICAgICAgICAgICAgICAgICRSZXNwb25zZS5Db250ZW50TGVuZ3Ro
NjQgPSAkSW1nQnl0ZXMuTGVuZ3RoCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuT3V0cHV0U3Ry
ZWFtLldyaXRlKCRJbWdCeXRlcywgMCwgJEltZ0J5dGVzLkxlbmd0aCkKICAgICAgICAgICAgICAg
IFdyaXRlLUhvc3QgIiAgQVBJICBQT1NUIC9hcGkvZmV0Y2gtaW1hZ2UgICQoJEltZ0J5dGVzLkxl
bmd0aCkgQnl0ZXMgdm9uICRJbWdVcmwiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbgogICAgICAgICAg
ICB9IGNhdGNoIHsKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9hcGkv
ZmV0Y2gtaW1hZ2UgICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJl
ZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJE
b3dubG9hZCBmZWhsZ2VzY2hsYWdlbjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiIH0gNTAwIH0g
Y2F0Y2gge30KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2Uo
KSB9IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0t
LSBQT1NUIC9hcGkvdXBsb2FkP3BhdGg9bWVkaWEvRDAwMS9iaWxkLnBuZyAtLS0KICAgICAgICAj
IEFremVwdGllcnQgcm9oZSBCeXRlcyB1bmQgbXVsdGlwYXJ0L2Zvcm0tZGF0YSAoRm9ybURhdGEp
IFVwbG9hZHMuCiAgICAgICAgIyBOdXIgc2ljaGVyZSBNZWRpZW5mb3JtYXRlIGVybGF1YnQgKEJp
bGRlciwgUERGLCBWaWRlbywgQXVkaW8pLgogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkv
dXBsb2FkJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgewogICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgIyBQZmFkIG1hbnVlbGwgYXVzIFJhdy1VUkwgZXh0cmFoaWVyZW4gdW5kIFVU
Ri04IGRla29kaWVyZW4KICAgICAgICAgICAgICAgICMgKFF1ZXJ5U3RyaW5nIHZlcndlbmRldCBh
dWYgbWFuY2hlbiBXaW5kb3dzLVN5c3RlbWVuIGRpZSBTeXN0ZW1jb2RlcGFnZSBzdGF0dCBVVEYt
OCkKICAgICAgICAgICAgICAgICRSYXdRdWVyeSA9ICRSZXF1ZXN0LlVybC5RdWVyeQogICAgICAg
ICAgICAgICAgJFBhdGhNYXRjaCA9IFtyZWdleF06Ok1hdGNoKCRSYXdRdWVyeSwgJ3BhdGg9KFte
Jl0rKScpCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkUGF0aE1hdGNoLlN1Y2Nlc3MpIHsKICAg
ICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIktlaW4gcGF0
aC1QYXJhbWV0ZXIiIH0gNDAwCiAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkK
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgJFJlbFBhdGggPSBbU3lzdGVtLlVyaV06OlVuZXNjYXBlRGF0YVN0cmluZygkUGF0aE1h
dGNoLkdyb3Vwc1sxXS5WYWx1ZSkKCiAgICAgICAgICAgICAgICAjIERhdGVpdHlwLVdoaXRlbGlz
dDogTnVyIHNpY2hlcmUgTWVkaWVuZm9ybWF0ZSBlcmxhdWJlbgogICAgICAgICAgICAgICAgJFVw
bG9hZEV4dCA9IFtJTy5QYXRoXTo6R2V0RXh0ZW5zaW9uKCRSZWxQYXRoKS5Ub0xvd2VyKCkKICAg
ICAgICAgICAgICAgICRBbGxvd2VkVXBsb2FkRXh0cyA9IEAoJy5qcGcnLCcuanBlZycsJy5wbmcn
LCcuZ2lmJywnLndlYnAnLCcuc3ZnJywnLmljbycsJy5ibXAnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLnBkZicsJy5tcDQnLCcud2VibScsJy5tcDMnLCcub2dnJywn
LndhdicpCiAgICAgICAgICAgICAgICBpZiAoJFVwbG9hZEV4dCAtbm90aW4gJEFsbG93ZWRVcGxv
YWRFeHRzKSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJv
ciA9ICJEYXRlaXR5cCAnJFVwbG9hZEV4dCcgaXN0IG5pY2h0IGVybGF1YnQuIEVybGF1YnQ6IEJp
bGRlciwgUERGLCBWaWRlbywgQXVkaW8uIiB9IDQwMAogICAgICAgICAgICAgICAgICAgIFdyaXRl
LUhvc3QgIiAgRVJSICBQT1NUIC9hcGkvdXBsb2FkICBEYXRlaXR5cCBhYmdlbGVobnQ6ICRVcGxv
YWRFeHQgKCRSZWxQYXRoKSIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAgICAg
ICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNhZmVQYXRoID0gUmVzb2x2ZS1TYWZlUGF0aCAk
UmVsUGF0aAoKICAgICAgICAgICAgICAgIGlmICgtbm90ICRTYWZlUGF0aCkgewogICAgICAgICAg
ICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiVW5ndWVsdGlnZXIgUGZh
ZCIgfSA0MDAKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIyBP
cmRuZXIgZXJzdGVsbGVuCiAgICAgICAgICAgICAgICAgICAgJERpciA9IFtJTy5QYXRoXTo6R2V0
RGlyZWN0b3J5TmFtZSgkU2FmZVBhdGgpCiAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRl
c3QtUGF0aCAkRGlyKSkgeyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICREaXIg
LUZvcmNlIHwgT3V0LU51bGwgfQoKICAgICAgICAgICAgICAgICAgICAjIEJvZHkgbGVzZW4gKG1h
eC4gMTAwIE1CKQogICAgICAgICAgICAgICAgICAgICRNYXhVcGxvYWRCeXRlcyA9IDEwMCAqIDEw
MjQgKiAxMDI0CiAgICAgICAgICAgICAgICAgICAgJE1lbVN0cmVhbSA9IE5ldy1PYmplY3QgSU8u
TWVtb3J5U3RyZWFtCiAgICAgICAgICAgICAgICAgICAgJFJlcXVlc3QuSW5wdXRTdHJlYW0uQ29w
eVRvKCRNZW1TdHJlYW0pCiAgICAgICAgICAgICAgICAgICAgJFJhd0J5dGVzID0gJE1lbVN0cmVh
bS5Ub0FycmF5KCkKICAgICAgICAgICAgICAgICAgICAkTWVtU3RyZWFtLkRpc3Bvc2UoKQoKICAg
ICAgICAgICAgICAgICAgICBpZiAoJFJhd0J5dGVzLkxlbmd0aCAtZ3QgJE1heFVwbG9hZEJ5dGVz
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3Ig
PSAiRGF0ZWkgenUgZ3Jvc3MgKG1heC4gMTAwIE1CKSIgfSA0MTMKICAgICAgICAgICAgICAgICAg
ICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS91cGxvYWQgIFp1IGdyb3NzOiAkKCRS
YXdCeXRlcy5MZW5ndGgpIEJ5dGVzICgkUmVsUGF0aCkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAg
ICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAjIE11bHRpcGFydC9mb3JtLWRhdGE6IERhdGVpLUJ5dGVzIGF1cyBCb2R5IGV4dHJhaGllcmVu
CiAgICAgICAgICAgICAgICAgICAgJENUID0gJFJlcXVlc3QuQ29udGVudFR5cGUKICAgICAgICAg
ICAgICAgICAgICBpZiAoJENUIC1hbmQgJENULkNvbnRhaW5zKCdtdWx0aXBhcnQvZm9ybS1kYXRh
JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEJvdW5kYXJ5TWF0Y2ggPSBbcmVnZXhdOjpN
YXRjaCgkQ1QsICdib3VuZGFyeT0oLispJykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRC
b3VuZGFyeU1hdGNoLlN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRCb3Vu
ZGFyeSA9IFtUZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcygnLS0nICsgJEJvdW5kYXJ5TWF0
Y2guR3JvdXBzWzFdLlZhbHVlLlRyaW0oJyInKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgRGF0ZWktUGFydCBmaW5kZW46IHN1Y2hlIG5hY2ggImZpbGVuYW1lPSIgaW0gSGVhZGVyLCBl
eHRyYWhpZXJlIERhdGVuIG5hY2ggXHJcblxyXG4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRSYXcgPSAkUmF3Qnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZWVkbGUgPSBb
VGV4dC5FbmNvZGluZ106OlVURjguR2V0Qnl0ZXMoJ2ZpbGVuYW1lPScpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkSGVhZGVyRW5kID0gW1RleHQuRW5jb2RpbmddOjpVVEY4LkdldEJ5dGVz
KFtjaGFyXTEzICsgW2NoYXJdMTAgKyBbY2hhcl0xMyArIFtjaGFyXTEwKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBFaW5mYWNoZXIgQW5zYXR6OiBLb252ZXJ0aWVyZSB6dSBTdHJpbmcs
IGZpbmRlIE9mZnNldHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSYXdTdHIgPSBbVGV4
dC5FbmNvZGluZ106OkdldEVuY29kaW5nKCdpc28tODg1OS0xJykuR2V0U3RyaW5nKCRSYXcpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkRm5Qb3MgPSAkUmF3U3RyLkluZGV4T2YoJ2ZpbGVu
YW1lPScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJEZuUG9zIC1nZSAwKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGFTdGFydCA9ICRSYXdTdHIuSW5kZXhP
ZigoW2NoYXJdMTMpLlRvU3RyaW5nKCkgKyAoW2NoYXJdMTApLlRvU3RyaW5nKCkgKyAoW2NoYXJd
MTMpLlRvU3RyaW5nKCkgKyAoW2NoYXJdMTApLlRvU3RyaW5nKCksICRGblBvcykgKyA0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmRlOiBuYWVjaHN0ZSBCb3VuZGFyeQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRCb3VuZGFyeVN0ciA9IFtUZXh0LkVuY29kaW5n
XTo6R2V0RW5jb2RpbmcoJ2lzby04ODU5LTEnKS5HZXRTdHJpbmcoJEJvdW5kYXJ5KQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICREYXRhRW5kID0gJFJhd1N0ci5JbmRleE9mKCRCb3Vu
ZGFyeVN0ciwgJERhdGFTdGFydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JERhdGFFbmQgLWd0ICREYXRhU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBFbnRmZXJuZSBcclxuIHZvciBkZXIgQm91bmRhcnkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCREYXRhRW5kIC1nZSAyIC1hbmQgJFJhd1N0ci5TdWJzdHJp
bmcoJERhdGFFbmQgLSAyLCAyKSAtZXEgKFtjaGFyXTEzKS5Ub1N0cmluZygpICsgKFtjaGFyXTEw
KS5Ub1N0cmluZygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
RGF0YUVuZCAtPSAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJhd0J5dGVzID0gJFJhd1skRGF0YVN0YXJ0
Li4oJERhdGFFbmQgLSAxKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgU2NocmVpYnNjaHV0eiBhdWZo
ZWJlbiwgRGF0ZWkgc2NocmVpYmVuLCBTY2hyZWlic2NodXR6IHNldHplbgogICAgICAgICAgICAg
ICAgICAgIFVucHJvdGVjdC1GaWxlICRTYWZlUGF0aAogICAgICAgICAgICAgICAgICAgIFtJTy5G
aWxlXTo6V3JpdGVBbGxCeXRlcygkU2FmZVBhdGgsICRSYXdCeXRlcykKICAgICAgICAgICAgICAg
ICAgICBQcm90ZWN0LUZpbGUgJFNhZmVQYXRoCgogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNv
biAkUmVzcG9uc2UgQHsgb2sgPSAkdHJ1ZTsgcGF0aCA9ICRSZWxQYXRoIH0KICAgICAgICAgICAg
ICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL3VwbG9hZCAgJFJlbFBhdGggKCQo
JFJhd0J5dGVzLkxlbmd0aCkgQnl0ZXMpIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgICAgV3JpdGUtSG9z
dCAiICBFUlIgIFBPU1QgL2FwaS91cGxvYWQgICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9y
ZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25z
ZSBAeyBlcnJvciA9ICRfLkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0Y2gge30KICAgICAg
ICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvc2h1
dGRvd24gLS0tCiAgICAgICAgIyBXaXJkIHZvbiBiZWZvcmV1bmxvYWQgZ2VzZW5kZXQgKFRhYi1D
bG9zZSBPREVSIEY1LVJlZnJlc2gpLgogICAgICAgICMgU3RhcnRldCBlaW5lIEduYWRlbmZyaXN0
IHN0YXR0IHNvZm9ydGlnZW0gU2h1dGRvd24uCiAgICAgICAgIyBCZWkgRjUvUmVmcmVzaCBrb21t
dCBpbm5lcmhhbGIgdm9uIDVzIGVpbiBuZXVlciBIZWFydGJlYXQgdW5kIGJyaWNodCBhYi4KICAg
ICAgICAjIEJlaSBlY2h0ZW0gVGFiLUNsb3NlIGtvbW10IGtlaW4gSGVhcnRiZWF0IC0+IFNlcnZl
ciBiZWVuZGV0IHNpY2ggbmFjaCBHbmFkZW5mcmlzdC4KICAgICAgICBpZiAoJFVybFBhdGggLWVx
ICcvYXBpL3NodXRkb3duJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgewogICAgICAgICAgICBT
ZW5kLUpzb24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWUgfQogICAgICAgICAgICB0cnkgeyAkUmVz
cG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICAgICAgICAgICRzY3JpcHQ6U2h1dGRvd25QZW5k
aW5nID0gR2V0LURhdGUKICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBQT1NUIC9hcGkvc2h1dGRv
d24gLSBHbmFkZW5mcmlzdCBnZXN0YXJ0ZXQgKCQoJHNjcmlwdDpTaHV0ZG93bkdyYWNlU2VjKXMs
IHdpcmQgYmVpIEhlYXJ0YmVhdCBhYmdlYnJvY2hlbikiIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93
CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAj
IFN0YXRpc2NoZSBEYXRlaWVuIChtaXQgQ2FjaGUgZnVlciBoYWV1ZmlnIGdlbGFkZW5lIERhdGVp
ZW4pCiAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CgogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy8nKSB7ICRVcmxQ
YXRoID0gJy9pbmRleC5odG1sJyB9CiAgICAgICAgJFVybFBhdGggPSBbU3lzdGVtLlVyaV06OlVu
ZXNjYXBlRGF0YVN0cmluZygkVXJsUGF0aCkKICAgICAgICAjIFBhdGgtVHJhdmVyc2FsLVNjaHV0
ejogUmVzb2x2ZS1TYWZlUGF0aCBwcnVlZnQgQ29udGFpbm1lbnQgaW0gUm9vdC1WZXJ6ZWljaG5p
cwogICAgICAgICRGaWxlUGF0aCA9IFJlc29sdmUtU2FmZVBhdGggKCRVcmxQYXRoLlRyaW1TdGFy
dCgnLycpKQoKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoJEZpbGVQYXRoIC1hbmQgKFRl
c3QtUGF0aCAkRmlsZVBhdGggLVBhdGhUeXBlIExlYWYpKSB7CiAgICAgICAgICAgICAgICAkRXh0
ZW5zaW9uID0gW0lPLlBhdGhdOjpHZXRFeHRlbnNpb24oJEZpbGVQYXRoKS5Ub0xvd2VyKCkKICAg
ICAgICAgICAgICAgICRDb250ZW50VHlwZSA9ICRNaW1lVHlwZXNbJEV4dGVuc2lvbl0KICAgICAg
ICAgICAgICAgIGlmICgtbm90ICRDb250ZW50VHlwZSkgeyAkQ29udGVudFR5cGUgPSAnYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtJyB9CgogICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNvbnRlbnRU
eXBlID0gJENvbnRlbnRUeXBlCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuU3RhdHVzQ29kZSA9
IDIwMAogICAgICAgICAgICAgICAgQWRkLVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UKCiAgICAg
ICAgICAgICAgICAjIENhY2hlIGZ1ZXIgc3RhdGlzY2hlIERhdGVpZW4gKGluZGV4Lmh0bWwsIENT
UywgSlMsIEpTT04pCiAgICAgICAgICAgICAgICAkQnl0ZXMgPSAkbnVsbAogICAgICAgICAgICAg
ICAgJEZpbGVMYXN0V3JpdGUgPSAoR2V0LUl0ZW0gJEZpbGVQYXRoIC1Gb3JjZSkuTGFzdFdyaXRl
VGltZVV0YwogICAgICAgICAgICAgICAgaWYgKCRzY3JpcHQ6U3RhdGljQ2FjaGUuQ29udGFpbnNL
ZXkoJEZpbGVQYXRoKSkgewogICAgICAgICAgICAgICAgICAgICRjYWNoZWQgPSAkc2NyaXB0OlN0
YXRpY0NhY2hlWyRGaWxlUGF0aF0KICAgICAgICAgICAgICAgICAgICBpZiAoJGNhY2hlZC5Nb2Rp
ZmllZCAtZ2UgJEZpbGVMYXN0V3JpdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEJ5dGVz
ID0gJGNhY2hlZC5CeXRlcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIGlmICgtbm90ICRCeXRlcykgewogICAgICAgICAgICAgICAgICAgICRC
eXRlcyA9IFtJTy5GaWxlXTo6UmVhZEFsbEJ5dGVzKCRGaWxlUGF0aCkKICAgICAgICAgICAgICAg
ICAgICBpZiAoJEV4dGVuc2lvbiAtbWF0Y2ggJ15cLihodG1sfGNzc3xqc3xqc29ufHN2Z3xpY28p
JCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNjcmlwdDpTdGF0aWNDYWNoZVskRmlsZVBh
dGhdID0gQHsgQnl0ZXMgPSAkQnl0ZXM7IE1vZGlmaWVkID0gJEZpbGVMYXN0V3JpdGUgfQogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRSZXNw
b25zZS5Db250ZW50TGVuZ3RoNjQgPSAkQnl0ZXMuTGVuZ3RoCiAgICAgICAgICAgICAgICAkUmVz
cG9uc2UuT3V0cHV0U3RyZWFtLldyaXRlKCRCeXRlcywgMCwgJEJ5dGVzLkxlbmd0aCkKICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRSZXNwb25zZS5TdGF0dXNDb2RlID0gNDA0
CiAgICAgICAgICAgICAgICAkTm90Rm91bmQgPSBbVGV4dC5FbmNvZGluZ106OlVURjguR2V0Qnl0
ZXMoIjQwNCAtIERhdGVpIG5pY2h0IGdlZnVuZGVuOiAkVXJsUGF0aCIpCiAgICAgICAgICAgICAg
ICAkUmVzcG9uc2UuQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcKICAg
ICAgICAgICAgICAgICRSZXNwb25zZS5Db250ZW50TGVuZ3RoNjQgPSAkTm90Rm91bmQuTGVuZ3Ro
CiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuT3V0cHV0U3RyZWFtLldyaXRlKCROb3RGb3VuZCwg
MCwgJE5vdEZvdW5kLkxlbmd0aCkKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgNDA0ICAk
VXJsUGF0aCIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0
Y2ggewogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgRGF0ZWkgJFVybFBhdGggICQoJF8u
RXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgIH0KICAgICAg
ICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICB9Cn0gY2F0Y2ggewogICAg
IyBTdHJnK0Mgb2RlciBGZWhsZXIKfSBmaW5hbGx5IHsKICAgICRMaXN0ZW5lci5TdG9wKCkKCiAg
ICAjIFNjaHJlaWJzY2h1dHogYmVpbSBCZWVuZGVuIHdpZWRlciBzZXR6ZW4KICAgIFdyaXRlLUhv
c3QgIiAgU2NocmVpYnNjaHV0eiB3aXJkIHdpZWRlcmhlcmdlc3RlbGx0Li4uIiAtRm9yZWdyb3Vu
ZENvbG9yIEdyYXkKICAgIEdldC1DaGlsZEl0ZW0gIiRSb290XGRhdGEiIC1SZWN1cnNlIC1GaWx0
ZXIgIiouanNvbiIgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUgfCBGb3JFYWNoLU9iamVj
dCB7IFByb3RlY3QtRmlsZSAkXy5GdWxsTmFtZSB9CiAgICBQcm90ZWN0LUZpbGUgKEpvaW4tUGF0
aCAkUm9vdCAiaW5kZXguaHRtbCIpCgogICAgIyBMb2thbGUgVEVNUC1Lb3BpZSBhdWZyYWV1bWVu
ICh2ZXJoaW5kZXJ0IHZlcndhaXN0ZSBEYXRlaWVuKQogICAgJFRlbXBEaXIgPSBKb2luLVBhdGgg
JGVudjpURU1QICJEUklWRV9TZXJ2ZXIiCiAgICBpZiAoVGVzdC1QYXRoICRUZW1wRGlyKSB7CiAg
ICAgICAgUmVtb3ZlLUl0ZW0gJFRlbXBEaXIgLVJlY3Vyc2UgLUZvcmNlIC1FcnJvckFjdGlvbiBT
aWxlbnRseUNvbnRpbnVlCiAgICAgICAgV3JpdGUtSG9zdCAiICBURU1QLUtvcGllIGJlcmVpbmln
dC4iIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQogICAgfQoKICAgIFdyaXRlLUhvc3QgIiIKICAgIFdy
aXRlLUhvc3QgIlNlcnZlciBiZWVuZGV0LiIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cKfQo=
