[mono/monodevelop] d22ccbef: Add support for local-copying package references

"Lluis Sanchez ([email protected])" <[email protected]> Sat, 23 Nov 2013 17:35:02 +0000
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <0000014286076a4e-0977780d-4432-46fe-9855-603516cc8b39-000000@email.amazonses.com>
DQogICBCcmFuY2g6IHJlZnMvaGVhZHMvbWFzdGVyDQogICAgIEhvbWU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9tb25vL21vbm9kZXZlbG9wDQogIENvbXBhcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25v
L21vbm9kZXZlbG9wL2NvbXBhcmUvODBiYjhiZDBkYTU2Li4uZDIyY2NiZWYxZGIwDQoNCiAgIENv
bW1pdDogZDIyY2NiZWYxZGIwMDdhZGUwZjIwYjE2MzUwOTcwZGRhZDkzMzdjZQ0KICAgQXV0aG9y
OiBMbHVpcyBTYW5jaGV6IDxsbHVpc0B4YW1hcmluLmNvbT4gKHNsbHVpcykNCiAgICAgRGF0ZTog
MjAxMy0xMS0yMyAxNzozMjo1NyBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21v
bm8vbW9ub2RldmVsb3AvY29tbWl0L2QyMmNjYmVmMWRiMDA3YWRlMGYyMGIxNjM1MDk3MGRkYWQ5
MzM3Y2UNCg0KQWRkIHN1cHBvcnQgZm9yIGxvY2FsLWNvcHlpbmcgcGFja2FnZSByZWZlcmVuY2Vz
CgpXaGVuIG5vdCBleHBsaWNpdGx5IHNldCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgTG9jYWxDb3B5
IGRlcGVuZHMgb24gdGhlIHR5cGUKb2YgcmVmZXJlbmNlLiBGb3IgcHJvamVjdCBhbmQgZmlsZSBy
ZWZlcmVuY2VzIHRoZSBkZWZhdWx0IGlzIHRydWUuIEZvcgpmcmFtZXdvcmsgYW5kIHBhY2thZ2Ug
YXNzZW1ibGllcyAoaW5jbHVkaW5nIEdBQykgdGhlIGRlZmF1bHQgaXMgZmFsc2UuDQoNCkNoYW5n
ZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3Au
UHJvamVjdHMuRm9ybWF0cy5NU0J1aWxkL01TQnVpbGRQcm9qZWN0LmNzCiAgTSBtYWluL3NyYy9j
b3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuUHJvamVjdHMuRm9ybWF0cy5NU0J1aWxk
L01TQnVpbGRQcm9qZWN0SGFuZGxlci5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5D
b3JlL01vbm9EZXZlbG9wLlByb2plY3RzL0RvdE5ldFByb2plY3QuY3MKICBNIG1haW4vc3JjL2Nv
cmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Qcm9qZWN0cy9Qcm9qZWN0UmVmZXJlbmNl
LmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuUHJvamVj
dHMvU29sdXRpb25JdGVtLmNzCiAgTSBtYWluL3Rlc3RzL1VuaXRUZXN0cy9Nb25vRGV2ZWxvcC5Q
cm9qZWN0cy9Mb2NhbENvcHlUZXN0cy5jcwpBZGRlZCBwYXRoczoKICBBIG1haW4vdGVzdHMvdGVz
dC1wcm9qZWN0cy9sb2NhbC1jb3B5LXBhY2thZ2UvQ29uc29sZVByb2plY3Quc2xuCiAgQSBtYWlu
L3Rlc3RzL3Rlc3QtcHJvamVjdHMvbG9jYWwtY29weS1wYWNrYWdlL0NvbnNvbGVQcm9qZWN0L0Nv
bnNvbGVQcm9qZWN0LmNzcHJvagogIEEgbWFpbi90ZXN0cy90ZXN0LXByb2plY3RzL2xvY2FsLWNv
cHktcGFja2FnZS9Db25zb2xlUHJvamVjdC9Qcm9ncmFtLmNzCiAgQSBtYWluL3Rlc3RzL3Rlc3Qt
cHJvamVjdHMvbG9jYWwtY29weS1wYWNrYWdlL0NvbnNvbGVQcm9qZWN0L1Byb3BlcnRpZXMvQXNz
ZW1ibHlJbmZvLmNzCiAgQSBtYWluL3Rlc3RzL3Rlc3QtcHJvamVjdHMvbG9jYWwtY29weS1wYWNr
YWdlL0xpYlByb2plY3QvTGliUHJvamVjdC5jc3Byb2oKICBBIG1haW4vdGVzdHMvdGVzdC1wcm9q
ZWN0cy9sb2NhbC1jb3B5LXBhY2thZ2UvTGliUHJvamVjdC9NeUNsYXNzLmNzCiAgQSBtYWluL3Rl
c3RzL3Rlc3QtcHJvamVjdHMvbG9jYWwtY29weS1wYWNrYWdlL0xpYlByb2plY3QvUHJvcGVydGll
cy9Bc3NlbWJseUluZm8uY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5D
b3JlL01vbm9EZXZlbG9wLlByb2plY3RzLkZvcm1hdHMuTVNCdWlsZC9NU0J1aWxkUHJvamVjdC5j
cw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KQEAgLTc2OSw2ICs3NjksMTEgQEAgcHVibGljIGJvb2wgSGFzTWV0YWRh
dGEgKHN0cmluZyBuYW1lKQogCQkJcmV0dXJuIEV2YWx1YXRlZEVsZW1lbnQgW25hbWUsIE1TQnVp
bGRQcm9qZWN0LlNjaGVtYV0gIT0gbnVsbDsKIAkJfQogCQkKKwkJcHVibGljIHZvaWQgU2V0TWV0
YWRhdGEgKHN0cmluZyBuYW1lLCBib29sIHZhbHVlKQorCQl7CisJCQlTZXRNZXRhZGF0YSAobmFt
ZSwgdmFsdWUgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKKwkJfQorCiAJCXB1YmxpYyB2b2lkIFNldE1l
dGFkYXRhIChzdHJpbmcgbmFtZSwgc3RyaW5nIHZhbHVlLCBib29sIGlzWG1sID0gZmFsc2UpCiAJ
CXsKIAkJCS8vIERvbid0IG92ZXJ3cml0ZSB0aGUgbWV0YWRhdGEgdmFsdWUgaWYgdGhlIG5ldyB2
YWx1ZSBpcyB0aGUgc2FtZSBhcyB0aGUgb2xkCkBAIC04MDYsNiArODExLDE2IEBAIHB1YmxpYyBz
dHJpbmcgR2V0TWV0YWRhdGEgKHN0cmluZyBuYW1lLCBib29sIGlzWG1sID0gZmFsc2UpCiAJCQkJ
cmV0dXJuIG51bGw7CiAJCX0KIAorCQlwdWJsaWMgYm9vbD8gR2V0Qm9vbE1ldGFkYXRhIChzdHJp
bmcgbmFtZSkKKwkJeworCQkJdmFyIHZhbCA9IEdldE1ldGFkYXRhIChuYW1lKTsKKwkJCWlmIChT
dHJpbmcuRXF1YWxzICh2YWwsICJGYWxzZSIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9y
ZUNhc2UpKQorCQkJCXJldHVybiBmYWxzZTsKKwkJCWlmIChTdHJpbmcuRXF1YWxzICh2YWwsICJU
cnVlIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCisJCQkJcmV0dXJuIHRy
dWU7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCiAJCXB1YmxpYyBib29sIEdldE1ldGFkYXRhSXNG
YWxzZSAoc3RyaW5nIG5hbWUpCiAJCXsKIAkJCXJldHVybiBTdHJpbmcuQ29tcGFyZSAoR2V0TWV0
YWRhdGEgKG5hbWUpLCAiRmFsc2UiLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNl
KSA9PSAwOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9E
ZXZlbG9wLlByb2plY3RzLkZvcm1hdHMuTVNCdWlsZC9NU0J1aWxkUHJvamVjdEhhbmRsZXIuY3MN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCkBAIC04NjYsNyArODY2LDYgQEAgUHJvamVjdEl0ZW0gUmVhZEl0ZW0gKE1T
QnVpbGRTZXJpYWxpemVyIHNlciwgTVNCdWlsZEl0ZW0gYnVpbGRJdGVtKQogCQkJCQkJCXByZWYg
PSBuZXcgUHJvamVjdFJlZmVyZW5jZSAoUmVmZXJlbmNlVHlwZS5QYWNrYWdlLCBidWlsZEl0ZW0u
SW5jbHVkZSk7CiAJCQkJCQkJcHJlZi5FeHRlbmRlZFByb3BlcnRpZXMgWyJfT3JpZ2luYWxNU0J1
aWxkUmVmZXJlbmNlSGludFBhdGgiXSA9IGhpbnRQYXRoOwogCQkJCQkJfQotCQkJCQkJcHJlZi5M
b2NhbENvcHkgPSAhYnVpbGRJdGVtLkdldE1ldGFkYXRhSXNGYWxzZSAoIlByaXZhdGUiKTsKIAkJ
CQkJfSBlbHNlIHsKIAkJCQkJCXN0cmluZyBhc20gPSBidWlsZEl0ZW0uSW5jbHVkZTsKIAkJCQkJ
CS8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhIFZTIGJ1Zy4gTG9va3MgbGlrZSBpdCBpcyB3
cml0aW5nIHRoaXMgYXNzZW1ibHkgaW5jb3JyZWN0bHkKQEAgLTg3Nyw4ICs4NzYsMTEgQEAgUHJv
amVjdEl0ZW0gUmVhZEl0ZW0gKE1TQnVpbGRTZXJpYWxpemVyIHNlciwgTVNCdWlsZEl0ZW0gYnVp
bGRJdGVtKQogCQkJCQkJZWxzZSBpZiAoYXNtID09ICJzeXN0ZW0iKQogCQkJCQkJCWFzbSA9ICJT
eXN0ZW0iOwogCQkJCQkJcHJlZiA9IG5ldyBQcm9qZWN0UmVmZXJlbmNlIChSZWZlcmVuY2VUeXBl
LlBhY2thZ2UsIGFzbSk7Ci0JCQkJCQlwcmVmLkxvY2FsQ29weSA9ICFidWlsZEl0ZW0uR2V0TWV0
YWRhdGFJc0ZhbHNlICgiUHJpdmF0ZSIpOwogCQkJCQl9CisJCQkJCXZhciBwcml2YXRlQ29weSA9
IGJ1aWxkSXRlbS5HZXRCb29sTWV0YWRhdGEgKCJQcml2YXRlIik7CisJCQkJCWlmIChwcml2YXRl
Q29weSAhPSBudWxsKQorCQkJCQkJcHJlZi5Mb2NhbENvcHkgPSBwcml2YXRlQ29weS5WYWx1ZTsK
KwogCQkJCQlwcmVmLkNvbmRpdGlvbiA9IGJ1aWxkSXRlbS5Db25kaXRpb247CiAJCQkJCXN0cmlu
ZyBzcGVjaWZpY1ZlcnNpb24gPSBidWlsZEl0ZW0uR2V0TWV0YWRhdGEgKCJTcGVjaWZpY1ZlcnNp
b24iKTsKIAkJCQkJaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UgKHNwZWNpZmljVmVyc2lv
bikpIHsKQEAgLTg5OCw4ICs5MDAsMTAgQEAgUHJvamVjdEl0ZW0gUmVhZEl0ZW0gKE1TQnVpbGRT
ZXJpYWxpemVyIHNlciwgTVNCdWlsZEl0ZW0gYnVpbGRJdGVtKQogCQkJCQlzdHJpbmcgcGF0aCA9
IE1TQnVpbGRQcm9qZWN0U2VydmljZS5Gcm9tTVNCdWlsZFBhdGggKHByb2plY3QuSXRlbURpcmVj
dG9yeSwgYnVpbGRJdGVtLkluY2x1ZGUpOwogCQkJCQlzdHJpbmcgbmFtZSA9IFBhdGguR2V0Rmls
ZU5hbWVXaXRob3V0RXh0ZW5zaW9uIChwYXRoKTsKIAkJCQkJUHJvamVjdFJlZmVyZW5jZSBwcmVm
ID0gbmV3IFByb2plY3RSZWZlcmVuY2UgKFJlZmVyZW5jZVR5cGUuUHJvamVjdCwgbmFtZSk7Ci0J
CQkJCXByZWYuTG9jYWxDb3B5ID0gIWJ1aWxkSXRlbS5HZXRNZXRhZGF0YUlzRmFsc2UgKCJQcml2
YXRlIik7CiAJCQkJCXByZWYuQ29uZGl0aW9uID0gYnVpbGRJdGVtLkNvbmRpdGlvbjsKKwkJCQkJ
dmFyIHByaXZhdGVDb3B5ID0gYnVpbGRJdGVtLkdldEJvb2xNZXRhZGF0YSAoIlByaXZhdGUiKTsK
KwkJCQkJaWYgKHByaXZhdGVDb3B5ICE9IG51bGwpCisJCQkJCQlwcmVmLkxvY2FsQ29weSA9IHBy
aXZhdGVDb3B5LlZhbHVlOwogCQkJCQlyZXR1cm4gcHJlZjsKIAkJCQl9CiAJCQkJZWxzZSBpZiAo
ZHQgPT0gbnVsbCAmJiAhc3RyaW5nLklzTnVsbE9yRW1wdHkgKGJ1aWxkSXRlbS5JbmNsdWRlKSkg
ewpAQCAtMTQ1NiwxMSArMTQ2MCw2IEBAIHZvaWQgU2F2ZVJlZmVyZW5jZSAoTW9ub0RldmVsb3Au
Q29yZS5JUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIE1TQnVpbGRTZXJpYWxpemVyCiAJCQkJfQog
CQkJCQogCQkJCWJ1aWxkSXRlbS5TZXRNZXRhZGF0YSAoIkhpbnRQYXRoIiwgaGludFBhdGgpOwot
CQkJCQotCQkJCWlmICghcHJlZi5Mb2NhbENvcHkgJiYgcHJlZi5DYW5TZXRMb2NhbENvcHkpCi0J
CQkJCWJ1aWxkSXRlbS5TZXRNZXRhZGF0YSAoIlByaXZhdGUiLCAiRmFsc2UiKTsKLQkJCQllbHNl
Ci0JCQkJCWJ1aWxkSXRlbS5VbnNldE1ldGFkYXRhICgiUHJpdmF0ZSIpOwogCQkJfQogCQkJZWxz
ZSBpZiAocHJlZi5SZWZlcmVuY2VUeXBlID09IFJlZmVyZW5jZVR5cGUuUGFja2FnZSkgewogCQkJ
CXN0cmluZyBpbmNsdWRlID0gcHJlZi5TdG9yZWRSZWZlcmVuY2U7CkBAIC0xNDk1LDExICsxNDk0
LDYgQEAgdm9pZCBTYXZlUmVmZXJlbmNlIChNb25vRGV2ZWxvcC5Db3JlLklQcm9ncmVzc01vbml0
b3IgbW9uaXRvciwgTVNCdWlsZFNlcmlhbGl6ZXIKIAkJCQkJYnVpbGRJdGVtLlNldE1ldGFkYXRh
ICgiSGludFBhdGgiLCBoaW50UGF0aCk7CiAJCQkJZWxzZQogCQkJCQlidWlsZEl0ZW0uVW5zZXRN
ZXRhZGF0YSAoIkhpbnRQYXRoIik7Ci0JCQkJCi0JCQkJaWYgKCFwcmVmLkxvY2FsQ29weSAmJiBw
cmVmLkNhblNldExvY2FsQ29weSkKLQkJCQkJYnVpbGRJdGVtLlNldE1ldGFkYXRhICgiUHJpdmF0
ZSIsICJGYWxzZSIpOwotCQkJCWVsc2UKLQkJCQkJYnVpbGRJdGVtLlVuc2V0TWV0YWRhdGEgKCJQ
cml2YXRlIik7CiAJCQl9CiAJCQllbHNlIGlmIChwcmVmLlJlZmVyZW5jZVR5cGUgPT0gUmVmZXJl
bmNlVHlwZS5Qcm9qZWN0KSB7CiAJCQkJUHJvamVjdCByZWZQcm9qID0gSXRlbS5QYXJlbnRTb2x1
dGlvbi5GaW5kUHJvamVjdEJ5TmFtZSAocHJlZi5SZWZlcmVuY2UpOwpAQCAtMTUxMSwxMCArMTUw
NSw2IEBAIHZvaWQgU2F2ZVJlZmVyZW5jZSAoTW9ub0RldmVsb3AuQ29yZS5JUHJvZ3Jlc3NNb25p
dG9yIG1vbml0b3IsIE1TQnVpbGRTZXJpYWxpemVyCiAJCQkJCWVsc2UKIAkJCQkJCWJ1aWxkSXRl
bS5VbnNldE1ldGFkYXRhICgiUHJvamVjdCIpOwogCQkJCQlidWlsZEl0ZW0uU2V0TWV0YWRhdGEg
KCJOYW1lIiwgcmVmUHJvai5OYW1lKTsKLQkJCQkJaWYgKCFwcmVmLkxvY2FsQ29weSkKLQkJCQkJ
CWJ1aWxkSXRlbS5TZXRNZXRhZGF0YSAoIlByaXZhdGUiLCAiRmFsc2UiKTsKLQkJCQkJZWxzZQot
CQkJCQkJYnVpbGRJdGVtLlVuc2V0TWV0YWRhdGEgKCJQcml2YXRlIik7CiAJCQkJfSBlbHNlIHsK
IAkJCQkJbW9uaXRvci5SZXBvcnRXYXJuaW5nIChHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJS
ZWZlcmVuY2UgdG8gdW5rbm93biBwcm9qZWN0ICd7MH0nIGlnbm9yZWQuIiwgcHJlZi5SZWZlcmVu
Y2UpKTsKIAkJCQkJcmV0dXJuOwpAQCAtMTUyNSw2ICsxNTE1LDEyIEBAIHZvaWQgU2F2ZVJlZmVy
ZW5jZSAoTW9ub0RldmVsb3AuQ29yZS5JUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IsIE1TQnVpbGRT
ZXJpYWxpemVyCiAJCQkJRGF0YVR5cGUgZHQgPSBzZXIuRGF0YUNvbnRleHQuR2V0Q29uZmlndXJh
dGlvbkRhdGFUeXBlIChwcmVmLkdldFR5cGUgKCkpOwogCQkJCWJ1aWxkSXRlbSA9IEFkZE9yR2V0
QnVpbGRJdGVtIChtc3Byb2plY3QsIG9sZEl0ZW1zLCBkdC5OYW1lLCBwcmVmLlJlZmVyZW5jZSk7
CiAJCQl9CisKKwkJCWlmIChwcmVmLkxvY2FsQ29weSAhPSBwcmVmLkRlZmF1bHRMb2NhbENvcHkp
CisJCQkJYnVpbGRJdGVtLlNldE1ldGFkYXRhICgiUHJpdmF0ZSIsIHByZWYuTG9jYWxDb3B5KTsK
KwkJCWVsc2UKKwkJCQlidWlsZEl0ZW0uVW5zZXRNZXRhZGF0YSAoIlByaXZhdGUiKTsKKwogCQkJ
V3JpdGVCdWlsZEl0ZW1NZXRhZGF0YSAoc2VyLCBidWlsZEl0ZW0sIHByZWYsIG9sZEl0ZW1zKTsK
IAkJCWJ1aWxkSXRlbS5Db25kaXRpb24gPSBwcmVmLkNvbmRpdGlvbjsKIAkJfQ0KDQpNb2RpZmll
ZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLlByb2plY3RzL0Rv
dE5ldFByb2plY3QuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBQb3B1
bGF0ZVN1cHBvcnRGaWxlTGlzdEludGVybmFsIChGaWxlQ29weVNldCBsaXN0LCBDb25maWd1cmF0
aW9uU2VsZWN0b3IgY28KIAkJCQkJCQlsaXN0LkFkZCAobWRiRmlsZSwgY29weUlmTmV3ZXIpOwog
CQkJCQl9CiAJCQkJfQotCQkJCWVsc2UgaWYgKHByb2plY3RSZWZlcmVuY2UuUmVmZXJlbmNlVHlw
ZSA9PSBSZWZlcmVuY2VUeXBlLkN1c3RvbSkgeworCQkJCWVsc2UgewogCQkJCQlmb3JlYWNoIChz
dHJpbmcgcmVmRmlsZSBpbiBwcm9qZWN0UmVmZXJlbmNlLkdldFJlZmVyZW5jZWRGaWxlTmFtZXMg
KGNvbmZpZ3VyYXRpb24pKQogCQkJCQkJbGlzdC5BZGQgKHJlZkZpbGUpOwogCQkJCX0NCg0KTW9k
aWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Qcm9qZWN0
cy9Qcm9qZWN0UmVmZXJlbmNlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWMgY2xhc3MgUHJvamVjdFJlZmVyZW5jZSA6IFByb2plY3RJdGVtLCBJQ2xvbmVhYmxlCiAJCVJl
ZmVyZW5jZVR5cGUgcmVmZXJlbmNlVHlwZSA9IFJlZmVyZW5jZVR5cGUuQ3VzdG9tOwogCQlEb3RO
ZXRQcm9qZWN0IG93bmVyUHJvamVjdDsKIAkJc3RyaW5nIHJlZmVyZW5jZSA9IFN0cmluZy5FbXB0
eTsKLQkJYm9vbCBsb2NhbENvcHkgPSB0cnVlOworCQlib29sPyBsb2NhbENvcHk7CiAJCQogCQkv
LyBBIHByb2plY3QgbWF5IHJlZmVyZW5jZSBhc3NlbWJsaWVzIHdoaWNoIGFyZSBub3QgYXZhaWxh
YmxlCiAJCS8vIGluIHRoZSBzeXN0ZW0gd2hlcmUgaXQgaXMgb3BlbmVkLiBGb3IgZXhhbXBsZSwg
b3BlbmluZwpAQCAtMTE3LDE0ICsxMTcsMTMgQEAgcHVibGljIFByb2plY3RSZWZlcmVuY2UgKFBy
b2plY3QgcmVmZXJlbmNlZFByb2plY3QpCiAJCXsKIAkJCXJlZmVyZW5jZVR5cGUgPSBSZWZlcmVu
Y2VUeXBlLlByb2plY3Q7CiAJCQlyZWZlcmVuY2UgPSByZWZlcmVuY2VkUHJvamVjdC5OYW1lOwot
CQkJc3BlY2lmaWNWZXJzaW9uID0gbG9jYWxDb3B5ID0gdHJ1ZTsKKwkJCXNwZWNpZmljVmVyc2lv
biA9IHRydWU7CiAJCX0KIAkJCiAJCXB1YmxpYyBQcm9qZWN0UmVmZXJlbmNlIChTeXN0ZW1Bc3Nl
bWJseSBhc20pCiAJCXsKIAkJCXJlZmVyZW5jZVR5cGUgPSBSZWZlcmVuY2VUeXBlLlBhY2thZ2U7
CiAJCQlyZWZlcmVuY2UgPSBhc20uRnVsbE5hbWU7Ci0JCQlsb2NhbENvcHkgPSBmYWxzZTsKIAkJ
CWlmIChhc20uUGFja2FnZS5Jc0ZyYW1ld29ya1BhY2thZ2UpCiAJCQkJc3BlY2lmaWNWZXJzaW9u
ID0gZmFsc2U7CiAJCQlpZiAoIWFzbS5QYWNrYWdlLklzR2FjUGFja2FnZSkKQEAgLTE4NCwxNiAr
MTgzLDMwIEBAIHB1YmxpYyBzdGF0aWMgUHJvamVjdFJlZmVyZW5jZSBSZW5hbWVSZWZlcmVuY2Ug
KFByb2plY3RSZWZlcmVuY2UgcHJlZiwgc3RyaW5nIG5lCiAJCQogCQlwdWJsaWMgYm9vbCBMb2Nh
bENvcHkgewogCQkJZ2V0IHsKLQkJCQlyZXR1cm4gbG9jYWxDb3B5OworCQkJCS8vIFdoZW4gbm90
IGV4cGxpY2l0bHkgc2V0LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBMb2NhbENvcHkgZGVwZW5kcyBv
biB0aGUgdHlwZSBvZiByZWZlcmVuY2UuCisJCQkJLy8gRm9yIHByb2plY3QgYW5kIGZpbGUgcmVm
ZXJlbmNlcyB0aGUgZGVmYXVsdCBpcyB0cnVlLiBGb3IgZnJhbWV3b3JrIGFuZCBwYWNrYWdlIGFz
c2VtYmxpZXMKKwkJCQkvLyAoaW5jbHVkaW5nIEdBQykgdGhlIGRlZmF1bHQgaXMgZmFsc2UKKwor
CQkJCWlmIChsb2NhbENvcHkuSGFzVmFsdWUpCisJCQkJCXJldHVybiBsb2NhbENvcHkuVmFsdWU7
CisJCQkJcmV0dXJuIERlZmF1bHRMb2NhbENvcHk7CiAJCQl9CiAJCQlzZXQgewogCQkJCWxvY2Fs
Q29weSA9IHZhbHVlOworCQkJCWlmIChvd25lclByb2plY3QgIT0gbnVsbCkKKwkJCQkJb3duZXJQ
cm9qZWN0Lk5vdGlmeU1vZGlmaWVkIChudWxsKTsKIAkJCX0KIAkJfQogCQkKKwkJaW50ZXJuYWwg
Ym9vbCBEZWZhdWx0TG9jYWxDb3B5IHsKKwkJCWdldCB7CisJCQkJcmV0dXJuIHJlZmVyZW5jZVR5
cGUgIT0gUmVmZXJlbmNlVHlwZS5QYWNrYWdlOworCQkJfQorCQl9CisKIAkJcHVibGljIGJvb2wg
Q2FuU2V0TG9jYWxDb3B5IHsKIAkJCWdldCB7Ci0JCQkJcmV0dXJuIGNhY2hlZFBhY2thZ2UgPT0g
bnVsbCB8fCAhY2FjaGVkUGFja2FnZS5Jc0ZyYW1ld29ya1BhY2thZ2U7CisJCQkJcmV0dXJuIHRy
dWU7CiAJCQl9CiAJCX0KIA0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5D
b3JlL01vbm9EZXZlbG9wLlByb2plY3RzL1NvbHV0aW9uSXRlbS5jcw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAg
LTg5OCw3ICs4OTgsNyBAQCBwcm90ZWN0ZWQgdmlydHVhbCB2b2lkIE9uRW5kTG9hZCAoKQogCQkv
Ly8gPHBhcmFtIG5hbWU9J2hpbnQnPgogCQkvLy8gSGludCBhYm91dCB3aGljaCBwYXJ0IG9mIHRo
ZSBzb2x1dGlvbiBpdGVtIGhhcyBiZWVuIG1vZGlmaWVkLiBUaGlzIHdpbGwgdHlwaWNhbGx5IGJl
IHRoZSBwcm9wZXJ0eSBuYW1lLgogCQkvLy8gPC9wYXJhbT4KLQkJcHJvdGVjdGVkIHZvaWQgTm90
aWZ5TW9kaWZpZWQgKHN0cmluZyBoaW50KQorCQlpbnRlcm5hbCBwcm90ZWN0ZWQgdm9pZCBOb3Rp
ZnlNb2RpZmllZCAoc3RyaW5nIGhpbnQpCiAJCXsKIAkJCWlmICghTG9hZGluZykKIAkJCQlJdGVt
SGFuZGxlci5Pbk1vZGlmaWVkIChoaW50KTsNCg0KTW9kaWZpZWQ6IG1haW4vdGVzdHMvVW5pdFRl
c3RzL01vbm9EZXZlbG9wLlByb2plY3RzL0xvY2FsQ29weVRlc3RzLmNzDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA
QCAtMzIsNiArMzIsOCBAQAogdXNpbmcgTlVuaXQuRnJhbWV3b3JrOwogdXNpbmcgVW5pdFRlc3Rz
OwogdXNpbmcgTW9ub0RldmVsb3AuQ29yZTsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgTW9u
b0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3Jpbmc7CiAKIG5hbWVzcGFjZSBNb25vRGV2ZWxv
cC5Qcm9qZWN0cwogewpAQCAtMTk5LDUgKzIwMSw1MSBAQCBwdWJsaWMgdm9pZCBDaGVja0xvY2Fs
Q29weUJ1aWxkV2FybmluZ3MgKCkKIAkJewogCQkJLy8gU2VlIGNvbW1lbnRlZCBhc3NlcnQgaW4g
QXNzZXJ0Q2xlYW5CdWlsZAogCQl9CisKKwkJW1Rlc3RdCisJCXB1YmxpYyB2b2lkIExvY2FsQ29w
eURlZmF1bHQgKCkKKwkJeworCQkJc3RyaW5nIHNvbEZpbGUgPSBVdGlsLkdldFNhbXBsZVByb2pl
Y3QgKCJsb2NhbC1jb3B5LXBhY2thZ2UiLCAiQ29uc29sZVByb2plY3Quc2xuIik7CisKKwkJCVdv
cmtzcGFjZUl0ZW0gaXRlbSA9IFNlcnZpY2VzLlByb2plY3RTZXJ2aWNlLlJlYWRXb3Jrc3BhY2VJ
dGVtIChVdGlsLkdldE1vbml0b3IgKCksIHNvbEZpbGUpOworCQkJU29sdXRpb24gc29sID0gKFNv
bHV0aW9uKSBpdGVtOworCQkJdmFyIHAgPSAoRG90TmV0UHJvamVjdClzb2wuSXRlbXMgWzBdOwor
CisJCQl2YXIgYXIgPSBwLlJlZmVyZW5jZXMuRmlyc3QgKHIgPT4gci5SZWZlcmVuY2UuQ29udGFp
bnMgKCJndGsiKSk7CisJCQlBc3NlcnQuQXJlRXF1YWwgKGZhbHNlLCBhci5Mb2NhbENvcHkpOwor
CQkJYXIuTG9jYWxDb3B5ID0gdHJ1ZTsKKwkJCUFzc2VydC5BcmVFcXVhbCAodHJ1ZSwgYXIuTG9j
YWxDb3B5KTsKKworCQkJYXIgPSBwLlJlZmVyZW5jZXMuRmlyc3QgKHIgPT4gci5SZWZlcmVuY2Uu
Q29udGFpbnMgKCJTeXN0ZW0uRGF0YSIpKTsKKwkJCUFzc2VydC5BcmVFcXVhbCAoZmFsc2UsIGFy
LkxvY2FsQ29weSk7CisJCQlhci5Mb2NhbENvcHkgPSB0cnVlOworCQkJQXNzZXJ0LkFyZUVxdWFs
ICh0cnVlLCBhci5Mb2NhbENvcHkpOworCisJCQlhciA9IHAuUmVmZXJlbmNlcy5GaXJzdCAociA9
PiByLlJlZmVyZW5jZS5Db250YWlucyAoIkxpYlByb2plY3QiKSk7CisJCQlBc3NlcnQuQXJlRXF1
YWwgKHRydWUsIGFyLkxvY2FsQ29weSk7CisJCQlhci5Mb2NhbENvcHkgPSBmYWxzZTsKKwkJCUFz
c2VydC5BcmVFcXVhbCAoZmFsc2UsIGFyLkxvY2FsQ29weSk7CisKKwkJCWFyID0gcC5SZWZlcmVu
Y2VzLkZpcnN0IChyID0+IHIuUmVmZXJlbmNlLkNvbnRhaW5zICgiWHd0IikpOworCQkJQXNzZXJ0
LkFyZUVxdWFsICh0cnVlLCBhci5Mb2NhbENvcHkpOworCQkJYXIuTG9jYWxDb3B5ID0gZmFsc2U7
CisJCQlBc3NlcnQuQXJlRXF1YWwgKGZhbHNlLCBhci5Mb2NhbENvcHkpOworCisJCQlzb2wuU2F2
ZSAobmV3IE51bGxQcm9ncmVzc01vbml0b3IgKCkpOworCQkJc29sLkJ1aWxkIChuZXcgTnVsbFBy
b2dyZXNzTW9uaXRvciAoKSwgIkRlYnVnIik7CisKKwkJCXN0cmluZyBleGVEZWJ1ZyA9IFBsYXRm
b3JtLklzV2luZG93cyA/ICIucGRiIiA6ICIuZXhlLm1kYiI7CisKKwkJCUFzc2VydE91dHB1dEZp
bGVzIChzb2wsICJDb25zb2xlUHJvamVjdCIsICJEZWJ1ZyIsIG5ldyBzdHJpbmdbXSB7CisJCQkJ
IkNvbnNvbGVQcm9qZWN0LmV4ZSIsCisJCQkJIkNvbnNvbGVQcm9qZWN0IiArIGV4ZURlYnVnLAor
CQkJCSJTeXN0ZW0uRGF0YS5kbGwiLAorCQkJCSJndGstc2hhcnAuZGxsIgorCQkJfSk7CisKKwkJ
CXN0cmluZyBwcm9qZWN0WG1sMSA9IFV0aWwuR2V0WG1sRmlsZUluZm9zZXQgKHAuRmlsZU5hbWUu
UGFyZW50RGlyZWN0b3J5LkNvbWJpbmUgKCJDb25zb2xlUHJvamVjdC5jc3Byb2ouc2F2ZWQiKSk7
CisJCQlzdHJpbmcgcHJvamVjdFhtbDIgPSBVdGlsLkdldFhtbEZpbGVJbmZvc2V0IChwLkZpbGVO
YW1lKTsKKwkJCUFzc2VydC5BcmVFcXVhbCAocHJvamVjdFhtbDEsIHByb2plY3RYbWwyKTsKKwkJ
fQogCX0KIH0NCg0KQWRkZWQ6IG1haW4vdGVzdHMvdGVzdC1wcm9qZWN0cy9sb2NhbC1jb3B5LXBh
Y2thZ2UvQ29uc29sZVByb2plY3Quc2xuDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMCwwICsxLDI5IEBACivv
u78NCitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lv
biA5LjAwDQorIyBWaXN1YWwgU3R1ZGlvIDIwMDUNCitQcm9qZWN0KCJ7RkFFMDRFQzAtMzAxRi0x
MUQzLUJGNEItMDBDMDRGNzlFRkJDfSIpID0gIkNvbnNvbGVQcm9qZWN0IiwgIkNvbnNvbGVQcm9q
ZWN0XENvbnNvbGVQcm9qZWN0LmNzcHJvaiIsICJ7NEE5RTM1MjMtNDhGMC00QkRGLUEwRjQtNDlE
QUQ0NDMxRkFCfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgie0ZBRTA0RUMwLTMwMUYtMTFEMy1C
RjRCLTAwQzA0Rjc5RUZCQ30iKSA9ICJMaWJQcm9qZWN0IiwgIkxpYlByb2plY3RcTGliUHJvamVj
dC5jc3Byb2oiLCAiezlBNjgyNjFDLTlCQUMtNEZFQi05M0ZELTlGRUI5MjQzQ0Y0QX0iDQorRW5k
UHJvamVjdA0KK0dsb2JhbA0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBs
YXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KKwkJRGVidWd8QW55IENQVSA9IERlYnVnfEFueSBDUFUN
CisJCVJlbGVhc2V8QW55IENQVSA9IFJlbGVhc2V8QW55IENQVQ0KKwlFbmRHbG9iYWxTZWN0aW9u
DQorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNv
bHV0aW9uDQorCQl7NEE5RTM1MjMtNDhGMC00QkRGLUEwRjQtNDlEQUQ0NDMxRkFCfS5EZWJ1Z3xB
bnkgQ1BVLkFjdGl2ZUNmZyA9IERlYnVnfEFueSBDUFUNCisJCXs0QTlFMzUyMy00OEYwLTRCREYt
QTBGNC00OURBRDQ0MzFGQUJ9LkRlYnVnfEFueSBDUFUuQnVpbGQuMCA9IERlYnVnfEFueSBDUFUN
CisJCXs0QTlFMzUyMy00OEYwLTRCREYtQTBGNC00OURBRDQ0MzFGQUJ9LlJlbGVhc2V8QW55IENQ
VS5BY3RpdmVDZmcgPSBSZWxlYXNlfEFueSBDUFUNCisJCXs0QTlFMzUyMy00OEYwLTRCREYtQTBG
NC00OURBRDQ0MzFGQUJ9LlJlbGVhc2V8QW55IENQVS5CdWlsZC4wID0gUmVsZWFzZXxBbnkgQ1BV
DQorCQl7OUE2ODI2MUMtOUJBQy00RkVCLTkzRkQtOUZFQjkyNDNDRjRBfS5EZWJ1Z3xBbnkgQ1BV
LkFjdGl2ZUNmZyA9IERlYnVnfEFueSBDUFUNCisJCXs5QTY4MjYxQy05QkFDLTRGRUItOTNGRC05
RkVCOTI0M0NGNEF9LkRlYnVnfEFueSBDUFUuQnVpbGQuMCA9IERlYnVnfEFueSBDUFUNCisJCXs5
QTY4MjYxQy05QkFDLTRGRUItOTNGRC05RkVCOTI0M0NGNEF9LlJlbGVhc2V8QW55IENQVS5BY3Rp
dmVDZmcgPSBSZWxlYXNlfEFueSBDUFUNCisJCXs5QTY4MjYxQy05QkFDLTRGRUItOTNGRC05RkVC
OTI0M0NGNEF9LlJlbGVhc2V8QW55IENQVS5CdWlsZC4wID0gUmVsZWFzZXxBbnkgQ1BVDQorCUVu
ZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihNb25vRGV2ZWxvcFByb3BlcnRpZXMpID0g
cHJlU29sdXRpb24NCisJCVN0YXJ0dXBJdGVtID0gQ29uc29sZVByb2plY3RcQ29uc29sZVByb2pl
Y3QuY3Nwcm9qDQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblBy
b3BlcnRpZXMpID0gcHJlU29sdXRpb24NCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KKwlF
bmRHbG9iYWxTZWN0aW9uDQorRW5kR2xvYmFsDQ0KDQpBZGRlZDogbWFpbi90ZXN0cy90ZXN0LXBy
b2plY3RzL2xvY2FsLWNvcHktcGFja2FnZS9Db25zb2xlUHJvamVjdC9Db25zb2xlUHJvamVjdC5j
c3Byb2oNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCkBAIC0wLDAgKzEsNjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5z
PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgor
ICA8UHJvcGVydHlHcm91cD4KKyAgICA8Q29uZmlndXJhdGlvbiBDb25kaXRpb249IiAnJChDb25m
aWd1cmF0aW9uKScgPT0gJycgIj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICA8UGxhdGZvcm0g
Q29uZGl0aW9uPSIgJyQoUGxhdGZvcm0pJyA9PSAnJyAiPkFueUNQVTwvUGxhdGZvcm0+CisgICAg
PFByb2R1Y3RWZXJzaW9uPjguMC41MDcyNzwvUHJvZHVjdFZlcnNpb24+CisgICAgPFNjaGVtYVZl
cnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgIDxQcm9qZWN0R3VpZD57NEE5RTM1MjMtNDhG
MC00QkRGLUEwRjQtNDlEQUQ0NDMxRkFCfTwvUHJvamVjdEd1aWQ+CisgICAgPE91dHB1dFR5cGU+
RXhlPC9PdXRwdXRUeXBlPgorICAgIDxBcHBEZXNpZ25lckZvbGRlcj5Qcm9wZXJ0aWVzPC9BcHBE
ZXNpZ25lckZvbGRlcj4KKyAgICA8Um9vdE5hbWVzcGFjZT5Db25zb2xlUHJvamVjdDwvUm9vdE5h
bWVzcGFjZT4KKyAgICA8QXNzZW1ibHlOYW1lPkNvbnNvbGVQcm9qZWN0PC9Bc3NlbWJseU5hbWU+
CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIgJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknID09ICdEZWJ1Z3xBbnlDUFUnICI+CisgICAgPERlYnVn
U3ltYm9scz5UcnVlPC9EZWJ1Z1N5bWJvbHM+CisgICAgPERlYnVnVHlwZT5mdWxsPC9EZWJ1Z1R5
cGU+CisgICAgPE9wdGltaXplPkZhbHNlPC9PcHRpbWl6ZT4KKyAgICA8T3V0cHV0UGF0aD5iaW5c
RGVidWdcPC9PdXRwdXRQYXRoPgorICAgIDxEZWZpbmVDb25zdGFudHM+REVCVUc7VFJBQ0U8L0Rl
ZmluZUNvbnN0YW50cz4KKyAgICA8RXJyb3JSZXBvcnQ+cHJvbXB0PC9FcnJvclJlcG9ydD4KKyAg
ICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdMZXZlbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IiAnJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKScg
PT0gJ1JlbGVhc2V8QW55Q1BVJyAiPgorICAgIDxEZWJ1Z1R5cGU+cGRib25seTwvRGVidWdUeXBl
PgorICAgIDxPcHRpbWl6ZT5UcnVlPC9PcHRpbWl6ZT4KKyAgICA8T3V0cHV0UGF0aD5iaW5cUmVs
ZWFzZVw8L091dHB1dFBhdGg+CisgICAgPERlZmluZUNvbnN0YW50cz5UUkFDRTwvRGVmaW5lQ29u
c3RhbnRzPgorICAgIDxFcnJvclJlcG9ydD5wcm9tcHQ8L0Vycm9yUmVwb3J0PgorICAgIDxXYXJu
aW5nTGV2ZWw+NDwvV2FybmluZ0xldmVsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtR3Jv
dXA+CisgICAgPFJlZmVyZW5jZSBJbmNsdWRlPSJTeXN0ZW0iIC8+CisgICAgPFJlZmVyZW5jZSBJ
bmNsdWRlPSJTeXN0ZW0uRGF0YSIgLz4KKyAgICA8UmVmZXJlbmNlIEluY2x1ZGU9IlN5c3RlbS5Y
bWwiIC8+CisgICAgPFJlZmVyZW5jZSBJbmNsdWRlPSJndGstc2hhcnAsIFZlcnNpb249Mi4xMi4w
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49MzVlMTAxOTVkYWIzYzk5ZiI+Cisg
ICAgICA8UHJpdmF0ZT5GYWxzZTwvUHJpdmF0ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVm
ZXJlbmNlIEluY2x1ZGU9Ilh3dCI+CisgICAgICA8SGludFBhdGg+Li5cLi5cLi5cLi5cYnVpbGRc
YmluXFh3dC5kbGw8L0hpbnRQYXRoPgorICAgIDwvUmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4K
KyAgPEl0ZW1Hcm91cD4KKyAgICA8Q29tcGlsZSBJbmNsdWRlPSJQcm9ncmFtLmNzIiAvPgorICAg
IDxDb21waWxlIEluY2x1ZGU9IlByb3BlcnRpZXNcQXNzZW1ibHlJbmZvLmNzIiAvPgorICA8L0l0
ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKE1TQnVpbGRCaW5QYXRoKVxNaWNyb3NvZnQu
Q1NoYXJwLnRhcmdldHMiIC8+CisgIDwhLS0gVG8gbW9kaWZ5IHlvdXIgYnVpbGQgcHJvY2Vzcywg
YWRkIHlvdXIgdGFzayBpbnNpZGUgb25lIG9mIHRoZSB0YXJnZXRzIGJlbG93IGFuZCB1bmNvbW1l
bnQgaXQuIAorICAgICAgIE90aGVyIHNpbWlsYXIgZXh0ZW5zaW9uIHBvaW50cyBleGlzdCwgc2Vl
IE1pY3Jvc29mdC5Db21tb24udGFyZ2V0cy4KKyAgPFRhcmdldCBOYW1lPSJCZWZvcmVCdWlsZCI+
CisgIDwvVGFyZ2V0PgorICA8VGFyZ2V0IE5hbWU9IkFmdGVyQnVpbGQiPgorICA8L1RhcmdldD4K
KyAgLS0+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5c
TGliUHJvamVjdFxMaWJQcm9qZWN0LmNzcHJvaiI+CisgICAgICA8UHJvamVjdD57OUE2ODI2MUMt
OUJBQy00RkVCLTkzRkQtOUZFQjkyNDNDRjRBfTwvUHJvamVjdD4KKyAgICAgIDxOYW1lPkxpYlBy
b2plY3Q8L05hbWU+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKzwv
UHJvamVjdD4NCg0KQWRkZWQ6IG1haW4vdGVzdHMvdGVzdC1wcm9qZWN0cy9sb2NhbC1jb3B5LXBh
Y2thZ2UvQ29uc29sZVByb2plY3QvUHJvZ3JhbS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTAsMCArMSwx
NCBAQAordXNpbmcgU3lzdGVtOw0KK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOw0K
K3VzaW5nIFN5c3RlbS5UZXh0Ow0KKw0KK25hbWVzcGFjZSBDb25zb2xlUHJvamVjdA0KK3sNCisg
ICAgY2xhc3MgUHJvZ3JhbQ0KKyAgICB7DQorICAgICAgICBzdGF0aWMgdm9pZCBNYWluIChzdHJp
bmdbXSBhcmdzKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lICgi
SGVsbG8gd29ybGQiKTsNCisgICAgICAgIH0NCisgICAgfQ0KK30NDQoNCkFkZGVkOiBtYWluL3Rl
c3RzL3Rlc3QtcHJvamVjdHMvbG9jYWwtY29weS1wYWNrYWdlL0NvbnNvbGVQcm9qZWN0L1Byb3Bl
cnRpZXMvQXNzZW1ibHlJbmZvLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMCwwICsxLDMzIEBACivvu791
c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCit1c2luZyBTeXN0ZW0uUnVudGltZS5Db21waWxlclNl
cnZpY2VzOw0KK3VzaW5nIFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlczsNCisNCisvLyBH
ZW5lcmFsIEluZm9ybWF0aW9uIGFib3V0IGFuIGFzc2VtYmx5IGlzIGNvbnRyb2xsZWQgdGhyb3Vn
aCB0aGUgZm9sbG93aW5nIA0KKy8vIHNldCBvZiBhdHRyaWJ1dGVzLiBDaGFuZ2UgdGhlc2UgYXR0
cmlidXRlIHZhbHVlcyB0byBtb2RpZnkgdGhlIGluZm9ybWF0aW9uDQorLy8gYXNzb2NpYXRlZCB3
aXRoIGFuIGFzc2VtYmx5Lg0KK1thc3NlbWJseTogQXNzZW1ibHlUaXRsZSAoIkNvbnNvbGVQcm9q
ZWN0IildDQorW2Fzc2VtYmx5OiBBc3NlbWJseURlc2NyaXB0aW9uICgiIildDQorW2Fzc2VtYmx5
OiBBc3NlbWJseUNvbmZpZ3VyYXRpb24gKCIiKV0NCitbYXNzZW1ibHk6IEFzc2VtYmx5Q29tcGFu
eSAoIiIpXQ0KK1thc3NlbWJseTogQXNzZW1ibHlQcm9kdWN0ICgiQ29uc29sZVByb2plY3QiKV0N
CitbYXNzZW1ibHk6IEFzc2VtYmx5Q29weXJpZ2h0ICgiQ29weXJpZ2h0IMKpICAyMDA4IildDQor
W2Fzc2VtYmx5OiBBc3NlbWJseVRyYWRlbWFyayAoIiIpXQ0KK1thc3NlbWJseTogQXNzZW1ibHlD
dWx0dXJlICgiIildDQorDQorLy8gU2V0dGluZyBDb21WaXNpYmxlIHRvIGZhbHNlIG1ha2VzIHRo
ZSB0eXBlcyBpbiB0aGlzIGFzc2VtYmx5IG5vdCB2aXNpYmxlIA0KKy8vIHRvIENPTSBjb21wb25l
bnRzLiAgSWYgeW91IG5lZWQgdG8gYWNjZXNzIGEgdHlwZSBpbiB0aGlzIGFzc2VtYmx5IGZyb20g
DQorLy8gQ09NLCBzZXQgdGhlIENvbVZpc2libGUgYXR0cmlidXRlIHRvIHRydWUgb24gdGhhdCB0
eXBlLg0KK1thc3NlbWJseTogQ29tVmlzaWJsZSAoZmFsc2UpXQ0KKw0KKy8vIFRoZSBmb2xsb3dp
bmcgR1VJRCBpcyBmb3IgdGhlIElEIG9mIHRoZSB0eXBlbGliIGlmIHRoaXMgcHJvamVjdCBpcyBl
eHBvc2VkIHRvIENPTQ0KK1thc3NlbWJseTogR3VpZCAoImExYjg1YzVmLWU1MDYtNDYyYS05MTFj
LWNiZTY3YzAzNWM5MyIpXQ0KKw0KKy8vIFZlcnNpb24gaW5mb3JtYXRpb24gZm9yIGFuIGFzc2Vt
Ymx5IGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgZm91ciB2YWx1ZXM6DQorLy8NCisvLyAgICAg
IE1ham9yIFZlcnNpb24NCisvLyAgICAgIE1pbm9yIFZlcnNpb24gDQorLy8gICAgICBCdWlsZCBO
dW1iZXINCisvLyAgICAgIFJldmlzaW9uDQorLy8NCitbYXNzZW1ibHk6IEFzc2VtYmx5VmVyc2lv
biAoIjEuMC4wLjAiKV0NCitbYXNzZW1ibHk6IEFzc2VtYmx5RmlsZVZlcnNpb24gKCIxLjAuMC4w
IildDQ0KDQpBZGRlZDogbWFpbi90ZXN0cy90ZXN0LXByb2plY3RzL2xvY2FsLWNvcHktcGFja2Fn
ZS9MaWJQcm9qZWN0L0xpYlByb2plY3QuY3Nwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMCwwICsxLDM5
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVm
YXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9k
ZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPENvbmZpZ3Vy
YXRpb24gQ29uZGl0aW9uPSIgJyQoQ29uZmlndXJhdGlvbiknID09ICcnICI+RGVidWc8L0NvbmZp
Z3VyYXRpb24+CisgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iICckKFBsYXRmb3JtKScgPT0gJycg
Ij5BbnlDUFU8L1BsYXRmb3JtPgorICAgIDxQcm9kdWN0VmVyc2lvbj44LjAuNTA3Mjc8L1Byb2R1
Y3RWZXJzaW9uPgorICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICA8
UHJvamVjdEd1aWQ+ezlBNjgyNjFDLTlCQUMtNEZFQi05M0ZELTlGRUI5MjQzQ0Y0QX08L1Byb2pl
Y3RHdWlkPgorICAgIDxPdXRwdXRUeXBlPkxpYnJhcnk8L091dHB1dFR5cGU+CisgICAgPFJvb3RO
YW1lc3BhY2U+TGliUHJvamVjdDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8QXNzZW1ibHlOYW1lPkxp
YlByb2plY3Q8L0Fzc2VtYmx5TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IiAnJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKScgPT0gJ0RlYnVn
fEFueUNQVScgIj4KKyAgICA8RGVidWdTeW1ib2xzPnRydWU8L0RlYnVnU3ltYm9scz4KKyAgICA8
RGVidWdUeXBlPmZ1bGw8L0RlYnVnVHlwZT4KKyAgICA8T3B0aW1pemU+ZmFsc2U8L09wdGltaXpl
PgorICAgIDxPdXRwdXRQYXRoPmJpblxEZWJ1ZzwvT3V0cHV0UGF0aD4KKyAgICA8RGVmaW5lQ29u
c3RhbnRzPkRFQlVHOzwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDxFcnJvclJlcG9ydD5wcm9tcHQ8
L0Vycm9yUmVwb3J0PgorICAgIDxXYXJuaW5nTGV2ZWw+NDwvV2FybmluZ0xldmVsPgorICAgIDxD
b25zb2xlUGF1c2U+ZmFsc2U8L0NvbnNvbGVQYXVzZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IiAnJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKScg
PT0gJ1JlbGVhc2V8QW55Q1BVJyAiPgorICAgIDxEZWJ1Z1R5cGU+ZnVsbDwvRGVidWdUeXBlPgor
ICAgIDxPcHRpbWl6ZT50cnVlPC9PcHRpbWl6ZT4KKyAgICA8T3V0cHV0UGF0aD5iaW5cUmVsZWFz
ZTwvT3V0cHV0UGF0aD4KKyAgICA8RXJyb3JSZXBvcnQ+cHJvbXB0PC9FcnJvclJlcG9ydD4KKyAg
ICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8Q29uc29sZVBhdXNlPmZhbHNl
PC9Db25zb2xlUGF1c2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8
UmVmZXJlbmNlIEluY2x1ZGU9IlN5c3RlbSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3Jv
dXA+CisgICAgPENvbXBpbGUgSW5jbHVkZT0iTXlDbGFzcy5jcyIgLz4KKyAgICA8Q29tcGlsZSBJ
bmNsdWRlPSJQcm9wZXJ0aWVzXEFzc2VtYmx5SW5mby5jcyIgLz4KKyAgPC9JdGVtR3JvdXA+Cisg
IDxJbXBvcnQgUHJvamVjdD0iJChNU0J1aWxkQmluUGF0aClcTWljcm9zb2Z0LkNTaGFycC50YXJn
ZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCg0KQWRkZWQ6
IG1haW4vdGVzdHMvdGVzdC1wcm9qZWN0cy9sb2NhbC1jb3B5LXBhY2thZ2UvTGliUHJvamVjdC9N
eUNsYXNzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMCwwICsxLDEyIEBACivvu791c2luZyBTeXN0ZW07
CisKK25hbWVzcGFjZSBMaWJQcm9qZWN0Cit7CisJcHVibGljIGNsYXNzIE15Q2xhc3MKKwl7CisJ
CXB1YmxpYyBNeUNsYXNzICgpCisJCXsKKwkJfQorCX0KK30KKw0KDQpBZGRlZDogbWFpbi90ZXN0
cy90ZXN0LXByb2plY3RzL2xvY2FsLWNvcHktcGFja2FnZS9MaWJQcm9qZWN0L1Byb3BlcnRpZXMv
QXNzZW1ibHlJbmZvLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMCwwICsxLDIyIEBACivvu791c2luZyBT
eXN0ZW0uUmVmbGVjdGlvbjsKK3VzaW5nIFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXM7
CisKKy8vIEluZm9ybWF0aW9uIGFib3V0IHRoaXMgYXNzZW1ibHkgaXMgZGVmaW5lZCBieSB0aGUg
Zm9sbG93aW5nIGF0dHJpYnV0ZXMuCisvLyBDaGFuZ2UgdGhlbSB0byB0aGUgdmFsdWVzIHNwZWNp
ZmljIHRvIHlvdXIgcHJvamVjdC4KK1thc3NlbWJseTogQXNzZW1ibHlUaXRsZSAoIkxpYlByb2pl
Y3QiKV0KK1thc3NlbWJseTogQXNzZW1ibHlEZXNjcmlwdGlvbiAoIiIpXQorW2Fzc2VtYmx5OiBB
c3NlbWJseUNvbmZpZ3VyYXRpb24gKCIiKV0KK1thc3NlbWJseTogQXNzZW1ibHlDb21wYW55ICgi
IildCitbYXNzZW1ibHk6IEFzc2VtYmx5UHJvZHVjdCAoIiIpXQorW2Fzc2VtYmx5OiBBc3NlbWJs
eUNvcHlyaWdodCAoIlhhbWFyaW4gSW5jLiIpXQorW2Fzc2VtYmx5OiBBc3NlbWJseVRyYWRlbWFy
ayAoIiIpXQorW2Fzc2VtYmx5OiBBc3NlbWJseUN1bHR1cmUgKCIiKV0KKy8vIFRoZSBhc3NlbWJs
eSB2ZXJzaW9uIGhhcyB0aGUgZm9ybWF0ICJ7TWFqb3J9LntNaW5vcn0ue0J1aWxkfS57UmV2aXNp
b259Ii4KKy8vIFRoZSBmb3JtICJ7TWFqb3J9LntNaW5vcn0uKiIgd2lsbCBhdXRvbWF0aWNhbGx5
IHVwZGF0ZSB0aGUgYnVpbGQgYW5kIHJldmlzaW9uLAorLy8gYW5kICJ7TWFqb3J9LntNaW5vcn0u
e0J1aWxkfS4qIiB3aWxsIHVwZGF0ZSBqdXN0IHRoZSByZXZpc2lvbi4KK1thc3NlbWJseTogQXNz
ZW1ibHlWZXJzaW9uICgiMS4wLioiKV0KKy8vIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUg
dXNlZCB0byBzcGVjaWZ5IHRoZSBzaWduaW5nIGtleSBmb3IgdGhlIGFzc2VtYmx5LAorLy8gaWYg
ZGVzaXJlZC4gU2VlIHRoZSBNb25vIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24g
YWJvdXQgc2lnbmluZy4KKy8vW2Fzc2VtYmx5OiBBc3NlbWJseURlbGF5U2lnbihmYWxzZSldCisv
L1thc3NlbWJseTogQXNzZW1ibHlLZXlGaWxlKCIiKV0KKw0KX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTW9uby1wYXRjaGVzIG1haWxsaXN0ICAtICBNb25v
LXBhdGNoZXNAbGlzdHMueGltaWFuLmNvbQpodHRwOi8vbGlzdHMueGltaWFuLmNvbS9tYWlsbWFu
L2xpc3RpbmZvL21vbm8tcGF0Y2hlcwo=