From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Orphaned Packages Process To: git-commits@fedoraproject.org Subject: [rpms/elementary-mail] rawhide: Orphaned for 6+ weeks Date: Fri, 19 Jun 2026 20:24:21 GMT Message-ID: <178190066192.1.14604097583051234605.rpms-elementary-mail-81574c7cd6da@fedoraproject.org> List-ID: X-Git-Repo: rpms/elementary-mail X-Git-Branch: rawhide X-Git-Rev: 81574c7cd6da439a95d2467cd5cac7895a3cf7d4 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZWxlbWVudGFyeS1t YWlsCkJyYW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogODE1NzRjN2NkNmRhNDM5YTk1ZDI0NjdjZDVj YWM3ODk1YTNjZjdkNApBdXRob3IgOiBPcnBoYW5lZCBQYWNrYWdlcyBQcm9jZXNzIDxwYWNrYWdp bmctcmVwb3J0c0BmZWRvcmFwcm9qZWN0Lm9yZz4KRGF0ZSAgIDogMjAyNi0wNi0xOVQxNToyNDox Ny0wNTowMApTdGF0cyAgOiArMS8tMjU5MiBpbiA1IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9z cmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9lbGVtZW50YXJ5LW1haWwvYy84MTU3NGM3Y2Q2ZGE0 MzlhOTVkMjQ2N2NkNWNhYzc4OTVhM2NmN2Q0P2JyYW5jaD1yYXdoaWRlCgpMb2c6Ck9ycGhhbmVk IGZvciA2KyB3ZWVrcwoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjllNmVhOC4uMDAwMDAwMAotLS0gYS8uZ2l0 aWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0vcmVzdWx0c18qLwotLyouc3Jj LnJwbQotCi0vZWxlbWVudGFyeS1tYWlsLTYuNC4wLnRhci5negotL21haWwtNy4yLjAudGFyLmd6 Ci0vbWFpbC04LjAuMC50YXIuZ3oKCmRpZmYgLS1naXQgYS8wMDAxLWxpYmNhbWVsLTMuNTcuMS5w YXRjaCBiLzAwMDEtbGliY2FtZWwtMy41Ny4xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA1YzVkN2NiLi4wMDAwMDAwCi0tLSBhLzAwMDEtbGliY2FtZWwtMy41Ny4xLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMjQ5MiArMCwwIEBACi1Gcm9tIDhjYjViYjg3Y2VjYTkwMDBj MmE1NTZiYWZlYjA1OWI5ZjFjYmYyZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1TdWJqZWN0 OiBbUEFUQ0hdIEFkYXB0IHRvIGxpYmNhbWVsIEFQSSBjaGFuZ2VzIGluIDMuNTcuMQotCi1UaGUg ZXZvbHV0aW9uLWRhdGEtc2VydmVyIDMuNTcuMSByZWxlYXNlIGNvbnRhaW5zIEFQSSBjaGFuZ2Vz IGluIGxpYmNhbWVsLAotd2hpY2ggYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcmV2aW91cyB2 ZXJzaW9ucy4gQnVtcCB0aGUgbGliY2FtZWwgdmVyc2lvbgotcmVxdWlyZW1lbnQsIHVwZGF0ZSB0 aGUgY2FtZWwtMS4yLnZhcGkgZmlsZSBhbmQgbW9kaWZ5IHRoZSBzb3VyY2VzIGFjY29yZGluZ2x5 LgotLS0tCi0gbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMiArLQotIHNyYy9CYWNrZW5kL01vdmVPcGVyYXRpb24udmFsYSAgICAgICAgICAgICAgICB8 ICAgIDkgKy0KLSAuLi4vQ29udmVyc2F0aW9uSXRlbU1vZGVsLnZhbGEgICAgICAgICAgICAgICAg fCAgIDMwICstCi0gc3JjL0NvbnZlcnNhdGlvbkxpc3QvQ29udmVyc2F0aW9uTGlzdC52YWxhICAg IHwgICA0MiArLQotIHNyYy9NZXNzYWdlTGlzdC9NZXNzYWdlTGlzdC52YWxhICAgICAgICAgICAg ICB8ICAgMjIgKy0KLSB2YXBpL2NhbWVsLTEuMi52YXBpICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxMTI5ICsrKysrKysrKystLS0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA3MzMgaW5zZXJ0 aW9ucygrKSwgNTAxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9t ZXNvbi5idWlsZAotaW5kZXggYTdmZDdlMGRhLi44M2Y2ZDQxYjQgMTAwNjQ0Ci0tLS0gYS9tZXNv bi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xNSw3ICsxNSw3IEBAIGdvYmplY3RfZGVw ID0gZGVwZW5kZW5jeSgnZ29iamVjdC0yLjAnKQotIGdyYW5pdGVfZGVwID0gZGVwZW5kZW5jeSgn Z3Jhbml0ZScsIHZlcnNpb246ICc+PSA2LjAuMCcpCi0gZ2VlX2RlcCA9IGRlcGVuZGVuY3koJ2dl ZS0wLjgnKQotIGhhbmR5X2RlcCA9IGRlcGVuZGVuY3koJ2xpYmhhbmR5LTEnLCB2ZXJzaW9uOiAn Pj0xLjEuOTAnKQotLWNhbWVsX2RlcCA9IGRlcGVuZGVuY3koJ2NhbWVsLTEuMicsIHZlcnNpb246 ICc+PSAzLjI4JykKLStjYW1lbF9kZXAgPSBkZXBlbmRlbmN5KCdjYW1lbC0xLjInLCB2ZXJzaW9u OiAnPj0gMy41Ny4xJykKLSBsaWJlZGF0YXNlcnZlcl9kZXAgPSBkZXBlbmRlbmN5KCdsaWJlZGF0 YXNlcnZlci0xLjInLCB2ZXJzaW9uOiAnPj0gMy4yOCcpCi0gbGliZWRhdGFzZXJ2ZXJ1aV9kZXAg PSBkZXBlbmRlbmN5KCdsaWJlZGF0YXNlcnZlcnVpLTEuMicsIHZlcnNpb246ICc+PSAzLjI4JykK LSBpZiBsaWJlZGF0YXNlcnZlcnVpX2RlcC52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc+PTMu NDUuMScpCi1kaWZmIC0tZ2l0IGEvc3JjL0JhY2tlbmQvTW92ZU9wZXJhdGlvbi52YWxhIGIvc3Jj L0JhY2tlbmQvTW92ZU9wZXJhdGlvbi52YWxhCi1pbmRleCAwMTQ5NDYxYmYuLjk1MWEzY2NkZCAx MDA2NDQKLS0tLSBhL3NyYy9CYWNrZW5kL01vdmVPcGVyYXRpb24udmFsYQotKysrIGIvc3JjL0Jh Y2tlbmQvTW92ZU9wZXJhdGlvbi52YWxhCi1AQCAtMTg5LDEwICsxODksOSBAQCBwdWJsaWMgY2xh c3MgTWFpbC5Nb3ZlT3BlcmF0aW9uIDogT2JqZWN0IHsKLSAgICAgICAgICAgICB2YXIgdmVlX2Zv bGRlciA9IChDYW1lbC5WZWVGb2xkZXIpc3JjX2ZvbGRlcjsKLSAKLSAgICAgICAgICAgICBzdG9y ZSA9IG51bGw7Ci0tICAgICAgICAgICAgdW5vd25lZCBDYW1lbC5Gb2xkZXI/IG9yaWdfZm9sZGVy ID0gbnVsbDsKLSAKLSAgICAgICAgICAgICBmb3JlYWNoICh1bm93bmVkIENhbWVsLk1lc3NhZ2VJ bmZvIG1lc3NhZ2UgaW4gbW92ZWRfbWVzc2FnZXMpIHsKLS0gICAgICAgICAgICAgICAgb3JpZ19m b2xkZXIgPSB2ZWVfZm9sZGVyLmdldF92ZWVfdWlkX2ZvbGRlciAobWVzc2FnZS51aWQpOwotKyAg ICAgICAgICAgICAgICBDYW1lbC5Gb2xkZXI/IG9yaWdfZm9sZGVyID0gdmVlX2ZvbGRlci5kdXBf dmVlX3VpZF9mb2xkZXIgKG1lc3NhZ2UudWlkKTsKLSAgICAgICAgICAgICAgICAgaWYgKG9yaWdf Zm9sZGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChzdG9yZSAhPSBudWxs ICYmIG9yaWdfZm9sZGVyLmdldF9wYXJlbnRfc3RvcmUgKCkgIT0gc3RvcmUpIHsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBEb24ndCBrbm93IHdoaWNoIGFyY2hpdmUgZm9sZGVyIHRvIHVz ZSB3aGVuIG1lc3NhZ2VzIGFyZSBmcm9tCi1AQCAtMjE0LDExICsyMTMsMTEgQEAgcHVibGljIGNs YXNzIE1haWwuTW92ZU9wZXJhdGlvbiA6IE9iamVjdCB7Ci0gICAgIH0KLSAKLSAgICAgcHJpdmF0 ZSBhc3luYyB2b2lkIGNvbGxlY3RfdGhyZWFkX21lc3NhZ2VzIChDYW1lbC5Gb2xkZXJUaHJlYWRO b2RlIHRocmVhZCkgewotLSAgICAgICAgbW92ZWRfbWVzc2FnZXMuYWRkICh0aHJlYWQubWVzc2Fn ZSk7Ci0tICAgICAgICB1bm93bmVkIENhbWVsLkZvbGRlclRocmVhZE5vZGU/IGNoaWxkID0gKENh bWVsLkZvbGRlclRocmVhZE5vZGU/KSB0aHJlYWQuY2hpbGQ7Ci0rICAgICAgICBtb3ZlZF9tZXNz YWdlcy5hZGQgKChDYW1lbC5NZXNzYWdlSW5mbz8pIHRocmVhZC5nZXRfaXRlbSAoKSk7Ci0rICAg ICAgICB1bm93bmVkIENhbWVsLkZvbGRlclRocmVhZE5vZGU/IGNoaWxkID0gKENhbWVsLkZvbGRl clRocmVhZE5vZGU/KSB0aHJlYWQuZ2V0X2NoaWxkICgpOwotICAgICAgICAgd2hpbGUgKGNoaWxk ICE9IG51bGwpIHsKLSAgICAgICAgICAgICB5aWVsZCBjb2xsZWN0X3RocmVhZF9tZXNzYWdlcyAo Y2hpbGQpOwotLSAgICAgICAgICAgIGNoaWxkID0gKENhbWVsLkZvbGRlclRocmVhZE5vZGU/KSBj aGlsZC5uZXh0OwotKyAgICAgICAgICAgIGNoaWxkID0gKENhbWVsLkZvbGRlclRocmVhZE5vZGU/ KSBjaGlsZC5nZXRfbmV4dCAoKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotZGlmZiAtLWdpdCBh L3NyYy9Db252ZXJzYXRpb25MaXN0L0NvbnZlcnNhdGlvbkl0ZW1Nb2RlbC52YWxhIGIvc3JjL0Nv bnZlcnNhdGlvbkxpc3QvQ29udmVyc2F0aW9uSXRlbU1vZGVsLnZhbGEKLWluZGV4IGQyOTliOWNm ZS4uNmJhZGJlZmFlIDEwMDY0NAotLS0tIGEvc3JjL0NvbnZlcnNhdGlvbkxpc3QvQ29udmVyc2F0 aW9uSXRlbU1vZGVsLnZhbGEKLSsrKyBiL3NyYy9Db252ZXJzYXRpb25MaXN0L0NvbnZlcnNhdGlv bkl0ZW1Nb2RlbC52YWxhCi1AQCAtNDYsNyArNDYsNyBAQCBwdWJsaWMgY2xhc3MgTWFpbC5Db252 ZXJzYXRpb25JdGVtTW9kZWwgOiBHTGliLk9iamVjdCB7Ci0gCi0gICAgICAgICAgICAgdW5vd25l ZCBDYW1lbC5Gb2xkZXJUaHJlYWROb2RlPyBjdXJyZW50X25vZGUgPSBub2RlOwotICAgICAgICAg ICAgIHdoaWxlIChjdXJyZW50X25vZGUgIT0gbnVsbCkgewotLSAgICAgICAgICAgICAgICB3ZWFr IENhbWVsLk1lc3NhZ2VJbmZvPyBtZXNzYWdlID0gY3VycmVudF9ub2RlLm1lc3NhZ2U7Ci0rICAg ICAgICAgICAgICAgIHdlYWsgQ2FtZWwuTWVzc2FnZUluZm8/IG1lc3NhZ2UgPSAoQ2FtZWwuTWVz c2FnZUluZm8/KSBjdXJyZW50X25vZGUuZ2V0X2l0ZW0gKCk7Ci0gICAgICAgICAgICAgICAgIGlm IChtZXNzYWdlICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRyZXNzID0g bmV3IENhbWVsLkludGVybmV0QWRkcmVzcyAoKTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChh ZGRyZXNzLmRlY29kZSAobWVzc2FnZS5mcm9tKSA+IDApIHsKLUBAIC02Nyw3ICs2Nyw3IEBAIHB1 YmxpYyBjbGFzcyBNYWlsLkNvbnZlcnNhdGlvbkl0ZW1Nb2RlbCA6IEdMaWIuT2JqZWN0IHsKLSAg ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAg ICAgICBjdXJyZW50X25vZGUgPSAoQ2FtZWwuRm9sZGVyVGhyZWFkTm9kZT8pIGN1cnJlbnRfbm9k ZS5jaGlsZDsKLSsgICAgICAgICAgICAgICAgY3VycmVudF9ub2RlID0gKENhbWVsLkZvbGRlclRo cmVhZE5vZGU/KSBjdXJyZW50X25vZGUuZ2V0X2NoaWxkICgpOwotICAgICAgICAgICAgIH0KLSAK LSAgICAgICAgICAgICBpZiAoc2VuZGVycy5sZW5ndGggPiAwKSB7Ci1AQCAtODQsNyArODQsNyBA QCBwdWJsaWMgY2xhc3MgTWFpbC5Db252ZXJzYXRpb25JdGVtTW9kZWwgOiBHTGliLk9iamVjdCB7 Ci0gCi0gICAgICAgICAgICAgdW5vd25lZCBDYW1lbC5Gb2xkZXJUaHJlYWROb2RlPyBjdXJyZW50 X25vZGUgPSBub2RlOwotICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50X25vZGUgIT0gbnVsbCkg ewotLSAgICAgICAgICAgICAgICB3ZWFrIENhbWVsLk1lc3NhZ2VJbmZvPyBtZXNzYWdlID0gY3Vy cmVudF9ub2RlLm1lc3NhZ2U7Ci0rICAgICAgICAgICAgICAgIHdlYWsgQ2FtZWwuTWVzc2FnZUlu Zm8/IG1lc3NhZ2UgPSAoQ2FtZWwuTWVzc2FnZUluZm8/KSBjdXJyZW50X25vZGUuZ2V0X2l0ZW0g KCk7Ci0gICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IG51bGwpIHsKLSAgICAgICAgICAg ICAgICAgICAgIHZhciBhZGRyZXNzID0gbmV3IENhbWVsLkludGVybmV0QWRkcmVzcyAoKTsKLSAg ICAgICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzLmRlY29kZSAobWVzc2FnZS50bykgPiAwKSB7 Ci1AQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYyBjbGFzcyBNYWlsLkNvbnZlcnNhdGlvbkl0ZW1N b2RlbCA6IEdMaWIuT2JqZWN0IHsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICAgfQotIAotLSAgICAgICAgICAgICAgICBjdXJyZW50X25vZGUgPSAoQ2FtZWwuRm9sZGVy VGhyZWFkTm9kZT8pIGN1cnJlbnRfbm9kZS5jaGlsZDsKLSsgICAgICAgICAgICAgICAgY3VycmVu dF9ub2RlID0gKENhbWVsLkZvbGRlclRocmVhZE5vZGU/KSBjdXJyZW50X25vZGUuZ2V0X2NoaWxk ICgpOwotICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICBpZiAocmVjaXBpZW50cy5sZW5n dGggPiAwKSB7Ci1AQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYyBjbGFzcyBNYWlsLkNvbnZlcnNh dGlvbkl0ZW1Nb2RlbCA6IEdMaWIuT2JqZWN0IHsKLSAKLSAgICAgcHVibGljIHN0cmluZyBzdWJq ZWN0IHsKLSAgICAgICAgIGdldCB7Ci0tICAgICAgICAgICAgd2VhayBDYW1lbC5NZXNzYWdlSW5m bz8gbWVzc2FnZSA9IG5vZGUubWVzc2FnZTsKLSsgICAgICAgICAgICB3ZWFrIENhbWVsLk1lc3Nh Z2VJbmZvPyBtZXNzYWdlID0gKENhbWVsLk1lc3NhZ2VJbmZvPykgbm9kZS5nZXRfaXRlbSAoKTsK LSAgICAgICAgICAgICBpZiAobWVzc2FnZSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgIHJl dHVybiBfKCJVbmtub3duIik7Ci0gICAgICAgICAgICAgfQotQEAgLTEyOSw3ICsxMjksNyBAQCBw dWJsaWMgY2xhc3MgTWFpbC5Db252ZXJzYXRpb25JdGVtTW9kZWwgOiBHTGliLk9iamVjdCB7Ci0g Ci0gICAgIHB1YmxpYyBib29sIGZsYWdnZWQgewotICAgICAgICAgZ2V0IHsKLS0gICAgICAgICAg ICB3ZWFrIENhbWVsLk1lc3NhZ2VJbmZvPyBtZXNzYWdlID0gbm9kZS5tZXNzYWdlOwotKyAgICAg ICAgICAgIHdlYWsgQ2FtZWwuTWVzc2FnZUluZm8/IG1lc3NhZ2UgPSAoQ2FtZWwuTWVzc2FnZUlu Zm8/KSBub2RlLmdldF9pdGVtICgpOwotICAgICAgICAgICAgIGlmIChtZXNzYWdlID09IG51bGwp IHsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgIH0KLUBAIC0x NDAsNyArMTQwLDcgQEAgcHVibGljIGNsYXNzIE1haWwuQ29udmVyc2F0aW9uSXRlbU1vZGVsIDog R0xpYi5PYmplY3QgewotIAotICAgICBwdWJsaWMgYm9vbCBmb3J3YXJkZWQgewotICAgICAgICAg Z2V0IHsKLS0gICAgICAgICAgICB3ZWFrIENhbWVsLk1lc3NhZ2VJbmZvPyBtZXNzYWdlID0gbm9k ZS5tZXNzYWdlOwotKyAgICAgICAgICAgIHdlYWsgQ2FtZWwuTWVzc2FnZUluZm8/IG1lc3NhZ2Ug PSAoQ2FtZWwuTWVzc2FnZUluZm8/KSBub2RlLmdldF9pdGVtICgpOwotICAgICAgICAgICAgIGlm IChtZXNzYWdlID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICAgICAgIH0KLUBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljIGNsYXNzIE1haWwuQ29udmVy c2F0aW9uSXRlbU1vZGVsIDogR0xpYi5PYmplY3QgewotIAotICAgICBwdWJsaWMgYm9vbCByZXBs aWVkIHsKLSAgICAgICAgIGdldCB7Ci0tICAgICAgICAgICAgd2VhayBDYW1lbC5NZXNzYWdlSW5m bz8gbWVzc2FnZSA9IG5vZGUubWVzc2FnZTsKLSsgICAgICAgICAgICB3ZWFrIENhbWVsLk1lc3Nh Z2VJbmZvPyBtZXNzYWdlID0gKENhbWVsLk1lc3NhZ2VJbmZvPykgbm9kZS5nZXRfaXRlbSAoKTsK LSAgICAgICAgICAgICBpZiAobWVzc2FnZSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgICAgICAgICB9Ci1AQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYyBj bGFzcyBNYWlsLkNvbnZlcnNhdGlvbkl0ZW1Nb2RlbCA6IEdMaWIuT2JqZWN0IHsKLSAKLSAgICAg cHVibGljIGJvb2wgcmVwbGllZF9hbGwgewotICAgICAgICAgZ2V0IHsKLS0gICAgICAgICAgICB3 ZWFrIENhbWVsLk1lc3NhZ2VJbmZvPyBtZXNzYWdlID0gbm9kZS5tZXNzYWdlOwotKyAgICAgICAg ICAgIHdlYWsgQ2FtZWwuTWVzc2FnZUluZm8/IG1lc3NhZ2UgPSAoQ2FtZWwuTWVzc2FnZUluZm8/ KSBub2RlLmdldF9pdGVtICgpOwotICAgICAgICAgICAgIGlmIChtZXNzYWdlID09IG51bGwpIHsK LSAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgIH0KLUBAIC0xNzks NyArMTc5LDcgQEAgcHVibGljIGNsYXNzIE1haWwuQ29udmVyc2F0aW9uSXRlbU1vZGVsIDogR0xp Yi5PYmplY3QgewotIAotICAgICBwdWJsaWMgYm9vbCBkZWxldGVkIHsKLSAgICAgICAgIGdldCB7 Ci0tICAgICAgICAgICAgd2VhayBDYW1lbC5NZXNzYWdlSW5mbz8gbWVzc2FnZSA9IG5vZGUubWVz c2FnZTsKLSsgICAgICAgICAgICB3ZWFrIENhbWVsLk1lc3NhZ2VJbmZvPyBtZXNzYWdlID0gKENh bWVsLk1lc3NhZ2VJbmZvPykgbm9kZS5nZXRfaXRlbSAoKTsKLSAgICAgICAgICAgICBpZiAobWVz c2FnZSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg ICAgICB9Ci1AQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYyBjbGFzcyBNYWlsLkNvbnZlcnNhdGlv bkl0ZW1Nb2RlbCA6IEdMaWIuT2JqZWN0IHsKLSAKLSAgICAgcHJpdmF0ZSBzdGF0aWMgdWludCBj b3VudF90aHJlYWRfbWVzc2FnZXMgKENhbWVsLkZvbGRlclRocmVhZE5vZGUgbm9kZSkgewotICAg ICAgICAgdWludCBpID0gMTsKLS0gICAgICAgIGZvciAodW5vd25lZCBDYW1lbC5Gb2xkZXJUaHJl YWROb2RlPyBjaGlsZCA9IG5vZGUuY2hpbGQ7IGNoaWxkICE9IG51bGw7IGNoaWxkID0gY2hpbGQu bmV4dCkgewotKyAgICAgICAgZm9yICh1bm93bmVkIENhbWVsLkZvbGRlclRocmVhZE5vZGU/IGNo aWxkID0gbm9kZS5nZXRfY2hpbGQgKCk7IGNoaWxkICE9IG51bGw7IGNoaWxkID0gY2hpbGQuZ2V0 X25leHQgKCkpIHsKLSAgICAgICAgICAgICBpICs9IGNvdW50X3RocmVhZF9tZXNzYWdlcyAoY2hp bGQpOwotICAgICAgICAgfQotIAotQEAgLTIxNywxMyArMjE3LDEzIEBAIHB1YmxpYyBjbGFzcyBN YWlsLkNvbnZlcnNhdGlvbkl0ZW1Nb2RlbCA6IEdMaWIuT2JqZWN0IHsKLSAgICAgICAgICAgICBy ZXR1cm4gdGltZTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIHdlYWsgQ2FtZWwuTWVzc2FnZUlu Zm8/IG1lc3NhZ2UgPSBub2RlLm1lc3NhZ2U7Ci0rICAgICAgICB3ZWFrIENhbWVsLk1lc3NhZ2VJ bmZvPyBtZXNzYWdlID0gKENhbWVsLk1lc3NhZ2VJbmZvPykgbm9kZS5nZXRfaXRlbSAoKTsKLSAg ICAgICAgIGlmIChtZXNzYWdlICE9IG51bGwpIHsKLSAgICAgICAgICAgICB0aW1lID0gaW50NjQu bWF4ICh0aW1lLCBtZXNzYWdlLmRhdGVfcmVjZWl2ZWQpOwotICAgICAgICAgICAgIHRpbWUgPSBp bnQ2NC5tYXggKHRpbWUsIG1lc3NhZ2UuZGF0ZV9zZW50KTsKLSAgICAgICAgIH0KLSAKLS0gICAg ICAgIGZvciAodW5vd25lZCBDYW1lbC5Gb2xkZXJUaHJlYWROb2RlPyBjaGlsZCA9IG5vZGUuY2hp bGQ7IGNoaWxkICE9IG51bGw7IGNoaWxkID0gY2hpbGQubmV4dCkgewotKyAgICAgICAgZm9yICh1 bm93bmVkIENhbWVsLkZvbGRlclRocmVhZE5vZGU/IGNoaWxkID0gbm9kZS5nZXRfY2hpbGQgKCk7 IGNoaWxkICE9IG51bGw7IGNoaWxkID0gY2hpbGQuZ2V0X25leHQgKCkpIHsKLSAgICAgICAgICAg ICB0aW1lID0gZ2V0X25ld2VzdF90aW1lc3RhbXAgKGNoaWxkLCB0aW1lKTsKLSAgICAgICAgIH0K LSAKLUBAIC0yMzUsMTAgKzIzNSwxMCBAQCBwdWJsaWMgY2xhc3MgTWFpbC5Db252ZXJzYXRpb25J dGVtTW9kZWwgOiBHTGliLk9iamVjdCB7Ci0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICAgfQotIAotLSAgICAgICAgdmFyIGhhc19mbGFnID0gIShmbGFnIGluIChpbnQpbm9kZS5t ZXNzYWdlLmZsYWdzKTsKLSsgICAgICAgIHZhciBoYXNfZmxhZyA9ICEoZmxhZyBpbiAoaW50KSgo Q2FtZWwuTWVzc2FnZUluZm8/KSBub2RlLmdldF9pdGVtICgpKS5mbGFncyk7Ci0gCi0gICAgICAg ICBpZiAoIWhhc19mbGFnKSB7Ci0tICAgICAgICAgICAgZm9yICh1bm93bmVkIENhbWVsLkZvbGRl clRocmVhZE5vZGU/IGNoaWxkID0gbm9kZS5jaGlsZDsgY2hpbGQgIT0gbnVsbDsgY2hpbGQgPSBj aGlsZC5uZXh0KSB7Ci0rICAgICAgICAgICAgZm9yICh1bm93bmVkIENhbWVsLkZvbGRlclRocmVh ZE5vZGU/IGNoaWxkID0gbm9kZS5nZXRfY2hpbGQgKCk7IGNoaWxkICE9IG51bGw7IGNoaWxkID0g Y2hpbGQuZ2V0X25leHQgKCkpIHsKLSAgICAgICAgICAgICAgICAgaGFzX2ZsYWcgPSBoYXNfdGhy ZWFkX2ZsYWcgKGNoaWxkLCBmbGFnKTsKLSAgICAgICAgICAgICAgICAgaWYgKGhhc19mbGFnKSB7 Ci0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9zcmMvQ29udmVyc2F0 aW9uTGlzdC9Db252ZXJzYXRpb25MaXN0LnZhbGEgYi9zcmMvQ29udmVyc2F0aW9uTGlzdC9Db252 ZXJzYXRpb25MaXN0LnZhbGEKLWluZGV4IDJjMzE1OWRiNy4uYWY1ZDc2NGZiIDEwMDY0NAotLS0t IGEvc3JjL0NvbnZlcnNhdGlvbkxpc3QvQ29udmVyc2F0aW9uTGlzdC52YWxhCi0rKysgYi9zcmMv Q29udmVyc2F0aW9uTGlzdC9Db252ZXJzYXRpb25MaXN0LnZhbGEKLUBAIC0yMTMsMTEgKzIxMywx MSBAQCBwdWJsaWMgY2xhc3MgTWFpbC5Db252ZXJzYXRpb25MaXN0IDogR3RrLkJveCB7Ci0gICAg ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotIAotLSAgICAgICAgaWYgKCEoZmxhZyBpbiAo aW50KW5vZGUubWVzc2FnZS5mbGFncykpIHsKLS0gICAgICAgICAgICBub2RlLm1lc3NhZ2Uuc2V0 X2ZsYWdzIChmbGFnLCB+MCk7Ci0rICAgICAgICBpZiAoIShmbGFnIGluIChpbnQpKChDYW1lbC5N ZXNzYWdlSW5mbz8pIG5vZGUuZ2V0X2l0ZW0gKCkpLmZsYWdzKSkgewotKyAgICAgICAgICAgICgo Q2FtZWwuTWVzc2FnZUluZm8/KSBub2RlLmdldF9pdGVtICgpKS5zZXRfZmxhZ3MgKGZsYWcsIH4w KTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGZvciAodW5vd25lZCBDYW1lbC5Gb2xkZXJUaHJl YWROb2RlPyBjaGlsZCA9IG5vZGUuY2hpbGQ7IGNoaWxkICE9IG51bGw7IGNoaWxkID0gY2hpbGQu bmV4dCkgewotKyAgICAgICAgZm9yICh1bm93bmVkIENhbWVsLkZvbGRlclRocmVhZE5vZGU/IGNo aWxkID0gbm9kZS5nZXRfY2hpbGQgKCk7IGNoaWxkICE9IG51bGw7IGNoaWxkID0gY2hpbGQuZ2V0 X25leHQgKCkpIHsKLSAgICAgICAgICAgICBzZXRfdGhyZWFkX2ZsYWcgKGNoaWxkLCBmbGFnKTsK LSAgICAgICAgIH0KLSAgICAgfQotQEAgLTI2OSwxNyArMjY5LDE3IEBAIHB1YmxpYyBjbGFzcyBN YWlsLkNvbnZlcnNhdGlvbkxpc3QgOiBHdGsuQm94IHsKLSAKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhciBzZWFyY2hfcmVzdWx0X3VpZHMgPSBnZXRfc2VhcmNoX3Jlc3VsdF91 aWRzIChjdXJyZW50X2FjY291bnQuc2VydmljZS51aWQpOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKHNlYXJjaF9yZXN1bHRfdWlkcyAhPSBudWxsKSB7Ci0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRocmVhZCA9IG5ldyBDYW1lbC5Gb2xkZXJU aHJlYWQgKGZvbGRlciwgc2VhcmNoX3Jlc3VsdF91aWRzLCBmYWxzZSk7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRocmVhZCA9IG5ldyBDYW1lbC5Gb2xkZXJUaHJl YWQgKGZvbGRlciwgKEdMaWIuR2VuZXJpY0FycmF5PHN0cmluZz4/KSBzZWFyY2hfcmVzdWx0X3Vp ZHMsIENhbWVsLkZvbGRlclRocmVhZEZsYWdzLk5PTkUpOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRocmVhZHNbY3VycmVudF9hY2NvdW50LnNlcnZpY2UudWlkXSA9IHRo cmVhZDsKLSAKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrIENhbWVs LkZvbGRlclRocmVhZE5vZGU/IGNoaWxkID0gdGhyZWFkLnRyZWU7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgd2VhayBDYW1lbC5Gb2xkZXJUaHJlYWROb2RlPyBjaGlsZCA9 IHRocmVhZC5nZXRfdHJlZSAoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aGlsZSAoY2hpbGQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoY2FuY2VsbGFibGUuaXNfY2FuY2VsbGVkICgpKSB7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhZGRfY29udmVyc2F0aW9uX2l0ZW0gKGZvbGRlcl9pbmZvX2ZsYWdz W2N1cnJlbnRfYWNjb3VudC5zZXJ2aWNlLnVpZF0sIGNoaWxkLCB0aHJlYWQsIGN1cnJlbnRfYWNj b3VudC5zZXJ2aWNlLnVpZCk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNoaWxkID0gY2hpbGQubmV4dDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hpbGQgPSBjaGlsZC5nZXRfbmV4dCAoKTsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEVycm9yIGUpIHsKLUBAIC0zMjYs NyArMzI2LDcgQEAgcHVibGljIGNsYXNzIE1haWwuQ29udmVyc2F0aW9uTGlzdCA6IEd0ay5Cb3gg ewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICB9Ci0gCi0t ICAgICAgICAgICAgICAgIHRocmVhZHNbc2VydmljZV91aWRdID0gbmV3IENhbWVsLkZvbGRlclRo cmVhZCAoZm9sZGVyc1tzZXJ2aWNlX3VpZF0sIHNlYXJjaF9yZXN1bHRfdWlkcywgZmFsc2UpOwot KyAgICAgICAgICAgICAgICB0aHJlYWRzW3NlcnZpY2VfdWlkXSA9IG5ldyBDYW1lbC5Gb2xkZXJU aHJlYWQgKGZvbGRlcnNbc2VydmljZV91aWRdLCAoR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPj8p IHNlYXJjaF9yZXN1bHRfdWlkcywgQ2FtZWwuRm9sZGVyVGhyZWFkRmxhZ3MuTk9ORSk7Ci0gCi0g ICAgICAgICAgICAgICAgIHZhciByZW1vdmVkID0gMDsKLSAgICAgICAgICAgICAgICAgY2hhbmdl X2luZm8uZ2V0X3JlbW92ZWRfdWlkcyAoKS5mb3JlYWNoICgodWlkKSA9PiB7Ci1AQCAtMzM4LDI1 ICszMzgsMjUgQEAgcHVibGljIGNsYXNzIE1haWwuQ29udmVyc2F0aW9uTGlzdCA6IEd0ay5Cb3gg ewotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9KTsKLSAKLS0gICAg ICAgICAgICAgICAgdW5vd25lZCBDYW1lbC5Gb2xkZXJUaHJlYWROb2RlPyBjaGlsZCA9IHRocmVh ZHNbc2VydmljZV91aWRdLnRyZWU7Ci0rICAgICAgICAgICAgICAgIHVub3duZWQgQ2FtZWwuRm9s ZGVyVGhyZWFkTm9kZT8gY2hpbGQgPSB0aHJlYWRzW3NlcnZpY2VfdWlkXS5nZXRfdHJlZSAoKTsK LSAgICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAg ICAgICAgIGlmIChjYW5jZWxsYWJsZS5pc19jYW5jZWxsZWQgKCkpIHsKLSAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gCi0tICAgICAgICAg ICAgICAgICAgICB2YXIgaXRlbSA9IGNvbnZlcnNhdGlvbnNbY2hpbGQubWVzc2FnZS51aWRdOwot KyAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBjb252ZXJzYXRpb25zWygoQ2FtZWwuTWVz c2FnZUluZm8/KSBjaGlsZC5nZXRfaXRlbSAoKSkudWlkXTsKLSAgICAgICAgICAgICAgICAgICAg IGlmIChpdGVtID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfY29udmVy c2F0aW9uX2l0ZW0gKGZvbGRlcl9pbmZvX2ZsYWdzW3NlcnZpY2VfdWlkXSwgY2hpbGQsIHRocmVh ZHNbc2VydmljZV91aWRdLCBzZXJ2aWNlX3VpZCk7Ci0gICAgICAgICAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzX29sZGVyX3RoYW4gKGNo aWxkKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJzYXRpb25zLnVuc2V0 IChjaGlsZC5tZXNzYWdlLnVpZCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZl cnNhdGlvbnMudW5zZXQgKCgoQ2FtZWwuTWVzc2FnZUluZm8/KSBjaGlsZC5nZXRfaXRlbSAoKSku dWlkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9zdG9yZS5yZW1vdmUgKGl0 ZW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkKys7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFkZF9jb252ZXJzYXRpb25faXRlbSAoZm9sZGVyX2luZm9fZmxh Z3Nbc2VydmljZV91aWRdLCBjaGlsZCwgdGhyZWFkc1tzZXJ2aWNlX3VpZF0sIHNlcnZpY2VfdWlk KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgfQot IAotLSAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0OwotKyAgICAgICAgICAg ICAgICAgICAgY2hpbGQgPSBjaGlsZC5nZXRfbmV4dCAoKTsKLSAgICAgICAgICAgICAgICAgfQot IAotICAgICAgICAgICAgICAgICBsaXN0X3N0b3JlLml0ZW1zX2NoYW5nZWQgKDAsIHJlbW92ZWQs IGxpc3Rfc3RvcmUuZ2V0X25faXRlbXMgKCkpOwotQEAgLTM2NCw3ICszNjQsNyBAQCBwdWJsaWMg Y2xhc3MgTWFpbC5Db252ZXJzYXRpb25MaXN0IDogR3RrLkJveCB7Ci0gICAgICAgICB9Ci0gICAg IH0KLSAKLS0gICAgcHJpdmF0ZSBHZW5lcmljQXJyYXk8c3RyaW5nPj8gZ2V0X3NlYXJjaF9yZXN1 bHRfdWlkcyAoc3RyaW5nIHNlcnZpY2VfdWlkKSB7Ci0rICAgIHByaXZhdGUgR2VuZXJpY0FycmF5 PHdlYWsgc3RyaW5nPj8gZ2V0X3NlYXJjaF9yZXN1bHRfdWlkcyAoc3RyaW5nIHNlcnZpY2VfdWlk KSB7Ci0gICAgICAgICB2YXIgc3R5bGVfY29udGV4dCA9IGZpbHRlcl9idXR0b24uZ2V0X3N0eWxl X2NvbnRleHQgKCk7Ci0gICAgICAgICBpZiAoaGlkZV9yZWFkX3N3aXRjaC5hY3RpdmUgfHwgaGlk ZV91bnN0YXJyZWRfc3dpdGNoLmFjdGl2ZSkgewotICAgICAgICAgICAgIGlmICghc3R5bGVfY29u dGV4dC5oYXNfY2xhc3MgKEdyYW5pdGUuU1RZTEVfQ0xBU1NfQUNDRU5UKSkgewotQEAgLTM4MSw3 ICszODEsNyBAQCBwdWJsaWMgY2xhc3MgTWFpbC5Db252ZXJzYXRpb25MaXN0IDogR3RrLkJveCB7 Ci0gCi0gICAgICAgICAgICAgdmFyIGhhc19jdXJyZW50X3NlYXJjaF9xdWVyeSA9IHNlYXJjaF9l bnRyeS50ZXh0LnN0cmlwICgpICE9ICIiOwotICAgICAgICAgICAgIGlmICghaGFzX2N1cnJlbnRf c2VhcmNoX3F1ZXJ5ICYmICFoaWRlX3JlYWRfc3dpdGNoLmFjdGl2ZSAmJiAhaGlkZV91bnN0YXJy ZWRfc3dpdGNoLmFjdGl2ZSkgewotLSAgICAgICAgICAgICAgICByZXR1cm4gZm9sZGVyc1tzZXJ2 aWNlX3VpZF0uZ2V0X3VpZHMgKCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmb2xkZXJzW3Nl cnZpY2VfdWlkXS5kdXBfdWlkcyAoKTsKLSAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAg c3RyaW5nW10gY3VycmVudF9zZWFyY2hfZXhwcmVzc2lvbnMgPSB7fTsKLUBAIC00MDYsMjAgKzQw NiwyMiBAQCBwdWJsaWMgY2xhc3MgTWFpbC5Db252ZXJzYXRpb25MaXN0IDogR3RrLkJveCB7Ci0g ICAgICAgICAgICAgc3RyaW5nIHNlYXJjaF9xdWVyeSA9ICIobWF0Y2gtYWxsIChhbmQgIiArIHN0 cmluZy5qb2ludiAoIiIsIGN1cnJlbnRfc2VhcmNoX2V4cHJlc3Npb25zKSArICIpKSI7Ci0gCi0g ICAgICAgICAgICAgdHJ5IHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIGZvbGRlcnNbc2Vydmlj ZV91aWRdLnNlYXJjaF9ieV9leHByZXNzaW9uIChzZWFyY2hfcXVlcnksIGNhbmNlbGxhYmxlKTsK LSsgICAgICAgICAgICAgICAgR2VuZXJpY0FycmF5PHdlYWsgc3RyaW5nPj8gdWlkcyA9IG51bGw7 Ci0rICAgICAgICAgICAgICAgIGZvbGRlcnNbc2VydmljZV91aWRdLnNlYXJjaF9zeW5jIChzZWFy Y2hfcXVlcnksIG91dCB1aWRzLCBjYW5jZWxsYWJsZSk7Ci0rICAgICAgICAgICAgICAgIHJldHVy biB1aWRzOwotICAgICAgICAgICAgIH0gY2F0Y2ggKEVycm9yIGUpIHsKLSAgICAgICAgICAgICAg ICAgaWYgKCEoZSBpcyBHTGliLklPRXJyb3IuQ0FOQ0VMTEVEKSkgewotICAgICAgICAgICAgICAg ICAgICAgd2FybmluZyAoIkVycm9yIHdoaWxlIHNlYXJjaGluZzogJXMiLCBlLm1lc3NhZ2UpOwot ICAgICAgICAgICAgICAgICB9Ci0gCi0tICAgICAgICAgICAgICAgIHJldHVybiBmb2xkZXJzW3Nl cnZpY2VfdWlkXS5nZXRfdWlkcyAoKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZvbGRlcnNb c2VydmljZV91aWRdLmR1cF91aWRzICgpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAg ICAgfQotIAotICAgICBwcml2YXRlIHZvaWQgYWRkX2NvbnZlcnNhdGlvbl9pdGVtIChDYW1lbC5G b2xkZXJJbmZvRmxhZ3MgZm9sZGVyX2luZm9fZmxhZ3MsIENhbWVsLkZvbGRlclRocmVhZE5vZGUg Y2hpbGQsIENhbWVsLkZvbGRlclRocmVhZCB0aHJlYWQsIHN0cmluZyBzZXJ2aWNlX3VpZCkgewot ICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgQ29udmVyc2F0aW9uSXRlbU1vZGVsIChmb2xkZXJfaW5m b19mbGFncywgY2hpbGQsIHRocmVhZCwgc2VydmljZV91aWQpOwotLSAgICAgICAgY29udmVyc2F0 aW9uc1tjaGlsZC5tZXNzYWdlLnVpZF0gPSBpdGVtOwotKyAgICAgICAgY29udmVyc2F0aW9uc1so KENhbWVsLk1lc3NhZ2VJbmZvPykgY2hpbGQuZ2V0X2l0ZW0gKCkpLnVpZF0gPSBpdGVtOwotICAg ICAgICAgbGlzdF9zdG9yZS5hZGQgKGl0ZW0pOwotICAgICB9Ci0gCi1AQCAtNDM5LDI4ICs0NDEs MjggQEAgcHVibGljIGNsYXNzIE1haWwuQ29udmVyc2F0aW9uTGlzdCA6IEd0ay5Cb3ggewotICAg ICBwdWJsaWMgdm9pZCBtYXJrX3JlYWRfc2VsZWN0ZWRfbWVzc2FnZXMgKCkgewotICAgICAgICAg dmFyIHNlbGVjdGVkX3Jvd3MgPSBsaXN0X2JveC5nZXRfc2VsZWN0ZWRfcm93cyAoKTsKLSAgICAg ICAgIGZvcmVhY2ggKHZhciByb3cgaW4gc2VsZWN0ZWRfcm93cykgewotLSAgICAgICAgICAgICgo KENvbnZlcnNhdGlvbkl0ZW1Nb2RlbClyb3cpLm5vZGUpLm1lc3NhZ2Uuc2V0X2ZsYWdzIChDYW1l bC5NZXNzYWdlRmxhZ3MuU0VFTiwgfjApOwotKyAgICAgICAgICAgICgoQ2FtZWwuTWVzc2FnZUlu Zm8/KSAoKChDb252ZXJzYXRpb25JdGVtTW9kZWwpcm93KS5ub2RlKS5nZXRfaXRlbSAoKSkuc2V0 X2ZsYWdzIChDYW1lbC5NZXNzYWdlRmxhZ3MuU0VFTiwgfjApOwotICAgICAgICAgfQotICAgICB9 Ci0gCi0gICAgIHB1YmxpYyB2b2lkIG1hcmtfc3Rhcl9zZWxlY3RlZF9tZXNzYWdlcyAoKSB7Ci0g ICAgICAgICB2YXIgc2VsZWN0ZWRfcm93cyA9IGxpc3RfYm94LmdldF9zZWxlY3RlZF9yb3dzICgp OwotICAgICAgICAgZm9yZWFjaCAodmFyIHJvdyBpbiBzZWxlY3RlZF9yb3dzKSB7Ci0tICAgICAg ICAgICAgKCgoQ29udmVyc2F0aW9uSXRlbU1vZGVsKXJvdykubm9kZSkubWVzc2FnZS5zZXRfZmxh Z3MgKENhbWVsLk1lc3NhZ2VGbGFncy5GTEFHR0VELCB+MCk7Ci0rICAgICAgICAgICAgKChDYW1l bC5NZXNzYWdlSW5mbz8pICgoKENvbnZlcnNhdGlvbkl0ZW1Nb2RlbClyb3cpLm5vZGUpLmdldF9p dGVtICgpKS5zZXRfZmxhZ3MgKENhbWVsLk1lc3NhZ2VGbGFncy5GTEFHR0VELCB+MCk7Ci0gICAg ICAgICB9Ci0gICAgIH0KLSAKLSAgICAgcHVibGljIHZvaWQgbWFya191bnJlYWRfc2VsZWN0ZWRf bWVzc2FnZXMgKCkgewotICAgICAgICAgdmFyIHNlbGVjdGVkX3Jvd3MgPSBsaXN0X2JveC5nZXRf c2VsZWN0ZWRfcm93cyAoKTsKLSAgICAgICAgIGZvcmVhY2ggKHZhciByb3cgaW4gc2VsZWN0ZWRf cm93cykgewotLSAgICAgICAgICAgICgoKENvbnZlcnNhdGlvbkl0ZW1Nb2RlbClyb3cpLm5vZGUp Lm1lc3NhZ2Uuc2V0X2ZsYWdzIChDYW1lbC5NZXNzYWdlRmxhZ3MuU0VFTiwgMCk7Ci0rICAgICAg ICAgICAgKChDYW1lbC5NZXNzYWdlSW5mbz8pICgoKENvbnZlcnNhdGlvbkl0ZW1Nb2RlbClyb3cp Lm5vZGUpLmdldF9pdGVtICgpKS5zZXRfZmxhZ3MgKENhbWVsLk1lc3NhZ2VGbGFncy5TRUVOLCAw KTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotICAgICBwdWJsaWMgdm9pZCBtYXJrX3Vuc3Rhcl9z ZWxlY3RlZF9tZXNzYWdlcyAoKSB7Ci0gICAgICAgICB2YXIgc2VsZWN0ZWRfcm93cyA9IGxpc3Rf Ym94LmdldF9zZWxlY3RlZF9yb3dzICgpOwotICAgICAgICAgZm9yZWFjaCAodmFyIHJvdyBpbiBz ZWxlY3RlZF9yb3dzKSB7Ci0tICAgICAgICAgICAgKCgoQ29udmVyc2F0aW9uSXRlbU1vZGVsKXJv dykubm9kZSkubWVzc2FnZS5zZXRfZmxhZ3MgKENhbWVsLk1lc3NhZ2VGbGFncy5GTEFHR0VELCAw KTsKLSsgICAgICAgICAgICAoKENhbWVsLk1lc3NhZ2VJbmZvPykgKCgoQ29udmVyc2F0aW9uSXRl bU1vZGVsKXJvdykubm9kZSkuZ2V0X2l0ZW0gKCkpLnNldF9mbGFncyAoQ2FtZWwuTWVzc2FnZUZs YWdzLkZMQUdHRUQsIDApOwotICAgICAgICAgfQotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3Jj L01lc3NhZ2VMaXN0L01lc3NhZ2VMaXN0LnZhbGEgYi9zcmMvTWVzc2FnZUxpc3QvTWVzc2FnZUxp c3QudmFsYQotaW5kZXggZTBmYTk2ZDAyLi5lZDQ5M2IzY2MgMTAwNjQ0Ci0tLS0gYS9zcmMvTWVz c2FnZUxpc3QvTWVzc2FnZUxpc3QudmFsYQotKysrIGIvc3JjL01lc3NhZ2VMaXN0L01lc3NhZ2VM aXN0LnZhbGEKLUBAIC0xNzksMTQgKzE3OSwxNCBAQCBwdWJsaWMgY2xhc3MgTWFpbC5NZXNzYWdl TGlzdCA6IEd0ay5Cb3ggewotICAgICAgICAgICovCi0gICAgICAgICBjYW5fbW92ZV90aHJlYWQg KHRydWUpOwotIAotLSAgICAgICAgdmFyIHN0b3JlID0gbm9kZS5tZXNzYWdlLnN1bW1hcnkuZm9s ZGVyLnBhcmVudF9zdG9yZTsKLSsgICAgICAgIHZhciBzdG9yZSA9ICgoQ2FtZWwuTWVzc2FnZUlu Zm8/KSBub2RlLmdldF9pdGVtICgpKS5zdW1tYXJ5LmZvbGRlci5wYXJlbnRfc3RvcmU7Ci0gICAg ICAgICBmb2xkZXJfcG9wb3Zlci5zZXRfc3RvcmUgKHN0b3JlKTsKLSAKLS0gICAgICAgIHZhciBp dGVtID0gbmV3IE1lc3NhZ2VMaXN0SXRlbSAobm9kZS5tZXNzYWdlKTsKLSsgICAgICAgIHZhciBp dGVtID0gbmV3IE1lc3NhZ2VMaXN0SXRlbSAoKENhbWVsLk1lc3NhZ2VJbmZvPykgbm9kZS5nZXRf aXRlbSAoKSk7Ci0gICAgICAgICBsaXN0X2JveC5hZGQgKGl0ZW0pOwotLSAgICAgICAgbWVzc2Fn ZXMuc2V0IChub2RlLm1lc3NhZ2UudWlkLCBpdGVtKTsKLS0gICAgICAgIGlmIChub2RlLmNoaWxk ICE9IG51bGwpIHsKLS0gICAgICAgICAgICBnb19kb3duICgoQ2FtZWwuRm9sZGVyVGhyZWFkTm9k ZT8pIG5vZGUuY2hpbGQpOwotKyAgICAgICAgbWVzc2FnZXMuc2V0ICgoKENhbWVsLk1lc3NhZ2VJ bmZvPykgbm9kZS5nZXRfaXRlbSAoKSkudWlkLCBpdGVtKTsKLSsgICAgICAgIGlmIChub2RlLmdl dF9jaGlsZCAoKSAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgZ29fZG93biAoKENhbWVsLkZvbGRl clRocmVhZE5vZGU/KSBub2RlLmdldF9jaGlsZCAoKSk7Ci0gICAgICAgICB9Ci0gCi0gICAgICAg ICB2YXIgY2hpbGRyZW4gPSBsaXN0X2JveC5nZXRfY2hpbGRyZW4gKCk7Ci1AQCAtMjAzLDcgKzIw Myw3IEBAIHB1YmxpYyBjbGFzcyBNYWlsLk1lc3NhZ2VMaXN0IDogR3RrLkJveCB7Ci0gICAgICAg ICAgICAgfQotICAgICAgICAgfQotIAotLSAgICAgICAgaWYgKG5vZGUubWVzc2FnZSAhPSBudWxs ICYmIENhbWVsLk1lc3NhZ2VGbGFncy5EUkFGVCBpbiAoaW50KSBub2RlLm1lc3NhZ2UuZmxhZ3Mp IHsKLSsgICAgICAgIGlmIChub2RlLmdldF9pdGVtICgpICE9IG51bGwgJiYgQ2FtZWwuTWVzc2Fn ZUZsYWdzLkRSQUZUIGluIChpbnQpICgoQ2FtZWwuTWVzc2FnZUluZm8/KSBub2RlLmdldF9pdGVt ICgpKS5mbGFncykgewotICAgICAgICAgICAgIGNvbXBvc2UuYmVnaW4gKENvbXBvc2VyLlR5cGUu RFJBRlQsICIiKTsKLSAgICAgICAgIH0KLSAgICAgfQotQEAgLTIxMSwxNCArMjExLDE0IEBAIHB1 YmxpYyBjbGFzcyBNYWlsLk1lc3NhZ2VMaXN0IDogR3RrLkJveCB7Ci0gICAgIHByaXZhdGUgdm9p ZCBnb19kb3duIChDYW1lbC5Gb2xkZXJUaHJlYWROb2RlIG5vZGUpIHsKLSAgICAgICAgIHVub3du ZWQgQ2FtZWwuRm9sZGVyVGhyZWFkTm9kZT8gY3VycmVudF9ub2RlID0gbm9kZTsKLSAgICAgICAg IHdoaWxlIChjdXJyZW50X25vZGUgIT0gbnVsbCkgewotLSAgICAgICAgICAgIHZhciBpdGVtID0g bmV3IE1lc3NhZ2VMaXN0SXRlbSAoY3VycmVudF9ub2RlLm1lc3NhZ2UpOwotKyAgICAgICAgICAg IHZhciBpdGVtID0gbmV3IE1lc3NhZ2VMaXN0SXRlbSAoKENhbWVsLk1lc3NhZ2VJbmZvPykgY3Vy cmVudF9ub2RlLmdldF9pdGVtICgpKTsKLSAgICAgICAgICAgICBsaXN0X2JveC5hZGQgKGl0ZW0p OwotLSAgICAgICAgICAgIG1lc3NhZ2VzLnNldCAoY3VycmVudF9ub2RlLm1lc3NhZ2UudWlkLCBp dGVtKTsKLS0gICAgICAgICAgICBpZiAoY3VycmVudF9ub2RlLm5leHQgIT0gbnVsbCkgewotLSAg ICAgICAgICAgICAgICBnb19kb3duICgoQ2FtZWwuRm9sZGVyVGhyZWFkTm9kZT8pIGN1cnJlbnRf bm9kZS5uZXh0KTsKLSsgICAgICAgICAgICBtZXNzYWdlcy5zZXQgKCgoQ2FtZWwuTWVzc2FnZUlu Zm8/KSBjdXJyZW50X25vZGUuZ2V0X2l0ZW0gKCkpLnVpZCwgaXRlbSk7Ci0rICAgICAgICAgICAg aWYgKGN1cnJlbnRfbm9kZS5nZXRfbmV4dCAoKSAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgICAg IGdvX2Rvd24gKChDYW1lbC5Gb2xkZXJUaHJlYWROb2RlPykgY3VycmVudF9ub2RlLmdldF9uZXh0 ICgpKTsKLSAgICAgICAgICAgICB9Ci0gCi0tICAgICAgICAgICAgY3VycmVudF9ub2RlID0gKENh bWVsLkZvbGRlclRocmVhZE5vZGU/KSBjdXJyZW50X25vZGUuY2hpbGQ7Ci0rICAgICAgICAgICAg Y3VycmVudF9ub2RlID0gKENhbWVsLkZvbGRlclRocmVhZE5vZGU/KSBjdXJyZW50X25vZGUuZ2V0 X2NoaWxkICgpOwotICAgICAgICAgfQotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvdmFwaS9jYW1l bC0xLjIudmFwaSBiL3ZhcGkvY2FtZWwtMS4yLnZhcGkKLWluZGV4IGQ2MzdmODhkOS4uYjM2N2U2 NmJlIDEwMDY0NAotLS0tIGEvdmFwaS9jYW1lbC0xLjIudmFwaQotKysrIGIvdmFwaS9jYW1lbC0x LjIudmFwaQotQEAgLTk1LDE3ICs5NSwxOCBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfY2lw aGVyX2NvbnRleHRfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIENpcGhlckNvbnRleHQg OiBHTGliLk9iamVjdCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxz ZSldCi0tCQlwdWJsaWMgQ2lwaGVyQ29udGV4dCAoQ2FtZWwuU2Vzc2lvbiBzZXNzaW9uKTsKLSsJ CXB1YmxpYyBDaXBoZXJDb250ZXh0IChDYW1lbC5TZXNzaW9uPyBzZXNzaW9uKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIzLjAiKV0KLSAJCXB1YmxpYyBhc3luYyBDYW1lbC5DaXBoZXJWYWxpZGl0 eSBkZWNyeXB0IChDYW1lbC5NaW1lUGFydCBpcGFydCwgQ2FtZWwuTWltZVBhcnQgb3BhcnQsIGlu dCBpb19wcmlvcml0eSwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJv d3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjAiKV0KLSAJCXB1YmxpYyB2 aXJ0dWFsIENhbWVsLkNpcGhlclZhbGlkaXR5IGRlY3J5cHRfc3luYyAoQ2FtZWwuTWltZVBhcnQg aXBhcnQsIENhbWVsLk1pbWVQYXJ0IG9wYXJ0LCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJs ZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMCIp XQotLQkJcHVibGljIGFzeW5jIGJvb2wgZW5jcnlwdCAoc3RyaW5nIHVzZXJpZCwgR0xpYi5HZW5l cmljQXJyYXk8c3RyaW5nPiByZWNpcGllbnRzLCBDYW1lbC5NaW1lUGFydCBpcGFydCwgQ2FtZWwu TWltZVBhcnQgb3BhcnQsIGludCBpb19wcmlvcml0eSwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2Vs bGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBhc3luYyBib29sIGVu Y3J5cHQgKHN0cmluZz8gdXNlcmlkLCBHTGliLkdlbmVyaWNBcnJheTxzdHJpbmc+IHJlY2lwaWVu dHMsIENhbWVsLk1pbWVQYXJ0IGlwYXJ0LCBDYW1lbC5NaW1lUGFydCBvcGFydCwgaW50IGlvX3By aW9yaXR5LCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGli LkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMCIpXQotLQkJcHVibGljIHZpcnR1YWwg Ym9vbCBlbmNyeXB0X3N5bmMgKHN0cmluZyB1c2VyaWQsIEdMaWIuR2VuZXJpY0FycmF5PHN0cmlu Zz4gcmVjaXBpZW50cywgQ2FtZWwuTWltZVBhcnQgaXBhcnQsIENhbWVsLk1pbWVQYXJ0IG9wYXJ0 LCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9y OwotKwkJcHVibGljIHZpcnR1YWwgYm9vbCBlbmNyeXB0X3N5bmMgKHN0cmluZz8gdXNlcmlkLCBH TGliLkdlbmVyaWNBcnJheTxzdHJpbmc+IHJlY2lwaWVudHMsIENhbWVsLk1pbWVQYXJ0IGlwYXJ0 LCBDYW1lbC5NaW1lUGFydCBvcGFydCwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBu dWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBzdGF0aWMgR0xpYi5RdWFyayBlcnJv cl9xdWFyayAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjMyIildCi0tCQlwdWJsaWMgdW5v d25lZCBDYW1lbC5TZXNzaW9uIGdldF9zZXNzaW9uICgpOwotKwkJcHVibGljIHVub3duZWQgQ2Ft ZWwuU2Vzc2lvbj8gZ2V0X3Nlc3Npb24gKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIHN0 cmluZyBoYXNoX3RvX2lkIChDYW1lbC5DaXBoZXJIYXNoIGhhc2gpOwotIAkJcHVibGljIHZpcnR1 YWwgQ2FtZWwuQ2lwaGVySGFzaCBpZF90b19oYXNoIChzdHJpbmcgaWQpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjMuMCIpXQotQEAgLTEyNSwxOCArMTI2LDE4IEBAIG5hbWVzcGFjZSBDYW1lbCB7 Ci0gCQlwdWJsaWMgQ2lwaGVyVmFsaWRpdHkgKCk7Ci0gCQlwdWJsaWMgaW50IGFkZF9jZXJ0aW5m byAoQ2FtZWwuQ2lwaGVyVmFsaWRpdHlNb2RlIG1vZGUsIHN0cmluZyBuYW1lLCBzdHJpbmcgZW1h aWwpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMzAiKV0KLS0JCXB1YmxpYyBpbnQgYWRkX2Nl cnRpbmZvX2V4IChDYW1lbC5DaXBoZXJWYWxpZGl0eU1vZGUgbW9kZSwgc3RyaW5nIG5hbWUsIHN0 cmluZyBlbWFpbCwgW0NDb2RlIChkZXN0cm95X25vdGlmeV9wb3MgPSA0LjUpXSBvd25lZCB2b2lk KiBjZXJ0X2RhdGEsIENhbWVsLkNpcGhlckNsb25lRnVuYz8gY2VydF9kYXRhX2Nsb25lKTsKLSsJ CXB1YmxpYyBpbnQgYWRkX2NlcnRpbmZvX2V4IChDYW1lbC5DaXBoZXJWYWxpZGl0eU1vZGUgbW9k ZSwgc3RyaW5nIG5hbWUsIHN0cmluZyBlbWFpbCwgdm9pZCogY2VydF9kYXRhLCBHTGliLkRlc3Ry b3lOb3RpZnk/IGNlcnRfZGF0YV9mcmVlLCBDYW1lbC5DaXBoZXJDbG9uZUZ1bmM/IGNlcnRfZGF0 YV9jbG9uZSk7Ci0gCQlwdWJsaWMgdm9pZCBjbGVhciAoKTsKLSAJCXB1YmxpYyBDYW1lbC5DaXBo ZXJWYWxpZGl0eSBjbG9uZSAoKTsKLSAJCXB1YmxpYyB2b2lkIGVudmVsb3BlIChDYW1lbC5DaXBo ZXJWYWxpZGl0eSB2YWxpZCk7Ci0gCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjMuMjIiKV0KLSAJCXB1YmxpYyB2b2lkKiBnZXRfY2VydGluZm9fcHJvcGVydHkg KENhbWVsLkNpcGhlclZhbGlkaXR5TW9kZSBtb2RlLCBpbnQgaW5mb19pbmRleCwgc3RyaW5nIG5h bWUpOwotLQkJcHVibGljIHN0cmluZyBnZXRfZGVzY3JpcHRpb24gKCk7Ci0rCQlwdWJsaWMgdW5v d25lZCBzdHJpbmcgZ2V0X2Rlc2NyaXB0aW9uICgpOwotIAkJcHVibGljIGJvb2wgZ2V0X3ZhbGlk ICgpOwotIAkJcHVibGljIHZvaWQgaW5pdCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjIy IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY2VydGluZm9fcHJvcGVydHkgKENhbWVsLkNpcGhlclZh bGlkaXR5TW9kZSBtb2RlLCBpbnQgaW5mb19pbmRleCwgc3RyaW5nIG5hbWUsIFtDQ29kZSAoZGVz dHJveV9ub3RpZnlfcG9zID0gNC41KV0gb3duZWQgdm9pZCogdmFsdWUsIENhbWVsLkNpcGhlckNs b25lRnVuYz8gdmFsdWVfY2xvbmUpOwotKwkJcHVibGljIHZvaWQgc2V0X2NlcnRpbmZvX3Byb3Bl cnR5IChDYW1lbC5DaXBoZXJWYWxpZGl0eU1vZGUgbW9kZSwgaW50IGluZm9faW5kZXgsIHN0cmlu ZyBuYW1lLCB2b2lkKiB2YWx1ZSwgR0xpYi5EZXN0cm95Tm90aWZ5PyB2YWx1ZV9mcmVlLCBDYW1l bC5DaXBoZXJDbG9uZUZ1bmM/IHZhbHVlX2Nsb25lKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9kZXNj cmlwdGlvbiAoc3RyaW5nIGRlc2NyaXB0aW9uKTsKLSAJCXB1YmxpYyB2b2lkIHNldF92YWxpZCAo Ym9vbCB2YWxpZCk7Ci0gCX0KLUBAIC0xNzgsNTggKzE3OSw0NCBAQCBuYW1lc3BhY2UgQ2FtZWwg ewotIAlbVmVyc2lvbiAoc2luY2UgPSAiMi4yNCIpXQotIAlwdWJsaWMgY2xhc3MgREIgOiBHTGli Lk9iamVjdCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcu MSIpXQotIAkJcHVibGljIERCIChzdHJpbmcgZmlsZW5hbWUpIHRocm93cyBHTGliLkVycm9yOwot LQkJcHVibGljIGludCBhYm9ydF90cmFuc2FjdGlvbiAoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0J CXB1YmxpYyBpbnQgYWRkX3RvX3RyYW5zYWN0aW9uIChzdHJpbmcgcXVlcnkpIHRocm93cyBHTGli LkVycm9yOwotLQkJcHVibGljIGludCBiZWdpbl90cmFuc2FjdGlvbiAoKSB0aHJvd3MgR0xpYi5F cnJvcjsKLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBjYW1lbF9taXJfZnJlZSAoQ2FtZWwuTUlSZWNv cmQ/IHJlY29yZCk7Ci0tCQlwdWJsaWMgaW50IGNsZWFyX2ZvbGRlcl9zdW1tYXJ5IChzdHJpbmcg Zm9sZGVyX25hbWUpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVibGljIGludCBjb21tYW5kIChz dHJpbmcgc3RtdCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMgaW50IGNvdW50X2RlbGV0 ZWRfbWVzc2FnZV9pbmZvIChzdHJpbmcgdGFibGVfbmFtZSwgb3V0IHVpbnQzMiBjb3VudCkgdGhy b3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMgaW50IGNvdW50X2p1bmtfbWVzc2FnZV9pbmZvIChz dHJpbmcgdGFibGVfbmFtZSwgb3V0IHVpbnQzMiBjb3VudCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0t CQlwdWJsaWMgaW50IGNvdW50X2p1bmtfbm90X2RlbGV0ZWRfbWVzc2FnZV9pbmZvIChzdHJpbmcg dGFibGVfbmFtZSwgdWludDMyIGNvdW50KSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIyLjI2IildCi0tCQlwdWJsaWMgaW50IGNvdW50X21lc3NhZ2VfaW5mbyAoc3Ry aW5nIHF1ZXJ5LCBvdXQgdWludDMyIGNvdW50KSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1Ymxp YyBpbnQgY291bnRfdG90YWxfbWVzc2FnZV9pbmZvIChzdHJpbmcgdGFibGVfbmFtZSwgb3V0IHVp bnQzMiBjb3VudCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMgaW50IGNvdW50X3VucmVh ZF9tZXNzYWdlX2luZm8gKHN0cmluZyB0YWJsZV9uYW1lLCBvdXQgdWludDMyIGNvdW50KSB0aHJv d3MgR0xpYi5FcnJvcjsKLS0JCXB1YmxpYyBpbnQgY291bnRfdmlzaWJsZV9tZXNzYWdlX2luZm8g KHN0cmluZyB0YWJsZV9uYW1lLCBvdXQgdWludDMyIGNvdW50KSB0aHJvd3MgR0xpYi5FcnJvcjsK LS0JCXB1YmxpYyBpbnQgY291bnRfdmlzaWJsZV91bnJlYWRfbWVzc2FnZV9pbmZvIChzdHJpbmcg dGFibGVfbmFtZSwgb3V0IHVpbnQzMiBjb3VudCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJs aWMgaW50IGNyZWF0ZV9mb2xkZXJzX3RhYmxlICgpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVi bGljIGludCBkZWxldGVfZm9sZGVyIChzdHJpbmcgZm9sZGVyX25hbWUpIHRocm93cyBHTGliLkVy cm9yOwotLQkJcHVibGljIGludCBkZWxldGVfdWlkIChzdHJpbmcgZm9sZGVyX25hbWUsIHN0cmlu ZyB1aWQpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVibGljIGludCBkZWxldGVfdWlkcyAoc3Ry aW5nIGZvbGRlcl9uYW1lLCBHTGliLkxpc3Q8c3RyaW5nPiB1aWRzKSB0aHJvd3MgR0xpYi5FcnJv cjsKLS0JCXB1YmxpYyBpbnQgZW5kX3RyYW5zYWN0aW9uICgpIHRocm93cyBHTGliLkVycm9yOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMjYiKV0KLS0JCXB1YmxpYyBpbnQgZmx1c2hfaW5fbWVt b3J5X3RyYW5zYWN0aW9ucyAoc3RyaW5nIGZvbGRlcl9uYW1lKSB0aHJvd3MgR0xpYi5FcnJvcjsK LSsJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyBib29sIGFib3J0X3Ry YW5zYWN0aW9uICgpIHRocm93cyBHTGliLkVycm9yOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMu NTcuMSIpXQotKwkJcHVibGljIGJvb2wgYmVnaW5fdHJhbnNhY3Rpb24gKCkgdGhyb3dzIEdMaWIu RXJyb3I7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCQlwdWJsaWMgYm9vbCBl bmRfdHJhbnNhY3Rpb24gKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgc3RhdGljIEdM aWIuUXVhcmsgZXJyb3JfcXVhcmsgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIild Ci0rCQlwdWJsaWMgYm9vbCBleGVjX3NlbGVjdCAoc3RyaW5nIHN0bXQsIENhbWVsLkRCU2VsZWN0 Q0IgY2FsbGJhY2spIHRocm93cyBHTGliLkVycm9yOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMu NTcuMSIpXQotKwkJcHVibGljIGJvb2wgZXhlY19zdGF0ZW1lbnQgKHN0cmluZyBzdG10KSB0aHJv d3MgR0xpYi5FcnJvcjsKLSAJCXB1YmxpYyBzdGF0aWMgdm9pZCBmcmVlX3NxbGl6ZWRfc3RyaW5n IChzdHJpbmc/IHN0cmluZyk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMy40IildCi0tCQlwdWJs aWMgc3RhdGljIENhbWVsLkRCS25vd25Db2x1bW5OYW1lcyBnZXRfY29sdW1uX2lkZW50IChyZWYg R0xpYi5IYXNoVGFibGU8dm9pZCosdm9pZCo+IGhhc2gsIGludCBpbmRleCwgW0NDb2RlIChhcnJh eV9sZW5ndGhfY25hbWUgPSAibmNvbHMiLCBhcnJheV9sZW5ndGhfcG9zID0gMi41KV0gc3RyaW5n W10gY29sX25hbWVzKTsKLS0JCXB1YmxpYyBzdGF0aWMgc3RyaW5nPyBnZXRfY29sdW1uX25hbWUg KHN0cmluZyByYXdfbmFtZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotIAkJcHVi bGljIHVub3duZWQgc3RyaW5nIGdldF9maWxlbmFtZSAoKTsKLS0JCXB1YmxpYyBHTGliLkdlbmVy aWNBcnJheTxzdHJpbmc+PyBnZXRfZm9sZGVyX2RlbGV0ZWRfdWlkcyAoc3RyaW5nIGZvbGRlcl9u YW1lKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1YmxpYyBHTGliLkdlbmVyaWNBcnJheTxzdHJp bmc+PyBnZXRfZm9sZGVyX2p1bmtfdWlkcyAoc3RyaW5nIGZvbGRlcl9uYW1lKSB0aHJvd3MgR0xp Yi5FcnJvcjsKLS0JCXB1YmxpYyBpbnQgZ2V0X2ZvbGRlcl91aWRzIChzdHJpbmcgZm9sZGVyX25h bWUsIHN0cmluZz8gc29ydF9ieSwgc3RyaW5nPyBjb2xsYXRlLCBHTGliLkhhc2hUYWJsZTxzdHJp bmcsdWludDMyPiBoYXNoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyBib29sIGhhc190YWJsZSAoc3RyaW5nIHRhYmxlX25hbWUp OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwkJcHVibGljIGJvb2wgaGFzX3Rh YmxlX3dpdGhfY29sdW1uIChzdHJpbmcgdGFibGVfbmFtZSwgc3RyaW5nIGNvbHVtbl9uYW1lKTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjE2IildCi0gCQlwdWJsaWMgYm9vbCBtYXliZV9ydW5f bWFpbnRlbmFuY2UgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMgaW50IHByZXBhcmVf bWVzc2FnZV9pbmZvX3RhYmxlIChzdHJpbmcgZm9sZGVyX25hbWUpIHRocm93cyBHTGliLkVycm9y OwotLQkJcHVibGljIGludCByZWFkX2ZvbGRlcl9pbmZvX3JlY29yZCAoc3RyaW5nIGZvbGRlcl9u YW1lLCBvdXQgQ2FtZWwuRklSZWNvcmQgcmVjb3JkKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1 YmxpYyBpbnQgcmVhZF9tZXNzYWdlX2luZm9fcmVjb3JkX3dpdGhfdWlkIChzdHJpbmcgZm9sZGVy X25hbWUsIHN0cmluZyB1aWQsIFtDQ29kZSAoZGVsZWdhdGVfdGFyZ2V0X3BvcyA9IDIuNSldIENh bWVsLkRCU2VsZWN0Q0IgY2FsbGJhY2spIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVibGljIGlu dCByZWFkX21lc3NhZ2VfaW5mb19yZWNvcmRzIChzdHJpbmcgZm9sZGVyX25hbWUsIFtDQ29kZSAo ZGVsZWdhdGVfdGFyZ2V0X3BvcyA9IDEuNSwgc2NvcGUgPSAiYXN5bmMiKV0gQ2FtZWwuREJTZWxl Y3RDQiBjYWxsYmFjaykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAi My41Ny4xIildCi0rCQlwdWJsaWMgYm9vbCBvcGVuIChzdHJpbmcgZmlsZW5hbWUpIHRocm93cyBH TGliLkVycm9yOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwkJcHVibGljIHZv aWQgcmVhZGVyX2xvY2sgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCQlw dWJsaWMgdm9pZCByZWFkZXJfdW5sb2NrICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQi KV0KLSAJCXB1YmxpYyBzdGF0aWMgdm9pZCByZWxlYXNlX2NhY2hlX21lbW9yeSAoKTsKLS0JCXB1 YmxpYyBpbnQgcmVuYW1lX2ZvbGRlciAoc3RyaW5nIG9sZF9mb2xkZXJfbmFtZSwgc3RyaW5nIG5l d19mb2xkZXJfbmFtZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4yOCIpXQotLQkJcHVibGljIGludCByZXNldF9mb2xkZXJfdmVyc2lvbiAoc3RyaW5nIGZvbGRl cl9uYW1lLCBpbnQgcmVzZXRfdmVyc2lvbikgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMg aW50IHNlbGVjdCAoc3RyaW5nIHN0bXQsIENhbWVsLkRCU2VsZWN0Q0IgY2FsbGJhY2spIHRocm93 cyBHTGliLkVycm9yOwotLQkJcHVibGljIGludCBzZXRfY29sbGF0ZSAoc3RyaW5nIGNvbCwgc3Ry aW5nIGNvbGxhdGUsIENhbWVsLkRCQ29sbGF0ZSBmdW5jKTsKLSsJCXB1YmxpYyBib29sIHNldF9j b2xsYXRlIChzdHJpbmcgY29sLCBzdHJpbmcgY29sbGF0ZSwgQ2FtZWwuREJDb2xsYXRlIGZ1bmMp OwotIAkJcHVibGljIHN0YXRpYyBzdHJpbmcgc3FsaXplX3N0cmluZyAoc3RyaW5nIHN0cmluZyk7 Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4yNiIpXQotLQkJcHVibGljIGludCBzdGFydF9pbl9t ZW1vcnlfdHJhbnNhY3Rpb25zICgpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVibGljIGludCB0 cmFuc2FjdGlvbl9jb21tYW5kIChHTGliLkxpc3Q8c3RyaW5nPiBxcnlfbGlzdCkgdGhyb3dzIEdM aWIuRXJyb3I7Ci0tCQlwdWJsaWMgaW50IHdyaXRlX2ZvbGRlcl9pbmZvX3JlY29yZCAoQ2FtZWwu RklSZWNvcmQgcmVjb3JkKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1YmxpYyBpbnQgd3JpdGVf bWVzc2FnZV9pbmZvX3JlY29yZCAoc3RyaW5nIGZvbGRlcl9uYW1lLCBDYW1lbC5NSVJlY29yZCBy ZWNvcmQpIHRocm93cyBHTGliLkVycm9yOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIp XQotKwkJcHVibGljIHN0YXRpYyB2b2lkIHNxbGl6ZV90b19zdGF0ZW1lbnQgKEdMaWIuU3RyaW5n QnVpbGRlciBzdG10LCBzdHJpbmc/IHN0ciwgQ2FtZWwuREJTcWxpemVGbGFncyBmbGFncyk7Ci0r CQlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCQlwdWJsaWMgdm9pZCB3cml0ZXJfbG9j ayAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyB2b2lkIHdy aXRlcl91bmxvY2sgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVs L2NhbWVsLmgiLCB0eXBlX2lkID0gImNhbWVsX2RhdGFfY2FjaGVfZ2V0X3R5cGUgKCkiKV0KLSAJ cHVibGljIGNsYXNzIERhdGFDYWNoZSA6IEdMaWIuT2JqZWN0IHsKLUBAIC0yNDgsOCArMjM1LDgg QEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjMyIildCi0gCQlw dWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X3BhdGggKCk7Ci0gCQlwdWJsaWMgaW50IHJlbW92ZSAo c3RyaW5nIHBhdGgsIHN0cmluZyBrZXkpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVibGljIHZv aWQgc2V0X2V4cGlyZV9hY2Nlc3MgKGxvbmcgd2hlbik7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfZXhw aXJlX2FnZSAobG9uZyB3aGVuKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9leHBpcmVfYWNjZXNzICh0 aW1lX3Qgd2hlbik7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfZXhwaXJlX2FnZSAodGltZV90IHdoZW4p OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9leHBp cmVfZW5hYmxlZCAoYm9vbCBleHBpcmVfZW5hYmxlZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4zMiIpXQotQEAgLTI2NSw2ICsyNTIsOCBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJcHVibGlj IHNpemVfdCBjYWxjdWxhdGVfZGVjb2RlZF9zaXplX3N5bmMgKEdMaWIuQ2FuY2VsbGFibGU/IGNh bmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMy4yNCIpXQotIAkJcHVibGljIHNpemVfdCBjYWxjdWxhdGVfc2l6ZV9zeW5jIChHTGliLkNh bmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjMuNDYiKV0KLSsJCXB1YmxpYyBib29sIGNvbnN0cnVjdF9mcm9tX2Rh dGFfc3luYyAodm9pZCogZGF0YSwgc3NpemVfdCBkYXRhX2xlbiwgR0xpYi5DYW5jZWxsYWJsZT8g Y2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIzLjEyIildCi0gCQlwdWJsaWMgYXN5bmMgYm9vbCBjb25zdHJ1Y3RfZnJvbV9pbnB1dF9z dHJlYW0gKEdMaWIuSW5wdXRTdHJlYW0gaW5wdXRfc3RyZWFtLCBpbnQgaW9fcHJpb3JpdHksIEdM aWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMy4xMiIpXQotQEAgLTI4Niw3ICsyNzUsNyBAQCBuYW1lc3Bh Y2UgQ2FtZWwgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLSAJCXB1YmxpYyBDYW1l bC5UcmFuc2ZlckVuY29kaW5nIGdldF9lbmNvZGluZyAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHN0 cmluZyBnZXRfbWltZV90eXBlICgpOwotLQkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBDYW1lbC5D b250ZW50VHlwZSBnZXRfbWltZV90eXBlX2ZpZWxkICgpOwotKwkJcHVibGljIHZpcnR1YWwgdW5v d25lZCBDYW1lbC5Db250ZW50VHlwZT8gZ2V0X21pbWVfdHlwZV9maWVsZCAoKTsKLSAJCXB1Ymxp YyB2aXJ0dWFsIGJvb2wgaXNfb2ZmbGluZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjI0 IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfZW5jb2RpbmcgKENhbWVsLlRyYW5zZmVyRW5jb2Rpbmcg ZW5jb2RpbmcpOwotQEAgLTMxMCw5ICsyOTksOSBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHVibGljIEZpbHRlckRy aXZlciAoQ2FtZWwuU2Vzc2lvbiBzZXNzaW9uKTsKLSAJCXB1YmxpYyB2b2lkIGFkZF9ydWxlIChz dHJpbmcgbmFtZSwgc3RyaW5nIG1hdGNoLCBzdHJpbmcgYWN0aW9uKTsKLS0JCXB1YmxpYyBpbnQg ZmlsdGVyX2ZvbGRlciAoQ2FtZWwuRm9sZGVyIGZvbGRlciwgQ2FtZWwuVUlEQ2FjaGUgY2FjaGUs IEdMaWIuR2VuZXJpY0FycmF5PHN0cmluZz4gdWlkcywgYm9vbCByZW1vdmUsIEdMaWIuQ2FuY2Vs bGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMg aW50IGZpbHRlcl9mb2xkZXIgKENhbWVsLkZvbGRlciBmb2xkZXIsIENhbWVsLlVJRENhY2hlIGNh Y2hlLCBHTGliLkdlbmVyaWNBcnJheTxzdHJpbmc+PyB1aWRzLCBib29sIHJlbW92ZSwgR0xpYi5D YW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCXB1 YmxpYyBpbnQgZmlsdGVyX21ib3ggKHN0cmluZyBtYm94LCBzdHJpbmc/IG9yaWdpbmFsX3NvdXJj ZV91cmwsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIu RXJyb3I7Ci0tCQlwdWJsaWMgaW50IGZpbHRlcl9tZXNzYWdlIChDYW1lbC5NaW1lTWVzc2FnZSBt ZXNzYWdlLCBDYW1lbC5NZXNzYWdlSW5mbyBpbmZvLCBzdHJpbmcgdWlkLCBDYW1lbC5Gb2xkZXIg c291cmNlLCBzdHJpbmcgc3RvcmVfdWlkLCBzdHJpbmcgb3JpZ2luYWxfc3RvcmVfdWlkLCBHTGli LkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJ cHVibGljIGludCBmaWx0ZXJfbWVzc2FnZSAoQ2FtZWwuTWltZU1lc3NhZ2U/IG1lc3NhZ2UsIENh bWVsLk1lc3NhZ2VJbmZvPyBpbmZvLCBzdHJpbmc/IHVpZCwgQ2FtZWwuRm9sZGVyPyBzb3VyY2Us IHN0cmluZz8gc3RvcmVfdWlkLCBzdHJpbmc/IG9yaWdpbmFsX3N0b3JlX3VpZCwgR0xpYi5DYW5j ZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCXB1Ymxp YyB2b2lkIGZsdXNoICgpIHRocm93cyBHTGliLkVycm9yOwotIAkJcHVibGljIGJvb2wgcmVtb3Zl X3J1bGVfYnlfbmFtZSAoc3RyaW5nIG5hbWUpOwotIAkJcHVibGljIHZvaWQgc2V0X2RlZmF1bHRf Zm9sZGVyIChDYW1lbC5Gb2xkZXI/IGRlZik7Ci1AQCAtMzUxLDggKzM0MCw2IEBAIG5hbWVzcGFj ZSBDYW1lbCB7Ci0gCQlwdWJsaWMgdmlydHVhbCBib29sIGFwcGVuZF9tZXNzYWdlX3N5bmMgKENh bWVsLk1pbWVNZXNzYWdlIG1lc3NhZ2UsIENhbWVsLk1lc3NhZ2VJbmZvPyBpbmZvLCBvdXQgc3Ry aW5nPyBhcHBlbmRlZF91aWQsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCkg dGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4yOCIpXQotIAkJcHVi bGljIHZpcnR1YWwgaW50IGNtcF91aWRzIChzdHJpbmcgdWlkMSwgc3RyaW5nIHVpZDIpOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjIuMjYiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHVpbnQzMiBjb3Vu dF9ieV9leHByZXNzaW9uIChzdHJpbmcgZXhwcmVzc2lvbiwgR0xpYi5DYW5jZWxsYWJsZT8gY2Fu Y2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCXB1YmxpYyB2b2lkIEBkZWxl dGUgKCk7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBkZWxldGVfICgp OwotQEAgLTM2MiwxNCArMzQ5LDE2IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlwdWJsaWMgc3Ry aW5nIGR1cF9kaXNwbGF5X25hbWUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy44IildCi0g CQlwdWJsaWMgc3RyaW5nIGR1cF9mdWxsX25hbWUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAi My41Ny4xIildCi0rCQlwdWJsaWMgdmlydHVhbCBib29sIGR1cF9oZWFkZXJzX3N5bmMgKHN0cmlu ZyB1aWQsIG91dCBDYW1lbC5OYW1lVmFsdWVBcnJheSBvdXRfaGVhZGVycywgR0xpYi5DYW5jZWxs YWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyB2aXJ0dWFsIEdMaWIuR2VuZXJpY0FycmF5 PHdlYWsgc3RyaW5nPiBkdXBfdWlkcyAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjU3LjEi KV0KLSsJCXB1YmxpYyB2aXJ0dWFsIEdMaWIuR2VuZXJpY0FycmF5PHdlYWsgc3RyaW5nPiBkdXBf dW5jYWNoZWRfdWlkcyAoR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiB1aWRzKSB0aHJvd3MgR0xp Yi5FcnJvcjsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjAiKV0KLSAJCXB1YmxpYyBhc3luYyBi b29sIGV4cHVuZ2UgKGludCBpb19wcmlvcml0eSwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFi bGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjAi KV0KLSAJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgZXhwdW5nZV9zeW5jIChHTGliLkNhbmNlbGxhYmxl PyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotLQkJcHVibGljIHZvaWQg ZnJlZV9kZWVwIChHTGliLkdlbmVyaWNBcnJheTxzdHJpbmc+IGFycmF5KTsKLS0JCXB1YmxpYyB2 b2lkIGZyZWVfc2hhbGxvdyAoR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiBhcnJheSk7Ci0tCQlw dWJsaWMgdmlydHVhbCB2b2lkIGZyZWVfc3VtbWFyeSAoR0xpYi5HZW5lcmljQXJyYXk8Q2FtZWwu TWVzc2FnZUluZm8+IGFycmF5KTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgZnJlZV91aWRzIChH TGliLkdlbmVyaWNBcnJheTxzdHJpbmc+IGFycmF5KTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQg ZnJlZXplICgpOwotIAkJcHVibGljIGludCBnZXRfZGVsZXRlZF9tZXNzYWdlX2NvdW50ICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMzIiKV0KLUBAIC0zODQsNiArMzczLDggQEAgbmFtZXNw YWNlIENhbWVsIHsKLSAJCXB1YmxpYyB1bm93bmVkIENhbWVsLkZvbGRlclN1bW1hcnkgZ2V0X2Zv bGRlcl9zdW1tYXJ5ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMzIiKV0KLSAJCXB1Ymxp YyBpbnQgZ2V0X2Zyb3plbl9jb3VudCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQ2Iild Ci0rCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIHN0cmluZyBnZXRfZnVsbF9kaXNwbGF5X25hbWUg KCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2Z1bGxfbmFtZSAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIzLjMyIildCi0gCQlwdWJsaWMgQ2FtZWwuVGhyZWVTdGF0ZSBnZXRfbWFy a19zZWVuICgpOwotQEAgLTM5Niw3ICszODcsNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJcHVi bGljIHZpcnR1YWwgaW50IGdldF9tZXNzYWdlX2NvdW50ICgpOwotIAkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHVpbnQzMiBnZXRfbWVzc2FnZV9mbGFn cyAoc3RyaW5nIHVpZCk7Ci0tCQlwdWJsaWMgdmlydHVhbCBDYW1lbC5NZXNzYWdlSW5mbyBnZXRf bWVzc2FnZV9pbmZvIChzdHJpbmcgdWlkKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIENhbWVsLk1lc3Nh Z2VJbmZvPyBnZXRfbWVzc2FnZV9pbmZvIChzdHJpbmcgdWlkKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIzLjAiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2FtZWwuTWltZU1lc3NhZ2Ug Z2V0X21lc3NhZ2Vfc3luYyAoc3RyaW5nIG1lc3NhZ2VfdWlkLCBHTGliLkNhbmNlbGxhYmxlPyBj YW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlKV0KLUBAIC00MDksMTAgKzQwMCw2IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0g CQlwdWJsaWMgYXN5bmMgQ2FtZWwuRm9sZGVyUXVvdGFJbmZvIGdldF9xdW90YV9pbmZvIChpbnQg aW9fcHJpb3JpdHksIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dz IEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yIildCi0gCQlwdWJsaWMgdmly dHVhbCBDYW1lbC5Gb2xkZXJRdW90YUluZm8gZ2V0X3F1b3RhX2luZm9fc3luYyAoR0xpYi5DYW5j ZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1Ymxp YyB2aXJ0dWFsIHVub3duZWQgR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiBnZXRfc3VtbWFyeSAo KTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiBn ZXRfdWlkcyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjI2IildCi0tCQlwdWJsaWMgdmly dHVhbCB1bm93bmVkIEdMaWIuR2VuZXJpY0FycmF5PHN0cmluZz4gZ2V0X3VuY2FjaGVkX3VpZHMg KEdMaWIuR2VuZXJpY0FycmF5PHN0cmluZz4gdWlkcykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUpXQotIAkJcHVibGljIGludCBnZXRfdW5yZWFkX21l c3NhZ2VfY291bnQgKCk7Ci0gCQlbTm9XcmFwcGVyXQotQEAgLTQzMiw5ICs0MTksMTIgQEAgbmFt ZXNwYWNlIENhbWVsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjAiKV0KLSAJCXB1YmxpYyB2 aXJ0dWFsIGJvb2wgcmVmcmVzaF9pbmZvX3N5bmMgKEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxh YmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIHJl bmFtZSAoc3RyaW5nIG5ld19uYW1lKTsKLS0JCXB1YmxpYyB2aXJ0dWFsIEdMaWIuR2VuZXJpY0Fy cmF5PHN0cmluZz4gc2VhcmNoX2J5X2V4cHJlc3Npb24gKHN0cmluZyBleHByZXNzaW9uLCBHTGli LkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotLQkJ cHVibGljIHZpcnR1YWwgR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiBzZWFyY2hfYnlfdWlkcyAo c3RyaW5nIGV4cHJlc3Npb24sIEdMaWIuR2VuZXJpY0FycmF5PHN0cmluZz4gdWlkcywgR0xpYi5D YW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgc2VhcmNoX2ZyZWUgKEdMaWIuR2VuZXJpY0FycmF5PHN0cmluZz4g cmVzdWx0KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyB2aXJ0 dWFsIGJvb2wgc2VhcmNoX2JvZHlfc3luYyAoR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiB3b3Jk cywgb3V0IEdMaWIuR2VuZXJpY0FycmF5PHdlYWsgc3RyaW5nPiBvdXRfdWlkcywgR0xpYi5DYW5j ZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCVtWZXJz aW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgc2VhcmNoX2hl YWRlcl9zeW5jIChzdHJpbmcgaGVhZGVyX25hbWUsIEdMaWIuR2VuZXJpY0FycmF5PHN0cmluZz4/ IHdvcmRzLCBvdXQgR0xpYi5HZW5lcmljQXJyYXk8d2VhayBzdHJpbmc+IG91dF91aWRzLCBHTGli LkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwkJcHVibGljIHZpcnR1YWwgYm9vbCBzZWFy Y2hfc3luYyAoc3RyaW5nIGV4cHJlc3Npb24sIG91dCBHTGliLkdlbmVyaWNBcnJheTx3ZWFrIHN0 cmluZz4/IG91dF91aWRzLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRo cm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMzIiKV0KLSAJCXB1Ymxp YyB2b2lkIHNldF9kZXNjcmlwdGlvbiAoc3RyaW5nIGRlc2NyaXB0aW9uKTsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIzLjIiKV0KLUBAIC00NjksOSArNDU5LDkgQEAgbmFtZXNwYWNlIENhbWVsIHsK LSAJCXB1YmxpYyB2b2lkIHRha2VfZm9sZGVyX3N1bW1hcnkgKG93bmVkIENhbWVsLkZvbGRlclN1 bW1hcnkgc3VtbWFyeSk7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIHRoYXcgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMy4wIildCi0tCQlwdWJsaWMgYXN5bmMgYm9vbCB0cmFuc2Zlcl9tZXNz YWdlc190byAoR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiBtZXNzYWdlX3VpZHMsIENhbWVsLkZv bGRlciBkZXN0aW5hdGlvbiwgYm9vbCBkZWxldGVfb3JpZ2luYWxzLCBpbnQgaW9fcHJpb3JpdHks IEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCwgb3V0IEdMaWIuR2VuZXJpY0Fy cmF5PHN0cmluZz4/IHRyYW5zZmVycmVkX3VpZHMpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVi bGljIGFzeW5jIGJvb2wgdHJhbnNmZXJfbWVzc2FnZXNfdG8gKEdMaWIuR2VuZXJpY0FycmF5PHN0 cmluZz4gbWVzc2FnZV91aWRzLCBDYW1lbC5Gb2xkZXIgZGVzdGluYXRpb24sIGJvb2wgZGVsZXRl X29yaWdpbmFscywgaW50IGlvX3ByaW9yaXR5LCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJs ZSA9IG51bGwsIG91dCBHTGliLkdlbmVyaWNBcnJheTx3ZWFrIHN0cmluZz4/IHRyYW5zZmVycmVk X3VpZHMpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMCIpXQot LQkJcHVibGljIHZpcnR1YWwgYm9vbCB0cmFuc2Zlcl9tZXNzYWdlc190b19zeW5jIChHTGliLkdl bmVyaWNBcnJheTxzdHJpbmc+IG1lc3NhZ2VfdWlkcywgQ2FtZWwuRm9sZGVyIGRlc3RpbmF0aW9u LCBib29sIGRlbGV0ZV9vcmlnaW5hbHMsIG91dCBHTGliLkdlbmVyaWNBcnJheTxzdHJpbmc+PyB0 cmFuc2ZlcnJlZF91aWRzLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRo cm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIHZpcnR1YWwgYm9vbCB0cmFuc2Zlcl9tZXNzYWdl c190b19zeW5jIChHTGliLkdlbmVyaWNBcnJheTxzdHJpbmc+IG1lc3NhZ2VfdWlkcywgQ2FtZWwu Rm9sZGVyIGRlc3RpbmF0aW9uLCBib29sIGRlbGV0ZV9vcmlnaW5hbHMsIG91dCBHTGliLkdlbmVy aWNBcnJheTx3ZWFrIHN0cmluZz4/IHRyYW5zZmVycmVkX3VpZHMsIEdMaWIuQ2FuY2VsbGFibGU/ IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMi4zMiIpXQotIAkJcHVibGljIHZvaWQgQHVubG9jayAoKTsKLSAJCXB1YmxpYyBzdHJp bmcgZGVzY3JpcHRpb24geyBnZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLUBAIC01NTEsNDMgKzU0MSw2 IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlwdWJsaWMgQ2FtZWwuRm9sZGVyUXVvdGFJbmZvIGNs b25lICgpOwotIAkJcHVibGljIHZvaWQgZnJlZSAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfZm9sZGVyX3NlYXJj aF9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgRm9sZGVyU2VhcmNoIDogR0xpYi5PYmpl Y3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHVi bGljIEZvbGRlclNlYXJjaCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjI2IildCi0tCQlw dWJsaWMgdWludDMyIGNvdW50IChzdHJpbmcgZXhwciwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2Vs bGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1YmxpYyB2b2lkIGZyZWVfcmVz dWx0IChHTGliLkdlbmVyaWNBcnJheTxzdHJpbmc+PyByZXN1bHQpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjMuMjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENhbWVsLk1lc3NhZ2VJbmZvPyBnZXRf Y3VycmVudF9tZXNzYWdlX2luZm8gKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQot LQkJcHVibGljIHVub3duZWQgR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiBnZXRfY3VycmVudF9z dW1tYXJ5ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLS0JCXB1YmxpYyB1bm93 bmVkIENhbWVsLkZvbGRlciBnZXRfZm9sZGVyICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjMu MjQiKV0KLS0JCXB1YmxpYyBib29sIGdldF9vbmx5X2NhY2hlZF9tZXNzYWdlcyAoKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIzLjI0IildCi0tCQlwdWJsaWMgdW5vd25lZCBHTGliLkdlbmVyaWNB cnJheTxzdHJpbmc+IGdldF9zdW1tYXJ5ICgpOwotLQkJcHVibGljIGJvb2wgZ2V0X3N1bW1hcnlf ZW1wdHkgKCk7Ci0tCQlwdWJsaWMgR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiBzZWFyY2ggKHN0 cmluZyBleHByLCBHTGliLkdlbmVyaWNBcnJheTxzdHJpbmc+IHVpZHMsIEdMaWIuQ2FuY2VsbGFi bGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMgdm9p ZCBzZXRfYm9keV9pbmRleCAoQ2FtZWwuSW5kZXg/IGJvZHlfaW5kZXgpOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjMuMjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9jdXJyZW50X21lc3NhZ2VfaW5m byAoQ2FtZWwuTWVzc2FnZUluZm8/IGluZm8pOwotLQkJcHVibGljIHZvaWQgc2V0X2ZvbGRlciAo Q2FtZWwuRm9sZGVyIGZvbGRlcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotLQkJ cHVibGljIHZvaWQgc2V0X29ubHlfY2FjaGVkX21lc3NhZ2VzIChib29sIG9ubHlfY2FjaGVkX21l c3NhZ2VzKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9zdW1tYXJ5IChHTGliLkdlbmVyaWNBcnJheTxz dHJpbmc+IHN1bW1hcnkpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLS0JCXB1Ymxp YyB2b2lkIHRha2VfY3VycmVudF9tZXNzYWdlX2luZm8gKENhbWVsLk1lc3NhZ2VJbmZvPyBpbmZv KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIzLjIiKV0KLS0JCXB1YmxpYyBzdGF0aWMgbG9uZyB1 dGlsX2FkZF9tb250aHMgKGxvbmcgdCwgaW50IG1vbnRocyk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMy4zMCIpXQotLQkJcHVibGljIHN0YXRpYyBpbnQgdXRpbF9jb21wYXJlX2RhdGUgKGludDY0 IGRhdGV0aW1lMSwgaW50NjQgZGF0ZXRpbWUyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQw IildCi0tCQlwdWJsaWMgc3RhdGljIHVpbnQ2NCB1dGlsX2hhc2hfbWVzc2FnZV9pZCAoc3RyaW5n IG1lc3NhZ2VfaWQsIGJvb2wgbmVlZHNfZGVjb2RlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIz LjMwIildCi0tCQlwdWJsaWMgc3RhdGljIGxvbmcgdXRpbF9tYWtlX3RpbWUgKGludCBhcmdjLCBD YW1lbC5TRXhwUmVzdWx0IGFyZ3YpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjYW1lbC9jYW1lbC5oIiwgdHlwZV9pZCA9ICJjYW1lbF9mb2xkZXJfc3VtbWFyeV9nZXRfdHlw ZSAoKSIpXQotIAlwdWJsaWMgY2xhc3MgRm9sZGVyU3VtbWFyeSA6IEdMaWIuT2JqZWN0IHsKLSAJ CVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLUBAIC01OTcsMTQgKzU1 MCwxNCBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJcHVibGljIGJvb2wgY2hlY2tfdWlkIChzdHJp bmcgdWlkKTsKLSAJCXB1YmxpYyBib29sIGNsZWFyICgpIHRocm93cyBHTGliLkVycm9yOwotIAkJ cHVibGljIHVpbnQgY291bnQgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0r CQlwdWJsaWMgR0xpYi5HZW5lcmljQXJyYXk8d2VhayBzdHJpbmc+IGR1cF9jaGFuZ2VkICgpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwkJcHVibGljIEdMaWIuR2VuZXJpY0Fy cmF5PHdlYWsgc3RyaW5nPiBkdXBfdWlkcyAoKTsKLSAJCVtDQ29kZSAodmZ1bmNfbmFtZSA9ICJt ZXNzYWdlX2luZm9fZnJvbV91aWQiKV0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQiKV0KLSAJ CXB1YmxpYyB2aXJ0dWFsIENhbWVsLk1lc3NhZ2VJbmZvPyBAZ2V0IChzdHJpbmcgdWlkKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIzLjQiKV0KLS0JCXB1YmxpYyBHTGliLkdlbmVyaWNBcnJheTxz dHJpbmc+IGdldF9hcnJheSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjI0IildCi0tCQlw dWJsaWMgR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiBnZXRfY2hhbmdlZCAoKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIzLjQiKV0KLSAJCXB1YmxpYyB1aW50MzIgZ2V0X2RlbGV0ZWRfY291bnQg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotIAkJcHVibGljIHVpbnQzMiBnZXRf ZmxhZ3MgKCk7Ci1AQCAtNjEzLDcgKzU2Niw3IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMy42IildCi0gCQlwdWJsaWMgR0xpYi5IYXNoVGFibGU8d2VhayBzdHJp bmcsaW50PiBnZXRfaGFzaCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQiKV0KLS0JCXB1 YmxpYyB1bm93bmVkIENhbWVsLkluZGV4IGdldF9pbmRleCAoKTsKLSsJCXB1YmxpYyB1bm93bmVk IENhbWVsLkluZGV4PyBnZXRfaW5kZXggKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4xMiIp XQotIAkJcHVibGljIHVpbnQzMiBnZXRfaW5mb19mbGFncyAoc3RyaW5nIHVpZCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMy40IildCi1AQCAtNjM2LDEyICs1ODksOSBAQCBuYW1lc3BhY2UgQ2Ft ZWwgewotIAkJcHVibGljIGJvb2wgaGVhZGVyX2xvYWQgKFtDQ29kZSAodHlwZSA9ICJfQ2FtZWxT dG9yZSoiKV0gQ2FtZWwuU3RvcmUgc3RvcmUsIHN0cmluZyBmb2xkZXJfbmFtZSkgdGhyb3dzIEdM aWIuRXJyb3I7Ci0gCQlbQ0NvZGUgKHZmdW5jX25hbWUgPSAic3VtbWFyeV9oZWFkZXJfbG9hZCIp XQotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIGJvb2wgaGVhZGVyX2xvYWRfaW1w bCAoW0NDb2RlICh0eXBlID0gIl9DYW1lbEZJUmVjb3JkKiIpXSBDYW1lbC5GSVJlY29yZCBmaXIp OwotKwkJcHVibGljIHZpcnR1YWwgYm9vbCBoZWFkZXJfbG9hZF9pbXBsIChDYW1lbC5TdG9yZURC Rm9sZGVyUmVjb3JkIHJlY29yZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotIAkJ cHVibGljIGJvb2wgaGVhZGVyX3NhdmUgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbQ0NvZGUg KHZmdW5jX25hbWUgPSAic3VtbWFyeV9oZWFkZXJfc2F2ZSIpXQotLQkJW05vV3JhcHBlcl0KLS0J CXB1YmxpYyB2aXJ0dWFsIENhbWVsLkZJUmVjb3JkPyBoZWFkZXJfc2F2ZV9pbXBsICgpIHRocm93 cyBHTGliLkVycm9yOwotIAkJW0NDb2RlICh2ZnVuY19uYW1lID0gIm1lc3NhZ2VfaW5mb19uZXdf ZnJvbV9oZWFkZXJzIildCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotIAkJcHVibGlj IHZpcnR1YWwgQ2FtZWwuTWVzc2FnZUluZm8gaW5mb19uZXdfZnJvbV9oZWFkZXJzIChDYW1lbC5O YW1lVmFsdWVBcnJheSBoZWFkZXJzKTsKLUBAIC02NjUsMTkgKzYxNSwyMSBAQCBuYW1lc3BhY2Ug Q2FtZWwgewotIAkJcHVibGljIGJvb2wgcmVtb3ZlIChDYW1lbC5NZXNzYWdlSW5mbyBpbmZvKTsK LSAJCXB1YmxpYyBib29sIHJlbW92ZV91aWQgKHN0cmluZyB1aWQpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjMuNiIpXQotLQkJcHVibGljIGJvb2wgcmVtb3ZlX3VpZHMgKEdMaWIuTGlzdDxzdHJp bmc+IHVpZHMpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNiIpXQotLQkJcHVibGljIGJvb2wg cmVwbGFjZV9mbGFncyAoQ2FtZWwuTWVzc2FnZUluZm8gaW5mbyk7Ci0rCQlwdWJsaWMgYm9vbCBy ZW1vdmVfdWlkcyAoR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiB1aWRzKTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyBib29sIHJlcGxhY2VfZmxhZ3MgKHN0cmlu ZyB1aWQsIHVpbnQzMiBuZXdfZmxhZ3MpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0K LSAJCXB1YmxpYyBib29sIHNhdmUgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMy4yNCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2ZsYWdzICh1aW50MzIgZmxhZ3Mp OwotLQkJcHVibGljIHZvaWQgc2V0X2luZGV4IChDYW1lbC5JbmRleCBpbmRleCk7Ci0rCQlwdWJs aWMgdm9pZCBzZXRfaW5kZXggKENhbWVsLkluZGV4PyBpbmRleCk7Ci0gCQlwdWJsaWMgdm9pZCBz ZXRfbmV4dF91aWQgKHVpbnQzMiB1aWQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0K LSAJCXB1YmxpYyB2b2lkIHNldF90aW1lc3RhbXAgKGludDY0IHRpbWVzdGFtcCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMy4yNCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3ZlcnNpb24gKHVpbnQz MiB2ZXJzaW9uKTsKLSsJCVtOb1dyYXBwZXJdCi0rCQlwdWJsaWMgdmlydHVhbCBib29sIHN1bW1h cnlfaGVhZGVyX3NhdmUgKENhbWVsLlN0b3JlREJGb2xkZXJSZWNvcmQgaW5vdXRfcmVjb3JkKSB0 aHJvd3MgR0xpYi5FcnJvcjsKLSAJCXB1YmxpYyB2b2lkIHRvdWNoICgpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjIuMzIiKV0KLSAJCXB1YmxpYyB2b2lkIEB1bmxvY2sgKCk7Ci1AQCAtNjg5LDQ5 ICs2NDEsNzMgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCXB1YmxpYyB1aW50IHVucmVhZF9jb3Vu dCB7IGdldDsgfQotIAkJcHVibGljIHVpbnQgdmlzaWJsZV9jb3VudCB7IGdldDsgfQotIAkJcHVi bGljIHNpZ25hbCB2b2lkIGNoYW5nZWQgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4x IildCi0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgaW5mb19mbGFnc19jaGFuZ2VkIChzdHJpbmcgdWlk LCB1aW50IG5ld19mbGFncyk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNh bWVsL2NhbWVsLmgiLCBsb3dlcl9jYXNlX2NzdWZmaXggPSAiZm9sZGVyX3RocmVhZF9tZXNzYWdl cyIsIHJlZl9mdW5jdGlvbiA9ICJjYW1lbF9mb2xkZXJfdGhyZWFkX21lc3NhZ2VzX3JlZiIsIHR5 cGVfaWQgPSAiY2FtZWxfZm9sZGVyX3RocmVhZF9tZXNzYWdlc19nZXRfdHlwZSAoKSIsIHVucmVm X2Z1bmN0aW9uID0gImNhbWVsX2ZvbGRlcl90aHJlYWRfbWVzc2FnZXNfdW5yZWYiKV0KLS0JW0Nv bXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBGb2xkZXJUaHJlYWQgewotLQkJcHVibGljIENhbWVsLkZv bGRlciBmb2xkZXI7Ci0tCQlwdWJsaWMgQ2FtZWwuTWVtQ2h1bmsgbm9kZV9jaHVua3M7Ci0tCQlw dWJsaWMgdWludDMyIHJlZmNvdW50OwotLQkJcHVibGljIHVpbnQzMiBzdWJqZWN0OwotLQkJcHVi bGljIEdMaWIuR2VuZXJpY0FycmF5PENhbWVsLk1lc3NhZ2VJbmZvPiBzdW1tYXJ5OwotLQkJcHVi bGljIENhbWVsLkZvbGRlclRocmVhZE5vZGUgdHJlZTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNhbWVsL2NhbWVsLmgiLCB0eXBlX2lkID0gImNhbWVsX2ZvbGRlcl90aHJlYWRfZ2V0 X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIEZvbGRlclRocmVhZCA6IEdMaWIuT2JqZWN0IHsK LSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXB1YmxpYyBG b2xkZXJUaHJlYWQgKENhbWVsLkZvbGRlciBmb2xkZXIsIEdMaWIuR2VuZXJpY0FycmF5PHN0cmlu Zz4gdWlkcywgYm9vbCB0aHJlYWRfc3ViamVjdCk7Ci0tCQlwdWJsaWMgdm9pZCBhcHBseSAoR0xp Yi5HZW5lcmljQXJyYXk8c3RyaW5nPiB1aWRzKTsKLS0JCXB1YmxpYyBDYW1lbC5Gb2xkZXJUaHJl YWQgQHJlZiAoKTsKLS0JCXB1YmxpYyB2b2lkIHVucmVmICgpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjMuNTcuMSIpXQotKwkJcHVibGljIEZvbGRlclRocmVhZCAoQ2FtZWwuRm9sZGVyIGZvbGRl ciwgR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPj8gdWlkcywgQ2FtZWwuRm9sZGVyVGhyZWFkRmxh Z3MgZmxhZ3MpOwotKwkJcHVibGljIHVpbnQgZHVtcCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyB1bm93bmVkIENhbWVsLkZvbGRlclRocmVhZE5vZGUgZ2V0 X3RyZWUgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVs LmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0NvbXBhY3RdCi0gCXB1YmxpYyBjbGFzcyBG b2xkZXJUaHJlYWROb2RlIHsKLS0JCXB1YmxpYyB3ZWFrIENhbWVsLkZvbGRlclRocmVhZE5vZGU/ IGNoaWxkOwotLQkJcHVibGljIHdlYWsgQ2FtZWwuTWVzc2FnZUluZm8/IG1lc3NhZ2U7Ci0tCQlw dWJsaWMgd2VhayBDYW1lbC5Gb2xkZXJUaHJlYWROb2RlPyBuZXh0OwotLQkJcHVibGljIHVpbnQz MiBvcmRlcjsKLS0JCXB1YmxpYyB3ZWFrIENhbWVsLkZvbGRlclRocmVhZE5vZGU/IHBhcmVudDsK LS0JCXB1YmxpYyB1aW50MzIgcmU7Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgcm9vdF9zdWJqZWN0 OwotLQkJW0NDb2RlIChjbmFtZSA9ICJjYW1lbF9mb2xkZXJfdGhyZWFkZWRfbWVzc2FnZXNfZHVt cCIpXQotLQkJcHVibGljIGludCBkdW1wICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcu MSIpXQotKwkJcHVibGljIHVub3duZWQgQ2FtZWwuRm9sZGVyVGhyZWFkTm9kZT8gZ2V0X2NoaWxk ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwkJcHVibGljIHZvaWQqIGdl dF9pdGVtICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwkJcHVibGljIHVu b3duZWQgQ2FtZWwuRm9sZGVyVGhyZWFkTm9kZT8gZ2V0X25leHQgKCk7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMy41Ny4xIildCi0rCQlwdWJsaWMgdW5vd25lZCBDYW1lbC5Gb2xkZXJUaHJlYWRO b2RlPyBnZXRfcGFyZW50ICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj YW1lbC9jYW1lbC5oIiwgdHlwZV9pZCA9ICJjYW1lbF9ncGdfY29udGV4dF9nZXRfdHlwZSAoKSIp XQotIAlwdWJsaWMgY2xhc3MgR3BnQ29udGV4dCA6IENhbWVsLkNpcGhlckNvbnRleHQgewotIAkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2FtZWxDaXBo ZXJDb250ZXh0KiIpXQotLQkJcHVibGljIEdwZ0NvbnRleHQgKENhbWVsLlNlc3Npb24gc2Vzc2lv bik7Ci0rCQlwdWJsaWMgR3BnQ29udGV4dCAoQ2FtZWwuU2Vzc2lvbj8gc2Vzc2lvbik7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMi4zMiIpXQotIAkJcHVibGljIGJvb2wgZ2V0X2Fsd2F5c190cnVz dCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjUwIildCi0rCQlwdWJsaWMgYm9vbCBnZXRf a2V5X2RhdGFfaW5mb19zeW5jICh1aW50OCBkYXRhLCBzaXplX3QgZGF0YV9zaXplLCB1aW50MzIg ZmxhZ3MsIG91dCBHTGliLlNMaXN0PENhbWVsLkdwZ0tleUluZm8+IG91dF9pbmZvcywgR0xpYi5D YW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIzLjQ2IildCi0rCQlwdWJsaWMgYm9vbCBnZXRfbG9jYXRlX2tleXMg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yMCIpXQotIAkJcHVibGljIGJvb2wgZ2V0X3By ZWZlcl9pbmxpbmUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41MCIpXQotKwkJcHVibGlj IGJvb2wgZ2V0X3B1YmxpY19rZXlfaW5mb19zeW5jIChzdHJpbmcga2V5aWQsIHVpbnQzMiBmbGFn cywgb3V0IEdMaWIuU0xpc3Q8Q2FtZWwuR3BnS2V5SW5mbz4gb3V0X2luZm9zLCBHTGliLkNhbmNl bGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjMuNTAiKV0KLSsJCXB1YmxpYyBib29sIGdldF9wdWJsaWNfa2V5X3N5bmMg KHN0cmluZyBrZXlpZCwgdWludDMyIGZsYWdzLCBvdXQgdWludDggb3V0X2RhdGEsIG91dCBzaXpl X3Qgb3V0X2RhdGFfc2l6ZSwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0 aHJvd3MgR0xpYi5FcnJvcjsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjUwIildCi0rCQlwdWJs aWMgYm9vbCBoYXNfcHVibGljX2tleV9zeW5jIChzdHJpbmcga2V5aWQsIEdMaWIuQ2FuY2VsbGFi bGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMy41MCIpXQotKwkJcHVibGljIGJvb2wgaW1wb3J0X2tleV9zeW5jICh1aW50OCBk YXRhLCBzaXplX3QgZGF0YV9zaXplLCB1aW50MzIgZmxhZ3MsIEdMaWIuQ2FuY2VsbGFibGU/IGNh bmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgdm9pZCBzZXRf YWx3YXlzX3RydXN0IChib29sIGFsd2F5c190cnVzdCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAi My41MCIpXQotKwkJcHVibGljIGJvb2wgc2V0X2tleV90cnVzdF9zeW5jIChzdHJpbmcga2V5aWQs IENhbWVsLkdwZ1RydXN0IHRydXN0LCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51 bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNDYiKV0KLSsJ CXB1YmxpYyB2b2lkIHNldF9sb2NhdGVfa2V5cyAoYm9vbCBsb2NhdGVfa2V5cyk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMy4yMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3ByZWZlcl9pbmxpbmUg KGJvb2wgcHJlZmVyX2lubGluZSk7Ci0gCQlwdWJsaWMgYm9vbCBhbHdheXNfdHJ1c3QgeyBnZXQ7 IHNldCBjb25zdHJ1Y3Q7IH0KLSsJCXB1YmxpYyBib29sIGxvY2F0ZV9rZXlzIHsgZ2V0OyBzZXQg Y29uc3RydWN0OyB9Ci0gCQlwdWJsaWMgYm9vbCBwcmVmZXJfaW5saW5lIHsgZ2V0OyBzZXQgY29u c3RydWN0OyB9Ci0gCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVs LmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19i b3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjYW1lbF9ncGdfa2V5X2luZm9fZ2V0X3R5cGUgKCkiKV0K LSsJW0NvbXBhY3RdCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIzLjUwIildCi0rCXB1YmxpYyBjbGFz cyBHcGdLZXlJbmZvIHsKLSsJCXB1YmxpYyBDYW1lbC5HcGdLZXlJbmZvPyBjb3B5ICgpOwotKwkJ cHVibGljIHZvaWQgZnJlZSAoKTsKLSsJCXB1YmxpYyBpbnQ2NCBnZXRfY3JlYXRpb25fZGF0ZSAo KTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZmluZ2VycHJpbnQgKCk7Ci0rCQlwdWJs aWMgdW5vd25lZCBzdHJpbmcgZ2V0X2lkICgpOwotKwkJcHVibGljIENhbWVsLkdwZ1RydXN0IGdl dF90cnVzdCAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdMaWIuU0xpc3Q8c3RyaW5nPiBnZXRfdXNl cl9pZHMgKCk7Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVs LmgiLCB0eXBlX2lkID0gImNhbWVsX2h0bWxfcGFyc2VyX2dldF90eXBlICgpIildCi0gCXB1Ymxp YyBjbGFzcyBIVE1MUGFyc2VyIDogR0xpYi5PYmplY3QgewotIAkJW0NDb2RlIChoYXNfY29uc3Ry dWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotQEAgLTc4MSwxNiArNzU3LDI0IEBAIG5hbWVzcGFjZSBD YW1lbCB7Ci0gCQlwdWJsaWMgQ2FtZWwuSGVhZGVyUGFyYW0/IG5leHQ7Ci0gCQlwdWJsaWMgc3Ry aW5nIHZhbHVlOwotIAkJW0NDb2RlIChjbmFtZSA9ICJjYW1lbF9oZWFkZXJfcGFyYW1fbGlzdF9k ZWNvZGUiKV0KLSsJCVtWZXJzaW9uIChyZXBsYWNlbWVudCA9ICJIZWFkZXJQYXJhbS5saXN0X2Rl Y29kZSIpXQotIAkJcHVibGljIHN0YXRpYyBDYW1lbC5IZWFkZXJQYXJhbT8gZGVjb2RlIChzdHJp bmc/IEBpbik7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gImNhbWVsX2hlYWRlcl9wYXJhbV9saXN0X2Zv cm1hdCIpXQotKwkJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0gIkhlYWRlclBhcmFtLmxpc3RfZm9y bWF0IildCi0gCQlwdWJsaWMgc3RyaW5nIGZvcm1hdCAoKTsKLSAJCVtDQ29kZSAoY25hbWUgPSAi Y2FtZWxfaGVhZGVyX3BhcmFtX2xpc3RfZm9ybWF0X2FwcGVuZCIsIGluc3RhbmNlX3BvcyA9IDEu NSldCi0rCQlbVmVyc2lvbiAocmVwbGFjZW1lbnQgPSAiSGVhZGVyUGFyYW0ubGlzdF9mb3JtYXRf YXBwZW5kIildCi0gCQlwdWJsaWMgdm9pZCBmb3JtYXRfYXBwZW5kIChHTGliLlN0cmluZ0J1aWxk ZXIgQG91dCk7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gImNhbWVsX2hlYWRlcl9wYXJhbV9saXN0X2Zy ZWUiKV0KLSAJCVtEZXN0cm95c0luc3RhbmNlXQotKwkJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0g IkhlYWRlclBhcmFtLmxpc3RfZnJlZSIpXQotIAkJcHVibGljIHZvaWQgZnJlZSAoKTsKLSAJCVtD Q29kZSAoY25hbWUgPSAiY2FtZWxfaGVhZGVyX3BhcmFtIildCi0gCQlwdWJsaWMgdW5vd25lZCBz dHJpbmcgZ2V0X3ZhbHVlIChzdHJpbmcgbmFtZSk7Ci0rCQlwdWJsaWMgc3RhdGljIHZvaWQqIGxp c3RfZGVjb2RlIChzdHJpbmc/IEBpbik7Ci0rCQlwdWJsaWMgc3RhdGljIHN0cmluZyBsaXN0X2Zv cm1hdCAodm9pZCogQHBhcmFtcyk7Ci0rCQlwdWJsaWMgc3RhdGljIHZvaWQgbGlzdF9mb3JtYXRf YXBwZW5kIChHTGliLlN0cmluZ0J1aWxkZXIgQG91dCwgdm9pZCogQHBhcmFtcyk7Ci0rCQlwdWJs aWMgc3RhdGljIHZvaWQgbGlzdF9mcmVlICh2b2lkKiBAcGFyYW1zKTsKLSAJfQotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfaW5k ZXhfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIEluZGV4IDogR0xpYi5PYmplY3Qgewot QEAgLTg0MiwxMyArODI2LDE1IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlbQ0NvZGUgKGhhc19j b25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwdWJsaWMgSW50ZXJuZXRBZGRyZXNzICgp OwotIAkJcHVibGljIGludCBhZGQgKHN0cmluZyBuYW1lLCBzdHJpbmcgYWRkcmVzcyk7Ci0tCQlw dWJsaWMgc3RhdGljIHN0cmluZyBlbmNvZGVfYWRkcmVzcyAoaW50IGxlbiwgc3RyaW5nIG5hbWUs IHN0cmluZyBhZGRyKTsKLSsJCXB1YmxpYyBzdGF0aWMgc3RyaW5nIGVuY29kZV9hZGRyZXNzIChp bnQ/IGxlbiwgc3RyaW5nIG5hbWUsIHN0cmluZyBhZGRyKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIzLjE2IildCi0gCQlwdWJsaWMgdm9pZCBlbnN1cmVfYXNjaWlfZG9tYWlucyAoKTsKLSAJCXB1 YmxpYyBpbnQgZmluZF9hZGRyZXNzIChzdHJpbmcgYWRkcmVzcywgb3V0IHVub3duZWQgc3RyaW5n PyBuYW1lcCk7Ci0gCQlwdWJsaWMgaW50IGZpbmRfbmFtZSAoc3RyaW5nIG5hbWUsIG91dCB1bm93 bmVkIHN0cmluZz8gYWRkcmVzc3ApOwotIAkJcHVibGljIHN0YXRpYyBzdHJpbmcgZm9ybWF0X2Fk ZHJlc3MgKHN0cmluZyBuYW1lLCBzdHJpbmcgYWRkcik7Ci0gCQlwdWJsaWMgYm9vbCBAZ2V0IChp bnQgaW5kZXgsIG91dCB1bm93bmVkIHN0cmluZz8gbmFtZXAsIG91dCB1bm93bmVkIHN0cmluZz8g YWRkcmVzc3ApOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNDQiKV0KLSsJCXB1YmxpYyBib29s IHNhbml0aXplX2FzY2lpX2RvbWFpbiAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfa2V5X2ZpbGVfZ2V0X3R5cGUg KCkiKV0KLSAJcHVibGljIGNsYXNzIEtleUZpbGUgOiBHTGliLk9iamVjdCB7Ci1AQCAtOTA3LDgg Kzg5Myw4IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIp XQotIAkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBDYW1lbC5OYW1lVmFsdWVBcnJheSBnZXRfaGVh ZGVycyAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcmVtb3ZlX2hlYWRlciAoc3RyaW5nIG5h bWUpOwotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzZXRfY29udGVudCAoQ2FtZWwuRGF0YVdyYXBw ZXIgY29udGVudCk7Ci0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNldF9oZWFkZXIgKHN0cmluZyBu YW1lLCBzdHJpbmcgdmFsdWUpOwotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBzZXRfY29udGVudCAo Q2FtZWwuRGF0YVdyYXBwZXI/IGNvbnRlbnQpOwotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBzZXRf aGVhZGVyIChzdHJpbmcgbmFtZSwgc3RyaW5nPyB2YWx1ZSk7Ci0gCQlwdWJsaWMgQ2FtZWwuRGF0 YVdyYXBwZXIgY29udGVudCB7IGdldDsgc2V0OyB9Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLUBAIC05MzYs NyArOTIyLDcgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9m dW5jdGlvbiA9IGZhbHNlKV0KLSAJCXB1YmxpYyBNZXNzYWdlQ29udGVudEluZm8gKCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotLQkJcHVibGljIENhbWVsLk1lc3NhZ2VDb250ZW50 SW5mbyBjb3B5ICgpOwotKwkJcHVibGljIENhbWVsLk1lc3NhZ2VDb250ZW50SW5mbz8gY29weSAo KTsKLSAJCXB1YmxpYyB2b2lkIGR1bXAgKGludCBkZXB0aCk7Ci0gCQlwdWJsaWMgdm9pZCBmcmVl ICgpOwotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotQEAgLTk2 Miw3ICs5NDgsNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMu MjQiKV0KLSAJCXB1YmxpYyBHTGliLkFycmF5PHVpbnQ2ND4/IGR1cF9yZWZlcmVuY2VzICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIENhbWVsLk5h bWVkRmxhZ3MgZHVwX3VzZXJfZmxhZ3MgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBDYW1lbC5OYW1l ZEZsYWdzPyBkdXBfdXNlcl9mbGFncyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQyIild Ci0gCQlwdWJsaWMgc3RyaW5nPyBkdXBfdXNlcl9oZWFkZXIgKHN0cmluZyBuYW1lKTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIzLjQyIildCi1AQCAtOTcxLDggKzk1NywxNSBAQCBuYW1lc3BhY2Ug Q2FtZWwgewotIAkJcHVibGljIHN0cmluZz8gZHVwX3VzZXJfdGFnIChzdHJpbmcgbmFtZSk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotIAkJcHVibGljIHZpcnR1YWwgQ2FtZWwuTmFt ZVZhbHVlQXJyYXk/IGR1cF91c2VyX3RhZ3MgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41 Ny4xIildCi0rCQlwdWJsaWMgc3RyaW5nIGVuY29kZV91c2VyX2ZsYWdzICgpOwotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwkJcHVibGljIHN0cmluZyBlbmNvZGVfdXNlcl90YWdz ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLSAJCXB1YmxpYyB2b2lkIGZyZWV6 ZV9ub3RpZmljYXRpb25zICgpOwotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0g ZmFsc2UpXQotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTQiKV0KLSsJCXB1YmxpYyBNZXNzYWdl SW5mby5mcm9tX21lc3NhZ2UgKENhbWVsLkZvbGRlclN1bW1hcnk/IHN1bW1hcnksIENhbWVsLk1p bWVNZXNzYWdlIG1lc3NhZ2UpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLSAJCXB1 YmxpYyBib29sIGdldF9hYm9ydF9ub3RpZmljYXRpb25zICgpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjMuMjQiKV0KLUBAIC0xMDI0LDcgKzEwMTcsNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2Ft ZWwuTmFtZVZhbHVlQXJyYXk/IGdldF91c2VyX3RhZ3MgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMy4yNCIpXQotLQkJcHVibGljIHZpcnR1YWwgYm9vbCBsb2FkIChDYW1lbC5NSVJlY29yZD8g cmVjb3JkLCBzdHJpbmcgYmRhdGFfcHRyKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgbG9hZCAo Q2FtZWwuU3RvcmVEQk1lc3NhZ2VSZWNvcmQgcmVjb3JkLCBzdHJpbmcgYmRhdGFfcHRyKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIzLjI0IildCi0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgcG9v bGR1cF91aWQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotQEAgLTEwMzQsNyAr MTAyNyw3IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIp XQotIAkJcHVibGljIENhbWVsLkZvbGRlclN1bW1hcnk/IHJlZl9zdW1tYXJ5ICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIGJvb2wgc2F2ZSAoQ2Ft ZWwuTUlSZWNvcmQ/IHJlY29yZCwgR0xpYi5TdHJpbmdCdWlsZGVyIGJkYXRhX3N0cik7Ci0rCQlw dWJsaWMgdmlydHVhbCBib29sIHNhdmUgKENhbWVsLlN0b3JlREJNZXNzYWdlUmVjb3JkIHJlY29y ZCwgR0xpYi5TdHJpbmdCdWlsZGVyIGJkYXRhX3N0cik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi My4yNCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2Fib3J0X25vdGlmaWNhdGlvbnMgKGJvb2wgYWJv cnRfbm90aWZpY2F0aW9ucyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotQEAgLTEx NTUsOCArMTE0OCwxMiBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJcHVibGljIHZvaWQgYmFja3Vw IChbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJsZW5ndGgiLCBhcnJheV9sZW5ndGhfcG9z ID0gMS4xLCBhcnJheV9sZW5ndGhfdHlwZSA9ICJnc2l6ZSIpXSB1aW50OFtdIGRhdGEpOwotIAkJ cHVibGljIHZpcnR1YWwgdm9pZCBjb21wbGV0ZSAoW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUg PSAibGVuIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDEuNSwgYXJyYXlfbGVuZ3RoX3R5cGUgPSAiZ3Np emUiKV0gdWludDhbXSBAaW4sIHNpemVfdCBwcmVzcGFjZSwgW0NDb2RlIChhcnJheV9sZW5ndGhf Y25hbWUgPSAib3V0bGVuIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDMuNSwgYXJyYXlfbGVuZ3RoX3R5 cGUgPSAiZ3NpemUiKV0gb3V0IHVpbnQ4W10gQG91dCwgb3V0IHNpemVfdCBvdXRwcmVzcGFjZSk7 Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGZpbHRlciAoW0NDb2RlIChhcnJheV9sZW5ndGhfY25h bWUgPSAibGVuIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDEuNSwgYXJyYXlfbGVuZ3RoX3R5cGUgPSAi Z3NpemUiKV0gdWludDhbXSBAaW4sIHNpemVfdCBwcmVzcGFjZSwgW0NDb2RlIChhcnJheV9sZW5n dGhfY25hbWUgPSAib3V0bGVuIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDMuNSwgYXJyYXlfbGVuZ3Ro X3R5cGUgPSAiZ3NpemUiKV0gb3V0IHVpbnQ4W10gQG91dCwgb3V0IHNpemVfdCBvdXRwcmVzcGFj ZSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41MiIpXQotKwkJcHVibGljIGJvb2wgZ2V0X3Jl cXVlc3Rfc3RvcCAoKTsKLSAJCXB1YmxpYyBzdGF0aWMgQ2FtZWwuTWltZUZpbHRlciBAbmV3ICgp OwotIAkJcHVibGljIHZpcnR1YWwgdm9pZCByZXNldCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIzLjUyIildCi0rCQlwdWJsaWMgdm9pZCBzZXRfcmVxdWVzdF9zdG9wIChib29sIHJlcXVlc3Rf c3RvcCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfc2l6ZSAoc2l6ZV90IHNpemUsIGludCBrZWVwKTsK LSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVf aWQgPSAiY2FtZWxfbWltZV9maWx0ZXJfYmFzaWNfZ2V0X3R5cGUgKCkiKV0KLUBAIC0xMjI4LDYg KzEyMjUsMTggQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9m dW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNhbWVsTWltZUZpbHRlcioiKV0KLSAJCXB1YmxpYyBN aW1lRmlsdGVyUGdwICgpOwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1l bC9jYW1lbC5oIiwgdHlwZV9pZCA9ICJjYW1lbF9taW1lX2ZpbHRlcl9wcmV2aWV3X2dldF90eXBl ICgpIildCi0rCXB1YmxpYyBjbGFzcyBNaW1lRmlsdGVyUHJldmlldyA6IENhbWVsLk1pbWVGaWx0 ZXIgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAi Q2FtZWxNaW1lRmlsdGVyKiIpXQotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTIiKV0KLSsJCXB1 YmxpYyBNaW1lRmlsdGVyUHJldmlldyAodWludCBsaW1pdCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMy41MiIpXQotKwkJcHVibGljIHVpbnQgZ2V0X2xpbWl0ICgpOwotKwkJW1ZlcnNpb24gKHNp bmNlID0gIjMuNTIiKV0KLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZz8gZ2V0X3RleHQgKCk7Ci0r CQlbVmVyc2lvbiAoc2luY2UgPSAiMy41MiIpXQotKwkJcHVibGljIHZvaWQgc2V0X2xpbWl0ICh1 aW50IGxpbWl0KTsKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2Ft ZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfbWltZV9maWx0ZXJfcHJvZ3Jlc3NfZ2V0X3R5cGUgKCki KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjIuMjQiKV0KLSAJcHVibGljIGNsYXNzIE1pbWVGaWx0 ZXJQcm9ncmVzcyA6IENhbWVsLk1pbWVGaWx0ZXIgewotQEAgLTEyNjMsOSArMTI3Miw5IEBAIG5h bWVzcGFjZSBDYW1lbCB7Ci0gCQlwdWJsaWMgdm9pZCBkdW1wIChpbnQgYm9keSk7Ci0gCQlwdWJs aWMgdm9pZCBlbmNvZGVfOGJpdF9wYXJ0cyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjM0 IildCi0tCQlwdWJsaWMgdm9pZCBmb3JlYWNoX3BhcnQgKCk7Ci0tCQlwdWJsaWMgbG9uZyBnZXRf ZGF0ZSAob3V0IGludCBvZmZzZXQpOwotLQkJcHVibGljIGxvbmcgZ2V0X2RhdGVfcmVjZWl2ZWQg KG91dCBpbnQgb2Zmc2V0KTsKLSsJCXB1YmxpYyB2b2lkIGZvcmVhY2hfcGFydCAoQ2FtZWwuRm9y ZWFjaFBhcnRGdW5jIGNhbGxiYWNrKTsKLSsJCXB1YmxpYyB0aW1lX3QgZ2V0X2RhdGUgKG91dCBp bnQgb2Zmc2V0KTsKLSsJCXB1YmxpYyB0aW1lX3QgZ2V0X2RhdGVfcmVjZWl2ZWQgKG91dCBpbnQg b2Zmc2V0KTsKLSAJCXB1YmxpYyB1bm93bmVkIENhbWVsLkludGVybmV0QWRkcmVzcz8gZ2V0X2Zy b20gKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmc/IGdldF9tZXNzYWdlX2lkICgpOwotIAkJ cHVibGljIHVub3duZWQgQ2FtZWwuTWltZVBhcnQ/IGdldF9wYXJ0X2J5X2NvbnRlbnRfaWQgKHN0 cmluZyBjb250ZW50X2lkKTsKLUBAIC0xMjc3LDcgKzEyODYsNyBAQCBuYW1lc3BhY2UgQ2FtZWwg ewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMjgiKV0KLSAJCXB1YmxpYyBib29sIGhhc19hdHRh Y2htZW50ICgpOwotIAkJcHVibGljIHZvaWQgc2V0X2Jlc3RfZW5jb2RpbmcgKENhbWVsLkJlc3Rl bmNSZXF1aXJlZCByZXF1aXJlZCwgQ2FtZWwuQmVzdGVuY0VuY29kaW5nIGVuY3R5cGUpOwotLQkJ cHVibGljIHZvaWQgc2V0X2RhdGUgKGxvbmcgZGF0ZSwgaW50IG9mZnNldCk7Ci0rCQlwdWJsaWMg dm9pZCBzZXRfZGF0ZSAodGltZV90IGRhdGUsIGludCBvZmZzZXQpOwotIAkJcHVibGljIHZvaWQg c2V0X2Zyb20gKENhbWVsLkludGVybmV0QWRkcmVzcz8gZnJvbSk7Ci0gCQlwdWJsaWMgdm9pZCBz ZXRfbWVzc2FnZV9pZCAoc3RyaW5nPyBtZXNzYWdlX2lkKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9y ZWNpcGllbnRzIChzdHJpbmcgdHlwZSwgQ2FtZWwuSW50ZXJuZXRBZGRyZXNzPyByZWNpcGllbnRz KTsKLUBAIC0xMjkxLDE4ICsxMzAwLDE4IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlwdWJsaWMg TWltZVBhcnNlciAoKTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGNv bnRlbnQgKCk7Ci0tCQlwdWJsaWMgQ2FtZWwuQ29udGVudFR5cGUgY29udGVudF90eXBlICgpOwot KwkJcHVibGljIENhbWVsLkNvbnRlbnRUeXBlPyBjb250ZW50X3R5cGUgKCk7Ci0gCQlwdWJsaWMg dm9pZCBkcm9wX3N0ZXAgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotLQkJcHVi bGljIENhbWVsLk5hbWVWYWx1ZUFycmF5IGR1cF9oZWFkZXJzICgpOwotKwkJcHVibGljIENhbWVs Lk5hbWVWYWx1ZUFycmF5PyBkdXBfaGVhZGVycyAoKTsKLSAJCXB1YmxpYyBpbnQgZXJybm8gKCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4yMiIpXQotIAkJcHVibGljIGludCBmaWx0ZXJfYWRk IChDYW1lbC5NaW1lRmlsdGVyIG1mKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjIyIildCi0g CQlwdWJsaWMgdm9pZCBmaWx0ZXJfcmVtb3ZlIChpbnQgaWQpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjIuMjIiKV0KLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBmcm9tX2xpbmUgKCk7Ci0tCQlw dWJsaWMgdW5vd25lZCBzdHJpbmcgaGVhZGVyIChzdHJpbmcgbmFtZSwgaW50IG9mZnNldCk7Ci0r CQlwdWJsaWMgdW5vd25lZCBzdHJpbmc/IGZyb21fbGluZSAoKTsKLSsJCXB1YmxpYyB1bm93bmVk IHN0cmluZz8gaGVhZGVyIChzdHJpbmcgbmFtZSwgaW50IG9mZnNldCk7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMy4xMiIpXQotIAkJcHVibGljIHZvaWQgaW5pdF93aXRoX2J5dGVzIChHTGliLkJ5 dGVzIGJ5dGVzKTsKLSAJCXB1YmxpYyBpbnQgaW5pdF93aXRoX2ZkIChpbnQgZmQpOwotQEAgLTEz MTQsOSArMTMyMyw5IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVi bGljIHZpcnR1YWwgdm9pZCBwYXJ0ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMjIiKV0K LS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBwb3N0ZmFjZSAoKTsKLSsJCXB1YmxpYyB1bm93bmVk IHN0cmluZz8gcG9zdGZhY2UgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4yMiIpXQotLQkJ cHVibGljIHVub3duZWQgc3RyaW5nIHByZWZhY2UgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJp bmc/IHByZWZhY2UgKCk7Ci0gCQlwdWJsaWMgdm9pZCBwdXNoX3N0YXRlIChDYW1lbC5NaW1lUGFy c2VyU3RhdGUgbmV3c3RhdGUsIHN0cmluZyBib3VuZGFyeSk7Ci0gCQlwdWJsaWMgc3NpemVfdCBy ZWFkIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gb3V0IHVpbnQ4W10gZGF0YWJ1ZmZl ciwgc3NpemVfdCBsZW4pIHRocm93cyBHTGliLkVycm9yOwotIAkJcHVibGljIHZvaWQgc2Nhbl9m cm9tIChib29sIHNjYW5fZnJvbSk7Ci1AQCAtMTM0NywyNyArMTM1NiwyOSBAQCBuYW1lc3BhY2Ug Q2FtZWwgewotIAkJcHVibGljIGFzeW5jIGJvb2wgY29uc3RydWN0X2Zyb21fcGFyc2VyIChDYW1l bC5NaW1lUGFyc2VyIHBhcnNlciwgaW50IGlvX3ByaW9yaXR5LCBHTGliLkNhbmNlbGxhYmxlPyBj YW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjMuMCIpXQotIAkJcHVibGljIHZpcnR1YWwgYm9vbCBjb25zdHJ1Y3RfZnJvbV9wYXJzZXJf c3luYyAoQ2FtZWwuTWltZVBhcnNlciBwYXJzZXIsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxh YmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41 MiIpXQotKwkJcHVibGljIHZpcnR1YWwgc3RyaW5nPyBnZW5lcmF0ZV9wcmV2aWV3IChDYW1lbC5H ZW5lcmF0ZVByZXZpZXdGdW5jPyBmdW5jKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjMwIild Ci0tCQlwdWJsaWMgdW5vd25lZCBDYW1lbC5Db250ZW50RGlzcG9zaXRpb24gZ2V0X2NvbnRlbnRf ZGlzcG9zaXRpb24gKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2NvbnRlbnRfaWQg KCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBHTGliLkxpc3Q8c3RyaW5nPiBnZXRfY29udGVudF9sYW5n dWFnZXMgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2NvbnRlbnRfbG9jYXRpb24g KCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2NvbnRlbnRfbWQ1ICgpOwotLQkJcHVi bGljIHVub3duZWQgQ2FtZWwuQ29udGVudFR5cGUgZ2V0X2NvbnRlbnRfdHlwZSAoKTsKLS0JCXB1 YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZGVzY3JpcHRpb24gKCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X2Rpc3Bvc2l0aW9uICgpOwotKwkJcHVibGljIHVub3duZWQgQ2FtZWwuQ29u dGVudERpc3Bvc2l0aW9uPyBnZXRfY29udGVudF9kaXNwb3NpdGlvbiAoKTsKLSsJCXB1YmxpYyB1 bm93bmVkIHN0cmluZz8gZ2V0X2NvbnRlbnRfaWQgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHTGli Lkxpc3Q8c3RyaW5nPj8gZ2V0X2NvbnRlbnRfbGFuZ3VhZ2VzICgpOwotKwkJcHVibGljIHVub3du ZWQgc3RyaW5nPyBnZXRfY29udGVudF9sb2NhdGlvbiAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0 cmluZz8gZ2V0X2NvbnRlbnRfbWQ1ICgpOwotKwkJcHVibGljIHVub3duZWQgQ2FtZWwuQ29udGVu dFR5cGU/IGdldF9jb250ZW50X3R5cGUgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmc/IGdl dF9kZXNjcmlwdGlvbiAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZz8gZ2V0X2Rpc3Bvc2l0 aW9uICgpOwotIAkJcHVibGljIENhbWVsLlRyYW5zZmVyRW5jb2RpbmcgZ2V0X2VuY29kaW5nICgp OwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9maWxlbmFtZSAoKTsKLSsJCXB1YmxpYyB1 bm93bmVkIHN0cmluZz8gZ2V0X2ZpbGVuYW1lICgpOwotIAkJcHVibGljIHZvaWQgc2V0X2NvbnRl bnQgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gImxlbmd0aCIsIGFycmF5X2xlbmd0aF9w b3MgPSAxLjUpXSB1aW50OFtdPyBkYXRhLCBzdHJpbmc/IHR5cGUpOwotLQkJcHVibGljIHZvaWQg c2V0X2NvbnRlbnRfaWQgKHN0cmluZyBjb250ZW50aWQpOwotLQkJcHVibGljIHZvaWQgc2V0X2Nv bnRlbnRfbGFuZ3VhZ2VzIChHTGliLkxpc3Q8c3RyaW5nPiBjb250ZW50X2xhbmd1YWdlcyk7Ci0t CQlwdWJsaWMgdm9pZCBzZXRfY29udGVudF9sb2NhdGlvbiAoc3RyaW5nIGxvY2F0aW9uKTsKLS0J CXB1YmxpYyB2b2lkIHNldF9jb250ZW50X21kNSAoc3RyaW5nIG1kNXN1bSk7Ci0tCQlwdWJsaWMg dm9pZCBzZXRfY29udGVudF90eXBlIChzdHJpbmcgY29udGVudF90eXBlKTsKLSsJCXB1YmxpYyB2 b2lkIHNldF9jb250ZW50X2lkIChzdHJpbmc/IGNvbnRlbnRpZCk7Ci0rCQlwdWJsaWMgdm9pZCBz ZXRfY29udGVudF9sYW5ndWFnZXMgKG93bmVkIEdMaWIuTGlzdDxzdHJpbmc+PyBjb250ZW50X2xh bmd1YWdlcyk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfY29udGVudF9sb2NhdGlvbiAoc3RyaW5nPyBs b2NhdGlvbik7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfY29udGVudF9tZDUgKHN0cmluZz8gbWQ1c3Vt KTsKLSsJCXB1YmxpYyB2b2lkIHNldF9jb250ZW50X3R5cGUgKHN0cmluZz8gY29udGVudF90eXBl KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9kZXNjcmlwdGlvbiAoc3RyaW5nIGRlc2NyaXB0aW9uKTsK LS0JCXB1YmxpYyB2b2lkIHNldF9kaXNwb3NpdGlvbiAoc3RyaW5nIGRpc3Bvc2l0aW9uKTsKLSsJ CXB1YmxpYyB2b2lkIHNldF9kaXNwb3NpdGlvbiAoc3RyaW5nPyBkaXNwb3NpdGlvbik7Ci0gCQlw dWJsaWMgdm9pZCBzZXRfZW5jb2RpbmcgKENhbWVsLlRyYW5zZmVyRW5jb2RpbmcgZW5jb2Rpbmcp OwotLQkJcHVibGljIHZvaWQgc2V0X2ZpbGVuYW1lIChzdHJpbmcgZmlsZW5hbWUpOwotKwkJcHVi bGljIHZvaWQgc2V0X2ZpbGVuYW1lIChzdHJpbmc/IGZpbGVuYW1lKTsKLSAJCXB1YmxpYyBzdHJp bmcgY29udGVudF9pZCB7IGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgc3RyaW5nIGNvbnRlbnRfbWQ1 IHsgZ2V0OyBzZXQ7IH0KLSAJCXB1YmxpYyBzdHJpbmcgZGVzY3JpcHRpb24geyBnZXQ7IHNldDsg fQotQEAgLTEzODQsOSArMTM5NSwxMSBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJcHVibGljIE11 bHRpcGFydCAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgYWRkX3BhcnQgKENhbWVsLk1pbWVQ YXJ0IHBhcnQpOwotIAkJcHVibGljIHZpcnR1YWwgaW50IGNvbnN0cnVjdF9mcm9tX3BhcnNlciAo Q2FtZWwuTWltZVBhcnNlciBwYXJzZXIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTIiKV0K LSsJCXB1YmxpYyB2aXJ0dWFsIHN0cmluZz8gZ2VuZXJhdGVfcHJldmlldyAoQ2FtZWwuR2VuZXJh dGVQcmV2aWV3RnVuYz8gZnVuYyk7Ci0gCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIHN0cmluZyBn ZXRfYm91bmRhcnkgKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCB1aW50IGdldF9udW1iZXIgKCk7Ci0t CQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENhbWVsLk1pbWVQYXJ0IGdldF9wYXJ0ICh1aW50IGlu ZGV4KTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2FtZWwuTWltZVBhcnQ/IGdldF9wYXJ0 ICh1aW50IGluZGV4KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjEyIildCi0gCQlwdWJsaWMg dW5vd25lZCBzdHJpbmcgZ2V0X3Bvc3RmYWNlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMu MTIiKV0KLUBAIC0xNTA0LDkgKzE1MTcsOSBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjMuMjIiKV0KLSAJCXB1YmxpYyBib29sIGNhbl9kb3duc3luYyAoKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIzLjAiKV0KLS0JCXB1YmxpYyBhc3luYyBib29sIGRvd25zeW5j IChzdHJpbmcgZXhwcmVzc2lvbiwgaW50IGlvX3ByaW9yaXR5LCBHTGliLkNhbmNlbGxhYmxlPyBj YW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIGFzeW5jIGJv b2wgZG93bnN5bmMgKHN0cmluZz8gZXhwcmVzc2lvbiwgaW50IGlvX3ByaW9yaXR5LCBHTGliLkNh bmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjMuMCIpXQotLQkJcHVibGljIHZpcnR1YWwgYm9vbCBkb3duc3luY19z eW5jIChzdHJpbmcgZXhwcmVzc2lvbiwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBu dWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgZG93bnN5bmNf c3luYyAoc3RyaW5nPyBleHByZXNzaW9uLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9 IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMzIiKV0K LSAJCXB1YmxpYyBDYW1lbC5UaHJlZVN0YXRlIGdldF9vZmZsaW5lX3N5bmMgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4zMiIpXQotQEAgLTE1NjMsNiArMTU3Niw4IEBAIG5hbWVzcGFjZSBD YW1lbCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9 ICJHQ2FuY2VsbGFibGUqIildCi0gCQlwdWJsaWMgT3BlcmF0aW9uICgpOwotIAkJcHVibGljIHN0 YXRpYyB2b2lkIGNhbmNlbF9hbGwgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41MiIpXQot KwkJcHVibGljIHN0YXRpYyBzdHJpbmc/IGR1cF9tZXNzYWdlIChHTGliLkNhbmNlbGxhYmxlPyBj YW5jZWxsYWJsZSA9IG51bGwpOwotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0g ZmFsc2UsIHR5cGUgPSAiR0NhbmNlbGxhYmxlKiIpXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMu MjQiKV0KLSAJCXB1YmxpYyBPcGVyYXRpb24ucHJveHkgKEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNl bGxhYmxlID0gbnVsbCk7Ci1AQCAtMTYyMSw3ICsxNjM2LDcgQEAgbmFtZXNwYWNlIENhbWVsIHsK LSAJCXB1YmxpYyBzdGF0aWMgdm9pZCBlbmNvZGVfc3RyaW5nIChHTGliLlN0cmluZ0J1aWxkZXIg c3RyaW5nLCBzdHJpbmcgdl9zdHJpbmcpOwotIAkJcHVibGljIHVub3duZWQgc3RyaW5nPyBlcnJv ciAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIENhbWVsLlNFeHBSZXN1bHQ/IGV2YWwgKCk7Ci0tCQlw dWJsaWMgYm9vbCBldmFsdWF0ZV9vY2N1cl90aW1lcyAobG9uZyBzdGFydCwgbG9uZyBlbmQpOwot KwkJcHVibGljIGJvb2wgZXZhbHVhdGVfb2NjdXJfdGltZXMgKHRpbWVfdCBzdGFydCwgdGltZV90 IGVuZCk7Ci0gCQlwdWJsaWMgdm9pZCBmYXRhbF9lcnJvciAoc3RyaW5nIHdoeSwgLi4uKTsKLSAJ CXB1YmxpYyB2b2lkIGlucHV0X2ZpbGUgKGludCBmZCk7Ci0gCQlwdWJsaWMgdm9pZCBpbnB1dF90 ZXh0IChzdHJpbmcgdGV4dCwgaW50IGxlbik7Ci1AQCAtMTYzMyw4ICsxNjQ4LDYgQEAgbmFtZXNw YWNlIENhbWVsIHsKLSAJCXB1YmxpYyB2b2lkIHJlc3VsdHZfZnJlZSAoW0NDb2RlIChhcnJheV9s ZW5ndGhfY25hbWUgPSAiYXJnYyIsIGFycmF5X2xlbmd0aF9wb3MgPSAwLjUpXSBDYW1lbC5TRXhw UmVzdWx0W10gYXJndik7Ci0gCQlwdWJsaWMgaW50IHNldF9zY29wZSAodWludCBzY29wZSk7Ci0g CQlwdWJsaWMgQ2FtZWwuU0V4cFJlc3VsdD8gdGVybV9ldmFsIChDYW1lbC5TRXhwVGVybSB0ZXJt KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjI2IildCi0tCQlwdWJsaWMgc3RhdGljIHN0cmlu ZyB0b19zcWxfc2V4cCAoc3RyaW5nIHNleHApOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgdHlwZV9pZCA9ICJjYW1lbF9zbWltZV9jb250ZXh0X2dl dF90eXBlICgpIildCi0gCXB1YmxpYyBjbGFzcyBTTUlNRUNvbnRleHQgOiBDYW1lbC5DaXBoZXJD b250ZXh0IHsKLUBAIC0xNjQzLDYgKzE2NTYsOCBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJcHVi bGljIHVpbnQzMiBkZXNjcmliZV9wYXJ0IChbQ0NvZGUgKHR5cGUgPSAiX0NhbWVsTWltZVBhcnQq IildIENhbWVsLk1pbWVQYXJ0IHBhcnQpOwotIAkJcHVibGljIHZvaWQgc2V0X2VuY3J5cHRfa2V5 IChib29sIHVzZSwgc3RyaW5nIGtleSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfc2lnbl9tb2RlIChD YW1lbC5TTUlNRVNpZ24gdHlwZSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41MiIpXQotKwkJ cHVibGljIHN0YXRpYyB1bm93bmVkIHN0cmluZz8gdXRpbF9uc3NfZXJyb3JfdG9fc3RyaW5nIChp bnQgbnNzX2Vycm9yX2NvZGUpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj YW1lbC9jYW1lbC5oIiwgdHlwZV9pZCA9ICJjYW1lbF9zYXNsX2dldF90eXBlICgpIildCi0gCXB1 YmxpYyBhYnN0cmFjdCBjbGFzcyBTYXNsIDogR0xpYi5PYmplY3QgewotQEAgLTE2NTIsMTIgKzE2 NjcsMTIgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDYW1l bC5TZXJ2aWNlQXV0aFR5cGU/IGF1dGh0eXBlIChzdHJpbmcgbWVjaGFuaXNtKTsKLSAJCXB1Ymxp YyBzdGF0aWMgR0xpYi5MaXN0PHdlYWsgQ2FtZWwuU2VydmljZUF1dGhUeXBlPz4gYXV0aHR5cGVf bGlzdCAoYm9vbCBpbmNsdWRlX3BsYWluKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjAiKV0K LS0JCXB1YmxpYyBhc3luYyBHTGliLkJ5dGVBcnJheSBjaGFsbGVuZ2UgKEdMaWIuQnl0ZUFycmF5 IHRva2VuLCBpbnQgaW9fcHJpb3JpdHksIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0g bnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgYXN5bmMgR0xpYi5CeXRlQXJyYXk/ IGNoYWxsZW5nZSAoR0xpYi5CeXRlQXJyYXk/IHRva2VuLCBpbnQgaW9fcHJpb3JpdHksIEdMaWIu Q2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMy4wIildCi0gCQlwdWJsaWMgYXN5bmMgc3RyaW5nIGNoYWxsZW5n ZV9iYXNlNjQgKHN0cmluZyB0b2tlbiwgaW50IGlvX3ByaW9yaXR5LCBHTGliLkNhbmNlbGxhYmxl PyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjMuMCIpXQotIAkJcHVibGljIHN0cmluZyBjaGFsbGVuZ2VfYmFzZTY0X3N5bmMgKHN0 cmluZyB0b2tlbiwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3Mg R0xpYi5FcnJvcjsKLS0JCXB1YmxpYyB2aXJ0dWFsIEdMaWIuQnl0ZUFycmF5IGNoYWxsZW5nZV9z eW5jIChHTGliLkJ5dGVBcnJheSB0b2tlbiwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUg PSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyB2aXJ0dWFsIEdMaWIuQnl0ZUFy cmF5PyBjaGFsbGVuZ2Vfc3luYyAoR0xpYi5CeXRlQXJyYXk/IHRva2VuLCBHTGliLkNhbmNlbGxh YmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJW0NDb2RlIChj bmFtZSA9ICJjYW1lbF9zYXNsX25ldyIpXQotIAkJcHVibGljIHN0YXRpYyBDYW1lbC5TYXNsPyBm b3Jfc2VydmljZSAoc3RyaW5nIHNlcnZpY2VfbmFtZSwgc3RyaW5nIG1lY2hhbmlzbSwgQ2FtZWwu U2VydmljZSBzZXJ2aWNlKTsKLSAJCXB1YmxpYyBib29sIGdldF9hdXRoZW50aWNhdGVkICgpOwot QEAgLTE3NjEsMTMgKzE3NzYsMTMgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIzLjYiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgZGlzY29ubmVjdF9zeW5jIChi b29sIGNsZWFuLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBH TGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMTIiKV0KLS0JCXB1YmxpYyBzdHJp bmcgZHVwX2Rpc3BsYXlfbmFtZSAoKTsKLSsJCXB1YmxpYyBzdHJpbmc/IGR1cF9kaXNwbGF5X25h bWUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4xMiIpXQotIAkJcHVibGljIHN0cmluZyBk dXBfcGFzc3dvcmQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yIildCi0gCQlwdWJsaWMg Q2FtZWwuU2VydmljZUNvbm5lY3Rpb25TdGF0dXMgZ2V0X2Nvbm5lY3Rpb25fc3RhdHVzICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMiIpXQotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdl dF9kaXNwbGF5X25hbWUgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmc/IGdldF9kaXNwbGF5 X25hbWUgKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCBzdHJpbmcgZ2V0X25hbWUgKGJvb2wgYnJpZWYp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNCIpXQotIAkJcHVibGljIHVub3duZWQgc3RyaW5n IGdldF9wYXNzd29yZCAoKTsKLUBAIC0xNzg4LDE5ICsxODAzLDE5IEBAIG5hbWVzcGFjZSBDYW1l bCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4xMiIpXQotIAkJcHVibGljIHZvaWQgcXVldWVf dGFzayAoR0xpYi5UYXNrIHRhc2ssIFtDQ29kZSAoc2NvcGUgPSAiYXN5bmMiKV0gR0xpYi5UYXNr VGhyZWFkRnVuYyB0YXNrX2Z1bmMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMTIiKV0KLS0J CXB1YmxpYyBHTGliLlByb3h5UmVzb2x2ZXIgcmVmX3Byb3h5X3Jlc29sdmVyICgpOwotKwkJcHVi bGljIEdMaWIuUHJveHlSZXNvbHZlcj8gcmVmX3Byb3h5X3Jlc29sdmVyICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjMuOCIpXQotIAkJcHVibGljIENhbWVsLlNlc3Npb24gcmVmX3Nlc3Npb24g KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy42IildCi0gCQlwdWJsaWMgQ2FtZWwuU2V0dGlu Z3MgcmVmX3NldHRpbmdzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMiIpXQotLQkJcHVi bGljIHZvaWQgc2V0X2Rpc3BsYXlfbmFtZSAoc3RyaW5nIGRpc3BsYXlfbmFtZSk7Ci0rCQlwdWJs aWMgdm9pZCBzZXRfZGlzcGxheV9uYW1lIChzdHJpbmc/IGRpc3BsYXlfbmFtZSk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMy40IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfcGFzc3dvcmQgKHN0cmlu ZyBwYXNzd29yZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4xMiIpXQotLQkJcHVibGljIHZv aWQgc2V0X3Byb3h5X3Jlc29sdmVyIChHTGliLlByb3h5UmVzb2x2ZXIgcHJveHlfcmVzb2x2ZXIp OwotKwkJcHVibGljIHZvaWQgc2V0X3Byb3h5X3Jlc29sdmVyIChHTGliLlByb3h5UmVzb2x2ZXI/ IHByb3h5X3Jlc29sdmVyKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjIiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9zZXR0aW5ncyAoQ2FtZWwuU2V0dGluZ3Mgc2V0dGluZ3MpOwotKwkJcHVibGlj IHZvaWQgc2V0X3NldHRpbmdzIChDYW1lbC5TZXR0aW5ncz8gc2V0dGluZ3MpOwotIAkJcHVibGlj IENhbWVsLlNlcnZpY2VDb25uZWN0aW9uU3RhdHVzIGNvbm5lY3Rpb25fc3RhdHVzIHsgZ2V0OyB9 Ci0gCQlwdWJsaWMgc3RyaW5nIGRpc3BsYXlfbmFtZSB7IGdldDsgc2V0IGNvbnN0cnVjdDsgfQot IAkJcHVibGljIHN0cmluZyBwYXNzd29yZCB7IGdldDsgc2V0IGNvbnN0cnVjdDsgfQotQEAgLTE4 MTIsNiArMTgyNyw4IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LSAJCXB1YmxpYyBDYW1lbC5TZXR0aW5ncyBzZXR0aW5ncyB7IG93bmVkIGdldDsgc2V0IGNvbnN0 cnVjdDsgfQotIAkJcHVibGljIHN0cmluZyB1aWQgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJW05v QWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgYm9vbCB3aXRoX3Byb3h5X3Jlc29sdmVyIHsgY29u c3RydWN0OyB9Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVs LmgiLCB0eXBlX2lkID0gImNhbWVsX3Nlc3Npb25fZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNs YXNzIFNlc3Npb24gOiBHTGliLk9iamVjdCB7Ci1AQCAtMTgxOSw2ICsxODM2LDggQEAgbmFtZXNw YWNlIENhbWVsIHsKLSAJCXByb3RlY3RlZCBTZXNzaW9uICgpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjMuMiIpXQotIAkJcHVibGljIHZpcnR1YWwgQ2FtZWwuU2VydmljZSBhZGRfc2VydmljZSAo c3RyaW5nIHVpZCwgc3RyaW5nIHByb3RvY29sLCBDYW1lbC5Qcm92aWRlclR5cGUgdHlwZSkgdGhy b3dzIEdMaWIuRXJyb3I7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy40NCIpXQotKwkJcHVibGlj IHZpcnR1YWwgYm9vbCBhZGRyZXNzYm9va19jb250YWluc19zeW5jIChzdHJpbmcgYm9va191aWQs IHN0cmluZyBlbWFpbF9hZGRyZXNzLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51 bGwpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNCIpXQotIAkJ cHVibGljIGFzeW5jIGJvb2wgYXV0aGVudGljYXRlIChDYW1lbC5TZXJ2aWNlIHNlcnZpY2UsIHN0 cmluZz8gbWVjaGFuaXNtLCBpbnQgaW9fcHJpb3JpdHksIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNl bGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi My40IildCi1AQCAtMTgzMCw3ICsxODQ5LDcgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCXB1Ymxp YyB2aXJ0dWFsIGJvb2wgZm9yd2FyZF90b19zeW5jIChDYW1lbC5Gb2xkZXIgZm9sZGVyLCBDYW1l bC5NaW1lTWVzc2FnZSBtZXNzYWdlLCBzdHJpbmcgYWRkcmVzcywgR0xpYi5DYW5jZWxsYWJsZT8g Y2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCXB1YmxpYyB2aXJ0dWFs IHVub3duZWQgQ2FtZWwuRmlsdGVyRHJpdmVyIGdldF9maWx0ZXJfZHJpdmVyIChzdHJpbmcgdHlw ZSwgQ2FtZWwuRm9sZGVyPyBmb3JfZm9sZGVyKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIzLjIiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENhbWVsLkp1bmtGaWx0ZXIg Z2V0X2p1bmtfZmlsdGVyICgpOwotKwkJcHVibGljIHVub3duZWQgQ2FtZWwuSnVua0ZpbHRlcj8g Z2V0X2p1bmtfZmlsdGVyICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMjIiKV0KLSAJCXB1 YmxpYyB1bm93bmVkIEdMaWIuSGFzaFRhYmxlPHN0cmluZyxzdHJpbmc+IGdldF9qdW5rX2hlYWRl cnMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yOCIpXQotQEAgLTE4NTQsMTUgKzE4NzMs MTUgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjIyIildCi0g CQlwdWJsaWMgR0xpYi5OZXR3b3JrTW9uaXRvciByZWZfbmV0d29ya19tb25pdG9yICgpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjMuNiIpXQotLQkJcHVibGljIENhbWVsLlNlcnZpY2UgcmVmX3Nl cnZpY2UgKHN0cmluZyB1aWQpOwotKwkJcHVibGljIENhbWVsLlNlcnZpY2U/IHJlZl9zZXJ2aWNl IChzdHJpbmcgdWlkKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjYiKV0KLS0JCXB1YmxpYyBD YW1lbC5TZXJ2aWNlIHJlZl9zZXJ2aWNlX2J5X3VybCAoQ2FtZWwuVVJMIHVybCwgQ2FtZWwuUHJv dmlkZXJUeXBlIHR5cGUpOwotKwkJcHVibGljIENhbWVsLlNlcnZpY2U/IHJlZl9zZXJ2aWNlX2J5 X3VybCAoQ2FtZWwuVVJMIHVybCwgQ2FtZWwuUHJvdmlkZXJUeXBlIHR5cGUpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjMuMiIpXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCByZW1vdmVfc2Vydmlj ZSAoQ2FtZWwuU2VydmljZSBzZXJ2aWNlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjIiKV0K LSAJCXB1YmxpYyB2b2lkIHJlbW92ZV9zZXJ2aWNlcyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIzLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9qdW5rX2ZpbHRlciAoQ2FtZWwuSnVua0ZpbHRl ciBqdW5rX2ZpbHRlcik7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfanVua19maWx0ZXIgKENhbWVsLkp1 bmtGaWx0ZXI/IGp1bmtfZmlsdGVyKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjIyIildCi0g CQlwdWJsaWMgdm9pZCBzZXRfanVua19oZWFkZXJzIChbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFt ZSA9ICJsZW4iLCBhcnJheV9sZW5ndGhfcG9zID0gMi4xKV0gc3RyaW5nW10gaGVhZGVycywgW0ND b2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHN0cmluZ1tdIHZhbHVlcyk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMy4yMiIpXQotQEAgLTE5MTcsOCArMTkzNiw4IEBAIG5hbWVzcGFjZSBDYW1l bCB7Ci0gCQlwdWJsaWMgR0xpYi5HZW5lcmljQXJyYXk8Q2FtZWwuRm9sZGVyPiBkdXBfb3BlbmVk X2ZvbGRlcnMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy40MCIpXQotIAkJcHVibGljIHZp cnR1YWwgYm9vbCBnZXRfY2FuX2F1dG9fc2F2ZV9jaGFuZ2VzICgpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjMuMjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENhbWVsLkRCIGdldF9kYiAoKTsKLSsJ CVtWZXJzaW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyB1bm93bmVkIENhbWVsLlN0 b3JlREIgZ2V0X2RiICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMjQiKV0KLSAJCXB1Ymxp YyB1aW50MzIgZ2V0X2ZsYWdzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMCIpXQotQEAg LTE5NzQsNiArMTk5MywxMDggQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCVtIYXNFbWl0dGVyXQot IAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgZm9sZGVyX3JlbmFtZWQgKHN0cmluZyBvbGRf bmFtZSwgQ2FtZWwuRm9sZGVySW5mbyBmb2xkZXJfaW5mbyk7Ci0gCX0KLSsJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCB0eXBlX2lkID0gImNhbWVsX3N0b3JlX2Ri X2dldF90eXBlICgpIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJcHVibGlj IGNsYXNzIFN0b3JlREIgOiBDYW1lbC5EQiB7Ci0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVu Y3Rpb24gPSBmYWxzZSldCi0rCQlwdWJsaWMgU3RvcmVEQiAoc3RyaW5nIGZpbGVuYW1lLCBHTGli LkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJ cHVibGljIGJvb2wgY2xlYXJfZm9sZGVyIChzdHJpbmcgZm9sZGVyX25hbWUpIHRocm93cyBHTGli LkVycm9yOwotKwkJcHVibGljIGJvb2wgY291bnRfbWVzc2FnZXMgKHN0cmluZyBmb2xkZXJfbmFt ZSwgQ2FtZWwuU3RvcmVEQkNvdW50S2luZCBraW5kLCBvdXQgdWludDMyIG91dF9jb3VudCkgdGhy b3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgYm9vbCBkZWxldGVfZm9sZGVyIChzdHJpbmcgZm9s ZGVyX25hbWUpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIGJvb2wgZGVsZXRlX21lc3Nh Z2UgKHN0cmluZyBmb2xkZXJfbmFtZSwgc3RyaW5nIHVpZCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0r CQlwdWJsaWMgYm9vbCBkZWxldGVfbWVzc2FnZXMgKHN0cmluZyBmb2xkZXJfbmFtZSwgR0xpYi5H ZW5lcmljQXJyYXk8c3RyaW5nPiB1aWRzKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBH TGliLkdlbmVyaWNBcnJheTx3ZWFrIHN0cmluZz4gZHVwX2RlbGV0ZWRfdWlkcyAoc3RyaW5nIGZv bGRlcl9uYW1lKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBHTGliLkdlbmVyaWNBcnJh eTx3ZWFrIHN0cmluZz4gZHVwX2p1bmtfdWlkcyAoc3RyaW5nIGZvbGRlcl9uYW1lKSB0aHJvd3Mg R0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBzdHJpbmc/IGR1cF9zdHJpbmdfa2V5IChzdHJpbmcga2V5 KTsKLSsJCXB1YmxpYyBHTGliLkhhc2hUYWJsZTx3ZWFrIHN0cmluZyx1aW50MzI+IGR1cF91aWRz X3dpdGhfZmxhZ3MgKHN0cmluZyBmb2xkZXJfbmFtZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlw dWJsaWMgdWludDMyIGdldF9mb2xkZXJfaWQgKHN0cmluZyBmb2xkZXJfbmFtZSk7Ci0rCQlwdWJs aWMgaW50IGdldF9pbnRfa2V5IChzdHJpbmcga2V5LCBpbnQgZGVmX3ZhbHVlKTsKLSsJCXB1Ymxp YyBib29sIHJlYWRfZm9sZGVyIChzdHJpbmcgZm9sZGVyX25hbWUsIG91dCBDYW1lbC5TdG9yZURC Rm9sZGVyUmVjb3JkIG91dF9yZWNvcmQpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIGJv b2wgcmVhZF9tZXNzYWdlIChzdHJpbmcgZm9sZGVyX25hbWUsIHN0cmluZyB1aWQsIG91dCBDYW1l bC5TdG9yZURCTWVzc2FnZVJlY29yZCBvdXRfcmVjb3JkKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJ CXB1YmxpYyBib29sIHJlYWRfbWVzc2FnZXMgKHN0cmluZyBmb2xkZXJfbmFtZSwgQ2FtZWwuU3Rv cmVEQlJlYWRNZXNzYWdlc0Z1bmMgZnVuYykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMg Ym9vbCByZW5hbWVfZm9sZGVyIChzdHJpbmcgb2xkX2ZvbGRlcl9uYW1lLCBzdHJpbmcgbmV3X2Zv bGRlcl9uYW1lKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBib29sIHNldF9pbnRfa2V5 IChzdHJpbmcga2V5LCBpbnQgdmFsdWUpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIGJv b2wgc2V0X3N0cmluZ19rZXkgKHN0cmluZyBrZXksIHN0cmluZyB2YWx1ZSkgdGhyb3dzIEdMaWIu RXJyb3I7Ci0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5nPyB1dGlsX2dldF9jb2x1bW5f Zm9yX2hlYWRlcl9uYW1lIChzdHJpbmcgaGVhZGVyX25hbWUpOwotKwkJcHVibGljIGJvb2wgd3Jp dGVfZm9sZGVyIChzdHJpbmcgZm9sZGVyX25hbWUsIENhbWVsLlN0b3JlREJGb2xkZXJSZWNvcmQg cmVjb3JkKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBib29sIHdyaXRlX21lc3NhZ2Ug KHN0cmluZyBmb2xkZXJfbmFtZSwgQ2FtZWwuU3RvcmVEQk1lc3NhZ2VSZWNvcmQgcmVjb3JkKSB0 aHJvd3MgR0xpYi5FcnJvcjsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2Ft ZWwvY2FtZWwuaCIsIHJlZl9mdW5jdGlvbiA9ICJjYW1lbF9zdG9yZV9pbmZvX3JlZiIsIHR5cGVf aWQgPSAiY2FtZWxfc3RvcmVfaW5mb19nZXRfdHlwZSAoKSIsIHVucmVmX2Z1bmN0aW9uID0gImNh bWVsX3N0b3JlX2luZm9fdW5yZWYiKV0KLSsJW0NvbXBhY3RdCi0rCXB1YmxpYyBjbGFzcyBTdG9y ZUluZm8gewotKwkJcHVibGljIHVpbnQzMiBmbGFnczsKLSsJCXB1YmxpYyBpbnQgcmVmY291bnQ7 Ci0rCQlwdWJsaWMgd2VhayBDYW1lbC5TdG9yZVN1bW1hcnkgc3VtbWFyeTsKLSsJCXB1YmxpYyB1 aW50MzIgdG90YWw7Ci0rCQlwdWJsaWMgdWludDMyIHVucmVhZDsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIzLjQ2IildCi0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X25hbWUgKCk7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMy40NiIpXQotKwkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9w YXRoICgpOwotKwkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjMuNDYiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBzdHJpbmcgbmFtZSAoQ2FtZWwu U3RvcmVTdW1tYXJ5IHN1bW1hcnksIENhbWVsLlN0b3JlSW5mbyBpbmZvKTsKLSsJCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIzLjQ2IildCi0rCQlwdWJs aWMgc3RhdGljIHVub3duZWQgc3RyaW5nIHBhdGggKENhbWVsLlN0b3JlU3VtbWFyeSBzdW1tYXJ5 LCBDYW1lbC5TdG9yZUluZm8gaW5mbyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy40NiIpXQot KwkJcHVibGljIENhbWVsLlN0b3JlSW5mbyBAcmVmICgpOwotKwkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjMuNDYiKV0KLSsJCXB1YmxpYyBzdGF0aWMg dm9pZCBzZXRfc3RyaW5nIChDYW1lbC5TdG9yZVN1bW1hcnkgc3VtbWFyeSwgQ2FtZWwuU3RvcmVJ bmZvIGluZm8sIGludCB0eXBlLCBzdHJpbmcgdmFsdWUpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjMuNDYiKV0KLSsJCXB1YmxpYyB2b2lkIHNldF92YWx1ZSAoaW50IHR5cGUsIHN0cmluZyB2YWx1 ZSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy40NiIpXQotKwkJcHVibGljIHZvaWQgdW5yZWYg KCk7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCB0 eXBlX2lkID0gImNhbWVsX3N0b3JlX3NlYXJjaF9nZXRfdHlwZSAoKSIpXQotKwlbVmVyc2lvbiAo c2luY2UgPSAiMy41Ny4xIildCi0rCXB1YmxpYyBjbGFzcyBTdG9yZVNlYXJjaCA6IEdMaWIuT2Jq ZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCXB1 YmxpYyBTdG9yZVNlYXJjaCAoQ2FtZWwuU3RvcmUgc3RvcmUpOwotKwkJcHVibGljIHZvaWQgYWRk X2ZvbGRlciAoQ2FtZWwuRm9sZGVyIGZvbGRlcik7Ci0rCQlwdWJsaWMgdm9pZCBhZGRfbWF0Y2hf aW5kZXggKENhbWVsLlN0b3JlU2VhcmNoSW5kZXggaW5kZXgpOwotKwkJcHVibGljIGJvb2wgYWRk X21hdGNoX3RocmVhZHNfaXRlbXNfc3luYyAocmVmIEdMaWIuR2VuZXJpY0FycmF5PHdlYWsgQ2Ft ZWwuU3RvcmVTZWFyY2hUaHJlYWRJdGVtPiBpbm91dF9pdGVtcywgR0xpYi5DYW5jZWxsYWJsZT8g Y2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBHTGliLkdl bmVyaWNBcnJheTx3ZWFrIHN0cmluZz4/IGR1cF9hZGRpdGlvbmFsX2NvbHVtbnMgKCk7Ci0rCQlw dWJsaWMgdW5vd25lZCBzdHJpbmc/IGdldF9leHByZXNzaW9uICgpOwotKwkJcHVibGljIGJvb2wg Z2V0X2l0ZW1zX3N5bmMgKG91dCBHTGliLkdlbmVyaWNBcnJheTx3ZWFrIENhbWVsLlN0b3JlU2Vh cmNoSXRlbT8+IG91dF9pdGVtcywgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxs KSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBDYW1lbC5NYXRjaFRocmVhZHNLaW5kIGdl dF9tYXRjaF90aHJlYWRzX2tpbmQgKG91dCBDYW1lbC5Gb2xkZXJUaHJlYWRGbGFncyBvdXRfZmxh Z3MpOwotKwkJcHVibGljIHVub3duZWQgQ2FtZWwuU3RvcmUgZ2V0X3N0b3JlICgpOwotKwkJcHVi bGljIGJvb2wgZ2V0X3VpZHNfc3luYyAoc3RyaW5nIGZvbGRlcl9uYW1lLCBvdXQgR0xpYi5HZW5l cmljQXJyYXk8d2VhayBzdHJpbmc+IG91dF91aWRzLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxs YWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIEdMaWIuR2VuZXJpY0Fy cmF5PHdlYWsgQ2FtZWwuRm9sZGVyPiBsaXN0X2ZvbGRlcnMgKCk7Ci0rCQlwdWJsaWMgR0xpYi5H ZW5lcmljQXJyYXk8d2VhayBDYW1lbC5TdG9yZVNlYXJjaEluZGV4PiBsaXN0X21hdGNoX2luZGV4 ZXMgKCk7Ci0rCQlwdWJsaWMgYm9vbCByZWJ1aWxkX3N5bmMgKEdMaWIuQ2FuY2VsbGFibGU/IGNh bmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgQ2FtZWwuU3Rv cmVTZWFyY2hJbmRleD8gcmVmX3Jlc3VsdF9pbmRleCAoKTsKLSsJCXB1YmxpYyB2b2lkIHJlbW92 ZV9mb2xkZXIgKENhbWVsLkZvbGRlciBmb2xkZXIpOwotKwkJcHVibGljIHZvaWQgcmVtb3ZlX21h dGNoX2luZGV4IChDYW1lbC5TdG9yZVNlYXJjaEluZGV4IGluZGV4KTsKLSsJCXB1YmxpYyB2b2lk IHNldF9hZGRpdGlvbmFsX2NvbHVtbnMgKEdMaWIuR2VuZXJpY0FycmF5PHN0cmluZz4/IGNvbG5h bWVzKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9leHByZXNzaW9uIChzdHJpbmc/IGV4cHJlc3Npb24p OwotKwkJcHVibGljIHZvaWQgc2V0X3Jlc3VsdF9pbmRleCAoQ2FtZWwuU3RvcmVTZWFyY2hJbmRl eD8gaW5kZXgpOwotKwkJcHVibGljIENhbWVsLlN0b3JlIHN0b3JlIHsgZ2V0OyBjb25zdHJ1Y3Q7 IH0KLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIHJl Zl9mdW5jdGlvbiA9ICJjYW1lbF9zdG9yZV9zZWFyY2hfaW5kZXhfcmVmIiwgdHlwZV9pZCA9ICJj YW1lbF9zdG9yZV9zZWFyY2hfaW5kZXhfZ2V0X3R5cGUgKCkiLCB1bnJlZl9mdW5jdGlvbiA9ICJj YW1lbF9zdG9yZV9zZWFyY2hfaW5kZXhfdW5yZWYiKV0KLSsJW0NvbXBhY3RdCi0rCVtWZXJzaW9u IChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJcHVibGljIGNsYXNzIFN0b3JlU2VhcmNoSW5kZXggewot KwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotKwkJcHVibGljIFN0 b3JlU2VhcmNoSW5kZXggKCk7Ci0rCQlwdWJsaWMgdm9pZCBhZGQgKENhbWVsLlN0b3JlIHN0b3Jl LCB1aW50MzIgZm9sZGVyX2lkLCBzdHJpbmcgdWlkKTsKLSsJCXB1YmxpYyB2b2lkIGFwcGx5X21h dGNoX3RocmVhZHMgKEdMaWIuR2VuZXJpY0FycmF5PENhbWVsLlN0b3JlU2VhcmNoVGhyZWFkSXRl bT4gaXRlbXMsIENhbWVsLk1hdGNoVGhyZWFkc0tpbmQga2luZCwgQ2FtZWwuRm9sZGVyVGhyZWFk RmxhZ3MgZmxhZ3MsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCk7Ci0rCQlw dWJsaWMgYm9vbCBjb250YWlucyAoQ2FtZWwuU3RvcmUgc3RvcmUsIHVpbnQzMiBmb2xkZXJfaWQs IHN0cmluZyB1aWQpOwotKwkJcHVibGljIHZvaWQgbW92ZV9mcm9tX2V4aXN0aW5nIChDYW1lbC5T dG9yZVNlYXJjaEluZGV4IHNyYyk7Ci0rCQlwdWJsaWMgQ2FtZWwuU3RvcmVTZWFyY2hJbmRleCBA cmVmICgpOwotKwkJcHVibGljIGJvb2wgcmVtb3ZlIChDYW1lbC5TdG9yZSBzdG9yZSwgdWludDMy IGZvbGRlcl9pZCwgc3RyaW5nIHVpZCk7Ci0rCQlbRGVzdHJveXNJbnN0YW5jZV0KLSsJCXB1Ymxp YyB2b2lkIHVucmVmICgpOwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1l bC9jYW1lbC5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0rCVtDb21wYWN0XQotKwlbVmVyc2lv biAoc2luY2UgPSAiMy41Ny4xIildCi0rCXB1YmxpYyBjbGFzcyBTdG9yZVNlYXJjaFRocmVhZEl0 ZW0gewotKwkJcHVibGljIHVpbnQzMiBnZXRfZm9sZGVyX2lkICgpOwotKwkJcHVibGljIHVpbnQ2 NCBnZXRfbWVzc2FnZV9pZCAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdMaWIuQXJyYXk8dWludDY0 Pj8gZ2V0X3JlZmVyZW5jZXMgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBDYW1lbC5TdG9yZSBnZXRf c3RvcmUgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X3N1YmplY3QgKCk7Ci0rCQlw dWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X3VpZCAoKTsKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfc3RvcmVfc2V0dGlu Z3NfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjMuMiIpXQotIAlwdWJsaWMg Y2xhc3MgU3RvcmVTZXR0aW5ncyA6IENhbWVsLlNldHRpbmdzIHsKLUBAIC0xOTkyLDIwICsyMTEz LDIzIEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCXB1YmxpYyBjbGFzcyBTdG9yZVN1bW1hcnkgOiBH TGliLk9iamVjdCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSld Ci0gCQlwdWJsaWMgU3RvcmVTdW1tYXJ5ICgpOwotLQkJcHVibGljIHZvaWQgYWRkIChDYW1lbC5T dG9yZUluZm8gaW5mbyk7Ci0rCQlwdWJsaWMgdm9pZCBhZGQgKG93bmVkIENhbWVsLlN0b3JlSW5m byBpbmZvKTsKLSAJCXB1YmxpYyB1bm93bmVkIENhbWVsLlN0b3JlSW5mbz8gYWRkX2Zyb21fcGF0 aCAoc3RyaW5nIHBhdGgpOwotLQkJcHVibGljIEdMaWIuR2VuZXJpY0FycmF5PENhbWVsLlN0b3Jl SW5mbz8+IGFycmF5ICgpOwotLQkJcHVibGljIHZvaWQgYXJyYXlfZnJlZSAoR0xpYi5HZW5lcmlj QXJyYXk8Q2FtZWwuU3RvcmVJbmZvPz4gYXJyYXkpOwotKwkJcHVibGljIEdMaWIuR2VuZXJpY0Fy cmF5PENhbWVsLlN0b3JlSW5mbz4gYXJyYXkgKCk7Ci0rCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMy40NiIpXQotKwkJcHVibGljIHZvaWQgYXJyYXlf ZnJlZSAob3duZWQgR0xpYi5HZW5lcmljQXJyYXk8Q2FtZWwuU3RvcmVJbmZvPiBhcnJheSk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMy40IildCi0gCQlwdWJsaWMgYm9vbCBjb25uZWN0X2ZvbGRl cl9zdW1tYXJ5IChzdHJpbmcgcGF0aCwgQ2FtZWwuRm9sZGVyU3VtbWFyeSBmb2xkZXJfc3VtbWFy eSk7Ci0gCQlwdWJsaWMgaW50IGNvdW50ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNCIp XQotIAkJcHVibGljIGJvb2wgZGlzY29ubmVjdF9mb2xkZXJfc3VtbWFyeSAoQ2FtZWwuRm9sZGVy U3VtbWFyeSBmb2xkZXJfc3VtbWFyeSk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDYW1lbC5TdG9yZUlu Zm8/IGluZm9fbmV3ICgpOwotLQkJcHVibGljIENhbWVsLlN0b3JlSW5mbz8gaW5mb19yZWYgKENh bWVsLlN0b3JlSW5mbyBpbmZvKTsKLS0JCXB1YmxpYyB2b2lkIGluZm9fdW5yZWYgKENhbWVsLlN0 b3JlSW5mbyBpbmZvKTsKLSsJCXB1YmxpYyBDYW1lbC5TdG9yZUluZm8gaW5mb19uZXcgKCk7Ci0r CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMy40NiIp XQotKwkJcHVibGljIENhbWVsLlN0b3JlSW5mbyBpbmZvX3JlZiAoQ2FtZWwuU3RvcmVJbmZvIGlu Zm8pOwotKwkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjMuNDYiKV0KLSsJCXB1YmxpYyB2b2lkIGluZm9fdW5yZWYgKG93bmVkIENhbWVsLlN0b3JlSW5m byBpbmZvKTsKLSAJCXB1YmxpYyBpbnQgbG9hZCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENhbWVs LlN0b3JlSW5mbz8gcGF0aCAoc3RyaW5nIHBhdGgpOwotKwkJcHVibGljIENhbWVsLlN0b3JlSW5m bz8gcGF0aCAoc3RyaW5nIHBhdGgpOwotIAkJcHVibGljIHZvaWQgcmVtb3ZlIChDYW1lbC5TdG9y ZUluZm8gaW5mbyk7Ci0gCQlwdWJsaWMgdm9pZCByZW1vdmVfcGF0aCAoc3RyaW5nIHBhdGgpOwot IAkJcHVibGljIGludCBzYXZlICgpOwotQEAgLTIwMTMsMTUgKzIxMzcsMTUgQEAgbmFtZXNwYWNl IENhbWVsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjI0IildCi0gCQlwdWJsaWMgdm9pZCBz b3J0IChHTGliLkNvbXBhcmVEYXRhRnVuYyBjb21wYXJlX2Z1bmMpOwotIAkJW05vV3JhcHBlcl0K LS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc3RvcmVfaW5mb19mcmVlIChDYW1lbC5TdG9yZUluZm8g aW5mbyk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHN0b3JlX2luZm9fZnJlZSAob3duZWQgQ2Ft ZWwuU3RvcmVJbmZvIGluZm8pOwotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHVu b3duZWQgQ2FtZWwuU3RvcmVJbmZvPyBzdG9yZV9pbmZvX2xvYWQgKFtDQ29kZSAodHlwZSA9ICJG SUxFKiIpXSBHTGliLkZpbGVTdHJlYW0gZmlsZSk7Ci0rCQlwdWJsaWMgdmlydHVhbCBDYW1lbC5T dG9yZUluZm8gc3RvcmVfaW5mb19sb2FkIChbQ0NvZGUgKHR5cGUgPSAiRklMRSoiKV0gR0xpYi5G aWxlU3RyZWFtIGZpbGUpOwotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHVub3du ZWQgQ2FtZWwuU3RvcmVJbmZvPyBzdG9yZV9pbmZvX25ldyAoc3RyaW5nIHBhdGgpOwotKwkJcHVi bGljIHZpcnR1YWwgQ2FtZWwuU3RvcmVJbmZvIHN0b3JlX2luZm9fbmV3IChzdHJpbmcgcGF0aCk7 Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgaW50IHN0b3JlX2luZm9fc2F2ZSAo W0NDb2RlICh0eXBlID0gIkZJTEUqIildIEdMaWIuRmlsZVN0cmVhbSBmaWxlLCBDYW1lbC5TdG9y ZUluZm8gaW5mbyk7Ci0gCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzdG9y ZV9pbmZvX3NldF9zdHJpbmcgKENhbWVsLlN0b3JlSW5mbyBpbmZvLCBpbnQgdHlwZSwgc3RyaW5n IHZhbHVlKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc3RvcmVfaW5mb19zZXRfdmFsdWUgKENh bWVsLlN0b3JlSW5mbyBpbmZvLCBpbnQgdHlwZSwgc3RyaW5nIHZhbHVlKTsKLSAJCVtOb1dyYXBw ZXJdCi0gCQlwdWJsaWMgdmlydHVhbCBpbnQgc3VtbWFyeV9oZWFkZXJfbG9hZCAoW0NDb2RlICh0 eXBlID0gIkZJTEUqIildIEdMaWIuRmlsZVN0cmVhbSBmaWxlKTsKLSAJCVtOb1dyYXBwZXJdCi1A QCAtMjE0MCwxMCArMjI2NCwxNCBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlwdWJsaWMgYWJzdHJh Y3QgY2xhc3MgVHJhbnNwb3J0IDogQ2FtZWwuU2VydmljZSwgR0xpYi5Jbml0YWJsZSB7Ci0gCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgVHJh bnNwb3J0ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTAiKV0KLSsJCXB1YmxpYyBib29s IGdldF9yZXF1ZXN0X2RzbiAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjAiKV0KLSAJCXB1 YmxpYyBhc3luYyBib29sIHNlbmRfdG8gKENhbWVsLk1pbWVNZXNzYWdlIG1lc3NhZ2UsIENhbWVs LkFkZHJlc3MgZnJvbSwgQ2FtZWwuQWRkcmVzcyByZWNpcGllbnRzLCBpbnQgaW9fcHJpb3JpdHks IEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCwgb3V0IGJvb2wgb3V0X3NlbnRf bWVzc2FnZV9zYXZlZCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi My4wIildCi0gCQlwdWJsaWMgdmlydHVhbCBib29sIHNlbmRfdG9fc3luYyAoQ2FtZWwuTWltZU1l c3NhZ2UgbWVzc2FnZSwgQ2FtZWwuQWRkcmVzcyBmcm9tLCBDYW1lbC5BZGRyZXNzIHJlY2lwaWVu dHMsIG91dCBib29sIG91dF9zZW50X21lc3NhZ2Vfc2F2ZWQsIEdMaWIuQ2FuY2VsbGFibGU/IGNh bmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMy41MCIpXQotKwkJcHVibGljIHZvaWQgc2V0X3JlcXVlc3RfZHNuIChib29sIHJlcXVlc3Rf ZHNuKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIs IGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlbQ29tcGFjdF0KLUBAIC0yMTcxLDEyICsyMjk5LDEy IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlwdWJsaWMgQ2FtZWwuVVJMIGNvcHkgKCk7Ci0gCQlw dWJsaWMgc3RhdGljIHZvaWQgZGVjb2RlIChzdHJpbmcgcGFydCk7Ci0gCQlwdWJsaWMgc3RhdGlj IHN0cmluZyBkZWNvZGVfcGF0aCAoc3RyaW5nIHBhdGgpOwotLQkJcHVibGljIHN0YXRpYyBzdHJp bmcgZW5jb2RlIChzdHJpbmcgcGFydCwgc3RyaW5nIGVzY2FwZV9leHRyYSk7Ci0rCQlwdWJsaWMg c3RhdGljIHN0cmluZyBlbmNvZGUgKHN0cmluZyBwYXJ0LCBzdHJpbmc/IGVzY2FwZV9leHRyYSk7 Ci0gCQlwdWJsaWMgYm9vbCBlcXVhbCAoQ2FtZWwuVVJMIHUyKTsKLSAJCXB1YmxpYyBzdGF0aWMg Ym9vbCBmaWxlX2VuZCAoc3RyaW5nIEBpbiwgc3RyaW5nIHBvcywgc3RyaW5nIGluZW5kLCBDYW1l bC5VcmxNYXRjaCBtYXRjaCk7Ci0gCQlwdWJsaWMgc3RhdGljIGJvb2wgZmlsZV9zdGFydCAoc3Ry aW5nIEBpbiwgc3RyaW5nIHBvcywgc3RyaW5nIGluZW5kLCBDYW1lbC5VcmxNYXRjaCBtYXRjaCk7 Ci0gCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9w YXJhbSAoc3RyaW5nIG5hbWUpOwotKwkJcHVibGljIHVub3duZWQgc3RyaW5nPyBnZXRfcGFyYW0g KHN0cmluZyBuYW1lKTsKLSAJCXB1YmxpYyB1aW50IGhhc2ggKCk7Ci0gCQlwdWJsaWMgQ2FtZWwu VVJMIG5ld193aXRoX2Jhc2UgKHN0cmluZyB1cmxfc3RyaW5nKTsKLSAJCXB1YmxpYyB2b2lkIHNl dF9hdXRobWVjaCAoc3RyaW5nIGF1dGhtZWNoKTsKLUBAIC0yMjA1LDMwICsyMzMzLDE3IEBAIG5h bWVzcGFjZSBDYW1lbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotIAkJcHVibGlj IENhbWVsLlZUcmFzaEZvbGRlclR5cGUgZ2V0X2ZvbGRlcl90eXBlICgpOwotIAl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgdHlwZV9pZCA9ICJjYW1lbF92 ZWVfZGF0YV9jYWNoZV9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMy42Iild Ci0tCXB1YmxpYyBjbGFzcyBWZWVEYXRhQ2FjaGUgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwdWJsaWMgVmVlRGF0YUNhY2hl ICgpOwotLQkJcHVibGljIHZvaWQgYWRkX3N1YmZvbGRlciAoQ2FtZWwuRm9sZGVyIHN1YmZvbGRl cik7Ci0tCQlwdWJsaWMgYm9vbCBjb250YWluc19tZXNzYWdlX2luZm9fZGF0YSAoQ2FtZWwuRm9s ZGVyIGZvbGRlciwgc3RyaW5nIG9yaWdfbWVzc2FnZV91aWQpOwotLQkJcHVibGljIHZvaWQgZm9y ZWFjaF9tZXNzYWdlX2luZm9fZGF0YSAoQ2FtZWwuRm9sZGVyIGZyb21mb2xkZXIsIENhbWVsLkZv cmVhY2hJbmZvRGF0YSBmdW5jKTsKLS0JCXB1YmxpYyBDYW1lbC5WZWVNZXNzYWdlSW5mb0RhdGEg Z2V0X21lc3NhZ2VfaW5mb19kYXRhIChDYW1lbC5Gb2xkZXIgZm9sZGVyLCBzdHJpbmcgb3JpZ19t ZXNzYWdlX3VpZCk7Ci0tCQlwdWJsaWMgQ2FtZWwuVmVlTWVzc2FnZUluZm9EYXRhPyBnZXRfbWVz c2FnZV9pbmZvX2RhdGFfYnlfdnVpZCAoc3RyaW5nIHZlZV9tZXNzYWdlX3VpZCk7Ci0tCQlwdWJs aWMgQ2FtZWwuVmVlU3ViZm9sZGVyRGF0YSBnZXRfc3ViZm9sZGVyX2RhdGEgKENhbWVsLkZvbGRl ciBmb2xkZXIpOwotLQkJcHVibGljIHZvaWQgcmVtb3ZlX21lc3NhZ2VfaW5mb19kYXRhIChDYW1l bC5WZWVNZXNzYWdlSW5mb0RhdGEgbWlfZGF0YSk7Ci0tCQlwdWJsaWMgdm9pZCByZW1vdmVfc3Vi Zm9sZGVyIChDYW1lbC5Gb2xkZXIgc3ViZm9sZGVyKTsKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfdmVlX2ZvbGRlcl9n ZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgY2xhc3MgVmVlRm9sZGVyIDogQ2FtZWwuRm9sZGVyIHsK LSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNhbWVs Rm9sZGVyKiIpXQotIAkJcHVibGljIFZlZUZvbGRlciAoQ2FtZWwuU3RvcmUgcGFyZW50X3N0b3Jl LCBzdHJpbmcgZnVsbCwgdWludDMyIGZsYWdzKTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgYWRk X2ZvbGRlciAoQ2FtZWwuRm9sZGVyIHN1YmZvbGRlciwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2Vs bGFibGUgPSBudWxsKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIzLjYiKV0KLS0JCXB1YmxpYyB2 b2lkIGFkZF92dWlkIChbQ0NvZGUgKHR5cGUgPSAiX0NhbWVsVmVlTWVzc2FnZUluZm9EYXRhKiIp XSBDYW1lbC5WZWVNZXNzYWdlSW5mb0RhdGEgbWlfZGF0YSwgQ2FtZWwuRm9sZGVyQ2hhbmdlSW5m bz8gY2hhbmdlcyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCQlwdWJsaWMg Ym9vbCBhZGRfZm9sZGVyX3N5bmMgKENhbWVsLkZvbGRlciBzdWJmb2xkZXIsIENhbWVsLlZlZUZv bGRlck9wRmxhZ3Mgb3BfZmxhZ3MsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVs bCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgdm9pZCBAY29uc3RydWN0ICh1aW50MzIg ZmxhZ3MpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgZm9sZGVyX2No YW5nZWQgKENhbWVsLkZvbGRlciBzdWJmb2xkZXIsIENhbWVsLkZvbGRlckNoYW5nZUluZm8gY2hh bmdlcyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCQlwdWJsaWMgR0xpYi5H ZW5lcmljQXJyYXk8d2VhayBDYW1lbC5Gb2xkZXI+IGR1cF9mb2xkZXJzICgpOwotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjMuNiIpXQotKwkJcHVibGljIENhbWVsLkZvbGRlcj8gZHVwX3ZlZV91aWRf Zm9sZGVyIChzdHJpbmcgdmVlX21lc3NhZ2VfdWlkKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIz LjYiKV0KLSAJCXB1YmxpYyBib29sIGdldF9hdXRvX3VwZGF0ZSAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIzLjYiKV0KLUBAIC0yMjM2LDI2ICsyMzUxLDE4IEBAIG5hbWVzcGFjZSBDYW1lbCB7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotIAkJcHVibGljIHVpbnQzMiBnZXRfZmxh Z3MgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBDYW1lbC5Gb2xkZXIgZ2V0X2xvY2F0aW9uIChDYW1l bC5WZWVNZXNzYWdlSW5mbyB2aW5mbywgb3V0IHN0cmluZz8gcmVhbHVpZCk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMy42IildCi0tCQlwdWJsaWMgdW5vd25lZCBDYW1lbC5Gb2xkZXI/IGdldF92 ZWVfdWlkX2ZvbGRlciAoc3RyaW5nIHZlZV9tZXNzYWdlX3VpZCk7Ci0tCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMy4yIildCi0tCQlwdWJsaWMgdm9pZCBpZ25vcmVfbmV4dF9jaGFuZ2VkX2V2ZW50IChD YW1lbC5Gb2xkZXIgc3ViZm9sZGVyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIzLjM4IildCi0t CQlwdWJsaWMgdm9pZCBwcm9wYWdhdGVfc2tpcHBlZF9jaGFuZ2VzICgpOwotLQkJcHVibGljIHZp cnR1YWwgdm9pZCByZWJ1aWxkX2ZvbGRlciAoQ2FtZWwuRm9sZGVyIHN1YmZvbGRlciwgR0xpYi5D YW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIz LjI4IildCi0tCQlwdWJsaWMgR0xpYi5MaXN0PENhbWVsLkZvbGRlcj4gcmVmX2ZvbGRlcnMgKCk7 Ci0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHJlbW92ZV9mb2xkZXIgKENhbWVsLkZvbGRlciBzdWJm b2xkZXIsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMy4xMiIpXQotLQkJcHVibGljIHZvaWQgcmVtb3ZlX2Zyb21faWdub3JlX2No YW5nZWRfZXZlbnQgKENhbWVsLkZvbGRlciBzdWJmb2xkZXIpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjMuNiIpXQotLQkJcHVibGljIHZvaWQgcmVtb3ZlX3Z1aWQgKFtDQ29kZSAodHlwZSA9ICJf Q2FtZWxWZWVNZXNzYWdlSW5mb0RhdGEqIildIENhbWVsLlZlZU1lc3NhZ2VJbmZvRGF0YSBtaV9k YXRhLCBDYW1lbC5Gb2xkZXJDaGFuZ2VJbmZvPyBjaGFuZ2VzKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyBib29sIHJlbW92ZV9mb2xkZXJfc3luYyAoQ2FtZWwu Rm9sZGVyIHN1YmZvbGRlciwgQ2FtZWwuVmVlRm9sZGVyT3BGbGFncyBvcF9mbGFncywgR0xpYi5D YW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIzLjYiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9hdXRvX3VwZGF0ZSAo Ym9vbCBhdXRvX3VwZGF0ZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMy42IildCi0tCQlwdWJs aWMgdmlydHVhbCB2b2lkIHNldF9leHByZXNzaW9uIChzdHJpbmcgZXhwcmVzc2lvbik7Ci0tCQlw dWJsaWMgdm9pZCBzZXRfZm9sZGVycyAoR0xpYi5MaXN0PENhbWVsLkZvbGRlcj4gZm9sZGVycywg R0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIzLjU3LjEiKV0KLSsJCXB1YmxpYyBib29sIHNldF9leHByZXNzaW9uX3N5bmMgKHN0cmlu ZyBleHByZXNzaW9uLCBDYW1lbC5WZWVGb2xkZXJPcEZsYWdzIG9wX2ZsYWdzLCBHTGliLkNhbmNl bGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwkJcHVibGljIGJvb2wgc2V0X2ZvbGRlcnNfc3luYyAo R0xpYi5HZW5lcmljQXJyYXk8Q2FtZWwuRm9sZGVyPiBmb2xkZXJzLCBDYW1lbC5WZWVGb2xkZXJP cEZsYWdzIG9wX2ZsYWdzLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpIHRo cm93cyBHTGliLkVycm9yOwotIAkJcHVibGljIGJvb2wgYXV0b191cGRhdGUgeyBnZXQ7IHNldDsg fQotKwkJcHVibGljIHNpZ25hbCB2b2lkIHJlYnVpbGRfcnVuX3Rlc3Rfc2lnbmFsICgpOwotKwkJ cHVibGljIHNpZ25hbCB2b2lkIHJlYnVpbGRfc2NoZWR1bGVfdGVzdF9zaWduYWwgKCk7Ci0rCQlw dWJsaWMgc2lnbmFsIHZvaWQgdmVlX3NldHVwX2NoYW5nZWQgKCk7Ci0gCX0KLSAJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCB0eXBlX2lkID0gImNhbWVsX3ZlZV9t ZXNzYWdlX2luZm9fZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIFZlZU1lc3NhZ2VJbmZv IDogQ2FtZWwuTWVzc2FnZUluZm8gewotQEAgLTIyNjcsNTggKzIzNzQsMTcgQEAgbmFtZXNwYWNl IENhbWVsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjI0IildCi0gCQlwdWJsaWMgdW5vd25l ZCBDYW1lbC5Gb2xkZXJTdW1tYXJ5IGdldF9vcmlnaW5hbF9zdW1tYXJ5ICgpOwotIAl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgdHlwZV9pZCA9ICJjYW1l bF92ZWVfbWVzc2FnZV9pbmZvX2RhdGFfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNl ID0gIjMuNiIpXQotLQlwdWJsaWMgY2xhc3MgVmVlTWVzc2FnZUluZm9EYXRhIDogR0xpYi5PYmpl Y3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHVi bGljIFZlZU1lc3NhZ2VJbmZvRGF0YSAoQ2FtZWwuVmVlU3ViZm9sZGVyRGF0YSBzdWJmb2xkZXJf ZGF0YSwgc3RyaW5nIG9yaWdfbWVzc2FnZV91aWQpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5n IGdldF9vcmlnX21lc3NhZ2VfdWlkICgpOwotLQkJcHVibGljIHVub3duZWQgQ2FtZWwuVmVlU3Vi Zm9sZGVyRGF0YSBnZXRfc3ViZm9sZGVyX2RhdGEgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJp bmcgZ2V0X3ZlZV9tZXNzYWdlX3VpZCAoKTsKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfdmVlX3N0b3JlX2dldF90eXBl ICgpIildCi0gCXB1YmxpYyBjbGFzcyBWZWVTdG9yZSA6IENhbWVsLlN0b3JlLCBHTGliLkluaXRh YmxlIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXB1 YmxpYyBWZWVTdG9yZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIzLjYiKV0KLS0JCXB1Ymxp YyBib29sIGdldF91bm1hdGNoZWRfZW5hYmxlZCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIz LjYiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENhbWVsLlZlZUZvbGRlciBnZXRfdW5tYXRjaGVkX2Zv bGRlciAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIzLjYiKV0KLS0JCXB1YmxpYyB1bm93bmVk IENhbWVsLlZlZUZvbGRlciBnZXRfdmVlX2RhdGFfY2FjaGUgKCk7Ci0tCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMy42IildCi0tCQlwdWJsaWMgdm9pZCBub3RlX3N1YmZvbGRlcl91bnVzZWQgKENhbWVs LkZvbGRlciBzdWJmb2xkZXIsIENhbWVsLlZlZUZvbGRlciB1bnVzZWRfYnkpOwotLQkJW1ZlcnNp b24gKHNpbmNlID0gIjMuNiIpXQotLQkJcHVibGljIHZvaWQgbm90ZV9zdWJmb2xkZXJfdXNlZCAo Q2FtZWwuRm9sZGVyIHN1YmZvbGRlciwgQ2FtZWwuVmVlRm9sZGVyIHVzZWRfYnkpOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjMuNiIpXQotLQkJcHVibGljIHZvaWQgbm90ZV92dWlkX3VudXNlZCAo Q2FtZWwuVmVlTWVzc2FnZUluZm9EYXRhIG1pX2RhdGEsIENhbWVsLlZlZUZvbGRlciB1bnVzZWRf YnkpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNiIpXQotLQkJcHVibGljIHZvaWQgbm90ZV92 dWlkX3VzZWQgKENhbWVsLlZlZU1lc3NhZ2VJbmZvRGF0YSBtaV9kYXRhLCBDYW1lbC5WZWVGb2xk ZXIgdXNlZF9ieSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMy42IildCi0tCQlwdWJsaWMgdm9p ZCByZWJ1aWxkX3VubWF0Y2hlZF9mb2xkZXIgKEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxl ID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMy42Iild Ci0tCQlwdWJsaWMgdm9pZCBzZXRfdW5tYXRjaGVkX2VuYWJsZWQgKGJvb2wgaXNfZW5hYmxlZCk7 Ci0rCQlwcm90ZWN0ZWQgVmVlU3RvcmUgKCk7Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSAJCXB1 YmxpYyBib29sIHVubWF0Y2hlZF9lbmFibGVkIHsgZ2V0OyBzZXQ7IH0KLSAJfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIHR5cGVfaWQgPSAiY2FtZWxfdmVl X3N1YmZvbGRlcl9kYXRhX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIzLjYi KV0KLS0JcHVibGljIGNsYXNzIFZlZVN1YmZvbGRlckRhdGEgOiBHTGliLk9iamVjdCB7Ci0tCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwdWJsaWMgVmVlU3Vi Zm9sZGVyRGF0YSAoQ2FtZWwuRm9sZGVyIGZvbGRlcik7Ci0tCQlwdWJsaWMgdW5vd25lZCBDYW1l bC5Gb2xkZXIgZ2V0X2ZvbGRlciAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZm9s ZGVyX2lkICgpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1l bC5oIiwgdHlwZV9pZCA9ICJjYW1lbF92ZWVfc3VtbWFyeV9nZXRfdHlwZSAoKSIpXQotIAlwdWJs aWMgY2xhc3MgVmVlU3VtbWFyeSA6IENhbWVsLkZvbGRlclN1bW1hcnkgewotIAkJW0NDb2RlICho YXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2FtZWxGb2xkZXJTdW1tYXJ5 KiIpXQotIAkJcHVibGljIFZlZVN1bW1hcnkgKENhbWVsLkZvbGRlciBwYXJlbnQpOwotLQkJcHVi bGljIENhbWVsLlZlZU1lc3NhZ2VJbmZvIGFkZCAoQ2FtZWwuVmVlTWVzc2FnZUluZm9EYXRhIG1p X2RhdGEpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNiIpXQotLQkJcHVibGljIEdMaWIuSGFz aFRhYmxlPHdlYWsgc3RyaW5nLGludD4gZ2V0X3VpZHNfZm9yX3N1YmZvbGRlciAoQ2FtZWwuRm9s ZGVyIHN1YmZvbGRlcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMy42IildCi0tCQlwdWJsaWMg dm9pZCByZW1vdmUgKHN0cmluZyB2dWlkLCBDYW1lbC5Gb2xkZXIgc3ViZm9sZGVyKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIzLjYiKV0KLS0JCXB1YmxpYyB2b2lkIHJlcGxhY2VfZmxhZ3MgKHN0 cmluZyB1aWQpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1l bC5oIiwgcmVmX2Z1bmN0aW9uID0gImNhbWVsX3dlYWtfcmVmX2dyb3VwX3JlZiIsIHR5cGVfaWQg PSAiY2FtZWxfd2Vha19yZWZfZ3JvdXBfZ2V0X3R5cGUgKCkiLCB1bnJlZl9mdW5jdGlvbiA9ICJj YW1lbF93ZWFrX3JlZl9ncm91cF91bnJlZiIpXQotIAlbQ29tcGFjdF0KLUBAIC0yMzU0LDE1ICsy NDIwLDE1IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlwdWJsaWMgYWJzdHJhY3QgdWludDE2IGdl dF9kZWZhdWx0X3BvcnQgKENhbWVsLk5ldHdvcmtTZWN1cml0eU1ldGhvZCBtZXRob2QpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjMuOCIpXQotIAkJcHVibGljIGJvb2wgZ2V0X2hvc3RfcmVhY2hh YmxlICgpOwotLQkJcHVibGljIGFic3RyYWN0IHVub3duZWQgc3RyaW5nIGdldF9zZXJ2aWNlX25h bWUgKENhbWVsLk5ldHdvcmtTZWN1cml0eU1ldGhvZCBtZXRob2QpOwotKwkJcHVibGljIGFic3Ry YWN0IHVub3duZWQgc3RyaW5nPyBnZXRfc2VydmljZV9uYW1lIChDYW1lbC5OZXR3b3JrU2VjdXJp dHlNZXRob2QgbWV0aG9kKTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgYWJzdHJhY3QgdW5v d25lZCBHTGliLlNvY2tldENvbm5lY3RhYmxlIG5ld19jb25uZWN0YWJsZSAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIzLjgiKV0KLSAJCXB1YmxpYyBHTGliLlNvY2tldENvbm5lY3RhYmxlIHJl Zl9jb25uZWN0YWJsZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjgiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9jb25uZWN0YWJsZSAoR0xpYi5Tb2NrZXRDb25uZWN0YWJsZSBjb25uZWN0YWJs ZSk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfY29ubmVjdGFibGUgKEdMaWIuU29ja2V0Q29ubmVjdGFi bGU/IGNvbm5lY3RhYmxlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjEyIildCi0tCQlwdWJs aWMgR0xpYi5JT1N0cmVhbSBzdGFydHRscyAoR0xpYi5JT1N0cmVhbSBiYXNlX3N0cmVhbSkgdGhy b3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgR0xpYi5JT1N0cmVhbT8gc3RhcnR0bHMgKEdMaWIu SU9TdHJlYW0gYmFzZV9zdHJlYW0pIHRocm93cyBHTGliLkVycm9yOwotIAkJW05vQWNjZXNzb3JN ZXRob2RdCi0gCQlwdWJsaWMgYWJzdHJhY3QgR0xpYi5Tb2NrZXRDb25uZWN0YWJsZSBjb25uZWN0 YWJsZSB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlbQ29uY3JldGVBY2Nlc3Nvcl0KLUBAIC0yMzcy LDcgKzI0MzgsNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlbVmVyc2lvbiAoc2luY2UgPSAiMy4y IildCi0gCXB1YmxpYyBpbnRlcmZhY2UgTmV0d29ya1NldHRpbmdzIDogQ2FtZWwuU2V0dGluZ3Mg ewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNCIpXQotLQkJcHVibGljIHN0cmluZyBkdXBfYXV0 aF9tZWNoYW5pc20gKCk7Ci0rCQlwdWJsaWMgc3RyaW5nPyBkdXBfYXV0aF9tZWNoYW5pc20gKCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy40IildCi0gCQlwdWJsaWMgc3RyaW5nIGR1cF9ob3N0 ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuMTYiKV0KLUBAIC0yMzgwLDcgKzI0NDYsNyBA QCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNCIpXQotIAkJcHVi bGljIHN0cmluZyBkdXBfdXNlciAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQiKV0KLS0J CXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfYXV0aF9tZWNoYW5pc20gKCk7Ci0rCQlwdWJsaWMg dW5vd25lZCBzdHJpbmc/IGdldF9hdXRoX21lY2hhbmlzbSAoKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIzLjQiKV0KLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfaG9zdCAoKTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIzLjQiKV0KLUBAIC0yMzg5LDE0ICsyNDU1LDE0IEBAIG5hbWVzcGFj ZSBDYW1lbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy40IildCi0gCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X3VzZXIgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMy40IildCi0tCQlw dWJsaWMgdm9pZCBzZXRfYXV0aF9tZWNoYW5pc20gKHN0cmluZyBhdXRoX21lY2hhbmlzbSk7Ci0r CQlwdWJsaWMgdm9pZCBzZXRfYXV0aF9tZWNoYW5pc20gKHN0cmluZz8gYXV0aF9tZWNoYW5pc20p OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2hvc3Qg KHN0cmluZyBob3N0KTsKLSsJCXB1YmxpYyB2b2lkIHNldF9ob3N0IChzdHJpbmc/IGhvc3QpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3BvcnQgKHVp bnQxNiBwb3J0KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9zZWN1cml0eV9tZXRob2QgKENhbWVsLk5l dHdvcmtTZWN1cml0eU1ldGhvZCBtZXRob2QpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjMuNCIp XQotLQkJcHVibGljIHZvaWQgc2V0X3VzZXIgKHN0cmluZyB1c2VyKTsKLSsJCXB1YmxpYyB2b2lk IHNldF91c2VyIChzdHJpbmc/IHVzZXIpOwotIAkJW0NvbmNyZXRlQWNjZXNzb3JdCi0gCQlwdWJs aWMgYWJzdHJhY3Qgc3RyaW5nIGF1dGhfbWVjaGFuaXNtIHsgZ2V0OyBzZXQgY29uc3RydWN0OyB9 Ci0gCQlbQ29uY3JldGVBY2Nlc3Nvcl0KLUBAIC0yNDYyLDcgKzI1MjgsNyBAQCBuYW1lc3BhY2Ug Q2FtZWwgewotIAkJcHVibGljIHZvaWQqIGdldF9wcm9wZXJ0eSAoc3RyaW5nIG5hbWUpOwotIAkJ W0NDb2RlIChjbmFtZSA9ICJjYW1lbF9jaXBoZXJfY2VydGluZm9fc2V0X3Byb3BlcnR5IildCi0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMy4yMiIpXQotLQkJcHVibGljIHZvaWQgc2V0X3Byb3BlcnR5 IChzdHJpbmcgbmFtZSwgW0NDb2RlIChkZXN0cm95X25vdGlmeV9wb3MgPSAyLjUpXSBvd25lZCB2 b2lkKiB2YWx1ZSwgQ2FtZWwuQ2lwaGVyQ2xvbmVGdW5jPyB2YWx1ZV9jbG9uZSk7Ci0rCQlwdWJs aWMgdm9pZCBzZXRfcHJvcGVydHkgKHN0cmluZyBuYW1lLCB2b2lkKiB2YWx1ZSwgR0xpYi5EZXN0 cm95Tm90aWZ5PyB2YWx1ZV9mcmVlLCBDYW1lbC5DaXBoZXJDbG9uZUZ1bmM/IHZhbHVlX2Nsb25l KTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGhh c190eXBlX2lkID0gZmFsc2UpXQotIAlwdWJsaWMgc3RydWN0IENpcGhlckNlcnRJbmZvUHJvcGVy dHkgewotQEAgLTI0NzIsMjIgKzI1MzgsNiBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJcHVibGlj IHdlYWsgQ2FtZWwuQ2lwaGVyQ2xvbmVGdW5jIHZhbHVlX2Nsb25lOwotIAl9Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSld Ci0tCVtWZXJzaW9uIChzaW5jZSA9ICIyLjI0IildCi0tCXB1YmxpYyBzdHJ1Y3QgRklSZWNvcmQg ewotLQkJcHVibGljIHdlYWsgc3RyaW5nIGZvbGRlcl9uYW1lOwotLQkJcHVibGljIHVpbnQzMiB2 ZXJzaW9uOwotLQkJcHVibGljIHVpbnQzMiBmbGFnczsKLS0JCXB1YmxpYyB1aW50MzIgbmV4dHVp ZDsKLS0JCXB1YmxpYyBpbnQ2NCB0aW1lc3RhbXA7Ci0tCQlwdWJsaWMgdWludDMyIHNhdmVkX2Nv dW50OwotLQkJcHVibGljIHVpbnQzMiB1bnJlYWRfY291bnQ7Ci0tCQlwdWJsaWMgdWludDMyIGRl bGV0ZWRfY291bnQ7Ci0tCQlwdWJsaWMgdWludDMyIGp1bmtfY291bnQ7Ci0tCQlwdWJsaWMgdWlu dDMyIHZpc2libGVfY291bnQ7Ci0tCQlwdWJsaWMgdWludDMyIGpuZF9jb3VudDsKLS0JCXB1Ymxp YyB3ZWFrIHN0cmluZyBiZGF0YTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2FtZWwvY2FtZWwuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlwdWJsaWMgc3RydWN0IEtl eUJsb2NrIHsKLSAJCXB1YmxpYyBDYW1lbC5fYmxvY2tfdCBuZXh0OwotIAkJcHVibGljIHVpbnQz MiB1c2VkOwotQEAgLTI1MDQsMzggKzI1NTQsNiBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAl9Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgaGFzX3R5cGVfaWQg PSBmYWxzZSldCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIyLjI0IildCi0tCXB1YmxpYyBzdHJ1Y3Qg TUlSZWNvcmQgewotLQkJcHVibGljIHdlYWsgc3RyaW5nIHVpZDsKLS0JCXB1YmxpYyB1aW50MzIg ZmxhZ3M7Ci0tCQlwdWJsaWMgdWludDMyIG1zZ190eXBlOwotLQkJcHVibGljIHVpbnQzMiBkaXJ0 eTsKLS0JCXB1YmxpYyBib29sIHJlYWQ7Ci0tCQlwdWJsaWMgYm9vbCBkZWxldGVkOwotLQkJcHVi bGljIGJvb2wgcmVwbGllZDsKLS0JCXB1YmxpYyBib29sIGltcG9ydGFudDsKLS0JCXB1YmxpYyBi b29sIGp1bms7Ci0tCQlwdWJsaWMgYm9vbCBhdHRhY2htZW50OwotLQkJcHVibGljIHVpbnQzMiBz aXplOwotLQkJcHVibGljIGludDY0IGRzZW50OwotLQkJcHVibGljIGludDY0IGRyZWNlaXZlZDsK LS0JCXB1YmxpYyB3ZWFrIHN0cmluZyBzdWJqZWN0OwotLQkJcHVibGljIHdlYWsgc3RyaW5nIGZy b207Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgdG87Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgY2M7 Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgbWxpc3Q7Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgZm9s bG93dXBfZmxhZzsKLS0JCXB1YmxpYyB3ZWFrIHN0cmluZyBmb2xsb3d1cF9jb21wbGV0ZWRfb247 Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgZm9sbG93dXBfZHVlX2J5OwotLQkJcHVibGljIHdlYWsg c3RyaW5nIHBhcnQ7Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgbGFiZWxzOwotLQkJcHVibGljIHdl YWsgc3RyaW5nIHVzZXJ0YWdzOwotLQkJcHVibGljIHdlYWsgc3RyaW5nIGNpbmZvOwotLQkJcHVi bGljIHdlYWsgc3RyaW5nIGJkYXRhOwotLQkJcHVibGljIHdlYWsgc3RyaW5nIHVzZXJoZWFkZXJz OwotLQkJcHVibGljIHdlYWsgc3RyaW5nIHByZXZpZXc7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1Zl cnNpb24gKHNpbmNlID0gIjIuMjQiKV0KLSAJcHVibGljIHN0cnVjdCBNc2cgewotIAkJcHVibGlj IHdlYWsgQ2FtZWwuTXNnUG9ydCByZXBseV9wb3J0OwotIAl9Ci1AQCAtMjU4OSw4ICsyNjA3LDEw IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCXB1YmxpYyBzdHJ1Y3QgU0V4cFJlc3VsdCB7Ci0gCQlw dWJsaWMgQ2FtZWwuU0V4cFJlc3VsdFR5cGUgdHlwZTsKLSAJCXB1YmxpYyBib29sIHRpbWVfZ2Vu ZXJhdG9yOwotLQkJcHVibGljIGxvbmcgb2NjdXJpbmdfc3RhcnQ7Ci0tCQlwdWJsaWMgbG9uZyBv Y2N1cmluZ19lbmQ7Ci0rCQlwdWJsaWMgdGltZV90IG9jY3VyaW5nX3N0YXJ0OwotKwkJcHVibGlj IHRpbWVfdCBvY2N1cmluZ19lbmQ7Ci0rCQlwdWJsaWMgdm9pZCogdXNlcl9kYXRhOwotKwkJcHVi bGljIHdlYWsgR0xpYi5EZXN0cm95Tm90aWZ5IGZyZWVfdXNlcl9kYXRhOwotIAkJW0NDb2RlIChj bmFtZSA9ICJ2YWx1ZS5wdHJhcnJheSIpXQotIAkJcHVibGljIHdlYWsgR0xpYi5HZW5lcmljQXJy YXk8dm9pZCo+IHZhbHVlX3B0cmFycmF5OwotIAkJW0NDb2RlIChjbmFtZSA9ICJ2YWx1ZS5udW1i ZXIiKV0KLUBAIC0yNjAwLDcgKzI2MjAsNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJW0NDb2Rl IChjbmFtZSA9ICJ2YWx1ZS5ib29sZWFuIildCi0gCQlwdWJsaWMgaW50IHZhbHVlX2Jvb2xlYW47 Ci0gCQlbQ0NvZGUgKGNuYW1lID0gInZhbHVlLnRpbWUiKV0KLS0JCXB1YmxpYyBsb25nIHZhbHVl X3RpbWU7Ci0rCQlwdWJsaWMgdGltZV90IHZhbHVlX3RpbWU7Ci0gCX0KLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJ W1ZlcnNpb24gKHNpbmNlID0gIjMuNCIpXQotQEAgLTI2MjAsNyArMjY0MCw3IEBAIG5hbWVzcGFj ZSBDYW1lbCB7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gInZhbHVlLmJvb2xlYW4iKV0KLSAJCXB1Ymxp YyBpbnQgdmFsdWVfYm9vbGVhbjsKLSAJCVtDQ29kZSAoY25hbWUgPSAidmFsdWUudGltZSIpXQot LQkJcHVibGljIGxvbmcgdmFsdWVfdGltZTsKLSsJCXB1YmxpYyB0aW1lX3QgdmFsdWVfdGltZTsK LSAJCVtDQ29kZSAoY25hbWUgPSAidmFsdWUudmFyIildCi0gCQlwdWJsaWMgQ2FtZWwuU0V4cFN5 bWJvbCB2YWx1ZV92YXI7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gInZhbHVlLmZ1bmMuc3ltIildCi1A QCAtMjY0MiwxNCArMjY2Miw1NSBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJcHVibGljIHZvaWQg ZnJlZSAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwu aCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IFN0b3JlSW5mbyB7Ci0t CQlwdWJsaWMgaW50IHJlZmNvdW50OwotLQkJcHVibGljIHdlYWsgc3RyaW5nIHBhdGg7Ci0rCVtW ZXJzaW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJcHVibGljIHN0cnVjdCBTdG9yZURCRm9sZGVy UmVjb3JkIHsKLSsJCXB1YmxpYyB3ZWFrIHN0cmluZyBmb2xkZXJfbmFtZTsKLSsJCXB1YmxpYyB1 aW50MzIgdmVyc2lvbjsKLSAJCXB1YmxpYyB1aW50MzIgZmxhZ3M7Ci0tCQlwdWJsaWMgdWludDMy IHVucmVhZDsKLS0JCXB1YmxpYyB1aW50MzIgdG90YWw7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3du ZWQgc3RyaW5nIG5hbWUgKENhbWVsLlN0b3JlU3VtbWFyeSBzdW1tYXJ5LCBDYW1lbC5TdG9yZUlu Zm8gaW5mbyk7Ci0tCQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3N0cmluZyAoQ2FtZWwuU3RvcmVT dW1tYXJ5IHN1bW1hcnksIENhbWVsLlN0b3JlSW5mbyBpbmZvLCBpbnQgdHlwZSwgc3RyaW5nIHZh bHVlKTsKLSsJCXB1YmxpYyB1aW50MzIgbmV4dHVpZDsKLSsJCXB1YmxpYyBpbnQ2NCB0aW1lc3Rh bXA7Ci0rCQlwdWJsaWMgdWludDMyIHNhdmVkX2NvdW50OwotKwkJcHVibGljIHVpbnQzMiB1bnJl YWRfY291bnQ7Ci0rCQlwdWJsaWMgdWludDMyIGRlbGV0ZWRfY291bnQ7Ci0rCQlwdWJsaWMgdWlu dDMyIGp1bmtfY291bnQ7Ci0rCQlwdWJsaWMgdWludDMyIHZpc2libGVfY291bnQ7Ci0rCQlwdWJs aWMgdWludDMyIGpuZF9jb3VudDsKLSsJCXB1YmxpYyB3ZWFrIHN0cmluZyBiZGF0YTsKLSsJCXB1 YmxpYyB1aW50MzIgZm9sZGVyX2lkOwotKwkJcHVibGljIHZvaWQgY2xlYXIgKCk7Ci0rCX0KLSsJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBoYXNfdHlwZV9pZCA9 IGZhbHNlKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwlwdWJsaWMgc3RydWN0 IFN0b3JlREJNZXNzYWdlUmVjb3JkIHsKLSsJCXB1YmxpYyB1aW50MzIgZm9sZGVyX2lkOwotKwkJ cHVibGljIHdlYWsgc3RyaW5nIHVpZDsKLSsJCXB1YmxpYyB1aW50MzIgZmxhZ3M7Ci0rCQlwdWJs aWMgdWludDMyIG1zZ190eXBlOwotKwkJcHVibGljIHVpbnQzMiBkaXJ0eTsKLSsJCXB1YmxpYyB1 aW50MzIgc2l6ZTsKLSsJCXB1YmxpYyBpbnQ2NCBkc2VudDsKLSsJCXB1YmxpYyBpbnQ2NCBkcmVj ZWl2ZWQ7Ci0rCQlwdWJsaWMgd2VhayBzdHJpbmcgc3ViamVjdDsKLSsJCXB1YmxpYyB3ZWFrIHN0 cmluZyBmcm9tOwotKwkJcHVibGljIHdlYWsgc3RyaW5nIHRvOwotKwkJcHVibGljIHdlYWsgc3Ry aW5nIGNjOwotKwkJcHVibGljIHdlYWsgc3RyaW5nIG1saXN0OwotKwkJcHVibGljIHdlYWsgc3Ry aW5nIHBhcnQ7Ci0rCQlwdWJsaWMgd2VhayBzdHJpbmcgbGFiZWxzOwotKwkJcHVibGljIHdlYWsg c3RyaW5nIHVzZXJ0YWdzOwotKwkJcHVibGljIHdlYWsgc3RyaW5nIGNpbmZvOwotKwkJcHVibGlj IHdlYWsgc3RyaW5nIGJkYXRhOwotKwkJcHVibGljIHdlYWsgc3RyaW5nIHVzZXJoZWFkZXJzOwot KwkJcHVibGljIHdlYWsgc3RyaW5nIHByZXZpZXc7Ci0rCQlwdWJsaWMgdm9pZCBjbGVhciAoKTsK LSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGhhc190 eXBlX2lkID0gZmFsc2UpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCXB1Ymxp YyBzdHJ1Y3QgU3RvcmVTZWFyY2hJdGVtIHsKLSsJCXB1YmxpYyB1aW50MzIgZm9sZGVyX2lkOwot KwkJcHVibGljIHdlYWsgc3RyaW5nIHVpZDsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZz8gZ2V0 X2FkZGl0aW9uYWxfdmFsdWUgKHVpbnQzMiBpbmRleCk7Ci0rCQlwdWJsaWMgdWludDMyIGdldF9u X2FkZGl0aW9uYWxfdmFsdWVzICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjYW1lbC9jYW1lbC5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBzdHJ1Y3Qg U3VtbWFyeU1lc3NhZ2VJRCB7Ci1AQCAtMjY3MSw4ICsyNzMyLDcgQEAgbmFtZXNwYWNlIENhbWVs IHsKLSAJCXB1YmxpYyBzaXplX3Qgc2l6ZTsKLSAJCXB1YmxpYyBpbnQgZmQ7Ci0gCQlwdWJsaWMg dm9pZCBkZXN0cm95ICgpOwotLQkJcHVibGljIHN0YXRpYyB2b2lkIGZyZWVfdWlkcyAob3duZWQg R0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiB1aWRzKTsKLS0JCXB1YmxpYyBHTGliLkdlbmVyaWNB cnJheTxzdHJpbmc+IGdldF9uZXdfdWlkcyAoR0xpYi5HZW5lcmljQXJyYXk8c3RyaW5nPiB1aWRz KTsKLSsJCXB1YmxpYyBHTGliLkdlbmVyaWNBcnJheTx3ZWFrIHN0cmluZz4gZHVwX25ld191aWRz IChHTGliLkdlbmVyaWNBcnJheTxzdHJpbmc+IHVpZHMpOwotIAkJcHVibGljIGJvb2wgc2F2ZSAo KTsKLSAJCXB1YmxpYyB2b2lkIHNhdmVfdWlkIChzdHJpbmcgdWlkKTsKLSAJfQotQEAgLTI3ODIs NiArMjg0MiwxMiBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJVUxUSU1BVEUsCi0gCQlURU1QT1JB UlkKLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGNw cmVmaXggPSAiQ0FNRUxfQ0lQSEVSX0NPTlRFWFRfRVJST1JfS0VZX05PVF8iLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTAiKV0KLSsJcHVibGljIGVudW0g Q2lwaGVyQ29udGV4dEVycm9yIHsKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ0FNRUxfQ0lQSEVSX0NP TlRFWFRfRVJST1JfS0VZX05PVF9GT1VORCIpXQotKwkJQ0lQSEVSX0NPTlRFWFRfRVJST1JfS0VZ X05PVF9GT1VORAotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1l bC5oIiwgY3ByZWZpeCA9ICJDQU1FTF9DSVBIRVJfSEFTSF8iLCBoYXNfdHlwZV9pZCA9IGZhbHNl KV0KLSAJcHVibGljIGVudW0gQ2lwaGVySGFzaCB7Ci0gCQlERUZBVUxULAotQEAgLTI4MjEsNDcg KzI4ODcsMTggQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCUlOU0VOU0lUSVZFLAotIAkJU0VOU0lU SVZFCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBj cHJlZml4ID0gIkNBTUVMX0RCX0NPTFVNTl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1Zl cnNpb24gKHNpbmNlID0gIjMuNCIpXQotLQlwdWJsaWMgZW51bSBEQktub3duQ29sdW1uTmFtZXMg ewotLQkJVU5LTk9XTiwKLS0JCUFUVEFDSE1FTlQsCi0tCQlCREFUQSwKLS0JCUNJTkZPLAotLQkJ REVMRVRFRCwKLS0JCURFTEVURURfQ09VTlQsCi0tCQlEUkVDRUlWRUQsCi0tCQlEU0VOVCwKLS0J CUZMQUdTLAotLQkJRk9MREVSX05BTUUsCi0tCQlGT0xMT1dVUF9DT01QTEVURURfT04sCi0tCQlG T0xMT1dVUF9EVUVfQlksCi0tCQlGT0xMT1dVUF9GTEFHLAotLQkJSU1QT1JUQU5ULAotLQkJSk5E X0NPVU5ULAotLQkJSlVOSywKLS0JCUpVTktfQ09VTlQsCi0tCQlMQUJFTFMsCi0tCQlNQUlMX0ND LAotLQkJTUFJTF9GUk9NLAotLQkJTUFJTF9UTywKLS0JCU1MSVNULAotLQkJTkVYVFVJRCwKLS0J CVBBUlQsCi0tCQlQUkVWSUVXLAotLQkJUkVBRCwKLS0JCVJFUExJRUQsCi0tCQlTQVZFRF9DT1VO VCwKLS0JCVNJWkUsCi0tCQlTVUJKRUNULAotLQkJVElNRSwKLS0JCVVJRCwKLS0JCVVOUkVBRF9D T1VOVCwKLS0JCVVTRVJIRUFERVJTLAotLQkJVVNFUlRBR1MsCi0tCQlWRVJTSU9OLAotLQkJVklT SUJMRV9DT1VOVCwKLS0JCVZVSUQKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVs L2NhbWVsLmgiLCBjcHJlZml4ID0gIkNBTUVMX0RCX0VSUk9SXyIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMy40NCIpXQotKwlwdWJsaWMgZW51bSBEQkVycm9y IHsKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ0FNRUxfREJfRVJST1JfQ09SUlVQVCIpXQotKwkJREJf RVJST1JfQ09SUlVQVAotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9j YW1lbC5oIiwgY3ByZWZpeCA9ICJDQU1FTF9EQl9TUUxJWkVfRkxBR18iLCB0eXBlX2lkID0gImNh bWVsX2RiX3NxbGl6ZV9mbGFnc19nZXRfdHlwZSAoKSIpXQotKwlbRmxhZ3NdCi0rCVtWZXJzaW9u IChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJcHVibGljIGVudW0gREJTcWxpemVGbGFncyB7Ci0rCQlG VUxMLAotKwkJRVNDQVBFX09OTFkKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2FtZWwvY2FtZWwuaCIsIGNwcmVmaXggPSAiQ0FNRUxfRkVUQ0hfSEVBREVSU18iLCB0eXBlX2lk ID0gImNhbWVsX2ZldGNoX2hlYWRlcnNfdHlwZV9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAo c2luY2UgPSAiMy4yIildCi1AQCAtMjkyMyw2ICsyOTYwLDI0IEBAIG5hbWVzcGFjZSBDYW1lbCB7 Ci0gCQlESVJUWSwKLSAJCUlOX01FTU9SWV9PTkxZCi0gCX0KLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBjcHJlZml4ID0gIkNBTUVMX0ZPTERFUl9USFJFQURf RkxBR18iLCB0eXBlX2lkID0gImNhbWVsX2ZvbGRlcl90aHJlYWRfZmxhZ3NfZ2V0X3R5cGUgKCki KV0KLSsJW0ZsYWdzXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCXB1YmxpYyBl bnVtIEZvbGRlclRocmVhZEZsYWdzIHsKLSsJCU5PTkUsCi0rCQlTVUJKRUNULAotKwkJU09SVAot Kwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY3ByZWZp eCA9ICJDQU1FTF9HUEdfVFJVU1RfIiwgdHlwZV9pZCA9ICJjYW1lbF9ncGdfdHJ1c3RfZ2V0X3R5 cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTAiKV0KLSsJcHVibGljIGVudW0gR3Bn VHJ1c3QgewotKwkJTk9ORSwKLSsJCVVOS05PV04sCi0rCQlORVZFUiwKLSsJCU1BUkdJTkFMLAot KwkJRlVMTCwKLSsJCVVMVElNQVRFCi0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNhbWVsL2NhbWVsLmgiLCBjcHJlZml4ID0gIkNBTUVMX0hUTUxfUEFSU0VSXyIsIGhhc190eXBl X2lkID0gZmFsc2UpXQotIAlwdWJsaWMgZW51bSBIVE1MUGFyc2VyU3RhdGUgewotIAkJREFUQSwK LUBAIC0yOTU4LDYgKzMwMTMsMTUgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCVJFQUQsCi0gCQlX UklURQotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwg Y3ByZWZpeCA9ICJDQU1FTF9NQVRDSF9USFJFQURTX0tJTkRfIiwgdHlwZV9pZCA9ICJjYW1lbF9t YXRjaF90aHJlYWRzX2tpbmRfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjMu NTcuMSIpXQotKwlwdWJsaWMgZW51bSBNYXRjaFRocmVhZHNLaW5kIHsKLSsJCU5PTkUsCi0rCQlB TEwsCi0rCQlSRVBMSUVTLAotKwkJUkVQTElFU19BTkRfUEFSRU5UUywKLSsJCVNJTkdMRQotKwl9 Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY3ByZWZpeCA9 ICJDQU1FTF9NRU1QT09MX0FMSUdOXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlbVmVyc2lv biAoc2luY2UgPSAiMi4zMiIpXQotIAlwdWJsaWMgZW51bSBNZW1Qb29sRmxhZ3MgewotQEAgLTMw ODgsNyArMzE1Miw4IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlMQUJFTCwKLSAJCUhJRERFTiwK LSAJCU9QVElPTlMsCi0tCQlQTEFDRUhPTERFUgotKwkJUExBQ0VIT0xERVIsCi0rCQlBRFZBTkNF RF9TRUNUSU9OX1NUQVJUCi0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVs L2NhbWVsLmgiLCBjcHJlZml4ID0gIkNBTUVMX1BST1ZJREVSXyIsIHR5cGVfaWQgPSAiY2FtZWxf cHJvdmlkZXJfZmxhZ3NfZ2V0X3R5cGUgKCkiKV0KLSAJW0ZsYWdzXQotQEAgLTMyMDQsNiArMzI2 OSwxNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJQVNDRU5ESU5HLAotIAkJREVTQ0VORElORwot IAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY3ByZWZp eCA9ICJDQU1FTF9TVE9SRV9EQl9DT1VOVF9LSU5EXyIsIHR5cGVfaWQgPSAiY2FtZWxfc3RvcmVf ZGJfY291bnRfa2luZF9nZXRfdHlwZSAoKSIpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4x IildCi0rCXB1YmxpYyBlbnVtIFN0b3JlREJDb3VudEtpbmQgewotKwkJVE9UQUwsCi0rCQlVTlJF QUQsCi0rCQlKVU5LLAotKwkJREVMRVRFRCwKLSsJCU5PVF9KVU5LX05PVF9ERUxFVEVELAotKwkJ Tk9UX0pVTktfTk9UX0RFTEVURURfVU5SRUFELAotKwkJSlVOS19OT1RfREVMRVRFRAotKwl9Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY3ByZWZpeCA9ICJD QU1FTF9TVE9SRV8iLCB0eXBlX2lkID0gImNhbWVsX3N0b3JlX2ZsYWdzX2dldF90eXBlICgpIild Ci0gCVtGbGFnc10KLSAJcHVibGljIGVudW0gU3RvcmVGbGFncyB7Ci1AQCAtMzIxNSw3ICszMjkx LDkgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCUNBTl9FRElUX0ZPTERFUlMsCi0gCQlVU0VfQ0FD SEVfRElSLAotIAkJQ0FOX0RFTEVURV9GT0xERVJTX0FUX09OQ0UsCi0tCQlTVVBQT1JUU19JTklU SUFMX1NFVFVQCi0rCQlTVVBQT1JUU19JTklUSUFMX1NFVFVQLAotKwkJSVNfQlVJTFRJTiwKLSsJ CVVTRV9URU1QX0RJUgotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9j YW1lbC5oIiwgY3ByZWZpeCA9ICJDQU1FTF9TVE9SRV9GT0xERVJfIiwgdHlwZV9pZCA9ICJjYW1l bF9zdG9yZV9nZXRfZm9sZGVyX2ZsYWdzX2dldF90eXBlICgpIildCi0gCVtGbGFnc10KLUBAIC0z MzI3LDYgKzM0MDUsMTQgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJCUpVTkssCi0gCQlMQVNUCi0g CX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBjcHJlZml4 ID0gIkNBTUVMX1ZFRV9GT0xERVJfT1BfRkxBR18iLCB0eXBlX2lkID0gImNhbWVsX3ZlZV9mb2xk ZXJfb3BfZmxhZ3NfZ2V0X3R5cGUgKCkiKV0KLSsJW0ZsYWdzXQotKwlbVmVyc2lvbiAoc2luY2Ug PSAiMy41Ny4xIildCi0rCXB1YmxpYyBlbnVtIFZlZUZvbGRlck9wRmxhZ3MgewotKwkJTk9ORSwK LSsJCVNLSVBfUkVCVUlMRCwKLSsJCVNLSVBfRU1JVAotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY25hbWUgPSAiY2FtZWxfc2VhcmNoX2ZsYWdzX3Qi LCBjcHJlZml4ID0gIkNBTUVMX1NFQVJDSF9NQVRDSF8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0K LSAJW0ZsYWdzXQotIAlwdWJsaWMgZW51bSBfc2VhcmNoX2ZsYWdzX3QgewotQEAgLTMzNDMsNyAr MzQyOSw5IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlXT1JELAotIAkJU1RBUlRTLAotIAkJRU5E UywKLS0JCVNPVU5ERVgKLSsJCVNPVU5ERVgsCi0rCQlSRUdFWF9TSU5HTEVMSU5FLAotKwkJUkVH RVhfTVVMVElMSU5FCi0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2Nh bWVsLmgiLCBjbmFtZSA9ICJjYW1lbF9zZWFyY2hfdCIsIGNwcmVmaXggPSAiQ0FNRUxfU0VBUkNI X1RZUEVfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBlbnVtIF9zZWFyY2hfdCB7 Ci1AQCAtMzM1OSwxNCArMzQ0NywxNCBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJQ09NUExFWCwK LSAJCUA4QklUCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVs LmgiLCBjcHJlZml4ID0gIkNBTUVMX0VSUk9SXyIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2FtZWwvY2FtZWwuaCIsIGNwcmVmaXggPSAiQ0FNRUxfRVJST1JfIiwgaGFzX3R5cGVf aWQgPSBmYWxzZSldCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIyLjMyIildCi0gCXB1YmxpYyBlcnJv cmRvbWFpbiBFcnJvciB7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gIkNBTUVMX0VSUk9SX0dFTkVSSUMi KV0KLSAJCUVSUk9SX0dFTkVSSUM7Ci0gCQlwdWJsaWMgc3RhdGljIEdMaWIuUXVhcmsgcXVhcmsg KCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBj cHJlZml4ID0gIkNBTUVMX0ZPTERFUl9FUlJPUl8iKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNhbWVsL2NhbWVsLmgiLCBjcHJlZml4ID0gIkNBTUVMX0ZPTERFUl9FUlJPUl8iLCB0 eXBlX2lkID0gImNhbWVsX2ZvbGRlcl9lcnJvcl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAo c2luY2UgPSAiMi4zMiIpXQotIAlwdWJsaWMgZXJyb3Jkb21haW4gRm9sZGVyRXJyb3IgewotIAkJ SU5WQUxJRCwKLUBAIC0zMzc5LDcgKzM0NjcsNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAkJU1VN TUFSWV9JTlZBTElEOwotIAkJcHVibGljIHN0YXRpYyBHTGliLlF1YXJrIHF1YXJrICgpOwotIAl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY3ByZWZpeCA9 ICJDQU1FTF9TRVJWSUNFX0VSUk9SXyIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2FtZWwvY2FtZWwuaCIsIGNwcmVmaXggPSAiQ0FNRUxfU0VSVklDRV9FUlJPUl8iLCB0eXBlX2lk ID0gImNhbWVsX3NlcnZpY2VfZXJyb3JfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNl ID0gIjIuMzIiKV0KLSAJcHVibGljIGVycm9yZG9tYWluIFNlcnZpY2VFcnJvciB7Ci0gCQlJTlZB TElELAotQEAgLTMzODksNyArMzQ3Nyw3IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCQlOT1RfQ09O TkVDVEVEOwotIAkJcHVibGljIHN0YXRpYyBHTGliLlF1YXJrIHF1YXJrICgpOwotIAl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY3ByZWZpeCA9ICJDQU1F TF9TVE9SRV9FUlJPUl8iKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2Nh bWVsLmgiLCBjcHJlZml4ID0gIkNBTUVMX1NUT1JFX0VSUk9SXyIsIHR5cGVfaWQgPSAiY2FtZWxf c3RvcmVfZXJyb3JfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjIuMzIiKV0K LSAJcHVibGljIGVycm9yZG9tYWluIFN0b3JlRXJyb3IgewotIAkJSU5WQUxJRCwKLUBAIC0zNDA0 LDggKzM0OTIsOCBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlbVmVyc2lvbiAoc2luY2UgPSAiMi4y NCIpXQotIAlwdWJsaWMgZGVsZWdhdGUgaW50IERCQ29sbGF0ZSAodm9pZCogZW5jLCBpbnQgbGVu Z3RoMSwgdm9pZCogZGF0YTEsIGludCBsZW5ndGgyLCB2b2lkKiBkYXRhMik7Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgaW5zdGFuY2VfcG9zID0gMC45KV0K LS0JW1ZlcnNpb24gKHNpbmNlID0gIjIuMjQiKV0KLS0JcHVibGljIGRlbGVnYXRlIGludCBEQlNl bGVjdENCIChbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJuY29sIiwgYXJyYXlfbGVuZ3Ro X3BvcyA9IDAuNjY2NjY3KV0gc3RyaW5nW10gY29sdmFsdWVzLCBbQ0NvZGUgKGFycmF5X2xlbmd0 aF9jbmFtZSA9ICJuY29sIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDAuNjY2NjY3KV0gc3RyaW5nW10g Y29sbmFtZXMpOwotKwlbVmVyc2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCXB1YmxpYyBkZWxl Z2F0ZSBib29sIERCU2VsZWN0Q0IgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5jb2wi LCBhcnJheV9sZW5ndGhfcG9zID0gMC42NjY2NjcpXSBzdHJpbmdbXSBjb2x2YWx1ZXMsIFtDQ29k ZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5jb2wiLCBhcnJheV9sZW5ndGhfcG9zID0gMC42NjY2 NjcpXSBzdHJpbmdbXSBjb2xuYW1lcyk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj YW1lbC9jYW1lbC5oIiwgaW5zdGFuY2VfcG9zID0gMi45KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0g IjMuMjYiKV0KLSAJcHVibGljIGRlbGVnYXRlIGJvb2wgRGF0YUNhY2hlUmVtb3ZlRnVuYyAoQ2Ft ZWwuRGF0YUNhY2hlIGNkYywgc3RyaW5nIGZpbGVuYW1lKTsKLUBAIC0zNDE5LDExICszNTA3LDIw IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIEZpbHRlclN0YXR1 c0Z1bmMgKENhbWVsLkZpbHRlckRyaXZlciBkcml2ZXIsIHZvaWQqIHN0YXR1cywgaW50IHBjLCBz dHJpbmcgZGVzYyk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5o IiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJcHVibGljIGRlbGVnYXRlIHZvaWQgRmlsdGVyU3lz dGVtQmVlcEZ1bmMgKENhbWVsLkZpbHRlckRyaXZlciBkcml2ZXIpOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGluc3RhbmNlX3BvcyA9IDIuOSldCi0tCXB1 YmxpYyBkZWxlZ2F0ZSB2b2lkIEZvcmVhY2hJbmZvRGF0YSAoQ2FtZWwuVmVlTWVzc2FnZUluZm9E YXRhIG1pX2RhdGEsIENhbWVsLkZvbGRlciBzdWJmb2xkZXIpOwotKwlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGhhc190YXJnZXQgPSBmYWxzZSldCi0rCXB1Ymxp YyBkZWxlZ2F0ZSBpbnQ2NCBGb2xkZXJUaHJlYWRJbnQ2NEZ1bmMgKHZvaWQqIGl0ZW0pOwotKwlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGhhc190YXJnZXQgPSBm YWxzZSldCi0rCXB1YmxpYyBkZWxlZ2F0ZSB1bm93bmVkIHN0cmluZyBGb2xkZXJUaHJlYWRTdHJG dW5jICh2b2lkKiBpdGVtKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2Nh bWVsLmgiLCBoYXNfdGFyZ2V0ID0gZmFsc2UpXQotKwlwdWJsaWMgZGVsZWdhdGUgdWludDY0IEZv bGRlclRocmVhZFVpbnQ2NEZ1bmMgKHZvaWQqIGl0ZW0pOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGhhc190YXJnZXQgPSBmYWxzZSldCi0rCXB1YmxpYyBk ZWxlZ2F0ZSB2b2lkIEZvbGRlclRocmVhZFZvaWRGdW5jICh2b2lkKiBpdGVtKTsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBpbnN0YW5jZV9wb3MgPSAzLjkp XQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMy4zNCIpXQotIAlwdWJsaWMgZGVsZWdhdGUgYm9vbCBG b3JlYWNoUGFydEZ1bmMgKENhbWVsLk1pbWVNZXNzYWdlIG1lc3NhZ2UsIENhbWVsLk1pbWVQYXJ0 IHBhcnQsIENhbWVsLk1pbWVQYXJ0PyBwYXJlbnRfcGFydCk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSsJW1ZlcnNp b24gKHNpbmNlID0gIjMuNTIiKV0KLSsJcHVibGljIGRlbGVnYXRlIHN0cmluZz8gR2VuZXJhdGVQ cmV2aWV3RnVuYyAodm9pZCogcGFydCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj YW1lbC9jYW1lbC5oIiwgaW5zdGFuY2VfcG9zID0gMi45KV0KLSAJcHVibGljIGRlbGVnYXRlIHN0 cmluZyBJbmRleE5vcm0gKENhbWVsLkluZGV4IGluZGV4LCBzdHJpbmcgd29yZCk7Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgaW5zdGFuY2VfcG9zID0gMi45 KV0KLUBAIC0zNDQwLDYgKzM1MzcsOSBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGluc3RhbmNlX3BvcyA9IDIuOSldCi0g CVtWZXJzaW9uIChzaW5jZSA9ICIzLjIiKV0KLSAJcHVibGljIGRlbGVnYXRlIHZvaWQgU2Vzc2lv bkNhbGxiYWNrIChDYW1lbC5TZXNzaW9uIHNlc3Npb24sIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNl bGxhYmxlKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNhbWVsL2NhbWVsLmgiLCBpbnN0YW5jZV9wb3MgPSAyLjkpXQotKwlbVmVyc2lvbiAoc2luY2Ug PSAiMy41Ny4xIildCi0rCXB1YmxpYyBkZWxlZ2F0ZSBib29sIFN0b3JlREJSZWFkTWVzc2FnZXNG dW5jIChDYW1lbC5TdG9yZURCIHN0b3JlZGIsIENhbWVsLlN0b3JlREJNZXNzYWdlUmVjb3JkIHJl Y29yZCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgaGFz X3RhcmdldCA9IGZhbHNlKV0KLSAJcHVibGljIGRlbGVnYXRlIHZvaWQgVGV4dEluZGV4RnVuYyAo Q2FtZWwuVGV4dEluZGV4IGlkeCwgc3RyaW5nIHdvcmQsIHN0cmluZyBidWZmZXIpOwotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGhhc190YXJnZXQgPSBmYWxz ZSldCi1AQCAtMzQ1OCwyNCArMzU1OCw2IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY25hbWUgPSAiQ0FNRUxfQ0lQSEVS X0NFUlRfSU5GT19QUk9QRVJUWV9TSUdORVJTX0FMVF9FTUFJTFMiKV0KLSAJW1ZlcnNpb24gKHNp bmNlID0gIjMuMjgiKV0KLSAJcHVibGljIGNvbnN0IHN0cmluZyBDSVBIRVJfQ0VSVF9JTkZPX1BS T1BFUlRZX1NJR05FUlNfQUxUX0VNQUlMUzsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNhbWVsL2NhbWVsLmgiLCBjbmFtZSA9ICJDQU1FTF9EQl9GSUxFIildCi0tCVtWZXJzaW9uIChz aW5jZSA9ICIyLjI0IildCi0tCXB1YmxpYyBjb25zdCBzdHJpbmcgREJfRklMRTsKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBjbmFtZSA9ICJDQU1FTF9EQl9G UkVFX0NBQ0hFX1NJWkUiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjIuMjQiKV0KLS0JcHVibGlj IGNvbnN0IGludCBEQl9GUkVFX0NBQ0hFX1NJWkU7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjYW1lbC9jYW1lbC5oIiwgY25hbWUgPSAiQ0FNRUxfREJfSU5fTUVNT1JZX0RCIildCi0t CVtWZXJzaW9uIChzaW5jZSA9ICIyLjI2IildCi0tCXB1YmxpYyBjb25zdCBzdHJpbmcgREJfSU5f TUVNT1JZX0RCOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIs IGNuYW1lID0gIkNBTUVMX0RCX0lOX01FTU9SWV9UQUJMRSIpXQotLQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4yNiIpXQotLQlwdWJsaWMgY29uc3Qgc3RyaW5nIERCX0lOX01FTU9SWV9UQUJMRTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiLCBjbmFtZSA9ICJDQU1F TF9EQl9JTl9NRU1PUllfVEFCTEVfTElNSVQiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjIuMjYi KV0KLS0JcHVibGljIGNvbnN0IGludCBEQl9JTl9NRU1PUllfVEFCTEVfTElNSVQ7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY25hbWUgPSAiQ0FNRUxfREJf U0xFRVBfSU5URVJWQUwiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjIuMjQiKV0KLS0JcHVibGlj IGNvbnN0IGludCBEQl9TTEVFUF9JTlRFUlZBTDsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNhbWVsL2NhbWVsLmgiLCBjbmFtZSA9ICJDQU1FTF9ERUJVR19JTUFQIildCi0gCXB1Ymxp YyBjb25zdCBzdHJpbmcgREVCVUdfSU1BUDsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNhbWVsL2NhbWVsLmgiLCBjbmFtZSA9ICJDQU1FTF9ERUJVR19JTUFQX0ZPTERFUiIpXQotQEAg LTM1MzAsNiArMzYxMiw5IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCXB1YmxpYyBjb25zdCBpbnQg TE9DS19ET1RfU1RBTEU7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1l bC5oIiwgY25hbWUgPSAiQ0FNRUxfTE9DS19SRVRSWSIpXQotIAlwdWJsaWMgY29uc3QgaW50IExP Q0tfUkVUUlk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwg Y25hbWUgPSAiQ0FNRUxfTUFYX1BSRVZJRVdfTEVOR1RIIildCi0rCVtWZXJzaW9uIChzaW5jZSA9 ICIzLjUyIildCi0rCXB1YmxpYyBjb25zdCBpbnQgTUFYX1BSRVZJRVdfTEVOR1RIOwotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGNuYW1lID0gIkNBTUVMX01F U1NBR0VfREFURV9DVVJSRU5UIildCi0gCXB1YmxpYyBjb25zdCBpbnQgTUVTU0FHRV9EQVRFX0NV UlJFTlQ7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY25h bWUgPSAiQ0FNRUxfTUVTU0FHRV9TWVNURU1fTUFTSyIpXQotQEAgLTM1NzYsNiArMzY2MSwxNSBA QCBuYW1lc3BhY2UgQ2FtZWwgewotIAlwdWJsaWMgY29uc3Qgc3RyaW5nIFJFQ0lQSUVOVF9UWVBF X1JFU0VOVF9UTzsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgi LCBjbmFtZSA9ICJDQU1FTF9SRUNJUElFTlRfVFlQRV9UTyIpXQotIAlwdWJsaWMgY29uc3Qgc3Ry aW5nIFJFQ0lQSUVOVF9UWVBFX1RPOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2Ft ZWwvY2FtZWwuaCIsIGNuYW1lID0gIkNBTUVMX1NFU1NJT05fQk9PS19VSURfQU5ZIildCi0rCVtW ZXJzaW9uIChzaW5jZSA9ICIzLjQ0IildCi0rCXB1YmxpYyBjb25zdCBzdHJpbmcgU0VTU0lPTl9C T09LX1VJRF9BTlk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5o IiwgY25hbWUgPSAiQ0FNRUxfU0VTU0lPTl9CT09LX1VJRF9DT01QTEVUSU9OIildCi0rCVtWZXJz aW9uIChzaW5jZSA9ICIzLjQ0IildCi0rCXB1YmxpYyBjb25zdCBzdHJpbmcgU0VTU0lPTl9CT09L X1VJRF9DT01QTEVUSU9OOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2Ft ZWwuaCIsIGNuYW1lID0gIkNBTUVMX1NUT1JFX0RCX0ZJTEUiKV0KLSsJW1ZlcnNpb24gKHNpbmNl ID0gIjMuNTcuMSIpXQotKwlwdWJsaWMgY29uc3Qgc3RyaW5nIFNUT1JFX0RCX0ZJTEU7Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIiwgY25hbWUgPSAiQ0FNRUxf U1RPUkVfSU5GT19GT0xERVJfVFlQRV9CSVQiKV0KLSAJcHVibGljIGNvbnN0IGludCBTVE9SRV9J TkZPX0ZPTERFUl9UWVBFX0JJVDsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVs L2NhbWVsLmgiLCBjbmFtZSA9ICJDQU1FTF9TVE9SRV9JTkZPX0ZPTERFUl9UWVBFX01BU0siKV0K LUBAIC0zNTkwLDggKzM2ODQsNiBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlwdWJsaWMgY29uc3Qg c3RyaW5nIFNUT1JFX1NFVFVQX1NFTlRfRk9MREVSOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2FtZWwvY2FtZWwuaCIsIGNuYW1lID0gIkNBTUVMX1NUT1JFX1NFVFVQX1RFTVBMQVRF U19GT0xERVIiKV0KLSAJcHVibGljIGNvbnN0IHN0cmluZyBTVE9SRV9TRVRVUF9URU1QTEFURVNf Rk9MREVSOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIsIGNu YW1lID0gIkNBTUVMX1VOTUFUQ0hFRF9OQU1FIildCi0tCXB1YmxpYyBjb25zdCBzdHJpbmcgVU5N QVRDSEVEX05BTUU7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5o IiwgY25hbWUgPSAiQ0FNRUxfVVJMX0hJREVfQUxMIildCi0gCXB1YmxpYyBjb25zdCBpbnQgVVJM X0hJREVfQUxMOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIs IGNuYW1lID0gIkNBTUVMX1VSTF9QQVJUX0FVVEgiKV0KLUBAIC0zNjMwLDEzICszNzIyLDI1IEBA IG5hbWVzcGFjZSBDYW1lbCB7Ci0gCVtWZXJzaW9uIChzaW5jZSA9ICIzLjE2IildCi0gCXB1Ymxp YyBzdGF0aWMgdW5vd25lZCBHTGliLkJpbmRpbmcgYmluZGluZ19iaW5kX3Byb3BlcnR5X3dpdGhf Y2xvc3VyZXMgKEdMaWIuT2JqZWN0IHNvdXJjZSwgc3RyaW5nIHNvdXJjZV9wcm9wZXJ0eSwgR0xp Yi5PYmplY3QgdGFyZ2V0LCBzdHJpbmcgdGFyZ2V0X3Byb3BlcnR5LCBHTGliLkJpbmRpbmdGbGFn cyBmbGFncywgR0xpYi5DbG9zdXJlIHRyYW5zZm9ybV90bywgR0xpYi5DbG9zdXJlIHRyYW5zZm9y bV9mcm9tKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0K LSsJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0gIkNoYXJzZXQuYmVzdCIpXQotKwlwdWJsaWMgc3Rh dGljIHVub3duZWQgc3RyaW5nPyBjaGFyc2V0X2Jlc3QgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2Nu YW1lID0gImxlbiIsIGFycmF5X2xlbmd0aF9wb3MgPSAxLjEpXSBjaGFyW10gQGluKTsKLSsJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKHJl cGxhY2VtZW50ID0gIkNoYXJzZXQuaXNvX3RvX3dpbmRvd3MiKV0KLSsJcHVibGljIHN0YXRpYyB1 bm93bmVkIHN0cmluZyBjaGFyc2V0X2lzb190b193aW5kb3dzIChzdHJpbmcgaXNvY2hhcnNldCk7 Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCVtWZXJz aW9uIChzaW5jZSA9ICIzLjIyIildCi0gCXB1YmxpYyBzdGF0aWMgYm9vbCBjaXBoZXJfY2FuX2xv YWRfcGhvdG9zICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwu aCIpXQotIAlwdWJsaWMgc3RhdGljIGludCBjaXBoZXJfY2Fub25pY2FsX3RvX3N0cmVhbSAoQ2Ft ZWwuTWltZVBhcnQgcGFydCwgdWludDMyIGZsYWdzLCBDYW1lbC5TdHJlYW0gb3N0cmVhbSwgR0xp Yi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24g KHJlcGxhY2VtZW50ID0gIkNvbnRlbnREaXNwb3NpdGlvbi5kZWNvZGUiKV0KLSsJcHVibGljIHN0 YXRpYyBDYW1lbC5Db250ZW50RGlzcG9zaXRpb24gY29udGVudF9kaXNwb3NpdGlvbl9kZWNvZGUg KHN0cmluZyBAaW4pOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwu aCIpXQotIAlwdWJsaWMgc3RhdGljIHN0cmluZyBjb250ZW50X3RyYW5zZmVyX2VuY29kaW5nX2Rl Y29kZSAoc3RyaW5nIEBpbik7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9j YW1lbC5oIildCi0rCVtWZXJzaW9uIChyZXBsYWNlbWVudCA9ICJDb250ZW50VHlwZS5kZWNvZGUi KV0KLSsJcHVibGljIHN0YXRpYyBDYW1lbC5Db250ZW50VHlwZSBjb250ZW50X3R5cGVfZGVjb2Rl IChzdHJpbmcgQGluKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVs LmgiKV0KLSAJcHVibGljIHN0YXRpYyBib29sIGRlYnVnIChzdHJpbmcgbW9kZSk7Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIzLjMwIildCi1AQCAtMzY0NSwxMCArMzc0OSwxMCBAQCBuYW1lc3BhY2UgQ2FtZWwgewot IAlwdWJsaWMgc3RhdGljIHZvaWQgZGVidWdfZW5kICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMy4xMiIpXQot LQlwdWJsaWMgc3RhdGljIEdMaWIuU3RyaW5nQnVpbGRlciBkZWJ1Z19nZXRfYmFja3RyYWNlICgp OwotKwlwdWJsaWMgc3RhdGljIEdMaWIuU3RyaW5nQnVpbGRlcj8gZGVidWdfZ2V0X2JhY2t0cmFj ZSAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJ W1ZlcnNpb24gKHNpbmNlID0gIjMuMzAiKV0KLS0JcHVibGljIHN0YXRpYyBHTGliLlN0cmluZ0J1 aWxkZXIgZGVidWdfZ2V0X3Jhd19iYWNrdHJhY2UgKCk7Ci0rCXB1YmxpYyBzdGF0aWMgR0xpYi5T dHJpbmdCdWlsZGVyPyBkZWJ1Z19nZXRfcmF3X2JhY2t0cmFjZSAoKTsKLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJcHVibGljIHN0YXRpYyB2b2lkIGRl YnVnX2luaXQgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5o IildCi1AQCAtMzY2OSwxMyArMzc3MywxNiBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlwdWJsaWMgc3RhdGljIGlu dCBmaWxlX3V0aWxfZGVjb2RlX2ZpeGVkX3N0cmluZyAodm9pZCogQGluLCBzdHJpbmcgc3RyLCBz aXplX3QgbGVuKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgi KV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTAiKV0KLSsJcHVibGljIHN0YXRpYyBpbnQgZmls ZV91dGlsX2RlY29kZV9naW50NjQgKHZvaWQqIEBpbiwgaW50NjQgZGVzdCk7Ci0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgaW50 IGZpbGVfdXRpbF9kZWNvZGVfZ3NpemUgKHZvaWQqIEBpbiwgc2l6ZV90IGRlc3QpOwotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotLQlwdWJsaWMgc3RhdGlj IGludCBmaWxlX3V0aWxfZGVjb2RlX29mZl90ICh2b2lkKiBAaW4sIHNpemVfdCBkZXN0KTsKLSsJ cHVibGljIHN0YXRpYyBpbnQgZmlsZV91dGlsX2RlY29kZV9vZmZfdCAodm9pZCogQGluLCBvZmZf dCBkZXN0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0K LSAJcHVibGljIHN0YXRpYyBpbnQgZmlsZV91dGlsX2RlY29kZV9zdHJpbmcgKHZvaWQqIEBpbiwg c3RyaW5nIHN0cik7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5o IildCi0tCXB1YmxpYyBzdGF0aWMgaW50IGZpbGVfdXRpbF9kZWNvZGVfdGltZV90ICh2b2lkKiBA aW4sIGxvbmcgZGVzdCk7Ci0rCXB1YmxpYyBzdGF0aWMgaW50IGZpbGVfdXRpbF9kZWNvZGVfdGlt ZV90ICh2b2lkKiBAaW4sIHRpbWVfdCBkZXN0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJcHVibGljIHN0YXRpYyBpbnQgZmlsZV91dGlsX2RlY29k ZV91aW50MzIgKHZvaWQqIEBpbiwgdWludDMyIGRlc3QpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotQEAgLTM2ODMsMTMgKzM3OTAsMTYgQEAgbmFtZXNw YWNlIENhbWVsIHsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgi KV0KLSAJcHVibGljIHN0YXRpYyBpbnQgZmlsZV91dGlsX2VuY29kZV9maXhlZF9zdHJpbmcgKHZv aWQqIEBvdXQsIHN0cmluZyBzdHIsIHNpemVfdCBsZW4pOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMy41MCIpXQot KwlwdWJsaWMgc3RhdGljIGludCBmaWxlX3V0aWxfZW5jb2RlX2dpbnQ2NCAodm9pZCogQG91dCwg aW50NjQgdmFsdWUpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwu aCIpXQotIAlwdWJsaWMgc3RhdGljIGludCBmaWxlX3V0aWxfZW5jb2RlX2dzaXplICh2b2lkKiBA b3V0LCBzaXplX3QgdmFsdWUpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwv Y2FtZWwuaCIpXQotLQlwdWJsaWMgc3RhdGljIGludCBmaWxlX3V0aWxfZW5jb2RlX29mZl90ICh2 b2lkKiBAb3V0LCBzaXplX3QgdmFsdWUpOwotKwlwdWJsaWMgc3RhdGljIGludCBmaWxlX3V0aWxf ZW5jb2RlX29mZl90ICh2b2lkKiBAb3V0LCBvZmZfdCB2YWx1ZSk7Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgaW50IGZpbGVf dXRpbF9lbmNvZGVfc3RyaW5nICh2b2lkKiBAb3V0LCBzdHJpbmcgc3RyKTsKLSAJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLS0JcHVibGljIHN0YXRpYyBpbnQg ZmlsZV91dGlsX2VuY29kZV90aW1lX3QgKHZvaWQqIEBvdXQsIGxvbmcgdmFsdWUpOwotKwlwdWJs aWMgc3RhdGljIGludCBmaWxlX3V0aWxfZW5jb2RlX3RpbWVfdCAodm9pZCogQG91dCwgdGltZV90 IHZhbHVlKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0K LSAJcHVibGljIHN0YXRpYyBpbnQgZmlsZV91dGlsX2VuY29kZV91aW50MzIgKHZvaWQqIEBvdXQs IHVpbnQzMiB2YWx1ZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1l bC5oIildCi1AQCAtMzY5NywxNSArMzgwNyw0MiBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlwdWJsaWMgc3RhdGlj IHN0cmluZyBmaWxlX3V0aWxfc2F2ZW5hbWUgKHN0cmluZyBmaWxlbmFtZSk7Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0rCVtWZXJzaW9uIChyZXBsYWNl bWVudCA9ICJGb2xkZXJFcnJvci5xdWFyayIpXQotKwlwdWJsaWMgc3RhdGljIEdMaWIuUXVhcmsg Zm9sZGVyX2Vycm9yX3F1YXJrICgpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2Ft ZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAocmVwbGFjZW1lbnQgPSAiRm9sZGVySW5mby5idWls ZCIpXQotKwlwdWJsaWMgc3RhdGljIENhbWVsLkZvbGRlckluZm8gZm9sZGVyX2luZm9fYnVpbGQg KEdMaWIuR2VuZXJpY0FycmF5PENhbWVsLkZvbGRlckluZm8+IGZvbGRlcnMsIHN0cmluZyBuYW1l c3BhY2VfLCBjaGFyIHNlcGFyYXRvciwgYm9vbCBzaG9ydF9uYW1lcyk7Ci0rCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIy LjIyIildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBmcmVlYWRkcmluZm8gKHZvaWQqIGhvc3QpOwot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlbVmVyc2lv biAoc2luY2UgPSAiMi4yMiIpXQotIAlwdWJsaWMgc3RhdGljIHZvaWQqIGdldGFkZHJpbmZvIChz dHJpbmcgbmFtZSwgc3RyaW5nIHNlcnZpY2UsIHZvaWQqIGhpbnRzLCBHTGliLkNhbmNlbGxhYmxl PyBjYW5jZWxsYWJsZSA9IG51bGwpIHRocm93cyBHTGliLkVycm9yOwotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAocmVwbGFjZW1lbnQg PSAiSGVhZGVyQWRkcmVzcy5kZWNvZGUiKV0KLSsJcHVibGljIHN0YXRpYyBDYW1lbC5IZWFkZXJB ZGRyZXNzIGhlYWRlcl9hZGRyZXNzX2RlY29kZSAoc3RyaW5nIEBpbiwgc3RyaW5nIGNoYXJzZXQp OwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVy c2lvbiAocmVwbGFjZW1lbnQgPSAiSGVhZGVyQWRkcmVzcy5mb2xkIildCi0rCXB1YmxpYyBzdGF0 aWMgc3RyaW5nIGhlYWRlcl9hZGRyZXNzX2ZvbGQgKHN0cmluZyBAaW4sIHNpemVfdCBoZWFkZXJs ZW4pOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlb VmVyc2lvbiAocmVwbGFjZW1lbnQgPSAiSGVhZGVyQWRkcmVzcy5saXN0X2FwcGVuZCIpXQotKwlw dWJsaWMgc3RhdGljIHZvaWQgaGVhZGVyX2FkZHJlc3NfbGlzdF9hcHBlbmQgKFtDQ29kZSAoYXJy YXlfbGVuZ3RoID0gZmFsc2UsIGFycmF5X251bGxfdGVybWluYXRlZCA9IHRydWUpXSBDYW1lbC5I ZWFkZXJBZGRyZXNzW10gYWRkcmxpc3RwLCBDYW1lbC5IZWFkZXJBZGRyZXNzIGFkZHIpOwotKwlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAo cmVwbGFjZW1lbnQgPSAiSGVhZGVyQWRkcmVzcy5saXN0X2FwcGVuZF9saXN0IildCi0rCXB1Ymxp YyBzdGF0aWMgdm9pZCBoZWFkZXJfYWRkcmVzc19saXN0X2FwcGVuZF9saXN0IChbQ0NvZGUgKGFy cmF5X2xlbmd0aCA9IGZhbHNlLCBhcnJheV9udWxsX3Rlcm1pbmF0ZWQgPSB0cnVlKV0gQ2FtZWwu SGVhZGVyQWRkcmVzc1tdIGFkZHJsaXN0cCwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSwg YXJyYXlfbnVsbF90ZXJtaW5hdGVkID0gdHJ1ZSldIENhbWVsLkhlYWRlckFkZHJlc3NbXSBhZGRy cyk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0rCVtW ZXJzaW9uIChyZXBsYWNlbWVudCA9ICJIZWFkZXJBZGRyZXNzLmxpc3RfY2xlYXIiKV0KLSsJcHVi bGljIHN0YXRpYyB2b2lkIGhlYWRlcl9hZGRyZXNzX2xpc3RfY2xlYXIgKFtDQ29kZSAoYXJyYXlf bGVuZ3RoID0gZmFsc2UsIGFycmF5X251bGxfdGVybWluYXRlZCA9IHRydWUpXSBDYW1lbC5IZWFk ZXJBZGRyZXNzW10gYWRkcmxpc3RwKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNh bWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0gIkhlYWRlckFkZHJlc3Mu bGlzdF9lbmNvZGUiKV0KLSsJcHVibGljIHN0YXRpYyBzdHJpbmcgaGVhZGVyX2FkZHJlc3NfbGlz dF9lbmNvZGUgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UsIGFycmF5X251bGxfdGVybWlu YXRlZCA9IHRydWUpXSBDYW1lbC5IZWFkZXJBZGRyZXNzW10gYWRkcmxpc3QpOwotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAocmVwbGFj ZW1lbnQgPSAiSGVhZGVyQWRkcmVzcy5saXN0X2Zvcm1hdCIpXQotKwlwdWJsaWMgc3RhdGljIHN0 cmluZyBoZWFkZXJfYWRkcmVzc19saXN0X2Zvcm1hdCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBm YWxzZSwgYXJyYXlfbnVsbF90ZXJtaW5hdGVkID0gdHJ1ZSldIENhbWVsLkhlYWRlckFkZHJlc3Nb XSBhZGRybGlzdCk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5o IildCi0gCXB1YmxpYyBzdGF0aWMgc3RyaW5nIGhlYWRlcl9jb250ZW50aWRfZGVjb2RlIChzdHJp bmcgQGluKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0K LS0JcHVibGljIHN0YXRpYyBsb25nIGhlYWRlcl9kZWNvZGVfZGF0ZSAoc3RyaW5nIHN0ciwgaW50 IHR6X29mZnNldCk7Ci0rCXB1YmxpYyBzdGF0aWMgdGltZV90IGhlYWRlcl9kZWNvZGVfZGF0ZSAo c3RyaW5nIHN0ciwgaW50IHR6X29mZnNldCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgaW50IGhlYWRlcl9kZWNvZGVfaW50 IChzdHJpbmcgQGluKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVs LmgiKV0KLUBAIC0zNzE5LDcgKzM4NTYsNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlwdWJsaWMgc3RhdGljIHN0 cmluZyBoZWFkZXJfZm9ybWF0X2N0ZXh0IChzdHJpbmcgQGluLCBzdHJpbmcgZGVmYXVsdF9jaGFy c2V0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLS0J cHVibGljIHN0YXRpYyBzdHJpbmcgaGVhZGVyX2Zvcm1hdF9kYXRlIChsb25nIGRhdGUsIGludCB0 el9vZmZzZXQpOwotKwlwdWJsaWMgc3RhdGljIHN0cmluZyBoZWFkZXJfZm9ybWF0X2RhdGUgKHRp bWVfdCBkYXRlLCBpbnQgdHpfb2Zmc2V0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNhbWVsL2NhbWVsLmgiKV0KLSAJcHVibGljIHN0YXRpYyBzdHJpbmcgaGVhZGVyX2xvY2F0aW9u X2RlY29kZSAoc3RyaW5nIEBpbik7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1l bC9jYW1lbC5oIildCi1AQCAtMzcyOSw3ICszODY2LDcgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJcHVibGljIHN0 YXRpYyBzdHJpbmcgaGVhZGVyX21zZ2lkX2RlY29kZSAoc3RyaW5nIEBpbik7Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0tCXB1YmxpYyBzdGF0aWMgc3Ry aW5nIGhlYWRlcl9tc2dpZF9nZW5lcmF0ZSAoc3RyaW5nIGRvbWFpbik7Ci0rCXB1YmxpYyBzdGF0 aWMgc3RyaW5nIGhlYWRlcl9tc2dpZF9nZW5lcmF0ZSAoc3RyaW5nPyBkb21haW4pOwotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlwdWJsaWMgc3RhdGlj IEdMaWIuU0xpc3Q8c3RyaW5nPiBoZWFkZXJfbmV3c2dyb3Vwc19kZWNvZGUgKHN0cmluZyBAaW4p OwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotQEAgLTM3 NDQsNyArMzg4MSwxMyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlwdWJsaWMgc3RhdGljIHN0cmlu Zz8gaGVhZGVyc19kdXBfbWFpbGluZ19saXN0IChDYW1lbC5OYW1lVmFsdWVBcnJheSBoZWFkZXJz KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJW1Zl cnNpb24gKHNpbmNlID0gIjMuMTYiKV0KLS0JcHVibGljIHN0YXRpYyBzdHJpbmcgaG9zdF9pZG5h X3RvX2FzY2lpIChzdHJpbmcgaG9zdCk7Ci0rCXB1YmxpYyBzdGF0aWMgc3RyaW5nPyBob3N0X2lk bmFfdG9fYXNjaWkgKHN0cmluZz8gaG9zdCk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjYW1lbC9jYW1lbC5oIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIzLjU0IildCi0rCXB1Ymxp YyBzdGF0aWMgYm9vbCBob3N0bmFtZV91dGlsc19ob3N0X2lzX2luX2RvbWFpbiAoc3RyaW5nPyBo b3N0LCBzdHJpbmc/IGRvbWFpbik7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1l bC9jYW1lbC5oIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQ0IildCi0rCXB1YmxpYyBzdGF0 aWMgYm9vbCBob3N0bmFtZV91dGlsc19yZXF1aXJlc19hc2NpaSAoc3RyaW5nIGhvc3RuYW1lKTsK LSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJcHVibGlj IHN0YXRpYyB1bm93bmVkIHN0cmluZyBpY29udl9jaGFyc2V0X2xhbmd1YWdlIChzdHJpbmcgY2hh cnNldCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi1A QCAtMzc1Niw3ICszODk5LDcgQEAgbmFtZXNwYWNlIENhbWVsIHsKLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJcHVibGljIHN0YXRpYyBpbnQgaW5pdCAo c3RyaW5nIGNlcnRkYl9kaXIsIGJvb2wgbnNzX2luaXQpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgbG9jYWx0aW1l X3dpdGhfb2Zmc2V0IChsb25nIHR0LCBbQ0NvZGUgKHR5cGUgPSAidG0qIildIFBvc2l4LnRtIHRt LCBpbnQgb2Zmc2V0KTsKLSsJcHVibGljIHN0YXRpYyB2b2lkIGxvY2FsdGltZV93aXRoX29mZnNl dCAodGltZV90IHR0LCBbQ0NvZGUgKHR5cGUgPSAidG0qIildIFBvc2l4LnRtIHRtLCBpbnQgb2Zm c2V0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJ cHVibGljIHN0YXRpYyBpbnQgbG9ja19kb3QgKHN0cmluZyBwYXRoKSB0aHJvd3MgR0xpYi5FcnJv cjsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLUBAIC0z NzcxLDcgKzM5MTQsNyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlwdWJsaWMgc3RhdGljIGludCBs b2NrX2hlbHBlcl91bmxvY2sgKGludCBsb2NraWQpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMy40IildCi0tCXB1 YmxpYyBzdGF0aWMgbG9uZyBta3RpbWVfdXRjIChbQ0NvZGUgKHR5cGUgPSAidG0qIildIFBvc2l4 LnRtIHRtKTsKLSsJcHVibGljIHN0YXRpYyB0aW1lX3QgbWt0aW1lX3V0YyAoW0NDb2RlICh0eXBl ID0gInRtKiIpXSBQb3NpeC50bSB0bSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj YW1lbC9jYW1lbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgaW50IG1vdmVtYWlsIChzdHJpbmcgc291 cmNlLCBzdHJpbmcgZGVzdCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi1AQCAtMzc4NCwyMCArMzkyNywzNSBAQCBuYW1l c3BhY2UgQ2FtZWwgewotIAlbVmVyc2lvbiAoc2luY2UgPSAiMy42IildCi0gCXB1YmxpYyBzdGF0 aWMgdm9pZCBwb2ludGVyX3RyYWNrZXJfdW50cmFjayAodm9pZCogcHRyKTsKLSAJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93 bmVkIHN0cmluZyBwc3RyaW5nX2FkZCAoc3RyaW5nIHN0cmluZywgYm9vbCBvd24pOwotKwlbVmVy c2lvbiAocmVwbGFjZW1lbnQgPSAiUHJvdmlkZXIuZ2V0IildCi0rCXB1YmxpYyBzdGF0aWMgQ2Ft ZWwuUHJvdmlkZXIgcHJvdmlkZXJfZ2V0IChzdHJpbmcgcHJvdG9jb2wpIHRocm93cyBHTGliLkVy cm9yOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlb VmVyc2lvbiAocmVwbGFjZW1lbnQgPSAiUHJvdmlkZXIuaW5pdCIpXQotKwlwdWJsaWMgc3RhdGlj IHZvaWQgcHJvdmlkZXJfaW5pdCAoKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNh bWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0gIlByb3ZpZGVyLmxpc3Qi KV0KLSsJcHVibGljIHN0YXRpYyBHTGliLkxpc3Q8d2VhayBDYW1lbC5Qcm92aWRlcj4gcHJvdmlk ZXJfbGlzdCAoYm9vbCBsb2FkKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVs L2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0gIlByb3ZpZGVyLmxvYWQiKV0K LSsJcHVibGljIHN0YXRpYyBib29sIHByb3ZpZGVyX2xvYWQgKHN0cmluZyBwYXRoKSB0aHJvd3Mg R0xpYi5FcnJvcjsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgi KV0KLSsJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0gIlByb3ZpZGVyTW9kdWxlLmluaXQiKV0KLSsJ cHVibGljIHN0YXRpYyB2b2lkIHByb3ZpZGVyX21vZHVsZV9pbml0ICgpOwotKwlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlwdWJsaWMgc3RhdGljIHVub3du ZWQgc3RyaW5nPyBwc3RyaW5nX2FkZCAoc3RyaW5nPyBzdHJpbmcsIGJvb2wgb3duKTsKLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJW1ZlcnNpb24gKHNp bmNlID0gIjMuMjIiKV0KLS0JcHVibGljIHN0YXRpYyBib29sIHBzdHJpbmdfY29udGFpbnMgKHN0 cmluZyBzdHJpbmcpOwotKwlwdWJsaWMgc3RhdGljIGJvb2wgcHN0cmluZ19jb250YWlucyAoc3Ry aW5nPyBzdHJpbmcpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwu aCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMy42IildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBw c3RyaW5nX2R1bXBfc3RhdCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVs L2NhbWVsLmgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHBzdHJpbmdfZnJlZSAoc3RyaW5nIHN0 cmluZyk7Ci0rCXB1YmxpYyBzdGF0aWMgdm9pZCBwc3RyaW5nX2ZyZWUgKHN0cmluZz8gc3RyaW5n KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJW1Zl cnNpb24gKHNpbmNlID0gIjIuMjQiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIHN0cmluZyBw c3RyaW5nX3BlZWsgKHN0cmluZyBzdHJpbmcpOwotKwlwdWJsaWMgc3RhdGljIHVub3duZWQgc3Ry aW5nPyBwc3RyaW5nX3BlZWsgKHN0cmluZz8gc3RyaW5nKTsKLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIHN0cmlu ZyBwc3RyaW5nX3N0cmR1cCAoc3RyaW5nIHN0cmluZyk7Ci0rCXB1YmxpYyBzdGF0aWMgdW5vd25l ZCBzdHJpbmc/IHBzdHJpbmdfc3RyZHVwIChzdHJpbmc/IHN0cmluZyk7Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgc2l6ZV90 IHF1b3RlZF9kZWNvZGVfc3RlcCAoW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUgPSAibGVuIiwg YXJyYXlfbGVuZ3RoX3BvcyA9IDEuNSwgYXJyYXlfbGVuZ3RoX3R5cGUgPSAiZ3NpemUiKV0gdWlu dDhbXSBAaW4sIFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSByZWYgdWludDhbXSBAb3V0 LCBbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJzYXZlc3RhdGUiLCBhcnJheV9sZW5ndGhf cG9zID0gMi41KV0gcmVmIGludFtdIHNhdmVtZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjYW1lbC9jYW1lbC5oIildCi1AQCAtMzgyOSwyMyArMzk4Nyw1NCBAQCBuYW1lc3BhY2Ug Q2FtZWwgewotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQot IAlwdWJsaWMgc3RhdGljIGJvb2wgc2VhcmNoX2hlYWRlcl9tYXRjaCAoc3RyaW5nIHZhbHVlLCBz dHJpbmcgbWF0Y2gsIENhbWVsLl9zZWFyY2hfbWF0Y2hfdCBob3csIENhbWVsLl9zZWFyY2hfdCB0 eXBlLCBzdHJpbmcgZGVmYXVsdF9jaGFyc2V0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNhbWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjMuNTcuMSIpXQotKwlw dWJsaWMgc3RhdGljIHRpbWVfdCBzZWFyY2hfdXRpbF9hZGRfbW9udGhzICh0aW1lX3QgdCwgaW50 IG1vbnRocyk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIild Ci0rCVtWZXJzaW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJcHVibGljIHN0YXRpYyBpbnQgc2Vh cmNoX3V0aWxfY29tcGFyZV9kYXRlIChpbnQ2NCBkYXRldGltZTEsIGludDY0IGRhdGV0aW1lMik7 Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0rCVtWZXJz aW9uIChzaW5jZSA9ICIzLjU3LjEiKV0KLSsJcHVibGljIHN0YXRpYyB1aW50NjQgc2VhcmNoX3V0 aWxfaGFzaF9tZXNzYWdlX2lkIChzdHJpbmcgbWVzc2FnZV9pZCwgYm9vbCBuZWVkc19kZWNvZGUp OwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVy c2lvbiAoc2luY2UgPSAiMy41Ny4xIildCi0rCXB1YmxpYyBzdGF0aWMgdGltZV90IHNlYXJjaF91 dGlsX21ha2VfdGltZSAoaW50IGFyZ2MsIENhbWVsLlNFeHBSZXN1bHQgYXJndik7Ci0rCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0rCVtWZXJzaW9uIChzaW5j ZSA9ICIzLjU3LjEiKV0KLSsJcHVibGljIHN0YXRpYyBpbnQ2NCBzZWFyY2hfdXRpbF9zdHJfdG9f dGltZSAoc3RyaW5nPyBzdHIpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwv Y2FtZWwuaCIpXQotIAlwdWJsaWMgc3RhdGljIHZvaWQgc2VhcmNoX3dvcmRzX2ZyZWUgKHZvaWQq IHdvcmRzKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0K LSAJcHVibGljIHN0YXRpYyB2b2lkKiBzZWFyY2hfd29yZHNfc2ltcGxlICh2b2lkKiB3b3Jkcyk7 Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1Ymxp YyBzdGF0aWMgdm9pZCogc2VhcmNoX3dvcmRzX3NwbGl0ICh1aW50OCBAaW4pOwotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAocmVwbGFj ZW1lbnQgPSAiU2VydmljZUVycm9yLnF1YXJrIildCi0rCXB1YmxpYyBzdGF0aWMgR0xpYi5RdWFy ayBzZXJ2aWNlX2Vycm9yX3F1YXJrICgpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2FtZWwvY2FtZWwuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMi4yNCIpXQotIAlwdWJsaWMg c3RhdGljIHZvaWQgc2h1dGRvd24gKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj YW1lbC9jYW1lbC5oIildCi0rCVtWZXJzaW9uIChyZXBsYWNlbWVudCA9ICJTdG9yZUVycm9yLnF1 YXJrIildCi0rCXB1YmxpYyBzdGF0aWMgR0xpYi5RdWFyayBzdG9yZV9lcnJvcl9xdWFyayAoKTsK LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjMuNDYiLCByZXBsYWNl bWVudCA9ICJTdG9yZUluZm8ubmFtZSIpXQotKwlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5n IHN0b3JlX2luZm9fbmFtZSAoQ2FtZWwuU3RvcmVTdW1tYXJ5IHN1bW1hcnksIENhbWVsLlN0b3Jl SW5mbyBpbmZvKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgi KV0KLSsJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjMu NDYiLCByZXBsYWNlbWVudCA9ICJTdG9yZUluZm8ucGF0aCIpXQotIAlwdWJsaWMgc3RhdGljIHVu b3duZWQgc3RyaW5nIHN0b3JlX2luZm9fcGF0aCAoQ2FtZWwuU3RvcmVTdW1tYXJ5IHN1bW1hcnks IENhbWVsLlN0b3JlSW5mbyBpbmZvKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNh bWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjMuNDYiLCByZXBsYWNlbWVudCA9ICJTdG9yZUluZm8uc2V0X3N0cmluZyIpXQot KwlwdWJsaWMgc3RhdGljIHZvaWQgc3RvcmVfaW5mb19zZXRfc3RyaW5nIChDYW1lbC5TdG9yZVN1 bW1hcnkgc3VtbWFyeSwgQ2FtZWwuU3RvcmVJbmZvIGluZm8sIGludCB0eXBlLCBzdHJpbmcgdmFs dWUpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlw dWJsaWMgc3RhdGljIGludCBzdHJjYXNlX2VxdWFsICh2b2lkKiBhLCB2b2lkKiBiKTsKLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJcHVibGljIHN0YXRp YyB1aW50IHN0cmNhc2VfaGFzaCAodm9pZCogdik7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBzdHJpbmcgc3Ry ZG93biAoc3RyaW5nIHN0cik7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9j YW1lbC5oIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQ0IildCi0rCXB1YmxpYyBzdGF0aWMg Ym9vbCBzdHJpbmdfaXNfYWxsX2FzY2lpIChzdHJpbmc/IHN0cik7Ci0rCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgc3RyaW5nIHN0 cnN0cmNhc2UgKHN0cmluZyBoYXlzdGFjaywgc3RyaW5nIG5lZWRsZSk7Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgQ2FtZWwu TWVzc2FnZUZsYWdzIHN5c3RlbV9mbGFnIChzdHJpbmcgbmFtZSk7Ci1AQCAtMzg1NSw3ICs0MDQ0 LDEzIEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCXB1YmxpYyBzdGF0aWMgc3RyaW5nIHRleHRfdG9f aHRtbCAoc3RyaW5nIEBpbiwgQ2FtZWwuTWltZUZpbHRlclRvSFRNTEZsYWdzIGZsYWdzLCB1aW50 MzIgY29sb3IpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIp XQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMy4yNCIpXQotLQlwdWJsaWMgc3RhdGljIGxvbmcgdGlt ZV92YWx1ZV9hcHBseSAobG9uZyBzcmNfdGltZSwgQ2FtZWwuVGltZVVuaXQgdW5pdCwgaW50IHZh bHVlKTsKLSsJcHVibGljIHN0YXRpYyB0aW1lX3QgdGltZV92YWx1ZV9hcHBseSAodGltZV90IHNy Y190aW1lLCBDYW1lbC5UaW1lVW5pdCB1bml0LCBpbnQgdmFsdWUpOwotKwlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAocmVwbGFjZW1lbnQg PSAiVHJhbnNmZXJFbmNvZGluZy5mcm9tX3N0cmluZyIpXQotKwlwdWJsaWMgc3RhdGljIENhbWVs LlRyYW5zZmVyRW5jb2RpbmcgdHJhbnNmZXJfZW5jb2RpbmdfZnJvbV9zdHJpbmcgKHN0cmluZyBz dHJpbmcpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQot KwlbVmVyc2lvbiAocmVwbGFjZW1lbnQgPSAiVHJhbnNmZXJFbmNvZGluZy50b19zdHJpbmciKV0K LSsJcHVibGljIHN0YXRpYyB1bm93bmVkIHN0cmluZyB0cmFuc2Zlcl9lbmNvZGluZ190b19zdHJp bmcgKENhbWVsLlRyYW5zZmVyRW5jb2RpbmcgZW5jb2RpbmcpOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlwdWJsaWMgc3RhdGljIHN0cmluZyB1Y3My X3V0ZjggKHN0cmluZyBwdHIpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwv Y2FtZWwuaCIpXQotQEAgLTM4NjcsNiArNDA2MiwzMyBAQCBuYW1lc3BhY2UgQ2FtZWwgewotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotIAlwdWJsaWMgc3Rh dGljIHZvaWQgdW5sb2NrX2ZvbGRlciAoc3RyaW5nIHBhdGgsIGludCBmZCk7Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0rCVtWZXJzaW9uIChyZXBsYWNl bWVudCA9ICJVUkwuYWRkcnNwZWNfZW5kIildCi0rCXB1YmxpYyBzdGF0aWMgYm9vbCB1cmxfYWRk cnNwZWNfZW5kIChzdHJpbmcgQGluLCBzdHJpbmcgcG9zLCBzdHJpbmcgaW5lbmQsIENhbWVsLlVy bE1hdGNoIG1hdGNoKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVs LmgiKV0KLSsJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0gIlVSTC5hZGRyc3BlY19zdGFydCIpXQot KwlwdWJsaWMgc3RhdGljIGJvb2wgdXJsX2FkZHJzcGVjX3N0YXJ0IChzdHJpbmcgQGluLCBzdHJp bmcgcG9zLCBzdHJpbmcgaW5lbmQsIENhbWVsLlVybE1hdGNoIG1hdGNoKTsKLSsJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKHJlcGxhY2Vt ZW50ID0gIlVSTC5kZWNvZGUiKV0KLSsJcHVibGljIHN0YXRpYyB2b2lkIHVybF9kZWNvZGUgKHN0 cmluZyBwYXJ0KTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgi KV0KLSsJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0gIlVSTC5kZWNvZGVfcGF0aCIpXQotKwlwdWJs aWMgc3RhdGljIHN0cmluZyB1cmxfZGVjb2RlX3BhdGggKHN0cmluZyBwYXRoKTsKLSsJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKHJlcGxh Y2VtZW50ID0gIlVSTC5lbmNvZGUiKV0KLSsJcHVibGljIHN0YXRpYyBzdHJpbmcgdXJsX2VuY29k ZSAoc3RyaW5nIHBhcnQsIHN0cmluZz8gZXNjYXBlX2V4dHJhKTsKLSsJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNpb24gKHJlcGxhY2VtZW50ID0g IlVSTC5maWxlX2VuZCIpXQotKwlwdWJsaWMgc3RhdGljIGJvb2wgdXJsX2ZpbGVfZW5kIChzdHJp bmcgQGluLCBzdHJpbmcgcG9zLCBzdHJpbmcgaW5lbmQsIENhbWVsLlVybE1hdGNoIG1hdGNoKTsK LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSsJW1ZlcnNp b24gKHJlcGxhY2VtZW50ID0gIlVSTC5maWxlX3N0YXJ0IildCi0rCXB1YmxpYyBzdGF0aWMgYm9v bCB1cmxfZmlsZV9zdGFydCAoc3RyaW5nIEBpbiwgc3RyaW5nIHBvcywgc3RyaW5nIGluZW5kLCBD YW1lbC5VcmxNYXRjaCBtYXRjaCk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1l bC9jYW1lbC5oIildCi0rCVtWZXJzaW9uIChyZXBsYWNlbWVudCA9ICJVUkwud2ViX2VuZCIpXQot KwlwdWJsaWMgc3RhdGljIGJvb2wgdXJsX3dlYl9lbmQgKHN0cmluZyBAaW4sIHN0cmluZyBwb3Ms IHN0cmluZyBpbmVuZCwgQ2FtZWwuVXJsTWF0Y2ggbWF0Y2gpOwotKwlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAocmVwbGFjZW1lbnQgPSAi VVJMLndlYl9zdGFydCIpXQotKwlwdWJsaWMgc3RhdGljIGJvb2wgdXJsX3dlYl9zdGFydCAoc3Ry aW5nIEBpbiwgc3RyaW5nIHBvcywgc3RyaW5nIGluZW5kLCBDYW1lbC5VcmxNYXRjaCBtYXRjaCk7 Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5oIildCi0gCXB1Ymxp YyBzdGF0aWMgdW5vd25lZCBzdHJpbmcgdXN0cnN0cmNhc2UgKHN0cmluZyBoYXlzdGFjaywgc3Ry aW5nIG5lZWRsZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjYW1lbC9jYW1lbC5o IildCi0gCXB1YmxpYyBzdGF0aWMgc3RyaW5nIHV0ZjdfdXRmOCAoc3RyaW5nIHB0cik7Ci1AQCAt MzkxMSw2ICs0MTMzLDE1IEBAIG5hbWVzcGFjZSBDYW1lbCB7Ci0gCVtWZXJzaW9uIChzaW5jZSA9 ICIzLjQwIildCi0gCXB1YmxpYyBzdGF0aWMgR0xpYi5HZW5lcmljQXJyYXk8d2VhayBzdHJpbmc+ IHV0aWxfZ2V0X2RpcmVjdG9yeV92YXJpYW50cyAoc3RyaW5nIG1haW5fcGF0aCwgc3RyaW5nIHJl cGxhY2VfcHJlZml4LCBib29sIHdpdGhfbW9kdWxlc19kaXIpOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMy40NCIp XQotKwlwdWJsaWMgc3RhdGljIHN0cmluZz8gdXRpbHNfc2FuaXRpemVfYXNjaWlfZG9tYWluX2lu X2FkZHJlc3MgKHN0cmluZz8gZW1haWxfYWRkcmVzcywgYm9vbCBkb19mb3JtYXQpOwotKwlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2FtZWwvY2FtZWwuaCIpXQotKwlbVmVyc2lvbiAoc2lu Y2UgPSAiMy40NCIpXQotKwlwdWJsaWMgc3RhdGljIGJvb2wgdXRpbHNfc2FuaXRpemVfYXNjaWlf ZG9tYWluX2luX3VybCAoQ2FtZWwuVVJMIHVybCk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjYW1lbC9jYW1lbC5oIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIzLjQ0IildCi0rCXB1 YmxpYyBzdGF0aWMgc3RyaW5nPyB1dGlsc19zYW5pdGl6ZV9hc2NpaV9kb21haW5faW5fdXJsX3N0 ciAoc3RyaW5nPyB1cmxfc3RyKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVs L2NhbWVsLmgiKV0KLSAJcHVibGljIHN0YXRpYyBzaXplX3QgdXVkZWNvZGVfc3RlcCAoW0NDb2Rl IChhcnJheV9sZW5ndGhfY25hbWUgPSAiaW5sZW4iLCBhcnJheV9sZW5ndGhfcG9zID0gMS41LCBh cnJheV9sZW5ndGhfdHlwZSA9ICJnc2l6ZSIpXSB1aW50OFtdIEBpbiwgW0NDb2RlIChhcnJheV9s ZW5ndGggPSBmYWxzZSldIHJlZiB1aW50OFtdIEBvdXQsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2Nu YW1lID0gInN0YXRlIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDIuNSldIHJlZiB1aW50MzJbXSBzYXZl KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNhbWVsL2NhbWVsLmgiKV0KLSAJcHVi bGljIHN0YXRpYyBzaXplX3QgdXVlbmNvZGVfY2xvc2UgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2Nu YW1lID0gImxlbiIsIGFycmF5X2xlbmd0aF9wb3MgPSAxLjUsIGFycmF5X2xlbmd0aF90eXBlID0g ImdzaXplIildIHVpbnQ4W10gQGluLCBbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gcmVm IHVpbnQ4W10gQG91dCwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHJlZiB1aW50OCB1 dWJ1Zls2MF0sIFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gInN0YXRlIiwgYXJyYXlfbGVu Z3RoX3BvcyA9IDMuNSldIHJlZiB1aW50MzJbXSBzYXZlKTsKCmRpZmYgLS1naXQgYS9kZWFkLnBh Y2thZ2UgYi9kZWFkLnBhY2thZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NTIwNGE4NAotLS0gL2Rldi9udWxsCisrKyBiL2RlYWQucGFja2FnZQpAQCAtMCwwICsxIEBACitP cnBoYW5lZCBmb3IgNisgd2Vla3MKCmRpZmYgLS1naXQgYS9lbGVtZW50YXJ5LW1haWwuc3BlYyBi L2VsZW1lbnRhcnktbWFpbC5zcGVjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWMw OTY4Li4wMDAwMDAwCi0tLSBhL2VsZW1lbnRhcnktbWFpbC5zcGVjCisrKyAvZGV2L251bGwKQEAg LTEsOTMgKzAsMCBAQAotJWdsb2JhbCBzcmNuYW1lIG1haWwKLSVnbG9iYWwgYXBwbmFtZSBpby5l bGVtZW50YXJ5Lm1haWwKLQotJWdsb2JhbCBfX3Byb3ZpZGVzX2V4Y2x1ZGVfZnJvbSBeJXtfbGli ZGlyfS8le2FwcG5hbWV9L3dlYmtpdDIvLipcXC5zbyQKLQotTmFtZTogICAgICAgICAgIGVsZW1l bnRhcnktbWFpbAotU3VtbWFyeTogICAgICAgIE1haWwgYXBwIGRlc2lnbmVkIGZvciBlbGVtZW50 YXJ5Ci1WZXJzaW9uOiAgICAgICAgOC4wLjAKLVJlbGVhc2U6ICAgICAgICAlYXV0b3JlbGVhc2UK LUxpY2Vuc2U6ICAgICAgICBHUEwtMy4wLW9yLWxhdGVyIEFORCBMR1BMLTMuMC1vci1sYXRlciBB TkQgTEdQTC0yLjEtb3ItbGF0ZXIgQU5EIExHUEwtMi4xLW9ubHkKLQotVVJMOiAgICAgICAgICAg IGh0dHBzOi8vZ2l0aHViLmNvbS9lbGVtZW50YXJ5L21haWwKLVNvdXJjZTA6ICAgICAgICAle3Vy bH0vYXJjaGl2ZS8le3ZlcnNpb259LyV7c3JjbmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKLQotUGF0 Y2g6ICAgICAgICAgIDAwMDEtbGliY2FtZWwtMy41Ny4xLnBhdGNoCi0KLUJ1aWxkUmVxdWlyZXM6 ICBkZXNrdG9wLWZpbGUtdXRpbHMKLUJ1aWxkUmVxdWlyZXM6ICBnY2MKLUJ1aWxkUmVxdWlyZXM6 ICBnZXR0ZXh0Ci1CdWlsZFJlcXVpcmVzOiAgbGliYXBwc3RyZWFtLWdsaWIKLUJ1aWxkUmVxdWly ZXM6ICBtZXNvbgotQnVpbGRSZXF1aXJlczogIHZhbGEKLQotQnVpbGRSZXF1aXJlczogIHBrZ2Nv bmZpZyhjYW1lbC0xLjIpID49IDMuMjgKLUJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcoZm9sa3Mp Ci1CdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKGdlZS0wLjgpCi1CdWlsZFJlcXVpcmVzOiAgcGtn Y29uZmlnKGdsaWItMi4wKQotQnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyhnb2JqZWN0LTIuMCkK LUJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcoZ3Jhbml0ZSkgPj0gNi4wLjAKLUJ1aWxkUmVxdWly ZXM6ICBwa2djb25maWcobGliZWRhdGFzZXJ2ZXItMS4yKSA+PSAzLjI4Ci1CdWlsZFJlcXVpcmVz OiAgcGtnY29uZmlnKGxpYmVkYXRhc2VydmVydWktMS4yKSA+PSAzLjI4Ci1CdWlsZFJlcXVpcmVz OiAgcGtnY29uZmlnKGxpYmhhbmR5LTEpID49IDEuMS45MAotQnVpbGRSZXF1aXJlczogIHBrZ2Nv bmZpZyhsaWJwb3J0YWwpCi1CdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKGxpYnBvcnRhbC1ndGsz KQotCi0laWYgMCV7P2ZlZG9yYX0gPj0gMzkKLUJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcod2Vi a2l0Mmd0ay00LjEpCi1CdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHdlYmtpdDJndGstd2ViLWV4 dGVuc2lvbi00LjEpCi0lZW5kaWYKLQotJWlmIDAlez9mZWRvcmF9ID09IDM4Ci1CdWlsZFJlcXVp cmVzOiAgcGtnY29uZmlnKHdlYmtpdDJndGstNC4wKSA+PSAyLjI4Ci1CdWlsZFJlcXVpcmVzOiAg cGtnY29uZmlnKHdlYmtpdDJndGstd2ViLWV4dGVuc2lvbi00LjApID49IDIuMjgKLSVlbmRpZgot Ci1SZXF1aXJlczogICAgICAgaGljb2xvci1pY29uLXRoZW1lCi0KLSVkZXNjcmlwdGlvbgotJXtz dW1tYXJ5fS4KLQotCi0lcHJlcAotJWF1dG9zZXR1cCAtbiAle3NyY25hbWV9LSV7dmVyc2lvbn0g LXAxCi0KLQotJWJ1aWxkCi0lbWVzb24KLSVtZXNvbl9idWlsZAotCi0KLSVpbnN0YWxsCi0lbWVz b25faW5zdGFsbAotCi0lZmluZF9sYW5nICV7YXBwbmFtZX0KLQotIyBkcm9wIHVudXNlZCBBcHBB cm1vciBzZXR0aW5ncwotcm0gLXIgJXtidWlsZHJvb3R9LyV7X3N5c2NvbmZkaXJ9L2FwcGFybW9y LmQKLQotCi0lY2hlY2sKLWRlc2t0b3AtZmlsZS12YWxpZGF0ZSBcCi0gICAgJXtidWlsZHJvb3R9 LyV7X2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8le2FwcG5hbWV9LmRlc2t0b3AKLQotYXBwc3RyZWFt LXV0aWwgdmFsaWRhdGUtcmVsYXggLS1ub25ldCBcCi0gICAgJXtidWlsZHJvb3R9LyV7X2RhdGFk aXJ9L21ldGFpbmZvLyV7YXBwbmFtZX0ubWV0YWluZm8ueG1sCi0KLQotJWZpbGVzIC1mICV7YXBw bmFtZX0ubGFuZwotJWxpY2Vuc2UgQ09QWUlORwotJWRvYyBSRUFETUUubWQKLQotJXtfYmluZGly fS8le2FwcG5hbWV9Ci0KLSV7X2xpYmRpcn0vJXthcHBuYW1lfS8KLQotJXtfZGF0YWRpcn0vYXBw bGljYXRpb25zLyV7YXBwbmFtZX0uZGVza3RvcAotJXtfZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1h cy8le2FwcG5hbWV9LmdzY2hlbWEueG1sCi0le19kYXRhZGlyfS9pY29ucy9oaWNvbG9yLyovYXBw cy8le2FwcG5hbWV9LnN2ZwotJXtfZGF0YWRpcn0vbWV0YWluZm8vJXthcHBuYW1lfS5tZXRhaW5m by54bWwKLQotCi0lY2hhbmdlbG9nCi0lYXV0b2NoYW5nZWxvZwoKZGlmZiAtLWdpdCBhL3NvdXJj ZXMgYi9zb3VyY2VzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzA4MTg2Li4wMDAw MDAwCi0tLSBhL3NvdXJjZXMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1TSEE1MTIgKG1h aWwtOC4wLjAudGFyLmd6KSA9IDU3NDEzMDUyYjE3Mzg0NTQ5YmExZWEyZGEwZDQwOGI3ZWJjYmYw NzIxYmVmN2I2NjQ2ZGFlYWJjZDYwZGVlMjc4OTAwM2Q5OTY3NDA0Njk0MzkyZGM4YWUxY2VhODEy ZTg2ODY3NzE3NmRmNzA0NzAwNzZlNjU5ZWRkMmIxNmFlCg==