[mono/monodevelop] [55 commits] 2280ebbd: bumped version-checks for md-addins fixes
| Newsgroups | gmane.comp.gnome.mono.patches |
|---|---|
| Message-ID | <000001427cc67745-c7d1206c-b58e-4a01-8fed-37480ac445a8-000000@email.amazonses.com> |
DQogICBCcmFuY2g6IHJlZnMvaGVhZHMvcmV0aW5hDQogICAgIEhvbWU6IGh0dHBzOi8vZ2l0aHVi LmNvbS9tb25vL21vbm9kZXZlbG9wDQogIENvbXBhcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25v L21vbm9kZXZlbG9wL2NvbXBhcmUvZWExYmQzMGI4NDgzLi4uYmUxOTk4ZjU1YTRhDQoNCiAgIENv bW1pdDogMjI4MGViYmQwM2U2OTMxOTgwYWE1ZDg2ZDZkMjE1NjE5YThhM2MwNQ0KICAgQXV0aG9y OiBKZWZmcmV5IFN0ZWRmYXN0IDxmZWpqQGdub21lLm9yZz4gKGpzdGVkZmFzdCkNCiAgICAgRGF0 ZTogMjAxMy0xMS0xNCAxNToyNzozNSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29t L21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzIyODBlYmJkMDNlNjkzMTk4MGFhNWQ4NmQ2ZDIxNTYx OWE4YTNjMDUNCg0KYnVtcGVkIHZlcnNpb24tY2hlY2tzIGZvciBtZC1hZGRpbnMgZml4ZXMNCg0K Q2hhbmdlZCBwYXRoczoKICBNIHZlcnNpb24tY2hlY2tzCg0KTW9kaWZpZWQ6IHZlcnNpb24tY2hl Y2tzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpAQCAtMTcsNyArMTcsNyBAQCBERVBbMF09bWQtYWRkaW5zCiBERVBf TkFNRVswXT1NREFERElOUwogREVQX1BBVEhbMF09JHt0b3Bfc3JjZGlyfS8uLi9tZC1hZGRpbnMK IERFUF9NT0RVTEVbMF09Z2l0QGdpdGh1Yi5jb206eGFtYXJpbi9tZC1hZGRpbnMuZ2l0Ci1ERVBf TkVFREVEX1ZFUlNJT05bMF09MzhlMGYxNzE0NDcxNzM5YzFjNGI1MWQ1Yjk0MDMzMmJjYzNjY2Fk NworREVQX05FRURFRF9WRVJTSU9OWzBdPTRlYTA0ZGE2YjIwN2FkYWVkNTc4YjI2OWQ5ODhmMWFl M2Y2MDIxZmEKIERFUF9CUkFOQ0hfQU5EX1JFTU9URVswXT0ibWFzdGVyIG9yaWdpbi9tYXN0ZXIi CiAKICMgaGVhcC1zaG90DQoNCiAgIENvbW1pdDogOWI3OGM4YzQ4MjJkYTU1MWNhNTQ5ZDQ0NDRj MzQzNWRiMGRkMmExZg0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAo VGhlcnpvaykNCiAgICAgRGF0ZTogMjAxMy0xMS0xNCAxNjo1NjoxNSBHTVQNCiAgICAgIFVSTDog aHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzliNzhjOGM0ODIyZGE1 NTFjYTU0OWQ0NDQ0YzM0MzVkYjBkZDJhMWYNCg0KQnVnIDE2MjI0IC0gVXNpbmcgIlJldmlldyBh bmQgQ29tbWl0IiBjb21tYW5kIGZyb20gU29sdXRpb24gUGFkIHZlcnNpb24gY29udHJvbCBzdWIt bWVudSBkb3VibGVzIGNvbW1pdCBlbnRyaWVzLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9z cmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9E ZXZlbG9wLlZlcnNpb25Db250cm9sL0NoYW5nZVNldC5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9h ZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVs b3AuVmVyc2lvbkNvbnRyb2wvQ2hhbmdlU2V0LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNjEsNyArNjEs NyBAQCBwdWJsaWMgc3RyaW5nIEdlbmVyYXRlR2xvYmFsQ29tbWVudCAoQ29tbWl0TWVzc2FnZUZv cm1hdCBmb3JtYXQsIE1vbm9EZXZlbG9wLlBybwogCQlwdWJsaWMgc3RyaW5nIEdlbmVyYXRlUGF0 aENvbW1lbnQgKHN0cmluZyBwYXRoLCBJRW51bWVyYWJsZTxDaGFuZ2VTZXRJdGVtPiBpdGVtcywg CiAJCQlDb21taXRNZXNzYWdlRm9ybWF0IG1lc3NhZ2VGb3JtYXQsIE1vbm9EZXZlbG9wLlByb2pl Y3RzLkF1dGhvckluZm9ybWF0aW9uIHVzZXJJbmZvKQogCQl7Ci0JCQlDaGFuZ2VMb2dXcml0ZXIg d3JpdGVyID0gbmV3IENoYW5nZUxvZ1dyaXRlciAocGF0aCwgdXNlckluZm8pOworCQkJdmFyIHdy aXRlciA9IG5ldyBDaGFuZ2VMb2dXcml0ZXIgKHBhdGgsIHVzZXJJbmZvKTsKIAkJCXdyaXRlci5N ZXNzYWdlRm9ybWF0ID0gbWVzc2FnZUZvcm1hdDsKIAkJCQogCQkJZm9yZWFjaCAoQ2hhbmdlU2V0 SXRlbSBpdGVtIGluIGl0ZW1zKSB7CkBAIC04NSw4ICs4NSw4IEBAIHB1YmxpYyBzdHJpbmcgR2Vu ZXJhdGVHbG9iYWxDb21tZW50IChDb21taXRNZXNzYWdlRm9ybWF0IGZvcm1hdCwgTW9ub0RldmVs b3AuUHJvCiANCiAJCXB1YmxpYyBib29sIENvbnRhaW5zRmlsZSAoRmlsZVBhdGggZmlsZU5hbWUp CiAJCXsKLQkJCWZvciAoaW50IG49MDsgbjxpdGVtcy5Db3VudDsgbisrKQotCQkJCWlmIChpdGVt cyBbbl0uTG9jYWxQYXRoID09IGZpbGVOYW1lKQorCQkJZm9yZWFjaCAodmFyIGl0ZW0gaW4gaXRl bXMpCisJCQkJaWYgKGl0ZW0uTG9jYWxQYXRoID09IGZpbGVOYW1lKQogCQkJCQlyZXR1cm4gdHJ1 ZTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQ0KQEAgLTk4LDcgKzk4LDExIEBAIHB1YmxpYyBDaGFu Z2VTZXRJdGVtIEFkZEZpbGUgKEZpbGVQYXRoIGZpbGUpCiAJCQogCQlwdWJsaWMgQ2hhbmdlU2V0 SXRlbSBBZGRGaWxlIChWZXJzaW9uSW5mbyBmaWxlVmVyc2lvbkluZm8pCiAJCXsKLQkJCUNoYW5n ZVNldEl0ZW0gaXRlbSA9IG5ldyBDaGFuZ2VTZXRJdGVtIChmaWxlVmVyc2lvbkluZm8pOworCQkJ Q2hhbmdlU2V0SXRlbSBpdGVtID0gR2V0RmlsZUl0ZW0gKGZpbGVWZXJzaW9uSW5mby5Mb2NhbFBh dGgpOworCQkJaWYgKGl0ZW0gIT0gbnVsbCkKKwkJCQlyZXR1cm4gaXRlbTsKKworCQkJaXRlbSA9 IG5ldyBDaGFuZ2VTZXRJdGVtIChmaWxlVmVyc2lvbkluZm8pOwogCQkJaXRlbXMuQWRkIChpdGVt KTsKIAkJCXJldHVybiBpdGVtOwogCQl9CkBAIC0xMzQsNyArMTM4LDcgQEAgcHVibGljIHZvaWQg UmVtb3ZlSXRlbSAoQ2hhbmdlU2V0SXRlbSBpdGVtKQogCQkKIAkJcHVibGljIENoYW5nZVNldCBD bG9uZSAoKQogCQl7Ci0JCQlDaGFuZ2VTZXQgY3MgPSAoQ2hhbmdlU2V0KSBNZW1iZXJ3aXNlQ2xv bmUgKCk7CisJCQl2YXIgY3MgPSAoQ2hhbmdlU2V0KSBNZW1iZXJ3aXNlQ2xvbmUgKCk7CiAJCQlj cy5Db3B5RnJvbSAodGhpcyk7CiAJCQlyZXR1cm4gY3M7CiAJCX0KQEAgLTE4NCw3ICsxODgsNyBA QCBpbnRlcm5hbCBDaGFuZ2VTZXRJdGVtIChWZXJzaW9uSW5mbyB2ZXJzaW9uSW5mbykKIAkJCiAJ CXB1YmxpYyBDaGFuZ2VTZXRJdGVtIENsb25lICgpCiAJCXsKLQkJCUNoYW5nZVNldEl0ZW0gY3Mg PSAoQ2hhbmdlU2V0SXRlbSkgTWVtYmVyd2lzZUNsb25lICgpOworCQkJdmFyIGNzID0gKENoYW5n ZVNldEl0ZW0pIE1lbWJlcndpc2VDbG9uZSAoKTsKIAkJCWNzLkNvcHlGcm9tICh0aGlzKTsKIAkJ CXJldHVybiBjczsKIAkJfQ0KDQogICBDb21taXQ6IDlmYzNiNTgwNWVjZWE0MDgxNDJmODViNWUy MjBiZDk4NmZlNTE1NDQNCiAgIEF1dGhvcjogSmVmZnJleSBTdGVkZmFzdCA8amVmZkB4YW1hcmlu LmNvbT4gKGpzdGVkZmFzdCkNCiAgICAgRGF0ZTogMjAxMy0xMS0xNCAxNzo0NzozOCBHTVQNCiAg ICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzlmYzNi NTgwNWVjZWE0MDgxNDJmODViNWUyMjBiZDk4NmZlNTE1NDQNCg0KW0lkZV0gcmVhZG9ubHlpZmlj YXRpb24NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRl L01vbm9EZXZlbG9wLklkZS5HdWkuT3B0aW9uUGFuZWxzL01vbm9SdW50aW1lUGFuZWwuY3MKICBN IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklkZS5Qcm9qZWN0cy5P cHRpb25QYW5lbHMvQ29tYmluZUJ1aWxkT3B0aW9ucy5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25v RGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlByb2plY3RzLk9wdGlvblBhbmVscy9SdW50aW1l T3B0aW9uc1BhbmVsLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRl L01vbm9EZXZlbG9wLklkZS5HdWkuT3B0aW9uUGFuZWxzL01vbm9SdW50aW1lUGFuZWwuY3MNCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCkBAIC0yNSwxMiArMjUsMTUgQEAKIC8vIFRIRSBTT0ZUV0FSRS4KIAogdXNpbmcg U3lzdGVtOwordXNpbmcgU3lzdGVtLkxpbnE7CiB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2Vu ZXJpYzsKKwordXNpbmcgR3RrOworCiB1c2luZyBNb25vRGV2ZWxvcC5Db3JlOwogdXNpbmcgTW9u b0RldmVsb3AuSWRlLkd1aS5EaWFsb2dzOwogdXNpbmcgTW9ub0RldmVsb3AuQ29yZS5Bc3NlbWJs aWVzOwogdXNpbmcgTW9ub0RldmVsb3AuQ29tcG9uZW50czsKLXVzaW5nIEd0azsKIAogbmFtZXNw YWNlIE1vbm9EZXZlbG9wLklkZS5HdWkuT3B0aW9uUGFuZWxzCiB7CkBAIC01Miw5ICs1NSw5IEBA IHB1YmxpYyBvdmVycmlkZSB2b2lkIEFwcGx5Q2hhbmdlcyAoKQogCVtTeXN0ZW0uQ29tcG9uZW50 TW9kZWwuVG9vbGJveEl0ZW0odHJ1ZSldCiAJaW50ZXJuYWwgcGFydGlhbCBjbGFzcyBNb25vUnVu dGltZVBhbmVsV2lkZ2V0IDogR3RrLkJpbgogCXsKLQkJTGlzdFN0b3JlIHN0b3JlOwotCQlMaXN0 PE1vbm9SdW50aW1lSW5mbz4gbmV3SW5mb3MgPSBuZXcgTGlzdDxNb25vUnVudGltZUluZm8+ICgp OwotCQlMaXN0PFRhcmdldFJ1bnRpbWU+IHJlbW92ZWRSdW50aW1lcyA9IG5ldyBMaXN0PFRhcmdl dFJ1bnRpbWU+ICgpOworCQlyZWFkb25seSBMaXN0PFRhcmdldFJ1bnRpbWU+IHJlbW92ZWRSdW50 aW1lcyA9IG5ldyBMaXN0PFRhcmdldFJ1bnRpbWU+ICgpOworCQlyZWFkb25seSBMaXN0PE1vbm9S dW50aW1lSW5mbz4gbmV3SW5mb3MgPSBuZXcgTGlzdDxNb25vUnVudGltZUluZm8+ICgpOworCQly ZWFkb25seSBMaXN0U3RvcmUgc3RvcmU7CiAJCVRyZWVJdGVyIGRlZmF1bHRJdGVyOwogCQlUcmVl SXRlciBydW5uaW5nSXRlcjsKIAkJCkBAIC0xMDEsMTMgKzEwNCwxNCBAQCBwdWJsaWMgdm9pZCBT dG9yZSAoKQogCQkJTW9ub1J1bnRpbWVJbmZvIG5ld0RlZmF1bHRJbmZvID0gb2IgYXMgTW9ub1J1 bnRpbWVJbmZvOwogCQkJaWYgKG9iIGlzIFRhcmdldFJ1bnRpbWUpCiAJCQkJSWRlQXBwLlByZWZl cmVuY2VzLkRlZmF1bHRUYXJnZXRSdW50aW1lID0gKFRhcmdldFJ1bnRpbWUpb2I7Ci0JCQkKLQkJ CWZvcmVhY2ggKE1vbm9SdW50aW1lSW5mbyByaW5mbyBpbiBuZXdJbmZvcykgeworCisJCQlmb3Jl YWNoICh2YXIgcmluZm8gaW4gbmV3SW5mb3MpIHsKIAkJCQlUYXJnZXRSdW50aW1lIHRyID0gTW9u b1RhcmdldFJ1bnRpbWUuUmVnaXN0ZXJSdW50aW1lIChyaW5mbyk7CiAJCQkJaWYgKHJpbmZvID09 IG5ld0RlZmF1bHRJbmZvKQogCQkJCQlJZGVBcHAuUHJlZmVyZW5jZXMuRGVmYXVsdFRhcmdldFJ1 bnRpbWUgPSB0cjsKIAkJCX0KLQkJCWZvcmVhY2ggKE1vbm9UYXJnZXRSdW50aW1lIHRyIGluIHJl bW92ZWRSdW50aW1lcykKKworCQkJZm9yZWFjaCAodmFyIHRyIGluIHJlbW92ZWRSdW50aW1lcy5P ZlR5cGU8TW9ub1RhcmdldFJ1bnRpbWU+ICgpKQogCQkJCU1vbm9UYXJnZXRSdW50aW1lLlVucmVn aXN0ZXJSdW50aW1lICh0cik7CiAJCQkKIAkJfQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9N b25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlByb2plY3RzLk9wdGlvblBhbmVscy9Db21i aW5lQnVpbGRPcHRpb25zLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWMg b3ZlcnJpZGUgdm9pZCBBcHBseUNoYW5nZXMgKCkKIAogCXBhcnRpYWwgY2xhc3MgQ29tYmluZUJ1 aWxkT3B0aW9uc1dpZGdldCA6IEd0ay5CaW4gCiAJewotCQlTb2x1dGlvbiBzb2x1dGlvbjsKKwkJ cmVhZG9ubHkgU29sdXRpb24gc29sdXRpb247CiAJCQogCQlwdWJsaWMgQ29tYmluZUJ1aWxkT3B0 aW9uc1dpZGdldCAoU29sdXRpb24gc29sdXRpb24pCiAJCXsNCg0KTW9kaWZpZWQ6IG1haW4vc3Jj L2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklkZS5Qcm9qZWN0cy5PcHRpb25QYW5l bHMvUnVudGltZU9wdGlvbnNQYW5lbC5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTYwLDggKzYwLDggQEAg cHVibGljIG92ZXJyaWRlIHZvaWQgQXBwbHlDaGFuZ2VzKCkKIAogCXBhcnRpYWwgY2xhc3MgUnVu dGltZU9wdGlvbnNQYW5lbFdpZGdldCA6IEd0ay5CaW4gCiAJewotCQlEb3ROZXRQcm9qZWN0IHBy b2plY3Q7Ci0JCUxpc3Q8VGFyZ2V0RnJhbWV3b3JrPiBmcmFtZXdvcmtzOworCQlyZWFkb25seSBM aXN0PFRhcmdldEZyYW1ld29yaz4gZnJhbWV3b3JrczsKKwkJcmVhZG9ubHkgRG90TmV0UHJvamVj dCBwcm9qZWN0OwogCiAJCXB1YmxpYyBSdW50aW1lT3B0aW9uc1BhbmVsV2lkZ2V0IChEb3ROZXRQ cm9qZWN0IHByb2plY3QsIElFbnVtZXJhYmxlPEl0ZW1Db25maWd1cmF0aW9uPiBjb25maWd1cmF0 aW9ucykKIAkJewpAQCAtODMsNyArODMsNyBAQCBwdWJsaWMgUnVudGltZU9wdGlvbnNQYW5lbFdp ZGdldCAoRG90TmV0UHJvamVjdCBwcm9qZWN0LCBJRW51bWVyYWJsZTxJdGVtQ29uZmlndQogCQkJ CW5vdEluc3RhbGxlZCA9IHRydWU7CiAJCQkJZnJhbWV3b3Jrcy5BZGQgKHByb2plY3QuVGFyZ2V0 RnJhbWV3b3JrKTsKIAkJCX0KLQkJCQkKKwogCQkJLy9zb3J0IGJ5IGlkIGFzY2VuZGluZywgdmVy c2lvbiBkZXNjZW5kaW5nLCBwcm9maWxlIGFzY2VuZGluZwogCQkJZnJhbWV3b3Jrcy5Tb3J0ICgo eCwgeSkgPT4gewogCQkJCXZhciBjbXAgPSBzdHJpbmcuQ29tcGFyZU9yZGluYWwgKHguSWQuSWRl bnRpZmllciwgeS5JZC5JZGVudGlmaWVyKTsNCg0KICAgQ29tbWl0OiA2YmI0YTNjMTc0OTE2MTU2 MDdiODk2MGZlY2E2NTU2MjFlODc1MzFkDQogICBBdXRob3I6IEplZmZyZXkgU3RlZGZhc3QgPGpl ZmZAeGFtYXJpbi5jb20+IChqc3RlZGZhc3QpDQogICAgIERhdGU6IDIwMTMtMTEtMTQgMjA6NDg6 MDQgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2Nv bW1pdC82YmI0YTNjMTc0OTE2MTU2MDdiODk2MGZlY2E2NTU2MjFlODc1MzFkDQoNCnVwZGF0ZWQg ZGVidWdnZXItbGlicw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9leHRlcm5hbC9kZWJ1Z2dl ci1saWJzCg0KTW9kaWZpZWQ6IG1haW4vZXh0ZXJuYWwvZGVidWdnZXItbGlicw0KPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KQEAgLTEgKzEgQEAKLVN1YnByb2plY3QgY29tbWl0IGU2MWEyMGUxNDUxZmYxMmVlNGIwNjcy Y2M5NTIzYWQyYzYxMmJlYjkKK1N1YnByb2plY3QgY29tbWl0IGY3NDkxZTUzNTcwM2I4MzUyNDMy ZmI3NjBkZGMwNDE3NDNmOTAwYzMNCg0KICAgQ29tbWl0OiA0M2MyZjcxNTBjZjQ4YWM3M2FhYzU5 ZGNiMTdmNDIxYmYxMjBkMWYxDQogICBBdXRob3I6IE1pY2hhZWwgSHV0Y2hpbnNvbiA8bWh1dGNo QHhhbWFyaW4uY29tPiAobWh1dGNoKQ0KICAgICBEYXRlOiAyMDEzLTExLTE0IDIyOjI0OjU0IEdN VA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQv NDNjMmY3MTUwY2Y0OGFjNzNhYWM1OWRjYjE3ZjQyMWJmMTIwZDFmMQ0KDQpbSWRlXSBTaG93IG1l c3NhZ2Vib3ggb24gV2luZG93cyBpZiBHVEsjIGlzIG1pc3Npbmcgb3IgdG9vIG9sZA0KDQpDaGFu Z2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3Au SWRlL0lkZVN0YXJ0dXAuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5J ZGUvTW9ub0RldmVsb3AuSWRlL0lkZVN0YXJ0dXAuY3MNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC00NiwxMiAr NDYsOSBAQAogdXNpbmcgTW9ub0RldmVsb3AuQ29yZTsKIHVzaW5nIE1vbm9EZXZlbG9wLklkZS5H dWkuRGlhbG9nczsKIHVzaW5nIE1vbm9EZXZlbG9wLklkZS5HdWk7Ci11c2luZyBNb25vRGV2ZWxv cC5Db3JlLkV4ZWN1dGlvbjsKIHVzaW5nIE1vbm9EZXZlbG9wLkNvcmUuSW5zdHJ1bWVudGF0aW9u OwogdXNpbmcgU3lzdGVtLkRpYWdub3N0aWNzOwotdXNpbmcgTW9ub0RldmVsb3AuUHJvamVjdHM7 CiB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKLXVzaW5nIE1vbm9EZXZlbG9wLkNv cmUuTG9nUmVwb3J0aW5nOwogCiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuSWRlCiB7CkBAIC04OCw5 ICs4NSw4IEBAIGludCBSdW4gKE1vbm9EZXZlbG9wT3B0aW9ucyBvcHRpb25zKQogCQkJUGxhdGZv cm0uSW5pdGlhbGl6ZSAoKTsKIAkJCQogCQkJQ291bnRlcnMuSW5pdGlhbGl6YXRpb24uVHJhY2Ug KCJJbml0aWFsaXppbmcgR1RLIik7Ci0JCQlpZiAoUGxhdGZvcm0uSXNXaW5kb3dzKSB7Ci0JCQkJ Q2hlY2tXaW5kb3dzR3RrICgpOwotCQkJfQorCQkJaWYgKFBsYXRmb3JtLklzV2luZG93cyAmJiAh Q2hlY2tXaW5kb3dzR3RrICgpKQorCQkJCXJldHVybiAxOwogCQkJU2V0dXBFeGNlcHRpb25NYW5h Z2VyICgpOwogCQkJCiAJCQl0cnkgewpAQCAtMzIyLDI2ICszMTgsNjEgQEAgdm9pZCBTZXR1cFRo ZW1lICgpCiAJCVtyZXR1cm46IFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcy5NYXJzaGFs QXMoU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLlVubWFuYWdlZFR5cGUuQm9vbCldCiAJ CXN0YXRpYyBleHRlcm4gYm9vbCBTZXREbGxEaXJlY3RvcnkgKHN0cmluZyBscFBhdGhOYW1lKTsK IAotCQlzdGF0aWMgdm9pZCBDaGVja1dpbmRvd3NHdGsgKCkKKwkJc3RhdGljIGJvb2wgQ2hlY2tX aW5kb3dzR3RrICgpCiAJCXsKIAkJCXN0cmluZyBsb2NhdGlvbiA9IG51bGw7CisJCQlWZXJzaW9u IHZlcnNpb24gPSBudWxsOworCQkJVmVyc2lvbiBtaW5WZXJzaW9uID0gbmV3IFZlcnNpb24gKDIs IDEyLCAyMik7CisKIAkJCXVzaW5nICh2YXIga2V5ID0gTWljcm9zb2Z0LldpbjMyLlJlZ2lzdHJ5 LkxvY2FsTWFjaGluZS5PcGVuU3ViS2V5KEAiU09GVFdBUkVcWGFtYXJpblxHdGtTaGFycFxJbnN0 YWxsRm9sZGVyIikpIHsKLQkJCQlpZiAoa2V5ICE9IG51bGwpIHsKKwkJCQlpZiAoa2V5ICE9IG51 bGwpCiAJCQkJCWxvY2F0aW9uID0ga2V5LkdldFZhbHVlIChudWxsKSBhcyBzdHJpbmc7Ci0JCQkJ fQogCQkJfQotCQkJaWYgKGxvY2F0aW9uID09IG51bGwgfHwgIUZpbGUuRXhpc3RzIChQYXRoLkNv bWJpbmUgKGxvY2F0aW9uLCAiYmluIiwgImxpYmd0ay13aW4zMi0yLjAtMC5kbGwiKSkpIHsKLQkJ CQlMb2dnaW5nU2VydmljZS5Mb2dFcnJvciAoIkRpZCBub3QgZmluZCByZWdpc3RlcmVkIEdUSyMg aW5zdGFsbGF0aW9uIik7Ci0JCQkJcmV0dXJuOworCQkJdXNpbmcgKHZhciBrZXkgPSBNaWNyb3Nv ZnQuV2luMzIuUmVnaXN0cnkuTG9jYWxNYWNoaW5lLk9wZW5TdWJLZXkgKEAiU09GVFdBUkVcWGFt YXJpblxHdGtTaGFycFxWZXJzaW9uIikpIHsKKwkJCQlpZiAoa2V5ICE9IG51bGwpCisJCQkJCVZl cnNpb24uVHJ5UGFyc2UgKGtleS5HZXRWYWx1ZSAobnVsbCkgYXMgc3RyaW5nLCBvdXQgdmVyc2lv bik7CiAJCQl9CisKKwkJCS8vVE9ETzogY2hlY2sgYnVpbGQgdmVyc2lvbiBvZiBHVEsjIGRsbHMg aW4gR0FDCisJCQlpZiAodmVyc2lvbiA9PSBudWxsIHx8IHZlcnNpb24gPCBtaW5WZXJzaW9uIHx8 IGxvY2F0aW9uID09IG51bGwgfHwgIUZpbGUuRXhpc3RzIChQYXRoLkNvbWJpbmUgKGxvY2F0aW9u LCAiYmluIiwgImxpYmd0ay13aW4zMi0yLjAtMC5kbGwiKSkpIHsKKwkJCQlMb2dnaW5nU2Vydmlj ZS5Mb2dFcnJvciAoIkRpZCBub3QgZmluZCByZXF1aXJlZCBHVEsjIGluc3RhbGxhdGlvbiIpOwor CQkJCXN0cmluZyB1cmwgPSAiaHR0cDovL21vbm9kZXZlbG9wLmNvbS9Eb3dubG9hZCI7CisJCQkJ c3RyaW5nIGNhcHRpb24gPSAiRmF0YWwgRXJyb3IiOworCQkJCXN0cmluZyBtZXNzYWdlID0KKwkJ CQkJInswfSBkaWQgbm90IGZpbmQgdGhlIHJlcXVpcmVkIHZlcnNpb24gb2YgR1RLIy4gUGxlYXNl IGNsaWNrIE9LIHRvIG9wZW4gdGhlIGRvd25sb2FkIHBhZ2UsIHdoZXJlICIgKworCQkJCQkieW91 IGNhbiBkb3dubG9hZCBhbmQgaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24uIjsKKwkJCQlpZiAo RGlzcGxheVdpbmRvd3NPa0NhbmNlbE1lc3NhZ2UgKAorCQkJCQlzdHJpbmcuRm9ybWF0IChtZXNz YWdlLCBCcmFuZGluZ1NlcnZpY2UuQXBwbGljYXRpb25OYW1lLCB1cmwpLCBjYXB0aW9uKQorCQkJ CSkgeworCQkJCQlQcm9jZXNzLlN0YXJ0ICh1cmwpOworCQkJCX0KKwkJCQlyZXR1cm4gZmFsc2U7 CisJCQl9CisKIAkJCXZhciBwYXRoID0gUGF0aC5Db21iaW5lIChsb2NhdGlvbiwgQCJiaW4iKTsK IAkJCXRyeSB7CiAJCQkJaWYgKFNldERsbERpcmVjdG9yeSAocGF0aCkpIHsKLQkJCQkJcmV0dXJu OworCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQl9CiAJCQl9IGNhdGNoIChFbnRyeVBvaW50Tm90Rm91 bmRFeGNlcHRpb24pIHsKIAkJCX0KLQkJCUxvZ2dpbmdTZXJ2aWNlLkxvZ0Vycm9yICgiVW5hYmxl IHRvIHNldCBHVEsjIGRsbCBkaXJlY3RvcnkiKTsKKwkJCS8vIHRoaXMgc2hvdWxkbid0IGhhcHBl biB1bmxlc3Mgc29tZXRoaW5nIGlzIHdlaXJkIGluIFdpbmRvd3MKKwkJCUxvZ2dpbmdTZXJ2aWNl LkxvZ0Vycm9yICgiVW5hYmxlIHRvIHNldCBHVEsrIGRsbCBkaXJlY3RvcnkiKTsKKwkJCXJldHVy biB0cnVlOworCQl9CisKKwkJc3RhdGljIGJvb2wgRGlzcGxheVdpbmRvd3NPa0NhbmNlbE1lc3Nh Z2UgKHN0cmluZyBtZXNzYWdlLCBzdHJpbmcgY2FwdGlvbikKKwkJeworCQkJdmFyIG5hbWUgPSB0 eXBlb2YoaW50KS5Bc3NlbWJseS5GdWxsTmFtZS5SZXBsYWNlICgibXNjb3JsaWIiLCAiU3lzdGVt LldpbmRvd3MuRm9ybXMiKTsKKwkJCXZhciBhc20gPSBBc3NlbWJseS5Mb2FkIChuYW1lKTsKKwkJ CXZhciBtZCA9IGFzbS5HZXRUeXBlICgiU3lzdGVtLldpbmRvd3MuRm9ybXMuTWVzc2FnZUJveCIp OworCQkJdmFyIG1iYiA9IGFzbS5HZXRUeXBlICgiU3lzdGVtLldpbmRvd3MuRm9ybXMuTWVzc2Fn ZUJveEJ1dHRvbnMiKTsKKwkJCXZhciBva0NhbmNlbCA9IEVudW0uVG9PYmplY3QgKG1iYiwgMSk7 CisJCQl2YXIgZHIgPSBhc20uR2V0VHlwZSAoIlN5c3RlbS5XaW5kb3dzLkZvcm1zLkRpYWxvZ1Jl c3VsdCIpOworCQkJdmFyIG9rID0gRW51bS5Ub09iamVjdCAoZHIsIDEpOworCisJCQljb25zdCBC aW5kaW5nRmxhZ3MgZmxhZ3MgPSBCaW5kaW5nRmxhZ3MuSW52b2tlTWV0aG9kIHwgQmluZGluZ0Zs YWdzLlB1YmxpYyB8IEJpbmRpbmdGbGFncy5TdGF0aWM7CisJCQlyZXR1cm4gbWQuSW52b2tlTWVt YmVyICgiU2hvdyIsIGZsYWdzLCBudWxsLCBudWxsLCBuZXcgb2JqZWN0W10geyBtZXNzYWdlLCBj YXB0aW9uLCBva0NhbmNlbCB9KS5FcXVhbHMgKG9rKTsKIAkJfQogCQkKIAkJcHVibGljIGJvb2wg SW5pdGlhbGl6ZWQgewpAQCAtNTI5LDcgKzU2MCw3IEBAIHB1YmxpYyBzdGF0aWMgaW50IE1haW4g KHN0cmluZ1tdIGFyZ3MpCiAJCQkJcmV0dXJuIG9wdGlvbnMuRXJyb3IgIT0gbnVsbD8gLTEgOiAw OwogCQkJCiAJCQlMb2dnaW5nU2VydmljZS5Jbml0aWFsaXplIChvcHRpb25zLlJlZGlyZWN0T3V0 cHV0KTsKLQkJCQorCiAJCQlpbnQgcmV0ID0gLTE7CiAJCQlib29sIHJldHJ5ID0gZmFsc2U7CiAJ CQlkbyB7DQoNCiAgIENvbW1pdDogZDk1ODg5YjY4YWU1ZjE4NWM1NmNjN2JjNzhjM2U1YTA5MjA5 ODg0Nw0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAoVGhlcnpvaykN CiAgICAgRGF0ZTogMjAxMy0xMS0xNSAwMjowNDozMyBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9n aXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2Q5NTg4OWI2OGFlNWYxODVjNTZjYzdi Yzc4YzNlNWEwOTIwOTg4NDcNCg0KRG9jdW1lbnQgdGhlIHVzYWdlIG9mIExpc3QgaW5zdGVhZCBv ZiBIYXNoU2V0Lg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250 cm9sL0NoYW5nZVNldC5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRy b2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wv Q2hhbmdlU2V0LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtOSw2ICs5LDggQEAgbmFtZXNwYWNlIE1vbm9E ZXZlbG9wLlZlcnNpb25Db250cm9sCiAJcHVibGljIGNsYXNzIENoYW5nZVNldAogCXsKIAkJc3Ry aW5nIGdsb2JhbENvbW1lbnQgPSBzdHJpbmcuRW1wdHk7CisJCS8vIENvbW1pdHMgc2hvdWxkIGJl IGF0b21pYyBhbmQgc21hbGwuIFRoZXJlZm9yZSBoYXZpbmcgYSBMaXN0IGluc3RlYWQKKwkJLy8g b2YgYSBIYXNoU2V0IHNob3VsZCBiZSBmYXN0ZXIgaW4gbW9zdCBjYXNlcy4KIAkJTGlzdDxDaGFu Z2VTZXRJdGVtPiBpdGVtcyA9IG5ldyBMaXN0PENoYW5nZVNldEl0ZW0+ICgpOwogCQlSZXBvc2l0 b3J5IHJlcG87DQogCQlGaWxlUGF0aCBiYXNlUGF0aDsNCg0KICAgQ29tbWl0OiAzYmIwOTZkMzY1 YzIyOGMwZjViODMzMGYwNzYwODFkOTZjZTFmMjkzDQogICBBdXRob3I6IFVuZ3VyZWFudSBNYXJp dXMgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTExLTE1 IDAyOjA1OjU1IEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2 ZWxvcC9jb21taXQvM2JiMDk2ZDM2NWMyMjhjMGY1YjgzMzBmMDc2MDgxZDk2Y2UxZjI5Mw0KDQpN ZXJnZSBwdWxsIHJlcXVlc3QgIzQzNCBmcm9tIG1vbm8vYnVnMTYyMjQKCkJ1ZyAxNjIyNCAtIFVz aW5nICJSZXZpZXcgYW5kIENvbW1pdCIgY29tbWFuZCBmcm9tIFNvbHV0aW9uIFBhZCB2ZXJzaW9u IC4uLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9s L01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL0No YW5nZVNldC5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9u b0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvQ2hhbmdl U2V0LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpAQCAtOSw2ICs5LDggQEAgbmFtZXNwYWNlIE1vbm9EZXZlbG9w LlZlcnNpb25Db250cm9sCiAJcHVibGljIGNsYXNzIENoYW5nZVNldAogCXsKIAkJc3RyaW5nIGds b2JhbENvbW1lbnQgPSBzdHJpbmcuRW1wdHk7CisJCS8vIENvbW1pdHMgc2hvdWxkIGJlIGF0b21p YyBhbmQgc21hbGwuIFRoZXJlZm9yZSBoYXZpbmcgYSBMaXN0IGluc3RlYWQKKwkJLy8gb2YgYSBI YXNoU2V0IHNob3VsZCBiZSBmYXN0ZXIgaW4gbW9zdCBjYXNlcy4KIAkJTGlzdDxDaGFuZ2VTZXRJ dGVtPiBpdGVtcyA9IG5ldyBMaXN0PENoYW5nZVNldEl0ZW0+ICgpOwogCQlSZXBvc2l0b3J5IHJl cG87DQogCQlGaWxlUGF0aCBiYXNlUGF0aDsKQEAgLTYxLDcgKzYzLDcgQEAgcHVibGljIHN0cmlu ZyBHZW5lcmF0ZUdsb2JhbENvbW1lbnQgKENvbW1pdE1lc3NhZ2VGb3JtYXQgZm9ybWF0LCBNb25v RGV2ZWxvcC5Qcm8KIAkJcHVibGljIHN0cmluZyBHZW5lcmF0ZVBhdGhDb21tZW50IChzdHJpbmcg cGF0aCwgSUVudW1lcmFibGU8Q2hhbmdlU2V0SXRlbT4gaXRlbXMsIAogCQkJQ29tbWl0TWVzc2Fn ZUZvcm1hdCBtZXNzYWdlRm9ybWF0LCBNb25vRGV2ZWxvcC5Qcm9qZWN0cy5BdXRob3JJbmZvcm1h dGlvbiB1c2VySW5mbykKIAkJewotCQkJQ2hhbmdlTG9nV3JpdGVyIHdyaXRlciA9IG5ldyBDaGFu Z2VMb2dXcml0ZXIgKHBhdGgsIHVzZXJJbmZvKTsKKwkJCXZhciB3cml0ZXIgPSBuZXcgQ2hhbmdl TG9nV3JpdGVyIChwYXRoLCB1c2VySW5mbyk7CiAJCQl3cml0ZXIuTWVzc2FnZUZvcm1hdCA9IG1l c3NhZ2VGb3JtYXQ7CiAJCQkKIAkJCWZvcmVhY2ggKENoYW5nZVNldEl0ZW0gaXRlbSBpbiBpdGVt cykgewpAQCAtODUsOCArODcsOCBAQCBwdWJsaWMgc3RyaW5nIEdlbmVyYXRlR2xvYmFsQ29tbWVu dCAoQ29tbWl0TWVzc2FnZUZvcm1hdCBmb3JtYXQsIE1vbm9EZXZlbG9wLlBybwogDQogCQlwdWJs aWMgYm9vbCBDb250YWluc0ZpbGUgKEZpbGVQYXRoIGZpbGVOYW1lKQogCQl7Ci0JCQlmb3IgKGlu dCBuPTA7IG48aXRlbXMuQ291bnQ7IG4rKykKLQkJCQlpZiAoaXRlbXMgW25dLkxvY2FsUGF0aCA9 PSBmaWxlTmFtZSkKKwkJCWZvcmVhY2ggKHZhciBpdGVtIGluIGl0ZW1zKQorCQkJCWlmIChpdGVt LkxvY2FsUGF0aCA9PSBmaWxlTmFtZSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQlyZXR1cm4gZmFs c2U7CiAJCX0NCkBAIC05OCw3ICsxMDAsMTEgQEAgcHVibGljIENoYW5nZVNldEl0ZW0gQWRkRmls ZSAoRmlsZVBhdGggZmlsZSkKIAkJCiAJCXB1YmxpYyBDaGFuZ2VTZXRJdGVtIEFkZEZpbGUgKFZl cnNpb25JbmZvIGZpbGVWZXJzaW9uSW5mbykKIAkJewotCQkJQ2hhbmdlU2V0SXRlbSBpdGVtID0g bmV3IENoYW5nZVNldEl0ZW0gKGZpbGVWZXJzaW9uSW5mbyk7CisJCQlDaGFuZ2VTZXRJdGVtIGl0 ZW0gPSBHZXRGaWxlSXRlbSAoZmlsZVZlcnNpb25JbmZvLkxvY2FsUGF0aCk7CisJCQlpZiAoaXRl bSAhPSBudWxsKQorCQkJCXJldHVybiBpdGVtOworCisJCQlpdGVtID0gbmV3IENoYW5nZVNldEl0 ZW0gKGZpbGVWZXJzaW9uSW5mbyk7CiAJCQlpdGVtcy5BZGQgKGl0ZW0pOwogCQkJcmV0dXJuIGl0 ZW07CiAJCX0KQEAgLTEzNCw3ICsxNDAsNyBAQCBwdWJsaWMgdm9pZCBSZW1vdmVJdGVtIChDaGFu Z2VTZXRJdGVtIGl0ZW0pCiAJCQogCQlwdWJsaWMgQ2hhbmdlU2V0IENsb25lICgpCiAJCXsKLQkJ CUNoYW5nZVNldCBjcyA9IChDaGFuZ2VTZXQpIE1lbWJlcndpc2VDbG9uZSAoKTsKKwkJCXZhciBj cyA9IChDaGFuZ2VTZXQpIE1lbWJlcndpc2VDbG9uZSAoKTsKIAkJCWNzLkNvcHlGcm9tICh0aGlz KTsKIAkJCXJldHVybiBjczsKIAkJfQpAQCAtMTg0LDcgKzE5MCw3IEBAIGludGVybmFsIENoYW5n ZVNldEl0ZW0gKFZlcnNpb25JbmZvIHZlcnNpb25JbmZvKQogCQkKIAkJcHVibGljIENoYW5nZVNl dEl0ZW0gQ2xvbmUgKCkKIAkJewotCQkJQ2hhbmdlU2V0SXRlbSBjcyA9IChDaGFuZ2VTZXRJdGVt KSBNZW1iZXJ3aXNlQ2xvbmUgKCk7CisJCQl2YXIgY3MgPSAoQ2hhbmdlU2V0SXRlbSkgTWVtYmVy d2lzZUNsb25lICgpOwogCQkJY3MuQ29weUZyb20gKHRoaXMpOwogCQkJcmV0dXJuIGNzOwogCQl9 DQoNCiAgIENvbW1pdDogYjUwYzgyYjYzN2E2NmFlMGQyM2UzNzE0MWYyZDc5MzA4ZjcxZDY2OQ0K ICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFyaW9AeWFob28uY29tPiAoVGhlcnpvaykNCiAgICAg RGF0ZTogMjAxMy0xMS0xNSAwMjo0Njo0MiBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIu Y29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2I1MGM4MmI2MzdhNjZhZTBkMjNlMzcxNDFmMmQ3 OTMwOGY3MWQ2NjkNCg0KW1ZlcnNpb25Db250cm9sXSBFbWJlZCByZXNvdXJjZXMgZm9yIFZDUwoK VXNlIHRoZW0gYXMgRW1iZWRkZWQgUmVzb3VyY2VzIGluc3RlYWQgb2YgQ29udGVudC4KVGhpcyB3 YXksIHdlIGhhdmUgbm8gaXNzdWUgd2hlbiB3ZSBydW4gdGVzdHMgYW5kIGNhbm5vdCBmaW5kIHRo ZSBmaWxlcy4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u dHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv bC5jc3Byb2oKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5W ZXJzaW9uQ29udHJvbC9WZXJzaW9uQ29udHJvbC5hZGRpbi54bWwKICBNIG1haW4vc3JjL2FkZGlu cy9WZXJzaW9uQ29udHJvbC9TdWJ2ZXJzaW9uLldpbjMyL1ZlcnNpb25Db250cm9sLlN1YnZlcnNp b24uV2luMzIuY3Nwcm9qCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5j c3Byb2oNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCkBAIC0yMCw5ICsyMCw5IEBACiAgICAgPEV4ZWN1dGlvbj4KICAg ICAgIDxFeGVjdXRpb24gY2xyLXZlcnNpb249Ik5ldF8yXzAiIC8+CiAgICAgPC9FeGVjdXRpb24+ Ci0gICAgPEdlbmVyYXRlRG9jdW1lbnRhdGlvbj50cnVlPC9HZW5lcmF0ZURvY3VtZW50YXRpb24+ CiAgICAgPERlZmluZUNvbnN0YW50cz5ERUJVRzwvRGVmaW5lQ29uc3RhbnRzPgogICAgIDxOb1dh cm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4uXC4uXC4uXC4u XGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC54 bWw8L0RvY3VtZW50YXRpb25GaWxlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdy b3VwIENvbmRpdGlvbj0iICckKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJyA9PSAnUmVsZWFz ZXxBbnlDUFUnICI+CiAgICAgPERlYnVnVHlwZT5wZGJvbmx5PC9EZWJ1Z1R5cGU+CkBAIC0zNCw4 ICszNCw4IEBACiAgICAgICA8RXhlY3V0aW9uIGNsci12ZXJzaW9uPSJOZXRfMl8wIiAvPgogICAg IDwvRXhlY3V0aW9uPgogICAgIDxEZWJ1Z1N5bWJvbHM+dHJ1ZTwvRGVidWdTeW1ib2xzPgotICAg IDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgogICAg IDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4uXC4u XC4uXC4uXGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxNb25vRGV2ZWxvcC5WZXJzaW9uQ29u dHJvbC54bWw8L0RvY3VtZW50YXRpb25GaWxlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVt R3JvdXA+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cLi5cLi5cY29yZVxNb25v RGV2ZWxvcC5Db3JlXE1vbm9EZXZlbG9wLkNvcmUuY3Nwcm9qIj4KQEAgLTE1OCw2ICsxNTgsMzkg QEAKICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJ2ZXJzaW9uLWNvbnRyb2wtMTYucG5n Ij4KICAgICAgIDxMb2dpY2FsTmFtZT52ZXJzaW9uLWNvbnRyb2wtMTYucG5nPC9Mb2dpY2FsTmFt ZT4KICAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVk ZT0ibWVudV9sb2cucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X2xvZy5wbmc8L0xvZ2lj YWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJ bmNsdWRlPSJtZW51X2RpZmYucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X2RpZmYucG5n PC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVz b3VyY2UgSW5jbHVkZT0ibWVudV91cGRhdGUucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51 X3VwZGF0ZS5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8 RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3N0YXR1cy5wbmciPgorICAgICAgPExvZ2lj YWxOYW1lPm1lbnVfc3RhdHVzLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291 cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfY29tbWl0LnBuZyI+Cisg ICAgICA8TG9naWNhbE5hbWU+bWVudV9jb21taXQucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0Vt YmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9yZW1v dGVfc3RhdHVzLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9yZW1vdGVfc3RhdHVzLnBu ZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJl c291cmNlIEluY2x1ZGU9Im1lbnVfYWRkLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9h ZGQucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVk ZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9yZW1vdmUucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFt ZT5tZW51X3JlbW92ZS5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4K KyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3Jlc29sdmUucG5nIj4KKyAgICAg IDxMb2dpY2FsTmFtZT5tZW51X3Jlc29sdmUucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVk ZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iY29tbWVudC5wbmci PgorICAgICAgPExvZ2ljYWxOYW1lPmNvbW1lbnQucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0Vt YmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9yZXZl cnQucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X3JldmVydC5wbmc8L0xvZ2ljYWxOYW1l PgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+ CiAgICAgPENvbXBpbGUgSW5jbHVkZT0iZ3RrLWd1aVxnZW5lcmF0ZWQuY3MiIC8+CkBAIC0yNDcs MzkgKzI4MCw0IEBACiAgICAgPE5vbmUgSW5jbHVkZT0iTWFrZWZpbGUuYW0iIC8+CiAgIDwvSXRl bUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoTVNCdWlsZEJpblBhdGgpXE1pY3Jvc29mdC5D U2hhcnAudGFyZ2V0cyIgLz4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJt ZW51X2xvZy5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2Vz dDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJ bmNsdWRlPSJtZW51X2RpZmYucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJl c2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAg PENvbnRlbnQgSW5jbHVkZT0ibWVudV91cGRhdGUucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXRE aXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0Nv bnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVudV9zdGF0dXMucG5nIj4KLSAgICAgIDxD b3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9y eT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVudV9jb21taXQucG5n Ij4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091 dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVu dV9yZW1vdGVfc3RhdHVzLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNl cnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxD b250ZW50IEluY2x1ZGU9Im1lbnVfYWRkLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0 b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50 PgotICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfcmVtb3ZlLnBuZyI+Ci0gICAgICA8Q29weVRv T3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0g ICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfcmVzb2x2ZS5wbmciPgot ICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0 RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJjb21tZW50 LnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5 VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9 Im1lbnVfcmV2ZXJ0LnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZl TmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICA8L0l0ZW1H cm91cD4KIDwvUHJvamVjdD4NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u dHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC9WZXJzaW9uQ29udHJvbC5hZGRpbi54bWwN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NCkBAIC04LDIwICs4LDYgQEAKICAgICAgICBjYXRlZ29yeSAgICA9ICJWZXJz aW9uIENvbnRyb2wiCiAgICAgICAgZmxhZ3MgPSAiSGlkZGVuIgogICAgICAgIHZlcnNpb24gICA9 ICI0LjIiPgotIAotCTxSdW50aW1lPgotCQk8SW1wb3J0IGZpbGU9ImNvbW1lbnQucG5nIiAvPgot CQk8SW1wb3J0IGZpbGU9Im1lbnVfYWRkLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X2Nv bW1pdC5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9kaWZmLnBuZyIgLz4KLQkJPEltcG9y dCBmaWxlPSJtZW51X2xvZy5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9yZW1vdGVfc3Rh dHVzLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X3JlbW92ZS5wbmciIC8+Ci0JCTxJbXBv cnQgZmlsZT0ibWVudV9yZXNvbHZlLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X3JldmVy dC5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9zdGF0dXMucG5nIiAvPgotCQk8SW1wb3J0 IGZpbGU9Im1lbnVfdXBkYXRlLnBuZyIgLz4KLQk8L1J1bnRpbWU+CiAKIAk8RGVwZW5kZW5jaWVz PgogCSAgICA8QWRkaW4gaWQ9IkNvcmUiIHZlcnNpb249IjQuMiIvPgpAQCAtMTA1LDE3ICs5MSwx NyBAQAogCTwvRXh0ZW5zaW9uPgogCiAJPEV4dGVuc2lvbiBwYXRoID0gIi9Nb25vRGV2ZWxvcC9D b3JlL1N0b2NrSWNvbnMiPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtYWRkLWNvbW1hbmQi IGZpbGUgPSAibWVudV9hZGQucG5nIiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2Nr aWQgPSAidmMtcmVtb3ZlLWNvbW1hbmQiIGZpbGUgPSAibWVudV9yZW1vdmUucG5nIiBzaXplPSJN ZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtcmVzb2x2ZS1jb21tYW5kIiBmaWxl ID0gIm1lbnVfcmVzb2x2ZS5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tp ZCA9ICJ2Yy1yZXZlcnQtY29tbWFuZCIgZmlsZSA9ICJtZW51X3JldmVydC5wbmciIHNpemU9Ik1l bnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1kaWZmIiBmaWxlID0gIm1lbnVfZGlm Zi5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1sb2ciIGZp bGUgPSAibWVudV9sb2cucG5nIiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQg PSAidmMtc3RhdHVzIiBmaWxlID0gIm1lbnVfc3RhdHVzLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJ PFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXVwZGF0ZSIgZmlsZSA9ICJtZW51X3VwZGF0ZS5wbmci IHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1jb21taXQiIGZpbGUg PSAibWVudV9jb21taXQucG5nIiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQg PSAidmMtcmVtb3RlLXN0YXR1cyIgZmlsZSA9ICJtZW51X3JlbW90ZV9zdGF0dXMucG5nIiBzaXpl PSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtY29tbWVudCIgZmlsZSA9ICJj b21tZW50LnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWFk ZC1jb21tYW5kIiByZXNvdXJjZSA9ICJtZW51X2FkZC5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxT dG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1yZW1vdmUtY29tbWFuZCIgcmVzb3VyY2UgPSAibWVudV9y ZW1vdmUucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtcmVz b2x2ZS1jb21tYW5kIiByZXNvdXJjZSA9ICJtZW51X3Jlc29sdmUucG5nIiBzaXplPSJNZW51IiAv PgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtcmV2ZXJ0LWNvbW1hbmQiIHJlc291cmNlID0g Im1lbnVfcmV2ZXJ0LnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0g InZjLWRpZmYiIHJlc291cmNlID0gIm1lbnVfZGlmZi5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxT dG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1sb2ciIHJlc291cmNlID0gIm1lbnVfbG9nLnBuZyIgc2l6 ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXN0YXR1cyIgcmVzb3VyY2Ug PSAibWVudV9zdGF0dXMucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQg PSAidmMtdXBkYXRlIiByZXNvdXJjZSA9ICJtZW51X3VwZGF0ZS5wbmciIHNpemU9Ik1lbnUiIC8+ CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1jb21taXQiIHJlc291cmNlID0gIm1lbnVfY29t bWl0LnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJlbW90 ZS1zdGF0dXMiIHJlc291cmNlID0gIm1lbnVfcmVtb3RlX3N0YXR1cy5wbmciIHNpemU9Ik1lbnUi IC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1jb21tZW50IiByZXNvdXJjZSA9ICJjb21t ZW50LnBuZyIgc2l6ZT0iTWVudSIgLz4KIAkJPFN0b2NrSWNvbiBzdG9ja2lkID0gIm1kLXZlcnNp b24tY29udHJvbCIgcmVzb3VyY2UgPSAidmVyc2lvbi1jb250cm9sLTE2LnBuZyIgc2l6ZT0iTWVu dSIgLz4KIAk8L0V4dGVuc2lvbj4KIA0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNp b25Db250cm9sL1N1YnZlcnNpb24uV2luMzIvVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5XaW4z Mi5jc3Byb2oNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCkBAIC00Miw4ICs0Miw4IEBACiAgICAgPEVycm9yUmVwb3J0 PnByb21wdDwvRXJyb3JSZXBvcnQ+CiAgICAgPFdhcm5pbmdMZXZlbD40PC9XYXJuaW5nTGV2ZWw+ CiAgICAgPENvZGVBbmFseXNpc1J1bGVTZXQ+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lz UnVsZVNldD4KLSAgICA8R2VuZXJhdGVEb2N1bWVudGF0aW9uPnRydWU8L0dlbmVyYXRlRG9jdW1l bnRhdGlvbj4KICAgICA8Tm9XYXJuPjE1OTE7MTU3MzwvTm9XYXJuPgorICAgIDxEb2N1bWVudGF0 aW9uRmlsZT4uLlwuLlwuLlwuLlxidWlsZFxBZGRJbnNcVmVyc2lvbkNvbnRyb2xcU3VidmVyc2lv bkFkZGluV2luZG93cy54bWw8L0RvY3VtZW50YXRpb25GaWxlPgogICA8L1Byb3BlcnR5R3JvdXA+ CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iICckKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv cm0pJyA9PSAnUmVsZWFzZXxBbnlDUFUnICI+CiAgICAgPERlYnVnVHlwZT5wZGJvbmx5PC9EZWJ1 Z1R5cGU+CkBAIC01NCw4ICs1NCw4IEBACiAgICAgPFdhcm5pbmdMZXZlbD40PC9XYXJuaW5nTGV2 ZWw+CiAgICAgPENvZGVBbmFseXNpc1J1bGVTZXQ+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5 c2lzUnVsZVNldD4KICAgICA8RGVidWdTeW1ib2xzPnRydWU8L0RlYnVnU3ltYm9scz4KLSAgICA8 R2VuZXJhdGVEb2N1bWVudGF0aW9uPnRydWU8L0dlbmVyYXRlRG9jdW1lbnRhdGlvbj4KICAgICA8 Tm9XYXJuPjE1OTE7MTU3MzwvTm9XYXJuPgorICAgIDxEb2N1bWVudGF0aW9uRmlsZT4uLlwuLlwu LlwuLlxidWlsZFxBZGRJbnNcVmVyc2lvbkNvbnRyb2xcU3VidmVyc2lvbkFkZGluV2luZG93cy54 bWw8L0RvY3VtZW50YXRpb25GaWxlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtR3JvdXA+ CiAgICAgPFJlZmVyZW5jZSBJbmNsdWRlPSJTeXN0ZW0iIC8+CkBAIC02OSwxNSArNjksMTUgQEAK ICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5j bHVkZT0iTWFuaWZlc3QuYWRkaW4ueG1sIiAvPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1 ZGU9InN1YnZlcnNpb24tbG9nby5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPnN1YnZlcnNpb24t bG9nby5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KICAgPC9JdGVt R3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cU2hhcnBTdm5cU2hh cnBQbGluay1XaW4zMi5zdm5FeGUiPgogICAgICAgPExpbms+U2hhcnBQbGluay1XaW4zMi5zdm5F eGU8L0xpbms+CiAgICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9D b3B5VG9PdXRwdXREaXJlY3Rvcnk+CiAgICAgPC9Ob25lPgotICAgIDxDb250ZW50IEluY2x1ZGU9 InN1YnZlcnNpb24tbG9nby5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVz ZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KICAgICA8 Q29udGVudCBJbmNsdWRlPSIuLlxTaGFycFN2blxTaGFycFN2bi1EQjQ0LTIwLXdpbjMyLmRsbCI+ CiAgICAgICA8TGluaz5TaGFycFN2bi1EQjQ0LTIwLXdpbjMyLmRsbDwvTGluaz4KICAgICAgIDxD b3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9y eT4NCg0KICAgQ29tbWl0OiAyNzdkYjBmYjIyMTU2MjQ2Yjg0NDJlOGMzYTk4YmYyNmYxZjExNDJi DQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdl cikNCiAgICAgRGF0ZTogMjAxMy0xMS0xNSAwNjozODoyOSBHTVQNCiAgICAgIFVSTDogaHR0cHM6 Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzI3N2RiMGZiMjIxNTYyNDZiODQ0 MmU4YzNhOThiZjI2ZjFmMTE0MmINCg0KRml4ZWQgJ0J1ZyAxNjIzMSAtIHNtYXJ0IGluZGVudCBi cm9rZW4gaW4gNC4yLjAnDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL25yZWZh Y3RvcnkKDQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5DQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA QCAtMSArMSBAQAotU3VicHJvamVjdCBjb21taXQgNTA3MzNmNTAyYTJhMzhkODM2YjQ2NGMxZWI2 NzhmZjYzNmUyYWU1MAorU3VicHJvamVjdCBjb21taXQgMjA0NGVhMzZkM2NmODMxY2FjMWMwYzli ZjZkZjBlZmRjZTAyMzBiMA0KDQogICBDb21taXQ6IDcwNzM5MmIwNDhhMWFlMWNhMjY5ZDkyOWFk MjhjZTdiNjU5NzkzNTYNCiAgIEF1dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1ZWdlckB4YW1hcmlu LmNvbT4gKG1rcnVlZ2VyKQ0KICAgICBEYXRlOiAyMDEzLTExLTE1IDA2OjI5OjQ3IEdNVA0KICAg ICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvNzA3Mzky YjA0OGExYWUxY2EyNjlkOTI5YWQyOGNlN2I2NTk3OTM1Ng0KDQpGaXhlZCAnQnVnIDE2MjM2IC0g TmVzdGVkIGNsYXNzIEZvby5CYXIgc2hvdWxkIGhhdmUgbGVzcyBwcmlvcml0eSB0aGFuCm5vcm1h bCBjbGFzcyBCYXInLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2 ZWxvcC5JZGUvTW9ub0RldmVsb3AuQ29tcG9uZW50cy5NYWluVG9vbGJhci9Qcm9qZWN0U2VhcmNo Q2F0ZWdvcnkuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9u b0RldmVsb3AuQ29tcG9uZW50cy5NYWluVG9vbGJhci9Qcm9qZWN0U2VhcmNoQ2F0ZWdvcnkuY3MN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NCkBAIC0yODcsMTIgKzI4NywxOCBAQCBpbnRlcm5hbCBTZWFyY2hSZXN1bHQg Q2hlY2tGaWxlIChQcm9qZWN0RmlsZSBmaWxlKQogCQkJaW50ZXJuYWwgU2VhcmNoUmVzdWx0IENo ZWNrVHlwZSAoSVR5cGVEZWZpbml0aW9uIHR5cGUpCiAJCQl7CiAJCQkJaW50IHJhbms7Ci0JCQkJ aWYgKE1hdGNoTmFtZSAoVHlwZVNlYXJjaFJlc3VsdC5HZXRQbGFpblRleHQgKHR5cGUsIGZhbHNl KSwgb3V0IHJhbmspKQorCQkJCWlmIChNYXRjaE5hbWUgKFR5cGVTZWFyY2hSZXN1bHQuR2V0UGxh aW5UZXh0ICh0eXBlLCBmYWxzZSksIG91dCByYW5rKSkgeworCQkJCQlpZiAodHlwZS5EZWNsYXJp bmdUeXBlICE9IG51bGwpCisJCQkJCQlyYW5rLS07CiAJCQkJCXJldHVybiBuZXcgVHlwZVNlYXJj aFJlc3VsdCAocGF0dGVybiwgVHlwZVNlYXJjaFJlc3VsdC5HZXRQbGFpblRleHQgKHR5cGUsIGZh bHNlKSwgcmFuaywgdHlwZSwgZmFsc2UpIHsgQW1iaWVuY2UgPSBhbWJpZW5jZSB9OworCQkJCX0K IAkJCQlpZiAoIUZ1bGxTZWFyY2gpCiAJCQkJCXJldHVybiBudWxsOwotCQkJCWlmIChNYXRjaE5h bWUgKFR5cGVTZWFyY2hSZXN1bHQuR2V0UGxhaW5UZXh0ICh0eXBlLCB0cnVlKSwgb3V0IHJhbmsp KQorCQkJCWlmIChNYXRjaE5hbWUgKFR5cGVTZWFyY2hSZXN1bHQuR2V0UGxhaW5UZXh0ICh0eXBl LCB0cnVlKSwgb3V0IHJhbmspKSB7CisJCQkJCWlmICh0eXBlLkRlY2xhcmluZ1R5cGUgIT0gbnVs bCkKKwkJCQkJCXJhbmstLTsKIAkJCQkJcmV0dXJuIG5ldyBUeXBlU2VhcmNoUmVzdWx0IChwYXR0 ZXJuLCBUeXBlU2VhcmNoUmVzdWx0LkdldFBsYWluVGV4dCAodHlwZSwgdHJ1ZSksIHJhbmssIHR5 cGUsIHRydWUpIHsgQW1iaWVuY2UgPSBhbWJpZW5jZSB9OworCQkJCX0KIAkJCQlyZXR1cm4gbnVs bDsKIAkJCX0KIAkJCQ0KDQogICBDb21taXQ6IGJmNWI5ZGNlOTFhMzg2YzFhMjBkNTdkODQzMTQ4 NjU1OTgyYjhiODgNCiAgIEF1dGhvcjogTGx1aXMgU2FuY2hleiA8c2xsdWlzLmRldmVsQGdtYWls LmNvbT4gKHNsbHVpcykNCiAgICAgRGF0ZTogMjAxMy0xMS0xNSAwOToyMjoxNCBHTVQNCiAgICAg IFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2JmNWI5ZGNl OTFhMzg2YzFhMjBkNTdkODQzMTQ4NjU1OTgyYjhiODgNCg0KTWVyZ2UgcHVsbCByZXF1ZXN0ICM0 MzUgZnJvbSBtb25vL3Zjc1Jlc291cmNlcwoKW1ZlcnNpb25Db250cm9sXSBFbWJlZCByZXNvdXJj ZXMgZm9yIFZDUw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250 cm9sLmNzcHJvagogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9w LlZlcnNpb25Db250cm9sL1ZlcnNpb25Db250cm9sLmFkZGluLnhtbAogIE0gbWFpbi9zcmMvYWRk aW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIvVmVyc2lvbkNvbnRyb2wuU3VidmVy c2lvbi5XaW4zMi5jc3Byb2oKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250 cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9s LmNzcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KQEAgLTIwLDkgKzIwLDkgQEAKICAgICA8RXhlY3V0aW9uPgog ICAgICAgPEV4ZWN1dGlvbiBjbHItdmVyc2lvbj0iTmV0XzJfMCIgLz4KICAgICA8L0V4ZWN1dGlv bj4KLSAgICA8R2VuZXJhdGVEb2N1bWVudGF0aW9uPnRydWU8L0dlbmVyYXRlRG9jdW1lbnRhdGlv bj4KICAgICA8RGVmaW5lQ29uc3RhbnRzPkRFQlVHPC9EZWZpbmVDb25zdGFudHM+CiAgICAgPE5v V2Fybj4xNTkxOzE1NzM8L05vV2Fybj4KKyAgICA8RG9jdW1lbnRhdGlvbkZpbGU+Li5cLi5cLi5c Li5cYnVpbGRcQWRkSW5zXFZlcnNpb25Db250cm9sXE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9s LnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5 R3JvdXAgQ29uZGl0aW9uPSIgJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknID09ICdSZWxl YXNlfEFueUNQVScgIj4KICAgICA8RGVidWdUeXBlPnBkYm9ubHk8L0RlYnVnVHlwZT4KQEAgLTM0 LDggKzM0LDggQEAKICAgICAgIDxFeGVjdXRpb24gY2xyLXZlcnNpb249Ik5ldF8yXzAiIC8+CiAg ICAgPC9FeGVjdXRpb24+CiAgICAgPERlYnVnU3ltYm9scz50cnVlPC9EZWJ1Z1N5bWJvbHM+Ci0g ICAgPEdlbmVyYXRlRG9jdW1lbnRhdGlvbj50cnVlPC9HZW5lcmF0ZURvY3VtZW50YXRpb24+CiAg ICAgPE5vV2Fybj4xNTkxOzE1NzM8L05vV2Fybj4KKyAgICA8RG9jdW1lbnRhdGlvbkZpbGU+Li5c Li5cLi5cLi5cYnVpbGRcQWRkSW5zXFZlcnNpb25Db250cm9sXE1vbm9EZXZlbG9wLlZlcnNpb25D b250cm9sLnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0 ZW1Hcm91cD4KICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlwuLlwuLlxjb3JlXE1v bm9EZXZlbG9wLkNvcmVcTW9ub0RldmVsb3AuQ29yZS5jc3Byb2oiPgpAQCAtMTU4LDYgKzE1OCwz OSBAQAogICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9InZlcnNpb24tY29udHJvbC0xNi5w bmciPgogICAgICAgPExvZ2ljYWxOYW1lPnZlcnNpb24tY29udHJvbC0xNi5wbmc8L0xvZ2ljYWxO YW1lPgogICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNs dWRlPSJtZW51X2xvZy5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfbG9nLnBuZzwvTG9n aWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNl IEluY2x1ZGU9Im1lbnVfZGlmZi5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfZGlmZi5w bmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRS ZXNvdXJjZSBJbmNsdWRlPSJtZW51X3VwZGF0ZS5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1l bnVfdXBkYXRlLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAg IDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfc3RhdHVzLnBuZyI+CisgICAgICA8TG9n aWNhbE5hbWU+bWVudV9zdGF0dXMucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVz b3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9jb21taXQucG5nIj4K KyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X2NvbW1pdC5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwv RW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3Jl bW90ZV9zdGF0dXMucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51X3JlbW90ZV9zdGF0dXMu cG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVk UmVzb3VyY2UgSW5jbHVkZT0ibWVudV9hZGQucG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5tZW51 X2FkZC5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1i ZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3JlbW92ZS5wbmciPgorICAgICAgPExvZ2ljYWxO YW1lPm1lbnVfcmVtb3ZlLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNl PgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfcmVzb2x2ZS5wbmciPgorICAg ICAgPExvZ2ljYWxOYW1lPm1lbnVfcmVzb2x2ZS5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1i ZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJjb21tZW50LnBu ZyI+CisgICAgICA8TG9naWNhbE5hbWU+Y29tbWVudC5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwv RW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X3Jl dmVydC5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfcmV2ZXJ0LnBuZzwvTG9naWNhbE5h bWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91 cD4KICAgICA8Q29tcGlsZSBJbmNsdWRlPSJndGstZ3VpXGdlbmVyYXRlZC5jcyIgLz4KQEAgLTI0 NywzOSArMjgwLDQgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSJNYWtlZmlsZS5hbSIgLz4KICAgPC9J dGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChNU0J1aWxkQmluUGF0aClcTWljcm9zb2Z0 LkNTaGFycC50YXJnZXRzIiAvPgotICA8SXRlbUdyb3VwPgotICAgIDxDb250ZW50IEluY2x1ZGU9 Im1lbnVfbG9nLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3 ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50 IEluY2x1ZGU9Im1lbnVfZGlmZi5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5Q cmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAg ICA8Q29udGVudCBJbmNsdWRlPSJtZW51X3VwZGF0ZS5wbmciPgotICAgICAgPENvcHlUb091dHB1 dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwv Q29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJtZW51X3N0YXR1cy5wbmciPgotICAgICAg PENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0 b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJtZW51X2NvbW1pdC5w bmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRv T3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJt ZW51X3JlbW90ZV9zdGF0dXMucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJl c2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAg PENvbnRlbnQgSW5jbHVkZT0ibWVudV9hZGQucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJl Y3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRl bnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVudV9yZW1vdmUucG5nIj4KLSAgICAgIDxDb3B5 VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4K LSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ibWVudV9yZXNvbHZlLnBuZyI+ Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRw dXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9ImNvbW1l bnQucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0Nv cHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVk ZT0ibWVudV9yZXZlcnQucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2Vy dmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gIDwvSXRl bUdyb3VwPgogPC9Qcm9qZWN0Pg0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL1ZlcnNpb25Db250cm9sLmFkZGluLnht bA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KQEAgLTgsMjAgKzgsNiBAQAogICAgICAgIGNhdGVnb3J5ICAgID0gIlZl cnNpb24gQ29udHJvbCIKICAgICAgICBmbGFncyA9ICJIaWRkZW4iCiAgICAgICAgdmVyc2lvbiAg ID0gIjQuMiI+Ci0gCi0JPFJ1bnRpbWU+Ci0JCTxJbXBvcnQgZmlsZT0iY29tbWVudC5wbmciIC8+ Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9hZGQucG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVf Y29tbWl0LnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X2RpZmYucG5nIiAvPgotCQk8SW1w b3J0IGZpbGU9Im1lbnVfbG9nLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X3JlbW90ZV9z dGF0dXMucG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfcmVtb3ZlLnBuZyIgLz4KLQkJPElt cG9ydCBmaWxlPSJtZW51X3Jlc29sdmUucG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfcmV2 ZXJ0LnBuZyIgLz4KLQkJPEltcG9ydCBmaWxlPSJtZW51X3N0YXR1cy5wbmciIC8+Ci0JCTxJbXBv cnQgZmlsZT0ibWVudV91cGRhdGUucG5nIiAvPgotCTwvUnVudGltZT4KIAogCTxEZXBlbmRlbmNp ZXM+CiAJICAgIDxBZGRpbiBpZD0iQ29yZSIgdmVyc2lvbj0iNC4yIi8+CkBAIC0xMDUsMTcgKzkx LDE3IEBACiAJPC9FeHRlbnNpb24+CiAKIAk8RXh0ZW5zaW9uIHBhdGggPSAiL01vbm9EZXZlbG9w L0NvcmUvU3RvY2tJY29ucyI+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1hZGQtY29tbWFu ZCIgZmlsZSA9ICJtZW51X2FkZC5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3Rv Y2tpZCA9ICJ2Yy1yZW1vdmUtY29tbWFuZCIgZmlsZSA9ICJtZW51X3JlbW92ZS5wbmciIHNpemU9 Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1yZXNvbHZlLWNvbW1hbmQiIGZp bGUgPSAibWVudV9yZXNvbHZlLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9j a2lkID0gInZjLXJldmVydC1jb21tYW5kIiBmaWxlID0gIm1lbnVfcmV2ZXJ0LnBuZyIgc2l6ZT0i TWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWRpZmYiIGZpbGUgPSAibWVudV9k aWZmLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWxvZyIg ZmlsZSA9ICJtZW51X2xvZy5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tp ZCA9ICJ2Yy1zdGF0dXMiIGZpbGUgPSAibWVudV9zdGF0dXMucG5nIiBzaXplPSJNZW51IiAvPgot CQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtdXBkYXRlIiBmaWxlID0gIm1lbnVfdXBkYXRlLnBu ZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWNvbW1pdCIgZmls ZSA9ICJtZW51X2NvbW1pdC5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tp ZCA9ICJ2Yy1yZW1vdGUtc3RhdHVzIiBmaWxlID0gIm1lbnVfcmVtb3RlX3N0YXR1cy5wbmciIHNp emU9Ik1lbnUiIC8+Ci0JCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1jb21tZW50IiBmaWxlID0g ImNvbW1lbnQucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMt YWRkLWNvbW1hbmQiIHJlc291cmNlID0gIm1lbnVfYWRkLnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJ PFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJlbW92ZS1jb21tYW5kIiByZXNvdXJjZSA9ICJtZW51 X3JlbW92ZS5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1y ZXNvbHZlLWNvbW1hbmQiIHJlc291cmNlID0gIm1lbnVfcmVzb2x2ZS5wbmciIHNpemU9Ik1lbnUi IC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1yZXZlcnQtY29tbWFuZCIgcmVzb3VyY2Ug PSAibWVudV9yZXZlcnQucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQg PSAidmMtZGlmZiIgcmVzb3VyY2UgPSAibWVudV9kaWZmLnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJ PFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWxvZyIgcmVzb3VyY2UgPSAibWVudV9sb2cucG5nIiBz aXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtc3RhdHVzIiByZXNvdXJj ZSA9ICJtZW51X3N0YXR1cy5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tp ZCA9ICJ2Yy11cGRhdGUiIHJlc291cmNlID0gIm1lbnVfdXBkYXRlLnBuZyIgc2l6ZT0iTWVudSIg Lz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWNvbW1pdCIgcmVzb3VyY2UgPSAibWVudV9j b21taXQucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtcmVt b3RlLXN0YXR1cyIgcmVzb3VyY2UgPSAibWVudV9yZW1vdGVfc3RhdHVzLnBuZyIgc2l6ZT0iTWVu dSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWNvbW1lbnQiIHJlc291cmNlID0gImNv bW1lbnQucG5nIiBzaXplPSJNZW51IiAvPgogCQk8U3RvY2tJY29uIHN0b2NraWQgPSAibWQtdmVy c2lvbi1jb250cm9sIiByZXNvdXJjZSA9ICJ2ZXJzaW9uLWNvbnRyb2wtMTYucG5nIiBzaXplPSJN ZW51IiAvPgogCTwvRXh0ZW5zaW9uPgogDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVy c2lvbkNvbnRyb2wvU3VidmVyc2lvbi5XaW4zMi9WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLldp bjMyLmNzcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTQyLDggKzQyLDggQEAKICAgICA8RXJyb3JSZXBv cnQ+cHJvbXB0PC9FcnJvclJlcG9ydD4KICAgICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdMZXZl bD4KICAgICA8Q29kZUFuYWx5c2lzUnVsZVNldD5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlz aXNSdWxlU2V0PgotICAgIDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1 bWVudGF0aW9uPgogICAgIDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50 YXRpb25GaWxlPi4uXC4uXC4uXC4uXGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxTdWJ2ZXJz aW9uQWRkaW5XaW5kb3dzLnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91 cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIgJyQoQ29uZmlndXJhdGlvbil8JChQbGF0 Zm9ybSknID09ICdSZWxlYXNlfEFueUNQVScgIj4KICAgICA8RGVidWdUeXBlPnBkYm9ubHk8L0Rl YnVnVHlwZT4KQEAgLTU0LDggKzU0LDggQEAKICAgICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdM ZXZlbD4KICAgICA8Q29kZUFuYWx5c2lzUnVsZVNldD5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5h bHlzaXNSdWxlU2V0PgogICAgIDxEZWJ1Z1N5bWJvbHM+dHJ1ZTwvRGVidWdTeW1ib2xzPgotICAg IDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgogICAg IDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4uXC4u XC4uXC4uXGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxTdWJ2ZXJzaW9uQWRkaW5XaW5kb3dz LnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1Hcm91 cD4KICAgICA8UmVmZXJlbmNlIEluY2x1ZGU9IlN5c3RlbSIgLz4KQEAgLTY5LDE1ICs2OSwxNSBA QAogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJ bmNsdWRlPSJNYW5pZmVzdC5hZGRpbi54bWwiIC8+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5j bHVkZT0ic3VidmVyc2lvbi1sb2dvLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+c3VidmVyc2lv bi1sb2dvLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgogICA8L0l0 ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxTaGFycFN2blxT aGFycFBsaW5rLVdpbjMyLnN2bkV4ZSI+CiAgICAgICA8TGluaz5TaGFycFBsaW5rLVdpbjMyLnN2 bkV4ZTwvTGluaz4KICAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8 L0NvcHlUb091dHB1dERpcmVjdG9yeT4KICAgICA8L05vbmU+Ci0gICAgPENvbnRlbnQgSW5jbHVk ZT0ic3VidmVyc2lvbi1sb2dvLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlBy ZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgogICAg IDxDb250ZW50IEluY2x1ZGU9Ii4uXFNoYXJwU3ZuXFNoYXJwU3ZuLURCNDQtMjAtd2luMzIuZGxs Ij4KICAgICAgIDxMaW5rPlNoYXJwU3ZuLURCNDQtMjAtd2luMzIuZGxsPC9MaW5rPgogICAgICAg PENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0 b3J5Pg0KDQogICBDb21taXQ6IGU2MjI3OWRkMzNjMGU0NGE1NWY1MDQ4ZDVmYzdjMDIwMjQ2NWI0 NjINCiAgIEF1dGhvcjogQ29keSBSdXNzZWxsIDxjb2R5QGpodS5lZHU+IChicmF0c2NoZSkNCiAg ICAgRGF0ZTogMjAxMy0xMS0xNSAxODo1OToyOSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRo dWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2U2MjI3OWRkMzNjMGU0NGE1NWY1MDQ4ZDVm YzdjMDIwMjQ2NWI0NjINCg0KUmVtb3ZlIHRoZSBCVUlMRF9SRVZJU0lPTiBjaGVjayBhbmQgdGhl IEVOQUJMRV9SQVlHVU4gY29uc3RhbnQuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9j b3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5jc3Byb2oKICBNIG1haW4vc3Jj L2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlL0xvZ2dpbmdTZXJ2aWNlLmNz Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5D b3JlLmNzcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEyLDkgKzEyLDYgQEAKICAgICA8QnVpbGRJbmZv Pi4uXC4uXC4uXGJ1aWxkXGJpblxidWlsZGluZm88L0J1aWxkSW5mbz4KICAgICA8VmNSZXZpc2lv bj4uLlwuLlwuLlx2Y3JldmlzaW9uPC9WY1JldmlzaW9uPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0g IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQlVJTERfUkVWSVNJT04pJyAhPSAnJyI+Ci0g ICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtFTkFCTEVfUkFZR1VOPC9E ZWZpbmVDb25zdGFudHM+Ci0gIDwvUHJvcGVydHlHcm91cD4KICAgPENob29zZT4KICAgICA8V2hl biBDb25kaXRpb249IiBFeGlzdHMoJ2M6XFByb2dyYW0gRmlsZXNcR2l0XGJpblxnaXQuZXhlJykg Ij4KICAgICAgIDxQcm9wZXJ0eUdyb3VwPg0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25v RGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUvTG9nZ2luZ1NlcnZpY2UuY3MNCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCkBAIC0xMDEsMTIgKzEwMSwxMCBAQCBzdGF0aWMgTG9nZ2luZ1NlcnZpY2UgKCkKIAogCQkJ dGltZXN0YW1wID0gRGF0ZVRpbWUuTm93OwogCi0jaWYgRU5BQkxFX1JBWUdVTgogCQkJc3RyaW5n IHJheWd1bktleSA9IEJyYW5kaW5nU2VydmljZS5HZXRTdHJpbmcgKCJSYXlndW5BcGlLZXkiKTsK IAkJCWlmIChyYXlndW5LZXkgIT0gbnVsbCkgewogCQkJCXJheWd1bkNsaWVudCA9IG5ldyBSYXln dW5DbGllbnQgKHJheWd1bktleSk7CiAJCQl9Ci0jZW5kaWYKIAogCQkJLy9yZW1vdmUgdGhlIGRl ZmF1bHQgdHJhY2UgbGlzdGVuZXIgb24gLk5FVCwgaXQgdGhyb3dzIHVwIGhvcnJpYmxlIGRpYWxv ZyBib3hlcyBmb3IgYXNzZXJ0cwogCQkJU3lzdGVtLkRpYWdub3N0aWNzLkRlYnVnLkxpc3RlbmVy cy5DbGVhciAoKTsNCg0KICAgQ29tbWl0OiAzMzY4MzljZjczMDQ5MTg2ZGU2ZWMxZDg1MDcwYjQ2 YzRjOTVjZDA2DQogICBBdXRob3I6IENvZHkgUnVzc2VsbCA8Y29keUBqaHUuZWR1PiAoYnJhdHNj aGUpDQogICAgIERhdGU6IDIwMTMtMTEtMTUgMTk6MTQ6MTAgR01UDQogICAgICBVUkw6IGh0dHBz Oi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC8zMzY4MzljZjczMDQ5MTg2ZGU2 ZWMxZDg1MDcwYjQ2YzRjOTVjZDA2DQoNClB1dCB0aGUgQlVJTERfUkVWSVNJT04gY2hlY2tpbmcg YmFjayBpbiwgYnV0IGluIHRoZSByaWdodCBwbGFjZS4gSXQgd2FzIGJlaW5nIG92ZXJ3cml0dGVu IGJ5IGxhdGVyIFByb3BlcnR5R3JvdXBzIGJlZm9yZS4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1h aW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLmNzcHJvagogIE0g bWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUvTG9nZ2luZ1Nl cnZpY2UuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9E ZXZlbG9wLkNvcmUuY3Nwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNjgsNiArNjgsOSBAQAogICAgIDxH ZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgogICAgIDxO b1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5 R3JvdXAgQ29uZGl0aW9uPSInJChCVUlMRF9SRVZJU0lPTiknICE9ICcnIj4KKyAgICA8RGVmaW5l Q29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtFTkFCTEVfUkFZR1VOPC9EZWZpbmVDb25zdGFu dHM+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8UmVmZXJlbmNlIElu Y2x1ZGU9IlN5c3RlbSIgLz4KICAgICA8UmVmZXJlbmNlIEluY2x1ZGU9Ik1vbm8uUG9zaXgiIC8+ DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3Au Q29yZS9Mb2dnaW5nU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEwMSwxMCArMTAxLDEyIEBA IHN0YXRpYyBMb2dnaW5nU2VydmljZSAoKQogCiAJCQl0aW1lc3RhbXAgPSBEYXRlVGltZS5Ob3c7 CiAKKyNpZiBFTkFCTEVfUkFZR1VOCiAJCQlzdHJpbmcgcmF5Z3VuS2V5ID0gQnJhbmRpbmdTZXJ2 aWNlLkdldFN0cmluZyAoIlJheWd1bkFwaUtleSIpOwogCQkJaWYgKHJheWd1bktleSAhPSBudWxs KSB7CiAJCQkJcmF5Z3VuQ2xpZW50ID0gbmV3IFJheWd1bkNsaWVudCAocmF5Z3VuS2V5KTsKIAkJ CX0KKyNlbmRpZgogCiAJCQkvL3JlbW92ZSB0aGUgZGVmYXVsdCB0cmFjZSBsaXN0ZW5lciBvbiAu TkVULCBpdCB0aHJvd3MgdXAgaG9ycmlibGUgZGlhbG9nIGJveGVzIGZvciBhc3NlcnRzCiAJCQlT eXN0ZW0uRGlhZ25vc3RpY3MuRGVidWcuTGlzdGVuZXJzLkNsZWFyICgpOw0KDQogICBDb21taXQ6 IDUwOWFhMDE5N2VhZDlkNGU0YzBkMjQzNWZjMTkzYzk2MWEzZTQzYWUNCiAgIEF1dGhvcjogSmVm ZnJleSBTdGVkZmFzdCA8amVmZkB4YW1hcmluLmNvbT4gKGpzdGVkZmFzdCkNCiAgICAgRGF0ZTog MjAxMy0xMS0xNSAyMDo0MzoxNCBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21v bm8vbW9ub2RldmVsb3AvY29tbWl0LzUwOWFhMDE5N2VhZDlkNGU0YzBkMjQzNWZjMTkzYzk2MWEz ZTQzYWUNCg0KdXBkYXRlZCBkZWJ1Z2dlci1saWJzDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWlu L2V4dGVybmFsL2RlYnVnZ2VyLWxpYnMKDQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9kZWJ1Z2dl ci1saWJzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBjb21taXQgZjc0OTFl NTM1NzAzYjgzNTI0MzJmYjc2MGRkYzA0MTc0M2Y5MDBjMworU3VicHJvamVjdCBjb21taXQgZjA0 Y2I1MDcwZmEzOGFjZGFmZjQ2ZDE0MTZhN2Q0MWRhNWJiNTc4ZA0KDQogICBDb21taXQ6IDQ3YmMy ZGUwNWYzYjBiY2JjZmRlMTMzMzUxYzExMTk0NmNkZDg1OGUNCiAgIEF1dGhvcjogSmVmZnJleSBT dGVkZmFzdCA8amVmZkB4YW1hcmluLmNvbT4gKGpzdGVkZmFzdCkNCiAgICAgRGF0ZTogMjAxMy0x MS0xNSAyMToyODozNyBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9u b2RldmVsb3AvY29tbWl0LzQ3YmMyZGUwNWYzYjBiY2JjZmRlMTMzMzUxYzExMTk0NmNkZDg1OGUN Cg0KZml4ZWQgdGhlIGJ1aWxkDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL2Rl YnVnZ2VyLWxpYnMKDQpNb2RpZmllZDogbWFpbi9leHRlcm5hbC9kZWJ1Z2dlci1saWJzDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBjb21taXQgZjA0Y2I1MDcwZmEzOGFjZGFm ZjQ2ZDE0MTZhN2Q0MWRhNWJiNTc4ZAorU3VicHJvamVjdCBjb21taXQgMzQ1OTUwMjRmMDA3MmMx Y2ZjNWIxZGRlMWQxOTRkMGRjYzVjMTFmYg0KDQogICBDb21taXQ6IDViYmNjMDM1MWRhMWY0ZjQ0 Njc1MGYzOTU3YTNjNTIxYmY0YjczZWUNCiAgIEF1dGhvcjogQ29keSBSdXNzZWxsIDxjb2R5QGpo dS5lZHU+IChicmF0c2NoZSkNCiAgICAgRGF0ZTogMjAxMy0xMS0xNiAwMzoyMjo0NCBHTVQNCiAg ICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzViYmNj MDM1MWRhMWY0ZjQ0Njc1MGYzOTU3YTNjNTIxYmY0YjczZWUNCg0KW0NvcmVdIFJlbW92ZSB0aGUg b2xkLCBwcmUtUmF5Z3VuIGxvZyB1cGxvYWRpbmcuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWlu L3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9Mb2dnaW5nU2Vydmlj ZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVs b3AuQ29yZS9Mb2dnaW5nU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE4MSwyMCArMTgxLDYg QEAgaW50ZXJuYWwgc3RhdGljIHZvaWQgUmVwb3J0VW5oYW5kbGVkRXhjZXB0aW9uIChFeGNlcHRp b24gZXgsIGJvb2wgd2lsbFNodXREb3duLAogCQkJCWlmIChSZXBvcnRDcmFzaGVzLkhhc1ZhbHVl ICYmICFSZXBvcnRDcmFzaGVzLlZhbHVlKQogCQkJCQlyZXR1cm47CiAKLQkJCQlieXRlW10gZGF0 YTsKLQkJCQl1c2luZyAodmFyIHN0cmVhbSA9IG5ldyBNZW1vcnlTdHJlYW0gKCkpIHsKLQkJCQkJ dXNpbmcgKHZhciB3cml0ZXIgPSBTeXN0ZW0uWG1sLlhtbFdyaXRlci5DcmVhdGUgKHN0cmVhbSkp IHsKLQkJCQkJCXdyaXRlci5Xcml0ZVN0YXJ0RWxlbWVudCAoIkNyYXNoTG9nIik7Ci0JCQkJCQl3 cml0ZXIuV3JpdGVBdHRyaWJ1dGVTdHJpbmcgKCJ2ZXJzaW9uIiwgU2VydmljZVZlcnNpb24pOwot Ci0JCQkJCQl3cml0ZXIuV3JpdGVFbGVtZW50U3RyaW5nICgiU3lzdGVtSW5mb3JtYXRpb24iLCBT eXN0ZW1JbmZvcm1hdGlvbi5HZXRUZXh0RGVzY3JpcHRpb24gKCkpOwotCQkJCQkJd3JpdGVyLldy aXRlRWxlbWVudFN0cmluZyAoIkV4Y2VwdGlvbiIsIGV4LlRvU3RyaW5nICgpKTsKLQotCQkJCQkJ d3JpdGVyLldyaXRlRW5kRWxlbWVudCAoKTsKLQkJCQkJfQotCQkJCQlkYXRhID0gc3RyZWFtLlRv QXJyYXkgKCk7Ci0JCQkJfQotCiAJCQkJdmFyIGN1c3RvbURhdGEgPSBuZXcgSGFzaHRhYmxlICgp OwogCQkJCWN1c3RvbURhdGFbIlN5c3RlbUluZm9ybWF0aW9uIl0gPSBTeXN0ZW1JbmZvcm1hdGlv bi5HZXRUZXh0RGVzY3JpcHRpb24gKCk7CiAKQEAgLTIwNCwxNyArMTkwLDYgQEAgaW50ZXJuYWwg c3RhdGljIHZvaWQgUmVwb3J0VW5oYW5kbGVkRXhjZXB0aW9uIChFeGNlcHRpb24gZXgsIGJvb2wg d2lsbFNodXREb3duLAogCQkJCQl9KTsKIAkJCQl9CiAKLQkJCQkvLyBMb2cgdG8gZGlzayBvbmx5 IGlmIHVwbG9hZGluZyBmYWlscy4KLQkJCQl2YXIgZmlsZW5hbWUgPSBzdHJpbmcuRm9ybWF0ICgi ezB9LnsxfS57Mn0uY3Jhc2hsb2ciLCBEYXRlVGltZS5VdGNOb3cuVG9TdHJpbmcgKCJ5eXl5LU1N LWRkX19ISC1tbS1zcyIpLCBTeXN0ZW1JbmZvcm1hdGlvbi5TZXNzaW9uVXVpZCwgSW50ZXJsb2Nr ZWQuSW5jcmVtZW50IChyZWYgQ3Jhc2hJZCkpOwotCQkJCVRocmVhZFBvb2wuUXVldWVVc2VyV29y a0l0ZW0gKGRlbGVnYXRlIHsKLQkJCQkJaWYgKCFUcnlVcGxvYWRSZXBvcnQgKGZpbGVuYW1lLCBk YXRhKSkgewotCQkJCQkJaWYgKCFEaXJlY3RvcnkuRXhpc3RzIChDcmFzaExvZ0RpcmVjdG9yeSkp Ci0JCQkJCQkJRGlyZWN0b3J5LkNyZWF0ZURpcmVjdG9yeSAoQ3Jhc2hMb2dEaXJlY3RvcnkpOwot Ci0JCQkJCQlGaWxlLldyaXRlQWxsQnl0ZXMgKENyYXNoTG9nRGlyZWN0b3J5LkNvbWJpbmUgKGZp bGVuYW1lKSwgZGF0YSk7Ci0JCQkJCX0KLQkJCQl9KTsKLQogCQkJCS8vZW5zdXJlIHdlIGRvbid0 IGxvc2UgdGhlIHNldHRpbmcKIAkJCQlpZiAoUmVwb3J0Q3Jhc2hlcyAhPSBvbGRSZXBvcnRDcmFz aGVzKSB7CiAJCQkJCVByb3BlcnR5U2VydmljZS5TYXZlUHJvcGVydGllcyAoKTsNCg0KICAgQ29t bWl0OiA2MmZlMGEwOWZmMWI4MmJmM2Q1ZDcwYzFlNTllOGUzY2IxNmIzMTc3DQogICBBdXRob3I6 IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0 ZTogMjAxMy0xMS0xNiAwNjowNjo0NSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29t L21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzYyZmUwYTA5ZmYxYjgyYmYzZDVkNzBjMWU1OWU4ZTNj YjE2YjMxNzcNCg0KRml4ZWQgJ0J1ZyAxNjI2OCAtIFR5cGUgc3lzdGVtIGV4Y2VwdGlvbnMgaW4g dGhlIGxvZycuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9w LklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcwoNCk1v ZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlw ZVN5c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTExMjgsMTkgKzEx MjgsMjUgQEAgcHVibGljIHZvaWQgSW5mb3JtRmlsZUFkZGVkIChQYXJzZWRGaWxlRXZlbnRBcmdz IGUpCiAKIAkJCVtOb25TZXJpYWxpemVkXQogCQkJaW50IGxvYWRPcGVyYXRpb25EZXB0aCA9IDA7 CisJCQlbTm9uU2VyaWFsaXplZF0KKwkJCXJlYWRvbmx5IG9iamVjdCBsb2FkT3BlcmF0aW9uTG9j a2VyID0gbmV3IG9iamVjdCAoKTsKIAotCQkJaW50ZXJuYWwgaW50IExvYWRPcGVyYXRpb25EZXB0 aCB7Ci0JCQkJZ2V0IHsKLQkJCQkJcmV0dXJuIGxvYWRPcGVyYXRpb25EZXB0aDsKLQkJCQl9Ci0J CQkJc2V0IHsKLQkJCQkJbG9hZE9wZXJhdGlvbkRlcHRoID0gdmFsdWU7Ci0JCQkJCWlmIChsb2Fk T3BlcmF0aW9uRGVwdGggPCAwKQotCQkJCQkJdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNl cHRpb24gKCk7Ci0JCQkJCU9uTG9hZCAoRXZlbnRBcmdzLkVtcHR5KTsKKwkJCWludGVybmFsIHZv aWQgQmVnaW5Mb2FkT3BlcmF0aW9uICgpCisJCQl7CisJCQkJbG9jayAobG9hZE9wZXJhdGlvbkxv Y2tlcikgeworCQkJCQlsb2FkT3BlcmF0aW9uRGVwdGgrKzsKIAkJCQl9CiAJCQl9CiAKKwkJCWlu dGVybmFsIHZvaWQgRW5kTG9hZE9wZXJhdGlvbiAoKQorCQkJeworCQkJCWxvY2sgKGxvYWRPcGVy YXRpb25Mb2NrZXIpIHsKKwkJCQkJaWYgKGxvYWRPcGVyYXRpb25EZXB0aCA+IDApIHsKKwkJCQkJ CWxvYWRPcGVyYXRpb25EZXB0aC0tOworCQkJCQl9CisJCQkJfQorCQkJCU9uTG9hZCAoRXZlbnRB cmdzLkVtcHR5KTsKKwkJCX0KIAkJCWJvb2wgaW5Mb2FkOwogCQkJcHVibGljIGJvb2wgSW5Mb2Fk IHsKIAkJCQlnZXQgewpAQCAtMTI2OSw3ICsxMjc1LDcgQEAgcHVibGljIExhenlQcm9qZWN0TG9h ZGVyIChQcm9qZWN0Q29udGVudFdyYXBwZXIgd3JhcHBlcikKIAkJCQkJdGhpcy53cmFwcGVyID0g d3JhcHBlcjsKIAkJCQkJY29udGV4dFRhc2sgPSBUYXNrLkZhY3RvcnkuU3RhcnROZXcgKGRlbGVn YXRlIHsKIAkJCQkJCXRyeSB7Ci0JCQkJCQkJdGhpcy53cmFwcGVyLkxvYWRPcGVyYXRpb25EZXB0 aCsrOworCQkJCQkJCXRoaXMud3JhcHBlci5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQkJ dmFyIHAgPSB0aGlzLndyYXBwZXIuUHJvamVjdDsKIAkJCQkJCQl2YXIgY29udGV4dCA9IExvYWRQ cm9qZWN0Q2FjaGUgKHApOwogCkBAIC0xMjg4LDcgKzEyOTQsNyBAQCBwdWJsaWMgTGF6eVByb2pl Y3RMb2FkZXIgKFByb2plY3RDb250ZW50V3JhcHBlciB3cmFwcGVyKQogCQkJCQkJCVF1ZXVlUGFy c2VKb2IgKHRoaXMud3JhcHBlcik7CiAJCQkJCQkJcmV0dXJuIGNvbnRleHQ7CiAJCQkJCQl9IGZp bmFsbHkgewotCQkJCQkJCXRoaXMud3JhcHBlci5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJ CQl0aGlzLndyYXBwZXIuRW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQkJCX0KIAkJCQkJfSk7CiAJ CQkJfQpAQCAtMjUzNyw3ICsyNTQzLDcgQEAgcHVibGljIHZvaWQgUnVuIChJUHJvZ3Jlc3NNb25p dG9yIG1vbml0b3IpCiAJCQkJVHlwZVN5c3RlbVBhcnNlciBwYXJzZXIgPSBudWxsOwogCQkJCXZh ciB0YWdzID0gQ29udGV4dC5HZXRFeHRlbnNpb25PYmplY3QgPFByb2plY3RDb21tZW50VGFncz4g KCk7CiAJCQkJdHJ5IHsKLQkJCQkJQ29udGV4dC5Mb2FkT3BlcmF0aW9uRGVwdGgrKzsKKwkJCQkJ Q29udGV4dC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCWZvcmVhY2ggKHZhciBmaWxlIGlu IChGaWxlTGlzdCA/PyBDb250ZXh0LlByb2plY3QuRmlsZXMpKSB7CiAJCQkJCQl2YXIgZmlsZU5h bWUgPSBmaWxlLkZpbGVQYXRoOwogCQkJCQkJaWYgKGZpbGVzU2tpcHBlZEluUGFyc2VUaHJlYWQu QW55IChmID0+IGYgPT0gZmlsZU5hbWUpKQpAQCAtMjU1OCw3ICsyNTY0LDcgQEAgcHVibGljIHZv aWQgUnVuIChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCiAJCQkJCQlDb250ZXh0LkluZm9ybUZp bGVBZGRlZCAobmV3IFBhcnNlZEZpbGVFdmVudEFyZ3MgKHBhcnNlZERvY3VtZW50LlBhcnNlZEZp bGUpKTsKIAkJCQkJfQogCQkJCX0gZmluYWxseSB7Ci0JCQkJCUNvbnRleHQuTG9hZE9wZXJhdGlv bkRlcHRoLS07CisJCQkJCUNvbnRleHQuRW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQl9CiAJCQl9 CiAJCX0KQEAgLTI2MTQsNyArMjYyMCw3IEBAIHN0YXRpYyB2b2lkIFF1ZXVlUGFyc2VKb2IgKFBy b2plY3RDb250ZW50V3JhcHBlciBjb250ZXh0LCBJRW51bWVyYWJsZTxQcm9qZWN0RmlsCiAJCQl9 OwogCQkJbG9jayAocGFyc2VRdWV1ZUxvY2spIHsKIAkJCQlSZW1vdmVQYXJzZUpvYiAoY29udGV4 dCk7Ci0JCQkJY29udGV4dC5Mb2FkT3BlcmF0aW9uRGVwdGgrKzsKKwkJCQljb250ZXh0LkJlZ2lu TG9hZE9wZXJhdGlvbiAoKTsKIAkJCQlwYXJzZVF1ZXVlSW5kZXggW2NvbnRleHRdID0gam9iOwog CQkJCXBhcnNlUXVldWUuRW5xdWV1ZSAoam9iKTsKIAkJCQlwYXJzZUV2ZW50LlNldCAoKTsKQEAg LTI2NTIsNyArMjY1OCw3IEBAIHN0YXRpYyB2b2lkIFJlbW92ZVBhcnNlSm9iIChQcm9qZWN0Q29u dGVudFdyYXBwZXIgcHJvamVjdCkKIAkJCQlQYXJzaW5nSm9iIGpvYjsKIAkJCQlpZiAocGFyc2VR dWV1ZUluZGV4LlRyeUdldFZhbHVlIChwcm9qZWN0LCBvdXQgam9iKSkgewogCQkJCQlwYXJzZVF1 ZXVlSW5kZXguUmVtb3ZlIChwcm9qZWN0KTsKLQkJCQkJcHJvamVjdC5Mb2FkT3BlcmF0aW9uRGVw dGgtLTsKKwkJCQkJcHJvamVjdC5FbmRMb2FkT3BlcmF0aW9uICgpOwogCQkJCX0KIAkJCX0KIAkJ fQpAQCAtMjcwNSw3ICsyNzExLDcgQEAgc3RhdGljIHZvaWQgQ2hlY2tNb2RpZmllZEZpbGVzIChQ cm9qZWN0IHByb2plY3QsIFByb2plY3RGaWxlW10gcHJvamVjdEZpbGVzLCBQcm8KIAkJewogCQkJ Y29udGVudC5SdW5XaGVuTG9hZGVkIChkZWxlZ2F0ZShJUHJvamVjdENvbnRlbnQgY250KSB7CiAJ CQkJdHJ5IHsKLQkJCQkJY29udGVudC5Mb2FkT3BlcmF0aW9uRGVwdGgrKzsKKwkJCQkJY29udGVu dC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCXZhciBtb2RpZmllZEZpbGVzID0gbmV3IExp c3Q8UHJvamVjdEZpbGU+ICgpOwogCQkJCQl2YXIgb2xkRmlsZU5ld0ZpbGUgPSBuZXcgTGlzdDxU dXBsZTxQcm9qZWN0RmlsZSwgSVVucmVzb2x2ZWRGaWxlPj4gKCk7CiAKQEAgLTI3NDcsNyArMjc1 Myw3IEBAIHN0YXRpYyB2b2lkIENoZWNrTW9kaWZpZWRGaWxlcyAoUHJvamVjdCBwcm9qZWN0LCBQ cm9qZWN0RmlsZVtdIHByb2plY3RGaWxlcywgUHJvCiAJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUp IHsKIAkJCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJFeGNlcHRpb24gaW4gY2hlY2sgbW9k aWZpZWQgZmlsZXMuIiwgZSk7CiAJCQkJfSBmaW5hbGx5IHsKLQkJCQkJY29udGVudC5Mb2FkT3Bl cmF0aW9uRGVwdGgtLTsKKwkJCQkJY29udGVudC5FbmRMb2FkT3BlcmF0aW9uICgpOwogCQkJCX0K IAogCQkJfSk7CkBAIC0yODIwLDcgKzI4MjYsNyBAQCBzdGF0aWMgdm9pZCBDb25zdW1lUGFyc2lu Z1F1ZXVlICgpCiAJCQkJCQkJCW1vbml0b3IgPSBHZXRQYXJzZVByb2dyZXNzTW9uaXRvciAoKTsK IAkJCQkJCQltb25pdG9yLlJlcG9ydEVycm9yIChudWxsLCBleCk7CiAJCQkJCQl9IGZpbmFsbHkg ewotCQkJCQkJCWpvYi5Db250ZXh0LkxvYWRPcGVyYXRpb25EZXB0aC0tOworCQkJCQkJCWpvYi5D b250ZXh0LkVuZExvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQl9CiAJCQkJCX0KIAkJCQkJDQoNCiAg IENvbW1pdDogODM0NDNmNjYyZTNiMWVhNjRlOGI2YWZlODFlODI3YTA0OGMxZGZkNw0KICAgQXV0 aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4uY29tPiAobWtydWVnZXIpDQogICAg IERhdGU6IDIwMTMtMTEtMTYgMDY6MjM6MDEgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHVi LmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC84MzQ0M2Y2NjJlM2IxZWE2NGU4YjZhZmU4MWU4 MjdhMDQ4YzFkZmQ3DQoNCkZpeGVkICdCdWcgMTYyODMgLSBXcm9uZyBsaXRlcmFsIHN0cmluZyBh ZGRpdGlvbicNCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQog IE0gbWFpbi90ZXN0cy9Vbml0VGVzdHMvTW9ub0RldmVsb3AuQ1NoYXJwQmluZGluZy9PblRoZUZs eUZvcm1hdHRlclRlc3RzLmNzCg0KTW9kaWZpZWQ6IG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQ0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KQEAgLTEgKzEgQEAKLVN1YnByb2plY3QgY29tbWl0IDIwNDRlYTM2ZDNjZjgz MWNhYzFjMGM5YmY2ZGYwZWZkY2UwMjMwYjAKK1N1YnByb2plY3QgY29tbWl0IDQ2N2RkNzQ4MDE5 ZWFmMDQwNDg1ZDdiZmIxNjNlYTAzODNkMjhhMzgNCg0KTW9kaWZpZWQ6IG1haW4vdGVzdHMvVW5p dFRlc3RzL01vbm9EZXZlbG9wLkNTaGFycEJpbmRpbmcvT25UaGVGbHlGb3JtYXR0ZXJUZXN0cy5j cw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KQEAgLTI3Myw2ICsyNzMsMjEgQEAgcHVibGljIHZvaWQgVGVzdEJ1ZzE2 MTc0X1ZpcnR1YWxJbmRlbnQgKCkKIAkJCQlDb25zb2xlLldyaXRlTGluZSAobmV3VGV4dCk7CiAJ CQlBc3NlcnQuQXJlRXF1YWwgKGV4cGVjdGVkLCBuZXdUZXh0KTsKIAkJfQorCisKKwkJLy8vIDxz dW1tYXJ5PgorCQkvLy8gQnVnIDE2MjgzIC0gV3JvbmcgbGl0ZXJhbCBzdHJpbmcgYWRkaXRpb24K KwkJLy8vIDwvc3VtbWFyeT4KKwkJW1Rlc3RdCisJCXB1YmxpYyB2b2lkIFRlc3RCdWcxNjI4MyAo KQorCQl7CisJCQlUZXN0Vmlld0NvbnRlbnQgY29udGVudDsKKwkJCXZhciBleHQgPSBTZXR1cCAo IiRcIlxcZGV2XFxudWxsIHswfVwiIiwgb3V0IGNvbnRlbnQpOworCQkJY29udGVudC5HZXRUZXh0 RWRpdG9yRGF0YSAoKS5JbnNlcnQgKDAsICJAIik7CisJCQlleHQuS2V5UHJlc3MgKChHZGsuS2V5 KSdAJywgJ0AnLCBHZGsuTW9kaWZpZXJUeXBlLk5vbmUpOworCQkJdmFyIG5ld1RleHQgPSBjb250 ZW50LlRleHQ7CisJCQlBc3NlcnQuQXJlRXF1YWwgKCJAXCJcXGRldlxudWxsIHswfVwiIiwgbmV3 VGV4dCk7CisJCX0KIAl9CiB9CiANCg0KICAgQ29tbWl0OiA1Y2Y3NTUxNGY2MTE2ZmVkMWU0YWRh ZGFjMDJkOWIyZjA5ZWUzYmE2DQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFt YXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTogMjAxMy0xMS0xNiAwNjoyNToyMyBHTVQN CiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzVj Zjc1NTE0ZjYxMTZmZWQxZTRhZGFkYWMwMmQ5YjJmMDllZTNiYTYNCg0KRml4ZWQgJ0J1ZyAxNjI4 MSAtIEVycm9yIGNsb3NpbmcgdGhlIE1vbm9EZXZlbG9wIHByb2plY3QgdXNpbmcgNC4yLjAnLg0K DQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0Rl dmVsb3AuSWRlLlR5cGVTeXN0ZW0vVHlwZVN5c3RlbVNlcnZpY2UuY3MKDQpNb2RpZmllZDogbWFp bi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlR5cGVTeXN0ZW0vVHlw ZVN5c3RlbVNlcnZpY2UuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNzM2LDcgKzE3MzYsOCBAQCBpbnRl cm5hbCBzdGF0aWMgdm9pZCBVbmxvYWRQcm9qZWN0IChQcm9qZWN0IHByb2plY3QpCiAJCQkJCiAJ CQlQcm9qZWN0Q29udGVudFdyYXBwZXIgd3JhcHBlcjsKIAkJCWxvY2sgKHByb2plY3RXcmFwcGVy VXBkYXRlTG9jaykgewotCQkJCXdyYXBwZXIgPSBwcm9qZWN0Q29udGVudHMgW3Byb2plY3RdOwor CQkJCWlmICghcHJvamVjdENvbnRlbnRzLlRyeUdldFZhbHVlIChwcm9qZWN0LCBvdXQgd3JhcHBl cikpCisJCQkJCXJldHVybjsKIAkJCQlwcm9qZWN0Q29udGVudHMuUmVtb3ZlIChwcm9qZWN0KTsK IAkJCX0KIAkJCVN0b3JlUHJvamVjdENhY2hlIChwcm9qZWN0LCB3cmFwcGVyKTsNCg0KICAgQ29t bWl0OiBmY2VhZDU3ODllOTYyNTRjYWJjNDdjOGVjMTdjYjFkN2FjNjM1Njk4DQogICBBdXRob3I6 IFN0ZXBoZW4gR3JlYW0gPHN0ZXBoZW4uZ3JlYW1AZ21haWwuY29tPiAoVGhyZWVUb2VzKQ0KICAg ICBEYXRlOiAyMDEzLTExLTE2IDE1OjAzOjMxIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1 Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvZmNlYWQ1Nzg5ZTk2MjU0Y2FiYzQ3YzhlYzE3 Y2IxZDdhYzYzNTY5OA0KDQpGaXhlZCBhIGJ1ZyB3aGVyZSBYU1Agd291bGQgZmFpbCB0byBsYXVu Y2ggd2hlbiB1c2luZyAuTkVUIDQgY29uZmlndXJhdGlvbiBvbiBXaW5kb3dzLiBQYXRoIGdlbmVy YXRvciB3b3VsZCBnZW5lcmF0ZSB0aGUgY29ycmVjdCBwYXRoLCBhbmQgdGhlbiBzd2l0Y2ggaXQg b3V0IGZvciB0aGUgNC41IGxpYnJhcnkgcGF0aCBpbnN0ZWFkLiBYU1AgaXNuJ3QgcGFja2FnZWQg aW50byB0aGF0IGRpcmVjdG9yeSBvbiBXaW5kb3dzLCBzbyBNb25vRGV2ZWxvcCB3b3VsZCB0aHJv dyBhbiBleGNlcHRpb24gd2hlbiBpdCBjb3VsZG4ndCBmaW5kIGl0DQoNCkNoYW5nZWQgcGF0aHM6 CiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC9Nb25vRGV2ZWxv cC5EZWJ1Z2dlci5Tb2Z0LkFzcE5ldC9Bc3BOZXRTb2Z0RGVidWdnZXJFbmdpbmUuY3MKDQpNb2Rp ZmllZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLkRlYnVnZ2VyLlNvZnQvTW9ub0RldmVs b3AuRGVidWdnZXIuU29mdC5Bc3BOZXQvQXNwTmV0U29mdERlYnVnZ2VyRW5naW5lLmNzDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpAQCAtNTcsNyArNTcsNyBAQCBGaWxlUGF0aCBHZXRGeERpciAoTW9ub1RhcmdldFJ1 bnRpbWUgcnVudGltZSwgQ2xyVmVyc2lvbiB2ZXJzaW9uKQogCQkJCXJldHVybiBwcmVmaXguQ29t YmluZSAoImxpYiIsICJtb25vIiwgIjIuMCIpOwogCQkJY2FzZSBDbHJWZXJzaW9uLk5ldF80XzA6 CiAJCQkJdmFyIG5ldDQ1UGF0aCA9IHByZWZpeC5Db21iaW5lICgibGliIiwgIm1vbm8iLCAiNC41 Iik7Ci0JCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1UGF0aCkpIHJldHVybiBuZXQ0NVBh dGg7CisJCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1UGF0aCkgJiYgIU1vbm9EZXZlbG9w LkNvcmUuUGxhdGZvcm0uSXNXaW5kb3dzKSByZXR1cm4gbmV0NDVQYXRoOwogCQkJCXJldHVybiBw cmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQuMCIpOwogCQkJY2FzZSBDbHJWZXJzaW9u Lk5ldF80XzU6CiAJCQkJcmV0dXJuIHByZWZpeC5Db21iaW5lICgibGliIiwgIm1vbm8iLCAiNC41 Iik7DQoNCiAgIENvbW1pdDogOWI2ZDA1ZTg5YzkwNjY0OTZlMWNmYmNhYWQ3YzEzY2RmOGE1ZDYx Yw0KICAgQXV0aG9yOiBBbGFuIE1jR292ZXJuIDxhbGFuLm1jZ292ZXJuQGdtYWlsLmNvbT4gKGFs YW5tY2dvdmVybikNCiAgICAgRGF0ZTogMjAxMy0xMS0xNyAxODowMTowOCBHTVQNCiAgICAgIFVS TDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzliNmQwNWU4OWM5 MDY2NDk2ZTFjZmJjYWFkN2MxM2NkZjhhNWQ2MWMNCg0KTWVyZ2UgcHVsbCByZXF1ZXN0ICM0Mzcg ZnJvbSBUaHJlZVRvZXMvbWFzdGVyCgpGaXhlZCBhIGJ1ZyB3aGVyZSBYU1Agd291bGQgZmFpbCB0 byBsYXVuY2ggd2hlbiB1c2luZyAuTkVUIDQgY29uZmlndXJhdGlvbg0KDQpDaGFuZ2VkIHBhdGhz OgogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLkRlYnVnZ2VyLlNvZnQvTW9ub0RldmVs b3AuRGVidWdnZXIuU29mdC5Bc3BOZXQvQXNwTmV0U29mdERlYnVnZ2VyRW5naW5lLmNzCg0KTW9k aWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5EZWJ1Z2dlci5Tb2Z0L01vbm9EZXZl bG9wLkRlYnVnZ2VyLlNvZnQuQXNwTmV0L0FzcE5ldFNvZnREZWJ1Z2dlckVuZ2luZS5jcw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KQEAgLTU3LDcgKzU3LDcgQEAgRmlsZVBhdGggR2V0RnhEaXIgKE1vbm9UYXJnZXRS dW50aW1lIHJ1bnRpbWUsIENsclZlcnNpb24gdmVyc2lvbikKIAkJCQlyZXR1cm4gcHJlZml4LkNv bWJpbmUgKCJsaWIiLCAibW9ubyIsICIyLjAiKTsKIAkJCWNhc2UgQ2xyVmVyc2lvbi5OZXRfNF8w OgogCQkJCXZhciBuZXQ0NVBhdGggPSBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQu NSIpOwotCQkJCWlmIChEaXJlY3RvcnkuRXhpc3RzIChuZXQ0NVBhdGgpKSByZXR1cm4gbmV0NDVQ YXRoOworCQkJCWlmIChEaXJlY3RvcnkuRXhpc3RzIChuZXQ0NVBhdGgpICYmICFNb25vRGV2ZWxv cC5Db3JlLlBsYXRmb3JtLklzV2luZG93cykgcmV0dXJuIG5ldDQ1UGF0aDsKIAkJCQlyZXR1cm4g cHJlZml4LkNvbWJpbmUgKCJsaWIiLCAibW9ubyIsICI0LjAiKTsKIAkJCWNhc2UgQ2xyVmVyc2lv bi5OZXRfNF81OgogCQkJCXJldHVybiBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQu NSIpOw0KDQogICBDb21taXQ6IDA4MGExM2NlMGI4NWQ0NzI4ZDNmMjdmZjc3MjA0MGQ5YWE3NWU1 YWENCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQog ICAgIERhdGU6IDIwMTMtMTEtMTcgMjI6NTY6MTcgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0 aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC8wODBhMTNjZTBiODVkNDcyOGQzZjI3ZmY3 NzIwNDBkOWFhNzVlNWFhDQoNCltWZXJzaW9uQ29udHJvbF0gSW1wbGVtZW50ZWQgYmFja2VuZCBz cGVjaWZpYyB0ZXN0cwoKSW5jbHVkZSBhIGZpeHVwIGZvciBHZXRQdXNoRGlmZi4NCg0KQ2hhbmdl ZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5W ZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFp bi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdp dC5UZXN0cy9CYXNlUmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lv bkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L01vbm9EZXZlbG9wLlZlcnNp b25Db250cm9sLkdpdC9HaXRSZXBvc2l0b3J5LmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lv bkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9CYXNl U3ZuUmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wv TW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9SZXBvc2l0b3J5VGVz dHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9TdWJ2ZXJzaW9uLldpbjMy LlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVy c2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VHaXRS ZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zMiwxNCArMzIsMTQgQEAKIHVzaW5n IE5HaXQuQXBpOw0KIHVzaW5nIE5Vbml0LkZyYW1ld29yazsNCiB1c2luZyBTeXN0ZW0uSU87DQot dXNpbmcgU3lzdGVtOw0KIHVzaW5nIE5HaXQuU3RvcmFnZS5GaWxlOw0KIHVzaW5nIE5HaXQuUmV2 d2FsazsNCit1c2luZyBTeXN0ZW0uTGlucTsNCiANCiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuVmVy c2lvbkNvbnRyb2wuR2l0LlRlc3RzDQogew0KIAlbVGVzdEZpeHR1cmVdDQotCXB1YmxpYyBjbGFz cyBCYXNlR2l0VXRpbHNUZXN0IDogQmFzZVJlcG9VdGlsc1Rlc3QNCisJc2VhbGVkIGNsYXNzIEJh c2VHaXRVdGlsc1Rlc3QgOiBCYXNlUmVwb1V0aWxzVGVzdA0KIAl7DQogCQlbU2V0VXBdDQogCQlw dWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQ0KQEAgLTE2MSw2ICsxNjEsMTg0IEBAIHByb3Rl Y3RlZCBvdmVycmlkZSB2b2lkIEJsYW1lRXh0cmFJbnRlcm5hbHMgKEFubm90YXRpb24gW10gYW5u b3RhdGlvbnMpCiAJCQlBc3NlcnQuSXNUcnVlIChhbm5vdGF0aW9ucyBbMl0uSGFzRGF0ZSk7DQog CQl9DQogDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RHaXRTdGFzaCAoKQ0KKwkJew0K KwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJQWRkRmlsZSAoImZpbGUy IiwgIm5vdGhpbmciLCB0cnVlLCB0cnVlKTsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIs IHRydWUsIGZhbHNlKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLkNyZWF0ZSAobnVsbCk7DQor CQkJQXNzZXJ0LklzVHJ1ZSAoIUZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKSwg IlN0YXNoIGNyZWF0aW9uIGZhaWx1cmUiKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLlBvcCAo bnVsbCk7DQorDQorCQkJVmVyc2lvbkluZm8gdmkgPSByZXBvMi5HZXRWZXJzaW9uSW5mbyAoUm9v dENoZWNrb3V0ICsgImZpbGUxIiwgVmVyc2lvbkluZm9RdWVyeUZsYWdzLklnbm9yZUNhY2hlKTsN CisJCQlBc3NlcnQuQXJlRXF1YWwgKFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCB2aS5TdGF0 dXMgJiBWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgIlN0YXNoIHBvcCBmYWlsdXJlIik7DQor CQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RHaXRCcmFuY2hDcmVhdGlvbiAo KQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorDQorCQkJQWRk RmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlyZXBvMi5DcmVhdGVCcmFu Y2ggKCJicmFuY2gxIiwgbnVsbCk7DQorDQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBN b25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgp LCAiYnJhbmNoMSIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoImJyYW5jaDEiLCByZXBvMi5HZXRD dXJyZW50QnJhbmNoICgpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChGaWxlLkV4aXN0cyAoUm9vdENo ZWNrb3V0ICsgImZpbGUxIiksICJCcmFuY2ggbm90IGluaGVyaXRpbmcgZnJvbSBjdXJyZW50LiIp Ow0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0IiwgdHJ1ZSwgZmFsc2UpOw0KKwkJCXJl cG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDIiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0Jy YW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVz c01vbml0b3IgKCksICJicmFuY2gyIik7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoIUZpbGUuRXhpc3Rz IChSb290Q2hlY2tvdXQgKyAiZmlsZTIiKSwgIlVuY29tbWl0dGVkIGNoYW5nZXMgd2VyZSBub3Qg c3Rhc2hlZCIpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuUG9wIChuZXcgTnVsbFByb2dyZXNz TW9uaXRvciAoKSk7DQorDQorCQkJQXNzZXJ0LklzVHJ1ZSAoRmlsZS5FeGlzdHMgKFJvb3RDaGVj a291dCArICJmaWxlMiIpLCAiVW5jb21taXR0ZWQgY2hhbmdlcyB3ZXJlIG5vdCBzdGFzaGVkIGNv cnJlY3RseSIpOw0KKw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3Au Q29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgIm1hc3RlciIp Ow0KKwkJCXJlcG8yLlJlbW92ZUJyYW5jaCAoImJyYW5jaDEiKTsNCisJCQlBc3NlcnQuSXNGYWxz ZSAocmVwbzIuR2V0QnJhbmNoZXMgKCkuQW55IChiID0+IGIuTmFtZSA9PSAiYnJhbmNoMSIpLCAi RmFpbGVkIHRvIGRlbGV0ZSBicmFuY2giKTsNCisNCisJCQlyZXBvMi5SZW5hbWVCcmFuY2ggKCJi cmFuY2gyIiwgImJyYW5jaDMiKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5HZXRCcmFuY2hl cyAoKS5BbnkgKGIgPT4gYi5OYW1lID09ICJicmFuY2gzIikgJiYgcmVwbzIuR2V0QnJhbmNoZXMg KCkuQWxsIChiID0+IGIuTmFtZSAhPSAiYnJhbmNoMiIpLCAiRmFpbGVkIHRvIHJlbmFtZSBicmFu Y2giKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdEdpdFN5bmNCcmFu Y2hlcyAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJ QWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChy ZXBvMik7DQorDQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNoMyIsIG51bGwpOw0KKwkJ CXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0 b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDMiKTsNCisJCQlBZGRGaWxlICgi ZmlsZTIiLCAiYXNkZiIsIHRydWUsIHRydWUpOw0KKwkJCXJlcG8yLlB1c2ggKG5ldyBNb25vRGV2 ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAib3Jp Z2luIiwgImJyYW5jaDMiKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9E ZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJt YXN0ZXIiKTsNCisNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJicmFuY2g0IiwgIm9yaWdpbi9i cmFuY2gzIik7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3Jl LlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNoNCIpOw0K KwkJCUFzc2VydC5Jc1RydWUgKEZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTIiKSwg IlRyYWNraW5nIHJlbW90ZSBpcyBub3QgZ3JhYmJpbmcgY29ycmVjdCBjb21taXRzIik7DQorCQl9 DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RQdXNoQ2hhbmdlc2V0ICgpDQorCQl7 DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmls ZSIsICJtZWgiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorDQorCQkJ QWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlBZGRGaWxlICgiZmls ZTIiLCAidGV4dDIiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlDaGFuZ2VTZXQgZGlmZiA9IHJlcG8y LkdldFB1c2hDaGFuZ2VTZXQgKCJvcmlnaW4iLCAibWFzdGVyIik7DQorCQkJQXNzZXJ0LkFyZUVx dWFsICgyLCBkaWZmLkl0ZW1zLkNvdW50ICgpKTsNCisNCisJCQlDaGFuZ2VTZXRJdGVtIGl0ZW0g PSBkaWZmLkdldEZpbGVJdGVtIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKTsNCisJCQlBc3NlcnQu SXNOb3ROdWxsIChpdGVtKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKFZlcnNpb25TdGF0dXMuU2No ZWR1bGVkQWRkLCBpdGVtLlN0YXR1cyAmIFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkKTsNCisN CisJCQlpdGVtID0gZGlmZi5HZXRGaWxlSXRlbSAoUm9vdENoZWNrb3V0ICsgImZpbGUxIik7DQor CQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsIChWZXJzaW9u U3RhdHVzLlNjaGVkdWxlZEFkZCwgaXRlbS5TdGF0dXMgJiBWZXJzaW9uU3RhdHVzLlNjaGVkdWxl ZEFkZCk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCVtJZ25vcmUgKCJHZXRQdXNoRGlmZiBjb250 ZW50IGlzIGFsd2F5cyBlbXB0eSIpXQ0KKwkJcHVibGljIHZvaWQgVGVzdFB1c2hEaWZmICgpDQor CQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgi ZmlsZSIsICJtZWgiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorDQor CQkJQWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlBZGRGaWxlICgi ZmlsZTIiLCAidGV4dDIiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlEaWZmSW5mb1tdIGRpZmYgPSBy ZXBvMi5HZXRQdXNoRGlmZiAoIm9yaWdpbiIsICJtYXN0ZXIiKTsNCisJCQlBc3NlcnQuQXJlRXF1 YWwgKDIsIGRpZmYuTGVuZ3RoKTsNCisNCisJCQlEaWZmSW5mbyBpdGVtID0gZGlmZiBbMF07DQor CQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgiZmlsZTEi LCBpdGVtLkZpbGVOYW1lLkZpbGVOYW1lKTsNCisJCQkvL0Fzc2VydC5BcmVFcXVhbCAoInRleHQi LCBpdGVtLkNvbnRlbnQpOw0KKw0KKwkJCWl0ZW0gPSBkaWZmIFsxXTsNCisJCQlBc3NlcnQuSXNO b3ROdWxsIChpdGVtKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJmaWxlMiIsIGl0ZW0uRmlsZU5h bWUuRmlsZU5hbWUpOw0KKwkJCS8vQXNzZXJ0LkFyZUVxdWFsICgidGV4dDIiLCBpdGVtLkNvbnRl bnQpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0R2l0VXJsICgpDQor CQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBc3NlcnQuSXNU cnVlIChyZXBvMi5Jc1VybFZhbGlkICgiZ2l0QGdpdGh1Yi5jb206bW9uby9tb25vZGV2ZWxvcCIp KTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiZ2l0Oi8vZ2l0aHViLmNv bTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5J c1VybFZhbGlkICgic3NoOi8vdXNlckBob3N0LmNvbTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIp KTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiaHR0cDovL2dpdGh1Yi5j b206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIu SXNVcmxWYWxpZCAoImh0dHBzOi8vZ2l0aHViLmNvbTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIp KTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiZnRwOi8vZ2l0aHViLmNv bTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5J c1VybFZhbGlkICgiZnRwczovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7 DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImZpbGU6Ly8vbW9uby9tb25v ZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoInJz eW5jOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbHBvLmdpdCIpKTsNCisJCX0NCisNCisJCVtU ZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdFJlbW90ZSAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9 IChHaXRSZXBvc2l0b3J5KVJlcG87DQorDQorCQkJQXNzZXJ0LkFyZUVxdWFsICgib3JpZ2luIiwg cmVwbzIuR2V0Q3VycmVudFJlbW90ZSAoKSk7DQorDQorCQkJQWRkRmlsZSAoImZpbGUxIiwgInRl eHQiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorCQkJcmVwbzIuQ3Jl YXRlQnJhbmNoICgiYnJhbmNoMSIsIG51bGwpOw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChu ZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRv ciAoKSwgImJyYW5jaDEiKTsNCisJCQlBZGRGaWxlICgiZmlsZTIiLCAidGV4dCIsIHRydWUsIHRy dWUpOw0KKwkJCVBvc3RDb21taXQgKHJlcG8yKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKDIsIHJl cG8yLkdldEJyYW5jaGVzICgpLkNvdW50ICgpKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKDEsIHJl cG8yLkdldFJlbW90ZXMgKCkuQ291bnQgKCkpOw0KKw0KKwkJCXJlcG8yLlJlbmFtZVJlbW90ZSAo Im9yaWdpbiIsICJvdGhlciIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoIm90aGVyIiwgcmVwbzIu R2V0Q3VycmVudFJlbW90ZSAoKSk7DQorDQorCQkJcmVwbzIuUmVtb3ZlUmVtb3RlICgib3RoZXIi KTsNCisJCQlBc3NlcnQuSXNGYWxzZSAocmVwbzIuR2V0UmVtb3RlcyAoKS5BbnkgKCkpOw0KKwkJ fQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0SXNNZXJnZWQgKCkNCisJCXsNCisJ CQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIs ICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNCcmFu Y2hNZXJnZWQgKCJtYXN0ZXIiKSk7DQorDQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNo MSIsIG51bGwpOw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29y ZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDEiKTsN CisJCQlBZGRGaWxlICgiZmlsZTIiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKw0KKwkJCXJlcG8y LlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3Jpbmcu TnVsbFByb2dyZXNzTW9uaXRvciAoKSwgIm1hc3RlciIpOw0KKwkJCUFzc2VydC5Jc0ZhbHNlIChy ZXBvMi5Jc0JyYW5jaE1lcmdlZCAoImJyYW5jaDEiKSk7DQorCQkJcmVwbzIuTWVyZ2UgKCJicmFu Y2gxIiwgR2l0VXBkYXRlT3B0aW9ucy5Ob3JtYWxVcGRhdGUsIG5ldyBNb25vRGV2ZWxvcC5Db3Jl LlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpKTsNCisJCQlBc3NlcnQu SXNUcnVlIChyZXBvMi5Jc0JyYW5jaE1lcmdlZCAoImJyYW5jaDEiKSk7DQorCQl9DQorDQorCQlb VGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RUYWdzICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0g KEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUs IHRydWUpOw0KKwkJCXJlcG8yLkFkZFRhZyAoInRhZzEiLCBHZXRIZWFkUmV2aXNpb24gKCksICJt eS10YWciKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKDEsIHJlcG8yLkdldFRhZ3MgKCkuQ291bnQg KCkpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoInRhZzEiLCByZXBvMi5HZXRUYWdzICgpLkZpcnN0 ICgpKTsNCisJCQlyZXBvMi5SZW1vdmVUYWcgKCJ0YWcxIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFs ICgwLCByZXBvMi5HZXRUYWdzICgpLkNvdW50ICgpKTsNCisJCX0NCisNCisJCS8vIFRPRE86IFRl c3QgcmViYXNlIGFuZCBtZXJnZSAtIFRoaXMgaXMgYnJva2VuIG9uIFdpbmRvd3MNCisNCiAJCXBy b3RlY3RlZCBvdmVycmlkZSBSZXBvc2l0b3J5IEdldFJlcG8gKHN0cmluZyBwYXRoLCBzdHJpbmcg dXJsKQ0KIAkJew0KIAkJCXJldHVybiBuZXcgR2l0UmVwb3NpdG9yeSAocGF0aCwgdXJsKTsNDQoN Ck1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVy c2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VSZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N CkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wu VGVzdHMKIHsKIAlbVGVzdEZpeHR1cmVdCi0JcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VSZXBv VXRpbHNUZXN0CisJYWJzdHJhY3QgY2xhc3MgQmFzZVJlcG9VdGlsc1Rlc3QKIAl7CiAJCS8vIFtH aXRdIFNldCB1c2VyIGFuZCBlbWFpbC4KIAkJcHJvdGVjdGVkIGNvbnN0IHN0cmluZyBBdXRob3Ig PSAiYXV0aG9yIjsNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9N b25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wu R2l0L0dpdFJlcG9zaXRvcnkuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNTU3LDcgKzE1NTcsNyBAQCBw dWJsaWMgQ2hhbmdlU2V0IEdldFB1c2hDaGFuZ2VTZXQgKHN0cmluZyByZW1vdGUsIHN0cmluZyBi cmFuY2gpCiAJCQlDaGFuZ2VTZXQgY3NldCA9IENyZWF0ZUNoYW5nZVNldCAoUm9vdFBhdGgpOwog CQkJT2JqZWN0SWQgY2lkMSA9IFJvb3RSZXBvc2l0b3J5LlJlc29sdmUgKHJlbW90ZSArICIvIiAr IGJyYW5jaCk7CiAJCQlPYmplY3RJZCBjaWQyID0gUm9vdFJlcG9zaXRvcnkuUmVzb2x2ZSAoUm9v dFJlcG9zaXRvcnkuR2V0QnJhbmNoICgpKTsKLQkJCVJldldhbGsgcncgPSBuZXcgUmV2V2FsayAo Um9vdFJlcG9zaXRvcnkpOworCQkJUmV2V2FsawlydyA9IG5ldyBSZXZXYWxrIChSb290UmVwb3Np dG9yeSk7CiAJCQlSZXZDb21taXQgYzEgPSBydy5QYXJzZUNvbW1pdCAoY2lkMSk7CiAJCQlSZXZD b21taXQgYzIgPSBydy5QYXJzZUNvbW1pdCAoY2lkMik7CiAJCQkKQEAgLTE1ODksNyArMTU4OSw3 IEBAIHB1YmxpYyBEaWZmSW5mb1tdIEdldFB1c2hEaWZmIChzdHJpbmcgcmVtb3RlLCBzdHJpbmcg YnJhbmNoKQogCQkJUmV2Q29tbWl0IGMyID0gcncuUGFyc2VDb21taXQgKGNpZDIpOwogCQkJCiAJ CQlMaXN0PERpZmZJbmZvPiBkaWZmcyA9IG5ldyBMaXN0PERpZmZJbmZvPiAoKTsKLQkJCWZvcmVh Y2ggKHZhciBjaGFuZ2UgaW4gR2l0VXRpbC5Db21wYXJlQ29tbWl0cyAoUm9vdFJlcG9zaXRvcnks IGMxLCBjMikpIHsKKwkJCWZvcmVhY2ggKHZhciBjaGFuZ2UgaW4gR2l0VXRpbC5Db21wYXJlQ29t bWl0cyAoUm9vdFJlcG9zaXRvcnksIGMyLCBjMSkpIHsKIAkJCQlzdHJpbmcgZGlmZjsKIAkJCQlz d2l0Y2ggKGNoYW5nZS5HZXRDaGFuZ2VUeXBlICgpKSB7CiAJCQkJY2FzZSBEaWZmRW50cnkuQ2hh bmdlVHlwZS5ERUxFVEU6DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRy b2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9CYXNlU3ZuUmVw b3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNl IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMNCiB7DQogCVtUZXN0 Rml4dHVyZV0NCi0JcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VTdm5VdGlsc1Rlc3QgOiBCYXNl UmVwb1V0aWxzVGVzdA0KKwlhYnN0cmFjdCBjbGFzcyBCYXNlU3ZuVXRpbHNUZXN0IDogQmFzZVJl cG9VdGlsc1Rlc3QNCiAJew0KLQkJcHJvdGVjdGVkIFByb2Nlc3Mgc3ZuU2VydmUgPSBudWxsOw0K KwkJcHJvdGVjdGVkIFByb2Nlc3MgU3ZuU2VydmUgPSBudWxsOw0KIA0KIAkJW1NldFVwXQ0KIAkJ cHVibGljIG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkNCkBAIC01OSwxMyArNTksMTMgQEAgcHVibGlj IG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkKIAkJCS8vIENyZWF0ZSBob3N0IChXaW4zMikNCiAJCQkv LyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYWZ0ZXIgZG9pbmcgdGhlIHN2bkFkbWluIGNyZWF0aW9u Lg0KIAkJCS8vIEFuZCBiZWZvcmUgY2hlY2tvdXQuDQotCQkJaWYgKHN2blNlcnZlICE9IG51bGwp IHsNCisJCQlpZiAoU3ZuU2VydmUgIT0gbnVsbCkgew0KIAkJCQlpbmZvID0gbmV3IFByb2Nlc3NT dGFydEluZm8gKCk7DQogCQkJCWluZm8uRmlsZU5hbWUgPSAic3Zuc2VydmUiOw0KIAkJCQlpbmZv LkFyZ3VtZW50cyA9ICItZHIgIiArIFJvb3RVcmw7DQogCQkJCWluZm8uV2luZG93U3R5bGUgPSBQ cm9jZXNzV2luZG93U3R5bGUuSGlkZGVuOw0KLQkJCQlzdm5TZXJ2ZS5TdGFydEluZm8gPSBpbmZv Ow0KLQkJCQlzdm5TZXJ2ZS5TdGFydCAoKTsNCisJCQkJU3ZuU2VydmUuU3RhcnRJbmZvID0gaW5m bzsNCisJCQkJU3ZuU2VydmUuU3RhcnQgKCk7DQogDQogCQkJCS8vIENyZWF0ZSB1c2VyIHRvIGF1 dGguDQogCQkJCXVzaW5nICh2YXIgcGVybSA9IEZpbGUuIENyZWF0ZVRleHQgKFJvb3RVcmwgKyBQ YXRoLkRpcmVjdG9yeVNlcGFyYXRvckNoYXIgKyAicmVwbyIgKw0NCg0KTW9kaWZpZWQ6IG1haW4v c3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2 ZXJzaW9uLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTM2LDcgKzM2 LDcgQEAKIG5hbWVzcGFjZSBWZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlVuaXguVGVzdHMKIHsK IAlbVGVzdEZpeHR1cmVdCi0JcHVibGljIGNsYXNzIFVuaXhTdm5VdGlsc1Rlc3QgOiBNb25vRGV2 ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzLkJhc2VTdm5VdGlsc1Rlc3QKKwlz ZWFsZWQgY2xhc3MgVW5peFN2blV0aWxzVGVzdCA6IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9s LlN1YnZlcnNpb24uVGVzdHMuQmFzZVN2blV0aWxzVGVzdAogCXsKIAkJU3VidmVyc2lvbkJhY2tl bmQgU3ZuQ2xpZW50IHsKIAkJCWdldCB7IHJldHVybiBSZXBvLlN2bjsgfQ0KDQpNb2RpZmllZDog bWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMvUmVw b3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzYsMjEgKzM2LDIxIEBACiBuYW1lc3Bh Y2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cw0KIHsNCiAJW1Rl c3RGaXh0dXJlXQ0KLQlwdWJsaWMgY2xhc3MgU2hhcnBTdm5VdGlsc1Rlc3QgOiBCYXNlU3ZuVXRp bHNUZXN0DQorCXNlYWxlZCBjbGFzcyBTaGFycFN2blV0aWxzVGVzdCA6IEJhc2VTdm5VdGlsc1Rl c3QNCiAJew0KIAkJW1NldFVwXQ0KIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkNCiAJ CXsNCiAJCQlSb290VXJsID0gbmV3IEZpbGVQYXRoIChGaWxlU2VydmljZS5DcmVhdGVUZW1wRGly ZWN0b3J5ICgpKTsNCiAJCQlSZXBvTG9jYXRpb24gPSAic3ZuOi8vbG9jYWxob3N0OjM2OTAvcmVw byI7DQotCQkJc3ZuU2VydmUgPSBuZXcgUHJvY2VzcyAoKTsNCisJCQlTdm5TZXJ2ZSA9IG5ldyBQ cm9jZXNzICgpOw0KIAkJCWJhc2UuU2V0dXAgKCk7DQogCQl9DQogDQogCQlbVGVhckRvd25dDQog CQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBUZWFyRG93biAoKQ0KIAkJew0KLQkJCXN2blNlcnZlLktp bGwgKCk7DQorCQkJU3ZuU2VydmUuS2lsbCAoKTsNCiANCiAJCQliYXNlLlRlYXJEb3duICgpOw0K IAkJfQ0NCg0KICAgQ29tbWl0OiA4MDllNTE3YmQ0ODE4Zjc3NjMwNThmYmY1MTU3MmQ5YjNlMTZj MGRjDQogICBBdXRob3I6IFRoZXJ6b2sgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0K ICAgICBEYXRlOiAyMDEzLTExLTE4IDAxOjE3OjAwIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dp dGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvODA5ZTUxN2JkNDgxOGY3NzYzMDU4ZmJm NTE1NzJkOWIzZTE2YzBkYw0KDQpbQ29kZSBJc3N1ZXMgUGFkXSBGaXhlZCBOUkUgb24gdXNpbmcg Y29tYm9ib3ggYmVmb3JlIHJ1bm5pbmcgYW5hbHlzaXMNCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1h aW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5SZWZhY3RvcmluZy9Nb25vRGV2ZWxvcC5Db2RlSXNz dWVzL0NvZGVJc3N1ZVBhZC5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVs b3AuUmVmYWN0b3JpbmcvTW9ub0RldmVsb3AuQ29kZUlzc3Vlcy9Db2RlSXNzdWVQYWQuY3MNCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCkBAIC0yOTksNiArMjk5LDkgQEAgdm9pZCBTZXROb2RlIChUcmVlTmF2aWdhdG9y IG5hdmlnYXRvciwgSUlzc3VlVHJlZU5vZGUgbm9kZSkKIAogCQl2b2lkIENsZWFyU2libGluZ05v ZGVzIChUcmVlTmF2aWdhdG9yIG5hdmlnYXRvcikKIAkJeworCQkJaWYgKG5hdmlnYXRvciA9PSBu dWxsKQorCQkJCXJldHVybjsKKwogCQkJZG8gewogCQkJCXZhciBub2RlID0gbmF2aWdhdG9yLkdl dFZhbHVlIChub2RlRmllbGQpOwogCQkJCWlmIChub2RlICE9IG51bGwpIHsNCg0KICAgQ29tbWl0 OiA3NTgxNjQ1MWMzNzdkYjI0MDNhMDVmY2NiN2NjOTg4ZTM2ZjgwMzEzDQogICBBdXRob3I6IFRo ZXJ6b2sgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTEx LTE4IDAxOjI5OjExIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25v ZGV2ZWxvcC9jb21taXQvNzU4MTY0NTFjMzc3ZGIyNDAzYTA1ZmNjYjdjYzk4OGUzNmY4MDMxMw0K DQpGaXh1cCB0byBwcmV2aW91cyByZXZpc2lvbi4KCkRhbW4geW91IHNhdmUhDQoNCkNoYW5nZWQg cGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvTW9ub0Rl dmVsb3AuQ29kZUlzc3Vlcy9Db2RlSXNzdWVQYWQuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRk aW5zL01vbm9EZXZlbG9wLlJlZmFjdG9yaW5nL01vbm9EZXZlbG9wLkNvZGVJc3N1ZXMvQ29kZUlz c3VlUGFkLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgU2V0Tm9kZSAo VHJlZU5hdmlnYXRvciBuYXZpZ2F0b3IsIElJc3N1ZVRyZWVOb2RlIG5vZGUpCiAKIAkJdm9pZCBD bGVhclNpYmxpbmdOb2RlcyAoVHJlZU5hdmlnYXRvciBuYXZpZ2F0b3IpCiAJCXsKLQkJCWlmIChu YXZpZ2F0b3IgPT0gbnVsbCkKKwkJCWlmIChuYXZpZ2F0b3IuQ3VycmVudFBvc2l0aW9uID09IG51 bGwpCiAJCQkJcmV0dXJuOwogCiAJCQlkbyB7DQoNCiAgIENvbW1pdDogYjMzNTE4MWNhMTU5ZGJi NzgwOThjYzYzNGQ2ZjhmNGE1NDZiMjNlNA0KICAgQXV0aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVl Z2VyQHhhbWFyaW4uY29tPiAobWtydWVnZXIpDQogICAgIERhdGU6IDIwMTMtMTEtMTggMDc6NTg6 MDQgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2Nv bW1pdC9iMzM1MTgxY2ExNTlkYmI3ODA5OGNjNjM0ZDZmOGY0YTU0NmIyM2U0DQoNCkltcGxlbWVu dGVkICdCdWcgMTYyMjggLSBOYW1lc3BhY2VzIGluIHRvb2x0aXBzJy4NCg0KQ2hhbmdlZCBwYXRo czoKICBNIG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5D b21wbGV0aW9uL01lbWJlckNvbXBsZXRpb25EYXRhLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvQ1No YXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hhcnAuVG9vbHRpcHMvTGFuZ3VhZ2VJdGVtVG9vbHRp cFByb3ZpZGVyLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxv cC5DU2hhcnAvU2lnbmF0dXJlTWFya3VwQ3JlYXRvci5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9h ZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hhcnAuQ29tcGxldGlvbi9NZW1iZXJD b21wbGV0aW9uRGF0YS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTY4MiwzMCArNjgyLDcgQEAgcHVibGlj IHN0YXRpYyBUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9uIChJQ29t cGlsYXRpb24gY29tcGlsYXQKIAkJCQl9CiAJCQl9CiAJCQlpZiAoY3JlYXRlRm9vdGVyKSB7Ci0J CQkJaWYgKGVudGl0eSBpcyBJVHlwZSkgewotCQkJCQl2YXIgdHlwZSA9IGVudGl0eSBhcyBJVHlw ZTsKLQkJCQkJdmFyIGRlZiA9IHR5cGUuR2V0RGVmaW5pdGlvbiAoKTsKLQkJCQkJaWYgKGRlZiAh PSBudWxsKSB7Ci0JCQkJCQlpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5IChkZWYuUGFyZW50QXNz ZW1ibHkuQXNzZW1ibHlOYW1lKSkgewotCQkJCQkJCXZhciBwcm9qZWN0ID0gZGVmLkdldFNvdXJj ZVByb2plY3QgKCk7Ci0JCQkJCQkJaWYgKHByb2plY3QgIT0gbnVsbCkgewotCQkJCQkJCQl2YXIg cmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRlVG9SZWxhdGl2ZVBhdGggKHByb2plY3QuQmFz ZURpcmVjdG9yeSwgZGVmLlJlZ2lvbi5GaWxlTmFtZSk7Ci0JCQkJCQkJCXRvb2x0aXBJbmZvLkZv b3Rlck1hcmt1cCA9ICI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIlByb2pl Y3Q6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5 LkFzc2VtYmx5TmFtZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKwotCQkJ CQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRmlsZTpcdFx0ezB9 IChsaW5lIHsxfSkiLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAocmVsUGF0aCksIGRlZi5S ZWdpb24uQmVnaW4uTGluZSkgKyAiPC9zbWFsbD4iOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJ fQotCi0JCQkJfSBlbHNlIGlmIChlbnRpdHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24gIT0gbnVs bCkgewotCQkJCQl2YXIgcHJvamVjdCA9IGVudGl0eS5EZWNsYXJpbmdUeXBlRGVmaW5pdGlvbi5H ZXRTb3VyY2VQcm9qZWN0ICgpOwotCQkJCQlpZiAocHJvamVjdCAhPSBudWxsKSB7Ci0JCQkJCQl2 YXIgcmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRlVG9SZWxhdGl2ZVBhdGggKHByb2plY3Qu QmFzZURpcmVjdG9yeSwgZW50aXR5LlJlZ2lvbi5GaWxlTmFtZSk7Ci0JCQkJCQl0b29sdGlwSW5m by5Gb290ZXJNYXJrdXAgPSAKLQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRT dHJpbmcgKCJQcm9qZWN0Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKHByb2pl Y3QuTmFtZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKwotCQkJCQkJCSI8 c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZyb206XHR7MH0iLCBBbWJpZW5j ZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGUuRnVsbE5hbWUpKSArICI8 L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKLQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0 ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0gKGxpbmUgezF9KSIsIEFtYmllbmNl U2VydmljZS5Fc2NhcGVUZXh0IChyZWxQYXRoKSwgZW50aXR5LlJlZ2lvbi5CZWdpbi5MaW5lKSAr ICI8L3NtYWxsPiI7Ci0JCQkJCX0KLQkJCQl9CisJCQkJdG9vbHRpcEluZm8uRm9vdGVyTWFya3Vw ID0gc2lnLkNyZWF0ZUZvb3RlciAoZW50aXR5KTsKIAkJCX0KIAkJCXJldHVybiB0b29sdGlwSW5m bzsKIAkJfQpAQCAtNzMyLDggKzcwOSw4IEBAIHB1YmxpYyBzdGF0aWMgVG9vbHRpcEluZm9ybWF0 aW9uIENyZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoSUNvbXBpbGF0aW9uIGNvbXBpbGF0CiAKIAkJ CXZhciBkZWYgPSB0eXBlLkdldERlZmluaXRpb24gKCk7CiAJCQlpZiAoZGVmICE9IG51bGwpIHsK LQkJCQlpZiAoY3JlYXRlRm9vdGVyICYmICFzdHJpbmcuSXNOdWxsT3JFbXB0eSAoZGVmLlBhcmVu dEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpCi0JCQkJCXRvb2x0aXBJbmZvLkZvb3Rlck1hcmt1cCA9 ICI8c21hbGw+IEZyb20gIiArIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChkZWYuUGFyZW50 QXNzZW1ibHkuQXNzZW1ibHlOYW1lKSArICI8L3NtYWxsPiI7CisJCQkJaWYgKGNyZWF0ZUZvb3Rl cikKKwkJCQkJdG9vbHRpcEluZm8uRm9vdGVyTWFya3VwID0gc2lnLkNyZWF0ZUZvb3RlciAoZGVm KTsKIAkJCQl0b29sdGlwSW5mby5TdW1tYXJ5TWFya3VwID0gQW1iaWVuY2VTZXJ2aWNlLkdldFN1 bW1hcnlNYXJrdXAgKGRlZikgPz8gIiI7CiAJCQl9CiAJCQlyZXR1cm4gdG9vbHRpcEluZm87DQoN Ck1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hh cnAuVG9vbHRpcHMvTGFuZ3VhZ2VJdGVtVG9vbHRpcFByb3ZpZGVyLmNzDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA QCAtMTQxLDcgKzE0MSw3IEBAIHByb3RlY3RlZCBvdmVycmlkZSBHdGsuV2luZG93IENyZWF0ZVRv b2x0aXBXaW5kb3cgKE1vbm8uVGV4dEVkaXRvci5UZXh0RWRpdG9yIGVkCiAKIAkJCXZhciB0aXRl bSA9IChUb29sVGlwRGF0YSlpdGVtLkl0ZW07CiAKLQkJCXZhciB0b29sdGlwSW5mb3JtYXRpb24g PSBDcmVhdGVUb29sdGlwICh0aXRlbSwgb2Zmc2V0LCBudWxsKTsKKwkJCXZhciB0b29sdGlwSW5m b3JtYXRpb24gPSBDcmVhdGVUb29sdGlwICh0aXRlbSwgb2Zmc2V0LCBudWxsLCBtb2RpZmllclN0 YXRlKTsKIAkJCWlmICh0b29sdGlwSW5mb3JtYXRpb24gPT0gbnVsbCB8fCBzdHJpbmcuSXNOdWxs T3JFbXB0eSAodG9vbHRpcEluZm9ybWF0aW9uLlNpZ25hdHVyZU1hcmt1cCkpCiAJCQkJcmV0dXJu IG51bGw7CiAKQEAgLTE3OSwxMiArMTc5LDEzIEBAIHB1YmxpYyBvdmVycmlkZSBHdGsuV2luZG93 IFNob3dUb29sdGlwV2luZG93IChUZXh0RWRpdG9yIGVkaXRvciwgaW50IG9mZnNldCwgR2RrCiAJ CQlyZXR1cm4gdGlwV2luZG93OwogCQl9CiAKLQkJVG9vbHRpcEluZm9ybWF0aW9uIENyZWF0ZVRv b2x0aXAgKFRvb2xUaXBEYXRhIGRhdGEsIGludCBvZmZzZXQsIEFtYmllbmNlIGFtYmllbmNlKQor CQlUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAoVG9vbFRpcERhdGEgZGF0YSwgaW50 IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuY2UsIEdkay5Nb2RpZmllclR5cGUgbW9kaWZpZXJTdGF0 ZSkKIAkJewogCQkJUmVzb2x2ZVJlc3VsdCByZXN1bHQgPSBkYXRhLlJlc3VsdDsKIAkJCXZhciBk b2MgPSBJZGVBcHAuV29ya2JlbmNoLkFjdGl2ZURvY3VtZW50OwogCQkJaWYgKGRvYyA9PSBudWxs KQogCQkJCXJldHVybiBudWxsOworCQkJYm9vbCBjcmVhdGVGb290ZXIgPSAobW9kaWZpZXJTdGF0 ZSAmIEdkay5Nb2RpZmllclR5cGUuTW9kMU1hc2spICE9IDA7CiAJCQl0cnkgewogCiAJCQkJaWYg KHJlc3VsdCBpcyBBbGlhc05hbWVzcGFjZVJlc29sdmVSZXN1bHQpIHsKQEAgLTI3NiwxMiArMjc3 LDEzIEBAIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwIChUb29sVGlwRGF0YSBkYXRh LCBpbnQgb2Zmc2V0LCBBbWJpZW5jZSBhbWJpZW5jCiAJCQkJCXZhciBtZXRob2QgPSBhbGxNZXRo b2RzLkZpcnN0T3JEZWZhdWx0ICgpOwogCQkJCQlpZiAobWV0aG9kICE9IG51bGwpIHsKIAkJCQkJ CXJldHVybiBNZW1iZXJDb21wbGV0aW9uRGF0YS5DcmVhdGVUb29sdGlwSW5mb3JtYXRpb24gKAot CQkJCQkJZG9jLkNvbXBpbGF0aW9uLAotCQkJCQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNlZEZp bGUgYXMgQ1NoYXJwVW5yZXNvbHZlZEZpbGUsCi0JCQkJCQlkb2MuRWRpdG9yLAotCQkJCQkJZG9j LkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCi0JCQkJCQltZXRob2QsIAotCQkJCQkJZmFsc2UpOwor CQkJCQkJCWRvYy5Db21waWxhdGlvbiwKKwkJCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2Vk RmlsZSBhcyBDU2hhcnBVbnJlc29sdmVkRmlsZSwKKwkJCQkJCQlkb2MuRWRpdG9yLAorCQkJCQkJ CWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5ICgpLAorCQkJCQkJCW1ldGhvZCwKKwkJCQkJCQlmYWxz ZSwKKwkJCQkJCQljcmVhdGVGb290ZXIpOwogCQkJCQl9CiAJCQkJfSBlbHNlIGlmIChyZXN1bHQg aXMgQ1NoYXJwSW52b2NhdGlvblJlc29sdmVSZXN1bHQpIHsKIAkJCQkJdmFyIGludm9jYXRpb25S ZXN1bHQgPSAoQ1NoYXJwSW52b2NhdGlvblJlc29sdmVSZXN1bHQpcmVzdWx0OwpAQCAtMjkyLDE2 ICsyOTQsMTggQEAgVG9vbHRpcEluZm9ybWF0aW9uIENyZWF0ZVRvb2x0aXAgKFRvb2xUaXBEYXRh IGRhdGEsIGludCBvZmZzZXQsIEFtYmllbmNlIGFtYmllbmMKIAkJCQkJCWRvYy5FZGl0b3IsCiAJ CQkJCQlkb2MuR2V0Rm9ybWF0dGluZ1BvbGljeSAoKSwKIAkJCQkJCW1lbWJlciwgCi0JCQkJCQlm YWxzZSk7CisJCQkJCQlmYWxzZSwKKwkJCQkJCWNyZWF0ZUZvb3Rlcik7CiAJCQkJfSBlbHNlIGlm IChyZXN1bHQgaXMgTWVtYmVyUmVzb2x2ZVJlc3VsdCkgewogCQkJCQl2YXIgbWVtYmVyID0gKChN ZW1iZXJSZXNvbHZlUmVzdWx0KXJlc3VsdCkuTWVtYmVyOwogCQkJCQlyZXR1cm4gTWVtYmVyQ29t cGxldGlvbkRhdGEuQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9uICgKLQkJCQkJZG9jLkNvbXBpbGF0 aW9uLAotCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hhcnBVbnJlc29s dmVkRmlsZSwKLQkJCQkJZG9jLkVkaXRvciwKLQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kg KCksCi0JCQkJCW1lbWJlciwgCi0JCQkJCWZhbHNlKTsKKwkJCQkJCWRvYy5Db21waWxhdGlvbiwK KwkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVzb2x2ZWRG aWxlLAorCQkJCQkJZG9jLkVkaXRvciwKKwkJCQkJCWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5ICgp LAorCQkJCQkJbWVtYmVyLCAKKwkJCQkJCWZhbHNlLAorCQkJCQkJY3JlYXRlRm9vdGVyKTsKIAkJ CQl9IGVsc2UgaWYgKHJlc3VsdCBpcyBOYW1lc3BhY2VSZXNvbHZlUmVzdWx0KSB7CiAJCQkJCXZh ciB0b29sdGlwSW5mbyA9IG5ldyBUb29sdGlwSW5mb3JtYXRpb24gKCk7CiAJCQkJCXZhciByZXNv bHZlciA9IChkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hhcnBVbnJlc29sdmVk RmlsZSkuR2V0UmVzb2x2ZXIgKGRvYy5Db21waWxhdGlvbiwgZG9jLkVkaXRvci5DYXJldC5Mb2Nh dGlvbik7CkBAIC0zMjksMTIgKzMzMywxMyBAQCBUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9v bHRpcCAoVG9vbFRpcERhdGEgZGF0YSwgaW50IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuYwogCQkJ CQlyZXR1cm4gdG9vbHRpcEluZm87CiAJCQkJfSBlbHNlIHsKIAkJCQkJcmV0dXJuIE1lbWJlckNv bXBsZXRpb25EYXRhLkNyZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoCi0JCQkJCWRvYy5Db21waWxh dGlvbiwKLQkJCQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJwVW5yZXNv bHZlZEZpbGUsCi0JCQkJCWRvYy5FZGl0b3IsCi0JCQkJCWRvYy5HZXRGb3JtYXR0aW5nUG9saWN5 ICgpLAotCQkJCQlyZXN1bHQuVHlwZSwgCi0JCQkJCWZhbHNlKTsKKwkJCQkJCWRvYy5Db21waWxh dGlvbiwKKwkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVz b2x2ZWRGaWxlLAorCQkJCQkJZG9jLkVkaXRvciwKKwkJCQkJCWRvYy5HZXRGb3JtYXR0aW5nUG9s aWN5ICgpLAorCQkJCQkJcmVzdWx0LlR5cGUsIAorCQkJCQkJZmFsc2UsCisJCQkJCQljcmVhdGVG b290ZXIpOwogCQkJCX0KIAkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAJCQkJTG9nZ2luZ1Nl cnZpY2UuTG9nRXJyb3IgKCJFcnJvciB3aGlsZSBjcmVhdGluZyB0b29sdGlwLiIsIGUpOw0KDQpN b2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1NoYXJw L1NpZ25hdHVyZU1hcmt1cENyZWF0b3IuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNjExLDUgKzE2MTEs NDYgQEAgc3RyaW5nIEhpZ2hsaWdodFNlbWFudGljYWxseSAoc3RyaW5nIHN0ciwgQ2h1bmtTdHls ZSBzdHlsZSkKIAkJCQlyZXR1cm4gc3RyOwogCQkJcmV0dXJuIEhpZ2hsaWdodCAoc3RyLCBzdHls ZSk7CiAJCX0KKworCQlwdWJsaWMgc3RyaW5nIENyZWF0ZUZvb3RlciAoSUVudGl0eSBlbnRpdHkp CisJCXsKKwkJCXZhciB0eXBlID0gZW50aXR5IGFzIElUeXBlOworCQkJaWYgKHR5cGUgIT0gbnVs bCkgeworCQkJCXZhciBkZWYgPSB0eXBlLkdldERlZmluaXRpb24gKCk7CisJCQkJaWYgKGRlZiAh PSBudWxsKSB7CisJCQkJCWlmICghZGVmLlJlZ2lvbi5Jc0VtcHR5KSB7CisJCQkJCQl2YXIgcHJv amVjdCA9IGRlZi5HZXRTb3VyY2VQcm9qZWN0ICgpOworCQkJCQkJaWYgKHByb2plY3QgIT0gbnVs bCkgeworCQkJCQkJCXZhciByZWxQYXRoID0gRmlsZVNlcnZpY2UuQWJzb2x1dGVUb1JlbGF0aXZl UGF0aCAocHJvamVjdC5CYXNlRGlyZWN0b3J5LCBkZWYuUmVnaW9uLkZpbGVOYW1lKTsKKwkJCQkJ CQlyZXR1cm4KKwkJCQkJCQkJKHN0cmluZy5Jc051bGxPckVtcHR5IChkZWYuTmFtZXNwYWNlKSA/ ICIiIDogIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiTmFtZXNwYWNlOlx0 ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGRlZi5OYW1lc3BhY2UpKSArICI8L3Nt YWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lKSArCisJCQkJCQkJCSI8c21hbGw+IiArIEdldHRl eHRDYXRhbG9nLkdldFN0cmluZyAoIlByb2plY3Q6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNj YXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpICsgIjwvc21hbGw+IiAr IEVudmlyb25tZW50Lk5ld0xpbmUgKworCQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxv Zy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0gKGxpbmUgezF9KSIsIEFtYmllbmNlU2VydmljZS5F c2NhcGVUZXh0IChyZWxQYXRoKSwgZGVmLlJlZ2lvbi5CZWdpbi5MaW5lKSArICI8L3NtYWxsPiI7 CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJcmV0dXJuCisJCQkJCQkoc3RyaW5nLklzTnVsbE9yRW1w dHkgKGRlZi5OYW1lc3BhY2UpID8gIiIgOiAiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRT dHJpbmcgKCJOYW1lc3BhY2U6XHR7MH0iLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVm Lk5hbWVzcGFjZSkpICsgIjwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUpICsKKwkJCQkJ CSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkFzc2VtYmx5Olx0ezB9Iiwg QW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGRlZi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5h bWUpKSArICI8L3NtYWxsPiI7CisJCQkJfQorCQkJCXJldHVybiBudWxsOworCQkJfSAKKworCQkJ aWYgKGVudGl0eS5EZWNsYXJpbmdUeXBlRGVmaW5pdGlvbiAhPSBudWxsKSB7CisJCQkJaWYgKCFl bnRpdHkuUmVnaW9uLklzRW1wdHkpIHsKKwkJCQkJdmFyIHByb2plY3QgPSBlbnRpdHkuRGVjbGFy aW5nVHlwZURlZmluaXRpb24uR2V0U291cmNlUHJvamVjdCAoKTsKKwkJCQkJaWYgKHByb2plY3Qg IT0gbnVsbCkgeworCQkJCQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNvbHV0ZVRvUmVs YXRpdmVQYXRoIChwcm9qZWN0LkJhc2VEaXJlY3RvcnksIGVudGl0eS5SZWdpb24uRmlsZU5hbWUp OworCQkJCQkJcmV0dXJuCisJCQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3Ry aW5nICgiUHJvamVjdDpcdHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChwcm9qZWN0 Lk5hbWUpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKKwkJCQkJCQkiPHNt YWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGcm9tIHR5cGU6XHR7MH0iLCBBbWJp ZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZpbml0aW9uLkZ1 bGxOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSArCisJCQkJCQkJIjxz bWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRmlsZTpcdFx0ezB9IChsaW5lIHsx fSkiLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAocmVsUGF0aCksIGVudGl0eS5SZWdpb24u QmVnaW4uTGluZSkgKyAiPC9zbWFsbD4iOworCQkJCQl9CisJCQkJfQorCQkJCXJldHVybgorCQkJ CQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGcm9tIHR5cGU6XHR7MH0i LCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZpbml0 aW9uLkZ1bGxOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSArCisJCQkJ CSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkFzc2VtYmx5Olx0ezB9Iiwg QW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGVudGl0eS5EZWNsYXJpbmdUeXBlRGVmaW5pdGlv bi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKSArICI8L3NtYWxsPiI7CisJCQl9CisJCQly ZXR1cm4gbnVsbDsKKwkJfQogCX0KIH0NCg0KICAgQ29tbWl0OiAzZmQ5NWZhNTcxM2UzYWM5ODlm MmNmOWI1ZTAwMTk4YWI0MDYzY2FmDQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJA eGFtYXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTogMjAxMy0xMS0xOCAwOTo0NTo1MyBH TVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0 LzNmZDk1ZmE1NzEzZTNhYzk4OWYyY2Y5YjVlMDAxOThhYjQwNjNjYWYNCg0KQnVtcCBucmVmYWN0 b3J5Lg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5Cg0KTW9k aWZpZWQ6IG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQ0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEgKzEgQEAK LVN1YnByb2plY3QgY29tbWl0IDQ2N2RkNzQ4MDE5ZWFmMDQwNDg1ZDdiZmIxNjNlYTAzODNkMjhh MzgKK1N1YnByb2plY3QgY29tbWl0IGVhNzViYWMzZjM3NDA2MWJhM2MyOGFlMDBmN2I5NjUxODlm OTNmMzENCg0KICAgQ29tbWl0OiAzYjk2NTk2ZjRiYmI4Njk5M2UwNDBiYWZhMzBlYTgxYTcyZTI3 Zjk2DQogICBBdXRob3I6IFVuZ3VyZWFudSBNYXJpdXMgPHRlcm9tYXJpb0B5YWhvby5jb20+IChU aGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTExLTE4IDEyOjM2OjI2IEdNVA0KICAgICAgVVJMOiBo dHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvM2I5NjU5NmY0YmJiODY5 OTNlMDQwYmFmYTMwZWE4MWE3MmUyN2Y5Ng0KDQpNZXJnZSBwdWxsIHJlcXVlc3QgIzQzNiBmcm9t IG1vbm8vdmNzVGVzdHMKCltWZXJzaW9uQ29udHJvbF0gSW1wbGVtZW50ZWQgYmFja2VuZCBzcGVj aWZpYyB0ZXN0cw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNlR2l0UmVwb3Np dG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVs b3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VSZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1h aW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5H aXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L0dpdFJlcG9zaXRvcnkuY3MKICBNIG1h aW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5T dWJ2ZXJzaW9uLlRlc3RzL0Jhc2VTdm5SZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2Fk ZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9u LlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250 cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzCg0KTW9kaWZpZWQ6 IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv bC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTMy LDE0ICszMiwxNCBAQAogdXNpbmcgTkdpdC5BcGk7DQogdXNpbmcgTlVuaXQuRnJhbWV3b3JrOw0K IHVzaW5nIFN5c3RlbS5JTzsNCi11c2luZyBTeXN0ZW07DQogdXNpbmcgTkdpdC5TdG9yYWdlLkZp bGU7DQogdXNpbmcgTkdpdC5SZXZ3YWxrOw0KK3VzaW5nIFN5c3RlbS5MaW5xOw0KIA0KIG5hbWVz cGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMNCiB7DQogCVtUZXN0Rml4 dHVyZV0NCi0JcHVibGljIGNsYXNzIEJhc2VHaXRVdGlsc1Rlc3QgOiBCYXNlUmVwb1V0aWxzVGVz dA0KKwlzZWFsZWQgY2xhc3MgQmFzZUdpdFV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNUZXN0DQog CXsNCiAJCVtTZXRVcF0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpAQCAtMTYx LDYgKzE2MSwxODQgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgQmxhbWVFeHRyYUludGVybmFs cyAoQW5ub3RhdGlvbiBbXSBhbm5vdGF0aW9ucykKIAkJCUFzc2VydC5Jc1RydWUgKGFubm90YXRp b25zIFsyXS5IYXNEYXRlKTsNCiAJCX0NCiANCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVz dEdpdFN0YXNoICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsN CisJCQlBZGRGaWxlICgiZmlsZTIiLCAibm90aGluZyIsIHRydWUsIHRydWUpOw0KKwkJCUFkZEZp bGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgZmFsc2UpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMg KCkuQ3JlYXRlIChudWxsKTsNCisJCQlBc3NlcnQuSXNUcnVlICghRmlsZS5FeGlzdHMgKFJvb3RD aGVja291dCArICJmaWxlMSIpLCAiU3Rhc2ggY3JlYXRpb24gZmFpbHVyZSIpOw0KKwkJCXJlcG8y LkdldFN0YXNoZXMgKCkuUG9wIChudWxsKTsNCisNCisJCQlWZXJzaW9uSW5mbyB2aSA9IHJlcG8y LkdldFZlcnNpb25JbmZvIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiLCBWZXJzaW9uSW5mb1F1ZXJ5 RmxhZ3MuSWdub3JlQ2FjaGUpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1cy5T Y2hlZHVsZWRBZGQsIHZpLlN0YXR1cyAmIFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCAiU3Rh c2ggcG9wIGZhaWx1cmUiKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVz dEdpdEJyYW5jaENyZWF0aW9uICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRv cnkpUmVwbzsNCisNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0K KwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisNCisJCQlyZXBvMi5T d2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51 bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgi YnJhbmNoMSIsIHJlcG8yLkdldEN1cnJlbnRCcmFuY2ggKCkpOw0KKwkJCUFzc2VydC5Jc1RydWUg KEZpbGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKSwgIkJyYW5jaCBub3QgaW5oZXJp dGluZyBmcm9tIGN1cnJlbnQuIik7DQorDQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQiLCB0 cnVlLCBmYWxzZSk7DQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgiYnJhbmNoMiIsIG51bGwpOw0K KwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01v bml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgImJyYW5jaDIiKTsNCisJCQlBc3NlcnQu SXNUcnVlICghRmlsZS5FeGlzdHMgKFJvb3RDaGVja291dCArICJmaWxlMiIpLCAiVW5jb21taXR0 ZWQgY2hhbmdlcyB3ZXJlIG5vdCBzdGFzaGVkIik7DQorCQkJcmVwbzIuR2V0U3Rhc2hlcyAoKS5Q b3AgKG5ldyBOdWxsUHJvZ3Jlc3NNb25pdG9yICgpKTsNCisNCisJCQlBc3NlcnQuSXNUcnVlIChG aWxlLkV4aXN0cyAoUm9vdENoZWNrb3V0ICsgImZpbGUyIiksICJVbmNvbW1pdHRlZCBjaGFuZ2Vz IHdlcmUgbm90IHN0YXNoZWQgY29ycmVjdGx5Iik7DQorDQorCQkJcmVwbzIuU3dpdGNoVG9CcmFu Y2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NN b25pdG9yICgpLCAibWFzdGVyIik7DQorCQkJcmVwbzIuUmVtb3ZlQnJhbmNoICgiYnJhbmNoMSIp Ow0KKwkJCUFzc2VydC5Jc0ZhbHNlIChyZXBvMi5HZXRCcmFuY2hlcyAoKS5BbnkgKGIgPT4gYi5O YW1lID09ICJicmFuY2gxIiksICJGYWlsZWQgdG8gZGVsZXRlIGJyYW5jaCIpOw0KKw0KKwkJCXJl cG8yLlJlbmFtZUJyYW5jaCAoImJyYW5jaDIiLCAiYnJhbmNoMyIpOw0KKwkJCUFzc2VydC5Jc1Ry dWUgKHJlcG8yLkdldEJyYW5jaGVzICgpLkFueSAoYiA9PiBiLk5hbWUgPT0gImJyYW5jaDMiKSAm JiByZXBvMi5HZXRCcmFuY2hlcyAoKS5BbGwgKGIgPT4gYi5OYW1lICE9ICJicmFuY2gyIiksICJG YWlsZWQgdG8gcmVuYW1lIGJyYW5jaCIpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMg dm9pZCBUZXN0R2l0U3luY0JyYW5jaGVzICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJl cG9zaXRvcnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUp Ow0KKwkJCVBvc3RDb21taXQgKHJlcG8yKTsNCisNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJi cmFuY2gzIiwgbnVsbCk7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxv cC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNo MyIpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJhc2RmIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJcmVw bzIuUHVzaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9n cmVzc01vbml0b3IgKCksICJvcmlnaW4iLCAiYnJhbmNoMyIpOw0KKw0KKwkJCXJlcG8yLlN3aXRj aFRvQnJhbmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFBy b2dyZXNzTW9uaXRvciAoKSwgIm1hc3RlciIpOw0KKw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAo ImJyYW5jaDQiLCAib3JpZ2luL2JyYW5jaDMiKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAo bmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0 b3IgKCksICJicmFuY2g0Iik7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoRmlsZS5FeGlzdHMgKFJvb3RD aGVja291dCArICJmaWxlMiIpLCAiVHJhY2tpbmcgcmVtb3RlIGlzIG5vdCBncmFiYmluZyBjb3Jy ZWN0IGNvbW1pdHMiKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdFB1 c2hDaGFuZ2VzZXQgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBv Ow0KKwkJCUFkZEZpbGUgKCJmaWxlIiwgIm1laCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RDb21t aXQgKHJlcG8yKTsNCisNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUp Ow0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0MiIsIHRydWUsIHRydWUpOw0KKw0KKwkJCUNo YW5nZVNldCBkaWZmID0gcmVwbzIuR2V0UHVzaENoYW5nZVNldCAoIm9yaWdpbiIsICJtYXN0ZXIi KTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKDIsIGRpZmYuSXRlbXMuQ291bnQgKCkpOw0KKw0KKwkJ CUNoYW5nZVNldEl0ZW0gaXRlbSA9IGRpZmYuR2V0RmlsZUl0ZW0gKFJvb3RDaGVja291dCArICJm aWxlMSIpOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2VydC5BcmVFcXVh bCAoVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsIGl0ZW0uU3RhdHVzICYgVmVyc2lvblN0YXR1 cy5TY2hlZHVsZWRBZGQpOw0KKw0KKwkJCWl0ZW0gPSBkaWZmLkdldEZpbGVJdGVtIChSb290Q2hl Y2tvdXQgKyAiZmlsZTEiKTsNCisJCQlBc3NlcnQuSXNOb3ROdWxsIChpdGVtKTsNCisJCQlBc3Nl cnQuQXJlRXF1YWwgKFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCBpdGVtLlN0YXR1cyAmIFZl cnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJW0lnbm9y ZSAoIkdldFB1c2hEaWZmIGNvbnRlbnQgaXMgYWx3YXlzIGVtcHR5IildDQorCQlwdWJsaWMgdm9p ZCBUZXN0UHVzaERpZmYgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlS ZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlIiwgIm1laCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RD b21taXQgKHJlcG8yKTsNCisNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRy dWUpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0MiIsIHRydWUsIHRydWUpOw0KKw0KKwkJ CURpZmZJbmZvW10gZGlmZiA9IHJlcG8yLkdldFB1c2hEaWZmICgib3JpZ2luIiwgIm1hc3RlciIp Ow0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMiwgZGlmZi5MZW5ndGgpOw0KKw0KKwkJCURpZmZJbmZv IGl0ZW0gPSBkaWZmIFswXTsNCisJCQlBc3NlcnQuSXNOb3ROdWxsIChpdGVtKTsNCisJCQlBc3Nl cnQuQXJlRXF1YWwgKCJmaWxlMSIsIGl0ZW0uRmlsZU5hbWUuRmlsZU5hbWUpOw0KKwkJCS8vQXNz ZXJ0LkFyZUVxdWFsICgidGV4dCIsIGl0ZW0uQ29udGVudCk7DQorDQorCQkJaXRlbSA9IGRpZmYg WzFdOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAo ImZpbGUyIiwgaXRlbS5GaWxlTmFtZS5GaWxlTmFtZSk7DQorCQkJLy9Bc3NlcnQuQXJlRXF1YWwg KCJ0ZXh0MiIsIGl0ZW0uQ29udGVudCk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2 b2lkIFRlc3RHaXRVcmwgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlS ZXBvOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJnaXRAZ2l0aHViLmNv bTptb25vL21vbm9kZXZlbG9wIikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFs aWQgKCJnaXQ6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFz c2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJzc2g6Ly91c2VyQGhvc3QuY29tOjgwL21v bm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFs aWQgKCJodHRwOi8vZ2l0aHViLmNvbTo4MC9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlB c3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiaHR0cHM6Ly9naXRodWIuY29tOjgwL21v bm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFs aWQgKCJmdHA6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFz c2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJmdHBzOi8vZ2l0aHViLmNvbTo4MC9tb25v L21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlk ICgiZmlsZTovLy9tb25vL21vbm9kZXZlbG9wLmdpdCIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChy ZXBvMi5Jc1VybFZhbGlkICgicnN5bmM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVscG8uZ2l0 IikpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0UmVtb3RlICgpDQor CQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisNCisJCQlBc3NlcnQu QXJlRXF1YWwgKCJvcmlnaW4iLCByZXBvMi5HZXRDdXJyZW50UmVtb3RlICgpKTsNCisNCisJCQlB ZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKwkJCVBvc3RDb21taXQgKHJl cG8yKTsNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJicmFuY2gxIiwgbnVsbCk7DQorCQkJcmVw bzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmlu Zy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNoMSIpOw0KKwkJCUFkZEZpbGUgKCJmaWxl MiIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKwkJCUFz c2VydC5BcmVFcXVhbCAoMiwgcmVwbzIuR2V0QnJhbmNoZXMgKCkuQ291bnQgKCkpOw0KKwkJCUFz c2VydC5BcmVFcXVhbCAoMSwgcmVwbzIuR2V0UmVtb3RlcyAoKS5Db3VudCAoKSk7DQorDQorCQkJ cmVwbzIuUmVuYW1lUmVtb3RlICgib3JpZ2luIiwgIm90aGVyIik7DQorCQkJQXNzZXJ0LkFyZUVx dWFsICgib3RoZXIiLCByZXBvMi5HZXRDdXJyZW50UmVtb3RlICgpKTsNCisNCisJCQlyZXBvMi5S ZW1vdmVSZW1vdGUgKCJvdGhlciIpOw0KKwkJCUFzc2VydC5Jc0ZhbHNlIChyZXBvMi5HZXRSZW1v dGVzICgpLkFueSAoKSk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RJ c01lcmdlZCAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQor CQkJQWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlBc3NlcnQu SXNUcnVlIChyZXBvMi5Jc0JyYW5jaE1lcmdlZCAoIm1hc3RlciIpKTsNCisNCisJCQlyZXBvMi5D cmVhdGVCcmFuY2ggKCJicmFuY2gxIiwgbnVsbCk7DQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2gg KG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25p dG9yICgpLCAiYnJhbmNoMSIpOw0KKwkJCUFkZEZpbGUgKCJmaWxlMiIsICJ0ZXh0IiwgdHJ1ZSwg dHJ1ZSk7DQorDQorCQkJcmVwbzIuU3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3Jl LlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAibWFzdGVyIik7DQor CQkJQXNzZXJ0LklzRmFsc2UgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgiYnJhbmNoMSIpKTsNCisJ CQlyZXBvMi5NZXJnZSAoImJyYW5jaDEiLCBHaXRVcGRhdGVPcHRpb25zLk5vcm1hbFVwZGF0ZSwg bmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0 b3IgKCkpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgiYnJhbmNo MSIpKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJcHVibGljIHZvaWQgVGVzdFRhZ3MgKCkNCisJ CXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUgKCJm aWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJcmVwbzIuQWRkVGFnICgidGFnMSIsIEdl dEhlYWRSZXZpc2lvbiAoKSwgIm15LXRhZyIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMSwgcmVw bzIuR2V0VGFncyAoKS5Db3VudCAoKSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgidGFnMSIsIHJl cG8yLkdldFRhZ3MgKCkuRmlyc3QgKCkpOw0KKwkJCXJlcG8yLlJlbW92ZVRhZyAoInRhZzEiKTsN CisJCQlBc3NlcnQuQXJlRXF1YWwgKDAsIHJlcG8yLkdldFRhZ3MgKCkuQ291bnQgKCkpOw0KKwkJ fQ0KKw0KKwkJLy8gVE9ETzogVGVzdCByZWJhc2UgYW5kIG1lcmdlIC0gVGhpcyBpcyBicm9rZW4g b24gV2luZG93cw0KKw0KIAkJcHJvdGVjdGVkIG92ZXJyaWRlIFJlcG9zaXRvcnkgR2V0UmVwbyAo c3RyaW5nIHBhdGgsIHN0cmluZyB1cmwpDQogCQl7DQogCQkJcmV0dXJuIG5ldyBHaXRSZXBvc2l0 b3J5IChwYXRoLCB1cmwpOw0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u dHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZVJlcG9zaXRvcnlU ZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBNb25vRGV2 ZWxvcC5WZXJzaW9uQ29udHJvbC5UZXN0cwogewogCVtUZXN0Rml4dHVyZV0KLQlwdWJsaWMgYWJz dHJhY3QgY2xhc3MgQmFzZVJlcG9VdGlsc1Rlc3QKKwlhYnN0cmFjdCBjbGFzcyBCYXNlUmVwb1V0 aWxzVGVzdAogCXsKIAkJLy8gW0dpdF0gU2V0IHVzZXIgYW5kIGVtYWlsLgogCQlwcm90ZWN0ZWQg Y29uc3Qgc3RyaW5nIEF1dGhvciA9ICJhdXRob3IiOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRk aW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2 ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvR2l0UmVwb3NpdG9yeS5jcw0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAg LTE1NTcsNyArMTU1Nyw3IEBAIHB1YmxpYyBDaGFuZ2VTZXQgR2V0UHVzaENoYW5nZVNldCAoc3Ry aW5nIHJlbW90ZSwgc3RyaW5nIGJyYW5jaCkKIAkJCUNoYW5nZVNldCBjc2V0ID0gQ3JlYXRlQ2hh bmdlU2V0IChSb290UGF0aCk7CiAJCQlPYmplY3RJZCBjaWQxID0gUm9vdFJlcG9zaXRvcnkuUmVz b2x2ZSAocmVtb3RlICsgIi8iICsgYnJhbmNoKTsKIAkJCU9iamVjdElkIGNpZDIgPSBSb290UmVw b3NpdG9yeS5SZXNvbHZlIChSb290UmVwb3NpdG9yeS5HZXRCcmFuY2ggKCkpOwotCQkJUmV2V2Fs ayBydyA9IG5ldyBSZXZXYWxrIChSb290UmVwb3NpdG9yeSk7CisJCQlSZXZXYWxrCXJ3ID0gbmV3 IFJldldhbGsgKFJvb3RSZXBvc2l0b3J5KTsKIAkJCVJldkNvbW1pdCBjMSA9IHJ3LlBhcnNlQ29t bWl0IChjaWQxKTsKIAkJCVJldkNvbW1pdCBjMiA9IHJ3LlBhcnNlQ29tbWl0IChjaWQyKTsKIAkJ CQpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgcHVibGljIERpZmZJbmZvW10gR2V0UHVzaERpZmYgKHN0 cmluZyByZW1vdGUsIHN0cmluZyBicmFuY2gpCiAJCQlSZXZDb21taXQgYzIgPSBydy5QYXJzZUNv bW1pdCAoY2lkMik7CiAJCQkKIAkJCUxpc3Q8RGlmZkluZm8+IGRpZmZzID0gbmV3IExpc3Q8RGlm ZkluZm8+ICgpOwotCQkJZm9yZWFjaCAodmFyIGNoYW5nZSBpbiBHaXRVdGlsLkNvbXBhcmVDb21t aXRzIChSb290UmVwb3NpdG9yeSwgYzEsIGMyKSkgeworCQkJZm9yZWFjaCAodmFyIGNoYW5nZSBp biBHaXRVdGlsLkNvbXBhcmVDb21taXRzIChSb290UmVwb3NpdG9yeSwgYzIsIGMxKSkgewogCQkJ CXN0cmluZyBkaWZmOwogCQkJCXN3aXRjaCAoY2hhbmdlLkdldENoYW5nZVR5cGUgKCkpIHsKIAkJ CQljYXNlIERpZmZFbnRyeS5DaGFuZ2VUeXBlLkRFTEVURToNCg0KTW9kaWZpZWQ6IG1haW4vc3Jj L2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJz aW9uLlRlc3RzL0Jhc2VTdm5SZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zMyw5 ICszMyw5IEBACiBuYW1lc3BhY2UgTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lv bi5UZXN0cw0KIHsNCiAJW1Rlc3RGaXh0dXJlXQ0KLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFz ZVN2blV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNUZXN0DQorCWFic3RyYWN0IGNsYXNzIEJhc2VT dm5VdGlsc1Rlc3QgOiBCYXNlUmVwb1V0aWxzVGVzdA0KIAl7DQotCQlwcm90ZWN0ZWQgUHJvY2Vz cyBzdm5TZXJ2ZSA9IG51bGw7DQorCQlwcm90ZWN0ZWQgUHJvY2VzcyBTdm5TZXJ2ZSA9IG51bGw7 DQogDQogCQlbU2V0VXBdDQogCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQ0KQEAgLTU5 LDEzICs1OSwxMyBAQCBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXR1cCAoKQogCQkJLy8gQ3JlYXRl IGhvc3QgKFdpbjMyKQ0KIAkJCS8vIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBhZnRlciBkb2luZyB0 aGUgc3ZuQWRtaW4gY3JlYXRpb24uDQogCQkJLy8gQW5kIGJlZm9yZSBjaGVja291dC4NCi0JCQlp ZiAoc3ZuU2VydmUgIT0gbnVsbCkgew0KKwkJCWlmIChTdm5TZXJ2ZSAhPSBudWxsKSB7DQogCQkJ CWluZm8gPSBuZXcgUHJvY2Vzc1N0YXJ0SW5mbyAoKTsNCiAJCQkJaW5mby5GaWxlTmFtZSA9ICJz dm5zZXJ2ZSI7DQogCQkJCWluZm8uQXJndW1lbnRzID0gIi1kciAiICsgUm9vdFVybDsNCiAJCQkJ aW5mby5XaW5kb3dTdHlsZSA9IFByb2Nlc3NXaW5kb3dTdHlsZS5IaWRkZW47DQotCQkJCXN2blNl cnZlLlN0YXJ0SW5mbyA9IGluZm87DQotCQkJCXN2blNlcnZlLlN0YXJ0ICgpOw0KKwkJCQlTdm5T ZXJ2ZS5TdGFydEluZm8gPSBpbmZvOw0KKwkJCQlTdm5TZXJ2ZS5TdGFydCAoKTsNCiANCiAJCQkJ Ly8gQ3JlYXRlIHVzZXIgdG8gYXV0aC4NCiAJCQkJdXNpbmcgKHZhciBwZXJtID0gRmlsZS4gQ3Jl YXRlVGV4dCAoUm9vdFVybCArIFBhdGguRGlyZWN0b3J5U2VwYXJhdG9yQ2hhciArICJyZXBvIiAr DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9w LlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFZlcnNpb25Db250cm9sLlN1YnZl cnNpb24uVW5peC5UZXN0cwogewogCVtUZXN0Rml4dHVyZV0KLQlwdWJsaWMgY2xhc3MgVW5peFN2 blV0aWxzVGVzdCA6IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMu QmFzZVN2blV0aWxzVGVzdAorCXNlYWxlZCBjbGFzcyBVbml4U3ZuVXRpbHNUZXN0IDogTW9ub0Rl dmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy5CYXNlU3ZuVXRpbHNUZXN0CiAJ ewogCQlTdWJ2ZXJzaW9uQmFja2VuZCBTdm5DbGllbnQgewogCQkJZ2V0IHsgcmV0dXJuIFJlcG8u U3ZuOyB9DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvU3VidmVy c2lvbi5XaW4zMi5UZXN0cy9SZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0zNiwy MSArMzYsMjEgQEAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJz aW9uLlRlc3RzDQogew0KIAlbVGVzdEZpeHR1cmVdDQotCXB1YmxpYyBjbGFzcyBTaGFycFN2blV0 aWxzVGVzdCA6IEJhc2VTdm5VdGlsc1Rlc3QNCisJc2VhbGVkIGNsYXNzIFNoYXJwU3ZuVXRpbHNU ZXN0IDogQmFzZVN2blV0aWxzVGVzdA0KIAl7DQogCQlbU2V0VXBdDQogCQlwdWJsaWMgb3ZlcnJp ZGUgdm9pZCBTZXR1cCAoKQ0KIAkJew0KIAkJCVJvb3RVcmwgPSBuZXcgRmlsZVBhdGggKEZpbGVT ZXJ2aWNlLkNyZWF0ZVRlbXBEaXJlY3RvcnkgKCkpOw0KIAkJCVJlcG9Mb2NhdGlvbiA9ICJzdm46 Ly9sb2NhbGhvc3Q6MzY5MC9yZXBvIjsNCi0JCQlzdm5TZXJ2ZSA9IG5ldyBQcm9jZXNzICgpOw0K KwkJCVN2blNlcnZlID0gbmV3IFByb2Nlc3MgKCk7DQogCQkJYmFzZS5TZXR1cCAoKTsNCiAJCX0N CiANCiAJCVtUZWFyRG93bl0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFRlYXJEb3duICgpDQog CQl7DQotCQkJc3ZuU2VydmUuS2lsbCAoKTsNCisJCQlTdm5TZXJ2ZS5LaWxsICgpOw0KIA0KIAkJ CWJhc2UuVGVhckRvd24gKCk7DQogCQl9DQ0KDQogICBDb21taXQ6IGZkZTU4YTQ4N2UzOTk1YjQ1 YmM5NzBiODU4ODNkZjczMzBlYjI4MDMNCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlh aG9vLmNvbT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIwMTMtMTEtMTggMTM6MTM6MjIgR01UDQog ICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9mZGU1 OGE0ODdlMzk5NWI0NWJjOTcwYjg1ODgzZGY3MzMwZWIyODAzDQoNCltHaXRdIEZpeCBhIHRlc3Qu DQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9u b0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMu Y3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9w LlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNlR2l0UmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpAQCAtMTY3LDkgKzE2Nyw5IEBAIHB1YmxpYyB2b2lkIFRlc3RHaXRTdGFzaCAoKQog CQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCiAJCQlBZGRGaWxlICgiZmlsZTIi LCAibm90aGluZyIsIHRydWUsIHRydWUpOw0KIAkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0Iiwg dHJ1ZSwgZmFsc2UpOw0KLQkJCXJlcG8yLkdldFN0YXNoZXMgKCkuQ3JlYXRlIChudWxsKTsNCisJ CQlyZXBvMi5HZXRTdGFzaGVzICgpLkNyZWF0ZSAobmV3IE51bGxQcm9ncmVzc01vbml0b3IgKCkp Ow0KIAkJCUFzc2VydC5Jc1RydWUgKCFGaWxlLkV4aXN0cyAoUm9vdENoZWNrb3V0ICsgImZpbGUx IiksICJTdGFzaCBjcmVhdGlvbiBmYWlsdXJlIik7DQotCQkJcmVwbzIuR2V0U3Rhc2hlcyAoKS5Q b3AgKG51bGwpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuUG9wIChuZXcgTnVsbFByb2dyZXNz TW9uaXRvciAoKSk7DQogDQogCQkJVmVyc2lvbkluZm8gdmkgPSByZXBvMi5HZXRWZXJzaW9uSW5m byAoUm9vdENoZWNrb3V0ICsgImZpbGUxIiwgVmVyc2lvbkluZm9RdWVyeUZsYWdzLklnbm9yZUNh Y2hlKTsNCiAJCQlBc3NlcnQuQXJlRXF1YWwgKFZlcnNpb25TdGF0dXMuU2NoZWR1bGVkQWRkLCB2 aS5TdGF0dXMgJiBWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgIlN0YXNoIHBvcCBmYWlsdXJl Iik7DQ0KDQogICBDb21taXQ6IGIwMzYzM2MzOTE1NzFmMDQ3MjMzZjg0NDE5OGYxYTk2OGQ2NDAy MjgNCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQog ICAgIERhdGU6IDIwMTMtMTEtMTggMTQ6NTA6MTAgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0 aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9iMDM2MzNjMzkxNTcxZjA0NzIzM2Y4NDQx OThmMWE5NjhkNjQwMjI4DQoNCltHaXRdIFVuaXQgdGVzdHMgY2xlYW51cC4NCg0KQ2hhbmdlZCBw YXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJz aW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcwoNCk1vZGlmaWVk OiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy b2wuR2l0LlRlc3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC01 MSwxMSArNTEsMTEgQEAgcHVibGljIG92ZXJyaWRlIHZvaWQgU2V0dXAgKCkKIAkJCVJlcG9Mb2Nh dGlvbiA9ICJmaWxlOi8vLyIgKyBSb290VXJsLkZ1bGxQYXRoICsgInJlcG8uZ2l0IjsNCiANCiAJ CQkvLyBJbml0aWFsaXplIHRoZSBiYXJlIHJlcG8uDQotCQkJSW5pdENvbW1hbmQgY2kgPSBuZXcg SW5pdENvbW1hbmQgKCk7DQorCQkJdmFyIGNpID0gbmV3IEluaXRDb21tYW5kICgpOw0KIAkJCWNp LlNldERpcmVjdG9yeSAobmV3IFNoYXJwZW4uRmlsZVBhdGggKFJvb3RVcmwuRnVsbFBhdGggKyAi cmVwby5naXQiKSk7DQogCQkJY2kuU2V0QmFyZSAodHJ1ZSk7DQogCQkJY2kuQ2FsbCAoKTsNCi0J CQlGaWxlUmVwb3NpdG9yeSBiYXJlID0gbmV3IEZpbGVSZXBvc2l0b3J5IChuZXcgU2hhcnBlbi5G aWxlUGF0aCAoUm9vdFVybC5GdWxsUGF0aCArICJyZXBvLmdpdCIpKTsNCisJCQl2YXIgYmFyZSA9 IG5ldyBGaWxlUmVwb3NpdG9yeSAobmV3IFNoYXJwZW4uRmlsZVBhdGggKFJvb3RVcmwuRnVsbFBh dGggKyAicmVwby5naXQiKSk7DQogCQkJc3RyaW5nIGJyYW5jaCA9IENvbnN0YW50cy5SX0hFQURT ICsgIm1hc3RlciI7DQogDQogCQkJUmVmVXBkYXRlIGhlYWQgPSBiYXJlLlVwZGF0ZVJlZiAoQ29u c3RhbnRzLkhFQUQpOw0KQEAgLTEzMiwyMSArMTMyLDIxIEBAIHB1YmxpYyBvdmVycmlkZSB2b2lk IE1vdmVzRGlyZWN0b3J5ICgpCiANCiAJCXByb3RlY3RlZCBvdmVycmlkZSBSZXZpc2lvbiBHZXRI ZWFkUmV2aXNpb24gKCkNCiAJCXsNCi0JCQlHaXRSZXBvc2l0b3J5IHJlcG8yID0gKEdpdFJlcG9z aXRvcnkpUmVwbzsNCi0JCQlSZXZXYWxrIHJ3ID0gbmV3IFJldldhbGsgKHJlcG8yLlJvb3RSZXBv c2l0b3J5KTsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKwkJCXZhciBy dyA9IG5ldyBSZXZXYWxrIChyZXBvMi5Sb290UmVwb3NpdG9yeSk7DQogCQkJT2JqZWN0SWQgaGVh ZElkID0gcmVwbzIuUm9vdFJlcG9zaXRvcnkuUmVzb2x2ZSAoQ29uc3RhbnRzLkhFQUQpOw0KIAkJ CWlmIChoZWFkSWQgPT0gbnVsbCkNCiAJCQkJcmV0dXJuIG51bGw7DQogDQogCQkJUmV2Q29tbWl0 IGNvbW1pdCA9IHJ3LlBhcnNlQ29tbWl0IChoZWFkSWQpOw0KLQkJCUdpdFJldmlzaW9uIHJldiA9 IG5ldyBHaXRSZXZpc2lvbiAoUmVwbywgcmVwbzIuUm9vdFJlcG9zaXRvcnksIGNvbW1pdC5JZC5O YW1lKTsNCisJCQl2YXIgcmV2ID0gbmV3IEdpdFJldmlzaW9uIChSZXBvLCByZXBvMi5Sb290UmVw b3NpdG9yeSwgY29tbWl0LklkLk5hbWUpOw0KIAkJCXJldi5Db21taXQgPSBjb21taXQ7DQogCQkJ cmV0dXJuIHJldjsNCiAJCX0NCiANCiAJCXByb3RlY3RlZCBvdmVycmlkZSB2b2lkIFBvc3RDb21t aXQgKFJlcG9zaXRvcnkgcmVwbykNCiAJCXsNCi0JCQlHaXRSZXBvc2l0b3J5IHJlcG8yID0gKEdp dFJlcG9zaXRvcnkpcmVwbzsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlyZXBvOw0K IAkJCXJlcG8yLlB1c2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5O dWxsUHJvZ3Jlc3NNb25pdG9yICgpLCByZXBvMi5HZXRDdXJyZW50UmVtb3RlICgpLCByZXBvMi5H ZXRDdXJyZW50QnJhbmNoICgpKTsNCiAJCX0NCiANDQoNCiAgIENvbW1pdDogNjI3MjkzYTdlNjRi MjI4Mjc3ZmM0NmQ4YTI0MDIxZDE1YmIyMGYyYQ0KICAgQXV0aG9yOiBUaGVyem9rIDx0ZXJvbWFy aW9AeWFob28uY29tPiAoVGhlcnpvaykNCiAgICAgRGF0ZTogMjAxMy0xMS0xOCAxNzo0MDoyNCBH TVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0 LzYyNzI5M2E3ZTY0YjIyODI3N2ZjNDZkOGEyNDAyMWQxNWJiMjBmMmENCg0KW1N1YnZlcnNpb25d IEFkZGVkIFVSTCB2YWxpZGF0aW9uIHRlc3RzLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9z cmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5U ZXN0cy9CYXNlR2l0UmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lv bkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRlc3RzL0Jhc2VSZXBvc2l0 b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxv cC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL0Jhc2VTdm5SZXBvc2l0b3J5VGVzdHMu Y3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9u Q29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9zcmMv YWRkaW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMvUmVwb3NpdG9yeVRl c3RzLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2 ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KQEAgLTI2OSw4ICsyNjksNyBAQCBwdWJsaWMgdm9pZCBUZXN0UHVzaERpZmYg KCkKIAkJCS8vQXNzZXJ0LkFyZUVxdWFsICgidGV4dDIiLCBpdGVtLkNvbnRlbnQpOw0KIAkJfQ0K IA0KLQkJW1Rlc3RdDQotCQlwdWJsaWMgdm9pZCBUZXN0R2l0VXJsICgpDQorCQlwcm90ZWN0ZWQg b3ZlcnJpZGUgdm9pZCBUZXN0VmFsaWRVcmwgKCkNCiAJCXsNCiAJCQl2YXIgcmVwbzIgPSAoR2l0 UmVwb3NpdG9yeSlSZXBvOw0KIAkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJn aXRAZ2l0aHViLmNvbTptb25vL21vbm9kZXZlbG9wIikpOw0NCg0KTW9kaWZpZWQ6IG1haW4vc3Jj L2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVz dHMvQmFzZVJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEyNSw2ICsxMjUsMTQg QEAgcHVibGljIHZvaWQgUmlnaHRSZXBvc2l0b3J5RGV0ZWN0aW9uICgpCiAJCXByb3RlY3RlZCBh YnN0cmFjdCBOVW5pdC5GcmFtZXdvcmsuQ29uc3RyYWludHMuSVJlc29sdmVDb25zdHJhaW50IElz Q29ycmVjdFR5cGUgKCk7CiAKIAkJW1Rlc3RdCisJCXB1YmxpYyB2b2lkIFVybElzVmFsaWQgKCkK KwkJeworCQkJVGVzdFZhbGlkVXJsICgpOworCQl9CisKKwkJcHJvdGVjdGVkIGFic3RyYWN0IHZv aWQgVGVzdFZhbGlkVXJsICgpOworCisJCVtUZXN0XQogCQkvLyBUZXN0cyBSZXBvc2l0b3J5LkNo ZWNrb3V0LgogCQlwdWJsaWMgdm9pZCBDaGVja291dEV4aXN0cyAoKQogCQl7DQoNCk1vZGlmaWVk OiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy b2wuU3VidmVyc2lvbi5UZXN0cy9CYXNlU3ZuUmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQpAQCAtOTMsNiArOTMsMTUgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIE5Vbml0LkZyYW1ld29yay5D b25zdHJhaW50cy5JUmVzb2x2ZUNvbnN0cmFpbnQgSXNDb3JyZWN0VHlwZQogCQkJcmV0dXJuIElz Lkluc3RhbmNlT2Y8U3VidmVyc2lvblJlcG9zaXRvcnk+ICgpOw0KIAkJfQ0KIA0KKwkJcHJvdGVj dGVkIG92ZXJyaWRlIHZvaWQgVGVzdFZhbGlkVXJsICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0g KFN1YnZlcnNpb25SZXBvc2l0b3J5KVJlcG87DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNV cmxWYWxpZCAoInN2bjovL3N2bnJlcG8uY29tOjgwL3JlcG8iKSk7DQorCQkJQXNzZXJ0LklzVHJ1 ZSAocmVwbzIuSXNVcmxWYWxpZCAoInN2bitzc2g6Ly91c2VyQGhvc3QuY29tOjgwL3JlcG8iKSk7 DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImh0dHA6Ly9zdm5yZXBvLmNv bTo4MC9yZXBvIikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJodHRw czovL3N2bnJlcG8uY29tOjgwL3JlcG8iKSk7DQorCQl9DQorDQogCQlwcm90ZWN0ZWQgb3ZlcnJp ZGUgUmV2aXNpb24gR2V0SGVhZFJldmlzaW9uICgpDQogCQl7DQogCQkJcmV0dXJuIFN2blJldmlz aW9uLkhlYWQ7DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01v bm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVwb3NpdG9yeVRlc3Rz LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpAQCAtMTI3LDYgKzEyNywxMiBAQCBwcm90ZWN0ZWQgb3ZlcnJpZGUg dm9pZCBQb3N0VW5sb2NrICgpCiAJCQl9KTsKIAkJfQogCisJCXB1YmxpYyBvdmVycmlkZSB2b2lk IFRlc3RWYWxpZFVybCAoKQorCQl7CisJCQliYXNlLlRlc3RWYWxpZFVybCAoKTsKKwkJCUFzc2Vy dC5Jc1RydWUgKFJlcG8uSXNVcmxWYWxpZCAoImZpbGU6Ly8vZGlyL3JlcG8iKSk7CisJCX0KKwog CQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmVwb3NpdG9yeSBHZXRSZXBvIChzdHJpbmcgcGF0aCwgc3Ry aW5nIHVybCkKIAkJewogCQkJcmV0dXJuIG5ldyBTdWJ2ZXJzaW9uUmVwb3NpdG9yeSAobmV3IFN2 bkNsaWVudCAoKSwgdXJsLCBwYXRoKTsNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJz aW9uQ29udHJvbC9TdWJ2ZXJzaW9uLldpbjMyLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KQEAgLTExNyw2ICsxMTcsMTYgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgUG9z dFVubG9jayAoKQogCQkJfSk7DQogCQl9DQogDQorCQlbVGVzdF0NCisJCXByb3RlY3RlZCBvdmVy cmlkZSB2b2lkIFRlc3RWYWxpZFVybCAoKQ0KKwkJew0KKwkJCWJhc2UuVGVzdFZhbGlkVXJsICgp Ow0KKw0KKwkJCUFzc2VydC5JZ25vcmUgKCJGaWxlIHNjaGVtZSBpcyBicm9rZW4gb24gV2luZG93 cyIpOw0KKwkJCXZhciByZXBvMiA9IChTdWJ2ZXJzaW9uUmVwb3NpdG9yeSlSZXBvOw0KKwkJCUFz c2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJmaWxlOi8vL2M6L2Rpci9yZXBvIikpOw0K KwkJfQ0KKw0KIAkJcHJvdGVjdGVkIG92ZXJyaWRlIFJlcG9zaXRvcnkgR2V0UmVwbyAoc3RyaW5n IHBhdGgsIHN0cmluZyB1cmwpDQogCQl7DQogCQkJcmV0dXJuIG5ldyBTdWJ2ZXJzaW9uUmVwb3Np dG9yeSAobmV3IFN2blNoYXJwQ2xpZW50ICgpLCB1cmwsIHBhdGgpOw0NCg0KICAgQ29tbWl0OiAx NmEzNGU3ZTA1OTk2NzQ5NDQ2OTFiNGFkMWYwMTI3ZWFmZDA1Y2EzDQogICBBdXRob3I6IFRoZXJ6 b2sgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBEYXRlOiAyMDEzLTExLTE4 IDE3OjQ4OjEzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2 ZWxvcC9jb21taXQvMTZhMzRlN2UwNTk5Njc0OTQ0NjkxYjRhZDFmMDEyN2VhZmQwNWNhMw0KDQpG aXggYnVpbGQuID5fPg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNp b25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVzdHMvUmVw b3NpdG9yeVRlc3RzLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL1JlcG9zaXRvcnlU ZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEyNyw3ICsxMjcsNyBAQCBwcm90ZWN0ZWQgb3ZlcnJp ZGUgdm9pZCBQb3N0VW5sb2NrICgpCiAJCQl9KTsKIAkJfQogCi0JCXB1YmxpYyBvdmVycmlkZSB2 b2lkIFRlc3RWYWxpZFVybCAoKQorCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBUZXN0VmFsaWRV cmwgKCkKIAkJewogCQkJYmFzZS5UZXN0VmFsaWRVcmwgKCk7CiAJCQlBc3NlcnQuSXNUcnVlIChS ZXBvLklzVXJsVmFsaWQgKCJmaWxlOi8vL2Rpci9yZXBvIikpOw0KDQogICBDb21taXQ6IDcxMGUw NDAwN2IwYTI2OTEyYjEzOTNkY2FhOTg4YmY5YWQzYWY5MDYNCiAgIEF1dGhvcjogVGhlcnpvayA8 dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIwMTMtMTEtMTggMjI6 NDU6MzMgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9w L2NvbW1pdC83MTBlMDQwMDdiMGEyNjkxMmIxMzkzZGNhYTk4OGJmOWFkM2FmOTA2DQoNCltXZWJS ZWZlcmVuY2VzXSBQb3NzaWJpbGl0eSB0byBjaG9vc2UgdmlzaWJpbGl0eQoKRWl0aGVyIGdlbmVy YXRlIHRoZSBzZXJ2aWNlIGFzIGEgcHVibGljIG9yIGludGVybmFsIHNlcnZpY2UuDQoNCkNoYW5n ZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9N b25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzLkRpYWxvZ3MvV0NGQ29uZmlnV2lkZ2V0LmNzCiAgTSBt YWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9ndGstZ3VpL01vbm9EZXZl bG9wLldlYlJlZmVyZW5jZXMuRGlhbG9ncy5XQ0ZDb25maWdXaWRnZXQuY3MKICBNIG1haW4vc3Jj L2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL2d0ay1ndWkvZ3VpLnN0ZXRpYwoNCk1v ZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9Nb25vRGV2 ZWxvcC5XZWJSZWZlcmVuY2VzLkRpYWxvZ3MvV0NGQ29uZmlnV2lkZ2V0LmNzDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQpAQCAtNDUsNiArNDUsMTEgQEAgcHVibGljIFdDRkNvbmZpZ1dpZGdldCAoQ2xpZW50T3B0aW9u cyBvcHRpb25zKQogCQkJCiAJCQlkaWN0VHlwZXMgPSBuZXcgTGlzdDxUeXBlPiAoRGVmYXVsdERp Y3Rpb25hcnlUeXBlcyk7CiAJCQlQb3B1bGF0ZUJveCAoZGljdGlvbmFyeUNvbGxlY3Rpb24sICJE aWN0aW9uYXJ5IiwgZGljdFR5cGVzKTsKKworCQkJZm9yZWFjaCAodmFyIGFjY2VzcyBpbiBBY2Nl c3NHZW5lcmF0aW9uVHlwZXMpCisJCQkJbGlzdEFjY2Vzcy5BcHBlbmRUZXh0IChhY2Nlc3MpOwor CisJCQlsaXN0QWNjZXNzLkFjdGl2ZSA9IG9wdGlvbnMuR2VuZXJhdGVJbnRlcm5hbFR5cGVzID8g MSA6IDA7CiAJCX0KIAkJCiAJCXB1YmxpYyBDbGllbnRPcHRpb25zIE9wdGlvbnMgewpAQCAtNzEs NiArNzYsMTEgQEAgcHVibGljIFdDRkNvbmZpZ1dpZGdldCAoQ2xpZW50T3B0aW9ucyBvcHRpb25z KQogCQkJdHlwZW9mIChTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuTGlzdERpY3Rpb25h cnkpLAogCQkJdHlwZW9mIChTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuT3JkZXJlZERp Y3Rpb25hcnkpCiAJCX07CisKKwkJc3RhdGljIHJlYWRvbmx5IExpc3Q8c3RyaW5nPiBBY2Nlc3NH ZW5lcmF0aW9uVHlwZXMgPSBuZXcgTGlzdDxzdHJpbmc+IHsKKwkJCSJQdWJsaWMiLAorCQkJIklu dGVybmFsIgorCQl9OwogCQkKIAkJcHVibGljIGJvb2wgTW9kaWZpZWQgewogCQkJZ2V0OwpAQCAt MTYyLDYgKzE3MiwxMSBAQCBpbnRlcm5hbCB2b2lkIFVwZGF0ZSAoKQogCQl7CiAJCQlVcGRhdGVC b3ggKGxpc3RDb2xsZWN0aW9uLCAiTGlzdCIsIGxpc3RUeXBlcyk7CiAJCQlVcGRhdGVCb3ggKGRp Y3Rpb25hcnlDb2xsZWN0aW9uLCAiRGljdGlvbmFyeSIsIGRpY3RUeXBlcyk7CisKKwkJCWlmIChs aXN0QWNjZXNzLkFjdGl2ZSAhPSAoT3B0aW9ucy5HZW5lcmF0ZUludGVybmFsVHlwZXMgPyAxIDog MCkpIHsKKwkJCQlPcHRpb25zLkdlbmVyYXRlSW50ZXJuYWxUeXBlcyA9ICFPcHRpb25zLkdlbmVy YXRlSW50ZXJuYWxUeXBlczsKKwkJCQlNb2RpZmllZCA9IHRydWU7CisJCQl9CiAJCX0KIAl9CiB9 DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuV2ViUmVmZXJlbmNlcy9n dGstZ3VpL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMuRGlhbG9ncy5XQ0ZDb25maWdXaWRnZXQu Y3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCkBAIC05LDggKzksMTAgQEAgcHVibGljIHBhcnRpYWwgY2xhc3MgV0NG Q29uZmlnV2lkZ2V0CiAJCXByaXZhdGUgZ2xvYmFsOjpHdGsuQ29tYm9Cb3ggZGljdGlvbmFyeUNv bGxlY3Rpb247CiAJCXByaXZhdGUgZ2xvYmFsOjpHdGsuTGFiZWwgbGFiZWwxOwogCQlwcml2YXRl IGdsb2JhbDo6R3RrLkxhYmVsIGxhYmVsMjsKKwkJcHJpdmF0ZSBnbG9iYWw6Okd0ay5MYWJlbCBs YWJlbDM7CisJCXByaXZhdGUgZ2xvYmFsOjpHdGsuQ29tYm9Cb3ggbGlzdEFjY2VzczsKIAkJcHJp dmF0ZSBnbG9iYWw6Okd0ay5Db21ib0JveCBsaXN0Q29sbGVjdGlvbjsKLQkJCisKIAkJcHJvdGVj dGVkIHZpcnR1YWwgdm9pZCBCdWlsZCAoKQogCQl7CiAJCQlnbG9iYWw6OlN0ZXRpYy5HdWkuSW5p dGlhbGl6ZSAodGhpcyk7CkBAIC01OCwxNyArNjAsMzggQEAgcHJvdGVjdGVkIHZpcnR1YWwgdm9p ZCBCdWlsZCAoKQogCQkJdzMuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9wdGlvbnMp KDQpKTsKIAkJCXczLllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg0KSk7 CiAJCQkvLyBDb250YWluZXIgY2hpbGQgd2NmT3B0aW9ucy5HdGsuVGFibGUrVGFibGVDaGlsZAor CQkJdGhpcy5sYWJlbDMgPSBuZXcgZ2xvYmFsOjpHdGsuTGFiZWwgKCk7CisJCQl0aGlzLmxhYmVs My5OYW1lID0gImxhYmVsMyI7CisJCQl0aGlzLmxhYmVsMy5MYWJlbFByb3AgPSBnbG9iYWw6Ok1v bm8uVW5peC5DYXRhbG9nLkdldFN0cmluZyAoIkFjY2VzcyBsZXZlbDoiKTsKKwkJCXRoaXMud2Nm T3B0aW9ucy5BZGQgKHRoaXMubGFiZWwzKTsKKwkJCWdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hp bGQgdzQgPSAoKGdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQpKHRoaXMud2NmT3B0aW9ucyBb dGhpcy5sYWJlbDNdKSk7CisJCQl3NC5Ub3BBdHRhY2ggPSAoKHVpbnQpKDIpKTsKKwkJCXc0LkJv dHRvbUF0dGFjaCA9ICgodWludCkoMykpOworCQkJdzQuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3Rr LkF0dGFjaE9wdGlvbnMpKDQpKTsKKwkJCXc0LllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRh Y2hPcHRpb25zKSg0KSk7CisJCQkvLyBDb250YWluZXIgY2hpbGQgd2NmT3B0aW9ucy5HdGsuVGFi bGUrVGFibGVDaGlsZAorCQkJdGhpcy5saXN0QWNjZXNzID0gZ2xvYmFsOjpHdGsuQ29tYm9Cb3gu TmV3VGV4dCAoKTsKKwkJCXRoaXMubGlzdEFjY2Vzcy5OYW1lID0gImxpc3RBY2Nlc3MiOworCQkJ dGhpcy53Y2ZPcHRpb25zLkFkZCAodGhpcy5saXN0QWNjZXNzKTsKKwkJCWdsb2JhbDo6R3RrLlRh YmxlLlRhYmxlQ2hpbGQgdzUgPSAoKGdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQpKHRoaXMu d2NmT3B0aW9ucyBbdGhpcy5saXN0QWNjZXNzXSkpOworCQkJdzUuVG9wQXR0YWNoID0gKCh1aW50 KSgyKSk7CisJCQl3NS5Cb3R0b21BdHRhY2ggPSAoKHVpbnQpKDMpKTsKKwkJCXc1LkxlZnRBdHRh Y2ggPSAoKHVpbnQpKDEpKTsKKwkJCXc1LlJpZ2h0QXR0YWNoID0gKCh1aW50KSgyKSk7CisJCQl3 NS5YT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucykoNykpOworCQkJdzUuWU9w dGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9wdGlvbnMpKDQpKTsKKwkJCS8vIENvbnRhaW5l ciBjaGlsZCB3Y2ZPcHRpb25zLkd0ay5UYWJsZStUYWJsZUNoaWxkCiAJCQl0aGlzLmxpc3RDb2xs ZWN0aW9uID0gZ2xvYmFsOjpHdGsuQ29tYm9Cb3guTmV3VGV4dCAoKTsKIAkJCXRoaXMubGlzdENv bGxlY3Rpb24uTmFtZSA9ICJsaXN0Q29sbGVjdGlvbiI7CiAJCQl0aGlzLndjZk9wdGlvbnMuQWRk ICh0aGlzLmxpc3RDb2xsZWN0aW9uKTsKLQkJCWdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQg dzQgPSAoKGdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQpKHRoaXMud2NmT3B0aW9ucyBbdGhp cy5saXN0Q29sbGVjdGlvbl0pKTsKLQkJCXc0LkxlZnRBdHRhY2ggPSAoKHVpbnQpKDEpKTsKLQkJ CXc0LlJpZ2h0QXR0YWNoID0gKCh1aW50KSgyKSk7Ci0JCQl3NC5YT3B0aW9ucyA9ICgoZ2xvYmFs OjpHdGsuQXR0YWNoT3B0aW9ucykoNykpOwotCQkJdzQuWU9wdGlvbnMgPSAoKGdsb2JhbDo6R3Rr LkF0dGFjaE9wdGlvbnMpKDQpKTsKKwkJCWdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQgdzYg PSAoKGdsb2JhbDo6R3RrLlRhYmxlLlRhYmxlQ2hpbGQpKHRoaXMud2NmT3B0aW9ucyBbdGhpcy5s aXN0Q29sbGVjdGlvbl0pKTsKKwkJCXc2LkxlZnRBdHRhY2ggPSAoKHVpbnQpKDEpKTsKKwkJCXc2 LlJpZ2h0QXR0YWNoID0gKCh1aW50KSgyKSk7CisJCQl3Ni5YT3B0aW9ucyA9ICgoZ2xvYmFsOjpH dGsuQXR0YWNoT3B0aW9ucykoNykpOworCQkJdzYuWU9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0 dGFjaE9wdGlvbnMpKDQpKTsKIAkJCXRoaXMuZGlhbG9nMV9WQm94LkFkZCAodGhpcy53Y2ZPcHRp b25zKTsKLQkJCWdsb2JhbDo6R3RrLkJveC5Cb3hDaGlsZCB3NSA9ICgoZ2xvYmFsOjpHdGsuQm94 LkJveENoaWxkKSh0aGlzLmRpYWxvZzFfVkJveCBbdGhpcy53Y2ZPcHRpb25zXSkpOwotCQkJdzUu UG9zaXRpb24gPSAwOworCQkJZ2xvYmFsOjpHdGsuQm94LkJveENoaWxkIHc3ID0gKChnbG9iYWw6 Okd0ay5Cb3guQm94Q2hpbGQpKHRoaXMuZGlhbG9nMV9WQm94IFt0aGlzLndjZk9wdGlvbnNdKSk7 CisJCQl3Ny5Qb3NpdGlvbiA9IDA7CiAJCQl0aGlzLkFkZCAodGhpcy5kaWFsb2cxX1ZCb3gpOwog CQkJaWYgKCh0aGlzLkNoaWxkICE9IG51bGwpKSB7CiAJCQkJdGhpcy5DaGlsZC5TaG93QWxsICgp Ow0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMv Z3RrLWd1aS9ndWkuc3RldGljDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNjQ2LDEyICs2NDYsNiBAQAogICAg ICAgICAgICAgICA8cGxhY2Vob2xkZXIgLz4KICAgICAgICAgICAgIDwvY2hpbGQ+CiAgICAgICAg ICAgICA8Y2hpbGQ+Ci0gICAgICAgICAgICAgIDxwbGFjZWhvbGRlciAvPgotICAgICAgICAgICAg PC9jaGlsZD4KLSAgICAgICAgICAgIDxjaGlsZD4KLSAgICAgICAgICAgICAgPHBsYWNlaG9sZGVy IC8+Ci0gICAgICAgICAgICA8L2NoaWxkPgotICAgICAgICAgICAgPGNoaWxkPgogICAgICAgICAg ICAgICA8d2lkZ2V0IGNsYXNzPSJHdGsuQ29tYm9Cb3giIGlkPSJkaWN0aW9uYXJ5Q29sbGVjdGlv biI+CiAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJlck5hbWUiIC8+CiAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IklzVGV4dENvbWJvIj5UcnVlPC9wcm9wZXJ0eT4K QEAgLTcxMiw2ICs3MDYsNDcgQEAKICAgICAgICAgICAgICAgPC9wYWNraW5nPgogICAgICAgICAg ICAgPC9jaGlsZD4KICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPHdpZGdldCBj bGFzcz0iR3RrLkxhYmVsIiBpZD0ibGFiZWwzIj4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0iTWVtYmVyTmFtZSIgLz4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iTGFi ZWxQcm9wIiB0cmFuc2xhdGFibGU9InllcyI+QWNjZXNzIGxldmVsOjwvcHJvcGVydHk+CisgICAg ICAgICAgICAgIDwvd2lkZ2V0PgorICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iVG9wQXR0YWNoIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iQm90dG9tQXR0YWNoIj4zPC9wcm9wZXJ0eT4KKyAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0iQXV0b1NpemUiPlRydWU8L3Byb3BlcnR5PgorICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYT3B0aW9ucyI+RmlsbDwvcHJvcGVydHk+CisgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IllPcHRpb25zIj5GaWxsPC9wcm9wZXJ0eT4KKyAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iWEV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5Pgor ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYRmlsbCI+VHJ1ZTwvcHJvcGVydHk+Cisg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlhTaHJpbmsiPkZhbHNlPC9wcm9wZXJ0eT4K KyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iWUV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5 PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJZRmlsbCI+VHJ1ZTwvcHJvcGVydHk+ CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IllTaHJpbmsiPkZhbHNlPC9wcm9wZXJ0 eT4KKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAg ICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPHdpZGdldCBjbGFzcz0iR3RrLkNvbWJvQm94 IiBpZD0ibGlzdEFjY2VzcyI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJl ck5hbWUiIC8+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IklzVGV4dENvbWJvIj5U cnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iSXRlbXMiIHRy YW5zbGF0YWJsZT0ieWVzIiAvPgorICAgICAgICAgICAgICA8L3dpZGdldD4KKyAgICAgICAgICAg ICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlRvcEF0dGFjaCI+ MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkJvdHRvbUF0dGFj aCI+MzwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkxlZnRBdHRh Y2giPjE8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJSaWdodEF0 dGFjaCI+MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkF1dG9T aXplIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IlhP cHRpb25zIj5FeHBhbmQsIFNocmluaywgRmlsbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9IllPcHRpb25zIj5GaWxsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0iWEV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9IlhGaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0iWFNocmluayI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9IllFeHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iWUZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJZU2hyaW5rIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAg ICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICA8Y2hpbGQ+ CiAgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5Db21ib0JveCIgaWQ9Imxpc3RDb2xs ZWN0aW9uIj4KICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iTWVtYmVyTmFtZSIgLz4K ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iSXNUZXh0Q29tYm8iPlRydWU8L3Byb3Bl cnR5Pg0KDQogICBDb21taXQ6IGI2YmUwZjEwMzBkZWU1NGEyNmZkNjI2NjAyZTNmODYyMTU5ZDEw YmENCiAgIEF1dGhvcjogTWljaGFlbCBIdXRjaGluc29uIDxtLmouaHV0Y2hpbnNvbkBnbWFpbC5j b20+IChtaHV0Y2gpDQogICAgIERhdGU6IDIwMTMtMTEtMTggMjM6Mzg6MzMgR01UDQogICAgICBV Ukw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9iNmJlMGYxMDMw ZGVlNTRhMjZmZDYyNjYwMmUzZjg2MjE1OWQxMGJhDQoNCltDb3JlXSBNYWtlIHN1cmUgV2ViU2Vy dmljZSBpcyBpbml0aWFsaXplZCBmcmFtZXdvcmsgc2VydmljZQoKVGhlIGZyYW1ld29yayBzZXJ2 aWNlIGNhbiBraWNrIG9mZiB0aGUgYWN0aXZhdGlvbiBzeXN0ZW0sIHdoaWNoCm1ha2VzIHdlYiBy ZXF1ZXN0cy4KCkJYQzE2MjQ1IC0gW1hTXVVwZ3JhZGUgd29ya2Zsb3cgdGhyb3dzIGFuIE5SRSB3 aGlsZSB0cnlpbmcgdG8gYWN0aXZhdGUKYSBsaWNlbnNlDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBt YWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9SdW50aW1lLmNz Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5D b3JlL1J1bnRpbWUuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xMTIsNiArMTEyLDcgQEAgcHVibGljIHN0 YXRpYyB2b2lkIEluaXRpYWxpemUgKGJvb2wgdXBkYXRlQWRkaW5SZWdpc3RyeSkKIAkJCQlDb3Vu dGVycy5SdW50aW1lSW5pdGlhbGl6YXRpb24uVHJhY2UgKCJJbml0aWFsaXplZCBBZGRpbiBNYW5h Z2VyIik7CiAJCQkJCiAJCQkJUHJvcGVydHlTZXJ2aWNlLkluaXRpYWxpemUgKCk7CisJCQkJV2Vi U2VydmljZS5Jbml0aWFsaXplICgpOwogCQkJCQogCQkJCS8vaGF2ZSB0byBkbyB0aGlzIGFmdGVy IHRoZSBhZGRpbiBzZXJ2aWNlIGFuZCBwcm9wZXJ0eSBzZXJ2aWNlIGhhdmUgaW5pdGlhbGl6ZWQK IAkJCQlpZiAoVXNlckRhdGFNaWdyYXRpb25TZXJ2aWNlLkhhc1NvdXJjZSkgewpAQCAtMTI0LDgg KzEyNSw2IEBAIHB1YmxpYyBzdGF0aWMgdm9pZCBJbml0aWFsaXplIChib29sIHVwZGF0ZUFkZGlu UmVnaXN0cnkpCiAJCQkJQ291bnRlcnMuUnVudGltZUluaXRpYWxpemF0aW9uLlRyYWNlICgiSW5p dGlhbGl6aW5nIEFzc2VtYmx5IFNlcnZpY2UiKTsKIAkJCQlzeXN0ZW1Bc3NlbWJseVNlcnZpY2Ug PSBuZXcgU3lzdGVtQXNzZW1ibHlTZXJ2aWNlICgpOwogCQkJCXN5c3RlbUFzc2VtYmx5U2Vydmlj ZS5Jbml0aWFsaXplICgpOwotCi0JCQkJV2ViU2VydmljZS5Jbml0aWFsaXplICgpOwogCQkJCQog CQkJCWluaXRpYWxpemVkID0gdHJ1ZTsKIAkJCQkNCg0KICAgQ29tbWl0OiA2NjQ2MmM4MTZjN2Ni MjA3ZTNmODRiM2JkOWNiMzM0ZjZkYjVkYjk0DQogICBBdXRob3I6IE1pY2hhZWwgSHV0Y2hpbnNv biA8bS5qLmh1dGNoaW5zb25AZ21haWwuY29tPiAobWh1dGNoKQ0KICAgICBEYXRlOiAyMDEzLTEx LTE4IDIzOjM4OjMzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25v ZGV2ZWxvcC9jb21taXQvNjY0NjJjODE2YzdjYjIwN2UzZjg0YjNiZDljYjMzNGY2ZGI1ZGI5NA0K DQpbQ29yZV0gQ2xlYW4gdXAgdGhlIFdlYlNlcnZpY2UKCkhhZCBsb3RzIG9mIHBvaW50bGVzcyBs YXppZXMgYW5kIHNpbmdsZXRvbnMsIGFuZCBjb3VsZCBleHBsb2RlIG9uCnBsYXRmb3JtcyB3aXRo b3V0IGEgY3JlZGVudGlhbHMgcHJvdmlkZXIuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3Ny Yy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvQ3JlZGVudGlhbFN0 b3JlLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29y ZS5XZWIvSUNyZWRlbnRpYWxQcm92aWRlci5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxv cC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL1Byb3h5Q2FjaGUuY3MKICBNIG1haW4vc3JjL2Nv cmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9SZXF1ZXN0SGVscGVyLmNz CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIv V2ViU2VydmljZS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZl bG9wLkNvcmUvUnVudGltZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9w LkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvQ3JlZGVudGlhbFN0b3JlLmNzDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQpAQCAtNywxMyArNyw2IEBAIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5Db3JlLldlYgogCWNsYXNz IENyZWRlbnRpYWxTdG9yZSA6IElDcmVkZW50aWFsQ2FjaGUKIAl7CiAJCXJlYWRvbmx5IENvbmN1 cnJlbnREaWN0aW9uYXJ5PFVyaSwgSUNyZWRlbnRpYWxzPiBjcmVkZW50aWFsQ2FjaGUgPSBuZXcg Q29uY3VycmVudERpY3Rpb25hcnk8VXJpLCBJQ3JlZGVudGlhbHM+ICgpOwotCQlzdGF0aWMgcmVh ZG9ubHkgQ3JlZGVudGlhbFN0b3JlIGluc3RhbmNlID0gbmV3IENyZWRlbnRpYWxTdG9yZSAoKTsN Ci0NCi0JCXB1YmxpYyBzdGF0aWMgQ3JlZGVudGlhbFN0b3JlIEluc3RhbmNlIHsKLQkJCWdldCB7 Ci0JCQkJcmV0dXJuIGluc3RhbmNlOwotCQkJfQotCQl9CiAKIAkJcHVibGljIElDcmVkZW50aWFs cyBHZXRDcmVkZW50aWFscyAoVXJpIHVyaSwgQ3JlZGVudGlhbFR5cGUgY3JlZGVudGlhbFR5cGUp DQogCQl7DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9E ZXZlbG9wLkNvcmUuV2ViL0lDcmVkZW50aWFsUHJvdmlkZXIuY3MNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0x MCw3ICsxMCw3IEBAIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5Db3JlLldlYgogCXB1YmxpYyBpbnRl cmZhY2UgSUNyZWRlbnRpYWxQcm92aWRlcgogCXsKIAkJLy8vIDxzdW1tYXJ5PgotCQkvLy8gUmV0 dXJucyBDcmVkZW50aWFsU3RhdGUgc3RhdGUgdGhhdCBsZXQncyB0aGUgY29uc3VtZXIga25vdyBp ZiBJQ3JlZGVudGlhbHMKKwkJLy8vIFJldHVybnMgQ3JlZGVudGlhbFN0YXRlIHN0YXRlIHRoYXQg bGV0cyB0aGUgY29uc3VtZXIga25vdyBpZiBJQ3JlZGVudGlhbHMKIAkJLy8vIHdlcmUgZGlzY292 ZXJlZCBieSB0aGUgSUNyZWRlbnRpYWxQcm92aWRlci4gVGhlIGNyZWRlbnRpYWxzIGFyZ3VtZW50 IGlzIHRoZW4KIAkJLy8vIHBvcHVsYXRlZCB3aXRoIHRoZSBkaXNjb3ZlcmVkIHZhbGlkIGNyZWRl bnRpYWxzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoZSBnaXZlbiBVcmkuCiAJCS8vLyBUaGUgcHJv eHkgaW5zdGFuY2UgaWYgcGFzc2VkIHdpbGwgYmUgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVx dWVzdCBnb2VzIHRocm91Z2ggdGhlIHByb3h5DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01v bm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvUHJveHlDYWNoZS5jcw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KQEAgLTE0LDE1ICsxNCw2IEBAIGNsYXNzIFByb3h5Q2FjaGUgOiBJUHJveHlDYWNoZQog CQlzdGF0aWMgcmVhZG9ubHkgSVdlYlByb3h5IG9yaWdpbmFsU3lzdGVtUHJveHkgPSBXZWJSZXF1 ZXN0LkdldFN5c3RlbVdlYlByb3h5ICgpOwogCiAJCXJlYWRvbmx5IENvbmN1cnJlbnREaWN0aW9u YXJ5PFVyaSwgV2ViUHJveHk+IGNhY2hlID0gbmV3IENvbmN1cnJlbnREaWN0aW9uYXJ5PFVyaSwg V2ViUHJveHk+ICgpOwotCQlzdGF0aWMgcmVhZG9ubHkgTGF6eTxQcm94eUNhY2hlPiBpbnN0YW5j ZSA9IG5ldyBMYXp5PFByb3h5Q2FjaGU+ICgoKSA9PiBuZXcgUHJveHlDYWNoZSAoKSk7Ci0KLQkJ cHVibGljIHN0YXRpYyBQcm94eUNhY2hlIEluc3RhbmNlIHsKLQkJCWdldCB7Ci0JCQkJcmV0dXJu IGluc3RhbmNlLlZhbHVlOwotCQkJfQotCQl9Ci0KLQkJUHJveHlDYWNoZSAoKSB7fQogCiAJCXB1 YmxpYyBJV2ViUHJveHkgR2V0UHJveHkgKFVyaSB1cmkpCiAJCXsNCg0KTW9kaWZpZWQ6IG1haW4v c3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9SZXF1ZXN0SGVs cGVyLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpAQCAtMTMsOSArMTMsOSBAQCBwdWJsaWMgc3RhdGljIGNsYXNz IFJlcXVlc3RIZWxwZXIKIAkJLy8vIDwvc3VtbWFyeT4NCiAJCWludGVybmFsIHN0YXRpYyBXZWJS ZXNwb25zZSBHZXRSZXNwb25zZSAoRnVuYzxXZWJSZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0LCBBY3Rp b248V2ViUmVxdWVzdD4gcHJlcGFyZVJlcXVlc3QpDQogCQl7DQotCQkJdmFyIHByb3h5Q2FjaGUg PSBXZWJTZXJ2aWNlLkluc3RhbmNlLlByb3h5Q2FjaGU7DQotCQkJdmFyIGNyZWRlbnRpYWxDYWNo ZSA9IFdlYlNlcnZpY2UuSW5zdGFuY2UuQ3JlZGVudGlhbENhY2hlOw0KLQkJCXZhciBjcmVkZW50 aWFsUHJvdmlkZXIgPSBXZWJTZXJ2aWNlLkluc3RhbmNlLkNyZWRlbnRpYWxQcm92aWRlcjsNCisJ CQl2YXIgcHJveHlDYWNoZSA9IFdlYlNlcnZpY2UuUHJveHlDYWNoZTsKKwkJCXZhciBjcmVkZW50 aWFsQ2FjaGUgPSBXZWJTZXJ2aWNlLkNyZWRlbnRpYWxDYWNoZTsKKwkJCXZhciBjcmVkZW50aWFs UHJvdmlkZXIgPSBXZWJTZXJ2aWNlLkNyZWRlbnRpYWxQcm92aWRlcjsKIA0KIAkJCUh0dHBXZWJS ZXF1ZXN0IHByZXZpb3VzUmVxdWVzdCA9IG51bGw7DQogCQkJSUh0dHBXZWJSZXNwb25zZSBwcmV2 aW91c1Jlc3BvbnNlID0gbnVsbDsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZl bG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvV2ViU2VydmljZS5jcw0KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K QEAgLTIzLDQwICsyMyw0MiBAQAogLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKIC8vIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MgSU4KIC8vIFRIRSBTT0ZUV0FSRS4KKwogdXNpbmcgU3lzdGVtOwogdXNpbmcgU3lzdGVt LkxpbnE7CiAKIHVzaW5nIE1vbm8uQWRkaW5zOwordXNpbmcgU3lzdGVtLk5ldDsKIAogbmFtZXNw YWNlIE1vbm9EZXZlbG9wLkNvcmUuV2ViCiB7Ci0JcHVibGljIGNsYXNzIFdlYlNlcnZpY2UKKwlw dWJsaWMgc3RhdGljIGNsYXNzIFdlYlNlcnZpY2UKIAl7CiAJCWNvbnN0IHN0cmluZyBXZWJDcmVk ZW50aWFsUHJvdmlkZXJzUGF0aCA9ICIvTW9ub0RldmVsb3AvQ29yZS9XZWJDcmVkZW50aWFsUHJv dmlkZXJzIjsKIAotCQlzdGF0aWMgcmVhZG9ubHkgTGF6eTxXZWJTZXJ2aWNlPiBpbnN0YW5jZSA9 IG5ldyBMYXp5PFdlYlNlcnZpY2U+ICgoKSA9PiBuZXcgV2ViU2VydmljZSAoKSk7CisJCXB1Ymxp YyBzdGF0aWMgSVByb3h5Q2FjaGUgUHJveHlDYWNoZSB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KKwkJ cHVibGljIHN0YXRpYyBJQ3JlZGVudGlhbENhY2hlIENyZWRlbnRpYWxDYWNoZSB7IGdldDsgcHJp dmF0ZSBzZXQ7IH0KKwkJcHVibGljIHN0YXRpYyBJQ3JlZGVudGlhbFByb3ZpZGVyIENyZWRlbnRp YWxQcm92aWRlciB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KIAotCQlwdWJsaWMgc3RhdGljIFdlYlNl cnZpY2UgSW5zdGFuY2UgewotCQkJZ2V0IHsKLQkJCQlyZXR1cm4gaW5zdGFuY2UuVmFsdWU7Ci0J CQl9Ci0JCX0KKwkJaW50ZXJuYWwgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZSAoKQorCQl7CisJCQlD cmVkZW50aWFsQ2FjaGUgPSBuZXcgQ3JlZGVudGlhbFN0b3JlICgpOworCQkJUHJveHlDYWNoZSA9 IG5ldyBQcm94eUNhY2hlICgpOworCQkJQ3JlZGVudGlhbFByb3ZpZGVyID0gQWRkaW5NYW5hZ2Vy LkdldEV4dGVuc2lvbk9iamVjdHM8SUNyZWRlbnRpYWxQcm92aWRlcj4gKFdlYkNyZWRlbnRpYWxQ cm92aWRlcnNQYXRoKS5GaXJzdE9yRGVmYXVsdCAoKTsKIAotCQlwdWJsaWMgSVByb3h5Q2FjaGUg UHJveHlDYWNoZSB7IGdldDsgc2V0OyB9Ci0JCXB1YmxpYyBJQ3JlZGVudGlhbENhY2hlIENyZWRl bnRpYWxDYWNoZSB7IGdldDsgc2V0OyB9Ci0JCXB1YmxpYyBJQ3JlZGVudGlhbFByb3ZpZGVyIENy ZWRlbnRpYWxQcm92aWRlciB7IGdldDsgc2V0OyB9CisJCQlpZiAoQ3JlZGVudGlhbFByb3ZpZGVy ID09IG51bGwpIHsKKwkJCQlMb2dnaW5nU2VydmljZS5Mb2dXYXJuaW5nICgiTm8gcHJveHkgY3Jl ZGVudGlhbCBwcm92aWRlciB3YXMgZm91bmQiKTsKIAotCQlXZWJTZXJ2aWNlICgpIHt9CisJCQl9 CisJCX0KIAotCQlwdWJsaWMgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZSAoKQorCQljbGFzcyBOdWxs Q3JlZGVudGlhbHNQcm92aWRlciA6IElDcmVkZW50aWFsUHJvdmlkZXIKIAkJewotCQkJLy8gV2Ug Y2FuIGFjY2VzcyBleHRlbnNpb24gcG9pbnRzIG5vdywgc28gd2UgbmVlZCB0byBnZXQgdGhlIGNy ZWRlbnRpYWwgcHJvdmlkZXIsIHdoaWNoIGlzIHBsYXRmb3JtLXNwZWNpZmljLgotCQkJLy8gVGhl IGNyZWRlbnRpYWwgY2FjaGUgYW5kIHByb3h5IGNhY2hlIGFyZSBwdXJlIG1hbmFnZWQgaW1wbGVt ZW50YXRpb24uCi0JCQlJbnN0YW5jZS5DcmVkZW50aWFsQ2FjaGUgPSBDcmVkZW50aWFsU3RvcmUu SW5zdGFuY2U7Ci0JCQlJbnN0YW5jZS5Qcm94eUNhY2hlID0gV2ViLlByb3h5Q2FjaGUuSW5zdGFu Y2U7Ci0KLQkJCS8vIEdldCB0aGUgZmlyc3QgcmVnaXN0ZXJlZCBjcmVkZW50aWFsIHByb3ZpZGVy Ci0JCQlJbnN0YW5jZS5DcmVkZW50aWFsUHJvdmlkZXIgPSBBZGRpbk1hbmFnZXIuR2V0RXh0ZW5z aW9uT2JqZWN0czxJQ3JlZGVudGlhbFByb3ZpZGVyPiAoV2ViQ3JlZGVudGlhbFByb3ZpZGVyc1Bh dGgpLkZpcnN0T3JEZWZhdWx0ICgpOworCQkJcHVibGljIElDcmVkZW50aWFscyBHZXRDcmVkZW50 aWFscyAoCisJCQkJVXJpIHVyaSwgSVdlYlByb3h5IHByb3h5LCBDcmVkZW50aWFsVHlwZSBjcmVk ZW50aWFsVHlwZSwgSUNyZWRlbnRpYWxzIGV4aXN0aW5nQ3JlZGVudGlhbHMsIGJvb2wgcmV0cnlp bmcpCisJCQl7CisJCQkJcmV0dXJuIG51bGw7CisJCQl9CiAJCX0KIAl9CiB9DQoNCk1vZGlmaWVk OiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUvTW9ub0RldmVsb3AuQ29yZS9SdW50aW1l LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWMgc3RhdGljIHZvaWQgSW5p dGlhbGl6ZSAoYm9vbCB1cGRhdGVBZGRpblJlZ2lzdHJ5KQogCQkJCVN5bmNocm9uaXphdGlvbkNv bnRleHQuU2V0U3luY2hyb25pemF0aW9uQ29udGV4dCAobmV3IFN5bmNocm9uaXphdGlvbkNvbnRl eHQgKCkpOwogCiAJCQkvLyBIb29rIHVwIHRoZSBTU0wgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBj b2RlcGF0aAotCQkJU3lzdGVtLk5ldC5TZXJ2aWNlUG9pbnRNYW5hZ2VyLlNlcnZlckNlcnRpZmlj YXRlVmFsaWRhdGlvbkNhbGxiYWNrICs9IGRlbGVnYXRlKG9iamVjdCBzZW5kZXIsIFg1MDlDZXJ0 aWZpY2F0ZSBjZXJ0aWZpY2F0ZSwgWDUwOUNoYWluIGNoYWluLCBTc2xQb2xpY3lFcnJvcnMgc3Ns UG9saWN5RXJyb3JzKSB7CisJCQlTZXJ2aWNlUG9pbnRNYW5hZ2VyLlNlcnZlckNlcnRpZmljYXRl VmFsaWRhdGlvbkNhbGxiYWNrICs9IGRlbGVnYXRlKG9iamVjdCBzZW5kZXIsIFg1MDlDZXJ0aWZp Y2F0ZSBjZXJ0aWZpY2F0ZSwgWDUwOUNoYWluIGNoYWluLCBTc2xQb2xpY3lFcnJvcnMgc3NsUG9s aWN5RXJyb3JzKSB7CiAJCQkJaWYgKHNzbFBvbGljeUVycm9ycyA9PSBTc2xQb2xpY3lFcnJvcnMu Tm9uZSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJDQoNCiAgIENvbW1pdDogMDc2ZjFiOWQwYWYw NDBlYTc0N2JkMzM0MWYwOWEyZDg0ZWIyYjNmYQ0KICAgQXV0aG9yOiBNaWNoYWVsIEh1dGNoaW5z b24gPG0uai5odXRjaGluc29uQGdtYWlsLmNvbT4gKG1odXRjaCkNCiAgICAgRGF0ZTogMjAxMy0x MS0xOCAyMzo1MTo1NiBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9u b2RldmVsb3AvY29tbWl0LzA3NmYxYjlkMGFmMDQwZWE3NDdiZDMzNDFmMDlhMmQ4NGViMmIzZmEN Cg0KW21kLWFkZGluc10gQnVtcCB0byB0cmFjayBXZWJTZXJ2aWNlIEFQSQ0KDQpDaGFuZ2VkIHBh dGhzOgogIE0gdmVyc2lvbi1jaGVja3MKDQpNb2RpZmllZDogdmVyc2lvbi1jaGVja3MNCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCkBAIC0xNyw3ICsxNyw3IEBAIERFUFswXT1tZC1hZGRpbnMKIERFUF9OQU1FWzBdPU1E QURESU5TCiBERVBfUEFUSFswXT0ke3RvcF9zcmNkaXJ9Ly4uL21kLWFkZGlucwogREVQX01PRFVM RVswXT1naXRAZ2l0aHViLmNvbTp4YW1hcmluL21kLWFkZGlucy5naXQKLURFUF9ORUVERURfVkVS U0lPTlswXT00ZWEwNGRhNmIyMDdhZGFlZDU3OGIyNjlkOTg4ZjFhZTNmNjAyMWZhCitERVBfTkVF REVEX1ZFUlNJT05bMF09YzUxZWUzYjNlMWNkNDdmM2ZiMjg4NmI3MzFlZjk4ZTgzZTEzOGUyMQog REVQX0JSQU5DSF9BTkRfUkVNT1RFWzBdPSJtYXN0ZXIgb3JpZ2luL21hc3RlciIKIAogIyBoZWFw LXNob3QNCg0KICAgQ29tbWl0OiA2Mjg2YTEwZWIxZjYzZmM0OWM0MDIxZTFmYzFhMjZiNGZiYmFm ZDNkDQogICBBdXRob3I6IEFsZXggQ29ycmFkbyA8YWxleGNAeGFtYXJpbi5jb20+IChjaGtuKQ0K ICAgICBEYXRlOiAyMDEzLTExLTE5IDAyOjI4OjEzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dp dGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvNjI4NmExMGViMWY2M2ZjNDljNDAyMWUx ZmMxYTI2YjRmYmJhZmQzZA0KDQpbYnVpbGRdIEJ1bXAgbWQtYWRkaW5zIGFuZCB4d3QNCg0KQ2hh bmdlZCBwYXRoczoKICBNIG1haW4vZXh0ZXJuYWwveHd0CiAgTSB2ZXJzaW9uLWNoZWNrcwoNCk1v ZGlmaWVkOiBtYWluL2V4dGVybmFsL3h3dA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEgKzEgQEAKLVN1YnBy b2plY3QgY29tbWl0IGVmNTRkMDY1YzcyMWNlMDEzZDJkYzk2Mjg0NjI5NDQxYWJhMTY3MmIKK1N1 YnByb2plY3QgY29tbWl0IDBmNjU0MWY2NDg2NmI2ZjQ1ZWZkMTExZmExMTZhZGY5MzY5NGY0OGQN Cg0KTW9kaWZpZWQ6IHZlcnNpb24tY2hlY2tzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTcsNyArMTcsNyBA QCBERVBbMF09bWQtYWRkaW5zCiBERVBfTkFNRVswXT1NREFERElOUwogREVQX1BBVEhbMF09JHt0 b3Bfc3JjZGlyfS8uLi9tZC1hZGRpbnMKIERFUF9NT0RVTEVbMF09Z2l0QGdpdGh1Yi5jb206eGFt YXJpbi9tZC1hZGRpbnMuZ2l0Ci1ERVBfTkVFREVEX1ZFUlNJT05bMF09YzUxZWUzYjNlMWNkNDdm M2ZiMjg4NmI3MzFlZjk4ZTgzZTEzOGUyMQorREVQX05FRURFRF9WRVJTSU9OWzBdPWZmMjVlYTkw NzZiN2E4MGZiYjUyYmNkYTgyNzk0NTc5ZjJhYTU3NWIKIERFUF9CUkFOQ0hfQU5EX1JFTU9URVsw XT0ibWFzdGVyIG9yaWdpbi9tYXN0ZXIiCiAKICMgaGVhcC1zaG90DQoNCiAgIENvbW1pdDogNDRl YWFiMjIzNjIyNTRkZmNlYzMzNjM2Yjk0ZTVhNzM2YmFkNDM5NQ0KICAgQXV0aG9yOiBNaWtlIEty w7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4uY29tPiAobWtydWVnZXIpDQogICAgIERhdGU6IDIwMTMt MTEtMTkgMDU6MjY6NTEgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21v bm9kZXZlbG9wL2NvbW1pdC80NGVhYWIyMjM2MjI1NGRmY2VjMzM2MzZiOTRlNWE3MzZiYWQ0Mzk1 DQoNCkZpeGVkICdCdWcgMTYzMjMgLSBYUyBsb2NrcyB1cCB3aGVuIGdvaW5nIHRvIGRlY2xhcmF0 aW9uICcuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklk ZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcwoNCk1vZGlm aWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5 c3RlbS9UeXBlU3lzdGVtU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTIxNjIsNyArMjE2Miwx MCBAQCBpbnRlcm5hbCB2b2lkIEVuc3VyZUFzc2VtYmx5TG9hZGVkICgpCiAJCQkJbG9jayAoYXNt TG9ja2VyKSB7CiAJCQkJCWlmIChhc3NlbWJseSAhPSBudWxsKQogCQkJCQkJcmV0dXJuOwotCQkJ CQlhc3NlbWJseSA9IExvYWRBc3NlbWJseSAoKSA/PyBuZXcgRGVmYXVsdFVucmVzb2x2ZWRBc3Nl bWJseSAoZmlsZU5hbWUpOworCQkJCQlhc3NlbWJseSA9IG5ldyBEZWZhdWx0VW5yZXNvbHZlZEFz c2VtYmx5IChmaWxlTmFtZSk7CisKKwkJCQkJYXNzZW1ibHkgPSBMb2FkQXNzZW1ibHkgKCkgPz8g YXNzZW1ibHk7IAorCiAJCQkJCU9uTG9hZCAoRXZlbnRBcmdzLkVtcHR5KTsKIAkJCQl9CiAJCQl9 DQoNCiAgIENvbW1pdDogODRmN2I0Mjg1MTZjNjE3YWE2MzczOGUzMTllNTIxZTk4ODA0OWRmMA0K ICAgQXV0aG9yOiBBbGFuIE1jR292ZXJuIDxhbGFuQHhhbWFyaW4uY29tPiAoYWxhbm1jZ292ZXJu KQ0KICAgICBEYXRlOiAyMDEzLTExLTE5IDE5OjQ2OjE5IEdNVA0KICAgICAgVVJMOiBodHRwczov L2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvODRmN2I0Mjg1MTZjNjE3YWE2Mzcz OGUzMTllNTIxZTk4ODA0OWRmMA0KDQpbYnVpbGRdIE5vcm1hbCB2ZXJib3NpdHkgYnkgZGVmYXVs dA0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi94YnVpbGQuaW5jbHVkZQoNCk1vZGlmaWVkOiBt YWluL3hidWlsZC5pbmNsdWRlDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTQsNyArMTQsNyBAQCBQUk9GSUxF X05BTUU9RGVidWdXaW4zMgogZW5kaWYKIAogWEJVSUxEPXhidWlsZAotWEJVSUxEX1ZFUkJPU0lU WT1xdWlldAorWEJVSUxEX1ZFUkJPU0lUWT1ub3JtYWwKIFhCVUlMRF9BUkdTPS92ZXJib3NpdHk6 JChYQlVJTERfVkVSQk9TSVRZKSAvbm9sb2dvIC9wcm9wZXJ0eTpDb2RlUGFnZT02NTAwMQogWEJV SUxEX1BST0ZJTEU9L3Byb3BlcnR5OkNvbmZpZ3VyYXRpb249JChQUk9GSUxFX05BTUUpCiANCg0K ICAgQ29tbWl0OiAwMDk2NzYxMTM2ZGU0Nzc3Y2FmZGM4MzA3OWYyYzhiMzQ5NDNhYjhkDQogICBB dXRob3I6IGtqbmlsc3NvbiA8a2puaWxzc29uQGdtYWlsLmNvbT4gKGtqbmlsc3NvbikNCiAgICAg RGF0ZTogMjAxMy0xMS0xOSAxOTo0OToxMCBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIu Y29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzAwOTY3NjExMzZkZTQ3NzdjYWZkYzgzMDc5ZjJj OGIzNDk0M2FiOGQNCg0KMTYzMDcgLSByZXNldCBtb3Rpb24gYWZ0ZXIgYWN0aW9ucw0KDQpDaGFu Z2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9uby5UZXh0RWRp dG9yLlZpL1ZpTW9kZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm8uVGV4dGVkaXRv ci9Nb25vLlRleHRFZGl0b3IuVmkvVmlNb2RlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjUyLDcgKzI1 Miw3IEBAIHZvaWQgUmVzZXQgKHN0cmluZyBzdGF0dXMpCiAJCXsKIAkJCUN1clN0YXRlID0gU3Rh dGUuTm9ybWFsOwogCQkJUmVzZXRFZGl0b3JTdGF0ZSAoRGF0YSk7Ci0JCQkKKwkJCW1vdGlvbiA9 IE1vdGlvbi5Ob25lOwogCQkJY29tbWFuZEJ1ZmZlci5MZW5ndGggPSAwOwogCQkJU3RhdHVzID0g c3RhdHVzOwogCQl9CkBAIC02MTcsNiArNjE3LDcgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQg SGFuZGxlS2V5cHJlc3MgKEdkay5LZXkga2V5LCB1aW50IHVuaWNvZGVLZXksIEdkay5Nb2RpZmkK IAkJCQkJCVJ1bkFjdGlvbnMgKGFjdGlvbiwgQ2xpcGJvYXJkQWN0aW9ucy5DdXQpOwogCQkJCQlT dGF0dXMgPSAiLS0gSU5TRVJUIC0tIjsKIAkJCQkJQ3VyU3RhdGUgPSBTdGF0ZS5JbnNlcnQ7CisJ CQkJCW1vdGlvbiA9IE1vdGlvbi5Ob25lOwogCQkJCQlDYXJldC5Nb2RlID0gQ2FyZXRNb2RlLklu c2VydDsKIAkJCQl9IGVsc2UgewogCQkJCQlSZXNldCAoIlVucmVjb2duaXNlZCBtb3Rpb24iKTsN Cg0KICAgQ29tbWl0OiA1ODA3Y2FhOTgwYzM3NmM5MzRhZWUxOTlmMTI0YmE5NTdlNWE0M2U0DQog ICBBdXRob3I6IE1pY2hhZWwgSHV0Y2hpbnNvbiA8bS5qLmh1dGNoaW5zb25AZ21haWwuY29tPiAo bWh1dGNoKQ0KICAgICBEYXRlOiAyMDEzLTExLTE5IDIyOjQ1OjMwIEdNVA0KICAgICAgVVJMOiBo dHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvNTgwN2NhYTk4MGMzNzZj OTM0YWVlMTk5ZjEyNGJhOTU3ZTVhNDNlNA0KDQpNZXJnZSBwdWxsIHJlcXVlc3QgIzQzOCBmcm9t IGtqbmlsc3Nvbi9tYXN0ZXIKCjE2MzA3IC0gdmkgbW9kZSAtIHJlc2V0IG1vdGlvbiBhZnRlciBh Y3Rpb25zDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9jb3JlL01vbm8uVGV4dGVkaXRv ci9Nb25vLlRleHRFZGl0b3IuVmkvVmlNb2RlLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUv TW9uby5UZXh0ZWRpdG9yL01vbm8uVGV4dEVkaXRvci5WaS9WaU1vZGUuY3MNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBSZXNldCAoc3RyaW5nIHN0YXR1cykKIAkJewogCQkJ Q3VyU3RhdGUgPSBTdGF0ZS5Ob3JtYWw7CiAJCQlSZXNldEVkaXRvclN0YXRlIChEYXRhKTsKLQkJ CQorCQkJbW90aW9uID0gTW90aW9uLk5vbmU7CiAJCQljb21tYW5kQnVmZmVyLkxlbmd0aCA9IDA7 CiAJCQlTdGF0dXMgPSBzdGF0dXM7CiAJCX0KQEAgLTYxNyw2ICs2MTcsNyBAQCBwcm90ZWN0ZWQg b3ZlcnJpZGUgdm9pZCBIYW5kbGVLZXlwcmVzcyAoR2RrLktleSBrZXksIHVpbnQgdW5pY29kZUtl eSwgR2RrLk1vZGlmaQogCQkJCQkJUnVuQWN0aW9ucyAoYWN0aW9uLCBDbGlwYm9hcmRBY3Rpb25z LkN1dCk7CiAJCQkJCVN0YXR1cyA9ICItLSBJTlNFUlQgLS0iOwogCQkJCQlDdXJTdGF0ZSA9IFN0 YXRlLkluc2VydDsKKwkJCQkJbW90aW9uID0gTW90aW9uLk5vbmU7CiAJCQkJCUNhcmV0Lk1vZGUg PSBDYXJldE1vZGUuSW5zZXJ0OwogCQkJCX0gZWxzZSB7CiAJCQkJCVJlc2V0ICgiVW5yZWNvZ25p c2VkIG1vdGlvbiIpOw0KDQogICBDb21taXQ6IDY4NDgxZTgzNjlkNjU1YzI5ZDE3MjYwYmYxMzM5 MWUzN2ZhNzBjNzgNCiAgIEF1dGhvcjogVGhlcnpvayA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRo ZXJ6b2spDQogICAgIERhdGU6IDIwMTMtMTEtMjAgMDE6MTk6MTYgR01UDQogICAgICBVUkw6IGh0 dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC82ODQ4MWU4MzY5ZDY1NWMy OWQxNzI2MGJmMTMzOTFlMzdmYTcwYzc4DQoNCltNb25vQWRkaW5zXSBCdW1wIHJldmlzaW9uIGZv ciBidWcgMTQ0MjEuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL21vbm8tYWRk aW5zCg0KTW9kaWZpZWQ6IG1haW4vZXh0ZXJuYWwvbW9uby1hZGRpbnMNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBA IC0xICsxIEBACi1TdWJwcm9qZWN0IGNvbW1pdCAwYTFjMGEwNmVkNzM4MTkwNmEyNzQ2NmFmYTkx YmQ4MjRmNzVkZTAyCitTdWJwcm9qZWN0IGNvbW1pdCAyMWQ3MTVhZGVkYWE5YThiYzEyNTVkZTdk ZGYwZDI0NDU2MjJjMTg3DQoNCiAgIENvbW1pdDogZDlmYTBjMDY5YmJiMGMzNDRmMWY0MGRjNTFk ZWRkOGY1MGM3OGMwMg0KICAgQXV0aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4u Y29tPiAobWtydWVnZXIpDQogICAgIERhdGU6IDIwMTMtMTEtMjAgMDY6NTI6MjggR01UDQogICAg ICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9kOWZhMGMw NjliYmIwYzM0NGYxZjQwZGM1MWRlZGQ4ZjUwYzc4YzAyDQoNCkZpeGVkICdCdWcgMTYzMzIgLSBE dXBsaWNhdGUgQk9NISAnLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL01v bm9EZXZlbG9wLlNvdXJjZUVkaXRvcjIvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yL1NvdXJjZUVk aXRvclZpZXcuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9uby5UZXh0ZWRpdG9yL01vbm8uVGV4dEVk aXRvci5VdGlscy9UZXh0RmlsZVV0aWxpdHkuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVs b3AuVGV4dEVkaXRvci5UZXN0cy9Nb25vLlRleHRFZGl0b3IuVGVzdHMvVGV4dEZpbGVSZWFkZXJU ZXN0cy5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuU291cmNlRWRp dG9yMi9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IvU291cmNlRWRpdG9yVmlldy5jcw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KQEAgLTgzNSw5ICs4MzUsOSBAQCBwdWJsaWMgdm9pZCBMb2FkIChzdHJpbmcgZmlsZU5h bWUsIEVuY29kaW5nIGxvYWRFbmNvZGluZywgYm9vbCByZWxvYWQgPSBmYWxzZSkKIAkJCWVsc2Ug ewogCQkJCWluTG9hZCA9IHRydWU7CiAJCQkJaWYgKGxvYWRFbmNvZGluZyA9PSBudWxsKSB7Ci0J CQkJCXRleHQgPSBUZXh0RmlsZVV0aWxpdHkuUmVhZEFsbFRleHQgKGZpbGVOYW1lLCBvdXQgaGFk Qm9tLCBvdXQgdGhpcy5lbmNvZGluZyk7Ci0JCQkJfQotCQkJCWVsc2UgeworCQkJCQl0ZXh0ID0g VGV4dEZpbGVVdGlsaXR5LlJlYWRBbGxUZXh0IChmaWxlTmFtZSwgb3V0IGhhZEJvbSwgb3V0IGVu Y29kaW5nKTsKKwkJCQl9IGVsc2UgeworCQkJCQllbmNvZGluZyA9IGxvYWRFbmNvZGluZzsKIAkJ CQkJdGV4dCA9IFRleHRGaWxlVXRpbGl0eS5SZWFkQWxsVGV4dCAoZmlsZU5hbWUsIGxvYWRFbmNv ZGluZywgb3V0IGhhZEJvbSk7CiAJCQkJfQogCQkJCWlmIChyZWxvYWQpIHsNCg0KTW9kaWZpZWQ6 IG1haW4vc3JjL2NvcmUvTW9uby5UZXh0ZWRpdG9yL01vbm8uVGV4dEVkaXRvci5VdGlscy9UZXh0 RmlsZVV0aWxpdHkuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNTYsNiArMTU2LDI1IEBAIHB1YmxpYyBz dGF0aWMgc3RyaW5nIEdldFRleHQgKGJ5dGVbXSBieXRlcywgb3V0IEVuY29kaW5nIGVuY29kaW5n LCBvdXQgYm9vbCBoYWRCCiAJCQl9CiAJCX0KIAorCQlwdWJsaWMgc3RhdGljIHN0cmluZyBHZXRU ZXh0IChieXRlW10gYnl0ZXMsIEVuY29kaW5nIGVuY29kaW5nLCBvdXQgYm9vbCBoYWRCb20pCisJ CXsKKwkJCWJ5dGVbXSBib20gPSBlbmNvZGluZy5HZXRQcmVhbWJsZSAoKTsKKwkJCWlmIChib20g IT0gbnVsbCAmJiBib20uTGVuZ3RoID4gMCAmJiBib20uTGVuZ3RoIDw9IGJ5dGVzLkxlbmd0aCkg eworCQkJCWhhZEJvbSA9IHRydWU7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBib20uTGVuZ3Ro OyBpKyspIHsKKwkJCQkJaWYgKGJ5dGVzIFtpXSAhPSBib20gW2ldKSB7CisJCQkJCQloYWRCb20g PSBmYWxzZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlo YWRCb20gPSBmYWxzZTsKKwkJCX0KKwkJCWlmIChoYWRCb20pIAorCQkJCXJldHVybiBlbmNvZGlu Zy5HZXRTdHJpbmcgKGJ5dGVzLCBib20uTGVuZ3RoLCBieXRlcy5MZW5ndGggLSBib20uTGVuZ3Ro KTsKKwkJCXJldHVybiBlbmNvZGluZy5HZXRTdHJpbmcgKGJ5dGVzKTsKKwkJfQorCiAJCXB1Ymxp YyBzdGF0aWMgc3RyaW5nIEdldFRleHQgKFN0cmVhbSBpbnB1dFN0cmVhbSkKIAkJewogCQkJdXNp bmcgKHZhciBzdHJlYW0gPSBPcGVuU3RyZWFtIChpbnB1dFN0cmVhbSkpIHsKQEAgLTMwMywyMSAr MzIyLDggQEAgcHVibGljIHN0YXRpYyBzdHJpbmcgUmVhZEFsbFRleHQgKHN0cmluZyBmaWxlTmFt ZSwgRW5jb2RpbmcgZW5jb2RpbmcsIG91dCBib29sIGgKIAkJCQl0aHJvdyBuZXcgQXJndW1lbnRO dWxsRXhjZXB0aW9uICgiZW5jb2RpbmciKTsKIAkJCQogCQkJYnl0ZVtdIGNvbnRlbnQgPSBGaWxl LlJlYWRBbGxCeXRlcyAoZmlsZU5hbWUpOwotCQkJYnl0ZVtdIGJvbSA9IGVuY29kaW5nLkdldFBy ZWFtYmxlICgpOwotCQkJaWYgKGJvbSAhPSBudWxsICYmIGJvbS5MZW5ndGggPiAwICYmIGJvbS5M ZW5ndGggPD0gY29udGVudC5MZW5ndGgpIHsKLQkJCQloYWRCb20gPSB0cnVlOwotCQkJCWZvciAo aW50IGkgPSAwOyBpIDwgYm9tLkxlbmd0aDsgaSsrKSB7Ci0JCQkJCWlmIChjb250ZW50IFtpXSAh PSBib20gW2ldKSB7Ci0JCQkJCQloYWRCb209IGZhbHNlOwotCQkJCQkJYnJlYWs7Ci0JCQkJCX0K LQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCWhhZEJvbSA9IGZhbHNlOwotCQkJfQotCQkJcmV0dXJu IGVuY29kaW5nLkdldFN0cmluZyAoY29udGVudCk7CisJCQlyZXR1cm4gR2V0VGV4dCAoY29udGVu dCwgZW5jb2RpbmcsIG91dCBoYWRCb20pOyAKIAkJfQotCiAJCSNlbmRyZWdpb24KIAogCQkjcmVn aW9uIEFTQ0lJIGVuY29kaW5nIGNoZWNrDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9E ZXZlbG9wLlRleHRFZGl0b3IuVGVzdHMvTW9uby5UZXh0RWRpdG9yLlRlc3RzL1RleHRGaWxlUmVh ZGVyVGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNDMsNiArMTQzLDE4IEBAIHB1YmxpYyB2b2lk IFRlc3RHQjE4MDMwICgpCiAJCQlieXRlW10gaW5wdXQgPSBFbmNvZGluZy5HZXRFbmNvZGluZyAo NTQ5MzYpLkdldEJ5dGVzIChzcmMpOwogCQkJQXNzZXJ0LkFyZUVxdWFsIChzcmMsIFRleHRGaWxl VXRpbGl0eS5HZXRUZXh0IChpbnB1dCkpOwogCQl9CisKKwkJLy8vIDxzdW1tYXJ5PgorCQkvLy8g QnVnIDE2MzMyIC0gRHVwbGljYXRlIEJPTSEgCisJCS8vLyA8L3N1bW1hcnk+CisJCVtUZXN0KCld CisJCXB1YmxpYyB2b2lkIFRlc3RCdWcxNjMzMiAoKQkKKwkJeworCQkJYnl0ZVtdIGlucHV0ID0g bmV3IGJ5dGVbXSB7IDB4RUYsIDB4QkIsIDB4QkYsIChieXRlKSdhJ307CisJCQlib29sIGhhZEJv bTsKKwkJCUFzc2VydC5BcmVFcXVhbCAoImEiLCBUZXh0RmlsZVV0aWxpdHkuR2V0VGV4dCAoaW5w dXQsIEVuY29kaW5nLlVURjgsIG91dCBoYWRCb20pKTsKKwkJCUFzc2VydC5Jc1RydWUgKGhhZEJv bSk7CisJCX0KIAl9CiB9CiANCg0KICAgQ29tbWl0OiBlMGVmNTE2MGJhMTMwN2JlNzY2OWJhOWJi ZWRmNjljNmQ1YjhlNmRhDQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJp bi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTogMjAxMy0xMS0yMCAwNzowMjoxOCBHTVQNCiAg ICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2UwZWY1 MTYwYmExMzA3YmU3NjY5YmE5YmJlZGY2OWM2ZDViOGU2ZGENCg0KW0lkZV0gTmV3bHkgY3JlYXRl ZCBmaWxlcyBhbHdheXMgY3JlYXRlIGEgQk9NLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9z cmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlRlbXBsYXRlcy9TaW5nbGVG aWxlRGVzY3JpcHRpb25UZW1wbGF0ZS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9E ZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVGVtcGxhdGVzL1NpbmdsZUZpbGVEZXNjcmlwdGlv blRlbXBsYXRlLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjcyLDcgKzI3MiwxMSBAQCBwdWJsaWMgdmly dHVhbCBTdHJlYW0gQ3JlYXRlRmlsZUNvbnRlbnQgKFNvbHV0aW9uSXRlbSBwb2xpY3lQYXJlbnQs IFByb2plY3QgcHJvagogCQkJCQljb250ZW50ID0gZm9ybWF0dGVkOwogCQkJfQogCQkJCi0JCQlN ZW1vcnlTdHJlYW0gbXMgPSBuZXcgTWVtb3J5U3RyZWFtICgpOworCQkJdmFyIG1zID0gbmV3IE1l bW9yeVN0cmVhbSAoKTsKKworCQkJdmFyIGJvbSA9IEVuY29kaW5nLlVURjguR2V0UHJlYW1ibGUg KCk7CisJCQltcy5Xcml0ZSAoYm9tLCAwLCBib20uTGVuZ3RoKTsKKwogCQkJYnl0ZVtdIGRhdGE7 CiAJCQlpZiAoQWRkU3RhbmRhcmRIZWFkZXIpIHsKIAkJCQlzdHJpbmcgaGVhZGVyID0gU3RhbmRh cmRIZWFkZXJTZXJ2aWNlLkdldEhlYWRlciAocG9saWN5UGFyZW50LCBmaWxlTmFtZSwgdHJ1ZSk7 DQoNCiAgIENvbW1pdDogNmI1MzE0NGY5OTA3NDE1YWVkMmM1Njk4YmI4ZDA5MmM0Zjk4NDliYg0K ICAgQXV0aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4uY29tPiAobWtydWVnZXIp DQogICAgIERhdGU6IDIwMTMtMTEtMjAgMDc6MjI6MzQgR01UDQogICAgICBVUkw6IGh0dHBzOi8v Z2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC82YjUzMTQ0Zjk5MDc0MTVhZWQyYzU2 OThiYjhkMDkyYzRmOTg0OWJiDQoNCltTb3VyY2VFZGl0b3JdIEZpeGVkIGEgYnVnIHdoZXJlIHRo ZSBCT00gY291bGQgZ2V0IHJlbW92ZWQuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9h ZGRpbnMvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yMi9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3Iv U291cmNlRWRpdG9yVmlldy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLlNvdXJj ZUVkaXRvcjIvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yL1NvdXJjZUVkaXRvcldpZGdldC5jcwoN Ck1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yMi9Nb25v RGV2ZWxvcC5Tb3VyY2VFZGl0b3IvU291cmNlRWRpdG9yVmlldy5jcw0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAg LTY5MiwxMSArNjkyLDE1IEBAIHB1YmxpYyB2b2lkIFNhdmUgKHN0cmluZyBmaWxlTmFtZSwgRW5j b2RpbmcgZW5jb2RpbmcpCiAJCQkJCXZhciB3cml0ZUJvbSA9IGhhZEJvbTsKIAkJCQkJdmFyIHdy aXRlVGV4dCA9IERvY3VtZW50LlRleHQ7CiAJCQkJCWlmICh3cml0ZUVuY29kaW5nID09IG51bGwp IHsKLQkJCQkJCXdyaXRlRW5jb2RpbmcgPSBFbmNvZGluZy5VVEY4OwotCQkJCQkJLy8gRGlzYWJs ZWQuIFNob3dzIHVwIGluIHRoZSBzb3VyY2UgY29udHJvbCBhcyBkaWZmLCBpdCdzIGF0bSBjb25m dXNpbmcgZm9yIHRoZSB1c2VycyB0byBzZWUgYSBjaGFuZ2Ugd2l0aG91dAotCQkJCQkJLy8gY2hh bmdlZCBmaWxlcy4KLQkJCQkJCXdyaXRlQm9tID0gZmFsc2U7Ci0vLwkJCQkJCXdyaXRlQm9tID0h TW9uby5UZXh0RWRpdG9yLlV0aWxzLlRleHRGaWxlVXRpbGl0eS5Jc0FTQ0lJICh3cml0ZVRleHQp OworCQkJCQkJaWYgKHRoaXMuZW5jb2RpbmcgIT0gbnVsbCkgeworCQkJCQkJCXdyaXRlRW5jb2Rp bmcgPSB0aGlzLmVuY29kaW5nOworCQkJCQkJfSBlbHNlIHsgCisJCQkJCQkJd3JpdGVFbmNvZGlu ZyA9IEVuY29kaW5nLlVURjg7CisJCQkJCQkJLy8gRGlzYWJsZWQuIFNob3dzIHVwIGluIHRoZSBz b3VyY2UgY29udHJvbCBhcyBkaWZmLCBpdCdzIGF0bSBjb25mdXNpbmcgZm9yIHRoZSB1c2VycyB0 byBzZWUgYSBjaGFuZ2Ugd2l0aG91dAorCQkJCQkJCS8vIGNoYW5nZWQgZmlsZXMuCisJCQkJCQkJ d3JpdGVCb20gPSBmYWxzZTsKKwkvLwkJCQkJCXdyaXRlQm9tID0hTW9uby5UZXh0RWRpdG9yLlV0 aWxzLlRleHRGaWxlVXRpbGl0eS5Jc0FTQ0lJICh3cml0ZVRleHQpOworCQkJCQkJfQogCQkJCQl9 CiAJCQkJCU1vbm8uVGV4dEVkaXRvci5VdGlscy5UZXh0RmlsZVV0aWxpdHkuV3JpdGVUZXh0IChm aWxlTmFtZSwgd3JpdGVUZXh0LCB3cml0ZUVuY29kaW5nLCB3cml0ZUJvbSk7CiAJCQkJfSBjYXRj aCAoSW52YWxpZEVuY29kaW5nRXhjZXB0aW9uKSB7CkBAIC05MTAsNyArOTE0LDcgQEAgaW50ZXJu YWwgdm9pZCBTdG9yZVNldHRpbmdzICgpCiAKIAkJYm9vbCB3YXJuT3ZlcndyaXRlID0gZmFsc2U7 CiAJCWJvb2wgaW5Mb2FkID0gZmFsc2U7Ci0JCUVuY29kaW5nIGVuY29kaW5nID0gbnVsbDsKKwkJ RW5jb2RpbmcgZW5jb2Rpbmc7CiAJCWJvb2wgaGFkQm9tID0gZmFsc2U7CiAKIAkJaW50ZXJuYWwg dm9pZCBSZXBsYWNlQ29udGVudCAoc3RyaW5nIGZpbGVOYW1lLCBzdHJpbmcgY29udGVudCwgRW5j b2RpbmcgZW5jb2RpbmcpDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3Au U291cmNlRWRpdG9yMi9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IvU291cmNlRWRpdG9yV2lkZ2V0 LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpAQCAtOTI3LDcgKzkyNyw3IEBAIGludGVybmFsIHZvaWQgQ29udmVy dExpbmVFbmRpbmdzICgpCiAJCQkJCW5ld1RleHQuQXBwZW5kIChjb3JyZWN0RW9sKTsKIAkJCX0K IAkJCXZpZXcuU3RvcmVTZXR0aW5ncyAoKTsKLQkJCXZpZXcuUmVwbGFjZUNvbnRlbnQgKERvY3Vt ZW50LkZpbGVOYW1lLCBuZXdUZXh0LlRvU3RyaW5nICgpLCBudWxsKTsKKwkJCXZpZXcuUmVwbGFj ZUNvbnRlbnQgKERvY3VtZW50LkZpbGVOYW1lLCBuZXdUZXh0LlRvU3RyaW5nICgpLCB2aWV3LlNv dXJjZUVuY29kaW5nKTsKIAkJCURvY3VtZW50Lkhhc0xpbmVFbmRpbmdNaXNtYXRjaE9uVGV4dFNl dCA9IGZhbHNlOwogCQkJdmlldy5Mb2FkU2V0dGluZ3MgKCk7CiAJCX0KQEAgLTEwNzMsNyArMTA3 Myw3IEBAIHB1YmxpYyB2b2lkIFNob3dBdXRvU2F2ZVdhcm5pbmcgKHN0cmluZyBmaWxlTmFtZSkK IAkJCQkJCUF1dG9TYXZlLlJlbW92ZUF1dG9TYXZlRmlsZSAoZmlsZU5hbWUpOwogCQkJCQkJVGV4 dEVkaXRvci5HcmFiRm9jdXMgKCk7CiAJCQkJCQl2aWV3LkxvYWQgKGZpbGVOYW1lKTsKLQkJCQkJ CXZpZXcuUmVwbGFjZUNvbnRlbnQgKGZpbGVOYW1lLCBjb250ZW50LCBudWxsKTsKKwkJCQkJCXZp ZXcuUmVwbGFjZUNvbnRlbnQgKGZpbGVOYW1lLCBjb250ZW50LCB2aWV3LlNvdXJjZUVuY29kaW5n KTsKIAkJCQkJCXZpZXcuV29ya2JlbmNoV2luZG93LkRvY3VtZW50LlJlcGFyc2VEb2N1bWVudCAo KTsKIAkJCQkJCXZpZXcuSXNEaXJ0eSA9IHRydWU7CiAJCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBl eCkgew0KDQogICBDb21taXQ6IDk1OGM2ZjQzMjI2ODgxZjBiNDhhMjdhYTgwZGJkZmQ5MDkwYmQz OTYNCiAgIEF1dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1ZWdlckB4YW1hcmluLmNvbT4gKG1rcnVl Z2VyKQ0KICAgICBEYXRlOiAyMDEzLTExLTIwIDA4OjM1OjI3IEdNVA0KICAgICAgVVJMOiBodHRw czovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvOTU4YzZmNDMyMjY4ODFmMGI0 OGEyN2FhODBkYmRmZDkwOTBiZDM5Ng0KDQpGaXhlZCAnQnVnIDE2MDgzIC0gIkZpbmQgUmVmZXJl bmNlcyIgZmFpbHMgaWYgZmlsZXMgYXJlIG1vdmVkJy4NCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1h aW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5SZWZhY3Rvcmlu Zy9DU2hhcnBSZWZlcmVuY2VGaW5kZXIuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NT aGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1NoYXJwLlJlZmFjdG9yaW5nL0NTaGFycFJlZmVyZW5j ZUZpbmRlci5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ1NoYXJwUmVm ZXJlbmNlRmluZGVyIDogUmVmZXJlbmNlRmluZGVyCiAJCUxpc3Q8RmlsZVBhdGg+IGZpbGVzID0g bmV3IExpc3Q8RmlsZVBhdGg+ICgpOwogCQlMaXN0PFR1cGxlPEZpbGVQYXRoLCBNb25vRGV2ZWxv cC5JZGUuR3VpLkRvY3VtZW50Pj4gb3BlbkRvY3VtZW50cyA9IG5ldyBMaXN0PFR1cGxlPEZpbGVQ YXRoLCBNb25vRGV2ZWxvcC5JZGUuR3VpLkRvY3VtZW50Pj4gKCk7CiAJCQotCQlzdHJpbmcgbWVt YmVyTmFtZTsNCisJCXN0cmluZyBtZW1iZXJOYW1lOwogCQlzdHJpbmcga2V5d29yZE5hbWU7CiAJ CQogCQlwdWJsaWMgQ1NoYXJwUmVmZXJlbmNlRmluZGVyICgpCkBAIC02MywxNyArNjMsMTcgQEAg cHVibGljIENTaGFycFJlZmVyZW5jZUZpbmRlciAoKQogCQlwdWJsaWMgdm9pZCBTZXRTZWFyY2hl ZE1lbWJlcnMgKElFbnVtZXJhYmxlPG9iamVjdD4gbWVtYmVycykKIAkJewogCQkJc2VhcmNoZWRN ZW1iZXJzID0gbmV3IExpc3Q8b2JqZWN0PiAobWVtYmVycyk7Ci0JCQl2YXIgZmlyc3RNZW1iZXIg PSBzZWFyY2hlZE1lbWJlcnMuRmlyc3RPckRlZmF1bHQgKCk7DQotCQkJaWYgKGZpcnN0TWVtYmVy IGlzIElOYW1lZEVsZW1lbnQpIHsNCisJCQl2YXIgZmlyc3RNZW1iZXIgPSBzZWFyY2hlZE1lbWJl cnMuRmlyc3RPckRlZmF1bHQgKCk7CisJCQlpZiAoZmlyc3RNZW1iZXIgaXMgSU5hbWVkRWxlbWVu dCkgewogCQkJCXZhciBuYW1lZEVsZW1lbnQgPSAoSU5hbWVkRWxlbWVudClmaXJzdE1lbWJlcjsK IAkJCQl2YXIgbmFtZSA9IG5hbWVkRWxlbWVudC5OYW1lOwogCQkJCWlmIChuYW1lZEVsZW1lbnQg aXMgSU1ldGhvZCAmJiAoKChJTWV0aG9kKW5hbWVkRWxlbWVudCkuSXNDb25zdHJ1Y3RvciB8ICgo SU1ldGhvZCluYW1lZEVsZW1lbnQpLklzRGVzdHJ1Y3RvcikpCiAJCQkJCW5hbWUgPSAoKElNZXRo b2QpbmFtZWRFbGVtZW50KS5EZWNsYXJpbmdUeXBlLk5hbWU7Ci0JCQkJbWVtYmVyTmFtZSA9IG5h bWU7DQotDQotCQkJCWtleXdvcmROYW1lID0gQ1NoYXJwQW1iaWVuY2UuTmV0VG9DU2hhcnBUeXBl TmFtZSAobmFtZWRFbGVtZW50LkZ1bGxOYW1lKTsNCi0JCQkJaWYgKGtleXdvcmROYW1lID09IG5h bWVkRWxlbWVudC5GdWxsTmFtZSkNCi0JCQkJCWtleXdvcmROYW1lID0gbnVsbDsNCisJCQkJbWVt YmVyTmFtZSA9IG5hbWU7CisKKwkJCQlrZXl3b3JkTmFtZSA9IENTaGFycEFtYmllbmNlLk5ldFRv Q1NoYXJwVHlwZU5hbWUgKG5hbWVkRWxlbWVudC5GdWxsTmFtZSk7CisJCQkJaWYgKGtleXdvcmRO YW1lID09IG5hbWVkRWxlbWVudC5GdWxsTmFtZSkKKwkJCQkJa2V5d29yZE5hbWUgPSBudWxsOwog CQkJfQogCQkJaWYgKGZpcnN0TWVtYmVyIGlzIHN0cmluZykKIAkJCQltZW1iZXJOYW1lID0gZmly c3RNZW1iZXIuVG9TdHJpbmcgKCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgTWVtYmVyUmVmZXJlbmNl IEdldFJlZmVyZW5jZSAoUHJvamVjdCBwcm9qZWN0LCBSZXNvbHZlUmVzdWx0IHJlc3VsdCwgQXN0 Tm9kZSBub2QKIAkJc2tpcDoKIAogCQkJdmFyIHJlZ2lvbiA9IG5ldyBEb21SZWdpb24gKGZpbGVO YW1lLCBub2RlLlN0YXJ0TG9jYXRpb24sIG5vZGUuRW5kTG9jYXRpb24pOwotDQorCiAJCQl2YXIg bGVuZ3RoID0gbm9kZSBpcyBQcmltaXRpdmVUeXBlID8ga2V5d29yZE5hbWUuTGVuZ3RoIDogbm9k ZS5FbmRMb2NhdGlvbi5Db2x1bW4gLSBub2RlLlN0YXJ0TG9jYXRpb24uQ29sdW1uOwogCQkJaWYg KHZhbGlkID09IG51bGwpCiAJCQkJdmFsaWQgPSBzZWFyY2hlZE1lbWJlcnMuRmlyc3RPckRlZmF1 bHQgKCk7CkBAIC0zMDQsNyArMzA0LDEyIEBAIHB1YmxpYyBvdmVycmlkZSBJRW51bWVyYWJsZTxN ZW1iZXJSZWZlcmVuY2U+IEZpbmRSZWZlcmVuY2VzIChQcm9qZWN0IHByb2plY3QsIElQCiAJCQlm b3JlYWNoICh2YXIgZmlsZSBpbiBmaWxlcykgewogCQkJCWlmIChtb25pdG9yICE9IG51bGwpCiAJ CQkJCW1vbml0b3IuU3RlcCAoMSk7Ci0JCQkJc3RyaW5nIHRleHQgPSBNb25vLlRleHRFZGl0b3Iu VXRpbHMuVGV4dEZpbGVVdGlsaXR5LlJlYWRBbGxUZXh0IChmaWxlKTsKKwkJCQlzdHJpbmcgdGV4 dDsKKwkJCQl0cnkgeworCQkJCQl0ZXh0ID0gTW9uby5UZXh0RWRpdG9yLlV0aWxzLlRleHRGaWxl VXRpbGl0eS5SZWFkQWxsVGV4dCAoZmlsZSk7CisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uKSB7CisJ CQkJCWNvbnRpbnVlOworCQkJCX0KIAkJCQlpZiAobWVtYmVyTmFtZSAhPSBudWxsICYmIHRleHQu SW5kZXhPZiAobWVtYmVyTmFtZSwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKSA8IDAgJiYKIAkJ CQkJKGtleXdvcmROYW1lID09IG51bGwgfHwgdGV4dC5JbmRleE9mIChrZXl3b3JkTmFtZSwgU3Ry aW5nQ29tcGFyaXNvbi5PcmRpbmFsKSA8IDApKQogCQkJCQljb250aW51ZTsNCg0KICAgQ29tbWl0 OiA1MTgzNDEwZWUyYzZmNDBjZDRhNjBiNmNhMTgwOWE4MWQ5ZDhhYzJkDQogICBBdXRob3I6IE1p a2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdlcikNCiAgICAgRGF0ZTog MjAxMy0xMS0yMCAxMToyMTozMCBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21v bm8vbW9ub2RldmVsb3AvY29tbWl0LzUxODM0MTBlZTJjNmY0MGNkNGE2MGI2Y2ExODA5YTgxZDlk OGFjMmQNCg0KW1JlZmFjdG9yaW5nXSBBZGRlZCBpbnN0cnVtZW50YXRpb24gdGltZXIgZm9yIGJh Y2tncm91bmQgYW5hbHlzaXMuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3NyYy9hZGRpbnMv TW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvTW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvUmVmYWN0b3Jp bmdTZXJ2aWNlLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5SZWZh Y3RvcmluZy9Nb25vRGV2ZWxvcC5SZWZhY3RvcmluZy9SZWZhY3RvcmluZ1NlcnZpY2UuY3MNCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCkBAIC00MSw2ICs0MSw3IEBACiB1c2luZyBNb25vLlRleHRFZGl0b3I7CiB1c2lu ZyBNb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbTsKIHVzaW5nIFN5c3RlbS5EaWFnbm9zdGljczsK K3VzaW5nIE1vbm9EZXZlbG9wLkNvcmUuSW5zdHJ1bWVudGF0aW9uOwogCiBuYW1lc3BhY2UgTW9u b0RldmVsb3AuUmVmYWN0b3JpbmcKIHsKQEAgLTIwNCw0OSArMjA1LDI2IEBAIHB1YmxpYyBzdGF0 aWMgVGFzazxJRW51bWVyYWJsZTxDb2RlQWN0aW9uPj4gR2V0VmFsaWRBY3Rpb25zIChEb2N1bWVu dCBkb2MsIFRleHRMCiAJCQlzdHJpbmcgZGlzYWJsZWROb2RlcyA9IGVkaXRvciAhPSBudWxsID8g UHJvcGVydHlTZXJ2aWNlLkdldCAoIkNvbnRleHRBY3Rpb25zLiIgKyBlZGl0b3IuTWltZVR5cGUs ICIiKSA/PyAiIiA6ICIiOwogCQkJcmV0dXJuIFRhc2suRmFjdG9yeS5TdGFydE5ldyAoZGVsZWdh dGUgewogCQkJCXZhciByZXN1bHQgPSBuZXcgTGlzdDxDb2RlQWN0aW9uPiAoKTsKKwkJCQl2YXIg dGltZXIgPSBJbnN0cnVtZW50YXRpb25TZXJ2aWNlLkNyZWF0ZVRpbWVyQ291bnRlciAoIlNvdXJj ZSBhbmFseXNpcyBiYWNrZ3JvdW5kIHRhc2siLCAiU291cmNlIGFuYWx5c2lzIik7CisJCQkJdGlt ZXIuQmVnaW5UaW1pbmcgKCk7CiAJCQkJdHJ5IHsKLQkJCQkJI2lmIFBST0ZJTEUKLQkJCQkJdmFy IHJ1bkxpc3QgPSBuZXcgTGlzdDxUdXBsZTxsb25nLCBzdHJpbmc+PiAoKTsKLQkJCQkJdmFyIGds b2JhbENsb2NrID0gbmV3IFN0b3B3YXRjaCgpOwotCQkJCQlnbG9iYWxDbG9jay5TdGFydCAoKTsK LQotCQkJCQkjZW5kaWYKLQogCQkJCQl2YXIgcGFyc2VkRG9jdW1lbnQgPSBkb2MuUGFyc2VkRG9j dW1lbnQ7CiAJCQkJCWlmIChlZGl0b3IgIT0gbnVsbCAmJiBwYXJzZWREb2N1bWVudCAhPSBudWxs ICYmIHBhcnNlZERvY3VtZW50LkNyZWF0ZVJlZmFjdG9yaW5nQ29udGV4dCAhPSBudWxsKSB7CiAJ CQkJCQl2YXIgY3R4ID0gcGFyc2VkRG9jdW1lbnQuQ3JlYXRlUmVmYWN0b3JpbmdDb250ZXh0IChk b2MsIGNhbmNlbGxhdGlvblRva2VuKTsKIAkJCQkJCWlmIChjdHggIT0gbnVsbCkgewogCQkJCQkJ CWZvcmVhY2ggKHZhciBwcm92aWRlciBpbiBjb250ZXh0QWN0aW9ucy5XaGVyZSAoZml4ID0+IGRp c2FibGVkTm9kZXMuSW5kZXhPZiAoZml4LklkU3RyaW5nLCBTdHJpbmdDb21wYXJpc29uLk9yZGlu YWwpIDwgMCkpIHsKLQkJCQkJCQkJI2lmIFBST0ZJTEUKLQkJCQkJCQkJdmFyIGNsb2NrID0gbmV3 IFN0b3B3YXRjaCgpOwotCQkJCQkJCQljbG9jay5TdGFydCAoKTsKLQkJCQkJCQkJI2VuZGlmCiAJ CQkJCQkJCXRyeSB7CiAJCQkJCQkJCQlyZXN1bHQuQWRkUmFuZ2UgKHByb3ZpZGVyLkdldEFjdGlv bnMgKGRvYywgY3R4LCBsb2MsIGNhbmNlbGxhdGlvblRva2VuKSk7CiAJCQkJCQkJCX0gY2F0Y2gg KEV4Y2VwdGlvbiBleCkgewogCQkJCQkJCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJFcnJv ciBpbiBjb250ZXh0IGFjdGlvbiBwcm92aWRlciAiICsgcHJvdmlkZXIuVGl0bGUsIGV4KTsKIAkJ CQkJCQkJfQotCQkJCQkJCQkjaWYgUFJPRklMRQotCQkJCQkJCQljbG9jay5TdG9wICgpOwotCQkJ CQkJCQlsb2NrIChydW5MaXN0KSB7Ci0JCQkJCQkJCQlydW5MaXN0LkFkZCAoVHVwbGUuQ3JlYXRl IChjbG9jay5FbGFwc2VkTWlsbGlzZWNvbmRzLCBwcm92aWRlci5UaXRsZSkpOyAKLQkJCQkJCQkJ fQotCQkJCQkJCQkjZW5kaWYKIAkJCQkJCQl9CiAJCQkJCQl9CiAJCQkJCX0KLQkJCQkJI2lmIFBS T0ZJTEUKLQkJCQkJZ2xvYmFsQ2xvY2suU3RvcCAoKTsKLQkJCQkJcnVuTGlzdC5Tb3J0ICgpOwot CQkJCQlDb25zb2xlLldyaXRlTGluZSAoIkFsbDogIiArIGdsb2JhbENsb2NrLkVsYXBzZWRNaWxs aXNlY29uZHMgKyJtcyIpOwotCQkJCQlmb3JlYWNoICh2YXIgaXRlbSBpbiBydW5MaXN0KSB7Ci0J CQkJCQlpZiAoaXRlbS5JdGVtMSA9PSAwKQotCQkJCQkJCWNvbnRpbnVlOwotCQkJCQkJQ29uc29s ZS5Xcml0ZUxpbmUgKGl0ZW0uSXRlbTEgKyJtc1x0OiAiICsgaXRlbS5JdGVtMik7Ci0JCQkJCX0K LQkJCQkJI2VuZGlmCiAJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CiAJCQkJCUxvZ2dpbmdT ZXJ2aWNlLkxvZ0Vycm9yICgiRXJyb3IgaW4gYW5hbHlzaXMgc2VydmljZSIsIGV4KTsKKwkJCQl9 IGZpbmFsbHkgeworCQkJCQl0aW1lci5FbmRUaW1pbmcgKCk7CiAJCQkJfQogCQkJCXJldHVybiAo SUVudW1lcmFibGU8Q29kZUFjdGlvbj4pcmVzdWx0OwogCQkJfSwgY2FuY2VsbGF0aW9uVG9rZW4p Ow0KDQogICBDb21taXQ6IDZmYzA3MjE5NzA0ODc3YmQ1YzVkMDNjN2VmOGI1YjYwOTBmNzI1ZGQN CiAgIEF1dGhvcjogSmVmZnJleSBTdGVkZmFzdCA8amVmZkB4YW1hcmluLmNvbT4gKGpzdGVkZmFz dCkNCiAgICAgRGF0ZTogMjAxMy0xMS0yMCAyMDo1Mzo1MiBHTVQNCiAgICAgIFVSTDogaHR0cHM6 Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzZmYzA3MjE5NzA0ODc3YmQ1YzVk MDNjN2VmOGI1YjYwOTBmNzI1ZGQNCg0KYnVtcGVkIG1kLWFkZGlucw0KDQpDaGFuZ2VkIHBhdGhz OgogIE0gdmVyc2lvbi1jaGVja3MKDQpNb2RpZmllZDogdmVyc2lvbi1jaGVja3MNCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCkBAIC0xNyw3ICsxNyw3IEBAIERFUFswXT1tZC1hZGRpbnMKIERFUF9OQU1FWzBdPU1EQURE SU5TCiBERVBfUEFUSFswXT0ke3RvcF9zcmNkaXJ9Ly4uL21kLWFkZGlucwogREVQX01PRFVMRVsw XT1naXRAZ2l0aHViLmNvbTp4YW1hcmluL21kLWFkZGlucy5naXQKLURFUF9ORUVERURfVkVSU0lP TlswXT1mZjI1ZWE5MDc2YjdhODBmYmI1MmJjZGE4Mjc5NDU3OWYyYWE1NzViCitERVBfTkVFREVE X1ZFUlNJT05bMF09MzkzYmE0YmE5NDYzZTgyZmE5YjhkYzc4YTFiNDAxZDY0YTE0NDE1NQogREVQ X0JSQU5DSF9BTkRfUkVNT1RFWzBdPSJtYXN0ZXIgb3JpZ2luL21hc3RlciIKIAogIyBoZWFwLXNo b3QNCg0KICAgQ29tbWl0OiA1MjJmNzk1NGUxNDg2ZTBjZDIwMjBmMzFhNjQ4NmJlNzY1NTI5ZmVm DQogICBBdXRob3I6IEFsYW4gTWNHb3Zlcm4gPGFsYW5AeGFtYXJpbi5jb20+IChhbGFubWNnb3Zl cm4pDQogICAgIERhdGU6IDIwMTMtMTEtMjAgMjI6MjA6MzIgR01UDQogICAgICBVUkw6IGh0dHBz Oi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC81MjJmNzk1NGUxNDg2ZTBjZDIw MjBmMzFhNjQ4NmJlNzY1NTI5ZmVmDQoNCltHaXRdIERpc2FibGUgdGhlc2UgNCBuZXcgdGVzdHMg dW50aWwgdGhleSBjYW4gYmUgbWFkZSBncmVlbiBvbiBNYWMNCg0KQ2hhbmdlZCBwYXRoczoKICBN IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv bC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcwoNCk1vZGlmaWVkOiBtYWluL3Ny Yy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0LlRl c3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNjIsNiArMTYy LDcgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgQmxhbWVFeHRyYUludGVybmFscyAoQW5ub3Rh dGlvbiBbXSBhbm5vdGF0aW9ucykKIAkJfQ0KIA0KIAkJW1Rlc3RdDQorCQlbSWdub3JlICgidGhp cyBpcyBhIG5ldyB0ZXN0IHdoaWNoIGRvZXNuJ3QgcGFzcyBvbiBNYWMgeWV0IildDQogCQlwdWJs aWMgdm9pZCBUZXN0R2l0U3Rhc2ggKCkNCiAJCXsNCiAJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3Np dG9yeSlSZXBvOw0KQEAgLTE3Niw2ICsxNzcsNyBAQCBwdWJsaWMgdm9pZCBUZXN0R2l0U3Rhc2gg KCkKIAkJfQ0KIA0KIAkJW1Rlc3RdDQorCQlbSWdub3JlICgidGhpcyBpcyBhIG5ldyB0ZXN0IHdo aWNoIGRvZXNuJ3QgcGFzcyBvbiBNYWMgeWV0IildDQogCQlwdWJsaWMgdm9pZCBUZXN0R2l0QnJh bmNoQ3JlYXRpb24gKCkNCiAJCXsNCiAJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBv Ow0KQEAgLTIwNCw2ICsyMDYsNyBAQCBwdWJsaWMgdm9pZCBUZXN0R2l0QnJhbmNoQ3JlYXRpb24g KCkKIAkJfQ0KIA0KIAkJW1Rlc3RdDQorCQlbSWdub3JlICgidGhpcyBpcyBhIG5ldyB0ZXN0IHdo aWNoIGRvZXNuJ3QgcGFzcyBvbiBNYWMgeWV0IildDQogCQlwdWJsaWMgdm9pZCBUZXN0R2l0U3lu Y0JyYW5jaGVzICgpDQogCQl7DQogCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsN CkBAIC0zMDcsNiArMzEwLDcgQEAgcHVibGljIHZvaWQgVGVzdFJlbW90ZSAoKQogCQl9DQogDQog CQlbVGVzdF0NCisJCVtJZ25vcmUgKCJ0aGlzIGlzIGEgbmV3IHRlc3Qgd2hpY2ggZG9lc24ndCBw YXNzIG9uIE1hYyB5ZXQiKV0NCiAJCXB1YmxpYyB2b2lkIFRlc3RJc01lcmdlZCAoKQ0KIAkJew0K IAkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQ0KDQogICBDb21taXQ6IGRhZTNj MGNiN2QzNjAwMTRkY2FjMmVkODBkZTRjN2YyMjBiN2MyNzUNCiAgIEF1dGhvcjogVW5ndXJlYW51 IE1hcml1cyA8dGVyb21hcmlvQHlhaG9vLmNvbT4gKFRoZXJ6b2spDQogICAgIERhdGU6IDIwMTMt MTEtMjAgMjM6MDQ6MzUgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21v bm9kZXZlbG9wL2NvbW1pdC9kYWUzYzBjYjdkMzYwMDE0ZGNhYzJlZDgwZGU0YzdmMjIwYjdjMjc1 DQoNCltHaXRdIFJlbW92ZSBrZXljaGFpbiBzdG9yYWdlIGZvciBnaXQgcGFzc3dvcmRzCgpVbnRp bCB3ZSBmaW5kIGEgYmV0dGVyIHdheSB0byBzdG9yZSB0aGVtIGFuZCBub3QgYmUgY29ycnVwdGVk LgoKRG93bnNpZGU6IEl0IHJlcXVpcmVzIHBhc3MgaW5wdXQgb24gZXZlcnkgcHVzaC4NCg0KQ2hh bmdlZCBwYXRoczoKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxv cC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L0dpdENy ZWRlbnRpYWxzLmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9N b25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wu R2l0L0dpdENyZWRlbnRpYWxzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNTYsNyArNTYsNyBAQCBwdWJs aWMgb3ZlcnJpZGUgYm9vbCBHZXQgKFVSSWlzaCB1cmksIHBhcmFtcyBDcmVkZW50aWFsSXRlbVtd IGl0ZW1zKQogCQkJCiAJCQkvLyBXZSBhbHdheXMgbmVlZCB0byBydW4gdGhlIFRyeUdldCogbWV0 aG9kcyBhcyB3ZSBuZWVkIHRoZSBwYXNzcGhyYXNlSXRlbS9wYXNzd29yZEl0ZW0gcG9wdWxhdGVk IGV2ZW4KIAkJCS8vIGlmIHRoZSBwYXNzd29yZCBzdG9yZSBjb250YWlucyBhbiBpbnZhbGlkIHBh c3N3b3JkL25vIHBhc3N3b3JkCi0JCQlpZiAoVHJ5R2V0VXNlcm5hbWVQYXNzd29yZCAodXJpLCBp dGVtcywgb3V0IHBhc3N3b3JkSXRlbSkgfHwgVHJ5R2V0UGFzc3BocmFzZSAodXJpLCBpdGVtcywg b3V0IHBhc3NwaHJhc2VJdGVtKSkgeworCQkJaWYgKC8qVHJ5R2V0VXNlcm5hbWVQYXNzd29yZCAo dXJpLCBpdGVtcywgb3V0IHBhc3N3b3JkSXRlbSkgfHwgKi9UcnlHZXRQYXNzcGhyYXNlICh1cmks IGl0ZW1zLCBvdXQgcGFzc3BocmFzZUl0ZW0pKSB7CiAJCQkJLy8gSWYgdGhlIHBhc3N3b3JkIHN0 b3JlIGhhcyBhIHBhc3N3b3JkIGFuZCB3ZSBhbHJlYWR5IHRyaWVkIHVzaW5nIGl0LCBpdCBjb3Vs ZCBiZSBpbmNvcnJlY3QuCiAJCQkJLy8gSWYgdGhpcyBoYXBwZW5zLCBkbyBub3QgcmV0dXJuIHRy dWUgYW5kIGFzayB0aGUgdXNlciBmb3IgYSBuZXcgcGFzc3dvcmQuCiAJCQkJaWYgKCFIYXNSZXNl dCkgewpAQCAtNzUsOSArNzUsOSBAQCBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBHZXQgKFVSSWlzaCB1 cmksIHBhcmFtcyBDcmVkZW50aWFsSXRlbVtdIGl0ZW1zKQogCQkJCQogCQkJSGFzUmVzZXQgPSBm YWxzZTsKIAkJCWlmIChyZXN1bHQpIHsKLQkJCQlpZiAocGFzc3dvcmRJdGVtICE9IG51bGwpIHsK KwkJCQkvKmlmIChwYXNzd29yZEl0ZW0gIT0gbnVsbCkgewogCQkJCQlQYXNzd29yZFNlcnZpY2Uu QWRkV2ViUGFzc3dvcmQgKG5ldyBVcmkgKHVyaS5Ub1N0cmluZyAoKSksIG5ldyBzdHJpbmcgKHBh c3N3b3JkSXRlbS5HZXRWYWx1ZSAoKSkpOwotCQkJCX0gZWxzZSBpZiAocGFzc3BocmFzZUl0ZW0g IT0gbnVsbCkgeworCQkJCX0gZWxzZSovIGlmIChwYXNzcGhyYXNlSXRlbSAhPSBudWxsKSB7CiAJ CQkJCVBhc3N3b3JkU2VydmljZS5BZGRXZWJQYXNzd29yZCAobmV3IFVyaSAodXJpLlRvU3RyaW5n ICgpKSwgcGFzc3BocmFzZUl0ZW0uR2V0VmFsdWUgKCkpOwogCQkJCX0KIAkJCX0NCg0KICAgQ29t bWl0OiBlODdhMTJjZmJmNWExNGNlYmYzNDU5NzQzOTNkOWE4N2RjODFlZTc3DQogICBBdXRob3I6 IFVuZ3VyZWFudSBNYXJpdXMgPHRlcm9tYXJpb0B5YWhvby5jb20+IChUaGVyem9rKQ0KICAgICBE YXRlOiAyMDEzLTExLTIwIDIzOjIyOjQzIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5j b20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvZTg3YTEyY2ZiZjVhMTRjZWJmMzQ1OTc0MzkzZDlh ODdkYzgxZWU3Nw0KDQpbR2l0XSBQcm9wZXJseSBmaXgga2V5Y2hhaW4gc2F2aW5nCgpEYW1uIHlv dSBoYWNrZml4IQ0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25D b250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9u Q29udHJvbC5HaXQvR2l0Q3JlZGVudGlhbHMuY3MKDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5z L1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2ZWxv cC5WZXJzaW9uQ29udHJvbC5HaXQvR2l0Q3JlZGVudGlhbHMuY3MNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC01 Niw3ICs1Niw3IEBAIHB1YmxpYyBvdmVycmlkZSBib29sIEdldCAoVVJJaXNoIHVyaSwgcGFyYW1z IENyZWRlbnRpYWxJdGVtW10gaXRlbXMpCiAJCQkKIAkJCS8vIFdlIGFsd2F5cyBuZWVkIHRvIHJ1 biB0aGUgVHJ5R2V0KiBtZXRob2RzIGFzIHdlIG5lZWQgdGhlIHBhc3NwaHJhc2VJdGVtL3Bhc3N3 b3JkSXRlbSBwb3B1bGF0ZWQgZXZlbgogCQkJLy8gaWYgdGhlIHBhc3N3b3JkIHN0b3JlIGNvbnRh aW5zIGFuIGludmFsaWQgcGFzc3dvcmQvbm8gcGFzc3dvcmQKLQkJCWlmICgvKlRyeUdldFVzZXJu YW1lUGFzc3dvcmQgKHVyaSwgaXRlbXMsIG91dCBwYXNzd29yZEl0ZW0pIHx8ICovVHJ5R2V0UGFz c3BocmFzZSAodXJpLCBpdGVtcywgb3V0IHBhc3NwaHJhc2VJdGVtKSkgeworCQkJaWYgKFRyeUdl dFVzZXJuYW1lUGFzc3dvcmQgKHVyaSwgaXRlbXMsIG91dCBwYXNzd29yZEl0ZW0pIHx8IFRyeUdl dFBhc3NwaHJhc2UgKHVyaSwgaXRlbXMsIG91dCBwYXNzcGhyYXNlSXRlbSkpIHsKIAkJCQkvLyBJ ZiB0aGUgcGFzc3dvcmQgc3RvcmUgaGFzIGEgcGFzc3dvcmQgYW5kIHdlIGFscmVhZHkgdHJpZWQg dXNpbmcgaXQsIGl0IGNvdWxkIGJlIGluY29ycmVjdC4KIAkJCQkvLyBJZiB0aGlzIGhhcHBlbnMs IGRvIG5vdCByZXR1cm4gdHJ1ZSBhbmQgYXNrIHRoZSB1c2VyIGZvciBhIG5ldyBwYXNzd29yZC4K IAkJCQlpZiAoIUhhc1Jlc2V0KSB7CkBAIC03NSw5ICs3NSwxMCBAQCBwdWJsaWMgb3ZlcnJpZGUg Ym9vbCBHZXQgKFVSSWlzaCB1cmksIHBhcmFtcyBDcmVkZW50aWFsSXRlbVtdIGl0ZW1zKQogCQkJ CQogCQkJSGFzUmVzZXQgPSBmYWxzZTsKIAkJCWlmIChyZXN1bHQpIHsKLQkJCQkvKmlmIChwYXNz d29yZEl0ZW0gIT0gbnVsbCkgewotCQkJCQlQYXNzd29yZFNlcnZpY2UuQWRkV2ViUGFzc3dvcmQg KG5ldyBVcmkgKHVyaS5Ub1N0cmluZyAoKSksIG5ldyBzdHJpbmcgKHBhc3N3b3JkSXRlbS5HZXRW YWx1ZSAoKSkpOwotCQkJCX0gZWxzZSovIGlmIChwYXNzcGhyYXNlSXRlbSAhPSBudWxsKSB7CisJ CQkJdmFyIHVzZXIgPSBpdGVtcy5PZlR5cGU8Q3JlZGVudGlhbEl0ZW0uVXNlcm5hbWU+ICgpLkZp cnN0T3JEZWZhdWx0ICgpOworCQkJCWlmIChwYXNzd29yZEl0ZW0gIT0gbnVsbCkgeworCQkJCQlQ YXNzd29yZFNlcnZpY2UuQWRkV2ViVXNlck5hbWVBbmRQYXNzd29yZCAobmV3IFVyaSAodXJpLlRv U3RyaW5nICgpKSwgdXNlci5HZXRWYWx1ZSAoKSwgbmV3IHN0cmluZyAocGFzc3dvcmRJdGVtLkdl dFZhbHVlICgpKSk7CisJCQkJfSBlbHNlIGlmIChwYXNzcGhyYXNlSXRlbSAhPSBudWxsKSB7CiAJ CQkJCVBhc3N3b3JkU2VydmljZS5BZGRXZWJQYXNzd29yZCAobmV3IFVyaSAodXJpLlRvU3RyaW5n ICgpKSwgcGFzc3BocmFzZUl0ZW0uR2V0VmFsdWUgKCkpOwogCQkJCX0KIAkJCX0KQEAgLTExOCwx MCArMTE5LDEwIEBAIHN0YXRpYyBib29sIFRyeUdldFVzZXJuYW1lUGFzc3dvcmQgKFVSSWlzaCB1 cmksIENyZWRlbnRpYWxJdGVtW10gaXRlbXMsIG91dCBDcmVkCiAJCQlpZiAoaXRlbXMuTGVuZ3Ro ID09IDIgJiYgdXNlcm5hbWUgIT0gbnVsbCAmJiBwYXNzd29yZCAhPSBudWxsKSB7CiAJCQkJcGFz c3dvcmRJdGVtID0gcGFzc3dvcmQ7CiAKLQkJCQl2YXIgcGFzc3dvcmRWYWx1ZSA9IFBhc3N3b3Jk U2VydmljZS5HZXRXZWJQYXNzd29yZCAoYWN0dWFsVXJsKTsKLQkJCQlpZiAocGFzc3dvcmRWYWx1 ZSAhPSBudWxsKSB7Ci0JCQkJCXVzZXJuYW1lLlNldFZhbHVlIChhY3R1YWxVcmwuVXNlckluZm8p OwotCQkJCQlwYXNzd29yZC5TZXRWYWx1ZU5vQ29weSAocGFzc3dvcmRWYWx1ZS5Ub0FycmF5ICgp KTsKKwkJCQl2YXIgY3JlZCA9IFBhc3N3b3JkU2VydmljZS5HZXRXZWJVc2VyTmFtZUFuZFBhc3N3 b3JkIChhY3R1YWxVcmwpOworCQkJCWlmIChjcmVkICE9IG51bGwpIHsKKwkJCQkJdXNlcm5hbWUu U2V0VmFsdWUgKGNyZWQuSXRlbTEpOworCQkJCQlwYXNzd29yZC5TZXRWYWx1ZU5vQ29weSAoY3Jl ZC5JdGVtMi5Ub0FycmF5ICgpKTsKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJfQogCQkJfSBlbHNl IHsNCg0KICAgQ29tbWl0OiA2MDdlOTVhN2U2NjFiYWVmYTQwNGYyYjgxNDljNGI5MWU4MDBjNWZj DQogICBBdXRob3I6IE1pa2UgS3LDvGdlciA8bWtydWVnZXJAeGFtYXJpbi5jb20+IChta3J1ZWdl cikNCiAgICAgRGF0ZTogMjAxMy0xMS0yMSAwNjowNToyMyBHTVQNCiAgICAgIFVSTDogaHR0cHM6 Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0LzYwN2U5NWE3ZTY2MWJhZWZhNDA0 ZjJiODE0OWM0YjkxZTgwMGM1ZmMNCg0KW1NvdXJjZUVkaXRvcl0gUGFyc2VyIGVycm9yIHVuZGVy bGluZXMgYXJlIG5vdyBtb3JlIHByZWNpc2UuDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL3Ny Yy9hZGRpbnMvTW9ub0RldmVsb3AuU291cmNlRWRpdG9yMi9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0 b3IvU291cmNlRWRpdG9yV2lkZ2V0LmNzCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25v RGV2ZWxvcC5Tb3VyY2VFZGl0b3IyL01vbm9EZXZlbG9wLlNvdXJjZUVkaXRvci9Tb3VyY2VFZGl0 b3JXaWRnZXQuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNzIwLDYgKzE3MjAsMTQgQEAgcHVibGljIEVy cm9yTWFya2VyIChUZXh0RG9jdW1lbnQgZG9jLCBFcnJvciBpbmZvLCBEb2N1bWVudExpbmUgbGlu ZSkKIAkJCVdhdmUgPSB0cnVlOwogCQkJCiAJCQlTdGFydENvbCA9IEluZm8uUmVnaW9uLkJlZ2lu Q29sdW1uOworCQkJdmFyIHN0YXJ0T2Zmc2V0ID0gbGluZS5PZmZzZXQ7CisJCQl3aGlsZSAoU3Rh cnRDb2wgPCBsaW5lLkxlbmd0aCkgeworCQkJCWNoYXIgY2ggPSBkb2MuR2V0Q2hhckF0IChzdGFy dE9mZnNldCArIFN0YXJ0Q29sIC0gMSk7CisJCQkJaWYgKCFjaGFyLklzV2hpdGVTcGFjZSAoY2gp KQorCQkJCQlicmVhazsKKwkJCQlTdGFydENvbCsrOworCQkJfQorCiAJCQlpZiAoSW5mby5SZWdp b24uRW5kQ29sdW1uID4gU3RhcnRDb2wpIHsKIAkJCQlFbmRDb2wgPSBJbmZvLlJlZ2lvbi5FbmRD b2x1bW47CiAJCQl9IGVsc2Ugew0KDQogICBDb21taXQ6IGI2MTFmYTZjNmRiYmJmZjQyZjliOTRm OGMwOGViYTU3N2Y5MWQ0OWENCiAgIEF1dGhvcjogTWlrZSBLcsO8Z2VyIDxta3J1ZWdlckB4YW1h cmluLmNvbT4gKG1rcnVlZ2VyKQ0KICAgICBEYXRlOiAyMDEzLTExLTIxIDA2OjA1OjIzIEdNVA0K ICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxvcC9jb21taXQvYjYx MWZhNmM2ZGJiYmZmNDJmOWI5NGY4YzA4ZWJhNTc3ZjkxZDQ5YQ0KDQpGaXhlZCAnQnVnIDE2MzY2 IC0gRXJyb3IgaGludHMgYXJlIG5vdCBkaXNwbGF5ZWQgaWYgdGhlIGNvZGUgaGFzIHNtYWxsCmlu ZGVudC4nLg0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0 b3IvTW9uby5UZXh0RWRpdG9yL0d1aS9UZXh0QXJlYS5jcwoNCk1vZGlmaWVkOiBtYWluL3NyYy9j b3JlL01vbm8uVGV4dGVkaXRvci9Nb25vLlRleHRFZGl0b3IvR3VpL1RleHRBcmVhLmNzDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpAQCAtMjY1Myw3ICsyNjUzLDcgQEAgcHVibGljIGludCBSZXBsYWNlQWxsIChzdHJp bmcgd2l0aFBhdHRlcm4pCiAJCQogCQl2b2lkIFNob3dUb29sdGlwIChHZGsuTW9kaWZpZXJUeXBl IG1vZGlmaWVyU3RhdGUpCiAJCXsKLQkJCWlmIChteCA8IFRleHRWaWV3TWFyZ2luLlhPZmZzZXQg KyBUZXh0Vmlld01hcmdpbi5UZXh0U3RhcnRQb3NpdGlvbikgeworCQkJaWYgKG14IDwgVGV4dFZp ZXdNYXJnaW4uVGV4dFN0YXJ0UG9zaXRpb24pIHsKIAkJCQlIaWRlVG9vbHRpcCAoKTsKIAkJCQly ZXR1cm47CiAJCQl9DQoNCiAgIENvbW1pdDogY2I4MGIwYmJmYWY2ODM4ZTFiOTJlMzU2YzI2ODI5 YWFhYzgzZDAwMA0KICAgQXV0aG9yOiBNaWtlIEtyw7xnZXIgPG1rcnVlZ2VyQHhhbWFyaW4uY29t PiAobWtydWVnZXIpDQogICAgIERhdGU6IDIwMTMtMTEtMjEgMDc6MDA6NDMgR01UDQogICAgICBV Ukw6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC9jYjgwYjBiYmZh ZjY4MzhlMWI5MmUzNTZjMjY4MjlhYWFjODNkMDAwDQoNCkZpeGVkICdCdWcgMTYzNjggLSBEb2N1 bWVudCBmb3JtYXR0aW5nOiBOZXcgbGluZSBpbnNpZGUvYXJvdW5kICNyZWdpb24gaW1wcm92ZW1l bnQ/Jw0KDQpDaGFuZ2VkIHBhdGhzOgogIE0gbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5Cg0KTW9k aWZpZWQ6IG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQ0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEgKzEgQEAK LVN1YnByb2plY3QgY29tbWl0IGVhNzViYWMzZjM3NDA2MWJhM2MyOGFlMDBmN2I5NjUxODlmOTNm MzEKK1N1YnByb2plY3QgY29tbWl0IDY1MDllNzY0OGY2MDU2NDlkY2YwMWY4MjZjOTZhNTdjNGE1 NTU2OWINCg0KICAgQ29tbWl0OiAzMWFkNGMzNjFhYzI1NjVmMmY5ZWY4ZDU5ZGFmYWVjZTY4ZDA5 OWNhDQogICBBdXRob3I6IErDqXLDqW1pZSBMYXZhbCA8amVyZW1pZS5sYXZhbEBnbWFpbC5jb20+ IChnYXJ1bWEpDQogICAgIERhdGU6IDIwMTMtMTEtMjEgMTY6MjE6MjUgR01UDQogICAgICBVUkw6 IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm9kZXZlbG9wL2NvbW1pdC8zMWFkNGMzNjFhYzI1 NjVmMmY5ZWY4ZDU5ZGFmYWVjZTY4ZDA5OWNhDQoNCltidWlsZF0gQnVtcCBtZC1hZGRpbnMNCg0K Q2hhbmdlZCBwYXRoczoKICBNIHZlcnNpb24tY2hlY2tzCg0KTW9kaWZpZWQ6IHZlcnNpb24tY2hl Y2tzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpAQCAtMTcsNyArMTcsNyBAQCBERVBbMF09bWQtYWRkaW5zCiBERVBf TkFNRVswXT1NREFERElOUwogREVQX1BBVEhbMF09JHt0b3Bfc3JjZGlyfS8uLi9tZC1hZGRpbnMK IERFUF9NT0RVTEVbMF09Z2l0QGdpdGh1Yi5jb206eGFtYXJpbi9tZC1hZGRpbnMuZ2l0Ci1ERVBf TkVFREVEX1ZFUlNJT05bMF09MzkzYmE0YmE5NDYzZTgyZmE5YjhkYzc4YTFiNDAxZDY0YTE0NDE1 NQorREVQX05FRURFRF9WRVJTSU9OWzBdPTAyZmM4ZmE3MjM3NTM4YTBkY2Q3NDRlZDlmMTQ5ZTNm YzZhYmMzZjIKIERFUF9CUkFOQ0hfQU5EX1JFTU9URVswXT0ibWFzdGVyIG9yaWdpbi9tYXN0ZXIi CiAKICMgaGVhcC1zaG90DQoNCiAgIENvbW1pdDogYmUxOTk4ZjU1YTRhYTA4N2Q1YzAwMDlhNDJk ZTdiMTlmMDJiNjJiNw0KICAgQXV0aG9yOiBMbHVpcyBTYW5jaGV6IDxsbHVpc0B4YW1hcmluLmNv bT4gKHNsbHVpcykNCiAgICAgRGF0ZTogMjAxMy0xMS0yMSAxODo1OTo1NyBHTVQNCiAgICAgIFVS TDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9ub2RldmVsb3AvY29tbWl0L2JlMTk5OGY1NWE0 YWEwODdkNWMwMDA5YTQyZGU3YjE5ZjAyYjYyYjcNCg0KTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJy YW5jaCAnb3JpZ2luL21hc3RlcicgaW50byByZXRpbmEKCkNvbmZsaWN0czoKCXZlcnNpb24tY2hl Y2tzDQoNCkNoYW5nZWQgcGF0aHM6CiAgTSBtYWluL2V4dGVybmFsL2RlYnVnZ2VyLWxpYnMKICBN IG1haW4vZXh0ZXJuYWwvbW9uby1hZGRpbnMKICBNIG1haW4vZXh0ZXJuYWwvbnJlZmFjdG9yeQog IE0gbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1NoYXJwLkNvbXBs ZXRpb24vTWVtYmVyQ29tcGxldGlvbkRhdGEuY3MKICBNIG1haW4vc3JjL2FkZGlucy9DU2hhcnBC aW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5SZWZhY3RvcmluZy9DU2hhcnBSZWZlcmVuY2VGaW5k ZXIuY3MKICBNIG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFy cC5Ub29sdGlwcy9MYW5ndWFnZUl0ZW1Ub29sdGlwUHJvdmlkZXIuY3MKICBNIG1haW4vc3JjL2Fk ZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC9TaWduYXR1cmVNYXJrdXBDcmVh dG9yLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC9Nb25v RGV2ZWxvcC5EZWJ1Z2dlci5Tb2Z0LkFzcE5ldC9Bc3BOZXRTb2Z0RGVidWdnZXJFbmdpbmUuY3MK ICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5SZWZhY3RvcmluZy9Nb25vRGV2ZWxvcC5D b2RlSXNzdWVzL0NvZGVJc3N1ZVBhZC5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9w LlJlZmFjdG9yaW5nL01vbm9EZXZlbG9wLlJlZmFjdG9yaW5nL1JlZmFjdG9yaW5nU2VydmljZS5j cwogIE0gbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLlNvdXJjZUVkaXRvcjIvTW9ub0RldmVs b3AuU291cmNlRWRpdG9yL1NvdXJjZUVkaXRvclZpZXcuY3MKICBNIG1haW4vc3JjL2FkZGlucy9N b25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IyL01vbm9EZXZlbG9wLlNvdXJjZUVkaXRvci9Tb3VyY2VF ZGl0b3JXaWRnZXQuY3MKICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVu Y2VzL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMuRGlhbG9ncy9XQ0ZDb25maWdXaWRnZXQuY3MK ICBNIG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL2d0ay1ndWkvTW9u b0RldmVsb3AuV2ViUmVmZXJlbmNlcy5EaWFsb2dzLldDRkNvbmZpZ1dpZGdldC5jcwogIE0gbWFp bi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvZ3RrLWd1aS9ndWkuc3RldGlj CiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNv bnRyb2wuR2l0LlRlc3RzL0Jhc2VHaXRSZXBvc2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2Fk ZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMv QmFzZVJlcG9zaXRvcnlUZXN0cy5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9s L01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJv bC5HaXQvR2l0Q3JlZGVudGlhbHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy b2wuR2l0L0dpdFJlcG9zaXRvcnkuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJv bC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL0Jhc2VTdm5SZXBv c2l0b3J5VGVzdHMuY3MKICBNIG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2 ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcwog IE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250 cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLmNzcHJvagogIE0gbWFpbi9zcmMvYWRkaW5z L1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZl cnNpb25Db250cm9sL0NoYW5nZVNldC5jcwogIE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250 cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sL1ZlcnNpb25Db250cm9sLmFkZGluLnhtbAog IE0gbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL1N1YnZlcnNpb24uV2luMzIuVGVzdHMv UmVwb3NpdG9yeVRlc3RzLmNzCiAgTSBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvU3Vi dmVyc2lvbi5XaW4zMi9WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLldpbjMyLmNzcHJvagogIE0g bWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9uby5UZXh0RWRpdG9yLlV0aWxzL1RleHRG aWxlVXRpbGl0eS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9uby5UZXh0 RWRpdG9yLlZpL1ZpTW9kZS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9u by5UZXh0RWRpdG9yL0d1aS9UZXh0QXJlYS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxv cC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL0NyZWRlbnRpYWxTdG9yZS5jcwogIE0gbWFpbi9z cmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL0lDcmVkZW50aWFs UHJvdmlkZXIuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxv cC5Db3JlLldlYi9Qcm94eUNhY2hlLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNv cmUvTW9ub0RldmVsb3AuQ29yZS5XZWIvUmVxdWVzdEhlbHBlci5jcwogIE0gbWFpbi9zcmMvY29y ZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2ViL1dlYlNlcnZpY2UuY3MKICBN IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLmNzcHJvagog IE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUvTG9nZ2lu Z1NlcnZpY2UuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxv cC5Db3JlL1J1bnRpbWUuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9E ZXZlbG9wLkNvbXBvbmVudHMuTWFpblRvb2xiYXIvUHJvamVjdFNlYXJjaENhdGVnb3J5LmNzCiAg TSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuR3VpLk9wdGlv blBhbmVscy9Nb25vUnVudGltZVBhbmVsLmNzCiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9w LklkZS9Nb25vRGV2ZWxvcC5JZGUuUHJvamVjdHMuT3B0aW9uUGFuZWxzL0NvbWJpbmVCdWlsZE9w dGlvbnMuY3MKICBNIG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklk ZS5Qcm9qZWN0cy5PcHRpb25QYW5lbHMvUnVudGltZU9wdGlvbnNQYW5lbC5jcwogIE0gbWFpbi9z cmMvY29yZS9Nb25vRGV2ZWxvcC5JZGUvTW9ub0RldmVsb3AuSWRlLlRlbXBsYXRlcy9TaW5nbGVG aWxlRGVzY3JpcHRpb25UZW1wbGF0ZS5jcwogIE0gbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5J ZGUvTW9ub0RldmVsb3AuSWRlLlR5cGVTeXN0ZW0vVHlwZVN5c3RlbVNlcnZpY2UuY3MKICBNIG1h aW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZlbG9wLklkZS9JZGVTdGFydHVwLmNz CiAgTSBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLlRleHRFZGl0b3IuVGVzdHMvTW9uby5UZXh0 RWRpdG9yLlRlc3RzL1RleHRGaWxlUmVhZGVyVGVzdHMuY3MKICBNIG1haW4vdGVzdHMvVW5pdFRl c3RzL01vbm9EZXZlbG9wLkNTaGFycEJpbmRpbmcvT25UaGVGbHlGb3JtYXR0ZXJUZXN0cy5jcwog IE0gbWFpbi94YnVpbGQuaW5jbHVkZQoNCk1vZGlmaWVkOiBtYWluL2V4dGVybmFsL2RlYnVnZ2Vy LWxpYnMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCkBAIC0xICsxIEBACi1TdWJwcm9qZWN0IGNvbW1pdCBlNjFhMjBl MTQ1MWZmMTJlZTRiMDY3MmNjOTUyM2FkMmM2MTJiZWI5CitTdWJwcm9qZWN0IGNvbW1pdCAzNDU5 NTAyNGYwMDcyYzFjZmM1YjFkZGUxZDE5NGQwZGNjNWMxMWZiDQoNCk1vZGlmaWVkOiBtYWluL2V4 dGVybmFsL21vbm8tYWRkaW5zDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAotU3VicHJvamVjdCBj b21taXQgMGExYzBhMDZlZDczODE5MDZhMjc0NjZhZmE5MWJkODI0Zjc1ZGUwMgorU3VicHJvamVj dCBjb21taXQgMjFkNzE1YWRlZGFhOWE4YmMxMjU1ZGU3ZGRmMGQyNDQ1NjIyYzE4Nw0KDQpNb2Rp ZmllZDogbWFpbi9leHRlcm5hbC9ucmVmYWN0b3J5DQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMSArMSBAQAot U3VicHJvamVjdCBjb21taXQgNTA3MzNmNTAyYTJhMzhkODM2YjQ2NGMxZWI2NzhmZjYzNmUyYWU1 MAorU3VicHJvamVjdCBjb21taXQgNjUwOWU3NjQ4ZjYwNTY0OWRjZjAxZjgyNmM5NmE1N2M0YTU1 NTY5Yg0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NTaGFycEJpbmRpbmcvTW9ub0RldmVs b3AuQ1NoYXJwLkNvbXBsZXRpb24vTWVtYmVyQ29tcGxldGlvbkRhdGEuY3MNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N CkBAIC02ODIsMzAgKzY4Miw3IEBAIHB1YmxpYyBzdGF0aWMgVG9vbHRpcEluZm9ybWF0aW9uIENy ZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoSUNvbXBpbGF0aW9uIGNvbXBpbGF0CiAJCQkJfQogCQkJ fQogCQkJaWYgKGNyZWF0ZUZvb3RlcikgewotCQkJCWlmIChlbnRpdHkgaXMgSVR5cGUpIHsKLQkJ CQkJdmFyIHR5cGUgPSBlbnRpdHkgYXMgSVR5cGU7Ci0JCQkJCXZhciBkZWYgPSB0eXBlLkdldERl ZmluaXRpb24gKCk7Ci0JCQkJCWlmIChkZWYgIT0gbnVsbCkgewotCQkJCQkJaWYgKCFzdHJpbmcu SXNOdWxsT3JFbXB0eSAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpIHsKLQkJCQkJ CQl2YXIgcHJvamVjdCA9IGRlZi5HZXRTb3VyY2VQcm9qZWN0ICgpOwotCQkJCQkJCWlmIChwcm9q ZWN0ICE9IG51bGwpIHsKLQkJCQkJCQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNvbHV0 ZVRvUmVsYXRpdmVQYXRoIChwcm9qZWN0LkJhc2VEaXJlY3RvcnksIGRlZi5SZWdpb24uRmlsZU5h bWUpOwotCQkJCQkJCQl0b29sdGlwSW5mby5Gb290ZXJNYXJrdXAgPSAiPHNtYWxsPiIgKyBHZXR0 ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJQcm9qZWN0Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVz Y2FwZVRleHQgKGRlZi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKSArICI8L3NtYWxsPiIg KyBFbnZpcm9ubWVudC5OZXdMaW5lICsKLQkJCQkJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRh bG9nLkdldFN0cmluZyAoIkZpbGU6XHRcdHswfSAobGluZSB7MX0pIiwgQW1iaWVuY2VTZXJ2aWNl LkVzY2FwZVRleHQgKHJlbFBhdGgpLCBkZWYuUmVnaW9uLkJlZ2luLkxpbmUpICsgIjwvc21hbGw+ IjsKLQkJCQkJCQl9Ci0JCQkJCQl9Ci0JCQkJCX0KLQotCQkJCX0gZWxzZSBpZiAoZW50aXR5LkRl Y2xhcmluZ1R5cGVEZWZpbml0aW9uICE9IG51bGwpIHsKLQkJCQkJdmFyIHByb2plY3QgPSBlbnRp dHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24uR2V0U291cmNlUHJvamVjdCAoKTsKLQkJCQkJaWYg KHByb2plY3QgIT0gbnVsbCkgewotCQkJCQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNv bHV0ZVRvUmVsYXRpdmVQYXRoIChwcm9qZWN0LkJhc2VEaXJlY3RvcnksIGVudGl0eS5SZWdpb24u RmlsZU5hbWUpOwotCQkJCQkJdG9vbHRpcEluZm8uRm9vdGVyTWFya3VwID0gCi0JCQkJCQkJIjxz bWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiUHJvamVjdDpcdHswfSIsIEFtYmll bmNlU2VydmljZS5Fc2NhcGVUZXh0IChwcm9qZWN0Lk5hbWUpKSArICI8L3NtYWxsPiIgKyBFbnZp cm9ubWVudC5OZXdMaW5lICsKLQkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRT dHJpbmcgKCJGcm9tOlx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKGVudGl0eS5E ZWNsYXJpbmdUeXBlLkZ1bGxOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGlu ZSArCi0JCQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiRmlsZTpc dFx0ezB9IChsaW5lIHsxfSkiLCBBbWJpZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAocmVsUGF0aCks IGVudGl0eS5SZWdpb24uQmVnaW4uTGluZSkgKyAiPC9zbWFsbD4iOwotCQkJCQl9Ci0JCQkJfQor CQkJCXRvb2x0aXBJbmZvLkZvb3Rlck1hcmt1cCA9IHNpZy5DcmVhdGVGb290ZXIgKGVudGl0eSk7 CiAJCQl9CiAJCQlyZXR1cm4gdG9vbHRpcEluZm87CiAJCX0KQEAgLTczMiw4ICs3MDksOCBAQCBw dWJsaWMgc3RhdGljIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwSW5mb3JtYXRpb24g KElDb21waWxhdGlvbiBjb21waWxhdAogCiAJCQl2YXIgZGVmID0gdHlwZS5HZXREZWZpbml0aW9u ICgpOwogCQkJaWYgKGRlZiAhPSBudWxsKSB7Ci0JCQkJaWYgKGNyZWF0ZUZvb3RlciAmJiAhc3Ry aW5nLklzTnVsbE9yRW1wdHkgKGRlZi5QYXJlbnRBc3NlbWJseS5Bc3NlbWJseU5hbWUpKQotCQkJ CQl0b29sdGlwSW5mby5Gb290ZXJNYXJrdXAgPSAiPHNtYWxsPiBGcm9tICIgKyBBbWJpZW5jZVNl cnZpY2UuRXNjYXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkgKyAiPC9z bWFsbD4iOworCQkJCWlmIChjcmVhdGVGb290ZXIpCisJCQkJCXRvb2x0aXBJbmZvLkZvb3Rlck1h cmt1cCA9IHNpZy5DcmVhdGVGb290ZXIgKGRlZik7CiAJCQkJdG9vbHRpcEluZm8uU3VtbWFyeU1h cmt1cCA9IEFtYmllbmNlU2VydmljZS5HZXRTdW1tYXJ5TWFya3VwIChkZWYpID8/ICIiOwogCQkJ fQogCQkJcmV0dXJuIHRvb2x0aXBJbmZvOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL0NT aGFycEJpbmRpbmcvTW9ub0RldmVsb3AuQ1NoYXJwLlJlZmFjdG9yaW5nL0NTaGFycFJlZmVyZW5j ZUZpbmRlci5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ1NoYXJwUmVm ZXJlbmNlRmluZGVyIDogUmVmZXJlbmNlRmluZGVyCiAJCUxpc3Q8RmlsZVBhdGg+IGZpbGVzID0g bmV3IExpc3Q8RmlsZVBhdGg+ICgpOwogCQlMaXN0PFR1cGxlPEZpbGVQYXRoLCBNb25vRGV2ZWxv cC5JZGUuR3VpLkRvY3VtZW50Pj4gb3BlbkRvY3VtZW50cyA9IG5ldyBMaXN0PFR1cGxlPEZpbGVQ YXRoLCBNb25vRGV2ZWxvcC5JZGUuR3VpLkRvY3VtZW50Pj4gKCk7CiAJCQotCQlzdHJpbmcgbWVt YmVyTmFtZTsNCisJCXN0cmluZyBtZW1iZXJOYW1lOwogCQlzdHJpbmcga2V5d29yZE5hbWU7CiAJ CQogCQlwdWJsaWMgQ1NoYXJwUmVmZXJlbmNlRmluZGVyICgpCkBAIC02MywxNyArNjMsMTcgQEAg cHVibGljIENTaGFycFJlZmVyZW5jZUZpbmRlciAoKQogCQlwdWJsaWMgdm9pZCBTZXRTZWFyY2hl ZE1lbWJlcnMgKElFbnVtZXJhYmxlPG9iamVjdD4gbWVtYmVycykKIAkJewogCQkJc2VhcmNoZWRN ZW1iZXJzID0gbmV3IExpc3Q8b2JqZWN0PiAobWVtYmVycyk7Ci0JCQl2YXIgZmlyc3RNZW1iZXIg PSBzZWFyY2hlZE1lbWJlcnMuRmlyc3RPckRlZmF1bHQgKCk7DQotCQkJaWYgKGZpcnN0TWVtYmVy IGlzIElOYW1lZEVsZW1lbnQpIHsNCisJCQl2YXIgZmlyc3RNZW1iZXIgPSBzZWFyY2hlZE1lbWJl cnMuRmlyc3RPckRlZmF1bHQgKCk7CisJCQlpZiAoZmlyc3RNZW1iZXIgaXMgSU5hbWVkRWxlbWVu dCkgewogCQkJCXZhciBuYW1lZEVsZW1lbnQgPSAoSU5hbWVkRWxlbWVudClmaXJzdE1lbWJlcjsK IAkJCQl2YXIgbmFtZSA9IG5hbWVkRWxlbWVudC5OYW1lOwogCQkJCWlmIChuYW1lZEVsZW1lbnQg aXMgSU1ldGhvZCAmJiAoKChJTWV0aG9kKW5hbWVkRWxlbWVudCkuSXNDb25zdHJ1Y3RvciB8ICgo SU1ldGhvZCluYW1lZEVsZW1lbnQpLklzRGVzdHJ1Y3RvcikpCiAJCQkJCW5hbWUgPSAoKElNZXRo b2QpbmFtZWRFbGVtZW50KS5EZWNsYXJpbmdUeXBlLk5hbWU7Ci0JCQkJbWVtYmVyTmFtZSA9IG5h bWU7DQotDQotCQkJCWtleXdvcmROYW1lID0gQ1NoYXJwQW1iaWVuY2UuTmV0VG9DU2hhcnBUeXBl TmFtZSAobmFtZWRFbGVtZW50LkZ1bGxOYW1lKTsNCi0JCQkJaWYgKGtleXdvcmROYW1lID09IG5h bWVkRWxlbWVudC5GdWxsTmFtZSkNCi0JCQkJCWtleXdvcmROYW1lID0gbnVsbDsNCisJCQkJbWVt YmVyTmFtZSA9IG5hbWU7CisKKwkJCQlrZXl3b3JkTmFtZSA9IENTaGFycEFtYmllbmNlLk5ldFRv Q1NoYXJwVHlwZU5hbWUgKG5hbWVkRWxlbWVudC5GdWxsTmFtZSk7CisJCQkJaWYgKGtleXdvcmRO YW1lID09IG5hbWVkRWxlbWVudC5GdWxsTmFtZSkKKwkJCQkJa2V5d29yZE5hbWUgPSBudWxsOwog CQkJfQogCQkJaWYgKGZpcnN0TWVtYmVyIGlzIHN0cmluZykKIAkJCQltZW1iZXJOYW1lID0gZmly c3RNZW1iZXIuVG9TdHJpbmcgKCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgTWVtYmVyUmVmZXJlbmNl IEdldFJlZmVyZW5jZSAoUHJvamVjdCBwcm9qZWN0LCBSZXNvbHZlUmVzdWx0IHJlc3VsdCwgQXN0 Tm9kZSBub2QKIAkJc2tpcDoKIAogCQkJdmFyIHJlZ2lvbiA9IG5ldyBEb21SZWdpb24gKGZpbGVO YW1lLCBub2RlLlN0YXJ0TG9jYXRpb24sIG5vZGUuRW5kTG9jYXRpb24pOwotDQorCiAJCQl2YXIg bGVuZ3RoID0gbm9kZSBpcyBQcmltaXRpdmVUeXBlID8ga2V5d29yZE5hbWUuTGVuZ3RoIDogbm9k ZS5FbmRMb2NhdGlvbi5Db2x1bW4gLSBub2RlLlN0YXJ0TG9jYXRpb24uQ29sdW1uOwogCQkJaWYg KHZhbGlkID09IG51bGwpCiAJCQkJdmFsaWQgPSBzZWFyY2hlZE1lbWJlcnMuRmlyc3RPckRlZmF1 bHQgKCk7CkBAIC0zMDQsNyArMzA0LDEyIEBAIHB1YmxpYyBvdmVycmlkZSBJRW51bWVyYWJsZTxN ZW1iZXJSZWZlcmVuY2U+IEZpbmRSZWZlcmVuY2VzIChQcm9qZWN0IHByb2plY3QsIElQCiAJCQlm b3JlYWNoICh2YXIgZmlsZSBpbiBmaWxlcykgewogCQkJCWlmIChtb25pdG9yICE9IG51bGwpCiAJ CQkJCW1vbml0b3IuU3RlcCAoMSk7Ci0JCQkJc3RyaW5nIHRleHQgPSBNb25vLlRleHRFZGl0b3Iu VXRpbHMuVGV4dEZpbGVVdGlsaXR5LlJlYWRBbGxUZXh0IChmaWxlKTsKKwkJCQlzdHJpbmcgdGV4 dDsKKwkJCQl0cnkgeworCQkJCQl0ZXh0ID0gTW9uby5UZXh0RWRpdG9yLlV0aWxzLlRleHRGaWxl VXRpbGl0eS5SZWFkQWxsVGV4dCAoZmlsZSk7CisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uKSB7CisJ CQkJCWNvbnRpbnVlOworCQkJCX0KIAkJCQlpZiAobWVtYmVyTmFtZSAhPSBudWxsICYmIHRleHQu SW5kZXhPZiAobWVtYmVyTmFtZSwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKSA8IDAgJiYKIAkJ CQkJKGtleXdvcmROYW1lID09IG51bGwgfHwgdGV4dC5JbmRleE9mIChrZXl3b3JkTmFtZSwgU3Ry aW5nQ29tcGFyaXNvbi5PcmRpbmFsKSA8IDApKQogCQkJCQljb250aW51ZTsNCg0KTW9kaWZpZWQ6 IG1haW4vc3JjL2FkZGlucy9DU2hhcnBCaW5kaW5nL01vbm9EZXZlbG9wLkNTaGFycC5Ub29sdGlw cy9MYW5ndWFnZUl0ZW1Ub29sdGlwUHJvdmlkZXIuY3MNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNDEsNyAr MTQxLDcgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIEd0ay5XaW5kb3cgQ3JlYXRlVG9vbHRpcFdpbmRv dyAoTW9uby5UZXh0RWRpdG9yLlRleHRFZGl0b3IgZWQKIAogCQkJdmFyIHRpdGVtID0gKFRvb2xU aXBEYXRhKWl0ZW0uSXRlbTsKIAotCQkJdmFyIHRvb2x0aXBJbmZvcm1hdGlvbiA9IENyZWF0ZVRv b2x0aXAgKHRpdGVtLCBvZmZzZXQsIG51bGwpOworCQkJdmFyIHRvb2x0aXBJbmZvcm1hdGlvbiA9 IENyZWF0ZVRvb2x0aXAgKHRpdGVtLCBvZmZzZXQsIG51bGwsIG1vZGlmaWVyU3RhdGUpOwogCQkJ aWYgKHRvb2x0aXBJbmZvcm1hdGlvbiA9PSBudWxsIHx8IHN0cmluZy5Jc051bGxPckVtcHR5ICh0 b29sdGlwSW5mb3JtYXRpb24uU2lnbmF0dXJlTWFya3VwKSkKIAkJCQlyZXR1cm4gbnVsbDsKIApA QCAtMTc5LDEyICsxNzksMTMgQEAgcHVibGljIG92ZXJyaWRlIEd0ay5XaW5kb3cgU2hvd1Rvb2x0 aXBXaW5kb3cgKFRleHRFZGl0b3IgZWRpdG9yLCBpbnQgb2Zmc2V0LCBHZGsKIAkJCXJldHVybiB0 aXBXaW5kb3c7CiAJCX0KIAotCQlUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAoVG9v bFRpcERhdGEgZGF0YSwgaW50IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuY2UpCisJCVRvb2x0aXBJ bmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwIChUb29sVGlwRGF0YSBkYXRhLCBpbnQgb2Zmc2V0LCBB bWJpZW5jZSBhbWJpZW5jZSwgR2RrLk1vZGlmaWVyVHlwZSBtb2RpZmllclN0YXRlKQogCQl7CiAJ CQlSZXNvbHZlUmVzdWx0IHJlc3VsdCA9IGRhdGEuUmVzdWx0OwogCQkJdmFyIGRvYyA9IElkZUFw cC5Xb3JrYmVuY2guQWN0aXZlRG9jdW1lbnQ7CiAJCQlpZiAoZG9jID09IG51bGwpCiAJCQkJcmV0 dXJuIG51bGw7CisJCQlib29sIGNyZWF0ZUZvb3RlciA9IChtb2RpZmllclN0YXRlICYgR2RrLk1v ZGlmaWVyVHlwZS5Nb2QxTWFzaykgIT0gMDsKIAkJCXRyeSB7CiAKIAkJCQlpZiAocmVzdWx0IGlz IEFsaWFzTmFtZXNwYWNlUmVzb2x2ZVJlc3VsdCkgewpAQCAtMjc2LDEyICsyNzcsMTMgQEAgVG9v bHRpcEluZm9ybWF0aW9uIENyZWF0ZVRvb2x0aXAgKFRvb2xUaXBEYXRhIGRhdGEsIGludCBvZmZz ZXQsIEFtYmllbmNlIGFtYmllbmMKIAkJCQkJdmFyIG1ldGhvZCA9IGFsbE1ldGhvZHMuRmlyc3RP ckRlZmF1bHQgKCk7CiAJCQkJCWlmIChtZXRob2QgIT0gbnVsbCkgewogCQkJCQkJcmV0dXJuIE1l bWJlckNvbXBsZXRpb25EYXRhLkNyZWF0ZVRvb2x0aXBJbmZvcm1hdGlvbiAoCi0JCQkJCQlkb2Mu Q29tcGlsYXRpb24sCi0JCQkJCQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hh cnBVbnJlc29sdmVkRmlsZSwKLQkJCQkJCWRvYy5FZGl0b3IsCi0JCQkJCQlkb2MuR2V0Rm9ybWF0 dGluZ1BvbGljeSAoKSwKLQkJCQkJCW1ldGhvZCwgCi0JCQkJCQlmYWxzZSk7CisJCQkJCQkJZG9j LkNvbXBpbGF0aW9uLAorCQkJCQkJCWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENT aGFycFVucmVzb2x2ZWRGaWxlLAorCQkJCQkJCWRvYy5FZGl0b3IsCisJCQkJCQkJZG9jLkdldEZv cm1hdHRpbmdQb2xpY3kgKCksCisJCQkJCQkJbWV0aG9kLAorCQkJCQkJCWZhbHNlLAorCQkJCQkJ CWNyZWF0ZUZvb3Rlcik7CiAJCQkJCX0KIAkJCQl9IGVsc2UgaWYgKHJlc3VsdCBpcyBDU2hhcnBJ bnZvY2F0aW9uUmVzb2x2ZVJlc3VsdCkgewogCQkJCQl2YXIgaW52b2NhdGlvblJlc3VsdCA9IChD U2hhcnBJbnZvY2F0aW9uUmVzb2x2ZVJlc3VsdClyZXN1bHQ7CkBAIC0yOTIsMTYgKzI5NCwxOCBA QCBUb29sdGlwSW5mb3JtYXRpb24gQ3JlYXRlVG9vbHRpcCAoVG9vbFRpcERhdGEgZGF0YSwgaW50 IG9mZnNldCwgQW1iaWVuY2UgYW1iaWVuYwogCQkJCQkJZG9jLkVkaXRvciwKIAkJCQkJCWRvYy5H ZXRGb3JtYXR0aW5nUG9saWN5ICgpLAogCQkJCQkJbWVtYmVyLCAKLQkJCQkJCWZhbHNlKTsKKwkJ CQkJCWZhbHNlLAorCQkJCQkJY3JlYXRlRm9vdGVyKTsKIAkJCQl9IGVsc2UgaWYgKHJlc3VsdCBp cyBNZW1iZXJSZXNvbHZlUmVzdWx0KSB7CiAJCQkJCXZhciBtZW1iZXIgPSAoKE1lbWJlclJlc29s dmVSZXN1bHQpcmVzdWx0KS5NZW1iZXI7CiAJCQkJCXJldHVybiBNZW1iZXJDb21wbGV0aW9uRGF0 YS5DcmVhdGVUb29sdGlwSW5mb3JtYXRpb24gKAotCQkJCQlkb2MuQ29tcGlsYXRpb24sCi0JCQkJ CWRvYy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVzb2x2ZWRGaWxlLAot CQkJCQlkb2MuRWRpdG9yLAotCQkJCQlkb2MuR2V0Rm9ybWF0dGluZ1BvbGljeSAoKSwKLQkJCQkJ bWVtYmVyLCAKLQkJCQkJZmFsc2UpOworCQkJCQkJZG9jLkNvbXBpbGF0aW9uLAorCQkJCQkJZG9j LlBhcnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJwVW5yZXNvbHZlZEZpbGUsCisJCQkJ CQlkb2MuRWRpdG9yLAorCQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCisJCQkJCQlt ZW1iZXIsIAorCQkJCQkJZmFsc2UsCisJCQkJCQljcmVhdGVGb290ZXIpOwogCQkJCX0gZWxzZSBp ZiAocmVzdWx0IGlzIE5hbWVzcGFjZVJlc29sdmVSZXN1bHQpIHsKIAkJCQkJdmFyIHRvb2x0aXBJ bmZvID0gbmV3IFRvb2x0aXBJbmZvcm1hdGlvbiAoKTsKIAkJCQkJdmFyIHJlc29sdmVyID0gKGRv Yy5QYXJzZWREb2N1bWVudC5QYXJzZWRGaWxlIGFzIENTaGFycFVucmVzb2x2ZWRGaWxlKS5HZXRS ZXNvbHZlciAoZG9jLkNvbXBpbGF0aW9uLCBkb2MuRWRpdG9yLkNhcmV0LkxvY2F0aW9uKTsKQEAg LTMyOSwxMiArMzMzLDEzIEBAIFRvb2x0aXBJbmZvcm1hdGlvbiBDcmVhdGVUb29sdGlwIChUb29s VGlwRGF0YSBkYXRhLCBpbnQgb2Zmc2V0LCBBbWJpZW5jZSBhbWJpZW5jCiAJCQkJCXJldHVybiB0 b29sdGlwSW5mbzsKIAkJCQl9IGVsc2UgewogCQkJCQlyZXR1cm4gTWVtYmVyQ29tcGxldGlvbkRh dGEuQ3JlYXRlVG9vbHRpcEluZm9ybWF0aW9uICgKLQkJCQkJZG9jLkNvbXBpbGF0aW9uLAotCQkJ CQlkb2MuUGFyc2VkRG9jdW1lbnQuUGFyc2VkRmlsZSBhcyBDU2hhcnBVbnJlc29sdmVkRmlsZSwK LQkJCQkJZG9jLkVkaXRvciwKLQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCi0JCQkJ CXJlc3VsdC5UeXBlLCAKLQkJCQkJZmFsc2UpOworCQkJCQkJZG9jLkNvbXBpbGF0aW9uLAorCQkJ CQkJZG9jLlBhcnNlZERvY3VtZW50LlBhcnNlZEZpbGUgYXMgQ1NoYXJwVW5yZXNvbHZlZEZpbGUs CisJCQkJCQlkb2MuRWRpdG9yLAorCQkJCQkJZG9jLkdldEZvcm1hdHRpbmdQb2xpY3kgKCksCisJ CQkJCQlyZXN1bHQuVHlwZSwgCisJCQkJCQlmYWxzZSwKKwkJCQkJCWNyZWF0ZUZvb3Rlcik7CiAJ CQkJfQogCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKIAkJCQlMb2dnaW5nU2VydmljZS5Mb2dF cnJvciAoIkVycm9yIHdoaWxlIGNyZWF0aW5nIHRvb2x0aXAuIiwgZSk7DQoNCk1vZGlmaWVkOiBt YWluL3NyYy9hZGRpbnMvQ1NoYXJwQmluZGluZy9Nb25vRGV2ZWxvcC5DU2hhcnAvU2lnbmF0dXJl TWFya3VwQ3JlYXRvci5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE2MTEsNSArMTYxMSw0NiBAQCBzdHJp bmcgSGlnaGxpZ2h0U2VtYW50aWNhbGx5IChzdHJpbmcgc3RyLCBDaHVua1N0eWxlIHN0eWxlKQog CQkJCXJldHVybiBzdHI7CiAJCQlyZXR1cm4gSGlnaGxpZ2h0IChzdHIsIHN0eWxlKTsKIAkJfQor CisJCXB1YmxpYyBzdHJpbmcgQ3JlYXRlRm9vdGVyIChJRW50aXR5IGVudGl0eSkKKwkJeworCQkJ dmFyIHR5cGUgPSBlbnRpdHkgYXMgSVR5cGU7CisJCQlpZiAodHlwZSAhPSBudWxsKSB7CisJCQkJ dmFyIGRlZiA9IHR5cGUuR2V0RGVmaW5pdGlvbiAoKTsKKwkJCQlpZiAoZGVmICE9IG51bGwpIHsK KwkJCQkJaWYgKCFkZWYuUmVnaW9uLklzRW1wdHkpIHsKKwkJCQkJCXZhciBwcm9qZWN0ID0gZGVm LkdldFNvdXJjZVByb2plY3QgKCk7CisJCQkJCQlpZiAocHJvamVjdCAhPSBudWxsKSB7CisJCQkJ CQkJdmFyIHJlbFBhdGggPSBGaWxlU2VydmljZS5BYnNvbHV0ZVRvUmVsYXRpdmVQYXRoIChwcm9q ZWN0LkJhc2VEaXJlY3RvcnksIGRlZi5SZWdpb24uRmlsZU5hbWUpOworCQkJCQkJCXJldHVybgor CQkJCQkJCQkoc3RyaW5nLklzTnVsbE9yRW1wdHkgKGRlZi5OYW1lc3BhY2UpID8gIiIgOiAiPHNt YWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJOYW1lc3BhY2U6XHR7MH0iLCBBbWJp ZW5jZVNlcnZpY2UuRXNjYXBlVGV4dCAoZGVmLk5hbWVzcGFjZSkpICsgIjwvc21hbGw+IiArIEVu dmlyb25tZW50Lk5ld0xpbmUpICsKKwkJCQkJCQkJIjxzbWFsbD4iICsgR2V0dGV4dENhdGFsb2cu R2V0U3RyaW5nICgiUHJvamVjdDpcdHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChk ZWYuUGFyZW50QXNzZW1ibHkuQXNzZW1ibHlOYW1lKSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1l bnQuTmV3TGluZSArCisJCQkJCQkJCSI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmlu ZyAoIkZpbGU6XHRcdHswfSAobGluZSB7MX0pIiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQg KHJlbFBhdGgpLCBkZWYuUmVnaW9uLkJlZ2luLkxpbmUpICsgIjwvc21hbGw+IjsKKwkJCQkJCX0K KwkJCQkJfQorCQkJCQlyZXR1cm4KKwkJCQkJCShzdHJpbmcuSXNOdWxsT3JFbXB0eSAoZGVmLk5h bWVzcGFjZSkgPyAiIiA6ICI8c21hbGw+IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIk5h bWVzcGFjZTpcdHswfSIsIEFtYmllbmNlU2VydmljZS5Fc2NhcGVUZXh0IChkZWYuTmFtZXNwYWNl KSkgKyAiPC9zbWFsbD4iICsgRW52aXJvbm1lbnQuTmV3TGluZSkgKworCQkJCQkJIjxzbWFsbD4i ICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiQXNzZW1ibHk6XHR7MH0iLCBBbWJpZW5jZVNl cnZpY2UuRXNjYXBlVGV4dCAoZGVmLlBhcmVudEFzc2VtYmx5LkFzc2VtYmx5TmFtZSkpICsgIjwv c21hbGw+IjsKKwkJCQl9CisJCQkJcmV0dXJuIG51bGw7CisJCQl9IAorCisJCQlpZiAoZW50aXR5 LkRlY2xhcmluZ1R5cGVEZWZpbml0aW9uICE9IG51bGwpIHsKKwkJCQlpZiAoIWVudGl0eS5SZWdp b24uSXNFbXB0eSkgeworCQkJCQl2YXIgcHJvamVjdCA9IGVudGl0eS5EZWNsYXJpbmdUeXBlRGVm aW5pdGlvbi5HZXRTb3VyY2VQcm9qZWN0ICgpOworCQkJCQlpZiAocHJvamVjdCAhPSBudWxsKSB7 CisJCQkJCQl2YXIgcmVsUGF0aCA9IEZpbGVTZXJ2aWNlLkFic29sdXRlVG9SZWxhdGl2ZVBhdGgg KHByb2plY3QuQmFzZURpcmVjdG9yeSwgZW50aXR5LlJlZ2lvbi5GaWxlTmFtZSk7CisJCQkJCQly ZXR1cm4KKwkJCQkJCQkiPHNtYWxsPiIgKyBHZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJQcm9q ZWN0Olx0ezB9IiwgQW1iaWVuY2VTZXJ2aWNlLkVzY2FwZVRleHQgKHByb2plY3QuTmFtZSkpICsg Ijwvc21hbGw+IiArIEVudmlyb25tZW50Lk5ld0xpbmUgKworCQkJCQkJCSI8c21hbGw+IiArIEdl dHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZyb20gdHlwZTpcdHswfSIsIEFtYmllbmNlU2Vydmlj ZS5Fc2NhcGVUZXh0IChlbnRpdHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24uRnVsbE5hbWUpKSAr ICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKKwkJCQkJCQkiPHNtYWxsPiIgKyBH ZXR0ZXh0Q2F0YWxvZy5HZXRTdHJpbmcgKCJGaWxlOlx0XHR7MH0gKGxpbmUgezF9KSIsIEFtYmll bmNlU2VydmljZS5Fc2NhcGVUZXh0IChyZWxQYXRoKSwgZW50aXR5LlJlZ2lvbi5CZWdpbi5MaW5l KSArICI8L3NtYWxsPiI7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuCisJCQkJCSI8c21hbGw+ IiArIEdldHRleHRDYXRhbG9nLkdldFN0cmluZyAoIkZyb20gdHlwZTpcdHswfSIsIEFtYmllbmNl U2VydmljZS5Fc2NhcGVUZXh0IChlbnRpdHkuRGVjbGFyaW5nVHlwZURlZmluaXRpb24uRnVsbE5h bWUpKSArICI8L3NtYWxsPiIgKyBFbnZpcm9ubWVudC5OZXdMaW5lICsKKwkJCQkJIjxzbWFsbD4i ICsgR2V0dGV4dENhdGFsb2cuR2V0U3RyaW5nICgiQXNzZW1ibHk6XHR7MH0iLCBBbWJpZW5jZVNl cnZpY2UuRXNjYXBlVGV4dCAoZW50aXR5LkRlY2xhcmluZ1R5cGVEZWZpbml0aW9uLlBhcmVudEFz c2VtYmx5LkFzc2VtYmx5TmFtZSkpICsgIjwvc21hbGw+IjsKKwkJCX0KKwkJCXJldHVybiBudWxs OworCQl9CiAJfQogfQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLkRl YnVnZ2VyLlNvZnQvTW9ub0RldmVsb3AuRGVidWdnZXIuU29mdC5Bc3BOZXQvQXNwTmV0U29mdERl YnVnZ2VyRW5naW5lLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtNTcsNyArNTcsNyBAQCBGaWxlUGF0aCBH ZXRGeERpciAoTW9ub1RhcmdldFJ1bnRpbWUgcnVudGltZSwgQ2xyVmVyc2lvbiB2ZXJzaW9uKQog CQkJCXJldHVybiBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjIuMCIpOwogCQkJY2Fz ZSBDbHJWZXJzaW9uLk5ldF80XzA6CiAJCQkJdmFyIG5ldDQ1UGF0aCA9IHByZWZpeC5Db21iaW5l ICgibGliIiwgIm1vbm8iLCAiNC41Iik7Ci0JCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1 UGF0aCkpIHJldHVybiBuZXQ0NVBhdGg7CisJCQkJaWYgKERpcmVjdG9yeS5FeGlzdHMgKG5ldDQ1 UGF0aCkgJiYgIU1vbm9EZXZlbG9wLkNvcmUuUGxhdGZvcm0uSXNXaW5kb3dzKSByZXR1cm4gbmV0 NDVQYXRoOwogCQkJCXJldHVybiBwcmVmaXguQ29tYmluZSAoImxpYiIsICJtb25vIiwgIjQuMCIp OwogCQkJY2FzZSBDbHJWZXJzaW9uLk5ldF80XzU6CiAJCQkJcmV0dXJuIHByZWZpeC5Db21iaW5l ICgibGliIiwgIm1vbm8iLCAiNC41Iik7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9u b0RldmVsb3AuUmVmYWN0b3JpbmcvTW9ub0RldmVsb3AuQ29kZUlzc3Vlcy9Db2RlSXNzdWVQYWQu Y3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCkBAIC0yOTksNiArMjk5LDkgQEAgdm9pZCBTZXROb2RlIChUcmVlTmF2 aWdhdG9yIG5hdmlnYXRvciwgSUlzc3VlVHJlZU5vZGUgbm9kZSkKIAogCQl2b2lkIENsZWFyU2li bGluZ05vZGVzIChUcmVlTmF2aWdhdG9yIG5hdmlnYXRvcikKIAkJeworCQkJaWYgKG5hdmlnYXRv ci5DdXJyZW50UG9zaXRpb24gPT0gbnVsbCkKKwkJCQlyZXR1cm47CisKIAkJCWRvIHsKIAkJCQl2 YXIgbm9kZSA9IG5hdmlnYXRvci5HZXRWYWx1ZSAobm9kZUZpZWxkKTsKIAkJCQlpZiAobm9kZSAh PSBudWxsKSB7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvTW9ub0RldmVsb3AuUmVmYWN0 b3JpbmcvTW9ub0RldmVsb3AuUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdTZXJ2aWNlLmNzDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpAQCAtNDEsNiArNDEsNyBAQAogdXNpbmcgTW9uby5UZXh0RWRpdG9yOwogdXNpbmcg TW9ub0RldmVsb3AuSWRlLlR5cGVTeXN0ZW07CiB1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7Cit1 c2luZyBNb25vRGV2ZWxvcC5Db3JlLkluc3RydW1lbnRhdGlvbjsKIAogbmFtZXNwYWNlIE1vbm9E ZXZlbG9wLlJlZmFjdG9yaW5nCiB7CkBAIC0yMDQsNDkgKzIwNSwyNiBAQCBwdWJsaWMgc3RhdGlj IFRhc2s8SUVudW1lcmFibGU8Q29kZUFjdGlvbj4+IEdldFZhbGlkQWN0aW9ucyAoRG9jdW1lbnQg ZG9jLCBUZXh0TAogCQkJc3RyaW5nIGRpc2FibGVkTm9kZXMgPSBlZGl0b3IgIT0gbnVsbCA/IFBy b3BlcnR5U2VydmljZS5HZXQgKCJDb250ZXh0QWN0aW9ucy4iICsgZWRpdG9yLk1pbWVUeXBlLCAi IikgPz8gIiIgOiAiIjsKIAkJCXJldHVybiBUYXNrLkZhY3RvcnkuU3RhcnROZXcgKGRlbGVnYXRl IHsKIAkJCQl2YXIgcmVzdWx0ID0gbmV3IExpc3Q8Q29kZUFjdGlvbj4gKCk7CisJCQkJdmFyIHRp bWVyID0gSW5zdHJ1bWVudGF0aW9uU2VydmljZS5DcmVhdGVUaW1lckNvdW50ZXIgKCJTb3VyY2Ug YW5hbHlzaXMgYmFja2dyb3VuZCB0YXNrIiwgIlNvdXJjZSBhbmFseXNpcyIpOworCQkJCXRpbWVy LkJlZ2luVGltaW5nICgpOwogCQkJCXRyeSB7Ci0JCQkJCSNpZiBQUk9GSUxFCi0JCQkJCXZhciBy dW5MaXN0ID0gbmV3IExpc3Q8VHVwbGU8bG9uZywgc3RyaW5nPj4gKCk7Ci0JCQkJCXZhciBnbG9i YWxDbG9jayA9IG5ldyBTdG9wd2F0Y2goKTsKLQkJCQkJZ2xvYmFsQ2xvY2suU3RhcnQgKCk7Ci0K LQkJCQkJI2VuZGlmCi0KIAkJCQkJdmFyIHBhcnNlZERvY3VtZW50ID0gZG9jLlBhcnNlZERvY3Vt ZW50OwogCQkJCQlpZiAoZWRpdG9yICE9IG51bGwgJiYgcGFyc2VkRG9jdW1lbnQgIT0gbnVsbCAm JiBwYXJzZWREb2N1bWVudC5DcmVhdGVSZWZhY3RvcmluZ0NvbnRleHQgIT0gbnVsbCkgewogCQkJ CQkJdmFyIGN0eCA9IHBhcnNlZERvY3VtZW50LkNyZWF0ZVJlZmFjdG9yaW5nQ29udGV4dCAoZG9j LCBjYW5jZWxsYXRpb25Ub2tlbik7CiAJCQkJCQlpZiAoY3R4ICE9IG51bGwpIHsKIAkJCQkJCQlm b3JlYWNoICh2YXIgcHJvdmlkZXIgaW4gY29udGV4dEFjdGlvbnMuV2hlcmUgKGZpeCA9PiBkaXNh YmxlZE5vZGVzLkluZGV4T2YgKGZpeC5JZFN0cmluZywgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFs KSA8IDApKSB7Ci0JCQkJCQkJCSNpZiBQUk9GSUxFCi0JCQkJCQkJCXZhciBjbG9jayA9IG5ldyBT dG9wd2F0Y2goKTsKLQkJCQkJCQkJY2xvY2suU3RhcnQgKCk7Ci0JCQkJCQkJCSNlbmRpZgogCQkJ CQkJCQl0cnkgewogCQkJCQkJCQkJcmVzdWx0LkFkZFJhbmdlIChwcm92aWRlci5HZXRBY3Rpb25z IChkb2MsIGN0eCwgbG9jLCBjYW5jZWxsYXRpb25Ub2tlbikpOwogCQkJCQkJCQl9IGNhdGNoIChF eGNlcHRpb24gZXgpIHsKIAkJCQkJCQkJCUxvZ2dpbmdTZXJ2aWNlLkxvZ0Vycm9yICgiRXJyb3Ig aW4gY29udGV4dCBhY3Rpb24gcHJvdmlkZXIgIiArIHByb3ZpZGVyLlRpdGxlLCBleCk7CiAJCQkJ CQkJCX0KLQkJCQkJCQkJI2lmIFBST0ZJTEUKLQkJCQkJCQkJY2xvY2suU3RvcCAoKTsKLQkJCQkJ CQkJbG9jayAocnVuTGlzdCkgewotCQkJCQkJCQkJcnVuTGlzdC5BZGQgKFR1cGxlLkNyZWF0ZSAo Y2xvY2suRWxhcHNlZE1pbGxpc2Vjb25kcywgcHJvdmlkZXIuVGl0bGUpKTsgCi0JCQkJCQkJCX0K LQkJCQkJCQkJI2VuZGlmCiAJCQkJCQkJfQogCQkJCQkJfQogCQkJCQl9Ci0JCQkJCSNpZiBQUk9G SUxFCi0JCQkJCWdsb2JhbENsb2NrLlN0b3AgKCk7Ci0JCQkJCXJ1bkxpc3QuU29ydCAoKTsKLQkJ CQkJQ29uc29sZS5Xcml0ZUxpbmUgKCJBbGw6ICIgKyBnbG9iYWxDbG9jay5FbGFwc2VkTWlsbGlz ZWNvbmRzICsibXMiKTsKLQkJCQkJZm9yZWFjaCAodmFyIGl0ZW0gaW4gcnVuTGlzdCkgewotCQkJ CQkJaWYgKGl0ZW0uSXRlbTEgPT0gMCkKLQkJCQkJCQljb250aW51ZTsKLQkJCQkJCUNvbnNvbGUu V3JpdGVMaW5lIChpdGVtLkl0ZW0xICsibXNcdDogIiArIGl0ZW0uSXRlbTIpOwotCQkJCQl9Ci0J CQkJCSNlbmRpZgogCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewogCQkJCQlMb2dnaW5nU2Vy dmljZS5Mb2dFcnJvciAoIkVycm9yIGluIGFuYWx5c2lzIHNlcnZpY2UiLCBleCk7CisJCQkJfSBm aW5hbGx5IHsKKwkJCQkJdGltZXIuRW5kVGltaW5nICgpOwogCQkJCX0KIAkJCQlyZXR1cm4gKElF bnVtZXJhYmxlPENvZGVBY3Rpb24+KXJlc3VsdDsKIAkJCX0sIGNhbmNlbGxhdGlvblRva2VuKTsN Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IyL01v bm9EZXZlbG9wLlNvdXJjZUVkaXRvci9Tb3VyY2VFZGl0b3JWaWV3LmNzDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpA QCAtNjkzLDExICs2OTMsMTUgQEAgcHVibGljIHZvaWQgU2F2ZSAoc3RyaW5nIGZpbGVOYW1lLCBF bmNvZGluZyBlbmNvZGluZykKIAkJCQkJdmFyIHdyaXRlQm9tID0gaGFkQm9tOwogCQkJCQl2YXIg d3JpdGVUZXh0ID0gRG9jdW1lbnQuVGV4dDsKIAkJCQkJaWYgKHdyaXRlRW5jb2RpbmcgPT0gbnVs bCkgewotCQkJCQkJd3JpdGVFbmNvZGluZyA9IEVuY29kaW5nLlVURjg7Ci0JCQkJCQkvLyBEaXNh YmxlZC4gU2hvd3MgdXAgaW4gdGhlIHNvdXJjZSBjb250cm9sIGFzIGRpZmYsIGl0J3MgYXRtIGNv bmZ1c2luZyBmb3IgdGhlIHVzZXJzIHRvIHNlZSBhIGNoYW5nZSB3aXRob3V0Ci0JCQkJCQkvLyBj aGFuZ2VkIGZpbGVzLgotCQkJCQkJd3JpdGVCb20gPSBmYWxzZTsKLS8vCQkJCQkJd3JpdGVCb20g PSFNb25vLlRleHRFZGl0b3IuVXRpbHMuVGV4dEZpbGVVdGlsaXR5LklzQVNDSUkgKHdyaXRlVGV4 dCk7CisJCQkJCQlpZiAodGhpcy5lbmNvZGluZyAhPSBudWxsKSB7CisJCQkJCQkJd3JpdGVFbmNv ZGluZyA9IHRoaXMuZW5jb2Rpbmc7CisJCQkJCQl9IGVsc2UgeyAKKwkJCQkJCQl3cml0ZUVuY29k aW5nID0gRW5jb2RpbmcuVVRGODsKKwkJCQkJCQkvLyBEaXNhYmxlZC4gU2hvd3MgdXAgaW4gdGhl IHNvdXJjZSBjb250cm9sIGFzIGRpZmYsIGl0J3MgYXRtIGNvbmZ1c2luZyBmb3IgdGhlIHVzZXJz IHRvIHNlZSBhIGNoYW5nZSB3aXRob3V0CisJCQkJCQkJLy8gY2hhbmdlZCBmaWxlcy4KKwkJCQkJ CQl3cml0ZUJvbSA9IGZhbHNlOworCS8vCQkJCQkJd3JpdGVCb20gPSFNb25vLlRleHRFZGl0b3Iu VXRpbHMuVGV4dEZpbGVVdGlsaXR5LklzQVNDSUkgKHdyaXRlVGV4dCk7CisJCQkJCQl9CiAJCQkJ CX0KIAkJCQkJTW9uby5UZXh0RWRpdG9yLlV0aWxzLlRleHRGaWxlVXRpbGl0eS5Xcml0ZVRleHQg KGZpbGVOYW1lLCB3cml0ZVRleHQsIHdyaXRlRW5jb2RpbmcsIHdyaXRlQm9tKTsKIAkJCQl9IGNh dGNoIChJbnZhbGlkRW5jb2RpbmdFeGNlcHRpb24pIHsKQEAgLTgzNiw5ICs4NDAsOSBAQCBwdWJs aWMgdm9pZCBMb2FkIChzdHJpbmcgZmlsZU5hbWUsIEVuY29kaW5nIGxvYWRFbmNvZGluZywgYm9v bCByZWxvYWQgPSBmYWxzZSkKIAkJCWVsc2UgewogCQkJCWluTG9hZCA9IHRydWU7CiAJCQkJaWYg KGxvYWRFbmNvZGluZyA9PSBudWxsKSB7Ci0JCQkJCXRleHQgPSBUZXh0RmlsZVV0aWxpdHkuUmVh ZEFsbFRleHQgKGZpbGVOYW1lLCBvdXQgaGFkQm9tLCBvdXQgdGhpcy5lbmNvZGluZyk7Ci0JCQkJ fQotCQkJCWVsc2UgeworCQkJCQl0ZXh0ID0gVGV4dEZpbGVVdGlsaXR5LlJlYWRBbGxUZXh0IChm aWxlTmFtZSwgb3V0IGhhZEJvbSwgb3V0IGVuY29kaW5nKTsKKwkJCQl9IGVsc2UgeworCQkJCQll bmNvZGluZyA9IGxvYWRFbmNvZGluZzsKIAkJCQkJdGV4dCA9IFRleHRGaWxlVXRpbGl0eS5SZWFk QWxsVGV4dCAoZmlsZU5hbWUsIGxvYWRFbmNvZGluZywgb3V0IGhhZEJvbSk7CiAJCQkJfQogCQkJ CWlmIChyZWxvYWQpIHsKQEAgLTkxMSw3ICs5MTUsNyBAQCBpbnRlcm5hbCB2b2lkIFN0b3JlU2V0 dGluZ3MgKCkKIAogCQlib29sIHdhcm5PdmVyd3JpdGUgPSBmYWxzZTsKIAkJYm9vbCBpbkxvYWQg PSBmYWxzZTsKLQkJRW5jb2RpbmcgZW5jb2RpbmcgPSBudWxsOworCQlFbmNvZGluZyBlbmNvZGlu ZzsKIAkJYm9vbCBoYWRCb20gPSBmYWxzZTsKIAogCQlpbnRlcm5hbCB2b2lkIFJlcGxhY2VDb250 ZW50IChzdHJpbmcgZmlsZU5hbWUsIHN0cmluZyBjb250ZW50LCBFbmNvZGluZyBlbmNvZGluZykN Cg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5Tb3VyY2VFZGl0b3IyL01v bm9EZXZlbG9wLlNvdXJjZUVkaXRvci9Tb3VyY2VFZGl0b3JXaWRnZXQuY3MNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N CkBAIC05MjcsNyArOTI3LDcgQEAgaW50ZXJuYWwgdm9pZCBDb252ZXJ0TGluZUVuZGluZ3MgKCkK IAkJCQkJbmV3VGV4dC5BcHBlbmQgKGNvcnJlY3RFb2wpOwogCQkJfQogCQkJdmlldy5TdG9yZVNl dHRpbmdzICgpOwotCQkJdmlldy5SZXBsYWNlQ29udGVudCAoRG9jdW1lbnQuRmlsZU5hbWUsIG5l d1RleHQuVG9TdHJpbmcgKCksIG51bGwpOworCQkJdmlldy5SZXBsYWNlQ29udGVudCAoRG9jdW1l bnQuRmlsZU5hbWUsIG5ld1RleHQuVG9TdHJpbmcgKCksIHZpZXcuU291cmNlRW5jb2RpbmcpOwog CQkJRG9jdW1lbnQuSGFzTGluZUVuZGluZ01pc21hdGNoT25UZXh0U2V0ID0gZmFsc2U7CiAJCQl2 aWV3LkxvYWRTZXR0aW5ncyAoKTsKIAkJfQpAQCAtMTA3Myw3ICsxMDczLDcgQEAgcHVibGljIHZv aWQgU2hvd0F1dG9TYXZlV2FybmluZyAoc3RyaW5nIGZpbGVOYW1lKQogCQkJCQkJQXV0b1NhdmUu UmVtb3ZlQXV0b1NhdmVGaWxlIChmaWxlTmFtZSk7CiAJCQkJCQlUZXh0RWRpdG9yLkdyYWJGb2N1 cyAoKTsKIAkJCQkJCXZpZXcuTG9hZCAoZmlsZU5hbWUpOwotCQkJCQkJdmlldy5SZXBsYWNlQ29u dGVudCAoZmlsZU5hbWUsIGNvbnRlbnQsIG51bGwpOworCQkJCQkJdmlldy5SZXBsYWNlQ29udGVu dCAoZmlsZU5hbWUsIGNvbnRlbnQsIHZpZXcuU291cmNlRW5jb2RpbmcpOwogCQkJCQkJdmlldy5X b3JrYmVuY2hXaW5kb3cuRG9jdW1lbnQuUmVwYXJzZURvY3VtZW50ICgpOwogCQkJCQkJdmlldy5J c0RpcnR5ID0gdHJ1ZTsKIAkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CkBAIC0xNzE4LDYg KzE3MTgsMTQgQEAgcHVibGljIEVycm9yTWFya2VyIChUZXh0RG9jdW1lbnQgZG9jLCBFcnJvciBp bmZvLCBEb2N1bWVudExpbmUgbGluZSkKIAkJCVdhdmUgPSB0cnVlOwogCQkJCiAJCQlTdGFydENv bCA9IEluZm8uUmVnaW9uLkJlZ2luQ29sdW1uOworCQkJdmFyIHN0YXJ0T2Zmc2V0ID0gbGluZS5P ZmZzZXQ7CisJCQl3aGlsZSAoU3RhcnRDb2wgPCBsaW5lLkxlbmd0aCkgeworCQkJCWNoYXIgY2gg PSBkb2MuR2V0Q2hhckF0IChzdGFydE9mZnNldCArIFN0YXJ0Q29sIC0gMSk7CisJCQkJaWYgKCFj aGFyLklzV2hpdGVTcGFjZSAoY2gpKQorCQkJCQlicmVhazsKKwkJCQlTdGFydENvbCsrOworCQkJ fQorCiAJCQlpZiAoSW5mby5SZWdpb24uRW5kQ29sdW1uID4gU3RhcnRDb2wpIHsKIAkJCQlFbmRD b2wgPSBJbmZvLlJlZ2lvbi5FbmRDb2x1bW47CiAJCQl9IGVsc2Ugew0KDQpNb2RpZmllZDogbWFp bi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvTW9ub0RldmVsb3AuV2ViUmVm ZXJlbmNlcy5EaWFsb2dzL1dDRkNvbmZpZ1dpZGdldC5jcw0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTQ1LDYg KzQ1LDExIEBAIHB1YmxpYyBXQ0ZDb25maWdXaWRnZXQgKENsaWVudE9wdGlvbnMgb3B0aW9ucykK IAkJCQogCQkJZGljdFR5cGVzID0gbmV3IExpc3Q8VHlwZT4gKERlZmF1bHREaWN0aW9uYXJ5VHlw ZXMpOwogCQkJUG9wdWxhdGVCb3ggKGRpY3Rpb25hcnlDb2xsZWN0aW9uLCAiRGljdGlvbmFyeSIs IGRpY3RUeXBlcyk7CisKKwkJCWZvcmVhY2ggKHZhciBhY2Nlc3MgaW4gQWNjZXNzR2VuZXJhdGlv blR5cGVzKQorCQkJCWxpc3RBY2Nlc3MuQXBwZW5kVGV4dCAoYWNjZXNzKTsKKworCQkJbGlzdEFj Y2Vzcy5BY3RpdmUgPSBvcHRpb25zLkdlbmVyYXRlSW50ZXJuYWxUeXBlcyA/IDEgOiAwOwogCQl9 CiAJCQogCQlwdWJsaWMgQ2xpZW50T3B0aW9ucyBPcHRpb25zIHsKQEAgLTcxLDYgKzc2LDExIEBA IHB1YmxpYyBXQ0ZDb25maWdXaWRnZXQgKENsaWVudE9wdGlvbnMgb3B0aW9ucykKIAkJCXR5cGVv ZiAoU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5KSwKIAkJCXR5 cGVvZiAoU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLk9yZGVyZWREaWN0aW9uYXJ5KQog CQl9OworCisJCXN0YXRpYyByZWFkb25seSBMaXN0PHN0cmluZz4gQWNjZXNzR2VuZXJhdGlvblR5 cGVzID0gbmV3IExpc3Q8c3RyaW5nPiB7CisJCQkiUHVibGljIiwKKwkJCSJJbnRlcm5hbCIKKwkJ fTsKIAkJCiAJCXB1YmxpYyBib29sIE1vZGlmaWVkIHsKIAkJCWdldDsKQEAgLTE2Miw2ICsxNzIs MTEgQEAgaW50ZXJuYWwgdm9pZCBVcGRhdGUgKCkKIAkJewogCQkJVXBkYXRlQm94IChsaXN0Q29s bGVjdGlvbiwgIkxpc3QiLCBsaXN0VHlwZXMpOwogCQkJVXBkYXRlQm94IChkaWN0aW9uYXJ5Q29s bGVjdGlvbiwgIkRpY3Rpb25hcnkiLCBkaWN0VHlwZXMpOworCisJCQlpZiAobGlzdEFjY2Vzcy5B Y3RpdmUgIT0gKE9wdGlvbnMuR2VuZXJhdGVJbnRlcm5hbFR5cGVzID8gMSA6IDApKSB7CisJCQkJ T3B0aW9ucy5HZW5lcmF0ZUludGVybmFsVHlwZXMgPSAhT3B0aW9ucy5HZW5lcmF0ZUludGVybmFs VHlwZXM7CisJCQkJTW9kaWZpZWQgPSB0cnVlOworCQkJfQogCQl9CiAJfQogfQ0KDQpNb2RpZmll ZDogbWFpbi9zcmMvYWRkaW5zL01vbm9EZXZlbG9wLldlYlJlZmVyZW5jZXMvZ3RrLWd1aS9Nb25v RGV2ZWxvcC5XZWJSZWZlcmVuY2VzLkRpYWxvZ3MuV0NGQ29uZmlnV2lkZ2V0LmNzDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQpAQCAtOSw4ICs5LDEwIEBAIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFdDRkNvbmZpZ1dpZGdl dAogCQlwcml2YXRlIGdsb2JhbDo6R3RrLkNvbWJvQm94IGRpY3Rpb25hcnlDb2xsZWN0aW9uOwog CQlwcml2YXRlIGdsb2JhbDo6R3RrLkxhYmVsIGxhYmVsMTsKIAkJcHJpdmF0ZSBnbG9iYWw6Okd0 ay5MYWJlbCBsYWJlbDI7CisJCXByaXZhdGUgZ2xvYmFsOjpHdGsuTGFiZWwgbGFiZWwzOworCQlw cml2YXRlIGdsb2JhbDo6R3RrLkNvbWJvQm94IGxpc3RBY2Nlc3M7CiAJCXByaXZhdGUgZ2xvYmFs OjpHdGsuQ29tYm9Cb3ggbGlzdENvbGxlY3Rpb247Ci0JCQorCiAJCXByb3RlY3RlZCB2aXJ0dWFs IHZvaWQgQnVpbGQgKCkKIAkJewogCQkJZ2xvYmFsOjpTdGV0aWMuR3VpLkluaXRpYWxpemUgKHRo aXMpOwpAQCAtNTgsMTcgKzYwLDM4IEBAIHByb3RlY3RlZCB2aXJ0dWFsIHZvaWQgQnVpbGQgKCkK IAkJCXczLlhPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg0KSk7CiAJCQl3 My5ZT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucykoNCkpOwogCQkJLy8gQ29u dGFpbmVyIGNoaWxkIHdjZk9wdGlvbnMuR3RrLlRhYmxlK1RhYmxlQ2hpbGQKKwkJCXRoaXMubGFi ZWwzID0gbmV3IGdsb2JhbDo6R3RrLkxhYmVsICgpOworCQkJdGhpcy5sYWJlbDMuTmFtZSA9ICJs YWJlbDMiOworCQkJdGhpcy5sYWJlbDMuTGFiZWxQcm9wID0gZ2xvYmFsOjpNb25vLlVuaXguQ2F0 YWxvZy5HZXRTdHJpbmcgKCJBY2Nlc3MgbGV2ZWw6Iik7CisJCQl0aGlzLndjZk9wdGlvbnMuQWRk ICh0aGlzLmxhYmVsMyk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc0ID0gKChn bG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGFiZWwz XSkpOworCQkJdzQuVG9wQXR0YWNoID0gKCh1aW50KSgyKSk7CisJCQl3NC5Cb3R0b21BdHRhY2gg PSAoKHVpbnQpKDMpKTsKKwkJCXc0LlhPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRp b25zKSg0KSk7CisJCQl3NC5ZT3B0aW9ucyA9ICgoZ2xvYmFsOjpHdGsuQXR0YWNoT3B0aW9ucyko NCkpOworCQkJLy8gQ29udGFpbmVyIGNoaWxkIHdjZk9wdGlvbnMuR3RrLlRhYmxlK1RhYmxlQ2hp bGQKKwkJCXRoaXMubGlzdEFjY2VzcyA9IGdsb2JhbDo6R3RrLkNvbWJvQm94Lk5ld1RleHQgKCk7 CisJCQl0aGlzLmxpc3RBY2Nlc3MuTmFtZSA9ICJsaXN0QWNjZXNzIjsKKwkJCXRoaXMud2NmT3B0 aW9ucy5BZGQgKHRoaXMubGlzdEFjY2Vzcyk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNo aWxkIHc1ID0gKChnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMg W3RoaXMubGlzdEFjY2Vzc10pKTsKKwkJCXc1LlRvcEF0dGFjaCA9ICgodWludCkoMikpOworCQkJ dzUuQm90dG9tQXR0YWNoID0gKCh1aW50KSgzKSk7CisJCQl3NS5MZWZ0QXR0YWNoID0gKCh1aW50 KSgxKSk7CisJCQl3NS5SaWdodEF0dGFjaCA9ICgodWludCkoMikpOworCQkJdzUuWE9wdGlvbnMg PSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9wdGlvbnMpKDcpKTsKKwkJCXc1LllPcHRpb25zID0gKChn bG9iYWw6Okd0ay5BdHRhY2hPcHRpb25zKSg0KSk7CisJCQkvLyBDb250YWluZXIgY2hpbGQgd2Nm T3B0aW9ucy5HdGsuVGFibGUrVGFibGVDaGlsZAogCQkJdGhpcy5saXN0Q29sbGVjdGlvbiA9IGds b2JhbDo6R3RrLkNvbWJvQm94Lk5ld1RleHQgKCk7CiAJCQl0aGlzLmxpc3RDb2xsZWN0aW9uLk5h bWUgPSAibGlzdENvbGxlY3Rpb24iOwogCQkJdGhpcy53Y2ZPcHRpb25zLkFkZCAodGhpcy5saXN0 Q29sbGVjdGlvbik7Ci0JCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc0ID0gKChnbG9i YWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGlzdENvbGxl Y3Rpb25dKSk7Ci0JCQl3NC5MZWZ0QXR0YWNoID0gKCh1aW50KSgxKSk7Ci0JCQl3NC5SaWdodEF0 dGFjaCA9ICgodWludCkoMikpOwotCQkJdzQuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFj aE9wdGlvbnMpKDcpKTsKLQkJCXc0LllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRp b25zKSg0KSk7CisJCQlnbG9iYWw6Okd0ay5UYWJsZS5UYWJsZUNoaWxkIHc2ID0gKChnbG9iYWw6 Okd0ay5UYWJsZS5UYWJsZUNoaWxkKSh0aGlzLndjZk9wdGlvbnMgW3RoaXMubGlzdENvbGxlY3Rp b25dKSk7CisJCQl3Ni5MZWZ0QXR0YWNoID0gKCh1aW50KSgxKSk7CisJCQl3Ni5SaWdodEF0dGFj aCA9ICgodWludCkoMikpOworCQkJdzYuWE9wdGlvbnMgPSAoKGdsb2JhbDo6R3RrLkF0dGFjaE9w dGlvbnMpKDcpKTsKKwkJCXc2LllPcHRpb25zID0gKChnbG9iYWw6Okd0ay5BdHRhY2hPcHRpb25z KSg0KSk7CiAJCQl0aGlzLmRpYWxvZzFfVkJveC5BZGQgKHRoaXMud2NmT3B0aW9ucyk7Ci0JCQln bG9iYWw6Okd0ay5Cb3guQm94Q2hpbGQgdzUgPSAoKGdsb2JhbDo6R3RrLkJveC5Cb3hDaGlsZCko dGhpcy5kaWFsb2cxX1ZCb3ggW3RoaXMud2NmT3B0aW9uc10pKTsKLQkJCXc1LlBvc2l0aW9uID0g MDsKKwkJCWdsb2JhbDo6R3RrLkJveC5Cb3hDaGlsZCB3NyA9ICgoZ2xvYmFsOjpHdGsuQm94LkJv eENoaWxkKSh0aGlzLmRpYWxvZzFfVkJveCBbdGhpcy53Y2ZPcHRpb25zXSkpOworCQkJdzcuUG9z aXRpb24gPSAwOwogCQkJdGhpcy5BZGQgKHRoaXMuZGlhbG9nMV9WQm94KTsKIAkJCWlmICgodGhp cy5DaGlsZCAhPSBudWxsKSkgewogCQkJCXRoaXMuQ2hpbGQuU2hvd0FsbCAoKTsNCg0KTW9kaWZp ZWQ6IG1haW4vc3JjL2FkZGlucy9Nb25vRGV2ZWxvcC5XZWJSZWZlcmVuY2VzL2d0ay1ndWkvZ3Vp LnN0ZXRpYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KQEAgLTY0NiwxMiArNjQ2LDYgQEAKICAgICAgICAgICAgICAg PHBsYWNlaG9sZGVyIC8+CiAgICAgICAgICAgICA8L2NoaWxkPgogICAgICAgICAgICAgPGNoaWxk PgotICAgICAgICAgICAgICA8cGxhY2Vob2xkZXIgLz4KLSAgICAgICAgICAgIDwvY2hpbGQ+Ci0g ICAgICAgICAgICA8Y2hpbGQ+Ci0gICAgICAgICAgICAgIDxwbGFjZWhvbGRlciAvPgotICAgICAg ICAgICAgPC9jaGlsZD4KLSAgICAgICAgICAgIDxjaGlsZD4KICAgICAgICAgICAgICAgPHdpZGdl dCBjbGFzcz0iR3RrLkNvbWJvQm94IiBpZD0iZGljdGlvbmFyeUNvbGxlY3Rpb24iPgogICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJOYW1lIiAvPgogICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJJc1RleHRDb21ibyI+VHJ1ZTwvcHJvcGVydHk+CkBAIC03MTIsNiAr NzA2LDQ3IEBACiAgICAgICAgICAgICAgIDwvcGFja2luZz4KICAgICAgICAgICAgIDwvY2hpbGQ+ CiAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5M YWJlbCIgaWQ9ImxhYmVsMyI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJl ck5hbWUiIC8+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IkxhYmVsUHJvcCIgdHJh bnNsYXRhYmxlPSJ5ZXMiPkFjY2VzcyBsZXZlbDo8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8 L3dpZGdldD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9IlRvcEF0dGFjaCI+MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9IkJvdHRvbUF0dGFjaCI+MzwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9IkF1dG9TaXplIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0iWE9wdGlvbnMiPkZpbGw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJZT3B0aW9ucyI+RmlsbDwvcHJvcGVydHk+CisgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9IlhFeHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iWEZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJYU2hyaW5rIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9IllFeHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0iWUZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJZU2hyaW5rIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAg ICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICA8Y2hp bGQ+CisgICAgICAgICAgICAgIDx3aWRnZXQgY2xhc3M9Ikd0ay5Db21ib0JveCIgaWQ9Imxpc3RB Y2Nlc3MiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJNZW1iZXJOYW1lIiAvPgor ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJJc1RleHRDb21ibyI+VHJ1ZTwvcHJvcGVy dHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ikl0ZW1zIiB0cmFuc2xhdGFibGU9 InllcyIgLz4KKyAgICAgICAgICAgICAgPC93aWRnZXQ+CisgICAgICAgICAgICAgIDxwYWNraW5n PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJUb3BBdHRhY2giPjI8L3Byb3BlcnR5 PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJCb3R0b21BdHRhY2giPjM8L3Byb3Bl cnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJMZWZ0QXR0YWNoIj4xPC9wcm9w ZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iUmlnaHRBdHRhY2giPjI8L3By b3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJBdXRvU2l6ZSI+RmFsc2U8 L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJYT3B0aW9ucyI+RXhw YW5kLCBTaHJpbmssIEZpbGw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJZT3B0aW9ucyI+RmlsbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9IlhFeHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJYRmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9IlhTaHJpbmsiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJZRXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9IllGaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0iWVNocmluayI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tp bmc+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgPGNoaWxkPgogICAgICAgICAg ICAgICA8d2lkZ2V0IGNsYXNzPSJHdGsuQ29tYm9Cb3giIGlkPSJsaXN0Q29sbGVjdGlvbiI+CiAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Ik1lbWJlck5hbWUiIC8+CiAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9IklzVGV4dENvbWJvIj5UcnVlPC9wcm9wZXJ0eT4NCg0KTW9k aWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29udHJvbC9Nb25vRGV2ZWxvcC5WZXJzaW9u Q29udHJvbC5HaXQuVGVzdHMvQmFzZUdpdFJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K QEAgLTMyLDE0ICszMiwxNCBAQAogdXNpbmcgTkdpdC5BcGk7DQogdXNpbmcgTlVuaXQuRnJhbWV3 b3JrOw0KIHVzaW5nIFN5c3RlbS5JTzsNCi11c2luZyBTeXN0ZW07DQogdXNpbmcgTkdpdC5TdG9y YWdlLkZpbGU7DQogdXNpbmcgTkdpdC5SZXZ3YWxrOw0KK3VzaW5nIFN5c3RlbS5MaW5xOw0KIA0K IG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQuVGVzdHMNCiB7DQogCVtU ZXN0Rml4dHVyZV0NCi0JcHVibGljIGNsYXNzIEJhc2VHaXRVdGlsc1Rlc3QgOiBCYXNlUmVwb1V0 aWxzVGVzdA0KKwlzZWFsZWQgY2xhc3MgQmFzZUdpdFV0aWxzVGVzdCA6IEJhc2VSZXBvVXRpbHNU ZXN0DQogCXsNCiAJCVtTZXRVcF0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpA QCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpCiAJCQlSZXBv TG9jYXRpb24gPSAiZmlsZTovLy8iICsgUm9vdFVybC5GdWxsUGF0aCArICJyZXBvLmdpdCI7DQog DQogCQkJLy8gSW5pdGlhbGl6ZSB0aGUgYmFyZSByZXBvLg0KLQkJCUluaXRDb21tYW5kIGNpID0g bmV3IEluaXRDb21tYW5kICgpOw0KKwkJCXZhciBjaSA9IG5ldyBJbml0Q29tbWFuZCAoKTsNCiAJ CQljaS5TZXREaXJlY3RvcnkgKG5ldyBTaGFycGVuLkZpbGVQYXRoIChSb290VXJsLkZ1bGxQYXRo ICsgInJlcG8uZ2l0IikpOw0KIAkJCWNpLlNldEJhcmUgKHRydWUpOw0KIAkJCWNpLkNhbGwgKCk7 DQotCQkJRmlsZVJlcG9zaXRvcnkgYmFyZSA9IG5ldyBGaWxlUmVwb3NpdG9yeSAobmV3IFNoYXJw ZW4uRmlsZVBhdGggKFJvb3RVcmwuRnVsbFBhdGggKyAicmVwby5naXQiKSk7DQorCQkJdmFyIGJh cmUgPSBuZXcgRmlsZVJlcG9zaXRvcnkgKG5ldyBTaGFycGVuLkZpbGVQYXRoIChSb290VXJsLkZ1 bGxQYXRoICsgInJlcG8uZ2l0IikpOw0KIAkJCXN0cmluZyBicmFuY2ggPSBDb25zdGFudHMuUl9I RUFEUyArICJtYXN0ZXIiOw0KIA0KIAkJCVJlZlVwZGF0ZSBoZWFkID0gYmFyZS5VcGRhdGVSZWYg KENvbnN0YW50cy5IRUFEKTsNCkBAIC0xMzIsMjEgKzEzMiwyMSBAQCBwdWJsaWMgb3ZlcnJpZGUg dm9pZCBNb3Zlc0RpcmVjdG9yeSAoKQogDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmV2aXNpb24g R2V0SGVhZFJldmlzaW9uICgpDQogCQl7DQotCQkJR2l0UmVwb3NpdG9yeSByZXBvMiA9IChHaXRS ZXBvc2l0b3J5KVJlcG87DQotCQkJUmV2V2FsayBydyA9IG5ldyBSZXZXYWxrIChyZXBvMi5Sb290 UmVwb3NpdG9yeSk7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQl2 YXIgcncgPSBuZXcgUmV2V2FsayAocmVwbzIuUm9vdFJlcG9zaXRvcnkpOw0KIAkJCU9iamVjdElk IGhlYWRJZCA9IHJlcG8yLlJvb3RSZXBvc2l0b3J5LlJlc29sdmUgKENvbnN0YW50cy5IRUFEKTsN CiAJCQlpZiAoaGVhZElkID09IG51bGwpDQogCQkJCXJldHVybiBudWxsOw0KIA0KIAkJCVJldkNv bW1pdCBjb21taXQgPSBydy5QYXJzZUNvbW1pdCAoaGVhZElkKTsNCi0JCQlHaXRSZXZpc2lvbiBy ZXYgPSBuZXcgR2l0UmV2aXNpb24gKFJlcG8sIHJlcG8yLlJvb3RSZXBvc2l0b3J5LCBjb21taXQu SWQuTmFtZSk7DQorCQkJdmFyIHJldiA9IG5ldyBHaXRSZXZpc2lvbiAoUmVwbywgcmVwbzIuUm9v dFJlcG9zaXRvcnksIGNvbW1pdC5JZC5OYW1lKTsNCiAJCQlyZXYuQ29tbWl0ID0gY29tbWl0Ow0K IAkJCXJldHVybiByZXY7DQogCQl9DQogDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBQb3N0 Q29tbWl0IChSZXBvc2l0b3J5IHJlcG8pDQogCQl7DQotCQkJR2l0UmVwb3NpdG9yeSByZXBvMiA9 IChHaXRSZXBvc2l0b3J5KXJlcG87DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpcmVw bzsNCiAJCQlyZXBvMi5QdXNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3Jp bmcuTnVsbFByb2dyZXNzTW9uaXRvciAoKSwgcmVwbzIuR2V0Q3VycmVudFJlbW90ZSAoKSwgcmVw bzIuR2V0Q3VycmVudEJyYW5jaCAoKSk7DQogCQl9DQogDQpAQCAtMTYxLDYgKzE2MSwxODcgQEAg cHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgQmxhbWVFeHRyYUludGVybmFscyAoQW5ub3RhdGlvbiBb XSBhbm5vdGF0aW9ucykKIAkJCUFzc2VydC5Jc1RydWUgKGFubm90YXRpb25zIFsyXS5IYXNEYXRl KTsNCiAJCX0NCiANCisJCVtUZXN0XQ0KKwkJW0lnbm9yZSAoInRoaXMgaXMgYSBuZXcgdGVzdCB3 aGljaCBkb2Vzbid0IHBhc3Mgb24gTWFjIHlldCIpXQ0KKwkJcHVibGljIHZvaWQgVGVzdEdpdFN0 YXNoICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRvcnkpUmVwbzsNCisJCQlB ZGRGaWxlICgiZmlsZTIiLCAibm90aGluZyIsIHRydWUsIHRydWUpOw0KKwkJCUFkZEZpbGUgKCJm aWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgZmFsc2UpOw0KKwkJCXJlcG8yLkdldFN0YXNoZXMgKCkuQ3Jl YXRlIChuZXcgTnVsbFByb2dyZXNzTW9uaXRvciAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoIUZp bGUuRXhpc3RzIChSb290Q2hlY2tvdXQgKyAiZmlsZTEiKSwgIlN0YXNoIGNyZWF0aW9uIGZhaWx1 cmUiKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLlBvcCAobmV3IE51bGxQcm9ncmVzc01vbml0 b3IgKCkpOw0KKw0KKwkJCVZlcnNpb25JbmZvIHZpID0gcmVwbzIuR2V0VmVyc2lvbkluZm8gKFJv b3RDaGVja291dCArICJmaWxlMSIsIFZlcnNpb25JbmZvUXVlcnlGbGFncy5JZ25vcmVDYWNoZSk7 DQorCQkJQXNzZXJ0LkFyZUVxdWFsIChWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgdmkuU3Rh dHVzICYgVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsICJTdGFzaCBwb3AgZmFpbHVyZSIpOw0K KwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlbSWdub3JlICgidGhpcyBpcyBhIG5ldyB0ZXN0IHdoaWNo IGRvZXNuJ3QgcGFzcyBvbiBNYWMgeWV0IildDQorCQlwdWJsaWMgdm9pZCBUZXN0R2l0QnJhbmNo Q3JlYXRpb24gKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0K Kw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJcmVwbzIu Q3JlYXRlQnJhbmNoICgiYnJhbmNoMSIsIG51bGwpOw0KKw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJh bmNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNz TW9uaXRvciAoKSwgImJyYW5jaDEiKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwgKCJicmFuY2gxIiwg cmVwbzIuR2V0Q3VycmVudEJyYW5jaCAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAoRmlsZS5FeGlz dHMgKFJvb3RDaGVja291dCArICJmaWxlMSIpLCAiQnJhbmNoIG5vdCBpbmhlcml0aW5nIGZyb20g Y3VycmVudC4iKTsNCisNCisJCQlBZGRGaWxlICgiZmlsZTIiLCAidGV4dCIsIHRydWUsIGZhbHNl KTsNCisJCQlyZXBvMi5DcmVhdGVCcmFuY2ggKCJicmFuY2gyIiwgbnVsbCk7DQorCQkJcmVwbzIu U3dpdGNoVG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5O dWxsUHJvZ3Jlc3NNb25pdG9yICgpLCAiYnJhbmNoMiIpOw0KKwkJCUFzc2VydC5Jc1RydWUgKCFG aWxlLkV4aXN0cyAoUm9vdENoZWNrb3V0ICsgImZpbGUyIiksICJVbmNvbW1pdHRlZCBjaGFuZ2Vz IHdlcmUgbm90IHN0YXNoZWQiKTsNCisJCQlyZXBvMi5HZXRTdGFzaGVzICgpLlBvcCAobmV3IE51 bGxQcm9ncmVzc01vbml0b3IgKCkpOw0KKw0KKwkJCUFzc2VydC5Jc1RydWUgKEZpbGUuRXhpc3Rz IChSb290Q2hlY2tvdXQgKyAiZmlsZTIiKSwgIlVuY29tbWl0dGVkIGNoYW5nZXMgd2VyZSBub3Qg c3Rhc2hlZCBjb3JyZWN0bHkiKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1v bm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCks ICJtYXN0ZXIiKTsNCisJCQlyZXBvMi5SZW1vdmVCcmFuY2ggKCJicmFuY2gxIik7DQorCQkJQXNz ZXJ0LklzRmFsc2UgKHJlcG8yLkdldEJyYW5jaGVzICgpLkFueSAoYiA9PiBiLk5hbWUgPT0gImJy YW5jaDEiKSwgIkZhaWxlZCB0byBkZWxldGUgYnJhbmNoIik7DQorDQorCQkJcmVwbzIuUmVuYW1l QnJhbmNoICgiYnJhbmNoMiIsICJicmFuY2gzIik7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIu R2V0QnJhbmNoZXMgKCkuQW55IChiID0+IGIuTmFtZSA9PSAiYnJhbmNoMyIpICYmIHJlcG8yLkdl dEJyYW5jaGVzICgpLkFsbCAoYiA9PiBiLk5hbWUgIT0gImJyYW5jaDIiKSwgIkZhaWxlZCB0byBy ZW5hbWUgYnJhbmNoIik7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCVtJZ25vcmUgKCJ0aGlzIGlz IGEgbmV3IHRlc3Qgd2hpY2ggZG9lc24ndCBwYXNzIG9uIE1hYyB5ZXQiKV0NCisJCXB1YmxpYyB2 b2lkIFRlc3RHaXRTeW5jQnJhbmNoZXMgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVw b3NpdG9yeSlSZXBvOw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7 DQorCQkJUG9zdENvbW1pdCAocmVwbzIpOw0KKw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJy YW5jaDMiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9w LkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gz Iik7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgImFzZGYiLCB0cnVlLCB0cnVlKTsNCisJCQlyZXBv Mi5QdXNoIChuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dy ZXNzTW9uaXRvciAoKSwgIm9yaWdpbiIsICJicmFuY2gzIik7DQorDQorCQkJcmVwbzIuU3dpdGNo VG9CcmFuY2ggKG5ldyBNb25vRGV2ZWxvcC5Db3JlLlByb2dyZXNzTW9uaXRvcmluZy5OdWxsUHJv Z3Jlc3NNb25pdG9yICgpLCAibWFzdGVyIik7DQorDQorCQkJcmVwbzIuQ3JlYXRlQnJhbmNoICgi YnJhbmNoNCIsICJvcmlnaW4vYnJhbmNoMyIpOw0KKwkJCXJlcG8yLlN3aXRjaFRvQnJhbmNoIChu ZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFByb2dyZXNzTW9uaXRv ciAoKSwgImJyYW5jaDQiKTsNCisJCQlBc3NlcnQuSXNUcnVlIChGaWxlLkV4aXN0cyAoUm9vdENo ZWNrb3V0ICsgImZpbGUyIiksICJUcmFja2luZyByZW1vdGUgaXMgbm90IGdyYWJiaW5nIGNvcnJl Y3QgY29tbWl0cyIpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0UHVz aENoYW5nZXNldCAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87 DQorCQkJQWRkRmlsZSAoImZpbGUiLCAibWVoIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1p dCAocmVwbzIpOw0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7 DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQyIiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJQ2hh bmdlU2V0IGRpZmYgPSByZXBvMi5HZXRQdXNoQ2hhbmdlU2V0ICgib3JpZ2luIiwgIm1hc3RlciIp Ow0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMiwgZGlmZi5JdGVtcy5Db3VudCAoKSk7DQorDQorCQkJ Q2hhbmdlU2V0SXRlbSBpdGVtID0gZGlmZi5HZXRGaWxlSXRlbSAoUm9vdENoZWNrb3V0ICsgImZp bGUxIik7DQorCQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFs IChWZXJzaW9uU3RhdHVzLlNjaGVkdWxlZEFkZCwgaXRlbS5TdGF0dXMgJiBWZXJzaW9uU3RhdHVz LlNjaGVkdWxlZEFkZCk7DQorDQorCQkJaXRlbSA9IGRpZmYuR2V0RmlsZUl0ZW0gKFJvb3RDaGVj a291dCArICJmaWxlMSIpOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2Vy dC5BcmVFcXVhbCAoVmVyc2lvblN0YXR1cy5TY2hlZHVsZWRBZGQsIGl0ZW0uU3RhdHVzICYgVmVy c2lvblN0YXR1cy5TY2hlZHVsZWRBZGQpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlbSWdub3Jl ICgiR2V0UHVzaERpZmYgY29udGVudCBpcyBhbHdheXMgZW1wdHkiKV0NCisJCXB1YmxpYyB2b2lk IFRlc3RQdXNoRGlmZiAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJl cG87DQorCQkJQWRkRmlsZSAoImZpbGUiLCAibWVoIiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENv bW1pdCAocmVwbzIpOw0KKw0KKwkJCUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1 ZSk7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRleHQyIiwgdHJ1ZSwgdHJ1ZSk7DQorDQorCQkJ RGlmZkluZm9bXSBkaWZmID0gcmVwbzIuR2V0UHVzaERpZmYgKCJvcmlnaW4iLCAibWFzdGVyIik7 DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgyLCBkaWZmLkxlbmd0aCk7DQorDQorCQkJRGlmZkluZm8g aXRlbSA9IGRpZmYgWzBdOw0KKwkJCUFzc2VydC5Jc05vdE51bGwgKGl0ZW0pOw0KKwkJCUFzc2Vy dC5BcmVFcXVhbCAoImZpbGUxIiwgaXRlbS5GaWxlTmFtZS5GaWxlTmFtZSk7DQorCQkJLy9Bc3Nl cnQuQXJlRXF1YWwgKCJ0ZXh0IiwgaXRlbS5Db250ZW50KTsNCisNCisJCQlpdGVtID0gZGlmZiBb MV07DQorCQkJQXNzZXJ0LklzTm90TnVsbCAoaXRlbSk7DQorCQkJQXNzZXJ0LkFyZUVxdWFsICgi ZmlsZTIiLCBpdGVtLkZpbGVOYW1lLkZpbGVOYW1lKTsNCisJCQkvL0Fzc2VydC5BcmVFcXVhbCAo InRleHQyIiwgaXRlbS5Db250ZW50KTsNCisJCX0NCisNCisJCXByb3RlY3RlZCBvdmVycmlkZSB2 b2lkIFRlc3RWYWxpZFVybCAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5 KVJlcG87DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImdpdEBnaXRodWIu Y29tOm1vbm8vbW9ub2RldmVsb3AiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxW YWxpZCAoImdpdDovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJ QXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoInNzaDovL3VzZXJAaG9zdC5jb206ODAv bW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxW YWxpZCAoImh0dHA6Ly9naXRodWIuY29tOjgwL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJ CUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFsaWQgKCJodHRwczovL2dpdGh1Yi5jb206ODAv bW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxW YWxpZCAoImZ0cDovL2dpdGh1Yi5jb206ODAvbW9uby9tb25vZGV2ZWxvcC5naXQiKSk7DQorCQkJ QXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImZ0cHM6Ly9naXRodWIuY29tOjgwL21v bm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzVXJsVmFs aWQgKCJmaWxlOi8vL21vbm8vbW9ub2RldmVsb3AuZ2l0IikpOw0KKwkJCUFzc2VydC5Jc1RydWUg KHJlcG8yLklzVXJsVmFsaWQgKCJyc3luYzovL2dpdGh1Yi5jb20vbW9uby9tb25vZGV2ZWxwby5n aXQiKSk7DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RSZW1vdGUgKCkN CisJCXsNCisJCQl2YXIgcmVwbzIgPSAoR2l0UmVwb3NpdG9yeSlSZXBvOw0KKw0KKwkJCUFzc2Vy dC5BcmVFcXVhbCAoIm9yaWdpbiIsIHJlcG8yLkdldEN1cnJlbnRSZW1vdGUgKCkpOw0KKw0KKwkJ CUFkZEZpbGUgKCJmaWxlMSIsICJ0ZXh0IiwgdHJ1ZSwgdHJ1ZSk7DQorCQkJUG9zdENvbW1pdCAo cmVwbzIpOw0KKwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisJCQly ZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9y aW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJQWRkRmlsZSAoImZp bGUyIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlQb3N0Q29tbWl0IChyZXBvMik7DQorCQkJ QXNzZXJ0LkFyZUVxdWFsICgyLCByZXBvMi5HZXRCcmFuY2hlcyAoKS5Db3VudCAoKSk7DQorCQkJ QXNzZXJ0LkFyZUVxdWFsICgxLCByZXBvMi5HZXRSZW1vdGVzICgpLkNvdW50ICgpKTsNCisNCisJ CQlyZXBvMi5SZW5hbWVSZW1vdGUgKCJvcmlnaW4iLCAib3RoZXIiKTsNCisJCQlBc3NlcnQuQXJl RXF1YWwgKCJvdGhlciIsIHJlcG8yLkdldEN1cnJlbnRSZW1vdGUgKCkpOw0KKw0KKwkJCXJlcG8y LlJlbW92ZVJlbW90ZSAoIm90aGVyIik7DQorCQkJQXNzZXJ0LklzRmFsc2UgKHJlcG8yLkdldFJl bW90ZXMgKCkuQW55ICgpKTsNCisJCX0NCisNCisJCVtUZXN0XQ0KKwkJW0lnbm9yZSAoInRoaXMg aXMgYSBuZXcgdGVzdCB3aGljaCBkb2Vzbid0IHBhc3Mgb24gTWFjIHlldCIpXQ0KKwkJcHVibGlj IHZvaWQgVGVzdElzTWVyZ2VkICgpDQorCQl7DQorCQkJdmFyIHJlcG8yID0gKEdpdFJlcG9zaXRv cnkpUmVwbzsNCisJCQlBZGRGaWxlICgiZmlsZTEiLCAidGV4dCIsIHRydWUsIHRydWUpOw0KKw0K KwkJCUFzc2VydC5Jc1RydWUgKHJlcG8yLklzQnJhbmNoTWVyZ2VkICgibWFzdGVyIikpOw0KKw0K KwkJCXJlcG8yLkNyZWF0ZUJyYW5jaCAoImJyYW5jaDEiLCBudWxsKTsNCisJCQlyZXBvMi5Td2l0 Y2hUb0JyYW5jaCAobmV3IE1vbm9EZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQ cm9ncmVzc01vbml0b3IgKCksICJicmFuY2gxIik7DQorCQkJQWRkRmlsZSAoImZpbGUyIiwgInRl eHQiLCB0cnVlLCB0cnVlKTsNCisNCisJCQlyZXBvMi5Td2l0Y2hUb0JyYW5jaCAobmV3IE1vbm9E ZXZlbG9wLkNvcmUuUHJvZ3Jlc3NNb25pdG9yaW5nLk51bGxQcm9ncmVzc01vbml0b3IgKCksICJt YXN0ZXIiKTsNCisJCQlBc3NlcnQuSXNGYWxzZSAocmVwbzIuSXNCcmFuY2hNZXJnZWQgKCJicmFu Y2gxIikpOw0KKwkJCXJlcG8yLk1lcmdlICgiYnJhbmNoMSIsIEdpdFVwZGF0ZU9wdGlvbnMuTm9y bWFsVXBkYXRlLCBuZXcgTW9ub0RldmVsb3AuQ29yZS5Qcm9ncmVzc01vbml0b3JpbmcuTnVsbFBy b2dyZXNzTW9uaXRvciAoKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNCcmFuY2hNZXJn ZWQgKCJicmFuY2gxIikpOw0KKwkJfQ0KKw0KKwkJW1Rlc3RdDQorCQlwdWJsaWMgdm9pZCBUZXN0 VGFncyAoKQ0KKwkJew0KKwkJCXZhciByZXBvMiA9IChHaXRSZXBvc2l0b3J5KVJlcG87DQorCQkJ QWRkRmlsZSAoImZpbGUxIiwgInRleHQiLCB0cnVlLCB0cnVlKTsNCisJCQlyZXBvMi5BZGRUYWcg KCJ0YWcxIiwgR2V0SGVhZFJldmlzaW9uICgpLCAibXktdGFnIik7DQorCQkJQXNzZXJ0LkFyZUVx dWFsICgxLCByZXBvMi5HZXRUYWdzICgpLkNvdW50ICgpKTsNCisJCQlBc3NlcnQuQXJlRXF1YWwg KCJ0YWcxIiwgcmVwbzIuR2V0VGFncyAoKS5GaXJzdCAoKSk7DQorCQkJcmVwbzIuUmVtb3ZlVGFn ICgidGFnMSIpOw0KKwkJCUFzc2VydC5BcmVFcXVhbCAoMCwgcmVwbzIuR2V0VGFncyAoKS5Db3Vu dCAoKSk7DQorCQl9DQorDQorCQkvLyBUT0RPOiBUZXN0IHJlYmFzZSBhbmQgbWVyZ2UgLSBUaGlz IGlzIGJyb2tlbiBvbiBXaW5kb3dzDQorDQogCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgUmVwb3NpdG9y eSBHZXRSZXBvIChzdHJpbmcgcGF0aCwgc3RyaW5nIHVybCkNCiAJCXsNCiAJCQlyZXR1cm4gbmV3 IEdpdFJlcG9zaXRvcnkgKHBhdGgsIHVybCk7DQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5z L1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLkdpdC5UZXN0cy9CYXNl UmVwb3NpdG9yeVRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNw YWNlIE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlRlc3RzCiB7CiAJW1Rlc3RGaXh0dXJlXQot CXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlUmVwb1V0aWxzVGVzdAorCWFic3RyYWN0IGNsYXNz IEJhc2VSZXBvVXRpbHNUZXN0CiAJewogCQkvLyBbR2l0XSBTZXQgdXNlciBhbmQgZW1haWwuCiAJ CXByb3RlY3RlZCBjb25zdCBzdHJpbmcgQXV0aG9yID0gImF1dGhvciI7CkBAIC0xMjUsNiArMTI1 LDE0IEBAIHB1YmxpYyB2b2lkIFJpZ2h0UmVwb3NpdG9yeURldGVjdGlvbiAoKQogCQlwcm90ZWN0 ZWQgYWJzdHJhY3QgTlVuaXQuRnJhbWV3b3JrLkNvbnN0cmFpbnRzLklSZXNvbHZlQ29uc3RyYWlu dCBJc0NvcnJlY3RUeXBlICgpOwogCiAJCVtUZXN0XQorCQlwdWJsaWMgdm9pZCBVcmxJc1ZhbGlk ICgpCisJCXsKKwkJCVRlc3RWYWxpZFVybCAoKTsKKwkJfQorCisJCXByb3RlY3RlZCBhYnN0cmFj dCB2b2lkIFRlc3RWYWxpZFVybCAoKTsKKworCQlbVGVzdF0KIAkJLy8gVGVzdHMgUmVwb3NpdG9y eS5DaGVja291dC4KIAkJcHVibGljIHZvaWQgQ2hlY2tvdXRFeGlzdHMgKCkKIAkJew0KDQpNb2Rp ZmllZDogbWFpbi9zcmMvYWRkaW5zL1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25D b250cm9sLkdpdC9Nb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5HaXQvR2l0Q3JlZGVudGlhbHMu Y3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCkBAIC03NSw4ICs3NSw5IEBAIHB1YmxpYyBvdmVycmlkZSBib29sIEdl dCAoVVJJaXNoIHVyaSwgcGFyYW1zIENyZWRlbnRpYWxJdGVtW10gaXRlbXMpCiAJCQkJCiAJCQlI YXNSZXNldCA9IGZhbHNlOwogCQkJaWYgKHJlc3VsdCkgeworCQkJCXZhciB1c2VyID0gaXRlbXMu T2ZUeXBlPENyZWRlbnRpYWxJdGVtLlVzZXJuYW1lPiAoKS5GaXJzdE9yRGVmYXVsdCAoKTsKIAkJ CQlpZiAocGFzc3dvcmRJdGVtICE9IG51bGwpIHsKLQkJCQkJUGFzc3dvcmRTZXJ2aWNlLkFkZFdl YlBhc3N3b3JkIChuZXcgVXJpICh1cmkuVG9TdHJpbmcgKCkpLCBuZXcgc3RyaW5nIChwYXNzd29y ZEl0ZW0uR2V0VmFsdWUgKCkpKTsKKwkJCQkJUGFzc3dvcmRTZXJ2aWNlLkFkZFdlYlVzZXJOYW1l QW5kUGFzc3dvcmQgKG5ldyBVcmkgKHVyaS5Ub1N0cmluZyAoKSksIHVzZXIuR2V0VmFsdWUgKCks IG5ldyBzdHJpbmcgKHBhc3N3b3JkSXRlbS5HZXRWYWx1ZSAoKSkpOwogCQkJCX0gZWxzZSBpZiAo cGFzc3BocmFzZUl0ZW0gIT0gbnVsbCkgewogCQkJCQlQYXNzd29yZFNlcnZpY2UuQWRkV2ViUGFz c3dvcmQgKG5ldyBVcmkgKHVyaS5Ub1N0cmluZyAoKSksIHBhc3NwaHJhc2VJdGVtLkdldFZhbHVl ICgpKTsKIAkJCQl9CkBAIC0xMTgsMTAgKzExOSwxMCBAQCBzdGF0aWMgYm9vbCBUcnlHZXRVc2Vy bmFtZVBhc3N3b3JkIChVUklpc2ggdXJpLCBDcmVkZW50aWFsSXRlbVtdIGl0ZW1zLCBvdXQgQ3Jl ZAogCQkJaWYgKGl0ZW1zLkxlbmd0aCA9PSAyICYmIHVzZXJuYW1lICE9IG51bGwgJiYgcGFzc3dv cmQgIT0gbnVsbCkgewogCQkJCXBhc3N3b3JkSXRlbSA9IHBhc3N3b3JkOwogCi0JCQkJdmFyIHBh c3N3b3JkVmFsdWUgPSBQYXNzd29yZFNlcnZpY2UuR2V0V2ViUGFzc3dvcmQgKGFjdHVhbFVybCk7 Ci0JCQkJaWYgKHBhc3N3b3JkVmFsdWUgIT0gbnVsbCkgewotCQkJCQl1c2VybmFtZS5TZXRWYWx1 ZSAoYWN0dWFsVXJsLlVzZXJJbmZvKTsKLQkJCQkJcGFzc3dvcmQuU2V0VmFsdWVOb0NvcHkgKHBh c3N3b3JkVmFsdWUuVG9BcnJheSAoKSk7CisJCQkJdmFyIGNyZWQgPSBQYXNzd29yZFNlcnZpY2Uu R2V0V2ViVXNlck5hbWVBbmRQYXNzd29yZCAoYWN0dWFsVXJsKTsKKwkJCQlpZiAoY3JlZCAhPSBu dWxsKSB7CisJCQkJCXVzZXJuYW1lLlNldFZhbHVlIChjcmVkLkl0ZW0xKTsKKwkJCQkJcGFzc3dv cmQuU2V0VmFsdWVOb0NvcHkgKGNyZWQuSXRlbTIuVG9BcnJheSAoKSk7CiAJCQkJCXJldHVybiB0 cnVlOwogCQkJCX0KIAkJCX0gZWxzZSB7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVy c2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuR2l0L01vbm9EZXZlbG9wLlZl cnNpb25Db250cm9sLkdpdC9HaXRSZXBvc2l0b3J5LmNzDQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTU1Nyw3 ICsxNTU3LDcgQEAgcHVibGljIENoYW5nZVNldCBHZXRQdXNoQ2hhbmdlU2V0IChzdHJpbmcgcmVt b3RlLCBzdHJpbmcgYnJhbmNoKQogCQkJQ2hhbmdlU2V0IGNzZXQgPSBDcmVhdGVDaGFuZ2VTZXQg KFJvb3RQYXRoKTsKIAkJCU9iamVjdElkIGNpZDEgPSBSb290UmVwb3NpdG9yeS5SZXNvbHZlIChy ZW1vdGUgKyAiLyIgKyBicmFuY2gpOwogCQkJT2JqZWN0SWQgY2lkMiA9IFJvb3RSZXBvc2l0b3J5 LlJlc29sdmUgKFJvb3RSZXBvc2l0b3J5LkdldEJyYW5jaCAoKSk7Ci0JCQlSZXZXYWxrIHJ3ID0g bmV3IFJldldhbGsgKFJvb3RSZXBvc2l0b3J5KTsKKwkJCVJldldhbGsJcncgPSBuZXcgUmV2V2Fs ayAoUm9vdFJlcG9zaXRvcnkpOwogCQkJUmV2Q29tbWl0IGMxID0gcncuUGFyc2VDb21taXQgKGNp ZDEpOwogCQkJUmV2Q29tbWl0IGMyID0gcncuUGFyc2VDb21taXQgKGNpZDIpOwogCQkJCkBAIC0x NTg5LDcgKzE1ODksNyBAQCBwdWJsaWMgRGlmZkluZm9bXSBHZXRQdXNoRGlmZiAoc3RyaW5nIHJl bW90ZSwgc3RyaW5nIGJyYW5jaCkKIAkJCVJldkNvbW1pdCBjMiA9IHJ3LlBhcnNlQ29tbWl0IChj aWQyKTsKIAkJCQogCQkJTGlzdDxEaWZmSW5mbz4gZGlmZnMgPSBuZXcgTGlzdDxEaWZmSW5mbz4g KCk7Ci0JCQlmb3JlYWNoICh2YXIgY2hhbmdlIGluIEdpdFV0aWwuQ29tcGFyZUNvbW1pdHMgKFJv b3RSZXBvc2l0b3J5LCBjMSwgYzIpKSB7CisJCQlmb3JlYWNoICh2YXIgY2hhbmdlIGluIEdpdFV0 aWwuQ29tcGFyZUNvbW1pdHMgKFJvb3RSZXBvc2l0b3J5LCBjMiwgYzEpKSB7CiAJCQkJc3RyaW5n IGRpZmY7CiAJCQkJc3dpdGNoIChjaGFuZ2UuR2V0Q2hhbmdlVHlwZSAoKSkgewogCQkJCWNhc2Ug RGlmZkVudHJ5LkNoYW5nZVR5cGUuREVMRVRFOg0KDQpNb2RpZmllZDogbWFpbi9zcmMvYWRkaW5z L1ZlcnNpb25Db250cm9sL01vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sLlN1YnZlcnNpb24uVGVz dHMvQmFzZVN2blJlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTMzLDkgKzMzLDkg QEAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3Rz DQogew0KIAlbVGVzdEZpeHR1cmVdDQotCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBCYXNlU3ZuVXRp bHNUZXN0IDogQmFzZVJlcG9VdGlsc1Rlc3QNCisJYWJzdHJhY3QgY2xhc3MgQmFzZVN2blV0aWxz VGVzdCA6IEJhc2VSZXBvVXRpbHNUZXN0DQogCXsNCi0JCXByb3RlY3RlZCBQcm9jZXNzIHN2blNl cnZlID0gbnVsbDsNCisJCXByb3RlY3RlZCBQcm9jZXNzIFN2blNlcnZlID0gbnVsbDsNCiANCiAJ CVtTZXRVcF0NCiAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQpAQCAtNTksMTMgKzU5 LDEzIEBAIHB1YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpCiAJCQkvLyBDcmVhdGUgaG9zdCAo V2luMzIpDQogCQkJLy8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGFmdGVyIGRvaW5nIHRoZSBzdm5B ZG1pbiBjcmVhdGlvbi4NCiAJCQkvLyBBbmQgYmVmb3JlIGNoZWNrb3V0Lg0KLQkJCWlmIChzdm5T ZXJ2ZSAhPSBudWxsKSB7DQorCQkJaWYgKFN2blNlcnZlICE9IG51bGwpIHsNCiAJCQkJaW5mbyA9 IG5ldyBQcm9jZXNzU3RhcnRJbmZvICgpOw0KIAkJCQlpbmZvLkZpbGVOYW1lID0gInN2bnNlcnZl IjsNCiAJCQkJaW5mby5Bcmd1bWVudHMgPSAiLWRyICIgKyBSb290VXJsOw0KIAkJCQlpbmZvLldp bmRvd1N0eWxlID0gUHJvY2Vzc1dpbmRvd1N0eWxlLkhpZGRlbjsNCi0JCQkJc3ZuU2VydmUuU3Rh cnRJbmZvID0gaW5mbzsNCi0JCQkJc3ZuU2VydmUuU3RhcnQgKCk7DQorCQkJCVN2blNlcnZlLlN0 YXJ0SW5mbyA9IGluZm87DQorCQkJCVN2blNlcnZlLlN0YXJ0ICgpOw0KIA0KIAkJCQkvLyBDcmVh dGUgdXNlciB0byBhdXRoLg0KIAkJCQl1c2luZyAodmFyIHBlcm0gPSBGaWxlLiBDcmVhdGVUZXh0 IChSb290VXJsICsgUGF0aC5EaXJlY3RvcnlTZXBhcmF0b3JDaGFyICsgInJlcG8iICsNCkBAIC05 Myw2ICs5MywxNSBAQCBwcm90ZWN0ZWQgb3ZlcnJpZGUgTlVuaXQuRnJhbWV3b3JrLkNvbnN0cmFp bnRzLklSZXNvbHZlQ29uc3RyYWludCBJc0NvcnJlY3RUeXBlCiAJCQlyZXR1cm4gSXMuSW5zdGFu Y2VPZjxTdWJ2ZXJzaW9uUmVwb3NpdG9yeT4gKCk7DQogCQl9DQogDQorCQlwcm90ZWN0ZWQgb3Zl cnJpZGUgdm9pZCBUZXN0VmFsaWRVcmwgKCkNCisJCXsNCisJCQl2YXIgcmVwbzIgPSAoU3VidmVy c2lvblJlcG9zaXRvcnkpUmVwbzsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlk ICgic3ZuOi8vc3ZucmVwby5jb206ODAvcmVwbyIpKTsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBv Mi5Jc1VybFZhbGlkICgic3ZuK3NzaDovL3VzZXJAaG9zdC5jb206ODAvcmVwbyIpKTsNCisJCQlB c3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlkICgiaHR0cDovL3N2bnJlcG8uY29tOjgwL3Jl cG8iKSk7DQorCQkJQXNzZXJ0LklzVHJ1ZSAocmVwbzIuSXNVcmxWYWxpZCAoImh0dHBzOi8vc3Zu cmVwby5jb206ODAvcmVwbyIpKTsNCisJCX0NCisNCiAJCXByb3RlY3RlZCBvdmVycmlkZSBSZXZp c2lvbiBHZXRIZWFkUmV2aXNpb24gKCkNCiAJCXsNCiAJCQlyZXR1cm4gU3ZuUmV2aXNpb24uSGVh ZDsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVs b3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0cy9SZXBvc2l0b3J5VGVzdHMuY3MNCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgVmVyc2lvbkNvbnRyb2wuU3Vi dmVyc2lvbi5Vbml4LlRlc3RzCiB7CiAJW1Rlc3RGaXh0dXJlXQotCXB1YmxpYyBjbGFzcyBVbml4 U3ZuVXRpbHNUZXN0IDogTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wuU3VidmVyc2lvbi5UZXN0 cy5CYXNlU3ZuVXRpbHNUZXN0CisJc2VhbGVkIGNsYXNzIFVuaXhTdm5VdGlsc1Rlc3QgOiBNb25v RGV2ZWxvcC5WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLlRlc3RzLkJhc2VTdm5VdGlsc1Rlc3QK IAl7CiAJCVN1YnZlcnNpb25CYWNrZW5kIFN2bkNsaWVudCB7CiAJCQlnZXQgeyByZXR1cm4gUmVw by5Tdm47IH0KQEAgLTEyNyw2ICsxMjcsMTIgQEAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgUG9z dFVubG9jayAoKQogCQkJfSk7CiAJCX0KIAorCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBUZXN0 VmFsaWRVcmwgKCkKKwkJeworCQkJYmFzZS5UZXN0VmFsaWRVcmwgKCk7CisJCQlBc3NlcnQuSXNU cnVlIChSZXBvLklzVXJsVmFsaWQgKCJmaWxlOi8vL2Rpci9yZXBvIikpOworCQl9CisKIAkJcHJv dGVjdGVkIG92ZXJyaWRlIFJlcG9zaXRvcnkgR2V0UmVwbyAoc3RyaW5nIHBhdGgsIHN0cmluZyB1 cmwpCiAJCXsKIAkJCXJldHVybiBuZXcgU3VidmVyc2lvblJlcG9zaXRvcnkgKG5ldyBTdm5DbGll bnQgKCksIHVybCwgcGF0aCk7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNv bnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy b2wuY3Nwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjAsOSArMjAsOSBAQAogICAgIDxFeGVjdXRpb24+ CiAgICAgICA8RXhlY3V0aW9uIGNsci12ZXJzaW9uPSJOZXRfMl8wIiAvPgogICAgIDwvRXhlY3V0 aW9uPgotICAgIDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0 aW9uPgogICAgIDxEZWZpbmVDb25zdGFudHM+REVCVUc8L0RlZmluZUNvbnN0YW50cz4KICAgICA8 Tm9XYXJuPjE1OTE7MTU3MzwvTm9XYXJuPgorICAgIDxEb2N1bWVudGF0aW9uRmlsZT4uLlwuLlwu LlwuLlxidWlsZFxBZGRJbnNcVmVyc2lvbkNvbnRyb2xcTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRy b2wueG1sPC9Eb2N1bWVudGF0aW9uRmlsZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVy dHlHcm91cCBDb25kaXRpb249IiAnJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKScgPT0gJ1Jl bGVhc2V8QW55Q1BVJyAiPgogICAgIDxEZWJ1Z1R5cGU+cGRib25seTwvRGVidWdUeXBlPgpAQCAt MzQsOCArMzQsOCBAQAogICAgICAgPEV4ZWN1dGlvbiBjbHItdmVyc2lvbj0iTmV0XzJfMCIgLz4K ICAgICA8L0V4ZWN1dGlvbj4KICAgICA8RGVidWdTeW1ib2xzPnRydWU8L0RlYnVnU3ltYm9scz4K LSAgICA8R2VuZXJhdGVEb2N1bWVudGF0aW9uPnRydWU8L0dlbmVyYXRlRG9jdW1lbnRhdGlvbj4K ICAgICA8Tm9XYXJuPjE1OTE7MTU3MzwvTm9XYXJuPgorICAgIDxEb2N1bWVudGF0aW9uRmlsZT4u LlwuLlwuLlwuLlxidWlsZFxBZGRJbnNcVmVyc2lvbkNvbnRyb2xcTW9ub0RldmVsb3AuVmVyc2lv bkNvbnRyb2wueG1sPC9Eb2N1bWVudGF0aW9uRmlsZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8 SXRlbUdyb3VwPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXC4uXC4uXGNvcmVc TW9ub0RldmVsb3AuQ29yZVxNb25vRGV2ZWxvcC5Db3JlLmNzcHJvaiI+CkBAIC0xODgsNiArMTg4 LDM5IEBACiAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0idmVyc2lvbi1jb250cm9sLTE2 LnBuZyI+CiAgICAgICA8TG9naWNhbE5hbWU+dmVyc2lvbi1jb250cm9sLTE2LnBuZzwvTG9naWNh bE5hbWU+CiAgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIElu Y2x1ZGU9Im1lbnVfbG9nLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9sb2cucG5nPC9M b2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CisgICAgPEVtYmVkZGVkUmVzb3Vy Y2UgSW5jbHVkZT0ibWVudV9kaWZmLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9kaWZm LnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRl ZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfdXBkYXRlLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+ bWVudV91cGRhdGUucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+Cisg ICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9zdGF0dXMucG5nIj4KKyAgICAgIDxM b2dpY2FsTmFtZT5tZW51X3N0YXR1cy5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRS ZXNvdXJjZT4KKyAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X2NvbW1pdC5wbmci PgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfY29tbWl0LnBuZzwvTG9naWNhbE5hbWU+CisgICAg PC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVf cmVtb3RlX3N0YXR1cy5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1lbnVfcmVtb3RlX3N0YXR1 cy5wbmc8L0xvZ2ljYWxOYW1lPgorICAgIDwvRW1iZWRkZWRSZXNvdXJjZT4KKyAgICA8RW1iZWRk ZWRSZXNvdXJjZSBJbmNsdWRlPSJtZW51X2FkZC5wbmciPgorICAgICAgPExvZ2ljYWxOYW1lPm1l bnVfYWRkLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxF bWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVfcmVtb3ZlLnBuZyI+CisgICAgICA8TG9naWNh bE5hbWU+bWVudV9yZW1vdmUucG5nPC9Mb2dpY2FsTmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3Vy Y2U+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ibWVudV9yZXNvbHZlLnBuZyI+Cisg ICAgICA8TG9naWNhbE5hbWU+bWVudV9yZXNvbHZlLnBuZzwvTG9naWNhbE5hbWU+CisgICAgPC9F bWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9ImNvbW1lbnQu cG5nIj4KKyAgICAgIDxMb2dpY2FsTmFtZT5jb21tZW50LnBuZzwvTG9naWNhbE5hbWU+CisgICAg PC9FbWJlZGRlZFJlc291cmNlPgorICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Im1lbnVf cmV2ZXJ0LnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+bWVudV9yZXZlcnQucG5nPC9Mb2dpY2Fs TmFtZT4KKyAgICA8L0VtYmVkZGVkUmVzb3VyY2U+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdy b3VwPgogICAgIDxDb21waWxlIEluY2x1ZGU9Imd0ay1ndWlcZ2VuZXJhdGVkLmNzIiAvPgpAQCAt Mjc3LDM5ICszMTAsNCBAQAogICAgIDxOb25lIEluY2x1ZGU9Ik1ha2VmaWxlLmFtIiAvPgogICA8 L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKE1TQnVpbGRCaW5QYXRoKVxNaWNyb3Nv ZnQuQ1NoYXJwLnRhcmdldHMiIC8+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENvbnRlbnQgSW5jbHVk ZT0ibWVudV9sb2cucG5nIj4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVO ZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRl bnQgSW5jbHVkZT0ibWVudV9kaWZmLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5 PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50Pgot ICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfdXBkYXRlLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0 cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAg PC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfc3RhdHVzLnBuZyI+Ci0gICAg ICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJl Y3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9Im1lbnVfY29tbWl0 LnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5 VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9 Im1lbnVfcmVtb3RlX3N0YXR1cy5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5Q cmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAg ICA8Q29udGVudCBJbmNsdWRlPSJtZW51X2FkZC5wbmciPgotICAgICAgPENvcHlUb091dHB1dERp cmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29u dGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJtZW51X3JlbW92ZS5wbmciPgotICAgICAgPENv cHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5 PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSJtZW51X3Jlc29sdmUucG5n Ij4KLSAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091 dHB1dERpcmVjdG9yeT4KLSAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0iY29t bWVudC5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwv Q29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNs dWRlPSJtZW51X3JldmVydC5wbmciPgotICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVz ZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgIDwvQ29udGVudD4KLSAgPC9J dGVtR3JvdXA+CiA8L1Byb2plY3Q+DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lv bkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvTW9ub0RldmVsb3AuVmVyc2lvbkNv bnRyb2wvQ2hhbmdlU2V0LmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtOSw2ICs5LDggQEAgbmFtZXNwYWNl IE1vbm9EZXZlbG9wLlZlcnNpb25Db250cm9sCiAJcHVibGljIGNsYXNzIENoYW5nZVNldAogCXsK IAkJc3RyaW5nIGdsb2JhbENvbW1lbnQgPSBzdHJpbmcuRW1wdHk7CisJCS8vIENvbW1pdHMgc2hv dWxkIGJlIGF0b21pYyBhbmQgc21hbGwuIFRoZXJlZm9yZSBoYXZpbmcgYSBMaXN0IGluc3RlYWQK KwkJLy8gb2YgYSBIYXNoU2V0IHNob3VsZCBiZSBmYXN0ZXIgaW4gbW9zdCBjYXNlcy4KIAkJTGlz dDxDaGFuZ2VTZXRJdGVtPiBpdGVtcyA9IG5ldyBMaXN0PENoYW5nZVNldEl0ZW0+ICgpOwogCQlS ZXBvc2l0b3J5IHJlcG87DQogCQlGaWxlUGF0aCBiYXNlUGF0aDsKQEAgLTYxLDcgKzYzLDcgQEAg cHVibGljIHN0cmluZyBHZW5lcmF0ZUdsb2JhbENvbW1lbnQgKENvbW1pdE1lc3NhZ2VGb3JtYXQg Zm9ybWF0LCBNb25vRGV2ZWxvcC5Qcm8KIAkJcHVibGljIHN0cmluZyBHZW5lcmF0ZVBhdGhDb21t ZW50IChzdHJpbmcgcGF0aCwgSUVudW1lcmFibGU8Q2hhbmdlU2V0SXRlbT4gaXRlbXMsIAogCQkJ Q29tbWl0TWVzc2FnZUZvcm1hdCBtZXNzYWdlRm9ybWF0LCBNb25vRGV2ZWxvcC5Qcm9qZWN0cy5B dXRob3JJbmZvcm1hdGlvbiB1c2VySW5mbykKIAkJewotCQkJQ2hhbmdlTG9nV3JpdGVyIHdyaXRl ciA9IG5ldyBDaGFuZ2VMb2dXcml0ZXIgKHBhdGgsIHVzZXJJbmZvKTsKKwkJCXZhciB3cml0ZXIg PSBuZXcgQ2hhbmdlTG9nV3JpdGVyIChwYXRoLCB1c2VySW5mbyk7CiAJCQl3cml0ZXIuTWVzc2Fn ZUZvcm1hdCA9IG1lc3NhZ2VGb3JtYXQ7CiAJCQkKIAkJCWZvcmVhY2ggKENoYW5nZVNldEl0ZW0g aXRlbSBpbiBpdGVtcykgewpAQCAtODUsOCArODcsOCBAQCBwdWJsaWMgc3RyaW5nIEdlbmVyYXRl R2xvYmFsQ29tbWVudCAoQ29tbWl0TWVzc2FnZUZvcm1hdCBmb3JtYXQsIE1vbm9EZXZlbG9wLlBy bwogDQogCQlwdWJsaWMgYm9vbCBDb250YWluc0ZpbGUgKEZpbGVQYXRoIGZpbGVOYW1lKQogCQl7 Ci0JCQlmb3IgKGludCBuPTA7IG48aXRlbXMuQ291bnQ7IG4rKykKLQkJCQlpZiAoaXRlbXMgW25d LkxvY2FsUGF0aCA9PSBmaWxlTmFtZSkKKwkJCWZvcmVhY2ggKHZhciBpdGVtIGluIGl0ZW1zKQor CQkJCWlmIChpdGVtLkxvY2FsUGF0aCA9PSBmaWxlTmFtZSkKIAkJCQkJcmV0dXJuIHRydWU7CiAJ CQlyZXR1cm4gZmFsc2U7CiAJCX0NCkBAIC05OCw3ICsxMDAsMTEgQEAgcHVibGljIENoYW5nZVNl dEl0ZW0gQWRkRmlsZSAoRmlsZVBhdGggZmlsZSkKIAkJCiAJCXB1YmxpYyBDaGFuZ2VTZXRJdGVt IEFkZEZpbGUgKFZlcnNpb25JbmZvIGZpbGVWZXJzaW9uSW5mbykKIAkJewotCQkJQ2hhbmdlU2V0 SXRlbSBpdGVtID0gbmV3IENoYW5nZVNldEl0ZW0gKGZpbGVWZXJzaW9uSW5mbyk7CisJCQlDaGFu Z2VTZXRJdGVtIGl0ZW0gPSBHZXRGaWxlSXRlbSAoZmlsZVZlcnNpb25JbmZvLkxvY2FsUGF0aCk7 CisJCQlpZiAoaXRlbSAhPSBudWxsKQorCQkJCXJldHVybiBpdGVtOworCisJCQlpdGVtID0gbmV3 IENoYW5nZVNldEl0ZW0gKGZpbGVWZXJzaW9uSW5mbyk7CiAJCQlpdGVtcy5BZGQgKGl0ZW0pOwog CQkJcmV0dXJuIGl0ZW07CiAJCX0KQEAgLTEzNCw3ICsxNDAsNyBAQCBwdWJsaWMgdm9pZCBSZW1v dmVJdGVtIChDaGFuZ2VTZXRJdGVtIGl0ZW0pCiAJCQogCQlwdWJsaWMgQ2hhbmdlU2V0IENsb25l ICgpCiAJCXsKLQkJCUNoYW5nZVNldCBjcyA9IChDaGFuZ2VTZXQpIE1lbWJlcndpc2VDbG9uZSAo KTsKKwkJCXZhciBjcyA9IChDaGFuZ2VTZXQpIE1lbWJlcndpc2VDbG9uZSAoKTsKIAkJCWNzLkNv cHlGcm9tICh0aGlzKTsKIAkJCXJldHVybiBjczsKIAkJfQpAQCAtMTg0LDcgKzE5MCw3IEBAIGlu dGVybmFsIENoYW5nZVNldEl0ZW0gKFZlcnNpb25JbmZvIHZlcnNpb25JbmZvKQogCQkKIAkJcHVi bGljIENoYW5nZVNldEl0ZW0gQ2xvbmUgKCkKIAkJewotCQkJQ2hhbmdlU2V0SXRlbSBjcyA9IChD aGFuZ2VTZXRJdGVtKSBNZW1iZXJ3aXNlQ2xvbmUgKCk7CisJCQl2YXIgY3MgPSAoQ2hhbmdlU2V0 SXRlbSkgTWVtYmVyd2lzZUNsb25lICgpOwogCQkJY3MuQ29weUZyb20gKHRoaXMpOwogCQkJcmV0 dXJuIGNzOwogCQl9DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wv TW9ub0RldmVsb3AuVmVyc2lvbkNvbnRyb2wvVmVyc2lvbkNvbnRyb2wuYWRkaW4ueG1sDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpAQCAtOCwyMCArOCw2IEBACiAgICAgICAgY2F0ZWdvcnkgICAgPSAiVmVyc2lvbiBD b250cm9sIgogICAgICAgIGZsYWdzID0gIkhpZGRlbiIKICAgICAgICB2ZXJzaW9uICAgPSAiNC4y Ij4KLSAKLQk8UnVudGltZT4KLQkJPEltcG9ydCBmaWxlPSJjb21tZW50LnBuZyIgLz4KLQkJPElt cG9ydCBmaWxlPSJtZW51X2FkZC5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9jb21taXQu cG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfZGlmZi5wbmciIC8+Ci0JCTxJbXBvcnQgZmls ZT0ibWVudV9sb2cucG5nIiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfcmVtb3RlX3N0YXR1cy5w bmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9yZW1vdmUucG5nIiAvPgotCQk8SW1wb3J0IGZp bGU9Im1lbnVfcmVzb2x2ZS5wbmciIC8+Ci0JCTxJbXBvcnQgZmlsZT0ibWVudV9yZXZlcnQucG5n IiAvPgotCQk8SW1wb3J0IGZpbGU9Im1lbnVfc3RhdHVzLnBuZyIgLz4KLQkJPEltcG9ydCBmaWxl PSJtZW51X3VwZGF0ZS5wbmciIC8+Ci0JPC9SdW50aW1lPgogCiAJPERlcGVuZGVuY2llcz4KIAkg ICAgPEFkZGluIGlkPSJDb3JlIiB2ZXJzaW9uPSI0LjIiLz4KQEAgLTEwNSwxNyArOTEsMTcgQEAK IAk8L0V4dGVuc2lvbj4KIAogCTxFeHRlbnNpb24gcGF0aCA9ICIvTW9ub0RldmVsb3AvQ29yZS9T dG9ja0ljb25zIj4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWFkZC1jb21tYW5kIiBmaWxl ID0gIm1lbnVfYWRkLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0g InZjLXJlbW92ZS1jb21tYW5kIiBmaWxlID0gIm1lbnVfcmVtb3ZlLnBuZyIgc2l6ZT0iTWVudSIg Lz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJlc29sdmUtY29tbWFuZCIgZmlsZSA9ICJt ZW51X3Jlc29sdmUucG5nIiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAi dmMtcmV2ZXJ0LWNvbW1hbmQiIGZpbGUgPSAibWVudV9yZXZlcnQucG5nIiBzaXplPSJNZW51IiAv PgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtZGlmZiIgZmlsZSA9ICJtZW51X2RpZmYucG5n IiBzaXplPSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtbG9nIiBmaWxlID0g Im1lbnVfbG9nLnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZj LXN0YXR1cyIgZmlsZSA9ICJtZW51X3N0YXR1cy5wbmciIHNpemU9Ik1lbnUiIC8+Ci0JCTxTdG9j a0ljb24gc3RvY2tpZCA9ICJ2Yy11cGRhdGUiIGZpbGUgPSAibWVudV91cGRhdGUucG5nIiBzaXpl PSJNZW51IiAvPgotCQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtY29tbWl0IiBmaWxlID0gIm1l bnVfY29tbWl0LnBuZyIgc2l6ZT0iTWVudSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZj LXJlbW90ZS1zdGF0dXMiIGZpbGUgPSAibWVudV9yZW1vdGVfc3RhdHVzLnBuZyIgc2l6ZT0iTWVu dSIgLz4KLQkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLWNvbW1lbnQiIGZpbGUgPSAiY29tbWVu dC5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1hZGQtY29t bWFuZCIgcmVzb3VyY2UgPSAibWVudV9hZGQucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJ Y29uIHN0b2NraWQgPSAidmMtcmVtb3ZlLWNvbW1hbmQiIHJlc291cmNlID0gIm1lbnVfcmVtb3Zl LnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJlc29sdmUt Y29tbWFuZCIgcmVzb3VyY2UgPSAibWVudV9yZXNvbHZlLnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJ PFN0b2NrSWNvbiBzdG9ja2lkID0gInZjLXJldmVydC1jb21tYW5kIiByZXNvdXJjZSA9ICJtZW51 X3JldmVydC5wbmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1k aWZmIiByZXNvdXJjZSA9ICJtZW51X2RpZmYucG5nIiBzaXplPSJNZW51IiAvPgorCQk8U3RvY2tJ Y29uIHN0b2NraWQgPSAidmMtbG9nIiByZXNvdXJjZSA9ICJtZW51X2xvZy5wbmciIHNpemU9Ik1l bnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1zdGF0dXMiIHJlc291cmNlID0gIm1l bnVfc3RhdHVzLnBuZyIgc2l6ZT0iTWVudSIgLz4KKwkJPFN0b2NrSWNvbiBzdG9ja2lkID0gInZj LXVwZGF0ZSIgcmVzb3VyY2UgPSAibWVudV91cGRhdGUucG5nIiBzaXplPSJNZW51IiAvPgorCQk8 U3RvY2tJY29uIHN0b2NraWQgPSAidmMtY29tbWl0IiByZXNvdXJjZSA9ICJtZW51X2NvbW1pdC5w bmciIHNpemU9Ik1lbnUiIC8+CisJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJ2Yy1yZW1vdGUtc3Rh dHVzIiByZXNvdXJjZSA9ICJtZW51X3JlbW90ZV9zdGF0dXMucG5nIiBzaXplPSJNZW51IiAvPgor CQk8U3RvY2tJY29uIHN0b2NraWQgPSAidmMtY29tbWVudCIgcmVzb3VyY2UgPSAiY29tbWVudC5w bmciIHNpemU9Ik1lbnUiIC8+CiAJCTxTdG9ja0ljb24gc3RvY2tpZCA9ICJtZC12ZXJzaW9uLWNv bnRyb2wiIHJlc291cmNlID0gInZlcnNpb24tY29udHJvbC0xNi5wbmciIHNpemU9Ik1lbnUiIC8+ CiAJPC9FeHRlbnNpb24+CiANCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2FkZGlucy9WZXJzaW9uQ29u dHJvbC9TdWJ2ZXJzaW9uLldpbjMyLlRlc3RzL1JlcG9zaXRvcnlUZXN0cy5jcw0KPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KQEAgLTM2LDIxICszNiwyMSBAQAogbmFtZXNwYWNlIE1vbm9EZXZlbG9wLlZlcnNpb25Db250 cm9sLlN1YnZlcnNpb24uVGVzdHMNCiB7DQogCVtUZXN0Rml4dHVyZV0NCi0JcHVibGljIGNsYXNz IFNoYXJwU3ZuVXRpbHNUZXN0IDogQmFzZVN2blV0aWxzVGVzdA0KKwlzZWFsZWQgY2xhc3MgU2hh cnBTdm5VdGlsc1Rlc3QgOiBCYXNlU3ZuVXRpbHNUZXN0DQogCXsNCiAJCVtTZXRVcF0NCiAJCXB1 YmxpYyBvdmVycmlkZSB2b2lkIFNldHVwICgpDQogCQl7DQogCQkJUm9vdFVybCA9IG5ldyBGaWxl UGF0aCAoRmlsZVNlcnZpY2UuQ3JlYXRlVGVtcERpcmVjdG9yeSAoKSk7DQogCQkJUmVwb0xvY2F0 aW9uID0gInN2bjovL2xvY2FsaG9zdDozNjkwL3JlcG8iOw0KLQkJCXN2blNlcnZlID0gbmV3IFBy b2Nlc3MgKCk7DQorCQkJU3ZuU2VydmUgPSBuZXcgUHJvY2VzcyAoKTsNCiAJCQliYXNlLlNldHVw ICgpOw0KIAkJfQ0KIA0KIAkJW1RlYXJEb3duXQ0KIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgVGVh ckRvd24gKCkNCiAJCXsNCi0JCQlzdm5TZXJ2ZS5LaWxsICgpOw0KKwkJCVN2blNlcnZlLktpbGwg KCk7DQogDQogCQkJYmFzZS5UZWFyRG93biAoKTsNCiAJCX0NCkBAIC0xMTcsNiArMTE3LDE2IEBA IHByb3RlY3RlZCBvdmVycmlkZSB2b2lkIFBvc3RVbmxvY2sgKCkKIAkJCX0pOw0KIAkJfQ0KIA0K KwkJW1Rlc3RdDQorCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBUZXN0VmFsaWRVcmwgKCkNCisJ CXsNCisJCQliYXNlLlRlc3RWYWxpZFVybCAoKTsNCisNCisJCQlBc3NlcnQuSWdub3JlICgiRmls ZSBzY2hlbWUgaXMgYnJva2VuIG9uIFdpbmRvd3MiKTsNCisJCQl2YXIgcmVwbzIgPSAoU3VidmVy c2lvblJlcG9zaXRvcnkpUmVwbzsNCisJCQlBc3NlcnQuSXNUcnVlIChyZXBvMi5Jc1VybFZhbGlk ICgiZmlsZTovLy9jOi9kaXIvcmVwbyIpKTsNCisJCX0NCisNCiAJCXByb3RlY3RlZCBvdmVycmlk ZSBSZXBvc2l0b3J5IEdldFJlcG8gKHN0cmluZyBwYXRoLCBzdHJpbmcgdXJsKQ0KIAkJew0KIAkJ CXJldHVybiBuZXcgU3VidmVyc2lvblJlcG9zaXRvcnkgKG5ldyBTdm5TaGFycENsaWVudCAoKSwg dXJsLCBwYXRoKTsNDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9hZGRpbnMvVmVyc2lvbkNvbnRyb2wv U3VidmVyc2lvbi5XaW4zMi9WZXJzaW9uQ29udHJvbC5TdWJ2ZXJzaW9uLldpbjMyLmNzcHJvag0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KQEAgLTQyLDggKzQyLDggQEAKICAgICA8RXJyb3JSZXBvcnQ+cHJvbXB0PC9F cnJvclJlcG9ydD4KICAgICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdMZXZlbD4KICAgICA8Q29k ZUFuYWx5c2lzUnVsZVNldD5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pgot ICAgIDxHZW5lcmF0ZURvY3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgog ICAgIDxOb1dhcm4+MTU5MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4u XC4uXC4uXC4uXGJ1aWxkXEFkZEluc1xWZXJzaW9uQ29udHJvbFxTdWJ2ZXJzaW9uQWRkaW5XaW5k b3dzLnhtbDwvRG9jdW1lbnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3Bl cnR5R3JvdXAgQ29uZGl0aW9uPSIgJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknID09ICdS ZWxlYXNlfEFueUNQVScgIj4KICAgICA8RGVidWdUeXBlPnBkYm9ubHk8L0RlYnVnVHlwZT4KQEAg LTU0LDggKzU0LDggQEAKICAgICA8V2FybmluZ0xldmVsPjQ8L1dhcm5pbmdMZXZlbD4KICAgICA8 Q29kZUFuYWx5c2lzUnVsZVNldD5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0 PgogICAgIDxEZWJ1Z1N5bWJvbHM+dHJ1ZTwvRGVidWdTeW1ib2xzPgotICAgIDxHZW5lcmF0ZURv Y3VtZW50YXRpb24+dHJ1ZTwvR2VuZXJhdGVEb2N1bWVudGF0aW9uPgogICAgIDxOb1dhcm4+MTU5 MTsxNTczPC9Ob1dhcm4+CisgICAgPERvY3VtZW50YXRpb25GaWxlPi4uXC4uXC4uXC4uXGJ1aWxk XEFkZEluc1xWZXJzaW9uQ29udHJvbFxTdWJ2ZXJzaW9uQWRkaW5XaW5kb3dzLnhtbDwvRG9jdW1l bnRhdGlvbkZpbGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8UmVm ZXJlbmNlIEluY2x1ZGU9IlN5c3RlbSIgLz4KQEAgLTY5LDE1ICs2OSwxNSBAQAogICA8L0l0ZW1H cm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSJNYW5p ZmVzdC5hZGRpbi54bWwiIC8+CisgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0ic3VidmVy c2lvbi1sb2dvLnBuZyI+CisgICAgICA8TG9naWNhbE5hbWU+c3VidmVyc2lvbi1sb2dvLnBuZzwv TG9naWNhbE5hbWU+CisgICAgPC9FbWJlZGRlZFJlc291cmNlPgogICA8L0l0ZW1Hcm91cD4KICAg PEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxTaGFycFN2blxTaGFycFBsaW5rLVdp bjMyLnN2bkV4ZSI+CiAgICAgICA8TGluaz5TaGFycFBsaW5rLVdpbjMyLnN2bkV4ZTwvTGluaz4K ICAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1 dERpcmVjdG9yeT4KICAgICA8L05vbmU+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0ic3VidmVyc2lv bi1sb2dvLnBuZyI+Ci0gICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0 PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgPC9Db250ZW50PgogICAgIDxDb250ZW50IElu Y2x1ZGU9Ii4uXFNoYXJwU3ZuXFNoYXJwU3ZuLURCNDQtMjAtd2luMzIuZGxsIj4KICAgICAgIDxM aW5rPlNoYXJwU3ZuLURCNDQtMjAtd2luMzIuZGxsPC9MaW5rPgogICAgICAgPENvcHlUb091dHB1 dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5Pg0KDQpNb2Rp ZmllZDogbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3IvTW9uby5UZXh0RWRpdG9yLlV0aWxz L1RleHRGaWxlVXRpbGl0eS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE1Niw2ICsxNTYsMjUgQEAgcHVi bGljIHN0YXRpYyBzdHJpbmcgR2V0VGV4dCAoYnl0ZVtdIGJ5dGVzLCBvdXQgRW5jb2RpbmcgZW5j b2RpbmcsIG91dCBib29sIGhhZEIKIAkJCX0KIAkJfQogCisJCXB1YmxpYyBzdGF0aWMgc3RyaW5n IEdldFRleHQgKGJ5dGVbXSBieXRlcywgRW5jb2RpbmcgZW5jb2RpbmcsIG91dCBib29sIGhhZEJv bSkKKwkJeworCQkJYnl0ZVtdIGJvbSA9IGVuY29kaW5nLkdldFByZWFtYmxlICgpOworCQkJaWYg KGJvbSAhPSBudWxsICYmIGJvbS5MZW5ndGggPiAwICYmIGJvbS5MZW5ndGggPD0gYnl0ZXMuTGVu Z3RoKSB7CisJCQkJaGFkQm9tID0gdHJ1ZTsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IGJvbS5M ZW5ndGg7IGkrKykgeworCQkJCQlpZiAoYnl0ZXMgW2ldICE9IGJvbSBbaV0pIHsKKwkJCQkJCWhh ZEJvbSA9IGZhbHNlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9IGVsc2Ugewor CQkJCWhhZEJvbSA9IGZhbHNlOworCQkJfQorCQkJaWYgKGhhZEJvbSkgCisJCQkJcmV0dXJuIGVu Y29kaW5nLkdldFN0cmluZyAoYnl0ZXMsIGJvbS5MZW5ndGgsIGJ5dGVzLkxlbmd0aCAtIGJvbS5M ZW5ndGgpOworCQkJcmV0dXJuIGVuY29kaW5nLkdldFN0cmluZyAoYnl0ZXMpOworCQl9CisKIAkJ cHVibGljIHN0YXRpYyBzdHJpbmcgR2V0VGV4dCAoU3RyZWFtIGlucHV0U3RyZWFtKQogCQl7CiAJ CQl1c2luZyAodmFyIHN0cmVhbSA9IE9wZW5TdHJlYW0gKGlucHV0U3RyZWFtKSkgewpAQCAtMzAz LDIxICszMjIsOCBAQCBwdWJsaWMgc3RhdGljIHN0cmluZyBSZWFkQWxsVGV4dCAoc3RyaW5nIGZp bGVOYW1lLCBFbmNvZGluZyBlbmNvZGluZywgb3V0IGJvb2wgaAogCQkJCXRocm93IG5ldyBBcmd1 bWVudE51bGxFeGNlcHRpb24gKCJlbmNvZGluZyIpOwogCQkJCiAJCQlieXRlW10gY29udGVudCA9 IEZpbGUuUmVhZEFsbEJ5dGVzIChmaWxlTmFtZSk7Ci0JCQlieXRlW10gYm9tID0gZW5jb2Rpbmcu R2V0UHJlYW1ibGUgKCk7Ci0JCQlpZiAoYm9tICE9IG51bGwgJiYgYm9tLkxlbmd0aCA+IDAgJiYg Ym9tLkxlbmd0aCA8PSBjb250ZW50Lkxlbmd0aCkgewotCQkJCWhhZEJvbSA9IHRydWU7Ci0JCQkJ Zm9yIChpbnQgaSA9IDA7IGkgPCBib20uTGVuZ3RoOyBpKyspIHsKLQkJCQkJaWYgKGNvbnRlbnQg W2ldICE9IGJvbSBbaV0pIHsKLQkJCQkJCWhhZEJvbT0gZmFsc2U7Ci0JCQkJCQlicmVhazsKLQkJ CQkJfQotCQkJCX0KLQkJCX0gZWxzZSB7Ci0JCQkJaGFkQm9tID0gZmFsc2U7Ci0JCQl9Ci0JCQly ZXR1cm4gZW5jb2RpbmcuR2V0U3RyaW5nIChjb250ZW50KTsKKwkJCXJldHVybiBHZXRUZXh0IChj b250ZW50LCBlbmNvZGluZywgb3V0IGhhZEJvbSk7IAogCQl9Ci0KIAkJI2VuZHJlZ2lvbgogCiAJ CSNyZWdpb24gQVNDSUkgZW5jb2RpbmcgY2hlY2sNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUv TW9uby5UZXh0ZWRpdG9yL01vbm8uVGV4dEVkaXRvci5WaS9WaU1vZGUuY3MNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBSZXNldCAoc3RyaW5nIHN0YXR1cykKIAkJewogCQkJ Q3VyU3RhdGUgPSBTdGF0ZS5Ob3JtYWw7CiAJCQlSZXNldEVkaXRvclN0YXRlIChEYXRhKTsKLQkJ CQorCQkJbW90aW9uID0gTW90aW9uLk5vbmU7CiAJCQljb21tYW5kQnVmZmVyLkxlbmd0aCA9IDA7 CiAJCQlTdGF0dXMgPSBzdGF0dXM7CiAJCX0KQEAgLTYxNyw2ICs2MTcsNyBAQCBwcm90ZWN0ZWQg b3ZlcnJpZGUgdm9pZCBIYW5kbGVLZXlwcmVzcyAoR2RrLktleSBrZXksIHVpbnQgdW5pY29kZUtl eSwgR2RrLk1vZGlmaQogCQkJCQkJUnVuQWN0aW9ucyAoYWN0aW9uLCBDbGlwYm9hcmRBY3Rpb25z LkN1dCk7CiAJCQkJCVN0YXR1cyA9ICItLSBJTlNFUlQgLS0iOwogCQkJCQlDdXJTdGF0ZSA9IFN0 YXRlLkluc2VydDsKKwkJCQkJbW90aW9uID0gTW90aW9uLk5vbmU7CiAJCQkJCUNhcmV0Lk1vZGUg PSBDYXJldE1vZGUuSW5zZXJ0OwogCQkJCX0gZWxzZSB7CiAJCQkJCVJlc2V0ICgiVW5yZWNvZ25p c2VkIG1vdGlvbiIpOw0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vLlRleHRlZGl0b3Iv TW9uby5UZXh0RWRpdG9yL0d1aS9UZXh0QXJlYS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTI2NTMsNyAr MjY1Myw3IEBAIHB1YmxpYyBpbnQgUmVwbGFjZUFsbCAoc3RyaW5nIHdpdGhQYXR0ZXJuKQogCQkK IAkJdm9pZCBTaG93VG9vbHRpcCAoR2RrLk1vZGlmaWVyVHlwZSBtb2RpZmllclN0YXRlKQogCQl7 Ci0JCQlpZiAobXggPCBUZXh0Vmlld01hcmdpbi5YT2Zmc2V0ICsgVGV4dFZpZXdNYXJnaW4uVGV4 dFN0YXJ0UG9zaXRpb24pIHsKKwkJCWlmIChteCA8IFRleHRWaWV3TWFyZ2luLlRleHRTdGFydFBv c2l0aW9uKSB7CiAJCQkJSGlkZVRvb2x0aXAgKCk7CiAJCQkJcmV0dXJuOwogCQkJfQ0KDQpNb2Rp ZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuV2Vi L0NyZWRlbnRpYWxTdG9yZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTcsMTMgKzcsNiBAQCBuYW1lc3Bh Y2UgTW9ub0RldmVsb3AuQ29yZS5XZWIKIAljbGFzcyBDcmVkZW50aWFsU3RvcmUgOiBJQ3JlZGVu dGlhbENhY2hlCiAJewogCQlyZWFkb25seSBDb25jdXJyZW50RGljdGlvbmFyeTxVcmksIElDcmVk ZW50aWFscz4gY3JlZGVudGlhbENhY2hlID0gbmV3IENvbmN1cnJlbnREaWN0aW9uYXJ5PFVyaSwg SUNyZWRlbnRpYWxzPiAoKTsKLQkJc3RhdGljIHJlYWRvbmx5IENyZWRlbnRpYWxTdG9yZSBpbnN0 YW5jZSA9IG5ldyBDcmVkZW50aWFsU3RvcmUgKCk7DQotDQotCQlwdWJsaWMgc3RhdGljIENyZWRl bnRpYWxTdG9yZSBJbnN0YW5jZSB7Ci0JCQlnZXQgewotCQkJCXJldHVybiBpbnN0YW5jZTsKLQkJ CX0KLQkJfQogCiAJCXB1YmxpYyBJQ3JlZGVudGlhbHMgR2V0Q3JlZGVudGlhbHMgKFVyaSB1cmks IENyZWRlbnRpYWxUeXBlIGNyZWRlbnRpYWxUeXBlKQ0KIAkJew0NCg0KTW9kaWZpZWQ6IG1haW4v c3JjL2NvcmUvTW9ub0RldmVsb3AuQ29yZS9Nb25vRGV2ZWxvcC5Db3JlLldlYi9JQ3JlZGVudGlh bFByb3ZpZGVyLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTAsNyArMTAsNyBAQCBuYW1lc3BhY2UgTW9u b0RldmVsb3AuQ29yZS5XZWIKIAlwdWJsaWMgaW50ZXJmYWNlIElDcmVkZW50aWFsUHJvdmlkZXIK IAl7CiAJCS8vLyA8c3VtbWFyeT4KLQkJLy8vIFJldHVybnMgQ3JlZGVudGlhbFN0YXRlIHN0YXRl IHRoYXQgbGV0J3MgdGhlIGNvbnN1bWVyIGtub3cgaWYgSUNyZWRlbnRpYWxzCisJCS8vLyBSZXR1 cm5zIENyZWRlbnRpYWxTdGF0ZSBzdGF0ZSB0aGF0IGxldHMgdGhlIGNvbnN1bWVyIGtub3cgaWYg SUNyZWRlbnRpYWxzCiAJCS8vLyB3ZXJlIGRpc2NvdmVyZWQgYnkgdGhlIElDcmVkZW50aWFsUHJv dmlkZXIuIFRoZSBjcmVkZW50aWFscyBhcmd1bWVudCBpcyB0aGVuCiAJCS8vLyBwb3B1bGF0ZWQg d2l0aCB0aGUgZGlzY292ZXJlZCB2YWxpZCBjcmVkZW50aWFscyB0aGF0IGNhbiBiZSB1c2VkIGZv ciB0aGUgZ2l2ZW4gVXJpLgogCQkvLy8gVGhlIHByb3h5IGluc3RhbmNlIGlmIHBhc3NlZCB3aWxs IGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3QgZ29lcyB0aHJvdWdoIHRoZSBwcm94 eQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9w LkNvcmUuV2ViL1Byb3h5Q2FjaGUuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0xNCwxNSArMTQsNiBAQCBj bGFzcyBQcm94eUNhY2hlIDogSVByb3h5Q2FjaGUKIAkJc3RhdGljIHJlYWRvbmx5IElXZWJQcm94 eSBvcmlnaW5hbFN5c3RlbVByb3h5ID0gV2ViUmVxdWVzdC5HZXRTeXN0ZW1XZWJQcm94eSAoKTsK IAogCQlyZWFkb25seSBDb25jdXJyZW50RGljdGlvbmFyeTxVcmksIFdlYlByb3h5PiBjYWNoZSA9 IG5ldyBDb25jdXJyZW50RGljdGlvbmFyeTxVcmksIFdlYlByb3h5PiAoKTsKLQkJc3RhdGljIHJl YWRvbmx5IExhenk8UHJveHlDYWNoZT4gaW5zdGFuY2UgPSBuZXcgTGF6eTxQcm94eUNhY2hlPiAo KCkgPT4gbmV3IFByb3h5Q2FjaGUgKCkpOwotCi0JCXB1YmxpYyBzdGF0aWMgUHJveHlDYWNoZSBJ bnN0YW5jZSB7Ci0JCQlnZXQgewotCQkJCXJldHVybiBpbnN0YW5jZS5WYWx1ZTsKLQkJCX0KLQkJ fQotCi0JCVByb3h5Q2FjaGUgKCkge30KIAogCQlwdWJsaWMgSVdlYlByb3h5IEdldFByb3h5IChV cmkgdXJpKQogCQl7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLkNvcmUv TW9ub0RldmVsb3AuQ29yZS5XZWIvUmVxdWVzdEhlbHBlci5jcw0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTEz LDkgKzEzLDkgQEAgcHVibGljIHN0YXRpYyBjbGFzcyBSZXF1ZXN0SGVscGVyCiAJCS8vLyA8L3N1 bW1hcnk+DQogCQlpbnRlcm5hbCBzdGF0aWMgV2ViUmVzcG9uc2UgR2V0UmVzcG9uc2UgKEZ1bmM8 V2ViUmVxdWVzdD4gY3JlYXRlUmVxdWVzdCwgQWN0aW9uPFdlYlJlcXVlc3Q+IHByZXBhcmVSZXF1 ZXN0KQ0KIAkJew0KLQkJCXZhciBwcm94eUNhY2hlID0gV2ViU2VydmljZS5JbnN0YW5jZS5Qcm94 eUNhY2hlOw0KLQkJCXZhciBjcmVkZW50aWFsQ2FjaGUgPSBXZWJTZXJ2aWNlLkluc3RhbmNlLkNy ZWRlbnRpYWxDYWNoZTsNCi0JCQl2YXIgY3JlZGVudGlhbFByb3ZpZGVyID0gV2ViU2VydmljZS5J bnN0YW5jZS5DcmVkZW50aWFsUHJvdmlkZXI7DQorCQkJdmFyIHByb3h5Q2FjaGUgPSBXZWJTZXJ2 aWNlLlByb3h5Q2FjaGU7CisJCQl2YXIgY3JlZGVudGlhbENhY2hlID0gV2ViU2VydmljZS5DcmVk ZW50aWFsQ2FjaGU7CisJCQl2YXIgY3JlZGVudGlhbFByb3ZpZGVyID0gV2ViU2VydmljZS5DcmVk ZW50aWFsUHJvdmlkZXI7CiANCiAJCQlIdHRwV2ViUmVxdWVzdCBwcmV2aW91c1JlcXVlc3QgPSBu dWxsOw0KIAkJCUlIdHRwV2ViUmVzcG9uc2UgcHJldmlvdXNSZXNwb25zZSA9IG51bGw7DQ0KDQpN b2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9wLkNvcmUu V2ViL1dlYlNlcnZpY2UuY3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC0yMyw0MCArMjMsNDIgQEAKIC8vIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HIEZST00sCiAvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCiAvLyBUSEUgU09GVFdBUkUu CisKIHVzaW5nIFN5c3RlbTsKIHVzaW5nIFN5c3RlbS5MaW5xOwogCiB1c2luZyBNb25vLkFkZGlu czsKK3VzaW5nIFN5c3RlbS5OZXQ7CiAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5Db3JlLldlYgog ewotCXB1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlCisJcHVibGljIHN0YXRpYyBjbGFzcyBXZWJTZXJ2 aWNlCiAJewogCQljb25zdCBzdHJpbmcgV2ViQ3JlZGVudGlhbFByb3ZpZGVyc1BhdGggPSAiL01v bm9EZXZlbG9wL0NvcmUvV2ViQ3JlZGVudGlhbFByb3ZpZGVycyI7CiAKLQkJc3RhdGljIHJlYWRv bmx5IExhenk8V2ViU2VydmljZT4gaW5zdGFuY2UgPSBuZXcgTGF6eTxXZWJTZXJ2aWNlPiAoKCkg PT4gbmV3IFdlYlNlcnZpY2UgKCkpOworCQlwdWJsaWMgc3RhdGljIElQcm94eUNhY2hlIFByb3h5 Q2FjaGUgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisJCXB1YmxpYyBzdGF0aWMgSUNyZWRlbnRpYWxD YWNoZSBDcmVkZW50aWFsQ2FjaGUgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisJCXB1YmxpYyBzdGF0 aWMgSUNyZWRlbnRpYWxQcm92aWRlciBDcmVkZW50aWFsUHJvdmlkZXIgeyBnZXQ7IHByaXZhdGUg c2V0OyB9CiAKLQkJcHVibGljIHN0YXRpYyBXZWJTZXJ2aWNlIEluc3RhbmNlIHsKLQkJCWdldCB7 Ci0JCQkJcmV0dXJuIGluc3RhbmNlLlZhbHVlOwotCQkJfQotCQl9CisJCWludGVybmFsIHN0YXRp YyB2b2lkIEluaXRpYWxpemUgKCkKKwkJeworCQkJQ3JlZGVudGlhbENhY2hlID0gbmV3IENyZWRl bnRpYWxTdG9yZSAoKTsKKwkJCVByb3h5Q2FjaGUgPSBuZXcgUHJveHlDYWNoZSAoKTsKKwkJCUNy ZWRlbnRpYWxQcm92aWRlciA9IEFkZGluTWFuYWdlci5HZXRFeHRlbnNpb25PYmplY3RzPElDcmVk ZW50aWFsUHJvdmlkZXI+IChXZWJDcmVkZW50aWFsUHJvdmlkZXJzUGF0aCkuRmlyc3RPckRlZmF1 bHQgKCk7CiAKLQkJcHVibGljIElQcm94eUNhY2hlIFByb3h5Q2FjaGUgeyBnZXQ7IHNldDsgfQot CQlwdWJsaWMgSUNyZWRlbnRpYWxDYWNoZSBDcmVkZW50aWFsQ2FjaGUgeyBnZXQ7IHNldDsgfQot CQlwdWJsaWMgSUNyZWRlbnRpYWxQcm92aWRlciBDcmVkZW50aWFsUHJvdmlkZXIgeyBnZXQ7IHNl dDsgfQorCQkJaWYgKENyZWRlbnRpYWxQcm92aWRlciA9PSBudWxsKSB7CisJCQkJTG9nZ2luZ1Nl cnZpY2UuTG9nV2FybmluZyAoIk5vIHByb3h5IGNyZWRlbnRpYWwgcHJvdmlkZXIgd2FzIGZvdW5k Iik7CiAKLQkJV2ViU2VydmljZSAoKSB7fQorCQkJfQorCQl9CiAKLQkJcHVibGljIHN0YXRpYyB2 b2lkIEluaXRpYWxpemUgKCkKKwkJY2xhc3MgTnVsbENyZWRlbnRpYWxzUHJvdmlkZXIgOiBJQ3Jl ZGVudGlhbFByb3ZpZGVyCiAJCXsKLQkJCS8vIFdlIGNhbiBhY2Nlc3MgZXh0ZW5zaW9uIHBvaW50 cyBub3csIHNvIHdlIG5lZWQgdG8gZ2V0IHRoZSBjcmVkZW50aWFsIHByb3ZpZGVyLCB3aGljaCBp cyBwbGF0Zm9ybS1zcGVjaWZpYy4KLQkJCS8vIFRoZSBjcmVkZW50aWFsIGNhY2hlIGFuZCBwcm94 eSBjYWNoZSBhcmUgcHVyZSBtYW5hZ2VkIGltcGxlbWVudGF0aW9uLgotCQkJSW5zdGFuY2UuQ3Jl ZGVudGlhbENhY2hlID0gQ3JlZGVudGlhbFN0b3JlLkluc3RhbmNlOwotCQkJSW5zdGFuY2UuUHJv eHlDYWNoZSA9IFdlYi5Qcm94eUNhY2hlLkluc3RhbmNlOwotCi0JCQkvLyBHZXQgdGhlIGZpcnN0 IHJlZ2lzdGVyZWQgY3JlZGVudGlhbCBwcm92aWRlcgotCQkJSW5zdGFuY2UuQ3JlZGVudGlhbFBy b3ZpZGVyID0gQWRkaW5NYW5hZ2VyLkdldEV4dGVuc2lvbk9iamVjdHM8SUNyZWRlbnRpYWxQcm92 aWRlcj4gKFdlYkNyZWRlbnRpYWxQcm92aWRlcnNQYXRoKS5GaXJzdE9yRGVmYXVsdCAoKTsKKwkJ CXB1YmxpYyBJQ3JlZGVudGlhbHMgR2V0Q3JlZGVudGlhbHMgKAorCQkJCVVyaSB1cmksIElXZWJQ cm94eSBwcm94eSwgQ3JlZGVudGlhbFR5cGUgY3JlZGVudGlhbFR5cGUsIElDcmVkZW50aWFscyBl eGlzdGluZ0NyZWRlbnRpYWxzLCBib29sIHJldHJ5aW5nKQorCQkJeworCQkJCXJldHVybiBudWxs OworCQkJfQogCQl9CiAJfQogfQ0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxv cC5Db3JlL01vbm9EZXZlbG9wLkNvcmUuY3Nwcm9qDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTIsOSArMTIs NiBAQAogICAgIDxCdWlsZEluZm8+Li5cLi5cLi5cYnVpbGRcYmluXGJ1aWxkaW5mbzwvQnVpbGRJ bmZvPgogICAgIDxWY1JldmlzaW9uPi4uXC4uXC4uXHZjcmV2aXNpb248L1ZjUmV2aXNpb24+CiAg IDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChCVUlMRF9S RVZJU0lPTiknICE9ICcnIj4KLSAgICAgIDxEZWZpbmVDb25zdGFudHM+JChEZWZpbmVDb25zdGFu dHMpO0VOQUJMRV9SQVlHVU48L0RlZmluZUNvbnN0YW50cz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgog ICA8Q2hvb3NlPgogICAgIDxXaGVuIENvbmRpdGlvbj0iIEV4aXN0cygnYzpcUHJvZ3JhbSBGaWxl c1xHaXRcYmluXGdpdC5leGUnKSAiPgogICAgICAgPFByb3BlcnR5R3JvdXA+CkBAIC03MSw2ICs2 OCw5IEBACiAgICAgPEdlbmVyYXRlRG9jdW1lbnRhdGlvbj50cnVlPC9HZW5lcmF0ZURvY3VtZW50 YXRpb24+CiAgICAgPE5vV2Fybj4xNTkxOzE1NzM8L05vV2Fybj4KICAgPC9Qcm9wZXJ0eUdyb3Vw PgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKEJVSUxEX1JFVklTSU9OKScgIT0gJyci PgorICAgIDxEZWZpbmVDb25zdGFudHM+JChEZWZpbmVDb25zdGFudHMpO0VOQUJMRV9SQVlHVU48 L0RlZmluZUNvbnN0YW50cz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAg IDxSZWZlcmVuY2UgSW5jbHVkZT0iU3lzdGVtIiAvPgogICAgIDxSZWZlcmVuY2UgSW5jbHVkZT0i TW9uby5Qb3NpeCIgLz4NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuQ29y ZS9Nb25vRGV2ZWxvcC5Db3JlL0xvZ2dpbmdTZXJ2aWNlLmNzDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMTgx LDIwICsxODEsNiBAQCBpbnRlcm5hbCBzdGF0aWMgdm9pZCBSZXBvcnRVbmhhbmRsZWRFeGNlcHRp b24gKEV4Y2VwdGlvbiBleCwgYm9vbCB3aWxsU2h1dERvd24sCiAJCQkJaWYgKFJlcG9ydENyYXNo ZXMuSGFzVmFsdWUgJiYgIVJlcG9ydENyYXNoZXMuVmFsdWUpCiAJCQkJCXJldHVybjsKIAotCQkJ CWJ5dGVbXSBkYXRhOwotCQkJCXVzaW5nICh2YXIgc3RyZWFtID0gbmV3IE1lbW9yeVN0cmVhbSAo KSkgewotCQkJCQl1c2luZyAodmFyIHdyaXRlciA9IFN5c3RlbS5YbWwuWG1sV3JpdGVyLkNyZWF0 ZSAoc3RyZWFtKSkgewotCQkJCQkJd3JpdGVyLldyaXRlU3RhcnRFbGVtZW50ICgiQ3Jhc2hMb2ci KTsKLQkJCQkJCXdyaXRlci5Xcml0ZUF0dHJpYnV0ZVN0cmluZyAoInZlcnNpb24iLCBTZXJ2aWNl VmVyc2lvbik7Ci0KLQkJCQkJCXdyaXRlci5Xcml0ZUVsZW1lbnRTdHJpbmcgKCJTeXN0ZW1JbmZv cm1hdGlvbiIsIFN5c3RlbUluZm9ybWF0aW9uLkdldFRleHREZXNjcmlwdGlvbiAoKSk7Ci0JCQkJ CQl3cml0ZXIuV3JpdGVFbGVtZW50U3RyaW5nICgiRXhjZXB0aW9uIiwgZXguVG9TdHJpbmcgKCkp OwotCi0JCQkJCQl3cml0ZXIuV3JpdGVFbmRFbGVtZW50ICgpOwotCQkJCQl9Ci0JCQkJCWRhdGEg PSBzdHJlYW0uVG9BcnJheSAoKTsKLQkJCQl9Ci0KIAkJCQl2YXIgY3VzdG9tRGF0YSA9IG5ldyBI YXNodGFibGUgKCk7CiAJCQkJY3VzdG9tRGF0YVsiU3lzdGVtSW5mb3JtYXRpb24iXSA9IFN5c3Rl bUluZm9ybWF0aW9uLkdldFRleHREZXNjcmlwdGlvbiAoKTsKIApAQCAtMjA0LDE3ICsxOTAsNiBA QCBpbnRlcm5hbCBzdGF0aWMgdm9pZCBSZXBvcnRVbmhhbmRsZWRFeGNlcHRpb24gKEV4Y2VwdGlv biBleCwgYm9vbCB3aWxsU2h1dERvd24sCiAJCQkJCX0pOwogCQkJCX0KIAotCQkJCS8vIExvZyB0 byBkaXNrIG9ubHkgaWYgdXBsb2FkaW5nIGZhaWxzLgotCQkJCXZhciBmaWxlbmFtZSA9IHN0cmlu Zy5Gb3JtYXQgKCJ7MH0uezF9LnsyfS5jcmFzaGxvZyIsIERhdGVUaW1lLlV0Y05vdy5Ub1N0cmlu ZyAoInl5eXktTU0tZGRfX0hILW1tLXNzIiksIFN5c3RlbUluZm9ybWF0aW9uLlNlc3Npb25VdWlk LCBJbnRlcmxvY2tlZC5JbmNyZW1lbnQgKHJlZiBDcmFzaElkKSk7Ci0JCQkJVGhyZWFkUG9vbC5R dWV1ZVVzZXJXb3JrSXRlbSAoZGVsZWdhdGUgewotCQkJCQlpZiAoIVRyeVVwbG9hZFJlcG9ydCAo ZmlsZW5hbWUsIGRhdGEpKSB7Ci0JCQkJCQlpZiAoIURpcmVjdG9yeS5FeGlzdHMgKENyYXNoTG9n RGlyZWN0b3J5KSkKLQkJCQkJCQlEaXJlY3RvcnkuQ3JlYXRlRGlyZWN0b3J5IChDcmFzaExvZ0Rp cmVjdG9yeSk7Ci0KLQkJCQkJCUZpbGUuV3JpdGVBbGxCeXRlcyAoQ3Jhc2hMb2dEaXJlY3Rvcnku Q29tYmluZSAoZmlsZW5hbWUpLCBkYXRhKTsKLQkJCQkJfQotCQkJCX0pOwotCiAJCQkJLy9lbnN1 cmUgd2UgZG9uJ3QgbG9zZSB0aGUgc2V0dGluZwogCQkJCWlmIChSZXBvcnRDcmFzaGVzICE9IG9s ZFJlcG9ydENyYXNoZXMpIHsKIAkJCQkJUHJvcGVydHlTZXJ2aWNlLlNhdmVQcm9wZXJ0aWVzICgp Ow0KDQpNb2RpZmllZDogbWFpbi9zcmMvY29yZS9Nb25vRGV2ZWxvcC5Db3JlL01vbm9EZXZlbG9w LkNvcmUvUnVudGltZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljIHN0 YXRpYyB2b2lkIEluaXRpYWxpemUgKGJvb2wgdXBkYXRlQWRkaW5SZWdpc3RyeSkKIAkJCQlTeW5j aHJvbml6YXRpb25Db250ZXh0LlNldFN5bmNocm9uaXphdGlvbkNvbnRleHQgKG5ldyBTeW5jaHJv bml6YXRpb25Db250ZXh0ICgpKTsKIAogCQkJLy8gSG9vayB1cCB0aGUgU1NMIGNlcnRpZmljYXRl IHZhbGlkYXRpb24gY29kZXBhdGgKLQkJCVN5c3RlbS5OZXQuU2VydmljZVBvaW50TWFuYWdlci5T ZXJ2ZXJDZXJ0aWZpY2F0ZVZhbGlkYXRpb25DYWxsYmFjayArPSBkZWxlZ2F0ZShvYmplY3Qgc2Vu ZGVyLCBYNTA5Q2VydGlmaWNhdGUgY2VydGlmaWNhdGUsIFg1MDlDaGFpbiBjaGFpbiwgU3NsUG9s aWN5RXJyb3JzIHNzbFBvbGljeUVycm9ycykgeworCQkJU2VydmljZVBvaW50TWFuYWdlci5TZXJ2 ZXJDZXJ0aWZpY2F0ZVZhbGlkYXRpb25DYWxsYmFjayArPSBkZWxlZ2F0ZShvYmplY3Qgc2VuZGVy LCBYNTA5Q2VydGlmaWNhdGUgY2VydGlmaWNhdGUsIFg1MDlDaGFpbiBjaGFpbiwgU3NsUG9saWN5 RXJyb3JzIHNzbFBvbGljeUVycm9ycykgewogCQkJCWlmIChzc2xQb2xpY3lFcnJvcnMgPT0gU3Ns UG9saWN5RXJyb3JzLk5vbmUpCiAJCQkJCXJldHVybiB0cnVlOwogCQkJCQpAQCAtMTEyLDYgKzEx Miw3IEBAIHB1YmxpYyBzdGF0aWMgdm9pZCBJbml0aWFsaXplIChib29sIHVwZGF0ZUFkZGluUmVn aXN0cnkpCiAJCQkJQ291bnRlcnMuUnVudGltZUluaXRpYWxpemF0aW9uLlRyYWNlICgiSW5pdGlh bGl6ZWQgQWRkaW4gTWFuYWdlciIpOwogCQkJCQogCQkJCVByb3BlcnR5U2VydmljZS5Jbml0aWFs aXplICgpOworCQkJCVdlYlNlcnZpY2UuSW5pdGlhbGl6ZSAoKTsKIAkJCQkKIAkJCQkvL2hhdmUg dG8gZG8gdGhpcyBhZnRlciB0aGUgYWRkaW4gc2VydmljZSBhbmQgcHJvcGVydHkgc2VydmljZSBo YXZlIGluaXRpYWxpemVkCiAJCQkJaWYgKFVzZXJEYXRhTWlncmF0aW9uU2VydmljZS5IYXNTb3Vy Y2UpIHsKQEAgLTEyNCw4ICsxMjUsNiBAQCBwdWJsaWMgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZSAo Ym9vbCB1cGRhdGVBZGRpblJlZ2lzdHJ5KQogCQkJCUNvdW50ZXJzLlJ1bnRpbWVJbml0aWFsaXph dGlvbi5UcmFjZSAoIkluaXRpYWxpemluZyBBc3NlbWJseSBTZXJ2aWNlIik7CiAJCQkJc3lzdGVt QXNzZW1ibHlTZXJ2aWNlID0gbmV3IFN5c3RlbUFzc2VtYmx5U2VydmljZSAoKTsKIAkJCQlzeXN0 ZW1Bc3NlbWJseVNlcnZpY2UuSW5pdGlhbGl6ZSAoKTsKLQotCQkJCVdlYlNlcnZpY2UuSW5pdGlh bGl6ZSAoKTsKIAkJCQkKIAkJCQlpbml0aWFsaXplZCA9IHRydWU7CiAJCQkJDQoNCk1vZGlmaWVk OiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5Db21wb25lbnRzLk1h aW5Ub29sYmFyL1Byb2plY3RTZWFyY2hDYXRlZ29yeS5jcw0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTI4Nywx MiArMjg3LDE4IEBAIGludGVybmFsIFNlYXJjaFJlc3VsdCBDaGVja0ZpbGUgKFByb2plY3RGaWxl IGZpbGUpCiAJCQlpbnRlcm5hbCBTZWFyY2hSZXN1bHQgQ2hlY2tUeXBlIChJVHlwZURlZmluaXRp b24gdHlwZSkKIAkJCXsKIAkJCQlpbnQgcmFuazsKLQkJCQlpZiAoTWF0Y2hOYW1lIChUeXBlU2Vh cmNoUmVzdWx0LkdldFBsYWluVGV4dCAodHlwZSwgZmFsc2UpLCBvdXQgcmFuaykpCisJCQkJaWYg KE1hdGNoTmFtZSAoVHlwZVNlYXJjaFJlc3VsdC5HZXRQbGFpblRleHQgKHR5cGUsIGZhbHNlKSwg b3V0IHJhbmspKSB7CisJCQkJCWlmICh0eXBlLkRlY2xhcmluZ1R5cGUgIT0gbnVsbCkKKwkJCQkJ CXJhbmstLTsKIAkJCQkJcmV0dXJuIG5ldyBUeXBlU2VhcmNoUmVzdWx0IChwYXR0ZXJuLCBUeXBl U2VhcmNoUmVzdWx0LkdldFBsYWluVGV4dCAodHlwZSwgZmFsc2UpLCByYW5rLCB0eXBlLCBmYWxz ZSkgeyBBbWJpZW5jZSA9IGFtYmllbmNlIH07CisJCQkJfQogCQkJCWlmICghRnVsbFNlYXJjaCkK IAkJCQkJcmV0dXJuIG51bGw7Ci0JCQkJaWYgKE1hdGNoTmFtZSAoVHlwZVNlYXJjaFJlc3VsdC5H ZXRQbGFpblRleHQgKHR5cGUsIHRydWUpLCBvdXQgcmFuaykpCisJCQkJaWYgKE1hdGNoTmFtZSAo VHlwZVNlYXJjaFJlc3VsdC5HZXRQbGFpblRleHQgKHR5cGUsIHRydWUpLCBvdXQgcmFuaykpIHsK KwkJCQkJaWYgKHR5cGUuRGVjbGFyaW5nVHlwZSAhPSBudWxsKQorCQkJCQkJcmFuay0tOwogCQkJ CQlyZXR1cm4gbmV3IFR5cGVTZWFyY2hSZXN1bHQgKHBhdHRlcm4sIFR5cGVTZWFyY2hSZXN1bHQu R2V0UGxhaW5UZXh0ICh0eXBlLCB0cnVlKSwgcmFuaywgdHlwZSwgdHJ1ZSkgeyBBbWJpZW5jZSA9 IGFtYmllbmNlIH07CisJCQkJfQogCQkJCXJldHVybiBudWxsOwogCQkJfQogCQkJDQoNCk1vZGlm aWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuR3VpLk9w dGlvblBhbmVscy9Nb25vUnVudGltZVBhbmVsLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjUsMTIgKzI1 LDE1IEBACiAvLyBUSEUgU09GVFdBUkUuCiAKIHVzaW5nIFN5c3RlbTsKK3VzaW5nIFN5c3RlbS5M aW5xOwogdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CisKK3VzaW5nIEd0azsKKwog dXNpbmcgTW9ub0RldmVsb3AuQ29yZTsKIHVzaW5nIE1vbm9EZXZlbG9wLklkZS5HdWkuRGlhbG9n czsKIHVzaW5nIE1vbm9EZXZlbG9wLkNvcmUuQXNzZW1ibGllczsKIHVzaW5nIE1vbm9EZXZlbG9w LkNvbXBvbmVudHM7Ci11c2luZyBHdGs7CiAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5JZGUuR3Vp Lk9wdGlvblBhbmVscwogewpAQCAtNTIsOSArNTUsOSBAQCBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBB cHBseUNoYW5nZXMgKCkKIAlbU3lzdGVtLkNvbXBvbmVudE1vZGVsLlRvb2xib3hJdGVtKHRydWUp XQogCWludGVybmFsIHBhcnRpYWwgY2xhc3MgTW9ub1J1bnRpbWVQYW5lbFdpZGdldCA6IEd0ay5C aW4KIAl7Ci0JCUxpc3RTdG9yZSBzdG9yZTsKLQkJTGlzdDxNb25vUnVudGltZUluZm8+IG5ld0lu Zm9zID0gbmV3IExpc3Q8TW9ub1J1bnRpbWVJbmZvPiAoKTsKLQkJTGlzdDxUYXJnZXRSdW50aW1l PiByZW1vdmVkUnVudGltZXMgPSBuZXcgTGlzdDxUYXJnZXRSdW50aW1lPiAoKTsKKwkJcmVhZG9u bHkgTGlzdDxUYXJnZXRSdW50aW1lPiByZW1vdmVkUnVudGltZXMgPSBuZXcgTGlzdDxUYXJnZXRS dW50aW1lPiAoKTsKKwkJcmVhZG9ubHkgTGlzdDxNb25vUnVudGltZUluZm8+IG5ld0luZm9zID0g bmV3IExpc3Q8TW9ub1J1bnRpbWVJbmZvPiAoKTsKKwkJcmVhZG9ubHkgTGlzdFN0b3JlIHN0b3Jl OwogCQlUcmVlSXRlciBkZWZhdWx0SXRlcjsKIAkJVHJlZUl0ZXIgcnVubmluZ0l0ZXI7CiAJCQpA QCAtMTAxLDEzICsxMDQsMTQgQEAgcHVibGljIHZvaWQgU3RvcmUgKCkKIAkJCU1vbm9SdW50aW1l SW5mbyBuZXdEZWZhdWx0SW5mbyA9IG9iIGFzIE1vbm9SdW50aW1lSW5mbzsKIAkJCWlmIChvYiBp cyBUYXJnZXRSdW50aW1lKQogCQkJCUlkZUFwcC5QcmVmZXJlbmNlcy5EZWZhdWx0VGFyZ2V0UnVu dGltZSA9IChUYXJnZXRSdW50aW1lKW9iOwotCQkJCi0JCQlmb3JlYWNoIChNb25vUnVudGltZUlu Zm8gcmluZm8gaW4gbmV3SW5mb3MpIHsKKworCQkJZm9yZWFjaCAodmFyIHJpbmZvIGluIG5ld0lu Zm9zKSB7CiAJCQkJVGFyZ2V0UnVudGltZSB0ciA9IE1vbm9UYXJnZXRSdW50aW1lLlJlZ2lzdGVy UnVudGltZSAocmluZm8pOwogCQkJCWlmIChyaW5mbyA9PSBuZXdEZWZhdWx0SW5mbykKIAkJCQkJ SWRlQXBwLlByZWZlcmVuY2VzLkRlZmF1bHRUYXJnZXRSdW50aW1lID0gdHI7CiAJCQl9Ci0JCQlm b3JlYWNoIChNb25vVGFyZ2V0UnVudGltZSB0ciBpbiByZW1vdmVkUnVudGltZXMpCisKKwkJCWZv cmVhY2ggKHZhciB0ciBpbiByZW1vdmVkUnVudGltZXMuT2ZUeXBlPE1vbm9UYXJnZXRSdW50aW1l PiAoKSkKIAkJCQlNb25vVGFyZ2V0UnVudGltZS5VbnJlZ2lzdGVyUnVudGltZSAodHIpOwogCQkJ CiAJCX0NCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuSWRlL01vbm9EZXZl bG9wLklkZS5Qcm9qZWN0cy5PcHRpb25QYW5lbHMvQ29tYmluZUJ1aWxkT3B0aW9ucy5jcw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljIG92ZXJyaWRlIHZvaWQgQXBwbHlDaGFu Z2VzICgpCiAKIAlwYXJ0aWFsIGNsYXNzIENvbWJpbmVCdWlsZE9wdGlvbnNXaWRnZXQgOiBHdGsu QmluIAogCXsKLQkJU29sdXRpb24gc29sdXRpb247CisJCXJlYWRvbmx5IFNvbHV0aW9uIHNvbHV0 aW9uOwogCQkKIAkJcHVibGljIENvbWJpbmVCdWlsZE9wdGlvbnNXaWRnZXQgKFNvbHV0aW9uIHNv bHV0aW9uKQogCQl7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9N b25vRGV2ZWxvcC5JZGUuUHJvamVjdHMuT3B0aW9uUGFuZWxzL1J1bnRpbWVPcHRpb25zUGFuZWwu Y3MNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYyBvdmVycmlkZSB2b2lkIEFw cGx5Q2hhbmdlcygpCiAKIAlwYXJ0aWFsIGNsYXNzIFJ1bnRpbWVPcHRpb25zUGFuZWxXaWRnZXQg OiBHdGsuQmluIAogCXsKLQkJRG90TmV0UHJvamVjdCBwcm9qZWN0OwotCQlMaXN0PFRhcmdldEZy YW1ld29yaz4gZnJhbWV3b3JrczsKKwkJcmVhZG9ubHkgTGlzdDxUYXJnZXRGcmFtZXdvcms+IGZy YW1ld29ya3M7CisJCXJlYWRvbmx5IERvdE5ldFByb2plY3QgcHJvamVjdDsKIAogCQlwdWJsaWMg UnVudGltZU9wdGlvbnNQYW5lbFdpZGdldCAoRG90TmV0UHJvamVjdCBwcm9qZWN0LCBJRW51bWVy YWJsZTxJdGVtQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbnMpCiAJCXsKQEAgLTgzLDcgKzgz LDcgQEAgcHVibGljIFJ1bnRpbWVPcHRpb25zUGFuZWxXaWRnZXQgKERvdE5ldFByb2plY3QgcHJv amVjdCwgSUVudW1lcmFibGU8SXRlbUNvbmZpZ3UKIAkJCQlub3RJbnN0YWxsZWQgPSB0cnVlOwog CQkJCWZyYW1ld29ya3MuQWRkIChwcm9qZWN0LlRhcmdldEZyYW1ld29yayk7CiAJCQl9Ci0JCQkJ CisKIAkJCS8vc29ydCBieSBpZCBhc2NlbmRpbmcsIHZlcnNpb24gZGVzY2VuZGluZywgcHJvZmls ZSBhc2NlbmRpbmcKIAkJCWZyYW1ld29ya3MuU29ydCAoKHgsIHkpID0+IHsKIAkJCQl2YXIgY21w ID0gc3RyaW5nLkNvbXBhcmVPcmRpbmFsICh4LklkLklkZW50aWZpZXIsIHkuSWQuSWRlbnRpZmll cik7DQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxv cC5JZGUuVGVtcGxhdGVzL1NpbmdsZUZpbGVEZXNjcmlwdGlvblRlbXBsYXRlLmNzDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQpAQCAtMjcyLDcgKzI3MiwxMSBAQCBwdWJsaWMgdmlydHVhbCBTdHJlYW0gQ3JlYXRlRmls ZUNvbnRlbnQgKFNvbHV0aW9uSXRlbSBwb2xpY3lQYXJlbnQsIFByb2plY3QgcHJvagogCQkJCQlj b250ZW50ID0gZm9ybWF0dGVkOwogCQkJfQogCQkJCi0JCQlNZW1vcnlTdHJlYW0gbXMgPSBuZXcg TWVtb3J5U3RyZWFtICgpOworCQkJdmFyIG1zID0gbmV3IE1lbW9yeVN0cmVhbSAoKTsKKworCQkJ dmFyIGJvbSA9IEVuY29kaW5nLlVURjguR2V0UHJlYW1ibGUgKCk7CisJCQltcy5Xcml0ZSAoYm9t LCAwLCBib20uTGVuZ3RoKTsKKwogCQkJYnl0ZVtdIGRhdGE7CiAJCQlpZiAoQWRkU3RhbmRhcmRI ZWFkZXIpIHsKIAkJCQlzdHJpbmcgaGVhZGVyID0gU3RhbmRhcmRIZWFkZXJTZXJ2aWNlLkdldEhl YWRlciAocG9saWN5UGFyZW50LCBmaWxlTmFtZSwgdHJ1ZSk7DQoNCk1vZGlmaWVkOiBtYWluL3Ny Yy9jb3JlL01vbm9EZXZlbG9wLklkZS9Nb25vRGV2ZWxvcC5JZGUuVHlwZVN5c3RlbS9UeXBlU3lz dGVtU2VydmljZS5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTExMjgsMTkgKzExMjgsMjUgQEAgcHVibGlj IHZvaWQgSW5mb3JtRmlsZUFkZGVkIChQYXJzZWRGaWxlRXZlbnRBcmdzIGUpCiAKIAkJCVtOb25T ZXJpYWxpemVkXQogCQkJaW50IGxvYWRPcGVyYXRpb25EZXB0aCA9IDA7CisJCQlbTm9uU2VyaWFs aXplZF0KKwkJCXJlYWRvbmx5IG9iamVjdCBsb2FkT3BlcmF0aW9uTG9ja2VyID0gbmV3IG9iamVj dCAoKTsKIAotCQkJaW50ZXJuYWwgaW50IExvYWRPcGVyYXRpb25EZXB0aCB7Ci0JCQkJZ2V0IHsK LQkJCQkJcmV0dXJuIGxvYWRPcGVyYXRpb25EZXB0aDsKLQkJCQl9Ci0JCQkJc2V0IHsKLQkJCQkJ bG9hZE9wZXJhdGlvbkRlcHRoID0gdmFsdWU7Ci0JCQkJCWlmIChsb2FkT3BlcmF0aW9uRGVwdGgg PCAwKQotCQkJCQkJdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24gKCk7Ci0JCQkJ CU9uTG9hZCAoRXZlbnRBcmdzLkVtcHR5KTsKKwkJCWludGVybmFsIHZvaWQgQmVnaW5Mb2FkT3Bl cmF0aW9uICgpCisJCQl7CisJCQkJbG9jayAobG9hZE9wZXJhdGlvbkxvY2tlcikgeworCQkJCQls b2FkT3BlcmF0aW9uRGVwdGgrKzsKIAkJCQl9CiAJCQl9CiAKKwkJCWludGVybmFsIHZvaWQgRW5k TG9hZE9wZXJhdGlvbiAoKQorCQkJeworCQkJCWxvY2sgKGxvYWRPcGVyYXRpb25Mb2NrZXIpIHsK KwkJCQkJaWYgKGxvYWRPcGVyYXRpb25EZXB0aCA+IDApIHsKKwkJCQkJCWxvYWRPcGVyYXRpb25E ZXB0aC0tOworCQkJCQl9CisJCQkJfQorCQkJCU9uTG9hZCAoRXZlbnRBcmdzLkVtcHR5KTsKKwkJ CX0KIAkJCWJvb2wgaW5Mb2FkOwogCQkJcHVibGljIGJvb2wgSW5Mb2FkIHsKIAkJCQlnZXQgewpA QCAtMTI2OSw3ICsxMjc1LDcgQEAgcHVibGljIExhenlQcm9qZWN0TG9hZGVyIChQcm9qZWN0Q29u dGVudFdyYXBwZXIgd3JhcHBlcikKIAkJCQkJdGhpcy53cmFwcGVyID0gd3JhcHBlcjsKIAkJCQkJ Y29udGV4dFRhc2sgPSBUYXNrLkZhY3RvcnkuU3RhcnROZXcgKGRlbGVnYXRlIHsKIAkJCQkJCXRy eSB7Ci0JCQkJCQkJdGhpcy53cmFwcGVyLkxvYWRPcGVyYXRpb25EZXB0aCsrOworCQkJCQkJCXRo aXMud3JhcHBlci5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQkJdmFyIHAgPSB0aGlzLndy YXBwZXIuUHJvamVjdDsKIAkJCQkJCQl2YXIgY29udGV4dCA9IExvYWRQcm9qZWN0Q2FjaGUgKHAp OwogCkBAIC0xMjg4LDcgKzEyOTQsNyBAQCBwdWJsaWMgTGF6eVByb2plY3RMb2FkZXIgKFByb2pl Y3RDb250ZW50V3JhcHBlciB3cmFwcGVyKQogCQkJCQkJCVF1ZXVlUGFyc2VKb2IgKHRoaXMud3Jh cHBlcik7CiAJCQkJCQkJcmV0dXJuIGNvbnRleHQ7CiAJCQkJCQl9IGZpbmFsbHkgewotCQkJCQkJ CXRoaXMud3JhcHBlci5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJCQl0aGlzLndyYXBwZXIu RW5kTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQkJCX0KIAkJCQkJfSk7CiAJCQkJfQpAQCAtMTczMCw3 ICsxNzM2LDggQEAgaW50ZXJuYWwgc3RhdGljIHZvaWQgVW5sb2FkUHJvamVjdCAoUHJvamVjdCBw cm9qZWN0KQogCQkJCQogCQkJUHJvamVjdENvbnRlbnRXcmFwcGVyIHdyYXBwZXI7CiAJCQlsb2Nr IChwcm9qZWN0V3JhcHBlclVwZGF0ZUxvY2spIHsKLQkJCQl3cmFwcGVyID0gcHJvamVjdENvbnRl bnRzIFtwcm9qZWN0XTsKKwkJCQlpZiAoIXByb2plY3RDb250ZW50cy5UcnlHZXRWYWx1ZSAocHJv amVjdCwgb3V0IHdyYXBwZXIpKQorCQkJCQlyZXR1cm47CiAJCQkJcHJvamVjdENvbnRlbnRzLlJl bW92ZSAocHJvamVjdCk7CiAJCQl9CiAJCQlTdG9yZVByb2plY3RDYWNoZSAocHJvamVjdCwgd3Jh cHBlcik7CkBAIC0yMTU1LDcgKzIxNjIsMTAgQEAgaW50ZXJuYWwgdm9pZCBFbnN1cmVBc3NlbWJs eUxvYWRlZCAoKQogCQkJCWxvY2sgKGFzbUxvY2tlcikgewogCQkJCQlpZiAoYXNzZW1ibHkgIT0g bnVsbCkKIAkJCQkJCXJldHVybjsKLQkJCQkJYXNzZW1ibHkgPSBMb2FkQXNzZW1ibHkgKCkgPz8g bmV3IERlZmF1bHRVbnJlc29sdmVkQXNzZW1ibHkgKGZpbGVOYW1lKTsKKwkJCQkJYXNzZW1ibHkg PSBuZXcgRGVmYXVsdFVucmVzb2x2ZWRBc3NlbWJseSAoZmlsZU5hbWUpOworCisJCQkJCWFzc2Vt Ymx5ID0gTG9hZEFzc2VtYmx5ICgpID8/IGFzc2VtYmx5OyAKKwogCQkJCQlPbkxvYWQgKEV2ZW50 QXJncy5FbXB0eSk7CiAJCQkJfQogCQkJfQpAQCAtMjUzNyw3ICsyNTQ3LDcgQEAgcHVibGljIHZv aWQgUnVuIChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCiAJCQkJVHlwZVN5c3RlbVBhcnNlciBw YXJzZXIgPSBudWxsOwogCQkJCXZhciB0YWdzID0gQ29udGV4dC5HZXRFeHRlbnNpb25PYmplY3Qg PFByb2plY3RDb21tZW50VGFncz4gKCk7CiAJCQkJdHJ5IHsKLQkJCQkJQ29udGV4dC5Mb2FkT3Bl cmF0aW9uRGVwdGgrKzsKKwkJCQkJQ29udGV4dC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJ CWZvcmVhY2ggKHZhciBmaWxlIGluIChGaWxlTGlzdCA/PyBDb250ZXh0LlByb2plY3QuRmlsZXMp KSB7CiAJCQkJCQl2YXIgZmlsZU5hbWUgPSBmaWxlLkZpbGVQYXRoOwogCQkJCQkJaWYgKGZpbGVz U2tpcHBlZEluUGFyc2VUaHJlYWQuQW55IChmID0+IGYgPT0gZmlsZU5hbWUpKQpAQCAtMjU1OCw3 ICsyNTY4LDcgQEAgcHVibGljIHZvaWQgUnVuIChJUHJvZ3Jlc3NNb25pdG9yIG1vbml0b3IpCiAJ CQkJCQlDb250ZXh0LkluZm9ybUZpbGVBZGRlZCAobmV3IFBhcnNlZEZpbGVFdmVudEFyZ3MgKHBh cnNlZERvY3VtZW50LlBhcnNlZEZpbGUpKTsKIAkJCQkJfQogCQkJCX0gZmluYWxseSB7Ci0JCQkJ CUNvbnRleHQuTG9hZE9wZXJhdGlvbkRlcHRoLS07CisJCQkJCUNvbnRleHQuRW5kTG9hZE9wZXJh dGlvbiAoKTsKIAkJCQl9CiAJCQl9CiAJCX0KQEAgLTI2MTQsNyArMjYyNCw3IEBAIHN0YXRpYyB2 b2lkIFF1ZXVlUGFyc2VKb2IgKFByb2plY3RDb250ZW50V3JhcHBlciBjb250ZXh0LCBJRW51bWVy YWJsZTxQcm9qZWN0RmlsCiAJCQl9OwogCQkJbG9jayAocGFyc2VRdWV1ZUxvY2spIHsKIAkJCQlS ZW1vdmVQYXJzZUpvYiAoY29udGV4dCk7Ci0JCQkJY29udGV4dC5Mb2FkT3BlcmF0aW9uRGVwdGgr KzsKKwkJCQljb250ZXh0LkJlZ2luTG9hZE9wZXJhdGlvbiAoKTsKIAkJCQlwYXJzZVF1ZXVlSW5k ZXggW2NvbnRleHRdID0gam9iOwogCQkJCXBhcnNlUXVldWUuRW5xdWV1ZSAoam9iKTsKIAkJCQlw YXJzZUV2ZW50LlNldCAoKTsKQEAgLTI2NTIsNyArMjY2Miw3IEBAIHN0YXRpYyB2b2lkIFJlbW92 ZVBhcnNlSm9iIChQcm9qZWN0Q29udGVudFdyYXBwZXIgcHJvamVjdCkKIAkJCQlQYXJzaW5nSm9i IGpvYjsKIAkJCQlpZiAocGFyc2VRdWV1ZUluZGV4LlRyeUdldFZhbHVlIChwcm9qZWN0LCBvdXQg am9iKSkgewogCQkJCQlwYXJzZVF1ZXVlSW5kZXguUmVtb3ZlIChwcm9qZWN0KTsKLQkJCQkJcHJv amVjdC5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJcHJvamVjdC5FbmRMb2FkT3BlcmF0aW9u ICgpOwogCQkJCX0KIAkJCX0KIAkJfQpAQCAtMjcwNSw3ICsyNzE1LDcgQEAgc3RhdGljIHZvaWQg Q2hlY2tNb2RpZmllZEZpbGVzIChQcm9qZWN0IHByb2plY3QsIFByb2plY3RGaWxlW10gcHJvamVj dEZpbGVzLCBQcm8KIAkJewogCQkJY29udGVudC5SdW5XaGVuTG9hZGVkIChkZWxlZ2F0ZShJUHJv amVjdENvbnRlbnQgY250KSB7CiAJCQkJdHJ5IHsKLQkJCQkJY29udGVudC5Mb2FkT3BlcmF0aW9u RGVwdGgrKzsKKwkJCQkJY29udGVudC5CZWdpbkxvYWRPcGVyYXRpb24gKCk7CiAJCQkJCXZhciBt b2RpZmllZEZpbGVzID0gbmV3IExpc3Q8UHJvamVjdEZpbGU+ICgpOwogCQkJCQl2YXIgb2xkRmls ZU5ld0ZpbGUgPSBuZXcgTGlzdDxUdXBsZTxQcm9qZWN0RmlsZSwgSVVucmVzb2x2ZWRGaWxlPj4g KCk7CiAKQEAgLTI3NDcsNyArMjc1Nyw3IEBAIHN0YXRpYyB2b2lkIENoZWNrTW9kaWZpZWRGaWxl cyAoUHJvamVjdCBwcm9qZWN0LCBQcm9qZWN0RmlsZVtdIHByb2plY3RGaWxlcywgUHJvCiAJCQkJ fSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKIAkJCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJF eGNlcHRpb24gaW4gY2hlY2sgbW9kaWZpZWQgZmlsZXMuIiwgZSk7CiAJCQkJfSBmaW5hbGx5IHsK LQkJCQkJY29udGVudC5Mb2FkT3BlcmF0aW9uRGVwdGgtLTsKKwkJCQkJY29udGVudC5FbmRMb2Fk T3BlcmF0aW9uICgpOwogCQkJCX0KIAogCQkJfSk7CkBAIC0yODIwLDcgKzI4MzAsNyBAQCBzdGF0 aWMgdm9pZCBDb25zdW1lUGFyc2luZ1F1ZXVlICgpCiAJCQkJCQkJCW1vbml0b3IgPSBHZXRQYXJz ZVByb2dyZXNzTW9uaXRvciAoKTsKIAkJCQkJCQltb25pdG9yLlJlcG9ydEVycm9yIChudWxsLCBl eCk7CiAJCQkJCQl9IGZpbmFsbHkgewotCQkJCQkJCWpvYi5Db250ZXh0LkxvYWRPcGVyYXRpb25E ZXB0aC0tOworCQkJCQkJCWpvYi5Db250ZXh0LkVuZExvYWRPcGVyYXRpb24gKCk7CiAJCQkJCQl9 CiAJCQkJCX0KIAkJCQkJDQoNCk1vZGlmaWVkOiBtYWluL3NyYy9jb3JlL01vbm9EZXZlbG9wLklk ZS9Nb25vRGV2ZWxvcC5JZGUvSWRlU3RhcnR1cC5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTQ2LDEyICs0 Niw5IEBACiB1c2luZyBNb25vRGV2ZWxvcC5Db3JlOwogdXNpbmcgTW9ub0RldmVsb3AuSWRlLkd1 aS5EaWFsb2dzOwogdXNpbmcgTW9ub0RldmVsb3AuSWRlLkd1aTsKLXVzaW5nIE1vbm9EZXZlbG9w LkNvcmUuRXhlY3V0aW9uOwogdXNpbmcgTW9ub0RldmVsb3AuQ29yZS5JbnN0cnVtZW50YXRpb247 CiB1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7Ci11c2luZyBNb25vRGV2ZWxvcC5Qcm9qZWN0czsK IHVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwotdXNpbmcgTW9ub0RldmVsb3AuQ29y ZS5Mb2dSZXBvcnRpbmc7CiAKIG5hbWVzcGFjZSBNb25vRGV2ZWxvcC5JZGUKIHsKQEAgLTg4LDkg Kzg1LDggQEAgaW50IFJ1biAoTW9ub0RldmVsb3BPcHRpb25zIG9wdGlvbnMpCiAJCQlQbGF0Zm9y bS5Jbml0aWFsaXplICgpOwogCQkJCiAJCQlDb3VudGVycy5Jbml0aWFsaXphdGlvbi5UcmFjZSAo IkluaXRpYWxpemluZyBHVEsiKTsKLQkJCWlmIChQbGF0Zm9ybS5Jc1dpbmRvd3MpIHsKLQkJCQlD aGVja1dpbmRvd3NHdGsgKCk7Ci0JCQl9CisJCQlpZiAoUGxhdGZvcm0uSXNXaW5kb3dzICYmICFD aGVja1dpbmRvd3NHdGsgKCkpCisJCQkJcmV0dXJuIDE7CiAJCQlTZXR1cEV4Y2VwdGlvbk1hbmFn ZXIgKCk7CiAJCQkKIAkJCXRyeSB7CkBAIC0zMjIsMjYgKzMxOCw2MSBAQCB2b2lkIFNldHVwVGhl bWUgKCkKIAkJW3JldHVybjogU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLk1hcnNoYWxB cyhTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuVW5tYW5hZ2VkVHlwZS5Cb29sKV0KIAkJ c3RhdGljIGV4dGVybiBib29sIFNldERsbERpcmVjdG9yeSAoc3RyaW5nIGxwUGF0aE5hbWUpOwog Ci0JCXN0YXRpYyB2b2lkIENoZWNrV2luZG93c0d0ayAoKQorCQlzdGF0aWMgYm9vbCBDaGVja1dp bmRvd3NHdGsgKCkKIAkJewogCQkJc3RyaW5nIGxvY2F0aW9uID0gbnVsbDsKKwkJCVZlcnNpb24g dmVyc2lvbiA9IG51bGw7CisJCQlWZXJzaW9uIG1pblZlcnNpb24gPSBuZXcgVmVyc2lvbiAoMiwg MTIsIDIyKTsKKwogCQkJdXNpbmcgKHZhciBrZXkgPSBNaWNyb3NvZnQuV2luMzIuUmVnaXN0cnku TG9jYWxNYWNoaW5lLk9wZW5TdWJLZXkoQCJTT0ZUV0FSRVxYYW1hcmluXEd0a1NoYXJwXEluc3Rh bGxGb2xkZXIiKSkgewotCQkJCWlmIChrZXkgIT0gbnVsbCkgeworCQkJCWlmIChrZXkgIT0gbnVs bCkKIAkJCQkJbG9jYXRpb24gPSBrZXkuR2V0VmFsdWUgKG51bGwpIGFzIHN0cmluZzsKLQkJCQl9 CiAJCQl9Ci0JCQlpZiAobG9jYXRpb24gPT0gbnVsbCB8fCAhRmlsZS5FeGlzdHMgKFBhdGguQ29t YmluZSAobG9jYXRpb24sICJiaW4iLCAibGliZ3RrLXdpbjMyLTIuMC0wLmRsbCIpKSkgewotCQkJ CUxvZ2dpbmdTZXJ2aWNlLkxvZ0Vycm9yICgiRGlkIG5vdCBmaW5kIHJlZ2lzdGVyZWQgR1RLIyBp bnN0YWxsYXRpb24iKTsKLQkJCQlyZXR1cm47CisJCQl1c2luZyAodmFyIGtleSA9IE1pY3Jvc29m dC5XaW4zMi5SZWdpc3RyeS5Mb2NhbE1hY2hpbmUuT3BlblN1YktleSAoQCJTT0ZUV0FSRVxYYW1h cmluXEd0a1NoYXJwXFZlcnNpb24iKSkgeworCQkJCWlmIChrZXkgIT0gbnVsbCkKKwkJCQkJVmVy c2lvbi5UcnlQYXJzZSAoa2V5LkdldFZhbHVlIChudWxsKSBhcyBzdHJpbmcsIG91dCB2ZXJzaW9u KTsKIAkJCX0KKworCQkJLy9UT0RPOiBjaGVjayBidWlsZCB2ZXJzaW9uIG9mIEdUSyMgZGxscyBp biBHQUMKKwkJCWlmICh2ZXJzaW9uID09IG51bGwgfHwgdmVyc2lvbiA8IG1pblZlcnNpb24gfHwg bG9jYXRpb24gPT0gbnVsbCB8fCAhRmlsZS5FeGlzdHMgKFBhdGguQ29tYmluZSAobG9jYXRpb24s ICJiaW4iLCAibGliZ3RrLXdpbjMyLTIuMC0wLmRsbCIpKSkgeworCQkJCUxvZ2dpbmdTZXJ2aWNl LkxvZ0Vycm9yICgiRGlkIG5vdCBmaW5kIHJlcXVpcmVkIEdUSyMgaW5zdGFsbGF0aW9uIik7CisJ CQkJc3RyaW5nIHVybCA9ICJodHRwOi8vbW9ub2RldmVsb3AuY29tL0Rvd25sb2FkIjsKKwkJCQlz dHJpbmcgY2FwdGlvbiA9ICJGYXRhbCBFcnJvciI7CisJCQkJc3RyaW5nIG1lc3NhZ2UgPQorCQkJ CQkiezB9IGRpZCBub3QgZmluZCB0aGUgcmVxdWlyZWQgdmVyc2lvbiBvZiBHVEsjLiBQbGVhc2Ug Y2xpY2sgT0sgdG8gb3BlbiB0aGUgZG93bmxvYWQgcGFnZSwgd2hlcmUgIiArCisJCQkJCSJ5b3Ug Y2FuIGRvd25sb2FkIGFuZCBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbi4iOworCQkJCWlmIChE aXNwbGF5V2luZG93c09rQ2FuY2VsTWVzc2FnZSAoCisJCQkJCXN0cmluZy5Gb3JtYXQgKG1lc3Nh Z2UsIEJyYW5kaW5nU2VydmljZS5BcHBsaWNhdGlvbk5hbWUsIHVybCksIGNhcHRpb24pCisJCQkJ KSB7CisJCQkJCVByb2Nlc3MuU3RhcnQgKHVybCk7CisJCQkJfQorCQkJCXJldHVybiBmYWxzZTsK KwkJCX0KKwogCQkJdmFyIHBhdGggPSBQYXRoLkNvbWJpbmUgKGxvY2F0aW9uLCBAImJpbiIpOwog CQkJdHJ5IHsKIAkJCQlpZiAoU2V0RGxsRGlyZWN0b3J5IChwYXRoKSkgewotCQkJCQlyZXR1cm47 CisJCQkJCXJldHVybiB0cnVlOwogCQkJCX0KIAkJCX0gY2F0Y2ggKEVudHJ5UG9pbnROb3RGb3Vu ZEV4Y2VwdGlvbikgewogCQkJfQotCQkJTG9nZ2luZ1NlcnZpY2UuTG9nRXJyb3IgKCJVbmFibGUg dG8gc2V0IEdUSyMgZGxsIGRpcmVjdG9yeSIpOworCQkJLy8gdGhpcyBzaG91bGRuJ3QgaGFwcGVu IHVubGVzcyBzb21ldGhpbmcgaXMgd2VpcmQgaW4gV2luZG93cworCQkJTG9nZ2luZ1NlcnZpY2Uu TG9nRXJyb3IgKCJVbmFibGUgdG8gc2V0IEdUSysgZGxsIGRpcmVjdG9yeSIpOworCQkJcmV0dXJu IHRydWU7CisJCX0KKworCQlzdGF0aWMgYm9vbCBEaXNwbGF5V2luZG93c09rQ2FuY2VsTWVzc2Fn ZSAoc3RyaW5nIG1lc3NhZ2UsIHN0cmluZyBjYXB0aW9uKQorCQl7CisJCQl2YXIgbmFtZSA9IHR5 cGVvZihpbnQpLkFzc2VtYmx5LkZ1bGxOYW1lLlJlcGxhY2UgKCJtc2NvcmxpYiIsICJTeXN0ZW0u V2luZG93cy5Gb3JtcyIpOworCQkJdmFyIGFzbSA9IEFzc2VtYmx5LkxvYWQgKG5hbWUpOworCQkJ dmFyIG1kID0gYXNtLkdldFR5cGUgKCJTeXN0ZW0uV2luZG93cy5Gb3Jtcy5NZXNzYWdlQm94Iik7 CisJCQl2YXIgbWJiID0gYXNtLkdldFR5cGUgKCJTeXN0ZW0uV2luZG93cy5Gb3Jtcy5NZXNzYWdl Qm94QnV0dG9ucyIpOworCQkJdmFyIG9rQ2FuY2VsID0gRW51bS5Ub09iamVjdCAobWJiLCAxKTsK KwkJCXZhciBkciA9IGFzbS5HZXRUeXBlICgiU3lzdGVtLldpbmRvd3MuRm9ybXMuRGlhbG9nUmVz dWx0Iik7CisJCQl2YXIgb2sgPSBFbnVtLlRvT2JqZWN0IChkciwgMSk7CisKKwkJCWNvbnN0IEJp bmRpbmdGbGFncyBmbGFncyA9IEJpbmRpbmdGbGFncy5JbnZva2VNZXRob2QgfCBCaW5kaW5nRmxh Z3MuUHVibGljIHwgQmluZGluZ0ZsYWdzLlN0YXRpYzsKKwkJCXJldHVybiBtZC5JbnZva2VNZW1i ZXIgKCJTaG93IiwgZmxhZ3MsIG51bGwsIG51bGwsIG5ldyBvYmplY3RbXSB7IG1lc3NhZ2UsIGNh cHRpb24sIG9rQ2FuY2VsIH0pLkVxdWFscyAob2spOwogCQl9CiAJCQogCQlwdWJsaWMgYm9vbCBJ bml0aWFsaXplZCB7CkBAIC01MjksNyArNTYwLDcgQEAgcHVibGljIHN0YXRpYyBpbnQgTWFpbiAo c3RyaW5nW10gYXJncykKIAkJCQlyZXR1cm4gb3B0aW9ucy5FcnJvciAhPSBudWxsPyAtMSA6IDA7 CiAJCQkKIAkJCUxvZ2dpbmdTZXJ2aWNlLkluaXRpYWxpemUgKG9wdGlvbnMuUmVkaXJlY3RPdXRw dXQpOwotCQkJCisKIAkJCWludCByZXQgPSAtMTsKIAkJCWJvb2wgcmV0cnkgPSBmYWxzZTsKIAkJ CWRvIHsNCg0KTW9kaWZpZWQ6IG1haW4vc3JjL2NvcmUvTW9ub0RldmVsb3AuVGV4dEVkaXRvci5U ZXN0cy9Nb25vLlRleHRFZGl0b3IuVGVzdHMvVGV4dEZpbGVSZWFkZXJUZXN0cy5jcw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KQEAgLTE0Myw2ICsxNDMsMTggQEAgcHVibGljIHZvaWQgVGVzdEdCMTgwMzAgKCkKIAkJ CWJ5dGVbXSBpbnB1dCA9IEVuY29kaW5nLkdldEVuY29kaW5nICg1NDkzNikuR2V0Qnl0ZXMgKHNy Yyk7CiAJCQlBc3NlcnQuQXJlRXF1YWwgKHNyYywgVGV4dEZpbGVVdGlsaXR5LkdldFRleHQgKGlu cHV0KSk7CiAJCX0KKworCQkvLy8gPHN1bW1hcnk+CisJCS8vLyBCdWcgMTYzMzIgLSBEdXBsaWNh dGUgQk9NISAKKwkJLy8vIDwvc3VtbWFyeT4KKwkJW1Rlc3QoKV0KKwkJcHVibGljIHZvaWQgVGVz dEJ1ZzE2MzMyICgpCQorCQl7CisJCQlieXRlW10gaW5wdXQgPSBuZXcgYnl0ZVtdIHsgMHhFRiwg MHhCQiwgMHhCRiwgKGJ5dGUpJ2EnfTsKKwkJCWJvb2wgaGFkQm9tOworCQkJQXNzZXJ0LkFyZUVx dWFsICgiYSIsIFRleHRGaWxlVXRpbGl0eS5HZXRUZXh0IChpbnB1dCwgRW5jb2RpbmcuVVRGOCwg b3V0IGhhZEJvbSkpOworCQkJQXNzZXJ0LklzVHJ1ZSAoaGFkQm9tKTsKKwkJfQogCX0KIH0KIA0K DQpNb2RpZmllZDogbWFpbi90ZXN0cy9Vbml0VGVzdHMvTW9ub0RldmVsb3AuQ1NoYXJwQmluZGlu Zy9PblRoZUZseUZvcm1hdHRlclRlc3RzLmNzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpAQCAtMjczLDYgKzI3Mywy MSBAQCBwdWJsaWMgdm9pZCBUZXN0QnVnMTYxNzRfVmlydHVhbEluZGVudCAoKQogCQkJCUNvbnNv bGUuV3JpdGVMaW5lIChuZXdUZXh0KTsKIAkJCUFzc2VydC5BcmVFcXVhbCAoZXhwZWN0ZWQsIG5l d1RleHQpOwogCQl9CisKKworCQkvLy8gPHN1bW1hcnk+CisJCS8vLyBCdWcgMTYyODMgLSBXcm9u ZyBsaXRlcmFsIHN0cmluZyBhZGRpdGlvbgorCQkvLy8gPC9zdW1tYXJ5PgorCQlbVGVzdF0KKwkJ cHVibGljIHZvaWQgVGVzdEJ1ZzE2MjgzICgpCisJCXsKKwkJCVRlc3RWaWV3Q29udGVudCBjb250 ZW50OworCQkJdmFyIGV4dCA9IFNldHVwICgiJFwiXFxkZXZcXG51bGwgezB9XCIiLCBvdXQgY29u dGVudCk7CisJCQljb250ZW50LkdldFRleHRFZGl0b3JEYXRhICgpLkluc2VydCAoMCwgIkAiKTsK KwkJCWV4dC5LZXlQcmVzcyAoKEdkay5LZXkpJ0AnLCAnQCcsIEdkay5Nb2RpZmllclR5cGUuTm9u ZSk7CisJCQl2YXIgbmV3VGV4dCA9IGNvbnRlbnQuVGV4dDsKKwkJCUFzc2VydC5BcmVFcXVhbCAo IkBcIlxcZGV2XG51bGwgezB9XCIiLCBuZXdUZXh0KTsKKwkJfQogCX0KIH0KIA0KDQpNb2RpZmll ZDogbWFpbi94YnVpbGQuaW5jbHVkZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE0LDcgKzE0LDcgQEAgUFJP RklMRV9OQU1FPURlYnVnV2luMzIKIGVuZGlmCiAKIFhCVUlMRD14YnVpbGQKLVhCVUlMRF9WRVJC T1NJVFk9cXVpZXQKK1hCVUlMRF9WRVJCT1NJVFk9bm9ybWFsCiBYQlVJTERfQVJHUz0vdmVyYm9z aXR5OiQoWEJVSUxEX1ZFUkJPU0lUWSkgL25vbG9nbyAvcHJvcGVydHk6Q29kZVBhZ2U9NjUwMDEK IFhCVUlMRF9QUk9GSUxFPS9wcm9wZXJ0eTpDb25maWd1cmF0aW9uPSQoUFJPRklMRV9OQU1FKQog DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNb25vLXBh dGNoZXMgbWFpbGxpc3QgIC0gIE1vbm8tcGF0Y2hlc0BsaXN0cy54aW1pYW4uY29tCmh0dHA6Ly9s aXN0cy54aW1pYW4uY29tL21haWxtYW4vbGlzdGluZm8vbW9uby1wYXRjaGVzCg==