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: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Update to 1.3.7 Date: Sun, 31 May 2026 02:04:44 GMT Message-ID: <178019308408.1.2740833072218613920.rpms-ibus-60148ca4f1ed@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 60148ca4f1ed42a54d8961960e263b9e44c36711 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiA2MDE0OGNhNGYxZWQ0MmE1NGQ4OTYxOTYwZTI2M2I5ZTQ0YzM2 NzExCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDEwLTA4LTIzVDExOjU1OjE5KzA5OjAwClN0YXRzICA6ICszMzg4Ly01NiBpbiA1IGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9pYnVzL2MvNjAx NDhjYTRmMWVkNDJhNTRkODk2MTk2MGUyNjNiOWU0NGMzNjcxMT9icmFuY2g9YXV0b3Rvb2wKCkxv ZzoKVXBkYXRlIHRvIDEuMy43CgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdu b3JlCmluZGV4IDI2ZjA2NDcuLmU3ZmNjNzQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIv LmdpdGlnbm9yZQpAQCAtMSArMSwyIEBACiBpYnVzLTEuMy42LnRhci5negorL2lidXMtMS4zLjcu dGFyLmd6CgpkaWZmIC0tZ2l0IGEvaWJ1cy01NDE0OTIteGtiLnBhdGNoIGIvaWJ1cy01NDE0OTIt eGtiLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzY2NmYzYKLS0t IC9kZXYvbnVsbAorKysgYi9pYnVzLTU0MTQ5Mi14a2IucGF0Y2gKQEAgLTAsMCArMSwzMzYwIEBA CitGcm9tIGEzODE5NDY3ZGVlYTc0YjgyYzU1YTRjZmM4Y2VjZDYyODVmNTRlMDAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+CitEYXRlOiBNb24sIDIzIEF1ZyAyMDEwIDExOjMxOjU1ICswOTAwCitTdWJqZWN0OiBbUEFU Q0hdIEFkZCBYS0IgbGF5b3V0cworCistLS0KKyBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8 ICAgIDcgKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgICA1MyArKysrCisgZGF0YS9p YnVzLnNjaGVtYXMuaW4gICAgICAgfCAgIDI0ICsrCisgaWJ1cy9NYWtlZmlsZS5hbSAgICAgICAg ICAgfCAgIDI2ICsrCisgaWJ1cy9fX2luaXRfXy5weSAgICAgICAgICAgfCAgICAyICsKKyBpYnVz L2J1cy5weSAgICAgICAgICAgICAgICB8ICAgIDMgKworIGlidXMvaW50ZXJmYWNlL2lpYnVzLnB5 ICAgIHwgICAgMyArCisgaWJ1cy94a2JsYXlvdXQucHkuaW4gICAgICAgfCAgIDg2ICsrKysrKwor IGlidXMveGtieG1sLnB5LmluICAgICAgICAgIHwgIDMzNyArKysrKysrKysrKysrKysrKysrKysK KyBzZXR1cC9tYWluLnB5ICAgICAgICAgICAgICB8ICAyMjggKysrKysrKysrKysrKystCisgc2V0 dXAvc2V0dXAudWkgICAgICAgICAgICAgfCAgMzAwICsrKysrKysrKysrKysrKysrKystCisgc3Jj L2lidXNmYWN0b3J5LmMgICAgICAgICAgfCAgIDE3ICstCisgc3JjL2lidXNmYWN0b3J5LmggICAg ICAgICAgfCAgICA1ICstCisgdWkvZ3RrL3BhbmVsLnB5ICAgICAgICAgICAgfCAgIDMwICsrCisg eGtiL01ha2VmaWxlLmFtICAgICAgICAgICAgfCAgMTA0ICsrKysrKysKKyB4a2IvaWJ1cy1lbmdp bmUteGtiLW1haW4uYyB8ICAzOTYgKysrKysrKysrKysrKysrKysrKysrKysrKworIHhrYi9pYnVz LWVuZ2luZS14a2ItbWFpbi5oIHwgICA0NSArKysKKyB4a2IvaWJ1cy14a2ItbWFpbi5jICAgICAg ICB8ICAgODIgKysrKysrCisgeGtiL3hrYmxheW91dC54bWwuaW4gICAgICAgfCAgIDE2ICsKKyB4 a2IveGtibGF5b3V0Y29uZmlnLnhtbC5pbiB8ICAgIDYgKworIHhrYi94a2JsaWIuYyAgICAgICAg ICAgICAgIHwgIDI1OSArKysrKysrKysrKysrKysrCisgeGtiL3hrYmxpYi5oICAgICAgICAgICAg ICAgfCAgIDM2ICsrKworIHhrYi94a2J4bWwuYyAgICAgICAgICAgICAgIHwgIDY5NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHhrYi94a2J4bWwuaCAgICAg ICAgICAgICAgIHwgIDE4OCArKysrKysrKysrKysKKyAyNCBmaWxlcyBjaGFuZ2VkLCAyOTQxIGlu c2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGlidXMveGti bGF5b3V0LnB5LmluCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGlidXMveGtieG1sLnB5LmluCisgY3Jl YXRlIG1vZGUgMTAwNjQ0IHhrYi9NYWtlZmlsZS5hbQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB4a2Iv aWJ1cy1lbmdpbmUteGtiLW1haW4uYworIGNyZWF0ZSBtb2RlIDEwMDY0NCB4a2IvaWJ1cy1lbmdp bmUteGtiLW1haW4uaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCB4a2IvaWJ1cy14a2ItbWFpbi5jCisg Y3JlYXRlIG1vZGUgMTAwNjQ0IHhrYi94a2JsYXlvdXQueG1sLmluCisgY3JlYXRlIG1vZGUgMTAw NjQ0IHhrYi94a2JsYXlvdXRjb25maWcueG1sLmluCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHhrYi94 a2JsaWIuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCB4a2IveGtibGliLmgKKyBjcmVhdGUgbW9kZSAx MDA2NDQgeGtiL3hrYnhtbC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHhrYi94a2J4bWwuaAorCitk aWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggNzg5NTk0MC4uOWY1 MzRhNCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTM5 LDYgKzM5LDEyIEBAIE1FTUNPTkZfRElSUyA9IFwKKyAJJChOVUxMKQorIGVuZGlmCisgCisraWYg RU5BQkxFX1hLQgorK1hLQl9ESVJTID0gXAorKwl4a2IgXAorKwkkKE5VTEwpCisrZW5kaWYKKysK KyBTVUJESVJTID0gXAorIAlzcmMgXAorIAlidXMgXAorQEAgLTUzLDYgKzU5LDcgQEAgU1VCRElS UyA9IFwKKyAJJChQWVRIT05fRElSUykgXAorIAkkKEdDT05GX0RJUlMpIFwKKyAJJChNRU1DT05G X0RJUlMpIFwKKysJJChYS0JfRElSUykgXAorIAkkKE5VTEwpCisgCisgQUNMT0NBTF9BTUZMQUdT ID0gLUkgbTQKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4 IDMzNDZkMGMuLjE1Nzg4YmQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZp Z3VyZS5hYworQEAgLTE2OCw2ICsxNjgsNTcgQEAgZWxzZQorICAgICBlbmFibGVfeGltPSJubyAo ZGlzYWJsZWQsIHVzZSAtLWVuYWJsZS14aW0gdG8gZW5hYmxlKSIKKyBmaQorIAorK0FDX0FSR19F TkFCTEUoeGtiLAorKyAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXhrYl0sCisrICAgICAg ICAgICAgICAgICAgIFtEbyBub3QgYnVpbGQgeGtiXSksCisrICAgIFtlbmFibGVfeGtiPSRlbmFi bGV2YWxdLAorKyAgICBbZW5hYmxlX3hrYj15ZXNdCisrKQorKworK0FNX0NPTkRJVElPTkFMKFtF TkFCTEVfWEtCXSwgW3Rlc3QgeCIkZW5hYmxlX3hrYiIgPSB4InllcyJdKQorK2lmIHRlc3QgeCIk ZW5hYmxlX3hrYiIgPSB4InllcyI7IHRoZW4KKysgICAgUEtHX0NIRUNLX01PRFVMRVMoWDExLCBb CisrICAgICAgICB4MTEKKysgICAgXSkKKysgICAgUEtHX0NIRUNLX01PRFVMRVMoWEtCLAorKyAg ICAgICAgW3hrYmZpbGVdLCwKKysgICAgICAgIFtYS0JfTElCUz0iLWx4a2JmaWxlIl0KKysgICAg KQorKyAgICBBQ19ERUZJTkUoSEFWRV9YS0IsIDEsIFtkZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB4 a2JmaWxlXSkKKytlbHNlCisrICAgIGVuYWJsZV94a2I9Im5vIChkaXNhYmxlZCwgdXNlIC0tZW5h YmxlLXhrYiB0byBlbmFibGUpIgorK2ZpCisrCisrIyBkZWZpbmUgWEtCIHJ1bGVzIGZpbGUKKytB Q19BUkdfV0lUSCh4a2ItcnVsZXMteG1sLAorKyAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXhr Yi1ydWxlcy14bWxbPSRESVIvZXZkZXYueG1sXV0sCisrICAgICAgICBbU2V0IGV2ZGV2LnhtbCBm aWxlIHBhdGggKGRlZmF1bHQ6IC91c3Ivc2hhcmUvWDExL3hrYi9ydWxlcy9ldmRldi54bWwpXSks CisrICAgIFhLQl9SVUxFU19YTUxfRklMRT0kd2l0aF94a2JfcnVsZXNfeG1sLAorKyAgICBYS0Jf UlVMRVNfWE1MX0ZJTEU9Ii91c3Ivc2hhcmUvWDExL3hrYi9ydWxlcy9ldmRldi54bWwiCisrKQor K0FDX0RFRklORV9VTlFVT1RFRChYS0JfUlVMRVNfWE1MX0ZJTEUsICIkWEtCX1JVTEVTX1hNTF9G SUxFIiwKKysgICAgW0RlZmluZSBmaWxlIHBhdGggb2YgZXZkZXYueG1sXSkKKytBQ19TVUJTVChY S0JfUlVMRVNfWE1MX0ZJTEUpCisrCisrIyBkZWZpbmUgWEtCIHByZWxvYWQgbGF5b3V0cworK0FD X0FSR19XSVRIKHhrYi1wcmVsb2FkLWxheW91dHMsCisrICAgIEFTX0hFTFBfU1RSSU5HKFstLXdp dGgteGtiLXByZWxvYWQtbGF5b3V0c1s9bGF5b3V0LC4uLl1dLAorKyAgICAgICAgW1NldCBwcmVs b2FkIHhrYiBsYXlvdXRzIChkZWZhdWx0OiB1cyxmcixkZSwuLi4pXSksCisrICAgIFhLQl9QUkVM T0FEX0xBWU9VVFM9JHdpdGhfeGtiX3ByZWxvYWRfbGF5b3V0cywKKysgICAgW1hLQl9QUkVMT0FE X0xBWU9VVFM9IiJcCisrInVzLHVzKGNociksYWQsYWwsYW0sYXIsYXosYmEsYmQsYmUsYmcsYnIs YnQsYnksIlwKKysiZGUsZGssY2EsY2gsY24sY24odGliKSxjeixlZSxlcG8sZXMsZXQsZmksZm8s ZnIsIlwKKysiZ2IsZ2UsZ2UoZHNiKSxnZShydSksZ2Uob3MpLGdoLGdoKGFrYW4pLGdoKGV3ZSks Z2goZnVsYSksZ2goZ2EpLGdoKGhhdXNhKSwiXAorKyJnbixncixodSxocixpZSxpZShDbG9HYWVs YWNoKSxpbCwiXAorKyJpbixpbihiZW4pLGluKGd1aiksaW4oZ3VydSksaW4oamhlbHVtKSxpbihr YW4pLGluKG1hbCksaW4ob3JpKSxpbih0YW0pLCJcCisrImluKHRlbCksaW4odXJkLXBob25ldGlj KSxpbihib2xuYWdyaSksaXEsaXEoa3UpLGlyLGlyKGt1KSxpcyxpdCxqcCwiXAorKyJrZyxraCxr cixreixsYSxsYXRhbSxsayxsayh0YW1fdW5pY29kZSksbHQsbHYsbWEsbWEodGlmaW5hZ2gpLG1h bCxtYW8sIlwKKysibWUsbWssbW0sbXQsbXYsbmcsbmcoaGF1c2EpLG5nLG5nKGlnYm8pLG5nKHlv cnViYSksbmwsbm8sbm8oc21pKSxucCwiXAorKyJwayxwbCxwbChjc2IpLHB0LHJvLHJzLHJ1LHJ1 KGN2KSxydShrb20pLHJ1KHNhaCkscnUodHQpLHJ1KHhhbCksIlwKKysic2Usc2ksc2ssc3ksc3ko a3UpLHRoLHRqLHRyLHVhLHV6LHZuIl0KKyspCisrQUNfU1VCU1QoWEtCX1BSRUxPQURfTEFZT1VU UykKKysKKyAjIEdPYmplY3QgaW50cm9zcGVjdGlvbgorIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9D SEVDSyhbMC42LjhdKQorIAorQEAgLTM2OCw2ICs0MTksNyBAQCBnY29uZi9NYWtlZmlsZQorIGdj b25mL2djb25mLnhtbC5pbgorIGJpbmRpbmdzL01ha2VmaWxlCisgYmluZGluZ3MvdmFsYS9NYWtl ZmlsZQorK3hrYi9NYWtlZmlsZQorIF0pCisgCisgQUNfT1VUUFVUCitAQCAtMzgyLDYgKzQzNCw3 IEBAIEJ1aWxkIG9wdGlvbnM6CisgICBCdWlsZCBndGsyIGltbW9kdWxlICAgICAgICRlbmFibGVf Z3RrMgorICAgQnVpbGQgZ3RrMyBpbW1vZHVsZSAgICAgICAkZW5hYmxlX2d0azMKKyAgIEJ1aWxk IFhJTSBhZ2VudCBzZXJ2ZXIgICAgJGVuYWJsZV94aW0KKysgIEJ1aWxkIFhLQiAgICAgICAgICAg ICAgICAgJGVuYWJsZV94a2IKKyAgIEJ1aWxkIHB5dGhvbiBtb2R1bGVzICAgICAgJGVuYWJsZV9w eXRob24KKyAgIEJ1aWxkIGdjb25mIG1vZHVsZXMgICAgICAgJGVuYWJsZV9nY29uZgorICAgQnVp bGQgbWVtY29uZiBtb2R1bGVzICAgICAkZW5hYmxlX21lbWNvbmYKK2RpZmYgLS1naXQgYS9kYXRh L2lidXMuc2NoZW1hcy5pbiBiL2RhdGEvaWJ1cy5zY2hlbWFzLmluCitpbmRleCA0Njk1ZDBiLi45 OGE3ODZlIDEwMDY0NAorLS0tIGEvZGF0YS9pYnVzLnNjaGVtYXMuaW4KKysrKyBiL2RhdGEvaWJ1 cy5zY2hlbWFzLmluCitAQCAtMTY3LDYgKzE2NywzMCBAQAorICAgICAgIDwvbG9jYWxlPgorICAg ICA8L3NjaGVtYT4KKyAgICAgPHNjaGVtYT4KKysgICAgICA8a2V5Pi9zY2hlbWFzL2Rlc2t0b3Av aWJ1cy9nZW5lcmFsL2RlZmF1bHRfc3lzdGVtX2xheW91dDwva2V5PgorKyAgICAgIDxhcHBseXRv Pi9kZXNrdG9wL2lidXMvZ2VuZXJhbC9kZWZhdWx0X3N5c3RlbV9sYXlvdXQ8L2FwcGx5dG8+Cisr ICAgICAgPG93bmVyPmlidXM8L293bmVyPgorKyAgICAgIDx0eXBlPnN0cmluZzwvdHlwZT4KKysg ICAgICA8ZGVmYXVsdD5kZWZhdWx0PC9kZWZhdWx0PgorKyAgICAgIDxnZXR0ZXh0X2RvbWFpbj5p YnVzPC9nZXR0ZXh0X2RvbWFpbj4KKysgICAgICA8bG9jYWxlIG5hbWU9IkMiPgorKyAgICAgICAg PHNob3J0PlNldCBkZWZhdWx0IGtleWJvYXJkIGxheW91dDwvc2hvcnQ+CisrICAgICAgICAgICAg PGxvbmc+T3ZlcnJpZGUgZGVmYXVsdCBzeXN0ZW0ga2V5Ym9hcmQgbGF5b3V0LiBkZWZhdWx0IGlz ICdkZWZhdWx0JzwvbG9uZz4KKysgICAgICA8L2xvY2FsZT4KKysgICAgPC9zY2hlbWE+CisrICAg IDxzY2hlbWE+CisrICAgICAgPGtleT4vc2NoZW1hcy9kZXNrdG9wL2lidXMvZ2VuZXJhbC94a2Jf bGF0aW5fbGF5b3V0czwva2V5PgorKyAgICAgIDxhcHBseXRvPi9kZXNrdG9wL2lidXMvZ2VuZXJh bC94a2JfbGF0aW5fbGF5b3V0czwvYXBwbHl0bz4KKysgICAgICA8b3duZXI+aWJ1czwvb3duZXI+ CisrICAgICAgPHR5cGU+bGlzdDwvdHlwZT4KKysgICAgICA8bGlzdF90eXBlPnN0cmluZzwvbGlz dF90eXBlPgorKyAgICAgIDxkZWZhdWx0PlthcmEsYmcsY3osZGV2LGdyLGd1cixpbixtYWwsbWtk LHJ1LHVhXTwvZGVmYXVsdD4KKysgICAgICA8bG9jYWxlIG5hbWU9IkMiPgorKyAgICAgICAgPHNo b3J0PkxhdGluIGxheW91dCB3aGljaCBoYXZlIG5vIEFTQ0lJPC9zaG9ydD4KKysJICAgIDxsb25n PnVzIGxheW91dCBpcyBhcHBlbmRlZCB0byB0aGUgbGF0aW4gbGF5b3V0cy4gdmFyaWFudCBpcyBu b3QgbmVlZGVkLjwvbG9uZz4KKysgICAgICA8L2xvY2FsZT4KKysgICAgPC9zY2hlbWE+CisrICAg IDxzY2hlbWE+CisgICAgICAgPGtleT4vc2NoZW1hcy9kZXNrdG9wL2lidXMvcGFuZWwvdXNlX2N1 c3RvbV9mb250PC9rZXk+CisgICAgICAgPGFwcGx5dG8+L2Rlc2t0b3AvaWJ1cy9wYW5lbC91c2Vf Y3VzdG9tX2ZvbnQ8L2FwcGx5dG8+CisgICAgICAgPG93bmVyPmlidXM8L293bmVyPgorZGlmZiAt LWdpdCBhL2lidXMvTWFrZWZpbGUuYW0gYi9pYnVzL01ha2VmaWxlLmFtCitpbmRleCBkMWNkNzUw Li43ODNiNGRjIDEwMDY0NAorLS0tIGEvaWJ1cy9NYWtlZmlsZS5hbQorKysrIGIvaWJ1cy9NYWtl ZmlsZS5hbQorQEAgLTU4LDEyICs1OCwzOCBAQCBub2Rpc3RfaWJ1c19QWVRIT04gPSBcCisgCisg aWJ1c2RpciA9IEBwa2dweXRob25kaXJACisgCisreGtibGF5b3V0X3B5X2luX2ZpbGVzID0gXAor Kwl4a2JsYXlvdXQucHkuaW4gXAorKwl4a2J4bWwucHkuaW4gXAorKwkkKE5VTEwpCisreGtibGF5 b3V0X3B5X0RBVEEgPSAkKHhrYmxheW91dF9weV9pbl9maWxlczoucHkuaW49LnB5KQorK3hrYmxh eW91dF9weWRpciA9IEBwa2dweXRob25kaXJACisrCisraWJ1c19QWVRIT04gKz0gJCh4a2JsYXlv dXRfcHlfREFUQSkKKysKKytpZiBFTkFCTEVfWEtCCisrWEtCX0NPTU1BTkQ9XFxcIiIkKGxpYmV4 ZWNkaXIpL2lidXMteGtiIlxcXCIKKytIQVZFX1hLQj1UcnVlCisrZWxzZQorK1hLQl9DT01NQU5E PSJOb25lIgorK0hBVkVfWEtCPUZhbHNlCisrZW5kaWYKKysKKyslLnB5IDogJS5weS5pbgorKwlA c2VkIC1lICJzfFxAWEtCX0NPTU1BTkRcQHwkKFhLQl9DT01NQU5EKXxnIiBcCisrCSAgICAgLWUg InN8XEBYS0JfUlVMRVNfWE1MX0ZJTEVcQHwkKFhLQl9SVUxFU19YTUxfRklMRSl8ZyIgXAorKwkg ICAgIC1lICJzfFxASEFWRV9YS0JcQHwkKEhBVkVfWEtCKXxnIiBcCisrCSAgICAgLWUgInN8XEBk YXRhZGlyXEB8JChkYXRhZGlyKXxnIiBcCisrCSQ8ID4gJEAKKysKKyBFWFRSQV9ESVNUID0gXAor IAlfY29uZmlnLnB5LmluIFwKKysJJCh4a2JsYXlvdXRfcHlfaW5fZmlsZXMpIFwKKyAJJChOVUxM KQorIAorIENMRUFORklMRVMgPSBcCisgCSoucHljIFwKKysJJCh4a2JsYXlvdXRfcHlfREFUQSkg XAorIAkkKE5VTEwpCisgCisgRElTVENMRUFORklMRVMgPSBcCitkaWZmIC0tZ2l0IGEvaWJ1cy9f X2luaXRfXy5weSBiL2lidXMvX19pbml0X18ucHkKK2luZGV4IDdjOGY4YmUuLjNjMjU2MDUgMTAw NjQ0CistLS0gYS9pYnVzL19faW5pdF9fLnB5CisrKysgYi9pYnVzL19faW5pdF9fLnB5CitAQCAt NDEsNCArNDEsNiBAQCBmcm9tIHRleHQgaW1wb3J0ICoKKyBmcm9tIG9ic2VydmVkcGF0aCBpbXBv cnQgKgorIGZyb20gZW5naW5lZGVzYyBpbXBvcnQgKgorIGZyb20gY29tcG9uZW50IGltcG9ydCAq CisrZnJvbSB4a2JsYXlvdXQgaW1wb3J0ICoKKytmcm9tIHhrYnhtbCBpbXBvcnQgKgorIGZyb20g X2NvbmZpZyBpbXBvcnQgKgorZGlmZiAtLWdpdCBhL2lidXMvYnVzLnB5IGIvaWJ1cy9idXMucHkK K2luZGV4IDE1YThmZDMuLjc0YjY4MjAgMTAwNjQ0CistLS0gYS9pYnVzL2J1cy5weQorKysrIGIv aWJ1cy9idXMucHkKK0BAIC0xNTQsNiArMTU0LDkgQEAgY2xhc3MgQnVzKG9iamVjdC5PYmplY3Qp OgorICAgICAgICAgICAgIGRhdGEgPSBzZXJpYWxpemFibGUuZGVzZXJpYWxpemVfb2JqZWN0KGRh dGEpCisgICAgICAgICByZXR1cm4gZGF0YQorIAorKyAgICBkZWYgZ2V0X3VzZV9zeXNfbGF5b3V0 KHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX19pYnVzLkdldFVzZVN5c0xheW91dCgpOwor KworICAgICBkZWYgaW50cm9zcGVjdF9pYnVzKHNlbGYpOgorICAgICAgICAgcmV0dXJuIHNlbGYu X19pYnVzLkludHJvc3BlY3QoKQorIAorZGlmZiAtLWdpdCBhL2lidXMvaW50ZXJmYWNlL2lpYnVz LnB5IGIvaWJ1cy9pbnRlcmZhY2UvaWlidXMucHkKK2luZGV4IGU2M2NhYTMuLjhiN2I2ZjcgMTAw NjQ0CistLS0gYS9pYnVzL2ludGVyZmFjZS9paWJ1cy5weQorKysrIGIvaWJ1cy9pbnRlcmZhY2Uv aWlidXMucHkKK0BAIC03Miw2ICs3Miw5IEBAIGNsYXNzIElJQnVzKGRidXMuc2VydmljZS5PYmpl Y3QpOgorICAgICBAbWV0aG9kKGluX3NpZ25hdHVyZT0idiIsIG91dF9zaWduYXR1cmU9InYiKQor ICAgICBkZWYgUGluZyhzZWxmLCBkYXRhLCBkYnVzY29ubik6IHBhc3MKKyAKKysgICAgQG1ldGhv ZChvdXRfc2lnbmF0dXJlPSJiIikKKysgICAgZGVmIEdldFVzZVN5c0xheW91dChzZWxmLCBkYnVz Y29ubik6IHBhc3MKKysKKyAgICAgQHNpZ25hbChzaWduYXR1cmU9IiIpCisgICAgIGRlZiBSZWdp c3RyeUNoYW5nZWQoc2VsZik6IHBhc3MKKyAKK2RpZmYgLS1naXQgYS9pYnVzL3hrYmxheW91dC5w eS5pbiBiL2lidXMveGtibGF5b3V0LnB5LmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uYjVmMWEwNgorLS0tIC9kZXYvbnVsbAorKysrIGIvaWJ1cy94a2JsYXlvdXQucHku aW4KK0BAIC0wLDAgKzEsODYgQEAKKysjIHZpbTpzZXQgZXQgc3RzPTQgc3c9NDoKKysjCisrIyBp YnVzIC0gVGhlIElucHV0IEJ1cworKyMKKysjIENvcHlyaWdodCAoYykgMjAxMCBUYWthbyBGdWpp d2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysjIENvcHlyaWdodCAoYykgMjAwNy0y MDEwIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgorKyMgQ29weXJpZ2h0IChj KSAyMDA3LTIwMTAgUmVkIEhhdCwgSW5jLgorKyMKKysjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysjIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysjIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyMg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMKKysjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KysjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl CisrIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp dGUgMzMwLAorKyMgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisrCisrX19hbGxfXyA9ICgK KysgICAgICAgICJYS0JMYXlvdXQiLAorKyAgICApCisrCisraW1wb3J0IG9zCisrCisrWEtCX0NP TU1BTkQgPSBAWEtCX0NPTU1BTkRACisrCisrY2xhc3MgWEtCTGF5b3V0KCk6CisrICAgIGRlZiBf X2luaXRfXyhzZWxmLCBjb25maWcgPSBOb25lLCBjb21tYW5kPVhLQl9DT01NQU5EKToKKysgICAg ICAgIHNlbGYuX19jb25maWcgPSBjb25maWcKKysgICAgICAgIHNlbGYuX19jb21tYW5kID0gY29t bWFuZAorKyAgICAgICAgc2VsZi5fX2RlZmF1bHRfbGF5b3V0ID0gc2VsZi5nZXRfbGF5b3V0KCkK KysgICAgICAgIHNlbGYuX194a2JfbGF0aW5fbGF5b3V0cyA9IGxpc3Qoc2VsZi5fX2NvbmZpZy5n ZXRfdmFsdWUoImdlbmVyYWwiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4a2JfbGF0aW5fbGF5b3V0cyIsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg W10pKQorKworKworKyAgICBkZWYgZ2V0X2xheW91dChzZWxmKToKKysgICAgICAgIGlmIHNlbGYu X19jb21tYW5kID09IE5vbmU6CisrICAgICAgICAgICAgcmV0dXJuIE5vbmUKKysgICAgICAgIGV4 ZWNfY29tbWFuZCA9ICIlcyAlcyIgJSAoc2VsZi5fX2NvbW1hbmQsICItLWdldCIpCisrICAgICAg ICByZXR2YWwgPSBOb25lCisrICAgICAgICBmb3IgbGluZSBpbiBvcy5wb3BlbihleGVjX2NvbW1h bmQpLnJlYWRsaW5lcygpOgorKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKysgICAg ICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoImxheW91dDogIik6CisrICAgICAgICAgICAgICAg IHJldHZhbCA9IGxpbmVbbGVuKCJsYXlvdXQ6ICIpOl0KKysgICAgICAgICAgICAgICAgYnJlYWsK KysgICAgICAgIHJldHVybiByZXR2YWwKKysKKysgICAgZGVmIHNldF9sYXlvdXQoc2VsZiwgbGF5 b3V0PSJkZWZhdWx0Iik6CisrICAgICAgICBpZiBzZWxmLl9fY29tbWFuZCA9PSBOb25lOgorKyAg ICAgICAgICAgIHJldHVybgorKyAgICAgICAgYXJncyA9IFtdCisrICAgICAgICBhcmdzLmFwcGVu ZChzZWxmLl9fY29tbWFuZCkKKysgICAgICAgIGFyZ3MuYXBwZW5kKG9zLnBhdGguYmFzZW5hbWUo c2VsZi5fX2NvbW1hbmQpKQorKyAgICAgICAgYXJncy5hcHBlbmQoIi0tc2V0IikKKysgICAgICAg IGxheW91dCA9IHN0cihsYXlvdXQpCisrICAgICAgICBpZiBsYXlvdXQgPT0gImRlZmF1bHQiOgor KyAgICAgICAgICAgIGxheW91dCA9IHNlbGYuX19kZWZhdWx0X2xheW91dAorKyAgICAgICAgbmVl ZF91c19sYXlvdXQgPSBGYWxzZQorKyAgICAgICAgZm9yIGxhdGluX2xheW91dCBpbiBzZWxmLl9f eGtiX2xhdGluX2xheW91dHM6CisrICAgICAgICAgICAgbGF0aW5fbGF5b3V0ID0gc3RyKGxhdGlu X2xheW91dCkKKysgICAgICAgICAgICBpZiBsYXlvdXQgPT0gbGF0aW5fbGF5b3V0OgorKyAgICAg ICAgICAgICAgICBuZWVkX3VzX2xheW91dCA9IFRydWUKKysgICAgICAgICAgICAgICAgYnJlYWsK KysgICAgICAgIGlmIG5lZWRfdXNfbGF5b3V0OgorKyAgICAgICAgICAgIGxheW91dCA9IGxheW91 dCArICIsdXMiCisrICAgICAgICBhcmdzLmFwcGVuZChsYXlvdXQpCisrICAgICAgICBvcy5zcGF3 bmwob3MuUF9OT1dBSVQsICphcmdzKQorKworKyAgICBkZWYgc2V0X2RlZmF1bHRfbGF5b3V0KHNl bGYsIGxheW91dD0iZGVmYXVsdCIpOgorKyAgICAgICAgaWYgc2VsZi5fX2NvbW1hbmQgPT0gTm9u ZToKKysgICAgICAgICAgICByZXR1cm4KKysgICAgICAgIGlmIGxheW91dCA9PSAnZGVmYXVsdCc6 CisrICAgICAgICAgICAgc2VsZi5fX2RlZmF1bHRfbGF5b3V0ID0gc2VsZi5nZXRfbGF5b3V0KCkK KysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgc2VsZi5fX2RlZmF1bHRfbGF5b3V0ID0gbGF5 b3V0CisrCisrICAgIGRlZiByZWxvYWRfZGVmYXVsdF9sYXlvdXQoc2VsZik6CisrICAgICAgICBp ZiBzZWxmLl9fY29tbWFuZCA9PSBOb25lOgorKyAgICAgICAgICAgIHJldHVybgorKyAgICAgICAg c2VsZi5fX2RlZmF1bHRfbGF5b3V0ID0gc2VsZi5nZXRfbGF5b3V0KCkKK2RpZmYgLS1naXQgYS9p YnVzL3hrYnhtbC5weS5pbiBiL2lidXMveGtieG1sLnB5LmluCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uNTg4MDEwNAorLS0tIC9kZXYvbnVsbAorKysrIGIvaWJ1cy94a2J4 bWwucHkuaW4KK0BAIC0wLDAgKzEsMzM3IEBACisrIyB2aW06c2V0IGV0IHN0cz00IHN3PTQ6Cisr IworKyMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKysjCisrIyBDb3B5cmlnaHQgKGMpIDIwMTAgVGFr YW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrIyBDb3B5cmlnaHQgKGMp IDIwMDctMjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKysjIENvcHly aWdodCAoYykgMjAwNy0yMDEwIFJlZCBIYXQsIEluYy4KKysjCisrIyBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrIyBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrIyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIKKysjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisrIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZQorKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UsIFN1aXRlIDMzMCwKKysjIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorKworK19fYWxs X18gPSAoCisrICAgICAgICAiWEtCQ29uZmlnUmVnaXN0cnkiLAorKyAgICAgICAgIlhLQkxheW91 dENvbmZpZyIsCisrICAgICkKKysKKytpbXBvcnQgb3MKKytpbXBvcnQgc3RyaW5nCisraW1wb3J0 IHhtbC5zYXggYXMgc2F4CisraW1wb3J0IGVuZ2luZWRlc2MKKytmcm9tIHhtbC5zYXguc2F4dXRp bHMgaW1wb3J0IFhNTEZpbHRlckJhc2UsIFhNTEdlbmVyYXRvcgorK2Zyb20geG1sLnNheC5fZXhj ZXB0aW9ucyBpbXBvcnQgU0FYUGFyc2VFeGNlcHRpb24KKytmcm9tIGNTdHJpbmdJTyBpbXBvcnQg U3RyaW5nSU8KKysKKyt0cnk6CisrICAgIGZyb20gZ2xpYiBpbXBvcnQgZ2V0X3VzZXJfY29uZmln X2RpcgorK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKysgICAgZ2V0X3VzZXJfY29uZmlnX2RpciA9IGxh bWJkYSA6IE5vbmUKKysKKytYS0JfUlVMRVNfWE1MX0ZJTEUgPSAiQFhLQl9SVUxFU19YTUxfRklM RUAiCisrCisrY2xhc3MgWEtCQ29uZmlnUmVnaXN0cnlIYW5kbGVyKFhNTEZpbHRlckJhc2UpOgor KyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyPU5vbmUsIHJvb3Q9J3Jvb3QnKToKKysgICAg ICAgIFhNTEZpbHRlckJhc2UuX19pbml0X18oc2VsZiwgcGFyc2VyKQorKyAgICAgICAgc2VsZi5f X3Jvb3QgPSByb290CisrICAgICAgICBzZWxmLl9fY3VycmVudF9ub2RlID0gcm9vdAorKyAgICAg ICAgc2VsZi5fX2xheW91dGxpc3QgPSBOb25lCisrICAgICAgICBzZWxmLl9fbGF5b3V0ID0gRmFs c2UKKysgICAgICAgIHNlbGYuX19sYXlvdXRfbGFiZWwgPSBOb25lCisrICAgICAgICBzZWxmLl9f bGF5b3V0X2Rlc2MgPSB7fQorKyAgICAgICAgc2VsZi5fX2xheW91dF9sYW5nID0ge30KKysgICAg ICAgIHNlbGYuX192YXJpYW50bGlzdCA9IEZhbHNlCisrICAgICAgICBzZWxmLl9fdmFyaWFudCA9 IEZhbHNlCisrICAgICAgICBzZWxmLl9fdmFyaWFudF9sYWJlbCA9IE5vbmUKKysgICAgICAgIHNl bGYuX192YXJpYW50X2Rlc2MgPSB7fQorKworKyAgICBkZWYgc3RhcnRFbGVtZW50KHNlbGYsIG5h bWUsIGF0dHJzKToKKysgICAgICAgIHNlbGYuX19jdXJyZW50X25vZGUgPSBuYW1lCisrICAgICAg ICBpZiBuYW1lID09ICJsYXlvdXRMaXN0IjoKKysgICAgICAgICAgICBzZWxmLl9fbGF5b3V0bGlz dCA9IHt9CisrICAgICAgICBlbGlmIG5hbWUgPT0gImxheW91dCI6CisrICAgICAgICAgICAgc2Vs Zi5fX2xheW91dCA9IFRydWUKKysgICAgICAgICAgICBzZWxmLl9fbGF5b3V0X2xhYmVsID0gTm9u ZQorKyAgICAgICAgZWxpZiBuYW1lID09ICJ2YXJpYW50TGlzdCI6CisrICAgICAgICAgICAgc2Vs Zi5fX3ZhcmlhbnRsaXN0ID0gVHJ1ZQorKyAgICAgICAgZWxpZiBuYW1lID09ICJ2YXJpYW50IjoK KysgICAgICAgICAgICBzZWxmLl9fdmFyaWFudCA9IFRydWUKKysgICAgICAgICAgICBzZWxmLl9f dmFyaWFudF9sYWJlbCA9IE5vbmUKKysKKysgICAgZGVmIGVuZEVsZW1lbnQoc2VsZiwgbmFtZSk6 CisrICAgICAgICBzZWxmLl9fY3VycmVudF9ub2RlID0gc2VsZi5fX3Jvb3QKKysgICAgICAgIGlm IG5hbWUgPT0gImxheW91dExpc3QiOgorKyAgICAgICAgICAgIHBhc3MKKysgICAgICAgIGVsaWYg bmFtZSA9PSAibGF5b3V0IjoKKysgICAgICAgICAgICBzZWxmLl9fbGF5b3V0ID0gRmFsc2UKKysg ICAgICAgIGVsaWYgbmFtZSA9PSAidmFyaWFudExpc3QiOgorKyAgICAgICAgICAgIHNlbGYuX192 YXJpYW50bGlzdCA9IEZhbHNlCisrICAgICAgICBlbGlmIG5hbWUgPT0gInZhcmlhbnQiOgorKyAg ICAgICAgICAgIHNlbGYuX192YXJpYW50ID0gRmFsc2UKKysKKysgICAgZGVmIGNoYXJhY3RlcnMo c2VsZiwgdGV4dCk6CisrICAgICAgICBpZiBzZWxmLl9fY3VycmVudF9ub2RlID09IHNlbGYuX19y b290OgorKyAgICAgICAgICAgIHJldHVybgorKyAgICAgICAgaWYgc2VsZi5fX2xheW91dGxpc3Qg PT0gTm9uZToKKysgICAgICAgICAgICByZXR1cm4KKysgICAgICAgIGlmIG5vdCBzZWxmLl9fbGF5 b3V0OgorKyAgICAgICAgICAgIHJldHVybgorKyAgICAgICAgaWYgc2VsZi5fX3ZhcmlhbnQ6Cisr ICAgICAgICAgICAgaWYgc2VsZi5fX2N1cnJlbnRfbm9kZSA9PSAibmFtZSI6CisrICAgICAgICAg ICAgICAgIHNlbGYuX192YXJpYW50X2xhYmVsID0gdGV4dAorKyAgICAgICAgICAgICAgICBpZiBz ZWxmLl9fbGF5b3V0X2xhYmVsICE9IE5vbmUgYW5kIFwKKysgICAgICAgICAgICAgICAgICAgc2Vs Zi5fX2xheW91dF9sYWJlbCBpbiBzZWxmLl9fbGF5b3V0bGlzdDoKKysgICAgICAgICAgICAgICAg ICAgIHNlbGYuX19sYXlvdXRsaXN0W3NlbGYuX19sYXlvdXRfbGFiZWxdLmFwcGVuZCh0ZXh0KQor KyAgICAgICAgICAgIGVsaWYgc2VsZi5fX2N1cnJlbnRfbm9kZSA9PSAiZGVzY3JpcHRpb24iOgor KyAgICAgICAgICAgICAgICBzZWxmLl9fdmFyaWFudF9kZXNjW3NlbGYuX192YXJpYW50X2xhYmVs XSA9IHRleHQKKysgICAgICAgICAgICBlbGlmIHNlbGYuX19jdXJyZW50X25vZGUgPT0gImlzbzYz OUlkIjoKKysgICAgICAgICAgICAgICAgbGFiZWwgPSBzZWxmLl9fbGF5b3V0X2xhYmVsCisrICAg ICAgICAgICAgICAgIGlmIGxhYmVsICE9IE5vbmU6CisrICAgICAgICAgICAgICAgICAgICBsYWJl bCA9ICIlcyglcykiICUgKGxhYmVsLCBzZWxmLl9fdmFyaWFudF9sYWJlbCkKKysgICAgICAgICAg ICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gc2VsZi5fX3ZhcmlhbnRf bGFiZWwKKysgICAgICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIHNlbGYuX19sYXlvdXRfbGFu ZzoKKysgICAgICAgICAgICAgICAgICAgIHNlbGYuX19sYXlvdXRfbGFuZ1tsYWJlbF0gPSBbXQor KyAgICAgICAgICAgICAgICBzZWxmLl9fbGF5b3V0X2xhbmdbbGFiZWxdLmFwcGVuZCh0ZXh0KQor KyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIHBhc3MKKysgICAgICAgIGVsc2U6 CisrICAgICAgICAgICAgaWYgc2VsZi5fX2N1cnJlbnRfbm9kZSA9PSAibmFtZSI6CisrICAgICAg ICAgICAgICAgIHNlbGYuX19sYXlvdXRfbGFiZWwgPSB0ZXh0CisrICAgICAgICAgICAgICAgIHNl bGYuX19sYXlvdXRsaXN0W3NlbGYuX19sYXlvdXRfbGFiZWxdID0gW10KKysgICAgICAgICAgICBl bGlmIHNlbGYuX19jdXJyZW50X25vZGUgPT0gImRlc2NyaXB0aW9uIjoKKysgICAgICAgICAgICAg ICAgc2VsZi5fX2xheW91dF9kZXNjW3NlbGYuX19sYXlvdXRfbGFiZWxdID0gdGV4dAorKyAgICAg ICAgICAgIGVsaWYgc2VsZi5fX2N1cnJlbnRfbm9kZSA9PSAiaXNvNjM5SWQiOgorKyAgICAgICAg ICAgICAgICBpZiBzZWxmLl9fbGF5b3V0X2xhYmVsIG5vdCBpbiBzZWxmLl9fbGF5b3V0X2xhbmc6 CisrICAgICAgICAgICAgICAgICAgICBzZWxmLl9fbGF5b3V0X2xhbmdbc2VsZi5fX2xheW91dF9s YWJlbF0gPSBbXQorKyAgICAgICAgICAgICAgICBzZWxmLl9fbGF5b3V0X2xhbmdbc2VsZi5fX2xh eW91dF9sYWJlbF0uYXBwZW5kKHRleHQpCisrICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAg ICAgICAgcGFzcworKworKyAgICBkZWYgZ2V0TGF5b3V0TGlzdChzZWxmKToKKysgICAgICAgIHJl dHVybiBzZWxmLl9fbGF5b3V0bGlzdAorKworKyAgICBkZWYgZ2V0TGF5b3V0RGVzYyhzZWxmKToK KysgICAgICAgIHJldHVybiBzZWxmLl9fbGF5b3V0X2Rlc2MKKysKKysgICAgZGVmIGdldExheW91 dExhbmcoc2VsZik6CisrICAgICAgICByZXR1cm4gc2VsZi5fX2xheW91dF9sYW5nCisrCisrICAg IGRlZiBnZXRWYXJpYW50RGVzYyhzZWxmKToKKysgICAgICAgIHJldHVybiBzZWxmLl9fdmFyaWFu dF9kZXNjCisrCisrY2xhc3MgWEtCTGF5b3V0Q29uZmlnSGFuZGxlcihYTUxGaWx0ZXJCYXNlKToK KysgICAgZGVmIF9faW5pdF9fKHNlbGYsCisrICAgICAgICAgICAgICAgICBwYXJzZXI9Tm9uZSwK KysgICAgICAgICAgICAgICAgIGRvd25zdHJlYW09Tm9uZSwKKysgICAgICAgICAgICAgICAgIHBy ZWxvYWRfbGF5b3V0cz1Ob25lLAorKyAgICAgICAgICAgICAgICAgcm9vdD0ncm9vdCcpOgorKyAg ICAgICAgWE1MRmlsdGVyQmFzZS5fX2luaXRfXyhzZWxmLCBwYXJzZXIpCisrICAgICAgICBzZWxm Ll9fZG93bnN0cmVhbSA9IGRvd25zdHJlYW0KKysgICAgICAgIHNlbGYuX19wcmVsb2FkX2xheW91 dHMgPSBwcmVsb2FkX2xheW91dHMKKysgICAgICAgIHNlbGYuX19yb290ID0gcm9vdAorKyAgICAg ICAgc2VsZi5fX2N1cnJlbnRfbm9kZSA9IHJvb3QKKysgICAgICAgIHNlbGYuX194a2JsYXlvdXQg PSBGYWxzZSAKKysgICAgICAgIHNlbGYuX19jb25maWcgPSBGYWxzZSAKKysKKysgICAgZGVmIHN0 YXJ0RG9jdW1lbnQoc2VsZik6CisrICAgICAgICBpZiBzZWxmLl9fZG93bnN0cmVhbSAhPSBOb25l OgorKyAgICAgICAgICAgIHNlbGYuX19kb3duc3RyZWFtLnN0YXJ0RG9jdW1lbnQoKQorKworKyAg ICBkZWYgZW5kRG9jdW1lbnQoc2VsZik6CisrICAgICAgICBpZiBzZWxmLl9fZG93bnN0cmVhbSAh PSBOb25lOgorKyAgICAgICAgICAgIHNlbGYuX19kb3duc3RyZWFtLmVuZERvY3VtZW50KCkKKysK KysgICAgZGVmIHN0YXJ0RWxlbWVudChzZWxmLCBuYW1lLCBhdHRycyk6CisrICAgICAgICBzZWxm Ll9fY3VycmVudF9ub2RlID0gbmFtZQorKyAgICAgICAgaWYgbmFtZSA9PSAieGtibGF5b3V0IjoK KysgICAgICAgICAgICBzZWxmLl9feGtibGF5b3V0ID0gVHJ1ZQorKyAgICAgICAgaWYgbmFtZSA9 PSAiY29uZmlnIjoKKysgICAgICAgICAgICBzZWxmLl9fY29uZmlnID0gVHJ1ZQorKyAgICAgICAg aWYgc2VsZi5fX2Rvd25zdHJlYW0gIT0gTm9uZToKKysgICAgICAgICAgICBzZWxmLl9fZG93bnN0 cmVhbS5zdGFydEVsZW1lbnQobmFtZSwge30pCisrCisrICAgIGRlZiBlbmRFbGVtZW50KHNlbGYs IG5hbWUpOgorKyAgICAgICAgc2VsZi5fX2N1cnJlbnRfbm9kZSA9IHNlbGYuX19yb290CisrICAg ICAgICBpZiBuYW1lID09ICJ4a2JsYXlvdXQiOgorKyAgICAgICAgICAgIHNlbGYuX194a2JsYXlv dXQgPSBGYWxzZQorKyAgICAgICAgaWYgbmFtZSA9PSAiY29uZmlnIjoKKysgICAgICAgICAgICBz ZWxmLl9fY29uZmlnID0gRmFsc2UKKysgICAgICAgIGlmIHNlbGYuX19kb3duc3RyZWFtICE9IE5v bmU6CisrICAgICAgICAgICAgc2VsZi5fX2Rvd25zdHJlYW0uZW5kRWxlbWVudChuYW1lKQorKwor KyAgICBkZWYgY2hhcmFjdGVycyhzZWxmLCB0ZXh0KToKKysgICAgICAgIGlmIHNlbGYuX19jdXJy ZW50X25vZGUgPT0gc2VsZi5fX3Jvb3Q6CisrICAgICAgICAgICAgcmV0dXJuCisrICAgICAgICBp ZiBub3Qgc2VsZi5fX3hrYmxheW91dCBvciBub3Qgc2VsZi5fX2NvbmZpZzoKKysgICAgICAgICAg ICByZXR1cm4KKysgICAgICAgIGlmIHNlbGYuX19jdXJyZW50X25vZGUgPT0gInByZWxvYWRfbGF5 b3V0cyI6CisrICAgICAgICAgICAgaWYgc2VsZi5fX3ByZWxvYWRfbGF5b3V0cyA9PSBOb25lOgor KyAgICAgICAgICAgICAgICBzZWxmLl9fcHJlbG9hZF9sYXlvdXRzID0gdGV4dC5zcGxpdCgnLCcp CisrICAgICAgICAgICAgICAgIHNlbGYuX19wcmVsb2FkX2xheW91dHMuc29ydCgpCisrICAgICAg ICAgICAgaWYgc2VsZi5fX2Rvd25zdHJlYW0gIT0gTm9uZToKKysgICAgICAgICAgICAgICAgc2Vs Zi5fX2Rvd25zdHJlYW0uY2hhcmFjdGVycyhzdHJpbmcuam9pbihzZWxmLl9fcHJlbG9hZF9sYXlv dXRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICcsJykpCisrCisrICAgIGRlZiBnZXRQcmVsb2FkTGF5b3V0cyhzZWxmKToKKysgICAg ICAgIHJldHVybiBzZWxmLl9fcHJlbG9hZF9sYXlvdXRzCisrCisrY2xhc3MgWEtCQ29uZmlnUmVn aXN0cnkoKToKKysgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aD1YS0JfUlVMRVNfWE1M X0ZJTEUpOgorKyAgICAgICAgc2VsZi5fX2hhbmRsZXIgPSBOb25lCisrICAgICAgICBwYXJzZXIg PSBzYXgubWFrZV9wYXJzZXIoKQorKyAgICAgICAgcGFyc2VyLnNldEZlYXR1cmUoc2F4LmhhbmRs ZXIuZmVhdHVyZV9uYW1lc3BhY2VzLCAwKQorKyAgICAgICAgc2VsZi5fX2hhbmRsZXIgPSBYS0JD b25maWdSZWdpc3RyeUhhbmRsZXIocGFyc2VyKQorKyAgICAgICAgcGFyc2VyLnNldENvbnRlbnRI YW5kbGVyKHNlbGYuX19oYW5kbGVyKQorKyAgICAgICAgZiA9IGZpbGUoZmlsZV9wYXRoLCAncicp CisrICAgICAgICB0cnk6CisrICAgICAgICAgICAgcGFyc2VyLnBhcnNlKGYpCisrICAgICAgICBl eGNlcHQgU0FYUGFyc2VFeGNlcHRpb246CisrICAgICAgICAgICAgcHJpbnQgIkVSUk9SOiBpbnZh bGlkIGZpbGUgZm9ybWF0IiwgZmlsZV9wYXRoCisrICAgICAgICBmaW5hbGx5OgorKyAgICAgICAg ICAgIGYuY2xvc2UoKQorKworKyAgICBkZWYgZ2V0X2xheW91dF9saXN0KHNlbGYpOgorKyAgICAg ICAgcmV0dXJuIHNlbGYuX19oYW5kbGVyLmdldExheW91dExpc3QoKQorKworKyAgICBkZWYgZ2V0 X2xheW91dF9kZXNjKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX19oYW5kbGVyLmdldExh eW91dERlc2MoKQorKworKyAgICBkZWYgZ2V0X2xheW91dF9sYW5nKHNlbGYpOgorKyAgICAgICAg cmV0dXJuIHNlbGYuX19oYW5kbGVyLmdldExheW91dExhbmcoKQorKworKyAgICBkZWYgZ2V0X3Zh cmlhbnRfZGVzYyhzZWxmKToKKysgICAgICAgIHJldHVybiBzZWxmLl9faGFuZGxlci5nZXRWYXJp YW50RGVzYygpCisrCisrICAgIEBjbGFzc21ldGhvZAorKyAgICBkZWYgaGF2ZV94a2Ioc2VsZik6 CisrICAgICAgICByZXR1cm4gQEhBVkVfWEtCQAorKworKyAgICBAY2xhc3NtZXRob2QKKysgICAg ZGVmIGVuZ2luZV9kZXNjX25ldyhzZWxmLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGxhbmcs CisrICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgIGxheW91dF9kZXNjPU5vbmUsCisrICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1O b25lLAorKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRfZGVzYz1Ob25lKToKKysgICAg ICAgIGlmIGxheW91dF9kZXNjICE9IE5vbmUgYW5kIHZhcmlhbnRfZGVzYyAhPSBOb25lOgorKyAg ICAgICAgICAgIGxvbmduYW1lID0gbGF5b3V0X2Rlc2MgKyAiIC0gIiArIHZhcmlhbnRfZGVzYwor KyAgICAgICAgZWxpZiBsYXlvdXQgIT0gTm9uZSBhbmQgdmFyaWFudCAhPSBOb25lOgorKyAgICAg ICAgICAgIGxvbmduYW1lID0gbGF5b3V0ICsgIiAtICIgKyB2YXJpYW50CisrICAgICAgICBlbGlm IGxheW91dF9kZXNjICE9IE5vbmU6CisrICAgICAgICAgICAgbG9uZ25hbWUgPSBsYXlvdXRfZGVz YworKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBsb25nbmFtZSA9IGxheW91dAorKyAgICAg ICAgaWYgdmFyaWFudCAhPSBOb25lOgorKyAgICAgICAgICAgIG5hbWUgPSAieGtiOmxheW91dDoi ICsgbGF5b3V0ICsgIjoiICsgdmFyaWFudAorKyAgICAgICAgICAgIGRlc2MgPSAiWEtCICIgKyBs YXlvdXQgKyAiKCIgKyB2YXJpYW50ICsgIikga2V5Ym9hcmQgbGF5b3V0IgorKyAgICAgICAgICAg IGVuZ2luZV9sYXlvdXQgPSBsYXlvdXQgKyAiKCIgKyB2YXJpYW50ICsgIikiCisrICAgICAgICBl bHNlOgorKyAgICAgICAgICAgIG5hbWUgPSAieGtiOmxheW91dDoiICsgbGF5b3V0CisrICAgICAg ICAgICAgZGVzYyA9ICJYS0IgIiArIGxheW91dCArICIga2V5Ym9hcmQgbGF5b3V0IgorKyAgICAg ICAgICAgIGVuZ2luZV9sYXlvdXQgPSBsYXlvdXQKKysKKysgICAgICAgIGVuZ2luZSA9IGVuZ2lu ZWRlc2MuRW5naW5lRGVzYyhuYW1lLCBsb25nbmFtZSwgZGVzYywgbGFuZywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTEdQTDIuMSIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImli dXMtZW5naW5lIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmdp bmVfbGF5b3V0KQorKyAgICAgICAgcmV0dXJuIGVuZ2luZQorKworK2NsYXNzIFhLQkxheW91dENv bmZpZygpOgorKyAgICBkZWYgX19pbml0X18oc2VsZiwKKysgICAgICAgICAgICAgICAgIHN5c3Rl bV9jb25maWc9IkBkYXRhZGlyQC9pYnVzL3hrYi94a2JsYXlvdXRjb25maWcueG1sIik6CisrICAg ICAgICBzZWxmLl9fdXNlcl9jb25maWcgPSBnZXRfdXNlcl9jb25maWdfZGlyKCkKKysgICAgICAg IGlmIHNlbGYuX191c2VyX2NvbmZpZyA9PSBOb25lOgorKyAgICAgICAgICAgIHNlbGYuX191c2Vy X2NvbmZpZyA9IG9zLmVudmlyb25bJ0hPTUUnXSArICIvLmNvbmZpZyIKKysgICAgICAgIHNlbGYu X191c2VyX2NvbmZpZyA9IHNlbGYuX191c2VyX2NvbmZpZyArIFwKKysgICAgICAgICAgICAiL2li dXMveGtiL3hrYmxheW91dGNvbmZpZy54bWwiCisrICAgICAgICBzZWxmLl9fc3lzdGVtX2NvbmZp ZyA9IHN5c3RlbV9jb25maWcKKysgICAgICAgIHNlbGYuX19maWx0ZXJfaGFuZGxlciA9IE5vbmUK KysgICAgICAgIHNlbGYuX19sb2FkKCkKKysKKysgICAgZGVmIF9fbG9hZChzZWxmLCBkb3duc3Ry ZWFtPU5vbmUsIHByZWxvYWRfbGF5b3V0cz1Ob25lKToKKysgICAgICAgIHBhcnNlciA9IHNheC5t YWtlX3BhcnNlcigpCisrICAgICAgICBwYXJzZXIuc2V0RmVhdHVyZShzYXguaGFuZGxlci5mZWF0 dXJlX25hbWVzcGFjZXMsIDApCisrICAgICAgICBzZWxmLl9fZmlsdGVyX2hhbmRsZXIgPSBYS0JM YXlvdXRDb25maWdIYW5kbGVyKHBhcnNlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlbG9hZF9sYXlvdXRzKQor KyAgICAgICAgcGFyc2VyLnNldENvbnRlbnRIYW5kbGVyKHNlbGYuX19maWx0ZXJfaGFuZGxlcikK KysgICAgICAgIGYgPSBOb25lCisrICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLl9fdXNl cl9jb25maWcpOgorKyAgICAgICAgICAgIGYgPSBmaWxlKHNlbGYuX191c2VyX2NvbmZpZykKKysg ICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoc2VsZi5fX3N5c3RlbV9jb25maWcpOgorKyAgICAg ICAgICAgIGYgPSBmaWxlKHNlbGYuX19zeXN0ZW1fY29uZmlnKQorKyAgICAgICAgaWYgZiA9PSBO b25lOgorKyAgICAgICAgICAgIHJldHVybgorKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIHBh cnNlci5wYXJzZShmKQorKyAgICAgICAgZXhjZXB0IFNBWFBhcnNlRXhjZXB0aW9uOgorKyAgICAg ICAgICAgIHByaW50ICJFUlJPUjogaW52YWxpZCBmaWxlIGZvcm1hdCIsIHNlbGYuX191c2VyX2Nv bmZpZworKyAgICAgICAgZmluYWxseToKKysgICAgICAgICAgICBmLmNsb3NlKCkKKysKKysgICAg ZGVmIGdldF9wcmVsb2FkX2xheW91dHMoc2VsZik6CisrICAgICAgICByZXR1cm4gc2VsZi5fX2Zp bHRlcl9oYW5kbGVyLmdldFByZWxvYWRMYXlvdXRzKCkKKysKKysgICAgZGVmIHNhdmVfcHJlbG9h ZF9sYXlvdXRzKHNlbGYsIGxheW91dHMpOgorKyAgICAgICAgaWYgbGF5b3V0cyA9PSBOb25lOgor KyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuX191c2VyX2NvbmZpZyk6CisrICAg ICAgICAgICAgICAgIG9zLnVubGluayhzZWxmLl9fdXNlcl9jb25maWcpCisrICAgICAgICAgICAg ICAgIHJldHVybgorKyAgICAgICAgcGFyc2VyID0gc2F4Lm1ha2VfcGFyc2VyKCkKKysgICAgICAg IHBhcnNlci5zZXRGZWF0dXJlKHNheC5oYW5kbGVyLmZlYXR1cmVfbmFtZXNwYWNlcywgMCkKKysg ICAgICAgIHJlc3VsdCA9IFN0cmluZ0lPKCkKKysgICAgICAgIGRvd25zdHJlYW1faGFuZGxlciA9 IFhNTEdlbmVyYXRvcihyZXN1bHQsICd1dGYtOCcpCisrICAgICAgICBzZWxmLl9fbG9hZChkb3du c3RyZWFtX2hhbmRsZXIsIGxheW91dHMpCisrICAgICAgICBjb250ZW50cyA9IHJlc3VsdC5nZXR2 YWx1ZSgpCisrICAgICAgICBkaXIgPSBvcy5wYXRoLmRpcm5hbWUoc2VsZi5fX3VzZXJfY29uZmln KQorKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcik6CisrICAgICAgICAgICAgb3Mu bWFrZWRpcnMoZGlyLCAwNzAwKQorKyAgICAgICAgZiA9IG9wZW4oc2VsZi5fX3VzZXJfY29uZmln LCAndycpCisrICAgICAgICBmLndyaXRlKGNvbnRlbnRzKQorKyAgICAgICAgZi5jbG9zZSgpCisr ICAgICAgICBvcy5jaG1vZChzZWxmLl9fdXNlcl9jb25maWcsIDA2MDApCisrCisrZGVmIHRlc3Qo KToKKysgICAgeGtiY29uZmlnID0gWEtCQ29uZmlnUmVnaXN0cnkoKQorKyAgICBsYXlvdXRfbGlz dCA9IHhrYmNvbmZpZy5nZXRfbGF5b3V0X2xpc3QoKQorKyAgICBsYXlvdXRfZGVzYyA9IHhrYmNv bmZpZy5nZXRfbGF5b3V0X2Rlc2MoKQorKyAgICBsYXlvdXRfbGFuZyA9IHhrYmNvbmZpZy5nZXRf bGF5b3V0X2xhbmcoKQorKyAgICB2YXJpYW50X2Rlc2MgPSB4a2Jjb25maWcuZ2V0X3ZhcmlhbnRf ZGVzYygpCisrICAgIGZvciBsYXlvdXQgaW4gbGF5b3V0X2xpc3Qua2V5cygpOgorKyAgICAgICAg aWYgbGF5b3V0IG5vdCBpbiBsYXlvdXRfbGFuZzoKKysgICAgICAgICAgICBwcmludCAibGF5b3V0 IG5hbWU6IiwgbGF5b3V0LCAiTk8tTEFORyBkZXNjcmlwdGlvbjoiLCBsYXlvdXRfZGVzY1tsYXlv dXRdCisrICAgICAgICAgICAgY29udGludWUKKysgICAgICAgIGxhbmcgPSBsYXlvdXRfbGFuZ1ts YXlvdXRdCisrICAgICAgICBwcmludCAibGF5b3V0IG5hbWU6IiwgbGF5b3V0LCAibGFuZzoiLCBs YW5nLCAiZGVzY3JpcHRpb246IiwgbGF5b3V0X2Rlc2NbbGF5b3V0XQorKyAgICAgICAgZm9yIHZh cmlhbnQgaW4gbGF5b3V0X2xpc3RbbGF5b3V0XToKKysgICAgICAgICAgICBsYWJlbCA9ICIlcygl cykiICUgKGxheW91dCwgdmFyaWFudCkKKysgICAgICAgICAgICBpZiBsYWJlbCBpbiBsYXlvdXRf bGFuZzoKKysgICAgICAgICAgICAgICAgbGFuZyA9IGxheW91dF9sYW5nW2xhYmVsXQorKyAgICAg ICAgICAgIHByaW50ICIgIHZhcmlhbnQgbmFtZToiLCB2YXJpYW50LCAibGFuZzoiLCBsYW5nLCAi ZGVzY3JpcHRpb246IiwgdmFyaWFudF9kZXNjW3ZhcmlhbnRdCisrCisrZGVmIHRlc3QyKCk6Cisr ICAgIHhrYmxheW91dGNvbmZpZyA9IFhLQkxheW91dENvbmZpZygiLi4veGtiL3hrYmxheW91dGNv bmZpZy54bWwiKQorKyAgICBsaXN0ID0geGtibGF5b3V0Y29uZmlnLmdldF9wcmVsb2FkX2xheW91 dHMoKQorKyAgICBwcmludCBsaXN0CisrICAgIGlmIGxpc3QgPT0gTm9uZToKKysgICAgICAgIGxp c3QgPSBbXQorKyAgICBsaXN0LmFwcGVuZCgiZ2IodGVzdCkiKQorKyAgICBsaXN0LnNvcnQoKQor KyAgICAjeGtibGF5b3V0Y29uZmlnLnNhdmVfcHJlbG9hZF9sYXlvdXRzKGxpc3QpCisrCisraWYg X19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKysgICAgdGVzdCgpCisrICAgIHRlc3QyKCkKK2RpZmYg LS1naXQgYS9zZXR1cC9tYWluLnB5IGIvc2V0dXAvbWFpbi5weQoraW5kZXggZDc3OGFjMy4uMTMz NTIxNSAxMDA2NDQKKy0tLSBhL3NldHVwL21haW4ucHkKKysrKyBiL3NldHVwL21haW4ucHkKK0BA IC0xODMsMTAgKzE4MywyMCBAQCBjbGFzcyBTZXR1cChvYmplY3QpOgorIAorICAgICAgICAgIyB1 c2Ugc3lzdGVtIGtleWJvYXJkIGxheW91dCBzZXR0aW5nCisgICAgICAgICBzZWxmLl9fY2hlY2ti dXR0b25fdXNlX3N5c19sYXlvdXQgPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KCJjaGVja2J1 dHRvbl91c2Vfc3lzX2xheW91dCIpCistICAgICAgICBzZWxmLl9fY2hlY2tidXR0b25fdXNlX3N5 c19sYXlvdXQuc2V0X2FjdGl2ZSgKKy0gICAgICAgICAgICBzZWxmLl9fY29uZmlnLmdldF92YWx1 ZSgiZ2VuZXJhbCIsICJ1c2Vfc3lzdGVtX2tleWJvYXJkX2xheW91dCIsIFRydWUpKQorKyAgICAg ICAgdXNlX3N5c3RlbV9rZXlib2FyZF9sYXlvdXQgPSBzZWxmLl9fY29uZmlnLmdldF92YWx1ZSgi Z2VuZXJhbCIsICJ1c2Vfc3lzdGVtX2tleWJvYXJkX2xheW91dCIsIFRydWUpCisrICAgICAgICBz ZWxmLl9fY2hlY2tidXR0b25fdXNlX3N5c19sYXlvdXQuc2V0X2FjdGl2ZSh1c2Vfc3lzdGVtX2tl eWJvYXJkX2xheW91dCkKKyAgICAgICAgIHNlbGYuX19jaGVja2J1dHRvbl91c2Vfc3lzX2xheW91 dC5jb25uZWN0KCJ0b2dnbGVkIiwgc2VsZi5fX2NoZWNrYnV0dG9uX3VzZV9zeXNfbGF5b3V0X3Rv Z2dsZWRfY2IpCisgCisrICAgICAgICAjIGRlZmF1bHQga2V5Ym9hcmQgbGF5b3V0IHNldHRpbmcK KysgICAgICAgIHNlbGYuX19idXR0b25fZGVmYXVsdF9zeXN0ZW1fbGF5b3V0ID0gc2VsZi5fX2J1 aWxkZXIuZ2V0X29iamVjdCgiYnV0dG9uX2RlZmF1bHRfc3lzdGVtX2xheW91dCIpCisrICAgICAg ICB0ZXh0ID0gc3RyKHNlbGYuX19jb25maWcuZ2V0X3ZhbHVlKCJnZW5lcmFsIiwgImRlZmF1bHRf c3lzdGVtX2xheW91dCIsICcnKSkKKysgICAgICAgIGlmIHRleHQgPT0gJ2RlZmF1bHQnIG9yIHRl eHQgPT0gJyc6CisrICAgICAgICAgICAgdGV4dCA9IF8oIkRlZmF1bHQiKQorKyAgICAgICAgc2Vs Zi5fX2J1dHRvbl9kZWZhdWx0X3N5c3RlbV9sYXlvdXQuc2V0X2xhYmVsKHRleHQpCisrICAgICAg ICBpZiBub3QgdXNlX3N5c3RlbV9rZXlib2FyZF9sYXlvdXQ6CisrICAgICAgICAgICAgc2VsZi5f X2J1dHRvbl9kZWZhdWx0X3N5c3RlbV9sYXlvdXQuc2V0X3NlbnNpdGl2ZShGYWxzZSkKKysgICAg ICAgIHNlbGYuX19idXR0b25fZGVmYXVsdF9zeXN0ZW1fbGF5b3V0LmNvbm5lY3QoImNsaWNrZWQi LCBzZWxmLl9fYnV0dG9uX2RlZmF1bHRfc3lzdGVtX2xheW91dF9jYikKKysKKyAgICAgICAgICMg dXNlIGdsb2JhbCBpbWUgc2V0dGluZworICAgICAgICAgc2VsZi5fX2NoZWNrYnV0dG9uX3VzZV9n bG9iYWxfZW5naW5lID0gc2VsZi5fX2J1aWxkZXIuZ2V0X29iamVjdCgiY2hlY2tidXR0b25fdXNl X2dsb2JhbF9lbmdpbmUiKQorICAgICAgICAgc2VsZi5fX2NoZWNrYnV0dG9uX3VzZV9nbG9iYWxf ZW5naW5lLnNldF9hY3RpdmUoCitAQCAtMjIzLDYgKzIzMywxNDUgQEAgY2xhc3MgU2V0dXAob2Jq ZWN0KToKKyAgICAgICAgIHNlbGYuX19jb21ib2JveC5jb25uZWN0KCJub3RpZnk6OmFjdGl2ZS1l bmdpbmUiLCBzZWxmLl9fY29tYm9ib3hfbm90aWZ5X2FjdGl2ZV9lbmdpbmVfY2IpCisgICAgICAg ICBzZWxmLl9fdHJlZXZpZXcuY29ubmVjdCgibm90aWZ5Iiwgc2VsZi5fX3RyZWV2aWV3X25vdGlm eV9jYikKKyAKKysgICAgICAgIHNlbGYuX194a2JsYXlvdXRjb25maWcgPSBOb25lCisrICAgICAg ICBzZWxmLl9fcHJlbG9hZF94a2JfZW5naW5lcyA9IFtdCisrICAgICAgICBzZWxmLl9fb3RoZXJf eGtiX2VuZ2luZXMgPSBbXQorKyAgICAgICAgaWYgaWJ1cy5YS0JDb25maWdSZWdpc3RyeS5oYXZl X3hrYigpOgorKyAgICAgICAgICAgIHNlbGYuX194a2JsYXlvdXRjb25maWcgPSBpYnVzLlhLQkxh eW91dENvbmZpZygpCisrCisrICAgICAgICAjIGNvbmZpZyBsYXlvdXRzIGRpYWxvZworKyAgICAg ICAgc2VsZi5fX2luaXRfY29uZmlnX2xheW91dHMoKQorKworKyAgICAgICAgIyBkZWZhdWx0IHN5 c3RlbSBsYXlvdXQgZGlhbG9nCisrICAgICAgICBzZWxmLl9faW5pdF9kZWZhdWx0X3N5c3RlbV9s YXlvdXQoKQorKworKyAgICBkZWYgX19nZXRfeGtiZW5naW5lcyhzZWxmKToKKysgICAgICAgIHhr YmVuZ2luZXMgPSBbXQorKyAgICAgICAgeGtiY29uZmlnID0gaWJ1cy5YS0JDb25maWdSZWdpc3Ry eSgpCisrICAgICAgICBsYXlvdXRfbGlzdCA9IHhrYmNvbmZpZy5nZXRfbGF5b3V0X2xpc3QoKQor KyAgICAgICAgbGF5b3V0X2Rlc2MgPSB4a2Jjb25maWcuZ2V0X2xheW91dF9kZXNjKCkKKysgICAg ICAgIGxheW91dF9sYW5nID0geGtiY29uZmlnLmdldF9sYXlvdXRfbGFuZygpCisrICAgICAgICB2 YXJpYW50X2Rlc2MgPSB4a2Jjb25maWcuZ2V0X3ZhcmlhbnRfZGVzYygpCisrICAgICAgICBmb3Ig bGF5b3V0IGluIGxheW91dF9saXN0LmtleXMoKToKKysgICAgICAgICAgICBpZiBsYXlvdXQgbm90 IGluIGxheW91dF9sYW5nOgorKyAgICAgICAgICAgICAgICBjb250aW51ZQorKyAgICAgICAgICAg IGxhbmdzID0gbGF5b3V0X2xhbmdbbGF5b3V0XQorKyAgICAgICAgICAgIGZvciBsYW5nIGluIGxh bmdzOgorKyAgICAgICAgICAgICAgICBlbmdpbmUgPSBpYnVzLlhLQkNvbmZpZ1JlZ2lzdHJ5LmVu Z2luZV9kZXNjX25ldygKKysgICAgICAgICAgICAgICAgICAgIGxhbmcsCisrICAgICAgICAgICAg ICAgICAgICBsYXlvdXQsCisrICAgICAgICAgICAgICAgICAgICBsYXlvdXRfZGVzY1tsYXlvdXRd LAorKyAgICAgICAgICAgICAgICAgICAgTm9uZSwKKysgICAgICAgICAgICAgICAgICAgIE5vbmUp CisrICAgICAgICAgICAgICAgIHhrYmVuZ2luZXMuYXBwZW5kKGVuZ2luZSkKKysgICAgICAgICAg ICBmb3IgdmFyaWFudCBpbiBsYXlvdXRfbGlzdFtsYXlvdXRdOgorKyAgICAgICAgICAgICAgICBs YWJlbCA9ICIlcyglcykiICUgKGxheW91dCwgdmFyaWFudCkKKysgICAgICAgICAgICAgICAgaWYg bGFiZWwgaW4gbGF5b3V0X2xhbmc6CisrICAgICAgICAgICAgICAgICAgICBsYW5ncyA9IGxheW91 dF9sYW5nW2xhYmVsXQorKyAgICAgICAgICAgICAgICBmb3IgbGFuZyBpbiBsYW5nczoKKysgICAg ICAgICAgICAgICAgICAgIGVuZ2luZSA9IGlidXMuWEtCQ29uZmlnUmVnaXN0cnkuZW5naW5lX2Rl c2NfbmV3KAorKyAgICAgICAgICAgICAgICAgICAgICAgIGxhbmcsCisrICAgICAgICAgICAgICAg ICAgICAgICAgbGF5b3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dF9kZXNjW2xh eW91dF0sCisrICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCwKKysgICAgICAgICAgICAg ICAgICAgICAgICB2YXJpYW50X2Rlc2NbdmFyaWFudF0pCisrICAgICAgICAgICAgICAgICAgICB4 a2JlbmdpbmVzLmFwcGVuZChlbmdpbmUpCisrICAgICAgICByZXR1cm4geGtiZW5naW5lcworKwor KyAgICBkZWYgX19pbml0X2NvbmZpZ19sYXlvdXRzKHNlbGYpOgorKyAgICAgICAgaWYgbm90IGli dXMuWEtCQ29uZmlnUmVnaXN0cnkuaGF2ZV94a2IoKToKKysgICAgICAgICAgICBidXR0b24gPSBz ZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KCJidXR0b25fY29uZmlnX2xheW91dHMiKQorKyAgICAg ICAgICAgIGJ1dHRvbi5oaWRlKCkKKysgICAgICAgICAgICByZXR1cm4KKysKKysgICAgICAgIHNl bGYuX19kaWFsb2dfY29uZmlnX2xheW91dHMgPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KCJk aWFsb2dfY29uZmlnX2xheW91dHMiKQorKyAgICAgICAgc2VsZi5fX2J1dHRvbl9jb25maWdfbGF5 b3V0c19jYW5jZWwgPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KCJidXR0b25fY29uZmlnX2xh eW91dHNfY2FuY2VsIikKKysgICAgICAgIHNlbGYuX19idXR0b25fY29uZmlnX2xheW91dHNfY2Fu Y2VsLmNvbm5lY3QoImNsaWNrZWQiLCBzZWxmLl9fYnV0dG9uX2NvbmZpZ19sYXlvdXRzX2NhbmNl bF9jYikKKysgICAgICAgIHNlbGYuX19idXR0b25fY29uZmlnX2xheW91dHNfb2sgPSBzZWxmLl9f YnVpbGRlci5nZXRfb2JqZWN0KCJidXR0b25fY29uZmlnX2xheW91dHNfb2siKQorKyAgICAgICAg c2VsZi5fX2J1dHRvbl9jb25maWdfbGF5b3V0c19vay5jb25uZWN0KCJjbGlja2VkIiwgc2VsZi5f X2J1dHRvbl9jb25maWdfbGF5b3V0c19va19jYikKKysKKysgICAgICAgIHhrYmVuZ2luZXMgPSBz ZWxmLl9fZ2V0X3hrYmVuZ2luZXMoKQorKyAgICAgICAgcHJlbG9hZF9lbmdpbmVfbGlzdCA9IFtd CisrICAgICAgICBvdGhlcl9lbmdpbmVfbGlzdCA9IFtdCisrCisrICAgICAgICBpZiBsZW4oeGti ZW5naW5lcykgPiAwOgorKyAgICAgICAgICAgIGJ1dHRvbiA9IHNlbGYuX19idWlsZGVyLmdldF9v YmplY3QoImJ1dHRvbl9jb25maWdfbGF5b3V0cyIpCisrICAgICAgICAgICAgYnV0dG9uLmNvbm5l Y3QoImNsaWNrZWQiLCBzZWxmLl9fYnV0dG9uX2NvbmZpZ19sYXlvdXRzX2NiKQorKyAgICAgICAg ICAgIGJ1dHRvbi5zZXRfc2Vuc2l0aXZlKFRydWUpCisrCisrICAgICAgICBlbmdpbmUgPSBpYnVz LlhLQkNvbmZpZ1JlZ2lzdHJ5LmVuZ2luZV9kZXNjX25ldygKKysgICAgICAgICAgICAgICAgICAg ICAieGtiOmxheW91dDpub25lIiwKKysgICAgICAgICAgICAgICAgICAgICAibm9uZSIsCisrICAg ICAgICAgICAgICAgICAgICAgXygiTm8gU2VsZWN0aW9uIiksCisrICAgICAgICAgICAgICAgICAg ICAgTm9uZSwKKysgICAgICAgICAgICAgICAgICAgICBOb25lKQorKyAgICAgICAgc2VsZi5fX3By ZWxvYWRfeGtiX2VuZ2luZXMuYXBwZW5kKGVuZ2luZSkKKysgICAgICAgIHNlbGYuX19vdGhlcl94 a2JfZW5naW5lcy5hcHBlbmQoZW5naW5lKQorKworKyAgICAgICAgcHJlbG9hZF94a2JfZW5naW5l cyA9IHNlbGYuX194a2JsYXlvdXRjb25maWcuZ2V0X3ByZWxvYWRfbGF5b3V0cygpCisrICAgICAg ICBmb3IgZW5naW5lIGluIHhrYmVuZ2luZXM6CisrICAgICAgICAgICAgaWYgbm90IGVuZ2luZS5u YW1lLnN0YXJ0c3dpdGgoInhrYjpsYXlvdXQ6Iik6CisrICAgICAgICAgICAgICAgIGNvbnRpbnVl CisrICAgICAgICAgICAgc3ViX25hbWUgPSBlbmdpbmUubmFtZVtsZW4oInhrYjpsYXlvdXQ6Iik6 XQorKyAgICAgICAgICAgIGxheW91dF9saXN0ID0gc3ViX25hbWUuc3BsaXQoJzonKQorKyAgICAg ICAgICAgIGlmIGxlbihsYXlvdXRfbGlzdCkgPiAxOgorKyAgICAgICAgICAgICAgICBsYXlvdXQg PSAiJXMoJXMpIiAlIChsYXlvdXRfbGlzdFswXSwgbGF5b3V0X2xpc3RbMV0pCisrICAgICAgICAg ICAgZWxzZToKKysgICAgICAgICAgICAgICAgbGF5b3V0ID0gbGF5b3V0X2xpc3RbMF0KKysgICAg ICAgICAgICBoYXNfcHJlbG9hZGVkID0gRmFsc2UKKysgICAgICAgICAgICBmb3IgcHJlbG9hZF9u YW1lIGluIHByZWxvYWRfeGtiX2VuZ2luZXM6CisrICAgICAgICAgICAgICAgIHByZWxvYWRfbmFt ZSA9IHN0cihwcmVsb2FkX25hbWUpCisrICAgICAgICAgICAgICAgIGlmIGxlbihwcmVsb2FkX25h bWUpID09IDA6CisrICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorKyAgICAgICAgICAgICAg ICBpZiBsYXlvdXQgPT0gcHJlbG9hZF9uYW1lOgorKyAgICAgICAgICAgICAgICAgICAgaGFzX3By ZWxvYWRlZCA9IFRydWUKKysgICAgICAgICAgICAgICAgICAgIGJyZWFrCisrICAgICAgICAgICAg aWYgaGFzX3ByZWxvYWRlZDoKKysgICAgICAgICAgICAgICAgc2VsZi5fX3ByZWxvYWRfeGtiX2Vu Z2luZXMuYXBwZW5kKGVuZ2luZSkKKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAg ICBzZWxmLl9fb3RoZXJfeGtiX2VuZ2luZXMuYXBwZW5kKGVuZ2luZSkKKysgICAgICAgIHNlbGYu X19jb21ib2JveF9hZGRfbGF5b3V0ID0gc2VsZi5fX2J1aWxkZXIuZ2V0X29iamVjdCgiY29tYm9i b3hfYWRkX2xheW91dF9lbmdpbmVzIikKKysgICAgICAgIHNlbGYuX19jb21ib2JveF9hZGRfbGF5 b3V0LnNldF9lbmdpbmVzKHNlbGYuX19vdGhlcl94a2JfZW5naW5lcykKKysgICAgICAgIHNlbGYu X19jb21ib2JveF9yZW1vdmVfbGF5b3V0ID0gc2VsZi5fX2J1aWxkZXIuZ2V0X29iamVjdCgiY29t Ym9ib3hfcmVtb3ZlX2xheW91dF9lbmdpbmVzIikKKysgICAgICAgIHNlbGYuX19jb21ib2JveF9y ZW1vdmVfbGF5b3V0LnNldF9lbmdpbmVzKHNlbGYuX19wcmVsb2FkX3hrYl9lbmdpbmVzKQorKwor KyAgICBkZWYgX19pbml0X2RlZmF1bHRfc3lzdGVtX2xheW91dChzZWxmKToKKysgICAgICAgIGlm IG5vdCBpYnVzLlhLQkNvbmZpZ1JlZ2lzdHJ5LmhhdmVfeGtiKCk6CisrICAgICAgICAgICAgaGJv eCA9IHNlbGYuX19idWlsZGVyLmdldF9vYmplY3QoImhib3hfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0 IikKKysgICAgICAgICAgICBoYm94LmhpZGUoKQorKyAgICAgICAgICAgIHJldHVybgorKworKyAg ICAgICAgc2VsZi5fX2RpYWxvZ19kZWZhdWx0X3N5c3RlbV9sYXlvdXQgPSBzZWxmLl9fYnVpbGRl ci5nZXRfb2JqZWN0KCJkaWFsb2dfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0IikKKysgICAgICAgIHNl bGYuX19idXR0b25fZGVmYXVsdF9zeXN0ZW1fbGF5b3V0X2NhbmNlbCA9IHNlbGYuX19idWlsZGVy LmdldF9vYmplY3QoImJ1dHRvbl9kZWZhdWx0X3N5c3RlbV9sYXlvdXRfY2FuY2VsIikKKysgICAg ICAgIHNlbGYuX19idXR0b25fZGVmYXVsdF9zeXN0ZW1fbGF5b3V0X2NhbmNlbC5jb25uZWN0KCJj bGlja2VkIiwgc2VsZi5fX2J1dHRvbl9kZWZhdWx0X3N5c3RlbV9sYXlvdXRfY2FuY2VsX2NiKQor KyAgICAgICAgc2VsZi5fX2J1dHRvbl9kZWZhdWx0X3N5c3RlbV9sYXlvdXRfb2sgPSBzZWxmLl9f YnVpbGRlci5nZXRfb2JqZWN0KCJidXR0b25fZGVmYXVsdF9zeXN0ZW1fbGF5b3V0X29rIikKKysg ICAgICAgIHNlbGYuX19idXR0b25fZGVmYXVsdF9zeXN0ZW1fbGF5b3V0X29rLmNvbm5lY3QoImNs aWNrZWQiLCBzZWxmLl9fYnV0dG9uX2RlZmF1bHRfc3lzdGVtX2xheW91dF9va19jYikKKysKKysg ICAgICAgICMgZ2V0IHhrYiBsYXlvdXRzCisrICAgICAgICB4a2JlbmdpbmVzID0gc2VsZi5fX2dl dF94a2JlbmdpbmVzKCkKKysgICAgICAgIGVuZ2luZSA9IGlidXMuWEtCQ29uZmlnUmVnaXN0cnku ZW5naW5lX2Rlc2NfbmV3KAorKyAgICAgICAgICAgICAgICAgICAgICJ4a2I6bGF5b3V0OmRlZmF1 bHQiLAorKyAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IiwKKysgICAgICAgICAgICAgICAg ICAgICBfKCJEZWZhdWx0IGxheW91dCBmb3IgcmVzZXQiKSwKKysgICAgICAgICAgICAgICAgICAg ICBOb25lLAorKyAgICAgICAgICAgICAgICAgICAgIE5vbmUpCisrICAgICAgICB4a2JlbmdpbmVz LmFwcGVuZChlbmdpbmUpCisrCisrICAgICAgICBzZWxmLl9fY29tYm9ib3hfZGVmYXVsdF9zeXN0 ZW1fbGF5b3V0ID0gc2VsZi5fX2J1aWxkZXIuZ2V0X29iamVjdCgiY29tYm9ib3hfZGVmYXVsdF9z eXN0ZW1fbGF5b3V0X2VuZ2luZXMiKQorKyAgICAgICAgc2VsZi5fX2NvbWJvYm94X2RlZmF1bHRf c3lzdGVtX2xheW91dC5zZXRfZW5naW5lcyh4a2JlbmdpbmVzKQorKyAgICAgICAgc2VsZi5fX2Vu dHJ5X2RlZmF1bHRfc3lzdGVtX2xheW91dCA9IHNlbGYuX19idWlsZGVyLmdldF9vYmplY3QoImVu dHJ5X2RlZmF1bHRfc3lzdGVtX2xheW91dCIpCisrICAgICAgICBzZWxmLl9fZW50cnlfZGVmYXVs dF9zeXN0ZW1fbGF5b3V0LnNldF9zZW5zaXRpdmUoRmFsc2UpCisrICAgICAgICB0ZXh0ID0gc3Ry KHNlbGYuX19jb25maWcuZ2V0X3ZhbHVlKCJnZW5lcmFsIiwgImRlZmF1bHRfc3lzdGVtX2xheW91 dCIsICcnKSkKKysgICAgICAgIGlmIHRleHQgIT0gTm9uZToKKysgICAgICAgICAgICBzZWxmLl9f ZW50cnlfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0LnNldF90ZXh0KHRleHQpCisrICAgICAgICBidXR0 b24gPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KCJyYWRpb2J1dHRvbl9jb21ib2JveF9kZWZh dWx0X3N5c3RlbV9sYXlvdXQiKQorKyAgICAgICAgYnV0dG9uLnNldF9wcm9wZXJ0eSgibmFtZSIs ICJyYWRpb2J1dHRvbl9jb21ib2JveF9kZWZhdWx0X3N5c3RlbV9sYXlvdXQiKQorKyAgICAgICAg YnV0dG9uLnNldF9hY3RpdmUoVHJ1ZSkKKysgICAgICAgIGJ1dHRvbi5jb25uZWN0KCJjbGlja2Vk Iiwgc2VsZi5fX3JhZGlvYnV0dG9uX2RlZmF1bHRfc3lzdGVtX2xheW91dF9jYikKKysgICAgICAg IGJ1dHRvbiA9IHNlbGYuX19idWlsZGVyLmdldF9vYmplY3QoInJhZGlvYnV0dG9uX2VudHJ5X2Rl ZmF1bHRfc3lzdGVtX2xheW91dCIpCisrICAgICAgICBidXR0b24uc2V0X3Byb3BlcnR5KCJuYW1l IiwgInJhZGlvYnV0dG9uX2VudHJ5X2RlZmF1bHRfc3lzdGVtX2xheW91dCIpCisrICAgICAgICBi dXR0b24uY29ubmVjdCgiY2xpY2tlZCIsIHNlbGYuX19yYWRpb2J1dHRvbl9kZWZhdWx0X3N5c3Rl bV9sYXlvdXRfY2IpCisrCisgICAgIGRlZiBfX2NvbWJvYm94X25vdGlmeV9hY3RpdmVfZW5naW5l X2NiKHNlbGYsIGNvbWJvYm94LCBwcm9wZXJ0eSk6CisgICAgICAgICBlbmdpbmUgPSBzZWxmLl9f Y29tYm9ib3guZ2V0X2FjdGl2ZV9lbmdpbmUoKQorICAgICAgICAgYnV0dG9uID0gc2VsZi5fX2J1 aWxkZXIuZ2V0X29iamVjdCgiYnV0dG9uX2VuZ2luZV9hZGQiKQorQEAgLTI1NSw2ICs0MDQsODAg QEAgY2xhc3MgU2V0dXAob2JqZWN0KToKKyAgICAgICAgICAgICBhYm91dC5ydW4oKQorICAgICAg ICAgICAgIGFib3V0LmRlc3Ryb3koKQorIAorKyAgICBkZWYgX19idXR0b25fY29uZmlnX2xheW91 dHNfY2Ioc2VsZiwgYnV0dG9uKToKKysgICAgICAgIHNlbGYuX19kaWFsb2dfY29uZmlnX2xheW91 dHMucnVuKCkKKysgICAgICAgIHNlbGYuX19kaWFsb2dfY29uZmlnX2xheW91dHMuaGlkZSgpCisr CisrICAgIGRlZiBfX2J1dHRvbl9jb25maWdfbGF5b3V0c19jYW5jZWxfY2Ioc2VsZiwgYnV0dG9u KToKKysgICAgICAgIHNlbGYuX19kaWFsb2dfY29uZmlnX2xheW91dHMuaGlkZSgpCisrCisrICAg IGRlZiBfX2J1dHRvbl9jb25maWdfbGF5b3V0c19va19jYihzZWxmLCBidXR0b24pOgorKyAgICAg ICAgc2VsZi5fX2RpYWxvZ19jb25maWdfbGF5b3V0cy5oaWRlKCkKKysgICAgICAgIGFkZF9lbmdp bmUgPSBzZWxmLl9fY29tYm9ib3hfYWRkX2xheW91dC5nZXRfYWN0aXZlX2VuZ2luZSgpCisrICAg ICAgICByZW1vdmVfZW5naW5lID0gc2VsZi5fX2NvbWJvYm94X3JlbW92ZV9sYXlvdXQuZ2V0X2Fj dGl2ZV9lbmdpbmUoKQorKyAgICAgICAgaXNfbW9kaWZpZWQgPSBGYWxzZQorKyAgICAgICAgaWYg YWRkX2VuZ2luZSAhPSBOb25lIGFuZCBhZGRfZW5naW5lLm5hbWUgIT0gInhrYjpsYXlvdXQ6bm9u ZSI6CisrICAgICAgICAgICAgc2VsZi5fX3ByZWxvYWRfeGtiX2VuZ2luZXMuYXBwZW5kKGFkZF9l bmdpbmUpCisrICAgICAgICAgICAgc2VsZi5fX290aGVyX3hrYl9lbmdpbmVzLnJlbW92ZShhZGRf ZW5naW5lKQorKyAgICAgICAgICAgIGlzX21vZGlmaWVkID0gVHJ1ZQorKyAgICAgICAgaWYgcmVt b3ZlX2VuZ2luZSAhPSBOb25lIGFuZCByZW1vdmVfZW5naW5lLm5hbWUgIT0gInhrYjpsYXlvdXQ6 bm9uZSI6CisrICAgICAgICAgICAgc2VsZi5fX3ByZWxvYWRfeGtiX2VuZ2luZXMucmVtb3ZlKHJl bW92ZV9lbmdpbmUpCisrICAgICAgICAgICAgc2VsZi5fX290aGVyX3hrYl9lbmdpbmVzLmFwcGVu ZChyZW1vdmVfZW5naW5lKQorKyAgICAgICAgICAgIGlzX21vZGlmaWVkID0gVHJ1ZQorKyAgICAg ICAgaWYgaXNfbW9kaWZpZWQgPT0gRmFsc2U6CisrICAgICAgICAgICAgcmV0dXJuCisrICAgICAg ICBzZWxmLl9fY29tYm9ib3hfYWRkX2xheW91dC5zZXRfZW5naW5lcyhzZWxmLl9fb3RoZXJfeGti X2VuZ2luZXMpCisrICAgICAgICBzZWxmLl9fY29tYm9ib3hfcmVtb3ZlX2xheW91dC5zZXRfZW5n aW5lcyhzZWxmLl9fcHJlbG9hZF94a2JfZW5naW5lcykKKysgICAgICAgIGVuZ2luZV9saXN0ID0g W10KKysgICAgICAgIGZvciBlbmdpbmUgaW4gc2VsZi5fX3ByZWxvYWRfeGtiX2VuZ2luZXM6Cisr ICAgICAgICAgICAgaWYgbm90IGVuZ2luZS5uYW1lLnN0YXJ0c3dpdGgoInhrYjpsYXlvdXQ6Iik6 CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlCisrICAgICAgICAgICAgaWYgZW5naW5lLm5hbWUg PT0gInhrYjpsYXlvdXQ6bm9uZSI6CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlCisrICAgICAg ICAgICAgc3ViX25hbWUgPSBlbmdpbmUubmFtZVtsZW4oInhrYjpsYXlvdXQ6Iik6XQorKyAgICAg ICAgICAgIGxheW91dF9saXN0ID0gc3ViX25hbWUuc3BsaXQoJzonKQorKyAgICAgICAgICAgIGlm IGxlbihsYXlvdXRfbGlzdCkgPiAxOgorKyAgICAgICAgICAgICAgICBsYXlvdXQgPSAiJXMoJXMp IiAlIChsYXlvdXRfbGlzdFswXSwgbGF5b3V0X2xpc3RbMV0pCisrICAgICAgICAgICAgZWxzZToK KysgICAgICAgICAgICAgICAgbGF5b3V0ID0gbGF5b3V0X2xpc3RbMF0KKysgICAgICAgICAgICBl bmdpbmVfbGlzdC5hcHBlbmQobGF5b3V0KQorKyAgICAgICAgaWYgbGVuKGVuZ2luZV9saXN0KSA+ IDA6CisrICAgICAgICAgICAgZW5naW5lX2xpc3Quc29ydCgpCisrICAgICAgICAgICAgc2VsZi5f X3hrYmxheW91dGNvbmZpZy5zYXZlX3ByZWxvYWRfbGF5b3V0cyhlbmdpbmVfbGlzdCkKKysKKysg ICAgZGVmIF9fYnV0dG9uX2RlZmF1bHRfc3lzdGVtX2xheW91dF9jYihzZWxmLCBidXR0b24pOgor KyAgICAgICAgc2VsZi5fX2RpYWxvZ19kZWZhdWx0X3N5c3RlbV9sYXlvdXQucnVuKCkKKysgICAg ICAgIHNlbGYuX19kaWFsb2dfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0LmhpZGUoKQorKworKyAgICBk ZWYgX19idXR0b25fZGVmYXVsdF9zeXN0ZW1fbGF5b3V0X2NhbmNlbF9jYihzZWxmLCBidXR0b24p OgorKyAgICAgICAgc2VsZi5fX2RpYWxvZ19kZWZhdWx0X3N5c3RlbV9sYXlvdXQuaGlkZSgpCisr CisrICAgIGRlZiBfX2J1dHRvbl9kZWZhdWx0X3N5c3RlbV9sYXlvdXRfb2tfY2Ioc2VsZiwgYnV0 dG9uKToKKysgICAgICAgIHNlbGYuX19kaWFsb2dfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0LmhpZGUo KQorKyAgICAgICAgbGF5b3V0ID0gImRlZmF1bHQiCisrICAgICAgICBpZiBzZWxmLl9fY29tYm9i b3hfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0LmdldF9zZW5zaXRpdmUoKToKKysgICAgICAgICAgICBl bmdpbmUgPSBzZWxmLl9fY29tYm9ib3hfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0LmdldF9hY3RpdmVf ZW5naW5lKCkKKysgICAgICAgICAgICBpZiBlbmdpbmUgIT0gTm9uZToKKysgICAgICAgICAgICAg ICAgbGF5b3V0ID0gZW5naW5lLmxheW91dAorKyAgICAgICAgZWxpZiBzZWxmLl9fZW50cnlfZGVm YXVsdF9zeXN0ZW1fbGF5b3V0LmdldF9zZW5zaXRpdmUoKToKKysgICAgICAgICAgICBsYXlvdXQg PSBzZWxmLl9fZW50cnlfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0LmdldF90ZXh0KCkKKysgICAgICAg IGlmIGxheW91dCA9PSBOb25lIG9yIGxheW91dCA9PSAiIjoKKysgICAgICAgICAgICBsYXlvdXQg PSAiZGVmYXVsdCIKKysgICAgICAgIHNlbGYuX19jb25maWcuc2V0X3ZhbHVlKCJnZW5lcmFsIiwg ImRlZmF1bHRfc3lzdGVtX2xheW91dCIsIGxheW91dCkKKysgICAgICAgIGlmIGxheW91dCA9PSAi ZGVmYXVsdCI6CisrICAgICAgICAgICAgbGF5b3V0ID0gXygiRGVmYXVsdCIpCisrICAgICAgICBz ZWxmLl9fYnV0dG9uX2RlZmF1bHRfc3lzdGVtX2xheW91dC5zZXRfbGFiZWwobGF5b3V0KQorKwor KyAgICBkZWYgX19yYWRpb2J1dHRvbl9kZWZhdWx0X3N5c3RlbV9sYXlvdXRfY2Ioc2VsZiwgYnV0 dG9uKToKKysgICAgICAgIGlmIGJ1dHRvbi5nZXRfYWN0aXZlKCkgIT0gVHJ1ZToKKysgICAgICAg ICAgICByZXR1cm4KKysgICAgICAgIGlmIGJ1dHRvbi5uYW1lID09ICJyYWRpb2J1dHRvbl9jb21i b2JveF9kZWZhdWx0X3N5c3RlbV9sYXlvdXQiOgorKyAgICAgICAgICAgIHNlbGYuX19jb21ib2Jv eF9kZWZhdWx0X3N5c3RlbV9sYXlvdXQuc2V0X3NlbnNpdGl2ZShUcnVlKQorKyAgICAgICAgICAg IHNlbGYuX19lbnRyeV9kZWZhdWx0X3N5c3RlbV9sYXlvdXQuc2V0X3NlbnNpdGl2ZShGYWxzZSkK KysgICAgICAgIGVsaWYgYnV0dG9uLm5hbWUgPT0gInJhZGlvYnV0dG9uX2VudHJ5X2RlZmF1bHRf c3lzdGVtX2xheW91dCI6CisrICAgICAgICAgICAgc2VsZi5fX2NvbWJvYm94X2RlZmF1bHRfc3lz dGVtX2xheW91dC5zZXRfc2Vuc2l0aXZlKEZhbHNlKQorKyAgICAgICAgICAgIHNlbGYuX19lbnRy eV9kZWZhdWx0X3N5c3RlbV9sYXlvdXQuc2V0X3NlbnNpdGl2ZShUcnVlKQorKworICAgICBkZWYg X19pbml0X2J1cyhzZWxmKToKKyAgICAgICAgIHRyeToKKyAgICAgICAgICAgICBzZWxmLl9fYnVz ID0gaWJ1cy5CdXMoKQorQEAgLTQzOSw2ICs2NjIsNyBAQCBjbGFzcyBTZXR1cChvYmplY3QpOgor ICAgICBkZWYgX19jaGVja2J1dHRvbl91c2Vfc3lzX2xheW91dF90b2dnbGVkX2NiKHNlbGYsIGJ1 dHRvbik6CisgICAgICAgICB2YWx1ZSA9IHNlbGYuX19jaGVja2J1dHRvbl91c2Vfc3lzX2xheW91 dC5nZXRfYWN0aXZlKCkKKyAgICAgICAgIHNlbGYuX19jb25maWcuc2V0X3ZhbHVlKCJnZW5lcmFs IiwgInVzZV9zeXN0ZW1fa2V5Ym9hcmRfbGF5b3V0IiwgdmFsdWUpCisrICAgICAgICBzZWxmLl9f YnV0dG9uX2RlZmF1bHRfc3lzdGVtX2xheW91dC5zZXRfc2Vuc2l0aXZlKHZhbHVlKQorIAorICAg ICBkZWYgX19jaGVja2J1dHRvbl91c2VfZ2xvYmFsX2VuZ2luZV90b2dnbGVkX2NiKHNlbGYsIGJ1 dHRvbik6CisgICAgICAgICB2YWx1ZSA9IHNlbGYuX19jaGVja2J1dHRvbl91c2VfZ2xvYmFsX2Vu Z2luZS5nZXRfYWN0aXZlKCkKK2RpZmYgLS1naXQgYS9zZXR1cC9zZXR1cC51aSBiL3NldHVwL3Nl dHVwLnVpCitpbmRleCAwZTMxYTc4Li5jYjI3NWE5IDEwMDY0NAorLS0tIGEvc2V0dXAvc2V0dXAu dWkKKysrKyBiL3NldHVwL3NldHVwLnVpCitAQCAtMTI5LDcgKzEyOSw2IEBACisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ibGFiZWw5Ij4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1 ZTwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9InNlbnNpdGl2ZSI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b29sdGlwX3RleHQiIHRyYW5zbGF0 YWJsZT0ieWVzIj5UaGUgc2hvcnRjdXQga2V5cyBmb3Igc3dpdGNoaW5nIHRvIHByZXZpb3VzIGlu cHV0IG1ldGhvZCBpbiB0aGUgbGlzdDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0 cmFuc2xhdGFibGU9InllcyI+UHJldmlvdXMgaW5wdXQgbWV0aG9kOjwvcHJvcGVydHk+CitAQCAt MjE2LDcgKzIxNSw2IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNo aWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFz cz0iR3RrRW50cnkiIGlkPSJlbnRyeV9wcmV2X2VuZ2luZSI+CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9w ZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9InNlbnNpdGl2ZSI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9w ZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImVkaXRhYmxlIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8L29iamVjdD4KK0BAIC0yMjgsNyArMjI2LDYgQEAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0J1dHRvbiIg aWQ9ImJ1dHRvbl9wcmV2X2VuZ2luZSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPi4uLjwv cHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNlbnNpdGl2ZSI+RmFsc2U8L3By b3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlY2VpdmVzX2RlZmF1bHQiPkZh bHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9InVzZV91bmRlcmxpbmUiPlRydWU8L3Byb3BlcnR5PgorQEAgLTU1MCw2 ICs1NDcsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9Im9yaWVudGF0aW9uIj52ZXJ0aWNhbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+NTwvcHJvcGVydHk+CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGF5b3V0X3N0eWxl Ij5zdGFydDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0ibm9fc2hvd19hbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCdXR0b24iIGlkPSJidXR0b25fZW5naW5lX2FkZCI+Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVs Ij5ndGstYWRkPC9wcm9wZXJ0eT4KK0BAIC02MzAsNiArNjI4LDIyIEBACisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj40PC9wcm9w ZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxjaGlsZD4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPG9iamVjdCBjbGFzcz0iR3RrQnV0dG9uIiBpZD0iYnV0dG9uX2NvbmZpZ19sYXlvdXRzIj4K KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFi ZWwiPkNvbmZpZ3VyZSBfTGF5b3V0czwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5Pgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZW5z aXRpdmUiPkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVjZWl2ZXNfZGVm YXVsdCI+VHJ1ZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9InRvb2x0aXBfdGV4dCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPkNvbmZp Z3VyZSBrZXlib2FyZCBsYXlvdXRzPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX3VuZGVybGluZSI+VHJ1ZTwvcHJvcGVy dHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVy dHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjU8L3Byb3BlcnR5PgorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2Jq ZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgPC9vYmplY3Q+CitAQCAtNzI5LDYgKzc0Myw3IEBAIFlvdSBtYXkgdXNl IHVwL2Rvd24gYnV0dG9ucyB0byBjaGFuZ2UgaXQuJmx0Oy9pJmd0OyZsdDsvc21hbGwmZ3Q7PC9w cm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj52ZXJ0aWNhbDwvcHJvcGVy dHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 InNwYWNpbmciPjY8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJub19zaG93X2FsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2hlY2tCdXR0b24iIGlkPSJj aGVja2J1dHRvbl91c2Vfc3lzX2xheW91dCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlVz ZSBzeXN0ZW0ga2V5Ym9hcmQgbGF5b3V0PC9wcm9wZXJ0eT4KK0BAIC03NDQsNiArNzU5LDQzIEBA IFlvdSBtYXkgdXNlIHVwL2Rvd24gYnV0dG9ucyB0byBjaGFuZ2UgaXQuJmx0Oy9pJmd0OyZsdDsv c21hbGwmZ3Q7PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxjaGlsZD4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxvYmplY3QgY2xhc3M9Ikd0a0hCb3giIGlkPSJoYm94X2RlZmF1bHRfc3lzdGVtX2xheW91dCI+ CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjY8L3Byb3BlcnR5PgorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlk PSJsYWJlbDE4Ij4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJh bnNsYXRhYmxlPSJ5ZXMiPlN5c3RlbSBMYXlvdXQ6PC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VfbWFya3Vw Ij5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJqdXN0aWZ5Ij5jZW50ZXI8L3Byb3BlcnR5PgorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+ RmFsc2U8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlv biI+MDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC9wYWNraW5nPgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 L2NoaWxkPgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+ CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFz cz0iR3RrQnV0dG9uIiBpZD0iYnV0dG9uX2RlZmF1bHRfc3lzdGVtX2xheW91dCI+CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFi ZWwiPjwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2Zv Y3VzIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWNlaXZlc19kZWZhdWx0Ij5GYWxzZTwvcHJvcGVy dHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+ CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+RmFsc2U8L3Byb3BlcnR5Pgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9InBvc2l0aW9uIj4xPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8L3BhY2tpbmc+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvY2hpbGQ+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8L29iamVjdD4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNr aW5nPgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5GYWxzZTwvcHJvcGVydHk+Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJw b3NpdGlvbiI+MTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8L3BhY2tpbmc+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9j aGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDwvb2JqZWN0PgorQEAgLTk0Miw0ICs5OTQsMjQ2IEBAIEhvbWVwYWdlOiBo dHRwOi8vY29kZS5nb29nbGUuY29tL3AvaWJ1cworICAgICAgIDwvb2JqZWN0PgorICAgICA8L2No aWxkPgorICAgPC9vYmplY3Q+CisrICA8b2JqZWN0IGNsYXNzPSJHdGtEaWFsb2ciIGlkPSJkaWFs b2dfY29uZmlnX2xheW91dHMiPgorKyAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0 YWJsZT0ieWVzIj5MYXlvdXRzIFNldHVwPC9wcm9wZXJ0eT4KKysgICAgPHByb3BlcnR5IG5hbWU9 Imljb25fbmFtZSI+aWJ1cy1zZXR1cDwvcHJvcGVydHk+CisrICAgIDxjaGlsZCBpbnRlcm5hbC1j aGlsZD0idmJveCI+CisrICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVkJveCIgaWQ9InZib3gxMDEi PgorKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj52ZXJ0aWNhbDwvcHJvcGVy dHk+CisrICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Cisr ICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm9yZGVyLXdpZHRoIj4xMDwvcHJvcGVydHk+CisrICAg ICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+MTI8L3Byb3BlcnR5PgorKyAgICAgICAgPGNo aWxkPgorKyAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUYWJsZSIgaWQ9InRhYmxlMTAxIj4K KysgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Cisr ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5fcm93cyI+MjwvcHJvcGVydHk+CisrICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9Im5fY29sdW1ucyI+MjwvcHJvcGVydHk+CisrICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9ImNvbHVtbl9zcGFjaW5nIj4xMjwvcHJvcGVydHk+CisrICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9InJvd19zcGFjaW5nIj42PC9wcm9wZXJ0eT4KKysgICAgICAg ICAgICA8Y2hpbGQ+CisrICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9 ImxhYmVsMTAxIj4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRy dWU8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRy YW5zbGF0YWJsZT0ieWVzIj5BZGQgTGF5b3V0OjwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ0b29sdGlwX3RleHQiIHRyYW5zbGF0YWJsZT0ieWVzIj5BZGQgbGF5 b3V0PC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+ MDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICA8L29iamVjdD4KKysgICAgICAgICAgICAgIDxw YWNraW5nPgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieF9vcHRpb25zIj5HVEtf RklMTDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlv bnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgIDwvcGFja2luZz4KKysgICAg ICAgICAgICA8L2NoaWxkPgorKyAgICAgICAgICAgIDxjaGlsZD4KKysgICAgICAgICAgICAgIDxv YmplY3QgY2xhc3M9Ikd0a0FsaWdubWVudCIgaWQ9ImFsaWdubWVudDEwMSI+CisrICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAg ICAgICAgICAgPGNoaWxkPgorKyAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9IkVuZ2lu ZUNvbWJvQm94IiBpZD0iY29tYm9ib3hfYWRkX2xheW91dF9lbmdpbmVzIj4KKysgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorKyAgICAg ICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAgICAgICAgICAgICA8L2NoaWxkPgorKyAgICAg ICAgICAgICAgPC9vYmplY3Q+CisrICAgICAgICAgICAgICA8cGFja2luZz4KKysgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KKysgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+CisrICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0 eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8 L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorKyAgICAgICAgICAgIDwvY2hp bGQ+CisrICAgICAgICAgICAgPGNoaWxkPgorKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0i R3RrTGFiZWwiIGlkPSJsYWJlbDEwMiI+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+UmVtb3ZlIExheW91dDo8L3Byb3BlcnR5Pgor KyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9vbHRpcF90ZXh0IiB0cmFuc2xhdGFi bGU9InllcyI+UmVtb3ZlIGxheW91dDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgPC9vYmplY3Q+ CisrICAgICAgICAgICAgICA8cGFja2luZz4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9InRvcF9hdHRhY2giPjE8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0iYm90dG9tX2F0dGFjaCI+MjwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgorKyAgICAg ICAgICAgICAgPC9wYWNraW5nPgorKyAgICAgICAgICAgIDwvY2hpbGQ+CisrICAgICAgICAgICAg PGNoaWxkPgorKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQWxpZ25tZW50IiBpZD0i YWxpZ25tZW50MTAyIj4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUi PlRydWU8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8Y2hpbGQ+CisrICAgICAgICAgICAg ICAgICAgPG9iamVjdCBjbGFzcz0iRW5naW5lQ29tYm9Cb3giIGlkPSJjb21ib2JveF9yZW1vdmVf bGF5b3V0X2VuZ2luZXMiPgorKyAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlz aWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisrICAg ICAgICAgICAgICAgIDwvY2hpbGQ+CisrICAgICAgICAgICAgICA8L29iamVjdD4KKysgICAgICAg ICAgICAgIDxwYWNraW5nPgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGVmdF9h dHRhY2giPjE8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmln aHRfYXR0YWNoIj4yPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 InRvcF9hdHRhY2giPjE8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iYm90dG9tX2F0dGFjaCI+MjwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgorKyAgICAgICAg ICAgICAgPC9wYWNraW5nPgorKyAgICAgICAgICAgIDwvY2hpbGQ+CisrICAgICAgICAgIDwvb2Jq ZWN0PgorKyAgICAgICAgICA8cGFja2luZz4KKysgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i ZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBv c2l0aW9uIj4wPC9wcm9wZXJ0eT4KKysgICAgICAgICAgPC9wYWNraW5nPgorKyAgICAgICAgPC9j aGlsZD4KKysgICAgICAgIDxjaGlsZCBpbnRlcm5hbC1jaGlsZD0iYWN0aW9uX2FyZWEiPgorKyAg ICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtIQnV0dG9uQm94IiBpZD0iaGJ1dHRvbmJveDEwMSI+ CisrICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5Pgor KyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJob21vZ2VuZW91cyI+VHJ1ZTwvcHJvcGVydHk+ CisrICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxheW91dF9zdHlsZSI+ZW5kPC9wcm9wZXJ0 eT4KKysgICAgICAgICAgICA8Y2hpbGQ+CisrICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJH dGtCdXR0b24iIGlkPSJidXR0b25fY29uZmlnX2xheW91dHNfY2FuY2VsIj4KKysgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIj5ndGstY2FuY2VsPC9wcm9wZXJ0eT4KKysgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorKyAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX3N0b2NrIj5UcnVlPC9wcm9wZXJ0eT4K KysgICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisrICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKysg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KKysg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4wPC9wcm9wZXJ0eT4KKysg ICAgICAgICAgICAgIDwvcGFja2luZz4KKysgICAgICAgICAgICA8L2NoaWxkPgorKyAgICAgICAg ICAgIDxjaGlsZD4KKysgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0J1dHRvbiIgaWQ9 ImJ1dHRvbl9jb25maWdfbGF5b3V0c19vayI+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJsYWJlbCI+Z3RrLW9rPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0idXNlX3N0b2NrIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9InJlY2VpdmVzX2RlZmF1bHQiPlRydWU8L3Byb3BlcnR5PgorKyAgICAgICAg ICAgICAgPC9vYmplY3Q+CisrICAgICAgICAgICAgICA8cGFja2luZz4KKysgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorKyAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+RmFsc2U8L3Byb3BlcnR5PgorKyAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjE8L3Byb3BlcnR5PgorKyAgICAgICAgICAg ICAgPC9wYWNraW5nPgorKyAgICAgICAgICAgIDwvY2hpbGQ+CisrICAgICAgICAgIDwvb2JqZWN0 PgorKyAgICAgICAgICA8cGFja2luZz4KKysgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhw YW5kIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwi PkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icGFja190eXBl Ij5lbmQ8L3Byb3BlcnR5PgorKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+ MTwvcHJvcGVydHk+CisrICAgICAgICAgIDwvcGFja2luZz4KKysgICAgICAgIDwvY2hpbGQ+Cisr ICAgICAgPC9vYmplY3Q+CisrICAgIDwvY2hpbGQ+CisrICA8L29iamVjdD4KKysgIDxvYmplY3Qg Y2xhc3M9Ikd0a0RpYWxvZyIgaWQ9ImRpYWxvZ19kZWZhdWx0X3N5c3RlbV9sYXlvdXQiPgorKyAg ICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5EZWZhdWx0IFN5c3Rl bSBMYXlvdXQgU2V0dXA8L3Byb3BlcnR5PgorKyAgICA8cHJvcGVydHkgbmFtZT0iaWNvbl9uYW1l Ij5pYnVzLXNldHVwPC9wcm9wZXJ0eT4KKysgICAgPGNoaWxkIGludGVybmFsLWNoaWxkPSJ2Ym94 Ij4KKysgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtWQm94IiBpZD0idmJveDIwMSI+CisrICAgICAg ICA8cHJvcGVydHkgbmFtZT0ib3JpZW50YXRpb24iPnZlcnRpY2FsPC9wcm9wZXJ0eT4KKysgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJib3JkZXItd2lkdGgiPjEwPC9wcm9wZXJ0eT4KKysgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJzcGFjaW5nIj4xMjwvcHJvcGVydHk+CisrICAgICAgICA8Y2hpbGQ+CisrICAg ICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RhYmxlIiBpZD0idGFibGUyMDEiPgorKyAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0ibl9yb3dzIj4yPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0ibl9jb2x1bW5zIj4yPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0iY29sdW1uX3NwYWNpbmciPjEyPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0icm93X3NwYWNpbmciPjY8L3Byb3BlcnR5PgorKyAgICAgICAgICAgIDxjaGls ZD4KKysgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1JhZGlvQnV0dG9uIiBpZD0icmFk aW9idXR0b25fY29tYm9ib3hfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0Ij4KKysgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorKyAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5DaG9vc2UgRnJv bTo8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9vbHRpcF90 ZXh0IiB0cmFuc2xhdGFibGU9InllcyI+Y2hvb3NlIGRlZmF1bHQga2V5Ym9hcmQgZnJvbSBsaXN0 PC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAgICAgICAgICAgPHBh Y2tpbmc+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19G SUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9u cyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorKyAgICAg ICAgICAgIDwvY2hpbGQ+CisrICAgICAgICAgICAgPGNoaWxkPgorKyAgICAgICAgICAgICAgPG9i amVjdCBjbGFzcz0iR3RrQWxpZ25tZW50IiBpZD0iYWxpZ25tZW50MjAxIj4KKysgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorKyAgICAgICAg ICAgICAgICA8Y2hpbGQ+CisrICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iRW5naW5l Q29tYm9Cb3giIGlkPSJjb21ib2JveF9kZWZhdWx0X3N5c3RlbV9sYXlvdXRfZW5naW5lcyI+Cisr ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVy dHk+CisrICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisrICAgICAgICAgICAgICAgIDwvY2hp bGQ+CisrICAgICAgICAgICAgICA8L29iamVjdD4KKysgICAgICAgICAgICAgIDxwYWNraW5nPgor KyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGVmdF9hdHRhY2giPjE8L3Byb3BlcnR5 PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmlnaHRfYXR0YWNoIj4yPC9wcm9w ZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inhfb3B0aW9ucyI+R1RLX0ZJ TEw8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25z Ij5HVEtfRklMTDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICA8L3BhY2tpbmc+CisrICAgICAg ICAgICAgPC9jaGlsZD4KKysgICAgICAgICAgICA8Y2hpbGQ+CisrICAgICAgICAgICAgICA8b2Jq ZWN0IGNsYXNzPSJHdGtSYWRpb0J1dHRvbiIgaWQ9InJhZGlvYnV0dG9uX2VudHJ5X2RlZmF1bHRf c3lzdGVtX2xheW91dCI+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxl Ij5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVs IiB0cmFuc2xhdGFibGU9InllcyI+TWFudWFsIFR5cGU6PC9wcm9wZXJ0eT4KKysgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2x0aXBfdGV4dCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlR5 cGUgZGVmYXVsdCBrZXlib2FyZCBsYXlvdXQgYnkgbWFudWFsIChjb21tYS1zZXBhcmF0ZWQgdmFs dWVzKTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJncm91cCI+ cmFkaW9idXR0b25fY29tYm9ib3hfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0PC9wcm9wZXJ0eT4KKysg ICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisrICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KKysgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjI8L3Byb3BlcnR5Pgor KyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieF9vcHRpb25zIj5HVEtfRklMTDwvcHJv cGVydHk+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19G SUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgIDwvcGFja2luZz4KKysgICAgICAgICAgICA8 L2NoaWxkPgorKyAgICAgICAgICAgIDxjaGlsZD4KKysgICAgICAgICAgICAgIDxvYmplY3QgY2xh c3M9Ikd0a0VudHJ5IiBpZD0iZW50cnlfZGVmYXVsdF9zeXN0ZW1fbGF5b3V0Ij4KKysgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorKyAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKysg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVkaXRhYmxlIj5UcnVlPC9wcm9wZXJ0eT4K KysgICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisrICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MTwvcHJvcGVydHk+Cisr ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyaWdodF9hdHRhY2giPjI8L3Byb3BlcnR5 PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9wX2F0dGFjaCI+MTwvcHJvcGVy dHk+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJib3R0b21fYXR0YWNoIj4yPC9w cm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inhfb3B0aW9ucyI+R1RL X0ZJTEw8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRp b25zIj5HVEtfRklMTDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICA8L3BhY2tpbmc+CisrICAg ICAgICAgICAgPC9jaGlsZD4KKysgICAgICAgICAgPC9vYmplY3Q+CisrICAgICAgICAgIDxwYWNr aW5nPgorKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0 eT4KKysgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjA8L3Byb3BlcnR5Pgor KyAgICAgICAgICA8L3BhY2tpbmc+CisrICAgICAgICA8L2NoaWxkPgorKyAgICAgICAgPGNoaWxk IGludGVybmFsLWNoaWxkPSJhY3Rpb25fYXJlYSI+CisrICAgICAgICAgIDxvYmplY3QgY2xhc3M9 Ikd0a0hCdXR0b25Cb3giIGlkPSJoYnV0dG9uYm94MjAxIj4KKysgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImhvbW9nZW5lb3VzIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0ibGF5b3V0X3N0eWxlIj5lbmQ8L3Byb3BlcnR5PgorKyAgICAgICAgICAgIDxjaGls ZD4KKysgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0J1dHRvbiIgaWQ9ImJ1dHRvbl9k ZWZhdWx0X3N5c3RlbV9sYXlvdXRfY2FuY2VsIj4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImxhYmVsIj5ndGstY2FuY2VsPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0idXNlX3N0b2NrIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAg IDwvb2JqZWN0PgorKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisrICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4wPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgIDwv cGFja2luZz4KKysgICAgICAgICAgICA8L2NoaWxkPgorKyAgICAgICAgICAgIDxjaGlsZD4KKysg ICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0J1dHRvbiIgaWQ9ImJ1dHRvbl9kZWZhdWx0 X3N5c3RlbV9sYXlvdXRfb2siPgorKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFi ZWwiPmd0ay1vazwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2 aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 InVzZV9zdG9jayI+VHJ1ZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJyZWNlaXZlc19kZWZhdWx0Ij5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgIDwv b2JqZWN0PgorKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisrICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9ImZpbGwiPkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9InBvc2l0aW9uIj4xPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgIDwvcGFj a2luZz4KKysgICAgICAgICAgICA8L2NoaWxkPgorKyAgICAgICAgICA8L29iamVjdD4KKysgICAg ICAgICAgPHBhY2tpbmc+CisrICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFs c2U8L3Byb3BlcnR5PgorKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5GYWxzZTwv cHJvcGVydHk+CisrICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBhY2tfdHlwZSI+ZW5kPC9w cm9wZXJ0eT4KKysgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjE8L3Byb3Bl cnR5PgorKyAgICAgICAgICA8L3BhY2tpbmc+CisrICAgICAgICA8L2NoaWxkPgorKyAgICAgIDwv b2JqZWN0PgorKyAgICA8L2NoaWxkPgorKyAgPC9vYmplY3Q+CisgPC9pbnRlcmZhY2U+CitkaWZm IC0tZ2l0IGEvc3JjL2lidXNmYWN0b3J5LmMgYi9zcmMvaWJ1c2ZhY3RvcnkuYworaW5kZXggZTBl YzJhNS4uYzcwYmZkZSAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzZmFjdG9yeS5jCisrKysgYi9zcmMv aWJ1c2ZhY3RvcnkuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAgICAoR19UWVBFX0lOU1RBTkNFX0dF VF9QUklWQVRFICgobyksIElCVVNfVFlQRV9GQUNUT1JZLCBJQnVzRmFjdG9yeVByaXZhdGUpKQor IAorIGVudW0geworKyAgICBMT09LVVBfRU5HSU5FX05BTUUsCisgICAgIExBU1RfU0lHTkFMLAor IH07CisgCitAQCAtNDUsNiArNDYsOCBAQCBzdHJ1Y3QgX0lCdXNGYWN0b3J5UHJpdmF0ZSB7Cisg fTsKKyB0eXBlZGVmIHN0cnVjdCBfSUJ1c0ZhY3RvcnlQcml2YXRlIElCdXNGYWN0b3J5UHJpdmF0 ZTsKKyAKKytzdGF0aWMgZ3VpbnQgICAgICAgICAgICBmYWN0b3J5X3NpZ25hbHNbTEFTVF9TSUdO QUxdID0geyAwIH07CisrCisgLyogZnVuY3Rpb25zIHByb3RvdHlwZSAqLworIHN0YXRpYyB2b2lk ICAgICBpYnVzX2ZhY3RvcnlfZGVzdHJveSAgICAgICAgKElCdXNGYWN0b3J5ICAgICAgICAqZmFj dG9yeSk7Cisgc3RhdGljIHZvaWQgICAgIGlidXNfZmFjdG9yeV9zZXRfcHJvcGVydHkgICAoSUJ1 c0ZhY3RvcnkgICAgICAgICplbmdpbmUsCitAQCAtMTExLDcgKzExNCwxNiBAQCBpYnVzX2ZhY3Rv cnlfY2xhc3NfaW5pdCAoSUJ1c0ZhY3RvcnlDbGFzcyAqa2xhc3MpCisgICAgICAgICAgICAgICAg IElCVVNfVFlQRV9DT05ORUNUSU9OLAorICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklU RSB8ICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7CisgCistCisrICAgIGZhY3Rvcnlfc2lnbmFs c1tMT09LVVBfRU5HSU5FX05BTUVdID0KKysgICAgICAgIGdfc2lnbmFsX25ldyAoSV8oImxvb2t1 cC1lbmdpbmUtbmFtZSIpLAorKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChnb2JqZWN0 X2NsYXNzKSwKKysgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKysgICAgICAgICAgICBH X1NUUlVDVF9PRkZTRVQgKElCdXNGYWN0b3J5Q2xhc3MsIGxvb2t1cF9lbmdpbmVfbmFtZSksCisr ICAgICAgICAgICAgTlVMTCwgTlVMTCwKKysgICAgICAgICAgICBpYnVzX21hcnNoYWxfVk9JRF9f U1RSSU5HLAorKyAgICAgICAgICAgIEdfVFlQRV9OT05FLAorKyAgICAgICAgICAgIDEsCisrICAg ICAgICAgICAgR19UWVBFX1NUUklORyk7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtMjQ1LDYg KzI1Nyw5IEBAIGlidXNfZmFjdG9yeV9pYnVzX21lc3NhZ2UgKElCdXNGYWN0b3J5ICAgICpmYWN0 b3J5LAorICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgfQorIAorKyAgICAgICAg Z19zaWduYWxfZW1pdCAoZmFjdG9yeSwgZmFjdG9yeV9zaWduYWxzW0xPT0tVUF9FTkdJTkVfTkFN RV0sCisrICAgICAgICAgICAgICAgICAgICAgICAwLCBlbmdpbmVfbmFtZSk7CisrCisgICAgICAg ICBlbmdpbmVfdHlwZSA9IChHVHlwZSApZ19oYXNoX3RhYmxlX2xvb2t1cCAocHJpdi0+ZW5naW5l X3RhYmxlLCBlbmdpbmVfbmFtZSk7CisgCisgICAgICAgICBpZiAoZW5naW5lX3R5cGUgPT0gR19U WVBFX0lOVkFMSUQpIHsKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2ZhY3RvcnkuaCBiL3NyYy9pYnVz ZmFjdG9yeS5oCitpbmRleCBlOTJjODEwLi41NzBlNDY0IDEwMDY0NAorLS0tIGEvc3JjL2lidXNm YWN0b3J5LmgKKysrKyBiL3NyYy9pYnVzZmFjdG9yeS5oCitAQCAtMTE3LDEwICsxMTcsMTMgQEAg c3RydWN0IF9JQnVzRmFjdG9yeUNsYXNzIHsKKyAgICAgSUJ1c1NlcnZpY2VDbGFzcyBwYXJlbnQ7 CisgCisgICAgIC8qIHNpZ25hbHMgKi8KKysgICAgdm9pZCAgICAgICAgKCogbG9va3VwX2VuZ2lu ZV9uYW1lKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzRmFjdG9y eSAgICAqZmFjdG9yeSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgZ2NoYXIgICAgKmVuZ2luZV9uYW1lKTsKKyAKKyAgICAgLyo8IHByaXZhdGUgPiovCisgICAg IC8qIHBhZGRpbmcgKi8KKy0gICAgZ3BvaW50ZXIgcGR1bW15WzhdOworKyAgICBncG9pbnRlciBw ZHVtbXlbN107CisgfTsKKyAKKyAvKioKK2RpZmYgLS1naXQgYS91aS9ndGsvcGFuZWwucHkgYi91 aS9ndGsvcGFuZWwucHkKK2luZGV4IDBlZmM4NWIuLmMwMTFmNDkgMTAwNjQ0CistLS0gYS91aS9n dGsvcGFuZWwucHkKKysrKyBiL3VpL2d0ay9wYW5lbC5weQorQEAgLTEyMSw2ICsxMjEsMTQgQEAg Y2xhc3MgUGFuZWwoaWJ1cy5QYW5lbEJhc2UpOgorICAgICAgICAgc2VsZi5fX2NvbmZpZ19sb2Fk X3Nob3dfaW1fbmFtZSgpCisgICAgICAgICAjIHNlbGYuX19idXMucmVxdWVzdF9uYW1lKGlidXMu cGFuZWwuSUJVU19TRVJWSUNFX1BBTkVMLCAwKQorIAorKyAgICAgICAgIyBpbml0IHhrYgorKyAg ICAgICAgc2VsZi5fX3hrYmxheW91dCA9IGlidXMuWEtCTGF5b3V0KHNlbGYuX19jb25maWcpCisr ICAgICAgICB2YWx1ZSA9IHN0cihzZWxmLl9fY29uZmlnLmdldF92YWx1ZSgiZ2VuZXJhbCIsICJk ZWZhdWx0X3N5c3RlbV9sYXlvdXQiLCAnJykpCisrICAgICAgICBpZiB2YWx1ZSA9PSAnJzoKKysg ICAgICAgICAgICB2YWx1ZSA9ICdkZWZhdWx0JworKyAgICAgICAgaWYgdmFsdWUgIT0gJ2RlZmF1 bHQnOgorKyAgICAgICAgICAgIHNlbGYuX194a2JsYXlvdXQuc2V0X2RlZmF1bHRfbGF5b3V0KHZh bHVlKQorKworICAgICBkZWYgc2V0X2N1cnNvcl9sb2NhdGlvbihzZWxmLCB4LCB5LCB3LCBoKToK KyAgICAgICAgIHNlbGYuX19jYW5kaWRhdGVfcGFuZWwuc2V0X2N1cnNvcl9sb2NhdGlvbih4ICsg dywgeSArIGgpCisgCitAQCAtMjA1LDE0ICsyMTMsMjAgQEAgY2xhc3MgUGFuZWwoaWJ1cy5QYW5l bEJhc2UpOgorICAgICAgICAgaWYgbm90IGVuYWJsZWQ6CisgICAgICAgICAgICAgc2VsZi5fX3Nl dF9pbV9pY29uKElDT05fS0VZQk9BUkQpCisgICAgICAgICAgICAgc2VsZi5fX3NldF9pbV9uYW1l KE5vbmUpCisrICAgICAgICAgICAgaWYgc2VsZi5fX2J1cy5nZXRfdXNlX3N5c19sYXlvdXQoKToK KysgICAgICAgICAgICAgICAgc2VsZi5fX3hrYmxheW91dC5zZXRfbGF5b3V0KCkKKyAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgZW5naW5lID0gc2VsZi5fX2ZvY3VzX2ljLmdldF9lbmdpbmUo KQorICAgICAgICAgICAgIGlmIGVuZ2luZToKKyAgICAgICAgICAgICAgICAgc2VsZi5fX3NldF9p bV9pY29uKGVuZ2luZS5pY29uKQorICAgICAgICAgICAgICAgICBzZWxmLl9fc2V0X2ltX25hbWUo ZW5naW5lLmxvbmduYW1lKQorKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fYnVzLmdldF91c2Vf c3lzX2xheW91dCgpOgorKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3hrYmxheW91dC5zZXRf bGF5b3V0KHNlbGYuX19lbmdpbmVfZ2V0X2xheW91dF93cmFwcGVyKGVuZ2luZSkpCisgICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgc2VsZi5fX3NldF9pbV9pY29uKElDT05fS0VZ Qk9BUkQpCisgICAgICAgICAgICAgICAgIHNlbGYuX19zZXRfaW1fbmFtZShOb25lKQorKyAgICAg ICAgICAgICAgICBpZiBzZWxmLl9fYnVzLmdldF91c2Vfc3lzX2xheW91dCgpOgorKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fX3hrYmxheW91dC5zZXRfbGF5b3V0KCkKKyAgICAgICAgIHNlbGYu X19sYW5ndWFnZV9iYXIuZm9jdXNfaW4oKQorIAorICAgICBkZWYgZm9jdXNfb3V0KHNlbGYsIGlj KToKK0BAIC0yMjIsNiArMjM2LDggQEAgY2xhc3MgUGFuZWwoaWJ1cy5QYW5lbEJhc2UpOgorICAg ICAgICAgc2VsZi5fX2xhbmd1YWdlX2Jhci5mb2N1c19vdXQoKQorICAgICAgICAgc2VsZi5fX3Nl dF9pbV9pY29uKElDT05fS0VZQk9BUkQpCisgICAgICAgICBzZWxmLl9fc2V0X2ltX25hbWUoTm9u ZSkKKysgICAgICAgIGlmIHNlbGYuX19idXMuZ2V0X3VzZV9zeXNfbGF5b3V0KCk6CisrICAgICAg ICAgICAgc2VsZi5fX3hrYmxheW91dC5zZXRfbGF5b3V0KCkKKyAKKyAgICAgZGVmIHN0YXRlX2No YW5nZWQoc2VsZik6CisgICAgICAgICBpZiBub3Qgc2VsZi5fX2ZvY3VzX2ljOgorQEAgLTIzNCwx NCArMjUwLDIwIEBAIGNsYXNzIFBhbmVsKGlidXMuUGFuZWxCYXNlKToKKyAgICAgICAgICAgICBz ZWxmLnJlc2V0KCkKKyAgICAgICAgICAgICBzZWxmLl9fc2V0X2ltX2ljb24oSUNPTl9LRVlCT0FS RCkKKyAgICAgICAgICAgICBzZWxmLl9fc2V0X2ltX25hbWUoTm9uZSkKKysgICAgICAgICAgICBp ZiBzZWxmLl9fYnVzLmdldF91c2Vfc3lzX2xheW91dCgpOgorKyAgICAgICAgICAgICAgICBzZWxm Ll9feGtibGF5b3V0LnNldF9sYXlvdXQoKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBl bmdpbmUgPSBzZWxmLl9fZm9jdXNfaWMuZ2V0X2VuZ2luZSgpCisgICAgICAgICAgICAgaWYgZW5n aW5lOgorICAgICAgICAgICAgICAgICBzZWxmLl9fc2V0X2ltX2ljb24oZW5naW5lLmljb24pCisg ICAgICAgICAgICAgICAgIHNlbGYuX19zZXRfaW1fbmFtZShlbmdpbmUubG9uZ25hbWUpCisrICAg ICAgICAgICAgICAgIGlmIHNlbGYuX19idXMuZ2V0X3VzZV9zeXNfbGF5b3V0KCk6CisrICAgICAg ICAgICAgICAgICAgICBzZWxmLl9feGtibGF5b3V0LnNldF9sYXlvdXQoc2VsZi5fX2VuZ2luZV9n ZXRfbGF5b3V0X3dyYXBwZXIoZW5naW5lKSkKKyAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgICBzZWxmLl9fc2V0X2ltX2ljb24oSUNPTl9LRVlCT0FSRCkKKyAgICAgICAgICAgICAg ICAgc2VsZi5fX3NldF9pbV9uYW1lKE5vbmUpCisrICAgICAgICAgICAgICAgIGlmIHNlbGYuX19i dXMuZ2V0X3VzZV9zeXNfbGF5b3V0KCk6CisrICAgICAgICAgICAgICAgICAgICBzZWxmLl9feGti bGF5b3V0LnNldF9sYXlvdXQoKQorIAorIAorICAgICBkZWYgcmVzZXQoc2VsZik6CitAQCAtNTE3 LDQgKzUzOSwxMiBAQCBjbGFzcyBQYW5lbChpYnVzLlBhbmVsQmFzZSk6CisgICAgICAgICAgICAg ICAgIHJldHVybgorICAgICAgICAgICAgIHNlbGYuX19zZXR1cF9waWQgPSAwCisgICAgICAgICBz ZWxmLl9fc2V0dXBfcGlkID0gb3Muc3Bhd25sKG9zLlBfTk9XQUlULCBzZWxmLl9fc2V0dXBfY21k LCAiaWJ1cy1zZXR1cCIpCisrICAgIGRlZiBfX2VuZ2luZV9nZXRfbGF5b3V0X3dyYXBwZXIoc2Vs ZiwgZW5naW5lKToKKysgICAgICAgICMgVGhpcyBjb2RlIGlzIGZvciB0aGUgYmFjayBjb21wYXRp YmlsaXR5LgorKyAgICAgICAgIyBTaG91bGQgd2UgcmVtb3ZlIHRoZSBjb2RlcyBhZnRlciBhbGwg SU0gZW5naW5lcyBhcmUgY2hhbmdlZAorKyAgICAgICAgIyB0byAiZGVmYXVsdCIgbGF5b3V0Pwor KyAgICAgICAgaWYgZW5naW5lLm5hbWUgIT0gTm9uZSBhbmQgZW5naW5lLm5hbWUuc3RhcnRzd2l0 aCgieGtiOmxheW91dDoiKToKKysgICAgICAgICAgICByZXR1cm4gZW5naW5lLmxheW91dAorKyAg ICAgICAgZWxzZToKKysgICAgICAgICAgICByZXR1cm4gImRlZmF1bHQiCisgCitkaWZmIC0tZ2l0 IGEveGtiL01ha2VmaWxlLmFtIGIveGtiL01ha2VmaWxlLmFtCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uNDliODJlYgorLS0tIC9kZXYvbnVsbAorKysrIGIveGtiL01ha2Vm aWxlLmFtCitAQCAtMCwwICsxLDEwNCBAQAorKyMgdmltOnNldCBub2V0IHRzPTQ6CisrIworKyMg aWJ1cyAtIFRoZSBJbnB1dCBCdXMKKysjCisrIyBDb3B5cmlnaHQgKEMpIDIwMTAgVGFrYW8gRnVq aXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrIyBDb3B5cmlnaHQgKGMpIDIwMDct MjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKysjIENvcHlyaWdodCAo YykgMjAwNy0yMDEwIFJlZCBIYXQsIEluYy4KKysjCisrIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrIyBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrIyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysj IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj CisrIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZQorKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1 aXRlIDMzMCwKKysjIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorKworK2xpYmlidXMgPSAk KHRvcF9idWlsZGRpcikvc3JjL2xpYmlidXMubGEKKysKKytJTkNMVURFUyA9IFwKKysgICAgICAg IC1JJCh0b3Bfc3JjZGlyKSBcCisrICAgICAgICAtSSQodG9wX3NyY2Rpcikvc3JjIFwKKysJLURJ QlVTX0xPQ0FMRURJUj1cIiQoZGF0YWRpcikvbG9jYWxlXCIgXAorKwktRExJQkVYRUNESVI9XCIi JChsaWJleGVjZGlyKSJcIiBcCisrICAgICAgICAkKE5VTEwpCisrCisrbm9pbnN0X1BST0dSQU1T ID0gJChURVNUUykKKytsaWJleGVjX1BST0dSQU1TID0KKytFWFRSQV9ESVNUID0KKytESVNUQ0xF QU5GSUxFUyA9CisrCisraWYgRU5BQkxFX1hLQgorK2xpYmV4ZWNfUFJPR1JBTVMgKz0gaWJ1cy14 a2IKKytpYnVzX3hrYl9TT1VSQ0VTID0gXAorKwlpYnVzLXhrYi1tYWluLmMgXAorKwl4a2JsaWIu aCBcCisrCXhrYmxpYi5jIFwKKysJJChOVUxMKQorK2lidXNfeGtiX0NGTEFHUyA9IFwKKysJQFhL Ql9DRkxBR1NAIFwKKysJQFgxMV9DRkxBR1NAIFwKKysJQEdMSUIyX0NGTEFHU0AgXAorKwkkKE5V TEwpCisraWJ1c194a2JfTERBREQgPSBcCisrCUBYS0JfTElCU0AgXAorKwlAWDExX0xJQlNAIFwK KysJQEdMSUIyX0xJQlNAIFwKKysJJChsaWJpYnVzKSBcCisrCSQoTlVMTCkKKysKKytsaWJleGVj X1BST0dSQU1TICs9IGlidXMtZW5naW5lLXhrYgorK2lidXNfZW5naW5lX3hrYl9TT1VSQ0VTID0g XAorKyAgICAgICAgaWJ1cy1lbmdpbmUteGtiLW1haW4uYyBcCisrICAgICAgICBpYnVzLWVuZ2lu ZS14a2ItbWFpbi5oIFwKKysgICAgICAgIHhrYnhtbC5jIFwKKysgICAgICAgIHhrYnhtbC5oIFwK KysgICAgICAgICQoTlVMTCkKKytpYnVzX2VuZ2luZV94a2JfQ0ZMQUdTID0gXAorKwlAR0xJQjJf Q0ZMQUdTQCBcCisrCUBHT0JKRUNUMl9DRkxBR1NAIFwKKysJQEdDT05GX0NGTEFHU0AgXAorKyAg ICAgICAgJChOVUxMKQorK2lidXNfZW5naW5lX3hrYl9MREFERCA9IFwKKysJQEdMSUIyX0xJQlNA IFwKKysJQEdPQkpFQ1QyX0xJQlNAIFwKKysJQEdDT05GX0xJQlNAIFwKKysJJChsaWJpYnVzKSBc CisrICAgICAgICAkKE5VTEwpCisrCisreGtibGF5b3V0ZGlyID0gJChkYXRhZGlyKS9pYnVzL2Nv bXBvbmVudAorK3hrYmxheW91dF9pbl9maWxlcyA9IHhrYmxheW91dC54bWwuaW4KKyt4a2JsYXlv dXRfREFUQSA9ICQoeGtibGF5b3V0X2luX2ZpbGVzOi54bWwuaW49LnhtbCkKKysKKyt4a2JsYXlv dXRjb25maWdkaXIgPSAkKGRhdGFkaXIpL2lidXMveGtiCisreGtibGF5b3V0Y29uZmlnX2luX2Zp bGVzID0geGtibGF5b3V0Y29uZmlnLnhtbC5pbgorK3hrYmxheW91dGNvbmZpZ19EQVRBID0gJCh4 a2JsYXlvdXRjb25maWdfaW5fZmlsZXM6LnhtbC5pbj0ueG1sKQorKworKyUueG1sIDogJS54bWwu aW4KKysJQHNlZCAtZSAic3xcQGxpYmV4ZWNkaXJcQHwkKGxpYmV4ZWNkaXIpfGciIFwKKysJICAg ICAtZSAic3xcQGRhdGFkaXJcQHwkKGRhdGFkaXIpfGciIFwKKysJICAgICAtZSAic3xcQFhLQl9Q UkVMT0FEX0xBWU9VVFNcQHwkKFhLQl9QUkVMT0FEX0xBWU9VVFMpfGciIFwKKysJJDwgPiAkQAor KworK0lOQ0xVREVTICs9IFwKKysJLURYS0JMQVlPVVRDT05GSUdfRklMRT1cIiIkKHhrYmxheW91 dGNvbmZpZ2RpcikvJCh4a2JsYXlvdXRjb25maWdfREFUQSkiXCIgXAorKwkkKE5VTEwpCisrCisr RVhUUkFfRElTVCArPSBcCisrICAgICAgICAkKHhrYmxheW91dF9pbl9maWxlcykgXAorKyAgICAg ICAgJCh4a2JsYXlvdXRjb25maWdfaW5fZmlsZXMpIFwKKysgICAgICAgICQoTlVMTCkKKysKKytE SVNUQ0xFQU5GSUxFUyArPSBcCisrICAgICAgICAkKHhrYmxheW91dF9EQVRBKSBcCisrICAgICAg ICAkKHhrYmxheW91dGNvbmZpZ19EQVRBKSBcCisrICAgICAgICAkKE5VTEwpCisrCisrZW5kaWYK K2RpZmYgLS1naXQgYS94a2IvaWJ1cy1lbmdpbmUteGtiLW1haW4uYyBiL3hrYi9pYnVzLWVuZ2lu ZS14a2ItbWFpbi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uN2ZkNmE3 ZgorLS0tIC9kZXYvbnVsbAorKysrIGIveGtiL2lidXMtZW5naW5lLXhrYi1tYWluLmMKK0BAIC0w LDAgKzEsMzk2IEBACisrLyogdmltOnNldCBldCBzdHM9NDogKi8KKysvKiBidXMgLSBUaGUgSW5w dXQgQnVzCisrICogQ29weXJpZ2h0IChDKSAyMDEwIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFBlbmcgSHVhbmcg PHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFJl ZCBIYXQsIEluYy4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisr ICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUK KysgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwKKysgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysgKi8KKysjaWZkZWYg SEFWRV9DT05GSUdfSAorKyNpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjaW5jbHVk ZSA8Z2NvbmYvZ2NvbmYtY2xpZW50Lmg+CisrI2luY2x1ZGUgPGlidXMuaD4KKysjaW5jbHVkZSA8 c3RkbGliLmg+CisrCisrI2lmZGVmIEVOQUJMRV9OTFMKKysjaW5jbHVkZSA8bG9jYWxlLmg+Cisr I2VuZGlmCisrCisrI2luY2x1ZGUgImlidXMtZW5naW5lLXhrYi1tYWluLmgiCisrI2luY2x1ZGUg InhrYnhtbC5oIgorKworKyNkZWZpbmUgSUJVU19UWVBFX1hLQl9FTkdJTkUgKGlidXNfeGtiX2Vu Z2luZV9nZXRfdHlwZSAoKSkKKysKKytzdGF0aWMgSUJ1c0J1cyAqYnVzID0gTlVMTDsKKytzdGF0 aWMgSUJ1c0ZhY3RvcnkgKmZhY3RvcnkgPSBOVUxMOworK3N0YXRpYyBJQnVzRW5naW5lQ2xhc3Mg KnBhcmVudF9jbGFzcyA9IE5VTEw7Cisrc3RhdGljIGdib29sZWFuIGlidXMgPSBGQUxTRTsKKytz dGF0aWMgZ2Jvb2xlYW4geG1sID0gRkFMU0U7CisrCisrc3RhdGljIGNvbnN0IEdPcHRpb25FbnRy eSBlbnRyaWVzW10gPQorK3sKKysgICAgeyAiaWJ1cyIsICdpJywgMCwgR19PUFRJT05fQVJHX05P TkUsICZpYnVzLCAiY29tcG9uZW50IGlzIGV4ZWN1dGVkIGJ5IGlidXMiLCBOVUxMIH0sCisrICAg IHsgInhtbCIsICd4JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZ4bWwsICJwcmludCBjb21wb25l bnQgeG1sIiwgTlVMTCB9LAorKyAgICB7IE5VTEwgfSwKKyt9OworKworK3N0YXRpYyBHT2JqZWN0 KgorK2lidXNfeGtiX2VuZ2luZV9jb25zdHJ1Y3RvciAoR1R5cGUgICAgICAgICAgICAgICAgICAg dHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAg ICAgIG5fY29uc3RydWN0X3BhcmFtcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdP YmplY3RDb25zdHJ1Y3RQYXJhbSAgKmNvbnN0cnVjdF9wYXJhbXMpCisreworKyAgICBJQnVzWEtC RW5naW5lICplbmdpbmU7CisrCisrICAgIGVuZ2luZSA9IChJQnVzWEtCRW5naW5lICopIEdfT0JK RUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RvciAodHlwZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29uc3RydWN0X3BhcmFtcywK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVj dF9wYXJhbXMpOworKworKyAgICByZXR1cm4gKEdPYmplY3QgKikgZW5naW5lOworK30KKysKKytz dGF0aWMgdm9pZAorK2lidXNfeGtiX2VuZ2luZV9kZXN0cm95IChJQnVzT2JqZWN0ICpvYmplY3Qp CisreworKyAgICBJQlVTX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGVzdHJveSAob2Jq ZWN0KTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytpYnVzX3hrYl9lbmdpbmVfZW5hYmxlIChJQnVz RW5naW5lICplbmdpbmUpCisreworKyAgICBwYXJlbnRfY2xhc3MtPmVuYWJsZSAoZW5naW5lKTsK Kyt9CisrCisrc3RhdGljIHZvaWQKKytpYnVzX3hrYl9lbmdpbmVfZGlzYWJsZSAoSUJ1c0VuZ2lu ZSAqZW5naW5lKQorK3sKKysgICAgcGFyZW50X2NsYXNzLT5kaXNhYmxlIChlbmdpbmUpOworK30K KysKKytzdGF0aWMgdm9pZAorK2lidXNfeGtiX2VuZ2luZV9mb2N1c19pbiAoSUJ1c0VuZ2luZSAq ZW5naW5lKQorK3sKKysgICAgcGFyZW50X2NsYXNzLT5mb2N1c19pbiAoZW5naW5lKTsKKyt9Cisr Cisrc3RhdGljIHZvaWQKKytpYnVzX3hrYl9lbmdpbmVfZm9jdXNfb3V0IChJQnVzRW5naW5lICpl bmdpbmUpCisreworKyAgICBwYXJlbnRfY2xhc3MtPmZvY3VzX291dCAoZW5naW5lKTsKKyt9Cisr Cisrc3RhdGljIHZvaWQKKytpYnVzX3hrYl9lbmdpbmVfY2xhc3NfaW5pdCAoSUJ1c1hLQkVuZ2lu ZUNsYXNzICprbGFzcykKKyt7CisrICAgIEdPYmplY3RDbGFzcyAqb2JqZWN0X2NsYXNzID0gR19P QkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKysgICAgSUJ1c09iamVjdENsYXNzICppYnVzX29iamVjdF9j bGFzcyA9IElCVVNfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisrICAgIElCdXNFbmdpbmVDbGFzcyAq ZW5naW5lX2NsYXNzID0gSUJVU19FTkdJTkVfQ0xBU1MgKGtsYXNzKTsKKysKKysgICAgcGFyZW50 X2NsYXNzID0gKElCdXNFbmdpbmVDbGFzcyAqKSBnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQgKGts YXNzKTsKKysgICAgb2JqZWN0X2NsYXNzLT5jb25zdHJ1Y3RvciA9IGlidXNfeGtiX2VuZ2luZV9j b25zdHJ1Y3RvcjsKKysgICAgaWJ1c19vYmplY3RfY2xhc3MtPmRlc3Ryb3kgPSAoSUJ1c09iamVj dERlc3Ryb3lGdW5jKSBpYnVzX3hrYl9lbmdpbmVfZGVzdHJveTsKKysgICAgZW5naW5lX2NsYXNz LT5lbmFibGUgPSBpYnVzX3hrYl9lbmdpbmVfZW5hYmxlOworKyAgICBlbmdpbmVfY2xhc3MtPmRp c2FibGUgPSBpYnVzX3hrYl9lbmdpbmVfZGlzYWJsZTsKKysgICAgZW5naW5lX2NsYXNzLT5mb2N1 c19pbiA9IGlidXNfeGtiX2VuZ2luZV9mb2N1c19pbjsKKysgICAgZW5naW5lX2NsYXNzLT5mb2N1 c19vdXQgPSBpYnVzX3hrYl9lbmdpbmVfZm9jdXNfb3V0OworKworK30KKysKKytzdGF0aWMgdm9p ZAorK2lidXNfeGtiX2VuZ2luZV9pbml0IChJQnVzWEtCRW5naW5lICplbmdpbmUpCisreworK30K KysKKytHVHlwZQorK2lidXNfeGtiX2VuZ2luZV9nZXRfdHlwZSAodm9pZCkKKyt7CisrICAgIHN0 YXRpYyBHVHlwZSB0eXBlID0gMDsKKysKKysgICAgc3RhdGljIGNvbnN0IEdUeXBlSW5mbyB0eXBl X2luZm8gPSB7CisrICAgICAgICBzaXplb2YgKElCdXNYS0JFbmdpbmVDbGFzcyksCisrICAgICAg ICAoR0Jhc2VJbml0RnVuYykgICAgIE5VTEwsCisrICAgICAgICAoR0Jhc2VGaW5hbGl6ZUZ1bmMp IE5VTEwsCisrICAgICAgICAoR0NsYXNzSW5pdEZ1bmMpICAgIGlidXNfeGtiX2VuZ2luZV9jbGFz c19pbml0LAorKyAgICAgICAgTlVMTCwKKysgICAgICAgIE5VTEwsCisrICAgICAgICBzaXplb2Yg KElCdXNYS0JFbmdpbmUpLAorKyAgICAgICAgMCwKKysgICAgICAgIChHSW5zdGFuY2VJbml0RnVu YykgaWJ1c194a2JfZW5naW5lX2luaXQsCisrICAgIH07CisrCisrICAgIGlmICh0eXBlID09IDAp IHsKKysgICAgICAgICAgICB0eXBlID0gZ190eXBlX3JlZ2lzdGVyX3N0YXRpYyAoSUJVU19UWVBF X0VOR0lORSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklC dXNYS0JFbmdpbmUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmdHlwZV9pbmZvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoR1R5cGVGbGFncykgMCk7CisrICAgIH0KKysKKysgICAgcmV0dXJuIHR5cGU7CisrfQorKwor K3N0YXRpYyB2b2lkCisraWJ1c19kaXNjb25uZWN0ZWRfY2IgKElCdXNCdXMgICpidXMsCisrICAg ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICB1c2VyX2RhdGEpCisreworKyAgICBnX2RlYnVn ICgiYnVzIGRpc2Nvbm5lY3RlZCIpOworKyAgICBpYnVzX3F1aXQgKCk7CisrfQorKworK3N0YXRp YyB2b2lkCisrX2ZhY3RvcnlfbG9va3VwX2VuZ2luZV9uYW1lX2NiIChJQnVzRmFjdG9yeSAqZmFj dG9yeSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICplbmdp bmVfbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICBk YXRhKQorK3sKKysgICAgc3RhdGljIEdMaXN0ICplbmdpbmVfbGlzdCA9IE5VTEw7CisrICAgIEdM aXN0ICpsaXN0OworKyAgICBnYm9vbGVhbiBoYXNfbmFtZSA9IEZBTFNFOworKworKyAgICBnX3Jl dHVybl9pZl9mYWlsIChlbmdpbmVfbmFtZSAhPSBOVUxMKTsKKysKKysgICAgaWYgKGdfc3RyY21w MCAoZW5naW5lX25hbWUsICJ4a2I6bGF5b3V0OnVzIikgPT0gMCkgeworKyAgICAgICAgcmV0dXJu OworKyAgICB9CisrICAgIGxpc3QgPSBlbmdpbmVfbGlzdDsKKysgICAgd2hpbGUgKGxpc3QpIHsK KysgICAgICAgIGlmIChnX3N0cmNtcDAgKGxpc3QtPmRhdGEsIGVuZ2luZV9uYW1lKSA9PSAwKSB7 CisrICAgICAgICAgICAgaGFzX25hbWUgPSBUUlVFOworKyAgICAgICAgICAgIGJyZWFrOworKyAg ICAgICAgfQorKyAgICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CisrICAgIH0KKysgICAgaWYgKGhh c19uYW1lKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgaWJ1c19mYWN0b3J5 X2FkZF9lbmdpbmUgKGZhY3RvcnksIGVuZ2luZV9uYW1lLCBJQlVTX1RZUEVfWEtCX0VOR0lORSk7 CisrICAgIGVuZ2luZV9saXN0ID0gZ19saXN0X2FwcGVuZCAoZW5naW5lX2xpc3QsIChncG9pbnRl cikgZ19zdHJkdXAgKGVuZ2luZV9uYW1lKSk7CisrfQorKworK3N0YXRpYyB2b2lkCisrc3RhcnRf Y29tcG9uZW50IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKyAgICBJQnVzQ29tcG9uZW50 ICpjb21wb25lbnQ7CisrCisrICAgIGlidXNfaW5pdCAoKTsKKysKKysgICAgYnVzID0gaWJ1c19i dXNfbmV3ICgpOworKyAgICBnX3NpZ25hbF9jb25uZWN0IChidXMsICJkaXNjb25uZWN0ZWQiLCBH X0NBTExCQUNLIChpYnVzX2Rpc2Nvbm5lY3RlZF9jYiksIE5VTEwpOworKworKyAgICBjb21wb25l bnQgPSBpYnVzX2NvbXBvbmVudF9uZXcgKCJvcmcuZnJlZWRlc2t0b3AuSUJ1cy5YS0IiLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJYS0IgQ29tcG9uZW50IiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJMR1BMMi4xIiwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2NvZGUuZ29v Z2xlLmNvbS9wL2lidXMvIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRURVhUX1BBQ0tBR0Up OworKyAgICBpYnVzX2NvbXBvbmVudF9hZGRfZW5naW5lIChjb21wb25lbnQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlidXNfeGtiX2VuZ2luZV9kZXNjX25ldyAoImVuZyIsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiVVNBIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKKysKKysgICAgZmFjdG9yeSA9IGlidXNf ZmFjdG9yeV9uZXcgKGlidXNfYnVzX2dldF9jb25uZWN0aW9uIChidXMpKTsKKysKKysgICAgaWJ1 c19mYWN0b3J5X2FkZF9lbmdpbmUgKGZhY3RvcnksICJ4a2I6bGF5b3V0OnVzIiwgSUJVU19UWVBF X1hLQl9FTkdJTkUpOworKworKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoZmFjdG9y eSksICJsb29rdXAtZW5naW5lLW5hbWUiLAorKyAgICAgICAgICAgICAgICAgICAgICBHX0NBTExC QUNLIChfZmFjdG9yeV9sb29rdXBfZW5naW5lX25hbWVfY2IpLAorKyAgICAgICAgICAgICAgICAg ICAgICBOVUxMKTsKKysgICAgaWYgKGlidXMpIHsKKysgICAgICAgIGlidXNfYnVzX3JlcXVlc3Rf bmFtZSAoYnVzLCAib3JnLmZyZWVkZXNrdG9wLklCdXMuWEtCIiwgMCk7CisrICAgIH0KKysgICAg ZWxzZSB7CisrICAgICAgICBpYnVzX2J1c19yZWdpc3Rlcl9jb21wb25lbnQgKGJ1cywgY29tcG9u ZW50KTsKKysgICAgfQorKworKyAgICBnX29iamVjdF91bnJlZiAoY29tcG9uZW50KTsKKysKKysg ICAgaWJ1c19tYWluICgpOworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4KKytpc19pbmNsdWRlZF9l bmdpbmVfaW5fcHJlbG9hZCAoY29uc3QgR0xpc3QgKiBwcmVsb2FkX3hrYl9lbmdpbmVzLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqbGF5b3V0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqdmFyaWFudCkKKyt7CisrICAg IGNvbnN0IEdMaXN0ICpsaXN0ID0gcHJlbG9hZF94a2JfZW5naW5lczsKKysgICAgZ2NoYXIgKmtl eSA9IE5VTEw7CisrICAgIGdib29sZWFuIHJldHZhbCA9IEZBTFNFOworKworKyAgICBnX3JldHVy bl92YWxfaWZfZmFpbCAobGF5b3V0ICE9IE5VTEwsIEZBTFNFKTsKKysKKysgICAgaWYgKHZhcmlh bnQgPT0gTlVMTCkgeworKyAgICAgICAga2V5ID0gZ19zdHJkdXAgKGxheW91dCk7CisrICAgIH0g ZWxzZSB7CisrICAgICAgICBrZXkgPSBnX3N0cmR1cF9wcmludGYgKCIlcyglcykiLCBsYXlvdXQs IHZhcmlhbnQpOworKyAgICB9CisrICAgIHdoaWxlIChsaXN0KSB7CisrICAgICAgICBpZiAobGlz dC0+ZGF0YSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9Cisr ICAgICAgICBpZiAoZ19zdHJjbXAwICgoY29uc3QgZ2NoYXIgKikgbGlzdC0+ZGF0YSwKKysgICAg ICAgICAgICAgICAgICAgICAgIChjb25zdCBnY2hhciAqKSBrZXkpID09IDApIHsKKysgICAgICAg ICAgICByZXR2YWwgPSBUUlVFOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAg ICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CisrICAgIH0KKysgICAgZ19mcmVlIChrZXkpOworKyAg ICByZXR1cm4gcmV0dmFsOworK30KKysKKytzdGF0aWMgdm9pZAorK3ByaW50X2NvbXBvbmVudCAo KQorK3sKKysgICAgSUJ1c1hLQkxheW91dENvbmZpZyAqbGF5b3V0X2NvbmZpZzsKKysgICAgSUJ1 c1hLQkNvbmZpZ1JlZ2lzdHJ5ICpjb25maWdfcmVnaXN0cnk7CisrICAgIEdIYXNoVGFibGUgKmxh eW91dF9saXN0OworKyAgICBHSGFzaFRhYmxlICpsYXlvdXRfbGFuZzsKKysgICAgR0hhc2hUYWJs ZSAqbGF5b3V0X2Rlc2M7CisrICAgIEdIYXNoVGFibGUgKnZhcmlhbnRfZGVzYzsKKysgICAgSUJ1 c0NvbXBvbmVudCAqY29tcG9uZW50OworKyAgICBJQnVzRW5naW5lRGVzYyAqZW5naW5lOworKyAg ICBjb25zdCBHTGlzdCAqcHJlbG9hZF94a2JfZW5naW5lcyA9IE5VTEw7CisrICAgIEdMaXN0ICpr ZXlzOworKyAgICBHTGlzdCAqdmFyaWFudHM7CisrICAgIEdMaXN0ICpsYW5nczsKKysgICAgZ2Jv b2xlYW4gaXNfcHJlbG9hZDsKKysgICAgZ2NoYXIgKmxheW91dF9uYW1lOworKyAgICBjb25zdCBn Y2hhciAqZGVzYzsKKysgICAgZ2NoYXIgKm91dHB1dDsKKysgICAgR1N0cmluZyAqc3RyOworKwor KyNpZmRlZiBYS0JMQVlPVVRDT05GSUdfRklMRQorKyAgICBsYXlvdXRfY29uZmlnID0gaWJ1c194 a2JfbGF5b3V0X2NvbmZpZ19uZXcgKFhLQkxBWU9VVENPTkZJR19GSUxFKTsKKysgICAgcHJlbG9h ZF94a2JfZW5naW5lcyA9IGlidXNfeGtiX2xheW91dF9jb25maWdfZ2V0X3ByZWxvYWRfbGF5b3V0 cyAobGF5b3V0X2NvbmZpZyk7CisrI2VuZGlmCisrCisrICAgIGNvbmZpZ19yZWdpc3RyeSA9IGli dXNfeGtiX2NvbmZpZ19yZWdpc3RyeV9uZXcgKCk7CisrICAgIGxheW91dF9saXN0ID0gKEdIYXNo VGFibGUgKikgaWJ1c194a2JfY29uZmlnX3JlZ2lzdHJ5X2dldF9sYXlvdXRfbGlzdCAoY29uZmln X3JlZ2lzdHJ5KTsKKysgICAgbGF5b3V0X2xhbmcgPSAoR0hhc2hUYWJsZSAqKSBpYnVzX3hrYl9j b25maWdfcmVnaXN0cnlfZ2V0X2xheW91dF9sYW5nIChjb25maWdfcmVnaXN0cnkpOworKyAgICBs YXlvdXRfZGVzYyA9IChHSGFzaFRhYmxlICopIGlidXNfeGtiX2NvbmZpZ19yZWdpc3RyeV9nZXRf bGF5b3V0X2Rlc2MgKGNvbmZpZ19yZWdpc3RyeSk7CisrICAgIHZhcmlhbnRfZGVzYyA9IChHSGFz aFRhYmxlICopIGlidXNfeGtiX2NvbmZpZ19yZWdpc3RyeV9nZXRfdmFyaWFudF9kZXNjIChjb25m aWdfcmVnaXN0cnkpOworKyAgICBjb21wb25lbnQgPSBpYnVzX3hrYl9jb21wb25lbnRfbmV3ICgp OworKyAgICBmb3IgKGtleXMgPSBnX2hhc2hfdGFibGVfZ2V0X2tleXMgKGxheW91dF9saXN0KTsg a2V5czsga2V5cyA9IGtleXMtPm5leHQpIHsKKysgICAgICAgIGlmIChrZXlzLT5kYXRhID09IE5V TEwpIHsKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGRlc2Mg PSAoY29uc3QgZ2NoYXIgKikgZ19oYXNoX3RhYmxlX2xvb2t1cCAobGF5b3V0X2Rlc2MsIGtleXMt PmRhdGEpOworKyAgICAgICAgbGFuZ3MgPSAoR0xpc3QgKikgZ19oYXNoX3RhYmxlX2xvb2t1cCAo bGF5b3V0X2xhbmcsIGtleXMtPmRhdGEpOworKyAgICAgICAgZm9yICg7bGFuZ3M7IGxhbmdzID0g bGFuZ3MtPm5leHQpIHsKKysgICAgICAgICAgICBpZiAobGFuZ3MtPmRhdGEgPT0gTlVMTCkgewor KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAg aXNfcHJlbG9hZCA9IEZBTFNFOworKyAgICAgICAgICAgIGlmICghcHJlbG9hZF94a2JfZW5naW5l cykgeworKyAgICAgICAgICAgICAgICBpc19wcmVsb2FkID0gVFJVRTsKKysgICAgICAgICAgICB9 IGVsc2UgeworKyAgICAgICAgICAgICAgICBpc19wcmVsb2FkID0gaXNfaW5jbHVkZWRfZW5naW5l X2luX3ByZWxvYWQgKHByZWxvYWRfeGtiX2VuZ2luZXMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICopIGtl eXMtPmRhdGEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmIChp c19wcmVsb2FkKSB7CisrICAgICAgICAgICAgICAgIGVuZ2luZSA9IGlidXNfeGtiX2VuZ2luZV9k ZXNjX25ldyAoKGNvbnN0IGdjaGFyICopIGxhbmdzLT5kYXRhLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBnY2hhciAqKSBrZXlzLT5k YXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlc2MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMKTsKKysgICAgICAgICAgICBpYnVzX2NvbXBvbmVudF9hZGRfZW5naW5lIChjb21w b25lbnQsIGVuZ2luZSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgdmFy aWFudHMgPSAoR0xpc3QgKikgZ19oYXNoX3RhYmxlX2xvb2t1cCAobGF5b3V0X2xpc3QsIGtleXMt PmRhdGEpOworKyAgICAgICAgZm9yICg7dmFyaWFudHM7IHZhcmlhbnRzID0gdmFyaWFudHMtPm5l eHQpIHsKKysgICAgICAgICAgICBpZiAodmFyaWFudHMtPmRhdGEgPT0gTlVMTCkgeworKyAgICAg ICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgbGF5b3V0 X25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCIlcyglcykiLCAoZ2NoYXIgKikga2V5cy0+ZGF0YSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChn Y2hhciAqKSB2YXJpYW50cy0+ZGF0YSk7CisrICAgICAgICAgICAgbGFuZ3MgPSAoR0xpc3QgKikg Z19oYXNoX3RhYmxlX2xvb2t1cCAobGF5b3V0X2xhbmcsIGxheW91dF9uYW1lKTsKKysgICAgICAg ICAgICBpZiAobGFuZ3MgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBnX2ZyZWUgKGxheW91 dF9uYW1lKTsKKysgICAgICAgICAgICAgICAgbGF5b3V0X25hbWUgPSBnX3N0cmR1cCAoKGdjaGFy ICopIGtleXMtPmRhdGEpOworKyAgICAgICAgICAgICAgICBsYW5ncyA9IChHTGlzdCAqKSBnX2hh c2hfdGFibGVfbG9va3VwIChsYXlvdXRfbGFuZywgbGF5b3V0X25hbWUpOworKyAgICAgICAgICAg IH0KKysgICAgICAgICAgICBnX2ZyZWUgKGxheW91dF9uYW1lKTsKKysgICAgICAgICAgICBmb3Ig KDtsYW5nczsgbGFuZ3MgPSBsYW5ncy0+bmV4dCkgeworKyAgICAgICAgICAgICAgICBpZiAobGFu Z3MtPmRhdGEgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgaXNfcHJlbG9hZCA9IEZBTFNFOworKyAg ICAgICAgICAgICAgICBpZiAoIXByZWxvYWRfeGtiX2VuZ2luZXMpIHsKKysgICAgICAgICAgICAg ICAgICAgaXNfcHJlbG9hZCA9IFRSVUU7CisrICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAg ICAgICAgICAgICAgICAgICBpc19wcmVsb2FkID0gaXNfaW5jbHVkZWRfZW5naW5lX2luX3ByZWxv YWQgKHByZWxvYWRfeGtiX2VuZ2luZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBnY2hhciAqKSBrZXlzLT5k YXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKikgdmFyaWFudHMtPmRhdGEpOworKyAgICAgICAg ICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlmIChpc19wcmVsb2FkKSB7CisrICAgICAgICAg ICAgICAgICAgICBlbmdpbmUgPSBpYnVzX3hrYl9lbmdpbmVfZGVzY19uZXcgKChjb25zdCBnY2hh ciAqKSBsYW5ncy0+ZGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICopIGtleXMtPmRhdGEsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25z dCBnY2hhciAqKSB2YXJpYW50cy0+ZGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICopIGdfaGFzaF90YWJsZV9s b29rdXAgKHZhcmlhbnRfZGVzYywgdmFyaWFudHMtPmRhdGEpKTsKKysgICAgICAgICAgICAgICAg ICAgIGlidXNfY29tcG9uZW50X2FkZF9lbmdpbmUgKGNvbXBvbmVudCwgZW5naW5lKTsKKysgICAg ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKyAgICBn X29iamVjdF91bnJlZiAoR19PQkpFQ1QgKGNvbmZpZ19yZWdpc3RyeSkpOworKyNpZmRlZiBYS0JM QVlPVVRDT05GSUdfRklMRQorKyAgICBnX29iamVjdF91bnJlZiAoR19PQkpFQ1QgKGxheW91dF9j b25maWcpKTsKKysjZW5kaWYKKysKKysgICAgc3RyID0gZ19zdHJpbmdfbmV3IChOVUxMKTsKKysg ICAgaWJ1c19jb21wb25lbnRfb3V0cHV0X2VuZ2luZXMgKGNvbXBvbmVudCAsIHN0ciwgMCk7Cisr ICAgIGdfb2JqZWN0X3VucmVmIChHX09CSkVDVCAoY29tcG9uZW50KSk7CisrCisrICAgIG91dHB1 dCA9IGdfc3RyaW5nX2ZyZWUgKHN0ciwgRkFMU0UpOworKyAgICBnX3ByaW50ICgiJXNcbiIsIG91 dHB1dCk7CisrICAgIGdfZnJlZSAob3V0cHV0KTsKKyt9CisrCisraW50CisrbWFpbiAoaW50IGFy Z2MsIGNoYXIgKiphcmd2KQorK3sKKysgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisrICAgIEdP cHRpb25Db250ZXh0ICpjb250ZXh0OworKworKyNpZmRlZiBFTkFCTEVfTkxTCisrICAgIHNldGxv Y2FsZSAoTENfQUxMLCAiIik7CisrI2VuZGlmCisrCisrICAgIGdfdHlwZV9pbml0ICgpOworKwor KyAgICBjb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcgKCItIGlidXMgeGtiIGVuZ2luZSBj b21wb25lbnQiKTsKKysKKysgICAgZ19vcHRpb25fY29udGV4dF9hZGRfbWFpbl9lbnRyaWVzIChj b250ZXh0LCBlbnRyaWVzLCAiaWJ1cy14YmwiKTsKKysKKysgICAgaWYgKCFnX29wdGlvbl9jb250 ZXh0X3BhcnNlIChjb250ZXh0LCAmYXJnYywgJmFyZ3YsICZlcnJvcikpIHsKKysgICAgICAgIGdf cHJpbnQgKCJPcHRpb24gcGFyc2luZyBmYWlsZWQ6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7Cisr ICAgICAgICBleGl0ICgtMSk7CisrICAgIH0KKysKKysgICAgaWYgKHhtbCkgeworKyAgICAgICAg cHJpbnRfY29tcG9uZW50ICgpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgc3Rh cnRfY29tcG9uZW50IChhcmdjLCBhcmd2KTsKKysKKysgICAgcmV0dXJuIDA7CisrfQorZGlmZiAt LWdpdCBhL3hrYi9pYnVzLWVuZ2luZS14a2ItbWFpbi5oIGIveGtiL2lidXMtZW5naW5lLXhrYi1t YWluLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kYjMxZGU5CistLS0g L2Rldi9udWxsCisrKysgYi94a2IvaWJ1cy1lbmdpbmUteGtiLW1haW4uaAorQEAgLTAsMCArMSw0 NSBAQAorKy8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCisrLyogYnVzIC0gVGhlIElucHV0IEJ1cwor KyAqIENvcHlyaWdodCAoQykgMjAxMCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5w Lmh1YW5nQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCBSZWQgSGF0LCBJ bmMuCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAq IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisrICogRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs CisrICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrICovCisrI2lmbmRlZiBfX0lCVVNf RU5HSU5FX1hLQl9NQUlOX0hfCisrI2RlZmluZSBfX0lCVVNfRU5HSU5FX1hLQl9NQUlOX0hfCisr CisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisr CisrI2luY2x1ZGUgPGlidXMuaD4KKysKKytHX0JFR0lOX0RFQ0xTCisrCisrdHlwZWRlZiBzdHJ1 Y3QgX0lCdXNYS0JFbmdpbmUgSUJ1c1hLQkVuZ2luZTsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c1hL QkVuZ2luZUNsYXNzIElCdXNYS0JFbmdpbmVDbGFzczsKKysKKytzdHJ1Y3QgX0lCdXNYS0JFbmdp bmUgeworKyAgICBJQnVzRW5naW5lIGVuZ2luZTsKKyt9OworKworK3N0cnVjdCBfSUJ1c1hLQkVu Z2luZUNsYXNzIHsKKysgICAgSUJ1c0VuZ2luZUNsYXNzIHBhcmVudDsKKyt9OworKworK0dfRU5E X0RFQ0xTCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEveGtiL2lidXMteGtiLW1haW4uYyBiL3hrYi9p YnVzLXhrYi1tYWluLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi45NzFj NGQ5CistLS0gL2Rldi9udWxsCisrKysgYi94a2IvaWJ1cy14a2ItbWFpbi5jCitAQCAtMCwwICsx LDgyIEBACisrLyogdmltOnNldCBldCBzdHM9NDogKi8KKysvKiBidXMgLSBUaGUgSW5wdXQgQnVz CisrICogQ29weXJpZ2h0IChDKSAyMDEwIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFBlbmcgSHVhbmcgPHNoYXdu LnAuaHVhbmdAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFJlZCBIYXQs IEluYy4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisr ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGlj ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKysgKiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwKKysgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysgKi8KKysjaWZkZWYgSEFWRV9D T05GSUdfSAorKyNpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSA8Z2xp Yi5oPgorKyNpbmNsdWRlIDxnbGliL2dwcmludGYuaD4KKysjaW5jbHVkZSA8Z2xpYi9naTE4bi5o PgorKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorKworKyNpZmRlZiBFTkFCTEVfTkxTCisrI2luY2x1 ZGUgPGxvY2FsZS5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlICJ4a2JsaWIuaCIKKysKKytzdGF0 aWMgZ2Jvb2xlYW4gZ2V0X2xheW91dCA9IEZBTFNFOworK3N0YXRpYyBnY2hhciAqbGF5b3V0ID0g TlVMTDsKKysKKytzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGVudHJpZXNbXSA9CisreworKyAg ICB7ICJnZXQiLCAnZycsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZ2V0X2xheW91dCwgTl8oIkdl dCBjdXJyZW50IHhrYiBsYXlvdXQiKSwgTlVMTCB9LAorKyAgICAvKiBUcmFuc2xhdG9yczogdGhl ICJsYXlvdXQiIHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZCBkdWUgdG8gYSB2YXJpYWJsZS4gKi8K KysgICAgeyAic2V0IiwgJ3MnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmbGF5b3V0LCBOXygi U2V0IHhrYiBsYXlvdXQiKSwgImxheW91dCIgfSwKKysgICAgeyBOVUxMIH0sCisrfTsKKysKKytp bnQKKyttYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorK3sKKysgICAgR09wdGlvbkNvbnRl eHQgKmNvbnRleHQ7CisrICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworKyAgICBEaXNwbGF5ICp4 ZGlzcGxheTsKKysKKysjaWZkZWYgRU5BQkxFX05MUworKyAgICBzZXRsb2NhbGUgKExDX0FMTCwg IiIpOworKworKyAgICBiaW5kdGV4dGRvbWFpbiAoR0VUVEVYVF9QQUNLQUdFLCBJQlVTX0xPQ0FM RURJUik7CisrICAgIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChHRVRURVhUX1BBQ0tBR0UsICJV VEYtOCIpOworKyNlbmRpZgorKworKyAgICBjb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcg KCItIGlidXMgZGFlbW9uIik7CisrCisrICAgIGdfb3B0aW9uX2NvbnRleHRfc2V0X3RyYW5zbGF0 aW9uX2RvbWFpbiAoY29udGV4dCwgR0VUVEVYVF9QQUNLQUdFKTsKKysgICAgZ19vcHRpb25fY29u dGV4dF9hZGRfbWFpbl9lbnRyaWVzIChjb250ZXh0LCBlbnRyaWVzLCBHRVRURVhUX1BBQ0tBR0Up OworKworKyAgICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UgKGNvbnRleHQsICZhcmdjLCAm YXJndiwgJmVycm9yKSkgeworKyAgICAgICAgZ19wcmludGVyciAoIk9wdGlvbiBwYXJzaW5nIGZh aWxlZDogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAg fQorKworKyAgICB4ZGlzcGxheSA9IFhPcGVuRGlzcGxheSAoTlVMTCk7CisrICAgIGlidXNfeGti X2luaXQgKHhkaXNwbGF5KTsKKysKKysgICAgaWYgKGxheW91dCkgeworKyAgICAgICAgaWJ1c194 a2Jfc2V0X2xheW91dCAobGF5b3V0LCBOVUxMLCBOVUxMKTsKKysgICAgfQorKyAgICBpZiAoZ2V0 X2xheW91dCkgeworKyAgICAgICAgZ19wcmludGYgKCJsYXlvdXQ6ICVzXG4iLCBpYnVzX3hrYl9n ZXRfY3VycmVudF9sYXlvdXQgKCkpOworKyAgICB9CisrICAgIHJldHVybiAwOworK30KK2RpZmYg LS1naXQgYS94a2IveGtibGF5b3V0LnhtbC5pbiBiL3hrYi94a2JsYXlvdXQueG1sLmluCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMGI1YTRkYworLS0tIC9kZXYvbnVsbAor KysrIGIveGtiL3hrYmxheW91dC54bWwuaW4KK0BAIC0wLDAgKzEsMTYgQEAKKys8P3htbCB2ZXJz aW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorKzxjb21wb25lbnQ+CisrICAgICAgICA8bmFt ZT5vcmcuZnJlZWRlc2t0b3AuSUJ1cy5YS0I8L25hbWU+CisrICAgICAgICA8ZGVzY3JpcHRpb24+ WEtCIENvbXBvbmVudDwvZGVzY3JpcHRpb24+CisrICAgICAgICA8ZXhlYz5AbGliZXhlY2RpckAv aWJ1cy1lbmdpbmUteGtiIC0taWJ1czwvZXhlYz4KKysgICAgICAgIDx2ZXJzaW9uPjAuMC4wPC92 ZXJzaW9uPgorKyAgICAgICAgPGF1dGhvcj5UYWthbyBGdWppd2FyYSAmbHQ7dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KKysgICAgICAgIDxsaWNlbnNlPkxHUEwyLjE8L2xp Y2Vuc2U+CisrICAgICAgICA8aG9tZXBhZ2U+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lidXMv PC9ob21lcGFnZT4KKysgICAgICAgIDx0ZXh0ZG9tYWluPmlidXM8L3RleHRkb21haW4+CisrICAg ICAgICA8b2JzZXJ2ZWQtcGF0aHM+CisrICAgICAgICAgICAgICAgIDxwYXRoPkBkYXRhZGlyQC9p YnVzL3hrYi94a2JsYXlvdXRjb25maWcueG1sPC9wYXRoPgorKyAgICAgICAgICAgICAgICA8cGF0 aD5+Ly5jb25maWcvaWJ1cy94a2IveGtibGF5b3V0Y29uZmlnLnhtbDwvcGF0aD4KKysgICAgICAg IDwvb2JzZXJ2ZWQtcGF0aHM+CisrICAgICAgICA8ZW5naW5lcyBleGVjPSJAbGliZXhlY2RpckAv aWJ1cy1lbmdpbmUteGtiIC0teG1sIi8+CisrPC9jb21wb25lbnQ+CitkaWZmIC0tZ2l0IGEveGti L3hrYmxheW91dGNvbmZpZy54bWwuaW4gYi94a2IveGtibGF5b3V0Y29uZmlnLnhtbC5pbgorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmIxMjEyZDEKKy0tLSAvZGV2L251bGwK KysrKyBiL3hrYi94a2JsYXlvdXRjb25maWcueG1sLmluCitAQCAtMCwwICsxLDYgQEAKKys8P3ht bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorKzx4a2JsYXlvdXQ+CisrICA8Y29u ZmlnPgorKyAgICA8cHJlbG9hZF9sYXlvdXRzPkBYS0JfUFJFTE9BRF9MQVlPVVRTQDwvcHJlbG9h ZF9sYXlvdXRzPgorKyAgPC9jb25maWc+CisrPC94a2JsYXlvdXQ+CitkaWZmIC0tZ2l0IGEveGti L3hrYmxpYi5jIGIveGtiL3hrYmxpYi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uNWZhZWVlNworLS0tIC9kZXYvbnVsbAorKysrIGIveGtiL3hrYmxpYi5jCitAQCAtMCww ICsxLDI1OSBAQAorKy8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCisrLyogYnVzIC0gVGhlIElucHV0 IEJ1cworKyAqIENvcHlyaWdodCAoQykgMjAxMCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCBQZW5nIEh1YW5nIDxz aGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCBSZWQg SGF0LCBJbmMuCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysg KgorKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisr ICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsCisrICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrICovCisrI2lmZGVmIEhB VkVfQ09ORklHX0gKKysjaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUg PGdsaWIuaD4KKysjaW5jbHVkZSA8WDExL1hsaWIuaD4KKysjaW5jbHVkZSA8WDExL1hhdG9tLmg+ CisrI2luY2x1ZGUgPFgxMS9YS0JsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4gLyogZm9yIFhL QnJ1bGVzLmggKi8KKysjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWEtCcnVsZXMuaD4KKysjaW5j bHVkZSA8WDExL2V4dGVuc2lvbnMvWEtCc3RyLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKwor KyNpbmNsdWRlICJ4a2JsaWIuaCIKKysKKysjaWZuZGVmIFhLQl9SVUxFU19YTUxfRklMRQorKyNk ZWZpbmUgWEtCX1JVTEVTX1hNTF9GSUxFICIvdXNyL3NoYXJlL1gxMS94a2IvcnVsZXMvZXZkZXYu eG1sIgorKyNlbmRpZgorKworK3N0YXRpYyBnY2hhciAgICAgICAgICAqKmRlZmF1bHRfbGF5b3V0 czsKKytzdGF0aWMgaW50ICAgICAgICAgICAgICBkZWZhdWx0X2xheW91dF9ncm91cDsKKysKKytz dGF0aWMgRGlzcGxheSAqCisrZ2V0X3hkaXNwbGF5IChEaXNwbGF5ICp4ZGlzcGxheSkKKyt7Cisr ICAgIHN0YXRpYyBEaXNwbGF5ICpzYXZlZF94ZGlzcGxheSA9IE5VTEw7CisrICAgIGlmICh4ZGlz cGxheSAhPSBOVUxMKSB7CisrICAgICAgICBzYXZlZF94ZGlzcGxheSA9IHhkaXNwbGF5OworKyAg ICB9CisrICAgIHJldHVybiBzYXZlZF94ZGlzcGxheTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytp bml0X3hrYl9kZWZhdWx0X2xheW91dHMgKERpc3BsYXkgKnhkaXNwbGF5KQorK3sKKysgICAgWGti U3RhdGVSZWMgc3RhdGU7CisrICAgIEF0b20geGtiX3J1bGVzX25hbWUsIHR5cGU7CisrICAgIGlu dCBmb3JtYXQ7CisrICAgIHVuc2lnbmVkIGxvbmcgbCwgbml0ZW1zLCBieXRlc19hZnRlcjsKKysg ICAgdW5zaWduZWQgY2hhciAqcHJvcCA9IE5VTEw7CisrCisrICAgIGlmIChYa2JHZXRTdGF0ZSAo eGRpc3BsYXksIFhrYlVzZUNvcmVLYmQsICZzdGF0ZSkgIT0gU3VjY2VzcykgeworKyAgICAgICAg Z193YXJuaW5nICgiQ291bGQgbm90IGdldCBzdGF0ZSIpOworKyAgICAgICAgcmV0dXJuOworKyAg ICB9CisrICAgIGRlZmF1bHRfbGF5b3V0X2dyb3VwID0gc3RhdGUuZ3JvdXA7CisrCisrICAgIHhr Yl9ydWxlc19uYW1lID0gWEludGVybkF0b20gKHhkaXNwbGF5LCAiX1hLQl9SVUxFU19OQU1FUyIs IFRSVUUpOworKyAgICBpZiAoeGtiX3J1bGVzX25hbWUgPT0gTm9uZSkgeworKyAgICAgICAgZ193 YXJuaW5nICgiQ291bGQgbm90IGdldCBYS0IgcnVsZXMgYXRvbSIpOworKyAgICAgICAgcmV0dXJu OworKyAgICB9CisrICAgIGlmIChYR2V0V2luZG93UHJvcGVydHkgKHhkaXNwbGF5LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYRGVmYXVsdFJvb3RXaW5kb3cgKHhkaXNwbGF5KSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeGtiX3J1bGVzX25hbWUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsIDEwMjQsIEZBTFNFLCBYQV9TVFJJTkcsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZ0eXBlLCAmZm9ybWF0LCAmbml0ZW1zLCAmYnl0ZXNfYWZ0ZXIsICZw cm9wKSAhPSBTdWNjZXNzKSB7CisrICAgICAgICBnX3dhcm5pbmcgKCJDb3VsZCBub3QgZ2V0IFgg cHJvcGVydHkiKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBpZiAobml0ZW1zIDwg MykgeworKyAgICAgICAgZ193YXJuaW5nICgiQ291bGQgbm90IGdldCBncm91cCBsYXlvdXQgZnJv bSBYIHByb3BlcnR5Iik7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZm9yIChsID0g MDsgbCA8IDI7IGwrKykgeworKyAgICAgICAgcHJvcCArPSBzdHJsZW4gKChjb25zdCBjaGFyICop IHByb3ApICsgMTsKKysgICAgfQorKyAgICBpZiAocHJvcCA9PSBOVUxMIHx8ICpwcm9wID09ICdc MCcpIHsKKysgICAgICAgIGdfd2FybmluZyAoIk5vIGxheW91dHMgZm9ybSBYIHByb3BlcnR5Iik7 CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZGVmYXVsdF9sYXlvdXRzID0gZ19zdHJz cGxpdCAoKGdjaGFyICopIHByb3AsICIsIiwgLTEpOworK30KKysKKytzdGF0aWMgQm9vbAorK3Nl dF94a2JfcnVsZXMgKERpc3BsYXkgKnhkaXNwbGF5LAorKyAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKnJ1bGVzX2ZpbGUsIGNvbnN0IGNoYXIgKm1vZGVsLAorKyAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmFsbF9sYXlvdXRzLCBjb25zdCBjaGFyICphbGxfdmFyaWFudHMsCisrICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqYWxsX29wdGlvbnMpCisreworKyAgICBnY2hhciAqcnVsZXNfcGF0 aDsKKysgICAgWGtiUkZfUnVsZXNQdHIgcnVsZXM7CisrICAgIFhrYlJGX1ZhckRlZnNSZWMgcmRl ZnM7CisrICAgIFhrYkNvbXBvbmVudE5hbWVzUmVjIHJuYW1lczsKKysgICAgWGtiRGVzY1B0ciB4 a2I7CisrCisrICAgIHJ1bGVzX3BhdGggPSBnX3N0cmR1cCAoIi4vcnVsZXMvZXZkZXYiKTsKKysg ICAgcnVsZXMgPSBYa2JSRl9Mb2FkIChydWxlc19wYXRoLCAiQyIsIFRSVUUsIFRSVUUpOworKyAg ICBpZiAocnVsZXMgPT0gTlVMTCkgeworKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKFhL Ql9SVUxFU19YTUxfRklMRSAhPSBOVUxMLCBGQUxTRSk7CisrCisrICAgICAgICBnX2ZyZWUgKHJ1 bGVzX3BhdGgpOworKyAgICAgICAgaWYgKGdfc3RyX2hhc19zdWZmaXggKFhLQl9SVUxFU19YTUxf RklMRSwgIi54bWwiKSkgeworKyAgICAgICAgICAgIHJ1bGVzX3BhdGggPSBnX3N0cm5kdXAgKFhL Ql9SVUxFU19YTUxfRklMRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJsZW4gKFhLQl9SVUxFU19YTUxfRklMRSkgLSA0KTsKKysgICAgICAgIH0gZWxzZSB7CisrICAg ICAgICAgICAgcnVsZXNfcGF0aCA9IGdfc3RyZHVwIChYS0JfUlVMRVNfWE1MX0ZJTEUpOworKyAg ICAgICAgfQorKyAgICAgICAgcnVsZXMgPSBYa2JSRl9Mb2FkIChydWxlc19wYXRoLCAiQyIsIFRS VUUsIFRSVUUpOworKyAgICB9CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChydWxlcyAhPSBO VUxMLCBGQUxTRSk7CisrCisrICAgIG1lbXNldCAoJnJkZWZzLCAwLCBzaXplb2YgKFhrYlJGX1Zh ckRlZnNSZWMpKTsKKysgICAgbWVtc2V0ICgmcm5hbWVzLCAwLCBzaXplb2YgKFhrYkNvbXBvbmVu dE5hbWVzUmVjKSk7CisrICAgIHJkZWZzLm1vZGVsID0gbW9kZWwgPyBnX3N0cmR1cCAobW9kZWwp IDogTlVMTDsKKysgICAgcmRlZnMubGF5b3V0ID0gYWxsX2xheW91dHMgPyBnX3N0cmR1cCAoYWxs X2xheW91dHMpIDogTlVMTDsKKysgICAgcmRlZnMudmFyaWFudCA9IGFsbF92YXJpYW50cyA/IGdf c3RyZHVwIChhbGxfdmFyaWFudHMpIDogTlVMTDsKKysgICAgcmRlZnMub3B0aW9ucyA9IGFsbF9v cHRpb25zID8gZ19zdHJkdXAgKGFsbF9vcHRpb25zKSA6IE5VTEw7CisrICAgIFhrYlJGX0dldENv bXBvbmVudHMgKHJ1bGVzLCAmcmRlZnMsICZybmFtZXMpOworKyAgICB4a2IgPSBYa2JHZXRLZXli b2FyZEJ5TmFtZSAoeGRpc3BsYXksIFhrYlVzZUNvcmVLYmQsICZybmFtZXMsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYa2JHQk5fQWxsQ29tcG9uZW50c01hc2ssCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYa2JHQk5fQWxsQ29tcG9uZW50c01hc2sgJgorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKH5Ya2JHQk5fR2VvbWV0cnlNYXNrKSwgVHJ1 ZSk7CisrICAgIGlmICgheGtiKSB7CisrICAgICAgICBnX3dhcm5pbmcgKCJDYW5ub3QgbG9hZCBu ZXcga2V5Ym9hcmQgZGVzY3JpcHRpb24uIik7CisrICAgICAgICByZXR1cm4gRkFMU0U7CisrICAg IH0KKysgICAgWGtiUkZfU2V0TmFtZXNQcm9wICh4ZGlzcGxheSwgcnVsZXNfcGF0aCwgJnJkZWZz KTsKKysgICAgZ19mcmVlIChydWxlc19wYXRoKTsKKysgICAgZ19mcmVlIChyZGVmcy5tb2RlbCk7 CisrICAgIGdfZnJlZSAocmRlZnMubGF5b3V0KTsKKysgICAgZ19mcmVlIChyZGVmcy52YXJpYW50 KTsKKysgICAgZ19mcmVlIChyZGVmcy5vcHRpb25zKTsKKysKKysgICAgcmV0dXJuIFRSVUU7Cisr fQorKworK3N0YXRpYyBCb29sCisrdXBkYXRlX3hrYl9wcm9wZXJ0aWVzIChEaXNwbGF5ICp4ZGlz cGxheSwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJ1bGVzX2ZpbGUsIGNv bnN0IGNoYXIgKm1vZGVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYWxs X2xheW91dHMsIGNvbnN0IGNoYXIgKmFsbF92YXJpYW50cywKKysgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmFsbF9vcHRpb25zKQorK3sKKysgICAgaW50IGxlbjsKKysgICAgY2hh ciAqcHZhbDsKKysgICAgY2hhciAqbmV4dDsKKysgICAgQXRvbSBydWxlc19hdG9tOworKyAgICBX aW5kb3cgcm9vdF93aW5kb3c7CisrCisrICAgIGxlbiA9IChydWxlc19maWxlID8gc3RybGVuIChy dWxlc19maWxlKSA6IDApOworKyAgICBsZW4gKz0gKG1vZGVsID8gc3RybGVuIChtb2RlbCkgOiAw KTsKKysgICAgbGVuICs9IChhbGxfbGF5b3V0cyA/IHN0cmxlbiAoYWxsX2xheW91dHMpIDogMCk7 CisrICAgIGxlbiArPSAoYWxsX3ZhcmlhbnRzID8gc3RybGVuIChhbGxfdmFyaWFudHMpIDogMCk7 CisrICAgIGxlbiArPSAoYWxsX29wdGlvbnMgPyBzdHJsZW4gKGFsbF9vcHRpb25zKSA6IDApOwor KworKyAgICBpZiAobGVuIDwgMSkgeworKyAgICAgICAgcmV0dXJuIFRSVUU7CisrICAgIH0KKysg ICAgbGVuICs9IDU7IC8qIHRyYWlsaW5nIE5VTHMgKi8KKysKKysgICAgcnVsZXNfYXRvbSA9IFhJ bnRlcm5BdG9tICh4ZGlzcGxheSwgX1hLQl9SRl9OQU1FU19QUk9QX0FUT00sIEZhbHNlKTsKKysg ICAgcm9vdF93aW5kb3cgPSBYRGVmYXVsdFJvb3RXaW5kb3cgKHhkaXNwbGF5KTsKKysgICAgcHZh bCA9IG5leHQgPSBnX25ldzAgKGNoYXIsIGxlbiArIDEpOworKyAgICBpZiAoIXB2YWwpIHsKKysg ICAgICAgIHJldHVybiBUUlVFOworKyAgICB9CisrCisrICAgIGlmIChydWxlc19maWxlKSB7Cisr ICAgICAgICBzdHJjcHkgKG5leHQsIHJ1bGVzX2ZpbGUpOworKyAgICAgICAgbmV4dCArPSBzdHJs ZW4gKHJ1bGVzX2ZpbGUpOworKyAgICB9CisrICAgICpuZXh0KysgPSAnXDAnOworKyAgICBpZiAo bW9kZWwpIHsKKysgICAgICAgIHN0cmNweSAobmV4dCwgbW9kZWwpOworKyAgICAgICAgbmV4dCAr PSBzdHJsZW4gKG1vZGVsKTsKKysgICAgfQorKyAgICAqbmV4dCsrID0gJ1wwJzsKKysgICAgaWYg KGFsbF9sYXlvdXRzKSB7CisrICAgICAgICBzdHJjcHkgKG5leHQsIGFsbF9sYXlvdXRzKTsKKysg ICAgICAgIG5leHQgKz0gc3RybGVuIChhbGxfbGF5b3V0cyk7CisrICAgIH0KKysgICAgKm5leHQr KyA9ICdcMCc7CisrICAgIGlmIChhbGxfdmFyaWFudHMpIHsKKysgICAgICAgIHN0cmNweSAobmV4 dCwgYWxsX3ZhcmlhbnRzKTsKKysgICAgICAgIG5leHQgKz0gc3RybGVuIChhbGxfdmFyaWFudHMp OworKyAgICB9CisrICAgICpuZXh0KysgPSAnXDAnOworKyAgICBpZiAoYWxsX29wdGlvbnMpIHsK KysgICAgICAgIHN0cmNweSAobmV4dCwgYWxsX29wdGlvbnMpOworKyAgICAgICAgbmV4dCArPSBz dHJsZW4gKGFsbF9vcHRpb25zKTsKKysgICAgfQorKyAgICAqbmV4dCsrID0gJ1wwJzsKKysgICAg aWYgKChuZXh0IC0gcHZhbCkgIT0gbGVuKSB7CisrICAgICAgICBnX2ZyZWUgKHB2YWwpOworKyAg ICAgICAgcmV0dXJuIFRSVUU7CisrICAgIH0KKysKKysgICAgWENoYW5nZVByb3BlcnR5ICh4ZGlz cGxheSwgcm9vdF93aW5kb3csCisrICAgICAgICAgICAgICAgICAgICBydWxlc19hdG9tLCBYQV9T VFJJTkcsIDgsIFByb3BNb2RlUmVwbGFjZSwKKysgICAgICAgICAgICAgICAgICAgICh1bnNpZ25l ZCBjaGFyICopIHB2YWwsIGxlbik7CisrICAgIFhTeW5jKHhkaXNwbGF5LCBGYWxzZSk7CisrCisr ICAgIHJldHVybiBUUlVFOworK30KKysKKyt2b2lkCisraWJ1c194a2JfaW5pdCAoRGlzcGxheSAq eGRpc3BsYXkpCisreworKyAgICBnZXRfeGRpc3BsYXkgKHhkaXNwbGF5KTsKKysgICAgaW5pdF94 a2JfZGVmYXVsdF9sYXlvdXRzICh4ZGlzcGxheSk7CisrfQorKworK2djaGFyICoKKytpYnVzX3hr Yl9nZXRfY3VycmVudF9sYXlvdXQgKHZvaWQpCisreworKyAgICBnX2Fzc2VydCAoZGVmYXVsdF9s YXlvdXRzICE9IE5VTEwpOworKworKyAgICByZXR1cm4gZ19zdHJqb2ludiAoIiwiLCAoZ2NoYXIg KiopIGRlZmF1bHRfbGF5b3V0cyk7CisrfQorKworK2dib29sZWFuCisraWJ1c194a2Jfc2V0X2xh eW91dCAgKGNvbnN0IGNoYXIgKmxheW91dHMsCisrICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKnZhcmlhbnRzLAorKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpvcHRp b25zKQorK3sKKysgICAgRGlzcGxheSAqeGRpc3BsYXk7CisrICAgIGdib29sZWFuIHJldHZhbDsK KysgICAgZ2NoYXIgKmxheW91dHNfbGluZTsKKysKKysgICAgZ19hc3NlcnQgKGRlZmF1bHRfbGF5 b3V0cyAhPSBOVUxMKTsKKysKKysgICAgaWYgKGxheW91dHMgPT0gTlVMTCB8fCBnX3N0cmNtcDAg KGxheW91dHMsICJkZWZhdWx0IikgPT0gMCkgeworKyAgICAgICAgbGF5b3V0c19saW5lID0gZ19z dHJqb2ludiAoIiwiLCAoZ2NoYXIgKiopIGRlZmF1bHRfbGF5b3V0cyk7CisrICAgIH0gZWxzZSB7 CisrICAgICAgICBsYXlvdXRzX2xpbmUgPSBnX3N0cmR1cCAobGF5b3V0cyk7CisrICAgIH0KKysK KysgICAgeGRpc3BsYXkgPSBnZXRfeGRpc3BsYXkgKE5VTEwpOworKyAgICByZXR2YWwgPSBzZXRf eGtiX3J1bGVzICh4ZGlzcGxheSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV2ZGV2 IiwgImV2ZGV2IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0c19saW5lLCB2 YXJpYW50cywgb3B0aW9ucyk7CisrICAgIHVwZGF0ZV94a2JfcHJvcGVydGllcyAoeGRpc3BsYXks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgImV2ZGV2IiwgImV2ZGV2IiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICBsYXlvdXRzX2xpbmUsIHZhcmlhbnRzLCBvcHRpb25zKTsKKysg ICAgZ19mcmVlIChsYXlvdXRzX2xpbmUpOworKworKyAgICByZXR1cm4gcmV0dmFsOworK30KK2Rp ZmYgLS1naXQgYS94a2IveGtibGliLmggYi94a2IveGtibGliLmgKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwLi41MGE3MTVhCistLS0gL2Rldi9udWxsCisrKysgYi94a2IveGti bGliLmgKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiB2aW06c2V0IGV0IHN0cz00OiAqLworKy8qIGJ1 cyAtIFRoZSBJbnB1dCBCdXMKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGFrYW8gRnVqaXdhcmEg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAg UGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAy MDA4LTIwMTAgUmVkIEhhdCwgSW5jLgorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysg KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUgR05VCisrICog TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy aXRlIHRvIHRoZQorKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLAorKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKyAq LworKyNpZm5kZWYgX19YS0JMSUJfSF8KKysjZGVmaW5lIF9fWEtCTElCX0hfCisrCisrI2luY2x1 ZGUgPFgxMS9YbGliLmg+CisrCisrR19CRUdJTl9ERUNMUworKworK3ZvaWQgICAgICAgICAgICAg aWJ1c194a2JfaW5pdCAgICAgICAgICAgICAgICAgICAoRGlzcGxheSAqeGRpc3BsYXkpOworK2dj aGFyICAgICAgICAgICAqaWJ1c194a2JfZ2V0X2N1cnJlbnRfbGF5b3V0ICAgICAodm9pZCk7Cisr Z2Jvb2xlYW4gICAgICAgICBpYnVzX3hrYl9zZXRfbGF5b3V0ICAgICAgICAgICAgIChjb25zdCBj aGFyICpsYXlvdXRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqdmFyaWFudHMsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpvcHRpb25zKTsKKysKKytHX0VO RF9ERUNMUworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3hrYi94a2J4bWwuYyBiL3hrYi94a2J4bWwu YworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFiNTNhZTEKKy0tLSAvZGV2 L251bGwKKysrKyBiL3hrYi94a2J4bWwuYworQEAgLTAsMCArMSw2OTUgQEAKKysvKiB2aW06c2V0 IGV0IHN0cz00OiAqLworKy8qIGJ1cyAtIFRoZSBJbnB1dCBCdXMKKysgKiBDb3B5cmlnaHQgKEMp IDIwMTAgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrICogQ29w eXJpZ2h0IChDKSAyMDA4LTIwMTAgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+ CisrICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAgUmVkIEhhdCwgSW5jLgorKyAqCisrICogVGhp cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4JIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorKyAqIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorKyAqIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLgorKyAqLworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrI2luY2x1ZGUg PGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxnbGliLmg+CisrCisrI2luY2x1ZGUg InhrYnhtbC5oIgorKyNpbmNsdWRlICJpYnVzY29tcG9uZW50LmgiCisrCisrI2lmbmRlZiBYS0Jf UlVMRVNfWE1MX0ZJTEUKKysjZGVmaW5lIFhLQl9SVUxFU19YTUxfRklMRSAiL3Vzci9zaGFyZS9Y MTEveGtiL3J1bGVzL2V2ZGV2LnhtbCIKKysjZW5kaWYKKysKKysjZGVmaW5lIElCVVNfWEtCX0NP TkZJR19SRUdJU1RSWV9HRVRfUFJJVkFURShvKSAgXAorKyAgIChHX1RZUEVfSU5TVEFOQ0VfR0VU X1BSSVZBVEUgKChvKSwgSUJVU19UWVBFX1hLQl9DT05GSUdfUkVHSVNUUlksIElCdXNYS0JDb25m aWdSZWdpc3RyeVByaXZhdGUpKQorKyNkZWZpbmUgSUJVU19YS0JfTEFZT1VUX0NPTkZJR19HRVRf UFJJVkFURShvKSAgXAorKyAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChvKSwgSUJV U19UWVBFX1hLQl9MQVlPVVRfQ09ORklHLCBJQnVzWEtCTGF5b3V0Q29uZmlnUHJpdmF0ZSkpCisr CisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNYS0JDb25maWdSZWdpc3RyeVByaXZhdGUgSUJ1c1hLQkNv bmZpZ1JlZ2lzdHJ5UHJpdmF0ZTsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c1hLQkxheW91dENvbmZp Z1ByaXZhdGUgSUJ1c1hLQkxheW91dENvbmZpZ1ByaXZhdGU7CisrCisrZW51bSB7CisrICAgIFBS T1BfMCwKKysgICAgUFJPUF9TWVNURU1fQ09ORklHX0ZJTEUsCisrfTsKKysKKytzdHJ1Y3QgX0lC dXNYS0JDb25maWdSZWdpc3RyeVByaXZhdGUgeworKyAgICBHSGFzaFRhYmxlICpsYXlvdXRfbGlz dDsKKysgICAgR0hhc2hUYWJsZSAqbGF5b3V0X2xhbmc7CisrICAgIEdIYXNoVGFibGUgKmxheW91 dF9kZXNjOworKyAgICBHSGFzaFRhYmxlICp2YXJpYW50X2Rlc2M7CisrfTsKKysKKytzdHJ1Y3Qg X0lCdXNYS0JMYXlvdXRDb25maWdQcml2YXRlIHsKKysgICAgZ2NoYXIgKnN5c3RlbV9jb25maWdf ZmlsZTsKKysgICAgR0xpc3QgKnByZWxvYWRfbGF5b3V0czsKKyt9OworKworKy8qIGZ1bmN0aW9u cyBwcm90b3R5cGUgKi8KKytzdGF0aWMgdm9pZCAgICAgICAgIGlidXNfeGtiX2NvbmZpZ19yZWdp c3RyeV9kZXN0cm95CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChJQnVzWEtCQ29uZmlnUmVnaXN0cnkgKnhrYl9jb25maWcpOworK3N0YXRpYyB2b2lkICAgICAg ICAgaWJ1c194a2JfbGF5b3V0X2NvbmZpZ19kZXN0cm95CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChJQnVzWEtCTGF5b3V0Q29uZmlnICp4a2JfbGF5b3V0X2Nv bmZpZyk7CisrCisrR19ERUZJTkVfVFlQRSAoSUJ1c1hLQkNvbmZpZ1JlZ2lzdHJ5LCBpYnVzX3hr Yl9jb25maWdfcmVnaXN0cnksIElCVVNfVFlQRV9PQkpFQ1QpCisrR19ERUZJTkVfVFlQRSAoSUJ1 c1hLQkxheW91dENvbmZpZywgaWJ1c194a2JfbGF5b3V0X2NvbmZpZywgSUJVU19UWVBFX09CSkVD VCkKKysKKytzdGF0aWMgdm9pZAorK3BhcnNlX3hrYl94bWxfbGFuZ3VhZ2VsaXN0X25vZGUgKElC dXNYS0JDb25maWdSZWdpc3RyeVByaXZhdGUgKnByaXYsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWE1MTm9kZSAqcGFyZW50X25vZGUsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmxheW91dF9uYW1lKQorK3sKKysgICAgWE1MTm9kZSAq bm9kZSA9IHBhcmVudF9ub2RlOworKyAgICBYTUxOb2RlICpzdWJfbm9kZTsKKysgICAgR0xpc3Qg KnA7CisrICAgIEdMaXN0ICpsYW5nX2xpc3QgPSBOVUxMOworKworKyAgICBnX2Fzc2VydCAobm9k ZSAhPSBOVUxMKTsKKysgICAgZ19hc3NlcnQgKGxheW91dF9uYW1lICE9IE5VTEwpOworKyAgICBm b3IgKHAgPSBub2RlLT5zdWJfbm9kZXM7IHA7IHAgPSBwLT5uZXh0KSB7CisrICAgICAgICBzdWJf bm9kZSA9IChYTUxOb2RlICopIHAtPmRhdGE7CisrICAgICAgICBpZiAoZ19zdHJjbXAwIChzdWJf bm9kZS0+bmFtZSwgImlzbzYzOUlkIikgPT0gMCkgeworKyAgICAgICAgICAgIGxhbmdfbGlzdCA9 IGdfbGlzdF9hcHBlbmQgKGxhbmdfbGlzdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ3BvaW50ZXIpIGdfc3RyZHVwIChzdWJfbm9kZS0+dGV4dCkpOworKyAgICAg ICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICB9CisrICAgIGlmIChsYW5nX2xpc3Qg PT0gTlVMTCkgeworKyAgICAgICAgLyogc29tZSBub2RlcyBoYXZlIG5vIGxhbmcgKi8KKysgICAg ICAgIHJldHVybjsKKysgICAgfQorKyAgICBpZiAoZ19oYXNoX3RhYmxlX2xvb2t1cCAocHJpdi0+ bGF5b3V0X2xhbmcsIGxheW91dF9uYW1lKSAhPSBOVUxMKSB7CisrICAgICAgICBnX3dhcm5pbmcg KCJkdXBsaWNhdGVkIG5hbWUgJXMgZXhpc3RzIiwgbGF5b3V0X25hbWUpOworKyAgICAgICAgcmV0 dXJuOworKyAgICB9CisrICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHByaXYtPmxheW91dF9sYW5n LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ3BvaW50ZXIpIGdfc3RyZHVwIChsYXlvdXRf bmFtZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgIChncG9pbnRlcikgbGFuZ19saXN0KTsK Kyt9CisrCisrc3RhdGljIGNvbnN0IGdjaGFyICoKKytwYXJzZV94a2JfeG1sX2NvbmZpZ2l0ZW1f bm9kZSAoSUJ1c1hLQkNvbmZpZ1JlZ2lzdHJ5UHJpdmF0ZSAqcHJpdiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWE1MTm9kZSAqcGFyZW50X25vZGUpCisreworKyAgICBYTUxOb2Rl ICpub2RlID0gcGFyZW50X25vZGU7CisrICAgIFhNTE5vZGUgKnN1Yl9ub2RlOworKyAgICBHTGlz dCAqcDsKKysgICAgZ2NoYXIgKm5hbWUgPSBOVUxMOworKyAgICBnY2hhciAqZGVzY3JpcHRpb24g PSBOVUxMOworKworKyAgICBnX2Fzc2VydCAobm9kZSAhPSBOVUxMKTsKKysgICAgZm9yIChwID0g bm9kZS0+c3ViX25vZGVzOyBwOyBwID0gcC0+bmV4dCkgeworKyAgICAgICAgc3ViX25vZGUgPSAo WE1MTm9kZSAqKSBwLT5kYXRhOworKyAgICAgICAgaWYgKGdfc3RyY21wMCAoc3ViX25vZGUtPm5h bWUsICJuYW1lIikgPT0gMCkgeworKyAgICAgICAgICAgIG5hbWUgPSBzdWJfbm9kZS0+dGV4dDsK KysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChnX3N0cmNt cDAgKHN1Yl9ub2RlLT5uYW1lLCAiZGVzY3JpcHRpb24iKSA9PSAwKSB7CisrICAgICAgICAgICAg ZGVzY3JpcHRpb24gPSBzdWJfbm9kZS0+dGV4dDsKKysgICAgICAgICAgICBjb250aW51ZTsKKysg ICAgICAgIH0KKysgICAgICAgIGlmIChnX3N0cmNtcDAgKHN1Yl9ub2RlLT5uYW1lLCAibGFuZ3Vh Z2VMaXN0IikgPT0gMCkgeworKyAgICAgICAgICAgIGlmIChuYW1lID09IE5VTEwpIHsKKysgICAg ICAgICAgICAgICAgZ193YXJuaW5nICgibGF5b3V0IG5hbWUgaXMgTlVMTCBpbiBub2RlICVzIiwg bm9kZS0+bmFtZSk7CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgIH0K KysgICAgICAgICAgICBwYXJzZV94a2JfeG1sX2xhbmd1YWdlbGlzdF9ub2RlIChwcml2LCBzdWJf bm9kZSwgbmFtZSk7CisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisrICAgIH0K KysgICAgaWYgKG5hbWUgPT0gTlVMTCkgeworKyAgICAgICAgZ193YXJuaW5nICgiTm8gbmFtZSBp biBsYXlvdXQgbm9kZSIpOworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysgICAgaWYg KGdfaGFzaF90YWJsZV9sb29rdXAgKHByaXYtPmxheW91dF9kZXNjLCBuYW1lKSAhPSBOVUxMKSB7 CisrICAgICAgICBnX3dhcm5pbmcgKCJkdXBsaWNhdGVkIG5hbWUgJXMgZXhpc3RzIiwgbmFtZSk7 CisrICAgICAgICByZXR1cm4gbmFtZTsKKysgICAgfQorKyAgICBnX2hhc2hfdGFibGVfaW5zZXJ0 IChwcml2LT5sYXlvdXRfZGVzYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgKGdwb2ludGVy KSBnX3N0cmR1cCAobmFtZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgIChncG9pbnRlcikg Z19zdHJkdXAgKGRlc2NyaXB0aW9uKSk7CisrCisrICAgIHJldHVybiBuYW1lOworK30KKysKKytz dGF0aWMgY29uc3QgZ2NoYXIgKgorK3BhcnNlX3hrYl94bWxfdmFyaWFudF9jb25maWdpdGVtX25v ZGUgKElCdXNYS0JDb25maWdSZWdpc3RyeVByaXZhdGUgKnByaXYsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFhNTE5vZGUgKnBhcmVudF9ub2RlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBnY2hhciAqbGF5b3V0X25hbWUpCisreworKyAgICBYTUxOb2RlICpub2Rl ID0gcGFyZW50X25vZGU7CisrICAgIFhNTE5vZGUgKnN1Yl9ub2RlOworKyAgICBHTGlzdCAqcDsK KysgICAgZ2NoYXIgKm5hbWUgPSBOVUxMOworKyAgICBnY2hhciAqZGVzY3JpcHRpb24gPSBOVUxM OworKyAgICBnY2hhciAqdmFyaWFudF9sYW5nX25hbWUgPSBOVUxMOworKworKyAgICBnX2Fzc2Vy dCAobm9kZSAhPSBOVUxMKTsKKysgICAgZ19hc3NlcnQgKGxheW91dF9uYW1lICE9IE5VTEwpOwor KyAgICBmb3IgKHAgPSBub2RlLT5zdWJfbm9kZXM7IHA7IHAgPSBwLT5uZXh0KSB7CisrICAgICAg ICBzdWJfbm9kZSA9IChYTUxOb2RlICopIHAtPmRhdGE7CisrICAgICAgICBpZiAoZ19zdHJjbXAw IChzdWJfbm9kZS0+bmFtZSwgIm5hbWUiKSA9PSAwKSB7CisrICAgICAgICAgICAgbmFtZSA9IHN1 Yl9ub2RlLT50ZXh0OworKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICAg ICAgaWYgKGdfc3RyY21wMCAoc3ViX25vZGUtPm5hbWUsICJkZXNjcmlwdGlvbiIpID09IDApIHsK KysgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHN1Yl9ub2RlLT50ZXh0OworKyAgICAgICAgICAg IGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGdfc3RyY21wMCAoc3ViX25vZGUt Pm5hbWUsICJsYW5ndWFnZUxpc3QiKSA9PSAwKSB7CisrICAgICAgICAgICAgaWYgKG5hbWUgPT0g TlVMTCkgeworKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJsYXlvdXQgbmFtZSBpcyBOVUxM IGluIG5vZGUgJXMiLCBub2RlLT5uYW1lKTsKKysgICAgICAgICAgICAgICAgY29udGludWU7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHZhcmlhbnRfbGFuZ19uYW1lID0gZ19zdHJkdXBf cHJpbnRmICgiJXMoJXMpIiwgbGF5b3V0X25hbWUsIG5hbWUpOworKyAgICAgICAgICAgIHBhcnNl X3hrYl94bWxfbGFuZ3VhZ2VsaXN0X25vZGUgKHByaXYsIHN1Yl9ub2RlLCB2YXJpYW50X2xhbmdf bmFtZSk7CisrICAgICAgICAgICAgZ19mcmVlICh2YXJpYW50X2xhbmdfbmFtZSk7CisrICAgICAg ICAgICAgY29udGludWU7CisrICAgICAgICB9CisrICAgIH0KKysgICAgaWYgKG5hbWUgPT0gTlVM TCkgeworKyAgICAgICAgZ193YXJuaW5nICgiTm8gbmFtZSBpbiBsYXlvdXQgbm9kZSIpOworKyAg ICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysgICAgaWYgKGdfaGFzaF90YWJsZV9sb29rdXAg KHByaXYtPnZhcmlhbnRfZGVzYywgbmFtZSkgIT0gTlVMTCkgeworKyAgICAgICAgLyogVGhpcyBp cyBhbiBleHBlY3RlZCBjYXNlLiAqLworKyAgICAgICAgcmV0dXJuIG5hbWU7CisrICAgIH0KKysg ICAgZ19oYXNoX3RhYmxlX2luc2VydCAocHJpdi0+dmFyaWFudF9kZXNjLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAoZ3BvaW50ZXIpIGdfc3RyZHVwIChuYW1lKSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgKGdwb2ludGVyKSBnX3N0cmR1cCAoZGVzY3JpcHRpb24pKTsKKysgICAgcmV0 dXJuIG5hbWU7CisrfQorKworK3N0YXRpYyBjb25zdCBnY2hhciAqCisrcGFyc2VfeGtiX3htbF92 YXJpYW50X25vZGUgKElCdXNYS0JDb25maWdSZWdpc3RyeVByaXZhdGUgKnByaXYsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhNTE5vZGUgKnBhcmVudF9ub2RlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqbGF5b3V0X25hbWUpCisreworKyAgICBYTUxO b2RlICpub2RlID0gcGFyZW50X25vZGU7CisrICAgIFhNTE5vZGUgKnN1Yl9ub2RlOworKyAgICBH TGlzdCAqcDsKKysgICAgY29uc3QgZ2NoYXIgKnZhcmlhbnRfbmFtZSA9IE5VTEw7CisrCisrICAg IGdfYXNzZXJ0IChub2RlICE9IE5VTEwpOworKyAgICBnX2Fzc2VydCAobGF5b3V0X25hbWUgIT0g TlVMTCk7CisrICAgIGZvciAocCA9IG5vZGUtPnN1Yl9ub2RlczsgcDsgcCA9IHAtPm5leHQpIHsK KysgICAgICAgIHN1Yl9ub2RlID0gKFhNTE5vZGUgKikgcC0+ZGF0YTsKKysgICAgICAgIGlmIChn X3N0cmNtcDAgKHN1Yl9ub2RlLT5uYW1lLCAiY29uZmlnSXRlbSIpID09IDApIHsKKysgICAgICAg ICAgICB2YXJpYW50X25hbWUgPSBwYXJzZV94a2JfeG1sX3ZhcmlhbnRfY29uZmlnaXRlbV9ub2Rl IChwcml2LCBzdWJfbm9kZSwgbGF5b3V0X25hbWUpOworKyAgICAgICAgICAgIGNvbnRpbnVlOwor KyAgICAgICAgfQorKyAgICB9CisrICAgIHJldHVybiB2YXJpYW50X25hbWU7CisrfQorKworK3N0 YXRpYyBHTGlzdCAqCisrcGFyc2VfeGtiX3htbF92YXJpYW50bGlzdF9ub2RlIChJQnVzWEtCQ29u ZmlnUmVnaXN0cnlQcml2YXRlICpwcml2LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgWE1MTm9kZSAqcGFyZW50X25vZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBnY2hhciAqbGF5b3V0X25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGlzdCAqdmFyaWFudF9saXN0KQorK3sKKysgICAgWE1MTm9kZSAqbm9kZSA9IHBhcmVu dF9ub2RlOworKyAgICBYTUxOb2RlICpzdWJfbm9kZTsKKysgICAgR0xpc3QgKnA7CisrICAgIGNv bnN0IGdjaGFyICp2YXJpYW50X25hbWUgPSBOVUxMOworKworKyAgICBnX2Fzc2VydCAobm9kZSAh PSBOVUxMKTsKKysgICAgZ19hc3NlcnQgKGxheW91dF9uYW1lICE9IE5VTEwpOworKyAgICBmb3Ig KHAgPSBub2RlLT5zdWJfbm9kZXM7IHA7IHAgPSBwLT5uZXh0KSB7CisrICAgICAgICBzdWJfbm9k ZSA9IChYTUxOb2RlICopIHAtPmRhdGE7CisrICAgICAgICBpZiAoZ19zdHJjbXAwIChzdWJfbm9k ZS0+bmFtZSwgInZhcmlhbnQiKSA9PSAwKSB7CisrICAgICAgICAgICAgdmFyaWFudF9uYW1lID0g cGFyc2VfeGtiX3htbF92YXJpYW50X25vZGUgKHByaXYsIHN1Yl9ub2RlLCBsYXlvdXRfbmFtZSk7 CisrICAgICAgICAgICAgaWYgKHZhcmlhbnRfbmFtZSAhPSBOVUxMKSB7CisrICAgICAgICAgICAg ICAgIHZhcmlhbnRfbGlzdCA9IGdfbGlzdF9hcHBlbmQgKHZhcmlhbnRfbGlzdCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdwb2ludGVyKSBnX3N0cmR1 cCAodmFyaWFudF9uYW1lKSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGNvbnRpbnVl OworKyAgICAgICAgfQorKyAgICB9CisrICAgIHJldHVybiB2YXJpYW50X2xpc3Q7CisrfQorKwor K3N0YXRpYyB2b2lkCisrcGFyc2VfeGtiX3htbF9sYXlvdXRfbm9kZSAoSUJ1c1hLQkNvbmZpZ1Jl Z2lzdHJ5UHJpdmF0ZSAqcHJpdiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxOb2Rl ICpwYXJlbnRfbm9kZSkKKyt7CisrICAgIFhNTE5vZGUgKm5vZGUgPSBwYXJlbnRfbm9kZTsKKysg ICAgWE1MTm9kZSAqc3ViX25vZGU7CisrICAgIEdMaXN0ICpwOworKyAgICBjb25zdCBnY2hhciAq bmFtZSA9IE5VTEw7CisrICAgIEdMaXN0ICp2YXJpYW50X2xpc3QgPSBOVUxMOworKworKyAgICBn X2Fzc2VydCAobm9kZSAhPSBOVUxMKTsKKysgICAgZm9yIChwID0gbm9kZS0+c3ViX25vZGVzOyBw OyBwID0gcC0+bmV4dCkgeworKyAgICAgICAgc3ViX25vZGUgPSAoWE1MTm9kZSAqKSBwLT5kYXRh OworKyAgICAgICAgaWYgKGdfc3RyY21wMCAoc3ViX25vZGUtPm5hbWUsICJjb25maWdJdGVtIikg PT0gMCkgeworKyAgICAgICAgICAgIG5hbWUgPSBwYXJzZV94a2JfeG1sX2NvbmZpZ2l0ZW1fbm9k ZSAocHJpdiwgc3ViX25vZGUpOworKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQor KyAgICAgICAgaWYgKGdfc3RyY21wMCAoc3ViX25vZGUtPm5hbWUsICJ2YXJpYW50TGlzdCIpID09 IDApIHsKKysgICAgICAgICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgICAg IGdfd2FybmluZyAoImxheW91dCBuYW1lIGlzIE5VTEwgaW4gbm9kZSAlcyIsIG5vZGUtPm5hbWUp OworKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgdmFyaWFudF9saXN0ID0gcGFyc2VfeGtiX3htbF92YXJpYW50bGlzdF9ub2RlIChwcml2LCBz dWJfbm9kZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50X2xpc3QpOworKyAgICAgICAgICAgIGNvbnRp bnVlOworKyAgICAgICAgfQorKyAgICB9CisrICAgIGlmIChnX2hhc2hfdGFibGVfbG9va3VwIChw cml2LT5sYXlvdXRfbGlzdCwgbmFtZSkgIT0gTlVMTCkgeworKyAgICAgICAgZ193YXJuaW5nICgi ZHVwbGljYXRlZCBuYW1lICVzIGV4aXN0cyIsIG5hbWUpOworKyAgICAgICAgcmV0dXJuOworKyAg ICB9CisrICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHByaXYtPmxheW91dF9saXN0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAoZ3BvaW50ZXIpIGdfc3RyZHVwIChuYW1lKSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgKGdwb2ludGVyKSB2YXJpYW50X2xpc3QpOworK30KKysKKytzdGF0 aWMgdm9pZAorK3BhcnNlX3hrYl94bWxfdG9wX25vZGUgKElCdXNYS0JDb25maWdSZWdpc3RyeVBy aXZhdGUgKnByaXYsCisrICAgICAgICAgICAgICAgICAgICAgICAgWE1MTm9kZSAqcGFyZW50X25v ZGUpCisreworKyAgICBYTUxOb2RlICpub2RlID0gcGFyZW50X25vZGU7CisrICAgIFhNTE5vZGUg KnN1Yl9ub2RlOworKyAgICBHTGlzdCAqcDsKKysKKysgICAgZ19hc3NlcnQgKHByaXYgIT0gTlVM TCk7CisrICAgIGdfYXNzZXJ0IChub2RlICE9IE5VTEwpOworKworKyAgICBpZiAoZ19zdHJjbXAw IChub2RlLT5uYW1lLCAieGtiQ29uZmlnUmVnaXN0cnkiKSAhPSAwKSB7CisrICAgICAgICBnX3dh cm5pbmcgKCJub2RlIGhhcyBubyB4a2JDb25maWdSZWdpc3RyeSBuYW1lIik7CisrICAgICAgICBy ZXR1cm47CisrICAgIH0KKysgICAgZm9yIChwID0gbm9kZS0+c3ViX25vZGVzOyBwOyBwID0gcC0+ bmV4dCkgeworKyAgICAgICAgc3ViX25vZGUgPSAoWE1MTm9kZSAqKSBwLT5kYXRhOworKyAgICAg ICAgaWYgKGdfc3RyY21wMCAoc3ViX25vZGUtPm5hbWUsICJsYXlvdXRMaXN0IikgPT0gMCkgewor KyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisrICAgIGlmIChwID09IE5V TEwpIHsKKysgICAgICAgIGdfd2FybmluZyAoInhrYkNvbmZpZ1JlZ2lzdHJ5IG5vZGUgaGFzIG5v IGxheW91dExpc3Qgbm9kZSIpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIG5vZGUg PSBzdWJfbm9kZTsKKysgICAgZm9yIChwID0gbm9kZS0+c3ViX25vZGVzOyBwOyBwID0gcC0+bmV4 dCkgeworKyAgICAgICAgc3ViX25vZGUgPSAoWE1MTm9kZSAqKSBwLT5kYXRhOworKyAgICAgICAg aWYgKGdfc3RyY21wMCAoc3ViX25vZGUtPm5hbWUsICJsYXlvdXQiKSA9PSAwKSB7CisrICAgICAg ICAgICAgcGFyc2VfeGtiX3htbF9sYXlvdXRfbm9kZSAocHJpdiwgc3ViX25vZGUpOworKyAgICAg ICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lk CisrZnJlZV9sYW5nX2xpc3QgKEdMaXN0ICpsaXN0KQorK3sKKysgICAgR0xpc3QgKmwgPSBsaXN0 OworKyAgICB3aGlsZSAobCkgeworKyAgICAgICAgZ19mcmVlIChsLT5kYXRhKTsKKysgICAgICAg IGwtPmRhdGEgPSBOVUxMOworKyAgICAgICAgbCA9IGwtPm5leHQ7CisrICAgIH0KKysgICAgZ19s aXN0X2ZyZWUgKGxpc3QpOworK30KKysKKytzdGF0aWMgdm9pZAorK3BhcnNlX3hrYl9jb25maWdf cmVnaXN0cnlfZmlsZSAoSUJ1c1hLQkNvbmZpZ1JlZ2lzdHJ5UHJpdmF0ZSAqcHJpdiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpmaWxlKQorK3sKKysgICAg WE1MTm9kZSAqbm9kZTsKKysKKysgICAgZ19hc3NlcnQgKGZpbGUgIT0gTlVMTCk7CisrCisrICAg IHByaXYtPmxheW91dF9saXN0ID0gZ19oYXNoX3RhYmxlX25ld19mdWxsIChnX3N0cl9oYXNoLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdFcXVhbEZ1 bmMpIGdfc3RyX2VxdWFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnX2ZyZWUsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGZyZWVfbGFuZ19saXN0 KTsKKysgICAgcHJpdi0+bGF5b3V0X2Rlc2MgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwgKGdfc3Ry X2hhc2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo R0VxdWFsRnVuYykgZ19zdHJfZXF1YWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdfZnJlZSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgZ19mcmVl KTsKKysgICAgcHJpdi0+bGF5b3V0X2xhbmcgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwgKGdfc3Ry X2hhc2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo R0VxdWFsRnVuYykgZ19zdHJfZXF1YWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdfZnJlZSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgZnJlZV9s YW5nX2xpc3QpOworKyAgICBwcml2LT52YXJpYW50X2Rlc2MgPSBnX2hhc2hfdGFibGVfbmV3X2Z1 bGwgKGdfc3RyX2hhc2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoR0VxdWFsRnVuYykgZ19zdHJfZXF1YWwsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdfZnJlZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHRGVzdHJveU5vdGlm eSkgZ19mcmVlKTsKKysgICAgbm9kZSA9IGlidXNfeG1sX3BhcnNlX2ZpbGUgKGZpbGUpOworKyAg ICBwYXJzZV94a2JfeG1sX3RvcF9ub2RlIChwcml2LCBub2RlKTsKKysgICAgaWJ1c194bWxfZnJl ZSAobm9kZSk7CisrfQorKworK3N0YXRpYyBHTGlzdCAqCisrcGFyc2VfeGtibGF5b3V0Y29uZmln X2ZpbGUgKGdjaGFyICpwYXRoKQorK3sKKysgICAgWE1MTm9kZSAqbm9kZSA9IE5VTEw7CisrICAg IFhNTE5vZGUgKnN1Yl9ub2RlOworKyAgICBYTUxOb2RlICpzdWJfc3ViX25vZGU7CisrICAgIEdM aXN0ICpwOworKyAgICBHTGlzdCAqcmV0dmFsID0gTlVMTDsKKysgICAgZ2NoYXIgKiphcnJheTsK KysgICAgaW50IGk7CisrCisrICAgIG5vZGUgPSBpYnVzX3htbF9wYXJzZV9maWxlIChwYXRoKTsK KysgICAgaWYgKG5vZGUgPT0gTlVMTCkgeworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0K KysgICAgaWYgKGdfc3RyY21wMCAobm9kZS0+bmFtZSwgInhrYmxheW91dCIpICE9IDApIHsKKysg ICAgICAgIGlidXNfeG1sX2ZyZWUgKG5vZGUpOworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAg IH0KKysgICAgZm9yIChwID0gbm9kZS0+c3ViX25vZGVzOyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0 KSB7CisrICAgICAgICBzdWJfbm9kZSA9IChYTUxOb2RlICopIHAtPmRhdGE7CisrICAgICAgICBp ZiAoZ19zdHJjbXAwIChzdWJfbm9kZS0+bmFtZSwgImNvbmZpZyIpID09IDApIHsKKysgICAgICAg ICAgICBHTGlzdCAqcHA7CisrICAgICAgICAgICAgZm9yIChwcCA9IHN1Yl9ub2RlLT5zdWJfbm9k ZXM7IHBwICE9IE5VTEw7IHBwID0gcHAtPm5leHQpIHsKKysgICAgICAgICAgICAgICAgc3ViX3N1 Yl9ub2RlID0gKFhNTE5vZGUgKikgcHAtPmRhdGE7CisrICAgICAgICAgICAgICAgIGlmICAoZ19z dHJjbXAwIChzdWJfc3ViX25vZGUtPm5hbWUsICJwcmVsb2FkX2xheW91dHMiKSA9PSAwKSB7Cisr ICAgICAgICAgICAgICAgICAgICBpZiAoc3ViX3N1Yl9ub2RlLT50ZXh0ICE9IE5VTEwpIHsKKysg ICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGdfc3Ryc3BsaXQgKChnY2hhciAqKSBzdWJf c3ViX25vZGUtPnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiLCIsIC0xKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBhcnJh eVtpXTsgaSsrKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IGdfbGlz dF9hcHBlbmQgKHJldHZhbCwgZ19zdHJkdXAgKGFycmF5W2ldKSk7CisrICAgICAgICAgICAgICAg ICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZnJlZXYgKGFycmF5KTsK KysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgICAgIH0K KysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAg IGlmIChyZXR2YWwgIT0gTlVMTCkgeworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQor KyAgICB9CisrCisrICAgIGlidXNfeG1sX2ZyZWUgKG5vZGUpOworKyAgICByZXR1cm4gcmV0dmFs OworK30KKysKKytzdGF0aWMgdm9pZAorK3BhcnNlX3hrYl9sYXlvdXRfY29uZmlnIChJQnVzWEtC TGF5b3V0Q29uZmlnUHJpdmF0ZSAqcHJpdikKKyt7CisrICAgIGdjaGFyICpiYXNlbmFtZTsKKysg ICAgZ2NoYXIgKnVzZXJfY29uZmlnOworKyAgICBHTGlzdCAqbGlzdCA9IE5VTEw7CisrCisrICAg IGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnN5c3RlbV9jb25maWdfZmlsZSAhPSBOVUxMKTsKKysK KysgICAgYmFzZW5hbWUgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lIChwcml2LT5zeXN0ZW1fY29uZmln X2ZpbGUpOworKyAgICB1c2VyX2NvbmZpZyA9IGdfYnVpbGRfZmlsZW5hbWUgKGdfZ2V0X3VzZXJf Y29uZmlnX2RpciAoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWJ1 cyIsICJ4a2IiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VuYW1l LCBOVUxMKTsKKysgICAgZ19mcmVlIChiYXNlbmFtZSk7CisrICAgIGxpc3QgPSBwYXJzZV94a2Js YXlvdXRjb25maWdfZmlsZSAodXNlcl9jb25maWcpOworKyAgICBnX2ZyZWUgKHVzZXJfY29uZmln KTsKKysgICAgaWYgKGxpc3QpIHsKKysgICAgICAgIHByaXYtPnByZWxvYWRfbGF5b3V0cyA9IGxp c3Q7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgbGlzdCA9IHBhcnNlX3hrYmxheW91 dGNvbmZpZ19maWxlIChwcml2LT5zeXN0ZW1fY29uZmlnX2ZpbGUpOworKyAgICBwcml2LT5wcmVs b2FkX2xheW91dHMgPSBsaXN0OworK30KKysKKytzdGF0aWMgdm9pZAorK2lidXNfeGtiX2NvbmZp Z19yZWdpc3RyeV9pbml0IChJQnVzWEtCQ29uZmlnUmVnaXN0cnkgKnhrYl9jb25maWcpCisrewor KyAgICBJQnVzWEtCQ29uZmlnUmVnaXN0cnlQcml2YXRlICpwcml2OworKyAgICBjb25zdCBnY2hh ciAqZmlsZSA9IFhLQl9SVUxFU19YTUxfRklMRTsKKysKKysgICAgcHJpdiA9IElCVVNfWEtCX0NP TkZJR19SRUdJU1RSWV9HRVRfUFJJVkFURSAoeGtiX2NvbmZpZyk7CisrICAgIHBhcnNlX3hrYl9j b25maWdfcmVnaXN0cnlfZmlsZSAocHJpdiwgZmlsZSk7CisrfQorKworK3N0YXRpYyB2b2lkCisr aWJ1c194a2JfY29uZmlnX3JlZ2lzdHJ5X2Rlc3Ryb3kgKElCdXNYS0JDb25maWdSZWdpc3RyeSAq eGtiX2NvbmZpZykKKyt7CisrICAgIElCdXNYS0JDb25maWdSZWdpc3RyeVByaXZhdGUgKnByaXY7 CisrCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHhrYl9jb25maWcgIT0gTlVMTCk7CisrCisrICAg IHByaXYgPSBJQlVTX1hLQl9DT05GSUdfUkVHSVNUUllfR0VUX1BSSVZBVEUgKHhrYl9jb25maWcp OworKworKyAgICBnX2hhc2hfdGFibGVfZGVzdHJveSAocHJpdi0+bGF5b3V0X2xpc3QpOworKyAg ICBwcml2LT5sYXlvdXRfbGlzdCA9IE5VTEw7CisrICAgIGdfaGFzaF90YWJsZV9kZXN0cm95IChw cml2LT5sYXlvdXRfbGFuZyk7CisrICAgIHByaXYtPmxheW91dF9sYW5nPSBOVUxMOworKyAgICBn X2hhc2hfdGFibGVfZGVzdHJveSAocHJpdi0+bGF5b3V0X2Rlc2MpOworKyAgICBwcml2LT5sYXlv dXRfZGVzYz0gTlVMTDsKKysgICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kgKHByaXYtPnZhcmlhbnRf ZGVzYyk7CisrICAgIHByaXYtPnZhcmlhbnRfZGVzYyA9IE5VTEw7CisrCisrICAgIElCVVNfT0JK RUNUX0NMQVNTKGlidXNfeGtiX2NvbmZpZ19yZWdpc3RyeV9wYXJlbnRfY2xhc3MpLT5kZXN0cm95 IChJQlVTX09CSkVDVCAoeGtiX2NvbmZpZykpOworK30KKysKKytzdGF0aWMgdm9pZAorK2lidXNf eGtiX2NvbmZpZ19yZWdpc3RyeV9jbGFzc19pbml0IChJQnVzWEtCQ29uZmlnUmVnaXN0cnlDbGFz cyAqa2xhc3MpCisreworKyAgICBJQnVzT2JqZWN0Q2xhc3MgKmlidXNfb2JqZWN0X2NsYXNzID0g SUJVU19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKysKKysgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2 YXRlIChrbGFzcywgc2l6ZW9mIChJQnVzWEtCQ29uZmlnUmVnaXN0cnlQcml2YXRlKSk7CisrCisr ICAgIGlidXNfb2JqZWN0X2NsYXNzLT5kZXN0cm95ID0gKElCdXNPYmplY3REZXN0cm95RnVuYykg aWJ1c194a2JfY29uZmlnX3JlZ2lzdHJ5X2Rlc3Ryb3k7CisrfQorKworK3N0YXRpYyB2b2lkCisr aWJ1c194a2JfbGF5b3V0X2NvbmZpZ19pbml0IChJQnVzWEtCTGF5b3V0Q29uZmlnICp4a2JfbGF5 b3V0X2NvbmZpZykKKyt7CisrICAgIElCdXNYS0JMYXlvdXRDb25maWdQcml2YXRlICpwcml2Owor KworKyAgICBwcml2ID0gSUJVU19YS0JfTEFZT1VUX0NPTkZJR19HRVRfUFJJVkFURSAoeGtiX2xh eW91dF9jb25maWcpOworKyAgICBwcml2LT5zeXN0ZW1fY29uZmlnX2ZpbGUgPSBOVUxMOworKyAg ICBwcml2LT5wcmVsb2FkX2xheW91dHMgPSBOVUxMOworK30KKysKKytzdGF0aWMgR09iamVjdCAq CisraWJ1c194a2JfbGF5b3V0X2NvbmZpZ19jb25zdHJ1Y3RvciAoR1R5cGUgdHlwZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBuX2NvbnN0cnVjdF9wYXJhbXMs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR09iamVjdENvbnN0cnVjdFBh cmFtICpjb25zdHJ1Y3RfcGFyYW1zKQorK3sKKysgICAgR09iamVjdCAqb2JqOworKyAgICBJQnVz WEtCTGF5b3V0Q29uZmlnICp4a2JfbGF5b3V0X2NvbmZpZzsKKysgICAgSUJ1c1hLQkxheW91dENv bmZpZ1ByaXZhdGUgKnByaXY7CisrCisrICAgIG9iaiA9IEdfT0JKRUNUX0NMQVNTIChpYnVzX3hr Yl9sYXlvdXRfY29uZmlnX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yICh0eXBlLCBuX2NvbnN0 cnVjdF9wYXJhbXMsIGNvbnN0cnVjdF9wYXJhbXMpOworKyAgICB4a2JfbGF5b3V0X2NvbmZpZyA9 IElCVVNfWEtCX0xBWU9VVF9DT05GSUcgKG9iaik7CisrICAgIHByaXYgPSBJQlVTX1hLQl9MQVlP VVRfQ09ORklHX0dFVF9QUklWQVRFICh4a2JfbGF5b3V0X2NvbmZpZyk7CisrICAgIHBhcnNlX3hr Yl9sYXlvdXRfY29uZmlnIChwcml2KTsKKysKKysgICAgcmV0dXJuIG9iajsKKyt9CisrCisrc3Rh dGljIHZvaWQKKytpYnVzX3hrYl9sYXlvdXRfY29uZmlnX2Rlc3Ryb3kgKElCdXNYS0JMYXlvdXRD b25maWcgKnhrYl9sYXlvdXRfY29uZmlnKQorK3sKKysgICAgSUJ1c1hLQkxheW91dENvbmZpZ1By aXZhdGUgKnByaXY7CisrCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHhrYl9sYXlvdXRfY29uZmln ICE9IE5VTEwpOworKworKyAgICBwcml2ID0gSUJVU19YS0JfTEFZT1VUX0NPTkZJR19HRVRfUFJJ VkFURSAoeGtiX2xheW91dF9jb25maWcpOworKworKyAgICBnX2ZyZWUgKHByaXYtPnN5c3RlbV9j b25maWdfZmlsZSk7CisrICAgIHByaXYtPnN5c3RlbV9jb25maWdfZmlsZSA9IE5VTEw7CisrICAg IGZyZWVfbGFuZ19saXN0IChwcml2LT5wcmVsb2FkX2xheW91dHMpOworKyAgICBwcml2LT5wcmVs b2FkX2xheW91dHMgPSBOVUxMOworK30KKysKKytzdGF0aWMgdm9pZAorK2lidXNfeGtiX2xheW91 dF9jb25maWdfc2V0X3Byb3BlcnR5IChJQnVzWEtCTGF5b3V0Q29uZmlnICp4a2JfbGF5b3V0X2Nv bmZpZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAg ICAgICAgICAgcHJvcF9pZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgR1ZhbHVlICAgICAgICAqdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdQYXJhbVNwZWMgICAgICAgICAgKnBzcGVjKQorK3sKKysgICAgSUJ1c1hLQkxh eW91dENvbmZpZ1ByaXZhdGUgKnByaXY7CisrCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHhrYl9s YXlvdXRfY29uZmlnICE9IE5VTEwpOworKyAgICBwcml2ID0gSUJVU19YS0JfTEFZT1VUX0NPTkZJ R19HRVRfUFJJVkFURSAoeGtiX2xheW91dF9jb25maWcpOworKworKyAgICBzd2l0Y2ggKHByb3Bf aWQpIHsKKysgICAgY2FzZSBQUk9QX1NZU1RFTV9DT05GSUdfRklMRToKKysgICAgICAgIGdfYXNz ZXJ0IChwcml2LT5zeXN0ZW1fY29uZmlnX2ZpbGUgPT0gTlVMTCk7CisrICAgICAgICBwcml2LT5z eXN0ZW1fY29uZmlnX2ZpbGUgPSBnX3N0cmR1cCAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkp OworKyAgICAgICAgYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAgICAgICBHX09CSkVDVF9XQVJO X0lOVkFMSURfUFJPUEVSVFlfSUQgKHhrYl9sYXlvdXRfY29uZmlnLCBwcm9wX2lkLCBwc3BlYyk7 CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQKKytpYnVzX3hrYl9sYXlvdXRfY29uZmlnX2dl dF9wcm9wZXJ0eSAoSUJ1c1hLQkxheW91dENvbmZpZyAqeGtiX2xheW91dF9jb25maWcsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgIHBy b3BfaWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYWx1ZSAgICAg ICAgICAgICAgKnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH UGFyYW1TcGVjICAgICAgICAgICpwc3BlYykKKyt7CisrICAgIElCdXNYS0JMYXlvdXRDb25maWdQ cml2YXRlICpwcml2OworKworKyAgICBnX3JldHVybl9pZl9mYWlsICh4a2JfbGF5b3V0X2NvbmZp ZyAhPSBOVUxMKTsKKysgICAgcHJpdiA9IElCVVNfWEtCX0xBWU9VVF9DT05GSUdfR0VUX1BSSVZB VEUgKHhrYl9sYXlvdXRfY29uZmlnKTsKKysKKysgICAgc3dpdGNoIChwcm9wX2lkKSB7CisrICAg IGNhc2UgUFJPUF9TWVNURU1fQ09ORklHX0ZJTEU6CisrICAgICAgICBnX3ZhbHVlX3NldF9zdHJp bmcgKHZhbHVlLCBwcml2LT5zeXN0ZW1fY29uZmlnX2ZpbGUpOworKyAgICAgICAgYnJlYWs7Cisr ICAgIGRlZmF1bHQ6CisrICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQg KHhrYl9sYXlvdXRfY29uZmlnLCBwcm9wX2lkLCBwc3BlYyk7CisrCisrICAgIH0KKyt9CisrCisr c3RhdGljIHZvaWQKKytpYnVzX3hrYl9sYXlvdXRfY29uZmlnX2NsYXNzX2luaXQgKElCdXNYS0JM YXlvdXRDb25maWdDbGFzcyAqa2xhc3MpCisreworKyAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3Rf Y2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworKyAgICBJQnVzT2JqZWN0Q2xhc3MgKmli dXNfb2JqZWN0X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKysKKysgICAgZ190 eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChJQnVzWEtCTGF5b3V0Q29uZmln UHJpdmF0ZSkpOworKworKyAgICBnb2JqZWN0X2NsYXNzLT5jb25zdHJ1Y3RvciA9IGlidXNfeGti X2xheW91dF9jb25maWdfY29uc3RydWN0b3I7CisrICAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9w ZXJ0eSA9IChHT2JqZWN0U2V0UHJvcGVydHlGdW5jKSBpYnVzX3hrYl9sYXlvdXRfY29uZmlnX3Nl dF9wcm9wZXJ0eTsKKysgICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gKEdPYmplY3RH ZXRQcm9wZXJ0eUZ1bmMpIGlidXNfeGtiX2xheW91dF9jb25maWdfZ2V0X3Byb3BlcnR5OworKyAg ICBpYnVzX29iamVjdF9jbGFzcy0+ZGVzdHJveSA9IChJQnVzT2JqZWN0RGVzdHJveUZ1bmMpIGli dXNfeGtiX2xheW91dF9jb25maWdfZGVzdHJveTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNQ cm94eTppbnRlcmZhY2U6CisrICAgICAqCisrICAgICAqIFRoZSBpbnRlcmZhY2Ugb2YgdGhlIHBy b3h5IG9iamVjdC4KKysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy dHkgKGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQUk9QX1NZU1RFTV9DT05G SUdfRklMRSwKKysgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJzeXN0 ZW1fY29uZmlnX2ZpbGUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJzeXN0ZW1fY29uZmln X2ZpbGUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgc3lzdGVtIGZpbGUgb2YgeGti bGF5b3V0Y29uZmlnIiwKKysgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05M WSkpOworK30KKysKKytJQnVzWEtCQ29uZmlnUmVnaXN0cnkgKgorK2lidXNfeGtiX2NvbmZpZ19y ZWdpc3RyeV9uZXcgKHZvaWQpCisreworKyAgICBJQnVzWEtCQ29uZmlnUmVnaXN0cnkgKnhrYl9j b25maWc7CisrCisrICAgIHhrYl9jb25maWcgPSBJQlVTX1hLQl9DT05GSUdfUkVHSVNUUlkgKGdf b2JqZWN0X25ldyAoSUJVU19UWVBFX1hLQl9DT05GSUdfUkVHSVNUUlksIE5VTEwpKTsKKysgICAg cmV0dXJuIHhrYl9jb25maWc7CisrfQorKworKyNkZWZpbmUgVEFCTEVfRlVOQyhmaWVsZF9uYW1l KSBjb25zdCBHSGFzaFRhYmxlICogICAgICAgICAgICAgICAgICAgICAgIFwKKytpYnVzX3hrYl9j b25maWdfcmVnaXN0cnlfZ2V0XyMjZmllbGRfbmFtZSAgKElCdXNYS0JDb25maWdSZWdpc3RyeSAq eGtiX2NvbmZpZykgXAorK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgSUJ1c1hLQkNvbmZpZ1JlZ2lz dHJ5UHJpdmF0ZSAqcHJpdjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoeGtiX2NvbmZpZyAhPSBO VUxMLCBOVUxMKTsgICAgICAgICAgICAgICAgICAgIFwKKysgICAgcHJpdiA9IElCVVNfWEtCX0NP TkZJR19SRUdJU1RSWV9HRVRfUFJJVkFURSAoeGtiX2NvbmZpZyk7ICAgICAgICAgICBcCisrICAg IHJldHVybiBwcml2LT5maWVsZF9uYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorK30KKysKKytUQUJMRV9GVU5DIChsYXlvdXRfbGlzdCkKKytUQUJMRV9G VU5DIChsYXlvdXRfbGFuZykKKytUQUJMRV9GVU5DIChsYXlvdXRfZGVzYykKKytUQUJMRV9GVU5D ICh2YXJpYW50X2Rlc2MpCisrCisrI3VuZGVmIFRBQkxFX0ZVTkMKKysKKytJQnVzQ29tcG9uZW50 ICoKKytpYnVzX3hrYl9jb21wb25lbnRfbmV3ICh2b2lkKQorK3sKKysgICAgSUJ1c0NvbXBvbmVu dCAqY29tcG9uZW50OworKworKyAgICBjb21wb25lbnQgPSBpYnVzX2NvbXBvbmVudF9uZXcgKCJv cmcuZnJlZWRlc2t0b3AuSUJ1cy5YS0IiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJYS0IgQ29tcG9uZW50IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWRVJTSU9OLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMR1BM Mi4xIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+IiwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lidXMvIiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJFWEVDRElSICIvaWJ1cy1lbmdpbmUteGti IC0taWJ1cyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUVEVYVF9Q QUNLQUdFKTsKKysKKysgICAgcmV0dXJuIGNvbXBvbmVudDsKKyt9CisrCisrSUJ1c0VuZ2luZURl c2MgKgorK2lidXNfeGtiX2VuZ2luZV9kZXNjX25ldyAoY29uc3QgZ2NoYXIgKmxhbmcsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqbGF5b3V0LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmxheW91dF9kZXNjLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgZ2NoYXIgKnZhcmlhbnQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBnY2hhciAqdmFyaWFudF9kZXNjKQorK3sKKysgICAgSUJ1c0VuZ2luZURlc2Mg KmVuZ2luZTsKKysgICAgZ2NoYXIgKm5hbWUgPSBOVUxMOworKyAgICBnY2hhciAqbG9uZ25hbWUg PSBOVUxMOworKyAgICBnY2hhciAqZGVzYyA9IE5VTEw7CisrICAgIGdjaGFyICplbmdpbmVfbGF5 b3V0ID0gTlVMTDsKKysKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGxhbmcgIT0gTlVMTCAm JiBsYXlvdXQgIT0gTlVMTCwgTlVMTCk7CisrCisrICAgIGlmIChsYXlvdXRfZGVzYyAmJiB2YXJp YW50X2Rlc2MpIHsKKysgICAgICAgIGxvbmduYW1lID0gZ19zdHJkdXBfcHJpbnRmICgiJXMgLSAl cyIsIGxheW91dF9kZXNjLCB2YXJpYW50X2Rlc2MpOworKyAgICB9IGVsc2UgaWYgKGxheW91dCAm JiB2YXJpYW50KSB7CisrICAgICAgICBsb25nbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzIC0g JXMiLCBsYXlvdXQsIHZhcmlhbnQpOworKyAgICB9IGVsc2UgaWYgKGxheW91dF9kZXNjKSB7Cisr ICAgICAgICBsb25nbmFtZSA9IGdfc3RyZHVwIChsYXlvdXRfZGVzYyk7CisrICAgIH0gZWxzZSB7 CisrICAgICAgICBsb25nbmFtZSA9IGdfc3RyZHVwIChsYXlvdXQpOworKyAgICB9CisrICAgIGlm ICh2YXJpYW50KSB7CisrICAgICAgICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgieGtiOmxheW91 dDolczolcyIsIGxheW91dCwgdmFyaWFudCk7CisrICAgICAgICBkZXNjID0gZ19zdHJkdXBfcHJp bnRmICgiWEtCICVzKCVzKSBrZXlib2FyZCBsYXlvdXQiLCBsYXlvdXQsIHZhcmlhbnQpOworKyAg ICAgICAgZW5naW5lX2xheW91dCA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzKCVzKSIsIGxheW91dCwg dmFyaWFudCk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBuYW1lID0gZ19zdHJkdXBfcHJpbnRm ICgieGtiOmxheW91dDolcyIsIGxheW91dCk7CisrICAgICAgICBkZXNjID0gZ19zdHJkdXBfcHJp bnRmICgiWEtCICVzIGtleWJvYXJkIGxheW91dCIsIGxheW91dCk7CisrICAgICAgICBlbmdpbmVf bGF5b3V0ID0gZ19zdHJkdXAgKGxheW91dCk7CisrICAgIH0KKysKKysgICAgZW5naW5lID0gaWJ1 c19lbmdpbmVfZGVzY19uZXcgKG5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsb25nbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Ms CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIkxHUEwyLjEiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIlRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29t PiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWJ1cy1lbmdpbmUiLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lX2xheW91dCk7CisrCisr ICAgIGdfZnJlZSAobmFtZSk7CisrICAgIGdfZnJlZSAobG9uZ25hbWUpOworKyAgICBnX2ZyZWUg KGRlc2MpOworKyAgICBnX2ZyZWUgKGVuZ2luZV9sYXlvdXQpOworKworKyAgICByZXR1cm4gZW5n aW5lOworK30KKysKKytJQnVzWEtCTGF5b3V0Q29uZmlnICoKKytpYnVzX3hrYl9sYXlvdXRfY29u ZmlnX25ldyAoY29uc3QgZ2NoYXIgKnN5c3RlbV9jb25maWdfZmlsZSkKKyt7CisrICAgIElCdXNY S0JMYXlvdXRDb25maWcgKnhrYl9sYXlvdXRfY29uZmlnOworKworKyAgICB4a2JfbGF5b3V0X2Nv bmZpZyA9IElCVVNfWEtCX0xBWU9VVF9DT05GSUcgKGdfb2JqZWN0X25ldyAoSUJVU19UWVBFX1hL Ql9MQVlPVVRfQ09ORklHLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInN5c3RlbV9jb25maWdfZmlsZSIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0 ZW1fY29uZmlnX2ZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7CisrICAgIHJldHVybiB4a2JfbGF5b3V0X2Nv bmZpZzsKKyt9CisrCisrY29uc3QgR0xpc3QgKgorK2lidXNfeGtiX2xheW91dF9jb25maWdfZ2V0 X3ByZWxvYWRfbGF5b3V0cyAoSUJ1c1hLQkxheW91dENvbmZpZyAqeGtiX2xheW91dF9jb25maWcp CisreworKyAgICBJQnVzWEtCTGF5b3V0Q29uZmlnUHJpdmF0ZSAqcHJpdjsKKysKKysgICAgZ19y ZXR1cm5fdmFsX2lmX2ZhaWwgKHhrYl9sYXlvdXRfY29uZmlnICE9IE5VTEwsIE5VTEwpOworKyAg ICBwcml2ID0gSUJVU19YS0JfTEFZT1VUX0NPTkZJR19HRVRfUFJJVkFURSAoeGtiX2xheW91dF9j b25maWcpOworKyAgICByZXR1cm4gKGNvbnN0IEdMaXN0ICopIHByaXYtPnByZWxvYWRfbGF5b3V0 czsKKyt9CitkaWZmIC0tZ2l0IGEveGtiL3hrYnhtbC5oIGIveGtiL3hrYnhtbC5oCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMGJhMDRkMQorLS0tIC9kZXYvbnVsbAorKysr IGIveGtiL3hrYnhtbC5oCitAQCAtMCwwICsxLDE4OCBAQAorKy8qIHZpbTpzZXQgZXQgc3RzPTQ6 ICovCisrLyogYnVzIC0gVGhlIElucHV0IEJ1cworKyAqIENvcHlyaWdodCAoQykgMjAxMCBUYWth byBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMp IDIwMDgtMjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKysgKiBDb3B5 cmlnaHQgKEMpIDIwMDgtMjAxMCBSZWQgSGF0LCBJbmMuCisrICoKKysgKiBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgorKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgkgU2VlIHRo ZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisrICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisrICogQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCisrICovCisrI2lmbmRlZiBfX0lCVVNfWEtCX0hfCisrI2RlZmluZSBfX0lCVVNfWEtC X0hfCisrCisrI2luY2x1ZGUgImlidXNjb21wb25lbnQuaCIKKysKKysvKgorKyAqIFR5cGUgbWFj cm9zLgorKyAqLworKy8qIGRlZmluZSBJQnVzWEtCQ29uZmlnUmVnaXN0cnkgbWFjcm9zICovCisr I2RlZmluZSBJQlVTX1RZUEVfWEtCX0NPTkZJR19SRUdJU1RSWSAgICAgICAgICAgICAgICAgICBc CisrICAgIChpYnVzX3hrYl9jb25maWdfcmVnaXN0cnlfZ2V0X3R5cGUgKCkpCisrI2RlZmluZSBJ QlVTX1hLQl9DT05GSUdfUkVHSVNUUlkob2JqKSAgICAgICAgICAgICAgICAgICBcCisrICAgIChH X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIElCVVNfVFlQRV9YS0JfQ09ORklHX1JF R0lTVFJZLCBJQnVzWEtCQ29uZmlnUmVnaXN0cnkpKQorKyNkZWZpbmUgSUJVU19YS0JfQ09ORklH X1JFR0lTVFJZX0NMQVNTKGtsYXNzKSAgICAgICAgICAgXAorKyAgICAoR19UWVBFX0NIRUNLX0NM QVNTX0NBU1QgKChrbGFzcyksIElCVVNfVFlQRV9YS0JfQ09ORklHX1JFR0lTVFJZLCBJQnVzWEtC Q29uZmlnUmVnaXN0cnlDbGFzcykpCisrI2RlZmluZSBJQlVTX0lTX1hLQl9DT05GSUdfUkVHSVNU Ulkob2JqKSAgICAgICAgICAgICAgICBcCisrICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQ RSAoKG9iaiksIElCVVNfVFlQRV9YS0JfQ09ORklHX1JFR0lTVFJZKSkKKysjZGVmaW5lIElCVVNf SVNfWEtCX0NPTkZJR19SRUdJU1RSWV9DTEFTUyhrbGFzcykgICAgICAgIFwKKysgICAgKEdfVFlQ RV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBJQlVTX1RZUEVfWEtCX0NPTkZJR19SRUdJU1RS WSkpCisrI2RlZmluZSBJQlVTX1hLQl9DT05GSUdfUkVHSVNUUllfR0VUX0NMQVNTKG9iaikgICAg ICAgICBcCisrICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgSUJVU19UWVBF X1hLQl9DT05GSUdfUkVHSVNUUlksIElCdXNYS0JDb25maWdSZWdpc3RyeUNsYXNzKSkKKysKKysv KiBkZWZpbmUgSUJ1c1hLQkxheW91dENvbmZpZyBtYWNyb3MgKi8KKysjZGVmaW5lIElCVVNfVFlQ RV9YS0JfTEFZT1VUX0NPTkZJRyAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgKGlidXNfeGti X2xheW91dF9jb25maWdfZ2V0X3R5cGUgKCkpCisrI2RlZmluZSBJQlVTX1hLQl9MQVlPVVRfQ09O RklHKG9iaikgICAgICAgICAgICAgICAgICAgICBcCisrICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO Q0VfQ0FTVCAoKG9iaiksIElCVVNfVFlQRV9YS0JfTEFZT1VUX0NPTkZJRywgSUJ1c1hLQkxheW91 dENvbmZpZykpCisrI2RlZmluZSBJQlVTX1hLQl9MQVlPVVRfQ09ORklHX0NMQVNTKGtsYXNzKSAg ICAgICAgICAgICBcCisrICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgSUJV U19UWVBFX1hLQl9MQVlPVVRfQ09ORklHLCBJQnVzWEtCTGF5b3V0Q29uZmlnQ2xhc3MpKQorKyNk ZWZpbmUgSUJVU19JU19YS0JfTEFZT1VUX0NPTkZJRyhvYmopICAgICAgICAgICAgICAgICAgXAor KyAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBJQlVTX1RZUEVfWEtCX0xB WU9VVF9DT05GSUcpKQorKyNkZWZpbmUgSUJVU19JU19YS0JfTEFZT1VUX0NPTkZJR19DTEFTUyhr bGFzcykgICAgICAgICAgXAorKyAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyks IElCVVNfVFlQRV9YS0JfTEFZT1VUX0NPTkZJRykpCisrI2RlZmluZSBJQlVTX1hLQl9MQVlPVVRf Q09ORklHX0dFVF9DTEFTUyhvYmopICAgICAgICAgICBcCisrICAgIChHX1RZUEVfSU5TVEFOQ0Vf R0VUX0NMQVNTICgob2JqKSwgSUJVU19UWVBFX1hLQl9MQVlPVVRfQ09ORklHLCBJQnVzWEtCTGF5 b3V0Q29uZmlnQ2xhc3MpKQorKworK0dfQkVHSU5fREVDTFMKKysKKyt0eXBlZGVmIHN0cnVjdCBf SUJ1c1hLQkNvbmZpZ1JlZ2lzdHJ5IElCdXNYS0JDb25maWdSZWdpc3RyeTsKKyt0eXBlZGVmIHN0 cnVjdCBfSUJ1c1hLQkNvbmZpZ1JlZ2lzdHJ5Q2xhc3MgSUJ1c1hLQkNvbmZpZ1JlZ2lzdHJ5Q2xh c3M7CisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNYS0JMYXlvdXRDb25maWcgSUJ1c1hLQkxheW91dENv bmZpZzsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c1hLQkxheW91dENvbmZpZ0NsYXNzIElCdXNYS0JM YXlvdXRDb25maWdDbGFzczsKKysKKytzdHJ1Y3QgX0lCdXNYS0JDb25maWdSZWdpc3RyeSB7Cisr ICAgIElCdXNPYmplY3QgcGFyZW50OworK307CisrCisrc3RydWN0IF9JQnVzWEtCQ29uZmlnUmVn aXN0cnlDbGFzcyB7CisrICAgIElCdXNPYmplY3RDbGFzcyBwYXJlbnQ7CisrICAgIC8qIHNpZ25h bHMgKi8KKysgICAgLyo8IHByaXZhdGUgPiovCisrICAgIC8qIHBhZGRpbmcgKi8KKysgICAgZ3Bv aW50ZXIgcGR1bW15WzhdOworK307CisrCisrc3RydWN0IF9JQnVzWEtCTGF5b3V0Q29uZmlnIHsK KysgICAgSUJ1c09iamVjdCBwYXJlbnQ7CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNYS0JMYXlvdXRD b25maWdDbGFzcyB7CisrICAgIElCdXNPYmplY3RDbGFzcyBwYXJlbnQ7CisrICAgIC8qIHNpZ25h bHMgKi8KKysgICAgLyo8IHByaXZhdGUgPiovCisrICAgIC8qIHBhZGRpbmcgKi8KKysgICAgZ3Bv aW50ZXIgcGR1bW15WzhdOworK307CisrCisrCisrR1R5cGUgICAgICAgICAgICBpYnVzX3hrYl9j b25maWdfcmVnaXN0cnlfZ2V0X3R5cGUKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHZvaWQpOworKy8qKgorKyAqIGlidXNfeGtiX2NvbmZpZ19yZWdp c3RyeV9uZXc6CisrICogQHJldHVybnM6IEEgbmV3bHkgYWxsb2NhdGVkIElCdXNYS0JDb25maWdS ZWdpc3RyeQorKyAqCisrICogTmV3IGFuIElCdXNYS0JDb25maWdSZWdpc3RyeS4KKysgKi8KKytJ QnVzWEtCQ29uZmlnUmVnaXN0cnkgKgorKyAgICAgICAgICAgICAgICAgaWJ1c194a2JfY29uZmln X3JlZ2lzdHJ5X25ldworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodm9pZCk7CisrLyoqCisrICogaWJ1c194a2JfY29uZmlnX3JlZ2lzdHJ5X2dldF9s YXlvdXRfbGlzdDoKKysgKiBAeGtiX2NvbmZpZzogQW4gSUJ1c1hLQkNvbmZpZ1JlZ2lzdHJ5Lgor KyAqIEByZXR1cm5zOiBBIGNvbnN0IEdIYXNoVGFibGUKKysgKgorKyAqIGEgY29uc3QgR0hhc2hU YWJsZQorKyAqLworK2NvbnN0IEdIYXNoVGFibGUgKgorKyAgICAgICAgICAgICAgICAgaWJ1c194 a2JfY29uZmlnX3JlZ2lzdHJ5X2dldF9sYXlvdXRfbGlzdAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1hLQkNvbmZpZ1JlZ2lzdHJ5ICp4a2Jf Y29uZmlnKTsKKysvKioKKysgKiBpYnVzX3hrYl9jb25maWdfcmVnaXN0cnlfZ2V0X2xheW91dF9s YW5nOgorKyAqIEB4a2JfY29uZmlnOiBBbiBJQnVzWEtCQ29uZmlnUmVnaXN0cnkuCisrICogQHJl dHVybnM6IEEgY29uc3QgR0hhc2hUYWJsZQorKyAqCisrICogYSBjb25zdCBHSGFzaFRhYmxlCisr ICovCisrY29uc3QgR0hhc2hUYWJsZSAqCisrICAgICAgICAgICAgICAgICBpYnVzX3hrYl9jb25m aWdfcmVnaXN0cnlfZ2V0X2xheW91dF9sYW5nCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChJQnVzWEtCQ29uZmlnUmVnaXN0cnkgKnhrYl9jb25maWcp OworKy8qKgorKyAqIGlidXNfeGtiX2NvbmZpZ19yZWdpc3RyeV9nZXRfbGF5b3V0X2Rlc2M6Cisr ICogQHhrYl9jb25maWc6IEFuIElCdXNYS0JDb25maWdSZWdpc3RyeS4KKysgKiBAcmV0dXJuczog QSBjb25zdCBHSGFzaFRhYmxlCisrICoKKysgKiBhIGNvbnN0IEdIYXNoVGFibGUKKysgKi8KKytj b25zdCBHSGFzaFRhYmxlICoKKysgICAgICAgICAgICAgICAgIGlidXNfeGtiX2NvbmZpZ19yZWdp c3RyeV9nZXRfbGF5b3V0X2Rlc2MKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKElCdXNYS0JDb25maWdSZWdpc3RyeSAqeGtiX2NvbmZpZyk7CisrLyoq CisrICogaWJ1c194a2JfY29uZmlnX3JlZ2lzdHJ5X2dldF92YXJpYW50X2Rlc2M6CisrICogQHhr Yl9jb25maWc6IEFuIElCdXNYS0JDb25maWdSZWdpc3RyeS4KKysgKiBAcmV0dXJuczogQSBjb25z dCBHSGFzaFRhYmxlCisrICoKKysgKiBhIGNvbnN0IEdIYXNoVGFibGUKKysgKi8KKytjb25zdCBH SGFzaFRhYmxlICoKKysgICAgICAgICAgICAgICAgIGlidXNfeGtiX2NvbmZpZ19yZWdpc3RyeV9n ZXRfdmFyaWFudF9kZXNjCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChJQnVzWEtCQ29uZmlnUmVnaXN0cnkgKnhrYl9jb25maWcpOworKy8qKgorKyAq IGlidXNfeGtiX2NvbXBvbmVudF9uZXc6CisrICogQHJldHVybnM6IEEgbmV3bHkgYWxsb2NhdGVk IElCdXNDb21wb25lbnQuCisrICoKKysgKiBOZXcgYW4gSUJ1c0NvbXBvbmVudC4KKysgKi8KKytJ QnVzQ29tcG9uZW50ICAgKmlidXNfeGtiX2NvbXBvbmVudF9uZXcgICAgICAgICAgKHZvaWQpOwor KworKy8qKgorKyAqIGlidXNfeGtiX2VuZ2luZV9kZXNjX25ldzoKKysgKiBAbGFuZzogTGFuZ3Vh Z2UgKGUuZy4gemgsIGpwKSBzdXBwb3J0ZWQgYnkgdGhpcyBpbnB1dCBtZXRob2QgZW5naW5lLgor KyAqIEBsYXlvdXQ6IEtleWJvYXJkIGxheW91dAorKyAqIEBsYXlvdXRfZGVzYzogS2V5Ym9hcmQg bGF5b3V0IGRlc2NyaXB0aW9uIGZvciBlbmdpbmUgZGVzY3JpcHRpb24KKysgKiBAdmFyaWFudDog S2V5Ym9hcmQgdmFyaWFudAorKyAqIEB2YXJpYW50X2Rlc2M6IEtleWJvYXJkIHZhcmlhbnQgZGVz Y3JpcHRpb24gZm9yIGVuZ2luZSBkZXNjcmlwdGlvbgorKyAqIEByZXR1cm5zOiBBIG5ld2x5IGFs bG9jYXRlZCBJQnVzRW5naW5lRGVzYy4KKysgKgorKyAqIE5ldyBhIElCdXNFbmdpbmVEZXNjLgor KyAqLworK0lCdXNFbmdpbmVEZXNjICAqaWJ1c194a2JfZW5naW5lX2Rlc2NfbmV3ICAgICAgICAo Y29uc3QgZ2NoYXIgKmxhbmcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBnY2hhciAqbGF5b3V0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmxheW91dF9kZXNjLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Z2NoYXIgKnZhcmlhbnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBnY2hhciAqdmFyaWFudF9kZXNjKTsKKysKKytHVHlwZSAgICAgICAg ICAgIGlidXNfeGtiX2xheW91dF9jb25maWdfZ2V0X3R5cGUgKHZvaWQpOworKworKy8qKgorKyAq IGlidXNfeGtiX2xheW91dF9jb25maWdfbmV3OgorKyAqIEByZXR1cm5zOiBBIG5ld2x5IGFsbG9j YXRlZCBJQnVzWEtCTGF5b3V0Q29uZmlnCisrICoKKysgKiBOZXcgYW4gSUJ1c1hLQkxheW91dENv bmZpZworKyAqLworK0lCdXNYS0JMYXlvdXRDb25maWcgKgorKyAgICAgICAgICAgICAgICAgaWJ1 c194a2JfbGF5b3V0X2NvbmZpZ19uZXcgICAgICAoY29uc3QgZ2NoYXIgKnN5c3RlbV9jb25maWdf ZmlsZSk7CisrCisrLyoqCisrICogaWJ1c194a2JfbGF5b3V0X2NvbmZpZ19nZXRfcHJlbG9hZF9s YXlvdXRzOgorKyAqIEB4a2JfbGF5b3V0X2NvbmZpZzogQW4gSUJ1c1hLQkxheW91dENvbmZpZy4K KysgKiBAcmV0dXJuczogQSBjb25zdCBHTGlzdAorKyAqCisrICogYSBjb25zdCBHTGlzdAorKyAq LworK2NvbnN0IEdMaXN0ICogICAgaWJ1c194a2JfbGF5b3V0X2NvbmZpZ19nZXRfcHJlbG9hZF9s YXlvdXRzCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChJQnVzWEtCTGF5b3V0Q29uZmlnICp4a2JfbGF5b3V0X2NvbmZpZyk7CisrCisrR19FTkRfREVD TFMKKysjZW5kaWYKKy0tIAorMS43LjIuMQorCgpkaWZmIC0tZ2l0IGEvaWJ1cy1IRUFELnBhdGNo IGIvaWJ1cy1IRUFELnBhdGNoCmluZGV4IDM5NmFjMWIuLjhiMTM3ODkgMTAwNjQ0Ci0tLSBhL2li dXMtSEVBRC5wYXRjaAorKysgYi9pYnVzLUhFQUQucGF0Y2gKQEAgLTEsNTIgKzEgQEAKLWNvbW1p dCA2NzRiYzUzYzMwYzhhYzQwZTAyMWRhNjYwZjJhZjUzM2FiMDE1NTg3Ci1BdXRob3I6IERhaWtp IFVlbm8gPHVlbm9AdW5peHVzZXIub3JnPgotRGF0ZTogICBXZWQgSnVuIDMwIDEyOjA1OjMyIDIw MTAgKzA5MDAKIAotICAgIEZpeCAiU2hvdyBsYW5ndWFnZSBwYW5lbDogRW1iZWRkZWQgaW4gbWVu dSIgYmVoYXZpb3IuCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogRGFpa2kgVWVubyA8dWVub0B1 bml4dXNlci5vcmc+Ci0KLWRpZmYgLS1naXQgYS91aS9ndGsvbGFuZ3VhZ2ViYXIucHkgYi91aS9n dGsvbGFuZ3VhZ2ViYXIucHkKLWluZGV4IGYyMjA4MGYuLjJmYzFjYjcgMTAwNjQ0Ci0tLS0gYS91 aS9ndGsvbGFuZ3VhZ2ViYXIucHkKLSsrKyBiL3VpL2d0ay9sYW5ndWFnZWJhci5weQotQEAgLTI5 LDYgKzI5LDcgQEAgZnJvbSBoYW5kbGUgaW1wb3J0IEhhbmRsZQotIGZyb20gbWVudSBpbXBvcnQg bWVudV9wb3NpdGlvbixcCi0gICAgIEltYWdlTWVudUl0ZW0sXAotICAgICBNZW51LFwKLSsgICAg Q2hlY2tNZW51SXRlbSxcCi0gICAgIFJhZGlvTWVudUl0ZW0sXAotICAgICBTZXBhcmF0b3JNZW51 SXRlbQotIGZyb20gZW5naW5lYWJvdXQgaW1wb3J0IEVuZ2luZUFib3V0Ci1AQCAtMzc4LDYgKzM3 OSw4IEBAIGNsYXNzIExhbmd1YWdlQmFyKGd0ay5Ub29sYmFyKToKLSAgICAgICAgICAgICAgICAg aXRlbSA9IEltYWdlTWVudUl0ZW0ocHJvcCA9IHByb3ApCi0gICAgICAgICAgICAgICAgIHNlbGYu X19zZXRfaXRlbV9pY29uKGl0ZW0sIHByb3ApCi0gICAgICAgICAgICAgZWxpZiBwcm9wLnR5cGUg PT0gaWJ1cy5QUk9QX1RZUEVfVE9HR0xFOgotKyAgICAgICAgICAgICAgICBpdGVtID0gQ2hlY2tN ZW51SXRlbShwcm9wID0gcHJvcCkKLSsgICAgICAgICAgICBlbGlmIHByb3AudHlwZSA9PSBpYnVz LlBST1BfVFlQRV9SQURJTzoKLSAgICAgICAgICAgICAgICAgaXRlbSA9IFJhZGlvTWVudUl0ZW0o cmFkaW9fZ3JvdXAsIHByb3AgPSBwcm9wKQotICAgICAgICAgICAgICAgICByYWRpb19ncm91cCA9 IGl0ZW0KLSAgICAgICAgICAgICBlbGlmIHByb3AudHlwZSA9PSBpYnVzLlBST1BfVFlQRV9TRVBB UkFUT1I6Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrL21lbnUucHkgYi91aS9ndGsvbWVudS5weQotaW5k ZXggYjlhNmI0NC4uNTNmYTM5ZiAxMDA2NDQKLS0tLSBhL3VpL2d0ay9tZW51LnB5Ci0rKysgYi91 aS9ndGsvbWVudS5weQotQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgTWVudShndGsuTWVudSwgUHJv cEl0ZW0pOgotICAgICAgICAgICAgICAgICBpdGVtID0gU2VwYXJhdG9yTWVudUl0ZW0oKQotICAg ICAgICAgICAgICAgICByYWRpb19ncm91cCA9IE5vbmUKLSAgICAgICAgICAgICBlbGlmIHByb3Au dHlwZSA9PSBpYnVzLlBST1BfVFlQRV9NRU5VOgotLSAgICAgICAgICAgICAgICBpdGVtID0gZ3Rr LkltYWdlTWVudUl0ZW0oKQotKyAgICAgICAgICAgICAgICBpdGVtID0gSW1hZ2VNZW51SXRlbShw cm9wKQotICAgICAgICAgICAgICAgICBpZiBwcm9wLmljb246Ci0gICAgICAgICAgICAgICAgICAg ICBzaXplID0gZ3RrLmljb25fc2l6ZV9sb29rdXAoZ3RrLklDT05fU0laRV9NRU5VKQotICAgICAg ICAgICAgICAgICAgICAgaXRlbS5zZXRfaW1hZ2UoaWNvbi5JY29uV2lkZ2V0KHByb3AuaWNvbiwg c2l6ZVswXSkpCi1AQCAtMjM4LDYgKzIzOCw5IEBAIGNsYXNzIFNlcGFyYXRvck1lbnVJdGVtKGd0 ay5TZXBhcmF0b3JNZW51SXRlbSwgUHJvcEl0ZW0pOgotICAgICAgICAoZ29iamVjdC5UWVBFX1NU UklORywgZ29iamVjdC5UWVBFX0lOVCkpLAotICAgICB9Ci0gCi0rICAgIGRlZiBfX2luaXRfXyhz ZWxmKToKLSsgICAgICAgIGd0ay5TZXBhcmF0b3JNZW51SXRlbS5fX2luaXRfXyhzZWxmKQotKyAg ICAgICAgUHJvcEl0ZW0uX19pbml0X18oc2VsZiwgTm9uZSkKLSAKLSAKLSBkZWYgbWVudV9wb3Np dGlvbihtZW51LCBidXR0b24pOgoKZGlmZiAtLWdpdCBhL2lidXMuc3BlYyBiL2lidXMuc3BlYwpp bmRleCBhOTg0M2QwLi40ODRiMDk0IDEwMDY0NAotLS0gYS9pYnVzLnNwZWMKKysrIGIvaWJ1cy5z cGVjCkBAIC0yLDIxICsyLDI0IEBACiAleyE/Z3RrMl9iaW5hcnlfdmVyc2lvbjogJWRlZmluZSBn dGsyX2JpbmFyeV92ZXJzaW9uICUocGtnLWNvbmZpZyAgLS12YXJpYWJsZT1ndGtfYmluYXJ5X3Zl cnNpb24gZ3RrKy0yLjApfQogJXshP2d0azNfYmluYXJ5X3ZlcnNpb246ICVkZWZpbmUgZ3RrM19i aW5hcnlfdmVyc2lvbiAlKHBrZy1jb25maWcgIC0tdmFyaWFibGU9Z3RrX2JpbmFyeV92ZXJzaW9u IGd0aystMy4wKX0KIAorJWRlZmluZSBoYXZlX2xpYnhrYmZpbGUgMQorCiAlZGVmaW5lIGdsaWJf dmVyICUoWyAtYSAle19saWJkaXJ9L3BrZ2NvbmZpZy9nbGliLTIuMC5wYyBdICYmIHBrZy1jb25m aWcgLS1tb2R2ZXJzaW9uIGdsaWItMi4wIHwgY3V0IC1kLiAtZiAxLDIgfHwgZWNobyAtbiAiOTk5 IikKICVkZWZpbmUgZ2NvbmYyX3ZlcnNpb24gMi4xMi4wCiAlZGVmaW5lIGRidXNfcHl0aG9uX3Zl cnNpb24gMC44My4wCiAlZGVmaW5lIGltX2Nob29zZXJfdmVyc2lvbiAxLjIuNQogCiBOYW1lOiAg ICAgICBpYnVzCi1WZXJzaW9uOiAgICAxLjMuNgotUmVsZWFzZTogICAgNSV7P2Rpc3R9CitWZXJz aW9uOiAgICAxLjMuNworUmVsZWFzZTogICAgMSV7P2Rpc3R9CiBTdW1tYXJ5OiAgICBJbnRlbGxp Z2VudCBJbnB1dCBCdXMgZm9yIExpbnV4IE9TCiBMaWNlbnNlOiAgICBMR1BMdjIrCiBHcm91cDog ICAgICBTeXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCiBVUkw6ICAgICAgICBodHRwOi8vY29k ZS5nb29nbGUuY29tL3AvaWJ1cy8KIFNvdXJjZTA6ICAgIGh0dHA6Ly9pYnVzLmdvb2dsZWNvZGUu Y29tL2ZpbGVzLyV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKIFNvdXJjZTE6ICAgIHhpbnB1dC1p YnVzCi1QYXRjaDA6ICAgICBpYnVzLUhFQUQucGF0Y2gKKyMgUGF0Y2gwOiAgICAgaWJ1cy1IRUFE LnBhdGNoCitQYXRjaDE6ICAgICBpYnVzLTU0MTQ5Mi14a2IucGF0Y2gKIAogQnVpbGRSb290OiAg JXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0tcm9vdC0lKCV7X19pZF91 fSAtbikKIApAQCAtMzUsNiArMzgsOSBAQCBCdWlsZFJlcXVpcmVzOiAgR0NvbmYyLWRldmVsCiBC dWlsZFJlcXVpcmVzOiAgcHlnb2JqZWN0Mi1kZXZlbAogQnVpbGRSZXF1aXJlczogIGludGx0b29s CiBCdWlsZFJlcXVpcmVzOiAgaXNvLWNvZGVzLWRldmVsCislaWYgJWhhdmVfbGlieGtiZmlsZQor QnVpbGRSZXF1aXJlczogIGxpYnhrYmZpbGUtZGV2ZWwKKyVlbmRpZgogCiBSZXF1aXJlczogICAl e25hbWV9LWxpYnMgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KIFJlcXVpcmVzOiAgICV7bmFtZX0t Z3RrMiA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQpAQCAtMTE3LDkgKzEyMywxOCBAQCBUaGUgaWJ1 cy1kZXZlbC1kb2NzIHBhY2thZ2UgY29udGFpbnMgZGV2ZWxvcGVyIGRvY3VtZW50YXRpb24gZm9y IGlidXMKIAogJXByZXAKICVzZXR1cCAtcQotJXBhdGNoMCAtcDEKKyMgJXBhdGNoMCAtcDEKKyVp ZiAlaGF2ZV9saWJ4a2JmaWxlCislcGF0Y2gxIC1wMSAtYiAueGtiCislZW5kaWYKIAogJWJ1aWxk CislaWYgJWhhdmVfbGlieGtiZmlsZQorYWNsb2NhbCAtSSBtNAorYXV0b2hlYWRlcgorYXV0b2Nv bmYgLWYKK2F1dG9tYWtlIC1hIC1jIC1mCislZW5kaWYKICVjb25maWd1cmUgXAogICAgIC0tZGlz YWJsZS1zdGF0aWMgXAogICAgIC0tZW5hYmxlLWd0azIgXApAQCAtMjIzLDYgKzIzOCwxMCBAQCBm aQogIyAle19zeXNjb25mZGlyfS94ZGcvYXV0b3N0YXJ0L2lidXMuZGVza3RvcAogJXtfc3lzY29u ZmRpcn0vZ2NvbmYvc2NoZW1hcy9pYnVzLnNjaGVtYXMKICVjb25maWcgJXtfeGlucHV0Y29uZn0K KyVpZiAlaGF2ZV9saWJ4a2JmaWxlCisle19saWJleGVjZGlyfS9pYnVzLWVuZ2luZS14a2IKKyV7 X2xpYmV4ZWNkaXJ9L2lidXMteGtiCislZW5kaWYKIAogJWZpbGVzIGxpYnMKICVkZWZhdHRyKC0s cm9vdCxyb290LC0pCkBAIC0yNTAsNiArMjY5LDkgQEAgZmkKICV7X2RhdGFkaXJ9L2d0ay1kb2Mv aHRtbC8qCiAKICVjaGFuZ2Vsb2cKKyogTW9uIEF1ZyAyMyAyMDEwIFRha2FvIEZ1aml3YXJhIDx0 ZnVqaXdhckByZWRoYXQuY29tPiAtIDEuMy43LTEKKy0gVXBkYXRlIHRvIDEuMy43CisKICogV2Vk IEp1bCAyOCAyMDEwIE1hbW9ydSBUYXNha2EgPG10YXNha2FAaW9hLnMudS10b2t5by5hYy5qcD4g LSAxLjMuNi01CiAtIFJlYnVpbGQgYWdhaW5zdCBweXRob24gMi43CiAKCmRpZmYgLS1naXQgYS9z b3VyY2VzIGIvc291cmNlcwppbmRleCAzNGRmNTc3Li40ODA3NmE4IDEwMDY0NAotLS0gYS9zb3Vy Y2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLTgzODBiNTFiY2Y1MzIyMGRmZjk0N2ExZGVi MzNmZDk1ICBpYnVzLTEuMy42LnRhci5negorNWEyYWNiZGE2Y2FkMjNmNjQwM2M4ODM0N2FjNjBl MmQgIGlidXMtMS4zLjcudGFyLmd6Cg==