OCBuZXcgY29tbWl0cyBpbiBnYWxheHktY2VudHJhbDoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n
YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy85Zjc5NjZlNDgxNDYvCkNoYW5nZXNldDogICA5
Zjc5NjZlNDgxNDYKVXNlcjogICAgICAgIGRhbm5vbgpEYXRlOiAgICAgICAgMjAxNS0wMi0yMyAx
NzoxNjoxMCswMDowMApTdW1tYXJ5OiAgICAgRUFGUCwgY2xlYW5lciBzaHV0ZG93biB3aGVuIHRo
ZXJlJ3MgYSBjb250cm9sIHdvcmtlciBpbml0aWFsaXo9CmF0aW9uIGVycm9yLgpBZmZlY3RlZCAj
OiAgMSBmaWxlCgpkaWZmIC1yIGNjM2M0ZjUxZDFlYTU3MTYwOGIwMTdjMWQxZmM4MTAwZjZhZDll
MzUgLXIgOWY3OTY2ZTQ4MTQ2NmNmN2EyMjRjMWI9CmI4NzA3OGY2MjgxNjU3YmFkIGxpYi9nYWxh
eHkvYXBwLnB5Ci0tLSBhL2xpYi9nYWxheHkvYXBwLnB5CisrKyBiL2xpYi9nYWxheHkvYXBwLnB5
CkBAIC0xNjIsOCArMTYyLDExIEBACiAgICAgICAgIGlmIHNlbGYuaGVhcnRiZWF0OgogICAgICAg
ICAgICAgc2VsZi5oZWFydGJlYXQuc2h1dGRvd24oKQogICAgICAgICBzZWxmLnVwZGF0ZV9yZXBv
c2l0b3J5X21hbmFnZXIuc2h1dGRvd24oKQotICAgICAgICBpZiBzZWxmLmNvbnRyb2xfd29ya2Vy
OgorICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmNvbnRyb2xfd29ya2VyLnNodXRkb3du
KCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBUaGVyZSBp
cyBubyBjb250cm9sX3dvcmtlcgorICAgICAgICAgICAgcGFzcwogICAgICAgICB0cnk6CiAgICAg
ICAgICAgICAjIElmIHRoZSBkYXRhdHlwZXMgcmVnaXN0cnkgd2FzIHBlcnNpc3RlZCwgYXR0ZW1w
dCB0bwogICAgICAgICAgICAgIyByZW1vdmUgdGhlIHRlbXBvcmFyeSBmaWxlIGluIHdoaWNoIGl0
IHdhcyB3cml0dGVuLgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy
YWwvY29tbWl0cy81YjE3NzY4NDYzMzIvCkNoYW5nZXNldDogICA1YjE3NzY4NDYzMzIKVXNlcjog
ICAgICAgIGd1ZXJsZXIKRGF0ZTogICAgICAgIDIwMTUtMDItMjMgMTc6NTA6MjcrMDA6MDAKU3Vt
bWFyeTogICAgIFNlbGVjdDIgZml4CkFmZmVjdGVkICM6ICAyMSBmaWxlcwoKZGlmZiAtciA5Zjc5
NjZlNDgxNDY2Y2Y3YTIyNGMxYmI4NzA3OGY2MjgxNjU3YmFkIC1yIDViMTc3Njg0NjMzMmNiZmM4
MDhmMDQxPQpkMGZmYzZlN2ZmZGRkNjQzNCBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbGlicy9qcXVl
cnkvc2VsZWN0Mi5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbGlicy9qcXVlcnkvc2Vs
ZWN0Mi5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbGlicy9qcXVlcnkvc2VsZWN0Mi5q
cwpAQCAtMSw3ICsxLDcgQEAKIC8qCiBDb3B5cmlnaHQgMjAxMiBJZ29yIFZheW5iZXJnCj0yMAot
VmVyc2lvbjogMy40LjMgVGltZXN0YW1wOiBUdWUgU2VwIDE3IDA2OjQ3OjE0IFBEVCAyMDEzCitW
ZXJzaW9uOiAzLjUuMSBUaW1lc3RhbXA6IFR1ZSBKdWwgMjIgMTg6NTg6NTYgRURUIDIwMTQKPTIw
CiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiQXBhYz0KaGUgTGljZW5zZSIpIG9yIHRoZSBHTlUKIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUgIkdQTCBMaWNlbnNlIikuIFlvdSBtYXkgY2hvb3Nl
IGVpdGhlPQpyIGxpY2Vuc2UgdG8gZ292ZXJuIHlvdXIKQEAgLTE0LDcgKzE0LDcgQEAKICAgICBo
dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sCj0yMAogVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBk
aXN0cmk9CmJ1dGVkIHVuZGVyIHRoZQotQXBhY2hlIExpY2Vuc2Ugb3IgdGhlIEdQTCBMaWNlc25z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVQ9CkhPVVQgV0FSUkFOVElF
UyBPUgorQXBhY2hlIExpY2Vuc2Ugb3IgdGhlIEdQTCBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsIFdJVEg9Ck9VVCBXQVJSQU5USUVTIE9SCiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIEFwYWNoZSBMaWNl
bnNlID0KYW5kIHRoZSBHUEwgTGljZW5zZSBmb3IKIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBBcGFjPQpoZSBMaWNl
bnNlIGFuZCB0aGUgR1BMIExpY2Vuc2UuCiAqLwpAQCAtOTgsMjQgKzk4LDI4IEBACiAgICAgfSwK
ICAgICBNRUFTVVJFX1NDUk9MTEJBUl9URU1QTEFURSA9M0QgIjxkaXYgY2xhc3M9M0Qnc2VsZWN0
Mi1tZWFzdXJlLXNjcm9sbGJhPQpyJz48L2Rpdj4iLAo9MjAKLSAgICBESUFDUklUSUNTID0zRCB7
Ilx1MjRCNiI6IkEiLCJcdUZGMjEiOiJBIiwiXHUwMEMwIjoiQSIsIlx1MDBDMSI6IkEiLCJcPQp1
MDBDMiI6IkEiLCJcdTFFQTYiOiJBIiwiXHUxRUE0IjoiQSIsIlx1MUVBQSI6IkEiLCJcdTFFQTgi
OiJBIiwiXHUwMEMzIjoiQSI9CiwiXHUwMTAwIjoiQSIsIlx1MDEwMiI6IkEiLCJcdTFFQjAiOiJB
IiwiXHUxRUFFIjoiQSIsIlx1MUVCNCI6IkEiLCJcdTFFQjIiOj0KIkEiLCJcdTAyMjYiOiJBIiwi
XHUwMUUwIjoiQSIsIlx1MDBDNCI6IkEiLCJcdTAxREUiOiJBIiwiXHUxRUEyIjoiQSIsIlx1MDBD
PQo1IjoiQSIsIlx1MDFGQSI6IkEiLCJcdTAxQ0QiOiJBIiwiXHUwMjAwIjoiQSIsIlx1MDIwMiI6
IkEiLCJcdTFFQTAiOiJBIiwiXHU9CjFFQUMiOiJBIiwiXHUxRUI2IjoiQSIsIlx1MUUwMCI6IkEi
LCJcdTAxMDQiOiJBIiwiXHUwMjNBIjoiQSIsIlx1MkM2RiI6IkEiLD0KIlx1QTczMiI6IkFBIiwi
XHUwMEM2IjoiQUUiLCJcdTAxRkMiOiJBRSIsIlx1MDFFMiI6IkFFIiwiXHVBNzM0IjoiQU8iLCJc
dUE3PQozNiI6IkFVIiwiXHVBNzM4IjoiQVYiLCJcdUE3M0EiOiJBViIsIlx1QTczQyI6IkFZIiwi
XHUyNEI3IjoiQiIsIlx1RkYyMiI6IkI9CiIsIlx1MUUwMiI6IkIiLCJcdTFFMDQiOiJCIiwiXHUx
RTA2IjoiQiIsIlx1MDI0MyI6IkIiLCJcdTAxODIiOiJCIiwiXHUwMTgxIj0KOiJCIiwiXHUyNEI4
IjoiQyIsIlx1RkYyMyI6IkMiLCJcdTAxMDYiOiJDIiwiXHUwMTA4IjoiQyIsIlx1MDEwQSI6IkMi
LCJcdTAxPQowQyI6IkMiLCJcdTAwQzciOiJDIiwiXHUxRTA4IjoiQyIsIlx1MDE4NyI6IkMiLCJc
dTAyM0IiOiJDIiwiXHVBNzNFIjoiQyIsIlw9CnUyNEI5IjoiRCIsIlx1RkYyNCI6IkQiLCJcdTFF
MEEiOiJEIiwiXHUwMTBFIjoiRCIsIlx1MUUwQyI6IkQiLCJcdTFFMTAiOiJEIj0KLCJcdTFFMTIi
OiJEIiwiXHUxRTBFIjoiRCIsIlx1MDExMCI6IkQiLCJcdTAxOEIiOiJEIiwiXHUwMThBIjoiRCIs
Ilx1MDE4OSI6PQoiRCIsIlx1QTc3OSI6IkQiLCJcdTAxRjEiOiJEWiIsIlx1MDFDNCI6IkRaIiwi
XHUwMUYyIjoiRHoiLCJcdTAxQzUiOiJEeiIsIlw9CnUyNEJBIjoiRSIsIlx1RkYyNSI6IkUiLCJc
dTAwQzgiOiJFIiwiXHUwMEM5IjoiRSIsIlx1MDBDQSI6IkUiLCJcdTFFQzAiOiJFIj0KLCJcdTFF
QkUiOiJFIiwiXHUxRUM0IjoiRSIsIlx1MUVDMiI6IkUiLCJcdTFFQkMiOiJFIiwiXHUwMTEyIjoi
RSIsIlx1MUUxNCI6PQoiRSIsIlx1MUUxNiI6IkUiLCJcdTAxMTQiOiJFIiwiXHUwMTE2IjoiRSIs
Ilx1MDBDQiI6IkUiLCJcdTFFQkEiOiJFIiwiXHUwMTE9CkEiOiJFIiwiXHUwMjA0IjoiRSIsIlx1
MDIwNiI6IkUiLCJcdTFFQjgiOiJFIiwiXHUxRUM2IjoiRSIsIlx1MDIyOCI6IkUiLCJcdT0KMUUx
QyI6IkUiLCJcdTAxMTgiOiJFIiwiXHUxRTE4IjoiRSIsIlx1MUUxQSI6IkUiLCJcdTAxOTAiOiJF
IiwiXHUwMThFIjoiRSIsPQoiXHUyNEJCIjoiRiIsIlx1RkYyNiI6IkYiLCJcdTFFMUUiOiJGIiwi
XHUwMTkxIjoiRiIsIlx1QTc3QiI6IkYiLCJcdTI0QkMiOiI9CkciLCJcdUZGMjciOiJHIiwiXHUw
MUY0IjoiRyIsIlx1MDExQyI6IkciLCJcdTFFMjAiOiJHIiwiXHUwMTFFIjoiRyIsIlx1MDEyMD0K
IjoiRyIsIlx1MDFFNiI6IkciLCJcdTAxMjIiOiJHIiwiXHUwMUU0IjoiRyIsIlx1MDE5MyI6Ikci
LCJcdUE3QTAiOiJHIiwiXHVBPQo3N0QiOiJHIiwiXHVBNzdFIjoiRyIsIlx1MjRCRCI6IkgiLCJc
dUZGMjgiOiJIIiwiXHUwMTI0IjoiSCIsIlx1MUUyMiI6IkgiLCI9Clx1MUUyNiI6IkgiLCJcdTAy
MUUiOiJIIiwiXHUxRTI0IjoiSCIsIlx1MUUyOCI6IkgiLCJcdTFFMkEiOiJIIiwiXHUwMTI2Ijoi
SD0KIiwiXHUyQzY3IjoiSCIsIlx1MkM3NSI6IkgiLCJcdUE3OEQiOiJIIiwiXHUyNEJFIjoiSSIs
Ilx1RkYyOSI6IkkiLCJcdTAwQ0MiPQo6IkkiLCJcdTAwQ0QiOiJJIiwiXHUwMENFIjoiSSIsIlx1
MDEyOCI6IkkiLCJcdTAxMkEiOiJJIiwiXHUwMTJDIjoiSSIsIlx1MDE9CjMwIjoiSSIsIlx1MDBD
RiI6IkkiLCJcdTFFMkUiOiJJIiwiXHUxRUM4IjoiSSIsIlx1MDFDRiI6IkkiLCJcdTAyMDgiOiJJ
IiwiXD0KdTAyMEEiOiJJIiwiXHUxRUNBIjoiSSIsIlx1MDEyRSI6IkkiLCJcdTFFMkMiOiJJIiwi
XHUwMTk3IjoiSSIsIlx1MjRCRiI6IkoiPQosIlx1RkYyQSI6IkoiLCJcdTAxMzQiOiJKIiwiXHUw
MjQ4IjoiSiIsIlx1MjRDMCI6IksiLCJcdUZGMkIiOiJLIiwiXHUxRTMwIjo9CiJLIiwiXHUwMUU4
IjoiSyIsIlx1MUUzMiI6IksiLCJcdTAxMzYiOiJLIiwiXHUxRTM0IjoiSyIsIlx1MDE5OCI6Iksi
LCJcdTJDNj0KOSI6IksiLCJcdUE3NDAiOiJLIiwiXHVBNzQyIjoiSyIsIlx1QTc0NCI6IksiLCJc
dUE3QTIiOiJLIiwiXHUyNEMxIjoiTCIsIlx1PQpGRjJDIjoiTCIsIlx1MDEzRiI6IkwiLCJcdTAx
MzkiOiJMIiwiXHUwMTNEIjoiTCIsIlx1MUUzNiI6IkwiLCJcdTFFMzgiOiJMIiw9CiJcdTAxM0Ii
OiJMIiwiXHUxRTNDIjoiTCIsIlx1MUUzQSI6IkwiLCJcdTAxNDEiOiJMIiwiXHUwMjNEIjoiTCIs
Ilx1MkM2MiI6Ij0KTCIsIlx1MkM2MCI6IkwiLCJcdUE3NDgiOiJMIiwiXHVBNzQ2IjoiTCIsIlx1
QTc4MCI6IkwiLCJcdTAxQzciOiJMSiIsIlx1MDFDPQo4IjoiTGoiLCJcdTI0QzIiOiJNIiwiXHVG
RjJEIjoiTSIsIlx1MUUzRSI6Ik0iLCJcdTFFNDAiOiJNIiwiXHUxRTQyIjoiTSIsIlw9CnUyQzZF
IjoiTSIsIlx1MDE5QyI6Ik0iLCJcdTI0QzMiOiJOIiwiXHVGRjJFIjoiTiIsIlx1MDFGOCI6Ik4i
LCJcdTAxNDMiOiJOIj0KLCJcdTAwRDEiOiJOIiwiXHUxRTQ0IjoiTiIsIlx1MDE0NyI6Ik4iLCJc
dTFFNDYiOiJOIiwiXHUwMTQ1IjoiTiIsIlx1MUU0QSI6PQoiTiIsIlx1MUU0OCI6Ik4iLCJcdTAy
MjAiOiJOIiwiXHUwMTlEIjoiTiIsIlx1QTc5MCI6Ik4iLCJcdUE3QTQiOiJOIiwiXHUwMUM9CkEi
OiJOSiIsIlx1MDFDQiI6Ik5qIiwiXHUyNEM0IjoiTyIsIlx1RkYyRiI6Ik8iLCJcdTAwRDIiOiJP
IiwiXHUwMEQzIjoiTyIsIj0KXHUwMEQ0IjoiTyIsIlx1MUVEMiI6Ik8iLCJcdTFFRDAiOiJPIiwi
XHUxRUQ2IjoiTyIsIlx1MUVENCI6Ik8iLCJcdTAwRDUiOiJPPQoiLCJcdTFFNEMiOiJPIiwiXHUw
MjJDIjoiTyIsIlx1MUU0RSI6Ik8iLCJcdTAxNEMiOiJPIiwiXHUxRTUwIjoiTyIsIlx1MUU1MiI9
CjoiTyIsIlx1MDE0RSI6Ik8iLCJcdTAyMkUiOiJPIiwiXHUwMjMwIjoiTyIsIlx1MDBENiI6Ik8i
LCJcdTAyMkEiOiJPIiwiXHUxRT0KQ0UiOiJPIiwiXHUwMTUwIjoiTyIsIlx1MDFEMSI6Ik8iLCJc
dTAyMEMiOiJPIiwiXHUwMjBFIjoiTyIsIlx1MDFBMCI6Ik8iLCJcPQp1MUVEQyI6Ik8iLCJcdTFF
REEiOiJPIiwiXHUxRUUwIjoiTyIsIlx1MUVERSI6Ik8iLCJcdTFFRTIiOiJPIiwiXHUxRUNDIjoi
TyI9CiwiXHUxRUQ4IjoiTyIsIlx1MDFFQSI6Ik8iLCJcdTAxRUMiOiJPIiwiXHUwMEQ4IjoiTyIs
Ilx1MDFGRSI6Ik8iLCJcdTAxODYiOj0KIk8iLCJcdTAxOUYiOiJPIiwiXHVBNzRBIjoiTyIsIlx1
QTc0QyI6Ik8iLCJcdTAxQTIiOiJPSSIsIlx1QTc0RSI6Ik9PIiwiXHUwPQoyMjIiOiJPVSIsIlx1
MjRDNSI6IlAiLCJcdUZGMzAiOiJQIiwiXHUxRTU0IjoiUCIsIlx1MUU1NiI6IlAiLCJcdTAxQTQi
OiJQIiw9CiJcdTJDNjMiOiJQIiwiXHVBNzUwIjoiUCIsIlx1QTc1MiI6IlAiLCJcdUE3NTQiOiJQ
IiwiXHUyNEM2IjoiUSIsIlx1RkYzMSI6Ij0KUSIsIlx1QTc1NiI6IlEiLCJcdUE3NTgiOiJRIiwi
XHUwMjRBIjoiUSIsIlx1MjRDNyI6IlIiLCJcdUZGMzIiOiJSIiwiXHUwMTU0PQoiOiJSIiwiXHUx
RTU4IjoiUiIsIlx1MDE1OCI6IlIiLCJcdTAyMTAiOiJSIiwiXHUwMjEyIjoiUiIsIlx1MUU1QSI6
IlIiLCJcdTE9CkU1QyI6IlIiLCJcdTAxNTYiOiJSIiwiXHUxRTVFIjoiUiIsIlx1MDI0QyI6IlIi
LCJcdTJDNjQiOiJSIiwiXHVBNzVBIjoiUiIsIj0KXHVBN0E2IjoiUiIsIlx1QTc4MiI6IlIiLCJc
dTI0QzgiOiJTIiwiXHVGRjMzIjoiUyIsIlx1MUU5RSI6IlMiLCJcdTAxNUEiOiJTPQoiLCJcdTFF
NjQiOiJTIiwiXHUwMTVDIjoiUyIsIlx1MUU2MCI6IlMiLCJcdTAxNjAiOiJTIiwiXHUxRTY2Ijoi
UyIsIlx1MUU2MiI9CjoiUyIsIlx1MUU2OCI6IlMiLCJcdTAyMTgiOiJTIiwiXHUwMTVFIjoiUyIs
Ilx1MkM3RSI6IlMiLCJcdUE3QTgiOiJTIiwiXHVBNz0KODQiOiJTIiwiXHUyNEM5IjoiVCIsIlx1
RkYzNCI6IlQiLCJcdTFFNkEiOiJUIiwiXHUwMTY0IjoiVCIsIlx1MUU2QyI6IlQiLCJcPQp1MDIx
QSI6IlQiLCJcdTAxNjIiOiJUIiwiXHUxRTcwIjoiVCIsIlx1MUU2RSI6IlQiLCJcdTAxNjYiOiJU
IiwiXHUwMUFDIjoiVCI9CiwiXHUwMUFFIjoiVCIsIlx1MDIzRSI6IlQiLCJcdUE3ODYiOiJUIiwi
XHVBNzI4IjoiVFoiLCJcdTI0Q0EiOiJVIiwiXHVGRjM1Ij0KOiJVIiwiXHUwMEQ5IjoiVSIsIlx1
MDBEQSI6IlUiLCJcdTAwREIiOiJVIiwiXHUwMTY4IjoiVSIsIlx1MUU3OCI6IlUiLCJcdTAxPQo2
QSI6IlUiLCJcdTFFN0EiOiJVIiwiXHUwMTZDIjoiVSIsIlx1MDBEQyI6IlUiLCJcdTAxREIiOiJV
IiwiXHUwMUQ3IjoiVSIsIlw9CnUwMUQ1IjoiVSIsIlx1MDFEOSI6IlUiLCJcdTFFRTYiOiJVIiwi
XHUwMTZFIjoiVSIsIlx1MDE3MCI6IlUiLCJcdTAxRDMiOiJVIj0KLCJcdTAyMTQiOiJVIiwiXHUw
MjE2IjoiVSIsIlx1MDFBRiI6IlUiLCJcdTFFRUEiOiJVIiwiXHUxRUU4IjoiVSIsIlx1MUVFRSI6
PQoiVSIsIlx1MUVFQyI6IlUiLCJcdTFFRjAiOiJVIiwiXHUxRUU0IjoiVSIsIlx1MUU3MiI6IlUi
LCJcdTAxNzIiOiJVIiwiXHUxRTc9CjYiOiJVIiwiXHUxRTc0IjoiVSIsIlx1MDI0NCI6IlUiLCJc
dTI0Q0IiOiJWIiwiXHVGRjM2IjoiViIsIlx1MUU3QyI6IlYiLCJcdT0KMUU3RSI6IlYiLCJcdTAx
QjIiOiJWIiwiXHVBNzVFIjoiViIsIlx1MDI0NSI6IlYiLCJcdUE3NjAiOiJWWSIsIlx1MjRDQyI6
IlciPQosIlx1RkYzNyI6IlciLCJcdTFFODAiOiJXIiwiXHUxRTgyIjoiVyIsIlx1MDE3NCI6Ilci
LCJcdTFFODYiOiJXIiwiXHUxRTg0Ijo9CiJXIiwiXHUxRTg4IjoiVyIsIlx1MkM3MiI6IlciLCJc
dTI0Q0QiOiJYIiwiXHVGRjM4IjoiWCIsIlx1MUU4QSI6IlgiLCJcdTFFOD0KQyI6IlgiLCJcdTI0
Q0UiOiJZIiwiXHVGRjM5IjoiWSIsIlx1MUVGMiI6IlkiLCJcdTAwREQiOiJZIiwiXHUwMTc2Ijoi
WSIsIlx1PQoxRUY4IjoiWSIsIlx1MDIzMiI6IlkiLCJcdTFFOEUiOiJZIiwiXHUwMTc4IjoiWSIs
Ilx1MUVGNiI6IlkiLCJcdTFFRjQiOiJZIiw9CiJcdTAxQjMiOiJZIiwiXHUwMjRFIjoiWSIsIlx1
MUVGRSI6IlkiLCJcdTI0Q0YiOiJaIiwiXHVGRjNBIjoiWiIsIlx1MDE3OSI6Ij0KWiIsIlx1MUU5
MCI6IloiLCJcdTAxN0IiOiJaIiwiXHUwMTdEIjoiWiIsIlx1MUU5MiI6IloiLCJcdTFFOTQiOiJa
IiwiXHUwMUI1PQoiOiJaIiwiXHUwMjI0IjoiWiIsIlx1MkM3RiI6IloiLCJcdTJDNkIiOiJaIiwi
XHVBNzYyIjoiWiIsIlx1MjREMCI6ImEiLCJcdUY9CkY0MSI6ImEiLCJcdTFFOUEiOiJhIiwiXHUw
MEUwIjoiYSIsIlx1MDBFMSI6ImEiLCJcdTAwRTIiOiJhIiwiXHUxRUE3IjoiYSIsIj0KXHUxRUE1
IjoiYSIsIlx1MUVBQiI6ImEiLCJcdTFFQTkiOiJhIiwiXHUwMEUzIjoiYSIsIlx1MDEwMSI6ImEi
LCJcdTAxMDMiOiJhPQoiLCJcdTFFQjEiOiJhIiwiXHUxRUFGIjoiYSIsIlx1MUVCNSI6ImEiLCJc
dTFFQjMiOiJhIiwiXHUwMjI3IjoiYSIsIlx1MDFFMSI9CjoiYSIsIlx1MDBFNCI6ImEiLCJcdTAx
REYiOiJhIiwiXHUxRUEzIjoiYSIsIlx1MDBFNSI6ImEiLCJcdTAxRkIiOiJhIiwiXHUwMT0KQ0Ui
OiJhIiwiXHUwMjAxIjoiYSIsIlx1MDIwMyI6ImEiLCJcdTFFQTEiOiJhIiwiXHUxRUFEIjoiYSIs
Ilx1MUVCNyI6ImEiLCJcPQp1MUUwMSI6ImEiLCJcdTAxMDUiOiJhIiwiXHUyQzY1IjoiYSIsIlx1
MDI1MCI6ImEiLCJcdUE3MzMiOiJhYSIsIlx1MDBFNiI6ImE9CmUiLCJcdTAxRkQiOiJhZSIsIlx1
MDFFMyI6ImFlIiwiXHVBNzM1IjoiYW8iLCJcdUE3MzciOiJhdSIsIlx1QTczOSI6ImF2IiwiXD0K
dUE3M0IiOiJhdiIsIlx1QTczRCI6ImF5IiwiXHUyNEQxIjoiYiIsIlx1RkY0MiI6ImIiLCJcdTFF
MDMiOiJiIiwiXHUxRTA1IjoiPQpiIiwiXHUxRTA3IjoiYiIsIlx1MDE4MCI6ImIiLCJcdTAxODMi
OiJiIiwiXHUwMjUzIjoiYiIsIlx1MjREMiI6ImMiLCJcdUZGNDM9CiI6ImMiLCJcdTAxMDciOiJj
IiwiXHUwMTA5IjoiYyIsIlx1MDEwQiI6ImMiLCJcdTAxMEQiOiJjIiwiXHUwMEU3IjoiYyIsIlx1
MT0KRTA5IjoiYyIsIlx1MDE4OCI6ImMiLCJcdTAyM0MiOiJjIiwiXHVBNzNGIjoiYyIsIlx1MjE4
NCI6ImMiLCJcdTI0RDMiOiJkIiwiPQpcdUZGNDQiOiJkIiwiXHUxRTBCIjoiZCIsIlx1MDEwRiI6
ImQiLCJcdTFFMEQiOiJkIiwiXHUxRTExIjoiZCIsIlx1MUUxMyI6ImQ9CiIsIlx1MUUwRiI6ImQi
LCJcdTAxMTEiOiJkIiwiXHUwMThDIjoiZCIsIlx1MDI1NiI6ImQiLCJcdTAyNTciOiJkIiwiXHVB
NzdBIj0KOiJkIiwiXHUwMUYzIjoiZHoiLCJcdTAxQzYiOiJkeiIsIlx1MjRENCI6ImUiLCJcdUZG
NDUiOiJlIiwiXHUwMEU4IjoiZSIsIlx1PQowMEU5IjoiZSIsIlx1MDBFQSI6ImUiLCJcdTFFQzEi
OiJlIiwiXHUxRUJGIjoiZSIsIlx1MUVDNSI6ImUiLCJcdTFFQzMiOiJlIiw9CiJcdTFFQkQiOiJl
IiwiXHUwMTEzIjoiZSIsIlx1MUUxNSI6ImUiLCJcdTFFMTciOiJlIiwiXHUwMTE1IjoiZSIsIlx1
MDExNyI6Ij0KZSIsIlx1MDBFQiI6ImUiLCJcdTFFQkIiOiJlIiwiXHUwMTFCIjoiZSIsIlx1MDIw
NSI6ImUiLCJcdTAyMDciOiJlIiwiXHUxRUI5PQoiOiJlIiwiXHUxRUM3IjoiZSIsIlx1MDIyOSI6
ImUiLCJcdTFFMUQiOiJlIiwiXHUwMTE5IjoiZSIsIlx1MUUxOSI6ImUiLCJcdTE9CkUxQiI6ImUi
LCJcdTAyNDciOiJlIiwiXHUwMjVCIjoiZSIsIlx1MDFERCI6ImUiLCJcdTI0RDUiOiJmIiwiXHVG
RjQ2IjoiZiIsIj0KXHUxRTFGIjoiZiIsIlx1MDE5MiI6ImYiLCJcdUE3N0MiOiJmIiwiXHUyNEQ2
IjoiZyIsIlx1RkY0NyI6ImciLCJcdTAxRjUiOiJnPQoiLCJcdTAxMUQiOiJnIiwiXHUxRTIxIjoi
ZyIsIlx1MDExRiI6ImciLCJcdTAxMjEiOiJnIiwiXHUwMUU3IjoiZyIsIlx1MDEyMyI9CjoiZyIs
Ilx1MDFFNSI6ImciLCJcdTAyNjAiOiJnIiwiXHVBN0ExIjoiZyIsIlx1MUQ3OSI6ImciLCJcdUE3
N0YiOiJnIiwiXHUyND0KRDciOiJoIiwiXHVGRjQ4IjoiaCIsIlx1MDEyNSI6ImgiLCJcdTFFMjMi
OiJoIiwiXHUxRTI3IjoiaCIsIlx1MDIxRiI6ImgiLCJcPQp1MUUyNSI6ImgiLCJcdTFFMjkiOiJo
IiwiXHUxRTJCIjoiaCIsIlx1MUU5NiI6ImgiLCJcdTAxMjciOiJoIiwiXHUyQzY4IjoiaCI9Ciwi
XHUyQzc2IjoiaCIsIlx1MDI2NSI6ImgiLCJcdTAxOTUiOiJodiIsIlx1MjREOCI6ImkiLCJcdUZG
NDkiOiJpIiwiXHUwMEVDIj0KOiJpIiwiXHUwMEVEIjoiaSIsIlx1MDBFRSI6ImkiLCJcdTAxMjki
OiJpIiwiXHUwMTJCIjoiaSIsIlx1MDEyRCI6ImkiLCJcdTAwPQpFRiI6ImkiLCJcdTFFMkYiOiJp
IiwiXHUxRUM5IjoiaSIsIlx1MDFEMCI6ImkiLCJcdTAyMDkiOiJpIiwiXHUwMjBCIjoiaSIsIlw9
CnUxRUNCIjoiaSIsIlx1MDEyRiI6ImkiLCJcdTFFMkQiOiJpIiwiXHUwMjY4IjoiaSIsIlx1MDEz
MSI6ImkiLCJcdTI0RDkiOiJqIj0KLCJcdUZGNEEiOiJqIiwiXHUwMTM1IjoiaiIsIlx1MDFGMCI6
ImoiLCJcdTAyNDkiOiJqIiwiXHUyNERBIjoiayIsIlx1RkY0QiI6PQoiayIsIlx1MUUzMSI6Imsi
LCJcdTAxRTkiOiJrIiwiXHUxRTMzIjoiayIsIlx1MDEzNyI6ImsiLCJcdTFFMzUiOiJrIiwiXHUw
MTk9CjkiOiJrIiwiXHUyQzZBIjoiayIsIlx1QTc0MSI6ImsiLCJcdUE3NDMiOiJrIiwiXHVBNzQ1
IjoiayIsIlx1QTdBMyI6ImsiLCJcdT0KMjREQiI6ImwiLCJcdUZGNEMiOiJsIiwiXHUwMTQwIjoi
bCIsIlx1MDEzQSI6ImwiLCJcdTAxM0UiOiJsIiwiXHUxRTM3IjoibCIsPQoiXHUxRTM5IjoibCIs
Ilx1MDEzQyI6ImwiLCJcdTFFM0QiOiJsIiwiXHUxRTNCIjoibCIsIlx1MDE3RiI6ImwiLCJcdTAx
NDIiOiI9CmwiLCJcdTAxOUEiOiJsIiwiXHUwMjZCIjoibCIsIlx1MkM2MSI6ImwiLCJcdUE3NDki
OiJsIiwiXHVBNzgxIjoibCIsIlx1QTc0Nz0KIjoibCIsIlx1MDFDOSI6ImxqIiwiXHUyNERDIjoi
bSIsIlx1RkY0RCI6Im0iLCJcdTFFM0YiOiJtIiwiXHUxRTQxIjoibSIsIlx1PQoxRTQzIjoibSIs
Ilx1MDI3MSI6Im0iLCJcdTAyNkYiOiJtIiwiXHUyNEREIjoibiIsIlx1RkY0RSI6Im4iLCJcdTAx
RjkiOiJuIiw9CiJcdTAxNDQiOiJuIiwiXHUwMEYxIjoibiIsIlx1MUU0NSI6Im4iLCJcdTAxNDgi
OiJuIiwiXHUxRTQ3IjoibiIsIlx1MDE0NiI6Ij0KbiIsIlx1MUU0QiI6Im4iLCJcdTFFNDkiOiJu
IiwiXHUwMTlFIjoibiIsIlx1MDI3MiI6Im4iLCJcdTAxNDkiOiJuIiwiXHVBNzkxPQoiOiJuIiwi
XHVBN0E1IjoibiIsIlx1MDFDQyI6Im5qIiwiXHUyNERFIjoibyIsIlx1RkY0RiI6Im8iLCJcdTAw
RjIiOiJvIiwiXHU9CjAwRjMiOiJvIiwiXHUwMEY0IjoibyIsIlx1MUVEMyI6Im8iLCJcdTFFRDEi
OiJvIiwiXHUxRUQ3IjoibyIsIlx1MUVENSI6Im8iLD0KIlx1MDBGNSI6Im8iLCJcdTFFNEQiOiJv
IiwiXHUwMjJEIjoibyIsIlx1MUU0RiI6Im8iLCJcdTAxNEQiOiJvIiwiXHUxRTUxIjoiPQpvIiwi
XHUxRTUzIjoibyIsIlx1MDE0RiI6Im8iLCJcdTAyMkYiOiJvIiwiXHUwMjMxIjoibyIsIlx1MDBG
NiI6Im8iLCJcdTAyMkI9CiI6Im8iLCJcdTFFQ0YiOiJvIiwiXHUwMTUxIjoibyIsIlx1MDFEMiI6
Im8iLCJcdTAyMEQiOiJvIiwiXHUwMjBGIjoibyIsIlx1MD0KMUExIjoibyIsIlx1MUVERCI6Im8i
LCJcdTFFREIiOiJvIiwiXHUxRUUxIjoibyIsIlx1MUVERiI6Im8iLCJcdTFFRTMiOiJvIiwiPQpc
dTFFQ0QiOiJvIiwiXHUxRUQ5IjoibyIsIlx1MDFFQiI6Im8iLCJcdTAxRUQiOiJvIiwiXHUwMEY4
IjoibyIsIlx1MDFGRiI6Im89CiIsIlx1MDI1NCI6Im8iLCJcdUE3NEIiOiJvIiwiXHVBNzREIjoi
byIsIlx1MDI3NSI6Im8iLCJcdTAxQTMiOiJvaSIsIlx1MDIyMz0KIjoib3UiLCJcdUE3NEYiOiJv
byIsIlx1MjRERiI6InAiLCJcdUZGNTAiOiJwIiwiXHUxRTU1IjoicCIsIlx1MUU1NyI6InAiLCJc
PQp1MDFBNSI6InAiLCJcdTFEN0QiOiJwIiwiXHVBNzUxIjoicCIsIlx1QTc1MyI6InAiLCJcdUE3
NTUiOiJwIiwiXHUyNEUwIjoicSI9CiwiXHVGRjUxIjoicSIsIlx1MDI0QiI6InEiLCJcdUE3NTci
OiJxIiwiXHVBNzU5IjoicSIsIlx1MjRFMSI6InIiLCJcdUZGNTIiOj0KInIiLCJcdTAxNTUiOiJy
IiwiXHUxRTU5IjoiciIsIlx1MDE1OSI6InIiLCJcdTAyMTEiOiJyIiwiXHUwMjEzIjoiciIsIlx1
MUU1PQpCIjoiciIsIlx1MUU1RCI6InIiLCJcdTAxNTciOiJyIiwiXHUxRTVGIjoiciIsIlx1MDI0
RCI6InIiLCJcdTAyN0QiOiJyIiwiXHU9CkE3NUIiOiJyIiwiXHVBN0E3IjoiciIsIlx1QTc4MyI6
InIiLCJcdTI0RTIiOiJzIiwiXHVGRjUzIjoicyIsIlx1MDBERiI6InMiLD0KIlx1MDE1QiI6InMi
LCJcdTFFNjUiOiJzIiwiXHUwMTVEIjoicyIsIlx1MUU2MSI6InMiLCJcdTAxNjEiOiJzIiwiXHUx
RTY3IjoiPQpzIiwiXHUxRTYzIjoicyIsIlx1MUU2OSI6InMiLCJcdTAyMTkiOiJzIiwiXHUwMTVG
IjoicyIsIlx1MDIzRiI6InMiLCJcdUE3QTk9CiI6InMiLCJcdUE3ODUiOiJzIiwiXHUxRTlCIjoi
cyIsIlx1MjRFMyI6InQiLCJcdUZGNTQiOiJ0IiwiXHUxRTZCIjoidCIsIlx1MT0KRTk3IjoidCIs
Ilx1MDE2NSI6InQiLCJcdTFFNkQiOiJ0IiwiXHUwMjFCIjoidCIsIlx1MDE2MyI6InQiLCJcdTFF
NzEiOiJ0IiwiPQpcdTFFNkYiOiJ0IiwiXHUwMTY3IjoidCIsIlx1MDFBRCI6InQiLCJcdTAyODgi
OiJ0IiwiXHUyQzY2IjoidCIsIlx1QTc4NyI6InQ9CiIsIlx1QTcyOSI6InR6IiwiXHUyNEU0Ijoi
dSIsIlx1RkY1NSI6InUiLCJcdTAwRjkiOiJ1IiwiXHUwMEZBIjoidSIsIlx1MDBGQj0KIjoidSIs
Ilx1MDE2OSI6InUiLCJcdTFFNzkiOiJ1IiwiXHUwMTZCIjoidSIsIlx1MUU3QiI6InUiLCJcdTAx
NkQiOiJ1IiwiXHUwPQowRkMiOiJ1IiwiXHUwMURDIjoidSIsIlx1MDFEOCI6InUiLCJcdTAxRDYi
OiJ1IiwiXHUwMURBIjoidSIsIlx1MUVFNyI6InUiLCI9Clx1MDE2RiI6InUiLCJcdTAxNzEiOiJ1
IiwiXHUwMUQ0IjoidSIsIlx1MDIxNSI6InUiLCJcdTAyMTciOiJ1IiwiXHUwMUIwIjoidT0KIiwi
XHUxRUVCIjoidSIsIlx1MUVFOSI6InUiLCJcdTFFRUYiOiJ1IiwiXHUxRUVEIjoidSIsIlx1MUVG
MSI6InUiLCJcdTFFRTUiPQo6InUiLCJcdTFFNzMiOiJ1IiwiXHUwMTczIjoidSIsIlx1MUU3NyI6
InUiLCJcdTFFNzUiOiJ1IiwiXHUwMjg5IjoidSIsIlx1MjQ9CkU1IjoidiIsIlx1RkY1NiI6InYi
LCJcdTFFN0QiOiJ2IiwiXHUxRTdGIjoidiIsIlx1MDI4QiI6InYiLCJcdUE3NUYiOiJ2IiwiXD0K
dTAyOEMiOiJ2IiwiXHVBNzYxIjoidnkiLCJcdTI0RTYiOiJ3IiwiXHVGRjU3IjoidyIsIlx1MUU4
MSI6InciLCJcdTFFODMiOiJ3PQoiLCJcdTAxNzUiOiJ3IiwiXHUxRTg3IjoidyIsIlx1MUU4NSI6
InciLCJcdTFFOTgiOiJ3IiwiXHUxRTg5IjoidyIsIlx1MkM3MyI9CjoidyIsIlx1MjRFNyI6Ingi
LCJcdUZGNTgiOiJ4IiwiXHUxRThCIjoieCIsIlx1MUU4RCI6IngiLCJcdTI0RTgiOiJ5IiwiXHVG
Rj0KNTkiOiJ5IiwiXHUxRUYzIjoieSIsIlx1MDBGRCI6InkiLCJcdTAxNzciOiJ5IiwiXHUxRUY5
IjoieSIsIlx1MDIzMyI6InkiLCJcPQp1MUU4RiI6InkiLCJcdTAwRkYiOiJ5IiwiXHUxRUY3Ijoi
eSIsIlx1MUU5OSI6InkiLCJcdTFFRjUiOiJ5IiwiXHUwMUI0IjoieSI9CiwiXHUwMjRGIjoieSIs
Ilx1MUVGRiI6InkiLCJcdTI0RTkiOiJ6IiwiXHVGRjVBIjoieiIsIlx1MDE3QSI6InoiLCJcdTFF
OTEiOj0KInoiLCJcdTAxN0MiOiJ6IiwiXHUwMTdFIjoieiIsIlx1MUU5MyI6InoiLCJcdTFFOTUi
OiJ6IiwiXHUwMUI2IjoieiIsIlx1MDIyPQo1IjoieiIsIlx1MDI0MCI6InoiLCJcdTJDNkMiOiJ6
IiwiXHVBNzYzIjoieiJ9OworICAgIERJQUNSSVRJQ1MgPTNEIHsiXHUyNEI2IjoiQSIsIlx1RkYy
MSI6IkEiLCJcdTAwQzAiOiJBIiwiXHUwMEMxIjoiQSIsIlw9CnUwMEMyIjoiQSIsIlx1MUVBNiI6
IkEiLCJcdTFFQTQiOiJBIiwiXHUxRUFBIjoiQSIsIlx1MUVBOCI6IkEiLCJcdTAwQzMiOiJBIj0K
LCJcdTAxMDAiOiJBIiwiXHUwMTAyIjoiQSIsIlx1MUVCMCI6IkEiLCJcdTFFQUUiOiJBIiwiXHUx
RUI0IjoiQSIsIlx1MUVCMiI6PQoiQSIsIlx1MDIyNiI6IkEiLCJcdTAxRTAiOiJBIiwiXHUwMEM0
IjoiQSIsIlx1MDFERSI6IkEiLCJcdTFFQTIiOiJBIiwiXHUwMEM9CjUiOiJBIiwiXHUwMUZBIjoi
QSIsIlx1MDFDRCI6IkEiLCJcdTAyMDAiOiJBIiwiXHUwMjAyIjoiQSIsIlx1MUVBMCI6IkEiLCJc
dT0KMUVBQyI6IkEiLCJcdTFFQjYiOiJBIiwiXHUxRTAwIjoiQSIsIlx1MDEwNCI6IkEiLCJcdTAy
M0EiOiJBIiwiXHUyQzZGIjoiQSIsPQoiXHVBNzMyIjoiQUEiLCJcdTAwQzYiOiJBRSIsIlx1MDFG
QyI6IkFFIiwiXHUwMUUyIjoiQUUiLCJcdUE3MzQiOiJBTyIsIlx1QTc9CjM2IjoiQVUiLCJcdUE3
MzgiOiJBViIsIlx1QTczQSI6IkFWIiwiXHVBNzNDIjoiQVkiLCJcdTI0QjciOiJCIiwiXHVGRjIy
IjoiQj0KIiwiXHUxRTAyIjoiQiIsIlx1MUUwNCI6IkIiLCJcdTFFMDYiOiJCIiwiXHUwMjQzIjoi
QiIsIlx1MDE4MiI6IkIiLCJcdTAxODEiPQo6IkIiLCJcdTI0QjgiOiJDIiwiXHVGRjIzIjoiQyIs
Ilx1MDEwNiI6IkMiLCJcdTAxMDgiOiJDIiwiXHUwMTBBIjoiQyIsIlx1MDE9CjBDIjoiQyIsIlx1
MDBDNyI6IkMiLCJcdTFFMDgiOiJDIiwiXHUwMTg3IjoiQyIsIlx1MDIzQiI6IkMiLCJcdUE3M0Ui
OiJDIiwiXD0KdTI0QjkiOiJEIiwiXHVGRjI0IjoiRCIsIlx1MUUwQSI6IkQiLCJcdTAxMEUiOiJE
IiwiXHUxRTBDIjoiRCIsIlx1MUUxMCI6IkQiPQosIlx1MUUxMiI6IkQiLCJcdTFFMEUiOiJEIiwi
XHUwMTEwIjoiRCIsIlx1MDE4QiI6IkQiLCJcdTAxOEEiOiJEIiwiXHUwMTg5Ijo9CiJEIiwiXHVB
Nzc5IjoiRCIsIlx1MDFGMSI6IkRaIiwiXHUwMUM0IjoiRFoiLCJcdTAxRjIiOiJEeiIsIlx1MDFD
NSI6IkR6IiwiXD0KdTI0QkEiOiJFIiwiXHVGRjI1IjoiRSIsIlx1MDBDOCI6IkUiLCJcdTAwQzki
OiJFIiwiXHUwMENBIjoiRSIsIlx1MUVDMCI6IkUiPQosIlx1MUVCRSI6IkUiLCJcdTFFQzQiOiJF
IiwiXHUxRUMyIjoiRSIsIlx1MUVCQyI6IkUiLCJcdTAxMTIiOiJFIiwiXHUxRTE0Ijo9CiJFIiwi
XHUxRTE2IjoiRSIsIlx1MDExNCI6IkUiLCJcdTAxMTYiOiJFIiwiXHUwMENCIjoiRSIsIlx1MUVC
QSI6IkUiLCJcdTAxMT0KQSI6IkUiLCJcdTAyMDQiOiJFIiwiXHUwMjA2IjoiRSIsIlx1MUVCOCI6
IkUiLCJcdTFFQzYiOiJFIiwiXHUwMjI4IjoiRSIsIlx1PQoxRTFDIjoiRSIsIlx1MDExOCI6IkUi
LCJcdTFFMTgiOiJFIiwiXHUxRTFBIjoiRSIsIlx1MDE5MCI6IkUiLCJcdTAxOEUiOiJFIiw9CiJc
dTI0QkIiOiJGIiwiXHVGRjI2IjoiRiIsIlx1MUUxRSI6IkYiLCJcdTAxOTEiOiJGIiwiXHVBNzdC
IjoiRiIsIlx1MjRCQyI6Ij0KRyIsIlx1RkYyNyI6IkciLCJcdTAxRjQiOiJHIiwiXHUwMTFDIjoi
RyIsIlx1MUUyMCI6IkciLCJcdTAxMUUiOiJHIiwiXHUwMTIwPQoiOiJHIiwiXHUwMUU2IjoiRyIs
Ilx1MDEyMiI6IkciLCJcdTAxRTQiOiJHIiwiXHUwMTkzIjoiRyIsIlx1QTdBMCI6IkciLCJcdUE9
Cjc3RCI6IkciLCJcdUE3N0UiOiJHIiwiXHUyNEJEIjoiSCIsIlx1RkYyOCI6IkgiLCJcdTAxMjQi
OiJIIiwiXHUxRTIyIjoiSCIsIj0KXHUxRTI2IjoiSCIsIlx1MDIxRSI6IkgiLCJcdTFFMjQiOiJI
IiwiXHUxRTI4IjoiSCIsIlx1MUUyQSI6IkgiLCJcdTAxMjYiOiJIPQoiLCJcdTJDNjciOiJIIiwi
XHUyQzc1IjoiSCIsIlx1QTc4RCI6IkgiLCJcdTI0QkUiOiJJIiwiXHVGRjI5IjoiSSIsIlx1MDBD
QyI9CjoiSSIsIlx1MDBDRCI6IkkiLCJcdTAwQ0UiOiJJIiwiXHUwMTI4IjoiSSIsIlx1MDEyQSI6
IkkiLCJcdTAxMkMiOiJJIiwiXHUwMT0KMzAiOiJJIiwiXHUwMENGIjoiSSIsIlx1MUUyRSI6Ikki
LCJcdTFFQzgiOiJJIiwiXHUwMUNGIjoiSSIsIlx1MDIwOCI6IkkiLCJcPQp1MDIwQSI6IkkiLCJc
dTFFQ0EiOiJJIiwiXHUwMTJFIjoiSSIsIlx1MUUyQyI6IkkiLCJcdTAxOTciOiJJIiwiXHUyNEJG
IjoiSiI9CiwiXHVGRjJBIjoiSiIsIlx1MDEzNCI6IkoiLCJcdTAyNDgiOiJKIiwiXHUyNEMwIjoi
SyIsIlx1RkYyQiI6IksiLCJcdTFFMzAiOj0KIksiLCJcdTAxRTgiOiJLIiwiXHUxRTMyIjoiSyIs
Ilx1MDEzNiI6IksiLCJcdTFFMzQiOiJLIiwiXHUwMTk4IjoiSyIsIlx1MkM2PQo5IjoiSyIsIlx1
QTc0MCI6IksiLCJcdUE3NDIiOiJLIiwiXHVBNzQ0IjoiSyIsIlx1QTdBMiI6IksiLCJcdTI0QzEi
OiJMIiwiXHU9CkZGMkMiOiJMIiwiXHUwMTNGIjoiTCIsIlx1MDEzOSI6IkwiLCJcdTAxM0QiOiJM
IiwiXHUxRTM2IjoiTCIsIlx1MUUzOCI6IkwiLD0KIlx1MDEzQiI6IkwiLCJcdTFFM0MiOiJMIiwi
XHUxRTNBIjoiTCIsIlx1MDE0MSI6IkwiLCJcdTAyM0QiOiJMIiwiXHUyQzYyIjoiPQpMIiwiXHUy
QzYwIjoiTCIsIlx1QTc0OCI6IkwiLCJcdUE3NDYiOiJMIiwiXHVBNzgwIjoiTCIsIlx1MDFDNyI6
IkxKIiwiXHUwMUM9CjgiOiJMaiIsIlx1MjRDMiI6Ik0iLCJcdUZGMkQiOiJNIiwiXHUxRTNFIjoi
TSIsIlx1MUU0MCI6Ik0iLCJcdTFFNDIiOiJNIiwiXD0KdTJDNkUiOiJNIiwiXHUwMTlDIjoiTSIs
Ilx1MjRDMyI6Ik4iLCJcdUZGMkUiOiJOIiwiXHUwMUY4IjoiTiIsIlx1MDE0MyI6Ik4iPQosIlx1
MDBEMSI6Ik4iLCJcdTFFNDQiOiJOIiwiXHUwMTQ3IjoiTiIsIlx1MUU0NiI6Ik4iLCJcdTAxNDUi
OiJOIiwiXHUxRTRBIjo9CiJOIiwiXHUxRTQ4IjoiTiIsIlx1MDIyMCI6Ik4iLCJcdTAxOUQiOiJO
IiwiXHVBNzkwIjoiTiIsIlx1QTdBNCI6Ik4iLCJcdTAxQz0KQSI6Ik5KIiwiXHUwMUNCIjoiTmoi
LCJcdTI0QzQiOiJPIiwiXHVGRjJGIjoiTyIsIlx1MDBEMiI6Ik8iLCJcdTAwRDMiOiJPIiwiPQpc
dTAwRDQiOiJPIiwiXHUxRUQyIjoiTyIsIlx1MUVEMCI6Ik8iLCJcdTFFRDYiOiJPIiwiXHUxRUQ0
IjoiTyIsIlx1MDBENSI6Ik89CiIsIlx1MUU0QyI6Ik8iLCJcdTAyMkMiOiJPIiwiXHUxRTRFIjoi
TyIsIlx1MDE0QyI6Ik8iLCJcdTFFNTAiOiJPIiwiXHUxRTUyIj0KOiJPIiwiXHUwMTRFIjoiTyIs
Ilx1MDIyRSI6Ik8iLCJcdTAyMzAiOiJPIiwiXHUwMEQ2IjoiTyIsIlx1MDIyQSI6Ik8iLCJcdTFF
PQpDRSI6Ik8iLCJcdTAxNTAiOiJPIiwiXHUwMUQxIjoiTyIsIlx1MDIwQyI6Ik8iLCJcdTAyMEUi
OiJPIiwiXHUwMUEwIjoiTyIsIlw9CnUxRURDIjoiTyIsIlx1MUVEQSI6Ik8iLCJcdTFFRTAiOiJP
IiwiXHUxRURFIjoiTyIsIlx1MUVFMiI6Ik8iLCJcdTFFQ0MiOiJPIj0KLCJcdTFFRDgiOiJPIiwi
XHUwMUVBIjoiTyIsIlx1MDFFQyI6Ik8iLCJcdTAwRDgiOiJPIiwiXHUwMUZFIjoiTyIsIlx1MDE4
NiI6PQoiTyIsIlx1MDE5RiI6Ik8iLCJcdUE3NEEiOiJPIiwiXHVBNzRDIjoiTyIsIlx1MDFBMiI6
Ik9JIiwiXHVBNzRFIjoiT08iLCJcdTA9CjIyMiI6Ik9VIiwiXHUyNEM1IjoiUCIsIlx1RkYzMCI6
IlAiLCJcdTFFNTQiOiJQIiwiXHUxRTU2IjoiUCIsIlx1MDFBNCI6IlAiLD0KIlx1MkM2MyI6IlAi
LCJcdUE3NTAiOiJQIiwiXHVBNzUyIjoiUCIsIlx1QTc1NCI6IlAiLCJcdTI0QzYiOiJRIiwiXHVG
RjMxIjoiPQpRIiwiXHVBNzU2IjoiUSIsIlx1QTc1OCI6IlEiLCJcdTAyNEEiOiJRIiwiXHUyNEM3
IjoiUiIsIlx1RkYzMiI6IlIiLCJcdTAxNTQ9CiI6IlIiLCJcdTFFNTgiOiJSIiwiXHUwMTU4Ijoi
UiIsIlx1MDIxMCI6IlIiLCJcdTAyMTIiOiJSIiwiXHUxRTVBIjoiUiIsIlx1MT0KRTVDIjoiUiIs
Ilx1MDE1NiI6IlIiLCJcdTFFNUUiOiJSIiwiXHUwMjRDIjoiUiIsIlx1MkM2NCI6IlIiLCJcdUE3
NUEiOiJSIiwiPQpcdUE3QTYiOiJSIiwiXHVBNzgyIjoiUiIsIlx1MjRDOCI6IlMiLCJcdUZGMzMi
OiJTIiwiXHUxRTlFIjoiUyIsIlx1MDE1QSI6IlM9CiIsIlx1MUU2NCI6IlMiLCJcdTAxNUMiOiJT
IiwiXHUxRTYwIjoiUyIsIlx1MDE2MCI6IlMiLCJcdTFFNjYiOiJTIiwiXHUxRTYyIj0KOiJTIiwi
XHUxRTY4IjoiUyIsIlx1MDIxOCI6IlMiLCJcdTAxNUUiOiJTIiwiXHUyQzdFIjoiUyIsIlx1QTdB
OCI6IlMiLCJcdUE3PQo4NCI6IlMiLCJcdTI0QzkiOiJUIiwiXHVGRjM0IjoiVCIsIlx1MUU2QSI6
IlQiLCJcdTAxNjQiOiJUIiwiXHUxRTZDIjoiVCIsIlw9CnUwMjFBIjoiVCIsIlx1MDE2MiI6IlQi
LCJcdTFFNzAiOiJUIiwiXHUxRTZFIjoiVCIsIlx1MDE2NiI6IlQiLCJcdTAxQUMiOiJUIj0KLCJc
dTAxQUUiOiJUIiwiXHUwMjNFIjoiVCIsIlx1QTc4NiI6IlQiLCJcdUE3MjgiOiJUWiIsIlx1MjRD
QSI6IlUiLCJcdUZGMzUiPQo6IlUiLCJcdTAwRDkiOiJVIiwiXHUwMERBIjoiVSIsIlx1MDBEQiI6
IlUiLCJcdTAxNjgiOiJVIiwiXHUxRTc4IjoiVSIsIlx1MDE9CjZBIjoiVSIsIlx1MUU3QSI6IlUi
LCJcdTAxNkMiOiJVIiwiXHUwMERDIjoiVSIsIlx1MDFEQiI6IlUiLCJcdTAxRDciOiJVIiwiXD0K
dTAxRDUiOiJVIiwiXHUwMUQ5IjoiVSIsIlx1MUVFNiI6IlUiLCJcdTAxNkUiOiJVIiwiXHUwMTcw
IjoiVSIsIlx1MDFEMyI6IlUiPQosIlx1MDIxNCI6IlUiLCJcdTAyMTYiOiJVIiwiXHUwMUFGIjoi
VSIsIlx1MUVFQSI6IlUiLCJcdTFFRTgiOiJVIiwiXHUxRUVFIjo9CiJVIiwiXHUxRUVDIjoiVSIs
Ilx1MUVGMCI6IlUiLCJcdTFFRTQiOiJVIiwiXHUxRTcyIjoiVSIsIlx1MDE3MiI6IlUiLCJcdTFF
Nz0KNiI6IlUiLCJcdTFFNzQiOiJVIiwiXHUwMjQ0IjoiVSIsIlx1MjRDQiI6IlYiLCJcdUZGMzYi
OiJWIiwiXHUxRTdDIjoiViIsIlx1PQoxRTdFIjoiViIsIlx1MDFCMiI6IlYiLCJcdUE3NUUiOiJW
IiwiXHUwMjQ1IjoiViIsIlx1QTc2MCI6IlZZIiwiXHUyNENDIjoiVyI9CiwiXHVGRjM3IjoiVyIs
Ilx1MUU4MCI6IlciLCJcdTFFODIiOiJXIiwiXHUwMTc0IjoiVyIsIlx1MUU4NiI6IlciLCJcdTFF
ODQiOj0KIlciLCJcdTFFODgiOiJXIiwiXHUyQzcyIjoiVyIsIlx1MjRDRCI6IlgiLCJcdUZGMzgi
OiJYIiwiXHUxRThBIjoiWCIsIlx1MUU4PQpDIjoiWCIsIlx1MjRDRSI6IlkiLCJcdUZGMzkiOiJZ
IiwiXHUxRUYyIjoiWSIsIlx1MDBERCI6IlkiLCJcdTAxNzYiOiJZIiwiXHU9CjFFRjgiOiJZIiwi
XHUwMjMyIjoiWSIsIlx1MUU4RSI6IlkiLCJcdTAxNzgiOiJZIiwiXHUxRUY2IjoiWSIsIlx1MUVG
NCI6IlkiLD0KIlx1MDFCMyI6IlkiLCJcdTAyNEUiOiJZIiwiXHUxRUZFIjoiWSIsIlx1MjRDRiI6
IloiLCJcdUZGM0EiOiJaIiwiXHUwMTc5IjoiPQpaIiwiXHUxRTkwIjoiWiIsIlx1MDE3QiI6Iloi
LCJcdTAxN0QiOiJaIiwiXHUxRTkyIjoiWiIsIlx1MUU5NCI6IloiLCJcdTAxQjU9CiI6IloiLCJc
dTAyMjQiOiJaIiwiXHUyQzdGIjoiWiIsIlx1MkM2QiI6IloiLCJcdUE3NjIiOiJaIiwiXHUyNEQw
IjoiYSIsIlx1Rj0KRjQxIjoiYSIsIlx1MUU5QSI6ImEiLCJcdTAwRTAiOiJhIiwiXHUwMEUxIjoi
YSIsIlx1MDBFMiI6ImEiLCJcdTFFQTciOiJhIiwiPQpcdTFFQTUiOiJhIiwiXHUxRUFCIjoiYSIs
Ilx1MUVBOSI6ImEiLCJcdTAwRTMiOiJhIiwiXHUwMTAxIjoiYSIsIlx1MDEwMyI6ImE9CiIsIlx1
MUVCMSI6ImEiLCJcdTFFQUYiOiJhIiwiXHUxRUI1IjoiYSIsIlx1MUVCMyI6ImEiLCJcdTAyMjci
OiJhIiwiXHUwMUUxIj0KOiJhIiwiXHUwMEU0IjoiYSIsIlx1MDFERiI6ImEiLCJcdTFFQTMiOiJh
IiwiXHUwMEU1IjoiYSIsIlx1MDFGQiI6ImEiLCJcdTAxPQpDRSI6ImEiLCJcdTAyMDEiOiJhIiwi
XHUwMjAzIjoiYSIsIlx1MUVBMSI6ImEiLCJcdTFFQUQiOiJhIiwiXHUxRUI3IjoiYSIsIlw9CnUx
RTAxIjoiYSIsIlx1MDEwNSI6ImEiLCJcdTJDNjUiOiJhIiwiXHUwMjUwIjoiYSIsIlx1QTczMyI6
ImFhIiwiXHUwMEU2IjoiYT0KZSIsIlx1MDFGRCI6ImFlIiwiXHUwMUUzIjoiYWUiLCJcdUE3MzUi
OiJhbyIsIlx1QTczNyI6ImF1IiwiXHVBNzM5IjoiYXYiLCJcPQp1QTczQiI6ImF2IiwiXHVBNzNE
IjoiYXkiLCJcdTI0RDEiOiJiIiwiXHVGRjQyIjoiYiIsIlx1MUUwMyI6ImIiLCJcdTFFMDUiOiI9
CmIiLCJcdTFFMDciOiJiIiwiXHUwMTgwIjoiYiIsIlx1MDE4MyI6ImIiLCJcdTAyNTMiOiJiIiwi
XHUyNEQyIjoiYyIsIlx1RkY0Mz0KIjoiYyIsIlx1MDEwNyI6ImMiLCJcdTAxMDkiOiJjIiwiXHUw
MTBCIjoiYyIsIlx1MDEwRCI6ImMiLCJcdTAwRTciOiJjIiwiXHUxPQpFMDkiOiJjIiwiXHUwMTg4
IjoiYyIsIlx1MDIzQyI6ImMiLCJcdUE3M0YiOiJjIiwiXHUyMTg0IjoiYyIsIlx1MjREMyI6ImQi
LCI9Clx1RkY0NCI6ImQiLCJcdTFFMEIiOiJkIiwiXHUwMTBGIjoiZCIsIlx1MUUwRCI6ImQiLCJc
dTFFMTEiOiJkIiwiXHUxRTEzIjoiZD0KIiwiXHUxRTBGIjoiZCIsIlx1MDExMSI6ImQiLCJcdTAx
OEMiOiJkIiwiXHUwMjU2IjoiZCIsIlx1MDI1NyI6ImQiLCJcdUE3N0EiPQo6ImQiLCJcdTAxRjMi
OiJkeiIsIlx1MDFDNiI6ImR6IiwiXHUyNEQ0IjoiZSIsIlx1RkY0NSI6ImUiLCJcdTAwRTgiOiJl
IiwiXHU9CjAwRTkiOiJlIiwiXHUwMEVBIjoiZSIsIlx1MUVDMSI6ImUiLCJcdTFFQkYiOiJlIiwi
XHUxRUM1IjoiZSIsIlx1MUVDMyI6ImUiLD0KIlx1MUVCRCI6ImUiLCJcdTAxMTMiOiJlIiwiXHUx
RTE1IjoiZSIsIlx1MUUxNyI6ImUiLCJcdTAxMTUiOiJlIiwiXHUwMTE3IjoiPQplIiwiXHUwMEVC
IjoiZSIsIlx1MUVCQiI6ImUiLCJcdTAxMUIiOiJlIiwiXHUwMjA1IjoiZSIsIlx1MDIwNyI6ImUi
LCJcdTFFQjk9CiI6ImUiLCJcdTFFQzciOiJlIiwiXHUwMjI5IjoiZSIsIlx1MUUxRCI6ImUiLCJc
dTAxMTkiOiJlIiwiXHUxRTE5IjoiZSIsIlx1MT0KRTFCIjoiZSIsIlx1MDI0NyI6ImUiLCJcdTAy
NUIiOiJlIiwiXHUwMUREIjoiZSIsIlx1MjRENSI6ImYiLCJcdUZGNDYiOiJmIiwiPQpcdTFFMUYi
OiJmIiwiXHUwMTkyIjoiZiIsIlx1QTc3QyI6ImYiLCJcdTI0RDYiOiJnIiwiXHVGRjQ3IjoiZyIs
Ilx1MDFGNSI6Imc9CiIsIlx1MDExRCI6ImciLCJcdTFFMjEiOiJnIiwiXHUwMTFGIjoiZyIsIlx1
MDEyMSI6ImciLCJcdTAxRTciOiJnIiwiXHUwMTIzIj0KOiJnIiwiXHUwMUU1IjoiZyIsIlx1MDI2
MCI6ImciLCJcdUE3QTEiOiJnIiwiXHUxRDc5IjoiZyIsIlx1QTc3RiI6ImciLCJcdTI0PQpENyI6
ImgiLCJcdUZGNDgiOiJoIiwiXHUwMTI1IjoiaCIsIlx1MUUyMyI6ImgiLCJcdTFFMjciOiJoIiwi
XHUwMjFGIjoiaCIsIlw9CnUxRTI1IjoiaCIsIlx1MUUyOSI6ImgiLCJcdTFFMkIiOiJoIiwiXHUx
RTk2IjoiaCIsIlx1MDEyNyI6ImgiLCJcdTJDNjgiOiJoIj0KLCJcdTJDNzYiOiJoIiwiXHUwMjY1
IjoiaCIsIlx1MDE5NSI6Imh2IiwiXHUyNEQ4IjoiaSIsIlx1RkY0OSI6ImkiLCJcdTAwRUMiPQo6
ImkiLCJcdTAwRUQiOiJpIiwiXHUwMEVFIjoiaSIsIlx1MDEyOSI6ImkiLCJcdTAxMkIiOiJpIiwi
XHUwMTJEIjoiaSIsIlx1MDA9CkVGIjoiaSIsIlx1MUUyRiI6ImkiLCJcdTFFQzkiOiJpIiwiXHUw
MUQwIjoiaSIsIlx1MDIwOSI6ImkiLCJcdTAyMEIiOiJpIiwiXD0KdTFFQ0IiOiJpIiwiXHUwMTJG
IjoiaSIsIlx1MUUyRCI6ImkiLCJcdTAyNjgiOiJpIiwiXHUwMTMxIjoiaSIsIlx1MjREOSI6Imoi
PQosIlx1RkY0QSI6ImoiLCJcdTAxMzUiOiJqIiwiXHUwMUYwIjoiaiIsIlx1MDI0OSI6ImoiLCJc
dTI0REEiOiJrIiwiXHVGRjRCIjo9CiJrIiwiXHUxRTMxIjoiayIsIlx1MDFFOSI6ImsiLCJcdTFF
MzMiOiJrIiwiXHUwMTM3IjoiayIsIlx1MUUzNSI6ImsiLCJcdTAxOT0KOSI6ImsiLCJcdTJDNkEi
OiJrIiwiXHVBNzQxIjoiayIsIlx1QTc0MyI6ImsiLCJcdUE3NDUiOiJrIiwiXHVBN0EzIjoiayIs
Ilx1PQoyNERCIjoibCIsIlx1RkY0QyI6ImwiLCJcdTAxNDAiOiJsIiwiXHUwMTNBIjoibCIsIlx1
MDEzRSI6ImwiLCJcdTFFMzciOiJsIiw9CiJcdTFFMzkiOiJsIiwiXHUwMTNDIjoibCIsIlx1MUUz
RCI6ImwiLCJcdTFFM0IiOiJsIiwiXHUwMTdGIjoibCIsIlx1MDE0MiI6Ij0KbCIsIlx1MDE5QSI6
ImwiLCJcdTAyNkIiOiJsIiwiXHUyQzYxIjoibCIsIlx1QTc0OSI6ImwiLCJcdUE3ODEiOiJsIiwi
XHVBNzQ3PQoiOiJsIiwiXHUwMUM5IjoibGoiLCJcdTI0REMiOiJtIiwiXHVGRjREIjoibSIsIlx1
MUUzRiI6Im0iLCJcdTFFNDEiOiJtIiwiXHU9CjFFNDMiOiJtIiwiXHUwMjcxIjoibSIsIlx1MDI2
RiI6Im0iLCJcdTI0REQiOiJuIiwiXHVGRjRFIjoibiIsIlx1MDFGOSI6Im4iLD0KIlx1MDE0NCI6
Im4iLCJcdTAwRjEiOiJuIiwiXHUxRTQ1IjoibiIsIlx1MDE0OCI6Im4iLCJcdTFFNDciOiJuIiwi
XHUwMTQ2IjoiPQpuIiwiXHUxRTRCIjoibiIsIlx1MUU0OSI6Im4iLCJcdTAxOUUiOiJuIiwiXHUw
MjcyIjoibiIsIlx1MDE0OSI6Im4iLCJcdUE3OTE9CiI6Im4iLCJcdUE3QTUiOiJuIiwiXHUwMUND
IjoibmoiLCJcdTI0REUiOiJvIiwiXHVGRjRGIjoibyIsIlx1MDBGMiI6Im8iLCJcdT0KMDBGMyI6
Im8iLCJcdTAwRjQiOiJvIiwiXHUxRUQzIjoibyIsIlx1MUVEMSI6Im8iLCJcdTFFRDciOiJvIiwi
XHUxRUQ1IjoibyIsPQoiXHUwMEY1IjoibyIsIlx1MUU0RCI6Im8iLCJcdTAyMkQiOiJvIiwiXHUx
RTRGIjoibyIsIlx1MDE0RCI6Im8iLCJcdTFFNTEiOiI9Cm8iLCJcdTFFNTMiOiJvIiwiXHUwMTRG
IjoibyIsIlx1MDIyRiI6Im8iLCJcdTAyMzEiOiJvIiwiXHUwMEY2IjoibyIsIlx1MDIyQj0KIjoi
byIsIlx1MUVDRiI6Im8iLCJcdTAxNTEiOiJvIiwiXHUwMUQyIjoibyIsIlx1MDIwRCI6Im8iLCJc
dTAyMEYiOiJvIiwiXHUwPQoxQTEiOiJvIiwiXHUxRUREIjoibyIsIlx1MUVEQiI6Im8iLCJcdTFF
RTEiOiJvIiwiXHUxRURGIjoibyIsIlx1MUVFMyI6Im8iLCI9Clx1MUVDRCI6Im8iLCJcdTFFRDki
OiJvIiwiXHUwMUVCIjoibyIsIlx1MDFFRCI6Im8iLCJcdTAwRjgiOiJvIiwiXHUwMUZGIjoibz0K
IiwiXHUwMjU0IjoibyIsIlx1QTc0QiI6Im8iLCJcdUE3NEQiOiJvIiwiXHUwMjc1IjoibyIsIlx1
MDFBMyI6Im9pIiwiXHUwMjIzPQoiOiJvdSIsIlx1QTc0RiI6Im9vIiwiXHUyNERGIjoicCIsIlx1
RkY1MCI6InAiLCJcdTFFNTUiOiJwIiwiXHUxRTU3IjoicCIsIlw9CnUwMUE1IjoicCIsIlx1MUQ3
RCI6InAiLCJcdUE3NTEiOiJwIiwiXHVBNzUzIjoicCIsIlx1QTc1NSI6InAiLCJcdTI0RTAiOiJx
Ij0KLCJcdUZGNTEiOiJxIiwiXHUwMjRCIjoicSIsIlx1QTc1NyI6InEiLCJcdUE3NTkiOiJxIiwi
XHUyNEUxIjoiciIsIlx1RkY1MiI6PQoiciIsIlx1MDE1NSI6InIiLCJcdTFFNTkiOiJyIiwiXHUw
MTU5IjoiciIsIlx1MDIxMSI6InIiLCJcdTAyMTMiOiJyIiwiXHUxRTU9CkIiOiJyIiwiXHUxRTVE
IjoiciIsIlx1MDE1NyI6InIiLCJcdTFFNUYiOiJyIiwiXHUwMjREIjoiciIsIlx1MDI3RCI6InIi
LCJcdT0KQTc1QiI6InIiLCJcdUE3QTciOiJyIiwiXHVBNzgzIjoiciIsIlx1MjRFMiI6InMiLCJc
dUZGNTMiOiJzIiwiXHUwMERGIjoicyIsPQoiXHUwMTVCIjoicyIsIlx1MUU2NSI6InMiLCJcdTAx
NUQiOiJzIiwiXHUxRTYxIjoicyIsIlx1MDE2MSI6InMiLCJcdTFFNjciOiI9CnMiLCJcdTFFNjMi
OiJzIiwiXHUxRTY5IjoicyIsIlx1MDIxOSI6InMiLCJcdTAxNUYiOiJzIiwiXHUwMjNGIjoicyIs
Ilx1QTdBOT0KIjoicyIsIlx1QTc4NSI6InMiLCJcdTFFOUIiOiJzIiwiXHUyNEUzIjoidCIsIlx1
RkY1NCI6InQiLCJcdTFFNkIiOiJ0IiwiXHUxPQpFOTciOiJ0IiwiXHUwMTY1IjoidCIsIlx1MUU2
RCI6InQiLCJcdTAyMUIiOiJ0IiwiXHUwMTYzIjoidCIsIlx1MUU3MSI6InQiLCI9Clx1MUU2RiI6
InQiLCJcdTAxNjciOiJ0IiwiXHUwMUFEIjoidCIsIlx1MDI4OCI6InQiLCJcdTJDNjYiOiJ0Iiwi
XHVBNzg3IjoidD0KIiwiXHVBNzI5IjoidHoiLCJcdTI0RTQiOiJ1IiwiXHVGRjU1IjoidSIsIlx1
MDBGOSI6InUiLCJcdTAwRkEiOiJ1IiwiXHUwMEZCPQoiOiJ1IiwiXHUwMTY5IjoidSIsIlx1MUU3
OSI6InUiLCJcdTAxNkIiOiJ1IiwiXHUxRTdCIjoidSIsIlx1MDE2RCI6InUiLCJcdTA9CjBGQyI6
InUiLCJcdTAxREMiOiJ1IiwiXHUwMUQ4IjoidSIsIlx1MDFENiI6InUiLCJcdTAxREEiOiJ1Iiwi
XHUxRUU3IjoidSIsIj0KXHUwMTZGIjoidSIsIlx1MDE3MSI6InUiLCJcdTAxRDQiOiJ1IiwiXHUw
MjE1IjoidSIsIlx1MDIxNyI6InUiLCJcdTAxQjAiOiJ1PQoiLCJcdTFFRUIiOiJ1IiwiXHUxRUU5
IjoidSIsIlx1MUVFRiI6InUiLCJcdTFFRUQiOiJ1IiwiXHUxRUYxIjoidSIsIlx1MUVFNSI9Cjoi
dSIsIlx1MUU3MyI6InUiLCJcdTAxNzMiOiJ1IiwiXHUxRTc3IjoidSIsIlx1MUU3NSI6InUiLCJc
dTAyODkiOiJ1IiwiXHUyND0KRTUiOiJ2IiwiXHVGRjU2IjoidiIsIlx1MUU3RCI6InYiLCJcdTFF
N0YiOiJ2IiwiXHUwMjhCIjoidiIsIlx1QTc1RiI6InYiLCJcPQp1MDI4QyI6InYiLCJcdUE3NjEi
OiJ2eSIsIlx1MjRFNiI6InciLCJcdUZGNTciOiJ3IiwiXHUxRTgxIjoidyIsIlx1MUU4MyI6Inc9
CiIsIlx1MDE3NSI6InciLCJcdTFFODciOiJ3IiwiXHUxRTg1IjoidyIsIlx1MUU5OCI6InciLCJc
dTFFODkiOiJ3IiwiXHUyQzczIj0KOiJ3IiwiXHUyNEU3IjoieCIsIlx1RkY1OCI6IngiLCJcdTFF
OEIiOiJ4IiwiXHUxRThEIjoieCIsIlx1MjRFOCI6InkiLCJcdUZGPQo1OSI6InkiLCJcdTFFRjMi
OiJ5IiwiXHUwMEZEIjoieSIsIlx1MDE3NyI6InkiLCJcdTFFRjkiOiJ5IiwiXHUwMjMzIjoieSIs
Ilw9CnUxRThGIjoieSIsIlx1MDBGRiI6InkiLCJcdTFFRjciOiJ5IiwiXHUxRTk5IjoieSIsIlx1
MUVGNSI6InkiLCJcdTAxQjQiOiJ5Ij0KLCJcdTAyNEYiOiJ5IiwiXHUxRUZGIjoieSIsIlx1MjRF
OSI6InoiLCJcdUZGNUEiOiJ6IiwiXHUwMTdBIjoieiIsIlx1MUU5MSI6PQoieiIsIlx1MDE3QyI6
InoiLCJcdTAxN0UiOiJ6IiwiXHUxRTkzIjoieiIsIlx1MUU5NSI6InoiLCJcdTAxQjYiOiJ6Iiwi
XHUwMjI9CjUiOiJ6IiwiXHUwMjQwIjoieiIsIlx1MkM2QyI6InoiLCJcdUE3NjMiOiJ6IiwiXHUw
Mzg2IjoiXHUwMzkxIiwiXHUwMzg4IjoiXD0KdTAzOTUiLCJcdTAzODkiOiJcdTAzOTciLCJcdTAz
OEEiOiJcdTAzOTkiLCJcdTAzQUEiOiJcdTAzOTkiLCJcdTAzOEMiOiJcdTAzPQo5RiIsIlx1MDM4
RSI6Ilx1MDNBNSIsIlx1MDNBQiI6Ilx1MDNBNSIsIlx1MDM4RiI6Ilx1MDNBOSIsIlx1MDNBQyI6
Ilx1MDNCMSI9CiwiXHUwM0FEIjoiXHUwM0I1IiwiXHUwM0FFIjoiXHUwM0I3IiwiXHUwM0FGIjoi
XHUwM0I5IiwiXHUwM0NBIjoiXHUwM0I5IiwiXD0KdTAzOTAiOiJcdTAzQjkiLCJcdTAzQ0MiOiJc
dTAzQkYiLCJcdTAzQ0QiOiJcdTAzQzUiLCJcdTAzQ0IiOiJcdTAzQzUiLCJcdTAzPQpCMCI6Ilx1
MDNDNSIsIlx1MDNDOSI6Ilx1MDNDOSIsIlx1MDNDMiI6Ilx1MDNDMyJ9Owo9MjAKICAgICAkZG9j
dW1lbnQgPTNEICQoZG9jdW1lbnQpOwo9MjAKICAgICBuZXh0VWlkPTNEKGZ1bmN0aW9uKCkgeyB2
YXIgY291bnRlcj0zRDE7IHJldHVybiBmdW5jdGlvbigpIHsgcmV0dXJuIGNvPQp1bnRlcisrOyB9
OyB9KCkpOwo9MjAKPTIwCisgICAgZnVuY3Rpb24gcmVpbnNlcnRFbGVtZW50KGVsZW1lbnQpIHsK
KyAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0zRCAkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcn
KSk7CisKKyAgICAgICAgZWxlbWVudC5iZWZvcmUocGxhY2Vob2xkZXIpOworICAgICAgICBwbGFj
ZWhvbGRlci5iZWZvcmUoZWxlbWVudCk7CisgICAgICAgIHBsYWNlaG9sZGVyLnJlbW92ZSgpOwor
ICAgIH0KKwogICAgIGZ1bmN0aW9uIHN0cmlwRGlhY3JpdGljcyhzdHIpIHsKLSAgICAgICAgdmFy
IHJldCwgaSwgbCwgYzsKLQotICAgICAgICBpZiAoIXN0ciB8fCBzdHIubGVuZ3RoIDwgMSkgcmV0
dXJuIHN0cjsKLQotICAgICAgICByZXQgPTNEICIiOwotICAgICAgICBmb3IgKGkgPTNEIDAsIGwg
PTNEIHN0ci5sZW5ndGg7IGkgPCBsOyBpKyspIHsKLSAgICAgICAgICAgIGMgPTNEIHN0ci5jaGFy
QXQoaSk7Ci0gICAgICAgICAgICByZXQgKz0zRCBESUFDUklUSUNTW2NdIHx8IGM7CisgICAgICAg
IC8vIFVzZWQgJ3VuaSByYW5nZSArIG5hbWVkIGZ1bmN0aW9uJyBmcm9tIGh0dHA6Ly9qc3BlcmYu
Y29tL2RpYWNyaT0KdGljcy8xOAorICAgICAgICBmdW5jdGlvbiBtYXRjaChhKSB7CisgICAgICAg
ICAgICByZXR1cm4gRElBQ1JJVElDU1thXSB8fCBhOwogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biByZXQ7CisKKyAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlx1MDAwMC1cdTAwN0VdL2cs
IG1hdGNoKTsKICAgICB9Cj0yMAogICAgIGZ1bmN0aW9uIGluZGV4T2YodmFsdWUsIGFycmF5KSB7
CkBAIC0xODksMTAgKzE5Myw2IEBACiAgICAgICAgIH0pOwogICAgIH0KPTIwCi0gICAgJGRvY3Vt
ZW50Lm9uKCJtb3VzZW1vdmUiLCBmdW5jdGlvbiAoZSkgewotICAgICAgICBsYXN0TW91c2VQb3Np
dGlvbi54ID0zRCBlLnBhZ2VYOwotICAgICAgICBsYXN0TW91c2VQb3NpdGlvbi55ID0zRCBlLnBh
Z2VZOwotICAgIH0pOwo9MjAKICAgICAvKioKICAgICAgKiBmaWx0ZXJzIG1vdXNlIGV2ZW50cyBz
byBhbiBldmVudCBpcyBmaXJlZCBvbmx5IGlmIHRoZSBtb3VzZSBtb3ZlZC4KQEAgLTIzMCwyMCAr
MjMwLDYgQEAKICAgICAgICAgfTsKICAgICB9Cj0yMAotICAgIC8qKgotICAgICAqIEEgc2ltcGxl
IGltcGxlbWVudGF0aW9uIG9mIGEgdGh1bmsKLSAgICAgKiBAcGFyYW0gZm9ybXVsYSBmdW5jdGlv
biB1c2VkIHRvIGxhemlseSBpbml0aWFsaXplIHRoZSB0aHVuawotICAgICAqIEByZXR1cm4ge0Z1
bmN0aW9ufQotICAgICAqLwotICAgIGZ1bmN0aW9uIHRodW5rKGZvcm11bGEpIHsKLSAgICAgICAg
dmFyIGV2YWx1YXRlZCA9M0QgZmFsc2UsCi0gICAgICAgICAgICB2YWx1ZTsKLSAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKGV2YWx1YXRlZCA9M0Q9M0Q9M0QgZmFs
c2UpIHsgdmFsdWUgPTNEIGZvcm11bGEoKTsgZXZhbHVhdGU9CmQgPTNEIHRydWU7IH0KLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfTsKLSAgICB9OwotCiAgICAgZnVuY3Rpb24g
aW5zdGFsbERlYm91bmNlZFNjcm9sbCh0aHJlc2hvbGQsIGVsZW1lbnQpIHsKICAgICAgICAgdmFy
IG5vdGlmeSA9M0QgZGVib3VuY2UodGhyZXNob2xkLCBmdW5jdGlvbiAoZSkgeyBlbGVtZW50LnRy
aWdnZXIoPQoic2Nyb2xsLWRlYm91bmNlZCIsIGUpO30pOwogICAgICAgICBlbGVtZW50Lm9uKCJz
Y3JvbGwiLCBmdW5jdGlvbiAoZSkgewpAQCAtMjYzLDggKzI0OSw5IEBACiAgICAgICAgICAgICAk
ZWwuZm9jdXMoKTsKPTIwCiAgICAgICAgICAgICAvKiBtYWtlIHN1cmUgZWwgcmVjZWl2ZWQgZm9j
dXMgc28gd2UgZG8gbm90IGVycm9yIG91dCB3aGVuIHRyeT0KaW5nIHRvIG1hbmlwdWxhdGUgdGhl
IGNhcmV0LgotICAgICAgICAgICAgICAgIHNvbWV0aW1lcyBtb2RhbHMgb3Igb3RoZXJzIGxpc3Rl
bmVycyBtYXkgc3RlYWwgaXQgYWZ0ZXIgaXQ9CidzIHNldCAqLwotICAgICAgICAgICAgaWYgKCRl
bC5pcygiOnZpc2libGUiKSAmJiBlbCA9M0Q9M0Q9M0QgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk9
CiB7CisgICAgICAgICAgICAgICAgc29tZXRpbWVzIG1vZGFscyBvciBvdGhlcnMgbGlzdGVuZXJz
IG1heSBzdGVhbCBpdCBhZnRlciBpdD0KcyBzZXQgKi8KKyAgICAgICAgICAgIHZhciBpc1Zpc2li
bGUgPTNEIChlbC5vZmZzZXRXaWR0aCA+IDAgfHwgZWwub2Zmc2V0SGVpZ2h0ID4gMCk7CisgICAg
ICAgICAgICBpZiAoaXNWaXNpYmxlICYmIGVsID0zRD0zRD0zRCBkb2N1bWVudC5hY3RpdmVFbGVt
ZW50KSB7Cj0yMAogICAgICAgICAgICAgICAgIC8qIGFmdGVyIHRoZSBmb2N1cyBpcyBzZXQgbW92
ZSB0aGUgY2FyZXQgdG8gdGhlIGVuZCwgbmVjZXM9CnNhcnkgd2hlbiB3ZSB2YWwoKQogICAgICAg
ICAgICAgICAgICAgICBqdXN0IGJlZm9yZSBzZXR0aW5nIGZvY3VzICovCkBAIC0zMzMsMjcgKzMy
MCwzNCBAQAogICAgIGZ1bmN0aW9uIHN5bmNDc3NDbGFzc2VzKGRlc3QsIHNyYywgYWRhcHRlcikg
ewogICAgICAgICB2YXIgY2xhc3NlcywgcmVwbGFjZW1lbnRzID0zRCBbXSwgYWRhcHRlZDsKPTIw
Ci0gICAgICAgIGNsYXNzZXMgPTNEIGRlc3QuYXR0cigiY2xhc3MiKTsKKyAgICAgICAgY2xhc3Nl
cyA9M0QgJC50cmltKGRlc3QuYXR0cigiY2xhc3MiKSk7CisKICAgICAgICAgaWYgKGNsYXNzZXMp
IHsKICAgICAgICAgICAgIGNsYXNzZXMgPTNEICcnICsgY2xhc3NlczsgLy8gZm9yIElFIHdoaWNo
IHJldHVybnMgb2JqZWN0Ci0gICAgICAgICAgICAkKGNsYXNzZXMuc3BsaXQoIiAiKSkuZWFjaDIo
ZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICQoY2xhc3Nlcy5zcGxpdCgvXHMrLykpLmVhY2gy
KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGV4T2YoInNlbGVjdDIt
IikgPTNEPTNEPTNEIDApIHsKICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2go
dGhpcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAg
ICAgICAgY2xhc3NlcyA9M0Qgc3JjLmF0dHIoImNsYXNzIik7CisKKyAgICAgICAgY2xhc3NlcyA9
M0QgJC50cmltKHNyYy5hdHRyKCJjbGFzcyIpKTsKKwogICAgICAgICBpZiAoY2xhc3Nlcykgewog
ICAgICAgICAgICAgY2xhc3NlcyA9M0QgJycgKyBjbGFzc2VzOyAvLyBmb3IgSUUgd2hpY2ggcmV0
dXJucyBvYmplY3QKLSAgICAgICAgICAgICQoY2xhc3Nlcy5zcGxpdCgiICIpKS5lYWNoMihmdW5j
dGlvbigpIHsKKworICAgICAgICAgICAgJChjbGFzc2VzLnNwbGl0KC9ccysvKSkuZWFjaDIoZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXhPZigic2VsZWN0Mi0iKSAh
PTNEPTNEIDApIHsKICAgICAgICAgICAgICAgICAgICAgYWRhcHRlZCA9M0QgYWRhcHRlcih0aGlz
KTsKKwogICAgICAgICAgICAgICAgICAgICBpZiAoYWRhcHRlZCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2godGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudHMucHVzaChhZGFwdGVkKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwogICAgICAgICB9CisKICAgICAgICAgZGVz
dC5hdHRyKCJjbGFzcyIsIHJlcGxhY2VtZW50cy5qb2luKCIgIikpOwogICAgIH0KPTIwCkBAIC0z
OTMsMTQgKzM4NywxNCBAQAogICAgIC8qKgogICAgICAqIFByb2R1Y2VzIGFuIGFqYXgtYmFzZWQg
cXVlcnkgZnVuY3Rpb24KICAgICAgKgotICAgICAqIEBwYXJhbSBvcHRpb25zIG9iamVjdCBjb250
YWluaW5nIGNvbmZpZ3VyYXRpb24gcGFyYW10ZXJzCisgICAgICogQHBhcmFtIG9wdGlvbnMgb2Jq
ZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCiAgICAgICogQHBhcmFtIG9w
dGlvbnMucGFyYW1zIHBhcmFtZXRlciBtYXAgZm9yIHRoZSB0cmFuc3BvcnQgYWpheCBjYWxsLCBj
YT0KbiBjb250YWluIHN1Y2ggb3B0aW9ucyBhcyBjYWNoZSwganNvbnBDYWxsYmFjaywgZXRjLiBz
ZWUgJC5hamF4CiAgICAgICogQHBhcmFtIG9wdGlvbnMudHJhbnNwb3J0IGZ1bmN0aW9uIHRoYXQg
d2lsbCBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlID0KYWpheCByZXF1ZXN0LiBtdXN0IGJlIGNvbXBh
dGlibGUgd2l0aCBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSAkLmFqYXgKICAgICAgKiBAcGFyYW0g
b3B0aW9ucy51cmwgdXJsIGZvciB0aGUgZGF0YQogICAgICAqIEBwYXJhbSBvcHRpb25zLmRhdGEg
YSBmdW5jdGlvbihzZWFyY2hUZXJtLCBwYWdlTnVtYmVyLCBjb250ZXh0KSB0aGE9CnQgc2hvdWxk
IHJldHVybiBhbiBvYmplY3QgY29udGFpbmluZyBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycyBmb3Ig
dGhlIGFib3ZlID0KdXJsLgotICAgICAqIEBwYXJhbSBvcHRpb25zLmRhdGFUeXBlIHJlcXVlc3Qg
ZGF0YSB0eXBlOiBhamF4LCBqc29ucCwgb3RoZXIgZGF0YXQ9CmF0eXBlcyBzdXBwb3J0ZWQgYnkg
alF1ZXJ5J3MgJC5hamF4IGZ1bmN0aW9uIG9yIHRoZSB0cmFuc3BvcnQgZnVuY3Rpb24gaWYgcz0K
cGVjaWZpZWQKKyAgICAgKiBAcGFyYW0gb3B0aW9ucy5kYXRhVHlwZSByZXF1ZXN0IGRhdGEgdHlw
ZTogYWpheCwganNvbnAsIG90aGVyIGRhdGF0PQp5cGVzIHN1cHBvcnRlZCBieSBqUXVlcnkncyAk
LmFqYXggZnVuY3Rpb24gb3IgdGhlIHRyYW5zcG9ydCBmdW5jdGlvbiBpZiBzcGU9CmNpZmllZAog
ICAgICAqIEBwYXJhbSBvcHRpb25zLnF1aWV0TWlsbGlzIChvcHRpb25hbCkgbWlsbGlzZWNvbmRz
IHRvIHdhaXQgYmVmb3JlIG09CmFraW5nIHRoZSBhamF4UmVxdWVzdCwgaGVscHMgZGVib3VuY2Ug
dGhlIGFqYXggZnVuY3Rpb24gaWYgaW52b2tlZCB0b28gb2Z0ZW4KLSAgICAgKiBAcGFyYW0gb3B0
aW9ucy5yZXN1bHRzIGEgZnVuY3Rpb24ocmVtb3RlRGF0YSwgcGFnZU51bWJlcikgdGhhdCBjb252
PQplcnRzIGRhdGEgcmV0dXJuZWQgZm9ybSB0aGUgcmVtb3RlIHJlcXVlc3QgdG8gdGhlIGZvcm1h
dCBleHBlY3RlZCBieSBTZWxlY3Q9CjIuCisgICAgICogQHBhcmFtIG9wdGlvbnMucmVzdWx0cyBh
IGZ1bmN0aW9uKHJlbW90ZURhdGEsIHBhZ2VOdW1iZXIsIHF1ZXJ5KSB0aD0KYXQgY29udmVydHMg
ZGF0YSByZXR1cm5lZCBmb3JtIHRoZSByZW1vdGUgcmVxdWVzdCB0byB0aGUgZm9ybWF0IGV4cGVj
dGVkIGJ5PQogU2VsZWN0Mi4KICAgICAgKiAgICAgIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYW4g
b2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBrZXlzOgogICAgICAqICAgICAgcmVzdWx0
cyBhcnJheSBvZiBvYmplY3RzIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGNob2ljZXMKICAgICAgKiAg
ICAgIG1vcmUgKG9wdGlvbmFsKSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGVyZSBhcmUg
bW9yZSByZXN1PQpsdHMgYXZhaWxhYmxlCkBAIC00MzEsNyArNDI1LDcgQEAKICAgICAgICAgICAg
ICAgICBkYXRhID0zRCBkYXRhID8gZGF0YS5jYWxsKHNlbGYsIHF1ZXJ5LnRlcm0sIHF1ZXJ5LnBh
Z2UsIHF1PQplcnkuY29udGV4dCkgOiBudWxsOwogICAgICAgICAgICAgICAgIHVybCA9M0QgKHR5
cGVvZiB1cmwgPTNEPTNEPTNEICdmdW5jdGlvbicpID8gdXJsLmNhbGwoc2VsZiw9CiBxdWVyeS50
ZXJtLCBxdWVyeS5wYWdlLCBxdWVyeS5jb250ZXh0KSA6IHVybDsKPTIwCi0gICAgICAgICAgICAg
ICAgaWYgKGhhbmRsZXIpIHsgaGFuZGxlci5hYm9ydCgpOyB9CisgICAgICAgICAgICAgICAgaWYg
KGhhbmRsZXIgJiYgdHlwZW9mIGhhbmRsZXIuYWJvcnQgPTNEPTNEPTNEICJmdW5jdGlvbiIpID0K
eyBoYW5kbGVyLmFib3J0KCk7IH0KPTIwCiAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFy
YW1zKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkLmlzRnVuY3Rpb24ob3B0aW9ucy5wYXJh
bXMpKSB7CkBAIC00NDcsNyArNDQxLDE4IEBACiAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRh
dGEsCiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIC0gcmVwbGFjZSBxdWVyeS5wYWdlIHdpdGggcXVl
cnkgc28gdXNlcnMgaD0KYXZlIGFjY2VzcyB0byB0ZXJtLCBwYWdlLCBldGMuCi0gICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9M0Qgb3B0aW9ucy5yZXN1bHRzKGRhdGEsIHF1ZXJ5
LnBhZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkZWQgcXVlcnkgYXMgdGhpcmQg
cGFyYW10ZXIgdG8ga2VlcCBiYWNrd2FyZHM9CiBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcmVzdWx0cyA9M0Qgb3B0aW9ucy5yZXN1bHRzKGRhdGEsIHF1ZXJ5LnBh
Z2UsID0KcXVlcnkpOworICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkuY2FsbGJhY2socmVz
dWx0cyk7CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGVycm9y
OiBmdW5jdGlvbihqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24peworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHJlc3VsdHMgPTNEIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYXNFcnJvcjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcVhIUjoganFY
SFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFN0YXR1czogdGV4dFN0YXR1cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclRocm93bjogZXJyb3JUaHJvd24sCisg
ICAgICAgICAgICAgICAgICAgICAgICB9OworCiAgICAgICAgICAgICAgICAgICAgICAgICBxdWVy
eS5jYWxsYmFjayhyZXN1bHRzKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0pOwpAQCAtNDY0LDcgKzQ2OSw3IEBACiAgICAgICoKICAgICAgKiBJZiB0aGUgYXJyYXkg
Zm9ybSBpcyB1c2VkIGl0IGlzIGFzc3VtZWQgdGhhdCBpdCBjb250YWlucyBvYmplY3RzIHdpPQp0
aCAnaWQnIGFuZCAndGV4dCcga2V5cy4KICAgICAgKgotICAgICAqIElmIHRoZSBvYmplY3QgZm9y
bSBpcyB1c2VkIHRpIGlzIGFzc3VtZWQgdGhhdCBpdCBjb250YWlucyAnZGF0YScgYW49CmQgJ3Rl
eHQnIGtleXMuIFRoZSAnZGF0YScga2V5IHNob3VsZCBjb250YWluCisgICAgICogSWYgdGhlIG9i
amVjdCBmb3JtIGlzIHVzZWQgaXQgaXMgYXNzdW1lZCB0aGF0IGl0IGNvbnRhaW5zICdkYXRhJyBh
bj0KZCAndGV4dCcga2V5cy4gVGhlICdkYXRhJyBrZXkgc2hvdWxkIGNvbnRhaW4KICAgICAgKiBh
biBhcnJheSBvZiBvYmplY3RzIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGNob2ljZXMuIFRoZXNlIG9i
amVjdHMgbXVzPQp0IGNvbnRhaW4gYXQgbGVhc3QgYW4gJ2lkJyBrZXkuIFRoZSAndGV4dCcKICAg
ICAgKiBrZXkgY2FuIGVpdGhlciBiZSBhIFN0cmluZyBpbiB3aGljaCBjYXNlIGl0IGlzIGV4cGVj
dGVkIHRoYXQgZWFjaCBlPQpsZW1lbnQgaW4gdGhlICdkYXRhJyBhcnJheSBoYXMgYSBrZXkgd2l0
aCB0aGUKICAgICAgKiB2YWx1ZSBvZiAndGV4dCcgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIG1hdGNo
IGNob2ljZXMuIEFsdGVybmF0aXZlbHksPQogdGV4dCBjYW4gYmUgYSBmdW5jdGlvbihpdGVtKSB0
aGF0IGNhbiBleHRyYWN0CkBAIC01MzMsMTQgKzUzOCwxNyBAQAogICAgICAgICB2YXIgaXNGdW5j
ID0zRCAkLmlzRnVuY3Rpb24oZGF0YSk7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocXVlcnkp
IHsKICAgICAgICAgICAgIHZhciB0ID0zRCBxdWVyeS50ZXJtLCBmaWx0ZXJlZCA9M0Qge3Jlc3Vs
dHM6IFtdfTsKLSAgICAgICAgICAgICQoaXNGdW5jID8gZGF0YSgpIDogZGF0YSkuZWFjaChmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGlzT2JqZWN0ID0zRCB0aGlzLnRleHQgIT0z
RD0zRCB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgICAgIHRleHQgPTNEIGlzT2JqZWN0ID8g
dGhpcy50ZXh0IDogdGhpczsKLSAgICAgICAgICAgICAgICBpZiAodCA9M0Q9M0Q9M0QgIiIgfHwg
cXVlcnkubWF0Y2hlcih0LCB0ZXh0KSkgewotICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5y
ZXN1bHRzLnB1c2goaXNPYmplY3QgPyB0aGlzIDoge2lkOiB0aGlzLCB0ZXg9CnQ6IHRoaXN9KTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHF1ZXJ5LmNh
bGxiYWNrKGZpbHRlcmVkKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPTNEIGlzRnVuYyA/IGRh
dGEocXVlcnkpIDogZGF0YTsKKyAgICAgICAgICAgIGlmICgkLmlzQXJyYXkocmVzdWx0KSkgewor
ICAgICAgICAgICAgICAgICQocmVzdWx0KS5lYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGlzT2JqZWN0ID0zRCB0aGlzLnRleHQgIT0zRD0zRCB1bmRlZmluZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0zRCBpc09iamVjdCA/IHRoaXMudGV4dCA6IHRo
aXM7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ID0zRD0zRD0zRCAiIiB8fCBxdWVyeS5tYXRj
aGVyKHQsIHRleHQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5yZXN1bHRz
LnB1c2goaXNPYmplY3QgPyB0aGlzIDoge2lkOiB0aGlzLD0KIHRleHQ6IHRoaXN9KTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHF1
ZXJ5LmNhbGxiYWNrKGZpbHRlcmVkKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfTsKICAgICB9
Cj0yMApAQCAtNTU1LDExICs1NjMsMjQgQEAKICAgICBmdW5jdGlvbiBjaGVja0Zvcm1hdHRlcihm
b3JtYXR0ZXIsIGZvcm1hdHRlck5hbWUpIHsKICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihmb3Jt
YXR0ZXIpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFmb3JtYXR0ZXIpIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdHRlck5hbWUgKyIgbXVzdCBiZSBhIGZ1
bmN0aW9uIG9yIGEgZmFsc3kgdmFsPQp1ZSIpOworICAgICAgICBpZiAodHlwZW9mKGZvcm1hdHRl
cikgPTNEPTNEPTNEICdzdHJpbmcnKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGZvcm1hdHRlck5hbWUgKyIgbXVzdCBiZSBhIHN0cmluZywgZnVuY3Rpb24sIG9yIGZhPQps
c3kgdmFsdWUiKTsKICAgICB9Cj0yMAotICAgIGZ1bmN0aW9uIGV2YWx1YXRlKHZhbCkgewotICAg
ICAgICByZXR1cm4gJC5pc0Z1bmN0aW9uKHZhbCkgPyB2YWwoKSA6IHZhbDsKKyAgLyoqCisgICAq
IFJldHVybnMgYSBnaXZlbiB2YWx1ZQorICAgKiBJZiBnaXZlbiBhIGZ1bmN0aW9uLCByZXR1cm5z
IGl0cyBvdXRwdXQKKyAgICoKKyAgICogQHBhcmFtIHZhbCBzdHJpbmd8ZnVuY3Rpb24KKyAgICog
QHBhcmFtIGNvbnRleHQgdmFsdWUgb2YgInRoaXMiIHRvIGJlIHBhc3NlZCB0byBmdW5jdGlvbgor
ICAgKiBAcmV0dXJucyB7Kn0KKyAgICovCisgICAgZnVuY3Rpb24gZXZhbHVhdGUodmFsLCBjb250
ZXh0KSB7CisgICAgICAgIGlmICgkLmlzRnVuY3Rpb24odmFsKSkgeworICAgICAgICAgICAgdmFy
IGFyZ3MgPTNEIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7CisgICAg
ICAgICAgICByZXR1cm4gdmFsLmFwcGx5KGNvbnRleHQsIGFyZ3MpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB2YWw7CiAgICAgfQo9MjAKICAgICBmdW5jdGlvbiBjb3VudFJlc3VsdHMocmVz
dWx0cykgewpAQCAtNjI3LDYgKzY0OCwxNSBAQAogICAgICAgICBpZiAob3JpZ2luYWwhPTNEPTNE
aW5wdXQpIHJldHVybiBpbnB1dDsKICAgICB9Cj0yMAorICAgIGZ1bmN0aW9uIGNsZWFudXBKUXVl
cnlFbGVtZW50cygpIHsKKyAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CisKKyAgICAgICAgJC5l
YWNoKGFyZ3VtZW50cywgZnVuY3Rpb24gKGksIGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHNlbGZb
ZWxlbWVudF0ucmVtb3ZlKCk7CisgICAgICAgICAgICBzZWxmW2VsZW1lbnRdID0zRCBudWxsOwor
ICAgICAgICB9KTsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBDcmVhdGVzIGEgbmV3IGNsYXNz
CiAgICAgICoKQEAgLTY1NCw3ICs2ODQsNyBAQAo9MjAKICAgICAgICAgLy8gYWJzdHJhY3QKICAg
ICAgICAgaW5pdDogZnVuY3Rpb24gKG9wdHMpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHRzLCBz
ZWFyY2gsIHJlc3VsdHNTZWxlY3RvciA9M0QgIi5zZWxlY3QyLXJlc3VsdHMiLCBkPQppc2FibGVk
LCByZWFkb25seTsKKyAgICAgICAgICAgIHZhciByZXN1bHRzLCBzZWFyY2gsIHJlc3VsdHNTZWxl
Y3RvciA9M0QgIi5zZWxlY3QyLXJlc3VsdHMiOwo9MjAKICAgICAgICAgICAgIC8vIHByZXBhcmUg
b3B0aW9ucwogICAgICAgICAgICAgdGhpcy5vcHRzID0zRCBvcHRzID0zRCB0aGlzLnByZXBhcmVP
cHRzKG9wdHMpOwpAQCAtNjY5LDE4ICs2OTksMjggQEAKPTIwCiAgICAgICAgICAgICB0aGlzLmNv
bnRhaW5lciA9M0QgdGhpcy5jcmVhdGVDb250YWluZXIoKTsKPTIwCisgICAgICAgICAgICB0aGlz
LmxpdmVSZWdpb24gPTNEICQoIjxzcGFuPiIsIHsKKyAgICAgICAgICAgICAgICAgICAgcm9sZTog
InN0YXR1cyIsCisgICAgICAgICAgICAgICAgICAgICJhcmlhLWxpdmUiOiAicG9saXRlIgorICAg
ICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgLmFkZENsYXNzKCJzZWxlY3QyLWhpZGRl
bi1hY2Nlc3NpYmxlIikKKyAgICAgICAgICAgICAgICAuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7
CisKICAgICAgICAgICAgIHRoaXMuY29udGFpbmVySWQ9M0QiczJpZF8iKyhvcHRzLmVsZW1lbnQu
YXR0cigiaWQiKSB8fCAiYXV0b2dlPQpuIituZXh0VWlkKCkpOwotICAgICAgICAgICAgdGhpcy5j
b250YWluZXJTZWxlY3Rvcj0zRCIjIit0aGlzLmNvbnRhaW5lcklkLnJlcGxhY2UoLyhbOyYsXC49
ClwrXCpcfic6IlwhXF4jJCVAXFtcXVwoXCk9M0Q+XHxdKS9nLCAnXFwkMScpOworICAgICAgICAg
ICAgdGhpcy5jb250YWluZXJFdmVudE5hbWU9M0QgdGhpcy5jb250YWluZXJJZAorICAgICAgICAg
ICAgICAgIC5yZXBsYWNlKC8oWy5dKS9nLCAnXycpCisgICAgICAgICAgICAgICAgLnJlcGxhY2Uo
LyhbOyYsXC1cLlwrXCpcfic6IlwhXF4jJCVAXFtcXVwoXCk9M0Q+XHxdKS9nLCAnXD0KXCQxJyk7
CiAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hdHRyKCJpZCIsIHRoaXMuY29udGFpbmVySWQp
Owo9MjAKLSAgICAgICAgICAgIC8vIGNhY2hlIHRoZSBib2R5IHNvIGZ1dHVyZSBsb29rdXBzIGFy
ZSBjaGVhcAotICAgICAgICAgICAgdGhpcy5ib2R5ID0zRCB0aHVuayhmdW5jdGlvbigpIHsgcmV0
dXJuIG9wdHMuZWxlbWVudC5jbG9zZXN0KCI9CmJvZHkiKTsgfSk7CisgICAgICAgICAgICB0aGlz
LmNvbnRhaW5lci5hdHRyKCJ0aXRsZSIsIG9wdHMuZWxlbWVudC5hdHRyKCJ0aXRsZSIpKTsKKwor
ICAgICAgICAgICAgdGhpcy5ib2R5ID0zRCAkKCJib2R5Iik7Cj0yMAogICAgICAgICAgICAgc3lu
Y0Nzc0NsYXNzZXModGhpcy5jb250YWluZXIsIHRoaXMub3B0cy5lbGVtZW50LCB0aGlzLm9wdHMu
YWQ9CmFwdENvbnRhaW5lckNzc0NsYXNzKTsKPTIwCiAgICAgICAgICAgICB0aGlzLmNvbnRhaW5l
ci5hdHRyKCJzdHlsZSIsIG9wdHMuZWxlbWVudC5hdHRyKCJzdHlsZSIpKTsKLSAgICAgICAgICAg
IHRoaXMuY29udGFpbmVyLmNzcyhldmFsdWF0ZShvcHRzLmNvbnRhaW5lckNzcykpOwotICAgICAg
ICAgICAgdGhpcy5jb250YWluZXIuYWRkQ2xhc3MoZXZhbHVhdGUob3B0cy5jb250YWluZXJDc3ND
bGFzcykpOworICAgICAgICAgICAgdGhpcy5jb250YWluZXIuY3NzKGV2YWx1YXRlKG9wdHMuY29u
dGFpbmVyQ3NzLCB0aGlzLm9wdHMuZWxlbWU9Cm50KSk7CisgICAgICAgICAgICB0aGlzLmNvbnRh
aW5lci5hZGRDbGFzcyhldmFsdWF0ZShvcHRzLmNvbnRhaW5lckNzc0NsYXNzLCB0aGlzLj0Kb3B0
cy5lbGVtZW50KSk7Cj0yMAogICAgICAgICAgICAgdGhpcy5lbGVtZW50VGFiSW5kZXggPTNEIHRo
aXMub3B0cy5lbGVtZW50LmF0dHIoInRhYmluZGV4Iik7Cj0yMApAQCAtNjk3LDcgKzczNyw3IEBA
Cj0yMAogICAgICAgICAgICAgc3luY0Nzc0NsYXNzZXModGhpcy5kcm9wZG93biwgdGhpcy5vcHRz
LmVsZW1lbnQsIHRoaXMub3B0cy5hZGE9CnB0RHJvcGRvd25Dc3NDbGFzcyk7Cj0yMAotICAgICAg
ICAgICAgdGhpcy5kcm9wZG93bi5hZGRDbGFzcyhldmFsdWF0ZShvcHRzLmRyb3Bkb3duQ3NzQ2xh
c3MpKTsKKyAgICAgICAgICAgIHRoaXMuZHJvcGRvd24uYWRkQ2xhc3MoZXZhbHVhdGUob3B0cy5k
cm9wZG93bkNzc0NsYXNzLCB0aGlzLm9wPQp0cy5lbGVtZW50KSk7CiAgICAgICAgICAgICB0aGlz
LmRyb3Bkb3duLmRhdGEoInNlbGVjdDIiLCB0aGlzKTsKICAgICAgICAgICAgIHRoaXMuZHJvcGRv
d24ub24oImNsaWNrIiwga2lsbEV2ZW50KTsKPTIwCkBAIC03MTQsNyArNzU0LDIzIEBACiAgICAg
ICAgICAgICB0aGlzLmNvbnRhaW5lci5vbigiY2xpY2siLCBraWxsRXZlbnQpOwo9MjAKICAgICAg
ICAgICAgIGluc3RhbGxGaWx0ZXJlZE1vdXNlTW92ZSh0aGlzLnJlc3VsdHMpOwotICAgICAgICAg
ICAgdGhpcy5kcm9wZG93bi5vbigibW91c2Vtb3ZlLWZpbHRlcmVkIHRvdWNoc3RhcnQgdG91Y2ht
b3ZlIHRvdWM9CmhlbmQiLCByZXN1bHRzU2VsZWN0b3IsIHRoaXMuYmluZCh0aGlzLmhpZ2hsaWdo
dFVuZGVyRXZlbnQpKTsKKworICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5vbigibW91c2Vtb3Zl
LWZpbHRlcmVkIiwgcmVzdWx0c1NlbGVjdG9yLCB0aGlzLmI9CmluZCh0aGlzLmhpZ2hsaWdodFVu
ZGVyRXZlbnQpKTsKKyAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ub24oInRvdWNoc3RhcnQgdG91
Y2htb3ZlIHRvdWNoZW5kIiwgcmVzdWx0c1NlbGVjPQp0b3IsIHRoaXMuYmluZChmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl90b3VjaEV2ZW50ID0zRCB0cnVlOworICAg
ICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0VW5kZXJFdmVudChldmVudCk7CisgICAgICAgICAg
ICB9KSk7CisgICAgICAgICAgICB0aGlzLmRyb3Bkb3duLm9uKCJ0b3VjaG1vdmUiLCByZXN1bHRz
U2VsZWN0b3IsIHRoaXMuYmluZCh0aGlzLj0KdG91Y2hNb3ZlZCkpOworICAgICAgICAgICAgdGhp
cy5kcm9wZG93bi5vbigidG91Y2hzdGFydCB0b3VjaGVuZCIsIHJlc3VsdHNTZWxlY3RvciwgdGhp
cy49CmJpbmQodGhpcy5jbGVhclRvdWNoTW92ZWQpKTsKKworICAgICAgICAgICAgLy8gV2FpdGlu
ZyBmb3IgYSBjbGljayBldmVudCBvbiB0b3VjaCBkZXZpY2VzIHRvIHNlbGVjdCBvcHRpb249CiBh
bmQgaGlkZSBkcm9wZG93bgorICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGNsaWNrIHdpbGwgYmUg
dHJpZ2dlcmVkIG9uIGFuIHVuZGVybHlpbmcgZWxlbWVudAorICAgICAgICAgICAgdGhpcy5kcm9w
ZG93bi5vbignY2xpY2snLCB0aGlzLmJpbmQoZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuX3RvdWNoRXZlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5f
dG91Y2hFdmVudCA9M0QgZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SGln
aGxpZ2h0ZWQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KSk7Cj0yMAogICAg
ICAgICAgICAgaW5zdGFsbERlYm91bmNlZFNjcm9sbCg4MCwgdGhpcy5yZXN1bHRzKTsKICAgICAg
ICAgICAgIHRoaXMuZHJvcGRvd24ub24oInNjcm9sbC1kZWJvdW5jZWQiLCByZXN1bHRzU2VsZWN0
b3IsIHRoaXMuYmluPQpkKHRoaXMubG9hZE1vcmVJZk5lZWRlZCkpOwpAQCAtNzI2LDcgKzc4Miw3
IEBACiAgICAgICAgICAgICAvLyBpZiBqcXVlcnkubW91c2V3aGVlbCBwbHVnaW4gaXMgaW5zdGFs
bGVkIHdlIGNhbiBwcmV2ZW50IG91dD0KLW9mLWJvdW5kcyBzY3JvbGxpbmcgb2YgcmVzdWx0cyB2
aWEgbW91c2V3aGVlbAogICAgICAgICAgICAgaWYgKCQuZm4ubW91c2V3aGVlbCkgewogICAgICAg
ICAgICAgICAgIHJlc3VsdHMubW91c2V3aGVlbChmdW5jdGlvbiAoZSwgZGVsdGEsIGRlbHRhWCwg
ZGVsdGFZKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPTNEIHJlc3VsdHMuc2Nyb2xs
VG9wKCksIGhlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9M0QgcmVzdWx0cy5z
Y3JvbGxUb3AoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbHRhWSA+IDAgJiYgdG9wIC0g
ZGVsdGFZIDw9M0QgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zY3JvbGxU
b3AoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBraWxsRXZlbnQoZSk7CkBAIC03NTIsNyAr
ODA4LDEwIEBACiAgICAgICAgICAgICAvLyB0cmFwIGFsbCBtb3VzZSBldmVudHMgZnJvbSBsZWF2
aW5nIHRoZSBkcm9wZG93bi4gc29tZXRpbWVzID0KdGhlcmUgbWF5IGJlIGEgbW9kYWwgdGhhdCBp
cyBsaXN0ZW5pbmcKICAgICAgICAgICAgIC8vIGZvciBtb3VzZSBldmVudHMgb3V0c2lkZSBvZiBp
dHNlbGYgc28gaXQgY2FuIGNsb3NlIGl0c2VsZi4gPQpzaW5jZSB0aGUgZHJvcGRvd24gaXMgbm93
IG91dHNpZGUgdGhlIHNlbGVjdDIncwogICAgICAgICAgICAgLy8gZG9tIGl0IHdpbGwgdHJpZ2dl
ciB0aGUgcG9wdXAgY2xvc2UsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHc9CmFudAotICAgICAgICAg
ICAgdGhpcy5kcm9wZG93bi5vbigiY2xpY2sgbW91c2V1cCBtb3VzZWRvd24iLCBmdW5jdGlvbiAo
ZSkgeyBlLnM9CnRvcFByb3BhZ2F0aW9uKCk7IH0pOworICAgICAgICAgICAgLy8gZm9jdXNpbiBj
YW4gY2F1c2UgZm9jdXMgd2FycyBiZXR3ZWVuIG1vZGFscyBhbmQgc2VsZWN0MiBzaW49CmNlIHRo
ZSBkcm9wZG93biBpcyBvdXRzaWRlIHRoZSBtb2RhbC4KKyAgICAgICAgICAgIHRoaXMuZHJvcGRv
d24ub24oImNsaWNrIG1vdXNldXAgbW91c2Vkb3duIHRvdWNoc3RhcnQgdG91Y2hlbmQgPQpmb2N1
c2luIiwgZnVuY3Rpb24gKGUpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7CisKKyAgICAgICAg
ICAgIHRoaXMubmV4dFNlYXJjaFRlcm0gPTNEIHVuZGVmaW5lZDsKPTIwCiAgICAgICAgICAgICBp
ZiAoJC5pc0Z1bmN0aW9uKHRoaXMub3B0cy5pbml0U2VsZWN0aW9uKSkgewogICAgICAgICAgICAg
ICAgIC8vIGluaXRpYWxpemUgc2VsZWN0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50IHZhbHVlIG9m
IHRoZSA9CnNvdXJjZSBlbGVtZW50CkBAIC03ODIsMTkgKzg0MSwyOSBAQAogICAgICAgICAgICAg
b3B0cy5lbGVtZW50LnByb3AoImF1dG9mb2N1cyIsIGZhbHNlKTsKICAgICAgICAgICAgIGlmICh0
aGlzLmF1dG9mb2N1cykgdGhpcy5mb2N1cygpOwo9MjAKLSAgICAgICAgICAgIHRoaXMubmV4dFNl
YXJjaFRlcm0gPTNEIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRoaXMuc2VhcmNoLmF0dHIoInBs
YWNlaG9sZGVyIiwgb3B0cy5zZWFyY2hJbnB1dFBsYWNlaG9sZGVyKTsKICAgICAgICAgfSwKPTIw
CiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgIHZhciBlbGVtZW50PTNEdGhpcy5vcHRzLmVsZW1lbnQsIHNlbGVjdDIgPTNEIGVs
ZW1lbnQuZGF0YSgic2VsPQplY3QyIik7CisgICAgICAgICAgICB2YXIgZWxlbWVudD0zRHRoaXMu
b3B0cy5lbGVtZW50LCBzZWxlY3QyID0zRCBlbGVtZW50LmRhdGEoInNlbD0KZWN0MiIpLCBzZWxm
ID0zRCB0aGlzOwo9MjAKICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsKPTIwCi0gICAgICAgICAg
ICBpZiAodGhpcy5wcm9wZXJ0eU9ic2VydmVyKSB7IGRlbGV0ZSB0aGlzLnByb3BlcnR5T2JzZXJ2
ZXI7IHRoaT0Kcy5wcm9wZXJ0eU9ic2VydmVyID0zRCBudWxsOyB9CisgICAgICAgICAgICBpZiAo
ZWxlbWVudC5sZW5ndGggJiYgZWxlbWVudFswXS5kZXRhY2hFdmVudCkgeworICAgICAgICAgICAg
ICAgIGVsZW1lbnQuZWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
ZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLCBzZWxmLl9zeW5jKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5T2Jz
ZXJ2ZXIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5T2JzZXJ2ZXIuZGlzY29ubmVj
dCgpOworICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlPYnNlcnZlciA9M0QgbnVsbDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX3N5bmMgPTNEIG51bGw7Cj0yMAogICAgICAg
ICAgICAgaWYgKHNlbGVjdDIgIT0zRD0zRCB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICBz
ZWxlY3QyLmNvbnRhaW5lci5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICBzZWxlY3QyLmxpdmVS
ZWdpb24ucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgc2VsZWN0Mi5kcm9wZG93bi5yZW1vdmUo
KTsKICAgICAgICAgICAgICAgICBlbGVtZW50CiAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVD
bGFzcygic2VsZWN0Mi1vZmZzY3JlZW4iKQpAQCAtODA4LDYgKzg3NywxNCBAQAogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBlbGVtZW50LnNob3coKTsKICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgY2xlYW51cEpRdWVyeUVsZW1lbnRzLmNhbGwodGhpcywKKyAgICAgICAg
ICAgICAgICAiY29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAibGl2ZVJlZ2lvbiIsCisgICAg
ICAgICAgICAgICAgImRyb3Bkb3duIiwKKyAgICAgICAgICAgICAgICAicmVzdWx0cyIsCisgICAg
ICAgICAgICAgICAgInNlYXJjaCIKKyAgICAgICAgICAgICk7CiAgICAgICAgIH0sCj0yMAogICAg
ICAgICAvLyBhYnN0cmFjdApAQCAtODUyLDcgKzkyOSw3IEBACj0yMAogICAgICAgICAgICAgb3B0
cyA9M0QgJC5leHRlbmQoe30sIHsKICAgICAgICAgICAgICAgICBwb3B1bGF0ZVJlc3VsdHM6IGZ1
bmN0aW9uKGNvbnRhaW5lciwgcmVzdWx0cywgcXVlcnkpIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHBvcHVsYXRlLCAgZGF0YSwgcmVzdWx0LCBjaGlsZHJlbiwgaWQ9M0R0aGlzLm9wdHMuPQpp
ZDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHBvcHVsYXRlLCBpZD0zRHRoaXMub3B0cy5pZCwg
bGl2ZVJlZ2lvbj0zRHRoaXMubGl2PQplUmVnaW9uOwo9MjAKICAgICAgICAgICAgICAgICAgICAg
cG9wdWxhdGU9M0RmdW5jdGlvbihyZXN1bHRzLCBjb250YWluZXIsIGRlcHRoKSB7Cj0yMApAQCAt
ODYwLDYgKzkzNyw4IEBACj0yMAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9M0Qg
b3B0cy5zb3J0UmVzdWx0cyhyZXN1bHRzLCBjb250YWluZXIsIHE9CnVlcnkpOwo9MjAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNvbGxlY3QgdGhlIGNyZWF0ZWQgbm9kZXMgZm9yIGJ1bGsg
YXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZXMgPTNEIFtdOwogICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIChpID0zRCAwLCBsID0zRCByZXN1bHRzLmxlbmd0aDsgaSA8
IGw7IGkgPTNEIGk9CiArIDEpIHsKPTIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0PTNEcmVzdWx0c1tpXTsKQEAgLTg3NiwxNiArOTU1LDE5IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7IG5vZGUuYWRkQ2xhc3MoInNlbGVjdDItZGlzYWJs
ZT0KZCIpOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvdW5kKSB7IG5v
ZGUuYWRkQ2xhc3MoInNlbGVjdDItcmVzdWx0LT0Kd2l0aC1jaGlsZHJlbiIpOyB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRDbGFzcyhzZWxmLm9wdHMuZm9ybWF0UmVzdWx0
Q3NzQ2xhc3Mocj0KZXN1bHQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmF0
dHIoInJvbGUiLCAicHJlc2VudGF0aW9uIik7Cj0yMAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhYmVsPTNEJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGFiZWwuYWRkQ2xhc3MoInNlbGVjdDItcmVzdWx0LWxhYmVsIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwuYXR0cigiaWQiLCAic2VsZWN0Mi1y
ZXN1bHQtbGFiZWwtIiArIG5leD0KdFVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsYWJlbC5hdHRyKCJyb2xlIiwgIm9wdGlvbiIpOwo9MjAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3JtYXR0ZWQ9M0RvcHRzLmZvcm1hdFJlc3VsdChyZXN1bHQsIGxhYmVsLCBxPQp1
ZXJ5LCBzZWxmLm9wdHMuZXNjYXBlTWFya3VwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZm9ybWF0dGVkIT0zRD0zRHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsYWJlbC5odG1sKGZvcm1hdHRlZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUuYXBwZW5kKGxhYmVsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Cj0yMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kKGxhYmVsKTsK
PTIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvdW5kKSB7Cj0yMApAQCAt
ODk2LDggKzk3OCwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPTIwCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5kYXRhKCJzZWxlY3QyLWRhdGEiLCByZXN1bHQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQobm9kZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChub2RlWzBdKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVsayBhcHBl
bmQgdGhlIGNyZWF0ZWQgbm9kZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5h
cHBlbmQobm9kZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvbi50ZXh0KG9w
dHMuZm9ybWF0TWF0Y2hlcyhyZXN1bHRzLmxlbmd0aCk9Cik7CiAgICAgICAgICAgICAgICAgICAg
IH07Cj0yMAogICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZShyZXN1bHRzLCBjb250YWluZXIs
IDApOwpAQCAtOTUxLDkgKzEwMzcsOCBAQAo9MjAKICAgICAgICAgICAgICAgICAgICAgcXVlcnku
Y2FsbGJhY2soZGF0YSk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgLy8g
dGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBpbnNpZGUgdmFsKCkgd2UgY29uc3RydWN0IGNob2ljZT0K
cyBmcm9tIG9wdGlvbnMgYW5kIHRoZXJlIGlkIGlzIGhhcmRjb2RlZAorICAgICAgICAgICAgICAg
IC8vIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgaW5zaWRlIHZhbCgpIHdlIGNvbnN0cnVjdCBjaG9p
Y2U9CnMgZnJvbSBvcHRpb25zIGFuZCB0aGVpciBpZCBpcyBoYXJkY29kZWQKICAgICAgICAgICAg
ICAgICBvcHRzLmlkPTNEZnVuY3Rpb24oZSkgeyByZXR1cm4gZS5pZDsgfTsKLSAgICAgICAgICAg
ICAgICBvcHRzLmZvcm1hdFJlc3VsdENzc0NsYXNzID0zRCBmdW5jdGlvbihkYXRhKSB7IHJldHVy
biBkYXRhPQouY3NzOyB9OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBp
ZiAoISgicXVlcnkiIGluIG9wdHMpKSB7Cj0yMApAQCAtOTkxLDYgKzEwNzYsMTYgQEAKICAgICAg
ICAgICAgICAgICB0aHJvdyAicXVlcnkgZnVuY3Rpb24gbm90IGRlZmluZWQgZm9yIFNlbGVjdDIg
IiArIG9wdHMuZWxlPQptZW50LmF0dHIoImlkIik7CiAgICAgICAgICAgICB9Cj0yMAorICAgICAg
ICAgICAgaWYgKG9wdHMuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRpb24gPTNEPTNEPTNEICd0b3An
KSB7CisgICAgICAgICAgICAgICAgb3B0cy5jcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbiA9M0Qg
ZnVuY3Rpb24obGlzdCwgaXRlbSkgez0KIGxpc3QudW5zaGlmdChpdGVtKTsgfTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG9wdHMuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRp
b24gPTNEPTNEPTNEICdib3R0b20nKSB7CisgICAgICAgICAgICAgICAgb3B0cy5jcmVhdGVTZWFy
Y2hDaG9pY2VQb3NpdGlvbiA9M0QgZnVuY3Rpb24obGlzdCwgaXRlbSkgez0KIGxpc3QucHVzaChp
dGVtKTsgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZihvcHRz
LmNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9uKSAhPTNEPTNEICJmdW5jPQp0aW9uIikgIHsKKyAg
ICAgICAgICAgICAgICB0aHJvdyAiaW52YWxpZCBjcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbiBv
cHRpb24gbXVzdCBiZSAnPQp0b3AnLCAnYm90dG9tJyBvciBhIGN1c3RvbSBmdW5jdGlvbiI7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIHJldHVybiBvcHRzOwogICAgICAgICB9LAo9MjAK
QEAgLTk5OSw3ICsxMDk0LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIC8vIGFic3RyYWN0CiAg
ICAgICAgIG1vbml0b3JTb3VyY2U6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciBlbCA9
M0QgdGhpcy5vcHRzLmVsZW1lbnQsIHN5bmM7CisgICAgICAgICAgICB2YXIgZWwgPTNEIHRoaXMu
b3B0cy5lbGVtZW50LCBvYnNlcnZlciwgc2VsZiA9M0QgdGhpczsKPTIwCiAgICAgICAgICAgICBl
bC5vbigiY2hhbmdlLnNlbGVjdDIiLCB0aGlzLmJpbmQoZnVuY3Rpb24gKGUpIHsKICAgICAgICAg
ICAgICAgICBpZiAodGhpcy5vcHRzLmVsZW1lbnQuZGF0YSgic2VsZWN0Mi1jaGFuZ2UtdHJpZ2dl
cmVkIikgIT0KPTNEPTNEIHRydWUpIHsKQEAgLTEwMDcsOSArMTEwMiw3IEBACiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSkpOwo9MjAKLSAgICAgICAgICAgIHN5bmMgPTNEIHRoaXMu
YmluZChmdW5jdGlvbiAoKSB7Ci0KLSAgICAgICAgICAgICAgICB2YXIgZW5hYmxlZCwgcmVhZG9u
bHksIHNlbGYgPTNEIHRoaXM7CisgICAgICAgICAgICB0aGlzLl9zeW5jID0zRCB0aGlzLmJpbmQo
ZnVuY3Rpb24gKCkgewo9MjAKICAgICAgICAgICAgICAgICAvLyBzeW5jIGVuYWJsZWQgc3RhdGUK
ICAgICAgICAgICAgICAgICB2YXIgZGlzYWJsZWQgPTNEIGVsLnByb3AoImRpc2FibGVkIik7CkBA
IC0xMDIxLDM1ICsxMTE0LDM0IEBACiAgICAgICAgICAgICAgICAgdGhpcy5yZWFkb25seShyZWFk
b25seSk7Cj0yMAogICAgICAgICAgICAgICAgIHN5bmNDc3NDbGFzc2VzKHRoaXMuY29udGFpbmVy
LCB0aGlzLm9wdHMuZWxlbWVudCwgdGhpcy5vcHQ9CnMuYWRhcHRDb250YWluZXJDc3NDbGFzcyk7
Ci0gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuYWRkQ2xhc3MoZXZhbHVhdGUodGhpcy5v
cHRzLmNvbnRhaW5lckNzc0NsYT0Kc3MpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5l
ci5hZGRDbGFzcyhldmFsdWF0ZSh0aGlzLm9wdHMuY29udGFpbmVyQ3NzQ2xhPQpzcywgdGhpcy5v
cHRzLmVsZW1lbnQpKTsKPTIwCiAgICAgICAgICAgICAgICAgc3luY0Nzc0NsYXNzZXModGhpcy5k
cm9wZG93biwgdGhpcy5vcHRzLmVsZW1lbnQsIHRoaXMub3B0cz0KLmFkYXB0RHJvcGRvd25Dc3ND
bGFzcyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5hZGRDbGFzcyhldmFsdWF0ZSh0
aGlzLm9wdHMuZHJvcGRvd25Dc3NDbGFzcz0KKSk7CisgICAgICAgICAgICAgICAgdGhpcy5kcm9w
ZG93bi5hZGRDbGFzcyhldmFsdWF0ZSh0aGlzLm9wdHMuZHJvcGRvd25Dc3NDbGFzcz0KLCB0aGlz
Lm9wdHMuZWxlbWVudCkpOwo9MjAKICAgICAgICAgICAgIH0pOwo9MjAKLSAgICAgICAgICAgIC8v
IG1vemlsbGEgYW5kIElFCi0gICAgICAgICAgICBlbC5vbigicHJvcGVydHljaGFuZ2Uuc2VsZWN0
MiBET01BdHRyTW9kaWZpZWQuc2VsZWN0MiIsIHN5bmMpOwotCi0KLSAgICAgICAgICAgIC8vIGhv
bGQgb250byBhIHJlZmVyZW5jZSBvZiB0aGUgY2FsbGJhY2sgdG8gd29yayBhcm91bmQgYSBjaHJv
PQptaXVtIGJ1ZwotICAgICAgICAgICAgaWYgKHRoaXMubXV0YXRpb25DYWxsYmFjayA9M0Q9M0Q9
M0QgdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5tdXRhdGlvbkNhbGxiYWNrID0z
RCBmdW5jdGlvbiAobXV0YXRpb25zKSB7Ci0gICAgICAgICAgICAgICAgICAgIG11dGF0aW9ucy5m
b3JFYWNoKHN5bmMpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIElFOC0xMCAo
SUU5LzEwIHdvbid0IGZpcmUgcHJvcGVydHlDaGFuZ2UgdmlhIGF0dGFjaEV2ZW50TGlzPQp0ZW5l
cikKKyAgICAgICAgICAgIGlmIChlbC5sZW5ndGggJiYgZWxbMF0uYXR0YWNoRXZlbnQpIHsKKyAg
ICAgICAgICAgICAgICBlbC5lYWNoKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0
aGlzLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIiwgc2VsZi5fc3luYyk7CisgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICB9Cj0yMAotICAgICAgICAgICAgLy8gc2FmYXJpIGFu
ZCBjaHJvbWUKLSAgICAgICAgICAgIGlmICh0eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlciAh
PTNEPTNEICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAvLyBzYWZhcmksIGNocm9tZSwgZmly
ZWZveCwgSUUxMQorICAgICAgICAgICAgb2JzZXJ2ZXIgPTNEIHdpbmRvdy5NdXRhdGlvbk9ic2Vy
dmVyIHx8IHdpbmRvdy5XZWJLaXRNdXRhdGlvbk89CmJzZXJ2ZXJ8fCB3aW5kb3cuTW96TXV0YXRp
b25PYnNlcnZlcjsKKyAgICAgICAgICAgIGlmIChvYnNlcnZlciAhPTNEPTNEIHVuZGVmaW5lZCkg
ewogICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5T2JzZXJ2ZXIpIHsgZGVsZXRlIHRo
aXMucHJvcGVydHlPYnNlcnZlcjs9CiB0aGlzLnByb3BlcnR5T2JzZXJ2ZXIgPTNEIG51bGw7IH0K
LSAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5T2JzZXJ2ZXIgPTNEIG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKHRoaXMuPQptdXRhdGlvbkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICB0
aGlzLnByb3BlcnR5T2JzZXJ2ZXIgPTNEIG5ldyBvYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25z
PQopIHsKKyAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG11dGF0aW9ucywgc2VsZi5fc3luYyk7
CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eU9ic2Vy
dmVyLm9ic2VydmUoZWwuZ2V0KDApLCB7IGF0dHJpYnV0ZXM6dHJ1ZT0KLCBzdWJ0cmVlOmZhbHNl
IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9LAo9MjAKICAgICAgICAgLy8gYWJzdHJhY3QK
ICAgICAgICAgdHJpZ2dlclNlbGVjdDogZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdmFy
IGV2dCA9M0QgJC5FdmVudCgic2VsZWN0Mi1zZWxlY3RpbmciLCB7IHZhbDogdGhpcy5pZChkYXRh
KSw9CiBvYmplY3Q6IGRhdGEgfSk7CisgICAgICAgICAgICB2YXIgZXZ0ID0zRCAkLkV2ZW50KCJz
ZWxlY3QyLXNlbGVjdGluZyIsIHsgdmFsOiB0aGlzLmlkKGRhdGEpLD0KIG9iamVjdDogZGF0YSwg
Y2hvaWNlOiBkYXRhIH0pOwogICAgICAgICAgICAgdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcihl
dnQpOwogICAgICAgICAgICAgcmV0dXJuICFldnQuaXNEZWZhdWx0UHJldmVudGVkKCk7CiAgICAg
ICAgIH0sCkBAIC0xMDcxLDcgKzExNjMsNyBAQAogICAgICAgICAgICAgLy8gc28gaGVyZSB3ZSB0
cmlnZ2VyIHRoZSBjbGljayBldmVudCBtYW51YWxseQogICAgICAgICAgICAgdGhpcy5vcHRzLmVs
ZW1lbnQuY2xpY2soKTsKPTIwCi0gICAgICAgICAgICAvLyBWYWxpZGF0aW9uRW5naW5lIGlnbm9y
ZWEgdGhlIGNoYW5nZSBldmVudCBhbmQgbGlzdGVucyBpbnN0ZT0KYWQgdG8gYmx1cgorICAgICAg
ICAgICAgLy8gVmFsaWRhdGlvbkVuZ2luZSBpZ25vcmVzIHRoZSBjaGFuZ2UgZXZlbnQgYW5kIGxp
c3RlbnMgaW5zdGU9CmFkIHRvIGJsdXIKICAgICAgICAgICAgIC8vIHNvIGhlcmUgd2UgdHJpZ2dl
ciB0aGUgYmx1ciBldmVudCBtYW51YWxseSBpZiBzbyBkZXNpcmVkCiAgICAgICAgICAgICBpZiAo
dGhpcy5vcHRzLmJsdXJPbkNoYW5nZSkKICAgICAgICAgICAgICAgICB0aGlzLm9wdHMuZWxlbWVu
dC5ibHVyKCk7CkBAIC0xMTE1LDE3ICsxMjA3LDE2IEBACiAgICAgICAgIC8vIGFic3RyYWN0CiAg
ICAgICAgIHJlYWRvbmx5OiBmdW5jdGlvbihlbmFibGVkKSB7CiAgICAgICAgICAgICBpZiAoZW5h
YmxlZCA9M0Q9M0Q9M0QgdW5kZWZpbmVkKSBlbmFibGVkID0zRCBmYWxzZTsKLSAgICAgICAgICAg
IGlmICh0aGlzLl9yZWFkb25seSA9M0Q9M0Q9M0QgZW5hYmxlZCkgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKHRoaXMuX3JlYWRvbmx5ID0zRD0zRD0zRCBlbmFibGVkKSByZXR1cm47CiAg
ICAgICAgICAgICB0aGlzLl9yZWFkb25seSA9M0QgZW5hYmxlZDsKPTIwCiAgICAgICAgICAgICB0
aGlzLm9wdHMuZWxlbWVudC5wcm9wKCJyZWFkb25seSIsIGVuYWJsZWQpOwogICAgICAgICAgICAg
dGhpcy5lbmFibGVJbnRlcmZhY2UoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9LAo9MjAKICAgICAgICAgLy8gYWJzdHJhY3QKICAgICAgICAgb3BlbmVkOiBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDIt
ZHJvcGRvd24tb3BlbiIpOworICAgICAgICAgICAgcmV0dXJuICh0aGlzLmNvbnRhaW5lcikgPyB0
aGlzLmNvbnRhaW5lci5oYXNDbGFzcygic2VsZWN0Mi1kcm89CnBkb3duLW9wZW4iKSA6IGZhbHNl
OwogICAgICAgICB9LAo9MjAKICAgICAgICAgLy8gYWJzdHJhY3QKQEAgLTExMzUsMjAgKzEyMjYs
NTggQEAKICAgICAgICAgICAgICAgICBoZWlnaHQgPTNEIHRoaXMuY29udGFpbmVyLm91dGVySGVp
Z2h0KGZhbHNlKSwKICAgICAgICAgICAgICAgICB3aWR0aCA9M0QgdGhpcy5jb250YWluZXIub3V0
ZXJXaWR0aChmYWxzZSksCiAgICAgICAgICAgICAgICAgZHJvcEhlaWdodCA9M0QgJGRyb3Bkb3du
Lm91dGVySGVpZ2h0KGZhbHNlKSwKLSAgICAgICAgICAgICAgICB2aWV3UG9ydFJpZ2h0ID0zRCAk
KHdpbmRvdykuc2Nyb2xsTGVmdCgpICsgJCh3aW5kb3cpLndpZHRoPQooKSwKLSAgICAgICAgICAg
ICAgICB2aWV3cG9ydEJvdHRvbSA9M0QgJCh3aW5kb3cpLnNjcm9sbFRvcCgpICsgJCh3aW5kb3cp
LmhlaWdoPQp0KCksCisgICAgICAgICAgICAgICAgJHdpbmRvdyA9M0QgJCh3aW5kb3cpLAorICAg
ICAgICAgICAgICAgIHdpbmRvd1dpZHRoID0zRCAkd2luZG93LndpZHRoKCksCisgICAgICAgICAg
ICAgICAgd2luZG93SGVpZ2h0ID0zRCAkd2luZG93LmhlaWdodCgpLAorICAgICAgICAgICAgICAg
IHZpZXdQb3J0UmlnaHQgPTNEICR3aW5kb3cuc2Nyb2xsTGVmdCgpICsgd2luZG93V2lkdGgsCisg
ICAgICAgICAgICAgICAgdmlld3BvcnRCb3R0b20gPTNEICR3aW5kb3cuc2Nyb2xsVG9wKCkgKyB3
aW5kb3dIZWlnaHQsCiAgICAgICAgICAgICAgICAgZHJvcFRvcCA9M0Qgb2Zmc2V0LnRvcCArIGhl
aWdodCwKICAgICAgICAgICAgICAgICBkcm9wTGVmdCA9M0Qgb2Zmc2V0LmxlZnQsCiAgICAgICAg
ICAgICAgICAgZW5vdWdoUm9vbUJlbG93ID0zRCBkcm9wVG9wICsgZHJvcEhlaWdodCA8PTNEIHZp
ZXdwb3J0Qm90dD0Kb20sCi0gICAgICAgICAgICAgICAgZW5vdWdoUm9vbUFib3ZlID0zRCAob2Zm
c2V0LnRvcCAtIGRyb3BIZWlnaHQpID49M0QgdGhpcy5ibz0KZHkoKS5zY3JvbGxUb3AoKSwKKyAg
ICAgICAgICAgICAgICBlbm91Z2hSb29tQWJvdmUgPTNEIChvZmZzZXQudG9wIC0gZHJvcEhlaWdo
dCkgPj0zRCAkd2luZG93PQouc2Nyb2xsVG9wKCksCiAgICAgICAgICAgICAgICAgZHJvcFdpZHRo
ID0zRCAkZHJvcGRvd24ub3V0ZXJXaWR0aChmYWxzZSksCiAgICAgICAgICAgICAgICAgZW5vdWdo
Um9vbU9uUmlnaHQgPTNEIGRyb3BMZWZ0ICsgZHJvcFdpZHRoIDw9M0Qgdmlld1BvcnRSaT0KZ2h0
LAogICAgICAgICAgICAgICAgIGFib3ZlTm93ID0zRCAkZHJvcGRvd24uaGFzQ2xhc3MoInNlbGVj
dDItZHJvcC1hYm92ZSIpLAogICAgICAgICAgICAgICAgIGJvZHlPZmZzZXQsCiAgICAgICAgICAg
ICAgICAgYWJvdmUsCisgICAgICAgICAgICAgICAgY2hhbmdlRGlyZWN0aW9uLAogICAgICAgICAg
ICAgICAgIGNzcywKICAgICAgICAgICAgICAgICByZXN1bHRzTGlzdE5vZGU7Cj0yMAorICAgICAg
ICAgICAgLy8gYWx3YXlzIHByZWZlciB0aGUgY3VycmVudCBhYm92ZS9iZWxvdyBhbGlnbm1lbnQs
IHVubGVzcyB0aGU9CnJlIGlzIG5vdCBlbm91Z2ggcm9vbQorICAgICAgICAgICAgaWYgKGFib3Zl
Tm93KSB7CisgICAgICAgICAgICAgICAgYWJvdmUgPTNEIHRydWU7CisgICAgICAgICAgICAgICAg
aWYgKCFlbm91Z2hSb29tQWJvdmUgJiYgZW5vdWdoUm9vbUJlbG93KSB7CisgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZURpcmVjdGlvbiA9M0QgdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWJv
dmUgPTNEIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgYWJvdmUgPTNEIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICghZW5v
dWdoUm9vbUJlbG93ICYmIGVub3VnaFJvb21BYm92ZSkgeworICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VEaXJlY3Rpb24gPTNEIHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFib3ZlID0zRCB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy9p
ZiB3ZSBhcmUgY2hhbmdpbmcgZGlyZWN0aW9uIHdlIG5lZWQgdG8gZ2V0IHBvc2l0aW9ucyB3aGVu
IGQ9CnJvcGRvd24gaXMgaGlkZGVuOworICAgICAgICAgICAgaWYgKGNoYW5nZURpcmVjdGlvbikg
eworICAgICAgICAgICAgICAgICRkcm9wZG93bi5oaWRlKCk7CisgICAgICAgICAgICAgICAgb2Zm
c2V0ID0zRCB0aGlzLmNvbnRhaW5lci5vZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBoZWlnaHQg
PTNEIHRoaXMuY29udGFpbmVyLm91dGVySGVpZ2h0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB3
aWR0aCA9M0QgdGhpcy5jb250YWluZXIub3V0ZXJXaWR0aChmYWxzZSk7CisgICAgICAgICAgICAg
ICAgZHJvcEhlaWdodCA9M0QgJGRyb3Bkb3duLm91dGVySGVpZ2h0KGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICB2aWV3UG9ydFJpZ2h0ID0zRCAkd2luZG93LnNjcm9sbExlZnQoKSArIHdpbmRvd1dp
ZHRoOworICAgICAgICAgICAgICAgIHZpZXdwb3J0Qm90dG9tID0zRCAkd2luZG93LnNjcm9sbFRv
cCgpICsgd2luZG93SGVpZ2h0OworICAgICAgICAgICAgICAgIGRyb3BUb3AgPTNEIG9mZnNldC50
b3AgKyBoZWlnaHQ7CisgICAgICAgICAgICAgICAgZHJvcExlZnQgPTNEIG9mZnNldC5sZWZ0Owor
ICAgICAgICAgICAgICAgIGRyb3BXaWR0aCA9M0QgJGRyb3Bkb3duLm91dGVyV2lkdGgoZmFsc2Up
OworICAgICAgICAgICAgICAgIGVub3VnaFJvb21PblJpZ2h0ID0zRCBkcm9wTGVmdCArIGRyb3BX
aWR0aCA8PTNEIHZpZXdQb3J0Umk9CmdodDsKKyAgICAgICAgICAgICAgICAkZHJvcGRvd24uc2hv
dygpOworCisgICAgICAgICAgICAgICAgLy8gZml4IHNvIHRoZSBjdXJzb3IgZG9lcyBub3QgbW92
ZSB0byB0aGUgbGVmdCB3aXRoaW4gdGhlID0Kc2VhcmNoLXRleHRib3ggaW4gSUUKKyAgICAgICAg
ICAgICAgICB0aGlzLmZvY3VzU2VhcmNoKCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg
IGlmICh0aGlzLm9wdHMuZHJvcGRvd25BdXRvV2lkdGgpIHsKICAgICAgICAgICAgICAgICByZXN1
bHRzTGlzdE5vZGUgPTNEICQoJy5zZWxlY3QyLXJlc3VsdHMnLCAkZHJvcGRvd24pWzBdOwogICAg
ICAgICAgICAgICAgICRkcm9wZG93bi5hZGRDbGFzcygnc2VsZWN0Mi1kcm9wLWF1dG8td2lkdGgn
KTsKQEAgLTExNTYsNiArMTI4NSw3IEBACiAgICAgICAgICAgICAgICAgLy8gQWRkIHNjcm9sbGJh
ciB3aWR0aCB0byBkcm9wZG93biBpZiB2ZXJ0aWNhbCBzY3JvbGxiYXIgaT0KcyBwcmVzZW50CiAg
ICAgICAgICAgICAgICAgZHJvcFdpZHRoID0zRCAkZHJvcGRvd24ub3V0ZXJXaWR0aChmYWxzZSkg
KyAocmVzdWx0c0xpc3RObz0KZGUuc2Nyb2xsSGVpZ2h0ID0zRD0zRD0zRCByZXN1bHRzTGlzdE5v
ZGUuY2xpZW50SGVpZ2h0ID8gMCA6IHNjcm9sbEJhckRpbWVuPQpzaW9ucy53aWR0aCk7CiAgICAg
ICAgICAgICAgICAgZHJvcFdpZHRoID4gd2lkdGggPyB3aWR0aCA9M0QgZHJvcFdpZHRoIDogZHJv
cFdpZHRoID0zRCB3aT0KZHRoOworICAgICAgICAgICAgICAgIGRyb3BIZWlnaHQgPTNEICRkcm9w
ZG93bi5vdXRlckhlaWdodChmYWxzZSk7CiAgICAgICAgICAgICAgICAgZW5vdWdoUm9vbU9uUmln
aHQgPTNEIGRyb3BMZWZ0ICsgZHJvcFdpZHRoIDw9M0Qgdmlld1BvcnRSaT0KZ2h0OwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC0xMTYzLDQzICsxMjkzLDM3IEBACiAgICAg
ICAgICAgICB9Cj0yMAogICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiYmVsb3cvIGRyb3B0b3A6
IiwgZHJvcFRvcCwgImRyb3BIZWlnaHQiLCBkcm9wSGU9CmlnaHQsICJzdW0iLCAoZHJvcFRvcCtk
cm9wSGVpZ2h0KSsiIHZpZXdwb3J0IGJvdHRvbSIsIHZpZXdwb3J0Qm90dG9tLCAiZW5vdT0KZ2g/
IiwgZW5vdWdoUm9vbUJlbG93KTsKLSAgICAgICAgICAgIC8vY29uc29sZS5sb2coImFib3ZlLyBv
ZmZzZXQudG9wIiwgb2Zmc2V0LnRvcCwgImRyb3BIZWlnaHQiLCBkPQpyb3BIZWlnaHQsICJ0b3Ai
LCAob2Zmc2V0LnRvcC1kcm9wSGVpZ2h0KSwgInNjcm9sbFRvcCIsIHRoaXMuYm9keSgpLnNjcm9s
bFQ9Cm9wKCksICJlbm91Z2g/IiwgZW5vdWdoUm9vbUFib3ZlKTsKKyAgICAgICAgICAgIC8vY29u
c29sZS5sb2coImFib3ZlLyBvZmZzZXQudG9wIiwgb2Zmc2V0LnRvcCwgImRyb3BIZWlnaHQiLCBk
PQpyb3BIZWlnaHQsICJ0b3AiLCAob2Zmc2V0LnRvcC1kcm9wSGVpZ2h0KSwgInNjcm9sbFRvcCIs
IHRoaXMuYm9keS5zY3JvbGxUb3A9CigpLCAiZW5vdWdoPyIsIGVub3VnaFJvb21BYm92ZSk7Cj0y
MAogICAgICAgICAgICAgLy8gZml4IHBvc2l0aW9uaW5nIHdoZW4gYm9keSBoYXMgYW4gb2Zmc2V0
IGFuZCBpcyBub3QgcG9zaXRpb249Cjogc3RhdGljCi0gICAgICAgICAgICBpZiAodGhpcy5ib2R5
KCkuY3NzKCdwb3NpdGlvbicpICE9M0Q9M0QgJ3N0YXRpYycpIHsKLSAgICAgICAgICAgICAgICBi
b2R5T2Zmc2V0ID0zRCB0aGlzLmJvZHkoKS5vZmZzZXQoKTsKKyAgICAgICAgICAgIGlmICh0aGlz
LmJvZHkuY3NzKCdwb3NpdGlvbicpICE9M0Q9M0QgJ3N0YXRpYycpIHsKKyAgICAgICAgICAgICAg
ICBib2R5T2Zmc2V0ID0zRCB0aGlzLmJvZHkub2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgZHJv
cFRvcCAtPTNEIGJvZHlPZmZzZXQudG9wOwogICAgICAgICAgICAgICAgIGRyb3BMZWZ0IC09M0Qg
Ym9keU9mZnNldC5sZWZ0OwogICAgICAgICAgICAgfQo9MjAKLSAgICAgICAgICAgIC8vIGFsd2F5
cyBwcmVmZXIgdGhlIGN1cnJlbnQgYWJvdmUvYmVsb3cgYWxpZ25tZW50LCB1bmxlc3MgdGhlPQpy
ZSBpcyBub3QgZW5vdWdoIHJvb20KLSAgICAgICAgICAgIGlmIChhYm92ZU5vdykgewotICAgICAg
ICAgICAgICAgIGFib3ZlID0zRCB0cnVlOwotICAgICAgICAgICAgICAgIGlmICghZW5vdWdoUm9v
bUFib3ZlICYmIGVub3VnaFJvb21CZWxvdykgYWJvdmUgPTNEIGZhbHNlOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhYm92ZSA9M0QgZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFlbm91Z2hSb29tQmVsb3cgJiYgZW5vdWdoUm9vbUFib3ZlKSBhYm92ZSA9M0QgdHJ1
ZTsKKyAgICAgICAgICAgIGlmICghZW5vdWdoUm9vbU9uUmlnaHQpIHsKKyAgICAgICAgICAgICAg
ICBkcm9wTGVmdCA9M0Qgb2Zmc2V0LmxlZnQgKyB0aGlzLmNvbnRhaW5lci5vdXRlcldpZHRoKGZh
bHNlPQopIC0gZHJvcFdpZHRoOwogICAgICAgICAgICAgfQo9MjAKLSAgICAgICAgICAgIGlmICgh
ZW5vdWdoUm9vbU9uUmlnaHQpIHsKLSAgICAgICAgICAgICAgIGRyb3BMZWZ0ID0zRCBvZmZzZXQu
bGVmdCArIHdpZHRoIC0gZHJvcFdpZHRoOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY3Nz
ID0zRCAgeworICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0LAorICAgICAgICAgICAgICAg
IHdpZHRoOiB3aWR0aAorICAgICAgICAgICAgfTsKPTIwCiAgICAgICAgICAgICBpZiAoYWJvdmUp
IHsKLSAgICAgICAgICAgICAgICBkcm9wVG9wID0zRCBvZmZzZXQudG9wIC0gZHJvcEhlaWdodDsK
KyAgICAgICAgICAgICAgICBjc3MudG9wID0zRCBvZmZzZXQudG9wIC0gZHJvcEhlaWdodDsKKyAg
ICAgICAgICAgICAgICBjc3MuYm90dG9tID0zRCAnYXV0byc7CiAgICAgICAgICAgICAgICAgdGhp
cy5jb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hYm92ZSIpOwogICAgICAgICAgICAg
ICAgICRkcm9wZG93bi5hZGRDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjc3MudG9wID0zRCBkcm9w
VG9wOworICAgICAgICAgICAgICAgIGNzcy5ib3R0b20gPTNEICdhdXRvJzsKICAgICAgICAgICAg
ICAgICB0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIik7CiAg
ICAgICAgICAgICAgICAgJGRyb3Bkb3duLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWRyb3AtYWJvdmUi
KTsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY3NzID0zRCAkLmV4dGVuZCh7Ci0gICAg
ICAgICAgICAgICAgdG9wOiBkcm9wVG9wLAotICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0
LAotICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aAotICAgICAgICAgICAgfSwgZXZhbHVhdGUo
dGhpcy5vcHRzLmRyb3Bkb3duQ3NzKSk7CisgICAgICAgICAgICBjc3MgPTNEICQuZXh0ZW5kKGNz
cywgZXZhbHVhdGUodGhpcy5vcHRzLmRyb3Bkb3duQ3NzLCB0aGlzLm9wdD0Kcy5lbGVtZW50KSk7
Cj0yMAogICAgICAgICAgICAgJGRyb3Bkb3duLmNzcyhjc3MpOwogICAgICAgICB9LApAQCAtMTIz
Nyw2ICsxMzYxLDEyIEBACj0yMAogICAgICAgICAgICAgdGhpcy5vcGVuaW5nKCk7Cj0yMAorICAg
ICAgICAgICAgLy8gT25seSBiaW5kIHRoZSBkb2N1bWVudCBtb3VzZW1vdmUgd2hlbiB0aGUgZHJv
cGRvd24gaXMgdmlzaWI9CmxlCisgICAgICAgICAgICAkZG9jdW1lbnQub24oIm1vdXNlbW92ZS5z
ZWxlY3QyRXZlbnQiLCBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgIGxhc3RNb3VzZVBv
c2l0aW9uLnggPTNEIGUucGFnZVg7CisgICAgICAgICAgICAgICAgbGFzdE1vdXNlUG9zaXRpb24u
eSA9M0QgZS5wYWdlWTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfSwKPTIwCkBAIC0xMjQ1LDM1ICsxMzc1LDM4IEBACiAgICAgICAgICAqLwog
ICAgICAgICAvLyBhYnN0cmFjdAogICAgICAgICBvcGVuaW5nOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHZhciBjaWQgPTNEIHRoaXMuY29udGFpbmVySWQsCisgICAgICAgICAgICB2YXIgY2lk
ID0zRCB0aGlzLmNvbnRhaW5lckV2ZW50TmFtZSwKICAgICAgICAgICAgICAgICBzY3JvbGwgPTNE
ICJzY3JvbGwuIiArIGNpZCwKICAgICAgICAgICAgICAgICByZXNpemUgPTNEICJyZXNpemUuIitj
aWQsCiAgICAgICAgICAgICAgICAgb3JpZW50ID0zRCAib3JpZW50YXRpb25jaGFuZ2UuIitjaWQs
Ci0gICAgICAgICAgICAgICAgbWFzaywgbWFza0NzczsKKyAgICAgICAgICAgICAgICBtYXNrOwo9
MjAKICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWRyb3Bkb3du
LW9wZW4iKS5hZGRDbGFzcygic2VsPQplY3QyLWNvbnRhaW5lci1hY3RpdmUiKTsKPTIwCiAgICAg
ICAgICAgICB0aGlzLmNsZWFyRHJvcGRvd25BbGlnbm1lbnRQcmVmZXJlbmNlKCk7Cj0yMAotICAg
ICAgICAgICAgaWYodGhpcy5kcm9wZG93blswXSAhPTNEPTNEIHRoaXMuYm9keSgpLmNoaWxkcmVu
KCkubGFzdCgpWzBdKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5kZXRhY2goKS5h
cHBlbmRUbyh0aGlzLmJvZHkoKSk7CisgICAgICAgICAgICBpZih0aGlzLmRyb3Bkb3duWzBdICE9
M0Q9M0QgdGhpcy5ib2R5LmNoaWxkcmVuKCkubGFzdCgpWzBdKSB7CisgICAgICAgICAgICAgICAg
dGhpcy5kcm9wZG93bi5kZXRhY2goKS5hcHBlbmRUbyh0aGlzLmJvZHkpOwogICAgICAgICAgICAg
fQo9MjAKLSAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgZHJvcGRvd24gbWFzayBpZiBkb2VzbnQg
YWxyZWFkeSBleGlzdAorICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSBkcm9wZG93biBtYXNrIGlm
IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAogICAgICAgICAgICAgbWFzayA9M0QgJCgiI3NlbGVjdDIt
ZHJvcC1tYXNrIik7CiAgICAgICAgICAgICBpZiAobWFzay5sZW5ndGggPTNEPTNEIDApIHsKICAg
ICAgICAgICAgICAgICBtYXNrID0zRCAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
ICAgICAgICAgICAgICAgICBtYXNrLmF0dHIoImlkIiwic2VsZWN0Mi1kcm9wLW1hc2siKS5hdHRy
KCJjbGFzcyIsInNlbGVjdDItPQpkcm9wLW1hc2siKTsKICAgICAgICAgICAgICAgICBtYXNrLmhp
ZGUoKTsKLSAgICAgICAgICAgICAgICBtYXNrLmFwcGVuZFRvKHRoaXMuYm9keSgpKTsKKyAgICAg
ICAgICAgICAgICBtYXNrLmFwcGVuZFRvKHRoaXMuYm9keSk7CiAgICAgICAgICAgICAgICAgbWFz
ay5vbigibW91c2Vkb3duIHRvdWNoc3RhcnQgY2xpY2siLCBmdW5jdGlvbiAoZSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBQcmV2ZW50IElFIGZyb20gZ2VuZXJhdGluZyBhIGNsaWNrIGV2ZW50
IG9uIHRoZSBib2R5CisgICAgICAgICAgICAgICAgICAgIHJlaW5zZXJ0RWxlbWVudChtYXNrKTsK
KwogICAgICAgICAgICAgICAgICAgICB2YXIgZHJvcGRvd24gPTNEICQoIiNzZWxlY3QyLWRyb3Ai
KSwgc2VsZjsKICAgICAgICAgICAgICAgICAgICAgaWYgKGRyb3Bkb3duLmxlbmd0aCA+IDApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY9M0Rkcm9wZG93bi5kYXRhKCJzZWxlY3QyIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5vcHRzLnNlbGVjdE9uQmx1cikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0SGlnaGxpZ2h0ZWQoe25vRm9j
dXM6IHRydWV9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuY2xvc2Uoe2ZvY3VzOmZhbHNlfSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xMzAzLDcgKzE0MzYsNyBAQAogICAgICAgICAgICAgdmFyIHRo
YXQgPTNEIHRoaXM7CiAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5wYXJlbnRzKCkuYWRkKHdp
bmRvdykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgJCh0aGlzKS5vbihyZXNp
emUrIiAiK3Njcm9sbCsiICIrb3JpZW50LCBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAg
ICAgICB0aGF0LnBvc2l0aW9uRHJvcGRvd24oKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRo
YXQub3BlbmVkKCkpIHRoYXQucG9zaXRpb25Ecm9wZG93bigpOwogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfSk7Cj0yMApAQCAtMTMxNCw3ICsxNDQ3LDcgQEAKICAgICAgICAgY2xv
c2U6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGlmICghdGhpcy5vcGVuZWQoKSkgcmV0dXJu
Owo9MjAKLSAgICAgICAgICAgIHZhciBjaWQgPTNEIHRoaXMuY29udGFpbmVySWQsCisgICAgICAg
ICAgICB2YXIgY2lkID0zRCB0aGlzLmNvbnRhaW5lckV2ZW50TmFtZSwKICAgICAgICAgICAgICAg
ICBzY3JvbGwgPTNEICJzY3JvbGwuIiArIGNpZCwKICAgICAgICAgICAgICAgICByZXNpemUgPTNE
ICJyZXNpemUuIitjaWQsCiAgICAgICAgICAgICAgICAgb3JpZW50ID0zRCAib3JpZW50YXRpb25j
aGFuZ2UuIitjaWQ7CkBAIC0xMzMwLDYgKzE0NjMsOCBAQAogICAgICAgICAgICAgdGhpcy5jb250
YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tb3BlbiIpLnJlbW92ZUNsYXM9CnMo
InNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpOwogICAgICAgICAgICAgdGhpcy5yZXN1bHRzLmVt
cHR5KCk7Cj0yMAorICAgICAgICAgICAgLy8gTm93IHRoYXQgdGhlIGRyb3Bkb3duIGlzIGNsb3Nl
ZCwgdW5iaW5kIHRoZSBnbG9iYWwgZG9jdW1lbnQ9CiBtb3VzZW1vdmUgZXZlbnQKKyAgICAgICAg
ICAgICRkb2N1bWVudC5vZmYoIm1vdXNlbW92ZS5zZWxlY3QyRXZlbnQiKTsKPTIwCiAgICAgICAg
ICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7CiAgICAgICAgICAgICB0aGlzLnNlYXJjaC5yZW1vdmVD
bGFzcygic2VsZWN0Mi1hY3RpdmUiKTsKQEAgLTEzNTMsMTIgKzE0ODgsMTIgQEAKPTIwCiAgICAg
ICAgIC8vYWJzdHJhY3QKICAgICAgICAgZ2V0TWF4aW11bVNlbGVjdGlvblNpemU6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgcmV0dXJuIGV2YWx1YXRlKHRoaXMub3B0cy5tYXhpbXVtU2VsZWN0
aW9uU2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gZXZhbHVhdGUodGhpcy5vcHRzLm1heGltdW1T
ZWxlY3Rpb25TaXplLCB0aGlzLm9wdHMuZWxlbT0KZW50KTsKICAgICAgICAgfSwKPTIwCiAgICAg
ICAgIC8vIGFic3RyYWN0CiAgICAgICAgIGVuc3VyZUhpZ2hsaWdodFZpc2libGU6IGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgIHZhciByZXN1bHRzID0zRCB0aGlzLnJlc3VsdHMsIGNoaWxkcmVu
LCBpbmRleCwgY2hpbGQsIGhiLCByYiwgPQp5LCBtb3JlOworICAgICAgICAgICAgdmFyIHJlc3Vs
dHMgPTNEIHRoaXMucmVzdWx0cywgY2hpbGRyZW4sIGluZGV4LCBjaGlsZCwgaGIsIHJiLCA9Cnks
IG1vcmUsIHRvcE9mZnNldDsKPTIwCiAgICAgICAgICAgICBpbmRleCA9M0QgdGhpcy5oaWdobGln
aHQoKTsKPTIwCkBAIC0xMzc4LDcgKzE1MTMsOSBAQAo9MjAKICAgICAgICAgICAgIGNoaWxkID0z
RCAkKGNoaWxkcmVuW2luZGV4XSk7Cj0yMAotICAgICAgICAgICAgaGIgPTNEIGNoaWxkLm9mZnNl
dCgpLnRvcCArIGNoaWxkLm91dGVySGVpZ2h0KHRydWUpOworICAgICAgICAgICAgdG9wT2Zmc2V0
ID0zRCAoY2hpbGQub2Zmc2V0KCkgfHwge30pLnRvcCB8fCAwOworCisgICAgICAgICAgICBoYiA9
M0QgdG9wT2Zmc2V0ICsgY2hpbGQub3V0ZXJIZWlnaHQodHJ1ZSk7Cj0yMAogICAgICAgICAgICAg
Ly8gaWYgdGhpcyBpcyB0aGUgbGFzdCBjaGlsZCBsZXRzIGFsc28gbWFrZSBzdXJlIHNlbGVjdDIt
bW9yZS09CnJlc3VsdHMgaXMgdmlzaWJsZQogICAgICAgICAgICAgaWYgKGluZGV4ID0zRD0zRD0z
RCBjaGlsZHJlbi5sZW5ndGggLSAxKSB7CkBAIC0xMzkyLDcgKzE1MjksNyBAQAogICAgICAgICAg
ICAgaWYgKGhiID4gcmIpIHsKICAgICAgICAgICAgICAgICByZXN1bHRzLnNjcm9sbFRvcChyZXN1
bHRzLnNjcm9sbFRvcCgpICsgKGhiIC0gcmIpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHkgPTNEIGNoaWxkLm9mZnNldCgpLnRvcCAtIHJlc3VsdHMub2Zmc2V0KCkudG9wOworICAgICAg
ICAgICAgeSA9M0QgdG9wT2Zmc2V0IC0gcmVzdWx0cy5vZmZzZXQoKS50b3A7Cj0yMAogICAgICAg
ICAgICAgLy8gbWFrZSBzdXJlIHRoZSB0b3Agb2YgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZQogICAg
ICAgICAgICAgaWYgKHkgPCAwICYmIGNoaWxkLmNzcygnZGlzcGxheScpICE9M0QgJ25vbmUnICkg
ewpAQCAtMTQwMiw3ICsxNTM5LDcgQEAKPTIwCiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAg
IGZpbmRIaWdobGlnaHRhYmxlQ2hvaWNlczogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5yZXN1bHRzLmZpbmQoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlOm5vdCguc2Vs
ZT0KY3QyLWRpc2FibGVkKSIpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0cy5maW5k
KCIuc2VsZWN0Mi1yZXN1bHQtc2VsZWN0YWJsZTpub3QoLnNlbGU9CmN0Mi1kaXNhYmxlZCk6bm90
KC5zZWxlY3QyLXNlbGVjdGVkKSIpOwogICAgICAgICB9LAo9MjAKICAgICAgICAgLy8gYWJzdHJh
Y3QKQEAgLTE0MzgsOCArMTU3NSwxMyBAQAogICAgICAgICAgICAgY2hvaWNlID0zRCAkKGNob2lj
ZXNbaW5kZXhdKTsKICAgICAgICAgICAgIGNob2ljZS5hZGRDbGFzcygic2VsZWN0Mi1oaWdobGln
aHRlZCIpOwo9MjAKKyAgICAgICAgICAgIC8vIGVuc3VyZSBhc3Npc3RpdmUgdGVjaG5vbG9neSBj
YW4gZGV0ZXJtaW5lIHRoZSBhY3RpdmUgY2hvaWNlCisgICAgICAgICAgICB0aGlzLnNlYXJjaC5h
dHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLCBjaG9pY2UuZmluZCgiLnNlbGVjdD0KMi1yZXN1
bHQtbGFiZWwiKS5hdHRyKCJpZCIpKTsKKwogICAgICAgICAgICAgdGhpcy5lbnN1cmVIaWdobGln
aHRWaXNpYmxlKCk7Cj0yMAorICAgICAgICAgICAgdGhpcy5saXZlUmVnaW9uLnRleHQoY2hvaWNl
LnRleHQoKSk7CisKICAgICAgICAgICAgIGRhdGEgPTNEIGNob2ljZS5kYXRhKCJzZWxlY3QyLWRh
dGEiKTsKICAgICAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5vcHRz
LmVsZW1lbnQudHJpZ2dlcih7IHR5cGU6ICJzZWxlY3QyLWhpZ2hsaWdodCIsIHZhbD0KOiB0aGlz
LmlkKGRhdGEpLCBjaG9pY2U6IGRhdGEgfSk7CkBAIC0xNDUwLDYgKzE1OTIsMTQgQEAKICAgICAg
ICAgICAgIHRoaXMucmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1oaWdobGlnaHRlZCIpLnJlbW92ZUNs
YXNzKCJzZWxlY3QyPQotaGlnaGxpZ2h0ZWQiKTsKICAgICAgICAgfSwKPTIwCisgICAgICAgIHRv
dWNoTW92ZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGhpcy5fdG91Y2hNb3ZlZCA9M0Qg
dHJ1ZTsKKyAgICAgICAgfSwKKworICAgICAgICBjbGVhclRvdWNoTW92ZWQ6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgIHRoaXMuX3RvdWNoTW92ZWQgPTNEIGZhbHNlOworICAgICAgICB9LAorCiAg
ICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAgIGNvdW50U2VsZWN0YWJsZVJlc3VsdHM6IGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZEhpZ2hsaWdodGFibGVDaG9pY2Vz
KCkubGVuZ3RoOwpAQCAtMTQ3Miw3ICsxNjIyLDYgQEAKICAgICAgICAgICAgIHZhciByZXN1bHRz
ID0zRCB0aGlzLnJlc3VsdHMsCiAgICAgICAgICAgICAgICAgbW9yZSA9M0QgcmVzdWx0cy5maW5k
KCJsaS5zZWxlY3QyLW1vcmUtcmVzdWx0cyIpLAogICAgICAgICAgICAgICAgIGJlbG93LCAvLyBw
aXhlbHMgdGhlIGVsZW1lbnQgaXMgYmVsb3cgdGhlIHNjcm9sbCBmb2xkLCBiZWw9Cm93PTNEPTNE
MCBpcyB3aGVuIHRoZSBlbGVtZW50IGlzIHN0YXJ0aW5nIHRvIGJlIHZpc2libGUKLSAgICAgICAg
ICAgICAgICBvZmZzZXQgPTNEIC0xLCAvLyBpbmRleCBvZiBmaXJzdCBlbGVtZW50IHdpdGhvdXQg
ZGF0YQogICAgICAgICAgICAgICAgIHBhZ2UgPTNEIHRoaXMucmVzdWx0c1BhZ2UgKyAxLAogICAg
ICAgICAgICAgICAgIHNlbGY9M0R0aGlzLAogICAgICAgICAgICAgICAgIHRlcm09M0R0aGlzLnNl
YXJjaC52YWwoKSwKQEAgLTE0OTksNyArMTY0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNl
bGYucG9zdHByb2Nlc3NSZXN1bHRzKGRhdGEsIGZhbHNlLCBmYWxzZSk7Cj0yMAogICAgICAgICAg
ICAgICAgICAgICBpZiAoZGF0YS5tb3JlPTNEPTNEPTNEdHJ1ZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgbW9yZS5kZXRhY2goKS5hcHBlbmRUbyhyZXN1bHRzKS50ZXh0KHNlbGYub3B0cy5m
b3I9Cm1hdExvYWRNb3JlKHBhZ2UrMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbW9yZS5k
ZXRhY2goKS5hcHBlbmRUbyhyZXN1bHRzKS50ZXh0KGV2YWx1YXRlKHNlbGY9Ci5vcHRzLmZvcm1h
dExvYWRNb3JlLCBzZWxmLm9wdHMuZWxlbWVudCwgcGFnZSsxKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2VsZi5sb2FkTW9yZUlmTmVl
ZD0KZWQoKTsgfSwgMTApOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgbW9yZS5yZW1vdmUoKTsKQEAgLTE1NDgsNiArMTY5NywxMiBAQAogICAg
ICAgICAgICAgZnVuY3Rpb24gcG9zdFJlbmRlcigpIHsKICAgICAgICAgICAgICAgICBzZWFyY2gu
cmVtb3ZlQ2xhc3MoInNlbGVjdDItYWN0aXZlIik7CiAgICAgICAgICAgICAgICAgc2VsZi5wb3Np
dGlvbkRyb3Bkb3duKCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdHMuZmluZCgnLnNlbGVj
dDItbm8tcmVzdWx0cywuc2VsZWN0Mi1zZWxlY3Rpb24tbD0KaW1pdCwuc2VsZWN0Mi1zZWFyY2hp
bmcnKS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5saXZlUmVnaW9uLnRleHQo
cmVzdWx0cy50ZXh0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5saXZlUmVnaW9uLnRleHQoc2VsZi5vcHRzLmZv
cm1hdE1hdGNoZXMocmVzdWx0cy5mPQppbmQoJy5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlJyku
bGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQo9MjAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIHJlbmRlcihodG1sKSB7CkBAIC0xNTYxLDE0ICsxNzE2LDE0IEBACiAgICAg
ICAgICAgICBpZiAobWF4U2VsU2l6ZSA+PTNEMSkgewogICAgICAgICAgICAgICAgIGRhdGEgPTNE
IHRoaXMuZGF0YSgpOwogICAgICAgICAgICAgICAgIGlmICgkLmlzQXJyYXkoZGF0YSkgJiYgZGF0
YS5sZW5ndGggPj0zRCBtYXhTZWxTaXplICYmIGNoZWM9CmtGb3JtYXR0ZXIob3B0cy5mb3JtYXRT
ZWxlY3Rpb25Ub29CaWcsICJmb3JtYXRTZWxlY3Rpb25Ub29CaWciKSkgewotICAgICAgICAgICAg
ICAgICAgICByZW5kZXIoIjxsaSBjbGFzcz0zRCdzZWxlY3QyLXNlbGVjdGlvbi1saW1pdCc+IiAr
IG9wdHM9Ci5mb3JtYXRTZWxlY3Rpb25Ub29CaWcobWF4U2VsU2l6ZSkgKyAiPC9saT4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyKCI8bGkgY2xhc3M9M0Qnc2VsZWN0Mi1zZWxlY3Rpb24t
bGltaXQnPiIgKyBldmFsPQp1YXRlKG9wdHMuZm9ybWF0U2VsZWN0aW9uVG9vQmlnLCBvcHRzLmVs
ZW1lbnQsIG1heFNlbFNpemUpICsgIjwvbGk+Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Cj0yMAogICAgICAgICAgICAgaWYg
KHNlYXJjaC52YWwoKS5sZW5ndGggPCBvcHRzLm1pbmltdW1JbnB1dExlbmd0aCkgewogICAgICAg
ICAgICAgICAgIGlmIChjaGVja0Zvcm1hdHRlcihvcHRzLmZvcm1hdElucHV0VG9vU2hvcnQsICJm
b3JtYXRJbnB1dFQ9Cm9vU2hvcnQiKSkgewotICAgICAgICAgICAgICAgICAgICByZW5kZXIoIjxs
aSBjbGFzcz0zRCdzZWxlY3QyLW5vLXJlc3VsdHMnPiIgKyBvcHRzLmZvcm09CmF0SW5wdXRUb29T
aG9ydChzZWFyY2gudmFsKCksIG9wdHMubWluaW11bUlucHV0TGVuZ3RoKSArICI8L2xpPiIpOwor
ICAgICAgICAgICAgICAgICAgICByZW5kZXIoIjxsaSBjbGFzcz0zRCdzZWxlY3QyLW5vLXJlc3Vs
dHMnPiIgKyBldmFsdWF0ZSg9Cm9wdHMuZm9ybWF0SW5wdXRUb29TaG9ydCwgb3B0cy5lbGVtZW50
LCBzZWFyY2gudmFsKCksIG9wdHMubWluaW11bUlucHV0TGVuZz0KdGgpICsgIjwvbGk+Iik7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcmVuZGVyKCIiKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xNTc4LDcgKzE3MzMsNyBAQAo9MjAKICAgICAgICAgICAg
IGlmIChvcHRzLm1heGltdW1JbnB1dExlbmd0aCAmJiBzZWFyY2gudmFsKCkubGVuZ3RoID4gb3B0
cy5tYXhpPQptdW1JbnB1dExlbmd0aCkgewogICAgICAgICAgICAgICAgIGlmIChjaGVja0Zvcm1h
dHRlcihvcHRzLmZvcm1hdElucHV0VG9vTG9uZywgImZvcm1hdElucHV0VG89Cm9Mb25nIikpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmVuZGVyKCI8bGkgY2xhc3M9M0Qnc2VsZWN0Mi1uby1yZXN1
bHRzJz4iICsgb3B0cy5mb3JtPQphdElucHV0VG9vTG9uZyhzZWFyY2gudmFsKCksIG9wdHMubWF4
aW11bUlucHV0TGVuZ3RoKSArICI8L2xpPiIpOworICAgICAgICAgICAgICAgICAgICByZW5kZXIo
IjxsaSBjbGFzcz0zRCdzZWxlY3QyLW5vLXJlc3VsdHMnPiIgKyBldmFsdWF0ZSg9Cm9wdHMuZm9y
bWF0SW5wdXRUb29Mb25nLCBvcHRzLmVsZW1lbnQsIHNlYXJjaC52YWwoKSwgb3B0cy5tYXhpbXVt
SW5wdXRMZW5ndD0KaCkgKyAiPC9saT4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICByZW5kZXIoIiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1ODYs
NyArMTc0MSw3IEBACiAgICAgICAgICAgICB9Cj0yMAogICAgICAgICAgICAgaWYgKG9wdHMuZm9y
bWF0U2VhcmNoaW5nICYmIHRoaXMuZmluZEhpZ2hsaWdodGFibGVDaG9pY2VzKCkubGU9Cm5ndGgg
PTNEPTNEPTNEIDApIHsKLSAgICAgICAgICAgICAgICByZW5kZXIoIjxsaSBjbGFzcz0zRCdzZWxl
Y3QyLXNlYXJjaGluZyc+IiArIG9wdHMuZm9ybWF0U2VhPQpyY2hpbmcoKSArICI8L2xpPiIpOwor
ICAgICAgICAgICAgICAgIHJlbmRlcigiPGxpIGNsYXNzPTNEJ3NlbGVjdDItc2VhcmNoaW5nJz4i
ICsgZXZhbHVhdGUob3B0cy49CmZvcm1hdFNlYXJjaGluZywgb3B0cy5lbGVtZW50KSArICI8L2xp
PiIpOwogICAgICAgICAgICAgfQo9MjAKICAgICAgICAgICAgIHNlYXJjaC5hZGRDbGFzcygic2Vs
ZWN0Mi1hY3RpdmUiKTsKQEAgLTE2MjEsNiArMTc3NiwxMiBAQAogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQo9MjAKKyAgICAgICAgICAgICAgICAvLyBoYW5k
bGUgYWpheCBlcnJvcgorICAgICAgICAgICAgICAgIGlmKGRhdGEuaGFzRXJyb3IgIT0zRD0zRCB1
bmRlZmluZWQgJiYgY2hlY2tGb3JtYXR0ZXIob3B0cy49CmZvcm1hdEFqYXhFcnJvciwgImZvcm1h
dEFqYXhFcnJvciIpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlbmRlcigiPGxpIGNsYXNzPTNE
J3NlbGVjdDItYWpheC1lcnJvcic+IiArIGV2YWx1YXRlKD0Kb3B0cy5mb3JtYXRBamF4RXJyb3Is
IG9wdHMuZWxlbWVudCwgZGF0YS5qcVhIUiwgZGF0YS50ZXh0U3RhdHVzLCBkYXRhLmVycm9yPQpU
aHJvd24pICsgIjwvbGk+Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgICAgICAvLyBzYXZlIGNvbnRleHQsIGlmIGFueQogICAg
ICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9M0QgKGRhdGEuY29udGV4dD0zRD0zRD0zRHVuZGVm
aW5lZCkgPyBudWxsIDo9CiBkYXRhLmNvbnRleHQ7CiAgICAgICAgICAgICAgICAgLy8gY3JlYXRl
IGEgZGVmYXVsdCBjaG9pY2UgYW5kIHByZXBlbmQgaXQgdG8gdGhlIGxpc3QKQEAgLTE2MzEsMTMg
KzE3OTIsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcXVhbChzZWxmLmlkKHRoaXMp
LCBzZWxmLmlkKGRlZikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmxlbmd0aCA9
M0Q9M0Q9M0QgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVzdWx0cy51
bnNoaWZ0KGRlZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRzLmNyZWF0
ZVNlYXJjaENob2ljZVBvc2l0aW9uKGRhdGEucmVzdT0KbHRzLCBkZWYpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQo9
MjAKICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHRzLmxlbmd0aCA9M0Q9M0Q9M0QgMCAm
JiBjaGVja0Zvcm1hdHRlcihvcHRzPQouZm9ybWF0Tm9NYXRjaGVzLCAiZm9ybWF0Tm9NYXRjaGVz
IikpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVyKCI8bGkgY2xhc3M9M0Qnc2VsZWN0Mi1u
by1yZXN1bHRzJz4iICsgb3B0cy5mb3JtPQphdE5vTWF0Y2hlcyhzZWFyY2gudmFsKCkpICsgIjwv
bGk+Iik7CisgICAgICAgICAgICAgICAgICAgIHJlbmRlcigiPGxpIGNsYXNzPTNEJ3NlbGVjdDIt
bm8tcmVzdWx0cyc+IiArIGV2YWx1YXRlKD0Kb3B0cy5mb3JtYXROb01hdGNoZXMsIG9wdHMuZWxl
bWVudCwgc2VhcmNoLnZhbCgpKSArICI8L2xpPiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQo9MjAKQEAgLTE2NDUsNyArMTgwNiw3IEBACiAgICAgICAg
ICAgICAgICAgc2VsZi5vcHRzLnBvcHVsYXRlUmVzdWx0cy5jYWxsKHRoaXMsIHJlc3VsdHMsIGRh
dGEucmVzdWx0cz0KLCB7dGVybTogc2VhcmNoLnZhbCgpLCBwYWdlOiB0aGlzLnJlc3VsdHNQYWdl
LCBjb250ZXh0Om51bGx9KTsKPTIwCiAgICAgICAgICAgICAgICAgaWYgKGRhdGEubW9yZSA9M0Q9
M0Q9M0QgdHJ1ZSAmJiBjaGVja0Zvcm1hdHRlcihvcHRzLmZvcm1hdD0KTG9hZE1vcmUsICJmb3Jt
YXRMb2FkTW9yZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCI8bGkg
Y2xhc3M9M0Qnc2VsZWN0Mi1tb3JlLXJlc3VsdHMnPiIgKz0KIHNlbGYub3B0cy5lc2NhcGVNYXJr
dXAob3B0cy5mb3JtYXRMb2FkTW9yZSh0aGlzLnJlc3VsdHNQYWdlKSkgKyAiPC9saT4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoIjxsaSBjbGFzcz0zRCdzZWxlY3QyLW1v
cmUtcmVzdWx0cyc+IiArPQogb3B0cy5lc2NhcGVNYXJrdXAoZXZhbHVhdGUob3B0cy5mb3JtYXRM
b2FkTW9yZSwgb3B0cy5lbGVtZW50LCB0aGlzLnJlc3VsdHM9ClBhZ2UpKSArICI8L2xpPiIpOwog
ICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2VsZi5s
b2FkTW9yZUlmTmVlZGVkKCk9CjsgfSwgMTApOwogICAgICAgICAgICAgICAgIH0KPTIwCkBAIC0x
NjgzLDYgKzE4NDQsMTAgQEAKPTIwCiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAgIHNlbGVj
dEhpZ2hsaWdodGVkOiBmdW5jdGlvbiAob3B0aW9ucykgeworICAgICAgICAgICAgaWYgKHRoaXMu
X3RvdWNoTW92ZWQpIHsKKyAgICAgICAgICAgICAgdGhpcy5jbGVhclRvdWNoTW92ZWQoKTsKKyAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgdmFyIGluZGV4
PTNEdGhpcy5oaWdobGlnaHQoKSwKICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZD0zRHRoaXMu
cmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1oaWdobGlnaHRlZCIpLAogICAgICAgICAgICAgICAgIGRh
dGEgPTNEIGhpZ2hsaWdodGVkLmNsb3Nlc3QoJy5zZWxlY3QyLXJlc3VsdCcpLmRhdGEoInNlbGU9
CmN0Mi1kYXRhIik7CkBAIC0xNzA4LDEyICsxODczLDEyIEBACiAgICAgICAgIC8vIGFic3RyYWN0
CiAgICAgICAgIGdldFBsYWNlaG9sZGVyT3B0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
IGlmICh0aGlzLnNlbGVjdCkgewotICAgICAgICAgICAgICAgIHZhciBmaXJzdE9wdGlvbiA9M0Qg
dGhpcy5zZWxlY3QuY2hpbGRyZW4oKS5maXJzdCgpOworICAgICAgICAgICAgICAgIHZhciBmaXJz
dE9wdGlvbiA9M0QgdGhpcy5zZWxlY3QuY2hpbGRyZW4oJ29wdGlvbicpLmZpcnN0KCk7CiAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlvbiAhPTNEPTNEIHVuZGVm
aW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgLy9EZXRlcm1pbmUgdGhlIHBsYWNlaG9sZGVy
IG9wdGlvbiBiYXNlZCBvbiB0aGUgc3BlY2lmPQppZWQgcGxhY2Vob2xkZXJPcHRpb24gc2V0dGlu
ZwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlv
biA9M0Q9M0Q9M0QgImZpcnN0IiA9CiYmIGZpcnN0T3B0aW9uKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHR5cGVvZiB0aGlzLm9wdHMucGxhY2Vob2xkZXJPcHRpb24gPTNEPTNEPTNE
ICI9CmZ1bmN0aW9uIiAmJiB0aGlzLm9wdHMucGxhY2Vob2xkZXJPcHRpb24odGhpcy5zZWxlY3Qp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0T3B0aW9uLnRleHQoKSA9M0Q9M0Q9
M0QgIiIgJiYgZmlyc3RPcHRpb24uPQp2YWwoKSA9M0Q9M0Q9M0QgIiIpIHsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCQudHJpbShmaXJzdE9wdGlvbi50ZXh0KCkpID0zRD0zRD0zRCAiIiAm
JiBmaXJzPQp0T3B0aW9uLnZhbCgpID0zRD0zRD0zRCAiIikgewogICAgICAgICAgICAgICAgICAg
ICAvL05vIGV4cGxpY2l0IHBsYWNlaG9sZGVyIG9wdGlvbiBzcGVjaWZpZWQsIHVzZSB0aGUgZmk9
CnJzdCBpZiBpdCdzIGJsYW5rCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdE9wdGlv
bjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzI5LDcgKzE4OTQsNyBAQAogICAgICAgICAvLyBh
YnN0cmFjdAogICAgICAgICBpbml0Q29udGFpbmVyV2lkdGg6IGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgIGZ1bmN0aW9uIHJlc29sdmVDb250YWluZXJXaWR0aCgpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgc3R5bGUsIGF0dHJzLCBtYXRjaGVzLCBpLCBsOworICAgICAgICAgICAgICAgIHZhciBz
dHlsZSwgYXR0cnMsIG1hdGNoZXMsIGksIGwsIGF0dHI7Cj0yMAogICAgICAgICAgICAgICAgIGlm
ICh0aGlzLm9wdHMud2lkdGggPTNEPTNEPTNEICJvZmYiKSB7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxsOwpAQCAtMTc0MSw4ICsxOTA2LDggQEAKICAgICAgICAgICAgICAgICAgICAg
aWYgKHN0eWxlICE9M0Q9M0QgdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBh
dHRycyA9M0Qgc3R5bGUuc3BsaXQoJzsnKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
aSA9M0QgMCwgbCA9M0QgYXR0cnMubGVuZ3RoOyBpIDwgbDsgaSA9M0QgaSArPQogMSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPTNEIGF0dHJzW2ldLnJlcGxhY2UoL1xz
L2csICcnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWF0Y2goL1teLV13aWR0
aDooKFstK10/KFswLTldKlwuKT9bMC05XSs9CikocHh8ZW18ZXh8JXxpbnxjbXxtbXxwdHxwYykp
L2kpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgPTNEIGF0dHJzW2ldLnJlcGxh
Y2UoL1xzL2csICcnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzID0zRCBh
dHRyLm1hdGNoKC9ed2lkdGg6KChbLStdPyhbMC05XSpcPQouKT9bMC05XSspKHB4fGVtfGV4fCV8
aW58Y218bW18cHR8cGMpKS9pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0
Y2hlcyAhPTNEPTNEIG51bGwgJiYgbWF0Y2hlcy5sZW5ndGggPj0KPTNEIDEpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVzWzFdOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtMTc4MSwxNiArMTk0NiwxOSBAQAogICAgICAgICAgICAgdmFyIGNvbnRh
aW5lciA9M0QgJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuYXR0cih7CiAgICAgICAg
ICAgICAgICAgImNsYXNzIjogInNlbGVjdDItY29udGFpbmVyIgogICAgICAgICAgICAgfSkuaHRt
bChbCi0gICAgICAgICAgICAgICAgIjxhIGhyZWY9M0QnamF2YXNjcmlwdDp2b2lkKDApJyBvbmNs
aWNrPTNEJ3JldHVybiBmYWxzZTsnID0KY2xhc3M9M0Qnc2VsZWN0Mi1jaG9pY2UnIHRhYmluZGV4
PTNEJy0xJz4iLAotICAgICAgICAgICAgICAgICIgICA8c3BhbiBjbGFzcz0zRCdzZWxlY3QyLWNo
b3Nlbic+Jm5ic3A7PC9zcGFuPjxhYmJyIGNsYXM9CnM9M0Qnc2VsZWN0Mi1zZWFyY2gtY2hvaWNl
LWNsb3NlJz48L2FiYnI+IiwKLSAgICAgICAgICAgICAgICAiICAgPHNwYW4gY2xhc3M9M0Qnc2Vs
ZWN0Mi1hcnJvdyc+PGI+PC9iPjwvc3Bhbj4iLAorICAgICAgICAgICAgICAgICI8YSBocmVmPTNE
J2phdmFzY3JpcHQ6dm9pZCgwKScgY2xhc3M9M0Qnc2VsZWN0Mi1jaG9pY2UnIHQ9CmFiaW5kZXg9
M0QnLTEnPiIsCisgICAgICAgICAgICAgICAgIiAgIDxzcGFuIGNsYXNzPTNEJ3NlbGVjdDItY2hv
c2VuJz4mIzE2MDs8L3NwYW4+PGFiYnIgY2xhcz0Kcz0zRCdzZWxlY3QyLXNlYXJjaC1jaG9pY2Ut
Y2xvc2UnPjwvYWJicj4iLAorICAgICAgICAgICAgICAgICIgICA8c3BhbiBjbGFzcz0zRCdzZWxl
Y3QyLWFycm93JyByb2xlPTNEJ3ByZXNlbnRhdGlvbic+PGI9CiByb2xlPTNEJ3ByZXNlbnRhdGlv
bic+PC9iPjwvc3Bhbj4iLAogICAgICAgICAgICAgICAgICI8L2E+IiwKLSAgICAgICAgICAgICAg
ICAiPGlucHV0IGNsYXNzPTNEJ3NlbGVjdDItZm9jdXNzZXIgc2VsZWN0Mi1vZmZzY3JlZW4nIHR5
cGU9Cj0zRCd0ZXh0Jy8+IiwKKyAgICAgICAgICAgICAgICAiPGxhYmVsIGZvcj0zRCcnIGNsYXNz
PTNEJ3NlbGVjdDItb2Zmc2NyZWVuJz48L2xhYmVsPiIsCisgICAgICAgICAgICAgICAgIjxpbnB1
dCBjbGFzcz0zRCdzZWxlY3QyLWZvY3Vzc2VyIHNlbGVjdDItb2Zmc2NyZWVuJyB0eXBlPQo9M0Qn
dGV4dCcgYXJpYS1oYXNwb3B1cD0zRCd0cnVlJyByb2xlPTNEJ2J1dHRvbicgLz4iLAogICAgICAg
ICAgICAgICAgICI8ZGl2IGNsYXNzPTNEJ3NlbGVjdDItZHJvcCBzZWxlY3QyLWRpc3BsYXktbm9u
ZSc+IiwKICAgICAgICAgICAgICAgICAiICAgPGRpdiBjbGFzcz0zRCdzZWxlY3QyLXNlYXJjaCc+
IiwKLSAgICAgICAgICAgICAgICAiICAgICAgIDxpbnB1dCB0eXBlPTNEJ3RleHQnIGF1dG9jb21w
bGV0ZT0zRCdvZmYnIGF1dG9jb3JyPQplY3Q9M0Qnb2ZmJyBhdXRvY2FwaXRhbGl6ZT0zRCdvZmYn
IHNwZWxsY2hlY2s9M0QnZmFsc2UnIGNsYXNzPTNEJ3NlbGVjdDItaW49CnB1dCcvPiIsCisgICAg
ICAgICAgICAgICAgIiAgICAgICA8bGFiZWwgZm9yPTNEJycgY2xhc3M9M0Qnc2VsZWN0Mi1vZmZz
Y3JlZW4nPjwvbGFiZT0KbD4iLAorICAgICAgICAgICAgICAgICIgICAgICAgPGlucHV0IHR5cGU9
M0QndGV4dCcgYXV0b2NvbXBsZXRlPTNEJ29mZicgYXV0b2NvcnI9CmVjdD0zRCdvZmYnIGF1dG9j
YXBpdGFsaXplPTNEJ29mZicgc3BlbGxjaGVjaz0zRCdmYWxzZScgY2xhc3M9M0Qnc2VsZWN0Mi1p
bj0KcHV0JyByb2xlPTNEJ2NvbWJvYm94JyBhcmlhLWV4cGFuZGVkPTNEJ3RydWUnIiwKKyAgICAg
ICAgICAgICAgICAiICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPTNEJ2xpc3QnIC8+IiwKICAgICAg
ICAgICAgICAgICAiICAgPC9kaXY+IiwKLSAgICAgICAgICAgICAgICAiICAgPHVsIGNsYXNzPTNE
J3NlbGVjdDItcmVzdWx0cyc+IiwKKyAgICAgICAgICAgICAgICAiICAgPHVsIGNsYXNzPTNEJ3Nl
bGVjdDItcmVzdWx0cycgcm9sZT0zRCdsaXN0Ym94Jz4iLAogICAgICAgICAgICAgICAgICIgICA8
L3VsPiIsCiAgICAgICAgICAgICAgICAgIjwvZGl2PiJdLmpvaW4oIiIpKTsKICAgICAgICAgICAg
IHJldHVybiBjb250YWluZXI7CkBAIC0xODE5LDE3ICsxOTg3LDE5IEBACj0yMAogICAgICAgICAg
ICAgICAgIHRoaXMuc2VhcmNoLnZhbCh0aGlzLmZvY3Vzc2VyLnZhbCgpKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHRoaXMuc2VhcmNoLmZvY3VzKCk7Ci0gICAgICAgICAgICAvLyBtb3Zl
IHRoZSBjdXJzb3IgdG8gdGhlIGVuZCBhZnRlciBmb2N1c3NpbmcsIG90aGVyd2lzZSBpdCB3aT0K
bGwgYmUgYXQgdGhlIGJlZ2lubmluZyBhbmQKLSAgICAgICAgICAgIC8vIG5ldyB0ZXh0IHdpbGwg
YXBwZWFyICpiZWZvcmUqIGZvY3Vzc2VyLnZhbCgpCi0gICAgICAgICAgICBlbCA9M0QgdGhpcy5z
ZWFyY2guZ2V0KDApOwotICAgICAgICAgICAgaWYgKGVsLmNyZWF0ZVRleHRSYW5nZSkgewotICAg
ICAgICAgICAgICAgIHJhbmdlID0zRCBlbC5jcmVhdGVUZXh0UmFuZ2UoKTsKLSAgICAgICAgICAg
ICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0
KCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnNldFNlbGVjdGlvblJhbmdlKSB7Ci0gICAg
ICAgICAgICAgICAgbGVuID0zRCB0aGlzLnNlYXJjaC52YWwoKS5sZW5ndGg7Ci0gICAgICAgICAg
ICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UobGVuLCBsZW4pOworICAgICAgICAgICAgaWYgKHRo
aXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5z
ZWFyY2guZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAvLyBtb3ZlIHRoZSBjdXJzb3IgdG8gdGhl
IGVuZCBhZnRlciBmb2N1c3NpbmcsIG90aGVyd2lzZSBpPQp0IHdpbGwgYmUgYXQgdGhlIGJlZ2lu
bmluZyBhbmQKKyAgICAgICAgICAgICAgICAvLyBuZXcgdGV4dCB3aWxsIGFwcGVhciAqYmVmb3Jl
KiBmb2N1c3Nlci52YWwoKQorICAgICAgICAgICAgICAgIGVsID0zRCB0aGlzLnNlYXJjaC5nZXQo
MCk7CisgICAgICAgICAgICAgICAgaWYgKGVsLmNyZWF0ZVRleHRSYW5nZSkgeworICAgICAgICAg
ICAgICAgICAgICByYW5nZSA9M0QgZWwuY3JlYXRlVGV4dFJhbmdlKCk7CisgICAgICAgICAgICAg
ICAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2Uu
c2VsZWN0KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbC5zZXRTZWxlY3Rpb25SYW5n
ZSkgeworICAgICAgICAgICAgICAgICAgICBsZW4gPTNEIHRoaXMuc2VhcmNoLnZhbCgpLmxlbmd0
aDsKKyAgICAgICAgICAgICAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2UobGVuLCBsZW4pOwor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KPTIwCiAgICAgICAgICAgICAvLyBpbml0
aWFsaXplcyBzZWFyY2gncyB2YWx1ZSB3aXRoIG5leHRTZWFyY2hUZXJtIChpZiBkZWZpbmVkID0K
YnkgdXNlcikKQEAgLTE4NDcsMTQgKzIwMTcsMTMgQEAKICAgICAgICAgfSwKPTIwCiAgICAgICAg
IC8vIHNpbmdsZQotICAgICAgICBjbG9zZTogZnVuY3Rpb24gKHBhcmFtcykgeworICAgICAgICBj
bG9zZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgaWYgKCF0aGlzLm9wZW5lZCgpKSByZXR1
cm47CiAgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZS5hcHBseSh0aGlzLCBhcmd1bWVudHMp
Owo9MjAKLSAgICAgICAgICAgIHBhcmFtcyA9M0QgcGFyYW1zIHx8IHtmb2N1czogdHJ1ZX07Ci0g
ICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLnJlbW92ZUF0dHIoImRpc2FibGVkIik7Ci0KLSAgICAg
ICAgICAgIGlmIChwYXJhbXMuZm9jdXMpIHsKKyAgICAgICAgICAgIHRoaXMuZm9jdXNzZXIucHJv
cCgiZGlzYWJsZWQiLCBmYWxzZSk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLm9wdHMuc2hvdWxk
Rm9jdXNJbnB1dCh0aGlzKSkgewogICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNzZXIuZm9jdXMo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKQEAgLTE4NjQsOCArMjAzMywxMCBAQAogICAg
ICAgICAgICAgaWYgKHRoaXMub3BlbmVkKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLmNsb3Nl
KCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNzZXIu
cmVtb3ZlQXR0cigiZGlzYWJsZWQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLmZv
Y3VzKCk7CisgICAgICAgICAgICAgICAgdGhpcy5mb2N1c3Nlci5wcm9wKCJkaXNhYmxlZCIsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRzLnNob3VsZEZvY3VzSW5wdXQodGhp
cykpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c3Nlci5mb2N1cygpOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSwKPTIwCkBAIC0xODc3LDggKzIw
NDgsMTEgQEAKICAgICAgICAgLy8gc2luZ2xlCiAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2FuY2VsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
Ci0gICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLnJlbW92ZUF0dHIoImRpc2FibGVkIik7Ci0gICAg
ICAgICAgICB0aGlzLmZvY3Vzc2VyLmZvY3VzKCk7CisgICAgICAgICAgICB0aGlzLmZvY3Vzc2Vy
LnByb3AoImRpc2FibGVkIiwgZmFsc2UpOworCisgICAgICAgICAgICBpZiAodGhpcy5vcHRzLnNo
b3VsZEZvY3VzSW5wdXQodGhpcykpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLmZv
Y3VzKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0sCj0yMAogICAgICAgICAvLyBzaW5nbGUK
QEAgLTE4ODYsNiArMjA2MCwxMSBAQAogICAgICAgICAgICAgJCgibGFiZWxbZm9yPTNEJyIgKyB0
aGlzLmZvY3Vzc2VyLmF0dHIoJ2lkJykgKyAiJ10iKQogICAgICAgICAgICAgICAgIC5hdHRyKCdm
b3InLCB0aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJpZCIpKTsKICAgICAgICAgICAgIHRoaXMucGFy
ZW50LmRlc3Ryb3kuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAgICAgICAgICAgY2xlYW51
cEpRdWVyeUVsZW1lbnRzLmNhbGwodGhpcywKKyAgICAgICAgICAgICAgICAic2VsZWN0aW9uIiwK
KyAgICAgICAgICAgICAgICAiZm9jdXNzZXIiCisgICAgICAgICAgICApOwogICAgICAgICB9LAo9
MjAKICAgICAgICAgLy8gc2luZ2xlCkBAIC0xODkzLDcgKzIwNzIsOSBAQAo9MjAKICAgICAgICAg
ICAgIHZhciBzZWxlY3Rpb24sCiAgICAgICAgICAgICAgICAgY29udGFpbmVyID0zRCB0aGlzLmNv
bnRhaW5lciwKLSAgICAgICAgICAgICAgICBkcm9wZG93biA9M0QgdGhpcy5kcm9wZG93bjsKKyAg
ICAgICAgICAgICAgICBkcm9wZG93biA9M0QgdGhpcy5kcm9wZG93biwKKyAgICAgICAgICAgICAg
ICBpZFN1ZmZpeCA9M0QgbmV4dFVpZCgpLAorICAgICAgICAgICAgICAgIGVsZW1lbnRMYWJlbDsK
PTIwCiAgICAgICAgICAgICBpZiAodGhpcy5vcHRzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIDwg
MCkgewogICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NlYXJjaChmYWxzZSk7CkBAIC0xOTA1LDE3
ICsyMDg2LDQwIEBACj0yMAogICAgICAgICAgICAgdGhpcy5mb2N1c3NlciA9M0QgY29udGFpbmVy
LmZpbmQoIi5zZWxlY3QyLWZvY3Vzc2VyIik7Cj0yMAorICAgICAgICAgICAgLy8gYWRkIGFyaWEg
YXNzb2NpYXRpb25zCisgICAgICAgICAgICBzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItY2hvc2Vu
IikuYXR0cigiaWQiLCAic2VsZWN0Mi1jaG9zZW4tIj0KK2lkU3VmZml4KTsKKyAgICAgICAgICAg
IHRoaXMuZm9jdXNzZXIuYXR0cigiYXJpYS1sYWJlbGxlZGJ5IiwgInNlbGVjdDItY2hvc2VuLSIr
aWRTdWZmPQppeCk7CisgICAgICAgICAgICB0aGlzLnJlc3VsdHMuYXR0cigiaWQiLCAic2VsZWN0
Mi1yZXN1bHRzLSIraWRTdWZmaXgpOworICAgICAgICAgICAgdGhpcy5zZWFyY2guYXR0cigiYXJp
YS1vd25zIiwgInNlbGVjdDItcmVzdWx0cy0iK2lkU3VmZml4KTsKKwogICAgICAgICAgICAgLy8g
cmV3cml0ZSBsYWJlbHMgZnJvbSBvcmlnaW5hbCBlbGVtZW50IHRvIGZvY3Vzc2VyCi0gICAgICAg
ICAgICB0aGlzLmZvY3Vzc2VyLmF0dHIoImlkIiwgInMyaWRfYXV0b2dlbiIrbmV4dFVpZCgpKTsK
LQotICAgICAgICAgICAgJCgibGFiZWxbZm9yPTNEJyIgKyB0aGlzLm9wdHMuZWxlbWVudC5hdHRy
KCJpZCIpICsgIiddIikKKyAgICAgICAgICAgIHRoaXMuZm9jdXNzZXIuYXR0cigiaWQiLCAiczJp
ZF9hdXRvZ2VuIitpZFN1ZmZpeCk7CisKKyAgICAgICAgICAgIGVsZW1lbnRMYWJlbCA9M0QgJCgi
bGFiZWxbZm9yPTNEJyIgKyB0aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJpPQpkIikgKyAiJ10iKTsK
KworICAgICAgICAgICAgdGhpcy5mb2N1c3Nlci5wcmV2KCkKKyAgICAgICAgICAgICAgICAudGV4
dChlbGVtZW50TGFiZWwudGV4dCgpKQogICAgICAgICAgICAgICAgIC5hdHRyKCdmb3InLCB0aGlz
LmZvY3Vzc2VyLmF0dHIoJ2lkJykpOwo9MjAKKyAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgb3Jp
Z2luYWwgZWxlbWVudCByZXRhaW5zIGFuIGFjY2Vzc2libGUgbmFtZQorICAgICAgICAgICAgdmFy
IG9yaWdpbmFsVGl0bGUgPTNEIHRoaXMub3B0cy5lbGVtZW50LmF0dHIoInRpdGxlIik7CisgICAg
ICAgICAgICB0aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJ0aXRsZSIsIChvcmlnaW5hbFRpdGxlIHx8
IGVsZW1lbnRMYWJlbD0KLnRleHQoKSkpOworCiAgICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLmF0
dHIoInRhYmluZGV4IiwgdGhpcy5lbGVtZW50VGFiSW5kZXgpOwo9MjAKKyAgICAgICAgICAgIC8v
IHdyaXRlIGxhYmVsIGZvciBzZWFyY2ggZmllbGQgdXNpbmcgdGhlIGxhYmVsIGZyb20gdGhlIGZv
Y3VzPQpzZXIgZWxlbWVudAorICAgICAgICAgICAgdGhpcy5zZWFyY2guYXR0cigiaWQiLCB0aGlz
LmZvY3Vzc2VyLmF0dHIoJ2lkJykgKyAnX3NlYXJjaCcpOworCisgICAgICAgICAgICB0aGlzLnNl
YXJjaC5wcmV2KCkKKyAgICAgICAgICAgICAgICAudGV4dCgkKCJsYWJlbFtmb3I9M0QnIiArIHRo
aXMuZm9jdXNzZXIuYXR0cignaWQnKSArICInXSIpPQoudGV4dCgpKQorICAgICAgICAgICAgICAg
IC5hdHRyKCdmb3InLCB0aGlzLnNlYXJjaC5hdHRyKCdpZCcpKTsKKwogICAgICAgICAgICAgdGhp
cy5zZWFyY2gub24oImtleWRvd24iLCB0aGlzLmJpbmQoZnVuY3Rpb24gKGUpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIXRoaXMuaXNJbnRlcmZhY2VFbmFibGVkKCkpIHJldHVybjsKPTIwCisgICAg
ICAgICAgICAgICAgLy8gZmlsdGVyIDIyOSBrZXlDb2RlcyAoaW5wdXQgbWV0aG9kIGVkaXRvciBp
cyBwcm9jZXNzaW5nID0Ka2V5IGlucHV0KQorICAgICAgICAgICAgICAgIGlmICgyMjkgPTNEPTNE
IGUua2V5Q29kZSkgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgaWYgKGUud2hpY2ggPTNEPTNE
PTNEIEtFWS5QQUdFX1VQIHx8IGUud2hpY2ggPTNEPTNEPTNEIEtFWT0KLlBBR0VfRE9XTikgewog
ICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IHRoZSBwYWdlIGZyb20gc2Nyb2xsaW5nCiAg
ICAgICAgICAgICAgICAgICAgIGtpbGxFdmVudChlKTsKQEAgLTE5NDUsOSArMjE0OSwxMSBAQAog
ICAgICAgICAgICAgdGhpcy5zZWFyY2gub24oImJsdXIiLCB0aGlzLmJpbmQoZnVuY3Rpb24oZSkg
ewogICAgICAgICAgICAgICAgIC8vIGEgd29ya2Fyb3VuZCBmb3IgY2hyb21lIHRvIGtlZXAgdGhl
IHNlYXJjaCBmaWVsZCBmb2N1c3M9CmVkIHdoZW4gdGhlIHNjcm9sbCBiYXIgaXMgdXNlZCB0byBz
Y3JvbGwgdGhlIGRyb3Bkb3duLgogICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgdGhpcyB0aGUg
c2VhcmNoIGZpZWxkIGxvc2VzIGZvY3VzIHdoaWNoIGlzIGFubm89CnlpbmcKLSAgICAgICAgICAg
ICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9M0Q9M0Q9M0QgdGhpcy5ib2R5KCkuZ2V0
KDApKSB7CisgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPTNEPTNE
PTNEIHRoaXMuYm9keS5nZXQoMCkpIHsKICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRp
bWVvdXQodGhpcy5iaW5kKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5zZWFyY2guZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wZW5l
ZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2guZm9jdXMoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSksIDApOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pKTsKQEAgLTE5OTMsNyArMjE5OSw3IEBA
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSkpOwo9MjAKLSAgICAgICAgICAgIHNl
bGVjdGlvbi5vbigibW91c2Vkb3duIiwgImFiYnIiLCB0aGlzLmJpbmQoZnVuY3Rpb24gKGUpIHsK
KyAgICAgICAgICAgIHNlbGVjdGlvbi5vbigibW91c2Vkb3duIHRvdWNoc3RhcnQiLCAiYWJiciIs
IHRoaXMuYmluZChmdW5jdGlvPQpuIChlKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlz
SW50ZXJmYWNlRW5hYmxlZCgpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigp
OwogICAgICAgICAgICAgICAgIGtpbGxFdmVudEltbWVkaWF0ZWx5KGUpOwpAQCAtMjAwMSw3ICsy
MjA3LDkgQEAKICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5mb2N1cygpOwogICAgICAg
ICAgICAgfSkpOwo9MjAKLSAgICAgICAgICAgIHNlbGVjdGlvbi5vbigibW91c2Vkb3duIiwgdGhp
cy5iaW5kKGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICBzZWxlY3Rpb24ub24oIm1vdXNlZG93
biB0b3VjaHN0YXJ0IiwgdGhpcy5iaW5kKGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAg
Ly8gUHJldmVudCBJRSBmcm9tIGdlbmVyYXRpbmcgYSBjbGljayBldmVudCBvbiB0aGUgYm9keQor
ICAgICAgICAgICAgICAgIHJlaW5zZXJ0RWxlbWVudChzZWxlY3Rpb24pOwo9MjAKICAgICAgICAg
ICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyLmhhc0NsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1h
Y3RpdmUiKSkgewogICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2Vy
KCQuRXZlbnQoInNlbGVjdDItZm9jdXMiKSk7CkBAIC0yMDE2LDcgKzIyMjQsMTEgQEAKICAgICAg
ICAgICAgICAgICBraWxsRXZlbnQoZSk7CiAgICAgICAgICAgICB9KSk7Cj0yMAotICAgICAgICAg
ICAgZHJvcGRvd24ub24oIm1vdXNlZG93biIsIHRoaXMuYmluZChmdW5jdGlvbigpIHsgdGhpcy5z
ZWFyY2guZm89CmN1cygpOyB9KSk7CisgICAgICAgICAgICBkcm9wZG93bi5vbigibW91c2Vkb3du
IHRvdWNoc3RhcnQiLCB0aGlzLmJpbmQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYg
KHRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpKSB7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMuc2VhcmNoLmZvY3VzKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSkp
Owo9MjAKICAgICAgICAgICAgIHNlbGVjdGlvbi5vbigiZm9jdXMiLCB0aGlzLmJpbmQoZnVuY3Rp
b24oZSkgewogICAgICAgICAgICAgICAgIGtpbGxFdmVudChlKTsKQEAgLTIwODUsNiArMjI5Nyw3
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZVNlbGVjdGlvbihzZWxlY3Rl
ZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNldFBsYWNlaG9sZGVyKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLm5leHRTZWFyY2hUZXJtID0zRCBzZWxmLm9wdHMubmV4dFNlYXJjaFRlcm0ocz0KZWxl
Y3RlZCwgc2VsZi5zZWFyY2gudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CkBAIC0yMDkyLDggKzIzMDUsOCBAQAo9MjAKICAg
ICAgICAgaXNQbGFjZWhvbGRlck9wdGlvblNlbGVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgIHZhciBwbGFjZWhvbGRlck9wdGlvbjsKLSAgICAgICAgICAgIGlmICghdGhpcy5nZXRQbGFj
ZWhvbGRlcigpKSByZXR1cm4gZmFsc2U7IC8vIG5vIHBsYWNlaG9sZGVyIHNwPQplY2lmaWVkIHNv
IG5vIG9wdGlvbiBzaG91bGQgYmUgY29uc2lkZXJlZAotICAgICAgICAgICAgcmV0dXJuICgocGxh
Y2Vob2xkZXJPcHRpb24gPTNEIHRoaXMuZ2V0UGxhY2Vob2xkZXJPcHRpb24oKSkgIT0KPTNEPTNE
IHVuZGVmaW5lZCAmJiBwbGFjZWhvbGRlck9wdGlvbi5pcygnOnNlbGVjdGVkJykpCisgICAgICAg
ICAgICBpZiAodGhpcy5nZXRQbGFjZWhvbGRlcigpID0zRD0zRD0zRCB1bmRlZmluZWQpIHJldHVy
biBmYWxzZTsgLz0KLyBubyBwbGFjZWhvbGRlciBzcGVjaWZpZWQgc28gbm8gb3B0aW9uIHNob3Vs
ZCBiZSBjb25zaWRlcmVkCisgICAgICAgICAgICByZXR1cm4gKChwbGFjZWhvbGRlck9wdGlvbiA9
M0QgdGhpcy5nZXRQbGFjZWhvbGRlck9wdGlvbigpKSAhPQo9M0Q9M0QgdW5kZWZpbmVkICYmIHBs
YWNlaG9sZGVyT3B0aW9uLnByb3AoInNlbGVjdGVkIikpCiAgICAgICAgICAgICAgICAgfHwgKHRo
aXMub3B0cy5lbGVtZW50LnZhbCgpID0zRD0zRD0zRCAiIikKICAgICAgICAgICAgICAgICB8fCAo
dGhpcy5vcHRzLmVsZW1lbnQudmFsKCkgPTNEPTNEPTNEIHVuZGVmaW5lZCkKICAgICAgICAgICAg
ICAgICB8fCAodGhpcy5vcHRzLmVsZW1lbnQudmFsKCkgPTNEPTNEPTNEIG51bGwpOwpAQCAtMjEw
Nyw3ICsyMzIwLDcgQEAKICAgICAgICAgICAgIGlmIChvcHRzLmVsZW1lbnQuZ2V0KDApLnRhZ05h
bWUudG9Mb3dlckNhc2UoKSA9M0Q9M0Q9M0QgInNlbGVjPQp0IikgewogICAgICAgICAgICAgICAg
IC8vIGluc3RhbGwgdGhlIHNlbGVjdGlvbiBpbml0aWFsaXplcgogICAgICAgICAgICAgICAgIG9w
dHMuaW5pdFNlbGVjdGlvbiA9M0QgZnVuY3Rpb24gKGVsZW1lbnQsIGNhbGxiYWNrKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZCA9M0QgZWxlbWVudC5maW5kKCI6c2VsZWN0ZWQi
KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0zRCBlbGVtZW50LmZpbmQoIm9w
dGlvbiIpLmZpbHRlcihmdW5jdGlvPQpuKCkgeyByZXR1cm4gdGhpcy5zZWxlY3RlZCAmJiAhdGhp
cy5kaXNhYmxlZCB9KTsKICAgICAgICAgICAgICAgICAgICAgLy8gYSBzaW5nbGUgc2VsZWN0IGJv
eCBhbHdheXMgaGFzIGEgdmFsdWUsIG5vIG5lZWQgdG8gPQpudWxsIGNoZWNrICdzZWxlY3RlZCcK
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc2VsZi5vcHRpb25Ub0RhdGEoc2VsZWN0ZWQp
KTsKICAgICAgICAgICAgICAgICB9OwpAQCAtMjIyNCwxMCArMjQzNywxMyBAQAogICAgICAgICAg
ICAgdGhpcy5uZXh0U2VhcmNoVGVybSA9M0QgdGhpcy5vcHRzLm5leHRTZWFyY2hUZXJtKGRhdGEs
IHRoaXMuc2U9CmFyY2gudmFsKCkpOwogICAgICAgICAgICAgdGhpcy5jbG9zZSgpOwo9MjAKLSAg
ICAgICAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5ub0ZvY3VzKQorICAgICAgICAgICAg
aWYgKCghb3B0aW9ucyB8fCAhb3B0aW9ucy5ub0ZvY3VzKSAmJiB0aGlzLm9wdHMuc2hvdWxkRm9j
dXNJbnA9CnV0KHRoaXMpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c3Nlci5mb2N1cygp
OwotCi0gICAgICAgICAgICBpZiAoIWVxdWFsKG9sZCwgdGhpcy5pZChkYXRhKSkpIHsgdGhpcy50
cmlnZ2VyQ2hhbmdlKHthZGRlZDpkYT0KdGEscmVtb3ZlZDpvbGREYXRhfSk7IH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKCFlcXVhbChvbGQsIHRoaXMuaWQoZGF0YSkpKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlKHsgYWRkZWQ6IGRhdGEsIHJlbW92ZWQ6
IG9sZERhdGEgfSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0sCj0yMAogICAgICAgICAvLyBz
aW5nbGUKQEAgLTIyNzcsNyArMjQ5Myw3IEBACiAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Qp
IHsKICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdAogICAgICAgICAgICAgICAgICAgICAudmFs
KHZhbCkKLSAgICAgICAgICAgICAgICAgICAgLmZpbmQoIjpzZWxlY3RlZCIpLmVhY2gyKGZ1bmN0
aW9uIChpLCBlbG0pIHsKKyAgICAgICAgICAgICAgICAgICAgLmZpbmQoIm9wdGlvbiIpLmZpbHRl
cihmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuc2VsZWN0PQplZCB9KS5lYWNoMihmdW5jdGlvbiAo
aSwgZWxtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0zRCBzZWxmLm9wdGlvblRv
RGF0YShlbG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgICAgICB9KTsKQEAgLTIzNDksNiArMjU2NSw3IEBACiAgICAgICAgICAgICB9KS5o
dG1sKFsKICAgICAgICAgICAgICAgICAiPHVsIGNsYXNzPTNEJ3NlbGVjdDItY2hvaWNlcyc+IiwK
ICAgICAgICAgICAgICAgICAiICA8bGkgY2xhc3M9M0Qnc2VsZWN0Mi1zZWFyY2gtZmllbGQnPiIs
CisgICAgICAgICAgICAgICAgIiAgICA8bGFiZWwgZm9yPTNEJycgY2xhc3M9M0Qnc2VsZWN0Mi1v
ZmZzY3JlZW4nPjwvbGFiZWw+IiwKICAgICAgICAgICAgICAgICAiICAgIDxpbnB1dCB0eXBlPTNE
J3RleHQnIGF1dG9jb21wbGV0ZT0zRCdvZmYnIGF1dG9jb3JyZWN0PQo9M0Qnb2ZmJyBhdXRvY2Fw
aXRhbGl6ZT0zRCdvZmYnIHNwZWxsY2hlY2s9M0QnZmFsc2UnIGNsYXNzPTNEJ3NlbGVjdDItaW5w
dXQ9Cic+IiwKICAgICAgICAgICAgICAgICAiICA8L2xpPiIsCiAgICAgICAgICAgICAgICAgIjwv
dWw+IiwKQEAgLTIzNjcsMTIgKzI1ODQsMTIgQEAKICAgICAgICAgICAgIC8vIFRPRE8gdmFsaWRh
dGUgcGxhY2Vob2xkZXIgaXMgYSBzdHJpbmcgaWYgc3BlY2lmaWVkCj0yMAogICAgICAgICAgICAg
aWYgKG9wdHMuZWxlbWVudC5nZXQoMCkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID0zRD0zRD0zRCAi
c2VsZWM9CnQiKSB7Ci0gICAgICAgICAgICAgICAgLy8gaW5zdGFsbCBzdGhlIHNlbGVjdGlvbiBp
bml0aWFsaXplcgorICAgICAgICAgICAgICAgIC8vIGluc3RhbGwgdGhlIHNlbGVjdGlvbiBpbml0
aWFsaXplcgogICAgICAgICAgICAgICAgIG9wdHMuaW5pdFNlbGVjdGlvbiA9M0QgZnVuY3Rpb24g
KGVsZW1lbnQsIGNhbGxiYWNrKSB7Cj0yMAogICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9
M0QgW107Cj0yMAotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoIjpzZWxlY3RlZCIp
LmVhY2gyKGZ1bmN0aW9uIChpLCBlbG0pIHsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5m
aW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzPQouc2VsZWN0ZWQg
JiYgIXRoaXMuZGlzYWJsZWQgfSkuZWFjaDIoZnVuY3Rpb24gKGksIGVsbSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YS5wdXNoKHNlbGYub3B0aW9uVG9EYXRhKGVsbSkpOwogICAgICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZGF0YSk7CkBA
IC0yNDE3LDYgKzI2MzQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIG9wdHM7CiAgICAgICAgIH0s
Cj0yMAorICAgICAgICAvLyBtdWx0aQogICAgICAgICBzZWxlY3RDaG9pY2U6IGZ1bmN0aW9uIChj
aG9pY2UpIHsKPTIwCiAgICAgICAgICAgICB2YXIgc2VsZWN0ZWQgPTNEIHRoaXMuY29udGFpbmVy
LmZpbmQoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtZj0Kb2N1cyIpOwpAQCAtMjQ0MCw2ICsyNjU4
LDExIEBACiAgICAgICAgICAgICAkKCJsYWJlbFtmb3I9M0QnIiArIHRoaXMuc2VhcmNoLmF0dHIo
J2lkJykgKyAiJ10iKQogICAgICAgICAgICAgICAgIC5hdHRyKCdmb3InLCB0aGlzLm9wdHMuZWxl
bWVudC5hdHRyKCJpZCIpKTsKICAgICAgICAgICAgIHRoaXMucGFyZW50LmRlc3Ryb3kuYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKKworICAgICAgICAgICAgY2xlYW51cEpRdWVyeUVsZW1lbnRzLmNh
bGwodGhpcywKKyAgICAgICAgICAgICAgICAic2VhcmNoQ29udGFpbmVyIiwKKyAgICAgICAgICAg
ICAgICAic2VsZWN0aW9uIgorICAgICAgICAgICAgKTsKICAgICAgICAgfSwKPTIwCiAgICAgICAg
IC8vIG11bHRpCkBAIC0yNDU5LDEwICsyNjgyLDEzIEBACj0yMAogICAgICAgICAgICAgLy8gcmV3
cml0ZSBsYWJlbHMgZnJvbSBvcmlnaW5hbCBlbGVtZW50IHRvIGZvY3Vzc2VyCiAgICAgICAgICAg
ICB0aGlzLnNlYXJjaC5hdHRyKCJpZCIsICJzMmlkX2F1dG9nZW4iK25leHRVaWQoKSk7Ci0gICAg
ICAgICAgICAkKCJsYWJlbFtmb3I9M0QnIiArIHRoaXMub3B0cy5lbGVtZW50LmF0dHIoImlkIikg
KyAiJ10iKQorCisgICAgICAgICAgICB0aGlzLnNlYXJjaC5wcmV2KCkKKyAgICAgICAgICAgICAg
ICAudGV4dCgkKCJsYWJlbFtmb3I9M0QnIiArIHRoaXMub3B0cy5lbGVtZW50LmF0dHIoImlkIikg
KyAiPQonXSIpLnRleHQoKSkKICAgICAgICAgICAgICAgICAuYXR0cignZm9yJywgdGhpcy5zZWFy
Y2guYXR0cignaWQnKSk7Cj0yMAogICAgICAgICAgICAgdGhpcy5zZWFyY2gub24oImlucHV0IHBh
c3RlIiwgdGhpcy5iaW5kKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLnNl
YXJjaC5hdHRyKCdwbGFjZWhvbGRlcicpICYmIHRoaXMuc2VhcmNoLnZhbCgpLmw9CmVuZ3RoID0z
RD0zRCAwKSByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzSW50ZXJmYWNlRW5h
YmxlZCgpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wZW5lZCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbigpOwpAQCAtMjQ5MSwxMyArMjcxNywxNSBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaG9pY2UgPTNEIG5leHQubGVuZ3RoID8g
bmV4dCA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoZS53aGljaCA9M0Q9M0Q9M0QgS0VZLkJBQ0tTUEFDRSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy51bnNlbGVjdChzZWxlY3RlZC5maXJzdCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuc2VhcmNoLndpZHRoKDEwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdGVkQ2hvaWNlID0zRCBwcmV2Lmxlbmd0aCA/IHByZXYgOiBuZXh0OworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5zZWxlY3Qoc2VsZWN0ZWQuZmlyc3QoKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaC53aWR0aCgxMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaG9pY2UgPTNEIHByZXYubGVuZ3RoID8g
cHJldiA6IG5leHQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZS53aGljaCA9M0Q9M0QgS0VZLkRFTEVURSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy51bnNlbGVjdChzZWxlY3RlZC5maXJzdCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuc2VhcmNoLndpZHRoKDEwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdGVkQ2hvaWNlID0zRCBuZXh0Lmxlbmd0aCA/IG5leHQgOiBudWxsOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5zZWxlY3Qoc2VsZWN0ZWQuZmlyc3QoKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaC53aWR0aCgxMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaG9pY2UgPTNEIG5leHQubGVuZ3RoID8g
bmV4dCA6IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZS53aGljaCA9M0Q9M0QgS0VZLkVOVEVSKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxlY3RlZENob2ljZSA9M0QgbnVsbDsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMjY3NSw4ICsyOTAzLDE5IEBACj0yMAogICAgICAgICAgICAgdGhpcy5mb2N1c1NlYXJj
aCgpOwo9MjAKKyAgICAgICAgICAgIC8vIGluaXRpYWxpemVzIHNlYXJjaCdzIHZhbHVlIHdpdGgg
bmV4dFNlYXJjaFRlcm0gKGlmIGRlZmluZWQgPQpieSB1c2VyKQorICAgICAgICAgICAgLy8gaWdu
b3JlIG5leHRTZWFyY2hUZXJtIGlmIHRoZSBkcm9wZG93biBpcyBvcGVuZWQgYnkgdGhlIHVzZXI9
CiBwcmVzc2luZyBhIGxldHRlcgorICAgICAgICAgICAgaWYodGhpcy5zZWFyY2gudmFsKCkgPTNE
PTNEPTNEICIiKSB7CisgICAgICAgICAgICAgICAgaWYodGhpcy5uZXh0U2VhcmNoVGVybSAhPTNE
IHVuZGVmaW5lZCl7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoLnZhbCh0aGlzLm5l
eHRTZWFyY2hUZXJtKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2guc2VsZWN0KCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB0aGlzLnVw
ZGF0ZVJlc3VsdHModHJ1ZSk7Ci0gICAgICAgICAgICB0aGlzLnNlYXJjaC5mb2N1cygpOworICAg
ICAgICAgICAgaWYgKHRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpKSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5zZWFyY2guZm9jdXMoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoJC5FdmVudCgic2VsZWN0Mi1vcGVuIikpOwogICAg
ICAgICB9LAo9MjAKQEAgLTI3MzMsMTIgKzI5NzIsMTggQEAKICAgICAgICAgLy8gbXVsdGkKICAg
ICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIChkYXRhLCBvcHRpb25zKSB7Cj0yMAotICAgICAgICAg
ICAgaWYgKCF0aGlzLnRyaWdnZXJTZWxlY3QoZGF0YSkpIHsgcmV0dXJuOyB9CisgICAgICAgICAg
ICBpZiAoIXRoaXMudHJpZ2dlclNlbGVjdChkYXRhKSB8fCBkYXRhLnRleHQgPTNEPTNEPTNEICIi
KSB7IHJldD0KdXJuOyB9Cj0yMAogICAgICAgICAgICAgdGhpcy5hZGRTZWxlY3RlZENob2ljZShk
YXRhKTsKPTIwCiAgICAgICAgICAgICB0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHsgdHlwZTog
InNlbGVjdGVkIiwgdmFsOiB0aGlzLmlkKGRhdD0KYSksIGNob2ljZTogZGF0YSB9KTsKPTIwCisg
ICAgICAgICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBzZWFyY2gncyB2YWx1ZSBiZWZvcmUgaXQg
Z2V0cyBjbGVhcmVkCisgICAgICAgICAgICB0aGlzLm5leHRTZWFyY2hUZXJtID0zRCB0aGlzLm9w
dHMubmV4dFNlYXJjaFRlcm0oZGF0YSwgdGhpcy5zZT0KYXJjaC52YWwoKSk7CisKKyAgICAgICAg
ICAgIHRoaXMuY2xlYXJTZWFyY2goKTsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlUmVzdWx0cygp
OworCiAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3QgfHwgIXRoaXMub3B0cy5jbG9zZU9uU2Vs
ZWN0KSB0aGlzLnBvc3Rwcm9jZXNzUj0KZXN1bHRzKGRhdGEsIGZhbHNlLCB0aGlzLm9wdHMuY2xv
c2VPblNlbGVjdD0zRD0zRD0zRHRydWUpOwo9MjAKICAgICAgICAgICAgIGlmICh0aGlzLm9wdHMu
Y2xvc2VPblNlbGVjdCkgewpAQCAtMjc1Miw2ICsyOTk3LDEzIEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBpZiB3ZSByZWFjaGVkIG1heCBzZWxlY3Rpb24gc2l6ZSByZXBhaW50IHRoZSBy
ZT0Kc3VsdHMgc28gY2hvaWNlcwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIHJlcGxh
Y2VkIHdpdGggdGhlIG1heCBzZWxlY3Rpb24gcmVhY2hlZCBtZXM9CnNhZ2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMudXBkYXRlUmVzdWx0cyh0cnVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemVzIHNlYXJj
aCdzIHZhbHVlIHdpdGggbmV4dFNlYXJjaFRlcm0gPQphbmQgdXBkYXRlIHNlYXJjaCByZXN1bHQK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubmV4dFNlYXJjaFRlcm0gIT0zRCB1bmRl
ZmluZWQpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoLnZhbCh0aGlz
Lm5leHRTZWFyY2hUZXJtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0
ZVJlc3VsdHMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaC5zZWxl
Y3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uRHJvcGRvd24oKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtMjc2MSw3ICszMDEzLDcgQEAKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Cj0yMAotICAgICAgICAgICAgLy8gc2luY2UgaXQncyBub3QgcG9zc2libGUg
dG8gc2VsZWN0IGFuIGVsZW1lbnQgdGhhdCBoYXMgYWxyZWE9CmR5IGJlZW4KKyAgICAgICAgICAg
IC8vIHNpbmNlIGl0cyBub3QgcG9zc2libGUgdG8gc2VsZWN0IGFuIGVsZW1lbnQgdGhhdCBoYXMg
YWxyZWFkPQp5IGJlZW4KICAgICAgICAgICAgIC8vIGFkZGVkIHdlIGRvIG5vdCBuZWVkIHRvIGNo
ZWNrIGlmIHRoaXMgaXMgYSBuZXcgZWxlbWVudCBiZWZvPQpyZSBmaXJpbmcgY2hhbmdlCiAgICAg
ICAgICAgICB0aGlzLnRyaWdnZXJDaGFuZ2UoeyBhZGRlZDogZGF0YSB9KTsKPTIwCkBAIC0yNzgw
LDcgKzMwMzIsNyBAQAogICAgICAgICAgICAgICAgIGVuYWJsZWRJdGVtID0zRCAkKAogICAgICAg
ICAgICAgICAgICAgICAiPGxpIGNsYXNzPTNEJ3NlbGVjdDItc2VhcmNoLWNob2ljZSc+IiArCiAg
ICAgICAgICAgICAgICAgICAgICIgICAgPGRpdj48L2Rpdj4iICsKLSAgICAgICAgICAgICAgICAg
ICAgIiAgICA8YSBocmVmPTNEJyMnIG9uY2xpY2s9M0QncmV0dXJuIGZhbHNlOycgY2xhc3M9M0Qn
PQpzZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2UnIHRhYmluZGV4PTNEJy0xJz48L2E+IiArCisg
ICAgICAgICAgICAgICAgICAgICIgICAgPGEgaHJlZj0zRCcjJyBjbGFzcz0zRCdzZWxlY3QyLXNl
YXJjaC1jaG9pY2UtY2xvcz0KZScgdGFiaW5kZXg9M0QnLTEnPjwvYT4iICsKICAgICAgICAgICAg
ICAgICAgICAgIjwvbGk+IiksCiAgICAgICAgICAgICAgICAgZGlzYWJsZWRJdGVtID0zRCAkKAog
ICAgICAgICAgICAgICAgICAgICAiPGxpIGNsYXNzPTNEJ3NlbGVjdDItc2VhcmNoLWNob2ljZSBz
ZWxlY3QyLWxvY2tlZCc+IiArCkBAIC0yODA3LDEzICszMDU5LDExIEBACiAgICAgICAgICAgICAg
ICAgICAub24oImNsaWNrIGRibGNsaWNrIiwgdGhpcy5iaW5kKGZ1bmN0aW9uIChlKSB7CiAgICAg
ICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNJbnRlcmZhY2VFbmFibGVkKCkpIHJldHVybjsKPTIw
Ci0gICAgICAgICAgICAgICAgICAkKGUudGFyZ2V0KS5jbG9zZXN0KCIuc2VsZWN0Mi1zZWFyY2gt
Y2hvaWNlIikuZmFkZU91dCgnZj0KYXN0JywgdGhpcy5iaW5kKGZ1bmN0aW9uKCl7Ci0gICAgICAg
ICAgICAgICAgICAgICAgdGhpcy51bnNlbGVjdCgkKGUudGFyZ2V0KSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1
cyIpLj0KcmVtb3ZlQ2xhc3MoInNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1cyIpOwotICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgICB0aGlz
LmZvY3VzU2VhcmNoKCk7Ci0gICAgICAgICAgICAgICAgICB9KSkuZGVxdWV1ZSgpOworICAgICAg
ICAgICAgICAgICAgdGhpcy51bnNlbGVjdCgkKGUudGFyZ2V0KSk7CisgICAgICAgICAgICAgICAg
ICB0aGlzLnNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIikucmVt
bz0KdmVDbGFzcygic2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIik7CiAgICAgICAgICAgICAg
ICAgICBraWxsRXZlbnQoZSk7CisgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAg
ICAgICAgICAgICAgICB0aGlzLmZvY3VzU2VhcmNoKCk7CiAgICAgICAgICAgICAgIH0pKS5vbigi
Zm9jdXMiLCB0aGlzLmJpbmQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgaWYgKCF0
aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICB0aGlz
LmNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIik7CkBAIC0yODMz
LDcgKzMwODMsNiBAQAogICAgICAgICAgICAgdmFyIHZhbCA9M0QgdGhpcy5nZXRWYWwoKSwKICAg
ICAgICAgICAgICAgICBkYXRhLAogICAgICAgICAgICAgICAgIGluZGV4OwotCiAgICAgICAgICAg
ICBzZWxlY3RlZCA9M0Qgc2VsZWN0ZWQuY2xvc2VzdCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZSIp
Owo9MjAKICAgICAgICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPTNEPTNEPTNEIDApIHsKQEAg
LTI4NDgsMTUgKzMwOTcsMjcgQEAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Cj0yMAorICAgICAgICAgICAgdmFyIGV2dCA9M0QgJC5FdmVudCgic2VsZWN0Mi1yZW1vdmlu
ZyIpOworICAgICAgICAgICAgZXZ0LnZhbCA9M0QgdGhpcy5pZChkYXRhKTsKKyAgICAgICAgICAg
IGV2dC5jaG9pY2UgPTNEIGRhdGE7CisgICAgICAgICAgICB0aGlzLm9wdHMuZWxlbWVudC50cmln
Z2VyKGV2dCk7CisKKyAgICAgICAgICAgIGlmIChldnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIHdoaWxlKChpbmRleCA9M0QgaW5kZXhPZih0aGlzLmlkKGRhdGEpLCB2YWwpKSA+PTNEIDAp
IHsKICAgICAgICAgICAgICAgICB2YWwuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgICAg
ICB0aGlzLnNldFZhbCh2YWwpOwogICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdCkgdGhp
cy5wb3N0cHJvY2Vzc1Jlc3VsdHMoKTsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc2Vs
ZWN0ZWQucmVtb3ZlKCk7Cj0yMAotICAgICAgICAgICAgdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dl
cih7IHR5cGU6ICJyZW1vdmVkIiwgdmFsOiB0aGlzLmlkKGRhdGE9CiksIGNob2ljZTogZGF0YSB9
KTsKKyAgICAgICAgICAgIHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoeyB0eXBlOiAic2VsZWN0
Mi1yZW1vdmVkIiwgdmFsOiB0aGlzPQouaWQoZGF0YSksIGNob2ljZTogZGF0YSB9KTsKICAgICAg
ICAgICAgIHRoaXMudHJpZ2dlckNoYW5nZSh7IHJlbW92ZWQ6IGRhdGEgfSk7CisKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LAo9MjAKICAgICAgICAgLy8gbXVsdGkKQEAgLTI4
NzYsNyArMzEzNyw3IEBACiAgICAgICAgICAgICB9KTsKPTIwCiAgICAgICAgICAgICBjb21wb3Vu
ZC5lYWNoMihmdW5jdGlvbihpLCBjaG9pY2UpIHsKLSAgICAgICAgICAgICAgICAvLyBoaWRlIGFu
IG9wdGdyb3VwIGlmIGl0IGRvZXNudCBoYXZlIGFueSBzZWxlY3RhYmxlIGNoaWxkPQpyZW4KKyAg
ICAgICAgICAgICAgICAvLyBoaWRlIGFuIG9wdGdyb3VwIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbnkg
c2VsZWN0YWJsZSBjaGlsPQpkcmVuCiAgICAgICAgICAgICAgICAgaWYgKCFjaG9pY2UuaXMoJy5z
ZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlJykKICAgICAgICAgICAgICAgICAgICAgJiYgY2hvaWNl
LmZpbmQoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlOm5vdCguc2VsZWN0PQoyLXNlbGVjdGVk
KSIpLmxlbmd0aCA9M0Q9M0Q9M0QgMCkgewogICAgICAgICAgICAgICAgICAgICBjaG9pY2UuYWRk
Q2xhc3MoInNlbGVjdDItc2VsZWN0ZWQiKTsKQEAgLTI4ODcsMTEgKzMxNDgsMTEgQEAKICAgICAg
ICAgICAgICAgICBzZWxmLmhpZ2hsaWdodCgwKTsKICAgICAgICAgICAgIH0KPTIwCi0gICAgICAg
ICAgICAvL0lmIGFsbCByZXN1bHRzIGFyZSBjaG9zZW4gcmVuZGVyIGZvcm1hdE5vTUF0Y2hlcwor
ICAgICAgICAgICAgLy9JZiBhbGwgcmVzdWx0cyBhcmUgY2hvc2VuIHJlbmRlciBmb3JtYXROb01h
dGNoZXMKICAgICAgICAgICAgIGlmKCF0aGlzLm9wdHMuY3JlYXRlU2VhcmNoQ2hvaWNlICYmICFj
aG9pY2VzLmZpbHRlcignLnNlbGVjdDItPQpyZXN1bHQ6bm90KC5zZWxlY3QyLXNlbGVjdGVkKScp
Lmxlbmd0aCA+IDApewogICAgICAgICAgICAgICAgIGlmKCFkYXRhIHx8IGRhdGEgJiYgIWRhdGEu
bW9yZSAmJiB0aGlzLnJlc3VsdHMuZmluZCgiLnNlbGU9CmN0Mi1uby1yZXN1bHRzIikubGVuZ3Ro
ID0zRD0zRD0zRCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0Zvcm1hdHRlcihz
ZWxmLm9wdHMuZm9ybWF0Tm9NYXRjaGVzLCAiZm9ybWF0Tj0Kb01hdGNoZXMiKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzLmFwcGVuZCgiPGxpIGNsYXNzPTNEJ3NlbGVj
dDItbm8tcmVzdWw9CnRzJz4iICsgc2VsZi5vcHRzLmZvcm1hdE5vTWF0Y2hlcyhzZWxmLnNlYXJj
aC52YWwoKSkgKyAiPC9saT4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0
cy5hcHBlbmQoIjxsaSBjbGFzcz0zRCdzZWxlY3QyLW5vLXJlc3VsPQp0cyc+IiArIGV2YWx1YXRl
KHNlbGYub3B0cy5mb3JtYXROb01hdGNoZXMsIHNlbGYub3B0cy5lbGVtZW50LCBzZWxmLnNlYXJj
aC49CnZhbCgpKSArICI8L2xpPiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjk2OSw3ICszMjMwLDkgQEAKICAgICAgICAgICAg
ICAgICBmb3IgKHZhciBqID0zRCAwOyBqIDwgb2xkLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChlcXVhbCh0aGlzLm9wdHMuaWQoY3VycmVudFtpXSksIHRoaXMub3B0cy5p
ZChvbGRbaj0KXSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LnNwbGljZShp
LCAxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmKGk+MCl7CisgICAgICAgICAgICAgICAgICAgICAgICAJaS0tOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgb2xkLnNwbGljZShqLCAxKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGotLTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt
Mjk4Miw3ICszMjQ1LDcgQEAKPTIwCiAgICAgICAgIC8vIG11bHRpCiAgICAgICAgIHZhbDogZnVu
Y3Rpb24gKHZhbCwgdHJpZ2dlckNoYW5nZSkgewotICAgICAgICAgICAgdmFyIG9sZERhdGEsIHNl
bGY9M0R0aGlzLCBjaGFuZ2VEZXRhaWxzOworICAgICAgICAgICAgdmFyIG9sZERhdGEsIHNlbGY9
M0R0aGlzOwo9MjAKICAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID0zRD0zRD0zRCAw
KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsKCk7CkBAIC0zMDIxLDcgKzMy
ODQsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZVNlbGVjdGlvbihkYXRhKTsK
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGVhclNlYXJjaCgpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAodHJpZ2dlckNoYW5nZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50
cmlnZ2VyQ2hhbmdlKHNlbGYuYnVpbGRDaGFuZ2VEZXRhaWxzKG9sZERhdGE9CiwgdGhpcy5kYXRh
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHJpZ2dlckNoYW5nZShzZWxmLmJ1
aWxkQ2hhbmdlRGV0YWlscyhvbGREYXRhPQosIHNlbGYuZGF0YSgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KQEAgLTMwNjUsNyAr
MzMyOCw3IEBACiAgICAgICAgICAgICB2YXIgc2VsZj0zRHRoaXMsIGlkcywgb2xkOwogICAgICAg
ICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPTNEPTNEPTNEIDApIHsKICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAuZmluZCgiLnNl
bGVjdDItc2VhcmNoLWNob2ljZSIpCisgICAgICAgICAgICAgICAgICAgICAuY2hpbGRyZW4oIi5z
ZWxlY3QyLXNlYXJjaC1jaG9pY2UiKQogICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlv
bigpIHsgcmV0dXJuICQodGhpcykuZGF0YSgic2VsZWN0Mi1kYXRhIik9CjsgfSkKICAgICAgICAg
ICAgICAgICAgICAgIC5nZXQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zMTA1LDcgKzMz
NjgsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoInRhZ3MiIGluIG9wdHMpIHtvcHRzLm11
bHRpcGxlID0zRCBtdWx0aXBsZSA9M0QgdHI9CnVlO30KICAgICAgICAgICAgICAgICB9Cj0yMAot
ICAgICAgICAgICAgICAgIHNlbGVjdDIgPTNEIG11bHRpcGxlID8gbmV3IE11bHRpU2VsZWN0Migp
IDogbmV3IFNpbmdsZVNlbGU9CmN0MigpOworICAgICAgICAgICAgICAgIHNlbGVjdDIgPTNEIG11
bHRpcGxlID8gbmV3IHdpbmRvdy5TZWxlY3QyWyJjbGFzcyJdLm11bHRpKCk9CiA6IG5ldyB3aW5k
b3cuU2VsZWN0MlsiY2xhc3MiXS5zaW5nbGUoKTsKICAgICAgICAgICAgICAgICBzZWxlY3QyLmlu
aXQob3B0cyk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZihhcmdzWzBdKSA9M0Q9M0Q9
M0QgInN0cmluZyIpIHsKPTIwCkBAIC0zMTI5LDcgKzMzOTIsNyBAQAogICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9M0Qgc2VsZWN0MlttZXRob2RdLmFwcGx5KHNlbGVjdDIsIGFyZ3Muc2xpY2Uo
MSk9Cik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChpbmRleE9mKGFy
Z3NbMF0sIHZhbHVlTWV0aG9kcykgPj0zRCAwCi0gICAgICAgICAgICAgICAgICAgIHx8IChpbmRl
eE9mKGFyZ3NbMF0sIHByb3BlcnR5TWV0aG9kcykgJiYgYXJncy5sZW5ndGggPQo9M0Q9M0QgMSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgfHwgKGluZGV4T2YoYXJnc1swXSwgcHJvcGVydHlNZXRo
b2RzKSA+PTNEIDAgJiYgYXJncy5sPQplbmd0aCA9M0Q9M0QgMSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhYm9ydCB0aGUgaXRlcmF0aW9uLCByZWFkeSB0byByZXR1
cm4gPQpmaXJzdCBtYXRjaGVkIHZhbHVlCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTMxNjAsMTkgKzM0MjMsMTMgQEAKICAgICAgICAgc29ydFJlc3VsdHM6IGZ1
bmN0aW9uIChyZXN1bHRzLCBjb250YWluZXIsIHF1ZXJ5KSB7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0czsKICAgICAgICAgfSwKLSAgICAgICAgZm9ybWF0UmVzdWx0Q3NzQ2xhc3M6IGZ1bmN0
aW9uKGRhdGEpIHtyZXR1cm4gdW5kZWZpbmVkO30sCisgICAgICAgIGZvcm1hdFJlc3VsdENzc0Ns
YXNzOiBmdW5jdGlvbihkYXRhKSB7cmV0dXJuIGRhdGEuY3NzO30sCiAgICAgICAgIGZvcm1hdFNl
bGVjdGlvbkNzc0NsYXNzOiBmdW5jdGlvbihkYXRhLCBjb250YWluZXIpIHtyZXR1cm4gdW5kZWZp
bj0KZWQ7fSwKLSAgICAgICAgZm9ybWF0Tm9NYXRjaGVzOiBmdW5jdGlvbiAoKSB7IHJldHVybiAi
Tm8gbWF0Y2hlcyBmb3VuZCI7IH0sCi0gICAgICAgIGZvcm1hdElucHV0VG9vU2hvcnQ6IGZ1bmN0
aW9uIChpbnB1dCwgbWluKSB7IHZhciBuID0zRCBtaW4gLSBpbnB1dD0KLmxlbmd0aDsgcmV0dXJu
ICJQbGVhc2UgZW50ZXIgIiArIG4gKyAiIG1vcmUgY2hhcmFjdGVyIiArIChuID0zRD0zRCAxPyAi
IiA6PQogInMiKTsgfSwKLSAgICAgICAgZm9ybWF0SW5wdXRUb29Mb25nOiBmdW5jdGlvbiAoaW5w
dXQsIG1heCkgeyB2YXIgbiA9M0QgaW5wdXQubGVuZ3RoPQogLSBtYXg7IHJldHVybiAiUGxlYXNl
IGRlbGV0ZSAiICsgbiArICIgY2hhcmFjdGVyIiArIChuID0zRD0zRCAxPyAiIiA6ICJzIik9Cjsg
fSwKLSAgICAgICAgZm9ybWF0U2VsZWN0aW9uVG9vQmlnOiBmdW5jdGlvbiAobGltaXQpIHsgcmV0
dXJuICJZb3UgY2FuIG9ubHkgc2VsPQplY3QgIiArIGxpbWl0ICsgIiBpdGVtIiArIChsaW1pdCA9
M0Q9M0QgMSA/ICIiIDogInMiKTsgfSwKLSAgICAgICAgZm9ybWF0TG9hZE1vcmU6IGZ1bmN0aW9u
IChwYWdlTnVtYmVyKSB7IHJldHVybiAiTG9hZGluZyBtb3JlIHJlc3VsPQp0cy4uLiI7IH0sCi0g
ICAgICAgIGZvcm1hdFNlYXJjaGluZzogZnVuY3Rpb24gKCkgeyByZXR1cm4gIlNlYXJjaGluZy4u
LiI7IH0sCiAgICAgICAgIG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOiAwLAogICAgICAgICBtaW5p
bXVtSW5wdXRMZW5ndGg6IDAsCiAgICAgICAgIG1heGltdW1JbnB1dExlbmd0aDogbnVsbCwKICAg
ICAgICAgbWF4aW11bVNlbGVjdGlvblNpemU6IDAsCi0gICAgICAgIGlkOiBmdW5jdGlvbiAoZSkg
eyByZXR1cm4gZS5pZDsgfSwKKyAgICAgICAgaWQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID0z
RD0zRCB1bmRlZmluZWQgPyBudWxsIDogZS5pZDsgfSwKICAgICAgICAgbWF0Y2hlcjogZnVuY3Rp
b24odGVybSwgdGV4dCkgewogICAgICAgICAgICAgcmV0dXJuIHN0cmlwRGlhY3JpdGljcygnJyt0
ZXh0KS50b1VwcGVyQ2FzZSgpLmluZGV4T2Yoc3RyaXBEaWE9CmNyaXRpY3MoJycrdGVybSkudG9V
cHBlckNhc2UoKSkgPj0zRCAwOwogICAgICAgICB9LApAQCAtMzE4NCw5ICszNDQxLDQzIEBACiAg
ICAgICAgIHNlbGVjdE9uQmx1cjogZmFsc2UsCiAgICAgICAgIGFkYXB0Q29udGFpbmVyQ3NzQ2xh
c3M6IGZ1bmN0aW9uKGMpIHsgcmV0dXJuIGM7IH0sCiAgICAgICAgIGFkYXB0RHJvcGRvd25Dc3ND
bGFzczogZnVuY3Rpb24oYykgeyByZXR1cm4gbnVsbDsgfSwKLSAgICAgICAgbmV4dFNlYXJjaFRl
cm06IGZ1bmN0aW9uKHNlbGVjdGVkT2JqZWN0LCBjdXJyZW50U2VhcmNoVGVybSkgeyByZXR1PQpy
biB1bmRlZmluZWQ7IH0KKyAgICAgICAgbmV4dFNlYXJjaFRlcm06IGZ1bmN0aW9uKHNlbGVjdGVk
T2JqZWN0LCBjdXJyZW50U2VhcmNoVGVybSkgeyByZXR1PQpybiB1bmRlZmluZWQ7IH0sCisgICAg
ICAgIHNlYXJjaElucHV0UGxhY2Vob2xkZXI6ICcnLAorICAgICAgICBjcmVhdGVTZWFyY2hDaG9p
Y2VQb3NpdGlvbjogJ3RvcCcsCisgICAgICAgIHNob3VsZEZvY3VzSW5wdXQ6IGZ1bmN0aW9uIChp
bnN0YW5jZSkgeworICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBkZXRlY3QgdG91Y2ggZGV2aWNl
cworICAgICAgICAgICAgdmFyIHN1cHBvcnRzVG91Y2hFdmVudHMgPTNEICgoJ29udG91Y2hzdGFy
dCcgaW4gd2luZG93KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzID4gMCkpOworCisgICAgICAgICAgICAvLyBPbmx5
IGRldmljZXMgd2hpY2ggc3VwcG9ydCB0b3VjaCBldmVudHMgc2hvdWxkIGJlIHNwZWNpYWwgYz0K
YXNlZAorICAgICAgICAgICAgaWYgKCFzdXBwb3J0c1RvdWNoRXZlbnRzKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE5ldmVy
IGZvY3VzIHRoZSBpbnB1dCBpZiBzZWFyY2ggaXMgZGlzYWJsZWQKKyAgICAgICAgICAgIGlmIChp
bnN0YW5jZS5vcHRzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIDwgMCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KICAgICB9Owo9MjAKKyAgICAkLmZuLnNlbGVjdDIubG9jYWxlcyA9M0Qg
W107CisKKyAgICAkLmZuLnNlbGVjdDIubG9jYWxlc1snZW4nXSA9M0QgeworICAgICAgICAgZm9y
bWF0TWF0Y2hlczogZnVuY3Rpb24gKG1hdGNoZXMpIHsgaWYgKG1hdGNoZXMgPTNEPTNEPTNEIDEp
IHsgcmU9CnR1cm4gIk9uZSByZXN1bHQgaXMgYXZhaWxhYmxlLCBwcmVzcyBlbnRlciB0byBzZWxl
Y3QgaXQuIjsgfSByZXR1cm4gbWF0Y2hlcz0KICsgIiByZXN1bHRzIGFyZSBhdmFpbGFibGUsIHVz
ZSB1cCBhbmQgZG93biBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlLiI7IH0sCisgICAgICAgICBmb3Jt
YXROb01hdGNoZXM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICJObyBtYXRjaGVzIGZvdW5kIjsgfSwK
KyAgICAgICAgIGZvcm1hdEFqYXhFcnJvcjogZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBl
cnJvclRocm93bikgeyByZXR1PQpybiAiTG9hZGluZyBmYWlsZWQiOyB9LAorICAgICAgICAgZm9y
bWF0SW5wdXRUb29TaG9ydDogZnVuY3Rpb24gKGlucHV0LCBtaW4pIHsgdmFyIG4gPTNEIG1pbiAt
IGlucHU9CnQubGVuZ3RoOyByZXR1cm4gIlBsZWFzZSBlbnRlciAiICsgbiArICIgb3IgbW9yZSBj
aGFyYWN0ZXIiICsgKG4gPTNEPTNEIDEgPz0KICIiIDogInMiKTsgfSwKKyAgICAgICAgIGZvcm1h
dElucHV0VG9vTG9uZzogZnVuY3Rpb24gKGlucHV0LCBtYXgpIHsgdmFyIG4gPTNEIGlucHV0Lmxl
bmd0PQpoIC0gbWF4OyByZXR1cm4gIlBsZWFzZSBkZWxldGUgIiArIG4gKyAiIGNoYXJhY3RlciIg
KyAobiA9M0Q9M0QgMSA/ICIiIDogInM9CiIpOyB9LAorICAgICAgICAgZm9ybWF0U2VsZWN0aW9u
VG9vQmlnOiBmdW5jdGlvbiAobGltaXQpIHsgcmV0dXJuICJZb3UgY2FuIG9ubHkgc2U9CmxlY3Qg
IiArIGxpbWl0ICsgIiBpdGVtIiArIChsaW1pdCA9M0Q9M0QgMSA/ICIiIDogInMiKTsgfSwKKyAg
ICAgICAgIGZvcm1hdExvYWRNb3JlOiBmdW5jdGlvbiAocGFnZU51bWJlcikgeyByZXR1cm4gIkxv
YWRpbmcgbW9yZSByZXN1PQpsdHM9RTI9ODA9QTYiOyB9LAorICAgICAgICAgZm9ybWF0U2VhcmNo
aW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAiU2VhcmNoaW5nPUUyPTgwPUE2IjsgfSwKKyAgICB9
OworCisgICAgJC5leHRlbmQoJC5mbi5zZWxlY3QyLmRlZmF1bHRzLCAkLmZuLnNlbGVjdDIubG9j
YWxlc1snZW4nXSk7CisKICAgICAkLmZuLnNlbGVjdDIuYWpheERlZmF1bHRzID0zRCB7CiAgICAg
ICAgIHRyYW5zcG9ydDogJC5hamF4LAogICAgICAgICBwYXJhbXM6IHsKCmRpZmYgLXIgOWY3OTY2
ZTQ4MTQ2NmNmN2EyMjRjMWJiODcwNzhmNjI4MTY1N2JhZCAtciA1YjE3NzY4NDYzMzJjYmZjODA4
ZjA0MT0KZDBmZmM2ZTdmZmRkZDY0MzQgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90
b29scy1mb3JtLWJhc2UuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90
b29scy1mb3JtLWJhc2UuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90
b29scy1mb3JtLWJhc2UuanMKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICAgICA9MjAKICAg
ICAgICAgICAgICAgICAvLyBzY3JvbGwgdG8gZmlyc3QgaW5wdXQgZWxlbWVudAogICAgICAgICAg
ICAgICAgIGlmICghc2lsZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICQodGhpcy5jb250YWlu
ZXIpLmFuaW1hdGUoeworICAgICAgICAgICAgICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0
ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IGlucHV0X2VsZW1lbnQuJGVs
Lm9mZnNldCgpLnRvcCAtIDIwCiAgICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAg
ICAgICAgICAgfQoKZGlmZiAtciA5Zjc5NjZlNDgxNDY2Y2Y3YTIyNGMxYmI4NzA3OGY2MjgxNjU3
YmFkIC1yIDViMTc3Njg0NjMzMmNiZmM4MDhmMDQxPQpkMGZmYzZlN2ZmZGRkNjQzNCBjbGllbnQv
Z2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0td29ya2Zsb3cuanMKLS0tIGEvY2xp
ZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93LmpzCisrKyBi
L2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS13b3JrZmxvdy5qcwpA
QCAtMTMzLDcgKzEzMyw3IEBACiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGV4dGVuc2lv
bnMudW5zaGlmdCh7CiAgICAgICAgICAgICAgICAgMCA6ICdMZWF2ZSB1bmNoYW5nZWQnLAotICAg
ICAgICAgICAgICAgIDEgOiAnJworICAgICAgICAgICAgICAgIDEgOiAnX19lbXB0eV9fJwogICAg
ICAgICAgICAgfSk7Cj0yMAogICAgICAgICAgICAgLy8gY3JlYXRlIGN1c3RvbSBzdWIgc2VjdGlv
bgpAQCAtMTUzLDcgKzE1Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ICAgIDog
J25ld3R5cGUnLAogICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdDaGFuZ2UgZGF0
YXR5cGUnLAogICAgICAgICAgICAgICAgICAgICB0eXBlICAgICAgICA6ICdzZWxlY3QnLAotICAg
ICAgICAgICAgICAgICAgICBpZ25vcmUgICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICBp
Z25vcmUgICAgICA6ICdfX2VtcHR5X18nLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgICAg
ICA6ICdfX2VtcHR5X18nLAogICAgICAgICAgICAgICAgICAgICBvcHRpb25zICAgICA6IGV4dGVu
c2lvbnMsCiAgICAgICAgICAgICAgICAgICAgIGhlbHAgICAgICAgIDogJ1RoaXMgYWN0aW9uIHdp
bGwgY2hhbmdlIHRoZSBkYXRhdHlwZSBvZj0KIHRoZSBvdXRwdXQgdG8gdGhlIGluZGljYXRlZCB2
YWx1ZS4nCiAgICAgICAgICAgICAgICAgfSx7CgpkaWZmIC1yIDlmNzk2NmU0ODE0NjZjZjdhMjI0
YzFiYjg3MDc4ZjYyODE2NTdiYWQgLXIgNWIxNzc2ODQ2MzMyY2JmYzgwOGYwNDE9CmQwZmZjNmU3
ZmZkZGQ2NDM0IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VsZWN0LWNv
bnRlbnQuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1zZWxl
Y3QtY29udGVudC5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xz
LXNlbGVjdC1jb250ZW50LmpzCkBAIC03NSw2ICs3NSw3IEBACiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIHRoaXMuc2VsZWN0X211bHRpcGxlID0zRCBuZXcgVWkuU2VsZWN0LlZpZXcoewog
ICAgICAgICAgICAgICAgIG11bHRpcGxlICAgIDogdHJ1ZSwKKyAgICAgICAgICAgICAgICBzZWFy
Y2hhYmxlICA6IGZhbHNlLAogICAgICAgICAgICAgICAgIGVycm9yX3RleHQgIDogaGRhX2Vycm9y
LAogICAgICAgICAgICAgICAgIG9uY2hhbmdlICAgIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHNlbGYudHJpZ2dlcignY2hhbmdlJyk7CgpUaGlzIGRpZmYgaXMgc28gYmlnIHRo
YXQgd2UgbmVlZGVkIHRvIHRydW5jYXRlIHRoZSByZW1haW5kZXIuCgpodHRwczovL2JpdGJ1Y2tl
dC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvYzgyYjAxOGZjYWMxLwpDaGFuZ2Vz
ZXQ6ICAgYzgyYjAxOGZjYWMxClVzZXI6ICAgICAgICBtYXJ0ZW5zb24KRGF0ZTogICAgICAgIDIw
MTUtMDItMjMgMTg6MTA6MzQrMDA6MDAKU3VtbWFyeTogICAgIGZpeCBUUyBzZWFyY2ggQVBJIHRv
IGJlIHNlc3Npb25sZXNzCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgNWIxNzc2ODQ2MzMy
Y2JmYzgwOGYwNDFkMGZmYzZlN2ZmZGRkNjQzNCAtciBjODJiMDE4ZmNhYzEyMDkzYzdlM2MwZD0K
YjY1NTg0ZWY5ZmNiMWQ0ZmYgbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9hcGkvc2VhcmNo
LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvYXBpL3NlYXJjaC5weQorKysg
Yi9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2FwaS9zZWFyY2gucHkKQEAgLTIsOCArMiw3
IEBACiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwogZnJvbSBnYWxheHkgaW1wb3J0IGVn
Z3MKIGZyb20gZ2FsYXh5IGltcG9ydCB1dGlsCi1mcm9tIGdhbGF4eS53ZWIgaW1wb3J0IF9mdXR1
cmVfZXhwb3NlX2FwaSBhcyBleHBvc2VfYXBpCi1mcm9tIGdhbGF4eS53ZWIgaW1wb3J0IF9mdXR1
cmVfZXhwb3NlX2FwaV9yYXdfYW5vbnltb3VzIGFzIGV4cG9zZV9hcGlfcmF3Xz0KYW5vbnltb3Vz
Citmcm9tIGdhbGF4eS53ZWIgaW1wb3J0IF9mdXR1cmVfZXhwb3NlX2FwaV9yYXdfYW5vbnltb3Vz
X2FuZF9zZXNzaW9ubGVzcyBhcz0KIGV4cG9zZV9hcGlfcmF3X2Fub255bW91c19hbmRfc2Vzc2lv
bmxlc3MKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElDb250
cm9sbGVyCiBmcm9tIGdhbGF4eS53ZWJhcHBzLnRvb2xfc2hlZC5zZWFyY2gucmVwb19zZWFyY2gg
aW1wb3J0IFJlcG9TZWFyY2gKIGZyb20gZ2FsYXh5LndlYiBpbXBvcnQgdXJsX2ZvcgpAQCAtMTUs
NyArMTQsNyBAQAo9MjAKIGNsYXNzIFNlYXJjaENvbnRyb2xsZXIgKCBCYXNlQVBJQ29udHJvbGxl
ciApOgo9MjAKLSAgICBAZXhwb3NlX2FwaV9yYXdfYW5vbnltb3VzCisgICAgQGV4cG9zZV9hcGlf
cmF3X2Fub255bW91c19hbmRfc2Vzc2lvbmxlc3MKICAgICBkZWYgc2VhcmNoKCBzZWxmLCB0cmFu
cywgc2VhcmNoX3Rlcm0sICoqa3dkICk6CiAgICAgICAgICIiIj0yMAogICAgICAgICBQZXJmb3Jt
IGEgc2VhcmNoIG92ZXIgdGhlIFdob29zaCBpbmRleC49MjAKQEAgLTQ2LDcgKzQ1LDcgQEAKICAg
ICAgICAgcmVzdWx0cyA9M0QgcmVwb19zZWFyY2guc2VhcmNoKCB0cmFucywgc2VhcmNoX3Rlcm0s
IHBhZ2UgKQogICAgICAgICByZXN1bHRzWyAnaG9zdG5hbWUnIF0gPTNEIHVybF9mb3IoICcvJywg
cXVhbGlmaWVkID0zRCBUcnVlICkKPTIwCi0gICAgICAgIGlmIGpzb25wOgorICAgICAgICBpZiBy
ZXR1cm5fanNvbnA6CiAgICAgICAgICAgICByZXNwb25zZSA9M0QgJyVzKCVzKTsnICUgKCBjYWxs
YmFjaywganNvbi5kdW1wcyggcmVzdWx0cyApICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHJlc3BvbnNlID0zRCBqc29uLmR1bXBzKCByZXN1bHRzICkKCgpodHRwczovL2JpdGJ1Y2tldC5v
cmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvOGQyNjIwZDE3MmIyLwpDaGFuZ2VzZXQ6
ICAgOGQyNjIwZDE3MmIyClVzZXI6ICAgICAgICBtYXJ0ZW5zb24KRGF0ZTogICAgICAgIDIwMTUt
MDItMjMgMTg6MjU6NDcrMDA6MDAKU3VtbWFyeTogICAgIHJlZmFjdG9yIFRTIGNhdGVnb3JpZXMg
QVBJCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgYzgyYjAxOGZjYWMxMjA5M2M3ZTNjMGRi
NjU1ODRlZjlmY2IxZDRmZiAtciA4ZDI2MjBkMTcyYjIzNzBlOTA1YjhiZD0KYzBjNGYwNGQwMzAw
NDQ2NjkgbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9hcGkvY2F0ZWdvcmllcy5weQotLS0g
YS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2FwaS9jYXRlZ29yaWVzLnB5CisrKyBiL2xp
Yi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvYXBpL2NhdGVnb3JpZXMucHkKQEAgLTMsNiArMywx
MSBAQAo9MjAKIGZyb20gZ2FsYXh5IGltcG9ydCB1dGlsCiBmcm9tIGdhbGF4eSBpbXBvcnQgd2Vi
Citmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucworZnJvbSBnYWxheHkud2ViIGltcG9ydCBy
ZXF1aXJlX2FkbWluIGFzIHJlcXVpcmVfYWRtaW4KK2Zyb20gZ2FsYXh5LndlYiBpbXBvcnQgX2Z1
dHVyZV9leHBvc2VfYXBpIGFzIGV4cG9zZV9hcGkKK2Zyb20gZ2FsYXh5LndlYiBpbXBvcnQgX2Z1
dHVyZV9leHBvc2VfYXBpX2Fub255bW91cyBhcyBleHBvc2VfYXBpX2Fub255bW91cworZnJvbSBn
YWxheHkud2ViIGltcG9ydCBfZnV0dXJlX2V4cG9zZV9hcGlfYW5vbnltb3VzX2FuZF9zZXNzaW9u
bGVzcyBhcyBleHA9Cm9zZV9hcGlfYW5vbnltb3VzX2FuZF9zZXNzaW9ubGVzcwogZnJvbSBnYWxh
eHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgQmFzZUFQSUNvbnRyb2xsZXIKIGltcG9ydCB0
b29sX3NoZWQudXRpbC5zaGVkX3V0aWxfY29tbW9uIGFzIHN1Ywo9MjAKQEAgLTE2LDYwICsyMSw1
OSBAQAogICAgICAgICB2YWx1ZV9tYXBwZXIgPTNEIHsgJ2lkJyA6IHRyYW5zLnNlY3VyaXR5LmVu
Y29kZV9pZCB9CiAgICAgICAgIHJldHVybiB2YWx1ZV9tYXBwZXIKPTIwCi0gICAgQHdlYi5leHBv
c2VfYXBpCisgICAgQGV4cG9zZV9hcGkKKyAgICBAcmVxdWlyZV9hZG1pbgogICAgIGRlZiBjcmVh
dGUoIHNlbGYsIHRyYW5zLCBwYXlsb2FkLCAqKmt3ZCApOgogICAgICAgICAiIiIKICAgICAgICAg
UE9TVCAvYXBpL2NhdGVnb3JpZXMKLSAgICAgICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgb2YgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIGNyZWF0ZWQgY2F0ZWdvcnkuCisgICAgICAgIFJldHVybiBhIGRp
Y3Rpb25hcnkgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNyZWF0ZWQgY2F0ZWdvcnkuCisgICAg
ICAgIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlIHBheWxvYWQ6
Cj0yMAotOiAgICAgICBwYXJhbSBrZXk6IHRoZSBjdXJyZW50IEdhbGF4eSBhZG1pbiB1c2VyJ3Mg
QVBJIGtleQotCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgaW5jbHVkZWQg
aW4gdGhlIHBheWxvYWQuCiAgICAgICAgIDpwYXJhbSBuYW1lIChyZXF1aXJlZCk6IHRoZSBuYW1l
IG9mIHRoZSBjYXRlZ29yeQogICAgICAgICA6cGFyYW0gZGVzY3JpcHRpb24gKG9wdGlvbmFsKTog
dGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjYXRlZ29yeSAoaWY9CiBub3QgcHJvdmlkZWQsIHRoZSBu
YW1lIHdpbGwgYmUgdXNlZCkKKworICAgICAgICBFeGFtcGxlOiBQT1NUIC9hcGkvY2F0ZWdvcmll
cy8/a2V5PTNEWFhYWVlZWFhYWVlZCisgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0t
ZGF0YTsgbmFtZT0zRCJuYW1lIiBDYXRlZ29yeV9OYW1lCisgICAgICAgIENvbnRlbnQtRGlzcG9z
aXRpb246IGZvcm0tZGF0YTsgbmFtZT0zRCJkZXNjcmlwdGlvbiIgQ2F0ZWdvcnlfRGVzYz0Kcmlw
dGlvbgogICAgICAgICAiIiIKLSAgICAgICAgY2F0ZWdvcnlfZGljdCA9M0QgZGljdCggbWVzc2Fn
ZSA9M0QgJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPTNEICdvaycg
KQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY3VycmVudCB1c2VyJ3MgQVBJIGtleSBwcm92ZXMg
aGUgaXMgYW4gYWRtaW4gdXNlciA9CmluIHRoaXMgVG9vbCBTaGVkLgotICAgICAgICBpZiB0cmFu
cy51c2VyX2lzX2FkbWluKCk6Ci0gICAgICAgICAgICAjIEdldCB0aGUgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGNhdGVnb3J5IHRvIGJlIGNyZWF0ZWQgZnJvbSB0aD0KZSBwYXlsb2FkLgotICAgICAg
ICAgICAgbmFtZSA9M0QgcGF5bG9hZC5nZXQoICduYW1lJywgJycgKQotICAgICAgICAgICAgaWYg
bmFtZToKLSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9M0QgcGF5bG9hZC5nZXQoICdkZXNj
cmlwdGlvbicsICcnICkKLSAgICAgICAgICAgICAgICBpZiBub3QgZGVzY3JpcHRpb246Ci0gICAg
ICAgICAgICAgICAgICAgICMgRGVmYXVsdCB0aGUgZGVzY3JpcHRpb24gdG8gdGhlIG5hbWUuCi0g
ICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0zRCBuYW1lCi0gICAgICAgICAgICAgICAg
aWYgc3VjLmdldF9jYXRlZ29yeV9ieV9uYW1lKCB0cmFucy5hcHAsIG5hbWUgKToKLSAgICAgICAg
ICAgICAgICAgICAgY2F0ZWdvcnlfZGljdFsgJ21lc3NhZ2UnIF0gPTNEICdBIGNhdGVnb3J5IHdp
dGggdGhhdCBuPQphbWUgYWxyZWFkeSBleGlzdHMnCi0gICAgICAgICAgICAgICAgICAgIGNhdGVn
b3J5X2RpY3RbICdzdGF0dXMnIF0gPTNEICdlcnJvcicKLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICAjIENyZWF0ZSB0aGUgY2F0ZWdvcnkKLSAgICAgICAgICAgICAg
ICAgICAgY2F0ZWdvcnkgPTNEIHRyYW5zLmFwcC5tb2RlbC5DYXRlZ29yeSggbmFtZT0zRG5hbWUs
IGRlPQpzY3JpcHRpb249M0RkZXNjcmlwdGlvbiApCi0gICAgICAgICAgICAgICAgICAgIHRyYW5z
LnNhX3Nlc3Npb24uYWRkKCBjYXRlZ29yeSApCi0gICAgICAgICAgICAgICAgICAgIHRyYW5zLnNh
X3Nlc3Npb24uZmx1c2goKQotICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9kaWN0ID0zRCBj
YXRlZ29yeS50b19kaWN0KCB2aWV3PTNEJ2VsZW1lbnQnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfbWFwcGVyPTNEc2VsZi49Cl9f
Z2V0X3ZhbHVlX21hcHBlciggdHJhbnMgKSApCi0gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5
X2RpY3RbICdtZXNzYWdlJyBdID0zRCAiQ2F0ZWdvcnkgJyVzJyBoYXMgYmVlbj0KIGNyZWF0ZWQi
ICUgc3RyKCBjYXRlZ29yeS5uYW1lICkKLSAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfZGlj
dFsgJ3VybCcgXSA9M0Qgd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnPQpjYXRlZ29yaWVzJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhY3Rpb249M0Qnc2hvdycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWQ9M0R0cmFucy5zZWN1cj0KaXR5LmVuY29kZV9pZCggY2F0
ZWdvcnkuaWQgKSApCisgICAgICAgIGNhdGVnb3J5X2RpY3QgPTNEIGRpY3QoIG1lc3NhZ2UgPTNE
ICcnLCBzdGF0dXMgPTNEICdvaycgKQorICAgICAgICBuYW1lID0zRCBwYXlsb2FkLmdldCggJ25h
bWUnLCAnJyApCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9M0Qg
cGF5bG9hZC5nZXQoICdkZXNjcmlwdGlvbicsICcnICkKKyAgICAgICAgICAgIGlmIG5vdCBkZXNj
cmlwdGlvbjoKKyAgICAgICAgICAgICAgICAjIERlZmF1bHQgdGhlIGRlc2NyaXB0aW9uIHRvIHRo
ZSBuYW1lLgorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0zRCBuYW1lCisgICAgICAgICAg
ICBpZiBzdWMuZ2V0X2NhdGVnb3J5X2J5X25hbWUoIHRyYW5zLmFwcCwgbmFtZSApOgorICAgICAg
ICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29uZmxpY3QoICdBIGNhdGVnb3J5IHdpdGggdGhh
dCBuYW1lIGFscmU9CmFkeSBleGlzdHMuJyApCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIGNhdGVnb3J5X2RpY3RbICdtZXNzYWdlJyBdID0zRCAiTWlzc2luZyByZXF1aXJlZCBw
YXJhbWV0ZXI9CiAnbmFtZScuIgotICAgICAgICAgICAgICAgIGNhdGVnb3J5X2RpY3RbICdzdGF0
dXMnIF0gPTNEICdlcnJvcicKKyAgICAgICAgICAgICAgICAjIENyZWF0ZSB0aGUgY2F0ZWdvcnkK
KyAgICAgICAgICAgICAgICBjYXRlZ29yeSA9M0QgdHJhbnMuYXBwLm1vZGVsLkNhdGVnb3J5KCBu
YW1lPTNEbmFtZSwgZGVzY3JpPQpwdGlvbj0zRGRlc2NyaXB0aW9uICkKKyAgICAgICAgICAgICAg
ICB0cmFucy5zYV9zZXNzaW9uLmFkZCggY2F0ZWdvcnkgKQorICAgICAgICAgICAgICAgIHRyYW5z
LnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5X2RpY3QgPTNEIGNh
dGVnb3J5LnRvX2RpY3QoIHZpZXc9M0QnZWxlbWVudCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX21hcHBlcj0zRHNlbGYuX19nZT0KdF92
YWx1ZV9tYXBwZXIoIHRyYW5zICkgKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5X2RpY3RbICdt
ZXNzYWdlJyBdID0zRCAiQ2F0ZWdvcnkgJyVzJyBoYXMgYmVlbiBjcmU9CmF0ZWQiICUgc3RyKCBj
YXRlZ29yeS5uYW1lICkKKyAgICAgICAgICAgICAgICBjYXRlZ29yeV9kaWN0WyAndXJsJyBdID0z
RCB3ZWIudXJsX2ZvciggY29udHJvbGxlcj0zRCdjYXRlPQpnb3JpZXMnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ3Nob3cn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWQ9M0R0cmFucy5zZWN1cml0eS49CmVuY29kZV9pZCggY2F0ZWdvcnkuaWQgKSApCiAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBjYXRlZ29yeV9kaWN0WyAnbWVzc2FnZScgXSA9M0QgJ1lvdSBh
cmUgbm90IGF1dGhvcml6ZWQgdG8gY3JlYT0KdGUgYSBjYXRlZ29yeSBpbiB0aGlzIFRvb2wgU2hl
ZC4nCi0gICAgICAgICAgICBjYXRlZ29yeV9kaWN0WyAnc3RhdHVzJyBdID0zRCAnZXJyb3InCisg
ICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlJlcXVlc3RQYXJhbWV0ZXJNaXNzaW5nRXhjZXB0
aW9uKCAnTWlzc2luZyByZT0KcXVpcmVkIHBhcmFtZXRlciAibmFtZSIuJyApCiAgICAgICAgIHJl
dHVybiBjYXRlZ29yeV9kaWN0Cj0yMAotICAgIEB3ZWIuZXhwb3NlX2FwaV9hbm9ueW1vdXMKKyAg
ICBAZXhwb3NlX2FwaV9hbm9ueW1vdXNfYW5kX3Nlc3Npb25sZXNzCiAgICAgZGVmIGluZGV4KCBz
ZWxmLCB0cmFucywgZGVsZXRlZD0zREZhbHNlLCAqKmt3ZCApOgogICAgICAgICAiIiIKICAgICAg
ICAgR0VUIC9hcGkvY2F0ZWdvcmllcwotICAgICAgICBSZXR1cm5zIGEgbGlzdCBvZiBkaWN0aW9u
YXJpZXMgdGhhdCBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGVhY2g9CiBjYXRlZ29yeS4KKyAg
ICAgICAgUmV0dXJuIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgdGhhdCBjb250YWluIGluZm9ybWF0
aW9uIGFib3V0IGVhY2ggPQpDYXRlZ29yeS4KKyAgICAgICA9MjAKKyAgICAgICAgOnBhcmFtIGRl
bGV0ZWQ6IGZsYWcgdXNlZCB0byBpbmNsdWRlIGRlbGV0ZWQgY2F0ZWdvcmllcworCisgICAgICAg
IEV4YW1wbGU6IEdFVCBsb2NhbGhvc3Q6OTAwOS9hcGkvY2F0ZWdvcmllcwogICAgICAgICAiIiIK
LSAgICAgICAgIyBFeGFtcGxlIFVSTDogaHR0cDovL2xvY2FsaG9zdDo5MDA5L2FwaS9jYXRlZ29y
aWVzCiAgICAgICAgIGNhdGVnb3J5X2RpY3RzID0zRCBbXQogICAgICAgICBkZWxldGVkID0zRCB1
dGlsLmFzYm9vbCggZGVsZXRlZCApCisgICAgICAgIGlmIGRlbGV0ZWQgYW5kIG5vdCB0cmFucy51
c2VyX2lzX2FkbWluKCk6CisgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkFkbWluUmVxdWly
ZWRFeGNlcHRpb24oICdPbmx5IGFkbWluaXN0cmF0b3JzID0KY2FuIHF1ZXJ5IGRlbGV0ZWQgY2F0
ZWdvcmllcy4nICkKICAgICAgICAgZm9yIGNhdGVnb3J5IGluIHRyYW5zLnNhX3Nlc3Npb24ucXVl
cnkoIHRyYW5zLmFwcC5tb2RlbC5DYXRlZ29yeSApPQogXAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoIHRyYW5zLmFwcC5tb2RlbC5DYXRlZ29yeS49CnRh
YmxlLmMuZGVsZXRlZCA9M0Q9M0QgZGVsZXRlZCApIFwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAub3JkZXJfYnkoIHRyYW5zLmFwcC5tb2RlbC5DYXRlZ29yPQp5LnRh
YmxlLmMubmFtZSApOgpAQCAtODEsMTUgKzg1LDE2IEBACiAgICAgICAgICAgICBjYXRlZ29yeV9k
aWN0cy5hcHBlbmQoIGNhdGVnb3J5X2RpY3QgKQogICAgICAgICByZXR1cm4gY2F0ZWdvcnlfZGlj
dHMKPTIwCi0gICAgQHdlYi5leHBvc2VfYXBpX2Fub255bW91cworICAgIEBleHBvc2VfYXBpX2Fu
b255bW91c19hbmRfc2Vzc2lvbmxlc3MKICAgICBkZWYgc2hvdyggc2VsZiwgdHJhbnMsIGlkLCAq
Kmt3ZCApOgogICAgICAgICAiIiIKICAgICAgICAgR0VUIC9hcGkvY2F0ZWdvcmllcy97ZW5jb2Rl
ZF9jYXRlZ29yeV9pZH0KLSAgICAgICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgb2YgaW5mb3JtYXRp
b24gYWJvdXQgYSBjYXRlZ29yeS4KKyAgICAgICAgUmV0dXJuIGEgZGljdGlvbmFyeSBvZiBpbmZv
cm1hdGlvbiBhYm91dCBhIGNhdGVnb3J5Lgo9MjAKLSAgICAgICAgOnBhcmFtIGlkOiB0aGUgZW5j
b2RlZCBpZCBvZiB0aGUgUmVwb3NpdG9yeSBvYmplY3QKKyAgICAgICAgOnBhcmFtIGlkOiB0aGUg
ZW5jb2RlZCBpZCBvZiB0aGUgQ2F0ZWdvcnkgb2JqZWN0CisgICAgICAgPTIwCisgICAgICAgIEV4
YW1wbGU6IEdFVCBsb2NhbGhvc3Q6OTAwOS9hcGkvY2F0ZWdvcmllcy9mOWNhZDdiMDFhNDcyMTM1
CiAgICAgICAgICIiIgotICAgICAgICAjIEV4YW1wbGUgVVJMOiBodHRwOi8vbG9jYWxob3N0Ojkw
MDkvYXBpL2NhdGVnb3JpZXMvZjljYWQ3YjAxYTQ3MjE9CjM1CiAgICAgICAgIGNhdGVnb3J5ID0z
RCBzdWMuZ2V0X2NhdGVnb3J5KCB0cmFucy5hcHAsIGlkICkKICAgICAgICAgaWYgY2F0ZWdvcnkg
aXMgTm9uZToKICAgICAgICAgICAgIGNhdGVnb3J5X2RpY3QgPTNEIGRpY3QoIG1lc3NhZ2UgPTNE
ICdVbmFibGUgdG8gbG9jYXRlIGNhdGVnb3J5PQogcmVjb3JkIGZvciBpZCAlcy4nICUgKCBzdHIo
IGlkICkgKSwKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2Nv
bW1pdHMvOTM1YTYxOGQ3NzRlLwpDaGFuZ2VzZXQ6ICAgOTM1YTYxOGQ3NzRlClVzZXI6ICAgICAg
ICBtYXJ0ZW5zb24KRGF0ZTogICAgICAgIDIwMTUtMDItMjMgMTg6NTM6MTMrMDA6MDAKU3VtbWFy
eTogICAgIGZpeCBlcnJvciBwcmV2ZW50aW5nIGNoYW5nZSBvZiB1c2VybmFtZSBpbiBUUwpBZmZl
Y3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDhkMjYyMGQxNzJiMjM3MGU5MDViOGJkYzBjNGYwNGQw
MzAwNDQ2NjkgLXIgOTM1YTYxOGQ3NzRlN2I3YzQzOTU2NzI9CjIyNTA3ZjBkMTgwNGJhNTFjIHRl
bXBsYXRlcy91c2VyL2luZm8ubWFrbwotLS0gYS90ZW1wbGF0ZXMvdXNlci9pbmZvLm1ha28KKysr
IGIvdGVtcGxhdGVzL3VzZXIvaW5mby5tYWtvCkBAIC05OSwxMyArOTksMTMgQEAKICAgICAgICAg
ICAgICAgICA8bGFiZWw+UHVibGljIG5hbWU6PC9sYWJlbD4KICAgICAgICAgICAgICAgICAlaWYg
dC53ZWJhcHAubmFtZSA9M0Q9M0QgJ3Rvb2xfc2hlZCc6CiAgICAgICAgICAgICAgICAgICAgICVp
ZiB1c2VyLmFjdGl2ZV9yZXBvc2l0b3JpZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aW5w
dXQgdHlwZT0zRCJoaWRkZW4iIG5hbWU9M0QidXNlcm5hbWUiIHZhbHVlPTNEIj0KJHt1c2VybmFt
ZSB8IGh9Ii8+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0zRCJoaWRkZW4i
IGlkPTNEIm5hbWVfaW5wdXQiIG5hbWU9M0QidT0Kc2VybmFtZSIgdmFsdWU9M0QiJHt1c2VybmFt
ZSB8IGh9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAke3VzZXJuYW1lIHwgaH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIgc3R5bGU9M0Qi
Y2xlYXI6IGJvdGg7PQoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3Qg
Y2hhbmdlIHlvdXIgcHVibGljIG5hbWUgYWZ0ZXIgeW91IGg9CmF2ZSBjcmVhdGVkIGEgcmVwb3Np
dG9yeSBpbiB0aGlzIHRvb2wgc2hlZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog
ICAgICAgICAgICAgICAgICAgICAlZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1
dCB0eXBlPTNEInRleHQiIG5hbWU9M0QidXNlcm5hbWUiIHNpemU9M0QiNDAiPQogdmFsdWU9M0Qi
JHt1c2VybmFtZSB8IGh9Ii8+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0z
RCJ0ZXh0IiBpZD0zRCJuYW1lX2lucHV0IiBuYW1lPTNEInVzZT0Kcm5hbWUiIHNpemU9M0QiNDAi
IHZhbHVlPTNEIiR7dXNlcm5hbWUgfCBofSIvPjxkaXYgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIg
PQpzdHlsZT0zRCJjbGVhcjogYm90aDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlv
dXIgcHVibGljIG5hbWUgcHJvdmlkZXMgYSBtZWFucyBvZiBpZGVudGlmeWk9Cm5nIHlvdSBwdWJs
aWNseSB3aXRoaW4gdGhpcyB0b29sIHNoZWQuIFB1YmxpYwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWVzIG11c3QgYmUgYXQgbGVhc3QgZm91ciBjaGFyYWN0ZXJzIGluIGxlbmc9CnRo
IGFuZCBjb250YWluIG9ubHkgbG93ZXItY2FzZSBsZXR0ZXJzLCBudW1iZXJzLAoKCmh0dHBzOi8v
Yml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9jODFiZWU0Yjc3NWYv
CkNoYW5nZXNldDogICBjODFiZWU0Yjc3NWYKVXNlcjogICAgICAgIGRhbm5vbgpEYXRlOiAgICAg
ICAgMjAxNS0wMi0yMyAyMDowNzo1OCswMDowMApTdW1tYXJ5OiAgICAgQnVnZml4IGZvciBjbGlj
a2luZyBjYW5jZWwgaW4gYSBtZW51IGFuZCBoYXZpbmcgdGhlIGFjdGlvbiBoYXA9CnBlbiBhbnl3
YXkuCkFmZmVjdGVkICM6ICAzIGZpbGVzCgpkaWZmIC1yIDkzNWE2MThkNzc0ZTdiN2M0Mzk1Njcy
MjI1MDdmMGQxODA0YmE1MWMgLXIgYzgxYmVlNGI3NzVmNTc4ZTQ1YWZiYTU9CmZhM2JmNjliYWY3
YTAxNzU4IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdWkvcG9wdXAtbWVudS5qcwotLS0gYS9j
bGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VpL3BvcHVwLW1lbnUuanMKKysrIGIvY2xpZW50L2dh
bGF4eS9zY3JpcHRzL212Yy91aS9wb3B1cC1tZW51LmpzCkBAIC01NSw4ICs1NSwxMSBAQAogICAg
ICAgICAgICAgICAgIGlmKCBvcHRpb24uZnVuYyApewogICAgICAgICAgICAgICAgICAgICAkKCB0
aGlzICkuY2hpbGRyZW4oICdhLnBvcHVwbWVudS1vcHRpb24nICkuY2xpY2soIGZ1bmM9CnRpb24o
IGV2ZW50ICl7CiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uZnVuYy5jYWxsKCBtZW51
LCBldmVudCwgb3B0aW9uICk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IHBy
ZXZlbnREZWZhdWx0IG90aGVyd2lzZSBjbGlja2luZyAiY2FuYz0KZWwiCisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBvbiBhIHB1cmdlIG9yIHNvbWV0aGluZyBzdGlsbCBuYXZpZ2F0ZXMgYW5k
IGNhdT0Kc2VzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYWN0aW9uLgorICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGJ1YmJsZSB1cCBzbyB0aGF0IGFuIG9wdGlvbiBjbGljayB3aWxsIGNhbGwg
dGhlPQogY2xvc2UgYmVoYXZpb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9KTsKCmRpZmYgLXIgOTM1YTYxOGQ3NzRlN2I3YzQzOTU2NzIyMjUwN2YwZDE4MDRiYTUx
YyAtciBjODFiZWU0Yjc3NWY1NzhlNDVhZmJhNT0KZmEzYmY2OWJhZjdhMDE3NTggc3RhdGljL3Nj
cmlwdHMvbXZjL3VpL3BvcHVwLW1lbnUuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL3VpL3Bv
cHVwLW1lbnUuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL3VpL3BvcHVwLW1lbnUuanMKQEAg
LTU1LDggKzU1LDExIEBACiAgICAgICAgICAgICAgICAgaWYoIG9wdGlvbi5mdW5jICl7CiAgICAg
ICAgICAgICAgICAgICAgICQoIHRoaXMgKS5jaGlsZHJlbiggJ2EucG9wdXBtZW51LW9wdGlvbicg
KS5jbGljayggZnVuYz0KdGlvbiggZXZlbnQgKXsKICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbi5mdW5jLmNhbGwoIG1lbnUsIGV2ZW50LCBvcHRpb24gKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFdlIG11c3QgcHJldmVudERlZmF1bHQgb3RoZXJ3aXNlIGNsaWNraW5nICJjYW5j
PQplbCIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIGEgcHVyZ2Ugb3Igc29tZXRoaW5n
IHN0aWxsIG5hdmlnYXRlcyBhbmQgY2F1PQpzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSBhY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnViYmxlIHVwIHNvIHRoYXQgYW4gb3B0
aW9uIGNsaWNrIHdpbGwgY2FsbCB0aGU9CiBjbG9zZSBiZWhhdmlvcgotICAgICAgICAgICAgICAg
ICAgICAgICAgLy9yZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwoKZGlmZiAtciA5MzVhNjE4ZDc3NGU3YjdjNDM5
NTY3MjIyNTA3ZjBkMTgwNGJhNTFjIC1yIGM4MWJlZTRiNzc1ZjU3OGU0NWFmYmE1PQpmYTNiZjY5
YmFmN2EwMTc1OCBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3VpL3BvcHVwLW1lbnUuanMKLS0t
IGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy91aS9wb3B1cC1tZW51LmpzCisrKyBiL3N0YXRp
Yy9zY3JpcHRzL3BhY2tlZC9tdmMvdWkvcG9wdXAtbWVudS5qcwpAQCAtMSwxICsxLDEgQEAKLWRl
ZmluZShbXSxmdW5jdGlvbigpe3ZhciBhPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxp
emU6ZnVuY3Rpb24oZCxjPQope3RoaXMuJGJ1dHRvbj0zRGQ7aWYoIXRoaXMuJGJ1dHRvbi5zaXpl
KCkpe3RoaXMuJGJ1dHRvbj0zRCQoIjxkaXYvPiIpfXRoaXM9Ci5vcHRpb25zPTNEY3x8W107dmFy
IGU9M0R0aGlzO3RoaXMuJGJ1dHRvbi5jbGljayhmdW5jdGlvbihmKXskKCIucG9wbWVudS13cj0K
YXBwZXIiKS5yZW1vdmUoKTtlLl9yZW5kZXJBbmRTaG93KGYpO3JldHVybiBmYWxzZX0pfSxfcmVu
ZGVyQW5kU2hvdzpmdW5jdGlvPQpuKGMpe3RoaXMucmVuZGVyKCk7dGhpcy4kZWwuYXBwZW5kVG8o
ImJvZHkiKS5jc3ModGhpcy5fZ2V0U2hvd25Qb3NpdGlvbihjKSk9Ci5zaG93KCk7dGhpcy5fc2V0
VXBDbG9zZUJlaGF2aW9yKCl9LHJlbmRlcjpmdW5jdGlvbigpe3RoaXMuJGVsLmFkZENsYXNzKCJw
bz0KcG1lbnUtd3JhcHBlciIpLmhpZGUoKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9KS5odG1s
KHRoaXMudGVtcGxhdGUodGhpcy4kPQpidXR0b24uYXR0cigiaWQiKSx0aGlzLm9wdGlvbnMpKTtp
Zih0aGlzLm9wdGlvbnMubGVuZ3RoKXt2YXIgYz0zRHRoaXM7dGhpcy49CiRlbC5maW5kKCJsaSIp
LmVhY2goZnVuY3Rpb24oZSxkKXt2YXIgZj0zRGMub3B0aW9uc1tlXTtpZihmLmZ1bmMpeyQodGhp
cykuYz0KaGlsZHJlbigiYS5wb3B1cG1lbnUtb3B0aW9uIikuY2xpY2soZnVuY3Rpb24oZyl7Zi5m
dW5jLmNhbGwoYyxnLGYpfSl9fSl9cmV0PQp1cm4gdGhpc30sdGVtcGxhdGU6ZnVuY3Rpb24oZCxj
KXtyZXR1cm5bJzx1bCBpZD0zRCInLGQsJy1tZW51IiBjbGFzcz0zRCJkcm89CnBkb3duLW1lbnUi
PicsdGhpcy5fdGVtcGxhdGVPcHRpb25zKGMpLCI8L3VsPiJdLmpvaW4oIiIpfSxfdGVtcGxhdGVP
cHRpb25zOj0KZnVuY3Rpb24oYyl7aWYoIWMubGVuZ3RoKXtyZXR1cm4iPGxpPihubyBvcHRpb25z
KTwvbGk+In1yZXR1cm4gXy5tYXAoYyxmdW5jPQp0aW9uKGYpe2lmKGYuZGl2aWRlcil7cmV0dXJu
JzxsaSBjbGFzcz0zRCJkaXZpZGVyIj48L2xpPid9ZWxzZXtpZihmLmhlYWRlcik9CntyZXR1cm5b
JzxsaSBjbGFzcz0zRCJoZWFkIj48YSBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiPicsZi5o
dG1sLCI8L2E+PD0KL2xpPiJdLmpvaW4oIiIpfX12YXIgZT0zRGYuaHJlZnx8ImphdmFzY3JpcHQ6
dm9pZCgwKTsiLGc9M0QoZi50YXJnZXQpPygnIHRhPQpyZ2V0PTNEIicrZi50YXJnZXQrJyInKToo
IiIpLGQ9M0QoZi5jaGVja2VkKT8oJzxzcGFuIGNsYXNzPTNEImZhIGZhLWNoZWNrIj49Cjwvc3Bh
bj4nKTooIiIpO3JldHVyblsnPGxpPjxhIGNsYXNzPTNEInBvcHVwbWVudS1vcHRpb24iIGhyZWY9
M0QiJyxlLCciJyxnLD0KIj4iLGQsZi5odG1sLCI8L2E+PC9saT4iXS5qb2luKCIiKX0pLmpvaW4o
IiIpfSxfZ2V0U2hvd25Qb3NpdGlvbjpmdW5jdGlvbihkPQope3ZhciBlPTNEdGhpcy4kZWwud2lk
dGgoKTt2YXIgYz0zRGQucGFnZVgtZS8yO2M9M0RNYXRoLm1pbihjLCQoZG9jdW1lbnQpLnM9CmNy
b2xsTGVmdCgpKyQod2luZG93KS53aWR0aCgpLWUtNSk7Yz0zRE1hdGgubWF4KGMsJChkb2N1bWVu
dCkuc2Nyb2xsTGVmdCgpKz0KNSk7cmV0dXJue3RvcDpkLnBhZ2VZLGxlZnQ6Y319LF9zZXRVcENs
b3NlQmVoYXZpb3I6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXM7PQpmdW5jdGlvbiBjKGcpeyQoZG9j
dW1lbnQpLm9mZigiY2xpY2suY2xvc2VfcG9wdXAiKTtpZih3aW5kb3cucGFyZW50IT0zRD0zRHc9
CmluZG93KXt0cnl7JCh3aW5kb3cucGFyZW50LmRvY3VtZW50KS5vZmYoImNsaWNrLmNsb3NlX3Bv
cHVwIil9Y2F0Y2goZil7fX1lbD0Kc2V7dHJ5eyQoImlmcmFtZSNnYWxheHlfbWFpbiIpLmNvbnRl
bnRzKCkub2ZmKCJjbGljay5jbG9zZV9wb3B1cCIpfWNhdGNoKGYpPQp7fX1lLnJlbW92ZSgpfSQo
Imh0bWwiKS5vbmUoImNsaWNrLmNsb3NlX3BvcHVwIixjKTtpZih3aW5kb3cucGFyZW50IT0zRD0z
RHc9CmluZG93KXt0cnl7JCh3aW5kb3cucGFyZW50LmRvY3VtZW50KS5maW5kKCJodG1sIikub25l
KCJjbGljay5jbG9zZV9wb3B1cCIsYz0KKX1jYXRjaChkKXt9fWVsc2V7dHJ5eyQoImlmcmFtZSNn
YWxheHlfbWFpbiIpLmNvbnRlbnRzKCkub25lKCJjbGljay5jbG9zZV9wPQpvcHVwIixjKX1jYXRj
aChkKXt9fX0sYWRkSXRlbTpmdW5jdGlvbihkLGMpe2M9M0QoYz49M0QwKT9jOnRoaXMub3B0aW9u
cy5sZW49Cmd0aDt0aGlzLm9wdGlvbnMuc3BsaWNlKGMsMCxkKTtyZXR1cm4gdGhpc30scmVtb3Zl
SXRlbTpmdW5jdGlvbihjKXtpZihjPj0zRD0KMCl7dGhpcy5vcHRpb25zLnNwbGljZShjLDEpfXJl
dHVybiB0aGlzfSxmaW5kSW5kZXhCeUh0bWw6ZnVuY3Rpb24oZCl7Zm9yKHZhPQpyIGM9M0QwO2M8
dGhpcy5vcHRpb25zLmxlbmd0aDtjKyspe2lmKF8uaGFzKHRoaXMub3B0aW9uc1tjXSwiaHRtbCIp
JiYodGhpcy49Cm9wdGlvbnNbY10uaHRtbD0zRD0zRD0zRGQpKXtyZXR1cm4gY319cmV0dXJuIG51
bGx9LGZpbmRJdGVtQnlIdG1sOmZ1bmN0aW9uKD0KYyl7cmV0dXJuIHRoaXMub3B0aW9uc1sodGhp
cy5maW5kSW5kZXhCeUh0bWwoYykpXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1PQpybiJQb3B1
cE1lbnUifX0pO2EuY3JlYXRlPTNEZnVuY3Rpb24gYihkLGMpe3JldHVybiBuZXcgYShkLGMpfTth
Lm1ha2VfcG9wdXA9Cm1lbnU9M0RmdW5jdGlvbihkLGUpe3ZhciBjPTNEW107Xy5lYWNoKGUsZnVu
Y3Rpb24oaCxmKXt2YXIgZz0zRHtodG1sOmZ9O2lmKD0KaD0zRD0zRD0zRG51bGwpe2cuaGVhZGVy
PTNEdHJ1ZX1lbHNle2lmKGpRdWVyeS50eXBlKGgpPTNEPTNEPTNEImZ1bmN0aW9uIil7PQpnLmZ1
bmM9M0RofX1jLnB1c2goZyl9KTtyZXR1cm4gbmV3IGEoJChkKSxjKX07YS5jb252ZXJ0TGlua3NU
b09wdGlvbnM9M0RmdW49CmN0aW9uKGUsYyl7ZT0zRCQoZSk7Yz0zRGN8fCJhIjt2YXIgZD0zRFtd
O2UuZmluZChjKS5lYWNoKGZ1bmN0aW9uKGosZyl7dmFyID0KaD0zRHt9LGY9M0QkKGopO2guaHRt
bD0zRGYudGV4dCgpO2lmKGYuYXR0cigiaHJlZiIpKXt2YXIgbD0zRGYuYXR0cigiaHJlZiIpPQos
bT0zRGYuYXR0cigidGFyZ2V0Iiksaz0zRGYuYXR0cigiY29uZmlybSIpO2guZnVuYz0zRGZ1bmN0
aW9uKCl7aWYoKGspJiYoIWM9Cm9uZmlybShrKSkpe3JldHVybn1zd2l0Y2gobSl7Y2FzZSJfcGFy
ZW50Ijp3aW5kb3cucGFyZW50LmxvY2F0aW9uPTNEbDticmVhaz0KO2Nhc2UiX3RvcCI6d2luZG93
LnRvcC5sb2NhdGlvbj0zRGw7YnJlYWs7ZGVmYXVsdDp3aW5kb3cubG9jYXRpb249M0RsfX19ZC5w
PQp1c2goaCl9KTtyZXR1cm4gZH07YS5mcm9tRXhpc3RpbmdEb209M0RmdW5jdGlvbihmLGUsYyl7
Zj0zRCQoZik7ZT0zRCQoZSk7dmE9CnIgZD0zRGEuY29udmVydExpbmtzVG9PcHRpb25zKGUsYyk7
ZS5yZW1vdmUoKTtyZXR1cm4gbmV3IGEoZixkKX07YS5tYWtlX3BvcD0KdXBfbWVudXM9M0RmdW5j
dGlvbihlLGQsZil7ZT0zRGV8fGRvY3VtZW50O2Q9M0RkfHwiZGl2W3BvcHVwbWVudV0iO2Y9M0Rm
fHxmPQp1bmN0aW9uKGcsaCl7cmV0dXJuIiMiK2cuYXR0cigicG9wdXBtZW51Iil9O3ZhciBjPTNE
W107JChlKS5maW5kKGQpLmVhY2goZnU9Cm5jdGlvbigpe3ZhciBnPTNEJCh0aGlzKSxoPTNEJChl
KS5maW5kKGYoZyxlKSk7Yy5wdXNoKGEuZnJvbURvbShoLGcpKTtoLmFkZD0KQ2xhc3MoInBvcHVw
Iil9KTtyZXR1cm4gY307cmV0dXJuIGF9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitk
ZWZpbmUoW10sZnVuY3Rpb24oKXt2YXIgYT0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFs
aXplOmZ1bmN0aW9uKGQsYz0KKXt0aGlzLiRidXR0b249M0RkO2lmKCF0aGlzLiRidXR0b24uc2l6
ZSgpKXt0aGlzLiRidXR0b249M0QkKCI8ZGl2Lz4iKX10aGlzPQoub3B0aW9ucz0zRGN8fFtdO3Zh
ciBlPTNEdGhpczt0aGlzLiRidXR0b24uY2xpY2soZnVuY3Rpb24oZil7JCgiLnBvcG1lbnUtd3I9
CmFwcGVyIikucmVtb3ZlKCk7ZS5fcmVuZGVyQW5kU2hvdyhmKTtyZXR1cm4gZmFsc2V9KX0sX3Jl
bmRlckFuZFNob3c6ZnVuY3Rpbz0KbihjKXt0aGlzLnJlbmRlcigpO3RoaXMuJGVsLmFwcGVuZFRv
KCJib2R5IikuY3NzKHRoaXMuX2dldFNob3duUG9zaXRpb24oYykpPQouc2hvdygpO3RoaXMuX3Nl
dFVwQ2xvc2VCZWhhdmlvcigpfSxyZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLiRlbC5hZGRDbGFzcygi
cG89CnBtZW51LXdyYXBwZXIiKS5oaWRlKCkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUifSkuaHRt
bCh0aGlzLnRlbXBsYXRlKHRoaXMuJD0KYnV0dG9uLmF0dHIoImlkIiksdGhpcy5vcHRpb25zKSk7
aWYodGhpcy5vcHRpb25zLmxlbmd0aCl7dmFyIGM9M0R0aGlzO3RoaXMuPQokZWwuZmluZCgibGki
KS5lYWNoKGZ1bmN0aW9uKGUsZCl7dmFyIGY9M0RjLm9wdGlvbnNbZV07aWYoZi5mdW5jKXskKHRo
aXMpLmM9CmhpbGRyZW4oImEucG9wdXBtZW51LW9wdGlvbiIpLmNsaWNrKGZ1bmN0aW9uKGcpe2Yu
ZnVuYy5jYWxsKGMsZyxmKTtnLnByZXZlbj0KdERlZmF1bHQoKX0pfX0pfXJldHVybiB0aGlzfSx0
ZW1wbGF0ZTpmdW5jdGlvbihkLGMpe3JldHVyblsnPHVsIGlkPTNEIicsZCwnPQotbWVudSIgY2xh
c3M9M0QiZHJvcGRvd24tbWVudSI+Jyx0aGlzLl90ZW1wbGF0ZU9wdGlvbnMoYyksIjwvdWw+Il0u
am9pbigiIik9Cn0sX3RlbXBsYXRlT3B0aW9uczpmdW5jdGlvbihjKXtpZighYy5sZW5ndGgpe3Jl
dHVybiI8bGk+KG5vIG9wdGlvbnMpPC9saT4ifT0KcmV0dXJuIF8ubWFwKGMsZnVuY3Rpb24oZil7
aWYoZi5kaXZpZGVyKXtyZXR1cm4nPGxpIGNsYXNzPTNEImRpdmlkZXIiPjwvbGk+PQonfWVsc2V7
aWYoZi5oZWFkZXIpe3JldHVyblsnPGxpIGNsYXNzPTNEImhlYWQiPjxhIGhyZWY9M0QiamF2YXNj
cmlwdDp2b2lkKDA9Cik7Ij4nLGYuaHRtbCwiPC9hPjwvbGk+Il0uam9pbigiIil9fXZhciBlPTNE
Zi5ocmVmfHwiamF2YXNjcmlwdDp2b2lkKDApOyIsZz0KPTNEKGYudGFyZ2V0KT8oJyB0YXJnZXQ9
M0QiJytmLnRhcmdldCsnIicpOigiIiksZD0zRChmLmNoZWNrZWQpPygnPHNwYW4gY2xhPQpzcz0z
RCJmYSBmYS1jaGVjayI+PC9zcGFuPicpOigiIik7cmV0dXJuWyc8bGk+PGEgY2xhc3M9M0QicG9w
dXBtZW51LW9wdGlvbiI9CiBocmVmPTNEIicsZSwnIicsZywiPiIsZCxmLmh0bWwsIjwvYT48L2xp
PiJdLmpvaW4oIiIpfSkuam9pbigiIil9LF9nZXRTaG93bj0KUG9zaXRpb246ZnVuY3Rpb24oZCl7
dmFyIGU9M0R0aGlzLiRlbC53aWR0aCgpO3ZhciBjPTNEZC5wYWdlWC1lLzI7Yz0zRE1hdGguPQpt
aW4oYywkKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkrJCh3aW5kb3cpLndpZHRoKCktZS01KTtjPTNE
TWF0aC5tYXgoYywkKGRvY3U9Cm1lbnQpLnNjcm9sbExlZnQoKSs1KTtyZXR1cm57dG9wOmQucGFn
ZVksbGVmdDpjfX0sX3NldFVwQ2xvc2VCZWhhdmlvcjpmdW5jdD0KaW9uKCl7dmFyIGU9M0R0aGlz
O2Z1bmN0aW9uIGMoZyl7JChkb2N1bWVudCkub2ZmKCJjbGljay5jbG9zZV9wb3B1cCIpO2lmKHdp
PQpuZG93LnBhcmVudCE9M0Q9M0R3aW5kb3cpe3RyeXskKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQp
Lm9mZigiY2xpY2suY2xvc2VfcG89CnB1cCIpfWNhdGNoKGYpe319ZWxzZXt0cnl7JCgiaWZyYW1l
I2dhbGF4eV9tYWluIikuY29udGVudHMoKS5vZmYoImNsaWNrLmNsbz0Kc2VfcG9wdXAiKX1jYXRj
aChmKXt9fWUucmVtb3ZlKCl9JCgiaHRtbCIpLm9uZSgiY2xpY2suY2xvc2VfcG9wdXAiLGMpO2lm
KHdpPQpuZG93LnBhcmVudCE9M0Q9M0R3aW5kb3cpe3RyeXskKHdpbmRvdy5wYXJlbnQuZG9jdW1l
bnQpLmZpbmQoImh0bWwiKS5vbmUoImM9CmxpY2suY2xvc2VfcG9wdXAiLGMpfWNhdGNoKGQpe319
ZWxzZXt0cnl7JCgiaWZyYW1lI2dhbGF4eV9tYWluIikuY29udGVudHMoKT0KLm9uZSgiY2xpY2su
Y2xvc2VfcG9wdXAiLGMpfWNhdGNoKGQpe319fSxhZGRJdGVtOmZ1bmN0aW9uKGQsYyl7Yz0zRChj
Pj0zRDApPQo/Yzp0aGlzLm9wdGlvbnMubGVuZ3RoO3RoaXMub3B0aW9ucy5zcGxpY2UoYywwLGQp
O3JldHVybiB0aGlzfSxyZW1vdmVJdGVtOmY9CnVuY3Rpb24oYyl7aWYoYz49M0QwKXt0aGlzLm9w
dGlvbnMuc3BsaWNlKGMsMSl9cmV0dXJuIHRoaXN9LGZpbmRJbmRleEJ5SHRtbD0KOmZ1bmN0aW9u
KGQpe2Zvcih2YXIgYz0zRDA7Yzx0aGlzLm9wdGlvbnMubGVuZ3RoO2MrKyl7aWYoXy5oYXModGhp
cy5vcHRpb25zPQpbY10sImh0bWwiKSYmKHRoaXMub3B0aW9uc1tjXS5odG1sPTNEPTNEPTNEZCkp
e3JldHVybiBjfX1yZXR1cm4gbnVsbH0sZmluZEk9CnRlbUJ5SHRtbDpmdW5jdGlvbihjKXtyZXR1
cm4gdGhpcy5vcHRpb25zWyh0aGlzLmZpbmRJbmRleEJ5SHRtbChjKSldfSx0b1N0cj0KaW5nOmZ1
bmN0aW9uKCl7cmV0dXJuIlBvcHVwTWVudSJ9fSk7YS5jcmVhdGU9M0RmdW5jdGlvbiBiKGQsYyl7
cmV0dXJuIG5ldyBhPQooZCxjKX07YS5tYWtlX3BvcHVwbWVudT0zRGZ1bmN0aW9uKGQsZSl7dmFy
IGM9M0RbXTtfLmVhY2goZSxmdW5jdGlvbihoLGYpe3Y9CmFyIGc9M0R7aHRtbDpmfTtpZihoPTNE
PTNEPTNEbnVsbCl7Zy5oZWFkZXI9M0R0cnVlfWVsc2V7aWYoalF1ZXJ5LnR5cGUoaCk9Cj0zRD0z
RD0zRCJmdW5jdGlvbiIpe2cuZnVuYz0zRGh9fWMucHVzaChnKX0pO3JldHVybiBuZXcgYSgkKGQp
LGMpfTthLmNvbnZlcj0KdExpbmtzVG9PcHRpb25zPTNEZnVuY3Rpb24oZSxjKXtlPTNEJChlKTtj
PTNEY3x8ImEiO3ZhciBkPTNEW107ZS5maW5kKGMpLmVhPQpjaChmdW5jdGlvbihqLGcpe3ZhciBo
PTNEe30sZj0zRCQoaik7aC5odG1sPTNEZi50ZXh0KCk7aWYoZi5hdHRyKCJocmVmIikpe3Y9CmFy
IGw9M0RmLmF0dHIoImhyZWYiKSxtPTNEZi5hdHRyKCJ0YXJnZXQiKSxrPTNEZi5hdHRyKCJjb25m
aXJtIik7aC5mdW5jPTNEZj0KdW5jdGlvbigpe2lmKChrKSYmKCFjb25maXJtKGspKSl7cmV0dXJu
fXN3aXRjaChtKXtjYXNlIl9wYXJlbnQiOndpbmRvdy5wYXJlPQpudC5sb2NhdGlvbj0zRGw7YnJl
YWs7Y2FzZSJfdG9wIjp3aW5kb3cudG9wLmxvY2F0aW9uPTNEbDticmVhaztkZWZhdWx0OndpbmQ9
Cm93LmxvY2F0aW9uPTNEbH19fWQucHVzaChoKX0pO3JldHVybiBkfTthLmZyb21FeGlzdGluZ0Rv
bT0zRGZ1bmN0aW9uKGYsZSxjKT0Ke2Y9M0QkKGYpO2U9M0QkKGUpO3ZhciBkPTNEYS5jb252ZXJ0
TGlua3NUb09wdGlvbnMoZSxjKTtlLnJlbW92ZSgpO3JldHVybiBuPQpldyBhKGYsZCl9O2EubWFr
ZV9wb3B1cF9tZW51cz0zRGZ1bmN0aW9uKGUsZCxmKXtlPTNEZXx8ZG9jdW1lbnQ7ZD0zRGR8fCJk
aXY9Cltwb3B1cG1lbnVdIjtmPTNEZnx8ZnVuY3Rpb24oZyxoKXtyZXR1cm4iIyIrZy5hdHRyKCJw
b3B1cG1lbnUiKX07dmFyIGM9M0RbXT0KOyQoZSkuZmluZChkKS5lYWNoKGZ1bmN0aW9uKCl7dmFy
IGc9M0QkKHRoaXMpLGg9M0QkKGUpLmZpbmQoZihnLGUpKTtjLnB1c2goPQphLmZyb21Eb20oaCxn
KSk7aC5hZGRDbGFzcygicG9wdXAiKX0pO3JldHVybiBjfTtyZXR1cm4gYX0pOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1j
ZW50cmFsL2NvbW1pdHMvNWVhOWZjMmY3NWFhLwpDaGFuZ2VzZXQ6ICAgNWVhOWZjMmY3NWFhClVz
ZXI6ICAgICAgICBkYW5ub24KRGF0ZTogICAgICAgIDIwMTUtMDItMjMgMjE6Mjg6MDErMDA6MDAK
U3VtbWFyeTogICAgIFZlcmlmeSBhbmQgYXBwbHkgQGptY2hpbHRvbidzIGZpeCBmcm9tIGh0dHBz
Oi8vZ2l0aHViLmNvbS9qbWNoPQppbHRvbi9nYWxheHktY2VudHJhbC9jb21taXQvMzA2YTg2NTU4
YTdlZTdiZTFiYzJkNjhjZDkzOWIxNmI1ZjE4NjNkNCB0byBuZXg9CnQtc3RhYmxlLiAgU2hvdWxk
IGJlIHJlZmFjdG9yZWQgaW50byB1c2luZyB0aGUgc2FtZSBnYWxheHkubWVudS5qcyBvYmplY3Rz
ID0KLS0gSSdtIGFzc3VtaW5nIHRoYXQncyB3aHkgdGhpbmdzIGxpa2UgUG9wdXBNZW51LmZyb21F
eGlzdGluZ0RvbSBleGlzdCBhbmQgPQphcmUgb3RoZXJ3aXNlIHVudXNlZC4KQWZmZWN0ZWQgIzog
IDMgZmlsZXMKCmRpZmYgLXIgYzgxYmVlNGI3NzVmNTc4ZTQ1YWZiYTVmYTNiZjY5YmFmN2EwMTc1
OCAtciA1ZWE5ZmMyZjc1YWFlOGU1MmUxNjRhYj0KNzVjNzFhYzk3ZjgyYmZmMjQgY2xpZW50L2dh
bGF4eS9zY3JpcHRzL2dhbGF4eS5iYXNlLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9n
YWxheHkuYmFzZS5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvZ2FsYXh5LmJhc2UuanMK
QEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBvcHRpb25zWyBsaW5rLnRleHQoKSBdID0zRCB7CiAgICAgICAgICAgICAgICAgICAgIHVybDog
aHJlZiwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiggZXZlbnQgKSB7Cj0yMAogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgdGhlcmVzIGNvbmZpcm0gdGV4dCwgc2VuZCB0aGUgZGlhbG9nCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFjb25maXJtdGV4dCB8fCBjb25maXJtKCBjb25m
aXJtdGV4dCApICkgewpAQCAtMTg1LDcgKzE4NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNr
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0KCmRpZmYgLXIgYzgxYmVl
NGI3NzVmNTc4ZTQ1YWZiYTVmYTNiZjY5YmFmN2EwMTc1OCAtciA1ZWE5ZmMyZjc1YWFlOGU1MmUx
NjRhYj0KNzVjNzFhYzk3ZjgyYmZmMjQgc3RhdGljL3NjcmlwdHMvZ2FsYXh5LmJhc2UuanMKLS0t
IGEvc3RhdGljL3NjcmlwdHMvZ2FsYXh5LmJhc2UuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvZ2Fs
YXh5LmJhc2UuanMKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBvcHRpb25zWyBsaW5rLnRleHQoKSBdID0zRCB7CiAgICAgICAgICAgICAg
ICAgICAgIHVybDogaHJlZiwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiggZXZlbnQgKSB7Cj0yMAog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmVzIGNvbmZpcm0gdGV4dCwgc2VuZCB0
aGUgZGlhbG9nCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFjb25maXJtdGV4dCB8fCBj
b25maXJtKCBjb25maXJtdGV4dCApICkgewpAQCAtMTg1LDcgKzE4NSwxMCBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5rLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0KCmRp
ZmYgLXIgYzgxYmVlNGI3NzVmNTc4ZTQ1YWZiYTVmYTNiZjY5YmFmN2EwMTc1OCAtciA1ZWE5ZmMy
Zjc1YWFlOGU1MmUxNjRhYj0KNzVjNzFhYzk3ZjgyYmZmMjQgc3RhdGljL3NjcmlwdHMvcGFja2Vk
L2dhbGF4eS5iYXNlLmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9nYWxheHkuYmFzZS5q
cworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvZ2FsYXh5LmJhc2UuanMKQEAgLTEsMSArMSwx
IEBACi0oZnVuY3Rpb24oKXt2YXIgYj0zRDA7dmFyIGM9M0RbIm1zIiwibW96Iiwid2Via2l0Iiwi
byJdO2Zvcih2YXIgYT0zRDA7YTxjLj0KbGVuZ3RoJiYhd2luZG93LnJlcXVlc3RBbmltYXRpb25G
cmFtZTsrK2Epe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9M0R3PQppbmRvd1tjW2FdKyJS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXTt3aW5kb3cuY2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1l
PTNEd2k9Cm5kb3dbY1thXSsiQ2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl19aWYoIXdpbmRv
dy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpez0Kd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT0z
RGZ1bmN0aW9uKGgsZSl7dmFyIGQ9M0RuZXcgRGF0ZSgpLmdldFRpbWUoKTt2PQphciBmPTNETWF0
aC5tYXgoMCwxNi0oZC1iKSk7dmFyIGc9M0R3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2go
ZCtmKX0sZik9CjtiPTNEZCtmO3JldHVybiBnfX1pZighd2luZG93LmNhbmNlbEFuaW1hdGlvbkZy
YW1lKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRj0KcmFtZT0zRGZ1bmN0aW9uKGQpe2NsZWFyVGlt
ZW91dChkKX19fSgpKTtpZighQXJyYXkuaW5kZXhPZil7QXJyYXkucHJvdG90eXBlPQouaW5kZXhP
Zj0zRGZ1bmN0aW9uKGMpe2Zvcih2YXIgYj0zRDAsYT0zRHRoaXMubGVuZ3RoO2I8YTtiKyspe2lm
KHRoaXNbYl09M0Q9Cj0zRGMpe3JldHVybiBifX1yZXR1cm4gLTF9fWZ1bmN0aW9uIG9ial9sZW5n
dGgoYyl7aWYoYy5sZW5ndGghPTNEPTNEdW5kZWZpbj0KZWQpe3JldHVybiBjLmxlbmd0aH12YXIg
Yj0zRDA7Zm9yKHZhciBhIGluIGMpe2IrK31yZXR1cm4gYn0kLmZuLm1ha2VBYnNvbHV0PQplPTNE
ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPTNEJCh0aGlzKTt2
YXIgYz0zRGIucG9zaXQ9CmlvbigpO2IuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG1hcmdpbkxl
ZnQ6MCxtYXJnaW5Ub3A6MCx0b3A6Yy50b3AsbGVmdDpjLj0KbGVmdCxyaWdodDokKHdpbmRvdyku
d2lkdGgoKS0oYy5sZWZ0K2Iud2lkdGgoKSl9KTtpZihhKXtiLnJlbW92ZSgpLmFwcGVuZFRvPQoo
ImJvZHkiKX19KX07ZnVuY3Rpb24gbWFrZV9wb3B1cG1lbnUoYixjKXt2YXIgYT0zRChiLmRhdGEo
Im1lbnVfb3B0aW9ucyIpKTs9CmIuZGF0YSgibWVudV9vcHRpb25zIixjKTtpZihhKXtyZXR1cm59
Yi5iaW5kKCJjbGljay5zaG93X3BvcHVwIixmdW5jdGlvbihkKT0KeyQoIi5wb3BtZW51LXdyYXBw
ZXIiKS5yZW1vdmUoKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGc9M0QkKCI8dWwgY2xhc3M9
Cj0zRCdkcm9wZG93bi1tZW51JyBpZD0zRCciK2IuYXR0cigiaWQiKSsiLW1lbnUnPjwvdWw+Iik7
dmFyIGY9M0RiLmRhdGEoIm1lbj0KdV9vcHRpb25zIik7aWYob2JqX2xlbmd0aChmKTw9M0QwKXsk
KCI8bGk+Tm8gT3B0aW9ucy48L2xpPiIpLmFwcGVuZFRvKGcpfSQuPQplYWNoKGYsZnVuY3Rpb24o
aixpKXtpZihpKXt2YXIgbD0zRGkuYWN0aW9ufHxpO2cuYXBwZW5kKCQoIjxsaT48L2xpPiIpLmFw
cGU9Cm5kKCQoIjxhPiIpLmF0dHIoImhyZWYiLGkudXJsKS5odG1sKGopLmNsaWNrKGwpKSl9ZWxz
ZXtnLmFwcGVuZCgkKCI8bGk+PC9saT0KPiIpLmFkZENsYXNzKCJoZWFkIikuYXBwZW5kKCQoIjxh
IGhyZWY9M0QnIyc+PC9hPiIpLmh0bWwoaikpKX19KTt2YXIgaD0zRCQoPQoiPGRpdiBjbGFzcz0z
RCdwb3BtZW51LXdyYXBwZXInIHN0eWxlPTNEJ3Bvc2l0aW9uOiBhYnNvbHV0ZTtsZWZ0OiAwOyB0
b3A6IC09CjEwMDA7Jz48L2Rpdj4iKS5hcHBlbmQoZykuYXBwZW5kVG8oImJvZHkiKTt2YXIgZT0z
RGQucGFnZVgtaC53aWR0aCgpLzI7ZT0zRD0KTWF0aC5taW4oZSwkKGRvY3VtZW50KS5zY3JvbGxM
ZWZ0KCkrJCh3aW5kb3cpLndpZHRoKCktJChoKS53aWR0aCgpLTUpO2U9M0RNPQphdGgubWF4KGUs
JChkb2N1bWVudCkuc2Nyb2xsTGVmdCgpKzUpO2guY3NzKHt0b3A6ZC5wYWdlWSxsZWZ0OmV9KX0s
MTApO3NldFQ9CmltZW91dChmdW5jdGlvbigpe3ZhciBmPTNEZnVuY3Rpb24oaCl7JChoKS5iaW5k
KCJjbGljay5jbG9zZV9wb3B1cCIsZnVuY3Rpbz0KbigpeyQoIi5wb3BtZW51LXdyYXBwZXIiKS5y
ZW1vdmUoKTtoLnVuYmluZCgiY2xpY2suY2xvc2VfcG9wdXAiKX0pfTtmKCQod2luPQpkb3cuZG9j
dW1lbnQpKTtmKCQod2luZG93LnRvcC5kb2N1bWVudCkpO2Zvcih2YXIgZT0zRHdpbmRvdy50b3Au
ZnJhbWVzLmxlbmc9CnRoO2UtLTspe3ZhciBnPTNEJCh3aW5kb3cudG9wLmZyYW1lc1tlXS5kb2N1
bWVudCk7ZihnKX19LDUwKTtyZXR1cm4gZmFsc2V9KT0KfWZ1bmN0aW9uIG1ha2VfcG9wdXBfbWVu
dXMoYSl7YT0zRGF8fGRvY3VtZW50OyQoYSkuZmluZCgiZGl2W3BvcHVwbWVudV0iKS5lPQphY2go
ZnVuY3Rpb24oKXt2YXIgYj0zRHt9O3ZhciBkPTNEJCh0aGlzKTtkLmZpbmQoImEiKS5lYWNoKGZ1
bmN0aW9uKCl7dmFyIGc9Cj0zRCQodGhpcyksaT0zRGcuZ2V0KDApLGU9M0RpLmdldEF0dHJpYnV0
ZSgiY29uZmlybSIpLGY9M0RpLmdldEF0dHJpYnV0ZSgiaD0KcmVmIiksaD0zRGkuZ2V0QXR0cmli
dXRlKCJ0YXJnZXQiKTtpZighZil7YltnLnRleHQoKV09M0RudWxsfWVsc2V7YltnLnRleHQoPQop
XT0zRHt1cmw6ZixhY3Rpb246ZnVuY3Rpb24oKXtpZighZXx8Y29uZmlybShlKSl7aWYoaCl7d2lu
ZG93Lm9wZW4oZixoKTtyZXQ9CnVybiBmYWxzZX1lbHNle2cuY2xpY2soKX19fX19fSk7dmFyIGM9
M0QkKGEpLmZpbmQoIiMiK2QuYXR0cigicG9wdXBtZW51IikpOz0KYy5maW5kKCJhIikuYmluZCgi
Y2xpY2siLGZ1bmN0aW9uKGYpe2Yuc3RvcFByb3BhZ2F0aW9uKCk7cmV0dXJuIHRydWV9KTttYWtl
PQpfcG9wdXBtZW51KGMsYik7Yy5hZGRDbGFzcygicG9wdXAiKTtkLnJlbW92ZSgpfSl9JC5mbi5y
ZWZyZXNoX3NlbGVjdDI9M0RmdW49CmN0aW9uKCl7dmFyIGI9M0QkKHRoaXMpO3ZhciBhPTNEe3Bs
YWNlaG9sZGVyOiJDbGljayB0byBzZWxlY3QiLGNsb3NlT25TZWxlYz0KdDohYi5pcygiW01VTFRJ
UExFXSIpLGRyb3Bkb3duQXV0b1dpZHRoOnRydWUsY29udGFpbmVyQ3NzQ2xhc3M6InNlbGVjdDIt
bWluPQp3aWR0aCJ9O3JldHVybiBiLnNlbGVjdDIoYSl9O2Z1bmN0aW9uIHJlcGxhY2VfYmlnX3Nl
bGVjdF9pbnB1dHMoYSxjLGIpe2lmKCE9CmpRdWVyeS5mbi5zZWxlY3QyKXtyZXR1cm59aWYoYT0z
RD0zRD0zRHVuZGVmaW5lZCl7YT0zRDIwfWlmKGM9M0Q9M0Q9M0R1bmRlZj0KaW5lZCl7Yz0zRDMw
MDB9Yj0zRGJ8fCQoInNlbGVjdCIpO2IuZWFjaChmdW5jdGlvbigpe3ZhciBlPTNEJCh0aGlzKS5u
b3QoIlttPQp1bHRpcGxlXSIpO3ZhciBkPTNEZS5maW5kKCJvcHRpb24iKS5sZW5ndGg7aWYoKGQ8
YSl8fChkPmMpKXtyZXR1cm59aWYoZS5oYXM9CkNsYXNzKCJuby1hdXRvY29tcGxldGUiKSl7cmV0
dXJufWUucmVmcmVzaF9zZWxlY3QyKCl9KX0kLmZuLm1ha2VfdGV4dF9lZGl0YT0KYmxlPTNEZnVu
Y3Rpb24oZyl7dmFyIGQ9M0QoIm51bV9jb2xzIiBpbiBnP2cubnVtX2NvbHM6MzApLGM9M0QoIm51
bV9yb3dzIiBpPQpuIGc/Zy5udW1fcm93czo0KSxlPTNEKCJ1c2VfdGV4dGFyZWEiIGluIGc/Zy51
c2VfdGV4dGFyZWE6ZmFsc2UpLGI9M0QoIm9uX2Y9CmluaXNoIiBpbiBnP2cub25fZmluaXNoOm51
bGwpLGY9M0QoImhlbHBfdGV4dCIgaW4gZz9nLmhlbHBfdGV4dDpudWxsKTt2YXIgYT0KPTNEJCh0
aGlzKTthLmFkZENsYXNzKCJlZGl0YWJsZS10ZXh0IikuY2xpY2soZnVuY3Rpb24obCl7aWYoJCh0
aGlzKS5jaGlsZHJlPQpuKCI6aW5wdXQiKS5sZW5ndGg+MCl7cmV0dXJufWEucmVtb3ZlQ2xhc3Mo
ImVkaXRhYmxlLXRleHQiKTt2YXIgaT0zRGZ1bmN0aW89Cm4obSl7YS5maW5kKCI6aW5wdXQiKS5y
ZW1vdmUoKTtpZihtIT0zRD0zRCIiKXthLnRleHQobSl9ZWxzZXthLmh0bWwoIjxicj4iKT0KfWEu
YWRkQ2xhc3MoImVkaXRhYmxlLXRleHQiKTtpZihiKXtiKG0pfX07dmFyIGg9M0QoImN1cl90ZXh0
IiBpbiBnP2cuY3VyX3RlPQp4dDphLnRleHQoKSksayxqO2lmKGUpe2s9M0QkKCI8dGV4dGFyZWEv
PiIpLmF0dHIoe3Jvd3M6Yyxjb2xzOmR9KS50ZXh0KCQudHI9CmltKGgpKS5rZXl1cChmdW5jdGlv
bihtKXtpZihtLmtleUNvZGU9M0Q9M0Q9M0QyNyl7aShoKX19KTtqPTNEJCgiPGJ1dHRvbi8+Ij0K
KS50ZXh0KCJEb25lIikuY2xpY2soZnVuY3Rpb24oKXtpKGsudmFsKCkpO3JldHVybiBmYWxzZX0p
fWVsc2V7az0zRCQoIjxpbnB1PQp0IHR5cGU9M0QndGV4dCcvPiIpLmF0dHIoe3ZhbHVlOiQudHJp
bShoKSxzaXplOmR9KS5ibHVyKGZ1bmN0aW9uKCl7aShoKX0pLms9CmV5dXAoZnVuY3Rpb24obSl7
aWYobS5rZXlDb2RlPTNEPTNEPTNEMjcpeyQodGhpcykudHJpZ2dlcigiYmx1ciIpfWVsc2V7aWYo
bT0KLmtleUNvZGU9M0Q9M0Q9M0QxMyl7aSgkKHRoaXMpLnZhbCgpKX19bS5zdG9wUHJvcGFnYXRp
b24oKX0pfWEudGV4dCgiIik7YS5hPQpwcGVuZChrKTtpZihqKXthLmFwcGVuZChqKX1rLmZvY3Vz
KCk7ay5zZWxlY3QoKTtsLnN0b3BQcm9wYWdhdGlvbigpfSk7aWYoZik9CnthLmF0dHIoInRpdGxl
IixmKS50b29sdGlwKCl9cmV0dXJuIGF9O2Z1bmN0aW9uIGFzeW5jX3NhdmVfdGV4dChkLGYsZSxh
LGMsaD0KLGksZyxiKXtpZihjPTNEPTNEPTNEdW5kZWZpbmVkKXtjPTNEMzB9aWYoaT0zRD0zRD0z
RHVuZGVmaW5lZCl7aT0zRDR9JCgiIyIrPQpkKS5jbGljayhmdW5jdGlvbigpe2lmKCQoIiNyZW5h
bWluZy1hY3RpdmUiKS5sZW5ndGg+MCl7cmV0dXJufXZhciBsPTNEJCgiIyI9CitmKSxrPTNEbC50
ZXh0KCksajtpZihoKXtqPTNEJCgiPHRleHRhcmVhPjwvdGV4dGFyZWE+IikuYXR0cih7cm93czpp
LGNvbHM6Yz0KfSkudGV4dCgkLnRyaW0oaykpfWVsc2V7aj0zRCQoIjxpbnB1dCB0eXBlPTNEJ3Rl
eHQnPjwvaW5wdXQ+IikuYXR0cih7dmFsdWU6PQokLnRyaW0oayksc2l6ZTpjfSl9ai5hdHRyKCJp
ZCIsInJlbmFtaW5nLWFjdGl2ZSIpO2ouYmx1cihmdW5jdGlvbigpeyQodGhpcyk9Ci5yZW1vdmUo
KTtsLnNob3coKTtpZihiKXtiKGopfX0pO2oua2V5dXAoZnVuY3Rpb24obil7aWYobi5rZXlDb2Rl
PTNEPTNEPTNEMj0KNyl7JCh0aGlzKS50cmlnZ2VyKCJibHVyIil9ZWxzZXtpZihuLmtleUNvZGU9
M0Q9M0Q9M0QxMyl7dmFyIG09M0R7fTttW2FdPTNEPQokKHRoaXMpLnZhbCgpOyQodGhpcykudHJp
Z2dlcigiYmx1ciIpOyQuYWpheCh7dXJsOmUsZGF0YTptLGVycm9yOmZ1bmN0aW9uKCk9CnthbGVy
dCgiVGV4dCBlZGl0aW5nIGZvciBlbHQgIitmKyIgZmFpbGVkIil9LHN1Y2Nlc3M6ZnVuY3Rpb24o
byl7aWYobyE9M0Q9Cj0zRCIiKXtsLnRleHQobyl9ZWxzZXtsLmh0bWwoIjxlbT5Ob25lPC9lbT4i
KX1pZihiKXtiKGopfX19KX19fSk7aWYoZyl7ZyhqKT0KfWwuaGlkZSgpO2ouaW5zZXJ0QWZ0ZXIo
bCk7ai5mb2N1cygpO2ouc2VsZWN0KCk7cmV0dXJufSl9ZnVuY3Rpb24gY29tbWF0aXplPQooYil7
Yis9M0QiIjt2YXIgYT0zRC8oXGQrKShcZHszfSkvO3doaWxlKGEudGVzdChiKSl7Yj0zRGIucmVw
bGFjZShhLCIkMSwkMiI9Cil9cmV0dXJuIGJ9ZnVuY3Rpb24gcmVzZXRfdG9vbF9zZWFyY2goYSl7
dmFyIGM9M0QkKCIjZ2FsYXh5X3Rvb2xzIikuY29udGVudD0KcygpO2lmKGMubGVuZ3RoPTNEPTNE
PTNEMCl7Yz0zRCQoZG9jdW1lbnQpfSQodGhpcykucmVtb3ZlQ2xhc3MoInNlYXJjaF9hY3RpPQp2
ZSIpO2MuZmluZCgiLnRvb2xUaXRsZSIpLnJlbW92ZUNsYXNzKCJzZWFyY2hfbWF0Y2giKTtjLmZp
bmQoIi50b29sU2VjdGlvbkI9Cm9keSIpLmhpZGUoKTtjLmZpbmQoIi50b29sVGl0bGUiKS5zaG93
KCk7Yy5maW5kKCIudG9vbFBhbmVsTGFiZWwiKS5zaG93KCk7Yz0KLmZpbmQoIi50b29sU2VjdGlv
bldyYXBwZXIiKS5lYWNoKGZ1bmN0aW9uKCl7aWYoJCh0aGlzKS5hdHRyKCJpZCIpIT0zRD0zRCJy
PQplY2VudGx5X3VzZWRfd3JhcHBlciIpeyQodGhpcykuc2hvdygpfWVsc2V7aWYoJCh0aGlzKS5o
YXNDbGFzcygidXNlcl9wcmVmX3Y9CmlzaWJsZSIpKXskKHRoaXMpLnNob3coKX19fSk7Yy5maW5k
KCIjc2VhcmNoLW5vLXJlc3VsdHMiKS5oaWRlKCk7Yy5maW5kKCIjcz0KZWFyY2gtc3Bpbm5lciIp
LmhpZGUoKTtpZihhKXt2YXIgYj0zRGMuZmluZCgiI3Rvb2wtc2VhcmNoLXF1ZXJ5Iik7Yi52YWwo
InNlPQphcmNoIHRvb2xzIil9fXZhciBHYWxheHlBc3luYz0zRGZ1bmN0aW9uKGEpe3RoaXMudXJs
X2RpY3Q9M0R7fTt0aGlzLmxvZ19hY3Q9Cmlvbj0zRChhPTNEPTNEPTNEdW5kZWZpbmVkP2ZhbHNl
OmEpfTtHYWxheHlBc3luYy5wcm90b3R5cGUuc2V0X2Z1bmNfdXJsPTNEZj0KdW5jdGlvbihhLGIp
e3RoaXMudXJsX2RpY3RbYV09M0RifTtHYWxheHlBc3luYy5wcm90b3R5cGUuc2V0X3VzZXJfcHJl
Zj0zRGZ1PQpuY3Rpb24oYSxiKXt2YXIgYz0zRHRoaXMudXJsX2RpY3RbYXJndW1lbnRzLmNhbGxl
ZV07aWYoYz0zRD0zRD0zRHVuZGVmaW5lZCk9CntyZXR1cm4gZmFsc2V9JC5hamF4KHt1cmw6Yyxk
YXRhOntwcmVmX25hbWU6YSxwcmVmX3ZhbHVlOmJ9LGVycm9yOmZ1bmN0aW9uKD0KKXtyZXR1cm4g
ZmFsc2V9LHN1Y2Nlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZX19KX07R2FsYXh5QXN5bmMucHJv
dG90eXBlLmxvPQpnX3VzZXJfYWN0aW9uPTNEZnVuY3Rpb24oYyxiLGQpe2lmKCF0aGlzLmxvZ19h
Y3Rpb24pe3JldHVybn12YXIgYT0zRHRoaXMudXI9CmxfZGljdFthcmd1bWVudHMuY2FsbGVlXTtp
ZihhPTNEPTNEPTNEdW5kZWZpbmVkKXtyZXR1cm4gZmFsc2V9JC5hamF4KHt1cmw6YT0KLGRhdGE6
e2FjdGlvbjpjLGNvbnRleHQ6YixwYXJhbXM6ZH0sZXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gZmFs
c2V9LHN1Y2Nlc3M6PQpmdW5jdGlvbigpe3JldHVybiB0cnVlfX0pfTtmdW5jdGlvbiBpbml0X3Jl
ZnJlc2hfb25fY2hhbmdlKCl7JCgic2VsZWN0W3JlZnI9CmVzaF9vbl9jaGFuZ2U9M0QndHJ1ZSdd
Iikub2ZmKCJjaGFuZ2UiKS5jaGFuZ2UoZnVuY3Rpb24oKXt2YXIgYT0zRCQodGhpcyksZT0KPTNE
YS52YWwoKSxkPTNEZmFsc2UsYz0zRGEuYXR0cigicmVmcmVzaF9vbl9jaGFuZ2VfdmFsdWVzIik7
aWYoYyl7Yz0zRGMuc3BsPQppdCgiLCIpO3ZhciBiPTNEYS5hdHRyKCJsYXN0X3NlbGVjdGVkX3Zh
bHVlIik7aWYoJC5pbkFycmF5KGUsYyk9M0Q9M0Q9M0QtMSY9CiYkLmluQXJyYXkoYixjKT0zRD0z
RD0zRC0xKXtyZXR1cm59fSQod2luZG93KS50cmlnZ2VyKCJyZWZyZXNoX29uX2NoYW5nZSIpOz0K
JChkb2N1bWVudCkudHJpZ2dlcigiY29udmVydF90b192YWx1ZXMiKTthLmdldCgwKS5mb3JtLnN1
Ym1pdCgpfSk7JCgiOmNoZWNrPQpib3hbcmVmcmVzaF9vbl9jaGFuZ2U9M0QndHJ1ZSddIikub2Zm
KCJjbGljayIpLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIGE9M0QkKHQ9CmhpcyksZT0zRGEudmFsKCks
ZD0zRGZhbHNlLGM9M0RhLmF0dHIoInJlZnJlc2hfb25fY2hhbmdlX3ZhbHVlcyIpO2lmKGMpe2M9
Cj0zRGMuc3BsaXQoIiwiKTt2YXIgYj0zRGEuYXR0cigibGFzdF9zZWxlY3RlZF92YWx1ZSIpO2lm
KCQuaW5BcnJheShlLGMpPTNEPQo9M0Q9M0QtMSYmJC5pbkFycmF5KGIsYyk9M0Q9M0Q9M0QtMSl7
cmV0dXJufX0kKHdpbmRvdykudHJpZ2dlcigicmVmcmVzaF9vbl89CmNoYW5nZSIpO2EuZ2V0KDAp
LmZvcm0uc3VibWl0KCl9KTskKCJhW2NvbmZpcm1dIikub2ZmKCJjbGljayIpLmNsaWNrKGZ1bmN0
aT0Kb24oKXtyZXR1cm4gY29uZmlybSgkKHRoaXMpLmF0dHIoImNvbmZpcm0iKSl9KX1qUXVlcnku
Zm4ucHJldmVudERvdWJsZVN1Ym1pPQpzc2lvbj0zRGZ1bmN0aW9uKCl7JCh0aGlzKS5vbigic3Vi
bWl0IixmdW5jdGlvbihiKXt2YXIgYT0zRCQodGhpcyk7aWYoYS5kYXQ9CmEoInN1Ym1pdHRlZCIp
PTNEPTNEPTNEdHJ1ZSl7Yi5wcmV2ZW50RGVmYXVsdCgpfWVsc2V7YS5kYXRhKCJzdWJtaXR0ZWQi
LHRydT0KZSl9fSk7cmV0dXJuIHRoaXN9OyQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7aW5p
dF9yZWZyZXNoX29uX2NoYW5nZSgpO2lmPQooJC5mbi50b29sdGlwKXskKCIudW5pZmllZC1wYW5l
bC1oZWFkZXIgW3RpdGxlXSIpLnRvb2x0aXAoe3BsYWNlbWVudDoiYm90dG89Cm0ifSk7JCgiW3Rp
dGxlXSIpLnRvb2x0aXAoKX1tYWtlX3BvcHVwX21lbnVzKCk7cmVwbGFjZV9iaWdfc2VsZWN0X2lu
cHV0cygyMD0KLDE1MDApOyQoImEiKS5jbGljayhmdW5jdGlvbigpe3ZhciBiPTNEJCh0aGlzKTt2
YXIgYz0zRChwYXJlbnQuZnJhbWVzJiZwYXJlPQpudC5mcmFtZXMuZ2FsYXh5X21haW4pO2lmKChi
LmF0dHIoInRhcmdldCIpPTNEPTNEImdhbGF4eV9tYWluIikmJighYykpe3ZhciA9CmE9M0RiLmF0
dHIoImhyZWYiKTtpZihhLmluZGV4T2YoIj8iKT0zRD0zRC0xKXthKz0zRCI/In1lbHNle2ErPTNE
IiYifWErPTNEIj0KdXNlX3BhbmVscz0zRFRydWUiO2IuYXR0cigiaHJlZiIsYSk7Yi5hdHRyKCJ0
YXJnZXQiLCJfc2VsZiIpfXJldHVybiBifSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CisoZnVuY3Rpb24oKXt2YXIgYj0zRDA7dmFyIGM9M0RbIm1zIiwibW96Iiwid2Via2l0IiwibyJd
O2Zvcih2YXIgYT0zRDA7YTxjLj0KbGVuZ3RoJiYhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFt
ZTsrK2Epe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9M0R3PQppbmRvd1tjW2FdKyJSZXF1
ZXN0QW5pbWF0aW9uRnJhbWUiXTt3aW5kb3cuY2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lPTNE
d2k9Cm5kb3dbY1thXSsiQ2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl19aWYoIXdpbmRvdy5y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUpez0Kd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT0zRGZ1
bmN0aW9uKGgsZSl7dmFyIGQ9M0RuZXcgRGF0ZSgpLmdldFRpbWUoKTt2PQphciBmPTNETWF0aC5t
YXgoMCwxNi0oZC1iKSk7dmFyIGc9M0R3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2goZCtm
KX0sZik9CjtiPTNEZCtmO3JldHVybiBnfX1pZighd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1l
KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRj0KcmFtZT0zRGZ1bmN0aW9uKGQpe2NsZWFyVGltZW91
dChkKX19fSgpKTtpZighQXJyYXkuaW5kZXhPZil7QXJyYXkucHJvdG90eXBlPQouaW5kZXhPZj0z
RGZ1bmN0aW9uKGMpe2Zvcih2YXIgYj0zRDAsYT0zRHRoaXMubGVuZ3RoO2I8YTtiKyspe2lmKHRo
aXNbYl09M0Q9Cj0zRGMpe3JldHVybiBifX1yZXR1cm4gLTF9fWZ1bmN0aW9uIG9ial9sZW5ndGgo
Yyl7aWYoYy5sZW5ndGghPTNEPTNEdW5kZWZpbj0KZWQpe3JldHVybiBjLmxlbmd0aH12YXIgYj0z
RDA7Zm9yKHZhciBhIGluIGMpe2IrK31yZXR1cm4gYn0kLmZuLm1ha2VBYnNvbHV0PQplPTNEZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPTNEJCh0aGlzKTt2YXIg
Yz0zRGIucG9zaXQ9CmlvbigpO2IuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG1hcmdpbkxlZnQ6
MCxtYXJnaW5Ub3A6MCx0b3A6Yy50b3AsbGVmdDpjLj0KbGVmdCxyaWdodDokKHdpbmRvdykud2lk
dGgoKS0oYy5sZWZ0K2Iud2lkdGgoKSl9KTtpZihhKXtiLnJlbW92ZSgpLmFwcGVuZFRvPQooImJv
ZHkiKX19KX07ZnVuY3Rpb24gbWFrZV9wb3B1cG1lbnUoYixjKXt2YXIgYT0zRChiLmRhdGEoIm1l
bnVfb3B0aW9ucyIpKTs9CmIuZGF0YSgibWVudV9vcHRpb25zIixjKTtpZihhKXtyZXR1cm59Yi5i
aW5kKCJjbGljay5zaG93X3BvcHVwIixmdW5jdGlvbihkKT0KeyQoIi5wb3BtZW51LXdyYXBwZXIi
KS5yZW1vdmUoKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGc9M0QkKCI8dWwgY2xhc3M9Cj0z
RCdkcm9wZG93bi1tZW51JyBpZD0zRCciK2IuYXR0cigiaWQiKSsiLW1lbnUnPjwvdWw+Iik7dmFy
IGY9M0RiLmRhdGEoIm1lbj0KdV9vcHRpb25zIik7aWYob2JqX2xlbmd0aChmKTw9M0QwKXskKCI8
bGk+Tm8gT3B0aW9ucy48L2xpPiIpLmFwcGVuZFRvKGcpfSQuPQplYWNoKGYsZnVuY3Rpb24oaixp
KXtpZihpKXt2YXIgbD0zRGkuYWN0aW9ufHxpO2cuYXBwZW5kKCQoIjxsaT48L2xpPiIpLmFwcGU9
Cm5kKCQoIjxhPiIpLmF0dHIoImhyZWYiLGkudXJsKS5odG1sKGopLmNsaWNrKGwpKSl9ZWxzZXtn
LmFwcGVuZCgkKCI8bGk+PC9saT0KPiIpLmFkZENsYXNzKCJoZWFkIikuYXBwZW5kKCQoIjxhIGhy
ZWY9M0QnIyc+PC9hPiIpLmh0bWwoaikpKX19KTt2YXIgaD0zRCQoPQoiPGRpdiBjbGFzcz0zRCdw
b3BtZW51LXdyYXBwZXInIHN0eWxlPTNEJ3Bvc2l0aW9uOiBhYnNvbHV0ZTtsZWZ0OiAwOyB0b3A6
IC09CjEwMDA7Jz48L2Rpdj4iKS5hcHBlbmQoZykuYXBwZW5kVG8oImJvZHkiKTt2YXIgZT0zRGQu
cGFnZVgtaC53aWR0aCgpLzI7ZT0zRD0KTWF0aC5taW4oZSwkKGRvY3VtZW50KS5zY3JvbGxMZWZ0
KCkrJCh3aW5kb3cpLndpZHRoKCktJChoKS53aWR0aCgpLTUpO2U9M0RNPQphdGgubWF4KGUsJChk
b2N1bWVudCkuc2Nyb2xsTGVmdCgpKzUpO2guY3NzKHt0b3A6ZC5wYWdlWSxsZWZ0OmV9KX0sMTAp
O3NldFQ9CmltZW91dChmdW5jdGlvbigpe3ZhciBmPTNEZnVuY3Rpb24oaCl7JChoKS5iaW5kKCJj
bGljay5jbG9zZV9wb3B1cCIsZnVuY3Rpbz0KbigpeyQoIi5wb3BtZW51LXdyYXBwZXIiKS5yZW1v
dmUoKTtoLnVuYmluZCgiY2xpY2suY2xvc2VfcG9wdXAiKX0pfTtmKCQod2luPQpkb3cuZG9jdW1l
bnQpKTtmKCQod2luZG93LnRvcC5kb2N1bWVudCkpO2Zvcih2YXIgZT0zRHdpbmRvdy50b3AuZnJh
bWVzLmxlbmc9CnRoO2UtLTspe3ZhciBnPTNEJCh3aW5kb3cudG9wLmZyYW1lc1tlXS5kb2N1bWVu
dCk7ZihnKX19LDUwKTtyZXR1cm4gZmFsc2V9KT0KfWZ1bmN0aW9uIG1ha2VfcG9wdXBfbWVudXMo
YSl7YT0zRGF8fGRvY3VtZW50OyQoYSkuZmluZCgiZGl2W3BvcHVwbWVudV0iKS5lPQphY2goZnVu
Y3Rpb24oKXt2YXIgYj0zRHt9O3ZhciBkPTNEJCh0aGlzKTtkLmZpbmQoImEiKS5lYWNoKGZ1bmN0
aW9uKCl7dmFyIGc9Cj0zRCQodGhpcyksaT0zRGcuZ2V0KDApLGU9M0RpLmdldEF0dHJpYnV0ZSgi
Y29uZmlybSIpLGY9M0RpLmdldEF0dHJpYnV0ZSgiaD0KcmVmIiksaD0zRGkuZ2V0QXR0cmlidXRl
KCJ0YXJnZXQiKTtpZighZil7YltnLnRleHQoKV09M0RudWxsfWVsc2V7YltnLnRleHQoPQopXT0z
RHt1cmw6ZixhY3Rpb246ZnVuY3Rpb24oail7aWYoIWV8fGNvbmZpcm0oZSkpe2lmKGgpe3dpbmRv
dy5vcGVuKGYsaCk7cmU9CnR1cm4gZmFsc2V9ZWxzZXtnLmNsaWNrKCl9fWVsc2V7ai5wcmV2ZW50
RGVmYXVsdCgpfX19fX0pO3ZhciBjPTNEJChhKS5maW5kKD0KIiMiK2QuYXR0cigicG9wdXBtZW51
IikpO2MuZmluZCgiYSIpLmJpbmQoImNsaWNrIixmdW5jdGlvbihmKXtmLnN0b3BQcm9wYWdhPQp0
aW9uKCk7cmV0dXJuIHRydWV9KTttYWtlX3BvcHVwbWVudShjLGIpO2MuYWRkQ2xhc3MoInBvcHVw
Iik7ZC5yZW1vdmUoKX0pfSQ9Ci5mbi5yZWZyZXNoX3NlbGVjdDI9M0RmdW5jdGlvbigpe3ZhciBi
PTNEJCh0aGlzKTt2YXIgYT0zRHtwbGFjZWhvbGRlcjoiQ2xpYz0KayB0byBzZWxlY3QiLGNsb3Nl
T25TZWxlY3Q6IWIuaXMoIltNVUxUSVBMRV0iKSxkcm9wZG93bkF1dG9XaWR0aDp0cnVlLGNvbnRh
PQppbmVyQ3NzQ2xhc3M6InNlbGVjdDItbWlud2lkdGgifTtyZXR1cm4gYi5zZWxlY3QyKGEpfTtm
dW5jdGlvbiByZXBsYWNlX2JpZ189CnNlbGVjdF9pbnB1dHMoYSxjLGIpe2lmKCFqUXVlcnkuZm4u
c2VsZWN0Mil7cmV0dXJufWlmKGE9M0Q9M0Q9M0R1bmRlZmluZWQpez0KYT0zRDIwfWlmKGM9M0Q9
M0Q9M0R1bmRlZmluZWQpe2M9M0QzMDAwfWI9M0RifHwkKCJzZWxlY3QiKTtiLmVhY2goZnVuY3Rp
b24oPQope3ZhciBlPTNEJCh0aGlzKS5ub3QoIlttdWx0aXBsZV0iKTt2YXIgZD0zRGUuZmluZCgi
b3B0aW9uIikubGVuZ3RoO2lmKChkPGE9Cil8fChkPmMpKXtyZXR1cm59aWYoZS5oYXNDbGFzcygi
bm8tYXV0b2NvbXBsZXRlIikpe3JldHVybn1lLnJlZnJlc2hfc2VsZWN0Mj0KKCl9KX0kLmZuLm1h
a2VfdGV4dF9lZGl0YWJsZT0zRGZ1bmN0aW9uKGcpe3ZhciBkPTNEKCJudW1fY29scyIgaW4gZz9n
Lm51bV9jPQpvbHM6MzApLGM9M0QoIm51bV9yb3dzIiBpbiBnP2cubnVtX3Jvd3M6NCksZT0zRCgi
dXNlX3RleHRhcmVhIiBpbiBnP2cudXNlX3Q9CmV4dGFyZWE6ZmFsc2UpLGI9M0QoIm9uX2Zpbmlz
aCIgaW4gZz9nLm9uX2ZpbmlzaDpudWxsKSxmPTNEKCJoZWxwX3RleHQiIGluID0KZz9nLmhlbHBf
dGV4dDpudWxsKTt2YXIgYT0zRCQodGhpcyk7YS5hZGRDbGFzcygiZWRpdGFibGUtdGV4dCIpLmNs
aWNrKGZ1bmN0PQppb24obCl7aWYoJCh0aGlzKS5jaGlsZHJlbigiOmlucHV0IikubGVuZ3RoPjAp
e3JldHVybn1hLnJlbW92ZUNsYXNzKCJlZGl0YWI9CmxlLXRleHQiKTt2YXIgaT0zRGZ1bmN0aW9u
KG0pe2EuZmluZCgiOmlucHV0IikucmVtb3ZlKCk7aWYobSE9M0Q9M0QiIil7YS50ZT0KeHQobSl9
ZWxzZXthLmh0bWwoIjxicj4iKX1hLmFkZENsYXNzKCJlZGl0YWJsZS10ZXh0Iik7aWYoYil7Yiht
KX19O3ZhciBoPTNEPQooImN1cl90ZXh0IiBpbiBnP2cuY3VyX3RleHQ6YS50ZXh0KCkpLGssajtp
ZihlKXtrPTNEJCgiPHRleHRhcmVhLz4iKS5hdHRyKHs9CnJvd3M6Yyxjb2xzOmR9KS50ZXh0KCQu
dHJpbShoKSkua2V5dXAoZnVuY3Rpb24obSl7aWYobS5rZXlDb2RlPTNEPTNEPTNEMjcpez0KaSho
KX19KTtqPTNEJCgiPGJ1dHRvbi8+IikudGV4dCgiRG9uZSIpLmNsaWNrKGZ1bmN0aW9uKCl7aShr
LnZhbCgpKTtyZXR1cm4gPQpmYWxzZX0pfWVsc2V7az0zRCQoIjxpbnB1dCB0eXBlPTNEJ3RleHQn
Lz4iKS5hdHRyKHt2YWx1ZTokLnRyaW0oaCksc2l6ZTpkfSk9Ci5ibHVyKGZ1bmN0aW9uKCl7aSho
KX0pLmtleXVwKGZ1bmN0aW9uKG0pe2lmKG0ua2V5Q29kZT0zRD0zRD0zRDI3KXskKHRoaXMpLj0K
dHJpZ2dlcigiYmx1ciIpfWVsc2V7aWYobS5rZXlDb2RlPTNEPTNEPTNEMTMpe2koJCh0aGlzKS52
YWwoKSl9fW0uc3RvcFByb3BhPQpnYXRpb24oKX0pfWEudGV4dCgiIik7YS5hcHBlbmQoayk7aWYo
ail7YS5hcHBlbmQoail9ay5mb2N1cygpO2suc2VsZWN0KCk7bC49CnN0b3BQcm9wYWdhdGlvbigp
fSk7aWYoZil7YS5hdHRyKCJ0aXRsZSIsZikudG9vbHRpcCgpfXJldHVybiBhfTtmdW5jdGlvbiBh
cz0KeW5jX3NhdmVfdGV4dChkLGYsZSxhLGMsaCxpLGcsYil7aWYoYz0zRD0zRD0zRHVuZGVmaW5l
ZCl7Yz0zRDMwfWlmKGk9M0Q9M0Q9Cj0zRHVuZGVmaW5lZCl7aT0zRDR9JCgiIyIrZCkuY2xpY2so
ZnVuY3Rpb24oKXtpZigkKCIjcmVuYW1pbmctYWN0aXZlIikubGVuZz0KdGg+MCl7cmV0dXJufXZh
ciBsPTNEJCgiIyIrZiksaz0zRGwudGV4dCgpLGo7aWYoaCl7aj0zRCQoIjx0ZXh0YXJlYT48L3Rl
eHRhPQpyZWE+IikuYXR0cih7cm93czppLGNvbHM6Y30pLnRleHQoJC50cmltKGspKX1lbHNle2o9
M0QkKCI8aW5wdXQgdHlwZT0zRCd0ZXg9CnQnPjwvaW5wdXQ+IikuYXR0cih7dmFsdWU6JC50cmlt
KGspLHNpemU6Y30pfWouYXR0cigiaWQiLCJyZW5hbWluZy1hY3RpdmUiKT0KO2ouYmx1cihmdW5j
dGlvbigpeyQodGhpcykucmVtb3ZlKCk7bC5zaG93KCk7aWYoYil7YihqKX19KTtqLmtleXVwKGZ1
bmN0aW9uPQoobil7aWYobi5rZXlDb2RlPTNEPTNEPTNEMjcpeyQodGhpcykudHJpZ2dlcigiYmx1
ciIpfWVsc2V7aWYobi5rZXlDb2RlPTNEPQo9M0Q9M0QxMyl7dmFyIG09M0R7fTttW2FdPTNEJCh0
aGlzKS52YWwoKTskKHRoaXMpLnRyaWdnZXIoImJsdXIiKTskLmFqYXgoe3U9CnJsOmUsZGF0YTpt
LGVycm9yOmZ1bmN0aW9uKCl7YWxlcnQoIlRleHQgZWRpdGluZyBmb3IgZWx0ICIrZisiIGZhaWxl
ZCIpfSxzdT0KY2Nlc3M6ZnVuY3Rpb24obyl7aWYobyE9M0Q9M0QiIil7bC50ZXh0KG8pfWVsc2V7
bC5odG1sKCI8ZW0+Tm9uZTwvZW0+Iil9aWYoPQpiKXtiKGopfX19KX19fSk7aWYoZyl7ZyhqKX1s
LmhpZGUoKTtqLmluc2VydEFmdGVyKGwpO2ouZm9jdXMoKTtqLnNlbGVjdCgpO3I9CmV0dXJufSl9
ZnVuY3Rpb24gY29tbWF0aXplKGIpe2IrPTNEIiI7dmFyIGE9M0QvKFxkKykoXGR7M30pLzt3aGls
ZShhLnRlc3QoYj0KKSl7Yj0zRGIucmVwbGFjZShhLCIkMSwkMiIpfXJldHVybiBifWZ1bmN0aW9u
IHJlc2V0X3Rvb2xfc2VhcmNoKGEpe3ZhciBjPTNEPQokKCIjZ2FsYXh5X3Rvb2xzIikuY29udGVu
dHMoKTtpZihjLmxlbmd0aD0zRD0zRD0zRDApe2M9M0QkKGRvY3VtZW50KX0kKHRoaXM9CikucmVt
b3ZlQ2xhc3MoInNlYXJjaF9hY3RpdmUiKTtjLmZpbmQoIi50b29sVGl0bGUiKS5yZW1vdmVDbGFz
cygic2VhcmNoX21hdD0KY2giKTtjLmZpbmQoIi50b29sU2VjdGlvbkJvZHkiKS5oaWRlKCk7Yy5m
aW5kKCIudG9vbFRpdGxlIikuc2hvdygpO2MuZmluZCgiPQoudG9vbFBhbmVsTGFiZWwiKS5zaG93
KCk7Yy5maW5kKCIudG9vbFNlY3Rpb25XcmFwcGVyIikuZWFjaChmdW5jdGlvbigpe2lmKCQ9Cih0
aGlzKS5hdHRyKCJpZCIpIT0zRD0zRCJyZWNlbnRseV91c2VkX3dyYXBwZXIiKXskKHRoaXMpLnNo
b3coKX1lbHNle2lmKCQodD0KaGlzKS5oYXNDbGFzcygidXNlcl9wcmVmX3Zpc2libGUiKSl7JCh0
aGlzKS5zaG93KCl9fX0pO2MuZmluZCgiI3NlYXJjaC1uby1yPQplc3VsdHMiKS5oaWRlKCk7Yy5m
aW5kKCIjc2VhcmNoLXNwaW5uZXIiKS5oaWRlKCk7aWYoYSl7dmFyIGI9M0RjLmZpbmQoIiN0b289
Cmwtc2VhcmNoLXF1ZXJ5Iik7Yi52YWwoInNlYXJjaCB0b29scyIpfX12YXIgR2FsYXh5QXN5bmM9
M0RmdW5jdGlvbihhKXt0aGlzLj0KdXJsX2RpY3Q9M0R7fTt0aGlzLmxvZ19hY3Rpb249M0QoYT0z
RD0zRD0zRHVuZGVmaW5lZD9mYWxzZTphKX07R2FsYXh5QXN5bmMuPQpwcm90b3R5cGUuc2V0X2Z1
bmNfdXJsPTNEZnVuY3Rpb24oYSxiKXt0aGlzLnVybF9kaWN0W2FdPTNEYn07R2FsYXh5QXN5bmMu
cHI9Cm90b3R5cGUuc2V0X3VzZXJfcHJlZj0zRGZ1bmN0aW9uKGEsYil7dmFyIGM9M0R0aGlzLnVy
bF9kaWN0W2FyZ3VtZW50cy5jYWxsZT0KZV07aWYoYz0zRD0zRD0zRHVuZGVmaW5lZCl7cmV0dXJu
IGZhbHNlfSQuYWpheCh7dXJsOmMsZGF0YTp7cHJlZl9uYW1lOmEscHJlPQpmX3ZhbHVlOmJ9LGVy
cm9yOmZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfSxzdWNjZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIHRy
dWV9fSk9Cn07R2FsYXh5QXN5bmMucHJvdG90eXBlLmxvZ191c2VyX2FjdGlvbj0zRGZ1bmN0aW9u
KGMsYixkKXtpZighdGhpcy5sb2dfYWN0aT0Kb24pe3JldHVybn12YXIgYT0zRHRoaXMudXJsX2Rp
Y3RbYXJndW1lbnRzLmNhbGxlZV07aWYoYT0zRD0zRD0zRHVuZGVmaW5lZCl7PQpyZXR1cm4gZmFs
c2V9JC5hamF4KHt1cmw6YSxkYXRhOnthY3Rpb246Yyxjb250ZXh0OmIscGFyYW1zOmR9LGVycm9y
OmZ1bmN0aW89Cm4oKXtyZXR1cm4gZmFsc2V9LHN1Y2Nlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1
ZX19KX07ZnVuY3Rpb24gaW5pdF9yZWZyZXNoXz0Kb25fY2hhbmdlKCl7JCgic2VsZWN0W3JlZnJl
c2hfb25fY2hhbmdlPTNEJ3RydWUnXSIpLm9mZigiY2hhbmdlIikuY2hhbmdlKGZ1PQpuY3Rpb24o
KXt2YXIgYT0zRCQodGhpcyksZT0zRGEudmFsKCksZD0zRGZhbHNlLGM9M0RhLmF0dHIoInJlZnJl
c2hfb25fY2hhbmc9CmVfdmFsdWVzIik7aWYoYyl7Yz0zRGMuc3BsaXQoIiwiKTt2YXIgYj0zRGEu
YXR0cigibGFzdF9zZWxlY3RlZF92YWx1ZSIpO2lmKD0KJC5pbkFycmF5KGUsYyk9M0Q9M0Q9M0Qt
MSYmJC5pbkFycmF5KGIsYyk9M0Q9M0Q9M0QtMSl7cmV0dXJufX0kKHdpbmRvdykudHJpPQpnZ2Vy
KCJyZWZyZXNoX29uX2NoYW5nZSIpOyQoZG9jdW1lbnQpLnRyaWdnZXIoImNvbnZlcnRfdG9fdmFs
dWVzIik7YS5nZXQoMCk9Ci5mb3JtLnN1Ym1pdCgpfSk7JCgiOmNoZWNrYm94W3JlZnJlc2hfb25f
Y2hhbmdlPTNEJ3RydWUnXSIpLm9mZigiY2xpY2siKS5jbD0KaWNrKGZ1bmN0aW9uKCl7dmFyIGE9
M0QkKHRoaXMpLGU9M0RhLnZhbCgpLGQ9M0RmYWxzZSxjPTNEYS5hdHRyKCJyZWZyZXNoX29uPQpf
Y2hhbmdlX3ZhbHVlcyIpO2lmKGMpe2M9M0RjLnNwbGl0KCIsIik7dmFyIGI9M0RhLmF0dHIoImxh
c3Rfc2VsZWN0ZWRfdmFsdWU9CiIpO2lmKCQuaW5BcnJheShlLGMpPTNEPTNEPTNELTEmJiQuaW5B
cnJheShiLGMpPTNEPTNEPTNELTEpe3JldHVybn19JCh3aW5kbz0KdykudHJpZ2dlcigicmVmcmVz
aF9vbl9jaGFuZ2UiKTthLmdldCgwKS5mb3JtLnN1Ym1pdCgpfSk7JCgiYVtjb25maXJtXSIpLm9m
PQpmKCJjbGljayIpLmNsaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIGNvbmZpcm0oJCh0aGlzKS5hdHRy
KCJjb25maXJtIikpfSl9alF1ZXI9CnkuZm4ucHJldmVudERvdWJsZVN1Ym1pc3Npb249M0RmdW5j
dGlvbigpeyQodGhpcykub24oInN1Ym1pdCIsZnVuY3Rpb24oYil7dj0KYXIgYT0zRCQodGhpcyk7
aWYoYS5kYXRhKCJzdWJtaXR0ZWQiKT0zRD0zRD0zRHRydWUpe2IucHJldmVudERlZmF1bHQoKX1l
bHNlPQp7YS5kYXRhKCJzdWJtaXR0ZWQiLHRydWUpfX0pO3JldHVybiB0aGlzfTskKGRvY3VtZW50
KS5yZWFkeShmdW5jdGlvbigpe2luaXQ9Cl9yZWZyZXNoX29uX2NoYW5nZSgpO2lmKCQuZm4udG9v
bHRpcCl7JCgiLnVuaWZpZWQtcGFuZWwtaGVhZGVyIFt0aXRsZV0iKS50bz0Kb2x0aXAoe3BsYWNl
bWVudDoiYm90dG9tIn0pOyQoIlt0aXRsZV0iKS50b29sdGlwKCl9bWFrZV9wb3B1cF9tZW51cygp
O3JlcGxhPQpjZV9iaWdfc2VsZWN0X2lucHV0cygyMCwxNTAwKTskKCJhIikuY2xpY2soZnVuY3Rp
b24oKXt2YXIgYj0zRCQodGhpcyk7dmFyIGM9Cj0zRChwYXJlbnQuZnJhbWVzJiZwYXJlbnQuZnJh
bWVzLmdhbGF4eV9tYWluKTtpZigoYi5hdHRyKCJ0YXJnZXQiKT0zRD0zRCJnYT0KbGF4eV9tYWlu
IikmJighYykpe3ZhciBhPTNEYi5hdHRyKCJocmVmIik7aWYoYS5pbmRleE9mKCI/Iik9M0Q9M0Qt
MSl7YSs9M0QiPQo/In1lbHNle2ErPTNEIiYifWErPTNEInVzZV9wYW5lbHM9M0RUcnVlIjtiLmF0
dHIoImhyZWYiLGEpO2IuYXR0cigidGFyZ2V0Iiw9CiJfc2VsZiIpfXJldHVybiBifSl9KTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9n
YWxheHktY2VudHJhbC9jb21taXRzL2IxOGZjZTY5OGNhMC8KQ2hhbmdlc2V0OiAgIGIxOGZjZTY5
OGNhMApVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0wMi0yMyAy
MjoxNDozNyswMDowMApTdW1tYXJ5OiAgICAgVUksIGhpc3RvcnkgcGFuZWw6IGNvcnJlY3RseSBk
ZWZhdWx0IGNsZWFyTWVzc2FnZXMgdGFyZ2V0IHdoZW49CiBubyBldmVudCBpcyBnaXZlbgpBZmZl
Y3RlZCAjOiAgOCBmaWxlcwoKZGlmZiAtciA1ZWE5ZmMyZjc1YWFlOGU1MmUxNjRhYjc1YzcxYWM5
N2Y4MmJmZjI0IC1yIGIxOGZjZTY5OGNhMGIyOWFhY2E3NzMzPQpjZjliYTk1YjY1YzU2Y2E0OCBj
bGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9yeS1wYW5lbC1lZGl0LWN1cnI9
CmVudC5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9yeS1w
YW5lbC1lZGl0LWN1cnJlbnQuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9oaXN0
b3J5L2hpc3RvcnktcGFuZWwtZWRpdC1jdXJyZW50LmpzCkBAIC0zNzksMjEgKzM3OSwzMSBAQAog
ICAgIH0sCj0yMAogLy9UT0RPOiB0aGlzIHNlZW1zIG1vcmUgbGlrZSBhIHBlciB1c2VyIG1lc3Nh
Z2UgdGhhbiBhIGhpc3RvcnkgbWVzc2FnZTsgSU89ClcsIHRoaXMgZG9lc24ndCBiZWxvbmcgaGVy
ZQorICAgIC8qKiBPdmVycmlkZSB0byBwcmVzZXJ2ZSB0aGUgcXVvdGEgbWVzc2FnZSAqLworICAg
IGNsZWFyTWVzc2FnZXMgOiBmdW5jdGlvbiggZXYgKXsKKyAgICAgICAgdmFyICR0YXJnZXQgPTNE
ICFfLmlzVW5kZWZpbmVkKCBldiApPworICAgICAgICAgICAgJCggZXYuY3VycmVudFRhcmdldCAp
CisgICAgICAgICAgICA6dGhpcy4kbWVzc2FnZXMoKS5jaGlsZHJlbiggJ1tjbGFzcyQ9M0QibWVz
c2FnZSJdJyApOworICAgICAgICAkdGFyZ2V0ID0zRCAkdGFyZ2V0Lm5vdCggJy5xdW90YS1tZXNz
YWdlJyApOworICAgICAgICAkdGFyZ2V0LmZhZGVPdXQoIHRoaXMuZnhTcGVlZCwgZnVuY3Rpb24o
KXsKKyAgICAgICAgICAgICQoIHRoaXMgKS5yZW1vdmUoKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybiB0aGlzOworICAgIH0sCisKICAgICAvKiogU2hvdyB0aGUgb3ZlciBxdW90YSBtZXNz
YWdlICh3aGljaCBoYXBwZW5zIHRvIGJlIGluIHRoZSBoaXN0b3J5IHBhPQpuZWwpLgogICAgICAq
LwogICAgIHNob3dRdW90YU1lc3NhZ2UgOiBmdW5jdGlvbigpewotICAgICAgICB2YXIgbXNnID0z
RCB0aGlzLiRlbC5maW5kKCAnLnF1b3RhLW1lc3NhZ2UnICk7Ci0gICAgICAgIC8vdGhpcy5sb2co
IHRoaXMgKyAnIHNob3dpbmcgcXVvdGEgbWVzc2FnZTonLCBtc2csIHVzZXJEYXRhICk7Ci0gICAg
ICAgIGlmKCBtc2cuaXMoICc6aGlkZGVuJyApICl7IG1zZy5zbGlkZURvd24oIHRoaXMuZnhTcGVl
ZCApOyB9CisgICAgICAgIHZhciAkbXNnID0zRCB0aGlzLiQoICcucXVvdGEtbWVzc2FnZScgKTsK
KyAgICAgICAgaWYoICRtc2cuaXMoICc6aGlkZGVuJyApICl7ICRtc2cuc2xpZGVEb3duKCB0aGlz
LmZ4U3BlZWQgKTsgfQogICAgIH0sCj0yMAogLy9UT0RPOiB0aGlzIHNlZW1zIG1vcmUgbGlrZSBh
IHBlciB1c2VyIG1lc3NhZ2UgdGhhbiBhIGhpc3RvcnkgbWVzc2FnZQogICAgIC8qKiBIaWRlIHRo
ZSBvdmVyIHF1b3RhIG1lc3NhZ2UgKHdoaWNoIGhhcHBlbnMgdG8gYmUgaW4gdGhlIGhpc3Rvcnkg
cGE9Cm5lbCkuCiAgICAgICovCiAgICAgaGlkZVF1b3RhTWVzc2FnZSA6IGZ1bmN0aW9uKCl7Ci0g
ICAgICAgIHZhciBtc2cgPTNEIHRoaXMuJGVsLmZpbmQoICcucXVvdGEtbWVzc2FnZScgKTsKLSAg
ICAgICAgLy90aGlzLmxvZyggdGhpcyArICcgaGlkaW5nIHF1b3RhIG1lc3NhZ2U6JywgbXNnLCB1
c2VyRGF0YSApOwotICAgICAgICBpZiggIW1zZy5pcyggJzpoaWRkZW4nICkgKXsgbXNnLnNsaWRl
VXAoIHRoaXMuZnhTcGVlZCApOyB9CisgICAgICAgIHZhciAkbXNnID0zRCB0aGlzLiQoICcucXVv
dGEtbWVzc2FnZScgKTsKKyAgICAgICAgaWYoICEkbXNnLmlzKCAnOmhpZGRlbicgKSApeyAkbXNn
LnNsaWRlVXAoIHRoaXMuZnhTcGVlZCApOyB9CiAgICAgfSwKPTIwCiAgICAgLyoqIFJldHVybiBh
IHN0cmluZyByZXAgb2YgdGhlIGhpc3RvcnkKCmRpZmYgLXIgNWVhOWZjMmY3NWFhZThlNTJlMTY0
YWI3NWM3MWFjOTdmODJiZmYyNCAtciBiMThmY2U2OThjYTBiMjlhYWNhNzczMz0KY2Y5YmE5NWI2
NWM1NmNhNDggY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwu
anMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwu
anMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwu
anMKQEAgLTM4MSwxMiArMzgxLDkgQEAKICAgICAvKiogZXZlbnQgbWFwICovCiAgICAgZXZlbnRz
IDogXy5leHRlbmQoIF8uY2xvbmUoIF9zdXBlci5wcm90b3R5cGUuZXZlbnRzICksIHsKICAgICAg
ICAgLy8gdG9nZ2xlIGxpc3QgaXRlbSBzZWxlY3RvcnMKLSAgICAgICAgJ2NsaWNrIC5zaG93LXNl
bGVjdG9ycy1idG4nICAgICAgICAgICAgICAgICA6ICd0b2dnbGVTZWxlY3RvcnMnCisgICAgICAg
ICdjbGljayAuc2hvdy1zZWxlY3RvcnMtYnRuJyAgICAgICAgIDogJ3RvZ2dsZVNlbGVjdG9ycycs
CiAgICAgICAgIC8vIGFsbG93IChlcnJvcikgbWVzc2FnZXMgdG8gYmUgY2xpY2tlZCBhd2F5Ci0v
L1RPRE86IHN3aXRjaCB0byBjb21tb24gY2xvc2UgKFgpIGlkaW9tCi0gICAgICAgIC8vJ2NsaWNr
IC5tZXNzYWdlcycgICAgICAgICAgICAgICA6ICdjbGVhck1lc3NhZ2VzJywKLS8vVE9ETzogcmVt
b3ZlCi0gICAgICAgIC8vJ2NsaWNrIC5oaXN0b3J5LXNlYXJjaC1idG4nICAgICA6ICd0b2dnbGVT
ZWFyY2hDb250cm9scycKKyAgICAgICAgJ2NsaWNrIC5tZXNzYWdlcyBbY2xhc3MkPTNEbWVzc2Fn
ZV0nICA6ICdjbGVhck1lc3NhZ2VzJwogICAgIH0pLAo9MjAKICAgICAvKiogSGFuZGxlIHRoZSB1
c2VyIHRvZ2dsaW5nIHRoZSBkZWxldGVkIHZpc2liaWxpdHkgYnk6CkBAIC00NTcsMTQgKzQ1NCwx
NCBAQAogICAgICAqLwogICAgIGVycm9ySGFuZGxlciA6IGZ1bmN0aW9uKCBtb2RlbCwgeGhyLCBv
cHRpb25zLCBtc2csIGRldGFpbHMgKXsKICAgICAgICAgdGhpcy5lcnJvciggbW9kZWwsIHhociwg
b3B0aW9ucywgbXNnLCBkZXRhaWxzICk7Ci0vL1RPRE86IGdldHRpbmcgSlNPTiBwYXJzZSBlcnJv
cnMgZnJvbSBqcSBtaWdyYXRlCj0yMAogICAgICAgICAvLyBpbnRlcnJ1cHRlZCBhamF4CiAgICAg
ICAgIGlmKCB4aHIgJiYgeGhyLnN0YXR1cyA9M0Q9M0Q9M0QgMCAmJiB4aHIucmVhZHlTdGF0ZSA9
M0Q9M0Q9M0QgMCApeworICAgICAgICAgICAgLy9UT0RPOiBnbWFpbCBzdHlsZSAncmV0cnlpbmcg
aW4gTnMnCj0yMAogICAgICAgICAvLyBiYWQgZ2F0ZXdheQogICAgICAgICB9IGVsc2UgaWYoIHho
ciAmJiB4aHIuc3RhdHVzID0zRD0zRD0zRCA1MDIgKXsKLS8vVE9ETzogZ21haWwgc3R5bGUgJ3Jl
Y29ubmVjdGluZyBpbiBOcycKKyAgICAgICAgICAgIC8vVE9ETzogZ21haWwgc3R5bGUgJ3JldHJ5
aW5nIGluIE5zJwo9MjAKICAgICAgICAgLy8gb3RoZXJ3aXNlLCBzaG93IGFuIGVycm9yIG1lc3Nh
Z2UgaW5zaWRlIHRoZSBwYW5lbAogICAgICAgICB9IGVsc2UgewpAQCAtNTUxLDcgKzU0OCw3IEBA
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAkbXNnLmFwcGVuZCggJyAnLCAkZGV0
YWlsc0xpbmsgKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gJG1zZ0NvbnRhaW5lci5odG1s
KCAkbXNnICk7CisgICAgICAgIHJldHVybiAkbXNnQ29udGFpbmVyLmFwcGVuZCggJG1zZyApOwog
ICAgIH0sCj0yMAogICAgIC8qKiBjb252ZXJ0IG1zZyBhbmQgZGV0YWlscyBpbnRvIG1vZGFsIG9w
dGlvbnMgdXNhYmxlIGJ5IEdhbGF4eS5tb2RhbCA9CiovCkBAIC01ODIsMTAgKzU3OSwxMiBAQAo9
MjAKICAgICAvKiogUmVtb3ZlIGFsbCBtZXNzYWdlcyBmcm9tIHRoZSBwYW5lbC4gKi8KICAgICBj
bGVhck1lc3NhZ2VzIDogZnVuY3Rpb24oIGV2ICl7Ci0gICAgICAgICQoIGV2LmN1cnJlbnRUYXJn
ZXQgKS5mYWRlT3V0KCB0aGlzLmZ4U3BlZWQsIGZ1bmN0aW9uKCl7CisgICAgICAgIHZhciAkdGFy
Z2V0ID0zRCAhXy5pc1VuZGVmaW5lZCggZXYgKT8KKyAgICAgICAgICAgICQoIGV2LmN1cnJlbnRU
YXJnZXQgKQorICAgICAgICAgICAgOnRoaXMuJG1lc3NhZ2VzKCkuY2hpbGRyZW4oICdbY2xhc3Mk
PTNEIm1lc3NhZ2UiXScgKTsKKyAgICAgICAgJHRhcmdldC5mYWRlT3V0KCB0aGlzLmZ4U3BlZWQs
IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAkKCB0aGlzICkucmVtb3ZlKCk7CiAgICAgICAgIH0p
OwotICAgICAgICAvL3RoaXMuJG1lc3NhZ2VzKCkuY2hpbGRyZW4oKS5ub3QoICcucXVvdGEtbWVz
c2FnZScgKS5yZW1vdmUoKTsKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfSwKPTIwCgpkaWZm
IC1yIDVlYTlmYzJmNzVhYWU4ZTUyZTE2NGFiNzVjNzFhYzk3ZjgyYmZmMjQgLXIgYjE4ZmNlNjk4
Y2EwYjI5YWFjYTc3MzM9CmNmOWJhOTViNjVjNTZjYTQ4IGNsaWVudC9nYWxheHkvc2NyaXB0cy9t
dmMvbGlzdC9saXN0LXBhbmVsLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvbGlz
dC9saXN0LXBhbmVsLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvbGlzdC9saXN0
LXBhbmVsLmpzCkBAIC0xMTksNiArMTE5LDggQEAKICAgICBfc2V0VXBMaXN0ZW5lcnMgOiBmdW5j
dGlvbigpewogICAgICAgICB0aGlzLm9mZigpOwo9MjAKKyAgICAgICAgLy9UT0RPOiBtb3ZlIGVy
cm9ySGFuZGxlciBkb3duIGludG8gbGlzdC1wYW5lbCBmcm9tIGhpc3RvcnktcGFuZWwgPQpvcgor
ICAgICAgICAvLyAgcGFzcyB0byBnbG9iYWwgZXJyb3IgaGFuZGxlciAoR2FsYXh5KQogICAgICAg
ICB0aGlzLm9uKCAnZXJyb3InLCBmdW5jdGlvbiggbW9kZWwsIHhociwgb3B0aW9ucywgbXNnLCBk
ZXRhaWxzICl7CiAgICAgICAgICAgICAvL3RoaXMuZXJyb3JIYW5kbGVyKCBtb2RlbCwgeGhyLCBv
cHRpb25zLCBtc2csIGRldGFpbHMgKTsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIG1vZGVs
LCB4aHIsIG9wdGlvbnMsIG1zZywgZGV0YWlscyApOwoKZGlmZiAtciA1ZWE5ZmMyZjc1YWFlOGU1
MmUxNjRhYjc1YzcxYWM5N2Y4MmJmZjI0IC1yIGIxOGZjZTY5OGNhMGIyOWFhY2E3NzMzPQpjZjli
YTk1YjY1YzU2Y2E0OCBzdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVsLWVk
aXQtY3VycmVudC5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9oaXN0b3J5LXBh
bmVsLWVkaXQtY3VycmVudC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9oaXN0
b3J5LXBhbmVsLWVkaXQtY3VycmVudC5qcwpAQCAtMzc5LDIxICszNzksMzEgQEAKICAgICB9LAo9
MjAKIC8vVE9ETzogdGhpcyBzZWVtcyBtb3JlIGxpa2UgYSBwZXIgdXNlciBtZXNzYWdlIHRoYW4g
YSBoaXN0b3J5IG1lc3NhZ2U7IElPPQpXLCB0aGlzIGRvZXNuJ3QgYmVsb25nIGhlcmUKKyAgICAv
KiogT3ZlcnJpZGUgdG8gcHJlc2VydmUgdGhlIHF1b3RhIG1lc3NhZ2UgKi8KKyAgICBjbGVhck1l
c3NhZ2VzIDogZnVuY3Rpb24oIGV2ICl7CisgICAgICAgIHZhciAkdGFyZ2V0ID0zRCAhXy5pc1Vu
ZGVmaW5lZCggZXYgKT8KKyAgICAgICAgICAgICQoIGV2LmN1cnJlbnRUYXJnZXQgKQorICAgICAg
ICAgICAgOnRoaXMuJG1lc3NhZ2VzKCkuY2hpbGRyZW4oICdbY2xhc3MkPTNEIm1lc3NhZ2UiXScg
KTsKKyAgICAgICAgJHRhcmdldCA9M0QgJHRhcmdldC5ub3QoICcucXVvdGEtbWVzc2FnZScgKTsK
KyAgICAgICAgJHRhcmdldC5mYWRlT3V0KCB0aGlzLmZ4U3BlZWQsIGZ1bmN0aW9uKCl7CisgICAg
ICAgICAgICAkKCB0aGlzICkucmVtb3ZlKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4g
dGhpczsKKyAgICB9LAorCiAgICAgLyoqIFNob3cgdGhlIG92ZXIgcXVvdGEgbWVzc2FnZSAod2hp
Y2ggaGFwcGVucyB0byBiZSBpbiB0aGUgaGlzdG9yeSBwYT0KbmVsKS4KICAgICAgKi8KICAgICBz
aG93UXVvdGFNZXNzYWdlIDogZnVuY3Rpb24oKXsKLSAgICAgICAgdmFyIG1zZyA9M0QgdGhpcy4k
ZWwuZmluZCggJy5xdW90YS1tZXNzYWdlJyApOwotICAgICAgICAvL3RoaXMubG9nKCB0aGlzICsg
JyBzaG93aW5nIHF1b3RhIG1lc3NhZ2U6JywgbXNnLCB1c2VyRGF0YSApOwotICAgICAgICBpZigg
bXNnLmlzKCAnOmhpZGRlbicgKSApeyBtc2cuc2xpZGVEb3duKCB0aGlzLmZ4U3BlZWQgKTsgfQor
ICAgICAgICB2YXIgJG1zZyA9M0QgdGhpcy4kKCAnLnF1b3RhLW1lc3NhZ2UnICk7CisgICAgICAg
IGlmKCAkbXNnLmlzKCAnOmhpZGRlbicgKSApeyAkbXNnLnNsaWRlRG93biggdGhpcy5meFNwZWVk
ICk7IH0KICAgICB9LAo9MjAKIC8vVE9ETzogdGhpcyBzZWVtcyBtb3JlIGxpa2UgYSBwZXIgdXNl
ciBtZXNzYWdlIHRoYW4gYSBoaXN0b3J5IG1lc3NhZ2UKICAgICAvKiogSGlkZSB0aGUgb3ZlciBx
dW90YSBtZXNzYWdlICh3aGljaCBoYXBwZW5zIHRvIGJlIGluIHRoZSBoaXN0b3J5IHBhPQpuZWwp
LgogICAgICAqLwogICAgIGhpZGVRdW90YU1lc3NhZ2UgOiBmdW5jdGlvbigpewotICAgICAgICB2
YXIgbXNnID0zRCB0aGlzLiRlbC5maW5kKCAnLnF1b3RhLW1lc3NhZ2UnICk7Ci0gICAgICAgIC8v
dGhpcy5sb2coIHRoaXMgKyAnIGhpZGluZyBxdW90YSBtZXNzYWdlOicsIG1zZywgdXNlckRhdGEg
KTsKLSAgICAgICAgaWYoICFtc2cuaXMoICc6aGlkZGVuJyApICl7IG1zZy5zbGlkZVVwKCB0aGlz
LmZ4U3BlZWQgKTsgfQorICAgICAgICB2YXIgJG1zZyA9M0QgdGhpcy4kKCAnLnF1b3RhLW1lc3Nh
Z2UnICk7CisgICAgICAgIGlmKCAhJG1zZy5pcyggJzpoaWRkZW4nICkgKXsgJG1zZy5zbGlkZVVw
KCB0aGlzLmZ4U3BlZWQgKTsgfQogICAgIH0sCj0yMAogICAgIC8qKiBSZXR1cm4gYSBzdHJpbmcg
cmVwIG9mIHRoZSBoaXN0b3J5CgpkaWZmIC1yIDVlYTlmYzJmNzVhYWU4ZTUyZTE2NGFiNzVjNzFh
Yzk3ZjgyYmZmMjQgLXIgYjE4ZmNlNjk4Y2EwYjI5YWFjYTc3MzM9CmNmOWJhOTViNjVjNTZjYTQ4
IHN0YXRpYy9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwuanMKLS0tIGEvc3RhdGlj
L3NjcmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9yeS1wYW5lbC5qcworKysgYi9zdGF0aWMvc2NyaXB0
cy9tdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVsLmpzCkBAIC0zODEsMTIgKzM4MSw5IEBACiAgICAg
LyoqIGV2ZW50IG1hcCAqLwogICAgIGV2ZW50cyA6IF8uZXh0ZW5kKCBfLmNsb25lKCBfc3VwZXIu
cHJvdG90eXBlLmV2ZW50cyApLCB7CiAgICAgICAgIC8vIHRvZ2dsZSBsaXN0IGl0ZW0gc2VsZWN0
b3JzCi0gICAgICAgICdjbGljayAuc2hvdy1zZWxlY3RvcnMtYnRuJyAgICAgICAgICAgICAgICAg
OiAndG9nZ2xlU2VsZWN0b3JzJworICAgICAgICAnY2xpY2sgLnNob3ctc2VsZWN0b3JzLWJ0bicg
ICAgICAgICA6ICd0b2dnbGVTZWxlY3RvcnMnLAogICAgICAgICAvLyBhbGxvdyAoZXJyb3IpIG1l
c3NhZ2VzIHRvIGJlIGNsaWNrZWQgYXdheQotLy9UT0RPOiBzd2l0Y2ggdG8gY29tbW9uIGNsb3Nl
IChYKSBpZGlvbQotICAgICAgICAvLydjbGljayAubWVzc2FnZXMnICAgICAgICAgICAgICAgOiAn
Y2xlYXJNZXNzYWdlcycsCi0vL1RPRE86IHJlbW92ZQotICAgICAgICAvLydjbGljayAuaGlzdG9y
eS1zZWFyY2gtYnRuJyAgICAgOiAndG9nZ2xlU2VhcmNoQ29udHJvbHMnCisgICAgICAgICdjbGlj
ayAubWVzc2FnZXMgW2NsYXNzJD0zRG1lc3NhZ2VdJyAgOiAnY2xlYXJNZXNzYWdlcycKICAgICB9
KSwKPTIwCiAgICAgLyoqIEhhbmRsZSB0aGUgdXNlciB0b2dnbGluZyB0aGUgZGVsZXRlZCB2aXNp
YmlsaXR5IGJ5OgpAQCAtNDU3LDE0ICs0NTQsMTQgQEAKICAgICAgKi8KICAgICBlcnJvckhhbmRs
ZXIgOiBmdW5jdGlvbiggbW9kZWwsIHhociwgb3B0aW9ucywgbXNnLCBkZXRhaWxzICl7CiAgICAg
ICAgIHRoaXMuZXJyb3IoIG1vZGVsLCB4aHIsIG9wdGlvbnMsIG1zZywgZGV0YWlscyApOwotLy9U
T0RPOiBnZXR0aW5nIEpTT04gcGFyc2UgZXJyb3JzIGZyb20ganEgbWlncmF0ZQo9MjAKICAgICAg
ICAgLy8gaW50ZXJydXB0ZWQgYWpheAogICAgICAgICBpZiggeGhyICYmIHhoci5zdGF0dXMgPTNE
PTNEPTNEIDAgJiYgeGhyLnJlYWR5U3RhdGUgPTNEPTNEPTNEIDAgKXsKKyAgICAgICAgICAgIC8v
VE9ETzogZ21haWwgc3R5bGUgJ3JldHJ5aW5nIGluIE5zJwo9MjAKICAgICAgICAgLy8gYmFkIGdh
dGV3YXkKICAgICAgICAgfSBlbHNlIGlmKCB4aHIgJiYgeGhyLnN0YXR1cyA9M0Q9M0Q9M0QgNTAy
ICl7Ci0vL1RPRE86IGdtYWlsIHN0eWxlICdyZWNvbm5lY3RpbmcgaW4gTnMnCisgICAgICAgICAg
ICAvL1RPRE86IGdtYWlsIHN0eWxlICdyZXRyeWluZyBpbiBOcycKPTIwCiAgICAgICAgIC8vIG90
aGVyd2lzZSwgc2hvdyBhbiBlcnJvciBtZXNzYWdlIGluc2lkZSB0aGUgcGFuZWwKICAgICAgICAg
fSBlbHNlIHsKQEAgLTU1MSw3ICs1NDgsNyBAQAogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgJG1zZy5hcHBlbmQoICcgJywgJGRldGFpbHNMaW5rICk7CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuICRtc2dDb250YWluZXIuaHRtbCggJG1zZyApOworICAgICAgICByZXR1cm4gJG1z
Z0NvbnRhaW5lci5hcHBlbmQoICRtc2cgKTsKICAgICB9LAo9MjAKICAgICAvKiogY29udmVydCBt
c2cgYW5kIGRldGFpbHMgaW50byBtb2RhbCBvcHRpb25zIHVzYWJsZSBieSBHYWxheHkubW9kYWwg
PQoqLwpAQCAtNTgyLDEwICs1NzksMTIgQEAKPTIwCiAgICAgLyoqIFJlbW92ZSBhbGwgbWVzc2Fn
ZXMgZnJvbSB0aGUgcGFuZWwuICovCiAgICAgY2xlYXJNZXNzYWdlcyA6IGZ1bmN0aW9uKCBldiAp
ewotICAgICAgICAkKCBldi5jdXJyZW50VGFyZ2V0ICkuZmFkZU91dCggdGhpcy5meFNwZWVkLCBm
dW5jdGlvbigpeworICAgICAgICB2YXIgJHRhcmdldCA9M0QgIV8uaXNVbmRlZmluZWQoIGV2ICk/
CisgICAgICAgICAgICAkKCBldi5jdXJyZW50VGFyZ2V0ICkKKyAgICAgICAgICAgIDp0aGlzLiRt
ZXNzYWdlcygpLmNoaWxkcmVuKCAnW2NsYXNzJD0zRCJtZXNzYWdlIl0nICk7CisgICAgICAgICR0
YXJnZXQuZmFkZU91dCggdGhpcy5meFNwZWVkLCBmdW5jdGlvbigpewogICAgICAgICAgICAgJCgg
dGhpcyApLnJlbW92ZSgpOwogICAgICAgICB9KTsKLSAgICAgICAgLy90aGlzLiRtZXNzYWdlcygp
LmNoaWxkcmVuKCkubm90KCAnLnF1b3RhLW1lc3NhZ2UnICkucmVtb3ZlKCk7CiAgICAgICAgIHJl
dHVybiB0aGlzOwogICAgIH0sCj0yMAoKZGlmZiAtciA1ZWE5ZmMyZjc1YWFlOGU1MmUxNjRhYjc1
YzcxYWM5N2Y4MmJmZjI0IC1yIGIxOGZjZTY5OGNhMGIyOWFhY2E3NzMzPQpjZjliYTk1YjY1YzU2
Y2E0OCBzdGF0aWMvc2NyaXB0cy9tdmMvbGlzdC9saXN0LXBhbmVsLmpzCi0tLSBhL3N0YXRpYy9z
Y3JpcHRzL212Yy9saXN0L2xpc3QtcGFuZWwuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2xp
c3QvbGlzdC1wYW5lbC5qcwpAQCAtMTE5LDYgKzExOSw4IEBACiAgICAgX3NldFVwTGlzdGVuZXJz
IDogZnVuY3Rpb24oKXsKICAgICAgICAgdGhpcy5vZmYoKTsKPTIwCisgICAgICAgIC8vVE9ETzog
bW92ZSBlcnJvckhhbmRsZXIgZG93biBpbnRvIGxpc3QtcGFuZWwgZnJvbSBoaXN0b3J5LXBhbmVs
ID0Kb3IKKyAgICAgICAgLy8gIHBhc3MgdG8gZ2xvYmFsIGVycm9yIGhhbmRsZXIgKEdhbGF4eSkK
ICAgICAgICAgdGhpcy5vbiggJ2Vycm9yJywgZnVuY3Rpb24oIG1vZGVsLCB4aHIsIG9wdGlvbnMs
IG1zZywgZGV0YWlscyApewogICAgICAgICAgICAgLy90aGlzLmVycm9ySGFuZGxlciggbW9kZWws
IHhociwgb3B0aW9ucywgbXNnLCBkZXRhaWxzICk7CiAgICAgICAgICAgICBjb25zb2xlLmVycm9y
KCBtb2RlbCwgeGhyLCBvcHRpb25zLCBtc2csIGRldGFpbHMgKTsKCmRpZmYgLXIgNWVhOWZjMmY3
NWFhZThlNTJlMTY0YWI3NWM3MWFjOTdmODJiZmYyNCAtciBiMThmY2U2OThjYTBiMjlhYWNhNzcz
Mz0KY2Y5YmE5NWI2NWM1NmNhNDggc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2hp
c3RvcnktcGFuZWwtZWRpdC1jdXJyPQplbnQuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2Vk
L212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwtZWRpdC1jdXJyZW50LmpzCisrKyBiL3N0YXRpYy9z
Y3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVsLWVkaXQtY3VycmVudC5qcwpA
QCAtMSwxICsxLDEgQEAKLWRlZmluZShbIm12Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwiLCJtdmMv
aGlzdG9yeS9oaXN0b3J5LXBhbmVsLWVkaXQiLCJtdmMvPQpjb2xsZWN0aW9uL2NvbGxlY3Rpb24t
cGFuZWwiLCJtdmMvYmFzZS1tdmMiLCJ1dGlscy9sb2NhbGl6YXRpb24iXSxmdW5jdGlvbig9CmQs
YyxhLGgsYil7dmFyIGU9M0RoLlNlc3Npb25TdG9yYWdlTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7
dGFnc0VkaXRvclNob3duOj0KZmFsc2UsYW5ub3RhdGlvbkVkaXRvclNob3duOmZhbHNlLHNjcm9s
bFBvc2l0aW9uOjB9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0PQp1cm4iSGlzdG9yeVBhbmVsUHJl
ZnMoIitKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpKSsiKSJ9fSk7ZS5zdG9yYWdlS2V5PQo9
M0RmdW5jdGlvbiBmKCl7cmV0dXJuKCJoaXN0b3J5LXBhbmVsIil9O3ZhciBnPTNEYy5IaXN0b3J5
UGFuZWxFZGl0O3ZhciBpPQo9M0RnLmV4dGVuZCh7Y2xhc3NOYW1lOmcucHJvdG90eXBlLmNsYXNz
TmFtZSsiIGN1cnJlbnQtaGlzdG9yeS1wYW5lbCIsZW1wdHk9Ck1zZzpiKCJUaGlzIGhpc3Rvcnkg
aXMgZW1wdHkuIENsaWNrICdHZXQgRGF0YScgb24gdGhlIGxlZnQgdG9vbCBtZW51IHRvIHN0YT0K
cnQiKSxub25lRm91bmRNc2c6YigiTm8gbWF0Y2hpbmcgZGF0YXNldHMgZm91bmQiKSxIRENBVmll
d0NsYXNzOmcucHJvdG90eXBlPQouSERDQVZpZXdDbGFzcy5leHRlbmQoe2ZvbGRvdXRTdHlsZToi
ZHJpbGxkb3duIn0pLGluaXRpYWxpemU6ZnVuY3Rpb24oail7aj0KPTNEanx8e307dGhpcy5wcmVm
ZXJlbmNlcz0zRG5ldyBlKF8uZXh0ZW5kKHtpZDplLnN0b3JhZ2VLZXkoKX0sXy5waWNrKGosXy5r
PQpleXMoZS5wcm90b3R5cGUuZGVmYXVsdHMpKSkpO2cucHJvdG90eXBlLmluaXRpYWxpemUuY2Fs
bCh0aGlzLGopO3RoaXMucGFuZWw9ClN0YWNrPTNEW107dGhpcy5jdXJyZW50Q29udGVudElkPTNE
ai5jdXJyZW50Q29udGVudElkfHxudWxsfSxfc2V0VXBMaXN0ZW5lcj0KczpmdW5jdGlvbigpe2cu
cHJvdG90eXBlLl9zZXRVcExpc3RlbmVycy5jYWxsKHRoaXMpO3ZhciBqPTNEdGhpczt0aGlzLiRz
Y3JvPQpsbENvbnRhaW5lcigpLm9uKCJzY3JvbGwiLGZ1bmN0aW9uKGspe2lmKGouJGVsLmlzKCI6
dmlzaWJsZSIpKXtqLnByZWZlcmVuY2U9CnMuc2V0KCJzY3JvbGxQb3NpdGlvbiIsJCh0aGlzKS5z
Y3JvbGxUb3AoKSl9fSk7dGhpcy5vbigibmV3LW1vZGVsIixmdW5jdGlvbj0KKCl7ai5wcmVmZXJl
bmNlcy5zZXQoInNjcm9sbFBvc2l0aW9uIiwwKX0pfSxsb2FkQ3VycmVudEhpc3Rvcnk6ZnVuY3Rp
b24oayl7PQp0aGlzLmRlYnVnKHRoaXMrIi5sb2FkQ3VycmVudEhpc3RvcnkiKTt2YXIgaj0zRHRo
aXM7cmV0dXJuIHRoaXMubG9hZEhpc3Rvcnk9CldpdGhEZXRhaWxzKCJjdXJyZW50IixrKS50aGVu
KGZ1bmN0aW9uKG0sbCl7ai50cmlnZ2VyKCJjdXJyZW50LWhpc3RvcnkiLGopfT0KKX0sc3dpdGNo
VG9IaXN0b3J5OmZ1bmN0aW9uKG0sbCl7dmFyIGo9M0R0aGlzLGs9M0RmdW5jdGlvbigpe3JldHVy
biBqUXVlcnkuPQpnZXRKU09OKGdhbGF4eV9jb25maWcucm9vdCsiaGlzdG9yeS9zZXRfYXNfY3Vy
cmVudD9pZD0zRCIrbSl9O3JldHVybiB0aGlzLmw9Cm9hZEhpc3RvcnlXaXRoRGV0YWlscyhtLGws
aykudGhlbihmdW5jdGlvbihvLG4pe2oudHJpZ2dlcigic3dpdGNoZWQtaGlzdG9yeT0KIixqKX0p
fSxjcmVhdGVOZXdIaXN0b3J5OmZ1bmN0aW9uKGwpe2lmKCFHYWxheHl8fCFHYWxheHkuY3VyclVz
ZXJ8fEdhbGF4eS5jPQp1cnJVc2VyLmlzQW5vbnltb3VzKCkpe3RoaXMuZGlzcGxheU1lc3NhZ2Uo
ImVycm9yIixiKCJZb3UgbXVzdCBiZSBsb2dnZWQgaW49CiB0byBjcmVhdGUgaGlzdG9yaWVzIikp
O3JldHVybiAkLndoZW4oKX12YXIgaj0zRHRoaXMsaz0zRGZ1bmN0aW9uKCl7cmV0dXJuID0KalF1
ZXJ5LmdldEpTT04oZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0b3J5L2NyZWF0ZV9uZXdfY3VycmVu
dCIpfTtyZXR1cm4gdGhpPQpzLmxvYWRIaXN0b3J5KHVuZGVmaW5lZCxsLGspLnRoZW4oZnVuY3Rp
b24obixtKXtqLnRyaWdnZXIoIm5ldy1oaXN0b3J5IixqKX09Cil9LHNldE1vZGVsOmZ1bmN0aW9u
KGssaixsKXtnLnByb3RvdHlwZS5zZXRNb2RlbC5jYWxsKHRoaXMsayxqLGwpO2lmKHRoaXMubT0K
b2RlbCl7dGhpcy5sb2coImNoZWNraW5nIGZvciB1cGRhdGVzIik7dGhpcy5tb2RlbC5jaGVja0Zv
clVwZGF0ZXMoKX1yZXR1cm4gPQp0aGlzfSxfc2V0VXBDb2xsZWN0aW9uTGlzdGVuZXJzOmZ1bmN0
aW9uKCl7Zy5wcm90b3R5cGUuX3NldFVwQ29sbGVjdGlvbkxpc3Q9CmVuZXJzLmNhbGwodGhpcyk7
dGhpcy5jb2xsZWN0aW9uLm9uKCJzdGF0ZTpyZWFkeSIsZnVuY3Rpb24oayxsLGope2lmKCghay5n
ZT0KdCgidmlzaWJsZSIpKSYmKCF0aGlzLnN0b3JhZ2UuZ2V0KCJzaG93X2hpZGRlbiIpKSl7dGhp
cy5yZW1vdmVJdGVtVmlldyhrKX19PQosdGhpcyl9LF9zZXRVcE1vZGVsTGlzdGVuZXJzOmZ1bmN0
aW9uKCl7Zy5wcm90b3R5cGUuX3NldFVwTW9kZWxMaXN0ZW5lcnMuY2E9CmxsKHRoaXMpO2lmKEdh
bGF4eSYmR2FsYXh5LnF1b3RhTWV0ZXIpe3RoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwiY2hhbmdl
Om5pYz0KZV9zaXplIixmdW5jdGlvbigpe0dhbGF4eS5xdW90YU1ldGVyLnVwZGF0ZSgpfSl9fSxf
YnVpbGROZXdSZW5kZXI6ZnVuY3Rpb24oPQope2lmKCF0aGlzLm1vZGVsKXtyZXR1cm4gJCgpfXZh
ciBqPTNEZy5wcm90b3R5cGUuX2J1aWxkTmV3UmVuZGVyLmNhbGwodGhpcyk9CjtqLmZpbmQoIi5z
ZWFyY2giKS5wcmVwZW5kVG8oai5maW5kKCIuY29udHJvbHMiKSk7dGhpcy5fcmVuZGVyUXVvdGFN
ZXNzYWdlKD0Kaik7cmV0dXJuIGp9LF9yZW5kZXJRdW90YU1lc3NhZ2U6ZnVuY3Rpb24oail7aj0z
RGp8fHRoaXMuJGVsO3JldHVybiAkKHRoaXMuPQp0ZW1wbGF0ZXMucXVvdGFNc2coe30sdGhpcykp
LnByZXBlbmRUbyhqLmZpbmQoIi5tZXNzYWdlcyIpKX0sX3JlbmRlckVtcHR5TWU9CnNzYWdlOmZ1
bmN0aW9uKGwpe3ZhciBrPTNEdGhpcyxqPTNEay4kZW1wdHlNZXNzYWdlKGwpLG09M0QkKCIudG9v
bE1lbnVDb250YT0KaW5lciIpO2lmKChfLmlzRW1wdHkoay52aWV3cykmJiFrLnNlYXJjaEZvcikm
JihHYWxheHkmJkdhbGF4eS51cGxvYWQmJm0uc2l6PQplKCkpKXtqLmVtcHR5KCk7ai5odG1sKFti
KCJUaGlzIGhpc3RvcnkgaXMgZW1wdHkiKSwiLiAiLGIoIllvdSBjYW4gIiksJzxhIGM9Cmxhc3M9
M0QidXBsb2FkZXItbGluayIgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCkiPicsYigibG9hZCB5
b3VyIG93biBkYXRhIj0KKSwiPC9hPiIsYigiIG9yICIpLCc8YSBjbGFzcz0zRCJnZXQtZGF0YS1s
aW5rIiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSI+PQonLGIoImdldCBkYXRhIGZyb20gYW4g
ZXh0ZXJuYWwgc291cmNlIiksIjwvYT4iXS5qb2luKCIiKSk7ai5maW5kKCIudXBsb2FkZXI9Ci1s
aW5rIikuY2xpY2soZnVuY3Rpb24obil7R2FsYXh5LnVwbG9hZC5zaG93KG4pfSk7ai5maW5kKCIu
Z2V0LWRhdGEtbGluayIpLj0KY2xpY2soZnVuY3Rpb24obil7bS5wYXJlbnQoKS5zY3JvbGxUb3Ao
MCk7bS5maW5kKCdzcGFuOmNvbnRhaW5zKCJHZXQgRGF0YSIpPQonKS5jbGljaygpfSk7cmV0dXJu
IGouc2hvdygpfXJldHVybiBnLnByb3RvdHlwZS5fcmVuZGVyRW1wdHlNZXNzYWdlLmNhbGwodGg9
CmlzLGwpfSxfcmVuZGVyVGFnczpmdW5jdGlvbihqKXt2YXIgaz0zRHRoaXM7Zy5wcm90b3R5cGUu
X3JlbmRlclRhZ3MuY2FsbCh0aD0KaXMsaik7aWYodGhpcy5wcmVmZXJlbmNlcy5nZXQoInRhZ3NF
ZGl0b3JTaG93biIpKXt0aGlzLnRhZ3NFZGl0b3IudG9nZ2xlKHRyPQp1ZSl9dGhpcy50YWdzRWRp
dG9yLm9uKCJoaWRkZW5VbnRpbEFjdGl2YXRlZDpzaG93biBoaWRkZW5VbnRpbEFjdGl2YXRlZDpo
aWQ9CmRlbiIsZnVuY3Rpb24obCl7ay5wcmVmZXJlbmNlcy5zZXQoInRhZ3NFZGl0b3JTaG93biIs
bC5oaWRkZW4pfSl9LF9yZW5kZXJBbj0Kbm90YXRpb246ZnVuY3Rpb24oail7dmFyIGs9M0R0aGlz
O2cucHJvdG90eXBlLl9yZW5kZXJBbm5vdGF0aW9uLmNhbGwodGhpcyxqPQopO2lmKHRoaXMucHJl
ZmVyZW5jZXMuZ2V0KCJhbm5vdGF0aW9uRWRpdG9yU2hvd24iKSl7dGhpcy5hbm5vdGF0aW9uRWRp
dG9yLnQ9Cm9nZ2xlKHRydWUpfXRoaXMuYW5ub3RhdGlvbkVkaXRvci5vbigiaGlkZGVuVW50aWxB
Y3RpdmF0ZWQ6c2hvd24gaGlkZGVuVW50aT0KbEFjdGl2YXRlZDpoaWRkZW4iLGZ1bmN0aW9uKGwp
e2sucHJlZmVyZW5jZXMuc2V0KCJhbm5vdGF0aW9uRWRpdG9yU2hvd24iLGwuPQpoaWRkZW4pfSl9
LF9zd2FwTmV3UmVuZGVyOmZ1bmN0aW9uKGspe2cucHJvdG90eXBlLl9zd2FwTmV3UmVuZGVyLmNh
bGwodGhpcyw9CmspO3ZhciBqPTNEdGhpcztfLmRlbGF5KGZ1bmN0aW9uKCl7dmFyIGw9M0RqLnBy
ZWZlcmVuY2VzLmdldCgic2Nyb2xsUG9zaXRpbz0KbiIpO2lmKGwpe2ouc2Nyb2xsVG8obCl9fSwx
MCk7cmV0dXJuIHRoaXN9LF9hdHRhY2hJdGVtczpmdW5jdGlvbihrKXtnLnByb3RvPQp0eXBlLl9h
dHRhY2hJdGVtcy5jYWxsKHRoaXMsayk7dmFyIGo9M0R0aGlzLGw7aWYoai5jdXJyZW50Q29udGVu
dElkJiYobD0zRGo9Ci52aWV3RnJvbU1vZGVsSWQoai5jdXJyZW50Q29udGVudElkKSkpe2ouc2V0
Q3VycmVudENvbnRlbnQobCl9cmV0dXJuIHRoaXN9LD0KYWRkSXRlbVZpZXc6ZnVuY3Rpb24obCxt
LGspe3ZhciBqPTNEZy5wcm90b3R5cGUuYWRkSXRlbVZpZXcuY2FsbCh0aGlzLGwsbSxrPQopO2lm
KCFqKXtyZXR1cm4gan1pZih0aGlzLnBhbmVsU3RhY2subGVuZ3RoKXtyZXR1cm4gdGhpcy5fY29s
bGFwc2VEcmlsbGRvd249ClBhbmVsKCl9cmV0dXJuIGp9LF9zZXRVcEl0ZW1WaWV3TGlzdGVuZXJz
OmZ1bmN0aW9uKGspe3ZhciBqPTNEdGhpcztnLnByb3RvdD0KeXBlLl9zZXRVcEl0ZW1WaWV3TGlz
dGVuZXJzLmNhbGwoaixrKTtrLm9uKCJleHBhbmRlZDpkcmlsbGRvd24iLGZ1bmN0aW9uKG0sPQps
KXt0aGlzLl9leHBhbmREcmlsbGRvd25QYW5lbChsKX0sdGhpcyk7ay5vbigiY29sbGFwc2VkOmRy
aWxsZG93biIsZnVuY3Rpb249CihtLGwpe3RoaXMuX2NvbGxhcHNlRHJpbGxkb3duUGFuZWwobCl9
LHRoaXMpO2sub24oImRpc3BsYXkgZWRpdCBwYXJhbXMgcmVydT0KbiByZXBvcnQtZXJyIHZpc3Vh
bGl6ZSIsZnVuY3Rpb24obCxtKXt0aGlzLnNldEN1cnJlbnRDb250ZW50KGwpfSx0aGlzKTtyZXR1
PQpybiB0aGlzfSxzZXRDdXJyZW50Q29udGVudDpmdW5jdGlvbihqKXt0aGlzLiQoIi5oaXN0b3J5
LWNvbnRlbnQuY3VycmVudC1jb249CnRlbnQiKS5yZW1vdmVDbGFzcygiY3VycmVudC1jb250ZW50
Iik7aWYoail7ai4kZWwuYWRkQ2xhc3MoImN1cnJlbnQtY29udGVudD0KIik7dGhpcy5jdXJyZW50
Q29udGVudElkPTNEai5tb2RlbC5pZH1lbHNle3RoaXMuY3VycmVudENvbnRlbnRJZD0zRG51bGx9
fSxfPQpleHBhbmREcmlsbGRvd25QYW5lbDpmdW5jdGlvbihqKXt0aGlzLnBhbmVsU3RhY2sucHVz
aChqKTt0aGlzLiQoIj4gLmNvbnRyb2w9CnMiKS5hZGQodGhpcy4kbGlzdCgpKS5oaWRlKCk7ai5w
YXJlbnROYW1lPTNEdGhpcy5tb2RlbC5nZXQoIm5hbWUiKTt0aGlzLiRlbD0KLmFwcGVuZChqLnJl
bmRlcigpLiRlbCl9LF9jb2xsYXBzZURyaWxsZG93blBhbmVsOmZ1bmN0aW9uKGope3RoaXMucGFu
ZWxTdGFjPQprLnBvcCgpO3RoaXMucmVuZGVyKCl9LGNvbm5lY3RUb1F1b3RhTWV0ZXI6ZnVuY3Rp
b24oail7aWYoIWope3JldHVybiB0aGlzfXQ9Cmhpcy5saXN0ZW5UbyhqLCJxdW90YTpvdmVyIix0
aGlzLnNob3dRdW90YU1lc3NhZ2UpO3RoaXMubGlzdGVuVG8oaiwicXVvdGE6dT0KbmRlciIsdGhp
cy5oaWRlUXVvdGFNZXNzYWdlKTt0aGlzLm9uKCJyZW5kZXJlZCByZW5kZXJlZDppbml0aWFsIixm
dW5jdGlvbigpPQp7aWYoaiYmai5pc092ZXJRdW90YSgpKXt0aGlzLnNob3dRdW90YU1lc3NhZ2Uo
KX19KTtyZXR1cm4gdGhpc30sc2hvd1F1b3RhTWU9CnNzYWdlOmZ1bmN0aW9uKCl7dmFyIGo9M0R0
aGlzLiRlbC5maW5kKCIucXVvdGEtbWVzc2FnZSIpO2lmKGouaXMoIjpoaWRkZW4iKT0KKXtqLnNs
aWRlRG93bih0aGlzLmZ4U3BlZWQpfX0saGlkZVF1b3RhTWVzc2FnZTpmdW5jdGlvbigpe3ZhciBq
PTNEdGhpcy4kZWwuPQpmaW5kKCIucXVvdGEtbWVzc2FnZSIpO2lmKCFqLmlzKCI6aGlkZGVuIikp
e2ouc2xpZGVVcCh0aGlzLmZ4U3BlZWQpfX0sdG9TdHI9CmluZzpmdW5jdGlvbigpe3JldHVybiJD
dXJyZW50SGlzdG9yeVBhbmVsKCIrKCh0aGlzLm1vZGVsKT8odGhpcy5tb2RlbC5nZXQoIj0KbmFt
ZSIpKTooIiIpKSsiKSJ9fSk7aS5wcm90b3R5cGUudGVtcGxhdGVzPTNEKGZ1bmN0aW9uKCl7dmFy
IGo9M0RoLndyYXBUZW1wPQpsYXRlKFsnPGRpdiBjbGFzcz0zRCJxdW90YS1tZXNzYWdlIGVycm9y
bWVzc2FnZSI+JyxiKCJZb3UgYXJlIG92ZXIgeW91ciBkaXM9CmsgcXVvdGEiKSwiLiAiLGIoIlRv
b2wgZXhlY3V0aW9uIGlzIG9uIGhvbGQgdW50aWwgeW91ciBkaXNrIHVzYWdlIGRyb3BzIGJlbD0K
b3cgeW91ciBhbGxvY2F0ZWQgcXVvdGEiKSwiLiIsIjwvZGl2PiJdLCJoaXN0b3J5Iik7cmV0dXJu
IF8uZXh0ZW5kKF8uY2xvbmUoPQpnLnByb3RvdHlwZS50ZW1wbGF0ZXMpLHtxdW90YU1zZzpqfSl9
KCkpO3JldHVybntDdXJyZW50SGlzdG9yeVBhbmVsOml9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorZGVmaW5lKFsibXZjL2hpc3RvcnkvaGlzdG9yeS1tb2RlbCIsIm12Yy9oaXN0b3J5
L2hpc3RvcnktcGFuZWwtZWRpdCIsIm12Yy89CmNvbGxlY3Rpb24vY29sbGVjdGlvbi1wYW5lbCIs
Im12Yy9iYXNlLW12YyIsInV0aWxzL2xvY2FsaXphdGlvbiJdLGZ1bmN0aW9uKD0KZCxjLGEsaCxi
KXt2YXIgZT0zRGguU2Vzc2lvblN0b3JhZ2VNb2RlbC5leHRlbmQoe2RlZmF1bHRzOnt0YWdzRWRp
dG9yU2hvd246PQpmYWxzZSxhbm5vdGF0aW9uRWRpdG9yU2hvd246ZmFsc2Usc2Nyb2xsUG9zaXRp
b246MH0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXQ9CnVybiJIaXN0b3J5UGFuZWxQcmVmcygiK0pT
T04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpKyIpIn19KTtlLnN0b3JhZ2VLZXk9Cj0zRGZ1bmN0
aW9uIGYoKXtyZXR1cm4oImhpc3RvcnktcGFuZWwiKX07dmFyIGc9M0RjLkhpc3RvcnlQYW5lbEVk
aXQ7dmFyIGk9Cj0zRGcuZXh0ZW5kKHtjbGFzc05hbWU6Zy5wcm90b3R5cGUuY2xhc3NOYW1lKyIg
Y3VycmVudC1oaXN0b3J5LXBhbmVsIixlbXB0eT0KTXNnOmIoIlRoaXMgaGlzdG9yeSBpcyBlbXB0
eS4gQ2xpY2sgJ0dldCBEYXRhJyBvbiB0aGUgbGVmdCB0b29sIG1lbnUgdG8gc3RhPQpydCIpLG5v
bmVGb3VuZE1zZzpiKCJObyBtYXRjaGluZyBkYXRhc2V0cyBmb3VuZCIpLEhEQ0FWaWV3Q2xhc3M6
Zy5wcm90b3R5cGU9Ci5IRENBVmlld0NsYXNzLmV4dGVuZCh7Zm9sZG91dFN0eWxlOiJkcmlsbGRv
d24ifSksaW5pdGlhbGl6ZTpmdW5jdGlvbihqKXtqPQo9M0RqfHx7fTt0aGlzLnByZWZlcmVuY2Vz
PTNEbmV3IGUoXy5leHRlbmQoe2lkOmUuc3RvcmFnZUtleSgpfSxfLnBpY2soaixfLms9CmV5cyhl
LnByb3RvdHlwZS5kZWZhdWx0cykpKSk7Zy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMs
aik7dGhpcy5wYW5lbD0KU3RhY2s9M0RbXTt0aGlzLmN1cnJlbnRDb250ZW50SWQ9M0RqLmN1cnJl
bnRDb250ZW50SWR8fG51bGx9LF9zZXRVcExpc3RlbmVyPQpzOmZ1bmN0aW9uKCl7Zy5wcm90b3R5
cGUuX3NldFVwTGlzdGVuZXJzLmNhbGwodGhpcyk7dmFyIGo9M0R0aGlzO3RoaXMuJHNjcm89Cmxs
Q29udGFpbmVyKCkub24oInNjcm9sbCIsZnVuY3Rpb24oayl7aWYoai4kZWwuaXMoIjp2aXNpYmxl
Iikpe2oucHJlZmVyZW5jZT0Kcy5zZXQoInNjcm9sbFBvc2l0aW9uIiwkKHRoaXMpLnNjcm9sbFRv
cCgpKX19KTt0aGlzLm9uKCJuZXctbW9kZWwiLGZ1bmN0aW9uPQooKXtqLnByZWZlcmVuY2VzLnNl
dCgic2Nyb2xsUG9zaXRpb24iLDApfSl9LGxvYWRDdXJyZW50SGlzdG9yeTpmdW5jdGlvbihrKXs9
CnRoaXMuZGVidWcodGhpcysiLmxvYWRDdXJyZW50SGlzdG9yeSIpO3ZhciBqPTNEdGhpcztyZXR1
cm4gdGhpcy5sb2FkSGlzdG9yeT0KV2l0aERldGFpbHMoImN1cnJlbnQiLGspLnRoZW4oZnVuY3Rp
b24obSxsKXtqLnRyaWdnZXIoImN1cnJlbnQtaGlzdG9yeSIsail9PQopfSxzd2l0Y2hUb0hpc3Rv
cnk6ZnVuY3Rpb24obSxsKXt2YXIgaj0zRHRoaXMsaz0zRGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVy
eS49CmdldEpTT04oZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0b3J5L3NldF9hc19jdXJyZW50P2lk
PTNEIittKX07cmV0dXJuIHRoaXMubD0Kb2FkSGlzdG9yeVdpdGhEZXRhaWxzKG0sbCxrKS50aGVu
KGZ1bmN0aW9uKG8sbil7ai50cmlnZ2VyKCJzd2l0Y2hlZC1oaXN0b3J5PQoiLGopfSl9LGNyZWF0
ZU5ld0hpc3Rvcnk6ZnVuY3Rpb24obCl7aWYoIUdhbGF4eXx8IUdhbGF4eS5jdXJyVXNlcnx8R2Fs
YXh5LmM9CnVyclVzZXIuaXNBbm9ueW1vdXMoKSl7dGhpcy5kaXNwbGF5TWVzc2FnZSgiZXJyb3Ii
LGIoIllvdSBtdXN0IGJlIGxvZ2dlZCBpbj0KIHRvIGNyZWF0ZSBoaXN0b3JpZXMiKSk7cmV0dXJu
ICQud2hlbigpfXZhciBqPTNEdGhpcyxrPTNEZnVuY3Rpb24oKXtyZXR1cm4gPQpqUXVlcnkuZ2V0
SlNPTihnYWxheHlfY29uZmlnLnJvb3QrImhpc3RvcnkvY3JlYXRlX25ld19jdXJyZW50Iil9O3Jl
dHVybiB0aGk9CnMubG9hZEhpc3RvcnkodW5kZWZpbmVkLGwsaykudGhlbihmdW5jdGlvbihuLG0p
e2oudHJpZ2dlcigibmV3LWhpc3RvcnkiLGopfT0KKX0sc2V0TW9kZWw6ZnVuY3Rpb24oayxqLGwp
e2cucHJvdG90eXBlLnNldE1vZGVsLmNhbGwodGhpcyxrLGosbCk7aWYodGhpcy5tPQpvZGVsKXt0
aGlzLmxvZygiY2hlY2tpbmcgZm9yIHVwZGF0ZXMiKTt0aGlzLm1vZGVsLmNoZWNrRm9yVXBkYXRl
cygpfXJldHVybiA9CnRoaXN9LF9zZXRVcENvbGxlY3Rpb25MaXN0ZW5lcnM6ZnVuY3Rpb24oKXtn
LnByb3RvdHlwZS5fc2V0VXBDb2xsZWN0aW9uTGlzdD0KZW5lcnMuY2FsbCh0aGlzKTt0aGlzLmNv
bGxlY3Rpb24ub24oInN0YXRlOnJlYWR5IixmdW5jdGlvbihrLGwsail7aWYoKCFrLmdlPQp0KCJ2
aXNpYmxlIikpJiYoIXRoaXMuc3RvcmFnZS5nZXQoInNob3dfaGlkZGVuIikpKXt0aGlzLnJlbW92
ZUl0ZW1WaWV3KGspfX09Cix0aGlzKX0sX3NldFVwTW9kZWxMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtn
LnByb3RvdHlwZS5fc2V0VXBNb2RlbExpc3RlbmVycy5jYT0KbGwodGhpcyk7aWYoR2FsYXh5JiZH
YWxheHkucXVvdGFNZXRlcil7dGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCJjaGFuZ2U6bmljPQpl
X3NpemUiLGZ1bmN0aW9uKCl7R2FsYXh5LnF1b3RhTWV0ZXIudXBkYXRlKCl9KX19LF9idWlsZE5l
d1JlbmRlcjpmdW5jdGlvbig9Cil7aWYoIXRoaXMubW9kZWwpe3JldHVybiAkKCl9dmFyIGo9M0Rn
LnByb3RvdHlwZS5fYnVpbGROZXdSZW5kZXIuY2FsbCh0aGlzKT0KO2ouZmluZCgiLnNlYXJjaCIp
LnByZXBlbmRUbyhqLmZpbmQoIi5jb250cm9scyIpKTt0aGlzLl9yZW5kZXJRdW90YU1lc3NhZ2Uo
PQpqKTtyZXR1cm4gan0sX3JlbmRlclF1b3RhTWVzc2FnZTpmdW5jdGlvbihqKXtqPTNEanx8dGhp
cy4kZWw7cmV0dXJuICQodGhpcy49CnRlbXBsYXRlcy5xdW90YU1zZyh7fSx0aGlzKSkucHJlcGVu
ZFRvKGouZmluZCgiLm1lc3NhZ2VzIikpfSxfcmVuZGVyRW1wdHlNZT0Kc3NhZ2U6ZnVuY3Rpb24o
bCl7dmFyIGs9M0R0aGlzLGo9M0RrLiRlbXB0eU1lc3NhZ2UobCksbT0zRCQoIi50b29sTWVudUNv
bnRhPQppbmVyIik7aWYoKF8uaXNFbXB0eShrLnZpZXdzKSYmIWsuc2VhcmNoRm9yKSYmKEdhbGF4
eSYmR2FsYXh5LnVwbG9hZCYmbS5zaXo9CmUoKSkpe2ouZW1wdHkoKTtqLmh0bWwoW2IoIlRoaXMg
aGlzdG9yeSBpcyBlbXB0eSIpLCIuICIsYigiWW91IGNhbiAiKSwnPGEgYz0KbGFzcz0zRCJ1cGxv
YWRlci1saW5rIiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSI+JyxiKCJsb2FkIHlvdXIgb3du
IGRhdGEiPQopLCI8L2E+IixiKCIgb3IgIiksJzxhIGNsYXNzPTNEImdldC1kYXRhLWxpbmsiIGhy
ZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApIj49CicsYigiZ2V0IGRhdGEgZnJvbSBhbiBleHRlcm5h
bCBzb3VyY2UiKSwiPC9hPiJdLmpvaW4oIiIpKTtqLmZpbmQoIi51cGxvYWRlcj0KLWxpbmsiKS5j
bGljayhmdW5jdGlvbihuKXtHYWxheHkudXBsb2FkLnNob3cobil9KTtqLmZpbmQoIi5nZXQtZGF0
YS1saW5rIikuPQpjbGljayhmdW5jdGlvbihuKXttLnBhcmVudCgpLnNjcm9sbFRvcCgwKTttLmZp
bmQoJ3NwYW46Y29udGFpbnMoIkdldCBEYXRhIik9CicpLmNsaWNrKCl9KTtyZXR1cm4gai5zaG93
KCl9cmV0dXJuIGcucHJvdG90eXBlLl9yZW5kZXJFbXB0eU1lc3NhZ2UuY2FsbCh0aD0KaXMsbCl9
LF9yZW5kZXJUYWdzOmZ1bmN0aW9uKGope3ZhciBrPTNEdGhpcztnLnByb3RvdHlwZS5fcmVuZGVy
VGFncy5jYWxsKHRoPQppcyxqKTtpZih0aGlzLnByZWZlcmVuY2VzLmdldCgidGFnc0VkaXRvclNo
b3duIikpe3RoaXMudGFnc0VkaXRvci50b2dnbGUodHI9CnVlKX10aGlzLnRhZ3NFZGl0b3Iub24o
ImhpZGRlblVudGlsQWN0aXZhdGVkOnNob3duIGhpZGRlblVudGlsQWN0aXZhdGVkOmhpZD0KZGVu
IixmdW5jdGlvbihsKXtrLnByZWZlcmVuY2VzLnNldCgidGFnc0VkaXRvclNob3duIixsLmhpZGRl
bil9KX0sX3JlbmRlckFuPQpub3RhdGlvbjpmdW5jdGlvbihqKXt2YXIgaz0zRHRoaXM7Zy5wcm90
b3R5cGUuX3JlbmRlckFubm90YXRpb24uY2FsbCh0aGlzLGo9Cik7aWYodGhpcy5wcmVmZXJlbmNl
cy5nZXQoImFubm90YXRpb25FZGl0b3JTaG93biIpKXt0aGlzLmFubm90YXRpb25FZGl0b3IudD0K
b2dnbGUodHJ1ZSl9dGhpcy5hbm5vdGF0aW9uRWRpdG9yLm9uKCJoaWRkZW5VbnRpbEFjdGl2YXRl
ZDpzaG93biBoaWRkZW5VbnRpPQpsQWN0aXZhdGVkOmhpZGRlbiIsZnVuY3Rpb24obCl7ay5wcmVm
ZXJlbmNlcy5zZXQoImFubm90YXRpb25FZGl0b3JTaG93biIsbC49CmhpZGRlbil9KX0sX3N3YXBO
ZXdSZW5kZXI6ZnVuY3Rpb24oayl7Zy5wcm90b3R5cGUuX3N3YXBOZXdSZW5kZXIuY2FsbCh0aGlz
LD0Kayk7dmFyIGo9M0R0aGlzO18uZGVsYXkoZnVuY3Rpb24oKXt2YXIgbD0zRGoucHJlZmVyZW5j
ZXMuZ2V0KCJzY3JvbGxQb3NpdGlvPQpuIik7aWYobCl7ai5zY3JvbGxUbyhsKX19LDEwKTtyZXR1
cm4gdGhpc30sX2F0dGFjaEl0ZW1zOmZ1bmN0aW9uKGspe2cucHJvdG89CnR5cGUuX2F0dGFjaEl0
ZW1zLmNhbGwodGhpcyxrKTt2YXIgaj0zRHRoaXMsbDtpZihqLmN1cnJlbnRDb250ZW50SWQmJihs
PTNEaj0KLnZpZXdGcm9tTW9kZWxJZChqLmN1cnJlbnRDb250ZW50SWQpKSl7ai5zZXRDdXJyZW50
Q29udGVudChsKX1yZXR1cm4gdGhpc30sPQphZGRJdGVtVmlldzpmdW5jdGlvbihsLG0sayl7dmFy
IGo9M0RnLnByb3RvdHlwZS5hZGRJdGVtVmlldy5jYWxsKHRoaXMsbCxtLGs9Cik7aWYoIWope3Jl
dHVybiBqfWlmKHRoaXMucGFuZWxTdGFjay5sZW5ndGgpe3JldHVybiB0aGlzLl9jb2xsYXBzZURy
aWxsZG93bj0KUGFuZWwoKX1yZXR1cm4gan0sX3NldFVwSXRlbVZpZXdMaXN0ZW5lcnM6ZnVuY3Rp
b24oayl7dmFyIGo9M0R0aGlzO2cucHJvdG90PQp5cGUuX3NldFVwSXRlbVZpZXdMaXN0ZW5lcnMu
Y2FsbChqLGspO2sub24oImV4cGFuZGVkOmRyaWxsZG93biIsZnVuY3Rpb24obSw9Cmwpe3RoaXMu
X2V4cGFuZERyaWxsZG93blBhbmVsKGwpfSx0aGlzKTtrLm9uKCJjb2xsYXBzZWQ6ZHJpbGxkb3du
IixmdW5jdGlvbj0KKG0sbCl7dGhpcy5fY29sbGFwc2VEcmlsbGRvd25QYW5lbChsKX0sdGhpcyk7
ay5vbigiZGlzcGxheSBlZGl0IHBhcmFtcyByZXJ1PQpuIHJlcG9ydC1lcnIgdmlzdWFsaXplIixm
dW5jdGlvbihsLG0pe3RoaXMuc2V0Q3VycmVudENvbnRlbnQobCl9LHRoaXMpO3JldHU9CnJuIHRo
aXN9LHNldEN1cnJlbnRDb250ZW50OmZ1bmN0aW9uKGope3RoaXMuJCgiLmhpc3RvcnktY29udGVu
dC5jdXJyZW50LWNvbj0KdGVudCIpLnJlbW92ZUNsYXNzKCJjdXJyZW50LWNvbnRlbnQiKTtpZihq
KXtqLiRlbC5hZGRDbGFzcygiY3VycmVudC1jb250ZW50PQoiKTt0aGlzLmN1cnJlbnRDb250ZW50
SWQ9M0RqLm1vZGVsLmlkfWVsc2V7dGhpcy5jdXJyZW50Q29udGVudElkPTNEbnVsbH19LF89CmV4
cGFuZERyaWxsZG93blBhbmVsOmZ1bmN0aW9uKGope3RoaXMucGFuZWxTdGFjay5wdXNoKGopO3Ro
aXMuJCgiPiAuY29udHJvbD0KcyIpLmFkZCh0aGlzLiRsaXN0KCkpLmhpZGUoKTtqLnBhcmVudE5h
bWU9M0R0aGlzLm1vZGVsLmdldCgibmFtZSIpO3RoaXMuJGVsPQouYXBwZW5kKGoucmVuZGVyKCku
JGVsKX0sX2NvbGxhcHNlRHJpbGxkb3duUGFuZWw6ZnVuY3Rpb24oail7dGhpcy5wYW5lbFN0YWM9
CmsucG9wKCk7dGhpcy5yZW5kZXIoKX0sY29ubmVjdFRvUXVvdGFNZXRlcjpmdW5jdGlvbihqKXtp
Zighail7cmV0dXJuIHRoaXN9dD0KaGlzLmxpc3RlblRvKGosInF1b3RhOm92ZXIiLHRoaXMuc2hv
d1F1b3RhTWVzc2FnZSk7dGhpcy5saXN0ZW5UbyhqLCJxdW90YTp1PQpuZGVyIix0aGlzLmhpZGVR
dW90YU1lc3NhZ2UpO3RoaXMub24oInJlbmRlcmVkIHJlbmRlcmVkOmluaXRpYWwiLGZ1bmN0aW9u
KCk9CntpZihqJiZqLmlzT3ZlclF1b3RhKCkpe3RoaXMuc2hvd1F1b3RhTWVzc2FnZSgpfX0pO3Jl
dHVybiB0aGlzfSxjbGVhck1lc3NhZz0KZXM6ZnVuY3Rpb24oayl7dmFyIGo9M0QhXy5pc1VuZGVm
aW5lZChrKT8kKGsuY3VycmVudFRhcmdldCk6dGhpcy4kbWVzc2FnZXMoPQopLmNoaWxkcmVuKCdb
Y2xhc3MkPTNEIm1lc3NhZ2UiXScpO2o9M0RqLm5vdCgiLnF1b3RhLW1lc3NhZ2UiKTtqLmZhZGVP
dXQodGg9CmlzLmZ4U3BlZWQsZnVuY3Rpb24oKXskKHRoaXMpLnJlbW92ZSgpfSk7cmV0dXJuIHRo
aXN9LHNob3dRdW90YU1lc3NhZ2U6ZnVuYz0KdGlvbigpe3ZhciBqPTNEdGhpcy4kKCIucXVvdGEt
bWVzc2FnZSIpO2lmKGouaXMoIjpoaWRkZW4iKSl7ai5zbGlkZURvd24odGhpPQpzLmZ4U3BlZWQp
fX0saGlkZVF1b3RhTWVzc2FnZTpmdW5jdGlvbigpe3ZhciBqPTNEdGhpcy4kKCIucXVvdGEtbWVz
c2FnZSIpO2k9CmYoIWouaXMoIjpoaWRkZW4iKSl7ai5zbGlkZVVwKHRoaXMuZnhTcGVlZCl9fSx0
b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJDdT0KcnJlbnRIaXN0b3J5UGFuZWwoIisoKHRoaXMu
bW9kZWwpPyh0aGlzLm1vZGVsLmdldCgibmFtZSIpKTooIiIpKSsiKSJ9fSk7aS5wPQpyb3RvdHlw
ZS50ZW1wbGF0ZXM9M0QoZnVuY3Rpb24oKXt2YXIgaj0zRGgud3JhcFRlbXBsYXRlKFsnPGRpdiBj
bGFzcz0zRCJxdW89CnRhLW1lc3NhZ2UgZXJyb3JtZXNzYWdlIj4nLGIoIllvdSBhcmUgb3ZlciB5
b3VyIGRpc2sgcXVvdGEiKSwiLiAiLGIoIlRvb2wgZT0KeGVjdXRpb24gaXMgb24gaG9sZCB1bnRp
bCB5b3VyIGRpc2sgdXNhZ2UgZHJvcHMgYmVsb3cgeW91ciBhbGxvY2F0ZWQgcXVvdGEiPQopLCIu
IiwiPC9kaXY+Il0sImhpc3RvcnkiKTtyZXR1cm4gXy5leHRlbmQoXy5jbG9uZShnLnByb3RvdHlw
ZS50ZW1wbGF0ZXMpLHs9CnF1b3RhTXNnOmp9KX0oKSk7cmV0dXJue0N1cnJlbnRIaXN0b3J5UGFu
ZWw6aX19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDVlYTlmYzJmNzVh
YWU4ZTUyZTE2NGFiNzVjNzFhYzk3ZjgyYmZmMjQgLXIgYjE4ZmNlNjk4Y2EwYjI5YWFjYTc3MzM9
CmNmOWJhOTViNjVjNTZjYTQ4IHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9oaXN0
b3J5LXBhbmVsLmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9oaXN0
b3J5LXBhbmVsLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9oaXN0
b3J5LXBhbmVsLmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFsibXZjL2xpc3QvbGlzdC1wYW5l
bCIsIm12Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwiLCJtdmMvaGlzdG9yeS9oaXM9CnRvcnktY29u
dGVudHMiLCJtdmMvaGlzdG9yeS9oZGEtbGkiLCJtdmMvaGlzdG9yeS9oZGNhLWxpIiwibXZjL2Nv
bGxlY3Rpb24vYz0Kb2xsZWN0aW9uLXBhbmVsIiwibXZjL3VzZXIvdXNlci1tb2RlbCIsInVpL2Zh
LWljb24tYnV0dG9uIiwibXZjL3VpL3BvcHVwLW1lPQpudSIsIm12Yy9iYXNlLW12YyIsInV0aWxz
L2xvY2FsaXphdGlvbiIsInVpL3NlYXJjaC1pbnB1dCJdLGZ1bmN0aW9uKGYsaCxuLGQ9CixiLG8s
aSxjLGEscSxnKXt2YXIgbD0zRHEuU2Vzc2lvblN0b3JhZ2VNb2RlbC5leHRlbmQoe2RlZmF1bHRz
OntleHBhbmRlZElkcz0KOnt9LHNob3dfZGVsZXRlZDpmYWxzZSxzaG93X2hpZGRlbjpmYWxzZX0s
YWRkRXhwYW5kZWQ6ZnVuY3Rpb24ocil7dmFyIHM9M0QiPQpleHBhbmRlZElkcyI7dGhpcy5zYXZl
KHMsXy5leHRlbmQodGhpcy5nZXQocyksXy5vYmplY3QoW3IuaWRdLFtyLmdldCgiaWQiKV09Cikp
KX0scmVtb3ZlRXhwYW5kZWQ6ZnVuY3Rpb24ocil7dmFyIHM9M0QiZXhwYW5kZWRJZHMiO3RoaXMu
c2F2ZShzLF8ub21pdCh0aD0KaXMuZ2V0KHMpLHIuaWQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXty
ZXR1cm4iSGlzdG9yeVByZWZzKCIrdGhpcy5pZCsiKSJ9fSk7PQpsLnN0b3JhZ2VLZXlQcmVmaXg9
M0QiaGlzdG9yeToiO2wuaGlzdG9yeVN0b3JhZ2VLZXk9M0RmdW5jdGlvbiBqKHIpe2lmKCFyKXs9
CnRocm93IG5ldyBFcnJvcigiSGlzdG9yeVByZWZzLmhpc3RvcnlTdG9yYWdlS2V5IG5lZWRzIHZh
bGlkIGlkOiAiK3IpfXJldHVybj0KKGwuc3RvcmFnZUtleVByZWZpeCtyKX07bC5nZXQ9M0RmdW5j
dGlvbiBlKHIpe3JldHVybiBuZXcgbCh7aWQ6bC5oaXN0b3J5U3RvPQpyYWdlS2V5KHIpfSl9O2wu
Y2xlYXJBbGw9M0RmdW5jdGlvbiBrKHMpe2Zvcih2YXIgciBpbiBzZXNzaW9uU3RvcmFnZSl7aWYo
ci49CmluZGV4T2YobC5zdG9yYWdlS2V5UHJlZml4KT0zRD0zRD0zRDApe3Nlc3Npb25TdG9yYWdl
LnJlbW92ZUl0ZW0ocil9fX07dmFyID0KcD0zRGYuTW9kZWxMaXN0UGFuZWw7dmFyIG09M0RwLmV4
dGVuZCh7SERBVmlld0NsYXNzOmQuSERBTGlzdEl0ZW1WaWV3LEhEQ0FWPQppZXdDbGFzczpiLkhE
Q0FMaXN0SXRlbVZpZXcsY29sbGVjdGlvbkNsYXNzOm4uSGlzdG9yeUNvbnRlbnRzLG1vZGVsQ29s
bGVjdGk9Cm9uS2V5OiJjb250ZW50cyIsdGFnTmFtZToiZGl2IixjbGFzc05hbWU6cC5wcm90b3R5
cGUuY2xhc3NOYW1lKyIgaGlzdG9yeS1wYT0KbmVsIixlbXB0eU1zZzpnKCJUaGlzIGhpc3Rvcnkg
aXMgZW1wdHkiKSxub25lRm91bmRNc2c6ZygiTm8gbWF0Y2hpbmcgZGF0YXNlPQp0cyBmb3VuZCIp
LHNlYXJjaFBsYWNlaG9sZGVyOmcoInNlYXJjaCBkYXRhc2V0cyIpLGluaXRpYWxpemU6ZnVuY3Rp
b24ocil7cC49CnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxyKTt0aGlzLmxpbmtUYXJn
ZXQ9M0RyLmxpbmtUYXJnZXR8fCJfYmxhbmsifT0KLGZyZWVNb2RlbDpmdW5jdGlvbigpe3AucHJv
dG90eXBlLmZyZWVNb2RlbC5jYWxsKHRoaXMpO2lmKHRoaXMubW9kZWwpe3RoaXMuPQptb2RlbC5j
bGVhclVwZGF0ZVRpbWVvdXQoKX1yZXR1cm4gdGhpc30sX3NldFVwTGlzdGVuZXJzOmZ1bmN0aW9u
KCl7cC5wcm90b3Q9CnlwZS5fc2V0VXBMaXN0ZW5lcnMuY2FsbCh0aGlzKTt0aGlzLm9uKCJlcnJv
ciIsZnVuY3Rpb24ocyx2LHIsdSx0KXt0aGlzLmVycj0Kb3JIYW5kbGVyKHMsdixyLHUsdCl9KTt0
aGlzLm9uKCJsb2FkaW5nLWRvbmUiLGZ1bmN0aW9uKCl7aWYoIXRoaXMudmlld3MubGVuPQpndGgp
e3RoaXMudHJpZ2dlcigiZW1wdHktaGlzdG9yeSIsdGhpcyl9fSl9LGxvYWRIaXN0b3J5V2l0aERl
dGFpbHM6ZnVuY3Rpb249Cih1LHQscyx2KXt0aGlzLmluZm8oImxvYWRIaXN0b3J5V2l0aERldGFp
bHM6Iix1LHQscyx2KTt2YXIgcj0zRGZ1bmN0aW9uKHcpez0KcmV0dXJuIF8udmFsdWVzKGwuZ2V0
KHcuaWQpLmdldCgiZXhwYW5kZWRJZHMiKSl9O3JldHVybiB0aGlzLmxvYWRIaXN0b3J5KHUsPQp0
LHMsdixyKX0sbG9hZEhpc3Rvcnk6ZnVuY3Rpb24odix1LHQsdyxyKXt0aGlzLmluZm8oImxvYWRI
aXN0b3J5OiIsdix1LHQsdyw9CnIpO3ZhciBzPTNEdGhpczt1PTNEdXx8e307cy50cmlnZ2VyKCJs
b2FkaW5nIixzKTt2YXIgeD0zRGguSGlzdG9yeS5nZXRIaXN0bz0KcnlEYXRhKHYse2hpc3RvcnlG
bjp0LGNvbnRlbnRzRm46dyxkZXRhaWxJZHNGbjp1LmluaXRpYWxseUV4cGFuZGVkfHxyfSk7cmV0
PQp1cm4gcy5fbG9hZEhpc3RvcnlGcm9tWEhSKHgsdSkuZmFpbChmdW5jdGlvbihBLHkseil7cy50
cmlnZ2VyKCJlcnJvciIscyxBLHU9CixnKCJBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgd2hpbGUg
Iit5KSx7aGlzdG9yeUlkOnYsaGlzdG9yeTp6fHx7fX0pfSkuYWx3YT0KeXMoZnVuY3Rpb24oKXtz
LnRyaWdnZXIoImxvYWRpbmctZG9uZSIscyl9KX0sX2xvYWRIaXN0b3J5RnJvbVhIUjpmdW5jdGlv
bih0PQoscyl7dmFyIHI9M0R0aGlzO3QudGhlbihmdW5jdGlvbih1LHYpe3IuSlNPTlRvTW9kZWwo
dSx2LHMpO3IucmVuZGVyKCl9KTt0LmY9CmFpbChmdW5jdGlvbih2LHUpe3IucmVuZGVyKCl9KTty
ZXR1cm4gdH0scmVmcmVzaENvbnRlbnRzOmZ1bmN0aW9uKHMscil7aWYodD0KaGlzLm1vZGVsKXty
ZXR1cm4gdGhpcy5tb2RlbC5yZWZyZXNoKHMscil9cmV0dXJuICQud2hlbigpfSxKU09OVG9Nb2Rl
bDpmdW5jPQp0aW9uKHUscixzKXt0aGlzLmxvZygiSlNPTlRvTW9kZWw6Iix1LHIscyk7cz0zRHN8
fHt9O3ZhciB0PTNEbmV3IGguSGlzdG9yeSg9CnUscixzKTt0aGlzLnNldE1vZGVsKHQpO3JldHVy
biB0fSxzZXRNb2RlbDpmdW5jdGlvbihzLHIpe3I9M0RyfHx7fTtwLnByb3RvdD0KeXBlLnNldE1v
ZGVsLmNhbGwodGhpcyxzLHIpO2lmKHRoaXMubW9kZWwpe3RoaXMuX3NldFVwV2ViU3RvcmFnZShy
LmluaXRpYWxsPQp5RXhwYW5kZWQsci5zaG93X2RlbGV0ZWQsci5zaG93X2hpZGRlbil9fSxfc2V0
VXBXZWJTdG9yYWdlOmZ1bmN0aW9uKHMscix0KXs9CmlmKHRoaXMuc3RvcmFnZSl7dGhpcy5zdG9w
TGlzdGVuaW5nKHRoaXMuc3RvcmFnZSl9dGhpcy5zdG9yYWdlPTNEbmV3IGwoe2lkOj0KbC5oaXN0
b3J5U3RvcmFnZUtleSh0aGlzLm1vZGVsLmdldCgiaWQiKSl9KTtpZihfLmlzT2JqZWN0KHMpKXt0
aGlzLnN0b3JhZ2UuPQpzZXQoImV4cGFuZGVkSWRzIixzKX1pZihfLmlzQm9vbGVhbihyKSl7dGhp
cy5zdG9yYWdlLnNldCgic2hvd19kZWxldGVkIixyKX09CmlmKF8uaXNCb29sZWFuKHQpKXt0aGlz
LnN0b3JhZ2Uuc2V0KCJzaG93X2hpZGRlbiIsdCl9dGhpcy50cmlnZ2VyKCJuZXctc3Rvcj0KYWdl
Iix0aGlzLnN0b3JhZ2UsdGhpcyk7dGhpcy5sb2codGhpcysiIChpbml0J2QpIHN0b3JhZ2U6Iix0
aGlzLnN0b3JhZ2UuZ2V0PQooKSk7dGhpcy5saXN0ZW5Ubyh0aGlzLnN0b3JhZ2UseyJjaGFuZ2U6
c2hvd19kZWxldGVkIjpmdW5jdGlvbih1LHYpe3RoaXMuc2g9Cm93RGVsZXRlZD0zRHZ9LCJjaGFu
Z2U6c2hvd19oaWRkZW4iOmZ1bmN0aW9uKHUsdil7dGhpcy5zaG93SGlkZGVuPTNEdn19LHRoaT0K
cyk7dGhpcy5zaG93RGVsZXRlZD0zRChyIT0zRD0zRHVuZGVmaW5lZCk/cjp0aGlzLnN0b3JhZ2Uu
Z2V0KCJzaG93X2RlbGV0ZWQiPQopO3RoaXMuc2hvd0hpZGRlbj0zRCh0IT0zRD0zRHVuZGVmaW5l
ZCk/dDp0aGlzLnN0b3JhZ2UuZ2V0KCJzaG93X2hpZGRlbiIpO3I9CmV0dXJuIHRoaXN9LF9idWls
ZE5ld1JlbmRlcjpmdW5jdGlvbigpe3ZhciByPTNEcC5wcm90b3R5cGUuX2J1aWxkTmV3UmVuZGVy
Lj0KY2FsbCh0aGlzKTtpZih0aGlzLm11bHRpc2VsZWN0QWN0aW9ucygpLmxlbmd0aCl7ci5maW5k
KCIuY29udHJvbHMgLmFjdGlvbnMiPQopLnByZXBlbmQodGhpcy5fcmVuZGVyU2VsZWN0QnV0dG9u
KCkpfXJldHVybiByfSxfcmVuZGVyU2VsZWN0QnV0dG9uOmZ1bmN0aW89Cm4ocil7cmV0dXJuIGMo
e3RpdGxlOmcoIk9wZXJhdGlvbnMgb24gbXVsdGlwbGUgZGF0YXNldHMiKSxjbGFzc2VzOiJzaG93
LXNlbD0KZWN0b3JzLWJ0biIsZmFJY29uOiJmYS1jaGVjay1zcXVhcmUtbyJ9KX0sX2dldEl0ZW1W
aWV3Q2xhc3M6ZnVuY3Rpb24ocil7dmFyPQogcz0zRHIuZ2V0KCJoaXN0b3J5X2NvbnRlbnRfdHlw
ZSIpO3N3aXRjaChzKXtjYXNlImRhdGFzZXQiOnJldHVybiB0aGlzLkhEQVY9Cmlld0NsYXNzO2Nh
c2UiZGF0YXNldF9jb2xsZWN0aW9uIjpyZXR1cm4gdGhpcy5IRENBVmlld0NsYXNzfXRocm93IG5l
dyBUeXBlRT0KcnJvcigiVW5rbm93biBoaXN0b3J5X2NvbnRlbnRfdHlwZTogIitzKX0sX2ZpbHRl
ckl0ZW06ZnVuY3Rpb24ocyl7dmFyIHI9M0R0PQpoaXM7cmV0dXJuKHAucHJvdG90eXBlLl9maWx0
ZXJJdGVtLmNhbGwocixzKSYmKCFzLmhpZGRlbigpfHxyLnNob3dIaWRkZW4pJiY9Cighcy5pc0Rl
bGV0ZWRPclB1cmdlZCgpfHxyLnNob3dEZWxldGVkKSl9LF9nZXRJdGVtVmlld09wdGlvbnM6ZnVu
Y3Rpb24ocyl7dj0KYXIgcj0zRHAucHJvdG90eXBlLl9nZXRJdGVtVmlld09wdGlvbnMuY2FsbCh0
aGlzLHMpO3JldHVybiBfLmV4dGVuZChyLHtsaW5rPQpUYXJnZXQ6dGhpcy5saW5rVGFyZ2V0LGV4
cGFuZGVkOiEhdGhpcy5zdG9yYWdlLmdldCgiZXhwYW5kZWRJZHMiKVtzLmlkXSxoYXM9ClVzZXI6
dGhpcy5tb2RlbC5vd25lZEJ5Q3VyclVzZXIoKX0pfSxfc2V0VXBJdGVtVmlld0xpc3RlbmVyczpm
dW5jdGlvbihzKXt2YT0KciByPTNEdGhpcztwLnByb3RvdHlwZS5fc2V0VXBJdGVtVmlld0xpc3Rl
bmVycy5jYWxsKHIscyk7cy5vbigiZXhwYW5kZWQiLGZ1PQpuY3Rpb24odCl7ci5zdG9yYWdlLmFk
ZEV4cGFuZGVkKHQubW9kZWwpfSk7cy5vbigiY29sbGFwc2VkIixmdW5jdGlvbih0KXtyLnM9CnRv
cmFnZS5yZW1vdmVFeHBhbmRlZCh0Lm1vZGVsKX0pO3JldHVybiB0aGlzfSxnZXRTZWxlY3RlZE1v
ZGVsczpmdW5jdGlvbigpez0KdmFyIHI9M0RwLnByb3RvdHlwZS5nZXRTZWxlY3RlZE1vZGVscy5j
YWxsKHRoaXMpO3IuaGlzdG9yeUlkPTNEdGhpcy5jb2xsZWN0PQppb24uaGlzdG9yeUlkO3JldHVy
biByfSxldmVudHM6Xy5leHRlbmQoXy5jbG9uZShwLnByb3RvdHlwZS5ldmVudHMpLHsiY2xpY2s9
CiAuc2hvdy1zZWxlY3RvcnMtYnRuIjoidG9nZ2xlU2VsZWN0b3JzIn0pLHRvZ2dsZVNob3dEZWxl
dGVkOmZ1bmN0aW9uKHIscyl7cj0KPTNEKHIhPTNEPTNEdW5kZWZpbmVkKT8ocik6KCF0aGlzLnNo
b3dEZWxldGVkKTtzPTNEKHMhPTNEPTNEdW5kZWZpbmVkKT8ocyk6PQoodHJ1ZSk7dGhpcy5zaG93
RGVsZXRlZD0zRHI7aWYocyl7dGhpcy5zdG9yYWdlLnNldCgic2hvd19kZWxldGVkIixyKX10aGlz
LnQ9CnJpZ2dlcigic2hvdy1oaWRkZW4iLHIpO3RoaXMucmVuZGVySXRlbXMoKTtyZXR1cm4gdGhp
cy5zaG93RGVsZXRlZH0sdG9nZ2xlUz0KaG93SGlkZGVuOmZ1bmN0aW9uKHIscyl7cj0zRChyIT0z
RD0zRHVuZGVmaW5lZCk/KHIpOighdGhpcy5zaG93SGlkZGVuKTtzPTNEPQoocyE9M0Q9M0R1bmRl
ZmluZWQpPyhzKToodHJ1ZSk7dGhpcy5zaG93SGlkZGVuPTNEcjtpZihzKXt0aGlzLnN0b3JhZ2Uu
c2V0KCI9CnNob3dfaGlkZGVuIixyKX10aGlzLnRyaWdnZXIoInNob3ctaGlkZGVuIixyKTt0aGlz
LnJlbmRlckl0ZW1zKCk7cmV0dXJuIHRoaT0Kcy5zaG93SGlkZGVufSxfZmlyc3RTZWFyY2g6ZnVu
Y3Rpb24ocil7dmFyIHM9M0R0aGlzLHQ9M0QiLmhpc3Rvcnktc2VhcmNoLWluPQpwdXQiO3RoaXMu
bG9nKCJvbkZpcnN0U2VhcmNoIixyKTtpZihzLm1vZGVsLmNvbnRlbnRzLmhhdmVEZXRhaWxzKCkp
e3Muc2VhcmM9CmhJdGVtcyhyKTtyZXR1cm59cy4kZWwuZmluZCh0KS5zZWFyY2hJbnB1dCgidG9n
Z2xlLWxvYWRpbmciKTtzLm1vZGVsLmNvbnRlbj0KdHMuZmV0Y2hBbGxEZXRhaWxzKHtzaWxlbnQ6
dHJ1ZX0pLmFsd2F5cyhmdW5jdGlvbigpe3MuJGVsLmZpbmQodCkuc2VhcmNoSW5wPQp1dCgidG9n
Z2xlLWxvYWRpbmciKX0pLmRvbmUoZnVuY3Rpb24oKXtzLnNlYXJjaEl0ZW1zKHIpfSl9LGVycm9y
SGFuZGxlcjpmdW49CmN0aW9uKHQsdyxzLHYsdSl7dGhpcy5lcnJvcih0LHcscyx2LHUpO2lmKHcm
Jncuc3RhdHVzPTNEPTNEPTNEMCYmdy5yZWFkeVN0YT0KdGU9M0Q9M0Q9M0QwKXt9ZWxzZXtpZih3
JiZ3LnN0YXR1cz0zRD0zRD0zRDUwMil7fWVsc2V7dmFyIHI9M0R0aGlzLl9wYXJzZUVyPQpyb3JN
ZXNzYWdlKHQsdyxzLHYsdSk7aWYoIXRoaXMuJG1lc3NhZ2VzKCkuaXMoIjp2aXNpYmxlIikpe3Ro
aXMub25jZSgicmVuZGU9CnJlZCIsZnVuY3Rpb24oKXt0aGlzLmRpc3BsYXlNZXNzYWdlKCJlcnJv
ciIsci5tZXNzYWdlLHIuZGV0YWlscyl9KX1lbHNle3RoaT0Kcy5kaXNwbGF5TWVzc2FnZSgiZXJy
b3IiLHIubWVzc2FnZSxyLmRldGFpbHMpfX19fSxfcGFyc2VFcnJvck1lc3NhZ2U6ZnVuY3RpPQpv
bih2LHkseix0LHIsdyl7dmFyIHU9M0RHYWxheHkuY3VyclVzZXIseD0zRHttZXNzYWdlOnRoaXMu
X2JlUG9saXRlKHQpLGRldGE9Cmlsczp7bWVzc2FnZTp0LHJhdmVuOih3aW5kb3cuUmF2ZW4mJl8u
aXNGdW5jdGlvbihSYXZlbi5sYXN0RXZlbnRJZCkpPyhSYXZlbj0KLmxhc3RFdmVudElkKCkpOih1
bmRlZmluZWQpLGFnZW50Om5hdmlnYXRvci51c2VyQWdlbnQsdXJsOih3aW5kb3cuR2FsYXh5KT8o
PQpHYWxheHkubGFzdEFqYXgudXJsKToodW5kZWZpbmVkKSxkYXRhOih3aW5kb3cuR2FsYXh5KT8o
R2FsYXh5Lmxhc3RBamF4LmRhdGE9Cik6KHVuZGVmaW5lZCksb3B0aW9uczooeSk/KF8ub21pdCh6
LCJ4aHIiKSk6KHopLHhocjp5LHNvdXJjZTooXy5pc0Z1bmN0aW9uKD0Kdi50b0pTT04pKT8odi50
b0pTT04oKSk6KHYrIiIpLHVzZXI6KHUgaW5zdGFuY2VvZiBpLlVzZXIpPyh1LnRvSlNPTigpKToo
dSsiPQoiKX19O18uZXh0ZW5kKHguZGV0YWlscyxyfHx7fSk7aWYoeSYmXy5pc0Z1bmN0aW9uKHku
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKSk9Cnt2YXIgcz0zRHkuZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCk7cz0zRF8uY29tcGFjdChzLnNwbGl0KCJcbiIpKTtzPTNEXy5tYXAocz0KLGZ1bmN0aW9uKEEp
e3JldHVybiBBLnNwbGl0KCI6ICIpfSk7eC5kZXRhaWxzLnhoci5yZXNwb25zZUhlYWRlcnM9M0Rf
Lm9iamVjPQp0KHMpfXJldHVybiB4fSxfYmVQb2xpdGU6ZnVuY3Rpb24ocil7cj0zRHJ8fGcoIkFu
IGVycm9yIG9jY3VycmVkIHdoaWxlIGdldHQ9CmluZyB1cGRhdGVzIGZyb20gdGhlIHNlcnZlciIp
O3JldHVybiByKyIuICIrZygiUGxlYXNlIGNvbnRhY3QgYSBHYWxheHkgYWRtaT0KbmlzdHJhdG9y
IGlmIHRoZSBwcm9ibGVtIHBlcnNpc3RzIikrIi4ifSxkaXNwbGF5TWVzc2FnZTpmdW5jdGlvbih3
LHgsdil7dmFyPQogdD0zRHRoaXM7dGhpcy5zY3JvbGxUb1RvcCgpO3ZhciB1PTNEdGhpcy4kbWVz
c2FnZXMoKSxyPTNEJCgiPGRpdi8+IikuYWRkQ2w9CmFzcyh3KyJtZXNzYWdlIikuaHRtbCh4KTtp
ZighXy5pc0VtcHR5KHYpKXt2YXIgcz0zRCQoJzxhIGhyZWY9M0QiamF2YXNjcmlwdD0KOnZvaWQo
MCkiPkRldGFpbHM8L2E+JykuY2xpY2soZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuc2hvdyh0Ll9t
ZXNzYWdlVG9Nb2RhPQpsT3B0aW9ucyh3LHgsdikpO3JldHVybiBmYWxzZX0pO3IuYXBwZW5kKCIg
IixzKX1yZXR1cm4gdS5odG1sKHIpfSxfbWVzc2FnZVQ9Cm9Nb2RhbE9wdGlvbnM6ZnVuY3Rpb24o
dSx4LHQpe3ZhciByPTNEdGhpcyxzPTNEe3RpdGxlOiJEZXRhaWxzIn07aWYoXy5pc09iaj0KZWN0
KHQpKXt0PTNEXy5vbWl0KHQsXy5mdW5jdGlvbnModCkpO3ZhciB3PTNESlNPTi5zdHJpbmdpZnko
dCxudWxsLCIgICIpLHY9Cj0zRCQoIjxwcmUvPiIpLnRleHQodyk7cy5ib2R5PTNEJCgiPGRpdi8+
IikuYXBwZW5kKHYpfWVsc2V7cy5ib2R5PTNEJCgiPGRpdj0KLz4iKS5odG1sKHQpfXMuYnV0dG9u
cz0zRHtPazpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlKCk7ci5jbGVhck1lc3NhZ2VzPQoo
KX19O3JldHVybiBzfSxjbGVhck1lc3NhZ2VzOmZ1bmN0aW9uKHIpeyQoci5jdXJyZW50VGFyZ2V0
KS5mYWRlT3V0KHRoaXMuZng9ClNwZWVkLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmUoKX0pO3Jl
dHVybiB0aGlzfSxzY3JvbGxUb0hpZDpmdW5jdGlvbihyKXtyZT0KdHVybiB0aGlzLnNjcm9sbFRv
SXRlbShfLmZpcnN0KHRoaXMudmlld3NXaGVyZU1vZGVsKHtoaWQ6cn0pKSl9LHRvU3RyaW5nOmZ1
PQpuY3Rpb24oKXtyZXR1cm4iSGlzdG9yeVBhbmVsKCIrKCh0aGlzLm1vZGVsKT8odGhpcy5tb2Rl
bC5nZXQoIm5hbWUiKSk6KCIiKSk9CisiKSJ9fSk7bS5wcm90b3R5cGUudGVtcGxhdGVzPTNEKGZ1
bmN0aW9uKCl7dmFyIHI9M0RxLndyYXBUZW1wbGF0ZShbJzxkaXYgYz0KbGFzcz0zRCJjb250cm9s
cyI+JywnPGRpdiBjbGFzcz0zRCJ0aXRsZSI+JywnPGRpdiBjbGFzcz0zRCJuYW1lIj48JT0zRCBo
aXN0PQpvcnkubmFtZSAlPjwvZGl2PicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0Qic3VidGl0bGUi
PjwvZGl2PicsJzxkaXYgY2xhc3M9M0Q9CiJoaXN0b3J5LXNpemUiPjwlPTNEIGhpc3Rvcnkubmlj
ZV9zaXplICU+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJhY3Rpb25zIj48Lz0KZGl2PicsJzxkaXYg
Y2xhc3M9M0QibWVzc2FnZXMiPicsIjwlIGlmKCBoaXN0b3J5LmRlbGV0ZWQgJiYgaGlzdG9yeS5w
dXJnZWQgPQopeyAlPiIsJzxkaXYgY2xhc3M9M0QiZGVsZXRlZC1tc2cgd2FybmluZ21lc3NhZ2Vz
bWFsbCI+JyxnKCJUaGlzIGhpc3RvcnkgaGE9CnMgYmVlbiBwdXJnZWQgYW5kIGRlbGV0ZWQiKSwi
PC9kaXY+IiwiPCUgfSBlbHNlIGlmKCBoaXN0b3J5LmRlbGV0ZWQgKXsgJT4iLD0KJzxkaXYgY2xh
c3M9M0QiZGVsZXRlZC1tc2cgd2FybmluZ21lc3NhZ2VzbWFsbCI+JyxnKCJUaGlzIGhpc3Rvcnkg
aGFzIGJlZW4gPQpkZWxldGVkIiksIjwvZGl2PiIsIjwlIH0gZWxzZSBpZiggaGlzdG9yeS5wdXJn
ZWQgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRlbGU9CnRlZC1tc2cgd2FybmluZ21lc3NhZ2VzbWFs
bCI+JyxnKCJUaGlzIGhpc3RvcnkgaGFzIGJlZW4gcHVyZ2VkIiksIjwvZGl2PiIsIj0KPCUgfSAl
PiIsIjwlIGlmKCBoaXN0b3J5Lm1lc3NhZ2UgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEIjwlPTNEIGhp
c3RvcnkubWVzc2FnPQplLmxldmVsIHx8ICJpbmZvIiAlPm1lc3NhZ2VzbWFsbCI+JywiPCU9M0Qg
aGlzdG9yeS5tZXNzYWdlLnRleHQgJT4iLCI8L2Rpdj49CiIsIjwlIH0gJT4iLCI8L2Rpdj4iLCc8
ZGl2IGNsYXNzPTNEInRhZ3MtZGlzcGxheSI+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJhbj0Kbm90
YXRpb24tZGlzcGxheSI+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJzZWFyY2giPicsJzxkaXYgY2xh
c3M9M0Qic2VhcmNoLWluPQpwdXQiPjwvZGl2PicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QibGlz
dC1hY3Rpb25zIj4nLCc8ZGl2IGNsYXNzPTNEImJ0bi1ncm89CnVwIj4nLCc8YnV0dG9uIGNsYXNz
PTNEInNlbGVjdC1hbGwgYnRuIGJ0bi1kZWZhdWx0IicsJ2RhdGEtbW9kZT0zRCJzZWxlY3QiPj0K
JyxnKCJBbGwiKSwiPC9idXR0b24+IiwnPGJ1dHRvbiBjbGFzcz0zRCJkZXNlbGVjdC1hbGwgYnRu
IGJ0bi1kZWZhdWx0IicsJ2RhPQp0YS1tb2RlPTNEInNlbGVjdCI+JyxnKCJOb25lIiksIjwvYnV0
dG9uPiIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QibGlzdC1hY3Q9Cmlvbi1tZW51IGJ0bi1ncm91
cCI+JywiPC9kaXY+IiwiPC9kaXY+IiwiPC9kaXY+Il0sImhpc3RvcnkiKTtyZXR1cm4gXy5leHRl
bj0KZChfLmNsb25lKHAucHJvdG90eXBlLnRlbXBsYXRlcykse2NvbnRyb2xzOnJ9KX0oKSk7cmV0
dXJue0hpc3RvcnlQYW5lbDptfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmlu
ZShbIm12Yy9saXN0L2xpc3QtcGFuZWwiLCJtdmMvaGlzdG9yeS9oaXN0b3J5LW1vZGVsIiwibXZj
L2hpc3RvcnkvaGlzPQp0b3J5LWNvbnRlbnRzIiwibXZjL2hpc3RvcnkvaGRhLWxpIiwibXZjL2hp
c3RvcnkvaGRjYS1saSIsIm12Yy9jb2xsZWN0aW9uL2M9Cm9sbGVjdGlvbi1wYW5lbCIsIm12Yy91
c2VyL3VzZXItbW9kZWwiLCJ1aS9mYS1pY29uLWJ1dHRvbiIsIm12Yy91aS9wb3B1cC1tZT0KbnUi
LCJtdmMvYmFzZS1tdmMiLCJ1dGlscy9sb2NhbGl6YXRpb24iLCJ1aS9zZWFyY2gtaW5wdXQiXSxm
dW5jdGlvbihmLGgsbixkPQosYixvLGksYyxhLHEsZyl7dmFyIGw9M0RxLlNlc3Npb25TdG9yYWdl
TW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7ZXhwYW5kZWRJZHM9Cjp7fSxzaG93X2RlbGV0ZWQ6ZmFs
c2Usc2hvd19oaWRkZW46ZmFsc2V9LGFkZEV4cGFuZGVkOmZ1bmN0aW9uKHIpe3ZhciBzPTNEIj0K
ZXhwYW5kZWRJZHMiO3RoaXMuc2F2ZShzLF8uZXh0ZW5kKHRoaXMuZ2V0KHMpLF8ub2JqZWN0KFty
LmlkXSxbci5nZXQoImlkIildPQopKSl9LHJlbW92ZUV4cGFuZGVkOmZ1bmN0aW9uKHIpe3ZhciBz
PTNEImV4cGFuZGVkSWRzIjt0aGlzLnNhdmUocyxfLm9taXQodGg9CmlzLmdldChzKSxyLmlkKSl9
LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkhpc3RvcnlQcmVmcygiK3RoaXMuaWQrIikifX0p
Oz0KbC5zdG9yYWdlS2V5UHJlZml4PTNEImhpc3Rvcnk6IjtsLmhpc3RvcnlTdG9yYWdlS2V5PTNE
ZnVuY3Rpb24gaihyKXtpZighcil7PQp0aHJvdyBuZXcgRXJyb3IoIkhpc3RvcnlQcmVmcy5oaXN0
b3J5U3RvcmFnZUtleSBuZWVkcyB2YWxpZCBpZDogIityKX1yZXR1cm49CihsLnN0b3JhZ2VLZXlQ
cmVmaXgrcil9O2wuZ2V0PTNEZnVuY3Rpb24gZShyKXtyZXR1cm4gbmV3IGwoe2lkOmwuaGlzdG9y
eVN0bz0KcmFnZUtleShyKX0pfTtsLmNsZWFyQWxsPTNEZnVuY3Rpb24gayhzKXtmb3IodmFyIHIg
aW4gc2Vzc2lvblN0b3JhZ2Upe2lmKHIuPQppbmRleE9mKGwuc3RvcmFnZUtleVByZWZpeCk9M0Q9
M0Q9M0QwKXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHIpfX19O3ZhciA9CnA9M0RmLk1vZGVs
TGlzdFBhbmVsO3ZhciBtPTNEcC5leHRlbmQoe0hEQVZpZXdDbGFzczpkLkhEQUxpc3RJdGVtVmll
dyxIRENBVj0KaWV3Q2xhc3M6Yi5IRENBTGlzdEl0ZW1WaWV3LGNvbGxlY3Rpb25DbGFzczpuLkhp
c3RvcnlDb250ZW50cyxtb2RlbENvbGxlY3RpPQpvbktleToiY29udGVudHMiLHRhZ05hbWU6ImRp
diIsY2xhc3NOYW1lOnAucHJvdG90eXBlLmNsYXNzTmFtZSsiIGhpc3RvcnktcGE9Cm5lbCIsZW1w
dHlNc2c6ZygiVGhpcyBoaXN0b3J5IGlzIGVtcHR5Iiksbm9uZUZvdW5kTXNnOmcoIk5vIG1hdGNo
aW5nIGRhdGFzZT0KdHMgZm91bmQiKSxzZWFyY2hQbGFjZWhvbGRlcjpnKCJzZWFyY2ggZGF0YXNl
dHMiKSxpbml0aWFsaXplOmZ1bmN0aW9uKHIpe3AuPQpwcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxs
KHRoaXMscik7dGhpcy5saW5rVGFyZ2V0PTNEci5saW5rVGFyZ2V0fHwiX2JsYW5rIn09CixmcmVl
TW9kZWw6ZnVuY3Rpb24oKXtwLnByb3RvdHlwZS5mcmVlTW9kZWwuY2FsbCh0aGlzKTtpZih0aGlz
Lm1vZGVsKXt0aGlzLj0KbW9kZWwuY2xlYXJVcGRhdGVUaW1lb3V0KCl9cmV0dXJuIHRoaXN9LF9z
ZXRVcExpc3RlbmVyczpmdW5jdGlvbigpe3AucHJvdG90PQp5cGUuX3NldFVwTGlzdGVuZXJzLmNh
bGwodGhpcyk7dGhpcy5vbigiZXJyb3IiLGZ1bmN0aW9uKHMsdixyLHUsdCl7dGhpcy5lcnI9Cm9y
SGFuZGxlcihzLHYscix1LHQpfSk7dGhpcy5vbigibG9hZGluZy1kb25lIixmdW5jdGlvbigpe2lm
KCF0aGlzLnZpZXdzLmxlbj0KZ3RoKXt0aGlzLnRyaWdnZXIoImVtcHR5LWhpc3RvcnkiLHRoaXMp
fX0pfSxsb2FkSGlzdG9yeVdpdGhEZXRhaWxzOmZ1bmN0aW9uPQoodSx0LHMsdil7dGhpcy5pbmZv
KCJsb2FkSGlzdG9yeVdpdGhEZXRhaWxzOiIsdSx0LHMsdik7dmFyIHI9M0RmdW5jdGlvbih3KXs9
CnJldHVybiBfLnZhbHVlcyhsLmdldCh3LmlkKS5nZXQoImV4cGFuZGVkSWRzIikpfTtyZXR1cm4g
dGhpcy5sb2FkSGlzdG9yeSh1LD0KdCxzLHYscil9LGxvYWRIaXN0b3J5OmZ1bmN0aW9uKHYsdSx0
LHcscil7dGhpcy5pbmZvKCJsb2FkSGlzdG9yeToiLHYsdSx0LHcsPQpyKTt2YXIgcz0zRHRoaXM7
dT0zRHV8fHt9O3MudHJpZ2dlcigibG9hZGluZyIscyk7dmFyIHg9M0RoLkhpc3RvcnkuZ2V0SGlz
dG89CnJ5RGF0YSh2LHtoaXN0b3J5Rm46dCxjb250ZW50c0ZuOncsZGV0YWlsSWRzRm46dS5pbml0
aWFsbHlFeHBhbmRlZHx8cn0pO3JldD0KdXJuIHMuX2xvYWRIaXN0b3J5RnJvbVhIUih4LHUpLmZh
aWwoZnVuY3Rpb24oQSx5LHope3MudHJpZ2dlcigiZXJyb3IiLHMsQSx1PQosZygiQW4gZXJyb3Ig
d2FzIGVuY291bnRlcmVkIHdoaWxlICIreSkse2hpc3RvcnlJZDp2LGhpc3Rvcnk6enx8e319KX0p
LmFsd2E9CnlzKGZ1bmN0aW9uKCl7cy50cmlnZ2VyKCJsb2FkaW5nLWRvbmUiLHMpfSl9LF9sb2Fk
SGlzdG9yeUZyb21YSFI6ZnVuY3Rpb24odD0KLHMpe3ZhciByPTNEdGhpczt0LnRoZW4oZnVuY3Rp
b24odSx2KXtyLkpTT05Ub01vZGVsKHUsdixzKTtyLnJlbmRlcigpfSk7dC5mPQphaWwoZnVuY3Rp
b24odix1KXtyLnJlbmRlcigpfSk7cmV0dXJuIHR9LHJlZnJlc2hDb250ZW50czpmdW5jdGlvbihz
LHIpe2lmKHQ9Cmhpcy5tb2RlbCl7cmV0dXJuIHRoaXMubW9kZWwucmVmcmVzaChzLHIpfXJldHVy
biAkLndoZW4oKX0sSlNPTlRvTW9kZWw6ZnVuYz0KdGlvbih1LHIscyl7dGhpcy5sb2coIkpTT05U
b01vZGVsOiIsdSxyLHMpO3M9M0RzfHx7fTt2YXIgdD0zRG5ldyBoLkhpc3RvcnkoPQp1LHIscyk7
dGhpcy5zZXRNb2RlbCh0KTtyZXR1cm4gdH0sc2V0TW9kZWw6ZnVuY3Rpb24ocyxyKXtyPTNEcnx8
e307cC5wcm90b3Q9CnlwZS5zZXRNb2RlbC5jYWxsKHRoaXMscyxyKTtpZih0aGlzLm1vZGVsKXt0
aGlzLl9zZXRVcFdlYlN0b3JhZ2Uoci5pbml0aWFsbD0KeUV4cGFuZGVkLHIuc2hvd19kZWxldGVk
LHIuc2hvd19oaWRkZW4pfX0sX3NldFVwV2ViU3RvcmFnZTpmdW5jdGlvbihzLHIsdCl7PQppZih0
aGlzLnN0b3JhZ2Upe3RoaXMuc3RvcExpc3RlbmluZyh0aGlzLnN0b3JhZ2UpfXRoaXMuc3RvcmFn
ZT0zRG5ldyBsKHtpZDo9CmwuaGlzdG9yeVN0b3JhZ2VLZXkodGhpcy5tb2RlbC5nZXQoImlkIikp
fSk7aWYoXy5pc09iamVjdChzKSl7dGhpcy5zdG9yYWdlLj0Kc2V0KCJleHBhbmRlZElkcyIscyl9
aWYoXy5pc0Jvb2xlYW4ocikpe3RoaXMuc3RvcmFnZS5zZXQoInNob3dfZGVsZXRlZCIscil9PQpp
ZihfLmlzQm9vbGVhbih0KSl7dGhpcy5zdG9yYWdlLnNldCgic2hvd19oaWRkZW4iLHQpfXRoaXMu
dHJpZ2dlcigibmV3LXN0b3I9CmFnZSIsdGhpcy5zdG9yYWdlLHRoaXMpO3RoaXMubG9nKHRoaXMr
IiAoaW5pdCdkKSBzdG9yYWdlOiIsdGhpcy5zdG9yYWdlLmdldD0KKCkpO3RoaXMubGlzdGVuVG8o
dGhpcy5zdG9yYWdlLHsiY2hhbmdlOnNob3dfZGVsZXRlZCI6ZnVuY3Rpb24odSx2KXt0aGlzLnNo
PQpvd0RlbGV0ZWQ9M0R2fSwiY2hhbmdlOnNob3dfaGlkZGVuIjpmdW5jdGlvbih1LHYpe3RoaXMu
c2hvd0hpZGRlbj0zRHZ9fSx0aGk9CnMpO3RoaXMuc2hvd0RlbGV0ZWQ9M0QociE9M0Q9M0R1bmRl
ZmluZWQpP3I6dGhpcy5zdG9yYWdlLmdldCgic2hvd19kZWxldGVkIj0KKTt0aGlzLnNob3dIaWRk
ZW49M0QodCE9M0Q9M0R1bmRlZmluZWQpP3Q6dGhpcy5zdG9yYWdlLmdldCgic2hvd19oaWRkZW4i
KTtyPQpldHVybiB0aGlzfSxfYnVpbGROZXdSZW5kZXI6ZnVuY3Rpb24oKXt2YXIgcj0zRHAucHJv
dG90eXBlLl9idWlsZE5ld1JlbmRlci49CmNhbGwodGhpcyk7aWYodGhpcy5tdWx0aXNlbGVjdEFj
dGlvbnMoKS5sZW5ndGgpe3IuZmluZCgiLmNvbnRyb2xzIC5hY3Rpb25zIj0KKS5wcmVwZW5kKHRo
aXMuX3JlbmRlclNlbGVjdEJ1dHRvbigpKX1yZXR1cm4gcn0sX3JlbmRlclNlbGVjdEJ1dHRvbjpm
dW5jdGlvPQpuKHIpe3JldHVybiBjKHt0aXRsZTpnKCJPcGVyYXRpb25zIG9uIG11bHRpcGxlIGRh
dGFzZXRzIiksY2xhc3Nlczoic2hvdy1zZWw9CmVjdG9ycy1idG4iLGZhSWNvbjoiZmEtY2hlY2st
c3F1YXJlLW8ifSl9LF9nZXRJdGVtVmlld0NsYXNzOmZ1bmN0aW9uKHIpe3Zhcj0KIHM9M0RyLmdl
dCgiaGlzdG9yeV9jb250ZW50X3R5cGUiKTtzd2l0Y2gocyl7Y2FzZSJkYXRhc2V0IjpyZXR1cm4g
dGhpcy5IREFWPQppZXdDbGFzcztjYXNlImRhdGFzZXRfY29sbGVjdGlvbiI6cmV0dXJuIHRoaXMu
SERDQVZpZXdDbGFzc310aHJvdyBuZXcgVHlwZUU9CnJyb3IoIlVua25vd24gaGlzdG9yeV9jb250
ZW50X3R5cGU6ICIrcyl9LF9maWx0ZXJJdGVtOmZ1bmN0aW9uKHMpe3ZhciByPTNEdD0KaGlzO3Jl
dHVybihwLnByb3RvdHlwZS5fZmlsdGVySXRlbS5jYWxsKHIscykmJighcy5oaWRkZW4oKXx8ci5z
aG93SGlkZGVuKSYmPQooIXMuaXNEZWxldGVkT3JQdXJnZWQoKXx8ci5zaG93RGVsZXRlZCkpfSxf
Z2V0SXRlbVZpZXdPcHRpb25zOmZ1bmN0aW9uKHMpe3Y9CmFyIHI9M0RwLnByb3RvdHlwZS5fZ2V0
SXRlbVZpZXdPcHRpb25zLmNhbGwodGhpcyxzKTtyZXR1cm4gXy5leHRlbmQocix7bGluaz0KVGFy
Z2V0OnRoaXMubGlua1RhcmdldCxleHBhbmRlZDohIXRoaXMuc3RvcmFnZS5nZXQoImV4cGFuZGVk
SWRzIilbcy5pZF0saGFzPQpVc2VyOnRoaXMubW9kZWwub3duZWRCeUN1cnJVc2VyKCl9KX0sX3Nl
dFVwSXRlbVZpZXdMaXN0ZW5lcnM6ZnVuY3Rpb24ocyl7dmE9CnIgcj0zRHRoaXM7cC5wcm90b3R5
cGUuX3NldFVwSXRlbVZpZXdMaXN0ZW5lcnMuY2FsbChyLHMpO3Mub24oImV4cGFuZGVkIixmdT0K
bmN0aW9uKHQpe3Iuc3RvcmFnZS5hZGRFeHBhbmRlZCh0Lm1vZGVsKX0pO3Mub24oImNvbGxhcHNl
ZCIsZnVuY3Rpb24odCl7ci5zPQp0b3JhZ2UucmVtb3ZlRXhwYW5kZWQodC5tb2RlbCl9KTtyZXR1
cm4gdGhpc30sZ2V0U2VsZWN0ZWRNb2RlbHM6ZnVuY3Rpb24oKXs9CnZhciByPTNEcC5wcm90b3R5
cGUuZ2V0U2VsZWN0ZWRNb2RlbHMuY2FsbCh0aGlzKTtyLmhpc3RvcnlJZD0zRHRoaXMuY29sbGVj
dD0KaW9uLmhpc3RvcnlJZDtyZXR1cm4gcn0sZXZlbnRzOl8uZXh0ZW5kKF8uY2xvbmUocC5wcm90
b3R5cGUuZXZlbnRzKSx7ImNsaWNrPQogLnNob3ctc2VsZWN0b3JzLWJ0biI6InRvZ2dsZVNlbGVj
dG9ycyIsImNsaWNrIC5tZXNzYWdlcyBbY2xhc3MkPTNEbWVzc2FnZV09CiI6ImNsZWFyTWVzc2Fn
ZXMifSksdG9nZ2xlU2hvd0RlbGV0ZWQ6ZnVuY3Rpb24ocixzKXtyPTNEKHIhPTNEPTNEdW5kZWZp
bmVkKT0KPyhyKTooIXRoaXMuc2hvd0RlbGV0ZWQpO3M9M0QocyE9M0Q9M0R1bmRlZmluZWQpPyhz
KToodHJ1ZSk7dGhpcy5zaG93RGVsZXRlPQpkPTNEcjtpZihzKXt0aGlzLnN0b3JhZ2Uuc2V0KCJz
aG93X2RlbGV0ZWQiLHIpfXRoaXMudHJpZ2dlcigic2hvdy1oaWRkZW4iLHI9Cik7dGhpcy5yZW5k
ZXJJdGVtcygpO3JldHVybiB0aGlzLnNob3dEZWxldGVkfSx0b2dnbGVTaG93SGlkZGVuOmZ1bmN0
aW9uKHIscz0KKXtyPTNEKHIhPTNEPTNEdW5kZWZpbmVkKT8ocik6KCF0aGlzLnNob3dIaWRkZW4p
O3M9M0QocyE9M0Q9M0R1bmRlZmluZWQpPyhzPQopOih0cnVlKTt0aGlzLnNob3dIaWRkZW49M0Ry
O2lmKHMpe3RoaXMuc3RvcmFnZS5zZXQoInNob3dfaGlkZGVuIixyKX10aGlzLnQ9CnJpZ2dlcigi
c2hvdy1oaWRkZW4iLHIpO3RoaXMucmVuZGVySXRlbXMoKTtyZXR1cm4gdGhpcy5zaG93SGlkZGVu
fSxfZmlyc3RTZT0KYXJjaDpmdW5jdGlvbihyKXt2YXIgcz0zRHRoaXMsdD0zRCIuaGlzdG9yeS1z
ZWFyY2gtaW5wdXQiO3RoaXMubG9nKCJvbkZpcnN0PQpTZWFyY2giLHIpO2lmKHMubW9kZWwuY29u
dGVudHMuaGF2ZURldGFpbHMoKSl7cy5zZWFyY2hJdGVtcyhyKTtyZXR1cm59cy4kZWw9Ci5maW5k
KHQpLnNlYXJjaElucHV0KCJ0b2dnbGUtbG9hZGluZyIpO3MubW9kZWwuY29udGVudHMuZmV0Y2hB
bGxEZXRhaWxzKHtzaT0KbGVudDp0cnVlfSkuYWx3YXlzKGZ1bmN0aW9uKCl7cy4kZWwuZmluZCh0
KS5zZWFyY2hJbnB1dCgidG9nZ2xlLWxvYWRpbmciKX0pPQouZG9uZShmdW5jdGlvbigpe3Muc2Vh
cmNoSXRlbXMocil9KX0sZXJyb3JIYW5kbGVyOmZ1bmN0aW9uKHQsdyxzLHYsdSl7dGhpcy49CmVy
cm9yKHQsdyxzLHYsdSk7aWYodyYmdy5zdGF0dXM9M0Q9M0Q9M0QwJiZ3LnJlYWR5U3RhdGU9M0Q9
M0Q9M0QwKXt9ZWxzZXtpZj0KKHcmJncuc3RhdHVzPTNEPTNEPTNENTAyKXt9ZWxzZXt2YXIgcj0z
RHRoaXMuX3BhcnNlRXJyb3JNZXNzYWdlKHQsdyxzLHYsdSk7PQppZighdGhpcy4kbWVzc2FnZXMo
KS5pcygiOnZpc2libGUiKSl7dGhpcy5vbmNlKCJyZW5kZXJlZCIsZnVuY3Rpb24oKXt0aGlzLmQ9
CmlzcGxheU1lc3NhZ2UoImVycm9yIixyLm1lc3NhZ2Usci5kZXRhaWxzKX0pfWVsc2V7dGhpcy5k
aXNwbGF5TWVzc2FnZSgiZXJybz0KciIsci5tZXNzYWdlLHIuZGV0YWlscyl9fX19LF9wYXJzZUVy
cm9yTWVzc2FnZTpmdW5jdGlvbih2LHkseix0LHIsdyl7dmFyIHU9Cj0zREdhbGF4eS5jdXJyVXNl
cix4PTNEe21lc3NhZ2U6dGhpcy5fYmVQb2xpdGUodCksZGV0YWlsczp7bWVzc2FnZTp0LHJhdmVu
Oj0KKHdpbmRvdy5SYXZlbiYmXy5pc0Z1bmN0aW9uKFJhdmVuLmxhc3RFdmVudElkKSk/KFJhdmVu
Lmxhc3RFdmVudElkKCkpOih1bmRlPQpmaW5lZCksYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1
cmw6KHdpbmRvdy5HYWxheHkpPyhHYWxheHkubGFzdEFqYXgudXJsKTo9Cih1bmRlZmluZWQpLGRh
dGE6KHdpbmRvdy5HYWxheHkpPyhHYWxheHkubGFzdEFqYXguZGF0YSk6KHVuZGVmaW5lZCksb3B0
aW9ucz0KOih5KT8oXy5vbWl0KHosInhociIpKTooeikseGhyOnksc291cmNlOihfLmlzRnVuY3Rp
b24odi50b0pTT04pKT8odi50b0pTT04oPQopKToodisiIiksdXNlcjoodSBpbnN0YW5jZW9mIGku
VXNlcik/KHUudG9KU09OKCkpOih1KyIiKX19O18uZXh0ZW5kKHguZGV0YWk9CmxzLHJ8fHt9KTtp
Zih5JiZfLmlzRnVuY3Rpb24oeS5nZXRBbGxSZXNwb25zZUhlYWRlcnMpKXt2YXIgcz0zRHkuZ2V0
QWxsUmVzcD0Kb25zZUhlYWRlcnMoKTtzPTNEXy5jb21wYWN0KHMuc3BsaXQoIlxuIikpO3M9M0Rf
Lm1hcChzLGZ1bmN0aW9uKEEpe3JldHVybiBBPQouc3BsaXQoIjogIil9KTt4LmRldGFpbHMueGhy
LnJlc3BvbnNlSGVhZGVycz0zRF8ub2JqZWN0KHMpfXJldHVybiB4fSxfYmVQb2w9Cml0ZTpmdW5j
dGlvbihyKXtyPTNEcnx8ZygiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZ2V0dGluZyB1cGRhdGVz
IGZyb20gdGhlID0Kc2VydmVyIik7cmV0dXJuIHIrIi4gIitnKCJQbGVhc2UgY29udGFjdCBhIEdh
bGF4eSBhZG1pbmlzdHJhdG9yIGlmIHRoZSBwcm9iPQpsZW0gcGVyc2lzdHMiKSsiLiJ9LGRpc3Bs
YXlNZXNzYWdlOmZ1bmN0aW9uKHcseCx2KXt2YXIgdD0zRHRoaXM7dGhpcy5zY3JvbGw9ClRvVG9w
KCk7dmFyIHU9M0R0aGlzLiRtZXNzYWdlcygpLHI9M0QkKCI8ZGl2Lz4iKS5hZGRDbGFzcyh3KyJt
ZXNzYWdlIikuaHRtbD0KKHgpO2lmKCFfLmlzRW1wdHkodikpe3ZhciBzPTNEJCgnPGEgaHJlZj0z
RCJqYXZhc2NyaXB0OnZvaWQoMCkiPkRldGFpbHM8L2E+PQonKS5jbGljayhmdW5jdGlvbigpe0dh
bGF4eS5tb2RhbC5zaG93KHQuX21lc3NhZ2VUb01vZGFsT3B0aW9ucyh3LHgsdikpO3JldHU9CnJu
IGZhbHNlfSk7ci5hcHBlbmQoIiAiLHMpfXJldHVybiB1LmFwcGVuZChyKX0sX21lc3NhZ2VUb01v
ZGFsT3B0aW9uczpmdW5jdD0KaW9uKHUseCx0KXt2YXIgcj0zRHRoaXMscz0zRHt0aXRsZToiRGV0
YWlscyJ9O2lmKF8uaXNPYmplY3QodCkpe3Q9M0RfLm9taXQoPQp0LF8uZnVuY3Rpb25zKHQpKTt2
YXIgdz0zREpTT04uc3RyaW5naWZ5KHQsbnVsbCwiICAiKSx2PTNEJCgiPHByZS8+IikudGV4dCg9
CncpO3MuYm9keT0zRCQoIjxkaXYvPiIpLmFwcGVuZCh2KX1lbHNle3MuYm9keT0zRCQoIjxkaXYv
PiIpLmh0bWwodCl9cy5idXR0bz0KbnM9M0R7T2s6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlk
ZSgpO3IuY2xlYXJNZXNzYWdlcygpfX07cmV0dXJuIHN9LGNsZWFyPQpNZXNzYWdlczpmdW5jdGlv
bihzKXt2YXIgcj0zRCFfLmlzVW5kZWZpbmVkKHMpPyQocy5jdXJyZW50VGFyZ2V0KTp0aGlzLiRt
ZXM9CnNhZ2VzKCkuY2hpbGRyZW4oJ1tjbGFzcyQ9M0QibWVzc2FnZSJdJyk7ci5mYWRlT3V0KHRo
aXMuZnhTcGVlZCxmdW5jdGlvbigpez0KJCh0aGlzKS5yZW1vdmUoKX0pO3JldHVybiB0aGlzfSxz
Y3JvbGxUb0hpZDpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5zY3JvbGxUPQpvSXRlbShfLmZpcnN0
KHRoaXMudmlld3NXaGVyZU1vZGVsKHtoaWQ6cn0pKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0
dXJuIkg9CmlzdG9yeVBhbmVsKCIrKCh0aGlzLm1vZGVsKT8odGhpcy5tb2RlbC5nZXQoIm5hbWUi
KSk6KCIiKSkrIikifX0pO20ucHJvdG90eT0KcGUudGVtcGxhdGVzPTNEKGZ1bmN0aW9uKCl7dmFy
IHI9M0RxLndyYXBUZW1wbGF0ZShbJzxkaXYgY2xhc3M9M0QiY29udHJvbHMiPQo+JywnPGRpdiBj
bGFzcz0zRCJ0aXRsZSI+JywnPGRpdiBjbGFzcz0zRCJuYW1lIj48JT0zRCBoaXN0b3J5Lm5hbWUg
JT48L2Rpdj49CicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0Qic3VidGl0bGUiPjwvZGl2PicsJzxk
aXYgY2xhc3M9M0QiaGlzdG9yeS1zaXplIj48JT0KPTNEIGhpc3RvcnkubmljZV9zaXplICU+PC9k
aXY+JywnPGRpdiBjbGFzcz0zRCJhY3Rpb25zIj48L2Rpdj4nLCc8ZGl2IGNsYXNzPQo9M0QibWVz
c2FnZXMiPicsIjwlIGlmKCBoaXN0b3J5LmRlbGV0ZWQgJiYgaGlzdG9yeS5wdXJnZWQgKXsgJT4i
LCc8ZGl2IGNsYXM9CnM9M0QiZGVsZXRlZC1tc2cgd2FybmluZ21lc3NhZ2VzbWFsbCI+JyxnKCJU
aGlzIGhpc3RvcnkgaGFzIGJlZW4gcHVyZ2VkIGFuZD0KIGRlbGV0ZWQiKSwiPC9kaXY+IiwiPCUg
fSBlbHNlIGlmKCBoaXN0b3J5LmRlbGV0ZWQgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRlPQpsZXRl
ZC1tc2cgd2FybmluZ21lc3NhZ2VzbWFsbCI+JyxnKCJUaGlzIGhpc3RvcnkgaGFzIGJlZW4gZGVs
ZXRlZCIpLCI8L2Rpdj49CiIsIjwlIH0gZWxzZSBpZiggaGlzdG9yeS5wdXJnZWQgKXsgJT4iLCc8
ZGl2IGNsYXNzPTNEImRlbGV0ZWQtbXNnIHdhcm5pbmdtZT0Kc3NhZ2VzbWFsbCI+JyxnKCJUaGlz
IGhpc3RvcnkgaGFzIGJlZW4gcHVyZ2VkIiksIjwvZGl2PiIsIjwlIH0gJT4iLCI8JSBpZiggPQpo
aXN0b3J5Lm1lc3NhZ2UgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEIjwlPTNEIGhpc3RvcnkubWVzc2Fn
ZS5sZXZlbCB8fCAiaW5mbyI9CiAlPm1lc3NhZ2VzbWFsbCI+JywiPCU9M0QgaGlzdG9yeS5tZXNz
YWdlLnRleHQgJT4iLCI8L2Rpdj4iLCI8JSB9ICU+IiwiPC9kaT0Kdj4iLCc8ZGl2IGNsYXNzPTNE
InRhZ3MtZGlzcGxheSI+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJhbm5vdGF0aW9uLWRpc3BsYXki
PQo+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJzZWFyY2giPicsJzxkaXYgY2xhc3M9M0Qic2VhcmNo
LWlucHV0Ij48L2Rpdj4nLCI8L2Q9Cml2PiIsJzxkaXYgY2xhc3M9M0QibGlzdC1hY3Rpb25zIj4n
LCc8ZGl2IGNsYXNzPTNEImJ0bi1ncm91cCI+JywnPGJ1dHRvbiBjbD0KYXNzPTNEInNlbGVjdC1h
bGwgYnRuIGJ0bi1kZWZhdWx0IicsJ2RhdGEtbW9kZT0zRCJzZWxlY3QiPicsZygiQWxsIiksIjwv
YnV0PQp0b24+IiwnPGJ1dHRvbiBjbGFzcz0zRCJkZXNlbGVjdC1hbGwgYnRuIGJ0bi1kZWZhdWx0
IicsJ2RhdGEtbW9kZT0zRCJzZWxlY3Q9CiI+JyxnKCJOb25lIiksIjwvYnV0dG9uPiIsIjwvZGl2
PiIsJzxkaXYgY2xhc3M9M0QibGlzdC1hY3Rpb24tbWVudSBidG4tZ3JvdT0KcCI+JywiPC9kaXY+
IiwiPC9kaXY+IiwiPC9kaXY+Il0sImhpc3RvcnkiKTtyZXR1cm4gXy5leHRlbmQoXy5jbG9uZShw
LnByb3RvPQp0eXBlLnRlbXBsYXRlcykse2NvbnRyb2xzOnJ9KX0oKSk7cmV0dXJue0hpc3RvcnlQ
YW5lbDptfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClJlcG9zaXRvcnkgVVJMOiBo
dHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsLwoKLS0KClRoaXMgaXMg
YSBjb21taXQgbm90aWZpY2F0aW9uIGZyb20gYml0YnVja2V0Lm9yZy4gWW91IGFyZSByZWNlaXZp
bmcKdGhpcyBiZWNhdXNlIHlvdSBoYXZlIHRoZSBzZXJ2aWNlIGVuYWJsZWQsIGFkZHJlc3Npbmcg
dGhlIHJlY2lwaWVudCBvZgp0aGlzIGVtYWlsLgo