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] rawhide: Backport PR #1116 to fix post-handshake auth hang (FreeIPA replication) (#2490607) Date: Wed, 02 Sep 2026 19:01:24 GMT Message-ID: <178837568402.1.17370737402352983442.rpms-jss-570c971fefcd@fedoraproject.org> List-ID: X-Git-Repo: rpms/jss X-Git-Branch: rawhide X-Git-Rev: 570c971fefcddb421a33a70d0abd2d1ebccdc15e QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvanNzCkJyYW5jaCA6 IHJhd2hpZGUKQ29tbWl0IDogNTcwYzk3MWZlZmNkZGI0MjFhMzNhNzBkMGFiZDJkMWViY2NkYzE1 ZQpBdXRob3IgOiBBZGFtIFdpbGxpYW1zb24gPGFkYW13aWxsQGZlZG9yYXByb2plY3Qub3JnPgpE YXRlICAgOiAyMDI2LTA5LTAyVDEyOjAwOjQ5LTA3OjAwClN0YXRzICA6ICs4OTQvLTEgaW4gNCBm aWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvanNzL2Mv NTcwYzk3MWZlZmNkZGI0MjFhMzNhNzBkMGFiZDJkMWViY2NkYzE1ZT9icmFuY2g9cmF3aGlkZQoK TG9nOgpCYWNrcG9ydCBQUiAjMTExNiB0byBmaXggcG9zdC1oYW5kc2hha2UgYXV0aCBoYW5nIChG cmVlSVBBIHJlcGxpY2F0aW9uKSAoIzI0OTA2MDcpCgotLS0KZGlmZiAtLWdpdCBhLzAwMDEtRml4 LVRMUy0xLjMtcG9zdC1oYW5kc2hha2UtYXV0aGVudGljYXRpb24taGFuZ2luZy1hdC5wYXRjaCBi LzAwMDEtRml4LVRMUy0xLjMtcG9zdC1oYW5kc2hha2UtYXV0aGVudGljYXRpb24taGFuZ2luZy1h dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjFhZjg2Ci0tLSAv ZGV2L251bGwKKysrIGIvMDAwMS1GaXgtVExTLTEuMy1wb3N0LWhhbmRzaGFrZS1hdXRoZW50aWNh dGlvbi1oYW5naW5nLWF0LnBhdGNoCkBAIC0wLDAgKzEsMTI3IEBACitGcm9tIGE0NDA2MDk1YzJh Yjc0YjcxM2MzOWVjYzhkOGI5ODgxZDhkOWNkZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBUaG9tYXMgV29lcm5lciA8dHdvZXJuZXJAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTcg QXVnIDIwMjYgMTA6NTQ6MjAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIEZpeCBUTFMgMS4z IHBvc3QtaGFuZHNoYWtlIGF1dGhlbnRpY2F0aW9uIGhhbmdpbmcgYXQgMTAwJQorIENQVQorCitX aGVuIGEgVExTIDEuMyBzZXJ2ZXIgc2VuZHMgYSBwb3N0LWhhbmRzaGFrZSBDZXJ0aWZpY2F0ZVJl cXVlc3QgdG8gYQorSlNTIGNsaWVudCwgdGhlIHVud3JhcCgpIGRvLXdoaWxlIGxvb3Agc3BpbnMg aW5kZWZpbml0ZWx5LiBQUi5SZWFkKCkKK3Byb2Nlc3NlcyB0aGUgcmVxdWVzdCBhbmQgcXVldWVz IHRoZSBDZXJ0aWZpY2F0ZSByZXNwb25zZSBpbiB3cml0ZV9idWYsCitidXQgdGhlIGxvb3AgbmV2 ZXIgYnJlYWtzIHRvIGxldCB0aGUgY2FsbGVyIGNhbGwgd3JhcCgpIHRvIGZsdXNoIGl0LgorCitJ biBKU1NFbmdpbmVSZWZlcmVuY2VJbXBsLCBkZXRlY3QgcGVuZGluZyB3cml0ZSBkYXRhIGFmdGVy IGEgY29tcGxldGVkCitoYW5kc2hha2UgYW5kIHNpZ25hbCBORUVEX1dSQVAgdG8gYnJlYWsgdGhl IGxvb3AuCisKK0luIEpTU1NvY2tldENoYW5uZWwsIGFkZCBmbHVzaFBvc3RIYW5kc2hha2UoKSB0 byBkcml2ZSB3cmFwKCkgYW5kCitzZW5kIHRoZSBDZXJ0aWZpY2F0ZSByZXNwb25zZS4gSGFuZGxl IG5vbi1ibG9ja2luZyBjaGFubmVscyBieQorcHJlc2VydmluZyBwZW5kaW5nIG91dHB1dCB3aGVu IHdyaXRlQ2hhbm5lbC53cml0ZSgpIHJldHVybnMgMCBhbmQKK3JldHJ5aW5nIG9uIHRoZSBuZXh0 IHJlYWQoKSBvciB3cml0ZSgpIGNhbGwuCisKK1Jlc29sdmVzOiBodHRwczovL2J1Z3ppbGxhLnJl ZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTI0OTA2MDcKKworU2lnbmVkLW9mZi1ieTogVGhvbWFz IFdvZXJuZXIgPHR3b2VybmVyQHJlZGhhdC5jb20+CistLS0KKyAuLi4vanNzL3NzbC9qYXZheC9K U1NFbmdpbmVSZWZlcmVuY2VJbXBsLmphdmEgfCAxMCArKysrKworIC4uLi9qc3Mvc3NsL2phdmF4 L0pTU1NvY2tldENoYW5uZWwuamF2YSAgICAgICB8IDM4ICsrKysrKysrKysrKysrKysrKysKKyAy IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2Jhc2Uvc3Jj L21haW4vamF2YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZVJlZmVyZW5jZUlt cGwuamF2YSBiL2Jhc2Uvc3JjL21haW4vamF2YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pT U0VuZ2luZVJlZmVyZW5jZUltcGwuamF2YQoraW5kZXggMDEyMWFjYTAuLjdjZDE1MWM4IDEwMDY0 NAorLS0tIGEvYmFzZS9zcmMvbWFpbi9qYXZhL29yZy9tb3ppbGxhL2pzcy9zc2wvamF2YXgvSlNT RW5naW5lUmVmZXJlbmNlSW1wbC5qYXZhCisrKysgYi9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21v emlsbGEvanNzL3NzbC9qYXZheC9KU1NFbmdpbmVSZWZlcmVuY2VJbXBsLmphdmEKK0BAIC0xMzgy LDYgKzEzODIsMTYgQEAgcHVibGljIGNsYXNzIEpTU0VuZ2luZVJlZmVyZW5jZUltcGwgZXh0ZW5k cyBKU1NFbmdpbmUgeworICAgICAgICAgICAgICAgICAgICAgc2Vlbl9leGNlcHRpb24gPSB0cnVl OworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIC8v IFRMUyAxLjMgcG9zdC1oYW5kc2hha2UgYXV0aDogUFIuUmVhZCgpIG1heSBoYXZlIHByb2Nlc3Nl ZCBhCisrICAgICAgICAgICAgLy8gQ2VydGlmaWNhdGVSZXF1ZXN0LCBwdXR0aW5nIHRoZSBDZXJ0 aWZpY2F0ZSByZXNwb25zZSBpbiB3cml0ZV9idWYuCisrICAgICAgICAgICAgLy8gQnJlYWsgc28g dGhlIGNhbGxlciBjYW4gY2FsbCB3cmFwKCkgdG8gc2VuZCBpdC4KKysgICAgICAgICAgICBpZiAo aGFuZHNoYWtlX2FscmVhZHlfY29tcGxldGUgJiYgIXNlZW5fZXhjZXB0aW9uCisrICAgICAgICAg ICAgICAgICYmIEJ1ZmZlci5SZWFkQ2FwYWNpdHkod3JpdGVfYnVmKSA+IDApIHsKKysgICAgICAg ICAgICAgICAgaGFuZHNoYWtlX3N0YXRlID0gU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1 cy5ORUVEX1dSQVA7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysK KyAgICAgICAgIH0gd2hpbGUgKHRoaXNfc3JjX3dyaXRlICE9IDAgfHwgdGhpc19kc3Rfd3JpdGUg IT0gMCk7CisgCisgICAgICAgICBTU0xFeGNlcHRpb24gY2hlY2tFeGNlcHRpb24gPSBjaGVja1NT TEFsZXJ0cygpOworZGlmZiAtLWdpdCBhL2Jhc2Uvc3JjL21haW4vamF2YS9vcmcvbW96aWxsYS9q c3Mvc3NsL2phdmF4L0pTU1NvY2tldENoYW5uZWwuamF2YSBiL2Jhc2Uvc3JjL21haW4vamF2YS9v cmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU1NvY2tldENoYW5uZWwuamF2YQoraW5kZXggYTVl NTc0MDcuLmU5YjNlNmEzIDEwMDY0NAorLS0tIGEvYmFzZS9zcmMvbWFpbi9qYXZhL29yZy9tb3pp bGxhL2pzcy9zc2wvamF2YXgvSlNTU29ja2V0Q2hhbm5lbC5qYXZhCisrKysgYi9iYXNlL3NyYy9t YWluL2phdmEvb3JnL21vemlsbGEvanNzL3NzbC9qYXZheC9KU1NTb2NrZXRDaGFubmVsLmphdmEK K0BAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYyBjbGFzcyBKU1NTb2NrZXRDaGFubmVsIGV4dGVuZHMg U29ja2V0Q2hhbm5lbCB7CisgICAgIHByaXZhdGUgQnl0ZUJ1ZmZlciB3cml0ZUJ1ZmZlcjsKKyAK KyAgICAgcHJpdmF0ZSBib29sZWFuIGhhbmRzaGFrZUNvbXBsZXRlZCA9IGZhbHNlOworKyAgICBw cml2YXRlIGJvb2xlYW4gcGVuZGluZ1Bvc3RIYW5kc2hha2UgPSBmYWxzZTsKKyAKKyAgICAgcHVi bGljIEpTU1NvY2tldENoYW5uZWwoSlNTU29ja2V0IHNzbFNvY2tldCwgU29ja2V0Q2hhbm5lbCBw YXJlbnQsIFNvY2tldCBwYXJlbnRTb2NrZXQsIFJlYWRhYmxlQnl0ZUNoYW5uZWwgcmVhZENoYW5u ZWwsIFdyaXRhYmxlQnl0ZUNoYW5uZWwgd3JpdGVDaGFubmVsLCBKU1NFbmdpbmUgZW5naW5lKSB0 aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgc3VwZXIobnVsbCk7CitAQCAtMjUxLDYgKzI1 MiwxMCBAQCBwdWJsaWMgY2xhc3MgSlNTU29ja2V0Q2hhbm5lbCBleHRlbmRzIFNvY2tldENoYW5u ZWwgeworICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgIH0KKyAKKysgICAgICAgIGlm IChwZW5kaW5nUG9zdEhhbmRzaGFrZSkgeworKyAgICAgICAgICAgIGZsdXNoUG9zdEhhbmRzaGFr ZSgpOworKyAgICAgICAgfQorKworICAgICAgICAgbG9uZyB1bndyYXBwZWQgPSAwOworICAgICAg ICAgbG9uZyBkZWNyeXB0ZWQgPSAwOworIAorQEAgLTI5OCw2ICszMDMsMTIgQEAgcHVibGljIGNs YXNzIEpTU1NvY2tldENoYW5uZWwgZXh0ZW5kcyBTb2NrZXRDaGFubmVsIHsKKyAKKyAgICAgICAg ICAgICAgICAgcmVhZEJ1ZmZlci5jb21wYWN0KCk7CisgCisrICAgICAgICAgICAgICAgIC8vIEhh bmRsZSBUTFMgMS4zIHBvc3QtaGFuZHNoYWtlIGF1dGggKENlcnRpZmljYXRlUmVxdWVzdCkKKysg ICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5nZXRIYW5kc2hha2VTdGF0dXMoKSA9PSBTU0xFbmdp bmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURfV1JBUAorKyAgICAgICAgICAgICAgICAgICAg JiYgaGFuZHNoYWtlQ29tcGxldGVkKSB7CisrICAgICAgICAgICAgICAgICAgICBmbHVzaFBvc3RI YW5kc2hha2UoKTsKKysgICAgICAgICAgICAgICAgfQorKworICAgICAgICAgICAgICAgICAvLyBJ ZiB3ZSBjb25zdW1lZCBieXRlcywgdGhlcmUgaXMgbm93IHJvb20gaW4gcmVhZEJ1ZmZlciBmb3Ig c29tZQorICAgICAgICAgICAgICAgICAvLyBtb3JlLiAgRXZlbiBpZiBkc3RzIGFyZSBmdWxsLCB3 ZSBtYXkgYmUgYWJsZSB0byBjb25zdW1lIG1vcmUKKyAgICAgICAgICAgICAgICAgLy8gYnl0ZXMg aW4gYW5vdGhlciBjYWxsIHRvIHVud3JhcCgpLgorQEAgLTMxNiwxMiArMzI3LDM5IEBAIHB1Ymxp YyBjbGFzcyBKU1NTb2NrZXRDaGFubmVsIGV4dGVuZHMgU29ja2V0Q2hhbm5lbCB7CisgICAgICAg ICByZXR1cm4gKGludCkgd3JpdGUobmV3IEJ5dGVCdWZmZXJbXSB7IHNyYyB9KTsKKyAgICAgfQor IAorKyAgICBwcml2YXRlIHZvaWQgZmx1c2hQb3N0SGFuZHNoYWtlKCkgdGhyb3dzIElPRXhjZXB0 aW9uIHsKKysgICAgICAgIGlmICghcGVuZGluZ1Bvc3RIYW5kc2hha2UpIHsKKysgICAgICAgICAg ICB3cml0ZUJ1ZmZlci5jbGVhcigpOworKyAgICAgICAgfQorKyAgICAgICAgU1NMRW5naW5lUmVz dWx0IHdyOworKyAgICAgICAgZG8geworKyAgICAgICAgICAgIHdyID0gZW5naW5lLndyYXAobmV3 IEJ5dGVCdWZmZXJbMF0sIDAsIDAsIHdyaXRlQnVmZmVyKTsKKysgICAgICAgICAgICB3cml0ZUJ1 ZmZlci5mbGlwKCk7CisrICAgICAgICAgICAgd2hpbGUgKHdyaXRlQnVmZmVyLmhhc1JlbWFpbmlu ZygpKSB7CisrICAgICAgICAgICAgICAgIGludCBuID0gd3JpdGVDaGFubmVsLndyaXRlKHdyaXRl QnVmZmVyKTsKKysgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkgeworKyAgICAgICAgICAgICAg ICAgICAgd3JpdGVCdWZmZXIuY29tcGFjdCgpOworKyAgICAgICAgICAgICAgICAgICAgcGVuZGlu Z1Bvc3RIYW5kc2hha2UgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworKyAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHdyaXRlQnVmZmVy LmNvbXBhY3QoKTsKKysgICAgICAgIH0gd2hpbGUgKHdyLmdldEhhbmRzaGFrZVN0YXR1cygpID09 IFNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMuTkVFRF9XUkFQKTsKKysgICAgICAgIHBl bmRpbmdQb3N0SGFuZHNoYWtlID0gZmFsc2U7CisrICAgIH0KKysKKyAgICAgQE92ZXJyaWRlCisg ICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgbG9uZyB3cml0ZShCeXRlQnVmZmVyW10gc3JjcywgaW50 IG9mZnNldCwgaW50IGxlbmd0aCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgIGlmIChv dXRib3VuZENsb3NlZCkgeworICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgIH0KKyAK KysgICAgICAgIGlmIChwZW5kaW5nUG9zdEhhbmRzaGFrZSkgeworKyAgICAgICAgICAgIGZsdXNo UG9zdEhhbmRzaGFrZSgpOworKyAgICAgICAgICAgIGlmIChwZW5kaW5nUG9zdEhhbmRzaGFrZSkg eworKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9 CisgICAgICAgICB3cml0ZUJ1ZmZlci5jbGVhcigpOworIAorICAgICAgICAgQnl0ZUJ1ZmZlciBk c3QgPSB3cml0ZUJ1ZmZlcjsKKy0tIAorMi41NS4wCisKCmRpZmYgLS1naXQgYS8wMDAyLUludGVn cmF0ZS1wb3N0LWhhbmRzaGFrZS1hdXRoLWludG8tdGhlLWhhbmRzaGFrZS1zdGEucGF0Y2ggYi8w MDAyLUludGVncmF0ZS1wb3N0LWhhbmRzaGFrZS1hdXRoLWludG8tdGhlLWhhbmRzaGFrZS1zdGEu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFmNTEwMQotLS0gL2Rl di9udWxsCisrKyBiLzAwMDItSW50ZWdyYXRlLXBvc3QtaGFuZHNoYWtlLWF1dGgtaW50by10aGUt aGFuZHNoYWtlLXN0YS5wYXRjaApAQCAtMCwwICsxLDMyNCBAQAorRnJvbSBhODk2ODlkZjZkNzAx ZjExNmI3ZDMzODBhZTE1ZDRlNjUzYWU1NzAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogTWFyY28gRmFyZ2V0dGEgPG1mYXJnZXR0QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDE3IEF1 ZyAyMDI2IDE5OjM2OjQ0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBJbnRlZ3JhdGUgcG9z dC1oYW5kc2hha2UgYXV0aCBpbnRvIHRoZSBoYW5kc2hha2Ugc3RhdGUKKyBtYWNoaW5lCisKK1Ro ZSBwcmV2aW91cyBmaXggYnJva2Ugb3V0IG9mIHRoZSB1bndyYXAoKSBkby13aGlsZSBsb29wIGFz IGEKK3NwZWNpYWwgY2FzZSB3aGVuIHdyaXRlX2J1ZiBncmV3IGFmdGVyIGEgY29tcGxldGVkIGhh bmRzaGFrZSwgYW5kCithZGRlZCBmbHVzaFBvc3RIYW5kc2hha2UoKSBhcyBhIHNlcGFyYXRlLCBw YXJhbGxlbCBwYXRoIG91dHNpZGUgdGhlCitub3JtYWwgaGFuZHNoYWtlIHN0YXRlIG1hY2hpbmUu IFRoaXMgbGVmdCBzZXZlcmFsIGdhcHM6IE5FRURfVEFTSword2FzIG5vdCBmdWxseSBkcml2ZW4g ZHVyaW5nIGZsdXNoLCB3cmFwKCkgaGFkIG5vIHN0YXR1cyBjaGVjayBhbmQKK2NvdWxkIHNwaW4g b24gQlVGRkVSX09WRVJGTE9XLCBhbmQgd3JpdGVfYnVmIGdyb3d0aCBhbG9uZSBjb3VsZCBub3QK K2Rpc3Rpbmd1aXNoIGdlbnVpbmUgcG9zdC1oYW5kc2hha2UgYXV0aCBmcm9tIG9yZGluYXJ5IGxl ZnRvdmVyCitjaXBoZXJ0ZXh0LgorCitGb2xkIHBvc3QtaGFuZHNoYWtlIGF1dGggaW50byB1cGRh dGVIYW5kc2hha2VTdGF0ZSgpIHNvIGl0IGlzCitoYW5kbGVkIGJ5IHRoZSBzYW1lIE5FRURfV1JB UC9ORUVEX1RBU0sgbWFjaGluZXJ5IGFzIHRoZSBpbml0aWFsCitoYW5kc2hha2UsIGFkZCBhIHBv c3RfaGFuZHNoYWtlX2F1dGhfcGVuZGluZyBmbGFnIChzZXQgb25seSB3aGVuCitQUi5SZWFkKCkg ZGVtb25zdHJhYmx5IGdyb3dzIHdyaXRlX2J1ZikgdG8gZGlzYW1iaWd1YXRlIGl0IGZyb20KK2xl ZnRvdmVyIGNpcGhlcnRleHQsIGFuZCBoYXJkZW4gZmx1c2hQb3N0SGFuZHNoYWtlKCkgd2l0aCBz dGF0dXMKK2NoZWNrcywgc3RhbGwgZGV0ZWN0aW9uLCBhbmQgZnVsbCBORUVEX1RBU0sgaGFuZGxp bmcgc28gbm9uLWJsb2NraW5nCitjaGFubmVscyByZXRyeSBjb3JyZWN0bHkgaW5zdGVhZCBvZiBz cGlubmluZy4KKworQXNzaXN0ZWQtQnk6IENsYXVkZSBPcHVzIDQuNiA8bm9yZXBseUBhbnRocm9w aWMuY29tPgorLS0tCisgLi4uL29yZy9tb3ppbGxhL2pzcy9zc2wvamF2YXgvSlNTRW5naW5lLmph dmEgIHwgIDExICsrCisgLi4uL2pzcy9zc2wvamF2YXgvSlNTRW5naW5lUmVmZXJlbmNlSW1wbC5q YXZhIHwgIDUwICsrKysrKysrLQorIC4uLi9qc3Mvc3NsL2phdmF4L0pTU1NvY2tldENoYW5uZWwu amF2YSAgICAgICB8IDEwMCArKysrKysrKysrKysrKy0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDEz OCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Jhc2Uvc3Jj L21haW4vamF2YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZS5qYXZhIGIvYmFz ZS9zcmMvbWFpbi9qYXZhL29yZy9tb3ppbGxhL2pzcy9zc2wvamF2YXgvSlNTRW5naW5lLmphdmEK K2luZGV4IDMyOWRjZDFjLi4yNDVjMDE4YiAxMDA2NDQKKy0tLSBhL2Jhc2Uvc3JjL21haW4vamF2 YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZS5qYXZhCisrKysgYi9iYXNlL3Ny Yy9tYWluL2phdmEvb3JnL21vemlsbGEvanNzL3NzbC9qYXZheC9KU1NFbmdpbmUuamF2YQorQEAg LTIwMCw2ICsyMDAsMTMgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIEpTU0VuZ2luZSBleHRlbmRz IGphdmF4Lm5ldC5zc2wuU1NMRW5naW5lIHsKKyAgICAgICovCisgICAgIHByb3RlY3RlZCBib29s ZWFuIGlzX2luYm91bmRfY2xvc2VkOworIAorKyAgICAvKioKKysgICAgICogV2hldGhlciBQUi5S ZWFkKCkgaW5zaWRlIHVud3JhcCgpIGRldGVjdGVkIGEgVExTIDEuMyBwb3N0LWhhbmRzaGFrZQor KyAgICAgKiBhdXRoIGV2ZW50IChlLmcuIENlcnRpZmljYXRlUmVxdWVzdCkgdGhhdCBwcm9kdWNl ZCBuZXcgZGF0YSBpbgorKyAgICAgKiB3cml0ZV9idWYuIENsZWFyZWQgYWZ0ZXIgd3JhcCgpIGRy YWlucyB0aGUgcmVzcG9uc2UuCisrICAgICAqLworKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBwb3N0 X2hhbmRzaGFrZV9hdXRoX3BlbmRpbmc7CisrCisgICAgIC8qKgorICAgICAgKiBTZXQgb2YgY29u ZmlndXJhdGlvbiBvcHRpb25zIHRvIGVuYWJsZSB2aWEgU1NMX09wdGlvblNldCguLi4pLgorICAg ICAgKi8KK0BAIC0xMDY2LDYgKzEwNzMsMTAgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIEpTU0Vu Z2luZSBleHRlbmRzIGphdmF4Lm5ldC5zc2wuU1NMRW5naW5lIHsKKyAgICAgICAgIHJldHVybiBp c19vdXRib3VuZF9jbG9zZWQ7CisgICAgIH0KKyAKKysgICAgcHVibGljIGJvb2xlYW4gaXNQb3N0 SGFuZHNoYWtlQXV0aFBlbmRpbmcoKSB7CisrICAgICAgICByZXR1cm4gcG9zdF9oYW5kc2hha2Vf YXV0aF9wZW5kaW5nOworKyAgICB9CisrCisgICAgIC8qKgorICAgICAgKiBHZXRzIHRoZSBjdXJy ZW50IHNlY3VyaXR5IHN0YXR1cyBvZiB0aGlzIEpTU0VuZ2luZSBpbnN0YW5jZS4KKyAgICAgICoK K2RpZmYgLS1naXQgYS9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21vemlsbGEvanNzL3NzbC9qYXZh eC9KU1NFbmdpbmVSZWZlcmVuY2VJbXBsLmphdmEgYi9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21v emlsbGEvanNzL3NzbC9qYXZheC9KU1NFbmdpbmVSZWZlcmVuY2VJbXBsLmphdmEKK2luZGV4IDdj ZDE1MWM4Li4xNDA4NmNiYSAxMDA2NDQKKy0tLSBhL2Jhc2Uvc3JjL21haW4vamF2YS9vcmcvbW96 aWxsYS9qc3Mvc3NsL2phdmF4L0pTU0VuZ2luZVJlZmVyZW5jZUltcGwuamF2YQorKysrIGIvYmFz ZS9zcmMvbWFpbi9qYXZhL29yZy9tb3ppbGxhL2pzcy9zc2wvamF2YXgvSlNTRW5naW5lUmVmZXJl bmNlSW1wbC5qYXZhCitAQCAtMTEyNiw2ICsxMTI2LDE0IEBAIHB1YmxpYyBjbGFzcyBKU1NFbmdp bmVSZWZlcmVuY2VJbXBsIGV4dGVuZHMgSlNTRW5naW5lIHsKKyAKKyAgICAgICAgICAgICBzc2xf ZXhjZXB0aW9uID0gY2hlY2tTU0xBbGVydHMoKTsKKyAgICAgICAgICAgICBzZWVuX2V4Y2VwdGlv biA9IChzc2xfZXhjZXB0aW9uICE9IG51bGwpOworKworKyAgICAgICAgICAgIC8vIFRMUyAxLjMg cG9zdC1oYW5kc2hha2U6IE5TUyBtYXkgaGF2ZSBxdWV1ZWQgcmVzcG9uc2UgZGF0YQorKyAgICAg ICAgICAgIC8vIChlLmcuIENlcnRpZmljYXRlIGZvciBhIENlcnRpZmljYXRlUmVxdWVzdCkuCisr ICAgICAgICAgICAgaWYgKCFzZWVuX2V4Y2VwdGlvbiAmJiBCdWZmZXIuUmVhZENhcGFjaXR5KHdy aXRlX2J1ZikgPiAwKSB7CisrICAgICAgICAgICAgICAgIGRlYnVnKCJKU1NFbmdpbmUudXBkYXRl SGFuZHNoYWtlU3RhdGUoKSAtIHBvc3QtaGFuZHNoYWtlIE5FRURfV1JBUCIpOworKyAgICAgICAg ICAgICAgICBoYW5kc2hha2Vfc3RhdGUgPSBTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVz Lk5FRURfV1JBUDsKKysgICAgICAgICAgICB9CisrCisgICAgICAgICAgICAgcmV0dXJuOworICAg ICAgICAgfQorIAorQEAgLTExNTIsNiArMTE2MCwyNiBAQCBwdWJsaWMgY2xhc3MgSlNTRW5naW5l UmVmZXJlbmNlSW1wbCBleHRlbmRzIEpTU0VuZ2luZSB7CisgICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICAgfQorIAorKyAgICAgICAgLy8gUG9zdC1oYW5kc2hha2Ugc3RhdGU6IHRoZSBpbml0 aWFsIGhhbmRzaGFrZSBjb21wbGV0ZWQgYnV0CisrICAgICAgICAvLyBoYW5kc2hha2Vfc3RhdGUg aXMgbm90IE5PVF9IQU5EU0hBS0lORyBvciBGSU5JU0hFRCAoZS5nLiBzZXQgdG8KKysgICAgICAg IC8vIE5FRURfV1JBUCBieSB0aGUgd3JpdGVfYnVmIGNoZWNrIGFib3ZlKS4gVHJhbnNpdGlvbiBi YWNrIHRvCisrICAgICAgICAvLyBOT1RfSEFORFNIQUtJTkcgb25jZSB3cml0ZV9idWYgaXMgZHJh aW5lZDsgZG8gTk9UIGZhbGwgdGhyb3VnaAorKyAgICAgICAgLy8gdG8gRm9yY2VIYW5kc2hha2Uv ZmlyZUhhbmRzaGFrZUNvbXBsZXRlLgorKyAgICAgICAgaWYgKCFzdGVwX2hhbmRzaGFrZSAmJiBz c2xfZmQuaGFuZHNoYWtlQ29tcGxldGUpIHsKKysgICAgICAgICAgICBkZWJ1ZygiSlNTRW5naW5l LnVwZGF0ZUhhbmRzaGFrZVN0YXRlKCkgLSBwb3N0LWhhbmRzaGFrZSwgd3JpdGVfYnVmLnJlYWQ9 IiArIEJ1ZmZlci5SZWFkQ2FwYWNpdHkod3JpdGVfYnVmKSk7CisrICAgICAgICAgICAgdW5rbm93 bl9zdGF0ZV9jb3VudCA9IDA7CisrCisrICAgICAgICAgICAgc3NsX2V4Y2VwdGlvbiA9IGNoZWNr U1NMQWxlcnRzKCk7CisrICAgICAgICAgICAgc2Vlbl9leGNlcHRpb24gPSAoc3NsX2V4Y2VwdGlv biAhPSBudWxsKTsKKysKKysgICAgICAgICAgICBpZiAoIXNlZW5fZXhjZXB0aW9uICYmIEJ1ZmZl ci5SZWFkQ2FwYWNpdHkod3JpdGVfYnVmKSA+IDApIHsKKysgICAgICAgICAgICAgICAgaGFuZHNo YWtlX3N0YXRlID0gU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cy5ORUVEX1dSQVA7Cisr ICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgaGFuZHNoYWtlX3N0YXRlID0g U1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cy5OT1RfSEFORFNIQUtJTkc7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysKKyAgICAgICAgIC8v IFNpbmNlIHdlJ3JlIG5vdCBvYnZpb3VzbHkgZG9uZSBoYW5kc2hha2luZywgYW5kIHRoZSBsYXN0 IHRpbWUgd2UKKyAgICAgICAgIC8vIHdlcmUgY2FsbGVkLCB3ZSB3ZXJlIHN0aWxsIGhhbmRzaGFr aW5nLCBzdGVwIHRoZSBoYW5kc2hha2UuCisgICAgICAgICBkZWJ1ZygiSlNTRW5naW5lLnVwZGF0 ZUhhbmRzaGFrZVN0YXRlKCkgLSBmb3JjaW5nIGhhbmRzaGFrZSIpOworQEAgLTEzNjMsNiArMTM5 MSw3IEBAIHB1YmxpYyBjbGFzcyBKU1NFbmdpbmVSZWZlcmVuY2VJbXBsIGV4dGVuZHMgSlNTRW5n aW5lIHsKKyAgICAgICAgICAgICB1cGRhdGVIYW5kc2hha2VTdGF0ZSgpOworIAorICAgICAgICAg ICAgIGludCBtYXhfZHN0X3NpemUgPSBjb21wdXRlU2l6ZShkc3RzLCBvZmZzZXQsIGxlbmd0aCk7 CisrICAgICAgICAgICAgbG9uZyB3cml0ZV9idWZfYmVmb3JlID0gQnVmZmVyLlJlYWRDYXBhY2l0 eSh3cml0ZV9idWYpOworICAgICAgICAgICAgIGJ5dGVbXSBhcHBfYnVmZmVyID0gUFIuUmVhZChz c2xfZmQsIG1heF9kc3Rfc2l6ZSk7CisgICAgICAgICAgICAgaW50IGVycm9yID0gUFIuR2V0RXJy b3IoKTsKKyAgICAgICAgICAgICBkZWJ1ZygiSlNTRW5naW5lLnVud3JhcCgpIC0gIiArIGFwcF9i dWZmZXIgKyAiIGVycm9yPSIgKyBlcnJvclRleHQoZXJyb3IpKTsKK0BAIC0xMzgzLDEyICsxNDEy LDIyIEBAIHB1YmxpYyBjbGFzcyBKU1NFbmdpbmVSZWZlcmVuY2VJbXBsIGV4dGVuZHMgSlNTRW5n aW5lIHsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAKKysgICAgICAgICAg ICAvLyBUTFMgMS4zIHBvc3QtaGFuZHNoYWtlIGF1dGg6IFBSLlJlYWQoKSBtYXkgaGF2ZSB0cmln Z2VyZWQgdGhlCisrICAgICAgICAgICAgLy8gYXN5bmMgY2VydC1hdXRoIGNhbGxiYWNrIChlLmcu IHZhbGlkYXRpbmcgYSBjbGllbnQncworKyAgICAgICAgICAgIC8vIHBvc3QtaGFuZHNoYWtlIGNl cnRpZmljYXRlKSB3aXRob3V0IHByb2R1Y2luZyBhbnkgd3JpdGVfYnVmCisrICAgICAgICAgICAg Ly8gb3V0cHV0LiBSZXBvcnQgTkVFRF9UQVNLIGhlcmUgc2luY2UgcmVzdWx0LmdldEhhbmRzaGFr ZVN0YXR1cygpCisrICAgICAgICAgICAgLy8gKHVubGlrZSBlbmdpbmUuZ2V0SGFuZHNoYWtlU3Rh dHVzKCkpIHdvbid0IG90aGVyd2lzZSByZWZsZWN0IGl0LgorKyAgICAgICAgICAgIGlmIChjaGVj a05lZWRDZXJ0VmFsaWRhdGlvbigpKSB7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAg ICAgICAgIH0KKysKKyAgICAgICAgICAgICAvLyBUTFMgMS4zIHBvc3QtaGFuZHNoYWtlIGF1dGg6 IFBSLlJlYWQoKSBtYXkgaGF2ZSBwcm9jZXNzZWQgYQorICAgICAgICAgICAgIC8vIENlcnRpZmlj YXRlUmVxdWVzdCwgcHV0dGluZyB0aGUgQ2VydGlmaWNhdGUgcmVzcG9uc2UgaW4gd3JpdGVfYnVm LgorLSAgICAgICAgICAgIC8vIEJyZWFrIHNvIHRoZSBjYWxsZXIgY2FuIGNhbGwgd3JhcCgpIHRv IHNlbmQgaXQuCisrICAgICAgICAgICAgLy8gRGV0ZWN0IHRoaXMgYnkgY2hlY2tpbmcgaWYgUFIu UmVhZCgpIGluY3JlYXNlZCB3cml0ZV9idWYuCisgICAgICAgICAgICAgaWYgKGhhbmRzaGFrZV9h bHJlYWR5X2NvbXBsZXRlICYmICFzZWVuX2V4Y2VwdGlvbgorLSAgICAgICAgICAgICAgICAmJiBC dWZmZXIuUmVhZENhcGFjaXR5KHdyaXRlX2J1ZikgPiAwKSB7CisrICAgICAgICAgICAgICAgICYm IEJ1ZmZlci5SZWFkQ2FwYWNpdHkod3JpdGVfYnVmKSA+IHdyaXRlX2J1Zl9iZWZvcmUpIHsKKyAg ICAgICAgICAgICAgICAgaGFuZHNoYWtlX3N0YXRlID0gU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFr ZVN0YXR1cy5ORUVEX1dSQVA7CisrICAgICAgICAgICAgICAgIHBvc3RfaGFuZHNoYWtlX2F1dGhf cGVuZGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIH0K KyAKK0BAIC0xNDE3LDcgKzE0NTYsOCBAQCBwdWJsaWMgY2xhc3MgSlNTRW5naW5lUmVmZXJlbmNl SW1wbCBleHRlbmRzIEpTU0VuZ2luZSB7CisgICAgICAgICBpZiAoaXNfaW5ib3VuZF9jbG9zZWQp IHsKKyAgICAgICAgICAgICBkZWJ1ZygiU29ja2V0IGlzIGN1cnJlbnRseSBjbG9zZWQuIik7Cisg ICAgICAgICAgICAgaGFuZHNoYWtlX3N0YXR1cyA9IFNTTEVuZ2luZVJlc3VsdC5TdGF0dXMuQ0xP U0VEOworLSAgICAgICAgfSBlbHNlIGlmIChoYW5kc2hha2VfYWxyZWFkeV9jb21wbGV0ZSAmJiBz cmNfY2FwYWNpdHkgPiAwICYmIGFwcF9kYXRhID09IDApIHsKKysgICAgICAgIH0gZWxzZSBpZiAo aGFuZHNoYWtlX2FscmVhZHlfY29tcGxldGUgJiYgc3JjX2NhcGFjaXR5ID4gMCAmJiBhcHBfZGF0 YSA9PSAwCisrICAgICAgICAgICAgICAgICAgICYmIGhhbmRzaGFrZV9zdGF0ZSAhPSBTU0xFbmdp bmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURfV1JBUCkgeworICAgICAgICAgICAgIGRlYnVn KCJVbmRlcmZsb3dlZDogcHJvZHVjZWQgbm8gYXBwbGljYXRpb24gZGF0YSB3aGVuIHdlIGV4cGVj dGVkIHRvLiIpOworICAgICAgICAgICAgIGhhbmRzaGFrZV9zdGF0dXMgPSBTU0xFbmdpbmVSZXN1 bHQuU3RhdHVzLkJVRkZFUl9VTkRFUkZMT1c7CisgICAgICAgICB9CitAQCAtMTcwNiw2ICsxNzQ2 LDEwIEBAIHB1YmxpYyBjbGFzcyBKU1NFbmdpbmVSZWZlcmVuY2VJbXBsIGV4dGVuZHMgSlNTRW5n aW5lIHsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9IHdoaWxlICh0aGlzX3NyY193cml0ZSAh PSAwIHx8IHRoaXNfZHN0X3dyaXRlICE9IDApOworIAorKyAgICAgICAgaWYgKHBvc3RfaGFuZHNo YWtlX2F1dGhfcGVuZGluZyAmJiBCdWZmZXIuUmVhZENhcGFjaXR5KHdyaXRlX2J1ZikgPT0gMCkg eworKyAgICAgICAgICAgIHBvc3RfaGFuZHNoYWtlX2F1dGhfcGVuZGluZyA9IGZhbHNlOworKyAg ICAgICAgfQorKworICAgICAgICAgLy8gQ2hlY2sgZm9yIG5ldyBvdXRib3VuZCBhbGVydHMgdG8g dGhlIHBlZXIgYW5kIGZpcmUgdGhlIHJlbGF0ZWQgZXZlbnRzCisgICAgICAgICBTU0xFeGNlcHRp b24gbmV3U1NMRXhjZXB0aW9uID0gY2hlY2tTU0xBbGVydHMoKTsKKyAgICAgICAgIGlmICghc2Vl bl9leGNlcHRpb24gJiYgc3NsX2V4Y2VwdGlvbiA9PSBudWxsICYmIG5ld1NTTEV4Y2VwdGlvbiAh PSBudWxsKSB7CitkaWZmIC0tZ2l0IGEvYmFzZS9zcmMvbWFpbi9qYXZhL29yZy9tb3ppbGxhL2pz cy9zc2wvamF2YXgvSlNTU29ja2V0Q2hhbm5lbC5qYXZhIGIvYmFzZS9zcmMvbWFpbi9qYXZhL29y Zy9tb3ppbGxhL2pzcy9zc2wvamF2YXgvSlNTU29ja2V0Q2hhbm5lbC5qYXZhCitpbmRleCBlOWIz ZTZhMy4uNWE3MWVjM2EgMTAwNjQ0CistLS0gYS9iYXNlL3NyYy9tYWluL2phdmEvb3JnL21vemls bGEvanNzL3NzbC9qYXZheC9KU1NTb2NrZXRDaGFubmVsLmphdmEKKysrKyBiL2Jhc2Uvc3JjL21h aW4vamF2YS9vcmcvbW96aWxsYS9qc3Mvc3NsL2phdmF4L0pTU1NvY2tldENoYW5uZWwuamF2YQor QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljIGNsYXNzIEpTU1NvY2tldENoYW5uZWwgZXh0ZW5kcyBT b2NrZXRDaGFubmVsIHsKKyAgICAgcHJpdmF0ZSBCeXRlQnVmZmVyIHdyaXRlQnVmZmVyOworIAor ICAgICBwcml2YXRlIGJvb2xlYW4gaGFuZHNoYWtlQ29tcGxldGVkID0gZmFsc2U7CistICAgIHBy aXZhdGUgYm9vbGVhbiBwZW5kaW5nUG9zdEhhbmRzaGFrZSA9IGZhbHNlOworKyAgICBwcml2YXRl IGJvb2xlYW4gcG9zdEhhbmRzaGFrZVBlbmRpbmcgPSBmYWxzZTsKKyAKKyAgICAgcHVibGljIEpT U1NvY2tldENoYW5uZWwoSlNTU29ja2V0IHNzbFNvY2tldCwgU29ja2V0Q2hhbm5lbCBwYXJlbnQs IFNvY2tldCBwYXJlbnRTb2NrZXQsIFJlYWRhYmxlQnl0ZUNoYW5uZWwgcmVhZENoYW5uZWwsIFdy aXRhYmxlQnl0ZUNoYW5uZWwgd3JpdGVDaGFubmVsLCBKU1NFbmdpbmUgZW5naW5lKSB0aHJvd3Mg SU9FeGNlcHRpb24geworICAgICAgICAgc3VwZXIobnVsbCk7CitAQCAtMjUyLDE0ICsyNTIsMTgg QEAgcHVibGljIGNsYXNzIEpTU1NvY2tldENoYW5uZWwgZXh0ZW5kcyBTb2NrZXRDaGFubmVsIHsK KyAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9CisgCistICAgICAgICBpZiAocGVu ZGluZ1Bvc3RIYW5kc2hha2UpIHsKKy0gICAgICAgICAgICBmbHVzaFBvc3RIYW5kc2hha2UoKTsK Ky0gICAgICAgIH0KKy0KKyAgICAgICAgIGxvbmcgdW53cmFwcGVkID0gMDsKKyAgICAgICAgIGxv bmcgZGVjcnlwdGVkID0gMDsKKysgICAgICAgIGludCBwb3N0SGFuZHNoYWtlT3BzID0gMDsKKyAK KyAgICAgICAgIHRyeSB7CisrICAgICAgICAgICAgaWYgKHBvc3RIYW5kc2hha2VQZW5kaW5nKSB7 CisrICAgICAgICAgICAgICAgIGZsdXNoUG9zdEhhbmRzaGFrZSgpOworKyAgICAgICAgICAgICAg ICBpZiAocG9zdEhhbmRzaGFrZVBlbmRpbmcpIHsKKysgICAgICAgICAgICAgICAgICAgIHJldHVy biAwOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKworICAgICAgICAgICAg IFNTTEVuZ2luZVJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICAgZG8geworICAgICAgICAgICAg ICAgICBpbnQgbiA9IHJlbW90ZVJlYWQoKTsKK0BAIC0zMDMsMTAgKzMwNywzOSBAQCBwdWJsaWMg Y2xhc3MgSlNTU29ja2V0Q2hhbm5lbCBleHRlbmRzIFNvY2tldENoYW5uZWwgeworIAorICAgICAg ICAgICAgICAgICByZWFkQnVmZmVyLmNvbXBhY3QoKTsKKyAKKy0gICAgICAgICAgICAgICAgLy8g SGFuZGxlIFRMUyAxLjMgcG9zdC1oYW5kc2hha2UgYXV0aCAoQ2VydGlmaWNhdGVSZXF1ZXN0KQor LSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmdldEhhbmRzaGFrZVN0YXR1cygpID09IFNTTEVu Z2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMuTkVFRF9XUkFQCistICAgICAgICAgICAgICAgICAg ICAmJiBoYW5kc2hha2VDb21wbGV0ZWQpIHsKKy0gICAgICAgICAgICAgICAgICAgIGZsdXNoUG9z dEhhbmRzaGFrZSgpOworKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgTkVFRF9XUkFQIGFuZCBO RUVEX1RBU0sgYWZ0ZXIgaGFuZHNoYWtlIGNvbXBsZXRpb24uCisrICAgICAgICAgICAgICAgIC8v IE5FRURfV1JBUCBtYXkgY29tZSBmcm9tIHBvc3QtaGFuZHNoYWtlIGF1dGggKENlcnRpZmljYXRl UmVxdWVzdCkKKysgICAgICAgICAgICAgICAgLy8gb3IgZnJvbSBsZWZ0b3ZlciBjaXBoZXJ0ZXh0 IGluIHdyaXRlX2J1ZjsgYm90aCBuZWVkIGZsdXNoaW5nLAorKyAgICAgICAgICAgICAgICAvLyBi dXQgb25seSBnZW51aW5lIHBvc3QtaGFuZHNoYWtlIGF1dGggY291bnRzIHRvd2FyZCB0aGUgc2Fm ZXR5IGxpbWl0LgorKyAgICAgICAgICAgICAgICBpZiAoaGFuZHNoYWtlQ29tcGxldGVkKSB7Cisr ICAgICAgICAgICAgICAgICAgICBTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzIGhzU3Rh dHVzID0gcmVzdWx0LmdldEhhbmRzaGFrZVN0YXR1cygpOworKyAgICAgICAgICAgICAgICAgICAg aWYgKGhzU3RhdHVzID09IFNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMuTkVFRF9XUkFQ KSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpc1Bvc3RIYW5kc2hha2UgPSBl bmdpbmUuaXNQb3N0SGFuZHNoYWtlQXV0aFBlbmRpbmcoKTsKKysgICAgICAgICAgICAgICAgICAg ICAgICBmbHVzaFBvc3RIYW5kc2hha2UoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAo cG9zdEhhbmRzaGFrZVBlbmRpbmcpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGRlY3J5cHRlZDsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGlzUG9zdEhhbmRzaGFrZSkgeworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwb3N0SGFuZHNoYWtlT3BzKys7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQor KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoc1N0YXR1cyA9PSBTU0xFbmdpbmVSZXN1 bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURfVEFTSykgeworKyAgICAgICAgICAgICAgICAgICAgICAg IFJ1bm5hYmxlIHRhc2sgPSBlbmdpbmUuZ2V0RGVsZWdhdGVkVGFzaygpOworKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmICh0YXNrICE9IG51bGwpIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFzay5ydW4oKTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAg ICAgICAgICAgICAgICAgcG9zdEhhbmRzaGFrZU9wcysrOworKyAgICAgICAgICAgICAgICAgICAg ICAgIC8vIEFmdGVyIHRhc2ssIGEgTkVFRF9XUkFQIG1heSBmb2xsb3cgKGUuZy4gdG8gc2VuZAor KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBhdXRoIHJlc3VsdCkuIEZsdXNoIGl0IG5v dyBsaWtlIGZpbmlzaENvbm5lY3QoKS4KKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5n aW5lLmdldEhhbmRzaGFrZVN0YXR1cygpID09IFNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0 dXMuTkVFRF9XUkFQKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoUG9zdEhh bmRzaGFrZSgpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zdEhhbmRzaGFr ZVBlbmRpbmcpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWNy eXB0ZWQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAg ICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICBp ZiAocG9zdEhhbmRzaGFrZU9wcyA+IDEwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgdGhy b3cgbmV3IElPRXhjZXB0aW9uKCJFeGNlZWRlZCBtYXhpbXVtIHBvc3QtaGFuZHNoYWtlIG9wZXJh dGlvbnMgZHVyaW5nIHJlYWQiKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgfQorIAorICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBjb25zdW1lZCBieXRlcywgdGhl cmUgaXMgbm93IHJvb20gaW4gcmVhZEJ1ZmZlciBmb3Igc29tZQorQEAgLTMyMiwzMCArMzU1LDU2 IEBAIHB1YmxpYyBjbGFzcyBKU1NTb2NrZXRDaGFubmVsIGV4dGVuZHMgU29ja2V0Q2hhbm5lbCB7 CisgICAgICAgICByZXR1cm4gZGVjcnlwdGVkOworICAgICB9CisgCistICAgIEBPdmVycmlkZQor LSAgICBwdWJsaWMgaW50IHdyaXRlKEJ5dGVCdWZmZXIgc3JjKSB0aHJvd3MgSU9FeGNlcHRpb24g eworLSAgICAgICAgcmV0dXJuIChpbnQpIHdyaXRlKG5ldyBCeXRlQnVmZmVyW10geyBzcmMgfSk7 CistICAgIH0KKy0KKyAgICAgcHJpdmF0ZSB2b2lkIGZsdXNoUG9zdEhhbmRzaGFrZSgpIHRocm93 cyBJT0V4Y2VwdGlvbiB7CistICAgICAgICBpZiAoIXBlbmRpbmdQb3N0SGFuZHNoYWtlKSB7Cisr ICAgICAgICBpZiAoIXBvc3RIYW5kc2hha2VQZW5kaW5nKSB7CisgICAgICAgICAgICAgd3JpdGVC dWZmZXIuY2xlYXIoKTsKKyAgICAgICAgIH0KKysKKyAgICAgICAgIFNTTEVuZ2luZVJlc3VsdCB3 cjsKKysgICAgICAgIFNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMgaHNTdGF0dXM7Cisg ICAgICAgICBkbyB7CisgICAgICAgICAgICAgd3IgPSBlbmdpbmUud3JhcChuZXcgQnl0ZUJ1ZmZl clswXSwgMCwgMCwgd3JpdGVCdWZmZXIpOworKworKyAgICAgICAgICAgIGlmICh3ci5nZXRTdGF0 dXMoKSAhPSBTU0xFbmdpbmVSZXN1bHQuU3RhdHVzLk9LCisrICAgICAgICAgICAgICAgICYmIHdy LmdldFN0YXR1cygpICE9IFNTTEVuZ2luZVJlc3VsdC5TdGF0dXMuQ0xPU0VEKSB7CisrICAgICAg ICAgICAgICAgIHBvc3RIYW5kc2hha2VQZW5kaW5nID0gZmFsc2U7CisrICAgICAgICAgICAgICAg IHRocm93IG5ldyBJT0V4Y2VwdGlvbigiVW5leHBlY3RlZCBzdGF0dXMgZnJvbSBwb3N0LWhhbmRz aGFrZSB3cmFwOiAiICsgd3IpOworKyAgICAgICAgICAgIH0KKysKKyAgICAgICAgICAgICB3cml0 ZUJ1ZmZlci5mbGlwKCk7CisgICAgICAgICAgICAgd2hpbGUgKHdyaXRlQnVmZmVyLmhhc1JlbWFp bmluZygpKSB7CisgICAgICAgICAgICAgICAgIGludCBuID0gd3JpdGVDaGFubmVsLndyaXRlKHdy aXRlQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAg ICAgICAgICAgd3JpdGVCdWZmZXIuY29tcGFjdCgpOworLSAgICAgICAgICAgICAgICAgICAgcGVu ZGluZ1Bvc3RIYW5kc2hha2UgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgcG9zdEhhbmRz aGFrZVBlbmRpbmcgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGlmICh3ci5ieXRl c1Byb2R1Y2VkKCkgPT0gMAorKyAgICAgICAgICAgICAgICAmJiB3ci5nZXRIYW5kc2hha2VTdGF0 dXMoKSA9PSBTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzLk5FRURfV1JBUCkgeworKyAg ICAgICAgICAgICAgICBwb3N0SGFuZHNoYWtlUGVuZGluZyA9IGZhbHNlOworKyAgICAgICAgICAg ICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlBvc3QtaGFuZHNoYWtlIHdyYXAgc3RhbGxlZCwg cHJvZHVjaW5nIG5vIGRhdGEiKTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaHNT dGF0dXMgPSB3ci5nZXRIYW5kc2hha2VTdGF0dXMoKTsKKysgICAgICAgICAgICBpZiAoaHNTdGF0 dXMgPT0gU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cy5ORUVEX1RBU0spIHsKKysgICAg ICAgICAgICAgICAgUnVubmFibGUgdGFzayA9IGVuZ2luZS5nZXREZWxlZ2F0ZWRUYXNrKCk7Cisr ICAgICAgICAgICAgICAgIGlmICh0YXNrICE9IG51bGwpIHsKKysgICAgICAgICAgICAgICAgICAg IHRhc2sucnVuKCk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgaHNTdGF0 dXMgPSBlbmdpbmUuZ2V0SGFuZHNoYWtlU3RhdHVzKCk7CisrICAgICAgICAgICAgfQorKworICAg ICAgICAgICAgIHdyaXRlQnVmZmVyLmNvbXBhY3QoKTsKKy0gICAgICAgIH0gd2hpbGUgKHdyLmdl dEhhbmRzaGFrZVN0YXR1cygpID09IFNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMuTkVF RF9XUkFQKTsKKy0gICAgICAgIHBlbmRpbmdQb3N0SGFuZHNoYWtlID0gZmFsc2U7CisrICAgICAg ICB9IHdoaWxlIChoc1N0YXR1cyA9PSBTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzLk5F RURfV1JBUCk7CisrCisrICAgICAgICBwb3N0SGFuZHNoYWtlUGVuZGluZyA9IGZhbHNlOworKyAg ICB9CisrCisrICAgIEBPdmVycmlkZQorKyAgICBwdWJsaWMgaW50IHdyaXRlKEJ5dGVCdWZmZXIg c3JjKSB0aHJvd3MgSU9FeGNlcHRpb24geworKyAgICAgICAgcmV0dXJuIChpbnQpIHdyaXRlKG5l dyBCeXRlQnVmZmVyW10geyBzcmMgfSk7CisgICAgIH0KKyAKKyAgICAgQE92ZXJyaWRlCitAQCAt MzU0LDEyICs0MTMsMTMgQEAgcHVibGljIGNsYXNzIEpTU1NvY2tldENoYW5uZWwgZXh0ZW5kcyBT b2NrZXRDaGFubmVsIHsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9CisgCist ICAgICAgICBpZiAocGVuZGluZ1Bvc3RIYW5kc2hha2UpIHsKKysgICAgICAgIGlmIChwb3N0SGFu ZHNoYWtlUGVuZGluZykgeworICAgICAgICAgICAgIGZsdXNoUG9zdEhhbmRzaGFrZSgpOworLSAg ICAgICAgICAgIGlmIChwZW5kaW5nUG9zdEhhbmRzaGFrZSkgeworKyAgICAgICAgICAgIGlmIChw b3N0SGFuZHNoYWtlUGVuZGluZykgeworICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg ICAgICAgICB9CisgICAgICAgICB9CisrCisgICAgICAgICB3cml0ZUJ1ZmZlci5jbGVhcigpOwor IAorICAgICAgICAgQnl0ZUJ1ZmZlciBkc3QgPSB3cml0ZUJ1ZmZlcjsKKy0tIAorMi41NS4wCisK CmRpZmYgLS1naXQgYS8wMDAzLUFkZC1KU1NTb2NrZXRDaGFubmVsLVRMUy0xLjMtcG9zdC1oYW5k c2hha2UtYXV0aC10ZXMucGF0Y2ggYi8wMDAzLUFkZC1KU1NTb2NrZXRDaGFubmVsLVRMUy0xLjMt cG9zdC1oYW5kc2hha2UtYXV0aC10ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMGU3NmVlZQotLS0gL2Rldi9udWxsCisrKyBiLzAwMDMtQWRkLUpTU1NvY2tldENo YW5uZWwtVExTLTEuMy1wb3N0LWhhbmRzaGFrZS1hdXRoLXRlcy5wYXRjaApAQCAtMCwwICsxLDQz MSBAQAorRnJvbSA4ZDJlYjRiMDM1N2Y2NDU2MWY3ZDRiZmQ1NzA4MTBhYWUxYTZlMDhjIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRnJhc2VyIFR3ZWVkYWxlIDxmdHdlZWRhbEByZWRo YXQuY29tPgorRGF0ZTogTW9uLCAzMSBBdWcgMjAyNiAwOTozNzoyOCAtMDQwMAorU3ViamVjdDog W1BBVENIIDMvM10gQWRkIEpTU1NvY2tldENoYW5uZWwgVExTIDEuMyBwb3N0LWhhbmRzaGFrZSBh dXRoIHRlc3QKKworQWRkIFRlc3RKU1NTb2NrZXRDaGFubmVsIHdpdGggdHdvIHRlc3QgbWV0aG9k czoKKworLSB0ZXN0UG9zdEhhbmRzaGFrZUF1dGg6IHNlcnZlciBhbmQgY2xpZW50IHBlcmZvcm0g YW4gaW5pdGlhbCBUTFMgMS4zCisgIGhhbmRzaGFrZSwgZXhjaGFuZ2UgZGF0YSwgdGhlbiB0aGUg c2VydmVyIHRyaWdnZXJzIHBvc3QtaGFuZHNoYWtlCisgIGNsaWVudCBhdXRoZW50aWNhdGlvbiB2 aWEgc3RhcnRIYW5kc2hha2UoKS4gIFZlcmlmaWVzIHRoYXQgdGhlCisgIGNsaWVudCdzIGNlcnRp ZmljYXRlIGlzIHByZXNlbnRlZCB0cmFuc3BhcmVudGx5IHRocm91Z2gKKyAgSlNTU29ja2V0Q2hh bm5lbC5yZWFkKCkgLT4gZmx1c2hQb3N0SGFuZHNoYWtlKCksIGFuZCB0aGF0IGRhdGEKKyAgZXhj aGFuZ2UgY29udGludWVzIG5vcm1hbGx5IGFmdGVyd2FyZC4gIEluY2x1ZGVzIGEgMzJLQiB0cmFu c2ZlcgorICBhZnRlciBwb3N0LWhhbmRzaGFrZSBhdXRoIGFzIGdlbmVyYWwgY292ZXJhZ2UgZm9y IGxhcmdlIHdyaXRlcyBvbiBhCisgIGNvbm5lY3Rpb24gdGhhdCBoYXMgYmVlbiB0aHJvdWdoIHBv c3QtaGFuZHNoYWtlIGF1dGguCisKKy0gdGVzdE11bHRpcGxlTWVzc2FnZXNBZnRlclBvc3RIYW5k c2hha2VBdXRoOiBzYW1lIHNldHVwLCB0aGVuCisgIHBlcmZvcm1zIDUgYWRkaXRpb25hbCByZXF1 ZXN0L3Jlc3BvbnNlIHJvdW5kIHRyaXBzIHRvIHZlcmlmeSB0aGUKKyAgY29ubmVjdGlvbiByZW1h aW5zIGZ1bGx5IGZ1bmN0aW9uYWwgYWZ0ZXIgcG9zdC1oYW5kc2hha2UgYXV0aC4KKworQm90aCB0 ZXN0cyB1c2UgSlNTU29ja2V0IG92ZXIgbG9vcGJhY2sgd2l0aCBKU1NOYXRpdmVUcnVzdE1hbmFn ZXIgYW5kCitUTFMgMS4zIG9ubHkuICBUaGUgc2VydmVyIHNlbmRzIGEgImRvbmUiIGFja25vd2xl ZGdtZW50IGJlZm9yZSB0aGUKK2NsaWVudCBjbG9zZXMsIHByZXZlbnRpbmcgYSBjbG9zZV9ub3Rp ZnkgcmFjZS4KKworQXNzaXN0ZWQtQnk6IENsYXVkZSBPcHVzIDQuNiA8bm9yZXBseUBhbnRocm9w aWMuY29tPgorLS0tCisgLi4uL2pzcy90ZXN0cy9UZXN0SlNTU29ja2V0Q2hhbm5lbC5qYXZhICAg ICAgIHwgMzc1ICsrKysrKysrKysrKysrKysrKworIGNtYWtlL0pTU1Rlc3RzLmNtYWtlICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNSArCisgMiBmaWxlcyBjaGFuZ2VkLCAzODAgaW5zZXJ0 aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYXNlL3NyYy90ZXN0L2phdmEvb3JnL21vemls bGEvanNzL3Rlc3RzL1Rlc3RKU1NTb2NrZXRDaGFubmVsLmphdmEKKworZGlmZiAtLWdpdCBhL2Jh c2Uvc3JjL3Rlc3QvamF2YS9vcmcvbW96aWxsYS9qc3MvdGVzdHMvVGVzdEpTU1NvY2tldENoYW5u ZWwuamF2YSBiL2Jhc2Uvc3JjL3Rlc3QvamF2YS9vcmcvbW96aWxsYS9qc3MvdGVzdHMvVGVzdEpT U1NvY2tldENoYW5uZWwuamF2YQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAw Li41OTVmYzg1NworLS0tIC9kZXYvbnVsbAorKysrIGIvYmFzZS9zcmMvdGVzdC9qYXZhL29yZy9t b3ppbGxhL2pzcy90ZXN0cy9UZXN0SlNTU29ja2V0Q2hhbm5lbC5qYXZhCitAQCAtMCwwICsxLDM3 NSBAQAorK3BhY2thZ2Ugb3JnLm1vemlsbGEuanNzLnRlc3RzOworKworK2ltcG9ydCBqYXZhLmlv LklPRXhjZXB0aW9uOworK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworK2ltcG9ydCBqYXZh LmlvLk91dHB1dFN0cmVhbTsKKytpbXBvcnQgamF2YS5uZXQuSW5ldEFkZHJlc3M7CisraW1wb3J0 IGphdmEubmV0LlNlcnZlclNvY2tldDsKKytpbXBvcnQgamF2YS5uZXQuU29ja2V0OworK2ltcG9y dCBqYXZhLnNlY3VyaXR5LktleVN0b3JlOworK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworKwor K2ltcG9ydCBqYXZheC5uZXQuc3NsLktleU1hbmFnZXI7CisraW1wb3J0IGphdmF4Lm5ldC5zc2wu S2V5TWFuYWdlckZhY3Rvcnk7CisraW1wb3J0IGphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dDsKKytp bXBvcnQgamF2YXgubmV0LnNzbC5TU0xTZXNzaW9uOworK2ltcG9ydCBqYXZheC5uZXQuc3NsLlRy dXN0TWFuYWdlcjsKKytpbXBvcnQgamF2YXgubmV0LnNzbC5YNTA5S2V5TWFuYWdlcjsKKytpbXBv cnQgamF2YXgubmV0LnNzbC5YNTA5VHJ1c3RNYW5hZ2VyOworKworK2ltcG9ydCBvcmcubW96aWxs YS5qc3MuQ3J5cHRvTWFuYWdlcjsKKytpbXBvcnQgb3JnLm1vemlsbGEuanNzLnByb3ZpZGVyLmph dmF4LmNyeXB0by5KU1NOYXRpdmVUcnVzdE1hbmFnZXI7CisraW1wb3J0IG9yZy5tb3ppbGxhLmpz cy5zc2wuamF2YXguSlNTUGFyYW1ldGVyczsKKytpbXBvcnQgb3JnLm1vemlsbGEuanNzLnNzbC5q YXZheC5KU1NTb2NrZXQ7CisrCisrcHVibGljIGNsYXNzIFRlc3RKU1NTb2NrZXRDaGFubmVsIHsK KysKKysgICAgc3RhdGljIFg1MDlLZXlNYW5hZ2VyW10ga2V5TWFuYWdlcnM7CisrICAgIHN0YXRp YyBYNTA5VHJ1c3RNYW5hZ2VyW10gdHJ1c3RNYW5hZ2VyczsKKysKKysgICAgcHVibGljIHN0YXRp YyB2b2lkIGluaXRpYWxpemUoU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisrICAg ICAgICBDcnlwdG9NYW5hZ2VyIGNtID0gQ3J5cHRvTWFuYWdlci5nZXRJbnN0YW5jZSgpOworKyAg ICAgICAgY20uc2V0UGFzc3dvcmRDYWxsYmFjayhuZXcgRmlsZVBhc3N3b3JkQ2FsbGJhY2soYXJn c1sxXSkpOworKworKyAgICAgICAgS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZSgi UEtDUzExIiwgIk1vemlsbGEtSlNTIik7CisrICAgICAgICBrcy5sb2FkKG51bGwsIG51bGwpOwor KyAgICAgICAgS2V5TWFuYWdlckZhY3Rvcnkga21mID0gS2V5TWFuYWdlckZhY3RvcnkuZ2V0SW5z dGFuY2UoIk5zc1g1MDkiLCAiTW96aWxsYS1KU1MiKTsKKysgICAgICAgIGttZi5pbml0KGtzLCBu dWxsKTsKKysKKysgICAgICAgIEtleU1hbmFnZXJbXSBrbXMgPSBrbWYuZ2V0S2V5TWFuYWdlcnMo KTsKKysgICAgICAgIGtleU1hbmFnZXJzID0gbmV3IFg1MDlLZXlNYW5hZ2VyW2ttcy5sZW5ndGhd OworKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrbXMubGVuZ3RoOyBpKyspIHsKKysgICAg ICAgICAgICBrZXlNYW5hZ2Vyc1tpXSA9IChYNTA5S2V5TWFuYWdlcikga21zW2ldOworKyAgICAg ICAgfQorKworKyAgICAgICAgdHJ1c3RNYW5hZ2VycyA9IG5ldyBYNTA5VHJ1c3RNYW5hZ2VyW10g eyBuZXcgSlNTTmF0aXZlVHJ1c3RNYW5hZ2VyKCkgfTsKKysgICAgfQorKworKyAgICBzdGF0aWMg SlNTU29ja2V0IGNyZWF0ZUpTU1NvY2tldChTU0xDb250ZXh0IGN0eCwgU29ja2V0IHJhdywgU3Ry aW5nIGFsaWFzLCBib29sZWFuIGNsaWVudE1vZGUsIGludCBwb3J0KSB0aHJvd3MgRXhjZXB0aW9u IHsKKysgICAgICAgIEpTU1NvY2tldCBzb2NrID0gbmV3IEpTU1NvY2tldCgpOworKyAgICAgICAg c29jay5jb25zdW1lU29ja2V0KHJhdyk7CisrICAgICAgICBzb2NrLnNldFNTTENvbnRleHQoY3R4 KTsKKysgICAgICAgIGlmIChjbGllbnRNb2RlKSB7CisrICAgICAgICAgICAgc29jay5pbml0RW5n aW5lKCJsb2NhbGhvc3QiLCBwb3J0KTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAg c29jay5pbml0RW5naW5lKCk7CisrICAgICAgICB9CisrICAgICAgICBKU1NQYXJhbWV0ZXJzIHBh cmFtcyA9IG5ldyBKU1NQYXJhbWV0ZXJzKCk7CisrICAgICAgICBwYXJhbXMuc2V0QWxpYXNlcyhB cnJheXMuYXNMaXN0KGFsaWFzLnNwbGl0KCIsIikpKTsKKysgICAgICAgIHBhcmFtcy5zZXRIb3N0 bmFtZSgibG9jYWxob3N0Iik7CisrICAgICAgICBzb2NrLnNldFNTTFBhcmFtZXRlcnMocGFyYW1z KTsKKysgICAgICAgIHNvY2suc2V0VXNlQ2xpZW50TW9kZShjbGllbnRNb2RlKTsKKysgICAgICAg IHNvY2suc2V0S2V5TWFuYWdlcnMoa2V5TWFuYWdlcnMpOworKyAgICAgICAgc29jay5zZXRUcnVz dE1hbmFnZXJzKHRydXN0TWFuYWdlcnMpOworKyAgICAgICAgcmV0dXJuIHNvY2s7CisrICAgIH0K KysKKysgICAgc3RhdGljIGJ5dGVbXSByZWFkV2l0aFJldHJ5KElucHV0U3RyZWFtIGluLCBsb25n IHRpbWVvdXRNcykgdGhyb3dzIEV4Y2VwdGlvbiB7CisrICAgICAgICBieXRlW10gYnVmID0gbmV3 IGJ5dGVbNDA5Nl07CisrICAgICAgICBsb25nIGRlYWRsaW5lID0gU3lzdGVtLmN1cnJlbnRUaW1l TWlsbGlzKCkgKyB0aW1lb3V0TXM7CisrICAgICAgICBpbnQgdG90YWwgPSAwOworKyAgICAgICAg d2hpbGUgKHRvdGFsID09IDApIHsKKysgICAgICAgICAgICBpZiAoU3lzdGVtLmN1cnJlbnRUaW1l TWlsbGlzKCkgPiBkZWFkbGluZSkgeworKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNl cHRpb24oIlJlYWQgdGltZWQgb3V0IGFmdGVyICIgKyB0aW1lb3V0TXMgKyAibXMiKTsKKysgICAg ICAgICAgICB9CisrICAgICAgICAgICAgaW50IG4gPSBpbi5yZWFkKGJ1ZiwgdG90YWwsIGJ1Zi5s ZW5ndGggLSB0b3RhbCk7CisrICAgICAgICAgICAgaWYgKG4gPCAwKSB7CisrICAgICAgICAgICAg ICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiVW5leHBlY3RlZCBFT0YiKTsKKysgICAgICAgICAg ICB9CisrICAgICAgICAgICAgdG90YWwgKz0gbjsKKysgICAgICAgICAgICBpZiAodG90YWwgPT0g MCkgeworKyAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoNTApOworKyAgICAgICAgICAgIH0K KysgICAgICAgIH0KKysgICAgICAgIHJldHVybiBBcnJheXMuY29weU9mKGJ1ZiwgdG90YWwpOwor KyAgICB9CisrCisrICAgIHN0YXRpYyBieXRlW10gcmVhZEV4YWN0bHkoSW5wdXRTdHJlYW0gaW4s IGludCBjb3VudCwgbG9uZyB0aW1lb3V0TXMpIHRocm93cyBFeGNlcHRpb24geworKyAgICAgICAg Ynl0ZVtdIGJ1ZiA9IG5ldyBieXRlW2NvdW50XTsKKysgICAgICAgIGxvbmcgZGVhZGxpbmUgPSBT eXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSArIHRpbWVvdXRNczsKKysgICAgICAgIGludCB0b3Rh bCA9IDA7CisrICAgICAgICB3aGlsZSAodG90YWwgPCBjb3VudCkgeworKyAgICAgICAgICAgIGlm IChTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSA+IGRlYWRsaW5lKSB7CisrICAgICAgICAgICAg ICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiUmVhZCB0aW1lZCBvdXQgYWZ0ZXIgIiArIHRpbWVv dXRNcyArICJtcyAoZ290ICIgKyB0b3RhbCArICIgb2YgIiArIGNvdW50ICsgIiBieXRlcykiKTsK KysgICAgICAgICAgICB9CisrICAgICAgICAgICAgaW50IG4gPSBpbi5yZWFkKGJ1ZiwgdG90YWws IGNvdW50IC0gdG90YWwpOworKyAgICAgICAgICAgIGlmIChuIDwgMCkgeworKyAgICAgICAgICAg ICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIlVuZXhwZWN0ZWQgRU9GIGFmdGVyICIgKyB0b3Rh bCArICIgb2YgIiArIGNvdW50ICsgIiBieXRlcyIpOworKyAgICAgICAgICAgIH0KKysgICAgICAg ICAgICBpZiAobiA9PSAwKSB7CisrICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcCg1MCk7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHRvdGFsICs9IG47CisrICAgICAgICB9CisrICAg ICAgICByZXR1cm4gYnVmOworKyAgICB9CisrCisrICAgIHN0YXRpYyB2b2lkIGFzc2VydEVxdWFs KFN0cmluZyBleHBlY3RlZCwgYnl0ZVtdIGFjdHVhbCwgU3RyaW5nIGNvbnRleHQpIHsKKysgICAg ICAgIFN0cmluZyBhY3R1YWxTdHIgPSBuZXcgU3RyaW5nKGFjdHVhbCk7CisrICAgICAgICBpZiAo IWV4cGVjdGVkLmVxdWFscyhhY3R1YWxTdHIpKSB7CisrICAgICAgICAgICAgdGhyb3cgbmV3IFJ1 bnRpbWVFeGNlcHRpb24oY29udGV4dCArICI6IGV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywg Z290ICciICsgYWN0dWFsU3RyICsgIiciKTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBw dWJsaWMgc3RhdGljIHZvaWQgdGVzdFBvc3RIYW5kc2hha2VBdXRoKFNTTENvbnRleHQgY3R4LCBT dHJpbmcgY2xpZW50QWxpYXMsIFN0cmluZyBzZXJ2ZXJBbGlhcykgdGhyb3dzIEV4Y2VwdGlvbiB7 CisrICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRlc3RKU1NTb2NrZXRDaGFubmVsOiB0ZXN0 UG9zdEhhbmRzaGFrZUF1dGgiKTsKKysKKysgICAgICAgIGZpbmFsIEV4Y2VwdGlvbltdIHNlcnZl ckVycm9yID0geyBudWxsIH07CisrCisrICAgICAgICBTZXJ2ZXJTb2NrZXQgc3MgPSBuZXcgU2Vy dmVyU29ja2V0KDAsIDEsIEluZXRBZGRyZXNzLmdldExvb3BiYWNrQWRkcmVzcygpKTsKKysgICAg ICAgIGludCBwb3J0ID0gc3MuZ2V0TG9jYWxQb3J0KCk7CisrCisrICAgICAgICBUaHJlYWQgc2Vy dmVyVGhyZWFkID0gbmV3IFRocmVhZCgoKSAtPiB7CisrICAgICAgICAgICAgdHJ5IHsKKysgICAg ICAgICAgICAgICAgU29ja2V0IHJhd1NlcnZlciA9IHNzLmFjY2VwdCgpOworKyAgICAgICAgICAg ICAgICBKU1NTb2NrZXQgc2VydmVyID0gY3JlYXRlSlNTU29ja2V0KGN0eCwgcmF3U2VydmVyLCBz ZXJ2ZXJBbGlhcywgZmFsc2UsIDApOworKyAgICAgICAgICAgICAgICBzZXJ2ZXIuc2V0RW5hYmxl ZFByb3RvY29scyhuZXcgU3RyaW5nW10geyAiVExTdjEuMyIgfSk7CisrCisrICAgICAgICAgICAg ICAgIHNlcnZlci5zdGFydEhhbmRzaGFrZSgpOworKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0 LnByaW50bG4oIiAgc2VydmVyOiBpbml0aWFsIGhhbmRzaGFrZSBjb21wbGV0ZSIpOworKworKyAg ICAgICAgICAgICAgICBPdXRwdXRTdHJlYW0gc091dCA9IHNlcnZlci5nZXRPdXRwdXRTdHJlYW0o KTsKKysgICAgICAgICAgICAgICAgSW5wdXRTdHJlYW0gc0luID0gc2VydmVyLmdldElucHV0U3Ry ZWFtKCk7CisrCisrICAgICAgICAgICAgICAgIHNPdXQud3JpdGUoImhlbGxvIGZyb20gc2VydmVy Ii5nZXRCeXRlcygpKTsKKysgICAgICAgICAgICAgICAgc091dC5mbHVzaCgpOworKworKyAgICAg ICAgICAgICAgICBhc3NlcnRFcXVhbCgiaGVsbG8gZnJvbSBjbGllbnQiLCByZWFkV2l0aFJldHJ5 KHNJbiwgMTAwMDApLCAic2VydmVyIGluaXRpYWwgcmVhZCIpOworKyAgICAgICAgICAgICAgICBT eXN0ZW0ub3V0LnByaW50bG4oIiAgc2VydmVyOiBpbml0aWFsIGRhdGEgZXhjaGFuZ2UgT0siKTsK KysKKysgICAgICAgICAgICAgICAgLy8gRW5hYmxlIGNsaWVudCBhdXRoIGFuZCB0cmlnZ2VyIHBv c3QtaGFuZHNoYWtlIGF1dGgKKysgICAgICAgICAgICAgICAgc2VydmVyLnNldFdhbnRDbGllbnRB dXRoKHRydWUpOworKyAgICAgICAgICAgICAgICBzZXJ2ZXIuc2V0TmVlZENsaWVudEF1dGgodHJ1 ZSk7CisrICAgICAgICAgICAgICAgIHNlcnZlci5zdGFydEhhbmRzaGFrZSgpOworKworKyAgICAg ICAgICAgICAgICBzT3V0LndyaXRlKCJwb3N0LWF1dGggZGF0YSIuZ2V0Qnl0ZXMoKSk7CisrICAg ICAgICAgICAgICAgIHNPdXQuZmx1c2goKTsKKysgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5w cmludGxuKCIgIHNlcnZlcjogc2VudCBwb3N0LWhhbmRzaGFrZS1hdXRoIGRhdGEiKTsKKysKKysg ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInBvc3QtYXV0aCByZXBseSIsIHJlYWRXaXRoUmV0 cnkoc0luLCAxMDAwMCksICJzZXJ2ZXIgcG9zdC1hdXRoIHJlYWQiKTsKKysKKysgICAgICAgICAg ICAgICAgU1NMU2Vzc2lvbiBzZXNzaW9uID0gc2VydmVyLmdldFNlc3Npb24oKTsKKysgICAgICAg ICAgICAgICAgYXNzZXJ0IHNlc3Npb24uZ2V0UGVlckNlcnRpZmljYXRlcygpICE9IG51bGwgOiAi RXhwZWN0ZWQgcGVlciBjZXJ0aWZpY2F0ZXMiOworKyAgICAgICAgICAgICAgICBhc3NlcnQgc2Vz c2lvbi5nZXRQZWVyQ2VydGlmaWNhdGVzKCkubGVuZ3RoID4gMCA6ICJFeHBlY3RlZCBhdCBsZWFz dCBvbmUgcGVlciBjZXJ0aWZpY2F0ZSI7CisrICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJp bnRsbigiICBzZXJ2ZXI6IHZlcmlmaWVkICIgKyBzZXNzaW9uLmdldFBlZXJDZXJ0aWZpY2F0ZXMo KS5sZW5ndGggKyAiIHBlZXIgY2VydChzKSIpOworKworKyAgICAgICAgICAgICAgICAvLyBTZW5k ID4xOEtCIHRvIHZlcmlmeSBsYXJnZSB3cml0ZXMgd29yayBhZnRlcgorKyAgICAgICAgICAgICAg ICAvLyBwb3N0LWhhbmRzaGFrZSBhdXRoLgorKyAgICAgICAgICAgICAgICBieXRlW10gbGFyZ2VE YXRhID0gbmV3IGJ5dGVbMzIgKiAxMDI0XTsKKysgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBsYXJnZURhdGEubGVuZ3RoOyBpKyspIHsKKysgICAgICAgICAgICAgICAgICAgIGxh cmdlRGF0YVtpXSA9IChieXRlKSAoaSAmIDB4RkYpOworKyAgICAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgICAgIHNPdXQud3JpdGUobGFyZ2VEYXRhKTsKKysgICAgICAgICAgICAgICAgc091 dC5mbHVzaCgpOworKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgc2VydmVy OiBzZW50ICIgKyBsYXJnZURhdGEubGVuZ3RoICsgIiBieXRlcyBwb3N0LWF1dGgiKTsKKysKKysg ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoImxhcmdlLWRhdGEtb2siLCByZWFkV2l0aFJldHJ5 KHNJbiwgMTAwMDApLCAic2VydmVyIGxhcmdlIGRhdGEgYWNrIik7CisrCisrICAgICAgICAgICAg ICAgIC8vIFNpZ25hbCB0aGUgY2xpZW50IGl0IGlzIE9LIHRvIGNsb3NlIG5vdy4gVGhpcyBwcmV2 ZW50cworKyAgICAgICAgICAgICAgICAvLyB0aGUgY2xpZW50J3MgY2xvc2Vfbm90aWZ5IGZyb20g YXJyaXZpbmcgd2hpbGUgdGhlIHNlcnZlcgorKyAgICAgICAgICAgICAgICAvLyBpcyBzdGlsbCBw cm9jZXNzaW5nIHRoZSBwb3N0LWhhbmRzaGFrZSBhdXRoIHJlc3BvbnNlLgorKyAgICAgICAgICAg ICAgICBzT3V0LndyaXRlKCJkb25lIi5nZXRCeXRlcygpKTsKKysgICAgICAgICAgICAgICAgc091 dC5mbHVzaCgpOworKworKyAgICAgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKTsKKysgICAgICAg ICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJv clswXSA9IGU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfSk7CisrICAgICAgICBzZXJ2ZXJU aHJlYWQuc2V0RGFlbW9uKHRydWUpOworKyAgICAgICAgc2VydmVyVGhyZWFkLnN0YXJ0KCk7Cisr CisrICAgICAgICB0cnkgeworKyAgICAgICAgICAgIFNvY2tldCByYXdDbGllbnQgPSBuZXcgU29j a2V0KEluZXRBZGRyZXNzLmdldExvb3BiYWNrQWRkcmVzcygpLCBwb3J0KTsKKysgICAgICAgICAg ICBKU1NTb2NrZXQgY2xpZW50ID0gY3JlYXRlSlNTU29ja2V0KGN0eCwgcmF3Q2xpZW50LCBjbGll bnRBbGlhcywgdHJ1ZSwgcG9ydCk7CisrICAgICAgICAgICAgY2xpZW50LnNldEVuYWJsZWRQcm90 b2NvbHMobmV3IFN0cmluZ1tdIHsgIlRMU3YxLjMiIH0pOworKworKyAgICAgICAgICAgIGNsaWVu dC5zdGFydEhhbmRzaGFrZSgpOworKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICBj bGllbnQ6IGluaXRpYWwgaGFuZHNoYWtlIGNvbXBsZXRlIik7CisrCisrICAgICAgICAgICAgT3V0 cHV0U3RyZWFtIGNPdXQgPSBjbGllbnQuZ2V0T3V0cHV0U3RyZWFtKCk7CisrICAgICAgICAgICAg SW5wdXRTdHJlYW0gY0luID0gY2xpZW50LmdldElucHV0U3RyZWFtKCk7CisrCisrICAgICAgICAg ICAgYXNzZXJ0RXF1YWwoImhlbGxvIGZyb20gc2VydmVyIiwgcmVhZFdpdGhSZXRyeShjSW4sIDEw MDAwKSwgImNsaWVudCBpbml0aWFsIHJlYWQiKTsKKysKKysgICAgICAgICAgICBjT3V0LndyaXRl KCJoZWxsbyBmcm9tIGNsaWVudCIuZ2V0Qnl0ZXMoKSk7CisrICAgICAgICAgICAgY091dC5mbHVz aCgpOworKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICBjbGllbnQ6IGluaXRpYWwg ZGF0YSBleGNoYW5nZSBPSyIpOworKworKyAgICAgICAgICAgIC8vIFRoaXMgcmVhZCB0cmlnZ2Vy cyBwb3N0LWhhbmRzaGFrZSBhdXRoIHByb2Nlc3NpbmcKKysgICAgICAgICAgICAvLyBpbiBKU1NT b2NrZXRDaGFubmVsLnJlYWQoKSDihpIgZmx1c2hQb3N0SGFuZHNoYWtlKCkKKysgICAgICAgICAg ICBhc3NlcnRFcXVhbCgicG9zdC1hdXRoIGRhdGEiLCByZWFkV2l0aFJldHJ5KGNJbiwgMTAwMDAp LCAiY2xpZW50IHBvc3QtYXV0aCByZWFkIik7CisrICAgICAgICAgICAgU3lzdGVtLm91dC5wcmlu dGxuKCIgIGNsaWVudDogcG9zdC1oYW5kc2hha2UgYXV0aCBjb21wbGV0ZWQgdHJhbnNwYXJlbnRs eSIpOworKworKyAgICAgICAgICAgIGNPdXQud3JpdGUoInBvc3QtYXV0aCByZXBseSIuZ2V0Qnl0 ZXMoKSk7CisrICAgICAgICAgICAgY091dC5mbHVzaCgpOworKworKyAgICAgICAgICAgIC8vIFJl Y2VpdmUgdGhlIGxhcmdlICg+MThLQikgcG9zdC1hdXRoIHRyYW5zZmVyCisrICAgICAgICAgICAg aW50IGxhcmdlU2l6ZSA9IDMyICogMTAyNDsKKysgICAgICAgICAgICBieXRlW10gbGFyZ2VSZWNl aXZlZCA9IHJlYWRFeGFjdGx5KGNJbiwgbGFyZ2VTaXplLCAxMDAwMCk7CisrICAgICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBsYXJnZVNpemU7IGkrKykgeworKyAgICAgICAgICAgICAgICBp ZiAobGFyZ2VSZWNlaXZlZFtpXSAhPSAoYnl0ZSkgKGkgJiAweEZGKSkgeworKyAgICAgICAgICAg ICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkxhcmdlIGRhdGEgbWlzbWF0Y2gg YXQgYnl0ZSAiICsgaSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgIGNsaWVudDogcmVjZWl2ZWQgYW5kIHZlcmlm aWVkICIgKyBsYXJnZVNpemUgKyAiIGJ5dGVzIHBvc3QtYXV0aCIpOworKyAgICAgICAgICAgIGNP dXQud3JpdGUoImxhcmdlLWRhdGEtb2siLmdldEJ5dGVzKCkpOworKyAgICAgICAgICAgIGNPdXQu Zmx1c2goKTsKKysKKysgICAgICAgICAgICAvLyBXYWl0IGZvciBzZXJ2ZXIgYWNrIGJlZm9yZSBj bG9zaW5nLCBzbyBjbG9zZV9ub3RpZnkgZG9lc24ndAorKyAgICAgICAgICAgIC8vIHJhY2Ugd2l0 aCB0aGUgc2VydmVyJ3MgcmVhZCBvZiB0aGUgcG9zdC1oYW5kc2hha2UgYXV0aCByZXNwb25zZS4K KysgICAgICAgICAgICBhc3NlcnRFcXVhbCgiZG9uZSIsIHJlYWRXaXRoUmV0cnkoY0luLCAxMDAw MCksICJjbGllbnQgZG9uZS1hY2sgcmVhZCIpOworKworKyAgICAgICAgICAgIGNsaWVudC5jbG9z ZSgpOworKyAgICAgICAgfSBmaW5hbGx5IHsKKysgICAgICAgICAgICBzZXJ2ZXJUaHJlYWQuam9p bigzMDAwMCk7CisrICAgICAgICAgICAgc3MuY2xvc2UoKTsKKysgICAgICAgIH0KKysKKysgICAg ICAgIGlmIChzZXJ2ZXJFcnJvclswXSAhPSBudWxsKSB7CisrICAgICAgICAgICAgdGhyb3cgbmV3 IFJ1bnRpbWVFeGNlcHRpb24oIlNlcnZlciB0aHJlYWQgZmFpbGVkIiwgc2VydmVyRXJyb3JbMF0p OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHNlcnZlclRocmVhZC5pc0FsaXZlKCkpIHsK KysgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiU2VydmVyIHRocmVhZCBk aWQgbm90IGZpbmlzaCBpbiB0aW1lIik7CisrICAgICAgICB9CisrCisrICAgICAgICBTeXN0ZW0u b3V0LnByaW50bG4oIlRlc3RKU1NTb2NrZXRDaGFubmVsOiB0ZXN0UG9zdEhhbmRzaGFrZUF1dGgg UEFTU0VEIik7CisrICAgIH0KKysKKysgICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RNdWx0aXBs ZU1lc3NhZ2VzQWZ0ZXJQb3N0SGFuZHNoYWtlQXV0aChTU0xDb250ZXh0IGN0eCwgU3RyaW5nIGNs aWVudEFsaWFzLCBTdHJpbmcgc2VydmVyQWxpYXMpIHRocm93cyBFeGNlcHRpb24geworKyAgICAg ICAgU3lzdGVtLm91dC5wcmludGxuKCJUZXN0SlNTU29ja2V0Q2hhbm5lbDogdGVzdE11bHRpcGxl TWVzc2FnZXNBZnRlclBvc3RIYW5kc2hha2VBdXRoIik7CisrCisrICAgICAgICBmaW5hbCBFeGNl cHRpb25bXSBzZXJ2ZXJFcnJvciA9IHsgbnVsbCB9OworKworKyAgICAgICAgU2VydmVyU29ja2V0 IHNzID0gbmV3IFNlcnZlclNvY2tldCgwLCAxLCBJbmV0QWRkcmVzcy5nZXRMb29wYmFja0FkZHJl c3MoKSk7CisrICAgICAgICBpbnQgcG9ydCA9IHNzLmdldExvY2FsUG9ydCgpOworKworKyAgICAg ICAgVGhyZWFkIHNlcnZlclRocmVhZCA9IG5ldyBUaHJlYWQoKCkgLT4geworKyAgICAgICAgICAg IHRyeSB7CisrICAgICAgICAgICAgICAgIFNvY2tldCByYXdTZXJ2ZXIgPSBzcy5hY2NlcHQoKTsK KysgICAgICAgICAgICAgICAgSlNTU29ja2V0IHNlcnZlciA9IGNyZWF0ZUpTU1NvY2tldChjdHgs IHJhd1NlcnZlciwgc2VydmVyQWxpYXMsIGZhbHNlLCAwKTsKKysgICAgICAgICAgICAgICAgc2Vy dmVyLnNldEVuYWJsZWRQcm90b2NvbHMobmV3IFN0cmluZ1tdIHsgIlRMU3YxLjMiIH0pOworKwor KyAgICAgICAgICAgICAgICBzZXJ2ZXIuc3RhcnRIYW5kc2hha2UoKTsKKysKKysgICAgICAgICAg ICAgICAgT3V0cHV0U3RyZWFtIHNPdXQgPSBzZXJ2ZXIuZ2V0T3V0cHV0U3RyZWFtKCk7CisrICAg ICAgICAgICAgICAgIElucHV0U3RyZWFtIHNJbiA9IHNlcnZlci5nZXRJbnB1dFN0cmVhbSgpOwor KworKyAgICAgICAgICAgICAgICAvLyBJbml0aWFsIGRhdGEgZXhjaGFuZ2UgdG8gc2V0dGxlIHRo ZSBjb25uZWN0aW9uCisrICAgICAgICAgICAgICAgIHNPdXQud3JpdGUoInBpbmciLmdldEJ5dGVz KCkpOworKyAgICAgICAgICAgICAgICBzT3V0LmZsdXNoKCk7CisrICAgICAgICAgICAgICAgIGFz c2VydEVxdWFsKCJwb25nIiwgcmVhZFdpdGhSZXRyeShzSW4sIDEwMDAwKSwgInNlcnZlciBpbml0 aWFsIHJlYWQiKTsKKysKKysgICAgICAgICAgICAgICAgLy8gVHJpZ2dlciBwb3N0LWhhbmRzaGFr ZSBhdXRoCisrICAgICAgICAgICAgICAgIHNlcnZlci5zZXRXYW50Q2xpZW50QXV0aCh0cnVlKTsK KysgICAgICAgICAgICAgICAgc2VydmVyLnNldE5lZWRDbGllbnRBdXRoKHRydWUpOworKyAgICAg ICAgICAgICAgICBzZXJ2ZXIuc3RhcnRIYW5kc2hha2UoKTsKKysKKysgICAgICAgICAgICAgICAg c091dC53cml0ZSgiYXV0aC10cmlnZ2VyIi5nZXRCeXRlcygpKTsKKysgICAgICAgICAgICAgICAg c091dC5mbHVzaCgpOworKworKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgiYWNrIiwgcmVh ZFdpdGhSZXRyeShzSW4sIDEwMDAwKSwgInNlcnZlciBhY2sgcmVhZCIpOworKworKyAgICAgICAg ICAgICAgICAvLyBNdWx0aXBsZSByb3VuZCB0cmlwcyBhZnRlciBwb3N0LWhhbmRzaGFrZSBhdXRo CisrICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisrICAgICAg ICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gInNlcnZlci1tc2ctIiArIGk7CisrICAgICAgICAg ICAgICAgICAgICBzT3V0LndyaXRlKG1zZy5nZXRCeXRlcygpKTsKKysgICAgICAgICAgICAgICAg ICAgIHNPdXQuZmx1c2goKTsKKysKKysgICAgICAgICAgICAgICAgICAgIFN0cmluZyBleHBlY3Rl ZCA9ICJjbGllbnQtbXNnLSIgKyBpOworKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwo ZXhwZWN0ZWQsIHJlYWRXaXRoUmV0cnkoc0luLCAxMDAwMCksICJzZXJ2ZXIgcm91bmQgIiArIGkp OworKyAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgIHNPdXQud3JpdGUoImRv bmUiLmdldEJ5dGVzKCkpOworKyAgICAgICAgICAgICAgICBzT3V0LmZsdXNoKCk7CisrCisrICAg ICAgICAgICAgICAgIHNlcnZlci5jbG9zZSgpOworKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2Vw dGlvbiBlKSB7CisrICAgICAgICAgICAgICAgIHNlcnZlckVycm9yWzBdID0gZTsKKysgICAgICAg ICAgICB9CisrICAgICAgICB9KTsKKysgICAgICAgIHNlcnZlclRocmVhZC5zZXREYWVtb24odHJ1 ZSk7CisrICAgICAgICBzZXJ2ZXJUaHJlYWQuc3RhcnQoKTsKKysKKysgICAgICAgIHRyeSB7Cisr ICAgICAgICAgICAgU29ja2V0IHJhd0NsaWVudCA9IG5ldyBTb2NrZXQoSW5ldEFkZHJlc3MuZ2V0 TG9vcGJhY2tBZGRyZXNzKCksIHBvcnQpOworKyAgICAgICAgICAgIEpTU1NvY2tldCBjbGllbnQg PSBjcmVhdGVKU1NTb2NrZXQoY3R4LCByYXdDbGllbnQsIGNsaWVudEFsaWFzLCB0cnVlLCBwb3J0 KTsKKysgICAgICAgICAgICBjbGllbnQuc2V0RW5hYmxlZFByb3RvY29scyhuZXcgU3RyaW5nW10g eyAiVExTdjEuMyIgfSk7CisrCisrICAgICAgICAgICAgY2xpZW50LnN0YXJ0SGFuZHNoYWtlKCk7 CisrCisrICAgICAgICAgICAgT3V0cHV0U3RyZWFtIGNPdXQgPSBjbGllbnQuZ2V0T3V0cHV0U3Ry ZWFtKCk7CisrICAgICAgICAgICAgSW5wdXRTdHJlYW0gY0luID0gY2xpZW50LmdldElucHV0U3Ry ZWFtKCk7CisrCisrICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInBpbmciLCByZWFkV2l0aFJldHJ5 KGNJbiwgMTAwMDApLCAiY2xpZW50IGluaXRpYWwgcmVhZCIpOworKyAgICAgICAgICAgIGNPdXQu d3JpdGUoInBvbmciLmdldEJ5dGVzKCkpOworKyAgICAgICAgICAgIGNPdXQuZmx1c2goKTsKKysK KysgICAgICAgICAgICBhc3NlcnRFcXVhbCgiYXV0aC10cmlnZ2VyIiwgcmVhZFdpdGhSZXRyeShj SW4sIDEwMDAwKSwgImNsaWVudCBhdXRoLXRyaWdnZXIgcmVhZCIpOworKworKyAgICAgICAgICAg IGNPdXQud3JpdGUoImFjayIuZ2V0Qnl0ZXMoKSk7CisrICAgICAgICAgICAgY091dC5mbHVzaCgp OworKworKyAgICAgICAgICAgIC8vIE11bHRpcGxlIHJvdW5kIHRyaXBzIGFmdGVyIHBvc3QtaGFu ZHNoYWtlIGF1dGgKKysgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewor KyAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWQgPSAic2VydmVyLW1zZy0iICsgaTsKKysg ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlYWRXaXRoUmV0cnkoY0luLCAx MDAwMCksICJjbGllbnQgcm91bmQgIiArIGkpOworKworKyAgICAgICAgICAgICAgICBTdHJpbmcg bXNnID0gImNsaWVudC1tc2ctIiArIGk7CisrICAgICAgICAgICAgICAgIGNPdXQud3JpdGUobXNn LmdldEJ5dGVzKCkpOworKyAgICAgICAgICAgICAgICBjT3V0LmZsdXNoKCk7CisrICAgICAgICAg ICAgfQorKworKyAgICAgICAgICAgIGFzc2VydEVxdWFsKCJkb25lIiwgcmVhZFdpdGhSZXRyeShj SW4sIDEwMDAwKSwgImNsaWVudCBkb25lLWFjayByZWFkIik7CisrCisrICAgICAgICAgICAgY2xp ZW50LmNsb3NlKCk7CisrICAgICAgICB9IGZpbmFsbHkgeworKyAgICAgICAgICAgIHNlcnZlclRo cmVhZC5qb2luKDMwMDAwKTsKKysgICAgICAgICAgICBzcy5jbG9zZSgpOworKyAgICAgICAgfQor KworKyAgICAgICAgaWYgKHNlcnZlckVycm9yWzBdICE9IG51bGwpIHsKKysgICAgICAgICAgICB0 aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiU2VydmVyIHRocmVhZCBmYWlsZWQiLCBzZXJ2ZXJF cnJvclswXSk7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoc2VydmVyVGhyZWFkLmlzQWxp dmUoKSkgeworKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJTZXJ2ZXIg dGhyZWFkIGRpZCBub3QgZmluaXNoIGluIHRpbWUiKTsKKysgICAgICAgIH0KKysKKysgICAgICAg IFN5c3RlbS5vdXQucHJpbnRsbigiVGVzdEpTU1NvY2tldENoYW5uZWw6IHRlc3RNdWx0aXBsZU1l c3NhZ2VzQWZ0ZXJQb3N0SGFuZHNoYWtlQXV0aCBQQVNTRUQiKTsKKysgICAgfQorKworKyAgICBw dWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsK KysgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW5pdGlhbGl6aW5nIENyeXB0b01hbmFnZXIu Li4iKTsKKysgICAgICAgIGluaXRpYWxpemUoYXJncyk7CisrCisrICAgICAgICBpZiAoIW9yZy5t b3ppbGxhLmpzcy5KU1NQcm92aWRlci5FTkFCTEVfSlNTRU5HSU5FKSB7CisrICAgICAgICAgICAg U3lzdGVtLm91dC5wcmludGxuKCJKU1NFbmdpbmUgbm90IGVuYWJsZWQsIHNraXBwaW5nLiIpOwor KyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysKKysgICAgICAgIFN0cmluZyBjbGll bnRBbGlhcyA9IGFyZ3NbMl07CisrICAgICAgICBTdHJpbmcgc2VydmVyQWxpYXMgPSBhcmdzWzNd OworKworKyAgICAgICAgLy8gQ2hlY2sgVExTIDEuMyBzdXBwb3J0CisrICAgICAgICBTU0xDb250 ZXh0IGN0eCA9IFNTTENvbnRleHQuZ2V0SW5zdGFuY2UoIlRMUyIsICJNb3ppbGxhLUpTUyIpOwor KyAgICAgICAgY3R4LmluaXQoa2V5TWFuYWdlcnMsIHRydXN0TWFuYWdlcnMsIG51bGwpOworKwor KyAgICAgICAgU3RyaW5nW10gc3VwcG9ydGVkID0gY3R4LmNyZWF0ZVNTTEVuZ2luZSgpLmdldFN1 cHBvcnRlZFByb3RvY29scygpOworKyAgICAgICAgYm9vbGVhbiB0bHMxMyA9IGZhbHNlOworKyAg ICAgICAgZm9yIChTdHJpbmcgcCA6IHN1cHBvcnRlZCkgeworKyAgICAgICAgICAgIGlmICgiVExT djEuMyIuZXF1YWxzKHApKSB7CisrICAgICAgICAgICAgICAgIHRsczEzID0gdHJ1ZTsKKysgICAg ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAg aWYgKCF0bHMxMykgeworKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVExTIDEuMyBu b3Qgc3VwcG9ydGVkLCBza2lwcGluZy4iKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAg ICB9CisrCisrICAgICAgICB0ZXN0UG9zdEhhbmRzaGFrZUF1dGgoY3R4LCBjbGllbnRBbGlhcywg c2VydmVyQWxpYXMpOworKyAgICAgICAgdGVzdE11bHRpcGxlTWVzc2FnZXNBZnRlclBvc3RIYW5k c2hha2VBdXRoKGN0eCwgY2xpZW50QWxpYXMsIHNlcnZlckFsaWFzKTsKKysgICAgfQorK30KK2Rp ZmYgLS1naXQgYS9jbWFrZS9KU1NUZXN0cy5jbWFrZSBiL2NtYWtlL0pTU1Rlc3RzLmNtYWtlCitp bmRleCBiODJkNDIxZi4uZjJiOWRiMWYgMTAwNjQ0CistLS0gYS9jbWFrZS9KU1NUZXN0cy5jbWFr ZQorKysrIGIvY21ha2UvSlNTVGVzdHMuY21ha2UKK0BAIC0zMjcsNiArMzI3LDExIEBAIG1hY3Jv KGpzc190ZXN0cykKKyAgICAgICAgIERFUEVORFMgIkdlbmVyYXRlX2tub3duX1JTQV9jZXJ0X3Bh aXIiCisgICAgICkKKyAKKysgICAganNzX3Rlc3RfamF2YSgKKysgICAgICAgIE5BTUUgIkpTU1Nv Y2tldENoYW5uZWxfUG9zdEhhbmRzaGFrZUF1dGgiCisrICAgICAgICBDT01NQU5EICJvcmcubW96 aWxsYS5qc3MudGVzdHMuVGVzdEpTU1NvY2tldENoYW5uZWwiICIke1JFU1VMVFNfTlNTREJfT1VU UFVUX0RJUn0iICIke1BBU1NXT1JEX0ZJTEV9IiAiQ2xpZW50X1JTQSIgIlNlcnZlcl9SU0EiCisr ICAgICAgICBERVBFTkRTICJTU0xFbmdpbmVfUlNBIgorKyAgICApCisgCisgICAgIGlmKE5PVCBG SVBTX0VOQUJMRUQpCisgICAgICAgICBqc3NfdGVzdF9qYXZhKAorLS0gCisyLjU1LjAKKwoKZGlm ZiAtLWdpdCBhL2pzcy5zcGVjIGIvanNzLnNwZWMKaW5kZXggMjA1YWIyNC4uNWM2OGM2MCAxMDA2 NDQKLS0tIGEvanNzLnNwZWMKKysrIGIvanNzLnNwZWMKQEAgLTEzLDcgKzEzLDcgQEAgTmFtZTog ICAgICAgICAgIGpzcwogIyBEb3duc3RyZWFtIHJlbGVhc2UgbnVtYmVyOgogIyAtIGRldmVsb3Bt ZW50L3N0YWJpbGl6YXRpb24gKHVuc3VwcG9ydGVkKTogMC48bj4gd2hlcmUgbiA+PSAxCiAjIC0g R0EvdXBkYXRlIChzdXBwb3J0ZWQpOiA8bj4gd2hlcmUgbiA+PSAxCi0lZ2xvYmFsICAgICAgICAg cmVsZWFzZV9udW1iZXIgMQorJWdsb2JhbCAgICAgICAgIHJlbGVhc2VfbnVtYmVyIDIKIAogIyBE ZXZlbG9wbWVudCBwaGFzZToKICMgLSBkZXZlbG9wbWVudCAodW5zdXBwb3J0ZWQpOiBhbHBoYTxu PiB3aGVyZSBuID49IDEKQEAgLTQxLDYgKzQxLDE0IEBAIFJlbGVhc2U6ICAgICAgICAle3JlbGVh c2VfbnVtYmVyfSV7P3BoYXNlOi59JXs/cGhhc2V9JXs/dGltZXN0YW1wOi59JXs/dGltZXN0YW1w CiAjIHRhcmJhbGwuCiBTb3VyY2U6ICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2RvZ3RhZ3Br aS9qc3MvYXJjaGl2ZS92JXt2ZXJzaW9ufSV7P3BoYXNlOi19JXs/cGhhc2V9L2pzcy0le3ZlcnNp b259JXs/cGhhc2U6LX0lez9waGFzZX0udGFyLmd6CiAKKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL3Nob3dfYnVnLmNnaT9pZD0yNDkwNjA3CisjIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2d0 YWdwa2kvanNzL3B1bGwvMTExNgorIyBGaXggcG9zdC1oYW5kc2hha2UgYXV0aCBoYW5nIHdpdGgg VExTIDEuMworIyBGaXhlcyBGcmVlSVBBIHJlcGxpY2F0aW9uIHdpdGggT3BlblNTTCA0CitQYXRj aDogICAgICAgICAgMDAwMS1GaXgtVExTLTEuMy1wb3N0LWhhbmRzaGFrZS1hdXRoZW50aWNhdGlv bi1oYW5naW5nLWF0LnBhdGNoCitQYXRjaDogICAgICAgICAgMDAwMi1JbnRlZ3JhdGUtcG9zdC1o YW5kc2hha2UtYXV0aC1pbnRvLXRoZS1oYW5kc2hha2Utc3RhLnBhdGNoCitQYXRjaDogICAgICAg ICAgMDAwMy1BZGQtSlNTU29ja2V0Q2hhbm5lbC1UTFMtMS4zLXBvc3QtaGFuZHNoYWtlLWF1dGgt dGVzLnBhdGNoCisKICMgVG8gY3JlYXRlIGEgcGF0Y2ggZm9yIGFsbCBjaGFuZ2VzIHNpbmNlIGEg dmVyc2lvbiB0YWc6CiAjICQgZ2l0IGZvcm1hdC1wYXRjaCBcCiAjICAgICAtLXN0ZG91dCBcCkBA IC00MjAsNiArNDI4LDkgQEAgY3AgYmFzZS90YXJnZXQvanNzLXRlc3RzLmphciAle2J1aWxkcm9v dH0le19kYXRhZGlyfS9qc3MvdGVzdHMvbGliCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAl Y2hhbmdlbG9nCisqIFdlZCBTZXAgMDIgMjAyNiBBZGFtIFdpbGxpYW1zb24gPGFkYW13aWxsQGZl ZG9yYXByb2plY3Qub3JnPiAtNS4xMC4xLTIKKy0gQmFja3BvcnQgUFIgIzExMTYgdG8gZml4IHBv c3QtaGFuZHNoYWtlIGF1dGggaGFuZyAoRnJlZUlQQSByZXBsaWNhdGlvbikgKCMyNDkwNjA3KQor CiAqIFR1ZSBKdWwgMjggMjAyNiBEb2d0YWcgUEtJIFRlYW0gPGRldmVsQGxpc3RzLmRvZ3RhZ3Br aS5vcmc+IC0gNS4xMC4xLTEKIC0gUmViYXNlIHRvIEpTUyA1LjEwLjEKIAo=