r9913 - in apps/gobi/trunk/code: Global Page User

[email protected] Wed, 16 Sep 2009 23:08:59 +0200 (CEST)
Newsgroups gmane.comp.java.helma.cvs
Message-ID <20090916210859.36BB43D0E3@mia>
QXV0aG9yOiBoYW5uZXMKRGF0ZTogMjAwOS0wOS0xNiAyMzowODo1OSArMDIwMCAoV2VkLCAxNiBT
ZXAgMjAwOSkKTmV3IFJldmlzaW9uOiA5OTEzCgpBZGRlZDoKICAgYXBwcy9nb2JpL3RydW5rL2Nv
ZGUvVXNlci9wYXNzd29yZC5za2luCk1vZGlmaWVkOgogICBhcHBzL2dvYmkvdHJ1bmsvY29kZS9H
bG9iYWwvRGlmZi5qcwogICBhcHBzL2dvYmkvdHJ1bmsvY29kZS9HbG9iYWwvR2xvYmFsLmpzCiAg
IGFwcHMvZ29iaS90cnVuay9jb2RlL0dsb2JhbC9NZXNzYWdlcy5qcwogICBhcHBzL2dvYmkvdHJ1
bmsvY29kZS9QYWdlL1BhZ2VBY3Rpb25zLmpzCiAgIGFwcHMvZ29iaS90cnVuay9jb2RlL1BhZ2Uv
UGFnZUNvcmUuanMKICAgYXBwcy9nb2JpL3RydW5rL2NvZGUvVXNlci9Vc2VyLmpzCiAgIGFwcHMv
Z29iaS90cnVuay9jb2RlL1VzZXIvYm9keS5za2luCiAgIGFwcHMvZ29iaS90cnVuay9jb2RlL1Vz
ZXIvY3JlYXRlLnNraW4KICAgYXBwcy9nb2JpL3RydW5rL2NvZGUvVXNlci9lZGl0LnNraW4KTG9n
OgpEbyBub3Qgc3RvcmUgY2xlYXItdGV4dCBwYXNzd29yZHMsIGFuZCBtYWtlIFVzZXIgcGFnZSBl
ZGl0YWJsZSBhbmQgYWRkIHBhc3N3b3JkIGNoYW5nZSBhY3Rpb24uCgpEZXRhaWxzIGF0IGh0dHA6
Ly9kZXYuaGVsbWEub3JnL3RyYWMvaGVsbWEvY2hhbmdlc2V0Lzk5MTMKCk1vZGlmaWVkOiBhcHBz
L2dvYmkvdHJ1bmsvY29kZS9HbG9iYWwvRGlmZi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcHBzL2dvYmkv
dHJ1bmsvY29kZS9HbG9iYWwvRGlmZi5qcwkyMDA5LTA5LTE2IDE1OjQxOjQwIFVUQyAocmV2IDk5
MTIpCisrKyBhcHBzL2dvYmkvdHJ1bmsvY29kZS9HbG9iYWwvRGlmZi5qcwkyMDA5LTA5LTE2IDIx
OjA4OjU5IFVUQyAocmV2IDk5MTMpCkBAIC0zMTAsNyArMzEwLDggQEAKICAgICB2YXIgZGlmZiA9
IHtyZW1vdmVkOiBbXSwgY2hhbmdlZDogW10sIGFkZGVkOiBbXX07CiAgICAgdmFyIHByb3BuYW1l
ID0ge307CiAgICAgZm9yICh2YXIgaSBpbiBvYmoxKSB7Ci0gICAgICAgIGlmIChvYmoxW2ldID09
IG9iajJbaV0pCisgICAgICAgIC8vIEhBQ0sgZXhjbHVkZSBwYXNzd29yZCByZWxhdGVkIHN0dWZm
CisgICAgICAgIGlmIChTdHJpbmcoaSkuaW5kZXhPZigicGFzc3dvcmQiKSA9PSAwIHx8IG9iajFb
aV0gPT0gb2JqMltpXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAob2JqMVtp
XSkgewogICAgICAgICAgICAgaWYgKCFvYmoyW2ldKQpAQCAtMzIwLDcgKzMyMSw3IEBACiAgICAg
ICAgIH0KICAgICB9CiAgICAgZm9yICh2YXIgaSBpbiBvYmoyKSB7Ci0gICAgICAgIGlmIChvYmox
W2ldID09IG9iajJbaV0pCisgICAgICAgIGlmIChTdHJpbmcoaSkuaW5kZXhPZigicGFzc3dvcmQi
KSA9PSAwIHx8IG9iajFbaV0gPT0gb2JqMltpXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBpZiAoIW9iajFbaV0pCiAgICAgICAgICAgICBkaWZmLmFkZGVkLnB1c2goaSk7CgpNb2Rp
ZmllZDogYXBwcy9nb2JpL3RydW5rL2NvZGUvR2xvYmFsL0dsb2JhbC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBhcHBzL2dvYmkvdHJ1bmsvY29kZS9HbG9iYWwvR2xvYmFsLmpzCTIwMDktMDktMTYgMTU6NDE6
NDAgVVRDIChyZXYgOTkxMikKKysrIGFwcHMvZ29iaS90cnVuay9jb2RlL0dsb2JhbC9HbG9iYWwu
anMJMjAwOS0wOS0xNiAyMTowODo1OSBVVEMgKHJldiA5OTEzKQpAQCAtMzgxLDE2ICszODEsMTUg
QEAKIC8qKgogICogU2V0IGF1dG8tbG9naW4gY29va2llCiAgKi8KLWZ1bmN0aW9uIHNldEF1dG9M
b2dpbkNvb2tpZShuYW1lLCBwdykgewotICAgIHZhciBjb29raWUgPSBuYW1lKyIvIjsKLSAgICBj
b29raWUgKz0gUGFja2FnZXMuaGVsbWEudXRpbC5NRDVFbmNvZGVyLmVuY29kZShwdyArIHJlcS5k
YXRhLmh0dHBfcmVtb3RlaG9zdCk7Ci0gICAgcmVzLnNldENvb2tpZSgiZ29iaV9hdXRvbG9naW4i
LCBjb29raWUsIDkwKTsKK2Z1bmN0aW9uIHNldEF1dG9Mb2dpbkNvb2tpZShuYW1lLCB0b2tlbikg
eworICAgIHZhciBjb29raWUgPSBuYW1lICsgIi8iICsgKHRva2VuICsgcmVxLmRhdGEuaHR0cF9y
ZW1vdGVob3N0KS5tZDUoKTsKKyAgICByZXMuc2V0Q29va2llKCJnb2JpX2F1dG9sb2dpbiIsIGNv
b2tpZSwgMzY1KTsKIH0KIAogLyoqCiAgKiBVbnNldCBhdXRvLWxvZ2luIGNvb2tpZQogICovCi1m
dW5jdGlvbiB1bnNldEF1dG9Mb2dpbkNvb2tpZShuYW1lLCBwdykgeworZnVuY3Rpb24gdW5zZXRB
dXRvTG9naW5Db29raWUoKSB7CiAgICAgcmVzLnVuc2V0Q29va2llKCJnb2JpX2F1dG9sb2dpbiIp
OwogfQogCkBAIC0zOTgsMTYgKzM5NywxNiBAQAogICogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNl
ciBzaG91bGQgYmUgbG9nZ2VkIGluIGJ5IGF1dG8tbG9naW4gY29va2llCiAgKi8KIGZ1bmN0aW9u
IHRyeUF1dG9Mb2dpbigpIHsKLSAgICBpZiAoc2Vzc2lvbi51c2VyIHx8ICFyZXEuZGF0YS5nb2Jp
X2F1dG9sb2dpbikgCisgICAgaWYgKHNlc3Npb24udXNlciB8fCAhcmVxLmRhdGEuZ29iaV9hdXRv
bG9naW4pCiAgICAgICAgIHJldHVybjsKICAgICB2YXIgY29va2llID0gcmVxLmRhdGEuZ29iaV9h
dXRvbG9naW4uc3BsaXQoIi8iKTsKICAgICB2YXIgdXNlciA9IGdldFVzZXIoY29va2llWzBdKTsK
ICAgICBpZiAoIXVzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB2YXIgcHcgPSB1c2VyLmdldEZv
cm1EYXRhKCkucGFzc3dvcmQ7Ci0gICAgaWYgKHB3ID09IG51bGwpCisgICAgdmFyIGZvcm1kYXRh
ID0gdXNlci5nZXRGb3JtRGF0YSgpOworICAgIGlmICghZm9ybWRhdGEucGFzc3dvcmQgJiYgIWZv
cm1kYXRhLnBhc3N3b3JkX2hhc2gpCiAgICAgICAgIHJldHVybjsKLSAgICB2YXIgaGFzaCA9IFBh
Y2thZ2VzLmhlbG1hLnV0aWwuTUQ1RW5jb2Rlci5lbmNvZGUocHcgKyByZXEuZGF0YS5odHRwX3Jl
bW90ZWhvc3QpCisgICAgdmFyIGhhc2ggPSAoKGZvcm1kYXRhLnBhc3N3b3JkX2hhc2ggfHwgZm9y
bWRhdGFfcGFzc3dvcmQpICsgcmVxLmRhdGEuaHR0cF9yZW1vdGVob3N0KS5tZDUoKTsKICAgICBp
ZiAoaGFzaCA9PSBjb29raWVbMV0pIHsKICAgICAgICAgcmVzLm1lc3NhZ2UgPSBtc2coImxvZ2lu
X3N1Y2NlZWRlZCIsIHJvb3QubmFtZSwgdXNlci5uYW1lKTsKICAgICAgICAgc2Vzc2lvbi5sb2dp
bih1c2VyKTsKCk1vZGlmaWVkOiBhcHBzL2dvYmkvdHJ1bmsvY29kZS9HbG9iYWwvTWVzc2FnZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gYXBwcy9nb2JpL3RydW5rL2NvZGUvR2xvYmFsL01lc3NhZ2VzLmpz
CTIwMDktMDktMTYgMTU6NDE6NDAgVVRDIChyZXYgOTkxMikKKysrIGFwcHMvZ29iaS90cnVuay9j
b2RlL0dsb2JhbC9NZXNzYWdlcy5qcwkyMDA5LTA5LTE2IDIxOjA4OjU5IFVUQyAocmV2IDk5MTMp
CkBAIC0xOSw2ICsxOSw3IEBACiAgICAgZWRpdF9idXR0b246ICJTYXZlIFBhZ2UiLAogICAgIGVk
aXRfY29uZmlybTogIllvdXIgY2hhbmdlcyB0byB0aGUgcGFnZSBoYXZlIGJlZW4gc2F2ZWQhIiwK
ICAgICBlZGl0X2NvbnRpbnVlOiAiQ29udGludWUgRWRpdGluZyIsCisgICAgZWRpdF92YWxpZGF0
aW9uX2Vycm9yOiAiVGhlcmUgd2FzIGEgcHJvYmxlbSB3aXRoIHlvdXIgaW5wdXQiLAogICAgIGxv
Z2luX3BsZWFzZTogIlBsZWFzZSBlbnRlciB5b3VyIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQiLAog
ICAgIGxvZ2luX2ZhaWxlZDogIkxvZ2luIGZhaWxlZC4gUGxlYXNlIGNoZWNrIHlvdXIgaW5wdXQg
YW5kIHRyeSBhZ2FpbiEiLAogICAgIGxvZ2luX3N1Y2NlZWRlZDogIldlbGNvbWUgdG8gICQxLCAk
MiEiLApAQCAtMjksOSArMzAsMTAgQEAKICAgICByZWdpc3Rlcl9wbGVhc2U6ICJGaWxsIGluIHRo
ZSBmaWVsZHMgYmVsb3cgdG8gcmVnaXN0ZXIgYSBuZXcgVXNlcjoiLAogICAgIHJlZ2lzdGVyX3Vz
ZXJfZXhpc3RzOiAiU29ycnksIHVzZXIgbmFtZSAnJDEnIGlzIGFscmVhZHkgdGFrZW4uIFBsZWFz
ZSBjaG9vc2UgYSBkaWZmZXJlbnQgb25lISIsCiAgICAgcmVnaXN0ZXJfZW50ZXJfbmFtZTogIlBs
ZWFzZSBlbnRlciBhIHVzZXIgbmFtZSEiLAotICAgIHJlZ2lzdGVyX3Bhc3N3b3Jkc19kb250X21h
dGNoOiAiVGhlIHR3byBwYXNzd29yZHMgeW91IGVudGVyZWQgZG9uJ3QgbWF0Y2ghIiwKICAgICBy
ZWdpc3Rlcl9jb25maXJtOiAiVXNlciAkMSBoYXMgYmVlbiBjcmVhdGVkLiAiLAogICAgIHJlZ2lz
dGVyX3dlbGNvbWU6ICJXZWxjb21lIG9uIGJvYXJkISIsCisgICAgcGFzc3dvcmRfdmFsaWRhdGlv
bl9lcnJvcjogIlBhc3N3b3JkcyBkb24ndCBtYXRjaCEiLAorICAgIHBhc3N3b3JkX2NoYW5nZV9j
b25maXJtOiAiUGFzc3dvcmQgaGFzIGJlZW4gY2hhbmdlZCIsCiAgICAgaGlzdG9yeV9ub192ZXJz
aW9uczogIk5vIHZlcnNpb25zIHRvIGNvbXBhcmUhIiwKICAgICBoaXN0b3J5X3ZlcnNpb25faGVh
ZGVyOiAiPGg0PjxhIGhyZWY9JyQxJz5WZXJzaW9uICQyPC9hPiBieSAkMyBvbiAkNDwvaDQ+IiwK
ICAgICBoaXN0b3J5X3ZlcnNpb25faGVhZGVyXzI6ICI8aDQ+VmVyc2lvbiAkMSBieSAkMiBvbiAk
MzwvaDQ+IiwKQEAgLTg5LDYgKzkxLDEwIEBACiAgICAgcHJvcGVydHlfYWRkZWQ6ICJTZXQgPHNw
YW4gY2xhc3M9J2RpZmZwcm9wbmFtZSc+JDE8L3NwYW4+IHRvIDxzcGFuIGNsYXNzPSdkaWZmYWRk
ZWQnPiQyPC9zcGFuPiIsCiAgICAgcHJvcGVydHlfcmVtb3ZlZDogIkRlbGV0ZWQgPHNwYW4gY2xh
c3M9J2RpZmZwcm9wbmFtZSc+JDE8L3NwYW4+IiwKICAgICBwcm9wZXJ0eV9jaGFuZ2VkOiAiQ2hh
bmdlZCA8c3BhbiBjbGFzcz0nZGlmZnByb3BuYW1lJz4kMTwvc3Bhbj4gdG8gPHNwYW4gY2xhc3M9
J2RpZmZhZGRlZCc+JDM8L3NwYW4+IiwKKyAgICBhY3Rpb25fbWFpbjogIlBhZ2UiLAorICAgIGFj
dGlvbl9lZGl0OiAiRWRpdCIsCisgICAgYWN0aW9uX2hpc3Rvcnk6ICJIaXN0b3J5IiwKKyAgICAv
LyBldGMuLi4KICAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7cmV0dXJuICJNRVNTQUdFUyI7fQog
fQogCkBAIC0xMTIsNyArMTE4LDcgQEAKICAgICBwcmV2aWV3X21lc3NhZ2U6ICJLbGlja2VuIFNp
ZSAnU2VpdGUgQW5sZWdlbicgdW0gZGllIFNlaXRlIHp1IHNwZWljaGVybiEiLAogICAgIGVkaXRf
YnV0dG9uOiAiU2VpdGUgU3BlaWNoZXJuIiwKICAgICBlZGl0X2NvbmZpcm06ICJJaHJlIMOEbmRl
cnVuZ2VuIGFuIGRlciBTZWl0ZSB3dXJkZW4gZ2VzcGVpY2hlcnQhIiwKLSAgICBlZGl0X2NvbnRp
bnVlOiAiV2VpdGVyIGJlYXJiZWl0ZW4iLCAgIAorICAgIGVkaXRfY29udGludWU6ICJXZWl0ZXIg
YmVhcmJlaXRlbiIsCiAgICAgbG9naW5fcGxlYXNlOiAiR2ViZW4gU2llIGJpdHRlIEJlbnV0emVy
bmFtZSB1bmQgUGFzc3dvcnQgZWluISIsCiAgICAgbG9naW5fZmFpbGVkOiAiQW5tZWxkdW5nIGZl
aGxnZXNjaGxhZ2VuLiBCaXR0ZSDDnGJlcnByw7xmZW4gU2llIElocmUgRWluZ2FiZW4hIiwKICAg
ICBsb2dpbl9zdWNjZWVkZWQ6ICJXaWxsa29tbWVuIGJlaSAkMSwgJDIhIiwKQEAgLTEyMyw5ICsx
MjksMTAgQEAKICAgICByZWdpc3Rlcl9wbGVhc2U6ICJOZXVlbiBCZW51dHplciBBbmxlZ2VuIiwK
ICAgICByZWdpc3Rlcl91c2VyX2V4aXN0czogIkVpbiBCZW51dHplciBuYW1lbnMgJyQxJyBleGlz
dGllcnQgc2Nob24uIEJpdHRlIHfDpGhsZW4gU2llIGVpbmVuIGFuZGVyZW4gTmFtZW4hIiwKICAg
ICByZWdpc3Rlcl9lbnRlcl9uYW1lOiAiR2ViZW4gU2llIGJpdHRlIGVpbmVuIE5hbWVuIGVpbiEi
LAotICAgIHJlZ2lzdGVyX3Bhc3N3b3Jkc19kb250X21hdGNoOiAiRGllIGJlaWRlbiBQYXNzd8O2
cnRlciBzdGltbWVuIG5pY2h0IMO8YmVyZWluISIsCiAgICAgcmVnaXN0ZXJfY29uZmlybTogIkJl
bnV0emVyICQxIHd1cmRlIGFuZ2VsZWd0LiAiLAogICAgIHJlZ2lzdGVyX3dlbGNvbWU6ICJXaWxs
a29tbWVuIGFuIEJvcmQhIiwKKyAgICBwYXNzd29yZF92YWxpZGF0aW9uX2Vycm9yOiAiRGllIFBh
c3N3w7ZydGVyIHN0aW1tZW4gbmljaHQgw7xiZXJlaW4hIiwKKyAgICBwYXNzd29yZF9jaGFuZ2Vf
Y29uZmlybTogIkRhcyBQYXNzd29ydCB3dXJkZSBnZcOkbmRlcnQiLAogICAgIGhpc3Rvcnlfbm9f
dmVyc2lvbnM6ICJLZWluZSBWZXJzaW9uc2RhdGVuIHZvcmhhbmRlbiEiLAogICAgIGhpc3Rvcnlf
dmVyc2lvbl9oZWFkZXI6ICI8aDQ+PGEgaHJlZj0nJDEnPlZlcnNpb24gJDI8L2E+IHZvbiAkMyBh
bSAkNDwvaDQ+IiwKICAgICBoaXN0b3J5X3ZlcnNpb25faGVhZGVyXzI6ICI8aDQ+VmVyc2lvbiAk
MSB2b24gJDIgYW0gJDM8L2g0PiIsCgpNb2RpZmllZDogYXBwcy9nb2JpL3RydW5rL2NvZGUvUGFn
ZS9QYWdlQWN0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcHBzL2dvYmkvdHJ1bmsvY29kZS9QYWdl
L1BhZ2VBY3Rpb25zLmpzCTIwMDktMDktMTYgMTU6NDE6NDAgVVRDIChyZXYgOTkxMikKKysrIGFw
cHMvZ29iaS90cnVuay9jb2RlL1BhZ2UvUGFnZUFjdGlvbnMuanMJMjAwOS0wOS0xNiAyMTowODo1
OSBVVEMgKHJldiA5OTEzKQpAQCAtMjY3LDYgKzI2NywxNCBAQAogICAgICAgICAgICAgdmFyIG9s
ZEJvZHkgPSB0aGlzLmJvZHk7CiAgICAgICAgICAgICB2YXIgb2xkRm9ybWRhdGEgPSB0aGlzLmdl
dEZvcm1EYXRhKCkuY2xvbmUoKTsKICAgICAgICAgICAgIHRoaXMucmVhZEVkaXRGb3JtKHRydWUp
OworICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmVycm9ycykgeworICAgICAgICAgICAgICAgIHJl
cy5tZXNzYWdlID0gbXNnKCJlZGl0X3ZhbGlkYXRpb25fZXJyb3IiKTsKKyAgICAgICAgICAgICAg
ICByZXMuZGF0YS5ib2R5ID0gdGhpcy5yZW5kZXJTa2luQXNTdHJpbmcoImVkaXQiKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLnJlbmRlclNraW4oInBhZ2UiKTsKKyAgICAgICAgICAgICAgICByZXMu
YWJvcnQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLmludmFsaWRhdGUoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB0aGlzLm1vZGlmaWVyID0g
c2Vzc2lvbi51c2VyOwogICAgICAgICAgICAgdGhpcy5tb2RpZnl0aW1lID0gbmV3IERhdGUoKTsK
ICAgICAgICAgICAgIC8vIGNyZWF0ZSB2ZXJzaW9uIGluZm8KQEAgLTU4OSw5ICs1OTcsMTEgQEAK
ICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVxLmRhdGEubG9naW4pIHsKICAgICAgICAgICAg
IHZhciB1c2VyID0gdXNlcnMuZ2V0KHJlcS5kYXRhLm5hbWUpOwotICAgICAgICAgICAgaWYgKHVz
ZXIgJiYgdXNlci5nZXRGb3JtRGF0YSgpLnBhc3N3b3JkID09IHJlcS5kYXRhLnBhc3N3b3JkKSB7
CisgICAgICAgICAgICB2YXIgZm9ybWRhdGEgPSB1c2VyICYmIHVzZXIuZ2V0Rm9ybURhdGEoKTsK
KyAgICAgICAgICAgIGlmIChmb3JtZGF0YSAmJiAoZm9ybWRhdGEucGFzc3dvcmQgPT0gcmVxLmRh
dGEucGFzc3dvcmQgfHwKKyAgICAgICAgICAgICAgICAgICAgKGZvcm1kYXRhLnBhc3N3b3JkX3Nh
bHQgKyByZXEuZGF0YS5wYXNzd29yZCkubWQ1KCkgPT0gZm9ybWRhdGEucGFzc3dvcmRfaGFzaCkp
IHsKICAgICAgICAgICAgICAgICBzZXNzaW9uLmxvZ2luKHVzZXIpOwotICAgICAgICAgICAgICAg
IHNldEF1dG9Mb2dpbkNvb2tpZSh1c2VyLm5hbWUsIHJlcS5kYXRhLnBhc3N3b3JkKTsKKyAgICAg
ICAgICAgICAgICBzZXRBdXRvTG9naW5Db29raWUodXNlci5uYW1lLCBmb3JtZGF0YS5wYXNzd29y
ZF9oYXNoIHx8IGZvcm1kYXRhLnBhc3N3b3JkKTsKICAgICAgICAgICAgICAgICByZXMubWVzc2Fn
ZSA9IG1zZygibG9naW5fc3VjY2VlZGVkIiwgcm9vdC5uYW1lLCB1c2VyLm5hbWUpOwogICAgICAg
ICAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNlc3Npb24uZGF0YS5sYXN0TG9jYXRpb247CiAgICAg
ICAgICAgICAgICAgc2Vzc2lvbi5kYXRhLmxhc3RMb2NhdGlvbiA9IG51bGw7CkBAIC02MDUsNyAr
NjE1LDcgQEAKIAogICAgICAgICByZXMucHVzaCgpOwogICAgICAgICBIdG1sLmZvcm0oe21ldGhv
ZDogInBvc3QiLCBhY3Rpb246IHRoaXMuaHJlZigibG9naW4iKX0pOwotICAgICAgICByZXMud3Jp
dGUoIjxwPjxiPiIrbXNnKCJsb2dpbl9wbGVhc2UiKSsiPC9iPjwvcD4iKTsKKyAgICAgICAgcmVz
LndyaXRlKCI8aDM+IiArIG1zZygibG9naW5fcGxlYXNlIikgKyAiPC9oMz4iKTsKICAgICAgICAg
dmFyIHRhYmxlID0gbmV3IEh0bWwuVGFibGVXcml0ZXIoMiwge3RkOiB7c3R5bGU6ICJwYWRkaW5n
LWJvdHRvbTogNnB4OyJ9fSk7CiAgICAgICAgIHRhYmxlLndyaXRlKG1zZygibG9naW5fdXNlcm5h
bWUiKSArICI6ICIpOwogICAgICAgICB0YWJsZS53cml0ZShIdG1sLklucHV0KHtuYW1lOiAibmFt
ZSIsIHZhbHVlOiByZXEuZGF0YS5uYW1lfSkpOwpAQCAtNjUxLDI4ICs2NjEsMjcgQEAKICAgICAg
ICAgaWYgKG5hbWUgJiYgbmFtZS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICBpZiAodXNlcnMu
Z2V0KG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgcmVzLm1lc3NhZ2UgPSBtc2coInJlZ2lzdGVy
X3VzZXJfZXhpc3RzIiwgbmFtZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXEuZGF0YS5m
b3JtZGF0YSB8fAotICAgICAgICAgICAgICAgICAgICAgICByZXEuZGF0YS5mb3JtZGF0YS5wYXNz
d29yZCAhPSByZXEuZGF0YS5mb3JtZGF0YS5wYXNzd29yZF8yKSB7Ci0gICAgICAgICAgICAgICAg
cmVzLm1lc3NhZ2UgPSBtc2coInJlZ2lzdGVyX3Bhc3N3b3Jkc19kb250X21hdGNoIik7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGl0LmNyZWF0b3IgPSBpdC5tb2RpZmll
ciA9IGl0OwotICAgICAgICAgICAgICAgIGl0LmNyZWF0ZXRpbWUgPSBpdC5tb2RpZnl0aW1lID0g
bmV3IERhdGUoKTsKLSAgICAgICAgICAgICAgICB1c2Vycy5hZGRDaGlsZFBhZ2UoaXQpOwogICAg
ICAgICAgICAgICAgIGl0LnJlYWRFZGl0Rm9ybSh0cnVlKTsKLSAgICAgICAgICAgICAgICByZXMu
bWVzc2FnZSA9IG1zZygicmVnaXN0ZXJfY29uZmlybSIsIGl0Lm5hbWUpOwotICAgICAgICAgICAg
ICAgIHVzZXJzLmNoaWxkQ3JlYXRlZChpdCk7Ci0gICAgICAgICAgICAgICAgcGFnZUNyZWF0ZWQo
aXQpOwotICAgICAgICAgICAgICAgIC8vIGlmIGZpcnN0IHVzZXIsIG1ha2UgaXQgYWRtaW4KLSAg
ICAgICAgICAgICAgICBpZiAodXNlcnMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaXQuYWRkTGluaygic3lzdGVtOmFkbWluIiwgIm91dCIsIHJvb3QpOworICAgICAgICAgICAg
ICAgIGlmICghcmVzLmRhdGEuZXJyb3JzKSB7CisgICAgICAgICAgICAgICAgICAgIGl0LmNyZWF0
b3IgPSBpdC5tb2RpZmllciA9IGl0OworICAgICAgICAgICAgICAgICAgICBpdC5jcmVhdGV0aW1l
ID0gaXQubW9kaWZ5dGltZSA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIHVzZXJz
LmFkZENoaWxkUGFnZShpdCk7CisgICAgICAgICAgICAgICAgICAgIHJlcy5tZXNzYWdlID0gbXNn
KCJyZWdpc3Rlcl9jb25maXJtIiwgaXQubmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHVzZXJz
LmNoaWxkQ3JlYXRlZChpdCk7CisgICAgICAgICAgICAgICAgICAgIHBhZ2VDcmVhdGVkKGl0KTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gaWYgZmlyc3QgdXNlciwgbWFrZSBpdCBhZG1pbgorICAg
ICAgICAgICAgICAgICAgICBpZiAodXNlcnMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGl0LmFkZExpbmsoInN5c3RlbTphZG1pbiIsICJvdXQiLCByb290KTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBpZiBjdXJyZW50IHVzZXIg
aXMgbm90IGxvZ2dlZCBpbiwgbG9nIGluIGFzIG5ldyB1c2VyCisgICAgICAgICAgICAgICAgICAg
IGlmICghc2Vzc2lvbi51c2VyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmxv
Z2luKGl0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEF1dG9Mb2dpbkNvb2tpZShpdC5u
YW1lLCByZXEuZGF0YS5wYXNzd29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXMubWVz
c2FnZSArPSBtc2coInJlZ2lzdGVyX3dlbGNvbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICByZXMucmVkaXJlY3QodGhpcy5ocmVmKCkpOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBpZiBjdXJyZW50IHVzZXIgaXMgbm90IGxvZ2dl
ZCBpbiwgbG9nIGluIGFzIG5ldyB1c2VyCi0gICAgICAgICAgICAgICAgaWYgKCFzZXNzaW9uLnVz
ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5sb2dpbihpdCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHNldEF1dG9Mb2dpbkNvb2tpZShpdC5uYW1lLCByZXEuZGF0YS5wYXNzd29yZCk7
Ci0gICAgICAgICAgICAgICAgICAgIHJlcy5tZXNzYWdlICs9IG1zZygicmVnaXN0ZXJfd2VsY29t
ZSIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXMucmVkaXJlY3QodGhp
cy5ocmVmKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
cmVzLm1lc3NhZ2UgPSBtc2coInJlZ2lzdGVyX2VudGVyX25hbWUiKTsKQEAgLTY4MSw3ICs2OTAs
NyBAQAogICAgIGlmIChyZXEuaXNQb3N0KCkpIHsKICAgICAgICAgaXQucmVhZEVkaXRGb3JtKGZh
bHNlKTsKICAgICB9Ci0gICAgcmVzLmRhdGEuYm9keSA9ICI8aDQ+Iittc2coInJlZ2lzdGVyX3Bs
ZWFzZSIpKyI8L2g0PiI7CisgICAgcmVzLmRhdGEuYm9keSA9ICI8aDM+IiArIG1zZygicmVnaXN0
ZXJfcGxlYXNlIikgKyAiPC9oMz4iOwogICAgIHJlcy5kYXRhLmJvZHkgKz0gaXQucmVuZGVyU2tp
bkFzU3RyaW5nKCJjcmVhdGUiKTsKICAgICB0aGlzLnJlbmRlclNraW4oInBhZ2UiKTsKIH0KCk1v
ZGlmaWVkOiBhcHBzL2dvYmkvdHJ1bmsvY29kZS9QYWdlL1BhZ2VDb3JlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGFwcHMvZ29iaS90cnVuay9jb2RlL1BhZ2UvUGFnZUNvcmUuanMJMjAwOS0wOS0xNiAxNTo0
MTo0MCBVVEMgKHJldiA5OTEyKQorKysgYXBwcy9nb2JpL3RydW5rL2NvZGUvUGFnZS9QYWdlQ29y
ZS5qcwkyMDA5LTA5LTE2IDIxOjA4OjU5IFVUQyAocmV2IDk5MTMpCkBAIC04MzYsMzIgKzgzNiwz
OSBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHZhciBsYWJlbCA9IHBhcmFt
ICYmIHBhcmFtLmxhYmVsICE9IG51bGwgPyBwYXJhbS5sYWJlbCA6IGZpZWxkLmxhYmVsOwogICAg
IHZhciBzaXplID0gcGFyYW0gJiYgcGFyYW0uc2l6ZSAhPSBudWxsID8gcGFyYW0uc2l6ZSA6IDQw
OwogICAgIHZhciBuYW1lID0gImZvcm1kYXRhWyIgKyBmaWVsZC5uYW1lICsgIl0iOwotICAgIAor
CisgICAgZnVuY3Rpb24gd3JpdGVMYWJlbCgpIHsKKyAgICAgICAgdmFyIGxhYmVsID0gcGFyYW0g
JiYgcGFyYW0ubGFiZWwgIT0gbnVsbCA/IHBhcmFtLmxhYmVsIDogZmllbGQubGFiZWw7CisgICAg
ICAgIHJlcy53cml0ZSgiPHAgc3R5bGU9XCJjbGVhcjogYm90aDtcIj4iKTsKKyAgICAgICAgcmVz
LndyaXRlKCI8ZGl2PiIpCisgICAgICAgIHJlcy53cml0ZShsYWJlbCk7CisgICAgICAgIHJlcy53
cml0ZWxuKCI8L2Rpdj4iKTsKKyAgICAgICAgdmFyIGVycm9yID0gcmVzLmRhdGEuZXJyb3JzID8g
cmVzLmRhdGEuZXJyb3JzW2ZpZWxkLm5hbWVdIDogbnVsbDsKKyAgICAgICAgaWYgKGVycm9yKSB7
CisgICAgICAgICAgICByZXMud3JpdGUoIjxkaXYgY2xhc3M9J3ZhbGlkYXRpb25FcnJvcicgc3R5
bGU9J2NvbG9yOiByZWQ7IGZvbnQtd2VpZ2h0OiBib2xkOyc+Iik7CisgICAgICAgICAgICByZXMu
d3JpdGUoZXJyb3IpOworICAgICAgICAgICAgcmVzLndyaXRlKCI8L2Rpdj4iKTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIHN3aXRjaCAoZmllbGQuZWRpdG9yKSB7CiAgICAgICAgIGNhc2UgSElE
REVOOgogICAgICAgICAgICAgSHRtbC5oaWRkZW4oe25hbWU6IG5hbWUsIHZhbHVlOiBwcm9wfSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJTlBVVDoKLSAgICAgICAgICAgIHJl
cy53cml0ZSgiPHAgc3R5bGU9XCJjbGVhcjogYm90aDtcIj4iKTsKLSAgICAgICAgICAgIHJlcy53
cml0ZShsYWJlbCk7Ci0gICAgICAgICAgICByZXMud3JpdGVsbigiPGJyIC8+Iik7CisgICAgICAg
ICAgICB3cml0ZUxhYmVsKCk7CiAgICAgICAgICAgICBIdG1sLmlucHV0KHtuYW1lOiBuYW1lLCB2
YWx1ZTogcHJvcCwgc2l6ZTogc2l6ZX0pOwogICAgICAgICAgICAgcmVzLndyaXRlKCI8L3A+Iik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQQVNTV09SRDoKLSAgICAgICAgICAg
IHJlcy53cml0ZSgiPHAgc3R5bGU9XCJjbGVhcjogYm90aDtcIj4iKTsKLSAgICAgICAgICAgIHJl
cy53cml0ZShsYWJlbCk7Ci0gICAgICAgICAgICByZXMud3JpdGVsbigiPGJyIC8+Iik7CisgICAg
ICAgICAgICB3cml0ZUxhYmVsKCk7CiAgICAgICAgICAgICBIdG1sLnBhc3N3b3JkKHtuYW1lOiBu
YW1lfSk7CiAgICAgICAgICAgICByZXMud3JpdGUoIjwvcD4iKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFRFWFRBUkVBOgotICAgICAgICAgICAgcmVzLndyaXRlKCI8cCBzdHls
ZT1cImNsZWFyOiBib3RoO1wiPiIpOwotICAgICAgICAgICAgcmVzLndyaXRlKGxhYmVsKTsKLSAg
ICAgICAgICAgIHJlcy53cml0ZWxuKCI8YnIgLz4iKTsKKyAgICAgICAgICAgIHdyaXRlTGFiZWwo
KTsKICAgICAgICAgICAgIEh0bWwudGV4dGFyZWEoe25hbWU6IG5hbWUsICJjbGFzcyI6ICJob3Jp
em9udGFsRmlsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzOiBmaWVsZC5yb3dz
ID8gZmllbGQucm93cyA6IDZ9LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcCB8fCAi
Iik7CkBAIC04NzksOSArODg2LDcgQEAKICAgICAgICAgICAgIHJlcy53cml0ZSgiPC9wPiIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0hPSUNFOgotICAgICAgICAgICAgcmVz
LndyaXRlKCI8ZGl2IHN0eWxlPVwiY2xlYXI6IGJvdGg7XCI+Iik7Ci0gICAgICAgICAgICByZXMu
d3JpdGUobGFiZWwpOwotICAgICAgICAgICAgcmVzLndyaXRlbG4oIjxiciAvPiIpOworICAgICAg
ICAgICAgd3JpdGVMYWJlbCgpOwogICAgICAgICAgICAgSHRtbC5zZWxlY3Qoe25hbWU6IG5hbWV9
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVGb3JtKGZpZWxkLm9wdGlvbnMpLnNw
bGl0KCIsIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3AsCkBAIC04ODksOSArODk0
LDcgQEAKICAgICAgICAgICAgIHJlcy53cml0ZSgiPC9kaXY+Iik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBVUExPQUQ6Ci0gICAgICAgICAgICByZXMud3JpdGUoIjxwIHN0eWxl
PVwiY2xlYXI6IGJvdGg7XCI+Iik7Ci0gICAgICAgICAgICByZXMud3JpdGUobGFiZWwpOwotICAg
ICAgICAgICAgcmVzLndyaXRlbG4oIjxiciAvPiIpOworICAgICAgICAgICAgd3JpdGVMYWJlbCgp
OwogICAgICAgICAgICAgSHRtbC5maWxlKHtuYW1lOiBuYW1lLCBzaXplOiAzMH0pOwogICAgICAg
ICAgICAgaWYgKHByb3AgJiYgcHJvcC5saW5rKSB7CiAgICAgICAgICAgICAgICAgcmVzLndyaXRl
bG4oIiIpOwpAQCAtOTAwLDkgKzkwMyw3IEBACiAgICAgICAgICAgICByZXMud3JpdGUoIjwvcD4i
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERBVEU6Ci0gICAgICAgICAgICBy
ZXMud3JpdGUoIjxwIHN0eWxlPVwiY2xlYXI6IGJvdGg7XCI+Iik7Ci0gICAgICAgICAgICByZXMu
d3JpdGUobGFiZWwpOwotICAgICAgICAgICAgcmVzLndyaXRlbG4oIjxiciAvPiIpOworICAgICAg
ICAgICAgd3JpdGVMYWJlbCgpOwogICAgICAgICAgICAgdmFyIGRhdGUgPSB7fTsKICAgICAgICAg
ICAgIGlmIChwcm9wICYmIHByb3AuZ2V0WWVhcikgewogICAgICAgICAgICAgICAgIGRhdGUueWVh
ciA9IHByb3AuZ2V0WWVhcigpICsgMTkwMDsKQEAgLTkyMSw5ICs5MjIsNyBAQAogICAgICAgICAg
ICAgcmVzLndyaXRlKCI8L3A+Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBM
SU5LOgotICAgICAgICAgICAgcmVzLndyaXRlKCI8cCBzdHlsZT1cImNsZWFyOiBib3RoO1wiPiIp
OwotICAgICAgICAgICAgcmVzLndyaXRlKGxhYmVsKTsKLSAgICAgICAgICAgIHJlcy53cml0ZWxu
KCI8YnIgLz4iKTsKKyAgICAgICAgICAgIHdyaXRlTGFiZWwoKTsKICAgICAgICAgICAgIHZhciBw
YWdlcyA9IHRoaXMuZ2V0TGlua2VkUGFnZXMoZmllbGQudHlwZSwgZmllbGQuZGlyZWN0aW9uKTsK
ICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFBhZ2VMaXN0Lm5hbWVMaXN0KHBhZ2VzKSB8fCBwcm9w
OwogICAgICAgICAgICAgSHRtbC5pbnB1dCh7bmFtZTogbmFtZSArICJbdGFyZ2V0c10iLCB2YWx1
ZTogdmFsdWUsCkBAIC05NTIsNiArOTUxLDcgQEAKIAogLyoqCiAgKiBSZWFkIHRoZSBmb3JtIGRh
dGEgZnJvbSBhIHN1Ym1pdHRlZCBlZGl0IG9yIG5ldyBwYWdlIHBhZ2UuCisgKiBAcGFyYW0gcGVy
c2lzdCBCb29sZWFuIHRydWUgaWYgdGhlIHBhZ2UgaXMgdG8gYmUgcGVyc2lzdGVkCiAgKi8KIGZ1
bmN0aW9uIHJlYWRFZGl0Rm9ybShwZXJzaXN0KSB7CiAgICAgdmFyIG5hbWUgPSB0aGlzLnByb2Nl
c3NQYWdlTmFtZShjaGVja1BhZ2VOYW1lKHJlcS5kYXRhLm5hbWUpKTsKQEAgLTk3OCwyNyArOTc4
LDQxIEBACiAgICAgICAgIHRoaXMud2VpZ2h0ID0gcGFyc2VJbnQocmVxLmRhdGEud2VpZ2h0KTsK
ICAgICB9CiAgICAgdmFyIGZvcm0gPSB0aGlzLmdldEZvcm0oKTsKLSAgICB2YXIgZGVzYyA9IGZv
cm0gJiYgZm9ybS5nZXRGb3JtRGF0YSgpLmxpc3QoKTsKLSAgICBpZiAodGhpcy5fZm9ybXByb3Bl
cnRpZXMpCi0gICAgICAgIGRlc2MgPSBkZXNjID8gCi0gICAgICAgICAgICBkZXNjLmNvbmNhdCh0
aGlzLl9mb3JtcHJvcGVydGllcy5jaGlsZHJlbikgOgotICAgICAgICAgICAgdGhpcy5fZm9ybXBy
b3BlcnRpZXMuY2hpbGRyZW47Ci0gICAgaWYgKGRlc2MpIHsKKyAgICB2YXIgZm9ybURlZiA9IGZv
cm0gJiYgZm9ybS5nZXRGb3JtRGF0YSgpLmxpc3QoKSB8fCBbXTsKKyAgICBpZiAodGhpcy5fZm9y
bXByb3BlcnRpZXMpIHsKKyAgICAgICAgZm9ybURlZiA9IGZvcm1EZWYuY29uY2F0KHRoaXMuX2Zv
cm1wcm9wZXJ0aWVzLmNoaWxkcmVuKTsKKyAgICB9CisgICAgaWYgKGZvcm1EZWYpIHsKICAgICAg
ICAgdmFyIGRhdGEgPSB0aGlzLmdldEZvcm1EYXRhKCk7CiAgICAgICAgIHZhciBwYXJhbXMgPSBy
ZXEucGFyYW1zLmZvcm1kYXRhOwotICAgICAgICBmb3IgKHZhciBpIGluIGRlc2MpIHsKLSAgICAg
ICAgICAgIHZhciBwcm9wTmFtZSA9IGRlc2NbaV0ubmFtZTsKLSAgICAgICAgICAgIGlmIChwYXJh
bXMgJiYgdGhpcy5jaGVja1Blcm1pc3Npb24oZGVzY1tpXS5wZXJtaXNzaW9uKSkgewotICAgICAg
ICAgICAgICAgIGlmIChkZXNjW2ldLmVkaXRvciA9PSBMSU5LICYmIHBhcmFtc1twcm9wTmFtZV0p
IHsKKyAgICAgICAgZm9yIGVhY2ggKHZhciBmaWVsZCBpbiBmb3JtRGVmKSB7CisgICAgICAgICAg
ICB2YXIgcHJvcE5hbWUgPSBmaWVsZC5uYW1lOworICAgICAgICAgICAgaWYgKHBhcmFtc1twcm9w
TmFtZV0gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHBhcmFtcyAmJiB0aGlzLmNoZWNrUGVybWlzc2lvbihmaWVsZC5w
ZXJtaXNzaW9uKSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVsZC5lZGl0b3IgPT0gTElOSyAm
JiBwYXJhbXNbcHJvcE5hbWVdKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwZXJzaXN0KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmFsdWF0ZSBsaW5rcwogICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5ldmFsTGlua0ZpZWxkKHBhcmFtc1twcm9wTmFtZV0sIHByb3BOYW1l
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBkYXRhW3Byb3BO
YW1lXSA9IHBhcmFtc1twcm9wTmFtZV0udGFyZ2V0czsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGRlc2NbaV0uZWRpdG9yID09IENIRUNLQk9YKSB7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChmaWVsZC5lZGl0b3IgPT0gUEFTU1dPUkQpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGNvbmZpcm0gPSBwYXJhbXNbcHJvcE5hbWUgKyAiX2NvbmZpcm0iXTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvbmZpcm0gIT0gbnVsbCAmJiBwYXJhbXNbcHJvcE5hbWVdICE9IGNvbmZpcm0p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmVycm9ycyA9IHJlcy5kYXRhLmVy
cm9ycyB8fCBbXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmVycm9yc1twcm9w
TmFtZV0gPSBtc2coInBhc3N3b3JkX3ZhbGlkYXRpb25fZXJyb3IiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcy5kYXRhLmVycm9ycy5wdXNoKHRydWUpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJuZCA9IGphdmEuc2VjdXJp
dHkuU2VjdXJlUmFuZG9tLmdldEluc3RhbmNlKCJTSEExUFJORyIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHNhbHQgPSBkYXRhW3Byb3BOYW1lICsgIl9zYWx0Il0gPSBybmQubmV4dExv
bmcoKS50b1N0cmluZygzNik7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW3Byb3BOYW1l
ICsgIl9oYXNoIl0gPSAoc2FsdCArIGNvbmZpcm0pLm1kNSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsZXRlIGRhdGFbcHJvcE5hbWVdOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5lZGl0b3IgPT0gQ0hFQ0tCT1gpIHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gc2V0IGNoZWNrYm94IHZhbHVlCiAgICAgICAgICAgICAgICAgICAg
IGRhdGFbcHJvcE5hbWVdID0gcGFyYW1zW3Byb3BOYW1lXS52YWx1ZSA/IDEgOiAwOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZGVzY1tpXS5lZGl0b3IgPT0gVVBMT0FEICYmIHBlcnNpc3Qp
IHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRvciA9PSBVUExPQUQgJiYg
cGVyc2lzdCkgewogICAgICAgICAgICAgICAgICAgICAvLyBzYXZlIGZpbGUgdXBsb2FkCiAgICAg
ICAgICAgICAgICAgICAgIHZhciBtaW1lUGFydCA9IHBhcmFtc1twcm9wTmFtZV07CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtaW1lUGFydCAmJiBtaW1lUGFydC5uYW1lKSB7CkBAIC0xMDA2LDcg
KzEwMjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtwcm9wTmFtZV0gPSB1cGxv
YWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lUGFydC53cml0ZVRvRmlsZSh0aGlzLmdl
dFN0YXRpY0Rpcih0cnVlKSwgbWltZVBhcnQubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlc2NbaV0uZWRpdG9yID09IERBVEUpIHsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLmVkaXRvciA9PSBEQVRFKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHZhciB5ZWFyID0gcGFyYW1zW3Byb3BOYW1lXS55ZWFyOwogICAgICAgICAg
ICAgICAgICAgICB2YXIgbW9udGggPSBwYXJhbXNbcHJvcE5hbWVdLm1vbnRoOwogICAgICAgICAg
ICAgICAgICAgICB2YXIgZGF5ID0gcGFyYW1zW3Byb3BOYW1lXS5kYXk7CkBAIC0xMDE1LDEyICsx
MDI5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhW3Byb3BOYW1lXSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGRlc2NbaV0uY2FsX3BhdGgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGZpZWxkLmNhbF9wYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
cmVhdGUgYSBkYXRlZCBsaW5rIHRvIGEgY2FsZW5kYXIgcGFnZQotICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHAgPSByb290LmdldFBhZ2UoZGVzY1tpXS5jYWxfcGF0aCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgcCA9IHJvb3QuZ2V0UGFnZShmaWVsZC5jYWxfcGF0aCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBsaW5rdHlwZSA9IGRlc2NbaV0uY2FsX3BhdHRlcm4gPwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXNjW2ldLmNhbF9wYXR0ZXJuIDogInVwZGF0ZWQiOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBsaW5rdHlwZSA9IGZpZWxkLmNhbF9wYXR0ZXJuID8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuY2FsX3BhdHRlcm4gOiAidXBkYXRl
ZCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3R5cGUgKz0gIjoiOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBhbnkgcHJldmlvdXMgbGlua3MKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCgiXiIrbGlua3R5
cGUpOwpAQCAtMTAzNiw5ICsxMDUwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgLy8gc2F2ZSBn
ZW5lcmljIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgICAgIGRhdGFbcHJvcE5hbWVdID0gcGFy
YW1zW3Byb3BOYW1lXTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGRhdGFbcHJvcE5hbWVdID09IG51bGwgJiYgZGVzY1tpXS5kZWZhdWx0dmFsdWUgIT0gbnVsbCkg
eworICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhW3Byb3BOYW1lXSA9PSBudWxsICYmIGZpZWxk
LmRlZmF1bHR2YWx1ZSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgLy8gbm8gcGVybWlzc2lv
biB0byBlZGl0IGZpZWxkLCB1c2UgZGVmYXVsdCB2YWx1ZSBpZiBvbmUgaXMgZGVmaW5lZAotICAg
ICAgICAgICAgICAgIGRhdGFbcHJvcE5hbWVdID0gZGVzY1tpXS5kZWZhdWx0dmFsdWU7CisgICAg
ICAgICAgICAgICAgZGF0YVtwcm9wTmFtZV0gPSBmaWVsZC5kZWZhdWx0dmFsdWU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5zZXRGb3JtRGF0YShkYXRhKTsKCk1vZGlm
aWVkOiBhcHBzL2dvYmkvdHJ1bmsvY29kZS9Vc2VyL1VzZXIuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXBw
cy9nb2JpL3RydW5rL2NvZGUvVXNlci9Vc2VyLmpzCTIwMDktMDktMTYgMTU6NDE6NDAgVVRDIChy
ZXYgOTkxMikKKysrIGFwcHMvZ29iaS90cnVuay9jb2RlL1VzZXIvVXNlci5qcwkyMDA5LTA5LTE2
IDIxOjA4OjU5IFVUQyAocmV2IDk5MTMpCkBAIC0zOSw4ICszOSw4IEBACiB0aGlzLl9hY3Rpb25z
ID0gbmV3IExvb2t1cExpc3QoWwogICAgIG5ldyBBY3Rpb24oIm1haW4iLCB7IGNhdGVnb3J5OiBS
RUFELCBsYWJlbDogIk1haW4gVmlldyIgfSksCiAgICAgbmV3IEFjdGlvbigiZWRpdCIsIHsgY2F0
ZWdvcnk6IFdSSVRFLCBsYWJlbDogIkVkaXQgVXNlciIgfSksCi0gICAgbmV3IEFjdGlvbigiZGVs
ZXRlIiwgeyBjYXRlZ29yeTogTUFOQUdFLCBsYWJlbDogIkRlbGV0ZSBVc2VyIiB9KSwKLSAgICBu
ZXcgQWN0aW9uKCJtYW5hZ2UiLCB7IGNhdGVnb3J5OiBNQU5BR0UsIGxhYmVsOiAiTWFuYWdlIFVz
ZXIiIH0pCisgICAgbmV3IEFjdGlvbigicGFzc3dvcmQiLCB7IGNhdGVnb3J5OiBXUklURSwgbGFi
ZWw6ICJDaGFuZ2UgUGFzc3dvcmQiIH0pLAorICAgIG5ldyBBY3Rpb24oImRlbGV0ZSIsIHsgY2F0
ZWdvcnk6IE1BTkFHRSwgbGFiZWw6ICJEZWxldGUgVXNlciIgfSkKIF0pOwogCiAvKioKQEAgLTUx
LDQgKzUxLDI2IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitmdW5jdGlvbiBwYXNzd29yZF9h
Y3Rpb24oKSB7CisgICAgaWYgKHJlcS5pc1Bvc3QoKSkgeworICAgICAgICBpZiAocmVxLmRhdGEu
c2F2ZSkgeworICAgICAgICAgICAgdGhpcy5yZWFkRWRpdEZvcm0odHJ1ZSk7CisgICAgICAgICAg
ICBpZiAocmVzLmRhdGEuZXJyb3JzKSB7CisgICAgICAgICAgICAgICAgcmVzLm1lc3NhZ2UgPSBt
c2coInBhc3N3b3JkX3ZhbGlkYXRpb25fZXJyb3IiKTsKKyAgICAgICAgICAgICAgICByZXMuZGF0
YS5ib2R5ID0gdGhpcy5yZW5kZXJTa2luQXNTdHJpbmcoInBhc3N3b3JkIik7CisgICAgICAgICAg
ICAgICAgdGhpcy5yZW5kZXJTa2luKCJwYWdlIik7CisgICAgICAgICAgICAgICAgcmVzLmFib3J0
KCk7CisgICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5tb2RpZmllciA9IHNlc3Np
b24udXNlcjsKKyAgICAgICAgICAgIHRoaXMubW9kaWZ5dGltZSA9IG5ldyBEYXRlKCk7CisgICAg
ICAgICAgICByZXMubWVzc2FnZSA9IG1zZygicGFzc3dvcmRfY2hhbmdlX2NvbmZpcm0iKTsKKyAg
ICAgICAgICAgIHJlcy5yZWRpcmVjdCh0aGlzLmhyZWYoKSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmVzLmRhdGEuYm9keSA9IHRoaXMucmVuZGVyU2tpbkFzU3RyaW5nKCJwYXNzd29yZCIpOwor
ICAgIHRoaXMucmVuZGVyU2tpbigicGFnZSIpOworfQogCisKCk1vZGlmaWVkOiBhcHBzL2dvYmkv
dHJ1bmsvY29kZS9Vc2VyL2JvZHkuc2tpbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcHBzL2dvYmkvdHJ1bmsv
Y29kZS9Vc2VyL2JvZHkuc2tpbgkyMDA5LTA5LTE2IDE1OjQxOjQwIFVUQyAocmV2IDk5MTIpCisr
KyBhcHBzL2dvYmkvdHJ1bmsvY29kZS9Vc2VyL2JvZHkuc2tpbgkyMDA5LTA5LTE2IDIxOjA4OjU5
IFVUQyAocmV2IDk5MTMpCkBAIC0xLDYgKzEsMTEgQEAKKzxoMj5Vc2VyIDwlIHRoaXMubmFtZSAl
PjwvaDI+CisKKzxkaXYgc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsgZm9udC1zaXplOiBzbWFs
bDsiPlJlZ2lzdGVyZWQgc2luY2UgPCUgdGhpcy5jcmVhdGV0aW1lICU+PC9kaXY+CisKIDwlIHRo
aXMuYm9keSAlPgogCi08JSB0aGlzLmFjdGlvbmxpbmsgYWN0aW9uPSJlZGl0IiB0ZXh0PSJFZGl0
IHRoaXMgdXNlciIgJT4KKzwlIHRoaXMuYWN0aW9ubGluayBhY3Rpb249ImVkaXQiIHRleHQ9IkVk
aXQgdXNlciBzZXR0aW5ncyIgcHJlZml4PSI8cD4iIHN1ZmZpeD0iPC9wPiIgJT4KKzwlIHRoaXMu
YWN0aW9ubGluayBhY3Rpb249InBhc3N3b3JkIiB0ZXh0PSJDaGFuZ2UgcGFzc3dvcmQiIHByZWZp
eD0iPHA+IiBzdWZmaXg9IjwvcD4iICU+CiAKIDwlIHRoaXMubGlua2xpc3QgdHlwZT0ic3lzdGVt
OmFkbWluIiBmdWxscGF0aD0idHJ1ZSIKICAgcHJlZml4PSI8aDQ+YWRtaW4gb2Y6PC9oND4iICU+
CgpNb2RpZmllZDogYXBwcy9nb2JpL3RydW5rL2NvZGUvVXNlci9jcmVhdGUuc2tpbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBhcHBzL2dvYmkvdHJ1bmsvY29kZS9Vc2VyL2NyZWF0ZS5za2luCTIwMDktMDktMTYg
MTU6NDE6NDAgVVRDIChyZXYgOTkxMikKKysrIGFwcHMvZ29iaS90cnVuay9jb2RlL1VzZXIvY3Jl
YXRlLnNraW4JMjAwOS0wOS0xNiAyMTowODo1OSBVVEMgKHJldiA5OTEzKQpAQCAtNCw3ICs0LDcg
QEAKIDwlIHRoaXMuZm9ybSBuYW1lPSJwYXNzd29yZCIgYXM9ImVkaXRvciIgc2l6ZT0iNDAiCiAg
ICAgIGxhYmVsPSJQYXNzd29yZCIKICAgICAgcHJlZml4PSI8ZGl2PiIKLSAgICAgc3VmZml4PSI8
L2Rpdj5SZXBlYXQgUGFzc3dvcmQ8ZGl2PjxpbnB1dCBuYW1lPSdmb3JtZGF0YVtwYXNzd29yZF8y
XScgdHlwZT0ncGFzc3dvcmQnPjwvZGl2PiIgJT4KKyAgICAgc3VmZml4PSI8L2Rpdj5SZXBlYXQg
UGFzc3dvcmQ8ZGl2PjxpbnB1dCBuYW1lPSdmb3JtZGF0YVtwYXNzd29yZF9jb25maXJtXScgdHlw
ZT0ncGFzc3dvcmQnPjwvZGl2PiIgJT4KIAogPCUgdGhpcy5mb3JtIG5hbWU9ImVtYWlsIiBhcz0i
ZWRpdG9yIiBzaXplPSI0MCIgCiAgICAgIGxhYmVsPSJFbWFpbCBBZGRyZXNzIgoKTW9kaWZpZWQ6
IGFwcHMvZ29iaS90cnVuay9jb2RlL1VzZXIvZWRpdC5za2luCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGFwcHMv
Z29iaS90cnVuay9jb2RlL1VzZXIvZWRpdC5za2luCTIwMDktMDktMTYgMTU6NDE6NDAgVVRDIChy
ZXYgOTkxMikKKysrIGFwcHMvZ29iaS90cnVuay9jb2RlL1VzZXIvZWRpdC5za2luCTIwMDktMDkt
MTYgMjE6MDg6NTkgVVRDIChyZXYgOTkxMykKQEAgLTEsMTggKzEsMTkgQEAKKzxoMz5FZGl0IHVz
ZXIgPCUgdGhpcy5uYW1lICU+PC9oMz4KKwogPGZvcm0gbWV0aG9kPSJwb3N0Ij4KIDwlIHRoaXMu
aW5wdXQgbmFtZT0ibmFtZSIgc2l6ZT0iNDAiIHByZWZpeD0iTmFtZTxkaXY+IiBzdWZmaXg9Ijwv
ZGl2PiIgJT4KIAotPCUgdGhpcy5mb3JtIG5hbWU9InBhc3N3b3JkIiBhcz0iZWRpdG9yIiBzaXpl
PSI0MCIKLSAgICAgbGFiZWw9IlBhc3N3b3JkIgotICAgICBwcmVmaXg9IjxkaXY+IgotICAgICBz
dWZmaXg9IjwvZGl2PlJlcGVhdCBQYXNzd29yZDxkaXY+PGlucHV0IG5hbWU9J2Zvcm1kYXRhW3Bh
c3N3b3JkXzJdJyB0eXBlPSdwYXNzd29yZCc+PC9kaXY+IiAlPgotCiA8JSB0aGlzLmZvcm0gbmFt
ZT0iZW1haWwiIGFzPSJlZGl0b3IiIHNpemU9IjQwIiAKICAgICAgbGFiZWw9IkVtYWlsIEFkZHJl
c3MiCiAgICAgIHByZWZpeD0iPGRpdj4iIHN1ZmZpeD0iPC9kaXY+IiAlPgogCiA8JSB0aGlzLmZv
cm1FZGl0b3IgJT4KIAotPGJyPgorPHAgc3R5bGU9ImNsZWFyOiBib3RoOyI+RGVzY3JpcHRpb248
YnIgLz4KKzwlIHRoaXMudGV4dEFyZWEgbmFtZT0iYm9keSIgcm93cz0iMTgiIGNsYXNzPSJob3Jp
em9udGFsRmlsbCIgJT48L3A+CiAKLTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNhdmUiIHZh
bHVlPSJTYXZlIj4KKzxwPgorICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzYXZlIiB2YWx1
ZT0iU2F2ZSI+CisgIDxhIGhyZWY9IjwlIHBhZ2UuaHJlZiAlPiIgY2xhc3M9ImNvbW1lbnRMaW5r
Ij4gPCUgbXNnIG5hbWU9J2NhbmNlbCcgJT48L2E+Cis8L3A+CiA8L2Zvcm0+CgpBZGRlZDogYXBw
cy9nb2JpL3RydW5rL2NvZGUvVXNlci9wYXNzd29yZC5za2luCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpIZWxtYS1DVlMgbWFpbGluZyBsaXN0CkhlbG1h
LUNWU0BoZWxtYS5vcmcKaHR0cDovL2hlbG1hLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2hlbG1hLWN2
cwo=