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: Marco Fargetta To: git-commits@fedoraproject.org Subject: [rpms/jboss-logging] rawhide: Since resteasy is retired jboss-* packages are not needed Date: Mon, 10 Aug 2026 15:13:15 GMT Message-ID: <178637479545.1.8017003810806183714.rpms-jboss-logging-b48014626ec7@fedoraproject.org> List-ID: X-Git-Repo: rpms/jboss-logging X-Git-Branch: rawhide X-Git-Rev: b48014626ec73d851b35322260904040362a23bd QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvamJvc3MtbG9nZ2lu ZwpCcmFuY2ggOiByYXdoaWRlCkNvbW1pdCA6IGI0ODAxNDYyNmVjNzNkODUxYjM1MzIyMjYwOTA0 MDQwMzYyYTIzYmQKQXV0aG9yIDogTWFyY28gRmFyZ2V0dGEgPG1mYXJnZXR0QHJlZGhhdC5jb20+ CkRhdGUgICA6IDIwMjYtMDgtMTBUMTc6MTM6MDcrMDI6MDAKU3RhdHMgIDogKzEvLTE5NjEgaW4g OCBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvamJv c3MtbG9nZ2luZy9jL2I0ODAxNDYyNmVjNzNkODUxYjM1MzIyMjYwOTA0MDQwMzYyYTIzYmQ/YnJh bmNoPXJhd2hpZGUKCkxvZzoKU2luY2UgcmVzdGVhc3kgaXMgcmV0aXJlZCBqYm9zcy0qIHBhY2th Z2VzIGFyZSBub3QgbmVlZGVkCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdu b3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmM5YjJlLi4wMDAwMDAwCi0tLSBh Ly5naXRpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vcmVzdWx0c18qCi0v Ki5zcmMucnBtCi0KLS9qYm9zcy1sb2dnaW5nLTMuMC4xLkdBLnRhci54egotL2pib3NzLWxvZ2dp bmctMy4xLjAuQ1IxLnRhci54egotL2pib3NzLWxvZ2dpbmctMy4xLjAuR0EudGFyLnh6Ci0vamJv c3MtbG9nZ2luZy0zLjEuMi5HQS50YXIueHoKLS8zLjEuMy5HQS50YXIuZ3oKLS8zLjEuNC5HQS50 YXIuZ3oKLS8zLjMuMC5GaW5hbC50YXIuZ3oKLS9qYm9zcy1sb2dnaW5nLTMuNC4xLkZpbmFsLnRh ci5negotL2pib3NzLWxvZ2dpbmctMy41LjEuRmluYWwudGFyLmd6Ci0vamJvc3MtbG9nZ2luZy0z LjUuMi5GaW5hbC50YXIuZ3oKLS9qYm9zcy1sb2dnaW5nLTMuNS4zLkZpbmFsLnRhci5negotL2pi b3NzLWxvZ2dpbmctMy42LjAuRmluYWwudGFyLmd6CgpkaWZmIC0tZ2l0IGEvLnBhY2tpdC55YW1s IGIvLnBhY2tpdC55YW1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWVjY2Q0Li4w MDAwMDAwCi0tLSBhLy5wYWNraXQueWFtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAK LS0tLQotZG93bnN0cmVhbV9wYWNrYWdlX25hbWU6IGpib3NzLWxvZ2dpbmcKLXNwZWNmaWxlX3Bh dGg6IGpib3NzLWxvZ2dpbmcuc3BlYwotdXBzdHJlYW1fcGFja2FnZV9uYW1lOiBqYm9zcy1sb2dn aW5nCi11cHN0cmVhbV9wcm9qZWN0X3VybDogaHR0cHM6Ly9naXRodWIuY29tL2pib3NzLWxvZ2dp bmcvamJvc3MtbG9nZ2luZwotdXBzdHJlYW1fdGFnX3RlbXBsYXRlOiAie3ZlcnNpb259LkZpbmFs IgotCi1hY3Rpb25zOgotICBwb3N0LXVwc3RyZWFtLWNsb25lOgotICAgIC0gIndnZXQgaHR0cHM6 Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9qYm9zcy1sb2dnaW5nL3Jhdy9tYWluL2YvamJv c3MtbG9nZ2luZy5zcGVjIC1PIGpib3NzLWxvZ2dpbmcuc3BlYyIKLQotam9iczoKLS0gam9iOiBw dWxsX2Zyb21fdXBzdHJlYW0KLSAgdHJpZ2dlcjogcmVsZWFzZQotICBkaXN0X2dpdF9icmFuY2hl czoKLSAgICAtIGZlZG9yYS1kZXZlbG9wbWVudAotCgpkaWZmIC0tZ2l0IGEvMDAwMS1Ecm9wLWxv ZzRqLWRlcGVuZGVuY3kucGF0Y2ggYi8wMDAxLURyb3AtbG9nNGotZGVwZW5kZW5jeS5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEyNGI4My4uMDAwMDAwMAotLS0gYS8wMDAx LURyb3AtbG9nNGotZGVwZW5kZW5jeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0OSArMCww IEBACi1Gcm9tIGE5ZWYwMzUyMWI2NWU2Zjk0NjM3YThiZmJhODZkMTBkN2M4NDIwODQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBLZWxsZXkgPGNrZWxsZXlAcmVkaGF0LmNv bT4KLURhdGU6IE1vbiwgMTcgSnVuIDIwMjQgMjA6NTI6MjQgKzAxMDAKLVN1YmplY3Q6IFtQQVRD SCAxLzJdIERyb3AgbG9nNGogZGVwZW5kZW5jeQotCi0tLS0KLSBwb20ueG1sICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzEgLS0tLQotIC4uLi9qYXZhL29yZy9qYm9z cy9sb2dnaW5nL0xvZzRqMkxvZ2dlci5qYXZhICB8ICA5OSAtLS0tLS0tLS0tLQotIC4uLi9qYm9z cy9sb2dnaW5nL0xvZzRqMkxvZ2dlclByb3ZpZGVyLmphdmEgICB8IDEwMiAtLS0tLS0tLS0tLS0K LSAuLi4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0akxvZ2dlci5qYXZhICAgfCAgODIgLS0t LS0tLS0tCi0gLi4uL2pib3NzL2xvZ2dpbmcvTG9nNGpMb2dnZXJQcm92aWRlci5qYXZhICAgIHwg MTA1IC0tLS0tLS0tLS0tLQotIC4uLi9vcmcvamJvc3MvbG9nZ2luZy9Mb2dnZXJQcm92aWRlcnMu amF2YSAgICB8ICAzNiAtLS0tCi0gLi4uL2xvZ2dpbmcvTG9nNGoyQ2xhc3NQYXRoVGVzdENhc2Uu amF2YSAgICAgIHwgIDMwIC0tLS0KLSAuLi4vamJvc3MvbG9nZ2luZy9Mb2c0ajJQcm92aWRlclRl c3RDYXNlLmphdmEgfCAxNTUgLS0tLS0tLS0tLS0tLS0tLS0tCi0gLi4uL2pib3NzL2xvZ2dpbmcv TG9nNGpDbGFzc1BhdGhUZXN0Q2FzZS5qYXZhIHwgIDMwIC0tLS0KLSAuLi4vamJvc3MvbG9nZ2lu Zy9Mb2c0alByb3ZpZGVyVGVzdENhc2UuamF2YSAgfCAxMzggLS0tLS0tLS0tLS0tLS0tLQotIDEw IGZpbGVzIGNoYW5nZWQsIDgwOCBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj L21haW4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0ajJMb2dnZXIuamF2YQotIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmMvbWFpbi9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRqMkxvZ2dlclBy b3ZpZGVyLmphdmEKLSBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL21haW4vamF2YS9vcmcvamJvc3Mv bG9nZ2luZy9Mb2c0akxvZ2dlci5qYXZhCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9tYWluL2ph dmEvb3JnL2pib3NzL2xvZ2dpbmcvTG9nNGpMb2dnZXJQcm92aWRlci5qYXZhCi0gZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvTG9nNGoyQ2xhc3NQYXRo VGVzdENhc2UuamF2YQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9qYXZhL29yZy9qYm9z cy9sb2dnaW5nL0xvZzRqMlByb3ZpZGVyVGVzdENhc2UuamF2YQotIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRqQ2xhc3NQYXRoVGVzdENhc2Uu amF2YQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5n L0xvZzRqUHJvdmlkZXJUZXN0Q2FzZS5qYXZhCi0KLWRpZmYgLS1naXQgYS9wb20ueG1sIGIvcG9t LnhtbAotaW5kZXggMzVmNjVhYS4uNzZiY2JmYiAxMDA2NDQKLS0tLSBhL3BvbS54bWwKLSsrKyBi L3BvbS54bWwKLUBAIC01Niw4ICs1Niw2IEBACi0gICAgICAgICA8IS0tIERlcGVuZGVuY3kgdmVy c2lvbnMgLS0+Ci0gICAgICAgICA8dmVyc2lvbi5jaC5xb3MubG9nYmFjaz4xLjUuNjwvdmVyc2lv bi5jaC5xb3MubG9nYmFjaz4KLSAgICAgICAgIDx2ZXJzaW9uLm1vZHVsZS1pbmZvPjIuMTwvdmVy c2lvbi5tb2R1bGUtaW5mbz4KLS0gICAgICAgIDx2ZXJzaW9uLm9yZy5hcGFjaGUubG9nNGo+MS4y LjE3PC92ZXJzaW9uLm9yZy5hcGFjaGUubG9nNGo+Ci0tICAgICAgICA8dmVyc2lvbi5vcmcuYXBh Y2hlLmxvZ2dpbmcubG9nNGo+Mi4yMy4xPC92ZXJzaW9uLm9yZy5hcGFjaGUubG9nZ2luZy5sb2c0 aj4KLSAgICAgICAgIDx2ZXJzaW9uLm9yZy5qYm9zcy5sb2dtYW5hZ2VyPjMuMC42LkZpbmFsPC92 ZXJzaW9uLm9yZy5qYm9zcy5sb2dtYW5hZ2VyPgotICAgICAgICAgPHZlcnNpb24ub3JnLmp1bml0 PjUuMTAuMjwvdmVyc2lvbi5vcmcuanVuaXQ+Ci0gICAgICAgICA8dmVyc2lvbi5vcmcuc2ZsNGo+ Mi4wLjEyPC92ZXJzaW9uLm9yZy5zZmw0aj4KLUBAIC04OCwyOCArODYsNiBAQAotICAgICAgICAg ICAgIDx2ZXJzaW9uPiR7dmVyc2lvbi5vcmcuamJvc3MubG9nbWFuYWdlcn08L3ZlcnNpb24+Ci0g ICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4KLSAgICAgICAgIDwvZGVwZW5kZW5j eT4KLS0gICAgICAgIDxkZXBlbmRlbmN5PgotLSAgICAgICAgICAgIDxncm91cElkPmxvZzRqPC9n cm91cElkPgotLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZzRqPC9hcnRpZmFjdElkPgotLSAg ICAgICAgICAgIDx2ZXJzaW9uPiR7dmVyc2lvbi5vcmcuYXBhY2hlLmxvZzRqfTwvdmVyc2lvbj4K LS0gICAgICAgICAgICA8c2NvcGU+cHJvdmlkZWQ8L3Njb3BlPgotLSAgICAgICAgICAgIDxleGNs dXNpb25zPgotLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotLSAgICAgICAgICAgICAgICAg ICAgPGdyb3VwSWQ+Y29tLnN1bi5qZG1rPC9ncm91cElkPgotLSAgICAgICAgICAgICAgICAgICAg PGFydGlmYWN0SWQ+am14dG9vbHM8L2FydGlmYWN0SWQ+Ci0tICAgICAgICAgICAgICAgIDwvZXhj bHVzaW9uPgotLSAgICAgICAgICAgICAgICA8ZXhjbHVzaW9uPgotLSAgICAgICAgICAgICAgICAg ICAgPGdyb3VwSWQ+Y29tLnN1bi5qbXg8L2dyb3VwSWQ+Ci0tICAgICAgICAgICAgICAgICAgICA8 YXJ0aWZhY3RJZD5qbXhyaTwvYXJ0aWZhY3RJZD4KLS0gICAgICAgICAgICAgICAgPC9leGNsdXNp b24+Ci0tICAgICAgICAgICAgPC9leGNsdXNpb25zPgotLSAgICAgICAgPC9kZXBlbmRlbmN5Pgot LSAgICAgICAgPGRlcGVuZGVuY3k+Ci0tICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5s b2dnaW5nLmxvZzRqPC9ncm91cElkPgotLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZzRqLWFw aTwvYXJ0aWZhY3RJZD4KLS0gICAgICAgICAgICA8dmVyc2lvbj4ke3ZlcnNpb24ub3JnLmFwYWNo ZS5sb2dnaW5nLmxvZzRqfTwvdmVyc2lvbj4KLS0gICAgICAgICAgICA8c2NvcGU+cHJvdmlkZWQ8 L3Njb3BlPgotLSAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICAgPGRlcGVuZGVuY3k+Ci0g ICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNsZjRqPC9ncm91cElkPgotICAgICAgICAgICAgIDxh cnRpZmFjdElkPnNsZjRqLWFwaTwvYXJ0aWZhY3RJZD4KLUBAIC0xMjksMTIgKzEwNSw2IEBACi0g ICAgICAgICAgICAgPHZlcnNpb24+JHt2ZXJzaW9uLmNoLnFvcy5sb2diYWNrfTwvdmVyc2lvbj4K LSAgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgICAgICA8L2RlcGVuZGVuY3k+ Ci0tICAgICAgICA8ZGVwZW5kZW5jeT4KLS0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hl LmxvZ2dpbmcubG9nNGo8L2dyb3VwSWQ+Ci0tICAgICAgICAgICAgPGFydGlmYWN0SWQ+bG9nNGot Y29yZTwvYXJ0aWZhY3RJZD4KLS0gICAgICAgICAgICA8dmVyc2lvbj4ke3ZlcnNpb24ub3JnLmFw YWNoZS5sb2dnaW5nLmxvZzRqfTwvdmVyc2lvbj4KLS0gICAgICAgICAgICA8c2NvcGU+dGVzdDwv c2NvcGU+Ci0tICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgIDwvZGVwZW5kZW5jaWVzPgotIAot ICAgICA8YnVpbGQ+Ci1AQCAtMzQ5LDcgKzMxOSw2IEBACi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICR7cHJvamVjdC5ncm91cElkfS4qO3ZlcnNpb249JHtwcm9qZWN0LnZlcnNpb259Oy1z cGxpdC1wYWNrYWdlOj1lcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgIDwvRXhwb3J0LVBh Y2thZ2U+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgPEltcG9ydC1QYWNrYWdlPgotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmxvZzRqLmNvbmZpZztyZXNvbHV0aW9u Oj1vcHRpb25hbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKjtyZXNvbHV0aW9uOj1v cHRpb25hbAotICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW1wb3J0LVBhY2thZ2U+Ci0gICAg ICAgICAgICAgICAgICAgICA8L2luc3RydWN0aW9ucz4KLWRpZmYgLS1naXQgYS9zcmMvbWFpbi9q YXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRqMkxvZ2dlci5qYXZhIGIvc3JjL21haW4vamF2YS9v cmcvamJvc3MvbG9nZ2luZy9Mb2c0ajJMb2dnZXIuamF2YQotZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCA0ZGMyZmVkLi4wMDAwMDAwCi0tLS0gYS9zcmMvbWFpbi9qYXZhL29yZy9qYm9z cy9sb2dnaW5nL0xvZzRqMkxvZ2dlci5qYXZhCi0rKysgL2Rldi9udWxsCi1AQCAtMSw5OSArMCww IEBACi0tLyoKLS0gKiBKQm9zcywgSG9tZSBvZiBQcm9mZXNzaW9uYWwgT3BlbiBTb3VyY2UuCi0t ICoKLS0gKiBDb3B5cmlnaHQgMjAyMyBSZWQgSGF0LCBJbmMuCi0tICoKLS0gKiBMaWNlbnNlZCB1 bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLS0g KiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl IExpY2Vuc2UuCi0tICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0t ICoKLS0gKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0tICoK LS0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy aXRpbmcsIHNvZnR3YXJlCi0tICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLS0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLS0gKiBT ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz c2lvbnMgYW5kCi0tICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tICovCi0tCi0t cGFja2FnZSBvcmcuamJvc3MubG9nZ2luZzsKLS0KLS1pbXBvcnQgb3JnLmFwYWNoZS5sb2dnaW5n LmxvZzRqLkxvZ01hbmFnZXI7Ci0taW1wb3J0IG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5Mb2dn aW5nRXhjZXB0aW9uOwotLWltcG9ydCBvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGoubWVzc2FnZS5N ZXNzYWdlRm9ybWF0TWVzc2FnZUZhY3Rvcnk7Ci0taW1wb3J0IG9yZy5hcGFjaGUubG9nZ2luZy5s b2c0ai5tZXNzYWdlLlN0cmluZ0Zvcm1hdHRlZE1lc3NhZ2U7Ci0taW1wb3J0IG9yZy5hcGFjaGUu bG9nZ2luZy5sb2c0ai5zcGkuQWJzdHJhY3RMb2dnZXI7Ci0tCi0tZmluYWwgY2xhc3MgTG9nNGoy TG9nZ2VyIGV4dGVuZHMgTG9nZ2VyIHsKLS0KLS0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9u ZyBzZXJpYWxWZXJzaW9uVUlEID0gLTI1MDc4NDEwNjgyMzI2Mjc3MjVMOwotLQotLSAgICBwcml2 YXRlIGZpbmFsIEFic3RyYWN0TG9nZ2VyIGxvZ2dlcjsKLS0gICAgcHJpdmF0ZSBmaW5hbCBNZXNz YWdlRm9ybWF0TWVzc2FnZUZhY3RvcnkgbWVzc2FnZUZhY3Rvcnk7Ci0tCi0tICAgIExvZzRqMkxv Z2dlcihmaW5hbCBTdHJpbmcgbmFtZSkgewotLSAgICAgICAgc3VwZXIobmFtZSk7Ci0tICAgICAg ICBvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouTG9nZ2VyIGxvZ2dlciA9IExvZ01hbmFnZXIuZ2V0 TG9nZ2VyKG5hbWUpOwotLSAgICAgICAgaWYgKCEobG9nZ2VyIGluc3RhbmNlb2YgQWJzdHJhY3RM b2dnZXIpKSB7Ci0tICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2dpbmdFeGNlcHRpb24oIlRoZSBs b2dnZXIgZm9yIFsiICsgbmFtZSArICJdIGRvZXMgbm90IGV4dGVuZCBBYnN0cmFjdExvZ2dlci4g QWN0dWFsIGxvZ2dlcjogIgotLSAgICAgICAgICAgICAgICAgICAgKyBsb2dnZXIuZ2V0Q2xhc3Mo KS5nZXROYW1lKCkpOwotLSAgICAgICAgfQotLSAgICAgICAgdGhpcy5sb2dnZXIgPSAoQWJzdHJh Y3RMb2dnZXIpIGxvZ2dlcjsKLS0gICAgICAgIHRoaXMubWVzc2FnZUZhY3RvcnkgPSBuZXcgTWVz c2FnZUZvcm1hdE1lc3NhZ2VGYWN0b3J5KCk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRlCi0t ICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZChmaW5hbCBMZXZlbCBsZXZlbCkgewotLSAgICAg ICAgcmV0dXJuIHRoaXMubG9nZ2VyLmlzRW5hYmxlZChMb2c0ajJMb2dnZXIudHJhbnNsYXRlKGxl dmVsKSk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIHByb3RlY3RlZCB2b2lkIGRv TG9nKGZpbmFsIExldmVsIGxldmVsLCBmaW5hbCBTdHJpbmcgbG9nZ2VyQ2xhc3NOYW1lLCBmaW5h bCBPYmplY3QgbWVzc2FnZSwgZmluYWwgT2JqZWN0W10gcGFyYW1ldGVycywKLS0gICAgICAgICAg ICBmaW5hbCBUaHJvd2FibGUgdGhyb3duKSB7Ci0tICAgICAgICBmaW5hbCBvcmcuYXBhY2hlLmxv Z2dpbmcubG9nNGouTGV2ZWwgdHJhbnNsYXRlZExldmVsID0gTG9nNGoyTG9nZ2VyLnRyYW5zbGF0 ZShsZXZlbCk7Ci0tICAgICAgICBpZiAodGhpcy5sb2dnZXIuaXNFbmFibGVkKHRyYW5zbGF0ZWRM ZXZlbCkpIHsKLS0gICAgICAgICAgICB0cnkgewotLSAgICAgICAgICAgICAgICB0aGlzLmxvZ2dl ci5sb2dNZXNzYWdlKGxvZ2dlckNsYXNzTmFtZSwgdHJhbnNsYXRlZExldmVsLCBudWxsLAotLSAg ICAgICAgICAgICAgICAgICAgICAgIChwYXJhbWV0ZXJzID09IG51bGwgfHwgcGFyYW1ldGVycy5s ZW5ndGggPT0gMCkgPyB0aGlzLm1lc3NhZ2VGYWN0b3J5Lm5ld01lc3NhZ2UoU3RyaW5nLnZhbHVl T2YobWVzc2FnZSkpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMubWVz c2FnZUZhY3RvcnkubmV3TWVzc2FnZShTdHJpbmcudmFsdWVPZihtZXNzYWdlKSwgcGFyYW1ldGVy cyksCi0tICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3duKTsKLS0gICAgICAgICAgICB9IGNh dGNoIChUaHJvd2FibGUgaWdub3JlZCkgewotLSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0g ICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHJvdGVjdGVkIHZvaWQgZG9Mb2dmKGZpbmFs IExldmVsIGxldmVsLCBmaW5hbCBTdHJpbmcgbG9nZ2VyQ2xhc3NOYW1lLCBmaW5hbCBTdHJpbmcg Zm9ybWF0LCBmaW5hbCBPYmplY3RbXSBwYXJhbWV0ZXJzLAotLSAgICAgICAgICAgIGZpbmFsIFRo cm93YWJsZSB0aHJvd24pIHsKLS0gICAgICAgIGZpbmFsIG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0 ai5MZXZlbCB0cmFuc2xhdGVkTGV2ZWwgPSBMb2c0ajJMb2dnZXIudHJhbnNsYXRlKGxldmVsKTsK LS0gICAgICAgIGlmICh0aGlzLmxvZ2dlci5pc0VuYWJsZWQodHJhbnNsYXRlZExldmVsKSkgewot LSAgICAgICAgICAgIHRyeSB7Ci0tICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZ01lc3Nh Z2UobG9nZ2VyQ2xhc3NOYW1lLCB0cmFuc2xhdGVkTGV2ZWwsIG51bGwsIG5ldyBTdHJpbmdGb3Jt YXR0ZWRNZXNzYWdlKGZvcm1hdCwgcGFyYW1ldGVycyksCi0tICAgICAgICAgICAgICAgICAgICAg ICAgdGhyb3duKTsKLS0gICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgaWdub3JlZCkgewot LSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0gICAgfQotLQotLSAgICBwcml2YXRlIHN0YXRp YyBvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouTGV2ZWwgdHJhbnNsYXRlKGZpbmFsIExldmVsIGxl dmVsKSB7Ci0tICAgICAgICBpZiAobGV2ZWwgPT0gTGV2ZWwuVFJBQ0UpIHsKLS0gICAgICAgICAg ICByZXR1cm4gb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLkxldmVsLlRSQUNFOwotLSAgICAgICAg fSBlbHNlIGlmIChsZXZlbCA9PSBMZXZlbC5ERUJVRykgewotLSAgICAgICAgICAgIHJldHVybiBv cmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouTGV2ZWwuREVCVUc7Ci0tICAgICAgICB9Ci0tICAgICAg ICByZXR1cm4gaW5mb09ySGlnaGVyKGxldmVsKTsKLS0gICAgfQotLQotLSAgICBwcml2YXRlIHN0 YXRpYyBvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouTGV2ZWwgaW5mb09ySGlnaGVyKGZpbmFsIExl dmVsIGxldmVsKSB7Ci0tICAgICAgICBpZiAobGV2ZWwgPT0gTGV2ZWwuSU5GTykgewotLSAgICAg ICAgICAgIHJldHVybiBvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouTGV2ZWwuSU5GTzsKLS0gICAg ICAgIH0gZWxzZSBpZiAobGV2ZWwgPT0gTGV2ZWwuV0FSTikgewotLSAgICAgICAgICAgIHJldHVy biBvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouTGV2ZWwuV0FSTjsKLS0gICAgICAgIH0gZWxzZSBp ZiAobGV2ZWwgPT0gTGV2ZWwuRVJST1IpIHsKLS0gICAgICAgICAgICByZXR1cm4gb3JnLmFwYWNo ZS5sb2dnaW5nLmxvZzRqLkxldmVsLkVSUk9SOwotLSAgICAgICAgfSBlbHNlIGlmIChsZXZlbCA9 PSBMZXZlbC5GQVRBTCkgewotLSAgICAgICAgICAgIHJldHVybiBvcmcuYXBhY2hlLmxvZ2dpbmcu bG9nNGouTGV2ZWwuRkFUQUw7Ci0tICAgICAgICB9Ci0tICAgICAgICByZXR1cm4gb3JnLmFwYWNo ZS5sb2dnaW5nLmxvZzRqLkxldmVsLkFMTDsKLS0gICAgfQotLX0KLWRpZmYgLS1naXQgYS9zcmMv bWFpbi9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRqMkxvZ2dlclByb3ZpZGVyLmphdmEgYi9z cmMvbWFpbi9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRqMkxvZ2dlclByb3ZpZGVyLmphdmEK LWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYjkxMDliZS4uMDAwMDAwMAotLS0tIGEv c3JjL21haW4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0ajJMb2dnZXJQcm92aWRlci5qYXZh Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwxMDIgKzAsMCBAQAotLS8qCi0tICogSkJvc3MsIEhvbWUg b2YgUHJvZmVzc2lvbmFsIE9wZW4gU291cmNlLgotLSAqCi0tICogQ29weXJpZ2h0IDIwMjMgUmVk IEhhdCwgSW5jLgotLSAqCi0tICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0tICogeW91IG1heSBub3QgdXNlIHRoaXMgZmls ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLSAqIFlvdSBtYXkgb2J0 YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotLSAqCi0tICogIGh0dHA6Ly93d3cuYXBhY2hl Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotLSAqCi0tICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFw cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotLSAqIGRpc3Ry aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT SVMsCi0tICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp dGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0tICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotLSAqIGxpbWl0YXRpb25z IHVuZGVyIHRoZSBMaWNlbnNlLgotLSAqLwotLQotLXBhY2thZ2Ugb3JnLmpib3NzLmxvZ2dpbmc7 Ci0tCi0taW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotLWltcG9ydCBqYXZhLnV0aWwuTWFwOwot LQotLWltcG9ydCBvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouVGhyZWFkQ29udGV4dDsKLS0KLS0v KioKLS0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUge0BsaW5rcGxhaW4gTG9nZ2VyUHJvdmlk ZXIgbG9nIHByb3ZpZGVyfSBmb3IgTG9nNGogMi4KLS0gKiA8cD4KLS0gKiBUaGlzIGJpbmRzIHRv IHRoZSBMb2c0aiAyIEFQSSBhbmQgZG9lcyBub3QgcmVxdWlyZSBhIHNwZWNpZmljIGltcGxlbWVu dGF0aW9uIG9mIHRoZSBMb2c0aiAyIEFQSS4KLS0gKiA8L3A+Ci0tICovCi0tcHVibGljIGZpbmFs IGNsYXNzIExvZzRqMkxvZ2dlclByb3ZpZGVyIGltcGxlbWVudHMgTG9nZ2VyUHJvdmlkZXIgewot LQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIExvZzRqMkxvZ2dlciBnZXRMb2dnZXIoU3Ry aW5nIG5hbWUpIHsKLS0gICAgICAgIHJldHVybiBuZXcgTG9nNGoyTG9nZ2VyKG5hbWUpOwotLSAg ICB9Ci0tCi0tICAgIEBPdmVycmlkZQotLSAgICBwdWJsaWMgdm9pZCBjbGVhck1kYygpIHsKLS0g ICAgICAgIFRocmVhZENvbnRleHQuY2xlYXJNYXAoKTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJp ZGUKLS0gICAgcHVibGljIE9iamVjdCBwdXRNZGMoU3RyaW5nIGtleSwgT2JqZWN0IHZhbHVlKSB7 Ci0tICAgICAgICB0cnkgewotLSAgICAgICAgICAgIHJldHVybiBUaHJlYWRDb250ZXh0LmdldChr ZXkpOwotLSAgICAgICAgfSBmaW5hbGx5IHsKLS0gICAgICAgICAgICBUaHJlYWRDb250ZXh0LnB1 dChrZXksIFN0cmluZy52YWx1ZU9mKHZhbHVlKSk7Ci0tICAgICAgICB9Ci0tICAgIH0KLS0KLS0g ICAgQE92ZXJyaWRlCi0tICAgIHB1YmxpYyBPYmplY3QgZ2V0TWRjKFN0cmluZyBrZXkpIHsKLS0g ICAgICAgIHJldHVybiBUaHJlYWRDb250ZXh0LmdldChrZXkpOwotLSAgICB9Ci0tCi0tICAgIEBP dmVycmlkZQotLSAgICBwdWJsaWMgdm9pZCByZW1vdmVNZGMoU3RyaW5nIGtleSkgewotLSAgICAg ICAgVGhyZWFkQ29udGV4dC5yZW1vdmUoa2V5KTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUK LS0gICAgcHVibGljIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2V0TWRjTWFwKCkgewotLSAgICAgICAg cmV0dXJuIG5ldyBIYXNoTWFwPD4oVGhyZWFkQ29udGV4dC5nZXRJbW11dGFibGVDb250ZXh0KCkp OwotLSAgICB9Ci0tCi0tICAgIEBPdmVycmlkZQotLSAgICBwdWJsaWMgdm9pZCBjbGVhck5kYygp IHsKLS0gICAgICAgIFRocmVhZENvbnRleHQuY2xlYXJTdGFjaygpOwotLSAgICB9Ci0tCi0tICAg IEBPdmVycmlkZQotLSAgICBwdWJsaWMgU3RyaW5nIGdldE5kYygpIHsKLS0gICAgICAgIHJldHVy biBUaHJlYWRDb250ZXh0LnBlZWsoKTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAg cHVibGljIGludCBnZXROZGNEZXB0aCgpIHsKLS0gICAgICAgIHJldHVybiBUaHJlYWRDb250ZXh0 LmdldERlcHRoKCk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIHB1YmxpYyBTdHJp bmcgcG9wTmRjKCkgewotLSAgICAgICAgcmV0dXJuIFRocmVhZENvbnRleHQucG9wKCk7Ci0tICAg IH0KLS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIHB1YmxpYyBTdHJpbmcgcGVla05kYygpIHsKLS0g ICAgICAgIHJldHVybiBUaHJlYWRDb250ZXh0LnBlZWsoKTsKLS0gICAgfQotLQotLSAgICBAT3Zl cnJpZGUKLS0gICAgcHVibGljIHZvaWQgcHVzaE5kYyhTdHJpbmcgbWVzc2FnZSkgewotLSAgICAg ICAgVGhyZWFkQ29udGV4dC5wdXNoKG1lc3NhZ2UpOwotLSAgICB9Ci0tCi0tICAgIEBPdmVycmlk ZQotLSAgICBwdWJsaWMgdm9pZCBzZXROZGNNYXhEZXB0aChpbnQgbWF4RGVwdGgpIHsKLS0gICAg ICAgIFRocmVhZENvbnRleHQudHJpbShtYXhEZXB0aCk7Ci0tICAgIH0KLS19Ci1kaWZmIC0tZ2l0 IGEvc3JjL21haW4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0akxvZ2dlci5qYXZhIGIvc3Jj L21haW4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0akxvZ2dlci5qYXZhCi1kZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDhkOTEyOGQuLjAwMDAwMDAKLS0tLSBhL3NyYy9tYWluL2ph dmEvb3JnL2pib3NzL2xvZ2dpbmcvTG9nNGpMb2dnZXIuamF2YQotKysrIC9kZXYvbnVsbAotQEAg LTEsODIgKzAsMCBAQAotLS8qCi0tICogSkJvc3MsIEhvbWUgb2YgUHJvZmVzc2lvbmFsIE9wZW4g U291cmNlLgotLSAqCi0tICogQ29weXJpZ2h0IDIwMjMgUmVkIEhhdCwgSW5jLgotLSAqCi0tICog TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl bnNlIik7Ci0tICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j ZSB3aXRoIHRoZSBMaWNlbnNlLgotLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj ZW5zZSBhdAotLSAqCi0tICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF LTIuMAotLSAqCi0tICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0tICogV0lUSE9VVCBXQVJS QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp ZWQuCi0tICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu aW5nIHBlcm1pc3Npb25zIGFuZAotLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgot LSAqLwotLQotLXBhY2thZ2Ugb3JnLmpib3NzLmxvZ2dpbmc7Ci0tCi0taW1wb3J0IGphdmEudGV4 dC5NZXNzYWdlRm9ybWF0OwotLQotLWZpbmFsIGNsYXNzIExvZzRqTG9nZ2VyIGV4dGVuZHMgTG9n Z2VyIHsKLS0KLS0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlE ID0gLTU0NDYxNTQzNjY5NTUxNTEzMzVMOwotLQotLSAgICBwcml2YXRlIGZpbmFsIG9yZy5hcGFj aGUubG9nNGouTG9nZ2VyIGxvZ2dlcjsKLS0KLS0gICAgTG9nNGpMb2dnZXIoZmluYWwgU3RyaW5n IG5hbWUpIHsKLS0gICAgICAgIHN1cGVyKG5hbWUpOwotLSAgICAgICAgbG9nZ2VyID0gb3JnLmFw YWNoZS5sb2c0ai5Mb2dnZXIuZ2V0TG9nZ2VyKG5hbWUpOwotLSAgICB9Ci0tCi0tICAgIHB1Ymxp YyBib29sZWFuIGlzRW5hYmxlZChmaW5hbCBMZXZlbCBsZXZlbCkgewotLSAgICAgICAgZmluYWwg b3JnLmFwYWNoZS5sb2c0ai5MZXZlbCBsID0gdHJhbnNsYXRlKGxldmVsKTsKLS0gICAgICAgIHJl dHVybiBsb2dnZXIuaXNFbmFibGVkRm9yKGwpICYmIGwuaXNHcmVhdGVyT3JFcXVhbChsb2dnZXIu Z2V0RWZmZWN0aXZlTGV2ZWwoKSk7Ci0tICAgIH0KLS0KLS0gICAgcHJvdGVjdGVkIHZvaWQgZG9M b2coZmluYWwgTGV2ZWwgbGV2ZWwsIGZpbmFsIFN0cmluZyBsb2dnZXJDbGFzc05hbWUsIGZpbmFs IE9iamVjdCBtZXNzYWdlLCBmaW5hbCBPYmplY3RbXSBwYXJhbWV0ZXJzLAotLSAgICAgICAgICAg IGZpbmFsIFRocm93YWJsZSB0aHJvd24pIHsKLS0gICAgICAgIGZpbmFsIG9yZy5hcGFjaGUubG9n NGouTGV2ZWwgdHJhbnNsYXRlZExldmVsID0gdHJhbnNsYXRlKGxldmVsKTsKLS0gICAgICAgIGlm IChsb2dnZXIuaXNFbmFibGVkRm9yKHRyYW5zbGF0ZWRMZXZlbCkpCi0tICAgICAgICAgICAgdHJ5 IHsKLS0gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhsb2dnZXJDbGFzc05hbWUsIHRyYW5zbGF0 ZWRMZXZlbCwgcGFyYW1ldGVycyA9PSBudWxsIHx8IHBhcmFtZXRlcnMubGVuZ3RoID09IDAgPyBt ZXNzYWdlCi0tICAgICAgICAgICAgICAgICAgICAgICAgOiBNZXNzYWdlRm9ybWF0LmZvcm1hdChT dHJpbmcudmFsdWVPZihtZXNzYWdlKSwgcGFyYW1ldGVycyksIHRocm93bik7Ci0tICAgICAgICAg ICAgfSBjYXRjaCAoVGhyb3dhYmxlIGlnbm9yZWQpIHsKLS0gICAgICAgICAgICB9Ci0tICAgIH0K LS0KLS0gICAgcHJvdGVjdGVkIHZvaWQgZG9Mb2dmKGZpbmFsIExldmVsIGxldmVsLCBmaW5hbCBT dHJpbmcgbG9nZ2VyQ2xhc3NOYW1lLCBmaW5hbCBTdHJpbmcgZm9ybWF0LCBmaW5hbCBPYmplY3Rb XSBwYXJhbWV0ZXJzLAotLSAgICAgICAgICAgIGZpbmFsIFRocm93YWJsZSB0aHJvd24pIHsKLS0g ICAgICAgIGZpbmFsIG9yZy5hcGFjaGUubG9nNGouTGV2ZWwgdHJhbnNsYXRlZExldmVsID0gdHJh bnNsYXRlKGxldmVsKTsKLS0gICAgICAgIGlmIChsb2dnZXIuaXNFbmFibGVkRm9yKHRyYW5zbGF0 ZWRMZXZlbCkpCi0tICAgICAgICAgICAgdHJ5IHsKLS0gICAgICAgICAgICAgICAgbG9nZ2VyLmxv Zyhsb2dnZXJDbGFzc05hbWUsIHRyYW5zbGF0ZWRMZXZlbCwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBwYXJhbWV0ZXJzID09IG51bGwgPyBTdHJpbmcuZm9ybWF0KGZvcm1hdCkgOiBTdHJpbmcu Zm9ybWF0KGZvcm1hdCwgcGFyYW1ldGVycyksIHRocm93bik7Ci0tICAgICAgICAgICAgfSBjYXRj aCAoVGhyb3dhYmxlIGlnbm9yZWQpIHsKLS0gICAgICAgICAgICB9Ci0tICAgIH0KLS0KLS0gICAg cHJpdmF0ZSBzdGF0aWMgb3JnLmFwYWNoZS5sb2c0ai5MZXZlbCB0cmFuc2xhdGUoZmluYWwgTGV2 ZWwgbGV2ZWwpIHsKLS0gICAgICAgIGlmIChsZXZlbCA9PSBMZXZlbC5UUkFDRSkgewotLSAgICAg ICAgICAgIHJldHVybiBvcmcuYXBhY2hlLmxvZzRqLkxldmVsLlRSQUNFOwotLSAgICAgICAgfSBl bHNlIGlmIChsZXZlbCA9PSBMZXZlbC5ERUJVRykgewotLSAgICAgICAgICAgIHJldHVybiBvcmcu YXBhY2hlLmxvZzRqLkxldmVsLkRFQlVHOwotLSAgICAgICAgfQotLSAgICAgICAgcmV0dXJuIGlu Zm9PckhpZ2hlcihsZXZlbCk7Ci0tICAgIH0KLS0KLS0gICAgcHJpdmF0ZSBzdGF0aWMgb3JnLmFw YWNoZS5sb2c0ai5MZXZlbCBpbmZvT3JIaWdoZXIoZmluYWwgTGV2ZWwgbGV2ZWwpIHsKLS0gICAg ICAgIGlmIChsZXZlbCA9PSBMZXZlbC5JTkZPKSB7Ci0tICAgICAgICAgICAgcmV0dXJuIG9yZy5h cGFjaGUubG9nNGouTGV2ZWwuSU5GTzsKLS0gICAgICAgIH0gZWxzZSBpZiAobGV2ZWwgPT0gTGV2 ZWwuV0FSTikgewotLSAgICAgICAgICAgIHJldHVybiBvcmcuYXBhY2hlLmxvZzRqLkxldmVsLldB Uk47Ci0tICAgICAgICB9IGVsc2UgaWYgKGxldmVsID09IExldmVsLkVSUk9SKSB7Ci0tICAgICAg ICAgICAgcmV0dXJuIG9yZy5hcGFjaGUubG9nNGouTGV2ZWwuRVJST1I7Ci0tICAgICAgICB9IGVs c2UgaWYgKGxldmVsID09IExldmVsLkZBVEFMKSB7Ci0tICAgICAgICAgICAgcmV0dXJuIG9yZy5h cGFjaGUubG9nNGouTGV2ZWwuRkFUQUw7Ci0tICAgICAgICB9Ci0tICAgICAgICByZXR1cm4gb3Jn LmFwYWNoZS5sb2c0ai5MZXZlbC5BTEw7Ci0tICAgIH0KLS19Ci1kaWZmIC0tZ2l0IGEvc3JjL21h aW4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0akxvZ2dlclByb3ZpZGVyLmphdmEgYi9zcmMv bWFpbi9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRqTG9nZ2VyUHJvdmlkZXIuamF2YQotZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA5YmIwYzc0Li4wMDAwMDAwCi0tLS0gYS9zcmMv bWFpbi9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRqTG9nZ2VyUHJvdmlkZXIuamF2YQotKysr IC9kZXYvbnVsbAotQEAgLTEsMTA1ICswLDAgQEAKLS0vKgotLSAqIEpCb3NzLCBIb21lIG9mIFBy b2Zlc3Npb25hbCBPcGVuIFNvdXJjZS4KLS0gKgotLSAqIENvcHlyaWdodCAyMDIzIFJlZCBIYXQs IEluYy4KLS0gKgotLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv biAyLjAgKHRoZSAiTGljZW5zZSIpOwotLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLS0gKiBZb3UgbWF5IG9idGFpbiBh IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS0gKgotLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv bGljZW5zZXMvTElDRU5TRS0yLjAKLS0gKgotLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLS0gKiBkaXN0cmlidXRl ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAot LSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg ZXhwcmVzcyBvciBpbXBsaWVkLgotLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLS0gKiBsaW1pdGF0aW9ucyB1bmRl ciB0aGUgTGljZW5zZS4KLS0gKi8KLS0KLS1wYWNrYWdlIG9yZy5qYm9zcy5sb2dnaW5nOwotLQot LWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci0taW1wb3J0IGphdmEudXRpbC5NYXA7Ci0t Ci0taW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTURDOwotLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRq Lk5EQzsKLS0KLS0vKioKLS0gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUge0BsaW5rcGxhaW4g TG9nZ2VyUHJvdmlkZXIgbG9nIHByb3ZpZGVyfSBmb3IgbG9nNGouCi0tICogPHA+Ci0tICogUGxl YXNlIG5vdGUgdGhhdCBsb2c0aiByZWFjaGVkIGVuZCBvZiBsaWZlIG9uIEF1Z3VzdCA1LCAyMDE1 LiBQcmVmZXIgdXNpbmcgYSBsb2cgbWFuYWdlciBhbmQgcHJvdmlkZXIuCi0tICogPC9wPgotLSAq LwotLXB1YmxpYyBmaW5hbCBjbGFzcyBMb2c0akxvZ2dlclByb3ZpZGVyIGltcGxlbWVudHMgTG9n Z2VyUHJvdmlkZXIgewotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIExvZ2dlciBnZXRM b2dnZXIoZmluYWwgU3RyaW5nIG5hbWUpIHsKLS0gICAgICAgIHJldHVybiBuZXcgTG9nNGpMb2dn ZXIoIiIuZXF1YWxzKG5hbWUpID8gIlJPT1QiIDogbmFtZSk7Ci0tICAgIH0KLS0KLS0gICAgQE92 ZXJyaWRlCi0tICAgIHB1YmxpYyB2b2lkIGNsZWFyTWRjKCkgewotLSAgICAgICAgTURDLmNsZWFy KCk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIHB1YmxpYyBPYmplY3QgZ2V0TWRj KFN0cmluZyBrZXkpIHsKLS0gICAgICAgIHJldHVybiBNREMuZ2V0KGtleSk7Ci0tICAgIH0KLS0K LS0gICAgQE92ZXJyaWRlCi0tICAgIHB1YmxpYyBNYXA8U3RyaW5nLCBPYmplY3Q+IGdldE1kY01h cCgpIHsKLS0gICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQotLSAgICAgICAg ZmluYWwgTWFwPFN0cmluZywgT2JqZWN0PiBtYXAgPSBNREMuZ2V0Q29udGV4dCgpOwotLSAgICAg ICAgcmV0dXJuIG1hcCA9PSBudWxsID8gQ29sbGVjdGlvbnMuZW1wdHlNYXAoKSA6IG1hcDsKLS0g ICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIE9iamVjdCBwdXRNZGMoU3RyaW5n IGtleSwgT2JqZWN0IHZhbCkgewotLSAgICAgICAgdHJ5IHsKLS0gICAgICAgICAgICByZXR1cm4g TURDLmdldChrZXkpOwotLSAgICAgICAgfSBmaW5hbGx5IHsKLS0gICAgICAgICAgICBNREMucHV0 KGtleSwgdmFsKTsKLS0gICAgICAgIH0KLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAg cHVibGljIHZvaWQgcmVtb3ZlTWRjKFN0cmluZyBrZXkpIHsKLS0gICAgICAgIE1EQy5yZW1vdmUo a2V5KTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIHZvaWQgY2xlYXJO ZGMoKSB7Ci0tICAgICAgICBOREMucmVtb3ZlKCk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRl Ci0tICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmRjKCkgewotLSAgICAgICAgcmV0dXJuIE5EQy5nZXQo KTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIGludCBnZXROZGNEZXB0 aCgpIHsKLS0gICAgICAgIHJldHVybiBOREMuZ2V0RGVwdGgoKTsKLS0gICAgfQotLQotLSAgICBA T3ZlcnJpZGUKLS0gICAgcHVibGljIFN0cmluZyBwZWVrTmRjKCkgewotLSAgICAgICAgcmV0dXJu IE5EQy5wZWVrKCk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIHB1YmxpYyBTdHJp bmcgcG9wTmRjKCkgewotLSAgICAgICAgcmV0dXJuIE5EQy5wb3AoKTsKLS0gICAgfQotLQotLSAg ICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIHZvaWQgcHVzaE5kYyhTdHJpbmcgbWVzc2FnZSkgewot LSAgICAgICAgTkRDLnB1c2gobWVzc2FnZSk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRlCi0t ICAgIHB1YmxpYyB2b2lkIHNldE5kY01heERlcHRoKGludCBtYXhEZXB0aCkgewotLSAgICAgICAg TkRDLnNldE1heERlcHRoKG1heERlcHRoKTsKLS0gICAgfQotLX0KLWRpZmYgLS1naXQgYS9zcmMv bWFpbi9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZ2dlclByb3ZpZGVycy5qYXZhIGIvc3JjL21h aW4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2dnZXJQcm92aWRlcnMuamF2YQotaW5kZXggMDhj MTZjZS4uNTg0ZmE3OSAxMDA2NDQKLS0tLSBhL3NyYy9tYWluL2phdmEvb3JnL2pib3NzL2xvZ2dp bmcvTG9nZ2VyUHJvdmlkZXJzLmphdmEKLSsrKyBiL3NyYy9tYWluL2phdmEvb3JnL2pib3NzL2xv Z2dpbmcvTG9nZ2VyUHJvdmlkZXJzLmphdmEKLUBAIC00NSwxMCArNDUsNiBAQCBmaW5hbCBjbGFz cyBMb2dnZXJQcm92aWRlcnMgewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeUpCb3Nz TG9nTWFuYWdlcihjbCwgInN5c3RlbSBwcm9wZXJ0eSIpOwotICAgICAgICAgICAgICAgICB9IGVs c2UgaWYgKCJqZGsiLmVxdWFsc0lnbm9yZUNhc2UobG9nZ2VyUHJvdmlkZXIpKSB7Ci0gICAgICAg ICAgICAgICAgICAgICByZXR1cm4gdHJ5SkRLKCJzeXN0ZW0gcHJvcGVydHkiKTsKLS0gICAgICAg ICAgICAgICAgfSBlbHNlIGlmICgibG9nNGoyIi5lcXVhbHNJZ25vcmVDYXNlKGxvZ2dlclByb3Zp ZGVyKSkgewotLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyeUxvZzRqMihjbCwgInN5c3Rl bSBwcm9wZXJ0eSIpOwotLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCJsb2c0aiIuZXF1YWxz SWdub3JlQ2FzZShsb2dnZXJQcm92aWRlcikpIHsKLS0gICAgICAgICAgICAgICAgICAgIHJldHVy biB0cnlMb2c0aihjbCwgInN5c3RlbSBwcm9wZXJ0eSIpOwotICAgICAgICAgICAgICAgICB9IGVs c2UgaWYgKCJzbGY0aiIuZXF1YWxzSWdub3JlQ2FzZShsb2dnZXJQcm92aWRlcikpIHsKLSAgICAg ICAgICAgICAgICAgICAgIHJldHVybiB0cnlTbGY0aigic3lzdGVtIHByb3BlcnR5Iik7Ci0gICAg ICAgICAgICAgICAgIH0KLUBAIC04MSwxMSArNzcsNiBAQCBmaW5hbCBjbGFzcyBMb2dnZXJQcm92 aWRlcnMgewotICAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsKLSAgICAgICAgICAgICAv LyBub3BlLi4uCi0gICAgICAgICB9Ci0tICAgICAgICB0cnkgewotLSAgICAgICAgICAgIHJldHVy biB0cnlMb2c0ajIoY2wsIG51bGwpOwotLSAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsK LS0gICAgICAgICAgICAvLyBub3BlLi4uCi0tICAgICAgICB9Ci0gICAgICAgICB0cnkgewotICAg ICAgICAgICAgIC8vIG9ubHkgdXNlIHNsZjRqIGlmIExvZ2JhY2sgaXMgaW4gdXNlCi0gICAgICAg ICAgICAgQ2xhc3MuZm9yTmFtZSgiY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5Mb2dnZXIiLCBmYWxz ZSwgY2wpOwotQEAgLTkzLDEyICs4NCw2IEBAIGZpbmFsIGNsYXNzIExvZ2dlclByb3ZpZGVycyB7 Ci0gICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgewotICAgICAgICAgICAgIC8vIG5vcGUu Li4KLSAgICAgICAgIH0KLS0gICAgICAgIHRyeSB7Ci0tICAgICAgICAgICAgLy8gbG9nNGogaGFz IGJlZW4gRU9MJ2Qgc2luY2UgMjAxNS4gSXQgc2hvdWxkIGJlIGNoZWNrZWQgbGFzdC4KLS0gICAg ICAgICAgICByZXR1cm4gdHJ5TG9nNGooY2wsIG51bGwpOwotLSAgICAgICAgfSBjYXRjaCAoVGhy b3dhYmxlIHQpIHsKLS0gICAgICAgICAgICAvLyBub3BlLi4uCi0tICAgICAgICB9Ci0gICAgICAg ICByZXR1cm4gdHJ5SkRLKG51bGwpOwotICAgICB9Ci0gCi1AQCAtMTE0LDI3ICs5OSw2IEBAIGZp bmFsIGNsYXNzIExvZ2dlclByb3ZpZGVycyB7Ci0gICAgICAgICByZXR1cm4gcHJvdmlkZXI7Ci0g ICAgIH0KLSAKLS0gICAgLy8gSkJMT0dHSU5HLTk1IC0gQWRkIHN1cHBvcnQgZm9yIExvZzRqIDIu eAotLSAgICBwcml2YXRlIHN0YXRpYyBMb2dnZXJQcm92aWRlciB0cnlMb2c0ajIoZmluYWwgQ2xh c3NMb2FkZXIgY2wsIGZpbmFsIFN0cmluZyB2aWEpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0 aW9uIHsKLS0gICAgICAgIENsYXNzLmZvck5hbWUoIm9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5M b2dnZXIiLCB0cnVlLCBjbCk7Ci0tICAgICAgICBDbGFzcy5mb3JOYW1lKCJvcmcuYXBhY2hlLmxv Z2dpbmcubG9nNGouTG9nTWFuYWdlciIsIHRydWUsIGNsKTsKLS0gICAgICAgIENsYXNzLmZvck5h bWUoIm9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5zcGkuQWJzdHJhY3RMb2dnZXIiLCB0cnVlLCBj bCk7Ci0tICAgICAgICBMb2dnZXJQcm92aWRlciBwcm92aWRlciA9IG5ldyBMb2c0ajJMb2dnZXJQ cm92aWRlcigpOwotLSAgICAgICAgLy8gaWYgTG9nNGogMiBoYXMgYSBiYWQgaW1wbGVtZW50YXRp b24gdGhhdCBkb2Vzbid0IGV4dGVuZCBBYnN0cmFjdExvZ2dlciwgd2Ugd29uJ3Qga25vdyB1bnRp bCBnZXR0aW5nIHRoZSBmaXJzdCBsb2dnZXIgdGhyb3dzIGFuIGV4Y2VwdGlvbgotLSAgICAgICAg bG9nUHJvdmlkZXIocHJvdmlkZXIsIHZpYSk7Ci0tICAgICAgICByZXR1cm4gcHJvdmlkZXI7Ci0t ICAgIH0KLS0KLS0gICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyUHJvdmlkZXIgdHJ5TG9nNGooZmlu YWwgQ2xhc3NMb2FkZXIgY2wsIGZpbmFsIFN0cmluZyB2aWEpIHRocm93cyBDbGFzc05vdEZvdW5k RXhjZXB0aW9uIHsKLS0gICAgICAgIENsYXNzLmZvck5hbWUoIm9yZy5hcGFjaGUubG9nNGouTG9n TWFuYWdlciIsIHRydWUsIGNsKTsKLS0gICAgICAgIC8vIEpCTE9HR0lORy02NSAtIHNsZjRqIGNh biBkaXNndWlzZSBpdHNlbGYgYXMgbG9nNGouICBUZXN0IGZvciBhIGNsYXNzIHRoYXQgc2xmNGog ZG9lc24ndCBwcm92aWRlLgotLSAgICAgICAgLy8gSkJMT0dHSU5HLTk0IC0gSkJvc3MgTG9nZ2lu ZyBkb2VzIG5vdCBkZXRlY3Qgb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqOmxvZzRqLTEuMi1hcGk6 Mi4wCi0tICAgICAgICBDbGFzcy5mb3JOYW1lKCJvcmcuYXBhY2hlLmxvZzRqLmNvbmZpZy5Qcm9w ZXJ0eVNldHRlciIsIHRydWUsIGNsKTsKLS0gICAgICAgIGZpbmFsIExvZ2dlclByb3ZpZGVyIHBy b3ZpZGVyID0gbmV3IExvZzRqTG9nZ2VyUHJvdmlkZXIoKTsKLS0gICAgICAgIGxvZ1Byb3ZpZGVy KHByb3ZpZGVyLCB2aWEpOwotLSAgICAgICAgcmV0dXJuIHByb3ZpZGVyOwotLSAgICB9Ci0tCi0g ICAgIHByaXZhdGUgc3RhdGljIExvZ2dlclByb3ZpZGVyIHRyeUpCb3NzTG9nTWFuYWdlcihmaW5h bCBDbGFzc0xvYWRlciBjbCwgZmluYWwgU3RyaW5nIHZpYSkgdGhyb3dzIENsYXNzTm90Rm91bmRF eGNlcHRpb24gewotICAgICAgICAgZmluYWwgQ2xhc3M8PyBleHRlbmRzIExvZ01hbmFnZXI+IGxv Z01hbmFnZXJDbGFzcyA9IExvZ01hbmFnZXIuZ2V0TG9nTWFuYWdlcigpLmdldENsYXNzKCk7Ci0g ICAgICAgICBmaW5hbCBDbGFzczw/PiBqYmxMb2dNYW5hZ2VyID0gQ2xhc3MuZm9yTmFtZSgib3Jn Lmpib3NzLmxvZ21hbmFnZXIuTG9nTWFuYWdlciIsIGZhbHNlLAotZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvTG9nNGoyQ2xhc3NQYXRoVGVzdENhc2UuamF2YSBi L3NyYy90ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvTG9nNGoyQ2xhc3NQYXRoVGVzdENhc2Uu amF2YQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA4OGYwNWY0Li4wMDAwMDAwCi0t LS0gYS9zcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRqMkNsYXNzUGF0aFRlc3RD YXNlLmphdmEKLSsrKyAvZGV2L251bGwKLUBAIC0xLDMwICswLDAgQEAKLS0vKgotLSAqIEpCb3Nz LCBIb21lIG9mIFByb2Zlc3Npb25hbCBPcGVuIFNvdXJjZS4KLS0gKgotLSAqIENvcHlyaWdodCAy MDIzIFJlZCBIYXQsIEluYy4KLS0gKgotLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotLSAqIHlvdSBtYXkgbm90IHVzZSB0 aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLS0gKiBZb3Ug bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS0gKgotLSAqICBodHRwOi8vd3d3 LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLS0gKgotLSAqIFVubGVzcyByZXF1aXJl ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLS0g KiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg SVMiIEJBU0lTLAotLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotLSAqIFNlZSB0aGUgTGljZW5zZSBmb3Ig dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLS0gKiBsaW1p dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0gKi8KLS0KLS1wYWNrYWdlIG9yZy5qYm9zcy5s b2dnaW5nOwotLQotLS8qKgotLSAqIEBhdXRob3IgPGEgaHJlZj0ibWFpbHRvOmpwZXJraW5zQHJl ZGhhdC5jb20iPkphbWVzIFIuIFBlcmtpbnM8L2E+Ci0tICovCi0tcHVibGljIGNsYXNzIExvZzRq MkNsYXNzUGF0aFRlc3RDYXNlIGV4dGVuZHMgQWJzdHJhY3RDbGFzc1BhdGhUZXN0Q2FzZSB7Ci0t Ci0tICAgIEBPdmVycmlkZQotLSAgICBDbGFzczw/IGV4dGVuZHMgTG9nZ2VyPiBnZXRMb2dnZXJD bGFzcygpIHsKLS0gICAgICAgIHJldHVybiBMb2c0ajJMb2dnZXIuY2xhc3M7Ci0tICAgIH0KLS19 Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0ajJQcm92 aWRlclRlc3RDYXNlLmphdmEgYi9zcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xvZzRq MlByb3ZpZGVyVGVzdENhc2UuamF2YQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA2 M2FhNDNjLi4wMDAwMDAwCi0tLS0gYS9zcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0xv ZzRqMlByb3ZpZGVyVGVzdENhc2UuamF2YQotKysrIC9kZXYvbnVsbAotQEAgLTEsMTU1ICswLDAg QEAKLS0vKgotLSAqIEpCb3NzLCBIb21lIG9mIFByb2Zlc3Npb25hbCBPcGVuIFNvdXJjZS4KLS0g KgotLSAqIENvcHlyaWdodCAyMDIzIFJlZCBIYXQsIEluYy4KLS0gKgotLSAqIExpY2Vuc2VkIHVu ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotLSAq IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg TGljZW5zZS4KLS0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS0g KgotLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLS0gKgot LSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp dGluZywgc29mdHdhcmUKLS0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0 cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotLSAqIFNl ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz aW9ucyBhbmQKLS0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0gKi8KLS0KLS1w YWNrYWdlIG9yZy5qYm9zcy5sb2dnaW5nOwotLQotLWltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJs ZTsKLS1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZTsKLS1pbXBvcnQg amF2YS51dGlsLmNvbmN1cnJlbnQuTGlua2VkQmxvY2tpbmdRdWV1ZTsKLS0KLS1pbXBvcnQgb3Jn LmFwYWNoZS5sb2dnaW5nLmxvZzRqLkxvZ01hbmFnZXI7Ci0taW1wb3J0IG9yZy5hcGFjaGUubG9n Z2luZy5sb2c0ai5UaHJlYWRDb250ZXh0OwotLWltcG9ydCBvcmcuYXBhY2hlLmxvZ2dpbmcubG9n NGouY29yZS5GaWx0ZXI7Ci0taW1wb3J0IG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLkxh eW91dDsKLS1pbXBvcnQgb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLmNvcmUuTG9nRXZlbnQ7Ci0t aW1wb3J0IG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLkxvZ2dlckNvbnRleHQ7Ci0taW1w b3J0IG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLmFwcGVuZGVyLkFic3RyYWN0QXBwZW5k ZXI7Ci0taW1wb3J0IG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLmNvbmZpZy5Db25maWd1 cmF0aW9uOwotLWltcG9ydCBvcmcuYXBhY2hlLmxvZ2dpbmcubG9nNGouY29yZS5jb25maWcucGx1 Z2lucy5QbHVnaW47Ci0taW1wb3J0IG9yZy5hcGFjaGUubG9nZ2luZy5sb2c0ai5jb3JlLmNvbmZp Zy5wbHVnaW5zLlBsdWdpbkF0dHJpYnV0ZTsKLS1pbXBvcnQgb3JnLmFwYWNoZS5sb2dnaW5nLmxv ZzRqLmNvcmUuY29uZmlnLnBsdWdpbnMuUGx1Z2luRWxlbWVudDsKLS1pbXBvcnQgb3JnLmFwYWNo ZS5sb2dnaW5nLmxvZzRqLmNvcmUuY29uZmlnLnBsdWdpbnMuUGx1Z2luRmFjdG9yeTsKLS1pbXBv cnQgb3JnLmFwYWNoZS5sb2dnaW5nLmxvZzRqLmNvcmUubGF5b3V0LlBhdHRlcm5MYXlvdXQ7Ci0t aW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5Bc3NlcnRpb25zOwotLWltcG9ydCBvcmcuanVu aXQuanVwaXRlci5hcGkuQmVmb3JlQWxsOwotLWltcG9ydCBvcmcuanVuaXQuanVwaXRlci5hcGku QmVmb3JlRWFjaDsKLS1pbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLlRlc3Q7Ci0tCi0tLyoq Ci0tICogQGF1dGhvciA8YSBocmVmPSJtYWlsdG86anBlcmtpbnNAcmVkaGF0LmNvbSI+SmFtZXMg Ui4gUGVya2luczwvYT4KLS0gKi8KLS1wdWJsaWMgY2xhc3MgTG9nNGoyUHJvdmlkZXJUZXN0Q2Fz ZSBleHRlbmRzIEFic3RyYWN0TG9nZ2VyVGVzdENhc2UgewotLSAgICBwcml2YXRlIFRlc3RBcHBl bmRlciBhcHBlbmRlcjsKLS0gICAgcHJpdmF0ZSBMb2dnZXIgbG9nZ2VyOwotLQotLSAgICBAQmVm b3JlQWxsCi0tICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXR1cCgpIHsKLS0gICAgICAgIFN5c3Rl bS5zZXRQcm9wZXJ0eSgib3JnLmpib3NzLmxvZ2dpbmcucHJvdmlkZXIiLCAibG9nNGoyIik7Ci0t ICAgIH0KLS0KLS0gICAgQEJlZm9yZUVhY2gKLS0gICAgcHVibGljIHZvaWQgc2V0dXBMb2dDb250 ZXh0KCkgewotLSAgICAgICAgbG9nZ2VyID0gTG9nZ2VyLmdldExvZ2dlcihnZXRDbGFzcygpKTsK LS0gICAgICAgIGZpbmFsIExvZ2dlckNvbnRleHQgY3R4ID0gKExvZ2dlckNvbnRleHQpIExvZ01h bmFnZXIuZ2V0Q29udGV4dChmYWxzZSk7Ci0tICAgICAgICBmaW5hbCBDb25maWd1cmF0aW9uIGNv bmZpZyA9IGN0eC5nZXRDb25maWd1cmF0aW9uKCk7Ci0tICAgICAgICBhcHBlbmRlciA9IChUZXN0 QXBwZW5kZXIpIGNvbmZpZy5nZXRBcHBlbmRlcnMoKS5nZXQoIlRlc3RBcHBlbmRlciIpOwotLSAg ICB9Ci0tCi0tICAgIEBUZXN0Ci0tICAgIHB1YmxpYyB2b2lkIHRlc3RNZGMoKSB7Ci0tICAgICAg ICBNREMucHV0KCJ0ZXN0LmtleSIsICJ2YWx1ZSIpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3Nl cnRFcXVhbHMoInZhbHVlIiwgTURDLmdldCgidGVzdC5rZXkiKSk7Ci0tICAgICAgICBBc3NlcnRp b25zLmFzc2VydEVxdWFscygidmFsdWUiLCBUaHJlYWRDb250ZXh0LmdldCgidGVzdC5rZXkiKSk7 Ci0tICAgIH0KLS0KLS0gICAgQFRlc3QKLS0gICAgcHVibGljIHZvaWQgdGVzdE5kYygpIHsKLS0g ICAgICAgIE5EQy5wdXNoKCJ2YWx1ZTEiKTsKLS0gICAgICAgIE5EQy5wdXNoKCJ2YWx1ZTIiKTsK LS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKCJ2YWx1ZTIiLCBOREMucGVlaygpKTsK LS0gICAgICAgIC8vIFRPRE8gKGpycCkgVGhpcyBpcyBhIHdlaXJkIGNhc2Ugd2Ugc2hvdWxkIHZh bGlkYXRlLiBOREMuZ2V0KCkgZG9lcyBUaHJlYWRDb250ZXh0LnBlZWsoKSB3aGljaCBkb2Vzbid0 IHNlZW0KLS0gICAgICAgIC8vIFRPRE8gKGpycCkgY29ycmVjdC4gVGhlIG1ldGhvZCBzaG91bGQg bGlrZWx5IGRvIFRocmVhZENvbnRleHQuZ2V0SW1tdXRhYmxlU3RhY2soKS50b1N0cmluZygpLiBB dCBsZWFzdCB0aGF0Ci0tICAgICAgICAvLyBUT0RPIChqcnApIGlzIHdoYXQgdGhlIE5kY1BhdHRl cm5Db252ZXJ0ZXIgZG9lcy4KLS0gICAgICAgIC8vQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoIlt2 YWx1ZTEsIHZhbHVlMl0iLCBOREMuZ2V0KCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRF cXVhbHMoMiwgTkRDLmdldERlcHRoKCkpOwotLQotLSAgICAgICAgLy8gVGVzdCB0aGUgbG9nIG1h bmFnZXIgdmFsdWVzCi0tICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscygiW3ZhbHVlMSwg dmFsdWUyXSIsIFRocmVhZENvbnRleHQuZ2V0SW1tdXRhYmxlU3RhY2soKS50b1N0cmluZygpKTsK LS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKDIsIFRocmVhZENvbnRleHQuZ2V0RGVw dGgoKSk7Ci0tCi0tICAgICAgICAvLyBQb3AgdGhlIHN0YWNrCi0tICAgICAgICBBc3NlcnRpb25z LmFzc2VydEVxdWFscygidmFsdWUyIiwgTkRDLnBvcCgpKTsKLS0gICAgICAgIEFzc2VydGlvbnMu YXNzZXJ0RXF1YWxzKDEsIE5EQy5nZXREZXB0aCgpKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNz ZXJ0RXF1YWxzKCJ2YWx1ZTEiLCBOREMuZ2V0KCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3Nl cnRFcXVhbHMoInZhbHVlMSIsIFRocmVhZENvbnRleHQucGVlaygpKTsKLS0gICAgICAgIEFzc2Vy dGlvbnMuYXNzZXJ0RXF1YWxzKDEsIFRocmVhZENvbnRleHQuZ2V0RGVwdGgoKSk7Ci0tICAgIH0K LS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIHZvaWQgdGVzdExvZyhmaW5hbCBMb2dnZXIuTGV2ZWwg bGV2ZWwpIHsKLS0gICAgICAgIGZpbmFsIFN0cmluZyBtc2cgPSBTdHJpbmcuZm9ybWF0KCJUZXN0 IGxvZyBtZXNzYWdlIGF0ICVzIiwgbGV2ZWwpOwotLSAgICAgICAgbG9nZ2VyLmxvZyhsZXZlbCwg bXNnKTsKLS0KLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0VHJ1ZShsb2dnZXIuaXNFbmFibGVk KGxldmVsKSwgU3RyaW5nLmZvcm1hdCgiTG9nZ2VyIG5vdCBlbmFibGVkIGZvciBsZXZlbCAlcyIs IGxldmVsKSk7Ci0tICAgICAgICB0ZXN0TG9nKG1zZywgbGV2ZWwpOwotLSAgICB9Ci0tCi0tICAg IEBPdmVycmlkZQotLSAgICB2b2lkIHRlc3RMb2coZmluYWwgU3RyaW5nIG1zZywgZmluYWwgTG9n Z2VyLkxldmVsIGxldmVsKSB7Ci0tICAgICAgICBmaW5hbCBMb2dFdmVudCBldmVudCA9IGFwcGVu ZGVyLnF1ZXVlLnBvbGwoKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90TnVsbChldmVu dCwgU3RyaW5nLmZvcm1hdCgiTm8gcmVjb3JkIGZvdW5kIGZvciAlcyIsIGxldmVsKSk7Ci0tICAg ICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscyhsZXZlbC5uYW1lKCksIGV2ZW50LmdldExldmVs KCkudG9TdHJpbmcoKSk7Ci0tICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscyhtc2csIGV2 ZW50LmdldE1lc3NhZ2UoKS5nZXRGb3JtYXR0ZWRNZXNzYWdlKCkpOwotLSAgICB9Ci0tCi0tICAg IEBPdmVycmlkZQotLSAgICBMb2dnZXIgZ2V0TG9nZ2VyKCkgewotLSAgICAgICAgcmV0dXJuIGxv Z2dlcjsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgQ2xhc3M8PyBleHRlbmRzIExv Z2dlcj4gZ2V0TG9nZ2VyQ2xhc3MoKSB7Ci0tICAgICAgICByZXR1cm4gTG9nNGoyTG9nZ2VyLmNs YXNzOwotLSAgICB9Ci0tCi0tICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQotLSAgICBA UGx1Z2luKG5hbWUgPSAiVGVzdEFwcGVuZGVyIiwgY2F0ZWdvcnkgPSAiQ29yZSIsIGVsZW1lbnRU eXBlID0gImFwcGVuZGVyIiwgcHJpbnRPYmplY3QgPSB0cnVlKQotLSAgICBwdWJsaWMgc3RhdGlj IGNsYXNzIFRlc3RBcHBlbmRlciBleHRlbmRzIEFic3RyYWN0QXBwZW5kZXIgewotLSAgICAgICAg ZmluYWwgQmxvY2tpbmdRdWV1ZTxMb2dFdmVudD4gcXVldWUgPSBuZXcgTGlua2VkQmxvY2tpbmdR dWV1ZTw+KCk7Ci0tCi0tICAgICAgICBwcm90ZWN0ZWQgVGVzdEFwcGVuZGVyKFN0cmluZyBuYW1l LCBGaWx0ZXIgZmlsdGVyLCBMYXlvdXQ8PyBleHRlbmRzIFNlcmlhbGl6YWJsZT4gbGF5b3V0KSB7 Ci0tICAgICAgICAgICAgc3VwZXIobmFtZSwgZmlsdGVyLCBsYXlvdXQsIGZhbHNlLCBudWxsKTsK LS0gICAgICAgIH0KLS0KLS0gICAgICAgIEBPdmVycmlkZQotLSAgICAgICAgcHVibGljIHZvaWQg YXBwZW5kKGZpbmFsIExvZ0V2ZW50IGV2ZW50KSB7Ci0tICAgICAgICAgICAgcXVldWUuYWRkKGV2 ZW50LnRvSW1tdXRhYmxlKCkpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgQE92ZXJyaWRlCi0t ICAgICAgICBwdWJsaWMgdm9pZCBzdG9wKCkgewotLSAgICAgICAgICAgIHF1ZXVlLmNsZWFyKCk7 Ci0tICAgICAgICAgICAgc3VwZXIuc3RvcCgpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgQFBs dWdpbkZhY3RvcnkKLS0gICAgICAgIHB1YmxpYyBzdGF0aWMgVGVzdEFwcGVuZGVyIGNyZWF0ZUFw cGVuZGVyKEBQbHVnaW5BdHRyaWJ1dGUoIm5hbWUiKSBTdHJpbmcgbmFtZSwKLS0gICAgICAgICAg ICAgICAgQFBsdWdpbkVsZW1lbnQoIkxheW91dCIpIExheW91dDw/IGV4dGVuZHMgU2VyaWFsaXph YmxlPiBsYXlvdXQsCi0tICAgICAgICAgICAgICAgIEBQbHVnaW5FbGVtZW50KCJGaWx0ZXIiKSBm aW5hbCBGaWx0ZXIgZmlsdGVyLAotLSAgICAgICAgICAgICAgICBAUGx1Z2luQXR0cmlidXRlKCJv dGhlckF0dHJpYnV0ZSIpIFN0cmluZyBvdGhlckF0dHJpYnV0ZSkgewotLSAgICAgICAgICAgIGlm IChuYW1lID09IG51bGwpIHsKLS0gICAgICAgICAgICAgICAgTE9HR0VSLmVycm9yKCJObyBuYW1l IHByb3ZpZGVkIGZvciBUZXN0QXBwZW5kZXIiKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIG51 bGw7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGlmIChsYXlvdXQgPT0gbnVsbCkgewot LSAgICAgICAgICAgICAgICBsYXlvdXQgPSBQYXR0ZXJuTGF5b3V0LmNyZWF0ZURlZmF1bHRMYXlv dXQoKTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXN0QXBwZW5k ZXIobmFtZSwgZmlsdGVyLCBsYXlvdXQpOwotLSAgICAgICAgfQotLSAgICB9Ci0tfQotZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvTG9nNGpDbGFzc1BhdGhUZXN0 Q2FzZS5qYXZhIGIvc3JjL3Rlc3QvamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0akNsYXNzUGF0 aFRlc3RDYXNlLmphdmEKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggOTY0N2ZlOC4u MDAwMDAwMAotLS0tIGEvc3JjL3Rlc3QvamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2c0akNsYXNz UGF0aFRlc3RDYXNlLmphdmEKLSsrKyAvZGV2L251bGwKLUBAIC0xLDMwICswLDAgQEAKLS0vKgot LSAqIEpCb3NzLCBIb21lIG9mIFByb2Zlc3Npb25hbCBPcGVuIFNvdXJjZS4KLS0gKgotLSAqIENv cHlyaWdodCAyMDIzIFJlZCBIYXQsIEluYy4KLS0gKgotLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBB cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotLSAqIHlvdSBtYXkg bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K LS0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS0gKgotLSAqICBo dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLS0gKgotLSAqIFVubGVz cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m dHdhcmUKLS0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv biBhbiAiQVMgSVMiIEJBU0lTLAotLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotLSAqIFNlZSB0aGUgTGlj ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK LS0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0gKi8KLS0KLS1wYWNrYWdlIG9y Zy5qYm9zcy5sb2dnaW5nOwotLQotLS8qKgotLSAqIEBhdXRob3IgPGEgaHJlZj0ibWFpbHRvOmpw ZXJraW5zQHJlZGhhdC5jb20iPkphbWVzIFIuIFBlcmtpbnM8L2E+Ci0tICovCi0tcHVibGljIGNs YXNzIExvZzRqQ2xhc3NQYXRoVGVzdENhc2UgZXh0ZW5kcyBBYnN0cmFjdENsYXNzUGF0aFRlc3RD YXNlIHsKLS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIENsYXNzPD8gZXh0ZW5kcyBMb2dnZXI+IGdl dExvZ2dlckNsYXNzKCkgewotLSAgICAgICAgcmV0dXJuIExvZzRqTG9nZ2VyLmNsYXNzOwotLSAg ICB9Ci0tfQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvTG9n NGpQcm92aWRlclRlc3RDYXNlLmphdmEgYi9zcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5n L0xvZzRqUHJvdmlkZXJUZXN0Q2FzZS5qYXZhCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IGNiMmZlOWQuLjAwMDAwMDAKLS0tLSBhL3NyYy90ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dp bmcvTG9nNGpQcm92aWRlclRlc3RDYXNlLmphdmEKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEzOCAr MCwwIEBACi0tLyoKLS0gKiBKQm9zcywgSG9tZSBvZiBQcm9mZXNzaW9uYWwgT3BlbiBTb3VyY2Uu Ci0tICoKLS0gKiBDb3B5cmlnaHQgMjAyMyBSZWQgSGF0LCBJbmMuCi0tICoKLS0gKiBMaWNlbnNl ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK LS0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg dGhlIExpY2Vuc2UuCi0tICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0 Ci0tICoKLS0gKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0t ICoKLS0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu IHdyaXRpbmcsIHNvZnR3YXJlCi0tICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLS0gKiBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLS0g KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy bWlzc2lvbnMgYW5kCi0tICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tICovCi0t Ci0tcGFja2FnZSBvcmcuamJvc3MubG9nZ2luZzsKLS0KLS1pbXBvcnQgamF2YS51dGlsLmNvbmN1 cnJlbnQuQmxvY2tpbmdRdWV1ZTsKLS1pbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuTGlua2Vk QmxvY2tpbmdRdWV1ZTsKLS0KLS1pbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5BcHBlbmRlclNrZWxl dG9uOwotLWltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxldmVsOwotLWltcG9ydCBvcmcuYXBhY2hl LmxvZzRqLnNwaS5Mb2dnaW5nRXZlbnQ7Ci0taW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5B ZnRlckVhY2g7Ci0taW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5Bc3NlcnRpb25zOwotLWlt cG9ydCBvcmcuanVuaXQuanVwaXRlci5hcGkuQmVmb3JlQWxsOwotLWltcG9ydCBvcmcuanVuaXQu anVwaXRlci5hcGkuQmVmb3JlRWFjaDsKLS1pbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLlRl c3Q7Ci0tCi0tLyoqCi0tICogQGF1dGhvciA8YSBocmVmPSJtYWlsdG86anBlcmtpbnNAcmVkaGF0 LmNvbSI+SmFtZXMgUi4gUGVya2luczwvYT4KLS0gKi8KLS1wdWJsaWMgY2xhc3MgTG9nNGpQcm92 aWRlclRlc3RDYXNlIGV4dGVuZHMgQWJzdHJhY3RMb2dnZXJUZXN0Q2FzZSB7Ci0tICAgIHByaXZh dGUgVGVzdEFwcGVuZGVyIGFwcGVuZGVyOwotLSAgICBwcml2YXRlIExvZ2dlciBsb2dnZXI7Ci0t Ci0tICAgIEBCZWZvcmVBbGwKLS0gICAgcHVibGljIHN0YXRpYyB2b2lkIHNldHVwKCkgewotLSAg ICAgICAgU3lzdGVtLnNldFByb3BlcnR5KCJvcmcuamJvc3MubG9nZ2luZy5wcm92aWRlciIsICJs b2c0aiIpOwotLSAgICB9Ci0tCi0tICAgIEBCZWZvcmVFYWNoCi0tICAgIHB1YmxpYyB2b2lkIHNl dHVwTG9nQ29udGV4dCgpIHsKLS0gICAgICAgIGxvZ2dlciA9IExvZ2dlci5nZXRMb2dnZXIoZ2V0 Q2xhc3MoKSk7Ci0tICAgICAgICBhcHBlbmRlciA9IGNyZWF0ZUFwcGVuZGVyKGxvZ2dlci5nZXRO YW1lKCkpOwotLSAgICB9Ci0tCi0tICAgIEBBZnRlckVhY2gKLS0gICAgcHVibGljIHZvaWQgcmVt b3ZlQXBwZW5kZXIoKSB7Ci0tICAgICAgICBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlci5nZXRMb2dn ZXIobG9nZ2VyLmdldE5hbWUoKSkucmVtb3ZlQXBwZW5kZXIoYXBwZW5kZXIpOwotLSAgICAgICAg YXBwZW5kZXIuY2xvc2UoKTsKLS0gICAgfQotLQotLSAgICBAVGVzdAotLSAgICBwdWJsaWMgdm9p ZCB0ZXN0TWRjKCkgewotLSAgICAgICAgQXNzdW1lVXRpbC5hc3N1bWVOb3RKYXZhRWEoKTsKLS0g ICAgICAgIE1EQy5wdXQoInRlc3Qua2V5IiwgInZhbHVlIik7Ci0tICAgICAgICBBc3NlcnRpb25z LmFzc2VydEVxdWFscygidmFsdWUiLCBNREMuZ2V0KCJ0ZXN0LmtleSIpKTsKLS0gICAgICAgIEFz c2VydGlvbnMuYXNzZXJ0RXF1YWxzKCJ2YWx1ZSIsIG9yZy5hcGFjaGUubG9nNGouTURDLmdldCgi dGVzdC5rZXkiKSk7Ci0tICAgIH0KLS0KLS0gICAgQFRlc3QKLS0gICAgcHVibGljIHZvaWQgdGVz dE5kYygpIHsKLS0gICAgICAgIE5EQy5wdXNoKCJ2YWx1ZTEiKTsKLS0gICAgICAgIE5EQy5wdXNo KCJ2YWx1ZTIiKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKCJ2YWx1ZTIiLCBO REMucGVlaygpKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKCJ2YWx1ZTEgdmFs dWUyIiwgTkRDLmdldCgpKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKDIsIE5E Qy5nZXREZXB0aCgpKTsKLS0KLS0gICAgICAgIC8vIFRlc3QgdGhlIGxvZyBtYW5hZ2VyIHZhbHVl cwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoInZhbHVlMSB2YWx1ZTIiLCBvcmcu YXBhY2hlLmxvZzRqLk5EQy5nZXQoKSk7Ci0tICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFs cygyLCBvcmcuYXBhY2hlLmxvZzRqLk5EQy5nZXREZXB0aCgpKTsKLS0KLS0gICAgICAgIC8vIFBv cCB0aGUgc3RhY2sKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKCJ2YWx1ZTIiLCBO REMucG9wKCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoMSwgTkRDLmdldERl cHRoKCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoInZhbHVlMSIsIE5EQy5n ZXQoKSk7Ci0tICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscygidmFsdWUxIiwgb3JnLmFw YWNoZS5sb2c0ai5OREMuZ2V0KCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMo MSwgb3JnLmFwYWNoZS5sb2c0ai5OREMuZ2V0RGVwdGgoKSk7Ci0tICAgIH0KLS0KLS0gICAgQE92 ZXJyaWRlCi0tICAgIHZvaWQgdGVzdExvZyhmaW5hbCBMb2dnZXIuTGV2ZWwgbGV2ZWwpIHsKLS0g ICAgICAgIGZpbmFsIFN0cmluZyBtc2cgPSBTdHJpbmcuZm9ybWF0KCJUZXN0IGxvZyBtZXNzYWdl IGF0ICVzIiwgbGV2ZWwpOwotLSAgICAgICAgbG9nZ2VyLmxvZyhsZXZlbCwgbXNnKTsKLS0KLS0g ICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0VHJ1ZShsb2dnZXIuaXNFbmFibGVkKGxldmVsKSwgU3Ry aW5nLmZvcm1hdCgiTG9nZ2VyIG5vdCBlbmFibGVkIGZvciBsZXZlbCAlcyIsIGxldmVsKSk7Ci0t ICAgICAgICB0ZXN0TG9nKG1zZywgbGV2ZWwpOwotLSAgICB9Ci0tCi0tICAgIEBPdmVycmlkZQot LSAgICB2b2lkIHRlc3RMb2coZmluYWwgU3RyaW5nIG1zZywgZmluYWwgTG9nZ2VyLkxldmVsIGxl dmVsKSB7Ci0tICAgICAgICBmaW5hbCBMb2dnaW5nRXZlbnQgZXZlbnQgPSBhcHBlbmRlci5xdWV1 ZS5wb2xsKCk7Ci0tICAgICAgICBBc3NlcnRpb25zLmFzc2VydE5vdE51bGwoZXZlbnQsIFN0cmlu Zy5mb3JtYXQoIk5vIHJlY29yZCBmb3VuZCBmb3IgJXMiLCBsZXZlbCkpOwotLSAgICAgICAgQXNz ZXJ0aW9ucy5hc3NlcnRFcXVhbHMobGV2ZWwubmFtZSgpLCBldmVudC5nZXRMZXZlbCgpLnRvU3Ry aW5nKCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMobXNnLCBldmVudC5nZXRN ZXNzYWdlKCkpOwotLSAgICB9Ci0tCi0tICAgIEBPdmVycmlkZQotLSAgICBMb2dnZXIgZ2V0TG9n Z2VyKCkgewotLSAgICAgICAgcmV0dXJuIGxvZ2dlcjsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJp ZGUKLS0gICAgQ2xhc3M8PyBleHRlbmRzIExvZ2dlcj4gZ2V0TG9nZ2VyQ2xhc3MoKSB7Ci0tICAg ICAgICByZXR1cm4gTG9nNGpMb2dnZXIuY2xhc3M7Ci0tICAgIH0KLS0KLS0gICAgcHJpdmF0ZSBz dGF0aWMgVGVzdEFwcGVuZGVyIGNyZWF0ZUFwcGVuZGVyKGZpbmFsIFN0cmluZyBsb2dnZXJOYW1l KSB7Ci0tICAgICAgICBmaW5hbCBUZXN0QXBwZW5kZXIgYXBwZW5kZXIgPSBuZXcgVGVzdEFwcGVu ZGVyKCk7Ci0tICAgICAgICBmaW5hbCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlciBsb2c0akxvZ2dl ciA9IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyLmdldExvZ2dlcihsb2dnZXJOYW1lKTsKLS0gICAg ICAgIGxvZzRqTG9nZ2VyLmFkZEFwcGVuZGVyKGFwcGVuZGVyKTsKLS0gICAgICAgIGxvZzRqTG9n Z2VyLnNldExldmVsKExldmVsLkFMTCk7Ci0tICAgICAgICByZXR1cm4gYXBwZW5kZXI7Ci0tICAg IH0KLS0KLS0gICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGVzdEFwcGVuZGVyIGV4dGVuZHMgQXBw ZW5kZXJTa2VsZXRvbiB7Ci0tICAgICAgICBmaW5hbCBCbG9ja2luZ1F1ZXVlPExvZ2dpbmdFdmVu dD4gcXVldWUgPSBuZXcgTGlua2VkQmxvY2tpbmdRdWV1ZTw+KCk7Ci0tCi0tICAgICAgICBAT3Zl cnJpZGUKLS0gICAgICAgIHByb3RlY3RlZCB2b2lkIGFwcGVuZChmaW5hbCBMb2dnaW5nRXZlbnQg bG9nZ2luZ0V2ZW50KSB7Ci0tICAgICAgICAgICAgcXVldWUuYWRkKGxvZ2dpbmdFdmVudCk7Ci0t ICAgICAgICB9Ci0tCi0tICAgICAgICBAT3ZlcnJpZGUKLS0gICAgICAgIHB1YmxpYyB2b2lkIGNs b3NlKCkgdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uIHsKLS0gICAgICAgICAgICBxdWV1ZS5jbGVh cigpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgQE92ZXJyaWRlCi0tICAgICAgICBwdWJsaWMg Ym9vbGVhbiByZXF1aXJlc0xheW91dCgpIHsKLS0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0t ICAgICAgICB9Ci0tICAgIH0KLS19Ci0tLSAKLTIuNDQuMAotCgpkaWZmIC0tZ2l0IGEvMDAwMi1E cm9wLWpib3NzLWxvZ21hbmFnZXItZGVwZW5kZW5jeS5wYXRjaCBiLzAwMDItRHJvcC1qYm9zcy1s b2dtYW5hZ2VyLWRlcGVuZGVuY3kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDM5ZDQ4NTUuLjAwMDAwMDAKLS0tIGEvMDAwMi1Ecm9wLWpib3NzLWxvZ21hbmFnZXItZGVwZW5k ZW5jeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2NCArMCwwIEBACi1Gcm9tIGM5N2RkNjI5 MjE1ZmY0NTlkZjYyNDBhNTA1NGY2ZjVlMThiMDM2NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBDaHJpcyBLZWxsZXkgPGNrZWxsZXlAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTcg SnVuIDIwMjQgMjA6NTk6MzAgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIERyb3AgamJvc3Mt bG9nbWFuYWdlciBkZXBlbmRlbmN5Ci0KLS0tLQotIHBvbS54bWwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNyAtCi0gLi4uL2pib3NzL2xvZ2dpbmcvSkJvc3NMb2dN YW5hZ2VyTG9nZ2VyLmphdmEgIHwgIDgxIC0tLS0tLS0tLQotIC4uLi9sb2dnaW5nL0pCb3NzTG9n TWFuYWdlclByb3ZpZGVyLmphdmEgICAgICB8IDE2MyAtLS0tLS0tLS0tLS0tLS0tLS0KLSAuLi4v b3JnL2pib3NzL2xvZ2dpbmcvTG9nZ2VyUHJvdmlkZXJzLmphdmEgICAgfCAgMzAgKy0tLQotIC4u Li9KQm9zc0xvZ01hbmFnZXJDbGFzc1BhdGhUZXN0Q2FzZS5qYXZhICAgICB8ICAzMCAtLS0tCi0g Li4uL0pCb3NzTG9nTWFuYWdlclByb3ZpZGVyVGVzdENhc2UuamF2YSAgICAgIHwgMTU4IC0tLS0t LS0tLS0tLS0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNDY4IGRlbGV0 aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvbWFpbi9qYXZhL29yZy9qYm9zcy9sb2dn aW5nL0pCb3NzTG9nTWFuYWdlckxvZ2dlci5qYXZhCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9t YWluL2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvSkJvc3NMb2dNYW5hZ2VyUHJvdmlkZXIuamF2YQot IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0pCb3Nz TG9nTWFuYWdlckNsYXNzUGF0aFRlc3RDYXNlLmphdmEKLSBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvamF2YS9vcmcvamJvc3MvbG9nZ2luZy9KQm9zc0xvZ01hbmFnZXJQcm92aWRlclRlc3RD YXNlLmphdmEKLQotZGlmZiAtLWdpdCBhL3BvbS54bWwgYi9wb20ueG1sCi1pbmRleCA3NmJjYmZi Li40MjlhNzNmIDEwMDY0NAotLS0tIGEvcG9tLnhtbAotKysrIGIvcG9tLnhtbAotQEAgLTU2LDcg KzU2LDYgQEAKLSAgICAgICAgIDwhLS0gRGVwZW5kZW5jeSB2ZXJzaW9ucyAtLT4KLSAgICAgICAg IDx2ZXJzaW9uLmNoLnFvcy5sb2diYWNrPjEuNS42PC92ZXJzaW9uLmNoLnFvcy5sb2diYWNrPgot ICAgICAgICAgPHZlcnNpb24ubW9kdWxlLWluZm8+Mi4xPC92ZXJzaW9uLm1vZHVsZS1pbmZvPgot LSAgICAgICAgPHZlcnNpb24ub3JnLmpib3NzLmxvZ21hbmFnZXI+My4wLjYuRmluYWw8L3ZlcnNp b24ub3JnLmpib3NzLmxvZ21hbmFnZXI+Ci0gICAgICAgICA8dmVyc2lvbi5vcmcuanVuaXQ+NS4x MC4yPC92ZXJzaW9uLm9yZy5qdW5pdD4KLSAgICAgICAgIDx2ZXJzaW9uLm9yZy5zZmw0aj4yLjAu MTI8L3ZlcnNpb24ub3JnLnNmbDRqPgotIAotQEAgLTgwLDEyICs3OSw2IEBACi0gICAgIDwvZGVw ZW5kZW5jeU1hbmFnZW1lbnQ+Ci0gCi0gICAgIDxkZXBlbmRlbmNpZXM+Ci0tICAgICAgICA8ZGVw ZW5kZW5jeT4KLS0gICAgICAgICAgICA8Z3JvdXBJZD5vcmcuamJvc3MubG9nbWFuYWdlcjwvZ3Jv dXBJZD4KLS0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYm9zcy1sb2dtYW5hZ2VyPC9hcnRpZmFj dElkPgotLSAgICAgICAgICAgIDx2ZXJzaW9uPiR7dmVyc2lvbi5vcmcuamJvc3MubG9nbWFuYWdl cn08L3ZlcnNpb24+Ci0tICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4KLS0gICAg ICAgIDwvZGVwZW5kZW5jeT4KLSAgICAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgICAgIDxn cm91cElkPm9yZy5zbGY0ajwvZ3JvdXBJZD4KLSAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zbGY0 ai1hcGk8L2FydGlmYWN0SWQ+Ci1kaWZmIC0tZ2l0IGEvc3JjL21haW4vamF2YS9vcmcvamJvc3Mv bG9nZ2luZy9KQm9zc0xvZ01hbmFnZXJMb2dnZXIuamF2YSBiL3NyYy9tYWluL2phdmEvb3JnL2pi b3NzL2xvZ2dpbmcvSkJvc3NMb2dNYW5hZ2VyTG9nZ2VyLmphdmEKLWRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggYmQ0YzlhMC4uMDAwMDAwMAotLS0tIGEvc3JjL21haW4vamF2YS9vcmcv amJvc3MvbG9nZ2luZy9KQm9zc0xvZ01hbmFnZXJMb2dnZXIuamF2YQotKysrIC9kZXYvbnVsbAot QEAgLTEsODEgKzAsMCBAQAotLS8qCi0tICogSkJvc3MsIEhvbWUgb2YgUHJvZmVzc2lvbmFsIE9w ZW4gU291cmNlLgotLSAqCi0tICogQ29weXJpZ2h0IDIwMjMgUmVkIEhhdCwgSW5jLgotLSAqCi0t ICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM aWNlbnNlIik7Ci0tICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg TGljZW5zZSBhdAotLSAqCi0tICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF TlNFLTIuMAotLSAqCi0tICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0tICogV0lUSE9VVCBX QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt cGxpZWQuCi0tICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292 ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl LgotLSAqLwotLQotLXBhY2thZ2Ugb3JnLmpib3NzLmxvZ2dpbmc7Ci0tCi0taW1wb3J0IG9yZy5q Ym9zcy5sb2dtYW5hZ2VyLkV4dExvZ1JlY29yZDsKLS0KLS1maW5hbCBjbGFzcyBKQm9zc0xvZ01h bmFnZXJMb2dnZXIgZXh0ZW5kcyBMb2dnZXIgewotLQotLSAgICBwcml2YXRlIHN0YXRpYyBmaW5h bCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA3NDI5NjE4MzE3NzI3NTg0NzQyTDsKLS0KLS0gICAg cHJpdmF0ZSBmaW5hbCBvcmcuamJvc3MubG9nbWFuYWdlci5Mb2dnZXIgbG9nZ2VyOwotLQotLSAg ICBKQm9zc0xvZ01hbmFnZXJMb2dnZXIoZmluYWwgU3RyaW5nIG5hbWUsIGZpbmFsIG9yZy5qYm9z cy5sb2dtYW5hZ2VyLkxvZ2dlciBsb2dnZXIpIHsKLS0gICAgICAgIHN1cGVyKG5hbWUpOwotLSAg ICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7Ci0tICAgIH0KLS0KLS0gICAgcHVibGljIGJvb2xl YW4gaXNFbmFibGVkKGZpbmFsIExldmVsIGxldmVsKSB7Ci0tICAgICAgICByZXR1cm4gbG9nZ2Vy LmlzTG9nZ2FibGUodHJhbnNsYXRlKGxldmVsKSk7Ci0tICAgIH0KLS0KLS0gICAgcHJvdGVjdGVk IHZvaWQgZG9Mb2coZmluYWwgTGV2ZWwgbGV2ZWwsIGZpbmFsIFN0cmluZyBsb2dnZXJDbGFzc05h bWUsIGZpbmFsIE9iamVjdCBtZXNzYWdlLCBmaW5hbCBPYmplY3RbXSBwYXJhbWV0ZXJzLAotLSAg ICAgICAgICAgIGZpbmFsIFRocm93YWJsZSB0aHJvd24pIHsKLS0gICAgICAgIGphdmEudXRpbC5s b2dnaW5nLkxldmVsIHRyYW5zbGF0ZWRMZXZlbCA9IHRyYW5zbGF0ZShsZXZlbCk7Ci0tICAgICAg ICBpZiAobG9nZ2VyLmlzTG9nZ2FibGUodHJhbnNsYXRlZExldmVsKSkgewotLSAgICAgICAgICAg IGlmIChwYXJhbWV0ZXJzID09IG51bGwpIHsKLS0gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhs b2dnZXJDbGFzc05hbWUsIHRyYW5zbGF0ZWRMZXZlbCwgU3RyaW5nLnZhbHVlT2YobWVzc2FnZSks IHRocm93bik7Ci0tICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgbG9nZ2Vy LmxvZyhsb2dnZXJDbGFzc05hbWUsIHRyYW5zbGF0ZWRMZXZlbCwgU3RyaW5nLnZhbHVlT2YobWVz c2FnZSksIEV4dExvZ1JlY29yZC5Gb3JtYXRTdHlsZS5NRVNTQUdFX0ZPUk1BVCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLCB0aHJvd24pOwotLSAgICAgICAgICAgIH0KLS0g ICAgICAgIH0KLS0gICAgfQotLQotLSAgICBwcm90ZWN0ZWQgdm9pZCBkb0xvZ2YoZmluYWwgTGV2 ZWwgbGV2ZWwsIGZpbmFsIFN0cmluZyBsb2dnZXJDbGFzc05hbWUsIGZpbmFsIFN0cmluZyBmb3Jt YXQsIGZpbmFsIE9iamVjdFtdIHBhcmFtZXRlcnMsCi0tICAgICAgICAgICAgZmluYWwgVGhyb3dh YmxlIHRocm93bikgewotLSAgICAgICAgaWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkgewotLSAgICAg ICAgICAgIGxvZ2dlci5sb2cobG9nZ2VyQ2xhc3NOYW1lLCB0cmFuc2xhdGUobGV2ZWwpLCBmb3Jt YXQsIHRocm93bik7Ci0tICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIGxvZ2dlci5sb2co bG9nZ2VyQ2xhc3NOYW1lLCB0cmFuc2xhdGUobGV2ZWwpLCBmb3JtYXQsIEV4dExvZ1JlY29yZC5G b3JtYXRTdHlsZS5QUklOVEYsIHBhcmFtZXRlcnMsIHRocm93bik7Ci0tICAgICAgICB9Ci0tICAg IH0KLS0KLS0gICAgcHJpdmF0ZSBzdGF0aWMgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwgdHJhbnNs YXRlKGZpbmFsIExldmVsIGxldmVsKSB7Ci0tICAgICAgICBpZiAobGV2ZWwgPT0gTGV2ZWwuVFJB Q0UpIHsKLS0gICAgICAgICAgICByZXR1cm4gb3JnLmpib3NzLmxvZ21hbmFnZXIuTGV2ZWwuVFJB Q0U7Ci0tICAgICAgICB9IGVsc2UgaWYgKGxldmVsID09IExldmVsLkRFQlVHKSB7Ci0tICAgICAg ICAgICAgcmV0dXJuIG9yZy5qYm9zcy5sb2dtYW5hZ2VyLkxldmVsLkRFQlVHOwotLSAgICAgICAg fQotLSAgICAgICAgcmV0dXJuIGluZm9PckhpZ2hlcihsZXZlbCk7Ci0tICAgIH0KLS0KLS0gICAg cHJpdmF0ZSBzdGF0aWMgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwgaW5mb09ySGlnaGVyKGZpbmFs IExldmVsIGxldmVsKSB7Ci0tICAgICAgICBpZiAobGV2ZWwgPT0gTGV2ZWwuSU5GTykgewotLSAg ICAgICAgICAgIHJldHVybiBvcmcuamJvc3MubG9nbWFuYWdlci5MZXZlbC5JTkZPOwotLSAgICAg ICAgfSBlbHNlIGlmIChsZXZlbCA9PSBMZXZlbC5XQVJOKSB7Ci0tICAgICAgICAgICAgcmV0dXJu IG9yZy5qYm9zcy5sb2dtYW5hZ2VyLkxldmVsLldBUk47Ci0tICAgICAgICB9IGVsc2UgaWYgKGxl dmVsID09IExldmVsLkVSUk9SKSB7Ci0tICAgICAgICAgICAgcmV0dXJuIG9yZy5qYm9zcy5sb2dt YW5hZ2VyLkxldmVsLkVSUk9SOwotLSAgICAgICAgfSBlbHNlIGlmIChsZXZlbCA9PSBMZXZlbC5G QVRBTCkgewotLSAgICAgICAgICAgIHJldHVybiBvcmcuamJvc3MubG9nbWFuYWdlci5MZXZlbC5G QVRBTDsKLS0gICAgICAgIH0KLS0gICAgICAgIHJldHVybiBvcmcuamJvc3MubG9nbWFuYWdlci5M ZXZlbC5BTEw7Ci0tICAgIH0KLS19Ci1kaWZmIC0tZ2l0IGEvc3JjL21haW4vamF2YS9vcmcvamJv c3MvbG9nZ2luZy9KQm9zc0xvZ01hbmFnZXJQcm92aWRlci5qYXZhIGIvc3JjL21haW4vamF2YS9v cmcvamJvc3MvbG9nZ2luZy9KQm9zc0xvZ01hbmFnZXJQcm92aWRlci5qYXZhCi1kZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IGJkZWFjNjcuLjAwMDAwMDAKLS0tLSBhL3NyYy9tYWluL2ph dmEvb3JnL2pib3NzL2xvZ2dpbmcvSkJvc3NMb2dNYW5hZ2VyUHJvdmlkZXIuamF2YQotKysrIC9k ZXYvbnVsbAotQEAgLTEsMTYzICswLDAgQEAKLS0vKgotLSAqIEpCb3NzLCBIb21lIG9mIFByb2Zl c3Npb25hbCBPcGVuIFNvdXJjZS4KLS0gKgotLSAqIENvcHlyaWdodCAyMDIzIFJlZCBIYXQsIElu Yy4KLS0gKgotLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy LjAgKHRoZSAiTGljZW5zZSIpOwotLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0 IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLS0gKiBZb3UgbWF5IG9idGFpbiBhIGNv cHkgb2YgdGhlIExpY2Vuc2UgYXQKLS0gKgotLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj ZW5zZXMvTElDRU5TRS0yLjAKLS0gKgotLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLS0gKiBkaXN0cmlidXRlZCB1 bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotLSAq IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw cmVzcyBvciBpbXBsaWVkLgotLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLS0gKiBsaW1pdGF0aW9ucyB1bmRlciB0 aGUgTGljZW5zZS4KLS0gKi8KLS0KLS1wYWNrYWdlIG9yZy5qYm9zcy5sb2dnaW5nOwotLQotLWlt cG9ydCBzdGF0aWMgb3JnLmpib3NzLmxvZ21hbmFnZXIuTG9nZ2VyLkF0dGFjaG1lbnRLZXk7Ci0t Ci0taW1wb3J0IGphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbGxlcjsKLS1pbXBvcnQgamF2YS5z ZWN1cml0eS5Qcml2aWxlZ2VkQWN0aW9uOwotLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotLWltcG9y dCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcDsKLS1pbXBvcnQgamF2YS51 dGlsLmNvbmN1cnJlbnQuQ29uY3VycmVudE1hcDsKLS0KLS1pbXBvcnQgb3JnLmpib3NzLmxvZ21h bmFnZXIuTG9nQ29udGV4dDsKLS1pbXBvcnQgb3JnLmpib3NzLmxvZ21hbmFnZXIuTURDOwotLWlt cG9ydCBvcmcuamJvc3MubG9nbWFuYWdlci5OREM7Ci0tCi0tLyoqCi0tICogQW4gaW1wbGVtZW50 YXRpb24gb2YgdGhlIHtAbGlua3BsYWluIExvZ2dlclByb3ZpZGVyIGxvZyBwcm92aWRlcn0gZm9y IHRoZSBKQm9zcyBMb2cgTWFuYWdlci4KLS0gKi8KLS1wdWJsaWMgZmluYWwgY2xhc3MgSkJvc3NM b2dNYW5hZ2VyUHJvdmlkZXIgaW1wbGVtZW50cyBMb2dnZXJQcm92aWRlciB7Ci0tCi0tICAgIHBy aXZhdGUgc3RhdGljIGZpbmFsIEF0dGFjaG1lbnRLZXk8TG9nZ2VyPiBLRVkgPSBuZXcgQXR0YWNo bWVudEtleTw+KCk7Ci0tICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEF0dGFjaG1lbnRLZXk8Q29u Y3VycmVudE1hcDxTdHJpbmcsIExvZ2dlcj4+IExFR0FDWV9LRVkgPSBuZXcgQXR0YWNobWVudEtl eTw+KCk7Ci0tCi0tICAgIEBPdmVycmlkZQotLSAgICBwdWJsaWMgTG9nZ2VyIGdldExvZ2dlcihm aW5hbCBTdHJpbmcgbmFtZSkgewotLSAgICAgICAgZmluYWwgU2VjdXJpdHlNYW5hZ2VyIHNtID0g U3lzdGVtLmdldFNlY3VyaXR5TWFuYWdlcigpOwotLSAgICAgICAgaWYgKHNtICE9IG51bGwpIHsK LS0gICAgICAgICAgICByZXR1cm4gQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQoKFByaXZp bGVnZWRBY3Rpb248TG9nZ2VyPikgKCkgLT4gewotLSAgICAgICAgICAgICAgICB0cnkgewotLSAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvR2V0TG9nZ2VyKG5hbWUpOwotLSAgICAgICAgICAg ICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFcnJvciBpZ25vcmUpIHsKLS0gICAgICAgICAgICAg ICAgfQotLSAgICAgICAgICAgICAgICAvLyBmYWxsYmFjawotLSAgICAgICAgICAgICAgICByZXR1 cm4gZG9MZWdhY3lHZXRMb2dnZXIobmFtZSk7Ci0tICAgICAgICAgICAgfSk7Ci0tICAgICAgICB9 IGVsc2UgewotLSAgICAgICAgICAgIHRyeSB7Ci0tICAgICAgICAgICAgICAgIHJldHVybiBkb0dl dExvZ2dlcihuYW1lKTsKLS0gICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFcnJvciBp Z25vcmUpIHsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgLy8gZmFsbGJhY2sKLS0gICAg ICAgICAgICByZXR1cm4gZG9MZWdhY3lHZXRMb2dnZXIobmFtZSk7Ci0tICAgICAgICB9Ci0tICAg IH0KLS0KLS0gICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGRvTGVnYWN5R2V0TG9nZ2VyKGZpbmFs IFN0cmluZyBuYW1lKSB7Ci0tICAgICAgICBmaW5hbCBvcmcuamJvc3MubG9nbWFuYWdlci5Mb2dn ZXIgbG1Mb2dnZXIgPSBMb2dDb250ZXh0LmdldExvZ0NvbnRleHQoKS5nZXRMb2dnZXIoIiIpOwot LSAgICAgICAgQ29uY3VycmVudE1hcDxTdHJpbmcsIExvZ2dlcj4gbG9nZ2VycyA9IGxtTG9nZ2Vy LmdldEF0dGFjaG1lbnQoTEVHQUNZX0tFWSk7Ci0tICAgICAgICBpZiAobG9nZ2VycyA9PSBudWxs KSB7Ci0tICAgICAgICAgICAgbG9nZ2VycyA9IG5ldyBDb25jdXJyZW50SGFzaE1hcDw+KCk7Ci0t ICAgICAgICAgICAgZmluYWwgQ29uY3VycmVudE1hcDxTdHJpbmcsIExvZ2dlcj4gYXBwZWFyaW5n ID0gbG1Mb2dnZXIuYXR0YWNoSWZBYnNlbnQoTEVHQUNZX0tFWSwgbG9nZ2Vycyk7Ci0tICAgICAg ICAgICAgaWYgKGFwcGVhcmluZyAhPSBudWxsKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ2dlcnMg PSBhcHBlYXJpbmc7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgfQotLQotLSAgICAgICAgTG9n Z2VyIGwgPSBsb2dnZXJzLmdldChuYW1lKTsKLS0gICAgICAgIGlmIChsICE9IG51bGwpIHsKLS0g ICAgICAgICAgICByZXR1cm4gbDsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGZpbmFsIG9yZy5q Ym9zcy5sb2dtYW5hZ2VyLkxvZ2dlciBsb2dnZXIgPSBvcmcuamJvc3MubG9nbWFuYWdlci5Mb2dn ZXIuZ2V0TG9nZ2VyKG5hbWUpOwotLSAgICAgICAgbCA9IG5ldyBKQm9zc0xvZ01hbmFnZXJMb2dn ZXIobmFtZSwgbG9nZ2VyKTsKLS0gICAgICAgIGZpbmFsIExvZ2dlciBhcHBlYXJpbmcgPSBsb2dn ZXJzLnB1dElmQWJzZW50KG5hbWUsIGwpOwotLSAgICAgICAgaWYgKGFwcGVhcmluZyA9PSBudWxs KSB7Ci0tICAgICAgICAgICAgcmV0dXJuIGw7Ci0tICAgICAgICB9Ci0tICAgICAgICByZXR1cm4g YXBwZWFyaW5nOwotLSAgICB9Ci0tCi0tICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBkb0dldExv Z2dlcihmaW5hbCBTdHJpbmcgbmFtZSkgewotLSAgICAgICAgTG9nZ2VyIGwgPSBMb2dDb250ZXh0 LmdldExvZ0NvbnRleHQoKS5nZXRBdHRhY2htZW50KG5hbWUsIEtFWSk7Ci0tICAgICAgICBpZiAo bCAhPSBudWxsKSB7Ci0tICAgICAgICAgICAgcmV0dXJuIGw7Ci0tICAgICAgICB9Ci0tICAgICAg ICBmaW5hbCBvcmcuamJvc3MubG9nbWFuYWdlci5Mb2dnZXIgbG9nZ2VyID0gb3JnLmpib3NzLmxv Z21hbmFnZXIuTG9nZ2VyLmdldExvZ2dlcihuYW1lKTsKLS0gICAgICAgIGwgPSBuZXcgSkJvc3NM b2dNYW5hZ2VyTG9nZ2VyKG5hbWUsIGxvZ2dlcik7Ci0tICAgICAgICBMb2dnZXIgYSA9IGxvZ2dl ci5hdHRhY2hJZkFic2VudChLRVksIGwpOwotLSAgICAgICAgaWYgKGEgPT0gbnVsbCkgewotLSAg ICAgICAgICAgIHJldHVybiBsOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICByZXR1 cm4gYTsKLS0gICAgICAgIH0KLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGlj IHZvaWQgY2xlYXJNZGMoKSB7Ci0tICAgICAgICBNREMuY2xlYXIoKTsKLS0gICAgfQotLQotLSAg ICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIE9iamVjdCBwdXRNZGMoZmluYWwgU3RyaW5nIGtleSwg ZmluYWwgT2JqZWN0IHZhbHVlKSB7Ci0tICAgICAgICByZXR1cm4gTURDLnB1dE9iamVjdChrZXks IHZhbHVlKTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIE9iamVjdCBn ZXRNZGMoZmluYWwgU3RyaW5nIGtleSkgewotLSAgICAgICAgcmV0dXJuIE1EQy5nZXRPYmplY3Qo a2V5KTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIHZvaWQgcmVtb3Zl TWRjKGZpbmFsIFN0cmluZyBrZXkpIHsKLS0gICAgICAgIE1EQy5yZW1vdmVPYmplY3Qoa2V5KTsK LS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIE1hcDxTdHJpbmcsIE9iamVj dD4gZ2V0TWRjTWFwKCkgewotLSAgICAgICAgLy8gd2UgY2FuIHJlLWRlZmluZSB0aGUgZXJhc3Vy ZSBvZiB0aGlzIG1hcCBiZWNhdXNlIE1EQyBkb2VzIG5vdCBtYWtlIGZ1cnRoZXIgdXNlIG9mIHRo ZSBjb3B5Ci0tICAgICAgICByZXR1cm4gTURDLmNvcHlPYmplY3QoKTsKLS0gICAgfQotLQotLSAg ICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIHZvaWQgY2xlYXJOZGMoKSB7Ci0tICAgICAgICBOREMu Y2xlYXIoKTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgcHVibGljIFN0cmluZyBn ZXROZGMoKSB7Ci0tICAgICAgICByZXR1cm4gTkRDLmdldCgpOwotLSAgICB9Ci0tCi0tICAgIEBP dmVycmlkZQotLSAgICBwdWJsaWMgaW50IGdldE5kY0RlcHRoKCkgewotLSAgICAgICAgcmV0dXJu IE5EQy5nZXREZXB0aCgpOwotLSAgICB9Ci0tCi0tICAgIEBPdmVycmlkZQotLSAgICBwdWJsaWMg U3RyaW5nIHBvcE5kYygpIHsKLS0gICAgICAgIHJldHVybiBOREMucG9wKCk7Ci0tICAgIH0KLS0K LS0gICAgQE92ZXJyaWRlCi0tICAgIHB1YmxpYyBTdHJpbmcgcGVla05kYygpIHsKLS0gICAgICAg IHJldHVybiBOREMuZ2V0KCk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIHB1Ymxp YyB2b2lkIHB1c2hOZGMoZmluYWwgU3RyaW5nIG1lc3NhZ2UpIHsKLS0gICAgICAgIE5EQy5wdXNo KG1lc3NhZ2UpOwotLSAgICB9Ci0tCi0tICAgIEBPdmVycmlkZQotLSAgICBwdWJsaWMgdm9pZCBz ZXROZGNNYXhEZXB0aChmaW5hbCBpbnQgbWF4RGVwdGgpIHsKLS0gICAgICAgIE5EQy50cmltVG8o bWF4RGVwdGgpOwotLSAgICB9Ci0tfQotZGlmZiAtLWdpdCBhL3NyYy9tYWluL2phdmEvb3JnL2pi b3NzL2xvZ2dpbmcvTG9nZ2VyUHJvdmlkZXJzLmphdmEgYi9zcmMvbWFpbi9qYXZhL29yZy9qYm9z cy9sb2dnaW5nL0xvZ2dlclByb3ZpZGVycy5qYXZhCi1pbmRleCA1ODRmYTc5Li4wMTU0YWVhIDEw MDY0NAotLS0tIGEvc3JjL21haW4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2dnZXJQcm92aWRl cnMuamF2YQotKysrIGIvc3JjL21haW4vamF2YS9vcmcvamJvc3MvbG9nZ2luZy9Mb2dnZXJQcm92 aWRlcnMuamF2YQotQEAgLTIxLDcgKzIxLDYgQEAgcGFja2FnZSBvcmcuamJvc3MubG9nZ2luZzsK LSBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotIGltcG9ydCBqYXZhLnV0aWwuU2VydmljZUNv bmZpZ3VyYXRpb25FcnJvcjsKLSBpbXBvcnQgamF2YS51dGlsLlNlcnZpY2VMb2FkZXI7Ci0taW1w b3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ01hbmFnZXI7Ci0gCi0gZmluYWwgY2xhc3MgTG9nZ2Vy UHJvdmlkZXJzIHsKLSAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBMT0dHSU5HX1BST1ZJREVSX0tF WSA9ICJvcmcuamJvc3MubG9nZ2luZy5wcm92aWRlciI7Ci1AQCAtNDEsOSArNDAsNyBAQCBmaW5h bCBjbGFzcyBMb2dnZXJQcm92aWRlcnMgewotICAgICAgICAgICAgIC8vIENoZWNrIHRoZSBzeXN0 ZW0gcHJvcGVydHkKLSAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbG9nZ2VyUHJvdmlkZXIgPSBT ZWN1cml0eUFjdGlvbnMuZ2V0U3lzdGVtUHJvcGVydHkoTE9HR0lOR19QUk9WSURFUl9LRVkpOwot ICAgICAgICAgICAgIGlmIChsb2dnZXJQcm92aWRlciAhPSBudWxsKSB7Ci0tICAgICAgICAgICAg ICAgIGlmICgiamJvc3MiLmVxdWFsc0lnbm9yZUNhc2UobG9nZ2VyUHJvdmlkZXIpKSB7Ci0tICAg ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5SkJvc3NMb2dNYW5hZ2VyKGNsLCAic3lzdGVtIHBy b3BlcnR5Iik7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoImpkayIuZXF1YWxzSWdub3Jl Q2FzZShsb2dnZXJQcm92aWRlcikpIHsKLSsgICAgICAgICAgICAgICAgaWYgKCJqZGsiLmVxdWFs c0lnbm9yZUNhc2UobG9nZ2VyUHJvdmlkZXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICByZXR1 cm4gdHJ5SkRLKCJzeXN0ZW0gcHJvcGVydHkiKTsKLSAgICAgICAgICAgICAgICAgfSBlbHNlIGlm ICgic2xmNGoiLmVxdWFsc0lnbm9yZUNhc2UobG9nZ2VyUHJvdmlkZXIpKSB7Ci0gICAgICAgICAg ICAgICAgICAgICByZXR1cm4gdHJ5U2xmNGooInN5c3RlbSBwcm9wZXJ0eSIpOwotQEAgLTcyLDEx ICs2OSw2IEBAIGZpbmFsIGNsYXNzIExvZ2dlclByb3ZpZGVycyB7Ci0gICAgICAgICB9Ci0gCi0g ICAgICAgICAvLyBGaW5hbGx5IHNlYXJjaCB0aGUgY2xhc3MgcGF0aAotLSAgICAgICAgdHJ5IHsK LS0gICAgICAgICAgICByZXR1cm4gdHJ5SkJvc3NMb2dNYW5hZ2VyKGNsLCBudWxsKTsKLS0gICAg ICAgIH0gY2F0Y2ggKFRocm93YWJsZSB0KSB7Ci0tICAgICAgICAgICAgLy8gbm9wZS4uLgotLSAg ICAgICAgfQotICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAvLyBvbmx5IHVzZSBzbGY0aiBp ZiBMb2diYWNrIGlzIGluIHVzZQotICAgICAgICAgICAgIENsYXNzLmZvck5hbWUoImNoLnFvcy5s b2diYWNrLmNsYXNzaWMuTG9nZ2VyIiwgZmFsc2UsIGNsKTsKLUBAIC05OSwyNiArOTEsNiBAQCBm aW5hbCBjbGFzcyBMb2dnZXJQcm92aWRlcnMgewotICAgICAgICAgcmV0dXJuIHByb3ZpZGVyOwot ICAgICB9Ci0gCi0tICAgIHByaXZhdGUgc3RhdGljIExvZ2dlclByb3ZpZGVyIHRyeUpCb3NzTG9n TWFuYWdlcihmaW5hbCBDbGFzc0xvYWRlciBjbCwgZmluYWwgU3RyaW5nIHZpYSkgdGhyb3dzIENs YXNzTm90Rm91bmRFeGNlcHRpb24gewotLSAgICAgICAgZmluYWwgQ2xhc3M8PyBleHRlbmRzIExv Z01hbmFnZXI+IGxvZ01hbmFnZXJDbGFzcyA9IExvZ01hbmFnZXIuZ2V0TG9nTWFuYWdlcigpLmdl dENsYXNzKCk7Ci0tICAgICAgICBmaW5hbCBDbGFzczw/PiBqYmxMb2dNYW5hZ2VyID0gQ2xhc3Mu Zm9yTmFtZSgib3JnLmpib3NzLmxvZ21hbmFnZXIuTG9nTWFuYWdlciIsIGZhbHNlLAotLSAgICAg ICAgICAgICAgICBMb2dnZXIuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKSk7Ci0tICAgICAgICBpZiAo bG9nTWFuYWdlckNsYXNzID09IGpibExvZ01hbmFnZXIKLS0gICAgICAgICAgICAgICAgJiYgQ2xh c3MuZm9yTmFtZSgib3JnLmpib3NzLmxvZ21hbmFnZXIuTG9nZ2VyJEF0dGFjaG1lbnRLZXkiLCB0 cnVlLCBjbCkuZ2V0Q2xhc3NMb2FkZXIoKSA9PSBsb2dNYW5hZ2VyQ2xhc3MKLS0gICAgICAgICAg ICAgICAgICAgICAgICAuZ2V0Q2xhc3NMb2FkZXIoKSkgewotLSAgICAgICAgICAgIC8vIFdlIGRv IG5vdCBoYXZlIGFuIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24gb3JnLmpib3NzLmxvZ21hbmFnZXIg YXMgd2UgY291bGQgZW5kIHVwIHdpdGggY3ljbGljIGRlcGVuZGVuY2llcy4KLS0gICAgICAgICAg ICAvLyBUaGVyZWZvcmUsIHdlIGNoZWNrIHRoZSBtb2R1bGVzIGFyZSBuYW1lZCwgYW5kIGlmIHRo ZXkgYXJlIHdlIGFkZCBhbiBleHBsaWNpdCByZWFkcy4KLS0gICAgICAgICAgICBmaW5hbCBNb2R1 bGUgbW9kdWxlID0gTG9nZ2VyUHJvdmlkZXJzLmNsYXNzLmdldE1vZHVsZSgpOwotLSAgICAgICAg ICAgIGlmIChtb2R1bGUuaXNOYW1lZCgpKSB7Ci0tICAgICAgICAgICAgICAgIG1vZHVsZS5hZGRS ZWFkcyhqYmxMb2dNYW5hZ2VyLmdldE1vZHVsZSgpKTsKLS0gICAgICAgICAgICB9Ci0tICAgICAg ICAgICAgZmluYWwgTG9nZ2VyUHJvdmlkZXIgcHJvdmlkZXIgPSBuZXcgSkJvc3NMb2dNYW5hZ2Vy UHJvdmlkZXIoKTsKLS0gICAgICAgICAgICBsb2dQcm92aWRlcihwcm92aWRlciwgdmlhKTsKLS0g ICAgICAgICAgICByZXR1cm4gcHJvdmlkZXI7Ci0tICAgICAgICB9Ci0tICAgICAgICB0aHJvdyBu ZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCk7Ci0tICAgIH0KLS0KLSAgICAgcHJpdmF0ZSBzdGF0 aWMgdm9pZCBsb2dQcm92aWRlcihmaW5hbCBMb2dnZXJQcm92aWRlciBwcm92aWRlciwgZmluYWwg U3RyaW5nIHZpYSkgewotICAgICAgICAgLy8gTG9nIGEgZGVidWcgbWVzc2FnZSBpbmRpY2F0aW5n IHdoaWNoIGxvZ2dlciB3ZSBhcmUgdXNpbmcKLSAgICAgICAgIGZpbmFsIExvZ2dlciBsb2dnZXIg PSBwcm92aWRlci5nZXRMb2dnZXIoIm9yZy5qYm9zcy5sb2dnaW5nIik7Ci1kaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvamF2YS9vcmcvamJvc3MvbG9nZ2luZy9KQm9zc0xvZ01hbmFnZXJDbGFzc1BhdGhU ZXN0Q2FzZS5qYXZhIGIvc3JjL3Rlc3QvamF2YS9vcmcvamJvc3MvbG9nZ2luZy9KQm9zc0xvZ01h bmFnZXJDbGFzc1BhdGhUZXN0Q2FzZS5qYXZhCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IGY1NzQxODcuLjAwMDAwMDAKLS0tLSBhL3NyYy90ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dp bmcvSkJvc3NMb2dNYW5hZ2VyQ2xhc3NQYXRoVGVzdENhc2UuamF2YQotKysrIC9kZXYvbnVsbAot QEAgLTEsMzAgKzAsMCBAQAotLS8qCi0tICogSkJvc3MsIEhvbWUgb2YgUHJvZmVzc2lvbmFsIE9w ZW4gU291cmNlLgotLSAqCi0tICogQ29weXJpZ2h0IDIwMjMgUmVkIEhhdCwgSW5jLgotLSAqCi0t ICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM aWNlbnNlIik7Ci0tICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg TGljZW5zZSBhdAotLSAqCi0tICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF TlNFLTIuMAotLSAqCi0tICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0tICogV0lUSE9VVCBX QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt cGxpZWQuCi0tICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292 ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl LgotLSAqLwotLQotLXBhY2thZ2Ugb3JnLmpib3NzLmxvZ2dpbmc7Ci0tCi0tLyoqCi0tICogQGF1 dGhvciA8YSBocmVmPSJtYWlsdG86anBlcmtpbnNAcmVkaGF0LmNvbSI+SmFtZXMgUi4gUGVya2lu czwvYT4KLS0gKi8KLS1wdWJsaWMgY2xhc3MgSkJvc3NMb2dNYW5hZ2VyQ2xhc3NQYXRoVGVzdENh c2UgZXh0ZW5kcyBBYnN0cmFjdENsYXNzUGF0aFRlc3RDYXNlIHsKLS0KLS0gICAgQE92ZXJyaWRl Ci0tICAgIENsYXNzPD8gZXh0ZW5kcyBMb2dnZXI+IGdldExvZ2dlckNsYXNzKCkgewotLSAgICAg ICAgcmV0dXJuIEpCb3NzTG9nTWFuYWdlckxvZ2dlci5jbGFzczsKLS0gICAgfQotLX0KLWRpZmYg LS1naXQgYS9zcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL0pCb3NzTG9nTWFuYWdlclBy b3ZpZGVyVGVzdENhc2UuamF2YSBiL3NyYy90ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvSkJv c3NMb2dNYW5hZ2VyUHJvdmlkZXJUZXN0Q2FzZS5qYXZhCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IGQ5NmRkYzMuLjAwMDAwMDAKLS0tLSBhL3NyYy90ZXN0L2phdmEvb3JnL2pib3Nz L2xvZ2dpbmcvSkJvc3NMb2dNYW5hZ2VyUHJvdmlkZXJUZXN0Q2FzZS5qYXZhCi0rKysgL2Rldi9u dWxsCi1AQCAtMSwxNTggKzAsMCBAQAotLS8qCi0tICogSkJvc3MsIEhvbWUgb2YgUHJvZmVzc2lv bmFsIE9wZW4gU291cmNlLgotLSAqCi0tICogQ29weXJpZ2h0IDIwMjMgUmVkIEhhdCwgSW5jLgot LSAqCi0tICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo dGhlICJMaWNlbnNlIik7Ci0tICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBv ZiB0aGUgTGljZW5zZSBhdAotLSAqCi0tICogIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl cy9MSUNFTlNFLTIuMAotLSAqCi0tICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3 IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotLSAqIGRpc3RyaWJ1dGVkIHVuZGVy IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0tICogV0lU SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz IG9yIGltcGxpZWQuCi0tICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM aWNlbnNlLgotLSAqLwotLQotLXBhY2thZ2Ugb3JnLmpib3NzLmxvZ2dpbmc7Ci0tCi0taW1wb3J0 IGphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWU7Ci0taW1wb3J0IGphdmEudXRpbC5j b25jdXJyZW50LkxpbmtlZEJsb2NraW5nUXVldWU7Ci0taW1wb3J0IGphdmEudXRpbC5jb25jdXJy ZW50LmF0b21pYy5BdG9taWNCb29sZWFuOwotLWltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5IYW5k bGVyOwotLWltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsKLS1pbXBvcnQgamF2YS51dGls LmxvZ2dpbmcuTG9nUmVjb3JkOwotLQotLWltcG9ydCBvcmcuamJvc3MubG9nbWFuYWdlci5Mb2dD b250ZXh0OwotLWltcG9ydCBvcmcuamJvc3MubG9nbWFuYWdlci5Mb2dDb250ZXh0U2VsZWN0b3I7 Ci0taW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5BZnRlckFsbDsKLS1pbXBvcnQgb3JnLmp1 bml0Lmp1cGl0ZXIuYXBpLkFmdGVyRWFjaDsKLS1pbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBp LkFzc2VydGlvbnM7Ci0taW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5CZWZvcmVBbGw7Ci0t aW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5CZWZvcmVFYWNoOwotLWltcG9ydCBvcmcuanVu aXQuanVwaXRlci5hcGkuVGVzdDsKLS0KLS0vKioKLS0gKiBAYXV0aG9yIDxhIGhyZWY9Im1haWx0 bzpqcGVya2luc0ByZWRoYXQuY29tIj5KYW1lcyBSLiBQZXJraW5zPC9hPgotLSAqLwotLXB1Ymxp YyBjbGFzcyBKQm9zc0xvZ01hbmFnZXJQcm92aWRlclRlc3RDYXNlIGV4dGVuZHMgQWJzdHJhY3RM b2dnZXJUZXN0Q2FzZSB7Ci0tICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ0NvbnRleHRTZWxl Y3RvciBERUZBVUxUX1NFTEVDVE9SID0gTG9nQ29udGV4dC5nZXRMb2dDb250ZXh0U2VsZWN0b3Io KTsKLS0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQXRvbWljQm9vbGVhbiBTRVRfTE9HX01BTkFH RVIgPSBuZXcgQXRvbWljQm9vbGVhbih0cnVlKTsKLS0KLS0gICAgcHJpdmF0ZSBMb2dDb250ZXh0 IGxvZ0NvbnRleHQ7Ci0tICAgIHByaXZhdGUgVGVzdEhhbmRsZXIgaGFuZGxlcjsKLS0gICAgcHJp dmF0ZSBMb2dnZXIgbG9nZ2VyOwotLQotLSAgICBAQmVmb3JlQWxsCi0tICAgIHB1YmxpYyBzdGF0 aWMgdm9pZCBzZXR1cCgpIHsKLS0gICAgICAgIFNFVF9MT0dfTUFOQUdFUi5zZXQoU3lzdGVtLmdl dFByb3BlcnR5KCJqYXZhLnV0aWwubG9nZ2luZy5tYW5hZ2VyIikgPT0gbnVsbCk7Ci0tICAgICAg ICBpZiAoU0VUX0xPR19NQU5BR0VSLmdldCgpKSB7Ci0tICAgICAgICAgICAgU3lzdGVtLnNldFBy b3BlcnR5KCJqYXZhLnV0aWwubG9nZ2luZy5tYW5hZ2VyIiwgIm9yZy5qYm9zcy5sb2dtYW5hZ2Vy LkxvZ01hbmFnZXIiKTsKLS0gICAgICAgIH0KLS0gICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgi b3JnLmpib3NzLmxvZ2dpbmcucHJvdmlkZXIiLCAiamJvc3MiKTsKLS0gICAgfQotLQotLSAgICBA QWZ0ZXJBbGwKLS0gICAgcHVibGljIHN0YXRpYyB2b2lkIHRlYXJEb3duKCkgewotLSAgICAgICAg aWYgKFNFVF9MT0dfTUFOQUdFUi5nZXQoKSkgewotLSAgICAgICAgICAgIFN5c3RlbS5jbGVhclBy b3BlcnR5KCJqYXZhLnV0aWwubG9nZ2luZy5tYW5hZ2VyIik7Ci0tICAgICAgICB9Ci0tICAgIH0K LS0KLS0gICAgQEJlZm9yZUVhY2gKLS0gICAgcHVibGljIHZvaWQgc2V0dXBMb2dDb250ZXh0KCkg ewotLSAgICAgICAgbG9nQ29udGV4dCA9IExvZ0NvbnRleHQuY3JlYXRlKCk7Ci0tICAgICAgICBM b2dDb250ZXh0LnNldExvZ0NvbnRleHRTZWxlY3RvcigoKSAtPiBsb2dDb250ZXh0KTsKLS0gICAg ICAgIGxvZ2dlciA9IExvZ2dlci5nZXRMb2dnZXIoZ2V0Q2xhc3MoKSk7Ci0tICAgICAgICBoYW5k bGVyID0gY3JlYXRlSGFuZGxlcihsb2dDb250ZXh0LCBsb2dnZXIuZ2V0TmFtZSgpKTsKLS0gICAg fQotLQotLSAgICBAQWZ0ZXJFYWNoCi0tICAgIHB1YmxpYyB2b2lkIGNsb3NlTG9nQ29udGV4dCgp IHRocm93cyBFeGNlcHRpb24gewotLSAgICAgICAgbG9nQ29udGV4dC5jbG9zZSgpOwotLSAgICAg ICAgTG9nQ29udGV4dC5zZXRMb2dDb250ZXh0U2VsZWN0b3IoREVGQVVMVF9TRUxFQ1RPUik7Ci0t ICAgIH0KLS0KLS0gICAgQFRlc3QKLS0gICAgcHVibGljIHZvaWQgdGVzdE1kYygpIHsKLS0gICAg ICAgIE1EQy5wdXQoInRlc3Qua2V5IiwgInZhbHVlIik7Ci0tICAgICAgICBBc3NlcnRpb25zLmFz c2VydEVxdWFscygidmFsdWUiLCBNREMuZ2V0KCJ0ZXN0LmtleSIpKTsKLS0gICAgICAgIEFzc2Vy dGlvbnMuYXNzZXJ0RXF1YWxzKCJ2YWx1ZSIsIG9yZy5qYm9zcy5sb2dtYW5hZ2VyLk1EQy5nZXQo InRlc3Qua2V5IikpOwotLSAgICB9Ci0tCi0tICAgIEBUZXN0Ci0tICAgIHB1YmxpYyB2b2lkIHRl c3ROZGMoKSB7Ci0tICAgICAgICBOREMucHVzaCgidmFsdWUxIik7Ci0tICAgICAgICBOREMucHVz aCgidmFsdWUyIik7Ci0tICAgICAgICBmaW5hbCBTdHJpbmcgZXhwZWN0ZWRWYWx1ZSA9ICJ2YWx1 ZTEudmFsdWUyIjsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkVmFs dWUsIE5EQy5wZWVrKCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoZXhwZWN0 ZWRWYWx1ZSwgTkRDLmdldCgpKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKDIs IE5EQy5nZXREZXB0aCgpKTsKLS0KLS0gICAgICAgIC8vIFRlc3QgdGhlIGxvZyBtYW5hZ2VyIHZh bHVlcwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRWYWx1ZSwgb3Jn Lmpib3NzLmxvZ21hbmFnZXIuTkRDLmdldCgpKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0 RXF1YWxzKDIsIG9yZy5qYm9zcy5sb2dtYW5hZ2VyLk5EQy5nZXREZXB0aCgpKTsKLS0KLS0gICAg ICAgIC8vIFBvcCB0aGUgc3RhY2sKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKCJ2 YWx1ZTIiLCBOREMucG9wKCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoMSwg TkRDLmdldERlcHRoKCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoInZhbHVl MSIsIE5EQy5nZXQoKSk7Ci0tICAgICAgICBBc3NlcnRpb25zLmFzc2VydEVxdWFscygidmFsdWUx Iiwgb3JnLmpib3NzLmxvZ21hbmFnZXIuTkRDLmdldCgpKTsKLS0gICAgICAgIEFzc2VydGlvbnMu YXNzZXJ0RXF1YWxzKDEsIG9yZy5qYm9zcy5sb2dtYW5hZ2VyLk5EQy5nZXREZXB0aCgpKTsKLS0g ICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAgdm9pZCB0ZXN0TG9nKGZpbmFsIExvZ2dlci5M ZXZlbCBsZXZlbCkgewotLSAgICAgICAgZmluYWwgU3RyaW5nIG1zZyA9IFN0cmluZy5mb3JtYXQo IlRlc3QgbG9nIG1lc3NhZ2UgYXQgJXMiLCBsZXZlbCk7Ci0tICAgICAgICBsb2dnZXIubG9nKGxl dmVsLCBtc2cpOwotLQotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRUcnVlKGxvZ2dlci5pc0Vu YWJsZWQobGV2ZWwpLCBTdHJpbmcuZm9ybWF0KCJMb2dnZXIgbm90IGVuYWJsZWQgZm9yIGxldmVs ICVzIiwgbGV2ZWwpKTsKLS0gICAgICAgIHRlc3RMb2cobXNnLCBsZXZlbCk7Ci0tICAgIH0KLS0K LS0gICAgQE92ZXJyaWRlCi0tICAgIHZvaWQgdGVzdExvZyhmaW5hbCBTdHJpbmcgbXNnLCBmaW5h bCBMb2dnZXIuTGV2ZWwgbGV2ZWwpIHsKLS0gICAgICAgIGZpbmFsIExvZ1JlY29yZCBsb2dSZWNv cmQgPSBoYW5kbGVyLnF1ZXVlLnBvbGwoKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0Tm90 TnVsbChsb2dSZWNvcmQsIFN0cmluZy5mb3JtYXQoIk5vIHJlY29yZCBmb3VuZCBmb3IgJXMiLCBs ZXZlbCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMobGV2ZWwubmFtZSgpLCBs b2dSZWNvcmQuZ2V0TGV2ZWwoKS5nZXROYW1lKCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3Nl cnRFcXVhbHMobXNnLCBsb2dSZWNvcmQuZ2V0TWVzc2FnZSgpKTsKLS0gICAgfQotLQotLSAgICBA T3ZlcnJpZGUKLS0gICAgTG9nZ2VyIGdldExvZ2dlcigpIHsKLS0gICAgICAgIHJldHVybiBsb2dn ZXI7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRlCi0tICAgIENsYXNzPD8gZXh0ZW5kcyBMb2dn ZXI+IGdldExvZ2dlckNsYXNzKCkgewotLSAgICAgICAgcmV0dXJuIEpCb3NzTG9nTWFuYWdlckxv Z2dlci5jbGFzczsKLS0gICAgfQotLQotLSAgICBwcml2YXRlIHN0YXRpYyBUZXN0SGFuZGxlciBj cmVhdGVIYW5kbGVyKGZpbmFsIExvZ0NvbnRleHQgbG9nQ29udGV4dCwgZmluYWwgU3RyaW5nIGxv Z2dlck5hbWUpIHsKLS0gICAgICAgIGZpbmFsIFRlc3RIYW5kbGVyIGhhbmRsZXIgPSBuZXcgVGVz dEhhbmRsZXIoKTsKLS0gICAgICAgIGZpbmFsIGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciBqdWxM b2dnZXIgPSBsb2dDb250ZXh0LmdldExvZ2dlcihsb2dnZXJOYW1lKTsKLS0gICAgICAgIGp1bExv Z2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpOwotLSAgICAgICAganVsTG9nZ2VyLnNldExldmVsKExl dmVsLkFMTCk7Ci0tICAgICAgICByZXR1cm4gaGFuZGxlcjsKLS0gICAgfQotLQotLSAgICBwcml2 YXRlIHN0YXRpYyBjbGFzcyBUZXN0SGFuZGxlciBleHRlbmRzIEhhbmRsZXIgewotLSAgICAgICAg ZmluYWwgQmxvY2tpbmdRdWV1ZTxMb2dSZWNvcmQ+IHF1ZXVlID0gbmV3IExpbmtlZEJsb2NraW5n UXVldWU8PigpOwotLQotLSAgICAgICAgQE92ZXJyaWRlCi0tICAgICAgICBwdWJsaWMgdm9pZCBw dWJsaXNoKGZpbmFsIExvZ1JlY29yZCByZWNvcmQpIHsKLS0gICAgICAgICAgICBxdWV1ZS5hZGQo cmVjb3JkKTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAgIEBPdmVycmlkZQotLSAgICAgICAgcHVi bGljIHZvaWQgZmx1c2goKSB7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBAT3ZlcnJpZGUKLS0g ICAgICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uIHsKLS0g ICAgICAgICAgICBxdWV1ZS5jbGVhcigpOwotLSAgICAgICAgfQotLSAgICB9Ci0tfQotLS0gCi0y LjQ0LjAKLQoKZGlmZiAtLWdpdCBhLzAwMDMtRHJvcC1UZXN0Q2FzZS10aGF0LWRlcGVuZC1vbi1y ZXRpcmVkLXBhY2thZ2UucGF0Y2ggYi8wMDAzLURyb3AtVGVzdENhc2UtdGhhdC1kZXBlbmQtb24t cmV0aXJlZC1wYWNrYWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWJm ZTU4Li4wMDAwMDAwCi0tLSBhLzAwMDMtRHJvcC1UZXN0Q2FzZS10aGF0LWRlcGVuZC1vbi1yZXRp cmVkLXBhY2thZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotRnJvbSAy YmU1MDRhYzNkYWYzY2IwZTQ2ZWY1N2I2MWZlOWIyOTY3ZmQ1MGU0IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogQ2hyaXMgS2VsbGV5IDxja2VsbGV5QHJlZGhhdC5jb20+Ci1EYXRlOiBX ZWQsIDE0IEp1biAyMDIzIDExOjEyOjAwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBEcm9w ICpUZXN0Q2FzZSB0aGF0IGRlcGVuZCBvbiByZXRpcmVkIHBhY2thZ2UKLQotVGhlIGNoLnFvcy5s b2diYWNrKiBwYWNrYWdlcyBhcmUgbm8gbG9uZ2VyIHBhY2thZ2VkIGluIEZlZG9yYSBzbyB3ZSBu ZWVkCi10byByZW1vdmUgdGhpcyB0ZXN0LgotLS0tCi0gLi4uL2pib3NzL2xvZ2dpbmcvU2xmNGpD bGFzc1BhdGhUZXN0Q2FzZS5qYXZhIHwgIDMwIC0tLS0KLSAuLi4vamJvc3MvbG9nZ2luZy9TbGY0 alByb3ZpZGVyVGVzdENhc2UuamF2YSAgfCAxMzAgLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxl cyBjaGFuZ2VkLCAxNjAgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvU2xmNGpDbGFzc1BhdGhUZXN0Q2FzZS5qYXZhCi0gZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2phdmEvb3JnL2pib3NzL2xvZ2dpbmcvU2xmNGpQcm92 aWRlclRlc3RDYXNlLmphdmEKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2phdmEvb3JnL2pib3Nz L2xvZ2dpbmcvU2xmNGpDbGFzc1BhdGhUZXN0Q2FzZS5qYXZhIGIvc3JjL3Rlc3QvamF2YS9vcmcv amJvc3MvbG9nZ2luZy9TbGY0akNsYXNzUGF0aFRlc3RDYXNlLmphdmEKLWRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggYWNjMWRmMS4uMDAwMDAwMAotLS0tIGEvc3JjL3Rlc3QvamF2YS9v cmcvamJvc3MvbG9nZ2luZy9TbGY0akNsYXNzUGF0aFRlc3RDYXNlLmphdmEKLSsrKyAvZGV2L251 bGwKLUBAIC0xLDMwICswLDAgQEAKLS0vKgotLSAqIEpCb3NzLCBIb21lIG9mIFByb2Zlc3Npb25h bCBPcGVuIFNvdXJjZS4KLS0gKgotLSAqIENvcHlyaWdodCAyMDIzIFJlZCBIYXQsIEluYy4KLS0g KgotLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo ZSAiTGljZW5zZSIpOwotLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLS0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg dGhlIExpY2Vuc2UgYXQKLS0gKgotLSAqICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv TElDRU5TRS0yLjAKLS0gKgotLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLS0gKiBkaXN0cmlidXRlZCB1bmRlciB0 aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotLSAqIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv ciBpbXBsaWVkLgotLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLS0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj ZW5zZS4KLS0gKi8KLS0KLS1wYWNrYWdlIG9yZy5qYm9zcy5sb2dnaW5nOwotLQotLS8qKgotLSAq IEBhdXRob3IgPGEgaHJlZj0ibWFpbHRvOmpwZXJraW5zQHJlZGhhdC5jb20iPkphbWVzIFIuIFBl cmtpbnM8L2E+Ci0tICovCi0tcHVibGljIGNsYXNzIFNsZjRqQ2xhc3NQYXRoVGVzdENhc2UgZXh0 ZW5kcyBBYnN0cmFjdENsYXNzUGF0aFRlc3RDYXNlIHsKLS0KLS0gICAgQE92ZXJyaWRlCi0tICAg IENsYXNzPD8gZXh0ZW5kcyBMb2dnZXI+IGdldExvZ2dlckNsYXNzKCkgewotLSAgICAgICAgcmV0 dXJuIFNsZjRqTG9jYXRpb25Bd2FyZUxvZ2dlci5jbGFzczsKLS0gICAgfQotLX0KLWRpZmYgLS1n aXQgYS9zcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL1NsZjRqUHJvdmlkZXJUZXN0Q2Fz ZS5qYXZhIGIvc3JjL3Rlc3QvamF2YS9vcmcvamJvc3MvbG9nZ2luZy9TbGY0alByb3ZpZGVyVGVz dENhc2UuamF2YQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA3ZTA3MDMzLi4wMDAw MDAwCi0tLS0gYS9zcmMvdGVzdC9qYXZhL29yZy9qYm9zcy9sb2dnaW5nL1NsZjRqUHJvdmlkZXJU ZXN0Q2FzZS5qYXZhCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMzAgKzAsMCBAQAotLS8qCi0tICog SkJvc3MsIEhvbWUgb2YgUHJvZmVzc2lvbmFsIE9wZW4gU291cmNlLgotLSAqCi0tICogQ29weXJp Z2h0IDIwMjMgUmVkIEhhdCwgSW5jLgotLSAqCi0tICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0tICogeW91IG1heSBub3Qg dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLSAq IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotLSAqCi0tICogIGh0dHA6 Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotLSAqCi0tICogVW5sZXNzIHJl cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy ZQotLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu ICJBUyBJUyIgQkFTSVMsCi0tICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0tICogU2VlIHRoZSBMaWNlbnNl IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotLSAq IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLSAqLwotLQotLXBhY2thZ2Ugb3JnLmpi b3NzLmxvZ2dpbmc7Ci0tCi0taW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVl dWU7Ci0taW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkxpbmtlZEJsb2NraW5nUXVldWU7Ci0t Ci0taW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5BZnRlckVhY2g7Ci0taW1wb3J0IG9yZy5q dW5pdC5qdXBpdGVyLmFwaS5Bc3NlcnRpb25zOwotLWltcG9ydCBvcmcuanVuaXQuanVwaXRlci5h cGkuQmVmb3JlQWxsOwotLWltcG9ydCBvcmcuanVuaXQuanVwaXRlci5hcGkuQmVmb3JlRWFjaDsK LS1pbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLlRlc3Q7Ci0taW1wb3J0IG9yZy5zbGY0ai5M b2dnZXJGYWN0b3J5OwotLQotLWltcG9ydCBjaC5xb3MubG9nYmFjay5jbGFzc2ljLkxldmVsOwot LWltcG9ydCBjaC5xb3MubG9nYmFjay5jbGFzc2ljLkxvZ2dlckNvbnRleHQ7Ci0taW1wb3J0IGNo LnFvcy5sb2diYWNrLmNsYXNzaWMuc3BpLklMb2dnaW5nRXZlbnQ7Ci0taW1wb3J0IGNoLnFvcy5s b2diYWNrLmNvcmUuQXBwZW5kZXJCYXNlOwotLQotLS8qKgotLSAqIEBhdXRob3IgPGEgaHJlZj0i bWFpbHRvOmpwZXJraW5zQHJlZGhhdC5jb20iPkphbWVzIFIuIFBlcmtpbnM8L2E+Ci0tICovCi0t cHVibGljIGNsYXNzIFNsZjRqUHJvdmlkZXJUZXN0Q2FzZSBleHRlbmRzIEFic3RyYWN0TG9nZ2Vy VGVzdENhc2UgewotLSAgICBwcml2YXRlIFRlc3RBcHBlbmRlciBhcHBlbmRlcjsKLS0gICAgcHJp dmF0ZSBMb2dnZXIgbG9nZ2VyOwotLQotLSAgICBAQmVmb3JlQWxsCi0tICAgIHB1YmxpYyBzdGF0 aWMgdm9pZCBzZXR1cCgpIHsKLS0gICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgib3JnLmpib3Nz LmxvZ2dpbmcucHJvdmlkZXIiLCAic2xmNGoiKTsKLS0gICAgfQotLQotLSAgICBAQmVmb3JlRWFj aAotLSAgICBwdWJsaWMgdm9pZCBzZXR1cExvZ0NvbnRleHQoKSB7Ci0tICAgICAgICBsb2dnZXIg PSBMb2dnZXIuZ2V0TG9nZ2VyKGdldENsYXNzKCkpOwotLSAgICAgICAgYXBwZW5kZXIgPSBjcmVh dGVIYW5kbGVyKGxvZ2dlci5nZXROYW1lKCkpOwotLSAgICB9Ci0tCi0tICAgIEBBZnRlckVhY2gK LS0gICAgcHVibGljIHZvaWQgcmVtb3ZlQXBwZW5kZXIoKSB7Ci0tICAgICAgICBjaC5xb3MubG9n YmFjay5jbGFzc2ljLkxvZ2dlciBsYkxvZ2dlciA9IChjaC5xb3MubG9nYmFjay5jbGFzc2ljLkxv Z2dlcikgTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIobG9nZ2VyLmdldE5hbWUoKSk7Ci0tICAgICAg ICBsYkxvZ2dlci5kZXRhY2hBcHBlbmRlcihhcHBlbmRlcik7Ci0tICAgICAgICBhcHBlbmRlci5z dG9wKCk7Ci0tICAgIH0KLS0KLS0gICAgQFRlc3QKLS0gICAgcHVibGljIHZvaWQgdGVzdE1kYygp IHsKLS0gICAgICAgIE1EQy5wdXQoInRlc3Qua2V5IiwgInZhbHVlIik7Ci0tICAgICAgICBBc3Nl cnRpb25zLmFzc2VydEVxdWFscygidmFsdWUiLCBNREMuZ2V0KCJ0ZXN0LmtleSIpKTsKLS0gICAg ICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKCJ2YWx1ZSIsIG9yZy5zbGY0ai5NREMuZ2V0KCJ0 ZXN0LmtleSIpKTsKLS0gICAgfQotLQotLSAgICBAVGVzdAotLSAgICBwdWJsaWMgdm9pZCB0ZXN0 TmRjKCkgewotLSAgICAgICAgTkRDLnB1c2goInZhbHVlMSIpOwotLSAgICAgICAgTkRDLnB1c2go InZhbHVlMiIpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoInZhbHVlMiIsIE5E Qy5wZWVrKCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoInZhbHVlMSB2YWx1 ZTIiLCBOREMuZ2V0KCkpOwotLSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRFcXVhbHMoMiwgTkRD LmdldERlcHRoKCkpOwotLQotLSAgICAgICAgLy8gUG9wIHRoZSBzdGFjawotLSAgICAgICAgQXNz ZXJ0aW9ucy5hc3NlcnRFcXVhbHMoInZhbHVlMiIsIE5EQy5wb3AoKSk7Ci0tICAgICAgICBBc3Nl cnRpb25zLmFzc2VydEVxdWFscygxLCBOREMuZ2V0RGVwdGgoKSk7Ci0tICAgICAgICBBc3NlcnRp b25zLmFzc2VydEVxdWFscygidmFsdWUxIiwgTkRDLmdldCgpKTsKLS0gICAgfQotLQotLSAgICBA T3ZlcnJpZGUKLS0gICAgdm9pZCB0ZXN0TG9nKGZpbmFsIExvZ2dlci5MZXZlbCBsZXZlbCkgewot LSAgICAgICAgZmluYWwgU3RyaW5nIG1zZyA9IFN0cmluZy5mb3JtYXQoIlRlc3QgbG9nIG1lc3Nh Z2UgYXQgJXMiLCBsZXZlbCk7Ci0tICAgICAgICBsb2dnZXIubG9nKGxldmVsLCBtc2cpOwotLQot LSAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRUcnVlKGxvZ2dlci5pc0VuYWJsZWQobGV2ZWwpLCBT dHJpbmcuZm9ybWF0KCJMb2dnZXIgbm90IGVuYWJsZWQgZm9yIGxldmVsICVzIiwgbGV2ZWwpKTsK LS0gICAgICAgIHRlc3RMb2cobXNnLCBsZXZlbCk7Ci0tICAgIH0KLS0KLS0gICAgQE92ZXJyaWRl Ci0tICAgIHZvaWQgdGVzdExvZyhmaW5hbCBTdHJpbmcgbXNnLCBmaW5hbCBMb2dnZXIuTGV2ZWwg bGV2ZWwpIHsKLS0gICAgICAgIGZpbmFsIElMb2dnaW5nRXZlbnQgZXZlbnQgPSBhcHBlbmRlci5x dWV1ZS5wb2xsKCk7Ci0tICAgICAgICBBc3NlcnRpb25zLmFzc2VydE5vdE51bGwoZXZlbnQsIFN0 cmluZy5mb3JtYXQoIk5vIHJlY29yZCBmb3VuZCBmb3IgJXMiLCBsZXZlbCkpOwotLSAgICAgICAg ZmluYWwgTG9nZ2VyLkxldmVsIHRyYW5zbGF0ZWRMZXZlbCA9IGxldmVsID09IExvZ2dlci5MZXZl bC5GQVRBTCA/IExvZ2dlci5MZXZlbC5FUlJPUiA6IGxldmVsOwotLSAgICAgICAgQXNzZXJ0aW9u cy5hc3NlcnRFcXVhbHModHJhbnNsYXRlZExldmVsLm5hbWUoKSwgZXZlbnQuZ2V0TGV2ZWwoKS50 b1N0cmluZygpKTsKLS0gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0RXF1YWxzKG1zZywgZXZlbnQu Z2V0Rm9ybWF0dGVkTWVzc2FnZSgpKTsKLS0gICAgfQotLQotLSAgICBAT3ZlcnJpZGUKLS0gICAg TG9nZ2VyIGdldExvZ2dlcigpIHsKLS0gICAgICAgIHJldHVybiBsb2dnZXI7Ci0tICAgIH0KLS0K LS0gICAgQE92ZXJyaWRlCi0tICAgIENsYXNzPD8gZXh0ZW5kcyBMb2dnZXI+IGdldExvZ2dlckNs YXNzKCkgewotLSAgICAgICAgcmV0dXJuIFNsZjRqTG9jYXRpb25Bd2FyZUxvZ2dlci5jbGFzczsK LS0gICAgfQotLQotLSAgICBwcml2YXRlIHN0YXRpYyBUZXN0QXBwZW5kZXIgY3JlYXRlSGFuZGxl cihmaW5hbCBTdHJpbmcgbG9nZ2VyTmFtZSkgewotLSAgICAgICAgZmluYWwgTG9nZ2VyQ29udGV4 dCBjb250ZXh0ID0gKExvZ2dlckNvbnRleHQpIExvZ2dlckZhY3RvcnkuZ2V0SUxvZ2dlckZhY3Rv cnkoKTsKLS0gICAgICAgIGZpbmFsIFRlc3RBcHBlbmRlciBhcHBlbmRlciA9IG5ldyBUZXN0QXBw ZW5kZXIoKTsKLS0gICAgICAgIGFwcGVuZGVyLnNldENvbnRleHQoY29udGV4dCk7Ci0tICAgICAg ICBhcHBlbmRlci5zdGFydCgpOwotLQotLSAgICAgICAgY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5M b2dnZXIgbGJMb2dnZXIgPSAoY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5Mb2dnZXIpIExvZ2dlckZh Y3RvcnkuZ2V0TG9nZ2VyKGxvZ2dlck5hbWUpOwotLSAgICAgICAgbGJMb2dnZXIuYWRkQXBwZW5k ZXIoYXBwZW5kZXIpOwotLSAgICAgICAgbGJMb2dnZXIuc2V0TGV2ZWwoTGV2ZWwuQUxMKTsKLS0g ICAgICAgIHJldHVybiBhcHBlbmRlcjsKLS0gICAgfQotLQotLSAgICBwdWJsaWMgc3RhdGljIGNs YXNzIFRlc3RBcHBlbmRlciBleHRlbmRzIEFwcGVuZGVyQmFzZTxJTG9nZ2luZ0V2ZW50PiB7Ci0t ICAgICAgICBmaW5hbCBCbG9ja2luZ1F1ZXVlPElMb2dnaW5nRXZlbnQ+IHF1ZXVlID0gbmV3IExp bmtlZEJsb2NraW5nUXVldWU8PigpOwotLQotLSAgICAgICAgQE92ZXJyaWRlCi0tICAgICAgICBw cm90ZWN0ZWQgdm9pZCBhcHBlbmQoZmluYWwgSUxvZ2dpbmdFdmVudCBldmVudCkgewotLSAgICAg ICAgICAgIHF1ZXVlLmFkZChldmVudCk7Ci0tICAgICAgICB9Ci0tICAgIH0KLS19Ci0tLSAKLTIu NDAuMQotCgpkaWZmIC0tZ2l0IGEvZGVhZC5wYWNrYWdlIGIvZGVhZC5wYWNrYWdlCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlOWZmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9k ZWFkLnBhY2thZ2UKQEAgLTAsMCArMSBAQAorU2luY2UgcmVzdGVhc3kgaXMgcmV0aXJlZCBqYm9z cy0qIHBhY2thZ2VzIGFyZSBub3QgbmVlZGVkCgpkaWZmIC0tZ2l0IGEvamJvc3MtbG9nZ2luZy5z cGVjIGIvamJvc3MtbG9nZ2luZy5zcGVjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5 MzA3MjNiLi4wMDAwMDAwCi0tLSBhL2pib3NzLWxvZ2dpbmcuc3BlYworKysgL2Rldi9udWxsCkBA IC0xLDIyNiArMCwwIEBACi0lZ2xvYmFsIG5hbWVkcmVsdGFnIC5GaW5hbAotJWdsb2JhbCBuYW1l ZHZlcnNpb24gJXt2ZXJzaW9ufSV7P25hbWVkcmVsdGFnfQotCi1OYW1lOiAgICAgICAgICAgICBq Ym9zcy1sb2dnaW5nCi1WZXJzaW9uOiAgICAgICAgICAzLjYuMAotUmVsZWFzZTogICAgICAgICAg OCV7P2Rpc3R9Ci1TdW1tYXJ5OiAgICAgICAgICBUaGUgSkJvc3MgTG9nZ2luZyBGcmFtZXdvcmsK LUxpY2Vuc2U6ICAgICAgICAgIEFwYWNoZS0yLjAKLQotVVJMOiAgICAgICAgICAgICAgaHR0cHM6 Ly9naXRodWIuY29tL2pib3NzLWxvZ2dpbmcvamJvc3MtbG9nZ2luZwotU291cmNlMDogICAgICAg ICAgJXt1cmx9L2FyY2hpdmUvJXtuYW1lZHZlcnNpb259LyV7bmFtZX0tJXtuYW1lZHZlcnNpb259 LnRhci5negotUGF0Y2gxOiAgICAgICAgICAgMDAwMS1Ecm9wLWxvZzRqLWRlcGVuZGVuY3kucGF0 Y2gKLVBhdGNoMjogICAgICAgICAgIDAwMDItRHJvcC1qYm9zcy1sb2dtYW5hZ2VyLWRlcGVuZGVu Y3kucGF0Y2gKLVBhdGNoMzogICAgICAgICAgIDAwMDMtRHJvcC1UZXN0Q2FzZS10aGF0LWRlcGVu ZC1vbi1yZXRpcmVkLXBhY2thZ2UucGF0Y2gKLQotQnVpbGRBcmNoOiAgICAgICAgbm9hcmNoCi1F eGNsdXNpdmVBcmNoOiAgICAle2phdmFfYXJjaGVzfSBub2FyY2gKLQotJWlmIDAlez9yaGVsfSB8 fCAwJXs/ZmVkb3JhfSAmJiAwJXs/ZmVkb3JhfSA8PSA0MgotQnVpbGRSZXF1aXJlczogICAgbWF2 ZW4tbG9jYWwKLSVlbHNlCi1CdWlsZFJlcXVpcmVzOiAgICBtYXZlbi1sb2NhbC1vcGVuamRrMjUK LSVlbmRpZgotCi1CdWlsZFJlcXVpcmVzOiAgICBtdm4ob3JnLmFwYWNoZS5mZWxpeDptYXZlbi1i dW5kbGUtcGx1Z2luKQotQnVpbGRSZXF1aXJlczogICAgbXZuKG9yZy5qdW5pdDpqdW5pdC1ib206 cG9tOikKLUJ1aWxkUmVxdWlyZXM6ICAgIG12bihvcmcuYXBhY2hlLmxvZ2dpbmc6bG9nZ2luZy1w YXJlbnQ6cG9tOikKLUJ1aWxkUmVxdWlyZXM6ICAgIG12bihvcmcuc2xmNGo6c2xmNGotYXBpKQot Ci0lZGVzY3JpcHRpb24KLVRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgSkJvc3MgTG9nZ2luZyBG cmFtZXdvcmsuCi0KLSVwcmVwCi0lYXV0b3NldHVwIC1uICV7bmFtZX0tJXtuYW1lZHZlcnNpb259 IC1wIDEKLQotIyBVbm5lZWRlZCB0YXNrcwotJXBvbV9yZW1vdmVfZGVwIGNoLnFvcy5sb2diYWNr OmxvZ2JhY2stY2xhc3NpYwotJXBvbV9yZW1vdmVfcGx1Z2luIDptYXZlbi1zb3VyY2UtcGx1Z2lu Ci0lcG9tX3JlbW92ZV9wbHVnaW4gaW8uZ2l0aHViLmRtbGxveWQubW9kdWxlLWluZm86bW9kdWxl LWluZm8KLQotJXBvbV9zZXRfcGFyZW50IG9yZy5hcGFjaGUubG9nZ2luZzpsb2dnaW5nLXBhcmVu dAotCi0lYnVpbGQKLSMgMS44IGlzIG5vdCB2YWxpZCAoOCBpcyB0aGUgYWNjZXB0ZWQgZm9ybSks IGJ1dCBARGVwcmVjYXRlZCByZXF1aXJlcyA+PSA5Ci0lbXZuX2J1aWxkIC1qIC0tIC1EbWF2ZW4u Y29tcGlsZXIucmVsZWFzZT0xMQotCi0laW5zdGFsbAotJW12bl9pbnN0YWxsCi0KLSVmaWxlcyAt ZiAubWZpbGVzCi0lbGljZW5zZSBMSUNFTlNFLnR4dAotCi0lY2hhbmdlbG9nCi0qIFRodSBKdWwg MTYgMjAyNiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qu b3JnPiAtIDMuNi4wLTgKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93 aWtpL0ZlZG9yYV80NV9NYXNzX1JlYnVpbGQKLQotKiBGcmkgSmFuIDE2IDIwMjYgRmVkb3JhIFJl bGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAzLjYuMC03Ci0t IFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDRfTWFz c19SZWJ1aWxkCi0KLSogTW9uIE5vdiAzIDIwMjUgRG9ndGFnIFBLSSBUZWFtIDxkZXZlbEBsaXN0 cy5kb2d0YWdwa2kub3JnPiAtIDMuNi4wLTYKLS0gUmVzdG9yZSBzdXBwb3J0IGZvciBSSEVMIGFu ZCBvbGRlciBGZWRvcmEKLQotKiBUdWUgSnVsIDI5IDIwMjUgamlyaSB2YW5layA8anZhbmVrQHJl ZGhhdC5jb20+IC0gMy42LjAtNQotLSBSZWJ1aWx0IGZvciBqYXZhLTI1LW9wZW5qZGsgYXMgcHJl ZmZlcmVkIGpkawotCi0qIFRodSBKdWwgMjQgMjAyNSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmlu ZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDMuNi4wLTQKLS0gUmVidWlsdCBmb3IgaHR0 cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80M19NYXNzX1JlYnVpbGQKLQotKiBG cmkgSmFuIDE3IDIwMjUgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFw cm9qZWN0Lm9yZz4gLSAzLjYuMC0zCi0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVj dC5vcmcvd2lraS9GZWRvcmFfNDJfTWFzc19SZWJ1aWxkCi0KLSogVGh1IEp1bCAxOCAyMDI0IEZl ZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMy42 LjAtMgotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3Jh XzQxX01hc3NfUmVidWlsZAotCi0qIEZyaSBKdW4gMTQgMjAyNCBDaHJpcyBLZWxsZXkgPGNrZWxs ZXlAcmVkaGF0LmNvbT4gLSAzLjYuMC0xCi0tIFJlYmFzZSB0byB2ZXJzaW9uIDMuNi4wLkZpbmFs Ci0KLSogVHVlIEZlYiAyNyAyMDI0IEppcmkgVmFuZWsgPGp2YW5la0ByZWRoYXQuY29tPiAtIDMu NS4zLTUKLS0gUmVidWlsdCBmb3IgamF2YS0yMS1vcGVuamRrIGFzIHN5c3RlbSBqZGsKLQotKiBX ZWQgSmFuIDI0IDIwMjQgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFw cm9qZWN0Lm9yZz4gLSAzLjUuMy00Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVj dC5vcmcvd2lraS9GZWRvcmFfNDBfTWFzc19SZWJ1aWxkCi0KLSogU2F0IEphbiAyMCAyMDI0IEZl ZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMy41 LjMtMwotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3Jh XzQwX01hc3NfUmVidWlsZAotCi0qIFRodSBKdWwgMjAgMjAyMyBGZWRvcmEgUmVsZWFzZSBFbmdp bmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDMuNS4zLTIKLS0gUmVidWlsdCBm b3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8zOV9NYXNzX1JlYnVpbGQK LQotKiBNb24gSnVsIDEwIDIwMjMgQ2hyaXMgS2VsbGV5IDxja2VsbGV5QHJlZGhhdC5jb20+IC0g My41LjMtMQotLSBSZWJhc2UgdG8gdmVyc2lvbiAzLjUuMy5GaW5hbAotCi0qIEZyaSBKdW4gMzAg MjAyMyBDaHJpcyBLZWxsZXkgPGNrZWxsZXlAcmVkaGF0LmNvbT4gLSAzLjUuMi0xCi0tIFJlYmFz ZSB0byB2ZXJzaW9uIDMuNS4yLkZpbmFsCi0KLSogVHVlIEp1biAwNiAyMDIzIENocmlzIEtlbGxl eSA8Y2tlbGxleUByZWRoYXQuY29tPiAtIDMuNS4xLTEKLS0gUmViYXNlIHRvIHZlcnNpb24gMy41 LjEuRmluYWwKLQotKiBUaHUgSmFuIDE5IDIwMjMgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcg PHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAzLjQuMS0xNAotLSBSZWJ1aWx0IGZvciBodHRw czovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzM4X01hc3NfUmVidWlsZAotCi0qIFRo dSBKdWwgMjEgMjAyMiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXBy b2plY3Qub3JnPiAtIDMuNC4xLTEzCi0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVj dC5vcmcvd2lraS9GZWRvcmFfMzdfTWFzc19SZWJ1aWxkCi0KLSogRnJpIEp1bCAwOCAyMDIyIEpp cmkgVmFuZWsgPGp2YW5la0ByZWRoYXQuY29tPiAtIDMuNC4xLTEyCi0tIFJlYnVpbHQgZm9yIERy b3AgaTY4NiBKREtzCi0KLSogU2F0IEZlYiAwNSAyMDIyIEppcmkgVmFuZWsgPGp2YW5la0ByZWRo YXQuY29tPiAtIDMuNC4xLTExCi0tIFJlYnVpbHQgZm9yIGphdmEtMTctb3BlbmpkayBhcyBzeXN0 ZW0gamRrCi0KLSogVGh1IEphbiAyMCAyMDIyIEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxy ZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMy40LjEtMTAKLS0gUmVidWlsdCBmb3IgaHR0cHM6 Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8zNl9NYXNzX1JlYnVpbGQKLQotKiBUaHUg SnVsIDIyIDIwMjEgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9q ZWN0Lm9yZz4gLSAzLjQuMS05Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5v cmcvd2lraS9GZWRvcmFfMzVfTWFzc19SZWJ1aWxkCi0KLSogRnJpIEp1biAwNCAyMDIxIERvZ3Rh ZyBQS0kgVGVhbSA8cGtpLWRldmVsQHJlZGhhdC5jb20+IC0gMy40LjEtOAotLSBEcm9wIGpib3Nz LWxvZ21hbmFnZXIgZGVwZW5kZW5jeQotCi0qIEZyaSBKdW4gMDQgMjAyMSBEb2d0YWcgUEtJIFRl YW0gPHBraS1kZXZlbEByZWRoYXQuY29tPiAtIDMuNC4xLTcKLS0gRHJvcCBsb2c0aiBkZXBlbmRl bmN5Ci0tIERyb3AgamJvc3MtbG9nZ2luZy1qYXZhZG9jCi0KLSogVHVlIEphbiAyNiAyMDIxIEZl ZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMy40 LjEtNgotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3Jh XzM0X01hc3NfUmVidWlsZAotCi0qIFdlZCBTZXAgMDkgMjAyMCBGYWJpbyBWYWxlbnRpbmkgPGRl Y2F0aG9ycGVAZ21haWwuY29tPiAtIDMuNC4xLTUKLS0gU3dpdGNoIGZyb20gbG9nNGogMS4yIGNv bXBhdCBwYWNrYWdlIHRvIGxvZzRqIDEuMiBBUEkgc2hpbS4KLQotKiBUdWUgSnVsIDI4IDIwMjAg RmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAz LjQuMS00Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRv cmFfMzNfTWFzc19SZWJ1aWxkCi0KLSogRnJpIEp1bCAxMCAyMDIwIEppcmkgVmFuZWsgPGp2YW5l a0ByZWRoYXQuY29tPiAtIDMuNC4xLTMKLS0gUmVidWlsdCBmb3IgSkRLLTExLCBzZWUgaHR0cHM6 Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0NoYW5nZXMvSmF2YTExCi0KLSogV2VkIEphbiAyOSAy MDIwIEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+ IC0gMy40LjEtMgotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kv RmVkb3JhXzMyX01hc3NfUmVidWlsZAotCi0qIFNhdCBPY3QgMDUgMjAxOSBGYWJpbyBWYWxlbnRp bmkgPGRlY2F0aG9ycGVAZ21haWwuY29tPiAtIDMuNC4xLTEKLS0gVXBkYXRlIHRvIHZlcnNpb24g My40LjEuCi0KLSogVGh1IEp1bCAyNSAyMDE5IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxy ZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMy4zLjAtNwotLSBSZWJ1aWx0IGZvciBodHRwczov L2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzMxX01hc3NfUmVidWlsZAotCi0qIEZyaSBG ZWIgMDEgMjAxOSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2pl Y3Qub3JnPiAtIDMuMy4wLTYKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9y Zy93aWtpL0ZlZG9yYV8zMF9NYXNzX1JlYnVpbGQKLQotKiBGcmkgSnVsIDEzIDIwMTggRmVkb3Jh IFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAzLjMuMC01 Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMjlf TWFzc19SZWJ1aWxkCi0KLSogV2VkIEZlYiAwNyAyMDE4IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVy aW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMy4zLjAtNAotLSBSZWJ1aWx0IGZvciBo dHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzI4X01hc3NfUmVidWlsZAotCi0q IFdlZCBKdWwgMjYgMjAxNyBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9y YXByb2plY3Qub3JnPiAtIDMuMy4wLTMKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9q ZWN0Lm9yZy93aWtpL0ZlZG9yYV8yN19NYXNzX1JlYnVpbGQKLQotKiBGcmkgRmViIDEwIDIwMTcg RmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAz LjMuMC0yCi0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRv cmFfMjZfTWFzc19SZWJ1aWxkCi0KLSogRnJpIE1heSAyNyAyMDE2IGdpbCBjYXR0YW5lbyA8cHVu dG9naWxAbGliZXJvLml0PiAzLjMuMC0xCi0tIHVwZGF0ZSB0byAzLjMuMC5GaW5hbAotCi0qIFN1 biBGZWIgMTQgMjAxNiBnaWwgY2F0dGFuZW8gPHB1bnRvZ2lsQGxpYmVyby5pdD4gMy4xLjQtNgot LSBmaXggRlRCRlMgcmhieiMxMzA3NjQ3Ci0tIGZpeCBCUiBsaXN0IGFuZCB1c2UgQlIgbXZuKCkt bGlrZQotLSBpbnRyb2R1Y2UgbGljZW5zZSBtYWNybwotLSBmaXggc29tZSBycG1saW50IHByb2Js ZW0KLQotKiBUaHUgRmViIDA0IDIwMTYgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVu Z0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAzLjEuNC01Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVk b3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMjRfTWFzc19SZWJ1aWxkCi0KLSogV2VkIEp1biAx NyAyMDE1IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWwtZW5nQGxpc3RzLmZlZG9yYXBy b2plY3Qub3JnPiAtIDMuMS40LTQKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0 Lm9yZy93aWtpL0ZlZG9yYV8yM19NYXNzX1JlYnVpbGQKLQotKiBUdWUgSnVsIDAxIDIwMTQgTWFy ZWsgR29sZG1hbm4gPG1nb2xkbWFuQHJlZGhhdC5jb20+IC0gMy4xLjQtMwotLSBVcGdyYWRlIHRv IFNMRjRqIDEuNwotCi0qIFNhdCBKdW4gMDcgMjAxNCBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmlu ZyA8cmVsLWVuZ0BsaXN0cy5mZWRvcmFwcm9qZWN0Lm9yZz4gLSAzLjEuNC0yCi0tIFJlYnVpbHQg Zm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMjFfTWFzc19SZWJ1aWxk Ci0KLSogRnJpIEZlYiAxNCAyMDE0IE1hcmVrIEdvbGRtYW5uIDxtZ29sZG1hbkByZWRoYXQuY29t PiAtIDMuMS40LTEKLS0gVXBzdHJlYW0gcmVsZWFzZSAzLjEuNC5HQQotCi0qIFNhdCBBdWcgMDMg MjAxMyBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsLWVuZ0BsaXN0cy5mZWRvcmFwcm9q ZWN0Lm9yZz4gLSAzLjEuMy0yCi0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5v cmcvd2lraS9GZWRvcmFfMjBfTWFzc19SZWJ1aWxkCi0KLSogRnJpIEp1biAyOCAyMDEzIE1hcmVr IEdvbGRtYW5uIDxtZ29sZG1hbkByZWRoYXQuY29tPiAtIDMuMS4zLTEKLS0gVXBzdHJlYW0gcmVs ZWFzZSAzLjEuMy5HQQotCi0qIFR1ZSBGZWIgMjYgMjAxMyBNYXJlayBHb2xkbWFubiA8bWdvbGRt YW5AcmVkaGF0LmNvbT4gLSAzLjEuMi0xCi0tIFVwc3RyZWFtIHJlbGVhc2UgMy4xLjIuR0EKLS0g TW92ZSB0byBtdm5fYnVpbGQgYW5kIG12bl9pbnN0YWxsIG1hY3JvcwotLSBMaWNlbnNlIGNoYW5n ZSB0byBBU0wgMi4wCi0KLSogVGh1IEZlYiAxNCAyMDEzIEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVy aW5nIDxyZWwtZW5nQGxpc3RzLmZlZG9yYXByb2plY3Qub3JnPiAtIDMuMS4wLTYKLS0gUmVidWls dCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8xOV9NYXNzX1JlYnVp bGQKLQotKiBXZWQgRmViIDA2IDIwMTMgSmF2YSBTSUcgPGphdmEtZGV2ZWxAbGlzdHMuZmVkb3Jh cHJvamVjdC5vcmc+IC0gMy4xLjAtNQotLSBVcGRhdGUgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVj dC5vcmcvd2lraS9GZWRvcmFfMTlfTWF2ZW5fUmVidWlsZAotLSBSZXBsYWNlIG1hdmVuIEJ1aWxk UmVxdWlyZXMgd2l0aCBtYXZlbi1sb2NhbAotCi0qIEZyaSBKdWwgMjAgMjAxMiBNYXJlayBHb2xk bWFubiA8bWdvbGRtYW5AcmVkaGF0LmNvbT4gLSAzLjEuMC00Ci0tIEZpeGVkIEJSCi0KLSogVGh1 IEp1bCAxOSAyMDEyIEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWwtZW5nQGxpc3RzLmZl ZG9yYXByb2plY3Qub3JnPiAtIDMuMS4wLTMKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFw cm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8xOF9NYXNzX1JlYnVpbGQKLQotKiBTdW4gRmViIDI2IDIw MTIgTWFyZWsgR29sZG1hbm4gPG1nb2xkbWFuQHJlZGhhdC5jb20+IDMuMS4wLTIKLS0gUmVsZWFz ZSBidW1wCi0KLSogU3VuIEZlYiAyNiAyMDEyIE1hcmVrIEdvbGRtYW5uIDxtZ29sZG1hbkByZWRo YXQuY29tPiAzLjEuMC0xCi0tIFVwc3RyZWFtIHJlbGVhc2UgMy4xLjAuR0EKLS0gUmVsb2NhdGVk IGphcnMgdG8gX2phdmFkaXIKLQotKiBGcmkgSmFuIDEzIDIwMTIgRmVkb3JhIFJlbGVhc2UgRW5n aW5lZXJpbmcgPHJlbC1lbmdAbGlzdHMuZmVkb3JhcHJvamVjdC5vcmc+IC0gMy4xLjAtMC4yLkNS MQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzE3 X01hc3NfUmVidWlsZAotCi0qIEZyaSBOb3YgMTggMjAxMSBNYXJlayBHb2xkbWFubiA8bWdvbGRt YW5AcmVkaGF0LmNvbT4gMy4xLjAtMC4xLkNSMQotLSBVcHN0cmVhbSByZWxlYXNlIDMuMS4wLkNS MQotCi0qIE1vbiBTZXAgMTkgMjAxMSBNYXJlayBHb2xkbWFubiA8bWdvbGRtYW5AcmVkaGF0LmNv bT4gMy4wLjEtMQotLSBVcHN0cmVhbSByZWxlYXNlIDMuMC4xLkdBCi0KLSogVGh1IEp1bCAyOCAy MDExIE1hcmVrIEdvbGRtYW5uIDxtZ29sZG1hbkByZWRoYXQuY29tPiAzLjAuMC0xCi0tIEluaXRp YWwgcGFja2FnaW5nCi0KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggOTcyMjAzNi4uMDAwMDAwMAotLS0gYS9zb3VyY2VzCisrKyAv ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotU0hBNTEyIChqYm9zcy1sb2dnaW5nLTMuNi4wLkZpbmFs LnRhci5neikgPSA0ZWFmMWU0YmMxOTlkZTJiMTU2NzFjOTk4OGVhYWM5MGFlZGEyMzBlN2Y5Yzg1 YzhmZGE3YzljOWU3OGNiZGE0ZWFmZDhhYmJkZTdiZmRhYjNlNmJkOThmYzFmY2NlMjk1MmViYjE4 MmY3MmM3ZDE2ZTdiOWIxMjgxMGQyMWU4NAo=