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: matiwari To: git-commits@fedoraproject.org Subject: [rpms/ibus-speech-to-text] f44: Update to release 1.0.0 Date: Fri, 07 Aug 2026 02:49:59 GMT Message-ID: <178607099989.1.699124242477025289.rpms-ibus-speech-to-text-be64b0282704@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus-speech-to-text X-Git-Branch: f44 X-Git-Rev: be64b02827044aee6a6f480b7e25728654a6349b QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cy1zcGVlY2gt dG8tdGV4dApCcmFuY2ggOiBmNDQKQ29tbWl0IDogYmU2NGIwMjgyNzA0NGFlZTZhNmY0ODBiN2Uy NTcyODY1NGE2MzQ5YgpBdXRob3IgOiBtYXRpd2FyaSA8bWF0aXdhcmlAcmVkaGF0LmNvbT4KRGF0 ZSAgIDogMjAyNi0wOC0wN1QwMjo1Nzo0MiswNTozMApTdGF0cyAgOiArMTQ3NS8tMiBpbiA0IGZp bGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9pYnVzLXNw ZWVjaC10by10ZXh0L2MvYmU2NGIwMjgyNzA0NGFlZTZhNmY0ODBiN2UyNTcyODY1NGE2MzQ5Yj9i cmFuY2g9ZjQ0CgpMb2c6ClVwZGF0ZSB0byByZWxlYXNlIDEuMC4wCgotLS0KZGlmZiAtLWdpdCBh Ly5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGIxYTEzNGEuLjU1ODZiMmYgMTAwNjQ0Ci0t LSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMywzICszLDQgQEAKIC8wLjYuMC50 YXIuZ3oKIC8wLjcuMC50YXIuZ3oKIC8wLjkuMC50YXIuZ3oKKy8xLjAuMC50YXIuZ3oKCmRpZmYg LS1naXQgYS9pYnVzLXNwZWVjaC10by10ZXh0LnNwZWMgYi9pYnVzLXNwZWVjaC10by10ZXh0LnNw ZWMKaW5kZXggYmI3YzE5NC4uMWNhMjM4NCAxMDA2NDQKLS0tIGEvaWJ1cy1zcGVlY2gtdG8tdGV4 dC5zcGVjCisrKyBiL2lidXMtc3BlZWNoLXRvLXRleHQuc3BlYwpAQCAtMSwxMiArMSwxNCBAQAog JWdsb2JhbCBkZWJ1Z19wYWNrYWdlICV7bmlsfQogTmFtZTogICBpYnVzLXNwZWVjaC10by10ZXh0 Ci1WZXJzaW9uOiAgMC45LjAKK1ZlcnNpb246ICAxLjAuMAogUmVsZWFzZTogIDElez9kaXN0fQog U3VtbWFyeTogIEEgc3BlZWNoIHRvIHRleHQgSUJ1cyBJbnB1dCBNZXRob2QgdXNpbmcgVk9TSwog RXhjbHVkZUFyY2g6ICV7aXg4Nn0KIExpY2Vuc2U6ICBHUEwtMy4wLW9yLWxhdGVyCiBVUkw6ICAg ICBodHRwczovL2dpdGh1Yi5jb20vTWFuaXNoNzA5My9JQnVzLVNwZWVjaC1Uby1UZXh0CiBTb3Vy Y2UwOiBodHRwczovL2dpdGh1Yi5jb20vTWFuaXNoNzA5My9JQnVzLVNwZWVjaC1Uby1UZXh0L2Fy Y2hpdmUvcmVmcy90YWdzLyV7dmVyc2lvbn0udGFyLmd6CitQYXRjaDA6IGlidXMtc3R0LTFfMF8w LWJhY2tlbmQtbm90aWZ5LnBhdGNoCisKIEJ1aWxkUmVxdWlyZXM6ICBtZXNvbgogQnVpbGRSZXF1 aXJlczogIHB5dGhvbjMtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICBpYnVzLWRldmVsID49IDEuNS4z CkBAIC0zMiw2ICszNCw3IEBAIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRpY3RhdGUgdGV4dCB0byBh bnkgYXBwbGljYXRpb24KIAogJXByZXAKICVzZXR1cCAtcSAtbiBJQnVzLVNwZWVjaC1Uby1UZXh0 LSV7dmVyc2lvbn0KKyVwYXRjaCAwIC1wMSAtYiAub3JpZ34KIAogJWJ1aWxkCiAlbWVzb24KQEAg LTU0LDYgKzU3LDEwIEBAIGRlc2t0b3AtZmlsZS12YWxpZGF0ZSAle2J1aWxkcm9vdH0vJXtfZGF0 YWRpcn0vYXBwbGljYXRpb25zL2lidXMtc2V0dXAtc3R0LmRlc2t0CiAle19kYXRhZGlyfS9nbGli LTIuMC9zY2hlbWFzL29yZy5mcmVlZGVza3RvcC5pYnVzLmVuZ2luZS5zdHQuZ3NjaGVtYS54bWwK IAogJWNoYW5nZWxvZworKiBGcmkgQXVnIDcgMjAyNiBNYW5pc2ggVGl3YXJpIDxtYXRpd2FyaUBy ZWRoYXQuY29tPiAxLjAuMC0xCistIFVwZGF0ZSB0byByZWxlYXNlIDEuMC4wCistIEFkZCBpYnVz LXN0dC0xXzBfMC1iYWNrZW5kLW5vdGlmeS5wYXRjaCB0byBzdXBwb3J0IGJhY2tlbmQgbm90aWZp Y2F0aW9uIGRpYWxvZworCiAqIFRodSBNYXkgNyAyMDI2IE1hbmlzaCBUaXdhcmkgPG1hdGl3YXJp QHJlZGhhdC5jb20+IDAuOS4wLTEKIC0gVXBkYXRlIHRvIHJlbGVhc2UgMC45LjAKIAoKZGlmZiAt LWdpdCBhL2lidXMtc3R0LTFfMF8wLWJhY2tlbmQtbm90aWZ5LnBhdGNoIGIvaWJ1cy1zdHQtMV8w XzAtYmFja2VuZC1ub3RpZnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZjFkOWMyOAotLS0gL2Rldi9udWxsCisrKyBiL2lidXMtc3R0LTFfMF8wLWJhY2tlbmQtbm90 aWZ5LnBhdGNoCkBAIC0wLDAgKzEsMTQ2NSBAQAorZGlmZiAtdXJOIElCdXMtU3BlZWNoLVRvLVRl eHQtMS4wLjAub3JpZy9lbmdpbmUvbWVzb24uYnVpbGQgSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAu MC9lbmdpbmUvbWVzb24uYnVpbGQKKy0tLSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wLm9yaWcv ZW5naW5lL21lc29uLmJ1aWxkCTIwMjYtMDctMTQgMDM6MDA6MDAuMDAwMDAwMDAwICswNTMwCisr KysgSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC9lbmdpbmUvbWVzb24uYnVpbGQJMjAyNi0wOC0w NyAwMTo0Mjo0My4wMjE2NzEyMTIgKzA1MzAKK0BAIC0xOCw2ICsxOCw3IEBACisgICAgICdzdHRz aG9ydGN1dGRpYWxvZy5weScsCisgICAgICdzdHR1dHRlcmFuY2Vyb3cucHknLAorICAgICAnc3R0 dmFkLnB5JywKKysgICAgJ3N0dGJhY2tlbmRkZXBzLnB5JywKKyAgICAgJ3N0dG1vZGVsY2hvb3Nl cmRpYWxvZy5weScsCisgICAgICdzdHR2b3NrbW9kZWxtYW5hZ2Vycy5weScsCisgICAgICdzdHR3 aGlzcGVybW9kZWxtYW5hZ2Vycy5weScsCitkaWZmIC11ck4gSUJ1cy1TcGVlY2gtVG8tVGV4dC0x LjAuMC5vcmlnL2VuZ2luZS9zdHRiYWNrZW5kZGVwcy5weSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEu MC4wL2VuZ2luZS9zdHRiYWNrZW5kZGVwcy5weQorLS0tIElCdXMtU3BlZWNoLVRvLVRleHQtMS4w LjAub3JpZy9lbmdpbmUvc3R0YmFja2VuZGRlcHMucHkJMTk3MC0wMS0wMSAwNTozMDowMC4wMDAw MDAwMDAgKzA1MzAKKysrKyBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2VuZ2luZS9zdHRiYWNr ZW5kZGVwcy5weQkyMDI2LTA4LTA3IDAxOjQ0OjQ1LjI5OTU5ODgyOCArMDUzMAorQEAgLTAsMCAr MSwxNzMgQEAKKytpbXBvcnQgaW1wb3J0bGliCisraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkK KytpbXBvcnQgaW1wb3J0bGliLnV0aWwKKytpbXBvcnQgbG9nZ2luZworK2ltcG9ydCBzeXMKKysK KytMT0dfTVNHID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorKworK2NsYXNzIFNUVEJhY2tlbmREZXBl bmRlbmN5OgorKworKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kdWxlLCBkaXN0cmlidXRpb24s IGV4dHJhcz1Ob25lKToKKysgICAgICAgIHNlbGYubW9kdWxlID0gbW9kdWxlCisrICAgICAgICBz ZWxmLmRpc3RyaWJ1dGlvbiA9IGRpc3RyaWJ1dGlvbgorKyAgICAgICAgc2VsZi5leHRyYXMgPSB0 dXBsZShleHRyYXMpIGlmIGV4dHJhcyBpcyBub3QgTm9uZSBlbHNlICgpCisrCisrICAgIEBwcm9w ZXJ0eQorKyAgICBkZWYgcmVxdWlyZW1lbnQoc2VsZik6CisrICAgICAgICBpZiBub3Qgc2VsZi5l eHRyYXM6CisrICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGlzdHJpYnV0aW9uCisrICAgICAgICBy ZXR1cm4gIiVzWyVzXSIgJSAoc2VsZi5kaXN0cmlidXRpb24sICIsIi5qb2luKHNlbGYuZXh0cmFz KSkKKysKKysgICAgQHByb3BlcnR5CisrICAgIGRlZiBwaXBfYXJndW1lbnQoc2VsZik6CisrICAg ICAgICBpZiBub3Qgc2VsZi5leHRyYXM6CisrICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGlzdHJp YnV0aW9uCisrICAgICAgICByZXR1cm4gIiclcyciICUgc2VsZi5yZXF1aXJlbWVudAorKworKyAg ICBkZWYgYXZhaWxhYmxlKHNlbGYpOgorKyAgICAgICAgI1RydWUgd2hlbiB0aGUgbW9kdWxlIGNh biBiZSBmb3VuZCBvbiBzeXMucGF0aCByaWdodCBub3cKKysgICAgICAgIHRyeToKKysgICAgICAg ICAgICBzcGVjID0gaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYyhzZWxm Lm1vZHVsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzeXMucGF0aCkKKysgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIFZh bHVlRXJyb3IsIFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpIGFzIGVycm9yOgorKyAgICAgICAg ICAgIExPR19NU0cuZGVidWcoImNhbm5vdCBsb29rIHVwIG1vZHVsZSAlcyAoJXMpIiwgc2VsZi5t b2R1bGUsIGVycm9yKQorKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorKworKyAgICAgICAgcmV0 dXJuIHNwZWMgaXMgbm90IE5vbmUKKysKKysgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorKyAgICAg ICAgcmV0dXJuICI8U1RUQmFja2VuZERlcGVuZGVuY3kgJXM+IiAlIHNlbGYucmVxdWlyZW1lbnQK KysKKysjIE5PVEU6IGtlZXAgdGhlIGtleXMgaW4gc3luYyB3aXRoIHRoZSAiYmFja2VuZCIgR1Nl dHRpbmdzIGtleSBhbmQgd2l0aCB0aGUKKysjIGNoZWNrIGJ1dHRvbnMgb2Ygc3R0Y29uZmlnZGlh bG9nLnVpLgorK19CQUNLRU5EUyA9IHsKKysgICAgInZvc2siOiB7CisrICAgICAgICAibmFtZSI6 ICJWb3NrIiwKKysgICAgICAgICJkZXBlbmRlbmNpZXMiOiAoKSwKKysgICAgICAgICJjb21wb25l bnRzIjogeworKyAgICAgICAgICAgICJlbmdpbmUiOiAgKCJzdHRnc3R2b3NrIiwgIlNUVEdzdFZv c2siKSwKKysgICAgICAgICAgICAibW9kZWwiOiAgICgic3R0dm9za21vZGVsIiwgIlNUVFZvc2tN b2RlbCIpLAorKyAgICAgICAgICAgICJtYW5hZ2VyIjogKCJzdHR2b3NrbW9kZWxtYW5hZ2VycyIs ICJzdHRfdm9za19vbmxpbmVfbW9kZWxfbWFuYWdlciIpLAorKyAgICAgICAgfSwKKysgICAgfSwK KysgICAgIndoaXNwZXIiOiB7CisrICAgICAgICAibmFtZSI6ICJXaGlzcGVyIiwKKysgICAgICAg ICJkZXBlbmRlbmNpZXMiOiAoKSwKKysgICAgICAgICJjb21wb25lbnRzIjogeworKyAgICAgICAg ICAgICJlbmdpbmUiOiAgKCJzdHRnc3R3aGlzcGVyIiwgIlNUVEdzdFdoaXNwZXIiKSwKKysgICAg ICAgICAgICAibW9kZWwiOiAgICgic3R0d2hpc3Blcm1vZGVsIiwgIlNUVFdoaXNwZXJNb2RlbCIp LAorKyAgICAgICAgICAgICJtYW5hZ2VyIjogKCJzdHR3aGlzcGVybW9kZWxtYW5hZ2VycyIsICJz dHRfd2hpc3Blcl9vbmxpbmVfbW9kZWxfbWFuYWdlciIpLAorKyAgICAgICAgfSwKKysgICAgfSwK KysgICAgIm9ubnhhc3IiOiB7CisrICAgICAgICAibmFtZSI6ICJvbm54LWFzciIsCisrICAgICAg ICAiZGVwZW5kZW5jaWVzIjogKAorKyAgICAgICAgICAgIFNUVEJhY2tlbmREZXBlbmRlbmN5KCJv bm54X2FzciIsICJvbm54LWFzciIsICgiY3B1IiwgImh1YiIpKSwKKysgICAgICAgICksCisrICAg ICAgICAiY29tcG9uZW50cyI6IHsKKysgICAgICAgICAgICAiZW5naW5lIjogICgic3R0Z3N0b25u eGFzciIsICJTVFRHc3RPbm54QXNyIiksCisrICAgICAgICAgICAgIm1vZGVsIjogICAoInN0dG9u bnhhc3Jtb2RlbCIsICJTVFRPbm54QXNyTW9kZWwiKSwKKysgICAgICAgICAgICAibWFuYWdlciI6 ICgic3R0b25ueGFzcm1vZGVsbWFuYWdlcnMiLCAic3R0X29ubnhhc3Jfb25saW5lX21vZGVsX21h bmFnZXIiKSwKKysgICAgICAgIH0sCisrICAgIH0sCisrICAgICJtb29uc2hpbmUiOiB7CisrICAg ICAgICAibmFtZSI6ICJNb29uc2hpbmUiLAorKyAgICAgICAgImRlcGVuZGVuY2llcyI6ICgKKysg ICAgICAgICAgICBTVFRCYWNrZW5kRGVwZW5kZW5jeSgibW9vbnNoaW5lX3ZvaWNlIiwgIm1vb25z aGluZS12b2ljZSIpLAorKyAgICAgICAgKSwKKysgICAgICAgICJjb21wb25lbnRzIjogeworKyAg ICAgICAgICAgICJlbmdpbmUiOiAgKCJzdHRnc3Rtb29uc2hpbmUiLCAiU1RUR3N0TW9vbnNoaW5l IiksCisrICAgICAgICAgICAgIm1vZGVsIjogICAoInN0dG1vb25zaGluZW1vZGVsIiwgIlNUVE1v b25zaGluZU1vZGVsIiksCisrICAgICAgICAgICAgIm1hbmFnZXIiOiAoInN0dG1vb25zaGluZW1v ZGVsbWFuYWdlcnMiLCAic3R0X21vb25zaGluZV9vbmxpbmVfbW9kZWxfbWFuYWdlciIpLAorKyAg ICAgICAgfSwKKysgICAgfSwKKyt9CisrCisrU1RUX0RFRkFVTFRfQkFDS0VORCA9ICJ2b3NrIgor KworKyMgQ2FjaGUgdGhlIGxvb2t1cHM6IHRoZXkgYXJlIHF1ZXJpZWQgZnJvbSBjYWxsYmFja3Mg dGhhdCBjYW4gcnVuIG9uIGV2ZXJ5CisrIyBtb2RlbC9sb2NhbGUgY2hhbmdlLiBEcm9wcGVkIGJ5 IHN0dF9pbnZhbGlkYXRlX2F2YWlsYWJpbGl0eV9jYWNoZSgpLgorK19hdmFpbGFiaWxpdHlfY2Fj aGUgPSB7fQorKworK2RlZiBzdHRfYmFja2VuZHMoKToKKysgICAgcmV0dXJuIHR1cGxlKF9CQUNL RU5EUy5rZXlzKCkpCisrCisrZGVmIHN0dF9iYWNrZW5kX2Rpc3BsYXlfbmFtZShiYWNrZW5kKToK KysgICAgZW50cnkgPSBfQkFDS0VORFMuZ2V0KGJhY2tlbmQpCisrICAgIGlmIGVudHJ5IGlzIE5v bmU6CisrICAgICAgICByZXR1cm4gYmFja2VuZAorKyAgICByZXR1cm4gZW50cnlbIm5hbWUiXQor KworK2RlZiBzdHRfYmFja2VuZF9kZXBlbmRlbmNpZXMoYmFja2VuZCk6CisrICAgIGVudHJ5ID0g X0JBQ0tFTkRTLmdldChiYWNrZW5kKQorKyAgICBpZiBlbnRyeSBpcyBOb25lOgorKyAgICAgICAg cmV0dXJuICgpCisrICAgIHJldHVybiBlbnRyeVsiZGVwZW5kZW5jaWVzIl0KKysKKytkZWYgc3R0 X2ludmFsaWRhdGVfYXZhaWxhYmlsaXR5X2NhY2hlKCk6CisrICAgIF9hdmFpbGFiaWxpdHlfY2Fj aGUuY2xlYXIoKQorKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorKworK2RlZiBz dHRfYmFja2VuZF9taXNzaW5nX2RlcGVuZGVuY2llcyhiYWNrZW5kLCByZWZyZXNoPUZhbHNlKToK KysgICAgaWYgcmVmcmVzaDoKKysgICAgICAgIHN0dF9pbnZhbGlkYXRlX2F2YWlsYWJpbGl0eV9j YWNoZSgpCisrCisrICAgIG1pc3NpbmcgPSBbXQorKyAgICBmb3IgZGVwZW5kZW5jeSBpbiBzdHRf YmFja2VuZF9kZXBlbmRlbmNpZXMoYmFja2VuZCk6CisrICAgICAgICBhdmFpbGFibGUgPSBfYXZh aWxhYmlsaXR5X2NhY2hlLmdldChkZXBlbmRlbmN5Lm1vZHVsZSkKKysgICAgICAgIGlmIGF2YWls YWJsZSBpcyBOb25lOgorKyAgICAgICAgICAgIGF2YWlsYWJsZSA9IGRlcGVuZGVuY3kuYXZhaWxh YmxlKCkKKysgICAgICAgICAgICBfYXZhaWxhYmlsaXR5X2NhY2hlW2RlcGVuZGVuY3kubW9kdWxl XSA9IGF2YWlsYWJsZQorKyAgICAgICAgICAgIExPR19NU0cuZGVidWcoIm1vZHVsZSAlcyBhdmFp bGFibGU6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kubW9kdWxl LCBhdmFpbGFibGUpCisrICAgICAgICBpZiBub3QgYXZhaWxhYmxlOgorKyAgICAgICAgICAgIG1p c3NpbmcuYXBwZW5kKGRlcGVuZGVuY3kpCisrCisrICAgIHJldHVybiBtaXNzaW5nCisrCisrZGVm IHN0dF9iYWNrZW5kX2lzX2F2YWlsYWJsZShiYWNrZW5kLCByZWZyZXNoPUZhbHNlKToKKysgICAg cmV0dXJuIG5vdCBzdHRfYmFja2VuZF9taXNzaW5nX2RlcGVuZGVuY2llcyhiYWNrZW5kLCByZWZy ZXNoPXJlZnJlc2gpCisrCisrZGVmIHN0dF9iYWNrZW5kX2luc3RhbGxfY29tbWFuZChiYWNrZW5k KToKKysgICAgbWlzc2luZyA9IHN0dF9iYWNrZW5kX21pc3NpbmdfZGVwZW5kZW5jaWVzKGJhY2tl bmQpCisrICAgIGlmIG5vdCBtaXNzaW5nOgorKyAgICAgICAgcmV0dXJuICIiCisrCisrICAgIHJl dHVybiAicGlwIGluc3RhbGwgJXMiICUgIiAiLmpvaW4oCisrICAgICAgICBkZXBlbmRlbmN5LnBp cF9hcmd1bWVudCBmb3IgZGVwZW5kZW5jeSBpbiBtaXNzaW5nKQorKworK2RlZiBzdHRfYmFja2Vu ZF9jb21wb25lbnQoYmFja2VuZCwgY29tcG9uZW50KToKKysgICAgZW50cnkgPSBfQkFDS0VORFMu Z2V0KGJhY2tlbmQpCisrICAgIGlmIGVudHJ5IGlzIE5vbmU6CisrICAgICAgICBMT0dfTVNHLndh cm5pbmcoInVua25vd24gYmFja2VuZCAoJXMpIiwgYmFja2VuZCkKKysgICAgICAgIHJldHVybiBO b25lCisrCisrICAgIGxvY2F0aW9uID0gZW50cnlbImNvbXBvbmVudHMiXS5nZXQoY29tcG9uZW50 KQorKyAgICBpZiBsb2NhdGlvbiBpcyBOb25lOgorKyAgICAgICAgcmV0dXJuIE5vbmUKKysKKysg ICAgbW9kdWxlX25hbWUsIGF0dHJpYnV0ZSA9IGxvY2F0aW9uCisrICAgIHRyeToKKysgICAgICAg IG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZHVsZV9uYW1lKQorKyAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGVycm9yOgorKyAgICAgICAgTE9HX01TRy53YXJuaW5nKCJjYW5ub3Qg aW1wb3J0ICVzIGZvciBiYWNrZW5kICVzICglcykiLAorKyAgICAgICAgICAgICAgICAgICAgICAg IG1vZHVsZV9uYW1lLCBiYWNrZW5kLCBlcnJvcikKKysgICAgICAgIHJldHVybiBOb25lCisrCisr ICAgIHZhbHVlID0gZ2V0YXR0cihtb2R1bGUsIGF0dHJpYnV0ZSwgTm9uZSkKKysgICAgaWYgdmFs dWUgaXMgTm9uZToKKysgICAgICAgIExPR19NU0cud2FybmluZygiJXMgaGFzIG5vIGF0dHJpYnV0 ZSAlcyIsIG1vZHVsZV9uYW1lLCBhdHRyaWJ1dGUpCisrICAgIHJldHVybiB2YWx1ZQorKworK2Rl ZiBzdHRfYmFja2VuZF9tb2RlbF9tYW5hZ2VyKGJhY2tlbmQpOgorKyAgICBtYW5hZ2VyID0gc3R0 X2JhY2tlbmRfY29tcG9uZW50KGJhY2tlbmQsICJtYW5hZ2VyIikKKysgICAgaWYgbWFuYWdlciBp cyBOb25lOgorKyAgICAgICAgcmV0dXJuIE5vbmUKKysKKysgICAgdHJ5OgorKyAgICAgICAgcmV0 dXJuIG1hbmFnZXIoKQorKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycm9yOgorKyAgICAgICAg TE9HX01TRy53YXJuaW5nKCJjYW5ub3QgY3JlYXRlIG1vZGVsIG1hbmFnZXIgZm9yICVzICglcyki LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tlbmQsIGVycm9yKQorKyAgICAgICAgcmV0 dXJuIE5vbmUKK2RpZmYgLXVyTiBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wLm9yaWcvZW5naW5l L3N0dGNvbmZpZ2RpYWxvZy5weSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2VuZ2luZS9zdHRj b25maWdkaWFsb2cucHkKKy0tLSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wLm9yaWcvZW5naW5l L3N0dGNvbmZpZ2RpYWxvZy5weQkyMDI2LTA3LTE0IDAzOjAwOjAwLjAwMDAwMDAwMCArMDUzMAor KysrIElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAvZW5naW5lL3N0dGNvbmZpZ2RpYWxvZy5weQky MDI2LTA4LTA3IDAxOjQ1OjI1LjI0MTIyODQ4NSArMDUzMAorQEAgLTI3LDI3ICsyNywyMyBAQAor IGdpLnJlcXVpcmVfdmVyc2lvbignR3RrJywgJzQuMCcpCisgZ2kucmVxdWlyZV92ZXJzaW9uKCdB ZHcnLCAnMScpCisgCistZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHdGssIEdpbywgQWR3Cisr ZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHdGssIEdpbywgR2RrLCBHT2JqZWN0LCBBZHcKKyAK KyBmcm9tIHN0dHV0aWxzIGltcG9ydCAqCisgZnJvbSBzdHRzaG9ydGN1dHJvdyBpbXBvcnQgU1RU U2hvcnRjdXRSb3cKKyBmcm9tIHN0dHNob3J0Y3V0ZGlhbG9nIGltcG9ydCBTVFRTaG9ydGN1dERp YWxvZworIAorIGZyb20gc3R0Y3VycmVudGxvY2FsZSBpbXBvcnQgc3R0X2N1cnJlbnRfbG9jYWxl CistZnJvbSBzdHR2b3NrbW9kZWxtYW5hZ2VycyBpbXBvcnQgc3R0X3Zvc2tfb25saW5lX21vZGVs X21hbmFnZXIKKy1mcm9tIHN0dHdoaXNwZXJtb2RlbG1hbmFnZXJzIGltcG9ydCBzdHRfd2hpc3Bl cl9vbmxpbmVfbW9kZWxfbWFuYWdlcgorLWZyb20gc3R0b25ueGFzcm1vZGVsbWFuYWdlcnMgaW1w b3J0IHN0dF9vbm54YXNyX29ubGluZV9tb2RlbF9tYW5hZ2VyCistZnJvbSBzdHRtb29uc2hpbmVt b2RlbG1hbmFnZXJzIGltcG9ydCBzdHRfbW9vbnNoaW5lX29ubGluZV9tb2RlbF9tYW5hZ2VyCist ZnJvbSBzdHR2b3NrbW9kZWwgaW1wb3J0IFNUVFZvc2tNb2RlbAorLWZyb20gc3R0d2hpc3Blcm1v ZGVsIGltcG9ydCBTVFRXaGlzcGVyTW9kZWwKKy1mcm9tIHN0dG9ubnhhc3Jtb2RlbCBpbXBvcnQg U1RUT25ueEFzck1vZGVsCistZnJvbSBzdHRtb29uc2hpbmVtb2RlbCBpbXBvcnQgU1RUTW9vbnNo aW5lTW9kZWwKKyBmcm9tIHN0dG1vZGVsY2hvb3NlcmRpYWxvZyBpbXBvcnQgU1RUTW9kZWxDaG9v c2VyRGlhbG9nCisgCistZnJvbSBzdHRnc3R2b3NrIGltcG9ydCBTVFRHc3RWb3NrCistZnJvbSBz dHRnc3R3aGlzcGVyIGltcG9ydCBTVFRHc3RXaGlzcGVyCistZnJvbSBzdHRnc3Rvbm54YXNyIGlt cG9ydCBTVFRHc3RPbm54QXNyCistZnJvbSBzdHRnc3Rtb29uc2hpbmUgaW1wb3J0IFNUVEdzdE1v b25zaGluZQorK2Zyb20gc3R0YmFja2VuZGRlcHMgaW1wb3J0IChTVFRfREVGQVVMVF9CQUNLRU5E LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHRfYmFja2VuZF9jb21wb25lbnQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dF9iYWNrZW5kX2Rpc3BsYXlfbmFtZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R0X2JhY2tlbmRfaW5zdGFsbF9jb21tYW5kLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHRfYmFja2VuZF9pc19hdmFpbGFibGUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dF9iYWNrZW5kX21pc3NpbmdfZGVwZW5kZW5j aWVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHRfYmFja2VuZF9tb2RlbF9tYW5h Z2VyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHRfaW52YWxpZGF0ZV9hdmFpbGFi aWxpdHlfY2FjaGUpCisgCisgTE9HX01TRz1sb2dnaW5nLmdldExvZ2dlcigpCisgCitAQCAtNjQs NiArNjAsMTEgQEAKKyAgICAgb25ueGFzcl9jaGVjayA9IEd0ay5UZW1wbGF0ZS5DaGlsZCgpCisg ICAgIG1vb25zaGluZV9jaGVjayA9IEd0ay5UZW1wbGF0ZS5DaGlsZCgpCisgCisrICAgIHZvc2tf YWN0aW9uX3JvdyAgICAgID0gR3RrLlRlbXBsYXRlLkNoaWxkKCkKKysgICAgd2hpc3Blcl9hY3Rp b25fcm93ICAgPSBHdGsuVGVtcGxhdGUuQ2hpbGQoKQorKyAgICBvbm54YXNyX2FjdGlvbl9yb3cg ICA9IEd0ay5UZW1wbGF0ZS5DaGlsZCgpCisrICAgIG1vb25zaGluZV9hY3Rpb25fcm93ID0gR3Rr LlRlbXBsYXRlLkNoaWxkKCkKKysKKyAgICAgdGFiX3N0YWNrICAgID0gR3RrLlRlbXBsYXRlLkNo aWxkKCkKKyAgICAgdGFiX3N3aXRjaGVyID0gR3RrLlRlbXBsYXRlLkNoaWxkKCkKKyAKK0BAIC0x MDIsMTggKzEwMywyMCBAQAorICAgICAgICAgc2VsZi5fdXR0ZXJhbmNlc19kaWN0ID0ge30KKyAg ICAgICAgIHNlbGYuX25vX21vZGVsX3RvYXN0ID0gTm9uZQorICAgICAgICAgc2VsZi5fdW5zdXBw b3J0ZWRfbG9jYWxlX3RvYXN0ID0gTm9uZQorKyAgICAgICAgc2VsZi5fbWlzc2luZ19kZXBzX3Rv YXN0ID0gTm9uZQorICAgICAgICAgc2VsZi5fbW9kZWwgPSBOb25lCisgICAgICAgICBzZWxmLl9z dXBwcmVzc19sYW5ndWFnZV9jYiA9IEZhbHNlCisrICAgICAgICBzZWxmLl9zdXBwcmVzc19lbmdp bmVfY2IgPSBGYWxzZQorICAgICAgICAgc2VsZi5fZW5naW5lID0gTm9uZQorIAorICAgICAgICAg c2VsZi5fc2V0dGluZ3M9R2lvLlNldHRpbmdzLm5ldygib3JnLmZyZWVkZXNrdG9wLmlidXMuZW5n aW5lLnN0dCIpCisgICAgICAgICBzZWxmLl9zZXR0aW5ncy5iaW5kKCJwcmVsb2FkIiwgc2VsZi5w cmVsb2FkX21vZGVsX3N3aXRjaCwgImFjdGl2ZSIsIEdpby5TZXR0aW5nc0JpbmRGbGFncy5ERUZB VUxUKQorICAgICAgICAgc2VsZi5fc2V0dGluZ3MuYmluZCgiYWN0aXZlLW9uLXN0YXJ0Iiwgc2Vs Zi5hY3RpdmVfb25fc3RhcnRfc3dpdGNoLCAiYWN0aXZlIiwgR2lvLlNldHRpbmdzQmluZEZsYWdz LkRFRkFVTFQpCisgCistICAgICAgICBzdHRfdm9za19vbmxpbmVfbW9kZWxfbWFuYWdlcigpCist ICAgICAgICBzdHRfd2hpc3Blcl9vbmxpbmVfbW9kZWxfbWFuYWdlcigpCistICAgICAgICBzdHRf b25ueGFzcl9vbmxpbmVfbW9kZWxfbWFuYWdlcigpCistICAgICAgICBzdHRfbW9vbnNoaW5lX29u bGluZV9tb2RlbF9tYW5hZ2VyKCkKKysgICAgICAgIHNlbGYuX2JhY2tlbmRfc3VidGl0bGVzID0g eworKyAgICAgICAgICAgIGJhY2tlbmQ6IChyb3cuZ2V0X3N1YnRpdGxlKCkgb3IgIiIpCisrICAg ICAgICAgICAgZm9yIGJhY2tlbmQsIHJvdyBpbiBzZWxmLl9iYWNrZW5kX2FjdGlvbl9yb3dzKCku aXRlbXMoKQorKyAgICAgICAgfQorIAorICAgICAgICAgIyBMb2FkIGN1cnJlbnQgbG9jYWxlCisg ICAgICAgICBzZWxmLl9jdXJyZW50X2xvY2FsZSA9IHN0dF9jdXJyZW50X2xvY2FsZSgpCitAQCAt MTIxLDI1ICsxMjQsMTEgQEAKKyAgICAgICAgIHNlbGYuX292ZXJyaWRlX2ZpbGVfY2hhbmdlZF9p ZD1zZWxmLl9jdXJyZW50X2xvY2FsZS5jb25uZWN0KCJvdmVycmlkZS1maWxlLWNoYW5nZWQiLCBz ZWxmLl9vdmVycmlkZV9maWxlX2NoYW5nZWRfY2IpCisgICAgICAgICBzZWxmLl9vdmVycmlkZV9m aWxlX3dyaXR0ZW49RmFsc2UKKyAKKy0gICAgICAgIGJhY2tlbmQgPSBzZWxmLl9zZXR0aW5ncy5n ZXRfc3RyaW5nKCJiYWNrZW5kIikKKy0gICAgICAgIHNlbGYuX3N1cHByZXNzX2VuZ2luZV9jYiA9 IFRydWUKKy0gICAgICAgIGlmIGJhY2tlbmQgPT0gIndoaXNwZXIiOgorLSAgICAgICAgICAgIHNl bGYud2hpc3Blcl9jaGVjay5zZXRfYWN0aXZlKFRydWUpCistICAgICAgICBlbGlmIGJhY2tlbmQg PT0gIm9ubnhhc3IiOgorLSAgICAgICAgICAgIHNlbGYub25ueGFzcl9jaGVjay5zZXRfYWN0aXZl KFRydWUpCistICAgICAgICBlbGlmIGJhY2tlbmQgPT0gIm1vb25zaGluZSI6CistICAgICAgICAg ICAgc2VsZi5tb29uc2hpbmVfY2hlY2suc2V0X2FjdGl2ZShUcnVlKQorLSAgICAgICAgZWxzZToK Ky0gICAgICAgICAgICBzZWxmLnZvc2tfY2hlY2suc2V0X2FjdGl2ZShUcnVlKQorLSAgICAgICAg c2VsZi5fc3VwcHJlc3NfZW5naW5lX2NiID0gRmFsc2UKKysgICAgICAgIHNlbGYuX3NlbGVjdF9i YWNrZW5kX2J1dHRvbihzZWxmLl9iYWNrZW5kKCkpCisgCisgICAgICAgICBzZWxmLl9sb2NhbGVf bGlzdCA9IFtdCisgICAgICAgICBzZWxmLl9sb2NhbGVfbmFtZXMgPSBHdGsuU3RyaW5nTGlzdCgp CistICAgICAgICBzZWxmLl9wb3B1bGF0ZV9sb2NhbGVfbGlzdCgpCistICAgICAgICBzZWxmLl9z dXBwcmVzc19sYW5ndWFnZV9jYiA9IFRydWUKKy0gICAgICAgIHNlbGYubGFuZ3VhZ2VfZHJvcGRv d24uc2V0X21vZGVsKHNlbGYuX2xvY2FsZV9uYW1lcykKKy0gICAgICAgIHNlbGYuX3N1cHByZXNz X2xhbmd1YWdlX2NiID0gRmFsc2UKKy0gICAgICAgIHNlbGYuX3NlbGVjdF9jdXJyZW50X2xvY2Fs ZV9pbl9kcm9wZG93bigpCisrICAgICAgICBzZWxmLl9yZWZyZXNoX2xvY2FsZV9kcm9wZG93bigp CisgCisgICAgICAgICBpZiBzZWxmLl9jdXJyZW50X2xvY2FsZS5kZWZhdWx0X2xvY2FsZToKKyAg ICAgICAgICAgICBzZWxmLl9zdXBwcmVzc19sYW5ndWFnZV9jYiA9IFRydWUKK0BAIC0xNTYsMTcg KzE0NSw4MSBAQAorIAorICAgICAgICAgc2VsZi5fdXBkYXRlX3ZvaWNlX2NvbW1hbmRzX3Zpc2li aWxpdHkoKQorIAorLSAgICAgICAgaWYgc2VsZi5fbW9kZWwgaXMgTm9uZSBvciBub3Qgc2VsZi5f bW9kZWwuYXZhaWxhYmxlKCk6CistICAgICAgICAgICAgc2VsZi5fZW5naW5lX2hhc19ub19tb2Rl bCgpCistICAgICAgICBlbGlmIHNlbGYuX3ZhbGlkX2Zvcm1hdHRpbmdfZmlsZSA9PSBGYWxzZToK Ky0gICAgICAgICAgICBzZWxmLl91bnN1cHBvcnRlZF9sb2NhbGUoKQorLQorICAgICAgICAgc2Vs Zi5fdG9hc3RfYWN0aW9uPUdpby5TaW1wbGVBY3Rpb24ubmV3KCJtYW5hZ2VfbW9kZWwiLCBOb25l KQorKyAgICAgICAgc2VsZi5faW5zdGFsbF9hY3Rpb249R2lvLlNpbXBsZUFjdGlvbi5uZXcoImlu c3RhbGxfYmFja2VuZCIsIE5vbmUpCisgICAgICAgICBhY3Rpb25fZ3JvdXA9R2lvLlNpbXBsZUFj dGlvbkdyb3VwLm5ldygpCisgICAgICAgICBhY3Rpb25fZ3JvdXAuaW5zZXJ0KHNlbGYuX3RvYXN0 X2FjdGlvbikKKysgICAgICAgIGFjdGlvbl9ncm91cC5pbnNlcnQoc2VsZi5faW5zdGFsbF9hY3Rp b24pCisgICAgICAgICBzZWxmLmluc2VydF9hY3Rpb25fZ3JvdXAoInRvYXN0IiwgYWN0aW9uX2dy b3VwKQorICAgICAgICAgc2VsZi5fdG9hc3RfYWN0aW9uLmNvbm5lY3QoImFjdGl2YXRlIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hbmFnZV9tb2RlbF9hY3Rp b25fYWN0aXZhdGVkKQorKyAgICAgICAgc2VsZi5faW5zdGFsbF9hY3Rpb24uY29ubmVjdCgiYWN0 aXZhdGUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnN0 YWxsX2FjdGlvbl9hY3RpdmF0ZWQpCisrCisrICAgICAgICBzZWxmLl91cGRhdGVfYmFja2VuZF9y b3dzKCkKKysgICAgICAgIHNlbGYuX3JlZnJlc2hfc3RhdHVzX21lc3NhZ2VzKCkKKysgICAgICAg IHNlbGYuX2JhY2tlbmRfd2FzX2F2YWlsYWJsZSA9IHN0dF9iYWNrZW5kX2lzX2F2YWlsYWJsZShz ZWxmLl9iYWNrZW5kKCkpCisrICAgICAgICBzZWxmLmNvbm5lY3QoIm5vdGlmeTo6aXMtYWN0aXZl Iiwgc2VsZi5fd2luZG93X2FjdGl2ZV9jYikKKysKKysgICAgZGVmIF93aW5kb3dfYWN0aXZlX2Ni KHNlbGYsICpfYXJncyk6CisrICAgICAgICBpZiBub3Qgc2VsZi5nZXRfcHJvcGVydHkoImlzLWFj dGl2ZSIpOgorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAgICAgc3R0X2ludmFsaWRhdGVf YXZhaWxhYmlsaXR5X2NhY2hlKCkKKysgICAgICAgIGF2YWlsYWJsZSA9IHN0dF9iYWNrZW5kX2lz X2F2YWlsYWJsZShzZWxmLl9iYWNrZW5kKCkpCisrICAgICAgICBpZiBhdmFpbGFibGUgPT0gc2Vs Zi5fYmFja2VuZF93YXNfYXZhaWxhYmxlOgorKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9iYWNr ZW5kX3Jvd3MoKQorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAgICAgc2VsZi5fYmFja2Vu ZF93YXNfYXZhaWxhYmxlID0gYXZhaWxhYmxlCisrICAgICAgICBzZWxmLl9yZWxvYWRfYmFja2Vu ZCgpCisrCisrICAgIGRlZiBfYmFja2VuZChzZWxmKToKKysgICAgICAgIGJhY2tlbmQgPSBzZWxm Ll9zZXR0aW5ncy5nZXRfc3RyaW5nKCJiYWNrZW5kIikKKysgICAgICAgIGlmIGJhY2tlbmQgaW4g KCIiLCBOb25lKToKKysgICAgICAgICAgICByZXR1cm4gU1RUX0RFRkFVTFRfQkFDS0VORAorKyAg ICAgICAgcmV0dXJuIGJhY2tlbmQKKysKKysgICAgZGVmIF9iYWNrZW5kX2NoZWNrX2J1dHRvbnMo c2VsZik6CisrICAgICAgICByZXR1cm4geworKyAgICAgICAgICAgICJ2b3NrIjogICAgICBzZWxm LnZvc2tfY2hlY2ssCisrICAgICAgICAgICAgIndoaXNwZXIiOiAgIHNlbGYud2hpc3Blcl9jaGVj aywKKysgICAgICAgICAgICAib25ueGFzciI6ICAgc2VsZi5vbm54YXNyX2NoZWNrLAorKyAgICAg ICAgICAgICJtb29uc2hpbmUiOiBzZWxmLm1vb25zaGluZV9jaGVjaywKKysgICAgICAgIH0KKysK KysgICAgZGVmIF9iYWNrZW5kX2FjdGlvbl9yb3dzKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHsK KysgICAgICAgICAgICAidm9zayI6ICAgICAgc2VsZi52b3NrX2FjdGlvbl9yb3csCisrICAgICAg ICAgICAgIndoaXNwZXIiOiAgIHNlbGYud2hpc3Blcl9hY3Rpb25fcm93LAorKyAgICAgICAgICAg ICJvbm54YXNyIjogICBzZWxmLm9ubnhhc3JfYWN0aW9uX3JvdywKKysgICAgICAgICAgICAibW9v bnNoaW5lIjogc2VsZi5tb29uc2hpbmVfYWN0aW9uX3JvdywKKysgICAgICAgIH0KKysKKysgICAg ZGVmIF9iYWNrZW5kX2Zvcl9jaGVja19idXR0b24oc2VsZiwgYnV0dG9uKToKKysgICAgICAgIGZv ciBiYWNrZW5kLCBjaGVjayBpbiBzZWxmLl9iYWNrZW5kX2NoZWNrX2J1dHRvbnMoKS5pdGVtcygp OgorKyAgICAgICAgICAgIGlmIGNoZWNrID09IGJ1dHRvbjoKKysgICAgICAgICAgICAgICAgcmV0 dXJuIGJhY2tlbmQKKysgICAgICAgIHJldHVybiBOb25lCisrCisrICAgIGRlZiBfc2VsZWN0X2Jh Y2tlbmRfYnV0dG9uKHNlbGYsIGJhY2tlbmQpOgorKyAgICAgICAgYnV0dG9uID0gc2VsZi5fYmFj a2VuZF9jaGVja19idXR0b25zKCkuZ2V0KGJhY2tlbmQpCisrICAgICAgICBpZiBidXR0b24gaXMg Tm9uZToKKysgICAgICAgICAgICBidXR0b24gPSBzZWxmLnZvc2tfY2hlY2sKKysKKysgICAgICAg IHNlbGYuX3N1cHByZXNzX2VuZ2luZV9jYiA9IFRydWUKKysgICAgICAgIGJ1dHRvbi5zZXRfYWN0 aXZlKFRydWUpCisrICAgICAgICBzZWxmLl9zdXBwcmVzc19lbmdpbmVfY2IgPSBGYWxzZQorKwor KyAgICBkZWYgX3VwZGF0ZV9iYWNrZW5kX3Jvd3Moc2VsZik6CisrICAgICAgICBmb3IgYmFja2Vu ZCwgcm93IGluIHNlbGYuX2JhY2tlbmRfYWN0aW9uX3Jvd3MoKS5pdGVtcygpOgorKyAgICAgICAg ICAgIHN1YnRpdGxlID0gc2VsZi5fYmFja2VuZF9zdWJ0aXRsZXMuZ2V0KGJhY2tlbmQsICIiKQor KyAgICAgICAgICAgIGlmIHN0dF9iYWNrZW5kX2lzX2F2YWlsYWJsZShiYWNrZW5kKToKKysgICAg ICAgICAgICAgICAgcm93LnNldF9zdWJ0aXRsZShzdWJ0aXRsZSkKKysgICAgICAgICAgICBlbGlm IHN1YnRpdGxlOgorKyAgICAgICAgICAgICAgICByb3cuc2V0X3N1YnRpdGxlKF8oIiVzIMK3IE5v dCBpbnN0YWxsZWQiKSAlIHN1YnRpdGxlKQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAg ICAgICAgIHJvdy5zZXRfc3VidGl0bGUoXygiTm90IGluc3RhbGxlZCIpKQorIAorIAorICAgICBk ZWYgX2NyZWF0ZV9lbmdpbmUoc2VsZik6CitAQCAtMTgwLDE1ICsyMzMsMjMgQEAKKyAgICAgICAg ICAgICBzZWxmLl9lbmdpbmUuZGVzdHJveSgpCisgICAgICAgICAgICAgc2VsZi5fZW5naW5lID0g Tm9uZQorIAorLSAgICAgICAgYmFja2VuZCA9IHNlbGYuX3NldHRpbmdzLmdldF9zdHJpbmcoImJh Y2tlbmQiKQorLSAgICAgICAgaWYgYmFja2VuZCA9PSAid2hpc3BlciI6CistICAgICAgICAgICAg c2VsZi5fZW5naW5lID0gU1RUR3N0V2hpc3BlcihjdXJyZW50X2xvY2FsZT1zZWxmLl9jdXJyZW50 X2xvY2FsZSkKKy0gICAgICAgIGVsaWYgYmFja2VuZCA9PSAib25ueGFzciI6CistICAgICAgICAg ICAgc2VsZi5fZW5naW5lID0gU1RUR3N0T25ueEFzcihjdXJyZW50X2xvY2FsZT1zZWxmLl9jdXJy ZW50X2xvY2FsZSkKKy0gICAgICAgIGVsaWYgYmFja2VuZCA9PSAibW9vbnNoaW5lIjoKKy0gICAg ICAgICAgICBzZWxmLl9lbmdpbmUgPSBTVFRHc3RNb29uc2hpbmUoY3VycmVudF9sb2NhbGU9c2Vs Zi5fY3VycmVudF9sb2NhbGUpCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHNlbGYuX2Vu Z2luZSA9IFNUVEdzdFZvc2soY3VycmVudF9sb2NhbGU9c2VsZi5fY3VycmVudF9sb2NhbGUpCisr ICAgICAgICBiYWNrZW5kID0gc2VsZi5fYmFja2VuZCgpCisrICAgICAgICBpZiBub3Qgc3R0X2Jh Y2tlbmRfaXNfYXZhaWxhYmxlKGJhY2tlbmQpOgorKyAgICAgICAgICAgIExPR19NU0cud2Fybmlu ZygiYmFja2VuZCAlcyBpcyBtaXNzaW5nIGl0cyBkZXBlbmRlbmNpZXMsICIKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIm5vIGVuZ2luZSBjcmVhdGVkIiwgYmFja2VuZCkKKysgICAgICAg ICAgICByZXR1cm4KKysKKysgICAgICAgIGVuZ2luZV9jbGFzcyA9IHN0dF9iYWNrZW5kX2NvbXBv bmVudChiYWNrZW5kLCAiZW5naW5lIikKKysgICAgICAgIGlmIGVuZ2luZV9jbGFzcyBpcyBOb25l OgorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIHNl bGYuX2VuZ2luZSA9IGVuZ2luZV9jbGFzcyhjdXJyZW50X2xvY2FsZT1zZWxmLl9jdXJyZW50X2xv Y2FsZSkKKysgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6CisrICAgICAgICAgICAg TE9HX01TRy5lcnJvcigiY2Fubm90IGNyZWF0ZSBlbmdpbmUgZm9yIGJhY2tlbmQgJXMgKCVzKSIs CisrICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZW5kLCBlcnJvcikKKysgICAgICAgICAg ICBzZWxmLl9lbmdpbmUgPSBOb25lCisrICAgICAgICAgICAgcmV0dXJuCisgCisgICAgICAgICBz ZWxmLl9lbmdpbmUuY29ubmVjdCgibW9kZWwtY2hhbmdlZCIsIHNlbGYuX2VuZ2luZV9tb2RlbF9j aGFuZ2VkX2NiKQorICAgICAgICAgc2VsZi5fZW5naW5lLnByZWxvYWQoKQorQEAgLTIwNCwxMSAr MjY1LDEzIEBACisgICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9jdXJyZW50X2xvY2FsZS5sb2Nh bGUgbm90IGluIHNlbGYuX2xvY2FsZV9saXN0KToKKyAgICAgICAgICAgICBzZWxmLl9hcHBlbmRf bG9jYWxlX29wdGlvbihzZWxmLl9jdXJyZW50X2xvY2FsZS5sb2NhbGUpCisgCistICAgICAgICBi YWNrZW5kID0gc2VsZi5fc2V0dGluZ3MuZ2V0X3N0cmluZygiYmFja2VuZCIpCisrICAgICAgICBi YWNrZW5kID0gc2VsZi5fYmFja2VuZCgpCisgICAgICAgICBpZiBiYWNrZW5kID09ICJtb29uc2hp bmUiOgorLSAgICAgICAgICAgIHN1cHBvcnRlZCA9IHN0dF9tb29uc2hpbmVfb25saW5lX21vZGVs X21hbmFnZXIoKS5zdXBwb3J0ZWRfbG9jYWxlcygpCisrICAgICAgICAgICAgbWFuYWdlciA9IHN0 dF9iYWNrZW5kX21vZGVsX21hbmFnZXIoIm1vb25zaGluZSIpCisgICAgICAgICBlbHNlOgorLSAg ICAgICAgICAgIHN1cHBvcnRlZCA9IHN0dF92b3NrX29ubGluZV9tb2RlbF9tYW5hZ2VyKCkuc3Vw cG9ydGVkX2xvY2FsZXMoKQorKyAgICAgICAgICAgIG1hbmFnZXIgPSBzdHRfYmFja2VuZF9tb2Rl bF9tYW5hZ2VyKCJ2b3NrIikKKysKKysgICAgICAgIHN1cHBvcnRlZCA9IG1hbmFnZXIuc3VwcG9y dGVkX2xvY2FsZXMoKSBpZiBtYW5hZ2VyIGlzIG5vdCBOb25lIGVsc2UgW10KKyAKKyAgICAgICAg IF9FWENMVURFRCA9IHsibXVsdGlsaW5ndWFsIn0KKyAKK0BAIC0yMTgsNiArMjgxLDE2IEBACisg ICAgICAgICAgICAgaWYgbG9jIG5vdCBpbiBzZWxmLl9sb2NhbGVfbGlzdDoKKyAgICAgICAgICAg ICAgICAgc2VsZi5fYXBwZW5kX2xvY2FsZV9vcHRpb24obG9jKQorIAorKyAgICBkZWYgX3JlZnJl c2hfbG9jYWxlX2Ryb3Bkb3duKHNlbGYpOgorKyAgICAgICAgIyBSZWJ1aWxkIHRoZSBsYW5ndWFn ZSBsaXN0IGFuZCBoYW5kIGl0IHRvIHRoZSBkcm9wZG93bi4KKysgICAgICAgIHNlbGYuX3BvcHVs YXRlX2xvY2FsZV9saXN0KCkKKysKKysgICAgICAgIHNlbGYuX3N1cHByZXNzX2xhbmd1YWdlX2Ni ID0gVHJ1ZQorKyAgICAgICAgc2VsZi5sYW5ndWFnZV9kcm9wZG93bi5zZXRfbW9kZWwoc2VsZi5f bG9jYWxlX25hbWVzKQorKyAgICAgICAgc2VsZi5fc3VwcHJlc3NfbGFuZ3VhZ2VfY2IgPSBGYWxz ZQorKworKyAgICAgICAgc2VsZi5fc2VsZWN0X2N1cnJlbnRfbG9jYWxlX2luX2Ryb3Bkb3duKCkK KysKKyAgICAgZGVmIF9hcHBlbmRfbG9jYWxlX29wdGlvbihzZWxmLCBsb2NhbGVfc3RyKToKKyAg ICAgICAgIGlmIGxvY2FsZV9zdHIgaW4gKE5vbmUsICIiLCAiTm9uZSIsICJtdWx0aWxpbmd1YWwi KToKKyAgICAgICAgICAgICByZXR1cm4KK0BAIC0yNTMsMjMgKzMyNiwzNiBAQAorICAgICAgICAg ICAgICAgICBzZWxmLl9tb2RlbC5kaXNjb25uZWN0X2J5X2Z1bmMoc2VsZi5fbW9kZWxfY2hhbmdl ZF9jYikKKyAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICBw YXNzCisrICAgICAgICAgICAgc2VsZi5fbW9kZWwgPSBOb25lCisgCistICAgICAgICBiYWNrZW5k ID0gc2VsZi5fc2V0dGluZ3MuZ2V0X3N0cmluZygiYmFja2VuZCIpCisrICAgICAgICBiYWNrZW5k ID0gc2VsZi5fYmFja2VuZCgpCisgICAgICAgICBsb2NhbGVfc3RyID0gc2VsZi5fY3VycmVudF9s b2NhbGUubG9jYWxlCisgCistICAgICAgICBpZiBiYWNrZW5kID09ICJ3aGlzcGVyIjoKKy0gICAg ICAgICAgICBzZWxmLl9tb2RlbCA9IFNUVFdoaXNwZXJNb2RlbChsb2NhbGVfc3RyPWxvY2FsZV9z dHIpCistICAgICAgICBlbGlmIGJhY2tlbmQgPT0gIm9ubnhhc3IiOgorLSAgICAgICAgICAgIHNl bGYuX21vZGVsID0gU1RUT25ueEFzck1vZGVsKGxvY2FsZV9zdHI9bG9jYWxlX3N0cikKKy0gICAg ICAgIGVsaWYgYmFja2VuZCA9PSAibW9vbnNoaW5lIjoKKy0gICAgICAgICAgICBzZWxmLl9tb2Rl bCA9IFNUVE1vb25zaGluZU1vZGVsKGxvY2FsZV9zdHI9bG9jYWxlX3N0cikKKy0gICAgICAgIGVs c2U6CistICAgICAgICAgICAgc2VsZi5fbW9kZWwgPSBTVFRWb3NrTW9kZWwobG9jYWxlX3N0cj1s b2NhbGVfc3RyKQorKyAgICAgICAgaWYgc3R0X2JhY2tlbmRfaXNfYXZhaWxhYmxlKGJhY2tlbmQp OgorKyAgICAgICAgICAgIG1vZGVsX2NsYXNzID0gc3R0X2JhY2tlbmRfY29tcG9uZW50KGJhY2tl bmQsICJtb2RlbCIpCisrICAgICAgICAgICAgaWYgbW9kZWxfY2xhc3MgaXMgbm90IE5vbmU6Cisr ICAgICAgICAgICAgICAgIHRyeToKKysgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGVsID0g bW9kZWxfY2xhc3MobG9jYWxlX3N0cj1sb2NhbGVfc3RyKQorKyAgICAgICAgICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGVycm9yOgorKyAgICAgICAgICAgICAgICAgICAgTE9HX01TRy5lcnJv cigiY2Fubm90IGNyZWF0ZSBtb2RlbCBmb3IgYmFja2VuZCAlcyAoJXMpIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmFja2VuZCwgZXJyb3IpCisrCisrICAgICAgICBpZiBz ZWxmLl9tb2RlbCBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBzZWxmLl9tb2RlbC5jb25uZWN0 KCJjaGFuZ2VkIiwgc2VsZi5fbW9kZWxfY2hhbmdlZF9jYikKKyAKKy0gICAgICAgIHNlbGYuX21v ZGVsLmNvbm5lY3QoImNoYW5nZWQiLCBzZWxmLl9tb2RlbF9jaGFuZ2VkX2NiKQorICAgICAgICAg c2VsZi5fdXBkYXRlX21vZGVsX2luZm8oKQorIAorICAgICBkZWYgX3VwZGF0ZV9tb2RlbF9pbmZv KHNlbGYpOgorKyAgICAgICAgYmFja2VuZCA9IHNlbGYuX2JhY2tlbmQoKQorKworKyAgICAgICAg aWYgc3R0X2JhY2tlbmRfbWlzc2luZ19kZXBlbmRlbmNpZXMoYmFja2VuZCk6CisrICAgICAgICAg ICAgc2VsZi5tb2RlbF9pbmZvX3Jvdy5zZXRfdGl0bGUoCisrICAgICAgICAgICAgICAgIF8oIiVz IGlzIG5vdCBpbnN0YWxsZWQiKSAlIHN0dF9iYWNrZW5kX2Rpc3BsYXlfbmFtZShiYWNrZW5kKSkK KysgICAgICAgICAgICBzZWxmLm1vZGVsX2luZm9fcm93LnNldF9zdWJ0aXRsZSgKKysgICAgICAg ICAgICAgICAgc3R0X2JhY2tlbmRfaW5zdGFsbF9jb21tYW5kKGJhY2tlbmQpKQorKyAgICAgICAg ICAgIHNlbGYuY2hhbmdlX21vZGVsX2J1dHRvbi5zZXRfbGFiZWwoXygiSW5zdGFsbOKApiIpKQor KyAgICAgICAgICAgIHJldHVybgorKworICAgICAgICAgaWYgc2VsZi5fbW9kZWwgaXMgTm9uZSBv ciBub3Qgc2VsZi5fbW9kZWwuYXZhaWxhYmxlKCk6CisgICAgICAgICAgICAgc2VsZi5tb2RlbF9p bmZvX3Jvdy5zZXRfdGl0bGUoXygiTm8gbW9kZWwgZG93bmxvYWRlZCIpKQorICAgICAgICAgICAg IHNlbGYubW9kZWxfaW5mb19yb3cuc2V0X3N1YnRpdGxlKAorQEAgLTI4OCwxNiArMzc0LDggQEAK KyAgICAgICAgICAgICAgICAgZWxzZSBfKCJJbnN0YWxsZWQgbWFudWFsbHkiKSkKKyAgICAgICAg ICAgICByZXR1cm4KKyAKKy0gICAgICAgIGJhY2tlbmQgPSBzZWxmLl9zZXR0aW5ncy5nZXRfc3Ry aW5nKCJiYWNrZW5kIikKKy0gICAgICAgIGlmIGJhY2tlbmQgPT0gIndoaXNwZXIiOgorLSAgICAg ICAgICAgIG1hbmFnZXIgPSBzdHRfd2hpc3Blcl9vbmxpbmVfbW9kZWxfbWFuYWdlcigpCistICAg ICAgICBlbGlmIGJhY2tlbmQgPT0gIm9ubnhhc3IiOgorLSAgICAgICAgICAgIG1hbmFnZXIgPSBz dHRfb25ueGFzcl9vbmxpbmVfbW9kZWxfbWFuYWdlcigpCistICAgICAgICBlbGlmIGJhY2tlbmQg PT0gIm1vb25zaGluZSI6CistICAgICAgICAgICAgbWFuYWdlciA9IHN0dF9tb29uc2hpbmVfb25s aW5lX21vZGVsX21hbmFnZXIoKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBtYW5hZ2Vy ID0gc3R0X3Zvc2tfb25saW5lX21vZGVsX21hbmFnZXIoKQorLSAgICAgICAgZGVzYyA9IG1hbmFn ZXIuZ2V0X21vZGVsX2Rlc2NyaXB0aW9uKG1vZGVsX25hbWUpCisrICAgICAgICBtYW5hZ2VyID0g c3R0X2JhY2tlbmRfbW9kZWxfbWFuYWdlcihiYWNrZW5kKQorKyAgICAgICAgZGVzYyA9IG1hbmFn ZXIuZ2V0X21vZGVsX2Rlc2NyaXB0aW9uKG1vZGVsX25hbWUpIGlmIG1hbmFnZXIgZWxzZSBOb25l CisgCisgICAgICAgICBzZWxmLm1vZGVsX2luZm9fcm93LnNldF90aXRsZShtb2RlbF9uYW1lKQor IAorQEAgLTM0Nyw2ICs0MjUsOSBAQAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2RlbF9p bmZvX3Jvdy5zZXRfc3VidGl0bGUoc2l6ZSkKKyAKKyAgICAgZGVmIF9hdXRvX3Byb21wdF9tb2Rl bF9kb3dubG9hZChzZWxmKToKKysgICAgICAgIGlmIG5vdCBzdHRfYmFja2VuZF9pc19hdmFpbGFi bGUoc2VsZi5fYmFja2VuZCgpKToKKysgICAgICAgICAgICByZXR1cm4KKysKKyAgICAgICAgIGlm IHNlbGYuX21vZGVsIGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5fbW9kZWwuYXZhaWxhYmxlKCk6 CisgICAgICAgICAgICAgZGlhbG9nID0gU1RUTW9kZWxDaG9vc2VyRGlhbG9nKG1vZGVsPXNlbGYu X21vZGVsKQorICAgICAgICAgICAgIGRpYWxvZy5zZXRfdHJhbnNpZW50X2ZvcihzZWxmKQorQEAg LTM1NSw5ICs0MzYsMTM0IEBACisgICAgIGRlZiBfbW9kZWxfY2hhbmdlZF9jYihzZWxmLCBtb2Rl bCk6CisgICAgICAgICBzZWxmLl91cGRhdGVfbW9kZWxfaW5mbygpCisgCisrICAgIGRlZiBfY29w eV90b19jbGlwYm9hcmQoc2VsZiwgdGV4dCk6CisrICAgICAgICBjbGlwYm9hcmQgPSBzZWxmLmdl dF9jbGlwYm9hcmQoKQorKyAgICAgICAgaWYgY2xpcGJvYXJkIGlzIE5vbmU6CisrICAgICAgICAg ICAgcmV0dXJuCisrCisrICAgICAgICB0cnk6CisrICAgICAgICAgICAgY2xpcGJvYXJkLnNldF9j b250ZW50KAorKyAgICAgICAgICAgICAgICBHZGsuQ29udGVudFByb3ZpZGVyLm5ld19mb3JfdmFs dWUoR09iamVjdC5WYWx1ZShzdHIsIHRleHQpKSkKKysgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZXJyb3I6CisrICAgICAgICAgICAgTE9HX01TRy53YXJuaW5nKCJjYW5ub3QgY29weSB0byBj bGlwYm9hcmQgKCVzKSIsIGVycm9yKQorKworKyAgICBkZWYgX2luc3RhbGxfZGlhbG9nX2JvZHko c2VsZiwgYmFja2VuZCwgbWlzc2luZyk6CisrICAgICAgICBtb2R1bGVzID0gIlxuIi5qb2luKCIg ICAg4oCiICVzIiAlIGRlcC5yZXF1aXJlbWVudCBmb3IgZGVwIGluIG1pc3NpbmcpCisrICAgICAg ICByZXR1cm4gXygiVGhlICUoYmFja2VuZClzIGJhY2tlbmQgbmVlZHMgcHl0aG9uIG1vZHVsZXMg dGhhdCBhcmUgbm90ICIKKysgICAgICAgICAgICAgICAgICJpbnN0YWxsZWQgb24gdGhpcyBzeXN0 ZW06XG5cbiIKKysgICAgICAgICAgICAgICAgICIlKG1vZHVsZXMpc1xuXG4iCisrICAgICAgICAg ICAgICAgICAiSW5zdGFsbCB0aGVtIGluIGEgdGVybWluYWwgd2l0aCB0aGUgZm9sbG93aW5nIGNv bW1hbmQsICIKKysgICAgICAgICAgICAgICAgICJ0aGVuIHByZXNzIOKAnENoZWNrIEFnYWlu4oCd OlxuXG4iCisrICAgICAgICAgICAgICAgICAiICAgICUoY29tbWFuZClzIikgJSB7CisrICAgICAg ICAgICAgICAgICAgICAgImJhY2tlbmQiOiBzdHRfYmFja2VuZF9kaXNwbGF5X25hbWUoYmFja2Vu ZCksCisrICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZXMiOiBtb2R1bGVzLAorKyAgICAgICAg ICAgICAgICAgICAgICJjb21tYW5kIjogc3R0X2JhY2tlbmRfaW5zdGFsbF9jb21tYW5kKGJhY2tl bmQpfQorKworKyAgICBkZWYgX3ByZXNlbnRfaW5zdGFsbF9kaWFsb2coc2VsZiwgYmFja2VuZCk6 CisrICAgICAgICBtaXNzaW5nID0gc3R0X2JhY2tlbmRfbWlzc2luZ19kZXBlbmRlbmNpZXMoYmFj a2VuZCwgcmVmcmVzaD1UcnVlKQorKyAgICAgICAgaWYgbm90IG1pc3Npbmc6CisrICAgICAgICAg ICAgcmV0dXJuIEZhbHNlCisrCisrICAgICAgICBoZWFkaW5nID0gXygiJXMgSXMgTm90IEluc3Rh bGxlZCIpICUgc3R0X2JhY2tlbmRfZGlzcGxheV9uYW1lKGJhY2tlbmQpCisrICAgICAgICBib2R5 ID0gc2VsZi5faW5zdGFsbF9kaWFsb2dfYm9keShiYWNrZW5kLCBtaXNzaW5nKQorKyAgICAgICAg Y29tbWFuZCA9IHN0dF9iYWNrZW5kX2luc3RhbGxfY29tbWFuZChiYWNrZW5kKQorKworKyAgICAg ICAgIyBBZHcuQWxlcnREaWFsb2cgbmVlZHMgbGliYWR3YWl0YSAxLjUsIGZhbGwgYmFjayBvbiBB ZHcuTWVzc2FnZURpYWxvZy4KKysgICAgICAgIGlmIGhhc2F0dHIoQWR3LCAiQWxlcnREaWFsb2ci KToKKysgICAgICAgICAgICBkaWFsb2cgPSBBZHcuQWxlcnREaWFsb2coaGVhZGluZz1oZWFkaW5n LCBib2R5PWJvZHkpCisrICAgICAgICAgICAgc2VsZi5fc2V0dXBfaW5zdGFsbF9kaWFsb2coZGlh bG9nLCBiYWNrZW5kLCBjb21tYW5kKQorKyAgICAgICAgICAgIGRpYWxvZy5wcmVzZW50KHNlbGYp CisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIGRpYWxvZyA9IEFkdy5NZXNzYWdlRGlhbG9n KHRyYW5zaWVudF9mb3I9c2VsZiwgbW9kYWw9VHJ1ZSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoZWFkaW5nPWhlYWRpbmcsIGJvZHk9Ym9keSkKKysgICAgICAgICAg ICBzZWxmLl9zZXR1cF9pbnN0YWxsX2RpYWxvZyhkaWFsb2csIGJhY2tlbmQsIGNvbW1hbmQpCisr ICAgICAgICAgICAgZGlhbG9nLnByZXNlbnQoKQorKworKyAgICAgICAgcmV0dXJuIFRydWUKKysK KysgICAgZGVmIF9zZXR1cF9pbnN0YWxsX2RpYWxvZyhzZWxmLCBkaWFsb2csIGJhY2tlbmQsIGNv bW1hbmQpOgorKyAgICAgICAgZGlhbG9nLmFkZF9yZXNwb25zZSgiY2xvc2UiLCBfKCJDbG9zZSIp KQorKyAgICAgICAgZGlhbG9nLmFkZF9yZXNwb25zZSgiY29weSIsIF8oIkNvcHkgQ29tbWFuZCIp KQorKyAgICAgICAgZGlhbG9nLmFkZF9yZXNwb25zZSgicmVjaGVjayIsIF8oIkNoZWNrIEFnYWlu IikpCisrICAgICAgICBkaWFsb2cuc2V0X3Jlc3BvbnNlX2FwcGVhcmFuY2UoInJlY2hlY2siLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkdy5SZXNwb25zZUFwcGVh cmFuY2UuU1VHR0VTVEVEKQorKyAgICAgICAgZGlhbG9nLnNldF9kZWZhdWx0X3Jlc3BvbnNlKCJy ZWNoZWNrIikKKysgICAgICAgIGRpYWxvZy5zZXRfY2xvc2VfcmVzcG9uc2UoImNsb3NlIikKKysg ICAgICAgIGRpYWxvZy5jb25uZWN0KCJyZXNwb25zZSIsIHNlbGYuX2luc3RhbGxfZGlhbG9nX3Jl c3BvbnNlX2NiLAorKyAgICAgICAgICAgICAgICAgICAgICAgYmFja2VuZCwgY29tbWFuZCkKKysK KysgICAgZGVmIF9pbnN0YWxsX2RpYWxvZ19yZXNwb25zZV9jYihzZWxmLCBkaWFsb2csIHJlc3Bv bnNlLCBiYWNrZW5kLCBjb21tYW5kKToKKysgICAgICAgIGlmIHJlc3BvbnNlID09ICJjb3B5IjoK KysgICAgICAgICAgICBzZWxmLl9jb3B5X3RvX2NsaXBib2FyZChjb21tYW5kKQorKyAgICAgICAg ICAgIHNlbGYudG9hc3Rfb3ZlcmxheS5hZGRfdG9hc3QoCisrICAgICAgICAgICAgICAgIEFkdy5U b2FzdCh0aXRsZT1fKCJDb21tYW5kIGNvcGllZCB0byB0aGUgY2xpcGJvYXJkIiksCisrICAgICAg ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMpKQorKyAgICAgICAgICAgIHJldHVybgorKwor KyAgICAgICAgaWYgcmVzcG9uc2UgIT0gInJlY2hlY2siOgorKyAgICAgICAgICAgIHJldHVybgor KworKyAgICAgICAgaWYgbm90IHN0dF9iYWNrZW5kX2lzX2F2YWlsYWJsZShiYWNrZW5kLCByZWZy ZXNoPVRydWUpOgorKyAgICAgICAgICAgIHNlbGYudG9hc3Rfb3ZlcmxheS5hZGRfdG9hc3QoCisr ICAgICAgICAgICAgICAgIEFkdy5Ub2FzdCh0aXRsZT1fKCIlcyBpcyBzdGlsbCBub3QgaW5zdGFs bGVkIikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICUgc3R0X2JhY2tlbmRfZGlzcGxheV9u YW1lKGJhY2tlbmQpLCB0aW1lb3V0PTUpKQorKyAgICAgICAgICAgIHJldHVybgorKworKyAgICAg ICAgc2VsZi5fdXBkYXRlX2JhY2tlbmRfcm93cygpCisrICAgICAgICBpZiBiYWNrZW5kICE9IHNl bGYuX2JhY2tlbmQoKToKKysgICAgICAgICAgICBzZWxmLl9hcHBseV9iYWNrZW5kKGJhY2tlbmQp CisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHNlbGYuX3JlbG9hZF9iYWNrZW5kKCkKKysK KysgICAgZGVmIF9pbnN0YWxsX2FjdGlvbl9hY3RpdmF0ZWQoc2VsZiwgX2FjdGlvbiwgX3BhcmFt KToKKysgICAgICAgIHNlbGYuX3ByZXNlbnRfaW5zdGFsbF9kaWFsb2coc2VsZi5fYmFja2VuZCgp KQorKworKyAgICBkZWYgX2JhY2tlbmRfbm90X2luc3RhbGxlZChzZWxmKToKKysgICAgICAgIGlm IHNlbGYuX21pc3NpbmdfZGVwc190b2FzdCAhPSBOb25lOgorKyAgICAgICAgICAgIHJldHVybgor KworKyAgICAgICAgaWYgc2VsZi5fbm9fbW9kZWxfdG9hc3QgIT0gTm9uZToKKysgICAgICAgICAg ICBzZWxmLl9ub19tb2RlbF90b2FzdC5kaXNtaXNzKCkKKysgICAgICAgICAgICBzZWxmLl9ub19t b2RlbF90b2FzdCA9IE5vbmUKKysgICAgICAgIGlmIHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZV90 b2FzdCAhPSBOb25lOgorKyAgICAgICAgICAgIHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZV90b2Fz dC5kaXNtaXNzKCkKKysgICAgICAgICAgICBzZWxmLl91bnN1cHBvcnRlZF9sb2NhbGVfdG9hc3Qg PSBOb25lCisrCisrICAgICAgICBzZWxmLl9taXNzaW5nX2RlcHNfdG9hc3QgPSBBZHcuVG9hc3Qo CisrICAgICAgICAgICAgdGl0bGU9XygiJXMgaXMgbm90IGluc3RhbGxlZCIpCisrICAgICAgICAg ICAgICAgICAgJSBzdHRfYmFja2VuZF9kaXNwbGF5X25hbWUoc2VsZi5fYmFja2VuZCgpKSwKKysg ICAgICAgICAgICB0aW1lb3V0PTAsCisrICAgICAgICAgICAgYnV0dG9uX2xhYmVsPV8oIkhvdyB0 byBJbnN0YWxsIiksCisrICAgICAgICAgICAgYWN0aW9uX25hbWU9InRvYXN0Lmluc3RhbGxfYmFj a2VuZCIpCisrICAgICAgICBzZWxmLl9taXNzaW5nX2RlcHNfdG9hc3QuY29ubmVjdCgiZGlzbWlz c2VkIiwgc2VsZi5fdG9hc3RfZGlzbWlzc2VkKQorKyAgICAgICAgc2VsZi50b2FzdF9vdmVybGF5 LmFkZF90b2FzdChzZWxmLl9taXNzaW5nX2RlcHNfdG9hc3QpCisrCisrICAgIGRlZiBfcmVmcmVz aF9zdGF0dXNfbWVzc2FnZXMoc2VsZik6CisrICAgICAgICBpZiBub3Qgc3R0X2JhY2tlbmRfaXNf YXZhaWxhYmxlKHNlbGYuX2JhY2tlbmQoKSk6CisrICAgICAgICAgICAgc2VsZi5fYmFja2VuZF9u b3RfaW5zdGFsbGVkKCkKKysgICAgICAgICAgICByZXR1cm4KKysKKysgICAgICAgIGlmIHNlbGYu X21pc3NpbmdfZGVwc190b2FzdCAhPSBOb25lOgorKyAgICAgICAgICAgIHNlbGYuX21pc3Npbmdf ZGVwc190b2FzdC5kaXNtaXNzKCkKKysgICAgICAgICAgICBzZWxmLl9taXNzaW5nX2RlcHNfdG9h c3QgPSBOb25lCisrCisrICAgICAgICBpZiAoc2VsZi5fbW9kZWwgaXMgTm9uZSBvciBub3Qgc2Vs Zi5fbW9kZWwuYXZhaWxhYmxlKCkKKysgICAgICAgICAgICAgICAgb3Igc2VsZi5fZW5naW5lIGlz IE5vbmUgb3Igbm90IHNlbGYuX2VuZ2luZS5oYXNfbW9kZWwoKSk6CisrICAgICAgICAgICAgc2Vs Zi5fZW5naW5lX2hhc19ub19tb2RlbCgpCisrICAgICAgICAgICAgcmV0dXJuCisrCisrICAgICAg ICBpZiBzZWxmLl9ub19tb2RlbF90b2FzdCAhPSBOb25lOgorKyAgICAgICAgICAgIHNlbGYuX25v X21vZGVsX3RvYXN0LmRpc21pc3MoKQorKyAgICAgICAgICAgIHNlbGYuX25vX21vZGVsX3RvYXN0 ID0gTm9uZQorKworKyAgICAgICAgaWYgc2VsZi5fdmFsaWRfZm9ybWF0dGluZ19maWxlID09IEZh bHNlOgorKyAgICAgICAgICAgIHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZSgpCisrICAgICAgICBl bGlmIHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZV90b2FzdCAhPSBOb25lOgorKyAgICAgICAgICAg IHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZV90b2FzdC5kaXNtaXNzKCkKKysgICAgICAgICAgICBz ZWxmLl91bnN1cHBvcnRlZF9sb2NhbGVfdG9hc3QgPSBOb25lCisgCisgICAgIGRlZiBfdXBkYXRl X3ZvaWNlX2NvbW1hbmRzX3Zpc2liaWxpdHkoc2VsZik6CistICAgICAgICBpc192b3NrID0gKHNl bGYuX3NldHRpbmdzLmdldF9zdHJpbmcoImJhY2tlbmQiKSA9PSAidm9zayIpCisrICAgICAgICBp c192b3NrID0gKHNlbGYuX2JhY2tlbmQoKSA9PSAidm9zayIpCisgICAgICAgICBzZWxmLnZjX3do aXNwZXJfd2FybmluZy5zZXRfdmlzaWJsZShub3QgaXNfdm9zaykKKyAgICAgICAgIHNlbGYudm9p Y2VfY29tbWFuZHNfZ3JvdXAuc2V0X3Zpc2libGUoaXNfdm9zaykKKyAKK0BAIC0zNzIsNDAgKzU3 OCw0MCBAQAorICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAnX3N1cHByZXNzX2VuZ2luZV9jYics IEZhbHNlKToKKyAgICAgICAgICAgICByZXR1cm4KKyAKKy0gICAgICAgIGlmIGJ1dHRvbiA9PSBz ZWxmLnZvc2tfY2hlY2s6CistICAgICAgICAgICAgYmFja2VuZCA9ICJ2b3NrIgorLSAgICAgICAg ZWxpZiBidXR0b24gPT0gc2VsZi5tb29uc2hpbmVfY2hlY2s6CistICAgICAgICAgICAgYmFja2Vu ZCA9ICJtb29uc2hpbmUiCistICAgICAgICBlbGlmIGJ1dHRvbiA9PSBzZWxmLndoaXNwZXJfY2hl Y2s6CistICAgICAgICAgICAgYmFja2VuZCA9ICJ3aGlzcGVyIgorLSAgICAgICAgZWxzZToKKy0g ICAgICAgICAgICBiYWNrZW5kID0gIm9ubnhhc3IiCisrICAgICAgICBiYWNrZW5kID0gc2VsZi5f YmFja2VuZF9mb3JfY2hlY2tfYnV0dG9uKGJ1dHRvbikKKysgICAgICAgIGlmIGJhY2tlbmQgaXMg Tm9uZToKKysgICAgICAgICAgICByZXR1cm4KKyAKKy0gICAgICAgIGN1cnJlbnQgPSBzZWxmLl9z ZXR0aW5ncy5nZXRfc3RyaW5nKCJiYWNrZW5kIikKKysgICAgICAgIGN1cnJlbnQgPSBzZWxmLl9i YWNrZW5kKCkKKyAgICAgICAgIGlmIGJhY2tlbmQgPT0gY3VycmVudDoKKyAgICAgICAgICAgICBy ZXR1cm4KKyAKKy0gICAgICAgIHNlbGYuX3NldHRpbmdzLnNldF9zdHJpbmcoImJhY2tlbmQiLCBi YWNrZW5kKQorLSAgICAgICAgb2xkX2xvY2FsZSA9IHNlbGYuX2N1cnJlbnRfbG9jYWxlLmxvY2Fs ZQorLSAgICAgICAgc2VsZi5fcG9wdWxhdGVfbG9jYWxlX2xpc3QoKQorLSAgICAgICAgc2VsZi5f c3VwcHJlc3NfbGFuZ3VhZ2VfY2IgPSBUcnVlCistICAgICAgICBzZWxmLmxhbmd1YWdlX2Ryb3Bk b3duLnNldF9tb2RlbChzZWxmLl9sb2NhbGVfbmFtZXMpCistICAgICAgICBzZWxmLl9zdXBwcmVz c19sYW5ndWFnZV9jYiA9IEZhbHNlCisrICAgICAgICBpZiBub3Qgc3R0X2JhY2tlbmRfaXNfYXZh aWxhYmxlKGJhY2tlbmQsIHJlZnJlc2g9VHJ1ZSk6CisrICAgICAgICAgICAgc2VsZi5fc2VsZWN0 X2JhY2tlbmRfYnV0dG9uKGN1cnJlbnQpCisrICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2JhY2tl bmRfcm93cygpCisrICAgICAgICAgICAgc2VsZi5fcHJlc2VudF9pbnN0YWxsX2RpYWxvZyhiYWNr ZW5kKQorKyAgICAgICAgICAgIHJldHVybgorIAorLSAgICAgICAgaWYgb2xkX2xvY2FsZSBpbiBz ZWxmLl9sb2NhbGVfbGlzdDoKKy0gICAgICAgICAgICBzZWxmLl9zdXBwcmVzc19sYW5ndWFnZV9j YiA9IFRydWUKKy0gICAgICAgICAgICBzZWxmLmxhbmd1YWdlX2Ryb3Bkb3duLnNldF9zZWxlY3Rl ZCgKKy0gICAgICAgICAgICAgICAgc2VsZi5fbG9jYWxlX2xpc3QuaW5kZXgob2xkX2xvY2FsZSkp CistICAgICAgICAgICAgc2VsZi5fc3VwcHJlc3NfbGFuZ3VhZ2VfY2IgPSBGYWxzZQorKyAgICAg ICAgc2VsZi5fYXBwbHlfYmFja2VuZChiYWNrZW5kKQorIAorLSAgICAgICAgc2VsZi5faW5pdF9t b2RlbCgpCisrICAgIGRlZiBfYXBwbHlfYmFja2VuZChzZWxmLCBiYWNrZW5kKToKKysgICAgICAg IHNlbGYuX3NldHRpbmdzLnNldF9zdHJpbmcoImJhY2tlbmQiLCBiYWNrZW5kKQorKyAgICAgICAg c2VsZi5fc2VsZWN0X2JhY2tlbmRfYnV0dG9uKGJhY2tlbmQpCisrICAgICAgICBzZWxmLl9yZWxv YWRfYmFja2VuZChwcm9tcHRfZG93bmxvYWQ9VHJ1ZSkKKyAKKysgICAgZGVmIF9yZWxvYWRfYmFj a2VuZChzZWxmLCBwcm9tcHRfZG93bmxvYWQ9RmFsc2UpOgorKyAgICAgICAgc2VsZi5fcmVmcmVz aF9sb2NhbGVfZHJvcGRvd24oKQorKyAgICAgICAgc2VsZi5faW5pdF9tb2RlbCgpCisgICAgICAg ICBzZWxmLl9jcmVhdGVfZW5naW5lKCkKKyAgICAgICAgIHNlbGYuX3VwZGF0ZV92b2ljZV9jb21t YW5kc192aXNpYmlsaXR5KCkKKyAgICAgICAgIHNlbGYuX2VtcHR5X3Nob3J0Y3V0X3BhZ2UoKQor ICAgICAgICAgc2VsZi5fbG9hZF91dHRlcmFuY2VzKCkKKysgICAgICAgIHNlbGYuX3VwZGF0ZV9i YWNrZW5kX3Jvd3MoKQorKyAgICAgICAgc2VsZi5fcmVmcmVzaF9zdGF0dXNfbWVzc2FnZXMoKQor IAorLSAgICAgICAgaWYgc2VsZi5fbW9kZWwgaXMgbm90IE5vbmUgYW5kIG5vdCBzZWxmLl9tb2Rl bC5hdmFpbGFibGUoKToKKysgICAgICAgIGlmIChwcm9tcHRfZG93bmxvYWQKKysgICAgICAgICAg ICAgICAgYW5kIHNlbGYuX21vZGVsIGlzIG5vdCBOb25lCisrICAgICAgICAgICAgICAgIGFuZCBu b3Qgc2VsZi5fbW9kZWwuYXZhaWxhYmxlKCkpOgorICAgICAgICAgICAgIHNlbGYuX2F1dG9fcHJv bXB0X21vZGVsX2Rvd25sb2FkKCkKKyAKKyAgICAgQEd0ay5UZW1wbGF0ZS5DYWxsYmFjaygpCitA QCAtNDQxLDYgKzY0NywxNCBAQAorIAorICAgICBAR3RrLlRlbXBsYXRlLkNhbGxiYWNrKCkKKyAg ICAgZGVmIGNoYW5nZV9tb2RlbF9jbGlja2VkX2NiKHNlbGYsICpfYXJncyk6CisrICAgICAgICBi YWNrZW5kID0gc2VsZi5fYmFja2VuZCgpCisrICAgICAgICBpZiBub3Qgc3R0X2JhY2tlbmRfaXNf YXZhaWxhYmxlKGJhY2tlbmQsIHJlZnJlc2g9VHJ1ZSk6CisrICAgICAgICAgICAgc2VsZi5fcHJl c2VudF9pbnN0YWxsX2RpYWxvZyhiYWNrZW5kKQorKyAgICAgICAgICAgIHJldHVybgorKworKyAg ICAgICAgaWYgc2VsZi5fbW9kZWwgaXMgTm9uZToKKysgICAgICAgICAgICBzZWxmLl9yZWxvYWRf YmFja2VuZCgpCisrCisgICAgICAgICBpZiBzZWxmLl9tb2RlbCAhPSBOb25lOgorICAgICAgICAg ICAgIGRpYWxvZyA9IFNUVE1vZGVsQ2hvb3NlckRpYWxvZyhtb2RlbD1zZWxmLl9tb2RlbCkKKyAg ICAgICAgICAgICBkaWFsb2cuc2V0X3RyYW5zaWVudF9mb3Ioc2VsZikKK0BAIC00NTgsMTEgKzY3 Miw3IEBACisgICAgICAgICBzZWxmLl9zZWxlY3RfY3VycmVudF9sb2NhbGVfaW5fZHJvcGRvd24o KQorIAorICAgICAgICAgaWYgc2VsZi5fY3VycmVudF9sb2NhbGUubG9jYWxlIG5vdCBpbiBzZWxm Ll9sb2NhbGVfbGlzdDoKKy0gICAgICAgICAgICBzZWxmLl9wb3B1bGF0ZV9sb2NhbGVfbGlzdCgp CistICAgICAgICAgICAgc2VsZi5fc3VwcHJlc3NfbGFuZ3VhZ2VfY2IgPSBUcnVlCistICAgICAg ICAgICAgc2VsZi5sYW5ndWFnZV9kcm9wZG93bi5zZXRfbW9kZWwoc2VsZi5fbG9jYWxlX25hbWVz KQorLSAgICAgICAgICAgIHNlbGYuX3N1cHByZXNzX2xhbmd1YWdlX2NiID0gRmFsc2UKKy0gICAg ICAgICAgICBzZWxmLl9zZWxlY3RfY3VycmVudF9sb2NhbGVfaW5fZHJvcGRvd24oKQorKyAgICAg ICAgICAgIHNlbGYuX3JlZnJlc2hfbG9jYWxlX2Ryb3Bkb3duKCkKKyAKKyAgICAgICAgIHNlbGYu X2luaXRfbW9kZWwoKQorICAgICAgICAgc2VsZi5fbG9hZF9jdXJyZW50X2xvY2FsZSgpCitAQCAt NTQxLDIwICs3NTEsNyBAQAorICAgICBkZWYgX2xvYWRfY3VycmVudF9sb2NhbGUoc2VsZik6Cisg ICAgICAgICBzZWxmLl9lbXB0eV9zaG9ydGN1dF9wYWdlKCkKKyAgICAgICAgIHNlbGYuX2xvYWRf dXR0ZXJhbmNlcygpCistCistICAgICAgICBpZiBub3Qgc2VsZi5fZW5naW5lLmhhc19tb2RlbCgp OgorLSAgICAgICAgICAgIHNlbGYuX2VuZ2luZV9oYXNfbm9fbW9kZWwoKQorLSAgICAgICAgICAg IHJldHVybgorLQorLSAgICAgICAgaWYgc2VsZi5fbm9fbW9kZWxfdG9hc3QgIT0gTm9uZToKKy0g ICAgICAgICAgICBzZWxmLl9ub19tb2RlbF90b2FzdC5kaXNtaXNzKCkKKy0gICAgICAgICAgICBz ZWxmLl9ub19tb2RlbF90b2FzdCA9IE5vbmUKKy0KKy0gICAgICAgIGlmIG5vdCBzZWxmLl92YWxp ZF9mb3JtYXR0aW5nX2ZpbGU6CistICAgICAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWRfbG9jYWxl KCkKKy0gICAgICAgIGVsaWYgc2VsZi5fdW5zdXBwb3J0ZWRfbG9jYWxlX3RvYXN0ICE9IE5vbmU6 CistICAgICAgICAgICAgc2VsZi5fdW5zdXBwb3J0ZWRfbG9jYWxlX3RvYXN0LmRpc21pc3MoKQor LSAgICAgICAgICAgIHNlbGYuX3Vuc3VwcG9ydGVkX2xvY2FsZV90b2FzdCA9IE5vbmUKKysgICAg ICAgIHNlbGYuX3JlZnJlc2hfc3RhdHVzX21lc3NhZ2VzKCkKKyAKKyAgICAgZGVmIF9hcHBseV9j aGFuZ2Uoc2VsZik6CisgICAgICAgICBMT0dfTVNHLmRlYnVnKCJvdmVycmlkZSBmaWxlIGJlaW5n IHdyaXR0ZW4iKQorQEAgLTYwOCw2ICs4MDUsMTAgQEAKKyAgICAgICAgIHNlbGYuX3ByZXNlbnRf c2hvcnRjdXRfZGlhbG9nKHJvdykKKyAKKyAgICAgZGVmIF9wcmVzZW50X3Nob3J0Y3V0X2RpYWxv ZyhzZWxmLCByb3cpOgorKyAgICAgICAgaWYgc2VsZi5fZW5naW5lIGlzIE5vbmU6CisrICAgICAg ICAgICAgTE9HX01TRy53YXJuaW5nKCJubyBlbmdpbmUgYXZhaWxhYmxlLCBjYW5ub3QgZWRpdCBz aG9ydGN1dHMiKQorKyAgICAgICAgICAgIHJldHVybgorKworICAgICAgICAgZGlhbG9nID0gU1RU U2hvcnRjdXREaWFsb2coCisgICAgICAgICAgICAgcm93PXJvdywgZW5naW5lPXNlbGYuX2VuZ2lu ZSwgdHJhbnNpZW50X2Zvcj1zZWxmKQorICAgICAgICAgZGlhbG9nLmNvbm5lY3QoInJlc3BvbnNl Iiwgc2VsZi5fc2hvcnRjdXRfZGlhbG9nX3Jlc3BvbnNlX2NiKQorQEAgLTc4MSw3ICs5ODIsOSBA QAorICAgICAgICAgc2VsZi5fYXV0b19wcm9tcHRfbW9kZWxfZG93bmxvYWQoKQorIAorICAgICBk ZWYgX3RvYXN0X2Rpc21pc3NlZChzZWxmLCB0b2FzdCk6CistICAgICAgICBpZiB0b2FzdCA9PSBz ZWxmLl9ub19tb2RlbF90b2FzdDoKKysgICAgICAgIGlmIHRvYXN0ID09IHNlbGYuX21pc3Npbmdf ZGVwc190b2FzdDoKKysgICAgICAgICAgICBzZWxmLl9taXNzaW5nX2RlcHNfdG9hc3Q9Tm9uZQor KyAgICAgICAgZWxpZiB0b2FzdCA9PSBzZWxmLl9ub19tb2RlbF90b2FzdDoKKyAgICAgICAgICAg ICBzZWxmLl9ub19tb2RlbF90b2FzdD1Ob25lCisgCisgICAgICAgICAgICAgIyBEaXNwbGF5IHRo ZSBvdGhlciBtZXNzYWdlIGlmIG5lZWRlZAorQEAgLTc5MiwxMSArOTk1LDE0IEBACisgCisgICAg IGRlZiBfdW5zdXBwb3J0ZWRfbG9jYWxlKHNlbGYpOgorICAgICAgICAgIyBDYXJlZnVsOiB3ZSBj YW4gaGF2ZSBubyBmb3JtYXR0aW5nIGZpbGUgYnV0IGFuIG92ZXJyaWRpbmcgb25lICEhCisrICAg ICAgICBpZiBzZWxmLl9taXNzaW5nX2RlcHNfdG9hc3QgIT0gTm9uZToKKysgICAgICAgICAgICBy ZXR1cm4KKysKKyAgICAgICAgIGlmIHNlbGYuX25vX21vZGVsX3RvYXN0ICE9IE5vbmU6CisgICAg ICAgICAgICAgcmV0dXJuCisgCisgICAgICAgICAjIEZvcm1hdHRpbmcgZmlsZXMgb25seSBleGlz dCBmb3Igdm9zazsgb3RoZXIgZW5naW5lcyBoYXZlIG5vIGZpbGVzIHRvIGZpbmQKKy0gICAgICAg IGlmIHNlbGYuX3NldHRpbmdzLmdldF9zdHJpbmcoImJhY2tlbmQiKSAhPSAidm9zayI6CisrICAg ICAgICBpZiBzZWxmLl9iYWNrZW5kKCkgIT0gInZvc2siOgorICAgICAgICAgICAgIGlmIHNlbGYu X3Vuc3VwcG9ydGVkX2xvY2FsZV90b2FzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAg c2VsZi5fdW5zdXBwb3J0ZWRfbG9jYWxlX3RvYXN0LmRpc21pc3MoKQorICAgICAgICAgICAgICAg ICBzZWxmLl91bnN1cHBvcnRlZF9sb2NhbGVfdG9hc3QgPSBOb25lCitAQCAtODE2LDYgKzEwMjIs OSBAQAorICAgICAgICAgc2VsZi50b2FzdF9vdmVybGF5LmFkZF90b2FzdChzZWxmLl91bnN1cHBv cnRlZF9sb2NhbGVfdG9hc3QpCisgCisgICAgIGRlZiBfZW5naW5lX2hhc19ub19tb2RlbChzZWxm KToKKysgICAgICAgIGlmIHNlbGYuX21pc3NpbmdfZGVwc190b2FzdCAhPSBOb25lOgorKyAgICAg ICAgICAgIHJldHVybgorKworICAgICAgICAgaWYgc2VsZi5fbm9fbW9kZWxfdG9hc3QgIT0gTm9u ZToKKyAgICAgICAgICAgICByZXR1cm4KKyAKK2RpZmYgLXVyTiBJQnVzLVNwZWVjaC1Uby1UZXh0 LTEuMC4wLm9yaWcvZW5naW5lL3N0dGdzdGZhY3RvcnkucHkgSUJ1cy1TcGVlY2gtVG8tVGV4dC0x LjAuMC9lbmdpbmUvc3R0Z3N0ZmFjdG9yeS5weQorLS0tIElCdXMtU3BlZWNoLVRvLVRleHQtMS4w LjAub3JpZy9lbmdpbmUvc3R0Z3N0ZmFjdG9yeS5weQkyMDI2LTA3LTE0IDAzOjAwOjAwLjAwMDAw MDAwMCArMDUzMAorKysrIElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAvZW5naW5lL3N0dGdzdGZh Y3RvcnkucHkJMjAyNi0wOC0wNyAwMTo0NjowMS4wMjY3OTI2MDQgKzA1MzAKK0BAIC0yOSw2ICsy OSwxMCBAQAorIGZyb20gc3R0Z3N0b25ueGFzciBpbXBvcnQgU1RUR3N0T25ueEFzcgorIGZyb20g c3R0Z3N0bW9vbnNoaW5lIGltcG9ydCBTVFRHc3RNb29uc2hpbmUKKyAKKytmcm9tIHN0dGJhY2tl bmRkZXBzIGltcG9ydCAoc3R0X2JhY2tlbmRfZGlzcGxheV9uYW1lLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHRfYmFja2VuZF9pbnN0YWxsX2NvbW1hbmQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0dF9iYWNrZW5kX2lzX2F2YWlsYWJsZSkKKysKKyBMT0dfTVNHPWxv Z2dpbmcuZ2V0TG9nZ2VyKCkKKyAKKyBjbGFzcyBTVFRHc3RGYWN0b3J5KEdPYmplY3QuR09iamVj dCk6CitAQCAtNDUsMTEgKzQ5LDIxIEBACisgICAgICAgICBzZWxmLl9fdXBkYXRlX3ByZWxvYWRl ZF9lbmdpbmUoKQorIAorICAgICBkZWYgbmV3X2VuZ2luZShzZWxmKToKKy0gICAgICAgIGVuZ2lu ZT1Ob25lIGlmIHNlbGYuX2N1cnJlbnRfZW5naW5lIGlzIE5vbmUgZWxzZSBzZWxmLl9jdXJyZW50 X2VuZ2luZSgpCisrICAgICAgICBlbmdpbmUgPSBOb25lIGlmIHNlbGYuX2N1cnJlbnRfZW5naW5l IGlzIE5vbmUgZWxzZSBzZWxmLl9jdXJyZW50X2VuZ2luZSgpCisrICAgICAgICBpZiBlbmdpbmUg aXMgbm90IE5vbmUgYW5kIGVuZ2luZS5waXBlbGluZSBpcyBOb25lOgorKyAgICAgICAgICAgIExP R19NU0cuZGVidWcoImNhY2hlZCBlbmdpbmUgd2FzIGFscmVhZHkgZGVzdHJveWVkLCBjcmVhdGlu ZyBhIG5ldyBvbmUiKQorKyAgICAgICAgICAgIGVuZ2luZSA9IE5vbmUKKyAgICAgICAgIGlmIGVu Z2luZSBpcyBOb25lOgorICAgICAgICAgICAgIExPR19NU0cuZGVidWcoIm5ldyBlbmdpbmUiKQor ICAgICAgICAgICAgICMgQ2hlY2sgYmFja2VuZCBzZXR0aW5nCisgICAgICAgICAgICAgYmFja2Vu ZCA9IHNlbGYuX19zZXR0aW5ncy5nZXRfc3RyaW5nKCJiYWNrZW5kIikKKysgICAgICAgICAgICBp ZiBub3Qgc3R0X2JhY2tlbmRfaXNfYXZhaWxhYmxlKGJhY2tlbmQpOgorKyAgICAgICAgICAgICAg ICBMT0dfTVNHLmVycm9yKCIlcyBiYWNrZW5kIGlzIHNlbGVjdGVkIGJ1dCBub3QgaW5zdGFsbGVk LiAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc3RhbGwgaXQgd2l0aDogJXMi LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0dF9iYWNrZW5kX2Rpc3BsYXlfbmFt ZShiYWNrZW5kKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHRfYmFja2VuZF9p bnN0YWxsX2NvbW1hbmQoYmFja2VuZCkpCisrICAgICAgICAgICAgICAgIExPR19NU0cuZXJyb3Io ImZhbGxpbmcgYmFjayB0byB0aGUgVm9zayBiYWNrZW5kIikKKysgICAgICAgICAgICAgICAgYmFj a2VuZCA9ICJ2b3NrIgorICAgICAgICAgICAgIGlmIGJhY2tlbmQgPT0gIndoaXNwZXIiOgorICAg ICAgICAgICAgICAgICBMT0dfTVNHLmluZm8oIlVzaW5nIFdoaXNwZXIgYmFja2VuZCIpCisgICAg ICAgICAgICAgICAgIGVuZ2luZT1TVFRHc3RXaGlzcGVyKCkKK2RpZmYgLXVyTiBJQnVzLVNwZWVj aC1Uby1UZXh0LTEuMC4wLm9yaWcvZW5naW5lL3N0dGdzdG1vb25zaGluZS5weSBJQnVzLVNwZWVj aC1Uby1UZXh0LTEuMC4wL2VuZ2luZS9zdHRnc3Rtb29uc2hpbmUucHkKKy0tLSBJQnVzLVNwZWVj aC1Uby1UZXh0LTEuMC4wLm9yaWcvZW5naW5lL3N0dGdzdG1vb25zaGluZS5weQkyMDI2LTA3LTE0 IDAzOjAwOjAwLjAwMDAwMDAwMCArMDUzMAorKysrIElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAv ZW5naW5lL3N0dGdzdG1vb25zaGluZS5weQkyMDI2LTA4LTA3IDAxOjM4OjU1LjM1NjA4MjI0NCAr MDUzMAorQEAgLTEzLDM4ICsxMywzOSBAQAorIAorIFNBTVBMRV9SQVRFID0gMTYwMDAKKyAKKy10 cnk6CistICAgIGZyb20gbW9vbnNoaW5lX3ZvaWNlIGltcG9ydCAoCistICAgICAgICBUcmFuc2Ny aWJlciwKKy0gICAgICAgIFRyYW5zY3JpcHRFdmVudExpc3RlbmVyLAorLSAgICAgICAgTW9kZWxB cmNoLAorLSAgICApCistICAgIE1PT05TSElORV9BVkFJTEFCTEUgPSBUcnVlCistZXhjZXB0IElt cG9ydEVycm9yOgorLSAgICBMT0dfTVNHLndhcm5pbmcoIm1vb25zaGluZV92b2ljZSBub3QgYXZh aWxhYmxlLiBJbnN0YWxsIHdpdGg6IHBpcCBpbnN0YWxsIG1vb25zaGluZS12b2ljZSIpCistICAg IE1PT05TSElORV9BVkFJTEFCTEUgPSBGYWxzZQorLSAgICBUcmFuc2NyaXB0RXZlbnRMaXN0ZW5l ciA9IG9iamVjdAorK19MSVNURU5FUl9DTEFTUyA9IE5vbmUKKyAKKy1jbGFzcyBfTGluZUxpc3Rl bmVyKFRyYW5zY3JpcHRFdmVudExpc3RlbmVyKToKKytkZWYgX2xpbmVfbGlzdGVuZXJfY2xhc3Mo KToKKysgICAgI0J1aWxkIHRoZSBsaXN0ZW5lciBzdWJjbGFzcyBvbiBmaXJzdCB1c2UKKysgICAg Z2xvYmFsIF9MSVNURU5FUl9DTEFTUworKyAgICBpZiBfTElTVEVORVJfQ0xBU1MgaXMgbm90IE5v bmU6CisrICAgICAgICByZXR1cm4gX0xJU1RFTkVSX0NMQVNTCisgCistICAgIGRlZiBfX2luaXRf XyhzZWxmLCBlbmdpbmUpOgorLSAgICAgICAgaWYgTU9PTlNISU5FX0FWQUlMQUJMRToKKysgICAg ZnJvbSBtb29uc2hpbmVfdm9pY2UgaW1wb3J0IFRyYW5zY3JpcHRFdmVudExpc3RlbmVyCisrCisr ICAgIGNsYXNzIF9MaW5lTGlzdGVuZXIoVHJhbnNjcmlwdEV2ZW50TGlzdGVuZXIpOgorKworKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVuZ2luZSk6CisgICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXygpCistICAgICAgICBzZWxmLl9lbmdpbmUgPSBlbmdpbmUKKy0gICAgICAgIHNlbGYu X2VtaXR0ZWRfbGluZXMgPSBbXQorKyAgICAgICAgICAgIHNlbGYuX2VuZ2luZSA9IGVuZ2luZQor KyAgICAgICAgICAgIHNlbGYuX2VtaXR0ZWRfbGluZXMgPSBbXQorIAorLSAgICBkZWYgcmVzZXQo c2VsZik6CistICAgICAgICBzZWxmLl9lbWl0dGVkX2xpbmVzLmNsZWFyKCkKKysgICAgICAgIGRl ZiByZXNldChzZWxmKToKKysgICAgICAgICAgICBzZWxmLl9lbWl0dGVkX2xpbmVzLmNsZWFyKCkK KysKKysgICAgICAgIGRlZiBvbl9saW5lX2NvbXBsZXRlZChzZWxmLCBldmVudCk6CisrICAgICAg ICAgICAgbGluZSA9IGV2ZW50LmxpbmUKKysgICAgICAgICAgICBpZiBhbnkobGluZSBpcyBzZWVu IGZvciBzZWVuIGluIHNlbGYuX2VtaXR0ZWRfbGluZXMpOgorKyAgICAgICAgICAgICAgICByZXR1 cm4KKysgICAgICAgICAgICBzZWxmLl9lbWl0dGVkX2xpbmVzLmFwcGVuZChsaW5lKQorKyAgICAg ICAgICAgIHRleHQgPSAobGluZS50ZXh0IG9yICIiKS5zdHJpcCgpCisrICAgICAgICAgICAgaWYg dGV4dDoKKysgICAgICAgICAgICAgICAgTE9HX01TRy5pbmZvKCJNb29uc2hpbmUgdHJhbnNjcmlw dGlvbiByZXN1bHQ6ICclcyciLCB0ZXh0KQorKyAgICAgICAgICAgICAgICBHTGliLmlkbGVfYWRk KHNlbGYuX2VuZ2luZS5fZW1pdF90ZXh0LCB0ZXh0KQorKworKyAgICBfTElTVEVORVJfQ0xBU1Mg PSBfTGluZUxpc3RlbmVyCisrICAgIHJldHVybiBfTElTVEVORVJfQ0xBU1MKKyAKKy0gICAgZGVm IG9uX2xpbmVfY29tcGxldGVkKHNlbGYsIGV2ZW50KToKKy0gICAgICAgIGxpbmUgPSBldmVudC5s aW5lCistICAgICAgICBpZiBhbnkobGluZSBpcyBzZWVuIGZvciBzZWVuIGluIHNlbGYuX2VtaXR0 ZWRfbGluZXMpOgorLSAgICAgICAgICAgIHJldHVybgorLSAgICAgICAgc2VsZi5fZW1pdHRlZF9s aW5lcy5hcHBlbmQobGluZSkKKy0gICAgICAgIHRleHQgPSAobGluZS50ZXh0IG9yICIiKS5zdHJp cCgpCistICAgICAgICBpZiB0ZXh0OgorLSAgICAgICAgICAgIExPR19NU0cuaW5mbygiTW9vbnNo aW5lIHRyYW5zY3JpcHRpb24gcmVzdWx0OiAnJXMnIiwgdGV4dCkKKy0gICAgICAgICAgICBHTGli LmlkbGVfYWRkKHNlbGYuX2VuZ2luZS5fZW1pdF90ZXh0LCB0ZXh0KQorIAorIGNsYXNzIFNUVEdz dE1vb25zaGluZShTVFRHc3RCYXNlKToKKyAgICAgX19ndHlwZV9uYW1lX18gPSAnU1RUR3N0TW9v bnNoaW5lJworQEAgLTkzLDYgKzk0LDcgQEAKKyAgICAgICAgIHNlbGYuX3R4X2xvY2sgPSB0aHJl YWRpbmcuTG9jaygpCisgICAgICAgICBzZWxmLl9zZXNzaW9uX2FjdGl2ZSA9IEZhbHNlCisgICAg ICAgICBzZWxmLl9zdG9wcGluZyA9IEZhbHNlCisrICAgICAgICBzZWxmLl9kZXN0cm95ZWQgPSBG YWxzZQorIAorICAgICAgICAgc2VsZi5fcHJvY2Vzc19xdWV1ZSA9IHF1ZXVlLlF1ZXVlKCkKKyAg ICAgICAgIHNlbGYuX3N0b3BfcHJvY2Vzc2luZyA9IEZhbHNlCitAQCAtMTAzLDExICsxMDUsMTEg QEAKKyAKKyAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICB0cnk6CistICAgICAgICAg ICAgaWYgTE9HX01TRyBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgTE9HX01TRy5pbmZv KCJNb29uc2hpbmUgX19kZWxfXyIpCisgICAgICAgICAgICAgc2VsZi5fc3RvcF9wcm9jZXNzaW5n ID0gVHJ1ZQorLSAgICAgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3NfdGhyZWFkIGlzIG5vdCBOb25l OgorLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX3RocmVhZC5qb2luKHRpbWVvdXQ9Mi4w KQorKyAgICAgICAgICAgIHRocmVhZCA9IHNlbGYuX3Byb2Nlc3NfdGhyZWFkCisrICAgICAgICAg ICAgc2VsZi5fcHJvY2Vzc190aHJlYWQgPSBOb25lCisrICAgICAgICAgICAgaWYgdGhyZWFkIGlz IG5vdCBOb25lOgorKyAgICAgICAgICAgICAgICB0aHJlYWQuam9pbih0aW1lb3V0PTIuMCkKKyAg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgcGFzcworICAgICAgICAgdHJ5 OgorQEAgLTExNiwyNCArMTE4LDM2IEBACisgICAgICAgICAgICAgcGFzcworIAorICAgICBkZWYg ZGVzdHJveShzZWxmKToKKysgICAgICAgIGlmIHNlbGYuX2Rlc3Ryb3llZDoKKysgICAgICAgICAg ICBMT0dfTVNHLmRlYnVnKCJNb29uc2hpbmUgZW5naW5lIGFscmVhZHkgZGVzdHJveWVkIikKKysg ICAgICAgICAgICByZXR1cm4KKysgICAgICAgIHNlbGYuX2Rlc3Ryb3llZCA9IFRydWUKKysKKyAg ICAgICAgIHNlbGYuX3N0b3BfcHJvY2Vzc2luZyA9IFRydWUKKy0gICAgICAgIGlmIHNlbGYuX3By b2Nlc3NfdGhyZWFkIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfdGhy ZWFkLmpvaW4odGltZW91dD0yLjApCisgCistICAgICAgICBzZWxmLl9jdXJyZW50X2xvY2FsZS5k aXNjb25uZWN0KHNlbGYuX2xvY2FsZV9pZCkKKy0gICAgICAgIHNlbGYuX2xvY2FsZV9pZCA9IDAK KysgICAgICAgIHRocmVhZCA9IHNlbGYuX3Byb2Nlc3NfdGhyZWFkCisrICAgICAgICBzZWxmLl9w cm9jZXNzX3RocmVhZCA9IE5vbmUKKysgICAgICAgIGlmIHRocmVhZCBpcyBub3QgTm9uZToKKysg ICAgICAgICAgICB0aHJlYWQuam9pbih0aW1lb3V0PTIuMCkKKysgICAgICAgICAgICBpZiB0aHJl YWQuaXNfYWxpdmUoKToKKysgICAgICAgICAgICAgICAgTE9HX01TRy53YXJuaW5nKCJNb29uc2hp bmUgd29ya2VyIHRocmVhZCBkaWQgbm90IHN0b3AgaW4gdGltZSIpCisrCisrICAgICAgICBpZiBz ZWxmLl9sb2NhbGVfaWQgIT0gMDoKKysgICAgICAgICAgICBzZWxmLl9jdXJyZW50X2xvY2FsZS5k aXNjb25uZWN0KHNlbGYuX2xvY2FsZV9pZCkKKysgICAgICAgICAgICBzZWxmLl9sb2NhbGVfaWQg PSAwCisgCistICAgICAgICBpZiBzZWxmLl9tb2RlbF9pZCAhPSAwOgorKyAgICAgICAgaWYgc2Vs Zi5fbW9kZWxfaWQgIT0gMCBhbmQgc2VsZi5fbW9kZWwgaXMgbm90IE5vbmU6CisgICAgICAgICAg ICAgc2VsZi5fbW9kZWwuZGlzY29ubmVjdChzZWxmLl9tb2RlbF9pZCkKKyAgICAgICAgICAgICBz ZWxmLl9tb2RlbF9pZCA9IDAKKyAKKyAgICAgICAgIHdpdGggc2VsZi5fdHhfbG9jazoKKyAgICAg ICAgICAgICBzZWxmLl90ZWFyZG93bl90cmFuc2NyaWJlcigpCisgCistICAgICAgICBpZiBzZWxm Ll9hcHBzaW5rIGlzIG5vdCBOb25lIGFuZCBnZXRhdHRyKHNlbGYsICJfbmV3X3NhbXBsZV9pZCIs IDApICE9MDoKKy0gICAgICAgICAgICBzZWxmLl9hcHBzaW5rLmRpc2Nvbm5lY3Qoc2VsZi5fbmV3 X3NhbXBsZV9pZCkKKy0gICAgICAgICAgICBzZWxmLl9uZXdfc2FtcGxlX2lkID0gMAorKyAgICAg ICAgaWYgc2VsZi5fYXBwc2luayBpcyBub3QgTm9uZSBhbmQgc2VsZi5fb25fbmV3X3NhbXBsZV9p ZCAhPSAwOgorKyAgICAgICAgICAgIHNlbGYuX2FwcHNpbmsuZGlzY29ubmVjdChzZWxmLl9vbl9u ZXdfc2FtcGxlX2lkKQorKyAgICAgICAgICAgIHNlbGYuX29uX25ld19zYW1wbGVfaWQgPSAwCisg ICAgICAgICBzZWxmLl9hcHBzaW5rID0gTm9uZQorKworICAgICAgICAgTE9HX01TRy5pbmZvKCJN b29uc2hpbmUuZGVzdHJveSgpIGNhbGxlZCIpCisgICAgICAgICBzdXBlcigpLmRlc3Ryb3koKQor IAorQEAgLTE1MCwxNCArMTY0LDE4IEBACisgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUK KyAKKyAgICAgZGVmIF9sb2FkX21vb25zaGluZV9tb2RlbChzZWxmLCBtb2RlbF9wYXRoLCBtb2Rl bF9hcmNoKToKKy0gICAgICAgIGlmIG5vdCBNT09OU0hJTkVfQVZBSUxBQkxFOgorLSAgICAgICAg ICAgIExPR19NU0cuZXJyb3IoIm1vb25zaGluZV92b2ljZSBub3QgYXZhaWxhYmxlIikKKysgICAg ICAgIHRyeToKKysgICAgICAgICAgICBmcm9tIG1vb25zaGluZV92b2ljZSBpbXBvcnQgTW9kZWxB cmNoLCBUcmFuc2NyaWJlcgorKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorKyAgICAg ICAgICAgIExPR19NU0cuZXJyb3IoIm1vb25zaGluZV92b2ljZSBub3QgYXZhaWxhYmxlICglcyku ICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnN0YWxsIHdpdGg6IHBpcCBpbnN0YWxs IG1vb25zaGluZS12b2ljZSIsIGUpCisgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisrCisgICAg ICAgICB0cnk6CistICAgICAgICAgICAgYXJjaCA9IG1vZGVsX2FyY2ggaWYgbW9kZWxfYXJjaCBp cyBub3QgTm9uZSBlbHNlIE1vZGVsQXJjaC5CQVNFCisrICAgICAgICAgICAgYXJjaCA9IChNb2Rl bEFyY2gobW9kZWxfYXJjaCkgaWYgbW9kZWxfYXJjaCBpcyBub3QgTm9uZSBlbHNlIE1vZGVsQXJj aC5CQVNFKQorICAgICAgICAgICAgIExPR19NU0cuaW5mbygiTG9hZGluZyBNb29uc2hpbmUgbW9k ZWw6ICVzIChhcmNoPSVzKSIsIG1vZGVsX3BhdGgsIGFyY2gpCisgICAgICAgICAgICAgdHJhbnNj cmliZXIgPSBUcmFuc2NyaWJlcihtb2RlbF9wYXRoPW1vZGVsX3BhdGgsIG1vZGVsX2FyY2g9YXJj aCkKKy0gICAgICAgICAgICBsaXN0ZW5lciA9IF9MaW5lTGlzdGVuZXIoc2VsZikKKysgICAgICAg ICAgICBsaXN0ZW5lciA9IF9saW5lX2xpc3RlbmVyX2NsYXNzKCkoc2VsZikKKyAgICAgICAgICAg ICB0cmFuc2NyaWJlci5hZGRfbGlzdGVuZXIobGlzdGVuZXIpCisgICAgICAgICAgICAgd2l0aCBz ZWxmLl90eF9sb2NrOgorICAgICAgICAgICAgICAgICBzZWxmLl90ZWFyZG93bl90cmFuc2NyaWJl cigpCitkaWZmIC11ck4gSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC5vcmlnL2VuZ2luZS9zdHRt b29uc2hpbmVtb2RlbG1hbmFnZXJzLnB5IElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAvZW5naW5l L3N0dG1vb25zaGluZW1vZGVsbWFuYWdlcnMucHkKKy0tLSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEu MC4wLm9yaWcvZW5naW5lL3N0dG1vb25zaGluZW1vZGVsbWFuYWdlcnMucHkJMjAyNi0wNy0xNCAw MzowMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrKyBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2Vu Z2luZS9zdHRtb29uc2hpbmVtb2RlbG1hbmFnZXJzLnB5CTIwMjYtMDgtMDcgMDE6NDY6NTUuMDg2 NjQ4OTUyICswNTMwCitAQCAtMSw1ICsxLDkgQEAKKyBpbXBvcnQgb3MKKytpbXBvcnQgc3lzCisr aW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKKyBpbXBvcnQgbG9nZ2luZworK2ltcG9ydCBpbXBv cnRsaWIKKytpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyBpbXBvcnQgdGhyZWFkaW5nCisgCisgZnJv bSBwYXRobGliIGltcG9ydCBQYXRoCitAQCAtOSwyMyArMTMsMTQgQEAKKyAKKyBMT0dfTVNHID0g bG9nZ2luZy5nZXRMb2dnZXIoKQorIAorLQorLXRyeToKKy0gICAgZnJvbSBtb29uc2hpbmVfdm9p Y2UgaW1wb3J0IE1vZGVsQXJjaAorLSAgICBmcm9tIG1vb25zaGluZV92b2ljZS5kb3dubG9hZCBp bXBvcnQgKAorLSAgICAgICAgTU9ERUxfSU5GTywKKy0gICAgICAgIGZpbmRfbW9kZWxfaW5mbywK Ky0gICAgICAgIGdldF9jb21wb25lbnRzX2Zvcl9tb2RlbF9pbmZvLAorLSAgICAgICAgZ2V0X21v ZGVsX2Zvcl9sYW5ndWFnZSwKKy0gICAgKQorLSAgICBmcm9tIG1vb25zaGluZV92b2ljZS5kb3du bG9hZF9maWxlIGltcG9ydCBnZXRfY2FjaGVfZGlyCistICAgIE1PT05TSElORV9BVkFJTEFCTEUg PSBUcnVlCistZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorLSAgICBMT0dfTVNHLndhcm5pbmcoIm1v b25zaGluZV92b2ljZSBtb2RlbCBjYXRhbG9nIHVuYXZhaWxhYmxlICglcykuICIKKy0gICAgICAg ICAgICAgICAgICAgICJJbnN0YWxsL3VwZ3JhZGUgd2l0aDogcGlwIGluc3RhbGwgLVUgbW9vbnNo aW5lLXZvaWNlIiwgZSkKKy0gICAgTU9PTlNISU5FX0FWQUlMQUJMRSA9IEZhbHNlCistICAgIE1P REVMX0lORk8gPSB7fQorLSAgICBNb2RlbEFyY2ggPSBOb25lCisrX0FSQ0hfTkFNRVMgPSB7Cisr ICAgIDA6ICJ0aW55IiwKKysgICAgMTogImJhc2UiLAorKyAgICAyOiAidGlueS1zdHJlYW1pbmci LAorKyAgICAzOiAiYmFzZS1zdHJlYW1pbmciLAorKyAgICA0OiAic21hbGwtc3RyZWFtaW5nIiwK KysgICAgNTogIm1lZGl1bS1zdHJlYW1pbmciLAorK30KKyAKKyBfQVJDSF9TSVpFUyA9IHsKKyAg ICAgInRpbnkiOiAgICAgICAgICAgICAifjUwIE1CIiwKK0BAIC00NiwxNSArNDEsOSBAQAorIH0K KyAKKyBkZWYgX2FyY2hfdG9fc3RyaW5nKG1vZGVsX2FyY2gpOgorLSAgICByZXR1cm4geworLSAg ICAgICAgMDogInRpbnkiLAorLSAgICAgICAgMTogImJhc2UiLAorLSAgICAgICAgMjogInRpbnkt c3RyZWFtaW5nIiwKKy0gICAgICAgIDM6ICJiYXNlLXN0cmVhbWluZyIsCistICAgICAgICA0OiAi c21hbGwtc3RyZWFtaW5nIiwKKy0gICAgICAgIDU6ICJtZWRpdW0tc3RyZWFtaW5nIiwKKy0gICAg fS5nZXQoaW50KG1vZGVsX2FyY2gpLCAiYmFzZSIpCistCisrICAgIGlmIG1vZGVsX2FyY2ggaXMg Tm9uZToKKysgICAgICAgIHJldHVybiAiYmFzZSIKKysgICAgcmV0dXJuIF9BUkNIX05BTUVTLmdl dChpbnQobW9kZWxfYXJjaCksICJiYXNlIikKKyAKKyBjbGFzcyBTVFREb3dubG9hZFN0YXRlKGZs b2F0LCBFbnVtKToKKyAgICAgU1RPUFBFRCA9IC0xLjAKK0BAIC02NywyNiArNTYsMTE2IEBACisg ICAgICAgICByZXR1cm4gTm9uZQorICAgICByZXR1cm4gbG9jYWxlX3N0clswOjJdLmxvd2VyKCkK KyAKKy1kZWYgX2FsbF9tb2RlbF9pbmZvcygpOgorLSAgICBmb3IgbGFuZywgZW50cnkgaW4gTU9E RUxfSU5GTy5pdGVtcygpOgorLSAgICAgICAgZm9yIG1vZGVsIGluIGVudHJ5LmdldCgibW9kZWxz IiwgW10pOgorLSAgICAgICAgICAgIHlpZWxkIG1vZGVsWyJtb2RlbF9uYW1lIl0sIGxhbmcsIG1v ZGVsCistCistZGVmIF9leHBlY3RlZF9tb2RlbF9wYXRoKG1vZGVsX2luZm8pOgorLSAgICBjYWNo ZV9kaXIgPSBnZXRfY2FjaGVfZGlyKCkKKy0gICAgZm9sZGVyID0gbW9kZWxfaW5mb1siZG93bmxv YWRfdXJsIl0ucmVwbGFjZSgiaHR0cHM6Ly8iLCAiIikKKy0gICAgcmV0dXJuIFBhdGgoY2FjaGVf ZGlyLCBmb2xkZXIpCistCistZGVmIF9tb2RlbF9wcmVzZW50KG1vZGVsX2luZm8pOgorLSAgICBy b290ID0gX2V4cGVjdGVkX21vZGVsX3BhdGgobW9kZWxfaW5mbykKKy0gICAgaWYgbm90IHJvb3Qu aXNfZGlyKCk6CisrZGVmIG1vb25zaGluZV9pbnN0YWxsZWQoKToKKysgICAgdHJ5OgorKyAgICAg ICAgaWYgaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygibW9vbnNoaW5l X3ZvaWNlIiwgc3lzLnBhdGgpOgorKyAgICAgICAgICAgIHJldHVybiBUcnVlCisrICAgICAgICBp bXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorKyAgICAgICAgcmV0dXJuIGJvb2woaW1wb3J0 bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygibW9vbnNoaW5lX3ZvaWNlIiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3lzLnBhdGgpKQorKyAgICBleGNlcHQgKEltcG9ydEVycm9yLCBWYWx1ZUVycm9yLCBUeXBl RXJyb3IsIEF0dHJpYnV0ZUVycm9yKSBhcyBlcnJvcjoKKysgICAgICAgIExPR19NU0cuZGVidWco ImNhbm5vdCBsb29rIHVwIG1vb25zaGluZV92b2ljZSAoJXMpIiwgZXJyb3IpCisgICAgICAgICBy ZXR1cm4gRmFsc2UKKysKKytkZWYgX21vb25zaGluZV9jYWNoZV9kaXIoKToKKysgICAgI1NhbWUg ZGlyZWN0b3J5IGFzIG1vb25zaGluZV92b2ljZS5kb3dubG9hZF9maWxlLmdldF9jYWNoZV9kaXIo KSwgY29tcHV0ZWQgd2l0aG91dCBpbXBvcnRpbmcgdGhlIHBhY2thZ2UKKysgICAgb3ZlcnJpZGUg PSBvcy5lbnZpcm9uLmdldCgiTU9PTlNISU5FX1ZPSUNFX0NBQ0hFIikKKysgICAgaWYgb3ZlcnJp ZGU6CisrICAgICAgICByZXR1cm4gUGF0aChvdmVycmlkZSkKKysKKysgICAgeGRnID0gb3MuZW52 aXJvbi5nZXQoIlhER19DQUNIRV9IT01FIikKKysgICAgaWYgeGRnOgorKyAgICAgICAgcmV0dXJu IFBhdGgoeGRnKSAvICJtb29uc2hpbmVfdm9pY2UiCisrCisrICAgIHJldHVybiBQYXRoLmhvbWUo KSAvICIuY2FjaGUiIC8gIm1vb25zaGluZV92b2ljZSIKKysKKytfQ0FUQUxPRyA9IE5vbmUgICAg ICAgICAgIyB7bW9kZWxfbmFtZTogey4uLn19CisrX0NBVEFMT0dfTE9DQUxFUyA9IE5vbmUgICMg e2xhbmc6IFttb2RlbF9uYW1lLCAuLi5dfQorKworK2RlZiBfYnVpbGRfY2F0YWxvZygpOgorKyAg ICBmcm9tIG1vb25zaGluZV92b2ljZS5kb3dubG9hZCBpbXBvcnQgZmluZF9tb2RlbF9pbmZvLCBz dXBwb3J0ZWRfbGFuZ3VhZ2VzCisrCisrICAgIG1vZGVscyA9IHt9CisrICAgIGxvY2FsZXMgPSB7 fQorKworKyAgICBmb3IgbGFuZyBpbiBzdXBwb3J0ZWRfbGFuZ3VhZ2VzKCk6CisrICAgICAgICBm b3IgYXJjaF92YWx1ZSBpbiBzb3J0ZWQoX0FSQ0hfTkFNRVMpOgorKyAgICAgICAgICAgIHRyeToK KysgICAgICAgICAgICAgICAgaW5mbyA9IGZpbmRfbW9kZWxfaW5mbyhsYW5nLCBhcmNoX3ZhbHVl KQorKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisrICAgICAgICAgICAgICAgICMgVGhp cyBsYW5ndWFnZSBzaW1wbHkgaGFzIG5vIG1vZGVsIGZvciB0aGF0IGFyY2hpdGVjdHVyZS4KKysg ICAgICAgICAgICAgICAgY29udGludWUKKysKKysgICAgICAgICAgICBhcmNoX25hbWUgPSBfQVJD SF9OQU1FU1thcmNoX3ZhbHVlXQorKyAgICAgICAgICAgIG5hbWUgPSAiJXMtJXMiICUgKGFyY2hf bmFtZSwgbGFuZykKKysgICAgICAgICAgICBtb2RlbHNbbmFtZV0gPSB7CisrICAgICAgICAgICAg ICAgICJuYW1lIjogbmFtZSwKKysgICAgICAgICAgICAgICAgImxhbmciOiBsYW5nLAorKyAgICAg ICAgICAgICAgICAiYXJjaCI6IGFyY2hfdmFsdWUsCisrICAgICAgICAgICAgICAgICJhcmNoX25h bWUiOiBhcmNoX25hbWUsCisrICAgICAgICAgICAgICAgICJkb3dubG9hZF91cmwiOiBpbmZvLmdl dCgiZG93bmxvYWRfdXJsIiwgIiIpLAorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBsb2Nh bGVzLnNldGRlZmF1bHQobGFuZywgW10pLmFwcGVuZChuYW1lKQorKworKyAgICByZXR1cm4gbW9k ZWxzLCBsb2NhbGVzCisrCisrZGVmIF9jYXRhbG9nKCk6CisrICAgIGdsb2JhbCBfQ0FUQUxPRywg X0NBVEFMT0dfTE9DQUxFUworKworKyAgICBpZiBub3QgbW9vbnNoaW5lX2luc3RhbGxlZCgpOgor KyAgICAgICAgX0NBVEFMT0cgPSBOb25lCisrICAgICAgICBfQ0FUQUxPR19MT0NBTEVTID0gTm9u ZQorKyAgICAgICAgcmV0dXJuIHt9LCB7fQorKworKyAgICBpZiBfQ0FUQUxPRyBpcyBub3QgTm9u ZToKKysgICAgICAgIHJldHVybiBfQ0FUQUxPRywgX0NBVEFMT0dfTE9DQUxFUworKworKyAgICB0 cnk6CisrICAgICAgICBtb2RlbHMsIGxvY2FsZXMgPSBfYnVpbGRfY2F0YWxvZygpCisrICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6CisrICAgICAgICBMT0dfTVNHLndhcm5pbmcoIm1vb25z aGluZV92b2ljZSBtb2RlbCBjYXRhbG9nIHVuYXZhaWxhYmxlICglcykuICIKKysgICAgICAgICAg ICAgICAgICAgICAgICAiSW5zdGFsbC91cGdyYWRlIHdpdGg6IHBpcCBpbnN0YWxsIC1VIG1vb25z aGluZS12b2ljZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpCisrICAgICAgICBy ZXR1cm4ge30sIHt9CisrCisrICAgIGlmIG5vdCBtb2RlbHM6CisrICAgICAgICBMT0dfTVNHLndh cm5pbmcoIm1vb25zaGluZV92b2ljZSByZXR1cm5lZCBhbiBlbXB0eSBtb2RlbCBjYXRhbG9nIikK KysgICAgICAgIHJldHVybiB7fSwge30KKysKKysgICAgX0NBVEFMT0cgPSBtb2RlbHMKKysgICAg X0NBVEFMT0dfTE9DQUxFUyA9IGxvY2FsZXMKKysgICAgTE9HX01TRy5kZWJ1ZygibW9vbnNoaW5l IGNhdGFsb2cgYnVpbHQgKCVkIG1vZGVscywgJWQgbGFuZ3VhZ2VzKSIsCisrICAgICAgICAgICAg ICAgICAgbGVuKG1vZGVscyksIGxlbihsb2NhbGVzKSkKKysgICAgcmV0dXJuIF9DQVRBTE9HLCBf Q0FUQUxPR19MT0NBTEVTCisrCisrZGVmIF9tb2RlbF9yb290KGVudHJ5KToKKysgICAgdXJsID0g ZW50cnkuZ2V0KCJkb3dubG9hZF91cmwiKSBvciAiIgorKyAgICBpZiBub3QgdXJsOgorKyAgICAg ICAgcmV0dXJuIE5vbmUKKysgICAgcmV0dXJuIFBhdGgoX21vb25zaGluZV9jYWNoZV9kaXIoKSwg dXJsLnJlcGxhY2UoImh0dHBzOi8vIiwgIiIpKQorKworK2RlZiBfbW9kZWxfcHJlc2VudChlbnRy eSk6CisrICAgIHJvb3QgPSBfbW9kZWxfcm9vdChlbnRyeSkKKysgICAgaWYgcm9vdCBpcyBOb25l IG9yIG5vdCByb290LmlzX2RpcigpOgorKyAgICAgICAgcmV0dXJuIEZhbHNlCisrCisrICAgIGNv bXBvbmVudHMgPSBOb25lCisgICAgIHRyeToKKy0gICAgICAgIGNvbXBvbmVudHMgPSBnZXRfY29t cG9uZW50c19mb3JfbW9kZWxfaW5mbyhtb2RlbF9pbmZvKQorLSAgICBleGNlcHQgRXhjZXB0aW9u OgorLSAgICAgICAgY29tcG9uZW50cyA9IFsidG9rZW5pemVyLmJpbiJdCistICAgIHJldHVybiBh bGwoKHJvb3QgLyBjb21wb25lbnQpLmlzX2ZpbGUoKSBmb3IgY29tcG9uZW50IGluIGNvbXBvbmVu dHMpCisrICAgICAgICBmcm9tIG1vb25zaGluZV92b2ljZS5kb3dubG9hZCBpbXBvcnQgKGZpbmRf bW9kZWxfaW5mbywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2V0X2NvbXBvbmVudHNfZm9yX21vZGVsX2luZm8pCisrICAgICAgICBjb21wb25lbnRzID0g Z2V0X2NvbXBvbmVudHNfZm9yX21vZGVsX2luZm8oCisrICAgICAgICAgICAgZmluZF9tb2RlbF9p bmZvKGVudHJ5WyJsYW5nIl0sIGVudHJ5WyJhcmNoIl0pKQorKyAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGVycm9yOgorKyAgICAgICAgTE9HX01TRy5kZWJ1ZygiY2Fubm90IGxpc3QgY29tcG9uZW50 cyBvZiAlcyAoJXMpIiwKKysgICAgICAgICAgICAgICAgICAgICAgZW50cnlbIm5hbWUiXSwgZXJy b3IpCisgCisrICAgIGlmIGNvbXBvbmVudHM6CisrICAgICAgICByZXR1cm4gYWxsKChyb290IC8g Y29tcG9uZW50KS5pc19maWxlKCkgZm9yIGNvbXBvbmVudCBpbiBjb21wb25lbnRzKQorKworKyAg ICB0cnk6CisrICAgICAgICByZXR1cm4gYW55KHJvb3QuaXRlcmRpcigpKQorKyAgICBleGNlcHQg T1NFcnJvcjoKKysgICAgICAgIHJldHVybiBGYWxzZQorIAorIGNsYXNzIFNUVE1vb25zaGluZU1v ZGVsRGVzY3JpcHRpb24oR09iamVjdC5PYmplY3QpOgorICAgICBfX2d0eXBlX25hbWVfXyA9ICJT VFRNb29uc2hpbmVNb2RlbERlc2NyaXB0aW9uIgorQEAgLTEwNiwyMSArMTg1LDMyIEBACisgICAg ICAgICBzZWxmLnF1YWxpdHkgPSBpbml0X21vZGVsLnF1YWxpdHkgaWYgaW5pdF9tb2RlbCBpcyBu b3QgTm9uZSBlbHNlICIiCisgCisgICAgICAgICBzZWxmLl9vcGVyYXRpb24gPSBOb25lCisrICAg ICAgICBzZWxmLl9kb3dubG9hZGVkX3BhdGggPSBOb25lCisgICAgICAgICBzZWxmLmRvd25sb2Fk X3Byb2dyZXNzID0gU1RURG93bmxvYWRTdGF0ZS5TVE9QUEVECisgCisgICAgIGRlZiBfZG93bmxv YWRfZmluaXNoZWQoc2VsZik6CisgICAgICAgICBzZWxmLl9vcGVyYXRpb24gPSBOb25lCisgICAg ICAgICBzZWxmLmRvd25sb2FkX3Byb2dyZXNzID0gU1RURG93bmxvYWRTdGF0ZS5TVE9QUEVECist ICAgICAgICBpbmZvID0gZmluZF9tb2RlbF9pbmZvKHNlbGYubGFuZywgc2VsZi5hcmNoKQorLSAg ICAgICAgaWYgX21vZGVsX3ByZXNlbnQoaW5mbyk6CistICAgICAgICAgICAgcGF0aCA9IHN0cihf ZXhwZWN0ZWRfbW9kZWxfcGF0aChpbmZvKSkKKysKKysgICAgICAgIHBhdGggPSBzZWxmLl9kb3du bG9hZGVkX3BhdGgKKysgICAgICAgIHNlbGYuX2Rvd25sb2FkZWRfcGF0aCA9IE5vbmUKKysKKysg ICAgICAgIGlmIHBhdGggaXMgTm9uZToKKysgICAgICAgICAgICBlbnRyeSA9IF9jYXRhbG9nKClb MF0uZ2V0KHNlbGYubmFtZSkKKysgICAgICAgICAgICBpZiBlbnRyeSBpcyBub3QgTm9uZSBhbmQg X21vZGVsX3ByZXNlbnQoZW50cnkpOgorKyAgICAgICAgICAgICAgICBwYXRoID0gc3RyKF9tb2Rl bF9yb290KGVudHJ5KSkKKysKKysgICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CisgICAgICAg ICAgICAgc2VsZi5wYXRocyA9IFtwYXRoXQorLSAgICAgICAgICAgIHN0dF9tb29uc2hpbmVfbG9j YWxfbW9kZWxfbWFuYWdlcigpLl9ub3RpZnlfYWRkZWQoc2VsZi5uYW1lLCBwYXRoLCBzZWxmLmxh bmcpCisrICAgICAgICAgICAgc3R0X21vb25zaGluZV9sb2NhbF9tb2RlbF9tYW5hZ2VyKCkuX25v dGlmeV9hZGRlZCgKKysgICAgICAgICAgICAgICAgc2VsZi5uYW1lLCBwYXRoLCBzZWxmLmxhbmcp CisgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKyAgICAgZGVmIF9kb3dubG9hZF90aHJlYWQoc2Vs ZiwgY2FuY2VsbGVkKToKKyAgICAgICAgIHRyeToKKy0gICAgICAgICAgICBnZXRfbW9kZWxfZm9y X2xhbmd1YWdlKHNlbGYubGFuZywgc2VsZi5hcmNoKQorKyAgICAgICAgICAgIGZyb20gbW9vbnNo aW5lX3ZvaWNlIGltcG9ydCBnZXRfbW9kZWxfZm9yX2xhbmd1YWdlCisrICAgICAgICAgICAgcGF0 aCwgX2FyY2ggPSBnZXRfbW9kZWxfZm9yX2xhbmd1YWdlKHNlbGYubGFuZywgc2VsZi5hcmNoKQor KyAgICAgICAgICAgIHNlbGYuX2Rvd25sb2FkZWRfcGF0aCA9IHN0cihwYXRoKQorICAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgIExPR19NU0cuZXJyb3IoIk1vb25z aGluZSBkb3dubG9hZCBmYWlsZWQgKCVzKTogJXMiLCBzZWxmLm5hbWUsIGUpCisgICAgICAgICBp ZiBub3QgY2FuY2VsbGVkLmlzX3NldCgpOgorQEAgLTEzMSw3ICsyMjEsNyBAQAorICAgICBkZWYg c3RhcnRfZG93bmxvYWRpbmcoc2VsZik6CisgICAgICAgICBpZiBzZWxmLl9vcGVyYXRpb24gaXMg bm90IE5vbmU6CisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBpZiBub3QgTU9PTlNISU5F X0FWQUlMQUJMRToKKysgICAgICAgIGlmIG5vdCBtb29uc2hpbmVfaW5zdGFsbGVkKCk6CisgICAg ICAgICAgICAgTE9HX01TRy5lcnJvcigiY2Fubm90IGRvd25sb2FkLCBtb29uc2hpbmVfdm9pY2Ug bm90IGluc3RhbGxlZCIpCisgICAgICAgICAgICAgcmV0dXJuCisgCitAQCAtMTg2LDE2ICsyNzYs MTggQEAKKyAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorICAgICAgICAgc2VsZi5fcHJlc2Vu dCA9IHt9CisgICAgICAgICBzZWxmLl9jdXN0b21fcGF0aHMgPSB7fQorLSAgICAgICAgc2VsZi5f c2Nhbl9wcmVzZW50X21vZGVscygpCisrICAgICAgICBzZWxmLl9zY2FubmVkX21vZGVscyA9IDAK KyAKKyAgICAgZGVmIF9zY2FuX3ByZXNlbnRfbW9kZWxzKHNlbGYpOgorLSAgICAgICAgaWYgbm90 IE1PT05TSElORV9BVkFJTEFCTEU6CisrICAgICAgICBjYXRhbG9nLCBfbG9jYWxlcyA9IF9jYXRh bG9nKCkKKysgICAgICAgIGlmIG5vdCBjYXRhbG9nIG9yIHNlbGYuX3NjYW5uZWRfbW9kZWxzID09 IGxlbihjYXRhbG9nKToKKyAgICAgICAgICAgICByZXR1cm4KKy0gICAgICAgIGZvciBtb2RlbF9u YW1lLCBsYW5nLCBpbmZvIGluIF9hbGxfbW9kZWxfaW5mb3MoKToKKy0gICAgICAgICAgICBpbmZv ID0gZGljdChpbmZvLCBsYW5ndWFnZT1sYW5nKQorLSAgICAgICAgICAgIGlmIF9tb2RlbF9wcmVz ZW50KGluZm8pOgorLSAgICAgICAgICAgICAgICBzZWxmLl9wcmVzZW50W21vZGVsX25hbWVdID0g c3RyKF9leHBlY3RlZF9tb2RlbF9wYXRoKGluZm8pKQorLSAgICAgICAgICAgICAgICBMT0dfTVNH LmRlYnVnKCJtb29uc2hpbmUgbW9kZWwgcHJlc2VudCBvbiBkaXNrICglcykiLCBtb2RlbF9uYW1l KQorKworKyAgICAgICAgc2VsZi5fc2Nhbm5lZF9tb2RlbHMgPSBsZW4oY2F0YWxvZykKKysgICAg ICAgIGZvciBuYW1lLCBlbnRyeSBpbiBjYXRhbG9nLml0ZW1zKCk6CisrICAgICAgICAgICAgaWYg X21vZGVsX3ByZXNlbnQoZW50cnkpOgorKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVzZW50W25h bWVdID0gc3RyKF9tb2RlbF9yb290KGVudHJ5KSkKKysgICAgICAgICAgICAgICAgTE9HX01TRy5k ZWJ1ZygibW9vbnNoaW5lIG1vZGVsIHByZXNlbnQgb24gZGlzayAoJXMpIiwgbmFtZSkKKyAKKyAg ICAgZGVmIF9ub3RpZnlfYWRkZWQoc2VsZiwgbW9kZWxfbmFtZSwgcGF0aCwgbGFuZz1Ob25lKToK KyAgICAgICAgIHNlbGYuX3ByZXNlbnRbbW9kZWxfbmFtZV0gPSBwYXRoCitAQCAtMjA2LDQ0ICsy OTgsMzggQEAKKyAgICAgICAgIHNlbGYuZW1pdCgicmVtb3ZlZCIsIG1vZGVsX25hbWUsIHBhdGgp CisgCisgICAgIGRlZiBwYXRoX2F2YWlsYWJsZShzZWxmLCBtb2RlbF9wYXRoKToKKy0gICAgICAg IHJldHVybiBtb2RlbF9wYXRoIGluIHNlbGYuX3ByZXNlbnQudmFsdWVzKCkgb3IgbW9kZWxfcGF0 aCBpbiBzZWxmLl9jdXN0b21fcGF0aHMKKysgICAgICAgIHNlbGYuX3NjYW5fcHJlc2VudF9tb2Rl bHMoKQorKyAgICAgICAgcmV0dXJuIChtb2RlbF9wYXRoIGluIHNlbGYuX3ByZXNlbnQudmFsdWVz KCkKKysgICAgICAgICAgICAgICAgb3IgbW9kZWxfcGF0aCBpbiBzZWxmLl9jdXN0b21fcGF0aHMp CisgCisgICAgIGRlZiBnZXRfYmVzdF9wYXRoX2Zvcl9tb2RlbChzZWxmLCBtb2RlbF9uYW1lKToK KyAgICAgICAgIGlmIG1vZGVsX25hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICByZXR1cm4gTm9u ZQorKyAgICAgICAgc2VsZi5fc2Nhbl9wcmVzZW50X21vZGVscygpCisgICAgICAgICByZXR1cm4g c2VsZi5fcHJlc2VudC5nZXQobW9kZWxfbmFtZSwgTm9uZSkKKyAKKyAgICAgZGVmIGdldF9hcmNo X2Zvcl9tb2RlbChzZWxmLCBtb2RlbF9uYW1lKToKKy0gICAgICAgIGlmIG5vdCBNT09OU0hJTkVf QVZBSUxBQkxFOgorLSAgICAgICAgICAgIHJldHVybiBOb25lCistICAgICAgICBmb3IgbmFtZSwg bGFuZywgaW5mbyBpbiBfYWxsX21vZGVsX2luZm9zKCk6CistICAgICAgICAgICAgaWYgbmFtZSA9 PSBtb2RlbF9uYW1lOgorLSAgICAgICAgICAgICAgICByZXR1cm4gaW5mb1sibW9kZWxfYXJjaCJd CistICAgICAgICByZXR1cm4gTm9uZQorKyAgICAgICAgZW50cnkgPSBfY2F0YWxvZygpWzBdLmdl dChtb2RlbF9uYW1lKQorKyAgICAgICAgcmV0dXJuIGVudHJ5WyJhcmNoIl0gaWYgZW50cnkgaXMg bm90IE5vbmUgZWxzZSBOb25lCisgCisgICAgIGRlZiBnZXRfbGFuZ19mb3JfbW9kZWwoc2VsZiwg bW9kZWxfbmFtZSk6CistICAgICAgICBpZiBub3QgTU9PTlNISU5FX0FWQUlMQUJMRToKKy0gICAg ICAgICAgICByZXR1cm4gTm9uZQorLSAgICAgICAgZm9yIG5hbWUsIGxhbmcsIGluZm8gaW4gX2Fs bF9tb2RlbF9pbmZvcygpOgorLSAgICAgICAgICAgIGlmIG5hbWUgPT0gbW9kZWxfbmFtZToKKy0g ICAgICAgICAgICAgICAgcmV0dXJuIGxhbmcKKy0gICAgICAgIHJldHVybiBOb25lCisrICAgICAg ICBlbnRyeSA9IF9jYXRhbG9nKClbMF0uZ2V0KG1vZGVsX25hbWUpCisrICAgICAgICByZXR1cm4g ZW50cnlbImxhbmciXSBpZiBlbnRyeSBpcyBub3QgTm9uZSBlbHNlIE5vbmUKKyAKKyAgICAgQHN0 YXRpY21ldGhvZAorICAgICBkZWYgX2luZmVyX2FyY2hfZm9yX2ZvbGRlcihtb2RlbF9wYXRoKToK KyAgICAgICAgIHJvb3QgPSBQYXRoKG1vZGVsX3BhdGgpCisrICAgICAgICBuYW1lID0gcm9vdC5u YW1lLmxvd2VyKCkKKysKKyAgICAgICAgIGlmIChyb290IC8gInN0cmVhbWluZ19jb25maWcuanNv biIpLmlzX2ZpbGUoKToKKy0gICAgICAgICAgICBuYW1lID0gcm9vdC5uYW1lLmxvd2VyKCkKKy0g ICAgICAgICAgICBmb3IgdG9rZW4sIGFyY2ggaW4gKCgibWVkaXVtIiwgTW9kZWxBcmNoLk1FRElV TV9TVFJFQU1JTkcpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJzbWFsbCIs IE1vZGVsQXJjaC5TTUFMTF9TVFJFQU1JTkcpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCJiYXNlIiwgTW9kZWxBcmNoLkJBU0VfU1RSRUFNSU5HKSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgidGlueSIsIE1vZGVsQXJjaC5USU5ZX1NUUkVBTUlORykpOgor KyAgICAgICAgICAgIGZvciB0b2tlbiwgYXJjaCBpbiAoKCJtZWRpdW0iLCA1KSwgKCJzbWFsbCIs IDQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJiYXNlIiwgMyksICgidGlu eSIsIDIpKToKKyAgICAgICAgICAgICAgICAgaWYgdG9rZW4gaW4gbmFtZToKKyAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBhcmNoCistICAgICAgICAgICAgcmV0dXJuIE1vZGVsQXJjaC5TTUFM TF9TVFJFQU1JTkcKKy0gICAgICAgIGlmICJ0aW55IiBpbiByb290Lm5hbWUubG93ZXIoKToKKy0g ICAgICAgICAgICByZXR1cm4gTW9kZWxBcmNoLlRJTlkKKy0gICAgICAgIHJldHVybiBNb2RlbEFy Y2guQkFTRQorKyAgICAgICAgICAgIHJldHVybiA0CisrICAgICAgICBpZiAidGlueSIgaW4gbmFt ZToKKysgICAgICAgICAgICByZXR1cm4gMAorKyAgICAgICAgcmV0dXJuIDEKKyAKKyAgICAgZGVm IHJlZ2lzdGVyX2N1c3RvbV9tb2RlbF9wYXRoKHNlbGYsIG1vZGVsX3BhdGgsIGxvY2FsZV9zdHIp OgorICAgICAgICAgc2VsZi5fY3VzdG9tX3BhdGhzW21vZGVsX3BhdGhdID0gbG9jYWxlX3N0cgor QEAgLTI1Miw3ICszMzgsOCBAQAorICAgICAgICAgc2VsZi5fY3VzdG9tX3BhdGhzLnBvcChtb2Rl bF9wYXRoLCBOb25lKQorIAorICAgICBkZWYgY3VzdG9tX3BhdGhfYXZhaWxhYmxlKHNlbGYsIG1v ZGVsX3BhdGgpOgorLSAgICAgICAgcmV0dXJuIFBhdGgobW9kZWxfcGF0aCkuaXNfZGlyKCkgYW5k IChQYXRoKG1vZGVsX3BhdGgpIC8gInRva2VuaXplci5iaW4iKS5pc19maWxlKCkKKysgICAgICAg IHJvb3QgPSBQYXRoKG1vZGVsX3BhdGgpCisrICAgICAgICByZXR1cm4gcm9vdC5pc19kaXIoKSBh bmQgKHJvb3QgLyAidG9rZW5pemVyLmJpbiIpLmlzX2ZpbGUoKQorIAorIAorIF9HTE9CQUxfTE9D QUxfTUFOQUdFUiA9IE5vbmUKK0BAIC0yNzYsMzUgKzM2Myw0MyBAQAorICAgICAgICAgc3VwZXIo KS5fX2luaXRfXygpCisgICAgICAgICBzZWxmLl9tb2RlbHMgPSB7fQorICAgICAgICAgc2VsZi5f bG9jYWxlc19kaWN0ID0ge30KKy0gICAgICAgIHNlbGYuX2J1aWxkX2NhdGFsb2coKQorIAorICAg ICAgICAgbG9jYWwgPSBzdHRfbW9vbnNoaW5lX2xvY2FsX21vZGVsX21hbmFnZXIoKQorICAgICAg ICAgbG9jYWwuY29ubmVjdCgiYWRkZWQiLCBzZWxmLl9tb2RlbF9wYXRoX2FkZGVkX2NiKQorICAg ICAgICAgbG9jYWwuY29ubmVjdCgicmVtb3ZlZCIsIHNlbGYuX21vZGVsX3BhdGhfcmVtb3ZlZF9j YikKKyAKKy0gICAgZGVmIF9idWlsZF9jYXRhbG9nKHNlbGYpOgorLSAgICAgICAgaWYgbm90IE1P T05TSElORV9BVkFJTEFCTEU6CisrICAgIGRlZiBfZW5zdXJlX2NhdGFsb2coc2VsZik6CisrICAg ICAgICBjYXRhbG9nLCBsb2NhbGVzID0gX2NhdGFsb2coKQorKyAgICAgICAgaWYgbm90IGNhdGFs b2c6CisrICAgICAgICAgICAgc2VsZi5fbW9kZWxzID0ge30KKysgICAgICAgICAgICBzZWxmLl9s b2NhbGVzX2RpY3QgPSB7fQorKyAgICAgICAgICAgIHJldHVybgorKyAgICAgICAgaWYgbGVuKHNl bGYuX21vZGVscykgPT0gbGVuKGNhdGFsb2cpOgorICAgICAgICAgICAgIHJldHVybgorLSAgICAg ICAgZm9yIG1vZGVsX25hbWUsIGxhbmcsIGluZm8gaW4gX2FsbF9tb2RlbF9pbmZvcygpOgorLSAg ICAgICAgICAgIGFyY2ggPSBpbmZvWyJtb2RlbF9hcmNoIl0KKy0gICAgICAgICAgICBhcmNoX3N0 ciA9IF9hcmNoX3RvX3N0cmluZyhhcmNoKQorKworKyAgICAgICAgbG9jYWwgPSBzdHRfbW9vbnNo aW5lX2xvY2FsX21vZGVsX21hbmFnZXIoKQorKyAgICAgICAgc2VsZi5fbW9kZWxzID0ge30KKysg ICAgICAgIHNlbGYuX2xvY2FsZXNfZGljdCA9IHt9CisrCisrICAgICAgICBmb3IgbmFtZSwgZW50 cnkgaW4gY2F0YWxvZy5pdGVtcygpOgorKyAgICAgICAgICAgIGFyY2hfbmFtZSA9IGVudHJ5WyJh cmNoX25hbWUiXQorIAorICAgICAgICAgICAgIGRlc2MgPSBTVFRNb29uc2hpbmVNb2RlbERlc2Ny aXB0aW9uKCkKKy0gICAgICAgICAgICBkZXNjLm5hbWUgPSBtb2RlbF9uYW1lCistICAgICAgICAg ICAgZGVzYy5sYW5nID0gbGFuZworLSAgICAgICAgICAgIGRlc2MubG9jYWxlID0gbGFuZworLSAg ICAgICAgICAgIGRlc2MuYXJjaCA9IGFyY2gKKy0gICAgICAgICAgICBkZXNjLnR5cGUgPSBhcmNo X3N0cgorLSAgICAgICAgICAgIGRlc2MudXJsID0gaW5mb1siZG93bmxvYWRfdXJsIl0KKy0gICAg ICAgICAgICBkZXNjLnNpemUgPSBfQVJDSF9TSVpFUy5nZXQoYXJjaF9zdHIsICIiKQorLSAgICAg ICAgICAgIGRlc2MucXVhbGl0eSA9IF9BUkNIX1FVQUxJVFkuZ2V0KGFyY2hfc3RyLCAiIikKKysg ICAgICAgICAgICBkZXNjLm5hbWUgPSBuYW1lCisrICAgICAgICAgICAgZGVzYy5sYW5nID0gZW50 cnlbImxhbmciXQorKyAgICAgICAgICAgIGRlc2MubG9jYWxlID0gZW50cnlbImxhbmciXQorKyAg ICAgICAgICAgIGRlc2MuYXJjaCA9IGVudHJ5WyJhcmNoIl0KKysgICAgICAgICAgICBkZXNjLnR5 cGUgPSBhcmNoX25hbWUKKysgICAgICAgICAgICBkZXNjLnVybCA9IGVudHJ5WyJkb3dubG9hZF91 cmwiXQorKyAgICAgICAgICAgIGRlc2Muc2l6ZSA9IF9BUkNIX1NJWkVTLmdldChhcmNoX25hbWUs ICIiKQorKyAgICAgICAgICAgIGRlc2MucXVhbGl0eSA9IF9BUkNIX1FVQUxJVFkuZ2V0KGFyY2hf bmFtZSwgIiIpCisgCistICAgICAgICAgICAgcGF0aCA9IHN0dF9tb29uc2hpbmVfbG9jYWxfbW9k ZWxfbWFuYWdlcigpLmdldF9iZXN0X3BhdGhfZm9yX21vZGVsKG1vZGVsX25hbWUpCisrICAgICAg ICAgICAgcGF0aCA9IGxvY2FsLmdldF9iZXN0X3BhdGhfZm9yX21vZGVsKG5hbWUpCisgICAgICAg ICAgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgZGVzYy5wYXRocyA9 IFtwYXRoXQorIAorLSAgICAgICAgICAgIHNlbGYuX21vZGVsc1ttb2RlbF9uYW1lXSA9IGRlc2MK Ky0gICAgICAgICAgICBzZWxmLl9sb2NhbGVzX2RpY3Quc2V0ZGVmYXVsdChsYW5nLCBbXSkuYXBw ZW5kKGRlc2MpCisrICAgICAgICAgICAgc2VsZi5fbW9kZWxzW25hbWVdID0gZGVzYworKyAgICAg ICAgICAgIHNlbGYuX2xvY2FsZXNfZGljdC5zZXRkZWZhdWx0KGVudHJ5WyJsYW5nIl0sIFtdKS5h cHBlbmQoZGVzYykKKyAKKyAgICAgZGVmIF9tb2RlbF9wYXRoX2FkZGVkX2NiKHNlbGYsIG1hbmFn ZXIsIG1vZGVsX25hbWUsIG1vZGVsX3BhdGgpOgorICAgICAgICAgZGVzYyA9IHNlbGYuX21vZGVs cy5nZXQobW9kZWxfbmFtZSwgTm9uZSkKK0BAIC0zMjIsMTUgKzQxNywxNiBAQAorICAgICAgICAg c2VsZi5lbWl0KCJjaGFuZ2VkIiwgZGVzYykKKyAKKyAgICAgZGVmIGdldF9tb2RlbF9kZXNjcmlw dGlvbihzZWxmLCBtb2RlbF9uYW1lKToKKysgICAgICAgIHNlbGYuX2Vuc3VyZV9jYXRhbG9nKCkK KyAgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbHMuZ2V0KG1vZGVsX25hbWUsIE5vbmUpCisgCisg ICAgIGRlZiBnZXRfbW9kZWxzX2Zvcl9sb2NhbGUoc2VsZiwgbG9jYWxlX3N0cik6CisrICAgICAg ICBzZWxmLl9lbnN1cmVfY2F0YWxvZygpCisgICAgICAgICBsYW5nID0gX2xhbmdfb2ZfbG9jYWxl KGxvY2FsZV9zdHIpCisgICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9sb2NhbGVzX2RpY3QuZ2V0 KGxhbmcsIFtdKSkKKyAKKyAgICAgZGVmIHN1cHBvcnRlZF9sb2NhbGVzKHNlbGYpOgorLSAgICAg ICAgaWYgbm90IE1PT05TSElORV9BVkFJTEFCTEU6CistICAgICAgICAgICAgcmV0dXJuIFtdCisr ICAgICAgICBzZWxmLl9lbnN1cmVfY2F0YWxvZygpCisgICAgICAgICByZXR1cm4gbGlzdChzZWxm Ll9sb2NhbGVzX2RpY3Qua2V5cygpKQorIAorIF9HTE9CQUxfT05MSU5FX01BTkFHRVIgPSBOb25l CitkaWZmIC11ck4gSUJ1cy1TcGVlY2gtVG8tVGV4dC0xLjAuMC5vcmlnL2VuZ2luZS9zdHRtb29u c2hpbmVtb2RlbC5weSBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2VuZ2luZS9zdHRtb29uc2hp bmVtb2RlbC5weQorLS0tIElCdXMtU3BlZWNoLVRvLVRleHQtMS4wLjAub3JpZy9lbmdpbmUvc3R0 bW9vbnNoaW5lbW9kZWwucHkJMjAyNi0wNy0xNCAwMzowMDowMC4wMDAwMDAwMDAgKzA1MzAKKysr KyBJQnVzLVNwZWVjaC1Uby1UZXh0LTEuMC4wL2VuZ2luZS9zdHRtb29uc2hpbmVtb2RlbC5weQky MDI2LTA4LTA3IDAxOjM5OjM4LjkzMjc2OTE4OCArMDUzMAorQEAgLTQsMTAgKzQsNyBAQAorIGZy b20gcGF0aGxpYiBpbXBvcnQgUGF0aAorIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR09iamVj dCwgR2lvCisgCistZnJvbSBzdHRtb29uc2hpbmVtb2RlbG1hbmFnZXJzIGltcG9ydCAoCistICAg IHN0dF9tb29uc2hpbmVfbG9jYWxfbW9kZWxfbWFuYWdlciwKKy0gICAgTU9PTlNISU5FX0FWQUlM QUJMRSwKKy0pCisrZnJvbSBzdHRtb29uc2hpbmVtb2RlbG1hbmFnZXJzIGltcG9ydCBzdHRfbW9v bnNoaW5lX2xvY2FsX21vZGVsX21hbmFnZXIKKyAKKyBMT0dfTVNHID0gbG9nZ2luZy5nZXRMb2dn ZXIoKQorIAorQEAgLTc5LDcgKzc2LDcgQEAKKyAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAg ICAgICAgICAgc2VsZi5fbW9kZWxfbmFtZSA9IE5vbmUKKyAgICAgICAgICAgICBzZWxmLl9tb2Rl bF9wYXRoID0gbW9kZWwKKy0gICAgICAgICAgICBzZWxmLl9tb2RlbF9hcmNoID0gbG9jYWwuX2lu ZmVyX2FyY2hfZm9yX2ZvbGRlcihtb2RlbCkgaWYgTU9PTlNISU5FX0FWQUlMQUJMRSBlbHNlIE5v bmUKKysgICAgICAgICAgICBzZWxmLl9tb2RlbF9hcmNoID0gbG9jYWwuX2luZmVyX2FyY2hfZm9y X2ZvbGRlcihtb2RlbCkKKyAgICAgICAgICAgICBsb2NhbC5yZWdpc3Rlcl9jdXN0b21fbW9kZWxf cGF0aChtb2RlbCwgc2VsZi5fbG9jYWxlX3N0cikKKyAgICAgICAgICAgICBzZWxmLl92YWxpZF9t b2RlbCA9IGxvY2FsLmN1c3RvbV9wYXRoX2F2YWlsYWJsZShtb2RlbCkKKyAgICAgICAgIGVsc2U6 CgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggYzFiMzE0YS4uM2Q3ZDFjZiAx MDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi1TSEE1MTIgKDAu OS4wLnRhci5neikgPSAyNGM4MGYwZjE3YjRhNjY5NzMxOTc0ZjQyZDJiNTVjY2RiZGZkOGU4MDBk ODdlYzlkZjhmZDZjOWE0ZTkyODhlNjgwZTcxNTIxZTJkMWJlYjY1ZjdiMWI0MTQ1M2E3NDI1Yjc0 NWYyNzg0YjMxMzQ3NjBkMzQwNzRhZTA3NTExNgorU0hBNTEyICgxLjAuMC50YXIuZ3opID0gN2I1 ZDZjYmVhMDZjZmNkYjAzNDIwY2Y3MTYwNzM4ZWY0MzU3MjZhZjUxOTJiM2Q0NDM1YTU4YWZlOTAy ZWRiMWI4YmJjNTBiNWIwYjU5NGZjNjQwNzQ5ZjYwNjIyYTZjZjgxZDc5YjlmZWM2YzZiMmNlYjY5 Nzc1NTFmODg0YzgK