nano: make configuring key bindings easier for users
Steef Boerrigter <[email protected]> Tue, 5 May 2026 13:37:26 -0400
| Newsgroups | gmane.editors.nano.devel |
|---|---|
| Message-ID | <CAFe6kZtKrWHGuSqpm=AOMKRgPqOBaE8weX4VFm50Ko_0OhKOvw@mail.gmail.com> |
--000000000000dffadf0651158032 Content-Type: multipart/alternative; boundary="000000000000dffadd0651158030" --000000000000dffadd0651158030 Content-Type: text/plain; charset="UTF-8" Hi, I spent a significant amount of time figuring out how to configure nano key bindings to fit them to my needs. I found a lot of bindings and command names that are basically hidden in the source code and I don't think that is a good idea. What I did is to take out all the hard-coded key bindings and put all commands in well-organized nanorc file. That way, a user has much more overview of the available commands and better control of which key they do and don't want to have configured. The sample.nanorc file (and some command line option) support more modern key strokes. I created two different nanorc examples, that, hopefully, best reflect the exact configuration one would have obtained if using the configuration options at the bottom of that file. I hope you like what I did. Best regards, Met vriendelijke groet, Steef Boerrigter --000000000000dffadd0651158030 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>Hi,</div><div><br></div><div>I spent a significant am= ount of time figuring out how to configure nano key bindings to fit them to= my needs.</div><div>I found a lot of bindings and command names that are b= asically hidden in the source code and I don't think that is a good ide= a.</div><div>What I did is to take out all the hard-coded key bindings and = put all commands in well-organized nanorc file. That way, a user has much = more overview of the available commands and better control of which key the= y do and don't want to have configured.</div><div><br></div><div>The sa= mple.nanorc file (and some command line option) support more modern key str= okes. I created two different nanorc examples, that, hopefully, best reflec= t the exact configuration one would have obtained if using the configuratio= n options at the bottom of that file.</div><div><br></div><div>I hope you l= ike what I did.</div><div><br></div><div>Best regards,</div><div>Met vriend= elijke groet,</div><div>Steef Boerrigter</div><div><br></div></div> --000000000000dffadd0651158030-- --000000000000dffadf0651158032 Content-Type: text/x-patch; charset="UTF-8"; name="0001-Make-configuring-key-bindings-easier.patch" Content-Disposition: attachment; filename="0001-Make-configuring-key-bindings-easier.patch" Content-Transfer-Encoding: base64 Content-ID: <f_moswv3m30> X-Attachment-Id: f_moswv3m30 RnJvbSA3MGI2ZjA3ZDI2MzZiNmEyMTM1NDQ1NTVlMmEzMmIwOThhMGY1ZmMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiU3RlZWYgQm9lcmlndGVyIiA8c3htYm9lckBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgNSBNYXkgMjAyNiAxMjo1NDowNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIE1h a2UgY29uZmlndXJpbmcga2V5IGJpbmRpbmdzIGVhc2llci4gTW92ZWQgcHJlLXByb2dyYW1tZWQK IGtleSBiaW5kaW5ncyBpbiB0aGUgYmluYXJpZXMgdG8gbmFub3JjIGNvbmZpZ3VyYXRpb24gZmls ZS4gQWRkZWQga2V5IG5hbWVzIHRvCiBnbG9iYWwuYyAoXkxlZnQsIFBnVXAsIGV0Yykgc28gdGhh dCB0aGVzZSBrZXkgYmluZGluZ3MgY2FuIGJlIGNvbmZpZ3VyZWQKIGluc3RlYWQgb2YganVzdCBo YXJkLWNvZGVkLiBUaGUgY29tcGxldGUgc2V0IG9mIGFjdGlvbnMgYXJlIG5vdyBsaXN0ZWQgaW4K IG5hbm9yYywgc28gdXNlcnMgZG9uJ3QgbmVlZCB0byBnbyB0aHJvdWdodCBoZSBzb3VyY2UgY29k ZSB0byBmaW5kIHRoZSBuYW1lIG9mCiBhY3Rpb25zLiBTcGxpdCB0cmFkaXRpb25hbCBhbmQgbW9k ZXJuIGtleSBjb25maWd1cmF0aW9ucyBpbnRvIHR3byBkaWZmZXJlbnQKIHNldHRpbmdzIGZpbGVz LiBDb21wbGV0ZSBrZXkgYmluZGluZ3MgYXJlIG5vdyByZXF1aXJlZCBhbmQgbmFubyBjaGVja3Mg aWYgbmV3CiB0eXBlIG9mIG5hbm9yYyBmaWxlIGlzIGF2YWlsYWJsZS4KClNpZ25lZC1vZmYtYnk6 IFN0ZWVmIEJvZXJyaWd0ZXIgPHN4bWJvZXJAZ21haWwuY29tPgotLS0KIGNvbmZpZ3VyZS5hYyAg ICAgICAgICAgfCAgIDMgKy0KIGRvYy9NYWtlZmlsZS5hbSAgICAgICAgfCAgIDIgKwogZG9jL21v ZGVybi5uYW5vcmMuaW4gICB8IDc3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogZG9jL29yaWdpbmFsLm5hbm9yYy5pbiB8IDc2NSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBkb2Mvc2FtcGxlLm5hbm9yYy5pbiAgIHwgMzUzIC0tLS0t LS0tLS0tLS0tLS0tLS0KIHNyYy9nbG9iYWwuYyAgICAgICAgICAgfCA0MTcgKysrKy0tLS0tLS0t LS0tLS0tLS0tLQogc3JjL25hbm8uYyAgICAgICAgICAgICB8ICAxNiArCiA3IGZpbGVzIGNoYW5n ZWQsIDE2MzAgaW5zZXJ0aW9ucygrKSwgNjk5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRvYy9tb2Rlcm4ubmFub3JjLmluCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL29yaWdpbmFs Lm5hbm9yYy5pbgogZGVsZXRlIG1vZGUgMTAwNjQ0IGRvYy9zYW1wbGUubmFub3JjLmluCgpkaWZm IC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGE3NmFjZmE3Li44ZTc3 MWI5YSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNTg3 LDcgKzU4Nyw4IEBAIEFNX0NPTkRJVElPTkFMKEdST0ZGX0hUTUwsIHRlc3QgeCRncm9mZl9odG1s X3N1cHBvcnQgPSB4eWVzKQogQUNfQ09ORklHX0ZJTEVTKFsKIE1ha2VmaWxlCiBkb2MvTWFrZWZp bGUKLWRvYy9zYW1wbGUubmFub3JjCitkb2Mvb3JpZ2luYWwubmFub3JjCitkb2MvbW9kZXJuLm5h bm9yYwogbGliL01ha2VmaWxlCiBtNC9NYWtlZmlsZQogcG8vTWFrZWZpbGUuaW4KZGlmZiAtLWdp dCBhL2RvYy9NYWtlZmlsZS5hbSBiL2RvYy9NYWtlZmlsZS5hbQppbmRleCAwOGNjY2FjOS4uMDBi OWQxZGMgMTAwNjQ0Ci0tLSBhL2RvYy9NYWtlZmlsZS5hbQorKysgYi9kb2MvTWFrZWZpbGUuYW0K QEAgLTksNiArOSw4IEBAIGh0bWxfcGFnZXMgPSBuYW5vLjEuaHRtbCBybmFuby4xLmh0bWwKIGlm IFVTRV9OQU5PUkMKIGRpc3RfbWFuX01BTlMgKz0gbmFub3JjLjUKIGh0bWxfcGFnZXMgKz0gbmFu b3JjLjUuaHRtbAorcGtnZGF0YV9EQVRBID0gb3JpZ2luYWwubmFub3JjIG1vZGVybi5uYW5vcmMK K0VYVFJBX0RJU1QgKz0gb3JpZ2luYWwubmFub3JjLmluIG1vZGVybi5uYW5vcmMuaW4KIGVuZGlm CiAKIG5hbm8uMS5odG1sOiBuYW5vLjEKZGlmZiAtLWdpdCBhL2RvYy9tb2Rlcm4ubmFub3JjLmlu IGIvZG9jL21vZGVybi5uYW5vcmMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAuLmJhZWNiYzcyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21vZGVybi5uYW5vcmMuaW4KQEAg LTAsMCArMSw3NzMgQEAKKyMjIFNhbXBsZSBpbml0aWFsaXphdGlvbiBmaWxlIGZvciBHTlUgbmFu by4KKyMjCisjIyBGb3IgdGhlIG9wdGlvbnMgdGhhdCB0YWtlIHBhcmFtZXRlcnMsIHRoZSBkZWZh dWx0IHZhbHVlIGlzIHNob3duLgorIyMgT3RoZXIgb3B0aW9ucyBhcmUgdW5zZXQgYnkgZGVmYXVs dC4gIFRvIG1ha2Ugc3VyZSB0aGF0IGFuIG9wdGlvbgorIyMgaXMgZGlzYWJsZWQsIHlvdSBjYW4g dXNlICJ1bnNldCA8b3B0aW9uPiIuCisjIworIyMgQ2hhcmFjdGVycyB0aGF0IGFyZSBzcGVjaWFs IGluIGEgc2hlbGwgc2hvdWxkIG5vdCBiZSBlc2NhcGVkIGhlcmUuCisjIyBJbnNpZGUgc3RyaW5n IHBhcmFtZXRlcnMsIHF1b3RlcyBzaG91bGQgbm90IGJlIGVzY2FwZWQgLS0gdGhlIGxhc3QKKyMj IGRvdWJsZSBxdW90ZSBvbiB0aGUgbGluZSB3aWxsIGJlIHNlZW4gYXMgdGhlIGNsb3NpbmcgcXVv dGUuCisKKyMjIFRoaXMgdmVyc2lvbiBvZiBuYW5vcmMgZ2l2ZXMgbmFubyBrZXliaW5kaW5ncyB0 aGF0IGFyZSBtb3JlICJ1c3VhbCIKKyMjIHN1Y2ggYXMgXk8gZm9yIE9wZW4sIF5GIGZvciBGaW5k LCBeSCBmb3IgSGVscCwgYW5kIF5RIGZvciBRdWl0CisKKworIyMgSWYgeW91IHdhbnQgXkYsIF5C LCBNLUYgYW5kIE0tQiB0byBkbyB3aGF0IHRoZXkgZGlkIGJlZm9yZSB2ZXJzaW9uIDguMDoKKyMg YmluZCBeRiBmb3J3YXJkIG1haW4KKyMgYmluZCBeQiBiYWNrIG1haW4KKyMgYmluZCBNLUYgZm9y bWF0dGVyIG1haW4KKyMgYmluZCBNLUIgbGludGVyIG1haW4KKworIyMgTWFrZSBNLTwgYW5kIE0t PiBzd2l0Y2ggYmV0d2VlbiBidWZmZXJzLCBhcyB0aGV5IGRpZCBiZWZvcmUgdmVyc2lvbiA5LjA6 CisjIGJpbmQgTS08IHByZXZidWYgbWFpbgorIyBiaW5kIE0tPiBuZXh0YnVmIG1haW4KKworIyMg TWFrZSAnbmV4dHdvcmQnIChDdHJsK1JpZ2h0KSBhbmQgJ2Nob3B3b3JkcmlnaHQnIChDdHJsK0Rl bGV0ZSkKKyMjIHN0b3AgYXQgd29yZCBlbmRzIGluc3RlYWQgb2YgYXQgYmVnaW5uaW5ncy4KKyMg c2V0IGFmdGVyZW5kcworCisjIyBXaGVuIHNvZnQgbGluZSB3cmFwcGluZyBpcyBlbmFibGVkLCBt YWtlIGl0IHdyYXAgbGluZXMgYXQgYmxhbmtzCisjIyAodGFicyBhbmQgc3BhY2VzKSBpbnN0ZWFk IG9mIGFsd2F5cyBhdCB0aGUgZWRnZSBvZiB0aGUgc2NyZWVuLgorIyBzZXQgYXRibGFua3MKKwor IyMgQXV0b21hdGljYWxseSBpbmRlbnQgYSBuZXdseSBjcmVhdGVkIGxpbmUgdG8gdGhlIHNhbWUg bnVtYmVyIG9mCisjIyB0YWJzIGFuZC9vciBzcGFjZXMgYXMgdGhlIHByZWNlZGluZyBsaW5lIC0t IG9yIGFzIHRoZSBuZXh0IGxpbmUKKyMjIGlmIHRoZSBwcmVjZWRpbmcgbGluZSBpcyB0aGUgYmVn aW5uaW5nIG9mIGEgcGFyYWdyYXBoLgorIyBzZXQgYXV0b2luZGVudAorCisjIyBCYWNrIHVwIGZp bGVzIHRvIHRoZSBjdXJyZW50IGZpbGVuYW1lIHBsdXMgYSB0aWxkZS4KKyMgc2V0IGJhY2t1cAor CisjIyBUaGUgZGlyZWN0b3J5IHRvIHB1dCB1bmlxdWUgYmFja3VwIGZpbGVzIGluLgorIyBzZXQg YmFja3VwZGlyICIiCisKKyMjIFVzZSBib2xkIHRleHQgaW5zdGVhZCBvZiByZXZlcnNlIHZpZGVv IHRleHQuCisjIHNldCBib2xkdGV4dAorCisjIyBUcmVhdCBhbnkgbGluZSB3aXRoIGxlYWRpbmcg d2hpdGVzcGFjZSBhcyB0aGUgYmVnaW5uaW5nIG9mIGEgcGFyYWdyYXBoLgorIyBzZXQgYm9va3N0 eWxlCisKKyMjIFRoZSBjaGFyYWN0ZXJzIHRyZWF0ZWQgYXMgY2xvc2luZyBicmFja2V0cyB3aGVu IGp1c3RpZnlpbmcgcGFyYWdyYXBocy4KKyMjIFRoaXMgbWF5IG5vdCBpbmNsdWRlIGFueSBibGFu ayBjaGFyYWN0ZXJzLiAgT25seSBjbG9zaW5nIHB1bmN0dWF0aW9uLAorIyMgb3B0aW9uYWxseSBm b2xsb3dlZCBieSB0aGVzZSBjbG9zaW5nIGJyYWNrZXRzLCBjYW4gZW5kIHNlbnRlbmNlcy4KKyMg c2V0IGJyYWNrZXRzICIiJyk+XX0iCisKKyMjIEF1dG9tYXRpY2FsbHkgaGFyZC13cmFwIHRoZSBj dXJyZW50IGxpbmUgd2hlbiBpdCBiZWNvbWVzIG92ZXJsb25nLgorIyBzZXQgYnJlYWtsb25nbGlu ZXMKKworIyMgRG8gY2FzZS1zZW5zaXRpdmUgc2VhcmNoZXMgYnkgZGVmYXVsdC4KKyMgc2V0IGNh c2VzZW5zaXRpdmUKKworIyMgSW50ZXJwcmV0IGRpZ2l0cyBhZnRlciBhIGNvbG9uIGFmdGVyIGEg ZmlsZW5hbWUgKG9uIHRoZSBjb21tYW5kIGxpbmUpCisjIyBhcyB0aGUgbGluZSBudW1iZXIgdG8g Z28gdG8gaW4gdGhhdCBmaWxlLgorIyBzZXQgY29sb25wYXJzaW5nCisKKyMjIENvbnN0YW50bHkg cmVwb3J0IHRoZSBjdXJzb3IgcG9zaXRpb24sIGluIHRoZSBzdGF0dXMgYmFyIG9yIG1pbmliYXIu CisjIHNldCBjb25zdGFudHNob3cKKworIyMgVXNlIGN1dC1mcm9tLWN1cnNvci10by1lbmQtb2Yt bGluZSBieSBkZWZhdWx0LgorIyBzZXQgY3V0ZnJvbWN1cnNvcgorCisjIyBEbyBub3QgdXNlIHRo ZSBsaW5lIGJlbG93IHRoZSB0aXRsZSBiYXIsIGxlYXZpbmcgaXQgZW50aXJlbHkgYmxhbmsuCisj IHNldCBlbXB0eWxpbmUKKworIyMgU2V0IHRoZSB0YXJnZXQgd2lkdGggZm9yIGF1dG9tYXRpYyBo YXJkLXdyYXBwaW5nIGFuZCBmb3IganVzdGlmeWluZworIyMgcGFyYWdyYXBocy4gIElmIHRoZSBz cGVjaWZpZWQgdmFsdWUgaXMgMCBvciBsZXNzLCB0aGUgd3JhcHBpbmcgcG9pbnQKKyMjIHdpbGwg YmUgdGhlIHRlcm1pbmFsJ3Mgd2lkdGggbWludXMgdGhpcyBudW1iZXIuCisjIHNldCBmaWxsIC04 CisKKyMjIERyYXcgYSB2ZXJ0aWNhbCBzdHJpcGUgYXQgdGhlIGdpdmVuIGNvbHVtbiwgdG8gaGVs cCBqdWRnZSB0ZXh0IHdpZHRoLgorIyMgKFRoaXMgb3B0aW9uIGRvZXMgbm90IGhhdmUgYSBkZWZh dWx0IHZhbHVlLikKKyMgc2V0IGd1aWRlc3RyaXBlIDc1CisKKyMjIFJlbWVtYmVyIHRoZSB1c2Vk IHNlYXJjaC9yZXBsYWNlL2NvbW1hbmQgc3RyaW5ncyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4KKyMg c2V0IGhpc3Rvcnlsb2cKKworIyMgRGlzcGxheSBhICJzY3JvbGxiYXIiIG9uIHRoZSByaWdodGhh bmQgc2lkZSBvZiB0aGUgZWRpdCB3aW5kb3cuCisjIHNldCBpbmRpY2F0b3IKKworIyMgU2Nyb2xs IHRoZSBidWZmZXIgY29udGVudHMgcGVyIGhhbGYtc2NyZWVuIGluc3RlYWQgb2YgcGVyIGxpbmUu CisjIHNldCBqdW1weXNjcm9sbGluZworCisjIyBEaXNwbGF5IGxpbmUgbnVtYmVycyB0byB0aGUg bGVmdCAoYW5kIGFueSBhbmNob3JzIGluIHRoZSBtYXJnaW4pLgorIyBzZXQgbGluZW51bWJlcnMK KworIyMgTGV0IG90aGVyIHVzZXJzIChvZiBuYW5vIG9yIHZpbSkga25vdyB0aGF0IHlvdSBhcmUg ZWRpdGluZyB0aGUgZmlsZQorIyMgdGhleSBhcmUgdHJ5aW5nIHRvIGVkaXQsIGFuZCB0aGUgb3Ro ZXIgd2F5IGFyb3VuZC4KKyMgc2V0IGxvY2tpbmcKKworIyMgRmFsbCBiYWNrIHRvIHNsb3cgbGli bWFnaWMgdG8gdHJ5IGFuZCBkZXRlcm1pbmUgYW4gYXBwbGljYWJsZSBzeW50YXguCisjIHNldCBt YWdpYworCisjIyBUaGUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFja2V0cyB0aGF0IGFyZSBmb3Vu ZCBieSBhIG1hdGNoaW5nLWJyYWNrZXQKKyMjIHNlYXJjaC4gIFRoaXMgbWF5IG5vdCBjb250YWlu IGJsYW5rIGNoYXJhY3RlcnMuICBUaGUgb3BlbmluZyBicmFja2V0cworIyMgbXVzdCBjb21lIGJl Zm9yZSB0aGUgY2xvc2luZyBvbmVzLCBhbmQgdGhleSBtdXN0IGJlIGluIHRoZSBzYW1lIG9yZGVy LgorIyBzZXQgbWF0Y2hicmFja2V0cyAiKDxbeyk+XX0iCisKKyMjIFN1cHByZXNzIHRoZSB0aXRs ZSBiYXIgYW5kIHNob3cgdGhlIGZpbGVuYW1lIHBsdXMgYSBjdXJzb3ItcG9zaXRpb24KKyMjIHBl cmNlbnRhZ2UgaW4gdGhlIHNwYWNlIG9mIHRoZSBzdGF0dXMgYmFyLgorIyBzZXQgbWluaWJhcgor CisjIyBFbmFibGUgbW91c2Ugc3VwcG9ydCwgaWYgYXZhaWxhYmxlIGZvciB5b3VyIHN5c3RlbS4g IFdoZW4gZW5hYmxlZCwKKyMjIG1vdXNlIGNsaWNrcyBjYW4gYmUgdXNlZCB0byBwbGFjZSB0aGUg Y3Vyc29yLCBzZXQgdGhlIG1hcmsgKHdpdGgKKyMjIHR3byBjbGlja3MpLCBhbmQgZXhlY3V0ZSBz aG9ydGN1dHMuICBUaGUgbW91c2Ugd2lsbCB3b3JrIGluIHRoZQorIyMgWCBXaW5kb3cgU3lzdGVt LCBhbmQgb24gdGhlIGNvbnNvbGUgd2hlbiBncG0gaXMgcnVubmluZy4KKyMgc2V0IG1vdXNlCisK KyMjIFN3aXRjaCBvbiBtdWx0aXBsZSBmaWxlIGJ1ZmZlcnMgKGluc2VydGluZyBhIGZpbGUgd2ls bCBwdXQgaXQgaW50bworIyMgYSBzZXBhcmF0ZSBidWZmZXIpLgorIyBzZXQgbXVsdGlidWZmZXIK KworIyMgRG9uJ3QgY29udmVydCBmaWxlcyBmcm9tIERPUyBmb3JtYXQuCisjIHNldCBub2NvbnZl cnQKKworIyMgRG9uJ3QgZGlzcGxheSB0aGUgaGVscGZ1bCBzaG9ydGN1dCBsaXN0cyBhdCB0aGUg Ym90dG9tIG9mIHRoZSBzY3JlZW4uCisjIHNldCBub2hlbHAKKworIyMgRG9uJ3QgYXV0b21hdGlj YWxseSBhZGQgYSBuZXdsaW5lIHdoZW4gYSBmaWxlIGRvZXMgbm90IGVuZCB3aXRoIG9uZS4KKyMg c2V0IG5vbmV3bGluZXMKKworIyMgU2V0IG9wZXJhdGluZyBkaXJlY3RvcnkuICBuYW5vIHdpbGwg bm90IHJlYWQgb3Igd3JpdGUgZmlsZXMgb3V0c2lkZQorIyMgdGhpcyBkaXJlY3RvcnkgYW5kIGl0 cyBzdWJkaXJlY3Rvcmllcy4gIEFsc28sIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorIyMgaXMgY2hh bmdlZCB0byBoZXJlLCBzbyBhbnkgZmlsZXMgYXJlIGluc2VydGVkIGZyb20gdGhpcyBkaXIuICBB IGJsYW5rCisjIyBzdHJpbmcgbWVhbnMgdGhlIG9wZXJhdGluZy1kaXJlY3RvcnkgZmVhdHVyZSBp cyB0dXJuZWQgb2ZmLgorIyBzZXQgb3BlcmF0aW5nZGlyICIiCisKKyMjIFJlbWVtYmVyIHRoZSBw b3NpdGlvbiBvZiBjdXJzb3IgYW5kIGFuY2hvcnMgZm9yIHRoZSBuZXh0IGVkaXRpbmcgc2Vzc2lv bi4KKyMgc2V0IHBvc2l0aW9ubG9nCisKKyMjIFByZXNlcnZlIHRoZSBYT04gYW5kIFhPRkYga2V5 cyAoXlEgYW5kIF5TKS4KKyMgc2V0IHByZXNlcnZlCisKKyMjIFRoZSBjaGFyYWN0ZXJzIHRyZWF0 ZWQgYXMgY2xvc2luZyBwdW5jdHVhdGlvbiB3aGVuIGp1c3RpZnlpbmcgcGFyYWdyYXBocy4KKyMj IFRoaXMgbWF5IG5vdCBjb250YWluIGJsYW5rIGNoYXJhY3RlcnMuICBPbmx5IHRoZXNlIHRlcm1p bmF0aW5nIGNoYXJhY3RlcnMsCisjIyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGNsb3NpbmcgYnJh Y2tldHMsIGNhbiBlbmQgc2VudGVuY2VzLgorIyBzZXQgcHVuY3QgIiEuPyIKKworIyMgTWFrZSBz dGF0dXMtYmFyIG1lc3NhZ2VzIGRpc2FwcGVhciBhZnRlciAxIGtleXN0cm9rZSBpbnN0ZWFkIG9m IGFmdGVyIDIwLgorIyBzZXQgcXVpY2tibGFuaworCisjIyBUaGUgcmVndWxhciBleHByZXNzaW9u IHRoYXQgbWF0Y2hlcyBxdW90aW5nIGNoYXJhY3RlcnMgaW4gZW1haWwKKyMjIG9yIGxpbmUtY29t bWVudCBpbnRyb2R1Y2VycyBpbiBzb3VyY2UgY29kZS4gIFRoZSBkZWZhdWx0IGlzOgorIyBzZXQg cXVvdGVzdHIgIl4oWyAJXSooWyEjJTo7Pnx9XXwvLykpKyIKKworIyMgVHJ5IHRvIHdvcmsgYXJv dW5kIGEgbWlzbWF0Y2hpbmcgdGVybWluZm8gdGVybWluYWwgZGVzY3JpcHRpb24uCisjIHNldCBy YXdzZXF1ZW5jZXMKKworIyMgRml4IEJhY2tzcGFjZS9EZWxldGUgY29uZnVzaW9uIHByb2JsZW0u CisjIHNldCByZWJpbmRkZWxldGUKKworIyMgRG8gcmVndWxhci1leHByZXNzaW9uIHNlYXJjaGVz IGJ5IGRlZmF1bHQuCisjIyBSZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBvZiB0aGUgZXh0ZW5kZWQg dHlwZSAoRVJFKS4KKyMgc2V0IHJlZ2V4cAorCisjIyBTYXZlIGEgY2hhbmdlZCBidWZmZXIgYXV0 b21hdGljYWxseSBvbiBleGl0OyBkb24ndCBwcm9tcHQuCisjIHNldCBzYXZlb25leGl0CisKKyMj IFB1dCB0aGUgY3Vyc29yIG9uIHRoZSBoaWdobGlnaHRlZCBpdGVtIGluIHRoZSBmaWxlIGJyb3dz ZXIsIGFuZAorIyMgc2hvdyB0aGUgY3Vyc29yIGluIHRoZSBoZWxwIHZpZXdlcjsgdXNlZnVsIGZv ciBwZW9wbGUgd2hvIHVzZSBhCisjIyBicmFpbGxlIGRpc3BsYXkgYW5kIHBlb3BsZSB3aXRoIHBv b3IgdmlzaW9uLgorIyBzZXQgc2hvd2N1cnNvcgorCisjIyBNYWtlIHRoZSBIb21lIGtleSBzbWFy dGVyOiB3aGVuIEhvbWUgaXMgcHJlc3NlZCBhbnl3aGVyZSBidXQgYXQgdGhlCisjIyB2ZXJ5IGJl Z2lubmluZyBvZiBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIG9uIGEgbGluZSwgdGhlIGN1cnNv cgorIyMgd2lsbCBqdW1wIHRvIHRoYXQgYmVnaW5uaW5nIChlaXRoZXIgZm9yd2FyZHMgb3IgYmFj a3dhcmRzKS4gIElmIHRoZQorIyMgY3Vyc29yIGlzIGFscmVhZHkgYXQgdGhhdCBwb3NpdGlvbiwg aXQgd2lsbCBqdW1wIHRvIHRoZSB0cnVlIHN0YXJ0CisjIyBvZiB0aGUgbGluZSAodGhlIGxlZnQg ZWRnZSkuCisjIHNldCBzbWFydGhvbWUKKworIyMgU3ByZWFkIG92ZXJsb25nIGxpbmVzIG92ZXIg bXVsdGlwbGUgc2NyZWVuIGxpbmVzLgorIyBzZXQgc29mdHdyYXAKKworIyMgU2Nyb2xsIG9ubHkg dGhlIGN1cnJlbnQgbGluZSBzaWRld2F5cyAoaW5zdGVhZCBvZiBhbGwgbGluZXMpLgorIyBzZXQg c29sb3NpZGVzY3JvbGwKKworIyMgVXNlIHRoaXMgc3BlbGxpbmcgY2hlY2tlciBpbnN0ZWFkIG9m IHRoZSBpbnRlcm5hbCBvbmUuICBUaGlzIG9wdGlvbgorIyMgZG9lcyBub3QgaGF2ZSBhIGRlZmF1 bHQgdmFsdWUuCisjIHNldCBzcGVsbGVyICJhc3BlbGwgLXggLWMiCisKKyMjIFVzZSB0aGUgZW5k IG9mIHRoZSB0aXRsZSBiYXIgZm9yIHNvbWUgc3RhdGUgZmxhZ3M6IEkgPSBhdXRvLWluZGVudGlu ZywKKyMjIE0gPSBtYXJrLCBMID0gaGFyZC13cmFwcGluZyBsb25nIGxpbmVzLCBSID0gcmVjb3Jk aW5nLCBTID0gc29mdC13cmFwcGluZy4KKyMgc2V0IHN0YXRlZmxhZ3MKKworIyMgVXNlIHRoaXMg dGFiIHNpemUgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdDsgaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4g MC4KKyMgc2V0IHRhYnNpemUgOAorCisjIyBDb252ZXJ0IGVhY2ggdHlwZWQgdGFiIHRvIHRoZSBm aXR0aW5nIG51bWJlciBvZiBzcGFjZXMuCisjIHNldCB0YWJzdG9zcGFjZXMKKworIyMgU25pcCB3 aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgbGluZXMgd2hlbiBqdXN0aWZ5aW5nIG9yIGhhcmQtd3Jh cHBpbmcuCisjIHNldCB0cmltYmxhbmtzCisKKyMjIFNhdmUgZmlsZXMgYWx3YXlzIGluIFVuaXgg Zm9ybWF0IChhbHNvIHdoZW4gdGhleSB3ZXJlIERPUykuCisjIHNldCB1bml4CisKKyMjIFRoZSB0 d28gc2luZ2xlLWNvbHVtbiBjaGFyYWN0ZXJzIHVzZWQgdG8gZGlzcGxheSB0aGUgZmlyc3QgY2hh cmFjdGVycworIyMgb2YgdGFicyBhbmQgc3BhY2VzLiAgMTg3IGluIElTTyA4ODU5LTEgKDAwMDBC QiBpbiBVbmljb2RlKSBhbmQgMTgzIGluCisjIyBJU08tODg1OS0xICgwMDAwQjcgaW4gVW5pY29k ZSkgc2VlbSB0byBiZSBnb29kIHZhbHVlcyBmb3IgdGhlc2UuCisjIyBUaGUgZGVmYXVsdCB3aGVu IGluIGEgVVRGLTggbG9jYWxlOgorIyBzZXQgd2hpdGVzcGFjZSAiwrvCtyIKKyMjIFRoZSBkZWZh dWx0IG90aGVyd2lzZToKKyMgc2V0IHdoaXRlc3BhY2UgIj4uIgorCisjIyBEZXRlY3Qgd29yZCBi b3VuZGFyaWVzIGRpZmZlcmVudGx5IGJ5IHRyZWF0aW5nIHB1bmN0dWF0aW9uCisjIyBjaGFyYWN0 ZXJzIGFzIHBhcnRzIG9mIHdvcmRzLgorIyBzZXQgd29yZGJvdW5kcworCisjIyBUaGUgY2hhcmFj dGVycyAoYmVzaWRlcyBhbHBoYW51bWVyaWMgb25lcykgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJl ZAorIyMgYXMgcGFydHMgb2Ygd29yZHMuICBUaGlzIG9wdGlvbiBkb2VzIG5vdCBoYXZlIGEgZGVm YXVsdCB2YWx1ZS4gIFdoZW4KKyMjIHNldCwgaXQgb3ZlcnJpZGVzIG9wdGlvbiAnc2V0IHdvcmRi b3VuZHMnLgorIyBzZXQgd29yZGNoYXJzICI8Xz4uIgorCisjIyBMZXQgYW4gdW5tb2RpZmllZCBC YWNrc3BhY2Ugb3IgRGVsZXRlIGVyYXNlIHRoZSBtYXJrZWQgcmVnaW9uIChpbnN0ZWFkCisjIyBv ZiBhIHNpbmdsZSBjaGFyYWN0ZXIsIGFuZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgY3V0YnVmZmVy KS4KKyMgc2V0IHphcAorCisjIyBIaWRlIHRoZSBiYXJzIHBsdXMgaGVscCBsaW5lcyBhbmQgdXNl IHRoZSB3aG9sZSB0ZXJtaW5hbCBhcyBlZGl0IGFyZWEuCisjIHNldCB6ZXJvCisKKworIyMgUGFp bnQgdGhlIGludGVyZmFjZSBlbGVtZW50cyBvZiBuYW5vLiAgVGhlc2UgYXJlIGV4YW1wbGVzOyB0 aGVyZSBhcmUKKyMjIG5vIGNvbG9ycyBieSBkZWZhdWx0LCBleGNlcHQgZm9yIGVycm9yY29sb3Ig YW5kIHNwb3RsaWdodGNvbG9yLgorIyBzZXQgdGl0bGVjb2xvciBib2xkLHdoaXRlLGJsdWUKKyMg c2V0IHByb21wdGNvbG9yIGxpZ2h0d2hpdGUsZ3JleQorIyBzZXQgc3RhdHVzY29sb3IgYm9sZCx3 aGl0ZSxncmVlbgorIyBzZXQgZXJyb3Jjb2xvciBib2xkLHdoaXRlLHJlZAorIyBzZXQgc3BvdGxp Z2h0Y29sb3IgYmxhY2ssbGlnaHR5ZWxsb3cKKyMgc2V0IHNlbGVjdGVkY29sb3IgbGlnaHR3aGl0 ZSwjODA0CisjIHNldCBzdHJpcGVjb2xvciAsIzQ0NAorIyBzZXQgc2Nyb2xsZXJjb2xvciBzbGF0 ZSwjMjIyCisjIHNldCBudW1iZXJjb2xvciBjeWFuCisjIHNldCBrZXljb2xvciBjeWFuCisjIHNl dCBmdW5jdGlvbmNvbG9yIGdyZWVuCisKKyMjIEluIHJvb3QncyAubmFub3JjIHlvdSBtaWdodCB3 YW50IHRvIHVzZToKKyMgc2V0IHRpdGxlY29sb3IgYm9sZCx3aGl0ZSxtYWdlbnRhCisjIHNldCBw cm9tcHRjb2xvciBibGFjayx5ZWxsb3cKKyMgc2V0IHN0YXR1c2NvbG9yIGJvbGQsd2hpdGUsbWFn ZW50YQorIyBzZXQgZXJyb3Jjb2xvciBib2xkLHdoaXRlLHJlZAorIyBzZXQgc3BvdGxpZ2h0Y29s b3IgYmxhY2ssb3JhbmdlCisjIHNldCBzZWxlY3RlZGNvbG9yIGxpZ2h0d2hpdGUsY3lhbgorIyBz ZXQgc3RyaXBlY29sb3IgLHllbGxvdworIyBzZXQgc2Nyb2xsZXJjb2xvciBtYWdlbnRhCisjIHNl dCBudW1iZXJjb2xvciBtYWdlbnRhCisjIHNldCBrZXljb2xvciBsaWdodG1hZ2VudGEKKyMgc2V0 IGZ1bmN0aW9uY29sb3IgbWFnZW50YQorCisKKyMjID09PSBTeW50YXggY29sb3JpbmcgPT09Cisj IyBGb3IgYWxsIGRldGFpbHMsIHNlZSAnbWFuIG5hbm9yYycsIHNlY3Rpb24gU1lOVEFYIEhJR0hM SUdIVElORy4KKworIyMgTW9zdCBvZiB0aGUgZXhpc3Rpbmcgc3ludGF4IGRlZmluaXRpb25zIGFy ZSBpbmNsdWRlZCBieSBkZWZhdWx0OgoraW5jbHVkZSBAUEtHREFUQURJUkAvKi5uYW5vcmMKKwor IyMgT3IgeW91IGNhbiBzZWxlY3QganVzdCB0aGUgb25lcyB5b3UgbmVlZC4gIEZvciBleGFtcGxl OgorIyBpbmNsdWRlIEBQS0dEQVRBRElSQC9odG1sLm5hbm9yYworIyBpbmNsdWRlIEBQS0dEQVRB RElSQC9weXRob24ubmFub3JjCisjIGluY2x1ZGUgQFBLR0RBVEFESVJAL3NoLm5hbm9yYworCisj IyBJbiBAUEtHREFUQURJUkAvZXh0cmEvIHlvdSBjYW4gZmluZCBzb21lIHN5bnRheGVzIHRoYXQg YXJlCisjIyBzcGVjaWZpYyBmb3IgY2VydGFpbiBkaXN0cm9zIG9yIGZvciBzb21lIGxlc3MgY29t bW9uIGxhbmd1YWdlcy4KKworCisjIyBJZiA8VGFiPiBzaG91bGQgYWx3YXlzIHByb2R1Y2UgZm91 ciBzcGFjZXMgd2hlbiBlZGl0aW5nIGEgUHl0aG9uIGZpbGUsCisjIyBpbmRlcGVuZGVudCBvZiB0 aGUgc2V0dGluZ3Mgb2YgJ3RhYnNpemUnIGFuZCAndGFic3Rvc3BhY2VzJzoKKyMgZXh0ZW5kc3lu dGF4IHB5dGhvbiB0YWJnaXZlcyAiICAgICIKKworCisjIyA9PT0gS2V5IGJpbmRpbmdzID09PQor IyMgRm9yIGFsbCBkZXRhaWxzLCBzZWUgJ21hbiBuYW5vcmMnLCBzZWN0aW9uIFJFQklORElORyBL RVlTLgorIyMKKyMjIEFsbCBvZiBuYW5vJ3MgZGVmYXVsdCBrZXkgYmluZGluZ3MgYXJlIGRlZmlu ZWQgaGVyZS4gIFNpbmNlIG5vIGJpbmRpbmdzCisjIyBhcmUgY29tcGlsZWQgaW4sIHRoaXMgZmls ZSAob3IgeW91ciBvd24gbmFub3JjKSBtdXN0IGJlIHByZXNlbnQgZm9yIHRoZQorIyMgZWRpdG9y IHRvIHdvcmsuICBOYW5vIHdpbGwgcmVmdXNlIHRvIHN0YXJ0IGlmIG5vIGtleSBpcyBib3VuZCB0 byAiZXhpdCIKKyMjIGluIHRoZSBtYWluIG1lbnUuCisjIworIyMgVG8gY2hhbmdlIGEgYmluZGlu ZywgZWRpdCB0aGUga2V5IHN0cmluZyBvbiBpdHMgbGluZS4KKyMjIFRvIGRpc2FibGUgYSBiaW5k aW5nLCBjb21tZW50IG91dCBvciBkZWxldGUgaXRzIGxpbmUuCisjIyBUaGVyZSBpcyBubyBuZWVk IHRvIHVzZSAndW5iaW5kJyBiZWZvcmUgYXNzaWduaW5nIGEga2V5OyBhIG5ldyBhc3NpZ25tZW50 CisjIyBhdXRvbWF0aWNhbGx5IHNoYWRvd3MgYW55IGVhcmxpZXIgb25lIGZvciB0aGUgc2FtZSBr ZXkgaW4gdGhlIHNhbWUgbWVudS4KKyMjCisjIyBFYWNoICdiaW5kJyBsaW5lIGFjY2VwdHMgZXhh Y3RseSBvbmUgbWVudSBuYW1lLiAgVmFsaWQgbWVudSBuYW1lcyBhcmU6CisjIyAgIG1haW4gIHNl YXJjaCAgcmVwbGFjZSAgcmVwbGFjZXdpdGggIHllc25vICBnb3RvbGluZSAgd3JpdGVvdXQgIGlu c2VydAorIyMgICBleGVjdXRlICBoZWxwICBzcGVsbCAgbGludGVyICBicm93c2VyICB3aGVyZWlz ZmlsZSAgZ290b2RpciAgYWxsCisjIyAiYWxsIiBjb3ZlcnMgZXZlcnkgbWVudS4gIExhdGVyIGxp bmVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIGVhcmxpZXIgb25lcworIyMgZm9yIHRoZSBzYW1lIGtl eSBhbmQgbWVudSwgc28gZ2VuZXJhbCBiaW5kaW5ncyBjb21lIGZpcnN0IGhlcmUgYW5kCisjIyBt ZW51LXNwZWNpZmljIG92ZXJyaWRlcyBjb21lIGFmdGVyLgorIyMKKyMjIEZvciB0aGUgY29tcGxl dGUgbGlzdCBvZiBmdW5jdGlvbiBuYW1lcywgc2VlICdtYW4gbmFub3JjJy4KKworCisjIyMjIyBN ZW51OiBhbGwKKworIyMgLS0gVGV4dCBlbnRyeSBhbmQgZGVsZXRpb24gLS0KK2JpbmQgRW50ZXIg ICAgZW50ZXIgICAgICBhbGwKK2JpbmQgXk0gICAgICAgZW50ZXIgICAgICBhbGwKK2JpbmQgVGFi ICAgICAgdGFiICAgICAgICBhbGwKK2JpbmQgXkkgICAgICAgdGFiICAgICAgICBhbGwKKworIyMg QmFja3NwYWNlIGFuZCBEZWxldGUgd29yayB0aGUgc2FtZSBpbiBhbGwgcHJvbXB0IG1lbnVzOgor YmluZCBCc3AgICAgICBiYWNrc3BhY2UgIGFsbAorYmluZCBTaC1EZWwgICBiYWNrc3BhY2UgIGFs bAorYmluZCBEZWwgICAgICBkZWxldGUgICAgIGFsbAorCisjIyAtLSBDdXJzb3IgbW92ZW1lbnQg LS0KK2JpbmQgTGVmdCAgICAgYmFjayAgICAgICBhbGwKK2JpbmQgUmlnaHQgICAgZm9yd2FyZCAg ICBhbGwKK2JpbmQgVXAgICAgICAgcHJldmxpbmUgICBhbGwKK2JpbmQgRG93biAgICAgbmV4dGxp bmUgICBhbGwKKworIyMgV29yZC1sZXZlbCBtb3ZlbWVudDoKK2JpbmQgXkxlZnQgICAgcHJldndv cmQgICBhbGwKK2JpbmQgXlJpZ2h0ICAgbmV4dHdvcmQgICBhbGwKK2JpbmQgTS1TcGFjZSAgcHJl dndvcmQgICBhbGwKK2JpbmQgXlNwYWNlICAgbmV4dHdvcmQgICBhbGwKKworIyMgQmVnaW5uaW5n IGFuZCBlbmQgb2YgbGluZToKK2JpbmQgSG9tZSAgICAgaG9tZSAgICAgICBhbGwKK2JpbmQgRW5k ICAgICAgZW5kICAgICAgICBhbGwKK2JpbmQgXkEgICAgICAgaG9tZSAgICAgICBhbGwKK2JpbmQg XkUgICAgICAgZW5kICAgICAgICBhbGwKKworIyMgUGFnZSB1cC9kb3duOgorYmluZCBQZ1VwICAg ICBwYWdldXAgICAgIGFsbAorYmluZCBQZ0RuICAgICBwYWdlZG93biAgIGFsbAorIyMjYmluZCBe WSAgICAgICBwYWdldXAgICAgIGFsbAorYmluZCBeViAgICAgICBwYWdlZG93biAgIGFsbAorYmlu ZCBGNyAgICAgICBwYWdldXAgICAgIGFsbAorYmluZCBGOCAgICAgICBwYWdlZG93biAgIGFsbAor CisjIyBSZWZyZXNoIHRoZSBzY3JlZW47IGluIG1haW4sIGFsc28gY2VudGVycyB0aGUgY3Vyc29y IGxpbmU6CitiaW5kIF5MICAgICAgIHJlZnJlc2ggICAgYWxsCisKKyMjIC0tIEhlbHAsIGV4aXQs IGFuZCBjYW5jZWwgLS0KK2JpbmQgRjEgICAgICAgaGVscCAgICAgICBhbGwKK2JpbmQgXkggICAg ICAgaGVscCAgICAgICBhbGwKKworIyMgXkMgY2FuY2VscyBpbiBwcm9tcHRzLCByZXBvcnRzIHBv c2l0aW9uIGluIG1haW4sIGFuZCBleGl0cyBpbiBicm93c2VyL2hlbHA6CitiaW5kIF5DICAgICAg IGNhbmNlbCAgICAgYWxsCitiaW5kIF5RICAgICAgIGV4aXQgICAgICAgYWxsCisKKyMjIC0tIEVk aXRpbmcgLS0KK2JpbmQgXksgICAgICAgY3V0ICAgICAgICBhbGwKK2JpbmQgRjkgICAgICAgY3V0 ICAgICAgICBhbGwKK2JpbmQgTS02ICAgICAgY29weSAgICAgICBhbGwKK2JpbmQgTS1eICAgICAg Y29weSAgICAgICBhbGwKK2JpbmQgRjEwICAgICAgcGFzdGUgICAgICBhbGwKK2JpbmQgXlYgICAg ICAgcGFzdGUgICAgICBhbGwKKworIyMgRW50ZXIgYSBjaGFyYWN0ZXIgYnkgaXRzIGtleWNvZGU6 CitiaW5kIE0tViAgICAgIHZlcmJhdGltICAgYWxsCisKKyMjIC0tIFNlYXJjaGluZyAtLQorYmlu ZCBeQiAgICAgICB3aGVyZXdhcyAgIGFsbAorYmluZCBeRiAgICAgICB3aGVyZWlzICAgIGFsbAor YmluZCBGNiAgICAgICB3aGVyZWlzICAgIGFsbAorYmluZCBNLUIgICAgICBmaW5kcHJldmlvdXMg IGFsbAorYmluZCBNLVEgICAgICBmaW5kcHJldmlvdXMgIGFsbAorYmluZCBeRCAgICAgICBmaW5k cHJldmlvdXMgIGFsbAorYmluZCBNLUYgICAgICBmaW5kbmV4dCAgIGFsbAorYmluZCBNLVcgICAg ICBmaW5kbmV4dCAgIGFsbAorYmluZCBeRyAgICAgICBmaW5kbmV4dCAgIGFsbAorCisjIyAtLSBU b2dnbGVzIChNZXRhICsgbGV0dGVyKSAtLQorYmluZCBNLVggICAgICBub2hlbHAgICAgICAgICAg ICAgYWxsCisKKyMjIC0tIEYta2V5IHNob3J0Y3V0cyAtLQorYmluZCBGNiAgICAgICB3aGVyZWlz ICAgIGFsbAorYmluZCBGNyAgICAgICBwYWdldXAgICAgIGFsbAorYmluZCBGOCAgICAgICBwYWdl ZG93biAgIGFsbAorYmluZCBGOSAgICAgICBjdXQgICAgICAgIGFsbAorYmluZCBGMTAgICAgICBw YXN0ZSAgICAgIGFsbAorCisKKyMjIyMjICBNZW51OiBtYWluCisKKyMjIC0tIEVkaXRpbmcgLS0K K2JpbmQgXlggICAgICAgY3V0ICAgICAgICBtYWluCitiaW5kIF5DICAgICAgIGNvcHkgICAgICAg bWFpbgorCisKKyMjIEp1bXAgdG8gdGhlIHZlcnkgZmlyc3Qgb3IgbGFzdCBsaW5lIG9mIHRoZSBm aWxlOgorYmluZCBNLVwgICAgICBmaXJzdGxpbmUgIG1haW4KK2JpbmQgXkhvbWUgICAgZmlyc3Rs aW5lICBtYWluCitiaW5kIE0tLyAgICAgIGxhc3RsaW5lICAgbWFpbgorYmluZCBeRW5kICAgICBs YXN0bGluZSAgIG1haW4KKworIyMgQmxvY2sgbmF2aWdhdGlvbiAoYmxhbmstbGluZS1zZXBhcmF0 ZWQgYmxvY2tzIC8gcGFyYWdyYXBocyk6CitiaW5kIF5VcCAgICAgIHByZXZibG9jayAgbWFpbgor YmluZCBeRG93biAgICBuZXh0YmxvY2sgIG1haW4KK2JpbmQgTS03ICAgICAgcHJldmJsb2NrICBt YWluCitiaW5kIE0tOCAgICAgIG5leHRibG9jayAgbWFpbgorYmluZCBNLSggICAgICBiZWdpbnBh cmEgIG1haW4KK2JpbmQgTS05ICAgICAgYmVnaW5wYXJhICBtYWluCitiaW5kIE0tKSAgICAgIGVu ZHBhcmEgICAgbWFpbgorYmluZCBNLTAgICAgICBlbmRwYXJhICAgIG1haW4KKworIyMgR28gdG8g Zmlyc3Qgb3IgbGFzdCB2aXNpYmxlIHJvdyBpbiB0aGUgdmlld3BvcnQ6CitiaW5kIE0tSG9tZSAg IHRvcHJvdyAgICAgbWFpbgorYmluZCBNLUVuZCAgICBib3R0b21yb3cgIG1haW4KKworIyMgU2Ny b2xsIHRoZSB2aWV3cG9ydCB3aXRob3V0IG1vdmluZyB0aGUgY3Vyc29yIHRleHR1YWxseToKK2Jp bmQgTS1VcCAgICAgc2Nyb2xsdXAgICBtYWluCitiaW5kIE0tRG93biAgIHNjcm9sbGRvd24gbWFp bgorYmluZCBNLS0gICAgICBzY3JvbGx1cCAgIG1haW4KK2JpbmQgTS1fICAgICAgc2Nyb2xsdXAg ICBtYWluCitiaW5kIE0tKyAgICAgIHNjcm9sbGRvd24gbWFpbgorYmluZCBNLT0gICAgICBzY3Jv bGxkb3duIG1haW4KKworIyMgU2Nyb2xsIHNpZGV3YXlzICh1c2VmdWwgd2hlbiBzb2Z0d3JhcCBp cyBvZmYpOgorYmluZCBNLTwgICAgICBzY3JvbGxsZWZ0ICBtYWluCitiaW5kIE0tPiAgICAgIHNj cm9sbHJpZ2h0IG1haW4KKworIyMgUmVmcmVzaCB0aGUgc2NyZWVuOyBpbiBtYWluLCBhbHNvIGNl bnRlcnMgdGhlIGN1cnNvciBsaW5lOgorYmluZCBeTCAgICAgICBjZW50ZXIgICAgIG1haW4KK2Jp bmQgTS0lICAgICAgY3ljbGUgICAgICBtYWluCisKKyMjIENsYXNzaWMgRW1hY3Mtc3R5bGUgdXAv ZG93biBpbiBtYWluLCBicm93c2VyLCBhbmQgaGVscDoKK2JpbmQgXlAgICAgICAgcHJldmxpbmUg ICBtYWluCisjIyNiaW5kIF5OICAgICAgIG5leHRsaW5lICAgbWFpbgorCisjIyAtLSBIZWxwLCBl eGl0LCBhbmQgY2FuY2VsIC0tCitiaW5kIF5YICAgICAgIGV4aXQgICAgICAgbWFpbgorYmluZCBG MiAgICAgICBleGl0ICAgICAgIG1haW4KKworIyMgLS0gRmlsZSBvcGVyYXRpb25zIC0tCitiaW5k IF5TICAgICAgIHNhdmVmaWxlICAgbWFpbgorYmluZCBeVyAgICAgICB3cml0ZW91dCAgIG1haW4K K2JpbmQgRjMgICAgICAgd3JpdGVvdXQgICBtYWluCitiaW5kIF5SICAgICAgIGluc2VydCAgICAg bWFpbgorYmluZCBeTyAgICAgICBpbnNlcnQgICAgIG1haW4KK2JpbmQgSW5zICAgICAgaW5zZXJ0 ICAgICBtYWluCitiaW5kIEY1ICAgICAgIGluc2VydCAgICAgbWFpbgorCisjIyAtLSBFZGl0aW5n IC0tCitiaW5kIE0tQSAgICAgIG1hcmsgICAgICAgbWFpbgorYmluZCBeXiAgICAgICBtYXJrICAg ICAgIG1haW4KK2JpbmQgXkEgICAgICAgbWFyayAgICAgICBtYWluCisKK2JpbmQgTS19ICAgICAg aW5kZW50ICAgICBtYWluCitiaW5kIE0teyAgICAgIHVuaW5kZW50ICAgbWFpbgorYmluZCBTaC1U YWIgICB1bmluZGVudCAgIG1haW4KKworYmluZCBNLVUgICAgICB1bmRvICAgICAgIG1haW4KK2Jp bmQgXlogICAgICAgdW5kbyAgICAgICBtYWluCitiaW5kIE0tRSAgICAgIHJlZG8gICAgICAgbWFp bgorYmluZCBeWSAgICAgICByZWRvICAgICAgIG1haW4KKworYmluZCBNLUJzcCAgICBjaG9wd29y ZGxlZnQgICBtYWluCitiaW5kIFNoLV5EZWwgIGNob3B3b3JkbGVmdCAgIG1haW4KK2JpbmQgXkRl bCAgICAgY2hvcHdvcmRyaWdodCAgbWFpbgorYmluZCBNLURlbCAgICB6YXAgICAgICAgICAgICBt YWluCitiaW5kIF5LICAgInttYXJrfXtlbmR9e3phcH0iIG1haW4KK2JpbmQgXlUgICJ7bWFya317 aG9tZX17emFwfSIgbWFpbgorCitiaW5kIF5dICAgICAgIGNvbXBsZXRlICAgbWFpbgorYmluZCBN LTMgICAgICBjb21tZW50ICAgIG1haW4KKworYmluZCBNLTogICAgICByZWNvcmRtYWNybyAgbWFp bgorYmluZCBNLTsgICAgICBydW5tYWNybyAgICAgbWFpbgorCitiaW5kIE0tSW5zICAgIGFuY2hv ciAgICAgbWFpbgorYmluZCBNLSIgICAgICBhbmNob3IgICAgIG1haW4KK2JpbmQgTS0nICAgICAg bmV4dGFuY2hvciBtYWluCitiaW5kIE0tUGdVcCAgIHByZXZhbmNob3IgbWFpbgorYmluZCBNLVBn RG4gICBuZXh0YW5jaG9yIG1haW4KKworIyMgU3dpdGNoIGJldHdlZW4gb3BlbiBidWZmZXJzOgor YmluZCBNLSwgICAgICBwcmV2YnVmICAgIG1haW4KK2JpbmQgTS0uICAgICAgbmV4dGJ1ZiAgICBt YWluCitiaW5kIE0tTGVmdCAgIHByZXZidWYgICAgbWFpbgorYmluZCBNLVJpZ2h0ICBuZXh0YnVm ICAgIG1haW4KKworIyMgXkIvXkYgbW92ZSB0aGUgY3Vyc29yIGxlZnQvcmlnaHQgaW4gcHJvbXB0 cywgc2VhcmNoIGJhY2t3YXJkL2ZvcndhcmQgZWxzZXdoZXJlOgorYmluZCBeQiAgICAgICB3aGVy ZXdhcyAgIG1haW4KK2JpbmQgXkYgICAgICAgd2hlcmVpcyAgICBtYWluCisKK2JpbmQgXlwgICAg ICAgcmVwbGFjZSAgICBtYWluCitiaW5kIE0tUiAgICAgIHJlcGxhY2UgICAgbWFpbgorYmluZCBe UiAgICAgICByZXBsYWNlICAgIG1haW4KKworYmluZCBNLV0gICAgICBmaW5kYnJhY2tldCAgbWFp bgorCisjIyBHbyB0byBhIHNwZWNpZmljIGxpbmUgYW5kIGNvbHVtbiBudW1iZXI6CitiaW5kIF5f ICAgICAgIGdvdG9saW5lICAgbWFpbgorYmluZCBNLUcgICAgICBnb3RvbGluZSAgIG1haW4KK2Jp bmQgXi8gICAgICAgZ290b2xpbmUgICBtYWluCitiaW5kIF5UICAgICAgIGdvdG9saW5lICAgbWFp bgorCisjIyAtLSBKdXN0aWZ5IC0tCitiaW5kIF5KICAgICAgIGp1c3RpZnkgICAgbWFpbgorYmlu ZCBGNCAgICAgICBqdXN0aWZ5ICAgIG1haW4KKyMjI2JpbmQgTS1KICAgICAgZnVsbGp1c3RpZnkg IG1haW4KKworIyMgLS0gU3BlbGwgY2hlY2tpbmcsIGxpbnRpbmcsIGFuZCBmb3JtYXR0aW5nIC0t CitiaW5kIF5FICAgICAgIGV4ZWN1dGUgICAgbWFpbgorYmluZCBGMTIgICAgICBzcGVsbGVyICAg IG1haW4KKworIyMgLS0gQ3Vyc29yIHBvc2l0aW9uIGFuZCB3b3JkIGNvdW50IC0tCitiaW5kIEYx MSAgICAgIGxvY2F0aW9uICAgbWFpbgorYmluZCBeUCAgICAgICBsb2NhdGlvbiAgIG1haW4KK2Jp bmQgTS1EICAgICAgd29yZGNvdW50ICBtYWluCisKKyMjIC0tIFRvZ2dsZXMgKE1ldGEgKyBsZXR0 ZXIpIC0tCitiaW5kIE0tWiAgICAgIHplcm8gICAgICAgICAgICAgICBtYWluCitiaW5kIE0tQyAg ICAgIGNvbnN0YW50c2hvdyAgICAgICBtYWluCitiaW5kIE0tUyAgICAgIHNvZnR3cmFwICAgICAg ICAgICBtYWluCitiaW5kIE0tJCAgICAgIHNvZnR3cmFwICAgICAgICAgICBtYWluCitiaW5kIE0t TiAgICAgIGxpbmVudW1iZXJzICAgICAgICBtYWluCitiaW5kIE0tIyAgICAgIGxpbmVudW1iZXJz ICAgICAgICBtYWluCitiaW5kIE0tUCAgICAgIHdoaXRlc3BhY2VkaXNwbGF5ICBtYWluCitiaW5k IE0tWSAgICAgIG5vc3ludGF4ICAgICAgICAgICBtYWluCitiaW5kIE0tSCAgICAgIHNtYXJ0aG9t ZSAgICAgICAgICBtYWluCitiaW5kIE0tSSAgICAgIGF1dG9pbmRlbnQgICAgICAgICBtYWluCiti aW5kIE0tSyAgICAgIGN1dGZyb21jdXJzb3IgICAgICBtYWluCitiaW5kIE0tTCAgICAgIGJyZWFr bG9uZ2xpbmVzICAgICBtYWluCitiaW5kIE0tTyAgICAgIHRhYnN0b3NwYWNlcyAgICAgICBtYWlu CitiaW5kIE0tTSAgICAgIG1vdXNlICAgICAgICAgICAgICBtYWluCisKKyMjIC0tIEYta2V5IHNo b3J0Y3V0cyAtLQorYmluZCBGMyAgICAgICB3cml0ZW91dCAgIG1haW4KK2JpbmQgRjQgICAgICAg anVzdGlmeSAgICBtYWluCitiaW5kIEY1ICAgICAgIGluc2VydCAgICAgbWFpbgorYmluZCBGMTEg ICAgICBsb2NhdGlvbiAgIG1haW4KK2JpbmQgRjEyICAgICAgc3BlbGxlciAgICBtYWluCisKKyMj ID09PSBVc2VmdWwgY3VzdG9taXphdGlvbnMgKGNvbW1lbnRlZCBvdXQpID09PQorIyMgU3VzcGVu ZCBuYW5vIHdpdGggYSBzaW5nbGUga2V5c3Ryb2tlIGluc3RlYWQgb2YgdmlhIF5UIF5aOgorIyBi aW5kIF5aIHN1c3BlbmQgbWFpbgorCisjIyBNYWtlIEN0cmwrQmFja3NwYWNlIGRlbGV0ZSB0aGUg d29yZCB0byB0aGUgbGVmdCAoaWYgXkggaXMgZnJlZSk6CisjIGJpbmQgXkggY2hvcHdvcmRsZWZ0 IG1haW4KKworIyMgSWYgeW91IHdhbnQgXkwgdG8gb25seSByZWZyZXNoIHRoZSBzY3JlZW4sIG5v dCBjZW50ZXIgdGhlIGN1cnNvcjoKKyMgYmluZCBeTCByZWZyZXNoIG1haW4KKworIyMgRm9yIHF1 aWNrbHkgdXBwZXJjYXNpbmcgb3IgbG93ZXJjYXNpbmcgdGhlIHdvcmQgdW5kZXIgdGhlIGN1cnNv cjoKKyMgYmluZCBTaC1NLVUgIntuZXh0d29yZH17bWFya317cHJldndvcmR9e2V4ZWN1dGV9fCBz ZWQgJ3MvLiovXFUmLycge2VudGVyfSIgbWFpbgorIyBiaW5kIFNoLU0tTCAie25leHR3b3JkfXtt YXJrfXtwcmV2d29yZH17ZXhlY3V0ZX18IHNlZCAncy8uKi9cTCYvJyB7ZW50ZXJ9IiBtYWluCisK KyMjIENvcHkgdGhlIG1hcmtlZCByZWdpb24gdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgKHJlcXVp cmVzIHhzZWwpOgorIyBiaW5kIFNoLU0tQyAie2V4ZWN1dGV9fCB4c2VsIC1pYiB7ZW50ZXJ9e3Vu ZG99IiBtYWluCisKKyMjIEZvciBzbmlwcGluZyB0cmFpbGluZyB3aGl0ZXNwYWNlIHdoZW4gc2F2 aW5nOgorIyBiaW5kIF5TICJ7ZXhlY3V0ZX18IHNlZCAncy9bWzpzcGFjZTpdXVwrJC8vJyB7ZW50 ZXJ9e3NhdmVmaWxlfSIgbWFpbgorCisKKworIyMjIyMgIE1lbnU6IHNlYXJjaAorCisjIyBJbiBo aXN0b3J5LWNhcGFibGUgcHJvbXB0cywgVXAvRG93biBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0 IGluc3RlYWQ6CitiaW5kIFVwICAgICAgIG9sZGVyICAgICAgc2VhcmNoCitiaW5kIF5QICAgICAg IG9sZGVyICAgICAgc2VhcmNoCitiaW5kIERvd24gICAgIG5ld2VyICAgICAgc2VhcmNoCitiaW5k IF5OICAgICAgIG5ld2VyICAgICAgc2VhcmNoCisKKyMjIFRvZ2dsZXMgaW4gdGhlIHNlYXJjaCBh bmQgcmVwbGFjZSBwcm9tcHRzOgorYmluZCBNLUMgICAgICBjYXNlc2VucyAgIHNlYXJjaAorYmlu ZCBNLVIgICAgICByZWdleHAgICAgIHNlYXJjaAorYmluZCBNLUIgICAgICBiYWNrd2FyZHMgIHNl YXJjaAorYmluZCBeUiAgICAgICBmbGlwcmVwbGFjZSAgc2VhcmNoCitiaW5kIF5UICAgICAgIGZs aXBnb3RvICAgc2VhcmNoCitiaW5kIF4vICAgICAgIGZsaXBnb3RvICAgc2VhcmNoCisKKworIyMj IyMgIE1lbnU6IHJlcGxhY2UKKworIyMgSW4gaGlzdG9yeS1jYXBhYmxlIHByb21wdHMsIFVwL0Rv d24gbmF2aWdhdGUgdGhlIGhpc3RvcnkgbGlzdCBpbnN0ZWFkOgorYmluZCBVcCAgICAgICBvbGRl ciAgICAgIHJlcGxhY2UKK2JpbmQgRG93biAgICAgbmV3ZXIgICAgICByZXBsYWNlCisKKyMjIElu IGhpc3RvcnktY2FwYWJsZSBwcm9tcHRzLCBeUC9eTiBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0 OgorYmluZCBeUCAgICAgICBvbGRlciAgICAgIHJlcGxhY2UKK2JpbmQgXk4gICAgICAgbmV3ZXIg ICAgICByZXBsYWNlCisKKyMjIFRvZ2dsZXMgaW4gdGhlIHNlYXJjaCBhbmQgcmVwbGFjZSBwcm9t cHRzOgorYmluZCBNLUMgICAgICBjYXNlc2VucyAgICAgcmVwbGFjZQorYmluZCBNLVIgICAgICBy ZWdleHAgICAgICAgcmVwbGFjZQorYmluZCBNLUIgICAgICBiYWNrd2FyZHMgICAgcmVwbGFjZQor YmluZCBeUiAgICAgICBmbGlwcmVwbGFjZSAgcmVwbGFjZQorCisKKyMjIyMjICBNZW51OiByZXBs YWNld2l0aAorCisjIyBJbiBoaXN0b3J5LWNhcGFibGUgcHJvbXB0cywgVXAvRG93biBuYXZpZ2F0 ZSB0aGUgaGlzdG9yeSBsaXN0IGluc3RlYWQ6CitiaW5kIFVwICAgICAgIG9sZGVyICAgICAgcmVw bGFjZXdpdGgKK2JpbmQgRG93biAgICAgbmV3ZXIgICAgICByZXBsYWNld2l0aAorCisjIyBJbiBo aXN0b3J5LWNhcGFibGUgcHJvbXB0cywgXlAvXk4gbmF2aWdhdGUgdGhlIGhpc3RvcnkgbGlzdDoK K2JpbmQgXlAgICAgICAgb2xkZXIgICAgICByZXBsYWNld2l0aAorYmluZCBeTiAgICAgICBuZXdl ciAgICAgIHJlcGxhY2V3aXRoCisKKworIyMjIyMgIE1lbnU6IHllc25vCisKKworIyMjIyMgIE1l bnU6IGdvdG9saW5lCisKKyMjIEluIHRoZSBnb3RvbGluZSBhbmQgc2VhcmNoIHByb21wdHMsIF5Z L15WIGp1bXAgdG8gZmlyc3QvbGFzdCBsaW5lOgorIyMjYmluZCBeWSAgICAgICBmaXJzdGxpbmUg IGdvdG9saW5lCitiaW5kIF5WICAgICAgIGxhc3RsaW5lICAgZ290b2xpbmUKKworIyMgVG9nZ2xl cyBpbiB0aGUgc2VhcmNoIGFuZCByZXBsYWNlIHByb21wdHM6CitiaW5kIF5UICAgICAgIGZsaXBn b3RvICAgZ290b2xpbmUKK2JpbmQgXi8gICAgICAgZmxpcGdvdG8gICBnb3RvbGluZQorCisjIyBJ biB0aGUgZ290b2xpbmUgcHJvbXB0LCBuYXZpZ2F0ZSBieSBwYXJhZ3JhcGg6CitiaW5kIF5XICAg ICAgIGJlZ2lucGFyYSAgZ290b2xpbmUKK2JpbmQgXk8gICAgICAgZW5kcGFyYSAgICBnb3RvbGlu ZQorCisjIyMjIyAgTWVudTogd3JpdGVvdXQKKworIyMgT3BlbiB0aGUgZmlsZSBicm93c2VyIGZy b20gdGhlIHdyaXRlb3V0IG9yIGluc2VydCBwcm9tcHQ6CitiaW5kIF5UICAgICAgIHRvZmlsZXMg ICAgd3JpdGVvdXQKKworIyMgT3B0aW9ucyBpbiB0aGUgd3JpdGUtb3V0IHByb21wdDoKK2JpbmQg XlEgICAgICAgZGlzY2FyZGJ1ZmZlciAgd3JpdGVvdXQKK2JpbmQgTS1EICAgICAgZG9zZm9ybWF0 ICAgICAgd3JpdGVvdXQKK2JpbmQgTS1CICAgICAgYmFja3VwICAgICAgICAgd3JpdGVvdXQKK2Jp bmQgTS1BICAgICAgYXBwZW5kICAgICAgICAgd3JpdGVvdXQKK2JpbmQgTS1QICAgICAgcHJlcGVu ZCAgICAgICAgd3JpdGVvdXQKKworIyMjIyMgIE1lbnU6IGluc2VydAorCisjIyBPcGVuIHRoZSBm aWxlIGJyb3dzZXIgZnJvbSB0aGUgd3JpdGVvdXQgb3IgaW5zZXJ0IHByb21wdDoKK2JpbmQgXlQg ICAgICAgdG9maWxlcyAgICBpbnNlcnQKKworIyMgT3B0aW9ucyBpbiB0aGUgaW5zZXJ0IGFuZCBl eGVjdXRlIHByb21wdHM6CitiaW5kIF5YICAgICAgIGZsaXBleGVjdXRlICAgIGluc2VydAorYmlu ZCBNLU4gICAgICBmbGlwY29udmVydCAgICBpbnNlcnQKK2JpbmQgTS1GICAgICAgZmxpcG5ld2J1 ZmZlciAgaW5zZXJ0CisKKyMjIyMjICBNZW51OiBleGVjdXRlCisKKyMjIEluIGhpc3RvcnktY2Fw YWJsZSBwcm9tcHRzLCBVcC9Eb3duIG5hdmlnYXRlIHRoZSBoaXN0b3J5IGxpc3QgaW5zdGVhZDoK K2JpbmQgVXAgICAgICAgb2xkZXIgICAgICBleGVjdXRlCitiaW5kIERvd24gICAgIG5ld2VyICAg ICAgZXhlY3V0ZQorCisjIyBJbiBoaXN0b3J5LWNhcGFibGUgcHJvbXB0cywgXlAvXk4gbmF2aWdh dGUgdGhlIGhpc3RvcnkgbGlzdDoKK2JpbmQgXlAgICAgICAgb2xkZXIgICAgICBleGVjdXRlCiti aW5kIF5OICAgICAgIG5ld2VyICAgICAgZXhlY3V0ZQorCisjIyBPcHRpb25zIGluIHRoZSBpbnNl cnQgYW5kIGV4ZWN1dGUgcHJvbXB0czoKK2JpbmQgTS1GICAgICAgZmxpcG5ld2J1ZmZlciAgZXhl Y3V0ZQorYmluZCBNLVwgICAgICBmbGlwcGlwZSAgICAgICBleGVjdXRlCitiaW5kIF5WICAgICAg IGN1dHJlc3RvZmZpbGUgIGV4ZWN1dGUKK2JpbmQgXlQgICAgICAgY3V0cmVzdG9mZmlsZSAgZXhl Y3V0ZQorCisjIyBTdXNwZW5kIHRvIHRoZSBiYWNrZ3JvdW5kICh2aWEgdGhlIGV4ZWN1dGUgbWVu dTogXlQgdGhlbiBeWik6CitiaW5kIF5aICAgICAgIHN1c3BlbmQgICAgZXhlY3V0ZQorCisjIyAt LSBKdXN0aWZ5IC0tCitiaW5kIF5KICAgICAgIGZ1bGxqdXN0aWZ5ICBleGVjdXRlCisKKyMjIC0t IFNwZWxsIGNoZWNraW5nLCBsaW50aW5nLCBhbmQgZm9ybWF0dGluZyAtLQorYmluZCBeUyAgICAg ICBzcGVsbGVyICAgIGV4ZWN1dGUKK2JpbmQgXlQgICAgICAgc3BlbGxlciAgICBleGVjdXRlCiti aW5kIF5MICAgICAgIGxpbnRlciAgICAgZXhlY3V0ZQorYmluZCBeTyAgICAgICBmb3JtYXR0ZXIg IGV4ZWN1dGUKKworCisjIyMjIyAgTWVudTogaGVscAorCisjIyBJbiB0aGUgZmlsZSBicm93c2Vy IGFuZCBoZWxwIHZpZXdlciwgQnNwL1NoLURlbCBzY3JvbGwgYSBwYWdlIHVwOgorYmluZCBCc3Ag ICAgICBwYWdldXAgICAgIGhlbHAKK2JpbmQgU2gtRGVsICAgcGFnZXVwICAgICBoZWxwCitiaW5k IFNwYWNlICAgIHBhZ2Vkb3duICAgaGVscAorCisjIyBJbiB0aGUgaGVscCB2aWV3ZXIsIEhvbWUv RW5kIGp1bXAgdG8gdGhlIGZpcnN0L2xhc3QgbGluZToKK2JpbmQgSG9tZSAgICAgZmlyc3RsaW5l ICBoZWxwCitiaW5kIEVuZCAgICAgIGxhc3RsaW5lICAgaGVscAorCisjIyBKdW1wIHRvIHRoZSB2 ZXJ5IGZpcnN0IG9yIGxhc3QgbGluZSBvZiB0aGUgZmlsZToKK2JpbmQgTS1cICAgICAgZmlyc3Rs aW5lICBoZWxwCitiaW5kIF5Ib21lICAgIGZpcnN0bGluZSAgaGVscAorYmluZCBNLS8gICAgICBs YXN0bGluZSAgIGhlbHAKK2JpbmQgXkVuZCAgICAgbGFzdGxpbmUgICBoZWxwCisKKyMjIENsYXNz aWMgRW1hY3Mtc3R5bGUgdXAvZG93biBpbiBtYWluLCBicm93c2VyLCBhbmQgaGVscDoKK2JpbmQg XlAgICAgICAgcHJldmxpbmUgICBoZWxwCitiaW5kIF5OICAgICAgIG5leHRsaW5lICAgaGVscAor CisjIyAtLSBIZWxwLCBleGl0LCBhbmQgY2FuY2VsIC0tCitiaW5kIF5IICAgICAgIGV4aXQgICAg ICAgaGVscAorYmluZCBGMSAgICAgICBleGl0ICAgICAgIGhlbHAKK2JpbmQgXlggICAgICAgZXhp dCAgICAgICBoZWxwCitiaW5kIEYyICAgICAgIGV4aXQgICAgICAgaGVscAorYmluZCBeQyAgICAg ICBleGl0ICAgICAgIGhlbHAKKworIyMgXkIvXkYgbW92ZSB0aGUgY3Vyc29yIGxlZnQvcmlnaHQg aW4gcHJvbXB0cywgc2VhcmNoIGJhY2t3YXJkL2ZvcndhcmQgZWxzZXdoZXJlOgorYmluZCBeQiAg ICAgICB3aGVyZXdhcyAgIGhlbHAKK2JpbmQgXkYgICAgICAgd2hlcmVpcyAgICBoZWxwCisKKwor IyMjIyMgIE1lbnU6IHNwZWxsCisKKworIyMjIyMgIE1lbnU6IGxpbnRlcgorYmluZCBeWCAgICAg ICBjYW5jZWwgICAgIGxpbnRlcgorCisKKyMjIyMjICBNZW51OiBicm93c2VyCisKKyMjIEluIHRo ZSBmaWxlIGJyb3dzZXIgYW5kIGhlbHAgdmlld2VyLCBCc3AvU2gtRGVsIHNjcm9sbCBhIHBhZ2Ug dXA6CitiaW5kIEJzcCAgICAgIHBhZ2V1cCAgICAgYnJvd3NlcgorYmluZCBTaC1EZWwgICBwYWdl dXAgICAgIGJyb3dzZXIKK2JpbmQgU3BhY2UgICAgcGFnZWRvd24gICBicm93c2VyCisKKyMjIElu IHRoZSBicm93c2VyLCBIb21lL0VuZCBqdW1wIHRvIHRoZSBmaXJzdC9sYXN0IGZpbGU6CitiaW5k IEhvbWUgICAgIGZpcnN0ZmlsZSAgYnJvd3NlcgorYmluZCBFbmQgICAgICBsYXN0ZmlsZSAgIGJy b3dzZXIKKworIyMgSW4gdGhlIGZpbGUgYnJvd3NlciwgTS1cIGFuZCBNLS8ganVtcCB0byBmaXJz dC9sYXN0IGZpbGU6CitiaW5kIE0tXCAgICAgIGZpcnN0ZmlsZSAgYnJvd3NlcgorYmluZCBNLS8g ICAgICBsYXN0ZmlsZSAgIGJyb3dzZXIKK2JpbmQgXkhvbWUgICAgZmlyc3RmaWxlICBicm93c2Vy CitiaW5kIF5FbmQgICAgIGxhc3RmaWxlICAgYnJvd3NlcgorCisjIyBDbGFzc2ljIEVtYWNzLXN0 eWxlIHVwL2Rvd24gaW4gbWFpbiwgYnJvd3NlciwgYW5kIGhlbHA6CitiaW5kIF5QICAgICAgIHBy ZXZsaW5lICAgYnJvd3NlcgorYmluZCBeTiAgICAgICBuZXh0bGluZSAgIGJyb3dzZXIKKworIyMg LS0gRXhpdCwgYW5kIGNhbmNlbCAtLQorYmluZCBeWCAgICAgICBleGl0ICAgICAgIGJyb3dzZXIK K2JpbmQgRjIgICAgICAgZXhpdCAgICAgICBicm93c2VyCisjIyBeQyBjYW5jZWxzIGluIHByb21w dHMsIHJlcG9ydHMgcG9zaXRpb24gaW4gbWFpbiwgYW5kIGV4aXRzIGluIGJyb3dzZXIvaGVscDoK K2JpbmQgXkMgICAgICAgZXhpdCAgICAgICBicm93c2VyCisKKyMjIEluIHRoZSBicm93c2VyIGl0 c2VsZiwgXlQgY2xvc2VzIGl0IChzYW1lIGtleSBhcyB1c2VkIHRvIG9wZW4gaXQpOgorYmluZCBe VCAgICAgICBleGl0ICAgICAgIGJyb3dzZXIKKworIyMgXkIvXkYgbW92ZSB0aGUgY3Vyc29yIGxl ZnQvcmlnaHQgaW4gcHJvbXB0cywgc2VhcmNoIGJhY2t3YXJkL2ZvcndhcmQgZWxzZXdoZXJlOgor YmluZCBeQiAgICAgICB3aGVyZXdhcyAgIGJyb3dzZXIKK2JpbmQgXkYgICAgICAgd2hlcmVpcyAg ICBicm93c2VyCisKKyMjIC0tIEZpbGUgYnJvd3NlciBuYXZpZ2F0aW9uIC0tCitiaW5kIE0tRyAg ICAgIGdvdG9kaXIgICAgYnJvd3NlcgorYmluZCBeXyAgICAgICBnb3RvZGlyICAgIGJyb3dzZXIK K2JpbmQgXi8gICAgICAgZ290b2RpciAgICBicm93c2VyCitiaW5kIF5UICAgICAgIGdvdG9kaXIg ICAgYnJvd3NlcgorCisKKyMjIyMjICBNZW51OiB3aGVyZWlzZmlsZQorCisjIyBJbiBoaXN0b3J5 LWNhcGFibGUgcHJvbXB0cywgVXAvRG93biBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0IGluc3Rl YWQ6CitiaW5kIFVwICAgICAgIG9sZGVyICAgICAgd2hlcmVpc2ZpbGUKK2JpbmQgRG93biAgICAg bmV3ZXIgICAgICB3aGVyZWlzZmlsZQorCisjIyBJbiB0aGUgZmlsZSBicm93c2VyJ3Mgc2VhcmNo IHByb21wdCwgXlkvXlYganVtcCB0byBmaXJzdC9sYXN0IGZpbGU6CisjIyNiaW5kIF5ZICAgICAg IGZpcnN0ZmlsZSAgd2hlcmVpc2ZpbGUKK2JpbmQgXlYgICAgICAgbGFzdGZpbGUgICB3aGVyZWlz ZmlsZQorCisjIyBJbiB0aGUgZmlsZSBicm93c2VyLCBNLVwgYW5kIE0tLyBqdW1wIHRvIGZpcnN0 L2xhc3QgZmlsZToKK2JpbmQgTS1cICAgICAgZmlyc3RmaWxlICB3aGVyZWlzZmlsZQorYmluZCBN LS8gICAgICBsYXN0ZmlsZSAgIHdoZXJlaXNmaWxlCisKKyMjIEluIGhpc3RvcnktY2FwYWJsZSBw cm9tcHRzLCBeUC9eTiBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0OgorYmluZCBeUCAgICAgICBv bGRlciAgICAgIHdoZXJlaXNmaWxlCitiaW5kIF5OICAgICAgIG5ld2VyICAgICAgd2hlcmVpc2Zp bGUKKworCisjIyMjIyAgTWVudTogZ290b2RpcgorCisKZGlmZiAtLWdpdCBhL2RvYy9vcmlnaW5h bC5uYW5vcmMuaW4gYi9kb2Mvb3JpZ2luYWwubmFub3JjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi5iZmNiZTNjOAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9vcmlnaW5h bC5uYW5vcmMuaW4KQEAgLTAsMCArMSw3NjUgQEAKKyMjIFNhbXBsZSBpbml0aWFsaXphdGlvbiBm aWxlIGZvciBHTlUgbmFuby4KKyMjCisjIyBGb3IgdGhlIG9wdGlvbnMgdGhhdCB0YWtlIHBhcmFt ZXRlcnMsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIHNob3duLgorIyMgT3RoZXIgb3B0aW9ucyBhcmUg dW5zZXQgYnkgZGVmYXVsdC4gIFRvIG1ha2Ugc3VyZSB0aGF0IGFuIG9wdGlvbgorIyMgaXMgZGlz YWJsZWQsIHlvdSBjYW4gdXNlICJ1bnNldCA8b3B0aW9uPiIuCisjIworIyMgQ2hhcmFjdGVycyB0 aGF0IGFyZSBzcGVjaWFsIGluIGEgc2hlbGwgc2hvdWxkIG5vdCBiZSBlc2NhcGVkIGhlcmUuCisj IyBJbnNpZGUgc3RyaW5nIHBhcmFtZXRlcnMsIHF1b3RlcyBzaG91bGQgbm90IGJlIGVzY2FwZWQg LS0gdGhlIGxhc3QKKyMjIGRvdWJsZSBxdW90ZSBvbiB0aGUgbGluZSB3aWxsIGJlIHNlZW4gYXMg dGhlIGNsb3NpbmcgcXVvdGUuCisKKyMjIElmIHlvdSB3YW50IF5GLCBeQiwgTS1GIGFuZCBNLUIg dG8gZG8gd2hhdCB0aGV5IGRpZCBiZWZvcmUgdmVyc2lvbiA4LjA6CisjIGJpbmQgXkYgZm9yd2Fy ZCBtYWluCisjIGJpbmQgXkIgYmFjayBtYWluCisjIGJpbmQgTS1GIGZvcm1hdHRlciBtYWluCisj IGJpbmQgTS1CIGxpbnRlciBtYWluCisKKyMjIE1ha2UgTS08IGFuZCBNLT4gc3dpdGNoIGJldHdl ZW4gYnVmZmVycywgYXMgdGhleSBkaWQgYmVmb3JlIHZlcnNpb24gOS4wOgorIyBiaW5kIE0tPCBw cmV2YnVmIG1haW4KKyMgYmluZCBNLT4gbmV4dGJ1ZiBtYWluCisKKyMjIE1ha2UgJ25leHR3b3Jk JyAoQ3RybCtSaWdodCkgYW5kICdjaG9wd29yZHJpZ2h0JyAoQ3RybCtEZWxldGUpCisjIyBzdG9w IGF0IHdvcmQgZW5kcyBpbnN0ZWFkIG9mIGF0IGJlZ2lubmluZ3MuCisjIHNldCBhZnRlcmVuZHMK KworIyMgV2hlbiBzb2Z0IGxpbmUgd3JhcHBpbmcgaXMgZW5hYmxlZCwgbWFrZSBpdCB3cmFwIGxp bmVzIGF0IGJsYW5rcworIyMgKHRhYnMgYW5kIHNwYWNlcykgaW5zdGVhZCBvZiBhbHdheXMgYXQg dGhlIGVkZ2Ugb2YgdGhlIHNjcmVlbi4KKyMgc2V0IGF0YmxhbmtzCisKKyMjIEF1dG9tYXRpY2Fs bHkgaW5kZW50IGEgbmV3bHkgY3JlYXRlZCBsaW5lIHRvIHRoZSBzYW1lIG51bWJlciBvZgorIyMg dGFicyBhbmQvb3Igc3BhY2VzIGFzIHRoZSBwcmVjZWRpbmcgbGluZSAtLSBvciBhcyB0aGUgbmV4 dCBsaW5lCisjIyBpZiB0aGUgcHJlY2VkaW5nIGxpbmUgaXMgdGhlIGJlZ2lubmluZyBvZiBhIHBh cmFncmFwaC4KKyMgc2V0IGF1dG9pbmRlbnQKKworIyMgQmFjayB1cCBmaWxlcyB0byB0aGUgY3Vy cmVudCBmaWxlbmFtZSBwbHVzIGEgdGlsZGUuCisjIHNldCBiYWNrdXAKKworIyMgVGhlIGRpcmVj dG9yeSB0byBwdXQgdW5pcXVlIGJhY2t1cCBmaWxlcyBpbi4KKyMgc2V0IGJhY2t1cGRpciAiIgor CisjIyBVc2UgYm9sZCB0ZXh0IGluc3RlYWQgb2YgcmV2ZXJzZSB2aWRlbyB0ZXh0LgorIyBzZXQg Ym9sZHRleHQKKworIyMgVHJlYXQgYW55IGxpbmUgd2l0aCBsZWFkaW5nIHdoaXRlc3BhY2UgYXMg dGhlIGJlZ2lubmluZyBvZiBhIHBhcmFncmFwaC4KKyMgc2V0IGJvb2tzdHlsZQorCisjIyBUaGUg Y2hhcmFjdGVycyB0cmVhdGVkIGFzIGNsb3NpbmcgYnJhY2tldHMgd2hlbiBqdXN0aWZ5aW5nIHBh cmFncmFwaHMuCisjIyBUaGlzIG1heSBub3QgaW5jbHVkZSBhbnkgYmxhbmsgY2hhcmFjdGVycy4g IE9ubHkgY2xvc2luZyBwdW5jdHVhdGlvbiwKKyMjIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgdGhl c2UgY2xvc2luZyBicmFja2V0cywgY2FuIGVuZCBzZW50ZW5jZXMuCisjIHNldCBicmFja2V0cyAi IicpPl19IgorCisjIyBBdXRvbWF0aWNhbGx5IGhhcmQtd3JhcCB0aGUgY3VycmVudCBsaW5lIHdo ZW4gaXQgYmVjb21lcyBvdmVybG9uZy4KKyMgc2V0IGJyZWFrbG9uZ2xpbmVzCisKKyMjIERvIGNh c2Utc2Vuc2l0aXZlIHNlYXJjaGVzIGJ5IGRlZmF1bHQuCisjIHNldCBjYXNlc2Vuc2l0aXZlCisK KyMjIEludGVycHJldCBkaWdpdHMgYWZ0ZXIgYSBjb2xvbiBhZnRlciBhIGZpbGVuYW1lIChvbiB0 aGUgY29tbWFuZCBsaW5lKQorIyMgYXMgdGhlIGxpbmUgbnVtYmVyIHRvIGdvIHRvIGluIHRoYXQg ZmlsZS4KKyMgc2V0IGNvbG9ucGFyc2luZworCisjIyBDb25zdGFudGx5IHJlcG9ydCB0aGUgY3Vy c29yIHBvc2l0aW9uLCBpbiB0aGUgc3RhdHVzIGJhciBvciBtaW5pYmFyLgorIyBzZXQgY29uc3Rh bnRzaG93CisKKyMjIFVzZSBjdXQtZnJvbS1jdXJzb3ItdG8tZW5kLW9mLWxpbmUgYnkgZGVmYXVs dC4KKyMgc2V0IGN1dGZyb21jdXJzb3IKKworIyMgRG8gbm90IHVzZSB0aGUgbGluZSBiZWxvdyB0 aGUgdGl0bGUgYmFyLCBsZWF2aW5nIGl0IGVudGlyZWx5IGJsYW5rLgorIyBzZXQgZW1wdHlsaW5l CisKKyMjIFNldCB0aGUgdGFyZ2V0IHdpZHRoIGZvciBhdXRvbWF0aWMgaGFyZC13cmFwcGluZyBh bmQgZm9yIGp1c3RpZnlpbmcKKyMjIHBhcmFncmFwaHMuICBJZiB0aGUgc3BlY2lmaWVkIHZhbHVl IGlzIDAgb3IgbGVzcywgdGhlIHdyYXBwaW5nIHBvaW50CisjIyB3aWxsIGJlIHRoZSB0ZXJtaW5h bCdzIHdpZHRoIG1pbnVzIHRoaXMgbnVtYmVyLgorIyBzZXQgZmlsbCAtOAorCisjIyBEcmF3IGEg dmVydGljYWwgc3RyaXBlIGF0IHRoZSBnaXZlbiBjb2x1bW4sIHRvIGhlbHAganVkZ2UgdGV4dCB3 aWR0aC4KKyMjIChUaGlzIG9wdGlvbiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZS4pCisj IHNldCBndWlkZXN0cmlwZSA3NQorCisjIyBSZW1lbWJlciB0aGUgdXNlZCBzZWFyY2gvcmVwbGFj ZS9jb21tYW5kIHN0cmluZ3MgZm9yIHRoZSBuZXh0IHNlc3Npb24uCisjIHNldCBoaXN0b3J5bG9n CisKKyMjIERpc3BsYXkgYSAic2Nyb2xsYmFyIiBvbiB0aGUgcmlnaHRoYW5kIHNpZGUgb2YgdGhl IGVkaXQgd2luZG93LgorIyBzZXQgaW5kaWNhdG9yCisKKyMjIFNjcm9sbCB0aGUgYnVmZmVyIGNv bnRlbnRzIHBlciBoYWxmLXNjcmVlbiBpbnN0ZWFkIG9mIHBlciBsaW5lLgorIyBzZXQganVtcHlz Y3JvbGxpbmcKKworIyMgRGlzcGxheSBsaW5lIG51bWJlcnMgdG8gdGhlIGxlZnQgKGFuZCBhbnkg YW5jaG9ycyBpbiB0aGUgbWFyZ2luKS4KKyMgc2V0IGxpbmVudW1iZXJzCisKKyMjIExldCBvdGhl ciB1c2VycyAob2YgbmFubyBvciB2aW0pIGtub3cgdGhhdCB5b3UgYXJlIGVkaXRpbmcgdGhlIGZp bGUKKyMjIHRoZXkgYXJlIHRyeWluZyB0byBlZGl0LCBhbmQgdGhlIG90aGVyIHdheSBhcm91bmQu CisjIHNldCBsb2NraW5nCisKKyMjIEZhbGwgYmFjayB0byBzbG93IGxpYm1hZ2ljIHRvIHRyeSBh bmQgZGV0ZXJtaW5lIGFuIGFwcGxpY2FibGUgc3ludGF4LgorIyBzZXQgbWFnaWMKKworIyMgVGhl IG9wZW5pbmcgYW5kIGNsb3NpbmcgYnJhY2tldHMgdGhhdCBhcmUgZm91bmQgYnkgYSBtYXRjaGlu Zy1icmFja2V0CisjIyBzZWFyY2guICBUaGlzIG1heSBub3QgY29udGFpbiBibGFuayBjaGFyYWN0 ZXJzLiAgVGhlIG9wZW5pbmcgYnJhY2tldHMKKyMjIG11c3QgY29tZSBiZWZvcmUgdGhlIGNsb3Np bmcgb25lcywgYW5kIHRoZXkgbXVzdCBiZSBpbiB0aGUgc2FtZSBvcmRlci4KKyMgc2V0IG1hdGNo YnJhY2tldHMgIig8W3spPl19IgorCisjIyBTdXBwcmVzcyB0aGUgdGl0bGUgYmFyIGFuZCBzaG93 IHRoZSBmaWxlbmFtZSBwbHVzIGEgY3Vyc29yLXBvc2l0aW9uCisjIyBwZXJjZW50YWdlIGluIHRo ZSBzcGFjZSBvZiB0aGUgc3RhdHVzIGJhci4KKyMgc2V0IG1pbmliYXIKKworIyMgRW5hYmxlIG1v dXNlIHN1cHBvcnQsIGlmIGF2YWlsYWJsZSBmb3IgeW91ciBzeXN0ZW0uICBXaGVuIGVuYWJsZWQs CisjIyBtb3VzZSBjbGlja3MgY2FuIGJlIHVzZWQgdG8gcGxhY2UgdGhlIGN1cnNvciwgc2V0IHRo ZSBtYXJrICh3aXRoCisjIyB0d28gY2xpY2tzKSwgYW5kIGV4ZWN1dGUgc2hvcnRjdXRzLiAgVGhl IG1vdXNlIHdpbGwgd29yayBpbiB0aGUKKyMjIFggV2luZG93IFN5c3RlbSwgYW5kIG9uIHRoZSBj b25zb2xlIHdoZW4gZ3BtIGlzIHJ1bm5pbmcuCisjIHNldCBtb3VzZQorCisjIyBTd2l0Y2ggb24g bXVsdGlwbGUgZmlsZSBidWZmZXJzIChpbnNlcnRpbmcgYSBmaWxlIHdpbGwgcHV0IGl0IGludG8K KyMjIGEgc2VwYXJhdGUgYnVmZmVyKS4KKyMgc2V0IG11bHRpYnVmZmVyCisKKyMjIERvbid0IGNv bnZlcnQgZmlsZXMgZnJvbSBET1MgZm9ybWF0LgorIyBzZXQgbm9jb252ZXJ0CisKKyMjIERvbid0 IGRpc3BsYXkgdGhlIGhlbHBmdWwgc2hvcnRjdXQgbGlzdHMgYXQgdGhlIGJvdHRvbSBvZiB0aGUg c2NyZWVuLgorIyBzZXQgbm9oZWxwCisKKyMjIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIGEgbmV3 bGluZSB3aGVuIGEgZmlsZSBkb2VzIG5vdCBlbmQgd2l0aCBvbmUuCisjIHNldCBub25ld2xpbmVz CisKKyMjIFNldCBvcGVyYXRpbmcgZGlyZWN0b3J5LiAgbmFubyB3aWxsIG5vdCByZWFkIG9yIHdy aXRlIGZpbGVzIG91dHNpZGUKKyMjIHRoaXMgZGlyZWN0b3J5IGFuZCBpdHMgc3ViZGlyZWN0b3Jp ZXMuICBBbHNvLCB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyMjIGlzIGNoYW5nZWQgdG8gaGVyZSwg c28gYW55IGZpbGVzIGFyZSBpbnNlcnRlZCBmcm9tIHRoaXMgZGlyLiAgQSBibGFuaworIyMgc3Ry aW5nIG1lYW5zIHRoZSBvcGVyYXRpbmctZGlyZWN0b3J5IGZlYXR1cmUgaXMgdHVybmVkIG9mZi4K KyMgc2V0IG9wZXJhdGluZ2RpciAiIgorCisjIyBSZW1lbWJlciB0aGUgcG9zaXRpb24gb2YgY3Vy c29yIGFuZCBhbmNob3JzIGZvciB0aGUgbmV4dCBlZGl0aW5nIHNlc3Npb24uCisjIHNldCBwb3Np dGlvbmxvZworCisjIyBQcmVzZXJ2ZSB0aGUgWE9OIGFuZCBYT0ZGIGtleXMgKF5RIGFuZCBeUyku CisjIHNldCBwcmVzZXJ2ZQorCisjIyBUaGUgY2hhcmFjdGVycyB0cmVhdGVkIGFzIGNsb3Npbmcg cHVuY3R1YXRpb24gd2hlbiBqdXN0aWZ5aW5nIHBhcmFncmFwaHMuCisjIyBUaGlzIG1heSBub3Qg Y29udGFpbiBibGFuayBjaGFyYWN0ZXJzLiAgT25seSB0aGVzZSB0ZXJtaW5hdGluZyBjaGFyYWN0 ZXJzLAorIyMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBjbG9zaW5nIGJyYWNrZXRzLCBjYW4gZW5k IHNlbnRlbmNlcy4KKyMgc2V0IHB1bmN0ICIhLj8iCisKKyMjIE1ha2Ugc3RhdHVzLWJhciBtZXNz YWdlcyBkaXNhcHBlYXIgYWZ0ZXIgMSBrZXlzdHJva2UgaW5zdGVhZCBvZiBhZnRlciAyMC4KKyMg c2V0IHF1aWNrYmxhbmsKKworIyMgVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMg cXVvdGluZyBjaGFyYWN0ZXJzIGluIGVtYWlsCisjIyBvciBsaW5lLWNvbW1lbnQgaW50cm9kdWNl cnMgaW4gc291cmNlIGNvZGUuICBUaGUgZGVmYXVsdCBpczoKKyMgc2V0IHF1b3Rlc3RyICJeKFsg CV0qKFshIyU6Oz58fV18Ly8pKSsiCisKKyMjIFRyeSB0byB3b3JrIGFyb3VuZCBhIG1pc21hdGNo aW5nIHRlcm1pbmZvIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgorIyBzZXQgcmF3c2VxdWVuY2VzCisK KyMjIEZpeCBCYWNrc3BhY2UvRGVsZXRlIGNvbmZ1c2lvbiBwcm9ibGVtLgorIyBzZXQgcmViaW5k ZGVsZXRlCisKKyMjIERvIHJlZ3VsYXItZXhwcmVzc2lvbiBzZWFyY2hlcyBieSBkZWZhdWx0Lgor IyMgUmVndWxhciBleHByZXNzaW9ucyBhcmUgb2YgdGhlIGV4dGVuZGVkIHR5cGUgKEVSRSkuCisj IHNldCByZWdleHAKKworIyMgU2F2ZSBhIGNoYW5nZWQgYnVmZmVyIGF1dG9tYXRpY2FsbHkgb24g ZXhpdDsgZG9uJ3QgcHJvbXB0LgorIyBzZXQgc2F2ZW9uZXhpdAorCisjIyBQdXQgdGhlIGN1cnNv ciBvbiB0aGUgaGlnaGxpZ2h0ZWQgaXRlbSBpbiB0aGUgZmlsZSBicm93c2VyLCBhbmQKKyMjIHNo b3cgdGhlIGN1cnNvciBpbiB0aGUgaGVscCB2aWV3ZXI7IHVzZWZ1bCBmb3IgcGVvcGxlIHdobyB1 c2UgYQorIyMgYnJhaWxsZSBkaXNwbGF5IGFuZCBwZW9wbGUgd2l0aCBwb29yIHZpc2lvbi4KKyMg c2V0IHNob3djdXJzb3IKKworIyMgTWFrZSB0aGUgSG9tZSBrZXkgc21hcnRlcjogd2hlbiBIb21l IGlzIHByZXNzZWQgYW55d2hlcmUgYnV0IGF0IHRoZQorIyMgdmVyeSBiZWdpbm5pbmcgb2Ygbm9u LXdoaXRlc3BhY2UgY2hhcmFjdGVycyBvbiBhIGxpbmUsIHRoZSBjdXJzb3IKKyMjIHdpbGwganVt cCB0byB0aGF0IGJlZ2lubmluZyAoZWl0aGVyIGZvcndhcmRzIG9yIGJhY2t3YXJkcykuICBJZiB0 aGUKKyMjIGN1cnNvciBpcyBhbHJlYWR5IGF0IHRoYXQgcG9zaXRpb24sIGl0IHdpbGwganVtcCB0 byB0aGUgdHJ1ZSBzdGFydAorIyMgb2YgdGhlIGxpbmUgKHRoZSBsZWZ0IGVkZ2UpLgorIyBzZXQg c21hcnRob21lCisKKyMjIFNwcmVhZCBvdmVybG9uZyBsaW5lcyBvdmVyIG11bHRpcGxlIHNjcmVl biBsaW5lcy4KKyMgc2V0IHNvZnR3cmFwCisKKyMjIFNjcm9sbCBvbmx5IHRoZSBjdXJyZW50IGxp bmUgc2lkZXdheXMgKGluc3RlYWQgb2YgYWxsIGxpbmVzKS4KKyMgc2V0IHNvbG9zaWRlc2Nyb2xs CisKKyMjIFVzZSB0aGlzIHNwZWxsaW5nIGNoZWNrZXIgaW5zdGVhZCBvZiB0aGUgaW50ZXJuYWwg b25lLiAgVGhpcyBvcHRpb24KKyMjIGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlLgorIyBz ZXQgc3BlbGxlciAiYXNwZWxsIC14IC1jIgorCisjIyBVc2UgdGhlIGVuZCBvZiB0aGUgdGl0bGUg YmFyIGZvciBzb21lIHN0YXRlIGZsYWdzOiBJID0gYXV0by1pbmRlbnRpbmcsCisjIyBNID0gbWFy aywgTCA9IGhhcmQtd3JhcHBpbmcgbG9uZyBsaW5lcywgUiA9IHJlY29yZGluZywgUyA9IHNvZnQt d3JhcHBpbmcuCisjIHNldCBzdGF0ZWZsYWdzCisKKyMjIFVzZSB0aGlzIHRhYiBzaXplIGluc3Rl YWQgb2YgdGhlIGRlZmF1bHQ7IGl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuCisjIHNldCB0YWJz aXplIDgKKworIyMgQ29udmVydCBlYWNoIHR5cGVkIHRhYiB0byB0aGUgZml0dGluZyBudW1iZXIg b2Ygc3BhY2VzLgorIyBzZXQgdGFic3Rvc3BhY2VzCisKKyMjIFNuaXAgd2hpdGVzcGFjZSBhdCB0 aGUgZW5kIG9mIGxpbmVzIHdoZW4ganVzdGlmeWluZyBvciBoYXJkLXdyYXBwaW5nLgorIyBzZXQg dHJpbWJsYW5rcworCisjIyBTYXZlIGZpbGVzIGFsd2F5cyBpbiBVbml4IGZvcm1hdCAoYWxzbyB3 aGVuIHRoZXkgd2VyZSBET1MpLgorIyBzZXQgdW5peAorCisjIyBUaGUgdHdvIHNpbmdsZS1jb2x1 bW4gY2hhcmFjdGVycyB1c2VkIHRvIGRpc3BsYXkgdGhlIGZpcnN0IGNoYXJhY3RlcnMKKyMjIG9m IHRhYnMgYW5kIHNwYWNlcy4gIDE4NyBpbiBJU08gODg1OS0xICgwMDAwQkIgaW4gVW5pY29kZSkg YW5kIDE4MyBpbgorIyMgSVNPLTg4NTktMSAoMDAwMEI3IGluIFVuaWNvZGUpIHNlZW0gdG8gYmUg Z29vZCB2YWx1ZXMgZm9yIHRoZXNlLgorIyMgVGhlIGRlZmF1bHQgd2hlbiBpbiBhIFVURi04IGxv Y2FsZToKKyMgc2V0IHdoaXRlc3BhY2UgIsK7wrciCisjIyBUaGUgZGVmYXVsdCBvdGhlcndpc2U6 CisjIHNldCB3aGl0ZXNwYWNlICI+LiIKKworIyMgRGV0ZWN0IHdvcmQgYm91bmRhcmllcyBkaWZm ZXJlbnRseSBieSB0cmVhdGluZyBwdW5jdHVhdGlvbgorIyMgY2hhcmFjdGVycyBhcyBwYXJ0cyBv ZiB3b3Jkcy4KKyMgc2V0IHdvcmRib3VuZHMKKworIyMgVGhlIGNoYXJhY3RlcnMgKGJlc2lkZXMg YWxwaGFudW1lcmljIG9uZXMpIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQKKyMjIGFzIHBhcnRz IG9mIHdvcmRzLiAgVGhpcyBvcHRpb24gZG9lcyBub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUuICBX aGVuCisjIyBzZXQsIGl0IG92ZXJyaWRlcyBvcHRpb24gJ3NldCB3b3JkYm91bmRzJy4KKyMgc2V0 IHdvcmRjaGFycyAiPF8+LiIKKworIyMgTGV0IGFuIHVubW9kaWZpZWQgQmFja3NwYWNlIG9yIERl bGV0ZSBlcmFzZSB0aGUgbWFya2VkIHJlZ2lvbiAoaW5zdGVhZAorIyMgb2YgYSBzaW5nbGUgY2hh cmFjdGVyLCBhbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIGN1dGJ1ZmZlcikuCisjIHNldCB6YXAK KworIyMgSGlkZSB0aGUgYmFycyBwbHVzIGhlbHAgbGluZXMgYW5kIHVzZSB0aGUgd2hvbGUgdGVy bWluYWwgYXMgZWRpdCBhcmVhLgorIyBzZXQgemVybworCisKKyMjIFBhaW50IHRoZSBpbnRlcmZh Y2UgZWxlbWVudHMgb2YgbmFuby4gIFRoZXNlIGFyZSBleGFtcGxlczsgdGhlcmUgYXJlCisjIyBu byBjb2xvcnMgYnkgZGVmYXVsdCwgZXhjZXB0IGZvciBlcnJvcmNvbG9yIGFuZCBzcG90bGlnaHRj b2xvci4KKyMgc2V0IHRpdGxlY29sb3IgYm9sZCx3aGl0ZSxibHVlCisjIHNldCBwcm9tcHRjb2xv ciBsaWdodHdoaXRlLGdyZXkKKyMgc2V0IHN0YXR1c2NvbG9yIGJvbGQsd2hpdGUsZ3JlZW4KKyMg c2V0IGVycm9yY29sb3IgYm9sZCx3aGl0ZSxyZWQKKyMgc2V0IHNwb3RsaWdodGNvbG9yIGJsYWNr LGxpZ2h0eWVsbG93CisjIHNldCBzZWxlY3RlZGNvbG9yIGxpZ2h0d2hpdGUsIzgwNAorIyBzZXQg c3RyaXBlY29sb3IgLCM0NDQKKyMgc2V0IHNjcm9sbGVyY29sb3Igc2xhdGUsIzIyMgorIyBzZXQg bnVtYmVyY29sb3IgY3lhbgorIyBzZXQga2V5Y29sb3IgY3lhbgorIyBzZXQgZnVuY3Rpb25jb2xv ciBncmVlbgorCisjIyBJbiByb290J3MgLm5hbm9yYyB5b3UgbWlnaHQgd2FudCB0byB1c2U6Cisj IHNldCB0aXRsZWNvbG9yIGJvbGQsd2hpdGUsbWFnZW50YQorIyBzZXQgcHJvbXB0Y29sb3IgYmxh Y2sseWVsbG93CisjIHNldCBzdGF0dXNjb2xvciBib2xkLHdoaXRlLG1hZ2VudGEKKyMgc2V0IGVy cm9yY29sb3IgYm9sZCx3aGl0ZSxyZWQKKyMgc2V0IHNwb3RsaWdodGNvbG9yIGJsYWNrLG9yYW5n ZQorIyBzZXQgc2VsZWN0ZWRjb2xvciBsaWdodHdoaXRlLGN5YW4KKyMgc2V0IHN0cmlwZWNvbG9y ICx5ZWxsb3cKKyMgc2V0IHNjcm9sbGVyY29sb3IgbWFnZW50YQorIyBzZXQgbnVtYmVyY29sb3Ig bWFnZW50YQorIyBzZXQga2V5Y29sb3IgbGlnaHRtYWdlbnRhCisjIHNldCBmdW5jdGlvbmNvbG9y IG1hZ2VudGEKKworCisjIyA9PT0gU3ludGF4IGNvbG9yaW5nID09PQorIyMgRm9yIGFsbCBkZXRh aWxzLCBzZWUgJ21hbiBuYW5vcmMnLCBzZWN0aW9uIFNZTlRBWCBISUdITElHSFRJTkcuCisKKyMj IFRvIGluY2x1ZGUgbW9zdCBvZiB0aGUgZXhpc3Rpbmcgc3ludGF4IGRlZmluaXRpb25zLCB5b3Ug Y2FuIGRvOgorIyBpbmNsdWRlIEBQS0dEQVRBRElSQC8qLm5hbm9yYworCisjIyBPciB5b3UgY2Fu IHNlbGVjdCBqdXN0IHRoZSBvbmVzIHlvdSBuZWVkLiAgRm9yIGV4YW1wbGU6CisjIGluY2x1ZGUg QFBLR0RBVEFESVJAL2h0bWwubmFub3JjCisjIGluY2x1ZGUgQFBLR0RBVEFESVJAL3B5dGhvbi5u YW5vcmMKKyMgaW5jbHVkZSBAUEtHREFUQURJUkAvc2gubmFub3JjCisKKyMjIEluIEBQS0dEQVRB RElSQC9leHRyYS8geW91IGNhbiBmaW5kIHNvbWUgc3ludGF4ZXMgdGhhdCBhcmUKKyMjIHNwZWNp ZmljIGZvciBjZXJ0YWluIGRpc3Ryb3Mgb3IgZm9yIHNvbWUgbGVzcyBjb21tb24gbGFuZ3VhZ2Vz LgorCisKKyMjIElmIDxUYWI+IHNob3VsZCBhbHdheXMgcHJvZHVjZSBmb3VyIHNwYWNlcyB3aGVu IGVkaXRpbmcgYSBQeXRob24gZmlsZSwKKyMjIGluZGVwZW5kZW50IG9mIHRoZSBzZXR0aW5ncyBv ZiAndGFic2l6ZScgYW5kICd0YWJzdG9zcGFjZXMnOgorIyBleHRlbmRzeW50YXggcHl0aG9uIHRh YmdpdmVzICIgICAgIgorCisKKyMjID09PSBLZXkgYmluZGluZ3MgPT09CisjIyBGb3IgYWxsIGRl dGFpbHMsIHNlZSAnbWFuIG5hbm9yYycsIHNlY3Rpb24gUkVCSU5ESU5HIEtFWVMuCisjIworIyMg QWxsIG9mIG5hbm8ncyBkZWZhdWx0IGtleSBiaW5kaW5ncyBhcmUgZGVmaW5lZCBoZXJlLiAgU2lu Y2Ugbm8gYmluZGluZ3MKKyMjIGFyZSBjb21waWxlZCBpbiwgdGhpcyBmaWxlIChvciB5b3VyIG93 biBuYW5vcmMpIG11c3QgYmUgcHJlc2VudCBmb3IgdGhlCisjIyBlZGl0b3IgdG8gd29yay4gIE5h bm8gd2lsbCByZWZ1c2UgdG8gc3RhcnQgaWYgbm8ga2V5IGlzIGJvdW5kIHRvICJleGl0IgorIyMg aW4gdGhlIG1haW4gbWVudS4KKyMjCisjIyBUbyBjaGFuZ2UgYSBiaW5kaW5nLCBlZGl0IHRoZSBr ZXkgc3RyaW5nIG9uIGl0cyBsaW5lLgorIyMgVG8gZGlzYWJsZSBhIGJpbmRpbmcsIGNvbW1lbnQg b3V0IG9yIGRlbGV0ZSBpdHMgbGluZS4KKyMjIFRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlICd1bmJp bmQnIGJlZm9yZSBhc3NpZ25pbmcgYSBrZXk7IGEgbmV3IGFzc2lnbm1lbnQKKyMjIGF1dG9tYXRp Y2FsbHkgc2hhZG93cyBhbnkgZWFybGllciBvbmUgZm9yIHRoZSBzYW1lIGtleSBpbiB0aGUgc2Ft ZSBtZW51LgorIyMKKyMjIEVhY2ggJ2JpbmQnIGxpbmUgYWNjZXB0cyBleGFjdGx5IG9uZSBtZW51 IG5hbWUuICBWYWxpZCBtZW51IG5hbWVzIGFyZToKKyMjICAgbWFpbiAgc2VhcmNoICByZXBsYWNl ICByZXBsYWNld2l0aCAgeWVzbm8gIGdvdG9saW5lICB3cml0ZW91dCAgaW5zZXJ0CisjIyAgIGV4 ZWN1dGUgIGhlbHAgIHNwZWxsICBsaW50ZXIgIGJyb3dzZXIgIHdoZXJlaXNmaWxlICBnb3RvZGly ICBhbGwKKyMjICJhbGwiIGNvdmVycyBldmVyeSBtZW51LiAgTGF0ZXIgbGluZXMgdGFrZSBwcmVj ZWRlbmNlIG92ZXIgZWFybGllciBvbmVzCisjIyBmb3IgdGhlIHNhbWUga2V5IGFuZCBtZW51LCBz byBnZW5lcmFsIGJpbmRpbmdzIGNvbWUgZmlyc3QgaGVyZSBhbmQKKyMjIG1lbnUtc3BlY2lmaWMg b3ZlcnJpZGVzIGNvbWUgYWZ0ZXIuCisjIworIyMgRm9yIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGZ1 bmN0aW9uIG5hbWVzLCBzZWUgJ21hbiBuYW5vcmMnLgorCisKKyMjIyMjIE1lbnU6IGFsbAorCisj IyAtLSBUZXh0IGVudHJ5IGFuZCBkZWxldGlvbiAtLQorYmluZCBFbnRlciAgICBlbnRlciAgICAg IGFsbAorYmluZCBeTSAgICAgICBlbnRlciAgICAgIGFsbAorYmluZCBUYWIgICAgICB0YWIgICAg ICAgIGFsbAorYmluZCBeSSAgICAgICB0YWIgICAgICAgIGFsbAorCisjIyBCYWNrc3BhY2UgYW5k IERlbGV0ZSB3b3JrIHRoZSBzYW1lIGluIGFsbCBwcm9tcHQgbWVudXM6CitiaW5kIEJzcCAgICAg IGJhY2tzcGFjZSAgYWxsCitiaW5kIFNoLURlbCAgIGJhY2tzcGFjZSAgYWxsCitiaW5kIERlbCAg ICAgIGRlbGV0ZSAgICAgYWxsCitiaW5kIF5IICAgICAgIGJhY2tzcGFjZSAgYWxsCitiaW5kIF5E ICAgICAgIGRlbGV0ZSAgICAgYWxsCisKKyMjIC0tIEN1cnNvciBtb3ZlbWVudCAtLQorYmluZCBM ZWZ0ICAgICBiYWNrICAgICAgIGFsbAorYmluZCBSaWdodCAgICBmb3J3YXJkICAgIGFsbAorYmlu ZCBVcCAgICAgICBwcmV2bGluZSAgIGFsbAorYmluZCBEb3duICAgICBuZXh0bGluZSAgIGFsbAor CisjIyBXb3JkLWxldmVsIG1vdmVtZW50OgorYmluZCBeTGVmdCAgICBwcmV2d29yZCAgIGFsbAor YmluZCBeUmlnaHQgICBuZXh0d29yZCAgIGFsbAorYmluZCBNLVNwYWNlICBwcmV2d29yZCAgIGFs bAorYmluZCBeU3BhY2UgICBuZXh0d29yZCAgIGFsbAorCisjIyBCZWdpbm5pbmcgYW5kIGVuZCBv ZiBsaW5lOgorYmluZCBIb21lICAgICBob21lICAgICAgIGFsbAorYmluZCBFbmQgICAgICBlbmQg ICAgICAgIGFsbAorYmluZCBeQSAgICAgICBob21lICAgICAgIGFsbAorYmluZCBeRSAgICAgICBl bmQgICAgICAgIGFsbAorCisjIyBQYWdlIHVwL2Rvd246CitiaW5kIFBnVXAgICAgIHBhZ2V1cCAg ICAgYWxsCitiaW5kIFBnRG4gICAgIHBhZ2Vkb3duICAgYWxsCitiaW5kIF5ZICAgICAgIHBhZ2V1 cCAgICAgYWxsCitiaW5kIF5WICAgICAgIHBhZ2Vkb3duICAgYWxsCitiaW5kIEY3ICAgICAgIHBh Z2V1cCAgICAgYWxsCitiaW5kIEY4ICAgICAgIHBhZ2Vkb3duICAgYWxsCisKKyMjIFJlZnJlc2gg dGhlIHNjcmVlbjsgaW4gbWFpbiwgYWxzbyBjZW50ZXJzIHRoZSBjdXJzb3IgbGluZToKK2JpbmQg XkwgICAgICAgcmVmcmVzaCAgICBhbGwKKworIyMgLS0gSGVscCwgZXhpdCwgYW5kIGNhbmNlbCAt LQorYmluZCBeRyAgICAgICBoZWxwICAgICAgIGFsbAorYmluZCBGMSAgICAgICBoZWxwICAgICAg IGFsbAorCisjIyBeQyBjYW5jZWxzIGluIHByb21wdHMsIHJlcG9ydHMgcG9zaXRpb24gaW4gbWFp biwgYW5kIGV4aXRzIGluIGJyb3dzZXIvaGVscDoKK2JpbmQgXkMgICAgICAgY2FuY2VsICAgICBh bGwKKworIyMgLS0gRWRpdGluZyAtLQorYmluZCBeSyAgICAgICBjdXQgICAgICAgIGFsbAorYmlu ZCBGOSAgICAgICBjdXQgICAgICAgIGFsbAorYmluZCBNLTYgICAgICBjb3B5ICAgICAgIGFsbAor YmluZCBNLV4gICAgICBjb3B5ICAgICAgIGFsbAorYmluZCBeVSAgICAgICBwYXN0ZSAgICAgIGFs bAorYmluZCBGMTAgICAgICBwYXN0ZSAgICAgIGFsbAorCisjIyBFbnRlciBhIGNoYXJhY3RlciBi eSBpdHMga2V5Y29kZToKK2JpbmQgTS1WICAgICAgdmVyYmF0aW0gICBhbGwKKworIyMgXkIvXkYg bW92ZSB0aGUgY3Vyc29yIGxlZnQvcmlnaHQgaW4gcHJvbXB0cywgc2VhcmNoIGJhY2t3YXJkL2Zv cndhcmQgZWxzZXdoZXJlOgorYmluZCBeQiAgICAgICBiYWNrICAgICAgIGFsbAorYmluZCBeRiAg ICAgICBmb3J3YXJkICAgIGFsbAorCisjIyBeUSBhbmQgXlcgYXJlIGNsYXNzaWMgYWxpYXNlcyBm b3IgYmFja3dhcmQvZm9yd2FyZCBzZWFyY2g6CitiaW5kIF5RICAgICAgIHdoZXJld2FzICAgYWxs CitiaW5kIF5XICAgICAgIHdoZXJlaXMgICAgYWxsCitiaW5kIEY2ICAgICAgIHdoZXJlaXMgICAg YWxsCisKK2JpbmQgTS1CICAgICAgZmluZHByZXZpb3VzICBhbGwKK2JpbmQgTS1RICAgICAgZmlu ZHByZXZpb3VzICBhbGwKK2JpbmQgTS1GICAgICAgZmluZG5leHQgICBhbGwKK2JpbmQgTS1XICAg ICAgZmluZG5leHQgICBhbGwKKworIyMgLS0gVG9nZ2xlcyAoTWV0YSArIGxldHRlcikgLS0KK2Jp bmQgTS1YICAgICAgbm9oZWxwICAgICAgICAgICAgIGFsbAorCisjIyAtLSBGLWtleSBzaG9ydGN1 dHMgLS0KK2JpbmQgRjYgICAgICAgd2hlcmVpcyAgICBhbGwKK2JpbmQgRjcgICAgICAgcGFnZXVw ICAgICBhbGwKK2JpbmQgRjggICAgICAgcGFnZWRvd24gICBhbGwKK2JpbmQgRjkgICAgICAgY3V0 ICAgICAgICBhbGwKK2JpbmQgRjEwICAgICAgcGFzdGUgICAgICBhbGwKKworCisjIyMjIyAgTWVu dTogbWFpbgorCisjIyBKdW1wIHRvIHRoZSB2ZXJ5IGZpcnN0IG9yIGxhc3QgbGluZSBvZiB0aGUg ZmlsZToKK2JpbmQgTS1cICAgICAgZmlyc3RsaW5lICBtYWluCitiaW5kIF5Ib21lICAgIGZpcnN0 bGluZSAgbWFpbgorYmluZCBNLS8gICAgICBsYXN0bGluZSAgIG1haW4KK2JpbmQgXkVuZCAgICAg bGFzdGxpbmUgICBtYWluCisKKyMjIEJsb2NrIG5hdmlnYXRpb24gKGJsYW5rLWxpbmUtc2VwYXJh dGVkIGJsb2NrcyAvIHBhcmFncmFwaHMpOgorYmluZCBeVXAgICAgICBwcmV2YmxvY2sgIG1haW4K K2JpbmQgXkRvd24gICAgbmV4dGJsb2NrICBtYWluCitiaW5kIE0tNyAgICAgIHByZXZibG9jayAg bWFpbgorYmluZCBNLTggICAgICBuZXh0YmxvY2sgIG1haW4KK2JpbmQgTS0oICAgICAgYmVnaW5w YXJhICBtYWluCitiaW5kIE0tOSAgICAgIGJlZ2lucGFyYSAgbWFpbgorYmluZCBNLSkgICAgICBl bmRwYXJhICAgIG1haW4KK2JpbmQgTS0wICAgICAgZW5kcGFyYSAgICBtYWluCisKKyMjIEdvIHRv IGZpcnN0IG9yIGxhc3QgdmlzaWJsZSByb3cgaW4gdGhlIHZpZXdwb3J0OgorYmluZCBNLUhvbWUg ICB0b3Byb3cgICAgIG1haW4KK2JpbmQgTS1FbmQgICAgYm90dG9tcm93ICBtYWluCisKKyMjIFNj cm9sbCB0aGUgdmlld3BvcnQgd2l0aG91dCBtb3ZpbmcgdGhlIGN1cnNvciB0ZXh0dWFsbHk6Citi aW5kIE0tVXAgICAgIHNjcm9sbHVwICAgbWFpbgorYmluZCBNLURvd24gICBzY3JvbGxkb3duIG1h aW4KK2JpbmQgTS0tICAgICAgc2Nyb2xsdXAgICBtYWluCitiaW5kIE0tXyAgICAgIHNjcm9sbHVw ICAgbWFpbgorYmluZCBNLSsgICAgICBzY3JvbGxkb3duIG1haW4KK2JpbmQgTS09ICAgICAgc2Ny b2xsZG93biBtYWluCisKKyMjIFNjcm9sbCBzaWRld2F5cyAodXNlZnVsIHdoZW4gc29mdHdyYXAg aXMgb2ZmKToKK2JpbmQgTS08ICAgICAgc2Nyb2xsbGVmdCAgbWFpbgorYmluZCBNLT4gICAgICBz Y3JvbGxyaWdodCBtYWluCisKKyMjIFJlZnJlc2ggdGhlIHNjcmVlbjsgaW4gbWFpbiwgYWxzbyBj ZW50ZXJzIHRoZSBjdXJzb3IgbGluZToKK2JpbmQgXkwgICAgICAgY2VudGVyICAgICBtYWluCiti aW5kIE0tJSAgICAgIGN5Y2xlICAgICAgbWFpbgorCisjIyBDbGFzc2ljIEVtYWNzLXN0eWxlIHVw L2Rvd24gaW4gbWFpbiwgYnJvd3NlciwgYW5kIGhlbHA6CitiaW5kIF5QICAgICAgIHByZXZsaW5l ICAgbWFpbgorYmluZCBeTiAgICAgICBuZXh0bGluZSAgIG1haW4KKworIyMgLS0gSGVscCwgZXhp dCwgYW5kIGNhbmNlbCAtLQorYmluZCBeWCAgICAgICBleGl0ICAgICAgIG1haW4KK2JpbmQgRjIg ICAgICAgZXhpdCAgICAgICBtYWluCisjIyBeQyBjYW5jZWxzIGluIHByb21wdHMsIHJlcG9ydHMg cG9zaXRpb24gaW4gbWFpbiwgYW5kIGV4aXRzIGluIGJyb3dzZXIvaGVscDoKK2JpbmQgXkMgICAg ICAgbG9jYXRpb24gICBtYWluCisKKyMjIC0tIEZpbGUgb3BlcmF0aW9ucyAtLQorYmluZCBeUyAg ICAgICBzYXZlZmlsZSAgIG1haW4KK2JpbmQgXk8gICAgICAgd3JpdGVvdXQgICBtYWluCitiaW5k IEYzICAgICAgIHdyaXRlb3V0ICAgbWFpbgorYmluZCBeUiAgICAgICBpbnNlcnQgICAgIG1haW4K K2JpbmQgSW5zICAgICAgaW5zZXJ0ICAgICBtYWluCitiaW5kIEY1ICAgICAgIGluc2VydCAgICAg bWFpbgorCisjIyAtLSBFZGl0aW5nIC0tCitiaW5kIE0tQSAgICAgIG1hcmsgICAgICAgbWFpbgor YmluZCBeXiAgICAgICBtYXJrICAgICAgIG1haW4KKworYmluZCBNLX0gICAgICBpbmRlbnQgICAg IG1haW4KK2JpbmQgTS17ICAgICAgdW5pbmRlbnQgICBtYWluCitiaW5kIFNoLVRhYiAgIHVuaW5k ZW50ICAgbWFpbgorCitiaW5kIE0tVSAgICAgIHVuZG8gICAgICAgbWFpbgorYmluZCBNLUUgICAg ICByZWRvICAgICAgIG1haW4KKworYmluZCBNLUJzcCAgICBjaG9wd29yZGxlZnQgICBtYWluCiti aW5kIFNoLV5EZWwgIGNob3B3b3JkbGVmdCAgIG1haW4KK2JpbmQgXkRlbCAgICAgY2hvcHdvcmRy aWdodCAgbWFpbgorYmluZCBNLURlbCAgICB6YXAgICAgICAgICAgICBtYWluCisKK2JpbmQgTS1U ICAgICAgY3V0cmVzdG9mZmlsZSAgbWFpbgorCitiaW5kIF5dICAgICAgIGNvbXBsZXRlICAgbWFp bgorYmluZCBNLTMgICAgICBjb21tZW50ICAgIG1haW4KKworYmluZCBNLTogICAgICByZWNvcmRt YWNybyAgbWFpbgorYmluZCBNLTsgICAgICBydW5tYWNybyAgICAgbWFpbgorCitiaW5kIE0tSW5z ICAgIGFuY2hvciAgICAgbWFpbgorYmluZCBNLSIgICAgICBhbmNob3IgICAgIG1haW4KK2JpbmQg TS0nICAgICAgbmV4dGFuY2hvciBtYWluCitiaW5kIE0tUGdVcCAgIHByZXZhbmNob3IgbWFpbgor YmluZCBNLVBnRG4gICBuZXh0YW5jaG9yIG1haW4KKworIyMgU3dpdGNoIGJldHdlZW4gb3BlbiBi dWZmZXJzOgorYmluZCBNLSwgICAgICBwcmV2YnVmICAgIG1haW4KK2JpbmQgTS0uICAgICAgbmV4 dGJ1ZiAgICBtYWluCitiaW5kIE0tTGVmdCAgIHByZXZidWYgICAgbWFpbgorYmluZCBNLVJpZ2h0 ICBuZXh0YnVmICAgIG1haW4KKworIyMgXkIvXkYgbW92ZSB0aGUgY3Vyc29yIGxlZnQvcmlnaHQg aW4gcHJvbXB0cywgc2VhcmNoIGJhY2t3YXJkL2ZvcndhcmQgZWxzZXdoZXJlOgorYmluZCBeQiAg ICAgICB3aGVyZXdhcyAgIG1haW4KK2JpbmQgXkYgICAgICAgd2hlcmVpcyAgICBtYWluCisKK2Jp bmQgXlwgICAgICAgcmVwbGFjZSAgICBtYWluCitiaW5kIE0tUiAgICAgIHJlcGxhY2UgICAgbWFp bgorCitiaW5kIE0tXSAgICAgIGZpbmRicmFja2V0ICBtYWluCisKKyMjIEdvIHRvIGEgc3BlY2lm aWMgbGluZSBhbmQgY29sdW1uIG51bWJlcjoKK2JpbmQgXl8gICAgICAgZ290b2xpbmUgICBtYWlu CitiaW5kIE0tRyAgICAgIGdvdG9saW5lICAgbWFpbgorYmluZCBeLyAgICAgICBnb3RvbGluZSAg IG1haW4KKworIyMgLS0gSnVzdGlmeSAtLQorYmluZCBeSiAgICAgICBqdXN0aWZ5ICAgIG1haW4K K2JpbmQgRjQgICAgICAganVzdGlmeSAgICBtYWluCitiaW5kIE0tSiAgICAgIGZ1bGxqdXN0aWZ5 ICBtYWluCisKKyMjIC0tIFNwZWxsIGNoZWNraW5nLCBsaW50aW5nLCBhbmQgZm9ybWF0dGluZyAt LQorYmluZCBeVCAgICAgICBleGVjdXRlICAgIG1haW4KK2JpbmQgRjEyICAgICAgc3BlbGxlciAg ICBtYWluCisKKyMjIC0tIEN1cnNvciBwb3NpdGlvbiBhbmQgd29yZCBjb3VudCAtLQorYmluZCBG MTEgICAgICBsb2NhdGlvbiAgIG1haW4KK2JpbmQgTS1EICAgICAgd29yZGNvdW50ICBtYWluCisK KyMjIC0tIFRvZ2dsZXMgKE1ldGEgKyBsZXR0ZXIpIC0tCitiaW5kIE0tWiAgICAgIHplcm8gICAg ICAgICAgICAgICBtYWluCitiaW5kIE0tQyAgICAgIGNvbnN0YW50c2hvdyAgICAgICBtYWluCiti aW5kIE0tUyAgICAgIHNvZnR3cmFwICAgICAgICAgICBtYWluCitiaW5kIE0tJCAgICAgIHNvZnR3 cmFwICAgICAgICAgICBtYWluCitiaW5kIE0tTiAgICAgIGxpbmVudW1iZXJzICAgICAgICBtYWlu CitiaW5kIE0tIyAgICAgIGxpbmVudW1iZXJzICAgICAgICBtYWluCitiaW5kIE0tUCAgICAgIHdo aXRlc3BhY2VkaXNwbGF5ICBtYWluCitiaW5kIE0tWSAgICAgIG5vc3ludGF4ICAgICAgICAgICBt YWluCitiaW5kIE0tSCAgICAgIHNtYXJ0aG9tZSAgICAgICAgICBtYWluCitiaW5kIE0tSSAgICAg IGF1dG9pbmRlbnQgICAgICAgICBtYWluCitiaW5kIE0tSyAgICAgIGN1dGZyb21jdXJzb3IgICAg ICBtYWluCitiaW5kIE0tTCAgICAgIGJyZWFrbG9uZ2xpbmVzICAgICBtYWluCitiaW5kIE0tTyAg ICAgIHRhYnN0b3NwYWNlcyAgICAgICBtYWluCitiaW5kIE0tTSAgICAgIG1vdXNlICAgICAgICAg ICAgICBtYWluCisKKyMjIC0tIEYta2V5IHNob3J0Y3V0cyAtLQorYmluZCBGMyAgICAgICB3cml0 ZW91dCAgIG1haW4KK2JpbmQgRjQgICAgICAganVzdGlmeSAgICBtYWluCitiaW5kIEY1ICAgICAg IGluc2VydCAgICAgbWFpbgorYmluZCBGMTEgICAgICBsb2NhdGlvbiAgIG1haW4KK2JpbmQgRjEy ICAgICAgc3BlbGxlciAgICBtYWluCisKKyMjID09PSBVc2VmdWwgY3VzdG9taXphdGlvbnMgKGNv bW1lbnRlZCBvdXQpID09PQorIyMgU3VzcGVuZCBuYW5vIHdpdGggYSBzaW5nbGUga2V5c3Ryb2tl IGluc3RlYWQgb2YgdmlhIF5UIF5aOgorIyBiaW5kIF5aIHN1c3BlbmQgbWFpbgorCisjIyBNYWtl IEN0cmwrQmFja3NwYWNlIGRlbGV0ZSB0aGUgd29yZCB0byB0aGUgbGVmdCAoaWYgXkggaXMgZnJl ZSk6CisjIGJpbmQgXkggY2hvcHdvcmRsZWZ0IG1haW4KKworIyMgSWYgeW91IHdhbnQgXkwgdG8g b25seSByZWZyZXNoIHRoZSBzY3JlZW4sIG5vdCBjZW50ZXIgdGhlIGN1cnNvcjoKKyMgYmluZCBe TCByZWZyZXNoIG1haW4KKworIyMgRm9yIHF1aWNrbHkgdXBwZXJjYXNpbmcgb3IgbG93ZXJjYXNp bmcgdGhlIHdvcmQgdW5kZXIgdGhlIGN1cnNvcjoKKyMgYmluZCBTaC1NLVUgIntuZXh0d29yZH17 bWFya317cHJldndvcmR9e2V4ZWN1dGV9fCBzZWQgJ3MvLiovXFUmLycge2VudGVyfSIgbWFpbgor IyBiaW5kIFNoLU0tTCAie25leHR3b3JkfXttYXJrfXtwcmV2d29yZH17ZXhlY3V0ZX18IHNlZCAn cy8uKi9cTCYvJyB7ZW50ZXJ9IiBtYWluCisKKyMjIENvcHkgdGhlIG1hcmtlZCByZWdpb24gdG8g dGhlIHN5c3RlbSBjbGlwYm9hcmQgKHJlcXVpcmVzIHhzZWwpOgorIyBiaW5kIFNoLU0tQyAie2V4 ZWN1dGV9fCB4c2VsIC1pYiB7ZW50ZXJ9e3VuZG99IiBtYWluCisKKyMjIEZvciBzbmlwcGluZyB0 cmFpbGluZyB3aGl0ZXNwYWNlIHdoZW4gc2F2aW5nOgorIyBiaW5kIF5TICJ7ZXhlY3V0ZX18IHNl ZCAncy9bWzpzcGFjZTpdXVwrJC8vJyB7ZW50ZXJ9e3NhdmVmaWxlfSIgbWFpbgorCisKKworIyMj IyMgIE1lbnU6IHNlYXJjaAorCisjIyBJbiBoaXN0b3J5LWNhcGFibGUgcHJvbXB0cywgVXAvRG93 biBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0IGluc3RlYWQ6CitiaW5kIFVwICAgICAgIG9sZGVy ICAgICAgc2VhcmNoCitiaW5kIF5QICAgICAgIG9sZGVyICAgICAgc2VhcmNoCitiaW5kIERvd24g ICAgIG5ld2VyICAgICAgc2VhcmNoCitiaW5kIF5OICAgICAgIG5ld2VyICAgICAgc2VhcmNoCisK KyMjIFRvZ2dsZXMgaW4gdGhlIHNlYXJjaCBhbmQgcmVwbGFjZSBwcm9tcHRzOgorYmluZCBNLUMg ICAgICBjYXNlc2VucyAgIHNlYXJjaAorYmluZCBNLVIgICAgICByZWdleHAgICAgIHNlYXJjaAor YmluZCBNLUIgICAgICBiYWNrd2FyZHMgIHNlYXJjaAorYmluZCBeUiAgICAgICBmbGlwcmVwbGFj ZSAgc2VhcmNoCitiaW5kIF5UICAgICAgIGZsaXBnb3RvICAgc2VhcmNoCitiaW5kIF4vICAgICAg IGZsaXBnb3RvICAgc2VhcmNoCisKKworIyMjIyMgIE1lbnU6IHJlcGxhY2UKKworIyMgSW4gaGlz dG9yeS1jYXBhYmxlIHByb21wdHMsIFVwL0Rvd24gbmF2aWdhdGUgdGhlIGhpc3RvcnkgbGlzdCBp bnN0ZWFkOgorYmluZCBVcCAgICAgICBvbGRlciAgICAgIHJlcGxhY2UKK2JpbmQgRG93biAgICAg bmV3ZXIgICAgICByZXBsYWNlCisKKyMjIEluIGhpc3RvcnktY2FwYWJsZSBwcm9tcHRzLCBeUC9e TiBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0OgorYmluZCBeUCAgICAgICBvbGRlciAgICAgIHJl cGxhY2UKK2JpbmQgXk4gICAgICAgbmV3ZXIgICAgICByZXBsYWNlCisKKyMjIFRvZ2dsZXMgaW4g dGhlIHNlYXJjaCBhbmQgcmVwbGFjZSBwcm9tcHRzOgorYmluZCBNLUMgICAgICBjYXNlc2VucyAg ICAgcmVwbGFjZQorYmluZCBNLVIgICAgICByZWdleHAgICAgICAgcmVwbGFjZQorYmluZCBNLUIg ICAgICBiYWNrd2FyZHMgICAgcmVwbGFjZQorYmluZCBeUiAgICAgICBmbGlwcmVwbGFjZSAgcmVw bGFjZQorCisKKyMjIyMjICBNZW51OiByZXBsYWNld2l0aAorCisjIyBJbiBoaXN0b3J5LWNhcGFi bGUgcHJvbXB0cywgVXAvRG93biBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0IGluc3RlYWQ6Citi aW5kIFVwICAgICAgIG9sZGVyICAgICAgcmVwbGFjZXdpdGgKK2JpbmQgRG93biAgICAgbmV3ZXIg ICAgICByZXBsYWNld2l0aAorCisjIyBJbiBoaXN0b3J5LWNhcGFibGUgcHJvbXB0cywgXlAvXk4g bmF2aWdhdGUgdGhlIGhpc3RvcnkgbGlzdDoKK2JpbmQgXlAgICAgICAgb2xkZXIgICAgICByZXBs YWNld2l0aAorYmluZCBeTiAgICAgICBuZXdlciAgICAgIHJlcGxhY2V3aXRoCisKKworIyMjIyMg IE1lbnU6IHllc25vCisKKworIyMjIyMgIE1lbnU6IGdvdG9saW5lCisKKyMjIEluIHRoZSBnb3Rv bGluZSBhbmQgc2VhcmNoIHByb21wdHMsIF5ZL15WIGp1bXAgdG8gZmlyc3QvbGFzdCBsaW5lOgor YmluZCBeWSAgICAgICBmaXJzdGxpbmUgIGdvdG9saW5lCitiaW5kIF5WICAgICAgIGxhc3RsaW5l ICAgZ290b2xpbmUKKworIyMgVG9nZ2xlcyBpbiB0aGUgc2VhcmNoIGFuZCByZXBsYWNlIHByb21w dHM6CitiaW5kIF5UICAgICAgIGZsaXBnb3RvICAgZ290b2xpbmUKK2JpbmQgXi8gICAgICAgZmxp cGdvdG8gICBnb3RvbGluZQorCisjIyBJbiB0aGUgZ290b2xpbmUgcHJvbXB0LCBuYXZpZ2F0ZSBi eSBwYXJhZ3JhcGg6CitiaW5kIF5XICAgICAgIGJlZ2lucGFyYSAgZ290b2xpbmUKK2JpbmQgXk8g ICAgICAgZW5kcGFyYSAgICBnb3RvbGluZQorCisjIyMjIyAgTWVudTogd3JpdGVvdXQKKworIyMg T3BlbiB0aGUgZmlsZSBicm93c2VyIGZyb20gdGhlIHdyaXRlb3V0IG9yIGluc2VydCBwcm9tcHQ6 CitiaW5kIF5UICAgICAgIHRvZmlsZXMgICAgd3JpdGVvdXQKKworIyMgT3B0aW9ucyBpbiB0aGUg d3JpdGUtb3V0IHByb21wdDoKK2JpbmQgXlEgICAgICAgZGlzY2FyZGJ1ZmZlciAgd3JpdGVvdXQK K2JpbmQgTS1EICAgICAgZG9zZm9ybWF0ICAgICAgd3JpdGVvdXQKK2JpbmQgTS1CICAgICAgYmFj a3VwICAgICAgICAgd3JpdGVvdXQKK2JpbmQgTS1BICAgICAgYXBwZW5kICAgICAgICAgd3JpdGVv dXQKK2JpbmQgTS1QICAgICAgcHJlcGVuZCAgICAgICAgd3JpdGVvdXQKKworIyMjIyMgIE1lbnU6 IGluc2VydAorCisjIyBPcGVuIHRoZSBmaWxlIGJyb3dzZXIgZnJvbSB0aGUgd3JpdGVvdXQgb3Ig aW5zZXJ0IHByb21wdDoKK2JpbmQgXlQgICAgICAgdG9maWxlcyAgICBpbnNlcnQKKworIyMgT3B0 aW9ucyBpbiB0aGUgaW5zZXJ0IGFuZCBleGVjdXRlIHByb21wdHM6CitiaW5kIF5YICAgICAgIGZs aXBleGVjdXRlICAgIGluc2VydAorYmluZCBNLU4gICAgICBmbGlwY29udmVydCAgICBpbnNlcnQK K2JpbmQgTS1GICAgICAgZmxpcG5ld2J1ZmZlciAgaW5zZXJ0CisKKyMjIyMjICBNZW51OiBleGVj dXRlCisKKyMjIEluIGhpc3RvcnktY2FwYWJsZSBwcm9tcHRzLCBVcC9Eb3duIG5hdmlnYXRlIHRo ZSBoaXN0b3J5IGxpc3QgaW5zdGVhZDoKK2JpbmQgVXAgICAgICAgb2xkZXIgICAgICBleGVjdXRl CitiaW5kIERvd24gICAgIG5ld2VyICAgICAgZXhlY3V0ZQorCisjIyBJbiBoaXN0b3J5LWNhcGFi bGUgcHJvbXB0cywgXlAvXk4gbmF2aWdhdGUgdGhlIGhpc3RvcnkgbGlzdDoKK2JpbmQgXlAgICAg ICAgb2xkZXIgICAgICBleGVjdXRlCitiaW5kIF5OICAgICAgIG5ld2VyICAgICAgZXhlY3V0ZQor CisjIyBPcHRpb25zIGluIHRoZSBpbnNlcnQgYW5kIGV4ZWN1dGUgcHJvbXB0czoKK2JpbmQgTS1G ICAgICAgZmxpcG5ld2J1ZmZlciAgZXhlY3V0ZQorYmluZCBNLVwgICAgICBmbGlwcGlwZSAgICAg ICBleGVjdXRlCitiaW5kIF5WICAgICAgIGN1dHJlc3RvZmZpbGUgIGV4ZWN1dGUKKworIyMgU3Vz cGVuZCB0byB0aGUgYmFja2dyb3VuZCAodmlhIHRoZSBleGVjdXRlIG1lbnU6IF5UIHRoZW4gXlop OgorYmluZCBeWiAgICAgICBzdXNwZW5kICAgIGV4ZWN1dGUKKworIyMgLS0gSnVzdGlmeSAtLQor YmluZCBeSiAgICAgICBmdWxsanVzdGlmeSAgZXhlY3V0ZQorCisjIyAtLSBTcGVsbCBjaGVja2lu ZywgbGludGluZywgYW5kIGZvcm1hdHRpbmcgLS0KK2JpbmQgXlMgICAgICAgc3BlbGxlciAgICBl eGVjdXRlCitiaW5kIF5UICAgICAgIHNwZWxsZXIgICAgZXhlY3V0ZQorYmluZCBeWSAgICAgICBs aW50ZXIgICAgIGV4ZWN1dGUKK2JpbmQgXk8gICAgICAgZm9ybWF0dGVyICBleGVjdXRlCisKKwor IyMjIyMgIE1lbnU6IGhlbHAKKworIyMgSW4gdGhlIGZpbGUgYnJvd3NlciBhbmQgaGVscCB2aWV3 ZXIsIEJzcC9TaC1EZWwgc2Nyb2xsIGEgcGFnZSB1cDoKK2JpbmQgQnNwICAgICAgcGFnZXVwICAg ICBoZWxwCitiaW5kIFNoLURlbCAgIHBhZ2V1cCAgICAgaGVscAorYmluZCBTcGFjZSAgICBwYWdl ZG93biAgIGhlbHAKKworIyMgSW4gdGhlIGhlbHAgdmlld2VyLCBIb21lL0VuZCBqdW1wIHRvIHRo ZSBmaXJzdC9sYXN0IGxpbmU6CitiaW5kIEhvbWUgICAgIGZpcnN0bGluZSAgaGVscAorYmluZCBF bmQgICAgICBsYXN0bGluZSAgIGhlbHAKKworIyMgSnVtcCB0byB0aGUgdmVyeSBmaXJzdCBvciBs YXN0IGxpbmUgb2YgdGhlIGZpbGU6CitiaW5kIE0tXCAgICAgIGZpcnN0bGluZSAgaGVscAorYmlu ZCBeSG9tZSAgICBmaXJzdGxpbmUgIGhlbHAKK2JpbmQgTS0vICAgICAgbGFzdGxpbmUgICBoZWxw CitiaW5kIF5FbmQgICAgIGxhc3RsaW5lICAgaGVscAorCisjIyBDbGFzc2ljIEVtYWNzLXN0eWxl IHVwL2Rvd24gaW4gbWFpbiwgYnJvd3NlciwgYW5kIGhlbHA6CitiaW5kIF5QICAgICAgIHByZXZs aW5lICAgaGVscAorYmluZCBeTiAgICAgICBuZXh0bGluZSAgIGhlbHAKKworIyMgLS0gSGVscCwg ZXhpdCwgYW5kIGNhbmNlbCAtLQorYmluZCBeRyAgICAgICBleGl0ICAgICAgIGhlbHAKK2JpbmQg RjEgICAgICAgZXhpdCAgICAgICBoZWxwCitiaW5kIF5YICAgICAgIGV4aXQgICAgICAgaGVscAor YmluZCBGMiAgICAgICBleGl0ICAgICAgIGhlbHAKK2JpbmQgXkMgICAgICAgZXhpdCAgICAgICBo ZWxwCisKKyMjIF5CL15GIG1vdmUgdGhlIGN1cnNvciBsZWZ0L3JpZ2h0IGluIHByb21wdHMsIHNl YXJjaCBiYWNrd2FyZC9mb3J3YXJkIGVsc2V3aGVyZToKK2JpbmQgXkIgICAgICAgd2hlcmV3YXMg ICBoZWxwCitiaW5kIF5GICAgICAgIHdoZXJlaXMgICAgaGVscAorCisKKworIyMjIyMgIE1lbnU6 IHNwZWxsCisKKworIyMjIyMgIE1lbnU6IGxpbnRlcgorCisKKyMjIyMjICBNZW51OiBicm93c2Vy CisKKyMjIEluIHRoZSBmaWxlIGJyb3dzZXIgYW5kIGhlbHAgdmlld2VyLCBCc3AvU2gtRGVsIHNj cm9sbCBhIHBhZ2UgdXA6CitiaW5kIEJzcCAgICAgIHBhZ2V1cCAgICAgYnJvd3NlcgorYmluZCBT aC1EZWwgICBwYWdldXAgICAgIGJyb3dzZXIKK2JpbmQgU3BhY2UgICAgcGFnZWRvd24gICBicm93 c2VyCisKKyMjIEluIHRoZSBicm93c2VyLCBIb21lL0VuZCBqdW1wIHRvIHRoZSBmaXJzdC9sYXN0 IGZpbGU6CitiaW5kIEhvbWUgICAgIGZpcnN0ZmlsZSAgYnJvd3NlcgorYmluZCBFbmQgICAgICBs YXN0ZmlsZSAgIGJyb3dzZXIKKworIyMgSW4gdGhlIGZpbGUgYnJvd3NlciwgTS1cIGFuZCBNLS8g anVtcCB0byBmaXJzdC9sYXN0IGZpbGU6CitiaW5kIE0tXCAgICAgIGZpcnN0ZmlsZSAgYnJvd3Nl cgorYmluZCBNLS8gICAgICBsYXN0ZmlsZSAgIGJyb3dzZXIKK2JpbmQgXkhvbWUgICAgZmlyc3Rm aWxlICBicm93c2VyCitiaW5kIF5FbmQgICAgIGxhc3RmaWxlICAgYnJvd3NlcgorCisjIyBDbGFz c2ljIEVtYWNzLXN0eWxlIHVwL2Rvd24gaW4gbWFpbiwgYnJvd3NlciwgYW5kIGhlbHA6CitiaW5k IF5QICAgICAgIHByZXZsaW5lICAgYnJvd3NlcgorYmluZCBeTiAgICAgICBuZXh0bGluZSAgIGJy b3dzZXIKKworIyMgLS0gRXhpdCwgYW5kIGNhbmNlbCAtLQorYmluZCBeWCAgICAgICBleGl0ICAg ICAgIGJyb3dzZXIKK2JpbmQgRjIgICAgICAgZXhpdCAgICAgICBicm93c2VyCisjIyBeQyBjYW5j ZWxzIGluIHByb21wdHMsIHJlcG9ydHMgcG9zaXRpb24gaW4gbWFpbiwgYW5kIGV4aXRzIGluIGJy b3dzZXIvaGVscDoKK2JpbmQgXkMgICAgICAgZXhpdCAgICAgICBicm93c2VyCisKKyMjIEluIHRo ZSBicm93c2VyIGl0c2VsZiwgXlQgY2xvc2VzIGl0IChzYW1lIGtleSBhcyB1c2VkIHRvIG9wZW4g aXQpOgorYmluZCBeVCAgICAgICBleGl0ICAgICAgIGJyb3dzZXIKKworIyMgXkIvXkYgbW92ZSB0 aGUgY3Vyc29yIGxlZnQvcmlnaHQgaW4gcHJvbXB0cywgc2VhcmNoIGJhY2t3YXJkL2ZvcndhcmQg ZWxzZXdoZXJlOgorYmluZCBeQiAgICAgICB3aGVyZXdhcyAgIGJyb3dzZXIKK2JpbmQgXkYgICAg ICAgd2hlcmVpcyAgICBicm93c2VyCisKKyMjIC0tIEZpbGUgYnJvd3NlciBuYXZpZ2F0aW9uIC0t CitiaW5kIE0tRyAgICAgIGdvdG9kaXIgICAgYnJvd3NlcgorYmluZCBeXyAgICAgICBnb3RvZGly ICAgIGJyb3dzZXIKK2JpbmQgXi8gICAgICAgZ290b2RpciAgICBicm93c2VyCisKKworCisjIyMj IyAgTWVudTogd2hlcmVpc2ZpbGUKKworIyMgSW4gaGlzdG9yeS1jYXBhYmxlIHByb21wdHMsIFVw L0Rvd24gbmF2aWdhdGUgdGhlIGhpc3RvcnkgbGlzdCBpbnN0ZWFkOgorYmluZCBVcCAgICAgICBv bGRlciAgICAgIHdoZXJlaXNmaWxlCitiaW5kIERvd24gICAgIG5ld2VyICAgICAgd2hlcmVpc2Zp bGUKKworIyMgSW4gdGhlIGZpbGUgYnJvd3NlcidzIHNlYXJjaCBwcm9tcHQsIF5ZL15WIGp1bXAg dG8gZmlyc3QvbGFzdCBmaWxlOgorYmluZCBeWSAgICAgICBmaXJzdGZpbGUgIHdoZXJlaXNmaWxl CitiaW5kIF5WICAgICAgIGxhc3RmaWxlICAgd2hlcmVpc2ZpbGUKKworIyMgSW4gdGhlIGZpbGUg YnJvd3NlciwgTS1cIGFuZCBNLS8ganVtcCB0byBmaXJzdC9sYXN0IGZpbGU6CitiaW5kIE0tXCAg ICAgIGZpcnN0ZmlsZSAgd2hlcmVpc2ZpbGUKK2JpbmQgTS0vICAgICAgbGFzdGZpbGUgICB3aGVy ZWlzZmlsZQorCisjIyBJbiBoaXN0b3J5LWNhcGFibGUgcHJvbXB0cywgXlAvXk4gbmF2aWdhdGUg dGhlIGhpc3RvcnkgbGlzdDoKK2JpbmQgXlAgICAgICAgb2xkZXIgICAgICB3aGVyZWlzZmlsZQor YmluZCBeTiAgICAgICBuZXdlciAgICAgIHdoZXJlaXNmaWxlCisKKworCisjIyMjIyAgTWVudTog Z290b2RpcgorCisKKworYmluZCBeWCAgICAgICBjYW5jZWwgICAgIGxpbnRlcgpkaWZmIC0tZ2l0 IGEvZG9jL3NhbXBsZS5uYW5vcmMuaW4gYi9kb2Mvc2FtcGxlLm5hbm9yYy5pbgpkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYzRhM2UxMGIuLjAwMDAwMDAwCi0tLSBhL2RvYy9zYW1wbGUu bmFub3JjLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzUzICswLDAgQEAKLSMjIFNhbXBsZSBpbml0 aWFsaXphdGlvbiBmaWxlIGZvciBHTlUgbmFuby4KLSMjCi0jIyBGb3IgdGhlIG9wdGlvbnMgdGhh dCB0YWtlIHBhcmFtZXRlcnMsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIHNob3duLgotIyMgT3RoZXIg b3B0aW9ucyBhcmUgdW5zZXQgYnkgZGVmYXVsdC4gIFRvIG1ha2Ugc3VyZSB0aGF0IGFuIG9wdGlv bgotIyMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gdXNlICJ1bnNldCA8b3B0aW9uPiIuCi0jIwotIyMg Q2hhcmFjdGVycyB0aGF0IGFyZSBzcGVjaWFsIGluIGEgc2hlbGwgc2hvdWxkIG5vdCBiZSBlc2Nh cGVkIGhlcmUuCi0jIyBJbnNpZGUgc3RyaW5nIHBhcmFtZXRlcnMsIHF1b3RlcyBzaG91bGQgbm90 IGJlIGVzY2FwZWQgLS0gdGhlIGxhc3QKLSMjIGRvdWJsZSBxdW90ZSBvbiB0aGUgbGluZSB3aWxs IGJlIHNlZW4gYXMgdGhlIGNsb3NpbmcgcXVvdGUuCi0KLSMjIElmIHlvdSB3YW50IF5GLCBeQiwg TS1GIGFuZCBNLUIgdG8gZG8gd2hhdCB0aGV5IGRpZCBiZWZvcmUgdmVyc2lvbiA4LjA6Ci0jIGJp bmQgXkYgZm9yd2FyZCBtYWluCi0jIGJpbmQgXkIgYmFjayBtYWluCi0jIGJpbmQgTS1GIGZvcm1h dHRlciBtYWluCi0jIGJpbmQgTS1CIGxpbnRlciBtYWluCi0KLSMjIE1ha2UgTS08IGFuZCBNLT4g c3dpdGNoIGJldHdlZW4gYnVmZmVycywgYXMgdGhleSBkaWQgYmVmb3JlIHZlcnNpb24gOS4wOgot IyBiaW5kIE0tPCBwcmV2YnVmIG1haW4KLSMgYmluZCBNLT4gbmV4dGJ1ZiBtYWluCi0KLSMjIE1h a2UgJ25leHR3b3JkJyAoQ3RybCtSaWdodCkgYW5kICdjaG9wd29yZHJpZ2h0JyAoQ3RybCtEZWxl dGUpCi0jIyBzdG9wIGF0IHdvcmQgZW5kcyBpbnN0ZWFkIG9mIGF0IGJlZ2lubmluZ3MuCi0jIHNl dCBhZnRlcmVuZHMKLQotIyMgV2hlbiBzb2Z0IGxpbmUgd3JhcHBpbmcgaXMgZW5hYmxlZCwgbWFr ZSBpdCB3cmFwIGxpbmVzIGF0IGJsYW5rcwotIyMgKHRhYnMgYW5kIHNwYWNlcykgaW5zdGVhZCBv ZiBhbHdheXMgYXQgdGhlIGVkZ2Ugb2YgdGhlIHNjcmVlbi4KLSMgc2V0IGF0YmxhbmtzCi0KLSMj IEF1dG9tYXRpY2FsbHkgaW5kZW50IGEgbmV3bHkgY3JlYXRlZCBsaW5lIHRvIHRoZSBzYW1lIG51 bWJlciBvZgotIyMgdGFicyBhbmQvb3Igc3BhY2VzIGFzIHRoZSBwcmVjZWRpbmcgbGluZSAtLSBv ciBhcyB0aGUgbmV4dCBsaW5lCi0jIyBpZiB0aGUgcHJlY2VkaW5nIGxpbmUgaXMgdGhlIGJlZ2lu bmluZyBvZiBhIHBhcmFncmFwaC4KLSMgc2V0IGF1dG9pbmRlbnQKLQotIyMgQmFjayB1cCBmaWxl cyB0byB0aGUgY3VycmVudCBmaWxlbmFtZSBwbHVzIGEgdGlsZGUuCi0jIHNldCBiYWNrdXAKLQot IyMgVGhlIGRpcmVjdG9yeSB0byBwdXQgdW5pcXVlIGJhY2t1cCBmaWxlcyBpbi4KLSMgc2V0IGJh Y2t1cGRpciAiIgotCi0jIyBVc2UgYm9sZCB0ZXh0IGluc3RlYWQgb2YgcmV2ZXJzZSB2aWRlbyB0 ZXh0LgotIyBzZXQgYm9sZHRleHQKLQotIyMgVHJlYXQgYW55IGxpbmUgd2l0aCBsZWFkaW5nIHdo aXRlc3BhY2UgYXMgdGhlIGJlZ2lubmluZyBvZiBhIHBhcmFncmFwaC4KLSMgc2V0IGJvb2tzdHls ZQotCi0jIyBUaGUgY2hhcmFjdGVycyB0cmVhdGVkIGFzIGNsb3NpbmcgYnJhY2tldHMgd2hlbiBq dXN0aWZ5aW5nIHBhcmFncmFwaHMuCi0jIyBUaGlzIG1heSBub3QgaW5jbHVkZSBhbnkgYmxhbmsg Y2hhcmFjdGVycy4gIE9ubHkgY2xvc2luZyBwdW5jdHVhdGlvbiwKLSMjIG9wdGlvbmFsbHkgZm9s bG93ZWQgYnkgdGhlc2UgY2xvc2luZyBicmFja2V0cywgY2FuIGVuZCBzZW50ZW5jZXMuCi0jIHNl dCBicmFja2V0cyAiIicpPl19IgotCi0jIyBBdXRvbWF0aWNhbGx5IGhhcmQtd3JhcCB0aGUgY3Vy cmVudCBsaW5lIHdoZW4gaXQgYmVjb21lcyBvdmVybG9uZy4KLSMgc2V0IGJyZWFrbG9uZ2xpbmVz Ci0KLSMjIERvIGNhc2Utc2Vuc2l0aXZlIHNlYXJjaGVzIGJ5IGRlZmF1bHQuCi0jIHNldCBjYXNl c2Vuc2l0aXZlCi0KLSMjIEludGVycHJldCBkaWdpdHMgYWZ0ZXIgYSBjb2xvbiBhZnRlciBhIGZp bGVuYW1lIChvbiB0aGUgY29tbWFuZCBsaW5lKQotIyMgYXMgdGhlIGxpbmUgbnVtYmVyIHRvIGdv IHRvIGluIHRoYXQgZmlsZS4KLSMgc2V0IGNvbG9ucGFyc2luZwotCi0jIyBDb25zdGFudGx5IHJl cG9ydCB0aGUgY3Vyc29yIHBvc2l0aW9uLCBpbiB0aGUgc3RhdHVzIGJhciBvciBtaW5pYmFyLgot IyBzZXQgY29uc3RhbnRzaG93Ci0KLSMjIFVzZSBjdXQtZnJvbS1jdXJzb3ItdG8tZW5kLW9mLWxp bmUgYnkgZGVmYXVsdC4KLSMgc2V0IGN1dGZyb21jdXJzb3IKLQotIyMgRG8gbm90IHVzZSB0aGUg bGluZSBiZWxvdyB0aGUgdGl0bGUgYmFyLCBsZWF2aW5nIGl0IGVudGlyZWx5IGJsYW5rLgotIyBz ZXQgZW1wdHlsaW5lCi0KLSMjIFNldCB0aGUgdGFyZ2V0IHdpZHRoIGZvciBhdXRvbWF0aWMgaGFy ZC13cmFwcGluZyBhbmQgZm9yIGp1c3RpZnlpbmcKLSMjIHBhcmFncmFwaHMuICBJZiB0aGUgc3Bl Y2lmaWVkIHZhbHVlIGlzIDAgb3IgbGVzcywgdGhlIHdyYXBwaW5nIHBvaW50Ci0jIyB3aWxsIGJl IHRoZSB0ZXJtaW5hbCdzIHdpZHRoIG1pbnVzIHRoaXMgbnVtYmVyLgotIyBzZXQgZmlsbCAtOAot Ci0jIyBEcmF3IGEgdmVydGljYWwgc3RyaXBlIGF0IHRoZSBnaXZlbiBjb2x1bW4sIHRvIGhlbHAg anVkZ2UgdGV4dCB3aWR0aC4KLSMjIChUaGlzIG9wdGlvbiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVs dCB2YWx1ZS4pCi0jIHNldCBndWlkZXN0cmlwZSA3NQotCi0jIyBSZW1lbWJlciB0aGUgdXNlZCBz ZWFyY2gvcmVwbGFjZS9jb21tYW5kIHN0cmluZ3MgZm9yIHRoZSBuZXh0IHNlc3Npb24uCi0jIHNl dCBoaXN0b3J5bG9nCi0KLSMjIERpc3BsYXkgYSAic2Nyb2xsYmFyIiBvbiB0aGUgcmlnaHRoYW5k IHNpZGUgb2YgdGhlIGVkaXQgd2luZG93LgotIyBzZXQgaW5kaWNhdG9yCi0KLSMjIFNjcm9sbCB0 aGUgYnVmZmVyIGNvbnRlbnRzIHBlciBoYWxmLXNjcmVlbiBpbnN0ZWFkIG9mIHBlciBsaW5lLgot IyBzZXQganVtcHlzY3JvbGxpbmcKLQotIyMgRGlzcGxheSBsaW5lIG51bWJlcnMgdG8gdGhlIGxl ZnQgKGFuZCBhbnkgYW5jaG9ycyBpbiB0aGUgbWFyZ2luKS4KLSMgc2V0IGxpbmVudW1iZXJzCi0K LSMjIExldCBvdGhlciB1c2VycyAob2YgbmFubyBvciB2aW0pIGtub3cgdGhhdCB5b3UgYXJlIGVk aXRpbmcgdGhlIGZpbGUKLSMjIHRoZXkgYXJlIHRyeWluZyB0byBlZGl0LCBhbmQgdGhlIG90aGVy IHdheSBhcm91bmQuCi0jIHNldCBsb2NraW5nCi0KLSMjIEZhbGwgYmFjayB0byBzbG93IGxpYm1h Z2ljIHRvIHRyeSBhbmQgZGV0ZXJtaW5lIGFuIGFwcGxpY2FibGUgc3ludGF4LgotIyBzZXQgbWFn aWMKLQotIyMgVGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgYnJhY2tldHMgdGhhdCBhcmUgZm91bmQg YnkgYSBtYXRjaGluZy1icmFja2V0Ci0jIyBzZWFyY2guICBUaGlzIG1heSBub3QgY29udGFpbiBi bGFuayBjaGFyYWN0ZXJzLiAgVGhlIG9wZW5pbmcgYnJhY2tldHMKLSMjIG11c3QgY29tZSBiZWZv cmUgdGhlIGNsb3Npbmcgb25lcywgYW5kIHRoZXkgbXVzdCBiZSBpbiB0aGUgc2FtZSBvcmRlci4K LSMgc2V0IG1hdGNoYnJhY2tldHMgIig8W3spPl19IgotCi0jIyBTdXBwcmVzcyB0aGUgdGl0bGUg YmFyIGFuZCBzaG93IHRoZSBmaWxlbmFtZSBwbHVzIGEgY3Vyc29yLXBvc2l0aW9uCi0jIyBwZXJj ZW50YWdlIGluIHRoZSBzcGFjZSBvZiB0aGUgc3RhdHVzIGJhci4KLSMgc2V0IG1pbmliYXIKLQot IyMgRW5hYmxlIG1vdXNlIHN1cHBvcnQsIGlmIGF2YWlsYWJsZSBmb3IgeW91ciBzeXN0ZW0uICBX aGVuIGVuYWJsZWQsCi0jIyBtb3VzZSBjbGlja3MgY2FuIGJlIHVzZWQgdG8gcGxhY2UgdGhlIGN1 cnNvciwgc2V0IHRoZSBtYXJrICh3aXRoCi0jIyB0d28gY2xpY2tzKSwgYW5kIGV4ZWN1dGUgc2hv cnRjdXRzLiAgVGhlIG1vdXNlIHdpbGwgd29yayBpbiB0aGUKLSMjIFggV2luZG93IFN5c3RlbSwg YW5kIG9uIHRoZSBjb25zb2xlIHdoZW4gZ3BtIGlzIHJ1bm5pbmcuCi0jIHNldCBtb3VzZQotCi0j IyBTd2l0Y2ggb24gbXVsdGlwbGUgZmlsZSBidWZmZXJzIChpbnNlcnRpbmcgYSBmaWxlIHdpbGwg cHV0IGl0IGludG8KLSMjIGEgc2VwYXJhdGUgYnVmZmVyKS4KLSMgc2V0IG11bHRpYnVmZmVyCi0K LSMjIERvbid0IGNvbnZlcnQgZmlsZXMgZnJvbSBET1MgZm9ybWF0LgotIyBzZXQgbm9jb252ZXJ0 Ci0KLSMjIERvbid0IGRpc3BsYXkgdGhlIGhlbHBmdWwgc2hvcnRjdXQgbGlzdHMgYXQgdGhlIGJv dHRvbSBvZiB0aGUgc2NyZWVuLgotIyBzZXQgbm9oZWxwCi0KLSMjIERvbid0IGF1dG9tYXRpY2Fs bHkgYWRkIGEgbmV3bGluZSB3aGVuIGEgZmlsZSBkb2VzIG5vdCBlbmQgd2l0aCBvbmUuCi0jIHNl dCBub25ld2xpbmVzCi0KLSMjIFNldCBvcGVyYXRpbmcgZGlyZWN0b3J5LiAgbmFubyB3aWxsIG5v dCByZWFkIG9yIHdyaXRlIGZpbGVzIG91dHNpZGUKLSMjIHRoaXMgZGlyZWN0b3J5IGFuZCBpdHMg c3ViZGlyZWN0b3JpZXMuICBBbHNvLCB0aGUgY3VycmVudCBkaXJlY3RvcnkKLSMjIGlzIGNoYW5n ZWQgdG8gaGVyZSwgc28gYW55IGZpbGVzIGFyZSBpbnNlcnRlZCBmcm9tIHRoaXMgZGlyLiAgQSBi bGFuawotIyMgc3RyaW5nIG1lYW5zIHRoZSBvcGVyYXRpbmctZGlyZWN0b3J5IGZlYXR1cmUgaXMg dHVybmVkIG9mZi4KLSMgc2V0IG9wZXJhdGluZ2RpciAiIgotCi0jIyBSZW1lbWJlciB0aGUgcG9z aXRpb24gb2YgY3Vyc29yIGFuZCBhbmNob3JzIGZvciB0aGUgbmV4dCBlZGl0aW5nIHNlc3Npb24u Ci0jIHNldCBwb3NpdGlvbmxvZwotCi0jIyBQcmVzZXJ2ZSB0aGUgWE9OIGFuZCBYT0ZGIGtleXMg KF5RIGFuZCBeUykuCi0jIHNldCBwcmVzZXJ2ZQotCi0jIyBUaGUgY2hhcmFjdGVycyB0cmVhdGVk IGFzIGNsb3NpbmcgcHVuY3R1YXRpb24gd2hlbiBqdXN0aWZ5aW5nIHBhcmFncmFwaHMuCi0jIyBU aGlzIG1heSBub3QgY29udGFpbiBibGFuayBjaGFyYWN0ZXJzLiAgT25seSB0aGVzZSB0ZXJtaW5h dGluZyBjaGFyYWN0ZXJzLAotIyMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBjbG9zaW5nIGJyYWNr ZXRzLCBjYW4gZW5kIHNlbnRlbmNlcy4KLSMgc2V0IHB1bmN0ICIhLj8iCi0KLSMjIE1ha2Ugc3Rh dHVzLWJhciBtZXNzYWdlcyBkaXNhcHBlYXIgYWZ0ZXIgMSBrZXlzdHJva2UgaW5zdGVhZCBvZiBh ZnRlciAyMC4KLSMgc2V0IHF1aWNrYmxhbmsKLQotIyMgVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0 aGF0IG1hdGNoZXMgcXVvdGluZyBjaGFyYWN0ZXJzIGluIGVtYWlsCi0jIyBvciBsaW5lLWNvbW1l bnQgaW50cm9kdWNlcnMgaW4gc291cmNlIGNvZGUuICBUaGUgZGVmYXVsdCBpczoKLSMgc2V0IHF1 b3Rlc3RyICJeKFsgCV0qKFshIyU6Oz58fV18Ly8pKSsiCi0KLSMjIFRyeSB0byB3b3JrIGFyb3Vu ZCBhIG1pc21hdGNoaW5nIHRlcm1pbmZvIHRlcm1pbmFsIGRlc2NyaXB0aW9uLgotIyBzZXQgcmF3 c2VxdWVuY2VzCi0KLSMjIEZpeCBCYWNrc3BhY2UvRGVsZXRlIGNvbmZ1c2lvbiBwcm9ibGVtLgot IyBzZXQgcmViaW5kZGVsZXRlCi0KLSMjIERvIHJlZ3VsYXItZXhwcmVzc2lvbiBzZWFyY2hlcyBi eSBkZWZhdWx0LgotIyMgUmVndWxhciBleHByZXNzaW9ucyBhcmUgb2YgdGhlIGV4dGVuZGVkIHR5 cGUgKEVSRSkuCi0jIHNldCByZWdleHAKLQotIyMgU2F2ZSBhIGNoYW5nZWQgYnVmZmVyIGF1dG9t YXRpY2FsbHkgb24gZXhpdDsgZG9uJ3QgcHJvbXB0LgotIyBzZXQgc2F2ZW9uZXhpdAotCi0jIyBQ dXQgdGhlIGN1cnNvciBvbiB0aGUgaGlnaGxpZ2h0ZWQgaXRlbSBpbiB0aGUgZmlsZSBicm93c2Vy LCBhbmQKLSMjIHNob3cgdGhlIGN1cnNvciBpbiB0aGUgaGVscCB2aWV3ZXI7IHVzZWZ1bCBmb3Ig cGVvcGxlIHdobyB1c2UgYQotIyMgYnJhaWxsZSBkaXNwbGF5IGFuZCBwZW9wbGUgd2l0aCBwb29y IHZpc2lvbi4KLSMgc2V0IHNob3djdXJzb3IKLQotIyMgTWFrZSB0aGUgSG9tZSBrZXkgc21hcnRl cjogd2hlbiBIb21lIGlzIHByZXNzZWQgYW55d2hlcmUgYnV0IGF0IHRoZQotIyMgdmVyeSBiZWdp bm5pbmcgb2Ygbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBvbiBhIGxpbmUsIHRoZSBjdXJzb3IK LSMjIHdpbGwganVtcCB0byB0aGF0IGJlZ2lubmluZyAoZWl0aGVyIGZvcndhcmRzIG9yIGJhY2t3 YXJkcykuICBJZiB0aGUKLSMjIGN1cnNvciBpcyBhbHJlYWR5IGF0IHRoYXQgcG9zaXRpb24sIGl0 IHdpbGwganVtcCB0byB0aGUgdHJ1ZSBzdGFydAotIyMgb2YgdGhlIGxpbmUgKHRoZSBsZWZ0IGVk Z2UpLgotIyBzZXQgc21hcnRob21lCi0KLSMjIFNwcmVhZCBvdmVybG9uZyBsaW5lcyBvdmVyIG11 bHRpcGxlIHNjcmVlbiBsaW5lcy4KLSMgc2V0IHNvZnR3cmFwCi0KLSMjIFNjcm9sbCBvbmx5IHRo ZSBjdXJyZW50IGxpbmUgc2lkZXdheXMgKGluc3RlYWQgb2YgYWxsIGxpbmVzKS4KLSMgc2V0IHNv bG9zaWRlc2Nyb2xsCi0KLSMjIFVzZSB0aGlzIHNwZWxsaW5nIGNoZWNrZXIgaW5zdGVhZCBvZiB0 aGUgaW50ZXJuYWwgb25lLiAgVGhpcyBvcHRpb24KLSMjIGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0 IHZhbHVlLgotIyBzZXQgc3BlbGxlciAiYXNwZWxsIC14IC1jIgotCi0jIyBVc2UgdGhlIGVuZCBv ZiB0aGUgdGl0bGUgYmFyIGZvciBzb21lIHN0YXRlIGZsYWdzOiBJID0gYXV0by1pbmRlbnRpbmcs Ci0jIyBNID0gbWFyaywgTCA9IGhhcmQtd3JhcHBpbmcgbG9uZyBsaW5lcywgUiA9IHJlY29yZGlu ZywgUyA9IHNvZnQtd3JhcHBpbmcuCi0jIHNldCBzdGF0ZWZsYWdzCi0KLSMjIFVzZSB0aGlzIHRh YiBzaXplIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQ7IGl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAu Ci0jIHNldCB0YWJzaXplIDgKLQotIyMgQ29udmVydCBlYWNoIHR5cGVkIHRhYiB0byB0aGUgZml0 dGluZyBudW1iZXIgb2Ygc3BhY2VzLgotIyBzZXQgdGFic3Rvc3BhY2VzCi0KLSMjIFNuaXAgd2hp dGVzcGFjZSBhdCB0aGUgZW5kIG9mIGxpbmVzIHdoZW4ganVzdGlmeWluZyBvciBoYXJkLXdyYXBw aW5nLgotIyBzZXQgdHJpbWJsYW5rcwotCi0jIyBTYXZlIGZpbGVzIGFsd2F5cyBpbiBVbml4IGZv cm1hdCAoYWxzbyB3aGVuIHRoZXkgd2VyZSBET1MpLgotIyBzZXQgdW5peAotCi0jIyBUaGUgdHdv IHNpbmdsZS1jb2x1bW4gY2hhcmFjdGVycyB1c2VkIHRvIGRpc3BsYXkgdGhlIGZpcnN0IGNoYXJh Y3RlcnMKLSMjIG9mIHRhYnMgYW5kIHNwYWNlcy4gIDE4NyBpbiBJU08gODg1OS0xICgwMDAwQkIg aW4gVW5pY29kZSkgYW5kIDE4MyBpbgotIyMgSVNPLTg4NTktMSAoMDAwMEI3IGluIFVuaWNvZGUp IHNlZW0gdG8gYmUgZ29vZCB2YWx1ZXMgZm9yIHRoZXNlLgotIyMgVGhlIGRlZmF1bHQgd2hlbiBp biBhIFVURi04IGxvY2FsZToKLSMgc2V0IHdoaXRlc3BhY2UgIsK7wrciCi0jIyBUaGUgZGVmYXVs dCBvdGhlcndpc2U6Ci0jIHNldCB3aGl0ZXNwYWNlICI+LiIKLQotIyMgRGV0ZWN0IHdvcmQgYm91 bmRhcmllcyBkaWZmZXJlbnRseSBieSB0cmVhdGluZyBwdW5jdHVhdGlvbgotIyMgY2hhcmFjdGVy cyBhcyBwYXJ0cyBvZiB3b3Jkcy4KLSMgc2V0IHdvcmRib3VuZHMKLQotIyMgVGhlIGNoYXJhY3Rl cnMgKGJlc2lkZXMgYWxwaGFudW1lcmljIG9uZXMpIHRoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQK LSMjIGFzIHBhcnRzIG9mIHdvcmRzLiAgVGhpcyBvcHRpb24gZG9lcyBub3QgaGF2ZSBhIGRlZmF1 bHQgdmFsdWUuICBXaGVuCi0jIyBzZXQsIGl0IG92ZXJyaWRlcyBvcHRpb24gJ3NldCB3b3JkYm91 bmRzJy4KLSMgc2V0IHdvcmRjaGFycyAiPF8+LiIKLQotIyMgTGV0IGFuIHVubW9kaWZpZWQgQmFj a3NwYWNlIG9yIERlbGV0ZSBlcmFzZSB0aGUgbWFya2VkIHJlZ2lvbiAoaW5zdGVhZAotIyMgb2Yg YSBzaW5nbGUgY2hhcmFjdGVyLCBhbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIGN1dGJ1ZmZlciku Ci0jIHNldCB6YXAKLQotIyMgSGlkZSB0aGUgYmFycyBwbHVzIGhlbHAgbGluZXMgYW5kIHVzZSB0 aGUgd2hvbGUgdGVybWluYWwgYXMgZWRpdCBhcmVhLgotIyBzZXQgemVybwotCi0KLSMjIFBhaW50 IHRoZSBpbnRlcmZhY2UgZWxlbWVudHMgb2YgbmFuby4gIFRoZXNlIGFyZSBleGFtcGxlczsgdGhl cmUgYXJlCi0jIyBubyBjb2xvcnMgYnkgZGVmYXVsdCwgZXhjZXB0IGZvciBlcnJvcmNvbG9yIGFu ZCBzcG90bGlnaHRjb2xvci4KLSMgc2V0IHRpdGxlY29sb3IgYm9sZCx3aGl0ZSxibHVlCi0jIHNl dCBwcm9tcHRjb2xvciBsaWdodHdoaXRlLGdyZXkKLSMgc2V0IHN0YXR1c2NvbG9yIGJvbGQsd2hp dGUsZ3JlZW4KLSMgc2V0IGVycm9yY29sb3IgYm9sZCx3aGl0ZSxyZWQKLSMgc2V0IHNwb3RsaWdo dGNvbG9yIGJsYWNrLGxpZ2h0eWVsbG93Ci0jIHNldCBzZWxlY3RlZGNvbG9yIGxpZ2h0d2hpdGUs IzgwNAotIyBzZXQgc3RyaXBlY29sb3IgLCM0NDQKLSMgc2V0IHNjcm9sbGVyY29sb3Igc2xhdGUs IzIyMgotIyBzZXQgbnVtYmVyY29sb3IgY3lhbgotIyBzZXQga2V5Y29sb3IgY3lhbgotIyBzZXQg ZnVuY3Rpb25jb2xvciBncmVlbgotCi0jIyBJbiByb290J3MgLm5hbm9yYyB5b3UgbWlnaHQgd2Fu dCB0byB1c2U6Ci0jIHNldCB0aXRsZWNvbG9yIGJvbGQsd2hpdGUsbWFnZW50YQotIyBzZXQgcHJv bXB0Y29sb3IgYmxhY2sseWVsbG93Ci0jIHNldCBzdGF0dXNjb2xvciBib2xkLHdoaXRlLG1hZ2Vu dGEKLSMgc2V0IGVycm9yY29sb3IgYm9sZCx3aGl0ZSxyZWQKLSMgc2V0IHNwb3RsaWdodGNvbG9y IGJsYWNrLG9yYW5nZQotIyBzZXQgc2VsZWN0ZWRjb2xvciBsaWdodHdoaXRlLGN5YW4KLSMgc2V0 IHN0cmlwZWNvbG9yICx5ZWxsb3cKLSMgc2V0IHNjcm9sbGVyY29sb3IgbWFnZW50YQotIyBzZXQg bnVtYmVyY29sb3IgbWFnZW50YQotIyBzZXQga2V5Y29sb3IgbGlnaHRtYWdlbnRhCi0jIHNldCBm dW5jdGlvbmNvbG9yIG1hZ2VudGEKLQotCi0jIyA9PT0gU3ludGF4IGNvbG9yaW5nID09PQotIyMg Rm9yIGFsbCBkZXRhaWxzLCBzZWUgJ21hbiBuYW5vcmMnLCBzZWN0aW9uIFNZTlRBWCBISUdITElH SFRJTkcuCi0KLSMjIFRvIGluY2x1ZGUgbW9zdCBvZiB0aGUgZXhpc3Rpbmcgc3ludGF4IGRlZmlu aXRpb25zLCB5b3UgY2FuIGRvOgotIyBpbmNsdWRlIEBQS0dEQVRBRElSQC8qLm5hbm9yYwotCi0j IyBPciB5b3UgY2FuIHNlbGVjdCBqdXN0IHRoZSBvbmVzIHlvdSBuZWVkLiAgRm9yIGV4YW1wbGU6 Ci0jIGluY2x1ZGUgQFBLR0RBVEFESVJAL2h0bWwubmFub3JjCi0jIGluY2x1ZGUgQFBLR0RBVEFE SVJAL3B5dGhvbi5uYW5vcmMKLSMgaW5jbHVkZSBAUEtHREFUQURJUkAvc2gubmFub3JjCi0KLSMj IEluIEBQS0dEQVRBRElSQC9leHRyYS8geW91IGNhbiBmaW5kIHNvbWUgc3ludGF4ZXMgdGhhdCBh cmUKLSMjIHNwZWNpZmljIGZvciBjZXJ0YWluIGRpc3Ryb3Mgb3IgZm9yIHNvbWUgbGVzcyBjb21t b24gbGFuZ3VhZ2VzLgotCi0KLSMjIElmIDxUYWI+IHNob3VsZCBhbHdheXMgcHJvZHVjZSBmb3Vy IHNwYWNlcyB3aGVuIGVkaXRpbmcgYSBQeXRob24gZmlsZSwKLSMjIGluZGVwZW5kZW50IG9mIHRo ZSBzZXR0aW5ncyBvZiAndGFic2l6ZScgYW5kICd0YWJzdG9zcGFjZXMnOgotIyBleHRlbmRzeW50 YXggcHl0aG9uIHRhYmdpdmVzICIgICAgIgotCi0KLSMjID09PSBLZXkgYmluZGluZ3MgPT09Ci0j IyBGb3IgYWxsIGRldGFpbHMsIHNlZSAnbWFuIG5hbm9yYycsIHNlY3Rpb24gUkVCSU5ESU5HIEtF WVMuCi0KLSMjIElmIHlvdSB3YW50IHRvIHN1c3BlbmQgbmFubyB3aXRoIG9uZSBrZXlzdHJva2Ug KGluc3RlYWQgb2Ygd2l0aCBeVF5aKToKLSMgYmluZCBeWiBzdXNwZW5kIG1haW4KLQotIyMgVGhl IDxDdHJsK0RlbGV0ZT4ga2V5c3Ryb2tlIGRlbGV0ZXMgdGhlIHdvcmQgdG8gdGhlIHJpZ2h0IG9m IHRoZSBjdXJzb3IuCi0jIyBPbiBzb21lIHRlcm1pbmFscyB0aGUgPEN0cmwrQmFja3NwYWNlPiBr ZXlzdHJva2UgcHJvZHVjZXMgXkgsIHdoaWNoIGlzCi0jIyB0aGUgQVNDSUkgY2hhcmFjdGVyIGZv ciBiYWNrc3BhY2UsIHNvIGl0IGlzIGJvdW5kIGJ5IGRlZmF1bHQgdG8gdGhlCi0jIyBiYWNrc3Bh Y2UgZnVuY3Rpb24uICBUaGUgPEJhY2tzcGFjZT4ga2V5IGl0c2VsZiBwcm9kdWNlcyBhIGRpZmZl cmVudAotIyMga2V5Y29kZSwgd2hpY2ggaXMgaGFyZC1ib3VuZCB0byB0aGUgYmFja3NwYWNlIGZ1 bmN0aW9uLiAgU28sIGlmIHlvdQotIyMgbm9ybWFsbHkgdXNlIDxCYWNrc3BhY2U+IGZvciBiYWNr c3BhY2luZyBhbmQgbm90IF5ILCB5b3UgY2FuIG1ha2UKLSMjIDxDdHJsK0JhY2tzcGFjZT4gZGVs ZXRlIHRoZSB3b3JkIHRvIHRoZSBsZWZ0IG9mIHRoZSBjdXJzb3Igd2l0aDoKLSMgYmluZCBeSCBj aG9wd29yZGxlZnQgbWFpbgotCi0jIyBGb3IgYSBtb3JlIG1uZW1vbmljIENvbW1lbnQga2V5c3Ry b2tlIChvdmVycmlkaW5nIEN1dC1mcm9tLWN1cnNvcik6Ci0jIGJpbmQgTS1LIGNvbW1lbnQgbWFp bgotCi0jIyBJZiB5b3Ugd2FudCBeTCB0byBqdXN0IHJlZnJlc2ggdGhlIHNjcmVlbiBhbmQgbm90 IGNlbnRlciB0aGUgY3Vyc29yOgotIyBiaW5kIF5MIHJlZnJlc2ggbWFpbgotCi0jIyBXaGVuIHlv dSBzb21ldGltZXMgdHlwZSBNLUogaW5zdGVhZCBvZiBNLUssIG9yIE0tVCBpbnN0ZWFkIG9mIE0t UjoKLSMgdW5iaW5kIE0tSiBtYWluCi0jIHVuYmluZCBNLVQgbWFpbgotIyMgKFRob3NlIGZ1bmN0 aW9ucyBhcmUgc3RpbGwgYWNjZXNzaWJsZSB0aHJvdWdoIF5UXkogYW5kIF5UXlYuKQotCi0jIyBG b3IgcXVpY2tseSB1cHBlcmNhc2luZyBvciBsb3dlcmNhc2luZyB0aGUgd29yZCB0aGF0IHRoZSBj dXJzb3IgaXMgb24uCi0jIyAoVGhlc2UgZWZmZWN0aXZlbHkgc2VsZWN0IGEgd29yZCBhbmQgcGlw ZSBpdCB0aHJvdWdoIGEgc2VkIGNvbW1hbmQuKQotIyBiaW5kIFNoLU0tVSAie25leHR3b3JkfXtt YXJrfXtwcmV2d29yZH17ZXhlY3V0ZX18IHNlZCAncy8uKi9cVSYvJyB7ZW50ZXJ9IiBtYWluCi0j IGJpbmQgU2gtTS1MICJ7bmV4dHdvcmR9e21hcmt9e3ByZXZ3b3JkfXtleGVjdXRlfXwgc2VkICdz Ly4qL1xMJi8nIHtlbnRlcn0iIG1haW4KLQotIyMgRm9yIGNvcHlpbmcgYSBtYXJrZWQgcmVnaW9u IHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkOgotIyBiaW5kIFNoLU0tQyAie2V4ZWN1dGV9fCB4c2Vs IC1pYiB7ZW50ZXJ9e3VuZG99IiBtYWluCi0KLSMjIEZvciBjb3B5aW5nIHRleHQgdG8gdGhlIGxv Y2FsIGNsaXBib2FyZCB2aWEgT1NDIDUyIChpZiB0ZXJtaW5hbCBzdXBwb3J0cyBpdCk6Ci0jIGJp bmQgTS0qICJ7ZXhlY3V0ZX18fCBwcmludGYgIlwwMzNdNTI7Yzslc1wwMDciICIkKGJhc2U2NCB8 IHRyIC1kICdcbicpIiB7ZW50ZXJ9e3VuZG99IiBtYWluCi0KLSMjIEZvciBub3JtYWxpemluZyBV bmljb2RlIHRvIHByZWNvbXBvc2VkIGNoYXJhY3RlcnM6Ci0jIGJpbmQgU2gtTS1OICJ7ZXhlY3V0 ZX18IHVjb252IC14IG5mYyB7ZW50ZXJ9IiBtYWluCi0KLSMjIEZvciB3aXBpbmcgYWxsIGFuY2hv cnMgaW4gYSBidWZmZXI6Ci0jIGJpbmQgU2gtTS1XICJ7ZXhlY3V0ZX18IGNhdCB7ZW50ZXJ9IiBt YWluCi0KLSMjIEZvciBzbmlwcGluZyB0cmFpbGluZyBibGFua3Mgd2hlbiB5b3Ugc2F2ZSBhIGZp bGU6Ci0jIGJpbmQgXlMgIntleGVjdXRlfXwgc2VkICdzL1xzXCskLy8nIHtlbnRlcn17c2F2ZWZp bGV9IiBtYWluCi0KLSMjIElmIHlvdSB3b3VsZCBsaWtlIG5hbm8gdG8gaGF2ZSBrZXliaW5kaW5n cyB0aGF0IGFyZSBtb3JlICJ1c3VhbCIsCi0jIyBzdWNoIGFzIF5PIGZvciBPcGVuLCBeRiBmb3Ig RmluZCwgXkggZm9yIEhlbHAsIGFuZCBeUSBmb3IgUXVpdCwKLSMjIHRoZW4gdW5jb21tZW50IHRo ZXNlOgotIyBiaW5kIF5YIGN1dCBtYWluCi0jIGJpbmQgXkMgY29weSBtYWluCi0jIGJpbmQgXlYg cGFzdGUgYWxsCi0jIGJpbmQgXlEgZXhpdCBhbGwKLSMgYmluZCBeUyBzYXZlZmlsZSBtYWluCi0j IGJpbmQgXlcgd3JpdGVvdXQgbWFpbgotIyBiaW5kIF5PIGluc2VydCBtYWluCi0jIHNldCBtdWx0 aWJ1ZmZlcgotIyBiaW5kIF5IIGhlbHAgYWxsCi0jIGJpbmQgXkggZXhpdCBoZWxwCi0jIGJpbmQg XkYgd2hlcmVpcyBhbGwKLSMgYmluZCBeRyBmaW5kbmV4dCBhbGwKLSMgYmluZCBeQiB3aGVyZXdh cyBhbGwKLSMgYmluZCBeRCBmaW5kcHJldmlvdXMgYWxsCi0jIGJpbmQgXlIgcmVwbGFjZSBtYWlu Ci0jIHVuYmluZCBeVSBhbGwKLSMgdW5iaW5kIF5OIG1haW4KLSMgdW5iaW5kIF5ZIGFsbAotIyB1 bmJpbmQgTS1KIG1haW4KLSMgdW5iaW5kIE0tVCBtYWluCi0jIGJpbmQgXkEgbWFyayBtYWluCi0j IGJpbmQgXlAgbG9jYXRpb24gbWFpbgotIyBiaW5kIF5UIGdvdG9saW5lIG1haW4KLSMgYmluZCBe VCBnb3RvZGlyIGJyb3dzZXIKLSMgYmluZCBeVCBjdXRyZXN0b2ZmaWxlIGV4ZWN1dGUKLSMgYmlu ZCBeTCBsaW50ZXIgZXhlY3V0ZQotIyBiaW5kIF5FIGV4ZWN1dGUgbWFpbgotIyBiaW5kIF5LICJ7 bWFya317ZW5kfXt6YXB9IiBtYWluCi0jIGJpbmQgXlUgInttYXJrfXtob21lfXt6YXB9IiBtYWlu Ci0jIGJpbmQgXlogdW5kbyBtYWluCi0jIGJpbmQgXlkgcmVkbyBtYWluCmRpZmYgLS1naXQgYS9z cmMvZ2xvYmFsLmMgYi9zcmMvZ2xvYmFsLmMKaW5kZXggNjljYmRhZTQuLjI3ZDBhNTc1IDEwMDY0 NAotLS0gYS9zcmMvZ2xvYmFsLmMKKysrIGIvc3JjL2dsb2JhbC5jCkBAIC0zNzMsNiArMzczLDIw IEBAIGludCBrZXljb2RlX2Zyb21fc3RyaW5nKGNvbnN0IGNoYXIgKmtleXN0cmluZykKIAkJCQly ZXR1cm4gLTE7CiAJCX0gZWxzZSBpZiAoc3RyY2FzZWNtcChrZXlzdHJpbmcsICJeU3BhY2UiKSA9 PSAwKQogCQkJcmV0dXJuIDA7CisJCWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiXkxl ZnQiKSA9PSAwKQorCQkJcmV0dXJuIENPTlRST0xfTEVGVDsKKwkJZWxzZSBpZiAoc3RyY2FzZWNt cChrZXlzdHJpbmcsICJeUmlnaHQiKSA9PSAwKQorCQkJcmV0dXJuIENPTlRST0xfUklHSFQ7CisJ CWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiXlVwIikgPT0gMCkKKwkJCXJldHVybiBD T05UUk9MX1VQOworCQllbHNlIGlmIChzdHJjYXNlY21wKGtleXN0cmluZywgIl5Eb3duIikgPT0g MCkKKwkJCXJldHVybiBDT05UUk9MX0RPV047CisJCWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3Ry aW5nLCAiXkhvbWUiKSA9PSAwKQorCQkJcmV0dXJuIENPTlRST0xfSE9NRTsKKwkJZWxzZSBpZiAo c3RyY2FzZWNtcChrZXlzdHJpbmcsICJeRW5kIikgPT0gMCkKKwkJCXJldHVybiBDT05UUk9MX0VO RDsKKwkJZWxzZSBpZiAoc3RyY2FzZWNtcChrZXlzdHJpbmcsICJeRGVsIikgPT0gMCkKKwkJCXJl dHVybiBDT05UUk9MX0RFTEVURTsKIAkJZWxzZQogCQkJcmV0dXJuIC0xOwogCX0gZWxzZSBpZiAo a2V5c3RyaW5nWzBdID09ICdNJykgewpAQCAtMzkyLDYgKzQwNiwyMCBAQCBpbnQga2V5Y29kZV9m cm9tX3N0cmluZyhjb25zdCBjaGFyICprZXlzdHJpbmcpCiAJCQlyZXR1cm4gQUxUX1VQOwogCQll bHNlIGlmIChzdHJjYXNlY21wKGtleXN0cmluZywgIk0tRG93biIpID09IDApCiAJCQlyZXR1cm4g QUxUX0RPV047CisJCWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiTS1Ib21lIikgPT0g MCkKKwkJCXJldHVybiBBTFRfSE9NRTsKKwkJZWxzZSBpZiAoc3RyY2FzZWNtcChrZXlzdHJpbmcs ICJNLUVuZCIpID09IDApCisJCQlyZXR1cm4gQUxUX0VORDsKKwkJZWxzZSBpZiAoc3RyY2FzZWNt cChrZXlzdHJpbmcsICJNLVBnVXAiKSA9PSAwKQorCQkJcmV0dXJuIEFMVF9QQUdFVVA7CisJCWVs c2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiTS1QZ0RuIikgPT0gMCkKKwkJCXJldHVybiBB TFRfUEFHRURPV047CisJCWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiTS1JbnMiKSA9 PSAwKQorCQkJcmV0dXJuIEFMVF9JTlNFUlQ7CisJCWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3Ry aW5nLCAiTS1EZWwiKSA9PSAwKQorCQkJcmV0dXJuIEFMVF9ERUxFVEU7CisJCWVsc2UgaWYgKHN0 cmNhc2VjbXAoa2V5c3RyaW5nLCAiTS1Cc3AiKSA9PSAwKQorCQkJcmV0dXJuIENPTlRST0xfU0hJ RlRfREVMRVRFOwogCQllbHNlCiAJCQlyZXR1cm4gLTE7CiAjaWZkZWYgRU5BQkxFX05BTk9SQwpA QCAtNDAxLDEyICs0MjksNDIgQEAgaW50IGtleWNvZGVfZnJvbV9zdHJpbmcoY29uc3QgY2hhciAq a2V5c3RyaW5nKQogCQlzaGlmdGVkX21ldGFzID0gVFJVRTsKIAkJcmV0dXJuIChrZXlzdHJpbmdb NV0gJiAweDVGKTsKICNlbmRpZgotCX0gZWxzZSBpZiAoa2V5c3RyaW5nWzBdID09ICdGJykgewor CX0gZWxzZSBpZiAoc3RyY2FzZWNtcChrZXlzdHJpbmcsICJTaC1EZWwiKSA9PSAwKQorCQlyZXR1 cm4gU0hJRlRfREVMRVRFOworCWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiU2gtVGFi IikgPT0gMCkKKwkJcmV0dXJuIFNISUZUX1RBQjsKKwllbHNlIGlmIChzdHJjYXNlY21wKGtleXN0 cmluZywgIlNoLV5EZWwiKSA9PSAwKQorCQlyZXR1cm4gQ09OVFJPTF9TSElGVF9ERUxFVEU7CisJ ZWxzZSBpZiAoa2V5c3RyaW5nWzBdID09ICdGJykgewogCQlpbnQgZm4gPSBhdG9pKCZrZXlzdHJp bmdbMV0pOwogCQlpZiAoZm4gPCAxIHx8IGZuID4gMjQpCiAJCQlyZXR1cm4gLTE7CiAJCXJldHVy biBLRVlfRjAgKyBmbjsKLQl9IGVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiSW5zIikg PT0gMCkKKwl9IGVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiRW50ZXIiKSA9PSAwKQor CQlyZXR1cm4gS0VZX0VOVEVSOworCWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiVGFi IikgPT0gMCkKKwkJcmV0dXJuICdcdCc7CisJZWxzZSBpZiAoc3RyY2FzZWNtcChrZXlzdHJpbmcs ICJCc3AiKSA9PSAwKQorCQlyZXR1cm4gS0VZX0JBQ0tTUEFDRTsKKwllbHNlIGlmIChzdHJjYXNl Y21wKGtleXN0cmluZywgIlNwYWNlIikgPT0gMCkKKwkJcmV0dXJuIChpbnQpJyAnOworCWVsc2Ug aWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiTGVmdCIpID09IDApCisJCXJldHVybiBLRVlfTEVG VDsKKwllbHNlIGlmIChzdHJjYXNlY21wKGtleXN0cmluZywgIlJpZ2h0IikgPT0gMCkKKwkJcmV0 dXJuIEtFWV9SSUdIVDsKKwllbHNlIGlmIChzdHJjYXNlY21wKGtleXN0cmluZywgIlVwIikgPT0g MCkKKwkJcmV0dXJuIEtFWV9VUDsKKwllbHNlIGlmIChzdHJjYXNlY21wKGtleXN0cmluZywgIkRv d24iKSA9PSAwKQorCQlyZXR1cm4gS0VZX0RPV047CisJZWxzZSBpZiAoc3RyY2FzZWNtcChrZXlz dHJpbmcsICJIb21lIikgPT0gMCkKKwkJcmV0dXJuIEtFWV9IT01FOworCWVsc2UgaWYgKHN0cmNh c2VjbXAoa2V5c3RyaW5nLCAiRW5kIikgPT0gMCkKKwkJcmV0dXJuIEtFWV9FTkQ7CisJZWxzZSBp ZiAoc3RyY2FzZWNtcChrZXlzdHJpbmcsICJQZ1VwIikgPT0gMCkKKwkJcmV0dXJuIEtFWV9QUEFH RTsKKwllbHNlIGlmIChzdHJjYXNlY21wKGtleXN0cmluZywgIlBnRG4iKSA9PSAwKQorCQlyZXR1 cm4gS0VZX05QQUdFOworCWVsc2UgaWYgKHN0cmNhc2VjbXAoa2V5c3RyaW5nLCAiSW5zIikgPT0g MCkKIAkJcmV0dXJuIEtFWV9JQzsKIAllbHNlIGlmIChzdHJjYXNlY21wKGtleXN0cmluZywgIkRl bCIpID09IDApCiAJCXJldHVybiBLRVlfREM7CkBAIC0xMjMxLDE0OCArMTI4OSwxMiBAQCB2b2lk IHNob3J0Y3V0X2luaXQodm9pZCkKIAkJCU5fKCJOZXh0IExpbnRlciBtZXNzYWdlIiksIFdIRU5I RUxQKG5leHRsaW50X2dpc3QpLCBUT0dFVEhFUik7CiAjZW5kaWYKIAotI2lmZGVmIF9fbGludXhf XwotI2RlZmluZSBTTEFTSF9PUl9EQVNIICAob25fYV92dCkgPyAiXi0iIDogIl4vIgotI2Vsc2UK LSNkZWZpbmUgU0xBU0hfT1JfREFTSCAgIl4vIgotI2VuZGlmCiAKLQkvKiBMaW5rIGtleSBjb21i b3MgdG8gZnVuY3Rpb25zIGluIGNlcnRhaW4gbWVudXMuICovCi0JYWRkX3RvX3NjbGlzdChNTU9T VHxNQlJPV1NFUiwgIl5NIiwgJ1xyJywgZG9fZW50ZXIsIDApOwotCWFkZF90b19zY2xpc3QoTU1P U1R8TUJST1dTRVIsICJFbnRlciIsIEtFWV9FTlRFUiwgZG9fZW50ZXIsIDApOwotCWFkZF90b19z Y2xpc3QoTU1PU1QsICJeSSIsICdcdCcsIGRvX3RhYiwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTU9T VCwgIlRhYiIsICdcdCcsIGRvX3RhYiwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJPV1NF UnxNSEVMUCwgIl5CIiwgMCwgZG9fc2VhcmNoX2JhY2t3YXJkLCAwKTsKLQlhZGRfdG9fc2NsaXN0 KE1NQUlOfE1CUk9XU0VSfE1IRUxQLCAiXkYiLCAwLCBkb19zZWFyY2hfZm9yd2FyZCwgMCk7Ci0J aWYgKElTU0VUKE1PREVSTl9CSU5ESU5HUykpIHsKLQkJYWRkX3RvX3NjbGlzdCgoTU1PU1R8TUJS T1dTRVIpICYgfk1GSU5ESU5IRUxQLCBoZWxwX2tleSwgMCwgZG9faGVscCwgMCk7Ci0JCWFkZF90 b19zY2xpc3QoTUhFTFAsIGhlbHBfa2V5LCAwLCBkb19leGl0LCAwKTsKLQkJYWRkX3RvX3NjbGlz dChNTUFJTnxNQlJPV1NFUnxNSEVMUCwgIl5RIiwgMCwgZG9fZXhpdCwgMCk7Ci0JCWFkZF90b19z Y2xpc3QoTU1BSU4sICJeUyIsIDAsIGRvX3NhdmVmaWxlLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChN TUFJTiwgIl5XIiwgMCwgZG9fd3JpdGVvdXQsIDApOwotCQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAi Xk8iLCAwLCBkb19pbnNlcnRmaWxlLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJPV1NF UnxNSEVMUCwgIl5EIiwgMCwgZG9fZmluZHByZXZpb3VzLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChN TUFJTnxNQlJPV1NFUnxNSEVMUCwgIl5HIiwgMCwgZG9fZmluZG5leHQsIDApOwotCQlhZGRfdG9f c2NsaXN0KE1NQUlOLCAiXlIiLCAwLCBkb19yZXBsYWNlLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChN TUFJTiwgIl5UIiwgMCwgZG9fZ290b2xpbmVjb2x1bW4sIDApOwotCQlhZGRfdG9fc2NsaXN0KE1N QUlOLCAiXlAiLCAwLCByZXBvcnRfY3Vyc29yX3Bvc2l0aW9uLCAwKTsKLSNpZm5kZWYgTkFOT19U SU5ZCi0JCWFkZF90b19zY2xpc3QoTU1BSU4sICJeWiIsIDAsIGRvX3VuZG8sIDApOwotCQlhZGRf dG9fc2NsaXN0KE1NQUlOLCAiXlkiLCAwLCBkb19yZWRvLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChN TUFJTiwgIl5BIiwgMCwgZG9fbWFyaywgMCk7Ci0jZW5kaWYKLQkJYWRkX3RvX3NjbGlzdChNTUFJ TiwgIl5YIiwgMCwgY3V0X3RleHQsIDApOwotCQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiXkMiLCAw LCBjb3B5X3RleHQsIDApOwotCQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiXlYiLCAwLCBwYXN0ZV90 ZXh0LCAwKTsKLQl9IGVsc2UgewotCQlhZGRfdG9fc2NsaXN0KChNTU9TVHxNQlJPV1NFUikgJiB+ TUZJTkRJTkhFTFAsICJeRyIsIDAsIGRvX2hlbHAsIDApOwotCQlhZGRfdG9fc2NsaXN0KE1NQUlO fE1CUk9XU0VSfE1IRUxQLCAiXlgiLCAwLCBkb19leGl0LCAwKTsKLQkJaWYgKCFJU1NFVChQUkVT RVJWRSkpCi0JCQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiXlMiLCAwLCBkb19zYXZlZmlsZSwgMCk7 Ci0JCWFkZF90b19zY2xpc3QoTU1BSU4sICJeTyIsIDAsIGRvX3dyaXRlb3V0LCAwKTsKLQkJYWRk X3RvX3NjbGlzdChNTUFJTiwgIl5SIiwgMCwgZG9faW5zZXJ0ZmlsZSwgMCk7Ci0JCWlmICghSVNT RVQoUFJFU0VSVkUpKQotCQkJYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJPV1NFUnxNSEVMUCwgIl5R IiwgMCwgZG9fc2VhcmNoX2JhY2t3YXJkLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJP V1NFUnxNSEVMUCwgIl5XIiwgMCwgZG9fc2VhcmNoX2ZvcndhcmQsIDApOwotCQlhZGRfdG9fc2Ns aXN0KE1NT1NULCAiXkEiLCAwLCBkb19ob21lLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNTU9TVCwg Il5FIiwgMCwgZG9fZW5kLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJPV1NFUnxNSEVM UCwgIl5QIiwgMCwgZG9fdXAsIDApOwotCQlhZGRfdG9fc2NsaXN0KE1NQUlOfE1CUk9XU0VSfE1I RUxQLCAiXk4iLCAwLCBkb19kb3duLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJPV1NF UnxNSEVMUHxNTElOVEVSLCAiXlkiLCAwLCBkb19wYWdlX3VwLCAwKTsKLQkJYWRkX3RvX3NjbGlz dChNTUFJTnxNQlJPV1NFUnxNSEVMUHxNTElOVEVSLCAiXlYiLCAwLCBkb19wYWdlX2Rvd24sIDAp OwotCQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiXkMiLCAwLCByZXBvcnRfY3Vyc29yX3Bvc2l0aW9u LCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNTU9TVCwgIl5IIiwgJ1xiJywgZG9fYmFja3NwYWNlLCAw KTsKLQkJYWRkX3RvX3NjbGlzdChNTU9TVCwgIl5EIiwgMCwgZG9fZGVsZXRlLCAwKTsKLQl9Ci0J YWRkX3RvX3NjbGlzdChNTU9TVCwgIkJzcCIsIEtFWV9CQUNLU1BBQ0UsIGRvX2JhY2tzcGFjZSwg MCk7Ci0JYWRkX3RvX3NjbGlzdChNTU9TVCwgIlNoLURlbCIsIFNISUZUX0RFTEVURSwgZG9fYmFj a3NwYWNlLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NT1NULCAiRGVsIiwgS0VZX0RDLCBkb19kZWxl dGUsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJJbnMiLCBLRVlfSUMsIGRvX2luc2VydGZp bGUsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJeXFwiLCAwLCBkb19yZXBsYWNlLCAwKTsK LQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS1SIiwgMCwgZG9fcmVwbGFjZSwgMCk7Ci0JYWRkX3Rv X3NjbGlzdChNTU9TVCwgIl5LIiwgMCwgY3V0X3RleHQsIDApOwotI2lmZGVmIE5BTk9fVElOWQot CWFkZF90b19zY2xpc3QoTU1BSU4sICJNLTYiLCAwLCBjb3B5X3RleHQsIDApOwotCWFkZF90b19z Y2xpc3QoTU1BSU4sICJNLV4iLCAwLCBjb3B5X3RleHQsIDApOwotCWFkZF90b19zY2xpc3QoTU1B SU4sICJeVSIsIDAsIHBhc3RlX3RleHQsIDApOwotI2lmZGVmIEVOQUJMRV9TUEVMTEVSCi0JYWRk X3RvX3NjbGlzdChNTUFJTiwgSVNTRVQoTU9ERVJOX0JJTkRJTkdTKSA/ICJeRSIgOiAiXlQiLCAw LCBkb19zcGVsbCwgMCk7Ci0jZW5kaWYKLSNlbHNlCi0JYWRkX3RvX3NjbGlzdChNTU9TVCwgIk0t NiIsIDAsIGNvcHlfdGV4dCwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTU9TVCwgIk0tXiIsIDAsIGNv cHlfdGV4dCwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTU9TVCwgIl5VIiwgMCwgcGFzdGVfdGV4dCwg MCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgSVNTRVQoTU9ERVJOX0JJTkRJTkdTKSA/ICJeRSIg OiAiXlQiLCAwLCBkb19leGVjdXRlLCAwKTsKLSNpZmRlZiBFTkFCTEVfU1BFTExFUgotCWlmICgh SVNTRVQoUFJFU0VSVkUpKQotCQlhZGRfdG9fc2NsaXN0KE1FWEVDVVRFLCAiXlMiLCAwLCBkb19z cGVsbCwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNRVhFQ1VURSwgIl5UIiwgMCwgZG9fc3BlbGwsIDAp OwotI2VuZGlmCi0jZW5kaWYKLSNpZmRlZiBFTkFCTEVfSlVTVElGWQotCWFkZF90b19zY2xpc3Qo TU1BSU4sICJeSiIsICdcbicsIGRvX2p1c3RpZnksIDApOwotI2VuZGlmCi0jaWZkZWYgRU5BQkxF X0xJTlRFUgotCWFkZF90b19zY2xpc3QoTUVYRUNVVEUsICJeWSIsIDAsIGRvX2xpbnRlciwgMCk7 Ci0jZW5kaWYKLSNpZmRlZiBFTkFCTEVfRk9STUFUVEVSCi0JYWRkX3RvX3NjbGlzdChNRVhFQ1VU RSwgIl5PIiwgMCwgZG9fZm9ybWF0dGVyLCAwKTsKLSNlbmRpZgotCWFkZF90b19zY2xpc3QoTU1B SU4sIFNMQVNIX09SX0RBU0gsIDAsIGRvX2dvdG9saW5lY29sdW1uLCAwKTsKLQlhZGRfdG9fc2Ns aXN0KE1NQUlOLCAiTS1HIiwgMCwgZG9fZ290b2xpbmVjb2x1bW4sIDApOwotCWFkZF90b19zY2xp c3QoTU1BSU4sICJeXyIsIDAsIGRvX2dvdG9saW5lY29sdW1uLCAwKTsKLQlhZGRfdG9fc2NsaXN0 KE1NQUlOfE1CUk9XU0VSfE1IRUxQfE1MSU5URVIsICJQZ1VwIiwgS0VZX1BQQUdFLCBkb19wYWdl X3VwLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOfE1CUk9XU0VSfE1IRUxQfE1MSU5URVIsICJQ Z0RuIiwgS0VZX05QQUdFLCBkb19wYWdlX2Rvd24sIDApOwotCWFkZF90b19zY2xpc3QoTUJST1dT RVJ8TUhFTFAsICJCc3AiLCBLRVlfQkFDS1NQQUNFLCBkb19wYWdlX3VwLCAwKTsKLQlhZGRfdG9f c2NsaXN0KE1CUk9XU0VSfE1IRUxQLCAiU2gtRGVsIiwgU0hJRlRfREVMRVRFLCBkb19wYWdlX3Vw LCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1CUk9XU0VSfE1IRUxQLCAiU3BhY2UiLCAweDIwLCBkb19w YWdlX2Rvd24sIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU58TUhFTFAsICJNLVxcIiwgMCwgdG9f Zmlyc3RfbGluZSwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTnxNSEVMUCwgIl5Ib21lIiwgQ09O VFJPTF9IT01FLCB0b19maXJzdF9saW5lLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOfE1IRUxQ LCAiTS0vIiwgMCwgdG9fbGFzdF9saW5lLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOfE1IRUxQ LCAiXkVuZCIsIENPTlRST0xfRU5ELCB0b19sYXN0X2xpbmUsIDApOwotCWFkZF90b19zY2xpc3Qo TU1BSU58TUJST1dTRVJ8TUhFTFAsICJNLUIiLCAwLCBkb19maW5kcHJldmlvdXMsIDApOwotCWFk ZF90b19zY2xpc3QoTU1BSU58TUJST1dTRVJ8TUhFTFAsICJNLUYiLCAwLCBkb19maW5kbmV4dCwg MCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJPV1NFUnxNSEVMUCwgIk0tVyIsIDAsIGRvX2Zp bmRuZXh0LCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOfE1CUk9XU0VSfE1IRUxQLCAiTS1RIiwg MCwgZG9fZmluZHByZXZpb3VzLCAwKTsKLSNpZmRlZiBOQU5PX1RJTlkKLSNpZmRlZiBFTkFCTEVf TElORU5VTUJFUlMKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS1OIiwgMCwgdG9nZ2xlX251bWJl cnMsIDApOwotI2Vsc2UKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS1OIiwgMCwgdG9fbmV4dF93 b3JkLCAwKTsKLSNlbmRpZgotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLUQiLCAwLCB0b19wcmV2 X3dvcmQsIDApOwotI2Vsc2UKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS1dIiwgMCwgZG9fZmlu ZF9icmFja2V0LCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS1BIiwgMCwgZG9fbWFyaywg MCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIl42IiwgMCwgZG9fbWFyaywgMCk7Ci0JYWRkX3Rv X3NjbGlzdChNTUFJTiwgIl5eIiwgMCwgZG9fbWFyaywgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJ TiwgIk0tfSIsIDAsIGRvX2luZGVudCwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0teyIs IDAsIGRvX3VuaW5kZW50LCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiU2gtVGFiIiwgU0hJ RlRfVEFCLCBkb191bmluZGVudCwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tOiIsIDAs IHJlY29yZF9tYWNybywgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tOyIsIDAsIHJ1bl9t YWNybywgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tVSIsIDAsIGRvX3VuZG8sIDApOwot CWFkZF90b19zY2xpc3QoTU1BSU4sICJNLUUiLCAwLCBkb19yZWRvLCAwKTsKLQlhZGRfdG9fc2Ns aXN0KE1NQUlOLCAiTS1Cc3AiLCBDT05UUk9MX1NISUZUX0RFTEVURSwgY2hvcF9wcmV2aW91c193 b3JkLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiU2gtXkRlbCIsIENPTlRST0xfU0hJRlRf REVMRVRFLCBjaG9wX3ByZXZpb3VzX3dvcmQsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJe RGVsIiwgQ09OVFJPTF9ERUxFVEUsIGNob3BfbmV4dF93b3JkLCAwKTsKLQlhZGRfdG9fc2NsaXN0 KE1NQUlOLCAiTS1EZWwiLCBBTFRfREVMRVRFLCB6YXBfdGV4dCwgMCk7Ci0JYWRkX3RvX3NjbGlz dChNTUFJTiwgIk0tSW5zIiwgQUxUX0lOU0VSVCwgcHV0X29yX2xpZnRfYW5jaG9yLCAwKTsKLQlh ZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS1Ib21lIiwgQUxUX0hPTUUsIHRvX3RvcF9yb3csIDApOwot CWFkZF90b19zY2xpc3QoTU1BSU4sICJNLUVuZCIsIEFMVF9FTkQsIHRvX2JvdHRvbV9yb3csIDAp OwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLVBnVXAiLCBBTFRfUEFHRVVQLCB0b19wcmV2X2Fu Y2hvciwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tUGdEbiIsIEFMVF9QQUdFRE9XTiwg dG9fbmV4dF9hbmNob3IsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLVwiIiwgMCwgcHV0 X29yX2xpZnRfYW5jaG9yLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS0nIiwgMCwgdG9f bmV4dF9hbmNob3IsIDApOwotI2VuZGlmCi0jaWZkZWYgRU5BQkxFX1dPUkRDT01QTEVUSU9OCi0J YWRkX3RvX3NjbGlzdChNTUFJTiwgIl5dIiwgMCwgY29tcGxldGVfYV93b3JkLCAwKTsKLSNlbmRp ZgotI2lmZGVmIEVOQUJMRV9DT01NRU5UCi0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tMyIsIDAs IGRvX2NvbW1lbnQsIDApOwotI2VuZGlmCi0JYWRkX3RvX3NjbGlzdChNTU9TVCAmIH5NTUFJTiwg Il5CIiwgMCwgZG9fbGVmdCwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTU9TVCAmIH5NTUFJTiwgIl5G IiwgMCwgZG9fcmlnaHQsIDApOworCS8qIExpbmsga2V5IGNvbWJvcyB0byBmdW5jdGlvbnMgaW4g Y2VydGFpbiBtZW51cy4KKwkgKiBBbGwgbmFtZWQga2V5IGJpbmRpbmdzIGFyZSBsb2FkZWQgZnJv bSB0aGUgbmFub3JjIGZpbGU7IG9ubHkKKwkgKiB0ZXJtaW5hbC1zcGVjaWZpYyBzZXF1ZW5jZXMg YW5kIHVucHJvZ3JhbW1hYmxlIGludGVybmFsIGtleWNvZGVzCisJICogYXJlIHJlZ2lzdGVyZWQg aGVyZS4gKi8KKwogI2lmZGVmIEVOQUJMRV9VVEY4CiAJaWYgKHVzaW5nX3V0ZjgpIHsKIAkJYWRk X3RvX3NjbGlzdChNTU9TVHxNQlJPV1NFUnxNSEVMUCwgIlx4RTJceDk3XHg4MiIsIEtFWV9MRUZU LCBkb19sZWZ0LCAwKTsKQEAgLTEzODUsMjIyICsxMzA3LDI3IEBAIHZvaWQgc2hvcnRjdXRfaW5p dCh2b2lkKQogCQkJYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tXHhFMlx4OTZceGI4IiwgQUxUX1JJ R0hULCBzd2l0Y2hfdG9fbmV4dF9idWZmZXIsIDApOwogCQl9CiAjZW5kaWYKLQl9IGVsc2UKLSNl bmRpZgotCXsKLQkJYWRkX3RvX3NjbGlzdChNTU9TVHxNQlJPV1NFUnxNSEVMUCwgIkxlZnQiLCBL RVlfTEVGVCwgZG9fbGVmdCwgMCk7Ci0JCWFkZF90b19zY2xpc3QoTU1PU1R8TUJST1dTRVJ8TUhF TFAsICJSaWdodCIsIEtFWV9SSUdIVCwgZG9fcmlnaHQsIDApOwotCQlhZGRfdG9fc2NsaXN0KE1T T01FLCAiXkxlZnQiLCBDT05UUk9MX0xFRlQsIHRvX3ByZXZfd29yZCwgMCk7Ci0JCWFkZF90b19z Y2xpc3QoTVNPTUUsICJeUmlnaHQiLCBDT05UUk9MX1JJR0hULCB0b19uZXh0X3dvcmQsIDApOwot I2lmIGRlZmluZWQoRU5BQkxFX01VTFRJQlVGRkVSKSAmJiAhZGVmaW5lZChOQU5PX1RJTlkpCi0J CWlmICghb25fYV92dCkgewotCQkJYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tTGVmdCIsIEFMVF9M RUZULCBzd2l0Y2hfdG9fcHJldl9idWZmZXIsIDApOwotCQkJYWRkX3RvX3NjbGlzdChNTUFJTiwg Ik0tUmlnaHQiLCBBTFRfUklHSFQsIHN3aXRjaF90b19uZXh0X2J1ZmZlciwgMCk7Ci0JCX0KLSNl bmRpZgotCX0KLQlhZGRfdG9fc2NsaXN0KE1NT1NULCAiTS1TcGFjZSIsIDAsIHRvX3ByZXZfd29y ZCwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTU9TVCwgIl5TcGFjZSIsIDAsIHRvX25leHRfd29yZCwg MCk7Ci0JYWRkX3RvX3NjbGlzdChNTU9TVCwgIkhvbWUiLCBLRVlfSE9NRSwgZG9faG9tZSwgMCk7 Ci0JYWRkX3RvX3NjbGlzdChNTU9TVCwgIkVuZCIsIEtFWV9FTkQsIGRvX2VuZCwgMCk7Ci0jaWZk ZWYgRU5BQkxFX1VURjgKLQlpZiAodXNpbmdfdXRmOCkgewogCQlhZGRfdG9fc2NsaXN0KE1NQUlO fE1CUk9XU0VSfE1IRUxQLCAiXHhFMlx4OTZceGI0IiwgS0VZX1VQLCBkb191cCwgMCk7CiAJCWFk ZF90b19zY2xpc3QoTU1BSU58TUJST1dTRVJ8TUhFTFAsICJceEUyXHg5Nlx4YmUiLCBLRVlfRE9X TiwgZG9fZG93biwgMCk7CiAJCWFkZF90b19zY2xpc3QoTU1BSU58TUJST1dTRVJ8TUxJTlRFUiwg Il5ceEUyXHg5Nlx4YjQiLCBDT05UUk9MX1VQLCB0b19wcmV2X2Jsb2NrLCAwKTsKIAkJYWRkX3Rv X3NjbGlzdChNTUFJTnxNQlJPV1NFUnxNTElOVEVSLCAiXlx4RTJceDk2XHhiZSIsIENPTlRST0xf RE9XTiwgdG9fbmV4dF9ibG9jaywgMCk7Ci0JfSBlbHNlCi0jZW5kaWYKLQl7Ci0JCWFkZF90b19z Y2xpc3QoTU1BSU58TUJST1dTRVJ8TUhFTFAsICJVcCIsIEtFWV9VUCwgZG9fdXAsIDApOwotCQlh ZGRfdG9fc2NsaXN0KE1NQUlOfE1CUk9XU0VSfE1IRUxQLCAiRG93biIsIEtFWV9ET1dOLCBkb19k b3duLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJPV1NFUnxNTElOVEVSLCAiXlVwIiwg Q09OVFJPTF9VUCwgdG9fcHJldl9ibG9jaywgMCk7Ci0JCWFkZF90b19zY2xpc3QoTU1BSU58TUJS T1dTRVJ8TUxJTlRFUiwgIl5Eb3duIiwgQ09OVFJPTF9ET1dOLCB0b19uZXh0X2Jsb2NrLCAwKTsK LQl9Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tNyIsIDAsIHRvX3ByZXZfYmxvY2ssIDApOwot CWFkZF90b19zY2xpc3QoTU1BSU4sICJNLTgiLCAwLCB0b19uZXh0X2Jsb2NrLCAwKTsKLSNpZmRl ZiBFTkFCTEVfSlVTVElGWQotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLSgiLCAwLCB0b19wYXJh X2JlZ2luLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS05IiwgMCwgdG9fcGFyYV9iZWdp biwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tKSIsIDAsIHRvX3BhcmFfZW5kLCAwKTsK LQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS0wIiwgMCwgdG9fcGFyYV9lbmQsIDApOwotI2VuZGlm CiAjaWZuZGVmIE5BTk9fVElOWQotI2lmZGVmIEVOQUJMRV9VVEY4Ci0JaWYgKHVzaW5nX3V0Zjgp IHsKIAkJYWRkX3RvX3NjbGlzdChNTUFJTnxNSEVMUCwgIk0tXHhFMlx4OTZceGI0IiwgQUxUX1VQ LCBkb19zY3JvbGxfdXAsIDApOwogCQlhZGRfdG9fc2NsaXN0KE1NQUlOfE1IRUxQLCAiTS1ceEUy XHg5Nlx4YmUiLCBBTFRfRE9XTiwgZG9fc2Nyb2xsX2Rvd24sIDApOwotCX0gZWxzZQotI2VuZGlm Ci0JewotCQlhZGRfdG9fc2NsaXN0KE1NQUlOfE1IRUxQLCAiTS1VcCIsIEFMVF9VUCwgZG9fc2Ny b2xsX3VwLCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNTUFJTnxNSEVMUCwgIk0tRG93biIsIEFMVF9E T1dOLCBkb19zY3JvbGxfZG93biwgMCk7Ci0JfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkFOT19U SU5ZKSB8fCBkZWZpbmVkKEVOQUJMRV9IRUxQKQotCWFkZF90b19zY2xpc3QoTU1BSU58TUhFTFAs ICJNLS0iLCAwLCBkb19zY3JvbGxfdXAsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU58TUhFTFAs ICJNLV8iLCAwLCBkb19zY3JvbGxfdXAsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU58TUhFTFAs ICJNLSsiLCAwLCBkb19zY3JvbGxfZG93biwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTnxNSEVM UCwgIk0tPSIsIDAsIGRvX3Njcm9sbF9kb3duLCAwKTsKLSNlbmRpZgotI2lmZGVmIEVOQUJMRV9N VUxUSUJVRkZFUgotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLSwiLCAwLCBzd2l0Y2hfdG9fcHJl dl9idWZmZXIsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLS4iLCAwLCBzd2l0Y2hfdG9f bmV4dF9idWZmZXIsIDApOwogI2VuZGlmCi0JYWRkX3RvX3NjbGlzdChNTU9TVCwgIk0tViIsIDAs IGRvX3ZlcmJhdGltX2lucHV0LCAwKTsKLSNpZm5kZWYgTkFOT19USU5ZCi0JYWRkX3RvX3NjbGlz dChNTUFJTiwgIk0tVCIsIDAsIGN1dF90aWxsX2VvZiwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNRVhF Q1VURSwgIl5WIiwgMCwgY3V0X3RpbGxfZW9mLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1FWEVDVVRF LCAiXloiLCAwLCBkb19zdXNwZW5kLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiXloiLCAw LCBzdWdnZXN0X2N0cmxUX2N0cmxaLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS1EIiwg MCwgY291bnRfbGluZXNfd29yZHNfYW5kX2NoYXJhY3RlcnMsIDApOwotI2Vsc2UKLQlhZGRfdG9f c2NsaXN0KE1NQUlOLCAiTS1IIiwgMCwgZG9faGVscCwgMCk7Ci0jZW5kaWYKLSNpZmRlZiBFTkFC TEVfSlVTVElGWQotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLUoiLCAwLCBkb19mdWxsX2p1c3Rp ZnksIDApOwotCWFkZF90b19zY2xpc3QoTUVYRUNVVEUsICJeSiIsIDAsIGRvX2Z1bGxfanVzdGlm eSwgMCk7Ci0jZW5kaWYKLSNpZm5kZWYgTkFOT19USU5ZCi0JYWRkX3RvX3NjbGlzdChNTUFJTiwg Ik0tPCIsIDAsIGRvX3Njcm9sbF9sZWZ0LCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS0+ IiwgMCwgZG9fc2Nyb2xsX3JpZ2h0LCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiXkwiLCAw LCBkb19jZW50ZXIsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLSUiLCAwLCBkb19jeWNs ZSwgMCk7Ci0JYWRkX3RvX3NjbGlzdCgoTU1PU1R8TUJST1dTRVJ8TUhFTFB8TVlFU05PKSZ+TU1B SU4sICJeTCIsIDAsIGZ1bGxfcmVmcmVzaCwgMCk7Ci0jZWxzZQotCWFkZF90b19zY2xpc3QoTU1P U1R8TUJST1dTRVJ8TUhFTFB8TVlFU05PLCAiXkwiLCAwLCBmdWxsX3JlZnJlc2gsIDApOwotI2Vu ZGlmCi0KLSNpZm5kZWYgTkFOT19USU5ZCi0JLyogR3JvdXAgb2YgIkFwcGVhcmFuY2UiIHRvZ2ds ZXMuICovCi0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tWiIsIDAsIGRvX3RvZ2dsZSwgWkVSTyk7 Ci0JYWRkX3RvX3NjbGlzdCgoTU1PU1R8TUJST1dTRVJ8TVlFU05PKSAmIH5NRklORElOSEVMUCwg Ik0tWCIsIDAsIGRvX3RvZ2dsZSwgTk9fSEVMUCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0t QyIsIDAsIGRvX3RvZ2dsZSwgQ09OU1RBTlRfU0hPVyk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTiwg Ik0tUyIsIDAsIGRvX3RvZ2dsZSwgU09GVFdSQVApOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJN LSQiLCAwLCBkb190b2dnbGUsIFNPRlRXUkFQKTsgIC8qIExlZ2FjeSBrZXlzdHJva2UuICovCi0j aWZkZWYgRU5BQkxFX0xJTkVOVU1CRVJTCi0JYWRkX3RvX3NjbGlzdChNTUFJTiwgIk0tTiIsIDAs IGRvX3RvZ2dsZSwgTElORV9OVU1CRVJTKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS0jIiwg MCwgZG9fdG9nZ2xlLCBMSU5FX05VTUJFUlMpOyAgLyogTGVnYWN5IGtleXN0cm9rZS4gKi8KLSNl bmRpZgotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLVAiLCAwLCBkb190b2dnbGUsIFdISVRFU1BB Q0VfRElTUExBWSk7Ci0jaWZkZWYgRU5BQkxFX0NPTE9SCi0JYWRkX3RvX3NjbGlzdChNTUFJTiwg Ik0tWSIsIDAsIGRvX3RvZ2dsZSwgTk9fU1lOVEFYKTsKLSNlbmRpZgotCi0JLyogR3JvdXAgb2Yg IkJlaGF2aW9yIiB0b2dnbGVzLiAqLwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLUgiLCAwLCBk b190b2dnbGUsIFNNQVJUX0hPTUUpOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLUkiLCAwLCBk b190b2dnbGUsIEFVVE9JTkRFTlQpOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJNLUsiLCAwLCBk b190b2dnbGUsIENVVF9GUk9NX0NVUlNPUik7Ci0jaWZkZWYgRU5BQkxFX1dSQVBQSU5HCi0JYWRk X3RvX3NjbGlzdChNTUFJTiwgIk0tTCIsIDAsIGRvX3RvZ2dsZSwgQlJFQUtfTE9OR19MSU5FUyk7 Ci0jZW5kaWYKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAiTS1PIiwgMCwgZG9fdG9nZ2xlLCBUQUJT X1RPX1NQQUNFUyk7Ci0jaWZkZWYgRU5BQkxFX01PVVNFCi0JYWRkX3RvX3NjbGlzdChNTUFJTiwg Ik0tTSIsIDAsIGRvX3RvZ2dsZSwgVVNFX01PVVNFKTsKLSNlbmRpZgotI2VuZGlmIC8qICFOQU5P X1RJTlkgKi8KLQotCWFkZF90b19zY2xpc3QoKChNTU9TVCAmIH5NTUFJTikgfCBNWUVTTk8pLCAi XkMiLCAwLCBkb19jYW5jZWwsIDApOwotCi0JYWRkX3RvX3NjbGlzdChNV0hFUkVJU3xNUkVQTEFD RSwgIk0tQyIsIDAsIGNhc2Vfc2Vuc192b2lkLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1XSEVSRUlT fE1SRVBMQUNFLCAiTS1SIiwgMCwgcmVnZXhwX3ZvaWQsIDApOwotCWFkZF90b19zY2xpc3QoTVdI RVJFSVN8TVJFUExBQ0UsICJNLUIiLCAwLCBiYWNrd2FyZHNfdm9pZCwgMCk7Ci0JYWRkX3RvX3Nj bGlzdChNV0hFUkVJU3xNUkVQTEFDRSwgIl5SIiwgMCwgZmxpcF9yZXBsYWNlLCAwKTsKLQlhZGRf dG9fc2NsaXN0KE1XSEVSRUlTfE1HT1RPTElORSwgIl5UIiwgMCwgZmxpcF9nb3RvLCAwKTsKLQlh ZGRfdG9fc2NsaXN0KE1XSEVSRUlTfE1HT1RPTElORSwgU0xBU0hfT1JfREFTSCwgMCwgZmxpcF9n b3RvLCAwKTsKICNpZmRlZiBFTkFCTEVfSElTVE9SSUVTCi0JYWRkX3RvX3NjbGlzdChNV0hFUkVJ U3xNUkVQTEFDRXxNUkVQTEFDRVdJVEh8TVdIRVJFSVNGSUxFfE1GSU5ESU5IRUxQfE1FWEVDVVRF LCAiXlAiLCAwLCBnZXRfb2xkZXJfaXRlbSwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNV0hFUkVJU3xN UkVQTEFDRXxNUkVQTEFDRVdJVEh8TVdIRVJFSVNGSUxFfE1GSU5ESU5IRUxQfE1FWEVDVVRFLCAi Xk4iLCAwLCBnZXRfbmV3ZXJfaXRlbSwgMCk7Ci0jaWZkZWYgRU5BQkxFX1VURjgKLQlpZiAodXNp bmdfdXRmOCkgewogCQlhZGRfdG9fc2NsaXN0KE1XSEVSRUlTfE1SRVBMQUNFfE1SRVBMQUNFV0lU SHxNV0hFUkVJU0ZJTEV8TUZJTkRJTkhFTFB8TUVYRUNVVEUsICJceEUyXHg5Nlx4YjQiLCBLRVlf VVAsIGdldF9vbGRlcl9pdGVtLCAwKTsKIAkJYWRkX3RvX3NjbGlzdChNV0hFUkVJU3xNUkVQTEFD RXxNUkVQTEFDRVdJVEh8TVdIRVJFSVNGSUxFfE1GSU5ESU5IRUxQfE1FWEVDVVRFLCAiXHhFMlx4 OTZceGJlIiwgS0VZX0RPV04sIGdldF9uZXdlcl9pdGVtLCAwKTsKLQl9IGVsc2UKLSNlbmRpZgot CXsKLQkJYWRkX3RvX3NjbGlzdChNV0hFUkVJU3xNUkVQTEFDRXxNUkVQTEFDRVdJVEh8TVdIRVJF SVNGSUxFfE1GSU5ESU5IRUxQfE1FWEVDVVRFLCAiVXAiLCBLRVlfVVAsIGdldF9vbGRlcl9pdGVt LCAwKTsKLQkJYWRkX3RvX3NjbGlzdChNV0hFUkVJU3xNUkVQTEFDRXxNUkVQTEFDRVdJVEh8TVdI RVJFSVNGSUxFfE1GSU5ESU5IRUxQfE1FWEVDVVRFLCAiRG93biIsIEtFWV9ET1dOLCBnZXRfbmV3 ZXJfaXRlbSwgMCk7Ci0JfQotI2VuZGlmCi0jaWZkZWYgRU5BQkxFX0pVU1RJRlkKLQlhZGRfdG9f c2NsaXN0KE1HT1RPTElORSwgIl5XIiwgMCwgdG9fcGFyYV9iZWdpbiwgMCk7Ci0JYWRkX3RvX3Nj bGlzdChNR09UT0xJTkUsICJeTyIsIDAsIHRvX3BhcmFfZW5kLCAwKTsKICNlbmRpZgotCS8qIFNv bWUgcGVvcGxlIGFyZSB1c2VkIHRvIGhhdmluZyB0aGVzZSBrZXlzdHJva2VzIGluIHRoZSBTZWFy Y2ggbWVudS4gKi8KLQlhZGRfdG9fc2NsaXN0KE1HT1RPTElORXxNV0hFUkVJU3xNRklORElOSEVM UCwgIl5ZIiwgMCwgdG9fZmlyc3RfbGluZSwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNR09UT0xJTkV8 TVdIRVJFSVN8TUZJTkRJTkhFTFAsICJeViIsIDAsIHRvX2xhc3RfbGluZSwgMCk7Ci0jaWZkZWYg RU5BQkxFX0JST1dTRVIKLQlhZGRfdG9fc2NsaXN0KE1XSEVSRUlTRklMRSwgIl5ZIiwgMCwgdG9f Zmlyc3RfZmlsZSwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNV0hFUkVJU0ZJTEUsICJeViIsIDAsIHRv X2xhc3RfZmlsZSwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNQlJPV1NFUnxNV0hFUkVJU0ZJTEUsICJN LVxcIiwgMCwgdG9fZmlyc3RfZmlsZSwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNQlJPV1NFUnxNV0hF UkVJU0ZJTEUsICJNLS8iLCAwLCB0b19sYXN0X2ZpbGUsIDApOwotCWFkZF90b19zY2xpc3QoTUJS T1dTRVIsICJIb21lIiwgS0VZX0hPTUUsIHRvX2ZpcnN0X2ZpbGUsIDApOwotCWFkZF90b19zY2xp c3QoTUJST1dTRVIsICJFbmQiLCBLRVlfRU5ELCB0b19sYXN0X2ZpbGUsIDApOwotCWFkZF90b19z Y2xpc3QoTUJST1dTRVIsICJeSG9tZSIsIENPTlRST0xfSE9NRSwgdG9fZmlyc3RfZmlsZSwgMCk7 Ci0JYWRkX3RvX3NjbGlzdChNQlJPV1NFUiwgIl5FbmQiLCBDT05UUk9MX0VORCwgdG9fbGFzdF9m aWxlLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1CUk9XU0VSLCBTTEFTSF9PUl9EQVNILCAwLCBnb3Rv X2RpciwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNQlJPV1NFUiwgIk0tRyIsIDAsIGdvdG9fZGlyLCAw KTsKLQlhZGRfdG9fc2NsaXN0KE1CUk9XU0VSLCAiXl8iLCAwLCBnb3RvX2RpciwgMCk7Ci0jZW5k aWYKLQlpZiAoIUlTU0VUKFBSRVNFUlZFKSkKLQkJYWRkX3RvX3NjbGlzdChNV1JJVEVGSUxFLCAi XlEiLCAwLCBkaXNjYXJkX2J1ZmZlciwgMCk7Ci0jaWZuZGVmIE5BTk9fVElOWQotCWFkZF90b19z Y2xpc3QoTVdSSVRFRklMRSwgIk0tRCIsIDAsIGRvc19mb3JtYXQsIDApOwotCS8qIE9ubHkgd2hl biBub3QgaW4gcmVzdHJpY3RlZCBtb2RlLCBhbGxvdyBtYWtpbmcgYmFja3VwcywKLQkgKiBhcHBl bmRpbmcsIHByZXBlbmRpbmcsIGFuZCBleGVjdXRpbmcgYSBjb21tYW5kLiAqLwotCWlmICghSVNT RVQoUkVTVFJJQ1RFRCkgJiYgIUlTU0VUKFZJRVdfTU9ERSkpIHsKLQkJYWRkX3RvX3NjbGlzdChN V1JJVEVGSUxFLCAiTS1CIiwgMCwgYmFja19pdF91cCwgMCk7Ci0JCWFkZF90b19zY2xpc3QoTVdS SVRFRklMRSwgIk0tQSIsIDAsIGFwcGVuZF9pdCwgMCk7Ci0JCWFkZF90b19zY2xpc3QoTVdSSVRF RklMRSwgIk0tUCIsIDAsIHByZXBlbmRfaXQsIDApOwotCQlhZGRfdG9fc2NsaXN0KE1JTlNFUlRG SUxFfE1FWEVDVVRFLCAiXlgiLCAwLCBmbGlwX2V4ZWN1dGUsIDApOwogCX0KLQlhZGRfdG9fc2Ns aXN0KE1JTlNFUlRGSUxFLCAiTS1OIiwgMCwgZmxpcF9jb252ZXJ0LCAwKTsKLSNlbmRpZgotI2lm ZGVmIEVOQUJMRV9NVUxUSUJVRkZFUgotCWlmICghSVNTRVQoUkVTVFJJQ1RFRCkgJiYgIUlTU0VU KFZJRVdfTU9ERSkpIHsKLQkJYWRkX3RvX3NjbGlzdChNSU5TRVJURklMRXxNRVhFQ1VURSwgIk0t RiIsIDAsIGZsaXBfbmV3YnVmZmVyLCAwKTsKLSNpZm5kZWYgTkFOT19USU5ZCi0JCWFkZF90b19z Y2xpc3QoTUVYRUNVVEUsICJNLVxcIiwgMCwgZmxpcF9waXBlLCAwKTsKLSNlbmRpZgorI2VuZGlm IC8qIEVOQUJMRV9VVEY4ICovCisKKwlpZiAoSVNTRVQoTU9ERVJOX0JJTkRJTkdTKSkgeworCQkv KiBUaGUgaGVscCBrZXkgZGVwZW5kcyBvbiB0aGUgdGVybWluYWwncyBCYWNrc3BhY2Uga2V5Y29k ZS4gKi8KKwkJYWRkX3RvX3NjbGlzdCgoTU1PU1R8TUJST1dTRVIpICYgfk1GSU5ESU5IRUxQLCBo ZWxwX2tleSwgMCwgZG9faGVscCwgMCk7CisJCWFkZF90b19zY2xpc3QoTUhFTFAsIGhlbHBfa2V5 LCAwLCBkb19leGl0LCAwKTsKIAl9Ci0jZW5kaWYKLQlhZGRfdG9fc2NsaXN0KE1CUk9XU0VSfE1I RUxQLCAiXkMiLCAwLCBkb19leGl0LCAwKTsKLSNpZmRlZiBFTkFCTEVfQlJPV1NFUgotCS8qIE9u bHkgd2hlbiBub3QgaW4gcmVzdHJpY3RlZCBtb2RlLCBhbGxvdyBlbnRlcmluZyB0aGUgZmlsZSBi cm93c2VyLiAqLwotCWlmICghSVNTRVQoUkVTVFJJQ1RFRCkpCi0JCWFkZF90b19zY2xpc3QoTVdS SVRFRklMRXxNSU5TRVJURklMRSwgIl5UIiwgMCwgdG9fZmlsZXMsIDApOwotCS8qIEFsbG93IGV4 aXRpbmcgdGhlIGZpbGUgYnJvd3NlciB3aXRoIHRoZSBzYW1lIGtleSBhcyB1c2VkIGZvciBlbnRy eS4gKi8KLQlhZGRfdG9fc2NsaXN0KE1CUk9XU0VSLCAiXlQiLCAwLCBkb19leGl0LCAwKTsKLSNl bmRpZgotI2lmZGVmIEVOQUJMRV9IRUxQCi0JLyogQWxsb3cgZXhpdGluZyB0aGUgaGVscCB2aWV3 ZXIgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIHVzZWQgZm9yIGVudHJ5LiAqLwotCWFkZF90b19zY2xp c3QoTUhFTFAsICJeRyIsIDAsIGRvX2V4aXQsIDApOwotCWFkZF90b19zY2xpc3QoTUhFTFAsICJG MSIsIEtFWV9GKDEpLCBkb19leGl0LCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1IRUxQLCAiSG9tZSIs IEtFWV9IT01FLCB0b19maXJzdF9saW5lLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1IRUxQLCAiRW5k IiwgS0VZX0VORCwgdG9fbGFzdF9saW5lLCAwKTsKLSNlbmRpZgotI2lmZGVmIEVOQUJMRV9MSU5U RVIKLQlhZGRfdG9fc2NsaXN0KE1MSU5URVIsICJeWCIsIDAsIGRvX2NhbmNlbCwgMCk7Ci0jZW5k aWYKLQlhZGRfdG9fc2NsaXN0KE1NT1NUICYgfk1GSU5ESU5IRUxQLCAiRjEiLCBLRVlfRigxKSwg ZG9faGVscCwgMCk7Ci0JYWRkX3RvX3NjbGlzdChNTUFJTnxNQlJPV1NFUnxNSEVMUCwgIkYyIiwg S0VZX0YoMiksIGRvX2V4aXQsIDApOwotCWFkZF90b19zY2xpc3QoTU1BSU4sICJGMyIsIEtFWV9G KDMpLCBkb193cml0ZW91dCwgMCk7Ci0jaWZkZWYgRU5BQkxFX0pVU1RJRlkKLQlhZGRfdG9fc2Ns aXN0KE1NQUlOLCAiRjQiLCBLRVlfRig0KSwgZG9fanVzdGlmeSwgMCk7Ci0jZW5kaWYKLQlhZGRf dG9fc2NsaXN0KE1NQUlOLCAiRjUiLCBLRVlfRig1KSwgZG9faW5zZXJ0ZmlsZSwgMCk7Ci0JYWRk X3RvX3NjbGlzdChNTUFJTnxNQlJPV1NFUnxNSEVMUCwgIkY2IiwgS0VZX0YoNiksIGRvX3NlYXJj aF9mb3J3YXJkLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlOfE1CUk9XU0VSfE1IRUxQfE1MSU5U RVIsICJGNyIsIEtFWV9GKDcpLCBkb19wYWdlX3VwLCAwKTsKLQlhZGRfdG9fc2NsaXN0KE1NQUlO fE1CUk9XU0VSfE1IRUxQfE1MSU5URVIsICJGOCIsIEtFWV9GKDgpLCBkb19wYWdlX2Rvd24sIDAp OwotCWFkZF90b19zY2xpc3QoTU1PU1QsICJGOSIsIEtFWV9GKDkpLCBjdXRfdGV4dCwgMCk7Ci0J YWRkX3RvX3NjbGlzdChNTU9TVCwgIkYxMCIsIEtFWV9GKDEwKSwgcGFzdGVfdGV4dCwgMCk7Ci0J YWRkX3RvX3NjbGlzdChNTUFJTiwgIkYxMSIsIEtFWV9GKDExKSwgcmVwb3J0X2N1cnNvcl9wb3Np dGlvbiwgMCk7Ci0jaWZkZWYgRU5BQkxFX1NQRUxMRVIKLQlhZGRfdG9fc2NsaXN0KE1NQUlOLCAi RjEyIiwgS0VZX0YoMTIpLCBkb19zcGVsbCwgMCk7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJM RV9FWFRSQSkgJiYgZGVmaW5lZChOQ1VSU0VTX1ZFUlNJT05fUEFUQ0gpCi0JYWRkX3RvX3NjbGlz dChNTUFJTiwgIk0tJiIsIDAsIHNob3dfY3Vyc2VzX3ZlcnNpb24sIDApOwotI2VuZGlmCisKICNp Zm5kZWYgTkFOT19USU5ZCiAJYWRkX3RvX3NjbGlzdCgoTU1PU1QgJiB+TU1BSU4pIHwgTVlFU05P LCAiIiwgS0VZX0NBTkNFTCwgZG9fY2FuY2VsLCAwKTsKIAlhZGRfdG9fc2NsaXN0KE1NQUlOLCAi IiwgS0VZX0NFTlRFUiwgZG9fY2VudGVyLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9uYW5vLmMgYi9z cmMvbmFuby5jCmluZGV4IDgyYWNhM2U1Li44ZmIxMDM3ZCAxMDA2NDQKLS0tIGEvc3JjL25hbm8u YworKysgYi9zcmMvbmFuby5jCkBAIC0yMjgxLDYgKzIyODEsMjIgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCX0KICNlbmRpZiAvKiBFTkFCTEVfTkFOT1JDICovCiAKKwkvKiBX aXRob3V0IGEga2V5IGJvdW5kIHRvICJleGl0IiBpbiB0aGUgbWFpbiBtZW51LCB0aGVyZSBpcyBu byB3YXkgb3V0LgorCSAqIEZhaWxpbmcgaGVyZSBpcyBiZXR0ZXIgdGhhbiBsZWF2aW5nIHRoZSB1 c2VyIHBlcm1hbmVudGx5IHRyYXBwZWQuICovCisJeworCQlib29sIGV4aXRfaXNfYm91bmQgPSBG QUxTRTsKKwkJZm9yIChrZXlzdHJ1Y3QgKnNjID0gc2NsaXN0OyBzYyAhPSBOVUxMOyBzYyA9IHNj LT5uZXh0KSB7CisJCQlpZiAoKHNjLT5tZW51cyAmIE1NQUlOKSAmJiBzYy0+ZnVuYyA9PSBkb19l eGl0KSB7CisJCQkJZXhpdF9pc19ib3VuZCA9IFRSVUU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0K KwkJaWYgKCFleGl0X2lzX2JvdW5kKQorCQkJZGllKF8oIk5vIGtleSBpcyBib3VuZCB0byBcImV4 aXRcIiBpbiB0aGUgbWFpbiBtZW51LlxuIgorCQkJCSAgIlBsZWFzZSBpbnN0YWxsICVzIG9yIGNy ZWF0ZSB+Ly5jb25maWcvbmFuby9uYW5vcmMuXG4iKSwKKwkJCQlTWVNDT05GRElSICIvbmFub3Jj Iik7CisJfQorCiAjaWZkZWYgRU5BQkxFX1dSQVBQSU5HCiAJaWYgKGhhcmR3cmFwID09IDApCiAJ CVVOU0VUKEJSRUFLX0xPTkdfTElORVMpOwotLSAKMi4zMC4yCgo= --000000000000dffadf0651158032--