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: Enabled panel extension in Wayland Date: Sun, 31 May 2026 02:06:46 GMT Message-ID: <178019320656.1.9013830562427065902.rpms-ibus-cf670af51697@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: cf670af51697a45d743bcbb8f9330be94bc62fdb QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiBjZjY3MGFmNTE2OTdhNDVkNzQzYmNiYjhmOTMzMGJlOTRiYzYy ZmRiCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE4LTAyLTI3VDE1OjQ3OjE5KzA5OjAwClN0YXRzICA6ICsxNDAxLy0xIGluIDIgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy9jZjY3 MGFmNTE2OTdhNDVkNzQzYmNiYjhmOTMzMGJlOTRiYzYyZmRiP2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpFbmFibGVkIHBhbmVsIGV4dGVuc2lvbiBpbiBXYXlsYW5kCgotLS0KZGlmZiAtLWdpdCBhL2li dXMtSEVBRC5wYXRjaCBiL2lidXMtSEVBRC5wYXRjaAppbmRleCA4ZDFmYTlmLi5mYTgxOTcxIDEw MDY0NAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIGIvaWJ1cy1IRUFELnBhdGNoCkBAIC04NjIz LDMgKzg2MjMsMTM5OSBAQCBpbmRleCA1MDcwMDEyMS4uMWZiZjZjZmMgMTAwNjQ0CiAtLSAKIDIu MTQuMwogCitGcm9tIDdjY2JkMjFjYTdkMTYzY2RkNzFkYzZjMDQwNWQ4YTMyZDYzZDMyNGQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBn bWFpbC5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDE0OjA2OjMwICswOTAwCitTdWJqZWN0 OiBbUEFUQ0ggMS8yXSBEaXNhYmxlIHBhbmVsIGV4dGVuc2lvbiBmb3IgZ2RtIHVzZXIKKworVGhl IGdkbSB1c2VyJ3MgcHJvY2VzcyBpcyBhbHNvIHJ1bm5pbmcgd2hpbGUgdGhlIGxvZ2luIHVzZXIn cyBwcm9jZXNzCitpcyBydW5uaW5nIHNvIHRoZSBkb3VibGUgcGFuZWwgZXh0ZW5zaW9ucyBhcmUg YmV0dGVyIHRvIGJlIGF2b2lkZWQgZm9yCit0aGUgbWVtb3J5IHVzYWdlLgorCitSZXZpZXcgVVJM OiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzQwMzMwMDQ0CistLS0KKyBidXMvbWFp bi5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LQorIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL2J1cy9tYWluLmMgYi9idXMvbWFpbi5jCitpbmRleCA1YjI1ODliMS4uZmU2 MDM3NzggMTAwNjQ0CistLS0gYS9idXMvbWFpbi5jCisrKysgYi9idXMvbWFpbi5jCitAQCAtNDcs NiArNDcsMTAgQEAgc3RhdGljIGdjaGFyICpwYW5lbF9leHRlbnNpb24gPSAiZGVmYXVsdCI7Cisg c3RhdGljIGdjaGFyICpjb25maWcgPSAiZGVmYXVsdCI7Cisgc3RhdGljIGdjaGFyICpkZXNrdG9w ID0gImdub21lIjsKKyAKKytzdGF0aWMgZ2NoYXIgKnBhbmVsX2V4dGVuc2lvbl9kaXNhYmxlX3Vz ZXJzW10gPSB7CisrICAgICJnZG0iCisrfTsKKysKKyBzdGF0aWMgdm9pZAorIHNob3dfdmVyc2lv bl9hbmRfcXVpdCAodm9pZCkKKyB7CitAQCAtMTcwLDYgKzE3NCw5IEBAIF9zaWdfdXNyMl9oYW5k bGVyIChpbnQgc2lnKQorIGdpbnQKKyBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikKKyB7 CisrICAgIGludCBpOworKyAgICBjb25zdCBnY2hhciAqdXNlcm5hbWUgPSBpYnVzX2dldF91c2Vy X25hbWUgKCk7CisrCisgICAgIHNldGxvY2FsZSAoTENfQUxMLCAiIik7CisgCisgICAgIEdPcHRp b25Db250ZXh0ICpjb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcgKCItIGlidXMgZGFlbW9u Iik7CitAQCAtMTk0LDkgKzIwMSw3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQor IAorICAgICAvKiBjaGVjayB1aWQgKi8KKyAgICAgeworLSAgICAgICAgY29uc3QgZ2NoYXIgKnVz ZXJuYW1lID0gaWJ1c19nZXRfdXNlcl9uYW1lICgpOworLSAgICAgICAgdWlkX3QgdWlkID0gZ2V0 dWlkICgpOworLSAgICAgICAgc3RydWN0IHBhc3N3ZCAqcHdkID0gZ2V0cHd1aWQgKHVpZCk7Cisr ICAgICAgICBzdHJ1Y3QgcGFzc3dkICpwd2QgPSBnZXRwd3VpZCAoZ2V0dWlkICgpKTsKKyAKKyAg ICAgICAgIGlmIChwd2QgPT0gTlVMTCB8fCBnX3N0cmNtcDAgKHB3ZC0+cHdfbmFtZSwgdXNlcm5h bWUpICE9IDApIHsKKyAgICAgICAgICAgICBnX3ByaW50ZXJyICgiUGxlYXNlIHJ1biBpYnVzLWRh ZW1vbiB3aXRoIGxvZ2luIHVzZXIhIERvIG5vdCBydW4gaWJ1cy1kYWVtb24gd2l0aCBzdWRvIG9y IHN1LlxuIik7CitAQCAtMjM3LDYgKzI0MiwxMiBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoq YXJndikKKyAgICAgfQorIAorICAgICBidXNfc2VydmVyX2luaXQgKCk7CisrICAgIGZvciAoaSA9 IDA7IGkgPCBHX05fRUxFTUVOVFMocGFuZWxfZXh0ZW5zaW9uX2Rpc2FibGVfdXNlcnMpOyBpKysp IHsKKysgICAgICAgIGlmICghZ19zdHJjbXAwICh1c2VybmFtZSwgcGFuZWxfZXh0ZW5zaW9uX2Rp c2FibGVfdXNlcnNbaV0pICE9IDApIHsKKysgICAgICAgICAgICBwYW5lbF9leHRlbnNpb24gPSAi ZGlzYWJsZSI7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgIH0KKyAgICAg aWYgKCFzaW5nbGUpIHsKKyAgICAgICAgIC8qIGV4ZWN1dGUgY29uZmlnIGNvbXBvbmVudCAqLwor ICAgICAgICAgaWYgKGdfc3RyY21wMCAoY29uZmlnLCAiZGVmYXVsdCIpID09IDApIHsKK0BAIC0y NzEsMjUgKzI4MiwyNSBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikKKyAgICAgICAg ICAgICBpZiAoIWV4ZWN1dGVfY21kbGluZSAocGFuZWwpKQorICAgICAgICAgICAgICAgICBleGl0 ICgtMSk7CisgICAgICAgICB9CisrICAgIH0KKyAKKyAjaWZkZWYgRU1PSklfRElDVAorLSAgICAg ICAgaWYgKGdfc3RyY21wMCAocGFuZWxfZXh0ZW5zaW9uLCAiZGVmYXVsdCIpID09IDApIHsKKy0g ICAgICAgICAgICBCdXNDb21wb25lbnQgKmNvbXBvbmVudDsKKy0gICAgICAgICAgICBjb21wb25l bnQgPSBidXNfaWJ1c19pbXBsX2xvb2t1cF9jb21wb25lbnRfYnlfbmFtZSAoCistICAgICAgICAg ICAgICAgICAgICBCVVNfREVGQVVMVF9JQlVTLCBJQlVTX1NFUlZJQ0VfUEFORUxfRVhURU5TSU9O KTsKKy0gICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7CistICAgICAgICAgICAgICAgIGJ1c19j b21wb25lbnRfc2V0X3Jlc3RhcnQgKGNvbXBvbmVudCwgcmVzdGFydCk7CistICAgICAgICAgICAg fQorLSAgICAgICAgICAgIGlmIChjb21wb25lbnQgPT0gTlVMTCB8fAorLSAgICAgICAgICAgICAg ICAhYnVzX2NvbXBvbmVudF9zdGFydCAoY29tcG9uZW50LCBnX3ZlcmJvc2UpKSB7CistICAgICAg ICAgICAgICAgIGdfcHJpbnRlcnIgKCJDYW4gbm90IGV4ZWN1dGUgZGVmYXVsdCBwYW5lbCBwcm9n cmFtXG4iKTsKKy0gICAgICAgICAgICAgICAgZXhpdCAoLTEpOworLSAgICAgICAgICAgIH0KKy0g ICAgICAgIH0gZWxzZSBpZiAoZ19zdHJjbXAwIChwYW5lbF9leHRlbnNpb24sICJkaXNhYmxlIikg IT0gMCAmJgorLSAgICAgICAgICAgICAgICAgICBnX3N0cmNtcDAgKHBhbmVsX2V4dGVuc2lvbiwg IiIpICE9IDApIHsKKy0gICAgICAgICAgICBpZiAoIWV4ZWN1dGVfY21kbGluZSAocGFuZWxfZXh0 ZW5zaW9uKSkKKy0gICAgICAgICAgICAgICAgZXhpdCAoLTEpOworKyAgICBpZiAoZ19zdHJjbXAw IChwYW5lbF9leHRlbnNpb24sICJkZWZhdWx0IikgPT0gMCkgeworKyAgICAgICAgQnVzQ29tcG9u ZW50ICpjb21wb25lbnQ7CisrICAgICAgICBjb21wb25lbnQgPSBidXNfaWJ1c19pbXBsX2xvb2t1 cF9jb21wb25lbnRfYnlfbmFtZSAoCisrICAgICAgICAgICAgICAgIEJVU19ERUZBVUxUX0lCVVMs IElCVVNfU0VSVklDRV9QQU5FTF9FWFRFTlNJT04pOworKyAgICAgICAgaWYgKGNvbXBvbmVudCkg eworKyAgICAgICAgICAgIGJ1c19jb21wb25lbnRfc2V0X3Jlc3RhcnQgKGNvbXBvbmVudCwgcmVz dGFydCk7CisrICAgICAgICB9CisrICAgICAgICBpZiAoY29tcG9uZW50ID09IE5VTEwgfHwKKysg ICAgICAgICAgICAhYnVzX2NvbXBvbmVudF9zdGFydCAoY29tcG9uZW50LCBnX3ZlcmJvc2UpKSB7 CisrICAgICAgICAgICAgZ19wcmludGVyciAoIkNhbiBub3QgZXhlY3V0ZSBkZWZhdWx0IHBhbmVs IHByb2dyYW1cbiIpOworKyAgICAgICAgICAgIGV4aXQgKC0xKTsKKyAgICAgICAgIH0KKysgICAg fSBlbHNlIGlmIChnX3N0cmNtcDAgKHBhbmVsX2V4dGVuc2lvbiwgImRpc2FibGUiKSAhPSAwICYm CisrICAgICAgICAgICAgICAgZ19zdHJjbXAwIChwYW5lbF9leHRlbnNpb24sICIiKSAhPSAwKSB7 CisrICAgICAgICBpZiAoIWV4ZWN1dGVfY21kbGluZSAocGFuZWxfZXh0ZW5zaW9uKSkKKysgICAg ICAgICAgICBleGl0ICgtMSk7CisgICAgIH0KKyAjZW5kaWYKKyAKKy0tIAorMi4xNC4zCisKK0Zy b20gYzU3YjdjMzRkNzU4NzFkYjE3MmUwMjNiMDA5NGI5NzkwMDBmNjJmYyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4K K0RhdGU6IFR1ZSwgMjcgRmViIDIwMTggMTQ6MTA6MjkgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAy LzJdIEVuYWJsZSBlbW9qaSBrZXliaW5kaW5nIGluIFdheWxhbmQKKworWEkyIGtleWJpbmRpbmcg ZG9lcyBub3Qgd29yayBmb3IgdGhlIHJvb3Qgd2luZG93IGluIFdheWxhbmQgYmVjYXVzZQorb2Yg YSBzZWN1cml0eSBpc3N1ZSBtYXliZS4gTm93IEkgdGhpbmsgdG8gbW92ZSB0aGUga2V5YmluZGlu ZyBpbgoraWJ1cy1leHRlbnNpb24tZ3RrMyB0byBlYWNoIElCdXNFbmdpbmUuCisKK0ZJWE1FOiBV bmZvcnR1bmF0ZWxseSBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpIGNhbm5vdCBnZXQgdGlt ZQorZm9yIHRoZSBkZWxheWVkIERCdXMgZXZlbnRzIGFuZCBndGtfd2luZG93X21vdmUoKSBkb2Vz IG5vdCB3b3JrIGZvcgorR3RrRGlhbG9nIHdpdGhvdXQgYSBwYXJlbnQgd2luZG93IGluIFdheWxh bmQuCisKK1I9U2hhd24uUC5IdWFuZ0BnbWFpbC5jb20KKworUmV2aWV3IFVSTDogaHR0cHM6Ly9j b2RlcmV2aWV3LmFwcHNwb3QuY29tLzMzMzcwMDA0MworLS0tCisgYnVzL2VuZ2luZXByb3h5LmMg ICAgICAgICB8ICAxOSArLQorIGJ1cy9pYnVzaW1wbC5jICAgICAgICAgICAgfCAgNDcgKysrLQor IGJ1cy9pbnB1dGNvbnRleHQuYyAgICAgICAgfCAgMjkgKystCisgc3JjL01ha2VmaWxlLmFtICAg ICAgICAgICB8ICAgMiArCisgc3JjL2lidXMuaCAgICAgICAgICAgICAgICB8ICAgMSArCisgc3Jj L2lidXNhY2NlbGdyb3VwLmMgICAgICB8IDUyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCisgc3JjL2lidXNhY2NlbGdyb3VwLmggICAgICB8ICA1MSArKysr KworIHNyYy9pYnVzZW5naW5lLmMgICAgICAgICAgfCAxNzkgKysrKysrKysrKysrKysrLQorIHVp L2d0azMvZW1vamllci52YWxhICAgICAgfCAgIDEgKworIHVpL2d0azMvZXh0ZW5zaW9uLnZhbGEg ICAgfCAgIDUgKy0KKyB1aS9ndGszL3BhbmVsYmluZGluZy52YWxhIHwgIDY1ICsrLS0tLQorIDEx IGZpbGVzIGNoYW5nZWQsIDg2MyBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkKKyBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2lidXNhY2NlbGdyb3VwLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2lidXNhY2NlbGdyb3VwLmgKKworZGlmZiAtLWdpdCBhL2J1cy9lbmdpbmVwcm94eS5jIGIv YnVzL2VuZ2luZXByb3h5LmMKK2luZGV4IGNkNGQ1NGZkLi4xNzVhZWM1NiAxMDA2NDQKKy0tLSBh L2J1cy9lbmdpbmVwcm94eS5jCisrKysgYi9idXMvZW5naW5lcHJveHkuYworQEAgLTIsNyArMiw3 IEBACisgLyogdmltOnNldCBldCBzdHM9NDogKi8KKyAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwor ICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21h aWwuY29tPgorLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IFRha2FvIEZ1aml3YXJhIDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IFRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorICAqIENvcHlyaWdodCAoQykg MjAwOC0yMDE2IFJlZCBIYXQsIEluYy4KKyAgKgorICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKK0BAIC05MCw2ICs5MCw3IEBA IGVudW0geworICAgICBDVVJTT1JfRE9XTl9MT09LVVBfVEFCTEUsCisgICAgIFJFR0lTVEVSX1BS T1BFUlRJRVMsCisgICAgIFVQREFURV9QUk9QRVJUWSwKKysgICAgUEFORUxfRVhURU5TSU9OLAor ICAgICBMQVNUX1NJR05BTCwKKyB9OworIAorQEAgLTM3MCw2ICszNzEsMTcgQEAgYnVzX2VuZ2lu ZV9wcm94eV9jbGFzc19pbml0IChCdXNFbmdpbmVQcm94eUNsYXNzICpjbGFzcykKKyAgICAgICAg ICAgICAxLAorICAgICAgICAgICAgIElCVVNfVFlQRV9QUk9QRVJUWSk7CisgCisrICAgIGVuZ2lu ZV9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0gPQorKyAgICAgICAgZ19zaWduYWxfbmV3IChJXygi cGFuZWwtZXh0ZW5zaW9uIiksCisrICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNz KSwKKysgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKysgICAgICAgICAgICAwLAorKyAg ICAgICAgICAgIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fVkFS SUFOVCwKKysgICAgICAgICAgICBHX1RZUEVfTk9ORSwKKysgICAgICAgICAgICAxLAorKyAgICAg ICAgICAgIEdfVFlQRV9WQVJJQU5UKTsKKysKKyAgICAgdGV4dF9lbXB0eSA9IGlidXNfdGV4dF9u ZXdfZnJvbV9zdGF0aWNfc3RyaW5nICgiIik7CisgICAgIGdfb2JqZWN0X3JlZl9zaW5rICh0ZXh0 X2VtcHR5KTsKKyAKK0BAIC02MzEsNiArNjQzLDExIEBAIGJ1c19lbmdpbmVfcHJveHlfZ19zaWdu YWwgKEdEQnVzUHJveHkgICpwcm94eSwKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorKyAg ICBpZiAoZ19zdHJjbXAwIChzaWduYWxfbmFtZSwgIlBhbmVsRXh0ZW5zaW9uIikgPT0gMCkgewor KyAgICAgICAgZ19zaWduYWxfZW1pdCAoZW5naW5lLCBlbmdpbmVfc2lnbmFsc1tQQU5FTF9FWFRF TlNJT05dLCAwLCBwYXJhbWV0ZXJzKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAg ICBnX3JldHVybl9pZl9yZWFjaGVkICgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9idXMvaWJ1c2lt cGwuYyBiL2J1cy9pYnVzaW1wbC5jCitpbmRleCA1OGQyMDVjZi4uYTRjZTNkOWQgMTAwNjQ0Cist LS0gYS9idXMvaWJ1c2ltcGwuYworKysrIGIvYnVzL2lidXNpbXBsLmMKK0BAIC0zMDIsOSArMzAy LDggQEAgX3BhbmVsX2Rlc3Ryb3lfY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAorIH0KKyAKKyBz dGF0aWMgdm9pZAorLV9wYW5lbF9wYW5lbF9leHRlbnNpb25fY2IgKEJ1c1BhbmVsUHJveHkgKnBh bmVsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgKnBhcmFtZXRl cnMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzSUJ1c0ltcGwgICppYnVzKQorK2J1 c19pYnVzX2ltcGxfcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkIChCdXNJQnVzSW1wbCAqaWJ1cywK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgKnBh cmFtZXRlcnMpCisgeworICAgICBpZiAoIWlidXMtPmV4dGVuc2lvbikgeworICAgICAgICAgZ193 YXJuaW5nICgiUGFuZWwgZXh0ZW5zaW9uIGlzIG5vdCBydW5uaW5nLiIpOworQEAgLTMyMyw2ICsz MjIsMTQgQEAgX3BhbmVsX3BhbmVsX2V4dGVuc2lvbl9jYiAoQnVzUGFuZWxQcm94eSAqcGFuZWws CisgICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgTlVMTCwgTlVMTCk7CisgfQorIAor K3N0YXRpYyB2b2lkCisrX3BhbmVsX3BhbmVsX2V4dGVuc2lvbl9jYiAoQnVzUGFuZWxQcm94eSAq cGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAqcGFyYW1l dGVycywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgKmlidXMpCisr eworKyAgICBidXNfaWJ1c19pbXBsX3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCAoaWJ1cywgcGFy YW1ldGVycyk7CisrfQorKworIHN0YXRpYyB2b2lkCisgX3JlZ2lzdHJ5X2NoYW5nZWRfY2IgKElC dXNSZWdpc3RyeSAqcmVnaXN0cnksCisgICAgICAgICAgICAgICAgICAgICAgIEJ1c0lCdXNJbXBs ICAqaWJ1cykKK0BAIC02NDIsNiArNjQ5LDIxIEBAIGJ1c19pYnVzX2ltcGxfc2V0X2NvbnRleHRf ZW5naW5lX2Zyb21fZGVzYyAoQnVzSUJ1c0ltcGwgICAgICppYnVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworIH0KKyAKKytzdGF0aWMgdm9pZAor K19jb250ZXh0X3BhbmVsX2V4dGVuc2lvbl9jYiAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICpwYXJhbWV0ZXJz LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzSUJ1c0ltcGwgICAgICppYnVzKQor K3sKKysgICAgYnVzX2lidXNfaW1wbF9wYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQgKGlidXMsIHBh cmFtZXRlcnMpOworK30KKysKKytjb25zdCBzdGF0aWMgc3RydWN0IHsKKysgICAgY29uc3QgZ2No YXIgKm5hbWU7CisrICAgIEdDYWxsYmFjayAgICBjYWxsYmFjazsKKyt9IGNvbnRleHRfc2lnbmFs cyBbXSA9IHsKKysgICAgeyAicGFuZWwtZXh0ZW5zaW9uIiwgICAgICAgICAgICAgR19DQUxMQkFD SyAoX2NvbnRleHRfcGFuZWxfZXh0ZW5zaW9uX2NiKSB9CisrfTsKKysKKyAvKioKKyAgKiBidXNf aWJ1c19pbXBsX3NldF9mb2N1c2VkX2NvbnRleHQ6CisgICoKK0BAIC02NTEsNiArNjczLDExIEBA IHN0YXRpYyB2b2lkCisgYnVzX2lidXNfaW1wbF9zZXRfZm9jdXNlZF9jb250ZXh0IChCdXNJQnVz SW1wbCAgICAgKmlidXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJ bnB1dENvbnRleHQgKmNvbnRleHQpCisgeworKyAgICBnaW50IGk7CisrICAgIEJ1c0VuZ2luZVBy b3h5ICplbmdpbmUgPSBOVUxMOworKyAgICBndWludCBwdXJwb3NlID0gMDsKKysgICAgZ3VpbnQg aGludHMgPSAwOworKworICAgICBnX2Fzc2VydCAoQlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykpOwor ICAgICBnX2Fzc2VydCAoY29udGV4dCA9PSBOVUxMIHx8IEJVU19JU19JTlBVVF9DT05URVhUIChj b250ZXh0KSk7CisgICAgIGdfYXNzZXJ0IChjb250ZXh0ID09IE5VTEwgfHwgYnVzX2lucHV0X2Nv bnRleHRfZ2V0X2NhcGFiaWxpdGllcyAoY29udGV4dCkgJiBJQlVTX0NBUF9GT0NVUyk7CitAQCAt NjYwLDEwICs2ODcsNiBAQCBidXNfaWJ1c19pbXBsX3NldF9mb2N1c2VkX2NvbnRleHQgKEJ1c0lC dXNJbXBsICAgICAqaWJ1cywKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgICBCdXNF bmdpbmVQcm94eSAqZW5naW5lID0gTlVMTDsKKy0gICAgZ3VpbnQgcHVycG9zZSA9IDA7CistICAg IGd1aW50IGhpbnRzID0gMDsKKy0KKyAgICAgaWYgKGlidXMtPmZvY3VzZWRfY29udGV4dCkgewor ICAgICAgICAgaWYgKGlidXMtPnVzZV9nbG9iYWxfZW5naW5lKSB7CisgICAgICAgICAgICAgLyog ZGV0dGFjaCBlbmdpbmUgZnJvbSB0aGUgZm9jdXNlZCBjb250ZXh0ICovCitAQCAtNjgxLDYgKzcw NCwxMCBAQCBidXNfaWJ1c19pbXBsX3NldF9mb2N1c2VkX2NvbnRleHQgKEJ1c0lCdXNJbXBsICAg ICAqaWJ1cywKKyAKKyAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2dldF9jb250ZW50X3R5cGUg KGlidXMtPmZvY3VzZWRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZwdXJwb3NlLCAmaGludHMpOworKyAgICAgICAgZm9yIChpID0gMDsgaSA8 IEdfTl9FTEVNRU5UUyhjb250ZXh0X3NpZ25hbHMpOyBpKyspIHsKKysgICAgICAgICAgICBnX3Np Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMgKGlidXMtPmZvY3VzZWRfY29udGV4dCwK KysgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfc2lnbmFsc1tpXS5jYWxsYmFjaywgaWJ1cyk7 CisrICAgICAgICB9CisgICAgICAgICBnX29iamVjdF91bnJlZiAoaWJ1cy0+Zm9jdXNlZF9jb250 ZXh0KTsKKyAgICAgICAgIGlidXMtPmZvY3VzZWRfY29udGV4dCA9IE5VTEw7CisgICAgIH0KK0BA IC02OTgsNiArNzI1LDEyIEBAIGJ1c19pYnVzX2ltcGxfc2V0X2ZvY3VzZWRfY29udGV4dCAoQnVz SUJ1c0ltcGwgICAgICppYnVzLAorICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3NldF9l bmdpbmUgKGNvbnRleHQsIGVuZ2luZSk7CisgICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRf ZW5hYmxlIChjb250ZXh0KTsKKyAgICAgICAgIH0KKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBH X05fRUxFTUVOVFMoY29udGV4dF9zaWduYWxzKTsgaSsrKSB7CisrICAgICAgICAgICAgZ19zaWdu YWxfY29ubmVjdCAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRleHRfc2lnbmFsc1tpXS5uYW1lLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRleHRfc2lnbmFsc1tpXS5jYWxsYmFjaywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpYnVzKTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChpYnVzLT5w YW5lbCAhPSBOVUxMKQorICAgICAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9mb2N1c19pbiAoaWJ1 cy0+cGFuZWwsIGNvbnRleHQpOworZGlmZiAtLWdpdCBhL2J1cy9pbnB1dGNvbnRleHQuYyBiL2J1 cy9pbnB1dGNvbnRleHQuYworaW5kZXggNGYyZWNhZmMuLmE5NTdkMTA3IDEwMDY0NAorLS0tIGEv YnVzL2lucHV0Y29udGV4dC5jCisrKysgYi9idXMvaW5wdXRjb250ZXh0LmMKK0BAIC0xMjcsNiAr MTI3LDcgQEAgZW51bSB7CisgICAgIEVOR0lORV9DSEFOR0VELAorICAgICBSRVFVRVNUX0VOR0lO RSwKKyAgICAgU0VUX0NPTlRFTlRfVFlQRSwKKysgICAgUEFORUxfRVhURU5TSU9OLAorICAgICBM QVNUX1NJR05BTCwKKyB9OworIAorQEAgLTU5OCw2ICs1OTksMTcgQEAgYnVzX2lucHV0X2NvbnRl eHRfY2xhc3NfaW5pdCAoQnVzSW5wdXRDb250ZXh0Q2xhc3MgKmNsYXNzKQorICAgICAgICAgICAg IEdfVFlQRV9VSU5ULAorICAgICAgICAgICAgIEdfVFlQRV9VSU5UKTsKKyAKKysgICAgY29udGV4 dF9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0gPQorKyAgICAgICAgZ19zaWduYWxfbmV3IChJXygi cGFuZWwtZXh0ZW5zaW9uIiksCisrICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNz KSwKKysgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKysgICAgICAgICAgICAwLAorKyAg ICAgICAgICAgIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fVkFS SUFOVCwKKysgICAgICAgICAgICBHX1RZUEVfTk9ORSwKKysgICAgICAgICAgICAxLAorKyAgICAg ICAgICAgIEdfVFlQRV9WQVJJQU5UKTsKKysKKyAgICAgdGV4dF9lbXB0eSA9IGlidXNfdGV4dF9u ZXdfZnJvbV9zdHJpbmcgKCIiKTsKKyAgICAgZ19vYmplY3RfcmVmX3NpbmsgKHRleHRfZW1wdHkp OworICAgICBsb29rdXBfdGFibGVfZW1wdHkgPSBpYnVzX2xvb2t1cF90YWJsZV9uZXcgKDkgLyog cGFnZSBzaXplICovLCAwLCBGQUxTRSwgRkFMU0UpOworQEAgLTIxMDIsNiArMjExNCwyMCBAQCBf ZW5naW5lX3VwZGF0ZV9wcm9wZXJ0eV9jYiAoQnVzRW5naW5lUHJveHkgICplbmdpbmUsCisgICAg IGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9wcm9wZXJ0eSAoY29udGV4dCwgcHJvcCk7CisgfQor IAorKy8qKgorKyAqIF9lbmdpbmVfcGFuZWxfZXh0ZW5zaW9uX2NiOgorKyAqCisrICogQSBmdW5j dGlvbiB0byBiZSBjYWxsZWQgd2hlbiAicGFuZWwtZXh0ZW5zaW9uIiBnbGliIHNpZ25hbCBpcyBz ZW50CisrICogZnJvbSB0aGUgZW5naW5lIG9iamVjdC4KKysgKi8KKytzdGF0aWMgdm9pZAorK19l bmdpbmVfcGFuZWxfZXh0ZW5zaW9uX2NiIChCdXNFbmdpbmVQcm94eSAgKmVuZ2luZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICpwYXJhbWV0ZXJzLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCisrewor KyAgICBnX3NpZ25hbF9lbWl0IChjb250ZXh0LCBjb250ZXh0X3NpZ25hbHNbUEFORUxfRVhURU5T SU9OXSwgMCwgcGFyYW1ldGVycyk7CisrfQorKworICNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OKG5h bWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHN0YXRpYyB2b2lk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg X2VuZ2luZV8jI25hbWUjI19jYiAoQnVzRW5naW5lUHJveHkgICAqZW5naW5lLCAgICAgICAgICAg ICAgXAorQEAgLTIyNDQsNyArMjI3MCw4IEBAIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgeworICAgICB7 ICJjdXJzb3ItZG93bi1sb29rdXAtdGFibGUiLCBHX0NBTExCQUNLIChfZW5naW5lX2N1cnNvcl9k b3duX2xvb2t1cF90YWJsZV9jYikgfSwKKyAgICAgeyAicmVnaXN0ZXItcHJvcGVydGllcyIsICAg ICAgR19DQUxMQkFDSyAoX2VuZ2luZV9yZWdpc3Rlcl9wcm9wZXJ0aWVzX2NiKSB9LAorICAgICB7 ICJ1cGRhdGUtcHJvcGVydHkiLCAgICAgICAgICBHX0NBTExCQUNLIChfZW5naW5lX3VwZGF0ZV9w cm9wZXJ0eV9jYikgfSwKKy0gICAgeyAiZGVzdHJveSIsICAgICAgICAgICAgICAgICAgR19DQUxM QkFDSyAoX2VuZ2luZV9kZXN0cm95X2NiKSB9LAorKyAgICB7ICJwYW5lbC1leHRlbnNpb24iLCAg ICAgICAgICBHX0NBTExCQUNLIChfZW5naW5lX3BhbmVsX2V4dGVuc2lvbl9jYikgfSwKKysgICAg eyAiZGVzdHJveSIsICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2VuZ2luZV9kZXN0cm95 X2NiKSB9CisgfTsKKyAKKyBzdGF0aWMgdm9pZAorZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5h bSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggNzJlYzA1YWIuLjZhNjJlMGYwIDEwMDY0NAorLS0t IGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC03Miw2ICs3Miw3 IEBAIGxpYmlidXNfMV8wX2xhX0xERkxBR1MgPSAgICAgICAgICAgIFwKKyAgICAgJChOVUxMKQor IAorIGlidXNfc291cmNlcyA9ICAgICAgICAgICAgICBcCisrICAgIGlidXNhY2NlbGdyb3VwLmMg ICAgICAgIFwKKyAgICAgaWJ1c2F0dHJpYnV0ZS5jICAgICAgICAgXAorICAgICBpYnVzYXR0cmxp c3QuYyAgICAgICAgICBcCisgICAgIGlidXNidXMuYyAgICAgICAgICAgICAgIFwKK0BAIC0xMjIs NiArMTIzLDcgQEAgaWJ1c19lbnVtdHlwZXNfc291cmNlcyA9ICAgIFwKKyAgICAgJChOVUxMKQor IGlidXNfaGVhZGVycyA9ICAgICAgICAgICAgICBcCisgICAgIGlidXMuaCAgICAgICAgICAgICAg ICAgIFwKKysgICAgaWJ1c2FjY2VsZ3JvdXAuaCAgICAgICAgXAorICAgICBpYnVzYXR0cmlidXRl LmggICAgICAgICBcCisgICAgIGlidXNhdHRybGlzdC5oICAgICAgICAgIFwKKyAgICAgaWJ1c2J1 cy5oICAgICAgICAgICAgICAgXAorZGlmZiAtLWdpdCBhL3NyYy9pYnVzLmggYi9zcmMvaWJ1cy5o CitpbmRleCBiMTVkZGVkOS4uMjU2ZDU3YmEgMTAwNjQ0CistLS0gYS9zcmMvaWJ1cy5oCisrKysg Yi9zcmMvaWJ1cy5oCitAQCAtNjAsNiArNjAsNyBAQAorICNpbmNsdWRlIDxpYnVzZW1vamkuaD4K KyAjaW5jbHVkZSA8aWJ1c3VuaWNvZGUuaD4KKyAjaW5jbHVkZSA8aWJ1c3hldmVudC5oPgorKyNp bmNsdWRlIDxpYnVzYWNjZWxncm91cC5oPgorIAorICNpZm5kZWYgSUJVU19ESVNBQkxFX0RFUFJF Q0FURUQKKyAjaW5jbHVkZSA8aWJ1c2tleXN5bXMtY29tcGF0Lmg+CitkaWZmIC0tZ2l0IGEvc3Jj L2lidXNhY2NlbGdyb3VwLmMgYi9zcmMvaWJ1c2FjY2VsZ3JvdXAuYworbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAwLi44YTgxNTk3ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3Jj L2lidXNhY2NlbGdyb3VwLmMKK0BAIC0wLDAgKzEsNTI5IEBACisrLyogR1RLIC0gVGhlIEdJTVAg VG9vbGtpdAorKyAqIENvcHlyaWdodCAoQykgMTk5OCwgMjAwMSBUaW0gSmFuaWsKKysgKgorKyAq IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRo IHRoaXMgbGlicmFyeS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyAqLworKworKy8qCisrICogTW9kaWZpZWQgYnkgdGhlIEdUSysgVGVhbSBhbmQgb3RoZXJz IDE5OTctMjAwMC4gIFNlZSB0aGUgQVVUSE9SUworKyAqIGZpbGUgZm9yIGEgbGlzdCBvZiBwZW9w bGUgb24gdGhlIEdUSysgVGVhbS4gIFNlZSB0aGUgQ2hhbmdlTG9nCisrICogZmlsZXMgZm9yIGEg bGlzdCBvZiBjaGFuZ2VzLiAgVGhlc2UgZmlsZXMgYXJlIGRpc3RyaWJ1dGVkIHdpdGgKKysgKiBH VEsrIGF0IGZ0cDovL2Z0cC5ndGsub3JnL3B1Yi9ndGsvLgorKyAqLworKworKyNpbmNsdWRlICJj b25maWcuaCIKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKwor KyNpbmNsdWRlICJpYnVzYWNjZWxncm91cC5oIgorKyNpbmNsdWRlICJpYnVza2V5cy5oIgorKyNp bmNsdWRlICJpYnVza2V5c3ltcy5oIgorKworKworKy8qIGZvciBfZ3RrX2dldF9wcmltYXJ5X2Fj Y2VsX21vZCgpICovCisrI2RlZmluZSBfSUJVU19HRVRfUFJJTUFSWV9BQ0NFTF9NT0QgSUJVU19D T05UUk9MX01BU0sKKysKKysvKioKKysgKiBTRUNUSU9OOiBpYnVzYWNjZWxncm91cAorKyAqIEBz aG9ydF9kZXNjcmlwdGlvbjogR3JvdXBzIG9mIGdsb2JhbCBrZXlib2FyZCBhY2NlbGVyYXRvcnMg Zm9yIGFuCisrICogICAgIGVudGlyZSBHdGtXaW5kb3cKKysgKiBAdGl0bGU6IEFjY2VsZXJhdG9y IEdyb3VwcworKyAqIEBzdGFiaWxpdHk6IFVuc3RhYmxlCisrICoKKysgKiBQcm92aWRlcyBpYnVz X2FjY2VsZXJhdG9yX3BhcnNlKCkKKysgKi8KKysKKysKKysvKioKKysgKiBpYnVzX2FjY2VsZXJh dG9yX3ZhbGlkOgorKyAqIEBrZXl2YWw6IGEgR0RLIGtleXZhbAorKyAqIEBtb2RpZmllcnM6IG1v ZGlmaWVyIG1hc2sKKysgKgorKyAqIERldGVybWluZXMgd2hldGhlciBhIGdpdmVuIGtleXZhbCBh bmQgbW9kaWZpZXIgbWFzayBjb25zdGl0dXRlCisrICogYSB2YWxpZCBrZXlib2FyZCBhY2NlbGVy YXRvci4gRm9yIGV4YW1wbGUsIHRoZSAjSUJVU19LRVlfYSBrZXl2YWwKKysgKiBwbHVzICNJQlVT X0NPTlRST0xfTUFTSyBpcyB2YWxpZCAtIHRoaXMgaXMgYSDigJxDdHJsK2HigJ0gYWNjZWxlcmF0 b3IuCisrICogQnV0LCB5b3UgY2FuJ3QsIGZvciBpbnN0YW5jZSwgdXNlIHRoZSAjSUJVU19LRVlf Q29udHJvbF9MIGtleXZhbAorKyAqIGFzIGFuIGFjY2VsZXJhdG9yLgorKyAqCisrICogUmV0dXJu czogJVRSVUUgaWYgdGhlIGFjY2VsZXJhdG9yIGlzIHZhbGlkCisrICovCisrZ2Jvb2xlYW4KKytp YnVzX2FjY2VsZXJhdG9yX3ZhbGlkIChndWludCAgICAgICAgICAga2V5dmFsLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIElCdXNNb2RpZmllclR5cGUgbW9kaWZpZXJzKQorK3sKKysgICAgc3Rh dGljIGNvbnN0IGd1aW50IGludmFsaWRfYWNjZWxlcmF0b3JfdmFsc1tdID0geworKyAgICAgICAg SUJVU19LRVlfU2hpZnRfTCwgSUJVU19LRVlfU2hpZnRfUiwgSUJVU19LRVlfU2hpZnRfTG9jaywK KysgICAgICAgIElCVVNfS0VZX0NhcHNfTG9jaywgSUJVU19LRVlfSVNPX0xvY2ssIElCVVNfS0VZ X0NvbnRyb2xfTCwKKysgICAgICAgIElCVVNfS0VZX0NvbnRyb2xfUiwgSUJVU19LRVlfTWV0YV9M LCBJQlVTX0tFWV9NZXRhX1IsCisrICAgICAgICBJQlVTX0tFWV9BbHRfTCwgSUJVU19LRVlfQWx0 X1IsIElCVVNfS0VZX1N1cGVyX0wsIElCVVNfS0VZX1N1cGVyX1IsCisrICAgICAgICBJQlVTX0tF WV9IeXBlcl9MLCBJQlVTX0tFWV9IeXBlcl9SLCBJQlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0LAor KyAgICAgICAgSUJVU19LRVlfSVNPX05leHRfR3JvdXAsIElCVVNfS0VZX0lTT19QcmV2X0dyb3Vw LAorKyAgICAgICAgSUJVU19LRVlfSVNPX0ZpcnN0X0dyb3VwLCBJQlVTX0tFWV9JU09fTGFzdF9H cm91cCwKKysgICAgICAgIElCVVNfS0VZX01vZGVfc3dpdGNoLCBJQlVTX0tFWV9OdW1fTG9jaywg SUJVU19LRVlfTXVsdGlfa2V5LAorKyAgICAgICAgSUJVU19LRVlfU2Nyb2xsX0xvY2ssIElCVVNf S0VZX1N5c19SZXEsCisrICAgICAgICBJQlVTX0tFWV9UYWIsIElCVVNfS0VZX0lTT19MZWZ0X1Rh YiwgSUJVU19LRVlfS1BfVGFiLAorKyAgICAgICAgSUJVU19LRVlfRmlyc3RfVmlydHVhbF9TY3Jl ZW4sIElCVVNfS0VZX1ByZXZfVmlydHVhbF9TY3JlZW4sCisrICAgICAgICBJQlVTX0tFWV9OZXh0 X1ZpcnR1YWxfU2NyZWVuLCBJQlVTX0tFWV9MYXN0X1ZpcnR1YWxfU2NyZWVuLAorKyAgICAgICAg SUJVU19LRVlfVGVybWluYXRlX1NlcnZlciwgSUJVU19LRVlfQXVkaWJsZUJlbGxfRW5hYmxlLAor KyAgICAgICAgMAorKyAgICB9OworKyAgICBzdGF0aWMgY29uc3QgZ3VpbnQgaW52YWxpZF91bm1v ZGlmaWVkX3ZhbHNbXSA9IHsKKysgICAgICAgIElCVVNfS0VZX1VwLCBJQlVTX0tFWV9Eb3duLCBJ QlVTX0tFWV9MZWZ0LCBJQlVTX0tFWV9SaWdodCwKKysgICAgICAgIElCVVNfS0VZX0tQX1VwLCBJ QlVTX0tFWV9LUF9Eb3duLCBJQlVTX0tFWV9LUF9MZWZ0LCBJQlVTX0tFWV9LUF9SaWdodCwKKysg ICAgICAgIDAKKysgICAgfTsKKysgICAgY29uc3QgZ3VpbnQgKmFjX3ZhbDsKKysKKysgICAgbW9k aWZpZXJzICY9IElCVVNfTU9ESUZJRVJfTUFTSzsKKysKKysgICAgaWYgKGtleXZhbCA8PSAweEZG KQorKyAgICAgICAgcmV0dXJuIGtleXZhbCA+PSAweDIwOworKworKyAgICBhY192YWwgPSBpbnZh bGlkX2FjY2VsZXJhdG9yX3ZhbHM7CisrICAgIHdoaWxlICgqYWNfdmFsKSB7CisrICAgICAgICBp ZiAoa2V5dmFsID09ICphY192YWwrKykKKysgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisrICAg IH0KKysKKysgICAgaWYgKCFtb2RpZmllcnMpIHsKKysgICAgICAgIGFjX3ZhbCA9IGludmFsaWRf dW5tb2RpZmllZF92YWxzOworKyAgICAgICAgd2hpbGUgKCphY192YWwpIHsKKysgICAgICAgICAg ICBpZiAoa2V5dmFsID09ICphY192YWwrKykKKysgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNF OworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHJldHVybiBUUlVFOworK30KKysKKytzdGF0 aWMgaW5saW5lIGdib29sZWFuCisraXNfYWx0IChjb25zdCBnY2hhciAqc3RyaW5nKQorK3sKKysg ICAgcmV0dXJuICgoc3RyaW5nWzBdID09ICc8JykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzFd ID09ICdhJyB8fCBzdHJpbmdbMV0gPT0gJ0EnKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbMl0g PT0gJ2wnIHx8IHN0cmluZ1syXSA9PSAnTCcpICYmCisrICAgICAgICAgICAgKHN0cmluZ1szXSA9 PSAndCcgfHwgc3RyaW5nWzNdID09ICdUJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzRdID09 ICc+JykpOworK30KKysKKytzdGF0aWMgaW5saW5lIGdib29sZWFuCisraXNfY3RsIChjb25zdCBn Y2hhciAqc3RyaW5nKQorK3sKKysgICAgcmV0dXJuICgoc3RyaW5nWzBdID09ICc8JykgJiYKKysg ICAgICAgICAgICAoc3RyaW5nWzFdID09ICdjJyB8fCBzdHJpbmdbMV0gPT0gJ0MnKSAmJgorKyAg ICAgICAgICAgIChzdHJpbmdbMl0gPT0gJ3QnIHx8IHN0cmluZ1syXSA9PSAnVCcpICYmCisrICAg ICAgICAgICAgKHN0cmluZ1szXSA9PSAnbCcgfHwgc3RyaW5nWzNdID09ICdMJykgJiYKKysgICAg ICAgICAgICAoc3RyaW5nWzRdID09ICc+JykpOworK30KKysKKytzdGF0aWMgaW5saW5lIGdib29s ZWFuCisraXNfbW9keCAoY29uc3QgZ2NoYXIgKnN0cmluZykKKyt7CisrICAgIHJldHVybiAoKHN0 cmluZ1swXSA9PSAnPCcpICYmCisrICAgICAgICAgICAgKHN0cmluZ1sxXSA9PSAnbScgfHwgc3Ry aW5nWzFdID09ICdNJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzJdID09ICdvJyB8fCBzdHJp bmdbMl0gPT0gJ08nKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbM10gPT0gJ2QnIHx8IHN0cmlu Z1szXSA9PSAnRCcpICYmCisrICAgICAgICAgICAgKHN0cmluZ1s0XSA+PSAnMScgJiYgc3RyaW5n WzRdIDw9ICc1JykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzVdID09ICc+JykpOworK30KKysK KytzdGF0aWMgaW5saW5lIGdib29sZWFuCisraXNfY3RybCAoY29uc3QgZ2NoYXIgKnN0cmluZykK Kyt7CisrICAgIHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcpICYmCisrICAgICAgICAgICAgKHN0 cmluZ1sxXSA9PSAnYycgfHwgc3RyaW5nWzFdID09ICdDJykgJiYKKysgICAgICAgICAgICAoc3Ry aW5nWzJdID09ICd0JyB8fCBzdHJpbmdbMl0gPT0gJ1QnKSAmJgorKyAgICAgICAgICAgIChzdHJp bmdbM10gPT0gJ3InIHx8IHN0cmluZ1szXSA9PSAnUicpICYmCisrICAgICAgICAgICAgKHN0cmlu Z1s0XSA9PSAnbCcgfHwgc3RyaW5nWzRdID09ICdMJykgJiYKKysgICAgICAgICAgICAoc3RyaW5n WzVdID09ICc+JykpOworK30KKysKKytzdGF0aWMgaW5saW5lIGdib29sZWFuCisraXNfc2hmdCAo Y29uc3QgZ2NoYXIgKnN0cmluZykKKyt7CisrICAgIHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcp ICYmCisrICAgICAgICAgICAgKHN0cmluZ1sxXSA9PSAncycgfHwgc3RyaW5nWzFdID09ICdTJykg JiYKKysgICAgICAgICAgICAoc3RyaW5nWzJdID09ICdoJyB8fCBzdHJpbmdbMl0gPT0gJ0gnKSAm JgorKyAgICAgICAgICAgIChzdHJpbmdbM10gPT0gJ2YnIHx8IHN0cmluZ1szXSA9PSAnRicpICYm CisrICAgICAgICAgICAgKHN0cmluZ1s0XSA9PSAndCcgfHwgc3RyaW5nWzRdID09ICdUJykgJiYK KysgICAgICAgICAgICAoc3RyaW5nWzVdID09ICc+JykpOworK30KKysKKytzdGF0aWMgaW5saW5l IGdib29sZWFuCisraXNfc2hpZnQgKGNvbnN0IGdjaGFyICpzdHJpbmcpCisreworKyAgICByZXR1 cm4gKChzdHJpbmdbMF0gPT0gJzwnKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbMV0gPT0gJ3Mn IHx8IHN0cmluZ1sxXSA9PSAnUycpICYmCisrICAgICAgICAgICAgKHN0cmluZ1syXSA9PSAnaCcg fHwgc3RyaW5nWzJdID09ICdIJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzNdID09ICdpJyB8 fCBzdHJpbmdbM10gPT0gJ0knKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbNF0gPT0gJ2YnIHx8 IHN0cmluZ1s0XSA9PSAnRicpICYmCisrICAgICAgICAgICAgKHN0cmluZ1s1XSA9PSAndCcgfHwg c3RyaW5nWzVdID09ICdUJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzZdID09ICc+JykpOwor K30KKysKKytzdGF0aWMgaW5saW5lIGdib29sZWFuCisraXNfY29udHJvbCAoY29uc3QgZ2NoYXIg KnN0cmluZykKKyt7CisrICAgIHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcpICYmCisrICAgICAg ICAgICAgKHN0cmluZ1sxXSA9PSAnYycgfHwgc3RyaW5nWzFdID09ICdDJykgJiYKKysgICAgICAg ICAgICAoc3RyaW5nWzJdID09ICdvJyB8fCBzdHJpbmdbMl0gPT0gJ08nKSAmJgorKyAgICAgICAg ICAgIChzdHJpbmdbM10gPT0gJ24nIHx8IHN0cmluZ1szXSA9PSAnTicpICYmCisrICAgICAgICAg ICAgKHN0cmluZ1s0XSA9PSAndCcgfHwgc3RyaW5nWzRdID09ICdUJykgJiYKKysgICAgICAgICAg ICAoc3RyaW5nWzVdID09ICdyJyB8fCBzdHJpbmdbNV0gPT0gJ1InKSAmJgorKyAgICAgICAgICAg IChzdHJpbmdbNl0gPT0gJ28nIHx8IHN0cmluZ1s2XSA9PSAnTycpICYmCisrICAgICAgICAgICAg KHN0cmluZ1s3XSA9PSAnbCcgfHwgc3RyaW5nWzddID09ICdMJykgJiYKKysgICAgICAgICAgICAo c3RyaW5nWzhdID09ICc+JykpOworK30KKysKKytzdGF0aWMgaW5saW5lIGdib29sZWFuCisraXNf cmVsZWFzZSAoY29uc3QgZ2NoYXIgKnN0cmluZykKKyt7CisrICAgIHJldHVybiAoKHN0cmluZ1sw XSA9PSAnPCcpICYmCisrICAgICAgICAgICAgKHN0cmluZ1sxXSA9PSAncicgfHwgc3RyaW5nWzFd ID09ICdSJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzJdID09ICdlJyB8fCBzdHJpbmdbMl0g PT0gJ0UnKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbM10gPT0gJ2wnIHx8IHN0cmluZ1szXSA9 PSAnTCcpICYmCisrICAgICAgICAgICAgKHN0cmluZ1s0XSA9PSAnZScgfHwgc3RyaW5nWzRdID09 ICdFJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzVdID09ICdhJyB8fCBzdHJpbmdbNV0gPT0g J0EnKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbNl0gPT0gJ3MnIHx8IHN0cmluZ1s2XSA9PSAn UycpICYmCisrICAgICAgICAgICAgKHN0cmluZ1s3XSA9PSAnZScgfHwgc3RyaW5nWzddID09ICdF JykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzhdID09ICc+JykpOworK30KKysKKytzdGF0aWMg aW5saW5lIGdib29sZWFuCisraXNfbWV0YSAoY29uc3QgZ2NoYXIgKnN0cmluZykKKyt7CisrICAg IHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcpICYmCisrICAgICAgICAgICAgKHN0cmluZ1sxXSA9 PSAnbScgfHwgc3RyaW5nWzFdID09ICdNJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzJdID09 ICdlJyB8fCBzdHJpbmdbMl0gPT0gJ0UnKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbM10gPT0g J3QnIHx8IHN0cmluZ1szXSA9PSAnVCcpICYmCisrICAgICAgICAgICAgKHN0cmluZ1s0XSA9PSAn YScgfHwgc3RyaW5nWzRdID09ICdBJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzVdID09ICc+ JykpOworK30KKysKKytzdGF0aWMgaW5saW5lIGdib29sZWFuCisraXNfc3VwZXIgKGNvbnN0IGdj aGFyICpzdHJpbmcpCisreworKyAgICByZXR1cm4gKChzdHJpbmdbMF0gPT0gJzwnKSAmJgorKyAg ICAgICAgICAgIChzdHJpbmdbMV0gPT0gJ3MnIHx8IHN0cmluZ1sxXSA9PSAnUycpICYmCisrICAg ICAgICAgICAgKHN0cmluZ1syXSA9PSAndScgfHwgc3RyaW5nWzJdID09ICdVJykgJiYKKysgICAg ICAgICAgICAoc3RyaW5nWzNdID09ICdwJyB8fCBzdHJpbmdbM10gPT0gJ1AnKSAmJgorKyAgICAg ICAgICAgIChzdHJpbmdbNF0gPT0gJ2UnIHx8IHN0cmluZ1s0XSA9PSAnRScpICYmCisrICAgICAg ICAgICAgKHN0cmluZ1s1XSA9PSAncicgfHwgc3RyaW5nWzVdID09ICdSJykgJiYKKysgICAgICAg ICAgICAoc3RyaW5nWzZdID09ICc+JykpOworK30KKysKKytzdGF0aWMgaW5saW5lIGdib29sZWFu CisraXNfaHlwZXIgKGNvbnN0IGdjaGFyICpzdHJpbmcpCisreworKyAgICByZXR1cm4gKChzdHJp bmdbMF0gPT0gJzwnKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbMV0gPT0gJ2gnIHx8IHN0cmlu Z1sxXSA9PSAnSCcpICYmCisrICAgICAgICAgICAgKHN0cmluZ1syXSA9PSAneScgfHwgc3RyaW5n WzJdID09ICdZJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzNdID09ICdwJyB8fCBzdHJpbmdb M10gPT0gJ1AnKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdbNF0gPT0gJ2UnIHx8IHN0cmluZ1s0 XSA9PSAnRScpICYmCisrICAgICAgICAgICAgKHN0cmluZ1s1XSA9PSAncicgfHwgc3RyaW5nWzVd ID09ICdSJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzZdID09ICc+JykpOworK30KKysKKytz dGF0aWMgaW5saW5lIGdib29sZWFuCisraXNfcHJpbWFyeSAoY29uc3QgZ2NoYXIgKnN0cmluZykK Kyt7CisrICAgIHJldHVybiAoKHN0cmluZ1swXSA9PSAnPCcpICYmCisrICAgICAgICAgICAgKHN0 cmluZ1sxXSA9PSAncCcgfHwgc3RyaW5nWzFdID09ICdQJykgJiYKKysgICAgICAgICAgICAoc3Ry aW5nWzJdID09ICdyJyB8fCBzdHJpbmdbMl0gPT0gJ1InKSAmJgorKyAgICAgICAgICAgIChzdHJp bmdbM10gPT0gJ2knIHx8IHN0cmluZ1szXSA9PSAnSScpICYmCisrICAgICAgICAgICAgKHN0cmlu Z1s0XSA9PSAnbScgfHwgc3RyaW5nWzRdID09ICdNJykgJiYKKysgICAgICAgICAgICAoc3RyaW5n WzVdID09ICdhJyB8fCBzdHJpbmdbNV0gPT0gJ0EnKSAmJgorKyAgICAgICAgICAgIChzdHJpbmdb Nl0gPT0gJ3InIHx8IHN0cmluZ1s2XSA9PSAnUicpICYmCisrICAgICAgICAgICAgKHN0cmluZ1s3 XSA9PSAneScgfHwgc3RyaW5nWzddID09ICdZJykgJiYKKysgICAgICAgICAgICAoc3RyaW5nWzhd ID09ICc+JykpOworK30KKysKKytzdGF0aWMgaW5saW5lIGdib29sZWFuCisraXNfa2V5Y29kZSAo Y29uc3QgZ2NoYXIgKnN0cmluZykKKyt7CisrICAgIHJldHVybiAoc3RyaW5nWzBdID09ICcwJyAm JgorKyAgICAgICAgICAgIHN0cmluZ1sxXSA9PSAneCcgJiYKKysgICAgICAgICAgICBnX2FzY2lp X2lzeGRpZ2l0IChzdHJpbmdbMl0pICYmCisrICAgICAgICAgICAgZ19hc2NpaV9pc3hkaWdpdCAo c3RyaW5nWzNdKSk7CisrfQorKworKy8qKgorKyAqIGlidXNfYWNjZWxlcmF0b3JfcGFyc2U6Cisr ICogQGFjY2VsZXJhdG9yOiBzdHJpbmcgcmVwcmVzZW50aW5nIGFuIGFjY2VsZXJhdG9yCisrICog QGFjY2VsZXJhdG9yX2tleTogKG91dCkgKGFsbG93LW5vbmUpOiByZXR1cm4gbG9jYXRpb24gZm9y IGFjY2VsZXJhdG9yCisrICogICAgIGtleXZhbCwgb3IgJU5VTEwKKysgKiBAYWNjZWxlcmF0b3Jf bW9kczogKG91dCkgKGFsbG93LW5vbmUpOiByZXR1cm4gbG9jYXRpb24gZm9yIGFjY2VsZXJhdG9y CisrICogICAgIG1vZGlmaWVyIG1hc2ssICVOVUxMCisrICoKKysgKiBQYXJzZXMgYSBzdHJpbmcg cmVwcmVzZW50aW5nIGFuIGFjY2VsZXJhdG9yLiBUaGUgZm9ybWF0IGxvb2tzIGxpa2UKKysgKiDi gJw8Q29udHJvbD5h4oCdIG9yIOKAnDxTaGlmdD48QWx0PkYx4oCdIG9yIOKAnDxSZWxlYXNlPnri gJ0gKHRoZSBsYXN0IG9uZSBpcworKyAqIGZvciBrZXkgcmVsZWFzZSkuCisrICoKKysgKiBUaGUg cGFyc2VyIGlzIGZhaXJseSBsaWJlcmFsIGFuZCBhbGxvd3MgbG93ZXIgb3IgdXBwZXIgY2FzZSwg YW5kIGFsc28KKysgKiBhYmJyZXZpYXRpb25zIHN1Y2ggYXMg4oCcPEN0bD7igJ0gYW5kIOKAnDxD dHJsPuKAnS4gS2V5IG5hbWVzIGFyZSBwYXJzZWQgdXNpbmcKKysgKiBnZGtfa2V5dmFsX2Zyb21f bmFtZSgpLiBGb3IgY2hhcmFjdGVyIGtleXMgdGhlIG5hbWUgaXMgbm90IHRoZSBzeW1ib2wsCisr ICogYnV0IHRoZSBsb3dlcmNhc2UgbmFtZSwgZS5nLiBvbmUgd291bGQgdXNlIOKAnDxDdHJsPm1p bnVz4oCdIGluc3RlYWQgb2YKKysgKiDigJw8Q3RybD4t4oCdLgorKyAqCisrICogSWYgdGhlIHBh cnNlIGZhaWxzLCBAYWNjZWxlcmF0b3Jfa2V5IGFuZCBAYWNjZWxlcmF0b3JfbW9kcyB3aWxsCisr ICogYmUgc2V0IHRvIDAgKHplcm8pLgorKyAqCisrICogU2luY2U6IDEuNS4xOAorKyAqLworK3Zv aWQKKytpYnVzX2FjY2VsZXJhdG9yX3BhcnNlIChjb25zdCBnY2hhciAgICAgICphY2NlbGVyYXRv ciwKKysgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICphY2NlbGVyYXRv cl9rZXksCisrICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c01vZGlmaWVyVHlwZSAqYWNjZWxl cmF0b3JfbW9kcykKKyt7CisrICAgIGd1aW50IGtleXZhbDsKKysgICAgSUJ1c01vZGlmaWVyVHlw ZSBtb2RzOworKyAgICBnaW50IGxlbjsKKysgICAgZ2Jvb2xlYW4gZXJyb3I7CisrCisrICAgIGlm IChhY2NlbGVyYXRvcl9rZXkpCisrICAgICAgICAqYWNjZWxlcmF0b3Jfa2V5ID0gMDsKKysgICAg aWYgKGFjY2VsZXJhdG9yX21vZHMpCisrICAgICAgICAqYWNjZWxlcmF0b3JfbW9kcyA9IDA7Cisr ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGFjY2VsZXJhdG9yICE9IE5VTEwpOworKworKyAgICBlcnJv ciA9IEZBTFNFOworKyAgICBrZXl2YWwgPSAwOworKyAgICBtb2RzID0gMDsKKysgICAgbGVuID0g c3RybGVuIChhY2NlbGVyYXRvcik7CisrICAgIHdoaWxlIChsZW4pIHsKKysgICAgICAgIGlmICgq YWNjZWxlcmF0b3IgPT0gJzwnKSB7CisrICAgICAgICAgICAgaWYgKGxlbiA+PSA5ICYmIGlzX3Jl bGVhc2UgKGFjY2VsZXJhdG9yKSkgeworKyAgICAgICAgICAgICAgICBhY2NlbGVyYXRvciArPSA5 OworKyAgICAgICAgICAgICAgICBsZW4gLT0gOTsKKysgICAgICAgICAgICAgICAgbW9kcyB8PSBJ QlVTX1JFTEVBU0VfTUFTSzsKKysgICAgICAgICAgICB9IGVsc2UgaWYgKGxlbiA+PSA5ICYmIGlz X3ByaW1hcnkgKGFjY2VsZXJhdG9yKSkgeworKyAgICAgICAgICAgICAgICBhY2NlbGVyYXRvciAr PSA5OworKyAgICAgICAgICAgICAgICBsZW4gLT0gOTsKKysgICAgICAgICAgICAgICAgbW9kcyB8 PSBfSUJVU19HRVRfUFJJTUFSWV9BQ0NFTF9NT0Q7CisrICAgICAgICAgICAgfSBlbHNlIGlmIChs ZW4gPj0gOSAmJiBpc19jb250cm9sIChhY2NlbGVyYXRvcikpIHsKKysgICAgICAgICAgICAgICAg YWNjZWxlcmF0b3IgKz0gOTsKKysgICAgICAgICAgICAgICAgbGVuIC09IDk7CisrICAgICAgICAg ICAgICAgIG1vZHMgfD0gSUJVU19DT05UUk9MX01BU0s7CisrICAgICAgICAgICAgfSBlbHNlIGlm IChsZW4gPj0gNyAmJiBpc19zaGlmdCAoYWNjZWxlcmF0b3IpKSB7CisrICAgICAgICAgICAgICAg IGFjY2VsZXJhdG9yICs9IDc7CisrICAgICAgICAgICAgICAgIGxlbiAtPSA3OworKyAgICAgICAg ICAgICAgICBtb2RzIHw9IElCVVNfU0hJRlRfTUFTSzsKKysgICAgICAgICAgICB9IGVsc2UgaWYg KGxlbiA+PSA2ICYmIGlzX3NoZnQgKGFjY2VsZXJhdG9yKSkgeworKyAgICAgICAgICAgICAgICBh Y2NlbGVyYXRvciArPSA2OworKyAgICAgICAgICAgICAgICBsZW4gLT0gNjsKKysgICAgICAgICAg ICAgICAgbW9kcyB8PSBJQlVTX1NISUZUX01BU0s7CisrICAgICAgICAgICAgfSBlbHNlIGlmIChs ZW4gPj0gNiAmJiBpc19jdHJsIChhY2NlbGVyYXRvcikpIHsKKysgICAgICAgICAgICAgICAgYWNj ZWxlcmF0b3IgKz0gNjsKKysgICAgICAgICAgICAgICAgbGVuIC09IDY7CisrICAgICAgICAgICAg ICAgIG1vZHMgfD0gSUJVU19DT05UUk9MX01BU0s7CisrICAgICAgICAgICAgfSBlbHNlIGlmIChs ZW4gPj0gNiAmJiBpc19tb2R4IChhY2NlbGVyYXRvcikpIHsKKysgICAgICAgICAgICAgICAgc3Rh dGljIGNvbnN0IGd1aW50IG1vZF92YWxzW10gPSB7CisrICAgICAgICAgICAgICAgICAgICBJQlVT X01PRDFfTUFTSywgSUJVU19NT0QyX01BU0ssIElCVVNfTU9EM19NQVNLLAorKyAgICAgICAgICAg ICAgICAgICAgSUJVU19NT0Q0X01BU0ssIElCVVNfTU9ENV9NQVNLCisrICAgICAgICAgICAgICAg IH07CisrCisrICAgICAgICAgICAgICAgIGxlbiAtPSA2OworKyAgICAgICAgICAgICAgICBhY2Nl bGVyYXRvciArPSA0OworKyAgICAgICAgICAgICAgICBtb2RzIHw9IG1vZF92YWxzWyphY2NlbGVy YXRvciAtICcxJ107CisrICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9yICs9IDI7CisrICAgICAg ICAgICAgfSBlbHNlIGlmIChsZW4gPj0gNSAmJiBpc19jdGwgKGFjY2VsZXJhdG9yKSkgeworKyAg ICAgICAgICAgICAgICBhY2NlbGVyYXRvciArPSA1OworKyAgICAgICAgICAgICAgICBsZW4gLT0g NTsKKysgICAgICAgICAgICAgICAgbW9kcyB8PSBJQlVTX0NPTlRST0xfTUFTSzsKKysgICAgICAg ICAgICB9IGVsc2UgaWYgKGxlbiA+PSA1ICYmIGlzX2FsdCAoYWNjZWxlcmF0b3IpKSB7CisrICAg ICAgICAgICAgICAgIGFjY2VsZXJhdG9yICs9IDU7CisrICAgICAgICAgICAgICAgIGxlbiAtPSA1 OworKyAgICAgICAgICAgICAgICBtb2RzIHw9IElCVVNfTU9EMV9NQVNLOworKyAgICAgICAgICAg IH0gZWxzZSBpZiAobGVuID49IDYgJiYgaXNfbWV0YSAoYWNjZWxlcmF0b3IpKSB7CisrICAgICAg ICAgICAgICAgIGFjY2VsZXJhdG9yICs9IDY7CisrICAgICAgICAgICAgICAgIGxlbiAtPSA2Owor KyAgICAgICAgICAgICAgICBtb2RzIHw9IElCVVNfTUVUQV9NQVNLOworKyAgICAgICAgICAgIH0g ZWxzZSBpZiAobGVuID49IDcgJiYgaXNfaHlwZXIgKGFjY2VsZXJhdG9yKSkgeworKyAgICAgICAg ICAgICAgICBhY2NlbGVyYXRvciArPSA3OworKyAgICAgICAgICAgICAgICBsZW4gLT0gNzsKKysg ICAgICAgICAgICAgICAgbW9kcyB8PSBJQlVTX0hZUEVSX01BU0s7CisrICAgICAgICAgICAgfSBl bHNlIGlmIChsZW4gPj0gNyAmJiBpc19zdXBlciAoYWNjZWxlcmF0b3IpKSB7CisrICAgICAgICAg ICAgICAgIGFjY2VsZXJhdG9yICs9IDc7CisrICAgICAgICAgICAgICAgIGxlbiAtPSA3OworKyAg ICAgICAgICAgICAgICBtb2RzIHw9IElCVVNfU1VQRVJfTUFTSzsKKysgICAgICAgICAgICB9IGVs c2UgeworKyAgICAgICAgICAgICAgICBnY2hhciBsYXN0X2NoOworKworKyAgICAgICAgICAgICAg ICBsYXN0X2NoID0gKmFjY2VsZXJhdG9yOworKyAgICAgICAgICAgICAgICB3aGlsZSAobGFzdF9j aCAmJiBsYXN0X2NoICE9ICc+JykgeworKyAgICAgICAgICAgICAgICAgICAgbGFzdF9jaCA9ICph Y2NlbGVyYXRvcjsKKysgICAgICAgICAgICAgICAgICAgIGFjY2VsZXJhdG9yICs9IDE7CisrICAg ICAgICAgICAgICAgICAgICBsZW4gLT0gMTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgIH0KKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgaWYgKGxlbiA+PSA0ICYmIGlz X2tleWNvZGUgKGFjY2VsZXJhdG9yKSkgeworKyAgICAgICAgICAgICAgICAvKiBUaGVyZSB3YXMg YSBrZXljb2RlIGluIHRoZSBzdHJpbmcsIGJ1dAorKyAgICAgICAgICAgICAgICAgKiB3ZSBjYW5u b3Qgc3RvcmUgaXQsIHNvIHdlIGhhdmUgYW4gZXJyb3IgKi8KKysgICAgICAgICAgICAgICAgZXJy b3IgPSBUUlVFOworKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKysgICAgICAgICAgICB9IGVs c2UgeworKwkgICAgICAgIGtleXZhbCA9IGlidXNfa2V5dmFsX2Zyb21fbmFtZSAoYWNjZWxlcmF0 b3IpOworKwkgICAgICAgIGlmIChrZXl2YWwgPT0gSUJVU19LRVlfVm9pZFN5bWJvbCkgeworKwkg ICAgICAgICAgICBlcnJvciA9IFRSVUU7CisrCSAgICAgICAgICAgIGdvdG8gb3V0OworKwkJfQor KwkgICAgfQorKworKyAgICAgICAgICAgIGFjY2VsZXJhdG9yICs9IGxlbjsKKysgICAgICAgICAg ICBsZW4gLT0gbGVuOworKyAgICAgICAgfQorKyAgICB9CisrCisrb3V0OgorKyAgICBpZiAoZXJy b3IpCisrICAgICAgICBrZXl2YWwgPSBtb2RzID0gMDsKKysKKysgICAgaWYgKGFjY2VsZXJhdG9y X2tleSkKKysgICAgICAgICphY2NlbGVyYXRvcl9rZXkgPSBpYnVzX2tleXZhbF90b19sb3dlciAo a2V5dmFsKTsKKysgICAgaWYgKGFjY2VsZXJhdG9yX21vZHMpCisrICAgICAgICAqYWNjZWxlcmF0 b3JfbW9kcyA9IG1vZHM7CisrfQorKworKy8qKgorKyAqIGlidXNfYWNjZWxlcmF0b3JfbmFtZToK KysgKiBAYWNjZWxlcmF0b3Jfa2V5OiBhY2NlbGVyYXRvciBrZXl2YWwKKysgKiBAYWNjZWxlcmF0 b3JfbW9kczogYWNjZWxlcmF0b3IgbW9kaWZpZXIgbWFzaworKyAqCisrICogQ29udmVydHMgYW4g YWNjZWxlcmF0b3Iga2V5dmFsIGFuZCBtb2RpZmllciBtYXNrIGludG8gYSBzdHJpbmcKKysgKiBw YXJzZWFibGUgYnkgZ3RrX2FjY2VsZXJhdG9yX3BhcnNlKCkuIEZvciBleGFtcGxlLCBpZiB5b3Ug cGFzcyBpbgorKyAqICNJQlVTX0tFWV9xIGFuZCAjSUJVU19DT05UUk9MX01BU0ssIHRoaXMgZnVu Y3Rpb24gcmV0dXJucyDigJw8Q29udHJvbD5x4oCdLgorKyAqCisrICogSWYgeW91IG5lZWQgdG8g ZGlzcGxheSBhY2NlbGVyYXRvcnMgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLAorKyAqIHNlZSBndGtf YWNjZWxlcmF0b3JfZ2V0X2xhYmVsKCkuCisrICoKKysgKiBSZXR1cm5zOiBhIG5ld2x5LWFsbG9j YXRlZCBhY2NlbGVyYXRvciBuYW1lCisrICovCisrZ2NoYXIqCisraWJ1c19hY2NlbGVyYXRvcl9u YW1lIChndWludCAgICAgICAgICAgIGFjY2VsZXJhdG9yX2tleSwKKysgICAgICAgICAgICAgICAg ICAgICAgIElCdXNNb2RpZmllclR5cGUgYWNjZWxlcmF0b3JfbW9kcykKKyt7CisrICAgc3RhdGlj IGNvbnN0IGdjaGFyIHRleHRfcmVsZWFzZVtdID0gIjxSZWxlYXNlPiI7CisrICAgc3RhdGljIGNv bnN0IGdjaGFyIHRleHRfcHJpbWFyeVtdID0gIjxQcmltYXJ5PiI7CisrICAgc3RhdGljIGNvbnN0 IGdjaGFyIHRleHRfc2hpZnRbXSA9ICI8U2hpZnQ+IjsKKysgICBzdGF0aWMgY29uc3QgZ2NoYXIg dGV4dF9jb250cm9sW10gPSAiPENvbnRyb2w+IjsKKysgICBzdGF0aWMgY29uc3QgZ2NoYXIgdGV4 dF9tb2QxW10gPSAiPEFsdD4iOworKyAgIHN0YXRpYyBjb25zdCBnY2hhciB0ZXh0X21vZDJbXSA9 ICI8TW9kMj4iOworKyAgIHN0YXRpYyBjb25zdCBnY2hhciB0ZXh0X21vZDNbXSA9ICI8TW9kMz4i OworKyAgIHN0YXRpYyBjb25zdCBnY2hhciB0ZXh0X21vZDRbXSA9ICI8TW9kND4iOworKyAgIHN0 YXRpYyBjb25zdCBnY2hhciB0ZXh0X21vZDVbXSA9ICI8TW9kNT4iOworKyAgIHN0YXRpYyBjb25z dCBnY2hhciB0ZXh0X21ldGFbXSA9ICI8TWV0YT4iOworKyAgIHN0YXRpYyBjb25zdCBnY2hhciB0 ZXh0X3N1cGVyW10gPSAiPFN1cGVyPiI7CisrICAgc3RhdGljIGNvbnN0IGdjaGFyIHRleHRfaHlw ZXJbXSA9ICI8SHlwZXI+IjsKKysgICBJQnVzTW9kaWZpZXJUeXBlIHNhdmVkX21vZHM7CisrICAg Z3VpbnQgbDsKKysgICBjb25zdCBnY2hhciAqa2V5dmFsX25hbWU7CisrICAgZ2NoYXIgKmFjY2Vs ZXJhdG9yOworKworKyAgICBhY2NlbGVyYXRvcl9tb2RzICY9IElCVVNfTU9ESUZJRVJfTUFTSzsK KysKKysgICAga2V5dmFsX25hbWUgPSBpYnVzX2tleXZhbF9uYW1lIChpYnVzX2tleXZhbF90b19s b3dlciAoYWNjZWxlcmF0b3Jfa2V5KSk7CisrICAgIGlmICgha2V5dmFsX25hbWUpCisrICAgICAg ICBrZXl2YWxfbmFtZSA9ICIiOworKworKyAgICBzYXZlZF9tb2RzID0gYWNjZWxlcmF0b3JfbW9k czsKKysgICAgbCA9IDA7CisrICAgIGlmIChhY2NlbGVyYXRvcl9tb2RzICYgSUJVU19SRUxFQVNF X01BU0spCisrICAgICAgICBsICs9IHNpemVvZiAodGV4dF9yZWxlYXNlKSAtIDE7CisrICAgIGlm IChhY2NlbGVyYXRvcl9tb2RzICYgX0lCVVNfR0VUX1BSSU1BUllfQUNDRUxfTU9EKSB7CisrICAg ICAgICBsICs9IHNpemVvZiAodGV4dF9wcmltYXJ5KSAtIDE7CisrICAgICAgICAvKiBjb25zdW1l IHRoZSBkZWZhdWx0IGFjY2VsICovCisrICAgICAgICBhY2NlbGVyYXRvcl9tb2RzICY9IH5fSUJV U19HRVRfUFJJTUFSWV9BQ0NFTF9NT0Q7CisrICAgIH0KKysgICAgaWYgKGFjY2VsZXJhdG9yX21v ZHMgJiBJQlVTX1NISUZUX01BU0spCisrICAgICAgICBsICs9IHNpemVvZiAodGV4dF9zaGlmdCkg LSAxOworKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfQ09OVFJPTF9NQVNLKQorKyAg ICAgICAgbCArPSBzaXplb2YgKHRleHRfY29udHJvbCkgLSAxOworKyAgICBpZiAoYWNjZWxlcmF0 b3JfbW9kcyAmIElCVVNfTU9EMV9NQVNLKQorKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfbW9k MSkgLSAxOworKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9EMl9NQVNLKQorKyAg ICAgICAgbCArPSBzaXplb2YgKHRleHRfbW9kMikgLSAxOworKyAgICBpZiAoYWNjZWxlcmF0b3Jf bW9kcyAmIElCVVNfTU9EM19NQVNLKQorKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfbW9kMykg LSAxOworKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9ENF9NQVNLKQorKyAgICAg ICAgbCArPSBzaXplb2YgKHRleHRfbW9kNCkgLSAxOworKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9k cyAmIElCVVNfTU9ENV9NQVNLKQorKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfbW9kNSkgLSAx OworKyAgICBsICs9IHN0cmxlbiAoa2V5dmFsX25hbWUpOworKyAgICBpZiAoYWNjZWxlcmF0b3Jf bW9kcyAmIElCVVNfTUVUQV9NQVNLKQorKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfbWV0YSkg LSAxOworKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfSFlQRVJfTUFTSykKKysgICAg ICAgIGwgKz0gc2l6ZW9mICh0ZXh0X2h5cGVyKSAtIDE7CisrICAgIGlmIChhY2NlbGVyYXRvcl9t b2RzICYgSUJVU19TVVBFUl9NQVNLKQorKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfc3VwZXIp IC0gMTsKKysKKysgICAgYWNjZWxlcmF0b3IgPSBnX25ldyAoZ2NoYXIsIGwgKyAxKTsKKysKKysg ICAgYWNjZWxlcmF0b3JfbW9kcyA9IHNhdmVkX21vZHM7CisrICAgIGwgPSAwOworKyAgICBhY2Nl bGVyYXRvcltsXSA9IDA7CisrICAgIGlmIChhY2NlbGVyYXRvcl9tb2RzICYgSUJVU19SRUxFQVNF X01BU0spIHsKKysgICAgICAgIHN0cmNweSAoYWNjZWxlcmF0b3IgKyBsLCB0ZXh0X3JlbGVhc2Up OworKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfcmVsZWFzZSkgLSAxOworKyAgICB9CisrICAg IGlmIChhY2NlbGVyYXRvcl9tb2RzICYgX0lCVVNfR0VUX1BSSU1BUllfQUNDRUxfTU9EKSB7Cisr ICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4dF9wcmltYXJ5KTsKKysgICAgICAg IGwgKz0gc2l6ZW9mICh0ZXh0X3ByaW1hcnkpIC0gMTsKKysgICAgICAgIC8qIGNvbnN1bWUgdGhl IGRlZmF1bHQgYWNjZWwgKi8KKysgICAgICAgIGFjY2VsZXJhdG9yX21vZHMgJj0gfl9JQlVTX0dF VF9QUklNQVJZX0FDQ0VMX01PRDsKKysgICAgfQorKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAm IElCVVNfU0hJRlRfTUFTSykgeworKyAgICAgICAgc3RyY3B5IChhY2NlbGVyYXRvciArIGwsIHRl eHRfc2hpZnQpOworKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfc2hpZnQpIC0gMTsKKysgICAg fQorKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfQ09OVFJPTF9NQVNLKSB7CisrICAg ICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4dF9jb250cm9sKTsKKysgICAgICAgIGwg Kz0gc2l6ZW9mICh0ZXh0X2NvbnRyb2wpIC0gMTsKKysgICAgfQorKyAgICBpZiAoYWNjZWxlcmF0 b3JfbW9kcyAmIElCVVNfTU9EMV9NQVNLKSB7CisrICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9y ICsgbCwgdGV4dF9tb2QxKTsKKysgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X21vZDEpIC0gMTsK KysgICAgfQorKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9EMl9NQVNLKSB7Cisr ICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4dF9tb2QyKTsKKysgICAgICAgIGwg Kz0gc2l6ZW9mICh0ZXh0X21vZDIpIC0gMTsKKysgICAgfQorKyAgICBpZiAoYWNjZWxlcmF0b3Jf bW9kcyAmIElCVVNfTU9EM19NQVNLKSB7CisrICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsg bCwgdGV4dF9tb2QzKTsKKysgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X21vZDMpIC0gMTsKKysg ICAgfQorKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTU9ENF9NQVNLKSB7CisrICAg ICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4dF9tb2Q0KTsKKysgICAgICAgIGwgKz0g c2l6ZW9mICh0ZXh0X21vZDQpIC0gMTsKKysgICAgfQorKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9k cyAmIElCVVNfTU9ENV9NQVNLKSB7CisrICAgICAgICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwg dGV4dF9tb2Q1KTsKKysgICAgICAgIGwgKz0gc2l6ZW9mICh0ZXh0X21vZDUpIC0gMTsKKysgICAg fQorKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfTUVUQV9NQVNLKSB7CisrICAgICAg ICBzdHJjcHkgKGFjY2VsZXJhdG9yICsgbCwgdGV4dF9tZXRhKTsKKysgICAgICAgIGwgKz0gc2l6 ZW9mICh0ZXh0X21ldGEpIC0gMTsKKysgICAgfQorKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAm IElCVVNfSFlQRVJfTUFTSykgeworKyAgICAgICAgc3RyY3B5IChhY2NlbGVyYXRvciArIGwsIHRl eHRfaHlwZXIpOworKyAgICAgICAgbCArPSBzaXplb2YgKHRleHRfaHlwZXIpIC0gMTsKKysgICAg fQorKyAgICBpZiAoYWNjZWxlcmF0b3JfbW9kcyAmIElCVVNfU1VQRVJfTUFTSykgeworKyAgICAg ICAgc3RyY3B5IChhY2NlbGVyYXRvciArIGwsIHRleHRfc3VwZXIpOworKyAgICAgICAgbCArPSBz aXplb2YgKHRleHRfc3VwZXIpIC0gMTsKKysgICAgfQorKyAgICBzdHJjcHkgKGFjY2VsZXJhdG9y ICsgbCwga2V5dmFsX25hbWUpOworKworKyAgICByZXR1cm4gYWNjZWxlcmF0b3I7CisrfQorZGlm ZiAtLWdpdCBhL3NyYy9pYnVzYWNjZWxncm91cC5oIGIvc3JjL2lidXNhY2NlbGdyb3VwLmgKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uY2IzOGJlZTQKKy0tLSAvZGV2L251 bGwKKysrKyBiL3NyYy9pYnVzYWNjZWxncm91cC5oCitAQCAtMCwwICsxLDUxIEBACisrLyogR1RL IC0gVGhlIEdJTVAgVG9vbGtpdAorKyAqIENvcHlyaWdodCAoQykgMTk5OCwgMjAwMSBUaW0gSmFu aWsKKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICog VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5z ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKyAqLworKworKy8qCisrICogTW9kaWZpZWQgYnkgdGhlIEdUSysgVGVh bSBhbmQgb3RoZXJzIDE5OTctMjAwMC4gIFNlZSB0aGUgQVVUSE9SUworKyAqIGZpbGUgZm9yIGEg bGlzdCBvZiBwZW9wbGUgb24gdGhlIEdUSysgVGVhbS4gIFNlZSB0aGUgQ2hhbmdlTG9nCisrICog ZmlsZXMgZm9yIGEgbGlzdCBvZiBjaGFuZ2VzLiAgVGhlc2UgZmlsZXMgYXJlIGRpc3RyaWJ1dGVk IHdpdGgKKysgKiBHVEsrIGF0IGZ0cDovL2Z0cC5ndGsub3JnL3B1Yi9ndGsvLgorKyAqLworKwor KyNpZm5kZWYgX19JQlVTX0FDQ0VMX0dST1VQX0hfCisrI2RlZmluZSBfX0lCVVNfQUNDRUxfR1JP VVBfSF8KKysKKysKKysjaWYgIWRlZmluZWQgKF9fSUJVU19IX0lOU0lERV9fKSAmJiAhZGVmaW5l ZCAoSUJVU19DT01QSUxBVElPTikKKysjZXJyb3IgIk9ubHkgPGlidXMuaD4gY2FuIGJlIGluY2x1 ZGVkIGRpcmVjdGx5IgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxnbGliLmg+CisrI2luY2x1ZGUg PGlidXN0eXBlcy5oPgorKworK0dfQkVHSU5fREVDTFMKKysKKysKKysvKiAtLS0gQWNjZWxlcmF0 b3JzLS0tICovCisrZ2Jvb2xlYW4gaWJ1c19hY2NlbGVyYXRvcl92YWxpZCAgICAgICAgICAgICAg IChndWludCAgICAgICAgICAgIGtleXZhbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElCdXNNb2RpZmllclR5cGUgbW9kaWZpZXJzKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19HTlVDX0NPTlNUOworK3Zv aWQgICAgIGlidXNfYWNjZWxlcmF0b3JfcGFyc2UgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIg ICAgICAqYWNjZWxlcmF0b3IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBndWludCAgICAgICAgICAgICphY2NlbGVyYXRvcl9rZXksCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzTW9kaWZpZXJUeXBlICph Y2NlbGVyYXRvcl9tb2RzKTsKKytnY2hhciogICBpYnVzX2FjY2VsZXJhdG9yX25hbWUgICAgICAg ICAgICAgICAgKGd1aW50ICAgICAgICAgICAgYWNjZWxlcmF0b3Jfa2V5LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c01vZGlmaWVyVHlwZSBhY2Nl bGVyYXRvcl9tb2RzKTsKKysKKytHX0VORF9ERUNMUworKworKyNlbmRpZiAvKiBfX0lCVVNfQUND RUxfR1JPVVBfSF8gKi8KK2RpZmYgLS1naXQgYS9zcmMvaWJ1c2VuZ2luZS5jIGIvc3JjL2lidXNl bmdpbmUuYworaW5kZXggZGE2NDhkMTEuLjlhMGIxYThhIDEwMDY0NAorLS0tIGEvc3JjL2lidXNl bmdpbmUuYworKysrIGIvc3JjL2lidXNlbmdpbmUuYworQEAgLTIwLDEyICsyMCwxNiBAQAorICAq IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgIDAyMTEwLTEzMDEKKyAgKiBVU0EKKyAgKi8KKy0jaW5jbHVkZSAiaWJ1c2VuZ2luZS5o IgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1 ZGUgImlidXNhY2NlbGdyb3VwLmgiCisrI2luY2x1ZGUgImlidXNlbmdpbmUuaCIKKysjaW5jbHVk ZSAiaWJ1c2tleXN5bXMuaCIKKyAjaW5jbHVkZSAiaWJ1c21hcnNoYWxlcnMuaCIKKyAjaW5jbHVk ZSAiaWJ1c2ludGVybmFsLmgiCisgI2luY2x1ZGUgImlidXNzaGFyZS5oIgorKyNpbmNsdWRlICJp YnVzeGV2ZW50LmgiCisgCisgI2RlZmluZSBJQlVTX0VOR0lORV9HRVRfUFJJVkFURShvKSAgXAor ICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChvKSwgSUJVU19UWVBFX0VOR0lORSwg SUJ1c0VuZ2luZVByaXZhdGUpKQorQEAgLTYwLDYgKzY0LDggQEAgZW51bSB7CisgfTsKKyAKKyAK Kyt0eXBlZGVmIHN0cnVjdCBfSUJ1c0VuZ2luZUtleWJpbmRpbmcgSUJ1c0VuZ2luZUtleWJpbmRp bmc7CisrCisgLyogSUJ1c0VuZ2luZVByaXYgKi8KKyBzdHJ1Y3QgX0lCdXNFbmdpbmVQcml2YXRl IHsKKyAgICAgZ2NoYXIgKmVuZ2luZV9uYW1lOworQEAgLTc0LDExICs4MCwxOSBAQCBzdHJ1Y3Qg X0lCdXNFbmdpbmVQcml2YXRlIHsKKyAgICAgLyogY2FjaGVkIGNvbnRlbnQtdHlwZSAqLworICAg ICBndWludCBjb250ZW50X3B1cnBvc2U7CisgICAgIGd1aW50IGNvbnRlbnRfaGludHM7CisrCisr ICAgIEdTZXR0aW5ncyAgICAgICAgICAgICAqc2V0dGluZ3NfZW1vamk7CisrICAgIElCdXNFbmdp bmVLZXliaW5kaW5nICoqZW1vamlfa2V5YmluZGluZ3M7CisrfTsKKysKKytzdHJ1Y3QgX0lCdXNF bmdpbmVLZXliaW5kaW5nIHsKKysgICAgZ3VpbnQgICAgICAgICAgICBrZXl2YWw7CisrICAgIElC dXNNb2RpZmllclR5cGUgbW9kaWZpZXJzOworIH07CisgCisgc3RhdGljIGd1aW50ICAgICAgICAg ICAgZW5naW5lX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07CisgCistc3RhdGljIElCdXNU ZXh0ICp0ZXh0X2VtcHR5ID0gTlVMTDsKKytzdGF0aWMgSUJ1c1RleHQgKnRleHRfZW1wdHk7Cisg CisgLyogZnVuY3Rpb25zIHByb3RvdHlwZSAqLworIHN0YXRpYyB2b2lkICAgICAgaWJ1c19lbmdp bmVfZGVzdHJveSAgICAgICAgIChJQnVzRW5naW5lICAgICAgICAgKmVuZ2luZSk7CitAQCAtMTc2 LDYgKzE5MCwxMSBAQCBzdGF0aWMgdm9pZCAgICAgIGlidXNfZW5naW5lX2RidXNfcHJvcGVydHlf Y2hhbmdlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJ QnVzRW5naW5lICAgICAgICAgKmVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICpwcm9wZXJ0eV9uYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAg ICAgICAgKnZhbHVlKTsKKytzdGF0aWMgdm9pZCAgICAgIGlidXNfZW5naW5lX2tleWJpbmRpbmdf ZnJlZSAoSUJ1c0VuZ2luZSAgICAgICAgICplbmdpbmUpOworK3N0YXRpYyB2b2lkICAgICAgc2V0 dGluZ3NfZW1vamlfaG90a2V5X2NoYW5nZWRfY2IgCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKEdTZXR0aW5ncyAgICAgICAgICAqc2V0dGluZ3MsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg ICAgICAqa2V5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBncG9pbnRlciAgICAgICAgICAgIGRhdGEpOworIAorIAorIEdfREVGSU5FX1RZUEUgKElCdXNF bmdpbmUsIGlidXNfZW5naW5lLCBJQlVTX1RZUEVfU0VSVklDRSkKK0BAIC0yNjMsMTEgKzI4Miwy NyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIgaW50cm9zcGVjdGlvbl94bWxbXSA9CisgICAgICIgICAg ICA8YXJnIHR5cGU9J3UnIG5hbWU9J2tleWNvZGUnIC8+IgorICAgICAiICAgICAgPGFyZyB0eXBl PSd1JyBuYW1lPSdzdGF0ZScgLz4iCisgICAgICIgICAgPC9zaWduYWw+IgorKyAgICAiICAgIDxz aWduYWwgbmFtZT0nUGFuZWxFeHRlbnNpb24nPiIKKysgICAgIiAgICAgIDxhcmcgdHlwZT0ndicg bmFtZT0nZGF0YScgLz4iCisrICAgICIgICAgPC9zaWduYWw+IgorICAgICAvKiBGSVhNRSBwcm9w ZXJ0aWVzICovCisgICAgICIgICAgPHByb3BlcnR5IG5hbWU9J0NvbnRlbnRUeXBlJyB0eXBlPSco dXUpJyBhY2Nlc3M9J3dyaXRlJyAvPiIKKyAgICAgIiAgPC9pbnRlcmZhY2U+IgorICAgICAiPC9u b2RlPiI7CisgCisrc3RhdGljIGNvbnN0IGd1aW50IElCVVNfTU9ESUZJRVJfRklMVEVSID0KKysg ICAgICAgIElCVVNfTU9ESUZJRVJfTUFTSyAmIH4oCisrICAgICAgICBJQlVTX0xPQ0tfTUFTSyB8 ICAvKiBDYXBzIExvY2sgKi8KKysgICAgICAgIElCVVNfTU9EMl9NQVNLIHwgIC8qIE51bSBMb2Nr ICovCisrICAgICAgICBJQlVTX0JVVFRPTjFfTUFTSyB8CisrICAgICAgICBJQlVTX0JVVFRPTjJf TUFTSyB8CisrICAgICAgICBJQlVTX0JVVFRPTjNfTUFTSyB8CisrICAgICAgICBJQlVTX0JVVFRP TjRfTUFTSyB8CisrICAgICAgICBJQlVTX0JVVFRPTjVfTUFTSyB8CisrICAgICAgICBJQlVTX1NV UEVSX01BU0sgfAorKyAgICAgICAgSUJVU19IWVBFUl9NQVNLIHwKKysgICAgICAgIElCVVNfTUVU QV9NQVNLKTsKKysKKyBzdGF0aWMgdm9pZAorIGlidXNfZW5naW5lX2NsYXNzX2luaXQgKElCdXNF bmdpbmVDbGFzcyAqY2xhc3MpCisgeworQEAgLTgwMiw5ICs4MzcsMTUgQEAgaWJ1c19lbmdpbmVf Y2xhc3NfaW5pdCAoSUJ1c0VuZ2luZUNsYXNzICpjbGFzcykKKyBzdGF0aWMgdm9pZAorIGlidXNf ZW5naW5lX2luaXQgKElCdXNFbmdpbmUgKmVuZ2luZSkKKyB7CistICAgIGVuZ2luZS0+cHJpdiA9 IElCVVNfRU5HSU5FX0dFVF9QUklWQVRFIChlbmdpbmUpOworLQorLSAgICBlbmdpbmUtPnByaXYt PnN1cnJvdW5kaW5nX3RleHQgPSBnX29iamVjdF9yZWZfc2luayAodGV4dF9lbXB0eSk7CisrICAg IElCdXNFbmdpbmVQcml2YXRlICpwcml2OworKyAgICBlbmdpbmUtPnByaXYgPSBwcml2ID0gSUJV U19FTkdJTkVfR0VUX1BSSVZBVEUgKGVuZ2luZSk7CisrCisrICAgIHByaXYtPnN1cnJvdW5kaW5n X3RleHQgPSBnX29iamVjdF9yZWZfc2luayAodGV4dF9lbXB0eSk7CisrICAgIHByaXYtPnNldHRp bmdzX2Vtb2ppID0KKysgICAgICAgICAgICBnX3NldHRpbmdzX25ldyAoIm9yZy5mcmVlZGVza3Rv cC5pYnVzLnBhbmVsLmVtb2ppIik7CisrICAgIHNldHRpbmdzX2Vtb2ppX2hvdGtleV9jaGFuZ2Vk X2NiIChwcml2LT5zZXR0aW5nc19lbW9qaSwgImhvdGtleSIsIGVuZ2luZSk7CisrICAgIGdfc2ln bmFsX2Nvbm5lY3QgKHByaXYtPnNldHRpbmdzX2Vtb2ppLCAiY2hhbmdlZDo6aG90a2V5IiwKKysg ICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoc2V0dGluZ3NfZW1vamlfaG90a2V5X2No YW5nZWRfY2IpLCBlbmdpbmUpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAgLTgxNyw2ICs4NTgs NyBAQCBpYnVzX2VuZ2luZV9kZXN0cm95IChJQnVzRW5naW5lICplbmdpbmUpCisgICAgICAgICBn X29iamVjdF91bnJlZiAoZW5naW5lLT5wcml2LT5zdXJyb3VuZGluZ190ZXh0KTsKKyAgICAgICAg IGVuZ2luZS0+cHJpdi0+c3Vycm91bmRpbmdfdGV4dCA9IE5VTEw7CisgICAgIH0KKysgICAgaWJ1 c19lbmdpbmVfa2V5YmluZGluZ19mcmVlIChlbmdpbmUpOworIAorICAgICBJQlVTX09CSkVDVF9D TEFTUyhpYnVzX2VuZ2luZV9wYXJlbnRfY2xhc3MpLT5kZXN0cm95IChJQlVTX09CSkVDVCAoZW5n aW5lKSk7CisgfQorQEAgLTg1Miw2ICs4OTQsNTMgQEAgaWJ1c19lbmdpbmVfZ2V0X3Byb3BlcnR5 IChJQnVzRW5naW5lICplbmdpbmUsCisgICAgIH0KKyB9CisgCisrc3RhdGljIHZvaWQKKytpYnVz X2VuZ2luZV9wYW5lbF9leHRlbnNpb24gKElCdXNFbmdpbmUgKmVuZ2luZSkKKyt7CisrICAgIElC dXNYRXZlbnQgKnhldmVudCA9IGlidXNfeF9ldmVudF9uZXcgKAorKyAgICAgICAgICAgICJldmVu dC10eXBlIiwgSUJVU19YX0VWRU5UX0tFWV9QUkVTUywKKysgICAgICAgICAgICAicHVycG9zZSIs ICJlbW9qaSIsCisrICAgICAgICAgICAgTlVMTCk7CisrICAgIEdWYXJpYW50ICpkYXRhID0gaWJ1 c19zZXJpYWxpemFibGVfc2VyaWFsaXplX29iamVjdCAoCisrICAgICAgICAgICAgSUJVU19TRVJJ QUxJWkFCTEUgKHhldmVudCkpOworKworKyAgICBnX2Fzc2VydCAoZGF0YSAhPSBOVUxMKTsKKysg ICAgaWJ1c19lbmdpbmVfZW1pdF9zaWduYWwgKGVuZ2luZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJQYW5lbEV4dGVuc2lvbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgZGF0YSkpOworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4K KytpYnVzX2VuZ2luZV9maWx0ZXJfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAga2V5dmFsLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgIGtleWNvZGUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgc3RhdGUpCisreworKyAgICBJQnVzRW5naW5l UHJpdmF0ZSAqcHJpdjsKKysgICAgaW50IGk7CisrICAgIGd1aW50IG1vZGlmaWVyczsKKysKKysg ICAgaWYgKChzdGF0ZSAmIElCVVNfUkVMRUFTRV9NQVNLKSAhPSAwKQorKyAgICAgICAgcmV0dXJu IEZBTFNFOworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19FTkdJTkUgKGVuZ2lu ZSksIEZBTFNFKTsKKysKKysgICAgcHJpdiA9IGVuZ2luZS0+cHJpdjsKKysgICAgbW9kaWZpZXJz ID0gc3RhdGUgJiBJQlVTX01PRElGSUVSX0ZJTFRFUjsKKysgICAgaWYgKGtleXZhbCA+PSBJQlVT X0tFWV9BICYmIGtleXZhbCA8PSBJQlVTX0tFWV9aICYmCisrICAgICAgICAobW9kaWZpZXJzICYg SUJVU19TSElGVF9NQVNLKSAhPSAwKSB7CisrICAgICAgICBrZXl2YWwgPSBrZXl2YWwgLSBJQlVT X0tFWV9BICsgSUJVU19LRVlfYTsKKysgICAgfQorKyAgICBmb3IgKGkgPSAwOyBwcml2LT5lbW9q aV9rZXliaW5kaW5nc1tpXTsgaSsrKSB7CisrICAgICAgICBJQnVzRW5naW5lS2V5YmluZGluZyAq YmluZGluZyA9IHByaXYtPmVtb2ppX2tleWJpbmRpbmdzW2ldOworKyAgICAgICAgaWYgKGJpbmRp bmctPmtleXZhbCA9PSBrZXl2YWwgJiYKKysgICAgICAgICAgICBiaW5kaW5nLT5tb2RpZmllcnMg PT0gbW9kaWZpZXJzKSB7CisrICAgICAgICAgICAgaWJ1c19lbmdpbmVfcGFuZWxfZXh0ZW5zaW9u IChlbmdpbmUpOworKyAgICAgICAgICAgIHJldHVybiBUUlVFOworKyAgICAgICAgfQorKyAgICB9 CisrICAgIHJldHVybiBGQUxTRTsKKyt9CisrCisgc3RhdGljIGdib29sZWFuCisgaWJ1c19lbmdp bmVfc2VydmljZV9hdXRob3JpemVkX21ldGhvZCAoSUJ1c1NlcnZpY2UgICAgICpzZXJ2aWNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAq Y29ubmVjdGlvbikKK0BAIC04OTIsNiArOTgxLDcgQEAgaWJ1c19lbmdpbmVfc2VydmljZV9tZXRo b2RfY2FsbCAoSUJ1c1NlcnZpY2UgICAgICAgICAgICpzZXJ2aWNlLAorICAgICBpZiAoZ19zdHJj bXAwIChtZXRob2RfbmFtZSwgIlByb2Nlc3NLZXlFdmVudCIpID09IDApIHsKKyAgICAgICAgIGd1 aW50IGtleXZhbCwga2V5Y29kZSwgc3RhdGU7CisgICAgICAgICBnYm9vbGVhbiByZXR2YWwgPSBG QUxTRTsKKysKKyAgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIodXV1KSIsICZr ZXl2YWwsICZrZXljb2RlLCAmc3RhdGUpOworICAgICAgICAgZ19zaWduYWxfZW1pdCAoZW5naW5l LAorICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lX3NpZ25hbHNbUFJPQ0VTU19LRVlfRVZF TlRdLAorQEAgLTkwMCw2ICs5OTAsMTIgQEAgaWJ1c19lbmdpbmVfc2VydmljZV9tZXRob2RfY2Fs bCAoSUJ1c1NlcnZpY2UgICAgICAgICAgICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAg ICAga2V5Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAorICAgICAgICAgICAg ICAgICAgICAgICAgJnJldHZhbCk7CisrICAgICAgICBpZiAoIXJldHZhbCkgeworKyAgICAgICAg ICAgIHJldHZhbCA9IGlidXNfZW5naW5lX2ZpbHRlcl9rZXlfZXZlbnQgKGVuZ2luZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl2YWwsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Y29k ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dGF0ZSk7CisrICAgICAgICB9CisgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0 dXJuX3ZhbHVlIChpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3ICgiKGIpIiwgcmV0dmFsKSk7Cisg ICAgICAgICByZXR1cm47CisgICAgIH0KK0BAIC0xMzM4LDYgKzE0MzQsNzkgQEAgaWJ1c19lbmdp bmVfZGJ1c19wcm9wZXJ0eV9jaGFuZ2VkIChJQnVzRW5naW5lICAqZW5naW5lLAorICAgICBnX29i amVjdF91bnJlZiAobWVzc2FnZSk7CisgfQorIAorK3N0YXRpYyB2b2lkCisraWJ1c19lbmdpbmVf a2V5YmluZGluZ19mcmVlIChJQnVzRW5naW5lICplbmdpbmUpCisreworKyAgICBJQnVzRW5naW5l UHJpdmF0ZSAqcHJpdjsKKysgICAgaW50IGk7CisrCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElC VVNfSVNfRU5HSU5FIChlbmdpbmUpKTsKKysKKysgICAgcHJpdiA9IGVuZ2luZS0+cHJpdjsKKysg ICAgaWYgKHByaXYtPmVtb2ppX2tleWJpbmRpbmdzKSB7CisrICAgICAgICBmb3IgKGkgPSAwOyBw cml2LT5lbW9qaV9rZXliaW5kaW5nc1tpXTsgaSsrKQorKyAgICAgICAgICAgIGdfc2xpY2VfZnJl ZSAoSUJ1c0VuZ2luZUtleWJpbmRpbmcsIHByaXYtPmVtb2ppX2tleWJpbmRpbmdzW2ldKTsKKysg ICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPmVtb2ppX2tleWJpbmRpbmdzLCBnX2ZyZWUp OworKyAgICB9CisrfQorKworK3N0YXRpYyBJQnVzRW5naW5lS2V5YmluZGluZyAqCisraWJ1c19l bmdpbmVfa2V5YmluZGluZ19uZXcgKElCdXNFbmdpbmUgICplbmdpbmUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICphY2NlbGVyYXRvcikKKyt7CisrICAgIGd1aW50 IGtleXZhbCA9IDBVOworKyAgICBJQnVzTW9kaWZpZXJUeXBlIG1vZGlmaWVycyA9IDA7CisrICAg IElCdXNFbmdpbmVLZXliaW5kaW5nICpiaW5kaW5nID0gTlVMTDsKKysKKysgICAgaWJ1c19hY2Nl bGVyYXRvcl9wYXJzZSAoYWNjZWxlcmF0b3IsICZrZXl2YWwsICZtb2RpZmllcnMpOworKyAgICBp ZiAoa2V5dmFsID09IDBVICYmIG1vZGlmaWVycyA9PSAwKSB7CisrICAgICAgICBnX3dhcm5pbmcg KCJGYWlsZWQgdG8gcGFyc2Ugc2hvcnRjdXQga2V5ICclcyciLCBhY2NlbGVyYXRvcik7CisrICAg ICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKyAgICBpZiAobW9kaWZpZXJzICYgSUJVU19TVVBF Ul9NQVNLKSB7CisrICAgICAgICBtb2RpZmllcnNePUlCVVNfU1VQRVJfTUFTSzsKKysgICAgICAg IG1vZGlmaWVyc3w9SUJVU19NT0Q0X01BU0s7CisrICAgIH0KKysKKysgICAgYmluZGluZyA9IGdf c2xpY2VfbmV3MCAoSUJ1c0VuZ2luZUtleWJpbmRpbmcpOworKyAgICBiaW5kaW5nLT5rZXl2YWwg PSBrZXl2YWw7CisrICAgIGJpbmRpbmctPm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKysgICAgcmV0 dXJuIGJpbmRpbmc7CisrfQorKworK3N0YXRpYyB2b2lkCisrc2V0dGluZ3NfZW1vamlfaG90a2V5 X2NoYW5nZWRfY2IgKEdTZXR0aW5ncyAgICpzZXR0aW5ncywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKmtleSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3BvaW50ZXIgICAgIGRhdGEpCisreworKyAgICBJQnVzRW5naW5lICplbmdp bmU7CisrICAgIElCdXNFbmdpbmVQcml2YXRlICpwcml2OworKyAgICBnY2hhciAqKmFjY2VsZXJh dG9yczsKKysgICAgaW50IGksIGosIGxlbmd0aDsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJV U19JU19FTkdJTkUgKGRhdGEpKTsKKysgICAgZW5naW5lID0gSUJVU19FTkdJTkUgKGRhdGEpOwor KyAgICBwcml2ID0gZW5naW5lLT5wcml2OworKworKyAgICBpZiAoZ19zdHJjbXAwIChrZXksICJo b3RrZXkiKSAhPSAwKQorKyAgICAgICAgcmV0dXJuOworKyAgICBhY2NlbGVyYXRvcnMgPSBnX3Nl dHRpbmdzX2dldF9zdHJ2IChzZXR0aW5ncywga2V5KTsKKysgICAgbGVuZ3RoID0gZ19zdHJ2X2xl bmd0aCAoYWNjZWxlcmF0b3JzKTsKKysgICAgaWJ1c19lbmdpbmVfa2V5YmluZGluZ19mcmVlIChl bmdpbmUpOworKyAgICBpZiAobGVuZ3RoID09IDApIHsKKysgICAgICAgIGdfc3RyZnJlZXYgKGFj Y2VsZXJhdG9ycyk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgcHJpdi0+ZW1vamlf a2V5YmluZGluZ3MgPSBnX25ldzAgKElCdXNFbmdpbmVLZXliaW5kaW5nKiwgbGVuZ3RoICsgMSk7 CisrICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKysgICAgICAgIElC dXNFbmdpbmVLZXliaW5kaW5nICpiaW5kaW5nID0KKysgICAgICAgICAgICAgICAgaWJ1c19lbmdp bmVfa2V5YmluZGluZ19uZXcgKGVuZ2luZSwgYWNjZWxlcmF0b3JzW2ldKTsKKysgICAgICAgIGlm ICghYmluZGluZykKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIHByaXYtPmVtb2pp X2tleWJpbmRpbmdzW2orK10gPSBiaW5kaW5nOworKyAgICB9CisrICAgIGdfc3RyZnJlZXYgKGFj Y2VsZXJhdG9ycyk7CisrfQorKworIElCdXNFbmdpbmUgKgorIGlidXNfZW5naW5lX25ldyAoY29u c3QgZ2NoYXIgICAgICplbmdpbmVfbmFtZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy ICAgICAqb2JqZWN0X3BhdGgsCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEgYi91 aS9ndGszL2Vtb2ppZXIudmFsYQoraW5kZXggYzg1ZGZhODYuLjgyMTdhMDAwIDEwMDY0NAorLS0t IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKKysrKyBiL3VpL2d0azMvZW1vamllci52YWxhCitAQCAt MjA2Miw2ICsyMDYyLDcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0 aW9uV2luZG93IHsKKyAgICAgICAgIC8vIERvIG5vdCBoaWRlIGEgYm90dG9tIHBhbmVsIGluIFhG Q0U0CisgICAgICAgICBpZiAod29ya19hcmVhLnkgPCB5KQorICAgICAgICAgICAgIHkgPSB3b3Jr X2FyZWEueTsKKysgICAgICAgIC8vIEZJWE1FOiBtb3ZlKCkgZG9lcyBub3Qgd29yayBpbiBXYXls YW5kCisgICAgICAgICBtb3ZlKHgsIHkpOworIAorICAgICAgICAgdWludDMyIHRpbWVzdGFtcCA9 IGV2ZW50LmdldF90aW1lKCk7CitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9leHRlbnNpb24udmFsYSBi L3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEKK2luZGV4IGExNzAyODBiLi4wMzAyNmQwMCAxMDA2NDQK Ky0tLSBhL3VpL2d0azMvZXh0ZW5zaW9uLnZhbGEKKysrKyBiL3VpL2d0azMvZXh0ZW5zaW9uLnZh bGEKK0BAIC0xMTUsOCArMTE1LDkgQEAgY2xhc3MgRXh0ZW5zaW9uR3RrIHsKKyAgICAgICAgIC8v IGFuZCBDdHJsLVNoaWZ0LWUgd2hlbiBpYnVzLXVpLWd0azMgcnVucyBhZnRlciB0aGUKKyAgICAg ICAgIC8vIGRlc2t0b3AgaXMgbGF1bmNoZWQuCisgICAgICAgICBHTGliLkVudmlyb25tZW50LnVu c2V0X3ZhcmlhYmxlKCJHREtfQ09SRV9ERVZJQ0VfRVZFTlRTIik7CistICAgICAgICAvLyBmb3Ig R2RrLlgxMS5nZXRfZGVmYXVsdF94ZGlzcGxheSgpCistICAgICAgICBHZGsuc2V0X2FsbG93ZWRf YmFja2VuZHMoIngxMSIpOworKyAgICAgICAgLy8gR2RrLnNldF9hbGxvd2VkX2JhY2tlbmRzKCJ4 MTEiKSBsZXQgcHJlc2VudF93aXRoX3RpbWUoKSBmYWlsZWQgb24KKysgICAgICAgIC8vIGxhdW5j aGluZyB0aGUgZGlhbG9nIHNlY29uZGx5IGluIFdheWxhbmQuCisrICAgICAgICAvL0dkay5zZXRf YWxsb3dlZF9iYWNrZW5kcygieDExIik7CisgCisgICAgICAgICBFeHRlbnNpb25HdGsgZXh0ZW5z aW9uID0gbmV3IEV4dGVuc2lvbkd0ayhhcmd2KTsKKyAgICAgICAgIGV4dGVuc2lvbi5ydW4oKTsK K2RpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsYmluZGluZy52YWxhIGIvdWkvZ3RrMy9wYW5lbGJp bmRpbmcudmFsYQoraW5kZXggMWZiZjZjZmMuLmUzZjM5ZTEyIDEwMDY0NAorLS0tIGEvdWkvZ3Rr My9wYW5lbGJpbmRpbmcudmFsYQorKysrIGIvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQorQEAg LTMzLDggKzMzLDYgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2Ugewor ICAgICBwcml2YXRlIHN0cmluZ1tdIG1fZW1vamllcl9mYXZvcml0ZXMgPSB7fTsKKyAgICAgcHJp dmF0ZSBHdGsuQ3NzUHJvdmlkZXIgbV9jc3NfcHJvdmlkZXI7CisgICAgIHByaXZhdGUgY29uc3Qg dWludCBQUkVMT0FEX0VOR0lORVNfREVMQVlfVElNRSA9IDMwMDAwOworLSAgICBwcml2YXRlIEdM aWIuTGlzdDxCaW5kaW5nQ29tbW9uLktleWJpbmRpbmc+IG1fa2V5YmluZGluZ3MgPQorLSAgICAg ICAgICAgIG5ldyBHTGliLkxpc3Q8QmluZGluZ0NvbW1vbi5LZXliaW5kaW5nPigpOworICAgICBw cml2YXRlIGJvb2wgbV9sb2FkX2Vtb2ppX2F0X3N0YXJ0dXA7CisgICAgIHByaXZhdGUgYm9vbCBt X2xvYWRlZF9lbW9qaSA9IGZhbHNlOworICAgICBwcml2YXRlIGJvb2wgbV9sb2FkX3VuaWNvZGVf YXRfc3RhcnR1cDsKK0BAIC00OSwxNSArNDcsNiBAQCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVz LlBhbmVsU2VydmljZSB7CisgICAgICAgICBtX2J1cyA9IGJ1czsKKyAKKyAgICAgICAgIGluaXRf c2V0dGluZ3MoKTsKKy0KKy0gICAgICAgIGJpbmRfZW1vamlfc2hvcnRjdXQoKTsKKy0gICAgfQor LQorLQorLSAgICB+UGFuZWxCaW5kaW5nKCkgeworLSAgICAgICAgQmluZGluZ0NvbW1vbi51bmJp bmRfc3dpdGNoX3Nob3J0Y3V0KAorLSAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLktleUV2 ZW50RnVuY1R5cGUuQU5ZLAorLSAgICAgICAgICAgICAgICBtX2tleWJpbmRpbmdzKTsKKyAgICAg fQorIAorIAorQEAgLTc3LDEzICs2Niw2IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVmIG1fY3NzX3Byb3ZpZGVyKTsKKyAgICAgICAgIH0pOworIAorLSAgICAgICAgbV9zZXR0 aW5nc19lbW9qaS5jaGFuZ2VkWyJob3RrZXkiXS5jb25uZWN0KChrZXkpID0+IHsKKy0gICAgICAg ICAgICAgICAgQmluZGluZ0NvbW1vbi51bmJpbmRfc3dpdGNoX3Nob3J0Y3V0KAorLSAgICAgICAg ICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24uS2V5RXZlbnRGdW5jVHlwZS5FTU9KSV9UWVBJ TkcsCistICAgICAgICAgICAgICAgICAgICAgICAgbV9rZXliaW5kaW5ncyk7CistICAgICAgICAg ICAgICAgIGJpbmRfZW1vamlfc2hvcnRjdXQoKTsKKy0gICAgICAgIH0pOworLQorICAgICAgICAg bV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJmb250Il0uY29ubmVjdCgoa2V5KSA9PiB7CisgICAg ICAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9mb250KG1fc2V0dGluZ3NfcGFu ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2V0 dGluZ3NfZW1vamksCitAQCAtMTI0LDI1ICsxMDYsNiBAQCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJ QnVzLlBhbmVsU2VydmljZSB7CisgICAgIH0KKyAKKyAKKy0gICAgcHJpdmF0ZSB2b2lkIGJpbmRf ZW1vamlfc2hvcnRjdXQoKSB7CistI2lmIEVNT0pJX0RJQ1QKKy0gICAgICAgIHN0cmluZ1tdIGFj Y2VsZXJhdG9ycyA9IG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0cnYoImhvdGtleSIpOworLQorLSAg ICAgICAgdmFyIGtleWJpbmRpbmdfbWFuYWdlciA9IEtleWJpbmRpbmdNYW5hZ2VyLmdldF9pbnN0 YW5jZSgpOworLQorLSAgICAgICAgZm9yZWFjaCAodmFyIGFjY2VsZXJhdG9yIGluIGFjY2VsZXJh dG9ycykgeworLSAgICAgICAgICAgIEJpbmRpbmdDb21tb24ua2V5YmluZGluZ19tYW5hZ2VyX2Jp bmQoCistICAgICAgICAgICAgICAgICAgICBrZXliaW5kaW5nX21hbmFnZXIsCistICAgICAgICAg ICAgICAgICAgICByZWYgbV9rZXliaW5kaW5ncywKKy0gICAgICAgICAgICAgICAgICAgIGFjY2Vs ZXJhdG9yLAorLSAgICAgICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5LZXlFdmVudEZ1bmNU eXBlLkVNT0pJX1RZUElORywKKy0gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9lbW9qaV90eXBp bmcsCistICAgICAgICAgICAgICAgICAgICBudWxsKTsKKy0gICAgICAgIH0KKy0jZW5kaWYKKy0g ICAgfQorLQorLQorICAgICBwcml2YXRlIHZvaWQgc2V0X2Vtb2ppX2Zhdm9yaXRlcygpIHsKKyAg ICAgICAgIG1fZW1vamllcl9mYXZvcml0ZXMgPSBtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJ2KCJm YXZvcml0ZXMiKTsKKyAgICAgICAgIElCdXNFbW9qaWVyLnNldF9mYXZvcml0ZXMoCitAQCAtMTk1 LDkgKzE1OCw2IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAK KyAgICAgICAgIHNldF9sb2FkX2Vtb2ppX2F0X3N0YXJ0dXAoKTsKKyAgICAgICAgIHNldF9sb2Fk X3VuaWNvZGVfYXRfc3RhcnR1cCgpOworLSAgICAgICAgQmluZGluZ0NvbW1vbi51bmJpbmRfc3dp dGNoX3Nob3J0Y3V0KEJpbmRpbmdDb21tb24uS2V5RXZlbnRGdW5jVHlwZS5BTlksCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9rZXliaW5kaW5ncyk7Cist ICAgICAgICBiaW5kX2Vtb2ppX3Nob3J0Y3V0KCk7CisgICAgICAgICBCaW5kaW5nQ29tbW9uLnNl dF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlZiBtX2Nzc19wcm92aWRlcik7CitAQCAtMzU0LDE5ICszMTQsMjYg QEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICAgICAgICAg IHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgICAgIEdkay5FdmVudCBldmVudCA9IG5ldyBHZGsu RXZlbnQoZXZlbnRfdHlwZSk7CistICAgICAgICBldmVudC5rZXkudGltZSA9IHhldmVudC5nZXRf dGltZSgpOworLSAgICAgICAgR2RrLkRpc3BsYXk/IGRpc3BsYXkgPSBHZGsuRGlzcGxheS5nZXRf ZGVmYXVsdCgpOworKyAgICAgICAgdWludDMyIHRpbWUgPSB4ZXZlbnQuZ2V0X3RpbWUoKTsKKysg ICAgICAgIGlmICh0aW1lID09IDApCisrICAgICAgICAgICAgdGltZSA9IEd0ay5nZXRfY3VycmVu dF9ldmVudF90aW1lKCk7CisrICAgICAgICBldmVudC5rZXkudGltZSA9IHRpbWU7CisgICAgICAg ICBYLldpbmRvdyB4aWQgPSB4ZXZlbnQuZ2V0X3dpbmRvdygpOworLSAgICAgICAgR2RrLlgxMS5X aW5kb3cgd2luZG93OworLSAgICAgICAgd2luZG93ID0gR2RrLlgxMS5XaW5kb3cubG9va3VwX2Zv cl9kaXNwbGF5KAorLSAgICAgICAgICAgICAgICBkaXNwbGF5IGFzIEdkay5YMTEuRGlzcGxheSwg eGlkKTsKKy0gICAgICAgIGlmICh3aW5kb3cgIT0gbnVsbCkgeworLSAgICAgICAgICAgIGV2ZW50 LmtleS53aW5kb3cgPSB3aW5kb3c7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgR2RrLkRp c3BsYXk/IGRpc3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOworKyAgICAgICAgR2Rr LldpbmRvdz8gd2luZG93ID0gbnVsbDsKKysgICAgICAgIGlmICh3aW5kb3cgPT0gbnVsbCAmJiB4 aWQgIT0gMCkgeworKyAgICAgICAgICAgIHdpbmRvdyA9IEdkay5YMTEuV2luZG93Lmxvb2t1cF9m b3JfZGlzcGxheSgKKysgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgYXMgR2RrLlgxMS5EaXNw bGF5LCB4aWQpOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKHdpbmRvdyA9PSBudWxsICYmIHhp ZCAhPSAwKSB7CisgICAgICAgICAgICAgd2luZG93ID0gbmV3IEdkay5YMTEuV2luZG93LmZvcmVp Z25fZm9yX2Rpc3BsYXkoCisgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IGFzIEdkay5YMTEu RGlzcGxheSwgeGlkKTsKKy0gICAgICAgICAgICBldmVudC5rZXkud2luZG93ID0gd2luZG93Owor ICAgICAgICAgfQorKyAgICAgICAgaWYgKHdpbmRvdyA9PSBudWxsKSB7CisrICAgICAgICAgICAg d2luZG93ID0gR2RrLmdldF9kZWZhdWx0X3Jvb3Rfd2luZG93KCk7CisrICAgICAgICAgICAgd2lu ZG93LnJlZigpOworKyAgICAgICAgfQorKyAgICAgICAgZXZlbnQua2V5LndpbmRvdyA9IHdpbmRv dzsKKyAgICAgICAgIGhhbmRsZV9lbW9qaV90eXBpbmcoZXZlbnQpOworICAgICB9CisgfQorLS0g CisyLjE0LjMKKwoKZGlmZiAtLWdpdCBhL2lidXMuc3BlYyBiL2lidXMuc3BlYwppbmRleCA0NTVh OTVkLi5kMjhkNDZkIDEwMDY0NAotLS0gYS9pYnVzLnNwZWMKKysrIGIvaWJ1cy5zcGVjCkBAIC0z MCw3ICszMCw3IEBACiAKIE5hbWU6ICAgICAgICAgICBpYnVzCiBWZXJzaW9uOiAgICAgICAgMS41 LjE3Ci1SZWxlYXNlOiAgICAgICAgOSV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgMTAlez9kaXN0 fQogU3VtbWFyeTogICAgICAgIEludGVsbGlnZW50IElucHV0IEJ1cyBmb3IgTGludXggT1MKIExp Y2Vuc2U6ICAgICAgICBMR1BMdjIrCiBHcm91cDogICAgICAgICAgU3lzdGVtIEVudmlyb25tZW50 L0xpYnJhcmllcwpAQCAtNDI0LDYgKzQyNCwxMCBAQCBkY29uZiB1cGRhdGUgfHwgOgogJXtfZGF0 YWRpcn0vZ3RrLWRvYy9odG1sLyoKIAogJWNoYW5nZWxvZworKiBUdWUgRmViIDI3IDIwMTggVGFr YW8gRnVqaXdhcmEgPHRmdWppd2FyQHJlZGhhdC5jb20+IC0gMS41LjE3LTEwCistIERpc2FibGVk IHBhbmVsIGV4dGVuc2lvbiBmb3IgZ2RtIHVzZXIKKy0gRW5hYmxlZCBwYW5lbCBleHRlbnNpb24g aW4gV2F5bGFuZAorCiAqIFdlZCBGZWIgMjEgMjAxOCBUYWthbyBGdWppd2FyYSA8dGZ1aml3YXJA cmVkaGF0LmNvbT4gLSAxLjUuMTctOQogLSBBZGRlZCBwYW5lbCBleHRlbnNpb24gZm9yIGVtb2pp IGtleWJpbmRpbmcgbm90IHRvIGRlcGVuIG9uIGRlc2t0b3BzCiAtIFNob3dlZCBVbmljb2RlIGNv ZGUgcG9pbnRzIG9uIFVuaWNvZGUgbmFtZSBsaXN0Cg==