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: Added panel extension for emoji keybinding not to depen on desktops Date: Sun, 31 May 2026 02:06:45 GMT Message-ID: <178019320562.1.13259549898915988260.rpms-ibus-98919f74e387@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 98919f74e387656fe5f8a4ba5eb8d59e612f246b QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiA5ODkxOWY3NGUzODc2NTZmZTVmOGE0YmE1ZWI4ZDU5ZTYxMmYy NDZiCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE4LTAyLTIxVDE2OjA3OjQ4KzA5OjAwClN0YXRzICA6ICs0MjQyLy01MSBpbiA2IGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9pYnVzL2MvOTg5 MTlmNzRlMzg3NjU2ZmU1ZjhhNGJhNWViOGQ1OWU2MTJmMjQ2Yj9icmFuY2g9YXV0b3Rvb2wKCkxv ZzoKQWRkZWQgcGFuZWwgZXh0ZW5zaW9uIGZvciBlbW9qaSBrZXliaW5kaW5nIG5vdCB0byBkZXBl biBvbiBkZXNrdG9wcwoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQpp bmRleCBjYjg1M2RhLi42MjdmMWQ5IDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRp Z25vcmUKQEAgLTI5LDYgKzI5LDcgQEAKIC9pYnVzLXBvLTEuNS45LTIwMTQxMDAxLnRhci5negog L2lidXMtcG8tMS41LjEwLTIwMTUwNDAyLnRhci5negogL2lidXMtcG8tMS41LjE0LTIwMTYwOTA5 LnRhci5negorL2lidXMtcG8tMS41LjE3LTIwMTgwMjIxLnRhci5negogaWJ1cy0xLjMuNi50YXIu Z3oKIC9pYnVzLTEuMy43LnRhci5negogL2lidXMtMS4zLjgudGFyLmd6CgpkaWZmIC0tZ2l0IGEv aWJ1cy0xMzg1MzQ5LXNlZ3YtYnVzLXByb3h5LnBhdGNoIGIvaWJ1cy0xMzg1MzQ5LXNlZ3YtYnVz LXByb3h5LnBhdGNoCmluZGV4IGE5YzFhNzMuLjAyOTEyYTUgMTAwNjQ0Ci0tLSBhL2lidXMtMTM4 NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaAorKysgYi9pYnVzLTEzODUzNDktc2Vndi1idXMtcHJv eHkucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIDhlYTBkM2YyNTA3OGM2MTJiNGIxNmM5NTVj MWMwYzE3ZTc2NGQ4YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRhZDJmMTYwZTJh ZjBiNzExNDhiM2Y3NzI2ZTcxZjI2YTEwN2ZmMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBG cm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDI3 IEp1bCAyMDE3IDE4OjU2OjAxICswOTAwCitEYXRlOiBXZWQsIDIxIEZlYiAyMDE4IDE1OjA1OjE4 ICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIGJ1czogRml4IFNFR1YgaW4gYnVzX3BhbmVsX3Byb3h5 X2ZvY3VzX2luKCkKIAogQlVHPXJoYnojMTM0OTE0OApAQCAtMTAsMTEgKzEwLDExIEBAIEJVRz1y aGJ6IzE0MDY2OTkKIEJVRz1yaGJ6IzE0MzIyNTIKIC0tLQogIGJ1cy9kYnVzaW1wbC5jIHwgMzgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSBidXMvaWJ1c2ltcGwuYyB8 IDIyICsrKysrKysrKysrKysrKysrKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCisgYnVzL2lidXNpbXBsLmMgfCAyMSArKysrKysrKysrKysr KysrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25z KC0pCiAKIGRpZmYgLS1naXQgYS9idXMvZGJ1c2ltcGwuYyBiL2J1cy9kYnVzaW1wbC5jCi1pbmRl eCBiNTRlZjgxLi5lNGRkODY4IDEwMDY0NAoraW5kZXggYjU0ZWY4MTcuLmU0ZGQ4NjgzIDEwMDY0 NAogLS0tIGEvYnVzL2RidXNpbXBsLmMKICsrKyBiL2J1cy9kYnVzaW1wbC5jCiBAQCAtMiw3ICsy LDggQEAKQEAgLTEyNCw0MSArMTI0LDM3IEBAIGluZGV4IGI1NGVmODEuLmU0ZGQ4NjggMTAwNjQ0 CiAgICAgIGlmIChpbmNvbWluZykgewogICAgICAgICAgLyogaXMgaW5jb21pbmcgbWVzc2FnZSAq LwogZGlmZiAtLWdpdCBhL2J1cy9pYnVzaW1wbC5jIGIvYnVzL2lidXNpbXBsLmMKLWluZGV4IGY5 OTMwN2EuLjJkNDNmZjYgMTAwNjQ0CitpbmRleCA1OGQyMDVjZi4uMzRmNmM5MDkgMTAwNjQ0CiAt LS0gYS9idXMvaWJ1c2ltcGwuYwogKysrIGIvYnVzL2lidXNpbXBsLmMKLUBAIC0yLDcgKzIsOCBA QAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAg KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWls LmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBSZWQgSGF0LCBJbmMuCi0rICogQ29w eXJpZ2h0IChDKSAyMDE1LTIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgUmVkIEhhdCwgSW5jLgotICAqCi0g ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKLUBAIC0zMjMsMTEgKzMyNCwxNCBAQCBfZGJ1c19uYW1lX293bmVyX2No YW5nZWRfY2IgKEJ1c0RCdXNJbXBsICAgKmRidXMsCi0gICAgIGdfYXNzZXJ0IChuZXdfbmFtZSAh PSBOVUxMKTsKLSAgICAgZ19hc3NlcnQgKEJVU19JU19JQlVTX0lNUEwgKGlidXMpKTsKK0BAIC0z NTcsMTMgKzM1NywxNiBAQCBfZGJ1c19uYW1lX293bmVyX2NoYW5nZWRfY2IgKEJ1c0RCdXNJbXBs ICAgKmRidXMsCisgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKG5hbWUsIElCVVNfU0VSVklDRV9Q QU5FTF9FWFRFTlNJT04pKQorICAgICAgICAgcGFuZWxfdHlwZSA9IFBBTkVMX1RZUEVfRVhURU5T SU9OOwogIAotLSAgICBpZiAoZ19zdHJjbXAwIChuYW1lLCBJQlVTX1NFUlZJQ0VfUEFORUwpID09 IDApIHsKKy0gICAgaWYgKHBhbmVsX3R5cGUgIT0gUEFORUxfVFlQRV9OT05FKSB7CiArICAgIGRv IHsKLSsgICAgICAgIGlmIChnX3N0cmNtcDAgKG5hbWUsIElCVVNfU0VSVklDRV9QQU5FTCkgIT0g MCkKKysgICAgICAgIGlmIChwYW5lbF90eXBlID09IFBBTkVMX1RZUEVfTk9ORSkKICsgICAgICAg ICAgICBicmVhazsKICAgICAgICAgIGlmIChnX3N0cmNtcDAgKG5ld19uYW1lLCAiIikgIT0gMCkg ewogICAgICAgICAgICAgIC8qIGEgUGFuZWwgcHJvY2VzcyBpcyBzdGFydGVkLiAqLwogICAgICAg ICAgICAgIEJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb247CiAgICAgICAgICAgICAgQnVzSW5wdXRD b250ZXh0ICpjb250ZXh0ID0gTlVMTDsKKyAgICAgICAgICAgICBCdXNQYW5lbFByb3h5ICAgKipw YW5lbCA9IChwYW5lbF90eXBlID09IFBBTkVMX1RZUEVfUEFORUwpID8KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmaWJ1cy0+cGFuZWwgOiAmaWJ1cy0+ZXh0ZW5zaW9u OwogKyAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAqZGJ1c19jb25uZWN0aW9uID0gTlVMTDsK ICAKLSAgICAgICAgICAgICBpZiAoaWJ1cy0+cGFuZWwgIT0gTlVMTCkgewotICAgICAgICAgICAg ICAgICBpYnVzX3Byb3h5X2Rlc3Ryb3kgKChJQnVzUHJveHkgKikgaWJ1cy0+cGFuZWwpOwotQEAg LTMzOCw2ICszNDIsMTggQEAgX2RidXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChCdXNEQnVzSW1w bCAgICpkYnVzLAotICAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBidXNfZGJ1c19pbXBsX2dldF9j b25uZWN0aW9uX2J5X25hbWUgKEJVU19ERUZBVUxUX0RCVVMsIG5ld19uYW1lKTsKKyAgICAgICAg ICAgICBpZiAoKnBhbmVsICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgaWJ1c19wcm94eV9k ZXN0cm95ICgoSUJ1c1Byb3h5ICopKCpwYW5lbCkpOworQEAgLTM3Miw5ICszNzUsMjEgQEAgX2Ri dXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChCdXNEQnVzSW1wbCAgICpkYnVzLAorICAgICAgICAg ICAgICAgICBnX2Fzc2VydCAoKnBhbmVsID09IE5VTEwpOworICAgICAgICAgICAgIH0KKyAKKy0g ICAgICAgICAgICBjb25uZWN0aW9uID0gYnVzX2RidXNfaW1wbF9nZXRfY29ubmVjdGlvbl9ieV9u YW1lIChCVVNfREVGQVVMVF9EQlVTLCBuZXdfbmFtZSk7CisrICAgICAgICAgICAgY29ubmVjdGlv biA9IGJ1c19kYnVzX2ltcGxfZ2V0X2Nvbm5lY3Rpb25fYnlfbmFtZSAoQlVTX0RFRkFVTFRfREJV UywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuZXdfbmFtZSk7CiAgICAgICAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoY29u bmVjdGlvbiAhPSBOVUxMKTsKICAKICsgICAgICAgICAgICBkYnVzX2Nvbm5lY3Rpb24gPSBidXNf Y29ubmVjdGlvbl9nZXRfZGJ1c19jb25uZWN0aW9uIChjb25uZWN0aW9uKTsKLSsKICsgICAgICAg ICAgICAvKiByaGJ6IzEzNDkxNDggcmhieiMxMzg1MzQ5CiArICAgICAgICAgICAgICogQXZvaWQg U0VHViBvZiBCVVNfSVNfUEFORUxfUFJPWFkgKGlidXMtPnBhbmVsKQogKyAgICAgICAgICAgICAq IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkZXN0cm95aW5nIHRoZSBjb25uZWN0aW9u CkBAIC0xNjksMTAgKzE2NSwxMCBAQCBpbmRleCBmOTkzMDdhLi4yZDQzZmY2IDEwMDY0NAogKyAg ICAgICAgICAgICAgICBicmVhazsKICsgICAgICAgICAgICB9CiArCi0gICAgICAgICAgICAgaWJ1 cy0+cGFuZWwgPSBidXNfcGFuZWxfcHJveHlfbmV3IChjb25uZWN0aW9uKTsKKyAgICAgICAgICAg ICAqcGFuZWwgPSBidXNfcGFuZWxfcHJveHlfbmV3IChjb25uZWN0aW9uLCBwYW5lbF90eXBlKTsK ICAKLSAgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0IChpYnVzLT5wYW5lbCwKLUBAIC0zNjYs NyArMzgyLDcgQEAgX2RidXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChCdXNEQnVzSW1wbCAgICpk YnVzLAorICAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKCpwYW5lbCwKK0BAIC00MDYsNyAr NDIxLDcgQEAgX2RidXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChCdXNEQnVzSW1wbCAgICpkYnVz LAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQpAQCAtMTgy LDUgKzE3OCw1IEBAIGluZGV4IGY5OTMwN2EuLjJkNDNmZjYgMTAwNjQ0CiAgICAgIGJ1c19pYnVz X2ltcGxfY29tcG9uZW50X25hbWVfb3duZXJfY2hhbmdlZCAoaWJ1cywgbmFtZSwgb2xkX25hbWUs IG5ld19uYW1lKTsKICB9CiAtLSAKLTIuOS4zCisyLjE0LjMKIAoKZGlmZiAtLWdpdCBhL2lidXMt SEVBRC5wYXRjaCBiL2lidXMtSEVBRC5wYXRjaAppbmRleCA2YjIxZWY1Li44ZDFmYTlmIDEwMDY0 NAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIGIvaWJ1cy1IRUFELnBhdGNoCkBAIC00NDQyLDMg KzQ0NDIsNDE4NCBAQCBpbmRleCA1NTVlYTY4Zi4uMGJmMzRkYTggMTAwNjQ0CiAtLSAKIDIuMTQu MwogCitGcm9tIGZiMDdmNjQ3NjRmMThmNzAyMjIxZmY1NTc0YjJmZDIxOTNmMDUxZjAgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+CitEYXRlOiBUdWUsIDIwIEZlYiAyMDE4IDE3OjI1OjA3ICswOTAwCitTdWJqZWN0OiBb UEFUQ0hdIEltcGxlbWVudCBpYnVzLWV4dGVuc2lvbi1ndGszIGZvciB0aGUgZ2xvYmFsIGtleWJp bmRpbmcKKworQ3VycmVudGx5IElCdXMgcGFuZWwgKGlidXMtdWktZ3RrMykgaXMgbm90IGF2YWls YWJsZSBpbiBHTk9NRSBhbmQgUGxhc21hCitzbyB0aGUgZW1vamkgYW5kIHVuaWNvZGUgcG9pbnQg dHlwaW5ncyBhcmUgbm90IGF2YWlsYWJsZSBpbiBHTk9NRSBhbmQgUGxhc21hLgorVGhlIHdvcmth cm91bmQgYGlidXMgZW1vamlgIGNvbW1hbmQgaXMgYXZhaWxhYmxlIGJ1dCBpdCBwdXQgdGhlIHNl bGVjdGVkCitjaGFyYWN0ZXIgaW50byB0aGUgY29weSBidWZmZXIgYW5kIHVzZXJzIGhhdmUgdG8g cGFzdGUgdGhlIGNoYXJhY3Rlci4KKworT3JpZ2luYWx5IHRoZSBlbW9qaSBmZWF0dXJlIHdhcyBp bXBsZW1lbnRlZCBpbiBJQnVzIEd0a0lNTW9kdWxlIGJ1dAoraXQgaGFkIHNldmVyYWwgcHJvYmxl bXM7IHRoZSBmaXJzdCBpcyB0aGUga2V5YmluZGluZyBpcyBoYXJkLWNvZGVkCithbmQgSUJ1cyBH dGtJTU1vZHVsZSBkb2VzIG5vdCB1c2UgR1NldHRpbmdzIGZvciB0aGUgY3VzdG9taXplZCBzZXR0 aW5ncy4KK1RoZSBzZWNvbmQgaXMgdGhlIGZlYXR1cmUgd2FzIGF2YWlsYWJsZSBmb3IgR1RLIGFw cGxpY2F0aW9ucy4KK1RoZSB0aGlyZCBpcyB0aGF0IFhLQiBpbnB1dCBzb3VyY2VzIHVzZXMgZ3Rr LWltLWNvbnRleHQtc2ltcGxlCitidXQgbm90IGlidXMgaW4gR05PTUUgZGVza3RvcCBzbyB1c2Vy cyBoYXZlIHRvIGFkZCBhbiBJTSBpbnB1dCBzb3VyY2VzCit0byBlbmFibGUgSUJ1cyBmb3IgdGhl IFhLQiBpbnB1dCBzb3VyY2VzLiBUaGUgZm91cnRoIGlzIHRoZSBmZWF0dXJlCit3YXMgYXZhaWxh YmxlIGZvciBJQnVzRW5naW5lU2ltcGxlIG9ubHkgYW5kIG90aGVyIElCdXMgSU1FcyBuZWVkIHRv Citpbmhlcml0IHRoYXQgY2xhc3MgdG8gZ2V0IHRoZSBlbW9qaSBmZWF0dXJlLiBUaGUgZmlmdGgg aXMgdGhhdAorZW1vamkgdHlwaW5nIGlzIGF2YWlsYWJsZSBmb3IgRW5nbGlzaCBvbmx5IHNpbmNl IElCdXNFbmdpbmVTaW1wbGUKK2hhZCB0aGUgZmVhdHVyZS4gVGhlIHNpeHRoIGlzIHRoYXQgdGhl IGRlZmF1bHQgb25lIGRpbWVuc2lvbiBsb29rdXAKK3dpbmRvdyB3YXMgbm90IHVzZWZ1bCB0byBj aG9vc2UgYW4gZW1vamkgYW5kIG5lZWRlZCB0d28gZGltZW5zaW9ucworbG9va3VwIHdpbmRvdy4K KworQW5kIHRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgbW92ZWQgZnJvbSBJQnVzIEd0a0lNTW9kdWxl IHRvIElCdXMgcGFuZWwKK3RvIGZpeCBhYm92ZSBwcm9ibGVtcy4KK0J1dCB1c2VycyBoYXZlIHRv IHVzZSBgaWJ1cyBlbW9qaWAgYXQgcHJlc2VudCBpZiBpYnVzLXVpLWd0azMKK2lzIG5vdCBhdmFp bGFibGUuCisKK05vdyBJIHRoaW5rIHRvIG1vdmUgdGhlIGVtb2ppIGZlYXR1cmUgZnJvbSBpYnVz LXVpLWd0azMgdG8gYW5vdGhlcgorSUJ1cyBjb21wb25lbnQ7IGlidXMtZXh0ZW5zaW9uLWd0azMg d2hpY2ggbWFuYWdlcyB0aGUgQ3RybC1TaGlmdC1lLgorR05PTUUgYW5kIFBsYXNtYSBkZXNrdG9w cyBzdGlsbCBkbyBub3Qgc2hvdyB0aGUgR1VJIG1lbnUgYnV0Cit0aGUgc2hvcnRjdXQga2V5IGlz IGF2YWlsYWJsZSBpbiB0aGlzIGltcGxlbWVudGF0aW9uLgorCitCVUc9UkhCWiMxNDMwNTAxCitS PVNoYXduLlAuSHVhbmdAZ21haWwuY29tCisKK1JldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmll dy5hcHBzcG90LmNvbS8zMzkzMDAwNDMKKy0tLQorIGJpbmRpbmdzL3ZhbGEvSUJ1cy0xLjAtY3Vz dG9tLnZhbGEgfCAgICA0ICsKKyBidXMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwg ICAgNyArLQorIGJ1cy9pYnVzaW1wbC5jICAgICAgICAgICAgICAgICAgICAgfCAgIDgyICsrLQor IGJ1cy9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICstCisgYnVzL21hcnNo YWxlcnMubGlzdCAgICAgICAgICAgICAgICB8ICAgIDEgKworIGJ1cy9wYW5lbHByb3h5LmMgICAg ICAgICAgICAgICAgICAgfCAgIDU3ICstCisgYnVzL3BhbmVscHJveHkuaCAgICAgICAgICAgICAg ICAgICB8ICAgMjAgKy0KKyBzcmMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgICAg NCArLQorIHNyYy9pYnVzLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBzcmMv aWJ1c21hcnNoYWxlcnMubGlzdCAgICAgICAgICAgIHwgICAgMSArCisgc3JjL2lidXNwYW5lbHNl cnZpY2UuYyAgICAgICAgICAgICB8ICAgODEgKystCisgc3JjL2lidXNwYW5lbHNlcnZpY2UuaCAg ICAgICAgICAgICB8ICAgMTUgKy0KKyBzcmMvaWJ1c3NlcmlhbGl6YWJsZS5jICAgICAgICAgICAg IHwgICAgNyArLQorIHNyYy9pYnVzc2VyaWFsaXphYmxlLmggICAgICAgICAgICAgfCAgIDE4ICst Cisgc3JjL2lidXNzaGFyZS5jICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KKyBzcmMvaWJ1 c3NoYXJlLmggICAgICAgICAgICAgICAgICAgIHwgICAxNyArLQorIHNyYy9pYnVzeGV2ZW50LmMg ICAgICAgICAgICAgICAgICAgfCAxMDA0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKworIHNyYy9pYnVzeGV2ZW50LmggICAgICAgICAgICAgICAgICAgfCAgMjk0ICsrKysrKysr KysrCisgc3JjL3Rlc3RzL3J1bnRlc3QgICAgICAgICAgICAgICAgICB8ICAgIDEgKworIHVpL2d0 azMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgIDU5ICsrLQorIHVpL2d0azMvYmluZGlu Z2NvbW1vbi52YWxhICAgICAgICAgfCAgMjE1ICsrKysrKysrCisgdWkvZ3RrMy9jYW5kaWRhdGVh cmVhLnZhbGEgICAgICAgICB8ICAxMDIgLS0tLQorIHVpL2d0azMvZXh0ZW5zaW9uLnZhbGEgICAg ICAgICAgICAgfCAgMTI0ICsrKysrCisgdWkvZ3RrMy9ndGtleHRlbnNpb24ueG1sLmluICAgICAg ICB8ICAgMTIgKworIHVpL2d0azMvaWNvbndpZGdldC52YWxhICAgICAgICAgICAgfCAgMTAzICsr KysKKyB1aS9ndGszL3BhbmVsLnZhbGEgICAgICAgICAgICAgICAgIHwgIDQwOCArKystLS0tLS0t LS0tLS0KKyB1aS9ndGszL3BhbmVsYmluZGluZy52YWxhICAgICAgICAgIHwgIDMzNSArKysrKysr KysrKysKKyAyNyBmaWxlcyBjaGFuZ2VkLCAyNTA2IGluc2VydGlvbnMoKyksIDQ5NSBkZWxldGlv bnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lidXN4ZXZlbnQuYworIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvaWJ1c3hldmVudC5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2d0azMvYmlu ZGluZ2NvbW1vbi52YWxhCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2d0azMvZXh0ZW5zaW9uLnZh bGEKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdWkvZ3RrMy9ndGtleHRlbnNpb24ueG1sLmluCisgY3Jl YXRlIG1vZGUgMTAwNjQ0IHVpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEKKworZGlmZiAtLWdpdCBh L2JpbmRpbmdzL3ZhbGEvSUJ1cy0xLjAtY3VzdG9tLnZhbGEgYi9iaW5kaW5ncy92YWxhL0lCdXMt MS4wLWN1c3RvbS52YWxhCitpbmRleCAxNDRkNzVlMi4uY2YxZmMzZmEgMTAwNjQ0CistLS0gYS9i aW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxhCisrKysgYi9iaW5kaW5ncy92YWxhL0lC dXMtMS4wLWN1c3RvbS52YWxhCitAQCAtNiw0ICs2LDggQEAgbmFtZXNwYWNlIElCdXMgeworIAkJ W0NDb2RlIChjbmFtZSA9ICJpYnVzX3RleHRfbmV3X2Zyb21fc3RhdGljX3N0cmluZyIsIGhhc19j b25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCisgCQlwdWJsaWMgVGV4dC5mcm9tX3N0YXRpY19z dHJpbmcgKHN0cmluZyBzdHIpOworIAl9CisrCXB1YmxpYyBjbGFzcyBYRXZlbnQgOiBJQnVzLlNl cmlhbGl6YWJsZSB7CisrCQlbQ0NvZGUgKGNuYW1lID0gImlidXNfeF9ldmVudF9uZXciLCBoYXNf Y29uc3RydWN0X2Z1bmN0aW9uID0gdHJ1ZSldCisrCQlwdWJsaWMgWEV2ZW50IChzdHJpbmcgZmly c3RfcHJvcGVydHlfbmFtZSwgLi4uKTsKKysJfQorIH0KK2RpZmYgLS1naXQgYS9idXMvTWFrZWZp bGUuYW0gYi9idXMvTWFrZWZpbGUuYW0KK2luZGV4IDg2NGJhOTIzLi44YmNjOGUxNiAxMDA2NDQK Ky0tLSBhL2J1cy9NYWtlZmlsZS5hbQorKysrIGIvYnVzL01ha2VmaWxlLmFtCitAQCAtMyw3ICsz LDggQEAKKyAjIGlidXMgLSBUaGUgSW5wdXQgQnVzCisgIworICMgQ29weXJpZ2h0IChjKSAyMDA3 LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CistIyBDb3B5cmlnaHQg KGMpIDIwMDctMjAxMyBSZWQgSGF0LCBJbmMuCisrIyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxOCBU YWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysjIENvcHlyaWdodCAo YykgMjAwNy0yMDE4IFJlZCBIYXQsIEluYy4KKyAjCisgIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgIyBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtMTA1LDYg KzEwNiwxMCBAQCBtYXJzaGFsZXJzLmM6IG1hcnNoYWxlcnMuaCBtYXJzaGFsZXJzLmxpc3QKKyAJ JChHTElCX0dFTk1BUlNIQUwpIC0tcHJlZml4PWJ1c19tYXJzaGFsICQoc3JjZGlyKS9tYXJzaGFs ZXJzLmxpc3QgLS1ib2R5IC0taW50ZXJuYWwpID4gJEAudG1wICYmIFwKKyAJbXYgJEAudG1wICRA CisgCisraWYgRU5BQkxFX0VNT0pJX0RJQ1QKKytBTV9DRkxBR1MgKz0gLURFTU9KSV9ESUNUCisr ZW5kaWYKKysKKyAKKyBpZiBFTkFCTEVfVEVTVFMKKyBURVNUUyA9IFwKK2RpZmYgLS1naXQgYS9i dXMvaWJ1c2ltcGwuYyBiL2J1cy9pYnVzaW1wbC5jCitpbmRleCBmOTkzMDdhZC4uNThkMjA1Y2Yg MTAwNjQ0CistLS0gYS9idXMvaWJ1c2ltcGwuYworKysrIGIvYnVzL2lidXNpbXBsLmMKK0BAIC0y LDcgKzIsOCBAQAorIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCisgLyogaWJ1cyAtIFRoZSBJbnB1 dCBCdXMKKyAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1 YW5nQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBSZWQgSGF0LCBJbmMu CisrICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3 YXJhMUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggUmVkIEhhdCwgSW5j LgorICAqCisgICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKK0BAIC03Myw2ICs3NCw3IEBAIHN0cnVjdCBfQnVzSUJ1 c0ltcGwgeworIAorICAgICBCdXNJbnB1dENvbnRleHQgKmZvY3VzZWRfY29udGV4dDsKKyAgICAg QnVzUGFuZWxQcm94eSAgICpwYW5lbDsKKysgICAgQnVzUGFuZWxQcm94eSAgICpleHRlbnNpb247 CisgCisgICAgIC8qIGEgZGVmYXVsdCBrZXltYXAgb2YgaWJ1cy1kYWVtb24gKHVzdWFsbHkgInVz Iikgd2hpY2ggaXMgdXNlZCBvbmx5CisgICAgICAqIHdoZW4gdXNlX3N5c19sYXlvdXQgaXMgRkFM U0UuICovCitAQCAtMjkwLDEyICsyOTIsMzcgQEAgX3BhbmVsX2Rlc3Ryb3lfY2IgKEJ1c1BhbmVs UHJveHkgKnBhbmVsLAorICAgICBnX2Fzc2VydCAoQlVTX0lTX1BBTkVMX1BST1hZIChwYW5lbCkp OworICAgICBnX2Fzc2VydCAoQlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykpOworIAorLSAgICBnX3Jl dHVybl9pZl9mYWlsIChpYnVzLT5wYW5lbCA9PSBwYW5lbCk7CistCistICAgIGlidXMtPnBhbmVs ID0gTlVMTDsKKysgICAgaWYgKGlidXMtPnBhbmVsID09IHBhbmVsKQorKyAgICAgICAgaWJ1cy0+ cGFuZWwgPSBOVUxMOworKyAgICBlbHNlIGlmIChpYnVzLT5leHRlbnNpb24gPT0gcGFuZWwpCisr ICAgICAgICBpYnVzLT5leHRlbnNpb24gPSBOVUxMOworKyAgICBlbHNlCisrICAgICAgICBnX3Jl dHVybl9pZl9yZWFjaGVkICgpOworICAgICBnX29iamVjdF91bnJlZiAocGFuZWwpOworIH0KKyAK KytzdGF0aWMgdm9pZAorK19wYW5lbF9wYW5lbF9leHRlbnNpb25fY2IgKEJ1c1BhbmVsUHJveHkg KnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgKnBhcmFt ZXRlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzSUJ1c0ltcGwgICppYnVzKQor K3sKKysgICAgaWYgKCFpYnVzLT5leHRlbnNpb24pIHsKKysgICAgICAgIGdfd2FybmluZyAoIlBh bmVsIGV4dGVuc2lvbiBpcyBub3QgcnVubmluZy4iKTsKKysgICAgICAgIHJldHVybjsKKysgICAg fQorKworKyAgICBnX3JldHVybl9pZl9mYWlsIChCVVNfSVNfSUJVU19JTVBMIChpYnVzKSk7Cisr ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKEJVU19JU19QQU5FTF9QUk9YWSAoaWJ1cy0+ZXh0ZW5zaW9u KSk7CisrCisrICAgIC8qIFVzZSB0aGUgREJ1cyBtZXRob2QgYmVjYXVzZSBpdCBzZWVtcyBhbnkg REJ1cyBzaWduYWwsCisrICAgICAqIGdfZGJ1c19tZXNzYWdlX25ld19zaWduYWwoKSwgY2Fubm90 IGJlIHJlYWNoZWQgdG8gdGhlIHNlcnZlci4gKi8KKysgICAgZ19kYnVzX3Byb3h5X2NhbGwgKEdf REJVU19QUk9YWSAoaWJ1cy0+ZXh0ZW5zaW9uKSwKKysgICAgICAgICAgICAgICAgICAgICAgICJQ YW5lbEV4dGVuc2lvblJlY2VpdmVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRl cnMsCisrICAgICAgICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAorKyAg ICAgICAgICAgICAgICAgICAgICAgLTEsIE5VTEwsIE5VTEwsIE5VTEwpOworK30KKysKKyBzdGF0 aWMgdm9pZAorIF9yZWdpc3RyeV9jaGFuZ2VkX2NiIChJQnVzUmVnaXN0cnkgKnJlZ2lzdHJ5LAor ICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgKmlidXMpCitAQCAtMzE3LDMzICsz NDQsNDcgQEAgX2RidXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChCdXNEQnVzSW1wbCAgICpkYnVz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAqbmV3X25hbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICppYnVzKQorIHsK KysgICAgUGFuZWxUeXBlIHBhbmVsX3R5cGUgPSBQQU5FTF9UWVBFX05PTkU7CisrCisgICAgIGdf YXNzZXJ0IChCVVNfSVNfREJVU19JTVBMIChkYnVzKSk7CisgICAgIGdfYXNzZXJ0IChuYW1lICE9 IE5VTEwpOworICAgICBnX2Fzc2VydCAob2xkX25hbWUgIT0gTlVMTCk7CisgICAgIGdfYXNzZXJ0 IChuZXdfbmFtZSAhPSBOVUxMKTsKKyAgICAgZ19hc3NlcnQgKEJVU19JU19JQlVTX0lNUEwgKGli dXMpKTsKKyAKKy0gICAgaWYgKGdfc3RyY21wMCAobmFtZSwgSUJVU19TRVJWSUNFX1BBTkVMKSA9 PSAwKSB7CisrICAgIGlmICghZ19zdHJjbXAwIChuYW1lLCBJQlVTX1NFUlZJQ0VfUEFORUwpKQor KyAgICAgICAgcGFuZWxfdHlwZSA9IFBBTkVMX1RZUEVfUEFORUw7CisrICAgIGVsc2UgaWYgKCFn X3N0cmNtcDAgKG5hbWUsIElCVVNfU0VSVklDRV9QQU5FTF9FWFRFTlNJT04pKQorKyAgICAgICAg cGFuZWxfdHlwZSA9IFBBTkVMX1RZUEVfRVhURU5TSU9OOworKworKyAgICBpZiAocGFuZWxfdHlw ZSAhPSBQQU5FTF9UWVBFX05PTkUpIHsKKyAgICAgICAgIGlmIChnX3N0cmNtcDAgKG5ld19uYW1l LCAiIikgIT0gMCkgeworICAgICAgICAgICAgIC8qIGEgUGFuZWwgcHJvY2VzcyBpcyBzdGFydGVk LiAqLworICAgICAgICAgICAgIEJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb247CisgICAgICAgICAg ICAgQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0ID0gTlVMTDsKKy0KKy0gICAgICAgICAgICBpZiAo aWJ1cy0+cGFuZWwgIT0gTlVMTCkgeworLSAgICAgICAgICAgICAgICBpYnVzX3Byb3h5X2Rlc3Ry b3kgKChJQnVzUHJveHkgKikgaWJ1cy0+cGFuZWwpOworLSAgICAgICAgICAgICAgICAvKiBwYW5l bCBzaG91bGQgYmUgTlVMTCBhZnRlciBkZXN0cm95LiBTZWUgX3BhbmVsX2Rlc3Ryb3lfY2IgZm9y IGRldGFpbHMuICovCistICAgICAgICAgICAgICAgIGdfYXNzZXJ0IChpYnVzLT5wYW5lbCA9PSBO VUxMKTsKKysgICAgICAgICAgICBCdXNQYW5lbFByb3h5ICAgKipwYW5lbCA9IChwYW5lbF90eXBl ID09IFBBTkVMX1RZUEVfUEFORUwpID8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmaWJ1cy0+cGFuZWwgOiAmaWJ1cy0+ZXh0ZW5zaW9uOworKworKyAgICAgICAgICAg IGlmICgqcGFuZWwgIT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBpYnVzX3Byb3h5X2Rlc3Ry b3kgKChJQnVzUHJveHkgKikoKnBhbmVsKSk7CisrICAgICAgICAgICAgICAgIC8qIHBhbmVsIHNo b3VsZCBiZSBOVUxMIGFmdGVyIGRlc3Ryb3kuIFNlZSBfcGFuZWxfZGVzdHJveV9jYgorKyAgICAg ICAgICAgICAgICAgKiBmb3IgZGV0YWlscy4gKi8KKysgICAgICAgICAgICAgICAgZ19hc3NlcnQg KCpwYW5lbCA9PSBOVUxMKTsKKyAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgY29ubmVj dGlvbiA9IGJ1c19kYnVzX2ltcGxfZ2V0X2Nvbm5lY3Rpb25fYnlfbmFtZSAoQlVTX0RFRkFVTFRf REJVUywgbmV3X25hbWUpOworICAgICAgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbm5lY3Rp b24gIT0gTlVMTCk7CisgCistICAgICAgICAgICAgaWJ1cy0+cGFuZWwgPSBidXNfcGFuZWxfcHJv eHlfbmV3IChjb25uZWN0aW9uKTsKKysgICAgICAgICAgICAqcGFuZWwgPSBidXNfcGFuZWxfcHJv eHlfbmV3IChjb25uZWN0aW9uLCBwYW5lbF90eXBlKTsKKyAKKy0gICAgICAgICAgICBnX3NpZ25h bF9jb25uZWN0IChpYnVzLT5wYW5lbCwKKysgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0ICgq cGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc3Ryb3kiLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9wYW5lbF9kZXN0cm95X2NiKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzKTsKKysgICAgICAgICAgICBnX3Np Z25hbF9jb25uZWN0ICgqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBh bmVsLWV4dGVuc2lvbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFD SyAoX3BhbmVsX3BhbmVsX2V4dGVuc2lvbl9jYiksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWJ1cyk7CisgCisgICAgICAgICAgICAgaWYgKGlidXMtPmZvY3VzZWRfY29udGV4dCAh PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBpYnVzLT5mb2N1c2VkX2NvbnRl eHQ7CitAQCAtMzU1LDE0ICszOTYsMTMgQEAgX2RidXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChC dXNEQnVzSW1wbCAgICpkYnVzLAorICAgICAgICAgICAgIGlmIChjb250ZXh0ICE9IE5VTEwpIHsK KyAgICAgICAgICAgICAgICAgQnVzRW5naW5lUHJveHkgKmVuZ2luZTsKKyAKKy0gICAgICAgICAg ICAgICAgYnVzX3BhbmVsX3Byb3h5X2ZvY3VzX2luIChpYnVzLT5wYW5lbCwgY29udGV4dCk7Cisr ICAgICAgICAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9mb2N1c19pbiAoKnBhbmVsLCBjb250ZXh0 KTsKKyAKKyAgICAgICAgICAgICAgICAgZW5naW5lID0gYnVzX2lucHV0X2NvbnRleHRfZ2V0X2Vu Z2luZSAoY29udGV4dCk7CisgICAgICAgICAgICAgICAgIGlmIChlbmdpbmUgIT0gTlVMTCkgewor ICAgICAgICAgICAgICAgICAgICAgSUJ1c1Byb3BMaXN0ICpwcm9wX2xpc3QgPQorICAgICAgICAg ICAgICAgICAgICAgICAgIGJ1c19lbmdpbmVfcHJveHlfZ2V0X3Byb3BlcnRpZXMgKGVuZ2luZSk7 CistICAgICAgICAgICAgICAgICAgICBidXNfcGFuZWxfcHJveHlfcmVnaXN0ZXJfcHJvcGVydGll cyAoaWJ1cy0+cGFuZWwsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJvcF9saXN0KTsKKysgICAgICAgICAgICAgICAgICAgIGJ1c19w YW5lbF9wcm94eV9yZWdpc3Rlcl9wcm9wZXJ0aWVzICgqcGFuZWwsIHByb3BfbGlzdCk7CisgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitAQCAtNDAzLDYgKzQ0 Myw3IEBAIGJ1c19pYnVzX2ltcGxfaW5pdCAoQnVzSUJ1c0ltcGwgKmlidXMpCisgICAgIGlidXMt PmNvbnRleHRzID0gTlVMTDsKKyAgICAgaWJ1cy0+Zm9jdXNlZF9jb250ZXh0ID0gTlVMTDsKKyAg ICAgaWJ1cy0+cGFuZWwgPSBOVUxMOworKyAgICBpYnVzLT5leHRlbnNpb24gPSBOVUxMOworIAor ICAgICBpYnVzLT5rZXltYXAgPSBpYnVzX2tleW1hcF9nZXQgKCJ1cyIpOworIAorQEAgLTYzNSw2 ICs2NzYsOCBAQCBidXNfaWJ1c19pbXBsX3NldF9mb2N1c2VkX2NvbnRleHQgKEJ1c0lCdXNJbXBs ICAgICAqaWJ1cywKKyAKKyAgICAgICAgIGlmIChpYnVzLT5wYW5lbCAhPSBOVUxMKQorICAgICAg ICAgICAgIGJ1c19wYW5lbF9wcm94eV9mb2N1c19vdXQgKGlidXMtPnBhbmVsLCBpYnVzLT5mb2N1 c2VkX2NvbnRleHQpOworKyAgICAgICAgaWYgKGlidXMtPmV4dGVuc2lvbiAhPSBOVUxMKQorKyAg ICAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9mb2N1c19vdXQgKGlidXMtPmV4dGVuc2lvbiwgaWJ1 cy0+Zm9jdXNlZF9jb250ZXh0KTsKKyAKKyAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2dldF9j b250ZW50X3R5cGUgKGlidXMtPmZvY3VzZWRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZwdXJwb3NlLCAmaGludHMpOworQEAgLTY1OCw2ICs3 MDEsOCBAQCBidXNfaWJ1c19pbXBsX3NldF9mb2N1c2VkX2NvbnRleHQgKEJ1c0lCdXNJbXBsICAg ICAqaWJ1cywKKyAKKyAgICAgICAgIGlmIChpYnVzLT5wYW5lbCAhPSBOVUxMKQorICAgICAgICAg ICAgIGJ1c19wYW5lbF9wcm94eV9mb2N1c19pbiAoaWJ1cy0+cGFuZWwsIGNvbnRleHQpOworKyAg ICAgICAgaWYgKGlidXMtPmV4dGVuc2lvbiAhPSBOVUxMKQorKyAgICAgICAgICAgIGJ1c19wYW5l bF9wcm94eV9mb2N1c19pbiAoaWJ1cy0+ZXh0ZW5zaW9uLCBjb250ZXh0KTsKKyAgICAgfQorIAor ICAgICBpZiAoZW5naW5lICE9IE5VTEwpCitAQCAtODQ2LDggKzg5MSwxMyBAQCBfY29udGV4dF9k ZXN0cm95X2NiIChCdXNJbnB1dENvbnRleHQgICAgKmNvbnRleHQsCisgICAgICAgICBidXNfaWJ1 c19pbXBsX3NldF9mb2N1c2VkX2NvbnRleHQgKGlidXMsIE5VTEwpOworIAorICAgICBpZiAoaWJ1 cy0+cGFuZWwgJiYKKy0gICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2dldF9jYXBhYmlsaXRpZXMg KGNvbnRleHQpICYgSUJVU19DQVBfRk9DVVMpCisrICAgICAgICBidXNfaW5wdXRfY29udGV4dF9n ZXRfY2FwYWJpbGl0aWVzIChjb250ZXh0KSAmIElCVVNfQ0FQX0ZPQ1VTKSB7CisgICAgICAgICBi dXNfcGFuZWxfcHJveHlfZGVzdHJveV9jb250ZXh0IChpYnVzLT5wYW5lbCwgY29udGV4dCk7Cisr ICAgIH0KKysgICAgaWYgKGlidXMtPmV4dGVuc2lvbiAmJgorKyAgICAgICAgYnVzX2lucHV0X2Nv bnRleHRfZ2V0X2NhcGFiaWxpdGllcyAoY29udGV4dCkgJiBJQlVTX0NBUF9GT0NVUykgeworKyAg ICAgICAgYnVzX3BhbmVsX3Byb3h5X2Rlc3Ryb3lfY29udGV4dCAoaWJ1cy0+ZXh0ZW5zaW9uLCBj b250ZXh0KTsKKysgICAgfQorIAorICAgICBpYnVzLT5jb250ZXh0cyA9IGdfbGlzdF9yZW1vdmUg KGlidXMtPmNvbnRleHRzLCBjb250ZXh0KTsKKyAgICAgZ19vYmplY3RfdW5yZWYgKGNvbnRleHQp OworZGlmZiAtLWdpdCBhL2J1cy9tYWluLmMgYi9idXMvbWFpbi5jCitpbmRleCA2YWQ2MDE3OS4u NWIyNTg5YjEgMTAwNjQ0CistLS0gYS9idXMvbWFpbi5jCisrKysgYi9idXMvbWFpbi5jCitAQCAt Miw3ICsyLDggQEAKKyAvKiB2aW06c2V0IGV0IHN0cz00OiAqLworIC8qIGlidXMgLSBUaGUgSW5w dXQgQnVzCisgICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5o dWFuZ0BnbWFpbC5jb20+CistICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUmVkIEhhdCwgSW5j LgorKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IFJlZCBIYXQsIElu Yy4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtNDIsNiArNDMsNyBAQCBzdGF0aWMgZ2Jvb2xl YW4geGltID0gRkFMU0U7Cisgc3RhdGljIGdib29sZWFuIHJlcGxhY2UgPSBGQUxTRTsKKyBzdGF0 aWMgZ2Jvb2xlYW4gcmVzdGFydCA9IEZBTFNFOworIHN0YXRpYyBnY2hhciAqcGFuZWwgPSAiZGVm YXVsdCI7Cisrc3RhdGljIGdjaGFyICpwYW5lbF9leHRlbnNpb24gPSAiZGVmYXVsdCI7Cisgc3Rh dGljIGdjaGFyICpjb25maWcgPSAiZGVmYXVsdCI7Cisgc3RhdGljIGdjaGFyICpkZXNrdG9wID0g Imdub21lIjsKKyAKK0BAIC02MCw2ICs2Miw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkg ZW50cmllc1tdID0KKyAgICAgeyAieGltIiwgICAgICAgJ3gnLCAwLCBHX09QVElPTl9BUkdfTk9O RSwgICAmeGltLCAgICAgICAiZXhlY3V0ZSBpYnVzIFhJTSBzZXJ2ZXIuIiwgTlVMTCB9LAorICAg ICB7ICJkZXNrdG9wIiwgICAnbicsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZkZXNrdG9wLCAg ICJzcGVjaWZ5IHRoZSBuYW1lIG9mIGRlc2t0b3Agc2Vzc2lvbi4gW2RlZmF1bHQ9Z25vbWVdIiwg Im5hbWUiIH0sCisgICAgIHsgInBhbmVsIiwgICAgICdwJywgMCwgR19PUFRJT05fQVJHX1NUUklO RywgJnBhbmVsLCAgICAgInNwZWNpZnkgdGhlIGNtZGxpbmUgb2YgcGFuZWwgcHJvZ3JhbS4gcGFz cyAnZGlzYWJsZScgbm90IHRvIHN0YXJ0IGEgcGFuZWwgcHJvZ3JhbS4iLCAiY21kbGluZSIgfSwK KysgICAgeyAicGFuZWwtZXh0ZW5zaW9uIiwgJ0UnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAm cGFuZWxfZXh0ZW5zaW9uLCAic3BlY2lmeSB0aGUgY21kbGluZSBvZiBwYW5lbCBleHRlbnNpb24g cHJvZ3JhbS4gcGFzcyAnZGlzYWJsZScgbm90IHRvIHN0YXJ0IGFuIGV4dGVuc2lvbiBwcm9ncmFt LiIsICJjbWRsaW5lIiB9LAorICAgICB7ICJjb25maWciLCAgICAnYycsIDAsIEdfT1BUSU9OX0FS R19TVFJJTkcsICZjb25maWcsICAgICJzcGVjaWZ5IHRoZSBjbWRsaW5lIG9mIGNvbmZpZyBwcm9n cmFtLiBwYXNzICdkaXNhYmxlJyBub3QgdG8gc3RhcnQgYSBjb25maWcgcHJvZ3JhbS4iLCAiY21k bGluZSIgfSwKKyAgICAgeyAiYWRkcmVzcyIsICAgJ2EnLCAwLCBHX09QVElPTl9BUkdfU1RSSU5H LCAmZ19hZGRyZXNzLCAgICJzcGVjaWZ5IHRoZSBhZGRyZXNzIG9mIGlidXMgZGFlbW9uLiIsICJh ZGRyZXNzIiB9LAorICAgICB7ICJyZXBsYWNlIiwgICAncicsIDAsIEdfT1BUSU9OX0FSR19OT05F LCAgICZyZXBsYWNlLCAgICJpZiB0aGVyZSBpcyBhbiBvbGQgaWJ1cy1kYWVtb24gaXMgcnVubmlu ZywgaXQgd2lsbCBiZSByZXBsYWNlZC4iLCBOVUxMIH0sCitAQCAtMjY4LDcgKzI3MSwyNyBAQCBt YWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikKKyAgICAgICAgICAgICBpZiAoIWV4ZWN1dGVf Y21kbGluZSAocGFuZWwpKQorICAgICAgICAgICAgICAgICBleGl0ICgtMSk7CisgICAgICAgICB9 CisrCisrI2lmZGVmIEVNT0pJX0RJQ1QKKysgICAgICAgIGlmIChnX3N0cmNtcDAgKHBhbmVsX2V4 dGVuc2lvbiwgImRlZmF1bHQiKSA9PSAwKSB7CisrICAgICAgICAgICAgQnVzQ29tcG9uZW50ICpj b21wb25lbnQ7CisrICAgICAgICAgICAgY29tcG9uZW50ID0gYnVzX2lidXNfaW1wbF9sb29rdXBf Y29tcG9uZW50X2J5X25hbWUgKAorKyAgICAgICAgICAgICAgICAgICAgQlVTX0RFRkFVTFRfSUJV UywgSUJVU19TRVJWSUNFX1BBTkVMX0VYVEVOU0lPTik7CisrICAgICAgICAgICAgaWYgKGNvbXBv bmVudCkgeworKyAgICAgICAgICAgICAgICBidXNfY29tcG9uZW50X3NldF9yZXN0YXJ0IChjb21w b25lbnQsIHJlc3RhcnQpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoY29tcG9u ZW50ID09IE5VTEwgfHwKKysgICAgICAgICAgICAgICAgIWJ1c19jb21wb25lbnRfc3RhcnQgKGNv bXBvbmVudCwgZ192ZXJib3NlKSkgeworKyAgICAgICAgICAgICAgICBnX3ByaW50ZXJyICgiQ2Fu IG5vdCBleGVjdXRlIGRlZmF1bHQgcGFuZWwgcHJvZ3JhbVxuIik7CisrICAgICAgICAgICAgICAg IGV4aXQgKC0xKTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9IGVsc2UgaWYgKGdfc3RyY21w MCAocGFuZWxfZXh0ZW5zaW9uLCAiZGlzYWJsZSIpICE9IDAgJiYKKysgICAgICAgICAgICAgICAg ICAgZ19zdHJjbXAwIChwYW5lbF9leHRlbnNpb24sICIiKSAhPSAwKSB7CisrICAgICAgICAgICAg aWYgKCFleGVjdXRlX2NtZGxpbmUgKHBhbmVsX2V4dGVuc2lvbikpCisrICAgICAgICAgICAgICAg IGV4aXQgKC0xKTsKKysgICAgICAgIH0KKyAgICAgfQorKyNlbmRpZgorIAorICAgICAvKiBleGVj dXRlIGlidXMgeGltIHNlcnZlciAqLworICAgICBpZiAoeGltKSB7CitkaWZmIC0tZ2l0IGEvYnVz L21hcnNoYWxlcnMubGlzdCBiL2J1cy9tYXJzaGFsZXJzLmxpc3QKK2luZGV4IGMwMzJjZGFhLi40 MzdjNmZlZSAxMDA2NDQKKy0tLSBhL2J1cy9tYXJzaGFsZXJzLmxpc3QKKysrKyBiL2J1cy9tYXJz aGFsZXJzLmxpc3QKK0BAIC0xMiw0ICsxMiw1IEBAIFZPSUQ6U1RSSU5HCisgVk9JRDpTVFJJTkcs SU5UCisgVk9JRDpVSU5ULFVJTlQKKyBWT0lEOlVJTlQsVUlOVCxVSU5UCisrVk9JRDpWQVJJQU5U CisgVk9JRDpWT0lECitkaWZmIC0tZ2l0IGEvYnVzL3BhbmVscHJveHkuYyBiL2J1cy9wYW5lbHBy b3h5LmMKK2luZGV4IDgzODFkN2RjLi5jMzkwOGZjZiAxMDA2NDQKKy0tLSBhL2J1cy9wYW5lbHBy b3h5LmMKKysrKyBiL2J1cy9wYW5lbHByb3h5LmMKK0BAIC0yLDggKzIsOCBAQAorIC8qIHZpbTpz ZXQgZXQgc3RzPTQ6ICovCisgLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKyAgKiBDb3B5cmlnaHQg KEMpIDIwMDgtMjAxNCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBD b3B5cmlnaHQgKEMpIDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+CistICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTQgUmVkIEhhdCwgSW5jLgorKyAqIENvcHly aWdodCAoQykgMjAxNy0yMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwu Y29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IFJlZCBIYXQsIEluYy4KKyAgKgorICAq IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCitAQCAtNTEsNiArNTEsNyBAQCBlbnVtIHsKKyAgICAgUFJPUEVSVFlfU0hP VywKKyAgICAgUFJPUEVSVFlfSElERSwKKyAgICAgQ09NTUlUX1RFWFQsCisrICAgIFBBTkVMX0VY VEVOU0lPTiwKKyAgICAgTEFTVF9TSUdOQUwsCisgfTsKKyAKK0BAIC01OSw2ICs2MCw3IEBAIHN0 cnVjdCBfQnVzUGFuZWxQcm94eSB7CisgCisgICAgIC8qIGluc3RhbmNlIG1lbWJlcnMgKi8KKyAg ICAgQnVzSW5wdXRDb250ZXh0ICpmb2N1c2VkX2NvbnRleHQ7CisrICAgIFBhbmVsVHlwZSBwYW5l bF90eXBlOworIH07CisgCisgc3RydWN0IF9CdXNQYW5lbFByb3h5Q2xhc3MgeworQEAgLTExMCwy MiArMTEyLDM5IEBAIHN0YXRpYyB2b2lkICAgICBidXNfcGFuZWxfcHJveHlfY29tbWl0X3RleHQK KyBHX0RFRklORV9UWVBFKEJ1c1BhbmVsUHJveHksIGJ1c19wYW5lbF9wcm94eSwgSUJVU19UWVBF X1BST1hZKQorIAorIEJ1c1BhbmVsUHJveHkgKgorLWJ1c19wYW5lbF9wcm94eV9uZXcgKEJ1c0Nv bm5lY3Rpb24gKmNvbm5lY3Rpb24pCisrYnVzX3BhbmVsX3Byb3h5X25ldyAoQnVzQ29ubmVjdGlv biAqY29ubmVjdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICBQYW5lbFR5cGUgICAgICBwYW5l bF90eXBlKQorIHsKKysgICAgY29uc3QgZ2NoYXIgKnBhdGggPSBOVUxMOworKyAgICBHT2JqZWN0 ICpvYmo7CisrICAgIEJ1c1BhbmVsUHJveHkgKnBhbmVsOworKworICAgICBnX2Fzc2VydCAoQlVT X0lTX0NPTk5FQ1RJT04gKGNvbm5lY3Rpb24pKTsKKyAKKy0gICAgR09iamVjdCAqb2JqOworKyAg ICBzd2l0Y2ggKHBhbmVsX3R5cGUpIHsKKysgICAgY2FzZSBQQU5FTF9UWVBFX1BBTkVMOgorKyAg ICAgICAgcGF0aCA9IElCVVNfUEFUSF9QQU5FTDsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNl IFBBTkVMX1RZUEVfRVhURU5TSU9OOgorKyAgICAgICAgcGF0aCA9IElCVVNfUEFUSF9QQU5FTF9F WFRFTlNJT047CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICAgIGdfcmV0 dXJuX3ZhbF9pZl9yZWFjaGVkIChOVUxMKTsKKysgICAgfQorKworICAgICBvYmogPSBnX2luaXRh YmxlX25ldyAoQlVTX1RZUEVfUEFORUxfUFJPWFksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICJnLW9iamVjdC1wYXRoIiwgICAgIElCVVNfUEFUSF9QQU5FTCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICJnLW9iamVjdC1wYXRoIiwgICAgIHBhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAiZy1pbnRlcmZhY2UtbmFtZSIsICBJQlVTX0lOVEVSRkFDRV9Q QU5FTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJnLWNvbm5lY3Rpb24iLCAgICAgIGJ1 c19jb25uZWN0aW9uX2dldF9kYnVzX2Nvbm5lY3Rpb24gKGNvbm5lY3Rpb24pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgImctZGVmYXVsdC10aW1lb3V0IiwgZ19nZGJ1c190aW1lb3V0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgImctZmxhZ3MiLCAgICAgICAgICAgR19EQlVTX1BS T1hZX0ZMQUdTX0RPX05PVF9BVVRPX1NUQVJUIHwgR19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9M T0FEX1BST1BFUlRJRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAKKy0g ICAgcmV0dXJuIEJVU19QQU5FTF9QUk9YWSAob2JqKTsKKysgICAgcGFuZWwgPSBCVVNfUEFORUxf UFJPWFkgKG9iaik7CisrICAgIHBhbmVsLT5wYW5lbF90eXBlID0gcGFuZWxfdHlwZTsKKysgICAg cmV0dXJuIHBhbmVsOworIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTIzMSw2ICsyNTAsMTYgQEAg YnVzX3BhbmVsX3Byb3h5X2NsYXNzX2luaXQgKEJ1c1BhbmVsUHJveHlDbGFzcyAqY2xhc3MpCisg ICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAgIEdfVFlQ RV9OT05FLCAxLAorICAgICAgICAgICAgIElCVVNfVFlQRV9URVhUKTsKKysKKysgICAgcGFuZWxf c2lnbmFsc1tQQU5FTF9FWFRFTlNJT05dID0KKysgICAgICAgIGdfc2lnbmFsX25ldyAoSV8oInBh bmVsLWV4dGVuc2lvbiIpLAorKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChjbGFzcyks CisrICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisrICAgICAgICAgICAgMCwKKysgICAg ICAgICAgICBOVUxMLCBOVUxMLAorKyAgICAgICAgICAgIGJ1c19tYXJzaGFsX1ZPSURfX1ZBUklB TlQsCisrICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisrICAgICAgICAgICAgR19UWVBFX1ZB UklBTlQpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTMzNyw2ICszNjYsMTUgQEAgYnVzX3Bh bmVsX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCisgICAgICAgICByZXR1cm47 CisgICAgIH0KKyAKKysgICAgaWYgKGdfc3RyY21wMCAoIlBhbmVsRXh0ZW5zaW9uIiwgc2lnbmFs X25hbWUpID09IDApIHsKKysgICAgICAgIGlmIChwYW5lbC0+cGFuZWxfdHlwZSAhPSBQQU5FTF9U WVBFX1BBTkVMKSB7CisrICAgICAgICAgICAgZ193YXJuaW5nICgiV3Jvbmcgc2lnbmFsIik7Cisr ICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgZ19zaWduYWxfZW1pdCAo cGFuZWwsIHBhbmVsX3NpZ25hbHNbUEFORUxfRVhURU5TSU9OXSwgMCwgcGFyYW1ldGVycyk7Cisr ICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgLyogc2hvdW5kIG5vdCBiZSByZWFjaGVk ICovCisgICAgIGdfcmV0dXJuX2lmX3JlYWNoZWQgKCk7CisgfQorQEAgLTgzMiwzICs4NzAsMTAg QEAgYnVzX3BhbmVsX3Byb3h5X2Rlc3Ryb3lfY29udGV4dCAoQnVzUGFuZWxQcm94eSAgICAqcGFu ZWwsCisgCisgICAgIGdfb2JqZWN0X3VucmVmIChjb250ZXh0KTsKKyB9CisrCisrUGFuZWxUeXBl CisrYnVzX3BhbmVsX3Byb3h5X2dldF9wYW5lbF90eXBlIChCdXNQYW5lbFByb3h5ICAgICpwYW5l bCkKKyt7CisrICAgIGdfYXNzZXJ0IChCVVNfSVNfUEFORUxfUFJPWFkgKHBhbmVsKSk7CisrICAg IHJldHVybiBwYW5lbC0+cGFuZWxfdHlwZTsKKyt9CitkaWZmIC0tZ2l0IGEvYnVzL3BhbmVscHJv eHkuaCBiL2J1cy9wYW5lbHByb3h5LmgKK2luZGV4IDUwMDJmODZkLi5iNWE3YWYxNyAxMDA2NDQK Ky0tLSBhL2J1cy9wYW5lbHByb3h5LmgKKysrKyBiL2J1cy9wYW5lbHByb3h5LmgKK0BAIC0yLDcg KzIsOCBAQAorIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCisgLyogaWJ1cyAtIFRoZSBJbnB1dCBC dXMKKyAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5n QGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNCBSZWQgSGF0LCBJbmMuCisr ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggUmVkIEhhdCwgSW5jLgor ICAqCisgICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgorICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKK0BAIC01MCwxMiArNTEsMjUgQEAKKyAKKyBHX0JFR0lOX0RF Q0xTCisgCisrdHlwZWRlZiBlbnVtCisreworKyAgICBQQU5FTF9UWVBFX05PTkUsCisrICAgIFBB TkVMX1RZUEVfUEFORUwsCisrICAgIFBBTkVMX1RZUEVfRVhURU5TSU9OCisrfSBQYW5lbFR5cGU7 CisrCisgdHlwZWRlZiBzdHJ1Y3QgX0J1c1BhbmVsUHJveHkgQnVzUGFuZWxQcm94eTsKKyB0eXBl ZGVmIHN0cnVjdCBfQnVzUGFuZWxQcm94eUNsYXNzIEJ1c1BhbmVsUHJveHlDbGFzczsKKyAKKyBH VHlwZSAgICAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9nZXRfdHlwZSAgICAgICh2b2lkKTsKKy1C dXNQYW5lbFByb3h5ICAgKmJ1c19wYW5lbF9wcm94eV9uZXcgICAgICAgICAgIChCdXNDb25uZWN0 aW9uICAgICAqY29ubmVjdGlvbik7CisrQnVzUGFuZWxQcm94eSAgICpidXNfcGFuZWxfcHJveHlf bmV3ICAgICAgICAgICAoQnVzQ29ubmVjdGlvbiAgICAgKmNvbm5lY3Rpb24sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxUeXBlICAgICAgICAg IHBhbmVsX3R5cGUpOworIAorK2dib29sZWFuICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X3NlbmRf c2lnbmFsICAgKEJ1c1BhbmVsUHJveHkgICAqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICppbnRlcmZhY2VfbmFt ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBnY2hhciAgICAgKnNpZ25hbF9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAqcGFyYW1ldGVycywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAq KmVycm9yKTsKKyAvKiBmdW5jdGlvbnMgdGhhdCBpbnZva2UgRC1CdXMgbWV0aG9kcyBvZiB0aGUg cGFuZWwgY29tcG9uZW50LiAqLworIHZvaWQgICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2Zv Y3VzX2luICAgICAgKEJ1c1BhbmVsUHJveHkgICAgICpwYW5lbCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJbnB1dENvbnRleHQgICAqY29udGV4 dCk7CitAQCAtMTE5LDYgKzEzMyw4IEBAIHZvaWQgICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5 X3NldF9jb250ZW50X3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChCdXNQYW5lbFByb3h5ICAgICAqcGFuZWwsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgIHB1cnBvc2Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQg ICAgICAgICAgICAgIGhpbnRzKTsKKytQYW5lbFR5cGUgICAgICAgIGJ1c19wYW5lbF9wcm94eV9n ZXRfcGFuZWxfdHlwZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEJ1c1BhbmVsUHJveHkgICAgICpwYW5lbCk7CisgR19FTkRfREVDTFMKKyAjZW5kaWYK KyAKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4 IDFiYTQxOGQ4Li43MmVjMDVhYiAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIv c3JjL01ha2VmaWxlLmFtCitAQCAtMyw3ICszLDcgQEAKKyAjIGlidXMgLSBUaGUgSW5wdXQgQnVz CisgIworICMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTUgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFu Z0BnbWFpbC5jb20+CistIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNyBUYWthbyBGdWppd2FyYSA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysjIENvcHlyaWdodCAoYykgMjAxNS0yMDE4IFRh a2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorICMgQ29weXJpZ2h0IChj KSAyMDA3LTIwMTcgUmVkIEhhdCwgSW5jLgorICMKKyAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKK0BAIC0xMDMsNiArMTAzLDcg QEAgaWJ1c19zb3VyY2VzID0gICAgICAgICAgICAgIFwKKyAgICAgaWJ1c3RleHQuYyAgICAgICAg ICAgICAgXAorICAgICBpYnVzdW5pY29kZS5jICAgICAgICAgICBcCisgICAgIGlidXN1dGlsLmMg ICAgICAgICAgICAgIFwKKysgICAgaWJ1c3hldmVudC5jICAgICAgICAgICAgXAorICAgICBpYnVz eG1sLmMgICAgICAgICAgICAgICBcCisgICAgICQoTlVMTCkKKyBsaWJpYnVzXzFfMF9sYV9TT1VS Q0VTID0gICAgXAorQEAgLTE1NSw2ICsxNTYsNyBAQCBpYnVzX2hlYWRlcnMgPSAgICAgICAgICAg ICAgXAorICAgICBpYnVzdHlwZXMuaCAgICAgICAgICAgICBcCisgICAgIGlidXN1bmljb2RlLmgg ICAgICAgICAgIFwKKyAgICAgaWJ1c3V0aWwuaCAgICAgICAgICAgICAgXAorKyAgICBpYnVzeGV2 ZW50LmggICAgICAgICAgICBcCisgICAgIGlidXN4bWwuaCAgICAgICAgICAgICAgIFwKKyAgICAg JChOVUxMKQorIGlidXNpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9pYnVzLUBJQlVTX0FQSV9W RVJTSU9OQAorZGlmZiAtLWdpdCBhL3NyYy9pYnVzLmggYi9zcmMvaWJ1cy5oCitpbmRleCA4MDEx NzI5Zi4uYjE1ZGRlZDkgMTAwNjQ0CistLS0gYS9zcmMvaWJ1cy5oCisrKysgYi9zcmMvaWJ1cy5o CitAQCAtNTksNiArNTksNyBAQAorICNpbmNsdWRlIDxpYnVzcmVnaXN0cnkuaD4KKyAjaW5jbHVk ZSA8aWJ1c2Vtb2ppLmg+CisgI2luY2x1ZGUgPGlidXN1bmljb2RlLmg+CisrI2luY2x1ZGUgPGli dXN4ZXZlbnQuaD4KKyAKKyAjaWZuZGVmIElCVVNfRElTQUJMRV9ERVBSRUNBVEVECisgI2luY2x1 ZGUgPGlidXNrZXlzeW1zLWNvbXBhdC5oPgorZGlmZiAtLWdpdCBhL3NyYy9pYnVzbWFyc2hhbGVy cy5saXN0IGIvc3JjL2lidXNtYXJzaGFsZXJzLmxpc3QKK2luZGV4IDkxOGJjN2Y3Li44ZDkxOTM3 ZSAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzbWFyc2hhbGVycy5saXN0CisrKysgYi9zcmMvaWJ1c21h cnNoYWxlcnMubGlzdAorQEAgLTI0LDQgKzI0LDUgQEAgVk9JRDpTVFJJTkcsU1RSSU5HLFNUUklO RworIFZPSUQ6VUlOVAorIFZPSUQ6VUlOVCxQT0lOVEVSCisgVk9JRDpQT0lOVEVSLFVJTlQKKytW T0lEOlZBUklBTlQKKyBPQkpFQ1Q6U1RSSU5HCitkaWZmIC0tZ2l0IGEvc3JjL2lidXNwYW5lbHNl cnZpY2UuYyBiL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmMKK2luZGV4IDMzOTQ5ZmExLi5mMzdiOTFj MyAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmMKKysrKyBiL3NyYy9pYnVzcGFu ZWxzZXJ2aWNlLmMKK0BAIC0yNSw2ICsyNSwxMCBAQAorICNpbmNsdWRlICJpYnVzbWFyc2hhbGVy cy5oIgorICNpbmNsdWRlICJpYnVzaW50ZXJuYWwuaCIKKyAKKysjZGVmaW5lIElCVVNfUEFORUxf U0VSVklDRV9HRVRfUFJJVkFURShvKSAgXAorKyAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZB VEUgKChvKSwgSUJVU19UWVBFX1BBTkVMX1NFUlZJQ0UsIFwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJQnVzUGFuZWxTZXJ2aWNlUHJpdmF0ZSkpCisrCisgZW51bSB7CisgICAg IFVQREFURV9QUkVFRElUX1RFWFQsCisgICAgIFVQREFURV9BVVhJTElBUllfVEVYVCwKK0BAIC01 Miw2ICs1Niw3IEBAIGVudW0geworICAgICBTVEFURV9DSEFOR0VELAorICAgICBERVNUUk9ZX0NP TlRFWFQsCisgICAgIFNFVF9DT05URU5UX1RZUEUsCisrICAgIFBBTkVMX0VYVEVOU0lPTl9SRUNF SVZFRCwKKyAgICAgTEFTVF9TSUdOQUwsCisgfTsKKyAKK0BAIC0xNDYsNiArMTUxLDkgQEAgc3Rh dGljIHZvaWQgICAgICBpYnVzX3BhbmVsX3NlcnZpY2Vfc2V0X2NvbnRlbnRfdHlwZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElCdXNQYW5lbFNlcnZpY2UgICAgICAgKnBh bmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAg ICAgICAgICAgIHB1cnBvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3VpbnQgICAgICAgICAgICAgICAgICAgaGludHMpOworK3N0YXRpYyB2b2lkICAgICAgaWJ1c19w YW5lbF9zZXJ2aWNlX3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKElCdXNQYW5lbFNlcnZpY2UgICAgICAgKnBhbmVsLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICAgICAgKmRh dGEpOworIAorIEdfREVGSU5FX1RZUEUgKElCdXNQYW5lbFNlcnZpY2UsIGlidXNfcGFuZWxfc2Vy dmljZSwgSUJVU19UWVBFX1NFUlZJQ0UpCisgCitAQCAtMjEyLDYgKzIyMCw5IEBAIHN0YXRpYyBj b25zdCBnY2hhciBpbnRyb3NwZWN0aW9uX3htbFtdID0KKyAgICAgIiAgICAgIDxhcmcgZGlyZWN0 aW9uPSdpbicgIHR5cGU9J3UnIG5hbWU9J3B1cnBvc2UnIC8+IgorICAgICAiICAgICAgPGFyZyBk aXJlY3Rpb249J2luJyAgdHlwZT0ndScgbmFtZT0naGludHMnIC8+IgorICAgICAiICAgIDwvbWV0 aG9kPiIKKysgICAgIiAgICA8bWV0aG9kIG5hbWU9J1BhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQnPiIK KysgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0ndicgbmFtZT0nZGF0YScgLz4i CisrICAgICIgICAgPC9tZXRob2Q+IgorICAgICAvKiBTaWduYWxzICovCisgICAgICIgICAgPHNp Z25hbCBuYW1lPSdDdXJzb3JVcCcgLz4iCisgICAgICIgICAgPHNpZ25hbCBuYW1lPSdDdXJzb3JE b3duJyAvPiIKK0BAIC0yMzUsNiArMjQ2LDkgQEAgc3RhdGljIGNvbnN0IGdjaGFyIGludHJvc3Bl Y3Rpb25feG1sW10gPQorICAgICAiICAgIDxzaWduYWwgbmFtZT0nQ29tbWl0VGV4dCc+IgorICAg ICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPiIKKyAgICAgIiAgICA8L3NpZ25h bD4iCisrICAgICIgICAgPHNpZ25hbCBuYW1lPSdQYW5lbEV4dGVuc2lvbic+IgorKyAgICAiICAg ICAgPGFyZyB0eXBlPSd2JyBuYW1lPSdkYXRhJyAvPiIKKysgICAgIiAgICA8L3NpZ25hbD4iCisg ICAgICIgIDwvaW50ZXJmYWNlPiIKKyAgICAgIjwvbm9kZT4iOworIAorQEAgLTI3NCw2ICsyODgs OCBAQCBpYnVzX3BhbmVsX3NlcnZpY2VfY2xhc3NfaW5pdCAoSUJ1c1BhbmVsU2VydmljZUNsYXNz ICpjbGFzcykKKyAgICAgY2xhc3MtPnVwZGF0ZV9wcmVlZGl0X3RleHQgICA9IGlidXNfcGFuZWxf c2VydmljZV91cGRhdGVfcHJlZWRpdF90ZXh0OworICAgICBjbGFzcy0+dXBkYXRlX3Byb3BlcnR5 ICAgICAgID0gaWJ1c19wYW5lbF9zZXJ2aWNlX3VwZGF0ZV9wcm9wZXJ0eTsKKyAgICAgY2xhc3Mt PnNldF9jb250ZW50X3R5cGUgICAgICA9IGlidXNfcGFuZWxfc2VydmljZV9zZXRfY29udGVudF90 eXBlOworKyAgICBjbGFzcy0+cGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkID0KKysgICAgICAgICAg ICBpYnVzX3BhbmVsX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkOworIAorICAgICBj bGFzcy0+Y3Vyc29yX2Rvd25fbG9va3VwX3RhYmxlID0gaWJ1c19wYW5lbF9zZXJ2aWNlX25vdF9p bXBsZW1lbnRlZDsKKyAgICAgY2xhc3MtPmN1cnNvcl91cF9sb29rdXBfdGFibGUgICA9IGlidXNf cGFuZWxfc2VydmljZV9ub3RfaW1wbGVtZW50ZWQ7CitAQCAtODkxLDYgKzkwNywzMCBAQCBpYnVz X3BhbmVsX3NlcnZpY2VfY2xhc3NfaW5pdCAoSUJ1c1BhbmVsU2VydmljZUNsYXNzICpjbGFzcykK KyAgICAgICAgICAgICAyLAorICAgICAgICAgICAgIEdfVFlQRV9VSU5ULAorICAgICAgICAgICAg IEdfVFlQRV9VSU5UKTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNQYW5lbFNlcnZpY2U6OnBh bmVsLWV4dGVuc2lvbi1yZWNlaXZlZDoKKysgICAgICogQHBhbmVsOiBBbiAjSUJ1c1BhbmVsU2Vy dmljZQorKyAgICAgKiBAZGF0YTogQSAjR1ZhcmlhbnQKKysgICAgICoKKysgICAgICogRW1pdHRl ZCB3aGVuIHRoZSBjbGllbnQgYXBwbGljYXRpb24gZ2V0IHRoZSA6OnBhbmVsLWV4dGVuc2lvbi1y ZWNlaXZlZC4KKysgICAgICogSW1wbGVtZW50IHRoZSBtZW1iZXIgZnVuY3Rpb24KKysgICAgICog SUJ1c1BhbmVsU2VydmljZUNsYXNzOjpwYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQgaW4gZXh0ZW5k ZWQgY2xhc3MgdG8KKysgICAgICogcmVjZWl2ZSB0aGlzIHNpZ25hbC4KKysgICAgICoKKysgICAg ICogPG5vdGU+PHBhcmE+QXJndW1lbnQgQHVzZXJfZGF0YSBpcyBpZ25vcmVkIGluIHRoaXMgZnVu Y3Rpb24uPC9wYXJhPgorKyAgICAgKiA8L25vdGU+CisrICAgICAqLworKyAgICBwYW5lbF9zaWdu YWxzW1BBTkVMX0VYVEVOU0lPTl9SRUNFSVZFRF0gPQorKyAgICAgICAgZ19zaWduYWxfbmV3IChJ XygicGFuZWwtZXh0ZW5zaW9uLXJlY2VpdmVkIiksCisrICAgICAgICAgICAgR19UWVBFX0ZST01f Q0xBU1MgKGdvYmplY3RfY2xhc3MpLAorKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAor KyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoSUJ1c1BhbmVsU2VydmljZUNsYXNzLCBwYW5l bF9leHRlbnNpb25fcmVjZWl2ZWQpLAorKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCisrICAgICAg ICAgICAgX2lidXNfbWFyc2hhbF9WT0lEX19WQVJJQU5ULAorKyAgICAgICAgICAgIEdfVFlQRV9O T05FLAorKyAgICAgICAgICAgIDEsCisrICAgICAgICAgICAgR19UWVBFX1ZBUklBTlQpOworIH0K KyAKKyBzdGF0aWMgdm9pZAorQEAgLTEwODgsNiArMTEyOCwyNCBAQCBpYnVzX3BhbmVsX3NlcnZp Y2Vfc2VydmljZV9tZXRob2RfY2FsbCAoSUJ1c1NlcnZpY2UgICAgICAgICAgICpzZXJ2aWNlLAor ICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisrICAgIGlmIChnX3N0cmNtcDAgKG1ldGhvZF9u YW1lLCAiUGFuZWxFeHRlbnNpb25SZWNlaXZlZCIpID09IDApIHsKKysgICAgICAgIEdWYXJpYW50 ICp2YXJpYW50ID0gTlVMTDsKKysgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIo dikiLCAmdmFyaWFudCk7CisrICAgICAgICBpZiAodmFyaWFudCA9PSBOVUxMKSB7CisrICAgICAg ICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl9lcnJvciAoCisrICAgICAgICAg ICAgICAgICAgICBpbnZvY2F0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgR19EQlVTX0VSUk9S LAorKyAgICAgICAgICAgICAgICAgICAgR19EQlVTX0VSUk9SX0ZBSUxFRCwKKysgICAgICAgICAg ICAgICAgICAgICJQYW5lbEV4dGVuc2lvblJlY2VpdmVkIG1ldGhvZCBnaXZlcyBOVUxMIik7Cisr ICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgZ19zaWduYWxfZW1pdCAo cGFuZWwsIHBhbmVsX3NpZ25hbHNbUEFORUxfRVhURU5TSU9OX1JFQ0VJVkVEXSwgMCwKKysgICAg ICAgICAgICAgICAgICAgICAgIHZhcmlhbnQpOworKyAgICAgICAgZ192YXJpYW50X3VucmVmICh2 YXJpYW50KTsKKysgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUg KGludm9jYXRpb24sIE5VTEwpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIGNv bnN0IHN0YXRpYyBzdHJ1Y3QgeworICAgICAgICAgY29uc3QgZ2NoYXIgKm5hbWU7CisgICAgICAg ICBjb25zdCBnaW50IHNpZ25hbF9pZDsKK0BAIC0xMjU5LDYgKzEzMTcsMTMgQEAgaWJ1c19wYW5l bF9zZXJ2aWNlX3NldF9jb250ZW50X3R5cGUgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAorICAg ICBpYnVzX3BhbmVsX3NlcnZpY2Vfbm90X2ltcGxlbWVudGVkKHBhbmVsKTsKKyB9CisgCisrc3Rh dGljIHZvaWQKKytpYnVzX3BhbmVsX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkIChJ QnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICpkYXRhKQorK3sKKysgICAgaWJ1c19wYW5l bF9zZXJ2aWNlX25vdF9pbXBsZW1lbnRlZChwYW5lbCk7CisrfQorKworIElCdXNQYW5lbFNlcnZp Y2UgKgorIGlidXNfcGFuZWxfc2VydmljZV9uZXcgKEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlv bikKKyB7CitAQCAtMTM0Nyw2ICsxNDEyLDIxIEBAIGlidXNfcGFuZWxfc2VydmljZV9jb21taXRf dGV4dCAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCisgICAgIH0KKyB9CisgCisrdm9pZAorK2li dXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNpb24gKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVs LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAg KnZhcmlhbnQpCisreworKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1BBTkVMX1NFUlZJ Q0UgKHBhbmVsKSk7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHZhcmlhbnQpOworKworKyAgICBp YnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJQYW5lbEV4dGVuc2lvbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJp YW50X25ldyAoIih2KSIsIHZhcmlhbnQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5VTEwpOworK30KKysKKyAjZGVmaW5lIERFRklORV9GVU5DKG5hbWUsIE5hbWUpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBpYnVzX3BhbmVsX3NlcnZpY2VfIyNu YW1lIChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCkgICAgIFwKK0BAIC0xMzY0LDQgKzE0NDQsMyBA QCBERUZJTkVfRlVOQyAoY3Vyc29yX3VwLCBDdXJzb3JVcCkKKyBERUZJTkVfRlVOQyAocGFnZV9k b3duLCBQYWdlRG93bikKKyBERUZJTkVfRlVOQyAocGFnZV91cCwgUGFnZVVwKQorICN1bmRlZiBE RUZJTkVfRlVOQworLQorZGlmZiAtLWdpdCBhL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmggYi9zcmMv aWJ1c3BhbmVsc2VydmljZS5oCitpbmRleCBhNWIxM2M3My4uNjBlZjg0MmIgMTAwNjQ0CistLS0g YS9zcmMvaWJ1c3BhbmVsc2VydmljZS5oCisrKysgYi9zcmMvaWJ1c3BhbmVsc2VydmljZS5oCitA QCAtMiw3ICsyLDcgQEAKKyAvKiB2aW06c2V0IGV0IHN0cz00OiAqLworIC8qIGlidXMgLSBUaGUg SW5wdXQgQnVzCisgICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTQgR29vZ2xlIEluYy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KKy0gKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRh a2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMTggVGFr YW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisgICoKKyAgKiBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYworQEAgLTEyOCw2ICsxMjgsOSBAQCBzdHJ1Y3QgX0lCdXNQYW5lbFNlcnZpY2VDbGFzcyB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAg ICAgICAgICAgICAgICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2ludCAgICAgICAgICAgICAgICAgICAgdywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgIGgpOworKyAgICB2 b2lkICAgICAoKiBwYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzUGFuZWxTZXJ2aWNlICAgICAgICpwYW5lbCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAg ICAgICAgICAgICAgKmRhdGEpOworIAorICAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICAgLyogcGFk ZGluZyAqLworQEAgLTI0Miw1ICsyNDUsMTUgQEAgdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2VfcHJv cGVydHlfaGlkZSAgICAgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAorIHZvaWQgaWJ1c19wYW5l bF9zZXJ2aWNlX2NvbW1pdF90ZXh0ICAgICAgIChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAg ICAqdGV4dCk7CisgCisrLyoqCisrICogaWJ1c19wYW5lbF9zZXJ2aWNlX3BhbmVsX2V4dGVuc2lv bjoKKysgKiBAcGFuZWw6IEFuICNJQnVzUGFuZWxTZXJ2aWNlCisrICogQGRhdGE6ICh0cmFuc2Zl ciBmdWxsKTogQSAjR1ZhcmlhbnQgZGF0YSB3aGljaCBpcyBzZW50IHRvIGEgcGFuZWwgZXh0ZW5z aW9uLiAKKysgKgorKyAqIE5vdGlmeSB0aGF0IGEgZGF0YSBpcyBzZW50CisrICogYnkgc2VuZGlu ZyBhICJQYW5lbEV4dGVuc2lvbiIgbWVzc2FnZSB0byBJQnVzIHBhbmVsIGV4dGVuc2lvbiBzZXJ2 aWNlLgorKyAqLworK3ZvaWQgaWJ1c19wYW5lbF9zZXJ2aWNlX3BhbmVsX2V4dGVuc2lvbiAgIChJ QnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAqZGF0YSk7CisgR19FTkRfREVDTFMKKyAjZW5k aWYKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c3NlcmlhbGl6YWJsZS5jIGIvc3JjL2lidXNzZXJpYWxp emFibGUuYworaW5kZXggZDdmODY3ZjQuLmEzNzdiNjEzIDEwMDY0NAorLS0tIGEvc3JjL2lidXNz ZXJpYWxpemFibGUuYworKysrIGIvc3JjL2lidXNzZXJpYWxpemFibGUuYworQEAgLTIsNyArMiw4 IEBACisgLyogdmltOnNldCBldCBzdHM9NDogKi8KKyAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwor ICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21h aWwuY29tPgorLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFJlZCBIYXQsIEluYy4KKysgKiBD b3B5cmlnaHQgKEMpIDIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+CisrICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggUmVkIEhhdCwgSW5jLgorICAqCisgICog VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgorICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKK0BAIC0yNTEsNyArMjUyLDcgQEAgaWJ1c19zZXJpYWxpemFibGVfY29weSAo SUJ1c1NlcmlhbGl6YWJsZSAqb2JqZWN0KQorIH0KKyAKKyBHVmFyaWFudCAqCistaWJ1c19zZXJp YWxpemFibGVfc2VyaWFsaXplIChJQnVzU2VyaWFsaXphYmxlICpvYmplY3QpCisraWJ1c19zZXJp YWxpemFibGVfc2VyaWFsaXplX29iamVjdCAoSUJ1c1NlcmlhbGl6YWJsZSAqb2JqZWN0KQorIHsK KyAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfU0VSSUFMSVpBQkxFIChvYmplY3Qp LCBGQUxTRSk7CisgICAgIGdib29sZWFuIHJldHZhbDsKK0BAIC0yNjcsNyArMjY4LDcgQEAgaWJ1 c19zZXJpYWxpemFibGVfc2VyaWFsaXplIChJQnVzU2VyaWFsaXphYmxlICpvYmplY3QpCisgfQor IAorIElCdXNTZXJpYWxpemFibGUgKgorLWlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIChH VmFyaWFudCAqdmFyaWFudCkKKytpYnVzX3NlcmlhbGl6YWJsZV9kZXNlcmlhbGl6ZV9vYmplY3Qg KEdWYXJpYW50ICp2YXJpYW50KQorIHsKKyAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHZhcmlh bnQgIT0gTlVMTCwgTlVMTCk7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2lidXNzZXJpYWxpemFibGUu aCBiL3NyYy9pYnVzc2VyaWFsaXphYmxlLmgKK2luZGV4IDQzMjdlYWVlLi4xMDJkZTFiZCAxMDA2 NDQKKy0tLSBhL3NyYy9pYnVzc2VyaWFsaXphYmxlLmgKKysrKyBiL3NyYy9pYnVzc2VyaWFsaXph YmxlLmgKK0BAIC0yLDcgKzIsOCBAQAorIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCisgLyogaWJ1 cyAtIFRoZSBJbnB1dCBCdXMKKyAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5n IDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBS ZWQgSGF0LCBJbmMuCisrICogQ29weXJpZ2h0IChDKSAyMDE4IFRha2FvIEZ1aml3YXJhIDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IFJlZCBI YXQsIEluYy4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCitAQCAtMjQ4LDEwICsyNDksMTAgQEAgdm9p ZCAgICAgICAgICAgICAgICAgaWJ1c19zZXJpYWxpemFibGVfcmVtb3ZlX3FhdHRhY2htZW50Cisg ICoKKyAgKiBTZWUgYWxzbzogSUJ1c1NlcmlhbGl6YWJsZUNvcHlGdW5jKCkuCisgICovCistSUJ1 c1NlcmlhbGl6YWJsZSAgICAqaWJ1c19zZXJpYWxpemFibGVfY29weSAgICAgICAgICAgICAoSUJ1 c1NlcmlhbGl6YWJsZSAgICpzZXJpYWxpemFibGUpOworK0lCdXNTZXJpYWxpemFibGUgICAgKmli dXNfc2VyaWFsaXphYmxlX2NvcHkgKElCdXNTZXJpYWxpemFibGUgICAqc2VyaWFsaXphYmxlKTsK KyAKKyAvKioKKy0gKiBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemU6CisrICogaWJ1c19zZXJp YWxpemFibGVfc2VyaWFsaXplX29iamVjdDoKKyAgKiBAc2VyaWFsaXphYmxlOiBBbiAjSUJ1c1Nl cmlhbGl6YWJsZS4KKyAgKgorICAqIFNlcmlhbGl6ZSBhbiAjSUJ1c1NlcmlhbGl6YWJsZSB0byBh ICNHVmFyaWFudC4KK0BAIC0yNjEsMTAgKzI2MiwxMSBAQCBJQnVzU2VyaWFsaXphYmxlICAgICpp YnVzX3NlcmlhbGl6YWJsZV9jb3B5ICAgICAgICAgICAgIChJQnVzU2VyaWFsaXphYmxlICAgKnNl cgorICAqCisgICogU2VlIGFsc286IElCdXNTZXJpYWxpemFibGVDb3B5RnVuYygpLgorICAqLwor LUdWYXJpYW50ICAgICAgICAgICAgKmlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAgICAgICAg KElCdXNTZXJpYWxpemFibGUgICAqc2VyaWFsaXphYmxlKTsKKytHVmFyaWFudCAgICAgICAgICAg ICppYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemVfb2JqZWN0CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6YWJsZSAgICpzZXJpYWxpemFi bGUpOworIAorIC8qKgorLSAqIGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplOgorKyAqIGli dXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplX29iamVjdDoKKyAgKiBAdmFyaWFudDogQSAjR1Zh cmlhbnQuCisgICoKKyAgKiBEZXNlcmlhbGl6ZSBhICNHVmFyaWFudCB0byBhbiAjSUJ1c1Nlcmlh bGl6YWJsZS8KK0BAIC0yNzQsNyArMjc2LDExIEBAIEdWYXJpYW50ICAgICAgICAgICAgKmlidXNf c2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAgICAgICAgKElCdXNTZXJpYWxpemFibGUgICAqc2VyCisg ICoKKyAgKiBTZWUgYWxzbzogSUJ1c1NlcmlhbGl6YWJsZUNvcHlGdW5jKCkuCisgICovCistSUJ1 c1NlcmlhbGl6YWJsZSAgICAqaWJ1c19zZXJpYWxpemFibGVfZGVzZXJpYWxpemUgICAgICAoR1Zh cmlhbnQgICAgICAgICAgICp2YXJpYW50KTsKKytJQnVzU2VyaWFsaXphYmxlICAgICppYnVzX3Nl cmlhbGl6YWJsZV9kZXNlcmlhbGl6ZV9vYmplY3QKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChHVmFyaWFudCAgICAgICAgICAgKnZhcmlhbnQpOworKworKyNk ZWZpbmUgaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplIGlidXNfc2VyaWFsaXphYmxlX3Nlcmlh bGl6ZV9vYmplY3QKKysjZGVmaW5lIGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIGlidXNf c2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplX29iamVjdAorIAorIEdfRU5EX0RFQ0xTCisgI2VuZGlm CitkaWZmIC0tZ2l0IGEvc3JjL2lidXNzaGFyZS5jIGIvc3JjL2lidXNzaGFyZS5jCitpbmRleCBi NzkzYTk2Mi4uZDc3MjRhNmIgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c3NoYXJlLmMKKysrKyBiL3Ny Yy9pYnVzc2hhcmUuYworQEAgLTIsNyArMiw4IEBACisgLyogdmltOnNldCBldCBzdHM9NDogKi8K KyAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cworICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFBl bmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgorLSAqIENvcHlyaWdodCAoQykgMjAw OC0yMDEwIFJlZCBIYXQsIEluYy4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBUYWthbyBG dWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIw MDgtMjAxOCBSZWQgSGF0LCBJbmMuCisgICoKKyAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworQEAgLTI4Nyw2ICsy ODgsNyBAQCBpYnVzX2luaXQgKHZvaWQpCisgICAgIElCVVNfVFlQRV9FTkdJTkVfREVTQzsKKyAg ICAgSUJVU19UWVBFX09CU0VSVkVEX1BBVEg7CisgICAgIElCVVNfVFlQRV9SRUdJU1RSWTsKKysg ICAgSUJVU19UWVBFX1hfRVZFTlQ7CisgfQorIAorIHN0YXRpYyBHTWFpbkxvb3AgKm1haW5fbG9v cCA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvc3JjL2lidXNzaGFyZS5oIGIvc3JjL2lidXNzaGFyZS5o CitpbmRleCBmM2UyMDExZS4uNzU3ZDkxNWIgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c3NoYXJlLmgK KysrKyBiL3NyYy9pYnVzc2hhcmUuaAorQEAgLTIsNyArMiw4IEBACisgLyogdmltOnNldCBldCBz dHM9NDogKi8KKyAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cworICAqIENvcHlyaWdodCAoQykgMjAw OC0yMDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgorLSAqIENvcHlyaWdo dCAoQykgMjAwOC0yMDEzIFJlZCBIYXQsIEluYy4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAx OCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmln aHQgKEMpIDIwMDgtMjAxOCBSZWQgSGF0LCBJbmMuCisgICoKKyAgKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworQEAg LTY1LDYgKzY2LDEzIEBACisgICovCisgI2RlZmluZSBJQlVTX1NFUlZJQ0VfUEFORUwgICAgICAi b3JnLmZyZWVkZXNrdG9wLklCdXMuUGFuZWwiCisgCisrLyoqCisrICogSUJVU19TRVJWSUNFX1BB TkVMX0VYVEVOU0lPTjoKKysgKgorKyAqIEFkZHJlc3Mgb2YgSUJ1cyBwYW5lbCBleHRlbnNpb24g c2VydmljZS4KKysgKi8KKysjZGVmaW5lIElCVVNfU0VSVklDRV9QQU5FTF9FWFRFTlNJT04gIm9y Zy5mcmVlZGVza3RvcC5JQnVzLlBhbmVsLkV4dGVuc2lvbiIKKysKKyAvKioKKyAgKiBJQlVTX1NF UlZJQ0VfQ09ORklHOgorICAqCitAQCAtMTAwLDYgKzEwOCwxMyBAQAorICAqLworICNkZWZpbmUg SUJVU19QQVRIX1BBTkVMICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3AvSUJ1cy9QYW5lbCIKKyAK KysvKioKKysgKiBJQlVTX1BBVEhfUEFORUxfRVhURU5TSU9OOgorKyAqCisrICogRC1CdXMgcGF0 aCBmb3IgSUJ1cyBwYW5lbC4KKysgKi8KKysjZGVmaW5lIElCVVNfUEFUSF9QQU5FTF9FWFRFTlNJ T04gIi9vcmcvZnJlZWRlc2t0b3AvSUJ1cy9QYW5lbC9FeHRlbnNpb24iCisrCisgLyoqCisgICog SUJVU19QQVRIX0NPTkZJRzoKKyAgKgorZGlmZiAtLWdpdCBhL3NyYy9pYnVzeGV2ZW50LmMgYi9z cmMvaWJ1c3hldmVudC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmRl YTgwMjcyCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvaWJ1c3hldmVudC5jCitAQCAtMCwwICsx LDEwMDQgQEAKKysvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJz LW1vZGU6IG5pbDsgLSotICovCisrLyogdmltOnNldCBldCBzdHM9NDogKi8KKysvKiBpYnVzIC0g VGhlIElucHV0IEJ1cworKyAqIENvcHlyaWdodCAoQykgMjAxOCBUYWthbyBGdWppd2FyYSA8dGFr YW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggUmVkIEhhdCwg SW5jLgorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgor KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExp Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxCisrICogVVNBCisrICovCisrI2luY2x1ZGUg ImlidXNpbnRlcm5hbC5oIgorKyNpbmNsdWRlICJpYnVzeGV2ZW50LmgiCisrCisrI2RlZmluZSBJ QlVTX1hfRVZFTlRfVkVSU0lPTiAxCisrI2RlZmluZSBJQlVTX1hfRVZFTlRfR0VUX1BSSVZBVEUo bykgIFwKKysgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgobyksIElCVVNfVFlQRV9Y X0VWRU5ULCBJQnVzWEV2ZW50UHJpdmF0ZSkpCisrCisrZW51bSB7CisrICAgIFBST1BfMCwKKysg ICAgUFJPUF9WRVJTSU9OLAorKyAgICBQUk9QX0VWRU5UX1RZUEUsCisrICAgIFBST1BfV0lORE9X LAorKyAgICBQUk9QX1NFTkRfRVZFTlQsCisrICAgIFBST1BfU0VSSUFMLAorKyAgICBQUk9QX1RJ TUUsCisrICAgIFBST1BfU1RBVEUsCisrICAgIFBST1BfS0VZVkFMLAorKyAgICBQUk9QX0xFTkdU SCwKKysgICAgUFJPUF9TVFJJTkcsCisrICAgIFBST1BfSEFSRFdBUkVfS0VZQ09ERSwKKysgICAg UFJPUF9HUk9VUCwKKysgICAgUFJPUF9JU19NT0RJRklFUiwKKysgICAgUFJPUF9ST09ULAorKyAg ICBQUk9QX1NVQldJTkRPVywKKysgICAgUFJPUF9YLAorKyAgICBQUk9QX1ksCisrICAgIFBST1Bf WF9ST09ULAorKyAgICBQUk9QX1lfUk9PVCwKKysgICAgUFJPUF9TQU1FX1NDUkVFTiwKKysgICAg UFJPUF9QVVJQT1NFCisrfTsKKysKKysKKytzdHJ1Y3QgX0lCdXNYRXZlbnRQcml2YXRlIHsKKysg ICAgZ3VpbnQgICAgdmVyc2lvbjsKKysgICAgZ3VpbnQzMiAgdGltZTsKKysgICAgZ3VpbnQgICAg c3RhdGU7CisrICAgIGd1aW50ICAgIGtleXZhbDsKKysgICAgZ2ludCAgICAgbGVuZ3RoOworKyAg ICBnY2hhciAgICpzdHJpbmc7CisrICAgIGd1aW50MTYgIGhhcmR3YXJlX2tleWNvZGU7CisrICAg IGd1aW50OCAgIGdyb3VwOworKyAgICBnYm9vbGVhbiBpc19tb2RpZmllcjsKKysgICAgZ3VpbnQg ICAgcm9vdDsKKysgICAgZ3VpbnQgICAgc3Vid2luZG93OworKyAgICBnaW50ICAgICB4OworKyAg ICBnaW50ICAgICB5OworKyAgICBnaW50ICAgICB4X3Jvb3Q7CisrICAgIGdpbnQgICAgIHlfcm9v dDsKKysgICAgZ2Jvb2xlYW4gc2FtZV9zY3JlZW47CisrICAgIGdjaGFyICAgKnB1cnBvc2U7Cisr fTsKKysKKysvKiBmdW5jdGlvbnMgcHJvdG90eXBlICovCisrc3RhdGljIHZvaWQgICAgICBpYnVz X3hfZXZlbnRfZGVzdHJveSAgICAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOworK3N0 YXRpYyB2b2lkICAgICAgaWJ1c194X2V2ZW50X3NldF9wcm9wZXJ0eSAgIChJQnVzWEV2ZW50ICAg ICAgICAgKmV2ZW50LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBndWludCAgICAgICAgICAgICAgIHByb3BfaWQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdWYWx1ZSAgICAgICAqdmFsdWUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAg ICAgICAqcHNwZWMpOworK3N0YXRpYyB2b2lkICAgICAgaWJ1c194X2V2ZW50X2dldF9wcm9wZXJ0 eSAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgIHByb3BfaWQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYWx1ZSAgICAgICAg ICAgICAqdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdQYXJhbVNwZWMgICAgICAgICAqcHNwZWMpOworK3N0YXRpYyBnYm9vbGVhbiAgaWJ1c194 X2V2ZW50X3NlcmlhbGl6ZSAgICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudEJ1aWxkZXIg ICAgKmJ1aWxkZXIpOworK3N0YXRpYyBnaW50ICAgICAgaWJ1c194X2V2ZW50X2Rlc2VyaWFsaXpl ICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICAgKnZhcmlhbnQpOworK3N0 YXRpYyBnYm9vbGVhbiAgaWJ1c194X2V2ZW50X2NvcHkgICAgICAgICAgIChJQnVzWEV2ZW50ICAg ICAgICAgKmRlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IElCdXNYRXZlbnQgICAqc3JjKTsKKysKKytHX0RFRklORV9UWVBFIChJQnVzWEV2 ZW50LCBpYnVzX3hfZXZlbnQsIElCVVNfVFlQRV9TRVJJQUxJWkFCTEUpCisrCisrc3RhdGljIHZv aWQKKytpYnVzX3hfZXZlbnRfY2xhc3NfaW5pdCAoSUJ1c1hFdmVudENsYXNzICpjbGFzcykKKyt7 CisrICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChjbGFz cyk7CisrICAgIElCdXNPYmplY3RDbGFzcyAqb2JqZWN0X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xB U1MgKGNsYXNzKTsKKysgICAgSUJ1c1NlcmlhbGl6YWJsZUNsYXNzICpzZXJpYWxpemFibGVfY2xh c3MgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoY2xhc3MpOworKworKyAgICBnb2JqZWN0X2Ns YXNzLT5zZXRfcHJvcGVydHkgPQorKyAgICAgICAgICAgIChHT2JqZWN0U2V0UHJvcGVydHlGdW5j KSBpYnVzX3hfZXZlbnRfc2V0X3Byb3BlcnR5OworKyAgICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJv cGVydHkgPQorKyAgICAgICAgICAgIChHT2JqZWN0R2V0UHJvcGVydHlGdW5jKSBpYnVzX3hfZXZl bnRfZ2V0X3Byb3BlcnR5OworKworKyAgICBvYmplY3RfY2xhc3MtPmRlc3Ryb3kgPSAoSUJ1c09i amVjdERlc3Ryb3lGdW5jKSBpYnVzX3hfZXZlbnRfZGVzdHJveTsKKysKKysgICAgc2VyaWFsaXph YmxlX2NsYXNzLT5zZXJpYWxpemUgICA9CisrICAgICAgICAgICAgKElCdXNTZXJpYWxpemFibGVT ZXJpYWxpemVGdW5jKSBpYnVzX3hfZXZlbnRfc2VyaWFsaXplOworKyAgICBzZXJpYWxpemFibGVf Y2xhc3MtPmRlc2VyaWFsaXplID0KKysgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6YWJsZURlc2Vy aWFsaXplRnVuYykgaWJ1c194X2V2ZW50X2Rlc2VyaWFsaXplOworKyAgICBzZXJpYWxpemFibGVf Y2xhc3MtPmNvcHkgICAgICAgID0KKysgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6YWJsZUNvcHlG dW5jKSBpYnVzX3hfZXZlbnRfY29weTsKKysKKysgICAgLyogaW5zdGFsbCBwcm9wZXJ0aWVzICov CisrICAgIC8qKgorKyAgICAgKiBJQnVzWEV2ZW50OnZlcnNpb246CisrICAgICAqCisrICAgICAq IFZlcnNpb24gb2YgdGhpcyBJQnVzWEV2ZW50LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xh c3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAg IFBST1BfVkVSU0lPTiwKKysgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50ICgi dmVyc2lvbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAor KyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYVUlOVDMyLAorKyAgICAgICAgICAgICAgICAg ICAgICAgIElCVVNfWF9FVkVOVF9WRVJTSU9OLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdf UEFSQU1fUkVBREFCTEUpKTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNYRXZlbnQ6ZXZlbnQt dHlwZToKKysgICAgICoKKysgICAgICogSUJ1c1hFdmVudFR5cGUgb2YgdGhpcyBJQnVzWEV2ZW50 LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVj dF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfRVZFTlRfVFlQRSwKKysgICAgICAg ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJldmVudC10eXBlIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAiZXZlbnQgdHlwZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgImV2 ZW50IHR5cGUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorKyAgICAgICAgICAgICAg ICAgICAgICAgIEdfTUFYSU5UMzIsCisrICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisrICAg ICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfAorKyAgICAgICAgICAgICAg ICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKKysKKysgICAgLyoqCisrICAgICAq IElCdXNYRXZlbnQ6d2luZG93OgorKyAgICAgKgorKyAgICAgKiB3aW5kb3cgb2YgdGhpcyBJQnVz WEV2ZW50LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAo Z29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfV0lORE9XLAorKyAgICAg ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJ3aW5kb3ciLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICJ3aW5kb3ciLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aW5kb3ci LAorKyAgICAgICAgICAgICAgICAgICAgICAgIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAg R19NQVhVSU5UMzIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAg ICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8CisrICAgICAgICAgICAgICAgICAgICAgICAg R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAgICAvKioKKysgICAgICogSUJ1c1hFdmVu dDpzZW5kLWV2ZW50OgorKyAgICAgKgorKyAgICAgKiBzZW5kX2V2ZW50IG9mIHRoaXMgSUJ1c1hF dmVudC4KKysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdv YmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQUk9QX1NFTkRfRVZFTlQsCisrICAg ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgic2VuZC1ldmVudCIsCisrICAgICAg ICAgICAgICAgICAgICAgICAgInNlbmQgZXZlbnQiLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICJzZW5kIGV2ZW50IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIEdfTUFYSU5UOCwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAg ICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKKysgICAgICAgICAgICAg ICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7CisrCisrICAgIC8qKgorKyAgICAg KiBJQnVzWEV2ZW50OnNlcmlhbDoKKysgICAgICoKKysgICAgICogc2VyaWFsIG9mIHRoaXMgSUJ1 c1hFdmVudC4KKysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkg KGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQUk9QX1NFUklBTCwKKysgICAg ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191bG9uZyAoInNlcmlhbCIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgInNlcmlhbCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInNlcmlh bCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAg ICBHX01BWFVJTlQ2NCwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKKysgICAgICAgICAgICAgICAgICAgICAg ICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7CisrCisrICAgIC8qKgorKyAgICAgKiBJQnVzWEV2 ZW50OnRpbWU6CisrICAgICAqCisrICAgICAqIHRpbWUgb2YgdGhpcyBJQnVzWEV2ZW50LgorKyAg ICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFz cywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfVElNRSwKKysgICAgICAgICAgICAgICAgICAg IGdfcGFyYW1fc3BlY191aW50ICgidGltZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInRp bWUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYVUlOVDMyLAorKyAgICAg ICAgICAgICAgICAgICAgICAgIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9S RUFEV1JJVEUgfAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUX09O TFkpKTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNYRXZlbnQ6c3RhdGU6CisrICAgICAqCisr ICAgICAqIHN0YXRlIG9mIHRoaXMgSUJ1c1hFdmVudC4KKysgICAgICovCisrICAgIGdfb2JqZWN0 X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAg ICAgICBQUk9QX1NUQVRFLAorKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQg KCJzdGF0ZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRlIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAic3RhdGUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIDAsCisrICAg ICAgICAgICAgICAgICAgICAgICAgR19NQVhVSU5UMzIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8CisrICAg ICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAgICAv KioKKysgICAgICogSUJ1c1hFdmVudDprZXl2YWw6CisrICAgICAqCisrICAgICAqIGtleXZhbCBv ZiB0aGlzIElCdXNYRXZlbnQuCisrICAgICAqLworKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs X3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorKyAgICAgICAgICAgICAgICAgICAgUFJPUF9LRVlW QUwsCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludCAoImtleXZhbCIsCisr ICAgICAgICAgICAgICAgICAgICAgICAgImtleXZhbCIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgImtleXZhbCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAg ICAgICAgICAgICBHX01BWFVJTlQzMiwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAg ICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKKysgICAgICAgICAgICAg ICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7CisrCisrICAgIC8qKgorKyAgICAg KiBJQnVzWEV2ZW50Omxlbmd0aDoKKysgICAgICoKKysgICAgICoga2V5dmFsIG9mIHRoaXMgSUJ1 c1hFdmVudC4KKysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkg KGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQUk9QX0xFTkdUSCwKKysgICAg ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJsZW5ndGgiLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICJsZW5ndGgiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJsZW5ndGgi LAorKyAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorKyAgICAgICAgICAgICAgICAgICAgICAg IEdfTUFYSU5UMzIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAg ICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8CisrICAgICAgICAgICAgICAgICAgICAgICAg R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAgICAvKioKKysgICAgICogSUJ1c1hFdmVu dDpzdHJpbmc6CisrICAgICAqCisrICAgICAqIHN0cmluZyBvZiB0aGlzIElCdXNYRXZlbnQuCisr ICAgICAqLworKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2Ns YXNzLAorKyAgICAgICAgICAgICAgICAgICAgUFJPUF9TVFJJTkcsCisrICAgICAgICAgICAgICAg ICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgic3RyaW5nIiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAic3RyaW5nIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAiIiwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFN X1JFQURXUklURSB8CisrICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1Rf T05MWSkpOworKworKyAgICAvKioKKysgICAgICogSUJ1c1hFdmVudDpoYXJkd2FyZS1rZXljb2Rl OgorKyAgICAgKgorKyAgICAgKiBoYXJkd2FyZSBrZXljb2RlIG9mIHRoaXMgSUJ1c1hFdmVudC4K KysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3Rf Y2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQUk9QX0hBUkRXQVJFX0tFWUNPREUsCisrICAg ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfdWludCAoImhhcmR3YXJlLWtleWNvZGUiLAor KyAgICAgICAgICAgICAgICAgICAgICAgICJoYXJkd2FyZSBrZXljb2RlIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAiaGFyZHdhcmUga2V5Y29kZSIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX01BWFVJTlQxNiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdS SVRFIHwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7 CisrCisrICAgIC8qKgorKyAgICAgKiBJQnVzWEV2ZW50Omdyb3VwOgorKyAgICAgKgorKyAgICAg KiBncm91cCBvZiB0aGlzIElCdXNYRXZlbnQuCisrICAgICAqLworKyAgICBnX29iamVjdF9jbGFz c19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorKyAgICAgICAgICAgICAgICAgICAg UFJPUF9HUk9VUCwKKysgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiZ3Jv dXAiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJncm91cCIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgImdyb3VwIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIEdfTUFYVUlOVDgsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwK KysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8CisrICAgICAgICAg ICAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAgICAvKioKKysg ICAgICogSUJ1c1hFdmVudDppcy1tb2RpZmllcjoKKysgICAgICoKKysgICAgICogaXNfbW9kaWZp ZXIgb2YgdGhpcyBJQnVzWEV2ZW50LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5z dGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1Bf SVNfTU9ESUZJRVIsCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAo ImlzLW1vZGlmaWVyIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAiaXMgbW9kaWZpZXIiLAor KyAgICAgICAgICAgICAgICAgICAgICAgICJpcyBtb2RpZmllciIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgRkFMU0UsCisrICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJ VEUgfAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsK KysKKysgICAgLyoqCisrICAgICAqIElCdXNYRXZlbnQ6cm9vdDoKKysgICAgICoKKysgICAgICog cm9vdCB3aW5kb3cgb2YgdGhpcyBJQnVzWEV2ZW50LgorKyAgICAgKi8KKysgICAgZ19vYmplY3Rf Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAg ICAgIFBST1BfUk9PVCwKKysgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50ICgi cm9vdCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInJvb3QiLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICJyb290IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIEdfTUFYVUlOVDMyLAorKyAgICAgICAgICAgICAgICAgICAgICAgIDAs CisrICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfAorKyAgICAgICAg ICAgICAgICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKKysKKysgICAgLyoqCisr ICAgICAqIElCdXNYRXZlbnQ6c3Vid2luZG93OgorKyAgICAgKgorKyAgICAgKiBzdWJ3aW5kb3cg b2YgdGhpcyBJQnVzWEV2ZW50LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs bF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfU1VC V0lORE9XLAorKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJzdWJ3aW5k b3ciLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJzdWJ3aW5kb3ciLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICJzdWJ3aW5kb3ciLAorKyAgICAgICAgICAgICAgICAgICAgICAgIDAsCisr ICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhVSU5UMzIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8Cisr ICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAg ICAvKioKKysgICAgICogSUJ1c1hFdmVudDp4OgorKyAgICAgKgorKyAgICAgKiB4IG9mIHRoaXMg SUJ1c1hFdmVudC4KKysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy dHkgKGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQUk9QX1gsCisrICAgICAg ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgieCIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgIngiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IiwKKysgICAgICAgICAgICAg ICAgICAgICAgICBHX01JTklOVDMyLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYSU5U MzIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAg ICBHX1BBUkFNX1JFQURXUklURSB8CisrICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9D T05TVFJVQ1RfT05MWSkpOworKworKyAgICAvKioKKysgICAgICogSUJ1c1hFdmVudDp5OgorKyAg ICAgKgorKyAgICAgKiB4IG9mIHRoaXMgSUJ1c1hFdmVudC4KKysgICAgICovCisrICAgIGdfb2Jq ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAg ICAgICAgICBQUk9QX1ksCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgi eSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInkiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICJ5IiwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX01JTklOVDMyLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIEdfTUFYSU5UMzIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwK KysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8CisrICAgICAgICAg ICAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAgICAvKioKKysg ICAgICogSUJ1c1hFdmVudDp4LXJvb3Q6CisrICAgICAqCisrICAgICAqIHJvb3QteCBvZiB0aGlz IElCdXNYRXZlbnQuCisrICAgICAqLworKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl cnR5IChnb2JqZWN0X2NsYXNzLAorKyAgICAgICAgICAgICAgICAgICAgUFJPUF9YX1JPT1QsCisr ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgieC1yb290IiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAieCByb290IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAieCBy b290IiwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX01JTklOVDMyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIEdfTUFYSU5UMzIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysg ICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8CisrICAgICAgICAgICAg ICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAgICAvKioKKysgICAg ICogSUJ1c1hFdmVudDp5LXJvb3Q6CisrICAgICAqCisrICAgICAqIHJvb3QteSBvZiB0aGlzIElC dXNYRXZlbnQuCisrICAgICAqLworKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5 IChnb2JqZWN0X2NsYXNzLAorKyAgICAgICAgICAgICAgICAgICAgUFJPUF9ZX1JPT1QsCisrICAg ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgieS1yb290IiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAieSByb290IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAieSByb290 IiwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX01JTklOVDMyLAorKyAgICAgICAgICAgICAg ICAgICAgICAgIEdfTUFYSU5UMzIsCisrICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAg ICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8CisrICAgICAgICAgICAgICAg ICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAgICAvKioKKysgICAgICog SUJ1c1hFdmVudDpzYW1lLXNjcmVlbjoKKysgICAgICoKKysgICAgICogc2FtZV9zY3JlZW4gb2Yg dGhpcyBJQnVzWEV2ZW50LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w cm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfU0FNRV9T Q1JFRU4sCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoInNhbWUt c2NyZWVuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAic2FtZSBzY3JlZW4iLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICJzYW1lIHNjcmVlbiIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgVFJVRSwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8Cisr ICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAg ICAvKioKKysgICAgICogSUJ1c1hFdmVudDpwdXJwb3NlOgorKyAgICAgKgorKyAgICAgKiBwdXJw b3NlIG9mIHRoaXMgSUJ1c1hFdmVudC4KKysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2lu c3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQUk9Q X1BVUlBPU0UsCisrICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgicHVy cG9zZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInB1cnBvc2UiLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICJwdXJwb3NlIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAiIiwKKysg ICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8CisrICAgICAgICAgICAg ICAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworKworKyAgICBnX3R5cGVfY2xh c3NfYWRkX3ByaXZhdGUgKGNsYXNzLCBzaXplb2YgKElCdXNYRXZlbnRQcml2YXRlKSk7CisrfQor KworK3N0YXRpYyB2b2lkCisraWJ1c194X2V2ZW50X2luaXQgKElCdXNYRXZlbnQgKmV2ZW50KQor K3sKKysgICAgZXZlbnQtPnByaXYgPSBJQlVTX1hfRVZFTlRfR0VUX1BSSVZBVEUgKGV2ZW50KTsK KysgICAgZXZlbnQtPnByaXYtPnZlcnNpb24gPSBJQlVTX1hfRVZFTlRfVkVSU0lPTjsKKyt9Cisr Cisrc3RhdGljIHZvaWQKKytpYnVzX3hfZXZlbnRfZGVzdHJveSAoSUJ1c1hFdmVudCAqZXZlbnQp CisreworKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZldmVudC0+cHJpdi0+c3RyaW5nLCBnX2ZyZWUp OworKworKyAgICBJQlVTX09CSkVDVF9DTEFTUyhpYnVzX3hfZXZlbnRfcGFyZW50X2NsYXNzKS0+ ZGVzdHJveSAoSUJVU19PQkpFQ1QgKGV2ZW50KSk7CisrfQorKworK3N0YXRpYyB2b2lkCisraWJ1 c194X2V2ZW50X3NldF9wcm9wZXJ0eSAoSUJ1c1hFdmVudCAgICpldmVudCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgIHByb3BfaWQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgR1ZhbHVlICp2YWx1ZSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICBHUGFyYW1TcGVjICAgKnBzcGVjKQorK3sKKysgICAgSUJ1c1hFdmVudFByaXZhdGUgKnBy aXYgPSBldmVudC0+cHJpdjsKKysKKysgICAgc3dpdGNoIChwcm9wX2lkKSB7CisrICAgIGNhc2Ug UFJPUF9FVkVOVF9UWVBFOgorKyAgICAgICAgZXZlbnQtPmV2ZW50X3R5cGUgPSBnX3ZhbHVlX2dl dF9pbnQgKHZhbHVlKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfV0lORE9XOgor KyAgICAgICAgZXZlbnQtPndpbmRvdyA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKysgICAg ICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfU0VORF9FVkVOVDoKKysgICAgICAgIGV2ZW50LT5z ZW5kX2V2ZW50ID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisrICAgICAgICBicmVhazsKKysg ICAgY2FzZSBQUk9QX1NFUklBTDoKKysgICAgICAgIGV2ZW50LT5zZXJpYWwgPSBnX3ZhbHVlX2dl dF91bG9uZyAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9USU1FOgor KyAgICAgICAgcHJpdi0+dGltZSA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKysgICAgICAg IGJyZWFrOworKyAgICBjYXNlIFBST1BfU1RBVEU6CisrICAgICAgICBwcml2LT5zdGF0ZSA9IGdf dmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1Bf S0VZVkFMOgorKyAgICAgICAgcHJpdi0+a2V5dmFsID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUp OworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9MRU5HVEg6CisrICAgICAgICBwcml2 LT5sZW5ndGggPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKKysgICAgICAgIGJyZWFrOworKyAg ICBjYXNlIFBST1BfU1RSSU5HOgorKyAgICAgICAgZ19mcmVlIChwcml2LT5zdHJpbmcpOworKyAg ICAgICAgcHJpdi0+c3RyaW5nID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CisrICAgICAg ICBicmVhazsKKysgICAgY2FzZSBQUk9QX0hBUkRXQVJFX0tFWUNPREU6CisrICAgICAgICBwcml2 LT5oYXJkd2FyZV9rZXljb2RlID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworKyAgICAgICAg YnJlYWs7CisrICAgIGNhc2UgUFJPUF9HUk9VUDoKKysgICAgICAgIHByaXYtPmdyb3VwID0gZ192 YWx1ZV9nZXRfdWludCAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9J U19NT0RJRklFUjoKKysgICAgICAgIHByaXYtPmlzX21vZGlmaWVyID0gZ192YWx1ZV9nZXRfYm9v bGVhbiAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9ST09UOgorKyAg ICAgICAgcHJpdi0+cm9vdCA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKysgICAgICAgIGJy ZWFrOworKyAgICBjYXNlIFBST1BfU1VCV0lORE9XOgorKyAgICAgICAgcHJpdi0+c3Vid2luZG93 ID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2Ug UFJPUF9YOgorKyAgICAgICAgcHJpdi0+eCA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworKyAg ICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9ZOgorKyAgICAgICAgcHJpdi0+eSA9IGdfdmFs dWVfZ2V0X2ludCAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9YX1JP T1Q6CisrICAgICAgICBwcml2LT54X3Jvb3QgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKKysg ICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfWV9ST09UOgorKyAgICAgICAgcHJpdi0+eV9y b290ID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisrICAgICAgICBicmVhazsKKysgICAgY2Fz ZSBQUk9QX1NBTUVfU0NSRUVOOgorKyAgICAgICAgcHJpdi0+c2FtZV9zY3JlZW4gPSBnX3ZhbHVl X2dldF9ib29sZWFuICh2YWx1ZSk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1BV UlBPU0U6CisrICAgICAgICBnX2ZyZWUgKHByaXYtPnB1cnBvc2UpOworKyAgICAgICAgcHJpdi0+ cHVycG9zZSA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOworKyAgICAgICAgYnJlYWs7Cisr ICAgIGRlZmF1bHQ6CisrICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQg KGV2ZW50LCBwcm9wX2lkLCBwc3BlYyk7CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQKKytp YnVzX3hfZXZlbnRfZ2V0X3Byb3BlcnR5IChJQnVzWEV2ZW50ICpldmVudCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICBwcm9wX2lkLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgR1ZhbHVlICAgICAgKnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg R1BhcmFtU3BlYyAgKnBzcGVjKQorK3sKKysgICAgSUJ1c1hFdmVudFByaXZhdGUgKnByaXYgPSBl dmVudC0+cHJpdjsKKysgICAgc3dpdGNoIChwcm9wX2lkKSB7CisrICAgIGNhc2UgUFJPUF9WRVJT SU9OOgorKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHByaXYtPnZlcnNpb24pOwor KyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9FVkVOVF9UWVBFOgorKyAgICAgICAgZ192 YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZXZlbnQtPmV2ZW50X3R5cGUpOworKyAgICAgICAgYnJlYWs7 CisrICAgIGNhc2UgUFJPUF9XSU5ET1c6CisrICAgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1 ZSwgZXZlbnQtPndpbmRvdyk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1NFTkRf RVZFTlQ6CisrICAgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBldmVudC0+c2VuZF9ldmVu dCk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1NFUklBTDoKKysgICAgICAgIGdf dmFsdWVfc2V0X3Vsb25nICh2YWx1ZSwgZXZlbnQtPnNlcmlhbCk7CisrICAgICAgICBicmVhazsK KysgICAgY2FzZSBQUk9QX1RJTUU6CisrICAgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwg cHJpdi0+dGltZSk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1NUQVRFOgorKyAg ICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHByaXYtPnN0YXRlKTsKKysgICAgICAgIGJy ZWFrOworKyAgICBjYXNlIFBST1BfS0VZVkFMOgorKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCAo dmFsdWUsIHByaXYtPmtleXZhbCk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX0xF TkdUSDoKKysgICAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHByaXYtPmxlbmd0aCk7Cisr ICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1NUUklORzoKKysgICAgICAgIGdfdmFsdWVf c2V0X3N0cmluZyAodmFsdWUsIHByaXYtPnN0cmluZyk7CisrICAgICAgICBicmVhazsKKysgICAg Y2FzZSBQUk9QX0hBUkRXQVJFX0tFWUNPREU6CisrICAgICAgICBnX3ZhbHVlX3NldF91aW50ICh2 YWx1ZSwgcHJpdi0+aGFyZHdhcmVfa2V5Y29kZSk7CisrICAgICAgICBicmVhazsKKysgICAgY2Fz ZSBQUk9QX0dST1VQOgorKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHByaXYtPmdy b3VwKTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfSVNfTU9ESUZJRVI6CisrICAg ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgcHJpdi0+aXNfbW9kaWZpZXIpOworKyAg ICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9ST09UOgorKyAgICAgICAgZ192YWx1ZV9zZXRf dWludCAodmFsdWUsIHByaXYtPnJvb3QpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJP UF9TVUJXSU5ET1c6CisrICAgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgcHJpdi0+c3Vi d2luZG93KTsKKysgICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfWDoKKysgICAgICAgIGdf dmFsdWVfc2V0X2ludCAodmFsdWUsIHByaXYtPngpOworKyAgICAgICAgYnJlYWs7CisrICAgIGNh c2UgUFJPUF9ZOgorKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgcHJpdi0+eSk7Cisr ICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1hfUk9PVDoKKysgICAgICAgIGdfdmFsdWVf c2V0X2ludCAodmFsdWUsIHByaXYtPnhfcm9vdCk7CisrICAgICAgICBicmVhazsKKysgICAgY2Fz ZSBQUk9QX1lfUk9PVDoKKysgICAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHByaXYtPnlf cm9vdCk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1NBTUVfU0NSRUVOOgorKyAg ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHByaXYtPnNhbWVfc2NyZWVuKTsKKysg ICAgICAgIGJyZWFrOworKyAgICBjYXNlIFBST1BfUFVSUE9TRToKKysgICAgICAgIGdfdmFsdWVf c2V0X3N0cmluZyAodmFsdWUsIHByaXYtPnB1cnBvc2UpOworKyAgICAgICAgYnJlYWs7CisrICAg IGRlZmF1bHQ6CisrICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKGV2 ZW50LCBwcm9wX2lkLCBwc3BlYyk7CisrICAgIH0KKyt9CisrCisrc3RhdGljIGdib29sZWFuCisr aWJ1c194X2V2ZW50X3NlcmlhbGl6ZSAoSUJ1c1hFdmVudCAgICAgICpldmVudCwKKysgICAgICAg ICAgICAgICAgICAgICAgICBHVmFyaWFudEJ1aWxkZXIgKmJ1aWxkZXIpCisreworKyAgICBnYm9v bGVhbiByZXR2YWw7CisrICAgIElCdXNYRXZlbnRQcml2YXRlICpwcml2OworKworKyAgICByZXR2 YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c194X2V2ZW50X3BhcmVudF9jbGFzcykt PgorKyAgICAgICAgICAgIHNlcmlhbGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKilldmVudCwgYnVp bGRlcik7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWwsIEZBTFNFKTsKKysgICAg LyogRW5kIGRpY3QgaXRlciAqLworKworKyAgICBwcml2ID0gZXZlbnQtPnByaXY7CisrI2RlZmlu ZSBOT1ROVUxMKHMpICgocykgIT0gTlVMTCA/IChzKSA6ICIiKQorKyAgICAvKiBJZiB5b3Ugd2ls bCBhZGQgYSBuZXcgcHJvcGVydHksIHlvdSBjYW4gYXBwZW5kIGl0IGF0IHRoZSBlbmQgYW5kCisr ICAgICAqIHlvdSBzaG91bGQgbm90IGNoYW5nZSB0aGUgc2VyaWFsaXplZCBvcmRlciBvZiBuYW1l LCBsb25nbmFtZSwKKysgICAgICogZGVzY3JpcHRpb24sIC4uLiBiZWNhdXNlIHRoZSBvcmRlciBp cyBhbHNvIHVzZWQgaW4gb3RoZXIgYXBwbGljYXRpb25zCisrICAgICAqIGxpa2VzIGlidXMtcXQu ICovCisrICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgInUiLCBwcml2LT52ZXJz aW9uKTsKKysgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAidSIsIGV2ZW50LT5l dmVudF90eXBlKTsKKysgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAidSIsIGV2 ZW50LT53aW5kb3cpOworKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJpIiwg ZXZlbnQtPnNlbmRfZXZlbnQpOworKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIs ICJ0IiwgZXZlbnQtPnNlcmlhbCk7CisrICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRl ciwgInUiLCBwcml2LT50aW1lKTsKKysgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVy LCAidSIsIHByaXYtPnN0YXRlKTsKKysgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVy LCAidSIsIHByaXYtPmtleXZhbCk7CisrICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRl ciwgImkiLCBwcml2LT5sZW5ndGgpOworKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxk ZXIsICJzIiwgTk9UTlVMTCAocHJpdi0+c3RyaW5nKSk7CisrICAgIGdfdmFyaWFudF9idWlsZGVy X2FkZCAoYnVpbGRlciwgInUiLCBwcml2LT5oYXJkd2FyZV9rZXljb2RlKTsKKysgICAgZ192YXJp YW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAidSIsIHByaXYtPmdyb3VwKTsKKysgICAgZ192YXJp YW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAiYiIsIHByaXYtPmlzX21vZGlmaWVyKTsKKysgICAg Z192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAidSIsIHByaXYtPnJvb3QpOworKyAgICBn X3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJ1IiwgcHJpdi0+c3Vid2luZG93KTsKKysg ICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAiaSIsIHByaXYtPngpOworKyAgICBn X3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJpIiwgcHJpdi0+eSk7CisrICAgIGdfdmFy aWFudF9idWlsZGVyX2FkZCAoYnVpbGRlciwgImkiLCBwcml2LT54X3Jvb3QpOworKyAgICBnX3Zh cmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJpIiwgcHJpdi0+eV9yb290KTsKKysgICAgZ192 YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAiYiIsIHByaXYtPnNhbWVfc2NyZWVuKTsKKysg ICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAicyIsIE5PVE5VTEwgKHByaXYtPnB1 cnBvc2UpKTsKKysjdW5kZWYgTk9UTlVMTAorKworKyAgICByZXR1cm4gVFJVRTsKKyt9CisrCisr c3RhdGljIGdpbnQKKytpYnVzX3hfZXZlbnRfZGVzZXJpYWxpemUgKElCdXNYRXZlbnQgKmV2ZW50 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAqdmFyaWFudCkKKyt7Cisr ICAgIGdpbnQgcmV0dmFsOworKyAgICBJQnVzWEV2ZW50UHJpdmF0ZSAqcHJpdjsKKysKKysgICAg cmV0dmFsID0gSUJVU19TRVJJQUxJWkFCTEVfQ0xBU1MgKGlidXNfeF9ldmVudF9wYXJlbnRfY2xh c3MpLT4KKysgICAgICAgICAgICBkZXNlcmlhbGl6ZSAoKElCdXNTZXJpYWxpemFibGUgKilldmVu dCwgdmFyaWFudCk7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWwsIDApOworKwor KyAgICBwcml2ID0gZXZlbnQtPnByaXY7CisrICAgIC8qIElmIHlvdSB3aWxsIGFkZCBhIG5ldyBw cm9wZXJ0eSwgeW91IGNhbiBhcHBlbmQgaXQgYXQgdGhlIGVuZCBhbmQKKysgICAgICogeW91IHNo b3VsZCBub3QgY2hhbmdlIHRoZSBzZXJpYWxpemVkIG9yZGVyIG9mIG5hbWUsIGxvbmduYW1lLAor KyAgICAgKiBkZXNjcmlwdGlvbiwgLi4uIGJlY2F1c2UgdGhlIG9yZGVyIGlzIGFsc28gdXNlZCBp biBvdGhlciBhcHBsaWNhdGlvbnMKKysgICAgICogbGlrZXMgaWJ1cy1xdC4gKi8KKysgICAgZ192 YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwgcmV0dmFsKyssICJ1IiwgJnByaXYtPnZlcnNpb24p OworKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgInUiLCAmZXZl bnQtPmV2ZW50X3R5cGUpOworKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2 YWwrKywgInUiLCAmZXZlbnQtPndpbmRvdyk7CisrICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZh cmlhbnQsIHJldHZhbCsrLCAiaSIsICZldmVudC0+c2VuZF9ldmVudCk7CisrICAgIGdfdmFyaWFu dF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAidCIsICZldmVudC0+c2VyaWFsKTsKKysg ICAgZ192YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwgcmV0dmFsKyssICJ1IiwgJnByaXYtPnRp bWUpOworKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgInUiLCAm cHJpdi0+c3RhdGUpOworKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwr KywgInUiLCAmcHJpdi0+a2V5dmFsKTsKKysgICAgZ192YXJpYW50X2dldF9jaGlsZCAodmFyaWFu dCwgcmV0dmFsKyssICJpIiwgJnByaXYtPmxlbmd0aCk7CisrICAgIGlidXNfZ192YXJpYW50X2dl dF9jaGlsZF9zdHJpbmcgKHZhcmlhbnQsIHJldHZhbCsrLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcHJpdi0+c3RyaW5nKTsKKysgICAgZ192YXJpYW50X2dldF9jaGls ZCAodmFyaWFudCwgcmV0dmFsKyssICJ1IiwgJnByaXYtPmhhcmR3YXJlX2tleWNvZGUpOworKyAg ICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgInUiLCAmcHJpdi0+Z3Jv dXApOworKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgImIiLCAm cHJpdi0+aXNfbW9kaWZpZXIpOworKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCBy ZXR2YWwrKywgInUiLCAmcHJpdi0+cm9vdCk7CisrICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZh cmlhbnQsIHJldHZhbCsrLCAidSIsICZwcml2LT5zdWJ3aW5kb3cpOworKyAgICBnX3ZhcmlhbnRf Z2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgImkiLCAmcHJpdi0+eCk7CisrICAgIGdfdmFy aWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAiaSIsICZwcml2LT55KTsKKysgICAg Z192YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwgcmV0dmFsKyssICJpIiwgJnByaXYtPnhfcm9v dCk7CisrICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsrLCAiaSIsICZw cml2LT55X3Jvb3QpOworKyAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwr KywgImIiLCAmcHJpdi0+c2FtZV9zY3JlZW4pOworKyAgICBpYnVzX2dfdmFyaWFudF9nZXRfY2hp bGRfc3RyaW5nICh2YXJpYW50LCByZXR2YWwrKywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnByaXYtPnB1cnBvc2UpOworKworKyAgICByZXR1cm4gcmV0dmFsOworK30K KysKKytzdGF0aWMgZ2Jvb2xlYW4KKytpYnVzX3hfZXZlbnRfY29weSAoSUJ1c1hFdmVudCAgICAg ICAqZGVzdCwKKysgICAgICAgICAgICAgICAgICAgY29uc3QgSUJ1c1hFdmVudCAqc3JjKQorK3sK KysgICAgZ2Jvb2xlYW4gcmV0dmFsOworKyAgICBJQnVzWEV2ZW50UHJpdmF0ZSAqZGVzdF9wcml2 ID0gZGVzdC0+cHJpdjsKKysgICAgSUJ1c1hFdmVudFByaXZhdGUgKnNyY19wcml2ID0gc3JjLT5w cml2OworKworKyAgICByZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c194X2V2 ZW50X3BhcmVudF9jbGFzcyktPgorKyAgICAgICAgICAgIGNvcHkgKChJQnVzU2VyaWFsaXphYmxl ICopZGVzdCwgKElCdXNTZXJpYWxpemFibGUgKilzcmMpOworKyAgICBnX3JldHVybl92YWxfaWZf ZmFpbCAocmV0dmFsLCBGQUxTRSk7CisrCisrICAgIGRlc3RfcHJpdi0+dmVyc2lvbiAgICAgICAg ICAgPSBzcmNfcHJpdi0+dmVyc2lvbjsKKysgICAgZGVzdC0+ZXZlbnRfdHlwZSAgICAgICAgICAg ICA9IHNyYy0+ZXZlbnRfdHlwZTsKKysgICAgZGVzdC0+d2luZG93ICAgICAgICAgICAgICAgICA9 IHNyYy0+d2luZG93OworKyAgICBkZXN0LT5zZW5kX2V2ZW50ICAgICAgICAgICAgID0gc3JjLT5z ZW5kX2V2ZW50OworKyAgICBkZXN0LT5zZXJpYWwgICAgICAgICAgICAgICAgID0gc3JjLT5zZXJp YWw7CisrICAgIGRlc3RfcHJpdi0+dGltZSAgICAgICAgICAgICAgPSBzcmNfcHJpdi0+dGltZTsK KysgICAgZGVzdF9wcml2LT5zdGF0ZSAgICAgICAgICAgICA9IHNyY19wcml2LT5zdGF0ZTsKKysg ICAgZGVzdF9wcml2LT5rZXl2YWwgICAgICAgICAgICA9IHNyY19wcml2LT5rZXl2YWw7CisrICAg IGRlc3RfcHJpdi0+bGVuZ3RoICAgICAgICAgICAgPSBzcmNfcHJpdi0+bGVuZ3RoOworKyAgICBk ZXN0X3ByaXYtPnN0cmluZyAgICAgICAgICAgID0gZ19zdHJkdXAgKHNyY19wcml2LT5zdHJpbmcp OworKyAgICBkZXN0X3ByaXYtPmhhcmR3YXJlX2tleWNvZGUgID0gc3JjX3ByaXYtPmhhcmR3YXJl X2tleWNvZGU7CisrICAgIGRlc3RfcHJpdi0+Z3JvdXAgICAgICAgICAgICAgPSBzcmNfcHJpdi0+ Z3JvdXA7CisrICAgIGRlc3RfcHJpdi0+aXNfbW9kaWZpZXIgICAgICAgPSBzcmNfcHJpdi0+aXNf bW9kaWZpZXI7CisrICAgIGRlc3RfcHJpdi0+cm9vdCAgICAgICAgICAgICAgPSBzcmNfcHJpdi0+ cm9vdDsKKysgICAgZGVzdF9wcml2LT5zdWJ3aW5kb3cgICAgICAgICA9IHNyY19wcml2LT5zdWJ3 aW5kb3c7CisrICAgIGRlc3RfcHJpdi0+eCAgICAgICAgICAgICAgICAgPSBzcmNfcHJpdi0+eDsK KysgICAgZGVzdF9wcml2LT55ICAgICAgICAgICAgICAgICA9IHNyY19wcml2LT55OworKyAgICBk ZXN0X3ByaXYtPnhfcm9vdCAgICAgICAgICAgID0gc3JjX3ByaXYtPnhfcm9vdDsKKysgICAgZGVz dF9wcml2LT55X3Jvb3QgICAgICAgICAgICA9IHNyY19wcml2LT55X3Jvb3Q7CisrICAgIGRlc3Rf cHJpdi0+c2FtZV9zY3JlZW4gICAgICAgPSBzcmNfcHJpdi0+c2FtZV9zY3JlZW47CisrICAgIGRl c3RfcHJpdi0+cHVycG9zZSAgICAgICAgICAgPSBnX3N0cmR1cCAoc3JjX3ByaXYtPnB1cnBvc2Up OworKworKyAgICByZXR1cm4gVFJVRTsKKyt9CisrCisrSUJ1c1hFdmVudCAqCisraWJ1c194X2V2 ZW50X25ldyAoY29uc3QgZ2NoYXIgICAqZmlyc3RfcHJvcGVydHlfbmFtZSwKKysgICAgICAgICAg ICAgICAgICAuLi4pCisreworKyAgICB2YV9saXN0IHZhcl9hcmdzOworKyAgICBJQnVzWEV2ZW50 ICpldmVudDsKKysKKysgICAgdmFfc3RhcnQgKHZhcl9hcmdzLCBmaXJzdF9wcm9wZXJ0eV9uYW1l KTsKKysgICAgZXZlbnQgPSAoSUJ1c1hFdmVudCAqKSBnX29iamVjdF9uZXdfdmFsaXN0IChJQlVT X1RZUEVfWF9FVkVOVCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmaXJzdF9wcm9wZXJ0eV9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZhcl9hcmdzKTsKKysgICAgdmFfZW5kICh2YXJfYXJncyk7 CisrICAgIGdfYXNzZXJ0IChldmVudC0+cHJpdi0+dmVyc2lvbiAhPSAwKTsKKysgICAgZ19hc3Nl cnQgKGV2ZW50LT5ldmVudF90eXBlICE9IElCVVNfWF9FVkVOVF9OT1RISU5HKTsKKysgICAgcmV0 dXJuIGV2ZW50OworK30KKysKKytndWludAorK2lidXNfeF9ldmVudF9nZXRfdmVyc2lvbiAoSUJ1 c1hFdmVudCAqZXZlbnQpCisreworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19Y X0VWRU5UIChldmVudCksIDApOworKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPnZlcnNpb247Cisr fQorKworK0lCdXNYRXZlbnRUeXBlCisraWJ1c194X2V2ZW50X2dldF9ldmVudF90eXBlIChJQnVz WEV2ZW50ICpldmVudCkKKyt7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hf RVZFTlQgKGV2ZW50KSwgMCk7CisrICAgIHJldHVybiBldmVudC0+ZXZlbnRfdHlwZTsKKyt9Cisr CisrZ3VpbnQzMgorK2lidXNfeF9ldmVudF9nZXRfd2luZG93IChJQnVzWEV2ZW50ICpldmVudCkK Kyt7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwg MCk7CisrICAgIHJldHVybiBldmVudC0+d2luZG93OworK30KKysKKytnaW50OAorK2lidXNfeF9l dmVudF9nZXRfc2VuZF9ldmVudCAoSUJ1c1hFdmVudCAqZXZlbnQpCisreworKyAgICBnX3JldHVy bl92YWxfaWZfZmFpbCAoSUJVU19JU19YX0VWRU5UIChldmVudCksIC0xKTsKKysgICAgcmV0dXJu IGV2ZW50LT5zZW5kX2V2ZW50OworK30KKysKKytndWxvbmcKKytpYnVzX3hfZXZlbnRfZ2V0X3Nl cmlhbCAoSUJ1c1hFdmVudCAqZXZlbnQpCisreworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAo SUJVU19JU19YX0VWRU5UIChldmVudCksIDApOworKyAgICByZXR1cm4gZXZlbnQtPnNlcmlhbDsK Kyt9CisrCisrZ3VpbnQzMgorK2lidXNfeF9ldmVudF9nZXRfdGltZSAoSUJ1c1hFdmVudCAqZXZl bnQpCisreworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19YX0VWRU5UIChldmVu dCksIDApOworKyAgICBzd2l0Y2ggKGV2ZW50LT5ldmVudF90eXBlKSB7CisrICAgIGNhc2UgSUJV U19YX0VWRU5UX0tFWV9QUkVTUzoKKysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1JFTEVBU0U6 CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICAgIGdfcmV0dXJuX3ZhbF9p Zl9yZWFjaGVkICgwKTsKKysgICAgfQorKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPnRpbWU7Cisr fQorKworK2d1aW50CisraWJ1c194X2V2ZW50X2dldF9zdGF0ZSAoSUJ1c1hFdmVudCAqZXZlbnQp CisreworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19YX0VWRU5UIChldmVudCks IDApOworKyAgICBzd2l0Y2ggKGV2ZW50LT5ldmVudF90eXBlKSB7CisrICAgIGNhc2UgSUJVU19Y X0VWRU5UX0tFWV9QUkVTUzoKKysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1JFTEVBU0U6Cisr ICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9y ZWFjaGVkICgwKTsKKysgICAgfQorKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPnN0YXRlOworK30K KysKKytndWludAorK2lidXNfeF9ldmVudF9nZXRfa2V5dmFsIChJQnVzWEV2ZW50ICpldmVudCkK Kyt7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwg MCk7CisrICAgIHN3aXRjaCAoZXZlbnQtPmV2ZW50X3R5cGUpIHsKKysgICAgY2FzZSBJQlVTX1hf RVZFTlRfS0VZX1BSRVNTOgorKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKKysg ICAgICAgIGJyZWFrOworKyAgICBkZWZhdWx0OgorKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3Jl YWNoZWQgKDApOworKyAgICB9CisrICAgIHJldHVybiBldmVudC0+cHJpdi0+a2V5dmFsOworK30K KysKKytnaW50CisraWJ1c194X2V2ZW50X2dldF9sZW5ndGggKElCdXNYRXZlbnQgKmV2ZW50KQor K3sKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfWF9FVkVOVCAoZXZlbnQpLCAt MSk7CisrICAgIHN3aXRjaCAoZXZlbnQtPmV2ZW50X3R5cGUpIHsKKysgICAgY2FzZSBJQlVTX1hf RVZFTlRfS0VZX1BSRVNTOgorKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKKysg ICAgICAgIGJyZWFrOworKyAgICBkZWZhdWx0OgorKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3Jl YWNoZWQgKC0xKTsKKysgICAgfQorKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPmxlbmd0aDsKKyt9 CisrCisrY29uc3QgZ2NoYXIgKgorK2lidXNfeF9ldmVudF9nZXRfc3RyaW5nIChJQnVzWEV2ZW50 ICpldmVudCkKKyt7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQg KGV2ZW50KSwgIiIpOworKyAgICBzd2l0Y2ggKGV2ZW50LT5ldmVudF90eXBlKSB7CisrICAgIGNh c2UgSUJVU19YX0VWRU5UX0tFWV9QUkVTUzoKKysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1JF TEVBU0U6CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICAgIGdfcmV0dXJu X3ZhbF9pZl9yZWFjaGVkICgiIik7CisrICAgIH0KKysgICAgcmV0dXJuIGV2ZW50LT5wcml2LT5z dHJpbmc7CisrfQorKworK2d1aW50MTYKKytpYnVzX3hfZXZlbnRfZ2V0X2hhcmR3YXJlX2tleWNv ZGUgKElCdXNYRXZlbnQgKmV2ZW50KQorK3sKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElC VVNfSVNfWF9FVkVOVCAoZXZlbnQpLCAwKTsKKysgICAgc3dpdGNoIChldmVudC0+ZXZlbnRfdHlw ZSkgeworKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUFJFU1M6CisrICAgIGNhc2UgSUJVU19Y X0VWRU5UX0tFWV9SRUxFQVNFOgorKyAgICAgICAgYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAg ICAgICBnX3JldHVybl92YWxfaWZfcmVhY2hlZCAoMCk7CisrICAgIH0KKysgICAgcmV0dXJuIGV2 ZW50LT5wcml2LT5oYXJkd2FyZV9rZXljb2RlOworK30KKysKKytndWludDgKKytpYnVzX3hfZXZl bnRfZ2V0X2dyb3VwIChJQnVzWEV2ZW50ICpldmVudCkKKyt7CisrICAgIGdfcmV0dXJuX3ZhbF9p Zl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7CisrICAgIHN3aXRjaCAoZXZlbnQt PmV2ZW50X3R5cGUpIHsKKysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1BSRVNTOgorKyAgICBj YXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKKysgICAgICAgIGJyZWFrOworKyAgICBkZWZh dWx0OgorKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKDApOworKyAgICB9CisrICAg IHJldHVybiBldmVudC0+cHJpdi0+Z3JvdXA7CisrfQorKworK2dib29sZWFuCisraWJ1c194X2V2 ZW50X2dldF9pc19tb2RpZmllciAoSUJ1c1hFdmVudCAqZXZlbnQpCisreworKyAgICBnX3JldHVy bl92YWxfaWZfZmFpbCAoSUJVU19JU19YX0VWRU5UIChldmVudCksIDApOworKyAgICBzd2l0Y2gg KGV2ZW50LT5ldmVudF90eXBlKSB7CisrICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9QUkVTUzoK KysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1JFTEVBU0U6CisrICAgICAgICBicmVhazsKKysg ICAgZGVmYXVsdDoKKysgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9yZWFjaGVkICgwKTsKKysgICAg fQorKyAgICByZXR1cm4gZXZlbnQtPnByaXYtPmlzX21vZGlmaWVyOworK30KKysKKytndWludDMy CisraWJ1c194X2V2ZW50X2dldF9yb290IChJQnVzWEV2ZW50ICpldmVudCkKKyt7CisrICAgIGdf cmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7CisrICAgIHN3 aXRjaCAoZXZlbnQtPmV2ZW50X3R5cGUpIHsKKysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1BS RVNTOgorKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKKysgICAgICAgIGJyZWFr OworKyAgICBkZWZhdWx0OgorKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKDApOwor KyAgICB9CisrICAgIHJldHVybiBldmVudC0+cHJpdi0+cm9vdDsKKyt9CisrCisrZ3VpbnQzMgor K2lidXNfeF9ldmVudF9nZXRfc3Vid2luZG93IChJQnVzWEV2ZW50ICpldmVudCkKKyt7CisrICAg IGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7CisrICAg IHN3aXRjaCAoZXZlbnQtPmV2ZW50X3R5cGUpIHsKKysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZ X1BSRVNTOgorKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKKysgICAgICAgIGJy ZWFrOworKyAgICBkZWZhdWx0OgorKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKDAp OworKyAgICB9CisrICAgIHJldHVybiBldmVudC0+cHJpdi0+c3Vid2luZG93OworK30KKysKKytn aW50CisraWJ1c194X2V2ZW50X2dldF94IChJQnVzWEV2ZW50ICpldmVudCkKKyt7CisrICAgIGdf cmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7CisrICAgIHN3 aXRjaCAoZXZlbnQtPmV2ZW50X3R5cGUpIHsKKysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1BS RVNTOgorKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKKysgICAgICAgIGJyZWFr OworKyAgICBkZWZhdWx0OgorKyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKDApOwor KyAgICB9CisrICAgIHJldHVybiBldmVudC0+cHJpdi0+eDsKKyt9CisrCisrZ2ludAorK2lidXNf eF9ldmVudF9nZXRfeSAoSUJ1c1hFdmVudCAqZXZlbnQpCisreworKyAgICBnX3JldHVybl92YWxf aWZfZmFpbCAoSUJVU19JU19YX0VWRU5UIChldmVudCksIDApOworKyAgICBzd2l0Y2ggKGV2ZW50 LT5ldmVudF90eXBlKSB7CisrICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9QUkVTUzoKKysgICAg Y2FzZSBJQlVTX1hfRVZFTlRfS0VZX1JFTEVBU0U6CisrICAgICAgICBicmVhazsKKysgICAgZGVm YXVsdDoKKysgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9yZWFjaGVkICgwKTsKKysgICAgfQorKyAg ICByZXR1cm4gZXZlbnQtPnByaXYtPnk7CisrfQorKworK2dpbnQKKytpYnVzX3hfZXZlbnRfZ2V0 X3hfcm9vdCAoSUJ1c1hFdmVudCAqZXZlbnQpCisreworKyAgICBnX3JldHVybl92YWxfaWZfZmFp bCAoSUJVU19JU19YX0VWRU5UIChldmVudCksIDApOworKyAgICBzd2l0Y2ggKGV2ZW50LT5ldmVu dF90eXBlKSB7CisrICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9QUkVTUzoKKysgICAgY2FzZSBJ QlVTX1hfRVZFTlRfS0VZX1JFTEVBU0U6CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoK KysgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9yZWFjaGVkICgwKTsKKysgICAgfQorKyAgICByZXR1 cm4gZXZlbnQtPnByaXYtPnhfcm9vdDsKKyt9CisrCisrZ2ludAorK2lidXNfeF9ldmVudF9nZXRf eV9yb290IChJQnVzWEV2ZW50ICpldmVudCkKKyt7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls IChJQlVTX0lTX1hfRVZFTlQgKGV2ZW50KSwgMCk7CisrICAgIHN3aXRjaCAoZXZlbnQtPmV2ZW50 X3R5cGUpIHsKKysgICAgY2FzZSBJQlVTX1hfRVZFTlRfS0VZX1BSRVNTOgorKyAgICBjYXNlIElC VVNfWF9FVkVOVF9LRVlfUkVMRUFTRToKKysgICAgICAgIGJyZWFrOworKyAgICBkZWZhdWx0Ogor KyAgICAgICAgZ19yZXR1cm5fdmFsX2lmX3JlYWNoZWQgKDApOworKyAgICB9CisrICAgIHJldHVy biBldmVudC0+cHJpdi0+eV9yb290OworK30KKysKKytnYm9vbGVhbgorK2lidXNfeF9ldmVudF9n ZXRfc2FtZV9zY3JlZW4gKElCdXNYRXZlbnQgKmV2ZW50KQorK3sKKysgICAgZ19yZXR1cm5fdmFs X2lmX2ZhaWwgKElCVVNfSVNfWF9FVkVOVCAoZXZlbnQpLCBUUlVFKTsKKysgICAgc3dpdGNoIChl dmVudC0+ZXZlbnRfdHlwZSkgeworKyAgICBjYXNlIElCVVNfWF9FVkVOVF9LRVlfUFJFU1M6Cisr ICAgIGNhc2UgSUJVU19YX0VWRU5UX0tFWV9SRUxFQVNFOgorKyAgICAgICAgYnJlYWs7CisrICAg IGRlZmF1bHQ6CisrICAgICAgICBnX3JldHVybl92YWxfaWZfcmVhY2hlZCAoVFJVRSk7CisrICAg IH0KKysgICAgcmV0dXJuIGV2ZW50LT5wcml2LT5zYW1lX3NjcmVlbjsKKyt9CisrCisrY29uc3Qg Z2NoYXIgKgorK2lidXNfeF9ldmVudF9nZXRfcHVycG9zZSAoSUJ1c1hFdmVudCAqZXZlbnQpCisr eworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19YX0VWRU5UIChldmVudCksICIi KTsKKysgICAgcmV0dXJuIGV2ZW50LT5wcml2LT5wdXJwb3NlOworK30KK2RpZmYgLS1naXQgYS9z cmMvaWJ1c3hldmVudC5oIGIvc3JjL2lidXN4ZXZlbnQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwLi5mMzVmMTRlNAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2lidXN4 ZXZlbnQuaAorQEAgLTAsMCArMSwyOTQgQEAKKysvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZz ZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCisrLyogdmltOnNldCBldCBzdHM9 NDogKi8KKysvKiBpYnVzIC0gVGhlIElucHV0IEJ1cworKyAqIENvcHlyaWdodCAoQykgMjAxOCBU YWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQg KEMpIDIwMTggUmVkIEhhdCwgSW5jLgorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysg KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisr ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxCisrICogVVNB CisrICovCisrCisrI2lmICFkZWZpbmVkIChfX0lCVVNfSF9JTlNJREVfXykgJiYgIWRlZmluZWQg KElCVVNfQ09NUElMQVRJT04pCisrI2Vycm9yICJPbmx5IDxpYnVzLmg+IGNhbiBiZSBpbmNsdWRl ZCBkaXJlY3RseSIKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fSUJVU19YX0VWRU5UX0hfCisrI2Rl ZmluZSBfX0lCVVNfWF9FVkVOVF9IXworKworKy8qKgorKyAqIFNFQ1RJT046IGlidXN4ZXZlbnQK KysgKiBAc2hvcnRfZGVzY3JpcHRpb246IFhFdmVudCB3cmFwcGVyIG9iamVjdAorKyAqIEB0aXRs ZTogSUJ1c1hFdmVudAorKyAqIEBzdGFiaWxpdHk6IFVuc3RhYmxlCisrICoKKysgKiBBbiBJQnVz WEV2ZW50IHByb3ZpZGVzIGEgd3JhcHBlciBvZiBYRXZlbnQuCisrICoKKysgKiBzZWVfYWxzbzog I0lCdXNDb21wb25lbnQsICNJQnVzRW5naW5lRGVzYworKyAqLworKworKyNpbmNsdWRlICJpYnVz c2VyaWFsaXphYmxlLmgiCisrCisrLyoKKysgKiBUeXBlIG1hY3Jvcy4KKysgKi8KKysKKysvKiBk ZWZpbmUgR09CSkVDVCBtYWNyb3MgKi8KKysjZGVmaW5lIElCVVNfVFlQRV9YX0VWRU5UICAgICAg ICAgICAgXAorKyAgICAoaWJ1c194X2V2ZW50X2dldF90eXBlICgpKQorKyNkZWZpbmUgSUJVU19Y X0VWRU5UKG9iaikgICAgICAgICAgICBcCisrICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT VCAoKG9iaiksIElCVVNfVFlQRV9YX0VWRU5ULCBJQnVzWEV2ZW50KSkKKysjZGVmaW5lIElCVVNf WF9FVkVOVF9DTEFTUyhrbGFzcykgICAgXAorKyAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qg KChrbGFzcyksIElCVVNfVFlQRV9YX0VWRU5ULCBJQnVzWEV2ZW50Q2xhc3MpKQorKyNkZWZpbmUg SUJVU19JU19YX0VWRU5UKG9iaikgICAgICAgICBcCisrICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO Q0VfVFlQRSAoKG9iaiksIElCVVNfVFlQRV9YX0VWRU5UKSkKKysjZGVmaW5lIElCVVNfSVNfWF9F VkVOVF9DTEFTUyhrbGFzcykgXAorKyAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFz cyksIElCVVNfVFlQRV9YX0VWRU5UKSkKKysjZGVmaW5lIElCVVNfWF9FVkVOVF9HRVRfQ0xBU1Mo b2JqKSAgXAorKyAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIElCVVNfVFlQ RV9YX0VWRU5ULCBJQnVzWEV2ZW50Q2xhc3MpKQorKworK0dfQkVHSU5fREVDTFMKKysKKyt0eXBl ZGVmIHN0cnVjdCBfSUJ1c1hFdmVudCBJQnVzWEV2ZW50OworK3R5cGVkZWYgc3RydWN0IF9JQnVz WEV2ZW50Q2xhc3MgSUJ1c1hFdmVudENsYXNzOworK3R5cGVkZWYgc3RydWN0IF9JQnVzWEV2ZW50 UHJpdmF0ZSBJQnVzWEV2ZW50UHJpdmF0ZTsKKysKKyt0eXBlZGVmIGVudW0geworKyAgICBJQlVT X1hfRVZFTlRfTk9USElORyAgICAgICAgICAgPSAtMSwKKysgICAgSUJVU19YX0VWRU5UX0tFWV9Q UkVTUyAgICAgICAgID0gMCwKKysgICAgSUJVU19YX0VWRU5UX0tFWV9SRUxFQVNFICAgICAgID0g MSwKKysgICAgSUJVU19YX0VWRU5UX09USEVSICAgICAgICAgICAgID0gMiwKKysgICAgSUJVU19Y X0VWRU5UX0VWRU5UX0xBU1QgICAgICAgIC8qIGhlbHBlciB2YXJpYWJsZSBmb3IgZGVjbHMgKi8K Kyt9IElCdXNYRXZlbnRUeXBlOworKworKy8qKgorKyAqIElCdXNYRXZlbnQ6CisrICogQHR5cGU6 IGV2ZW50IHR5cGUKKysgKgorKyAqIElCdXNFbmdpbmUgcHJvcGVydGllcy4KKysgKi8KKytzdHJ1 Y3QgX0lCdXNYRXZlbnQgeworKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKysgICAgSUJ1c1NlcmlhbGl6 YWJsZSBwYXJlbnQ7CisrICAgIElCdXNYRXZlbnRQcml2YXRlICpwcml2OworKworKyAgICAvKiBp bnN0YW5jZSBtZW1iZXJzICovCisrICAgIC8qPCBwdWJsaWMgPiovCisrICAgIElCdXNYRXZlbnRU eXBlIGV2ZW50X3R5cGU7CisrICAgIGd1aW50ICAgICAgICAgIHdpbmRvdzsKKysgICAgZ2ludDgg ICAgICAgICAgc2VuZF9ldmVudDsKKysgICAgZ3Vsb25nICAgICAgICAgc2VyaWFsOworK307Cisr Cisrc3RydWN0IF9JQnVzWEV2ZW50Q2xhc3MgeworKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKysgICAg SUJ1c1NlcmlhbGl6YWJsZUNsYXNzIHBhcmVudDsKKysKKysgICAgLyogY2xhc3MgbWVtYmVycyAq LworKyAgICAvKjwgcHVibGljID4qLworKworKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKysgICAgLyog cGFkZGluZyAqLworKyAgICBncG9pbnRlciBwZHVtbXlbMTBdOworK307CisrCisrR1R5cGUgICAg ICAgIGlidXNfeF9ldmVudF9nZXRfdHlwZSAgICAgICAodm9pZCk7CisrCisrLyoqCisrICogaWJ1 c194X2V2ZW50X25ldzoKKysgKiBAZmlyc3RfcHJvcGVydHlfbmFtZTogTmFtZSBvZiB0aGUgZmly c3QgcHJvcGVydHkuCisrICogQC4uLjogdGhlIE5VTEwtdGVybWluYXRlZCBhcmd1bWVudHMgb2Yg dGhlIHByb3BlcnRpZXMgYW5kIHZhbHVlcy4KKysgKgorKyAqIENyZWF0ZSBhIG5ldyAjSUJ1c1hF dmVudC4KKysgKgorKyAqIFJldHVybnM6IEEgbmV3bHkgYWxsb2NhdGVkICNJQnVzWEV2ZW50LiBF LmcuCisrICogaWJ1c194X2V2ZW50X25ldyAoImV2ZW50LXR5cGUiLCBJQlVTX1hfRVZFTlRfS0VZ X1BSRVNTLCBOVUxMKTsKKysgKi8KKytJQnVzWEV2ZW50ICogICBpYnVzX3hfZXZlbnRfbmV3ICAg ICAgICAgICAgKGNvbnN0IGdjaGFyCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqZmlyc3RfcHJvcGVydHlfbmFtZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisrCisrLyoqCisrICog aWJ1c194X2V2ZW50X2dldF92ZXJzaW9uOgorKyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCisr ICoKKysgKiBSZXR1cm5zOiBWZXJzaW9uIG9mICNJQnVzWEV2ZW50CisrICovCisrZ3VpbnQgICAg ICAgICAgaWJ1c194X2V2ZW50X2dldF92ZXJzaW9uICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2 ZW50KTsKKysKKysvKioKKysgKiBpYnVzX3hfZXZlbnRfZ2V0X2V2ZW50X3R5cGU6CisrICogQGV2 ZW50OiBBbiAjSUJ1c1hFdmVudC4KKysgKgorKyAqIFJldHVybnM6IElCdXNYRXZlbnRUeXBlIG9m ICNJQnVzWEV2ZW50CisrICovCisrSUJ1c1hFdmVudFR5cGUgaWJ1c194X2V2ZW50X2dldF9ldmVu dF90eXBlIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50KTsKKysKKysvKioKKysgKiBpYnVzX3hf ZXZlbnRfZ2V0X3dpbmRvdzoKKysgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgorKyAqCisrICog UmV0dXJuczogWElEIG9mICNJQnVzWEV2ZW50CisrICovCisrZ3VpbnQzMiAgICAgICAgaWJ1c194 X2V2ZW50X2dldF93aW5kb3cgICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50KTsKKysKKysv KioKKysgKiBpYnVzX3hfZXZlbnRfZ2V0X3NlbmRfZXZlbnQ6CisrICogQGV2ZW50OiBBbiAjSUJ1 c1hFdmVudC4KKysgKgorKyAqIFJldHVybnM6IHNlbmRfZXZlbnQgb2YgI0lCdXNYRXZlbnQKKysg Ki8KKytnaW50OCAgICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3NlbmRfZXZlbnQgKElCdXNYRXZl bnQgICAgICAgICAqZXZlbnQpOworKworKy8qKgorKyAqIGlidXNfeF9ldmVudF9nZXRfc2VyaWFs OgorKyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCisrICoKKysgKiBSZXR1cm5zOiBzZXJpYWwg b2YgI0lCdXNYRXZlbnQKKysgKi8KKytndWxvbmcgICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3Nl cmlhbCAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOworKworKy8qKgorKyAqIGlidXNf eF9ldmVudF9nZXRfdGltZToKKysgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgorKyAqCisrICog UmV0dXJuczogdGltZSBvZiAjSUJ1c1hFdmVudAorKyAqLworK2d1aW50MzIgICAgICAgIGlidXNf eF9ldmVudF9nZXRfdGltZSAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7CisrCisr LyoqCisrICogaWJ1c194X2V2ZW50X2dldF9zdGF0ZToKKysgKiBAZXZlbnQ6IEFuICNJQnVzWEV2 ZW50LgorKyAqCisrICogUmV0dXJuczogc3RhdGUgb2YgI0lCdXNYRXZlbnQKKysgKi8KKytndWlu dCAgICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3N0YXRlICAgICAgKElCdXNYRXZlbnQgICAgICAg ICAqZXZlbnQpOworKworKy8qKgorKyAqIGlidXNfeF9ldmVudF9nZXRfa2V5dmFsOgorKyAqIEBl dmVudDogQW4gI0lCdXNYRXZlbnQuCisrICoKKysgKiBSZXR1cm5zOiBrZXl2YWwgb2YgI0lCdXNY RXZlbnQKKysgKi8KKytndWludCAgICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X2tleXZhbCAgICAg KElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOworKworKy8qKgorKyAqIGlidXNfeF9ldmVudF9n ZXRfbGVuZ3RoOgorKyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCisrICoKKysgKiBSZXR1cm5z OiBsZW5ndGggb2YgI0lCdXNYRXZlbnQKKysgKi8KKytnaW50ICAgICAgICAgICBpYnVzX3hfZXZl bnRfZ2V0X2xlbmd0aCAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOworKworKy8qKgor KyAqIGlidXNfeF9ldmVudF9nZXRfc3RyaW5nOgorKyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQu CisrICoKKysgKiBSZXR1cm5zOiBzdHJpbmcgb2YgI0lCdXNYRXZlbnQKKysgKi8KKytjb25zdCBn Y2hhciAqICBpYnVzX3hfZXZlbnRfZ2V0X3N0cmluZyAgICAgKElCdXNYRXZlbnQgICAgICAgICAq ZXZlbnQpOworKworKy8qKgorKyAqIGlidXNfeF9ldmVudF9nZXRfaGFyZHdhcmVfa2V5Y29kZToK KysgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgorKyAqCisrICogUmV0dXJuczogaGFyZHdhcmUg a2V5Y29kZSBvZiAjSUJ1c1hFdmVudAorKyAqLworK2d1aW50MTYgICAgICAgIGlidXNfeF9ldmVu dF9nZXRfaGFyZHdhcmVfa2V5Y29kZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7CisrCisrLyoqCisrICogaWJ1 c194X2V2ZW50X2dldF9ncm91cDoKKysgKiBAZXZlbnQ6IEFuICNJQnVzWEV2ZW50LgorKyAqCisr ICogUmV0dXJuczogZ3JvdXAgb2YgI0lCdXNYRXZlbnQKKysgKi8KKytndWludDggICAgICAgICBp YnVzX3hfZXZlbnRfZ2V0X2dyb3VwICAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOwor KworKy8qKgorKyAqIGlidXNfeF9ldmVudF9nZXRfaXNfbW9kaWZpZXI6CisrICogQGV2ZW50OiBB biAjSUJ1c1hFdmVudC4KKysgKgorKyAqIFJldHVybnM6IGlzX21vZGlmaWVyIG9mICNJQnVzWEV2 ZW50CisrICovCisrZ2Jvb2xlYW4gICAgICAgaWJ1c194X2V2ZW50X2dldF9pc19tb2RpZmllcgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1hFdmVudCAg ICAgICAgICpldmVudCk7CisrCisrLyoqCisrICogaWJ1c194X2V2ZW50X2dldF9zdWJ3aW5kb3c6 CisrICogQGV2ZW50OiBBbiAjSUJ1c1hFdmVudC4KKysgKgorKyAqIFJldHVybnM6IHN1YndpbmRv dyBvZiAjSUJ1c1hFdmVudAorKyAqLworK2d1aW50MzIgICAgICAgIGlidXNfeF9ldmVudF9nZXRf c3Vid2luZG93ICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7CisrCisrLyoqCisrICogaWJ1 c194X2V2ZW50X2dldF9yb290OgorKyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCisrICoKKysg KiBSZXR1cm5zOiByb290IHdpbmRvdyBvZiAjSUJ1c1hFdmVudAorKyAqLworK2d1aW50MzIgICAg ICAgIGlidXNfeF9ldmVudF9nZXRfcm9vdCAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVu dCk7CisrCisrLyoqCisrICogaWJ1c194X2V2ZW50X2dldF94OgorKyAqIEBldmVudDogQW4gI0lC dXNYRXZlbnQuCisrICoKKysgKiBSZXR1cm5zOiB4IG9mICNJQnVzWEV2ZW50CisrICovCisrZ2lu dCAgICAgICAgICAgaWJ1c194X2V2ZW50X2dldF94ICAgICAgICAgIChJQnVzWEV2ZW50ICAgICAg ICAgKmV2ZW50KTsKKysKKysvKioKKysgKiBpYnVzX3hfZXZlbnRfZ2V0X3k6CisrICogQGV2ZW50 OiBBbiAjSUJ1c1hFdmVudC4KKysgKgorKyAqIFJldHVybnM6IHkgb2YgI0lCdXNYRXZlbnQKKysg Ki8KKytnaW50ICAgICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3kgICAgICAgICAgKElCdXNYRXZl bnQgICAgICAgICAqZXZlbnQpOworKworKy8qKgorKyAqIGlidXNfeF9ldmVudF9nZXRfeF9yb290 OgorKyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCisrICoKKysgKiBSZXR1cm5zOiB4LXJvb3Qg b2YgI0lCdXNYRXZlbnQKKysgKi8KKytnaW50ICAgICAgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3hf cm9vdCAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOworKworKy8qKgorKyAqIGlidXNf eF9ldmVudF9nZXRfeV9yb290OgorKyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCisrICoKKysg KiBSZXR1cm5zOiB5LXJvb3Qgb2YgI0lCdXNYRXZlbnQKKysgKi8KKytnaW50ICAgICAgICAgICBp YnVzX3hfZXZlbnRfZ2V0X3lfcm9vdCAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQpOwor KworKy8qKgorKyAqIGlidXNfeF9ldmVudF9nZXRfc2FtZV9zY3JlZW46CisrICogQGV2ZW50OiBB biAjSUJ1c1hFdmVudC4KKysgKgorKyAqIFJldHVybnM6IHNhbWVfc2NyZWVuIG9mICNJQnVzWEV2 ZW50CisrICovCisrZ2Jvb2xlYW4gICAgICAgaWJ1c194X2V2ZW50X2dldF9zYW1lX3NjcmVlbgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1hFdmVudCAg ICAgICAgICpldmVudCk7CisrCisrLyoqCisrICogaWJ1c194X2V2ZW50X2dldF9wdXJwb3NlOgor KyAqIEBldmVudDogQW4gI0lCdXNYRXZlbnQuCisrICoKKysgKiBSZXR1cm5zOiBwdXJwb3NlIG9m ICNJQnVzWEV2ZW50CisrICovCisrY29uc3QgZ2NoYXIgKiAgaWJ1c194X2V2ZW50X2dldF9wdXJw b3NlICAgIChJQnVzWEV2ZW50ICAgICAgICAgKmV2ZW50KTsKKysKKytHX0VORF9ERUNMUworKyNl bmRpZgorZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9ydW50ZXN0IGIvc3JjL3Rlc3RzL3J1bnRlc3QK K2luZGV4IDkxYzRlOTVmLi4wZTQzZmVlNSAxMDA3NTUKKy0tLSBhL3NyYy90ZXN0cy9ydW50ZXN0 CisrKysgYi9zcmMvdGVzdHMvcnVudGVzdAorQEAgLTEwNiw2ICsxMDYsNyBAQCB0ZXN0IC1kICR0 c3RkaXIgfHwgbWtkaXIgJHRzdGRpcgorICAgICAtLWRhZW1vbml6ZSBcCisgICAgIC0tY2FjaGU9 bm9uZSBcCisgICAgIC0tcGFuZWw9ZGlzYWJsZSBcCisrICAgIC0tcGFuZWwtZXh0ZW5zaW9uPWRp c2FibGUgXAorICAgICAtLWNvbmZpZz1kZWZhdWx0IFwKKyAgICAgLS12ZXJib3NlOworIAorZGlm ZiAtLWdpdCBhL3VpL2d0azMvTWFrZWZpbGUuYW0gYi91aS9ndGszL01ha2VmaWxlLmFtCitpbmRl eCA3ODZiODBlNi4uMGE4ZjQyMDAgMTAwNjQ0CistLS0gYS91aS9ndGszL01ha2VmaWxlLmFtCisr KysgYi91aS9ndGszL01ha2VmaWxlLmFtCitAQCAtMyw4ICszLDggQEAKKyAjIGlidXMgLSBUaGUg SW5wdXQgQnVzCisgIworICMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTUgUGVuZyBIdWFuZyA8c2hh d24ucC5odWFuZ0BnbWFpbC5jb20+CistIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNyBUYWthbyBG dWp3aWFyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KKy0jIENvcHlyaWdodCAoYykgMjAw Ny0yMDE3IFJlZCBIYXQsIEluYy4KKysjIENvcHlyaWdodCAoYykgMjAxNS0yMDE4IFRha2FvIEZ1 andpYXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyMgQ29weXJpZ2h0IChjKSAyMDA3 LTIwMTggUmVkIEhhdCwgSW5jLgorICMKKyAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAjIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKK0BAIC0zMCw3ICszMCw3IEBA IGNvbXBvbmVudF9EQVRBID0gXAorIAkkKE5VTEwpCisgY29tcG9uZW50ZGlyID0gJChwa2dkYXRh ZGlyKS9jb21wb25lbnQKKyAKKy1ndGtwYW5lbC54bWw6IGd0a3BhbmVsLnhtbC5pbgorKyUueG1s OiAlLnhtbC5pbgorIAkkKEFNX1ZfR0VOKSBzZWQgXAorIAkJLWUgJ3N8QFZFUlNJT05bQF18JChW RVJTSU9OKXxnJyBcCisgCQktZSAnc3xAbGliZXhlY2RpcltAXXwkKGxpYmV4ZWNkaXIpfGcnICQ8 ID4gJEAudG1wICYmIFwKK0BAIC0xMDgsNiArMTA4LDcgQEAgbGliZXhlY19QUk9HUkFNUyA9IGli dXMtdWktZ3RrMworIAorIGlidXNfdWlfZ3RrM19TT1VSQ0VTID0gXAorIAlhcHBsaWNhdGlvbi52 YWxhIFwKKysJYmluZGluZ2NvbW1vbi52YWxhIFwKKyAJY2FuZGlkYXRlYXJlYS52YWxhIFwKKyAJ Y2FuZGlkYXRlcGFuZWwudmFsYSBcCisgCWVtb2ppZXIudmFsYSBcCitAQCAtMTU1LDkgKzE1Niwx MiBAQCBFWFRSQV9ESVNUID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAkKGVt b2ppX2hlYWRlcnMpICAgICAgICAgICAgICAgICAgICBcCisgICAgICQobWFuX3NldmVuX2luX2Zp bGVzKSAgICAgICAgICAgICAgIFwKKyAgICAgZW1vamllcmFwcC52YWxhICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICBleHRlbnNpb24udmFsYSAgICAgICAgICAgICAgICAgICAgICBcCisrICAg IGd0a2V4dGVuc2lvbi54bWwuaW4gICAgICAgICAgICAgICAgIFwKKyAgICAgZ3RrcGFuZWwueG1s LmluICAgICAgICAgICAgICAgICAgICAgXAorICAgICBub3RpZmljYXRpb24taXRlbS54bWwgICAg ICAgICAgICAgICBcCisgICAgIG5vdGlmaWNhdGlvbi13YXRjaGVyLnhtbCAgICAgICAgICAgIFwK KysgICAgcGFuZWxiaW5kaW5nLnZhbGEgICAgICAgICAgICAgICAgICAgXAorICAgICAkKE5VTEwp CisgCisgaWYgRU5BQkxFX0VNT0pJX0RJQ1QKK0BAIC0xNjcsMTAgKzE3MSw4IEBAIGxpYmV4ZWNf UFJPR1JBTVMgKz0gaWJ1cy11aS1lbW9qaWVyCisgCisgaWJ1c191aV9lbW9qaWVyX1ZBTEFTT1VS Q0VTID0gICAgICAgICAgICAgICAgICAgXAorICAgICBlbW9qaWVyYXBwLnZhbGEgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKy0gICAgY2FuZGlkYXRlYXJlYS52YWxhICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgIGVtb2ppZXIudmFsYSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICBpY29ud2lkZ2V0LnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKy0gICAgcGFuZ28udmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgIHNlcGFyYXRvci52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAkKE5VTEwpCisgaWJ1c191aV9lbW9qaWVyX1NPVVJDRVMgPSAgICAgICAgICAgICAgICAgICAg ICAgXAorQEAgLTE5OCw2ICsyMDAsNTMgQEAgZW1vamllcmFwcC5vOiAkKHNyY2RpcikvZW1vamll cmFwcC5jCisgCSQoQU1fVl9DQ19ubykkKENPTVBJTEUpIC1jIC1vICRAICQ8CisgCSQoTlVMTCkK KyAKKytjb21wb25lbnRfREFUQSArPSBndGtleHRlbnNpb24ueG1sCisrQ0xFQU5GSUxFUyArPSBn dGtleHRlbnNpb24ueG1sCisrbGliZXhlY19QUk9HUkFNUyArPSBpYnVzLWV4dGVuc2lvbi1ndGsz CisrCisraWJ1c19leHRlbnNpb25fZ3RrM19WQUxBU09VUkNFUyA9ICAgICAgICAgICAgICAgXAor KyAgICBiaW5kaW5nY29tbW9uLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg ZW1vamllci52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGV4dGVu c2lvbi52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBpY29ud2lkZ2V0 LnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAga2V5YmluZGluZ21hbmFn ZXIudmFsYSAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHBhbmVsYmluZGluZy52YWxhICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisraWJ1c19leHRlbnNpb25f Z3RrM19TT1VSQ0VTID0gICAgICAgICAgICAgICAgICAgXAorKyAgICAkKGlidXNfZXh0ZW5zaW9u X2d0azNfVkFMQVNPVVJDRVM6LnZhbGE9LmMpIFwKKysgICAgJChOVUxMKQorKworK2lidXNfZXh0 ZW5zaW9uX2d0azNfTERBREQgPSAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChBTV9MREFE RCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICQoTlVMTCkKKytpYnVz X2V4dGVuc2lvbl9ndGszX1ZBTEFGTEFHUyA9ICAgICAgICAgICAgICAgICBcCisrICAgICQoQU1f VkFMQUZMQUdTKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAkKE5VTEwpCisr CisrIyBUaGlzIGxpbmUgYW5kIGZvb19WQUxBU09VUkNFUyBsaW5lIGNhbiBkZWxldGUgdGhlIGR1 cGxpY2F0ZWQgZW50cmllcworKyMgb2YgZW1vamllci5jOiBlbW9qaWVyLnZhbGEKKytleHRlbnNp b24uYzogJChpYnVzX2V4dGVuc2lvbl9ndGszX1ZBTEFTT1VSQ0VTKQorKwkkKEFNX1ZfVkFMQUMp JChhbV9fY2QpICQoc3JjZGlyKSAmJiAkKFZBTEFDKSAkKEFNX1ZBTEFGTEFHUykgXAorKyQoVkFM QUZMQUdTKSAtQyAkKGlidXNfZXh0ZW5zaW9uX2d0azNfVkFMQVNPVVJDRVMpCisrCSQoTlVMTCkK KysjIG1ha2UgZGlzdCBjcmVhdGVzIC5jIGZpbGVzIGluIGEgZGlmZmVyZW50IHNyY2RpcgorK2V4 dGVuc2lvbi5vOiAkKHNyY2RpcikvZXh0ZW5zaW9uLmMKKysJJChBTV9WX0NDKXNvdXJjZT0nJDwn IG9iamVjdD0nJEAnIGxpYnRvb2w9bm8gXAorKwlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RF KSAkKGRlcGNvbXApIFwKKysJJChBTV9WX0NDX25vKSQoQ09NUElMRSkgLWMgLW8gJEAgJDwKKysJ JChOVUxMKQorKyMgb2YgZW1vamllci5jOiBlbW9qaWVyLnZhbGEKKytwYW5lbGJpbmRpbmcuYzog JChpYnVzX2V4dGVuc2lvbl9ndGszX1ZBTEFTT1VSQ0VTKQorKwkkKEFNX1ZfVkFMQUMpJChhbV9f Y2QpICQoc3JjZGlyKSAmJiAkKFZBTEFDKSAkKEFNX1ZBTEFGTEFHUykgXAorKyQoVkFMQUZMQUdT KSAtQyAkKGlidXNfZXh0ZW5zaW9uX2d0azNfVkFMQVNPVVJDRVMpCisrCSQoTlVMTCkKKysjIG1h a2UgZGlzdCBjcmVhdGVzIC5jIGZpbGVzIGluIGEgZGlmZmVyZW50IHNyY2RpcgorK3BhbmVsYmlu ZGluZy5vOiAkKHNyY2RpcikvcGFuZWxiaW5kaW5nLmMKKysJJChBTV9WX0NDKXNvdXJjZT0nJDwn IG9iamVjdD0nJEAnIGxpYnRvb2w9bm8gXAorKwlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RF KSAkKGRlcGNvbXApIFwKKysJJChBTV9WX0NDX25vKSQoQ09NUElMRSkgLWMgLW8gJEAgJDwKKysJ JChOVUxMKQorKworIG1hbl9zZXZlbl9maWxlcyA9ICQobWFuX3NldmVuX2luX2ZpbGVzOi43Lmlu PS43KQorIG1hbl9zZXZlbl9EQVRBID0kKG1hbl9zZXZlbl9maWxlczouNz0uNy5neikKKyBtYW5f c2V2ZW5kaXIgPSAkKG1hbmRpcikvbWFuNworZGlmZiAtLWdpdCBhL3VpL2d0azMvYmluZGluZ2Nv bW1vbi52YWxhIGIvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMC4uNDE3MWYyOWQKKy0tLSAvZGV2L251bGwKKysrKyBiL3VpL2d0 azMvYmluZGluZ2NvbW1vbi52YWxhCitAQCAtMCwwICsxLDIxNSBAQAorKy8qIHZpbTpzZXQgZXQg c3RzPTQgc3c9NDoKKysgKgorKyAqIGlidXMgLSBUaGUgSW5wdXQgQnVzCisrICoKKysgKiBDb3B5 cmlnaHQoYykgMjAxOCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKysgKiBD b3B5cmlnaHQoYykgMjAxOCBUYWthbyBGdWp3aWFyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNv bT4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysg KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNl bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMQorKyAqIFVTQQorKyAqLworKworKy8qIFRoaXMg ZmlsZSBkZXBlbmRzIG9uIGtleWJpbmRpbmdtYW5hZ2VyLnZhbGEgKi8KKysKKytjbGFzcyBCaW5k aW5nQ29tbW9uIHsKKysgICAgcHVibGljIGVudW0gS2V5RXZlbnRGdW5jVHlwZSB7CisrICAgICAg ICBBTlksCisrICAgICAgICBJTUVfU1dJVENIRVIsCisrICAgICAgICBFTU9KSV9UWVBJTkcsCisr ICAgIH0KKysKKysgICAgcHVibGljIGNsYXNzIEtleWJpbmRpbmcgOiBHTGliLk9iamVjdCB7Cisr ICAgICAgICBwdWJsaWMgS2V5YmluZGluZyh1aW50ICAgICAgICAgICAgIGtleXN5bSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgIEdkay5Nb2RpZmllclR5cGUgbW9kaWZpZXJzLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICByZXZlcnNlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgS2V5RXZlbnRGdW5jVHlwZSBmdHlwZSkgeworKyAgICAgICAgICAg IHRoaXMua2V5c3ltID0ga2V5c3ltOworKyAgICAgICAgICAgIHRoaXMubW9kaWZpZXJzID0gbW9k aWZpZXJzOworKyAgICAgICAgICAgIHRoaXMucmV2ZXJzZSA9IHJldmVyc2U7CisrICAgICAgICAg ICAgdGhpcy5mdHlwZSA9IGZ0eXBlOworKyAgICAgICAgfQorKworKyAgICAgICAgcHVibGljIHVp bnQga2V5c3ltIHsgZ2V0OyBzZXQ7IH0KKysgICAgICAgIHB1YmxpYyBHZGsuTW9kaWZpZXJUeXBl IG1vZGlmaWVycyB7IGdldDsgc2V0OyB9CisrICAgICAgICBwdWJsaWMgYm9vbCByZXZlcnNlIHsg Z2V0OyBzZXQ7IH0KKysgICAgICAgIHB1YmxpYyBLZXlFdmVudEZ1bmNUeXBlIGZ0eXBlIHsgZ2V0 OyBzZXQ7IH0KKysgICAgfQorKworKyAgICBwdWJsaWMgZGVsZWdhdGUgdm9pZCBLZXliaW5kaW5n RnVuY0hhbmRsZXJGdW5jKEdkay5FdmVudCBldmVudCk7CisrCisrICAgIHB1YmxpYyBzdGF0aWMg dm9pZAorKyAgICBrZXliaW5kaW5nX21hbmFnZXJfYmluZChLZXliaW5kaW5nTWFuYWdlciAgICAg ICAgICAga2V5YmluZGluZ19tYW5hZ2VyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWYgR0xpYi5MaXN0PEtleWJpbmRpbmc+ICAga2V5YmluZGluZ3MsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cmluZz8gICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRvciwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnRGdW5jVHlwZSAgICAgICAgICAgIGZ0 eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXliaW5kaW5nTWFuYWdlci5LZXli aW5kaW5nSGFuZGxlckZ1bmMKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfbm9ybWFsLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBLZXliaW5kaW5nTWFuYWdlci5LZXliaW5kaW5nSGFuZGxlckZ1bmM/CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVy X3JldmVyc2UpIHsKKysgICAgICAgIHVpbnQgc3dpdGNoX2tleXN5bSA9IDA7CisrICAgICAgICBH ZGsuTW9kaWZpZXJUeXBlIHN3aXRjaF9tb2RpZmllcnMgPSAwOworKyAgICAgICAgR2RrLk1vZGlm aWVyVHlwZSByZXZlcnNlX21vZGlmaWVyID0gR2RrLk1vZGlmaWVyVHlwZS5TSElGVF9NQVNLOwor KyAgICAgICAgS2V5YmluZGluZyBrZXliaW5kaW5nOworKworKyAgICAgICAgR3RrLmFjY2VsZXJh dG9yX3BhcnNlKGFjY2VsZXJhdG9yLAorKyAgICAgICAgICAgICAgICBvdXQgc3dpdGNoX2tleXN5 bSwgb3V0IHN3aXRjaF9tb2RpZmllcnMpOworKworKyAgICAgICAgLy8gTWFwIHZpcnR1YWwgbW9k aWZpZXJzIHRvIChpLmUuIE1vZDIsIE1vZDMsIC4uLikKKysgICAgICAgIGNvbnN0IEdkay5Nb2Rp ZmllclR5cGUgVklSVFVBTF9NT0RJRklFUlMgPSAoCisrICAgICAgICAgICAgICAgIEdkay5Nb2Rp ZmllclR5cGUuU1VQRVJfTUFTSyB8CisrICAgICAgICAgICAgICAgIEdkay5Nb2RpZmllclR5cGUu SFlQRVJfTUFTSyB8CisrICAgICAgICAgICAgICAgIEdkay5Nb2RpZmllclR5cGUuTUVUQV9NQVNL KTsKKysgICAgICAgIGlmICgoc3dpdGNoX21vZGlmaWVycyAmIFZJUlRVQUxfTU9ESUZJRVJTKSAh PSAwKSB7CisrICAgICAgICAvLyB3b3JrYXJvdW5kIGEgYnVnIGluIGdkayB2YXBpIHZhbGEgPiAw LjE4CisrICAgICAgICAvLyBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9Njc3NTU5CisrI2lmIFZBTEFfMF8xOAorKyAgICAgICAgICAgIEdkay5LZXltYXAuZ2V0X2Rl ZmF1bHQoKS5tYXBfdmlydHVhbF9tb2RpZmllcnMoCisrICAgICAgICAgICAgICAgICAgICByZWYg c3dpdGNoX21vZGlmaWVycyk7CisrI2Vsc2UKKysgICAgICAgICAgICBpZiAoKHN3aXRjaF9tb2Rp ZmllcnMgJiBHZGsuTW9kaWZpZXJUeXBlLlNVUEVSX01BU0spICE9IDApCisrICAgICAgICAgICAg ICAgIHN3aXRjaF9tb2RpZmllcnMgfD0gR2RrLk1vZGlmaWVyVHlwZS5NT0Q0X01BU0s7CisrICAg ICAgICAgICAgaWYgKChzd2l0Y2hfbW9kaWZpZXJzICYgR2RrLk1vZGlmaWVyVHlwZS5IWVBFUl9N QVNLKSAhPSAwKQorKyAgICAgICAgICAgICAgICBzd2l0Y2hfbW9kaWZpZXJzIHw9IEdkay5Nb2Rp ZmllclR5cGUuTU9ENF9NQVNLOworKyNlbmRpZgorKyAgICAgICAgICAgIHN3aXRjaF9tb2RpZmll cnMgJj0gflZJUlRVQUxfTU9ESUZJRVJTOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHN3 aXRjaF9rZXlzeW0gPT0gMCAmJiBzd2l0Y2hfbW9kaWZpZXJzID09IDApIHsKKysgICAgICAgICAg ICB3YXJuaW5nKCJQYXJzZSBhY2NlbGVyYXRvciAnJXMnIGZhaWxlZCEiLCBhY2NlbGVyYXRvcik7 CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKworKyAgICAgICAga2V5YmluZGlu ZyA9IG5ldyBLZXliaW5kaW5nKHN3aXRjaF9rZXlzeW0sCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3dpdGNoX21vZGlmaWVycywKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmYWxzZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmdHlwZSk7CisrICAgICAgICBrZXliaW5kaW5ncy5hcHBlbmQoa2V5YmluZGluZyk7CisrCisr ICAgICAgICBrZXliaW5kaW5nX21hbmFnZXIuYmluZChzd2l0Y2hfa2V5c3ltLCBzd2l0Y2hfbW9k aWZpZXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9ub3JtYWwp OworKyAgICAgICAgaWYgKGZ0eXBlID09IEtleUV2ZW50RnVuY1R5cGUuRU1PSklfVFlQSU5HKSB7 CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKworKyAgICAgICAgLy8gYWNjZWxl cmF0b3IgYWxyZWFkeSBoYXMgU2hpZnQgbWFzaworKyAgICAgICAgaWYgKChzd2l0Y2hfbW9kaWZp ZXJzICYgcmV2ZXJzZV9tb2RpZmllcikgIT0gMCkgeworKyAgICAgICAgICAgIHJldHVybjsKKysg ICAgICAgIH0KKysKKysgICAgICAgIHN3aXRjaF9tb2RpZmllcnMgfD0gcmV2ZXJzZV9tb2RpZmll cjsKKysKKysgICAgICAgIGtleWJpbmRpbmcgPSBuZXcgS2V5YmluZGluZyhzd2l0Y2hfa2V5c3lt LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaF9tb2RpZmllcnMs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmdHlwZSk7CisrICAgICAgICBrZXliaW5kaW5ncy5h cHBlbmQoa2V5YmluZGluZyk7CisrCisrICAgICAgICBpZiAoZnR5cGUgPT0gS2V5RXZlbnRGdW5j VHlwZS5JTUVfU1dJVENIRVIpIHsKKysgICAgICAgICAgICBrZXliaW5kaW5nX21hbmFnZXIuYmlu ZChzd2l0Y2hfa2V5c3ltLCBzd2l0Y2hfbW9kaWZpZXJzLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhhbmRsZXJfcmV2ZXJzZSk7CisrICAgICAgICB9CisrICAgICAgICBy ZXR1cm47CisrICAgIH0KKysKKysgICAgcHVibGljIHN0YXRpYyB2b2lkCisrICAgIHVuYmluZF9z d2l0Y2hfc2hvcnRjdXQoS2V5RXZlbnRGdW5jVHlwZSAgICAgIGZ0eXBlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMaWIuTGlzdDxLZXliaW5kaW5nPiBrZXliaW5kaW5ncykgeworKyAg ICAgICAgdmFyIGtleWJpbmRpbmdfbWFuYWdlciA9IEtleWJpbmRpbmdNYW5hZ2VyLmdldF9pbnN0 YW5jZSgpOworKworKyAgICAgICAgd2hpbGUgKGtleWJpbmRpbmdzICE9IG51bGwpIHsKKysgICAg ICAgICAgICBLZXliaW5kaW5nIGtleWJpbmRpbmcgPSBrZXliaW5kaW5ncy5kYXRhOworKworKyAg ICAgICAgICAgIGlmIChmdHlwZSA9PSBLZXlFdmVudEZ1bmNUeXBlLkFOWSB8fAorKyAgICAgICAg ICAgICAgICBmdHlwZSA9PSBrZXliaW5kaW5nLmZ0eXBlKSB7CisrICAgICAgICAgICAgICAgIGtl eWJpbmRpbmdfbWFuYWdlci51bmJpbmQoa2V5YmluZGluZy5rZXlzeW0sCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5YmluZGluZy5tb2RpZmllcnMpOworKyAg ICAgICAgICAgIH0KKysgICAgICAgICAgICBrZXliaW5kaW5ncyA9IGtleWJpbmRpbmdzLm5leHQ7 CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcHVibGljIHN0YXRpYyB2b2lkCisrICAgIHNl dF9jdXN0b21fZm9udChHTGliLlNldHRpbmdzPyAgICAgICBzZXR0aW5nc19wYW5lbCwKKysgICAg ICAgICAgICAgICAgICAgIEdMaWIuU2V0dGluZ3M/ICAgICAgIHNldHRpbmdzX2Vtb2ppLAorKyAg ICAgICAgICAgICAgICAgICAgcmVmIEd0ay5Dc3NQcm92aWRlcj8gY3NzX3Byb3ZpZGVyKSB7Cisr ICAgICAgICBHZGsuRGlzcGxheSBkaXNwbGF5ID0gR2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKTsK KysgICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0gKGRpc3BsYXkgIT0gbnVsbCkgPworKyAgICAg ICAgICAgICAgICBkaXNwbGF5LmdldF9kZWZhdWx0X3NjcmVlbigpIDogbnVsbDsKKysKKysgICAg ICAgIGlmIChzY3JlZW4gPT0gbnVsbCkgeworKyAgICAgICAgICAgIHdhcm5pbmcoIkNvdWxkIG5v dCBvcGVuIGRpc3BsYXkuIik7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKwor KyAgICAgICAgaWYgKHNldHRpbmdzX2Vtb2ppICE9IG51bGwpIHsKKysgICAgICAgICAgICBzdHJp bmcgZW1vamlfZm9udCA9IHNldHRpbmdzX2Vtb2ppLmdldF9zdHJpbmcoImZvbnQiKTsKKysgICAg ICAgICAgICBpZiAoZW1vamlfZm9udCA9PSBudWxsKSB7CisrICAgICAgICAgICAgICAgIHdhcm5p bmcoIk5vIGNvbmZpZyBlbW9qaTpmb250LiIpOworKyAgICAgICAgICAgICAgICByZXR1cm47Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIElCdXNFbW9qaWVyLnNldF9lbW9qaV9mb250KGVt b2ppX2ZvbnQpOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHNldHRpbmdzX3BhbmVsID09 IG51bGwpCisrICAgICAgICAgICAgcmV0dXJuOworKworKyAgICAgICAgYm9vbCB1c2VfY3VzdG9t X2ZvbnQgPSBzZXR0aW5nc19wYW5lbC5nZXRfYm9vbGVhbigidXNlLWN1c3RvbS1mb250Iik7Cisr CisrICAgICAgICBpZiAoY3NzX3Byb3ZpZGVyICE9IG51bGwpIHsKKysgICAgICAgICAgICBHdGsu U3R5bGVDb250ZXh0LnJlbW92ZV9wcm92aWRlcl9mb3Jfc2NyZWVuKHNjcmVlbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc19wcm92 aWRlcik7CisrICAgICAgICAgICAgY3NzX3Byb3ZpZGVyID0gbnVsbDsKKysgICAgICAgIH0KKysK KysgICAgICAgIGlmICh1c2VfY3VzdG9tX2ZvbnQgPT0gZmFsc2UpIHsKKysgICAgICAgICAgICBy ZXR1cm47CisrICAgICAgICB9CisrCisrICAgICAgICBzdHJpbmcgY3VzdG9tX2ZvbnQgPSBzZXR0 aW5nc19wYW5lbC5nZXRfc3RyaW5nKCJjdXN0b20tZm9udCIpOworKyAgICAgICAgaWYgKGN1c3Rv bV9mb250ID09IG51bGwpIHsKKysgICAgICAgICAgICB3YXJuaW5nKCJObyBjb25maWcgcGFuZWw6 Y3VzdG9tLWZvbnQuIik7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKworKyAg ICAgICAgUGFuZ28uRm9udERlc2NyaXB0aW9uIGZvbnRfZGVzYyA9CisrICAgICAgICAgICAgICAg IFBhbmdvLkZvbnREZXNjcmlwdGlvbi5mcm9tX3N0cmluZyhjdXN0b21fZm9udCk7CisrICAgICAg ICBzdHJpbmcgZm9udF9mYW1pbHkgPSBmb250X2Rlc2MuZ2V0X2ZhbWlseSgpOworKyAgICAgICAg aW50IGZvbnRfc2l6ZSA9IGZvbnRfZGVzYy5nZXRfc2l6ZSgpIC8gUGFuZ28uU0NBTEU7CisrICAg ICAgICBzdHJpbmcgZGF0YTsKKysKKysgICAgICAgIGlmIChHdGsuTUFKT1JfVkVSU0lPTiA8IDMg fHwKKysgICAgICAgICAgICAoR3RrLk1BSk9SX1ZFUlNJT04gPT0gMyAmJiBHdGsuTUlOT1JfVkVS U0lPTiA8IDIwKSkgeworKyAgICAgICAgICAgIGRhdGEgPSAiR3RrTGFiZWwgeyBmb250OiAlczsg fSIucHJpbnRmKGN1c3RvbV9mb250KTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAg ZGF0YSA9ICJsYWJlbCB7IGZvbnQtZmFtaWx5OiAlczsgZm9udC1zaXplOiAlZHB0OyB9IgorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC5wcmludGYoZm9udF9mYW1pbHksIGZvbnRfc2l6ZSk7 CisrICAgICAgICB9CisrCisrICAgICAgICBjc3NfcHJvdmlkZXIgPSBuZXcgR3RrLkNzc1Byb3Zp ZGVyKCk7CisrCisrICAgICAgICB0cnkgeworKyAgICAgICAgICAgIGNzc19wcm92aWRlci5sb2Fk X2Zyb21fZGF0YShkYXRhLCAtMSk7CisrICAgICAgICB9IGNhdGNoIChHTGliLkVycm9yIGUpIHsK KysgICAgICAgICAgICB3YXJuaW5nKCJGYWlsZWQgY3NzX3Byb3ZpZGVyX2Zyb21fZGF0YTogJXM6 ICVzIiwgY3VzdG9tX2ZvbnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGUubWVzc2FnZSk7CisrICAgICAgICAgICAgcmV0dXJu OworKyAgICAgICAgfQorKworKyAgICAgICAgR3RrLlN0eWxlQ29udGV4dC5hZGRfcHJvdmlkZXJf Zm9yX3NjcmVlbigKKysgICAgICAgICAgICAgICAgc2NyZWVuLAorKyAgICAgICAgICAgICAgICBj c3NfcHJvdmlkZXIsCisrICAgICAgICAgICAgICAgIEd0ay5TVFlMRV9QUk9WSURFUl9QUklPUklU WV9BUFBMSUNBVElPTik7CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9jYW5kaWRh dGVhcmVhLnZhbGEgYi91aS9ndGszL2NhbmRpZGF0ZWFyZWEudmFsYQoraW5kZXggZTE2MmE5NjAu LmY1OTBjZjNhIDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9jYW5kaWRhdGVhcmVhLnZhbGEKKysrKyBi L3VpL2d0azMvY2FuZGlkYXRlYXJlYS52YWxhCitAQCAtMjEsMTA4ICsyMSw2IEBACisgICogVVNB CisgICovCisgCistY2xhc3MgVGhlbWVkUkdCQSB7CistICAgIHB1YmxpYyBHZGsuUkdCQSAqbm9y bWFsX2ZnIHsgZ2V0OyBzZXQ7IH0KKy0gICAgcHVibGljIEdkay5SR0JBICpub3JtYWxfYmcgeyBn ZXQ7IHNldDsgfQorLSAgICBwdWJsaWMgR2RrLlJHQkEgKnNlbGVjdGVkX2ZnIHsgZ2V0OyBzZXQ7 IH0KKy0gICAgcHVibGljIEdkay5SR0JBICpzZWxlY3RlZF9iZyB7IGdldDsgc2V0OyB9CistCist ICAgIHByaXZhdGUgR3RrLlN0eWxlQ29udGV4dCBtX3N0eWxlX2NvbnRleHQ7CistCistICAgIHB1 YmxpYyBUaGVtZWRSR0JBKEd0ay5XaWRnZXQgd2lkZ2V0KSB7CistICAgICAgICB0aGlzLm5vcm1h bF9mZyA9IG51bGw7CistICAgICAgICB0aGlzLm5vcm1hbF9iZyA9IG51bGw7CistICAgICAgICB0 aGlzLnNlbGVjdGVkX2ZnID0gbnVsbDsKKy0gICAgICAgIHRoaXMuc2VsZWN0ZWRfYmcgPSBudWxs OworLQorLSAgICAgICAgLyogVXNlIHRoZSBjb2xvciBvZiBHdGsuVGV4dFZpZXcgaW5zdGVhZCBv ZiBHdGsuTGFiZWwKKy0gICAgICAgICAqIGJlY2F1c2UgdGhlIHNlbGVjdGVkIGxhYmVsICJjb2xv ciIgaXMgbm90IGNvbmZpZ3VyZWQKKy0gICAgICAgICAqIGluICJBZHdhaXRhIiB0aGVtZSBhbmQg dGhlIHNlbGVjdGVkIGxhYmVsICJiYWNrZ3JvdW5kLWNvbG9yIgorLSAgICAgICAgICogaXMgbm90 IGNvbmZpZ3VyZWQgaW4gIk1haWEiIHRoZW1lLgorLSAgICAgICAgICogaHR0cHM6Ly9naXRodWIu Y29tL2lidXMvaWJ1cy9pc3N1ZXMvMTg3MQorLSAgICAgICAgICovCistICAgICAgICBHdGsuV2lk Z2V0UGF0aCB3aWRnZXRfcGF0aCA9IG5ldyBHdGsuV2lkZ2V0UGF0aCgpOworLSAgICAgICAgd2lk Z2V0X3BhdGguYXBwZW5kX3R5cGUodHlwZW9mKEd0ay5UZXh0VmlldykpOworLSAgICAgICAgbV9z dHlsZV9jb250ZXh0ID0gbmV3IEd0ay5TdHlsZUNvbnRleHQoKTsKKy0gICAgICAgIG1fc3R5bGVf Y29udGV4dC5zZXRfcGF0aCh3aWRnZXRfcGF0aCk7CistICAgICAgICBtX3N0eWxlX2NvbnRleHQu YWRkX2NsYXNzKEd0ay5TVFlMRV9DTEFTU19WSUVXKTsKKy0KKy0gICAgICAgIC8qICItZ3RrLXNl Y29uZGFyeS1jYXJldC1jb2xvciIgdmFsdWUgaXMgZGlmZmVyZW50CistICAgICAgICAgKiBpZiB0 aGUgcGFyZW50IHdpZGdldCBpcyBzZXQgaW4gIk1lbnRhIiB0aGVtZS4KKy0gICAgICAgICAqLwor LSAgICAgICAgbV9zdHlsZV9jb250ZXh0LnNldF9wYXJlbnQod2lkZ2V0LmdldF9zdHlsZV9jb250 ZXh0KCkpOworLQorLSAgICAgICAgZ2V0X3JnYmEoKTsKKy0KKy0gICAgICAgIG1fc3R5bGVfY29u dGV4dC5jaGFuZ2VkLmNvbm5lY3QoKCkgPT4geyBnZXRfcmdiYSgpOyB9KTsKKy0gICAgfQorLQor LSAgICB+VGhlbWVkUkdCQSgpIHsKKy0gICAgICAgIHJlc2V0X3JnYmEoKTsKKy0gICAgfQorLQor LSAgICBwcml2YXRlIHZvaWQgcmVzZXRfcmdiYSgpIHsKKy0gICAgICAgIGlmICh0aGlzLm5vcm1h bF9mZyAhPSBudWxsKSB7CistICAgICAgICAgICAgdGhpcy5ub3JtYWxfZmcuZnJlZSgpOworLSAg ICAgICAgICAgIHRoaXMubm9ybWFsX2ZnID0gbnVsbDsKKy0gICAgICAgIH0KKy0gICAgICAgIGlm ICh0aGlzLm5vcm1hbF9iZyAhPSBudWxsKSB7CistICAgICAgICAgICAgdGhpcy5ub3JtYWxfYmcu ZnJlZSgpOworLSAgICAgICAgICAgIHRoaXMubm9ybWFsX2JnID0gbnVsbDsKKy0gICAgICAgIH0K Ky0gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkX2ZnICE9IG51bGwpIHsKKy0gICAgICAgICAgICB0 aGlzLnNlbGVjdGVkX2ZnLmZyZWUoKTsKKy0gICAgICAgICAgICB0aGlzLnNlbGVjdGVkX2ZnID0g bnVsbDsKKy0gICAgICAgIH0KKy0gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkX2JnICE9IG51bGwp IHsKKy0gICAgICAgICAgICB0aGlzLnNlbGVjdGVkX2JnLmZyZWUoKTsKKy0gICAgICAgICAgICB0 aGlzLnNlbGVjdGVkX2JnID0gbnVsbDsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICBwcml2 YXRlIHZvaWQgZ2V0X3JnYmEoKSB7CistICAgICAgICByZXNldF9yZ2JhKCk7CistICAgICAgICBH ZGsuUkdCQSAqbm9ybWFsX2ZnID0gbnVsbDsKKy0gICAgICAgIEdkay5SR0JBICpub3JtYWxfYmcg PSBudWxsOworLSAgICAgICAgR2RrLlJHQkEgKnNlbGVjdGVkX2ZnID0gbnVsbDsKKy0gICAgICAg IEdkay5SR0JBICpzZWxlY3RlZF9iZyA9IG51bGw7CistICAgICAgICBtX3N0eWxlX2NvbnRleHQu Z2V0KEd0ay5TdGF0ZUZsYWdzLk5PUk1BTCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ImNvbG9yIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG5vcm1hbF9mZyk7Cist ICAgICAgICBtX3N0eWxlX2NvbnRleHQuZ2V0KEd0ay5TdGF0ZUZsYWdzLlNFTEVDVEVELAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvdXQgc2VsZWN0ZWRfZmcpOworLQorLSAgICAgICAgc3RyaW5nIGJnX3Byb3AgPSAi YmFja2dyb3VuZC1jb2xvciI7CistICAgICAgICBtX3N0eWxlX2NvbnRleHQuZ2V0KEd0ay5TdGF0 ZUZsYWdzLk5PUk1BTCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdfcHJvcCwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG5vcm1hbF9iZyk7CistICAgICAgICBtX3N0 eWxlX2NvbnRleHQuZ2V0KEd0ay5TdGF0ZUZsYWdzLlNFTEVDVEVELAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBiZ19wcm9wLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQg c2VsZWN0ZWRfYmcpOworLSAgICAgICAgaWYgKG5vcm1hbF9iZy5yZWQgICA9PSBzZWxlY3RlZF9i Zy5yZWQgJiYKKy0gICAgICAgICAgICBub3JtYWxfYmcuZ3JlZW4gPT0gc2VsZWN0ZWRfYmcuZ3Jl ZW4gJiYKKy0gICAgICAgICAgICBub3JtYWxfYmcuYmx1ZSAgPT0gc2VsZWN0ZWRfYmcuYmx1ZSAm JgorLSAgICAgICAgICAgIG5vcm1hbF9iZy5hbHBoYSA9PSBzZWxlY3RlZF9iZy5hbHBoYSkgewor LSAgICAgICAgICAgIG5vcm1hbF9iZy5mcmVlKCk7CistICAgICAgICAgICAgbm9ybWFsX2JnID0g bnVsbDsKKy0gICAgICAgICAgICBub3JtYWxfYmcuZnJlZSgpOworLSAgICAgICAgICAgIG5vcm1h bF9iZyA9IG51bGw7CistICAgICAgICAgICAgYmdfcHJvcCA9ICItZ3RrLXNlY29uZGFyeS1jYXJl dC1jb2xvciI7CistICAgICAgICAgICAgbV9zdHlsZV9jb250ZXh0LmdldChHdGsuU3RhdGVGbGFn cy5OT1JNQUwsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZ19wcm9wLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG5vcm1hbF9iZyk7CistICAgICAgICAg ICAgbV9zdHlsZV9jb250ZXh0LmdldChHdGsuU3RhdGVGbGFncy5TRUxFQ1RFRCwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJnX3Byb3AsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvdXQgc2VsZWN0ZWRfYmcpOworLSAgICAgICAgfQorLSAgICAgICAgdGhpcy5u b3JtYWxfZmcgICA9IG5vcm1hbF9mZzsKKy0gICAgICAgIHRoaXMubm9ybWFsX2JnICAgPSBub3Jt YWxfYmc7CistICAgICAgICB0aGlzLnNlbGVjdGVkX2ZnID0gc2VsZWN0ZWRfZmc7CistICAgICAg ICB0aGlzLnNlbGVjdGVkX2JnID0gc2VsZWN0ZWRfYmc7CistICAgIH0KKy19CistCisgY2xhc3Mg Q2FuZGlkYXRlQXJlYSA6IEd0ay5Cb3ggeworICAgICBwcml2YXRlIGJvb2wgbV92ZXJ0aWNhbDsK KyAgICAgcHJpdmF0ZSBHdGsuTGFiZWxbXSBtX2xhYmVsczsKK2RpZmYgLS1naXQgYS91aS9ndGsz L2V4dGVuc2lvbi52YWxhIGIvdWkvZ3RrMy9leHRlbnNpb24udmFsYQorbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAwLi5hMTcwMjgwYgorLS0tIC9kZXYvbnVsbAorKysrIGIvdWkv Z3RrMy9leHRlbnNpb24udmFsYQorQEAgLTAsMCArMSwxMjQgQEAKKysvKiB2aW06c2V0IGV0IHN0 cz00IHN3PTQ6CisrICoKKysgKiBpYnVzIC0gVGhlIElucHV0IEJ1cworKyAqCisrICogQ29weXJp Z2h0KGMpIDIwMTggUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CisrICogQ29w eXJpZ2h0KGMpIDIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ CisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICog VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5z ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEKKysgKiBVU0EKKysgKi8KKysKKytjbGFzcyBFeHRl bnNpb25HdGsgeworKyAgICBwcml2YXRlIElCdXMuQnVzIG1fYnVzOworKyAgICBwcml2YXRlIFBh bmVsQmluZGluZyBtX3BhbmVsOworKworKyAgICBwdWJsaWMgRXh0ZW5zaW9uR3RrKHN0cmluZ1td IGFyZ3YpIHsKKysgICAgICAgIEdMaWIuSW50bC5iaW5kdGV4dGRvbWFpbihDb25maWcuR0VUVEVY VF9QQUNLQUdFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZy5HTElC X0xPQ0FMRV9ESVIpOworKyAgICAgICAgR0xpYi5JbnRsLmJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0 KENvbmZpZy5HRVRURVhUX1BBQ0tBR0UsICJVVEYtOCIpOworKyAgICAgICAgSUJ1cy5pbml0KCk7 CisrICAgICAgICBHdGsuaW5pdChyZWYgYXJndik7CisrCisrICAgICAgICBtX2J1cyA9IG5ldyBJ QnVzLkJ1cygpOworKworKyAgICAgICAgbV9idXMuY29ubmVjdGVkLmNvbm5lY3QoYnVzX2Nvbm5l Y3RlZCk7CisrICAgICAgICBtX2J1cy5kaXNjb25uZWN0ZWQuY29ubmVjdChidXNfZGlzY29ubmVj dGVkKTsKKysKKysgICAgICAgIGlmIChtX2J1cy5pc19jb25uZWN0ZWQoKSkgeworKyAgICAgICAg ICAgIGluaXQoKTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBwcml2YXRlIHZvaWQgaW5p dCgpIHsKKysgICAgICAgIERCdXNDb25uZWN0aW9uIGNvbm5lY3Rpb24gPSBtX2J1cy5nZXRfY29u bmVjdGlvbigpOworKyAgICAgICAgY29ubmVjdGlvbi5zaWduYWxfc3Vic2NyaWJlKCJvcmcuZnJl ZWRlc2t0b3AuREJ1cyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9y Zy5mcmVlZGVza3RvcC5EQnVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiTmFtZUFjcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi L29yZy9mcmVlZGVza3RvcC9EQnVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJQnVzLlNFUlZJQ0VfUEFORUxfRVhURU5TSU9OLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERCdXNTaWduYWxGbGFncy5OT05FLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJ1c19uYW1lX2FjcXVpcmVkX2NiKTsKKysgICAgICAgIGNvbm5l Y3Rpb24uc2lnbmFsX3N1YnNjcmliZSgib3JnLmZyZWVkZXNrdG9wLkRCdXMiLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cyIsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVMb3N0IiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9EQnVzIiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzLlNFUlZJQ0VfUEFORUxfRVhURU5T SU9OLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCdXNTaWduYWxGbGFn cy5OT05FLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c19uYW1lX2xv c3RfY2IpOworKyAgICAgICAgdmFyIGZsYWdzID0KKysgICAgICAgICAgICAgICAgSUJ1cy5CdXNO YW1lRmxhZy5BTExPV19SRVBMQUNFTUVOVCB8CisrICAgICAgICAgICAgICAgIElCdXMuQnVzTmFt ZUZsYWcuUkVQTEFDRV9FWElTVElORzsKKysgICAgICAgIG1fYnVzLnJlcXVlc3RfbmFtZShJQnVz LlNFUlZJQ0VfUEFORUxfRVhURU5TSU9OLCBmbGFncyk7CisrICAgIH0KKysKKysgICAgcHVibGlj IGludCBydW4oKSB7CisrICAgICAgICBHdGsubWFpbigpOworKyAgICAgICAgcmV0dXJuIDA7Cisr ICAgIH0KKysKKysgICAgcHJpdmF0ZSB2b2lkIGJ1c19uYW1lX2FjcXVpcmVkX2NiKERCdXNDb25u ZWN0aW9uIGNvbm5lY3Rpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJpbmcgc2VuZGVyX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJpbmcgb2JqZWN0X3BhdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJpbmcgaW50ZXJmYWNlX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJpbmcgc2lnbmFsX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWYXJpYW50IHBhcmFtZXRlcnMpIHsKKysgICAgICAgIGRlYnVnKCJz aWduYWxfbmFtZSA9ICVzIiwgc2lnbmFsX25hbWUpOworKyAgICAgICAgbV9wYW5lbCA9IG5ldyBQ YW5lbEJpbmRpbmcobV9idXMpOworKyAgICAgICAgbV9wYW5lbC5sb2FkX3NldHRpbmdzKCk7Cisr ICAgIH0KKysKKysgICAgcHJpdmF0ZSB2b2lkIGJ1c19uYW1lX2xvc3RfY2IoREJ1c0Nvbm5lY3Rp b24gY29ubmVjdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5n IHNlbmRlcl9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcg b2JqZWN0X3BhdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBp bnRlcmZhY2VfbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5n IHNpZ25hbF9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYW50 IHBhcmFtZXRlcnMpIHsKKysgICAgICAgIC8vICJEZXN0cm95IiBkYnVzIG1ldGhvZCB3YXMgY2Fs bGVkIGJlZm9yZSB0aGlzIGNhbGxiYWNrIGlzIGNhbGxlZC4KKysgICAgICAgIC8vICJEZXN0cm95 IiBkYnVzIG1ldGhvZCAtPiBpYnVzX3NlcnZpY2VfZGVzdHJveSgpCisrICAgICAgICAvLyAtPiBn X2RidXNfY29ubmVjdGlvbl91bnJlZ2lzdGVyX29iamVjdCgpCisrICAgICAgICAvLyAtPiBnX29i amVjdF91bnJlZihtX3BhbmVsKSB3aWxsIGJlIGNhbGxlZCBsYXRlciB3aXRoIGFuIGlkbGUgbWV0 aG9kLAorKyAgICAgICAgLy8gd2hpY2ggd2FzIGFzc2lnbmVkIGluIHRoZSBhcmd1bWVudHMgb2YK KysgICAgICAgIC8vIGdfZGJ1c19jb25uZWN0aW9uX3JlZ2lzdGVyX29iamVjdCgpCisrICAgICAg ICBkZWJ1Zygic2lnbmFsX25hbWUgPSAlcyIsIHNpZ25hbF9uYW1lKTsKKysKKysgICAgICAgIC8v IHVucmVmIG1fcGFuZWwKKysgICAgICAgIG1fcGFuZWwuZGlzY29ubmVjdF9zaWduYWxzKCk7Cisr ICAgICAgICBtX3BhbmVsID0gbnVsbDsKKysgICAgfQorKworKyAgICBwcml2YXRlIHZvaWQgYnVz X2Rpc2Nvbm5lY3RlZChJQnVzLkJ1cyBidXMpIHsKKysgICAgICAgIGRlYnVnKCJjb25uZWN0aW9u IGlzIGxvc3QuIik7CisrICAgICAgICBHdGsubWFpbl9xdWl0KCk7CisrICAgIH0KKysKKysgICAg cHJpdmF0ZSB2b2lkIGJ1c19jb25uZWN0ZWQoSUJ1cy5CdXMgYnVzKSB7CisrICAgICAgICBpbml0 KCk7CisrICAgIH0KKysKKysgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oc3RyaW5nW10gYXJn dikgeworKyAgICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNn aT9pZD0xMjI2NDY1I2MyMAorKyAgICAgICAgLy8gSW4gL2V0Yy94ZGcvcGxhc21hLXdvcmtzcGFj ZS9lbnYvZ3RrM19zY3JvbGxpbmcuc2gKKysgICAgICAgIC8vIFBsYXNtYSBkZXNrb3Agc2V0cyB0 aGlzIHZhcmlhYmxlIGFuZCBwcmV2ZW50cyBTdXBlci1zcGFjZSwKKysgICAgICAgIC8vIGFuZCBD dHJsLVNoaWZ0LWUgd2hlbiBpYnVzLXVpLWd0azMgcnVucyBhZnRlciB0aGUKKysgICAgICAgIC8v IGRlc2t0b3AgaXMgbGF1bmNoZWQuCisrICAgICAgICBHTGliLkVudmlyb25tZW50LnVuc2V0X3Zh cmlhYmxlKCJHREtfQ09SRV9ERVZJQ0VfRVZFTlRTIik7CisrICAgICAgICAvLyBmb3IgR2RrLlgx MS5nZXRfZGVmYXVsdF94ZGlzcGxheSgpCisrICAgICAgICBHZGsuc2V0X2FsbG93ZWRfYmFja2Vu ZHMoIngxMSIpOworKworKyAgICAgICAgRXh0ZW5zaW9uR3RrIGV4dGVuc2lvbiA9IG5ldyBFeHRl bnNpb25HdGsoYXJndik7CisrICAgICAgICBleHRlbnNpb24ucnVuKCk7CisrICAgIH0KKyt9Citk aWZmIC0tZ2l0IGEvdWkvZ3RrMy9ndGtleHRlbnNpb24ueG1sLmluIGIvdWkvZ3RrMy9ndGtleHRl bnNpb24ueG1sLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmI4MTU3 Yzk3CistLS0gL2Rldi9udWxsCisrKysgYi91aS9ndGszL2d0a2V4dGVuc2lvbi54bWwuaW4KK0BA IC0wLDAgKzEsMTIgQEAKKys8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pgor KzwhLS0gZmlsZW5hbWU6IGd0a2V4dGVuc2lvbi54bWwgLS0+CisrPGNvbXBvbmVudD4KKysJPG5h bWU+b3JnLmZyZWVkZXNrdG9wLklCdXMuUGFuZWwuRXh0ZW5zaW9uPC9uYW1lPgorKwk8ZGVzY3Jp cHRpb24+R3RrIFBhbmVsIEV4dGVuc2lvbiBDb21wb25lbnQ8L2Rlc2NyaXB0aW9uPgorKwk8ZXhl Yz5AbGliZXhlY2RpckAvaWJ1cy1leHRlbnNpb24tZ3RrMzwvZXhlYz4KKysJPHZlcnNpb24+QFZF UlNJT05APC92ZXJzaW9uPgorKwk8YXV0aG9yPlRha2FvIEZ1aml3YXJhICZsdDt0YWthby5mdWpp d2FyYTFAZ21haWwuY29tJmd0OzwvYXV0aG9yPgorKwk8bGljZW5zZT5HUEw8L2xpY2Vuc2U+Cisr CTxob21lcGFnZT5odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3dpa2k8L2hvbWVwYWdlPgor Kwk8dGV4dGRvbWFpbj5pYnVzPC90ZXh0ZG9tYWluPgorKzwvY29tcG9uZW50PgorZGlmZiAtLWdp dCBhL3VpL2d0azMvaWNvbndpZGdldC52YWxhIGIvdWkvZ3RrMy9pY29ud2lkZ2V0LnZhbGEKK2lu ZGV4IGQzMjI2NTBjLi4zNjY0M2M3NCAxMDA2NDQKKy0tLSBhL3VpL2d0azMvaWNvbndpZGdldC52 YWxhCisrKysgYi91aS9ndGszL2ljb253aWRnZXQudmFsYQorQEAgLTMsNiArMyw3IEBACisgICog aWJ1cyAtIFRoZSBJbnB1dCBCdXMKKyAgKgorICAqIENvcHlyaWdodChjKSAyMDExLTIwMTQgUGVu ZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+CisrICogQ29weXJpZ2h0KGMpIDIwMTgg VGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisgICoKKyAgKiBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y CisgICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYworQEAgLTIwLDYgKzIxLDEwOCBAQAorICAqIFVTQQorICAqLworIAorK2NsYXNzIFRo ZW1lZFJHQkEgeworKyAgICBwdWJsaWMgR2RrLlJHQkEgKm5vcm1hbF9mZyB7IGdldDsgc2V0OyB9 CisrICAgIHB1YmxpYyBHZGsuUkdCQSAqbm9ybWFsX2JnIHsgZ2V0OyBzZXQ7IH0KKysgICAgcHVi bGljIEdkay5SR0JBICpzZWxlY3RlZF9mZyB7IGdldDsgc2V0OyB9CisrICAgIHB1YmxpYyBHZGsu UkdCQSAqc2VsZWN0ZWRfYmcgeyBnZXQ7IHNldDsgfQorKworKyAgICBwcml2YXRlIEd0ay5TdHls ZUNvbnRleHQgbV9zdHlsZV9jb250ZXh0OworKworKyAgICBwdWJsaWMgVGhlbWVkUkdCQShHdGsu V2lkZ2V0IHdpZGdldCkgeworKyAgICAgICAgdGhpcy5ub3JtYWxfZmcgPSBudWxsOworKyAgICAg ICAgdGhpcy5ub3JtYWxfYmcgPSBudWxsOworKyAgICAgICAgdGhpcy5zZWxlY3RlZF9mZyA9IG51 bGw7CisrICAgICAgICB0aGlzLnNlbGVjdGVkX2JnID0gbnVsbDsKKysKKysgICAgICAgIC8qIFVz ZSB0aGUgY29sb3Igb2YgR3RrLlRleHRWaWV3IGluc3RlYWQgb2YgR3RrLkxhYmVsCisrICAgICAg ICAgKiBiZWNhdXNlIHRoZSBzZWxlY3RlZCBsYWJlbCAiY29sb3IiIGlzIG5vdCBjb25maWd1cmVk CisrICAgICAgICAgKiBpbiAiQWR3YWl0YSIgdGhlbWUgYW5kIHRoZSBzZWxlY3RlZCBsYWJlbCAi YmFja2dyb3VuZC1jb2xvciIKKysgICAgICAgICAqIGlzIG5vdCBjb25maWd1cmVkIGluICJNYWlh IiB0aGVtZS4KKysgICAgICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVz LzE4NzEKKysgICAgICAgICAqLworKyAgICAgICAgR3RrLldpZGdldFBhdGggd2lkZ2V0X3BhdGgg PSBuZXcgR3RrLldpZGdldFBhdGgoKTsKKysgICAgICAgIHdpZGdldF9wYXRoLmFwcGVuZF90eXBl KHR5cGVvZihHdGsuVGV4dFZpZXcpKTsKKysgICAgICAgIG1fc3R5bGVfY29udGV4dCA9IG5ldyBH dGsuU3R5bGVDb250ZXh0KCk7CisrICAgICAgICBtX3N0eWxlX2NvbnRleHQuc2V0X3BhdGgod2lk Z2V0X3BhdGgpOworKyAgICAgICAgbV9zdHlsZV9jb250ZXh0LmFkZF9jbGFzcyhHdGsuU1RZTEVf Q0xBU1NfVklFVyk7CisrCisrICAgICAgICAvKiAiLWd0ay1zZWNvbmRhcnktY2FyZXQtY29sb3Ii IHZhbHVlIGlzIGRpZmZlcmVudAorKyAgICAgICAgICogaWYgdGhlIHBhcmVudCB3aWRnZXQgaXMg c2V0IGluICJNZW50YSIgdGhlbWUuCisrICAgICAgICAgKi8KKysgICAgICAgIG1fc3R5bGVfY29u dGV4dC5zZXRfcGFyZW50KHdpZGdldC5nZXRfc3R5bGVfY29udGV4dCgpKTsKKysKKysgICAgICAg IGdldF9yZ2JhKCk7CisrCisrICAgICAgICBtX3N0eWxlX2NvbnRleHQuY2hhbmdlZC5jb25uZWN0 KCgpID0+IHsgZ2V0X3JnYmEoKTsgfSk7CisrICAgIH0KKysKKysgICAgflRoZW1lZFJHQkEoKSB7 CisrICAgICAgICByZXNldF9yZ2JhKCk7CisrICAgIH0KKysKKysgICAgcHJpdmF0ZSB2b2lkIHJl c2V0X3JnYmEoKSB7CisrICAgICAgICBpZiAodGhpcy5ub3JtYWxfZmcgIT0gbnVsbCkgeworKyAg ICAgICAgICAgIHRoaXMubm9ybWFsX2ZnLmZyZWUoKTsKKysgICAgICAgICAgICB0aGlzLm5vcm1h bF9mZyA9IG51bGw7CisrICAgICAgICB9CisrICAgICAgICBpZiAodGhpcy5ub3JtYWxfYmcgIT0g bnVsbCkgeworKyAgICAgICAgICAgIHRoaXMubm9ybWFsX2JnLmZyZWUoKTsKKysgICAgICAgICAg ICB0aGlzLm5vcm1hbF9iZyA9IG51bGw7CisrICAgICAgICB9CisrICAgICAgICBpZiAodGhpcy5z ZWxlY3RlZF9mZyAhPSBudWxsKSB7CisrICAgICAgICAgICAgdGhpcy5zZWxlY3RlZF9mZy5mcmVl KCk7CisrICAgICAgICAgICAgdGhpcy5zZWxlY3RlZF9mZyA9IG51bGw7CisrICAgICAgICB9Cisr ICAgICAgICBpZiAodGhpcy5zZWxlY3RlZF9iZyAhPSBudWxsKSB7CisrICAgICAgICAgICAgdGhp cy5zZWxlY3RlZF9iZy5mcmVlKCk7CisrICAgICAgICAgICAgdGhpcy5zZWxlY3RlZF9iZyA9IG51 bGw7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcHJpdmF0ZSB2b2lkIGdldF9yZ2JhKCkg eworKyAgICAgICAgcmVzZXRfcmdiYSgpOworKyAgICAgICAgR2RrLlJHQkEgKm5vcm1hbF9mZyA9 IG51bGw7CisrICAgICAgICBHZGsuUkdCQSAqbm9ybWFsX2JnID0gbnVsbDsKKysgICAgICAgIEdk ay5SR0JBICpzZWxlY3RlZF9mZyA9IG51bGw7CisrICAgICAgICBHZGsuUkdCQSAqc2VsZWN0ZWRf YmcgPSBudWxsOworKyAgICAgICAgbV9zdHlsZV9jb250ZXh0LmdldChHdGsuU3RhdGVGbGFncy5O T1JNQUwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG91dCBub3JtYWxfZmcpOworKyAgICAgICAgbV9zdHlsZV9jb250 ZXh0LmdldChHdGsuU3RhdGVGbGFncy5TRUxFQ1RFRCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImNvbG9yIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IHNlbGVjdGVk X2ZnKTsKKysKKysgICAgICAgIHN0cmluZyBiZ19wcm9wID0gImJhY2tncm91bmQtY29sb3IiOwor KyAgICAgICAgbV9zdHlsZV9jb250ZXh0LmdldChHdGsuU3RhdGVGbGFncy5OT1JNQUwsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJnX3Byb3AsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dCBub3JtYWxfYmcpOworKyAgICAgICAgbV9zdHlsZV9jb250ZXh0LmdldChHdGsu U3RhdGVGbGFncy5TRUxFQ1RFRCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdfcHJv cCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IHNlbGVjdGVkX2JnKTsKKysgICAg ICAgIGlmIChub3JtYWxfYmcucmVkICAgPT0gc2VsZWN0ZWRfYmcucmVkICYmCisrICAgICAgICAg ICAgbm9ybWFsX2JnLmdyZWVuID09IHNlbGVjdGVkX2JnLmdyZWVuICYmCisrICAgICAgICAgICAg bm9ybWFsX2JnLmJsdWUgID09IHNlbGVjdGVkX2JnLmJsdWUgJiYKKysgICAgICAgICAgICBub3Jt YWxfYmcuYWxwaGEgPT0gc2VsZWN0ZWRfYmcuYWxwaGEpIHsKKysgICAgICAgICAgICBub3JtYWxf YmcuZnJlZSgpOworKyAgICAgICAgICAgIG5vcm1hbF9iZyA9IG51bGw7CisrICAgICAgICAgICAg bm9ybWFsX2JnLmZyZWUoKTsKKysgICAgICAgICAgICBub3JtYWxfYmcgPSBudWxsOworKyAgICAg ICAgICAgIGJnX3Byb3AgPSAiLWd0ay1zZWNvbmRhcnktY2FyZXQtY29sb3IiOworKyAgICAgICAg ICAgIG1fc3R5bGVfY29udGV4dC5nZXQoR3RrLlN0YXRlRmxhZ3MuTk9STUFMLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmdfcHJvcCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG91dCBub3JtYWxfYmcpOworKyAgICAgICAgICAgIG1fc3R5bGVfY29udGV4dC5n ZXQoR3RrLlN0YXRlRmxhZ3MuU0VMRUNURUQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZ19wcm9wLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IHNlbGVj dGVkX2JnKTsKKysgICAgICAgIH0KKysgICAgICAgIHRoaXMubm9ybWFsX2ZnICAgPSBub3JtYWxf Zmc7CisrICAgICAgICB0aGlzLm5vcm1hbF9iZyAgID0gbm9ybWFsX2JnOworKyAgICAgICAgdGhp cy5zZWxlY3RlZF9mZyA9IHNlbGVjdGVkX2ZnOworKyAgICAgICAgdGhpcy5zZWxlY3RlZF9iZyA9 IHNlbGVjdGVkX2JnOworKyAgICB9CisrfQorKworIGNsYXNzIEljb25XaWRnZXQ6IEd0ay5JbWFn ZSB7CisgICAgIC8qKgorICAgICAgKiBJY29uV2lkZ2V0OgorZGlmZiAtLWdpdCBhL3VpL2d0azMv cGFuZWwudmFsYSBiL3VpL2d0azMvcGFuZWwudmFsYQoraW5kZXggYmNiM2VkNzUuLmQ5MjM4Yzg5 IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9wYW5lbC52YWxhCisrKysgYi91aS9ndGszL3BhbmVsLnZh bGEKK0BAIC0yMiwzOSArMjIsMTYgQEAKKyAgKi8KKyAKKyBjbGFzcyBQYW5lbCA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKKy0gICAgcHJpdmF0ZSBjbGFzcyBLZXliaW5kaW5nIHsKKy0gICAgICAgIHB1 YmxpYyBLZXliaW5kaW5nKHVpbnQga2V5c3ltLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg R2RrLk1vZGlmaWVyVHlwZSBtb2RpZmllcnMsCistICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIHJldmVyc2UsCistICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudEZ1bmNUeXBl IGZ0eXBlKSB7CistICAgICAgICAgICAgdGhpcy5rZXlzeW0gPSBrZXlzeW07CistICAgICAgICAg ICAgdGhpcy5tb2RpZmllcnMgPSBtb2RpZmllcnM7CistICAgICAgICAgICAgdGhpcy5yZXZlcnNl ID0gcmV2ZXJzZTsKKy0gICAgICAgICAgICB0aGlzLmZ0eXBlID0gZnR5cGU7CistICAgICAgICB9 CistCistICAgICAgICBwdWJsaWMgdWludCBrZXlzeW0geyBnZXQ7IHNldDsgfQorLSAgICAgICAg cHVibGljIEdkay5Nb2RpZmllclR5cGUgbW9kaWZpZXJzIHsgZ2V0OyBzZXQ7IH0KKy0gICAgICAg IHB1YmxpYyBib29sIHJldmVyc2UgeyBnZXQ7IHNldDsgfQorLSAgICAgICAgcHVibGljIEtleUV2 ZW50RnVuY1R5cGUgZnR5cGUgeyBnZXQ7IHNldDsgfQorLSAgICB9CisgCisgICAgIHByaXZhdGUg ZW51bSBJY29uVHlwZSB7CisgICAgICAgICBTVEFUVVNfSUNPTiwKKyAgICAgICAgIElORElDQVRP UiwKKyAgICAgfQorIAorLSAgICBwcml2YXRlIGVudW0gS2V5RXZlbnRGdW5jVHlwZSB7CistICAg ICAgICBBTlksCistICAgICAgICBJTUVfU1dJVENIRVIsCistICAgICAgICBFTU9KSV9UWVBJTkcs CistICAgIH0KKy0KKyAgICAgcHJpdmF0ZSBJQnVzLkJ1cyBtX2J1czsKKyAgICAgcHJpdmF0ZSBH TGliLlNldHRpbmdzIG1fc2V0dGluZ3NfZ2VuZXJhbCA9IG51bGw7CisgICAgIHByaXZhdGUgR0xp Yi5TZXR0aW5ncyBtX3NldHRpbmdzX2hvdGtleSA9IG51bGw7CisgICAgIHByaXZhdGUgR0xpYi5T ZXR0aW5ncyBtX3NldHRpbmdzX3BhbmVsID0gbnVsbDsKKy0gICAgcHJpdmF0ZSBHTGliLlNldHRp bmdzIG1fc2V0dGluZ3NfZW1vamkgPSBudWxsOworICAgICBwcml2YXRlIEljb25UeXBlIG1faWNv bl90eXBlID0gSWNvblR5cGUuU1RBVFVTX0lDT047CisgICAgIHByaXZhdGUgSW5kaWNhdG9yIG1f aW5kaWNhdG9yOworICNpZiBJTkRJQ0FUT1IKK0BAIC03MywxMCArNTAsNiBAQCBjbGFzcyBQYW5l bCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgcHJpdmF0ZSBDYW5kaWRhdGVQYW5lbCBtX2Nh bmRpZGF0ZV9wYW5lbDsKKyAgICAgcHJpdmF0ZSBTd2l0Y2hlciBtX3N3aXRjaGVyOworICAgICBw cml2YXRlIHVpbnQgbV9zd2l0Y2hlcl9mb2N1c19zZXRfZW5naW5lX2lkOworLSAgICBwcml2YXRl IElCdXNFbW9qaWVyPyBtX2Vtb2ppZXI7CistICAgIHByaXZhdGUgdWludCBtX2Vtb2ppZXJfc2V0 X2Vtb2ppX2xhbmdfaWQ7CistICAgIHByaXZhdGUgdWludCBtX2Vtb2ppZXJfZm9jdXNfY29tbWl0 X3RleHRfaWQ7CistICAgIHByaXZhdGUgc3RyaW5nW10gbV9lbW9qaWVyX2Zhdm9yaXRlcyA9IHt9 OworICAgICBwcml2YXRlIFByb3BlcnR5TWFuYWdlciBtX3Byb3BlcnR5X21hbmFnZXI7CisgICAg IHByaXZhdGUgUHJvcGVydHlQYW5lbCBtX3Byb3BlcnR5X3BhbmVsOworICAgICBwcml2YXRlIEdM aWIuUGlkIG1fc2V0dXBfcGlkID0gMDsKK0BAIC0xMDgsNyArODEsOCBAQCBjbGFzcyBQYW5lbCA6 IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgcHJpdmF0ZSB1bG9uZyBtX2FjdGl2YXRlX2lkOwor ICAgICBwcml2YXRlIHVsb25nIG1fcmVnaXN0ZXJlZF9zdGF0dXNfbm90aWZpZXJfaXRlbV9pZDsK KyAKKy0gICAgcHJpdmF0ZSBHTGliLkxpc3Q8S2V5YmluZGluZz4gbV9rZXliaW5kaW5ncyA9IG5l dyBHTGliLkxpc3Q8S2V5YmluZGluZz4oKTsKKysgICAgcHJpdmF0ZSBHTGliLkxpc3Q8QmluZGlu Z0NvbW1vbi5LZXliaW5kaW5nPiBtX2tleWJpbmRpbmdzID0KKysgICAgICAgICAgICBuZXcgR0xp Yi5MaXN0PEJpbmRpbmdDb21tb24uS2V5YmluZGluZz4oKTsKKyAKKyAgICAgcHVibGljIFBhbmVs KElCdXMuQnVzIGJ1cykgeworICAgICAgICAgR0xpYi5hc3NlcnQoYnVzLmlzX2Nvbm5lY3RlZCgp KTsKK0BAIC0xNDcsOCArMTIxLDYgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7 CisgICAgICAgICAgICAgbV9zd2l0Y2hlci5zZXRfcG9wdXBfZGVsYXlfdGltZSgodWludCkgbV9z d2l0Y2hlcl9kZWxheV90aW1lKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGJpbmRfZW1vamlf c2hvcnRjdXQoKTsKKy0KKyAgICAgICAgIG1fcHJvcGVydHlfbWFuYWdlciA9IG5ldyBQcm9wZXJ0 eU1hbmFnZXIoKTsKKyAgICAgICAgIG1fcHJvcGVydHlfbWFuYWdlci5wcm9wZXJ0eV9hY3RpdmF0 ZS5jb25uZWN0KCh3LCBrLCBzKSA9PiB7CisgICAgICAgICAgICAgcHJvcGVydHlfYWN0aXZhdGUo aywgcyk7CitAQCAtMTY4LDcgKzE0MCw5IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZp Y2UgeworICAgICAgICAgaWYgKG1faW5kaWNhdG9yICE9IG51bGwpCisgICAgICAgICAgICAgbV9p bmRpY2F0b3IudW5yZWdpc3Rlcl9jb25uZWN0aW9uKCk7CisgI2VuZGlmCistICAgICAgICB1bmJp bmRfc3dpdGNoX3Nob3J0Y3V0KEtleUV2ZW50RnVuY1R5cGUuQU5ZKTsKKysgICAgICAgIEJpbmRp bmdDb21tb24udW5iaW5kX3N3aXRjaF9zaG9ydGN1dCgKKysgICAgICAgICAgICAgICAgQmluZGlu Z0NvbW1vbi5LZXlFdmVudEZ1bmNUeXBlLkFOWSwgbV9rZXliaW5kaW5ncyk7CisrICAgICAgICBt X2tleWJpbmRpbmdzID0gbnVsbDsKKyAgICAgfQorIAorICAgICBwcml2YXRlIHZvaWQgaW5pdF9z ZXR0aW5ncygpIHsKK0BAIC0xNzYsNyArMTUwLDYgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVs U2VydmljZSB7CisgICAgICAgICBtX3NldHRpbmdzX2hvdGtleSA9CisgICAgICAgICAgICAgICAg IG5ldyBHTGliLlNldHRpbmdzKCJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5nZW5lcmFsLmhvdGtleSIp OworICAgICAgICAgbV9zZXR0aW5nc19wYW5lbCA9IG5ldyBHTGliLlNldHRpbmdzKCJvcmcuZnJl ZWRlc2t0b3AuaWJ1cy5wYW5lbCIpOworLSAgICAgICAgbV9zZXR0aW5nc19lbW9qaSA9IG5ldyBH TGliLlNldHRpbmdzKCJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5wYW5lbC5lbW9qaSIpOworIAorICAg ICAgICAgbV9zZXR0aW5nc19nZW5lcmFsLmNoYW5nZWRbInByZWxvYWQtZW5naW5lcyJdLmNvbm5l Y3QoKGtleSkgPT4geworICAgICAgICAgICAgICAgICB1cGRhdGVfZW5naW5lcyhtX3NldHRpbmdz X2dlbmVyYWwuZ2V0X3N0cnYoa2V5KSwKK0BAIC0yMDUsMTYgKzE3OCwyMyBAQCBjbGFzcyBQYW5l bCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgIH0pOworIAorICAgICAgICAgbV9zZXR0 aW5nc19ob3RrZXkuY2hhbmdlZFsidHJpZ2dlcnMiXS5jb25uZWN0KChrZXkpID0+IHsKKy0gICAg ICAgICAgICAgICAgdW5iaW5kX3N3aXRjaF9zaG9ydGN1dChLZXlFdmVudEZ1bmNUeXBlLklNRV9T V0lUQ0hFUik7CisrICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24udW5iaW5kX3N3aXRjaF9z aG9ydGN1dCgKKysgICAgICAgICAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLktleUV2ZW50 RnVuY1R5cGUuSU1FX1NXSVRDSEVSLAorKyAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ymlu ZGluZ3MpOworKyAgICAgICAgICAgICAgICBtX2tleWJpbmRpbmdzID0gbnVsbDsKKyAgICAgICAg ICAgICAgICAgYmluZF9zd2l0Y2hfc2hvcnRjdXQoKTsKKyAgICAgICAgIH0pOworIAorICAgICAg ICAgbV9zZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJjdXN0b20tZm9udCJdLmNvbm5lY3QoKGtleSkg PT4geworLSAgICAgICAgICAgICAgICBzZXRfY3VzdG9tX2ZvbnQoKTsKKysgICAgICAgICAgICAg ICAgQmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX2ZvbnQobV9zZXR0aW5nc19wYW5lbCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3NzX3Byb3ZpZGVy KTsKKyAgICAgICAgIH0pOworIAorICAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJ1 c2UtY3VzdG9tLWZvbnQiXS5jb25uZWN0KChrZXkpID0+IHsKKy0gICAgICAgICAgICAgICAgc2V0 X2N1c3RvbV9mb250KCk7CisrICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3Rv bV9mb250KG1fc2V0dGluZ3NfcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG51bGwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlZiBtX2Nzc19wcm92aWRlcik7CisgICAgICAgICB9KTsKKyAKKyAgICAg ICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hhbmdlZFsic2hvdy1pY29uLW9uLXN5c3RyYXkiXS5jb25u ZWN0KChrZXkpID0+IHsKK0BAIC0yNDUsMzkgKzIyNSw2IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5Q YW5lbFNlcnZpY2UgeworICAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJwcm9wZXJ0 eS1pY29uLWRlbGF5LXRpbWUiXS5jb25uZWN0KChrZXkpID0+IHsKKyAgICAgICAgICAgICAgICAg c2V0X3Byb3BlcnR5X2ljb25fZGVsYXlfdGltZSgpOworICAgICAgICAgfSk7CistCistICAgICAg ICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImhvdGtleSJdLmNvbm5lY3QoKGtleSkgPT4gewor LSAgICAgICAgICAgICAgICB1bmJpbmRfc3dpdGNoX3Nob3J0Y3V0KEtleUV2ZW50RnVuY1R5cGUu RU1PSklfVFlQSU5HKTsKKy0gICAgICAgICAgICAgICAgYmluZF9lbW9qaV9zaG9ydGN1dCgpOwor LSAgICAgICAgfSk7CistCistICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImZvbnQi XS5jb25uZWN0KChrZXkpID0+IHsKKy0gICAgICAgICAgICAgICAgc2V0X2N1c3RvbV9mb250KCk7 CistICAgICAgICB9KTsKKy0KKy0gICAgICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsiZmF2 b3JpdGVzIl0uY29ubmVjdCgoa2V5KSA9PiB7CistICAgICAgICAgICAgICAgIHNldF9lbW9qaV9m YXZvcml0ZXMoKTsKKy0gICAgICAgIH0pOworLQorLSAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5j aGFuZ2VkWyJmYXZvcml0ZS1hbm5vdGF0aW9ucyJdLmNvbm5lY3QoKGtleSkgPT4geworLSAgICAg ICAgICAgICAgICBzZXRfZW1vamlfZmF2b3JpdGVzKCk7CistICAgICAgICB9KTsKKy0KKy0gICAg ICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsibGFuZyJdLmNvbm5lY3QoKGtleSkgPT4gewor LSAgICAgICAgICAgICAgICBzZXRfZW1vamlfbGFuZygpOworLSAgICAgICAgfSk7CistCistICAg ICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImhhcy1wYXJ0aWFsLW1hdGNoIl0uY29ubmVj dCgoa2V5KSA9PiB7CistICAgICAgICAgICAgICAgIHNldF9lbW9qaV9wYXJ0aWFsX21hdGNoKCk7 CistICAgICAgICB9KTsKKy0KKy0gICAgICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsicGFy dGlhbC1tYXRjaC1sZW5ndGgiXS5jb25uZWN0KChrZXkpID0+IHsKKy0gICAgICAgICAgICAgICAg c2V0X2Vtb2ppX3BhcnRpYWxfbWF0Y2goKTsKKy0gICAgICAgIH0pOworLQorLSAgICAgICAgbV9z ZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJwYXJ0aWFsLW1hdGNoLWNvbmRpdGlvbiJdLmNvbm5lY3Qo KGtleSkgPT4geworLSAgICAgICAgICAgICAgICBzZXRfZW1vamlfcGFydGlhbF9tYXRjaCgpOwor LSAgICAgICAgfSk7CisgICAgIH0KKyAKKyAgICAgcHJpdmF0ZSB2b2lkIHBvcHVwX21lbnVfYXRf YXJlYV93aW5kb3coR3RrLk1lbnUgICAgICAgICAgICAgIG1lbnUsCitAQCAtNDA5LDEyMCArMzU2 LDQwIEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICAgICAgbV9zdGF0 dXNfaWNvbi5zZXRfZnJvbV9pY29uX25hbWUoImlidXMta2V5Ym9hcmQiKTsKKyAgICAgfQorIAor LSAgICBwcml2YXRlIHZvaWQga2V5YmluZGluZ19tYW5hZ2VyX2JpbmQoS2V5YmluZGluZ01hbmFn ZXIga2V5YmluZGluZ19tYW5hZ2VyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RyaW5nPyAgICAgICAgICAgYWNjZWxlcmF0b3IsCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudEZ1bmNUeXBlICBmdHlwZSkgeworLSAg ICAgICAgdWludCBzd2l0Y2hfa2V5c3ltID0gMDsKKy0gICAgICAgIEdkay5Nb2RpZmllclR5cGUg c3dpdGNoX21vZGlmaWVycyA9IDA7CistICAgICAgICBHZGsuTW9kaWZpZXJUeXBlIHJldmVyc2Vf bW9kaWZpZXIgPSBHZGsuTW9kaWZpZXJUeXBlLlNISUZUX01BU0s7CistICAgICAgICBLZXliaW5k aW5nIGtleWJpbmRpbmc7CistCistICAgICAgICBHdGsuYWNjZWxlcmF0b3JfcGFyc2UoYWNjZWxl cmF0b3IsCistICAgICAgICAgICAgICAgIG91dCBzd2l0Y2hfa2V5c3ltLCBvdXQgc3dpdGNoX21v ZGlmaWVycyk7CistCistICAgICAgICAvLyBNYXAgdmlydHVhbCBtb2RpZmllcnMgdG8gKGkuZS4g TW9kMiwgTW9kMywgLi4uKQorLSAgICAgICAgY29uc3QgR2RrLk1vZGlmaWVyVHlwZSBWSVJUVUFM X01PRElGSUVSUyA9ICgKKy0gICAgICAgICAgICAgICAgR2RrLk1vZGlmaWVyVHlwZS5TVVBFUl9N QVNLIHwKKy0gICAgICAgICAgICAgICAgR2RrLk1vZGlmaWVyVHlwZS5IWVBFUl9NQVNLIHwKKy0g ICAgICAgICAgICAgICAgR2RrLk1vZGlmaWVyVHlwZS5NRVRBX01BU0spOworLSAgICAgICAgaWYg KChzd2l0Y2hfbW9kaWZpZXJzICYgVklSVFVBTF9NT0RJRklFUlMpICE9IDApIHsKKy0gICAgICAg IC8vIHdvcmthcm91bmQgYSBidWcgaW4gZ2RrIHZhcGkgdmFsYSA+IDAuMTgKKy0gICAgICAgIC8v IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc1NTkKKy0jaWYg VkFMQV8wXzE4CistICAgICAgICAgICAgR2RrLktleW1hcC5nZXRfZGVmYXVsdCgpLm1hcF92aXJ0 dWFsX21vZGlmaWVycygKKy0gICAgICAgICAgICAgICAgICAgIHJlZiBzd2l0Y2hfbW9kaWZpZXJz KTsKKy0jZWxzZQorLSAgICAgICAgICAgIGlmICgoc3dpdGNoX21vZGlmaWVycyAmIEdkay5Nb2Rp ZmllclR5cGUuU1VQRVJfTUFTSykgIT0gMCkKKy0gICAgICAgICAgICAgICAgc3dpdGNoX21vZGlm aWVycyB8PSBHZGsuTW9kaWZpZXJUeXBlLk1PRDRfTUFTSzsKKy0gICAgICAgICAgICBpZiAoKHN3 aXRjaF9tb2RpZmllcnMgJiBHZGsuTW9kaWZpZXJUeXBlLkhZUEVSX01BU0spICE9IDApCistICAg ICAgICAgICAgICAgIHN3aXRjaF9tb2RpZmllcnMgfD0gR2RrLk1vZGlmaWVyVHlwZS5NT0Q0X01B U0s7CistI2VuZGlmCistICAgICAgICAgICAgc3dpdGNoX21vZGlmaWVycyAmPSB+VklSVFVBTF9N T0RJRklFUlM7CistICAgICAgICB9CistCistICAgICAgICBpZiAoc3dpdGNoX2tleXN5bSA9PSAw ICYmIHN3aXRjaF9tb2RpZmllcnMgPT0gMCkgeworLSAgICAgICAgICAgIHdhcm5pbmcoIlBhcnNl IGFjY2VsZXJhdG9yICclcycgZmFpbGVkISIsIGFjY2VsZXJhdG9yKTsKKy0gICAgICAgICAgICBy ZXR1cm47CistICAgICAgICB9CistCistICAgICAgICBrZXliaW5kaW5nID0gbmV3IEtleWJpbmRp bmcoc3dpdGNoX2tleXN5bSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz d2l0Y2hfbW9kaWZpZXJzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh bHNlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ0eXBlKTsKKy0gICAg ICAgIG1fa2V5YmluZGluZ3MuYXBwZW5kKGtleWJpbmRpbmcpOworLQorLSAgICAgICAgLyogV29y a2Fyb3VuZCBub3QgdG8gZnJlZSB0aGUgcG9pbnRlciBvZiBoYW5kbGVfZW5naW5lX3N3aXRjaCgp ICovCistICAgICAgICBpZiAoZnR5cGUgPT0gS2V5RXZlbnRGdW5jVHlwZS5JTUVfU1dJVENIRVIp IHsKKy0gICAgICAgICAgICBrZXliaW5kaW5nX21hbmFnZXIuYmluZChzd2l0Y2hfa2V5c3ltLCBz d2l0Y2hfbW9kaWZpZXJzLAorLSAgICAgICAgICAgICAgICAgICAgKGUpID0+IGhhbmRsZV9lbmdp bmVfc3dpdGNoKGUsIGZhbHNlKSk7CistICAgICAgICB9IGVsc2UgaWYgKGZ0eXBlID09IEtleUV2 ZW50RnVuY1R5cGUuRU1PSklfVFlQSU5HKSB7CistICAgICAgICAgICAga2V5YmluZGluZ19tYW5h Z2VyLmJpbmQoc3dpdGNoX2tleXN5bSwgc3dpdGNoX21vZGlmaWVycywKKy0gICAgICAgICAgICAg ICAgICAgIChlKSA9PiBoYW5kbGVfZW1vamlfdHlwaW5nKGUpKTsKKy0gICAgICAgICAgICByZXR1 cm47CistICAgICAgICB9CistCistICAgICAgICAvLyBhY2NlbGVyYXRvciBhbHJlYWR5IGhhcyBT aGlmdCBtYXNrCistICAgICAgICBpZiAoKHN3aXRjaF9tb2RpZmllcnMgJiByZXZlcnNlX21vZGlm aWVyKSAhPSAwKSB7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLQorLSAgICAg ICAgc3dpdGNoX21vZGlmaWVycyB8PSByZXZlcnNlX21vZGlmaWVyOworLQorLSAgICAgICAga2V5 YmluZGluZyA9IG5ldyBLZXliaW5kaW5nKHN3aXRjaF9rZXlzeW0sCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoX21vZGlmaWVycywKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0cnVlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZ0eXBlKTsKKy0gICAgICAgIG1fa2V5YmluZGluZ3MuYXBwZW5kKGtleWJpbmRpbmcp OworLQorLSAgICAgICAgaWYgKGZ0eXBlID09IEtleUV2ZW50RnVuY1R5cGUuSU1FX1NXSVRDSEVS KSB7CistICAgICAgICAgICAga2V5YmluZGluZ19tYW5hZ2VyLmJpbmQoc3dpdGNoX2tleXN5bSwg c3dpdGNoX21vZGlmaWVycywKKy0gICAgICAgICAgICAgICAgICAgIChlKSA9PiBoYW5kbGVfZW5n aW5lX3N3aXRjaChlLCB0cnVlKSk7CistICAgICAgICB9CistICAgIH0KKy0KKyAgICAgcHJpdmF0 ZSB2b2lkIGJpbmRfc3dpdGNoX3Nob3J0Y3V0KCkgeworICAgICAgICAgc3RyaW5nW10gYWNjZWxl cmF0b3JzID0gbV9zZXR0aW5nc19ob3RrZXkuZ2V0X3N0cnYoInRyaWdnZXJzIik7CisgCisgICAg ICAgICB2YXIga2V5YmluZGluZ19tYW5hZ2VyID0gS2V5YmluZGluZ01hbmFnZXIuZ2V0X2luc3Rh bmNlKCk7CisgCisgICAgICAgICBmb3JlYWNoICh2YXIgYWNjZWxlcmF0b3IgaW4gYWNjZWxlcmF0 b3JzKSB7CistICAgICAgICAgICAga2V5YmluZGluZ19tYW5hZ2VyX2JpbmQoa2V5YmluZGluZ19t YW5hZ2VyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9y LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleUV2ZW50RnVuY1R5cGUu SU1FX1NXSVRDSEVSKTsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICBwcml2YXRlIHZvaWQg YmluZF9lbW9qaV9zaG9ydGN1dCgpIHsKKy0jaWYgRU1PSklfRElDVAorLSAgICAgICAgc3RyaW5n W10gYWNjZWxlcmF0b3JzID0gbV9zZXR0aW5nc19lbW9qaS5nZXRfc3RydigiaG90a2V5Iik7Cist CistICAgICAgICB2YXIga2V5YmluZGluZ19tYW5hZ2VyID0gS2V5YmluZGluZ01hbmFnZXIuZ2V0 X2luc3RhbmNlKCk7CistCistICAgICAgICBmb3JlYWNoICh2YXIgYWNjZWxlcmF0b3IgaW4gYWNj ZWxlcmF0b3JzKSB7CistICAgICAgICAgICAga2V5YmluZGluZ19tYW5hZ2VyX2JpbmQoa2V5Ymlu ZGluZ19tYW5hZ2VyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vs ZXJhdG9yLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleUV2ZW50RnVu Y1R5cGUuRU1PSklfVFlQSU5HKTsKKysgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLmtleWJpbmRp bmdfbWFuYWdlcl9iaW5kKAorKyAgICAgICAgICAgICAgICAgICAga2V5YmluZGluZ19tYW5hZ2Vy LAorKyAgICAgICAgICAgICAgICAgICAgcmVmIG1fa2V5YmluZGluZ3MsCisrICAgICAgICAgICAg ICAgICAgICBhY2NlbGVyYXRvciwKKysgICAgICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24u S2V5RXZlbnRGdW5jVHlwZS5JTUVfU1dJVENIRVIsCisrICAgICAgICAgICAgICAgICAgICBoYW5k bGVfZW5naW5lX3N3aXRjaF9ub3JtYWwsCisrICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZW5n aW5lX3N3aXRjaF9yZXZlcnNlKTsKKyAgICAgICAgIH0KKy0jZW5kaWYKKyAgICAgfQorIAorLSAg ICBwcml2YXRlIHZvaWQgdW5iaW5kX3N3aXRjaF9zaG9ydGN1dChLZXlFdmVudEZ1bmNUeXBlIGZ0 eXBlKSB7CisrLyoKKysgICAgcHVibGljIHN0YXRpYyB2b2lkCisrICAgIHVuYmluZF9zd2l0Y2hf c2hvcnRjdXQoS2V5RXZlbnRGdW5jVHlwZSAgICAgIGZ0eXBlLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMaWIuTGlzdDxLZXliaW5kaW5nPiBrZXliaW5kaW5ncykgeworICAgICAgICAg dmFyIGtleWJpbmRpbmdfbWFuYWdlciA9IEtleWJpbmRpbmdNYW5hZ2VyLmdldF9pbnN0YW5jZSgp OworIAorLSAgICAgICAgdW5vd25lZCBHTGliLkxpc3Q8S2V5YmluZGluZz4ga2V5YmluZGluZ3Mg PSBtX2tleWJpbmRpbmdzOworLQorICAgICAgICAgd2hpbGUgKGtleWJpbmRpbmdzICE9IG51bGwp IHsKKyAgICAgICAgICAgICBLZXliaW5kaW5nIGtleWJpbmRpbmcgPSBrZXliaW5kaW5ncy5kYXRh OworIAorLSAgICAgICAgICAgIGlmIChmdHlwZSA9PSBLZXlFdmVudEZ1bmNUeXBlLkFOWSB8fCBm dHlwZSA9PSBrZXliaW5kaW5nLmZ0eXBlKSB7CisrICAgICAgICAgICAgaWYgKGZ0eXBlID09IEtl eUV2ZW50RnVuY1R5cGUuQU5ZIHx8CisrICAgICAgICAgICAgICAgIGZ0eXBlID09IGtleWJpbmRp bmcuZnR5cGUpIHsKKyAgICAgICAgICAgICAgICAga2V5YmluZGluZ19tYW5hZ2VyLnVuYmluZChr ZXliaW5kaW5nLmtleXN5bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXliaW5kaW5nLm1vZGlmaWVycyk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAg IGtleWJpbmRpbmdzID0ga2V5YmluZGluZ3MubmV4dDsKKyAgICAgICAgIH0KKy0KKy0gICAgICAg IG1fa2V5YmluZGluZ3MgPSBudWxsOworICAgICB9CisrKi8KKyAKKyAgICAgLyoqCisgICAgICAq IHBhbmVsX2dldF9lbmdpbmVzX2Zyb21feGtiOgorQEAgLTY3MCw2OSArNTM3LDYgQEAgY2xhc3Mg UGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgICAgICBtX3NldHRpbmdzX2dlbmVyYWwu c2V0X3N0cnYoInByZWxvYWQtZW5naW5lcyIsIG5hbWVzKTsKKyAgICAgfQorIAorLSAgICBwcml2 YXRlIHZvaWQgc2V0X2N1c3RvbV9mb250KCkgeworLSAgICAgICAgR2RrLkRpc3BsYXkgZGlzcGxh eSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7CistICAgICAgICBHZGsuU2NyZWVuIHNjcmVl biA9IChkaXNwbGF5ICE9IG51bGwpID8KKy0gICAgICAgICAgICAgICAgZGlzcGxheS5nZXRfZGVm YXVsdF9zY3JlZW4oKSA6IG51bGw7CistCistICAgICAgICBpZiAoc2NyZWVuID09IG51bGwpIHsK Ky0gICAgICAgICAgICB3YXJuaW5nKCJDb3VsZCBub3Qgb3BlbiBkaXNwbGF5LiIpOworLSAgICAg ICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIHN0cmluZyBlbW9qaV9mb250 ID0gbV9zZXR0aW5nc19lbW9qaS5nZXRfc3RyaW5nKCJmb250Iik7CistICAgICAgICBpZiAoZW1v amlfZm9udCA9PSBudWxsKSB7CistICAgICAgICAgICAgd2FybmluZygiTm8gY29uZmlnIGVtb2pp OmZvbnQuIik7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLSAgICAgICAgSUJ1 c0Vtb2ppZXIuc2V0X2Vtb2ppX2ZvbnQoZW1vamlfZm9udCk7CistCistICAgICAgICBib29sIHVz ZV9jdXN0b21fZm9udCA9IG1fc2V0dGluZ3NfcGFuZWwuZ2V0X2Jvb2xlYW4oInVzZS1jdXN0b20t Zm9udCIpOworLQorLSAgICAgICAgaWYgKG1fY3NzX3Byb3ZpZGVyICE9IG51bGwpIHsKKy0gICAg ICAgICAgICBHdGsuU3R5bGVDb250ZXh0LnJlbW92ZV9wcm92aWRlcl9mb3Jfc2NyZWVuKHNjcmVl biwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1fY3NzX3Byb3ZpZGVyKTsKKy0gICAgICAgICAgICBtX2Nzc19wcm92aWRlciA9IG51bGw7 CistICAgICAgICB9CistCistICAgICAgICBpZiAodXNlX2N1c3RvbV9mb250ID09IGZhbHNlKSB7 CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLQorLSAgICAgICAgc3RyaW5nIGN1 c3RvbV9mb250ID0gbV9zZXR0aW5nc19wYW5lbC5nZXRfc3RyaW5nKCJjdXN0b20tZm9udCIpOwor LSAgICAgICAgaWYgKGN1c3RvbV9mb250ID09IG51bGwpIHsKKy0gICAgICAgICAgICB3YXJuaW5n KCJObyBjb25maWcgcGFuZWw6Y3VzdG9tLWZvbnQuIik7CistICAgICAgICAgICAgcmV0dXJuOwor LSAgICAgICAgfQorLQorLSAgICAgICAgUGFuZ28uRm9udERlc2NyaXB0aW9uIGZvbnRfZGVzYyA9 CistICAgICAgICAgICAgICAgIFBhbmdvLkZvbnREZXNjcmlwdGlvbi5mcm9tX3N0cmluZyhjdXN0 b21fZm9udCk7CistICAgICAgICBzdHJpbmcgZm9udF9mYW1pbHkgPSBmb250X2Rlc2MuZ2V0X2Zh bWlseSgpOworLSAgICAgICAgaW50IGZvbnRfc2l6ZSA9IGZvbnRfZGVzYy5nZXRfc2l6ZSgpIC8g UGFuZ28uU0NBTEU7CistICAgICAgICBzdHJpbmcgZGF0YTsKKy0KKy0gICAgICAgIGlmIChHdGsu TUFKT1JfVkVSU0lPTiA8IDMgfHwKKy0gICAgICAgICAgICAoR3RrLk1BSk9SX1ZFUlNJT04gPT0g MyAmJiBHdGsuTUlOT1JfVkVSU0lPTiA8IDIwKSkgeworLSAgICAgICAgICAgIGRhdGEgPSAiR3Rr TGFiZWwgeyBmb250OiAlczsgfSIucHJpbnRmKGN1c3RvbV9mb250KTsKKy0gICAgICAgIH0gZWxz ZSB7CistICAgICAgICAgICAgZGF0YSA9ICJsYWJlbCB7IGZvbnQtZmFtaWx5OiAlczsgZm9udC1z aXplOiAlZHB0OyB9IgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcmludGYoZm9udF9m YW1pbHksIGZvbnRfc2l6ZSk7CistICAgICAgICB9CistCistICAgICAgICBtX2Nzc19wcm92aWRl ciA9IG5ldyBHdGsuQ3NzUHJvdmlkZXIoKTsKKy0KKy0gICAgICAgIHRyeSB7CistICAgICAgICAg ICAgbV9jc3NfcHJvdmlkZXIubG9hZF9mcm9tX2RhdGEoZGF0YSwgLTEpOworLSAgICAgICAgfSBj YXRjaCAoR0xpYi5FcnJvciBlKSB7CistICAgICAgICAgICAgd2FybmluZygiRmFpbGVkIGNzc19w cm92aWRlcl9mcm9tX2RhdGE6ICVzOiAlcyIsIGN1c3RvbV9mb250LAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1lc3NhZ2Up OworLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIEd0ay5TdHls ZUNvbnRleHQuYWRkX3Byb3ZpZGVyX2Zvcl9zY3JlZW4oc2NyZWVuLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Nzc19wcm92aWRlciwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLlNUWUxFX1BS T1ZJREVSX1BSSU9SSVRZX0FQUExJQ0FUSU9OKTsKKy0gICAgfQorIAorICAgICBwcml2YXRlIHZv aWQgc2V0X3N3aXRjaGVyX2RlbGF5X3RpbWUoKSB7CisgICAgICAgICBtX3N3aXRjaGVyX2RlbGF5 X3RpbWUgPQorQEAgLTg1NSwzNSArNjU5LDYgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2Vy dmljZSB7CisgICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfcGFuZWwuZ2V0X2ludCgicHJvcGVy dHktaWNvbi1kZWxheS10aW1lIik7CisgICAgIH0KKyAKKy0gICAgcHJpdmF0ZSB2b2lkIHNldF9l bW9qaV9mYXZvcml0ZXMoKSB7CistICAgICAgICBtX2Vtb2ppZXJfZmF2b3JpdGVzID0gbV9zZXR0 aW5nc19lbW9qaS5nZXRfc3RydigiZmF2b3JpdGVzIik7CistICAgICAgICBJQnVzRW1vamllci5z ZXRfZmF2b3JpdGVzKAorLSAgICAgICAgICAgICAgICBtX2Vtb2ppZXJfZmF2b3JpdGVzLAorLSAg ICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJ2KCJmYXZvcml0ZS1hbm5vdGF0 aW9ucyIpKTsKKy0gICAgfQorLQorLSAgICBwcml2YXRlIHZvaWQgc2V0X2Vtb2ppX2xhbmcoKSB7 CistICAgICAgICBpZiAobV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkID4gMCkgeworLSAgICAg ICAgICAgIEdMaWIuU291cmNlLnJlbW92ZShtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQpOwor LSAgICAgICAgICAgIG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZCA9IDA7CistICAgICAgICB9 CistICAgICAgICBtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQgPSBHTGliLklkbGUuYWRkKCgp ID0+IHsKKy0gICAgICAgICAgICBJQnVzRW1vamllci5zZXRfYW5ub3RhdGlvbl9sYW5nKAorLSAg ICAgICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5nZXRfc3RyaW5nKCJsYW5nIikpOwor LSAgICAgICAgICAgIG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZCA9IDA7CistICAgICAgICAg ICAgSUJ1c0Vtb2ppZXIubG9hZF91bmljb2RlX2RpY3QoKTsKKy0gICAgICAgICAgICByZXR1cm4g ZmFsc2U7CistICAgICAgICB9KTsKKy0gICAgfQorLQorLSAgICBwcml2YXRlIHZvaWQgc2V0X2Vt b2ppX3BhcnRpYWxfbWF0Y2goKSB7CistICAgICAgICBJQnVzRW1vamllci5zZXRfcGFydGlhbF9t YXRjaCgKKy0gICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5nZXRfYm9vbGVhbigiaGFz LXBhcnRpYWwtbWF0Y2giKSk7CistICAgICAgICBJQnVzRW1vamllci5zZXRfcGFydGlhbF9tYXRj aF9sZW5ndGgoCistICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuZ2V0X2ludCgicGFy dGlhbC1tYXRjaC1sZW5ndGgiKSk7CistICAgICAgICBJQnVzRW1vamllci5zZXRfcGFydGlhbF9t YXRjaF9jb25kaXRpb24oCistICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuZ2V0X2lu dCgicGFydGlhbC1tYXRjaC1jb25kaXRpb24iKSk7CistICAgIH0KKyAKKyAgICAgcHJpdmF0ZSBp bnQgY29tcGFyZV92ZXJzaW9ucyhzdHJpbmcgdmVyc2lvbjEsIHN0cmluZyB2ZXJzaW9uMikgewor ICAgICAgICAgc3RyaW5nW10gdmVyc2lvbjFfbGlzdCA9IHZlcnNpb24xLnNwbGl0KCIuIik7CitA QCAtOTg1LDEyICs3NjAsMTYgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Cisg ICAgICAgICBzZXRfdXNlX3htb2RtYXAoKTsKKyAgICAgICAgIHVwZGF0ZV9lbmdpbmVzKG1fc2V0 dGluZ3NfZ2VuZXJhbC5nZXRfc3RydigicHJlbG9hZC1lbmdpbmVzIiksCisgICAgICAgICAgICAg ICAgICAgICAgICBtX3NldHRpbmdzX2dlbmVyYWwuZ2V0X3N0cnYoImVuZ2luZXMtb3JkZXIiKSk7 CistICAgICAgICB1bmJpbmRfc3dpdGNoX3Nob3J0Y3V0KEtleUV2ZW50RnVuY1R5cGUuQU5ZKTsK KysgICAgICAgIEJpbmRpbmdDb21tb24udW5iaW5kX3N3aXRjaF9zaG9ydGN1dCgKKysgICAgICAg ICAgICAgICAgQmluZGluZ0NvbW1vbi5LZXlFdmVudEZ1bmNUeXBlLkFOWSwKKysgICAgICAgICAg ICAgICAgbV9rZXliaW5kaW5ncyk7CisrICAgICAgICBtX2tleWJpbmRpbmdzID0gbnVsbDsKKyAg ICAgICAgIGJpbmRfc3dpdGNoX3Nob3J0Y3V0KCk7CistICAgICAgICBiaW5kX2Vtb2ppX3Nob3J0 Y3V0KCk7CisgICAgICAgICBzZXRfc3dpdGNoZXJfZGVsYXlfdGltZSgpOworICAgICAgICAgc2V0 X2VtYmVkX3ByZWVkaXRfdGV4dCgpOworLSAgICAgICAgc2V0X2N1c3RvbV9mb250KCk7CisrICAg ICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZiBtX2Nzc19wcm92aWRlcik7CisgICAgICAgICBz ZXRfc2hvd19pY29uX29uX3N5c3RyYXkoKTsKKyAgICAgICAgIHNldF9sb29rdXBfdGFibGVfb3Jp ZW50YXRpb24oKTsKKyAgICAgICAgIHNldF9zaG93X3Byb3BlcnR5X3BhbmVsKCk7CitAQCAtOTk4 LDkgKzc3Nyw2IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICAgICAg c2V0X2ZvbGxvd19pbnB1dF9jdXJzb3Jfd2hlbl9hbHdheXNfc2hvd25fcHJvcGVydHlfcGFuZWwo KTsKKyAgICAgICAgIHNldF94a2JfaWNvbl9yZ2JhKCk7CisgICAgICAgICBzZXRfcHJvcGVydHlf aWNvbl9kZWxheV90aW1lKCk7CistICAgICAgICBzZXRfZW1vamlfZmF2b3JpdGVzKCk7CistICAg ICAgICBzZXRfZW1vamlfbGFuZygpOworLSAgICAgICAgc2V0X2Vtb2ppX3BhcnRpYWxfbWF0Y2go KTsKKyAgICAgfQorIAorICAgICAvKioKK0BAIC0xMDM3LDEwICs4MTMsNiBAQCBjbGFzcyBQYW5l bCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgICAgICBHTGliLlNvdXJjZS5yZW1vdmUo bV9wcmVsb2FkX2VuZ2luZXNfaWQpOworICAgICAgICAgICAgIG1fcHJlbG9hZF9lbmdpbmVzX2lk ID0gMDsKKyAgICAgICAgIH0KKy0gICAgICAgIGlmIChtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdf aWQgPiAwKSB7CistICAgICAgICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1fZW1vamllcl9zZXRf ZW1vamlfbGFuZ19pZCk7CistICAgICAgICAgICAgbV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lk ID0gMDsKKy0gICAgICAgIH0KKyAgICAgfQorIAorICAgICBwcml2YXRlIHZvaWQgZW5naW5lX2Nv bnRleHRzX2luc2VydChJQnVzLkVuZ2luZURlc2MgZW5naW5lKSB7CitAQCAtMTA5MSw3ICs4NjMs MTUgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgICAgICBzZXRfZW5n aW5lKGVuZ2luZSk7CisgICAgIH0KKyAKKy0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZV9lbmdpbmVf c3dpdGNoKEdkay5FdmVudCBldmVudCwgYm9vbCByZXZlcnQpIHsKKysgICAgcHJpdmF0ZSB2b2lk IGhhbmRsZV9lbmdpbmVfc3dpdGNoX25vcm1hbChHZGsuRXZlbnQgZXZlbnQpIHsKKysgICAgICAg IGhhbmRsZV9lbmdpbmVfc3dpdGNoKGV2ZW50LCBmYWxzZSk7CisrICAgIH0KKysKKysgICAgcHJp dmF0ZSB2b2lkIGhhbmRsZV9lbmdpbmVfc3dpdGNoX3JldmVyc2UoR2RrLkV2ZW50IGV2ZW50KSB7 CisrICAgICAgICBoYW5kbGVfZW5naW5lX3N3aXRjaChldmVudCwgdHJ1ZSk7CisrICAgIH0KKysK KysgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZV9lbmdpbmVfc3dpdGNoKEdkay5FdmVudCBldmVudCwg Ym9vbCByZXZlcnNlKSB7CisgICAgICAgICAvLyBEbyBub3QgbmVlZCBzd2l0Y2ggSU1FCisgICAg ICAgICBpZiAobV9lbmdpbmVzLmxlbmd0aCA8PSAxKQorICAgICAgICAgICAgIHJldHVybjsKK0BA IC0xMTA1LDEyICs4ODUsMTIgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Cisg ICAgICAgICBib29sIHByZXNzZWQgPSBLZXliaW5kaW5nTWFuYWdlci5wcmltYXJ5X21vZGlmaWVy X3N0aWxsX3ByZXNzZWQoCisgICAgICAgICAgICAgICAgIGV2ZW50LCBwcmltYXJ5X21vZGlmaWVy cyk7CisgCistICAgICAgICBpZiAocmV2ZXJ0KSB7CisrICAgICAgICBpZiAocmV2ZXJzZSkgewor ICAgICAgICAgICAgIG1vZGlmaWVycyAmPSB+R2RrLk1vZGlmaWVyVHlwZS5TSElGVF9NQVNLOwor ICAgICAgICAgfQorIAorICAgICAgICAgaWYgKHByZXNzZWQgJiYgbV9zd2l0Y2hlcl9kZWxheV90 aW1lID49IDApIHsKKy0gICAgICAgICAgICBpbnQgaSA9IHJldmVydCA/IG1fZW5naW5lcy5sZW5n dGggLSAxIDogMTsKKysgICAgICAgICAgICBpbnQgaSA9IHJldmVyc2UgPyBtX2VuZ2luZXMubGVu Z3RoIC0gMSA6IDE7CisgCisgICAgICAgICAgICAgLyogVGhlIGZsYWcgb2YgbV9zd2l0Y2hlci5p c19ydW5uaW5nIGF2b2lkcyB0aGUgZm9sbG93aW5nIHByb2JsZW06CisgICAgICAgICAgICAgICoK K0BAIC0xMTMyLDI4ICs5MTIsMTEgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7 CisgICAgICAgICAgICAgICAgIHRoaXMuc3dpdGNoZXJfZm9jdXNfc2V0X2VuZ2luZSgpOworICAg ICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgaW50IGkgPSByZXZl cnQgPyBtX2VuZ2luZXMubGVuZ3RoIC0gMSA6IDE7CisrICAgICAgICAgICAgaW50IGkgPSByZXZl cnNlID8gbV9lbmdpbmVzLmxlbmd0aCAtIDEgOiAxOworICAgICAgICAgICAgIHN3aXRjaF9lbmdp bmUoaSk7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgcHJpdmF0ZSB2b2lkIHNob3dfZW1v amllcihHZGsuRXZlbnQgZXZlbnQpIHsKKy0gICAgICAgIG1fZW1vamllciA9IG5ldyBJQnVzRW1v amllcigpOworLSAgICAgICAgc3RyaW5nIGVtb2ppID0gbV9lbW9qaWVyLnJ1bihtX3JlYWxfY3Vy cmVudF9jb250ZXh0X3BhdGgsIGV2ZW50KTsKKy0gICAgICAgIGlmIChlbW9qaSA9PSBudWxsKSB7 CistICAgICAgICAgICAgbV9lbW9qaWVyID0gbnVsbDsKKy0gICAgICAgICAgICByZXR1cm47Cist ICAgICAgICB9CistICAgICAgICB0aGlzLmVtb2ppZXJfZm9jdXNfY29tbWl0KCk7CistICAgIH0K Ky0KKy0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZV9lbW9qaV90eXBpbmcoR2RrLkV2ZW50IGV2ZW50 KSB7CistICAgICAgICBpZiAobV9lbW9qaWVyICE9IG51bGwgJiYgbV9lbW9qaWVyLmlzX3J1bm5p bmcoKSkgeworLSAgICAgICAgICAgIG1fZW1vamllci5wcmVzZW50X2NlbnRyYWxpemUoZXZlbnQp OworLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIHNob3dfZW1vamll cihldmVudCk7CistICAgIH0KKyAKKyAgICAgcHJpdmF0ZSB2b2lkIHJ1bl9wcmVsb2FkX2VuZ2lu ZXMoSUJ1cy5FbmdpbmVEZXNjW10gZW5naW5lcywgaW50IGluZGV4KSB7CisgICAgICAgICBzdHJp bmdbXSBuYW1lcyA9IHt9OworQEAgLTEzOTMsNyArMTE1NiwxOCBAQCBjbGFzcyBQYW5lbCA6IElC dXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmtleS53aW5kb3cg PSBHZGsuZ2V0X2RlZmF1bHRfcm9vdF93aW5kb3coKTsKKyAgICAgICAgICAgICAgICAgICAgIGV2 ZW50LmtleS53aW5kb3cucmVmKCk7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAg ICAgaGFuZGxlX2Vtb2ppX3R5cGluZyhldmVudCk7CisrICAgICAgICAgICAgICAgIElCdXMuWEV2 ZW50IHhldmVudCA9IG5ldyBJQnVzLlhFdmVudCgKKysgICAgICAgICAgICAgICAgICAgICAgICAi ZXZlbnQtdHlwZSIsIElCdXMuWEV2ZW50VHlwZS5LRVlfUFJFU1MsCisrICAgICAgICAgICAgICAg ICAgICAgICAgIndpbmRvdyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LmtleS53 aW5kb3cgYXMgR2RrLlgxMS5XaW5kb3cpLmdldF94aWQoKSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAidGltZSIsIGV2ZW50LmtleS50aW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJw dXJwb3NlIiwgImVtb2ppIik7CisrICAgICAgICAgICAgICAgIC8qIG5ldyBHTGliLlZhcmlhbnQo IihzdikiLCAiZW1vamkiLCB4ZXZlbnQuc2VyaWFsaXplX29iamVjdCgpKQorKyAgICAgICAgICAg ICAgICAgKiB3aWxsIGNhbGwgZ192YXJpYW50X3VucmVmKCkgZm9yIHRoZSBjaGlsZCB2YXJpYW50 IGJ5IHZhbGEuCisrICAgICAgICAgICAgICAgICAqIEkgaGF2ZSBubyBpZGVhIG5vdCB0byB1bnJl ZiB0aGUgb2JqZWN0IHNvIGludGVncmF0ZWQKKysgICAgICAgICAgICAgICAgICogdGhlIHB1cnBv c2UgdG8gSUJ1cy5YRXZlbnQgYWJvdmUuCisrICAgICAgICAgICAgICAgICAqLworKyAgICAgICAg ICAgICAgICBwYW5lbF9leHRlbnNpb24oeGV2ZW50LnNlcmlhbGl6ZV9vYmplY3QoKSk7CisgICAg ICAgICAgICAgfSk7CisgICAgICAgICAgICAgbV9zeXNfbWVudS5hcHBlbmQoaXRlbSk7CisgI2Vu ZGlmCitAQCAtMTU1Nyw2NyArMTMzMSw2IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZp Y2UgeworICAgICAgICAgfQorICAgICB9CisgCistICAgIHByaXZhdGUgYm9vbCBlbW9qaWVyX2Zv Y3VzX2NvbW1pdF9yZWFsKCkgeworLSAgICAgICAgaWYgKG1fZW1vamllciA9PSBudWxsKQorLSAg ICAgICAgICAgIHJldHVybiB0cnVlOworLSAgICAgICAgc3RyaW5nIHNlbGVjdGVkX3N0cmluZyA9 IG1fZW1vamllci5nZXRfc2VsZWN0ZWRfc3RyaW5nKCk7CistICAgICAgICBzdHJpbmcgcHJldl9j b250ZXh0X3BhdGggPSBtX2Vtb2ppZXIuZ2V0X2lucHV0X2NvbnRleHRfcGF0aCgpOworLSAgICAg ICAgaWYgKHNlbGVjdGVkX3N0cmluZyAhPSBudWxsICYmCistICAgICAgICAgICAgcHJldl9jb250 ZXh0X3BhdGggIT0gIiIgJiYKKy0gICAgICAgICAgICBwcmV2X2NvbnRleHRfcGF0aCA9PSBtX2N1 cnJlbnRfY29udGV4dF9wYXRoKSB7CistICAgICAgICAgICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcg SUJ1cy5UZXh0LmZyb21fc3RyaW5nKHNlbGVjdGVkX3N0cmluZyk7CistICAgICAgICAgICAgY29t bWl0X3RleHQodGV4dCk7CistICAgICAgICAgICAgbV9lbW9qaWVyID0gbnVsbDsKKy0gICAgICAg ICAgICBib29sIGhhc19mYXZvcml0ZSA9IGZhbHNlOworLSAgICAgICAgICAgIGZvcmVhY2ggKHVu b3duZWQgc3RyaW5nIGZhdm9yaXRlIGluIG1fZW1vamllcl9mYXZvcml0ZXMpIHsKKy0gICAgICAg ICAgICAgICAgaWYgKGZhdm9yaXRlID09IHNlbGVjdGVkX3N0cmluZykgeworLSAgICAgICAgICAg ICAgICAgICAgaGFzX2Zhdm9yaXRlID0gdHJ1ZTsKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFr OworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmICgh aGFzX2Zhdm9yaXRlKSB7CistICAgICAgICAgICAgICAgIG1fZW1vamllcl9mYXZvcml0ZXMgKz0g c2VsZWN0ZWRfc3RyaW5nOworLSAgICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLnNldF9z dHJ2KCJmYXZvcml0ZXMiLCBtX2Vtb2ppZXJfZmF2b3JpdGVzKTsKKy0gICAgICAgICAgICB9Cist ICAgICAgICAgICAgcmV0dXJuIHRydWU7CistICAgICAgICB9CistCistICAgICAgICByZXR1cm4g ZmFsc2U7CistICAgIH0KKy0KKy0gICAgcHJpdmF0ZSB2b2lkIGVtb2ppZXJfZm9jdXNfY29tbWl0 KCkgeworLSAgICAgICAgaWYgKG1fZW1vamllciA9PSBudWxsKQorLSAgICAgICAgICAgIHJldHVy bjsKKy0gICAgICAgIHN0cmluZyBzZWxlY3RlZF9zdHJpbmcgPSBtX2Vtb2ppZXIuZ2V0X3NlbGVj dGVkX3N0cmluZygpOworLSAgICAgICAgc3RyaW5nIHByZXZfY29udGV4dF9wYXRoID0gbV9lbW9q aWVyLmdldF9pbnB1dF9jb250ZXh0X3BhdGgoKTsKKy0gICAgICAgIGlmIChzZWxlY3RlZF9zdHJp bmcgPT0gbnVsbCAmJgorLSAgICAgICAgICAgIHByZXZfY29udGV4dF9wYXRoICE9ICIiICYmCist ICAgICAgICAgICAgbV9lbW9qaWVyLmlzX3J1bm5pbmcoKSkgeworLSAgICAgICAgICAgIHZhciBj b250ZXh0ID0gR0xpYi5NYWluQ29udGV4dC5kZWZhdWx0KCk7CistICAgICAgICAgICAgaWYgKG1f ZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCA+IDAgJiYKKy0gICAgICAgICAgICAgICAgY29u dGV4dC5maW5kX3NvdXJjZV9ieV9pZChtX2Vtb2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQpCist ICAgICAgICAgICAgICAgICAgICAgICAgIT0gbnVsbCkgeworLSAgICAgICAgICAgICAgICBHTGli LlNvdXJjZS5yZW1vdmUobV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkKTsKKy0gICAgICAg ICAgICB9CistICAgICAgICAgICAgbV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkID0gR0xp Yi5UaW1lb3V0LmFkZCgxMDAsICgpID0+IHsKKy0gICAgICAgICAgICAgICAgLy8gZm9jdXNfaW4g aXMgY29tbWluZyBiZWZvcmUgc3dpdGNoZXIgcmV0dXJucworLSAgICAgICAgICAgICAgICBlbW9q aWVyX2ZvY3VzX2NvbW1pdF9yZWFsKCk7CistICAgICAgICAgICAgICAgIG1fZW1vamllcl9mb2N1 c19jb21taXRfdGV4dF9pZCA9IC0xOworLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cist ICAgICAgICAgICAgfSk7CistICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIGlmIChlbW9q aWVyX2ZvY3VzX2NvbW1pdF9yZWFsKCkpIHsKKy0gICAgICAgICAgICAgICAgdmFyIGNvbnRleHQg PSBHTGliLk1haW5Db250ZXh0LmRlZmF1bHQoKTsKKy0gICAgICAgICAgICAgICAgaWYgKG1fZW1v amllcl9mb2N1c19jb21taXRfdGV4dF9pZCA+IDAgJiYKKy0gICAgICAgICAgICAgICAgICAgIGNv bnRleHQuZmluZF9zb3VyY2VfYnlfaWQobV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkKQor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBudWxsKSB7CistICAgICAgICAgICAgICAg ICAgICBHTGliLlNvdXJjZS5yZW1vdmUobV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkKTsK Ky0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBtX2Vtb2ppZXJfZm9jdXNfY29t bWl0X3RleHRfaWQgPSAtMTsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgIH0KKy0K KyAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgZm9jdXNfaW4oc3RyaW5nIGlucHV0X2NvbnRleHRf cGF0aCkgeworICAgICAgICAgbV9jdXJyZW50X2NvbnRleHRfcGF0aCA9IGlucHV0X2NvbnRleHRf cGF0aDsKKyAKK0BAIC0xNjMyLDcgKzEzNDUsNiBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxT ZXJ2aWNlIHsKKyAgICAgICAgICAgICBtX3JlYWxfY3VycmVudF9jb250ZXh0X3BhdGggPSBtX2N1 cnJlbnRfY29udGV4dF9wYXRoOworICAgICAgICAgICAgIG1fcHJvcGVydHlfcGFuZWwuZm9jdXNf aW4oKTsKKyAgICAgICAgICAgICB0aGlzLnN3aXRjaGVyX2ZvY3VzX3NldF9lbmdpbmUoKTsKKy0g ICAgICAgICAgICB0aGlzLmVtb2ppZXJfZm9jdXNfY29tbWl0KCk7CisgICAgICAgICB9CisgCisg ICAgICAgICBpZiAobV91c2VfZ2xvYmFsX2VuZ2luZSkKK2RpZmYgLS1naXQgYS91aS9ndGszL3Bh bmVsYmluZGluZy52YWxhIGIvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi41MDcwMDEyMQorLS0tIC9kZXYvbnVsbAorKysrIGIv dWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQorQEAgLTAsMCArMSwzMzUgQEAKKysvKiB2aW06c2V0 IGV0IHN0cz00IHN3PTQ6CisrICoKKysgKiBpYnVzIC0gVGhlIElucHV0IEJ1cworKyAqCisrICog Q29weXJpZ2h0KGMpIDIwMTggUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Cisr ICogQ29weXJpZ2h0KGMpIDIwMTggVGFrYW8gRnVqd2lhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+CisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAq CisrICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICog TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEKKysgKiBVU0EKKysgKi8KKysKKytjbGFz cyBQYW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2VydmljZSB7CisrICAgIHByaXZhdGUgSUJ1cy5C dXMgbV9idXM7CisrICAgIHByaXZhdGUgR0xpYi5TZXR0aW5ncyBtX3NldHRpbmdzX3BhbmVsID0g bnVsbDsKKysgICAgcHJpdmF0ZSBHTGliLlNldHRpbmdzIG1fc2V0dGluZ3NfZW1vamkgPSBudWxs OworKyAgICBwcml2YXRlIHN0cmluZyBtX2N1cnJlbnRfY29udGV4dF9wYXRoID0gIiI7CisrICAg IHByaXZhdGUgc3RyaW5nIG1fcmVhbF9jdXJyZW50X2NvbnRleHRfcGF0aCA9ICIiOworKyAgICBw cml2YXRlIElCdXNFbW9qaWVyPyBtX2Vtb2ppZXI7CisrICAgIHByaXZhdGUgdWludCBtX2Vtb2pp ZXJfc2V0X2Vtb2ppX2xhbmdfaWQ7CisrICAgIHByaXZhdGUgdWludCBtX2Vtb2ppZXJfZm9jdXNf Y29tbWl0X3RleHRfaWQ7CisrICAgIHByaXZhdGUgc3RyaW5nW10gbV9lbW9qaWVyX2Zhdm9yaXRl cyA9IHt9OworKyAgICBwcml2YXRlIEd0ay5Dc3NQcm92aWRlciBtX2Nzc19wcm92aWRlcjsKKysg ICAgcHJpdmF0ZSBjb25zdCB1aW50IFBSRUxPQURfRU5HSU5FU19ERUxBWV9USU1FID0gMzAwMDA7 CisrICAgIHByaXZhdGUgR0xpYi5MaXN0PEJpbmRpbmdDb21tb24uS2V5YmluZGluZz4gbV9rZXli aW5kaW5ncyA9CisrICAgICAgICAgICAgbmV3IEdMaWIuTGlzdDxCaW5kaW5nQ29tbW9uLktleWJp bmRpbmc+KCk7CisrCisrICAgIHB1YmxpYyBQYW5lbEJpbmRpbmcoSUJ1cy5CdXMgYnVzKSB7Cisr ICAgICAgICBHTGliLmFzc2VydChidXMuaXNfY29ubmVjdGVkKCkpOworKyAgICAgICAgLy8gQ2hh aW4gdXAgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvcgorKyAgICAgICAgR0xpYi5PYmplY3QoY29ubmVj dGlvbiA6IGJ1cy5nZXRfY29ubmVjdGlvbigpLAorKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0 X3BhdGggOiBJQnVzLlBBVEhfUEFORUxfRVhURU5TSU9OKTsKKysKKysgICAgICAgIG1fYnVzID0g YnVzOworKworKyAgICAgICAgaW5pdF9zZXR0aW5ncygpOworKworKyAgICAgICAgYmluZF9lbW9q aV9zaG9ydGN1dCgpOworKyAgICB9CisrCisrCisrICAgIH5QYW5lbEJpbmRpbmcoKSB7CisrICAg ICAgICBCaW5kaW5nQ29tbW9uLnVuYmluZF9zd2l0Y2hfc2hvcnRjdXQoCisrICAgICAgICAgICAg ICAgIEJpbmRpbmdDb21tb24uS2V5RXZlbnRGdW5jVHlwZS5BTlksCisrICAgICAgICAgICAgICAg IG1fa2V5YmluZGluZ3MpOworKyAgICB9CisrCisrCisrICAgIHByaXZhdGUgdm9pZCBpbml0X3Nl dHRpbmdzKCkgeworKyAgICAgICAgbV9zZXR0aW5nc19wYW5lbCA9IG5ldyBHTGliLlNldHRpbmdz KCJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5wYW5lbCIpOworKyAgICAgICAgbV9zZXR0aW5nc19lbW9q aSA9IG5ldyBHTGliLlNldHRpbmdzKCJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5wYW5lbC5lbW9qaSIp OworKworKyAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJjdXN0b20tZm9udCJdLmNv bm5lY3QoKGtleSkgPT4geworKyAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0 b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZWYgbV9jc3NfcHJvdmlkZXIpOworKyAgICAgICAg fSk7CisrCisrICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbInVzZS1jdXN0b20tZm9u dCJdLmNvbm5lY3QoKGtleSkgPT4geworKyAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNl dF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYgbV9jc3NfcHJvdmlkZXIpOworKyAg ICAgICAgfSk7CisrCisrICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImhvdGtleSJd LmNvbm5lY3QoKGtleSkgPT4geworKyAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnVuYmlu ZF9zd2l0Y2hfc2hvcnRjdXQoCisrICAgICAgICAgICAgICAgICAgICAgICAgQmluZGluZ0NvbW1v bi5LZXlFdmVudEZ1bmNUeXBlLkVNT0pJX1RZUElORywKKysgICAgICAgICAgICAgICAgICAgICAg ICBtX2tleWJpbmRpbmdzKTsKKysgICAgICAgICAgICAgICAgYmluZF9lbW9qaV9zaG9ydGN1dCgp OworKyAgICAgICAgfSk7CisrCisrICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImZv bnQiXS5jb25uZWN0KChrZXkpID0+IHsKKysgICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5z ZXRfY3VzdG9tX2ZvbnQobV9zZXR0aW5nc19wYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3NzX3Byb3ZpZGVyKTsKKysg ICAgICAgIH0pOworKworKyAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJmYXZvcml0 ZXMiXS5jb25uZWN0KChrZXkpID0+IHsKKysgICAgICAgICAgICAgICAgc2V0X2Vtb2ppX2Zhdm9y aXRlcygpOworKyAgICAgICAgfSk7CisrCisrICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5n ZWRbImZhdm9yaXRlLWFubm90YXRpb25zIl0uY29ubmVjdCgoa2V5KSA9PiB7CisrICAgICAgICAg ICAgICAgIHNldF9lbW9qaV9mYXZvcml0ZXMoKTsKKysgICAgICAgIH0pOworKworKyAgICAgICAg bV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJsYW5nIl0uY29ubmVjdCgoa2V5KSA9PiB7CisrICAg ICAgICAgICAgICAgIHNldF9lbW9qaV9sYW5nKCk7CisrICAgICAgICB9KTsKKysKKysgICAgICAg IG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsiaGFzLXBhcnRpYWwtbWF0Y2giXS5jb25uZWN0KChr ZXkpID0+IHsKKysgICAgICAgICAgICAgICAgc2V0X2Vtb2ppX3BhcnRpYWxfbWF0Y2goKTsKKysg ICAgICAgIH0pOworKworKyAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJwYXJ0aWFs LW1hdGNoLWxlbmd0aCJdLmNvbm5lY3QoKGtleSkgPT4geworKyAgICAgICAgICAgICAgICBzZXRf ZW1vamlfcGFydGlhbF9tYXRjaCgpOworKyAgICAgICAgfSk7CisrCisrICAgICAgICBtX3NldHRp bmdzX2Vtb2ppLmNoYW5nZWRbInBhcnRpYWwtbWF0Y2gtY29uZGl0aW9uIl0uY29ubmVjdCgoa2V5 KSA9PiB7CisrICAgICAgICAgICAgICAgIHNldF9lbW9qaV9wYXJ0aWFsX21hdGNoKCk7CisrICAg ICAgICB9KTsKKysgICAgfQorKworKworKyAgICBwcml2YXRlIHZvaWQgYmluZF9lbW9qaV9zaG9y dGN1dCgpIHsKKysjaWYgRU1PSklfRElDVAorKyAgICAgICAgc3RyaW5nW10gYWNjZWxlcmF0b3Jz ID0gbV9zZXR0aW5nc19lbW9qaS5nZXRfc3RydigiaG90a2V5Iik7CisrCisrICAgICAgICB2YXIg a2V5YmluZGluZ19tYW5hZ2VyID0gS2V5YmluZGluZ01hbmFnZXIuZ2V0X2luc3RhbmNlKCk7Cisr CisrICAgICAgICBmb3JlYWNoICh2YXIgYWNjZWxlcmF0b3IgaW4gYWNjZWxlcmF0b3JzKSB7Cisr ICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5rZXliaW5kaW5nX21hbmFnZXJfYmluZCgKKysgICAg ICAgICAgICAgICAgICAgIGtleWJpbmRpbmdfbWFuYWdlciwKKysgICAgICAgICAgICAgICAgICAg IHJlZiBtX2tleWJpbmRpbmdzLAorKyAgICAgICAgICAgICAgICAgICAgYWNjZWxlcmF0b3IsCisr ICAgICAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLktleUV2ZW50RnVuY1R5cGUuRU1PSklf VFlQSU5HLAorKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2Vtb2ppX3R5cGluZywKKysgICAg ICAgICAgICAgICAgICAgIG51bGwpOworKyAgICAgICAgfQorKyNlbmRpZgorKyAgICB9CisrCisr CisrICAgIHByaXZhdGUgdm9pZCBzZXRfZW1vamlfZmF2b3JpdGVzKCkgeworKyAgICAgICAgbV9l bW9qaWVyX2Zhdm9yaXRlcyA9IG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0cnYoImZhdm9yaXRlcyIp OworKyAgICAgICAgSUJ1c0Vtb2ppZXIuc2V0X2Zhdm9yaXRlcygKKysgICAgICAgICAgICAgICAg bV9lbW9qaWVyX2Zhdm9yaXRlcywKKysgICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5n ZXRfc3RydigiZmF2b3JpdGUtYW5ub3RhdGlvbnMiKSk7CisrICAgIH0KKysKKysKKysgICAgcHJp dmF0ZSB2b2lkIHNldF9lbW9qaV9sYW5nKCkgeworKyAgICAgICAgaWYgKG1fZW1vamllcl9zZXRf ZW1vamlfbGFuZ19pZCA+IDApIHsKKysgICAgICAgICAgICBHTGliLlNvdXJjZS5yZW1vdmUobV9l bW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkKTsKKysgICAgICAgICAgICBtX2Vtb2ppZXJfc2V0X2Vt b2ppX2xhbmdfaWQgPSAwOworKyAgICAgICAgfQorKyAgICAgICAgbV9lbW9qaWVyX3NldF9lbW9q aV9sYW5nX2lkID0gR0xpYi5JZGxlLmFkZCgoKSA9PiB7CisrICAgICAgICAgICAgSUJ1c0Vtb2pp ZXIuc2V0X2Fubm90YXRpb25fbGFuZygKKysgICAgICAgICAgICAgICAgICAgIG1fc2V0dGluZ3Nf ZW1vamkuZ2V0X3N0cmluZygibGFuZyIpKTsKKysgICAgICAgICAgICBtX2Vtb2ppZXJfc2V0X2Vt b2ppX2xhbmdfaWQgPSAwOworKyAgICAgICAgICAgIElCdXNFbW9qaWVyLmxvYWRfdW5pY29kZV9k aWN0KCk7CisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfSk7CisrICAgIH0K KysKKysKKysgICAgcHJpdmF0ZSB2b2lkIHNldF9lbW9qaV9wYXJ0aWFsX21hdGNoKCkgeworKyAg ICAgICAgSUJ1c0Vtb2ppZXIuc2V0X3BhcnRpYWxfbWF0Y2goCisrICAgICAgICAgICAgICAgIG1f c2V0dGluZ3NfZW1vamkuZ2V0X2Jvb2xlYW4oImhhcy1wYXJ0aWFsLW1hdGNoIikpOworKyAgICAg ICAgSUJ1c0Vtb2ppZXIuc2V0X3BhcnRpYWxfbWF0Y2hfbGVuZ3RoKAorKyAgICAgICAgICAgICAg ICBtX3NldHRpbmdzX2Vtb2ppLmdldF9pbnQoInBhcnRpYWwtbWF0Y2gtbGVuZ3RoIikpOworKyAg ICAgICAgSUJ1c0Vtb2ppZXIuc2V0X3BhcnRpYWxfbWF0Y2hfY29uZGl0aW9uKAorKyAgICAgICAg ICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmdldF9pbnQoInBhcnRpYWwtbWF0Y2gtY29uZGl0aW9u IikpOworKyAgICB9CisrCisrCisrICAgIHB1YmxpYyB2b2lkIGxvYWRfc2V0dGluZ3MoKSB7Cisr ICAgICAgICBCaW5kaW5nQ29tbW9uLnVuYmluZF9zd2l0Y2hfc2hvcnRjdXQoQmluZGluZ0NvbW1v bi5LZXlFdmVudEZ1bmNUeXBlLkFOWSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtX2tleWJpbmRpbmdzKTsKKysgICAgICAgIGJpbmRfZW1vamlfc2hvcnRj dXQoKTsKKysgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9mb250KG1fc2V0dGluZ3Nf cGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdz X2Vtb2ppLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3Nz X3Byb3ZpZGVyKTsKKysgICAgICAgIHNldF9lbW9qaV9mYXZvcml0ZXMoKTsKKysgICAgICAgIHNl dF9lbW9qaV9sYW5nKCk7CisrICAgICAgICBzZXRfZW1vamlfcGFydGlhbF9tYXRjaCgpOworKyAg ICB9CisrCisrCisrICAgIC8qKgorKyAgICAgKiBkaXNjb25uZWN0X3NpZ25hbHM6CisrICAgICAq CisrICAgICAqIENhbGwgdGhpcyBBUEkgYmVmb3JlIG1fcGFuZWwgPSBudWxsIHNvIHRoYXQgdGhl IHJlZl9jb3VudCBiZWNvbWVzIDAKKysgICAgICovCisrICAgIHB1YmxpYyB2b2lkIGRpc2Nvbm5l Y3Rfc2lnbmFscygpIHsKKysgICAgICAgIGlmIChtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQg PiAwKSB7CisrICAgICAgICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1fZW1vamllcl9zZXRfZW1v amlfbGFuZ19pZCk7CisrICAgICAgICAgICAgbV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkID0g MDsKKysgICAgICAgIH0KKysgICAgfQorKworKworKyAgICBwcml2YXRlIHZvaWQgc2hvd19lbW9q aWVyKEdkay5FdmVudCBldmVudCkgeworKyAgICAgICAgbV9lbW9qaWVyID0gbmV3IElCdXNFbW9q aWVyKCk7CisrICAgICAgICBzdHJpbmcgZW1vamkgPSBtX2Vtb2ppZXIucnVuKG1fcmVhbF9jdXJy ZW50X2NvbnRleHRfcGF0aCwgZXZlbnQpOworKyAgICAgICAgaWYgKGVtb2ppID09IG51bGwpIHsK KysgICAgICAgICAgICBtX2Vtb2ppZXIgPSBudWxsOworKyAgICAgICAgICAgIHJldHVybjsKKysg ICAgICAgIH0KKysgICAgICAgIHRoaXMuZW1vamllcl9mb2N1c19jb21taXQoKTsKKysgICAgfQor KworKworKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlX2Vtb2ppX3R5cGluZyhHZGsuRXZlbnQgZXZl bnQpIHsKKysgICAgICAgIGlmIChtX2Vtb2ppZXIgIT0gbnVsbCAmJiBtX2Vtb2ppZXIuaXNfcnVu bmluZygpKSB7CisrICAgICAgICAgICAgbV9lbW9qaWVyLnByZXNlbnRfY2VudHJhbGl6ZShldmVu dCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgc2hvd19lbW9q aWVyKGV2ZW50KTsKKysgICAgfQorKworKworKyAgICBwcml2YXRlIGJvb2wgZW1vamllcl9mb2N1 c19jb21taXRfcmVhbCgpIHsKKysgICAgICAgIGlmIChtX2Vtb2ppZXIgPT0gbnVsbCkKKysgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIHN0cmluZyBzZWxlY3RlZF9zdHJpbmcgPSBt X2Vtb2ppZXIuZ2V0X3NlbGVjdGVkX3N0cmluZygpOworKyAgICAgICAgc3RyaW5nIHByZXZfY29u dGV4dF9wYXRoID0gbV9lbW9qaWVyLmdldF9pbnB1dF9jb250ZXh0X3BhdGgoKTsKKysgICAgICAg IGlmIChzZWxlY3RlZF9zdHJpbmcgIT0gbnVsbCAmJgorKyAgICAgICAgICAgIHByZXZfY29udGV4 dF9wYXRoICE9ICIiICYmCisrICAgICAgICAgICAgcHJldl9jb250ZXh0X3BhdGggPT0gbV9jdXJy ZW50X2NvbnRleHRfcGF0aCkgeworKyAgICAgICAgICAgIElCdXMuVGV4dCB0ZXh0ID0gbmV3IElC dXMuVGV4dC5mcm9tX3N0cmluZyhzZWxlY3RlZF9zdHJpbmcpOworKyAgICAgICAgICAgIGNvbW1p dF90ZXh0KHRleHQpOworKyAgICAgICAgICAgIG1fZW1vamllciA9IG51bGw7CisrICAgICAgICAg ICAgYm9vbCBoYXNfZmF2b3JpdGUgPSBmYWxzZTsKKysgICAgICAgICAgICBmb3JlYWNoICh1bm93 bmVkIHN0cmluZyBmYXZvcml0ZSBpbiBtX2Vtb2ppZXJfZmF2b3JpdGVzKSB7CisrICAgICAgICAg ICAgICAgIGlmIChmYXZvcml0ZSA9PSBzZWxlY3RlZF9zdHJpbmcpIHsKKysgICAgICAgICAgICAg ICAgICAgIGhhc19mYXZvcml0ZSA9IHRydWU7CisrICAgICAgICAgICAgICAgICAgICBicmVhazsK KysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoIWhh c19mYXZvcml0ZSkgeworKyAgICAgICAgICAgICAgICBtX2Vtb2ppZXJfZmF2b3JpdGVzICs9IHNl bGVjdGVkX3N0cmluZzsKKysgICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5zZXRfc3Ry digiZmF2b3JpdGVzIiwgbV9lbW9qaWVyX2Zhdm9yaXRlcyk7CisrICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICAgICAgfQorKworKyAgICAgICAgcmV0dXJuIGZh bHNlOworKyAgICB9CisrCisrCisrICAgIHByaXZhdGUgdm9pZCBlbW9qaWVyX2ZvY3VzX2NvbW1p dCgpIHsKKysgICAgICAgIGlmIChtX2Vtb2ppZXIgPT0gbnVsbCkKKysgICAgICAgICAgICByZXR1 cm47CisrICAgICAgICBzdHJpbmcgc2VsZWN0ZWRfc3RyaW5nID0gbV9lbW9qaWVyLmdldF9zZWxl Y3RlZF9zdHJpbmcoKTsKKysgICAgICAgIHN0cmluZyBwcmV2X2NvbnRleHRfcGF0aCA9IG1fZW1v amllci5nZXRfaW5wdXRfY29udGV4dF9wYXRoKCk7CisrICAgICAgICBpZiAoc2VsZWN0ZWRfc3Ry aW5nID09IG51bGwgJiYKKysgICAgICAgICAgICBwcmV2X2NvbnRleHRfcGF0aCAhPSAiIiAmJgor KyAgICAgICAgICAgIG1fZW1vamllci5pc19ydW5uaW5nKCkpIHsKKysgICAgICAgICAgICB2YXIg Y29udGV4dCA9IEdMaWIuTWFpbkNvbnRleHQuZGVmYXVsdCgpOworKyAgICAgICAgICAgIGlmICht X2Vtb2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQgPiAwICYmCisrICAgICAgICAgICAgICAgIGNv bnRleHQuZmluZF9zb3VyY2VfYnlfaWQobV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lkKQor KyAgICAgICAgICAgICAgICAgICAgICAgICE9IG51bGwpIHsKKysgICAgICAgICAgICAgICAgR0xp Yi5Tb3VyY2UucmVtb3ZlKG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCk7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCA9IEdM aWIuVGltZW91dC5hZGQoMTAwLCAoKSA9PiB7CisrICAgICAgICAgICAgICAgIC8vIGZvY3VzX2lu IGlzIGNvbW1pbmcgYmVmb3JlIHN3aXRjaGVyIHJldHVybnMKKysgICAgICAgICAgICAgICAgZW1v amllcl9mb2N1c19jb21taXRfcmVhbCgpOworKyAgICAgICAgICAgICAgICBtX2Vtb2ppZXJfZm9j dXNfY29tbWl0X3RleHRfaWQgPSAtMTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor KyAgICAgICAgICAgIH0pOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBpZiAoZW1v amllcl9mb2N1c19jb21taXRfcmVhbCgpKSB7CisrICAgICAgICAgICAgICAgIHZhciBjb250ZXh0 ID0gR0xpYi5NYWluQ29udGV4dC5kZWZhdWx0KCk7CisrICAgICAgICAgICAgICAgIGlmIChtX2Vt b2ppZXJfZm9jdXNfY29tbWl0X3RleHRfaWQgPiAwICYmCisrICAgICAgICAgICAgICAgICAgICBj b250ZXh0LmZpbmRfc291cmNlX2J5X2lkKG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCkK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gbnVsbCkgeworKyAgICAgICAgICAgICAg ICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1fZW1vamllcl9mb2N1c19jb21taXRfdGV4dF9pZCk7 CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbV9lbW9qaWVyX2ZvY3VzX2Nv bW1pdF90ZXh0X2lkID0gLTE7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9Cisr CisrCisrICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIGZvY3VzX2luKHN0cmluZyBpbnB1dF9jb250 ZXh0X3BhdGgpIHsKKysgICAgICAgIG1fY3VycmVudF9jb250ZXh0X3BhdGggPSBpbnB1dF9jb250 ZXh0X3BhdGg7CisrCisrICAgICAgICAvKiAnZmFrZScgaW5wdXQgY29udGV4dCBpcyBuYW1lZCBh cyAKKysgICAgICAgICAqICcvb3JnL2ZyZWVkZXNrdG9wL0lCdXMvSW5wdXRDb250ZXh0XzEnIGFu ZCBhbHdheXMgc2VuZCBpbgorKyAgICAgICAgICogZm9jdXMtb3V0IGV2ZW50cyBieSBpYnVzLWRh ZW1vbiBmb3IgdGhlIGdsb2JhbCBlbmdpbmUgbW9kZS4KKysgICAgICAgICAqIE5vdyBpYnVzLWRh ZW1vbiBhc3N1bWVzIHRvIGFsd2F5cyB1c2UgdGhlIGdsb2JhbCBlbmdpbmUuCisrICAgICAgICAg KiBCdXQgdGhpcyBldmVudCBzaG91bGQgbm90IGJlIHVzZWQgZm9yIG1vZGFsIGRpYWxvZ3MKKysg ICAgICAgICAqIHN1Y2ggYXMgU3dpdGNoZXIuCisrICAgICAgICAgKi8KKysgICAgICAgIGlmICgh aW5wdXRfY29udGV4dF9wYXRoLmhhc19zdWZmaXgoIklucHV0Q29udGV4dF8xIikpIHsKKysgICAg ICAgICAgICBtX3JlYWxfY3VycmVudF9jb250ZXh0X3BhdGggPSBtX2N1cnJlbnRfY29udGV4dF9w YXRoOworKyAgICAgICAgICAgIHRoaXMuZW1vamllcl9mb2N1c19jb21taXQoKTsKKysgICAgICAg IH0KKysgICAgfQorKworKworKyAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBmb2N1c19vdXQoc3Ry aW5nIGlucHV0X2NvbnRleHRfcGF0aCkgeworKyAgICAgICAgbV9jdXJyZW50X2NvbnRleHRfcGF0 aCA9ICIiOworKyAgICB9CisrCisrCisrICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHBhbmVsX2V4 dGVuc2lvbl9yZWNlaXZlZChHTGliLlZhcmlhbnQgZGF0YSkgeworKyAgICAgICAgSUJ1cy5YRXZl bnQ/IHhldmVudCA9IElCdXMuU2VyaWFsaXphYmxlLmRlc2VyaWFsaXplX29iamVjdChkYXRhKQor KyAgICAgICAgICAgICAgICBhcyBJQnVzLlhFdmVudDsKKysgICAgICAgIGlmICh4ZXZlbnQgPT0g bnVsbCkgeworKyAgICAgICAgICAgIHdhcm5pbmcgKCJGYWlsZWQgdG8gZGVzZXJpYWxpemUgSUJ1 c1hFdmVudCIpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgICAgIGlm ICh4ZXZlbnQuZ2V0X3B1cnBvc2UoKSAhPSAiZW1vamkiKSB7CisrICAgICAgICAgICAgc3RyaW5n IGZvcm1hdCA9ICJUaGUgcHVycG9zZSAlcyBpcyBub3QgaW1wbGVtZW50ZWQgaW4gUGFuZWxFeHRl bnNpb24iOworKyAgICAgICAgICAgIHdhcm5pbmcgKGZvcm1hdC5wcmludGYoeGV2ZW50LmdldF9w dXJwb3NlKCkpKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBH ZGsuRXZlbnRUeXBlIGV2ZW50X3R5cGU7CisrICAgICAgICBpZiAoeGV2ZW50LmdldF9ldmVudF90 eXBlKCkgPT0gSUJ1cy5YRXZlbnRUeXBlLktFWV9QUkVTUykgeworKyAgICAgICAgICAgIGV2ZW50 X3R5cGUgPSBHZGsuRXZlbnRUeXBlLktFWV9QUkVTUzsKKysgICAgICAgIH0gZWxzZSBpZiAoeGV2 ZW50LmdldF9ldmVudF90eXBlKCkgPT0gSUJ1cy5YRXZlbnRUeXBlLktFWV9SRUxFQVNFKSB7Cisr ICAgICAgICAgICAgZXZlbnRfdHlwZSA9IEdkay5FdmVudFR5cGUuS0VZX1JFTEVBU0U7CisrICAg ICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIHdhcm5pbmcgKCJOb3Qgc3VwcG9ydGVkIHR5cGUg JWQiLnByaW50Zih4ZXZlbnQuZ2V0X2V2ZW50X3R5cGUoKSkpOworKyAgICAgICAgICAgIHJldHVy bjsKKysgICAgICAgIH0KKysgICAgICAgIEdkay5FdmVudCBldmVudCA9IG5ldyBHZGsuRXZlbnQo ZXZlbnRfdHlwZSk7CisrICAgICAgICBldmVudC5rZXkudGltZSA9IHhldmVudC5nZXRfdGltZSgp OworKyAgICAgICAgR2RrLkRpc3BsYXk/IGRpc3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVs dCgpOworKyAgICAgICAgWC5XaW5kb3cgeGlkID0geGV2ZW50LmdldF93aW5kb3coKTsKKysgICAg ICAgIEdkay5YMTEuV2luZG93IHdpbmRvdzsKKysgICAgICAgIHdpbmRvdyA9IEdkay5YMTEuV2lu ZG93Lmxvb2t1cF9mb3JfZGlzcGxheSgKKysgICAgICAgICAgICAgICAgZGlzcGxheSBhcyBHZGsu WDExLkRpc3BsYXksIHhpZCk7CisrICAgICAgICBpZiAod2luZG93ICE9IG51bGwpIHsKKysgICAg ICAgICAgICBldmVudC5rZXkud2luZG93ID0gd2luZG93OworKyAgICAgICAgfSBlbHNlIHsKKysg ICAgICAgICAgICB3aW5kb3cgPSBuZXcgR2RrLlgxMS5XaW5kb3cuZm9yZWlnbl9mb3JfZGlzcGxh eSgKKysgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgYXMgR2RrLlgxMS5EaXNwbGF5LCB4aWQp OworKyAgICAgICAgICAgIGV2ZW50LmtleS53aW5kb3cgPSB3aW5kb3c7CisrICAgICAgICB9Cisr ICAgICAgICBoYW5kbGVfZW1vamlfdHlwaW5nKGV2ZW50KTsKKysgICAgfQorK30KKy0tIAorMi4x NC4zCisKK0Zyb20gMzY2OTYzZDU3ZDE0Njg5MTQ2MTFjNzE5MjljYzY0YzgzYmU5YWZmZCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9QaW90cj0yMERyPUM0PTg1Zz89 IDxwaW90cmRyYWdAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyMCBGZWIgMjAxOCAxODo1NzozMiAr MDkwMAorU3ViamVjdDogW1BBVENIXSBGaXggdHlwb3MgaW4gdHJhbnNsYXRhYmxlIHN0cmluZ3MK K01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRG LTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworQlVHPWh0dHBzOi8vZ2l0aHVi LmNvbS9pYnVzL2lidXMvcHVsbC8xOTgzCitSPVNoYXduLlAuSHVhbmdAZ21haWwuY29tCisKK1Jl dmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMzM2NzAwNDMKKworUGF0 Y2ggZnJvbSBQaW90ciBEcsSFZyA8cGlvdHJkcmFnQGdtYWlsLmNvbT4uCistLS0KKyBkYXRhL2li dXMuc2NoZW1hcy5pbiAgICB8IDYgKysrLS0tCisgdWkvZ3RrMy9lbW9qaWVyYXBwLnZhbGEgfCAy ICstCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9kYXRhL2lidXMuc2NoZW1hcy5pbiBiL2RhdGEvaWJ1cy5zY2hlbWFzLmlu CitpbmRleCAyNzgzNjJkNy4uNDUyM2NjYzQgMTAwNjQ0CistLS0gYS9kYXRhL2lidXMuc2NoZW1h cy5pbgorKysrIGIvZGF0YS9pYnVzLnNjaGVtYXMuaW4KK0BAIC02NCw3ICs2NCw3IEBACisgICAg ICAgPGRlZmF1bHQ+W2FyYSxiZyxjeixkZXYsZ3IsZ3VyLGluLGpwKGthbmEpLG1hbCxta2QscnUs dWFdPC9kZWZhdWx0PgorICAgICAgIDxsb2NhbGUgbmFtZT0iQyI+CisgICAgICAgICA8c2hvcnQ+ TGF0aW4gbGF5b3V0cyB3aGljaCBoYXZlIG5vIEFTQ0lJPC9zaG9ydD4KKy0gICAgICAgICAgIDxs b25nPlVTIGxheW91dCBpcyBhcHBlbmRlZCB0byB0aGUgbGF0aW4gbGF5b3V0cy4gdmFyaWFudCBj YW4gYmUKKysgICAgICAgICAgIDxsb25nPlVTIGxheW91dCBpcyBhcHBlbmRlZCB0byB0aGUgTGF0 aW4gbGF5b3V0cy4gdmFyaWFudCBjYW4gYmUKKyAgICAgICAgICAgICAgICAgIG9taXR0ZWQuCisg ICAgICAgICAgICA8L2xvbmc+CisgICAgICAgPC9sb2NhbGU+CitAQCAtMjk5LDcgKzI5OSw3IEBA CisgICAgICAgICAgICAgICAgICAgYW5kIGJsdWUsIDMuIGEgUkdCIGNvbG9yIGluIGZvcm0gJ3Jn YihyLGcsYiknIG9yCisgICAgICAgICAgICAgICAgICAgNC4gYSBSR0JBIGNvbG9yIGluIGZvcm0g J3JnYmEocixnLGIsYSknIHdoZXJlICdyJywKKyAgICAgICAgICAgICAgICAgICAnZycsIGFuZCAn YicgYXJlIGVpdGhlciBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCB0byAyNTUKKy0gICAgICAgICAg ICAgICAgICBvciBwcmVjZW50YWdlIHZhbHVlcyBpbiB0aGUgcmFuZ2UgMCUgdG8gMTAwJSwgYW5k CisrICAgICAgICAgICAgICAgICAgb3IgcGVyY2VudGFnZSB2YWx1ZXMgaW4gdGhlIHJhbmdlIDAl IHRvIDEwMCUsIGFuZAorICAgICAgICAgICAgICAgICAgICdhJyBpcyBhIGZsb2F0aW5nIHBvaW50 IHZhbHVlIGluIHRoZSByYW5nZSAwIHRvIDEKKyAgICAgICAgICAgICAgICAgICBvZiB0aGUgYWxw aGEuPC9sb25nPgorICAgICAgIDwvbG9jYWxlPgorQEAgLTM3Myw3ICszNzMsNyBAQAorICAgICAg IDxkZWZhdWx0Pk1vbm9zcGFjZSAxNjwvZGVmYXVsdD4KKyAgICAgICA8bG9jYWxlIG5hbWU9IkMi PgorICAgICAgICAgPHNob3J0PkN1c3RvbSBmb250PC9zaG9ydD4KKy0JICAgIDxsb25nPkN1c3Rv bSBmb250IG5hbWUgZm9yIGVtb2ppIGNocmFjdGVycyBvbiBlbW9qaSBkaWFsb2c8L2xvbmc+Cisr CSAgICA8bG9uZz5DdXN0b20gZm9udCBuYW1lIGZvciBlbW9qaSBjaGFyYWN0ZXJzIG9uIGVtb2pp IGRpYWxvZzwvbG9uZz4KKyAgICAgICA8L2xvY2FsZT4KKyAgICAgPC9zY2hlbWE+CisgICAgIDxz Y2hlbWE+CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyYXBwLnZhbGEgYi91aS9ndGszL2Vt b2ppZXJhcHAudmFsYQoraW5kZXggZDgxNjM1MmUuLmVmZWRmMzQ0IDEwMDY0NAorLS0tIGEvdWkv Z3RrMy9lbW9qaWVyYXBwLnZhbGEKKysrKyBiL3VpL2d0azMvZW1vamllcmFwcC52YWxhCitAQCAt OTQsNyArOTQsNyBAQCBwdWJsaWMgY2xhc3MgRW1vamlBcHBsaWNhdGlvbiA6IEFwcGxpY2F0aW9u IHsKKyAgICAgICAgICAgICAgIC8qIFRSQU5TTEFUT1JTOiAiRk9OVCIgc2hvdWxkIGJlIGNhcGl0 YWwgYW5kIHRyYW5zbGF0YWJsZS4KKyAgICAgICAgICAgICAgICAqIEl0J3MgdXNlZCBmb3IgYW4g YXJndW1lbnQgY29tbWFuZCAtLWZvbnQ9Rk9OVAorICAgICAgICAgICAgICAgICovCistICAgICAg ICAgICAgICBOXygiXCJGT05UXCIgZm9yIGVtb2ppIGNocmFjdGVycyBvbiBlbW9qaSBkaWFsb2ci KSwKKysgICAgICAgICAgICAgIE5fKCJcIkZPTlRcIiBmb3IgZW1vamkgY2hhcmFjdGVycyBvbiBl bW9qaSBkaWFsb2ciKSwKKyAgICAgICAgICAgICAgIE5fKCJGT05UIikgfSwKKyAgICAgICAgICAg ICB7ICJsYW5nIiwgMCwgMCwgT3B0aW9uQXJnLlNUUklORywgb3V0IGFubm90YXRpb25fbGFuZywK KyAgICAgICAgICAgICAgIC8qIFRSQU5TTEFUT1JTOiAiTEFORyIgc2hvdWxkIGJlIGNhcGl0YWwg YW5kIHRyYW5zbGF0YWJsZS4KKy0tIAorMi4xNC4zCisKK0Zyb20gZDFlYmIzZDc3ZWJmZThmNTgx ODgyNjFjMzgzZDgxMjJlMjEyNWZlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1 aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjEgRmViIDIw MTggMTI6MTI6MTEgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogU2hvdyBjb2RlIHBv aW50cyBvbiBVbmljb2RlIG5hbWUgbGlzdCBkaWFsb2cKKworVGhlIGNvZGUgcG9pbnRzIGFyZSB1 c2VmdWwgc2luY2UgdGhlIGxpc3QgaGFzIG1hbnkgbmFtZXMuCisKK1I9U2hhd24uUC5IdWFuZ0Bn bWFpbC5jb20KKworUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzM0 MDc3MDA0MworLS0tCisgdWkvZ3RrMy9lbW9qaWVyLnZhbGEgfCAxNCArKysrKysrKysrKystLQor IDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQoraW5k ZXggMGJmMzRkYTguLmM4NWRmYTg2IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEK KysrKyBiL3VpL2d0azMvZW1vamllci52YWxhCitAQCAtMTk4LDcgKzE5OCw4IEBAIHB1YmxpYyBj bGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgIHByaXZhdGUg Y2xhc3MgRVBhZGRlZExhYmVsQm94IDogR3RrLkJveCB7CisgICAgICAgICBwdWJsaWMgRVBhZGRl ZExhYmVsQm94KHN0cmluZyAgICAgICAgICB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHdGsuQWxpZ24gICAgICAgYWxpZ24sCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRyYXZlbERpcmVjdGlvbiBkaXJlY3Rpb249VHJhdmVsRGlyZWN0aW9uLk5PTkUpIHsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVsRGlyZWN0aW9uIGRpcmVjdGlv bj1UcmF2ZWxEaXJlY3Rpb24uTk9ORSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RyaW5nPyAgICAgICAgIGNhcHRpb249bnVsbCkgeworICAgICAgICAgICAgIEdMaWIuT2JqZWN0 KAorICAgICAgICAgICAgICAgICBuYW1lIDogIklCdXNFbW9qaWVyUGFkZGVkTGFiZWxCb3giLAor ICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbiA6IEd0ay5PcmllbnRhdGlvbi5IT1JJWk9OVEFM LAorQEAgLTIxOCw2ICsyMTksMTEgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFw cGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgRVBhZGRlZExh YmVsIGxhYmVsID0gbmV3IEVQYWRkZWRMYWJlbCh0ZXh0LCBhbGlnbik7CisgICAgICAgICAgICAg cGFja19zdGFydChsYWJlbCwgdHJ1ZSwgdHJ1ZSwgMCk7CisrICAgICAgICAgICAgaWYgKGNhcHRp b24gIT0gbnVsbCkgeworKyAgICAgICAgICAgICAgICBFUGFkZGVkTGFiZWwgbGFiZWxfciA9IG5l dyBFUGFkZGVkTGFiZWwoY2FwdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5BbGlnbi5FTkQpOworKyAgICAgICAgICAgICAg ICBwYWNrX2VuZChsYWJlbF9yLCB0cnVlLCB0cnVlLCAwKTsKKysgICAgICAgICAgICB9CisgICAg ICAgICB9CisgICAgIH0KKyAgICAgcHJpdmF0ZSBjbGFzcyBFVGl0bGVMYWJlbEJveCA6IEd0ay5I ZWFkZXJCYXIgeworQEAgLTk3OSw5ICs5ODUsMTMgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVy IDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgIHVpbnQgbiA9IDA7CisgICAgICAg ICBmb3JlYWNoICh1bm93bmVkIElCdXMuVW5pY29kZUJsb2NrIGJsb2NrIGluIG1fdW5pY29kZV9i bG9ja19saXN0KSB7CisgICAgICAgICAgICAgc3RyaW5nIG5hbWUgPSBibG9jay5nZXRfbmFtZSgp OworKyAgICAgICAgICAgIHN0cmluZyBjYXB0aW9uID0gIlUrJTA4WCIucHJpbnRmKGJsb2NrLmdl dF9zdGFydCgpKTsKKyAgICAgICAgICAgICBFQm94Um93IHJvdyA9IG5ldyBFQm94Um93KG5hbWUp OworICAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRnZXQgPQorLSAgICAgICAgICAgICAg ICAgICAgbmV3IEVQYWRkZWRMYWJlbEJveChfKG5hbWUpLCBHdGsuQWxpZ24uQ0VOVEVSKTsKKysg ICAgICAgICAgICAgICAgICAgIG5ldyBFUGFkZGVkTGFiZWxCb3goXyhuYW1lKSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkFsaWduLkNFTlRFUiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhdmVsRGlyZWN0aW9uLk5PTkUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb24pOworICAg ICAgICAgICAgIHJvdy5hZGQod2lkZ2V0KTsKKyAgICAgICAgICAgICBtX2xpc3RfYm94LmFkZChy b3cpOworICAgICAgICAgICAgIGlmIChuKysgPT0gbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXgpIHsK Ky0tIAorMi4xNC4zCisKK0Zyb20gZmM1NGIwYzA1MWMyZWI0YTJjMWY4MzZiMTQxNWRlZjAwMzE0 Y2ZjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjEgRmViIDIwMTggMTI6MTc6MzEgKzA5MDAK K1N1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogTG9hZCBVbmljb2RlIGRhdGEgd2hlbiBvcGVuIHRo ZSBkaWFsb2cgYnkKKyBkZWZhdWx0CisKK1RoZSBlbW9qaSBkYXRhIHJlcXVpcmVzIGFib3V0IDEw TUIgYW5kIHRoZSBVbmljb2RlIGRhdGEgcmVxdWlyZXMgYWJvdXQgMTVNQi4KK05vdyB0aGUgZW1v amkgZGF0YSBpcyBsb2FkZWQgYXQgdGhlIHRpbWUgb2Ygc3RhcnR1cCBhbmQgdGhlIFVuaWNvZGUg ZGF0YQoraXMgbG9hZGVkIGlmIHVzZXJzIG9wZW4gdGhlIGRpYWxvZyBhdCB0aGUgYmVnaW5uaW5n LgorVGhlIHNldHRpbmdzIGNhbiBiZSBjdXN0b21pemVkIHdpdGggZ3NldHRpbmdzIGNvbW1hbmQg YW5kIHRoZSBrZXlzCitvZiAnbG9hZC1lbW9qaS1hdC1zdGFydHVwJyBhbmQgJ2xvYWQtdW5pY29k ZS1hdC1zdGFydHVwJyBpbgorJ29yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsLmVtb2ppJyBzY2hl bWEuCisKK1JldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zNDA3ODAw NDMKKy0tLQorIGRhdGEvaWJ1cy5zY2hlbWFzLmluICAgICAgfCAzMiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKworIHVpL2d0azMvcGFuZWxiaW5kaW5nLnZhbGEgfCA0MSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNzEg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RhdGEvaWJ1cy5z Y2hlbWFzLmluIGIvZGF0YS9pYnVzLnNjaGVtYXMuaW4KK2luZGV4IDQ1MjNjY2M0Li4zYzZiNmY2 OSAxMDA2NDQKKy0tLSBhL2RhdGEvaWJ1cy5zY2hlbWFzLmluCisrKysgYi9kYXRhL2lidXMuc2No ZW1hcy5pbgorQEAgLTQ1NSw2ICs0NTUsMzggQEAKKyAgICAgICAgICAgICAgICAgICA8L2xvbmc+ CisgICAgICAgPC9sb2NhbGU+CisgICAgIDwvc2NoZW1hPgorKyAgICA8c2NoZW1hPgorKyAgICAg IDxrZXk+L3NjaGVtYXMvZGVza3RvcC9pYnVzL3BhbmVsL2Vtb2ppL2xvYWQtZW1vamktYXQtc3Rh cnR1cDwva2V5PgorKyAgICAgIDxhcHBseXRvPi9kZXNrdG9wL2lidXMvcGFuZWwvZW1vamkvbG9h ZC1lbW9qaS1hdC1zdGFydHVwPC9hcHBseXRvPgorKyAgICAgIDxvd25lcj5pYnVzPC9vd25lcj4K KysgICAgICA8dHlwZT5ib29sPC90eXBlPgorKyAgICAgIDxkZWZhdWx0PnRydWU8L2RlZmF1bHQ+ CisrICAgICAgPGxvY2FsZSBuYW1lPSJDIj4KKysgICAgICAgIDxzaG9ydD5Mb2FkIHRoZSBlbW9q aSBkYXRhIGF0IHRoZSB0aW1lIG9mIHN0YXJ0dXA8L3Nob3J0PgorKwkgICAgPGxvbmc+TG9hZCB0 aGUgZW1vamkgZGF0YSBhdCB0aGUgdGltZSBvZiBzdGFydHVwIGlmIHRydWUuCisrICAgICAgICAg ICAgICAgICAgQWJvdXQgMTBNQiBtZW1vcnkgaXMgbmVlZGVkIHRvIGxvYWQgdGhlIGRhdGEuCisr ICAgICAgICAgICAgICAgICAgTG9hZCB0aGUgZW1vamkgZGF0YSB3aGVuIG9wZW4gdGhlIGVtb2pp IGRpYWxvZyBhdCB0aGUKKysgICAgICAgICAgICAgICAgICBiZWdpbm5pbmcgaWYgZmFsc2UuCisr ICAgICAgICAgICAgPC9sb25nPgorKyAgICAgIDwvbG9jYWxlPgorKyAgICA8L3NjaGVtYT4KKysg ICAgPHNjaGVtYT4KKysgICAgICA8a2V5Pi9zY2hlbWFzL2Rlc2t0b3AvaWJ1cy9wYW5lbC9lbW9q aS9sb2FkLXVuaWNvZGUtYXQtc3RhcnR1cDwva2V5PgorKyAgICAgIDxhcHBseXRvPi9kZXNrdG9w L2lidXMvcGFuZWwvZW1vamkvbG9hZC11bmljb2RlLWF0LXN0YXJ0dXA8L2FwcGx5dG8+CisrICAg ICAgPG93bmVyPmlidXM8L293bmVyPgorKyAgICAgIDx0eXBlPmJvb2w8L3R5cGU+CisrICAgICAg PGRlZmF1bHQ+ZmFsc2U8L2RlZmF1bHQ+CisrICAgICAgPGxvY2FsZSBuYW1lPSJDIj4KKysgICAg ICAgIDxzaG9ydD5Mb2FkIHRoZSBVbmljb2RlIGRhdGEgYXQgdGhlIHRpbWUgb2Ygc3RhcnR1cDwv c2hvcnQ+CisrCSAgICA8bG9uZz5Mb2FkIHRoZSBVbmljb2RlIGRhdGEgYXQgdGhlIHRpbWUgb2Yg c3RhcnR1cCBpZiB0cnVlLgorKyAgICAgICAgICAgICAgICAgIEFib3V0IDE1TUIgbWVtb3J5IGlz IG5lZWRlZCB0byBsb2FkIHRoZSBkYXRhLgorKyAgICAgICAgICAgICAgICAgIExvYWQgdGhlIFVu aWNvZGUgZGF0YSB3aGVuIG9wZW4gdGhlIGVtb2ppIGRpYWxvZyBhdCB0aGUKKysgICAgICAgICAg ICAgICAgICBiZWdpbm5pbmcgaWYgZmFsc2UuCisrICAgICAgICAgICAgICAgICAgVGhlIFVuaWNv ZGUgZGF0YSBpcyBhbHdheXMgbG9hZGVkIGFmdGVyIHRoZSBlbW9qaSBkYXRhCisrICAgICAgICAg ICAgICAgICAgaXMgbG9hZGVkIGV2ZW4gaWYgdHJ1ZS4KKysgICAgICAgICAgICA8L2xvbmc+Cisr ICAgICAgPC9sb2NhbGU+CisrICAgIDwvc2NoZW1hPgorICAgICA8c2NoZW1hPgorICAgICAgIDxr ZXk+L3NjaGVtYXMvZGVza3RvcC9pYnVzL2dlbmVyYWwvZW1iZWRfcHJlZWRpdF90ZXh0PC9rZXk+ CisgICAgICAgPGFwcGx5dG8+L2Rlc2t0b3AvaWJ1cy9nZW5lcmFsL2VtYmVkX3ByZWVkaXRfdGV4 dDwvYXBwbHl0bz4KK2RpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsYmluZGluZy52YWxhIGIvdWkv Z3RrMy9wYW5lbGJpbmRpbmcudmFsYQoraW5kZXggNTA3MDAxMjEuLjFmYmY2Y2ZjIDEwMDY0NAor LS0tIGEvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQorKysrIGIvdWkvZ3RrMy9wYW5lbGJpbmRp bmcudmFsYQorQEAgLTM1LDYgKzM1LDEwIEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKKyAgICAgcHJpdmF0ZSBjb25zdCB1aW50IFBSRUxPQURfRU5HSU5FU19ERUxB WV9USU1FID0gMzAwMDA7CisgICAgIHByaXZhdGUgR0xpYi5MaXN0PEJpbmRpbmdDb21tb24uS2V5 YmluZGluZz4gbV9rZXliaW5kaW5ncyA9CisgICAgICAgICAgICAgbmV3IEdMaWIuTGlzdDxCaW5k aW5nQ29tbW9uLktleWJpbmRpbmc+KCk7CisrICAgIHByaXZhdGUgYm9vbCBtX2xvYWRfZW1vamlf YXRfc3RhcnR1cDsKKysgICAgcHJpdmF0ZSBib29sIG1fbG9hZGVkX2Vtb2ppID0gZmFsc2U7Cisr ICAgIHByaXZhdGUgYm9vbCBtX2xvYWRfdW5pY29kZV9hdF9zdGFydHVwOworKyAgICBwcml2YXRl IGJvb2wgbV9sb2FkZWRfdW5pY29kZSA9IGZhbHNlOworIAorICAgICBwdWJsaWMgUGFuZWxCaW5k aW5nKElCdXMuQnVzIGJ1cykgeworICAgICAgICAgR0xpYi5hc3NlcnQoYnVzLmlzX2Nvbm5lY3Rl ZCgpKTsKK0BAIC0xMDksNiArMTEzLDE0IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKKyAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsicGFydGlhbC1t YXRjaC1jb25kaXRpb24iXS5jb25uZWN0KChrZXkpID0+IHsKKyAgICAgICAgICAgICAgICAgc2V0 X2Vtb2ppX3BhcnRpYWxfbWF0Y2goKTsKKyAgICAgICAgIH0pOworKworKyAgICAgICAgbV9zZXR0 aW5nc19lbW9qaS5jaGFuZ2VkWyJsb2FkLWVtb2ppLWF0LXN0YXJ0dXAiXS5jb25uZWN0KChrZXkp ID0+IHsKKysgICAgICAgICAgICAgICAgc2V0X2xvYWRfZW1vamlfYXRfc3RhcnR1cCgpOworKyAg ICAgICAgfSk7CisrCisrICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImxvYWQtdW5p Y29kZS1hdC1zdGFydHVwIl0uY29ubmVjdCgoa2V5KSA9PiB7CisrICAgICAgICAgICAgICAgIHNl dF9sb2FkX3VuaWNvZGVfYXRfc3RhcnR1cCgpOworKyAgICAgICAgfSk7CisgICAgIH0KKyAKKyAK K0BAIC0xNDgsNyArMTYwLDExIEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2 aWNlIHsKKyAgICAgICAgICAgICBJQnVzRW1vamllci5zZXRfYW5ub3RhdGlvbl9sYW5nKAorICAg ICAgICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5nZXRfc3RyaW5nKCJsYW5nIikpOwor ICAgICAgICAgICAgIG1fZW1vamllcl9zZXRfZW1vamlfbGFuZ19pZCA9IDA7CistICAgICAgICAg ICAgSUJ1c0Vtb2ppZXIubG9hZF91bmljb2RlX2RpY3QoKTsKKysgICAgICAgICAgICBtX2xvYWRl ZF9lbW9qaSA9IHRydWU7CisrICAgICAgICAgICAgaWYgKG1fbG9hZF91bmljb2RlX2F0X3N0YXJ0 dXAgJiYgIW1fbG9hZGVkX3VuaWNvZGUpIHsKKysgICAgICAgICAgICAgICAgSUJ1c0Vtb2ppZXIu bG9hZF91bmljb2RlX2RpY3QoKTsKKysgICAgICAgICAgICAgICAgbV9sb2FkZWRfdW5pY29kZSA9 IHRydWU7CisrICAgICAgICAgICAgfQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgIH0pOworICAgICB9CitAQCAtMTY0LDcgKzE4MCwyMSBAQCBjbGFzcyBQYW5lbEJpbmRpbmcg OiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgIH0KKyAKKyAKKysgICAgcHJpdmF0ZSB2b2lkIHNl dF9sb2FkX2Vtb2ppX2F0X3N0YXJ0dXAoKSB7CisrICAgICAgICBtX2xvYWRfZW1vamlfYXRfc3Rh cnR1cCA9CisrICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5nZXRfYm9vbGVhbigibG9hZC1l bW9qaS1hdC1zdGFydHVwIik7CisrICAgIH0KKysKKysKKysgICAgcHJpdmF0ZSB2b2lkIHNldF9s b2FkX3VuaWNvZGVfYXRfc3RhcnR1cCgpIHsKKysgICAgICAgIG1fbG9hZF91bmljb2RlX2F0X3N0 YXJ0dXAgPQorKyAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuZ2V0X2Jvb2xlYW4oImxvYWQt dW5pY29kZS1hdC1zdGFydHVwIik7CisrICAgIH0KKysKKyAgICAgcHVibGljIHZvaWQgbG9hZF9z ZXR0aW5ncygpIHsKKysKKysgICAgICAgIHNldF9sb2FkX2Vtb2ppX2F0X3N0YXJ0dXAoKTsKKysg ICAgICAgIHNldF9sb2FkX3VuaWNvZGVfYXRfc3RhcnR1cCgpOworICAgICAgICAgQmluZGluZ0Nv bW1vbi51bmJpbmRfc3dpdGNoX3Nob3J0Y3V0KEJpbmRpbmdDb21tb24uS2V5RXZlbnRGdW5jVHlw ZS5BTlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9r ZXliaW5kaW5ncyk7CisgICAgICAgICBiaW5kX2Vtb2ppX3Nob3J0Y3V0KCk7CitAQCAtMTcyLDcg KzIwMiw4IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NfZW1vamksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYgbV9jc3NfcHJvdmlkZXIpOwor ICAgICAgICAgc2V0X2Vtb2ppX2Zhdm9yaXRlcygpOworLSAgICAgICAgc2V0X2Vtb2ppX2xhbmco KTsKKysgICAgICAgIGlmIChtX2xvYWRfZW1vamlfYXRfc3RhcnR1cCAmJiAhbV9sb2FkZWRfZW1v amkpCisrICAgICAgICAgICAgc2V0X2Vtb2ppX2xhbmcoKTsKKyAgICAgICAgIHNldF9lbW9qaV9w YXJ0aWFsX21hdGNoKCk7CisgICAgIH0KKyAKK0BAIC0xOTEsNiArMjIyLDEyIEBAIGNsYXNzIFBh bmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAKKyAKKyAgICAgcHJpdmF0ZSB2b2lk IHNob3dfZW1vamllcihHZGsuRXZlbnQgZXZlbnQpIHsKKysgICAgICAgIGlmICghbV9sb2FkZWRf ZW1vamkpCisrICAgICAgICAgICAgc2V0X2Vtb2ppX2xhbmcoKTsKKysgICAgICAgIGlmICghbV9s b2FkZWRfdW5pY29kZSAmJiBtX2xvYWRlZF9lbW9qaSkgeworKyAgICAgICAgICAgIElCdXNFbW9q aWVyLmxvYWRfdW5pY29kZV9kaWN0KCk7CisrICAgICAgICAgICAgbV9sb2FkZWRfdW5pY29kZSA9 IHRydWU7CisrICAgICAgICB9CisgICAgICAgICBtX2Vtb2ppZXIgPSBuZXcgSUJ1c0Vtb2ppZXIo KTsKKyAgICAgICAgIHN0cmluZyBlbW9qaSA9IG1fZW1vamllci5ydW4obV9yZWFsX2N1cnJlbnRf Y29udGV4dF9wYXRoLCBldmVudCk7CisgICAgICAgICBpZiAoZW1vamkgPT0gbnVsbCkgeworLS0g CisyLjE0LjMKKwoKZGlmZiAtLWdpdCBhL2lidXMteHgtZW1vamktaGFyZmJ1enoucGF0Y2ggYi9p YnVzLXh4LWVtb2ppLWhhcmZidXp6LnBhdGNoCmluZGV4IDg5YTM3YjEuLmU5NDhhNmYgMTAwNjQ0 Ci0tLSBhL2lidXMteHgtZW1vamktaGFyZmJ1enoucGF0Y2gKKysrIGIvaWJ1cy14eC1lbW9qaS1o YXJmYnV6ei5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gYzZjMWU4ZWEwMWM4NDY2ZGM5N2Q3 NTQ5ZTc3NTM4ZTJkN2VjODcyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMTU4ZTA2 YTEwNzI2YTEwMzkzZjFmNmRkNzIzNzQ1N2IwYjYwMWY4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKIEZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1v biwgMjkgSmFuIDIwMTggMTg6Mjc6MDkgKzA5MDAKK0RhdGU6IFdlZCwgMjEgRmViIDIwMTggMTU6 Mzk6NDkgKzA5MDAKIFN1YmplY3Q6IFtQQVRDSF0gSW50ZWdyYXRlIGN1c3RvbSByZW5kZXJpbmcg dG8gdXNlIEhhcmZCdXp6IGdseXBoIGluZm8KIAogSUJ1c0ZvbnRTZXQgb2ZmZXJzIEZjRm9udFNl dCwgZ2x5cGggaW5mbyB3aXRoIEhhcmZCdXp6IGFuZCByZW5kZXJpbmcKQEAgLTIwLDExICsyMCwx MSBAQCBOZWVkIGNvbmZpZ3VyZSAtLWVuYWJsZS1oYXJmYnV6ei1mb3ItZW1vamkgb3B0aW9uIHRv IGVuYWJsZSB0aGlzIGZlYXR1cmUuCiAgYmluZGluZ3MvdmFsYS9NYWtlZmlsZS5hbSAgICAgICAg ICAgICAgfCAgIDgzICsrKwogIGJpbmRpbmdzL3ZhbGEvaWJ1cy1mb250c2V0LTEuMC5kZXBzICAg IHwgICAgMSArCiAgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5 ICsKLSB1aS9ndGszL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKworIHVp L2d0azMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgICAzNiArKwogIHVpL2d0azMv ZW1vamllci52YWxhICAgICAgICAgICAgICAgICAgIHwgIDExMSArKysrCiAgdWkvZ3RrMy9pYnVz Zm9udHNldC5jICAgICAgICAgICAgICAgICAgfCAxMDMwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiAgdWkvZ3RrMy9pYnVzZm9udHNldC5oICAgICAgICAgICAgICAgICAgfCAgMzAy ICsrKysrKysrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDE1ODkgaW5zZXJ0aW9ucygrKQorIDggZmls ZXMgY2hhbmdlZCwgMTU5MyBpbnNlcnRpb25zKCspCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJpbmRp bmdzL3ZhbGEvSUJ1c0ZvbnRTZXQtMS4wLm1ldGFkYXRhCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJp bmRpbmdzL3ZhbGEvaWJ1cy1mb250c2V0LTEuMC5kZXBzCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHVp L2d0azMvaWJ1c2ZvbnRzZXQuYwpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgaW5kZXggYmQ0MTA2OWIu LjI0MzM5NmZmIDEwMDY0NAogIF0pCiAgCiBkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9NYWtlZmlsZS5h bSBiL3VpL2d0azMvTWFrZWZpbGUuYW0KLWluZGV4IDc4NmI4MGU2Li5jZDFlOWMyYyAxMDA2NDQK K2luZGV4IDBhOGY0MjAwLi44YmIyMzQ1ZCAxMDA2NDQKIC0tLSBhL3VpL2d0azMvTWFrZWZpbGUu YW0KICsrKyBiL3VpL2d0azMvTWFrZWZpbGUuYW0KLUBAIC0xNTYsNiArMTU2LDggQEAgRVhUUkFf RElTVCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgJChtYW5fc2V2ZW5faW5f ZmlsZXMpICAgICAgICAgICAgICAgXAotICAgICBlbW9qaWVyYXBwLnZhbGEgICAgICAgICAgICAg ICAgICAgICBcCitAQCAtMTU5LDYgKzE1OSw4IEBAIEVYVFJBX0RJU1QgPSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgIGV4dGVuc2lvbi52YWxhICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgZ3RrZXh0ZW5zaW9uLnhtbC5pbiAgICAgICAgICAgICAgICAgXAogICAgICBndGtw YW5lbC54bWwuaW4gICAgICAgICAgICAgICAgICAgICBcCiArICAgIGlidXNmb250c2V0LmMgICAg ICAgICAgICAgICAgICAgICAgIFwKICsgICAgaWJ1c2ZvbnRzZXQuaCAgICAgICAgICAgICAgICAg ICAgICAgXAogICAgICBub3RpZmljYXRpb24taXRlbS54bWwgICAgICAgICAgICAgICBcCiAgICAg IG5vdGlmaWNhdGlvbi13YXRjaGVyLnhtbCAgICAgICAgICAgIFwKLSAgICAgJChOVUxMKQotQEAg LTE5OCw2ICsyMDAsMzYgQEAgZW1vamllcmFwcC5vOiAkKHNyY2RpcikvZW1vamllcmFwcC5jCisg ICAgIHBhbmVsYmluZGluZy52YWxhICAgICAgICAgICAgICAgICAgIFwKK0BAIC0yNDcsNiArMjQ5 LDQwIEBAIHBhbmVsYmluZGluZy5vOiAkKHNyY2RpcikvcGFuZWxiaW5kaW5nLmMKICAJJChBTV9W X0NDX25vKSQoQ09NUElMRSkgLWMgLW8gJEAgJDwKICAJJChOVUxMKQogIApAQCAtMjI3LDYgKzIy NywxMCBAQCBpbmRleCA3ODZiODBlNi4uY2QxZTljMmMgMTAwNjQ0CiArICAgIGlidXNmb250c2V0 LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogKyAgICAkKE5VTEwpCiArCisraWJ1 c19leHRlbnNpb25fZ3RrM19TT1VSQ0VTICs9ICAgICAgICAgICAgICAgICAgXAorKyAgICBpYnVz Zm9udHNldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgJChOVUxMKQor KwogK0FNX0NGTEFHUyArPSBcCiArICAgIEBDQUlST19DRkxBR1NAICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogKyAgICBARk9OVENPTkZJR19DRkxBR1NAICAgICAgICAgICAgICAgICAg ICAgICAgIFwKQEAgLTI1Miw3ICsyNTYsNyBAQCBpbmRleCA3ODZiODBlNi4uY2QxZTljMmMgMTAw NjQ0CiAgbWFuX3NldmVuX0RBVEEgPSQobWFuX3NldmVuX2ZpbGVzOi43PS43Lmd6KQogIG1hbl9z ZXZlbmRpciA9ICQobWFuZGlyKS9tYW43CiBkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZh bGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggNTU1ZWE2OGYuLjBhNzAzMzgzIDEwMDY0 NAoraW5kZXggYzg1ZGZhODYuLjg2NDgyNTQzIDEwMDY0NAogLS0tIGEvdWkvZ3RrMy9lbW9qaWVy LnZhbGEKICsrKyBiL3VpL2d0azMvZW1vamllci52YWxhCiBAQCAtOTksMTYgKzk5LDEwMyBAQCBw dWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewpAQCAtMzY3 LDcgKzM3MSw3IEBAIGluZGV4IDU1NWVhNjhmLi4wYTcwMzM4MyAxMDA2NDQKICAgICAgfQogICAg ICBwcml2YXRlIGNsYXNzIEVTZWxlY3RlZExhYmVsIDogRVdoaXRlTGFiZWwgewogICAgICAgICAg cHVibGljIEVTZWxlY3RlZExhYmVsKHN0cmluZyB0ZXh0KSB7Ci1AQCAtMzA3LDYgKzM5NSw5IEBA IHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CitAQCAt MzEzLDYgKzQwMSw5IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7CiAgICAgIHByaXZhdGUgc3RhdGljIGJvb2wgbV9zaG93X3VuaWNvZGUgPSBmYWxz ZTsKICAgICAgcHJpdmF0ZSBzdGF0aWMgTG9hZFByb2dyZXNzT2JqZWN0IG1fdW5pY29kZV9wcm9n cmVzc19vYmplY3Q7CiAgICAgIHByaXZhdGUgc3RhdGljIGJvb2wgbV9sb2FkZWRfdW5pY29kZSA9 IGZhbHNlOwpAQCAtMzc3LDcgKzM4MSw3IEBAIGluZGV4IDU1NWVhNjhmLi4wYTcwMzM4MyAxMDA2 NDQKICAKICAgICAgcHJpdmF0ZSBUaGVtZWRSR0JBIG1fcmdiYTsKICAgICAgcHJpdmF0ZSBHdGsu Qm94IG1fdmJveDsKLUBAIC0yMDY0LDYgKzIxNTUsMjIgQEAgcHVibGljIGNsYXNzIElCdXNFbW9q aWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKK0BAIC0yMDcwLDYgKzIxNjEsMjIgQEAgcHVi bGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKICAgICAgfQog IAogIApAQCAtNDAwLDcgKzQwNCw3IEBAIGluZGV4IDU1NWVhNjhmLi4wYTcwMzM4MyAxMDA2NDQK ICAgICAgcHVibGljIHN0YXRpYyBib29sIGhhc19sb2FkZWRfZW1vamlfZGljdCgpIHsKICAgICAg ICAgIGlmIChtX2Vtb2ppX3RvX2RhdGFfZGljdCA9PSBudWxsKQogICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKLUBAIC0yMDk0LDYgKzIyMDEsMTAgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVy IDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKK0BAIC0yMTAwLDYgKzIyMDcsMTAgQEAgcHVibGlj IGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKICAgICAgICAgIGlu dCBmb250X3NpemUgPSBmb250X2Rlc2MuZ2V0X3NpemUoKSAvIFBhbmdvLlNDQUxFOwogICAgICAg ICAgaWYgKGZvbnRfc2l6ZSAhPSAwKQogICAgICAgICAgICAgIG1fZW1vamlfZm9udF9zaXplID0g Zm9udF9zaXplOwoKZGlmZiAtLWdpdCBhL2lidXMuc3BlYyBiL2lidXMuc3BlYwppbmRleCAwYjE3 MzgxLi40NTVhOTVkIDEwMDY0NAotLS0gYS9pYnVzLnNwZWMKKysrIGIvaWJ1cy5zcGVjCkBAIC0z MCw3ICszMCw3IEBACiAKIE5hbWU6ICAgICAgICAgICBpYnVzCiBWZXJzaW9uOiAgICAgICAgMS41 LjE3Ci1SZWxlYXNlOiAgICAgICAgOCV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgOSV7P2Rpc3R9 CiBTdW1tYXJ5OiAgICAgICAgSW50ZWxsaWdlbnQgSW5wdXQgQnVzIGZvciBMaW51eCBPUwogTGlj ZW5zZTogICAgICAgIExHUEx2MisKIEdyb3VwOiAgICAgICAgICBTeXN0ZW0gRW52aXJvbm1lbnQv TGlicmFyaWVzCkBAIC0zOCwxNiArMzgsMTcgQEAgVVJMOiAgICAgICAgICAgIGh0dHBzOi8vZ2l0 aHViLmNvbS9pYnVzLyVuYW1lL3dpa2kKIFNvdXJjZTA6ICAgICAgICBodHRwczovL2dpdGh1Yi5j b20vaWJ1cy8lbmFtZS9yZWxlYXNlcy9kb3dubG9hZC8le3ZlcnNpb259LyV7bmFtZX0tJXt2ZXJz aW9ufS50YXIuZ3oKIFNvdXJjZTE6ICAgICAgICAle25hbWV9LXhpbnB1dAogU291cmNlMjogICAg ICAgICV7bmFtZX0uY29uZi41CitTb3VyY2UzOiAgICAgICAgaHR0cHM6Ly9mdWppd2FyYS5mZWRv cmFwZW9wbGUub3JnL2lidXMvcG8vJXtuYW1lfS1wby0xLjUuMTctMjAxODAyMjEudGFyLmd6CiAj IFdpbGwgcmVtb3ZlIHRoZSBhbm5vdGF0aW9uIHRhcmJhbGwgb25jZSB0aGUgcnBtIGlzIGF2YWls YWJsZSBvbiBGZWRvcmEKICMgVXBzdHJlYW1lZCBwYXRjaGVzLgogIyBQYXRjaDA6ICAgICAgICAg JSV7bmFtZX0tSEVBRC5wYXRjaAogUGF0Y2gwOiAgICAgICAgICV7bmFtZX0tSEVBRC5wYXRjaAot IyBVbmRlciB0ZXN0aW5nICMxMzQ5MTQ4ICMxMzg1MzQ5ICMxMzUwMjkxICMxNDA2Njk5ICMxNDMy MjUyCi1QYXRjaDE6ICAgICAgICAgJXtuYW1lfS0xMzg1MzQ5LXNlZ3YtYnVzLXByb3h5LnBhdGNo CiAlaWYgJXdpdGhfZW1vamlfaGFyZmJ1enoKICMgVW5kZXIgdGVzdGluZyBzZWxmIHJlbmRlcmlu ZyB1bnRpbCBQYW5nbywgRm9udGNvbmZpZywgQ2Fpcm8gYXJlIHN0YWJsZQotUGF0Y2gyOiAgICAg ICAgICV7bmFtZX0teHgtZW1vamktaGFyZmJ1enoucGF0Y2gKK1BhdGNoMTogICAgICAgICAle25h bWV9LXh4LWVtb2ppLWhhcmZidXp6LnBhdGNoCiAlZW5kaWYKKyMgVW5kZXIgdGVzdGluZyAjMTM0 OTE0OCAjMTM4NTM0OSAjMTM1MDI5MSAjMTQwNjY5OSAjMTQzMjI1MgorUGF0Y2gyOiAgICAgICAg ICV7bmFtZX0tMTM4NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOiAg Z2V0dGV4dC1kZXZlbAogQnVpbGRSZXF1aXJlczogIGxpYnRvb2wKQEAgLTI0MywxMCArMjQ0LDEy IEBAIFRoZSBpYnVzLWRldmVsLWRvY3MgcGFja2FnZSBjb250YWlucyBkZXZlbG9wZXIgZG9jdW1l bnRhdGlvbiBmb3IgSUJ1cwogIyAlJXBhdGNoMCAtcDEKICVwYXRjaDAgLXAxCiAjIGNwIGNsaWVu dC9ndGsyL2lidXNpbWNvbnRleHQuYyBjbGllbnQvZ3RrMy9pYnVzaW1jb250ZXh0LmMgfHwKLSVw YXRjaDEgLXAxIC16IC5zZWd2CiAlaWYgJXdpdGhfZW1vamlfaGFyZmJ1enoKLSVwYXRjaDIgLXAx IC16IC5oYgorJXBhdGNoMSAtcDEgLXogLmhiCiAlZW5kaWYKKyVwYXRjaDIgLXAxIC16IC5zZWd2 CisKK3pjYXQgJVNPVVJDRTMgfCB0YXIgeGZ2cCAtCiAKICMgcHJlcCB0ZXN0CiBkaWZmIGNsaWVu dC9ndGsyL2lidXNpbWNvbnRleHQuYyBjbGllbnQvZ3RrMy9pYnVzaW1jb250ZXh0LmMKQEAgLTM2 MCw2ICszNjMsNyBAQCBkY29uZiB1cGRhdGUgfHwgOgogJXtfbGliZXhlY2Rpcn0vaWJ1cy1lbmdp bmUtc2ltcGxlCiAle19saWJleGVjZGlyfS9pYnVzLWRjb25mCiAle19saWJleGVjZGlyfS9pYnVz LXBvcnRhbAorJXtfbGliZXhlY2Rpcn0vaWJ1cy1leHRlbnNpb24tZ3RrMwogJXtfbGliZXhlY2Rp cn0vaWJ1cy11aS1lbW9qaWVyCiAle19saWJleGVjZGlyfS9pYnVzLXVpLWd0azMKICV7X2xpYmV4 ZWNkaXJ9L2lidXMteDExCkBAIC00MjAsNiArNDI0LDEwIEBAIGRjb25mIHVwZGF0ZSB8fCA6CiAl e19kYXRhZGlyfS9ndGstZG9jL2h0bWwvKgogCiAlY2hhbmdlbG9nCisqIFdlZCBGZWIgMjEgMjAx OCBUYWthbyBGdWppd2FyYSA8dGZ1aml3YXJAcmVkaGF0LmNvbT4gLSAxLjUuMTctOQorLSBBZGRl ZCBwYW5lbCBleHRlbnNpb24gZm9yIGVtb2ppIGtleWJpbmRpbmcgbm90IHRvIGRlcGVuIG9uIGRl c2t0b3BzCistIFNob3dlZCBVbmljb2RlIGNvZGUgcG9pbnRzIG9uIFVuaWNvZGUgbmFtZSBsaXN0 CisKICogVHVlIEZlYiAxMyAyMDE4IElnb3IgR25hdGVua28gPGlnbmF0ZW5rb2JyYWluQGZlZG9y YXByb2plY3Qub3JnPiAtIDEuNS4xNy04CiAtIFJlbW92ZSB1c2VsZXNzIHJlcXVpcmVzCiAKCmRp ZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCBiMTExNzRiLi41ZjM2MzhkIDEwMDY0 NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEsMiBAQAotU0hBNTEyIChpYnVz LTEuNS4xNy50YXIuZ3opID0gOGE3ZTRmYWJiY2IyMDk2ZTY0N2IxZmI3NDg3YzkyODgyYmQzMjBh NGQ3NzdmMjc2NTgxNzM3OGFiZWMyZTYwY2FmZDYzMzY0Yzg4MWZlZmMyODA1ZmYyYmFhNmIyOGIx NWVlMDcxMDU4NzY2MmEzZTY1ZWViNjBlYWQxOTQ5NmMKKzhiYjI2NDUzZDBkMWZhNThlNTZjMjI2 NjhhYWE4Nzg2ICBpYnVzLTEuNS4xNy50YXIuZ3oKK2M0ODVjMTc5ZTYxMmZmZDA3Y2Y2YTZjNTY3 YTkyOGYxICBpYnVzLXBvLTEuNS4xNy0yMDE4MDIyMS50YXIuZ3oK