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: Adam Williamson To: git-commits@fedoraproject.org Subject: [rpms/jss] f45: Backport PR #1116 to fix post-handshake auth hang (FreeIPA replication) (#2490607) Date: Wed, 02 Sep 2026 19:01:11 GMT Message-ID: <178837567139.1.5919907409752870081.rpms-jss-570c971fefcd@fedoraproject.org> List-ID: X-Git-Repo: rpms/jss X-Git-Branch: f45 X-Git-Rev: 570c971fefcddb421a33a70d0abd2d1ebccdc15e QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvanNzCkJyYW5jaCA6 IGY0NQpDb21taXQgOiA1NzBjOTcxZmVmY2RkYjQyMWEzM2E3MGQwYWJkMmQxZWJjY2RjMTVlCkF1 dGhvciA6IEFkYW0gV2lsbGlhbXNvbiA8YWRhbXdpbGxAZmVkb3JhcHJvamVjdC5vcmc+CkRhdGUg ICA6IDIwMjYtMDktMDJUMTI6MDA6NDktMDc6MDAKU3RhdHMgIDogKzg5NC8tMSBpbiA0IGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9qc3MvYy81NzBj OTcxZmVmY2RkYjQyMWEzM2E3MGQwYWJkMmQxZWJjY2RjMTVlP2JyYW5jaD1mNDUKCkxvZzoKQmFj a3BvcnQgUFIgIzExMTYgdG8gZml4IHBvc3QtaGFuZHNoYWtlIGF1dGggaGFuZyAoRnJlZUlQQSBy ZXBsaWNhdGlvbikgKCMyNDkwNjA3KQoKLS0tCmRpZmYgLS1naXQgYS8wMDAxLUZpeC1UTFMtMS4z LXBvc3QtaGFuZHNoYWtlLWF1dGhlbnRpY2F0aW9uLWhhbmdpbmctYXQucGF0Y2ggYi8wMDAxLUZp eC1UTFMtMS4zLXBvc3QtaGFuZHNoYWtlLWF1dGhlbnRpY2F0aW9uLWhhbmdpbmctYXQucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YxYWY4NgotLS0gL2Rldi9udWxs CisrKyBiLzAwMDEtRml4LVRMUy0xLjMtcG9zdC1oYW5kc2hha2UtYXV0aGVudGljYXRpb24taGFu Z2luZy1hdC5wYXRjaApAQCAtMCwwICsxLDEyNyBAQAorRnJvbSBhNDQwNjA5NWMyYWI3NGI3MTNj MzllY2M4ZDhiOTg4MWQ4ZDljZGQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhv bWFzIFdvZXJuZXIgPHR3b2VybmVyQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDE3IEF1ZyAyMDI2 IDEwOjU0OjIwICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBGaXggVExTIDEuMyBwb3N0LWhh bmRzaGFrZSBhdXRoZW50aWNhdGlvbiBoYW5naW5nIGF0IDEwMCUKKyBDUFUKKworV2hlbiBhIFRM UyAxLjMgc2VydmVyIHNlbmRzIGEgcG9zdC1oYW5kc2hha2UgQ2VydGlmaWNhdGVSZXF1ZXN0IHRv IGEKK0pTUyBjbGllbnQsIHRoZSB1bndyYXAoKSBkby13aGlsZSBsb29wIHNwaW5zIGluZGVmaW5p dGVseS4gUFIuUmVhZCgpCitwcm9jZXNzZXMgdGhlIHJlcXVlc3QgYW5kIHF1ZXVlcyB0aGUgQ2Vy dGlmaWNhdGUgcmVzcG9uc2UgaW4gd3JpdGVfYnVmLAorYnV0IHRoZSBsb29wIG5ldmVyIGJyZWFr cyB0byBsZXQgdGhlIGNhbGxlciBjYWxsIHdyYXAoKSB0byBmbHVzaCBpdC4KKworSW4gSlNTRW5n aW5lUmVmZXJlbmNlSW1wbCwgZGV0ZWN0IHBlbmRpbmcgd3JpdGUgZGF0YSBhZnRlciBhIGNvbXBs ZXRlZAoraGFuZHNoYWtlIGFuZCBzaWduYWwgTkVFRF9XUkFQIHRvIGJyZWFrIHRoZSBsb29wLgor CitJbiBKU1NTb2NrZXRDaGFubmVsLCBhZGQgZmx1c2hQb3N0SGFuZHNoYWtlKCkgdG8gZHJpdmUg d3JhcCgpIGFuZAorc2VuZCB0aGUgQ2VydGlmaWNhdGUgcmVzcG9uc2UuIEhhbmRsZSBub24tYmxv Y2tpbmcgY2hhbm5lbHMgYnkKK3ByZXNlcnZpbmcgcGVuZGluZyBvdXRwdXQgd2hlbiB3cml0ZUNo YW5uZWwud3JpdGUoKSByZXR1cm5zIDAgYW5kCityZXRyeWluZyBvbiB0aGUgbmV4dCByZWFkKCkg b3Igd3JpdGUoKSBjYWxsLgorCitSZXNvbHZlczogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD0yNDkwNjA3CisKK1NpZ25lZC1vZmYtYnk6IFRob21hcyBXb2VybmVy IDx0d29lcm5lckByZWRoYXQuY29tPgorLS0tCisgLi4uL2pzcy9zc2wvamF2YXgvSlNTRW5naW5l UmVmZXJlbmNlSW1wbC5qYXZhIHwgMTAgKysrKysKKyAuLi4vanNzL3NzbC9qYXZheC9KU1NTb2Nr ZXRDaGFubmVsLmphdmEgICAgICAgfCAzOCArKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBj aGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9iYXNlL3NyYy9tYWluL2ph dmEvb3JnL21vemlsbGEvanNzL3NzbC9qYXZheC9KU1NFbmdpbmVSZWZlcmVuY2VJbXBsLmphdmEg Yi9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21vemlsbGEvanNzL3NzbC9qYXZheC9KU1NFbmdpbmVS ZWZlcmVuY2VJbXBsLmphdmEKK2luZGV4IDAxMjFhY2EwLi43Y2QxNTFjOCAxMDA2NDQKKy0tLSBh L2Jhc2Uvc3JjL21haW4vamF2YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZVJl ZmVyZW5jZUltcGwuamF2YQorKysrIGIvYmFzZS9zcmMvbWFpbi9qYXZhL29yZy9tb3ppbGxhL2pz cy9zc2wvamF2YXgvSlNTRW5naW5lUmVmZXJlbmNlSW1wbC5qYXZhCitAQCAtMTM4Miw2ICsxMzgy LDE2IEBAIHB1YmxpYyBjbGFzcyBKU1NFbmdpbmVSZWZlcmVuY2VJbXBsIGV4dGVuZHMgSlNTRW5n aW5lIHsKKyAgICAgICAgICAgICAgICAgICAgIHNlZW5fZXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAvLyBUTFMgMS4z IHBvc3QtaGFuZHNoYWtlIGF1dGg6IFBSLlJlYWQoKSBtYXkgaGF2ZSBwcm9jZXNzZWQgYQorKyAg ICAgICAgICAgIC8vIENlcnRpZmljYXRlUmVxdWVzdCwgcHV0dGluZyB0aGUgQ2VydGlmaWNhdGUg cmVzcG9uc2UgaW4gd3JpdGVfYnVmLgorKyAgICAgICAgICAgIC8vIEJyZWFrIHNvIHRoZSBjYWxs ZXIgY2FuIGNhbGwgd3JhcCgpIHRvIHNlbmQgaXQuCisrICAgICAgICAgICAgaWYgKGhhbmRzaGFr ZV9hbHJlYWR5X2NvbXBsZXRlICYmICFzZWVuX2V4Y2VwdGlvbgorKyAgICAgICAgICAgICAgICAm JiBCdWZmZXIuUmVhZENhcGFjaXR5KHdyaXRlX2J1ZikgPiAwKSB7CisrICAgICAgICAgICAgICAg IGhhbmRzaGFrZV9zdGF0ZSA9IFNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMuTkVFRF9X UkFQOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrCisgICAgICAg ICB9IHdoaWxlICh0aGlzX3NyY193cml0ZSAhPSAwIHx8IHRoaXNfZHN0X3dyaXRlICE9IDApOwor IAorICAgICAgICAgU1NMRXhjZXB0aW9uIGNoZWNrRXhjZXB0aW9uID0gY2hlY2tTU0xBbGVydHMo KTsKK2RpZmYgLS1naXQgYS9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21vemlsbGEvanNzL3NzbC9q YXZheC9KU1NTb2NrZXRDaGFubmVsLmphdmEgYi9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21vemls bGEvanNzL3NzbC9qYXZheC9KU1NTb2NrZXRDaGFubmVsLmphdmEKK2luZGV4IGE1ZTU3NDA3Li5l OWIzZTZhMyAxMDA2NDQKKy0tLSBhL2Jhc2Uvc3JjL21haW4vamF2YS9vcmcvbW96aWxsYS9qc3Mv c3NsL2phdmF4L0pTU1NvY2tldENoYW5uZWwuamF2YQorKysrIGIvYmFzZS9zcmMvbWFpbi9qYXZh L29yZy9tb3ppbGxhL2pzcy9zc2wvamF2YXgvSlNTU29ja2V0Q2hhbm5lbC5qYXZhCitAQCAtNDcs NiArNDcsNyBAQCBwdWJsaWMgY2xhc3MgSlNTU29ja2V0Q2hhbm5lbCBleHRlbmRzIFNvY2tldENo YW5uZWwgeworICAgICBwcml2YXRlIEJ5dGVCdWZmZXIgd3JpdGVCdWZmZXI7CisgCisgICAgIHBy aXZhdGUgYm9vbGVhbiBoYW5kc2hha2VDb21wbGV0ZWQgPSBmYWxzZTsKKysgICAgcHJpdmF0ZSBi b29sZWFuIHBlbmRpbmdQb3N0SGFuZHNoYWtlID0gZmFsc2U7CisgCisgICAgIHB1YmxpYyBKU1NT b2NrZXRDaGFubmVsKEpTU1NvY2tldCBzc2xTb2NrZXQsIFNvY2tldENoYW5uZWwgcGFyZW50LCBT b2NrZXQgcGFyZW50U29ja2V0LCBSZWFkYWJsZUJ5dGVDaGFubmVsIHJlYWRDaGFubmVsLCBXcml0 YWJsZUJ5dGVDaGFubmVsIHdyaXRlQ2hhbm5lbCwgSlNTRW5naW5lIGVuZ2luZSkgdGhyb3dzIElP RXhjZXB0aW9uIHsKKyAgICAgICAgIHN1cGVyKG51bGwpOworQEAgLTI1MSw2ICsyNTIsMTAgQEAg cHVibGljIGNsYXNzIEpTU1NvY2tldENoYW5uZWwgZXh0ZW5kcyBTb2NrZXRDaGFubmVsIHsKKyAg ICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9CisgCisrICAgICAgICBpZiAocGVuZGlu Z1Bvc3RIYW5kc2hha2UpIHsKKysgICAgICAgICAgICBmbHVzaFBvc3RIYW5kc2hha2UoKTsKKysg ICAgICAgIH0KKysKKyAgICAgICAgIGxvbmcgdW53cmFwcGVkID0gMDsKKyAgICAgICAgIGxvbmcg ZGVjcnlwdGVkID0gMDsKKyAKK0BAIC0yOTgsNiArMzAzLDEyIEBAIHB1YmxpYyBjbGFzcyBKU1NT b2NrZXRDaGFubmVsIGV4dGVuZHMgU29ja2V0Q2hhbm5lbCB7CisgCisgICAgICAgICAgICAgICAg IHJlYWRCdWZmZXIuY29tcGFjdCgpOworIAorKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgVExT IDEuMyBwb3N0LWhhbmRzaGFrZSBhdXRoIChDZXJ0aWZpY2F0ZVJlcXVlc3QpCisrICAgICAgICAg ICAgICAgIGlmIChyZXN1bHQuZ2V0SGFuZHNoYWtlU3RhdHVzKCkgPT0gU1NMRW5naW5lUmVzdWx0 LkhhbmRzaGFrZVN0YXR1cy5ORUVEX1dSQVAKKysgICAgICAgICAgICAgICAgICAgICYmIGhhbmRz aGFrZUNvbXBsZXRlZCkgeworKyAgICAgICAgICAgICAgICAgICAgZmx1c2hQb3N0SGFuZHNoYWtl KCk7CisrICAgICAgICAgICAgICAgIH0KKysKKyAgICAgICAgICAgICAgICAgLy8gSWYgd2UgY29u c3VtZWQgYnl0ZXMsIHRoZXJlIGlzIG5vdyByb29tIGluIHJlYWRCdWZmZXIgZm9yIHNvbWUKKyAg ICAgICAgICAgICAgICAgLy8gbW9yZS4gIEV2ZW4gaWYgZHN0cyBhcmUgZnVsbCwgd2UgbWF5IGJl IGFibGUgdG8gY29uc3VtZSBtb3JlCisgICAgICAgICAgICAgICAgIC8vIGJ5dGVzIGluIGFub3Ro ZXIgY2FsbCB0byB1bndyYXAoKS4KK0BAIC0zMTYsMTIgKzMyNywzOSBAQCBwdWJsaWMgY2xhc3Mg SlNTU29ja2V0Q2hhbm5lbCBleHRlbmRzIFNvY2tldENoYW5uZWwgeworICAgICAgICAgcmV0dXJu IChpbnQpIHdyaXRlKG5ldyBCeXRlQnVmZmVyW10geyBzcmMgfSk7CisgICAgIH0KKyAKKysgICAg cHJpdmF0ZSB2b2lkIGZsdXNoUG9zdEhhbmRzaGFrZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7Cisr ICAgICAgICBpZiAoIXBlbmRpbmdQb3N0SGFuZHNoYWtlKSB7CisrICAgICAgICAgICAgd3JpdGVC dWZmZXIuY2xlYXIoKTsKKysgICAgICAgIH0KKysgICAgICAgIFNTTEVuZ2luZVJlc3VsdCB3cjsK KysgICAgICAgIGRvIHsKKysgICAgICAgICAgICB3ciA9IGVuZ2luZS53cmFwKG5ldyBCeXRlQnVm ZmVyWzBdLCAwLCAwLCB3cml0ZUJ1ZmZlcik7CisrICAgICAgICAgICAgd3JpdGVCdWZmZXIuZmxp cCgpOworKyAgICAgICAgICAgIHdoaWxlICh3cml0ZUJ1ZmZlci5oYXNSZW1haW5pbmcoKSkgewor KyAgICAgICAgICAgICAgICBpbnQgbiA9IHdyaXRlQ2hhbm5lbC53cml0ZSh3cml0ZUJ1ZmZlcik7 CisrICAgICAgICAgICAgICAgIGlmIChuID09IDApIHsKKysgICAgICAgICAgICAgICAgICAgIHdy aXRlQnVmZmVyLmNvbXBhY3QoKTsKKysgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdQb3N0SGFu ZHNoYWtlID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICB3cml0ZUJ1ZmZlci5jb21wYWN0 KCk7CisrICAgICAgICB9IHdoaWxlICh3ci5nZXRIYW5kc2hha2VTdGF0dXMoKSA9PSBTU0xFbmdp bmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURfV1JBUCk7CisrICAgICAgICBwZW5kaW5nUG9z dEhhbmRzaGFrZSA9IGZhbHNlOworKyAgICB9CisrCisgICAgIEBPdmVycmlkZQorICAgICBwdWJs aWMgc3luY2hyb25pemVkIGxvbmcgd3JpdGUoQnl0ZUJ1ZmZlcltdIHNyY3MsIGludCBvZmZzZXQs IGludCBsZW5ndGgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICBpZiAob3V0Ym91bmRD bG9zZWQpIHsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9CisgCisrICAgICAg ICBpZiAocGVuZGluZ1Bvc3RIYW5kc2hha2UpIHsKKysgICAgICAgICAgICBmbHVzaFBvc3RIYW5k c2hha2UoKTsKKysgICAgICAgICAgICBpZiAocGVuZGluZ1Bvc3RIYW5kc2hha2UpIHsKKysgICAg ICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorICAgICAg ICAgd3JpdGVCdWZmZXIuY2xlYXIoKTsKKyAKKyAgICAgICAgIEJ5dGVCdWZmZXIgZHN0ID0gd3Jp dGVCdWZmZXI7CistLSAKKzIuNTUuMAorCgpkaWZmIC0tZ2l0IGEvMDAwMi1JbnRlZ3JhdGUtcG9z dC1oYW5kc2hha2UtYXV0aC1pbnRvLXRoZS1oYW5kc2hha2Utc3RhLnBhdGNoIGIvMDAwMi1JbnRl Z3JhdGUtcG9zdC1oYW5kc2hha2UtYXV0aC1pbnRvLXRoZS1oYW5kc2hha2Utc3RhLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZjUxMDEKLS0tIC9kZXYvbnVsbAor KysgYi8wMDAyLUludGVncmF0ZS1wb3N0LWhhbmRzaGFrZS1hdXRoLWludG8tdGhlLWhhbmRzaGFr ZS1zdGEucGF0Y2gKQEAgLTAsMCArMSwzMjQgQEAKK0Zyb20gYTg5Njg5ZGY2ZDcwMWYxMTZiN2Qz MzgwYWUxNWQ0ZTY1M2FlNTcwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmNv IEZhcmdldHRhIDxtZmFyZ2V0dEByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAxNyBBdWcgMjAyNiAx OTozNjo0NCArMDIwMAorU3ViamVjdDogW1BBVENIIDIvM10gSW50ZWdyYXRlIHBvc3QtaGFuZHNo YWtlIGF1dGggaW50byB0aGUgaGFuZHNoYWtlIHN0YXRlCisgbWFjaGluZQorCitUaGUgcHJldmlv dXMgZml4IGJyb2tlIG91dCBvZiB0aGUgdW53cmFwKCkgZG8td2hpbGUgbG9vcCBhcyBhCitzcGVj aWFsIGNhc2Ugd2hlbiB3cml0ZV9idWYgZ3JldyBhZnRlciBhIGNvbXBsZXRlZCBoYW5kc2hha2Us IGFuZAorYWRkZWQgZmx1c2hQb3N0SGFuZHNoYWtlKCkgYXMgYSBzZXBhcmF0ZSwgcGFyYWxsZWwg cGF0aCBvdXRzaWRlIHRoZQorbm9ybWFsIGhhbmRzaGFrZSBzdGF0ZSBtYWNoaW5lLiBUaGlzIGxl ZnQgc2V2ZXJhbCBnYXBzOiBORUVEX1RBU0sKK3dhcyBub3QgZnVsbHkgZHJpdmVuIGR1cmluZyBm bHVzaCwgd3JhcCgpIGhhZCBubyBzdGF0dXMgY2hlY2sgYW5kCitjb3VsZCBzcGluIG9uIEJVRkZF Ul9PVkVSRkxPVywgYW5kIHdyaXRlX2J1ZiBncm93dGggYWxvbmUgY291bGQgbm90CitkaXN0aW5n dWlzaCBnZW51aW5lIHBvc3QtaGFuZHNoYWtlIGF1dGggZnJvbSBvcmRpbmFyeSBsZWZ0b3Zlcgor Y2lwaGVydGV4dC4KKworRm9sZCBwb3N0LWhhbmRzaGFrZSBhdXRoIGludG8gdXBkYXRlSGFuZHNo YWtlU3RhdGUoKSBzbyBpdCBpcworaGFuZGxlZCBieSB0aGUgc2FtZSBORUVEX1dSQVAvTkVFRF9U QVNLIG1hY2hpbmVyeSBhcyB0aGUgaW5pdGlhbAoraGFuZHNoYWtlLCBhZGQgYSBwb3N0X2hhbmRz aGFrZV9hdXRoX3BlbmRpbmcgZmxhZyAoc2V0IG9ubHkgd2hlbgorUFIuUmVhZCgpIGRlbW9uc3Ry YWJseSBncm93cyB3cml0ZV9idWYpIHRvIGRpc2FtYmlndWF0ZSBpdCBmcm9tCitsZWZ0b3ZlciBj aXBoZXJ0ZXh0LCBhbmQgaGFyZGVuIGZsdXNoUG9zdEhhbmRzaGFrZSgpIHdpdGggc3RhdHVzCitj aGVja3MsIHN0YWxsIGRldGVjdGlvbiwgYW5kIGZ1bGwgTkVFRF9UQVNLIGhhbmRsaW5nIHNvIG5v bi1ibG9ja2luZworY2hhbm5lbHMgcmV0cnkgY29ycmVjdGx5IGluc3RlYWQgb2Ygc3Bpbm5pbmcu CisKK0Fzc2lzdGVkLUJ5OiBDbGF1ZGUgT3B1cyA0LjYgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4K Ky0tLQorIC4uLi9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZS5qYXZhICB8ICAx MSArKworIC4uLi9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZVJlZmVyZW5jZUltcGwuamF2YSB8ICA1 MCArKysrKysrKy0KKyAuLi4vanNzL3NzbC9qYXZheC9KU1NTb2NrZXRDaGFubmVsLmphdmEgICAg ICAgfCAxMDAgKysrKysrKysrKysrKystLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0 aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iYXNlL3NyYy9tYWluL2ph dmEvb3JnL21vemlsbGEvanNzL3NzbC9qYXZheC9KU1NFbmdpbmUuamF2YSBiL2Jhc2Uvc3JjL21h aW4vamF2YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZS5qYXZhCitpbmRleCAz MjlkY2QxYy4uMjQ1YzAxOGIgMTAwNjQ0CistLS0gYS9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21v emlsbGEvanNzL3NzbC9qYXZheC9KU1NFbmdpbmUuamF2YQorKysrIGIvYmFzZS9zcmMvbWFpbi9q YXZhL29yZy9tb3ppbGxhL2pzcy9zc2wvamF2YXgvSlNTRW5naW5lLmphdmEKK0BAIC0yMDAsNiAr MjAwLDEzIEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBKU1NFbmdpbmUgZXh0ZW5kcyBqYXZheC5u ZXQuc3NsLlNTTEVuZ2luZSB7CisgICAgICAqLworICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc19p bmJvdW5kX2Nsb3NlZDsKKyAKKysgICAgLyoqCisrICAgICAqIFdoZXRoZXIgUFIuUmVhZCgpIGlu c2lkZSB1bndyYXAoKSBkZXRlY3RlZCBhIFRMUyAxLjMgcG9zdC1oYW5kc2hha2UKKysgICAgICog YXV0aCBldmVudCAoZS5nLiBDZXJ0aWZpY2F0ZVJlcXVlc3QpIHRoYXQgcHJvZHVjZWQgbmV3IGRh dGEgaW4KKysgICAgICogd3JpdGVfYnVmLiBDbGVhcmVkIGFmdGVyIHdyYXAoKSBkcmFpbnMgdGhl IHJlc3BvbnNlLgorKyAgICAgKi8KKysgICAgcHJvdGVjdGVkIGJvb2xlYW4gcG9zdF9oYW5kc2hh a2VfYXV0aF9wZW5kaW5nOworKworICAgICAvKioKKyAgICAgICogU2V0IG9mIGNvbmZpZ3VyYXRp b24gb3B0aW9ucyB0byBlbmFibGUgdmlhIFNTTF9PcHRpb25TZXQoLi4uKS4KKyAgICAgICovCitA QCAtMTA2Niw2ICsxMDczLDEwIEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBKU1NFbmdpbmUgZXh0 ZW5kcyBqYXZheC5uZXQuc3NsLlNTTEVuZ2luZSB7CisgICAgICAgICByZXR1cm4gaXNfb3V0Ym91 bmRfY2xvc2VkOworICAgICB9CisgCisrICAgIHB1YmxpYyBib29sZWFuIGlzUG9zdEhhbmRzaGFr ZUF1dGhQZW5kaW5nKCkgeworKyAgICAgICAgcmV0dXJuIHBvc3RfaGFuZHNoYWtlX2F1dGhfcGVu ZGluZzsKKysgICAgfQorKworICAgICAvKioKKyAgICAgICogR2V0cyB0aGUgY3VycmVudCBzZWN1 cml0eSBzdGF0dXMgb2YgdGhpcyBKU1NFbmdpbmUgaW5zdGFuY2UuCisgICAgICAqCitkaWZmIC0t Z2l0IGEvYmFzZS9zcmMvbWFpbi9qYXZhL29yZy9tb3ppbGxhL2pzcy9zc2wvamF2YXgvSlNTRW5n aW5lUmVmZXJlbmNlSW1wbC5qYXZhIGIvYmFzZS9zcmMvbWFpbi9qYXZhL29yZy9tb3ppbGxhL2pz cy9zc2wvamF2YXgvSlNTRW5naW5lUmVmZXJlbmNlSW1wbC5qYXZhCitpbmRleCA3Y2QxNTFjOC4u MTQwODZjYmEgMTAwNjQ0CistLS0gYS9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21vemlsbGEvanNz L3NzbC9qYXZheC9KU1NFbmdpbmVSZWZlcmVuY2VJbXBsLmphdmEKKysrKyBiL2Jhc2Uvc3JjL21h aW4vamF2YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZVJlZmVyZW5jZUltcGwu amF2YQorQEAgLTExMjYsNiArMTEyNiwxNCBAQCBwdWJsaWMgY2xhc3MgSlNTRW5naW5lUmVmZXJl bmNlSW1wbCBleHRlbmRzIEpTU0VuZ2luZSB7CisgCisgICAgICAgICAgICAgc3NsX2V4Y2VwdGlv biA9IGNoZWNrU1NMQWxlcnRzKCk7CisgICAgICAgICAgICAgc2Vlbl9leGNlcHRpb24gPSAoc3Ns X2V4Y2VwdGlvbiAhPSBudWxsKTsKKysKKysgICAgICAgICAgICAvLyBUTFMgMS4zIHBvc3QtaGFu ZHNoYWtlOiBOU1MgbWF5IGhhdmUgcXVldWVkIHJlc3BvbnNlIGRhdGEKKysgICAgICAgICAgICAv LyAoZS5nLiBDZXJ0aWZpY2F0ZSBmb3IgYSBDZXJ0aWZpY2F0ZVJlcXVlc3QpLgorKyAgICAgICAg ICAgIGlmICghc2Vlbl9leGNlcHRpb24gJiYgQnVmZmVyLlJlYWRDYXBhY2l0eSh3cml0ZV9idWYp ID4gMCkgeworKyAgICAgICAgICAgICAgICBkZWJ1ZygiSlNTRW5naW5lLnVwZGF0ZUhhbmRzaGFr ZVN0YXRlKCkgLSBwb3N0LWhhbmRzaGFrZSBORUVEX1dSQVAiKTsKKysgICAgICAgICAgICAgICAg aGFuZHNoYWtlX3N0YXRlID0gU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cy5ORUVEX1dS QVA7CisrICAgICAgICAgICAgfQorKworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0K KyAKK0BAIC0xMTUyLDYgKzExNjAsMjYgQEAgcHVibGljIGNsYXNzIEpTU0VuZ2luZVJlZmVyZW5j ZUltcGwgZXh0ZW5kcyBKU1NFbmdpbmUgeworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg IH0KKyAKKysgICAgICAgIC8vIFBvc3QtaGFuZHNoYWtlIHN0YXRlOiB0aGUgaW5pdGlhbCBoYW5k c2hha2UgY29tcGxldGVkIGJ1dAorKyAgICAgICAgLy8gaGFuZHNoYWtlX3N0YXRlIGlzIG5vdCBO T1RfSEFORFNIQUtJTkcgb3IgRklOSVNIRUQgKGUuZy4gc2V0IHRvCisrICAgICAgICAvLyBORUVE X1dSQVAgYnkgdGhlIHdyaXRlX2J1ZiBjaGVjayBhYm92ZSkuIFRyYW5zaXRpb24gYmFjayB0bwor KyAgICAgICAgLy8gTk9UX0hBTkRTSEFLSU5HIG9uY2Ugd3JpdGVfYnVmIGlzIGRyYWluZWQ7IGRv IE5PVCBmYWxsIHRocm91Z2gKKysgICAgICAgIC8vIHRvIEZvcmNlSGFuZHNoYWtlL2ZpcmVIYW5k c2hha2VDb21wbGV0ZS4KKysgICAgICAgIGlmICghc3RlcF9oYW5kc2hha2UgJiYgc3NsX2ZkLmhh bmRzaGFrZUNvbXBsZXRlKSB7CisrICAgICAgICAgICAgZGVidWcoIkpTU0VuZ2luZS51cGRhdGVI YW5kc2hha2VTdGF0ZSgpIC0gcG9zdC1oYW5kc2hha2UsIHdyaXRlX2J1Zi5yZWFkPSIgKyBCdWZm ZXIuUmVhZENhcGFjaXR5KHdyaXRlX2J1ZikpOworKyAgICAgICAgICAgIHVua25vd25fc3RhdGVf Y291bnQgPSAwOworKworKyAgICAgICAgICAgIHNzbF9leGNlcHRpb24gPSBjaGVja1NTTEFsZXJ0 cygpOworKyAgICAgICAgICAgIHNlZW5fZXhjZXB0aW9uID0gKHNzbF9leGNlcHRpb24gIT0gbnVs bCk7CisrCisrICAgICAgICAgICAgaWYgKCFzZWVuX2V4Y2VwdGlvbiAmJiBCdWZmZXIuUmVhZENh cGFjaXR5KHdyaXRlX2J1ZikgPiAwKSB7CisrICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9zdGF0 ZSA9IFNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMuTkVFRF9XUkFQOworKyAgICAgICAg ICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9zdGF0ZSA9IFNTTEVuZ2lu ZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMuTk9UX0hBTkRTSEFLSU5HOworKyAgICAgICAgICAgIH0K KysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrCisgICAgICAgICAvLyBTaW5jZSB3 ZSdyZSBub3Qgb2J2aW91c2x5IGRvbmUgaGFuZHNoYWtpbmcsIGFuZCB0aGUgbGFzdCB0aW1lIHdl CisgICAgICAgICAvLyB3ZXJlIGNhbGxlZCwgd2Ugd2VyZSBzdGlsbCBoYW5kc2hha2luZywgc3Rl cCB0aGUgaGFuZHNoYWtlLgorICAgICAgICAgZGVidWcoIkpTU0VuZ2luZS51cGRhdGVIYW5kc2hh a2VTdGF0ZSgpIC0gZm9yY2luZyBoYW5kc2hha2UiKTsKK0BAIC0xMzYzLDYgKzEzOTEsNyBAQCBw dWJsaWMgY2xhc3MgSlNTRW5naW5lUmVmZXJlbmNlSW1wbCBleHRlbmRzIEpTU0VuZ2luZSB7Cisg ICAgICAgICAgICAgdXBkYXRlSGFuZHNoYWtlU3RhdGUoKTsKKyAKKyAgICAgICAgICAgICBpbnQg bWF4X2RzdF9zaXplID0gY29tcHV0ZVNpemUoZHN0cywgb2Zmc2V0LCBsZW5ndGgpOworKyAgICAg ICAgICAgIGxvbmcgd3JpdGVfYnVmX2JlZm9yZSA9IEJ1ZmZlci5SZWFkQ2FwYWNpdHkod3JpdGVf YnVmKTsKKyAgICAgICAgICAgICBieXRlW10gYXBwX2J1ZmZlciA9IFBSLlJlYWQoc3NsX2ZkLCBt YXhfZHN0X3NpemUpOworICAgICAgICAgICAgIGludCBlcnJvciA9IFBSLkdldEVycm9yKCk7Cisg ICAgICAgICAgICAgZGVidWcoIkpTU0VuZ2luZS51bndyYXAoKSAtICIgKyBhcHBfYnVmZmVyICsg IiBlcnJvcj0iICsgZXJyb3JUZXh0KGVycm9yKSk7CitAQCAtMTM4MywxMiArMTQxMiwyMiBAQCBw dWJsaWMgY2xhc3MgSlNTRW5naW5lUmVmZXJlbmNlSW1wbCBleHRlbmRzIEpTU0VuZ2luZSB7Cisg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgCisrICAgICAgICAgICAgLy8gVExT IDEuMyBwb3N0LWhhbmRzaGFrZSBhdXRoOiBQUi5SZWFkKCkgbWF5IGhhdmUgdHJpZ2dlcmVkIHRo ZQorKyAgICAgICAgICAgIC8vIGFzeW5jIGNlcnQtYXV0aCBjYWxsYmFjayAoZS5nLiB2YWxpZGF0 aW5nIGEgY2xpZW50J3MKKysgICAgICAgICAgICAvLyBwb3N0LWhhbmRzaGFrZSBjZXJ0aWZpY2F0 ZSkgd2l0aG91dCBwcm9kdWNpbmcgYW55IHdyaXRlX2J1ZgorKyAgICAgICAgICAgIC8vIG91dHB1 dC4gUmVwb3J0IE5FRURfVEFTSyBoZXJlIHNpbmNlIHJlc3VsdC5nZXRIYW5kc2hha2VTdGF0dXMo KQorKyAgICAgICAgICAgIC8vICh1bmxpa2UgZW5naW5lLmdldEhhbmRzaGFrZVN0YXR1cygpKSB3 b24ndCBvdGhlcndpc2UgcmVmbGVjdCBpdC4KKysgICAgICAgICAgICBpZiAoY2hlY2tOZWVkQ2Vy dFZhbGlkYXRpb24oKSkgeworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9 CisrCisgICAgICAgICAgICAgLy8gVExTIDEuMyBwb3N0LWhhbmRzaGFrZSBhdXRoOiBQUi5SZWFk KCkgbWF5IGhhdmUgcHJvY2Vzc2VkIGEKKyAgICAgICAgICAgICAvLyBDZXJ0aWZpY2F0ZVJlcXVl c3QsIHB1dHRpbmcgdGhlIENlcnRpZmljYXRlIHJlc3BvbnNlIGluIHdyaXRlX2J1Zi4KKy0gICAg ICAgICAgICAvLyBCcmVhayBzbyB0aGUgY2FsbGVyIGNhbiBjYWxsIHdyYXAoKSB0byBzZW5kIGl0 LgorKyAgICAgICAgICAgIC8vIERldGVjdCB0aGlzIGJ5IGNoZWNraW5nIGlmIFBSLlJlYWQoKSBp bmNyZWFzZWQgd3JpdGVfYnVmLgorICAgICAgICAgICAgIGlmIChoYW5kc2hha2VfYWxyZWFkeV9j b21wbGV0ZSAmJiAhc2Vlbl9leGNlcHRpb24KKy0gICAgICAgICAgICAgICAgJiYgQnVmZmVyLlJl YWRDYXBhY2l0eSh3cml0ZV9idWYpID4gMCkgeworKyAgICAgICAgICAgICAgICAmJiBCdWZmZXIu UmVhZENhcGFjaXR5KHdyaXRlX2J1ZikgPiB3cml0ZV9idWZfYmVmb3JlKSB7CisgICAgICAgICAg ICAgICAgIGhhbmRzaGFrZV9zdGF0ZSA9IFNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMu TkVFRF9XUkFQOworKyAgICAgICAgICAgICAgICBwb3N0X2hhbmRzaGFrZV9hdXRoX3BlbmRpbmcg PSB0cnVlOworICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICB9CisgCitAQCAt MTQxNyw3ICsxNDU2LDggQEAgcHVibGljIGNsYXNzIEpTU0VuZ2luZVJlZmVyZW5jZUltcGwgZXh0 ZW5kcyBKU1NFbmdpbmUgeworICAgICAgICAgaWYgKGlzX2luYm91bmRfY2xvc2VkKSB7CisgICAg ICAgICAgICAgZGVidWcoIlNvY2tldCBpcyBjdXJyZW50bHkgY2xvc2VkLiIpOworICAgICAgICAg ICAgIGhhbmRzaGFrZV9zdGF0dXMgPSBTU0xFbmdpbmVSZXN1bHQuU3RhdHVzLkNMT1NFRDsKKy0g ICAgICAgIH0gZWxzZSBpZiAoaGFuZHNoYWtlX2FscmVhZHlfY29tcGxldGUgJiYgc3JjX2NhcGFj aXR5ID4gMCAmJiBhcHBfZGF0YSA9PSAwKSB7CisrICAgICAgICB9IGVsc2UgaWYgKGhhbmRzaGFr ZV9hbHJlYWR5X2NvbXBsZXRlICYmIHNyY19jYXBhY2l0eSA+IDAgJiYgYXBwX2RhdGEgPT0gMAor KyAgICAgICAgICAgICAgICAgICAmJiBoYW5kc2hha2Vfc3RhdGUgIT0gU1NMRW5naW5lUmVzdWx0 LkhhbmRzaGFrZVN0YXR1cy5ORUVEX1dSQVApIHsKKyAgICAgICAgICAgICBkZWJ1ZygiVW5kZXJm bG93ZWQ6IHByb2R1Y2VkIG5vIGFwcGxpY2F0aW9uIGRhdGEgd2hlbiB3ZSBleHBlY3RlZCB0by4i KTsKKyAgICAgICAgICAgICBoYW5kc2hha2Vfc3RhdHVzID0gU1NMRW5naW5lUmVzdWx0LlN0YXR1 cy5CVUZGRVJfVU5ERVJGTE9XOworICAgICAgICAgfQorQEAgLTE3MDYsNiArMTc0NiwxMCBAQCBw dWJsaWMgY2xhc3MgSlNTRW5naW5lUmVmZXJlbmNlSW1wbCBleHRlbmRzIEpTU0VuZ2luZSB7Cisg ICAgICAgICAgICAgfQorICAgICAgICAgfSB3aGlsZSAodGhpc19zcmNfd3JpdGUgIT0gMCB8fCB0 aGlzX2RzdF93cml0ZSAhPSAwKTsKKyAKKysgICAgICAgIGlmIChwb3N0X2hhbmRzaGFrZV9hdXRo X3BlbmRpbmcgJiYgQnVmZmVyLlJlYWRDYXBhY2l0eSh3cml0ZV9idWYpID09IDApIHsKKysgICAg ICAgICAgICBwb3N0X2hhbmRzaGFrZV9hdXRoX3BlbmRpbmcgPSBmYWxzZTsKKysgICAgICAgIH0K KysKKyAgICAgICAgIC8vIENoZWNrIGZvciBuZXcgb3V0Ym91bmQgYWxlcnRzIHRvIHRoZSBwZWVy IGFuZCBmaXJlIHRoZSByZWxhdGVkIGV2ZW50cworICAgICAgICAgU1NMRXhjZXB0aW9uIG5ld1NT TEV4Y2VwdGlvbiA9IGNoZWNrU1NMQWxlcnRzKCk7CisgICAgICAgICBpZiAoIXNlZW5fZXhjZXB0 aW9uICYmIHNzbF9leGNlcHRpb24gPT0gbnVsbCAmJiBuZXdTU0xFeGNlcHRpb24gIT0gbnVsbCkg eworZGlmZiAtLWdpdCBhL2Jhc2Uvc3JjL21haW4vamF2YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2ph dmF4L0pTU1NvY2tldENoYW5uZWwuamF2YSBiL2Jhc2Uvc3JjL21haW4vamF2YS9vcmcvbW96aWxs YS9qc3Mvc3NsL2phdmF4L0pTU1NvY2tldENoYW5uZWwuamF2YQoraW5kZXggZTliM2U2YTMuLjVh NzFlYzNhIDEwMDY0NAorLS0tIGEvYmFzZS9zcmMvbWFpbi9qYXZhL29yZy9tb3ppbGxhL2pzcy9z c2wvamF2YXgvSlNTU29ja2V0Q2hhbm5lbC5qYXZhCisrKysgYi9iYXNlL3NyYy9tYWluL2phdmEv b3JnL21vemlsbGEvanNzL3NzbC9qYXZheC9KU1NTb2NrZXRDaGFubmVsLmphdmEKK0BAIC00Nyw3 ICs0Nyw3IEBAIHB1YmxpYyBjbGFzcyBKU1NTb2NrZXRDaGFubmVsIGV4dGVuZHMgU29ja2V0Q2hh bm5lbCB7CisgICAgIHByaXZhdGUgQnl0ZUJ1ZmZlciB3cml0ZUJ1ZmZlcjsKKyAKKyAgICAgcHJp dmF0ZSBib29sZWFuIGhhbmRzaGFrZUNvbXBsZXRlZCA9IGZhbHNlOworLSAgICBwcml2YXRlIGJv b2xlYW4gcGVuZGluZ1Bvc3RIYW5kc2hha2UgPSBmYWxzZTsKKysgICAgcHJpdmF0ZSBib29sZWFu IHBvc3RIYW5kc2hha2VQZW5kaW5nID0gZmFsc2U7CisgCisgICAgIHB1YmxpYyBKU1NTb2NrZXRD aGFubmVsKEpTU1NvY2tldCBzc2xTb2NrZXQsIFNvY2tldENoYW5uZWwgcGFyZW50LCBTb2NrZXQg cGFyZW50U29ja2V0LCBSZWFkYWJsZUJ5dGVDaGFubmVsIHJlYWRDaGFubmVsLCBXcml0YWJsZUJ5 dGVDaGFubmVsIHdyaXRlQ2hhbm5lbCwgSlNTRW5naW5lIGVuZ2luZSkgdGhyb3dzIElPRXhjZXB0 aW9uIHsKKyAgICAgICAgIHN1cGVyKG51bGwpOworQEAgLTI1MiwxNCArMjUyLDE4IEBAIHB1Ymxp YyBjbGFzcyBKU1NTb2NrZXRDaGFubmVsIGV4dGVuZHMgU29ja2V0Q2hhbm5lbCB7CisgICAgICAg ICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfQorIAorLSAgICAgICAgaWYgKHBlbmRpbmdQb3N0 SGFuZHNoYWtlKSB7CistICAgICAgICAgICAgZmx1c2hQb3N0SGFuZHNoYWtlKCk7CistICAgICAg ICB9CistCisgICAgICAgICBsb25nIHVud3JhcHBlZCA9IDA7CisgICAgICAgICBsb25nIGRlY3J5 cHRlZCA9IDA7CisrICAgICAgICBpbnQgcG9zdEhhbmRzaGFrZU9wcyA9IDA7CisgCisgICAgICAg ICB0cnkgeworKyAgICAgICAgICAgIGlmIChwb3N0SGFuZHNoYWtlUGVuZGluZykgeworKyAgICAg ICAgICAgICAgICBmbHVzaFBvc3RIYW5kc2hha2UoKTsKKysgICAgICAgICAgICAgICAgaWYgKHBv c3RIYW5kc2hha2VQZW5kaW5nKSB7CisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysg ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysKKyAgICAgICAgICAgICBTU0xFbmdp bmVSZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgaW50 IG4gPSByZW1vdGVSZWFkKCk7CitAQCAtMzAzLDEwICszMDcsMzkgQEAgcHVibGljIGNsYXNzIEpT U1NvY2tldENoYW5uZWwgZXh0ZW5kcyBTb2NrZXRDaGFubmVsIHsKKyAKKyAgICAgICAgICAgICAg ICAgcmVhZEJ1ZmZlci5jb21wYWN0KCk7CisgCistICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBU TFMgMS4zIHBvc3QtaGFuZHNoYWtlIGF1dGggKENlcnRpZmljYXRlUmVxdWVzdCkKKy0gICAgICAg ICAgICAgICAgaWYgKHJlc3VsdC5nZXRIYW5kc2hha2VTdGF0dXMoKSA9PSBTU0xFbmdpbmVSZXN1 bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURfV1JBUAorLSAgICAgICAgICAgICAgICAgICAgJiYgaGFu ZHNoYWtlQ29tcGxldGVkKSB7CistICAgICAgICAgICAgICAgICAgICBmbHVzaFBvc3RIYW5kc2hh a2UoKTsKKysgICAgICAgICAgICAgICAgLy8gSGFuZGxlIE5FRURfV1JBUCBhbmQgTkVFRF9UQVNL IGFmdGVyIGhhbmRzaGFrZSBjb21wbGV0aW9uLgorKyAgICAgICAgICAgICAgICAvLyBORUVEX1dS QVAgbWF5IGNvbWUgZnJvbSBwb3N0LWhhbmRzaGFrZSBhdXRoIChDZXJ0aWZpY2F0ZVJlcXVlc3Qp CisrICAgICAgICAgICAgICAgIC8vIG9yIGZyb20gbGVmdG92ZXIgY2lwaGVydGV4dCBpbiB3cml0 ZV9idWY7IGJvdGggbmVlZCBmbHVzaGluZywKKysgICAgICAgICAgICAgICAgLy8gYnV0IG9ubHkg Z2VudWluZSBwb3N0LWhhbmRzaGFrZSBhdXRoIGNvdW50cyB0b3dhcmQgdGhlIHNhZmV0eSBsaW1p dC4KKysgICAgICAgICAgICAgICAgaWYgKGhhbmRzaGFrZUNvbXBsZXRlZCkgeworKyAgICAgICAg ICAgICAgICAgICAgU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cyBoc1N0YXR1cyA9IHJl c3VsdC5nZXRIYW5kc2hha2VTdGF0dXMoKTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChoc1N0 YXR1cyA9PSBTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURfV1JBUCkgeworKyAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaXNQb3N0SGFuZHNoYWtlID0gZW5naW5lLmlz UG9zdEhhbmRzaGFrZUF1dGhQZW5kaW5nKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgZmx1 c2hQb3N0SGFuZHNoYWtlKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc3RIYW5k c2hha2VQZW5kaW5nKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWNy eXB0ZWQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChpc1Bvc3RIYW5kc2hha2UpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg cG9zdEhhbmRzaGFrZU9wcysrOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoaHNTdGF0dXMgPT0gU1NMRW5naW5lUmVzdWx0LkhhbmRz aGFrZVN0YXR1cy5ORUVEX1RBU0spIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBSdW5uYWJs ZSB0YXNrID0gZW5naW5lLmdldERlbGVnYXRlZFRhc2soKTsKKysgICAgICAgICAgICAgICAgICAg ICAgICBpZiAodGFzayAhPSBudWxsKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh c2sucnVuKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAg ICAgICAgIHBvc3RIYW5kc2hha2VPcHMrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBB ZnRlciB0YXNrLCBhIE5FRURfV1JBUCBtYXkgZm9sbG93IChlLmcuIHRvIHNlbmQKKysgICAgICAg ICAgICAgICAgICAgICAgICAvLyB0aGUgYXV0aCByZXN1bHQpLiBGbHVzaCBpdCBub3cgbGlrZSBm aW5pc2hDb25uZWN0KCkuCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZ2luZS5nZXRI YW5kc2hha2VTdGF0dXMoKSA9PSBTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURf V1JBUCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHVzaFBvc3RIYW5kc2hha2Uo KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc3RIYW5kc2hha2VQZW5kaW5n KSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVjcnlwdGVkOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAg fQorKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgaWYgKHBvc3RI YW5kc2hha2VPcHMgPiAxMCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJ T0V4Y2VwdGlvbigiRXhjZWVkZWQgbWF4aW11bSBwb3N0LWhhbmRzaGFrZSBvcGVyYXRpb25zIGR1 cmluZyByZWFkIik7CisrICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0K KyAKKyAgICAgICAgICAgICAgICAgLy8gSWYgd2UgY29uc3VtZWQgYnl0ZXMsIHRoZXJlIGlzIG5v dyByb29tIGluIHJlYWRCdWZmZXIgZm9yIHNvbWUKK0BAIC0zMjIsMzAgKzM1NSw1NiBAQCBwdWJs aWMgY2xhc3MgSlNTU29ja2V0Q2hhbm5lbCBleHRlbmRzIFNvY2tldENoYW5uZWwgeworICAgICAg ICAgcmV0dXJuIGRlY3J5cHRlZDsKKyAgICAgfQorIAorLSAgICBAT3ZlcnJpZGUKKy0gICAgcHVi bGljIGludCB3cml0ZShCeXRlQnVmZmVyIHNyYykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKy0gICAg ICAgIHJldHVybiAoaW50KSB3cml0ZShuZXcgQnl0ZUJ1ZmZlcltdIHsgc3JjIH0pOworLSAgICB9 CistCisgICAgIHByaXZhdGUgdm9pZCBmbHVzaFBvc3RIYW5kc2hha2UoKSB0aHJvd3MgSU9FeGNl cHRpb24geworLSAgICAgICAgaWYgKCFwZW5kaW5nUG9zdEhhbmRzaGFrZSkgeworKyAgICAgICAg aWYgKCFwb3N0SGFuZHNoYWtlUGVuZGluZykgeworICAgICAgICAgICAgIHdyaXRlQnVmZmVyLmNs ZWFyKCk7CisgICAgICAgICB9CisrCisgICAgICAgICBTU0xFbmdpbmVSZXN1bHQgd3I7CisrICAg ICAgICBTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzIGhzU3RhdHVzOworICAgICAgICAg ZG8geworICAgICAgICAgICAgIHdyID0gZW5naW5lLndyYXAobmV3IEJ5dGVCdWZmZXJbMF0sIDAs IDAsIHdyaXRlQnVmZmVyKTsKKysKKysgICAgICAgICAgICBpZiAod3IuZ2V0U3RhdHVzKCkgIT0g U1NMRW5naW5lUmVzdWx0LlN0YXR1cy5PSworKyAgICAgICAgICAgICAgICAmJiB3ci5nZXRTdGF0 dXMoKSAhPSBTU0xFbmdpbmVSZXN1bHQuU3RhdHVzLkNMT1NFRCkgeworKyAgICAgICAgICAgICAg ICBwb3N0SGFuZHNoYWtlUGVuZGluZyA9IGZhbHNlOworKyAgICAgICAgICAgICAgICB0aHJvdyBu ZXcgSU9FeGNlcHRpb24oIlVuZXhwZWN0ZWQgc3RhdHVzIGZyb20gcG9zdC1oYW5kc2hha2Ugd3Jh cDogIiArIHdyKTsKKysgICAgICAgICAgICB9CisrCisgICAgICAgICAgICAgd3JpdGVCdWZmZXIu ZmxpcCgpOworICAgICAgICAgICAgIHdoaWxlICh3cml0ZUJ1ZmZlci5oYXNSZW1haW5pbmcoKSkg eworICAgICAgICAgICAgICAgICBpbnQgbiA9IHdyaXRlQ2hhbm5lbC53cml0ZSh3cml0ZUJ1ZmZl cik7CisgICAgICAgICAgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAg IHdyaXRlQnVmZmVyLmNvbXBhY3QoKTsKKy0gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdQb3N0 SGFuZHNoYWtlID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgICAgIHBvc3RIYW5kc2hha2VQZW5k aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpZiAod3IuYnl0ZXNQcm9kdWNl ZCgpID09IDAKKysgICAgICAgICAgICAgICAgJiYgd3IuZ2V0SGFuZHNoYWtlU3RhdHVzKCkgPT0g U1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cy5ORUVEX1dSQVApIHsKKysgICAgICAgICAg ICAgICAgcG9zdEhhbmRzaGFrZVBlbmRpbmcgPSBmYWxzZTsKKysgICAgICAgICAgICAgICAgdGhy b3cgbmV3IElPRXhjZXB0aW9uKCJQb3N0LWhhbmRzaGFrZSB3cmFwIHN0YWxsZWQsIHByb2R1Y2lu ZyBubyBkYXRhIik7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGhzU3RhdHVzID0g d3IuZ2V0SGFuZHNoYWtlU3RhdHVzKCk7CisrICAgICAgICAgICAgaWYgKGhzU3RhdHVzID09IFNT TEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMuTkVFRF9UQVNLKSB7CisrICAgICAgICAgICAg ICAgIFJ1bm5hYmxlIHRhc2sgPSBlbmdpbmUuZ2V0RGVsZWdhdGVkVGFzaygpOworKyAgICAgICAg ICAgICAgICBpZiAodGFzayAhPSBudWxsKSB7CisrICAgICAgICAgICAgICAgICAgICB0YXNrLnJ1 bigpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGhzU3RhdHVzID0gZW5n aW5lLmdldEhhbmRzaGFrZVN0YXR1cygpOworKyAgICAgICAgICAgIH0KKysKKyAgICAgICAgICAg ICB3cml0ZUJ1ZmZlci5jb21wYWN0KCk7CistICAgICAgICB9IHdoaWxlICh3ci5nZXRIYW5kc2hh a2VTdGF0dXMoKSA9PSBTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURfV1JBUCk7 CistICAgICAgICBwZW5kaW5nUG9zdEhhbmRzaGFrZSA9IGZhbHNlOworKyAgICAgICAgfSB3aGls ZSAoaHNTdGF0dXMgPT0gU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cy5ORUVEX1dSQVAp OworKworKyAgICAgICAgcG9zdEhhbmRzaGFrZVBlbmRpbmcgPSBmYWxzZTsKKysgICAgfQorKwor KyAgICBAT3ZlcnJpZGUKKysgICAgcHVibGljIGludCB3cml0ZShCeXRlQnVmZmVyIHNyYykgdGhy b3dzIElPRXhjZXB0aW9uIHsKKysgICAgICAgIHJldHVybiAoaW50KSB3cml0ZShuZXcgQnl0ZUJ1 ZmZlcltdIHsgc3JjIH0pOworICAgICB9CisgCisgICAgIEBPdmVycmlkZQorQEAgLTM1NCwxMiAr NDEzLDEzIEBAIHB1YmxpYyBjbGFzcyBKU1NTb2NrZXRDaGFubmVsIGV4dGVuZHMgU29ja2V0Q2hh bm5lbCB7CisgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfQorIAorLSAgICAgICAg aWYgKHBlbmRpbmdQb3N0SGFuZHNoYWtlKSB7CisrICAgICAgICBpZiAocG9zdEhhbmRzaGFrZVBl bmRpbmcpIHsKKyAgICAgICAgICAgICBmbHVzaFBvc3RIYW5kc2hha2UoKTsKKy0gICAgICAgICAg ICBpZiAocGVuZGluZ1Bvc3RIYW5kc2hha2UpIHsKKysgICAgICAgICAgICBpZiAocG9zdEhhbmRz aGFrZVBlbmRpbmcpIHsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAg fQorICAgICAgICAgfQorKworICAgICAgICAgd3JpdGVCdWZmZXIuY2xlYXIoKTsKKyAKKyAgICAg ICAgIEJ5dGVCdWZmZXIgZHN0ID0gd3JpdGVCdWZmZXI7CistLSAKKzIuNTUuMAorCgpkaWZmIC0t Z2l0IGEvMDAwMy1BZGQtSlNTU29ja2V0Q2hhbm5lbC1UTFMtMS4zLXBvc3QtaGFuZHNoYWtlLWF1 dGgtdGVzLnBhdGNoIGIvMDAwMy1BZGQtSlNTU29ja2V0Q2hhbm5lbC1UTFMtMS4zLXBvc3QtaGFu ZHNoYWtlLWF1dGgtdGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjBlNzZlZWUKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAzLUFkZC1KU1NTb2NrZXRDaGFubmVsLVRM Uy0xLjMtcG9zdC1oYW5kc2hha2UtYXV0aC10ZXMucGF0Y2gKQEAgLTAsMCArMSw0MzEgQEAKK0Zy b20gOGQyZWI0YjAzNTdmNjQ1NjFmN2Q0YmZkNTcwODEwYWFlMWE2ZTA4YyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IEZyYXNlciBUd2VlZGFsZSA8ZnR3ZWVkYWxAcmVkaGF0LmNvbT4K K0RhdGU6IE1vbiwgMzEgQXVnIDIwMjYgMDk6Mzc6MjggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAz LzNdIEFkZCBKU1NTb2NrZXRDaGFubmVsIFRMUyAxLjMgcG9zdC1oYW5kc2hha2UgYXV0aCB0ZXN0 CisKK0FkZCBUZXN0SlNTU29ja2V0Q2hhbm5lbCB3aXRoIHR3byB0ZXN0IG1ldGhvZHM6CisKKy0g dGVzdFBvc3RIYW5kc2hha2VBdXRoOiBzZXJ2ZXIgYW5kIGNsaWVudCBwZXJmb3JtIGFuIGluaXRp YWwgVExTIDEuMworICBoYW5kc2hha2UsIGV4Y2hhbmdlIGRhdGEsIHRoZW4gdGhlIHNlcnZlciB0 cmlnZ2VycyBwb3N0LWhhbmRzaGFrZQorICBjbGllbnQgYXV0aGVudGljYXRpb24gdmlhIHN0YXJ0 SGFuZHNoYWtlKCkuICBWZXJpZmllcyB0aGF0IHRoZQorICBjbGllbnQncyBjZXJ0aWZpY2F0ZSBp cyBwcmVzZW50ZWQgdHJhbnNwYXJlbnRseSB0aHJvdWdoCisgIEpTU1NvY2tldENoYW5uZWwucmVh ZCgpIC0+IGZsdXNoUG9zdEhhbmRzaGFrZSgpLCBhbmQgdGhhdCBkYXRhCisgIGV4Y2hhbmdlIGNv bnRpbnVlcyBub3JtYWxseSBhZnRlcndhcmQuICBJbmNsdWRlcyBhIDMyS0IgdHJhbnNmZXIKKyAg YWZ0ZXIgcG9zdC1oYW5kc2hha2UgYXV0aCBhcyBnZW5lcmFsIGNvdmVyYWdlIGZvciBsYXJnZSB3 cml0ZXMgb24gYQorICBjb25uZWN0aW9uIHRoYXQgaGFzIGJlZW4gdGhyb3VnaCBwb3N0LWhhbmRz aGFrZSBhdXRoLgorCistIHRlc3RNdWx0aXBsZU1lc3NhZ2VzQWZ0ZXJQb3N0SGFuZHNoYWtlQXV0 aDogc2FtZSBzZXR1cCwgdGhlbgorICBwZXJmb3JtcyA1IGFkZGl0aW9uYWwgcmVxdWVzdC9yZXNw b25zZSByb3VuZCB0cmlwcyB0byB2ZXJpZnkgdGhlCisgIGNvbm5lY3Rpb24gcmVtYWlucyBmdWxs eSBmdW5jdGlvbmFsIGFmdGVyIHBvc3QtaGFuZHNoYWtlIGF1dGguCisKK0JvdGggdGVzdHMgdXNl IEpTU1NvY2tldCBvdmVyIGxvb3BiYWNrIHdpdGggSlNTTmF0aXZlVHJ1c3RNYW5hZ2VyIGFuZAor VExTIDEuMyBvbmx5LiAgVGhlIHNlcnZlciBzZW5kcyBhICJkb25lIiBhY2tub3dsZWRnbWVudCBi ZWZvcmUgdGhlCitjbGllbnQgY2xvc2VzLCBwcmV2ZW50aW5nIGEgY2xvc2Vfbm90aWZ5IHJhY2Uu CisKK0Fzc2lzdGVkLUJ5OiBDbGF1ZGUgT3B1cyA0LjYgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4K Ky0tLQorIC4uLi9qc3MvdGVzdHMvVGVzdEpTU1NvY2tldENoYW5uZWwuamF2YSAgICAgICB8IDM3 NSArKysrKysrKysrKysrKysrKysKKyBjbWFrZS9KU1NUZXN0cy5jbWFrZSAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDUgKworIDIgZmlsZXMgY2hhbmdlZCwgMzgwIGluc2VydGlvbnMoKykK KyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFzZS9zcmMvdGVzdC9qYXZhL29yZy9tb3ppbGxhL2pzcy90 ZXN0cy9UZXN0SlNTU29ja2V0Q2hhbm5lbC5qYXZhCisKK2RpZmYgLS1naXQgYS9iYXNlL3NyYy90 ZXN0L2phdmEvb3JnL21vemlsbGEvanNzL3Rlc3RzL1Rlc3RKU1NTb2NrZXRDaGFubmVsLmphdmEg Yi9iYXNlL3NyYy90ZXN0L2phdmEvb3JnL21vemlsbGEvanNzL3Rlc3RzL1Rlc3RKU1NTb2NrZXRD aGFubmVsLmphdmEKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uNTk1ZmM4 NTcKKy0tLSAvZGV2L251bGwKKysrKyBiL2Jhc2Uvc3JjL3Rlc3QvamF2YS9vcmcvbW96aWxsYS9q c3MvdGVzdHMvVGVzdEpTU1NvY2tldENoYW5uZWwuamF2YQorQEAgLTAsMCArMSwzNzUgQEAKKytw YWNrYWdlIG9yZy5tb3ppbGxhLmpzcy50ZXN0czsKKysKKytpbXBvcnQgamF2YS5pby5JT0V4Y2Vw dGlvbjsKKytpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKKytpbXBvcnQgamF2YS5pby5PdXRw dXRTdHJlYW07CisraW1wb3J0IGphdmEubmV0LkluZXRBZGRyZXNzOworK2ltcG9ydCBqYXZhLm5l dC5TZXJ2ZXJTb2NrZXQ7CisraW1wb3J0IGphdmEubmV0LlNvY2tldDsKKytpbXBvcnQgamF2YS5z ZWN1cml0eS5LZXlTdG9yZTsKKytpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKysKKytpbXBvcnQg amF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyOworK2ltcG9ydCBqYXZheC5uZXQuc3NsLktleU1hbmFn ZXJGYWN0b3J5OworK2ltcG9ydCBqYXZheC5uZXQuc3NsLlNTTENvbnRleHQ7CisraW1wb3J0IGph dmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbjsKKytpbXBvcnQgamF2YXgubmV0LnNzbC5UcnVzdE1hbmFn ZXI7CisraW1wb3J0IGphdmF4Lm5ldC5zc2wuWDUwOUtleU1hbmFnZXI7CisraW1wb3J0IGphdmF4 Lm5ldC5zc2wuWDUwOVRydXN0TWFuYWdlcjsKKysKKytpbXBvcnQgb3JnLm1vemlsbGEuanNzLkNy eXB0b01hbmFnZXI7CisraW1wb3J0IG9yZy5tb3ppbGxhLmpzcy5wcm92aWRlci5qYXZheC5jcnlw dG8uSlNTTmF0aXZlVHJ1c3RNYW5hZ2VyOworK2ltcG9ydCBvcmcubW96aWxsYS5qc3Muc3NsLmph dmF4LkpTU1BhcmFtZXRlcnM7CisraW1wb3J0IG9yZy5tb3ppbGxhLmpzcy5zc2wuamF2YXguSlNT U29ja2V0OworKworK3B1YmxpYyBjbGFzcyBUZXN0SlNTU29ja2V0Q2hhbm5lbCB7CisrCisrICAg IHN0YXRpYyBYNTA5S2V5TWFuYWdlcltdIGtleU1hbmFnZXJzOworKyAgICBzdGF0aWMgWDUwOVRy dXN0TWFuYWdlcltdIHRydXN0TWFuYWdlcnM7CisrCisrICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBp bml0aWFsaXplKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworKyAgICAgICAgQ3J5 cHRvTWFuYWdlciBjbSA9IENyeXB0b01hbmFnZXIuZ2V0SW5zdGFuY2UoKTsKKysgICAgICAgIGNt LnNldFBhc3N3b3JkQ2FsbGJhY2sobmV3IEZpbGVQYXNzd29yZENhbGxiYWNrKGFyZ3NbMV0pKTsK KysKKysgICAgICAgIEtleVN0b3JlIGtzID0gS2V5U3RvcmUuZ2V0SW5zdGFuY2UoIlBLQ1MxMSIs ICJNb3ppbGxhLUpTUyIpOworKyAgICAgICAga3MubG9hZChudWxsLCBudWxsKTsKKysgICAgICAg IEtleU1hbmFnZXJGYWN0b3J5IGttZiA9IEtleU1hbmFnZXJGYWN0b3J5LmdldEluc3RhbmNlKCJO c3NYNTA5IiwgIk1vemlsbGEtSlNTIik7CisrICAgICAgICBrbWYuaW5pdChrcywgbnVsbCk7Cisr CisrICAgICAgICBLZXlNYW5hZ2VyW10ga21zID0ga21mLmdldEtleU1hbmFnZXJzKCk7CisrICAg ICAgICBrZXlNYW5hZ2VycyA9IG5ldyBYNTA5S2V5TWFuYWdlcltrbXMubGVuZ3RoXTsKKysgICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwga21zLmxlbmd0aDsgaSsrKSB7CisrICAgICAgICAgICAg a2V5TWFuYWdlcnNbaV0gPSAoWDUwOUtleU1hbmFnZXIpIGttc1tpXTsKKysgICAgICAgIH0KKysK KysgICAgICAgIHRydXN0TWFuYWdlcnMgPSBuZXcgWDUwOVRydXN0TWFuYWdlcltdIHsgbmV3IEpT U05hdGl2ZVRydXN0TWFuYWdlcigpIH07CisrICAgIH0KKysKKysgICAgc3RhdGljIEpTU1NvY2tl dCBjcmVhdGVKU1NTb2NrZXQoU1NMQ29udGV4dCBjdHgsIFNvY2tldCByYXcsIFN0cmluZyBhbGlh cywgYm9vbGVhbiBjbGllbnRNb2RlLCBpbnQgcG9ydCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisrICAg ICAgICBKU1NTb2NrZXQgc29jayA9IG5ldyBKU1NTb2NrZXQoKTsKKysgICAgICAgIHNvY2suY29u c3VtZVNvY2tldChyYXcpOworKyAgICAgICAgc29jay5zZXRTU0xDb250ZXh0KGN0eCk7CisrICAg ICAgICBpZiAoY2xpZW50TW9kZSkgeworKyAgICAgICAgICAgIHNvY2suaW5pdEVuZ2luZSgibG9j YWxob3N0IiwgcG9ydCk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIHNvY2suaW5p dEVuZ2luZSgpOworKyAgICAgICAgfQorKyAgICAgICAgSlNTUGFyYW1ldGVycyBwYXJhbXMgPSBu ZXcgSlNTUGFyYW1ldGVycygpOworKyAgICAgICAgcGFyYW1zLnNldEFsaWFzZXMoQXJyYXlzLmFz TGlzdChhbGlhcy5zcGxpdCgiLCIpKSk7CisrICAgICAgICBwYXJhbXMuc2V0SG9zdG5hbWUoImxv Y2FsaG9zdCIpOworKyAgICAgICAgc29jay5zZXRTU0xQYXJhbWV0ZXJzKHBhcmFtcyk7CisrICAg ICAgICBzb2NrLnNldFVzZUNsaWVudE1vZGUoY2xpZW50TW9kZSk7CisrICAgICAgICBzb2NrLnNl dEtleU1hbmFnZXJzKGtleU1hbmFnZXJzKTsKKysgICAgICAgIHNvY2suc2V0VHJ1c3RNYW5hZ2Vy cyh0cnVzdE1hbmFnZXJzKTsKKysgICAgICAgIHJldHVybiBzb2NrOworKyAgICB9CisrCisrICAg IHN0YXRpYyBieXRlW10gcmVhZFdpdGhSZXRyeShJbnB1dFN0cmVhbSBpbiwgbG9uZyB0aW1lb3V0 TXMpIHRocm93cyBFeGNlcHRpb24geworKyAgICAgICAgYnl0ZVtdIGJ1ZiA9IG5ldyBieXRlWzQw OTZdOworKyAgICAgICAgbG9uZyBkZWFkbGluZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygp ICsgdGltZW91dE1zOworKyAgICAgICAgaW50IHRvdGFsID0gMDsKKysgICAgICAgIHdoaWxlICh0 b3RhbCA9PSAwKSB7CisrICAgICAgICAgICAgaWYgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygp ID4gZGVhZGxpbmUpIHsKKysgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJS ZWFkIHRpbWVkIG91dCBhZnRlciAiICsgdGltZW91dE1zICsgIm1zIik7CisrICAgICAgICAgICAg fQorKyAgICAgICAgICAgIGludCBuID0gaW4ucmVhZChidWYsIHRvdGFsLCBidWYubGVuZ3RoIC0g dG90YWwpOworKyAgICAgICAgICAgIGlmIChuIDwgMCkgeworKyAgICAgICAgICAgICAgICB0aHJv dyBuZXcgSU9FeGNlcHRpb24oIlVuZXhwZWN0ZWQgRU9GIik7CisrICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIHRvdGFsICs9IG47CisrICAgICAgICAgICAgaWYgKHRvdGFsID09IDApIHsKKysg ICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKDUwKTsKKysgICAgICAgICAgICB9CisrICAgICAg ICB9CisrICAgICAgICByZXR1cm4gQXJyYXlzLmNvcHlPZihidWYsIHRvdGFsKTsKKysgICAgfQor KworKyAgICBzdGF0aWMgYnl0ZVtdIHJlYWRFeGFjdGx5KElucHV0U3RyZWFtIGluLCBpbnQgY291 bnQsIGxvbmcgdGltZW91dE1zKSB0aHJvd3MgRXhjZXB0aW9uIHsKKysgICAgICAgIGJ5dGVbXSBi dWYgPSBuZXcgYnl0ZVtjb3VudF07CisrICAgICAgICBsb25nIGRlYWRsaW5lID0gU3lzdGVtLmN1 cnJlbnRUaW1lTWlsbGlzKCkgKyB0aW1lb3V0TXM7CisrICAgICAgICBpbnQgdG90YWwgPSAwOwor KyAgICAgICAgd2hpbGUgKHRvdGFsIDwgY291bnQpIHsKKysgICAgICAgICAgICBpZiAoU3lzdGVt LmN1cnJlbnRUaW1lTWlsbGlzKCkgPiBkZWFkbGluZSkgeworKyAgICAgICAgICAgICAgICB0aHJv dyBuZXcgSU9FeGNlcHRpb24oIlJlYWQgdGltZWQgb3V0IGFmdGVyICIgKyB0aW1lb3V0TXMgKyAi bXMgKGdvdCAiICsgdG90YWwgKyAiIG9mICIgKyBjb3VudCArICIgYnl0ZXMpIik7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIGludCBuID0gaW4ucmVhZChidWYsIHRvdGFsLCBjb3VudCAt IHRvdGFsKTsKKysgICAgICAgICAgICBpZiAobiA8IDApIHsKKysgICAgICAgICAgICAgICAgdGhy b3cgbmV3IElPRXhjZXB0aW9uKCJVbmV4cGVjdGVkIEVPRiBhZnRlciAiICsgdG90YWwgKyAiIG9m ICIgKyBjb3VudCArICIgYnl0ZXMiKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYg KG4gPT0gMCkgeworKyAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoNTApOworKyAgICAgICAg ICAgIH0KKysgICAgICAgICAgICB0b3RhbCArPSBuOworKyAgICAgICAgfQorKyAgICAgICAgcmV0 dXJuIGJ1ZjsKKysgICAgfQorKworKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRFcXVhbChTdHJpbmcg ZXhwZWN0ZWQsIGJ5dGVbXSBhY3R1YWwsIFN0cmluZyBjb250ZXh0KSB7CisrICAgICAgICBTdHJp bmcgYWN0dWFsU3RyID0gbmV3IFN0cmluZyhhY3R1YWwpOworKyAgICAgICAgaWYgKCFleHBlY3Rl ZC5lcXVhbHMoYWN0dWFsU3RyKSkgeworKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhj ZXB0aW9uKGNvbnRleHQgKyAiOiBleHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGdvdCAnIiAr IGFjdHVhbFN0ciArICInIik7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcHVibGljIHN0 YXRpYyB2b2lkIHRlc3RQb3N0SGFuZHNoYWtlQXV0aChTU0xDb250ZXh0IGN0eCwgU3RyaW5nIGNs aWVudEFsaWFzLCBTdHJpbmcgc2VydmVyQWxpYXMpIHRocm93cyBFeGNlcHRpb24geworKyAgICAg ICAgU3lzdGVtLm91dC5wcmludGxuKCJUZXN0SlNTU29ja2V0Q2hhbm5lbDogdGVzdFBvc3RIYW5k c2hha2VBdXRoIik7CisrCisrICAgICAgICBmaW5hbCBFeGNlcHRpb25bXSBzZXJ2ZXJFcnJvciA9 IHsgbnVsbCB9OworKworKyAgICAgICAgU2VydmVyU29ja2V0IHNzID0gbmV3IFNlcnZlclNvY2tl dCgwLCAxLCBJbmV0QWRkcmVzcy5nZXRMb29wYmFja0FkZHJlc3MoKSk7CisrICAgICAgICBpbnQg cG9ydCA9IHNzLmdldExvY2FsUG9ydCgpOworKworKyAgICAgICAgVGhyZWFkIHNlcnZlclRocmVh ZCA9IG5ldyBUaHJlYWQoKCkgLT4geworKyAgICAgICAgICAgIHRyeSB7CisrICAgICAgICAgICAg ICAgIFNvY2tldCByYXdTZXJ2ZXIgPSBzcy5hY2NlcHQoKTsKKysgICAgICAgICAgICAgICAgSlNT U29ja2V0IHNlcnZlciA9IGNyZWF0ZUpTU1NvY2tldChjdHgsIHJhd1NlcnZlciwgc2VydmVyQWxp YXMsIGZhbHNlLCAwKTsKKysgICAgICAgICAgICAgICAgc2VydmVyLnNldEVuYWJsZWRQcm90b2Nv bHMobmV3IFN0cmluZ1tdIHsgIlRMU3YxLjMiIH0pOworKworKyAgICAgICAgICAgICAgICBzZXJ2 ZXIuc3RhcnRIYW5kc2hha2UoKTsKKysgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxu KCIgIHNlcnZlcjogaW5pdGlhbCBoYW5kc2hha2UgY29tcGxldGUiKTsKKysKKysgICAgICAgICAg ICAgICAgT3V0cHV0U3RyZWFtIHNPdXQgPSBzZXJ2ZXIuZ2V0T3V0cHV0U3RyZWFtKCk7CisrICAg ICAgICAgICAgICAgIElucHV0U3RyZWFtIHNJbiA9IHNlcnZlci5nZXRJbnB1dFN0cmVhbSgpOwor KworKyAgICAgICAgICAgICAgICBzT3V0LndyaXRlKCJoZWxsbyBmcm9tIHNlcnZlciIuZ2V0Qnl0 ZXMoKSk7CisrICAgICAgICAgICAgICAgIHNPdXQuZmx1c2goKTsKKysKKysgICAgICAgICAgICAg ICAgYXNzZXJ0RXF1YWwoImhlbGxvIGZyb20gY2xpZW50IiwgcmVhZFdpdGhSZXRyeShzSW4sIDEw MDAwKSwgInNlcnZlciBpbml0aWFsIHJlYWQiKTsKKysgICAgICAgICAgICAgICAgU3lzdGVtLm91 dC5wcmludGxuKCIgIHNlcnZlcjogaW5pdGlhbCBkYXRhIGV4Y2hhbmdlIE9LIik7CisrCisrICAg ICAgICAgICAgICAgIC8vIEVuYWJsZSBjbGllbnQgYXV0aCBhbmQgdHJpZ2dlciBwb3N0LWhhbmRz aGFrZSBhdXRoCisrICAgICAgICAgICAgICAgIHNlcnZlci5zZXRXYW50Q2xpZW50QXV0aCh0cnVl KTsKKysgICAgICAgICAgICAgICAgc2VydmVyLnNldE5lZWRDbGllbnRBdXRoKHRydWUpOworKyAg ICAgICAgICAgICAgICBzZXJ2ZXIuc3RhcnRIYW5kc2hha2UoKTsKKysKKysgICAgICAgICAgICAg ICAgc091dC53cml0ZSgicG9zdC1hdXRoIGRhdGEiLmdldEJ5dGVzKCkpOworKyAgICAgICAgICAg ICAgICBzT3V0LmZsdXNoKCk7CisrICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigi ICBzZXJ2ZXI6IHNlbnQgcG9zdC1oYW5kc2hha2UtYXV0aCBkYXRhIik7CisrCisrICAgICAgICAg ICAgICAgIGFzc2VydEVxdWFsKCJwb3N0LWF1dGggcmVwbHkiLCByZWFkV2l0aFJldHJ5KHNJbiwg MTAwMDApLCAic2VydmVyIHBvc3QtYXV0aCByZWFkIik7CisrCisrICAgICAgICAgICAgICAgIFNT TFNlc3Npb24gc2Vzc2lvbiA9IHNlcnZlci5nZXRTZXNzaW9uKCk7CisrICAgICAgICAgICAgICAg IGFzc2VydCBzZXNzaW9uLmdldFBlZXJDZXJ0aWZpY2F0ZXMoKSAhPSBudWxsIDogIkV4cGVjdGVk IHBlZXIgY2VydGlmaWNhdGVzIjsKKysgICAgICAgICAgICAgICAgYXNzZXJ0IHNlc3Npb24uZ2V0 UGVlckNlcnRpZmljYXRlcygpLmxlbmd0aCA+IDAgOiAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIHBl ZXIgY2VydGlmaWNhdGUiOworKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAg c2VydmVyOiB2ZXJpZmllZCAiICsgc2Vzc2lvbi5nZXRQZWVyQ2VydGlmaWNhdGVzKCkubGVuZ3Ro ICsgIiBwZWVyIGNlcnQocykiKTsKKysKKysgICAgICAgICAgICAgICAgLy8gU2VuZCA+MThLQiB0 byB2ZXJpZnkgbGFyZ2Ugd3JpdGVzIHdvcmsgYWZ0ZXIKKysgICAgICAgICAgICAgICAgLy8gcG9z dC1oYW5kc2hha2UgYXV0aC4KKysgICAgICAgICAgICAgICAgYnl0ZVtdIGxhcmdlRGF0YSA9IG5l dyBieXRlWzMyICogMTAyNF07CisrICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg bGFyZ2VEYXRhLmxlbmd0aDsgaSsrKSB7CisrICAgICAgICAgICAgICAgICAgICBsYXJnZURhdGFb aV0gPSAoYnl0ZSkgKGkgJiAweEZGKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICBzT3V0LndyaXRlKGxhcmdlRGF0YSk7CisrICAgICAgICAgICAgICAgIHNPdXQuZmx1c2go KTsKKysgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgIHNlcnZlcjogc2VudCAi ICsgbGFyZ2VEYXRhLmxlbmd0aCArICIgYnl0ZXMgcG9zdC1hdXRoIik7CisrCisrICAgICAgICAg ICAgICAgIGFzc2VydEVxdWFsKCJsYXJnZS1kYXRhLW9rIiwgcmVhZFdpdGhSZXRyeShzSW4sIDEw MDAwKSwgInNlcnZlciBsYXJnZSBkYXRhIGFjayIpOworKworKyAgICAgICAgICAgICAgICAvLyBT aWduYWwgdGhlIGNsaWVudCBpdCBpcyBPSyB0byBjbG9zZSBub3cuIFRoaXMgcHJldmVudHMKKysg ICAgICAgICAgICAgICAgLy8gdGhlIGNsaWVudCdzIGNsb3NlX25vdGlmeSBmcm9tIGFycml2aW5n IHdoaWxlIHRoZSBzZXJ2ZXIKKysgICAgICAgICAgICAgICAgLy8gaXMgc3RpbGwgcHJvY2Vzc2lu ZyB0aGUgcG9zdC1oYW5kc2hha2UgYXV0aCByZXNwb25zZS4KKysgICAgICAgICAgICAgICAgc091 dC53cml0ZSgiZG9uZSIuZ2V0Qnl0ZXMoKSk7CisrICAgICAgICAgICAgICAgIHNPdXQuZmx1c2go KTsKKysKKysgICAgICAgICAgICAgICAgc2VydmVyLmNsb3NlKCk7CisrICAgICAgICAgICAgfSBj YXRjaCAoRXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICAgICAgc2VydmVyRXJyb3JbMF0gPSBl OworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0pOworKyAgICAgICAgc2VydmVyVGhyZWFkLnNl dERhZW1vbih0cnVlKTsKKysgICAgICAgIHNlcnZlclRocmVhZC5zdGFydCgpOworKworKyAgICAg ICAgdHJ5IHsKKysgICAgICAgICAgICBTb2NrZXQgcmF3Q2xpZW50ID0gbmV3IFNvY2tldChJbmV0 QWRkcmVzcy5nZXRMb29wYmFja0FkZHJlc3MoKSwgcG9ydCk7CisrICAgICAgICAgICAgSlNTU29j a2V0IGNsaWVudCA9IGNyZWF0ZUpTU1NvY2tldChjdHgsIHJhd0NsaWVudCwgY2xpZW50QWxpYXMs IHRydWUsIHBvcnQpOworKyAgICAgICAgICAgIGNsaWVudC5zZXRFbmFibGVkUHJvdG9jb2xzKG5l dyBTdHJpbmdbXSB7ICJUTFN2MS4zIiB9KTsKKysKKysgICAgICAgICAgICBjbGllbnQuc3RhcnRI YW5kc2hha2UoKTsKKysgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgY2xpZW50OiBp bml0aWFsIGhhbmRzaGFrZSBjb21wbGV0ZSIpOworKworKyAgICAgICAgICAgIE91dHB1dFN0cmVh bSBjT3V0ID0gY2xpZW50LmdldE91dHB1dFN0cmVhbSgpOworKyAgICAgICAgICAgIElucHV0U3Ry ZWFtIGNJbiA9IGNsaWVudC5nZXRJbnB1dFN0cmVhbSgpOworKworKyAgICAgICAgICAgIGFzc2Vy dEVxdWFsKCJoZWxsbyBmcm9tIHNlcnZlciIsIHJlYWRXaXRoUmV0cnkoY0luLCAxMDAwMCksICJj bGllbnQgaW5pdGlhbCByZWFkIik7CisrCisrICAgICAgICAgICAgY091dC53cml0ZSgiaGVsbG8g ZnJvbSBjbGllbnQiLmdldEJ5dGVzKCkpOworKyAgICAgICAgICAgIGNPdXQuZmx1c2goKTsKKysg ICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgY2xpZW50OiBpbml0aWFsIGRhdGEgZXhj aGFuZ2UgT0siKTsKKysKKysgICAgICAgICAgICAvLyBUaGlzIHJlYWQgdHJpZ2dlcnMgcG9zdC1o YW5kc2hha2UgYXV0aCBwcm9jZXNzaW5nCisrICAgICAgICAgICAgLy8gaW4gSlNTU29ja2V0Q2hh bm5lbC5yZWFkKCkg4oaSIGZsdXNoUG9zdEhhbmRzaGFrZSgpCisrICAgICAgICAgICAgYXNzZXJ0 RXF1YWwoInBvc3QtYXV0aCBkYXRhIiwgcmVhZFdpdGhSZXRyeShjSW4sIDEwMDAwKSwgImNsaWVu dCBwb3N0LWF1dGggcmVhZCIpOworKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICBj bGllbnQ6IHBvc3QtaGFuZHNoYWtlIGF1dGggY29tcGxldGVkIHRyYW5zcGFyZW50bHkiKTsKKysK KysgICAgICAgICAgICBjT3V0LndyaXRlKCJwb3N0LWF1dGggcmVwbHkiLmdldEJ5dGVzKCkpOwor KyAgICAgICAgICAgIGNPdXQuZmx1c2goKTsKKysKKysgICAgICAgICAgICAvLyBSZWNlaXZlIHRo ZSBsYXJnZSAoPjE4S0IpIHBvc3QtYXV0aCB0cmFuc2ZlcgorKyAgICAgICAgICAgIGludCBsYXJn ZVNpemUgPSAzMiAqIDEwMjQ7CisrICAgICAgICAgICAgYnl0ZVtdIGxhcmdlUmVjZWl2ZWQgPSBy ZWFkRXhhY3RseShjSW4sIGxhcmdlU2l6ZSwgMTAwMDApOworKyAgICAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgbGFyZ2VTaXplOyBpKyspIHsKKysgICAgICAgICAgICAgICAgaWYgKGxhcmdl UmVjZWl2ZWRbaV0gIT0gKGJ5dGUpIChpICYgMHhGRikpIHsKKysgICAgICAgICAgICAgICAgICAg IHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJMYXJnZSBkYXRhIG1pc21hdGNoIGF0IGJ5dGUg IiArIGkpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAg IFN5c3RlbS5vdXQucHJpbnRsbigiICBjbGllbnQ6IHJlY2VpdmVkIGFuZCB2ZXJpZmllZCAiICsg bGFyZ2VTaXplICsgIiBieXRlcyBwb3N0LWF1dGgiKTsKKysgICAgICAgICAgICBjT3V0LndyaXRl KCJsYXJnZS1kYXRhLW9rIi5nZXRCeXRlcygpKTsKKysgICAgICAgICAgICBjT3V0LmZsdXNoKCk7 CisrCisrICAgICAgICAgICAgLy8gV2FpdCBmb3Igc2VydmVyIGFjayBiZWZvcmUgY2xvc2luZywg c28gY2xvc2Vfbm90aWZ5IGRvZXNuJ3QKKysgICAgICAgICAgICAvLyByYWNlIHdpdGggdGhlIHNl cnZlcidzIHJlYWQgb2YgdGhlIHBvc3QtaGFuZHNoYWtlIGF1dGggcmVzcG9uc2UuCisrICAgICAg ICAgICAgYXNzZXJ0RXF1YWwoImRvbmUiLCByZWFkV2l0aFJldHJ5KGNJbiwgMTAwMDApLCAiY2xp ZW50IGRvbmUtYWNrIHJlYWQiKTsKKysKKysgICAgICAgICAgICBjbGllbnQuY2xvc2UoKTsKKysg ICAgICAgIH0gZmluYWxseSB7CisrICAgICAgICAgICAgc2VydmVyVGhyZWFkLmpvaW4oMzAwMDAp OworKyAgICAgICAgICAgIHNzLmNsb3NlKCk7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAo c2VydmVyRXJyb3JbMF0gIT0gbnVsbCkgeworKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1l RXhjZXB0aW9uKCJTZXJ2ZXIgdGhyZWFkIGZhaWxlZCIsIHNlcnZlckVycm9yWzBdKTsKKysgICAg ICAgIH0KKysKKysgICAgICAgIGlmIChzZXJ2ZXJUaHJlYWQuaXNBbGl2ZSgpKSB7CisrICAgICAg ICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlNlcnZlciB0aHJlYWQgZGlkIG5vdCBm aW5pc2ggaW4gdGltZSIpOworKyAgICAgICAgfQorKworKyAgICAgICAgU3lzdGVtLm91dC5wcmlu dGxuKCJUZXN0SlNTU29ja2V0Q2hhbm5lbDogdGVzdFBvc3RIYW5kc2hha2VBdXRoIFBBU1NFRCIp OworKyAgICB9CisrCisrICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0TXVsdGlwbGVNZXNzYWdl c0FmdGVyUG9zdEhhbmRzaGFrZUF1dGgoU1NMQ29udGV4dCBjdHgsIFN0cmluZyBjbGllbnRBbGlh cywgU3RyaW5nIHNlcnZlckFsaWFzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKysgICAgICAgIFN5c3Rl bS5vdXQucHJpbnRsbigiVGVzdEpTU1NvY2tldENoYW5uZWw6IHRlc3RNdWx0aXBsZU1lc3NhZ2Vz QWZ0ZXJQb3N0SGFuZHNoYWtlQXV0aCIpOworKworKyAgICAgICAgZmluYWwgRXhjZXB0aW9uW10g c2VydmVyRXJyb3IgPSB7IG51bGwgfTsKKysKKysgICAgICAgIFNlcnZlclNvY2tldCBzcyA9IG5l dyBTZXJ2ZXJTb2NrZXQoMCwgMSwgSW5ldEFkZHJlc3MuZ2V0TG9vcGJhY2tBZGRyZXNzKCkpOwor KyAgICAgICAgaW50IHBvcnQgPSBzcy5nZXRMb2NhbFBvcnQoKTsKKysKKysgICAgICAgIFRocmVh ZCBzZXJ2ZXJUaHJlYWQgPSBuZXcgVGhyZWFkKCgpIC0+IHsKKysgICAgICAgICAgICB0cnkgewor KyAgICAgICAgICAgICAgICBTb2NrZXQgcmF3U2VydmVyID0gc3MuYWNjZXB0KCk7CisrICAgICAg ICAgICAgICAgIEpTU1NvY2tldCBzZXJ2ZXIgPSBjcmVhdGVKU1NTb2NrZXQoY3R4LCByYXdTZXJ2 ZXIsIHNlcnZlckFsaWFzLCBmYWxzZSwgMCk7CisrICAgICAgICAgICAgICAgIHNlcnZlci5zZXRF bmFibGVkUHJvdG9jb2xzKG5ldyBTdHJpbmdbXSB7ICJUTFN2MS4zIiB9KTsKKysKKysgICAgICAg ICAgICAgICAgc2VydmVyLnN0YXJ0SGFuZHNoYWtlKCk7CisrCisrICAgICAgICAgICAgICAgIE91 dHB1dFN0cmVhbSBzT3V0ID0gc2VydmVyLmdldE91dHB1dFN0cmVhbSgpOworKyAgICAgICAgICAg ICAgICBJbnB1dFN0cmVhbSBzSW4gPSBzZXJ2ZXIuZ2V0SW5wdXRTdHJlYW0oKTsKKysKKysgICAg ICAgICAgICAgICAgLy8gSW5pdGlhbCBkYXRhIGV4Y2hhbmdlIHRvIHNldHRsZSB0aGUgY29ubmVj dGlvbgorKyAgICAgICAgICAgICAgICBzT3V0LndyaXRlKCJwaW5nIi5nZXRCeXRlcygpKTsKKysg ICAgICAgICAgICAgICAgc091dC5mbHVzaCgpOworKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVh bCgicG9uZyIsIHJlYWRXaXRoUmV0cnkoc0luLCAxMDAwMCksICJzZXJ2ZXIgaW5pdGlhbCByZWFk Iik7CisrCisrICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgcG9zdC1oYW5kc2hha2UgYXV0aAor KyAgICAgICAgICAgICAgICBzZXJ2ZXIuc2V0V2FudENsaWVudEF1dGgodHJ1ZSk7CisrICAgICAg ICAgICAgICAgIHNlcnZlci5zZXROZWVkQ2xpZW50QXV0aCh0cnVlKTsKKysgICAgICAgICAgICAg ICAgc2VydmVyLnN0YXJ0SGFuZHNoYWtlKCk7CisrCisrICAgICAgICAgICAgICAgIHNPdXQud3Jp dGUoImF1dGgtdHJpZ2dlciIuZ2V0Qnl0ZXMoKSk7CisrICAgICAgICAgICAgICAgIHNPdXQuZmx1 c2goKTsKKysKKysgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoImFjayIsIHJlYWRXaXRoUmV0 cnkoc0luLCAxMDAwMCksICJzZXJ2ZXIgYWNrIHJlYWQiKTsKKysKKysgICAgICAgICAgICAgICAg Ly8gTXVsdGlwbGUgcm91bmQgdHJpcHMgYWZ0ZXIgcG9zdC1oYW5kc2hha2UgYXV0aAorKyAgICAg ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeworKyAgICAgICAgICAgICAg ICAgICAgU3RyaW5nIG1zZyA9ICJzZXJ2ZXItbXNnLSIgKyBpOworKyAgICAgICAgICAgICAgICAg ICAgc091dC53cml0ZShtc2cuZ2V0Qnl0ZXMoKSk7CisrICAgICAgICAgICAgICAgICAgICBzT3V0 LmZsdXNoKCk7CisrCisrICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWQgPSAiY2xp ZW50LW1zZy0iICsgaTsKKysgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKGV4cGVjdGVk LCByZWFkV2l0aFJldHJ5KHNJbiwgMTAwMDApLCAic2VydmVyIHJvdW5kICIgKyBpKTsKKysgICAg ICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICBzT3V0LndyaXRlKCJkb25lIi5nZXRC eXRlcygpKTsKKysgICAgICAgICAgICAgICAgc091dC5mbHVzaCgpOworKworKyAgICAgICAgICAg ICAgICBzZXJ2ZXIuY2xvc2UoKTsKKysgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkg eworKyAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvclswXSA9IGU7CisrICAgICAgICAgICAgfQor KyAgICAgICAgfSk7CisrICAgICAgICBzZXJ2ZXJUaHJlYWQuc2V0RGFlbW9uKHRydWUpOworKyAg ICAgICAgc2VydmVyVGhyZWFkLnN0YXJ0KCk7CisrCisrICAgICAgICB0cnkgeworKyAgICAgICAg ICAgIFNvY2tldCByYXdDbGllbnQgPSBuZXcgU29ja2V0KEluZXRBZGRyZXNzLmdldExvb3BiYWNr QWRkcmVzcygpLCBwb3J0KTsKKysgICAgICAgICAgICBKU1NTb2NrZXQgY2xpZW50ID0gY3JlYXRl SlNTU29ja2V0KGN0eCwgcmF3Q2xpZW50LCBjbGllbnRBbGlhcywgdHJ1ZSwgcG9ydCk7CisrICAg ICAgICAgICAgY2xpZW50LnNldEVuYWJsZWRQcm90b2NvbHMobmV3IFN0cmluZ1tdIHsgIlRMU3Yx LjMiIH0pOworKworKyAgICAgICAgICAgIGNsaWVudC5zdGFydEhhbmRzaGFrZSgpOworKworKyAg ICAgICAgICAgIE91dHB1dFN0cmVhbSBjT3V0ID0gY2xpZW50LmdldE91dHB1dFN0cmVhbSgpOwor KyAgICAgICAgICAgIElucHV0U3RyZWFtIGNJbiA9IGNsaWVudC5nZXRJbnB1dFN0cmVhbSgpOwor KworKyAgICAgICAgICAgIGFzc2VydEVxdWFsKCJwaW5nIiwgcmVhZFdpdGhSZXRyeShjSW4sIDEw MDAwKSwgImNsaWVudCBpbml0aWFsIHJlYWQiKTsKKysgICAgICAgICAgICBjT3V0LndyaXRlKCJw b25nIi5nZXRCeXRlcygpKTsKKysgICAgICAgICAgICBjT3V0LmZsdXNoKCk7CisrCisrICAgICAg ICAgICAgYXNzZXJ0RXF1YWwoImF1dGgtdHJpZ2dlciIsIHJlYWRXaXRoUmV0cnkoY0luLCAxMDAw MCksICJjbGllbnQgYXV0aC10cmlnZ2VyIHJlYWQiKTsKKysKKysgICAgICAgICAgICBjT3V0Lndy aXRlKCJhY2siLmdldEJ5dGVzKCkpOworKyAgICAgICAgICAgIGNPdXQuZmx1c2goKTsKKysKKysg ICAgICAgICAgICAvLyBNdWx0aXBsZSByb3VuZCB0cmlwcyBhZnRlciBwb3N0LWhhbmRzaGFrZSBh dXRoCisrICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKysgICAgICAg ICAgICAgICAgU3RyaW5nIGV4cGVjdGVkID0gInNlcnZlci1tc2ctIiArIGk7CisrICAgICAgICAg ICAgICAgIGFzc2VydEVxdWFsKGV4cGVjdGVkLCByZWFkV2l0aFJldHJ5KGNJbiwgMTAwMDApLCAi Y2xpZW50IHJvdW5kICIgKyBpKTsKKysKKysgICAgICAgICAgICAgICAgU3RyaW5nIG1zZyA9ICJj bGllbnQtbXNnLSIgKyBpOworKyAgICAgICAgICAgICAgICBjT3V0LndyaXRlKG1zZy5nZXRCeXRl cygpKTsKKysgICAgICAgICAgICAgICAgY091dC5mbHVzaCgpOworKyAgICAgICAgICAgIH0KKysK KysgICAgICAgICAgICBhc3NlcnRFcXVhbCgiZG9uZSIsIHJlYWRXaXRoUmV0cnkoY0luLCAxMDAw MCksICJjbGllbnQgZG9uZS1hY2sgcmVhZCIpOworKworKyAgICAgICAgICAgIGNsaWVudC5jbG9z ZSgpOworKyAgICAgICAgfSBmaW5hbGx5IHsKKysgICAgICAgICAgICBzZXJ2ZXJUaHJlYWQuam9p bigzMDAwMCk7CisrICAgICAgICAgICAgc3MuY2xvc2UoKTsKKysgICAgICAgIH0KKysKKysgICAg ICAgIGlmIChzZXJ2ZXJFcnJvclswXSAhPSBudWxsKSB7CisrICAgICAgICAgICAgdGhyb3cgbmV3 IFJ1bnRpbWVFeGNlcHRpb24oIlNlcnZlciB0aHJlYWQgZmFpbGVkIiwgc2VydmVyRXJyb3JbMF0p OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHNlcnZlclRocmVhZC5pc0FsaXZlKCkpIHsK KysgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiU2VydmVyIHRocmVhZCBk aWQgbm90IGZpbmlzaCBpbiB0aW1lIik7CisrICAgICAgICB9CisrCisrICAgICAgICBTeXN0ZW0u b3V0LnByaW50bG4oIlRlc3RKU1NTb2NrZXRDaGFubmVsOiB0ZXN0TXVsdGlwbGVNZXNzYWdlc0Fm dGVyUG9zdEhhbmRzaGFrZUF1dGggUEFTU0VEIik7CisrICAgIH0KKysKKysgICAgcHVibGljIHN0 YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisrICAgICAg ICBTeXN0ZW0ub3V0LnByaW50bG4oIkluaXRpYWxpemluZyBDcnlwdG9NYW5hZ2VyLi4uIik7Cisr ICAgICAgICBpbml0aWFsaXplKGFyZ3MpOworKworKyAgICAgICAgaWYgKCFvcmcubW96aWxsYS5q c3MuSlNTUHJvdmlkZXIuRU5BQkxFX0pTU0VOR0lORSkgeworKyAgICAgICAgICAgIFN5c3RlbS5v dXQucHJpbnRsbigiSlNTRW5naW5lIG5vdCBlbmFibGVkLCBza2lwcGluZy4iKTsKKysgICAgICAg ICAgICByZXR1cm47CisrICAgICAgICB9CisrCisrICAgICAgICBTdHJpbmcgY2xpZW50QWxpYXMg PSBhcmdzWzJdOworKyAgICAgICAgU3RyaW5nIHNlcnZlckFsaWFzID0gYXJnc1szXTsKKysKKysg ICAgICAgIC8vIENoZWNrIFRMUyAxLjMgc3VwcG9ydAorKyAgICAgICAgU1NMQ29udGV4dCBjdHgg PSBTU0xDb250ZXh0LmdldEluc3RhbmNlKCJUTFMiLCAiTW96aWxsYS1KU1MiKTsKKysgICAgICAg IGN0eC5pbml0KGtleU1hbmFnZXJzLCB0cnVzdE1hbmFnZXJzLCBudWxsKTsKKysKKysgICAgICAg IFN0cmluZ1tdIHN1cHBvcnRlZCA9IGN0eC5jcmVhdGVTU0xFbmdpbmUoKS5nZXRTdXBwb3J0ZWRQ cm90b2NvbHMoKTsKKysgICAgICAgIGJvb2xlYW4gdGxzMTMgPSBmYWxzZTsKKysgICAgICAgIGZv ciAoU3RyaW5nIHAgOiBzdXBwb3J0ZWQpIHsKKysgICAgICAgICAgICBpZiAoIlRMU3YxLjMiLmVx dWFscyhwKSkgeworKyAgICAgICAgICAgICAgICB0bHMxMyA9IHRydWU7CisrICAgICAgICAgICAg ICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGlmICghdGxz MTMpIHsKKysgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRMUyAxLjMgbm90IHN1cHBv cnRlZCwgc2tpcHBpbmcuIik7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKwor KyAgICAgICAgdGVzdFBvc3RIYW5kc2hha2VBdXRoKGN0eCwgY2xpZW50QWxpYXMsIHNlcnZlckFs aWFzKTsKKysgICAgICAgIHRlc3RNdWx0aXBsZU1lc3NhZ2VzQWZ0ZXJQb3N0SGFuZHNoYWtlQXV0 aChjdHgsIGNsaWVudEFsaWFzLCBzZXJ2ZXJBbGlhcyk7CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0 IGEvY21ha2UvSlNTVGVzdHMuY21ha2UgYi9jbWFrZS9KU1NUZXN0cy5jbWFrZQoraW5kZXggYjgy ZDQyMWYuLmYyYjlkYjFmIDEwMDY0NAorLS0tIGEvY21ha2UvSlNTVGVzdHMuY21ha2UKKysrKyBi L2NtYWtlL0pTU1Rlc3RzLmNtYWtlCitAQCAtMzI3LDYgKzMyNywxMSBAQCBtYWNybyhqc3NfdGVz dHMpCisgICAgICAgICBERVBFTkRTICJHZW5lcmF0ZV9rbm93bl9SU0FfY2VydF9wYWlyIgorICAg ICApCisgCisrICAgIGpzc190ZXN0X2phdmEoCisrICAgICAgICBOQU1FICJKU1NTb2NrZXRDaGFu bmVsX1Bvc3RIYW5kc2hha2VBdXRoIgorKyAgICAgICAgQ09NTUFORCAib3JnLm1vemlsbGEuanNz LnRlc3RzLlRlc3RKU1NTb2NrZXRDaGFubmVsIiAiJHtSRVNVTFRTX05TU0RCX09VVFBVVF9ESVJ9 IiAiJHtQQVNTV09SRF9GSUxFfSIgIkNsaWVudF9SU0EiICJTZXJ2ZXJfUlNBIgorKyAgICAgICAg REVQRU5EUyAiU1NMRW5naW5lX1JTQSIKKysgICAgKQorIAorICAgICBpZihOT1QgRklQU19FTkFC TEVEKQorICAgICAgICAganNzX3Rlc3RfamF2YSgKKy0tIAorMi41NS4wCisKCmRpZmYgLS1naXQg YS9qc3Muc3BlYyBiL2pzcy5zcGVjCmluZGV4IDIwNWFiMjQuLjVjNjhjNjAgMTAwNjQ0Ci0tLSBh L2pzcy5zcGVjCisrKyBiL2pzcy5zcGVjCkBAIC0xMyw3ICsxMyw3IEBAIE5hbWU6ICAgICAgICAg ICBqc3MKICMgRG93bnN0cmVhbSByZWxlYXNlIG51bWJlcjoKICMgLSBkZXZlbG9wbWVudC9zdGFi aWxpemF0aW9uICh1bnN1cHBvcnRlZCk6IDAuPG4+IHdoZXJlIG4gPj0gMQogIyAtIEdBL3VwZGF0 ZSAoc3VwcG9ydGVkKTogPG4+IHdoZXJlIG4gPj0gMQotJWdsb2JhbCAgICAgICAgIHJlbGVhc2Vf bnVtYmVyIDEKKyVnbG9iYWwgICAgICAgICByZWxlYXNlX251bWJlciAyCiAKICMgRGV2ZWxvcG1l bnQgcGhhc2U6CiAjIC0gZGV2ZWxvcG1lbnQgKHVuc3VwcG9ydGVkKTogYWxwaGE8bj4gd2hlcmUg biA+PSAxCkBAIC00MSw2ICs0MSwxNCBAQCBSZWxlYXNlOiAgICAgICAgJXtyZWxlYXNlX251bWJl cn0lez9waGFzZToufSV7P3BoYXNlfSV7P3RpbWVzdGFtcDoufSV7P3RpbWVzdGFtcAogIyB0YXJi YWxsLgogU291cmNlOiAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2d0YWdwa2kvanNzL2Fy Y2hpdmUvdiV7dmVyc2lvbn0lez9waGFzZTotfSV7P3BoYXNlfS9qc3MtJXt2ZXJzaW9ufSV7P3Bo YXNlOi19JXs/cGhhc2V9LnRhci5negogCisjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9z aG93X2J1Zy5jZ2k/aWQ9MjQ5MDYwNworIyBodHRwczovL2dpdGh1Yi5jb20vZG9ndGFncGtpL2pz cy9wdWxsLzExMTYKKyMgRml4IHBvc3QtaGFuZHNoYWtlIGF1dGggaGFuZyB3aXRoIFRMUyAxLjMK KyMgRml4ZXMgRnJlZUlQQSByZXBsaWNhdGlvbiB3aXRoIE9wZW5TU0wgNAorUGF0Y2g6ICAgICAg ICAgIDAwMDEtRml4LVRMUy0xLjMtcG9zdC1oYW5kc2hha2UtYXV0aGVudGljYXRpb24taGFuZ2lu Zy1hdC5wYXRjaAorUGF0Y2g6ICAgICAgICAgIDAwMDItSW50ZWdyYXRlLXBvc3QtaGFuZHNoYWtl LWF1dGgtaW50by10aGUtaGFuZHNoYWtlLXN0YS5wYXRjaAorUGF0Y2g6ICAgICAgICAgIDAwMDMt QWRkLUpTU1NvY2tldENoYW5uZWwtVExTLTEuMy1wb3N0LWhhbmRzaGFrZS1hdXRoLXRlcy5wYXRj aAorCiAjIFRvIGNyZWF0ZSBhIHBhdGNoIGZvciBhbGwgY2hhbmdlcyBzaW5jZSBhIHZlcnNpb24g dGFnOgogIyAkIGdpdCBmb3JtYXQtcGF0Y2ggXAogIyAgICAgLS1zdGRvdXQgXApAQCAtNDIwLDYg KzQyOCw5IEBAIGNwIGJhc2UvdGFyZ2V0L2pzcy10ZXN0cy5qYXIgJXtidWlsZHJvb3R9JXtfZGF0 YWRpcn0vanNzL3Rlc3RzL2xpYgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJWNoYW5nZWxv ZworKiBXZWQgU2VwIDAyIDIwMjYgQWRhbSBXaWxsaWFtc29uIDxhZGFtd2lsbEBmZWRvcmFwcm9q ZWN0Lm9yZz4gLTUuMTAuMS0yCistIEJhY2twb3J0IFBSICMxMTE2IHRvIGZpeCBwb3N0LWhhbmRz aGFrZSBhdXRoIGhhbmcgKEZyZWVJUEEgcmVwbGljYXRpb24pICgjMjQ5MDYwNykKKwogKiBUdWUg SnVsIDI4IDIwMjYgRG9ndGFnIFBLSSBUZWFtIDxkZXZlbEBsaXN0cy5kb2d0YWdwa2kub3JnPiAt IDUuMTAuMS0xCiAtIFJlYmFzZSB0byBKU1MgNS4xMC4xCiAK