[system/kjar] /: 0.3.0 Release

Hadi Chokr <[email protected]> Tue, 4 Aug 2026 19:46:08 +0000 (UTC)
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
R2l0IGNvbW1pdCAzNzgyYjRiMThiMTY4YzFlZTVjYzM5YTc0ODhmOGI4ZmQzMjA2OTdmIGJ5IEhh
ZGkgQ2hva3IuCkNvbW1pdHRlZCBvbiAwNC8wOC8yMDI2IGF0IDE5OjQ2LgpQdXNoZWQgYnkgc2ls
dmVyaGFkY2ggaW50byBicmFuY2ggJ21hc3RlcicuCgowLjMuMCBSZWxlYXNlCgpCaWcgUmVmYWN0
b3IuIFNpbXBsaWZpZXMgZGVzaWduIGFuZCBmaXhlcyBtZW1vcnkgdW5zYWZlIGNvZGUuCgpTaWdu
ZWQtb2ZmLWJ5OiBIYWRpIENob2tyIDxoYWRpY2hva3JAaWNsb3VkLmNvbT4KCk0gICsxNiAgIC0z
MyAgIC5mbGF0cGFrLW1hbmlmZXN0Lmpzb24KTSAgKzIgICAgLTAgICAgLmdpdGxhYi1jaS55bWwK
TSAgKzQzICAgLTM2ICAgQ01ha2VMaXN0cy50eHQKQSAgKzggICAgLTAgICAgTWVzc2FnZXMuc2gK
TSAgKzU0ICAgLTcgICAgUkVBRE1FLm1kCk0gICsxICAgIC02ICAgIFJFVVNFLnRvbWwKQSAgKzgx
ICAgLTAgICAgaWNvbnMvb3JnLmtkZS5ramFyLnN2ZwpNICArNyAgICAtNCAgICBvcmcua2RlLmtq
YXIuZGVza3RvcApNICArNDEgICAtMTAgICBvcmcua2RlLmtqYXIubWV0YWluZm8ueG1sCkEgICs4
NyAgIC0wICAgIHNyYy9ramFyLmNwcCAgICAgW0xpY2Vuc2U6IEdQTCgzK2VWKSBHUEwodjMuMCkg
R1BMKHYyLjApXQpBICArNjIgICAtMCAgICBzcmMva2phci5oICAgICBbTGljZW5zZTogR1BMKDMr
ZVYpIEdQTCh2My4wKSBHUEwodjIuMCldCk0gICsxMDkgIC0xMzcgIHNyYy9ramFyYXBwLmNwcApN
ICArMTkgICAtMjEgICBzcmMva2phcmFwcC5oCk0gICszNzYgIC0xMjggIHNyYy9tYWluLmNwcApN
ICArOCAgICAtNiAgICBzcmMvcW1sL0Vycm9yRGlhbG9nLnFtbApSICArODYgICAtNjEgICBzcmMv
cW1sL01haW4ucW1sIFtmcm9tOiBzcmMvcW1sL21haW4ucW1sIC0gMDUyJSBzaW1pbGFyaXR5XQpE
ICArMCAgICAtOSAgICBzcmMvcmVzb3VyY2VzLnFyYwpEICArMCAgICAtOTAgICBzcmMvd2F0Y2hl
ci9ramFyX3dhdGNoZXIuY3BwCkQgICswICAgIC04ICAgIHNyYy93YXRjaGVyL3dhdGNoZXIucXJj
Ck0gICsxMiAgIC02ICAgIHN0cmlwLWptb2RzLnNoCgpodHRwczovL2ludmVudC5rZGUub3JnL3N5
c3RlbS9ramFyLy0vY29tbWl0LzM3ODJiNGIxOGIxNjhjMWVlNWNjMzlhNzQ4OGY4YjhmZDMyMDY5
N2YKCmRpZmYgLS1naXQgYS8uZmxhdHBhay1tYW5pZmVzdC5qc29uIGIvLmZsYXRwYWstbWFuaWZl
c3QuanNvbgppbmRleCAwOTYxYWE1Li4xZjFiYzRmIDEwMDY0NAotLS0gYS8uZmxhdHBhay1tYW5p
ZmVzdC5qc29uCisrKyBiLy5mbGF0cGFrLW1hbmlmZXN0Lmpzb24KQEAgLTExLDExICsxMSwxMCBA
QAogCiAgICJmaW5pc2gtYXJncyI6IFsKICAgICAiLS1zaGFyZT1pcGMiLAorICAgICItLXNoYXJl
PW5ldHdvcmsiLAogICAgICItLXNvY2tldD13YXlsYW5kIiwKICAgICAiLS1zb2NrZXQ9eDExIiwK
ICAgICAiLS1kZXZpY2U9ZHJpIiwKLSAgICAiLS10YWxrLW5hbWU9b3JnLmZyZWVkZXNrdG9wLkZs
YXRwYWsiLAotICAgICItLXRhbGstbmFtZT1vcmcuZnJlZWRlc2t0b3AuTm90aWZpY2F0aW9ucyIs
CiAgICAgIi0tZmlsZXN5c3RlbT1ob21lIiwKICAgICAiLS1lbnY9SkFWQV9IT01FPS9hcHAvamRr
IiwKICAgICAiLS1lbnY9UEFUSD0vYXBwL2JpbjovYXBwL2pkay9iaW46L3Vzci9iaW4iCkBAIC00
Miw1NCArNDEsMzggQEAKICAgICAgICJidWlsZHN5c3RlbSI6ICJzaW1wbGUiLAogICAgICAgImJ1
aWxkLWNvbW1hbmRzIjogWwogICAgICAgICAiaW5zdGFsbCAtZCAvYXBwL3NoYXJlL2phdmFmeCIs
Ci0gICAgICAgICJjcCBsaWIvKi5qYXIgL2FwcC9zaGFyZS9qYXZhZngvIiwKLSAgICAgICAgImNw
IGxpYi8qLnNvICAvYXBwL3NoYXJlL2phdmFmeC8iCisgICAgICAgICJpbnN0YWxsIC1tNjQ0IGxp
Yi8qLmphciAvYXBwL3NoYXJlL2phdmFmeC8iLAorICAgICAgICAiaW5zdGFsbCAtbTY0NCBsaWIv
Ki5zbyAgL2FwcC9zaGFyZS9qYXZhZngvIiwKKyAgICAgICAgImNwIC1yIGxlZ2FsIC9hcHAvc2hh
cmUvamF2YWZ4L2xlZ2FsIgogICAgICAgXSwKICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICB7
CiAgICAgICAgICAgInR5cGUiOiAiYXJjaGl2ZSIsCiAgICAgICAgICAgInVybCI6ICJodHRwczov
L2Rvd25sb2FkMi5nbHVvbmhxLmNvbS9vcGVuamZ4LzI1L29wZW5qZngtMjVfbGludXgteDY0X2Jp
bi1zZGsuemlwIiwKICAgICAgICAgICAic2hhMjU2IjogImE3MjE1NzUwNjc0NmYwM2RlNDkzMTcx
MzEzZWM5MzQyNWYxZWMxYjVjYjRiNDQ2ZWVlOWE1NjhmZjQ4NGFmNGUiLAotICAgICAgICAgICJk
ZXN0IjogIi4iCisgICAgICAgICAgImRlc3QiOiAiLiIsCisgICAgICAgICAgIngtY2hlY2tlci1k
YXRhIjogeworICAgICAgICAgICAgInR5cGUiOiAiaHRtbCIsCisgICAgICAgICAgICAidXJsIjog
Imh0dHBzOi8vZ2x1b25ocS5jb20vcHJvZHVjdHMvamF2YWZ4LyIsCisgICAgICAgICAgICAidmVy
c2lvbi1wYXR0ZXJuIjogIm9wZW5qZngtKFxcZFtcXGQuXSopX2xpbnV4LXg2NF9iaW4tc2RrXFwu
emlwIiwKKyAgICAgICAgICAgICJ1cmwtdGVtcGxhdGUiOiAiaHR0cHM6Ly9kb3dubG9hZDIuZ2x1
b25ocS5jb20vb3BlbmpmeC8ke3ZlcnNpb259L29wZW5qZngtJHt2ZXJzaW9ufV9saW51eC14NjRf
YmluLXNkay56aXAiCisgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICBdCiAgICAgfSwKICAg
ICB7Ci0gICAgICAibmFtZSI6ICJlbnRyeXBvaW50IiwKLSAgICAgICJidWlsZHN5c3RlbSI6ICJj
bWFrZSIsCisgICAgICAibmFtZSI6ICJramFyIiwKKyAgICAgICJidWlsZHN5c3RlbSI6ICJjbWFr
ZS1uaW5qYSIsCiAgICAgICAiYnVpbGRkaXIiOiB0cnVlLAorICAgICAgImNvbmZpZy1vcHRzIjog
WworICAgICAgICAiLURDTUFLRV9CVUlMRF9UWVBFPVJlbFdpdGhEZWJJbmZvIgorICAgICAgXSwK
ICAgICAgICJzb3VyY2VzIjogWwogICAgICAgICB7CiAgICAgICAgICAgInR5cGUiOiAiZGlyIiwK
ICAgICAgICAgICAicGF0aCI6ICIuIgogICAgICAgICB9CiAgICAgICBdCi0gICAgfSwKLSAgICB7
Ci0gICAgICAibmFtZSI6ICJkZXNrdG9wLWZpbGUiLAotICAgICAgImJ1aWxkc3lzdGVtIjogInNp
bXBsZSIsCi0gICAgICAiYnVpbGQtY29tbWFuZHMiOiBbCi0gICAgICAgICJpbnN0YWxsIC1EbTY0
NCBvcmcua2RlLmtqYXIuZGVza3RvcCAvYXBwL3NoYXJlL2FwcGxpY2F0aW9ucy9vcmcua2RlLmtq
YXIuZGVza3RvcCIKLSAgICAgIF0sCi0gICAgICAic291cmNlcyI6IFsKLSAgICAgICAgewotICAg
ICAgICAgICJ0eXBlIjogImZpbGUiLAotICAgICAgICAgICJwYXRoIjogIm9yZy5rZGUua2phci5k
ZXNrdG9wIgotICAgICAgICB9Ci0gICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6
ICJhcHBzdHJlYW0iLAotICAgICAgImJ1aWxkc3lzdGVtIjogInNpbXBsZSIsCi0gICAgICAiYnVp
bGQtY29tbWFuZHMiOiBbCi0gICAgICAgICJpbnN0YWxsIC1EbTY0NCBvcmcua2RlLmtqYXIubWV0
YWluZm8ueG1sIC9hcHAvc2hhcmUvbWV0YWluZm8vb3JnLmtkZS5ramFyLm1ldGFpbmZvLnhtbCIK
LSAgICAgIF0sCi0gICAgICAic291cmNlcyI6IFsKLSAgICAgICAgewotICAgICAgICAgICJ0eXBl
IjogImZpbGUiLAotICAgICAgICAgICJwYXRoIjogIm9yZy5rZGUua2phci5tZXRhaW5mby54bWwi
Ci0gICAgICAgIH0KLSAgICAgIF0KICAgICB9CiAgIF0KIH0KZGlmZiAtLWdpdCBhLy5naXRsYWIt
Y2kueW1sIGIvLmdpdGxhYi1jaS55bWwKaW5kZXggMDZjYzFmMi4uNmQ5YmNjNiAxMDA2NDQKLS0t
IGEvLmdpdGxhYi1jaS55bWwKKysrIGIvLmdpdGxhYi1jaS55bWwKQEAgLTUsNCArNSw2IEBAIGlu
Y2x1ZGU6CiAgIC0gcHJvamVjdDogc3lzYWRtaW4vY2ktdXRpbGl0aWVzCiAgICAgZmlsZToKICAg
ICAgIC0gL2dpdGxhYi10ZW1wbGF0ZXMvcmV1c2UtbGludC55bWwKKyAgICAgIC0gL2dpdGxhYi10
ZW1wbGF0ZXMveG1sLWxpbnQueW1sCisgICAgICAtIC9naXRsYWItdGVtcGxhdGVzL2pzb24tdmFs
aWRhdGlvbi55bWwKICAgICAgIC0gL2dpdGxhYi10ZW1wbGF0ZXMvZmxhdHBhay55bWwKZGlmZiAt
LWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNzQwZWEwZS4uNDNj
NTdlNCAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAg
LTIsODkgKzIsOTYgQEAKICMgU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyNiBIYWRpIENob2ty
IDxoYWRpY2hva3JAaWNsb3VkLmNvbT4KIAogY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9O
IDMuMjgpCi1wcm9qZWN0KEtqYXJBcHApCitwcm9qZWN0KGtqYXIgVkVSU0lPTiAwLjMuMCkKIAot
c2V0KFFUX01JTl9WRVJTSU9OICI2LjkuMCIpCitzZXQoUVRfTUlOX1ZFUlNJT04gIjYuMTEuMCIp
CiBzZXQoS0ZfTUlOX1ZFUlNJT04gIjYuMTIuMCIpCiAKIGZpbmRfcGFja2FnZShFQ00gJHtLRl9N
SU5fVkVSU0lPTn0gUkVRVUlSRUQgTk9fTU9EVUxFKQotc2V0KENNQUtFX01PRFVMRV9QQVRIICR7
Q01BS0VfTU9EVUxFX1BBVEh9ICR7RUNNX01PRFVMRV9QQVRIfSkKK2xpc3QoQVBQRU5EIENNQUtF
X01PRFVMRV9QQVRIICR7RUNNX01PRFVMRV9QQVRIfSkKIAogaW5jbHVkZShLREVJbnN0YWxsRGly
cykKIGluY2x1ZGUoS0RFQ01ha2VTZXR0aW5ncykKIGluY2x1ZGUoS0RFQ29tcGlsZXJTZXR0aW5n
cyBOT19QT0xJQ1lfU0NPUEUpCiBpbmNsdWRlKEtERUNsYW5nRm9ybWF0KQogaW5jbHVkZShLREVH
aXRDb21taXRIb29rcykKK2luY2x1ZGUoRUNNRGVwcmVjYXRpb25TZXR0aW5ncykKK2luY2x1ZGUo
RUNNRmluZFFtbE1vZHVsZSkKK2luY2x1ZGUoRUNNU2V0dXBWZXJzaW9uKQoraW5jbHVkZShGZWF0
dXJlU3VtbWFyeSkKIAogc2V0KENNQUtFX0NYWF9TVEFOREFSRCAyMykKIHNldChDTUFLRV9DWFhf
U1RBTkRBUkRfUkVRVUlSRUQgT04pCiAKIGZpbmRfcGFja2FnZShRdDYgJHtRVF9NSU5fVkVSU0lP
Tn0gQ09ORklHIFJFUVVJUkVEIENPTVBPTkVOVFMKICAgICBDb3JlCisgICAgR3VpCiAgICAgUW1s
CiAgICAgUXVpY2sKICAgICBRdWlja0NvbnRyb2xzMgotICAgIFdpZGdldHMKICkKIAogZmluZF9w
YWNrYWdlKEtGNiAke0tGX01JTl9WRVJTSU9OfSBSRVFVSVJFRCBDT01QT05FTlRTCiAgICAgQ29y
ZUFkZG9ucwogICAgIEkxOG4KICAgICBLaXJpZ2FtaQotICAgIE5vdGlmaWNhdGlvbnMKICkKIAot
cXQ2X2FkZF9yZXNvdXJjZXMoa2phcmFwcF9SRVNPVVJDRVMgc3JjL3Jlc291cmNlcy5xcmMpCitl
Y21fZmluZF9xbWxtb2R1bGUob3JnLmtkZS5jb3JlYWRkb25zIFJFUVVJUkVEKQogCi1zZXQoa2ph
cmFwcF9TUkNTCi0gICAgc3JjL21haW4uY3BwCi0gICAgc3JjL2tqYXJhcHAuY3BwCi0gICAgJHtr
amFyYXBwX1JFU09VUkNFU30KLSkKK3F0X3N0YW5kYXJkX3Byb2plY3Rfc2V0dXAoUkVRVUlSRVMg
Ni4xMSkKIAotYWRkX2V4ZWN1dGFibGUoa2phcmFwcCAke2tqYXJhcHBfU1JDU30pCitlY21fc2V0
X2Rpc2FibGVkX2RlcHJlY2F0aW9uX3ZlcnNpb25zKFFUIDYuMTEgS0YgNi4xMikKIAotcXQ2X2Fk
ZF9yZXNvdXJjZXMoa2phcl93YXRjaGVyX1JFU09VUkNFUyBzcmMvd2F0Y2hlci93YXRjaGVyLnFy
YykKK2VjbV9zZXR1cF92ZXJzaW9uKCR7UFJPSkVDVF9WRVJTSU9OfQorICAgIFZBUklBQkxFX1BS
RUZJWCBLSkFSCisgICAgVkVSU0lPTl9IRUFERVIgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElS
fS9ramFyLXZlcnNpb24uaCIKKykKIAotc2V0KGtqYXJfd2F0Y2hlcl9TUkNTCi0gICAgc3JjL3dh
dGNoZXIva2phcl93YXRjaGVyLmNwcAotICAgICR7a2phcl93YXRjaGVyX1JFU09VUkNFU30KK3F0
X2FkZF9leGVjdXRhYmxlKGtqYXJhcHAKKyAgICBzcmMvbWFpbi5jcHAKKyAgICBzcmMva2phci5j
cHAKKyAgICBzcmMva2phci5oCisgICAgc3JjL2tqYXJhcHAuY3BwCisgICAgc3JjL2tqYXJhcHAu
aAogKQogCi1hZGRfZXhlY3V0YWJsZShramFyX3dhdGNoZXIgJHtramFyX3dhdGNoZXJfU1JDU30p
CitxdF9hZGRfcW1sX21vZHVsZShramFyYXBwCisgICAgVVJJIG9yZy5rZGUua2phcgorICAgIFZF
UlNJT04gMS4wCisgICAgUU1MX0ZJTEVTCisgICAgICAgIHNyYy9xbWwvTWFpbi5xbWwKKyAgICAg
ICAgc3JjL3FtbC9FcnJvckRpYWxvZy5xbWwKKykKIAotdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGtq
YXJhcHAKLSAgICBRdDY6OkNvcmUKLSAgICBRdDY6OlFtbAotICAgIFF0Njo6UXVpY2sKLSAgICBR
dDY6OlF1aWNrQ29udHJvbHMyCi0gICAgUXQ2OjpXaWRnZXRzCi0gICAgS0Y2OjpDb3JlQWRkb25z
Ci0gICAgS0Y2OjpJMThuCi0gICAgS0Y2OjpLaXJpZ2FtaQordGFyZ2V0X2luY2x1ZGVfZGlyZWN0
b3JpZXMoa2phcmFwcCBQUklWQVRFCisgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Ny
YworICAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQogKQogCi10YXJnZXRfbGlua19saWJy
YXJpZXMoa2phcl93YXRjaGVyCit0YXJnZXRfbGlua19saWJyYXJpZXMoa2phcmFwcCBQUklWQVRF
CiAgICAgUXQ2OjpDb3JlCisgICAgUXQ2OjpHdWkKICAgICBRdDY6OlFtbAogICAgIFF0Njo6UXVp
Y2sKICAgICBRdDY6OlF1aWNrQ29udHJvbHMyCi0gICAgUXQ2OjpXaWRnZXRzCisgICAgS0Y2OjpD
b3JlQWRkb25zCiAgICAgS0Y2OjpJMThuCisgICAgS0Y2OjpJMThuUW1sCiAgICAgS0Y2OjpLaXJp
Z2FtaQogKQogCiBraTE4bl9pbnN0YWxsKHBvKQogCi1maWxlKEdMT0JfUkVDVVJTRSBBTExfQ0xB
TkdfRk9STUFUX1NPVVJDRV9GSUxFUwotICAgIHNyYy8qLmNwcAotICAgIHNyYy8qLmgKLSAgICBz
cmMvKi5ocHAKLSAgICBzcmMvd2F0Y2hlci8qLmNwcAotICAgIHNyYy93YXRjaGVyLyouaAoraW5z
dGFsbChUQVJHRVRTIGtqYXJhcHAgJHtLREVfSU5TVEFMTF9UQVJHRVRTX0RFRkFVTFRfQVJHU30p
CisKK2luc3RhbGwoRklMRVMgb3JnLmtkZS5ramFyLmRlc2t0b3AgREVTVElOQVRJT04gJHtLREVf
SU5TVEFMTF9BUFBESVJ9KQoraW5zdGFsbChGSUxFUyBvcmcua2RlLmtqYXIubWV0YWluZm8ueG1s
IERFU1RJTkFUSU9OICR7S0RFX0lOU1RBTExfTUVUQUlORk9ESVJ9KQoraW5zdGFsbChGSUxFUyBp
Y29ucy9vcmcua2RlLmtqYXIuc3ZnCisgICAgREVTVElOQVRJT04gJHtLREVfSU5TVEFMTF9JQ09O
RElSfS9oaWNvbG9yL3NjYWxhYmxlL2FwcHMKICkKIAorZmlsZShHTE9CX1JFQ1VSU0UgQUxMX0NM
QU5HX0ZPUk1BVF9TT1VSQ0VfRklMRVMgc3JjLyouY3BwIHNyYy8qLmgpCiBrZGVfY2xhbmdfZm9y
bWF0KCR7QUxMX0NMQU5HX0ZPUk1BVF9TT1VSQ0VfRklMRVN9KQoga2RlX2NvbmZpZ3VyZV9naXRf
cHJlX2NvbW1pdF9ob29rKENIRUNLUyBDTEFOR19GT1JNQVQpCi0KLWluc3RhbGwoVEFSR0VUUyBr
amFyYXBwIGtqYXJfd2F0Y2hlciAke0tERV9JTlNUQUxMX1RBUkdFVFNfREVGQVVMVF9BUkdTfSkK
K2ZlYXR1cmVfc3VtbWFyeShXSEFUIEFMTCBGQVRBTF9PTl9NSVNTSU5HX1JFUVVJUkVEX1BBQ0tB
R0VTKQpkaWZmIC0tZ2l0IGEvTWVzc2FnZXMuc2ggYi9NZXNzYWdlcy5zaApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZjZmODJhCi0tLSAvZGV2L251bGwKKysrIGIvTWVzc2Fn
ZXMuc2gKQEAgLTAsMCArMSw4IEBACisjISAvdXNyL2Jpbi9lbnYgYmFzaAorIyBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQ0MwLTEuMAorIyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiBub25lCisK
KyRFWFRSQUNUUkMgJChmaW5kIC4gLW5hbWUgJyoudWknIC1vIC1uYW1lICcqLnJjJykgPj4gcmMu
Y3BwIDI+L2Rldi9udWxsCiskWEdFVFRFWFQgJChmaW5kIHNyYyAtbmFtZSAnKi5jcHAnIC1vIC1u
YW1lICcqLmgnIC1vIC1uYW1lICcqLnFtbCcpIFwKKyAgICByYy5jcHAgLW8gIiRwb2RpciIvb3Jn
LmtkZS5ramFyLnBvdAorcm0gLWYgcmMuY3BwCmRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFE
TUUubWQKaW5kZXggODNhMzUxOS4uMmVlZjA1MSAxMDA2NDQKLS0tIGEvUkVBRE1FLm1kCisrKyBi
L1JFQURNRS5tZApAQCAtMSwxNCArMSwyNyBAQAogIyBramFyCiAqKksqKm9vbCAqKkoqKmF2YSAq
KkEqKnJjaGl2ZSAqKlIqKnVubmVyIChwcm9ub3VuY2VkICpLLWphcnJycmdoKiwgbGlrZSBhIGRy
YWdvbiBwaXJhdGUgPjpEKS4KIAotUnVuIEpBUiBmaWxlcyBkaXJlY3RseSB2aWEgYSBidW5kbGVk
IE9wZW5KREsgRmxhdHBhayB3aXRoIGEgS2lyaWdhbWkgR1VJLiBBbmQgb3B0aW9uYWx5IGdlbmVy
YXRlIHdyYXBwZXIgc2NyaXB0cyBmb3IgZGV2ZWxvcGVycyB3aG8gZ2V0IHRpcmVkIG9mIHR5cGlu
ZyBvdXQgYGZsYXRwYWsgcnVuYCBjb21tYW5kcy4KK1J1biBKQVIgZmlsZXMgZGlyZWN0bHkgdmlh
IGEgYnVuZGxlZCBPcGVuSkRLIEZsYXRwYWsgd2l0aCBhIEtpcmlnYW1pIEdVSS4gQW5kIG9wdGlv
bmFsbHkgZ2VuZXJhdGUgd3JhcHBlciBzY3JpcHRzIGZvciBkZXZlbG9wZXJzIHdobyBnZXQgdGly
ZWQgb2YgdHlwaW5nIG91dCBgZmxhdHBhayBydW5gIGNvbW1hbmRzLgorCisjIyBTZWN1cml0eQor
CisqKktKYXIgZG9lcyBub3Qgc2FuZGJveCB0aGUgSkFScyBpdCBydW5zLioqCisKK1RoZSBGbGF0
cGFrIGhvbGRzIGAtLWZpbGVzeXN0ZW09aG9tZWAgYW5kIGAtLXNoYXJlPW5ldHdvcmtgLCBhbmQg
dGhlIEpWTSBpdAorc3RhcnRzIGluaGVyaXRzIGJvdGguIEEgSkFSIGxhdW5jaGVkIHRocm91Z2gg
S0phciBjYW4gdGhlcmVmb3JlIHJlYWQgYW5kIG1vZGlmeQorZXZlcnl0aGluZyBpbiB5b3VyIEhv
bWUgZm9sZGVyIGFuZCB0YWxrIHRvIHRoZSBuZXR3b3JrIGV4YWN0bHkgYXMgaXQgY291bGQKK3Vu
ZGVyIGEgc3lzdGVtLXdpZGUgSmF2YSBpbnN0YWxsYXRpb24uCisKKyoqT25seSBydW4gSkFSIGZp
bGVzIHlvdSB0cnVzdC4qKgogCiAjIyBCdWlsZAorCitOZWVkcyB0aGUgYG9yZy5rZGUuUGxhdGZv
cm1gIGFuZCBgb3JnLmtkZS5TZGtgIDYuMTEgcnVudGltZXMgcGx1cyB0aGUKK2BvcmcuZnJlZWRl
c2t0b3AuU2RrLkV4dGVuc2lvbi5vcGVuamRrMjVgIGV4dGVuc2lvbiwgZnJvbSB3aGljaGV2ZXIg
cmVtb3RlIHlvdQorYWxyZWFkeSBoYXZlIHRoZW0gb24uCisKIGBgYAotZmxhdHBhayByZW1vdGUt
YWRkIC0tdXNlciBmbGF0aHViIGh0dHBzOi8vZmxhdGh1Yi5vcmcvcmVwby9mbGF0aHViLmZsYXRw
YWtyZXBvCi1gYGAKLWBgYAotZmxhdHBhay1idWlsZGVyIC0taW5zdGFsbCAtLXVzZXIgLS1pbnN0
YWxsLWRlcHMtZnJvbT1mbGF0aHViIC0tZm9yY2UtY2xlYW4gYnVpbGQtZGlyIC5mbGF0cGFrLW1h
bmlmZXN0Lmpzb24KK2ZsYXRwYWstYnVpbGRlciAtLWluc3RhbGwgLS11c2VyIC0tZm9yY2UtY2xl
YW4gYnVpbGQtZGlyIC5mbGF0cGFrLW1hbmlmZXN0Lmpzb24KIGBgYAogCiAjIyBVc2UKQEAgLTI3
LDcgKzQwLDE1IEBAIEtKYXIgaXMgYWxzbyByZWdpc3RlcmVkIGFzIGEgaGFuZGxlciBmb3IgYC5q
YXJgIGZpbGVzIHNvIHlvdSBjYW4gb3BlbiB0aGVtIGRpcmVjCiBmbGF0cGFrIHJ1biBvcmcua2Rl
LmtqYXIgL3BhdGgvdG8vYXBwLmphcgogYGBgCiAKLUlmIEphdmEgcmVwb3J0cyBhbiBlcnJvciAo
ZS5nLiBtaXNzaW5nIG1haW4gbWFuaWZlc3QgYXR0cmlidXRlKSB0aGUgR1VJIG9wZW5zIGF1dG9t
YXRpY2FsbHkgYW5kIGRpc3BsYXlzIGl0LgorVGhlIGNvbW1hbmQgcmV0dXJucyBpbW1lZGlhdGVs
eTsgdGhlIEpBUiBrZWVwcyBydW5uaW5nIGluIGEgd2F0Y2hlciBwcm9jZXNzLgorSWYgSmF2YSBy
ZXBvcnRzIGFuIGVycm9yIChlLmcuIG1pc3NpbmcgbWFpbiBtYW5pZmVzdCBhdHRyaWJ1dGUpIHRo
ZSB3YXRjaGVyCitvcGVucyBhIHdpbmRvdyBhbmQgZGlzcGxheXMgaXQuCisKK0EgSkFSIGNhbiBh
bHNvIGZhaWwgd2l0aG91dCBhIG5vbi16ZXJvIGV4aXQgY29kZSwgZm9yIGV4YW1wbGUgd2hlbiBp
dCBkaWVzIG9uCit0aGUgQVdUIGV2ZW50IHRocmVhZC4gVGhlIHdhdGNoZXIgdGhlcmVmb3JlIHRy
ZWF0cyBhbnl0aGluZyBvbiBzdGRlcnIgYXMgYQorZmFpbHVyZS4gU29tZSBKQVJzIHdyaXRlIHdh
cm5pbmdzIHRoZXJlIGFuZCB3b3JrIGZpbmUsIHNvIHRoZSB3aW5kb3cgY2FuIHR1cm4KK3VwIGFm
dGVyIGEgcGVyZmVjdGx5IGdvb2QgcnVuOyBpdCBvbmx5IGV2ZXIgYXBwZWFycyBvbmNlIHRoZSBK
QVIgaGFzIGV4aXRlZCwgc28KK2Nsb3NpbmcgaXQgY29zdHMgbm90aGluZy4KIAogIyMjIEphdmFG
WAogCkBAIC01MSw2ICs3MiwyMSBAQCBmbGF0cGFrIHJ1biBvcmcua2RlLmtqYXIgLS1nZW5lcmF0
ZS13cmFwcGVycwogCiBPciB2aWEgdGhlIEdVSTogKipBZHZhbmNlZCDihpIgR2VuZXJhdGUgV3Jh
cHBlcnMqKi4gRXhpc3Rpbmcgbm9uLWtqYXIgYmluYXJpZXMgYXJlIG5ldmVyIG92ZXJ3cml0dGVu
LiBgfi8ubG9jYWwvYmluYCBtdXN0IGJlIGluIGBQQVRIYC4KIAorTm90ZSB0aGF0IGEgZ2VuZXJh
dGVkIGBqYXZhYCBpbiBgfi8ubG9jYWwvYmluYCBzaGFkb3dzIGEgc3lzdGVtIEpESyB3aGVuZXZl
cgorYH4vLmxvY2FsL2JpbmAgY29tZXMgZmlyc3QgaW4gYFBBVEhgLgorCitXcmFwcGVycyBjYW4g
b25seSBzZWUgZmlsZXMgaW5zaWRlIHlvdXIgSG9tZSBmb2xkZXIsIHNvIGBqYXZhYyAvdG1wL0Zv
by5qYXZhYAord2lsbCBub3Qgd29yayB1bmxlc3MgeW91IGV4dGVuZCB0aGUgcGVybWlzc2lvbiBp
biBTeXN0ZW0gU2V0dGluZ3MuCisKKyMjIyBSZW1vdmUgd3JhcHBlcnMKKworRGVsZXRlcyB0aGUg
c2NyaXB0cyBramFyIHdyb3RlIGFuZCBub3RoaW5nIGVsc2U6CitgYGAKK2ZsYXRwYWsgcnVuIG9y
Zy5rZGUua2phciAtLXJlbW92ZS13cmFwcGVycworYGBgCisKK09yIHZpYSB0aGUgR1VJOiAqKkFk
dmFuY2VkIOKGkiBSZW1vdmUgV3JhcHBlcnMqKi4KKwogIyMjIExpc3QgYXZhaWxhYmxlIHRvb2xz
CiAKIFZpYSB0aGUgR1VJOiAqKkFkdmFuY2VkIOKGkiBTaG93IEF2YWlsYWJsZSBUb29scyoqLgpA
QCAtNjEsNyArOTcsMTggQEAgZmxhdHBhayBydW4gb3JnLmtkZS5ramFyIGphdmEgLXZlcnNpb24K
IGZsYXRwYWsgcnVuIG9yZy5rZGUua2phciBqYXZhYyBNeUNsYXNzLmphdmEKIGBgYAogCi1Nb2R1
bGUtYXdhcmUgdG9vbHMgKGBqYXZhYCwgYGphdmFjYCwgYGphdmFkb2NgLCBgamRlcHNgLCBganNo
ZWxsYCwgYGpsaW5rYCwgYGpuYXRpdmVzY2FuYCwgYGpwYWNrYWdlYCkgYXV0b21hdGljYWxseSBn
ZXQgdGhlIGJ1bmRsZWQgSmF2YUZYIGFuZCBgfi8ubG9jYWwvc2hhcmUva2phci9tb2R1bGVzL2Ag
b24gdGhlaXIgbW9kdWxlIHBhdGguCitgamF2YWAsIGBqYXZhY2AsIGBqYXZhZG9jYCwgYGpkZXBz
YCwgYGpzaGVsbGAgYW5kIGBqbmF0aXZlc2NhbmAgZ2V0IHRoZSBidW5kbGVkCitKYXZhRlggYW5k
IGB+Ly5sb2NhbC9zaGFyZS9ramFyL21vZHVsZXMvYCBhcHBlbmRlZCB0byB0aGVpciBtb2R1bGUg
cGF0aC4gT2YKK3Rob3NlLCBgamF2YWAsIGBqYXZhY2AsIGBqYXZhZG9jYCBhbmQgYGpzaGVsbGAg
YWxzbyBnZXQKK2AtLWFkZC1tb2R1bGVzIEFMTC1NT0RVTEUtUEFUSGAsIHVubGVzcyB5b3UgcGFz
cyB5b3VyIG93biBgLS1hZGQtbW9kdWxlc2AsCitjb21waWxlIGEgYG1vZHVsZS1pbmZvLmphdmFg
LCBvciBydW4gYSBtb2R1bGUgd2l0aCBgLW1gLgorCitgamxpbmtgIGFuZCBganBhY2thZ2VgIGFy
ZSBsZWZ0IGFsb25lLCBzaW5jZSBhIHdpZGVyIG1vZHVsZSBncmFwaCB3b3VsZCBjaGFuZ2UKK3Ro
ZSBpbWFnZSB0aGV5IHByb2R1Y2UuCisKK0ZvciBgamF2YWAsIG9ubHkgdGhlIGFyZ3VtZW50cyBi
ZWZvcmUgYC1qYXJgLCBgLW1gIG9yIHRoZSBtYWluIGNsYXNzIGFyZQordHJlYXRlZCBhcyBKVk0g
b3B0aW9uczsgYW55dGhpbmcgYWZ0ZXIgdGhhdCBpcyBwYXNzZWQgdG8geW91ciBwcm9ncmFtCit1
bnRvdWNoZWQuCiAKICMjIExpY2Vuc2UKIApkaWZmIC0tZ2l0IGEvUkVVU0UudG9tbCBiL1JFVVNF
LnRvbWwKaW5kZXggZmQ0ZTlmNy4uMmJmMzA3NiAxMDA2NDQKLS0tIGEvUkVVU0UudG9tbAorKysg
Yi9SRVVTRS50b21sCkBAIC01LDExICs1LDYgQEAgcGF0aCA9ICJvcmcua2RlLmtqYXIuZGVza3Rv
cCIKIFNQRFgtRmlsZUNvcHlyaWdodFRleHQgPSAibm9uZSIKIFNQRFgtTGljZW5zZS1JZGVudGlm
aWVyID0gIkNDMC0xLjAiCiAKLVtbYW5ub3RhdGlvbnNdXQotcGF0aCA9ICJvcmcua2RlLmtqYXIu
bWV0YWluZm8ueG1sIgotU1BEWC1GaWxlQ29weXJpZ2h0VGV4dCA9ICJub25lIgotU1BEWC1MaWNl
bnNlLUlkZW50aWZpZXIgPSAiQ0MwLTEuMCIKLQogW1thbm5vdGF0aW9uc11dCiBwYXRoID0gIlJF
QURNRS5tZCIKIFNQRFgtRmlsZUNvcHlyaWdodFRleHQgPSAibm9uZSIKQEAgLTE4LDQgKzEzLDQg
QEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXIgPSAiQ0MwLTEuMCIKIFtbYW5ub3RhdGlvbnNdXQog
cGF0aCA9ICIuZmxhdHBhay1tYW5pZmVzdC5qc29uIgogU1BEWC1GaWxlQ29weXJpZ2h0VGV4dCA9
ICJub25lIgotU1BEWC1MaWNlbnNlLUlkZW50aWZpZXIgPSAiQ0MwLTEuMCIKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCitTUERYLUxpY2Vuc2UtSWRlbnRpZmllciA9ICJDQzAtMS4wIgpkaWZm
IC0tZ2l0IGEvaWNvbnMvb3JnLmtkZS5ramFyLnN2ZyBiL2ljb25zL29yZy5rZGUua2phci5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EzNmE4ZQotLS0gL2Rldi9udWxs
CisrKyBiL2ljb25zL29yZy5rZGUua2phci5zdmcKQEAgLTAsMCArMSw4MSBAQAorPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cis8IS0tIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBDQzAtMS4wIC0tPgorPCEtLSBTUERYLUZpbGVDb3B5cmlnaHRU
ZXh0OiBub25lIC0tPgorPHN2ZworICAgd2lkdGg9IjY0IgorICAgaGVpZ2h0PSI2NCIKKyAgIHZp
ZXdCb3g9IjAgMCA2NCA2NCIKKyAgIHZlcnNpb249IjEuMSIKKyAgIGlkPSJzdmc3IgorICAgc29k
aXBvZGk6ZG9jbmFtZT0ia2phci1pY29uLXBsYWluLnN2ZyIKKyAgIGlua3NjYXBlOnZlcnNpb249
IjEuNC40IChkY2FmM2U3ZDllLCAyMDI2LTA1LTA1KSIKKyAgIHhtbG5zOmlua3NjYXBlPSJodHRw
Oi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgorICAgeG1sbnM6c29kaXBv
ZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgor
ICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgorICAgeG1sbnM6c3ZnPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgIDxkZWZzCisgICAgIGlkPSJkZWZzNyIgLz4KKyAg
PHNvZGlwb2RpOm5hbWVkdmlldworICAgICBpZD0ibmFtZWR2aWV3NyIKKyAgICAgcGFnZWNvbG9y
PSIjZmZmZmZmIgorICAgICBib3JkZXJjb2xvcj0iIzAwMDAwMCIKKyAgICAgYm9yZGVyb3BhY2l0
eT0iMC4yNSIKKyAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCisgICAgIGlua3NjYXBl
OnBhZ2VvcGFjaXR5PSIwLjAiCisgICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCisg
ICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKKyAgICAgaW5rc2NhcGU6em9vbT0iMTMu
NjA5Mzc1IgorICAgICBpbmtzY2FwZTpjeD0iMzIiCisgICAgIGlua3NjYXBlOmN5PSIzMiIKKyAg
ICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgorICAgICBpbmtzY2FwZTp3aW5kb3ctaGVp
Z2h0PSIxMTIyIgorICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKKyAgICAgaW5rc2NhcGU6d2lu
ZG93LXk9IjAiCisgICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCisgICAgIGlua3Nj
YXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzciIC8+CisgIDxnCisgICAgIGZpbGw9Im5vbmUiCisgICAg
IHN0cm9rZT0iIzdmYzdlYSIKKyAgICAgc3Ryb2tlLXdpZHRoPSIzIgorICAgICBzdHJva2UtbGlu
ZWNhcD0icm91bmQiCisgICAgIGlkPSJnMyIKKyAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEu
MTAyMTgxNCwxLjk4MzkyNjUpIj4KKyAgICA8cGF0aAorICAgICAgIGQ9Im0gMjUsMTcgYyAzLC0z
IC0zLC01IDAsLTgiCisgICAgICAgaWQ9InBhdGgxIiAvPgorICAgIDxwYXRoCisgICAgICAgZD0i
TSAzMywxNSBDIDM2LDEyIDMwLDkgMzMsNiIKKyAgICAgICBpZD0icGF0aDIiIC8+CisgICAgPHBh
dGgKKyAgICAgICBkPSJtIDQxLDE3IGMgMywtMyAtMywtNSAwLC04IgorICAgICAgIGlkPSJwYXRo
MyIgLz4KKyAgPC9nPgorICA8cGF0aAorICAgICBkPSJtIDQzLjA4OTU1MywzMC4yOTM5MTUgaCAz
IGEgOCw4IDAgMCAxIDAsMTUgaCAtNCIKKyAgICAgZmlsbD0ibm9uZSIKKyAgICAgc3Ryb2tlPSIj
Mjk4MGI5IgorICAgICBzdHJva2Utd2lkdGg9IjUiCisgICAgIGlkPSJwYXRoNCIgLz4KKyAgPHBh
dGgKKyAgICAgZD0iTTE0IDI2aDMybC0zIDIwYTcgNyAwIDAgMS03IDZoLTEyYTcgNyAwIDAgMS03
LTZ6IgorICAgICBmaWxsPSIjM2RhZWU5IgorICAgICBpZD0icGF0aDUiIC8+CisgIDxyZWN0Cisg
ICAgIHg9IjEyLjI5MzkxNSIKKyAgICAgeT0iMjQuMzY3MzkzIgorICAgICB3aWR0aD0iMzUuNjMy
NjA3IgorICAgICBoZWlnaHQ9IjQuNjMyNjA2IgorICAgICByeD0iMi40NzQ0ODY2IgorICAgICBm
aWxsPSIjMjk4MGI5IgorICAgICBpZD0icmVjdDUiCisgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6
MC45NTc2MzU7ZmlsbDojMjk3NmI5O2ZpbGwtb3BhY2l0eToxIiAvPgorICA8cGF0aAorICAgICBk
PSJNMTkgMjloNGwyIDIzaC0xYTUgNSAwIDAgMS00LTR6IgorICAgICBmaWxsPSIjNWZiZmVjIgor
ICAgICBpZD0icGF0aDYiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gOS42NTUyNjI1LDU0IEggNTQu
MDUwODIzIEEgMi44OTUzNjI2LDMgMCAwIDEgNTEuMTU1NDYsNTggSCAxMi41NTA2MjUgQSAyLjg5
NTM2MjYsMyAwIDAgMSA5LjY1NTI2MjUsNTQgWiIKKyAgICAgZmlsbD0iIzI5ODBiOSIKKyAgICAg
aWQ9InBhdGg3IgorICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuOTgyNDA2IiAvPgorPC9zdmc+
CmRpZmYgLS1naXQgYS9vcmcua2RlLmtqYXIuZGVza3RvcCBiL29yZy5rZGUua2phci5kZXNrdG9w
CmluZGV4IDRjNmU3MDguLjcwZDc5MzYgMTAwNjQ0Ci0tLSBhL29yZy5rZGUua2phci5kZXNrdG9w
CisrKyBiL29yZy5rZGUua2phci5kZXNrdG9wCkBAIC0xLDkgKzEsMTIgQEAKIFtEZXNrdG9wIEVu
dHJ5XQogTmFtZT1KYXZhIEFyY2hpdmUgUnVubmVyCi1Db21tZW50PVJ1biBKQVIgZmlsZXMKK0dl
bmVyaWNOYW1lPUpBUiBSdW5uZXIKK0NvbW1lbnQ9UnVuIEphdmEgYXJjaGl2ZXMgdXNpbmcgYSBi
dW5kbGVkIE9wZW5KREsKIEV4ZWM9a2phcmFwcCAlZgotSWNvbj1hcHBsaWNhdGlvbi14LWphdmEt
YXJjaGl2ZQorSWNvbj1vcmcua2RlLmtqYXIKIFRlcm1pbmFsPWZhbHNlCiBUeXBlPUFwcGxpY2F0
aW9uCi1NaW1lVHlwZT1hcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmU7Ci1DYXRlZ29yaWVzPURldmVs
b3BtZW50OworTWltZVR5cGU9YXBwbGljYXRpb24vamF2YS1hcmNoaXZlO2FwcGxpY2F0aW9uL3gt
amF2YS1hcmNoaXZlOworQ2F0ZWdvcmllcz1EZXZlbG9wbWVudDtVdGlsaXR5OworS2V5d29yZHM9
SmF2YTtKQVI7SkRLO0pWTTtPcGVuSkRLOworU3RhcnR1cE5vdGlmeT10cnVlCmRpZmYgLS1naXQg
YS9vcmcua2RlLmtqYXIubWV0YWluZm8ueG1sIGIvb3JnLmtkZS5ramFyLm1ldGFpbmZvLnhtbApp
bmRleCBkNDM1YzliLi43MTQ4NDVkIDEwMDY0NAotLS0gYS9vcmcua2RlLmtqYXIubWV0YWluZm8u
eG1sCisrKyBiL29yZy5rZGUua2phci5tZXRhaW5mby54bWwKQEAgLTEsMjIgKzEsNTMgQEAKIDw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y29tcG9uZW50IHR5cGU9ImFk
ZG9uIj4KKzwhLS0gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IENDMC0xLjAgLS0+Cis8IS0tIFNQ
RFgtRmlsZUNvcHlyaWdodFRleHQ6IG5vbmUgLS0+Cis8Y29tcG9uZW50IHR5cGU9ImRlc2t0b3At
YXBwbGljYXRpb24iPgogICAgIDxpZD5vcmcua2RlLmtqYXI8L2lkPgotICAgIDxuYW1lPmtqYXI8
L25hbWU+Ci0gICAgPHN1bW1hcnk+S2lyaWdhbWkgbGF1bmNoZXIgZm9yIEpBUiBmaWxlcyB3aXRo
IGEgYnVuZGxlZCBGbGF0cGFrLU9wZW5KREs8L3N1bW1hcnk+CisgICAgPG5hbWU+SmF2YSBBcmNo
aXZlIFJ1bm5lcjwvbmFtZT4KKyAgICA8c3VtbWFyeT5SdW4gSkFSIGZpbGVzIHdpdGggYSBidW5k
bGVkIE9wZW5KREs8L3N1bW1hcnk+CiAKICAgICA8bWV0YWRhdGFfbGljZW5zZT5DQzAtMS4wPC9t
ZXRhZGF0YV9saWNlbnNlPgogICAgIDxwcm9qZWN0X2xpY2Vuc2U+R1BMLTIuMC1vbmx5IE9SIEdQ
TC0zLjAtb25seSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEw8L3Byb2plY3RfbGljZW5z
ZT4KKyAgICA8cHJvamVjdF9ncm91cD5LREU8L3Byb2plY3RfZ3JvdXA+CisKKyAgICA8bGF1bmNo
YWJsZSB0eXBlPSJkZXNrdG9wLWlkIj5vcmcua2RlLmtqYXIuZGVza3RvcDwvbGF1bmNoYWJsZT4K
KworICAgIDx0cmFuc2xhdGlvbiB0eXBlPSJnZXR0ZXh0Ij5vcmcua2RlLmtqYXI8L3RyYW5zbGF0
aW9uPgorCisgICAgPHByb3ZpZGVzPgorICAgICAgICA8YmluYXJ5PmtqYXJhcHA8L2JpbmFyeT4K
KyAgICA8L3Byb3ZpZGVzPgorCisgICAgPGRldmVsb3BlciBpZD0ib3JnLmtkZSI+CisgICAgICAg
IDxuYW1lPktERSBDb21tdW5pdHk8L25hbWU+CisgICAgPC9kZXZlbG9wZXI+CiAKICAgICA8ZGVz
Y3JpcHRpb24+CiAgICAgICAgIDxwPgotICAgICAgICAgICAga2phciBwcm92aWRlcyBhbiBPcGVu
SkRLIHJ1bnRpbWUgdmlhIEZsYXRwYWsgd2l0aCBhIEtpcmlnYW1pIEdVSSBmb3IgZGVza3RvcCB1
c2UKLSAgICAgICAgICAgIGFuZCBjYW4gZ2VuZXJhdGUgd3JhcHBlciBzY3JpcHRzIHNvIEpESyB0
b29scyBjYW4gYmUgdXNlZCBsaWtlIGEgbm9ybWFsIHN5c3RlbSBKREsuCisgICAgICAgICAgICBr
amFyIHJ1bnMgSmF2YSBhcmNoaXZlcyB1c2luZyBhIGJ1bmRsZWQgT3BlbkpESyBydW50aW1lLCB3
aXRoIGEgS2lyaWdhbWkKKyAgICAgICAgICAgIGludGVyZmFjZSBmb3Igb3BlbmluZyBKQVJzIGFu
ZCBpbnNwZWN0aW5nIGZhaWx1cmVzLiBKYXZhRlggaXMgaW5jbHVkZWQsIGFuZAorICAgICAgICAg
ICAgYWRkaXRpb25hbCBtb2R1bGVzIGNhbiBiZSBkcm9wcGVkIGludG8gYSB1c2VyIGRpcmVjdG9y
eS4KKyAgICAgICAgPC9wPgorICAgICAgICA8cD4KKyAgICAgICAgICAgIEl0IGNhbiBhbHNvIGdl
bmVyYXRlIHdyYXBwZXIgc2NyaXB0cyBzbyB0aGUgYnVuZGxlZCBKREsgdG9vbHMgYmVoYXZlIGxp
a2UgYQorICAgICAgICAgICAgc3lzdGVtIEpESyBvbiB0aGUgY29tbWFuZCBsaW5lLgorICAgICAg
ICA8L3A+CisgICAgICAgIDxwPgorICAgICAgICAgICAgUGxlYXNlIG5vdGU6IGtqYXIgYnVuZGxl
cyBhIEphdmEgcnVudGltZSwgYnV0IGl0IGRvZXMgbm90IHNhbmRib3ggdGhlCisgICAgICAgICAg
ICBwcm9ncmFtcyBpdCBydW5zLiBBIEpBUiBsYXVuY2hlZCB0aHJvdWdoIGtqYXIgaGFzIHJlYWQg
YW5kIHdyaXRlIGFjY2VzcyB0bworICAgICAgICAgICAgeW91ciBIb21lIGZvbGRlciBhbmQgYWNj
ZXNzIHRvIHRoZSBuZXR3b3JrLCBleGFjdGx5IGFzIGl0IHdvdWxkIHVuZGVyIGEKKyAgICAgICAg
ICAgIHN5c3RlbS13aWRlIEphdmEgaW5zdGFsbGF0aW9uLiBPbmx5IHJ1biBKQVIgZmlsZXMgeW91
IHRydXN0LgogICAgICAgICA8L3A+CiAgICAgPC9kZXNjcmlwdGlvbj4KIAotICAgIDxwcm92aWRl
cz4KLSAgICAgICAgPGJpbmFyeT5qYXZhPC9iaW5hcnk+Ci0gICAgICAgIDxiaW5hcnk+amF2YWM8
L2JpbmFyeT4KLSAgICAgICAgPGJpbmFyeT5qYXI8L2JpbmFyeT4KLSAgICA8L3Byb3ZpZGVzPgor
ICAgIDxjb250ZW50X3JhdGluZyB0eXBlPSJvYXJzLTEuMSIvPgorCisgICAgPHVybCB0eXBlPSJo
b21lcGFnZSI+aHR0cHM6Ly9pbnZlbnQua2RlLm9yZy9zeXN0ZW0va2phcjwvdXJsPgorICAgIDx1
cmwgdHlwZT0iYnVndHJhY2tlciI+aHR0cHM6Ly9pbnZlbnQua2RlLm9yZy9zeXN0ZW0va2phci8t
L2lzc3VlczwvdXJsPgorICAgIDx1cmwgdHlwZT0idmNzLWJyb3dzZXIiPmh0dHBzOi8vaW52ZW50
LmtkZS5vcmcvc3lzdGVtL2tqYXI8L3VybD4KKyAgICA8dXJsIHR5cGU9ImNvbnRyaWJ1dGUiPmh0
dHBzOi8vaW52ZW50LmtkZS5vcmcvc3lzdGVtL2tqYXIvLS9ibG9iL21hc3Rlci9SRUFETUUubWQ8
L3VybD4KKworICAgIDxyZWxlYXNlcz4KKyAgICAgICAgPHJlbGVhc2UgdmVyc2lvbj0iMC4zLjAi
IGRhdGU9IjIwMjYtMDgtMDQiLz4KKyAgICA8L3JlbGVhc2VzPgogPC9jb21wb25lbnQ+CmRpZmYg
LS1naXQgYS9zcmMva2phci5jcHAgYi9zcmMva2phci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjI0NjQzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9ramFyLmNwcApA
QCAtMCwwICsxLDg3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5
IE9SIEdQTC0zLjAtb25seSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEwKKy8vIFNQRFgt
RmlsZUNvcHlyaWdodFRleHQ6IDIwMjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5jb20+
CisKKyNpbmNsdWRlICJramFyLmgiCisKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2lu
Y2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUZpbGVJbmZvPgorCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisKK3VzaW5nIG5hbWVzcGFjZSBRdDo6TGl0
ZXJhbHM6OlN0cmluZ0xpdGVyYWxzOworCituYW1lc3BhY2UKK3sKKworYm9vbCBtYXRjaGVzQW55
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxRTGF0aW4xU3RyaW5nVmlldz4gbmFtZXMsIFFTdHJpbmdW
aWV3IG5hbWUpCit7CisgICAgcmV0dXJuIHN0ZDo6cmFuZ2VzOjphbnlfb2YobmFtZXMsIFtuYW1l
XShRTGF0aW4xU3RyaW5nVmlldyBjYW5kaWRhdGUpIHsKKyAgICAgICAgcmV0dXJuIG5hbWUgPT0g
Y2FuZGlkYXRlOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZQorCitRU3RyaW5nIEtqYXI6
Ompka1Rvb2woUVN0cmluZ1ZpZXcgbmFtZSkKK3sKKyAgICBRU3RyaW5nIHBhdGggPSBRU3RyaW5n
Ojpmcm9tTGF0aW4xKEpka0JpbkRpcik7CisgICAgcGF0aCArPSB1Jy8nOworICAgIHBhdGggKz0g
bmFtZTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworUVN0cmluZyBLamFyOjpzZWxmUGF0aCgpCit7
CisgICAgY29uc3QgUVN0cmluZyBleGUgPSBRRmlsZUluZm8odSIvcHJvYy9zZWxmL2V4ZSJfcyku
Y2Fub25pY2FsRmlsZVBhdGgoKTsKKyAgICByZXR1cm4gZXhlLmlzRW1wdHkoKSA/IFFDb3JlQXBw
bGljYXRpb246OmFwcGxpY2F0aW9uRmlsZVBhdGgoKSA6IGV4ZTsKK30KKworUVN0cmluZyBLamFy
Ojp1c2VyTW9kdWxlc0RpcigpCit7CisgICAgcmV0dXJuIFFEaXI6OmhvbWVQYXRoKCkgKyB1Ii8u
bG9jYWwvc2hhcmUva2phci9tb2R1bGVzIl9zOworfQorCitib29sIEtqYXI6OmVuc3VyZVVzZXJN
b2R1bGVzRGlyKCkKK3sKKyAgICByZXR1cm4gUURpcigpLm1rcGF0aCh1c2VyTW9kdWxlc0Rpcigp
KTsKK30KKworUVN0cmluZyBLamFyOjp3cmFwcGVyRGlyKCkKK3sKKyAgICByZXR1cm4gUURpcjo6
aG9tZVBhdGgoKSArIHUiLy5sb2NhbC9iaW4iX3M7Cit9CisKK1FTdHJpbmdMaXN0IEtqYXI6Ompk
a1Rvb2xzKCkKK3sKKyAgICBRU3RyaW5nTGlzdCB0b29sczsKKyAgICBjb25zdCBRRGlyIGRpcihR
U3RyaW5nOjpmcm9tTGF0aW4xKEpka0JpbkRpcikpOworICAgIGNvbnN0IFFGaWxlSW5mb0xpc3Qg
ZW50cmllcyA9IGRpci5lbnRyeUluZm9MaXN0KFFEaXI6OkZpbGVzIHwgUURpcjo6RXhlY3V0YWJs
ZSwgUURpcjo6TmFtZSk7CisgICAgdG9vbHMucmVzZXJ2ZShlbnRyaWVzLnNpemUoKSk7CisgICAg
Zm9yIChjb25zdCBRRmlsZUluZm8gJmZpIDogZW50cmllcykgeworICAgICAgICB0b29scy5hcHBl
bmQoZmkuZmlsZU5hbWUoKSk7CisgICAgfQorICAgIHJldHVybiB0b29sczsKK30KKworYm9vbCBL
amFyOjppc01vZHVsZVBhdGhUb29sKFFTdHJpbmdWaWV3IG5hbWUpCit7CisgICAgcmV0dXJuIG1h
dGNoZXNBbnkoeyJqYXZhIl9MMSwgImphdmFjIl9MMSwgImphdmFkb2MiX0wxLCAiamRlcHMiX0wx
LCAianNoZWxsIl9MMSwgImpuYXRpdmVzY2FuIl9MMX0sIG5hbWUpOworfQorCitib29sIEtqYXI6
OnRha2VzQWxsTW9kdWxlUGF0aChRU3RyaW5nVmlldyBuYW1lKQoreworICAgIHJldHVybiBtYXRj
aGVzQW55KHsiamF2YSJfTDEsICJqYXZhYyJfTDEsICJqYXZhZG9jIl9MMSwgImpzaGVsbCJfTDF9
LCBuYW1lKTsKK30KKworUVN0cmluZyBLamFyOjptb2R1bGVQYXRoKCkKK3sKKyAgICByZXR1cm4g
UVN0cmluZzo6ZnJvbUxhdGluMShKYXZhRnhEaXIpICsgdSc6JyArIHVzZXJNb2R1bGVzRGlyKCk7
Cit9CisKK1FTdHJpbmdMaXN0IEtqYXI6Om1vZHVsZUFyZ3MoKQoreworICAgIGVuc3VyZVVzZXJN
b2R1bGVzRGlyKCk7CisgICAgcmV0dXJuIHt1Ii0tbW9kdWxlLXBhdGgiX3MsIG1vZHVsZVBhdGgo
KSwgdSItLWFkZC1tb2R1bGVzIl9zLCB1IkFMTC1NT0RVTEUtUEFUSCJfc307Cit9CmRpZmYgLS1n
aXQgYS9zcmMva2phci5oIGIvc3JjL2tqYXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yNWUxNWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2tqYXIuaApAQCAtMCwwICsx
LDYyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEdQTC0z
LjAtb25seSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEwKKy8vIFNQRFgtRmlsZUNvcHly
aWdodFRleHQ6IDIwMjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5jb20+CisKKyNpZm5k
ZWYgS0pBUl9ICisjZGVmaW5lIEtKQVJfSAorCisjaW5jbHVkZSA8UUxhdGluMVN0cmluZ1ZpZXc+
CisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KKworbmFtZXNwYWNl
IEtqYXIKK3sKKworaW5saW5lIGNvbnN0ZXhwciBRTGF0aW4xU3RyaW5nVmlldyBBcHBJZCgib3Jn
LmtkZS5ramFyIik7CitpbmxpbmUgY29uc3RleHByIFFMYXRpbjFTdHJpbmdWaWV3IEpka0JpbkRp
cigiL2FwcC9qZGsvYmluIik7CitpbmxpbmUgY29uc3RleHByIFFMYXRpbjFTdHJpbmdWaWV3IEph
dmFGeERpcigiL2FwcC9zaGFyZS9qYXZhZngiKTsKKworLyoqIEFic29sdXRlIHBhdGggb2YgYSB0
b29sIGluIHRoZSBidW5kbGVkIEpESy4gKi8KK1FTdHJpbmcgamRrVG9vbChRU3RyaW5nVmlldyBu
YW1lKTsKKworLyoqCisgKiBBYnNvbHV0ZSBwYXRoIG9mIHRoaXMgZXhlY3V0YWJsZS4KKyAqLwor
UVN0cmluZyBzZWxmUGF0aCgpOworCisvKioKKyAqIH4vLmxvY2FsL3NoYXJlL2tqYXIvbW9kdWxl
cworICoKKyAqIERlbGliZXJhdGVseSAqbm90KiBRU3RhbmRhcmRQYXRoczo6QXBwRGF0YUxvY2F0
aW9uOiB1bmRlciBGbGF0cGFrIFhER19EQVRBX0hPTUUKKyAqIGlzIHJlZGlyZWN0ZWQgdG8gfi8u
dmFyL2FwcC9vcmcua2RlLmtqYXIvZGF0YS4KKyAqLworUVN0cmluZyB1c2VyTW9kdWxlc0Rpcigp
OworCisvKiogQ3JlYXRlcyB1c2VyTW9kdWxlc0RpcigpIGlmIGl0IGRvZXMgbm90IGV4aXN0IHll
dC4gKi8KK2Jvb2wgZW5zdXJlVXNlck1vZHVsZXNEaXIoKTsKKworLyoqIH4vLmxvY2FsL2Jpbiwg
aW5zaWRlIC0tZmlsZXN5c3RlbT1ob21lLCB3cml0YWJsZSBkaXJlY3RseSBmcm9tIHRoZSBzYW5k
Ym94LiAqLworUVN0cmluZyB3cmFwcGVyRGlyKCk7CisKKy8qKiBFeGVjdXRhYmxlIG5hbWVzIGZv
dW5kIGluIC9hcHAvamRrL2JpbiAqLworUVN0cmluZ0xpc3QgamRrVG9vbHMoKTsKKworLyoqIFRv
b2xzIHRoYXQgdW5kZXJzdGFuZCAtLW1vZHVsZS1wYXRoLiAqLworYm9vbCBpc01vZHVsZVBhdGhU
b29sKFFTdHJpbmdWaWV3IG5hbWUpOworCisvKioKKyAqIFN1YnNldCBvZiBpc01vZHVsZVBhdGhU
b29sKCkgdGhhdCBtYXkgYWxzbyBnZXQgLS1hZGQtbW9kdWxlcyBBTEwtTU9EVUxFLVBBVEguCisg
KgorICogamxpbmsgYW5kIGpwYWNrYWdlIGFyZSBleGNsdWRlZCBmcm9tIGJvdGg6IHdpZGVuaW5n
IHRoZWlyIG1vZHVsZSBncmFwaCBjaGFuZ2VzCisgKiB0aGUgaW1hZ2UgdGhleSBwcm9kdWNlLgor
ICovCitib29sIHRha2VzQWxsTW9kdWxlUGF0aChRU3RyaW5nVmlldyBuYW1lKTsKKworLyoqIDxq
YXZhZng+Ojx1c2VyIG1vZHVsZXM+LCBhcyBhIHNpbmdsZSAtLW1vZHVsZS1wYXRoIHZhbHVlLiAq
LworUVN0cmluZyBtb2R1bGVQYXRoKCk7CisKKy8qKiAtLW1vZHVsZS1wYXRoIDxqYXZhZng+Ojx1
c2VyIG1vZHVsZXM+IC0tYWRkLW1vZHVsZXMgQUxMLU1PRFVMRS1QQVRIICovCitRU3RyaW5nTGlz
dCBtb2R1bGVBcmdzKCk7CisKK30gLy8gbmFtZXNwYWNlIEtqYXIKKworI2VuZGlmIC8vIEtKQVJf
SApkaWZmIC0tZ2l0IGEvc3JjL2tqYXJhcHAuY3BwIGIvc3JjL2tqYXJhcHAuY3BwCmluZGV4IDYy
ZDg5ZmIuLmUxZjhmN2YgMTAwNjQ0Ci0tLSBhL3NyYy9ramFyYXBwLmNwcAorKysgYi9zcmMva2ph
cmFwcC5jcHAKQEAgLTMsMTgyICszLDE1NCBAQAogCiAjaW5jbHVkZSAia2phcmFwcC5oIgogCisj
aW5jbHVkZSAia2phci5oIgorCisjaW5jbHVkZSA8S0xvY2FsaXplZFN0cmluZz4KKwogI2luY2x1
ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlc2t0b3BTZXJ2aWNlcz4KICNpbmNs
dWRlIDxRRGlyPgogI2luY2x1ZGUgPFFGaWxlPgogI2luY2x1ZGUgPFFGaWxlSW5mbz4KICNpbmNs
dWRlIDxRUHJvY2Vzcz4KLSNpbmNsdWRlIDxRVGhyZWFkPgogI2luY2x1ZGUgPFFVcmw+CiAKLXN0
YXRpYyBjb25zdCBRU3RyaW5nIEFQUF9JRCA9IFFTdHJpbmdMaXRlcmFsKCJvcmcua2RlLmtqYXIi
KTsKK3VzaW5nIG5hbWVzcGFjZSBRdDo6TGl0ZXJhbHM6OlN0cmluZ0xpdGVyYWxzOwogCi1RU3Ry
aW5nIEtqYXJBcHA6OmRlZmF1bHRNb2R1bGVzRGlyKCkKK25hbWVzcGFjZQogewotICAgIHJldHVy
biBRRGlyOjpob21lUGF0aCgpICsgUVN0cmluZ0xpdGVyYWwoIi8ubG9jYWwvc2hhcmUva2phci9t
b2R1bGVzIik7Ci19CiAKLVFTdHJpbmdMaXN0IEtqYXJBcHA6OmJ1aWxkSnZtQXJncyhjb25zdCBR
U3RyaW5nICZqYXJQYXRoKSBjb25zdAorY29uc3RleHByIFFCeXRlQXJyYXlWaWV3IE1hcmtlcigi
Z2VuZXJhdGVkIGJ5IGtqYXIiKTsKKworYm9vbCBpc091cldyYXBwZXIoY29uc3QgUVN0cmluZyAm
cGF0aCkKIHsKLSAgICBjb25zdCBRRGlyIHNoYXJlRGlyKFFTdHJpbmdMaXRlcmFsKCIvYXBwL3No
YXJlIikpOwotICAgIFFTdHJpbmdMaXN0IG1vZHVsZVBhdGhzOwotICAgIGZvciAoY29uc3QgUUZp
bGVJbmZvICZmaSA6IHNoYXJlRGlyLmVudHJ5SW5mb0xpc3QoUURpcjo6RGlycyB8IFFEaXI6Ok5v
RG90QW5kRG90RG90KSkgewotICAgICAgICBtb2R1bGVQYXRocyA8PCBmaS5hYnNvbHV0ZUZpbGVQ
YXRoKCk7Ci0gICAgfQotICAgIGNvbnN0IFFTdHJpbmcgbW9kdWxlc0RpciA9IGRlZmF1bHRNb2R1
bGVzRGlyKCk7Ci0gICAgUURpcigpLm1rcGF0aChtb2R1bGVzRGlyKTsKLSAgICBtb2R1bGVQYXRo
cyA8PCBtb2R1bGVzRGlyOwotCi0gICAgcmV0dXJuIHsKLSAgICAgICAgUVN0cmluZ0xpdGVyYWwo
Ii0tbW9kdWxlLXBhdGgiKSwgbW9kdWxlUGF0aHMuam9pbihRTGF0aW4xQ2hhcignOicpKSwKLSAg
ICAgICAgUVN0cmluZ0xpdGVyYWwoIi0tYWRkLW1vZHVsZXMiKSwgUVN0cmluZ0xpdGVyYWwoIkFM
TC1NT0RVTEUtUEFUSCIpLAotICAgICAgICBRU3RyaW5nTGl0ZXJhbCgiLWphciIpLCBqYXJQYXRo
Ci0gICAgfTsKKyAgICBRRmlsZSBmKHBhdGgpOworICAgIHJldHVybiBmLm9wZW4oUUlPRGV2aWNl
OjpSZWFkT25seSkgJiYgZi5yZWFkKDI1NikuY29udGFpbnMoTWFya2VyKTsKIH0KIAotS2phckFw
cDo6S2phckFwcChRT2JqZWN0ICpwYXJlbnQpCi06IFFPYmplY3QocGFyZW50KQotLCBtX3Rhcmdl
dERpcihRRGlyOjpob21lUGF0aCgpICsgUVN0cmluZ0xpdGVyYWwoIi8ubG9jYWwvYmluIikpCi17
fQorfSAvLyBuYW1lc3BhY2UKIAotdm9pZCBLamFyQXBwOjpzZXRCdXN5KGJvb2wgYnVzeSkKK0tq
YXJBcHA6OktqYXJBcHAoUU9iamVjdCAqcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCiB7
Ci0gICAgaWYgKG1fYnVzeSA9PSBidXN5KSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
bV9idXN5ID0gYnVzeTsKLSAgICBRX0VNSVQgYnVzeUNoYW5nZWQoKTsKIH0KIAogUVN0cmluZ0xp
c3QgS2phckFwcDo6YXZhaWxhYmxlVG9vbHMoKSBjb25zdAogewotICAgIHJldHVybiBmaW5kQXZh
aWxhYmxlVG9vbHMoKTsKKyAgICByZXR1cm4gS2phcjo6amRrVG9vbHMoKTsKIH0KIAotUVN0cmlu
Z0xpc3QgS2phckFwcDo6ZmluZEF2YWlsYWJsZVRvb2xzKCkgY29uc3QKK1FTdHJpbmcgS2phckFw
cDo6cnVuSmFyKGNvbnN0IFFVcmwgJnVybCkKIHsKLSAgICBRU3RyaW5nTGlzdCB0b29sczsKLSAg
ICBjb25zdCBRU3RyaW5nTGlzdCBzZWFyY2hQYXRocyA9IHsKLSAgICAgICAgUVN0cmluZ0xpdGVy
YWwoIi9hcHAvYmluIiksCi0gICAgICAgIFFTdHJpbmdMaXRlcmFsKCIvYXBwL2pkay9iaW4iKQot
ICAgIH07Ci0gICAgZm9yIChjb25zdCBRU3RyaW5nICZwYXRoIDogc2VhcmNoUGF0aHMpIHsKLSAg
ICAgICAgUURpciBkaXIocGF0aCk7Ci0gICAgICAgIGlmICghZGlyLmV4aXN0cygpKSB7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGNvbnN0IFFGaWxlSW5m
byAmZmkgOiBkaXIuZW50cnlJbmZvTGlzdChRRGlyOjpGaWxlcyB8IFFEaXI6OkV4ZWN1dGFibGUp
KSB7Ci0gICAgICAgICAgICBpZiAoIWZpLmlzRXhlY3V0YWJsZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdCBRU3RyaW5nIG5h
bWUgPSBmaS5maWxlTmFtZSgpOwotICAgICAgICAgICAgaWYgKCF0b29scy5jb250YWlucyhuYW1l
KSkgewotICAgICAgICAgICAgICAgIHRvb2xzLmFwcGVuZChuYW1lKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQorICAgIGNvbnN0IFFTdHJpbmcgcGF0aCA9IHVybC5pc0xvY2FsRmlsZSgpID8g
dXJsLnRvTG9jYWxGaWxlKCkgOiB1cmwudG9TdHJpbmcoKTsKKworICAgIGlmICghUUZpbGU6OmV4
aXN0cyhwYXRoKSkgeworICAgICAgICByZXR1cm4gaTE4bigiJTEgZG9lcyBub3QgZXhpc3Qgb3Ig
Y2Fubm90IGJlIGFjY2Vzc2VkLiIsIHBhdGgpOworICAgIH0KKworICAgIC8vIFJlLWV4ZWMgb3Vy
c2VsdmVzIGluIHdhdGNoZXIgbW9kZQorICAgIGNvbnN0IFFTdHJpbmdMaXN0IGFyZ3N7dSItLXdh
dGNoIl9zLCBwYXRofTsKKyAgICBpZiAoIVFQcm9jZXNzOjpzdGFydERldGFjaGVkKEtqYXI6OnNl
bGZQYXRoKCksIGFyZ3MpKSB7CisgICAgICAgIHJldHVybiBpMThuKCJGYWlsZWQgdG8gbGF1bmNo
ICUxLiIsIHBhdGgpOwogICAgIH0KLSAgICB0b29scy5zb3J0KCk7Ci0gICAgcmV0dXJuIHRvb2xz
OworICAgIHJldHVybiB7fTsKIH0KIAotYm9vbCBLamFyQXBwOjpydW5KYXJGaWxlKGNvbnN0IFFT
dHJpbmcgJmZpbGUpCit2b2lkIEtqYXJBcHA6Om9wZW5Nb2R1bGVzRm9sZGVyKCkKIHsKLSAgICBj
b25zdCBRU3RyaW5nIHdhdGNoZXJQYXRoID0KLSAgICBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNh
dGlvbkRpclBhdGgoKSArIFFTdHJpbmdMaXRlcmFsKCIva2phcl93YXRjaGVyIik7CisgICAgS2ph
cjo6ZW5zdXJlVXNlck1vZHVsZXNEaXIoKTsKKyAgICBRRGVza3RvcFNlcnZpY2VzOjpvcGVuVXJs
KFFVcmw6OmZyb21Mb2NhbEZpbGUoS2phcjo6dXNlck1vZHVsZXNEaXIoKSkpOworfQogCi0gICAg
aWYgKCFRRmlsZTo6ZXhpc3RzKHdhdGNoZXJQYXRoKSkgewotICAgICAgICBRX0VNSVQgZXJyb3JP
Y2N1cnJlZChpMThuKCJXYXRjaGVyIGJpbmFyeSBub3QgZm91bmQgYXQgJTEiLCB3YXRjaGVyUGF0
aCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CitRVmFyaWFudE1hcCBLamFyQXBwOjpnZW5lcmF0
ZVdyYXBwZXJzKCkKK3sKKyAgICBjb25zdCBRU3RyaW5nIGRpciA9IEtqYXI6OndyYXBwZXJEaXIo
KTsKKyAgICBpZiAoIVFEaXIoKS5ta3BhdGgoZGlyKSkgeworICAgICAgICByZXR1cm4ge3t1Im9r
Il9zLCBmYWxzZX0sIHt1Im1lc3NhZ2UiX3MsIGkxOG4oIkNvdWxkIG5vdCBjcmVhdGUgJTEuIiwg
ZGlyKX19OwogICAgIH0KIAotICAgIFFTdHJpbmdMaXN0IHdhdGNoZXJBcmdzOwotICAgIHdhdGNo
ZXJBcmdzIDw8IGZpbGU7Ci0gICAgd2F0Y2hlckFyZ3MgPDwgYnVpbGRKdm1BcmdzKGZpbGUpOwor
ICAgIGludCB3cml0dGVuID0gMDsKKyAgICBpbnQgc2tpcHBlZCA9IDA7CisKKyAgICBmb3IgKGNv
bnN0IFFTdHJpbmcgJnRvb2wgOiBLamFyOjpqZGtUb29scygpKSB7CisgICAgICAgIGNvbnN0IFFT
dHJpbmcgcGF0aCA9IGRpciArIHUnLycgKyB0b29sOworCisgICAgICAgIC8vIE5ldmVyIGNsb2Ji
ZXIgc29tZXRoaW5nIHdlIGRpZCBub3Qgd3JpdGUuCisgICAgICAgIGlmIChRRmlsZTo6ZXhpc3Rz
KHBhdGgpICYmICFpc091cldyYXBwZXIocGF0aCkpIHsKKyAgICAgICAgICAgICsrc2tpcHBlZDsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKLSAgICBpZiAoIVFQcm9jZXNzOjpz
dGFydERldGFjaGVkKHdhdGNoZXJQYXRoLCB3YXRjaGVyQXJncykpIHsKLSAgICAgICAgUV9FTUlU
IGVycm9yT2NjdXJyZWQoaTE4bigiRmFpbGVkIHRvIGxhdW5jaCB3YXRjaGVyIGZvciAlMSIsIGZp
bGUpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBRRmlsZSBmKHBhdGgpOworICAg
ICAgICBpZiAoIWYub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSB8IFFJT0RldmljZTo6VHJ1bmNh
dGUpKSB7CisgICAgICAgICAgICArK3NraXBwZWQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgc2NyaXB0ID0gUVN0cmluZ0xpdGVy
YWwoIiMhL3Vzci9iaW4vZW52IHNoXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiMgJTEgKCUyKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjIGZsYXRwYWsgcnVuICUzICUyIFwiJEBcIlxu
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFyZyhRU3RyaW5nOjpm
cm9tTGF0aW4xKE1hcmtlciksIHRvb2wsIFFTdHJpbmc6OmZyb21MYXRpbjEoS2phcjo6QXBwSWQp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9VdGY4KCk7CisKKyAg
ICAgICAgLy8gQSBzaG9ydCB3cml0ZSBsZWF2ZXMgYSB0cnVuY2F0ZWQgc2NyaXB0IHRoYXQgc3Rp
bGwgY2FycmllcyB0aGUgbWFya2VyLAorICAgICAgICAvLyBzbyB0aGUgbmV4dCBydW4gd291bGQg
aGFwcGlseSBvdmVyd3JpdGUgaXQgYW5kIHJlcG9ydCBzdWNjZXNzIGFnYWluLgorICAgICAgICBp
ZiAoZi53cml0ZShzY3JpcHQpICE9IHNjcmlwdC5zaXplKCkgfHwgIWYuZmx1c2goKSkgeworICAg
ICAgICAgICAgZi5jbG9zZSgpOworICAgICAgICAgICAgZi5yZW1vdmUoKTsKKyAgICAgICAgICAg
ICsrc2tpcHBlZDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGYu
Y2xvc2UoKTsKKworICAgICAgICBjb25zdGV4cHIgUUZpbGVEZXZpY2U6OlBlcm1pc3Npb25zIE1v
ZGUgPSBRRmlsZURldmljZTo6UmVhZE93bmVyIHwgUUZpbGVEZXZpY2U6OldyaXRlT3duZXIgfCBR
RmlsZURldmljZTo6RXhlT3duZXIgfCBRRmlsZURldmljZTo6UmVhZEdyb3VwCisgICAgICAgICAg
ICB8IFFGaWxlRGV2aWNlOjpFeGVHcm91cCB8IFFGaWxlRGV2aWNlOjpSZWFkT3RoZXIgfCBRRmls
ZURldmljZTo6RXhlT3RoZXI7CisgICAgICAgIGlmICghZi5zZXRQZXJtaXNzaW9ucyhNb2RlKSkg
eworICAgICAgICAgICAgZi5yZW1vdmUoKTsKKyAgICAgICAgICAgICsrc2tpcHBlZDsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgICsrd3JpdHRlbjsKICAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci19CiAKLXZvaWQgS2phckFwcDo6b3Blbk1vZHVsZXNGb2xkZXIoKQot
ewotICAgIFFEaXIoKS5ta3BhdGgoZGVmYXVsdE1vZHVsZXNEaXIoKSk7Ci0gICAgUURlc2t0b3BT
ZXJ2aWNlczo6b3BlblVybChRVXJsOjpmcm9tTG9jYWxGaWxlKGRlZmF1bHRNb2R1bGVzRGlyKCkp
KTsKKyAgICBRU3RyaW5nIG1lc3NhZ2UgPSBpMThucCgiR2VuZXJhdGVkICUxIHdyYXBwZXIgaW4g
JTIuIiwgIkdlbmVyYXRlZCAlMSB3cmFwcGVycyBpbiAlMi4iLCB3cml0dGVuLCBkaXIpOworICAg
IGlmIChza2lwcGVkID4gMCkgeworICAgICAgICBtZXNzYWdlICs9IHUnICc7CisgICAgICAgIG1l
c3NhZ2UgKz0gaTE4bnAoIlNraXBwZWQgJTEgZXhpc3Rpbmcgbm9uLWtqYXIgZmlsZS4iLCAiU2tp
cHBlZCAlMSBleGlzdGluZyBub24ta2phciBmaWxlcy4iLCBza2lwcGVkKTsKKyAgICB9CisKKyAg
ICByZXR1cm4ge3t1Im9rIl9zLCB3cml0dGVuID4gMH0sIHt1Im1lc3NhZ2UiX3MsIG1lc3NhZ2V9
fTsKIH0KIAotdm9pZCBLamFyQXBwOjpnZW5lcmF0ZVdyYXBwZXJzKCkKK1FWYXJpYW50TWFwIEtq
YXJBcHA6OnJlbW92ZVdyYXBwZXJzKCkKIHsKLSAgICBpZiAobV9idXN5KSB7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgc2V0QnVzeSh0cnVlKTsKLQotICAgIFFUaHJlYWQgKnRocmVhZCA9
IFFUaHJlYWQ6OmNyZWF0ZShbdGhpc10oKSB7Ci0gICAgICAgIGNvbnN0IFFTdHJpbmdMaXN0IHRv
b2xzID0gZmluZEF2YWlsYWJsZVRvb2xzKCk7Ci0gICAgICAgIGludCBnZW5lcmF0ZWQgPSAwOwot
ICAgICAgICBpbnQgc2tpcHBlZCA9IDA7Ci0KLSAgICAgICAgUVByb2Nlc3MgbWtkaXJQcm9jOwot
ICAgICAgICBta2RpclByb2Muc3RhcnQoUVN0cmluZ0xpdGVyYWwoImZsYXRwYWstc3Bhd24iKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsgUVN0cmluZ0xpdGVyYWwoIi0taG9zdCIpLCBRU3Ry
aW5nTGl0ZXJhbCgibWtkaXIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5n
TGl0ZXJhbCgiLXAiKSwgbV90YXJnZXREaXIgfSk7Ci0gICAgICAgIG1rZGlyUHJvYy53YWl0Rm9y
RmluaXNoZWQoKTsKLQotICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJnRvb2wgOiB0b29scykg
ewotICAgICAgICAgICAgY29uc3QgUVN0cmluZyB3cmFwcGVyUGF0aCA9IG1fdGFyZ2V0RGlyICsg
UUxhdGluMUNoYXIoJy8nKSArIHRvb2w7Ci0KLSAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgY2hl
Y2tTY3JpcHQgPSBRU3RyaW5nTGl0ZXJhbCgKLSAgICAgICAgICAgICAgICAiaWYgWyAtZiAnJTEn
IF0gJiYgISBncmVwIC1xICdnZW5lcmF0ZWQgYnkga2phcicgJyUxJyAyPi9kZXYvbnVsbDsgIgot
ICAgICAgICAgICAgICAgICJ0aGVuIGVjaG8gJ3NraXAnOyBlbHNlIGVjaG8gJ29rJzsgZmkiCi0g
ICAgICAgICAgICApLmFyZyh3cmFwcGVyUGF0aCk7Ci0KLSAgICAgICAgICAgIFFQcm9jZXNzIGNo
ZWNrUHJvY2VzczsKLSAgICAgICAgICAgIGNoZWNrUHJvY2Vzcy5zdGFydChRU3RyaW5nTGl0ZXJh
bCgiZmxhdHBhay1zcGF3biIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgUVN0
cmluZ0xpdGVyYWwoIi0taG9zdCIpLCBRU3RyaW5nTGl0ZXJhbCgic2giKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIi1jIiksIGNoZWNrU2NyaXB0
IH0pOwotICAgICAgICAgICAgY2hlY2tQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgpOwotCi0gICAg
ICAgICAgICBpZiAoUVN0cmluZzo6ZnJvbUxvY2FsOEJpdChjaGVja1Byb2Nlc3MucmVhZEFsbFN0
YW5kYXJkT3V0cHV0KCkpLnRyaW1tZWQoKQotICAgICAgICAgICAgICAgID09IFFMYXRpbjFTdHJp
bmcoInNraXAiKSkgewotICAgICAgICAgICAgICAgIHNraXBwZWQrKzsKKyAgICBjb25zdCBRU3Ry
aW5nIGRpciA9IEtqYXI6OndyYXBwZXJEaXIoKTsKKworICAgIGludCByZW1vdmVkID0gMDsKKyAg
ICBpbnQgZmFpbGVkID0gMDsKKworICAgIGNvbnN0IFFGaWxlSW5mb0xpc3QgZW50cmllcyA9IFFE
aXIoZGlyKS5lbnRyeUluZm9MaXN0KFFEaXI6OkZpbGVzLCBRRGlyOjpOYW1lKTsKKyAgICBmb3Ig
KGNvbnN0IFFGaWxlSW5mbyAmZmkgOiBlbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IFFTdHJpbmcg
cGF0aCA9IGZpLmFic29sdXRlRmlsZVBhdGgoKTsKKyAgICAgICAgaWYgKCFpc091cldyYXBwZXIo
cGF0aCkpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgY3JlYXRlU2NyaXB0ID0gUVN0cmluZ0xpdGVyYWwo
Ci0gICAgICAgICAgICAgICAgICAgICJjYXQgPiAnJTEnIDw8J0VPRidcbiIKLSAgICAgICAgICAg
ICAgICAgICAgIiMhL3Vzci9iaW4vZW52IHNoXG4iCi0gICAgICAgICAgICAgICAgICAgICIjIGdl
bmVyYXRlZCBieSBramFyIGZvciAlMlxuIgotICAgICAgICAgICAgICAgICAgICAiZXhlYyBmbGF0
cGFrIHJ1biAtLWNvbW1hbmQ9JTMgJTIgXCIkQFwiXG4iCi0gICAgICAgICAgICAgICAgICAgICJF
T0ZcbiIKLSAgICAgICAgICAgICAgICAgICAgImNobW9kICt4ICclMSciCi0gICAgICAgICAgICAg
ICAgKS5hcmcod3JhcHBlclBhdGgsIEFQUF9JRCwgdG9vbCk7Ci0KLSAgICAgICAgICAgICAgICBR
UHJvY2VzcyBjcmVhdGVQcm9jZXNzOwotICAgICAgICAgICAgICAgIGNyZWF0ZVByb2Nlc3Muc3Rh
cnQoUVN0cmluZ0xpdGVyYWwoImZsYXRwYWstc3Bhd24iKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgUVN0cmluZ0xpdGVyYWwoIi0taG9zdCIpLCBRU3RyaW5nTGl0ZXJh
bCgic2giKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5n
TGl0ZXJhbCgiLWMiKSwgY3JlYXRlU2NyaXB0IH0pOwotICAgICAgICAgICAgICAgIGNyZWF0ZVBy
b2Nlc3Mud2FpdEZvckZpbmlzaGVkKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY3JlYXRlUHJv
Y2Vzcy5leGl0Q29kZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkKys7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUV9FTUlUIGVy
cm9yT2NjdXJyZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICBpMThuKCJGYWlsZWQgdG8gY3Jl
YXRlIHdyYXBwZXIgZm9yICUxOiAlMiIsIHRvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoY3JlYXRlUHJvY2Vzcy5yZWFkQWxsU3RhbmRhcmRF
cnJvcigpKSkpOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoUUZp
bGU6OnJlbW92ZShwYXRoKSkgeworICAgICAgICAgICAgKytyZW1vdmVkOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgKytmYWlsZWQ7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAg
UV9FTUlUIG9wZXJhdGlvbkNvbXBsZXRlZCgKLSAgICAgICAgICAgIGkxOG4oIkdlbmVyYXRlZCAl
MSB3cmFwcGVycyBpbiAlMiAoc2tpcHBlZCAlMyBleGlzdGluZyBub24ta2phciBiaW5hcmllcyki
LAotICAgICAgICAgICAgICAgICBRU3RyaW5nOjpudW1iZXIoZ2VuZXJhdGVkKSwgbV90YXJnZXRE
aXIsIFFTdHJpbmc6Om51bWJlcihza2lwcGVkKSkpOworICAgIGlmIChyZW1vdmVkID09IDAgJiYg
ZmFpbGVkID09IDApIHsKKyAgICAgICAgcmV0dXJuIHt7dSJvayJfcywgdHJ1ZX0sIHt1Im1lc3Nh
Z2UiX3MsIGkxOG4oIk5vIGtqYXIgd3JhcHBlcnMgZm91bmQgaW4gJTEuIiwgZGlyKX19OworICAg
IH0KIAotICAgICAgICBzZXRCdXN5KGZhbHNlKTsKLSAgICB9KTsKKyAgICBRU3RyaW5nIG1lc3Nh
Z2UgPSBpMThucCgiUmVtb3ZlZCAlMSB3cmFwcGVyIGZyb20gJTIuIiwgIlJlbW92ZWQgJTEgd3Jh
cHBlcnMgZnJvbSAlMi4iLCByZW1vdmVkLCBkaXIpOworICAgIGlmIChmYWlsZWQgPiAwKSB7Cisg
ICAgICAgIG1lc3NhZ2UgKz0gdScgJzsKKyAgICAgICAgbWVzc2FnZSArPSBpMThucCgiQ291bGQg
bm90IHJlbW92ZSAlMSBmaWxlLiIsICJDb3VsZCBub3QgcmVtb3ZlICUxIGZpbGVzLiIsIGZhaWxl
ZCk7CisgICAgfQogCi0gICAgdGhyZWFkLT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgY29ubmVjdCh0
aHJlYWQsICZRVGhyZWFkOjpmaW5pc2hlZCwgdGhyZWFkLCAmUVRocmVhZDo6ZGVsZXRlTGF0ZXIp
OwotICAgIHRocmVhZC0+c3RhcnQoKTsKKyAgICByZXR1cm4ge3t1Im9rIl9zLCBmYWlsZWQgPT0g
MH0sIHt1Im1lc3NhZ2UiX3MsIG1lc3NhZ2V9fTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9ramFyYXBw
LmggYi9zcmMva2phcmFwcC5oCmluZGV4IGI2M2VjY2MuLjhiNTY4YTkgMTAwNjQ0Ci0tLSBhL3Ny
Yy9ramFyYXBwLmgKKysrIGIvc3JjL2tqYXJhcHAuaApAQCAtNSw0MCArNSwzOCBAQAogI2RlZmlu
ZSBLSkFSQVBQX0gKIAogI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVFtbEVuZ2luZT4K
ICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KLSNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgorI2lu
Y2x1ZGUgPFFWYXJpYW50TWFwPgogCitjbGFzcyBRVXJsOworCisvKioKKyAqIEJhY2tlbmQgZXhw
b3NlZCB0byBRTUwgYXMgYSBzaW5nbGV0b24uIEV2ZXJ5IG9wZXJhdGlvbiBpcyBzeW5jaHJvbm91
cyBiZWNhdXNlIEkgc3VjayBhdCBhc3luYyBDKysuCisgKi8KIGNsYXNzIEtqYXJBcHAgOiBwdWJs
aWMgUU9iamVjdAogewogICAgIFFfT0JKRUNUCi0gICAgUV9QUk9QRVJUWShRU3RyaW5nTGlzdCBh
dmFpbGFibGVUb29scyBSRUFEIGF2YWlsYWJsZVRvb2xzIE5PVElGWSB0b29sc0NoYW5nZWQpCi0g
ICAgUV9QUk9QRVJUWShib29sIGJ1c3kgUkVBRCBidXN5IE5PVElGWSBidXN5Q2hhbmdlZCkKKyAg
ICBRTUxfRUxFTUVOVAorICAgIFFNTF9TSU5HTEVUT04KKworICAgIFFfUFJPUEVSVFkoUVN0cmlu
Z0xpc3QgYXZhaWxhYmxlVG9vbHMgUkVBRCBhdmFpbGFibGVUb29scyBDT05TVEFOVCkKIAogcHVi
bGljOgogICAgIGV4cGxpY2l0IEtqYXJBcHAoUU9iamVjdCAqcGFyZW50ID0gbnVsbHB0cik7CiAK
LSAgICBRX0lOVk9LQUJMRSBib29sIHJ1bkphckZpbGUoY29uc3QgUVN0cmluZyAmZmlsZSk7Ci0g
ICAgUV9JTlZPS0FCTEUgdm9pZCBnZW5lcmF0ZVdyYXBwZXJzKCk7Ci0gICAgUV9JTlZPS0FCTEUg
dm9pZCBvcGVuTW9kdWxlc0ZvbGRlcigpOwotCiAgICAgUVN0cmluZ0xpc3QgYXZhaWxhYmxlVG9v
bHMoKSBjb25zdDsKLSAgICBib29sIGJ1c3koKSBjb25zdCB7IHJldHVybiBtX2J1c3k7IH0KIAot
ICAgIHN0YXRpYyBRU3RyaW5nIGRlZmF1bHRNb2R1bGVzRGlyKCk7CisgICAgLyoqIExhdW5jaGVz
IHRoZSBKQVIgaW4gYSBkZXRhY2hlZCB3YXRjaGVyIHByb2Nlc3MuIFJldHVybnMgYW4gZXJyb3Ig
bWVzc2FnZSwgb3IgYW4gZW1wdHkgc3RyaW5nIG9uIHN1Y2Nlc3MuICovCisgICAgUV9JTlZPS0FC
TEUgUVN0cmluZyBydW5KYXIoY29uc3QgUVVybCAmdXJsKTsKIAotUV9TSUdOQUxTOgotICAgIHZv
aWQgdG9vbHNDaGFuZ2VkKCk7Ci0gICAgdm9pZCBidXN5Q2hhbmdlZCgpOwotICAgIHZvaWQgb3Bl
cmF0aW9uQ29tcGxldGVkKGNvbnN0IFFTdHJpbmcgJm1lc3NhZ2UpOwotICAgIHZvaWQgZXJyb3JP
Y2N1cnJlZChjb25zdCBRU3RyaW5nICZlcnJvcik7CisgICAgLyoqIFJldHVybnMgeyJvayI6IGJv
b2wsICJtZXNzYWdlIjogUVN0cmluZ30uICovCisgICAgUV9JTlZPS0FCTEUgUVZhcmlhbnRNYXAg
Z2VuZXJhdGVXcmFwcGVycygpOwogCi1wcml2YXRlOgotICAgIFFTdHJpbmdMaXN0IGZpbmRBdmFp
bGFibGVUb29scygpIGNvbnN0OwotICAgIHZvaWQgc2V0QnVzeShib29sIGJ1c3kpOwotICAgIFFT
dHJpbmdMaXN0IGJ1aWxkSnZtQXJncyhjb25zdCBRU3RyaW5nICZqYXJQYXRoKSBjb25zdDsKKyAg
ICAvKiogRGVsZXRlcyB0aGUgd3JhcHBlcnMgd2Ugd3JvdGUsIGxlYXZpbmcgZXZlcnl0aGluZyBl
bHNlIGFsb25lLiBTYW1lIHJldHVybiBzaGFwZS4gKi8KKyAgICBRX0lOVk9LQUJMRSBRVmFyaWFu
dE1hcCByZW1vdmVXcmFwcGVycygpOwogCi0gICAgUVN0cmluZyBtX3RhcmdldERpcjsKLSAgICBi
b29sIG1fYnVzeSA9IGZhbHNlOworICAgIFFfSU5WT0tBQkxFIHZvaWQgb3Blbk1vZHVsZXNGb2xk
ZXIoKTsKIH07CiAKLSNlbmRpZgorI2VuZGlmIC8vIEtKQVJBUFBfSApkaWZmIC0tZ2l0IGEvc3Jj
L21haW4uY3BwIGIvc3JjL21haW4uY3BwCmluZGV4IDYyMDg3NTkuLjhiYWY4YWMgMTAwNjQ0Ci0t
LSBhL3NyYy9tYWluLmNwcAorKysgYi9zcmMvbWFpbi5jcHAKQEAgLTEsMTcwICsxLDQxOCBAQAog
Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBHUEwtMy4wLW9ubHkg
T1IgTGljZW5zZVJlZi1LREUtQWNjZXB0ZWQtR1BMCiAvLyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0
OiAyMDI2IEhhZGkgQ2hva3IgPGhhZGljaG9rckBpY2xvdWQuY29tPgogCi0jaW5jbHVkZSA8UUd1
aUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFRbWxBcHBsaWNhdGlvbkVuZ2luZT4KLSNpbmNsdWRl
IDxRUW1sQ29udGV4dD4KKyNpbmNsdWRlICJramFyLXZlcnNpb24uaCIKKyNpbmNsdWRlICJramFy
LmgiCisjaW5jbHVkZSAia2phcmFwcC5oIgorCisjaW5jbHVkZSA8S0Fib3V0RGF0YT4KKyNpbmNs
dWRlIDxLTG9jYWxpemVkUW1sQ29udGV4dD4KICNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgot
I2luY2x1ZGUgPEtMb2NhbGl6ZWRDb250ZXh0PgorCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlv
bj4KICNpbmNsdWRlIDxRRmlsZT4KLSNpbmNsdWRlIDxRRGlyPgorI2luY2x1ZGUgPFFGaWxlSW5m
bz4KKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UVByb2Nlc3M+CisjaW5j
bHVkZSA8UVFtbEFwcGxpY2F0aW9uRW5naW5lPgorI2luY2x1ZGUgPFFRdWlja1N0eWxlPgogI2lu
Y2x1ZGUgPFFVcmw+Ci0jaW5jbHVkZSAia2phcmFwcC5oIgogCi1zdGF0aWMgUVN0cmluZyB0b0xv
Y2FsUGF0aChjb25zdCBRU3RyaW5nICZpbnB1dCkKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwor
dXNpbmcgbmFtZXNwYWNlIFF0OjpMaXRlcmFsczo6U3RyaW5nTGl0ZXJhbHM7CisKK25hbWVzcGFj
ZQogewotICBpZiAoaW5wdXQuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJmaWxlOi8vIikpKSB7
Ci0gICAgcmV0dXJuIFFVcmwoaW5wdXQpLnRvTG9jYWxGaWxlKCk7Ci0gIH0KLSAgcmV0dXJuIGlu
cHV0OworCitjb25zdGV4cHIgcXNpemV0eXBlIE1heFN0ZGVyclRhaWwgPSA2NCAqIDEwMjQ7CisK
K3ZvaWQgc2V0dXBBcHBsaWNhdGlvbk1ldGFkYXRhKCkKK3sKKyAgICBLQWJvdXREYXRhIGFib3V0
KFFTdHJpbmc6OmZyb21MYXRpbjEoS2phcjo6QXBwSWQpLAorICAgICAgICAgICAgICAgICAgICAg
aTE4bigiSmF2YSBBcmNoaXZlIFJ1bm5lciIpLAorICAgICAgICAgICAgICAgICAgICAgUVN0cmlu
Zzo6ZnJvbUxhdGluMShLSkFSX1ZFUlNJT05fU1RSSU5HKSwKKyAgICAgICAgICAgICAgICAgICAg
IGkxOG4oIlJ1biBKYXZhIGFyY2hpdmVzIHdpdGggYSBidW5kbGVkIE9wZW5KREsiKSwKKyAgICAg
ICAgICAgICAgICAgICAgIEtBYm91dExpY2Vuc2U6OkdQTF9WMiwKKyAgICAgICAgICAgICAgICAg
ICAgIGkxOG4oIkNvcHlyaWdodCAyMDI2IEhhZGkgQ2hva3IiKSk7CisgICAgYWJvdXQuYWRkTGlj
ZW5zZShLQWJvdXRMaWNlbnNlOjpHUExfVjMpOworICAgIGFib3V0LmFkZEF1dGhvcih1IkhhZGkg
Q2hva3IiX3MsIFFTdHJpbmcoKSwgdSJoYWRpY2hva3JAaWNsb3VkLmNvbSJfcyk7CisgICAgYWJv
dXQuc2V0SG9tZXBhZ2UodSJodHRwczovL2ludmVudC5rZGUub3JnL3N5c3RlbS9ramFyIl9zKTsK
KyAgICBhYm91dC5zZXRCdWdBZGRyZXNzKCJodHRwczovL2ludmVudC5rZGUub3JnL3N5c3RlbS9r
amFyLy0vaXNzdWVzIik7CisgICAgYWJvdXQuc2V0RGVza3RvcEZpbGVOYW1lKFFTdHJpbmc6OmZy
b21MYXRpbjEoS2phcjo6QXBwSWQpKTsKKworICAgIEtBYm91dERhdGE6OnNldEFwcGxpY2F0aW9u
RGF0YShhYm91dCk7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2V0T3JnYW5pemF0aW9uRG9tYWlu
KHUia2RlLm9yZyJfcyk7CiB9CiAKLXN0YXRpYyBpbnQgc2hvd0d1aShLamFyQXBwICZramFyQXBw
LCBjb25zdCBRU3RyaW5nICZpbml0aWFsRXJyb3IgPSBRU3RyaW5nKCkpIHsKLSAgUVFtbEFwcGxp
Y2F0aW9uRW5naW5lIGVuZ2luZTsKLSAgZW5naW5lLnJvb3RDb250ZXh0KCktPnNldENvbnRleHRP
YmplY3QobmV3IEtMb2NhbGl6ZWRDb250ZXh0KCZlbmdpbmUpKTsKLSAgZW5naW5lLnJvb3RDb250
ZXh0KCktPnNldENvbnRleHRQcm9wZXJ0eShRU3RyaW5nTGl0ZXJhbCgiYmFja2VuZCIpLCAma2ph
ckFwcCk7Ci0gIGlmICghaW5pdGlhbEVycm9yLmlzRW1wdHkoKSkgewotICAgIGVuZ2luZS5yb290
Q29udGV4dCgpLT5zZXRDb250ZXh0UHJvcGVydHkoUVN0cmluZ0xpdGVyYWwoImluaXRpYWxFcnJv
ciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlh
bEVycm9yKTsKLSAgfQotICBlbmdpbmUubG9hZChRVXJsKFFTdHJpbmdMaXRlcmFsKCJxcmM6L3Ft
bC9tYWluLnFtbCIpKSk7Ci0gIHJldHVybiBxQXBwLT5leGVjKCk7Cit2b2lkIHNldHVwUXVpY2tT
dHlsZSgpCit7CisgICAgaWYgKHFFbnZpcm9ubWVudFZhcmlhYmxlSXNFbXB0eSgiUVRfUVVJQ0tf
Q09OVFJPTFNfU1RZTEUiKSkgeworICAgICAgICBRUXVpY2tTdHlsZTo6c2V0U3R5bGUodSJvcmcu
a2RlLmRlc2t0b3AiX3MpOworICAgIH0KIH0KIAotc3RhdGljIFFTdHJpbmcgYnVpbGRNb2R1bGVQ
YXRoKCkKK3ZvaWQgcHJpbnRVc2FnZShGSUxFICpvdXQpCiB7Ci0gIGNvbnN0IFFEaXIgc2hhcmVE
aXIoUVN0cmluZ0xpdGVyYWwoIi9hcHAvc2hhcmUiKSk7Ci0gIFFTdHJpbmdMaXN0IHBhdGhzOwot
ICBmb3IgKGNvbnN0IFFGaWxlSW5mbyAmZmkgOiBzaGFyZURpci5lbnRyeUluZm9MaXN0KFFEaXI6
OkRpcnMgfCBRRGlyOjpOb0RvdEFuZERvdERvdCkpIHsKLSAgICBwYXRocyA8PCBmaS5hYnNvbHV0
ZUZpbGVQYXRoKCk7Ci0gIH0KLSAgY29uc3QgUVN0cmluZyBtb2R1bGVzRGlyID0gS2phckFwcDo6
ZGVmYXVsdE1vZHVsZXNEaXIoKTsKLSAgUURpcigpLm1rcGF0aChtb2R1bGVzRGlyKTsKLSAgcGF0
aHMgPDwgbW9kdWxlc0RpcjsKLSAgcmV0dXJuIHBhdGhzLmpvaW4oUUxhdGluMUNoYXIoJzonKSk7
CisgICAgZnByaW50ZihvdXQsCisgICAgICAgICAgICAiVXNhZ2U6IGtqYXJhcHAgW29wdGlvbl0g
W2ZpbGUuamFyIFthcmdzLi4uXSB8IHRvb2wgW2FyZ3MuLi5dXVxuIgorICAgICAgICAgICAgIlxu
IgorICAgICAgICAgICAgIiAgLWgsIC0taGVscCAgICAgICAgICAgICAgIFNob3cgdGhpcyBoZWxw
IGFuZCBleGl0XG4iCisgICAgICAgICAgICAiICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgU2hv
dyB0aGUgdmVyc2lvbiBhbmQgZXhpdFxuIgorICAgICAgICAgICAgIiAgLWcsIC0tZ2VuZXJhdGUt
d3JhcHBlcnMgIFdyaXRlIEpESyB3cmFwcGVyIHNjcmlwdHMgdG8gfi8ubG9jYWwvYmluXG4iCisg
ICAgICAgICAgICAiICAtciwgLS1yZW1vdmUtd3JhcHBlcnMgICAgRGVsZXRlIHRoZSB3cmFwcGVy
IHNjcmlwdHMga2phciB3cm90ZVxuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgIldp
dGggbm8gYXJndW1lbnRzIHRoZSBncmFwaGljYWwgaW50ZXJmYWNlIGlzIHNob3duLiBBIGZpcnN0
IGFyZ3VtZW50XG4iCisgICAgICAgICAgICAidGhhdCBpcyBuZWl0aGVyIGFuIG9wdGlvbiBub3Ig
YSAuamFyIGZpbGUgcnVucyB0aGF0IHRvb2wgZnJvbSB0aGVcbiIKKyAgICAgICAgICAgICJidW5k
bGVkIEpESywgZm9yIGV4YW1wbGU6IGtqYXJhcHAgamF2YSAtdmVyc2lvblxuIik7CiB9CiAKLXN0
YXRpYyBRU3RyaW5nTGlzdCBidWlsZE1vZHVsZUFyZ3MoYm9vbCBhZGRBbGxNb2R1bGVzKQorLyoq
IE9wdGlvbnMgdGhhdCBjb25zdW1lIHRoZSBhcmd1bWVudCBhZnRlciB0aGVtLiAqLworYm9vbCB0
YWtlc1NlcGFyYXRlVmFsdWUoY29uc3QgUVN0cmluZyAmYSkKIHsKLSAgUVN0cmluZ0xpc3QgYXJn
cyA9IHsgUVN0cmluZ0xpdGVyYWwoIi0tbW9kdWxlLXBhdGgiKSwgYnVpbGRNb2R1bGVQYXRoKCkg
fTsKLSAgaWYgKGFkZEFsbE1vZHVsZXMpIHsKLSAgICBhcmdzIDw8IFFTdHJpbmdMaXRlcmFsKCIt
LWFkZC1tb2R1bGVzIikgPDwgUVN0cmluZ0xpdGVyYWwoIkFMTC1NT0RVTEUtUEFUSCIpOwotICB9
Ci0gIHJldHVybiBhcmdzOworICAgIHN0YXRpYyBjb25zdCBRU3RyaW5nTGlzdCBvcHRzeworICAg
ICAgICB1Ii1jcCJfcywKKyAgICAgICAgdSItY2xhc3NwYXRoIl9zLAorICAgICAgICB1Ii0tY2xh
c3MtcGF0aCJfcywKKyAgICAgICAgdSItcCJfcywKKyAgICAgICAgdSItLW1vZHVsZS1wYXRoIl9z
LAorICAgICAgICB1Ii0tdXBncmFkZS1tb2R1bGUtcGF0aCJfcywKKyAgICAgICAgdSItLWFkZC1t
b2R1bGVzIl9zLAorICAgICAgICB1Ii0tbGltaXQtbW9kdWxlcyJfcywKKyAgICAgICAgdSItLWFk
ZC1leHBvcnRzIl9zLAorICAgICAgICB1Ii0tYWRkLW9wZW5zIl9zLAorICAgICAgICB1Ii0tYWRk
LXJlYWRzIl9zLAorICAgICAgICB1Ii0tcGF0Y2gtbW9kdWxlIl9zLAorICAgICAgICB1Ii0tc291
cmNlIl9zLAorICAgIH07CisgICAgcmV0dXJuIG9wdHMuY29udGFpbnMoYSk7CiB9CiAKLXN0YXRp
YyBjb25zdCBRU3RyaW5nTGlzdCBtb2R1bGVBd2FyZVRvb2xzID0gewotICBRU3RyaW5nTGl0ZXJh
bCgiamF2YSIpLAotICBRU3RyaW5nTGl0ZXJhbCgiamF2YWMiKSwKLSAgUVN0cmluZ0xpdGVyYWwo
ImphdmFkb2MiKSwKLSAgUVN0cmluZ0xpdGVyYWwoImpkZXBzIiksCi0gIFFTdHJpbmdMaXRlcmFs
KCJqc2hlbGwiKSwKLSAgUVN0cmluZ0xpdGVyYWwoImpsaW5rIiksCi0gIFFTdHJpbmdMaXRlcmFs
KCJqbmF0aXZlc2NhbiIpLAotICBRU3RyaW5nTGl0ZXJhbCgianBhY2thZ2UiKQorc3RydWN0IE9w
dGlvblJlZ2lvbiB7CisgICAgaW50IGVuZCA9IDA7IC8vIG9wdGlvbnMgbGl2ZSBpbiBhcmdzWzAs
IGVuZCkKKyAgICBib29sIG1vZHVsYXJNYWluID0gZmFsc2U7CiB9OwogCi1pbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQorLyoqCisgKiBGb3IgamF2YSwgZXZlcnl0aGluZyBhZnRlciAt
amFyLCAtbSBvciB0aGUgbWFpbiBjbGFzcyBiZWxvbmdzIHRvIHRoZSBwcm9ncmFtCisgKiBiZWlu
ZyBydW4sIHNvIHdlIG11c3Qgbm90IHRyZWF0IGl0IGFzIEpWTSBvcHRpb25zLiBPdGhlciB0b29s
cyB0YWtlIG9wdGlvbnMKKyAqIGFueXdoZXJlIG9uIHRoZSBsaW5lLgorICovCitPcHRpb25SZWdp
b24gb3B0aW9uUmVnaW9uKGNvbnN0IFFTdHJpbmcgJnRvb2wsIGNvbnN0IFFTdHJpbmdMaXN0ICZh
cmdzKQogewotICBpZiAoYXJnYyA+IDEpIHsKLSAgICBjb25zdCBRU3RyaW5nIGFyZyA9IFFTdHJp
bmc6OmZyb21Mb2NhbDhCaXQoYXJndlsxXSk7Ci0KLSAgICBpZiAoIWFyZy5zdGFydHNXaXRoKFFM
YXRpbjFDaGFyKCctJykpICYmCi0gICAgICAhYXJnLmVuZHNXaXRoKFFMYXRpbjFTdHJpbmcoIi5q
YXIiKSwgUXQ6OkNhc2VJbnNlbnNpdGl2ZSkpIHsKLSAgICAgIGNvbnN0IFFTdHJpbmdMaXN0IGFs
bG93ZWRQYXRocyA9IHsKLSAgICAgICAgUVN0cmluZ0xpdGVyYWwoIi9hcHAvYmluIiksCi0gICAg
ICAgIFFTdHJpbmdMaXRlcmFsKCIvYXBwL2pkay9iaW4iKQotICAgICAgfTsKLSAgICBRU3RyaW5n
IHRvb2xQYXRoOwotICAgIGZvciAoY29uc3QgUVN0cmluZyAmcGF0aCA6IGFsbG93ZWRQYXRocykg
ewotICAgICAgY29uc3QgUVN0cmluZyBjYW5kaWRhdGUgPSBwYXRoICsgUUxhdGluMUNoYXIoJy8n
KSArIGFyZzsKLSAgICAgIGlmIChRRmlsZTo6ZXhpc3RzKGNhbmRpZGF0ZSkpIHsKLSAgICAgICAg
dG9vbFBhdGggPSBjYW5kaWRhdGU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQorICAgIGlmICh0
b29sICE9IHUiamF2YSJfcykgeworICAgICAgICByZXR1cm4ge2ludChhcmdzLnNpemUoKSksIGZh
bHNlfTsKICAgICB9CiAKLSAgICBpZiAodG9vbFBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICBmcHJp
bnRmKHN0ZGVyciwgImtqYXI6ICclcycgaXMgbm90IGFuIGF2YWlsYWJsZSBKREsgdG9vbC5cbiIs
IGFyZ3ZbMV0pOwotICAgICAgcmV0dXJuIDE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFFTdHJpbmcgJmEgPSBhcmdzLmF0KGkpOwor
ICAgICAgICBpZiAoYSA9PSB1Ii1qYXIiX3MpIHsKKyAgICAgICAgICAgIHJldHVybiB7aSwgZmFs
c2V9OworICAgICAgICB9CisgICAgICAgIGlmIChhID09IHUiLW0iX3MgfHwgYSA9PSB1Ii0tbW9k
dWxlIl9zIHx8IGEuc3RhcnRzV2l0aCh1Ii0tbW9kdWxlPSJfcykpIHsKKyAgICAgICAgICAgIHJl
dHVybiB7aSwgdHJ1ZX07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhLnN0YXJ0c1dpdGgodSct
JykpIHsKKyAgICAgICAgICAgIHJldHVybiB7aSwgZmFsc2V9OworICAgICAgICB9CisgICAgICAg
IGlmICh0YWtlc1NlcGFyYXRlVmFsdWUoYSkpIHsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAg
fQogICAgIH0KKyAgICByZXR1cm4ge2ludChhcmdzLnNpemUoKSksIGZhbHNlfTsKK30KIAotICAg
IFFTdHJpbmdMaXN0IHByb2NBcmdzOwotICAgIGlmIChtb2R1bGVBd2FyZVRvb2xzLmNvbnRhaW5z
KGFyZykpIHsKLSAgICAgIGJvb2wgaGFzTW9kdWxlSW5mbyA9IGZhbHNlOwotICAgICAgZm9yIChp
bnQgaSA9IDI7IGkgPCBhcmdjOyArK2kpIHsKLSAgICAgICAgaWYgKFFTdHJpbmc6OmZyb21Mb2Nh
bDhCaXQoYXJndltpXSkuZW5kc1dpdGgoUVN0cmluZ0xpdGVyYWwoIm1vZHVsZS1pbmZvLmphdmEi
KSkpIHsKLSAgICAgICAgICBoYXNNb2R1bGVJbmZvID0gdHJ1ZTsKLSAgICAgICAgICBicmVhazsK
Ky8qKgorICogSW5kZXggb2YgdGhlIGFyZ3VtZW50IHRoYXQgY2FycmllcyBhIG1vZHVsZSBwYXRo
LCBvciAtMS4KKyAqLworaW50IGZpbmRNb2R1bGVQYXRoQXJnKGNvbnN0IFFTdHJpbmdMaXN0ICZh
cmdzLCBpbnQgZW5kLCBib29sIHNob3J0Rm9ybUlzTW9kdWxlUGF0aCkKK3sKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIGNvbnN0IFFTdHJpbmcgJmEgPSBhcmdz
LmF0KGkpOworICAgICAgICBpZiAoYSA9PSB1Ii0tbW9kdWxlLXBhdGgiX3MgfHwgYS5zdGFydHNX
aXRoKHUiLS1tb2R1bGUtcGF0aD0iX3MpIHx8IChzaG9ydEZvcm1Jc01vZHVsZVBhdGggJiYgYSA9
PSB1Ii1wIl9zKSkgeworICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KLSAgICAgIH0K
LSAgICAgIHByb2NBcmdzID0gYnVpbGRNb2R1bGVBcmdzKCFoYXNNb2R1bGVJbmZvKTsKLSAgICB9
Ci0gICAgZm9yIChpbnQgaSA9IDI7IGkgPCBhcmdjOyArK2kpIHsKLSAgICAgIHByb2NBcmdzIDw8
IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoYXJndltpXSk7Ci0gICAgfQotCi0gICAgUVByb2Nlc3Mg
cHJvYzsKLSAgICBwcm9jLnNldFByb2Nlc3NDaGFubmVsTW9kZShRUHJvY2Vzczo6Rm9yd2FyZGVk
Q2hhbm5lbHMpOwotICAgIHByb2Muc3RhcnQodG9vbFBhdGgsIHByb2NBcmdzKTsKLSAgICBwcm9j
LndhaXRGb3JGaW5pc2hlZCgtMSk7Ci0gICAgcmV0dXJuIHByb2MuZXhpdENvZGUoKTsKLSAgICAg
IH0KLQotICAgICAgaWYgKGFyZyA9PSBRTGF0aW4xU3RyaW5nKCItLWdlbmVyYXRlLXdyYXBwZXJz
IikgfHwgYXJnID09IFFMYXRpbjFTdHJpbmcoIi1nIikpIHsKLSAgICAgICAgUUNvcmVBcHBsaWNh
dGlvbiBjb3JlQXBwKGFyZ2MsIGFyZ3YpOwotICAgICAgICBLTG9jYWxpemVkU3RyaW5nOjpzZXRB
cHBsaWNhdGlvbkRvbWFpbigib3JnLmtkZS5ramFyIik7Ci0gICAgICAgIEtqYXJBcHAga2phckFw
cDsKLSAgICAgICAgUUV2ZW50TG9vcCBsb29wOwotICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCZr
amFyQXBwLCAmS2phckFwcDo6b3BlcmF0aW9uQ29tcGxldGVkLCBbJl0oY29uc3QgUVN0cmluZyAm
bXNnKSB7Ci0gICAgICAgICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwgbXNnLnRvTG9jYWw4Qml0
KCkuY29uc3REYXRhKCkpOwotICAgICAgICAgIGxvb3AucXVpdCgpOworICAgIH0KKyAgICByZXR1
cm4gLTE7Cit9CisKKy8qKgorICogUmVwbGFjZSB0aGlzIHByb2Nlc3Mgd2l0aCBhIHRvb2wgZnJv
bSB0aGUgYnVuZGxlZCBKREsuCisgKi8KK2ludCBleGVjSmRrVG9vbChjb25zdCBRU3RyaW5nICZ0
b29sLCBjb25zdCBRU3RyaW5nTGlzdCAmcmVzdCkKK3sKKyAgICAvLyByZWplY3QgYW55dGhpbmcg
dGhhdCBjb3VsZCBlc2NhcGUgL2FwcC9qZGsvYmluLgorICAgIGlmICh0b29sLmNvbnRhaW5zKHUn
LycpIHx8IHRvb2wuc3RhcnRzV2l0aCh1Jy4nKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
ImtqYXI6IGludmFsaWQgdG9vbCBuYW1lXG4iKTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgfQor
CisgICAgY29uc3QgUUJ5dGVBcnJheSBleGUgPSBRRmlsZTo6ZW5jb2RlTmFtZShLamFyOjpqZGtU
b29sKHRvb2wpKTsKKyAgICBpZiAoOjphY2Nlc3MoZXhlLmNvbnN0RGF0YSgpLCBYX09LKSAhPSAw
KSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAia2phcjogJyVzJyBpcyBub3QgYW4gYXZhaWxh
YmxlIEpESyB0b29sLlxuIiwgcVByaW50YWJsZSh0b29sKSk7CisgICAgICAgIHJldHVybiAxMjc7
CisgICAgfQorCisgICAgUVN0cmluZ0xpc3QgYXJnTGlzdCA9IHJlc3Q7CisgICAgaWYgKEtqYXI6
OmlzTW9kdWxlUGF0aFRvb2wodG9vbCkpIHsKKyAgICAgICAgS2phcjo6ZW5zdXJlVXNlck1vZHVs
ZXNEaXIoKTsKKworICAgICAgICBjb25zdCBPcHRpb25SZWdpb24gcmVnaW9uID0gb3B0aW9uUmVn
aW9uKHRvb2wsIGFyZ0xpc3QpOworICAgICAgICBjb25zdCBhdXRvIG9wdGlvbnNCZWdpbiA9IGFy
Z0xpc3QuY2JlZ2luKCk7CisgICAgICAgIGNvbnN0IGF1dG8gb3B0aW9uc0VuZCA9IGFyZ0xpc3Qu
Y2JlZ2luKCkgKyByZWdpb24uZW5kOworCisgICAgICAgIC8vIENvbXBpbGluZyBhIG1vZHVsZSBk
ZXNjcmlwdG9yLCBvciBhbiBleHBsaWNpdCAtLWFkZC1tb2R1bGVzLCBtZWFucyB0aGUKKyAgICAg
ICAgLy8gY2FsbGVyIGNvbnRyb2xzIHRoZSBtb2R1bGUgZ3JhcGg7IGRvIG5vdCB3aWRlbiBpdCBi
ZWhpbmQgdGhlaXIgYmFjay4KKyAgICAgICAgY29uc3QgYm9vbCBoYXNNb2R1bGVJbmZvID0gc3Rk
Ojphbnlfb2Yob3B0aW9uc0JlZ2luLCBvcHRpb25zRW5kLCBbXShjb25zdCBRU3RyaW5nICZhKSB7
CisgICAgICAgICAgICByZXR1cm4gUUZpbGVJbmZvKGEpLmZpbGVOYW1lKCkgPT0gIm1vZHVsZS1p
bmZvLmphdmEiX0wxOwogICAgICAgICB9KTsKLSAgICAgICAgUU9iamVjdDo6Y29ubmVjdCgma2ph
ckFwcCwgJktqYXJBcHA6OmVycm9yT2NjdXJyZWQsIFsmXShjb25zdCBRU3RyaW5nICZlcnIpIHsK
LSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBlcnIudG9Mb2NhbDhCaXQoKS5jb25z
dERhdGEoKSk7CisgICAgICAgIGNvbnN0IGJvb2wgaGFzQWRkTW9kdWxlcyA9IHN0ZDo6YW55X29m
KG9wdGlvbnNCZWdpbiwgb3B0aW9uc0VuZCwgW10oY29uc3QgUVN0cmluZyAmYSkgeworICAgICAg
ICAgICAgcmV0dXJuIGEgPT0gdSItLWFkZC1tb2R1bGVzIl9zIHx8IGEuc3RhcnRzV2l0aCh1Ii0t
YWRkLW1vZHVsZXM9Il9zKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGtqYXJBcHAuZ2VuZXJhdGVX
cmFwcGVycygpOwotICAgICAgICBsb29wLmV4ZWMoKTsKKworICAgICAgICAvLyBNZXJnZSB3aXRo
IHRoZSBjYWxsZXIncyBlbnRyaWVzIGZpcnN0IHNvIHRoZWlyIG1vZHVsZXMgd2luIG9uIGEgbmFt
ZSBjbGFzaC4KKyAgICAgICAgY29uc3QgaW50IGlkeCA9IGZpbmRNb2R1bGVQYXRoQXJnKGFyZ0xp
c3QsIHJlZ2lvbi5lbmQsIHRvb2wgIT0gdSJqZGVwcyJfcyk7CisgICAgICAgIGlmIChpZHggPCAw
KSB7CisgICAgICAgICAgICBhcmdMaXN0LnByZXBlbmQoS2phcjo6bW9kdWxlUGF0aCgpKTsKKyAg
ICAgICAgICAgIGFyZ0xpc3QucHJlcGVuZCh1Ii0tbW9kdWxlLXBhdGgiX3MpOworICAgICAgICB9
IGVsc2UgaWYgKGFyZ0xpc3QuYXQoaWR4KS5zdGFydHNXaXRoKHUiLS1tb2R1bGUtcGF0aD0iX3Mp
KSB7CisgICAgICAgICAgICBhcmdMaXN0W2lkeF0gKz0gdSc6JyArIEtqYXI6Om1vZHVsZVBhdGgo
KTsKKyAgICAgICAgfSBlbHNlIGlmIChpZHggKyAxIDwgcmVnaW9uLmVuZCkgeworICAgICAgICAg
ICAgYXJnTGlzdFtpZHggKyAxXSArPSB1JzonICsgS2phcjo6bW9kdWxlUGF0aCgpOworICAgICAg
ICB9CisgICAgICAgIC8vIEEgdHJhaWxpbmcgLS1tb2R1bGUtcGF0aCB3aXRoIG5vIHZhbHVlIGlz
IGxlZnQgYWxvbmU6IHRoZSB0b29sIGl0c2VsZgorICAgICAgICAvLyBnaXZlcyBhIGJldHRlciBk
aWFnbm9zdGljIHRoYW4gd2UgY291bGQuCisKKyAgICAgICAgLy8gQUxMLU1PRFVMRS1QQVRIIGlz
IG5vdCB2YWxpZCBhcyBhbiBpbml0aWFsIG1vZHVsZSwgc28gLW0gcnVsZXMgaXQgb3V0LgorICAg
ICAgICBpZiAoS2phcjo6dGFrZXNBbGxNb2R1bGVQYXRoKHRvb2wpICYmICFyZWdpb24ubW9kdWxh
ck1haW4gJiYgIWhhc01vZHVsZUluZm8gJiYgIWhhc0FkZE1vZHVsZXMpIHsKKyAgICAgICAgICAg
IGFyZ0xpc3QucHJlcGVuZCh1IkFMTC1NT0RVTEUtUEFUSCJfcyk7CisgICAgICAgICAgICBhcmdM
aXN0LnByZXBlbmQodSItLWFkZC1tb2R1bGVzIl9zKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IFFMaXN0PFFCeXRlQXJyYXk+IHN0b3JhZ2U7CisgICAgc3RvcmFnZS5yZXNlcnZlKGFyZ0xpc3Qu
c2l6ZSgpKTsKKyAgICBzdGQ6OnZlY3RvcjxjaGFyICo+IGFyZ3Y7CisgICAgYXJndi5yZXNlcnZl
KGFyZ0xpc3Quc2l6ZSgpICsgMik7CisgICAgYXJndi5wdXNoX2JhY2soY29uc3RfY2FzdDxjaGFy
ICo+KGV4ZS5jb25zdERhdGEoKSkpOworICAgIGZvciAoY29uc3QgUVN0cmluZyAmYXJnIDogc3Rk
Ojphc19jb25zdChhcmdMaXN0KSkgeworICAgICAgICBzdG9yYWdlLmFwcGVuZChhcmcudG9Mb2Nh
bDhCaXQoKSk7CisgICAgICAgIGFyZ3YucHVzaF9iYWNrKHN0b3JhZ2UubGFzdCgpLmRhdGEoKSk7
CisgICAgfQorICAgIGFyZ3YucHVzaF9iYWNrKG51bGxwdHIpOworCisgICAgOjpleGVjdihleGUu
Y29uc3REYXRhKCksIGFyZ3YuZGF0YSgpKTsKKworICAgIGZwcmludGYoc3RkZXJyLCAia2phcjog
ZmFpbGVkIHRvIGV4ZWN1dGUgJXNcbiIsIGV4ZS5jb25zdERhdGEoKSk7CisgICAgcmV0dXJuIDEy
NjsKK30KKworaW50IHdyYXBwZXJDbGkoaW50ICZhcmdjLCBjaGFyICoqYXJndiwgYm9vbCByZW1v
dmUpCit7CisgICAgUUNvcmVBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisgICAgc2V0dXBB
cHBsaWNhdGlvbk1ldGFkYXRhKCk7CisKKyAgICBLamFyQXBwIGtqYXI7CisgICAgY29uc3QgUVZh
cmlhbnRNYXAgcmVzdWx0ID0gcmVtb3ZlID8ga2phci5yZW1vdmVXcmFwcGVycygpIDoga2phci5n
ZW5lcmF0ZVdyYXBwZXJzKCk7CisgICAgY29uc3QgUVN0cmluZyBtZXNzYWdlID0gcmVzdWx0LnZh
bHVlKHUibWVzc2FnZSJfcykudG9TdHJpbmcoKTsKKworICAgIGlmIChyZXN1bHQudmFsdWUodSJv
ayJfcykudG9Cb29sKCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwgcVV0ZjhQ
cmludGFibGUobWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KKyAgICB9Cisg
ICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgcVV0ZjhQcmludGFibGUobWVzc2FnZSkpOworICAg
IHJldHVybiAxOworfQogCi0gICAgICBpZiAoYXJnLmVuZHNXaXRoKFFMYXRpbjFTdHJpbmcoIi5q
YXIiKSwgUXQ6OkNhc2VJbnNlbnNpdGl2ZSkpIHsKLSAgICAgICAgY29uc3QgUVN0cmluZyBmaWxl
UGF0aCA9IHRvTG9jYWxQYXRoKGFyZyk7CitpbnQgc2hvd0Vycm9yRGlhbG9nKFFRbWxBcHBsaWNh
dGlvbkVuZ2luZSAmZW5naW5lLCBjb25zdCBRU3RyaW5nICZlcnJvclRleHQpCit7CisgICAgS0xv
Y2FsaXphdGlvbjo6c2V0dXBMb2NhbGl6ZWRDb250ZXh0KCZlbmdpbmUpOworICAgIGVuZ2luZS5z
ZXRJbml0aWFsUHJvcGVydGllcyh7e3UiZXJyb3JNZXNzYWdlIl9zLCBlcnJvclRleHR9fSk7Cisg
ICAgZW5naW5lLmxvYWRGcm9tTW9kdWxlKCJvcmcua2RlLmtqYXIiLCAiRXJyb3JEaWFsb2ciKTsK
KyAgICBpZiAoZW5naW5lLnJvb3RPYmplY3RzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAia2phcjogZmFpbGVkIHRvIGxvYWQgdGhlIGVycm9yIGRpYWxvZ1xuJXNcbiIs
IHFVdGY4UHJpbnRhYmxlKGVycm9yVGV4dCkpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9Cisg
ICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6ZXhlYygpOworfQogCi0gICAgICAgIFFHdWlBcHBs
aWNhdGlvbiBhcHAoYXJnYywgYXJndik7Ci0gICAgICAgIGFwcC5zZXRBcHBsaWNhdGlvbk5hbWUo
UVN0cmluZ0xpdGVyYWwoIm9yZy5rZGUua2phciIpKTsKLSAgICAgICAgYXBwLnNldERlc2t0b3BG
aWxlTmFtZShRU3RyaW5nTGl0ZXJhbCgib3JnLmtkZS5ramFyIikpOwotICAgICAgICBLTG9jYWxp
emVkU3RyaW5nOjpzZXRBcHBsaWNhdGlvbkRvbWFpbigib3JnLmtkZS5ramFyIik7CisvKioKKyAq
IFJ1bnMgdGhlIEpWTSwgdGVlcyBzdGRlcnIsIGFuZCBzaG93cyBhIGRpYWxvZyBpZiB0aGUgSlZN
IGZhaWxlZC4KKyAqCisgKiBGYWlsdXJlIGlzIGEgbm9uLXplcm8gZXhpdCwgYW4gYWJub3JtYWwg
ZXhpdCwgb3IgYW55dGhpbmcgYXQgYWxsIG9uIHN0ZGVyci4KKyAqIFRoZSBleGl0IGNvZGUgYWxv
bmUgaXMgbm90IGVub3VnaDogYSBKQVIgdGhhdCBkaWVzIG9uIHRoZSBBV1QgZXZlbnQgdGhyZWFk
CisgKiB0YWtlcyB0aGUgdGhyZWFkIGRvd24gd2l0aCBpdCBhbmQgdGhlIEpWTSBzdGlsbCBleGl0
cyByZXBvcnRpbmcgc3VjY2Vzcy4KKyAqLworaW50IHJ1bldhdGNoZXIoaW50ICZhcmdjLCBjaGFy
ICoqYXJndiwgY29uc3QgUVN0cmluZ0xpc3QgJnJlc3QpCit7CisgICAgaWYgKHJlc3QuaXNFbXB0
eSgpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAia2phcjogLS13YXRjaCByZXF1aXJlcyBh
IEpBUiBwYXRoXG4iKTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgfQorICAgIGNvbnN0IFFTdHJp
bmcgamFyUGF0aCA9IHJlc3QuZmlyc3QoKTsKKyAgICBpZiAoIVFGaWxlOjpleGlzdHMoamFyUGF0
aCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJramFyOiAlcyBkb2VzIG5vdCBleGlzdFxu
IiwgcVV0ZjhQcmludGFibGUoamFyUGF0aCkpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisK
KyAgICBRR3VpQXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3YpOworICAgIHNldHVwQXBwbGljYXRp
b25NZXRhZGF0YSgpOworICAgIHNldHVwUXVpY2tTdHlsZSgpOwogCi0gICAgICAgIEtqYXJBcHAg
a2phckFwcDsKKyAgICBRU3RyaW5nTGlzdCBqYXZhQXJncyA9IEtqYXI6Om1vZHVsZUFyZ3MoKTsK
KyAgICBqYXZhQXJncyA8PCB1Ii1qYXIiX3MgPDwgamFyUGF0aCA8PCByZXN0Lm1pZCgxKTsKIAot
ICAgICAgICBpZiAoIVFGaWxlOjpleGlzdHMoZmlsZVBhdGgpKSB7Ci0gICAgICAgICAgY29uc3Qg
UVN0cmluZyBlcnJvciA9IGkxOG4oCi0gICAgICAgICAgICAiRmlsZSBkb2VzIG5vdCBleGlzdCBv
ciBjYW5ub3QgYmUgYWNjZXNzZWQuXG4iCi0gICAgICAgICAgICAiS0phciBjYW4gb25seSBzZWUg
eW91ciBIb21lIGRpcmVjdG9yeSBieSBkZWZhdWx0LlxuIgotICAgICAgICAgICAgIklmIHRoZSBm
aWxlIGV4aXN0cyBlbHNld2hlcmUsIG1vdmUgaXQgdG8geW91ciBIb21lIGRpcmVjdG9yeSAiCi0g
ICAgICAgICAgICAib3IgZXhwYW5kIEtKYXIncyBwZXJtaXNzaW9ucyBpbiBTeXN0ZW0gU2V0dGlu
Z3MuIik7Ci0gICAgICAgICAgcmV0dXJuIHNob3dHdWkoa2phckFwcCwgZXJyb3IpOworICAgIFFQ
cm9jZXNzIGphdmE7CisgICAgamF2YS5zZXRQcm9jZXNzQ2hhbm5lbE1vZGUoUVByb2Nlc3M6OkZv
cndhcmRlZE91dHB1dENoYW5uZWwpOworICAgIGphdmEuc2V0SW5wdXRDaGFubmVsTW9kZShRUHJv
Y2Vzczo6Rm9yd2FyZGVkSW5wdXRDaGFubmVsKTsKKworICAgIFFCeXRlQXJyYXkgc3RkZXJyVGFp
bDsKKyAgICBib29sIHRydW5jYXRlZCA9IGZhbHNlOworCisgICAgYXV0byBkcmFpblN0ZGVyciA9
IFsmXSB7CisgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgY2h1bmsgPSBqYXZhLnJlYWRBbGxTdGFu
ZGFyZEVycm9yKCk7CisgICAgICAgIGlmIChjaHVuay5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBTdGlsbCB2aXNpYmxlIHRvIGAuLi4gMj4m
MSB8IGdyZXBgIHdoaWxlIGJlaW5nIGJ1ZmZlcmVkIGZvciB0aGUgZGlhbG9nLgorICAgICAgICBm
d3JpdGUoY2h1bmsuY29uc3REYXRhKCksIDEsIHNpemVfdChjaHVuay5zaXplKCkpLCBzdGRlcnIp
OworICAgICAgICBzdGRlcnJUYWlsICs9IGNodW5rOworICAgICAgICBpZiAoc3RkZXJyVGFpbC5z
aXplKCkgPiBNYXhTdGRlcnJUYWlsKSB7CisgICAgICAgICAgICBzdGRlcnJUYWlsID0gc3RkZXJy
VGFpbC5yaWdodChNYXhTdGRlcnJUYWlsKTsKKyAgICAgICAgICAgIHRydW5jYXRlZCA9IHRydWU7
CiAgICAgICAgIH0KKyAgICB9OworCisgICAgUU9iamVjdDo6Y29ubmVjdCgmamF2YSwgJlFQcm9j
ZXNzOjpyZWFkeVJlYWRTdGFuZGFyZEVycm9yLCAmamF2YSwgZHJhaW5TdGRlcnIpOworCisgICAg
amF2YS5zdGFydChLamFyOjpqZGtUb29sKHUiamF2YSIpLCBqYXZhQXJncyk7CisgICAgaWYgKCFq
YXZhLndhaXRGb3JTdGFydGVkKCkpIHsKKyAgICAgICAgUVFtbEFwcGxpY2F0aW9uRW5naW5lIGVu
Z2luZTsKKyAgICAgICAgcmV0dXJuIHNob3dFcnJvckRpYWxvZyhlbmdpbmUsIGkxOG4oIkNvdWxk
IG5vdCBzdGFydCB0aGUgYnVuZGxlZCBKYXZhIHJ1bnRpbWUuIikpOworICAgIH0KKyAgICBqYXZh
LndhaXRGb3JGaW5pc2hlZCgtMSk7CisgICAgZHJhaW5TdGRlcnIoKTsgLy8gd2hhdGV2ZXIgd2Fz
IHN0aWxsIGJ1ZmZlcmVkIHdoZW4gdGhlIHByb2Nlc3MgZW5kZWQKKworICAgIGNvbnN0IGJvb2wg
Y3Jhc2hlZCA9IGphdmEuZXhpdFN0YXR1cygpICE9IFFQcm9jZXNzOjpOb3JtYWxFeGl0OworICAg
IGlmICghY3Jhc2hlZCAmJiBqYXZhLmV4aXRDb2RlKCkgPT0gMCAmJiBzdGRlcnJUYWlsLmlzRW1w
dHkoKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBRU3RyaW5nIGVycm9yVGV4
dCA9IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoc3RkZXJyVGFpbCkudHJpbW1lZCgpOworICAgIGlm
IChlcnJvclRleHQuaXNFbXB0eSgpKSB7CisgICAgICAgIGVycm9yVGV4dCA9IGNyYXNoZWQgPyBp
MThuKCJKYXZhIHRlcm1pbmF0ZWQgYWJub3JtYWxseS4iKSA6IGkxOG4oIkphdmEgZXhpdGVkIHdp
dGggYW4gZXJyb3IgKGV4aXQgY29kZSAlMSkuIiwgamF2YS5leGl0Q29kZSgpKTsKKyAgICB9IGVs
c2UgaWYgKHRydW5jYXRlZCkgeworICAgICAgICBlcnJvclRleHQucHJlcGVuZChpMThuKCIob3V0
cHV0IHRydW5jYXRlZCwgc2hvd2luZyB0aGUgbGFzdCA2NCBLaUIpIikgKyB1IlxuXG4iX3MpOwor
ICAgIH0KKworICAgIFFRbWxBcHBsaWNhdGlvbkVuZ2luZSBlbmdpbmU7CisgICAgcmV0dXJuIHNo
b3dFcnJvckRpYWxvZyhlbmdpbmUsIGVycm9yVGV4dCk7Cit9CisKK2VudW0gY2xhc3MgU3RhcnR1
cEVycm9yIHsKKyAgICBOb25lLAorICAgIEZpbGVOb3RGb3VuZCwKKyAgICBMYXVuY2hGYWlsZWQs
Cit9OworCitpbnQgc2hvd01haW5XaW5kb3coaW50ICZhcmdjLCBjaGFyICoqYXJndiwgU3RhcnR1
cEVycm9yIGVycm9yLCBjb25zdCBRU3RyaW5nICZwYXRoID0gUVN0cmluZygpKQoreworICAgIFFH
dWlBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisgICAgc2V0dXBBcHBsaWNhdGlvbk1ldGFk
YXRhKCk7CisgICAgc2V0dXBRdWlja1N0eWxlKCk7CisKKyAgICBRU3RyaW5nIGluaXRpYWxFcnJv
cjsKKyAgICBzd2l0Y2ggKGVycm9yKSB7CisgICAgY2FzZSBTdGFydHVwRXJyb3I6Ok5vbmU6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhcnR1cEVycm9yOjpGaWxlTm90Rm91bmQ6CisgICAg
ICAgIGluaXRpYWxFcnJvciA9IGkxOG4oIkZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgY2Fubm90IGJl
IGFjY2Vzc2VkLlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLSmFyIGNhbiBvbmx5
IHNlZSB5b3VyIEhvbWUgZGlyZWN0b3J5IGJ5IGRlZmF1bHQuXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIklmIHRoZSBmaWxlIGV4aXN0cyBlbHNld2hlcmUsIG1vdmUgaXQgdG8geW91
ciBIb21lIGRpcmVjdG9yeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGV4cGFu
ZCBLSmFyJ3MgcGVybWlzc2lvbnMgaW4gU3lzdGVtIFNldHRpbmdzLiIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFN0YXJ0dXBFcnJvcjo6TGF1bmNoRmFpbGVkOgorICAgICAgICBpbml0aWFs
RXJyb3IgPSBpMThuKCJGYWlsZWQgdG8gbGF1bmNoICUxLiIsIHBhdGgpOworICAgICAgICBicmVh
azsKKyAgICB9CiAKLSAgICAgICAgUVN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgICAgIFFPYmpl
Y3Q6OmNvbm5lY3QoJmtqYXJBcHAsICZLamFyQXBwOjplcnJvck9jY3VycmVkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIFsmXShjb25zdCBRU3RyaW5nICZlcnIpIHsgZXJyb3JNZXNzYWdlID0g
ZXJyOyB9KTsKKyAgICBRUW1sQXBwbGljYXRpb25FbmdpbmUgZW5naW5lOworICAgIEtMb2NhbGl6
YXRpb246OnNldHVwTG9jYWxpemVkQ29udGV4dCgmZW5naW5lKTsKKyAgICBlbmdpbmUuc2V0SW5p
dGlhbFByb3BlcnRpZXMoe3t1ImluaXRpYWxFcnJvciJfcywgaW5pdGlhbEVycm9yfX0pOworICAg
IGVuZ2luZS5sb2FkRnJvbU1vZHVsZSgib3JnLmtkZS5ramFyIiwgIk1haW4iKTsKKyAgICBpZiAo
ZW5naW5lLnJvb3RPYmplY3RzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJy
LCAia2phcjogZmFpbGVkIHRvIGxvYWQgdGhlIHVzZXIgaW50ZXJmYWNlXG4iKTsKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBhcHAuZXhlYygpOworfQorCit9IC8vIG5hbWVz
cGFjZQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIEtMb2NhbGl6
ZWRTdHJpbmc6OnNldEFwcGxpY2F0aW9uRG9tYWluKCJvcmcua2RlLmtqYXIiKTsKKworICAgIC8v
IENvcHkgdGhlIGFyZ3VtZW50cyBiZWZvcmUgYW55IFFDb3JlQXBwbGljYXRpb24gdG91Y2hlcyBh
cmdjL2FyZ3YsIGFuZAorICAgIC8vIGNvbnN0cnVjdCBleGFjdGx5IG9uZSBhcHBsaWNhdGlvbiBv
YmplY3QgZnVydGhlciBkb3duLgorICAgIFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgYXJncy5yZXNl
cnZlKGFyZ2MpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgKytpKSB7CisgICAgICAg
IGFyZ3MgPDwgUVN0cmluZzo6ZnJvbUxvY2FsOEJpdChhcmd2W2ldKTsKKyAgICB9CisKKyAgICBj
b25zdCBRU3RyaW5nIGZpcnN0ID0gYXJncy52YWx1ZSgxKTsKKyAgICBjb25zdCBRU3RyaW5nTGlz
dCByZXN0ID0gYXJncy5taWQoMik7CisKKyAgICBpZiAoZmlyc3QgPT0gdSItLWhlbHAiX3MgfHwg
Zmlyc3QgPT0gdSItaCJfcykgeworICAgICAgICBwcmludFVzYWdlKHN0ZG91dCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIGlmIChmaXJzdCA9PSB1Ii0tdmVyc2lvbiJfcyB8fCBm
aXJzdCA9PSB1Ii12Il9zKSB7CisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAia2phciAlc1xuIiwg
S0pBUl9WRVJTSU9OX1NUUklORyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlm
IChmaXJzdCA9PSB1Ii0tZ2VuZXJhdGUtd3JhcHBlcnMiX3MgfHwgZmlyc3QgPT0gdSItZyJfcykg
eworICAgICAgICByZXR1cm4gd3JhcHBlckNsaShhcmdjLCBhcmd2LCBmYWxzZSk7CisgICAgfQog
Ci0gICAgICAgIGlmIChramFyQXBwLnJ1bkphckZpbGUoZmlsZVBhdGgpKSB7Ci0gICAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKGZpcnN0ID09IHUiLS1yZW1vdmUtd3JhcHBlcnMiX3MgfHwgZmly
c3QgPT0gdSItciJfcykgeworICAgICAgICByZXR1cm4gd3JhcHBlckNsaShhcmdjLCBhcmd2LCB0
cnVlKTsKKyAgICB9CisKKyAgICBpZiAoZmlyc3QgPT0gdSItLXdhdGNoIl9zKSB7CisgICAgICAg
IHJldHVybiBydW5XYXRjaGVyKGFyZ2MsIGFyZ3YsIHJlc3QpOworICAgIH0KKworICAgIC8vIEFu
eXRoaW5nIHRoYXQgaXMgbmVpdGhlciBhbiBvcHRpb24gbm9yIGEgSkFSIGlzIGEgSkRLIHRvb2wg
aW52b2NhdGlvbi4KKyAgICBpZiAoIWZpcnN0LmlzRW1wdHkoKSAmJiAhZmlyc3Quc3RhcnRzV2l0
aCh1Jy0nKSAmJiAhZmlyc3QuZW5kc1dpdGgodSIuamFyIl9zLCBRdDo6Q2FzZUluc2Vuc2l0aXZl
KSkgeworICAgICAgICByZXR1cm4gZXhlY0pka1Rvb2woZmlyc3QsIHJlc3QpOworICAgIH0KKwor
ICAgIGlmIChmaXJzdC5lbmRzV2l0aCh1Ii5qYXIiX3MsIFF0OjpDYXNlSW5zZW5zaXRpdmUpKSB7
CisgICAgICAgIGNvbnN0IFFTdHJpbmcgcGF0aCA9IGZpcnN0LnN0YXJ0c1dpdGgodSJmaWxlOi8v
Il9zKSA/IFFVcmwoZmlyc3QpLnRvTG9jYWxGaWxlKCkgOiBmaXJzdDsKKyAgICAgICAgaWYgKCFR
RmlsZTo6ZXhpc3RzKHBhdGgpKSB7CisgICAgICAgICAgICByZXR1cm4gc2hvd01haW5XaW5kb3co
YXJnYywgYXJndiwgU3RhcnR1cEVycm9yOjpGaWxlTm90Rm91bmQpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIHNob3dHdWkoa2phckFwcCwgZXJyb3JNZXNzYWdlKTsKLSAgICAgIH0KLSAg
fQorICAgICAgICBRU3RyaW5nTGlzdCB3YXRjaGVyQXJnc3t1Ii0td2F0Y2giX3MsIHBhdGh9Owor
ICAgICAgICB3YXRjaGVyQXJncyArPSByZXN0OworICAgICAgICBpZiAoUVByb2Nlc3M6OnN0YXJ0
RGV0YWNoZWQoS2phcjo6c2VsZlBhdGgoKSwgd2F0Y2hlckFyZ3MpKSB7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2hvd01haW5XaW5kb3coYXJnYywg
YXJndiwgU3RhcnR1cEVycm9yOjpMYXVuY2hGYWlsZWQsIHBhdGgpOworICAgIH0KIAotICBRR3Vp
QXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3YpOwotICBhcHAuc2V0QXBwbGljYXRpb25OYW1lKFFT
dHJpbmdMaXRlcmFsKCJvcmcua2RlLmtqYXIiKSk7Ci0gIGFwcC5zZXREZXNrdG9wRmlsZU5hbWUo
UVN0cmluZ0xpdGVyYWwoIm9yZy5rZGUua2phciIpKTsKLSAgS0xvY2FsaXplZFN0cmluZzo6c2V0
QXBwbGljYXRpb25Eb21haW4oIm9yZy5rZGUua2phciIpOworICAgIGlmICghZmlyc3QuaXNFbXB0
eSgpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAia2phcjogdW5rbm93biBvcHRpb24gJyVz
J1xuIiwgcVV0ZjhQcmludGFibGUoZmlyc3QpKTsKKyAgICAgICAgcHJpbnRVc2FnZShzdGRlcnIp
OworICAgICAgICByZXR1cm4gMjsKKyAgICB9CiAKLSAgS2phckFwcCBramFyQXBwOwotICByZXR1
cm4gc2hvd0d1aShramFyQXBwKTsKKyAgICByZXR1cm4gc2hvd01haW5XaW5kb3coYXJnYywgYXJn
diwgU3RhcnR1cEVycm9yOjpOb25lKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9xbWwvRXJyb3JEaWFs
b2cucW1sIGIvc3JjL3FtbC9FcnJvckRpYWxvZy5xbWwKaW5kZXggNjNhZTIwZC4uMDE0NmM5ZCAx
MDA2NDQKLS0tIGEvc3JjL3FtbC9FcnJvckRpYWxvZy5xbWwKKysrIGIvc3JjL3FtbC9FcnJvckRp
YWxvZy5xbWwKQEAgLTIsMTIgKzIsMTUgQEAKIC8vIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIw
MjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5jb20+CiAKIGltcG9ydCBRdFF1aWNrCi1p
bXBvcnQgUXRRdWljay5Db250cm9scworaW1wb3J0IFF0UXVpY2suQ29udHJvbHMgYXMgQ29udHJv
bHMKIGltcG9ydCBRdFF1aWNrLkxheW91dHMKIGltcG9ydCBvcmcua2RlLmtpcmlnYW1pIGFzIEtp
cmlnYW1pCiAKIEtpcmlnYW1pLkFwcGxpY2F0aW9uV2luZG93IHsKICAgICBpZDogcm9vdAorCisg
ICAgcmVxdWlyZWQgcHJvcGVydHkgc3RyaW5nIGVycm9yTWVzc2FnZQorCiAgICAgdmlzaWJsZTog
dHJ1ZQogICAgIHdpZHRoOiA2NDAKICAgICBoZWlnaHQ6IDU2MApAQCAtNDYsMTggKzQ5LDE3IEBA
IEtpcmlnYW1pLkFwcGxpY2F0aW9uV2luZG93IHsKICAgICAgICAgICAgICAgICBMYXlvdXQuZmls
bFdpZHRoOiB0cnVlCiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFNjcm9sbFZpZXcgewor
ICAgICAgICAgICAgQ29udHJvbHMuU2Nyb2xsVmlldyB7CiAgICAgICAgICAgICAgICAgTGF5b3V0
LmZpbGxXaWR0aDogdHJ1ZQogICAgICAgICAgICAgICAgIExheW91dC5maWxsSGVpZ2h0OiB0cnVl
CiAgICAgICAgICAgICAgICAgS2lyaWdhbWkuVGhlbWUuaW5oZXJpdDogZmFsc2UKICAgICAgICAg
ICAgICAgICBLaXJpZ2FtaS5UaGVtZS5jb2xvclNldDogS2lyaWdhbWkuVGhlbWUuVmlldwogCi0g
ICAgICAgICAgICAgICAgVGV4dEFyZWEgewotICAgICAgICAgICAgICAgICAgICB0ZXh0OiBlcnJv
ck1lc3NhZ2UKKyAgICAgICAgICAgICAgICBDb250cm9scy5UZXh0QXJlYSB7CisgICAgICAgICAg
ICAgICAgICAgIHRleHQ6IHJvb3QuZXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgIHJl
YWRPbmx5OiB0cnVlCiAgICAgICAgICAgICAgICAgICAgIHdyYXBNb2RlOiBUZXh0LldyYXBBbnl3
aGVyZQogICAgICAgICAgICAgICAgICAgICBmb250LmZhbWlseTogIm1vbm9zcGFjZSIKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0QnlNb3VzZTogdHJ1ZQogICAgICAgICAgICAgICAgICAgICBi
YWNrZ3JvdW5kOiBSZWN0YW5nbGUgewogICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEtp
cmlnYW1pLlRoZW1lLmJhY2tncm91bmRDb2xvcgogICAgICAgICAgICAgICAgICAgICAgICAgYm9y
ZGVyLmNvbG9yOiBLaXJpZ2FtaS5UaGVtZS5kaXNhYmxlZFRleHRDb2xvcgpAQCAtNzQsNyArNzYs
NyBAQCBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAgICAgICAgICAgICAgdGV4dDog
aTE4bigiSWYgdGhpcyBhcHBsaWNhdGlvbiByZXF1aXJlcyBleHRlcm5hbCBtb2R1bGVzIG9yIGxp
YnJhcmllcywgcGxhY2UgdGhlbSBpbiA8Yj5+Ly5sb2NhbC9zaGFyZS9ramFyL21vZHVsZXMvPC9i
PiBhbmQgdHJ5IGFnYWluLiIpCiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIEJ1dHRvbiB7
CisgICAgICAgICAgICBDb250cm9scy5CdXR0b24gewogICAgICAgICAgICAgICAgIExheW91dC5h
bGlnbm1lbnQ6IFF0LkFsaWduSENlbnRlcgogICAgICAgICAgICAgICAgIHRleHQ6IGkxOG4oIkNs
b3NlIikKICAgICAgICAgICAgICAgICBpY29uLm5hbWU6ICJkaWFsb2ctY2xvc2UiCmRpZmYgLS1n
aXQgYS9zcmMvcW1sL21haW4ucW1sIGIvc3JjL3FtbC9NYWluLnFtbApzaW1pbGFyaXR5IGluZGV4
IDUyJQpyZW5hbWUgZnJvbSBzcmMvcW1sL21haW4ucW1sCnJlbmFtZSB0byBzcmMvcW1sL01haW4u
cW1sCmluZGV4IDMxNzA1ZWQuLjRlMGFhZmEgMTAwNjQ0Ci0tLSBhL3NyYy9xbWwvbWFpbi5xbWwK
KysrIGIvc3JjL3FtbC9NYWluLnFtbApAQCAtMSwzNSArMSw1MyBAQAogLy8gU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBHUEwtMy4wLW9ubHkgT1IgTGljZW5zZVJlZi1L
REUtQWNjZXB0ZWQtR1BMCiAvLyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDI2IEhhZGkgQ2hv
a3IgPGhhZGljaG9rckBpY2xvdWQuY29tPgogCitpbXBvcnQgUXRDb3JlCiBpbXBvcnQgUXRRdWlj
awogaW1wb3J0IFF0UXVpY2suQ29udHJvbHMgYXMgQ29udHJvbHMKK2ltcG9ydCBRdFF1aWNrLkRp
YWxvZ3MKIGltcG9ydCBRdFF1aWNrLkxheW91dHMKK2ltcG9ydCBvcmcua2RlLmNvcmVhZGRvbnMg
YXMgS0NvcmVBZGRvbnMKIGltcG9ydCBvcmcua2RlLmtpcmlnYW1pIGFzIEtpcmlnYW1pCi1pbXBv
cnQgUXQubGFicy5wbGF0Zm9ybQotaW1wb3J0IFF0Q29yZQoraW1wb3J0IG9yZy5rZGUua2phcgog
CiBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAgaWQ6IHJvb3QKLSAgICB3aWR0aDog
NDYwCi0gICAgaGVpZ2h0OiAzNDAKLSAgICBtaW5pbXVtV2lkdGg6IDM4MAotICAgIG1pbmltdW1I
ZWlnaHQ6IDI4MAorCisgICAgcmVxdWlyZWQgcHJvcGVydHkgc3RyaW5nIGluaXRpYWxFcnJvcgor
CisgICAgd2lkdGg6IDUyMAorICAgIGhlaWdodDogNDEwCisgICAgbWluaW11bVdpZHRoOiA0ODAK
KyAgICBtaW5pbXVtSGVpZ2h0OiAzODAKICAgICB2aXNpYmxlOiB0cnVlCi0gICAgdGl0bGU6IGkx
OG4oIktKYXIiKQorICAgIHRpdGxlOiBpMThuKCJKYXZhIEFyY2hpdmUgUnVubmVyIikKKworICAg
IGZ1bmN0aW9uIHNob3dTdGF0dXMob2s6IGJvb2wsIHRleHQ6IHN0cmluZyk6IHZvaWQgeworICAg
ICAgICBzdGF0dXNNZXNzYWdlLnR5cGUgPSBvayA/IEtpcmlnYW1pLk1lc3NhZ2VUeXBlLlBvc2l0
aXZlIDogS2lyaWdhbWkuTWVzc2FnZVR5cGUuRXJyb3I7CisgICAgICAgIHN0YXR1c01lc3NhZ2Uu
dGV4dCA9IHRleHQ7CisgICAgICAgIHN0YXR1c01lc3NhZ2UudmlzaWJsZSA9IHRydWU7CisgICAg
fQogCiAgICAgQ29tcG9uZW50Lm9uQ29tcGxldGVkOiB7Ci0gICAgICAgIGlmICh0eXBlb2YgaW5p
dGlhbEVycm9yICE9PSAidW5kZWZpbmVkIiAmJiBpbml0aWFsRXJyb3IgIT09ICIiKSB7Ci0gICAg
ICAgICAgICBzdGF0dXNNZXNzYWdlLnR5cGUgPSBLaXJpZ2FtaS5NZXNzYWdlVHlwZS5FcnJvcgot
ICAgICAgICAgICAgc3RhdHVzTWVzc2FnZS50ZXh0ID0gaW5pdGlhbEVycm9yCi0gICAgICAgICAg
ICBzdGF0dXNNZXNzYWdlLnZpc2libGUgPSB0cnVlCisgICAgICAgIGlmIChyb290LmluaXRpYWxF
cnJvciAhPT0gIiIpIHsKKyAgICAgICAgICAgIHJvb3Quc2hvd1N0YXR1cyhmYWxzZSwgcm9vdC5p
bml0aWFsRXJyb3IpOworICAgICAgICB9CisgICAgfQorCisgICAgQ29tcG9uZW50IHsKKyAgICAg
ICAgaWQ6IGFib3V0UGFnZQorCisgICAgICAgIEtpcmlnYW1pLkFib3V0UGFnZSB7CisgICAgICAg
ICAgICBhYm91dERhdGE6IEtDb3JlQWRkb25zLkFib3V0RGF0YQogICAgICAgICB9CiAgICAgfQog
CiAgICAgS2lyaWdhbWkuRGlhbG9nIHsKICAgICAgICAgaWQ6IHRvb2xzRGlhbG9nCisKICAgICAg
ICAgdGl0bGU6IGkxOG4oIkF2YWlsYWJsZSBKREsgVG9vbHMiKQotICAgICAgICBwcmVmZXJyZWRX
aWR0aDogNDIwCi0gICAgICAgIHByZWZlcnJlZEhlaWdodDogMzYwCisgICAgICAgIHByZWZlcnJl
ZFdpZHRoOiA1MDAKKyAgICAgICAgcHJlZmVycmVkSGVpZ2h0OiAzOTAKIAogICAgICAgICBDb250
cm9scy5TY3JvbGxWaWV3IHsKICAgICAgICAgICAgIGNsaXA6IHRydWUKQEAgLTQwLDEyICs1OCwx
NCBAQCBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAgICAgICAgICAgICAgcGFkZGlu
ZzogS2lyaWdhbWkuVW5pdHMubGFyZ2VTcGFjaW5nCiAKICAgICAgICAgICAgICAgICBSZXBlYXRl
ciB7Ci0gICAgICAgICAgICAgICAgICAgIG1vZGVsOiBiYWNrZW5kID8gYmFja2VuZC5hdmFpbGFi
bGVUb29scyA6IFtdCisgICAgICAgICAgICAgICAgICAgIG1vZGVsOiBLamFyQXBwLmF2YWlsYWJs
ZVRvb2xzCisKICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6IENvbnRyb2xzLkxhYmVsIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHByb3BlcnR5IHN0cmluZyBtb2RlbERh
dGEKKwogICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbW9kZWxEYXRhCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb250LmZhbWlseTogIm1vbm9zcGFjZSIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvbnQucGl4ZWxTaXplOiAxMQotICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGlu
ZzogNAorICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogS2lyaWdhbWkuVW5pdHMuc21h
bGxTcGFjaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBSZWN0YW5nbGUg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBLaXJpZ2FtaS5UaGVtZS5hbHRl
cm5hdGVCYWNrZ3JvdW5kQ29sb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpdXM6
IDMKQEAgLTU3LDM2ICs3Nyw1MyBAQCBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAg
fQogCiAgICAgcGFnZVN0YWNrLmluaXRpYWxQYWdlOiBLaXJpZ2FtaS5QYWdlIHsKLSAgICAgICAg
dGl0bGU6IGkxOG4oIktKYXIg4oCTIEphdmEgQXJjaGl2ZSBSdW5uZXIiKQorICAgICAgICB0aXRs
ZTogaTE4bigiSmF2YSBBcmNoaXZlIFJ1bm5lciIpCiAKICAgICAgICAgYWN0aW9uczogWwogICAg
ICAgICAgICAgS2lyaWdhbWkuQWN0aW9uIHsKICAgICAgICAgICAgICAgICBpY29uLm5hbWU6ICJh
cHBsaWNhdGlvbi14LWphdmEtYXJjaGl2ZSIKICAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJS
dW4gSkFSIikKLSAgICAgICAgICAgICAgICBvblRyaWdnZXJlZDogZmlsZURpYWxvZy5vcGVuKCkK
ICAgICAgICAgICAgICAgICBkaXNwbGF5SGludDogS2lyaWdhbWkuRGlzcGxheUhpbnQuS2VlcFZp
c2libGUKKyAgICAgICAgICAgICAgICBvblRyaWdnZXJlZDogZmlsZURpYWxvZy5vcGVuKCkKICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICBLaXJpZ2FtaS5BY3Rpb24gewogICAgICAgICAgICAg
ICAgIGljb24ubmFtZTogImNvbmZpZ3VyZSIKICAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJB
ZHZhbmNlZCIpCi0gICAgICAgICAgICAgICAgY2hpbGRyZW46IFsKLSAgICAgICAgICAgICAgICAg
ICAgS2lyaWdhbWkuQWN0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGkxOG4o
IlNob3cgQXZhaWxhYmxlIFRvb2xzIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGljb24ubmFt
ZTogInV0aWxpdGllcy10ZXJtaW5hbCIKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJpZ2dl
cmVkOiB0b29sc0RpYWxvZy5vcGVuKCkKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgS2lyaWdhbWkuQWN0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHQ6IGkxOG4oIkdlbmVyYXRlIFdyYXBwZXJzIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlj
b24ubmFtZTogImFyY2hpdmUtaW5zZXJ0IgotICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxl
ZDogYmFja2VuZCA/ICFiYWNrZW5kLmJ1c3kgOiBmYWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgb25UcmlnZ2VyZWQ6IGJhY2tlbmQuZ2VuZXJhdGVXcmFwcGVycygpCi0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIEtpcmlnYW1pLkFjdGlvbiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJPcGVuIE1vZHVsZXMgRm9sZGVyIikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGljb24ubmFtZTogImZvbGRlciIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG9uVHJpZ2dlcmVkOiBiYWNrZW5kLm9wZW5Nb2R1bGVzRm9sZGVyKCkKKworICAgICAg
ICAgICAgICAgIEtpcmlnYW1pLkFjdGlvbiB7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6IGkx
OG4oIlNob3cgQXZhaWxhYmxlIFRvb2xzIikKKyAgICAgICAgICAgICAgICAgICAgaWNvbi5uYW1l
OiAidXRpbGl0aWVzLXRlcm1pbmFsIgorICAgICAgICAgICAgICAgICAgICBvblRyaWdnZXJlZDog
dG9vbHNEaWFsb2cub3BlbigpCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
S2lyaWdhbWkuQWN0aW9uIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogaTE4bigiR2VuZXJh
dGUgV3JhcHBlcnMiKQorICAgICAgICAgICAgICAgICAgICBpY29uLm5hbWU6ICJhcmNoaXZlLWlu
c2VydCIKKyAgICAgICAgICAgICAgICAgICAgb25UcmlnZ2VyZWQ6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEtqYXJBcHAuZ2VuZXJhdGVXcmFwcGVycygpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcm9vdC5zaG93U3RhdHVzKHJlc3VsdC5vaywgcmVzdWx0Lm1l
c3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEtpcmlnYW1pLkFjdGlvbiB7CisgICAgICAg
ICAgICAgICAgICAgIHRleHQ6IGkxOG4oIlJlbW92ZSBXcmFwcGVycyIpCisgICAgICAgICAgICAg
ICAgICAgIGljb24ubmFtZTogImVkaXQtZGVsZXRlIgorICAgICAgICAgICAgICAgICAgICBvblRy
aWdnZXJlZDogeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gS2phckFw
cC5yZW1vdmVXcmFwcGVycygpOworICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5zaG93U3Rh
dHVzKHJlc3VsdC5vaywgcmVzdWx0Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgS2lyaWdhbWkuQWN0aW9uIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGV4dDogaTE4bigiT3BlbiBNb2R1bGVzIEZvbGRlciIpCisgICAg
ICAgICAgICAgICAgICAgIGljb24ubmFtZTogImZvbGRlciIKKyAgICAgICAgICAgICAgICAgICAg
b25UcmlnZ2VyZWQ6IEtqYXJBcHAub3Blbk1vZHVsZXNGb2xkZXIoKQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBLaXJpZ2FtaS5BY3Rpb24geworICAgICAg
ICAgICAgICAgIGljb24ubmFtZTogImhlbHAtYWJvdXQiCisgICAgICAgICAgICAgICAgdGV4dDog
aTE4bigiQWJvdXQiKQorICAgICAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiByb290LnBhZ2VTdGFj
ay5sYXllcnMucHVzaChhYm91dFBhZ2UpCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KIApAQCAt
OTcsMTkgKzEzNCwxNiBAQCBLaXJpZ2FtaS5BcHBsaWNhdGlvbldpbmRvdyB7CiAKICAgICAgICAg
ICAgIEtpcmlnYW1pLklubGluZU1lc3NhZ2UgewogICAgICAgICAgICAgICAgIGlkOiBzdGF0dXNN
ZXNzYWdlCisKICAgICAgICAgICAgICAgICBMYXlvdXQuZmlsbFdpZHRoOiB0cnVlCiAgICAgICAg
ICAgICAgICAgdmlzaWJsZTogZmFsc2UKICAgICAgICAgICAgICAgICBzaG93Q2xvc2VCdXR0b246
IHRydWUKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgQ29udHJvbHMuQnVzeUluZGljYXRv
ciB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0LmFsaWdubWVudDogUXQuQWxpZ25IQ2VudGVyCi0g
ICAgICAgICAgICAgICAgcnVubmluZzogYmFja2VuZCA/IGJhY2tlbmQuYnVzeSA6IGZhbHNlCi0g
ICAgICAgICAgICAgICAgdmlzaWJsZTogYmFja2VuZCA/IGJhY2tlbmQuYnVzeSA6IGZhbHNlCisg
ICAgICAgICAgICBJdGVtIHsKKyAgICAgICAgICAgICAgICBMYXlvdXQuZmlsbEhlaWdodDogdHJ1
ZQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBJdGVtIHsgTGF5b3V0LmZpbGxIZWlnaHQ6
IHRydWUgfQotCiAgICAgICAgICAgICBLaXJpZ2FtaS5JY29uIHsKICAgICAgICAgICAgICAgICBz
b3VyY2U6ICJhcHBsaWNhdGlvbi14LWphdmEtYXJjaGl2ZSIKICAgICAgICAgICAgICAgICBMYXlv
dXQuYWxpZ25tZW50OiBRdC5BbGlnbkhDZW50ZXIKQEAgLTEyNSw3ICsxNTksNyBAQCBLaXJpZ2Ft
aS5BcHBsaWNhdGlvbldpbmRvdyB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENvbnRy
b2xzLkxhYmVsIHsKLSAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJTZWxlY3QgYSBKYXZhIEFy
Y2hpdmUgKC5qYXIpIGZpbGUgdG8gZXhlY3V0ZSBpdCB1c2luZyB0aGUgYnVuZGxlZCBPcGVuSkRL
IHJ1bnRpbWUuIikKKyAgICAgICAgICAgICAgICB0ZXh0OiBpMThuKCJTZWxlY3QgYSBKYXZhIGFy
Y2hpdmUgKC5qYXIpIHRvIHJ1biBpdCB3aXRoIHRoZSBidW5kbGVkIE9wZW5KREsgcnVudGltZS4i
KQogICAgICAgICAgICAgICAgIHdyYXBNb2RlOiBUZXh0LldvcmRXcmFwCiAgICAgICAgICAgICAg
ICAgTGF5b3V0LmZpbGxXaWR0aDogdHJ1ZQogICAgICAgICAgICAgICAgIGhvcml6b250YWxBbGln
bm1lbnQ6IFRleHQuQWxpZ25IQ2VudGVyCkBAIC0xMzksMzMgKzE3MywyNCBAQCBLaXJpZ2FtaS5B
cHBsaWNhdGlvbldpbmRvdyB7CiAgICAgICAgICAgICAgICAgb25DbGlja2VkOiBmaWxlRGlhbG9n
Lm9wZW4oKQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBJdGVtIHsgTGF5b3V0LmZpbGxI
ZWlnaHQ6IHRydWUgfQorICAgICAgICAgICAgSXRlbSB7CisgICAgICAgICAgICAgICAgTGF5b3V0
LmZpbGxIZWlnaHQ6IHRydWUKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAg
IEZpbGVEaWFsb2cgewogICAgICAgICBpZDogZmlsZURpYWxvZworCiAgICAgICAgIHRpdGxlOiBp
MThuKCJTZWxlY3QgSkFSIEZpbGUiKQotICAgICAgICBuYW1lRmlsdGVyczogWyJKQVIgZmlsZXMg
KCouamFyKSJdCi0gICAgICAgIGZvbGRlcjogU3RhbmRhcmRQYXRocy53cml0YWJsZUxvY2F0aW9u
KFN0YW5kYXJkUGF0aHMuRG93bmxvYWRMb2NhdGlvbikKKyAgICAgICAgbmFtZUZpbHRlcnM6IFtp
MThuKCJKYXZhIGFyY2hpdmVzICgqLmphcikiKV0KKyAgICAgICAgY3VycmVudEZvbGRlcjogU3Rh
bmRhcmRQYXRocy53cml0YWJsZUxvY2F0aW9uKFN0YW5kYXJkUGF0aHMuRG93bmxvYWRMb2NhdGlv
bikKIAogICAgICAgICBvbkFjY2VwdGVkOiB7Ci0gICAgICAgICAgICBsZXQgZmlsZVBhdGggPSBm
aWxlLnRvU3RyaW5nKCkucmVwbGFjZSgiZmlsZTovLyIsICIiKQotICAgICAgICAgICAgYmFja2Vu
ZC5ydW5KYXJGaWxlKGZpbGVQYXRoKQotICAgICAgICB9Ci0gICAgfQotCi0gICAgQ29ubmVjdGlv
bnMgewotICAgICAgICB0YXJnZXQ6IGJhY2tlbmQKLSAgICAgICAgZnVuY3Rpb24gb25FcnJvck9j
Y3VycmVkKGVycm9yKSB7Ci0gICAgICAgICAgICBzdGF0dXNNZXNzYWdlLnR5cGUgPSBLaXJpZ2Ft
aS5NZXNzYWdlVHlwZS5FcnJvcgotICAgICAgICAgICAgc3RhdHVzTWVzc2FnZS50ZXh0ID0gZXJy
b3IKLSAgICAgICAgICAgIHN0YXR1c01lc3NhZ2UudmlzaWJsZSA9IHRydWUKLSAgICAgICAgfQot
ICAgICAgICBmdW5jdGlvbiBvbk9wZXJhdGlvbkNvbXBsZXRlZChtZXNzYWdlKSB7Ci0gICAgICAg
ICAgICBzdGF0dXNNZXNzYWdlLnR5cGUgPSBLaXJpZ2FtaS5NZXNzYWdlVHlwZS5Qb3NpdGl2ZQot
ICAgICAgICAgICAgc3RhdHVzTWVzc2FnZS50ZXh0ID0gbWVzc2FnZQotICAgICAgICAgICAgc3Rh
dHVzTWVzc2FnZS52aXNpYmxlID0gdHJ1ZQorICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBLamFy
QXBwLnJ1bkphcihzZWxlY3RlZEZpbGUpOworICAgICAgICAgICAgaWYgKGVycm9yICE9PSAiIikg
eworICAgICAgICAgICAgICAgIHJvb3Quc2hvd1N0YXR1cyhmYWxzZSwgZXJyb3IpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvc3JjL3Jlc291cmNlcy5x
cmMgYi9zcmMvcmVzb3VyY2VzLnFyYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUy
ZjUzOS4uMDAwMDAwMAotLS0gYS9zcmMvcmVzb3VyY2VzLnFyYworKysgL2Rldi9udWxsCkBAIC0x
LDkgKzAsMCBAQAotPCEtLSBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9S
IEdQTC0zLjAtb25seSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEwgLS0+Ci08IS0tIFNQ
RFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5j
b20+IC0tPgotCi08IURPQ1RZUEUgUkNDPgotPFJDQyB2ZXJzaW9uPSIxLjAiPgotICAgIDxxcmVz
b3VyY2UgcHJlZml4PSIvcW1sIj4KLSAgICAgICAgPGZpbGUgYWxpYXM9Im1haW4ucW1sIj5xbWwv
bWFpbi5xbWw8L2ZpbGU+Ci0gICAgPC9xcmVzb3VyY2U+Ci08L1JDQz4KZGlmZiAtLWdpdCBhL3Ny
Yy93YXRjaGVyL2tqYXJfd2F0Y2hlci5jcHAgYi9zcmMvd2F0Y2hlci9ramFyX3dhdGNoZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjkzOWRjLi4wMDAwMDAwCi0tLSBhL3Ny
Yy93YXRjaGVyL2tqYXJfd2F0Y2hlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBA
Ci0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEdQTC0zLjAtb25s
eSBPUiBMaWNlbnNlUmVmLUtERS1BY2NlcHRlZC1HUEwKLS8vIFNQRFgtRmlsZUNvcHlyaWdodFRl
eHQ6IDIwMjYgSGFkaSBDaG9rciA8aGFkaWNob2tyQGljbG91ZC5jb20+Ci0KLSNpbmNsdWRlIDxR
Q29yZUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KLSNpbmNsdWRlIDxRUW1s
QXBwbGljYXRpb25FbmdpbmU+Ci0jaW5jbHVkZSA8UVFtbENvbnRleHQ+Ci0jaW5jbHVkZSA8UVBy
b2Nlc3M+Ci0jaW5jbHVkZSA8UUZpbGU+Ci0jaW5jbHVkZSA8UVVybD4KLSNpbmNsdWRlIDxLTG9j
YWxpemVkU3RyaW5nPgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotewotICAg
IGlmIChhcmdjIDwgMikgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBRU3RyaW5n
IGphclBhdGggPSBRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KGFyZ3ZbMV0pOwotICAgIGlmIChqYXJQ
YXRoLnN0YXJ0c1dpdGgoUVN0cmluZ0xpdGVyYWwoImZpbGU6Ly8iKSkpIHsKLSAgICAgICAgamFy
UGF0aCA9IFFVcmwoamFyUGF0aCkudG9Mb2NhbEZpbGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoIVFG
aWxlOjpleGlzdHMoamFyUGF0aCkpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAg
UVN0cmluZ0xpc3QgamF2YUFyZ3M7Ci0gICAgaWYgKGFyZ2MgPiAyKSB7Ci0gICAgICAgIGZvciAo
aW50IGkgPSAyOyBpIDwgYXJnYzsgKytpKSB7Ci0gICAgICAgICAgICBqYXZhQXJncyA8PCBRU3Ry
aW5nOjpmcm9tTG9jYWw4Qml0KGFyZ3ZbaV0pOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgamF2YUFyZ3MgPDwgUVN0cmluZ0xpdGVyYWwoIi1qYXIiKSA8PCBqYXJQYXRoOwotICAg
IH0KLQotICAgIGludCBleGl0Q29kZTsKLSAgICBRU3RyaW5nIGVycm9yVGV4dDsKLQotICAgIHsK
LSAgICAgICAgUUNvcmVBcHBsaWNhdGlvbiBjb3JlQXBwKGFyZ2MsIGFyZ3YpOwotICAgICAgICBj
b3JlQXBwLnNldEFwcGxpY2F0aW9uTmFtZShRU3RyaW5nTGl0ZXJhbCgib3JnLmtkZS5ramFyIikp
OwotCi0gICAgICAgIFFQcm9jZXNzIGphdmE7Ci0gICAgICAgIFFCeXRlQXJyYXkgc3RkZXJyQnVm
ZmVyOwotCi0gICAgICAgIGphdmEuc2V0UHJvY2Vzc0NoYW5uZWxNb2RlKFFQcm9jZXNzOjpGb3J3
YXJkZWRPdXRwdXRDaGFubmVsKTsKLQotICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KCZqYXZhLCAm
UVByb2Nlc3M6OnJlYWR5UmVhZFN0YW5kYXJkRXJyb3IsIFsmXSgpIHsKLSAgICAgICAgICAgIHN0
ZGVyckJ1ZmZlciArPSBqYXZhLnJlYWRBbGxTdGFuZGFyZEVycm9yKCk7Ci0gICAgICAgIH0pOwot
Ci0gICAgICAgIGphdmEuc3RhcnQoUVN0cmluZ0xpdGVyYWwoIi9hcHAvamRrL2Jpbi9qYXZhIiks
IGphdmFBcmdzKTsKLQotICAgICAgICBpZiAoIWphdmEud2FpdEZvclN0YXJ0ZWQoKSkgewotICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLQotICAgICAgICBqYXZhLndhaXRGb3JGaW5p
c2hlZCgtMSk7Ci0KLSAgICAgICAgZXhpdENvZGUgPSBqYXZhLmV4aXRDb2RlKCk7Ci0gICAgICAg
IGVycm9yVGV4dCA9IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoc3RkZXJyQnVmZmVyKS50cmltbWVk
KCk7Ci0gICAgfQotCi0gICAgaWYgKGV4aXRDb2RlID09IDAgJiYgZXJyb3JUZXh0LmlzRW1wdHko
KSkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoZXJyb3JUZXh0LmlzRW1w
dHkoKSkgewotICAgICAgICBlcnJvclRleHQgPSBpMThuKCJKYXZhIGV4aXRlZCB3aXRoIGFuIGVy
cm9yIChleGl0IGNvZGUgJTEpLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZzo6
bnVtYmVyKGV4aXRDb2RlKSk7Ci0gICAgfQotCi0gICAgUUFwcGxpY2F0aW9uIGd1aUFwcChhcmdj
LCBhcmd2KTsKLSAgICBndWlBcHAuc2V0QXBwbGljYXRpb25OYW1lKFFTdHJpbmdMaXRlcmFsKCJv
cmcua2RlLmtqYXIiKSk7Ci0gICAgZ3VpQXBwLnNldERlc2t0b3BGaWxlTmFtZShRU3RyaW5nTGl0
ZXJhbCgib3JnLmtkZS5ramFyIikpOwotCi0gICAgS0xvY2FsaXplZFN0cmluZzo6c2V0QXBwbGlj
YXRpb25Eb21haW4oIm9yZy5rZGUua2phciIpOwotCi0gICAgUVFtbEFwcGxpY2F0aW9uRW5naW5l
IGVuZ2luZTsKLSAgICBlbmdpbmUucm9vdENvbnRleHQoKS0+c2V0Q29udGV4dFByb3BlcnR5KFFT
dHJpbmdMaXRlcmFsKCJlcnJvck1lc3NhZ2UiKSwgZXJyb3JUZXh0KTsKLSAgICBlbmdpbmUucm9v
dENvbnRleHQoKS0+c2V0Q29udGV4dE9iamVjdChuZXcgS0xvY2FsaXplZENvbnRleHQoJmVuZ2lu
ZSkpOwotICAgIGVuZ2luZS5sb2FkKFFVcmwoUVN0cmluZ0xpdGVyYWwoInFyYzovd2F0Y2hlci9F
cnJvckRpYWxvZy5xbWwiKSkpOwotCi0gICAgaWYgKGVuZ2luZS5yb290T2JqZWN0cygpLmlzRW1w
dHkoKSkgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZ3VpQXBwLmV4
ZWMoKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy93YXRjaGVyL3dhdGNoZXIucXJjIGIvc3JjL3dhdGNo
ZXIvd2F0Y2hlci5xcmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ZGEyMGUuLjAw
MDAwMDAKLS0tIGEvc3JjL3dhdGNoZXIvd2F0Y2hlci5xcmMKKysrIC9kZXYvbnVsbApAQCAtMSw4
ICswLDAgQEAKLTwhLS0gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSBPUiBH
UEwtMy4wLW9ubHkgT1IgTGljZW5zZVJlZi1LREUtQWNjZXB0ZWQtR1BMIC0tPgotPCEtLSBTUERY
LUZpbGVDb3B5cmlnaHRUZXh0OiAyMDI2IEhhZGkgQ2hva3IgPGhhZGljaG9rckBpY2xvdWQuY29t
PiAtLT4KLQotPFJDQyB2ZXJzaW9uPSIxLjAiPgotICAgIDxxcmVzb3VyY2UgcHJlZml4PSIvd2F0
Y2hlciI+Ci0gICAgICAgIDxmaWxlIGFsaWFzPSJFcnJvckRpYWxvZy5xbWwiPi4uL3FtbC9FcnJv
ckRpYWxvZy5xbWw8L2ZpbGU+Ci0gICAgPC9xcmVzb3VyY2U+Ci08L1JDQz4KZGlmZiAtLWdpdCBh
L3N0cmlwLWptb2RzLnNoIGIvc3RyaXAtam1vZHMuc2gKaW5kZXggNTQxYTJhZC4uNjY4YzFjYSAx
MDA2NDQKLS0tIGEvc3RyaXAtam1vZHMuc2gKKysrIGIvc3RyaXAtam1vZHMuc2gKQEAgLTUsMTIg
KzUsMTYgQEAKICMgRGlzY2FyZCBuYXRpdmUgZGVidWcgc3ltYm9scyBmcm9tIC9hcHAvamRrL2pt
b2RzLgogIwogCi1zZXQgLWUKK3NldCAtZXUKIAogSkRLPS9hcHAvamRrCiBKTU9EPSIkSkRLL2Jp
bi9qbW9kIgogTU9EVUxFUz0iJHsxOi1qYXZhLmJhc2V9IgogCittYigpIHsKKyAgICBhd2sgLXYg
a2I9IiQxIiAnQkVHSU4geyBwcmludGYgIiUuMWYiLCBrYiAvIDEwMjQgfScKK30KKwogY29tbWFu
ZCAtdiBvYmpjb3B5ID4vZGV2L251bGwgfHwgeyBlY2hvICJzdHJpcC1qbW9kczogb2JqY29weSBu
b3QgZm91bmQiOyBleGl0IDE7IH0KIFsgLWQgIiRKREsvam1vZHMiIF0gfHwgeyBlY2hvICJzdHJp
cC1qbW9kczogJEpESy9qbW9kcyBtaXNzaW5nIjsgZXhpdCAxOyB9CiBbIC14ICIkSk1PRCIgXSB8
fCB7IGVjaG8gInN0cmlwLWptb2RzOiAkSk1PRCBtaXNzaW5nIjsgZXhpdCAxOyB9CkBAIC0yMSw2
ICsyNSw3IEBAIHRyYXAgJ3JtIC1yZiAiJFdPUksiJyBFWElUCiBiZWZvcmU9JChkdSAtc2sgIiRK
REsvam1vZHMiIHwgY3V0IC1mMSkKIHRvdWNoZWRfbm9uX2Jhc2U9MAogCisjIHNoZWxsY2hlY2sg
ZGlzYWJsZT1TQzIwODYKIGZvciBuYW1lIGluICRNT0RVTEVTOyBkbwogICAgIGptPSIkSkRLL2pt
b2RzLyRuYW1lLmptb2QiCiAgICAgaWYgWyAhIC1mICIkam0iIF07IHRoZW4KQEAgLTY0LDIxICs2
OSwyMiBAQCBmb3IgbmFtZSBpbiAkTU9EVUxFUzsgZG8KICAgICAgICAgZXhpdCAxCiAgICAgZmkK
IAotICAgIHByaW50ZiAnc3RyaXAtam1vZHM6ICAgJS0yMnMgJTVzIE1CIC0+ICU1cyBNQlxuJyAi
JG5hbWUiIFwKLSAgICAgICAgIiQoKGtiIC8gMTAyNCkpIiAiJCgoICQoZHUgLWsgIiRqbSIgfCBj
dXQgLWYxKSAvIDEwMjQgKSkiCisgICAgcHJpbnRmICdzdHJpcC1qbW9kczogICAlLTIycyAlN3Mg
TUIgLT4gJTdzIE1CXG4nICIkbmFtZSIgXAorICAgICAgICAiJChtYiAiJGtiIikiICIkKG1iICIk
KGR1IC1rICIkam0iIHwgY3V0IC1mMSkiKSIKIGRvbmUKIAorIyBPbmx5IHJlYWNoYWJsZSB3aGVu
IHRoZSBjYWxsZXIgcGFzc2VkIG5vbi1iYXNlIG1vZHVsZXMuCiBpZiBbICIkdG91Y2hlZF9ub25f
YmFzZSIgLWVxIDEgXTsgdGhlbgogICAgIGVjaG8gInN0cmlwLWptb2RzOiByZWNvbXB1dGluZyBy
ZWNvcmRlZCBtb2R1bGUgaGFzaGVzIgogICAgIGlmICEgIiRKTU9EIiBoYXNoIC0tbW9kdWxlLXBh
dGggIiRKREsvam1vZHMiIC0taGFzaC1tb2R1bGVzICcuKic7IHRoZW4KLSAgICAgICAgZWNobyAi
c3RyaXAtam1vZHM6IEVSUk9SOiBqbW9kIGhhc2ggZmFpbGVkIC0tIHNlZSB0aGUgbm90ZSBhdCB0
aGUgdG9wIgotICAgICAgICBlY2hvICJzdHJpcC1qbW9kczogICAgICAgIG9mIHRoaXMgc2NyaXB0
OyByZXJ1biB3aXRoIGphdmEuYmFzZSBvbmx5LiIKKyAgICAgICAgZWNobyAic3RyaXAtam1vZHM6
IEVSUk9SOiBqbW9kIGhhc2ggZmFpbGVkOyByZXJ1biB3aXRoIGphdmEuYmFzZSBvbmx5LCIKKyAg
ICAgICAgZWNobyAic3RyaXAtam1vZHM6ICAgICAgICB3aGljaCBubyBvdGhlciBtb2R1bGUgcmVj
b3JkcyBhIGhhc2ggb2YuIgogICAgICAgICBleGl0IDEKICAgICBmaQogZmkKIAogYWZ0ZXI9JChk
dSAtc2sgIiRKREsvam1vZHMiIHwgY3V0IC1mMSkKLWVjaG8gInN0cmlwLWptb2RzOiB0b3RhbCAk
KChiZWZvcmUgLyAxMDI0KSkgTUIgLT4gJCgoYWZ0ZXIgLyAxMDI0KSkgTUIiCitlY2hvICJzdHJp
cC1qbW9kczogdG90YWwgJChtYiAiJGJlZm9yZSIpIE1CIC0+ICQobWIgIiRhZnRlciIpIE1CIgog
CiAjIFNtb2tlIHRlc3QKIGVjaG8gInN0cmlwLWptb2RzOiB2ZXJpZnlpbmcgamxpbmsgYWdhaW5z
dCB0aGUgcmV3cml0dGVuIGptb2RzIgo=