From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 14 11:32:30 2018 Received: (at submit) by debbugs.gnu.org; 14 Mar 2018 15:32:30 +0000 Received: from localhost ([127.0.0.1]:33445 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ew8OE-0006rH-B1 for submit@debbugs.gnu.org; Wed, 14 Mar 2018 11:32:30 -0400 Received: from eggs.gnu.org ([208.118.235.92]:51967) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ew753-0004eX-Qu for submit@debbugs.gnu.org; Wed, 14 Mar 2018 10:08:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ew74n-0003Xl-CR for submit@debbugs.gnu.org; Wed, 14 Mar 2018 10:08:32 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: *** X-Spam-Status: No, score=3.3 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,RECEIVED_FROM_WINDOWS_HOST autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:34180) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ew74m-0003XH-Si for submit@debbugs.gnu.org; Wed, 14 Mar 2018 10:08:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42866) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ew74b-0006Ae-PI for bug-gnu-emacs@gnu.org; Wed, 14 Mar 2018 10:08:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ew74R-0003Lo-0G for bug-gnu-emacs@gnu.org; Wed, 14 Mar 2018 10:08:09 -0400 Received: from mail-oln040092067049.outbound.protection.outlook.com ([40.92.67.49]:6416 helo=EUR02-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ew74P-0003Ks-Ui for bug-gnu-emacs@gnu.org; Wed, 14 Mar 2018 10:07:58 -0400 Received: from VE1EUR02FT039.eop-EUR02.prod.protection.outlook.com (10.152.12.53) by VE1EUR02HT033.eop-EUR02.prod.protection.outlook.com (10.152.13.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Wed, 14 Mar 2018 14:07:55 +0000 Received: from DB6PR0902MB2101.eurprd09.prod.outlook.com (10.152.12.59) by VE1EUR02FT039.mail.protection.outlook.com (10.152.13.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.22 via Frontend Transport; Wed, 14 Mar 2018 14:07:55 +0000 Received: from DB6PR0902MB2101.eurprd09.prod.outlook.com ([fe80::bc8a:76f2:337a:672f]) by DB6PR0902MB2101.eurprd09.prod.outlook.com ([fe80::bc8a:76f2:337a:672f%13]) with mapi id 15.20.0567.018; Wed, 14 Mar 2018 14:07:55 +0000 From: Simona Arizanova To: "bug-gnu-emacs@gnu.org" Subject: [Bug #19655] Patches for GNU Emacs Thread-Topic: [Bug #19655] Patches for GNU Emacs Thread-Index: AQHTu5uI9jOzqSTJHECjDG9RLRweBA== Date: Wed, 14 Mar 2018 14:07:55 +0000 Message-ID: Accept-Language: fr-FR, en-US Content-Language: fr-FR X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:DEA3B500E44BB363F951BFDDD87CBA260E99A321AB6E917D5BF29646FF89A9C9; UpperCasedChecksum:B529F6A36B33824830770E5283050EDF47D1B8883A583B032BD6A8FA757EFD46; SizeAsReceived:6881; Count:44 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [IRVKDX6ZCWoT4tlmNAHWr+rqJo0nfOGt] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VE1EUR02HT033; 6:kkUtnWxCZewl7764AdjyVnL36cujfTnayMGO+MLulkJxjK3/JAgD6poWwtdKLDxW8vlbFp40zpZTfauo3M9JHCe2Elxt1nKGfNYKdxBl+fRTEUfisM+g2McPsNmXsi7p4+Z/b/hdVarVqllrZ3+dStnbMbgLRnccb8dPAvjlH/H9T/vtDed7TyiYp6gBEF4MxyyAsRXWfIDaXQBUT+g+PFedZrh5xqhI5Mo7IQZ07uXa1WGv/f7ASVHC+KQx0FAghrS0atJEvMOQkMF4VHP6aRqTwCaAWgvt7LiERGPwQQ5fdRVgTElu+9T0NxlqaLwQ99u3ijn8O6AHNgS1G0scUwd6J+nwpFq84nUfdrSadwo=; 5:C3O5sO0+IKaCBM19qVKLfGPYfqcCF9X6H5zeNsbmGKE+66h0RIOnUVsGCxhrB2sEslBm+AB+5U83oRj6Mx82oPyj9qK7nO2aLKYFrSPFcGkAUdQkxefULMU5vDi+NuPsKtCNvg7Ec+1k3R1uH8V+23TcY1rKQPra5tseJpX/lWU=; 24:z/tyrXb/7fpUDRlkTUuZwfefxXg4Fk4+WgRwEf0T7IGbQdJBNo8ANpbtbIA1bLK2DYkE4GIbh15c/FGEtoR5i6dV/tvqtUlTHEtufNhxHbM=; 7:Z3eIC0I7AF6jvr0NTs85oYQ2k4c+cMbJ0lKTk1IGrzVDt6urke1dZdSVCztaejYuJW8rkDfEllrle94pwmccpnkurr8M3X8j9Haj0eWMOJ+mu3fkzF0mLMaJTYjmmyP3KZnqhq4tKegsSxR+QMjBqEP6iA6Oo4uBqn0sSL0uPwZsVkDZ7ZXB7B7GgIo80hQ1fruTsMIAm5g4v5oTiAoltYaJag2kjBpYkmAGhgs6A5bsFS4wbJk6UGyc/cbA042k x-incomingheadercount: 44 x-eopattributedmessage: 0 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1601125374)(1603101448)(1701031045); SRVR:VE1EUR02HT033; x-ms-traffictypediagnostic: VE1EUR02HT033: x-ms-office365-filtering-correlation-id: d157a934-c06d-4fe0-4826-08d589b4fbe3 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(444000031); SRVR:VE1EUR02HT033; BCL:0; PCL:0; RULEID:; SRVR:VE1EUR02HT033; x-forefront-prvs: 0611A21987 x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:VE1EUR02HT033; H:DB6PR0902MB2101.eurprd09.prod.outlook.com; FPR:; SPF:None; LANG:; x-microsoft-antispam-message-info: Tb4Jyk7Wz92G9Owp+FRW370l+ftXT6xJ77u+bSG84r1D6uPuScWD2jCXC0LkhRInxLJ2Lte+mUCG0RjmfXZ4twNgWhcgkrw8XbIGDhbhps9z9rb0rG+RQGl9ej7quIuzpHkIEZu1SAdqp/+TZac7+eYJlTIygAMP0sItgZmeXjKao+pyPxtC2kXtd8yUOFAR spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_006_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d157a934-c06d-4fe0-4826-08d589b4fbe3 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Mar 2018 14:07:55.4950 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR02HT033 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Wed, 14 Mar 2018 11:32:29 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --_006_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_ Content-Type: multipart/alternative; boundary="_000_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_" --_000_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Hello, As I was using the last version of Emacs (27.0.50) , I noticed something th= at could be improved. I=92m explaining : First type C =96 h ? to open the Metahelp window. Then write C =96 s to enable searching. Instead of searching in the Metahelp window, the Metahelp window closes. This is an actual bug registered as #19655 in the https://debbugs.gnu.org. Therefore I=92ve decided that I could help to fix that issue. Look forward for the patch of the corrected bug. The function search-forward-help-for-help in the help.el allows to reasearc= h in the * Metahelp * window. I look forward for your response from you soon. Thanks. - Arizanova Simona - --_000_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_ Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable

Hello,


As I was using the last ve= rsion of Emacs (27.0.50) , I noticed something that could be improved. I=92= m explaining :

First type C =96 h ? = to open the Metahelp window.

Then write C =96 s to enab= le searching.

Instead of searching in th= e Metahelp window, the Metahelp window closes.

This is an actual bug regi= stered as #19655 in the https://debbugs.gnu.org.


Therefore I=92ve decided t= hat I could help to fix that issue.

Look forward for the patch= of the corrected bug.


The function se= arch-forward-help-for-help in the help.el allows to reasearch in the= * Metahelp * window.


I look forward for y= our response from you soon.


Thanks.





- Arizanova Simona -

--_000_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_-- --_006_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_ Content-Type: text/x-emacs-lisp; name="Actual-help.el" Content-Description: Actual-help.el Content-Disposition: attachment; filename="Actual-help.el"; size=60103; creation-date="Wed, 14 Mar 2018 13:46:21 GMT"; modification-date="Wed, 14 Mar 2018 13:46:21 GMT" Content-Transfer-Encoding: base64 Ozs7IGhlbHAuZWwgLS0tIGhlbHAgY29tbWFuZHMgZm9yIEVtYWNzICAtKi0gbGV4aWNhbC1iaW5k aW5nOnQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDE5ODUtMTk4NiwgMTk5My0xOTk0LCAxOTk4LTIw MTggRnJlZSBTb2Z0d2FyZQo7OyBGb3VuZGF0aW9uLCBJbmMuCgo7OyBNYWludGFpbmVyOiBlbWFj cy1kZXZlbEBnbnUub3JnCjs7IEtleXdvcmRzOiBoZWxwLCBpbnRlcm5hbAo7OyBQYWNrYWdlOiBl bWFjcwoKOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgoKOzsgR05VIEVtYWNzIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKOzsg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KCjs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIEdOVSBFbWFj cy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgo7OzsgQ29t bWVudGFyeToKCjs7IFRoaXMgY29kZSBpbXBsZW1lbnRzIEdOVSBFbWFjcydzIGJ1aWx0LWluIGhl bHAgc3lzdGVtLCB0aGUgb25lIGludm9rZWQgYnkKOzsgYE0teCBoZWxwLWZvci1oZWxwJy4KCjs7 OyBDb2RlOgoKOzsgR2V0IHRoZSBtYWNybyBtYWtlLWhlbHAtc2NyZWVuIHdoZW4gdGhpcyBpcyBj b21waWxlZCwKOzsgb3IgcnVuIGludGVycHJldGVkLCBidXQgbm90IHdoZW4gdGhlIGNvbXBpbGVk IGNvZGUgaXMgbG9hZGVkLgooZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2hlbHAtbWFjcm8p KQoKOzsgVGhpcyBtYWtlcyBgd2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXInIGJ1ZmZlcnMgdXNl IGBoZWxwLW1vZGUnLgooYWRkLWhvb2sgJ3RlbXAtYnVmZmVyLXNldHVwLWhvb2sgJ2hlbHAtbW9k ZS1zZXR1cCkKKGFkZC1ob29rICd0ZW1wLWJ1ZmZlci1zaG93LWhvb2sgJ2hlbHAtbW9kZS1maW5p c2gpCgo7OyBgaGVscC13aW5kb3ctcG9pbnQtbWFya2VyJyBpcyBhIG1hcmtlciB5b3UgY2FuIG1v dmUgdG8gYSB2YWxpZAo7OyBwb3NpdGlvbiBvZiB0aGUgYnVmZmVyIHNob3duIGluIHRoZSBoZWxw IHdpbmRvdyBpbiBvcmRlciB0byBvdmVycmlkZQo7OyB0aGUgc3RhbmRhcmQgcG9zaXRpb25pbmcg bWVjaGFuaXNtIChgcG9pbnQtbWluJykgY2hvc2VuIGJ5Cjs7IGB3aXRoLW91dHB1dC10by10ZW1w LWJ1ZmZlcicgYW5kIGB3aXRoLXRlbXAtYnVmZmVyLXdpbmRvdycuCjs7IGB3aXRoLWhlbHAtd2lu ZG93JyBoYXMgdGhpcyBwb2ludCBub3doZXJlIGJlZm9yZSBleGl0aW5nLiAgQ3VycmVudGx5Cjs7 IHVzZWQgYnkgYHZpZXctbG9zc2FnZScgdG8gYXNzZXJ0IHRoYXQgdGhlIGxhc3Qga2V5c3Ryb2tl cyBhcmUgYWx3YXlzCjs7IHZpc2libGUuCihkZWZ2YXIgaGVscC13aW5kb3ctcG9pbnQtbWFya2Vy IChtYWtlLW1hcmtlcikKICAiTWFya2VyIHRvIG92ZXJyaWRlIGRlZmF1bHQgYHdpbmRvdy1wb2lu dCcgaW4gaGVscCB3aW5kb3dzLiIpCgooZGVmdmFyIGhlbHAtd2luZG93LW9sZC1mcmFtZSBuaWwK ICAiRnJhbWUgc2VsZWN0ZWQgYXQgdGhlIHRpbWUgYHdpdGgtaGVscC13aW5kb3cnIGlzIGludm9r ZWQuIikKCihkZWZ2YXIgaGVscC1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXAp KSkKICAgIChkZWZpbmUta2V5IG1hcCAoY2hhci10by1zdHJpbmcgaGVscC1jaGFyKSAnaGVscC1m b3ItaGVscCkKICAgIChkZWZpbmUta2V5IG1hcCBbaGVscF0gJ2hlbHAtZm9yLWhlbHApCiAgICAo ZGVmaW5lLWtleSBtYXAgW2YxXSAnaGVscC1mb3ItaGVscCkKICAgIChkZWZpbmUta2V5IG1hcCAi LiIgJ2Rpc3BsYXktbG9jYWwtaGVscCkKICAgIChkZWZpbmUta2V5IG1hcCAiPyIgJ2hlbHAtZm9y LWhlbHApCgogICAgKGRlZmluZS1rZXkgbWFwICJcQy1hIiAnYWJvdXQtZW1hY3MpCiAgICAoZGVm aW5lLWtleSBtYXAgIlxDLWMiICdkZXNjcmliZS1jb3B5aW5nKQogICAgKGRlZmluZS1rZXkgbWFw ICJcQy1kIiAndmlldy1lbWFjcy1kZWJ1Z2dpbmcpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWUi ICd2aWV3LWV4dGVybmFsLXBhY2thZ2VzKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1mIiAndmll dy1lbWFjcy1GQVEpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLW0iICd2aWV3LW9yZGVyLW1hbnVh bHMpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLW4iICd2aWV3LWVtYWNzLW5ld3MpCiAgICAoZGVm aW5lLWtleSBtYXAgIlxDLW8iICdkZXNjcmliZS1kaXN0cmlidXRpb24pCiAgICAoZGVmaW5lLWtl eSBtYXAgIlxDLXAiICd2aWV3LWVtYWNzLXByb2JsZW1zKQogICAgKGRlZmluZS1rZXkgbWFwICJc Qy10IiAndmlldy1lbWFjcy10b2RvKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy13IiAnZGVzY3Jp YmUtbm8td2FycmFudHkpCgogICAgOzsgVGhpcyBkb2VzIG5vdCBmaXQgdGhlIHBhdHRlcm4sIGJ1 dCBpdCBpcyBuYXR1cmFsIGdpdmVuIHRoZSBDLVwgY29tbWFuZC4KICAgIChkZWZpbmUta2V5IG1h cCAiXEMtXFwiICdkZXNjcmliZS1pbnB1dC1tZXRob2QpCgogICAgKGRlZmluZS1rZXkgbWFwICJD IiAnZGVzY3JpYmUtY29kaW5nLXN5c3RlbSkKICAgIChkZWZpbmUta2V5IG1hcCAiRiIgJ0luZm8t Z290by1lbWFjcy1jb21tYW5kLW5vZGUpCiAgICAoZGVmaW5lLWtleSBtYXAgIkkiICdkZXNjcmli ZS1pbnB1dC1tZXRob2QpCiAgICAoZGVmaW5lLWtleSBtYXAgIksiICdJbmZvLWdvdG8tZW1hY3Mt a2V5LWNvbW1hbmQtbm9kZSkKICAgIChkZWZpbmUta2V5IG1hcCAiTCIgJ2Rlc2NyaWJlLWxhbmd1 YWdlLWVudmlyb25tZW50KQogICAgKGRlZmluZS1rZXkgbWFwICJTIiAnaW5mby1sb29rdXAtc3lt Ym9sKQoKICAgIChkZWZpbmUta2V5IG1hcCAiYSIgJ2Fwcm9wb3MtY29tbWFuZCkKICAgIChkZWZp bmUta2V5IG1hcCAiYiIgJ2Rlc2NyaWJlLWJpbmRpbmdzKQogICAgKGRlZmluZS1rZXkgbWFwICJj IiAnZGVzY3JpYmUta2V5LWJyaWVmbHkpCiAgICAoZGVmaW5lLWtleSBtYXAgImQiICdhcHJvcG9z LWRvY3VtZW50YXRpb24pCiAgICAoZGVmaW5lLWtleSBtYXAgImUiICd2aWV3LWVjaG8tYXJlYS1t ZXNzYWdlcykKICAgIChkZWZpbmUta2V5IG1hcCAiZiIgJ2Rlc2NyaWJlLWZ1bmN0aW9uKQogICAg KGRlZmluZS1rZXkgbWFwICJnIiAnZGVzY3JpYmUtZ251LXByb2plY3QpCiAgICAoZGVmaW5lLWtl eSBtYXAgImgiICd2aWV3LWhlbGxvLWZpbGUpCgogICAgKGRlZmluZS1rZXkgbWFwICJpIiAnaW5m bykKICAgIChkZWZpbmUta2V5IG1hcCAiNGkiICdpbmZvLW90aGVyLXdpbmRvdykKCiAgICAoZGVm aW5lLWtleSBtYXAgImsiICdkZXNjcmliZS1rZXkpCiAgICAoZGVmaW5lLWtleSBtYXAgImwiICd2 aWV3LWxvc3NhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgIm0iICdkZXNjcmliZS1tb2RlKQogICAg KGRlZmluZS1rZXkgbWFwICJvIiAnZGVzY3JpYmUtc3ltYm9sKQogICAgKGRlZmluZS1rZXkgbWFw ICJuIiAndmlldy1lbWFjcy1uZXdzKQogICAgKGRlZmluZS1rZXkgbWFwICJwIiAnZmluZGVyLWJ5 LWtleXdvcmQpCiAgICAoZGVmaW5lLWtleSBtYXAgIlAiICdkZXNjcmliZS1wYWNrYWdlKQogICAg KGRlZmluZS1rZXkgbWFwICJyIiAnaW5mby1lbWFjcy1tYW51YWwpCiAgICAoZGVmaW5lLWtleSBt YXAgInMiICdkZXNjcmliZS1zeW50YXgpCiAgICAoZGVmaW5lLWtleSBtYXAgInQiICdoZWxwLXdp dGgtdHV0b3JpYWwpCiAgICAoZGVmaW5lLWtleSBtYXAgInciICd3aGVyZS1pcykKICAgIChkZWZp bmUta2V5IG1hcCAidiIgJ2Rlc2NyaWJlLXZhcmlhYmxlKQogICAgKGRlZmluZS1rZXkgbWFwICJx IiAnaGVscC1xdWl0KQogICAgbWFwKQogICJLZXltYXAgZm9yIGNoYXJhY3RlcnMgZm9sbG93aW5n IHRoZSBIZWxwIGtleS4iKQoKKGRlZmluZS1rZXkgZ2xvYmFsLW1hcCAoY2hhci10by1zdHJpbmcg aGVscC1jaGFyKSAnaGVscC1jb21tYW5kKQooZGVmaW5lLWtleSBnbG9iYWwtbWFwIFtoZWxwXSAn aGVscC1jb21tYW5kKQooZGVmaW5lLWtleSBnbG9iYWwtbWFwIFtmMV0gJ2hlbHAtY29tbWFuZCkK KGZzZXQgJ2hlbHAtY29tbWFuZCBoZWxwLW1hcCkKCjs7IGluc2VydC1idXR0b24gbWFrZXMgdGhl IGFjdGlvbiBuaWwgaWYgaXQgaXMgbm90IHN0b3JlIHNvbWV3aGVyZQooZGVmdmFyIGhlbHAtYnV0 dG9uLWNhY2hlIG5pbCkKCgwKKGRlZnVuIGhlbHAtcXVpdCAoKQogICJKdXN0IGV4aXQgZnJvbSB0 aGUgSGVscCBjb21tYW5kJ3MgY29tbWFuZCBsb29wLiIKICAoaW50ZXJhY3RpdmUpCiAgbmlsKQoK KGRlZnZhciBoZWxwLXJldHVybi1tZXRob2QgbmlsCiAgIldoYXQgdG8gZG8gdG8gXCJleGl0XCIg dGhlIGhlbHAgYnVmZmVyLgpUaGlzIGlzIGEgbGlzdAogKFdJTkRPVyAuIHQpICAgICAgICAgICAg ICBkZWxldGUgdGhlIHNlbGVjdGVkIHdpbmRvdyAoYW5kIHBvc3NpYmx5IGl0cyBmcmFtZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGBxdWl0LXdpbmRvdycpLCBnbyB0byBXSU5ET1cu CiAoV0lORE9XIC4gcXVpdC13aW5kb3cpICAgIGRvIHF1aXQtd2luZG93LCB0aGVuIHNlbGVjdCBX SU5ET1cuCiAoV0lORE9XIEJVRiBTVEFSVCBQT0lOVCkgIGRpc3BsYXkgQlVGIGF0IFNUQVJULCBQ T0lOVCwgdGhlbiBzZWxlY3QgV0lORE9XLiIpCgooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFs aWFzICdwcmludC1oZWxwLXJldHVybi1tZXNzYWdlICdoZWxwLXByaW50LXJldHVybi1tZXNzYWdl ICIyMy4yIikKKGRlZnVuIGhlbHAtcHJpbnQtcmV0dXJuLW1lc3NhZ2UgKCZvcHRpb25hbCBmdW5j dGlvbikKICAiRGlzcGxheSBvciByZXR1cm4gbWVzc2FnZSBzYXlpbmcgaG93IHRvIHJlc3RvcmUg d2luZG93cyBhZnRlciBoZWxwIGNvbW1hbmQuClRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGBz dGFuZGFyZC1vdXRwdXQnIGlzIHRoZSBoZWxwIGJ1ZmZlci4KSXQgY29tcHV0ZXMgYSBtZXNzYWdl LCBhbmQgYXBwbGllcyB0aGUgb3B0aW9uYWwgYXJndW1lbnQgRlVOQ1RJT04gdG8gaXQuCklmIEZV TkNUSU9OIGlzIG5pbCwgaXQgYXBwbGllcyBgbWVzc2FnZScsIHRodXMgZGlzcGxheWluZyB0aGUg bWVzc2FnZS4KSW4gYWRkaXRpb24sIHRoaXMgZnVuY3Rpb24gc2V0cyB1cCBgaGVscC1yZXR1cm4t bWV0aG9kJywgd2hpY2ggc2VlLCB0aGF0CnNwZWNpZmllcyB3aGF0IHRvIGRvIHdoZW4gdGhlIHVz ZXIgZXhpdHMgdGhlIGhlbHAgYnVmZmVyLgoKRG8gbm90IGNhbGwgdGhpcyBpbiB0aGUgc2NvcGUg b2YgYHdpdGgtaGVscC13aW5kb3cnLiIKICAoYW5kIChub3QgKGdldC1idWZmZXItd2luZG93IHN0 YW5kYXJkLW91dHB1dCkpCiAgICAgICAobGV0ICgoZmlyc3QtbWVzc2FnZQoJICAgICAgKGNvbmQg KChvcgoJCSAgICAgIHBvcC11cC1mcmFtZXMKCQkgICAgICAoc3BlY2lhbC1kaXNwbGF5LXAgKGJ1 ZmZlci1uYW1lIHN0YW5kYXJkLW91dHB1dCkpKQoJCSAgICAgKHNldHEgaGVscC1yZXR1cm4tbWV0 aG9kIChjb25zIChzZWxlY3RlZC13aW5kb3cpIHQpKQoJCSAgICAgOzsgSWYgdGhlIGhlbHAgb3V0 cHV0IGJ1ZmZlciBpcyBhIHNwZWNpYWwgZGlzcGxheSBidWZmZXIsCgkJICAgICA7OyBkb24ndCBz YXkgYW55dGhpbmcgYWJvdXQgaG93IHRvIGdldCByaWQgb2YgaXQuCgkJICAgICA7OyBGaXJzdCBv ZiBhbGwsIHRoZSB1c2VyIHdpbGwgZG8gdGhhdCB3aXRoIHRoZSB3aW5kb3cKCQkgICAgIDs7IG1h bmFnZXIsIG5vdCB3aXRoIEVtYWNzLgoJCSAgICAgOzsgU2Vjb25kbHksIHRoZSBidWZmZXIgaGFz IG5vdCBiZWVuIGRpc3BsYXllZCB5ZXQsCgkJICAgICA7OyBzbyB3ZSBkb24ndCBrbm93IHdoZXRo ZXIgaXRzIGZyYW1lIHdpbGwgYmUgc2VsZWN0ZWQuCgkJICAgICBuaWwpCgkJICAgICgobm90IChv bmUtd2luZG93LXAgdCkpCgkJICAgICAoc2V0cSBoZWxwLXJldHVybi1tZXRob2QKCQkJICAgKGNv bnMgKHNlbGVjdGVkLXdpbmRvdykgJ3F1aXQtd2luZG93KSkKCQkgICAgICJUeXBlIFxcW2Rpc3Bs YXktYnVmZmVyXSBSRVQgdG8gcmVzdG9yZSB0aGUgb3RoZXIgd2luZG93LiIpCgkJICAgIChwb3At dXAtd2luZG93cwoJCSAgICAgKHNldHEgaGVscC1yZXR1cm4tbWV0aG9kIChjb25zIChzZWxlY3Rl ZC13aW5kb3cpIHQpKQoJCSAgICAgIlR5cGUgXFxbZGVsZXRlLW90aGVyLXdpbmRvd3NdIHRvIHJl bW92ZSBoZWxwIHdpbmRvdy4iKQoJCSAgICAodAoJCSAgICAgKHNldHEgaGVscC1yZXR1cm4tbWV0 aG9kCgkJCSAgIChsaXN0IChzZWxlY3RlZC13aW5kb3cpICh3aW5kb3ctYnVmZmVyKQoJCQkJICh3 aW5kb3ctc3RhcnQpICh3aW5kb3ctcG9pbnQpKSkKCQkgICAgICJUeXBlIFxcW3N3aXRjaC10by1i dWZmZXJdIFJFVCB0byByZW1vdmUgaGVscCB3aW5kb3cuIikpKSkKCSAoZnVuY2FsbCAob3IgZnVu Y3Rpb24gJ21lc3NhZ2UpCgkJICAoY29uY2F0CgkJICAgKGlmIGZpcnN0LW1lc3NhZ2UKCQkgICAg ICAgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzIGZpcnN0LW1lc3NhZ2UpKQoJCSAgIChpZiBmaXJz dC1tZXNzYWdlICIgICIpCgkJICAgOzsgSWYgdGhlIGhlbHAgYnVmZmVyIHdpbGwgZ28gaW4gYSBz ZXBhcmF0ZSBmcmFtZSwKCQkgICA7OyBpdCdzIG5vIHVzZSBtZW50aW9uaW5nIGEgY29tbWFuZCB0 byBzY3JvbGwsIHNvIGRvbid0LgoJCSAgIChpZiAob3IgcG9wLXVwLXdpbmRvd3MKCQkJICAgKHNw ZWNpYWwtZGlzcGxheS1wIChidWZmZXItbmFtZSBzdGFuZGFyZC1vdXRwdXQpKSkKCQkgICAgICAg bmlsCgkJICAgICAoaWYgKHNhbWUtd2luZG93LXAgKGJ1ZmZlci1uYW1lIHN0YW5kYXJkLW91dHB1 dCkpCgkJCSA7OyBTYXkgaG93IHRvIHNjcm9sbCB0aGlzIHdpbmRvdy4KCQkJIChzdWJzdGl0dXRl LWNvbW1hbmQta2V5cwoJCQkgICJcXFtzY3JvbGwtdXBdIHRvIHNjcm9sbCB0aGUgaGVscC4iKQoJ CSAgICAgICA7OyBTYXkgaG93IHRvIHNjcm9sbCBzb21lIG90aGVyIHdpbmRvdy4KCQkgICAgICAg KHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCgkJCSJcXFtzY3JvbGwtb3RoZXItd2luZG93XSB0byBz Y3JvbGwgdGhlIGhlbHAuIikpKSkpKSkpCgo7OyBTbyBrZXlib2FyZCBtYWNybyBkZWZpbml0aW9u cyBhcmUgZG9jdW1lbnRlZCBjb3JyZWN0bHkKKGZzZXQgJ2RlZmluaW5nLWtiZC1tYWNybyAoc3lt Ym9sLWZ1bmN0aW9uICdzdGFydC1rYmQtbWFjcm8pKQoKKGRlZmFsaWFzICdoZWxwICdoZWxwLWZv ci1oZWxwLWludGVybmFsKQo7OyBmaW5kLWZ1bmN0aW9uIGNhbiBmaW5kIHRoaXMuCihkZWZhbGlh cyAnaGVscC1mb3ItaGVscCAnaGVscC1mb3ItaGVscC1pbnRlcm5hbCkKOzsgSXQgY2FuJ3QgZmlu ZCB0aGlzLCBidXQgbm9ib2R5IHdpbGwgbG9vay4KKG1ha2UtaGVscC1zY3JlZW4gaGVscC1mb3It aGVscC1pbnRlcm5hbAogIChwdXJlY29weSAiVHlwZSBhIGhlbHAgb3B0aW9uOiBbYWJjQ2RlZkZn aUlrS2xMbW5wcnN0dncuXSBDLVtjZGVmbW5vcHR3XSBvciA/IikKICA7OyBEb24ndCBwdXJlY29w eSB0aGlzIG9uZSwgYmVjYXVzZSBpdCdzIG5vdCBldmFsdWF0ZWQgKGl0J3MKICA7OyBkaXJlY3Rs eSB1c2VkIGFzIGEgZG9jc3RyaW5nIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiwgc28gaXQnbGwK ICA7OyBiZSBtb3ZlZCB0byB0aGUgRE9DIGZpbGUgYW55d2F5OiBubyBuZWVkIGZvciBwdXJlY29w eWluZyBpdCkuCiAgIllvdSBoYXZlIHR5cGVkICVUSElTLUtFWSUsIHRoZSBoZWxwIGNoYXJhY3Rl ci4gIFR5cGUgYSBIZWxwIG9wdGlvbjoKXChVc2UgU1BDIG9yIERFTCB0byBzY3JvbGwgdGhyb3Vn aCB0aGlzIHRleHQuICBUeXBlIFxcPGhlbHAtbWFwPlxcW2hlbHAtcXVpdF0gdG8gZXhpdCB0aGUg SGVscCBjb21tYW5kLikKCmEgUEFUVEVSTiAgIFNob3cgY29tbWFuZHMgd2hvc2UgbmFtZSBtYXRj aGVzIHRoZSBQQVRURVJOIChhIGxpc3Qgb2Ygd29yZHMKICAgICAgICAgICAgICBvciBhIHJlZ2V4 cCkuICBTZWUgYWxzbyB0aGUgYGFwcm9wb3MnIGNvbW1hbmQuCmIgICAgICAgICAgIERpc3BsYXkg YWxsIGtleSBiaW5kaW5ncy4KYyBLRVlTICAgICAgRGlzcGxheSB0aGUgY29tbWFuZCBuYW1lIHJ1 biBieSB0aGUgZ2l2ZW4ga2V5IHNlcXVlbmNlLgpDIENPRElORyAgICBEZXNjcmliZSB0aGUgZ2l2 ZW4gY29kaW5nIHN5c3RlbSwgb3IgUkVUIGZvciBjdXJyZW50IG9uZXMuCmQgUEFUVEVSTiAgIFNo b3cgYSBsaXN0IG9mIGZ1bmN0aW9ucywgdmFyaWFibGVzLCBhbmQgb3RoZXIgaXRlbXMgd2hvc2UK ICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIG1hdGNoZXMgdGhlIFBBVFRFUk4gKGEgbGlzdCBv ZiB3b3JkcyBvciBhIHJlZ2V4cCkuCmUgICAgICAgICAgIEdvIHRvIHRoZSAqTWVzc2FnZXMqIGJ1 ZmZlciB3aGljaCBsb2dzIGVjaG8tYXJlYSBtZXNzYWdlcy4KZiBGVU5DVElPTiAgRGlzcGxheSBk b2N1bWVudGF0aW9uIGZvciB0aGUgZ2l2ZW4gZnVuY3Rpb24uCkYgQ09NTUFORCAgIFNob3cgdGhl IEVtYWNzIG1hbnVhbCdzIHNlY3Rpb24gdGhhdCBkZXNjcmliZXMgdGhlIGNvbW1hbmQuCmcgICAg ICAgICAgIERpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEdOVSBwcm9qZWN0LgpoICAgICAg ICAgICBEaXNwbGF5IHRoZSBIRUxMTyBmaWxlIHdoaWNoIGlsbHVzdHJhdGVzIHZhcmlvdXMgc2Ny aXB0cy4KaSAgICAgICAgICAgU3RhcnQgdGhlIEluZm8gZG9jdW1lbnRhdGlvbiByZWFkZXI6IHJl YWQgaW5jbHVkZWQgbWFudWFscy4KSSBNRVRIT0QgICAgRGVzY3JpYmUgYSBzcGVjaWZpYyBpbnB1 dCBtZXRob2QsIG9yIFJFVCBmb3IgY3VycmVudC4KayBLRVlTICAgICAgRGlzcGxheSB0aGUgZnVs bCBkb2N1bWVudGF0aW9uIGZvciB0aGUga2V5IHNlcXVlbmNlLgpLIEtFWVMgICAgICBTaG93IHRo ZSBFbWFjcyBtYW51YWwncyBzZWN0aW9uIGZvciB0aGUgY29tbWFuZCBib3VuZCB0byBLRVlTLgps ICAgICAgICAgICBTaG93IGxhc3QgMzAwIGlucHV0IGtleXN0cm9rZXMgKGxvc3NhZ2UpLgpMIExB TkctRU5WICBEZXNjcmliZXMgYSBzcGVjaWZpYyBsYW5ndWFnZSBlbnZpcm9ubWVudCwgb3IgUkVU IGZvciBjdXJyZW50LgptICAgICAgICAgICBEaXNwbGF5IGRvY3VtZW50YXRpb24gb2YgY3VycmVu dCBtaW5vciBtb2RlcyBhbmQgY3VycmVudCBtYWpvciBtb2RlLAogICAgICAgICAgICAgIGluY2x1 ZGluZyB0aGVpciBzcGVjaWFsIGNvbW1hbmRzLgpuICAgICAgICAgICBEaXNwbGF5IG5ld3Mgb2Yg cmVjZW50IEVtYWNzIGNoYW5nZXMuCm8gU1lNQk9MICAgIERpc3BsYXkgdGhlIGdpdmVuIGZ1bmN0 aW9uIG9yIHZhcmlhYmxlJ3MgZG9jdW1lbnRhdGlvbiBhbmQgdmFsdWUuCnAgVE9QSUMgICAgIEZp bmQgcGFja2FnZXMgbWF0Y2hpbmcgYSBnaXZlbiB0b3BpYyBrZXl3b3JkLgpQIFBBQ0tBR0UgICBE ZXNjcmliZSB0aGUgZ2l2ZW4gRW1hY3MgTGlzcCBwYWNrYWdlLgpyICAgICAgICAgICBEaXNwbGF5 IHRoZSBFbWFjcyBtYW51YWwgaW4gSW5mbyBtb2RlLgpzICAgICAgICAgICBEaXNwbGF5IGNvbnRl bnRzIG9mIGN1cnJlbnQgc3ludGF4IHRhYmxlLCBwbHVzIGV4cGxhbmF0aW9ucy4KUyBTWU1CT0wg ICAgU2hvdyB0aGUgc2VjdGlvbiBmb3IgdGhlIGdpdmVuIHN5bWJvbCBpbiB0aGUgSW5mbyBtYW51 YWwKICAgICAgICAgICAgICBmb3IgdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIHVzZWQgaW4gdGhp cyBidWZmZXIuCnQgICAgICAgICAgIFN0YXJ0IHRoZSBFbWFjcyBsZWFybi1ieS1kb2luZyB0dXRv cmlhbC4KdiBWQVJJQUJMRSAgRGlzcGxheSB0aGUgZ2l2ZW4gdmFyaWFibGUncyBkb2N1bWVudGF0 aW9uIGFuZCB2YWx1ZS4KdyBDT01NQU5EICAgRGlzcGxheSB3aGljaCBrZXlzdHJva2VzIGludm9r ZSB0aGUgZ2l2ZW4gY29tbWFuZCAod2hlcmUtaXMpLgouICAgICAgICAgICBEaXNwbGF5IGFueSBh dmFpbGFibGUgbG9jYWwgaGVscCBhdCBwb2ludCBpbiB0aGUgZWNobyBhcmVhLgoKQy1hICAgICAg ICAgSW5mb3JtYXRpb24gYWJvdXQgRW1hY3MuCkMtYyAgICAgICAgIEVtYWNzIGNvcHlpbmcgcGVy bWlzc2lvbiAoR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpLgpDLWQgICAgICAgICBJbnN0cnVj dGlvbnMgZm9yIGRlYnVnZ2luZyBHTlUgRW1hY3MuCkMtZSAgICAgICAgIEV4dGVybmFsIHBhY2th Z2VzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBFbWFjcy4KQy1mICAgICAgICAgRW1hY3MgRkFRLgpD LW0gICAgICAgICBIb3cgdG8gb3JkZXIgcHJpbnRlZCBFbWFjcyBtYW51YWxzLgpDLW4gICAgICAg ICBOZXdzIG9mIHJlY2VudCBFbWFjcyBjaGFuZ2VzLgpDLW8gICAgICAgICBFbWFjcyBvcmRlcmlu ZyBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgpDLXAgICAgICAgICBJbmZvIGFib3V0IGtu b3duIEVtYWNzIHByb2JsZW1zLgpDLXQgICAgICAgICBFbWFjcyBUT0RPIGxpc3QuCkMtdyAgICAg ICAgIEluZm9ybWF0aW9uIG9uIGFic2VuY2Ugb2Ygd2FycmFudHkgZm9yIEdOVSBFbWFjcy4iCiAg aGVscC1tYXApCgoMCgooZGVmdW4gZnVuY3Rpb24tY2FsbGVkLWF0LXBvaW50ICgpCiAgIlJldHVy biBhIGZ1bmN0aW9uIGFyb3VuZCBwb2ludCBvciBlbHNlIGNhbGxlZCBieSB0aGUgbGlzdCBjb250 YWluaW5nIHBvaW50LgpJZiB0aGF0IGRvZXNuJ3QgZ2l2ZSBhIGZ1bmN0aW9uLCByZXR1cm4gbmls LiIKICAod2l0aC1zeW50YXgtdGFibGUgZW1hY3MtbGlzcC1tb2RlLXN5bnRheC10YWJsZQogICAg KG9yIChjb25kaXRpb24tY2FzZSAoKQogICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAg ICAgICAgICAob3IgKG5vdCAoemVyb3AgKHNraXAtc3ludGF4LWJhY2t3YXJkICJfdyIpKSkKICAg ICAgICAgICAgICAgICAgKGVxIChjaGFyLXN5bnRheCAoZm9sbG93aW5nLWNoYXIpKSA/dykKICAg ICAgICAgICAgICAgICAgKGVxIChjaGFyLXN5bnRheCAoZm9sbG93aW5nLWNoYXIpKSA/XykKICAg ICAgICAgICAgICAgICAgKGZvcndhcmQtc2V4cCAtMSkpCiAgICAgICAgICAgICAgKHNraXAtY2hh cnMtZm9yd2FyZCAiJyIpCiAgICAgICAgICAgICAgKGxldCAoKG9iaiAocmVhZCAoY3VycmVudC1i dWZmZXIpKSkpCiAgICAgICAgICAgICAgICAoYW5kIChzeW1ib2xwIG9iaikgKGZib3VuZHAgb2Jq KSBvYmopKSkKICAgICAgICAgIChlcnJvciBuaWwpKQogICAgICAgIChjb25kaXRpb24tY2FzZSAo KQogICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAoc2F2ZS1yZXN0cmlj dGlvbgogICAgICAgICAgICAgICAgKG5hcnJvdy10by1yZWdpb24gKG1heCAocG9pbnQtbWluKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAocG9pbnQpIDEwMDApKSAo cG9pbnQtbWF4KSkKICAgICAgICAgICAgICAgIDs7IE1vdmUgdXAgdG8gc3Vycm91bmRpbmcgcGFy ZW4sIHRoZW4gYWZ0ZXIgdGhlIG9wZW4uCiAgICAgICAgICAgICAgICAoYmFja3dhcmQtdXAtbGlz dCAxKQogICAgICAgICAgICAgICAgKGZvcndhcmQtY2hhciAxKQogICAgICAgICAgICAgICAgOzsg SWYgdGhlcmUgaXMgc3BhY2UgaGVyZSwgdGhpcyBpcyBwcm9iYWJseSBzb21ldGhpbmcKICAgICAg ICAgICAgICAgIDs7IG90aGVyIHRoYW4gYSByZWFsIExpc3AgZnVuY3Rpb24gY2FsbCwgc28gaWdu b3JlIGl0LgogICAgICAgICAgICAgICAgKGlmIChsb29raW5nLWF0ICJbIFx0XSIpCiAgICAgICAg ICAgICAgICAgICAgKGVycm9yICJQcm9iYWJseSBub3QgYSBMaXNwIGZ1bmN0aW9uIGNhbGwiKSkK ICAgICAgICAgICAgICAgIChsZXQgKChvYmogKHJlYWQgKGN1cnJlbnQtYnVmZmVyKSkpKQogICAg ICAgICAgICAgICAgICAoYW5kIChzeW1ib2xwIG9iaikgKGZib3VuZHAgb2JqKSBvYmopKSkpCiAg ICAgICAgICAoZXJyb3IgbmlsKSkKICAgICAgICAobGV0KiAoKHN0ciAoZmluZC10YWctZGVmYXVs dCkpCiAgICAgICAgICAgICAgIChzeW0gKGlmIHN0ciAoaW50ZXJuLXNvZnQgc3RyKSkpKQogICAg ICAgICAgKGlmIChhbmQgc3ltIChmYm91bmRwIHN5bSkpCiAgICAgICAgICAgICAgc3ltCiAgICAg ICAgICAgIChzYXZlLW1hdGNoLWRhdGEKICAgICAgICAgICAgICAod2hlbiAoYW5kIHN0ciAoc3Ry aW5nLW1hdGNoICJcXGBcXFcqXFwoLio/XFwpXFxXKlxcJyIgc3RyKSkKICAgICAgICAgICAgICAg IChzZXRxIHN5bSAoaW50ZXJuLXNvZnQgKG1hdGNoLXN0cmluZyAxIHN0cikpKQogICAgICAgICAg ICAgICAgKGFuZCAoZmJvdW5kcCBzeW0pIHN5bSkpKSkpKSkpCgoMCjs7OyBgVXNlcicgaGVscCBm dW5jdGlvbnMKCihkZWZ1biB2aWV3LWhlbHAtZmlsZSAoZmlsZSAmb3B0aW9uYWwgZGlyKQogICh2 aWV3LWZpbGUgKGV4cGFuZC1maWxlLW5hbWUgZmlsZSAob3IgZGlyIGRhdGEtZGlyZWN0b3J5KSkp CiAgKGdvdG8tYWRkcmVzcy1tb2RlIDEpCiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpCgooZGVm dW4gZGVzY3JpYmUtZGlzdHJpYnV0aW9uICgpCiAgIkRpc3BsYXkgaW5mbyBvbiBob3cgdG8gb2J0 YWluIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBHTlUgRW1hY3MuIgogIChpbnRlcmFjdGl2ZSkKICAo dmlldy1oZWxwLWZpbGUgIkRJU1RSSUIiKSkKCihkZWZ1biBkZXNjcmliZS1jb3B5aW5nICgpCiAg IkRpc3BsYXkgaW5mbyBvbiBob3cgeW91IG1heSByZWRpc3RyaWJ1dGUgY29waWVzIG9mIEdOVSBF bWFjcy4iCiAgKGludGVyYWN0aXZlKQogICh2aWV3LWhlbHAtZmlsZSAiQ09QWUlORyIpKQoKOzsg TWF5YmUgdGhpcyBjb21tYW5kIHNob3VsZCBqdXN0IGJlIHJlbW92ZWQuCihkZWZ1biBkZXNjcmli ZS1nbnUtcHJvamVjdCAoKQogICJCcm93c2Ugb25saW5lIGluZm9ybWF0aW9uIG9uIHRoZSBHTlUg cHJvamVjdC4iCiAgKGludGVyYWN0aXZlKQogIChicm93c2UtdXJsICJodHRwczovL3d3dy5nbnUu b3JnL2dudS90aGVnbnVwcm9qZWN0Lmh0bWwiKSkKCihkZWZpbmUtb2Jzb2xldGUtZnVuY3Rpb24t YWxpYXMgJ2Rlc2NyaWJlLXByb2plY3QgJ2Rlc2NyaWJlLWdudS1wcm9qZWN0ICIyMi4yIikKCihk ZWZ1biBkZXNjcmliZS1uby13YXJyYW50eSAoKQogICJEaXNwbGF5IGluZm8gb24gYWxsIHRoZSBr aW5kcyBvZiB3YXJyYW50eSBFbWFjcyBkb2VzIE5PVCBoYXZlLiIKICAoaW50ZXJhY3RpdmUpCiAg KGRlc2NyaWJlLWNvcHlpbmcpCiAgKGxldCAoY2FzZS1mb2xkLXNlYXJjaCkKICAgIChzZWFyY2gt Zm9yd2FyZCAiRGlzY2xhaW1lciBvZiBXYXJyYW50eSIpCiAgICAoZm9yd2FyZC1saW5lIDApCiAg ICAocmVjZW50ZXIgMCkpKQoKKGRlZnVuIGRlc2NyaWJlLXByZWZpeC1iaW5kaW5ncyAoKQogICJE ZXNjcmliZSB0aGUgYmluZGluZ3Mgb2YgdGhlIHByZWZpeCB1c2VkIHRvIHJlYWNoIHRoaXMgY29t bWFuZC4KVGhlIHByZWZpeCBkZXNjcmliZWQgY29uc2lzdHMgb2YgYWxsIGJ1dCB0aGUgbGFzdCBl dmVudApvZiB0aGUga2V5IHNlcXVlbmNlIHRoYXQgcmFuIHRoaXMgY29tbWFuZC4iCiAgKGludGVy YWN0aXZlKQogIChsZXQgKChrZXkgKHRoaXMtY29tbWFuZC1rZXlzKSkpCiAgICAoZGVzY3JpYmUt YmluZGluZ3MKICAgICAoaWYgKHN0cmluZ3Aga2V5KQoJIChzdWJzdHJpbmcga2V5IDAgKDEtIChs ZW5ndGgga2V5KSkpCiAgICAgICAobGV0ICgocHJlZml4IChtYWtlLXZlY3RvciAoMS0gKGxlbmd0 aCBrZXkpKSBuaWwpKQoJICAgICAoaSAwKSkKCSAod2hpbGUgKDwgaSAobGVuZ3RoIHByZWZpeCkp CgkgICAoYXNldCBwcmVmaXggaSAoYXJlZiBrZXkgaSkpCgkgICAoc2V0cSBpICgxKyBpKSkpCgkg cHJlZml4KSkpKSkKOzsgTWFrZSBDLWggYWZ0ZXIgYSBwcmVmaXgsIHdoZW4gbm90IHNwZWNpZmlj YWxseSBib3VuZCwKOzsgcnVuIGRlc2NyaWJlLXByZWZpeC1iaW5kaW5ncy4KKHNldHEgcHJlZml4 LWhlbHAtY29tbWFuZCAnZGVzY3JpYmUtcHJlZml4LWJpbmRpbmdzKQoKKGRlZnVuIHZpZXctZW1h Y3MtbmV3cyAoJm9wdGlvbmFsIHZlcnNpb24pCiAgIkRpc3BsYXkgaW5mbyBvbiByZWNlbnQgY2hh bmdlcyB0byBFbWFjcy4KV2l0aCBhcmd1bWVudCwgZGlzcGxheSBpbmZvIG9ubHkgZm9yIHRoZSBz ZWxlY3RlZCB2ZXJzaW9uLiIKICAoaW50ZXJhY3RpdmUgIlAiKQogICh1bmxlc3MgdmVyc2lvbgog ICAgKHNldHEgdmVyc2lvbiBlbWFjcy1tYWpvci12ZXJzaW9uKSkKICAod2hlbiAoY29uc3AgdmVy c2lvbikKICAgIChsZXQqICgoYWxsLXZlcnNpb25zCgkgICAgKGxldCAocmVzKQoJICAgICAgKG1h cGMKCSAgICAgICAobGFtYmRhIChmaWxlKQoJCSAod2l0aC10ZW1wLWJ1ZmZlcgoJCSAgIChpbnNl cnQtZmlsZS1jb250ZW50cwoJCSAgICAoZXhwYW5kLWZpbGUtbmFtZSBmaWxlIGRhdGEtZGlyZWN0 b3J5KSkKCQkgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkCgkJCSAgIChpZiAobWVtYmVyIGZp bGUgJygiTkVXUy4xOCIgIk5FV1MuMS0xNyIpKQoJCQkgICAgICAgIkNoYW5nZXMgaW4gXFwoPzpF bWFjc1xcfHZlcnNpb25cXCk/WyBcdF0qXFwoWzAtOV0rXFwoPzpcXC5bMC05XStcXCk/XFwpIgoJ CQkgICAgICJeXFwqIFteMC05XG5dKlxcKFswLTldK1xcLlswLTldK1xcKSIpIG5pbCB0KQoJCSAg ICAgKHNldHEgcmVzIChjb25zIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxKSByZXMpKSkp KQoJICAgICAgIChjb25zICJORVdTIgoJCSAgICAgKGRpcmVjdG9yeS1maWxlcyBkYXRhLWRpcmVj dG9yeSBuaWwKCQkJCSAgICAgICJeTkVXU1xcLlswLTldWy0wLTldKiQiIG5pbCkpKQoJICAgICAg KHNvcnQgKGRlbGV0ZS1kdXBzIHJlcykgIydzdHJpbmc+KSkpCgkgICAoY3VycmVudCAoY2FyIGFs bC12ZXJzaW9ucykpKQogICAgICAoc2V0cSB2ZXJzaW9uIChjb21wbGV0aW5nLXJlYWQKCQkgICAg IChmb3JtYXQgIlJlYWQgTkVXUyBmb3IgdGhlIHZlcnNpb24gKGRlZmF1bHQgJXMpOiAiIGN1cnJl bnQpCgkJICAgICBhbGwtdmVyc2lvbnMgbmlsIG5pbCBuaWwgbmlsIGN1cnJlbnQpKQogICAgICAo aWYgKGludGVnZXJwIChzdHJpbmctdG8tbnVtYmVyIHZlcnNpb24pKQoJICAoc2V0cSB2ZXJzaW9u IChzdHJpbmctdG8tbnVtYmVyIHZlcnNpb24pKQoJKHVubGVzcyAob3IgKG1lbWJlciB2ZXJzaW9u IGFsbC12ZXJzaW9ucykKCQkgICAgKDw9IChzdHJpbmctdG8tbnVtYmVyIHZlcnNpb24pIChzdHJp bmctdG8tbnVtYmVyIGN1cnJlbnQpKSkKCSAgKGVycm9yICJObyBuZXdzIGFib3V0IHZlcnNpb24g JXMiIHZlcnNpb24pKSkpKQogICh3aGVuIChpbnRlZ2VycCB2ZXJzaW9uKQogICAgKGNvbmQgKCg8 PSB2ZXJzaW9uIDEyKQoJICAgKHNldHEgdmVyc2lvbiAoZm9ybWF0ICIxLiVkIiB2ZXJzaW9uKSkp CgkgICgoPD0gdmVyc2lvbiAxOCkKCSAgIChzZXRxIHZlcnNpb24gKGZvcm1hdCAiJWQiIHZlcnNp b24pKSkKCSAgKCg+IHZlcnNpb24gZW1hY3MtbWFqb3ItdmVyc2lvbikKCSAgIChlcnJvciAiTm8g bmV3cyBhYm91dCBFbWFjcyAlZCAoeWV0KSIgdmVyc2lvbikpKSkKICAobGV0KiAoKHZuIChpZiAo c3RyaW5ncCB2ZXJzaW9uKQoJCSAoc3RyaW5nLXRvLW51bWJlciB2ZXJzaW9uKQoJICAgICAgIHZl cnNpb24pKQoJIChmaWxlIChjb25kCgkJKCg+PSB2biBlbWFjcy1tYWpvci12ZXJzaW9uKSAiTkVX UyIpCgkJKCg8IHZuIDE4KSAiTkVXUy4xLTE3IikKCQkodCAoZm9ybWF0ICJORVdTLiVkIiB2bikp KSkKCSByZXMpCiAgICAodmlldy1maWxlIChleHBhbmQtZmlsZS1uYW1lIGZpbGUgZGF0YS1kaXJl Y3RvcnkpKQogICAgKHdpZGVuKQogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICh3aGVu IChzdHJpbmdwIHZlcnNpb24pCiAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2FyZAoJICAgICAo Y29uY2F0IChpZiAoPCB2biAxOSkKCQkJICJDaGFuZ2VzIGluIEVtYWNzWyBcdF0qIgoJCSAgICAg ICAiXlxcKiBbXjAtOVxuXSoiKSB2ZXJzaW9uICIkIikKCSAgICAgbmlsIHQpCgkoYmVnaW5uaW5n LW9mLWxpbmUpCgkobmFycm93LXRvLXJlZ2lvbgoJIChwb2ludCkKCSAoc2F2ZS1leGN1cnNpb24K CSAgICh3aGlsZSAoYW5kIChzZXRxIHJlcwoJCQkgICAgIChyZS1zZWFyY2gtZm9yd2FyZAoJCQkg ICAgICAoaWYgKDwgdm4gMTkpCgkJCQkgICJDaGFuZ2VzIGluIFxcKD86RW1hY3NcXHx2ZXJzaW9u XFwpP1sgXHRdKlxcKFswLTldK1xcKD86XFwuWzAtOV0rXFwpP1xcKSIKCQkJCSJeXFwqIFteMC05 XG5dKlxcKFswLTldK1xcLlswLTldK1xcKSIpIG5pbCB0KSkKCQkgICAgICAgKGVxdWFsIChtYXRj aC1zdHJpbmctbm8tcHJvcGVydGllcyAxKSB2ZXJzaW9uKSkpCgkgICAob3IgcmVzIChnb3RvLWNo YXIgKHBvaW50LW1heCkpKQoJICAgKGJlZ2lubmluZy1vZi1saW5lKQoJICAgKHBvaW50KSkpKSkp KQoKKGRlZnVuIHZpZXctZW1hY3MtdG9kbyAoJm9wdGlvbmFsIF9hcmcpCiAgIkRpc3BsYXkgdGhl IEVtYWNzIFRPRE8gbGlzdC4iCiAgKGludGVyYWN0aXZlICJQIikKICAodmlldy1oZWxwLWZpbGUg IlRPRE8iKSkKCihkZWZpbmUtb2Jzb2xldGUtZnVuY3Rpb24tYWxpYXMgJ3ZpZXctdG9kbyAndmll dy1lbWFjcy10b2RvICIyMi4yIikKCgooZGVmdW4gdmlldy1lY2hvLWFyZWEtbWVzc2FnZXMgKCkK ICAiVmlldyB0aGUgbG9nIG9mIHJlY2VudCBlY2hvLWFyZWEgbWVzc2FnZXM6IHRoZSBgKk1lc3Nh Z2VzKicgYnVmZmVyLgpUaGUgbnVtYmVyIG9mIG1lc3NhZ2VzIHJldGFpbmVkIGluIHRoYXQgYnVm ZmVyCmlzIHNwZWNpZmllZCBieSB0aGUgdmFyaWFibGUgYG1lc3NhZ2UtbG9nLW1heCcuIgogIChp bnRlcmFjdGl2ZSkKICAod2l0aC1jdXJyZW50LWJ1ZmZlciAobWVzc2FnZXMtYnVmZmVyKQogICAg KGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgIChkaXNwbGF5LWJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKSkpCgooZGVmdW4gdmlldy1vcmRlci1tYW51YWxzICgpCiAgIkRpc3BsYXkgaW5mb3JtYXRp b24gb24gaG93IHRvIGJ1eSBwcmludGVkIGNvcGllcyBvZiBFbWFjcyBtYW51YWxzLiIKICAoaW50 ZXJhY3RpdmUpCjs7ICAodmlldy1oZWxwLWZpbGUgIk9SREVSUyIpCiAgKGluZm8gIihlbWFjcylQ cmludGVkIEJvb2tzIikpCgooZGVmdW4gdmlldy1lbWFjcy1GQVEgKCkKICAiRGlzcGxheSB0aGUg RW1hY3MgRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMgKEZBUSkgZmlsZS4iCiAgKGludGVyYWN0 aXZlKQogIDs7IChmaW5kLWZpbGUtcmVhZC1vbmx5IChleHBhbmQtZmlsZS1uYW1lICJGQVEiIGRh dGEtZGlyZWN0b3J5KSkKICAoaW5mbyAiKGVmYXEpIikpCgooZGVmdW4gdmlldy1lbWFjcy1wcm9i bGVtcyAoKQogICJEaXNwbGF5IGluZm8gb24ga25vd24gcHJvYmxlbXMgd2l0aCBFbWFjcyBhbmQg cG9zc2libGUgd29ya2Fyb3VuZHMuIgogIChpbnRlcmFjdGl2ZSkKICAodmlldy1oZWxwLWZpbGUg IlBST0JMRU1TIikpCgooZGVmdW4gdmlldy1lbWFjcy1kZWJ1Z2dpbmcgKCkKICAiRGlzcGxheSBp bmZvIG9uIGhvdyB0byBkZWJ1ZyBFbWFjcyBwcm9ibGVtcy4iCiAgKGludGVyYWN0aXZlKQogICh2 aWV3LWhlbHAtZmlsZSAiREVCVUciKSkKCjs7IFRoaXMgdXNlZCB0byB2aXNpdCBNT1JFLlNUVUZG OyBtYXliZSBpdCBzaG91bGQganVzdCBiZSByZW1vdmVkLgooZGVmdW4gdmlldy1leHRlcm5hbC1w YWNrYWdlcyAoKQogICJEaXNwbGF5IGluZm8gb24gd2hlcmUgdG8gZ2V0IG1vcmUgRW1hY3MgcGFj a2FnZXMuIgogIChpbnRlcmFjdGl2ZSkKICAoaW5mbyAiKGVmYXEpUGFja2FnZXMgdGhhdCBkbyBu b3QgY29tZSB3aXRoIEVtYWNzIikpCgooZGVmdW4gdmlldy1sb3NzYWdlICgpCiAgIkRpc3BsYXkg bGFzdCBmZXcgaW5wdXQga2V5c3Ryb2tlcyBhbmQgdGhlIGNvbW1hbmRzIHJ1bi4KRm9yIGNvbnZl bmllbmNlIHRoaXMgdXNlcyB0aGUgc2FtZSBmb3JtYXQgYXMKYGVkaXQtbGFzdC1rYmQtbWFjcm8n LgoKVG8gcmVjb3JkIGFsbCB5b3VyIGlucHV0LCB1c2UgYG9wZW4tZHJpYmJsZS1maWxlJy4iCiAg KGludGVyYWN0aXZlKQogIChoZWxwLXNldHVwLXhyZWYgKGxpc3QgIyd2aWV3LWxvc3NhZ2UpCgkJ ICAgKGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgJ2ludGVyYWN0aXZlKSkKICAod2l0aC1oZWxwLXdp bmRvdyAoaGVscC1idWZmZXIpCiAgICAocHJpbmMgIiAiKQogICAgKHByaW5jIChtYXBjb25jYXQg KGxhbWJkYSAoa2V5KQoJCQkoY29uZAoJCQkgKChhbmQgKGNvbnNwIGtleSkgKG51bGwgKGNhciBr ZXkpKSkKCQkJICAoZm9ybWF0ICI7OyAlc1xuIiAoaWYgKHN5bWJvbHAgKGNkciBrZXkpKSAoY2Ry IGtleSkKCQkJCQkgICAgICAiYW5vbnltb3VzLWNvbW1hbmQiKSkpCgkJCSAoKG9yIChpbnRlZ2Vy cCBrZXkpIChzeW1ib2xwIGtleSkgKGxpc3RwIGtleSkpCgkJCSAgKHNpbmdsZS1rZXktZGVzY3Jp cHRpb24ga2V5KSkKCQkJICh0CgkJCSAgKHByaW4xLXRvLXN0cmluZyBrZXkgbmlsKSkpKQoJCSAg ICAgIChyZWNlbnQta2V5cyAnaW5jbHVkZS1jbWRzKQoJCSAgICAgICIgIikpCiAgICAod2l0aC1j dXJyZW50LWJ1ZmZlciBzdGFuZGFyZC1vdXRwdXQKICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWlu KSkKICAgICAgKGxldCAoKGNvbW1lbnQtc3RhcnQgIjs7ICIpCiAgICAgICAgICAgIChjb21tZW50 LWNvbHVtbiAyNCkpCiAgICAgICAgKHdoaWxlIChub3QgKGVvYnApKQogICAgICAgICAgKGNvbW1l bnQtaW5kZW50KQoJICAoZm9yd2FyZC1saW5lIDEpKSkKICAgICAgOzsgamlkYW5uaSB3YW50cyB0 byBzZWUgdGhlIGxhc3Qga2V5c3Ryb2tlcyBpbW1lZGlhdGVseS4KICAgICAgKHNldC1tYXJrZXIg aGVscC13aW5kb3ctcG9pbnQtbWFya2VyIChwb2ludCkpKSkpCgoMCjs7IEtleSBiaW5kaW5ncwoK KGRlZnVuIGRlc2NyaWJlLWJpbmRpbmdzICgmb3B0aW9uYWwgcHJlZml4IGJ1ZmZlcikKICAiRGlz cGxheSBhIGJ1ZmZlciBzaG93aW5nIGEgbGlzdCBvZiBhbGwgZGVmaW5lZCBrZXlzLCBhbmQgdGhl aXIgZGVmaW5pdGlvbnMuClRoZSBrZXlzIGFyZSBkaXNwbGF5ZWQgaW4gb3JkZXIgb2YgcHJlY2Vk ZW5jZS4KClRoZSBvcHRpb25hbCBhcmd1bWVudCBQUkVGSVgsIGlmIG5vbi1uaWwsIHNob3VsZCBi ZSBhIGtleSBzZXF1ZW5jZTsKdGhlbiB3ZSBkaXNwbGF5IG9ubHkgYmluZGluZ3MgdGhhdCBzdGFy dCB3aXRoIHRoYXQgcHJlZml4LgpUaGUgb3B0aW9uYWwgYXJndW1lbnQgQlVGRkVSIHNwZWNpZmll cyB3aGljaCBidWZmZXIncyBiaW5kaW5ncwp0byBkaXNwbGF5IChkZWZhdWx0LCB0aGUgY3VycmVu dCBidWZmZXIpLiAgQlVGRkVSIGNhbiBiZSBhIGJ1ZmZlcgpvciBhIGJ1ZmZlciBuYW1lLiIKICAo aW50ZXJhY3RpdmUpCiAgKG9yIGJ1ZmZlciAoc2V0cSBidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkp CiAgKGhlbHAtc2V0dXAteHJlZiAobGlzdCAjJ2Rlc2NyaWJlLWJpbmRpbmdzIHByZWZpeCBidWZm ZXIpCgkJICAgKGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgJ2ludGVyYWN0aXZlKSkKICAod2l0aC1o ZWxwLXdpbmRvdyAoaGVscC1idWZmZXIpCiAgICA7OyBCZSBhd2FyZSB0aGF0IGBkZXNjcmliZS1i dWZmZXItYmluZGluZ3MnIHB1dHMgaXRzIG91dHB1dCBpbnRvCiAgICA7OyB0aGUgY3VycmVudCBi dWZmZXIuCiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoaGVscC1idWZmZXIpCiAgICAgIChkZXNj cmliZS1idWZmZXItYmluZGluZ3MgYnVmZmVyIHByZWZpeCkpKSkKCjs7IFRoaXMgZnVuY3Rpb24g dXNlZCB0byBiZSBpbiBrZXltYXAuYy4KKGRlZnVuIGRlc2NyaWJlLWJpbmRpbmdzLWludGVybmFs ICgmb3B0aW9uYWwgbWVudXMgcHJlZml4KQogICJTaG93IGEgbGlzdCBvZiBhbGwgZGVmaW5lZCBr ZXlzLCBhbmQgdGhlaXIgZGVmaW5pdGlvbnMuCldlIHB1dCB0aGF0IGxpc3QgaW4gYSBidWZmZXIs IGFuZCBkaXNwbGF5IHRoZSBidWZmZXIuCgpUaGUgb3B0aW9uYWwgYXJndW1lbnQgTUVOVVMsIGlm IG5vbi1uaWwsIHNheXMgdG8gbWVudGlvbiBtZW51IGJpbmRpbmdzLgpcKE9yZGluYXJpbHkgdGhl c2UgYXJlIG9taXR0ZWQgZnJvbSB0aGUgb3V0cHV0LikKVGhlIG9wdGlvbmFsIGFyZ3VtZW50IFBS RUZJWCwgaWYgbm9uLW5pbCwgc2hvdWxkIGJlIGEga2V5IHNlcXVlbmNlOwp0aGVuIHdlIGRpc3Bs YXkgb25seSBiaW5kaW5ncyB0aGF0IHN0YXJ0IHdpdGggdGhhdCBwcmVmaXguIgogIChkZWNsYXJl IChvYnNvbGV0ZSBkZXNjcmliZS1idWZmZXItYmluZGluZ3MgIjI0LjQiKSkKICAobGV0ICgoYnVm IChjdXJyZW50LWJ1ZmZlcikpKQogICAgKHdpdGgtaGVscC13aW5kb3cgKGhlbHAtYnVmZmVyKQog ICAgICA7OyBCZSBhd2FyZSB0aGF0IGBkZXNjcmliZS1idWZmZXItYmluZGluZ3MnIHB1dHMgaXRz IG91dHB1dCBpbnRvCiAgICAgIDs7IHRoZSBjdXJyZW50IGJ1ZmZlci4KICAgICAgKHdpdGgtY3Vy cmVudC1idWZmZXIgKGhlbHAtYnVmZmVyKQoJKGRlc2NyaWJlLWJ1ZmZlci1iaW5kaW5ncyBidWYg cHJlZml4IG1lbnVzKSkpKSkKCihkZWZ1biB3aGVyZS1pcyAoZGVmaW5pdGlvbiAmb3B0aW9uYWwg aW5zZXJ0KQogICJQcmludCBtZXNzYWdlIGxpc3Rpbmcga2V5IHNlcXVlbmNlcyB0aGF0IGludm9r ZSB0aGUgY29tbWFuZCBERUZJTklUSU9OLgpBcmd1bWVudCBpcyBhIGNvbW1hbmQgZGVmaW5pdGlv biwgdXN1YWxseSBhIHN5bWJvbCB3aXRoIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4KSWYgSU5TRVJU ICh0aGUgcHJlZml4IGFyZykgaXMgbm9uLW5pbCwgaW5zZXJ0IHRoZSBtZXNzYWdlIGluIHRoZSBi dWZmZXIuIgogIChpbnRlcmFjdGl2ZQogICAobGV0ICgoZm4gKGZ1bmN0aW9uLWNhbGxlZC1hdC1w b2ludCkpCgkgKGVuYWJsZS1yZWN1cnNpdmUtbWluaWJ1ZmZlcnMgdCkKCSB2YWwpCiAgICAgKHNl dHEgdmFsIChjb21wbGV0aW5nLXJlYWQKCQkoaWYgZm4KCQkgICAgKGZvcm1hdCAiV2hlcmUgaXMg Y29tbWFuZCAoZGVmYXVsdCAlcyk6ICIgZm4pCgkJICAiV2hlcmUgaXMgY29tbWFuZDogIikKCQlv YmFycmF5ICdjb21tYW5kcCB0IG5pbCBuaWwKCQkoYW5kIGZuIChzeW1ib2wtbmFtZSBmbikpKSkK ICAgICAobGlzdCAodW5sZXNzIChlcXVhbCB2YWwgIiIpIChpbnRlcm4gdmFsKSkKCSAgIGN1cnJl bnQtcHJlZml4LWFyZykpKQogICh1bmxlc3MgZGVmaW5pdGlvbiAoZXJyb3IgIk5vIGNvbW1hbmQi KSkKICAobGV0ICgoZnVuYyAoaW5kaXJlY3QtZnVuY3Rpb24gZGVmaW5pdGlvbikpCiAgICAgICAg KGRlZnMgbmlsKQogICAgICAgIChzdGFuZGFyZC1vdXRwdXQgKGlmIGluc2VydCAoY3VycmVudC1i dWZmZXIpIHN0YW5kYXJkLW91dHB1dCkpKQogICAgOzsgSW4gREVGUywgZmluZCBhbGwgc3ltYm9s cyB0aGF0IGFyZSBhbGlhc2VzIGZvciBERUZJTklUSU9OLgogICAgKG1hcGF0b21zIChsYW1iZGEg KHN5bWJvbCkKCQkoYW5kIChmYm91bmRwIHN5bWJvbCkKCQkgICAgIChub3QgKGVxIHN5bWJvbCBk ZWZpbml0aW9uKSkKCQkgICAgIChlcSBmdW5jIChjb25kaXRpb24tY2FzZSAoKQoJCQkJICAoaW5k aXJlY3QtZnVuY3Rpb24gc3ltYm9sKQoJCQkJKGVycm9yIHN5bWJvbCkpKQoJCSAgICAgKHB1c2gg c3ltYm9sIGRlZnMpKSkpCiAgICA7OyBMb29rIGF0IGFsbCB0aGUgc3ltYm9scy0tZmlyc3QgREVG SU5JVElPTiwKICAgIDs7IHRoZW4gaXRzIGFsaWFzZXMuCiAgICAoZG9saXN0IChzeW1ib2wgKGNv bnMgZGVmaW5pdGlvbiBkZWZzKSkKICAgICAgKGxldCogKChyZW1hcHBlZCAoY29tbWFuZC1yZW1h cHBpbmcgc3ltYm9sKSkKCSAgICAgKGtleXMgKHdoZXJlLWlzLWludGVybmFsCgkJICAgIHN5bWJv bCBvdmVycmlkaW5nLWxvY2FsLW1hcCBuaWwgbmlsIHJlbWFwcGVkKSkKCSAgICAgKGtleXMgKG1h cGNvbmNhdCAna2V5LWRlc2NyaXB0aW9uIGtleXMgIiwgIikpCgkgICAgIHN0cmluZykKCShzZXRx IHN0cmluZwoJICAgICAgKGlmIGluc2VydAoJCSAgKGlmICg+IChsZW5ndGgga2V5cykgMCkKCQkg ICAgICAoaWYgcmVtYXBwZWQKCQkJICAoZm9ybWF0ICIlcyAoJXMpIChyZW1hcHBlZCBmcm9tICVz KSIKCQkJCSAga2V5cyByZW1hcHBlZCBzeW1ib2wpCgkJCShmb3JtYXQgIiVzICglcykiIGtleXMg c3ltYm9sKSkKCQkgICAgKGZvcm1hdCAiTS14ICVzIFJFVCIgc3ltYm9sKSkKCQkoaWYgKD4gKGxl bmd0aCBrZXlzKSAwKQoJCSAgICAoaWYgcmVtYXBwZWQKCQkJKGZvcm1hdCAiJXMgaXMgcmVtYXBw ZWQgdG8gJXMgd2hpY2ggaXMgb24gJXMiCgkJCQlzeW1ib2wgcmVtYXBwZWQga2V5cykKCQkgICAg ICAoZm9ybWF0ICIlcyBpcyBvbiAlcyIgc3ltYm9sIGtleXMpKQoJCSAgOzsgSWYgdGhpcyBpcyB0 aGUgY29tbWFuZCB0aGUgdXNlciBhc2tlZCBhYm91dCwKCQkgIDs7IGFuZCBpdCBpcyBub3Qgb24g YW55IGtleSwgc2F5IHNvLgoJCSAgOzsgRm9yIG90aGVyIHN5bWJvbHMsIGl0cyBhbGlhc2VzLCBz YXkgbm90aGluZwoJCSAgOzsgYWJvdXQgdGhlbSB1bmxlc3MgdGhleSBhcmUgb24ga2V5cy4KCQkg IChpZiAoZXEgc3ltYm9sIGRlZmluaXRpb24pCgkJICAgICAgKGZvcm1hdCAiJXMgaXMgbm90IG9u IGFueSBrZXkiIHN5bWJvbCkpKSkpCgkod2hlbiBzdHJpbmcKCSAgKHVubGVzcyAoZXEgc3ltYm9s IGRlZmluaXRpb24pCgkgICAgKHByaW5jICI7XG4gaXRzIGFsaWFzICIpKQoJICAocHJpbmMgc3Ry aW5nKSkpKSkKICBuaWwpCgooZGVmdW4gaGVscC1rZXktZGVzY3JpcHRpb24gKGtleSB1bnRyYW5z bGF0ZWQpCiAgKGxldCAoKHN0cmluZyAoa2V5LWRlc2NyaXB0aW9uIGtleSkpKQogICAgKGlmIChv ciAobm90IHVudHJhbnNsYXRlZCkKCSAgICAoYW5kIChlcSAoYXJlZiB1bnRyYW5zbGF0ZWQgMCkg P1xlKSAobm90IChlcSAoYXJlZiBrZXkgMCkgP1xlKSkpKQoJc3RyaW5nCiAgICAgIChsZXQgKChv dGhlcnN0cmluZyAoa2V5LWRlc2NyaXB0aW9uIHVudHJhbnNsYXRlZCkpKQoJKGlmIChlcXVhbCBz dHJpbmcgb3RoZXJzdHJpbmcpCgkgICAgc3RyaW5nCgkgIChmb3JtYXQgIiVzICh0cmFuc2xhdGVk IGZyb20gJXMpIiBzdHJpbmcgb3RoZXJzdHJpbmcpKSkpKSkKCihkZWZ1biBoZWxwLS1iaW5kaW5n LXVuZGVmaW5lZC1wIChkZWZuKQogIChvciAobnVsbCBkZWZuKSAoaW50ZWdlcnAgZGVmbikgKGVx dWFsIGRlZm4gJ3VuZGVmaW5lZCkpKQoKKGRlZnVuIGhlbHAtLWFuYWx5emUta2V5IChrZXkgdW50 cmFuc2xhdGVkKQogICJHZXQgaW5mb3JtYXRpb24gYWJvdXQgS0VZIGl0cyBjb3JyZXNwb25kaW5n IFVOVFJBTlNMQVRFRCBldmVudHMuClJldHVybnMgYSBsaXN0IG9mIHRoZSBmb3JtIChCUklFRi1E RVNDIERFRk4gRVZFTlQgTU9VU0UtTVNHKS4iCiAgKGlmIChudW1iZXJwIHVudHJhbnNsYXRlZCkK ICAgICAgKGVycm9yICJNaXNzaW5nIGB1bnRyYW5zbGF0ZWQnISIpKQogIChsZXQqICgoZXZlbnQg KHdoZW4gKD4gKGxlbmd0aCBrZXkpIDApCiAgICAgICAgICAgICAgICAgIChhcmVmIGtleSAoaWYg KGFuZCAoc3ltYm9scCAoYXJlZiBrZXkgMCkpCgkJICAgICAgICAgICAgICAgICAgICAgKD4gKGxl bmd0aCBrZXkpIDEpCgkJICAgICAgICAgICAgICAgICAgICAgKGNvbnNwIChhcmVmIGtleSAxKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgTG9vayBhdCB0aGUgc2Vjb25kIGV2 ZW50IHdoZW4gdGhlIGZpcnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgaXMg YSBwc2V1ZG8tZXZlbnQgbGlrZSBgbW9kZS1saW5lJyBvcgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDs7IGBsZWZ0LWZyaW5nZScuCgkJICAgICAgICAgICAgICAgIDEKCSAgICAgICAg ICAgICAgICAgICAgICAwKSkpKQoJIChtb2RpZmllcnMgKGV2ZW50LW1vZGlmaWVycyBldmVudCkp CgkgKG1vdXNlLW1zZyAoaWYgKG9yIChtZW1xICdjbGljayBtb2RpZmllcnMpIChtZW1xICdkb3du IG1vZGlmaWVycykKCQkJICAgIChtZW1xICdkcmFnIG1vZGlmaWVycykpCiAgICAgICAgICAgICAg ICAgICAgICAgICIgYXQgdGhhdCBzcG90IiAiIikpCgkgKGRlZm4gKGtleS1iaW5kaW5nIGtleSB0 KSkpCiAgICA7OyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgZmFrZWQgYW4gZW50cnkgaW4gIlNl bGVjdCBhbmQgUGFzdGUiIG1lbnUuCiAgICAod2hlbiAoYW5kIChlcSBkZWZuIG5pbCkKCSAgICAg ICAoc3RyaW5ncCAoYXJlZiBrZXkgKDEtIChsZW5ndGgga2V5KSkpKQoJICAgICAgIChlcSAoa2V5 LWJpbmRpbmcgKHN1YnN0cmluZyBrZXkgMCAtMSkpICd5YW5rLW1lbnUpKQogICAgICAoc2V0cSBk ZWZuICdtZW51LWJhci1zZWxlY3QteWFuaykpCiAgICA7OyBEb24ndCBib3RoZXIgdXNlciB3aXRo IHN0cmluZ3MgZnJvbSAoZS5nLikgdGhlIHNlbGVjdC1wYXN0ZSBtZW51LgogICAgKHdoZW4gKHN0 cmluZ3AgKGFyZWYga2V5ICgxLSAobGVuZ3RoIGtleSkpKSkKICAgICAgKGFzZXQga2V5ICgxLSAo bGVuZ3RoIGtleSkpICIoYW55IHN0cmluZykiKSkKICAgICh3aGVuIChhbmQgdW50cmFuc2xhdGVk CiAgICAgICAgICAgICAgIChzdHJpbmdwIChhcmVmIHVudHJhbnNsYXRlZCAoMS0gKGxlbmd0aCB1 bnRyYW5zbGF0ZWQpKSkpKQogICAgICAoYXNldCB1bnRyYW5zbGF0ZWQgKDEtIChsZW5ndGggdW50 cmFuc2xhdGVkKSkgIihhbnkgc3RyaW5nKSIpKQogICAgKGxpc3QKICAgICA7OyBOb3cgZGVzY3Jp YmUgdGhlIGtleSwgcGVyaGFwcyBhcyBjaGFuZ2VkLgogICAgIChsZXQgKChrZXktZGVzYyAoaGVs cC1rZXktZGVzY3JpcHRpb24ga2V5IHVudHJhbnNsYXRlZCkpKQogICAgICAgKGlmIChoZWxwLS1i aW5kaW5nLXVuZGVmaW5lZC1wIGRlZm4pCiAgICAgICAgICAgKGZvcm1hdCAiJXMlcyBpcyB1bmRl ZmluZWQiIGtleS1kZXNjIG1vdXNlLW1zZykKICAgICAgICAgKGZvcm1hdCAiJXMlcyBydW5zIHRo ZSBjb21tYW5kICVTIiBrZXktZGVzYyBtb3VzZS1tc2cgZGVmbikpKQogICAgIGRlZm4gZXZlbnQg bW91c2UtbXNnKSkpCgooZGVmdW4gaGVscC0tZmlsdGVyLWluZm8tbGlzdCAoaW5mby1saXN0IGkp CiAgIkRyb3AgdGhlIHVuZGVmaW5lZCBrZXlzLiIKICAob3IKICAgOzsgUmVtb3ZlIGFsbCBgdW5k ZWZpbmVkJyBrZXlzLgogICAoZGVscSBuaWwgKG1hcGNhciAobGFtYmRhICh4KQogICAgICAgICAg ICAgICAgICAgICAgICh1bmxlc3MgKGhlbHAtLWJpbmRpbmctdW5kZWZpbmVkLXAgKG50aCBpIHgp KSB4KSkKICAgICAgICAgICAgICAgICAgICAgaW5mby1saXN0KSkKICAgOzsgSWYgbm90aGluZyBs ZWZ0LCB0aGVuIGtlZXAgb25lICh0aGUgbGFzdCBvbmUpLgogICAobGFzdCBpbmZvLWxpc3QpKSkK CihkZWZ1biBkZXNjcmliZS1rZXktYnJpZWZseSAoJm9wdGlvbmFsIGtleS1saXN0IGluc2VydCB1 bnRyYW5zbGF0ZWQpCiAgIlByaW50IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbnMgS0VZLUxJU1Qg aW52b2tlcy4KS0VZLUxJU1QgaXMgYSBsaXN0IG9mIHBhaXJzIChTRVEgLiBSQVctU0VRKSBvZiBr ZXkgc2VxdWVuY2VzLCB3aGVyZQpSQVctU0VRIGlzIHRoZSB1bnRyYW5zbGF0ZWQgZm9ybSBvZiB0 aGUga2V5IHNlcXVlbmNlIFNFUS4KSWYgSU5TRVJUICh0aGUgcHJlZml4IGFyZykgaXMgbm9uLW5p bCwgaW5zZXJ0IHRoZSBtZXNzYWdlIGluIHRoZSBidWZmZXIuCgpXaGlsZSByZWFkaW5nIEtFWS1M SVNUIGludGVyYWN0aXZlbHksIHRoaXMgY29tbWFuZCB0ZW1wb3JhcmlseSBlbmFibGVzCm1lbnUg aXRlbXMgb3IgdG9vbC1iYXIgYnV0dG9ucyB0aGF0IGFyZSBkaXNhYmxlZCB0byBhbGxvdyBnZXR0 aW5nIGhlbHAKb24gdGhlbS4iCiAgKGRlY2xhcmUgKGFkdmVydGlzZWQtY2FsbGluZy1jb252ZW50 aW9uIChrZXktbGlzdCAmb3B0aW9uYWwgaW5zZXJ0KSAiMjcuMSIpKQogIChpbnRlcmFjdGl2ZQog ICA7OyBJZ25vcmUgbW91c2UgbW92ZW1lbnQgZXZlbnRzIGJlY2F1c2UgaXQncyB0b28gZWFzeSB0 byBtaXNzIHRoZQogICA7OyBtZXNzYWdlIHdoaWxlIG1vdmluZyB0aGUgbW91c2UuCiAgIChsZXQg KChrZXktbGlzdCAoaGVscC0tcmVhZC1rZXktc2VxdWVuY2UgJ25vLW1vdXNlLW1vdmVtZW50KSkp CiAgICAgYCgsa2V5LWxpc3QgLGN1cnJlbnQtcHJlZml4LWFyZykpKQogICh3aGVuIChhcnJheXAg a2V5LWxpc3QpCiAgICA7OyBPbGQgY2FsbGluZyBjb252ZW50aW9uLCBjaGFuZ2VkCiAgICAoc2V0 cSBrZXktbGlzdCAobGlzdCAoY29ucyBrZXktbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGlmIChudW1iZXJwIHVudHJhbnNsYXRlZCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodGhpcy1zaW5nbGUtY29tbWFuZC1yYXcta2V5cykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW50cmFuc2xhdGVkKSkpKSkKICAobGV0KiAoKGluZm8tbGlzdCAo bWFwY2FyIChsYW1iZGEgKGtyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVscC0t YW5hbHl6ZS1rZXkgKGNhciBrcikgKGNkciBrcikpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAga2V5LWxpc3QpKQogICAgICAgICAobXNnIChtYXBjb25jYXQgIydjYXIgKGhlbHAtLWZpbHRl ci1pbmZvLWxpc3QgaW5mby1saXN0IDEpICJcbiIpKSkKICAgIChpZiBpbnNlcnQgKGluc2VydCBt c2cpIChtZXNzYWdlICIlcyIgbXNnKSkpKQoKKGRlZnVuIGhlbHAtLWtleS1iaW5kaW5nLWtleW1h cCAoa2V5ICZvcHRpb25hbCBhY2NlcHQtZGVmYXVsdCBuby1yZW1hcCBwb3NpdGlvbikKICAiUmV0 dXJuIGEga2V5bWFwIGhvbGRpbmcgYSBiaW5kaW5nIGZvciBLRVkgd2l0aGluIGN1cnJlbnQga2V5 bWFwcy4KVGhlIGVmZmVjdCBvZiB0aGUgYXJndW1lbnRzIEtFWSwgQUNDRVBULURFRkFVTFQsIE5P LVJFTUFQIGFuZApQT1NJVElPTiBpcyBhcyBkb2N1bWVudGVkIGluIHRoZSBmdW5jdGlvbiBga2V5 LWJpbmRpbmcnLiIKICAobGV0KiAoKGFjdGl2ZS1tYXBzIChjdXJyZW50LWFjdGl2ZS1tYXBzIHQg cG9zaXRpb24pKQogICAgICAgICBtYXAgZm91bmQpCiAgICA7OyBXZSBsb29wIG92ZXIgYWN0aXZl IG1hcHMgbGlrZSBrZXktYmluZGluZyBkb2VzLgogICAgKHdoaWxlIChhbmQKICAgICAgICAgICAg KG5vdCBmb3VuZCkKICAgICAgICAgICAgKHNldHEgbWFwIChwb3AgYWN0aXZlLW1hcHMpKSkKICAg ICAgKHNldHEgZm91bmQgKGxvb2t1cC1rZXkgbWFwIGtleSBhY2NlcHQtZGVmYXVsdCkpCiAgICAg ICh3aGVuIChpbnRlZ2VycCBmb3VuZCkKICAgICAgICA7OyBUaGUgZmlyc3QgYGZvdW5kJyBjaGFy YWN0ZXJzIG9mIEtFWSB3ZXJlIGZvdW5kIGJ1dCBub3QgdGhlCiAgICAgICAgOzsgd2hvbGUgc2Vx dWVuY2UuCiAgICAgICAgKHNldHEgZm91bmQgbmlsKSkpCiAgICAod2hlbiBmb3VuZAogICAgICAo aWYgKGFuZCAoc3ltYm9scCBmb3VuZCkKICAgICAgICAgICAgICAgKG5vdCBuby1yZW1hcCkKICAg ICAgICAgICAgICAgKGNvbW1hbmQtcmVtYXBwaW5nIGZvdW5kKSkKICAgICAgICAgIDs7IFRoZSB1 c2VyIG1pZ2h0IHdhbnQgdG8ga25vdyBpbiB3aGljaCBtYXAgdGhlIGJpbmRpbmcgaXMKICAgICAg ICAgIDs7IGZvdW5kLCBvciBpbiB3aGljaCBtYXAgdGhlIHJlbWFwcGluZyBpcyBmb3VuZC4gIFRo ZQogICAgICAgICAgOzsgZGVmYXVsdCBpcyB0byBzaG93IHRoZSBsYXR0ZXIuCiAgICAgICAgICAo aGVscC0ta2V5LWJpbmRpbmcta2V5bWFwICh2ZWN0b3IgJ3JlbWFwIGZvdW5kKSkKICAgICAgICBt YXApKSkpCgooZGVmdW4gaGVscC0tYmluZGluZy1sb2N1cyAoa2V5IHBvc2l0aW9uKQogICJEZXNj cmliZSBpbiB3aGljaCBrZXltYXAgS0VZIGlzIGRlZmluZWQuClJldHVybiBhIHN5bWJvbCBwb2lu dGluZyB0byB0aGF0IGtleW1hcCBpZiBvbmUgZXhpc3RzIDsgb3RoZXJ3aXNlCnJldHVybiBuaWwu ICBUaGUgYXJndW1lbnQgUE9TSVRJT04gaXMgYXMgZG9jdW1lbnRlZCBpbiB0aGUKZnVuY3Rpb24g YGtleS1iaW5kaW5nJy4iCiAgKGxldCAoKG1hcCAoaGVscC0ta2V5LWJpbmRpbmcta2V5bWFwIGtl eSB0IG5pbCBwb3NpdGlvbikpKQogICAgKHdoZW4gbWFwCiAgICAgIChjYXRjaCAnZm91bmQKICAg ICAgICAobGV0ICgoYWR2ZXJ0aXNlZC1zeW1zIChuY29uYwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsaXN0ICdvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkaW5nLWxvY2FsLW1hcCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVscSBuaWwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobWFwY2FyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsYW1iZGEgKG1vZGUtYW5kLW1hcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGV0ICgobW9kZSAoY2FyIG1vZGUtYW5kLW1hcCkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKHN5bWJvbC12YWx1ZSBtb2Rl KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJuLXNv ZnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQg IiVzLW1hcCIgbW9kZSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1pbm9yLW1vZGUtbWFwLWFsaXN0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bGlzdCAnZ2xvYmFsLW1hcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp bnRlcm4tc29mdCAoZm9ybWF0ICIlcy1tYXAiIG1ham9yLW1vZGUpKSkpKSkKICAgICAgICAgIDs7 IExvb2sgaW50byB0aGVzZSBhZHZlcnRpc2VkIHN5bWJvbHMgZmlyc3QuCiAgICAgICAgICAoZG9s aXN0IChzeW0gYWR2ZXJ0aXNlZC1zeW1zKQogICAgICAgICAgICAod2hlbiAoYW5kCiAgICAgICAg ICAgICAgICAgICAoYm91bmRwIHN5bSkKICAgICAgICAgICAgICAgICAgIChlcSBtYXAgKHN5bWJv bC12YWx1ZSBzeW0pKSkKICAgICAgICAgICAgICAodGhyb3cgJ2ZvdW5kIHN5bSkpKQogICAgICAg ICAgOzsgT25seSBsb29rIGluIG90aGVyIHN5bWJvbHMgb3RoZXJ3aXNlLgogICAgICAgICAgKG1h cGF0b21zCiAgICAgICAgICAgKGxhbWJkYSAoeCkKICAgICAgICAgICAgICh3aGVuIChhbmQgKGJv dW5kcCB4KQogICAgICAgICAgICAgICAgICAgICAgICA7OyBBdm9pZCBsZXQtYm91bmQgc3ltYm9s cy4KICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNpYWwtdmFyaWFibGUtcCB4KQogICAgICAg ICAgICAgICAgICAgICAgICAoZXEgKHN5bWJvbC12YWx1ZSB4KSBtYXApKQogICAgICAgICAgICAg ICAodGhyb3cgJ2ZvdW5kIHgpKSkpCiAgICAgICAgICBuaWwpKSkpKQoKKGRlZnVuIGhlbHAtLXJl YWQta2V5LXNlcXVlbmNlICgmb3B0aW9uYWwgbm8tbW91c2UtbW92ZW1lbnQpCiAgIlJlYWQgYSBr ZXkgc2VxdWVuY2UgZnJvbSB0aGUgdXNlci4KVXN1YWxseSByZWFkcyBhIHNpbmdsZSBrZXkgc2Vx dWVuY2UsIGV4Y2VwdCB3aGVuIHRoYXQgc2VxdWVuY2UgbWlnaHQKaGlkZSBhbm90aGVyIG9uZSAo ZS5nLiBhIGRvd24gZXZlbnQsIHdoZXJlIHRoZSB1c2VyIGlzIGludGVyZXN0ZWQKaW4gZ2V0dGlu ZyBpbmZvIGFib3V0IHRoZSB1cCBldmVudCwgb3IgYSBjbGljayBldmVudCwgd2hlcmUgdGhlIHVz ZXIKd2FudHMgdG8gZ2V0IGluZm8gYWJvdXQgdGhlIGRvdWJsZSBjbGljaykuClJldHVybiBhIGxp c3Qgb2YgZWxlbWVudHMgb2YgdGhlIGZvcm0gKFNFUSAuIFJBVy1TRVEpLCB3aGVyZSBTRVEgaXMg YSBrZXkKc2VxdWVuY2UsIGFuZCBSQVctU0VRIGlzIGl0cyB1bnRyYW5zbGF0ZWQgZm9ybS4KSWYg Tk8tTU9VU0UtTU9WRU1FTlQgaXMgbm9uLW5pbCwgaWdub3JlIGtleSBzZXF1ZW5jZXMgc3RhcnRp bmcKd2l0aCBgbW91c2UtbW92ZW1lbnQnIGV2ZW50cy4iCiAgKGxldCAoKGVuYWJsZS1kaXNhYmxl ZC1tZW51cy1hbmQtYnV0dG9ucyB0KQogICAgICAgIChjdXJzb3ItaW4tZWNoby1hcmVhIHQpCiAg ICAgICAgc2F2ZWQteWFuay1tZW51KQogICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgKGxldCAo bGFzdC1tb2RpZmllcnMga2V5LWxpc3QpCiAgICAgICAgICA7OyBJZiB5YW5rLW1lbnUgaXMgZW1w dHksIHBvcHVsYXRlIGl0IHRlbXBvcmFyaWx5LCBzbyB0aGF0CiAgICAgICAgICA7OyAiU2VsZWN0 IGFuZCBQYXN0ZSIgbWVudSBjYW4gZ2VuZXJhdGUgYSBjb21wbGV0ZSBldmVudC4KICAgICAgICAg ICh3aGVuIChudWxsIChjZHIgeWFuay1tZW51KSkKICAgICAgICAgICAgKHNldHEgc2F2ZWQteWFu ay1tZW51IChjb3B5LXNlcXVlbmNlIHlhbmstbWVudSkpCiAgICAgICAgICAgIChtZW51LWJhci11 cGRhdGUteWFuay1tZW51ICIoYW55IHN0cmluZykiIG5pbCkpCiAgICAgICAgICAod2hpbGUKICAg ICAgICAgICAgICA7OyBSZWFkIGF0IGxlYXN0IG9uZSBrZXktc2VxdWVuY2UuCiAgICAgICAgICAg ICAgKG9yIChudWxsIGtleS1saXN0KQogICAgICAgICAgICAgICAgICA7OyBBZnRlciBhIGRvd24g ZXZlbnQsIGFsc28gcmVhZCB0aGUgKHByZXN1bWFibHkpIGZvbGxvd2luZwogICAgICAgICAgICAg ICAgICA7OyB1cC1ldmVudC4KICAgICAgICAgICAgICAgICAgKG1lbXEgJ2Rvd24gbGFzdC1tb2Rp ZmllcnMpCiAgICAgICAgICAgICAgICAgIDs7IEFmdGVyIGEgY2xpY2ssIHNlZSBpZiBhIGRvdWJs ZSBjbGljayBpcyBvbiB0aGUgd2F5LgogICAgICAgICAgICAgICAgICAoYW5kIChtZW1xICdjbGlj ayBsYXN0LW1vZGlmaWVycykKICAgICAgICAgICAgICAgICAgICAgICAobm90IChzaXQtZm9yICgv IGRvdWJsZS1jbGljay10aW1lIDEwMDAuMCkgdCkpKSkKICAgICAgICAgICAgKGxldCogKChzZXEg KHJlYWQta2V5LXNlcXVlbmNlICJcCkRlc2NyaWJlIHRoZSBmb2xsb3dpbmcga2V5LCBtb3VzZSBj bGljaywgb3IgbWVudSBpdGVtOiAiKSkKICAgICAgICAgICAgICAgICAgIChyYXctc2VxICh0aGlz LXNpbmdsZS1jb21tYW5kLXJhdy1rZXlzKSkKICAgICAgICAgICAgICAgICAgIChrZXluICh3aGVu ICg+IChsZW5ndGggc2VxKSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJlZiBzZXEg KDEtIChsZW5ndGggc2VxKSkpKSkKICAgICAgICAgICAgICAgICAgIChiYXNlIChldmVudC1iYXNp Yy10eXBlIGtleW4pKQogICAgICAgICAgICAgICAgICAgKG1vZGlmaWVycyAoZXZlbnQtbW9kaWZp ZXJzIGtleW4pKSkKICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAoKHplcm9wIChs ZW5ndGggc2VxKSkpICAgO0ZJWE1FOiBDYW4gdGhpcyBoYXBwZW4/CiAgICAgICAgICAgICAgICgo YW5kIG5vLW1vdXNlLW1vdmVtZW50IChlcSBiYXNlICdtb3VzZS1tb3ZlbWVudCkpIG5pbCkKICAg ICAgICAgICAgICAgKChlcSBiYXNlICdoZWxwLWVjaG8pIG5pbCkKICAgICAgICAgICAgICAgKHQK ICAgICAgICAgICAgICAgIChzZXRxIGxhc3QtbW9kaWZpZXJzIG1vZGlmaWVycykKICAgICAgICAg ICAgICAgIChwdXNoIChjb25zIHNlcSByYXctc2VxKSBrZXktbGlzdCkpKSkpCiAgICAgICAgICAo bnJldmVyc2Uga2V5LWxpc3QpKQogICAgICA7OyBQdXQgeWFuay1tZW51IGJhY2sgYXMgaXQgd2Fz LCBpZiB3ZSBjaGFuZ2VkIGl0LgogICAgICAod2hlbiBzYXZlZC15YW5rLW1lbnUKICAgICAgICAo c2V0cSB5YW5rLW1lbnUgKGNvcHktc2VxdWVuY2Ugc2F2ZWQteWFuay1tZW51KSkKICAgICAgICAo ZnNldCAneWFuay1tZW51IChjb25zICdrZXltYXAgeWFuay1tZW51KSkpKSkpCgooZGVmdW4gZGVz Y3JpYmUta2V5ICgmb3B0aW9uYWwga2V5LWxpc3QgYnVmZmVyIHVwLWV2ZW50KQogICJEaXNwbGF5 IGRvY3VtZW50YXRpb24gb2YgdGhlIGZ1bmN0aW9uIGludm9rZWQgYnkgS0VZLUxJU1QuCktFWS1M SVNUIGNhbiBiZSBhbnkga2luZCBvZiBhIGtleSBzZXF1ZW5jZTsgaXQgY2FuIGluY2x1ZGUga2V5 Ym9hcmQgZXZlbnRzLAptb3VzZSBldmVudHMsIGFuZC9vciBtZW51IGV2ZW50cy4gIFdoZW4gY2Fs bGluZyBmcm9tIGEgcHJvZ3JhbSwKcGFzcyBLRVktTElTVCBhcyBhIGxpc3Qgb2YgZWxlbWVudHMg KFNFUSAuIFJBVy1TRVEpIHdoZXJlIFNFUSBpcwphIGtleS1zZXF1ZW5jZSBhbmQgUkFXLVNFUSBp cyBpdHMgdW50cmFuc2xhdGVkIGZvcm0uCgpXaGlsZSByZWFkaW5nIEtFWS1MSVNUIGludGVyYWN0 aXZlbHksIHRoaXMgY29tbWFuZCB0ZW1wb3JhcmlseSBlbmFibGVzCm1lbnUgaXRlbXMgb3IgdG9v bC1iYXIgYnV0dG9ucyB0aGF0IGFyZSBkaXNhYmxlZCB0byBhbGxvdyBnZXR0aW5nIGhlbHAKb24g dGhlbS4KCkJVRkZFUiBpcyB0aGUgYnVmZmVyIGluIHdoaWNoIHRvIGxvb2t1cCB0aG9zZSBrZXlz OyBpdCBkZWZhdWx0cyB0byB0aGUKY3VycmVudCBidWZmZXIuIgogIChkZWNsYXJlIChhZHZlcnRp c2VkLWNhbGxpbmctY29udmVudGlvbiAoa2V5LWxpc3QgJm9wdGlvbmFsIGJ1ZmZlcikgIjI3LjEi KSkKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGhlbHAtLXJlYWQta2V5LXNlcXVlbmNlKSkpCiAgKHdo ZW4gKGFycmF5cCBrZXktbGlzdCkKICAgIDs7IENvbXBhdGliaWxpdHkgd2l0aCBvbGQgY2FsbGlu ZyBjb252ZW50aW9uLgogICAgKHNldHEga2V5LWxpc3QgKGNvbnMgKGxpc3Qga2V5LWxpc3QpIChp ZiB1cC1ldmVudCAobGlzdCB1cC1ldmVudCkpKSkKICAgICh3aGVuIGJ1ZmZlcgogICAgICAobGV0 ICgocmF3IChpZiAobnVtYmVycCBidWZmZXIpICh0aGlzLXNpbmdsZS1jb21tYW5kLXJhdy1rZXlz KSBidWZmZXIpKSkKICAgICAgICAoc2V0ZiAoY2RhciAobGFzdCBrZXktbGlzdCkpIHJhdykpKQog ICAgKHNldHEgYnVmZmVyIG5pbCkpCiAgKGxldCogKChidWYgKG9yIGJ1ZmZlciAoY3VycmVudC1i dWZmZXIpKSkKICAgICAgICAgKG9uLWxpbmsKICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoa3Ip CiAgICAgICAgICAgICAgICAgICAgKGxldCAoKHJhdyAoY2RyIGtyKSkpCiAgICAgICAgICAgICAg ICAgICAgICAoYW5kIChub3QgKG1lbXEgbW91c2UtMS1jbGljay1mb2xsb3dzLWxpbmsgJyhuaWwg ZG91YmxlKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICg+IChsZW5ndGggcmF3KSAwKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGNhci1zYWZlIChhcmVmIHJhdyAwKSkgJ21v dXNlLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1 ZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZS1vbi1saW5rLXAgKGV2ZW50LXN0 YXJ0IChhcmVmIHJhdyAwKSkpKSkpKQogICAgICAgICAgICAgICAgICBrZXktbGlzdCkpCiAgICAg ICAgIChpbmZvLWxpc3QKICAgICAgICAgIChoZWxwLS1maWx0ZXItaW5mby1saXN0CiAgICAgICAg ICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmCiAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEg KHgpCiAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlLWxldCogKChgKCxzZXEgLiAscmF3LXNl cSkgeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGAoLGJyaWVmLWRlc2Mg LGRlZm4gLGV2ZW50ICxfbW91c2UtbXNnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGhlbHAtLWFuYWx5emUta2V5IHNlcSByYXctc2VxKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxvY3VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoaGVscC0tYmluZGluZy1sb2N1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcSAoZXZlbnQtc3RhcnQgZXZlbnQpKSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICBgKCxzZXEgLGJyaWVmLWRlc2MgLGRlZm4gLGxvY3VzKSkpCiAgICAgICAgICAgICAgICAgICAg IGtleS1saXN0KSkKICAgICAgICAgICAyKSkpCiAgICAoaGVscC1zZXR1cC14cmVmIChsaXN0IChs YW1iZGEgKGtleS1saXN0IGJ1ZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVzY3Jp YmUta2V5IGtleS1saXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaWYgKGJ1ZmZlci1saXZlLXAgYnVmKSBidWYpKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAga2V5LWxpc3QgYnVmKQoJCSAgICAgKGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgJ2ludGVyYWN0 aXZlKSkKICAgIChpZiAoYW5kICg8PSAobGVuZ3RoIGluZm8tbGlzdCkgMSkKICAgICAgICAgICAg IChoZWxwLS1iaW5kaW5nLXVuZGVmaW5lZC1wIChudGggMiAoY2FyIGluZm8tbGlzdCkpKSkKICAg ICAgICAobWVzc2FnZSAiJXMiIChudGggMSAoY2FyIGluZm8tbGlzdCkpKQogICAgICAod2l0aC1o ZWxwLXdpbmRvdyAoaGVscC1idWZmZXIpCiAgICAgICAgKHdoZW4gKD4gKGxlbmd0aCBpbmZvLWxp c3QpIDEpCiAgICAgICAgICA7OyBGSVhNRTogTWFrZSB0aGlzIGludG8gY2xpY2thYmxlIGh5cGVy bGlua3MuCiAgICAgICAgICAocHJpbmMgIlRoZXJlIHdlcmUgc2V2ZXJhbCBrZXktc2VxdWVuY2Vz OlxuXG4iKQogICAgICAgICAgKHByaW5jIChtYXBjb25jYXQgKGxhbWJkYSAoaW5mbykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlLWxldCAoKGAoLF9zZXEgLGJyaWVmLWRlc2Mg LF9kZWZuICxfbG9jdXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbmZvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICIgICIgYnJp ZWYtZGVzYykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby1saXN0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiXG4iKSkKICAgICAgICAgICh3aGVuIChkZWxxIG5pbCBvbi1s aW5rKQogICAgICAgICAgICAocHJpbmMgIlxuXG5UaG9zZSBhcmUgaW5mbHVlbmNlZCBieSBgbW91 c2UtMS1jbGljay1mb2xsb3dzLWxpbmsnIikpCiAgICAgICAgICAocHJpbmMgIlxuXG5UaGV5J3Jl IGFsbCBkZXNjcmliZWQgYmVsb3cuIikpCiAgICAgICAgKHBjYXNlLWRvbGlzdCAoYCgsX3NlcSAs YnJpZWYtZGVzYyAsZGVmbiAsbG9jdXMpCiAgICAgICAgICAgICAgICAgICAgICAgaW5mby1saXN0 KQogICAgICAgICAgKHdoZW4gZGVmbgogICAgICAgICAgICAod2hlbiAoPiAobGVuZ3RoIGluZm8t bGlzdCkgMSkKICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGFuZGFyZC1vdXRw dXQKICAgICAgICAgICAgICAgIChpbnNlcnQgIlxuXG4iCiAgICAgICAgICAgICAgICAgICAgICAg IDs7IEZJWE1FOiBDYW4ndCB1c2UgZXZhbC13aGVuLWNvbXBpbGUgYmVjYXVzZSBwdXJpZmllZAog ICAgICAgICAgICAgICAgICAgICAgICA7OyBzdHJpbmdzIGxvc2UgdGhlaXIgdGV4dCBwcm9wZXJ0 aWVzIDotKAogICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAiXG4iICdmYWNlICco OmhlaWdodCAwLjEgOmludmVyc2UtdmlkZW8gdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICJc biIpKSkKCiAgICAgICAgICAgIChwcmluYyBicmllZi1kZXNjKQogICAgICAgICAgICAod2hlbiBs b2N1cwogICAgICAgICAgICAgIChwcmluYyAoZm9ybWF0ICIgKGZvdW5kIGluICVzKSIgbG9jdXMp KSkKICAgICAgICAgICAgKHByaW5jICIsIHdoaWNoIGlzICIpCgkgICAgKGRlc2NyaWJlLWZ1bmN0 aW9uLTEgZGVmbikpKSkpKSkKDAooZGVmdW4gZGVzY3JpYmUtbW9kZSAoJm9wdGlvbmFsIGJ1ZmZl cikKICAiRGlzcGxheSBkb2N1bWVudGF0aW9uIG9mIGN1cnJlbnQgbWFqb3IgbW9kZSBhbmQgbWlu b3IgbW9kZXMuCkEgYnJpZWYgc3VtbWFyeSBvZiB0aGUgbWlub3IgbW9kZXMgY29tZXMgZmlyc3Qs IGZvbGxvd2VkIGJ5IHRoZQptYWpvciBtb2RlIGRlc2NyaXB0aW9uLiAgVGhpcyBpcyBmb2xsb3dl ZCBieSBkZXRhaWxlZApkZXNjcmlwdGlvbnMgb2YgdGhlIG1pbm9yIG1vZGVzLCBlYWNoIG9uIGEg c2VwYXJhdGUgcGFnZS4KCkZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5IGZvciBhIG1pbm9yIG1v ZGUsIHRoZSBtb2RlJ3MgaW5kaWNhdG9yCnZhcmlhYmxlIFwobGlzdGVkIGluIGBtaW5vci1tb2Rl LWFsaXN0JykgbXVzdCBhbHNvIGJlIGEgZnVuY3Rpb24Kd2hvc2UgZG9jdW1lbnRhdGlvbiBkZXNj cmliZXMgdGhlIG1pbm9yIG1vZGUuCgpJZiBjYWxsZWQgZnJvbSBMaXNwIHdpdGggYSBub24tbmls IEJVRkZFUiBhcmd1bWVudCwgZGlzcGxheQpkb2N1bWVudGF0aW9uIGZvciB0aGUgbWFqb3IgYW5k IG1pbm9yIG1vZGVzIG9mIHRoYXQgYnVmZmVyLiIKICAoaW50ZXJhY3RpdmUgIkAiKQogICh1bmxl c3MgYnVmZmVyIChzZXRxIGJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKICAoaGVscC1zZXR1cC14 cmVmIChsaXN0ICMnZGVzY3JpYmUtbW9kZSBidWZmZXIpCgkJICAgKGNhbGxlZC1pbnRlcmFjdGl2 ZWx5LXAgJ2ludGVyYWN0aXZlKSkKICA7OyBGb3IgdGhlIHNha2Ugb2YgaGVscC1kby14cmVmIGFu ZCBoZWxwLXhyZWYtZ28tYmFjaywKICA7OyBkb24ndCBzd2l0Y2ggYnVmZmVycyBiZWZvcmUgY2Fs bGluZyBgaGVscC1idWZmZXInLgogICh3aXRoLWhlbHAtd2luZG93IChoZWxwLWJ1ZmZlcikKICAg ICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgogICAgICAobGV0IChtaW5vci1tb2RlcykKCTs7 IE9sZGVyIHBhY2thZ2VzIGRvIG5vdCByZWdpc3RlciBpbiBtaW5vci1tb2RlLWxpc3QgYnV0IG9u bHkgaW4KCTs7IG1pbm9yLW1vZGUtYWxpc3QuCgkoZG9saXN0ICh4IG1pbm9yLW1vZGUtYWxpc3Qp CgkgIChzZXRxIHggKGNhciB4KSkKCSAgKHVubGVzcyAobWVtcSB4IG1pbm9yLW1vZGUtbGlzdCkK CSAgICAocHVzaCB4IG1pbm9yLW1vZGUtbGlzdCkpKQoJOzsgRmluZCBlbmFibGVkIG1pbm9yIG1v ZGUgd2Ugd2lsbCB3YW50IHRvIG1lbnRpb24uCgkoZG9saXN0IChtb2RlIG1pbm9yLW1vZGUtbGlz dCkKCSAgOzsgRG9jdW1lbnQgYSBtaW5vciBtb2RlIGlmIGl0IGlzIGxpc3RlZCBpbiBtaW5vci1t b2RlLWFsaXN0LAoJICA7OyBub24tbmlsLCBhbmQgaGFzIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4K CSAgKGxldCAoKGZtb2RlIChvciAoZ2V0IG1vZGUgOm1pbm9yLW1vZGUtZnVuY3Rpb24pIG1vZGUp KSkKCSAgICAoYW5kIChib3VuZHAgbW9kZSkgKHN5bWJvbC12YWx1ZSBtb2RlKQoJCSAoZmJvdW5k cCBmbW9kZSkKCQkgKGxldCAoKHByZXR0eS1taW5vci1tb2RlCgkJCShpZiAoc3RyaW5nLW1hdGNo ICJcXChcXCgtbWlub3JcXCk/LW1vZGVcXCk/XFwnIgoJCQkJCSAgKHN5bWJvbC1uYW1lIGZtb2Rl KSkKCQkJICAgIChjYXBpdGFsaXplCgkJCSAgICAgKHN1YnN0cmluZyAoc3ltYm9sLW5hbWUgZm1v ZGUpCgkJCQkJMCAobWF0Y2gtYmVnaW5uaW5nIDApKSkKCQkJICBmbW9kZSkpKQoJCSAgIChwdXNo IChsaXN0IGZtb2RlIHByZXR0eS1taW5vci1tb2RlCgkJCSAgICAgICAoZm9ybWF0LW1vZGUtbGlu ZSAoYXNzcSBtb2RlIG1pbm9yLW1vZGUtYWxpc3QpKSkKCQkJIG1pbm9yLW1vZGVzKSkpKSkKCShz ZXRxIG1pbm9yLW1vZGVzCgkgICAgICAoc29ydCBtaW5vci1tb2RlcwoJCSAgICAobGFtYmRhIChh IGIpIChzdHJpbmctbGVzc3AgKGNhZHIgYSkgKGNhZHIgYikpKSkpCgkod2hlbiBtaW5vci1tb2Rl cwoJICAocHJpbmMgIkVuYWJsZWQgbWlub3IgbW9kZXM6XG4iKQoJICAobWFrZS1sb2NhbC12YXJp YWJsZSAnaGVscC1idXR0b24tY2FjaGUpCgkgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHN0YW5kYXJk LW91dHB1dAoJICAgIChkb2xpc3QgKG1vZGUgbWlub3ItbW9kZXMpCgkgICAgICAobGV0ICgobW9k ZS1mdW5jdGlvbiAobnRoIDAgbW9kZSkpCgkJICAgIChwcmV0dHktbWlub3ItbW9kZSAobnRoIDEg bW9kZSkpCgkJICAgIChpbmRpY2F0b3IgKG50aCAyIG1vZGUpKSkKCQkoc2F2ZS1leGN1cnNpb24K CQkgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCgkJICAocHJpbmMgIlxuXGZcbiIpCgkJICAocHVz aCAocG9pbnQtbWFya2VyKSBoZWxwLWJ1dHRvbi1jYWNoZSkKCQkgIDs7IERvY3VtZW50IHRoZSBt aW5vciBtb2RlcyBmdWxseS4KICAgICAgICAgICAgICAgICAgKGluc2VydC10ZXh0LWJ1dHRvbgog ICAgICAgICAgICAgICAgICAgcHJldHR5LW1pbm9yLW1vZGUgJ3R5cGUgJ2hlbHAtZnVuY3Rpb24K ICAgICAgICAgICAgICAgICAgICdoZWxwLWFyZ3MgKGxpc3QgbW9kZS1mdW5jdGlvbikKICAgICAg ICAgICAgICAgICAgICdidXR0b24gJyh0KSkKCQkgIChwcmluYyAoZm9ybWF0ICIgbWlub3IgbW9k ZSAoJXMpOlxuIgoJCQkJIChpZiAoemVyb3AgKGxlbmd0aCBpbmRpY2F0b3IpKQoJCQkJICAgICAi bm8gaW5kaWNhdG9yIgoJCQkJICAgKGZvcm1hdCAiaW5kaWNhdG9yJXMiCgkJCQkJICAgaW5kaWNh dG9yKSkpKQoJCSAgKHByaW5jIChkb2N1bWVudGF0aW9uIG1vZGUtZnVuY3Rpb24pKSkKCQkoaW5z ZXJ0LWJ1dHRvbiBwcmV0dHktbWlub3ItbW9kZQoJCQkgICAgICAgJ2FjdGlvbiAoY2FyIGhlbHAt YnV0dG9uLWNhY2hlKQoJCQkgICAgICAgJ2ZvbGxvdy1saW5rIHQKCQkJICAgICAgICdoZWxwLWVj aG8gIm1vdXNlLTIsIFJFVDogc2hvdyBmdWxsIGluZm9ybWF0aW9uIikKCQkobmV3bGluZSkpKQoJ ICAgIChmb3J3YXJkLWxpbmUgLTEpCgkgICAgKGZpbGwtcGFyYWdyYXBoIG5pbCkKCSAgICAoZm9y d2FyZC1saW5lIDEpKQoKCSAgKHByaW5jICJcbihJbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBtaW5v ciBtb2RlcyBmb2xsb3dzIHRoZSBtYWpvciBtb2RlIGluZm8uKVxuXG4iKSkKCTs7IERvY3VtZW50 IHRoZSBtYWpvciBtb2RlLgoJKGxldCAoKG1vZGUgbW9kZS1uYW1lKSkKCSAgKHdpdGgtY3VycmVu dC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CiAgICAgICAgICAgIChsZXQgKChzdGFydCAocG9pbnQp KSkKICAgICAgICAgICAgICAoaW5zZXJ0IChmb3JtYXQtbW9kZS1saW5lIG1vZGUgbmlsIG5pbCBi dWZmZXIpKQogICAgICAgICAgICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVzIHN0YXJ0IChwb2ludCkg JyhmYWNlIGJvbGQpKSkpKQoJKHByaW5jICIgbW9kZSIpCgkobGV0KiAoKG1vZGUgbWFqb3ItbW9k ZSkKCSAgICAgICAoZmlsZS1uYW1lIChmaW5kLWxpc3Atb2JqZWN0LWZpbGUtbmFtZSBtb2RlIG5p bCkpKQoJICAod2hlbiBmaWxlLW5hbWUKCSAgICAocHJpbmMgKGZvcm1hdC1tZXNzYWdlICIgZGVm aW5lZCBpbiBgJXMnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5h bWUtbm9uZGlyZWN0b3J5IGZpbGUtbmFtZSkpKQoJICAgIDs7IE1ha2UgYSBoeXBlcmxpbmsgdG8g dGhlIGxpYnJhcnkuCgkgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0Cgkg ICAgICAoc2F2ZS1leGN1cnNpb24KCQkocmUtc2VhcmNoLWJhY2t3YXJkIChzdWJzdGl0dXRlLWNv bW1hbmQta2V5cyAiYFxcKFteYCddK1xcKSciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwgdCkKCQkoaGVscC14cmVmLWJ1dHRvbiAxICdoZWxwLWZ1bmN0aW9uLWRlZiBt b2RlIGZpbGUtbmFtZSkpKSkpCgkocHJpbmMgIjpcbiIpCgkocHJpbmMgKGRvY3VtZW50YXRpb24g bWFqb3ItbW9kZSkpKSkpCiAgOzsgRm9yIHRoZSBzYWtlIG9mIElFTE0gYW5kIG1heWJlIG90aGVy cwogIG5pbCkKCgooZGVmdW4gZGVzY3JpYmUtbWlub3ItbW9kZSAobWlub3ItbW9kZSkKICAiRGlz cGxheSBkb2N1bWVudGF0aW9uIG9mIGEgbWlub3IgbW9kZSBnaXZlbiBhcyBNSU5PUi1NT0RFLgpN SU5PUi1NT0RFIGNhbiBiZSBhIG1pbm9yIG1vZGUgc3ltYm9sIG9yIGEgbWlub3IgbW9kZSBpbmRp Y2F0b3Igc3RyaW5nCmFwcGVhcmVkIG9uIHRoZSBtb2RlLWxpbmUuIgogIChpbnRlcmFjdGl2ZSAo bGlzdCAoY29tcGxldGluZy1yZWFkCgkJICAgICAgIk1pbm9yIG1vZGU6ICIKCQkJICAgICAgKG5j b25jCgkJCSAgICAgICAoZGVzY3JpYmUtbWlub3ItbW9kZS1jb21wbGV0aW9uLXRhYmxlLWZvci1z eW1ib2wpCgkJCSAgICAgICAoZGVzY3JpYmUtbWlub3ItbW9kZS1jb21wbGV0aW9uLXRhYmxlLWZv ci1pbmRpY2F0b3IpCgkJCSAgICAgICApKSkpCiAgKGlmIChzeW1ib2xwIG1pbm9yLW1vZGUpCiAg ICAgIChzZXRxIG1pbm9yLW1vZGUgKHN5bWJvbC1uYW1lIG1pbm9yLW1vZGUpKSkKICAobGV0ICgo c3ltYm9scyAoZGVzY3JpYmUtbWlub3ItbW9kZS1jb21wbGV0aW9uLXRhYmxlLWZvci1zeW1ib2wp KQoJKGluZGljYXRvcnMgKGRlc2NyaWJlLW1pbm9yLW1vZGUtY29tcGxldGlvbi10YWJsZS1mb3It aW5kaWNhdG9yKSkpCiAgICAoY29uZAogICAgICgobWVtYmVyIG1pbm9yLW1vZGUgc3ltYm9scykK ICAgICAgKGRlc2NyaWJlLW1pbm9yLW1vZGUtZnJvbS1zeW1ib2wgKGludGVybiBtaW5vci1tb2Rl KSkpCiAgICAgKChtZW1iZXIgbWlub3ItbW9kZSBpbmRpY2F0b3JzKQogICAgICAoZGVzY3JpYmUt bWlub3ItbW9kZS1mcm9tLWluZGljYXRvciBtaW5vci1tb2RlKSkKICAgICAodAogICAgICAoZXJy b3IgIk5vIHN1Y2ggbWlub3IgbW9kZTogJXMiIG1pbm9yLW1vZGUpKSkpKQoKOzsgc3ltYm9sCihk ZWZ1biBkZXNjcmliZS1taW5vci1tb2RlLWNvbXBsZXRpb24tdGFibGUtZm9yLXN5bWJvbCAoKQog IDs7IEluIG9yZGVyIHRvIGxpc3QgdXAgYWxsIG1pbm9yIG1vZGVzLCBtaW5vci1tb2RlLWxpc3QK ICA7OyBpcyB1c2VkIGhlcmUgaW5zdGVhZCBvZiBtaW5vci1tb2RlLWFsaXN0LgogIChkZWxxIG5p bCAobWFwY2FyICdzeW1ib2wtbmFtZSBtaW5vci1tb2RlLWxpc3QpKSkKCihkZWZ1biBkZXNjcmli ZS1taW5vci1tb2RlLWZyb20tc3ltYm9sIChzeW1ib2wpCiAgIkRpc3BsYXkgZG9jdW1lbnRhdGlv biBvZiBhIG1pbm9yIG1vZGUgZ2l2ZW4gYXMgYSBzeW1ib2wsIFNZTUJPTCIKICAoaW50ZXJhY3Rp dmUgKGxpc3QgKGludGVybiAoY29tcGxldGluZy1yZWFkCgkJCSAgICAgICJNaW5vciBtb2RlIHN5 bWJvbDogIgoJCQkgICAgICAoZGVzY3JpYmUtbWlub3ItbW9kZS1jb21wbGV0aW9uLXRhYmxlLWZv ci1zeW1ib2wpKSkpKQogIChpZiAoZmJvdW5kcCBzeW1ib2wpCiAgICAgIChkZXNjcmliZS1mdW5j dGlvbiBzeW1ib2wpCiAgICAoZGVzY3JpYmUtdmFyaWFibGUgc3ltYm9sKSkpCgo7OyBpbmRpY2F0 b3IKKGRlZnVuIGRlc2NyaWJlLW1pbm9yLW1vZGUtY29tcGxldGlvbi10YWJsZS1mb3ItaW5kaWNh dG9yICgpCiAgKGRlbHEgbmlsCgkobWFwY2FyIChsYW1iZGEgKHgpCgkJICAobGV0ICgoaSAoZm9y bWF0LW1vZGUtbGluZSB4KSkpCgkJICAgIDs7IHJlbW92ZSBmaXJzdCBzcGFjZSBpZiBleGlzdGVk CgkJICAgIChjb25kCgkJICAgICAoKD0gMCAobGVuZ3RoIGkpKQoJCSAgICAgIG5pbCkKCQkgICAg ICgoZXEgKGFyZWYgaSAwKSA/XHMpCgkJICAgICAgKHN1YnN0cmluZyBpIDEpKQoJCSAgICAgKHQK CQkgICAgICBpKSkpKQoJCW1pbm9yLW1vZGUtYWxpc3QpKSkKCihkZWZ1biBkZXNjcmliZS1taW5v ci1tb2RlLWZyb20taW5kaWNhdG9yIChpbmRpY2F0b3IpCiAgIkRpc3BsYXkgZG9jdW1lbnRhdGlv biBvZiBhIG1pbm9yIG1vZGUgc3BlY2lmaWVkIGJ5IElORElDQVRPUi4KSWYgeW91IGNhbGwgdGhp cyBmdW5jdGlvbiBpbnRlcmFjdGl2ZWx5LCB5b3UgY2FuIGdpdmUgaW5kaWNhdG9yIHdoaWNoCmlz IGN1cnJlbnRseSBhY3RpdmF0ZWQgd2l0aCBjb21wbGV0aW9uLiIKICAoaW50ZXJhY3RpdmUgKGxp c3QKCQkoY29tcGxldGluZy1yZWFkCgkJICJNaW5vciBtb2RlIGluZGljYXRvcjogIgoJCSAoZGVz Y3JpYmUtbWlub3ItbW9kZS1jb21wbGV0aW9uLXRhYmxlLWZvci1pbmRpY2F0b3IpKSkpCiAgKGxl dCAoKG1pbm9yLW1vZGUgKGxvb2t1cC1taW5vci1tb2RlLWZyb20taW5kaWNhdG9yIGluZGljYXRv cikpKQogICAgKGlmIG1pbm9yLW1vZGUKCShkZXNjcmliZS1taW5vci1tb2RlLWZyb20tc3ltYm9s IG1pbm9yLW1vZGUpCiAgICAgIChlcnJvciAiQ2Fubm90IGZpbmQgbWlub3IgbW9kZSBmb3IgYCVz JyIgaW5kaWNhdG9yKSkpKQoKKGRlZnVuIGxvb2t1cC1taW5vci1tb2RlLWZyb20taW5kaWNhdG9y IChpbmRpY2F0b3IpCiAgIlJldHVybiBhIG1pbm9yIG1vZGUgc3ltYm9sIGZyb20gaXRzIGluZGlj YXRvciBvbiB0aGUgbW9kZSBsaW5lLiIKICA7OyByZW1vdmUgZmlyc3Qgc3BhY2UgaWYgZXhpc3Rl ZAogIChpZiAoYW5kICg8IDAgKGxlbmd0aCBpbmRpY2F0b3IpKQoJICAgKGVxIChhcmVmIGluZGlj YXRvciAwKSA/XHMpKQogICAgICAoc2V0cSBpbmRpY2F0b3IgKHN1YnN0cmluZyBpbmRpY2F0b3Ig MSkpKQogIChsZXQgKChtaW5vci1tb2RlcyBtaW5vci1tb2RlLWFsaXN0KQoJcmVzdWx0KQogICAg KHdoaWxlIG1pbm9yLW1vZGVzCiAgICAgIChsZXQqICgobWlub3ItbW9kZSAoY2FyIChjYXIgbWlu b3ItbW9kZXMpKSkKCSAgICAgKGFuaW5kaWNhdG9yIChmb3JtYXQtbW9kZS1saW5lCgkJCSAgIChj YXIgKGNkciAoY2FyIG1pbm9yLW1vZGVzKSkpKSkpCgk7OyByZW1vdmUgZmlyc3Qgc3BhY2UgaWYg ZXhpc3RlZAoJKGlmIChhbmQgKHN0cmluZ3AgYW5pbmRpY2F0b3IpCgkJICg+IChsZW5ndGggYW5p bmRpY2F0b3IpIDApCgkJIChlcSAoYXJlZiBhbmluZGljYXRvciAwKSA/XHMpKQoJICAgIChzZXRx IGFuaW5kaWNhdG9yIChzdWJzdHJpbmcgYW5pbmRpY2F0b3IgMSkpKQoJKGlmIChlcXVhbCBpbmRp Y2F0b3IgYW5pbmRpY2F0b3IpCgkgICAgKHNldHEgcmVzdWx0IG1pbm9yLW1vZGUKCQkgIG1pbm9y LW1vZGVzIG5pbCkKCSAgKHNldHEgbWlub3ItbW9kZXMgKGNkciBtaW5vci1tb2RlcykpKSkpCiAg ICByZXN1bHQpKQoMCihkZWNsYXJlLWZ1bmN0aW9uIHgtZGlzcGxheS1waXhlbC1oZWlnaHQgInhm bnMuYyIgKCZvcHRpb25hbCB0ZXJtaW5hbCkpCihkZWNsYXJlLWZ1bmN0aW9uIHgtZGlzcGxheS1w aXhlbC13aWR0aCAieGZucy5jIiAoJm9wdGlvbmFsIHRlcm1pbmFsKSkKCjs7OyBBdXRvbWF0aWMg cmVzaXppbmcgb2YgdGVtcG9yYXJ5IGJ1ZmZlcnMuCihkZWZjdXN0b20gdGVtcC1idWZmZXItbWF4 LWhlaWdodAogIChsYW1iZGEgKF9idWZmZXIpCiAgICAoaWYgKGFuZCAoZGlzcGxheS1ncmFwaGlj LXApIChlcSAoc2VsZWN0ZWQtd2luZG93KSAoZnJhbWUtcm9vdC13aW5kb3cpKSkKCSgvICh4LWRp c3BsYXktcGl4ZWwtaGVpZ2h0KSAoZnJhbWUtY2hhci1oZWlnaHQpIDIpCiAgICAgICgvICgtIChm cmFtZS1oZWlnaHQpIDIpIDIpKSkKICAiTWF4aW11bSBoZWlnaHQgb2YgYSB3aW5kb3cgZGlzcGxh eWluZyBhIHRlbXBvcmFyeSBidWZmZXIuClRoaXMgaXMgZWZmZWN0aXZlIG9ubHkgd2hlbiBUZW1w IEJ1ZmZlciBSZXNpemUgbW9kZSBpcyBlbmFibGVkLgpUaGUgdmFsdWUgaXMgdGhlIG1heGltdW0g aGVpZ2h0IChpbiBsaW5lcykgd2hpY2gKYHJlc2l6ZS10ZW1wLWJ1ZmZlci13aW5kb3cnIHdpbGwg Z2l2ZSB0byBhIHdpbmRvdyBkaXNwbGF5aW5nIGEKdGVtcG9yYXJ5IGJ1ZmZlci4gIEl0IGNhbiBh bHNvIGJlIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHRvCmNob29zZSB0aGUgaGVpZ2h0IGZvciBz dWNoIGEgYnVmZmVyLiAgSXQgZ2V0cyBvbmUgYXJndW1lbnQsIHRoZQpidWZmZXIsIGFuZCBzaG91 bGQgcmV0dXJuIGEgcG9zaXRpdmUgaW50ZWdlci4gIEF0IHRoZSB0aW1lIHRoZQpmdW5jdGlvbiBp cyBjYWxsZWQsIHRoZSB3aW5kb3cgdG8gYmUgcmVzaXplZCBpcyBzZWxlY3RlZC4iCiAgOnR5cGUg JyhjaG9pY2UgaW50ZWdlciBmdW5jdGlvbikKICA6Z3JvdXAgJ2hlbHAKICA6dmVyc2lvbiAiMjQu MyIpCgooZGVmY3VzdG9tIHRlbXAtYnVmZmVyLW1heC13aWR0aAogIChsYW1iZGEgKF9idWZmZXIp CiAgICAoaWYgKGFuZCAoZGlzcGxheS1ncmFwaGljLXApIChlcSAoc2VsZWN0ZWQtd2luZG93KSAo ZnJhbWUtcm9vdC13aW5kb3cpKSkKCSgvICh4LWRpc3BsYXktcGl4ZWwtd2lkdGgpIChmcmFtZS1j aGFyLXdpZHRoKSAyKQogICAgICAoLyAoLSAoZnJhbWUtd2lkdGgpIDIpIDIpKSkKICAiTWF4aW11 bSB3aWR0aCBvZiBhIHdpbmRvdyBkaXNwbGF5aW5nIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KVGhpcyBp cyBlZmZlY3RpdmUgb25seSB3aGVuIFRlbXAgQnVmZmVyIFJlc2l6ZSBtb2RlIGlzIGVuYWJsZWQu ClRoZSB2YWx1ZSBpcyB0aGUgbWF4aW11bSB3aWR0aCAoaW4gY29sdW1ucykgd2hpY2gKYHJlc2l6 ZS10ZW1wLWJ1ZmZlci13aW5kb3cnIHdpbGwgZ2l2ZSB0byBhIHdpbmRvdyBkaXNwbGF5aW5nIGEK dGVtcG9yYXJ5IGJ1ZmZlci4gIEl0IGNhbiBhbHNvIGJlIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVk IHRvCmNob29zZSB0aGUgd2lkdGggZm9yIHN1Y2ggYSBidWZmZXIuICBJdCBnZXRzIG9uZSBhcmd1 bWVudCwgdGhlCmJ1ZmZlciwgYW5kIHNob3VsZCByZXR1cm4gYSBwb3NpdGl2ZSBpbnRlZ2VyLiAg QXQgdGhlIHRpbWUgdGhlCmZ1bmN0aW9uIGlzIGNhbGxlZCwgdGhlIHdpbmRvdyB0byBiZSByZXNp emVkIGlzIHNlbGVjdGVkLiIKICA6dHlwZSAnKGNob2ljZSBpbnRlZ2VyIGZ1bmN0aW9uKQogIDpn cm91cCAnaGVscAogIDp2ZXJzaW9uICIyNC40IikKCihkZWZpbmUtbWlub3ItbW9kZSB0ZW1wLWJ1 ZmZlci1yZXNpemUtbW9kZQogICJUb2dnbGUgYXV0by1yZXNpemluZyB0ZW1wb3JhcnkgYnVmZmVy IHdpbmRvd3MgKFRlbXAgQnVmZmVyIFJlc2l6ZSBNb2RlKS4KV2l0aCBhIHByZWZpeCBhcmd1bWVu dCBBUkcsIGVuYWJsZSBUZW1wIEJ1ZmZlciBSZXNpemUgbW9kZSBpZiBBUkcKaXMgcG9zaXRpdmUs IGFuZCBkaXNhYmxlIGl0IG90aGVyd2lzZS4gIElmIGNhbGxlZCBmcm9tIExpc3AsCmVuYWJsZSB0 aGUgbW9kZSBpZiBBUkcgaXMgb21pdHRlZCBvciBuaWwuCgpXaGVuIFRlbXAgQnVmZmVyIFJlc2l6 ZSBtb2RlIGlzIGVuYWJsZWQsIHRoZSB3aW5kb3dzIGluIHdoaWNoIHdlCnNob3cgYSB0ZW1wb3Jh cnkgYnVmZmVyIGFyZSBhdXRvbWF0aWNhbGx5IHJlc2l6ZWQgaW4gaGVpZ2h0IHRvCmZpdCB0aGUg YnVmZmVyJ3MgY29udGVudHMsIGJ1dCBuZXZlciBtb3JlIHRoYW4KYHRlbXAtYnVmZmVyLW1heC1o ZWlnaHQnIG5vciBsZXNzIHRoYW4gYHdpbmRvdy1taW4taGVpZ2h0Jy4KCkEgd2luZG93IGlzIHJl c2l6ZWQgb25seSBpZiBpdCBoYXMgYmVlbiBzcGVjaWFsbHkgY3JlYXRlZCBmb3IgdGhlCmJ1ZmZl ci4gIFdpbmRvd3MgdGhhdCBoYXZlIHNob3duIGFub3RoZXIgYnVmZmVyIGJlZm9yZSBhcmUgbm90 CnJlc2l6ZWQuICBBIGZyYW1lIGlzIHJlc2l6ZWQgb25seSBpZiBgZml0LWZyYW1lLXRvLWJ1ZmZl cicgaXMKbm9uLW5pbC4KClRoaXMgbW9kZSBpcyB1c2VkIGJ5IGBoZWxwJywgYGFwcm9wb3MnIGFu ZCBgY29tcGxldGlvbicgYnVmZmVycywKYW5kIHNvbWUgb3RoZXJzLiIKICA6Z2xvYmFsIHQgOmdy b3VwICdoZWxwCiAgKGlmIHRlbXAtYnVmZmVyLXJlc2l6ZS1tb2RlCiAgICAgIDs7IGBoZWxwLW1h a2UteHJlZnMnIG1heSBhZGQgYSBgYmFjaycgYnV0dG9uIGFuZCB0aHVzIGluY3JlYXNlIHRoZQog ICAgICA7OyB0ZXh0IHNpemUsIHNvIGByZXNpemUtdGVtcC1idWZmZXItd2luZG93JyBtdXN0IGJl IHJ1biAqYWZ0ZXIqIGl0LgogICAgICAoYWRkLWhvb2sgJ3RlbXAtYnVmZmVyLXNob3ctaG9vayAn cmVzaXplLXRlbXAtYnVmZmVyLXdpbmRvdyAnYXBwZW5kKQogICAgKHJlbW92ZS1ob29rICd0ZW1w LWJ1ZmZlci1zaG93LWhvb2sgJ3Jlc2l6ZS10ZW1wLWJ1ZmZlci13aW5kb3cpKSkKCihkZWZ1biBy ZXNpemUtdGVtcC1idWZmZXItd2luZG93ICgmb3B0aW9uYWwgd2luZG93KQogICJSZXNpemUgV0lO RE9XIHRvIGZpdCBpdHMgY29udGVudHMuCldJTkRPVyBtdXN0IGJlIGEgbGl2ZSB3aW5kb3cgYW5k IGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCkRvIG5vdCByZXNpemUgaWYgV0lORE9XIHdh cyBub3QgY3JlYXRlZCBieSBgZGlzcGxheS1idWZmZXInLgoKSWYgV0lORE9XIGlzIHBhcnQgb2Yg YSB2ZXJ0aWNhbCBjb21iaW5hdGlvbiwgcmVzdHJhaW4gaXRzIG5ldwpzaXplIGJ5IGB0ZW1wLWJ1 ZmZlci1tYXgtaGVpZ2h0JyBhbmQgZG8gbm90IHJlc2l6ZSBpZiBpdHMgbWluaW11bQphY2Nlc3Np YmxlIHBvc2l0aW9uIGlzIHNjcm9sbGVkIG91dCBvZiB2aWV3LiAgSWYgV0lORE9XIGlzIHBhcnQK b2YgYSBob3Jpem9udGFsIGNvbWJpbmF0aW9uLCByZXN0cmFpbiBpdHMgbmV3IHNpemUgYnkKYHRl bXAtYnVmZmVyLW1heC13aWR0aCcuICBJbiBib3RoIGNhc2VzLCB0aGUgdmFsdWUgb2YgdGhlIG9w dGlvbgpgZml0LXdpbmRvdy10by1idWZmZXItaG9yaXpvbnRhbGx5JyBjYW4gaW5oaWJpdCByZXNp emluZy4KCklmIFdJTkRPVyBpcyB0aGUgcm9vdCB3aW5kb3cgb2YgaXRzIGZyYW1lLCByZXNpemUg dGhlIGZyYW1lCnByb3ZpZGVkIGBmaXQtZnJhbWUtdG8tYnVmZmVyJyBpcyBub24tbmlsLgoKVGhp cyBmdW5jdGlvbiBtYXkgY2FsbCBgcHJlc2VydmUtd2luZG93LXNpemUnIHRvIHByZXNlcnZlIHRo ZQpzaXplIG9mIFdJTkRPVy4iCiAgKHNldHEgd2luZG93ICh3aW5kb3ctbm9ybWFsaXplLXdpbmRv dyB3aW5kb3cgdCkpCiAgKGxldCAoKGhlaWdodCAoaWYgKGZ1bmN0aW9ucCB0ZW1wLWJ1ZmZlci1t YXgtaGVpZ2h0KQoJCSAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgd2luZG93CgkJICAgICAgKGZ1 bmNhbGwgdGVtcC1idWZmZXItbWF4LWhlaWdodCAod2luZG93LWJ1ZmZlcikpKQoJCSAgdGVtcC1i dWZmZXItbWF4LWhlaWdodCkpCgkod2lkdGggKGlmIChmdW5jdGlvbnAgdGVtcC1idWZmZXItbWF4 LXdpZHRoKQoJCSAgICh3aXRoLXNlbGVjdGVkLXdpbmRvdyB3aW5kb3cKCQkgICAgIChmdW5jYWxs IHRlbXAtYnVmZmVyLW1heC13aWR0aCAod2luZG93LWJ1ZmZlcikpKQoJCSB0ZW1wLWJ1ZmZlci1t YXgtd2lkdGgpKQoJKHF1aXQtY2FkciAoY2FkciAod2luZG93LXBhcmFtZXRlciB3aW5kb3cgJ3F1 aXQtcmVzdG9yZSkpKSkKICAgIDs7IFJlc2l6ZSBXSU5ET1cgaWZmIGl0IHdhcyBtYWRlIGJ5IGBk aXNwbGF5LWJ1ZmZlcicuCiAgICAod2hlbiAob3IgKGFuZCAoZXEgcXVpdC1jYWRyICd3aW5kb3cp CgkJICAgKG9yIChhbmQgKHdpbmRvdy1jb21iaW5lZC1wIHdpbmRvdykKCQkJICAgIChub3QgKGVx IGZpdC13aW5kb3ctdG8tYnVmZmVyLWhvcml6b250YWxseQoJCQkJICAgICAnb25seSkpCgkJCSAg ICAocG9zLXZpc2libGUtaW4td2luZG93LXAgKHBvaW50LW1pbikgd2luZG93KSkKCQkgICAgICAg KGFuZCAod2luZG93LWNvbWJpbmVkLXAgd2luZG93IHQpCgkJCSAgICBmaXQtd2luZG93LXRvLWJ1 ZmZlci1ob3Jpem9udGFsbHkpKSkKCSAgICAgIChhbmQgKGVxIHF1aXQtY2FkciAnZnJhbWUpCiAg ICAgICAgICAgICAgICAgICBmaXQtZnJhbWUtdG8tYnVmZmVyCiAgICAgICAgICAgICAgICAgICAo ZXEgd2luZG93IChmcmFtZS1yb290LXdpbmRvdyB3aW5kb3cpKSkpCgkoZml0LXdpbmRvdy10by1i dWZmZXIgd2luZG93IGhlaWdodCBuaWwgd2lkdGggbmlsIHQpKSkpCgo7OzsgSGVscCB3aW5kb3dz LgooZGVmY3VzdG9tIGhlbHAtd2luZG93LXNlbGVjdCBuaWwKICAiTm9uLW5pbCBtZWFucyBzZWxl Y3QgaGVscCB3aW5kb3cgZm9yIHZpZXdpbmcuCkNob2ljZXMgYXJlOgoKIG5ldmVyIChuaWwpIFNl bGVjdCBoZWxwIHdpbmRvdyBvbmx5IGlmIHRoZXJlIGlzIG5vIG90aGVyIHdpbmRvdwogICAgICAg ICAgICAgb24gaXRzIGZyYW1lLgoKIG90aGVyICAgICAgIFNlbGVjdCBoZWxwIHdpbmRvdyBpZiBh bmQgb25seSBpZiBpdCBhcHBlYXJzIG9uIHRoZQogICAgICAgICAgICAgcHJldmlvdXNseSBzZWxl Y3RlZCBmcmFtZSwgdGhhdCBmcmFtZSBjb250YWlucyBhdAogICAgICAgICAgICAgbGVhc3QgdHdv IG90aGVyIHdpbmRvd3MgYW5kIHRoZSBoZWxwIHdpbmRvdyBpcwogICAgICAgICAgICAgZWl0aGVy IG5ldyBvciBzaG93ZWQgYSBkaWZmZXJlbnQgYnVmZmVyIGJlZm9yZS4KCiBhbHdheXMgKHQpICBB bHdheXMgc2VsZWN0IHRoZSBoZWxwIHdpbmRvdy4KCklmIHRoaXMgb3B0aW9uIGlzIG5vbi1uaWwg YW5kIHRoZSBoZWxwIHdpbmRvdyBhcHBlYXJzIG9uIGFub3RoZXIKZnJhbWUsIHRoZW4gZ2l2ZSB0 aGF0IGZyYW1lIGlucHV0IGZvY3VzIHRvby4gIE5vdGUgYWxzbyB0aGF0IGlmCnRoZSBoZWxwIHdp bmRvdyBhcHBlYXJzIG9uIGFub3RoZXIgZnJhbWUsIGl0IG1heSBnZXQgc2VsZWN0ZWQgYW5kCml0 cyBmcmFtZSBnZXQgaW5wdXQgZm9jdXMgZXZlbiBpZiB0aGlzIG9wdGlvbiBpcyBuaWwuCgpUaGlz IG9wdGlvbiBoYXMgZWZmZWN0IGlmIGFuZCBvbmx5IGlmIHRoZSBoZWxwIHdpbmRvdyB3YXMgY3Jl YXRlZApieSBgd2l0aC1oZWxwLXdpbmRvdycuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFn ICJuZXZlciAobmlsKSIgbmlsKQoJCSAoY29uc3QgOnRhZyAib3RoZXIiIG90aGVyKQoJCSAoY29u c3QgOnRhZyAiYWx3YXlzICh0KSIgdCkpCiAgOmdyb3VwICdoZWxwCiAgOnZlcnNpb24gIjIzLjEi KQoKKGRlZmN1c3RvbSBoZWxwLWVuYWJsZS1hdXRvLWxvYWQgdAogICJXaGV0aGVyIEhlbHAgY29t bWFuZHMgY2FuIHBlcmZvcm0gYXV0b2xvYWRpbmcuCklmIG5vbi1uaWwsIHdoZW5ldmVyIFxcW2Rl c2NyaWJlLWZ1bmN0aW9uXSBpcyBjYWxsZWQgZm9yIGFuCmF1dG9sb2FkZWQgZnVuY3Rpb24gd2hv c2UgZG9jc3RyaW5nIGNvbnRhaW5zIGFueSBrZXkgc3Vic3RpdHV0aW9uCmNvbnN0cnVjdCAoc2Vl IGBzdWJzdGl0dXRlLWNvbW1hbmQta2V5cycpLCB0aGUgbGlicmFyeSBpcyBsb2FkZWQsCnNvIHRo YXQgdGhlIGRvY3VtZW50YXRpb24gY2FuIHNob3cgdGhlIHJpZ2h0IGtleSBiaW5kaW5ncy4iCiAg OnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2hlbHAKICA6dmVyc2lvbiAiMjQuMyIpCgooZGVmdW4g aGVscC13aW5kb3ctZGlzcGxheS1tZXNzYWdlIChxdWl0LXBhcnQgd2luZG93ICZvcHRpb25hbCBz Y3JvbGwpCiAgIkRpc3BsYXkgbWVzc2FnZSB0ZWxsaW5nIGhvdyB0byBxdWl0IGFuZCBzY3JvbGwg aGVscCB3aW5kb3cuClFVSVQtUEFSVCBpcyBhIHN0cmluZyB0ZWxsaW5nIGhvdyB0byBxdWl0IHRo ZSBoZWxwIHdpbmRvdyBXSU5ET1cuCk9wdGlvbmFsIGFyZ3VtZW50IFNDUk9MTCBub24tbmlsIG1l YW5zIHRlbGwgaG93IHRvIHNjcm9sbCBXSU5ET1cuClNDUk9MTCBlcXVhbCBgb3RoZXInIG1lYW5z IHRlbGwgaG93IHRvIHNjcm9sbCB0aGUgXCJvdGhlclwiCndpbmRvdy4iCiAgKGxldCAoKHNjcm9s bC1wYXJ0CgkgKGNvbmQKCSAgOzsgSWYgd2UgZG9uJ3QgaGF2ZSBRVUlULVBBUlQgd2UgcHJvYmFi bHkgcmV1c2UgYSB3aW5kb3cKCSAgOzsgc2hvd2luZyB0aGUgc2FtZSBidWZmZXIgc28gd2UgZG9u J3Qgc2hvdyBhbnkgbWVzc2FnZS4KCSAgKChub3QgcXVpdC1wYXJ0KSBuaWwpCgkgICgocG9zLXZp c2libGUtaW4td2luZG93LXAKCSAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAod2luZG93LWJ1ZmZl ciB3aW5kb3cpCgkgICAgICAocG9pbnQtbWF4KSkgd2luZG93IHQpCgkgICA7OyBCdWZmZXIgZW5k IGlzIGF0IGxlYXN0IHBhcnRpYWxseSB2aXNpYmxlLCBubyBuZWVkIHRvIHRhbGsKCSAgIDs7IGFi b3V0IHNjcm9sbGluZy4KCSAgICIuIikKCSAgKChlcSBzY3JvbGwgJ290aGVyKQoJICAgIiwgXFxb c2Nyb2xsLW90aGVyLXdpbmRvd10gdG8gc2Nyb2xsIGhlbHAuIikKCSAgKHNjcm9sbCAiLCBcXFtz Y3JvbGwtdXBdIHRvIHNjcm9sbCBoZWxwLiIpKSkpCiAgICAobWVzc2FnZSAiJXMiCiAgICAgKHN1 YnN0aXR1dGUtY29tbWFuZC1rZXlzIChjb25jYXQgcXVpdC1wYXJ0IHNjcm9sbC1wYXJ0KSkpKSkK CihkZWZ1biBoZWxwLXdpbmRvdy1zZXR1cCAod2luZG93ICZvcHRpb25hbCB2YWx1ZSkKICAiU2V0 IHVwIGhlbHAgd2luZG93IFdJTkRPVyBmb3IgYHdpdGgtaGVscC13aW5kb3cnLgpXSU5ET1cgaXMg dGhlIHdpbmRvdyB1c2VkIGZvciBkaXNwbGF5aW5nIHRoZSBoZWxwIGJ1ZmZlci4KUmV0dXJuIFZB TFVFLiIKICAobGV0KiAoKGhlbHAtYnVmZmVyICh3aGVuICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykK CQkJKHdpbmRvdy1idWZmZXIgd2luZG93KSkpCgkgKGhlbHAtc2V0dXAgKHdoZW4gKHdpbmRvdy1s aXZlLXAgd2luZG93KQoJCSAgICAgICAoY2FyICh3aW5kb3ctcGFyYW1ldGVyIHdpbmRvdyAncXVp dC1yZXN0b3JlKSkpKQoJIChmcmFtZSAod2luZG93LWZyYW1lIHdpbmRvdykpKQoKICAgICh3aGVu IGhlbHAtYnVmZmVyCiAgICAgIDs7IEhhbmRsZSBgaGVscC13aW5kb3ctcG9pbnQtbWFya2VyJy4K ICAgICAgKHdoZW4gKGVxIChtYXJrZXItYnVmZmVyIGhlbHAtd2luZG93LXBvaW50LW1hcmtlcikg aGVscC1idWZmZXIpCgkoc2V0LXdpbmRvdy1wb2ludCB3aW5kb3cgaGVscC13aW5kb3ctcG9pbnQt bWFya2VyKQoJOzsgUmVzZXQgYGhlbHAtd2luZG93LXBvaW50LW1hcmtlcicuCgkoc2V0LW1hcmtl ciBoZWxwLXdpbmRvdy1wb2ludC1tYXJrZXIgbmlsKSkKCiAgICAgIDs7IElmIHRoZSBoZWxwIHdp bmRvdyBhcHBlYXJzIG9uIGFub3RoZXIgZnJhbWUsIHNlbGVjdCBpdCBpZgogICAgICA7OyBgaGVs cC13aW5kb3ctc2VsZWN0JyBpcyBub24tbmlsIGFuZCBnaXZlIHRoYXQgZnJhbWUgaW5wdXQgZm9j dXMKICAgICAgOzsgdG9vLiAgU2VlIGFsc28gQnVnIzE5MDEyLgogICAgICAod2hlbiAoYW5kIGhl bHAtd2luZG93LXNlbGVjdAoJCSAoZnJhbWUtbGl2ZS1wIGhlbHAtd2luZG93LW9sZC1mcmFtZSkK CQkgKG5vdCAoZXEgZnJhbWUgaGVscC13aW5kb3ctb2xkLWZyYW1lKSkpCgkoc2VsZWN0LXdpbmRv dyB3aW5kb3cpCgkoc2VsZWN0LWZyYW1lLXNldC1pbnB1dC1mb2N1cyBmcmFtZSkpCgogICAgICAo Y29uZAogICAgICAgKChvciAoZXEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKQoJICAgIDs7IElm IHRoZSBoZWxwIHdpbmRvdyBpcyBvbiB0aGUgc2VsZWN0ZWQgZnJhbWUsIHNlbGVjdAoJICAgIDs7 IGl0IGlmIGBoZWxwLXdpbmRvdy1zZWxlY3QnIGlzIHQgb3IgYGhlbHAtd2luZG93LXNlbGVjdCcK CSAgICA7OyBpcyAnb3RoZXIsIHRoZSBmcmFtZSBjb250YWlucyBhdCBsZWFzdCB0aHJlZSB3aW5k b3dzLCBhbmQKCSAgICA7OyB0aGUgaGVscCB3aW5kb3cgZGlkIHNob3cgYW5vdGhlciBidWZmZXIg YmVmb3JlLiAgU2VlIGFsc28KCSAgICA7OyBCdWcjMTEwMzkuCgkgICAgKGFuZCAoZXEgZnJhbWUg KHNlbGVjdGVkLWZyYW1lKSkKCQkgKG9yIChlcSBoZWxwLXdpbmRvdy1zZWxlY3QgdCkKCQkgICAg IChhbmQgKGVxIGhlbHAtd2luZG93LXNlbGVjdCAnb3RoZXIpCgkJCSAgKD4gKGxlbmd0aCAod2lu ZG93LWxpc3QgbmlsICduby1taW5pKSkgMikKCQkJICAobm90IChlcSBoZWxwLXNldHVwICdzYW1l KSkpKQoJCSAoc2VsZWN0LXdpbmRvdyB3aW5kb3cpKSkKCTs7IFRoZSBoZWxwIHdpbmRvdyBpcyBv ciBnZXRzIHNlbGVjdGVkIC4uLgoJKGhlbHAtd2luZG93LWRpc3BsYXktbWVzc2FnZQoJIChjb25k CgkgICgoZXEgaGVscC1zZXR1cCAnd2luZG93KQoJICAgOzsgLi4uIGFuZCBpcyBuZXcsIC4uLgoJ ICAgIlR5cGUgXCJxXCIgdG8gZGVsZXRlIGhlbHAgd2luZG93IikKCSAgKChlcSBoZWxwLXNldHVw ICdmcmFtZSkKCSAgIDs7IC4uLiBvbiBhIG5ldyBmcmFtZSwgLi4uCgkgICAiVHlwZSBcInFcIiB0 byBxdWl0IHRoZSBoZWxwIGZyYW1lIikKCSAgKChlcSBoZWxwLXNldHVwICdvdGhlcikKCSAgIDs7 IC4uLiBvciBkaXNwbGF5ZWQgc29tZSBvdGhlciBidWZmZXIgYmVmb3JlLgoJICAgIlR5cGUgXCJx XCIgdG8gcmVzdG9yZSBwcmV2aW91cyBidWZmZXIiKSkKCSB3aW5kb3cgdCkpCiAgICAgICAoKGFu ZCAoZXEgKHdpbmRvdy1mcmFtZSB3aW5kb3cpIGhlbHAtd2luZG93LW9sZC1mcmFtZSkKCSAgICAg KD0gKGxlbmd0aCAod2luZG93LWxpc3QgbmlsICduby1taW5pKSkgMikpCgk7OyBUaGVyZSBhcmUg dHdvIHdpbmRvd3Mgb24gdGhlIGhlbHAgd2luZG93J3MgZnJhbWUgYW5kIHRoZQoJOzsgb3RoZXIg b25lIGlzIHRoZSBzZWxlY3RlZCBvbmUuCgkoaGVscC13aW5kb3ctZGlzcGxheS1tZXNzYWdlCgkg KGNvbmQKCSAgKChlcSBoZWxwLXNldHVwICd3aW5kb3cpCgkgICAiVHlwZSBcXFtkZWxldGUtb3Ro ZXItd2luZG93c10gdG8gZGVsZXRlIHRoZSBoZWxwIHdpbmRvdyIpCgkgICgoZXEgaGVscC1zZXR1 cCAnb3RoZXIpCgkgICAiVHlwZSBcInFcIiBpbiBoZWxwIHdpbmRvdyB0byByZXN0b3JlIGl0cyBw cmV2aW91cyBidWZmZXIiKSkKCSB3aW5kb3cgJ290aGVyKSkKICAgICAgICh0Cgk7OyBUaGUgaGVs cCB3aW5kb3cgaXMgbm90IHNlbGVjdGVkIC4uLgoJKGhlbHAtd2luZG93LWRpc3BsYXktbWVzc2Fn ZQoJIChjb25kCgkgICgoZXEgaGVscC1zZXR1cCAnd2luZG93KQoJICAgOzsgLi4uIGFuZCBpcyBu ZXcsIC4uLgoJICAgIlR5cGUgXCJxXCIgaW4gaGVscCB3aW5kb3cgdG8gZGVsZXRlIGl0IikKCSAg KChlcSBoZWxwLXNldHVwICdvdGhlcikKCSAgIDs7IC4uLiBvciBkaXNwbGF5ZWQgc29tZSBvdGhl ciBidWZmZXIgYmVmb3JlLgoJICAgIlR5cGUgXCJxXCIgaW4gaGVscCB3aW5kb3cgdG8gcmVzdG9y ZSBwcmV2aW91cyBidWZmZXIiKSkKCSB3aW5kb3cpKSkpCiAgICA7OyBSZXR1cm4gVkFMVUUuCiAg ICB2YWx1ZSkpCgo7OyBgd2l0aC1oZWxwLXdpbmRvdycgaXMgYSB3cmFwcGVyIGZvciBgd2l0aC10 ZW1wLWJ1ZmZlci13aW5kb3cnCjs7IHByb3ZpZGluZyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwg dHdpc3RzOgoKOzsgKDEpIEl0IHB1dHMgdGhlIGJ1ZmZlciBpbiBgaGVscC1tb2RlJyAodmlhIGBo ZWxwLW1vZGUtc2V0dXAnKSBhbmQKOzsgICAgIGFkZHMgY3Jvc3MgcmVmZXJlbmNlcyAodmlhIGBo ZWxwLW1vZGUtZmluaXNoJykuCgo7OyAoMikgSXQgaXNzdWVzIGEgbWVzc2FnZSB0ZWxsaW5nIGhv dyB0byBzY3JvbGwgYW5kIHF1aXQgdGhlIGhlbHAKOzsgICAgIHdpbmRvdyAodmlhIGBoZWxwLXdp bmRvdy1zZXR1cCcpLgoKOzsgKDMpIEFuIG9wdGlvbiAoY3VzdG9taXphYmxlIHZpYSBgaGVscC13 aW5kb3ctc2VsZWN0JykgdG8gc2VsZWN0IHRoZQo7OyAgICAgaGVscCB3aW5kb3cgYXV0b21hdGlj YWxseS4KCjs7ICg0KSBBIG1hcmtlciAoYGhlbHAtd2luZG93LXBvaW50LW1hcmtlcicpIHRvIG1v dmUgcG9pbnQgaW4gdGhlIGhlbHAKOzsgICAgIHdpbmRvdyB0byBhbiBhcmJpdHJhcnkgYnVmZmVy IHBvc2l0aW9uLgooZGVmbWFjcm8gd2l0aC1oZWxwLXdpbmRvdyAoYnVmZmVyLW5hbWUgJnJlc3Qg Ym9keSkKICAiRGlzcGxheSBidWZmZXIgbmFtZWQgQlVGRkVSLU5BTUUgaW4gYSBoZWxwIHdpbmRv dy4KRXZhbHVhdGUgdGhlIGZvcm1zIGluIEJPRFkgd2l0aCBzdGFuZGFyZCBvdXRwdXQgYm91bmQg dG8gYSBidWZmZXIKY2FsbGVkIEJVRkZFUi1OQU1FIChjcmVhdGluZyBpdCBpZiBpdCBkb2VzIG5v dCBleGlzdCksIHB1dCB0aGF0CmJ1ZmZlciBpbiBgaGVscC1tb2RlJywgZGlzcGxheSB0aGUgYnVm ZmVyIGluIGEgd2luZG93IChzZWUKYHdpdGgtdGVtcC1idWZmZXItd2luZG93JyBmb3IgZGV0YWls cykgYW5kIGlzc3VlIGEgbWVzc2FnZSBob3cgdG8KZGVhbCB3aXRoIHRoYXQgXCJoZWxwXCIgd2lu ZG93IHdoZW4gaXQncyBubyBtb3JlIG5lZWRlZC4gIFNlbGVjdAp0aGUgaGVscCB3aW5kb3cgaWYg dGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHVzZXIgb3B0aW9uCmBoZWxwLXdpbmRvdy1zZWxlY3Qn IHNheXMgc28uICBSZXR1cm4gbGFzdCB2YWx1ZSBpbiBCT0RZLiIKICAoZGVjbGFyZSAoaW5kZW50 IDEpIChkZWJ1ZyB0KSkKICBgKHByb2duCiAgICAgOzsgTWFrZSBgaGVscC13aW5kb3ctcG9pbnQt bWFya2VyJyBwb2ludCBub3doZXJlLiAgVGhlIG9ubHkgcGxhY2UKICAgICA7OyB3aGVyZSB0aGlz IHNob3VsZCBiZSBzZXQgdG8gYSBidWZmZXIgcG9zaXRpb24gaXMgd2l0aGluIEJPRFkuCiAgICAg KHNldC1tYXJrZXIgaGVscC13aW5kb3ctcG9pbnQtbWFya2VyIG5pbCkKICAgICAobGV0ICgodGVt cC1idWZmZXItd2luZG93LXNldHVwLWhvb2sKCSAgICAoY29ucyAnaGVscC1tb2RlLXNldHVwIHRl bXAtYnVmZmVyLXdpbmRvdy1zZXR1cC1ob29rKSkKCSAgICh0ZW1wLWJ1ZmZlci13aW5kb3ctc2hv dy1ob29rCgkgICAgKGNvbnMgJ2hlbHAtbW9kZS1maW5pc2ggdGVtcC1idWZmZXItd2luZG93LXNo b3ctaG9vaykpKQogICAgICAgKHNldHEgaGVscC13aW5kb3ctb2xkLWZyYW1lIChzZWxlY3RlZC1m cmFtZSkpCiAgICAgICAod2l0aC10ZW1wLWJ1ZmZlci13aW5kb3cKCSxidWZmZXItbmFtZSBuaWwg J2hlbHAtd2luZG93LXNldHVwIChwcm9nbiAsQGJvZHkpKSkpKQoKOzsgQ2FsbGVkIGZyb20gQywg b24gZW5jb3VudGVyaW5nIGBoZWxwLWNoYXInIHdoZW4gcmVhZGluZyBhIGNoYXIuCjs7IERvbid0 IHByaW50IHRvICpIZWxwKjsgdGhhdCB3b3VsZCBjbG9iYmVyIEhlbHAgaGlzdG9yeS4KKGRlZnVu IGhlbHAtZm9ybS1zaG93ICgpCiAgIkRpc3BsYXkgdGhlIG91dHB1dCBvZiBhIG5vbi1uaWwgYGhl bHAtZm9ybScuIgogIChsZXQgKChtc2cgKGV2YWwgaGVscC1mb3JtKSkpCiAgICAoaWYgKHN0cmlu Z3AgbXNnKQoJKHdpdGgtb3V0cHV0LXRvLXRlbXAtYnVmZmVyICIgKkNoYXIgSGVscCoiCgkgIChw cmluYyBtc2cpKSkpKQoKDAooZGVmdW4gaGVscC0tZG9jc3RyaW5nLXF1b3RlIChzdHJpbmcpCiAg IlJldHVybiBhIGRvYyBzdHJpbmcgdGhhdCByZXByZXNlbnRzIFNUUklORy4KVGhlIHJlc3VsdCwg d2hlbiBmb3JtYXR0ZWQgYnkgYHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzJywgc2hvdWxkIGVxdWFs IFNUUklORy4iCiAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiWydcXGDigJjigJldIiAiXFxc XD1cXCYiIHN0cmluZykpCgo7OyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB1c2VkIHRvIGJlIGlu IGhlbHAtZm5zLmVsLCB3aGljaCBpcyBub3QgcHJlbG9hZGVkLgo7OyBCdXQgZm9yIHZhcmlvdXMg cmVhc29ucywgdGhleSBhcmUgbW9yZSB3aWRlbHkgbmVlZGVkLCBzbyB0aGV5IHdlcmUKOzsgbW92 ZWQgdG8gdGhpcyBmaWxlLCB3aGljaCBpcyBwcmVsb2FkZWQuICBodHRwczovL2RlYmJ1Z3MuZ251 Lm9yZy8xNzAwMQoKKGRlZnVuIGhlbHAtc3BsaXQtZnVuZG9jIChkb2NzdHJpbmcgZGVmKQogICJT cGxpdCBhIGZ1bmN0aW9uIERPQ1NUUklORyBpbnRvIHRoZSBhY3R1YWwgZG9jIGFuZCB0aGUgdXNh Z2UgaW5mby4KUmV0dXJuIChVU0FHRSAuIERPQykgb3IgbmlsIGlmIHRoZXJlJ3Mgbm8gdXNhZ2Ug aW5mbywgd2hlcmUgVVNBR0UgaW5mbwppcyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBhcmd1bWVu dCBsaXN0IG9mIERFRiwgc3VjaCBhcwpcIihhcHBseSBGVU5DVElPTiAmcmVzdCBBUkdVTUVOVFMp XCIuCkRFRiBpcyB0aGUgZnVuY3Rpb24gd2hvc2UgdXNhZ2Ugd2UncmUgbG9va2luZyBmb3IgaW4g RE9DU1RSSU5HLiIKICA7OyBGdW5jdGlvbnMgY2FuIGdldCB0aGUgY2FsbGluZyBzZXF1ZW5jZSBh dCB0aGUgZW5kIG9mIHRoZSBkb2Mgc3RyaW5nLgogIDs7IEluIGNhc2VzIHdoZXJlIGBmdW5jdGlv bicgaGFzIGJlZW4gZnNldCB0byBhIHN1YnIgd2UgY2FuJ3Qgc2VhcmNoIGZvcgogIDs7IGZ1bmN0 aW9uJ3MgbmFtZSBpbiB0aGUgZG9jIHN0cmluZyBzbyB3ZSB1c2UgYGZuJyBhcyB0aGUgYW5vbnlt b3VzCiAgOzsgZnVuY3Rpb24gbmFtZSBpbnN0ZWFkLgogICh3aGVuIChhbmQgZG9jc3RyaW5nIChz dHJpbmctbWF0Y2ggIlxuXG4oZm5cXChcXCggLipcXCk/KVxcKVxcJyIgZG9jc3RyaW5nKSkKICAg IChsZXQgKChkb2MgKHVubGVzcyAoemVyb3AgKG1hdGNoLWJlZ2lubmluZyAwKSkKCQkgKHN1YnN0 cmluZyBkb2NzdHJpbmcgMCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCgkgICh1c2FnZS10YWlsICht YXRjaC1zdHJpbmcgMSBkb2NzdHJpbmcpKSkKICAgICAgKGNvbnMgKGZvcm1hdCAiKCVzJXMiCgkJ ICAgIDs7IFJlcGxhY2UgYGZuJyB3aXRoIHRoZSBhY3R1YWwgZnVuY3Rpb24gbmFtZS4KCQkgICAg KGlmIChzeW1ib2xwIGRlZikKCQkJKGhlbHAtLWRvY3N0cmluZy1xdW90ZSAoZm9ybWF0ICIlUyIg ZGVmKSkKCQkgICAgICAnYW5vbnltb3VzKQoJCSAgICB1c2FnZS10YWlsKQoJICAgIGRvYykpKSkK CihkZWZ1biBoZWxwLWFkZC1mdW5kb2MtdXNhZ2UgKGRvY3N0cmluZyBhcmdsaXN0KQogICJBZGQg dGhlIHVzYWdlIGluZm8gdG8gRE9DU1RSSU5HLgpJZiBET0NTVFJJTkcgYWxyZWFkeSBoYXMgYSB1 c2FnZSBpbmZvLCB0aGVuIGp1c3QgcmV0dXJuIGl0IHVuY2hhbmdlZC4KVGhlIHVzYWdlIGluZm8g aXMgYnVpbHQgZnJvbSBBUkdMSVNULiAgRE9DU1RSSU5HIGNhbiBiZSBuaWwuCkFSR0xJU1QgY2Fu IGFsc28gYmUgdCBvciBhIHN0cmluZyBvZiB0aGUgZm9ybSBcIihGVU4gQVJHMSBBUkcyIC4uLilc Ii4iCiAgKHVubGVzcyAoc3RyaW5ncCBkb2NzdHJpbmcpIChzZXRxIGRvY3N0cmluZyAiIikpCiAg KGlmIChvciAoc3RyaW5nLW1hdGNoICJcblxuKGZuXFwoXFwoIC4qXFwpPylcXClcXCciIGRvY3N0 cmluZykKICAgICAgICAgIChlcSBhcmdsaXN0IHQpKQogICAgICBkb2NzdHJpbmcKICAgIChjb25j YXQgZG9jc3RyaW5nCgkgICAgKGlmIChzdHJpbmctbWF0Y2ggIlxuP1xuXFwnIiBkb2NzdHJpbmcp CgkJKGlmICg8ICgtIChtYXRjaC1lbmQgMCkgKG1hdGNoLWJlZ2lubmluZyAwKSkgMikgIlxuIiAi IikKCSAgICAgICJcblxuIikKCSAgICAoaWYgKHN0cmluZ3AgYXJnbGlzdCkKICAgICAgICAgICAg ICAgIChpZiAoc3RyaW5nLW1hdGNoICJcXGBbXiBdK1xcKC4qXFwpKVxcJyIgYXJnbGlzdCkKICAg ICAgICAgICAgICAgICAgICAoY29uY2F0ICIoZm4iIChtYXRjaC1zdHJpbmcgMSBhcmdsaXN0KSAi KSIpCiAgICAgICAgICAgICAgICAgIChlcnJvciAiVW5yZWNvZ25pemVkIHVzYWdlIGZvcm1hdCIp KQoJICAgICAgKGhlbHAtLW1ha2UtdXNhZ2UtZG9jc3RyaW5nICdmbiBhcmdsaXN0KSkpKSkKCihk ZWZ1biBoZWxwLWZ1bmN0aW9uLWFyZ2xpc3QgKGRlZiAmb3B0aW9uYWwgcHJlc2VydmUtbmFtZXMp CiAgIlJldHVybiBhIGZvcm1hbCBhcmd1bWVudCBsaXN0IGZvciB0aGUgZnVuY3Rpb24gREVGLgpJ ZiBQUkVTRVJWRS1OQU1FUyBpcyBub24tbmlsLCByZXR1cm4gYSBmb3JtYWwgYXJnbGlzdCB0aGF0 IHVzZXMKdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUs IHdoZW4gcG9zc2libGUuIgogIDs7IEhhbmRsZSBzeW1ib2xzIGFsaWFzZWQgdG8gb3RoZXIgc3lt Ym9scy4KICAoaWYgKGFuZCAoc3ltYm9scCBkZWYpIChmYm91bmRwIGRlZikpIChzZXRxIGRlZiAo aW5kaXJlY3QtZnVuY3Rpb24gZGVmKSkpCiAgOzsgQWR2aWNlIHdyYXBwZXJzIGhhdmUgImNhdGNo IGFsbCIgYXJncywgc28gZmV0Y2ggdGhlIGFjdHVhbCB1bmRlcmx5aW5nCiAgOzsgZnVuY3Rpb24g dG8gZmluZCB0aGUgcmVhbCBhcmd1bWVudHMuCiAgKHdoaWxlIChhZHZpY2UtLXAgZGVmKSAoc2V0 cSBkZWYgKGFkdmljZS0tY2RyIGRlZikpKQogIDs7IElmIGRlZmluaXRpb24gaXMgYSBtYWNybywg ZmluZCB0aGUgZnVuY3Rpb24gaW5zaWRlIGl0LgogIChpZiAoZXEgKGNhci1zYWZlIGRlZikgJ21h Y3JvKSAoc2V0cSBkZWYgKGNkciBkZWYpKSkKICAoY29uZAogICAoKGFuZCAoYnl0ZS1jb2RlLWZ1 bmN0aW9uLXAgZGVmKSAobGlzdHAgKGFyZWYgZGVmIDApKSkgKGFyZWYgZGVmIDApKQogICAoKGVx IChjYXItc2FmZSBkZWYpICdsYW1iZGEpIChudGggMSBkZWYpKQogICAoKGVxIChjYXItc2FmZSBk ZWYpICdjbG9zdXJlKSAobnRoIDIgZGVmKSkKICAgKChvciAoYW5kIChieXRlLWNvZGUtZnVuY3Rp b24tcCBkZWYpIChpbnRlZ2VycCAoYXJlZiBkZWYgMCkpKQogICAgICAgIChzdWJycCBkZWYpICht b2R1bGUtZnVuY3Rpb24tcCBkZWYpKQogICAgKG9yICh3aGVuIHByZXNlcnZlLW5hbWVzCiAgICAg ICAgICAobGV0KiAoKGRvYyAoY29uZGl0aW9uLWNhc2UgbmlsIChkb2N1bWVudGF0aW9uIGRlZikg KGVycm9yIG5pbCkpKQogICAgICAgICAgICAgICAgIChkb2NhcmdzIChpZiBkb2MgKGNhciAoaGVs cC1zcGxpdC1mdW5kb2MgZG9jIG5pbCkpKSkKICAgICAgICAgICAgICAgICAoYXJnbGlzdCAoaWYg ZG9jYXJncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RhciAocmVhZC1mcm9tLXN0 cmluZyAoZG93bmNhc2UgZG9jYXJncykpKSkpCiAgICAgICAgICAgICAgICAgKHZhbGlkIHQpKQog ICAgICAgICAgICA7OyBDaGVjayB2YWxpZGl0eS4KICAgICAgICAgICAgKGRvbGlzdCAoYXJnIGFy Z2xpc3QpCiAgICAgICAgICAgICAgKHVubGVzcyAoYW5kIChzeW1ib2xwIGFyZykKICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxldCAoKG5hbWUgKHN5bWJvbC1uYW1lIGFyZykpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgKGFyZWYgbmFtZSAwKSA/JikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG1lbXEgYXJnICcoJnJlc3QgJm9wdGlvbmFsKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHN0cmluZy1tYXRjaCAiXFwuIiBuYW1l KSkpKSkKICAgICAgICAgICAgICAgIChzZXRxIHZhbGlkIG5pbCkpKQogICAgICAgICAgICAod2hl biB2YWxpZCBhcmdsaXN0KSkpCiAgICAgICAgKGxldCogKChhcml0eSAoZnVuYy1hcml0eSBkZWYp KQogICAgICAgICAgICAgICAobWF4IChjZHIgYXJpdHkpKQogICAgICAgICAgICAgICAobWluIChj YXIgYXJpdHkpKQogICAgICAgICAgICAgICAoYXJnbGlzdCAoKSkpCiAgICAgICAgICAoZG90aW1l cyAoaSBtaW4pCiAgICAgICAgICAgIChwdXNoIChpbnRlcm4gKGNvbmNhdCAiYXJnIiAobnVtYmVy LXRvLXN0cmluZyAoMSsgaSkpKSkgYXJnbGlzdCkpCiAgICAgICAgICAod2hlbiAoYW5kIChpbnRl Z2VycCBtYXgpICg+IG1heCBtaW4pKQogICAgICAgICAgICAocHVzaCAnJm9wdGlvbmFsIGFyZ2xp c3QpCiAgICAgICAgICAgIChkb3RpbWVzIChpICgtIG1heCBtaW4pKQogICAgICAgICAgICAgIChw dXNoIChpbnRlcm4gKGNvbmNhdCAiYXJnIiAobnVtYmVyLXRvLXN0cmluZyAoKyAxIGkgbWluKSkp KQogICAgICAgICAgICAgICAgICAgIGFyZ2xpc3QpKSkKICAgICAgICAgICh1bmxlc3MgKGludGVn ZXJwIG1heCkgKHB1c2ggJyZyZXN0IGFyZ2xpc3QpIChwdXNoICdyZXN0IGFyZ2xpc3QpKQogICAg ICAgICAgKG5yZXZlcnNlIGFyZ2xpc3QpKSkpCiAgICgoYW5kIChhdXRvbG9hZHAgZGVmKSAobm90 IChlcSAobnRoIDQgZGVmKSAna2V5bWFwKSkpCiAgICAiW0FyZyBsaXN0IG5vdCBhdmFpbGFibGUg dW50aWwgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBsb2FkZWQuXSIpCiAgICh0IHQpKSkKCihkZWZ1 biBoZWxwLS1tYWtlLXVzYWdlIChmdW5jdGlvbiBhcmdsaXN0KQogIChjb25zIChpZiAoc3ltYm9s cCBmdW5jdGlvbikgZnVuY3Rpb24gJ2Fub255bW91cykKCShtYXBjYXIgKGxhbWJkYSAoYXJnKQoJ CSAgKGlmIChub3QgKHN5bWJvbHAgYXJnKSkgYXJnCgkJICAgIChsZXQgKChuYW1lIChzeW1ib2wt bmFtZSBhcmcpKSkKCQkgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAgICAgICgoc3RyaW5n LW1hdGNoICJcXGAmIiBuYW1lKSBhcmcpCiAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmct bWF0Y2ggIlxcYF8uIiBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJuICh1cGNh c2UgKHN1YnN0cmluZyBuYW1lIDEpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKHQgKGludGVy biAodXBjYXNlIG5hbWUpKSkpKSkpCgkJYXJnbGlzdCkpKQoKKGRlZmluZS1vYnNvbGV0ZS1mdW5j dGlvbi1hbGlhcyAnaGVscC1tYWtlLXVzYWdlICdoZWxwLS1tYWtlLXVzYWdlICIyNS4xIikKCihk ZWZ1biBoZWxwLS1tYWtlLXVzYWdlLWRvY3N0cmluZyAoZm4gYXJnbGlzdCkKICAobGV0ICgocHJp bnQtZXNjYXBlLW5ld2xpbmVzIHQpKQogICAgKGhlbHAtLWRvY3N0cmluZy1xdW90ZSAoZm9ybWF0 ICIlUyIgKGhlbHAtLW1ha2UtdXNhZ2UgZm4gYXJnbGlzdCkpKSkpCgoMCihwcm92aWRlICdoZWxw KQoKOzs7IGhlbHAuZWwgZW5kcyBoZXJlCg== --_006_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_ Content-Type: text/plain; name="diffActualAndNewhelp.txt" Content-Description: diffActualAndNewhelp.txt Content-Disposition: attachment; filename="diffActualAndNewhelp.txt"; size=1035; creation-date="Wed, 14 Mar 2018 13:46:22 GMT"; modification-date="Wed, 14 Mar 2018 13:46:22 GMT" Content-Transfer-Encoding: base64 Z2VzcGVuc3RAZGViaWFuOn4vQnVyZWF1JCBkaWZmIC11IGhlbHAuZWwgQWN1dGFsLWhlbHAuZWwg Ci0tLSBoZWxwLmVsCTIwMTgtMDMtMDkgMjA6MTQ6MzEuNDkyMDAwMDAwICswMTAwCisrKyBBY3V0 YWwtaGVscC5lbAkyMDE4LTAzLTAzIDE1OjA5OjQ3LjY1MjAwMDAwMCArMDEwMApAQCAtNjksOCAr NjksNyBAQAogICAgIChkZWZpbmUta2V5IG1hcCAiXEMtcCIgJ3ZpZXctZW1hY3MtcHJvYmxlbXMp CiAgICAgKGRlZmluZS1rZXkgbWFwICJcQy10IiAndmlldy1lbWFjcy10b2RvKQogICAgIChkZWZp bmUta2V5IG1hcCAiXEMtdyIgJ2Rlc2NyaWJlLW5vLXdhcnJhbnR5KQotICAgIChkZWZpbmUta2V5 IG1hcCAiXEMtcyIgJ3NlYXJjaC1mb3J3YXJkLWhlbHAtZm9yLWhlbHApCi0gICAgCisKICAgICA7 OyBUaGlzIGRvZXMgbm90IGZpdCB0aGUgcGF0dGVybiwgYnV0IGl0IGlzIG5hdHVyYWwgZ2l2ZW4g dGhlIEMtXCBjb21tYW5kLgogICAgIChkZWZpbmUta2V5IG1hcCAiXEMtXFwiICdkZXNjcmliZS1p bnB1dC1tZXRob2QpCiAKQEAgLTk5NCwxNiArOTkzLDYgQEAKICAgICAgKHQKICAgICAgIChlcnJv ciAiTm8gc3VjaCBtaW5vciBtb2RlOiAlcyIgbWlub3ItbW9kZSkpKSkpCiAKLQotKGRlZnVuIHNl YXJjaC1mb3J3YXJkLWhlbHAtZm9yLWhlbHAoKQotICAiQWxsb3dzIHRvIHJlc2VhcmNoIGZvcndh cmQgYSBzdHJpbmcgaW50byB0aGUgKk1ldGFoZWxwKiB3aW5kb3ciCi0gIChpbnRlcmFjdGl2ZSkK LSAgOztNb3ZlcyB0aGUgY3Vyc29yIHRvIHRoZSAqTWV0YWhlbHAqIHdpbmRvdwotICAoc3dpdGNo LXRvLWJ1ZmZlci1vdGhlci13aW5kb3cgIiAqTWV0YWhlbHAqIikKLSAgOzsgRG8gaW5jcmVtZW50 YWwgc2VhcmNoIGZvcndhcmQuCi0gIChpc2VhcmNoLWZvcndhcmQgbmlsIDEpKQotCi0KIDs7IHN5 bWJvbAogKGRlZnVuIGRlc2NyaWJlLW1pbm9yLW1vZGUtY29tcGxldGlvbi10YWJsZS1mb3Itc3lt Ym9sICgpCiAgIDs7IEluIG9yZGVyIHRvIGxpc3QgdXAgYWxsIG1pbm9yIG1vZGVzLCBtaW5vci1t b2RlLWxpc3QK --_006_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_ Content-Type: text/x-emacs-lisp; name="help.el" Content-Description: help.el Content-Disposition: attachment; filename="help.el"; size=60446; creation-date="Wed, 14 Mar 2018 13:46:26 GMT"; modification-date="Wed, 14 Mar 2018 13:46:26 GMT" Content-Transfer-Encoding: base64 Ozs7IGhlbHAuZWwgLS0tIGhlbHAgY29tbWFuZHMgZm9yIEVtYWNzICAtKi0gbGV4aWNhbC1iaW5k aW5nOnQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDE5ODUtMTk4NiwgMTk5My0xOTk0LCAxOTk4LTIw MTggRnJlZSBTb2Z0d2FyZQo7OyBGb3VuZGF0aW9uLCBJbmMuCgo7OyBNYWludGFpbmVyOiBlbWFj cy1kZXZlbEBnbnUub3JnCjs7IEtleXdvcmRzOiBoZWxwLCBpbnRlcm5hbAo7OyBQYWNrYWdlOiBl bWFjcwoKOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgoKOzsgR05VIEVtYWNzIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKOzsg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KCjs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIEdOVSBFbWFj cy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgo7OzsgQ29t bWVudGFyeToKCjs7IFRoaXMgY29kZSBpbXBsZW1lbnRzIEdOVSBFbWFjcydzIGJ1aWx0LWluIGhl bHAgc3lzdGVtLCB0aGUgb25lIGludm9rZWQgYnkKOzsgYE0teCBoZWxwLWZvci1oZWxwJy4KCjs7 OyBDb2RlOgoKOzsgR2V0IHRoZSBtYWNybyBtYWtlLWhlbHAtc2NyZWVuIHdoZW4gdGhpcyBpcyBj b21waWxlZCwKOzsgb3IgcnVuIGludGVycHJldGVkLCBidXQgbm90IHdoZW4gdGhlIGNvbXBpbGVk IGNvZGUgaXMgbG9hZGVkLgooZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2hlbHAtbWFjcm8p KQoKOzsgVGhpcyBtYWtlcyBgd2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXInIGJ1ZmZlcnMgdXNl IGBoZWxwLW1vZGUnLgooYWRkLWhvb2sgJ3RlbXAtYnVmZmVyLXNldHVwLWhvb2sgJ2hlbHAtbW9k ZS1zZXR1cCkKKGFkZC1ob29rICd0ZW1wLWJ1ZmZlci1zaG93LWhvb2sgJ2hlbHAtbW9kZS1maW5p c2gpCgo7OyBgaGVscC13aW5kb3ctcG9pbnQtbWFya2VyJyBpcyBhIG1hcmtlciB5b3UgY2FuIG1v dmUgdG8gYSB2YWxpZAo7OyBwb3NpdGlvbiBvZiB0aGUgYnVmZmVyIHNob3duIGluIHRoZSBoZWxw IHdpbmRvdyBpbiBvcmRlciB0byBvdmVycmlkZQo7OyB0aGUgc3RhbmRhcmQgcG9zaXRpb25pbmcg bWVjaGFuaXNtIChgcG9pbnQtbWluJykgY2hvc2VuIGJ5Cjs7IGB3aXRoLW91dHB1dC10by10ZW1w LWJ1ZmZlcicgYW5kIGB3aXRoLXRlbXAtYnVmZmVyLXdpbmRvdycuCjs7IGB3aXRoLWhlbHAtd2lu ZG93JyBoYXMgdGhpcyBwb2ludCBub3doZXJlIGJlZm9yZSBleGl0aW5nLiAgQ3VycmVudGx5Cjs7 IHVzZWQgYnkgYHZpZXctbG9zc2FnZScgdG8gYXNzZXJ0IHRoYXQgdGhlIGxhc3Qga2V5c3Ryb2tl cyBhcmUgYWx3YXlzCjs7IHZpc2libGUuCihkZWZ2YXIgaGVscC13aW5kb3ctcG9pbnQtbWFya2Vy IChtYWtlLW1hcmtlcikKICAiTWFya2VyIHRvIG92ZXJyaWRlIGRlZmF1bHQgYHdpbmRvdy1wb2lu dCcgaW4gaGVscCB3aW5kb3dzLiIpCgooZGVmdmFyIGhlbHAtd2luZG93LW9sZC1mcmFtZSBuaWwK ICAiRnJhbWUgc2VsZWN0ZWQgYXQgdGhlIHRpbWUgYHdpdGgtaGVscC13aW5kb3cnIGlzIGludm9r ZWQuIikKCihkZWZ2YXIgaGVscC1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXAp KSkKICAgIChkZWZpbmUta2V5IG1hcCAoY2hhci10by1zdHJpbmcgaGVscC1jaGFyKSAnaGVscC1m b3ItaGVscCkKICAgIChkZWZpbmUta2V5IG1hcCBbaGVscF0gJ2hlbHAtZm9yLWhlbHApCiAgICAo ZGVmaW5lLWtleSBtYXAgW2YxXSAnaGVscC1mb3ItaGVscCkKICAgIChkZWZpbmUta2V5IG1hcCAi LiIgJ2Rpc3BsYXktbG9jYWwtaGVscCkKICAgIChkZWZpbmUta2V5IG1hcCAiPyIgJ2hlbHAtZm9y LWhlbHApCgogICAgKGRlZmluZS1rZXkgbWFwICJcQy1hIiAnYWJvdXQtZW1hY3MpCiAgICAoZGVm aW5lLWtleSBtYXAgIlxDLWMiICdkZXNjcmliZS1jb3B5aW5nKQogICAgKGRlZmluZS1rZXkgbWFw ICJcQy1kIiAndmlldy1lbWFjcy1kZWJ1Z2dpbmcpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWUi ICd2aWV3LWV4dGVybmFsLXBhY2thZ2VzKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1mIiAndmll dy1lbWFjcy1GQVEpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLW0iICd2aWV3LW9yZGVyLW1hbnVh bHMpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLW4iICd2aWV3LWVtYWNzLW5ld3MpCiAgICAoZGVm aW5lLWtleSBtYXAgIlxDLW8iICdkZXNjcmliZS1kaXN0cmlidXRpb24pCiAgICAoZGVmaW5lLWtl eSBtYXAgIlxDLXAiICd2aWV3LWVtYWNzLXByb2JsZW1zKQogICAgKGRlZmluZS1rZXkgbWFwICJc Qy10IiAndmlldy1lbWFjcy10b2RvKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy13IiAnZGVzY3Jp YmUtbm8td2FycmFudHkpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLXMiICdzZWFyY2gtZm9yd2Fy ZC1oZWxwLWZvci1oZWxwKQogICAgCiAgICA7OyBUaGlzIGRvZXMgbm90IGZpdCB0aGUgcGF0dGVy biwgYnV0IGl0IGlzIG5hdHVyYWwgZ2l2ZW4gdGhlIEMtXCBjb21tYW5kLgogICAgKGRlZmluZS1r ZXkgbWFwICJcQy1cXCIgJ2Rlc2NyaWJlLWlucHV0LW1ldGhvZCkKCiAgICAoZGVmaW5lLWtleSBt YXAgIkMiICdkZXNjcmliZS1jb2Rpbmctc3lzdGVtKQogICAgKGRlZmluZS1rZXkgbWFwICJGIiAn SW5mby1nb3RvLWVtYWNzLWNvbW1hbmQtbm9kZSkKICAgIChkZWZpbmUta2V5IG1hcCAiSSIgJ2Rl c2NyaWJlLWlucHV0LW1ldGhvZCkKICAgIChkZWZpbmUta2V5IG1hcCAiSyIgJ0luZm8tZ290by1l bWFjcy1rZXktY29tbWFuZC1ub2RlKQogICAgKGRlZmluZS1rZXkgbWFwICJMIiAnZGVzY3JpYmUt bGFuZ3VhZ2UtZW52aXJvbm1lbnQpCiAgICAoZGVmaW5lLWtleSBtYXAgIlMiICdpbmZvLWxvb2t1 cC1zeW1ib2wpCgogICAgKGRlZmluZS1rZXkgbWFwICJhIiAnYXByb3Bvcy1jb21tYW5kKQogICAg KGRlZmluZS1rZXkgbWFwICJiIiAnZGVzY3JpYmUtYmluZGluZ3MpCiAgICAoZGVmaW5lLWtleSBt YXAgImMiICdkZXNjcmliZS1rZXktYnJpZWZseSkKICAgIChkZWZpbmUta2V5IG1hcCAiZCIgJ2Fw cm9wb3MtZG9jdW1lbnRhdGlvbikKICAgIChkZWZpbmUta2V5IG1hcCAiZSIgJ3ZpZXctZWNoby1h cmVhLW1lc3NhZ2VzKQogICAgKGRlZmluZS1rZXkgbWFwICJmIiAnZGVzY3JpYmUtZnVuY3Rpb24p CiAgICAoZGVmaW5lLWtleSBtYXAgImciICdkZXNjcmliZS1nbnUtcHJvamVjdCkKICAgIChkZWZp bmUta2V5IG1hcCAiaCIgJ3ZpZXctaGVsbG8tZmlsZSkKCiAgICAoZGVmaW5lLWtleSBtYXAgImki ICdpbmZvKQogICAgKGRlZmluZS1rZXkgbWFwICI0aSIgJ2luZm8tb3RoZXItd2luZG93KQoKICAg IChkZWZpbmUta2V5IG1hcCAiayIgJ2Rlc2NyaWJlLWtleSkKICAgIChkZWZpbmUta2V5IG1hcCAi bCIgJ3ZpZXctbG9zc2FnZSkKICAgIChkZWZpbmUta2V5IG1hcCAibSIgJ2Rlc2NyaWJlLW1vZGUp CiAgICAoZGVmaW5lLWtleSBtYXAgIm8iICdkZXNjcmliZS1zeW1ib2wpCiAgICAoZGVmaW5lLWtl eSBtYXAgIm4iICd2aWV3LWVtYWNzLW5ld3MpCiAgICAoZGVmaW5lLWtleSBtYXAgInAiICdmaW5k ZXItYnkta2V5d29yZCkKICAgIChkZWZpbmUta2V5IG1hcCAiUCIgJ2Rlc2NyaWJlLXBhY2thZ2Up CiAgICAoZGVmaW5lLWtleSBtYXAgInIiICdpbmZvLWVtYWNzLW1hbnVhbCkKICAgIChkZWZpbmUt a2V5IG1hcCAicyIgJ2Rlc2NyaWJlLXN5bnRheCkKICAgIChkZWZpbmUta2V5IG1hcCAidCIgJ2hl bHAtd2l0aC10dXRvcmlhbCkKICAgIChkZWZpbmUta2V5IG1hcCAidyIgJ3doZXJlLWlzKQogICAg KGRlZmluZS1rZXkgbWFwICJ2IiAnZGVzY3JpYmUtdmFyaWFibGUpCiAgICAoZGVmaW5lLWtleSBt YXAgInEiICdoZWxwLXF1aXQpCiAgICBtYXApCiAgIktleW1hcCBmb3IgY2hhcmFjdGVycyBmb2xs b3dpbmcgdGhlIEhlbHAga2V5LiIpCgooZGVmaW5lLWtleSBnbG9iYWwtbWFwIChjaGFyLXRvLXN0 cmluZyBoZWxwLWNoYXIpICdoZWxwLWNvbW1hbmQpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAgW2hl bHBdICdoZWxwLWNvbW1hbmQpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAgW2YxXSAnaGVscC1jb21t YW5kKQooZnNldCAnaGVscC1jb21tYW5kIGhlbHAtbWFwKQoKOzsgaW5zZXJ0LWJ1dHRvbiBtYWtl cyB0aGUgYWN0aW9uIG5pbCBpZiBpdCBpcyBub3Qgc3RvcmUgc29tZXdoZXJlCihkZWZ2YXIgaGVs cC1idXR0b24tY2FjaGUgbmlsKQoKDAooZGVmdW4gaGVscC1xdWl0ICgpCiAgIkp1c3QgZXhpdCBm cm9tIHRoZSBIZWxwIGNvbW1hbmQncyBjb21tYW5kIGxvb3AuIgogIChpbnRlcmFjdGl2ZSkKICBu aWwpCgooZGVmdmFyIGhlbHAtcmV0dXJuLW1ldGhvZCBuaWwKICAiV2hhdCB0byBkbyB0byBcImV4 aXRcIiB0aGUgaGVscCBidWZmZXIuClRoaXMgaXMgYSBsaXN0CiAoV0lORE9XIC4gdCkgICAgICAg ICAgICAgIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgd2luZG93IChhbmQgcG9zc2libHkgaXRzIGZyYW1l LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgYHF1aXQtd2luZG93JyksIGdvIHRvIFdJ TkRPVy4KIChXSU5ET1cgLiBxdWl0LXdpbmRvdykgICAgZG8gcXVpdC13aW5kb3csIHRoZW4gc2Vs ZWN0IFdJTkRPVy4KIChXSU5ET1cgQlVGIFNUQVJUIFBPSU5UKSAgZGlzcGxheSBCVUYgYXQgU1RB UlQsIFBPSU5ULCB0aGVuIHNlbGVjdCBXSU5ET1cuIikKCihkZWZpbmUtb2Jzb2xldGUtZnVuY3Rp b24tYWxpYXMgJ3ByaW50LWhlbHAtcmV0dXJuLW1lc3NhZ2UgJ2hlbHAtcHJpbnQtcmV0dXJuLW1l c3NhZ2UgIjIzLjIiKQooZGVmdW4gaGVscC1wcmludC1yZXR1cm4tbWVzc2FnZSAoJm9wdGlvbmFs IGZ1bmN0aW9uKQogICJEaXNwbGF5IG9yIHJldHVybiBtZXNzYWdlIHNheWluZyBob3cgdG8gcmVz dG9yZSB3aW5kb3dzIGFmdGVyIGhlbHAgY29tbWFuZC4KVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRo YXQgYHN0YW5kYXJkLW91dHB1dCcgaXMgdGhlIGhlbHAgYnVmZmVyLgpJdCBjb21wdXRlcyBhIG1l c3NhZ2UsIGFuZCBhcHBsaWVzIHRoZSBvcHRpb25hbCBhcmd1bWVudCBGVU5DVElPTiB0byBpdC4K SWYgRlVOQ1RJT04gaXMgbmlsLCBpdCBhcHBsaWVzIGBtZXNzYWdlJywgdGh1cyBkaXNwbGF5aW5n IHRoZSBtZXNzYWdlLgpJbiBhZGRpdGlvbiwgdGhpcyBmdW5jdGlvbiBzZXRzIHVwIGBoZWxwLXJl dHVybi1tZXRob2QnLCB3aGljaCBzZWUsIHRoYXQKc3BlY2lmaWVzIHdoYXQgdG8gZG8gd2hlbiB0 aGUgdXNlciBleGl0cyB0aGUgaGVscCBidWZmZXIuCgpEbyBub3QgY2FsbCB0aGlzIGluIHRoZSBz Y29wZSBvZiBgd2l0aC1oZWxwLXdpbmRvdycuIgogIChhbmQgKG5vdCAoZ2V0LWJ1ZmZlci13aW5k b3cgc3RhbmRhcmQtb3V0cHV0KSkKICAgICAgIChsZXQgKChmaXJzdC1tZXNzYWdlCgkgICAgICAo Y29uZCAoKG9yCgkJICAgICAgcG9wLXVwLWZyYW1lcwoJCSAgICAgIChzcGVjaWFsLWRpc3BsYXkt cCAoYnVmZmVyLW5hbWUgc3RhbmRhcmQtb3V0cHV0KSkpCgkJICAgICAoc2V0cSBoZWxwLXJldHVy bi1tZXRob2QgKGNvbnMgKHNlbGVjdGVkLXdpbmRvdykgdCkpCgkJICAgICA7OyBJZiB0aGUgaGVs cCBvdXRwdXQgYnVmZmVyIGlzIGEgc3BlY2lhbCBkaXNwbGF5IGJ1ZmZlciwKCQkgICAgIDs7IGRv bid0IHNheSBhbnl0aGluZyBhYm91dCBob3cgdG8gZ2V0IHJpZCBvZiBpdC4KCQkgICAgIDs7IEZp cnN0IG9mIGFsbCwgdGhlIHVzZXIgd2lsbCBkbyB0aGF0IHdpdGggdGhlIHdpbmRvdwoJCSAgICAg OzsgbWFuYWdlciwgbm90IHdpdGggRW1hY3MuCgkJICAgICA7OyBTZWNvbmRseSwgdGhlIGJ1ZmZl ciBoYXMgbm90IGJlZW4gZGlzcGxheWVkIHlldCwKCQkgICAgIDs7IHNvIHdlIGRvbid0IGtub3cg d2hldGhlciBpdHMgZnJhbWUgd2lsbCBiZSBzZWxlY3RlZC4KCQkgICAgIG5pbCkKCQkgICAgKChu b3QgKG9uZS13aW5kb3ctcCB0KSkKCQkgICAgIChzZXRxIGhlbHAtcmV0dXJuLW1ldGhvZAoJCQkg ICAoY29ucyAoc2VsZWN0ZWQtd2luZG93KSAncXVpdC13aW5kb3cpKQoJCSAgICAgIlR5cGUgXFxb ZGlzcGxheS1idWZmZXJdIFJFVCB0byByZXN0b3JlIHRoZSBvdGhlciB3aW5kb3cuIikKCQkgICAg KHBvcC11cC13aW5kb3dzCgkJICAgICAoc2V0cSBoZWxwLXJldHVybi1tZXRob2QgKGNvbnMgKHNl bGVjdGVkLXdpbmRvdykgdCkpCgkJICAgICAiVHlwZSBcXFtkZWxldGUtb3RoZXItd2luZG93c10g dG8gcmVtb3ZlIGhlbHAgd2luZG93LiIpCgkJICAgICh0CgkJICAgICAoc2V0cSBoZWxwLXJldHVy bi1tZXRob2QKCQkJICAgKGxpc3QgKHNlbGVjdGVkLXdpbmRvdykgKHdpbmRvdy1idWZmZXIpCgkJ CQkgKHdpbmRvdy1zdGFydCkgKHdpbmRvdy1wb2ludCkpKQoJCSAgICAgIlR5cGUgXFxbc3dpdGNo LXRvLWJ1ZmZlcl0gUkVUIHRvIHJlbW92ZSBoZWxwIHdpbmRvdy4iKSkpKQoJIChmdW5jYWxsIChv ciBmdW5jdGlvbiAnbWVzc2FnZSkKCQkgIChjb25jYXQKCQkgICAoaWYgZmlyc3QtbWVzc2FnZQoJ CSAgICAgICAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMgZmlyc3QtbWVzc2FnZSkpCgkJICAgKGlm IGZpcnN0LW1lc3NhZ2UgIiAgIikKCQkgICA7OyBJZiB0aGUgaGVscCBidWZmZXIgd2lsbCBnbyBp biBhIHNlcGFyYXRlIGZyYW1lLAoJCSAgIDs7IGl0J3Mgbm8gdXNlIG1lbnRpb25pbmcgYSBjb21t YW5kIHRvIHNjcm9sbCwgc28gZG9uJ3QuCgkJICAgKGlmIChvciBwb3AtdXAtd2luZG93cwoJCQkg ICAoc3BlY2lhbC1kaXNwbGF5LXAgKGJ1ZmZlci1uYW1lIHN0YW5kYXJkLW91dHB1dCkpKQoJCSAg ICAgICBuaWwKCQkgICAgIChpZiAoc2FtZS13aW5kb3ctcCAoYnVmZmVyLW5hbWUgc3RhbmRhcmQt b3V0cHV0KSkKCQkJIDs7IFNheSBob3cgdG8gc2Nyb2xsIHRoaXMgd2luZG93LgoJCQkgKHN1YnN0 aXR1dGUtY29tbWFuZC1rZXlzCgkJCSAgIlxcW3Njcm9sbC11cF0gdG8gc2Nyb2xsIHRoZSBoZWxw LiIpCgkJICAgICAgIDs7IFNheSBob3cgdG8gc2Nyb2xsIHNvbWUgb3RoZXIgd2luZG93LgoJCSAg ICAgICAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMKCQkJIlxcW3Njcm9sbC1vdGhlci13aW5kb3dd IHRvIHNjcm9sbCB0aGUgaGVscC4iKSkpKSkpKSkKCjs7IFNvIGtleWJvYXJkIG1hY3JvIGRlZmlu aXRpb25zIGFyZSBkb2N1bWVudGVkIGNvcnJlY3RseQooZnNldCAnZGVmaW5pbmcta2JkLW1hY3Jv IChzeW1ib2wtZnVuY3Rpb24gJ3N0YXJ0LWtiZC1tYWNybykpCgooZGVmYWxpYXMgJ2hlbHAgJ2hl bHAtZm9yLWhlbHAtaW50ZXJuYWwpCjs7IGZpbmQtZnVuY3Rpb24gY2FuIGZpbmQgdGhpcy4KKGRl ZmFsaWFzICdoZWxwLWZvci1oZWxwICdoZWxwLWZvci1oZWxwLWludGVybmFsKQo7OyBJdCBjYW4n dCBmaW5kIHRoaXMsIGJ1dCBub2JvZHkgd2lsbCBsb29rLgoobWFrZS1oZWxwLXNjcmVlbiBoZWxw LWZvci1oZWxwLWludGVybmFsCiAgKHB1cmVjb3B5ICJUeXBlIGEgaGVscCBvcHRpb246IFthYmND ZGVmRmdpSWtLbExtbnByc3R2dy5dIEMtW2NkZWZtbm9wdHddIG9yID8iKQogIDs7IERvbid0IHB1 cmVjb3B5IHRoaXMgb25lLCBiZWNhdXNlIGl0J3Mgbm90IGV2YWx1YXRlZCAoaXQncwogIDs7IGRp cmVjdGx5IHVzZWQgYXMgYSBkb2NzdHJpbmcgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uLCBzbyBp dCdsbAogIDs7IGJlIG1vdmVkIHRvIHRoZSBET0MgZmlsZSBhbnl3YXk6IG5vIG5lZWQgZm9yIHB1 cmVjb3B5aW5nIGl0KS4KICAiWW91IGhhdmUgdHlwZWQgJVRISVMtS0VZJSwgdGhlIGhlbHAgY2hh cmFjdGVyLiAgVHlwZSBhIEhlbHAgb3B0aW9uOgpcKFVzZSBTUEMgb3IgREVMIHRvIHNjcm9sbCB0 aHJvdWdoIHRoaXMgdGV4dC4gIFR5cGUgXFw8aGVscC1tYXA+XFxbaGVscC1xdWl0XSB0byBleGl0 IHRoZSBIZWxwIGNvbW1hbmQuKQoKYSBQQVRURVJOICAgU2hvdyBjb21tYW5kcyB3aG9zZSBuYW1l IG1hdGNoZXMgdGhlIFBBVFRFUk4gKGEgbGlzdCBvZiB3b3JkcwogICAgICAgICAgICAgIG9yIGEg cmVnZXhwKS4gIFNlZSBhbHNvIHRoZSBgYXByb3BvcycgY29tbWFuZC4KYiAgICAgICAgICAgRGlz cGxheSBhbGwga2V5IGJpbmRpbmdzLgpjIEtFWVMgICAgICBEaXNwbGF5IHRoZSBjb21tYW5kIG5h bWUgcnVuIGJ5IHRoZSBnaXZlbiBrZXkgc2VxdWVuY2UuCkMgQ09ESU5HICAgIERlc2NyaWJlIHRo ZSBnaXZlbiBjb2Rpbmcgc3lzdGVtLCBvciBSRVQgZm9yIGN1cnJlbnQgb25lcy4KZCBQQVRURVJO ICAgU2hvdyBhIGxpc3Qgb2YgZnVuY3Rpb25zLCB2YXJpYWJsZXMsIGFuZCBvdGhlciBpdGVtcyB3 aG9zZQogICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gbWF0Y2hlcyB0aGUgUEFUVEVSTiAoYSBs aXN0IG9mIHdvcmRzIG9yIGEgcmVnZXhwKS4KZSAgICAgICAgICAgR28gdG8gdGhlICpNZXNzYWdl cyogYnVmZmVyIHdoaWNoIGxvZ3MgZWNoby1hcmVhIG1lc3NhZ2VzLgpmIEZVTkNUSU9OICBEaXNw bGF5IGRvY3VtZW50YXRpb24gZm9yIHRoZSBnaXZlbiBmdW5jdGlvbi4KRiBDT01NQU5EICAgU2hv dyB0aGUgRW1hY3MgbWFudWFsJ3Mgc2VjdGlvbiB0aGF0IGRlc2NyaWJlcyB0aGUgY29tbWFuZC4K ZyAgICAgICAgICAgRGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgR05VIHByb2plY3QuCmgg ICAgICAgICAgIERpc3BsYXkgdGhlIEhFTExPIGZpbGUgd2hpY2ggaWxsdXN0cmF0ZXMgdmFyaW91 cyBzY3JpcHRzLgppICAgICAgICAgICBTdGFydCB0aGUgSW5mbyBkb2N1bWVudGF0aW9uIHJlYWRl cjogcmVhZCBpbmNsdWRlZCBtYW51YWxzLgpJIE1FVEhPRCAgICBEZXNjcmliZSBhIHNwZWNpZmlj IGlucHV0IG1ldGhvZCwgb3IgUkVUIGZvciBjdXJyZW50LgprIEtFWVMgICAgICBEaXNwbGF5IHRo ZSBmdWxsIGRvY3VtZW50YXRpb24gZm9yIHRoZSBrZXkgc2VxdWVuY2UuCksgS0VZUyAgICAgIFNo b3cgdGhlIEVtYWNzIG1hbnVhbCdzIHNlY3Rpb24gZm9yIHRoZSBjb21tYW5kIGJvdW5kIHRvIEtF WVMuCmwgICAgICAgICAgIFNob3cgbGFzdCAzMDAgaW5wdXQga2V5c3Ryb2tlcyAobG9zc2FnZSku CkwgTEFORy1FTlYgIERlc2NyaWJlcyBhIHNwZWNpZmljIGxhbmd1YWdlIGVudmlyb25tZW50LCBv ciBSRVQgZm9yIGN1cnJlbnQuCm0gICAgICAgICAgIERpc3BsYXkgZG9jdW1lbnRhdGlvbiBvZiBj dXJyZW50IG1pbm9yIG1vZGVzIGFuZCBjdXJyZW50IG1ham9yIG1vZGUsCiAgICAgICAgICAgICAg aW5jbHVkaW5nIHRoZWlyIHNwZWNpYWwgY29tbWFuZHMuCm4gICAgICAgICAgIERpc3BsYXkgbmV3 cyBvZiByZWNlbnQgRW1hY3MgY2hhbmdlcy4KbyBTWU1CT0wgICAgRGlzcGxheSB0aGUgZ2l2ZW4g ZnVuY3Rpb24gb3IgdmFyaWFibGUncyBkb2N1bWVudGF0aW9uIGFuZCB2YWx1ZS4KcCBUT1BJQyAg ICAgRmluZCBwYWNrYWdlcyBtYXRjaGluZyBhIGdpdmVuIHRvcGljIGtleXdvcmQuClAgUEFDS0FH RSAgIERlc2NyaWJlIHRoZSBnaXZlbiBFbWFjcyBMaXNwIHBhY2thZ2UuCnIgICAgICAgICAgIERp c3BsYXkgdGhlIEVtYWNzIG1hbnVhbCBpbiBJbmZvIG1vZGUuCnMgICAgICAgICAgIERpc3BsYXkg Y29udGVudHMgb2YgY3VycmVudCBzeW50YXggdGFibGUsIHBsdXMgZXhwbGFuYXRpb25zLgpTIFNZ TUJPTCAgICBTaG93IHRoZSBzZWN0aW9uIGZvciB0aGUgZ2l2ZW4gc3ltYm9sIGluIHRoZSBJbmZv IG1hbnVhbAogICAgICAgICAgICAgIGZvciB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdXNlZCBp biB0aGlzIGJ1ZmZlci4KdCAgICAgICAgICAgU3RhcnQgdGhlIEVtYWNzIGxlYXJuLWJ5LWRvaW5n IHR1dG9yaWFsLgp2IFZBUklBQkxFICBEaXNwbGF5IHRoZSBnaXZlbiB2YXJpYWJsZSdzIGRvY3Vt ZW50YXRpb24gYW5kIHZhbHVlLgp3IENPTU1BTkQgICBEaXNwbGF5IHdoaWNoIGtleXN0cm9rZXMg aW52b2tlIHRoZSBnaXZlbiBjb21tYW5kICh3aGVyZS1pcykuCi4gICAgICAgICAgIERpc3BsYXkg YW55IGF2YWlsYWJsZSBsb2NhbCBoZWxwIGF0IHBvaW50IGluIHRoZSBlY2hvIGFyZWEuCgpDLWEg ICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBFbWFjcy4KQy1jICAgICAgICAgRW1hY3MgY29weWlu ZyBwZXJtaXNzaW9uIChHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkuCkMtZCAgICAgICAgIElu c3RydWN0aW9ucyBmb3IgZGVidWdnaW5nIEdOVSBFbWFjcy4KQy1lICAgICAgICAgRXh0ZXJuYWwg cGFja2FnZXMgYW5kIGluZm9ybWF0aW9uIGFib3V0IEVtYWNzLgpDLWYgICAgICAgICBFbWFjcyBG QVEuCkMtbSAgICAgICAgIEhvdyB0byBvcmRlciBwcmludGVkIEVtYWNzIG1hbnVhbHMuCkMtbiAg ICAgICAgIE5ld3Mgb2YgcmVjZW50IEVtYWNzIGNoYW5nZXMuCkMtbyAgICAgICAgIEVtYWNzIG9y ZGVyaW5nIGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCkMtcCAgICAgICAgIEluZm8gYWJv dXQga25vd24gRW1hY3MgcHJvYmxlbXMuCkMtdCAgICAgICAgIEVtYWNzIFRPRE8gbGlzdC4KQy13 ICAgICAgICAgSW5mb3JtYXRpb24gb24gYWJzZW5jZSBvZiB3YXJyYW50eSBmb3IgR05VIEVtYWNz LiIKICBoZWxwLW1hcCkKCgwKCihkZWZ1biBmdW5jdGlvbi1jYWxsZWQtYXQtcG9pbnQgKCkKICAi UmV0dXJuIGEgZnVuY3Rpb24gYXJvdW5kIHBvaW50IG9yIGVsc2UgY2FsbGVkIGJ5IHRoZSBsaXN0 IGNvbnRhaW5pbmcgcG9pbnQuCklmIHRoYXQgZG9lc24ndCBnaXZlIGEgZnVuY3Rpb24sIHJldHVy biBuaWwuIgogICh3aXRoLXN5bnRheC10YWJsZSBlbWFjcy1saXNwLW1vZGUtc3ludGF4LXRhYmxl CiAgICAob3IgKGNvbmRpdGlvbi1jYXNlICgpCiAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgog ICAgICAgICAgICAgIChvciAobm90ICh6ZXJvcCAoc2tpcC1zeW50YXgtYmFja3dhcmQgIl93Iikp KQogICAgICAgICAgICAgICAgICAoZXEgKGNoYXItc3ludGF4IChmb2xsb3dpbmctY2hhcikpID93 KQogICAgICAgICAgICAgICAgICAoZXEgKGNoYXItc3ludGF4IChmb2xsb3dpbmctY2hhcikpID9f KQogICAgICAgICAgICAgICAgICAoZm9yd2FyZC1zZXhwIC0xKSkKICAgICAgICAgICAgICAoc2tp cC1jaGFycy1mb3J3YXJkICInIikKICAgICAgICAgICAgICAobGV0ICgob2JqIChyZWFkIChjdXJy ZW50LWJ1ZmZlcikpKSkKICAgICAgICAgICAgICAgIChhbmQgKHN5bWJvbHAgb2JqKSAoZmJvdW5k cCBvYmopIG9iaikpKQogICAgICAgICAgKGVycm9yIG5pbCkpCiAgICAgICAgKGNvbmRpdGlvbi1j YXNlICgpCiAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgIChzYXZlLXJl c3RyaWN0aW9uCiAgICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lvbiAobWF4IChwb2ludC1t aW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChwb2ludCkgMTAw MCkpIChwb2ludC1tYXgpKQogICAgICAgICAgICAgICAgOzsgTW92ZSB1cCB0byBzdXJyb3VuZGlu ZyBwYXJlbiwgdGhlbiBhZnRlciB0aGUgb3Blbi4KICAgICAgICAgICAgICAgIChiYWNrd2FyZC11 cC1saXN0IDEpCiAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIDEpCiAgICAgICAgICAgICAg ICA7OyBJZiB0aGVyZSBpcyBzcGFjZSBoZXJlLCB0aGlzIGlzIHByb2JhYmx5IHNvbWV0aGluZwog ICAgICAgICAgICAgICAgOzsgb3RoZXIgdGhhbiBhIHJlYWwgTGlzcCBmdW5jdGlvbiBjYWxsLCBz byBpZ25vcmUgaXQuCiAgICAgICAgICAgICAgICAoaWYgKGxvb2tpbmctYXQgIlsgXHRdIikKICAg ICAgICAgICAgICAgICAgICAoZXJyb3IgIlByb2JhYmx5IG5vdCBhIExpc3AgZnVuY3Rpb24gY2Fs bCIpKQogICAgICAgICAgICAgICAgKGxldCAoKG9iaiAocmVhZCAoY3VycmVudC1idWZmZXIpKSkp CiAgICAgICAgICAgICAgICAgIChhbmQgKHN5bWJvbHAgb2JqKSAoZmJvdW5kcCBvYmopIG9iaikp KSkKICAgICAgICAgIChlcnJvciBuaWwpKQogICAgICAgIChsZXQqICgoc3RyIChmaW5kLXRhZy1k ZWZhdWx0KSkKICAgICAgICAgICAgICAgKHN5bSAoaWYgc3RyIChpbnRlcm4tc29mdCBzdHIpKSkp CiAgICAgICAgICAoaWYgKGFuZCBzeW0gKGZib3VuZHAgc3ltKSkKICAgICAgICAgICAgICBzeW0K ICAgICAgICAgICAgKHNhdmUtbWF0Y2gtZGF0YQogICAgICAgICAgICAgICh3aGVuIChhbmQgc3Ry IChzdHJpbmctbWF0Y2ggIlxcYFxcVypcXCguKj9cXClcXFcqXFwnIiBzdHIpKQogICAgICAgICAg ICAgICAgKHNldHEgc3ltIChpbnRlcm4tc29mdCAobWF0Y2gtc3RyaW5nIDEgc3RyKSkpCiAgICAg ICAgICAgICAgICAoYW5kIChmYm91bmRwIHN5bSkgc3ltKSkpKSkpKSkKCgwKOzs7IGBVc2VyJyBo ZWxwIGZ1bmN0aW9ucwoKKGRlZnVuIHZpZXctaGVscC1maWxlIChmaWxlICZvcHRpb25hbCBkaXIp CiAgKHZpZXctZmlsZSAoZXhwYW5kLWZpbGUtbmFtZSBmaWxlIChvciBkaXIgZGF0YS1kaXJlY3Rv cnkpKSkKICAoZ290by1hZGRyZXNzLW1vZGUgMSkKICAoZ290by1jaGFyIChwb2ludC1taW4pKSkK CihkZWZ1biBkZXNjcmliZS1kaXN0cmlidXRpb24gKCkKICAiRGlzcGxheSBpbmZvIG9uIGhvdyB0 byBvYnRhaW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIEdOVSBFbWFjcy4iCiAgKGludGVyYWN0aXZl KQogICh2aWV3LWhlbHAtZmlsZSAiRElTVFJJQiIpKQoKKGRlZnVuIGRlc2NyaWJlLWNvcHlpbmcg KCkKICAiRGlzcGxheSBpbmZvIG9uIGhvdyB5b3UgbWF5IHJlZGlzdHJpYnV0ZSBjb3BpZXMgb2Yg R05VIEVtYWNzLiIKICAoaW50ZXJhY3RpdmUpCiAgKHZpZXctaGVscC1maWxlICJDT1BZSU5HIikp Cgo7OyBNYXliZSB0aGlzIGNvbW1hbmQgc2hvdWxkIGp1c3QgYmUgcmVtb3ZlZC4KKGRlZnVuIGRl c2NyaWJlLWdudS1wcm9qZWN0ICgpCiAgIkJyb3dzZSBvbmxpbmUgaW5mb3JtYXRpb24gb24gdGhl IEdOVSBwcm9qZWN0LiIKICAoaW50ZXJhY3RpdmUpCiAgKGJyb3dzZS11cmwgImh0dHBzOi8vd3d3 LmdudS5vcmcvZ251L3RoZWdudXByb2plY3QuaHRtbCIpKQoKKGRlZmluZS1vYnNvbGV0ZS1mdW5j dGlvbi1hbGlhcyAnZGVzY3JpYmUtcHJvamVjdCAnZGVzY3JpYmUtZ251LXByb2plY3QgIjIyLjIi KQoKKGRlZnVuIGRlc2NyaWJlLW5vLXdhcnJhbnR5ICgpCiAgIkRpc3BsYXkgaW5mbyBvbiBhbGwg dGhlIGtpbmRzIG9mIHdhcnJhbnR5IEVtYWNzIGRvZXMgTk9UIGhhdmUuIgogIChpbnRlcmFjdGl2 ZSkKICAoZGVzY3JpYmUtY29weWluZykKICAobGV0IChjYXNlLWZvbGQtc2VhcmNoKQogICAgKHNl YXJjaC1mb3J3YXJkICJEaXNjbGFpbWVyIG9mIFdhcnJhbnR5IikKICAgIChmb3J3YXJkLWxpbmUg MCkKICAgIChyZWNlbnRlciAwKSkpCgooZGVmdW4gZGVzY3JpYmUtcHJlZml4LWJpbmRpbmdzICgp CiAgIkRlc2NyaWJlIHRoZSBiaW5kaW5ncyBvZiB0aGUgcHJlZml4IHVzZWQgdG8gcmVhY2ggdGhp cyBjb21tYW5kLgpUaGUgcHJlZml4IGRlc2NyaWJlZCBjb25zaXN0cyBvZiBhbGwgYnV0IHRoZSBs YXN0IGV2ZW50Cm9mIHRoZSBrZXkgc2VxdWVuY2UgdGhhdCByYW4gdGhpcyBjb21tYW5kLiIKICAo aW50ZXJhY3RpdmUpCiAgKGxldCAoKGtleSAodGhpcy1jb21tYW5kLWtleXMpKSkKICAgIChkZXNj cmliZS1iaW5kaW5ncwogICAgIChpZiAoc3RyaW5ncCBrZXkpCgkgKHN1YnN0cmluZyBrZXkgMCAo MS0gKGxlbmd0aCBrZXkpKSkKICAgICAgIChsZXQgKChwcmVmaXggKG1ha2UtdmVjdG9yICgxLSAo bGVuZ3RoIGtleSkpIG5pbCkpCgkgICAgIChpIDApKQoJICh3aGlsZSAoPCBpIChsZW5ndGggcHJl Zml4KSkKCSAgIChhc2V0IHByZWZpeCBpIChhcmVmIGtleSBpKSkKCSAgIChzZXRxIGkgKDErIGkp KSkKCSBwcmVmaXgpKSkpKQo7OyBNYWtlIEMtaCBhZnRlciBhIHByZWZpeCwgd2hlbiBub3Qgc3Bl Y2lmaWNhbGx5IGJvdW5kLAo7OyBydW4gZGVzY3JpYmUtcHJlZml4LWJpbmRpbmdzLgooc2V0cSBw cmVmaXgtaGVscC1jb21tYW5kICdkZXNjcmliZS1wcmVmaXgtYmluZGluZ3MpCgooZGVmdW4gdmll dy1lbWFjcy1uZXdzICgmb3B0aW9uYWwgdmVyc2lvbikKICAiRGlzcGxheSBpbmZvIG9uIHJlY2Vu dCBjaGFuZ2VzIHRvIEVtYWNzLgpXaXRoIGFyZ3VtZW50LCBkaXNwbGF5IGluZm8gb25seSBmb3Ig dGhlIHNlbGVjdGVkIHZlcnNpb24uIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKHVubGVzcyB2ZXJz aW9uCiAgICAoc2V0cSB2ZXJzaW9uIGVtYWNzLW1ham9yLXZlcnNpb24pKQogICh3aGVuIChjb25z cCB2ZXJzaW9uKQogICAgKGxldCogKChhbGwtdmVyc2lvbnMKCSAgICAobGV0IChyZXMpCgkgICAg ICAobWFwYwoJICAgICAgIChsYW1iZGEgKGZpbGUpCgkJICh3aXRoLXRlbXAtYnVmZmVyCgkJICAg KGluc2VydC1maWxlLWNvbnRlbnRzCgkJICAgIChleHBhbmQtZmlsZS1uYW1lIGZpbGUgZGF0YS1k aXJlY3RvcnkpKQoJCSAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQKCQkJICAgKGlmIChtZW1i ZXIgZmlsZSAnKCJORVdTLjE4IiAiTkVXUy4xLTE3IikpCgkJCSAgICAgICAiQ2hhbmdlcyBpbiBc XCg/OkVtYWNzXFx8dmVyc2lvblxcKT9bIFx0XSpcXChbMC05XStcXCg/OlxcLlswLTldK1xcKT9c XCkiCgkJCSAgICAgIl5cXCogW14wLTlcbl0qXFwoWzAtOV0rXFwuWzAtOV0rXFwpIikgbmlsIHQp CgkJICAgICAoc2V0cSByZXMgKGNvbnMgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEpIHJl cykpKSkpCgkgICAgICAgKGNvbnMgIk5FV1MiCgkJICAgICAoZGlyZWN0b3J5LWZpbGVzIGRhdGEt ZGlyZWN0b3J5IG5pbAoJCQkJICAgICAgIl5ORVdTXFwuWzAtOV1bLTAtOV0qJCIgbmlsKSkpCgkg ICAgICAoc29ydCAoZGVsZXRlLWR1cHMgcmVzKSAjJ3N0cmluZz4pKSkKCSAgIChjdXJyZW50IChj YXIgYWxsLXZlcnNpb25zKSkpCiAgICAgIChzZXRxIHZlcnNpb24gKGNvbXBsZXRpbmctcmVhZAoJ CSAgICAgKGZvcm1hdCAiUmVhZCBORVdTIGZvciB0aGUgdmVyc2lvbiAoZGVmYXVsdCAlcyk6ICIg Y3VycmVudCkKCQkgICAgIGFsbC12ZXJzaW9ucyBuaWwgbmlsIG5pbCBuaWwgY3VycmVudCkpCiAg ICAgIChpZiAoaW50ZWdlcnAgKHN0cmluZy10by1udW1iZXIgdmVyc2lvbikpCgkgIChzZXRxIHZl cnNpb24gKHN0cmluZy10by1udW1iZXIgdmVyc2lvbikpCgkodW5sZXNzIChvciAobWVtYmVyIHZl cnNpb24gYWxsLXZlcnNpb25zKQoJCSAgICAoPD0gKHN0cmluZy10by1udW1iZXIgdmVyc2lvbikg KHN0cmluZy10by1udW1iZXIgY3VycmVudCkpKQoJICAoZXJyb3IgIk5vIG5ld3MgYWJvdXQgdmVy c2lvbiAlcyIgdmVyc2lvbikpKSkpCiAgKHdoZW4gKGludGVnZXJwIHZlcnNpb24pCiAgICAoY29u ZCAoKDw9IHZlcnNpb24gMTIpCgkgICAoc2V0cSB2ZXJzaW9uIChmb3JtYXQgIjEuJWQiIHZlcnNp b24pKSkKCSAgKCg8PSB2ZXJzaW9uIDE4KQoJICAgKHNldHEgdmVyc2lvbiAoZm9ybWF0ICIlZCIg dmVyc2lvbikpKQoJICAoKD4gdmVyc2lvbiBlbWFjcy1tYWpvci12ZXJzaW9uKQoJICAgKGVycm9y ICJObyBuZXdzIGFib3V0IEVtYWNzICVkICh5ZXQpIiB2ZXJzaW9uKSkpKQogIChsZXQqICgodm4g KGlmIChzdHJpbmdwIHZlcnNpb24pCgkJIChzdHJpbmctdG8tbnVtYmVyIHZlcnNpb24pCgkgICAg ICAgdmVyc2lvbikpCgkgKGZpbGUgKGNvbmQKCQkoKD49IHZuIGVtYWNzLW1ham9yLXZlcnNpb24p ICJORVdTIikKCQkoKDwgdm4gMTgpICJORVdTLjEtMTciKQoJCSh0IChmb3JtYXQgIk5FV1MuJWQi IHZuKSkpKQoJIHJlcykKICAgICh2aWV3LWZpbGUgKGV4cGFuZC1maWxlLW5hbWUgZmlsZSBkYXRh LWRpcmVjdG9yeSkpCiAgICAod2lkZW4pCiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAg KHdoZW4gKHN0cmluZ3AgdmVyc2lvbikKICAgICAgKHdoZW4gKHJlLXNlYXJjaC1mb3J3YXJkCgkg ICAgIChjb25jYXQgKGlmICg8IHZuIDE5KQoJCQkgIkNoYW5nZXMgaW4gRW1hY3NbIFx0XSoiCgkJ ICAgICAgICJeXFwqIFteMC05XG5dKiIpIHZlcnNpb24gIiQiKQoJICAgICBuaWwgdCkKCShiZWdp bm5pbmctb2YtbGluZSkKCShuYXJyb3ctdG8tcmVnaW9uCgkgKHBvaW50KQoJIChzYXZlLWV4Y3Vy c2lvbgoJICAgKHdoaWxlIChhbmQgKHNldHEgcmVzCgkJCSAgICAgKHJlLXNlYXJjaC1mb3J3YXJk CgkJCSAgICAgIChpZiAoPCB2biAxOSkKCQkJCSAgIkNoYW5nZXMgaW4gXFwoPzpFbWFjc1xcfHZl cnNpb25cXCk/WyBcdF0qXFwoWzAtOV0rXFwoPzpcXC5bMC05XStcXCk/XFwpIgoJCQkJIl5cXCog W14wLTlcbl0qXFwoWzAtOV0rXFwuWzAtOV0rXFwpIikgbmlsIHQpKQoJCSAgICAgICAoZXF1YWwg KG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEpIHZlcnNpb24pKSkKCSAgIChvciByZXMgKGdv dG8tY2hhciAocG9pbnQtbWF4KSkpCgkgICAoYmVnaW5uaW5nLW9mLWxpbmUpCgkgICAocG9pbnQp KSkpKSkpCgooZGVmdW4gdmlldy1lbWFjcy10b2RvICgmb3B0aW9uYWwgX2FyZykKICAiRGlzcGxh eSB0aGUgRW1hY3MgVE9ETyBsaXN0LiIKICAoaW50ZXJhY3RpdmUgIlAiKQogICh2aWV3LWhlbHAt ZmlsZSAiVE9ETyIpKQoKKGRlZmluZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcyAndmlldy10b2Rv ICd2aWV3LWVtYWNzLXRvZG8gIjIyLjIiKQoKCihkZWZ1biB2aWV3LWVjaG8tYXJlYS1tZXNzYWdl cyAoKQogICJWaWV3IHRoZSBsb2cgb2YgcmVjZW50IGVjaG8tYXJlYSBtZXNzYWdlczogdGhlIGAq TWVzc2FnZXMqJyBidWZmZXIuClRoZSBudW1iZXIgb2YgbWVzc2FnZXMgcmV0YWluZWQgaW4gdGhh dCBidWZmZXIKaXMgc3BlY2lmaWVkIGJ5IHRoZSB2YXJpYWJsZSBgbWVzc2FnZS1sb2ctbWF4Jy4i CiAgKGludGVyYWN0aXZlKQogICh3aXRoLWN1cnJlbnQtYnVmZmVyIChtZXNzYWdlcy1idWZmZXIp CiAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogICAgKGRpc3BsYXktYnVmZmVyIChjdXJyZW50 LWJ1ZmZlcikpKSkKCihkZWZ1biB2aWV3LW9yZGVyLW1hbnVhbHMgKCkKICAiRGlzcGxheSBpbmZv cm1hdGlvbiBvbiBob3cgdG8gYnV5IHByaW50ZWQgY29waWVzIG9mIEVtYWNzIG1hbnVhbHMuIgog IChpbnRlcmFjdGl2ZSkKOzsgICh2aWV3LWhlbHAtZmlsZSAiT1JERVJTIikKICAoaW5mbyAiKGVt YWNzKVByaW50ZWQgQm9va3MiKSkKCihkZWZ1biB2aWV3LWVtYWNzLUZBUSAoKQogICJEaXNwbGF5 IHRoZSBFbWFjcyBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyAoRkFRKSBmaWxlLiIKICAoaW50 ZXJhY3RpdmUpCiAgOzsgKGZpbmQtZmlsZS1yZWFkLW9ubHkgKGV4cGFuZC1maWxlLW5hbWUgIkZB USIgZGF0YS1kaXJlY3RvcnkpKQogIChpbmZvICIoZWZhcSkiKSkKCihkZWZ1biB2aWV3LWVtYWNz LXByb2JsZW1zICgpCiAgIkRpc3BsYXkgaW5mbyBvbiBrbm93biBwcm9ibGVtcyB3aXRoIEVtYWNz IGFuZCBwb3NzaWJsZSB3b3JrYXJvdW5kcy4iCiAgKGludGVyYWN0aXZlKQogICh2aWV3LWhlbHAt ZmlsZSAiUFJPQkxFTVMiKSkKCihkZWZ1biB2aWV3LWVtYWNzLWRlYnVnZ2luZyAoKQogICJEaXNw bGF5IGluZm8gb24gaG93IHRvIGRlYnVnIEVtYWNzIHByb2JsZW1zLiIKICAoaW50ZXJhY3RpdmUp CiAgKHZpZXctaGVscC1maWxlICJERUJVRyIpKQoKOzsgVGhpcyB1c2VkIHRvIHZpc2l0IE1PUkUu U1RVRkY7IG1heWJlIGl0IHNob3VsZCBqdXN0IGJlIHJlbW92ZWQuCihkZWZ1biB2aWV3LWV4dGVy bmFsLXBhY2thZ2VzICgpCiAgIkRpc3BsYXkgaW5mbyBvbiB3aGVyZSB0byBnZXQgbW9yZSBFbWFj cyBwYWNrYWdlcy4iCiAgKGludGVyYWN0aXZlKQogIChpbmZvICIoZWZhcSlQYWNrYWdlcyB0aGF0 IGRvIG5vdCBjb21lIHdpdGggRW1hY3MiKSkKCihkZWZ1biB2aWV3LWxvc3NhZ2UgKCkKICAiRGlz cGxheSBsYXN0IGZldyBpbnB1dCBrZXlzdHJva2VzIGFuZCB0aGUgY29tbWFuZHMgcnVuLgpGb3Ig Y29udmVuaWVuY2UgdGhpcyB1c2VzIHRoZSBzYW1lIGZvcm1hdCBhcwpgZWRpdC1sYXN0LWtiZC1t YWNybycuCgpUbyByZWNvcmQgYWxsIHlvdXIgaW5wdXQsIHVzZSBgb3Blbi1kcmliYmxlLWZpbGUn LiIKICAoaW50ZXJhY3RpdmUpCiAgKGhlbHAtc2V0dXAteHJlZiAobGlzdCAjJ3ZpZXctbG9zc2Fn ZSkKCQkgICAoY2FsbGVkLWludGVyYWN0aXZlbHktcCAnaW50ZXJhY3RpdmUpKQogICh3aXRoLWhl bHAtd2luZG93IChoZWxwLWJ1ZmZlcikKICAgIChwcmluYyAiICIpCiAgICAocHJpbmMgKG1hcGNv bmNhdCAobGFtYmRhIChrZXkpCgkJCShjb25kCgkJCSAoKGFuZCAoY29uc3Aga2V5KSAobnVsbCAo Y2FyIGtleSkpKQoJCQkgIChmb3JtYXQgIjs7ICVzXG4iIChpZiAoc3ltYm9scCAoY2RyIGtleSkp IChjZHIga2V5KQoJCQkJCSAgICAgICJhbm9ueW1vdXMtY29tbWFuZCIpKSkKCQkJICgob3IgKGlu dGVnZXJwIGtleSkgKHN5bWJvbHAga2V5KSAobGlzdHAga2V5KSkKCQkJICAoc2luZ2xlLWtleS1k ZXNjcmlwdGlvbiBrZXkpKQoJCQkgKHQKCQkJICAocHJpbjEtdG8tc3RyaW5nIGtleSBuaWwpKSkp CgkJICAgICAgKHJlY2VudC1rZXlzICdpbmNsdWRlLWNtZHMpCgkJICAgICAgIiAiKSkKICAgICh3 aXRoLWN1cnJlbnQtYnVmZmVyIHN0YW5kYXJkLW91dHB1dAogICAgICAoZ290by1jaGFyIChwb2lu dC1taW4pKQogICAgICAobGV0ICgoY29tbWVudC1zdGFydCAiOzsgIikKICAgICAgICAgICAgKGNv bW1lbnQtY29sdW1uIDI0KSkKICAgICAgICAod2hpbGUgKG5vdCAoZW9icCkpCiAgICAgICAgICAo Y29tbWVudC1pbmRlbnQpCgkgIChmb3J3YXJkLWxpbmUgMSkpKQogICAgICA7OyBqaWRhbm5pIHdh bnRzIHRvIHNlZSB0aGUgbGFzdCBrZXlzdHJva2VzIGltbWVkaWF0ZWx5LgogICAgICAoc2V0LW1h cmtlciBoZWxwLXdpbmRvdy1wb2ludC1tYXJrZXIgKHBvaW50KSkpKSkKCgwKOzsgS2V5IGJpbmRp bmdzCgooZGVmdW4gZGVzY3JpYmUtYmluZGluZ3MgKCZvcHRpb25hbCBwcmVmaXggYnVmZmVyKQog ICJEaXNwbGF5IGEgYnVmZmVyIHNob3dpbmcgYSBsaXN0IG9mIGFsbCBkZWZpbmVkIGtleXMsIGFu ZCB0aGVpciBkZWZpbml0aW9ucy4KVGhlIGtleXMgYXJlIGRpc3BsYXllZCBpbiBvcmRlciBvZiBw cmVjZWRlbmNlLgoKVGhlIG9wdGlvbmFsIGFyZ3VtZW50IFBSRUZJWCwgaWYgbm9uLW5pbCwgc2hv dWxkIGJlIGEga2V5IHNlcXVlbmNlOwp0aGVuIHdlIGRpc3BsYXkgb25seSBiaW5kaW5ncyB0aGF0 IHN0YXJ0IHdpdGggdGhhdCBwcmVmaXguClRoZSBvcHRpb25hbCBhcmd1bWVudCBCVUZGRVIgc3Bl Y2lmaWVzIHdoaWNoIGJ1ZmZlcidzIGJpbmRpbmdzCnRvIGRpc3BsYXkgKGRlZmF1bHQsIHRoZSBj dXJyZW50IGJ1ZmZlcikuICBCVUZGRVIgY2FuIGJlIGEgYnVmZmVyCm9yIGEgYnVmZmVyIG5hbWUu IgogIChpbnRlcmFjdGl2ZSkKICAob3IgYnVmZmVyIChzZXRxIGJ1ZmZlciAoY3VycmVudC1idWZm ZXIpKSkKICAoaGVscC1zZXR1cC14cmVmIChsaXN0ICMnZGVzY3JpYmUtYmluZGluZ3MgcHJlZml4 IGJ1ZmZlcikKCQkgICAoY2FsbGVkLWludGVyYWN0aXZlbHktcCAnaW50ZXJhY3RpdmUpKQogICh3 aXRoLWhlbHAtd2luZG93IChoZWxwLWJ1ZmZlcikKICAgIDs7IEJlIGF3YXJlIHRoYXQgYGRlc2Ny aWJlLWJ1ZmZlci1iaW5kaW5ncycgcHV0cyBpdHMgb3V0cHV0IGludG8KICAgIDs7IHRoZSBjdXJy ZW50IGJ1ZmZlci4KICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChoZWxwLWJ1ZmZlcikKICAgICAg KGRlc2NyaWJlLWJ1ZmZlci1iaW5kaW5ncyBidWZmZXIgcHJlZml4KSkpKQoKOzsgVGhpcyBmdW5j dGlvbiB1c2VkIHRvIGJlIGluIGtleW1hcC5jLgooZGVmdW4gZGVzY3JpYmUtYmluZGluZ3MtaW50 ZXJuYWwgKCZvcHRpb25hbCBtZW51cyBwcmVmaXgpCiAgIlNob3cgYSBsaXN0IG9mIGFsbCBkZWZp bmVkIGtleXMsIGFuZCB0aGVpciBkZWZpbml0aW9ucy4KV2UgcHV0IHRoYXQgbGlzdCBpbiBhIGJ1 ZmZlciwgYW5kIGRpc3BsYXkgdGhlIGJ1ZmZlci4KClRoZSBvcHRpb25hbCBhcmd1bWVudCBNRU5V UywgaWYgbm9uLW5pbCwgc2F5cyB0byBtZW50aW9uIG1lbnUgYmluZGluZ3MuClwoT3JkaW5hcmls eSB0aGVzZSBhcmUgb21pdHRlZCBmcm9tIHRoZSBvdXRwdXQuKQpUaGUgb3B0aW9uYWwgYXJndW1l bnQgUFJFRklYLCBpZiBub24tbmlsLCBzaG91bGQgYmUgYSBrZXkgc2VxdWVuY2U7CnRoZW4gd2Ug ZGlzcGxheSBvbmx5IGJpbmRpbmdzIHRoYXQgc3RhcnQgd2l0aCB0aGF0IHByZWZpeC4iCiAgKGRl Y2xhcmUgKG9ic29sZXRlIGRlc2NyaWJlLWJ1ZmZlci1iaW5kaW5ncyAiMjQuNCIpKQogIChsZXQg KChidWYgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAod2l0aC1oZWxwLXdpbmRvdyAoaGVscC1idWZm ZXIpCiAgICAgIDs7IEJlIGF3YXJlIHRoYXQgYGRlc2NyaWJlLWJ1ZmZlci1iaW5kaW5ncycgcHV0 cyBpdHMgb3V0cHV0IGludG8KICAgICAgOzsgdGhlIGN1cnJlbnQgYnVmZmVyLgogICAgICAod2l0 aC1jdXJyZW50LWJ1ZmZlciAoaGVscC1idWZmZXIpCgkoZGVzY3JpYmUtYnVmZmVyLWJpbmRpbmdz IGJ1ZiBwcmVmaXggbWVudXMpKSkpKQoKKGRlZnVuIHdoZXJlLWlzIChkZWZpbml0aW9uICZvcHRp b25hbCBpbnNlcnQpCiAgIlByaW50IG1lc3NhZ2UgbGlzdGluZyBrZXkgc2VxdWVuY2VzIHRoYXQg aW52b2tlIHRoZSBjb21tYW5kIERFRklOSVRJT04uCkFyZ3VtZW50IGlzIGEgY29tbWFuZCBkZWZp bml0aW9uLCB1c3VhbGx5IGEgc3ltYm9sIHdpdGggYSBmdW5jdGlvbiBkZWZpbml0aW9uLgpJZiBJ TlNFUlQgKHRoZSBwcmVmaXggYXJnKSBpcyBub24tbmlsLCBpbnNlcnQgdGhlIG1lc3NhZ2UgaW4g dGhlIGJ1ZmZlci4iCiAgKGludGVyYWN0aXZlCiAgIChsZXQgKChmbiAoZnVuY3Rpb24tY2FsbGVk LWF0LXBvaW50KSkKCSAoZW5hYmxlLXJlY3Vyc2l2ZS1taW5pYnVmZmVycyB0KQoJIHZhbCkKICAg ICAoc2V0cSB2YWwgKGNvbXBsZXRpbmctcmVhZAoJCShpZiBmbgoJCSAgICAoZm9ybWF0ICJXaGVy ZSBpcyBjb21tYW5kIChkZWZhdWx0ICVzKTogIiBmbikKCQkgICJXaGVyZSBpcyBjb21tYW5kOiAi KQoJCW9iYXJyYXkgJ2NvbW1hbmRwIHQgbmlsIG5pbAoJCShhbmQgZm4gKHN5bWJvbC1uYW1lIGZu KSkpKQogICAgIChsaXN0ICh1bmxlc3MgKGVxdWFsIHZhbCAiIikgKGludGVybiB2YWwpKQoJICAg Y3VycmVudC1wcmVmaXgtYXJnKSkpCiAgKHVubGVzcyBkZWZpbml0aW9uIChlcnJvciAiTm8gY29t bWFuZCIpKQogIChsZXQgKChmdW5jIChpbmRpcmVjdC1mdW5jdGlvbiBkZWZpbml0aW9uKSkKICAg ICAgICAoZGVmcyBuaWwpCiAgICAgICAgKHN0YW5kYXJkLW91dHB1dCAoaWYgaW5zZXJ0IChjdXJy ZW50LWJ1ZmZlcikgc3RhbmRhcmQtb3V0cHV0KSkpCiAgICA7OyBJbiBERUZTLCBmaW5kIGFsbCBz eW1ib2xzIHRoYXQgYXJlIGFsaWFzZXMgZm9yIERFRklOSVRJT04uCiAgICAobWFwYXRvbXMgKGxh bWJkYSAoc3ltYm9sKQoJCShhbmQgKGZib3VuZHAgc3ltYm9sKQoJCSAgICAgKG5vdCAoZXEgc3lt Ym9sIGRlZmluaXRpb24pKQoJCSAgICAgKGVxIGZ1bmMgKGNvbmRpdGlvbi1jYXNlICgpCgkJCQkg IChpbmRpcmVjdC1mdW5jdGlvbiBzeW1ib2wpCgkJCQkoZXJyb3Igc3ltYm9sKSkpCgkJICAgICAo cHVzaCBzeW1ib2wgZGVmcykpKSkKICAgIDs7IExvb2sgYXQgYWxsIHRoZSBzeW1ib2xzLS1maXJz dCBERUZJTklUSU9OLAogICAgOzsgdGhlbiBpdHMgYWxpYXNlcy4KICAgIChkb2xpc3QgKHN5bWJv bCAoY29ucyBkZWZpbml0aW9uIGRlZnMpKQogICAgICAobGV0KiAoKHJlbWFwcGVkIChjb21tYW5k LXJlbWFwcGluZyBzeW1ib2wpKQoJICAgICAoa2V5cyAod2hlcmUtaXMtaW50ZXJuYWwKCQkgICAg c3ltYm9sIG92ZXJyaWRpbmctbG9jYWwtbWFwIG5pbCBuaWwgcmVtYXBwZWQpKQoJICAgICAoa2V5 cyAobWFwY29uY2F0ICdrZXktZGVzY3JpcHRpb24ga2V5cyAiLCAiKSkKCSAgICAgc3RyaW5nKQoJ KHNldHEgc3RyaW5nCgkgICAgICAoaWYgaW5zZXJ0CgkJICAoaWYgKD4gKGxlbmd0aCBrZXlzKSAw KQoJCSAgICAgIChpZiByZW1hcHBlZAoJCQkgIChmb3JtYXQgIiVzICglcykgKHJlbWFwcGVkIGZy b20gJXMpIgoJCQkJICBrZXlzIHJlbWFwcGVkIHN5bWJvbCkKCQkJKGZvcm1hdCAiJXMgKCVzKSIg a2V5cyBzeW1ib2wpKQoJCSAgICAoZm9ybWF0ICJNLXggJXMgUkVUIiBzeW1ib2wpKQoJCShpZiAo PiAobGVuZ3RoIGtleXMpIDApCgkJICAgIChpZiByZW1hcHBlZAoJCQkoZm9ybWF0ICIlcyBpcyBy ZW1hcHBlZCB0byAlcyB3aGljaCBpcyBvbiAlcyIKCQkJCXN5bWJvbCByZW1hcHBlZCBrZXlzKQoJ CSAgICAgIChmb3JtYXQgIiVzIGlzIG9uICVzIiBzeW1ib2wga2V5cykpCgkJICA7OyBJZiB0aGlz IGlzIHRoZSBjb21tYW5kIHRoZSB1c2VyIGFza2VkIGFib3V0LAoJCSAgOzsgYW5kIGl0IGlzIG5v dCBvbiBhbnkga2V5LCBzYXkgc28uCgkJICA7OyBGb3Igb3RoZXIgc3ltYm9scywgaXRzIGFsaWFz ZXMsIHNheSBub3RoaW5nCgkJICA7OyBhYm91dCB0aGVtIHVubGVzcyB0aGV5IGFyZSBvbiBrZXlz LgoJCSAgKGlmIChlcSBzeW1ib2wgZGVmaW5pdGlvbikKCQkgICAgICAoZm9ybWF0ICIlcyBpcyBu b3Qgb24gYW55IGtleSIgc3ltYm9sKSkpKSkKCSh3aGVuIHN0cmluZwoJICAodW5sZXNzIChlcSBz eW1ib2wgZGVmaW5pdGlvbikKCSAgICAocHJpbmMgIjtcbiBpdHMgYWxpYXMgIikpCgkgIChwcmlu YyBzdHJpbmcpKSkpKQogIG5pbCkKCihkZWZ1biBoZWxwLWtleS1kZXNjcmlwdGlvbiAoa2V5IHVu dHJhbnNsYXRlZCkKICAobGV0ICgoc3RyaW5nIChrZXktZGVzY3JpcHRpb24ga2V5KSkpCiAgICAo aWYgKG9yIChub3QgdW50cmFuc2xhdGVkKQoJICAgIChhbmQgKGVxIChhcmVmIHVudHJhbnNsYXRl ZCAwKSA/XGUpIChub3QgKGVxIChhcmVmIGtleSAwKSA/XGUpKSkpCglzdHJpbmcKICAgICAgKGxl dCAoKG90aGVyc3RyaW5nIChrZXktZGVzY3JpcHRpb24gdW50cmFuc2xhdGVkKSkpCgkoaWYgKGVx dWFsIHN0cmluZyBvdGhlcnN0cmluZykKCSAgICBzdHJpbmcKCSAgKGZvcm1hdCAiJXMgKHRyYW5z bGF0ZWQgZnJvbSAlcykiIHN0cmluZyBvdGhlcnN0cmluZykpKSkpKQoKKGRlZnVuIGhlbHAtLWJp bmRpbmctdW5kZWZpbmVkLXAgKGRlZm4pCiAgKG9yIChudWxsIGRlZm4pIChpbnRlZ2VycCBkZWZu KSAoZXF1YWwgZGVmbiAndW5kZWZpbmVkKSkpCgooZGVmdW4gaGVscC0tYW5hbHl6ZS1rZXkgKGtl eSB1bnRyYW5zbGF0ZWQpCiAgIkdldCBpbmZvcm1hdGlvbiBhYm91dCBLRVkgaXRzIGNvcnJlc3Bv bmRpbmcgVU5UUkFOU0xBVEVEIGV2ZW50cy4KUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGZvcm0gKEJS SUVGLURFU0MgREVGTiBFVkVOVCBNT1VTRS1NU0cpLiIKICAoaWYgKG51bWJlcnAgdW50cmFuc2xh dGVkKQogICAgICAoZXJyb3IgIk1pc3NpbmcgYHVudHJhbnNsYXRlZCchIikpCiAgKGxldCogKChl dmVudCAod2hlbiAoPiAobGVuZ3RoIGtleSkgMCkKICAgICAgICAgICAgICAgICAgKGFyZWYga2V5 IChpZiAoYW5kIChzeW1ib2xwIChhcmVmIGtleSAwKSkKCQkgICAgICAgICAgICAgICAgICAgICAo PiAobGVuZ3RoIGtleSkgMSkKCQkgICAgICAgICAgICAgICAgICAgICAoY29uc3AgKGFyZWYga2V5 IDEpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBMb29rIGF0IHRoZSBzZWNv bmQgZXZlbnQgd2hlbiB0aGUgZmlyc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBpcyBhIHBzZXVkby1ldmVudCBsaWtlIGBtb2RlLWxpbmUnIG9yCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgYGxlZnQtZnJpbmdlJy4KCQkgICAgICAgICAgICAgICAgMQoJICAg ICAgICAgICAgICAgICAgICAgIDApKSkpCgkgKG1vZGlmaWVycyAoZXZlbnQtbW9kaWZpZXJzIGV2 ZW50KSkKCSAobW91c2UtbXNnIChpZiAob3IgKG1lbXEgJ2NsaWNrIG1vZGlmaWVycykgKG1lbXEg J2Rvd24gbW9kaWZpZXJzKQoJCQkgICAgKG1lbXEgJ2RyYWcgbW9kaWZpZXJzKSkKICAgICAgICAg ICAgICAgICAgICAgICAgIiBhdCB0aGF0IHNwb3QiICIiKSkKCSAoZGVmbiAoa2V5LWJpbmRpbmcg a2V5IHQpKSkKICAgIDs7IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBmYWtlZCBhbiBlbnRyeSBp biAiU2VsZWN0IGFuZCBQYXN0ZSIgbWVudS4KICAgICh3aGVuIChhbmQgKGVxIGRlZm4gbmlsKQoJ ICAgICAgIChzdHJpbmdwIChhcmVmIGtleSAoMS0gKGxlbmd0aCBrZXkpKSkpCgkgICAgICAgKGVx IChrZXktYmluZGluZyAoc3Vic3RyaW5nIGtleSAwIC0xKSkgJ3lhbmstbWVudSkpCiAgICAgIChz ZXRxIGRlZm4gJ21lbnUtYmFyLXNlbGVjdC15YW5rKSkKICAgIDs7IERvbid0IGJvdGhlciB1c2Vy IHdpdGggc3RyaW5ncyBmcm9tIChlLmcuKSB0aGUgc2VsZWN0LXBhc3RlIG1lbnUuCiAgICAod2hl biAoc3RyaW5ncCAoYXJlZiBrZXkgKDEtIChsZW5ndGgga2V5KSkpKQogICAgICAoYXNldCBrZXkg KDEtIChsZW5ndGgga2V5KSkgIihhbnkgc3RyaW5nKSIpKQogICAgKHdoZW4gKGFuZCB1bnRyYW5z bGF0ZWQKICAgICAgICAgICAgICAgKHN0cmluZ3AgKGFyZWYgdW50cmFuc2xhdGVkICgxLSAobGVu Z3RoIHVudHJhbnNsYXRlZCkpKSkpCiAgICAgIChhc2V0IHVudHJhbnNsYXRlZCAoMS0gKGxlbmd0 aCB1bnRyYW5zbGF0ZWQpKSAiKGFueSBzdHJpbmcpIikpCiAgICAobGlzdAogICAgIDs7IE5vdyBk ZXNjcmliZSB0aGUga2V5LCBwZXJoYXBzIGFzIGNoYW5nZWQuCiAgICAgKGxldCAoKGtleS1kZXNj IChoZWxwLWtleS1kZXNjcmlwdGlvbiBrZXkgdW50cmFuc2xhdGVkKSkpCiAgICAgICAoaWYgKGhl bHAtLWJpbmRpbmctdW5kZWZpbmVkLXAgZGVmbikKICAgICAgICAgICAoZm9ybWF0ICIlcyVzIGlz IHVuZGVmaW5lZCIga2V5LWRlc2MgbW91c2UtbXNnKQogICAgICAgICAoZm9ybWF0ICIlcyVzIHJ1 bnMgdGhlIGNvbW1hbmQgJVMiIGtleS1kZXNjIG1vdXNlLW1zZyBkZWZuKSkpCiAgICAgZGVmbiBl dmVudCBtb3VzZS1tc2cpKSkKCihkZWZ1biBoZWxwLS1maWx0ZXItaW5mby1saXN0IChpbmZvLWxp c3QgaSkKICAiRHJvcCB0aGUgdW5kZWZpbmVkIGtleXMuIgogIChvcgogICA7OyBSZW1vdmUgYWxs IGB1bmRlZmluZWQnIGtleXMuCiAgIChkZWxxIG5pbCAobWFwY2FyIChsYW1iZGEgKHgpCiAgICAg ICAgICAgICAgICAgICAgICAgKHVubGVzcyAoaGVscC0tYmluZGluZy11bmRlZmluZWQtcCAobnRo IGkgeCkpIHgpKQogICAgICAgICAgICAgICAgICAgICBpbmZvLWxpc3QpKQogICA7OyBJZiBub3Ro aW5nIGxlZnQsIHRoZW4ga2VlcCBvbmUgKHRoZSBsYXN0IG9uZSkuCiAgIChsYXN0IGluZm8tbGlz dCkpKQoKKGRlZnVuIGRlc2NyaWJlLWtleS1icmllZmx5ICgmb3B0aW9uYWwga2V5LWxpc3QgaW5z ZXJ0IHVudHJhbnNsYXRlZCkKICAiUHJpbnQgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9ucyBLRVkt TElTVCBpbnZva2VzLgpLRVktTElTVCBpcyBhIGxpc3Qgb2YgcGFpcnMgKFNFUSAuIFJBVy1TRVEp IG9mIGtleSBzZXF1ZW5jZXMsIHdoZXJlClJBVy1TRVEgaXMgdGhlIHVudHJhbnNsYXRlZCBmb3Jt IG9mIHRoZSBrZXkgc2VxdWVuY2UgU0VRLgpJZiBJTlNFUlQgKHRoZSBwcmVmaXggYXJnKSBpcyBu b24tbmlsLCBpbnNlcnQgdGhlIG1lc3NhZ2UgaW4gdGhlIGJ1ZmZlci4KCldoaWxlIHJlYWRpbmcg S0VZLUxJU1QgaW50ZXJhY3RpdmVseSwgdGhpcyBjb21tYW5kIHRlbXBvcmFyaWx5IGVuYWJsZXMK bWVudSBpdGVtcyBvciB0b29sLWJhciBidXR0b25zIHRoYXQgYXJlIGRpc2FibGVkIHRvIGFsbG93 IGdldHRpbmcgaGVscApvbiB0aGVtLiIKICAoZGVjbGFyZSAoYWR2ZXJ0aXNlZC1jYWxsaW5nLWNv bnZlbnRpb24gKGtleS1saXN0ICZvcHRpb25hbCBpbnNlcnQpICIyNy4xIikpCiAgKGludGVyYWN0 aXZlCiAgIDs7IElnbm9yZSBtb3VzZSBtb3ZlbWVudCBldmVudHMgYmVjYXVzZSBpdCdzIHRvbyBl YXN5IHRvIG1pc3MgdGhlCiAgIDs7IG1lc3NhZ2Ugd2hpbGUgbW92aW5nIHRoZSBtb3VzZS4KICAg KGxldCAoKGtleS1saXN0IChoZWxwLS1yZWFkLWtleS1zZXF1ZW5jZSAnbm8tbW91c2UtbW92ZW1l bnQpKSkKICAgICBgKCxrZXktbGlzdCAsY3VycmVudC1wcmVmaXgtYXJnKSkpCiAgKHdoZW4gKGFy cmF5cCBrZXktbGlzdCkKICAgIDs7IE9sZCBjYWxsaW5nIGNvbnZlbnRpb24sIGNoYW5nZWQKICAg IChzZXRxIGtleS1saXN0IChsaXN0IChjb25zIGtleS1saXN0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaWYgKG51bWJlcnAgdW50cmFuc2xhdGVkKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0aGlzLXNpbmdsZS1jb21tYW5kLXJhdy1rZXlzKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnRyYW5zbGF0ZWQpKSkpKQogIChsZXQqICgoaW5mby1s aXN0IChtYXBjYXIgKGxhbWJkYSAoa3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICho ZWxwLS1hbmFseXplLWtleSAoY2FyIGtyKSAoY2RyIGtyKSkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBrZXktbGlzdCkpCiAgICAgICAgIChtc2cgKG1hcGNvbmNhdCAjJ2NhciAoaGVscC0t ZmlsdGVyLWluZm8tbGlzdCBpbmZvLWxpc3QgMSkgIlxuIikpKQogICAgKGlmIGluc2VydCAoaW5z ZXJ0IG1zZykgKG1lc3NhZ2UgIiVzIiBtc2cpKSkpCgooZGVmdW4gaGVscC0ta2V5LWJpbmRpbmct a2V5bWFwIChrZXkgJm9wdGlvbmFsIGFjY2VwdC1kZWZhdWx0IG5vLXJlbWFwIHBvc2l0aW9uKQog ICJSZXR1cm4gYSBrZXltYXAgaG9sZGluZyBhIGJpbmRpbmcgZm9yIEtFWSB3aXRoaW4gY3VycmVu dCBrZXltYXBzLgpUaGUgZWZmZWN0IG9mIHRoZSBhcmd1bWVudHMgS0VZLCBBQ0NFUFQtREVGQVVM VCwgTk8tUkVNQVAgYW5kClBPU0lUSU9OIGlzIGFzIGRvY3VtZW50ZWQgaW4gdGhlIGZ1bmN0aW9u IGBrZXktYmluZGluZycuIgogIChsZXQqICgoYWN0aXZlLW1hcHMgKGN1cnJlbnQtYWN0aXZlLW1h cHMgdCBwb3NpdGlvbikpCiAgICAgICAgIG1hcCBmb3VuZCkKICAgIDs7IFdlIGxvb3Agb3ZlciBh Y3RpdmUgbWFwcyBsaWtlIGtleS1iaW5kaW5nIGRvZXMuCiAgICAod2hpbGUgKGFuZAogICAgICAg ICAgICAobm90IGZvdW5kKQogICAgICAgICAgICAoc2V0cSBtYXAgKHBvcCBhY3RpdmUtbWFwcykp KQogICAgICAoc2V0cSBmb3VuZCAobG9va3VwLWtleSBtYXAga2V5IGFjY2VwdC1kZWZhdWx0KSkK ICAgICAgKHdoZW4gKGludGVnZXJwIGZvdW5kKQogICAgICAgIDs7IFRoZSBmaXJzdCBgZm91bmQn IGNoYXJhY3RlcnMgb2YgS0VZIHdlcmUgZm91bmQgYnV0IG5vdCB0aGUKICAgICAgICA7OyB3aG9s ZSBzZXF1ZW5jZS4KICAgICAgICAoc2V0cSBmb3VuZCBuaWwpKSkKICAgICh3aGVuIGZvdW5kCiAg ICAgIChpZiAoYW5kIChzeW1ib2xwIGZvdW5kKQogICAgICAgICAgICAgICAobm90IG5vLXJlbWFw KQogICAgICAgICAgICAgICAoY29tbWFuZC1yZW1hcHBpbmcgZm91bmQpKQogICAgICAgICAgOzsg VGhlIHVzZXIgbWlnaHQgd2FudCB0byBrbm93IGluIHdoaWNoIG1hcCB0aGUgYmluZGluZyBpcwog ICAgICAgICAgOzsgZm91bmQsIG9yIGluIHdoaWNoIG1hcCB0aGUgcmVtYXBwaW5nIGlzIGZvdW5k LiAgVGhlCiAgICAgICAgICA7OyBkZWZhdWx0IGlzIHRvIHNob3cgdGhlIGxhdHRlci4KICAgICAg ICAgIChoZWxwLS1rZXktYmluZGluZy1rZXltYXAgKHZlY3RvciAncmVtYXAgZm91bmQpKQogICAg ICAgIG1hcCkpKSkKCihkZWZ1biBoZWxwLS1iaW5kaW5nLWxvY3VzIChrZXkgcG9zaXRpb24pCiAg IkRlc2NyaWJlIGluIHdoaWNoIGtleW1hcCBLRVkgaXMgZGVmaW5lZC4KUmV0dXJuIGEgc3ltYm9s IHBvaW50aW5nIHRvIHRoYXQga2V5bWFwIGlmIG9uZSBleGlzdHMgOyBvdGhlcndpc2UKcmV0dXJu IG5pbC4gIFRoZSBhcmd1bWVudCBQT1NJVElPTiBpcyBhcyBkb2N1bWVudGVkIGluIHRoZQpmdW5j dGlvbiBga2V5LWJpbmRpbmcnLiIKICAobGV0ICgobWFwIChoZWxwLS1rZXktYmluZGluZy1rZXlt YXAga2V5IHQgbmlsIHBvc2l0aW9uKSkpCiAgICAod2hlbiBtYXAKICAgICAgKGNhdGNoICdmb3Vu ZAogICAgICAgIChsZXQgKChhZHZlcnRpc2VkLXN5bXMgKG5jb25jCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgJ292ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ292ZXJyaWRpbmctbG9jYWwtbWFwKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxxIG5pbAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxhbWJkYSAobW9kZS1hbmQtbWFwKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKChtb2RlIChjYXIgbW9kZS1hbmQtbWFwKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoc3ltYm9sLXZhbHVl IG1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRl cm4tc29mdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZv cm1hdCAiJXMtbWFwIiBtb2RlKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWlub3ItbW9kZS1tYXAtYWxpc3QpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsaXN0ICdnbG9iYWwtbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGludGVybi1zb2Z0IChmb3JtYXQgIiVzLW1hcCIgbWFqb3ItbW9kZSkpKSkpKQogICAgICAg ICAgOzsgTG9vayBpbnRvIHRoZXNlIGFkdmVydGlzZWQgc3ltYm9scyBmaXJzdC4KICAgICAgICAg IChkb2xpc3QgKHN5bSBhZHZlcnRpc2VkLXN5bXMpCiAgICAgICAgICAgICh3aGVuIChhbmQKICAg ICAgICAgICAgICAgICAgIChib3VuZHAgc3ltKQogICAgICAgICAgICAgICAgICAgKGVxIG1hcCAo c3ltYm9sLXZhbHVlIHN5bSkpKQogICAgICAgICAgICAgICh0aHJvdyAnZm91bmQgc3ltKSkpCiAg ICAgICAgICA7OyBPbmx5IGxvb2sgaW4gb3RoZXIgc3ltYm9scyBvdGhlcndpc2UuCiAgICAgICAg ICAobWFwYXRvbXMKICAgICAgICAgICAobGFtYmRhICh4KQogICAgICAgICAgICAgKHdoZW4gKGFu ZCAoYm91bmRwIHgpCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IEF2b2lkIGxldC1ib3VuZCBz eW1ib2xzLgogICAgICAgICAgICAgICAgICAgICAgICAoc3BlY2lhbC12YXJpYWJsZS1wIHgpCiAg ICAgICAgICAgICAgICAgICAgICAgIChlcSAoc3ltYm9sLXZhbHVlIHgpIG1hcCkpCiAgICAgICAg ICAgICAgICh0aHJvdyAnZm91bmQgeCkpKSkKICAgICAgICAgIG5pbCkpKSkpCgooZGVmdW4gaGVs cC0tcmVhZC1rZXktc2VxdWVuY2UgKCZvcHRpb25hbCBuby1tb3VzZS1tb3ZlbWVudCkKICAiUmVh ZCBhIGtleSBzZXF1ZW5jZSBmcm9tIHRoZSB1c2VyLgpVc3VhbGx5IHJlYWRzIGEgc2luZ2xlIGtl eSBzZXF1ZW5jZSwgZXhjZXB0IHdoZW4gdGhhdCBzZXF1ZW5jZSBtaWdodApoaWRlIGFub3RoZXIg b25lIChlLmcuIGEgZG93biBldmVudCwgd2hlcmUgdGhlIHVzZXIgaXMgaW50ZXJlc3RlZAppbiBn ZXR0aW5nIGluZm8gYWJvdXQgdGhlIHVwIGV2ZW50LCBvciBhIGNsaWNrIGV2ZW50LCB3aGVyZSB0 aGUgdXNlcgp3YW50cyB0byBnZXQgaW5mbyBhYm91dCB0aGUgZG91YmxlIGNsaWNrKS4KUmV0dXJu IGEgbGlzdCBvZiBlbGVtZW50cyBvZiB0aGUgZm9ybSAoU0VRIC4gUkFXLVNFUSksIHdoZXJlIFNF USBpcyBhIGtleQpzZXF1ZW5jZSwgYW5kIFJBVy1TRVEgaXMgaXRzIHVudHJhbnNsYXRlZCBmb3Jt LgpJZiBOTy1NT1VTRS1NT1ZFTUVOVCBpcyBub24tbmlsLCBpZ25vcmUga2V5IHNlcXVlbmNlcyBz dGFydGluZwp3aXRoIGBtb3VzZS1tb3ZlbWVudCcgZXZlbnRzLiIKICAobGV0ICgoZW5hYmxlLWRp c2FibGVkLW1lbnVzLWFuZC1idXR0b25zIHQpCiAgICAgICAgKGN1cnNvci1pbi1lY2hvLWFyZWEg dCkKICAgICAgICBzYXZlZC15YW5rLW1lbnUpCiAgICAodW53aW5kLXByb3RlY3QKICAgICAgICAo bGV0IChsYXN0LW1vZGlmaWVycyBrZXktbGlzdCkKICAgICAgICAgIDs7IElmIHlhbmstbWVudSBp cyBlbXB0eSwgcG9wdWxhdGUgaXQgdGVtcG9yYXJpbHksIHNvIHRoYXQKICAgICAgICAgIDs7ICJT ZWxlY3QgYW5kIFBhc3RlIiBtZW51IGNhbiBnZW5lcmF0ZSBhIGNvbXBsZXRlIGV2ZW50LgogICAg ICAgICAgKHdoZW4gKG51bGwgKGNkciB5YW5rLW1lbnUpKQogICAgICAgICAgICAoc2V0cSBzYXZl ZC15YW5rLW1lbnUgKGNvcHktc2VxdWVuY2UgeWFuay1tZW51KSkKICAgICAgICAgICAgKG1lbnUt YmFyLXVwZGF0ZS15YW5rLW1lbnUgIihhbnkgc3RyaW5nKSIgbmlsKSkKICAgICAgICAgICh3aGls ZQogICAgICAgICAgICAgIDs7IFJlYWQgYXQgbGVhc3Qgb25lIGtleS1zZXF1ZW5jZS4KICAgICAg ICAgICAgICAob3IgKG51bGwga2V5LWxpc3QpCiAgICAgICAgICAgICAgICAgIDs7IEFmdGVyIGEg ZG93biBldmVudCwgYWxzbyByZWFkIHRoZSAocHJlc3VtYWJseSkgZm9sbG93aW5nCiAgICAgICAg ICAgICAgICAgIDs7IHVwLWV2ZW50LgogICAgICAgICAgICAgICAgICAobWVtcSAnZG93biBsYXN0 LW1vZGlmaWVycykKICAgICAgICAgICAgICAgICAgOzsgQWZ0ZXIgYSBjbGljaywgc2VlIGlmIGEg ZG91YmxlIGNsaWNrIGlzIG9uIHRoZSB3YXkuCiAgICAgICAgICAgICAgICAgIChhbmQgKG1lbXEg J2NsaWNrIGxhc3QtbW9kaWZpZXJzKQogICAgICAgICAgICAgICAgICAgICAgIChub3QgKHNpdC1m b3IgKC8gZG91YmxlLWNsaWNrLXRpbWUgMTAwMC4wKSB0KSkpKQogICAgICAgICAgICAobGV0KiAo KHNlcSAocmVhZC1rZXktc2VxdWVuY2UgIlwKRGVzY3JpYmUgdGhlIGZvbGxvd2luZyBrZXksIG1v dXNlIGNsaWNrLCBvciBtZW51IGl0ZW06ICIpKQogICAgICAgICAgICAgICAgICAgKHJhdy1zZXEg KHRoaXMtc2luZ2xlLWNvbW1hbmQtcmF3LWtleXMpKQogICAgICAgICAgICAgICAgICAgKGtleW4g KHdoZW4gKD4gKGxlbmd0aCBzZXEpIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVm IHNlcSAoMS0gKGxlbmd0aCBzZXEpKSkpKQogICAgICAgICAgICAgICAgICAgKGJhc2UgKGV2ZW50 LWJhc2ljLXR5cGUga2V5bikpCiAgICAgICAgICAgICAgICAgICAobW9kaWZpZXJzIChldmVudC1t b2RpZmllcnMga2V5bikpKQogICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICgoemVy b3AgKGxlbmd0aCBzZXEpKSkgICA7RklYTUU6IENhbiB0aGlzIGhhcHBlbj8KICAgICAgICAgICAg ICAgKChhbmQgbm8tbW91c2UtbW92ZW1lbnQgKGVxIGJhc2UgJ21vdXNlLW1vdmVtZW50KSkgbmls KQogICAgICAgICAgICAgICAoKGVxIGJhc2UgJ2hlbHAtZWNobykgbmlsKQogICAgICAgICAgICAg ICAodAogICAgICAgICAgICAgICAgKHNldHEgbGFzdC1tb2RpZmllcnMgbW9kaWZpZXJzKQogICAg ICAgICAgICAgICAgKHB1c2ggKGNvbnMgc2VxIHJhdy1zZXEpIGtleS1saXN0KSkpKSkKICAgICAg ICAgIChucmV2ZXJzZSBrZXktbGlzdCkpCiAgICAgIDs7IFB1dCB5YW5rLW1lbnUgYmFjayBhcyBp dCB3YXMsIGlmIHdlIGNoYW5nZWQgaXQuCiAgICAgICh3aGVuIHNhdmVkLXlhbmstbWVudQogICAg ICAgIChzZXRxIHlhbmstbWVudSAoY29weS1zZXF1ZW5jZSBzYXZlZC15YW5rLW1lbnUpKQogICAg ICAgIChmc2V0ICd5YW5rLW1lbnUgKGNvbnMgJ2tleW1hcCB5YW5rLW1lbnUpKSkpKSkKCihkZWZ1 biBkZXNjcmliZS1rZXkgKCZvcHRpb25hbCBrZXktbGlzdCBidWZmZXIgdXAtZXZlbnQpCiAgIkRp c3BsYXkgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZnVuY3Rpb24gaW52b2tlZCBieSBLRVktTElTVC4K S0VZLUxJU1QgY2FuIGJlIGFueSBraW5kIG9mIGEga2V5IHNlcXVlbmNlOyBpdCBjYW4gaW5jbHVk ZSBrZXlib2FyZCBldmVudHMsCm1vdXNlIGV2ZW50cywgYW5kL29yIG1lbnUgZXZlbnRzLiAgV2hl biBjYWxsaW5nIGZyb20gYSBwcm9ncmFtLApwYXNzIEtFWS1MSVNUIGFzIGEgbGlzdCBvZiBlbGVt ZW50cyAoU0VRIC4gUkFXLVNFUSkgd2hlcmUgU0VRIGlzCmEga2V5LXNlcXVlbmNlIGFuZCBSQVct U0VRIGlzIGl0cyB1bnRyYW5zbGF0ZWQgZm9ybS4KCldoaWxlIHJlYWRpbmcgS0VZLUxJU1QgaW50 ZXJhY3RpdmVseSwgdGhpcyBjb21tYW5kIHRlbXBvcmFyaWx5IGVuYWJsZXMKbWVudSBpdGVtcyBv ciB0b29sLWJhciBidXR0b25zIHRoYXQgYXJlIGRpc2FibGVkIHRvIGFsbG93IGdldHRpbmcgaGVs cApvbiB0aGVtLgoKQlVGRkVSIGlzIHRoZSBidWZmZXIgaW4gd2hpY2ggdG8gbG9va3VwIHRob3Nl IGtleXM7IGl0IGRlZmF1bHRzIHRvIHRoZQpjdXJyZW50IGJ1ZmZlci4iCiAgKGRlY2xhcmUgKGFk dmVydGlzZWQtY2FsbGluZy1jb252ZW50aW9uIChrZXktbGlzdCAmb3B0aW9uYWwgYnVmZmVyKSAi MjcuMSIpKQogIChpbnRlcmFjdGl2ZSAobGlzdCAoaGVscC0tcmVhZC1rZXktc2VxdWVuY2UpKSkK ICAod2hlbiAoYXJyYXlwIGtleS1saXN0KQogICAgOzsgQ29tcGF0aWJpbGl0eSB3aXRoIG9sZCBj YWxsaW5nIGNvbnZlbnRpb24uCiAgICAoc2V0cSBrZXktbGlzdCAoY29ucyAobGlzdCBrZXktbGlz dCkgKGlmIHVwLWV2ZW50IChsaXN0IHVwLWV2ZW50KSkpKQogICAgKHdoZW4gYnVmZmVyCiAgICAg IChsZXQgKChyYXcgKGlmIChudW1iZXJwIGJ1ZmZlcikgKHRoaXMtc2luZ2xlLWNvbW1hbmQtcmF3 LWtleXMpIGJ1ZmZlcikpKQogICAgICAgIChzZXRmIChjZGFyIChsYXN0IGtleS1saXN0KSkgcmF3 KSkpCiAgICAoc2V0cSBidWZmZXIgbmlsKSkKICAobGV0KiAoKGJ1ZiAob3IgYnVmZmVyIChjdXJy ZW50LWJ1ZmZlcikpKQogICAgICAgICAob24tbGluawogICAgICAgICAgKG1hcGNhciAobGFtYmRh IChrcikKICAgICAgICAgICAgICAgICAgICAobGV0ICgocmF3IChjZHIga3IpKSkKICAgICAgICAg ICAgICAgICAgICAgIChhbmQgKG5vdCAobWVtcSBtb3VzZS0xLWNsaWNrLWZvbGxvd3MtbGluayAn KG5pbCBkb3VibGUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gKGxlbmd0aCByYXcp IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAoY2FyLXNhZmUgKGFyZWYgcmF3IDAp KSAnbW91c2UtMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZm ZXIgYnVmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlLW9uLWxpbmstcCAoZXZl bnQtc3RhcnQgKGFyZWYgcmF3IDApKSkpKSkpCiAgICAgICAgICAgICAgICAgIGtleS1saXN0KSkK ICAgICAgICAgKGluZm8tbGlzdAogICAgICAgICAgKGhlbHAtLWZpbHRlci1pbmZvLWxpc3QKICAg ICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYKICAgICAgICAgICAgIChtYXBjYXIgKGxh bWJkYSAoeCkKICAgICAgICAgICAgICAgICAgICAgICAocGNhc2UtbGV0KiAoKGAoLHNlcSAuICxy YXctc2VxKSB4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYCgsYnJpZWYt ZGVzYyAsZGVmbiAsZXZlbnQgLF9tb3VzZS1tc2cpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaGVscC0tYW5hbHl6ZS1rZXkgc2VxIHJhdy1zZXEpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobG9jdXMKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChoZWxwLS1iaW5kaW5nLWxvY3VzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VxIChldmVudC1zdGFydCBldmVudCkpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgIGAoLHNlcSAsYnJpZWYtZGVzYyAsZGVmbiAsbG9jdXMpKSkKICAgICAgICAgICAgICAg ICAgICAga2V5LWxpc3QpKQogICAgICAgICAgIDIpKSkKICAgIChoZWxwLXNldHVwLXhyZWYgKGxp c3QgKGxhbWJkYSAoa2V5LWxpc3QgYnVmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChk ZXNjcmliZS1rZXkga2V5LWxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpZiAoYnVmZmVyLWxpdmUtcCBidWYpIGJ1ZikpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICBrZXktbGlzdCBidWYpCgkJICAgICAoY2FsbGVkLWludGVyYWN0aXZlbHktcCAnaW50 ZXJhY3RpdmUpKQogICAgKGlmIChhbmQgKDw9IChsZW5ndGggaW5mby1saXN0KSAxKQogICAgICAg ICAgICAgKGhlbHAtLWJpbmRpbmctdW5kZWZpbmVkLXAgKG50aCAyIChjYXIgaW5mby1saXN0KSkp KQogICAgICAgIChtZXNzYWdlICIlcyIgKG50aCAxIChjYXIgaW5mby1saXN0KSkpCiAgICAgICh3 aXRoLWhlbHAtd2luZG93IChoZWxwLWJ1ZmZlcikKICAgICAgICAod2hlbiAoPiAobGVuZ3RoIGlu Zm8tbGlzdCkgMSkKICAgICAgICAgIDs7IEZJWE1FOiBNYWtlIHRoaXMgaW50byBjbGlja2FibGUg aHlwZXJsaW5rcy4KICAgICAgICAgIChwcmluYyAiVGhlcmUgd2VyZSBzZXZlcmFsIGtleS1zZXF1 ZW5jZXM6XG5cbiIpCiAgICAgICAgICAocHJpbmMgKG1hcGNvbmNhdCAobGFtYmRhIChpbmZvKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGNhc2UtbGV0ICgoYCgsX3NlcSAsYnJpZWYt ZGVzYyAsX2RlZm4gLF9sb2N1cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgIiAg IiBicmllZi1kZXNjKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLWxpc3QKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpKQogICAgICAgICAgKHdoZW4gKGRlbHEgbmls IG9uLWxpbmspCiAgICAgICAgICAgIChwcmluYyAiXG5cblRob3NlIGFyZSBpbmZsdWVuY2VkIGJ5 IGBtb3VzZS0xLWNsaWNrLWZvbGxvd3MtbGluayciKSkKICAgICAgICAgIChwcmluYyAiXG5cblRo ZXkncmUgYWxsIGRlc2NyaWJlZCBiZWxvdy4iKSkKICAgICAgICAocGNhc2UtZG9saXN0IChgKCxf c2VxICxicmllZi1kZXNjICxkZWZuICxsb2N1cykKICAgICAgICAgICAgICAgICAgICAgICBpbmZv LWxpc3QpCiAgICAgICAgICAod2hlbiBkZWZuCiAgICAgICAgICAgICh3aGVuICg+IChsZW5ndGgg aW5mby1saXN0KSAxKQogICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHN0YW5kYXJk LW91dHB1dAogICAgICAgICAgICAgICAgKGluc2VydCAiXG5cbiIKICAgICAgICAgICAgICAgICAg ICAgICAgOzsgRklYTUU6IENhbid0IHVzZSBldmFsLXdoZW4tY29tcGlsZSBiZWNhdXNlIHB1cmlm aWVkCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IHN0cmluZ3MgbG9zZSB0aGVpciB0ZXh0IHBy b3BlcnRpZXMgOi0oCiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplICJcbiIgJ2Zh Y2UgJyg6aGVpZ2h0IDAuMSA6aW52ZXJzZS12aWRlbyB0KSkKICAgICAgICAgICAgICAgICAgICAg ICAgIlxuIikpKQoKICAgICAgICAgICAgKHByaW5jIGJyaWVmLWRlc2MpCiAgICAgICAgICAgICh3 aGVuIGxvY3VzCiAgICAgICAgICAgICAgKHByaW5jIChmb3JtYXQgIiAoZm91bmQgaW4gJXMpIiBs b2N1cykpKQogICAgICAgICAgICAocHJpbmMgIiwgd2hpY2ggaXMgIikKCSAgICAoZGVzY3JpYmUt ZnVuY3Rpb24tMSBkZWZuKSkpKSkpKQoMCihkZWZ1biBkZXNjcmliZS1tb2RlICgmb3B0aW9uYWwg YnVmZmVyKQogICJEaXNwbGF5IGRvY3VtZW50YXRpb24gb2YgY3VycmVudCBtYWpvciBtb2RlIGFu ZCBtaW5vciBtb2Rlcy4KQSBicmllZiBzdW1tYXJ5IG9mIHRoZSBtaW5vciBtb2RlcyBjb21lcyBm aXJzdCwgZm9sbG93ZWQgYnkgdGhlCm1ham9yIG1vZGUgZGVzY3JpcHRpb24uICBUaGlzIGlzIGZv bGxvd2VkIGJ5IGRldGFpbGVkCmRlc2NyaXB0aW9ucyBvZiB0aGUgbWlub3IgbW9kZXMsIGVhY2gg b24gYSBzZXBhcmF0ZSBwYWdlLgoKRm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkgZm9yIGEgbWlu b3IgbW9kZSwgdGhlIG1vZGUncyBpbmRpY2F0b3IKdmFyaWFibGUgXChsaXN0ZWQgaW4gYG1pbm9y LW1vZGUtYWxpc3QnKSBtdXN0IGFsc28gYmUgYSBmdW5jdGlvbgp3aG9zZSBkb2N1bWVudGF0aW9u IGRlc2NyaWJlcyB0aGUgbWlub3IgbW9kZS4KCklmIGNhbGxlZCBmcm9tIExpc3Agd2l0aCBhIG5v bi1uaWwgQlVGRkVSIGFyZ3VtZW50LCBkaXNwbGF5CmRvY3VtZW50YXRpb24gZm9yIHRoZSBtYWpv ciBhbmQgbWlub3IgbW9kZXMgb2YgdGhhdCBidWZmZXIuIgogIChpbnRlcmFjdGl2ZSAiQCIpCiAg KHVubGVzcyBidWZmZXIgKHNldHEgYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQogIChoZWxwLXNl dHVwLXhyZWYgKGxpc3QgIydkZXNjcmliZS1tb2RlIGJ1ZmZlcikKCQkgICAoY2FsbGVkLWludGVy YWN0aXZlbHktcCAnaW50ZXJhY3RpdmUpKQogIDs7IEZvciB0aGUgc2FrZSBvZiBoZWxwLWRvLXhy ZWYgYW5kIGhlbHAteHJlZi1nby1iYWNrLAogIDs7IGRvbid0IHN3aXRjaCBidWZmZXJzIGJlZm9y ZSBjYWxsaW5nIGBoZWxwLWJ1ZmZlcicuCiAgKHdpdGgtaGVscC13aW5kb3cgKGhlbHAtYnVmZmVy KQogICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCiAgICAgIChsZXQgKG1pbm9yLW1vZGVz KQoJOzsgT2xkZXIgcGFja2FnZXMgZG8gbm90IHJlZ2lzdGVyIGluIG1pbm9yLW1vZGUtbGlzdCBi dXQgb25seSBpbgoJOzsgbWlub3ItbW9kZS1hbGlzdC4KCShkb2xpc3QgKHggbWlub3ItbW9kZS1h bGlzdCkKCSAgKHNldHEgeCAoY2FyIHgpKQoJICAodW5sZXNzIChtZW1xIHggbWlub3ItbW9kZS1s aXN0KQoJICAgIChwdXNoIHggbWlub3ItbW9kZS1saXN0KSkpCgk7OyBGaW5kIGVuYWJsZWQgbWlu b3IgbW9kZSB3ZSB3aWxsIHdhbnQgdG8gbWVudGlvbi4KCShkb2xpc3QgKG1vZGUgbWlub3ItbW9k ZS1saXN0KQoJICA7OyBEb2N1bWVudCBhIG1pbm9yIG1vZGUgaWYgaXQgaXMgbGlzdGVkIGluIG1p bm9yLW1vZGUtYWxpc3QsCgkgIDs7IG5vbi1uaWwsIGFuZCBoYXMgYSBmdW5jdGlvbiBkZWZpbml0 aW9uLgoJICAobGV0ICgoZm1vZGUgKG9yIChnZXQgbW9kZSA6bWlub3ItbW9kZS1mdW5jdGlvbikg bW9kZSkpKQoJICAgIChhbmQgKGJvdW5kcCBtb2RlKSAoc3ltYm9sLXZhbHVlIG1vZGUpCgkJIChm Ym91bmRwIGZtb2RlKQoJCSAobGV0ICgocHJldHR5LW1pbm9yLW1vZGUKCQkJKGlmIChzdHJpbmct bWF0Y2ggIlxcKFxcKC1taW5vclxcKT8tbW9kZVxcKT9cXCciCgkJCQkJICAoc3ltYm9sLW5hbWUg Zm1vZGUpKQoJCQkgICAgKGNhcGl0YWxpemUKCQkJICAgICAoc3Vic3RyaW5nIChzeW1ib2wtbmFt ZSBmbW9kZSkKCQkJCQkwIChtYXRjaC1iZWdpbm5pbmcgMCkpKQoJCQkgIGZtb2RlKSkpCgkJICAg KHB1c2ggKGxpc3QgZm1vZGUgcHJldHR5LW1pbm9yLW1vZGUKCQkJICAgICAgIChmb3JtYXQtbW9k ZS1saW5lIChhc3NxIG1vZGUgbWlub3ItbW9kZS1hbGlzdCkpKQoJCQkgbWlub3ItbW9kZXMpKSkp KQoJKHNldHEgbWlub3ItbW9kZXMKCSAgICAgIChzb3J0IG1pbm9yLW1vZGVzCgkJICAgIChsYW1i ZGEgKGEgYikgKHN0cmluZy1sZXNzcCAoY2FkciBhKSAoY2FkciBiKSkpKSkKCSh3aGVuIG1pbm9y LW1vZGVzCgkgIChwcmluYyAiRW5hYmxlZCBtaW5vciBtb2RlczpcbiIpCgkgIChtYWtlLWxvY2Fs LXZhcmlhYmxlICdoZWxwLWJ1dHRvbi1jYWNoZSkKCSAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rh bmRhcmQtb3V0cHV0CgkgICAgKGRvbGlzdCAobW9kZSBtaW5vci1tb2RlcykKCSAgICAgIChsZXQg KChtb2RlLWZ1bmN0aW9uIChudGggMCBtb2RlKSkKCQkgICAgKHByZXR0eS1taW5vci1tb2RlIChu dGggMSBtb2RlKSkKCQkgICAgKGluZGljYXRvciAobnRoIDIgbW9kZSkpKQoJCShzYXZlLWV4Y3Vy c2lvbgoJCSAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKCQkgIChwcmluYyAiXG5cZlxuIikKCQkg IChwdXNoIChwb2ludC1tYXJrZXIpIGhlbHAtYnV0dG9uLWNhY2hlKQoJCSAgOzsgRG9jdW1lbnQg dGhlIG1pbm9yIG1vZGVzIGZ1bGx5LgogICAgICAgICAgICAgICAgICAoaW5zZXJ0LXRleHQtYnV0 dG9uCiAgICAgICAgICAgICAgICAgICBwcmV0dHktbWlub3ItbW9kZSAndHlwZSAnaGVscC1mdW5j dGlvbgogICAgICAgICAgICAgICAgICAgJ2hlbHAtYXJncyAobGlzdCBtb2RlLWZ1bmN0aW9uKQog ICAgICAgICAgICAgICAgICAgJ2J1dHRvbiAnKHQpKQoJCSAgKHByaW5jIChmb3JtYXQgIiBtaW5v ciBtb2RlICglcyk6XG4iCgkJCQkgKGlmICh6ZXJvcCAobGVuZ3RoIGluZGljYXRvcikpCgkJCQkg ICAgICJubyBpbmRpY2F0b3IiCgkJCQkgICAoZm9ybWF0ICJpbmRpY2F0b3IlcyIKCQkJCQkgICBp bmRpY2F0b3IpKSkpCgkJICAocHJpbmMgKGRvY3VtZW50YXRpb24gbW9kZS1mdW5jdGlvbikpKQoJ CShpbnNlcnQtYnV0dG9uIHByZXR0eS1taW5vci1tb2RlCgkJCSAgICAgICAnYWN0aW9uIChjYXIg aGVscC1idXR0b24tY2FjaGUpCgkJCSAgICAgICAnZm9sbG93LWxpbmsgdAoJCQkgICAgICAgJ2hl bHAtZWNobyAibW91c2UtMiwgUkVUOiBzaG93IGZ1bGwgaW5mb3JtYXRpb24iKQoJCShuZXdsaW5l KSkpCgkgICAgKGZvcndhcmQtbGluZSAtMSkKCSAgICAoZmlsbC1wYXJhZ3JhcGggbmlsKQoJICAg IChmb3J3YXJkLWxpbmUgMSkpCgoJICAocHJpbmMgIlxuKEluZm9ybWF0aW9uIGFib3V0IHRoZXNl IG1pbm9yIG1vZGVzIGZvbGxvd3MgdGhlIG1ham9yIG1vZGUgaW5mby4pXG5cbiIpKQoJOzsgRG9j dW1lbnQgdGhlIG1ham9yIG1vZGUuCgkobGV0ICgobW9kZSBtb2RlLW5hbWUpKQoJICAod2l0aC1j dXJyZW50LWJ1ZmZlciBzdGFuZGFyZC1vdXRwdXQKICAgICAgICAgICAgKGxldCAoKHN0YXJ0IChw b2ludCkpKQogICAgICAgICAgICAgIChpbnNlcnQgKGZvcm1hdC1tb2RlLWxpbmUgbW9kZSBuaWwg bmlsIGJ1ZmZlcikpCiAgICAgICAgICAgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMgc3RhcnQgKHBv aW50KSAnKGZhY2UgYm9sZCkpKSkpCgkocHJpbmMgIiBtb2RlIikKCShsZXQqICgobW9kZSBtYWpv ci1tb2RlKQoJICAgICAgIChmaWxlLW5hbWUgKGZpbmQtbGlzcC1vYmplY3QtZmlsZS1uYW1lIG1v ZGUgbmlsKSkpCgkgICh3aGVuIGZpbGUtbmFtZQoJICAgIChwcmluYyAoZm9ybWF0LW1lc3NhZ2Ug IiBkZWZpbmVkIGluIGAlcyciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZp bGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZS1uYW1lKSkpCgkgICAgOzsgTWFrZSBhIGh5cGVybGlu ayB0byB0aGUgbGlicmFyeS4KCSAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGFuZGFyZC1vdXRw dXQKCSAgICAgIChzYXZlLWV4Y3Vyc2lvbgoJCShyZS1zZWFyY2gtYmFja3dhcmQgKHN1YnN0aXR1 dGUtY29tbWFuZC1rZXlzICJgXFwoW15gJ10rXFwpJyIpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5pbCB0KQoJCShoZWxwLXhyZWYtYnV0dG9uIDEgJ2hlbHAtZnVuY3Rpb24t ZGVmIG1vZGUgZmlsZS1uYW1lKSkpKSkKCShwcmluYyAiOlxuIikKCShwcmluYyAoZG9jdW1lbnRh dGlvbiBtYWpvci1tb2RlKSkpKSkKICA7OyBGb3IgdGhlIHNha2Ugb2YgSUVMTSBhbmQgbWF5YmUg b3RoZXJzCiAgbmlsKQoKCihkZWZ1biBkZXNjcmliZS1taW5vci1tb2RlIChtaW5vci1tb2RlKQog ICJEaXNwbGF5IGRvY3VtZW50YXRpb24gb2YgYSBtaW5vciBtb2RlIGdpdmVuIGFzIE1JTk9SLU1P REUuCk1JTk9SLU1PREUgY2FuIGJlIGEgbWlub3IgbW9kZSBzeW1ib2wgb3IgYSBtaW5vciBtb2Rl IGluZGljYXRvciBzdHJpbmcKYXBwZWFyZWQgb24gdGhlIG1vZGUtbGluZS4iCiAgKGludGVyYWN0 aXZlIChsaXN0IChjb21wbGV0aW5nLXJlYWQKCQkgICAgICAiTWlub3IgbW9kZTogIgoJCQkgICAg ICAobmNvbmMKCQkJICAgICAgIChkZXNjcmliZS1taW5vci1tb2RlLWNvbXBsZXRpb24tdGFibGUt Zm9yLXN5bWJvbCkKCQkJICAgICAgIChkZXNjcmliZS1taW5vci1tb2RlLWNvbXBsZXRpb24tdGFi bGUtZm9yLWluZGljYXRvcikKCQkJICAgICAgICkpKSkKICAoaWYgKHN5bWJvbHAgbWlub3ItbW9k ZSkKICAgICAgKHNldHEgbWlub3ItbW9kZSAoc3ltYm9sLW5hbWUgbWlub3ItbW9kZSkpKQogIChs ZXQgKChzeW1ib2xzIChkZXNjcmliZS1taW5vci1tb2RlLWNvbXBsZXRpb24tdGFibGUtZm9yLXN5 bWJvbCkpCgkoaW5kaWNhdG9ycyAoZGVzY3JpYmUtbWlub3ItbW9kZS1jb21wbGV0aW9uLXRhYmxl LWZvci1pbmRpY2F0b3IpKSkKICAgIChjb25kCiAgICAgKChtZW1iZXIgbWlub3ItbW9kZSBzeW1i b2xzKQogICAgICAoZGVzY3JpYmUtbWlub3ItbW9kZS1mcm9tLXN5bWJvbCAoaW50ZXJuIG1pbm9y LW1vZGUpKSkKICAgICAoKG1lbWJlciBtaW5vci1tb2RlIGluZGljYXRvcnMpCiAgICAgIChkZXNj cmliZS1taW5vci1tb2RlLWZyb20taW5kaWNhdG9yIG1pbm9yLW1vZGUpKQogICAgICh0CiAgICAg IChlcnJvciAiTm8gc3VjaCBtaW5vciBtb2RlOiAlcyIgbWlub3ItbW9kZSkpKSkpCgoKKGRlZnVu IHNlYXJjaC1mb3J3YXJkLWhlbHAtZm9yLWhlbHAoKQogICJBbGxvd3MgdG8gcmVzZWFyY2ggZm9y d2FyZCBhIHN0cmluZyBpbnRvIHRoZSAqTWV0YWhlbHAqIHdpbmRvdyIKICAoaW50ZXJhY3RpdmUp CiAgOztNb3ZlcyB0aGUgY3Vyc29yIHRvIHRoZSAqTWV0YWhlbHAqIHdpbmRvdwogIChzd2l0Y2gt dG8tYnVmZmVyLW90aGVyLXdpbmRvdyAiICpNZXRhaGVscCoiKQogIDs7IERvIGluY3JlbWVudGFs IHNlYXJjaCBmb3J3YXJkLgogIChpc2VhcmNoLWZvcndhcmQgbmlsIDEpKQoKCjs7IHN5bWJvbAoo ZGVmdW4gZGVzY3JpYmUtbWlub3ItbW9kZS1jb21wbGV0aW9uLXRhYmxlLWZvci1zeW1ib2wgKCkK ICA7OyBJbiBvcmRlciB0byBsaXN0IHVwIGFsbCBtaW5vciBtb2RlcywgbWlub3ItbW9kZS1saXN0 CiAgOzsgaXMgdXNlZCBoZXJlIGluc3RlYWQgb2YgbWlub3ItbW9kZS1hbGlzdC4KICAoZGVscSBu aWwgKG1hcGNhciAnc3ltYm9sLW5hbWUgbWlub3ItbW9kZS1saXN0KSkpCgooZGVmdW4gZGVzY3Jp YmUtbWlub3ItbW9kZS1mcm9tLXN5bWJvbCAoc3ltYm9sKQogICJEaXNwbGF5IGRvY3VtZW50YXRp b24gb2YgYSBtaW5vciBtb2RlIGdpdmVuIGFzIGEgc3ltYm9sLCBTWU1CT0wiCiAgKGludGVyYWN0 aXZlIChsaXN0IChpbnRlcm4gKGNvbXBsZXRpbmctcmVhZAoJCQkgICAgICAiTWlub3IgbW9kZSBz eW1ib2w6ICIKCQkJICAgICAgKGRlc2NyaWJlLW1pbm9yLW1vZGUtY29tcGxldGlvbi10YWJsZS1m b3Itc3ltYm9sKSkpKSkKICAoaWYgKGZib3VuZHAgc3ltYm9sKQogICAgICAoZGVzY3JpYmUtZnVu Y3Rpb24gc3ltYm9sKQogICAgKGRlc2NyaWJlLXZhcmlhYmxlIHN5bWJvbCkpKQoKOzsgaW5kaWNh dG9yCihkZWZ1biBkZXNjcmliZS1taW5vci1tb2RlLWNvbXBsZXRpb24tdGFibGUtZm9yLWluZGlj YXRvciAoKQogIChkZWxxIG5pbAoJKG1hcGNhciAobGFtYmRhICh4KQoJCSAgKGxldCAoKGkgKGZv cm1hdC1tb2RlLWxpbmUgeCkpKQoJCSAgICA7OyByZW1vdmUgZmlyc3Qgc3BhY2UgaWYgZXhpc3Rl ZAoJCSAgICAoY29uZAoJCSAgICAgKCg9IDAgKGxlbmd0aCBpKSkKCQkgICAgICBuaWwpCgkJICAg ICAoKGVxIChhcmVmIGkgMCkgP1xzKQoJCSAgICAgIChzdWJzdHJpbmcgaSAxKSkKCQkgICAgICh0 CgkJICAgICAgaSkpKSkKCQltaW5vci1tb2RlLWFsaXN0KSkpCgooZGVmdW4gZGVzY3JpYmUtbWlu b3ItbW9kZS1mcm9tLWluZGljYXRvciAoaW5kaWNhdG9yKQogICJEaXNwbGF5IGRvY3VtZW50YXRp b24gb2YgYSBtaW5vciBtb2RlIHNwZWNpZmllZCBieSBJTkRJQ0FUT1IuCklmIHlvdSBjYWxsIHRo aXMgZnVuY3Rpb24gaW50ZXJhY3RpdmVseSwgeW91IGNhbiBnaXZlIGluZGljYXRvciB3aGljaApp cyBjdXJyZW50bHkgYWN0aXZhdGVkIHdpdGggY29tcGxldGlvbi4iCiAgKGludGVyYWN0aXZlIChs aXN0CgkJKGNvbXBsZXRpbmctcmVhZAoJCSAiTWlub3IgbW9kZSBpbmRpY2F0b3I6ICIKCQkgKGRl c2NyaWJlLW1pbm9yLW1vZGUtY29tcGxldGlvbi10YWJsZS1mb3ItaW5kaWNhdG9yKSkpKQogIChs ZXQgKChtaW5vci1tb2RlIChsb29rdXAtbWlub3ItbW9kZS1mcm9tLWluZGljYXRvciBpbmRpY2F0 b3IpKSkKICAgIChpZiBtaW5vci1tb2RlCgkoZGVzY3JpYmUtbWlub3ItbW9kZS1mcm9tLXN5bWJv bCBtaW5vci1tb2RlKQogICAgICAoZXJyb3IgIkNhbm5vdCBmaW5kIG1pbm9yIG1vZGUgZm9yIGAl cyciIGluZGljYXRvcikpKSkKCihkZWZ1biBsb29rdXAtbWlub3ItbW9kZS1mcm9tLWluZGljYXRv ciAoaW5kaWNhdG9yKQogICJSZXR1cm4gYSBtaW5vciBtb2RlIHN5bWJvbCBmcm9tIGl0cyBpbmRp Y2F0b3Igb24gdGhlIG1vZGUgbGluZS4iCiAgOzsgcmVtb3ZlIGZpcnN0IHNwYWNlIGlmIGV4aXN0 ZWQKICAoaWYgKGFuZCAoPCAwIChsZW5ndGggaW5kaWNhdG9yKSkKCSAgIChlcSAoYXJlZiBpbmRp Y2F0b3IgMCkgP1xzKSkKICAgICAgKHNldHEgaW5kaWNhdG9yIChzdWJzdHJpbmcgaW5kaWNhdG9y IDEpKSkKICAobGV0ICgobWlub3ItbW9kZXMgbWlub3ItbW9kZS1hbGlzdCkKCXJlc3VsdCkKICAg ICh3aGlsZSBtaW5vci1tb2RlcwogICAgICAobGV0KiAoKG1pbm9yLW1vZGUgKGNhciAoY2FyIG1p bm9yLW1vZGVzKSkpCgkgICAgIChhbmluZGljYXRvciAoZm9ybWF0LW1vZGUtbGluZQoJCQkgICAo Y2FyIChjZHIgKGNhciBtaW5vci1tb2RlcykpKSkpKQoJOzsgcmVtb3ZlIGZpcnN0IHNwYWNlIGlm IGV4aXN0ZWQKCShpZiAoYW5kIChzdHJpbmdwIGFuaW5kaWNhdG9yKQoJCSAoPiAobGVuZ3RoIGFu aW5kaWNhdG9yKSAwKQoJCSAoZXEgKGFyZWYgYW5pbmRpY2F0b3IgMCkgP1xzKSkKCSAgICAoc2V0 cSBhbmluZGljYXRvciAoc3Vic3RyaW5nIGFuaW5kaWNhdG9yIDEpKSkKCShpZiAoZXF1YWwgaW5k aWNhdG9yIGFuaW5kaWNhdG9yKQoJICAgIChzZXRxIHJlc3VsdCBtaW5vci1tb2RlCgkJICBtaW5v ci1tb2RlcyBuaWwpCgkgIChzZXRxIG1pbm9yLW1vZGVzIChjZHIgbWlub3ItbW9kZXMpKSkpKQog ICAgcmVzdWx0KSkKDAooZGVjbGFyZS1mdW5jdGlvbiB4LWRpc3BsYXktcGl4ZWwtaGVpZ2h0ICJ4 Zm5zLmMiICgmb3B0aW9uYWwgdGVybWluYWwpKQooZGVjbGFyZS1mdW5jdGlvbiB4LWRpc3BsYXkt cGl4ZWwtd2lkdGggInhmbnMuYyIgKCZvcHRpb25hbCB0ZXJtaW5hbCkpCgo7OzsgQXV0b21hdGlj IHJlc2l6aW5nIG9mIHRlbXBvcmFyeSBidWZmZXJzLgooZGVmY3VzdG9tIHRlbXAtYnVmZmVyLW1h eC1oZWlnaHQKICAobGFtYmRhIChfYnVmZmVyKQogICAgKGlmIChhbmQgKGRpc3BsYXktZ3JhcGhp Yy1wKSAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKGZyYW1lLXJvb3Qtd2luZG93KSkpCgkoLyAoeC1k aXNwbGF5LXBpeGVsLWhlaWdodCkgKGZyYW1lLWNoYXItaGVpZ2h0KSAyKQogICAgICAoLyAoLSAo ZnJhbWUtaGVpZ2h0KSAyKSAyKSkpCiAgIk1heGltdW0gaGVpZ2h0IG9mIGEgd2luZG93IGRpc3Bs YXlpbmcgYSB0ZW1wb3JhcnkgYnVmZmVyLgpUaGlzIGlzIGVmZmVjdGl2ZSBvbmx5IHdoZW4gVGVt cCBCdWZmZXIgUmVzaXplIG1vZGUgaXMgZW5hYmxlZC4KVGhlIHZhbHVlIGlzIHRoZSBtYXhpbXVt IGhlaWdodCAoaW4gbGluZXMpIHdoaWNoCmByZXNpemUtdGVtcC1idWZmZXItd2luZG93JyB3aWxs IGdpdmUgdG8gYSB3aW5kb3cgZGlzcGxheWluZyBhCnRlbXBvcmFyeSBidWZmZXIuICBJdCBjYW4g YWxzbyBiZSBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0bwpjaG9vc2UgdGhlIGhlaWdodCBmb3Ig c3VjaCBhIGJ1ZmZlci4gIEl0IGdldHMgb25lIGFyZ3VtZW50LCB0aGUKYnVmZmVyLCBhbmQgc2hv dWxkIHJldHVybiBhIHBvc2l0aXZlIGludGVnZXIuICBBdCB0aGUgdGltZSB0aGUKZnVuY3Rpb24g aXMgY2FsbGVkLCB0aGUgd2luZG93IHRvIGJlIHJlc2l6ZWQgaXMgc2VsZWN0ZWQuIgogIDp0eXBl ICcoY2hvaWNlIGludGVnZXIgZnVuY3Rpb24pCiAgOmdyb3VwICdoZWxwCiAgOnZlcnNpb24gIjI0 LjMiKQoKKGRlZmN1c3RvbSB0ZW1wLWJ1ZmZlci1tYXgtd2lkdGgKICAobGFtYmRhIChfYnVmZmVy KQogICAgKGlmIChhbmQgKGRpc3BsYXktZ3JhcGhpYy1wKSAoZXEgKHNlbGVjdGVkLXdpbmRvdykg KGZyYW1lLXJvb3Qtd2luZG93KSkpCgkoLyAoeC1kaXNwbGF5LXBpeGVsLXdpZHRoKSAoZnJhbWUt Y2hhci13aWR0aCkgMikKICAgICAgKC8gKC0gKGZyYW1lLXdpZHRoKSAyKSAyKSkpCiAgIk1heGlt dW0gd2lkdGggb2YgYSB3aW5kb3cgZGlzcGxheWluZyBhIHRlbXBvcmFyeSBidWZmZXIuClRoaXMg aXMgZWZmZWN0aXZlIG9ubHkgd2hlbiBUZW1wIEJ1ZmZlciBSZXNpemUgbW9kZSBpcyBlbmFibGVk LgpUaGUgdmFsdWUgaXMgdGhlIG1heGltdW0gd2lkdGggKGluIGNvbHVtbnMpIHdoaWNoCmByZXNp emUtdGVtcC1idWZmZXItd2luZG93JyB3aWxsIGdpdmUgdG8gYSB3aW5kb3cgZGlzcGxheWluZyBh CnRlbXBvcmFyeSBidWZmZXIuICBJdCBjYW4gYWxzbyBiZSBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxl ZCB0bwpjaG9vc2UgdGhlIHdpZHRoIGZvciBzdWNoIGEgYnVmZmVyLiAgSXQgZ2V0cyBvbmUgYXJn dW1lbnQsIHRoZQpidWZmZXIsIGFuZCBzaG91bGQgcmV0dXJuIGEgcG9zaXRpdmUgaW50ZWdlci4g IEF0IHRoZSB0aW1lIHRoZQpmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSB3aW5kb3cgdG8gYmUgcmVz aXplZCBpcyBzZWxlY3RlZC4iCiAgOnR5cGUgJyhjaG9pY2UgaW50ZWdlciBmdW5jdGlvbikKICA6 Z3JvdXAgJ2hlbHAKICA6dmVyc2lvbiAiMjQuNCIpCgooZGVmaW5lLW1pbm9yLW1vZGUgdGVtcC1i dWZmZXItcmVzaXplLW1vZGUKICAiVG9nZ2xlIGF1dG8tcmVzaXppbmcgdGVtcG9yYXJ5IGJ1ZmZl ciB3aW5kb3dzIChUZW1wIEJ1ZmZlciBSZXNpemUgTW9kZSkuCldpdGggYSBwcmVmaXggYXJndW1l bnQgQVJHLCBlbmFibGUgVGVtcCBCdWZmZXIgUmVzaXplIG1vZGUgaWYgQVJHCmlzIHBvc2l0aXZl LCBhbmQgZGlzYWJsZSBpdCBvdGhlcndpc2UuICBJZiBjYWxsZWQgZnJvbSBMaXNwLAplbmFibGUg dGhlIG1vZGUgaWYgQVJHIGlzIG9taXR0ZWQgb3IgbmlsLgoKV2hlbiBUZW1wIEJ1ZmZlciBSZXNp emUgbW9kZSBpcyBlbmFibGVkLCB0aGUgd2luZG93cyBpbiB3aGljaCB3ZQpzaG93IGEgdGVtcG9y YXJ5IGJ1ZmZlciBhcmUgYXV0b21hdGljYWxseSByZXNpemVkIGluIGhlaWdodCB0bwpmaXQgdGhl IGJ1ZmZlcidzIGNvbnRlbnRzLCBidXQgbmV2ZXIgbW9yZSB0aGFuCmB0ZW1wLWJ1ZmZlci1tYXgt aGVpZ2h0JyBub3IgbGVzcyB0aGFuIGB3aW5kb3ctbWluLWhlaWdodCcuCgpBIHdpbmRvdyBpcyBy ZXNpemVkIG9ubHkgaWYgaXQgaGFzIGJlZW4gc3BlY2lhbGx5IGNyZWF0ZWQgZm9yIHRoZQpidWZm ZXIuICBXaW5kb3dzIHRoYXQgaGF2ZSBzaG93biBhbm90aGVyIGJ1ZmZlciBiZWZvcmUgYXJlIG5v dApyZXNpemVkLiAgQSBmcmFtZSBpcyByZXNpemVkIG9ubHkgaWYgYGZpdC1mcmFtZS10by1idWZm ZXInIGlzCm5vbi1uaWwuCgpUaGlzIG1vZGUgaXMgdXNlZCBieSBgaGVscCcsIGBhcHJvcG9zJyBh bmQgYGNvbXBsZXRpb24nIGJ1ZmZlcnMsCmFuZCBzb21lIG90aGVycy4iCiAgOmdsb2JhbCB0IDpn cm91cCAnaGVscAogIChpZiB0ZW1wLWJ1ZmZlci1yZXNpemUtbW9kZQogICAgICA7OyBgaGVscC1t YWtlLXhyZWZzJyBtYXkgYWRkIGEgYGJhY2snIGJ1dHRvbiBhbmQgdGh1cyBpbmNyZWFzZSB0aGUK ICAgICAgOzsgdGV4dCBzaXplLCBzbyBgcmVzaXplLXRlbXAtYnVmZmVyLXdpbmRvdycgbXVzdCBi ZSBydW4gKmFmdGVyKiBpdC4KICAgICAgKGFkZC1ob29rICd0ZW1wLWJ1ZmZlci1zaG93LWhvb2sg J3Jlc2l6ZS10ZW1wLWJ1ZmZlci13aW5kb3cgJ2FwcGVuZCkKICAgIChyZW1vdmUtaG9vayAndGVt cC1idWZmZXItc2hvdy1ob29rICdyZXNpemUtdGVtcC1idWZmZXItd2luZG93KSkpCgooZGVmdW4g cmVzaXplLXRlbXAtYnVmZmVyLXdpbmRvdyAoJm9wdGlvbmFsIHdpbmRvdykKICAiUmVzaXplIFdJ TkRPVyB0byBmaXQgaXRzIGNvbnRlbnRzLgpXSU5ET1cgbXVzdCBiZSBhIGxpdmUgd2luZG93IGFu ZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgpEbyBub3QgcmVzaXplIGlmIFdJTkRPVyB3 YXMgbm90IGNyZWF0ZWQgYnkgYGRpc3BsYXktYnVmZmVyJy4KCklmIFdJTkRPVyBpcyBwYXJ0IG9m IGEgdmVydGljYWwgY29tYmluYXRpb24sIHJlc3RyYWluIGl0cyBuZXcKc2l6ZSBieSBgdGVtcC1i dWZmZXItbWF4LWhlaWdodCcgYW5kIGRvIG5vdCByZXNpemUgaWYgaXRzIG1pbmltdW0KYWNjZXNz aWJsZSBwb3NpdGlvbiBpcyBzY3JvbGxlZCBvdXQgb2Ygdmlldy4gIElmIFdJTkRPVyBpcyBwYXJ0 Cm9mIGEgaG9yaXpvbnRhbCBjb21iaW5hdGlvbiwgcmVzdHJhaW4gaXRzIG5ldyBzaXplIGJ5CmB0 ZW1wLWJ1ZmZlci1tYXgtd2lkdGgnLiAgSW4gYm90aCBjYXNlcywgdGhlIHZhbHVlIG9mIHRoZSBv cHRpb24KYGZpdC13aW5kb3ctdG8tYnVmZmVyLWhvcml6b250YWxseScgY2FuIGluaGliaXQgcmVz aXppbmcuCgpJZiBXSU5ET1cgaXMgdGhlIHJvb3Qgd2luZG93IG9mIGl0cyBmcmFtZSwgcmVzaXpl IHRoZSBmcmFtZQpwcm92aWRlZCBgZml0LWZyYW1lLXRvLWJ1ZmZlcicgaXMgbm9uLW5pbC4KClRo aXMgZnVuY3Rpb24gbWF5IGNhbGwgYHByZXNlcnZlLXdpbmRvdy1zaXplJyB0byBwcmVzZXJ2ZSB0 aGUKc2l6ZSBvZiBXSU5ET1cuIgogIChzZXRxIHdpbmRvdyAod2luZG93LW5vcm1hbGl6ZS13aW5k b3cgd2luZG93IHQpKQogIChsZXQgKChoZWlnaHQgKGlmIChmdW5jdGlvbnAgdGVtcC1idWZmZXIt bWF4LWhlaWdodCkKCQkgICAgKHdpdGgtc2VsZWN0ZWQtd2luZG93IHdpbmRvdwoJCSAgICAgIChm dW5jYWxsIHRlbXAtYnVmZmVyLW1heC1oZWlnaHQgKHdpbmRvdy1idWZmZXIpKSkKCQkgIHRlbXAt YnVmZmVyLW1heC1oZWlnaHQpKQoJKHdpZHRoIChpZiAoZnVuY3Rpb25wIHRlbXAtYnVmZmVyLW1h eC13aWR0aCkKCQkgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgd2luZG93CgkJICAgICAoZnVuY2Fs bCB0ZW1wLWJ1ZmZlci1tYXgtd2lkdGggKHdpbmRvdy1idWZmZXIpKSkKCQkgdGVtcC1idWZmZXIt bWF4LXdpZHRoKSkKCShxdWl0LWNhZHIgKGNhZHIgKHdpbmRvdy1wYXJhbWV0ZXIgd2luZG93ICdx dWl0LXJlc3RvcmUpKSkpCiAgICA7OyBSZXNpemUgV0lORE9XIGlmZiBpdCB3YXMgbWFkZSBieSBg ZGlzcGxheS1idWZmZXInLgogICAgKHdoZW4gKG9yIChhbmQgKGVxIHF1aXQtY2FkciAnd2luZG93 KQoJCSAgIChvciAoYW5kICh3aW5kb3ctY29tYmluZWQtcCB3aW5kb3cpCgkJCSAgICAobm90IChl cSBmaXQtd2luZG93LXRvLWJ1ZmZlci1ob3Jpem9udGFsbHkKCQkJCSAgICAgJ29ubHkpKQoJCQkg ICAgKHBvcy12aXNpYmxlLWluLXdpbmRvdy1wIChwb2ludC1taW4pIHdpbmRvdykpCgkJICAgICAg IChhbmQgKHdpbmRvdy1jb21iaW5lZC1wIHdpbmRvdyB0KQoJCQkgICAgZml0LXdpbmRvdy10by1i dWZmZXItaG9yaXpvbnRhbGx5KSkpCgkgICAgICAoYW5kIChlcSBxdWl0LWNhZHIgJ2ZyYW1lKQog ICAgICAgICAgICAgICAgICAgZml0LWZyYW1lLXRvLWJ1ZmZlcgogICAgICAgICAgICAgICAgICAg KGVxIHdpbmRvdyAoZnJhbWUtcm9vdC13aW5kb3cgd2luZG93KSkpKQoJKGZpdC13aW5kb3ctdG8t YnVmZmVyIHdpbmRvdyBoZWlnaHQgbmlsIHdpZHRoIG5pbCB0KSkpKQoKOzs7IEhlbHAgd2luZG93 cy4KKGRlZmN1c3RvbSBoZWxwLXdpbmRvdy1zZWxlY3QgbmlsCiAgIk5vbi1uaWwgbWVhbnMgc2Vs ZWN0IGhlbHAgd2luZG93IGZvciB2aWV3aW5nLgpDaG9pY2VzIGFyZToKCiBuZXZlciAobmlsKSBT ZWxlY3QgaGVscCB3aW5kb3cgb25seSBpZiB0aGVyZSBpcyBubyBvdGhlciB3aW5kb3cKICAgICAg ICAgICAgIG9uIGl0cyBmcmFtZS4KCiBvdGhlciAgICAgICBTZWxlY3QgaGVscCB3aW5kb3cgaWYg YW5kIG9ubHkgaWYgaXQgYXBwZWFycyBvbiB0aGUKICAgICAgICAgICAgIHByZXZpb3VzbHkgc2Vs ZWN0ZWQgZnJhbWUsIHRoYXQgZnJhbWUgY29udGFpbnMgYXQKICAgICAgICAgICAgIGxlYXN0IHR3 byBvdGhlciB3aW5kb3dzIGFuZCB0aGUgaGVscCB3aW5kb3cgaXMKICAgICAgICAgICAgIGVpdGhl ciBuZXcgb3Igc2hvd2VkIGEgZGlmZmVyZW50IGJ1ZmZlciBiZWZvcmUuCgogYWx3YXlzICh0KSAg QWx3YXlzIHNlbGVjdCB0aGUgaGVscCB3aW5kb3cuCgpJZiB0aGlzIG9wdGlvbiBpcyBub24tbmls IGFuZCB0aGUgaGVscCB3aW5kb3cgYXBwZWFycyBvbiBhbm90aGVyCmZyYW1lLCB0aGVuIGdpdmUg dGhhdCBmcmFtZSBpbnB1dCBmb2N1cyB0b28uICBOb3RlIGFsc28gdGhhdCBpZgp0aGUgaGVscCB3 aW5kb3cgYXBwZWFycyBvbiBhbm90aGVyIGZyYW1lLCBpdCBtYXkgZ2V0IHNlbGVjdGVkIGFuZApp dHMgZnJhbWUgZ2V0IGlucHV0IGZvY3VzIGV2ZW4gaWYgdGhpcyBvcHRpb24gaXMgbmlsLgoKVGhp cyBvcHRpb24gaGFzIGVmZmVjdCBpZiBhbmQgb25seSBpZiB0aGUgaGVscCB3aW5kb3cgd2FzIGNy ZWF0ZWQKYnkgYHdpdGgtaGVscC13aW5kb3cnLiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRh ZyAibmV2ZXIgKG5pbCkiIG5pbCkKCQkgKGNvbnN0IDp0YWcgIm90aGVyIiBvdGhlcikKCQkgKGNv bnN0IDp0YWcgImFsd2F5cyAodCkiIHQpKQogIDpncm91cCAnaGVscAogIDp2ZXJzaW9uICIyMy4x IikKCihkZWZjdXN0b20gaGVscC1lbmFibGUtYXV0by1sb2FkIHQKICAiV2hldGhlciBIZWxwIGNv bW1hbmRzIGNhbiBwZXJmb3JtIGF1dG9sb2FkaW5nLgpJZiBub24tbmlsLCB3aGVuZXZlciBcXFtk ZXNjcmliZS1mdW5jdGlvbl0gaXMgY2FsbGVkIGZvciBhbgphdXRvbG9hZGVkIGZ1bmN0aW9uIHdo b3NlIGRvY3N0cmluZyBjb250YWlucyBhbnkga2V5IHN1YnN0aXR1dGlvbgpjb25zdHJ1Y3QgKHNl ZSBgc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMnKSwgdGhlIGxpYnJhcnkgaXMgbG9hZGVkLApzbyB0 aGF0IHRoZSBkb2N1bWVudGF0aW9uIGNhbiBzaG93IHRoZSByaWdodCBrZXkgYmluZGluZ3MuIgog IDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdoZWxwCiAgOnZlcnNpb24gIjI0LjMiKQoKKGRlZnVu IGhlbHAtd2luZG93LWRpc3BsYXktbWVzc2FnZSAocXVpdC1wYXJ0IHdpbmRvdyAmb3B0aW9uYWwg c2Nyb2xsKQogICJEaXNwbGF5IG1lc3NhZ2UgdGVsbGluZyBob3cgdG8gcXVpdCBhbmQgc2Nyb2xs IGhlbHAgd2luZG93LgpRVUlULVBBUlQgaXMgYSBzdHJpbmcgdGVsbGluZyBob3cgdG8gcXVpdCB0 aGUgaGVscCB3aW5kb3cgV0lORE9XLgpPcHRpb25hbCBhcmd1bWVudCBTQ1JPTEwgbm9uLW5pbCBt ZWFucyB0ZWxsIGhvdyB0byBzY3JvbGwgV0lORE9XLgpTQ1JPTEwgZXF1YWwgYG90aGVyJyBtZWFu cyB0ZWxsIGhvdyB0byBzY3JvbGwgdGhlIFwib3RoZXJcIgp3aW5kb3cuIgogIChsZXQgKChzY3Jv bGwtcGFydAoJIChjb25kCgkgIDs7IElmIHdlIGRvbid0IGhhdmUgUVVJVC1QQVJUIHdlIHByb2Jh Ymx5IHJldXNlIGEgd2luZG93CgkgIDs7IHNob3dpbmcgdGhlIHNhbWUgYnVmZmVyIHNvIHdlIGRv bid0IHNob3cgYW55IG1lc3NhZ2UuCgkgICgobm90IHF1aXQtcGFydCkgbmlsKQoJICAoKHBvcy12 aXNpYmxlLWluLXdpbmRvdy1wCgkgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHdpbmRvdy1idWZm ZXIgd2luZG93KQoJICAgICAgKHBvaW50LW1heCkpIHdpbmRvdyB0KQoJICAgOzsgQnVmZmVyIGVu ZCBpcyBhdCBsZWFzdCBwYXJ0aWFsbHkgdmlzaWJsZSwgbm8gbmVlZCB0byB0YWxrCgkgICA7OyBh Ym91dCBzY3JvbGxpbmcuCgkgICAiLiIpCgkgICgoZXEgc2Nyb2xsICdvdGhlcikKCSAgICIsIFxc W3Njcm9sbC1vdGhlci13aW5kb3ddIHRvIHNjcm9sbCBoZWxwLiIpCgkgIChzY3JvbGwgIiwgXFxb c2Nyb2xsLXVwXSB0byBzY3JvbGwgaGVscC4iKSkpKQogICAgKG1lc3NhZ2UgIiVzIgogICAgIChz dWJzdGl0dXRlLWNvbW1hbmQta2V5cyAoY29uY2F0IHF1aXQtcGFydCBzY3JvbGwtcGFydCkpKSkp CgooZGVmdW4gaGVscC13aW5kb3ctc2V0dXAgKHdpbmRvdyAmb3B0aW9uYWwgdmFsdWUpCiAgIlNl dCB1cCBoZWxwIHdpbmRvdyBXSU5ET1cgZm9yIGB3aXRoLWhlbHAtd2luZG93Jy4KV0lORE9XIGlz IHRoZSB3aW5kb3cgdXNlZCBmb3IgZGlzcGxheWluZyB0aGUgaGVscCBidWZmZXIuClJldHVybiBW QUxVRS4iCiAgKGxldCogKChoZWxwLWJ1ZmZlciAod2hlbiAod2luZG93LWxpdmUtcCB3aW5kb3cp CgkJCSh3aW5kb3ctYnVmZmVyIHdpbmRvdykpKQoJIChoZWxwLXNldHVwICh3aGVuICh3aW5kb3ct bGl2ZS1wIHdpbmRvdykKCQkgICAgICAgKGNhciAod2luZG93LXBhcmFtZXRlciB3aW5kb3cgJ3F1 aXQtcmVzdG9yZSkpKSkKCSAoZnJhbWUgKHdpbmRvdy1mcmFtZSB3aW5kb3cpKSkKCiAgICAod2hl biBoZWxwLWJ1ZmZlcgogICAgICA7OyBIYW5kbGUgYGhlbHAtd2luZG93LXBvaW50LW1hcmtlcicu CiAgICAgICh3aGVuIChlcSAobWFya2VyLWJ1ZmZlciBoZWxwLXdpbmRvdy1wb2ludC1tYXJrZXIp IGhlbHAtYnVmZmVyKQoJKHNldC13aW5kb3ctcG9pbnQgd2luZG93IGhlbHAtd2luZG93LXBvaW50 LW1hcmtlcikKCTs7IFJlc2V0IGBoZWxwLXdpbmRvdy1wb2ludC1tYXJrZXInLgoJKHNldC1tYXJr ZXIgaGVscC13aW5kb3ctcG9pbnQtbWFya2VyIG5pbCkpCgogICAgICA7OyBJZiB0aGUgaGVscCB3 aW5kb3cgYXBwZWFycyBvbiBhbm90aGVyIGZyYW1lLCBzZWxlY3QgaXQgaWYKICAgICAgOzsgYGhl bHAtd2luZG93LXNlbGVjdCcgaXMgbm9uLW5pbCBhbmQgZ2l2ZSB0aGF0IGZyYW1lIGlucHV0IGZv Y3VzCiAgICAgIDs7IHRvby4gIFNlZSBhbHNvIEJ1ZyMxOTAxMi4KICAgICAgKHdoZW4gKGFuZCBo ZWxwLXdpbmRvdy1zZWxlY3QKCQkgKGZyYW1lLWxpdmUtcCBoZWxwLXdpbmRvdy1vbGQtZnJhbWUp CgkJIChub3QgKGVxIGZyYW1lIGhlbHAtd2luZG93LW9sZC1mcmFtZSkpKQoJKHNlbGVjdC13aW5k b3cgd2luZG93KQoJKHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQtZm9jdXMgZnJhbWUpKQoKICAgICAg KGNvbmQKICAgICAgICgob3IgKGVxIHdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkKCSAgICA7OyBJ ZiB0aGUgaGVscCB3aW5kb3cgaXMgb24gdGhlIHNlbGVjdGVkIGZyYW1lLCBzZWxlY3QKCSAgICA7 OyBpdCBpZiBgaGVscC13aW5kb3ctc2VsZWN0JyBpcyB0IG9yIGBoZWxwLXdpbmRvdy1zZWxlY3Qn CgkgICAgOzsgaXMgJ290aGVyLCB0aGUgZnJhbWUgY29udGFpbnMgYXQgbGVhc3QgdGhyZWUgd2lu ZG93cywgYW5kCgkgICAgOzsgdGhlIGhlbHAgd2luZG93IGRpZCBzaG93IGFub3RoZXIgYnVmZmVy IGJlZm9yZS4gIFNlZSBhbHNvCgkgICAgOzsgQnVnIzExMDM5LgoJICAgIChhbmQgKGVxIGZyYW1l IChzZWxlY3RlZC1mcmFtZSkpCgkJIChvciAoZXEgaGVscC13aW5kb3ctc2VsZWN0IHQpCgkJICAg ICAoYW5kIChlcSBoZWxwLXdpbmRvdy1zZWxlY3QgJ290aGVyKQoJCQkgICg+IChsZW5ndGggKHdp bmRvdy1saXN0IG5pbCAnbm8tbWluaSkpIDIpCgkJCSAgKG5vdCAoZXEgaGVscC1zZXR1cCAnc2Ft ZSkpKSkKCQkgKHNlbGVjdC13aW5kb3cgd2luZG93KSkpCgk7OyBUaGUgaGVscCB3aW5kb3cgaXMg b3IgZ2V0cyBzZWxlY3RlZCAuLi4KCShoZWxwLXdpbmRvdy1kaXNwbGF5LW1lc3NhZ2UKCSAoY29u ZAoJICAoKGVxIGhlbHAtc2V0dXAgJ3dpbmRvdykKCSAgIDs7IC4uLiBhbmQgaXMgbmV3LCAuLi4K CSAgICJUeXBlIFwicVwiIHRvIGRlbGV0ZSBoZWxwIHdpbmRvdyIpCgkgICgoZXEgaGVscC1zZXR1 cCAnZnJhbWUpCgkgICA7OyAuLi4gb24gYSBuZXcgZnJhbWUsIC4uLgoJICAgIlR5cGUgXCJxXCIg dG8gcXVpdCB0aGUgaGVscCBmcmFtZSIpCgkgICgoZXEgaGVscC1zZXR1cCAnb3RoZXIpCgkgICA7 OyAuLi4gb3IgZGlzcGxheWVkIHNvbWUgb3RoZXIgYnVmZmVyIGJlZm9yZS4KCSAgICJUeXBlIFwi cVwiIHRvIHJlc3RvcmUgcHJldmlvdXMgYnVmZmVyIikpCgkgd2luZG93IHQpKQogICAgICAgKChh bmQgKGVxICh3aW5kb3ctZnJhbWUgd2luZG93KSBoZWxwLXdpbmRvdy1vbGQtZnJhbWUpCgkgICAg ICg9IChsZW5ndGggKHdpbmRvdy1saXN0IG5pbCAnbm8tbWluaSkpIDIpKQoJOzsgVGhlcmUgYXJl IHR3byB3aW5kb3dzIG9uIHRoZSBoZWxwIHdpbmRvdydzIGZyYW1lIGFuZCB0aGUKCTs7IG90aGVy IG9uZSBpcyB0aGUgc2VsZWN0ZWQgb25lLgoJKGhlbHAtd2luZG93LWRpc3BsYXktbWVzc2FnZQoJ IChjb25kCgkgICgoZXEgaGVscC1zZXR1cCAnd2luZG93KQoJICAgIlR5cGUgXFxbZGVsZXRlLW90 aGVyLXdpbmRvd3NdIHRvIGRlbGV0ZSB0aGUgaGVscCB3aW5kb3ciKQoJICAoKGVxIGhlbHAtc2V0 dXAgJ290aGVyKQoJICAgIlR5cGUgXCJxXCIgaW4gaGVscCB3aW5kb3cgdG8gcmVzdG9yZSBpdHMg cHJldmlvdXMgYnVmZmVyIikpCgkgd2luZG93ICdvdGhlcikpCiAgICAgICAodAoJOzsgVGhlIGhl bHAgd2luZG93IGlzIG5vdCBzZWxlY3RlZCAuLi4KCShoZWxwLXdpbmRvdy1kaXNwbGF5LW1lc3Nh Z2UKCSAoY29uZAoJICAoKGVxIGhlbHAtc2V0dXAgJ3dpbmRvdykKCSAgIDs7IC4uLiBhbmQgaXMg bmV3LCAuLi4KCSAgICJUeXBlIFwicVwiIGluIGhlbHAgd2luZG93IHRvIGRlbGV0ZSBpdCIpCgkg ICgoZXEgaGVscC1zZXR1cCAnb3RoZXIpCgkgICA7OyAuLi4gb3IgZGlzcGxheWVkIHNvbWUgb3Ro ZXIgYnVmZmVyIGJlZm9yZS4KCSAgICJUeXBlIFwicVwiIGluIGhlbHAgd2luZG93IHRvIHJlc3Rv cmUgcHJldmlvdXMgYnVmZmVyIikpCgkgd2luZG93KSkpKQogICAgOzsgUmV0dXJuIFZBTFVFLgog ICAgdmFsdWUpKQoKOzsgYHdpdGgtaGVscC13aW5kb3cnIGlzIGEgd3JhcHBlciBmb3IgYHdpdGgt dGVtcC1idWZmZXItd2luZG93Jwo7OyBwcm92aWRpbmcgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFs IHR3aXN0czoKCjs7ICgxKSBJdCBwdXRzIHRoZSBidWZmZXIgaW4gYGhlbHAtbW9kZScgKHZpYSBg aGVscC1tb2RlLXNldHVwJykgYW5kCjs7ICAgICBhZGRzIGNyb3NzIHJlZmVyZW5jZXMgKHZpYSBg aGVscC1tb2RlLWZpbmlzaCcpLgoKOzsgKDIpIEl0IGlzc3VlcyBhIG1lc3NhZ2UgdGVsbGluZyBo b3cgdG8gc2Nyb2xsIGFuZCBxdWl0IHRoZSBoZWxwCjs7ICAgICB3aW5kb3cgKHZpYSBgaGVscC13 aW5kb3ctc2V0dXAnKS4KCjs7ICgzKSBBbiBvcHRpb24gKGN1c3RvbWl6YWJsZSB2aWEgYGhlbHAt d2luZG93LXNlbGVjdCcpIHRvIHNlbGVjdCB0aGUKOzsgICAgIGhlbHAgd2luZG93IGF1dG9tYXRp Y2FsbHkuCgo7OyAoNCkgQSBtYXJrZXIgKGBoZWxwLXdpbmRvdy1wb2ludC1tYXJrZXInKSB0byBt b3ZlIHBvaW50IGluIHRoZSBoZWxwCjs7ICAgICB3aW5kb3cgdG8gYW4gYXJiaXRyYXJ5IGJ1ZmZl ciBwb3NpdGlvbi4KKGRlZm1hY3JvIHdpdGgtaGVscC13aW5kb3cgKGJ1ZmZlci1uYW1lICZyZXN0 IGJvZHkpCiAgIkRpc3BsYXkgYnVmZmVyIG5hbWVkIEJVRkZFUi1OQU1FIGluIGEgaGVscCB3aW5k b3cuCkV2YWx1YXRlIHRoZSBmb3JtcyBpbiBCT0RZIHdpdGggc3RhbmRhcmQgb3V0cHV0IGJvdW5k IHRvIGEgYnVmZmVyCmNhbGxlZCBCVUZGRVItTkFNRSAoY3JlYXRpbmcgaXQgaWYgaXQgZG9lcyBu b3QgZXhpc3QpLCBwdXQgdGhhdApidWZmZXIgaW4gYGhlbHAtbW9kZScsIGRpc3BsYXkgdGhlIGJ1 ZmZlciBpbiBhIHdpbmRvdyAoc2VlCmB3aXRoLXRlbXAtYnVmZmVyLXdpbmRvdycgZm9yIGRldGFp bHMpIGFuZCBpc3N1ZSBhIG1lc3NhZ2UgaG93IHRvCmRlYWwgd2l0aCB0aGF0IFwiaGVscFwiIHdp bmRvdyB3aGVuIGl0J3Mgbm8gbW9yZSBuZWVkZWQuICBTZWxlY3QKdGhlIGhlbHAgd2luZG93IGlm IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSB1c2VyIG9wdGlvbgpgaGVscC13aW5kb3ctc2VsZWN0 JyBzYXlzIHNvLiAgUmV0dXJuIGxhc3QgdmFsdWUgaW4gQk9EWS4iCiAgKGRlY2xhcmUgKGluZGVu dCAxKSAoZGVidWcgdCkpCiAgYChwcm9nbgogICAgIDs7IE1ha2UgYGhlbHAtd2luZG93LXBvaW50 LW1hcmtlcicgcG9pbnQgbm93aGVyZS4gIFRoZSBvbmx5IHBsYWNlCiAgICAgOzsgd2hlcmUgdGhp cyBzaG91bGQgYmUgc2V0IHRvIGEgYnVmZmVyIHBvc2l0aW9uIGlzIHdpdGhpbiBCT0RZLgogICAg IChzZXQtbWFya2VyIGhlbHAtd2luZG93LXBvaW50LW1hcmtlciBuaWwpCiAgICAgKGxldCAoKHRl bXAtYnVmZmVyLXdpbmRvdy1zZXR1cC1ob29rCgkgICAgKGNvbnMgJ2hlbHAtbW9kZS1zZXR1cCB0 ZW1wLWJ1ZmZlci13aW5kb3ctc2V0dXAtaG9vaykpCgkgICAodGVtcC1idWZmZXItd2luZG93LXNo b3ctaG9vawoJICAgIChjb25zICdoZWxwLW1vZGUtZmluaXNoIHRlbXAtYnVmZmVyLXdpbmRvdy1z aG93LWhvb2spKSkKICAgICAgIChzZXRxIGhlbHAtd2luZG93LW9sZC1mcmFtZSAoc2VsZWN0ZWQt ZnJhbWUpKQogICAgICAgKHdpdGgtdGVtcC1idWZmZXItd2luZG93CgksYnVmZmVyLW5hbWUgbmls ICdoZWxwLXdpbmRvdy1zZXR1cCAocHJvZ24gLEBib2R5KSkpKSkKCjs7IENhbGxlZCBmcm9tIEMs IG9uIGVuY291bnRlcmluZyBgaGVscC1jaGFyJyB3aGVuIHJlYWRpbmcgYSBjaGFyLgo7OyBEb24n dCBwcmludCB0byAqSGVscCo7IHRoYXQgd291bGQgY2xvYmJlciBIZWxwIGhpc3RvcnkuCihkZWZ1 biBoZWxwLWZvcm0tc2hvdyAoKQogICJEaXNwbGF5IHRoZSBvdXRwdXQgb2YgYSBub24tbmlsIGBo ZWxwLWZvcm0nLiIKICAobGV0ICgobXNnIChldmFsIGhlbHAtZm9ybSkpKQogICAgKGlmIChzdHJp bmdwIG1zZykKCSh3aXRoLW91dHB1dC10by10ZW1wLWJ1ZmZlciAiICpDaGFyIEhlbHAqIgoJICAo cHJpbmMgbXNnKSkpKSkKCgwKKGRlZnVuIGhlbHAtLWRvY3N0cmluZy1xdW90ZSAoc3RyaW5nKQog ICJSZXR1cm4gYSBkb2Mgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyBTVFJJTkcuClRoZSByZXN1bHQs IHdoZW4gZm9ybWF0dGVkIGJ5IGBzdWJzdGl0dXRlLWNvbW1hbmQta2V5cycsIHNob3VsZCBlcXVh bCBTVFJJTkcuIgogIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlsnXFxg4oCY4oCZXSIgIlxc XFw9XFwmIiBzdHJpbmcpKQoKOzsgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdXNlZCB0byBiZSBp biBoZWxwLWZucy5lbCwgd2hpY2ggaXMgbm90IHByZWxvYWRlZC4KOzsgQnV0IGZvciB2YXJpb3Vz IHJlYXNvbnMsIHRoZXkgYXJlIG1vcmUgd2lkZWx5IG5lZWRlZCwgc28gdGhleSB3ZXJlCjs7IG1v dmVkIHRvIHRoaXMgZmlsZSwgd2hpY2ggaXMgcHJlbG9hZGVkLiAgaHR0cHM6Ly9kZWJidWdzLmdu dS5vcmcvMTcwMDEKCihkZWZ1biBoZWxwLXNwbGl0LWZ1bmRvYyAoZG9jc3RyaW5nIGRlZikKICAi U3BsaXQgYSBmdW5jdGlvbiBET0NTVFJJTkcgaW50byB0aGUgYWN0dWFsIGRvYyBhbmQgdGhlIHVz YWdlIGluZm8uClJldHVybiAoVVNBR0UgLiBET0MpIG9yIG5pbCBpZiB0aGVyZSdzIG5vIHVzYWdl IGluZm8sIHdoZXJlIFVTQUdFIGluZm8KaXMgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgYXJndW1l bnQgbGlzdCBvZiBERUYsIHN1Y2ggYXMKXCIoYXBwbHkgRlVOQ1RJT04gJnJlc3QgQVJHVU1FTlRT KVwiLgpERUYgaXMgdGhlIGZ1bmN0aW9uIHdob3NlIHVzYWdlIHdlJ3JlIGxvb2tpbmcgZm9yIGlu IERPQ1NUUklORy4iCiAgOzsgRnVuY3Rpb25zIGNhbiBnZXQgdGhlIGNhbGxpbmcgc2VxdWVuY2Ug YXQgdGhlIGVuZCBvZiB0aGUgZG9jIHN0cmluZy4KICA7OyBJbiBjYXNlcyB3aGVyZSBgZnVuY3Rp b24nIGhhcyBiZWVuIGZzZXQgdG8gYSBzdWJyIHdlIGNhbid0IHNlYXJjaCBmb3IKICA7OyBmdW5j dGlvbidzIG5hbWUgaW4gdGhlIGRvYyBzdHJpbmcgc28gd2UgdXNlIGBmbicgYXMgdGhlIGFub255 bW91cwogIDs7IGZ1bmN0aW9uIG5hbWUgaW5zdGVhZC4KICAod2hlbiAoYW5kIGRvY3N0cmluZyAo c3RyaW5nLW1hdGNoICJcblxuKGZuXFwoXFwoIC4qXFwpPylcXClcXCciIGRvY3N0cmluZykpCiAg ICAobGV0ICgoZG9jICh1bmxlc3MgKHplcm9wIChtYXRjaC1iZWdpbm5pbmcgMCkpCgkJIChzdWJz dHJpbmcgZG9jc3RyaW5nIDAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQoJICAodXNhZ2UtdGFpbCAo bWF0Y2gtc3RyaW5nIDEgZG9jc3RyaW5nKSkpCiAgICAgIChjb25zIChmb3JtYXQgIiglcyVzIgoJ CSAgICA7OyBSZXBsYWNlIGBmbicgd2l0aCB0aGUgYWN0dWFsIGZ1bmN0aW9uIG5hbWUuCgkJICAg IChpZiAoc3ltYm9scCBkZWYpCgkJCShoZWxwLS1kb2NzdHJpbmctcXVvdGUgKGZvcm1hdCAiJVMi IGRlZikpCgkJICAgICAgJ2Fub255bW91cykKCQkgICAgdXNhZ2UtdGFpbCkKCSAgICBkb2MpKSkp CgooZGVmdW4gaGVscC1hZGQtZnVuZG9jLXVzYWdlIChkb2NzdHJpbmcgYXJnbGlzdCkKICAiQWRk IHRoZSB1c2FnZSBpbmZvIHRvIERPQ1NUUklORy4KSWYgRE9DU1RSSU5HIGFscmVhZHkgaGFzIGEg dXNhZ2UgaW5mbywgdGhlbiBqdXN0IHJldHVybiBpdCB1bmNoYW5nZWQuClRoZSB1c2FnZSBpbmZv IGlzIGJ1aWx0IGZyb20gQVJHTElTVC4gIERPQ1NUUklORyBjYW4gYmUgbmlsLgpBUkdMSVNUIGNh biBhbHNvIGJlIHQgb3IgYSBzdHJpbmcgb2YgdGhlIGZvcm0gXCIoRlVOIEFSRzEgQVJHMiAuLi4p XCIuIgogICh1bmxlc3MgKHN0cmluZ3AgZG9jc3RyaW5nKSAoc2V0cSBkb2NzdHJpbmcgIiIpKQog IChpZiAob3IgKHN0cmluZy1tYXRjaCAiXG5cbihmblxcKFxcKCAuKlxcKT8pXFwpXFwnIiBkb2Nz dHJpbmcpCiAgICAgICAgICAoZXEgYXJnbGlzdCB0KSkKICAgICAgZG9jc3RyaW5nCiAgICAoY29u Y2F0IGRvY3N0cmluZwoJICAgIChpZiAoc3RyaW5nLW1hdGNoICJcbj9cblxcJyIgZG9jc3RyaW5n KQoJCShpZiAoPCAoLSAobWF0Y2gtZW5kIDApIChtYXRjaC1iZWdpbm5pbmcgMCkpIDIpICJcbiIg IiIpCgkgICAgICAiXG5cbiIpCgkgICAgKGlmIChzdHJpbmdwIGFyZ2xpc3QpCiAgICAgICAgICAg ICAgICAoaWYgKHN0cmluZy1tYXRjaCAiXFxgW14gXStcXCguKlxcKSlcXCciIGFyZ2xpc3QpCiAg ICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiKGZuIiAobWF0Y2gtc3RyaW5nIDEgYXJnbGlzdCkg IikiKQogICAgICAgICAgICAgICAgICAoZXJyb3IgIlVucmVjb2duaXplZCB1c2FnZSBmb3JtYXQi KSkKCSAgICAgIChoZWxwLS1tYWtlLXVzYWdlLWRvY3N0cmluZyAnZm4gYXJnbGlzdCkpKSkpCgoo ZGVmdW4gaGVscC1mdW5jdGlvbi1hcmdsaXN0IChkZWYgJm9wdGlvbmFsIHByZXNlcnZlLW5hbWVz KQogICJSZXR1cm4gYSBmb3JtYWwgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGZ1bmN0aW9uIERFRi4K SWYgUFJFU0VSVkUtTkFNRVMgaXMgbm9uLW5pbCwgcmV0dXJuIGEgZm9ybWFsIGFyZ2xpc3QgdGhh dCB1c2VzCnRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2Rl LCB3aGVuIHBvc3NpYmxlLiIKICA7OyBIYW5kbGUgc3ltYm9scyBhbGlhc2VkIHRvIG90aGVyIHN5 bWJvbHMuCiAgKGlmIChhbmQgKHN5bWJvbHAgZGVmKSAoZmJvdW5kcCBkZWYpKSAoc2V0cSBkZWYg KGluZGlyZWN0LWZ1bmN0aW9uIGRlZikpKQogIDs7IEFkdmljZSB3cmFwcGVycyBoYXZlICJjYXRj aCBhbGwiIGFyZ3MsIHNvIGZldGNoIHRoZSBhY3R1YWwgdW5kZXJseWluZwogIDs7IGZ1bmN0aW9u IHRvIGZpbmQgdGhlIHJlYWwgYXJndW1lbnRzLgogICh3aGlsZSAoYWR2aWNlLS1wIGRlZikgKHNl dHEgZGVmIChhZHZpY2UtLWNkciBkZWYpKSkKICA7OyBJZiBkZWZpbml0aW9uIGlzIGEgbWFjcm8s IGZpbmQgdGhlIGZ1bmN0aW9uIGluc2lkZSBpdC4KICAoaWYgKGVxIChjYXItc2FmZSBkZWYpICdt YWNybykgKHNldHEgZGVmIChjZHIgZGVmKSkpCiAgKGNvbmQKICAgKChhbmQgKGJ5dGUtY29kZS1m dW5jdGlvbi1wIGRlZikgKGxpc3RwIChhcmVmIGRlZiAwKSkpIChhcmVmIGRlZiAwKSkKICAgKChl cSAoY2FyLXNhZmUgZGVmKSAnbGFtYmRhKSAobnRoIDEgZGVmKSkKICAgKChlcSAoY2FyLXNhZmUg ZGVmKSAnY2xvc3VyZSkgKG50aCAyIGRlZikpCiAgICgob3IgKGFuZCAoYnl0ZS1jb2RlLWZ1bmN0 aW9uLXAgZGVmKSAoaW50ZWdlcnAgKGFyZWYgZGVmIDApKSkKICAgICAgICAoc3VicnAgZGVmKSAo bW9kdWxlLWZ1bmN0aW9uLXAgZGVmKSkKICAgIChvciAod2hlbiBwcmVzZXJ2ZS1uYW1lcwogICAg ICAgICAgKGxldCogKChkb2MgKGNvbmRpdGlvbi1jYXNlIG5pbCAoZG9jdW1lbnRhdGlvbiBkZWYp IChlcnJvciBuaWwpKSkKICAgICAgICAgICAgICAgICAoZG9jYXJncyAoaWYgZG9jIChjYXIgKGhl bHAtc3BsaXQtZnVuZG9jIGRvYyBuaWwpKSkpCiAgICAgICAgICAgICAgICAgKGFyZ2xpc3QgKGlm IGRvY2FyZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkYXIgKHJlYWQtZnJvbS1z dHJpbmcgKGRvd25jYXNlIGRvY2FyZ3MpKSkpKQogICAgICAgICAgICAgICAgICh2YWxpZCB0KSkK ICAgICAgICAgICAgOzsgQ2hlY2sgdmFsaWRpdHkuCiAgICAgICAgICAgIChkb2xpc3QgKGFyZyBh cmdsaXN0KQogICAgICAgICAgICAgICh1bmxlc3MgKGFuZCAoc3ltYm9scCBhcmcpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKChuYW1lIChzeW1ib2wtbmFtZSBhcmcpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxIChhcmVmIG5hbWUgMCkgPyYpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1xIGFyZyAnKCZyZXN0ICZvcHRpb25hbCkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChzdHJpbmctbWF0Y2ggIlxcLiIgbmFt ZSkpKSkpCiAgICAgICAgICAgICAgICAoc2V0cSB2YWxpZCBuaWwpKSkKICAgICAgICAgICAgKHdo ZW4gdmFsaWQgYXJnbGlzdCkpKQogICAgICAgIChsZXQqICgoYXJpdHkgKGZ1bmMtYXJpdHkgZGVm KSkKICAgICAgICAgICAgICAgKG1heCAoY2RyIGFyaXR5KSkKICAgICAgICAgICAgICAgKG1pbiAo Y2FyIGFyaXR5KSkKICAgICAgICAgICAgICAgKGFyZ2xpc3QgKCkpKQogICAgICAgICAgKGRvdGlt ZXMgKGkgbWluKQogICAgICAgICAgICAocHVzaCAoaW50ZXJuIChjb25jYXQgImFyZyIgKG51bWJl ci10by1zdHJpbmcgKDErIGkpKSkpIGFyZ2xpc3QpKQogICAgICAgICAgKHdoZW4gKGFuZCAoaW50 ZWdlcnAgbWF4KSAoPiBtYXggbWluKSkKICAgICAgICAgICAgKHB1c2ggJyZvcHRpb25hbCBhcmds aXN0KQogICAgICAgICAgICAoZG90aW1lcyAoaSAoLSBtYXggbWluKSkKICAgICAgICAgICAgICAo cHVzaCAoaW50ZXJuIChjb25jYXQgImFyZyIgKG51bWJlci10by1zdHJpbmcgKCsgMSBpIG1pbikp KSkKICAgICAgICAgICAgICAgICAgICBhcmdsaXN0KSkpCiAgICAgICAgICAodW5sZXNzIChpbnRl Z2VycCBtYXgpIChwdXNoICcmcmVzdCBhcmdsaXN0KSAocHVzaCAncmVzdCBhcmdsaXN0KSkKICAg ICAgICAgIChucmV2ZXJzZSBhcmdsaXN0KSkpKQogICAoKGFuZCAoYXV0b2xvYWRwIGRlZikgKG5v dCAoZXEgKG50aCA0IGRlZikgJ2tleW1hcCkpKQogICAgIltBcmcgbGlzdCBub3QgYXZhaWxhYmxl IHVudGlsIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgbG9hZGVkLl0iKQogICAodCB0KSkpCgooZGVm dW4gaGVscC0tbWFrZS11c2FnZSAoZnVuY3Rpb24gYXJnbGlzdCkKICAoY29ucyAoaWYgKHN5bWJv bHAgZnVuY3Rpb24pIGZ1bmN0aW9uICdhbm9ueW1vdXMpCgkobWFwY2FyIChsYW1iZGEgKGFyZykK CQkgIChpZiAobm90IChzeW1ib2xwIGFyZykpIGFyZwoJCSAgICAobGV0ICgobmFtZSAoc3ltYm9s LW5hbWUgYXJnKSkpCgkJICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmlu Zy1tYXRjaCAiXFxgJiIgbmFtZSkgYXJnKQogICAgICAgICAgICAgICAgICAgICAgICgoc3RyaW5n LW1hdGNoICJcXGBfLiIgbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgKGludGVybiAodXBj YXNlIChzdWJzdHJpbmcgbmFtZSAxKSkpKQogICAgICAgICAgICAgICAgICAgICAgICh0IChpbnRl cm4gKHVwY2FzZSBuYW1lKSkpKSkpKQoJCWFyZ2xpc3QpKSkKCihkZWZpbmUtb2Jzb2xldGUtZnVu Y3Rpb24tYWxpYXMgJ2hlbHAtbWFrZS11c2FnZSAnaGVscC0tbWFrZS11c2FnZSAiMjUuMSIpCgoo ZGVmdW4gaGVscC0tbWFrZS11c2FnZS1kb2NzdHJpbmcgKGZuIGFyZ2xpc3QpCiAgKGxldCAoKHBy aW50LWVzY2FwZS1uZXdsaW5lcyB0KSkKICAgIChoZWxwLS1kb2NzdHJpbmctcXVvdGUgKGZvcm1h dCAiJVMiIChoZWxwLS1tYWtlLXVzYWdlIGZuIGFyZ2xpc3QpKSkpKQoKDAoocHJvdmlkZSAnaGVs cCkKCjs7OyBoZWxwLmVsIGVuZHMgaGVyZQo= --_006_DB6PR0902MB210116C5A09C1CF0598EC621A4D10DB6PR0902MB2101_-- From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 14 11:34:12 2018 Received: (at control) by debbugs.gnu.org; 14 Mar 2018 15:34:12 +0000 Received: from localhost ([127.0.0.1]:33451 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ew8Ps-0006uu-Ju for submit@debbugs.gnu.org; Wed, 14 Mar 2018 11:34:12 -0400 Received: from eggs.gnu.org ([208.118.235.92]:44007) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ew8Pr-0006uc-5h for control@debbugs.gnu.org; Wed, 14 Mar 2018 11:34:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ew8Pi-0006Kv-9R for control@debbugs.gnu.org; Wed, 14 Mar 2018 11:34:06 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55904) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ew8Pi-0006Kn-58 for control@debbugs.gnu.org; Wed, 14 Mar 2018 11:34:02 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1ew8Ph-0000o7-Tq for control@debbugs.gnu.org; Wed, 14 Mar 2018 11:34:02 -0400 Subject: control message for bug 30819 To: X-Mailer: mail (GNU Mailutils 2.99.98) Message-Id: From: Glenn Morris Date: Wed, 14 Mar 2018 11:34:01 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) forcemerge 19655 30819 From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 15 04:21:30 2018 Received: (at 30819) by debbugs.gnu.org; 15 Mar 2018 08:21:30 +0000 Received: from localhost ([127.0.0.1]:34000 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ewO8g-0007X1-BT for submit@debbugs.gnu.org; Thu, 15 Mar 2018 04:21:30 -0400 Received: from mout.gmx.net ([212.227.15.18]:52587) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ewO8e-0007Wo-ND for 30819@debbugs.gnu.org; Thu, 15 Mar 2018 04:21:29 -0400 Received: from [192.168.1.100] ([213.162.73.147]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0LZynd-1eDejn0mar-00liAa; Thu, 15 Mar 2018 09:21:22 +0100 Message-ID: <5AAA2CF8.3090001@gmx.at> Date: Thu, 15 Mar 2018 09:21:12 +0100 From: martin rudalics MIME-Version: 1.0 To: Simona Arizanova , 30819@debbugs.gnu.org Subject: Re: bug#30819: [Bug #19655] Patches for GNU Emacs References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:B+VWqeO+BLQU8IIu4hoBonUq5eqLUMtL+8i0hrWl9aHxHE6hvAv 2WVDQB6k4kg2UJw438xjVYFmZc5IC5UJRFcw0j5ffM7MSjXlUUZm+zgPK1r5LN2q89e8U4k JzEElXbi+hMKsRrZfWYvGkrhIwbixyuSwPHkwRk42Yl12GKJCbsOMWhwTo0a6IeQ6FtkPC+ Pp05PFmG0o6oiEaArosWw== X-UI-Out-Filterresults: notjunk:1;V01:K0:kDmH/th7uY8=:uzxLvC9O5r1+kmhIML4vYH WdTS+dsmTTLxoAssyKU4iKTfdScVGDEiD1EC4sOK6u55UvxYspr7/GIk8xyv2tGmSyvILGmEY kCvExvOx9sDMWy/wWlqx5ibQVY0HZA1eWLThN3xi7VbclqwjUN6TnjGNsO7he1gc+uYwRRwnP HZPTbwh40yL9zjQiV8795BNacMdCi9XlnQIGbtnahncaC2gX+9Ouv3YJDBrwWw6J7t3X/s2O5 2+TSPknxDCm0Ri146DUjERvyGGNl3R8Eg3UL0VnMF/qR9pf45VvsPhJ4KgzwLn/JX9+ephexr sDfrhMb4jyVfdt6MP17f1htju9/hEmc7Dhewv7HiJfTOmQLtT9Rvd71p+R37GijEq8IBbXdpl dj9Ea6PIipcdTjAF+MSXkaS1nd8RyVr2xRqI1ojz60LKwrbgWX5PGvnGBPIH/oAzAMJfZSbZ+ LKonwk6Judhq8hoFW2OFTYVjoKVp52L3/3SKskPIWUkqQ2wdE6cec8p3O8bSaS0i/UAXuJydy qrFyxfPgyeVaQmlX/lFErxSQTCbcC/OAIOcJml1HSICUDL0Pq4CeHR9b36XF74JeL/hSeXCen EX5P3G1mNpUmTDkIiZUqdg7mmAlhYzB2It8vuGtaxJMbFRpoXMMob8zwii/CuYw421Rcm+g6L 8DFL/sj90/5LHNkXxf6b4LOCeB8Bvb4e22woTyk8mC8O+Ll7S7iXDI3sYnxx55vkmFfYJEtCg wXXDNbhVyILS8NPRIYH1G2C0POUjQlKrbXd/0u4tmRwlXKsTIm3rgEhaB/5s8RlnJmiRahqJU /6tNwFoiKhgG/svCngAN4IQb3X6nz2bRCF0GRxSmVDOfwlmaE3z9mFzS+HfpqCeia+7WJjw X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 30819 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) > The function search-forward-help-for-help in the help.el allows to > reasearch in the * Metahelp * window. Thank you for the patch. I think it fixes bug 19655 so it should be applied. martin PS: Please provide diffs in a way so we don't have to apply them in reverse. That is, when invoking diff the old file should be the first and the new file the second argument. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 26 05:01:56 2018 Received: (at 30819) by debbugs.gnu.org; 26 Mar 2018 09:01:56 +0000 Received: from localhost ([127.0.0.1]:53615 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0O0p-0002lK-R8 for submit@debbugs.gnu.org; Mon, 26 Mar 2018 05:01:55 -0400 Received: from mout.gmx.net ([212.227.17.21]:43065) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f0O0n-0002l6-Kb for 30819@debbugs.gnu.org; Mon, 26 Mar 2018 05:01:54 -0400 Received: from [192.168.1.100] ([212.95.5.245]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MRXVc-1f71ow3kaG-00Sh32; Mon, 26 Mar 2018 11:01:46 +0200 Message-ID: <5AB8B6F6.3090908@gmx.at> Date: Mon, 26 Mar 2018 11:01:42 +0200 From: martin rudalics MIME-Version: 1.0 To: Simona Arizanova , 30819@debbugs.gnu.org Subject: Re: bug#30819: [Bug #19655] Patches for GNU Emacs References: , <5AAA2CF8.3090001@gmx.at> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:OgKNLSjNhPmqd2axhDJklDDFO+Sw1jPvhjlrJZK3w9uceVKh4IV V9PHHE/5rkmiRpDu3wVwaBpR9m8ngX3U+Xe9vO8xUMlZCAGkMAwpJC/Yrzz4cnz1yTu3cpP TjfjzcpnKUGJS4x0y7A6BW87Gk+7F08iNmrpUPFQu8vbKmYxWUxXJX/QZCq6Uyt6mJsrvB0 WAwCvCgXtXgYip4yjBeiw== X-UI-Out-Filterresults: notjunk:1;V01:K0:9lmIVMPP4Ko=:an0SQ7d3Q8QqBXKPusPNwH HgOepXWDnjnBMkrfBEyH5RAQAoe3Udvp/BpP4841OMIBCNOV078uVtlXGxR8nYWv5y6xzTW34 0ejhxd0VCve49jL2kAf480i4RmaYq+uaCIYFpTBOQVysDQOrqwWn7+dzkZIoO0vt1oXYn/OWJ 10aBsdUtk83ozvpPjT82yd+jwR5HZ46WJY3rqn/x8RSnxscq0V9D0er0+FaXVe2VtCrlQWuXI +MPC1fyLVnDjjL0oMxRBOMO3L180cGgBDHLcIVexHp6Meq73f0E6RhDZwuLEIAr6C+eCU4yqq SriuG3PgMA8Qeu891iCmgobCINvwNosKGQm1cNVMwFmHQoW3/JOVLaKwhBP2veCI+t1Gvv2VN ybwBjN9xvjTbPfKGK8FX8Fa9Rpcjv6QNV6lwYxPpRl05RXXbZuDBk/8/clqsdJQ/st9qtaTrB L/KOl/OejttXOyh5ELmusCkJzQTlF/zPPDBaUU/qVK/FtCOCt3UJlBonOReaqVpmvXLu4hgRH YHi4DzBWBBnur8JBhs7QRO3HQNC6vVXt8hGRubCMa3VZRvcDkpPovDEhQvA6CIo6d5WEHlXfv Cq/B6CrOXxzf/+2K/QESaLu7d4B8rD3Ro/j8LukOwPgAR2nRZQQKk4LzxW5a3hVR4/PK8mycY J+ZUeEYQVhBuInkjJW5jvgkPy8Nqy+rvdZULIV2G1ZFtsRcxt/0A0YIwb7MUJnYT7axU94DFD PX3saVM1Xh/bvoNWU2cngVyN0DcgjBN+MC/KYrjd+6WUKSIPa+X8vOLGpJWadmZzfSrSyZ9jY j8G3CCArgWiFYEhbnkmCPfazZzlwu1T5YJS2yq/sulPo0UyHCC0LOMhoc5d3p4poUGgeOcy X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 30819 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Please always make sure to send a copy to the bug address too. > I'm sorry for the delay. My apologies. I was delayed as well. > Here I joined a text file that contains the diffs in the correct order. Thank you. But we now lost the identification of the file to be patched. Please try to make sure that the beginning of such a patch appears like --- a/lisp/help.el 2018-03-03 15:09:47.652000000 +0100 +++ b/lisp/help.el 2018-03-09 20:14:31.492000000 +0100 A few minor comments below: -(defun search-forward-help-for-help() Please always leave one space between function name and arguments as in: -(defun search-forward-help-for-help () - "Allows to research forward a string into the *Metahelp* window" Please always use active voice for doc-strings and terminate them with a period as: - "Search forward *Metahelp* window." (I think you really mean search and not "re"search forward here.) Maybe we also should simply say "help window" instead of " *Metahelp* window". There is no well established nomenclature for this object and few people have an idea what *Metahelp* stands for (and whether it contains a leading space). - (interactive) - ;;Moves the cursor to the *Metahelp* window Please always leave a space after a comment delimiter and use active voice for comments as well and terminate them with a period as: - ;; Move cursor to the *Metahelp* window. The - ;; Do incremental search forward. below is well written in this regard. - (switch-to-buffer-other-window " *Metahelp*") Can you add a comment that explains why you use 'switch-to-buffer-other-window' (and not, for example, 'pop-to-buffer') here? - (isearch-forward nil 1)) Please always use nil or t for inherently boolean arguments like NO-RECURSIVE-EDIT, so - (isearch-forward nil t)) is preferable here. Also, I assume that you have not signed legal papers for Emacs so we have to mark this as a tiny change. Correct? Thanks again for working on this, martin From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 02 04:54:09 2018 Received: (at 30819-done) by debbugs.gnu.org; 2 Apr 2018 08:54:09 +0000 Received: from localhost ([127.0.0.1]:34693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f2vE9-00064j-6r for submit@debbugs.gnu.org; Mon, 02 Apr 2018 04:54:09 -0400 Received: from mout.gmx.net ([212.227.15.18]:47571) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f2vE7-00064W-GE for 30819-done@debbugs.gnu.org; Mon, 02 Apr 2018 04:54:07 -0400 Received: from [192.168.1.100] ([213.162.73.134]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MAQ0o-1fEQTK2sYc-00BYRV; Mon, 02 Apr 2018 10:54:00 +0200 Message-ID: <5AC1EFA2.6090302@gmx.at> Date: Mon, 02 Apr 2018 10:53:54 +0200 From: martin rudalics MIME-Version: 1.0 To: Simona Arizanova , 30819-done@debbugs.gnu.org Subject: Re: bug#30819: [Bug #19655] Patches for GNU Emacs References: , <5AAA2CF8.3090001@gmx.at> , <5AB8B6F6.3090908@gmx.at> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:nqWQOcn8+t5cTtzLnolm9X9vsVLSdJfKa2l7ShOjuYjnepRoJjP q7pqet00aE1uxitgH7B0augfD8p8znelDR8jkxdCV2EU6Ispvkps50SB6tnuUoy6uaiyIEZ r2UvQjzadHKmhyzBVZjINX/3h39C6baasmczMyUrVLmstQ0IiSzthkgz7cVOtUB5SVDWpN8 +KmlUfU2XuGkAbW/3HtqQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:/rh4qvIljBc=:qzty3Z8XsHvA1bVfPs56zx j3AH8FTD9/K7pB/bUeKwVhZwXuly9DEuSnvolCRLe2el54drz7zPXp9MoNVzd2PTXf9xdS/UF 24XHR5ErPzy0+CzUx5ZltohwDHQrcgQIpbzVKPSuZee79ay/1MYw+zuJJBbgMHoFjCpWSAfAC 88lh2qe8g4FlAFQZgbRHbm+QNSglHHykiIKpFZUyXAkCaOqcpi91vazjiYqVM50ssqimuJSvf QvstyXkWIPbawWlU7f2MNjfjkxVhcMH5Z3vDrFav3HzwpB2CSrZNrvD4AhKB5YnSZ6ru7fheG rRt8aHsVeiwL0zLiJ/Fyy6kF2ZZbKhaFy5UXtCDFfN4aWpnMWJr3LF7/vTR0AmFk6S4w0Mjux b1qCSu8WF5illdWjNYDsIcPtRhiF0wpDwSTivrdX10WXTXKywtdFRc98iKUBu8m9EyeZwsIbl UrQm7TEm8COR4j21IuB0HA16x0y9Rl+fBvzqrvzAyNJypIgTk/DPs/XEFm6Q2mdy7rg1v24KY n9m8O9VeIf9rIAjhSUcmvmrUBADiCgaei4Cxx7avdxu6N6O6ApNGJDcsP+W5Evc8qwwdqMGaH OOU7B+J6tKexdD5UDh5xsWQbEosrbXCa5KZVrEonzujXqhQMBoorTb6gmKWBiTPrXyUZzWzSY 6OnMj1IHvpD3j8IscIjh9vd2mwhNxNObE+n6DXlV73LY+5qf/eIL2rsyU0aeOkzeUea0FZzu7 1P+FlyKKcbD1ujVsYM2VApXZEfRyPToS7dsxGZhatV4VAczozeKaWtNMccMoYNE+7oghxP6pF e81UdSFhDqVr1LPLyo53WZT7QNeHTEcu9ueuIx1GfSwXUWbUSY= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 30819-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Version: 27.1 >> Also, I assume that you have not signed legal papers for Emacs so we > have to mark this as a tiny change. Correct? > > > We had no acknowledge of such papers so yes, mark it as a tiny change. Installed as commit 956c39d11d871d1b6cdf4bc13217e9678d12fd76 on master. Please have a look, for example, at https://git.savannah.gnu.org/cgit/emacs.git/log/ Thank you, martin (trying to close bugs #19655 and #30819 now) From unknown Fri Aug 15 14:45:39 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 30 Apr 2018 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator