From unknown Sun Jun 15 08:31:29 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#70208 <70208@debbugs.gnu.org> To: bug#70208 <70208@debbugs.gnu.org> Subject: Status: [PATCH] Add command `list-keyboard-macros` Reply-To: bug#70208 <70208@debbugs.gnu.org> Date: Sun, 15 Jun 2025 15:31:29 +0000 retitle 70208 [PATCH] Add command `list-keyboard-macros` reassign 70208 emacs submitter 70208 Okamsn severity 70208 normal tag 70208 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 04 23:35:33 2024 Received: (at submit) by debbugs.gnu.org; 5 Apr 2024 03:35:33 +0000 Received: from localhost ([127.0.0.1]:35055 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rsaMS-0002lh-Es for submit@debbugs.gnu.org; Thu, 04 Apr 2024 23:35:33 -0400 Received: from lists.gnu.org ([2001:470:142::17]:38894) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rsaMO-0002lC-T1 for submit@debbugs.gnu.org; Thu, 04 Apr 2024 23:35:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsaME-0003eD-8V for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 23:35:14 -0400 Received: from mail-40134.protonmail.ch ([185.70.40.134]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsaMA-0004uV-I1 for bug-gnu-emacs@gnu.org; Thu, 04 Apr 2024 23:35:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1712288103; x=1712547303; bh=MFdS9sbLbXFeLqLhk0mxPdryXYO067WIVLhPnpT1Eu8=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=u65RwNCtSl+zUygHbaFNovcv4xTItrvsml0BXkpXIwzGdWCNC/uPhSweQqdOxnnKL ROiVi2DSQG3nxbzffY1bJ0qvN4lXK/8kFz/e9dc6wqBpX9F4LdOaWneh0vmLmy6nSQ x8EMgQXTSrEm3VR5HvKFY3u4W3Cg20Zb8tYXSlSNuUheZzbWLlzw9L6l6tV7WTRy3V CwjqEXnXJurxyXPXZCfvrkL9LQuSUVl1WrnYQLv9KAUcHbXOpn7Q+Hy0lPBejJMBhF HHdTqoVQjBVWAwwI1dDP3kMd8W3nfUY5I0KPplL4mybNbED/EhrJcRnYVCitug1ZSJ sFon76o3sRMUA== Date: Fri, 05 Apr 2024 03:34:59 +0000 To: bug-gnu-emacs@gnu.org From: Okamsn Subject: [PATCH] Add command `list-keyboard-macros` Message-ID: Feedback-ID: 25935600:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_9a3xDn5WJ6Zk3v2FLab9HXWqwIbRXPkji9xsoqdI3VE" Received-SPF: pass client-ip=185.70.40.134; envelope-from=okamsn@protonmail.com; helo=mail-40134.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit 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: -1.0 (-) This is a multi-part message in MIME format. --b1_9a3xDn5WJ6Zk3v2FLab9HXWqwIbRXPkji9xsoqdI3VE Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello, The attached patch adds the command `list-keyboard-macros`, which works=20 like `list-buffers` using `tabulated-list-mode`. It allows for=20 re-arranging the macros in the ring; editing their counters, counter=20 formats, and macro keys; deleting macros in the ring; and duplicating=20 macros for further editing. Please let me know what you think. I followed the naming scheme used by=20 Dired for a few of the commands, but don't know if that's best. Thank you. --b1_9a3xDn5WJ6Zk3v2FLab9HXWqwIbRXPkji9xsoqdI3VE Content-Type: text/x-patch; charset=UTF-8; name=0001-Add-command-list-keyboard-macros-that-works-like-lis.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Add-command-list-keyboard-macros-that-works-like-lis.patch RnJvbSAzZGM3MmI2YTQxYzBlYTYxNjAyZGI0MzgyM2Q1Y2VmYWVkNWI1NGU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFYXJsIEh5YXR0IDxva2Ftc25AcHJvdG9ubWFpbC5jb20+CkRh dGU6IFN1biwgMjQgTWFyIDIwMjQgMTE6NDk6MjEgLTA0MDAKU3ViamVjdDogW1BBVENIXSBBZGQg Y29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIHRoYXQgd29ya3MgbGlrZQogJ2xpc3QtYnVm ZmVycycuCgpUaGUgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIGFsbG93cyBlZGl0aW5n IGFuZCByZS1hcnJhbmdpbmcKbWFjcm9zIHVzaW5nICd0YWJ1bGF0ZWQtbGlzdC1tb2RlJy4gIEV4 aXN0aW5nIGtleWJvYXJkIG1hY3JvcyBjYW4gYmUKZHVwbGljYXRlZCBvciBkZWxldGVkLiAgTWFj cm8gY291bnRlcnMgYW5kIGNvdW50ZXIgZm9ybWF0cyBjYW4gdGFrZSBuZXcKdmFsdWVzIHJlYWQg ZnJvbSB0aGUgbWluaWJ1ZmZlci4gIE1hY3JvIGtleXMgY2FuIGJlIGVkaXRlZCB1c2luZwonZWRp dC1rYmQtbWFjcm8nLgoKKiBkb2MvZW1hY3Mva21hY3JvLnRleGkgKEtleWJvYXJkIE1hY3Jvcyk6 IE1lbnRpb24gdGhlIG5ldyBjb21tYW5kCmluIHRoZSBzZWN0aW9uIGludHJvZHVjdGlvbiwgc2lu Y2UgaXQgcmVsYXRlcyB0byBtdWx0aXBsZSBzdWJzZWN0aW9ucy4KKiBldGMvTkVXUyAoS21hY3Jv IE1lbnUgTW9kZSk6IE1lbnRpb24gdGhlIG5ldyBtb2RlIGFuZCBjb21tYW5kLgoqIGxpc3Ava21h Y3JvLmVsIChrbWFjcm8tbWVudS1tYXJrLCBrbWFjcm8tbWVudS1tYXJrZWQpCihrbWFjcm8tbWVu dS1mbGFnZ2VkKTogQWRkIGZhY2VzIGZvciBtYXJrcyBhbmQgZmxhZ3MuCiogbGlzcC9rbWFjcm8u ZWwgKGttYWNyby1tZW51LW1vZGUtbWFwLCBrbWFjcm8tbWVudS1tb2RlKTogQWRkIG1vZGUKYW5k IG1hcC4KKiBsaXNwL2ttYWNyby5lbCAobGlzdC1rZXlib2FyZC1tYWNyb3MpOiBBZGQgY29tbWFu ZC4KKiBsaXNwL2ttYWNyby5lbCAoa21hY3JvLW1lbnUtLWRlbGV0aW9uLWZsYWdzLCBrbWFjcm8t bWVudS0tbWFya3MpCihrbWFjcm8tbWVudS0taWQta21hY3JvLCBrbWFjcm8tbWVudS0taWQtcG9z aXRpb24sIGttYWNyby1tZW51LS1rbWFjcm9zKQooa21hY3JvLW1lbnUtLXJlZnJlc2gsIGttYWNy by1tZW51LS1tYXAtaWRzLCBrbWFjcm8tbWVudS0tdXBkYXRlKQooa21hY3JvLW1lbnUtLXVwZGF0 ZS1hdCwga21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCwga21hY3JvLW1lbnUtLWFzc2VydC1yb3cp CihrbWFjcm8tbWVudS0tcHJvcGVydGl6ZS1rZXlzLCBrbWFjcm8tbWVudS0tZG8tcmVnaW9uKQoo a21hY3JvLW1lbnUtLW1hcmtzLWV4aXN0LXApOiBBZGQgdXRpbGl0eSBmdW5jdGlvbnMgb2YgbW9k ZQphbmQgY29tbWFuZHMuCiogbGlzcC9rbWFjcm8uZWwgKGttYWNyby1tZW51LW1hcmssIGttYWNy by1tZW51LWZsYWctZm9yLWRlbGV0aW9uKQooa21hY3JvLW1lbnUtdW5tYXJrLCBrbWFjcm8tbWVu dS11bm1hcmstYmFja3dhcmQpCihrbWFjcm8tbWVudS11bm1hcmstYWxsKTogQWRkIGNvbW1hbmRz IGZvciBtYXJrcyBhbmQgZmxhZ3MuCiogbGlzcC9rbWFjcm8uZWwgKGttYWNyby1tZW51LWRvLWZs YWdnZWQtZGVsZXRlLCBrbWFjcm8tbWVudS1kby1jb3B5KQooa21hY3JvLW1lbnUtZG8tZGVsZXRl KTogQWRkIGNvbW1hbmRzIHRoYXQgbW9kaWZ5IHRoZSByaW5nLgoqIGxpc3Ava21hY3JvLmVsIChr bWFjcm8tbWVudS1lZGl0LXBvc2l0aW9uLCBrbWFjcm8tbWVudS10cmFuc3Bvc2UpCihrbWFjcm8t bWVudS1lZGl0LWZvcm1hdCwga21hY3JvLW1lbnUtZWRpdC1jb3VudGVyKQooa21hY3JvLW1lbnUt ZWRpdC1rZXlzLCBrbWFjcm8tbWVudS1lZGl0LWNvbHVtbik6IEFkZCBjb21tYW5kcyB0aGF0Cm1v ZGlmeSBhIGtleWJvYXJkIG1hY3JvLgotLS0KIGRvYy9lbWFjcy9rbWFjcm8udGV4aSB8ICAgNiAr CiBldGMvTkVXUyAgICAgICAgICAgICAgfCAgIDggKwogbGlzcC9rbWFjcm8uZWwgICAgICAgIHwg NTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBj aGFuZ2VkLCA1MjIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9rbWFjcm8u dGV4aSBiL2RvYy9lbWFjcy9rbWFjcm8udGV4aQppbmRleCBlMzBkZWYzNDQ3NS4uZDAxMDZmY2U1 ZDEgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9rbWFjcm8udGV4aQorKysgYi9kb2MvZW1hY3Mva21h Y3JvLnRleGkKQEAgLTI0LDYgKzI0LDEyIEBAIEtleWJvYXJkIE1hY3Jvcwoga2V5Ym9hcmQgbWFj cm8gaXMgZGVmaW5lZCBhbmQgYWxzbyBoYXMgYmVlbiwgaW4gZWZmZWN0LCBleGVjdXRlZCBvbmNl LgogWW91IGNhbiB0aGVuIGRvIHRoZSB3aG9sZSB0aGluZyBvdmVyIGFnYWluIGJ5IGludm9raW5n IHRoZSBtYWNyby4KIAorICBUaGUgbGlzdCBvZiBkZWZpbmVkIGtleWJvYXJkIG1hY3JvcyBjYW4g YmUgc2VlbiB2aWEgQGtiZHtNLXgKK2xpc3Qta2V5Ym9hcmQtbWFjcm9zIEBrZXl7UkVUfX0uICBU aGlzIGNvbW1hbmQgY2FuIGJlIHVzZWQgdG8gcmUtb3JkZXIKK3RoZSBsaXN0IG9mIGRlZmluZWQg bWFjcm9zICh0aGUgQGRmbntrZXlib2FyZCBtYWNybyByaW5nfSkgYW5kIHRvIGVkaXQKK3RoZSBw cm9wZXJ0aWVzIG9mIHRob3NlIGtleWJvYXJkIG1hY3Jvcywgd2hpY2ggYXJlIGRlc2NyaWJlZCBp biB0aGUKK2ZvbGxvd2luZyBzdWJzZWN0aW9ucy4KKwogICBLZXlib2FyZCBtYWNyb3MgZGlmZmVy IGZyb20gb3JkaW5hcnkgRW1hY3MgY29tbWFuZHMgaW4gdGhhdCB0aGV5IGFyZQogd3JpdHRlbiBp biB0aGUgRW1hY3MgY29tbWFuZCBsYW5ndWFnZSByYXRoZXIgdGhhbiBpbiBMaXNwLiAgVGhpcyBt YWtlcyBpdAogZWFzaWVyIGZvciB0aGUgbm92aWNlIHRvIHdyaXRlIHRoZW0sIGFuZCBtYWtlcyB0 aGVtIG1vcmUgY29udmVuaWVudCBhcwpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwpp bmRleCBlZGE4NGQ1ODhhOC4uZTU2MTIyY2QwMGQgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBi L2V0Yy9ORVdTCkBAIC0xMzg4LDYgKzEzODgsMTQgQEAgV2hlbiB0aGlzIGlzIG5vbi1uaWwsIHRo ZSBsaW5lcyBvZiBrZXkgc2VxdWVuY2VzIGFyZSBkaXNwbGF5ZWQgd2l0aAogdGhlIG1vc3QgcmVj ZW50IGxpbmUgZmlyc3QuICBUaGlzIGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB3b3JraW5nIHdpdGgK IG1hY3JvcyB3aXRoIG1hbnkgbGluZXMsIHN1Y2ggYXMgZnJvbSAna21hY3JvLWVkaXQtbG9zc2Fn ZScuCiAKKyoqIEttYWNybyBNZW51IE1vZGUKKworKioqIE5ldyBtb2RlIGFuZCBuZXcgY29tbWFu ZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnLgorVGhpcyBpcyB0aGUgbWFjcm8gdmVyc2lvbiBvZiBj b21tYW5kcyBsaWtlICdsaXN0LWJ1ZmZlcnMnIGFuZAorJ2xpc3QtcHJvY2Vzc2VzJy4gIEl0IGFs bG93cyByZWFycmFuZ2luZyB0aGUgbWFjcm9zIGluIHRoZSByaW5nLAorZHVwbGljYXRpbmcgdGhl bSwgZGVsZXRpbmcgdGhlbSwgYW5kIGVkaXRpbmcgdGhlaXIgY291bnRlcnMsIGZvcm1hdHMsCith bmQga2V5cy4KKwogKiogTWlzY2VsbGFuZW91cwogCiAtLS0KZGlmZiAtLWdpdCBhL2xpc3Ava21h Y3JvLmVsIGIvbGlzcC9rbWFjcm8uZWwKaW5kZXggODk3ZWJmMTQzMzAuLjQ1NTk0MTYwZTZkIDEw MDY0NAotLS0gYS9saXNwL2ttYWNyby5lbAorKysgYi9saXNwL2ttYWNyby5lbApAQCAtMTM4OCw2 ICsxMzg4LDUxNCBAQCBrbWFjcm8tcmVkaXNwbGF5CiAgICAgKGxldCAoKGV4ZWN1dGluZy1rYmQt bWFjcm8gbmlsKSkKICAgICAgIChyZWRpc3BsYXkpKSkpCiAKKzs7OyBNb2RlIGFuZCBjb21tYW5k cyBmb3Igd29ya2luZyB3aXRoIHRoZSByaW5nIGluIGEgdGFibGUKKworKGRlZnZhciB0YWJ1bGF0 ZWQtbGlzdC1mb3JtYXQpCisoZGVmdmFyIHRhYnVsYXRlZC1saXN0LWVudHJpZXMpCisoZGVmdmFy IHRhYnVsYXRlZC1saXN0LXNvcnQta2V5KQorKGRlY2xhcmUtZnVuY3Rpb24gdGFidWxhdGVkLWxp c3QtaW5pdC1oZWFkZXIgICJ0YWJ1bGF0ZWQtbGlzdCIgKCkpCisoZGVjbGFyZS1mdW5jdGlvbiB0 YWJ1bGF0ZWQtbGlzdC1wcmludCAidGFidWxhdGVkLWxpc3QiCisgICAgICAgICAgICAgICAgICAo Jm9wdGlvbmFsIHJlbWVtYmVyLXBvcyB1cGRhdGUpKQorCisoZGVmZmFjZSBrbWFjcm8tbWVudS1t YXJrICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1jb25zdGFudC1mYWNlKSkpCisgICJGYWNlIHVz ZWQgZm9yIHRoZSBLZXlib2FyZCBNYWNybyBNZW51IG1hcmtzLiIKKyAgOmdyb3VwICdrbWFjcm8p CisKKyhkZWZmYWNlIGttYWNyby1tZW51LWZsYWdnZWQgJygodCAoOmluaGVyaXQgZXJyb3IpKSkK KyAgIkZhY2UgdXNlZCBmb3Iga2V5Ym9hcmQgbWFjcm9zIGZsYWdnZWQgZm9yIGRlbGV0aW9uLiIK KyAgOmdyb3VwICdrbWFjcm8pCisKKyhkZWZmYWNlIGttYWNyby1tZW51LW1hcmtlZCAnKCh0ICg6 aW5oZXJpdCB3YXJuaW5nKSkpCisgICJGYWNlIHVzZWQgZm9yIGtleWJvYXJkIG1hY3JvcyBtYXJr ZWQgZm9yIGR1cGxpY2F0aW9uLiIKKyAgOmdyb3VwICdrbWFjcm8pCisKKyhkZWZ2YXIta2V5bWFw IGttYWNyby1tZW51LW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBmb3IgYGttYWNyby1tZW51LW1v ZGUnLiIKKyAgOnBhcmVudCB0YWJ1bGF0ZWQtbGlzdC1tb2RlLW1hcAorICAiIyIgIydrbWFjcm8t bWVudS1lZGl0LXBvc2l0aW9uCisgICJjIiAjJ2ttYWNyby1tZW51LWVkaXQtY291bnRlcgorICAi ZSIgIydrbWFjcm8tbWVudS1lZGl0LWtleXMKKyAgImYiICMna21hY3JvLW1lbnUtZWRpdC1mb3Jt YXQKKyAgIlJFVCIgIydrbWFjcm8tbWVudS1lZGl0LWNvbHVtbgorCisgICJDIiAjJ2ttYWNyby1t ZW51LWRvLWNvcHkKKyAgIkQiICMna21hY3JvLW1lbnUtZG8tZGVsZXRlCisgICJtIiAjJ2ttYWNy by1tZW51LW1hcmsKKworICAiZCIgIydrbWFjcm8tbWVudS1mbGFnLWZvci1kZWxldGlvbgorICAi eCIgIydrbWFjcm8tbWVudS1kby1mbGFnZ2VkLWRlbGV0ZQorCisgICJ1IiAjJ2ttYWNyby1tZW51 LXVubWFyaworICAiVSIgIydrbWFjcm8tbWVudS11bm1hcmstYWxsCisgICJERUwiIydrbWFjcm8t bWVudS11bm1hcmstYmFja3dhcmQKKworICAiPHJlbWFwPiA8dHJhbnNwb3NlLWxpbmVzPiIgIydr bWFjcm8tbWVudS10cmFuc3Bvc2UpCisKKyhkZWZpbmUtZGVyaXZlZC1tb2RlIGttYWNyby1tZW51 LW1vZGUgdGFidWxhdGVkLWxpc3QtbW9kZQorICAiS2V5Ym9hcmQgTWFjcm8gTWVudSIKKyAgIk1h am9yIG1vZGUgZm9yIGxpc3Rpbmcga2V5Ym9hcmQgbWFjcm9zLiIKKyAgKG1ha2UtbG9jYWwtdmFy aWFibGUgJ2ttYWNyby1tZW51LS1tYXJrcykKKyAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2ttYWNy by1tZW51LS1kZWxldGlvbi1mbGFncykKKyAgKHNldHEtbG9jYWwgdGFidWxhdGVkLWxpc3QtZm9y bWF0CisgICAgICAgICAgICAgIFsoIlBvc2l0aW9uIiA4IHQpCisgICAgICAgICAgICAgICAoIkNv dW50ZXIiICA4IG5pbCA6cmlnaHQtYWxpZ24gdCA6cGFkLXJpZ2h0IDIpCisgICAgICAgICAgICAg ICAoIkZvcm1hdCIgIDggbmlsKQorICAgICAgICAgICAgICAgKCJGb3JtYXR0ZWQiIDEwIG5pbCkK KyAgICAgICAgICAgICAgICgiS2V5cyIgMSBuaWwpXSkKKyAgKHNldHEtbG9jYWwgdGFidWxhdGVk LWxpc3QtcGFkZGluZyAyKQorICAoYWRkLWhvb2sgJ3RhYnVsYXRlZC1saXN0LXJldmVydC1ob29r ICMna21hY3JvLW1lbnUtLXJlZnJlc2ggbmlsIHQpCisgICh0YWJ1bGF0ZWQtbGlzdC1pbml0LWhl YWRlcikKKyAgKHVubGVzcyAoa21hY3JvLXJpbmctZW1wdHktcCkKKyAgICAoa21hY3JvLW1lbnUt LXJlZnJlc2gpCisgICAgKHRhYnVsYXRlZC1saXN0LXByaW50KSkpCisKKyhkZWZ1biBsaXN0LWtl eWJvYXJkLW1hY3JvcyAoKQorICAiTGlzdCB0aGUga2V5Ym9hcmQgbWFjcm9zLiIKKyAgKGludGVy YWN0aXZlKQorICAobGV0ICgoYnVmIChnZXQtYnVmZmVyLWNyZWF0ZSAiKkxpc3QgS2V5Ym9hcmQg TWFjcm9zKiIpKSkKKyAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYKKyAgICAgIChrbWFjcm8t bWVudS1tb2RlKSkKKyAgICAocG9wLXRvLWJ1ZmZlciBidWYpKSkKKworOzs7OyBVdGlsaXR5IGZ1 bmN0aW9ucyBhbmQgbW9kZSBkYXRhCisKKyhkZWZ2YXIga21hY3JvLW1lbnUtLWRlbGV0aW9uLWZs YWdzIG5pbAorICAiQWxpc3Qgb2YgZW50cmllcyBmbGFnZ2VkIGZvciBkZWxldGlvbi4iKQorCiso ZGVmdmFyIGttYWNyby1tZW51LS1tYXJrcyBuaWwKKyAgIkFsaXN0IG9mIGVudHJpZXMgbWFya2Vk IGZvciBjb3B5aW5nIGFuZCBkdXBsaWNhdGlvbi4iKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLWlk LWttYWNybyAoZW50cnktaWQpCisgICJSZXR1cm4ga2V5Ym9hcmQgbWFjcm8gdGhhdCBpcyBwYXJ0 IG9mIHRoZSBFTlRSWS1JRC4iCisgIChjYXIgZW50cnktaWQpKQorCisoZGVmdW4ga21hY3JvLW1l bnUtLWlkLXBvc2l0aW9uIChlbnRyeS1pZCkKKyAgIlJldHVybiBvcmRpbmFsIHBvc2l0aW9uIHRo YXQgaXMgcGFydCBvZiB0aGUgRU5UUlktSUQuIgorICAoY2RyIGVudHJ5LWlkKSkKKworKGRlZnVu IGttYWNyby1tZW51LS1rbWFjcm9zICgpCisgICJSZXR1cm4gYSBsaXN0IG9mIHRoZSBleGlzdGlu ZyBrZXlib2FyZCBtYWNyb3MuIgorICAod2hlbiBsYXN0LWtiZC1tYWNybworICAgIChjb25zIChr bWFjcm8tcmluZy1oZWFkKQorICAgICAgICAgIGttYWNyby1yaW5nKSkpCisKKyhkZWZ1biBrbWFj cm8tbWVudS0tcmVmcmVzaCAoKQorICAiUmVzZXQgdGhlIGxpc3Qgb2Yga2V5Ym9hcmQgbWFjcm9z LiIKKyAgKHNldHEtbG9jYWwgdGFidWxhdGVkLWxpc3QtZW50cmllcworICAgICAgICAgICAgICAo c2VxLW1hcC1pbmRleGVkIChsYW1iZGEgKGttIGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsZXQgKChjbnQgKGttYWNyby0tY291bnRlciBrbSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZm10IChrbWFjcm8tLWZvcm1hdCBrbSkpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCgsa20gLiAsaWR4KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFssKGZvcm1hdCAiJWQiIGlkeCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChmb3JtYXQgIiVkIiBjbnQpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxmbXQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLChmb3JtYXQgZm10IGNudCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLChmb3JtYXQta2JkLW1hY3JvIChrbWFjcm8tLWtleXMga20pKV0p KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLWttYWNyb3Mp KQorICAgICAgICAgICAgICBrbWFjcm8tbWVudS0tZGVsZXRpb24tZmxhZ3MgbmlsCisgICAgICAg ICAgICAgIGttYWNyby1tZW51LS1tYXJrcyBuaWwpCisgICh0YWJ1bGF0ZWQtbGlzdC1jbGVhci1h bGwtdGFncykpCisKKyhkZWZ1biBrbWFjcm8tbWVudS0tbWFwLWlkcyAoZnVuY3Rpb24pCisgICJN YXAgYSBGVU5DVElPTiB0byB0aGUgY3VycmVudCB0YWJsZSBlbnRyeSBJRHMgaW4gb3JkZXIuCisK K0lmIEZJTFRFUiBpcyBub24tbmlsLCB0aGVuIElEcyBmb3Igd2hpY2ggRklMVEVSIHJldHVybnMg bmlsIGFyZQorZXhjbHVkZWQuCisKK1JldHVybnMgYSBsaXN0IG9mIHRoZSBvdXRwdXQgb2YgRlVO Q1RJT04uIgorICAobWFwY2FyIGZ1bmN0aW9uCisgICAgICAgICAgKG1hcGNhciAjJ2NhcgorICAg ICAgICAgICAgICAgICAgKHNlcS1zb3J0LWJ5ICMnY2RhciAjJzwgdGFidWxhdGVkLWxpc3QtZW50 cmllcykpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS11cGRhdGUgKGttYWNyb3MpCisgICJVcGRh dGUgdGhlIHZhcmlhYmxlcyBmb3IgdGhlIGN1cnJlbnQgYW5kIHByZXZpb3VzIGtleWJvYXJkIG1h Y3Jvcy4KKworS01BQ1JPUyBpcyBhIGxpc3Qgb2YgYGttYWNybycgb2JqZWN0cy4iCisgIChpZiAo bnVsbCBrbWFjcm9zKQorICAgICAgKHNldHEgbGFzdC1rYmQtbWFjcm8gbmlsCisgICAgICAgICAg ICBrbWFjcm8tY291bnRlci1mb3JtYXQga21hY3JvLWRlZmF1bHQtY291bnRlci1mb3JtYXQKKyAg ICAgICAgICAgIGttYWNyby1jb3VudGVyIDAKKyAgICAgICAgICAgIGttYWNyby1yaW5nIG5pbCkK KyAgICAoa21hY3JvLXNwbGl0LXJpbmctZWxlbWVudCAoY2FyIGttYWNyb3MpKQorICAgIChzZXRx IGttYWNyby1yaW5nIChjZHIga21hY3JvcykpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS11cGRh dGUtYXQgKGttYWNybyBuKQorICAiVXBkYXRlIHRvIEtNQUNSTyBhdCBwb3NpdGlvbiBOLiIKKyAg KGttYWNyby1tZW51LS11cGRhdGUKKyAgIChrbWFjcm8tbWVudS0tbWFwLWlkcyAobGFtYmRhIChp ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPSBuIChrbWFjcm8tbWVudS0taWQt cG9zaXRpb24gaWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGttYWNybworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLWlkLWttYWNybyBpZCkpKSkp KQorCisoZGVmdW4ga21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCAoKQorICAiV2hlbiB0aGUgdGFi bGUgZGlmZmVycyBmcm9tIHRoZSBleGlzdGluZyBtYWNyb3MsIGFzayB3aGV0aGVyIHRvIHJldmVy dCB0YWJsZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4gKGFuZCAobm90IChlcXVhbCAoa21h Y3JvLW1lbnUtLWttYWNyb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGttYWNyby1tZW51 LS1tYXAtaWRzICMna21hY3JvLW1lbnUtLWlkLWttYWNybykpKQorICAgICAgICAgICAgICh5ZXMt b3Itbm8tcCAiVGFibGUgZG9lcyBub3QgbWF0Y2ggZXhpc3Rpbmcga2V5Ym9hcmQgbWFjcm9zLiAg U3RvcCBhbmQgcmV2ZXJ0IHRhYmxlPyIpKQorICAgICh0YWJ1bGF0ZWQtbGlzdC1yZXZlcnQpCisg ICAgKHNpZ25hbCAncXVpdCBuaWwpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1hc3NlcnQtcm93 ICgmb3B0aW9uYWwgaWQpCisgICJTaWduYWwgYW4gZXJyb3IgaWYgcG9pbnQgaXMgbm90IG9uIGEg dGFibGUgcm93LgorCitJRCBpcyB0aGUgdGFidWxhdGVkIGxpc3QgaWQgb2YgdGhlIHN1cHBvc2Vk IGVudHJ5IGF0IHBvaW50LiIKKyAgKHVubGVzcyAob3IgaWQgKHRhYnVsYXRlZC1saXN0LWdldC1p ZCkpCisgICAgKHVzZXItZXJyb3IgIk5vdCBvbiBhIHRhYmxlIHJvdyIpKSkKKworKGRlZnVuIGtt YWNyby1tZW51LS1wcm9wZXJ0aXplLWtleXMgKGZhY2UpCisgICJSZWRpc3BsYXkgdGhlIG1hY3Jv IGF0IHBvaW50IHdpdGggRkFDRS4iCisgIChsZXQgKChkYXRhICh0YWJ1bGF0ZWQtbGlzdC1kZWxl dGUtZW50cnkpKSkKKyAgICAoc2V0ZiAoYXJlZiAoY2FkciBkYXRhKSA0KSAocHJvcGVydGl6ZSAo YXJlZiAoY2FkciBkYXRhKSA0KSAnZmFjZSBmYWNlKSkKKyAgICAodGFidWxhdGVkLWxpc3QtcHJp bnQtZW50cnkgKGNhciBkYXRhKSAoY2FkciBkYXRhKSkpCisgIChmb3J3YXJkLWxpbmUgLTEpKQor CisoZGVmdW4ga21hY3JvLW1lbnUtLWRvLXJlZ2lvbiAoZnVuY3Rpb24gJm9wdGlvbmFsIG5vLXJl Z2lvbi1oYWx0KQorICAiUnVuIEZVTkNUSU9OIG9uIG1hY3JvcyBpbiB0aGUgcmVnaW9uIG9yIG9u IHRoZSBjdXJyZW50IGxpbmUuCisKK0lmIE5PLVJFR0lPTi1IQUxUIGlzIG5vbi1uaWwsIHRoZW4g aWYgdGhlcmUgaXMgbm8gcmVnaW9uLCBkbyBub3QKK2FkdmFuY2UuIgorICAobGV0ICgoYWR2YW5j ZSBuaWwpKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKGxldCogKChsaW5lLWJlZykKKyAg ICAgICAgICAgICAobGluZS1lbmQpKQorICAgICAgICAoaWYgKGFuZCAodXNlLXJlZ2lvbi1wKQor ICAgICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAobGV0ICgocmVnLWJl ZyAocmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZy1lbmQg KHJlZ2lvbi1lbmQpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzZXRxIGxpbmUtYmVnIChwcm9n bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHJlZy1i ZWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3MtYm9sKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtZW5kIChwcm9nbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHJlZy1lbmQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYm9scCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZy1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHBvaW50KSkpKSkKKyAgICAgICAgICAgICAgICAgICAoLz0gbGluZS1i ZWcgbGluZS1lbmQpKSkKKyAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAoZ290by1j aGFyIGxpbmUtYmVnKQorICAgICAgICAgICAgICAobGV0ICgoaWQpKQorICAgICAgICAgICAgICAg ICh3aGlsZSAoYW5kICg8IChwb2ludCkgbGluZS1lbmQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgaWQgKHRhYnVsYXRlZC1saXN0LWdldC1pZCkpKQorICAgICAgICAgICAgICAg ICAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93IGlkKQorICAgICAgICAgICAgICAgICAgKGZ1bmNh bGwgZnVuY3Rpb24gaWQpCisgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKSkpCisg ICAgICAgICAgKGxldCAoKGlkICh0YWJ1bGF0ZWQtbGlzdC1nZXQtaWQpKSkKKyAgICAgICAgICAg IChrbWFjcm8tbWVudS0tYXNzZXJ0LXJvdyBpZCkKKyAgICAgICAgICAgIChmdW5jYWxsIGZ1bmN0 aW9uIGlkKSkKKyAgICAgICAgICAoc2V0cSBhZHZhbmNlIChub3Qgbm8tcmVnaW9uLWhhbHQpKSkp KQorICAgICh3aGVuIGFkdmFuY2UKKyAgICAgIChmb3J3YXJkLWxpbmUgMSkpKSkKKworKGRlZnVu IGttYWNyby1tZW51LS1tYXJrcy1leGlzdC1wICgpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBtYXJr ZXJzIGV4aXN0IGZvciBhbnkgdGFibGUgZW50cmllcy4iCisgIChsZXQgKCh0YWcgKGdlbnN5bSkp KQorICAgIChjYXRjaCB0YWcKKyAgICAgIChrbWFjcm8tbWVudS0tbWFwLWlkcyAobGFtYmRhIChp ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbGlzdC1nZXQgKGttYWNy by1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAga21hY3JvLW1lbnUtLW1hcmtzKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodGhyb3cgdGFnIHQpKSkpCisgICAgICBuaWwpKSkKKworOzs7OyBDb21tYW5k cyBmb3IgTWFya3MgYW5kIEZsYWdzCisKKyhkZWZ1biBrbWFjcm8tbWVudS1tYXJrICgpCisgICJN YXJrIHRoZSBrZXlib2FyZCBtYWNybyBhdCBwb2ludCBmb3IgY29weWluZyB2aWEgYGttYWNyby1t ZW51LWRvLWNvcHknLgorCitJZiB0aGUgcmVnaW9uIGlzIGFjdGl2ZSwgbWFyayBhbGwgbWFjcm9z IGluIHRoZSByZWdpb24uIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisg IChpbnRlcmFjdGl2ZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgIChrbWFjcm8t bWVudS0tZG8tcmVnaW9uCisgICAobGFtYmRhIChpZCkKKyAgICAgKHNldGYgKGFsaXN0LWdldCAo a21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKQorICAgICAgICAgICAgICAgICAgICAgIGttYWNy by1tZW51LS1tYXJrcykKKyAgICAgICAgICAgdCkKKyAgICAgKGttYWNyby1tZW51LS1wcm9wZXJ0 aXplLWtleXMgJ2ttYWNyby1tZW51LW1hcmtlZCkKKyAgICAgKHRhYnVsYXRlZC1saXN0LXB1dC10 YWcgIygiKiIgMCAxIChmYWNlIGttYWNyby1tZW51LW1hcmspKSkpKSkKKworKGRlZnVuIGttYWNy by1tZW51LWZsYWctZm9yLWRlbGV0aW9uICgpCisgICJGbGFnIHRoZSBrZXlib2FyZCBtYWNybyBm b3IgZGVsZXRpb24gYnkgYGttYWNyby1tZW51LWRvLWZsYWdnZWQtZGVsZXRlJy4KKworSWYgdGhl IHJlZ2lvbiBpcyBhY3RpdmUsIHRoZW4gZmxhZyBhbGwgbWFjcm9zIGluIHRoZSByZWdpb24uIgor ICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSkKKyAg KGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgIChrbWFjcm8tbWVudS0tZG8tcmVnaW9uCisg ICAobGFtYmRhIChpZCkKKyAgICAgKHNldGYgKGFsaXN0LWdldCAoa21hY3JvLW1lbnUtLWlkLXBv c2l0aW9uIGlkKQorICAgICAgICAgICAgICAgICAgICAgIGttYWNyby1tZW51LS1kZWxldGlvbi1m bGFncykKKyAgICAgICAgICAgdCkKKyAgICAgKGttYWNyby1tZW51LS1wcm9wZXJ0aXplLWtleXMg J2ttYWNyby1tZW51LWZsYWdnZWQpCisgICAgICh0YWJ1bGF0ZWQtbGlzdC1wdXQtdGFnICMoIkQi IDAgMSAoZmFjZSBrbWFjcm8tbWVudS1tYXJrKSkpKSkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS11 bm1hcmsgKCkKKyAgIlVubWFyayBhbmQgdW5mbGFnIHRoZSBrZXlib2FyZCBtYWNybyBhdCBwb2lu dC4KKworSWYgdGhlIHJlZ2lvbiBpcyBhY3RpdmUsIHRoZW4gdW5tYXJrIGFsbCBtYWNyb3MgaW4g dGhlIHJlZ2lvbi4iCisgIChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAgKGlu dGVyYWN0aXZlKQorICAoa21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAgKGttYWNyby1tZW51 LS1kby1yZWdpb24KKyAgIChsYW1iZGEgKGlkKQorICAgICAoc2V0ZiAoYWxpc3QtZ2V0IChrbWFj cm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAgICAga21hY3JvLW1l bnUtLWRlbGV0aW9uLWZsYWdzKQorICAgICAgICAgICBuaWwpCisgICAgIChzZXRmIChhbGlzdC1n ZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAgICAgICAgICAgICBr bWFjcm8tbWVudS0tbWFya3MpCisgICAgICAgICAgIG5pbCkKKyAgICAgKGttYWNyby1tZW51LS1w cm9wZXJ0aXplLWtleXMgJ2RlZmF1bHQpCisgICAgICh0YWJ1bGF0ZWQtbGlzdC1wdXQtdGFnICIg IikpKSkKKworKGRlZnVuIGttYWNyby1tZW51LXVubWFyay1iYWNrd2FyZCAoKQorICAiTGlrZSBg a21hY3JvLW1lbnUtdW5tYXJrJywgYnV0IG1vdmUgYmFja3dhcmRzIGluc3RlYWQgb2YgZm9yd2Fy ZHMuIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2 ZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgIChsZXQgKChnby1iYWNrIChub3Qg KHVzZS1yZWdpb24tcCkpKSkKKyAgICAoa21hY3JvLW1lbnUtdW5tYXJrKQorICAgICh3aGVuIGdv LWJhY2sKKyAgICAgIChmb3J3YXJkLWxpbmUgLTIpKSkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS11 bm1hcmstYWxsICgpCisgICJVbm1hcmsgYW5kIHVuZmxhZyBhbGwgbGlzdGVkIGtleWJvYXJkIG1h Y3Jvcy4iCisgIChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAgKGludGVyYWN0 aXZlKQorICAoa21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAgKHNldHEtbG9jYWwga21hY3Jv LW1lbnUtLWRlbGV0aW9uLWZsYWdzIG5pbAorICAgICAgICAgICAgICBrbWFjcm8tbWVudS0tbWFy a3MgbmlsKQorICAoc2F2ZS1leGN1cnNpb24KKyAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQor ICAgICh3aGlsZSAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKQorICAgICAgKGttYWNyby1tZW51LS1w cm9wZXJ0aXplLWtleXMgJ2RlZmF1bHQpCisgICAgICAoZm9yd2FyZC1saW5lIDEpKQorICAgICh0 YWJ1bGF0ZWQtbGlzdC1jbGVhci1hbGwtdGFncykpKQorCis7Ozs7IENvbW1hbmRzIHRoYXQgTW9k aWZ5IHRoZSBSaW5nCisKKyhkZWZ1biBrbWFjcm8tbWVudS1kby1mbGFnZ2VkLWRlbGV0ZSAoKQor ICAiRGVsZXRlIGtleWJvYXJkIG1hY3JvcyBmbGFnZ2VkIHZpYSBga21hY3JvLW1lbnUtZmxhZy1m b3ItZGVsZXRpb24nLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAo aW50ZXJhY3RpdmUpCisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAobGV0ICgocmVz KQorICAgICAgICAobnVtLWRlbGV0ZXMgMCkpCisgICAgKGttYWNyby1tZW51LS1tYXAtaWRzIChs YW1iZGEgKGlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYWxpc3QtZ2V0IChr bWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAga21hY3JvLW1lbnUtLWRlbGV0aW9uLWZsYWdzKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tZGVsZXRlcyAoMSsgbnVtLWRlbGV0ZXMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGttYWNyby1tZW51LS1pZC1rbWFj cm8gaWQpIHJlcykpKSkKKyAgICAod2hlbiAoeWVzLW9yLW5vLXAgKGlmICg9IDEgbnVtLWRlbGV0 ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVsZXRlIDEga2V5Ym9hcmQgbWFjcm8/ IgorICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIkRlbGV0ZSAlZCBrZXlib2FyZCBt YWNyb3M/IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtLWRlbGV0ZXMpKSkK KyAgICAgIChrbWFjcm8tbWVudS0tdXBkYXRlCisgICAgICAgKG5yZXZlcnNlIHJlcykpCisgICAg ICAodGFidWxhdGVkLWxpc3QtcmV2ZXJ0KSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtZG8tY29w eSAoKQorICAiRHVwbGljYXRlIHRoZSBtYWNyb3MgaW4gdGhlIHJlZ2lvbiwgb3IgdGhlIG1hcmtl ZCBtYWNyb3MsIG9yIHRoZSBvbmUgYXQgcG9pbnQuCisKK01hY3JvcyBhcmUgZHVwbGljYXRlZCBh dCB0aGVpciBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBtYWNybyByaW5nLgorCitJZiB0aGUgcmVn aW9uIGlzIGFjdGl2ZSwgZHVwbGljYXRlIHRoZSBtYWNyb3MgaW4gdGhlIHJlZ2lvbiwgcmVnYXJk bGVzcworb2Ygd2hldGhlciB0aGVyZSBhcmUgbWFya2VkIG1hY3Jvcy4gIE90aGVyd2lzZSwgaWYg dGhlcmUgYXJlIG1hcmtlZAorbWFjcm9zLCBkZWxldGUgdGhvc2UuICBPdGhlcndpc2UsIGR1cGxp Y2F0ZSB0aGUgb25lIG1hY3JvIGF0IHBvaW50LiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1t ZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUpCisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0 KQorICAobGV0KiAoKHJlZ2lvbi1leGlzdHMgKHVzZS1yZWdpb24tcCkpCisgICAgICAgICAobWFy ay1leGlzdHMgKGttYWNyby1tZW51LS1tYXJrcy1leGlzdC1wKSkKKyAgICAgICAgIChpZC1hbGlz dCAoaWYgKG9yIHJlZ2lvbi1leGlzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3Qg bWFyay1leGlzdHMpKQorICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocmVnaW9uLWFsaXN0 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLWRvLXJlZ2lvbgorICAg ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpZCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocHVzaCAoY29ucyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVnaW9uLWFsaXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpCisgICAgICAgICAgICAg ICAgICAgICBrbWFjcm8tbWVudS0tbWFya3MpKQorICAgICAgICAgKG51bS1kdXBsaWNhdGVzIDAp KQorICAgIChsZXQgKChyZXMpKQorICAgICAgKGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEg KGlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGttYWNyby1tZW51LS1p ZC1rbWFjcm8gaWQpIHJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChh bGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQtYWxpc3QpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChwdXNoIChrbWFjcm8tbWVudS0taWQta21hY3JvIGlkKSByZXMpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG51bS1kdXBsaWNhdGVzICgxKyBu dW0tZHVwbGljYXRlcykpKSkpCisgICAgICA7OyBDb25maXJtIHRoZSBhY3Rpb24gaWYgd2Ugb3Bl cmF0ZWQgb24gbWFya3Mgb3IgdGhlIHJlZ2lvbiwgYnV0CisgICAgICA7OyBkb24ndCBjb25maXJt IGlmIG9wZXJhdGluZyBvbiBhIHNpbmdsZSBsaW5lIHdpdGhvdXQgYSByZWdpb24uCisgICAgICAo d2hlbiAoaWYgKG9yIG1hcmstZXhpc3RzIHJlZ2lvbi1leGlzdHMpCisgICAgICAgICAgICAgICAg KHllcy1vci1uby1wIChpZiAoPSAxIG51bS1kdXBsaWNhdGVzKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkNvcHkgKGR1cGxpY2F0ZSkgMSBrZXlib2FyZCBtYWNybz8iCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiQ29weSAoZHVwbGljYXRlKSAlZCBr ZXlib2FyZCBtYWNyb3M/IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bnVtLWR1cGxpY2F0ZXMpKSkKKyAgICAgICAgICAgICAgdCkKKyAgICAgICAgKGttYWNyby1tZW51 LS11cGRhdGUgKG5yZXZlcnNlIHJlcykpCisgICAgICAgICh0YWJ1bGF0ZWQtbGlzdC1yZXZlcnQp KSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtZG8tZGVsZXRlICgpCisgICJEZWxldGUgdGhlIG1h Y3JvcyBpbiB0aGUgcmVnaW9uLCB0aGUgbWFya2VkIG1hY3Jvcywgb3IgdGhlIG9uZSBhdCBwb2lu dC4KKworSWYgdGhlIHJlZ2lvbiBpcyBhY3RpdmUsIGRlbGV0ZSB0aGUgbWFjcm9zIGluIHRoZSBy ZWdpb24sIHJlZ2FyZGxlc3MKK29mIHdoZXRoZXIgdGhlcmUgYXJlIG1hcmtlZCBtYWNyb3MuICBP dGhlcndpc2UsIGlmIHRoZXJlIGFyZSBtYXJrZWQKK21hY3JvcywgZGVsZXRlIHRob3NlLiAgT3Ro ZXJ3aXNlLCBkZWxldGUgdGhlIG9uZSBtYWNybyBhdCBwb2ludC4iCisgIChkZWNsYXJlIChtb2Rl cyBrbWFjcm8tbWVudS1tb2RlKSkKKyAgKGludGVyYWN0aXZlKQorICAoa21hY3JvLW1lbnUtLXF1 ZXJ5LXJldmVydCkKKyAgKGxldCAoKG51bS1kZWxldGVzIDApCisgICAgICAgIChpZC1hbGlzdCAo aWYgKG9yICh1c2UtcmVnaW9uLXApCisgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGtt YWNyby1tZW51LS1tYXJrcy1leGlzdC1wKSkpCisgICAgICAgICAgICAgICAgICAgICAgKGxldCAo KHJlZ2lvbi1hbGlzdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLWRv LXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlkKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHB1c2ggKGNvbnMgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBp ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpKQorICAgICAgICAgICAgICAgICAg ICAgICAgIHQpCisgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpCisgICAgICAg ICAgICAgICAgICAgIGttYWNyby1tZW51LS1tYXJrcykpKQorICAgIChsZXQgKChyZXMpKQorICAg ICAgKGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKGlkKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmIChhbGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLWFsaXN0KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG51bS1kZWxldGVzICgxKyBu dW0tZGVsZXRlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChrbWFj cm8tbWVudS0taWQta21hY3JvIGlkKSByZXMpKSkpCisgICAgICAod2hlbiAoeWVzLW9yLW5vLXAg KGlmICg9IDEgbnVtLWRlbGV0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxl dGUgMSBrZXlib2FyZCBtYWNybz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0 ICJEZWxldGUgJWQga2V5Ym9hcmQgbWFjcm9zPyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnVtLWRlbGV0ZXMpKSkKKyAgICAgICAgKGttYWNyby1tZW51LS11cGRhdGUgKG5y ZXZlcnNlIHJlcykpCisgICAgICAgICh0YWJ1bGF0ZWQtbGlzdC1yZXZlcnQpKSkpKQorCis7Ozs7 IENvbW1hbmRzIHRoYXQgTW9kaWZ5IGEgS2V5Ym9hcmQgTWFjcm8KKworKGRlZnVuIGttYWNyby1t ZW51LWVkaXQtcG9zaXRpb24gKCkKKyAgIk1vdmUgdGhlIGtleWJvYXJkIG1hY3JvIGF0IHBvaW50 IHRvIGEgbmV3IHBvc2l0aW9uLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUp KQorICAoaW50ZXJhY3RpdmUpCisgIChsZXQgKChpZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkp CisgICAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93IGlkKQorICAgIChrbWFjcm8tbWVudS0tcXVl cnktcmV2ZXJ0KQorICAgIChsZXQqICgobmV3LXBvc2l0aW9uIChyZWFkLW51bWJlciAiTmV3IHBv c2l0aW9uOiAiIDApKQorICAgICAgICAgICAob2xkLWttIChrbWFjcm8tbWVudS0taWQta21hY3Jv IGlkKSkKKyAgICAgICAgICAgKG9sZC1wb3MgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkp KQorICAgICAgKHVubGVzcyAoPSBvbGQtcG9zIG5ldy1wb3NpdGlvbikKKyAgICAgICAgKGttYWNy by1tZW51LS11cGRhdGUgKGxldCAoKHJlcyBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh0cnVlLW5ldy1wb3MgKGlmICg+IG5ldy1wb3NpdGlvbiBvbGQtcG9zKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSsgbmV3 LXBvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmV3LXBvc2l0aW9uKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtt YWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKHRoaXMtaWQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHRoaXMta20gKGttYWNy by1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMtcG9zIChrbWFjcm8tbWVudS0t aWQtcG9zaXRpb24gdGhpcy1pZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAoPSBvbGQtcG9zIHRoaXMtcG9zKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo d2hlbiAoPSB0aGlzLXBvcyB0cnVlLW5ldy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggb2xkLWttIHJlcykpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwdXNoIHRoaXMta20gcmVzKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo d2hlbiAoPj0gdHJ1ZS1uZXctcG9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsZW5ndGggdGFidWxhdGVkLWxpc3QtZW50cmllcykpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocHVzaCBvbGQta20gcmVzKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0YWJ1bGF0ZWQtbGlzdC1yZXZl cnQpKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtdHJhbnNwb3NlICgpCisgICJNb3ZlIHRoZSBr ZXlib2FyZCBtYWNybyBhdCBwb2ludCB0byB0aGUgbmV4dCBlYXJsaWVyIHBvc2l0aW9uLgorCitO b3RlIHRoYXQgdGhpcyBpcyB0aGUgZWFybGllciBwb3NpdGlvbiBpbiB0aGUgcmluZywgbm90IHRo ZSBzb3J0ZWQKK3RhYmxlLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQor ICAoaW50ZXJhY3RpdmUpCisgIChsZXQgKChpZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisg ICAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93IGlkKQorICAgIChrbWFjcm8tbWVudS0tcXVlcnkt cmV2ZXJ0KQorICAgIChsZXQgKChvbGQtcG9zIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQp KSkKKyAgICAgICh1bmxlc3MgKD0gb2xkLXBvcyAwKQorICAgICAgICAobGV0ICgobmV3LXBvcyAo MS0gb2xkLXBvcykpKQorICAgICAgICAgIChrbWFjcm8tbWVudS0tdXBkYXRlCisgICAgICAgICAg IChsZXQgKChyZXMpKQorICAgICAgICAgICAgIChrbWFjcm8tbWVudS0tbWFwLWlkcworICAgICAg ICAgICAgICAobGFtYmRhICh0aGlzLWlkKQorICAgICAgICAgICAgICAgIChsZXQgKCh0aGlzLXBv cyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIHRoaXMtaWQpKSkKKyAgICAgICAgICAgICAgICAg ICh1bmxlc3MgKD0gb2xkLXBvcyB0aGlzLXBvcykKKyAgICAgICAgICAgICAgICAgICAgKHdoZW4g KD0gbmV3LXBvcyB0aGlzLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAocHVzaCAoa21hY3Jv LW1lbnUtLWlkLWttYWNybyBpZCkgcmVzKSkKKyAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGtt YWNyby1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkgcmVzKSkpKSkKKyAgICAgICAgICAgICAobnJl dmVyc2UgcmVzKSkpKQorICAgICAgICAodGFidWxhdGVkLWxpc3QtcmV2ZXJ0KSkpKSkKKworKGRl ZnVuIGttYWNyby1tZW51LWVkaXQtZm9ybWF0ICgpCisgICJFZGl0IHRoZSBjb3VudGVyIGZvcm1h dCBvZiB0aGUga2V5Ym9hcmQgbWFjcm8gYXQgcG9pbnQuIgorICAoZGVjbGFyZSAobW9kZXMga21h Y3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCAoKGlkICh0YWJ1bGF0ZWQt bGlzdC1nZXQtaWQpKSkKKyAgICAoa21hY3JvLW1lbnUtLWFzc2VydC1yb3cgaWQpCisgICAgKGtt YWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgICAgKGxldCAoKGttIChrbWFjcm8tbWVudS0taWQt a21hY3JvIGlkKSkpCisgICAgICAoa21hY3JvLW1lbnUtLXVwZGF0ZS1hdAorICAgICAgIChrbWFj cm8gKGttYWNyby0ta2V5cyBrbSkKKyAgICAgICAgICAgICAgIChrbWFjcm8tLWNvdW50ZXIga20p CisgICAgICAgICAgICAgICAocmVhZC1zdHJpbmcgIk5ldyBmb3JtYXQ6ICIgbmlsIG5pbAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGttYWNyby1kZWZhdWx0LWNvdW50ZXItZm9y bWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGttYWNyby0tZm9ybWF0IGtt KSkpKQorICAgICAgIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpKQorICAgICAgKHRhYnVs YXRlZC1saXN0LXJldmVydCkpKSkKKworKGRlZnVuIGttYWNyby1tZW51LWVkaXQtY291bnRlciAo KQorICAiRWRpdCB0aGUgY291bnRlciBvZiB0aGUga2V5Ym9hcmQgbWFjcm8gYXQgcG9pbnQuIgor ICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSkKKyAg KGxldCAoKGlkICh0YWJ1bGF0ZWQtbGlzdC1nZXQtaWQpKSkKKyAgICAoa21hY3JvLW1lbnUtLWFz c2VydC1yb3cgaWQpCisgICAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgICAgKGxldCAo KGttIChrbWFjcm8tbWVudS0taWQta21hY3JvIGlkKSkpCisgICAgICAoa21hY3JvLW1lbnUtLXVw ZGF0ZS1hdAorICAgICAgIChrbWFjcm8gKGttYWNyby0ta2V5cyBrbSkKKyAgICAgICAgICAgICAg IChyZWFkLW51bWJlciAiTmV3IGNvdW50ZXI6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGlzdCAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGttYWNyby0tY291 bnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLWlk LWttYWNybyBpZCkpKSkKKyAgICAgICAgICAgICAgIChrbWFjcm8tLWZvcm1hdCBrbSkpCisgICAg ICAgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkpCisgICAgICAodGFidWxhdGVkLWxpc3Qt cmV2ZXJ0KSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtZWRpdC1rZXlzICgpCisgICJFZGl0IHRo ZSBrZXlzIG9mIHRoZSBrZXlib2FyZCBtYWNybyBhdCBwb2ludCB2aWEgYGVkbWFjcm8tbW9kZScu IgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSkK KyAgKGxldCAoKGlkICh0YWJ1bGF0ZWQtbGlzdC1nZXQtaWQpKSkKKyAgICAoa21hY3JvLW1lbnUt LWFzc2VydC1yb3cgaWQpCisgICAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgICAgKGxl dCogKChvbGQta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKSkKKyAgICAgIChlZGl0LWti ZC1tYWNybyAoa21hY3JvLS1rZXlzIG9sZC1rbSkKKyAgICAgICAgICAgICAgICAgICAgICBuaWwK KyAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChtYWMpCisgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLXVwZGF0ZS1hdAor ICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8gbWFjCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoa21hY3JvLS1jb3VudGVyIG9sZC1rbSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChrbWFjcm8tLWZvcm1hdCBvbGQta20pKQorICAgICAgICAgICAgICAg ICAgICAgICAgIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpKQorICAgICAgICAgICAgICAg ICAgICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkpKSkpKQorCisoZGVmdW4ga21hY3JvLW1l bnUtZWRpdC1jb2x1bW4gKCkKKyAgIkVkaXQgdGhlIHZhbHVlIGluIHRoZSBjdXJyZW50IGNvbHVt biBvZiB0aGUga2V5Ym9hcmQgbWFjcm8gYXQgcG9pbnQuIgorICAoZGVjbGFyZSAobW9kZXMga21h Y3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1y ZXZlcnQpCisgIChsZXQgKChjb2wgKGdldC10ZXh0LXByb3BlcnR5IChwb2ludCkgJ3RhYnVsYXRl ZC1saXN0LWNvbHVtbi1uYW1lKSkpCisgICAgKGlmIChudWxsIGNvbCkKKyAgICAgICAgKHVzZXIt ZXJyb3IgIk5vIGNvbHVtbiBhdCBwb2ludCIpCisgICAgICAocGNhc2UgY29sCisgICAgICAgICgi UG9zaXRpb24iICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICMna21hY3JvLW1lbnUtZWRpdC1wb3NpdGlv bikpCisgICAgICAgICgiQ291bnRlciIgIChjYWxsLWludGVyYWN0aXZlbHkgIydrbWFjcm8tbWVu dS1lZGl0LWNvdW50ZXIpKQorICAgICAgICAoIkZvcm1hdCIgIChjYWxsLWludGVyYWN0aXZlbHkg IydrbWFjcm8tbWVudS1lZGl0LWZvcm1hdCkpCisgICAgICAgICgiRm9ybWF0dGVkIiAodXNlci1l cnJvciAiRm9ybWF0dGVkIGNvdW50ZXIgaXMgbm90IGVkaXRhYmxlIikpCisgICAgICAgICgiS2V5 cyIgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ttYWNyby1tZW51LWVkaXQta2V5cykpKSkpKQorCisK IChwcm92aWRlICdrbWFjcm8pCiAKIDs7OyBrbWFjcm8uZWwgZW5kcyBoZXJlCi0tIAoyLjM0LjEK Cg== --b1_9a3xDn5WJ6Zk3v2FLab9HXWqwIbRXPkji9xsoqdI3VE-- From debbugs-submit-bounces@debbugs.gnu.org Fri Apr 05 02:16:35 2024 Received: (at 70208) by debbugs.gnu.org; 5 Apr 2024 06:16:36 +0000 Received: from localhost ([127.0.0.1]:35098 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rscsM-00015b-3C for submit@debbugs.gnu.org; Fri, 05 Apr 2024 02:16:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45410) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rscsK-000152-42 for 70208@debbugs.gnu.org; Fri, 05 Apr 2024 02:16:33 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rscs8-0005Z1-Lp; Fri, 05 Apr 2024 02:16:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=2PHwswaOFAPCJyW1Ga7O8os3hG5bp+ivUXc6rNl+bvc=; b=R+G5RSd75A+O SnJvGWpHg0Np51LBHNIJmHSC8N/hfRHDIT7Q9CVbfxYq1MYnCBTPEZvjXobp4j1N6/7xEXq4jWt5R dfiWgY0dFlAdYP6ofpp1NjjRRJUoioY4FnVKbiHrnP3VqJgaUmW8FDH2hFU0+RFsA1bURqEMi9g7B OW4hl/jw8OEBB1DiDsk9x4GBaYCO/2TlrEMgTiVtNZChlKDUdyV7jcYLwIENS22k+Va2hyQ27zjZ0 nCrc/xXnJOQqRoP4QkK4HIlilmv0DTZq7iW/8zojhtX/GRjNIheVQNVtjg/TTgDlfGKO2CHXGDmx5 /8daOIgLxQBN4yhSf4tJQQ==; Date: Fri, 05 Apr 2024 09:16:12 +0300 Message-Id: <86msq85o7n.fsf@gnu.org> From: Eli Zaretskii To: Okamsn In-Reply-To: (bug-gnu-emacs@gnu.org) Subject: Re: bug#70208: [PATCH] Add command `list-keyboard-macros` References: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 70208 Cc: 70208@debbugs.gnu.org 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: -3.3 (---) > Date: Fri, 05 Apr 2024 03:34:59 +0000 > From: Okamsn via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > The attached patch adds the command `list-keyboard-macros`, which works > like `list-buffers` using `tabulated-list-mode`. It allows for > re-arranging the macros in the ring; editing their counters, counter > formats, and macro keys; deleting macros in the ring; and duplicating > macros for further editing. Thanks, please see some comments below. > --- a/doc/emacs/kmacro.texi > +++ b/doc/emacs/kmacro.texi > @@ -24,6 +24,12 @@ Keyboard Macros > keyboard macro is defined and also has been, in effect, executed once. > You can then do the whole thing over again by invoking the macro. > > + The list of defined keyboard macros can be seen via @kbd{M-x > +list-keyboard-macros @key{RET}}. This command can be used to re-order > +the list of defined macros (the @dfn{keyboard macro ring}) and to edit > +the properties of those keyboard macros, which are described in the > +following subsections. Please rewrite this not to use passive tense so much ("can be seen", "can be used"). Also, I think this command should be documented in more detail, including the commands in kmacro-menu-mode-map, later in the manual. In any case, each documented command should be indexed, with an explicit @findex. > +*** New mode and new command 'list-keyboard-macros'. You say "new mode", but don't mention the mode or its name. Also, since the manuals have been updated by the patch, this entry should be marked with "+++". > +(defvar tabulated-list-format) > +(defvar tabulated-list-entries) > +(defvar tabulated-list-sort-key) > +(declare-function tabulated-list-init-header "tabulated-list" ()) > +(declare-function tabulated-list-print "tabulated-list" > + (&optional remember-pos update)) tabulated-list is preloaded, so I don't think these are needed. > +(defface kmacro-menu-mark '((t (:inherit font-lock-constant-face))) > + "Face used for the Keyboard Macro Menu marks." > + :group 'kmacro) > + > +(defface kmacro-menu-flagged '((t (:inherit error))) > + "Face used for keyboard macros flagged for deletion." > + :group 'kmacro) > + > +(defface kmacro-menu-marked '((t (:inherit warning))) > + "Face used for keyboard macros marked for duplication." > + :group 'kmacro) Please add a :version tag to new faces. > +(define-derived-mode kmacro-menu-mode tabulated-list-mode > + "Keyboard Macro Menu" > + "Major mode for listing keyboard macros." ^^^^^^^ "listing and editing", I think? > +(defun kmacro-menu--kmacros () > + "Return a list of the existing keyboard macros." ^^^^^^ "the list" Also, I think this should say "or nil, if none are defined". > +(defun kmacro-menu--map-ids (function) > + "Map a FUNCTION to the current table entry IDs in order. Our style is to say "Map FUNCTION", without "a". Better yet, say "Apply FUNCTION to current table's entries in order." > +Returns a list of the output of FUNCTION." "Return", to be consistent with "Map". > +(defun kmacro-menu--update (kmacros) > + "Update the variables for the current and previous keyboard macros. This doc string doesn't say what are the "variables" to which it alludes. > +(defun kmacro-menu--update-at (kmacro n) > + "Update to KMACRO at position N." Not sure I understand what you mean by "Update to" here. Update what? > + (kmacro-menu--update > + (kmacro-menu--map-ids (lambda (id) > + (if (= n (kmacro-menu--id-position id)) > + kmacro > + (kmacro-menu--id-kmacro id)))))) > + > +(defun kmacro-menu--query-revert () > + "When the table differs from the existing macros, ask whether to revert table." ^^^^ Not "When", but "If", right? > + (interactive) Interactive functions (i.e. commands) should never be internal, so the double-dash in the name is inappropriate. > + (when (and (not (equal (kmacro-menu--kmacros) > + (kmacro-menu--map-ids #'kmacro-menu--id-kmacro))) > + (yes-or-no-p "Table does not match existing keyboard macros. Stop and revert table?")) > + (tabulated-list-revert) > + (signal 'quit nil))) > + > +(defun kmacro-menu--assert-row (&optional id) > + "Signal an error if point is not on a table row. > + > +ID is the tabulated list id of the supposed entry at point." > + (unless (or id (tabulated-list-get-id)) > + (user-error "Not on a table row"))) > + > +(defun kmacro-menu--propertize-keys (face) > + "Redisplay the macro at point with FACE." > + (let ((data (tabulated-list-delete-entry))) > + (setf (aref (cadr data) 4) (propertize (aref (cadr data) 4) 'face face)) > + (tabulated-list-print-entry (car data) (cadr data))) > + (forward-line -1)) > + > +(defun kmacro-menu--do-region (function &optional no-region-halt) > + "Run FUNCTION on macros in the region or on the current line. This doesn't explain when it operates on region and when on the current line. > +(defun kmacro-menu-flag-for-deletion () > + "Flag the keyboard macro for deletion by `kmacro-menu-do-flagged-delete'. > + > +If the region is active, then flag all macros in the region." ^^^^^^^^^^^^^^^^^^^^^^^ And if not? > +(defun kmacro-menu-unmark () > + "Unmark and unflag the keyboard macro at point. > + > +If the region is active, then unmark all macros in the region." The last sentence should say "instead" at the end, to make it clear that this is alternative to the previous sentence. > +(defun kmacro-menu-edit-format () > + "Edit the counter format of the keyboard macro at point." Should the doc string say more about what is a valid format that the user can type. > +(defun kmacro-menu-edit-counter () > + "Edit the counter of the keyboard macro at point." Any motivation? why would a user want to edit the counter? Last, but not least: please consider making at least some of the commands in this patch specific to kmacro-menu-mode. From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 06 19:26:46 2024 Received: (at 70208) by debbugs.gnu.org; 6 Apr 2024 23:26:46 +0000 Received: from localhost ([127.0.0.1]:41266 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rtFQq-0003YM-6i for submit@debbugs.gnu.org; Sat, 06 Apr 2024 19:26:46 -0400 Received: from mail-40134.protonmail.ch ([185.70.40.134]:33893) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rtFQk-0003Wu-3F for 70208@debbugs.gnu.org; Sat, 06 Apr 2024 19:26:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1712445984; x=1712705184; bh=nAxWnDFTTqhJwUnyWL75NqFSEwGUMPXKUXPeKXEvfxs=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=aIyiwTnGMaN4j0AdALiKAdTnwQ7jYj7KSoCqaw4wncXDrm705jMMngO4H6Hb60gT5 k4thRDbqFBy+w2q0CQ5qoe0nRacMzl5tnTrinPu2R1gCCTGZL9pAes6gCsplPA4tSc nxVTz5XuMBfhTb7WGUyPPu0JuYcSffqVnFO1CpdBkI5YUy+jt0cGNPAKM8SQTGd7qY cW7l6TKT283QavPLrUs7Jq130+Ukk97reTIcgz/RoXfUHuqshASXURxoeLsErHDJm2 wwRdYgK8puNZL0pdW5frN5579bVioFrBH22x5K2H8t33vONpgEpj/77I/Oi6NGPlCl uqkHA2//aiobw== Date: Sat, 06 Apr 2024 23:26:15 +0000 To: Eli Zaretskii From: Okamsn Subject: Re: bug#70208: [PATCH] Add command `list-keyboard-macros` Message-ID: <8dd6fcfa-2fc0-4371-b5a9-1f451ff1e9a4@protonmail.com> In-Reply-To: <86msq85o7n.fsf@gnu.org> References: <86msq85o7n.fsf@gnu.org> Feedback-ID: 25935600:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_ARlJZH7KfoRCL5Ziruu9GLcJJJDgayr6hFHXuYrPgw" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 70208 Cc: 70208@debbugs.gnu.org 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: -1.0 (-) This is a multi-part message in MIME format. --b1_ARlJZH7KfoRCL5Ziruu9GLcJJJDgayr6hFHXuYrPgw Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Eli Zaretskii wrote: >> --- a/doc/emacs/kmacro.texi >> +++ b/doc/emacs/kmacro.texi >> @@ -24,6 +24,12 @@ Keyboard Macros >> keyboard macro is defined and also has been, in effect, executed once. >> You can then do the whole thing over again by invoking the macro. >> >> + The list of defined keyboard macros can be seen via @kbd{M-x >> +list-keyboard-macros @key{RET}}. This command can be used to re-order >> +the list of defined macros (the @dfn{keyboard macro ring}) and to edit >> +the properties of those keyboard macros, which are described in the >> +following subsections. >=20 > Please rewrite this not to use passive tense so much ("can be seen", > "can be used"). >=20 > Also, I think this command should be documented in more detail, > including the commands in kmacro-menu-mode-map, later in the manual. > In any case, each documented command should be indexed, with an > explicit @findex. I moved the description to its own section. How is it now? I copied part=20 of the Texinfo documentation of `list-buffers` and the Buffer Menu node. >> +*** New mode and new command 'list-keyboard-macros'. >=20 > You say "new mode", but don't mention the mode or its name. >=20 > Also, since the manuals have been updated by the patch, this entry > should be marked with "+++". Done. >> +(defvar tabulated-list-format) >> +(defvar tabulated-list-entries) >> +(defvar tabulated-list-sort-key) >> +(declare-function tabulated-list-init-header "tabulated-list" ()) >> +(declare-function tabulated-list-print "tabulated-list" >> + (&optional remember-pos update)) >=20 > tabulated-list is preloaded, so I don't think these are needed. Removed. >> +(defface kmacro-menu-mark '((t (:inherit font-lock-constant-face))) >> + "Face used for the Keyboard Macro Menu marks." >> + :group 'kmacro) >> + >> +(defface kmacro-menu-flagged '((t (:inherit error))) >> + "Face used for keyboard macros flagged for deletion." >> + :group 'kmacro) >> + >> +(defface kmacro-menu-marked '((t (:inherit warning))) >> + "Face used for keyboard macros marked for duplication." >> + :group 'kmacro) >=20 > Please add a :version tag to new faces. Done. >> +(define-derived-mode kmacro-menu-mode tabulated-list-mode >> + "Keyboard Macro Menu" >> + "Major mode for listing keyboard macros." > ^^^^^^^ > "listing and editing", I think? Done. >> +(defun kmacro-menu--kmacros () >> + "Return a list of the existing keyboard macros." > ^^^^^^ > "the list" >=20 > Also, I think this should say "or nil, if none are defined". Changed. >> +(defun kmacro-menu--map-ids (function) >> + "Map a FUNCTION to the current table entry IDs in order. >=20 > Our style is to say "Map FUNCTION", without "a". >=20 > Better yet, say "Apply FUNCTION to current table's entries in order." >=20 >> +Returns a list of the output of FUNCTION." >=20 > "Return", to be consistent with "Map". Changed. >> +(defun kmacro-menu--update (kmacros) >> + "Update the variables for the current and previous keyboard macros. >=20 > This doc string doesn't say what are the "variables" to which it > alludes. Changed. >> +(defun kmacro-menu--update-at (kmacro n) >> + "Update to KMACRO at position N." >=20 > Not sure I understand what you mean by "Update to" here. Update what? I changed the functions to use "replace" instead of "update". What I=20 meant was that only existing keyboard macro at that position would be=20 replaced. The others would be re-used. >> + (kmacro-menu--update >> + (kmacro-menu--map-ids (lambda (id) >> + (if (=3D n (kmacro-menu--id-position id)) >> + kmacro >> + (kmacro-menu--id-kmacro id)))))) >> + >> +(defun kmacro-menu--query-revert () >> + "When the table differs from the existing macros, ask whether to reve= rt table." > ^^^^ > Not "When", but "If", right? Yes. Changed. >> + (interactive) >=20 > Interactive functions (i.e. commands) should never be internal, so the > double-dash in the name is inappropriate. That function wasn't meant to be a command. I removed the `interactive` use= . > ...=20 I changed the wording of the commands that act on the region when there=20 is one. Please check them again. >=20 >> +(defun kmacro-menu-edit-format () >> + "Edit the counter format of the keyboard macro at point." >=20 > Should the doc string say more about what is a valid format that the > user can type. I added that. >> +(defun kmacro-menu-edit-counter () >> + "Edit the counter of the keyboard macro at point." >=20 > Any motivation? why would a user want to edit the counter? Sometimes, I want to fix a mistake in a keyboard macro and then re-run=20 it with a previous counter value. Another possibility is duplicating a=20 macro, changing the definition somewhat for a different context, and=20 then setting the counter back to 0 or another value. > Last, but not least: please consider making at least some of the > commands in this patch specific to kmacro-menu-mode. That is what I meant to do by giving the mode in the `declare` form. I=20 added the mode for the `interactive` form too. Is that what you mean? Thank you. --b1_ARlJZH7KfoRCL5Ziruu9GLcJJJDgayr6hFHXuYrPgw Content-Type: text/x-patch; charset=UTF-8; name=v2-0001-Add-command-list-keyboard-macros-that-works-like-.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Add-command-list-keyboard-macros-that-works-like-.patch RnJvbSA3Yzk1ODlmZGJmZjIyOGE0MDBhMWFmNTE2OWU5NTMyMWZmNDllZTdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFYXJsIEh5YXR0IDxva2Ftc25AcHJvdG9ubWFpbC5jb20+CkRh dGU6IFN1biwgMjQgTWFyIDIwMjQgMTE6NDk6MjEgLTA0MDAKU3ViamVjdDogW1BBVENIIHYyXSBB ZGQgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIHRoYXQgd29ya3MgbGlrZQogJ2xpc3Qt YnVmZmVycycuCgpUaGUgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIGFsbG93cyBlZGl0 aW5nIGFuZCByZS1hcnJhbmdpbmcKbWFjcm9zIHVzaW5nICd0YWJ1bGF0ZWQtbGlzdC1tb2RlJy4g IEV4aXN0aW5nIGtleWJvYXJkIG1hY3JvcyBjYW4gYmUKZHVwbGljYXRlZCBvciBkZWxldGVkLiAg TWFjcm8gY291bnRlcnMgYW5kIGNvdW50ZXIgZm9ybWF0cyBjYW4gdGFrZSBuZXcKdmFsdWVzIHJl YWQgZnJvbSB0aGUgbWluaWJ1ZmZlci4gIE1hY3JvIGtleXMgY2FuIGJlIGVkaXRlZCB1c2luZwon ZWRpdC1rYmQtbWFjcm8nLgoKKiBkb2MvZW1hY3Mva21hY3JvLnRleGkgKEttYWNybyBNZW51KTog RG9jdW1lbnQgdGhlIG5ldyBjb21tYW5kCmFuZCB0aGUgbWVudSdzIGNvbW1hbmRzLgoqIGV0Yy9O RVdTIChLbWFjcm8gTWVudSBNb2RlKTogTWVudGlvbiB0aGUgbmV3IG1vZGUgYW5kIGNvbW1hbmQu CiogbGlzcC9rbWFjcm8uZWwgKGttYWNyby1tZW51LW1hcmssIGttYWNyby1tZW51LW1hcmtlZCkK KGttYWNyby1tZW51LWZsYWdnZWQpOiBBZGQgZmFjZXMgZm9yIG1hcmtzIGFuZCBmbGFncy4KKiBs aXNwL2ttYWNyby5lbCAoa21hY3JvLW1lbnUtbW9kZS1tYXAsIGttYWNyby1tZW51LW1vZGUpOiBB ZGQgbW9kZQphbmQgbWFwLgoqIGxpc3Ava21hY3JvLmVsIChsaXN0LWtleWJvYXJkLW1hY3Jvcywg a21hY3JvLW1lbnUpOiBBZGQgY29tbWFuZC4KKiBsaXNwL2ttYWNyby5lbCAoa21hY3JvLW1lbnUt LWRlbGV0aW9uLWZsYWdzLCBrbWFjcm8tbWVudS0tbWFya3MpCihrbWFjcm8tbWVudS0taWQta21h Y3JvLCBrbWFjcm8tbWVudS0taWQtcG9zaXRpb24sIGttYWNyby1tZW51LS1rbWFjcm9zKQooa21h Y3JvLW1lbnUtLXJlZnJlc2gsIGttYWNyby1tZW51LS1tYXAtaWRzLCBrbWFjcm8tbWVudS0tcmVw bGFjZS1hbGwpCihrbWFjcm8tbWVudS0tcmVwbGFjZS1hdCwga21hY3JvLW1lbnUtLXF1ZXJ5LXJl dmVydCwga21hY3JvLW1lbnUtLWFzc2VydC1yb3cpCihrbWFjcm8tbWVudS0tcHJvcGVydGl6ZS1r ZXlzLCBrbWFjcm8tbWVudS0tZG8tcmVnaW9uKQooa21hY3JvLW1lbnUtLW1hcmtzLWV4aXN0LXAp OiBBZGQgdXRpbGl0eSBmdW5jdGlvbnMgb2YgbW9kZQphbmQgY29tbWFuZHMuCiogbGlzcC9rbWFj cm8uZWwgKGttYWNyby1tZW51LW1hcmssIGttYWNyby1tZW51LWZsYWctZm9yLWRlbGV0aW9uKQoo a21hY3JvLW1lbnUtdW5tYXJrLCBrbWFjcm8tbWVudS11bm1hcmstYmFja3dhcmQpCihrbWFjcm8t bWVudS11bm1hcmstYWxsKTogQWRkIGNvbW1hbmRzIGZvciBtYXJrcyBhbmQgZmxhZ3MuCiogbGlz cC9rbWFjcm8uZWwgKGttYWNyby1tZW51LWRvLWZsYWdnZWQtZGVsZXRlLCBrbWFjcm8tbWVudS1k by1jb3B5KQooa21hY3JvLW1lbnUtZG8tZGVsZXRlKTogQWRkIGNvbW1hbmRzIHRoYXQgbW9kaWZ5 IHRoZSByaW5nLgoqIGxpc3Ava21hY3JvLmVsIChrbWFjcm8tbWVudS1lZGl0LXBvc2l0aW9uLCBr bWFjcm8tbWVudS10cmFuc3Bvc2UpCihrbWFjcm8tbWVudS1lZGl0LWZvcm1hdCwga21hY3JvLW1l bnUtZWRpdC1jb3VudGVyKQooa21hY3JvLW1lbnUtZWRpdC1rZXlzLCBrbWFjcm8tbWVudS1lZGl0 LWNvbHVtbik6IEFkZCBjb21tYW5kcyB0aGF0Cm1vZGlmeSBhIGtleWJvYXJkIG1hY3JvLgotLS0K IGRvYy9lbWFjcy9rbWFjcm8udGV4aSB8IDE1OCArKysrKysrKysrKysrCiBldGMvTkVXUyAgICAg ICAgICAgICAgfCAgMTAgKwogbGlzcC9rbWFjcm8uZWwgICAgICAgIHwgNTIzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA2OTEgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9rbWFjcm8udGV4aSBiL2RvYy9lbWFj cy9rbWFjcm8udGV4aQppbmRleCBlMzBkZWYzNDQ3NS4uMGUyMjM2MzU1ZjIgMTAwNjQ0Ci0tLSBh L2RvYy9lbWFjcy9rbWFjcm8udGV4aQorKysgYi9kb2MvZW1hY3Mva21hY3JvLnRleGkKQEAgLTQy LDYgKzQyLDggQEAgS2V5Ym9hcmQgTWFjcm9zCiAqIEVkaXQgS2V5Ym9hcmQgTWFjcm86OiAgICAg IEVkaXRpbmcga2V5Ym9hcmQgbWFjcm9zLgogKiBLZXlib2FyZCBNYWNybyBTdGVwLUVkaXQ6OiBJ bnRlcmFjdGl2ZWx5IGV4ZWN1dGluZyBhbmQgZWRpdGluZyBhIGtleWJvYXJkCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWFjcm8uCisqIEttYWNybyBNZW51OjogICAgICAgICAgICAg IEFuIGludGVyZmFjZSBmb3Igdmlld2luZyBhbmQgZWRpdGluZworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGtleWJvYXJkIG1hY3JvcyBhbmQgdGhlIGtleWJvYXJkIG1hY3JvIHJpbmcu CiBAZW5kIG1lbnUKIAogQG5vZGUgQmFzaWMgS2V5Ym9hcmQgTWFjcm8KQEAgLTYxNiwzICs2MTgs MTU5IEBAIEtleWJvYXJkIE1hY3JvIFN0ZXAtRWRpdAoga2V5Ym9hcmQgbWFjcm87IGl0IHRoZW4g dGVybWluYXRlcyB0aGUgc3RlcC1lZGl0aW5nIGFuZCByZXBsYWNlcyB0aGUKIG9yaWdpbmFsIGtl eWJvYXJkIG1hY3JvIHdpdGggdGhlIGVkaXRlZCBtYWNyby4KIEBlbmQgaXRlbWl6ZQorCitAbm9k ZSBLbWFjcm8gTWVudQorQHNlY3Rpb24gTGlzdGluZyBLZXlib2FyZCBNYWNyb3MKK0BjaW5kZXgg S21hY3JvIE1lbnUKKworQGNpbmRleCBsaXN0aW5nIGN1cnJlbnQga2V5Ym9hcmQgbWFjcm9zCitA a2luZGV4IE0teCBsaXN0LWtleWJvYXJkLW1hY3JvcyBAa2V5e1JFVH0KK0BmaW5kZXgga21hY3Jv LW1lbnUKK0BmaW5kZXggbGlzdC1rZXlib2FyZC1tYWNyb3MKKyAgVG8gZGlzcGxheSBhIGxpc3Qg b2YgZXhpc3Rpbmcga2V5Ym9hcmQgbWFjcm9zLCB0eXBlIEBrYmR7TS14CitsaXN0LWtleWJvYXJk LW1hY3JvcyBAa2V5e1JFVH19LiAgVGhpcyBwb3BzIHVwIHRoZSBAZGZue0ttYWNybyBNZW51fSBp bgorYSBidWZmZXIgbmFtZWQgQGZpbGV7KktleWJvYXJkIE1hY3JvIExpc3QqfS4gIEVhY2ggbGlu ZSBpbiB0aGUgbGlzdAorc2hvd3Mgb25lIG1hY3JvJ3MgcG9zaXRpb24sIGNvdW50ZXIgdmFsdWUs IGNvdW50ZXIgZm9ybWF0LCB0aGF0IGNvdW50ZXIKK3ZhbHVlIHVzaW5nIHRoYXQgZm9ybWF0LCBh bmQgbWFjcm8ga2V5cy4gIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1hY3JvCitsaXN0OgorCitA c21hbGxleGFtcGxlCitQb3NpdGlvbiAgQ291bnRlciAgRm9ybWF0ICAgRm9ybWF0dGVkICBLZXlz CiswICAgICAgICAgICAgICAgMSAgJTAyZCAgICAgMDEgICAgICAgICBOIDogU1BDIDxGMz4gUkVU CisxICAgICAgICAgICAgICAgMCAgJWQgICAgICAgMCAgICAgICAgICBsIG8gbiBnIFNQQyBwIGgg ciBhIHMgZQorQGVuZCBzbWFsbGV4YW1wbGUKKworQG5vaW5kZW50CitUaGUgbWFjcm9zIGFyZSBs aXN0ZWQgd2l0aCB0aGUgY3VycmVudCBtYWNybyBhdCB0aGUgdG9wIGluIHBvc2l0aW9uIHplcm8K K2FuZCB0aGUgb2xkZXIgbWFjcm9zIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBmb3Vu ZCBpbiB0aGUgbWFjcm8KK3JpbmcgKEBweHJlZntLZXlib2FyZCBNYWNybyBSaW5nfSkuICBVc2lu ZyB0aGUgS21hY3JvIE1lbnUsIHlvdSBjYW4KK2NoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIG1hY3Jv cyBhbmQgY2hhbmdlIHRoZWlyIGNvdW50ZXJzLCBjb3VudGVyCitmb3JtYXRzLCBhbmQga2V5cy4g IFRoZSBLbWFjcm8gTWVudSBpcyBhIHJlYWQtb25seSBidWZmZXIsIGFuZCBjYW4gYmUKK2NoYW5n ZWQgb25seSB0aHJvdWdoIHRoZSBzcGVjaWFsIGNvbW1hbmRzIGRlc2NyaWJlZCBpbiB0aGlzIHNl Y3Rpb24uCitBZnRlciBhIGNvbW1hbmQgaXMgcnVuLCB0aGUgS21hY3JvIE1lbnUgcmVzZXRzIHRv IHNob3cgdGhlIG5ldyB2YWx1ZXMgb2YKK3RoZSBtYWNybyBwcm9wZXJ0aWVzIGFuZCB0aGUgbWFj cm8gcmluZy4gIFRoZSB1c3VhbCBjdXJzb3IgbW90aW9uCitjb21tYW5kcyBjYW4gYmUgdXNlZCBp biB0aGlzIGJ1ZmZlci4KKworICBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRv IGNoYW5nZSBhIG1hY3JvJ3MgcHJvcGVydGllczoKKworQHRhYmxlIEBrYmQKK0BpdGVtICMKK0Bm aW5kZXgga21hY3JvLW1lbnUtZWRpdC1wb3NpdGlvbgorQGtpbmRleCAjIEByeyhLbWFjcm8gTWVu dSl9CitDaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5l CisoQHB4cmVme0tleWJvYXJkIE1hY3JvIFJpbmd9KS4KKworQGl0ZW0gQy14IEMtdAorQGZpbmRl eCBrbWFjcm8tbWVudS10cmFuc3Bvc2UKK0BraW5kZXggQy14IEMtdCBAcnsoS21hY3JvIE1lbnUp fQorTW92ZSB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZSB0byB0aGUgbGluZSBhYm92ZSwg bGlrZSBpbgorQGNvZGV7dHJhbnNwb3NlLWxpbmVzfS4KKworQGl0ZW0gYworQGZpbmRleCBrbWFj cm8tbWVudS1lZGl0LWNvdW50ZXIKK0BraW5kZXggYyBAcnsoS21hY3JvIE1lbnUpfQorQ2hhbmdl IHRoZSBjb3VudGVyIHZhbHVlIG9mIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lCisoQHB4 cmVme0tleWJvYXJkIE1hY3JvIENvdW50ZXJ9KS4KKworQGl0ZW0gZgorQGZpbmRleCBrbWFjcm8t bWVudS1lZGl0LWZvcm1hdAorQGtpbmRleCBmIEByeyhLbWFjcm8gTWVudSl9CitDaGFuZ2UgdGhl IGNvdW50ZXIgZm9ybWF0IG9mIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lLgorCitAaXRl bSBlCitAZmluZGV4IGttYWNyby1tZW51LWVkaXQta2V5cworQGtpbmRleCBlIEByeyhLbWFjcm8g TWVudSl9CitDaGFuZ2UgdGhlIGtleXMgb2YgdGhlIG1hY3JvIG9uIHRoZSBjdXJyZW50IGxpbmUg dXNpbmcKK0Bjb2Rle2VkaXQta2JkLW1hY3JvfSAoQHB4cmVme0VkaXQgS2V5Ym9hcmQgTWFjcm99 KS4KKworQGl0ZW0gQGtleXtSRVR9CitAZmluZGV4IGttYWNyby1tZW51LWVkaXQtY29sdW1uCitA a2luZGV4IEBrZXl7UkVUfSBAcnsoS21hY3JvIE1lbnUpfQorQ2hhbmdlIHRoZSB2YWx1ZSBpbiB0 aGUgY3VycmVudCBjb2x1bW4gb2YgdGhlIG1hY3JvIG9uIHRoZSBjdXJyZW50IGxpbmUKK3VzaW5n IGNvbW1hbmRzIGFib3ZlLgorQGVuZCB0YWJsZQorCisgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMg ZGVsZXRlIG9yIGR1cGxpY2F0ZSBtYWNyb3MgaW4gdGhlIGxpc3Q6CisKK0B0YWJsZSBAa2JkCitA aXRlbSBkCitAZmluZGV4IGttYWNyby1tZW51LWZsYWctZm9yLWRlbGV0aW9uCitAaXRlbSBkIEBy eyhLbWFjcm8gTWVudSl9CitGbGFnIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lIGZvciBk ZWxldGlvbiwgdGhlbiBtb3ZlIHBvaW50IHRvIHRoZQorbmV4dCBsaW5lIChAY29kZXtrbWFjcm8t bWVudS1mbGFnLWZvci1kZWxldGlvbn0pLiAgVGhlIGRlbGV0aW9uIGZsYWcgaXMKK2luZGljYXRl ZCBieSB0aGUgY2hhcmFjdGVyIEBzYW1we0R9IGF0IHRoZSBzdGFydCBvZiBsaW5lLiAgVGhlIGRl bGV0aW9uCitvY2N1cnMgb25seSB3aGVuIHlvdSB0eXBlIHRoZSBAa2Jke3h9IGNvbW1hbmQgKHNl ZSBiZWxvdykuCisKKyAgSWYgdGhlIHJlZ2lvbiBpcyBhY3RpdmUsIHRoaXMgY29tbWFuZCBmbGFn cyBhbGwgb2YgdGhlIG1hY3JvcyBpbiB0aGUKK3JlZ2lvbi4KKworQGl0ZW0geAorQGZpbmRleCBr bWFjcm8tbWVudS1kby1mbGFnZ2VkLWRlbGV0ZQorQGl0ZW0geCBAcnsoS21hY3JvIE1lbnUpfQor RGVsZXRlIHRoZSBtYWNyb3MgaW4gdGhlIGxpc3QgdGhhdCBoYXZlIGJlZW4gZmxhZ2dlZCBmb3Ig ZGVsZXRpb24KKyhAY29kZXtrbWFjcm8tbWVudS1kby1mbGFnZ2VkLWRlbGV0ZX0pLgorCitAaXRl bSBtCitAZmluZGV4IGttYWNyby1tZW51LW1hcmsKK0BpdGVtIG0gQHJ7KEttYWNybyBNZW51KX0K K01hcmsgdGhlIG1hY3JvIG9uIHRoZSBjdXJyZW50IGxpbmUsIHRoZW4gbW92ZSBwb2ludCB0byB0 aGUgbmV4dCBsaW5lCisoQGNvZGV7a21hY3JvLW1lbnUtbWFya30pLiAgTWFya2VkIG1hY3JvcyBh cmUgaW5kaWNhdGVkIGJ5IHRoZSBjaGFyYWN0ZXIKK0BzYW1weyp9IGF0IHRoZSBzdGFydCBvZiBs aW5lLiAgTWFya2VkIG1hY3JvcyBjYW4gYmUgb3BlcmF0ZWQgb24gYnkgdGhlCitAa2Jke0N9IGFu ZCBAa2Jke0R9IGNvbW1hbmRzIChzZWUgYmVsb3cpLgorCisgIElmIHRoZSByZWdpb24gaXMgYWN0 aXZlLCB0aGlzIGNvbW1hbmQgbWFya3MgYWxsIG9mIHRoZSBtYWNyb3MgaW4gdGhlCityZWdpb24u CisKK0BpdGVtIEMKK0BmaW5kZXgga21hY3JvLW1lbnUtZG8tY29weQorQGl0ZW0gQyBAcnsoS21h Y3JvIE1lbnUpfQorVGhpcyBjb21tYW5kIGNvcGllcyBtYWNyb3MgYnkgZHVwbGljYXRpbmcgdGhl bSBhdCB0aGVpciBjdXJyZW50Citwb3NpdGlvbnMgaW4gdGhlIGxpc3QgKEBjb2Rle2ttYWNyby1t ZW51LWRvLWNvcHl9KS4gIEZvciBleGFtcGxlLAorcnVubmluZyB0aGlzIGNvbW1hbmQgb24gdGhl IG1hY3JvIGF0IHBvc2l0aW9uIHplcm8gd2lsbCBpbnNlcnQgYSBjb3B5IG9mCit0aGF0IG1hY3Jv IGludG8gcG9zaXRpb24gMSBhbmQgbW92ZSB0aGUgcmVtYWluaW5nIG1hY3JvcyBkb3duLgorCisg IElmIHRoZSByZWdpb24gaXMgYWN0aXZlLCB0aGlzIGNvbW1hbmQgZHVwbGljYXRlcyB0aGUgbWFj cm9zIGluIHRoZQorcmVnaW9uLiAgT3RoZXJ3aXNlLCBpZiB0aGVyZSBhcmUgbWFya2VkIG1hY3Jv cywgdGhpcyBjb21tYW5kIGR1cGxpY2F0ZXMKK3RoZSBtYXJrZWQgbWFjcm9zLiAgSWYgdGhlcmUg aXMgbm8gcmVnaW9uIG5vciBhcmUgdGhlcmUgbWFya2VkIG1hY3JvcywKK3RoaXMgY29tbWFuZCBk dXBsaWNhdGVzIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lLiAgSW4gdGhlIGZpcnN0IHR3 bworY2FzZXMsIHRoZSBjb21tYW5kIHByb21wdHMgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgZHVw bGljYXRpb24uCisKK0BpdGVtIEQKK0BmaW5kZXgga21hY3JvLW1lbnUtZG8tZGVsZXRlCitAaXRl bSBEIEByeyhLbWFjcm8gTWVudSl9CitUaGlzIGNvbW1hbmQgZGVsZXRlcyBtYWNyb3MsIHJlbW92 aW5nIHRoZW0gZnJvbSB0aGUgcmluZworKEBjb2Rle2ttYWNyby1tZW51LWRvLWRlbGV0ZX0pLiAg Rm9yIGV4YW1wbGUsIHJ1bm5pbmcgdGhpcyBjb21tYW5kIG9uCit0aGUgbWFjcm8gYXQgcG9zaXRp b24gemVybyB3aWxsIGRlbGV0ZSB0aGUgY3VycmVudCBtYWNybyBhbmQgdGhlbiBtYWtlCit0aGUg Zmlyc3QgbWFjcm8gaW4gdGhlIG1hY3JvIHJpbmcgKHByZXZpb3VzbHkgYXQgcG9zaXRpb24gb25l KSB0aGUgbmV3CitjdXJyZW50IG1hY3JvLCBwb3BwaW5nIGl0IGZyb20gdGhlIHJpbmcuCisKKyAg SWYgdGhlIHJlZ2lvbiBpcyBhY3RpdmUsIHRoaXMgY29tbWFuZCBkZWxldGVzIHRoZSBtYWNyb3Mg aW4gdGhlCityZWdpb24uICBPdGhlcndpc2UsIGlmIHRoZXJlIGFyZSBtYXJrZWQgbWFjcm9zLCB0 aGlzIGNvbW1hbmQgZGVsZXRlcyB0aGUKK21hcmtlZCBtYWNyb3MuICBJZiB0aGVyZSBpcyBubyBy ZWdpb24gbm9yIGFyZSB0aGVyZSBtYXJrZWQgbWFjcm9zLCB0aGlzCitjb21tYW5kIGRlbGV0ZXMg dGhlIG1hY3JvIG9uIHRoZSBjdXJyZW50IGxpbmUuICBJbiBhbGwgY2FzZXMsIHRoZQorY29tbWFu ZCBwcm9tcHRzIGZvciBjb25maXJtYXRpb24gYmVmb3JlIGR1cGxpY2F0aW9uLgorCisgIFRoaXMg Y29tbWFuZCBpcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgQGtiZHtkfSBhbmQgQGtiZHt4fSBjb21t YW5kcworKHNlZSBhYm92ZSkuCisKK0BpdGVtIHUKK0BmaW5kZXgga21hY3JvLW1lbnUtdW5tYXJr CitAaXRlbSB1IEByeyhLbWFjcm8gTWVudSl9CitVbm1hcmsgYW5kIHVuZmxhZyB0aGUgbWFjcm8g b24gdGhlIGN1cnJlbnQgbGluZSwgdGhlbiBtb3ZlIHBvaW50IGRvd24KK3RvIHRoZSBuZXh0IGxp bmUgKEBjb2Rle2ttYWNyby1tZW51LXVubWFya30pLiAgSWYgdGhlcmUgaXMgYW4gYWN0aXZlCity ZWdpb24sIHRoaXMgY29tbWFuZCB1bm1hcmtzIGFuZCB1bmZsYWdzIGFsbCBvZiB0aGUgbWFjcm9z IGluIHRoZQorcmVnaW9uLgorCitAaXRlbSBAa2V5e0RFTH0KK0BmaW5kZXgga21hY3JvLW1lbnUt dW5tYXJrLWJhY2t3YXJkCitAaXRlbSBAa2V5e0RFTH0gQHJ7KEttYWNybyBNZW51KX0KK0xpa2Ug dGhlIEBrYmR7dX0gY29tbWFuZCAoc2VlIGFib3ZlKSwgYnV0IG1vdmUgcG9pbnQgdXAgdG8gdGhl IHByZXZpb3VzCitsaW5lIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIHJlZ2lvbgorKEBjb2Rle2tt YWNyby1tZW51LXVubWFyay1iYWNrd2FyZH0pLgorCitAaXRlbSBVCitAZmluZGV4IGttYWNyby1t ZW51LXVubWFyay1hbGwKK0BpdGVtIFUgQHJ7KEttYWNybyBNZW51KX0KK1VubWFyayBhbmQgdW5m bGFnIGFsbCBtYWNyb3MgaW4gdGhlIGxpc3QKKyhAY29kZXtrbWFjcm8tbWVudS11bm1hcmstYWxs fSkuCitAZW5kIHRhYmxlCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IGVk YTg0ZDU4OGE4Li43YzdjMjY2MjZhNiAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05F V1MKQEAgLTEzODgsNiArMTM4OCwxNiBAQCBXaGVuIHRoaXMgaXMgbm9uLW5pbCwgdGhlIGxpbmVz IG9mIGtleSBzZXF1ZW5jZXMgYXJlIGRpc3BsYXllZCB3aXRoCiB0aGUgbW9zdCByZWNlbnQgbGlu ZSBmaXJzdC4gIFRoaXMgaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHdvcmtpbmcgd2l0aAogbWFjcm9z IHdpdGggbWFueSBsaW5lcywgc3VjaCBhcyBmcm9tICdrbWFjcm8tZWRpdC1sb3NzYWdlJy4KIAor KiogS21hY3JvIE1lbnUgTW9kZQorCisrKysKKyoqKiBOZXcgbW9kZSAna21hY3JvLW1lbnUtbW9k ZScgYW5kIG5ldyBjb21tYW5kICdsaXN0LWtleWJvYXJkLW1hY3JvcycuCitUaGUgbmV3IGNvbW1h bmQgJ2xpc3Qta2V5Ym9hcmQtbWFjcm9zJyB0aGUgbWFjcm8gdmVyc2lvbiBvZiBjb21tYW5kcwor bGlrZSAnbGlzdC1idWZmZXJzJyBhbmQgJ2xpc3QtcHJvY2Vzc2VzJywgY3JlYXRpbmcgYSBsaXN0 aW5nIG9mIHRoZQorY3VycmVudGx5IGV4aXN0aW5nIGtleWJvYXJkcyBtYWNyb3MgdXNpbmcgdGhl IG5ldyAna21hY3JvLW1lbnUtbW9kZScuCitJdCBhbGxvd3MgcmVhcnJhbmdpbmcgdGhlIG1hY3Jv cyBpbiB0aGUgcmluZywgZHVwbGljYXRpbmcgdGhlbSwgZGVsZXRpbmcKK3RoZW0sIGFuZCBlZGl0 aW5nIHRoZWlyIGNvdW50ZXJzLCBmb3JtYXRzLCBhbmQga2V5cy4KKwogKiogTWlzY2VsbGFuZW91 cwogCiAtLS0KZGlmZiAtLWdpdCBhL2xpc3Ava21hY3JvLmVsIGIvbGlzcC9rbWFjcm8uZWwKaW5k ZXggODk3ZWJmMTQzMzAuLjVlOTg1NTQ2YzM3IDEwMDY0NAotLS0gYS9saXNwL2ttYWNyby5lbAor KysgYi9saXNwL2ttYWNyby5lbApAQCAtMTM4OCw2ICsxMzg4LDUyOSBAQCBrbWFjcm8tcmVkaXNw bGF5CiAgICAgKGxldCAoKGV4ZWN1dGluZy1rYmQtbWFjcm8gbmlsKSkKICAgICAgIChyZWRpc3Bs YXkpKSkpCiAKKzs7OyBNb2RlIGFuZCBjb21tYW5kcyBmb3Igd29ya2luZyB3aXRoIHRoZSByaW5n IGluIGEgdGFibGUKKworKGRlZmZhY2Uga21hY3JvLW1lbnUtbWFyayAnKCh0ICg6aW5oZXJpdCBm b250LWxvY2stY29uc3RhbnQtZmFjZSkpKQorICAiRmFjZSB1c2VkIGZvciB0aGUgS2V5Ym9hcmQg TWFjcm8gTWVudSBtYXJrcy4iCisgIDpncm91cCAna21hY3JvCisgIDp2ZXJzaW9uICIzMC4wLjUw IikKKworKGRlZmZhY2Uga21hY3JvLW1lbnUtZmxhZ2dlZCAnKCh0ICg6aW5oZXJpdCBlcnJvcikp KQorICAiRmFjZSB1c2VkIGZvciBrZXlib2FyZCBtYWNyb3MgZmxhZ2dlZCBmb3IgZGVsZXRpb24u IgorICA6Z3JvdXAgJ2ttYWNybworICA6dmVyc2lvbiAiMzAuMC41MCIpCisKKyhkZWZmYWNlIGtt YWNyby1tZW51LW1hcmtlZCAnKCh0ICg6aW5oZXJpdCB3YXJuaW5nKSkpCisgICJGYWNlIHVzZWQg Zm9yIGtleWJvYXJkIG1hY3JvcyBtYXJrZWQgZm9yIGR1cGxpY2F0aW9uLiIKKyAgOmdyb3VwICdr bWFjcm8KKyAgOnZlcnNpb24gIjMwLjAuNTAiKQorCisoZGVmdmFyLWtleW1hcCBrbWFjcm8tbWVu dS1tb2RlLW1hcAorICA6ZG9jICJLZXltYXAgZm9yIGBrbWFjcm8tbWVudS1tb2RlJy4iCisgIDpw YXJlbnQgdGFidWxhdGVkLWxpc3QtbW9kZS1tYXAKKyAgIiMiICMna21hY3JvLW1lbnUtZWRpdC1w b3NpdGlvbgorICAiYyIgIydrbWFjcm8tbWVudS1lZGl0LWNvdW50ZXIKKyAgImUiICMna21hY3Jv LW1lbnUtZWRpdC1rZXlzCisgICJmIiAjJ2ttYWNyby1tZW51LWVkaXQtZm9ybWF0CisgICJSRVQi ICMna21hY3JvLW1lbnUtZWRpdC1jb2x1bW4KKworICAiQyIgIydrbWFjcm8tbWVudS1kby1jb3B5 CisgICJEIiAjJ2ttYWNyby1tZW51LWRvLWRlbGV0ZQorICAibSIgIydrbWFjcm8tbWVudS1tYXJr CisKKyAgImQiICMna21hY3JvLW1lbnUtZmxhZy1mb3ItZGVsZXRpb24KKyAgIngiICMna21hY3Jv LW1lbnUtZG8tZmxhZ2dlZC1kZWxldGUKKworICAidSIgIydrbWFjcm8tbWVudS11bm1hcmsKKyAg IlUiICMna21hY3JvLW1lbnUtdW5tYXJrLWFsbAorICAiREVMIiMna21hY3JvLW1lbnUtdW5tYXJr LWJhY2t3YXJkCisKKyAgIjxyZW1hcD4gPHRyYW5zcG9zZS1saW5lcz4iICMna21hY3JvLW1lbnUt dHJhbnNwb3NlKQorCisoZGVmaW5lLWRlcml2ZWQtbW9kZSBrbWFjcm8tbWVudS1tb2RlIHRhYnVs YXRlZC1saXN0LW1vZGUKKyAgIktleWJvYXJkIE1hY3JvIE1lbnUiCisgICJNYWpvciBtb2RlIGZv ciBsaXN0aW5nIGFuZCBlZGl0aW5nIGtleWJvYXJkIG1hY3Jvcy4iCisgIChtYWtlLWxvY2FsLXZh cmlhYmxlICdrbWFjcm8tbWVudS0tbWFya3MpCisgIChtYWtlLWxvY2FsLXZhcmlhYmxlICdrbWFj cm8tbWVudS0tZGVsZXRpb24tZmxhZ3MpCisgIChzZXRxLWxvY2FsIHRhYnVsYXRlZC1saXN0LWZv cm1hdAorICAgICAgICAgICAgICBbKCJQb3NpdGlvbiIgOCBuaWwpCisgICAgICAgICAgICAgICAo IkNvdW50ZXIiICA4IG5pbCA6cmlnaHQtYWxpZ24gdCA6cGFkLXJpZ2h0IDIpCisgICAgICAgICAg ICAgICAoIkZvcm1hdCIgIDggbmlsKQorICAgICAgICAgICAgICAgKCJGb3JtYXR0ZWQiIDEwIG5p bCkKKyAgICAgICAgICAgICAgICgiS2V5cyIgMSBuaWwpXSkKKyAgKHNldHEtbG9jYWwgdGFidWxh dGVkLWxpc3QtcGFkZGluZyAyKQorICAoYWRkLWhvb2sgJ3RhYnVsYXRlZC1saXN0LXJldmVydC1o b29rICMna21hY3JvLW1lbnUtLXJlZnJlc2ggbmlsIHQpCisgICh0YWJ1bGF0ZWQtbGlzdC1pbml0 LWhlYWRlcikKKyAgKHVubGVzcyAoa21hY3JvLXJpbmctZW1wdHktcCkKKyAgICAoa21hY3JvLW1l bnUtLXJlZnJlc2gpCisgICAgKHRhYnVsYXRlZC1saXN0LXByaW50KSkpCisKKyhkZWZhbGlhcyAn a21hY3JvLW1lbnUgIydsaXN0LWtleWJvYXJkLW1hY3JvcykKKyhkZWZ1biBsaXN0LWtleWJvYXJk LW1hY3JvcyAoKQorICAiTGlzdCB0aGUga2V5Ym9hcmQgbWFjcm9zLiIKKyAgKGludGVyYWN0aXZl KQorICAobGV0ICgoYnVmIChnZXQtYnVmZmVyLWNyZWF0ZSAiKktleWJvYXJkIE1hY3JvIExpc3Qq IikpKQorICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZgorICAgICAgKGttYWNyby1tZW51LW1v ZGUpKQorICAgIChwb3AtdG8tYnVmZmVyIGJ1ZikpKQorCis7Ozs7IFV0aWxpdHkgZnVuY3Rpb25z IGFuZCBtb2RlIGRhdGEKKworKGRlZnZhciBrbWFjcm8tbWVudS0tZGVsZXRpb24tZmxhZ3Mgbmls CisgICJBbGlzdCBvZiBlbnRyaWVzIGZsYWdnZWQgZm9yIGRlbGV0aW9uLiIpCisKKyhkZWZ2YXIg a21hY3JvLW1lbnUtLW1hcmtzIG5pbAorICAiQWxpc3Qgb2YgZW50cmllcyBtYXJrZWQgZm9yIGNv cHlpbmcgYW5kIGR1cGxpY2F0aW9uLiIpCisKKyhkZWZ1biBrbWFjcm8tbWVudS0taWQta21hY3Jv IChlbnRyeS1pZCkKKyAgIlJldHVybiBrZXlib2FyZCBtYWNybyB0aGF0IGlzIHBhcnQgb2YgdGhl IEVOVFJZLUlELiIKKyAgKGNhciBlbnRyeS1pZCkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS0taWQt cG9zaXRpb24gKGVudHJ5LWlkKQorICAiUmV0dXJuIG9yZGluYWwgcG9zaXRpb24gdGhhdCBpcyBw YXJ0IG9mIHRoZSBFTlRSWS1JRC4iCisgIChjZHIgZW50cnktaWQpKQorCisoZGVmdW4ga21hY3Jv LW1lbnUtLWttYWNyb3MgKCkKKyAgIlJldHVybiB0aGUgbGlzdCBvZiB0aGUgZXhpc3Rpbmcga2V5 Ym9hcmQgbWFjcm9zIG9yIG5pbCwgaWYgbm9uZSBhcmUgZGVmaW5lZC4iCisgICh3aGVuIGxhc3Qt a2JkLW1hY3JvCisgICAgKGNvbnMgKGttYWNyby1yaW5nLWhlYWQpCisgICAgICAgICAga21hY3Jv LXJpbmcpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1yZWZyZXNoICgpCisgICJSZXNldCB0aGUg bGlzdCBvZiBrZXlib2FyZCBtYWNyb3MuIgorICAoc2V0cS1sb2NhbCB0YWJ1bGF0ZWQtbGlzdC1l bnRyaWVzCisgICAgICAgICAgICAgIChzZXEtbWFwLWluZGV4ZWQgKGxhbWJkYSAoa20gaWR4KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNudCAoa21hY3JvLS1jb3Vu dGVyIGttKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbXQgKGtt YWNyby0tZm9ybWF0IGttKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAo KCxrbSAuICxpZHgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWywoZm9y bWF0ICIlZCIgaWR4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGZv cm1hdCAiJWQiIGNudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLGZt dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGZvcm1hdCBmbXQgY250 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGZvcm1hdC1rYmQtbWFj cm8gKGttYWNyby0ta2V5cyBrbSkpXSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChrbWFjcm8tbWVudS0ta21hY3JvcykpCisgICAgICAgICAgICAgIGttYWNyby1tZW51LS1kZWxl dGlvbi1mbGFncyBuaWwKKyAgICAgICAgICAgICAga21hY3JvLW1lbnUtLW1hcmtzIG5pbCkKKyAg KHRhYnVsYXRlZC1saXN0LWNsZWFyLWFsbC10YWdzKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1t YXAtaWRzIChmdW5jdGlvbikKKyAgIkFwcGx5IEZVTkNUSU9OIHRvIHRoZSBjdXJyZW50IHRhYmxl J3MgZW50cnkgSURzIGluIG9yZGVyLgorCitJZiBGSUxURVIgaXMgbm9uLW5pbCwgdGhlbiBJRHMg Zm9yIHdoaWNoIEZJTFRFUiByZXR1cm5zIG5pbCBhcmUKK2V4Y2x1ZGVkLgorCitSZXR1cm4gYSBs aXN0IG9mIHRoZSBvdXRwdXQgb2YgRlVOQ1RJT04uIgorICAobWFwY2FyIGZ1bmN0aW9uCisgICAg ICAgICAgKG1hcGNhciAjJ2NhcgorICAgICAgICAgICAgICAgICAgKHNlcS1zb3J0LWJ5ICMnY2Rh ciAjJzwgdGFidWxhdGVkLWxpc3QtZW50cmllcykpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1y ZXBsYWNlLWFsbCAoa21hY3JvcykKKyAgIlJlcGxhY2UgdGhlIGV4aXN0aW5nIGtleWJvYXJkIG1h Y3JvcyB3aXRoIHRob3NlIGluIEtNQUNST1MuCisKK1RoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBs aXN0IG92ZXJ3cml0ZXMgdGhlIHZhbHVlcyBvZiBgbGFzdC1rYmQtbWFjcm8nLAorYGttYWNyby1j b3VudGVyJywgYW5kIGBrbWFjcm8tY291bnRlci1mb3JtYXQnLiAgVGhlIHJlbWFpbmluZyBlbGVt ZW50cworYmVjb21lIHRoZSB2YWx1ZSBvZiBga21hY3JvLXJpbmcnLgorCitLTUFDUk9TIGlzIGEg bGlzdCBvZiBga21hY3JvJyBvYmplY3RzLiIKKyAgKGlmIChudWxsIGttYWNyb3MpCisgICAgICAo c2V0cSBsYXN0LWtiZC1tYWNybyBuaWwKKyAgICAgICAgICAgIGttYWNyby1jb3VudGVyLWZvcm1h dCBrbWFjcm8tZGVmYXVsdC1jb3VudGVyLWZvcm1hdAorICAgICAgICAgICAga21hY3JvLWNvdW50 ZXIgMAorICAgICAgICAgICAga21hY3JvLXJpbmcgbmlsKQorICAgIChrbWFjcm8tc3BsaXQtcmlu Zy1lbGVtZW50IChjYXIga21hY3JvcykpCisgICAgKHNldHEga21hY3JvLXJpbmcgKGNkciBrbWFj cm9zKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLXJlcGxhY2UtYXQgKGttYWNybyBuKQorICAi UmVwbGFjZSB0aGUga2V5Ym9hcmQgbWFjcm8gYXQgcG9zaXRpb24gTiB3aXRoIEtNQUNSTy4KKwor VGhpcyBmdW5jdGlvbiByZXBsYWNlcyBhbGwgb2YgdGhlIGV4aXN0aW5nIGtleWJvYXJkIG1hY3Jv cyB2aWEKK2BrbWFjcm8tbWVudS0tcmVwbGFjZS1hbGwnLiAgRXhjZXB0IGZvciB0aGUgbWFjcm8g YXQgcG9zaXRpb24gTiwgd2hpY2ggd2lsbAorYmUgS01BQ1JPLCB0aGUgcmVwbGFjZW1lbnQgbWFj cm9zIGFyZSB0aGUgZXhpc3RpbmcgbWFjcm9zIGlkZW50aWZpZWQgaW4KK3RoZSB0YWJsZS4iCisg IChrbWFjcm8tbWVudS0tcmVwbGFjZS1hbGwKKyAgIChrbWFjcm8tbWVudS0tbWFwLWlkcyAobGFt YmRhIChpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPSBuIChrbWFjcm8tbWVu dS0taWQtcG9zaXRpb24gaWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGttYWNy bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLWlkLWttYWNybyBp ZCkpKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCAoKQorICAiSWYgdGhl IHRhYmxlIGRpZmZlcnMgZnJvbSB0aGUgZXhpc3RpbmcgbWFjcm9zLCBhc2sgd2hldGhlciB0byBy ZXZlcnQgdGFibGUuIgorICAod2hlbiAoYW5kIChub3QgKGVxdWFsIChrbWFjcm8tbWVudS0ta21h Y3JvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLW1hcC1pZHMgIydr bWFjcm8tbWVudS0taWQta21hY3JvKSkpCisgICAgICAgICAgICAgKHllcy1vci1uby1wICJUYWJs ZSBkb2VzIG5vdCBtYXRjaCBleGlzdGluZyBrZXlib2FyZCBtYWNyb3MuICBTdG9wIGFuZCByZXZl cnQgdGFibGU/IikpCisgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkKKyAgICAoc2lnbmFsICdx dWl0IG5pbCkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLWFzc2VydC1yb3cgKCZvcHRpb25hbCBp ZCkKKyAgIlNpZ25hbCBhbiBlcnJvciBpZiBwb2ludCBpcyBub3Qgb24gYSB0YWJsZSByb3cuCisK K0lEIGlzIHRoZSB0YWJ1bGF0ZWQgbGlzdCBpZCBvZiB0aGUgc3VwcG9zZWQgZW50cnkgYXQgcG9p bnQuIgorICAodW5sZXNzIChvciBpZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkKKyAgICAodXNl ci1lcnJvciAiTm90IG9uIGEgdGFibGUgcm93IikpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLXBy b3BlcnRpemUta2V5cyAoZmFjZSkKKyAgIlJlZGlzcGxheSB0aGUgbWFjcm8ga2V5cyBhdCBwb2lu dCB3aXRoIEZBQ0UuIgorICAodGFidWxhdGVkLWxpc3Qtc2V0LWNvbCA0IChwcm9wZXJ0aXplIChh cmVmICh0YWJ1bGF0ZWQtbGlzdC1nZXQtZW50cnkpIDQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2ZhY2UgZmFjZSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLWRv LXJlZ2lvbiAoZnVuY3Rpb24pCisgICJSdW4gRlVOQ1RJT04gb24gbWFjcm9zIGluIHRoZSByZWdp b24gb3Igb24gdGhlIGN1cnJlbnQgbGluZSBhdCB0aGUgbGluZSBzdGFydC4KKworSWYgdGhlcmUg aXMgYW4gYWN0aXZlIHJlZ2lvbiwgZm9yIGVhY2ggbGluZSBpbiB0aGUgcmVnaW9uLCBtb3ZlIHRv IHRoZQorYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGFuZCBhcHBseSBGVU5DVElPTiB0byB0aGUgdGFi bGUgZW50cnkgSUQgb2YgdGhlCitsaW5lLiAgSWYgdGhlcmUgaXMgbm8gcmVnaW9uLCBhcHBseSBG VU5DVElPTiBvbmx5IHRvIHRoZSB0YWJsZSBlbnRyeSBJRAorb2YgdGhlIGN1cnJlbnQgbGluZS4K KworV2hlbiB0aGVyZSBpcyBubyBhY3RpdmUgcmVnaW9uLCBhZHZhbmNlIHRvIHRoZSBiZWdpbm5p bmcgb2YgdGhlIG5leHQKK2xpbmUgYWZ0ZXIgYXBwbHlpbmcgRlVOQ1RJT04uIgorICAoaWYgKHVz ZS1yZWdpb24tcCkKKyAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAobGV0KiAoKHJlZy1i ZWcgKHJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAgKHJlZy1lbmQgKHJlZ2lvbi1l bmQpKQorICAgICAgICAgICAgICAgKGxpbmUtYmVnIChwcm9nbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciByZWctYmVnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBvcy1ib2wpKSkKKyAgICAgICAgICAgICAgIChsaW5lLWVuZCAobGV0ICgocmVnLWVuZCByZWct ZW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgcmVnLWVuZCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYm9scCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZWctZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3MtYm9s IDIpKSkpKQorICAgICAgICAgIChnb3RvLWNoYXIgbGluZS1iZWcpCisgICAgICAgICAgKGxldCAo KGlkKSkKKyAgICAgICAgICAgICh3aGlsZSAoYW5kICg8IChwb2ludCkgbGluZS1lbmQpCisgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBpZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisg ICAgICAgICAgICAgIChrbWFjcm8tbWVudS0tYXNzZXJ0LXJvdyBpZCkKKyAgICAgICAgICAgICAg KGZ1bmNhbGwgZnVuY3Rpb24gaWQpCisgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkpKSkp CisgICAgKGxldCAoKGlkICh0YWJ1bGF0ZWQtbGlzdC1nZXQtaWQpKSkKKyAgICAgIChrbWFjcm8t bWVudS0tYXNzZXJ0LXJvdyBpZCkKKyAgICAgIChnb3RvLWNoYXIgKHBvcy1ib2wpKQorICAgICAg KGZ1bmNhbGwgZnVuY3Rpb24gaWQpCisgICAgICAoZm9yd2FyZC1saW5lIDEpKSkpCisKKyhkZWZ1 biBrbWFjcm8tbWVudS0tbWFya3MtZXhpc3QtcCAoKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgbWFy a2VycyBleGlzdCBmb3IgYW55IHRhYmxlIGVudHJpZXMuIgorICAobGV0ICgodGFnIChnZW5zeW0p KSkKKyAgICAoY2F0Y2ggdGFnCisgICAgICAoa21hY3JvLW1lbnUtLW1hcC1pZHMgKGxhbWJkYSAo aWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYWxpc3QtZ2V0IChrbWFj cm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGttYWNyby1tZW51LS1tYXJrcykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHRocm93IHRhZyB0KSkpKQorICAgICAgbmlsKSkpCisKKzs7OzsgQ29tbWFu ZHMgZm9yIE1hcmtzIGFuZCBGbGFncworCisoZGVmdW4ga21hY3JvLW1lbnUtbWFyayAoKQorICAi TWFyayBtYWNyb3MgaW4gdGhlIHJlZ2lvbiBvciwgb3RoZXJ3aXNlLCBvbiB0aGUgY3VycmVudCBs aW5lLgorCitJZiBtYXJraW5nIHRoZSBjdXJyZW50IGxpbmUsIG1vdmUgcG9pbnQgdG8gdGhlIG5l eHQgbGluZSB3aGVuIGRvbmUuCisKK01hcmtlZCBtYWNyb3MgY2FuIGJlIG9wZXJhdGVkIG9uIGJ5 IGBrbWFjcm8tbWVudS1kby1jb3B5JyBhbmQKK2BrbWFjcm8tbWVudS1kby1kZWxldGUnLiIKKyAg KGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGtt YWNyby1tZW51LW1vZGUpCisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAoa21hY3Jv LW1lbnUtLWRvLXJlZ2lvbgorICAgKGxhbWJkYSAoaWQpCisgICAgIChzZXRmIChhbGlzdC1nZXQg KGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAgICAgICAgICAgICBrbWFj cm8tbWVudS0tbWFya3MpCisgICAgICAgICAgIHQpCisgICAgIChrbWFjcm8tbWVudS0tcHJvcGVy dGl6ZS1rZXlzICdrbWFjcm8tbWVudS1tYXJrZWQpCisgICAgICh0YWJ1bGF0ZWQtbGlzdC1wdXQt dGFnICMoIioiIDAgMSAoZmFjZSBrbWFjcm8tbWVudS1tYXJrKSkpKSkpCisKKyhkZWZ1biBrbWFj cm8tbWVudS1mbGFnLWZvci1kZWxldGlvbiAoKQorICAiRmxhZyBtYWNyb3MgaW4gdGhlIHJlZ2lv biBvciwgb3RoZXJ3aXNlLCBvbiB0aGUgY3VycmVudCBsaW5lLgorCitJZiBtYXJraW5nIHRoZSBj dXJyZW50IGxpbmUsIG1vdmUgcG9pbnQgdG8gdGhlIG5leHQgbGluZSB3aGVuIGRvbmUuCisKK0Zs YWdnZWQgbWFjcm9zIGNhbiBiZSBkZWxldGVkIHZpYSBga21hY3JvLW1lbnUtZG8tZmxhZ2dlZC1k ZWxldGUnLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJh Y3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0 KQorICAoa21hY3JvLW1lbnUtLWRvLXJlZ2lvbgorICAgKGxhbWJkYSAoaWQpCisgICAgIChzZXRm IChhbGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAgICAg ICAgICAgICBrbWFjcm8tbWVudS0tZGVsZXRpb24tZmxhZ3MpCisgICAgICAgICAgIHQpCisgICAg IChrbWFjcm8tbWVudS0tcHJvcGVydGl6ZS1rZXlzICdrbWFjcm8tbWVudS1mbGFnZ2VkKQorICAg ICAodGFidWxhdGVkLWxpc3QtcHV0LXRhZyAjKCJEIiAwIDEgKGZhY2Uga21hY3JvLW1lbnUtbWFy aykpKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtdW5tYXJrICgpCisgICJVbm1hcmsgYW5kIHVu ZmxhZyBtYWNyb3MgaW4gdGhlIHJlZ2lvbiBvciwgb3RoZXJ3aXNlLCBvbiB0aGUgY3VycmVudCBs aW5lLgorCitJZiB1bm1hcmtpbmcgb3IgdW5mbGFnZ2luZyB0aGUgY3VycmVudCBsaW5lLCBtb3Zl IHBvaW50IHRvIHRoZSBuZXh0IGxpbmUKK3doZW4gZG9uZS4iCisgIChkZWNsYXJlIChtb2RlcyBr bWFjcm8tbWVudS1tb2RlKSkKKyAgKGludGVyYWN0aXZlIG5pbCBrbWFjcm8tbWVudS1tb2RlKQor ICAoa21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAgKGttYWNyby1tZW51LS1kby1yZWdpb24K KyAgIChsYW1iZGEgKGlkKQorICAgICAobGV0ICgocG9zIChrbWFjcm8tbWVudS0taWQtcG9zaXRp b24gaWQpKSkKKyAgICAgICAoc2V0ZiAoYWxpc3QtZ2V0IHBvcyBrbWFjcm8tbWVudS0tZGVsZXRp b24tZmxhZ3MpIG5pbAorICAgICAgICAgICAgIChhbGlzdC1nZXQgcG9zIGttYWNyby1tZW51LS1t YXJrcykgbmlsKSkKKyAgICAgKGttYWNyby1tZW51LS1wcm9wZXJ0aXplLWtleXMgJ2RlZmF1bHQp CisgICAgICh0YWJ1bGF0ZWQtbGlzdC1wdXQtdGFnICIgIikpKSkKKworKGRlZnVuIGttYWNyby1t ZW51LXVubWFyay1iYWNrd2FyZCAoKQorICAiTGlrZSBga21hY3JvLW1lbnUtdW5tYXJrJywgYnV0 IG1vdmUgYmFja3dhcmRzIGluc3RlYWQgb2YgZm9yd2FyZHMuIgorICAoZGVjbGFyZSAobW9kZXMg a21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkK KyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgIChsZXQgKChnby1iYWNrIChub3QgKHVz ZS1yZWdpb24tcCkpKSkKKyAgICAoa21hY3JvLW1lbnUtdW5tYXJrKQorICAgICh3aGVuIGdvLWJh Y2sKKyAgICAgIChmb3J3YXJkLWxpbmUgLTIpKSkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS11bm1h cmstYWxsICgpCisgICJVbm1hcmsgYW5kIHVuZmxhZyBhbGwgbGlzdGVkIGtleWJvYXJkIG1hY3Jv cy4iCisgIChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAgKGludGVyYWN0aXZl IG5pbCBrbWFjcm8tbWVudS1tb2RlKQorICAoa21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAg KHNldHEtbG9jYWwga21hY3JvLW1lbnUtLWRlbGV0aW9uLWZsYWdzIG5pbAorICAgICAgICAgICAg ICBrbWFjcm8tbWVudS0tbWFya3MgbmlsKQorICAoc2F2ZS1leGN1cnNpb24KKyAgICAoZ290by1j aGFyIChwb2ludC1taW4pKQorICAgICh3aGlsZSAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKQorICAg ICAgKGttYWNyby1tZW51LS1wcm9wZXJ0aXplLWtleXMgJ2RlZmF1bHQpCisgICAgICAoZm9yd2Fy ZC1saW5lIDEpKQorICAgICh0YWJ1bGF0ZWQtbGlzdC1jbGVhci1hbGwtdGFncykpKQorCis7Ozs7 IENvbW1hbmRzIHRoYXQgTW9kaWZ5IHRoZSBSaW5nCisKKyhkZWZ1biBrbWFjcm8tbWVudS1kby1m bGFnZ2VkLWRlbGV0ZSAoKQorICAiRGVsZXRlIGtleWJvYXJkIG1hY3JvcyBmbGFnZ2VkIHZpYSBg a21hY3JvLW1lbnUtZmxhZy1mb3ItZGVsZXRpb24nLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNy by1tZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChr bWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAobGV0ICgocmVzKQorICAgICAgICAobnVtLWRl bGV0ZXMgMCkpCisgICAgKGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKGlkKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpZiAoYWxpc3QtZ2V0IChrbWFjcm8tbWVudS0taWQtcG9z aXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga21h Y3JvLW1lbnUtLWRlbGV0aW9uLWZsYWdzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBudW0tZGVsZXRlcyAoMSsgbnVtLWRlbGV0ZXMpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHB1c2ggKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpIHJlcykpKSkKKyAg ICAod2hlbiAoeWVzLW9yLW5vLXAgKGlmICg9IDEgbnVtLWRlbGV0ZXMpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAiRGVsZXRlIDEga2V5Ym9hcmQgbWFjcm8/IgorICAgICAgICAgICAgICAg ICAgICAgICAgIChmb3JtYXQgIkRlbGV0ZSAlZCBrZXlib2FyZCBtYWNyb3M/IgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbnVtLWRlbGV0ZXMpKSkKKyAgICAgIChrbWFjcm8tbWVu dS0tcmVwbGFjZS1hbGwKKyAgICAgICAobnJldmVyc2UgcmVzKSkKKyAgICAgICh0YWJ1bGF0ZWQt bGlzdC1yZXZlcnQpKSkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS1kby1jb3B5ICgpCisgICJEdXBs aWNhdGUgdGhlIG1hY3JvcyBpbiB0aGUgcmVnaW9uLCBvciB0aGUgbWFya2VkIG1hY3Jvcywgb3Ig dGhlIG9uZSBhdCBwb2ludC4KKworTWFjcm9zIGFyZSBkdXBsaWNhdGVkIGF0IHRoZWlyIGN1cnJl bnQgcG9zaXRpb24gaW4gdGhlIG1hY3JvIHJpbmcuCisKK0lmIHRoZSByZWdpb24gaXMgYWN0aXZl LCBkdXBsaWNhdGUgdGhlIG1hY3JvcyBpbiB0aGUgcmVnaW9uLCByZWdhcmRsZXNzCitvZiB3aGV0 aGVyIHRoZXJlIGFyZSBtYXJrZWQgbWFjcm9zLiAgT3RoZXJ3aXNlLCBpZiB0aGVyZSBhcmUgbWFy a2VkCittYWNyb3MsIGRlbGV0ZSB0aG9zZS4gIE90aGVyd2lzZSwgZHVwbGljYXRlIHRoZSBvbmUg bWFjcm8gYXQgcG9pbnQuIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisg IChpbnRlcmFjdGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1xdWVy eS1yZXZlcnQpCisgIChsZXQqICgocmVnaW9uLWV4aXN0cyAodXNlLXJlZ2lvbi1wKSkKKyAgICAg ICAgIChtYXJrLWV4aXN0cyAoa21hY3JvLW1lbnUtLW1hcmtzLWV4aXN0LXApKQorICAgICAgICAg KGlkLWFsaXN0IChpZiAob3IgcmVnaW9uLWV4aXN0cworICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG5vdCBtYXJrLWV4aXN0cykpCisgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChyZWdp b24tYWxpc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tbWVudS0tZG8tcmVn aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlkKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChwdXNoIChjb25zIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICByZWdpb24tYWxpc3QpCisgICAgICAgICAgICAgICAgICAgICBrbWFjcm8tbWVudS0t bWFya3MpKQorICAgICAgICAgKG51bS1kdXBsaWNhdGVzIDApKQorICAgIChsZXQgKChyZXMpKQor ICAgICAgKGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKGlkKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxldCAoKHBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbSAoa21hY3JvLW1lbnUtLWlk LWttYWNybyBpZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBrbSBy ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbGlzdC1nZXQgcG9z IGlkLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIGttIHJl cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tZHVwbGljYXRl cyAoMSsgbnVtLWR1cGxpY2F0ZXMpKSkpKSkKKyAgICAgIDs7IENvbmZpcm0gdGhlIGFjdGlvbiBp ZiB3ZSBvcGVyYXRlZCBvbiBtYXJrcyBvciB0aGUgcmVnaW9uLCBidXQKKyAgICAgIDs7IGRvbid0 IGNvbmZpcm0gaWYgb3BlcmF0aW5nIG9uIGEgc2luZ2xlIGxpbmUgd2l0aG91dCBhIHJlZ2lvbi4K KyAgICAgICh3aGVuIChpZiAob3IgbWFyay1leGlzdHMgcmVnaW9uLWV4aXN0cykKKyAgICAgICAg ICAgICAgICAoeWVzLW9yLW5vLXAgKGlmICg9IDEgbnVtLWR1cGxpY2F0ZXMpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiQ29weSAoZHVwbGljYXRlKSAxIGtleWJvYXJkIG1hY3Jv PyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJDb3B5IChkdXBsaWNh dGUpICVkIGtleWJvYXJkIG1hY3Jvcz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBudW0tZHVwbGljYXRlcykpKQorICAgICAgICAgICAgICB0KQorICAgICAgICAoa21h Y3JvLW1lbnUtLXJlcGxhY2UtYWxsIChucmV2ZXJzZSByZXMpKQorICAgICAgICAodGFidWxhdGVk LWxpc3QtcmV2ZXJ0KSkpKSkKKworKGRlZnVuIGttYWNyby1tZW51LWRvLWRlbGV0ZSAoKQorICAi RGVsZXRlIHRoZSBtYWNyb3MgaW4gdGhlIHJlZ2lvbiwgdGhlIG1hcmtlZCBtYWNyb3MsIG9yIHRo ZSBvbmUgYXQgcG9pbnQuCisKK0lmIHRoZSByZWdpb24gaXMgYWN0aXZlLCBkZWxldGUgdGhlIG1h Y3JvcyBpbiB0aGUgcmVnaW9uLCByZWdhcmRsZXNzCitvZiB3aGV0aGVyIHRoZXJlIGFyZSBtYXJr ZWQgbWFjcm9zLiAgT3RoZXJ3aXNlLCBpZiB0aGVyZSBhcmUgbWFya2VkCittYWNyb3MsIGRlbGV0 ZSB0aG9zZS4gIE90aGVyd2lzZSwgZGVsZXRlIHRoZSBvbmUgbWFjcm8gYXQgcG9pbnQuIgorICAo ZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSBuaWwga21h Y3JvLW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgIChsZXQgKChu dW0tZGVsZXRlcyAwKQorICAgICAgICAoaWQtYWxpc3QgKGlmIChvciAodXNlLXJlZ2lvbi1wKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChrbWFjcm8tbWVudS0tbWFya3MtZXhpc3Qt cCkpKQorICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChyZWdpb24tYWxpc3QpKQorICAgICAg ICAgICAgICAgICAgICAgICAgKGttYWNyby1tZW51LS1kby1yZWdpb24KKyAgICAgICAgICAgICAg ICAgICAgICAgICAobGFtYmRhIChpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNo IChjb25zIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVnaW9uLWFsaXN0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpCisg ICAgICAgICAgICAgICAgICAgIGttYWNyby1tZW51LS1tYXJrcykpKQorICAgIChsZXQgKChyZXMp KQorICAgICAgKGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKGlkKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGlmIChhbGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlv biBpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLWFs aXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG51bS1kZWxldGVz ICgxKyBudW0tZGVsZXRlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNo IChrbWFjcm8tbWVudS0taWQta21hY3JvIGlkKSByZXMpKSkpCisgICAgICAod2hlbiAoeWVzLW9y LW5vLXAgKGlmICg9IDEgbnVtLWRlbGV0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJEZWxldGUgMSBrZXlib2FyZCBtYWNybz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAo Zm9ybWF0ICJEZWxldGUgJWQga2V5Ym9hcmQgbWFjcm9zPyIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnVtLWRlbGV0ZXMpKSkKKyAgICAgICAgKGttYWNyby1tZW51LS1yZXBs YWNlLWFsbCAobnJldmVyc2UgcmVzKSkKKyAgICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkp KSkpCisKKzs7OzsgQ29tbWFuZHMgdGhhdCBNb2RpZnkgYSBLZXlib2FyZCBNYWNybworCisoZGVm dW4ga21hY3JvLW1lbnUtZWRpdC1wb3NpdGlvbiAoKQorICAiTW92ZSB0aGUga2V5Ym9hcmQgbWFj cm8gYXQgcG9pbnQgdG8gYSBuZXcgcG9zaXRpb24uCisKK1NlZSB0aGUgSW5mbyBub2RlIGAoZW1h Y3MpIEtleWJvYXJkIE1hY3JvIFJpbmcnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgKGRlY2xh cmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1t ZW51LW1vZGUpCisgIChsZXQgKChpZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgKGtt YWNyby1tZW51LS1hc3NlcnQtcm93IGlkKQorICAgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0 KQorICAgIChsZXQqICgobmV3LXBvc2l0aW9uIChtaW4gKGxlbmd0aCB0YWJ1bGF0ZWQtbGlzdC1l bnRyaWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heCAwCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkLW51bWJlciAiTmV3IHBvc2l0aW9uOiAiIDAp KSkpCisgICAgICAgICAgIChvbGQta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKQorICAg ICAgICAgICAob2xkLXBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkpCisgICAgICAo dW5sZXNzICg9IG9sZC1wb3MgbmV3LXBvc2l0aW9uKQorICAgICAgICAoa21hY3JvLW1lbnUtLXJl cGxhY2UtYWxsCisgICAgICAgICAobGV0ICgocmVzKQorICAgICAgICAgICAgICAgKHRydWUtbmV3 LXBvcyAoaWYgKD4gbmV3LXBvc2l0aW9uIG9sZC1wb3MpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoMSsgbmV3LXBvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5ldy1wb3NpdGlvbikpKQorICAgICAgICAgICAoa21hY3JvLW1lbnUtLW1hcC1pZHMgKGxh bWJkYSAodGhpcy1pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAo KHRoaXMta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLXBvcyAoa21hY3JvLW1lbnUtLWlkLXBv c2l0aW9uIHRoaXMtaWQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dW5sZXNzICg9IG9sZC1wb3MgdGhpcy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAod2hlbiAoPSB0aGlzLXBvcyB0cnVlLW5ldy1wb3MpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIG9sZC1rbSByZXMpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggdGhpcy1rbSByZXMpKSkpKQorICAg ICAgICAgICAod2hlbiAoPj0gdHJ1ZS1uZXctcG9zCisgICAgICAgICAgICAgICAgICAgICAobGVu Z3RoIHRhYnVsYXRlZC1saXN0LWVudHJpZXMpKQorICAgICAgICAgICAgIChwdXNoIG9sZC1rbSBy ZXMpKQorICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0YWJ1bGF0ZWQtbGlz dC1yZXZlcnQpKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtdHJhbnNwb3NlICgpCisgICJNb3Zl IHRoZSBrZXlib2FyZCBtYWNybyBhdCBwb2ludCB0byB0aGUgbmV4dCBlYXJsaWVyIHBvc2l0aW9u LgorCitOb3RlIHRoYXQgdGhpcyBpcyB0aGUgZWFybGllciBwb3NpdGlvbiBpbiB0aGUgcmluZywg bm90IHRoZSBzb3J0ZWQKK3RhYmxlLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1v ZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChsZXQgKChpZCAo dGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93IGlk KQorICAgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAgIChsZXQgKChvbGQtcG9zIChr bWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpKSkKKyAgICAgICh1bmxlc3MgKD0gb2xkLXBvcyAw KQorICAgICAgICAobGV0ICgobmV3LXBvcyAoMS0gb2xkLXBvcykpKQorICAgICAgICAgIChrbWFj cm8tbWVudS0tcmVwbGFjZS1hbGwKKyAgICAgICAgICAgKGxldCAoKHJlcykpCisgICAgICAgICAg ICAgKGttYWNyby1tZW51LS1tYXAtaWRzCisgICAgICAgICAgICAgIChsYW1iZGEgKHRoaXMtaWQp CisgICAgICAgICAgICAgICAgKGxldCAoKHRoaXMtcG9zIChrbWFjcm8tbWVudS0taWQtcG9zaXRp b24gdGhpcy1pZCkpKQorICAgICAgICAgICAgICAgICAgKHVubGVzcyAoPSBvbGQtcG9zIHRoaXMt cG9zKQorICAgICAgICAgICAgICAgICAgICAod2hlbiAoPSBuZXctcG9zIHRoaXMtcG9zKQorICAg ICAgICAgICAgICAgICAgICAgIChwdXNoIChrbWFjcm8tbWVudS0taWQta21hY3JvIGlkKSByZXMp KQorICAgICAgICAgICAgICAgICAgICAocHVzaCAoa21hY3JvLW1lbnUtLWlkLWttYWNybyB0aGlz LWlkKSByZXMpKSkpKQorICAgICAgICAgICAgIChucmV2ZXJzZSByZXMpKSkpCisgICAgICAgICh0 YWJ1bGF0ZWQtbGlzdC1yZXZlcnQpKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtZWRpdC1mb3Jt YXQgKCkKKyAgIkVkaXQgdGhlIGNvdW50ZXIgZm9ybWF0IG9mIHRoZSBrZXlib2FyZCBtYWNybyBh dCBwb2ludC4KKworVmFsaWQgY291bnRlciBmb3JtYXRzIGFyZSB0aG9zZSBmb3IgaW50ZWdlcnMg YWNjZXB0ZWQgYnkgYGZvcm1hdCcuCisKK1NlZSB0aGUgY29tbWFuZCBga21hY3JvLXNldC1mb3Jt YXQnIGFuZCB0aGUgSW5mbyBub2RlIGAoZW1hY3MpIEtleWJvYXJkCitNYWNybyBDb3VudGVyJyBm b3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgIChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2Rl KSkKKyAgKGludGVyYWN0aXZlIG5pbCBrbWFjcm8tbWVudS1tb2RlKQorICAobGV0ICgoaWQgKHRh YnVsYXRlZC1saXN0LWdldC1pZCkpKQorICAgIChrbWFjcm8tbWVudS0tYXNzZXJ0LXJvdyBpZCkK KyAgICAoa21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAgICAobGV0ICgoa20gKGttYWNyby1t ZW51LS1pZC1rbWFjcm8gaWQpKSkKKyAgICAgIChrbWFjcm8tbWVudS0tcmVwbGFjZS1hdAorICAg ICAgIChrbWFjcm8gKGttYWNyby0ta2V5cyBrbSkKKyAgICAgICAgICAgICAgIChrbWFjcm8tLWNv dW50ZXIga20pCisgICAgICAgICAgICAgICAocmVhZC1zdHJpbmcgIk5ldyBmb3JtYXQ6ICIgbmls IG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGttYWNyby1kZWZhdWx0LWNv dW50ZXItZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGttYWNyby0t Zm9ybWF0IGttKSkpKQorICAgICAgIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpKQorICAg ICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkpKSkKKworKGRlZnVuIGttYWNyby1tZW51LWVkaXQt Y291bnRlciAoKQorICAiRWRpdCB0aGUgY291bnRlciBvZiB0aGUga2V5Ym9hcmQgbWFjcm8gYXQg cG9pbnQuCisKK1NlZSBJbmZvIG5vZGUgYChlbWFjcykgS2V5Ym9hcmQgTWFjcm8gQ291bnRlcicg Zm9yIG1vcmUKK2luZm9ybWF0aW9uLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1v ZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChsZXQgKChpZCAo dGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93IGlk KQorICAgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAgIChsZXQgKChrbSAoa21hY3Jv LW1lbnUtLWlkLWttYWNybyBpZCkpKQorICAgICAgKGttYWNyby1tZW51LS1yZXBsYWNlLWF0Cisg ICAgICAgKGttYWNybyAoa21hY3JvLS1rZXlzIGttKQorICAgICAgICAgICAgICAgKHJlYWQtbnVt YmVyICJOZXcgY291bnRlcjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IDAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLS1jb3VudGVyCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tbWVudS0taWQta21hY3JvIGlk KSkpKQorICAgICAgICAgICAgICAgKGttYWNyby0tZm9ybWF0IGttKSkKKyAgICAgICAoa21hY3Jv LW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkKKyAgICAgICh0YWJ1bGF0ZWQtbGlzdC1yZXZlcnQpKSkp CisKKyhkZWZ1biBrbWFjcm8tbWVudS1lZGl0LWtleXMgKCkKKyAgIkVkaXQgdGhlIGtleXMgb2Yg dGhlIGtleWJvYXJkIG1hY3JvIGF0IHBvaW50IHZpYSBgZWRtYWNyby1tb2RlJy4KKworU2VlIElu Zm8gbm9kZSBgKGVtYWNzKSBFZGl0IEtleWJvYXJkIE1hY3JvJyBmb3IgbW9yZQoraW5mb3JtYXRp b24uIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2 ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGxldCAoKGlkICh0YWJ1bGF0ZWQtbGlzdC1nZXQt aWQpKSkKKyAgICAoa21hY3JvLW1lbnUtLWFzc2VydC1yb3cgaWQpCisgICAgKGttYWNyby1tZW51 LS1xdWVyeS1yZXZlcnQpCisgICAgKGxldCogKChvbGQta20gKGttYWNyby1tZW51LS1pZC1rbWFj cm8gaWQpKSkKKyAgICAgIChlZGl0LWtiZC1tYWNybyAoa21hY3JvLS1rZXlzIG9sZC1rbSkKKyAg ICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAg ICAgICAgICAgICAgICAgICAobGFtYmRhIChtYWMpCisgICAgICAgICAgICAgICAgICAgICAgICAo a21hY3JvLW1lbnUtLXJlcGxhY2UtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3Jv IG1hYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGttYWNyby0tY291bnRlciBv bGQta20pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLS1mb3JtYXQg b2xkLWttKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLW1lbnUtLWlkLXBvc2l0 aW9uIGlkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICh0YWJ1bGF0ZWQtbGlzdC1yZXZlcnQp KSkpKSkKKworKGRlZnVuIGttYWNyby1tZW51LWVkaXQtY29sdW1uICgpCisgICJFZGl0IHRoZSB2 YWx1ZSBpbiB0aGUgY3VycmVudCBjb2x1bW4gb2YgdGhlIGtleWJvYXJkIG1hY3JvIGF0IHBvaW50 LiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUg bmlsIGttYWNyby1tZW51LW1vZGUpCisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAo cGNhc2UgKGdldC10ZXh0LXByb3BlcnR5IChwb2ludCkgJ3RhYnVsYXRlZC1saXN0LWNvbHVtbi1u YW1lKQorICAgICgnbmlsICAgICAgICAodXNlci1lcnJvciAiTm8gY29sdW1uIGF0IHBvaW50Iikp CisgICAgKCJQb3NpdGlvbiIgIChjYWxsLWludGVyYWN0aXZlbHkgIydrbWFjcm8tbWVudS1lZGl0 LXBvc2l0aW9uKSkKKyAgICAoIkNvdW50ZXIiICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ttYWNy by1tZW51LWVkaXQtY291bnRlcikpCisgICAgKCJGb3JtYXQiICAgIChjYWxsLWludGVyYWN0aXZl bHkgIydrbWFjcm8tbWVudS1lZGl0LWZvcm1hdCkpCisgICAgKCJGb3JtYXR0ZWQiICh1c2VyLWVy cm9yICJGb3JtYXR0ZWQgY291bnRlciBpcyBub3QgZWRpdGFibGUiKSkKKyAgICAoIktleXMiICAg ICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ttYWNyby1tZW51LWVkaXQta2V5cykpKSkKKwogKHBy b3ZpZGUgJ2ttYWNybykKIAogOzs7IGttYWNyby5lbCBlbmRzIGhlcmUKLS0gCjIuMzQuMQoK --b1_ARlJZH7KfoRCL5Ziruu9GLcJJJDgayr6hFHXuYrPgw-- From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 07 03:55:29 2024 Received: (at 70208) by debbugs.gnu.org; 7 Apr 2024 07:55:29 +0000 Received: from localhost ([127.0.0.1]:41492 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rtNN9-0002pt-ED for submit@debbugs.gnu.org; Sun, 07 Apr 2024 03:55:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56386) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rtNN7-0002ow-5A for 70208@debbugs.gnu.org; Sun, 07 Apr 2024 03:55:25 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rtNMv-0006L2-3M; Sun, 07 Apr 2024 03:55:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=D9ryaUqyw1/Wp7cd3Ttxp3XxipmqS0TdoXS0Xw/OgBk=; b=XZpDwk9JZOAT ApE7DQh6EP4qe3ovuWqO3R6FnBK63m//vqd13h8Z/y0T8NPryyNyPduubqscEbI+6pjtUk963knhO I4bbJG7zrVj/E6TzqWFjq9LIKDnrFJtBYnOQ6ZYKYu0Myg48zlK7UMHCKkQcdkMItGOQjYx/zcV8V dTBT+h541nJpUnJXUBM1PwhsPp5yQTA53wDbm+RJW3x9h1hxus0sQ4kQFaGIPyQgNmzT2WF2m7mJS dQ6q3597Lx4dSC1E/iGJ86Nw//a+09Eq1sl342ar2XZhLOs1hn3PBNKhH1tp/2FoUS3hDiVmH/wjx k4pPctxgQUgJiLvm/BWshw==; Date: Sun, 07 Apr 2024 10:55:10 +0300 Message-Id: <86cyr11uap.fsf@gnu.org> From: Eli Zaretskii To: Okamsn In-Reply-To: <8dd6fcfa-2fc0-4371-b5a9-1f451ff1e9a4@protonmail.com> (message from Okamsn on Sat, 06 Apr 2024 23:26:15 +0000) Subject: Re: bug#70208: [PATCH] Add command `list-keyboard-macros` References: <86msq85o7n.fsf@gnu.org> <8dd6fcfa-2fc0-4371-b5a9-1f451ff1e9a4@protonmail.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 70208 Cc: 70208@debbugs.gnu.org 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: -3.3 (---) > Date: Sat, 06 Apr 2024 23:26:15 +0000 > From: Okamsn > Cc: 70208@debbugs.gnu.org > > +@node Kmacro Menu > +@section Listing Keyboard Macros "Listing and Editing", I guess? > +After a command is run, the Kmacro Menu resets to show the new values of ^^^^^^ "Resets" is not the best word here. I suggest to rephrase: After a command is run, the Kmacro Menu display changes to reflect the new values of ... > +the macro properties and the macro ring. The usual cursor motion > +commands can be used in this buffer. "You can use the usual cursor motion commands in this buffer." This avoids passive tense. > +@item D @r{(Kmacro Menu)} > +This command deletes macros, removing them from the ring > +(@code{kmacro-menu-do-delete}). For example, running this command on > +the macro at position zero will delete the current macro and then make > +the first macro in the macro ring (previously at position one) the new > +current macro, popping it from the ring. > + > + If the region is active, this command deletes the macros in the > +region. Otherwise, if there are marked macros, this command deletes the > +marked macros. If there is no region nor are there marked macros, this > +command deletes the macro on the current line. In all cases, the > +command prompts for confirmation before duplication. ^^^^^^^^^^^^^^^^^^ "before deletion", right? > ++++ > +*** New mode 'kmacro-menu-mode' and new command 'list-keyboard-macros'. > +The new command 'list-keyboard-macros' the macro version of commands ^ I think "is" is missing there. > +(defface kmacro-menu-mark '((t (:inherit font-lock-constant-face))) > + "Face used for the Keyboard Macro Menu marks." > + :group 'kmacro > + :version "30.0.50") The version should be "30.1", the next released version (here and elsewhere in the patch). We never tag options with development versions. > +(defun kmacro-menu-mark () > + "Mark macros in the region or, otherwise, on the current line. I'd remove the "otherwise" part, and explain that in the next lines: Mark macros in the region or on the current line. If there's an active region, mark macros in the region; otherwise mark the macro on the current line. > +(defun kmacro-menu-flag-for-deletion () > + "Flag macros in the region or, otherwise, on the current line. Likewise here and in all other similar commands (some of them already have the "if there's an active region" part). Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 13 15:25:35 2024 Received: (at 70208) by debbugs.gnu.org; 13 Apr 2024 19:25:35 +0000 Received: from localhost ([127.0.0.1]:33811 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rvj0H-0006B0-Oe for submit@debbugs.gnu.org; Sat, 13 Apr 2024 15:25:35 -0400 Received: from mail-4316.protonmail.ch ([185.70.43.16]:16227) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rvizu-00066E-PG for 70208@debbugs.gnu.org; Sat, 13 Apr 2024 15:25:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1713036292; x=1713295492; bh=cURPVqpwZ0ki1qeM9rMUvMcti/kF6dZkeT6YElMk1YI=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=g4UrWMFmwjvWxA9o9BzRK1+Lcv/lB10WvOxQmg9Fo/9kBvXdzCEcTna6r+71iQIzL PFwYZZQiLe3kYIKQa0P2alK/Z+cB2Bx9KkHTE0Ma/qZt7qrfCdY7y14xXASRwUdnF5 FPENuV1acWHwUP8p0AKBL3ZBaa4vT1Mp5hl6cBAJdzZEEilWd5FVZavAlU5xQxMyyw Ou2J/wArf0Gvm9BVWoJMG9sqOFM035tcPIgPc2gcrxlvidTLwt0Ogu/jZyDqCGvIFu yfDPm01Vyv7MrlXCmpH3iftIVyApk9CpzYPqTepDiXxh6cKwtLewIkTjXd13qSDFjK /NDHF2CLukM+A== Date: Sat, 13 Apr 2024 19:24:45 +0000 To: Eli Zaretskii From: Okamsn Subject: Re: bug#70208: [PATCH] Add command `list-keyboard-macros` Message-ID: <5902981e-eee6-4efe-927a-c37ed29a4303@protonmail.com> In-Reply-To: <86cyr11uap.fsf@gnu.org> References: <86msq85o7n.fsf@gnu.org> <8dd6fcfa-2fc0-4371-b5a9-1f451ff1e9a4@protonmail.com> <86cyr11uap.fsf@gnu.org> Feedback-ID: 25935600:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_5JZJ1LeGElQZvBw5oZTBqAG0XxOqyBeKYHNjW4EoSM" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 70208 Cc: 70208@debbugs.gnu.org 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: -1.0 (-) This is a multi-part message in MIME format. --b1_5JZJ1LeGElQZvBw5oZTBqAG0XxOqyBeKYHNjW4EoSM Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Eli Zaretskii wrote: >> Date: Sat, 06 Apr 2024 23:26:15 +0000 >> From: Okamsn >> Cc: 70208@debbugs.gnu.org >> >> +@node Kmacro Menu >> +@section Listing Keyboard Macros >=20 > "Listing and Editing", I guess? >=20 >> +After a command is run, the Kmacro Menu resets to show the new values o= f > ^^^^^^ > "Resets" is not the best word here. I suggest to rephrase: >=20 > After a command is run, the Kmacro Menu display changes to reflect > the new values of ... >=20 >> +the macro properties and the macro ring. The usual cursor motion >> +commands can be used in this buffer. >=20 > "You can use the usual cursor motion commands in this buffer." This > avoids passive tense. >=20 >> +@item D @r{(Kmacro Menu)} >> +This command deletes macros, removing them from the ring >> +(@code{kmacro-menu-do-delete}). For example, running this command on >> +the macro at position zero will delete the current macro and then make >> +the first macro in the macro ring (previously at position one) the new >> +current macro, popping it from the ring. >> + >> + If the region is active, this command deletes the macros in the >> +region. Otherwise, if there are marked macros, this command deletes th= e >> +marked macros. If there is no region nor are there marked macros, this >> +command deletes the macro on the current line. In all cases, the >> +command prompts for confirmation before duplication. > ^^^^^^^^^^^^^^^^^^ > "before deletion", right? >=20 >> ++++ >> +*** New mode 'kmacro-menu-mode' and new command 'list-keyboard-macros'. >> +The new command 'list-keyboard-macros' the macro version of commands > ^ > I think "is" is missing there. >=20 >> +(defface kmacro-menu-mark '((t (:inherit font-lock-constant-face))) >> + "Face used for the Keyboard Macro Menu marks." >> + :group 'kmacro >> + :version "30.0.50") >=20 > The version should be "30.1", the next released version (here and > elsewhere in the patch). We never tag options with development > versions. >=20 >> +(defun kmacro-menu-mark () >> + "Mark macros in the region or, otherwise, on the current line. >=20 > I'd remove the "otherwise" part, and explain that in the next lines: >=20 > Mark macros in the region or on the current line. >=20 > If there's an active region, mark macros in the region; otherwise > mark the macro on the current line. >=20 >> +(defun kmacro-menu-flag-for-deletion () >> + "Flag macros in the region or, otherwise, on the current line. >=20 > Likewise here and in all other similar commands (some of them already > have the "if there's an active region" part). >=20 > Thanks. Please see the attached. Thank you. --b1_5JZJ1LeGElQZvBw5oZTBqAG0XxOqyBeKYHNjW4EoSM Content-Type: text/x-patch; charset=UTF-8; name=v4-0001-Add-command-list-keyboard-macros-that-works-like-.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0001-Add-command-list-keyboard-macros-that-works-like-.patch RnJvbSBiZmRjMjdiNTY4NGVlYmJkMWI0MzJmNjA2MmNhODFiODkzODVhOWNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFYXJsIEh5YXR0IDxva2Ftc25AcHJvdG9ubWFpbC5jb20+CkRh dGU6IFN1biwgMjQgTWFyIDIwMjQgMTE6NDk6MjEgLTA0MDAKU3ViamVjdDogW1BBVENIIHY0XSBB ZGQgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIHRoYXQgd29ya3MgbGlrZQogJ2xpc3Qt YnVmZmVycycuCgpUaGUgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIGFsbG93cyBlZGl0 aW5nIGFuZCByZS1hcnJhbmdpbmcKbWFjcm9zIHVzaW5nICd0YWJ1bGF0ZWQtbGlzdC1tb2RlJy4g IEV4aXN0aW5nIGtleWJvYXJkIG1hY3JvcyBjYW4gYmUKZHVwbGljYXRlZCBvciBkZWxldGVkLiAg TWFjcm8gY291bnRlcnMgYW5kIGNvdW50ZXIgZm9ybWF0cyBjYW4gdGFrZSBuZXcKdmFsdWVzIHJl YWQgZnJvbSB0aGUgbWluaWJ1ZmZlci4gIE1hY3JvIGtleXMgY2FuIGJlIGVkaXRlZCB1c2luZwon ZWRpdC1rYmQtbWFjcm8nLgoKKiBkb2MvZW1hY3Mva21hY3JvLnRleGkgKEttYWNybyBNZW51KTog RG9jdW1lbnQgdGhlIG5ldyBjb21tYW5kCmFuZCB0aGUgbWVudSdzIGNvbW1hbmRzLgoqIGV0Yy9O RVdTIChLbWFjcm8gTWVudSBNb2RlKTogTWVudGlvbiB0aGUgbmV3IG1vZGUgYW5kIGNvbW1hbmQu CiogbGlzcC9rbWFjcm8uZWwgKGttYWNyby1tZW51LW1hcmssIGttYWNyby1tZW51LW1hcmtlZCkK KGttYWNyby1tZW51LWZsYWdnZWQpOiBBZGQgZmFjZXMgZm9yIG1hcmtzIGFuZCBmbGFncy4KKiBs aXNwL2ttYWNyby5lbCAoa21hY3JvLW1lbnUtbW9kZS1tYXAsIGttYWNyby1tZW51LW1vZGUpOiBB ZGQgbW9kZQphbmQgbWFwLgoqIGxpc3Ava21hY3JvLmVsIChsaXN0LWtleWJvYXJkLW1hY3Jvcywg a21hY3JvLW1lbnUpOiBBZGQgY29tbWFuZC4KKiBsaXNwL2ttYWNyby5lbCAoa21hY3JvLW1lbnUt LWRlbGV0aW9uLWZsYWdzLCBrbWFjcm8tbWVudS0tbWFya3MpCihrbWFjcm8tbWVudS0taWQta21h Y3JvLCBrbWFjcm8tbWVudS0taWQtcG9zaXRpb24sIGttYWNyby1tZW51LS1rbWFjcm9zKQooa21h Y3JvLW1lbnUtLXJlZnJlc2gsIGttYWNyby1tZW51LS1tYXAtaWRzLCBrbWFjcm8tbWVudS0tcmVw bGFjZS1hbGwpCihrbWFjcm8tbWVudS0tcmVwbGFjZS1hdCwga21hY3JvLW1lbnUtLXF1ZXJ5LXJl dmVydCwga21hY3JvLW1lbnUtLWFzc2VydC1yb3cpCihrbWFjcm8tbWVudS0tcHJvcGVydGl6ZS1r ZXlzLCBrbWFjcm8tbWVudS0tZG8tcmVnaW9uKQooa21hY3JvLW1lbnUtLW1hcmtzLWV4aXN0LXAp OiBBZGQgdXRpbGl0eSBmdW5jdGlvbnMgb2YgbW9kZQphbmQgY29tbWFuZHMuCiogbGlzcC9rbWFj cm8uZWwgKGttYWNyby1tZW51LW1hcmssIGttYWNyby1tZW51LWZsYWctZm9yLWRlbGV0aW9uKQoo a21hY3JvLW1lbnUtdW5tYXJrLCBrbWFjcm8tbWVudS11bm1hcmstYmFja3dhcmQpCihrbWFjcm8t bWVudS11bm1hcmstYWxsKTogQWRkIGNvbW1hbmRzIGZvciBtYXJrcyBhbmQgZmxhZ3MuCiogbGlz cC9rbWFjcm8uZWwgKGttYWNyby1tZW51LWRvLWZsYWdnZWQtZGVsZXRlLCBrbWFjcm8tbWVudS1k by1jb3B5KQooa21hY3JvLW1lbnUtZG8tZGVsZXRlKTogQWRkIGNvbW1hbmRzIHRoYXQgbW9kaWZ5 IHRoZSByaW5nLgoqIGxpc3Ava21hY3JvLmVsIChrbWFjcm8tbWVudS1lZGl0LXBvc2l0aW9uLCBr bWFjcm8tbWVudS10cmFuc3Bvc2UpCihrbWFjcm8tbWVudS1lZGl0LWZvcm1hdCwga21hY3JvLW1l bnUtZWRpdC1jb3VudGVyKQooa21hY3JvLW1lbnUtZWRpdC1rZXlzLCBrbWFjcm8tbWVudS1lZGl0 LWNvbHVtbik6IEFkZCBjb21tYW5kcyB0aGF0Cm1vZGlmeSBhIGtleWJvYXJkIG1hY3JvLgotLS0K IGRvYy9lbWFjcy9rbWFjcm8udGV4aSB8IDE2MiArKysrKysrKysrKysKIGV0Yy9ORVdTICAgICAg ICAgICAgICB8ICAxMSArCiBsaXNwL2ttYWNyby5lbCAgICAgICAgfCA1NTggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDczMSBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL2ttYWNyby50ZXhpIGIvZG9jL2VtYWNz L2ttYWNyby50ZXhpCmluZGV4IGUzMGRlZjM0NDc1Li40YThkNGQ0ZjA5MyAxMDA2NDQKLS0tIGEv ZG9jL2VtYWNzL2ttYWNyby50ZXhpCisrKyBiL2RvYy9lbWFjcy9rbWFjcm8udGV4aQpAQCAtNDIs NiArNDIsOCBAQCBLZXlib2FyZCBNYWNyb3MKICogRWRpdCBLZXlib2FyZCBNYWNybzo6ICAgICAg RWRpdGluZyBrZXlib2FyZCBtYWNyb3MuCiAqIEtleWJvYXJkIE1hY3JvIFN0ZXAtRWRpdDo6IElu dGVyYWN0aXZlbHkgZXhlY3V0aW5nIGFuZCBlZGl0aW5nIGEga2V5Ym9hcmQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtYWNyby4KKyogS21hY3JvIE1lbnU6OiAgICAgICAgICAgICAg QW4gaW50ZXJmYWNlIGZvciBsaXN0aW5nIGFuZCBlZGl0aW5nCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2V5Ym9hcmQgbWFjcm9zIGFuZCB0aGUga2V5Ym9hcmQgbWFjcm8gcmluZy4K IEBlbmQgbWVudQogCiBAbm9kZSBCYXNpYyBLZXlib2FyZCBNYWNybwpAQCAtNjE2LDMgKzYxOCwx NjMgQEAgS2V5Ym9hcmQgTWFjcm8gU3RlcC1FZGl0CiBrZXlib2FyZCBtYWNybzsgaXQgdGhlbiB0 ZXJtaW5hdGVzIHRoZSBzdGVwLWVkaXRpbmcgYW5kIHJlcGxhY2VzIHRoZQogb3JpZ2luYWwga2V5 Ym9hcmQgbWFjcm8gd2l0aCB0aGUgZWRpdGVkIG1hY3JvLgogQGVuZCBpdGVtaXplCisKK0Bub2Rl IEttYWNybyBNZW51CitAc2VjdGlvbiBMaXN0aW5nIGFuZCBFZGl0aW5nIEtleWJvYXJkIE1hY3Jv cworQGNpbmRleCBLbWFjcm8gTWVudQorCitAY2luZGV4IGxpc3RpbmcgY3VycmVudCBrZXlib2Fy ZCBtYWNyb3MKK0BraW5kZXggTS14IGxpc3Qta2V5Ym9hcmQtbWFjcm9zIEBrZXl7UkVUfQorQGZp bmRleCBrbWFjcm8tbWVudQorQGZpbmRleCBsaXN0LWtleWJvYXJkLW1hY3JvcworICBUbyBkaXNw bGF5IGEgbGlzdCBvZiBleGlzdGluZyBrZXlib2FyZCBtYWNyb3MsIHR5cGUgQGtiZHtNLXgKK2xp c3Qta2V5Ym9hcmQtbWFjcm9zIEBrZXl7UkVUfX0uICBUaGlzIHBvcHMgdXAgdGhlIEBkZm57S21h Y3JvIE1lbnV9IGluCithIGJ1ZmZlciBuYW1lZCBAZmlsZXsqS2V5Ym9hcmQgTWFjcm8gTGlzdCp9 LiAgRWFjaCBsaW5lIGluIHRoZSBsaXN0CitzaG93cyBvbmUgbWFjcm8ncyBwb3NpdGlvbiwgY291 bnRlciB2YWx1ZSwgY291bnRlciBmb3JtYXQsIHRoYXQgY291bnRlcgordmFsdWUgdXNpbmcgdGhh dCBmb3JtYXQsIGFuZCBtYWNybyBrZXlzLiAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWFjcm8K K2xpc3Q6CisKK0BzbWFsbGV4YW1wbGUKK1Bvc2l0aW9uICBDb3VudGVyICBGb3JtYXQgIEZvcm1h dHRlZCAgS2V5cworMCAgICAgICAgICAgICAgIDggICUwMmQgICAgMDggICAgICAgICBOIDogU1BD IDxGMz4gUkVUCisxICAgICAgICAgICAgICAgMCAgJWQgICAgICAwICAgICAgICAgIGwgbyBuIGcg U1BDIHAgaCByIGEgcyBlCitAZW5kIHNtYWxsZXhhbXBsZQorCitAbm9pbmRlbnQKK1RoZSBtYWNy b3MgYXJlIGxpc3RlZCB3aXRoIHRoZSBjdXJyZW50IG1hY3JvIGF0IHRoZSB0b3AgaW4gcG9zaXRp b24KK251bWJlciB6ZXJvIGFuZCB0aGUgb2xkZXIgbWFjcm9zIGluIHRoZSBvcmRlciBpbiB3aGlj aCB0aGV5IGFyZSBmb3VuZCBpbgordGhlIGtleWJvYXJkIG1hY3JvIHJpbmcgKEBweHJlZntLZXli b2FyZCBNYWNybyBSaW5nfSkuICBVc2luZyB0aGUgS21hY3JvCitNZW51LCB5b3UgY2FuIGNoYW5n ZSB0aGUgb3JkZXIgb2YgdGhlIG1hY3JvcyBhbmQgY2hhbmdlIHRoZWlyIGNvdW50ZXJzLAorY291 bnRlciBmb3JtYXRzLCBhbmQga2V5cy4gIFRoZSBLbWFjcm8gTWVudSBpcyBhIHJlYWQtb25seSBi dWZmZXIsIGFuZAorY2FuIGJlIGNoYW5nZWQgb25seSB0aHJvdWdoIHRoZSBzcGVjaWFsIGNvbW1h bmRzIGRlc2NyaWJlZCBpbiB0aGlzCitzZWN0aW9uLiAgQWZ0ZXIgYSBjb21tYW5kIGlzIHJ1biwg dGhlIEttYWNybyBNZW51IGRpc3BsYXlzIGNoYW5nZXMgdG8KK3JlZmxlY3QgdGhlIG5ldyB2YWx1 ZXMgb2YgdGhlIG1hY3JvIHByb3BlcnRpZXMgYW5kIHRoZSBtYWNybyByaW5nLiAgWW91CitjYW4g dXNlIHRoZSB1c3VhbCBjdXJzb3IgbW90aW9uIGNvbW1hbmRzIGluIHRoaXMgYnVmZmVyLCBhcyB3 ZWxsIGFzCitzcGVjaWFsIG1vdGlvbiBjb21tYW5kcyBmb3IgbmF2aWdhdGluZyB0aGUgdGFibGUu ICBUbyB2aWV3IGEgbGlzdCBvZiB0aGUKK3NwZWNpYWwgY29tbWFuZHMsIHR5cGUgQGtiZHtDLWgg bX0gb3IgQGtiZHs/fSAoQGNvZGV7ZGVzY3JpYmUtbW9kZX0pIGluCit0aGUgS21hY3JvIE1lbnUu CisKKyAgWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBjaGFuZ2UgYSBtYWNy bydzIHByb3BlcnRpZXM6CisKK0B0YWJsZSBAa2JkCitAaXRlbSAjCitAZmluZGV4IGttYWNyby1t ZW51LWVkaXQtcG9zaXRpb24KK0BraW5kZXggIyBAcnsoS21hY3JvIE1lbnUpfQorQ2hhbmdlIHRo ZSBwb3NpdGlvbiBvZiB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZQorKEBweHJlZntLZXli b2FyZCBNYWNybyBSaW5nfSkuCisKK0BpdGVtIEMteCBDLXQKK0BmaW5kZXgga21hY3JvLW1lbnUt dHJhbnNwb3NlCitAa2luZGV4IEMteCBDLXQgQHJ7KEttYWNybyBNZW51KX0KK01vdmUgdGhlIG1h Y3JvIG9uIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlIGxpbmUgYWJvdmUsIGxpa2UgaW4KK0Bjb2Rl e3RyYW5zcG9zZS1saW5lc30uCisKK0BpdGVtIGMKK0BmaW5kZXgga21hY3JvLW1lbnUtZWRpdC1j b3VudGVyCitAa2luZGV4IGMgQHJ7KEttYWNybyBNZW51KX0KK0NoYW5nZSB0aGUgY291bnRlciB2 YWx1ZSBvZiB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZQorKEBweHJlZntLZXlib2FyZCBN YWNybyBDb3VudGVyfSkuCisKK0BpdGVtIGYKK0BmaW5kZXgga21hY3JvLW1lbnUtZWRpdC1mb3Jt YXQKK0BraW5kZXggZiBAcnsoS21hY3JvIE1lbnUpfQorQ2hhbmdlIHRoZSBjb3VudGVyIGZvcm1h dCBvZiB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZS4KKworQGl0ZW0gZQorQGZpbmRleCBr bWFjcm8tbWVudS1lZGl0LWtleXMKK0BraW5kZXggZSBAcnsoS21hY3JvIE1lbnUpfQorQ2hhbmdl IHRoZSBrZXlzIG9mIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lIHVzaW5nCitAY29kZXtl ZGl0LWtiZC1tYWNyb30gKEBweHJlZntFZGl0IEtleWJvYXJkIE1hY3JvfSkuCisKK0BpdGVtIEBr ZXl7UkVUfQorQGZpbmRleCBrbWFjcm8tbWVudS1lZGl0LWNvbHVtbgorQGtpbmRleCBAa2V5e1JF VH0gQHJ7KEttYWNybyBNZW51KX0KK0NoYW5nZSB0aGUgdmFsdWUgaW4gdGhlIGN1cnJlbnQgY29s dW1uIG9mIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lCit1c2luZyBjb21tYW5kcyBhYm92 ZS4KK0BlbmQgdGFibGUKKworICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGRlbGV0ZSBvciBkdXBs aWNhdGUgbWFjcm9zIGluIHRoZSBsaXN0OgorCitAdGFibGUgQGtiZAorQGl0ZW0gZAorQGZpbmRl eCBrbWFjcm8tbWVudS1mbGFnLWZvci1kZWxldGlvbgorQGl0ZW0gZCBAcnsoS21hY3JvIE1lbnUp fQorRmxhZyB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZSBmb3IgZGVsZXRpb24sIHRoZW4g bW92ZSBwb2ludCB0byB0aGUKK25leHQgbGluZSAoQGNvZGV7a21hY3JvLW1lbnUtZmxhZy1mb3It ZGVsZXRpb259KS4gIFRoZSBkZWxldGlvbiBmbGFnIGlzCitpbmRpY2F0ZWQgYnkgdGhlIGNoYXJh Y3RlciBAc2FtcHtEfSBhdCB0aGUgc3RhcnQgb2YgbGluZS4gIFRoZSBkZWxldGlvbgorb2NjdXJz IG9ubHkgd2hlbiB5b3UgdHlwZSB0aGUgQGtiZHt4fSBjb21tYW5kIChzZWUgYmVsb3cpLgorCisg IElmIHRoZSByZWdpb24gaXMgYWN0aXZlLCB0aGlzIGNvbW1hbmQgZmxhZ3MgYWxsIG9mIHRoZSBt YWNyb3MgaW4gdGhlCityZWdpb24uCisKK0BpdGVtIHgKK0BmaW5kZXgga21hY3JvLW1lbnUtZG8t ZmxhZ2dlZC1kZWxldGUKK0BpdGVtIHggQHJ7KEttYWNybyBNZW51KX0KK0RlbGV0ZSB0aGUgbWFj cm9zIGluIHRoZSBsaXN0IHRoYXQgaGF2ZSBiZWVuIGZsYWdnZWQgZm9yIGRlbGV0aW9uCisoQGNv ZGV7a21hY3JvLW1lbnUtZG8tZmxhZ2dlZC1kZWxldGV9KS4KKworQGl0ZW0gbQorQGZpbmRleCBr bWFjcm8tbWVudS1tYXJrCitAaXRlbSBtIEByeyhLbWFjcm8gTWVudSl9CitNYXJrIHRoZSBtYWNy byBvbiB0aGUgY3VycmVudCBsaW5lLCB0aGVuIG1vdmUgcG9pbnQgdG8gdGhlIG5leHQgbGluZQor KEBjb2Rle2ttYWNyby1tZW51LW1hcmt9KS4gIE1hcmtlZCBtYWNyb3MgYXJlIGluZGljYXRlZCBi eSB0aGUgY2hhcmFjdGVyCitAc2FtcHsqfSBhdCB0aGUgc3RhcnQgb2YgbGluZS4gIE1hcmtlZCBt YWNyb3MgY2FuIGJlIG9wZXJhdGVkIG9uIGJ5IHRoZQorQGtiZHtDfSBhbmQgQGtiZHtEfSBjb21t YW5kcyAoc2VlIGJlbG93KS4KKworICBJZiB0aGUgcmVnaW9uIGlzIGFjdGl2ZSwgdGhpcyBjb21t YW5kIG1hcmtzIGFsbCBvZiB0aGUgbWFjcm9zIGluIHRoZQorcmVnaW9uLgorCitAaXRlbSBDCitA ZmluZGV4IGttYWNyby1tZW51LWRvLWNvcHkKK0BpdGVtIEMgQHJ7KEttYWNybyBNZW51KX0KK1Ro aXMgY29tbWFuZCBjb3BpZXMgbWFjcm9zIGJ5IGR1cGxpY2F0aW5nIHRoZW0gYXQgdGhlaXIgY3Vy cmVudAorcG9zaXRpb25zIGluIHRoZSBsaXN0IChAY29kZXtrbWFjcm8tbWVudS1kby1jb3B5fSku ICBGb3IgZXhhbXBsZSwKK3J1bm5pbmcgdGhpcyBjb21tYW5kIG9uIHRoZSBtYWNybyBhdCBwb3Np dGlvbiBudW1iZXIgemVybyB3aWxsIGluc2VydCBhCitjb3B5IG9mIHRoYXQgbWFjcm8gaW50byBw b3NpdGlvbiBudW1iZXIgb25lIGFuZCBtb3ZlIHRoZSByZW1haW5pbmcKK21hY3JvcyBkb3duLgor CisgIElmIHRoZSByZWdpb24gaXMgYWN0aXZlLCB0aGlzIGNvbW1hbmQgZHVwbGljYXRlcyB0aGUg bWFjcm9zIGluIHRoZQorcmVnaW9uLiAgT3RoZXJ3aXNlLCBpZiB0aGVyZSBhcmUgbWFya2VkIG1h Y3JvcywgdGhpcyBjb21tYW5kIGR1cGxpY2F0ZXMKK3RoZSBtYXJrZWQgbWFjcm9zLiAgSWYgdGhl cmUgaXMgbm8gcmVnaW9uIG5vciBhcmUgdGhlcmUgbWFya2VkIG1hY3JvcywKK3RoaXMgY29tbWFu ZCBkdXBsaWNhdGVzIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lLiAgSW4gdGhlIGZpcnN0 IHR3bworY2FzZXMsIHRoZSBjb21tYW5kIHByb21wdHMgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUg ZHVwbGljYXRpb24uCisKK0BpdGVtIEQKK0BmaW5kZXgga21hY3JvLW1lbnUtZG8tZGVsZXRlCitA aXRlbSBEIEByeyhLbWFjcm8gTWVudSl9CitUaGlzIGNvbW1hbmQgZGVsZXRlcyBtYWNyb3MsIHJl bW92aW5nIHRoZW0gZnJvbSB0aGUgcmluZworKEBjb2Rle2ttYWNyby1tZW51LWRvLWRlbGV0ZX0p LiAgRm9yIGV4YW1wbGUsIHJ1bm5pbmcgdGhpcyBjb21tYW5kIG9uCit0aGUgbWFjcm8gYXQgcG9z aXRpb24gbnVtYmVyIHplcm8gd2lsbCBkZWxldGUgdGhlIGN1cnJlbnQgbWFjcm8gYW5kIHRoZW4K K21ha2UgdGhlIGZpcnN0IG1hY3JvIGluIHRoZSBtYWNybyByaW5nIChwcmV2aW91c2x5IGF0IHBv c2l0aW9uIG51bWJlcgorb25lKSB0aGUgbmV3IGN1cnJlbnQgbWFjcm8sIHBvcHBpbmcgaXQgZnJv bSB0aGUgcmluZy4KKworICBJZiB0aGUgcmVnaW9uIGlzIGFjdGl2ZSwgdGhpcyBjb21tYW5kIGRl bGV0ZXMgdGhlIG1hY3JvcyBpbiB0aGUKK3JlZ2lvbi4gIE90aGVyd2lzZSwgaWYgdGhlcmUgYXJl IG1hcmtlZCBtYWNyb3MsIHRoaXMgY29tbWFuZCBkZWxldGVzIHRoZQorbWFya2VkIG1hY3Jvcy4g IElmIHRoZXJlIGlzIG5vIHJlZ2lvbiBub3IgYXJlIHRoZXJlIG1hcmtlZCBtYWNyb3MsIHRoaXMK K2NvbW1hbmQgZGVsZXRlcyB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZS4gIEluIGFsbCBj YXNlcywgdGhlCitjb21tYW5kIHByb21wdHMgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRp b24uCisKKyAgVGhpcyBjb21tYW5kIGlzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBAa2Jke2R9IGFu ZCBAa2Jke3h9IGNvbW1hbmRzCisoc2VlIGFib3ZlKS4KKworQGl0ZW0gdQorQGZpbmRleCBrbWFj cm8tbWVudS11bm1hcmsKK0BpdGVtIHUgQHJ7KEttYWNybyBNZW51KX0KK1VubWFyayBhbmQgdW5m bGFnIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lLCB0aGVuIG1vdmUgcG9pbnQgZG93bgor dG8gdGhlIG5leHQgbGluZSAoQGNvZGV7a21hY3JvLW1lbnUtdW5tYXJrfSkuICBJZiB0aGVyZSBp cyBhbiBhY3RpdmUKK3JlZ2lvbiwgdGhpcyBjb21tYW5kIHVubWFya3MgYW5kIHVuZmxhZ3MgYWxs IG9mIHRoZSBtYWNyb3MgaW4gdGhlCityZWdpb24uCisKK0BpdGVtIEBrZXl7REVMfQorQGZpbmRl eCBrbWFjcm8tbWVudS11bm1hcmstYmFja3dhcmQKK0BpdGVtIEBrZXl7REVMfSBAcnsoS21hY3Jv IE1lbnUpfQorTGlrZSB0aGUgQGtiZHt1fSBjb21tYW5kIChzZWUgYWJvdmUpLCBidXQgbW92ZSBw b2ludCB1cCB0byB0aGUgcHJldmlvdXMKK2xpbmUgd2hlbiB0aGVyZSBpcyBubyBhY3RpdmUgcmVn aW9uCisoQGNvZGV7a21hY3JvLW1lbnUtdW5tYXJrLWJhY2t3YXJkfSkuCisKK0BpdGVtIFUKK0Bm aW5kZXgga21hY3JvLW1lbnUtdW5tYXJrLWFsbAorQGl0ZW0gVSBAcnsoS21hY3JvIE1lbnUpfQor VW5tYXJrIGFuZCB1bmZsYWcgYWxsIG1hY3JvcyBpbiB0aGUgbGlzdAorKEBjb2Rle2ttYWNyby1t ZW51LXVubWFyay1hbGx9KS4KK0BlbmQgdGFibGUKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRj L05FV1MKaW5kZXggZWRhODRkNTg4YTguLjA5NjhmN2NiN2JlIDEwMDY0NAotLS0gYS9ldGMvTkVX UworKysgYi9ldGMvTkVXUwpAQCAtMTM4OCw2ICsxMzg4LDE3IEBAIFdoZW4gdGhpcyBpcyBub24t bmlsLCB0aGUgbGluZXMgb2Yga2V5IHNlcXVlbmNlcyBhcmUgZGlzcGxheWVkIHdpdGgKIHRoZSBt b3N0IHJlY2VudCBsaW5lIGZpcnN0LiAgVGhpcyBpcyBjYW4gYmUgdXNlZnVsIHdoZW4gd29ya2lu ZyB3aXRoCiBtYWNyb3Mgd2l0aCBtYW55IGxpbmVzLCBzdWNoIGFzIGZyb20gJ2ttYWNyby1lZGl0 LWxvc3NhZ2UnLgogCisqKiBLbWFjcm8gTWVudSBNb2RlCisKKysrKworKioqIE5ldyBtb2RlICdr bWFjcm8tbWVudS1tb2RlJyBhbmQgbmV3IGNvbW1hbmQgJ2xpc3Qta2V5Ym9hcmQtbWFjcm9zJy4K K1RoZSBuZXcgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIHRoZSBpcyB0aGUga2V5Ym9h cmQtbWFjcm8gdmVyc2lvbgorb2YgY29tbWFuZHMgbGlrZSAnbGlzdC1idWZmZXJzJyBhbmQgJ2xp c3QtcHJvY2Vzc2VzJywgY3JlYXRpbmcgYSBsaXN0aW5nCitvZiB0aGUgY3VycmVudGx5IGV4aXN0 aW5nIGtleWJvYXJkcyBtYWNyb3MgdXNpbmcgdGhlIG5ldworJ2ttYWNyby1tZW51LW1vZGUnLiAg SXQgYWxsb3dzIHJlYXJyYW5naW5nIHRoZSBtYWNyb3MgaW4gdGhlIHJpbmcsCitkdXBsaWNhdGlu ZyB0aGVtLCBkZWxldGluZyB0aGVtLCBhbmQgZWRpdGluZyB0aGVpciBjb3VudGVycywgZm9ybWF0 cywKK2FuZCBrZXlzLgorCiAqKiBNaXNjZWxsYW5lb3VzCiAKIC0tLQpkaWZmIC0tZ2l0IGEvbGlz cC9rbWFjcm8uZWwgYi9saXNwL2ttYWNyby5lbAppbmRleCA4OTdlYmYxNDMzMC4uYTE2ZjcwMTA1 YzEgMTAwNjQ0Ci0tLSBhL2xpc3Ava21hY3JvLmVsCisrKyBiL2xpc3Ava21hY3JvLmVsCkBAIC0x Mzg4LDYgKzEzODgsNTY0IEBAIGttYWNyby1yZWRpc3BsYXkKICAgICAobGV0ICgoZXhlY3V0aW5n LWtiZC1tYWNybyBuaWwpKQogICAgICAgKHJlZGlzcGxheSkpKSkKIAorOzs7IE1vZGUgYW5kIGNv bW1hbmRzIGZvciB3b3JraW5nIHdpdGggdGhlIHJpbmcgaW4gYSB0YWJsZQorCisoZGVmZmFjZSBr bWFjcm8tbWVudS1tYXJrICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1jb25zdGFudC1mYWNlKSkp CisgICJGYWNlIHVzZWQgZm9yIHRoZSBLZXlib2FyZCBNYWNybyBNZW51IG1hcmtzLiIKKyAgOmdy b3VwICdrbWFjcm8KKyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmZmFjZSBrbWFjcm8tbWVudS1m bGFnZ2VkICcoKHQgKDppbmhlcml0IGVycm9yKSkpCisgICJGYWNlIHVzZWQgZm9yIGtleWJvYXJk IG1hY3JvcyBmbGFnZ2VkIGZvciBkZWxldGlvbi4iCisgIDpncm91cCAna21hY3JvCisgIDp2ZXJz aW9uICIzMC4xIikKKworKGRlZmZhY2Uga21hY3JvLW1lbnUtbWFya2VkICcoKHQgKDppbmhlcml0 IHdhcm5pbmcpKSkKKyAgIkZhY2UgdXNlZCBmb3Iga2V5Ym9hcmQgbWFjcm9zIG1hcmtlZCBmb3Ig ZHVwbGljYXRpb24uIgorICA6Z3JvdXAgJ2ttYWNybworICA6dmVyc2lvbiAiMzAuMSIpCisKKyhk ZWZ2YXIta2V5bWFwIGttYWNyby1tZW51LW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBmb3IgYGtt YWNyby1tZW51LW1vZGUnLiIKKyAgOnBhcmVudCB0YWJ1bGF0ZWQtbGlzdC1tb2RlLW1hcAorICAi IyIgIydrbWFjcm8tbWVudS1lZGl0LXBvc2l0aW9uCisgICJjIiAjJ2ttYWNyby1tZW51LWVkaXQt Y291bnRlcgorICAiZSIgIydrbWFjcm8tbWVudS1lZGl0LWtleXMKKyAgImYiICMna21hY3JvLW1l bnUtZWRpdC1mb3JtYXQKKyAgIlJFVCIgIydrbWFjcm8tbWVudS1lZGl0LWNvbHVtbgorCisgICJD IiAjJ2ttYWNyby1tZW51LWRvLWNvcHkKKyAgIkQiICMna21hY3JvLW1lbnUtZG8tZGVsZXRlCisg ICJtIiAjJ2ttYWNyby1tZW51LW1hcmsKKworICAiZCIgIydrbWFjcm8tbWVudS1mbGFnLWZvci1k ZWxldGlvbgorICAieCIgIydrbWFjcm8tbWVudS1kby1mbGFnZ2VkLWRlbGV0ZQorCisgICJ1IiAj J2ttYWNyby1tZW51LXVubWFyaworICAiVSIgIydrbWFjcm8tbWVudS11bm1hcmstYWxsCisgICJE RUwiIydrbWFjcm8tbWVudS11bm1hcmstYmFja3dhcmQKKworICAiPHJlbWFwPiA8dHJhbnNwb3Nl LWxpbmVzPiIgIydrbWFjcm8tbWVudS10cmFuc3Bvc2UpCisKKyhkZWZpbmUtZGVyaXZlZC1tb2Rl IGttYWNyby1tZW51LW1vZGUgdGFidWxhdGVkLWxpc3QtbW9kZQorICAiS2V5Ym9hcmQgTWFjcm8g TWVudSIKKyAgIk1ham9yIG1vZGUgZm9yIGxpc3RpbmcgYW5kIGVkaXRpbmcga2V5Ym9hcmQgbWFj cm9zLiIKKyAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2ttYWNyby1tZW51LS1tYXJrcykKKyAgKG1h a2UtbG9jYWwtdmFyaWFibGUgJ2ttYWNyby1tZW51LS1kZWxldGlvbi1mbGFncykKKyAgKHNldHEt bG9jYWwgdGFidWxhdGVkLWxpc3QtZm9ybWF0CisgICAgICAgICAgICAgIFsoIlBvc2l0aW9uIiA4 IG5pbCkKKyAgICAgICAgICAgICAgICgiQ291bnRlciIgIDggbmlsIDpyaWdodC1hbGlnbiB0IDpw YWQtcmlnaHQgMikKKyAgICAgICAgICAgICAgICgiRm9ybWF0IiAgOCBuaWwpCisgICAgICAgICAg ICAgICAoIkZvcm1hdHRlZCIgMTAgbmlsKQorICAgICAgICAgICAgICAgKCJLZXlzIiAxIG5pbCld KQorICAoc2V0cS1sb2NhbCB0YWJ1bGF0ZWQtbGlzdC1wYWRkaW5nIDIpCisgIChhZGQtaG9vayAn dGFidWxhdGVkLWxpc3QtcmV2ZXJ0LWhvb2sgIydrbWFjcm8tbWVudS0tcmVmcmVzaCBuaWwgdCkK KyAgKHRhYnVsYXRlZC1saXN0LWluaXQtaGVhZGVyKQorICAodW5sZXNzIChrbWFjcm8tcmluZy1l bXB0eS1wKQorICAgIChrbWFjcm8tbWVudS0tcmVmcmVzaCkKKyAgICAodGFidWxhdGVkLWxpc3Qt cHJpbnQpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZhbGlhcyAna21hY3JvLW1lbnUgIydsaXN0 LWtleWJvYXJkLW1hY3JvcykKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gbGlzdC1rZXlib2FyZC1t YWNyb3MgKCkKKyAgIkxpc3QgdGhlIGtleWJvYXJkIG1hY3Jvcy4iCisgIChpbnRlcmFjdGl2ZSkK KyAgKGxldCAoKGJ1ZiAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipLZXlib2FyZCBNYWNybyBMaXN0KiIp KSkKKyAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYKKyAgICAgIChrbWFjcm8tbWVudS1tb2Rl KSkKKyAgICAocG9wLXRvLWJ1ZmZlciBidWYpKSkKKworOzs7OyBVdGlsaXR5IGZ1bmN0aW9ucyBh bmQgbW9kZSBkYXRhCisKKyhkZWZ2YXIga21hY3JvLW1lbnUtLWRlbGV0aW9uLWZsYWdzIG5pbAor ICAiQWxpc3Qgb2YgZW50cmllcyBmbGFnZ2VkIGZvciBkZWxldGlvbi4iKQorCisoZGVmdmFyIGtt YWNyby1tZW51LS1tYXJrcyBuaWwKKyAgIkFsaXN0IG9mIGVudHJpZXMgbWFya2VkIGZvciBjb3B5 aW5nIGFuZCBkdXBsaWNhdGlvbi4iKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLWlkLWttYWNybyAo ZW50cnktaWQpCisgICJSZXR1cm4gdGhlIGtleWJvYXJkIG1hY3JvIHRoYXQgaXMgcGFydCBvZiB0 aGUgRU5UUlktSUQuIgorICAoY2FyIGVudHJ5LWlkKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1p ZC1wb3NpdGlvbiAoZW50cnktaWQpCisgICJSZXR1cm4gdGhlIG9yZGluYWwgcG9zaXRpb24gdGhh dCBpcyBwYXJ0IG9mIHRoZSBFTlRSWS1JRC4iCisgIChjZHIgZW50cnktaWQpKQorCisoZGVmdW4g a21hY3JvLW1lbnUtLWttYWNyb3MgKCkKKyAgIlJldHVybiB0aGUgbGlzdCBvZiB0aGUgZXhpc3Rp bmcga2V5Ym9hcmQgbWFjcm9zIG9yIG5pbCwgaWYgbm9uZSBhcmUgZGVmaW5lZC4iCisgICh3aGVu IGxhc3Qta2JkLW1hY3JvCisgICAgKGNvbnMgKGttYWNyby1yaW5nLWhlYWQpCisgICAgICAgICAg a21hY3JvLXJpbmcpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1yZWZyZXNoICgpCisgICJSZXNl dCB0aGUgbGlzdCBvZiBrZXlib2FyZCBtYWNyb3MuIgorICAoc2V0cS1sb2NhbCB0YWJ1bGF0ZWQt bGlzdC1lbnRyaWVzCisgICAgICAgICAgICAgIChzZXEtbWFwLWluZGV4ZWQgKGxhbWJkYSAoa20g aWR4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNudCAoa21hY3Jv LS1jb3VudGVyIGttKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChm bXQgKGttYWNyby0tZm9ybWF0IGttKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGAoKCxrbSAuICxpZHgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WywoZm9ybWF0ICIlZCIgaWR4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsKGZvcm1hdCAiJWQiIGNudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLGZtdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGZvcm1hdCBm bXQgY250KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGZvcm1hdC1r YmQtbWFjcm8gKGttYWNyby0ta2V5cyBrbSkpXSkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChrbWFjcm8tbWVudS0ta21hY3JvcykpCisgICAgICAgICAgICAgIGttYWNyby1tZW51 LS1kZWxldGlvbi1mbGFncyBuaWwKKyAgICAgICAgICAgICAga21hY3JvLW1lbnUtLW1hcmtzIG5p bCkKKyAgKHRhYnVsYXRlZC1saXN0LWNsZWFyLWFsbC10YWdzKSkKKworKGRlZnVuIGttYWNyby1t ZW51LS1tYXAtaWRzIChmdW5jdGlvbikKKyAgIkFwcGx5IEZVTkNUSU9OIHRvIHRoZSBjdXJyZW50 IHRhYmxlJ3MgZW50cnkgSURzIGluIG9yZGVyLgorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBvdXRw dXQgb2YgRlVOQ1RJT04uIgorICAobWFwY2FyIGZ1bmN0aW9uCisgICAgICAgICAgKG1hcGNhciAj J2NhcgorICAgICAgICAgICAgICAgICAgKHNlcS1zb3J0LWJ5ICMnY2RhciAjJzwgdGFidWxhdGVk LWxpc3QtZW50cmllcykpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1yZXBsYWNlLWFsbCAoa21h Y3JvcykKKyAgIlJlcGxhY2UgdGhlIGV4aXN0aW5nIGtleWJvYXJkIG1hY3JvcyB3aXRoIHRob3Nl IGluIEtNQUNST1MuCisKK1RoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBsaXN0IG92ZXJ3cml0ZXMg dGhlIHZhbHVlcyBvZiBgbGFzdC1rYmQtbWFjcm8nLAorYGttYWNyby1jb3VudGVyJywgYW5kIGBr bWFjcm8tY291bnRlci1mb3JtYXQnLiAgVGhlIHJlbWFpbmluZyBlbGVtZW50cworYmVjb21lIHRo ZSB2YWx1ZSBvZiBga21hY3JvLXJpbmcnLgorCitLTUFDUk9TIGlzIGEgbGlzdCBvZiBga21hY3Jv JyBvYmplY3RzLiIKKyAgKGlmIChudWxsIGttYWNyb3MpCisgICAgICAoc2V0cSBsYXN0LWtiZC1t YWNybyBuaWwKKyAgICAgICAgICAgIGttYWNyby1jb3VudGVyLWZvcm1hdCBrbWFjcm8tZGVmYXVs dC1jb3VudGVyLWZvcm1hdAorICAgICAgICAgICAga21hY3JvLWNvdW50ZXIgMAorICAgICAgICAg ICAga21hY3JvLXJpbmcgbmlsKQorICAgIChpZiAobm90IChzZXEtZXZlcnktcCAjJ2ttYWNyby1w IGttYWNyb3MpKQorICAgICAgICAoZXJyb3IgIkFsbCBlbGVtZW50cyBtdXN0IHNhdGlzZnkgYGtt YWNyby1wJyIpCisgICAgICAoa21hY3JvLXNwbGl0LXJpbmctZWxlbWVudCAoY2FyIGttYWNyb3Mp KQorICAgICAgKHNldHEga21hY3JvLXJpbmcgKGNkciBrbWFjcm9zKSkpKSkKKworKGRlZnVuIGtt YWNyby1tZW51LS1yZXBsYWNlLWF0IChrbWFjcm8gbikKKyAgIlJlcGxhY2UgdGhlIGtleWJvYXJk IG1hY3JvIGF0IHBvc2l0aW9uIE4gd2l0aCBLTUFDUk8uCisKK1RoaXMgZnVuY3Rpb24gcmVwbGFj ZXMgYWxsIG9mIHRoZSBleGlzdGluZyBrZXlib2FyZCBtYWNyb3MgdmlhCitga21hY3JvLW1lbnUt LXJlcGxhY2UtYWxsJy4gIEV4Y2VwdCBmb3IgdGhlIG1hY3JvIGF0IHBvc2l0aW9uIE4sIHdoaWNo IHdpbGwKK2JlIEtNQUNSTywgdGhlIHJlcGxhY2VtZW50IG1hY3JvcyBhcmUgdGhlIGV4aXN0aW5n IG1hY3JvcyBpZGVudGlmaWVkIGluCit0aGUgdGFibGUuIgorICAoa21hY3JvLW1lbnUtLXJlcGxh Y2UtYWxsCisgICAoa21hY3JvLW1lbnUtLW1hcC1pZHMgKGxhbWJkYSAoaWQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgKD0gbiAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbWFjcm8KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKSkpKSkKKworKGRlZnVuIGtt YWNyby1tZW51LS1xdWVyeS1yZXZlcnQgKCkKKyAgIklmIHRoZSB0YWJsZSBkaWZmZXJzIGZyb20g dGhlIGV4aXN0aW5nIG1hY3JvcywgYXNrIHdoZXRoZXIgdG8gcmV2ZXJ0IHRhYmxlLiIKKyAgKHdo ZW4gKGFuZCAobm90IChlcXVhbCAoa21hY3JvLW1lbnUtLWttYWNyb3MpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKGttYWNyby1tZW51LS1tYXAtaWRzICMna21hY3JvLW1lbnUtLWlkLWttYWNy bykpKQorICAgICAgICAgICAgICh5ZXMtb3Itbm8tcCAiVGFibGUgZG9lcyBub3QgbWF0Y2ggZXhp c3Rpbmcga2V5Ym9hcmQgbWFjcm9zLiAgU3RvcCBhbmQgcmV2ZXJ0IHRhYmxlPyIpKQorICAgICh0 YWJ1bGF0ZWQtbGlzdC1yZXZlcnQpCisgICAgKHNpZ25hbCAncXVpdCBuaWwpKSkKKworKGRlZnVu IGttYWNyby1tZW51LS1hc3NlcnQtcm93ICgmb3B0aW9uYWwgaWQpCisgICJTaWduYWwgYW4gZXJy b3IgaWYgcG9pbnQgaXMgbm90IG9uIGEgdGFibGUgcm93LgorCitJRCBpcyB0aGUgdGFidWxhdGVk IGxpc3QgaWQgb2YgdGhlIHN1cHBvc2VkIGVudHJ5IGF0IHBvaW50LiIKKyAgKHVubGVzcyAob3Ig aWQgKHRhYnVsYXRlZC1saXN0LWdldC1pZCkpCisgICAgKHVzZXItZXJyb3IgIk5vdCBvbiBhIHRh YmxlIHJvdyIpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1wcm9wZXJ0aXplLWtleXMgKGZhY2Up CisgICJSZWRpc3BsYXkgdGhlIG1hY3JvIGtleXMgb24gdGhlIGN1cnJlbnQgbGluZSB3aXRoIEZB Q0UuIgorICAodGFidWxhdGVkLWxpc3Qtc2V0LWNvbCA0IChwcm9wZXJ0aXplIChhcmVmICh0YWJ1 bGF0ZWQtbGlzdC1nZXQtZW50cnkpIDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2ZhY2UgZmFjZSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLWRvLXJlZ2lvbiAo ZnVuY3Rpb24pCisgICJSdW4gRlVOQ1RJT04gb24gbWFjcm9zIGluIHRoZSByZWdpb24gb3Igb24g dGhlIGN1cnJlbnQgbGluZSBhdCB0aGUgbGluZSBzdGFydC4KKworSWYgdGhlcmUgaXMgYW4gYWN0 aXZlIHJlZ2lvbiwgZm9yIGVhY2ggbGluZSBpbiB0aGUgcmVnaW9uLCBtb3ZlIHRvIHRoZQorYmVn aW5uaW5nIG9mIHRoZSBsaW5lIGFuZCBhcHBseSBGVU5DVElPTiB0byB0aGUgdGFibGUgZW50cnkg SUQgb2YgdGhlCitsaW5lLiAgSWYgdGhlcmUgaXMgbm8gcmVnaW9uLCBhcHBseSBGVU5DVElPTiBv bmx5IHRvIHRoZSB0YWJsZSBlbnRyeSBJRAorb2YgdGhlIGN1cnJlbnQgbGluZS4KKworV2hlbiB0 aGVyZSBpcyBubyBhY3RpdmUgcmVnaW9uLCBhZHZhbmNlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl IG5leHQKK2xpbmUgYWZ0ZXIgYXBwbHlpbmcgRlVOQ1RJT04uIgorICAoaWYgKHVzZS1yZWdpb24t cCkKKyAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAobGV0KiAoKHJlZy1iZWcgKHJlZ2lv bi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAgKHJlZy1lbmQgKHJlZ2lvbi1lbmQpKQorICAg ICAgICAgICAgICAgKGxpbmUtYmVnIChwcm9nbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciByZWctYmVnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcy1ib2wp KSkKKyAgICAgICAgICAgICAgIChsaW5lLWVuZCAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgcmVnLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChp ZiAoYm9scCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWctZW5kCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwb3MtYm9sIDIpKSkpKQorICAgICAgICAgIChnb3RvLWNo YXIgbGluZS1iZWcpCisgICAgICAgICAgKGxldCAoKGlkKSkKKyAgICAgICAgICAgICh3aGlsZSAo YW5kICg8IChwb2ludCkgbGluZS1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBp ZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgICAgICAgICAgIChrbWFjcm8tbWVudS0t YXNzZXJ0LXJvdyBpZCkKKyAgICAgICAgICAgICAgKGZ1bmNhbGwgZnVuY3Rpb24gaWQpCisgICAg ICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkpKSkpCisgICAgKGxldCAoKGlkICh0YWJ1bGF0ZWQt bGlzdC1nZXQtaWQpKSkKKyAgICAgIChrbWFjcm8tbWVudS0tYXNzZXJ0LXJvdyBpZCkKKyAgICAg IChnb3RvLWNoYXIgKHBvcy1ib2wpKQorICAgICAgKGZ1bmNhbGwgZnVuY3Rpb24gaWQpCisgICAg ICAoZm9yd2FyZC1saW5lIDEpKSkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS0tbWFya3MtZXhpc3Qt cCAoKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgbWFya2VycyBleGlzdCBmb3IgYW55IHRhYmxlIGVu dHJpZXMuIgorICAobGV0ICgodGFnIChnZW5zeW0pKSkKKyAgICAoY2F0Y2ggdGFnCisgICAgICAo a21hY3JvLW1lbnUtLW1hcC1pZHMgKGxhbWJkYSAoaWQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAod2hlbiAoYWxpc3QtZ2V0IChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGttYWNyby1tZW51 LS1tYXJrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93IHRhZyB0KSkp KQorICAgICAgbmlsKSkpCisKKzs7OzsgQ29tbWFuZHMgZm9yIE1hcmtzIGFuZCBGbGFncworCiso ZGVmdW4ga21hY3JvLW1lbnUtbWFyayAoKQorICAiTWFyayBtYWNyb3MgaW4gdGhlIHJlZ2lvbiBv ciBvbiB0aGUgY3VycmVudCBsaW5lLgorCitJZiB0aGVyZSdzIGFuIGFjdGl2ZSByZWdpb24sIG1h cmsgbWFjcm9zIGluIHRoZSByZWdpb247IG90aGVyd2lzZSBtYXJrCit0aGUgbWFjcm8gb24gdGhl IGN1cnJlbnQgbGluZS4gIElmIG1hcmtpbmcgdGhlIGN1cnJlbnQgbGluZSwgbW92ZSBwb2ludAor dG8gdGhlIG5leHQgbGluZSB3aGVuIGRvbmUuCisKK01hcmtlZCBtYWNyb3MgY2FuIGJlIG9wZXJh dGVkIG9uIGJ5IGBrbWFjcm8tbWVudS1kby1jb3B5JyBhbmQKK2BrbWFjcm8tbWVudS1kby1kZWxl dGUnLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3Rp dmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQor ICAoa21hY3JvLW1lbnUtLWRvLXJlZ2lvbgorICAgKGxhbWJkYSAoaWQpCisgICAgIChzZXRmIChh bGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAgICAgICAg ICAgICBrbWFjcm8tbWVudS0tbWFya3MpCisgICAgICAgICAgIHQpCisgICAgIChrbWFjcm8tbWVu dS0tcHJvcGVydGl6ZS1rZXlzICdrbWFjcm8tbWVudS1tYXJrZWQpCisgICAgICh0YWJ1bGF0ZWQt bGlzdC1wdXQtdGFnICMoIioiIDAgMSAoZmFjZSBrbWFjcm8tbWVudS1tYXJrKSkpKSkpCisKKyhk ZWZ1biBrbWFjcm8tbWVudS1mbGFnLWZvci1kZWxldGlvbiAoKQorICAiRmxhZyBtYWNyb3MgaW4g dGhlIHJlZ2lvbiBvciBvbiB0aGUgY3VycmVudCBsaW5lLgorCitJZiB0aGVyZSdzIGFuIGFjdGl2 ZSByZWdpb24sIGZsYWcgbWFjcm9zIGluIHRoZSByZWdpb247IG90aGVyd2lzZSBmbGFnCit0aGUg bWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZS4gIElmIHRoZXJlIGlzIG5vIGFjdGl2ZSByZWdpb24s IG1vdmUgcG9pbnQKK3RvIHRoZSBuZXh0IGxpbmUgd2hlbiBkb25lLgorCitGbGFnZ2VkIG1hY3Jv cyBjYW4gYmUgZGVsZXRlZCB2aWEgYGttYWNyby1tZW51LWRvLWZsYWdnZWQtZGVsZXRlJy4iCisg IChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAgKGludGVyYWN0aXZlIG5pbCBr bWFjcm8tbWVudS1tb2RlKQorICAoa21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAgKGttYWNy by1tZW51LS1kby1yZWdpb24KKyAgIChsYW1iZGEgKGlkKQorICAgICAoc2V0ZiAoYWxpc3QtZ2V0 IChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAgICAga21h Y3JvLW1lbnUtLWRlbGV0aW9uLWZsYWdzKQorICAgICAgICAgICB0KQorICAgICAoa21hY3JvLW1l bnUtLXByb3BlcnRpemUta2V5cyAna21hY3JvLW1lbnUtZmxhZ2dlZCkKKyAgICAgKHRhYnVsYXRl ZC1saXN0LXB1dC10YWcgIygiRCIgMCAxIChmYWNlIGttYWNyby1tZW51LW1hcmspKSkpKSkKKwor KGRlZnVuIGttYWNyby1tZW51LXVubWFyayAoKQorICAiVW5tYXJrIGFuZCB1bmZsYWcgbWFjcm9z IGluIHRoZSByZWdpb24gb3Igb24gdGhlIGN1cnJlbnQgbGluZS4KKworSWYgdGhlcmUncyBhbiBh Y3RpdmUgcmVnaW9uLCB1bm1hcmsgYW5kIHVuZmxhZyBtYWNyb3MgaW4gdGhlIHJlZ2lvbjsKK290 aGVyd2lzZSB1bm1hcmsgYW5kIHVuZmxhZyB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZS4g IElmIHRoZXJlIGlzCitubyBhY3RpdmUgcmVnaW9uLCBtb3ZlIHBvaW50IHRvIHRoZSBuZXh0IGxp bmUgd2hlbiBkb25lLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAo aW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChrbWFjcm8tbWVudS0tcXVlcnkt cmV2ZXJ0KQorICAoa21hY3JvLW1lbnUtLWRvLXJlZ2lvbgorICAgKGxhbWJkYSAoaWQpCisgICAg IChsZXQgKChwb3MgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkpKQorICAgICAgIChzZXRm IChhbGlzdC1nZXQgcG9zIGttYWNyby1tZW51LS1kZWxldGlvbi1mbGFncykgbmlsCisgICAgICAg ICAgICAgKGFsaXN0LWdldCBwb3Mga21hY3JvLW1lbnUtLW1hcmtzKSBuaWwpKQorICAgICAoa21h Y3JvLW1lbnUtLXByb3BlcnRpemUta2V5cyAnZGVmYXVsdCkKKyAgICAgKHRhYnVsYXRlZC1saXN0 LXB1dC10YWcgIiAiKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtdW5tYXJrLWJhY2t3YXJkICgp CisgICJMaWtlIGBrbWFjcm8tbWVudS11bm1hcmsnLCBidXQgbW92ZSBiYWNrd2FyZHMgaW5zdGVh ZCBvZiBmb3J3YXJkcy4iCisgIChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAg KGludGVyYWN0aXZlIG5pbCBrbWFjcm8tbWVudS1tb2RlKQorICAoa21hY3JvLW1lbnUtLXF1ZXJ5 LXJldmVydCkKKyAgKGxldCAoKGdvLWJhY2sgKG5vdCAodXNlLXJlZ2lvbi1wKSkpKQorICAgIChr bWFjcm8tbWVudS11bm1hcmspCisgICAgKHdoZW4gZ28tYmFjaworICAgICAgKGZvcndhcmQtbGlu ZSAtMikpKSkKKworKGRlZnVuIGttYWNyby1tZW51LXVubWFyay1hbGwgKCkKKyAgIlVubWFyayBh bmQgdW5mbGFnIGFsbCBsaXN0ZWQga2V5Ym9hcmQgbWFjcm9zLiIKKyAgKGRlY2xhcmUgKG1vZGVz IGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUp CisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAoc2V0cS1sb2NhbCBrbWFjcm8tbWVu dS0tZGVsZXRpb24tZmxhZ3MgbmlsCisgICAgICAgICAgICAgIGttYWNyby1tZW51LS1tYXJrcyBu aWwpCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAg KHdoaWxlICh0YWJ1bGF0ZWQtbGlzdC1nZXQtaWQpCisgICAgICAoa21hY3JvLW1lbnUtLXByb3Bl cnRpemUta2V5cyAnZGVmYXVsdCkKKyAgICAgIChmb3J3YXJkLWxpbmUgMSkpCisgICAgKHRhYnVs YXRlZC1saXN0LWNsZWFyLWFsbC10YWdzKSkpCisKKzs7OzsgQ29tbWFuZHMgdGhhdCBNb2RpZnkg dGhlIFJpbmcKKworKGRlZnVuIGttYWNyby1tZW51LWRvLWZsYWdnZWQtZGVsZXRlICgpCisgICJE ZWxldGUga2V5Ym9hcmQgbWFjcm9zIGZsYWdnZWQgdmlhIGBrbWFjcm8tbWVudS1mbGFnLWZvci1k ZWxldGlvbicuIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRl cmFjdGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZl cnQpCisgIChsZXQgKChyZXMpCisgICAgICAgIChudW0tZGVsZXRlcyAwKSkKKyAgICAoa21hY3Jv LW1lbnUtLW1hcC1pZHMgKGxhbWJkYSAoaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIChhbGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbWFjcm8tbWVudS0tZGVsZXRpb24tZmxh Z3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG51bS1kZWxldGVzICgx KyBudW0tZGVsZXRlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAoa21h Y3JvLW1lbnUtLWlkLWttYWNybyBpZCkgcmVzKSkpKQorICAgICh3aGVuICh5ZXMtb3Itbm8tcCAo aWYgKD0gMSBudW0tZGVsZXRlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxldGUg MSBmbGFnZ2VkIGtleWJvYXJkIG1hY3JvPyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZm9y bWF0ICJEZWxldGUgJWQgZmxhZ2dlZCBrZXlib2FyZCBtYWNyb3M/IgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbnVtLWRlbGV0ZXMpKSkKKyAgICAgIChrbWFjcm8tbWVudS0tcmVw bGFjZS1hbGwKKyAgICAgICAobnJldmVyc2UgcmVzKSkKKyAgICAgICh0YWJ1bGF0ZWQtbGlzdC1y ZXZlcnQpKSkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS1kby1jb3B5ICgpCisgICJEdXBsaWNhdGUg bWFjcm9zIGluIHRoZSByZWdpb24sIHRob3NlIHdpdGggbWFya2Vycywgb3IgdGhlIG9uZSBhdCBw b2ludC4KKworTWFjcm9zIGFyZSBkdXBsaWNhdGVkIGF0IHRoZWlyIGN1cnJlbnQgcG9zaXRpb24g aW4gdGhlIG1hY3JvIHJpbmcuCisKK0lmIHRoZXJlJ3MgYW4gYWN0aXZlIHJlZ2lvbiwgZHVwbGlj YXRlIG1hY3JvcyBpbiB0aGUgcmVnaW9uOyBvdGhlcndpc2UKK2R1cGxpY2F0ZSB0aGUgbWFya2Vk IG1hY3JvcyBvciwgaWYgdGhlcmUgYXJlIG5vIG1hcmtzLCB0aGUgbWFjcm8gb24gdGhlCitjdXJy ZW50IGxpbmUuIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRl cmFjdGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZl cnQpCisgIChsZXQqICgocmVnaW9uLWV4aXN0cyAodXNlLXJlZ2lvbi1wKSkKKyAgICAgICAgICht YXJrLWV4aXN0cyAoa21hY3JvLW1lbnUtLW1hcmtzLWV4aXN0LXApKQorICAgICAgICAgKGlkLWFs aXN0IChpZiAob3IgcmVnaW9uLWV4aXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v dCBtYXJrLWV4aXN0cykpCisgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChyZWdpb24tYWxp c3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tbWVudS0tZG8tcmVnaW9uCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlkKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwdXNoIChjb25zIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICByZWdpb24tYWxpc3QpCisgICAgICAgICAgICAgICAgICAgICBrbWFjcm8tbWVudS0tbWFya3Mp KQorICAgICAgICAgKG51bS1kdXBsaWNhdGVzIDApKQorICAgIChsZXQgKChyZXMpKQorICAgICAg KGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKGlkKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxldCAoKHBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbSAoa21hY3JvLW1lbnUtLWlkLWttYWNy byBpZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBrbSByZXMpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbGlzdC1nZXQgcG9zIGlkLWFs aXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIGttIHJlcykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tZHVwbGljYXRlcyAoMSsg bnVtLWR1cGxpY2F0ZXMpKSkpKSkKKyAgICAgIDs7IENvbmZpcm0gdGhlIGFjdGlvbiBpZiB3ZSBv cGVyYXRlZCBvbiBtYXJrcyBvciB0aGUgcmVnaW9uLCBidXQKKyAgICAgIDs7IGRvbid0IGNvbmZp cm0gaWYgb3BlcmF0aW5nIG9uIGEgc2luZ2xlIGxpbmUgd2l0aG91dCBhIHJlZ2lvbi4KKyAgICAg ICh3aGVuIChpZiAob3IgbWFyay1leGlzdHMgcmVnaW9uLWV4aXN0cykKKyAgICAgICAgICAgICAg ICAoeWVzLW9yLW5vLXAgKGlmICg9IDEgbnVtLWR1cGxpY2F0ZXMpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiQ29weSAoZHVwbGljYXRlKSAxIGtleWJvYXJkIG1hY3JvPyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJDb3B5IChkdXBsaWNhdGUpICVk IGtleWJvYXJkIG1hY3Jvcz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudW0tZHVwbGljYXRlcykpKQorICAgICAgICAgICAgICB0KQorICAgICAgICAoa21hY3JvLW1l bnUtLXJlcGxhY2UtYWxsIChucmV2ZXJzZSByZXMpKQorICAgICAgICAodGFidWxhdGVkLWxpc3Qt cmV2ZXJ0KSkpKSkKKworKGRlZnVuIGttYWNyby1tZW51LWRvLWRlbGV0ZSAoKQorICAiRGVsZXRl IG1hY3JvcyBpbiB0aGUgcmVnaW9uLCB0aG9zZSB3aXRoIG1hcmtlcnMsIG9yIHRoZSBvbmUgYXQg cG9pbnQuCisKK0lmIHRoZXJlJ3MgYW4gYWN0aXZlIHJlZ2lvbiwgZGVsZXRlIG1hY3JvcyBpbiB0 aGUgcmVnaW9uOyBvdGhlcndpc2UKK2RlbGV0ZSB0aGUgbWFya2VkIG1hY3JvcyBvciwgaWYgdGhl cmUgYXJlIG5vIG1hcmtzLCB0aGUgbWFjcm8gb24gdGhlCitjdXJyZW50IGxpbmUuIgorICAoZGVj bGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSBuaWwga21hY3Jv LW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgIChsZXQgKChudW0t ZGVsZXRlcyAwKQorICAgICAgICAoaWQtYWxpc3QgKGlmIChvciAodXNlLXJlZ2lvbi1wKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAobm90IChrbWFjcm8tbWVudS0tbWFya3MtZXhpc3QtcCkp KQorICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChyZWdpb24tYWxpc3QpKQorICAgICAgICAg ICAgICAgICAgICAgICAgKGttYWNyby1tZW51LS1kby1yZWdpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChj b25zIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn aW9uLWFsaXN0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpCisgICAg ICAgICAgICAgICAgICAgIGttYWNyby1tZW51LS1tYXJrcykpKQorICAgIChsZXQgKChyZXMpKQor ICAgICAgKGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKGlkKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIChhbGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBp ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLWFsaXN0 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG51bS1kZWxldGVzICgx KyBudW0tZGVsZXRlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChr bWFjcm8tbWVudS0taWQta21hY3JvIGlkKSByZXMpKSkpCisgICAgICAod2hlbiAoeWVzLW9yLW5v LXAgKGlmICg9IDEgbnVtLWRlbGV0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJE ZWxldGUgMSBrZXlib2FyZCBtYWNybz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9y bWF0ICJEZWxldGUgJWQga2V5Ym9hcmQgbWFjcm9zPyIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbnVtLWRlbGV0ZXMpKSkKKyAgICAgICAgKGttYWNyby1tZW51LS1yZXBsYWNl LWFsbCAobnJldmVyc2UgcmVzKSkKKyAgICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkpKSkp CisKKzs7OzsgQ29tbWFuZHMgdGhhdCBNb2RpZnkgYSBLZXlib2FyZCBNYWNybworCisoZGVmdW4g a21hY3JvLW1lbnUtZWRpdC1wb3NpdGlvbiAoKQorICAiTW92ZSB0aGUga2V5Ym9hcmQgbWFjcm8g YXQgcG9pbnQgdG8gYSBuZXcgcG9zaXRpb24uCisKK1NlZSB0aGUgSW5mbyBub2RlIGAoZW1hY3Mp IEtleWJvYXJkIE1hY3JvIFJpbmcnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgKGRlY2xhcmUg KG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51 LW1vZGUpCisgIChsZXQgKChpZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgKGttYWNy by1tZW51LS1hc3NlcnQtcm93IGlkKQorICAgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQor ICAgIChsZXQqICgobmV3LXBvc2l0aW9uIChtaW4gKGxlbmd0aCB0YWJ1bGF0ZWQtbGlzdC1lbnRy aWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heCAwCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChyZWFkLW51bWJlciAiTmV3IHBvc2l0aW9uOiAiIDApKSkp CisgICAgICAgICAgIChvbGQta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKQorICAgICAg ICAgICAob2xkLXBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkpCisgICAgICAodW5s ZXNzICg9IG9sZC1wb3MgbmV3LXBvc2l0aW9uKQorICAgICAgICAoa21hY3JvLW1lbnUtLXJlcGxh Y2UtYWxsCisgICAgICAgICAobGV0ICgocmVzKQorICAgICAgICAgICAgICAgKHRydWUtbmV3LXBv cyAoaWYgKD4gbmV3LXBvc2l0aW9uIG9sZC1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMSsgbmV3LXBvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5ldy1wb3NpdGlvbikpKQorICAgICAgICAgICAoa21hY3JvLW1lbnUtLW1hcC1pZHMgKGxhbWJk YSAodGhpcy1pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHRo aXMta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLXBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0 aW9uIHRoaXMtaWQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5s ZXNzICg9IG9sZC1wb3MgdGhpcy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAod2hlbiAoPSB0aGlzLXBvcyB0cnVlLW5ldy1wb3MpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIG9sZC1rbSByZXMpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggdGhpcy1rbSByZXMpKSkpKQorICAgICAg ICAgICAod2hlbiAoPj0gdHJ1ZS1uZXctcG9zCisgICAgICAgICAgICAgICAgICAgICAobGVuZ3Ro IHRhYnVsYXRlZC1saXN0LWVudHJpZXMpKQorICAgICAgICAgICAgIChwdXNoIG9sZC1rbSByZXMp KQorICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0YWJ1bGF0ZWQtbGlzdC1y ZXZlcnQpKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtdHJhbnNwb3NlICgpCisgICJTd2FwIHRo ZSBrZXlib2FyZCBtYWNybyBhdCBwb2ludCB3aXRoIHRoZSBvbmUgYWJvdmUsIHRoZW4gbW92ZSB0 byB0aGUgbmV4dCBsaW5lLgorCitJZiBwb2ludCBpcyBvbiB0aGUgZmlyc3QgbGluZSAocG9zaXRp b24gbnVtYmVyIDApLCB0aGVuIHN3YXAgdGhlIG1hY3JvcworYXQgcG9zaXRpb24gbnVtYmVycyAw IGFuZCAxLCB0aGVuIG1vdmUgcG9pbnQgdG8gdGhlIHRoaXJkIGxpbmUuCisKK05vdGUgdGhhdCB0 aGlzIGlzIHRoZSBlYXJsaWVyIHBvc2l0aW9uIGluIHRoZSByaW5nLCBub3QgdGhlIHNvcnRlZAor dGFibGUuIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFj dGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGxldCAoKGlkICh0YWJ1bGF0ZWQtbGlzdC1n ZXQtaWQpKSkKKyAgICAoa21hY3JvLW1lbnUtLWFzc2VydC1yb3cgaWQpCisgICAgKGttYWNyby1t ZW51LS1xdWVyeS1yZXZlcnQpCisgICAgKGxldCogKChvbGQtcG9zIChrbWFjcm8tbWVudS0taWQt cG9zaXRpb24gaWQpKQorICAgICAgICAgICAoZmlyc3QtbGluZSAoPSAwIG9sZC1wb3MpKQorICAg ICAgICAgICAoZW5kLWxpbmVzLWZvcndhcmQgKGlmIGZpcnN0LWxpbmUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgr IDMgb2xkLXBvcykpKSkKKyAgICAgIDs7IFdoZW4gdHJhbnNwb3NpbmcgdGhlIGZpcnN0IHR3byBt YWNyb3MsIHdlIGRvbid0IHVzZQorICAgICAgOzsgYGttYWNyby1zd2FwLXJpbmcnIGhlcmUgYmVj YXVzZSBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHVzZXIgdG8KKyAgICAgIDs7IGNob29zZSB0byBu b3QgcmVmcmVzaCB0aGUgdGFibGUgd2hlbiBpdCBpcyBvdXQgb2YgZGF0ZS4KKyAgICAgIChrbWFj cm8tbWVudS0tcmVwbGFjZS1hbGwKKyAgICAgICAobGV0ICgocmVzKSkKKyAgICAgICAgIChrbWFj cm8tbWVudS0tbWFwLWlkcworICAgICAgICAgIChpZiBmaXJzdC1saW5lCisgICAgICAgICAgICAg IChsZXQgKChvbGQta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKSkKKyAgICAgICAgICAg ICAgICAobGFtYmRhICh0aGlzLWlkKQorICAgICAgICAgICAgICAgICAgKGxldCAoKHRoaXMtcG9z IChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gdGhpcy1pZCkpKQorICAgICAgICAgICAgICAgICAg ICAodW5sZXNzICg9IDAgdGhpcy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGtt YWNyby1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkgcmVzKQorICAgICAgICAgICAgICAgICAgICAg ICh3aGVuICg9IDEgdGhpcy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBvbGQt a20gcmVzKSkpKSkpCisgICAgICAgICAgICAobGV0ICgobmV3LXBvcyAoMS0gb2xkLXBvcykpKQor ICAgICAgICAgICAgICAobGFtYmRhICh0aGlzLWlkKQorICAgICAgICAgICAgICAgIChsZXQgKCh0 aGlzLXBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIHRoaXMtaWQpKSkKKyAgICAgICAgICAg ICAgICAgICh1bmxlc3MgKD0gb2xkLXBvcyB0aGlzLXBvcykKKyAgICAgICAgICAgICAgICAgICAg KHdoZW4gKD0gbmV3LXBvcyB0aGlzLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAocHVzaCAo a21hY3JvLW1lbnUtLWlkLWttYWNybyBpZCkgcmVzKSkKKyAgICAgICAgICAgICAgICAgICAgKHB1 c2ggKGttYWNyby1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkgcmVzKSkpKSkpKQorICAgICAgICAg KG5yZXZlcnNlIHJlcykpKQorICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkKKyAgICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAoZm9yd2FyZC1saW5lIGVuZC1saW5lcy1mb3J3 YXJkKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtZWRpdC1mb3JtYXQgKCkKKyAgIkVkaXQgdGhl IGNvdW50ZXIgZm9ybWF0IG9mIHRoZSBrZXlib2FyZCBtYWNybyBhdCBwb2ludC4KKworVmFsaWQg Y291bnRlciBmb3JtYXRzIGFyZSB0aG9zZSBmb3IgaW50ZWdlcnMgYWNjZXB0ZWQgYnkgdGhlIGZ1 bmN0aW9uCitgZm9ybWF0Jy4KKworU2VlIHRoZSBjb21tYW5kIGBrbWFjcm8tc2V0LWZvcm1hdCcg YW5kIHRoZSBJbmZvIG5vZGUgYChlbWFjcykgS2V5Ym9hcmQKK01hY3JvIENvdW50ZXInIGZvciBt b3JlIGluZm9ybWF0aW9uLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQor ICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChsZXQgKChpZCAodGFidWxh dGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93IGlkKQorICAg IChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAgIChsZXQgKChrbSAoa21hY3JvLW1lbnUt LWlkLWttYWNybyBpZCkpKQorICAgICAgKGttYWNyby1tZW51LS1yZXBsYWNlLWF0CisgICAgICAg KGttYWNybyAoa21hY3JvLS1rZXlzIGttKQorICAgICAgICAgICAgICAgKGttYWNyby0tY291bnRl ciBrbSkKKyAgICAgICAgICAgICAgIChyZWFkLXN0cmluZyAiTmV3IGZvcm1hdDogIiBuaWwgbmls CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qga21hY3JvLWRlZmF1bHQtY291bnRl ci1mb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLS1mb3Jt YXQga20pKSkpCisgICAgICAgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkpCisgICAgICAo dGFidWxhdGVkLWxpc3QtcmV2ZXJ0KSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtZWRpdC1jb3Vu dGVyICgpCisgICJFZGl0IHRoZSBjb3VudGVyIG9mIHRoZSBrZXlib2FyZCBtYWNybyBhdCBwb2lu dC4KKworU2VlIEluZm8gbm9kZSBgKGVtYWNzKSBLZXlib2FyZCBNYWNybyBDb3VudGVyJyBmb3Ig bW9yZQoraW5mb3JtYXRpb24uIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkp CisgIChpbnRlcmFjdGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGxldCAoKGlkICh0YWJ1 bGF0ZWQtbGlzdC1nZXQtaWQpKSkKKyAgICAoa21hY3JvLW1lbnUtLWFzc2VydC1yb3cgaWQpCisg ICAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgICAgKGxldCAoKGttIChrbWFjcm8tbWVu dS0taWQta21hY3JvIGlkKSkpCisgICAgICAoa21hY3JvLW1lbnUtLXJlcGxhY2UtYXQKKyAgICAg ICAoa21hY3JvIChrbWFjcm8tLWtleXMga20pCisgICAgICAgICAgICAgICAocmVhZC1udW1iZXIg Ik5ldyBjb3VudGVyOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tLWNvdW50ZXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKSkp CisgICAgICAgICAgICAgICAoa21hY3JvLS1mb3JtYXQga20pKQorICAgICAgIChrbWFjcm8tbWVu dS0taWQtcG9zaXRpb24gaWQpKQorICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkpKSkKKwor KGRlZnVuIGttYWNyby1tZW51LWVkaXQta2V5cyAoKQorICAiRWRpdCB0aGUga2V5cyBvZiB0aGUg a2V5Ym9hcmQgbWFjcm8gYXQgcG9pbnQgdmlhIGBlZG1hY3JvLW1vZGUnLgorCitTZWUgSW5mbyBu b2RlIGAoZW1hY3MpIEVkaXQgS2V5Ym9hcmQgTWFjcm8nIGZvciBtb3JlCitpbmZvcm1hdGlvbi4i CisgIChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAgKGludGVyYWN0aXZlIG5p bCBrbWFjcm8tbWVudS1tb2RlKQorICAobGV0ICgoaWQgKHRhYnVsYXRlZC1saXN0LWdldC1pZCkp KQorICAgIChrbWFjcm8tbWVudS0tYXNzZXJ0LXJvdyBpZCkKKyAgICAoa21hY3JvLW1lbnUtLXF1 ZXJ5LXJldmVydCkKKyAgICAobGV0KiAoKG9sZC1rbSAoa21hY3JvLW1lbnUtLWlkLWttYWNybyBp ZCkpKQorICAgICAgKGVkaXQta2JkLW1hY3JvIChrbWFjcm8tLWtleXMgb2xkLWttKQorICAgICAg ICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAg ICAgICAgICAgICAgIChsYW1iZGEgKG1hYykKKyAgICAgICAgICAgICAgICAgICAgICAgIChrbWFj cm8tbWVudS0tcmVwbGFjZS1hdAorICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8gbWFj CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLS1jb3VudGVyIG9sZC1r bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tLWZvcm1hdCBvbGQt a20pKQorICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24g aWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkpKSkp KQorCisoZGVmdW4ga21hY3JvLW1lbnUtZWRpdC1jb2x1bW4gKCkKKyAgIkVkaXQgdGhlIHZhbHVl IGluIHRoZSBjdXJyZW50IGNvbHVtbiBvZiB0aGUga2V5Ym9hcmQgbWFjcm8gYXQgcG9pbnQuIgor ICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSBuaWwg a21hY3JvLW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93KQorICAoa21hY3Jv LW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAgKHBjYXNlIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQp ICd0YWJ1bGF0ZWQtbGlzdC1jb2x1bW4tbmFtZSkKKyAgICAoJ25pbCAgICAgICAgKGxldCAoKHBv cyAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICA7OyBJZiB3ZSBkaWRuJ3QgZmluZCBhIGNv bHVtbiwgdHJ5IG1vdmluZyBmb3J3YXJkcyBvcgorICAgICAgICAgICAgICAgICAgIDs7IGJhY2t3 YXJkcyB0byB0aGUgbmVhcmVzdCBjb2x1bW4uCisgICAgICAgICAgICAgICAgICAgKHRhYnVsYXRl ZC1saXN0LW5leHQtY29sdW1uIDEpCisgICAgICAgICAgICAgICAgICAgKHdoZW4gKD0gcG9zIChw b2ludCkpCisgICAgICAgICAgICAgICAgICAgICAodGFidWxhdGVkLWxpc3QtcHJldmlvdXMtY29s dW1uIDEpKQorICAgICAgICAgICAgICAgICAgIChpZiAobnVsbCAoZ2V0LXRleHQtcHJvcGVydHkg KHBvaW50KSAndGFidWxhdGVkLWxpc3QtY29sdW1uLW5hbWUpKQorICAgICAgICAgICAgICAgICAg ICAgICAodXNlci1lcnJvciAiTm8gY29sdW1uIGF0IHBvaW50IikKKyAgICAgICAgICAgICAgICAg ICAgIChrbWFjcm8tbWVudS1lZGl0LWNvbHVtbikpKSkKKyAgICAoIlBvc2l0aW9uIiAgKGNhbGwt aW50ZXJhY3RpdmVseSAjJ2ttYWNyby1tZW51LWVkaXQtcG9zaXRpb24pKQorICAgICgiQ291bnRl ciIgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICMna21hY3JvLW1lbnUtZWRpdC1jb3VudGVyKSkKKyAg ICAoIkZvcm1hdCIgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ttYWNyby1tZW51LWVkaXQtZm9y bWF0KSkKKyAgICAoIkZvcm1hdHRlZCIgKHVzZXItZXJyb3IgIkZvcm1hdHRlZCBjb3VudGVyIGlz IG5vdCBlZGl0YWJsZSIpKQorICAgICgiS2V5cyIgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICMn a21hY3JvLW1lbnUtZWRpdC1rZXlzKSkpKQorCiAocHJvdmlkZSAna21hY3JvKQogCiA7Ozsga21h Y3JvLmVsIGVuZHMgaGVyZQotLSAKMi4zNC4xCgo= --b1_5JZJ1LeGElQZvBw5oZTBqAG0XxOqyBeKYHNjW4EoSM-- From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 14 05:41:54 2024 Received: (at 70208-done) by debbugs.gnu.org; 14 Apr 2024 09:41:54 +0000 Received: from localhost ([127.0.0.1]:34325 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rvwN0-0000Ii-HY for submit@debbugs.gnu.org; Sun, 14 Apr 2024 05:41:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41066) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rvwMw-0000H4-4a for 70208-done@debbugs.gnu.org; Sun, 14 Apr 2024 05:41:52 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rvwMf-0000I7-Kb; Sun, 14 Apr 2024 05:41:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=tPuQaih23hmLH2lRAcFnjq4g2gt7ytE3a2oaystaqV0=; b=gtSj8yk1uY2C SiAonfwemT1i+xmt/nYp2dcw+QZSYIdMPdkrA6FtsSJ77ooLnOEsscUQ3sIkmXQhxG9vcieAlGEJT euhyzBrar3qVVj44khc8ri43AC9743K7VOf5Qr3yn6NVUvrgv3ktqkb2o2LBPziUt8yI4rulv8UpE yqkkC5ZdBcV0eiKPUQiNolaqD14Oeiq+eo1sJmFDAZj0pmDJwg8wIDLb1GUCn/MeomL9wVg2p+5CK 4VnRbmksVKQ4H8bldGO0UMIiK6nx4IkDsbW0lm1TzBPl6uYhnfAYUyswk9NgqDq7EuolGAQCW2A7v nq5RFndoVJnCq+R9zL78eQ==; Date: Sun, 14 Apr 2024 12:41:30 +0300 Message-Id: <864jc4nuwl.fsf@gnu.org> From: Eli Zaretskii To: Okamsn In-Reply-To: <5902981e-eee6-4efe-927a-c37ed29a4303@protonmail.com> (message from Okamsn on Sat, 13 Apr 2024 19:24:45 +0000) Subject: Re: bug#70208: [PATCH] Add command `list-keyboard-macros` References: <86msq85o7n.fsf@gnu.org> <8dd6fcfa-2fc0-4371-b5a9-1f451ff1e9a4@protonmail.com> <86cyr11uap.fsf@gnu.org> <5902981e-eee6-4efe-927a-c37ed29a4303@protonmail.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 70208-done Cc: 70208-done@debbugs.gnu.org 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: -3.3 (---) > Date: Sat, 13 Apr 2024 19:24:45 +0000 > From: Okamsn > Cc: 70208@debbugs.gnu.org > > Please see the attached. Thanks, installed, and closing the bug. From unknown Sun Jun 15 08:31:29 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 12 May 2024 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