From unknown Sun Jun 15 08:48:34 2025 X-Loop: help-debbugs@gnu.org Subject: bug#53592: 26.3; Bind `M-:' to `pp-eval-expression' and enhance output Resent-From: Drew Adams Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 27 Jan 2022 23:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 53592 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 53592@debbugs.gnu.org X-Debbugs-Original-To: "bug-gnu-emacs@gnu.org" Received: via spool by submit@debbugs.gnu.org id=B.164332657523386 (code B ref -1); Thu, 27 Jan 2022 23:37:01 +0000 Received: (at submit) by debbugs.gnu.org; 27 Jan 2022 23:36:15 +0000 Received: from localhost ([127.0.0.1]:56829 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nDEJK-000657-Uk for submit@debbugs.gnu.org; Thu, 27 Jan 2022 18:36:15 -0500 Received: from lists.gnu.org ([209.51.188.17]:47806) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nDEJH-00064v-69 for submit@debbugs.gnu.org; Thu, 27 Jan 2022 18:36:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33404) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nDEJF-0005GX-Hu for bug-gnu-emacs@gnu.org; Thu, 27 Jan 2022 18:36:10 -0500 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:27630) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nDEIy-0002Tu-N9 for bug-gnu-emacs@gnu.org; Thu, 27 Jan 2022 18:36:08 -0500 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 20RLHifn012335 for ; Thu, 27 Jan 2022 23:35:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : content-type : mime-version; s=corp-2021-07-09; bh=BUFXCsVOqG4ctdaDFhIG+kvdmuCnBBQRnyuodmlREWQ=; b=QIeutTpYP79v73GQsjCVKTFMVIw7mFdp30COacazvyofwx6i7T5mXM17pCbqUEHpRq60 zQUBr+JSMSnDKH0+i2fju8YkZxf3MdOS8AxdtvF5bdMA8MU6KycxwmjYXUNHluIpH8yt 5EUnf0WX+N48EXEBEUvSxkBIkkcaLOohjRybD/OW2O5CRIxkWP4b1Y5p7csLt4nZTHqe 3OBdbt72wW/JQowvnJIxUkTSI93Gw2NPHW40DItxXQi7oRicAPC6of5XDgcRjxPj1hGs bRU5v7Xru+dU5pyJ5md8Qunuz1PdtTmWHsFab4H5rEIZ8Bt7rl4kchV2kqRIIJCGcMep PQ== Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3duvnk9s1m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 27 Jan 2022 23:35:27 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 20RNF8AY084671 for ; Thu, 27 Jan 2022 23:35:26 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2168.outbound.protection.outlook.com [104.47.56.168]) by userp3030.oracle.com with ESMTP id 3dr724gf7p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 27 Jan 2022 23:35:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UIHq0ogtQinomatCijEB9f6FH7UhX025MDX2bPAr+hPCKSX4z6hUrE541wCrOMtW1zUZx1x1ltgnErAaFbWzQIh4Igwuxlk4GmnGvrhijVLRobLyWBW0F0fA7DjTgiupgBgyr5ifXeaMsDVozVDDKkB123vKxX0/I27lqnBUcDGtPdPF7QscphBvShxr2KNyAMI+48N6O79AY9TEhSW4+koqyhMqcOyJFq9wDn2vd055ae+yRDQodX6J0zbhy27ahUIUSEc05TAmoAUm4hwiHoOpQMvxZ2SDEATdPrgD8BEU5Z/++Me7KpFkWJk07xFqRG2I4LluCBvLY3hxpKZiTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BUFXCsVOqG4ctdaDFhIG+kvdmuCnBBQRnyuodmlREWQ=; b=TANDagpaeWtg0+tgb1qdAm6T+gKFoYafzd9i09bD7qJi/9FBjICX4Fct0rgIC+9NpIuVdBwxoFXeu81yJo/UfwfMv24Rr7+LHMmDCsw/d/sON1tXCGV/alyXebgIE634WeVcoMmDyYZxjsT+b65ZWxUZtNDJimG4Ik/FaLnHcYZbmXom/lEe/qdD+Xwvhbl5lM2nUV2WC0Dxtm6z2FDblaOtH76/u4egUPcotzsABqJU6MlzfU2S3qic9y3u34o1tp5j4XYPxws8AH2Wi9KbQJfhDiIqhdfMqFs++5XCexnV3JD4u8SyUJ0EIV6h55SYCjJKEsKyFhq5L+HeJfbhOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BUFXCsVOqG4ctdaDFhIG+kvdmuCnBBQRnyuodmlREWQ=; b=Im7O9PO3COwOlOu502jnxy7U7OzASWQueyWniJPM1qT0p1s4+IlvXLyVJTc6njlE7WFjjTkpCMCfor+NVVIpKSCZU2/IlAXVQz3YGUwQ9jJ8SbeMQ0RWlG+DuRwGy2jmssEYizxheRoCrc/N9MPBxVUjxY3ePAf7xIJ8MlZYsXo= Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19) by BN6PR1001MB2146.namprd10.prod.outlook.com (2603:10b6:405:32::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 23:35:23 +0000 Received: from SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::99a4:696f:5f30:36b3]) by SJ0PR10MB5488.namprd10.prod.outlook.com ([fe80::99a4:696f:5f30:36b3%6]) with mapi id 15.20.4930.017; Thu, 27 Jan 2022 23:35:23 +0000 From: Drew Adams Thread-Topic: 26.3; Bind `M-:' to `pp-eval-expression' and enhance output Thread-Index: AdgT1igZnxZ1R+m8T/GmDF9CejakIw== Date: Thu, 27 Jan 2022 23:35:22 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9590eac2-3ec3-4fce-7c63-08d9e1edb06b x-ms-traffictypediagnostic: BN6PR1001MB2146:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VGr1N39wcEOjnU13OZuvIx4IGPcgjhAAf+V4CVHSB+5DR87oo95zHNPLtnSByAz+/ncWA1rt1l30UpmmxEJgYD9duXi3b/TBXxqXdqOFPthiE6mmBW7wEcadb66EDZePqEWWfWl7MssCcCl0WMbS8TVvEQJWC/C+mrQbAE7pFIF1CI7KMGzF04w02pE3d60gcCxqfKIX1J42L0O65xL6HeUJdgkhcu3cFZ3476Wp3iJGIb/8pGfpZ251ZEpUlJBbFuINqUL1mTm6Qbgdm6NiJok9zQPr+wbiEntQWZ+laKZA23sYfZBhE/I2hhVmlpLo6dW3f8C3r0cMnHCwYvkY846uTjsr7v7JgY1kbFYzD48gnrHrUvI+M12YbXduMY4EzuslkmXLJtZy5Iv33Nkd+IO1rNxrNcB0idj1leXU0SwXbTzG2h1CRYJEPlrX2tClGj5FXa9DaHoQs8dF43oIuGhP+PaS8jlPKUtqBd7PQhds/zSg8mY0fMyOm0C3UY7ojdGZtMbVWgB9g/A6k/BIgQghE1hkymcahJ1e57uyHECUQXLd0ceM8SiYdS6CkYmcPqg4iNmMbecPdhYVLMdYLxS4szihX2Rqu3Ohw+P0J7Z9gKXdwDkLuZ/pyidyIK06HWjto9uHuv4t2rPp/A7FrmdF/HjCVUGMYpTj7iAYzg3UYZl9RiG31/zoWWWoZziPdXipe6fa9XlnEURatKgEOGcgzahzN80yMrpwBxOn4tM= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(38100700002)(186003)(7696005)(26005)(122000001)(55016003)(45080400002)(44832011)(6506007)(38070700005)(2906002)(71200400001)(33656002)(83380400001)(66446008)(66476007)(64756008)(316002)(8936002)(66946007)(66556008)(52536014)(508600001)(8676002)(6916009)(5660300002)(99936003)(9686003)(86362001)(76116006)(81973001)(20210929001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: duwFgJCCPki2DiGuOPU8OmhN92iWSCNfjj3P0saxTYQeDt0tYZs05HY8B6h8m+GFCz9JjSCfpGXXmz0wqMo/gE0Mg1P78oloRWLoWb14RJINX/UCMaLQ0+kKHeS3ZE1oCOnd14XlIlz8B7UZJYYCM3ytwfNKEYkIWbvoqgYyL0rKu83KXBJF0AyeT6gX9dqkgzoLaBx7BixlDmlzEhsevdKBSylOHU5Cvfq01Mjz6S+Hp1x3nm4ThxAtdDGLvwy2Km6wJq2BYae1YKuL6ufuO/0HYAJRswPBkkbITkgLa53Z07P3lxdIbSudMr5Kfenr1Pd2iGHQS7Bg8FlQDICsFzW8ebV46bO8hE6e0G6CV1dtsTkoGv2kaom6LzVuwmf0AEsVEjdKXuJpHFUSp6O7MFC5fUJBBcwOyL2Yaix8LsGZF6dbTiY4/JRth4Ixb11eHORL8pXAoHtIbvp3sP9HFS5meQaO9NzypNis+4nx29WW35UKYT0D+Cwj061LuGh+LVjVNG/++QCGUaprACTfhkH056XTyE3hPl2kbi6tvD4P1SnyuWHHOu/HT159xVMTYwPukdU5rdHBxEGfmB98pwIzKGza+OD6dWHaNfyJqCJHI8DtoYieFsbDXcnZ7SlVpTqkAssYdN31qUao29AVLjPweVBdSF2KNSiUwBsyS0zZWsXUrKm7ipzSl+N3mSGtH3YephhGZwUdXM7mdJd/KY+7cAAjDPyXlY/mkTAkhwbKiAX4fO9Y9QdR65IMk1uneh5s7xbdEnz8nEQeAlAuZQR8MNeMa+8dpoHcjGrqC0pZePd7C5Zm3GxvALF485L5iDNaZQkpJz+An4bjOQ/KbD/7952sVC+NDOWzEZCQFpp90G4NUrpovB7JccMnUPRKrdJB+L5B7LJh8uB9jpbdbtamFqm/KLRWT4LBBr3MRijZ9zomnH3hr7Nml7WKd/1wyco1eYH1Q3IY15oo46mRtjC/McJFnQ2wafK70vaaq0k8X2XTI02MCn1Hu2E9cWw6zs+8E2LGNl4tz5P7fRwz7AJJ63IhRQWyFSpehnntjo8ZfOnc8nDmh3r5xHNF1768HHIbvS0Mhd4AYXCX9aWjvgCN7BR9OoTqgJAX3ivLUGVuMq0tHd9sb2naUFFSSq1IPARmcy+GaV8lWem2hLky1qOWynxKEQvaDWf6gfiPeeLST2ClqrfPH5UUInqP/q3P98AOKfVlX2RFb875NT9kul6GvUOHgQSXj5ckjDgFzfr1MspcxSpiwgPb3vo8fUoBAPRZUcyYomsmMF32xwKxryn1X/JzYgHdpjiLA+AF2BnnL0RIu0BbT5P6OOpp1QAWAsawiLF3+zPHxKS/UoIspY9dTMCs6okrPDdETybMcjwXHYPEhl7WZwG6QofBIUl3e6eR9MypUlCQUPsfx4m4HUFUMCx3WFUPTiCk11kQNTUJFFoYoCkz4QI3zbuTPy98v3rleb1HSCtzvLFYYsCwwJWRczfv42gL4BmTESsmUAi8pwX7/85AbKeYesKHjYlTnLsYqeyw9aj/aR9M/uSxIW/SdWZ5bJyeafQL8GfEJb/PWyiC2KvJz7M8N793WkN7cEU12vToLK5zJcWipWgoEA== Content-Type: multipart/mixed; boundary="_002_SJ0PR10MB54887663470DCDA0A8EC7627F3219SJ0PR10MB5488namp_" MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9590eac2-3ec3-4fce-7c63-08d9e1edb06b X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jan 2022 23:35:23.1719 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: TAdOWkZ60ipZtOzorIySJO74OyvQe8uWKpqYUlnqQuzfPGI5CAVTn+Hg2EFJLliQ+71Apd3xVBPV/BuxjFK5vA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1001MB2146 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10240 signatures=669575 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 mlxlogscore=999 adultscore=0 spamscore=0 bulkscore=0 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2201270131 X-Proofpoint-GUID: 3YNWuR4QkW7ByTreYmTYuZhgNi1iBkDO X-Proofpoint-ORIG-GUID: 3YNWuR4QkW7ByTreYmTYuZhgNi1iBkDO Received-SPF: pass client-ip=205.220.165.32; envelope-from=drew.adams@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) 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: -2.3 (--) --_002_SJ0PR10MB54887663470DCDA0A8EC7627F3219SJ0PR10MB5488namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Enhancement request. Feel free to split into separate requests, if you think that's appropriate. To me, all of what I suggest is related. 1. Bind `M-:' to `pp-eval-expression' by default, not to `eval-expression' - makes the input reading better and the output more useful. 2. Add keymap `pp-read-expression-map' (or similar). It binds keys for `lisp-indent-line', `lisp-complete-symbol', `indent-sexp', `eval-defun', and `indent-pp-sexp'. 3. Define and use `pp-read--expression' instead of `read--expression'. (Only difference is that it uses `pp-read-expression-map'.) 2. Add option `pp-max-tooltip-size', so commands `pp-eval-last-sexp' and `pp-eval-expression' can optionally show output in a tooltip, and control its size. 3. Add options `pp-eval-expression-print-length' and `pp-eval-expression-print-level', which act like `print-length' and `print-level', but only for pretty-printing. (No reason to suppose that the same values are appropriate for general printing and for pretty-printing.) See definitions below. 4. Redefine `pp-display-expression', to do the following: a. Respect option `pp-max-tooltip-size'. b. Use no `emacs-lisp-mode-hook' or `change-major-mode-hook'. c. Call `font-lock-fontify-buffer'. d. Provide undo to buffer OUT-BUFFER-NAME. 5. Redefine `pp-eval-expression' to do the following: a. Add optional args, corresponding to prefix-arg behaviors. `INSERT-VALUE': non-nil (non-zero prefix arg) lets the command act the way `eval-expression' acts: inserts the result in the current buffer. `SWAP-TOOLTIP': non-nil (zero prefix arg) swaps the behavior defined by `pp-max-tooltip-size': if option says use tooltip then don't, and vice versa. b. With no prefix arg, respect `pp-max-tooltip-size'. If tooltip not used then if value fits on one (frame-width) line then show value in the echo area. Otherwise, show it in buffer `*Pp Eval Output*'. c. With negative prefix arg, print string values with "...". With positive arg, omit the double-quotes. d. Respect options `pp-eval-expression-print-length', `pp-eval-expression-print-level', `pp-max-tooltip-size', and `eval-expression-debug-on-error'. 6. Redefine `pp-eval-last-sexp': Same as `pp-eval-expression' wrt optional args `INSERT-VALUE' and `SWAP-TOOLTIP', and options `pp-eval-expression-print-length', `pp-eval-expression-print-level', `pp-max-tooltip-size', and `eval-expression-debug-on-error'. The code (`pp+.el') is attached. It's offered as is. If it's generally acceptable I can provide a patch. If not, then please consider doing what's requested in another way. In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32) of 2019-08-29 Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd Windowing system distributor `Microsoft Corp.', version 10.0.19043 Configured using: `configure --without-dbus --host=3Dx86_64-w64-mingw32 --without-compress-install 'CFLAGS=3D-O2 -static -g3'' --_002_SJ0PR10MB54887663470DCDA0A8EC7627F3219SJ0PR10MB5488namp_ Content-Type: application/octet-stream; name="pp+.el" Content-Description: pp+.el Content-Disposition: attachment; filename="pp+.el"; size=28594; creation-date="Thu, 27 Jan 2022 23:16:11 GMT"; modification-date="Thu, 27 Jan 2022 23:35:22 GMT" Content-Transfer-Encoding: base64 Ozs7IHBwKy5lbCAtLS0gRXh0ZW5zaW9ucyB0byBgcHAuZWwnLgo7Owo7OyBGaWxlbmFtZTogcHAr LmVsCjs7IERlc2NyaXB0aW9uOiBFeHRlbnNpb25zIHRvIGBwcC5lbCcuCjs7IEF1dGhvcjogRHJl dyBBZGFtcwo7OyBNYWludGFpbmVyOiBEcmV3IEFkYW1zIChjb25jYXQgImRyZXcuYWRhbXMiICJA IiAib3JhY2xlIiAiLmNvbSIpCjs7IENvcHlyaWdodCAoQykgMTk5OS0yMDIyLCBEcmV3IEFkYW1z LCBhbGwgcmlnaHRzIHJlc2VydmVkLgo7OyBDcmVhdGVkOiBGcmkgU2VwICAzIDEzOjQ1OjQwIDE5 OTkKOzsgVmVyc2lvbjogMAo7OyBQYWNrYWdlLVJlcXVpcmVzOiAoKQo7OyBMYXN0LVVwZGF0ZWQ6 IFRodSBKYW4gMjcgMTU6MTY6MTEgMjAyMiAoLTA4MDApCjs7ICAgICAgICAgICBCeTogZHJhZGFt cwo7OyAgICAgVXBkYXRlICM6IDQ1OQo7OyBVUkw6IGh0dHBzOi8vd3d3LmVtYWNzd2lraS5vcmcv ZW1hY3MvZG93bmxvYWQvcHAlMmIuZWwKOzsgRG9jIFVSTDogaHR0cHM6Ly9lbWFjc3dpa2kub3Jn L2VtYWNzL0V2YWx1YXRpbmdFeHByZXNzaW9ucwo7OyBLZXl3b3JkczogbGlzcAo7OyBDb21wYXRp YmlsaXR5OiBHTlUgRW1hY3M6IDIwLngsIDIxLngsIDIyLngsIDIzLngsIDI0LngsIDI1LngsIDI2 LngKOzsKOzsgRmVhdHVyZXMgdGhhdCBtaWdodCBiZSByZXF1aXJlZCBieSB0aGlzIGxpYnJhcnk6 Cjs7Cjs7ICAgYHBwJy4KOzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7Owo7OzsgQ29tbWVudGFyeToKOzsKOzsg ICAgRXh0ZW5zaW9ucyB0byBgcHAuZWwnLgo7Owo7OyAgRmVhdHVyZXM6Cjs7Cjs7ICAgKiBZb3Ug Y2FuIG9wdGlvbmFsbHkgc2hvdyB0aGUgcmVzdWx0IG9mIHByZXR0eS1wcmludGluZyBpbiBhCjs7 ICAgICB0b29sdGlwIGF0IHBvaW50LCBieSBjdXN0b21pemluZyBvcHRpb24gYHBwLW1heC10b29s dGlwLXNpemUnCjs7ICAgICAoRW1hY3MgMjQrKS4KOzsKOzsgICAqIFlvdSBjYW4gdXNlIGEgemVy byBwcmVmaXggYXJndW1lbnQgKGUuZy4gYE0tbycpIHdpdGgKOzsgICAgIGBwcC1ldmFsLWxhc3Qt c2V4cCcgKGBDLXggQy1lJykgb3IgYHBwLWV2YWwtZXhwcmVzc2lvbicsIHRvCjs7ICAgICBzd2Fw IHRoZSB1c2Ugb2YgYSB0b29sdGlwIGRlZmluZWQgYnkgb3B0aW9uCjs7ICAgICBgcHAtbWF4LXRv b2x0aXAtc2l6ZScuICAoRW1hY3MgMjQrKQo7Owo7OyAgICogVGhlcmUgYXJlIGFkZGl0aW9uYWwg Y29tbWFuZHMgdGhhdCBhcmUgdmVyc2lvbnMgb2YKOzsgICAgIGBwcC1ldmFsLWxhc3Qtc2V4cCcg YW5kIGBwcC1ldmFsLWV4cHJlc3Npb24nIHRoYXQgYWx3YXlzIG9yCjs7ICAgICBuZXZlciB1c2Ug YSB0b29sdGlwLiAgKEVtYWNzIDI0KykKOzsKOzsgICAqIFByZXR0eS1wcmludGluZyByZXNwZWN0 cyBvcHRpb25zCjs7ICAgICBgcHAtZXZhbC1leHByZXNzaW9uLXByaW50LWxlbmd0aCcgYW5kCjs7 ICAgICBgcHAtZXZhbC1leHByZXNzaW9uLXByaW50LWxldmVsJywgd2hpY2ggYWN0IGxpa2UgYHBy aW50LWxlbmd0aCcKOzsgICAgIGFuZCBgcHJpbnQtbGV2ZWwnLCBidXQgb25seSBmb3IgcHJldHR5 LXByaW50aW5nLgo7Owo7OyAgICogVGhlIGJ1ZmZlciBkaXNwbGF5aW5nIHRoZSBwcmV0dHktcHJp bnRlZCByZXN1bHQgaXMgaW4KOzsgICAgIGBlbWFjcy1saXNwLW1vZGUnIChhbmQgaXMgZm9udGlm aWVkIGFjY29yZGluZ2x5KSwgYnV0IHdpdGhvdXQKOzsgICAgIGhhdmluZyBydW4gYGVtYWNzLWxp c3AtbW9kZS1ob29rJyBvciBgY2hhbmdlLW1ham9yLW1vZGUtaG9vaycuCjs7ICAgICBUaGUgYnVm ZmVyIGhhcyB1bmRvOiB5b3UgY2FuIG1ha2UgY2hhbmdlcyB0aGVyZSBhbmQgdW5kbyB0aGVtLgo7 Owo7OyAgICogQ29tbWFuZCBgcHAtZXZhbC1leHByZXNzaW9uJyBpcyBlbmhhbmNlZCBpbiB0aGVz ZSB3YXlzOgo7Owo7OyAgICAgIC0gT3B0aW9uIGBldmFsLWV4cHJlc3Npb24tZGVidWctb24tZXJy b3InIGlzIHJlc3BlY3RlZC4KOzsKOzsgICAgICAtIFdpdGggbm8gcHJlZml4IGFyZ3VtZW50LCBv cHRpb24gYHBwLW1heC10b29sdGlwLXNpemUnIGlzCjs7ICAgICAgICByZXNwZWN0ZWQuIElmIGEg dG9vbHRpcCBpcyBub3QgdXNlZCB0aGVuIGlmIHRoZSB2YWx1ZSBmaXRzCjs7ICAgICAgICBvbiBv bmUgbGluZSAoZnJhbWUgd2lkdGgpIGl0IGlzIHNob3duIGluIHRoZSBlY2hvIGFyZWEuCjs7ICAg ICAgICBPdGhlcndpc2UsIGl0IGlzIHNob3duIGluIGJ1ZmZlciAqUHAgRXZhbCBPdXRwdXQqJy4g IChFbWFjcwo7OyAgICAgICAgMjQrKQo7Owo7OyAgICAgIC0gV2l0aCBhIHplcm8gcHJlZml4IGFy ZywgdGhlIHVzZSBvZiBhIHRvb2x0aXAgYWNjb3JkaW5nIHRvCjs7ICAgICAgICBgcHAtbWF4LXRv b2x0aXAtc2l6ZScgaXMgc3dhcHBlZDogaWYgdGhhdCBvcHRpb24gaXMgYG5pbCcKOzsgICAgICAg IHRoZW4gYSB0b29sdGlwIGlzIHVzZWQsIGFuZCBpZiBub24tYG5pbCcgYSB0b29sdGlwIGlzIG5v dAo7OyAgICAgICAgdXNlZC4gIChFbWFjcyAyNCspCjs7Cjs7ICAgICAgLSBXaXRoIG5vbi16ZXJv IHByZWZpeCBhcmd1bWVudCwgdGhlIHZhbHVlIGlzIGluc2VydGVkIGludG8KOzsgICAgICAgIHRo ZSBjdXJyZW50IGJ1ZmZlciBhdCBwb2ludC4gV2l0aCBhIG5lZ2F0aXZlIHByZWZpeCBhcmcsIGlm Cjs7ICAgICAgICB0aGUgdmFsdWUgaXMgYSBzdHJpbmcsIHRoZW4gaXQgaXMgaW5zZXJ0ZWQgd2l0 aG91dCBiZWluZwo7OyAgICAgICAgZW5jbG9zZWQgaW4gZG91YmxlLXF1b3RlcyAoIikuCjs7Cjs7 ICAgICAgLSBDb21wbGV0aW9uIGlzIGF2YWlsYWJsZSwgdXNpbmcga2V5bWFwCjs7ICAgICAgICBg cHAtcmVhZC1leHByZXNzaW9uLW1hcCcsIHdoaWNoIGlzIGxpa2UKOzsgICAgICAgIGByZWFkLWV4 cHJlc3Npb24tbWFwJyBidXQgd2l0aCBzb21lIEVtYWNzLUxpc3Aga2V5IGJpbmRpbmdzLgo7Owo7 OyAgICogQ29tbWFuZCBgcHAtZXZhbC1sYXN0LXNleHAnIGlzIGVuaGFuY2VkIGluIHRoZXNlIHdh eXMgKEVtYWNzCjs7ICAgICAyNCspOgo7Owo7OyAgICAgIC0gV2l0aCBhIHplcm8gcHJlZml4IGFy ZywgdGhlIHVzZSBvZiBhIHRvb2x0aXAgYWNjb3JkaW5nIHRvCjs7ICAgICAgICBgcHAtbWF4LXRv b2x0aXAtc2l6ZScgaXMgc3dhcHBlZDogaWYgdGhhdCBvcHRpb24gaXMgYG5pbCcKOzsgICAgICAg IHRoZW4gYSB0b29sdGlwIGlzIHVzZWQsIGFuZCBpZiBub24tYG5pbCcgYSB0b29sdGlwIGlzIG5v dAo7OyAgICAgICAgdXNlZC4KOzsKOzsgICAgICAtIFdpdGggYSBub24temVybyBwcmVmaXggYXJn LCB0aGUgdmFsdWUgaXMgaW5zZXJ0ZWQgaW50byB0aGUKOzsgICAgICAgIGN1cnJlbnQgYnVmZmVy IGF0IHBvaW50Lgo7Owo7OyAgICogQWx0ZXJuYXRpdmUgY29tbWFuZHMgYXJlIGRlZmluZWQgdGhh dCB1c2UgYSB0b29sdGlwIHdoZW5ldmVyCjs7ICAgICBwb3NzaWJsZSwgb3IgdGhhdCBuZXZlciB1 c2UgYSB0b29sdGlwICh0aGV5IGlnbm9yZSBvcHRpb24KOzsgICAgIGBwcC1tYXgtdG9vbHRpcC1z aXplJyk6IGBwcC1ldmFsLWV4cHJlc3Npb24td2l0aC10b29sdGlwJywKOzsgICAgIGBwcC1ldmFs LWV4cHJlc3Npb24td2l0aG91dC10b29sdGlwJywKOzsgICAgIGBwcC1ldmFsLWxhc3Qtc2V4cC13 aXRoLXRvb2x0aXAnLCBhbmQKOzsgICAgIGBwcC1ldmFsLWxhc3Qtc2V4cC13aXRob3V0LXRvb2x0 aXAnIChFbWFjcyAyNCspLgo7Owo7OyAKOzsKOzsgIFN1Z2dlc3RlZCBiaW5kaW5nOiB1c2UgYE0t OicgZm9yIGBwcC1ldmFsLWV4cHJlc3Npb24nLgo7Owo7OyAgICAoZ2xvYmFsLXNldC1rZXkgW3Jl bWFwIGV2YWwtZXhwcmVzc2lvbl0gJ3BwLWV2YWwtZXhwcmVzc2lvbikKOzsKOzsKOzsgIFVzZXIg b3B0aW9ucyBkZWZpbmVkIGhlcmU6Cjs7Cjs7ICAgIGBwcC1ldmFsLWV4cHJlc3Npb24tcHJpbnQt Y2lyY2xlJywKOzsgICAgYHBwLWV2YWwtZXhwcmVzc2lvbi1wcmludC1sZW5ndGgnLAo7OyAgICBg cHAtZXZhbC1leHByZXNzaW9uLXByaW50LWxldmVsJywgYHBwLW1heC10b29sdGlwLXNpemUnIChF bWFjcwo7OyAgICAyNCspLgo7Owo7OyAgRmFjZXMgZGVmaW5lZCBoZXJlOgo7Owo7OyAgICBgcHAt dG9vbHRpcCcgKEVtYWNzIDI0KykuCjs7Cjs7ICBDb21tYW5kcyBkZWZpbmVkIGhlcmU6Cjs7Cjs7 ICAgIGBwcC1ldmFsLWV4cHJlc3Npb24td2l0aC10b29sdGlwJyAoRW1hY3MgMjQrKSwKOzsgICAg YHBwLWV2YWwtZXhwcmVzc2lvbi13aXRob3V0LXRvb2x0aXAnIChFbWFjcyAyNCspLAo7OyAgICBg cHAtZXZhbC1sYXN0LXNleHAtd2l0aC10b29sdGlwJyAoRW1hY3MgMjQrKSwKOzsgICAgYHBwLWV2 YWwtbGFzdC1zZXhwLXdpdGhvdXQtdG9vbHRpcCcgKEVtYWNzIDI0KykuCjs7Cjs7ICBOb24taW50 ZXJhY3RpdmUgZnVuY3Rpb25zIGRlZmluZWQgaGVyZToKOzsKOzsgICAgYHBwLWV4cHJlc3Npb24t c2l6ZScsIGBwcC1yZWFkLS1leHByZXNzaW9uJyAoRW1hY3MgMjQuNCspLAo7OyAgICBgcHAtc2hv dy10b29sdGlwJyAoRW1hY3MgMjQrKSwgYHBwLXRvb2x0aXAtc2hvdycgKEVtYWNzIDI0KykuCjs7 Cjs7ICBWYXJpYWJsZXMgZGVmaW5lZCBoZXJlOgo7Owo7OyAgICBgcHAtcmVhZC1leHByZXNzaW9u LW1hcCcuCjs7Cjs7Cjs7ICAqKioqKiBOT1RFOiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBkZWZp bmVkIGluIGBwcC5lbCcgaGF2ZQo7OyAgICAgICAgICAgICAgYmVlbiBSRURFRklORUQgSEVSRToK OzsKOzsgICAgYHBwLWRpc3BsYXktZXhwcmVzc2lvbicsIGBwcC1ldmFsLWV4cHJlc3Npb24nLAo7 OyAgICBgcHAtZXZhbC1sYXN0LXNleHAnIChFbWFjcyAyMyspLgo7Owo7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7 Cjs7OyBDaGFuZ2UgTG9nOgo7Owo7OyAyMDIyLzAxLzI3IGRhZGFtcwo7OyAgICAgcHAtcmVhZC0t ZXhwcmVzc2lvbjogVHVybiBvbiBlbGRvYy1tb2RlICh0aGF0IHdhcyBhZGRlZCBmb3IgRW1hY3Mg MjYrKS4KOzsgMjAyMi8wMS8xNCBkYWRhbXMKOzsgICAgIHBwLWRpc3BsYXktZXhwcmVzc2lvbjog VXNlICcsIGZvciBvdXQtYnVmZmVyLW5hbWUgaW4gY29uc3RydWN0ZWQgbGFtYmRhLiAgRW5hYmxl IHVuZG8gaW4gb3V0cHV0Lgo7OyAyMDE4LzA2LzI5IGRhZGFtcwo7OyAgICAgcHAtZXZhbC1leHBy ZXNzaW9uOiBFbnN1cmUgbm90IGp1c3QgKGJvdW5kcCAnbGV4aWNhbC1iaW5kaW5nKSBidXQgYWxz byBFbWFjcyAyNCsuCjs7IDIwMTcvMTAvMjMgZGFkYW1zCjs7ICAgICBwcC1zaG93LXRvb2x0aXAs IHBwLWV4cHJlc3Npb24tc2l6ZSwgcHAtZGlzcGxheS1leHByZXNzaW9uOgo7OyAgICAgICBXcmFw IGNhbGxzIHRvIHBvc24tKiB3aXRoIHNhdmUtZXhjdXJzaW9uLgo7OyAyMDE3LzEwLzA4IGRhZGFt cwo7OyAgICAgQWRkZWQ6IHBwLWV2YWwtZXhwcmVzc2lvbi1wcmludC1jaXJjbGUuCjs7ICAgICBw cC1zaG93LXRvb2x0aXAsIHBwLWV2YWwtbGFzdC1zZXhwLXdpdGgob3V0KS10b29sdGlwLCBwcC1l dmFsLWxhc3Qtc2V4cDoKOzsgICAgICAgQmluZCBwcmludC0oY2lyY2xlfGxlbmd0aHxsZXZlbCkg c28gcHAtdG8tc3RyaW5nIHByaW50cyBhbGwuCjs7IDIwMTYvMTEvMTQgZGFkYW1zCjs7ICAgICBw cC1tYXgtdG9vbHRpcC1zaXplOiBNZW50aW9uIGluIGRvYyB0aGF0IGlmIHBvaW50IGlzIG9mZi1z Y3JlZW4gdGhlbiB0b29sdGlwIG5vdCB1c2VkLgo7OyAgICAgcHAtZGlzcGxheS1leHByZXNzaW9u OiBJZiBwb2ludCBpcyBvZmYtc2NyZWVuIHRoZW4gZG8gbm90IHRyeSB0byB1c2UgdG9vbHRpcC4K OzsgMjAxNi8wNS8zMCBkYWRhbXMKOzsgICAgIHBwLWV2YWwtbGFzdC1zZXhwOiBEbyBub3QgZGVm aW5lIGZvciBFbWFjcyA8IDIzLgo7OyAyMDE2LzA1LzIxIGRhZGFtcwo7OyAgICAgQWRkZWQ6IHBw LW1heC10b29sdGlwLXNpemUsIGZhY2UgcHAtdG9vbHRpcCwgcHAtc2hvdy10b29sdGlwLAo7OyAg ICAgICAgICAgIHBwLXRvb2x0aXAtc2hvdywgcHAtZXhwcmVzc2lvbi1zaXplLCBwcC1ldmFsLWV4 cHJlc3Npb24td2l0aChvdXQpLXRvb2x0aXAsCjs7ICAgICAgICAgICAgcHAtZXZhbC1sYXN0LXNl eHAtd2l0aChvdXQpLXRvb2x0aXAsIChyZWRlZmluaXRpb24gb2YpIHBwLWV2YWwtbGFzdC1zZXhw Lgo7OyAgICAgcHAtZGlzcGxheS1leHByZXNzaW9uOiBVc2UgdG9vbHRpcCBpZiBwcC1tYXgtdG9v bHRpcC1zaXplIHNheXMgdG8uICBBZGRlZCBhdXRvbG9hZCBjb29raWUuCjs7ICAgICBwcC1ldmFs LWV4cHJlc3Npb246IEFkZGVkIFNXQVAtVE9PTFRJUCBvcHRpb25hbCBhcmcuCjs7ICAgICAgICAg ICAgICAgICAgICAgICAgIFVzZSBwcC1yZWFkLS1leHByZXNzaW9uIChmb3Jnb3QgdG8gdXNlIGl0 IG9uIDIwMTUtMDQtMTgpLgo7OyAgICAgcHAtcmVhZC0tZXhwcmVzc2lvbjogVXBkYXRlZCBwZXIg RW1hY3MgMjUgLSB1c2UgYWRkLWZ1bmN0aW9uLgo7OyAyMDE2LzA1LzAxIGRhZGFtcwo7OyAgICAg cHAtZXZhbC1leHByZXNzaW9uOiBSZXR1cm4gcmVzdWx0IG9mIGV2YWx1YXRpb24uCjs7IDIwMTUv MDQvMTggZGFkbXMKOzsgICAgIEFkZGVkOiBwcC1yZWFkLS1leHByZXNzaW9uLgo7OyAgICAgcHAt ZXZhbC1leHByZXNzaW9uOiBVcGRhdGVkIGZvciBFbWFjcyAyNC40KzogdXNlIHBwLXJlYWQtLWV4 cHJlc3Npb24uCjs7IDIwMTMvMTIvMDMgZGFkYW1zCjs7ICAgICBwcC1yZWFkLWV4cHJlc3Npb24t bWFwOiBTd2FwIFRBQiBhbmQgTS1UQUIsIHNvIDFzdCBjb21wbGV0ZXMgTGlzcCBzeW1ib2xzLgo7 OyAyMDEzLzAyLzE1IGRhZGFtcwo7OyAgICAgcHAtZXZhbC1leHByZXNzaW9uOiBCaW5kIGRlYWN0 aXZhdGUtbWFyayB0byBuaWwsIGxpa2UgZml4IGZvciBFbWFjcyBidWcgIzEzNzI0Lgo7OyAyMDEy LzA3LzIyIGRhZGFtcwo7OyAgICAgcHAtZGlzcGxheS1leHByZXNzaW9uOgo7OyAgICAgICBEbyBu b3QgdHJ5IHRvIHNlbGVjdCBvbGQtd2luZG93IGlmIGl0IGlzIG5vIGxvbmdlciBsaXZlLgo7OyAg ICAgICBVc2UgYmFja3F1b3RlICsgY29tbWEsIHRvIHJlcGxhY2UgZnJlZSB2YXIuCjs7IDIwMTEv MDEvMDQgZGFkYW1zCjs7ICAgICBBZGRlZCBhdXRvbG9hZCBjb29raWVzIGZvciBkZWZjdXN0b20u Cjs7IDIwMTAvMDYvMjEgZGFkYW1zCjs7ICAgICBwcC1kaXNwbGF5LWV4cHJlc3Npb246IFNldCB0 aGUgaG9va3MgbG9jYWxseSBpbnN0ZWFkIG9mIGxldC1iaW5kaW5nIHRoZW0sIHRvCjs7ICAgICAg IGF2b2lkIG1zZyAiTWFraW5nIGNoYW5nZS1tYWpvci1tb2RlLWhvb2sgYnVmZmVyLWxvY2FsIHdo aWxlIGxvY2FsbHkKOzsgICAgICAgbGV0LWJvdW5kISIgLSBzdWdnZXN0aW9uIGZyb20gU3RlZmFu IE0uCjs7IDIwMTAvMDEvMTIgZGFkYW1zCjs7ICAgICBBZGRlZDogcHAtZGlzcGxheS1leHByZXNz aW9uIChyZWRlZmluaXRpb24pLgo7OyAgICAgcHAtZXZhbC1leHByZXNzaW9uOiBVc2UgcHAtZGlz cGxheS1leHByZXNzaW9uLgo7OyAyMDA4LzA0LzE0IGRhZGFtcwo7OyAgICAgcHAtZXZhbC1leHBy ZXNzaW9uOiBUcmVhdCBuZWdhdGl2ZSBwcmVmaXggYXJnLgo7OyAyMDA4LzA0LzEzIGRhZGFtcwo7 OyAgICAgcHAtZXZhbC1leHByZXNzaW9uOgo7OyAgICAgICBUcmVhdCBwcmVmaXggYXJnIChhZGRl ZCBvcHRpb25hbCBhcmcpLgo7OyAgICAgICBSZXNwZWN0IGV2YWwtZXhwcmVzc2lvbi1kZWJ1Zy1v bi1lcnJvciBhbmQgcHAtZXZhbC1leHByZXNzaW9uLXByaW50LSouCjs7ICAgICBBZGRlZDogcHAt ZXZhbC1leHByZXNzaW9uLXByaW50LShsZW5ndGh8bGV2ZWwpLCBwcC1yZWFkLWV4cHJlc3Npb24t bWFwLgo7OyAyMDA3LzAyLzA0IGRhZGFtcwo7OyAgICAgcHAtZXZhbC1leHByZXNzaW9uOiBVbmRp ZCAwMS8wNSB3b3JrYXJvdW5kLCBiZWNhdXNlIFJNUyBmaXhlZCB2YW5pbGxhIEVtYWNzLgo7OyAy MDA3LzAxLzA1IGRhZGFtcwo7OyAgICAgcHAtZXZhbC1leHByZXNzaW9uOiBBZGp1c3RlZCB0byBm aXQgRW1hY3MgMjIgZGVmaW5pdGlvbiwgd2hpY2ggZG9lc24ndCBldmFsLgo7OyAyMDA2LzAxLzI5 IGRhZGFtcwo7OyAgICAgcHAtZXZhbC1leHByZXNzaW9uOiBVc2UgcmVhZC1mcm9tLW1pbmlidWZm ZXIuCjs7IDIwMDUvMDEvMDQgZGFkYW1zCjs7ICAgICBTZXQgYnVmZmVyLXJlYWQtb25seSB0byBu aWwuCjs7IDIwMDQvMDMvMjQgZGFkYW1zCjs7ICAgICBwcC1ldmFsLWV4cHJlc3Npb246IEFkZGVk IGNhbGwgdG8gZm9udC1sb2NrLWZvbnRpZnktYnVmZmVyLgo7Cjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKOzsKOzsg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQo7OyBhbnkgbGF0ZXIgdmVy c2lvbi4KCjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvCjs7IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgK OzsgRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgo7Owo7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7 Cjs7OyBDb2RlOgoKKHJlcXVpcmUgJ3BwKQoKOzs7IFF1aWV0IHRoZSBieXRlIGNvbXBpbGVyLgoo ZGVmdmFyIGVsZG9jLWRvY3VtZW50YXRpb24tZnVuY3Rpb24pICAgOyBJbiBgZWxkb2MuZWwnIChF bWFjcyAyMyspCihkZWZ2YXIgZXZhbC1leHByZXNzaW9uLWRlYnVnLW9uLWVycm9yKQooZGVmdmFy IGxleGljYWwtYmluZGluZykgICAgICAgICAgICAgICAgOyBFbWFjcyAyNCsKKGRlZnZhciBwcC1t YXgtdG9vbHRpcC1zaXplKSAgICAgICAgICAgIDsgSGVyZSwgZm9yIEVtYWNzIDI0KwooZGVmdmFy IHRvb2x0aXAtZnJhbWUtcGFyYW1ldGVycykgICAgICAgOyBFbWFjcyAyMisKKGRlZnZhciB0b29s dGlwLWhpZGUtZGVsYXkpICAgICAgICAgICAgIDsgRW1hY3MgMjIrCihkZWZ2YXIgdG9vbHRpcC14 LW9mZnNldCkgICAgICAgICAgICAgICA7IEVtYWNzIDIyKwooZGVmdmFyIHRvb2x0aXAteS1vZmZz ZXQpICAgICAgICAgICAgICAgOyBFbWFjcyAyMisKKGRlZnZhciB4LW1heC10b29sdGlwLXNpemUp ICAgICAgICAgICAgIDsgRW1hY3MgMjIrCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKCgoo ZGVmdmFyIHBwLXJlYWQtZXhwcmVzc2lvbi1tYXAgbmlsCiAgImByZWFkLWV4cHJlc3Npb24tbWFw JyB3aXRoIHNvbWUgRW1hY3MtTGlzcCBrZXkgYmluZGluZ3MuIikKKHVubGVzcyBwcC1yZWFkLWV4 cHJlc3Npb24tbWFwCiAgKGxldCAoKG1hcCAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAgKGRl ZmluZS1rZXkgbWFwICJcTS1cdCIgJ2xpc3AtaW5kZW50LWxpbmUpCiAgICAoZGVmaW5lLWtleSBt YXAgIlx0IiAnbGlzcC1jb21wbGV0ZS1zeW1ib2wpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxlXEMt cSIgJ2luZGVudC1zZXhwKQogICAgKGRlZmluZS1rZXkgbWFwICJcZVx0IiAnbGlzcC1pbmRlbnQt bGluZSkKICAgIChkZWZpbmUta2V5IG1hcCAiXGVcQy14IiAnZXZhbC1kZWZ1bikKICAgIChkZWZp bmUta2V5IG1hcCAiXGVcQy1xIiAnaW5kZW50LXBwLXNleHApCiAgICA7OyhkZWZpbmUta2V5IG1h cCAiXDE3NyIgJ2JhY2t3YXJkLWRlbGV0ZS1jaGFyLXVudGFiaWZ5KQogICAgKHNldC1rZXltYXAt cGFyZW50IG1hcCBtaW5pYnVmZmVyLWxvY2FsLW1hcCkKICAgIChzZXRxIHBwLXJlYWQtZXhwcmVz c2lvbi1tYXAgIG1hcCkpKQoKOzs7IyMjYXV0b2xvYWQKKGRlZmN1c3RvbSBwcC1ldmFsLWV4cHJl c3Npb24tcHJpbnQtY2lyY2xlIG5pbAogICIqVmFsdWUgZm9yIGBwcmludC1jaXJjbGUnIHdoaWxl IHByaW50aW5nIHZhbHVlIGluIGBwcC1ldmFsLWV4cHJlc3Npb24nLgpOb24tbmlsIG1lYW5zIHBy aW50IHJlY3Vyc2l2ZSBzdHJ1Y3R1cmVzIHVzaW5nICNOPSBhbmQgI04jIHN5bnRheC4iCiAgOmdy b3VwICdwcCA6Z3JvdXAgJ2xpc3AgOnR5cGUgJ2Jvb2xlYW4pCgo7OzsjIyNhdXRvbG9hZAooZGVm Y3VzdG9tIHBwLWV2YWwtZXhwcmVzc2lvbi1wcmludC1sZW5ndGggbmlsCiAgIipWYWx1ZSBmb3Ig YHByaW50LWxlbmd0aCcgd2hpbGUgcHJpbnRpbmcgdmFsdWUgaW4gYHBwLWV2YWwtZXhwcmVzc2lv bicuCkEgdmFsdWUgb2YgbmlsIG1lYW5zIG5vIGxpbWl0LiIKICA6Z3JvdXAgJ3BwIDpncm91cCAn bGlzcCA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiTm8gTGltaXQiIG5pbCkgaW50ZWdlcikp Cgo7OzsjIyNhdXRvbG9hZAooZGVmY3VzdG9tIHBwLWV2YWwtZXhwcmVzc2lvbi1wcmludC1sZXZl bCBuaWwKICAiKlZhbHVlIGZvciBgcHJpbnQtbGV2ZWwnIHdoaWxlIHByaW50aW5nIHZhbHVlIGlu IGBwcC1ldmFsLWV4cHJlc3Npb24nLgpBIHZhbHVlIG9mIG5pbCBtZWFucyBubyBsaW1pdC4iCiAg Omdyb3VwICdwcCA6Z3JvdXAgJ2xpc3AgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIk5vIExp bWl0IiBuaWwpIGludGVnZXIpKQoKOzsgT25seSBkaWZmZXJlbmNlIGlzIGBwcC1yZWFkLWV4cHJl c3Npb24tbWFwJyBpbnN0ZWFkIG9mIGByZWFkLWV4cHJlc3Npb24tbWFwJy4KKHdoZW4gKGZib3Vu ZHAgJ3JlYWQtLWV4cHJlc3Npb24pICAgICAgIDsgRW1hY3MgMjQuNCsKCiAgKGRlZnVuIHBwLXJl YWQtLWV4cHJlc3Npb24gKHByb21wdCAmb3B0aW9uYWwgaW5pdGlhbC1jb250ZW50cykKICAgIChs ZXQgKChtaW5pYnVmZmVyLWNvbXBsZXRpbmctc3ltYm9sIHQpKQogICAgICAobWluaWJ1ZmZlci13 aXRoLXNldHVwLWhvb2sKICAgICAgIChsYW1iZGEgKCkgICAgICAgICAgICAgICAgICAgICAgIDsg VmFuaWxsYSBFbWFjcyBGSVhNRTogY2FsbCBgZW1hY3MtbGlzcC1tb2RlJz8KICAgICAgICAgKGFk ZC1mdW5jdGlvbiA6YmVmb3JlLXVudGlsIChsb2NhbCAnZWxkb2MtZG9jdW1lbnRhdGlvbi1mdW5j dGlvbikKICAgICAgICAgICAgICAgICAgICAgICAjJ2VsaXNwLWVsZG9jLWRvY3VtZW50YXRpb24t ZnVuY3Rpb24pCiAgICAgICAgIChlbGRvYy1tb2RlIDEpCiAgICAgICAgIChhZGQtaG9vayAnY29t cGxldGlvbi1hdC1wb2ludC1mdW5jdGlvbnMKICAgICAgICAgICAgICAgICAgICMnZWxpc3AtY29t cGxldGlvbi1hdC1wb2ludCBuaWwgdCkKICAgICAgICAgKHJ1bi1ob29rcyAnZXZhbC1leHByZXNz aW9uLW1pbmlidWZmZXItc2V0dXAtaG9vaykpCiAgICAgICAocmVhZC1mcm9tLW1pbmlidWZmZXIg cHJvbXB0IGluaXRpYWwtY29udGVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcC1y ZWFkLWV4cHJlc3Npb24tbWFwIHQgJ3JlYWQtZXhwcmVzc2lvbi1oaXN0b3J5KSkpKSkKCih3aGVu IChmYm91bmRwICd3aW5kb3ctaW5zaWRlLWFic29sdXRlLXBpeGVsLWVkZ2VzKSA7IEVtYWNzIDI0 KwoKICAoZGVmY3VzdG9tIHBwLW1heC10b29sdGlwLXNpemUgbmlsCiAgICAiTWF4IHNpemUgZm9y IHNob3dpbmcgcHJldHR5LXByaW50ZWQgdmFsdWVzIGluIGEgdG9vbHRpcCBhdCBwb2ludC4KVGhl IHZhbHVlIGNhbiBiZToKCiogQSBjb25zIHRoYXQgaGFzIHRoZSBzYW1lIGZvcm0gYXMgYHgtbWF4 LXRvb2x0aXAtc2l6ZSc6CiAgKFdJRFRIIC4gSEVJR0hUKSwgd2hlcmUgV0lEVEggaXMgdGhlIG1h eCB3aWR0aCBvZiB0aGUgdG9vbHRpcCBpbgogIGNoYXJzIGFuZCBIRUlHSFQgaXMgdGhlIG1heCBo ZWlnaHQgaW4gY2hhcnMuICBJZiB0aGUgdmFsdWUgdG8gYmUKICBwcmludGVkIGNhbm5vdCBmaXQg aW4gYSB0b29sdGlwIHRoaXMgbGFyZ2UgdGhlbiBpdCBpcyBzaG93biBpbgogIGJ1ZmZlciBgKlBw IEV2YWwgT3V0cHV0KicuCgoqIG5pbCwgbWVhbmluZyBuZXZlciB1c2UgYSB0b29sdGlwLgoKKiB0 LCBtZWFuaW5nIHVzZSBhIHRvb2x0aXAgYnV0IGNsaXAgdGhlIHZhbHVlIHRvIGB4LW1heC10b29s dGlwLXNpemUnLgoKTm90ZTogUmVnYXJkbGVzcyBvZiB0aGUgb3B0aW9uIHZhbHVlLCBhIHRvb2x0 aXAgaXMgbm90IHVzZWQgaWYgcG9pbnQKaXMgb2ZmLXNjcmVlbiB3aGVuIHByZXR0eS1wcmludGlu ZyBpcyBjYWxsZWQgZm9yLiAgVGhpcyBjYW4gaGFwcGVuLApmb3IgaW5zdGFuY2UsIGlmIHByZXR0 eS1wcmludGluZyB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgYW4KZXhwcmVzc2lvbiB0aGF0IG1v dmVzIHBvaW50IG9mZi1zY3JlZW4uIgogICAgOnR5cGUgYChjaG9pY2UKICAgICAgICAgICAgKGNv bnN0IDp0YWcgIkRvIG5vdCB1c2UgYSB0b29sdGlwIiBuaWwpCiAgICAgICAgICAgIChjb25zdCA6 dGFnICJBbHdheXMgdXNlIGEgdG9vbHRpcCwgYW5kIGNsaXAgdmFsdWUgaWYgdG9vIGJpZyIgdCkK ICAgICAgICAgICAgKGNvbnMgIDp0YWcgIlVzZSBhIHRvb2x0aXAgb25seSBpZiBzbWFsbGVyIHRo YW4gV0lEVEggeCBIRUlHSFQiCiAgICAgICAgICAgICAgICAgICAoaW50ZWdlciA6dGFnICJXaWR0 aCAoY2hhcmFjdGVycykiICA6dmFsdWUgLChjYXIgeC1tYXgtdG9vbHRpcC1zaXplKSkKICAgICAg ICAgICAgICAgICAgIChpbnRlZ2VyIDp0YWcgIkhlaWdodCAoY2hhcmFjdGVycykiIDp2YWx1ZSAs KGNkciB4LW1heC10b29sdGlwLXNpemUpKSkpCiAgICA6Z3JvdXAgJ3BwIDpncm91cCAnbGlzcCkK CiAgKGRlZmZhY2UgcHAtdG9vbHRpcAogICAgICAnKCgoKGNsYXNzIGNvbG9yKSkKICAgICAgICAg OmJhY2tncm91bmQgImxpZ2h0eWVsbG93IgogICAgICAgICA6Zm9yZWdyb3VuZCAiYmxhY2siCiAg ICAgICAgIDpmYW1pbHkgICAgICJDb3VyaWVyIikKICAgICAgICAodAogICAgICAgICA6ZmFtaWx5 ICAgICAiQ291cmllciIpKQogICAgIkZhY2UgZm9yIGBwcC1zaG93LXRvb2x0aXAnLiIKICAgIDpn cm91cCAndG9vbHRpcCkKCiAgKGRlZnVuIHBwLXRvb2x0aXAtc2hvdyAodGV4dCAmb3B0aW9uYWwg dXNlLWVjaG8tYXJlYSBmYWNlKQogICAgIlNob3cgVEVYVCBhY2NvcmRpbmcgdG8gb3B0aW9uIGBw cC1tYXgtdG9vbHRpcC1zaXplJy4KT3B0aW9uYWwgYXJnIFVTRS1FQ0hPLUFSRUEgbm9uLW5pbCBt ZWFucyBzaG93IFRFWFQgaW4gdGhlIGVjaG8gYXJlYQogaW5zdGVhZCBvZiBpbiBhIHRvb2x0aXAu Ck9wdGlvbmFsIGFyZyBGQUNFIGRlZmF1bHRzIHRvIGBwcC10b29sdGlwJy4iCiAgICAoc2V0cSBm YWNlICAob3IgZmFjZSAgJ3BwLXRvb2x0aXApKQogICAgKGlmIHVzZS1lY2hvLWFyZWEgICAgICAg ICAgICAgICAgICAgOyBOb3QgdXNlZCBpbiBjb2RlIGhlcmUuCiAgICAgICAgKHRvb2x0aXAtc2hv dy1oZWxwLW5vbi1tb2RlIHRleHQpCiAgICAgIChjb25kaXRpb24tY2FzZSBlcnJvcgogICAgICAg ICAgKGxldCAoKHBhcmFtcyAgKGNvcHktc2VxdWVuY2UgdG9vbHRpcC1mcmFtZS1wYXJhbWV0ZXJz KSkKICAgICAgICAgICAgICAgIChmZyAgICAgIChmYWNlLWF0dHJpYnV0ZSBmYWNlIDpmb3JlZ3Jv dW5kKSkKICAgICAgICAgICAgICAgIChiZyAgICAgIChmYWNlLWF0dHJpYnV0ZSBmYWNlIDpiYWNr Z3JvdW5kKSkpCiAgICAgICAgICAgICh3aGVuIChzdHJpbmdwIGZnKQogICAgICAgICAgICAgIChz ZXRxIHBhcmFtcyAgKHRvb2x0aXAtc2V0LXBhcmFtIHBhcmFtcyAnZm9yZWdyb3VuZC1jb2xvciBm ZykKICAgICAgICAgICAgICAgICAgICBwYXJhbXMgICh0b29sdGlwLXNldC1wYXJhbSBwYXJhbXMg J2JvcmRlci1jb2xvciAgICAgZmcpKSkKICAgICAgICAgICAgKHdoZW4gKHN0cmluZ3AgYmcpCiAg ICAgICAgICAgICAgKHNldHEgcGFyYW1zICAodG9vbHRpcC1zZXQtcGFyYW0gcGFyYW1zICdiYWNr Z3JvdW5kLWNvbG9yIGJnKSkpCiAgICAgICAgICAgICh4LXNob3ctdGlwIChwcm9wZXJ0aXplIHRl eHQgJ2ZhY2UgZmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkLWZyYW1lKQog ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMKICAgICAgICAgICAgICAgICAgICAgICAgdG9v bHRpcC1oaWRlLWRlbGF5CiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXAteC1vZmZzZXQK ICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcC15LW9mZnNldCkpCiAgICAgICAgKGVycm9y IChtZXNzYWdlICJFcnJvciB3aGlsZSBkaXNwbGF5aW5nIHRvb2x0aXA6ICVzIiBlcnJvcikKICAg ICAgICAgICAgICAgKHNpdC1mb3IgMSkKICAgICAgICAgICAgICAgKG1lc3NhZ2UgIiVzIiB0ZXh0 KSkpKSkKCiAgKGRlZnVuIHBwLXNob3ctdG9vbHRpcCAodmFsdWUpCiAgICAiU2hvdyBMaXNwIFZB TFVFIGluIGEgdG9vbHRpcCBhdCBwb2ludCB1c2luZyBmYWNlIGBwcC10b29sdGlwJy4iCiAgICAo c2F2ZS1leGN1cnNpb24KICAgICAgKGxldCogKChwb3NuLWF0LXB0ICAgICAgICAgICAgICAgIChw b3NuLWF0LXBvaW50KSkKICAgICAgICAgICAgICh4LXkgICAgICAgICAgICAgICAgICAgICAgIChh bmQgcG9zbi1hdC1wdCAgKHBvc24teC15IHBvc24tYXQtcHQpKSkKICAgICAgICAgICAgICh3aW4t ZWRnZXMgICAgICAgICAgICAgICAgIChhbmQgeC15ICAod2luZG93LWluc2lkZS1hYnNvbHV0ZS1w aXhlbC1lZGdlcykpKQogICAgICAgICAgICAgKGxlZnQgICAgICAgICAgICAgICAgICAgICAgKGFu ZCB4LXkgICgrIChjYXIgeC15KSAoY2FyIHdpbi1lZGdlcykpKSkKICAgICAgICAgICAgICh0b3Ag ICAgICAgICAgICAgICAgICAgICAgIChhbmQgeC15ICAoKyAoY2RyIHgteSkgKGNhZHIgd2luLWVk Z2VzKSkpKQogICAgICAgICAgICAgKHRvb2x0aXAtZnJhbWUtcGFyYW1ldGVycyAgYCgobmFtZSAu ICJ0b29sdGlwIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlu dGVybmFsLWJvcmRlci13aWR0aCAuIDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChib3JkZXItd2lkdGggLiAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGVmdCAsQCBsZWZ0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodG9wICAsQCB0b3ApKSkKICAgICAgICAgICAgIChwcmludC1sZW5ndGgg ICAgICAgICAgICAgIHBwLWV2YWwtZXhwcmVzc2lvbi1wcmludC1sZW5ndGgpCiAgICAgICAgICAg ICAocHJpbnQtbGV2ZWwgICAgICAgICAgICAgICBwcC1ldmFsLWV4cHJlc3Npb24tcHJpbnQtbGV2 ZWwpCiAgICAgICAgICAgICAocHJpbnQtY2lyY2xlICAgICAgICAgICAgICBwcC1ldmFsLWV4cHJl c3Npb24tcHJpbnQtY2lyY2xlKSkKICAgICAgICAocHAtdG9vbHRpcC1zaG93IChwcC10by1zdHJp bmcgdmFsdWUpKQogICAgICAgIHZhbHVlKSkpCgogIChkZWZ1biBwcC1leHByZXNzaW9uLXNpemUg KHZhbHVlIGJ1ZmZlcikKICAgICJSZXR1cm4gdGhlIHNpemUgaW4gY2hhcmFjdGVycyBuZWVkZWQg dG8gcHJldHR5LXByaW50IExpc3AgVkFMVUUuClByZXR0eS1wcmludCBWQUxVRSBpbiBCVUZGRVIg aW4gYSB0ZW1wb3JhcnkgaW52aXNpYmxlIGZyYW1lLCB0aGVuCnJldHVybiB0aGUgdmFsdWUgb2Yg YHBvc24tY29sLXJvdycuICBJZiB0aGUgdmFsdWUgaXMgbm9uLWBuaWwnLCBpdCBpcwphIGNvbnMg KENPTFVNTlMgLiBST1dTKSBvZiB0aGUgcmVjdGFuZ2xlIG5lZWRlZCBmb3IgdGhlIHJlc3VsdCBv ZgpwcmV0dHktcHJpbnRpbmcuIgogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIChsZXQgKChidWYg IChnZXQtYnVmZmVyLWNyZWF0ZSBidWZmZXIpKQogICAgICAgICAgICBwb3NuKQogICAgICAgICh3 aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZgogICAgICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgICAg IChsZXQqICgoc3BlY2lhbC1kaXNwbGF5LWJ1ZmZlci1uYW1lcyAgKCkpCiAgICAgICAgICAgICAg ICAgKHNwZWNpYWwtZGlzcGxheS1yZWdleHBzICAgICAgICgpKQogICAgICAgICAgICAgICAgIChp bnZpcy1mcmFtZSAgICAgICAgICAgICAgICAgICAobWFrZS1mcmFtZSAnKCh2aXNpYmlsaXR5IC4g bmlsKSkpKQogICAgICAgICAgICAgICAgICh3aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGlzcGxheS1idWZmZXIgYnVmIG5pbCBpbnZpcy1mcmFtZSkpKQogICAgICAgICAgICAocHAgdmFs dWUgYnVmKQogICAgICAgICAgICAod2l0aC1zZWxlY3RlZC1mcmFtZSBpbnZpcy1mcmFtZQogICAg ICAgICAgICAgIChzZWxlY3Qtd2luZG93IHdpbikKICAgICAgICAgICAgICAoZ290by1jaGFyIChw b2ludC1tYXgpKQogICAgICAgICAgICAgIChzZXRxIHBvc24gIChwb3NuLWF0LXBvaW50KSkKICAg ICAgICAgICAgICAocHJvZzEgKGFuZCBwb3NuICAocG9zbi1jb2wtcm93IHBvc24pKQogICAgICAg ICAgICAgICAgKGRlbGV0ZS1mcmFtZSkpKSkpKSkpCgogIChkZWZ1biBwcC1ldmFsLWV4cHJlc3Np b24td2l0aC10b29sdGlwIChleHByZXNzaW9uICZvcHRpb25hbCBpbnNlcnQtdmFsdWUpCiAgICAi VGhpcyBpcyBgcHAtZXZhbC1leHByZXNzaW9uJywgYnV0IHVzaW5nIGEgdG9vbHRpcCB3aGVuIHBv c3NpYmxlLgpUaGlzIGlzIGBwcC1ldmFsLWV4cHJlc3Npb24nIHdpdGggYHBwLW1heC10b29sdGlw LXNpemUnIGJvdW5kIHRvCmB4LW1heC10b29sdGlwLXNpemUnLiAgQSBwcmludGVkIHZhbHVlIGxh cmdlciB0aGFuIHRoaXMgaXMgc2hvd24gaW4KYnVmZmVyIGAqUHAgRXZhbCBPdXRwdXQqJy4iCiAg ICAoaW50ZXJhY3RpdmUKICAgICAobGlzdCAoaWYgKGZib3VuZHAgJ3BwLXJlYWQtLWV4cHJlc3Np b24pCiAgICAgICAgICAgICAgIChwcC1yZWFkLS1leHByZXNzaW9uICJFdmFsOiAiKQogICAgICAg ICAgICAgKHJlYWQtZnJvbS1taW5pYnVmZmVyICJFdmFsOiAiIG5pbCBwcC1yZWFkLWV4cHJlc3Np b24tbWFwIHQgJ3JlYWQtZXhwcmVzc2lvbi1oaXN0b3J5KSkKICAgICAgICAgICBjdXJyZW50LXBy ZWZpeC1hcmcpKQogICAgKGxldCAoKHBwLW1heC10b29sdGlwLXNpemUgIHgtbWF4LXRvb2x0aXAt c2l6ZSkpCiAgICAgIChwcC1ldmFsLWV4cHJlc3Npb24gZXhwcmVzc2lvbiBpbnNlcnQtdmFsdWUp KSkKCiAgKGRlZnVuIHBwLWV2YWwtZXhwcmVzc2lvbi13aXRob3V0LXRvb2x0aXAgKGV4cHJlc3Np b24gJm9wdGlvbmFsIGluc2VydC12YWx1ZSkKICAgICJUaGlzIGlzIGBwcC1ldmFsLWV4cHJlc3Np b24nLCBidXQgbmV2ZXIgdXNpbmcgYSB0b29sdGlwLgpUaGlzIGlzIGBwcC1ldmFsLWV4cHJlc3Np b24nIHdpdGggYHBwLW1heC10b29sdGlwLXNpemUnIGJvdW5kIHRvIGBuaWwnLiIKICAgIChpbnRl cmFjdGl2ZQogICAgIChsaXN0IChpZiAoZmJvdW5kcCAncHAtcmVhZC0tZXhwcmVzc2lvbikKICAg ICAgICAgICAgICAgKHBwLXJlYWQtLWV4cHJlc3Npb24gIkV2YWw6ICIpCiAgICAgICAgICAgICAo cmVhZC1mcm9tLW1pbmlidWZmZXIgIkV2YWw6ICIgbmlsIHBwLXJlYWQtZXhwcmVzc2lvbi1tYXAg dCAncmVhZC1leHByZXNzaW9uLWhpc3RvcnkpKQogICAgICAgICAgIGN1cnJlbnQtcHJlZml4LWFy ZykpCiAgICAobGV0ICgocHAtbWF4LXRvb2x0aXAtc2l6ZSAgbmlsKSkKICAgICAgKHBwLWV2YWwt ZXhwcmVzc2lvbiBleHByZXNzaW9uIGluc2VydC12YWx1ZSkpKQoKICAoZGVmdW4gcHAtZXZhbC1s YXN0LXNleHAtd2l0aC10b29sdGlwIChhcmcpCiAgICAiUnVuIGBwcC1ldmFsLWV4cHJlc3Npb24t d2l0aC10b29sdGlwJyBvbiB0aGUgc2V4cCBiZWZvcmUgcG9pbnQuClRoaXMgaXMgYHBwLWV2YWwt bGFzdC1zZXhwJyB3aXRoIGBwcC1tYXgtdG9vbHRpcC1zaXplJyBib3VuZCB0bwpgeC1tYXgtdG9v bHRpcC1zaXplJy4gIEEgcHJpbnRlZCB2YWx1ZSBsYXJnZXIgdGhhbiB0aGlzIGlzIHNob3duIGlu CmJ1ZmZlciBgKlBwIEV2YWwgT3V0cHV0KicuIgogICAgKGludGVyYWN0aXZlICJQIikKICAgIChp ZiBhcmcKICAgICAgICAobGV0ICgocHJpbnQtbGVuZ3RoICBwcC1ldmFsLWV4cHJlc3Npb24tcHJp bnQtbGVuZ3RoKQogICAgICAgICAgICAgIChwcmludC1sZXZlbCAgIHBwLWV2YWwtZXhwcmVzc2lv bi1wcmludC1sZXZlbCkKICAgICAgICAgICAgICAocHJpbnQtY2lyY2xlICAoYW5kIChib3VuZHAg J3ByaW50LWNpcmNsZSkgOyBFbWFjcyAyMisKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBwLWV2YWwtZXhwcmVzc2lvbi1wcmludC1jaXJjbGUpKSkKICAgICAgICAgIChpbnNlcnQg KHBwLXRvLXN0cmluZyAoZXZhbCAocHAtbGFzdC1zZXhwKSBsZXhpY2FsLWJpbmRpbmcpKSkpCiAg ICAgIChsZXQgKChwcC1tYXgtdG9vbHRpcC1zaXplICB4LW1heC10b29sdGlwLXNpemUpKQogICAg ICAgIChwcC1ldmFsLWV4cHJlc3Npb24gKHBwLWxhc3Qtc2V4cCkpKSkpCgogIChkZWZ1biBwcC1l dmFsLWxhc3Qtc2V4cC13aXRob3V0LXRvb2x0aXAgKGFyZykKICAgICJSdW4gYHBwLWV2YWwtZXhw cmVzc2lvbi13aXRob3V0LXRvb2x0aXAnIG9uIHRoZSBzZXhwIGJlZm9yZSBwb2ludC4KVGhpcyBp cyBgcHAtZXZhbC1leHByZXNzaW9uJyB3aXRoIGBwcC1tYXgtdG9vbHRpcC1zaXplJyBib3VuZCB0 byBgbmlsJy4iCiAgICAoaW50ZXJhY3RpdmUgIlAiKQogICAgKGlmIGFyZwogICAgICAgIChsZXQg KChwcmludC1sZW5ndGggIHBwLWV2YWwtZXhwcmVzc2lvbi1wcmludC1sZW5ndGgpCiAgICAgICAg ICAgICAgKHByaW50LWxldmVsICAgcHAtZXZhbC1leHByZXNzaW9uLXByaW50LWxldmVsKQogICAg ICAgICAgICAgIChwcmludC1jaXJjbGUgIChhbmQgKGJvdW5kcCAncHJpbnQtY2lyY2xlKSA7IEVt YWNzIDIyKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHAtZXZhbC1leHByZXNz aW9uLXByaW50LWNpcmNsZSkpKQogICAgICAgICAgKGluc2VydCAocHAtdG8tc3RyaW5nIChldmFs IChwcC1sYXN0LXNleHApIGxleGljYWwtYmluZGluZykpKSkKICAgICAgKGxldCAoKHBwLW1heC10 b29sdGlwLXNpemUgIG5pbCkpCiAgICAgICAgKHBwLWV2YWwtZXhwcmVzc2lvbiAocHAtbGFzdC1z ZXhwKSkpKSkKCiAgKQoKCjs7IFJFUExBQ0VTIE9SSUdJTkFMIGluIGBwcC5lbCc6Cjs7IDEuIFJl YWQgd2l0aCBjb21wbGV0aW9uLCB1c2luZyBgcHAtcmVhZC1leHByZXNzaW9uLW1hcCcuCjs7IDIu IFByb2dyZXNzIG1lc3NhZ2UgYWRkZWQuCjs7IDMuIEFkZGVkIG9wdGlvbmFsIGFyZ3M6IGluc2Vy dGlvbiBiZWhhdmlvciBhbmQgc3dhcHBpbmcgdXNlIG9mIGEgdG9vbHRpcC4KOzsgNC4gUmVzcGVj dCBgcHAtZXZhbC1leHByZXNzaW9uLXByaW50LWxlbmd0aCcsIGBwcC1ldmFsLWV4cHJlc3Npb24t cHJpbnQtbGV2ZWwnLAo7OyAgICBgcHAtbWF4LXRvb2x0aXAtc2l6ZScsIGFuZCBgZXZhbC1leHBy ZXNzaW9uLWRlYnVnLW9uLWVycm9yJy4KOzsgNS4gQWRqdXN0ZWQgdG8gd29yayBpbiBkaWZmZXJl bnQgRW1hY3MgcmVsZWFzZXMuCjs7IDYuIFJldHVybiByZXN1bHQgb2YgZXZhbHVhdGlvbiAoaXQg aXMgYWxzbyB0aGUgY2FyIG9mIHZhcmlhYmxlIGB2YWx1ZXMnKS4KOzsKOzs7IyMjYXV0b2xvYWQK KGRlZnVuIHBwLWV2YWwtZXhwcmVzc2lvbiAoZXhwcmVzc2lvbiAmb3B0aW9uYWwgaW5zZXJ0LXZh bHVlIHN3YXAtdG9vbHRpcCkKICAiUmVhZCBhbiBFbWFjcy1MaXNwIHNleHAsIGV2YWx1YXRlIGl0 LCBhbmQgcHJldHR5LXByaW50IGl0cyB2YWx1ZS4KQWRkIHRoZSB2YWx1ZSB0byB0aGUgZnJvbnQg b2YgdGhlIHZhcmlhYmxlIGB2YWx1ZXMnLgpXaXRoIG5vIHByZWZpeCBhcmcsIHJlc3BlY3QgYHBw LW1heC10b29sdGlwLXNpemUnLiAgSWYgYSB0b29sdGlwIGlzCiBub3QgdXNlZCB0aGVuIGlmIHRo ZSB2YWx1ZSBmaXRzIG9uIG9uZSBsaW5lIChmcmFtZSB3aWR0aCkgc2hvdyBpdCBpbgogdGhlIGVj aG8gYXJlYS4gIE90aGVyd2lzZSwgc2hvdyBpdCBpbiBidWZmZXIgYCpQcCBFdmFsIE91dHB1dCon LgpXaXRoIGEgemVybyBwcmVmaXggYXJnLCB0aGlzIHN3YXBzIHRoZSB1c2Ugb2YgYSB0b29sdGlw IGFjY29yZGluZyB0bwogYHBwLW1heC10b29sdGlwLXNpemUnOiBpZiB0aGF0IG9wdGlvbiBpcyBu aWwgdGhlbiBhIHRvb2x0aXAgaXMgdXNlZCwKIGFuZCBpZiBub24tbmlsIGEgdG9vbHRpcCBpcyBu b3QgdXNlZC4KV2l0aCBhIG5vbi16ZXJvIHByZWZpeCBhcmcsIGluc2VydCB0aGUgdmFsdWUgaW50 byB0aGUgY3VycmVudCBidWZmZXIKIGF0IHBvaW50LiAgSWYgdGhlIHByZWZpeCBhcmcgaXMgbmVn YXRpdmUgYW5kIHRoZSB2YWx1ZSBpcyBhIHN0cmluZwogdGhlbiBpbnNlcnQgaXQgaW50byB0aGUg YnVmZmVyIHdpdGhvdXQgZG91YmxlLXF1b3RlcyAoYFwiJykuCgpGb3IgRW1hY3MgcHJpb3IgdG8g MjQuNCwgdGhlIGNvbW1hbmQgaGFzIG5vIHN1cHBvcnQgZm9yIGEgdG9vbHRpcC4KQSB6ZXJvIHBy ZWZpeCBhcmcgaXMgdGhlbiB0cmVhdGVkIHRoZSBzYW1lIGFzIGEgcG9zaXRpdmUgcHJlZml4IGFy Zy4KCk5vbi1pbnRlcmFjdGl2ZWx5OgogKiBOb24tbmlsIFNXQVAtVE9PTFRJUCBtZWFucyBzd2Fw IHRoZSB1c2Ugb2YgYSB0b29sdGlwLgogKiBOb24tbmlsIElOU0VSVC1WQUxVRSBpcyB0cmVhdGVk IGxpa2UgYSBub24temVybyByYXcgcHJlZml4IGFyZzoKICAgaW5zZXJ0IHRoZSB2YWx1ZSBpbiB0 aGUgYnVmZmVyIChzYW5zIHF1b3RlcyBpZiBuZWdhdGl2ZSkuCgpUaGlzIGNvbW1hbmQgcmVzcGVj dHMgdXNlciBvcHRpb25zIGBwcC1ldmFsLWV4cHJlc3Npb24tcHJpbnQtbGVuZ3RoJywKYHBwLWV2 YWwtZXhwcmVzc2lvbi1wcmludC1sZXZlbCcsIGBwcC1tYXgtdG9vbHRpcC1zaXplJywgYW5kCmBl dmFsLWV4cHJlc3Npb24tZGVidWctb24tZXJyb3InLgoKRW1hY3MtTGlzcCBtb2RlIGNvbXBsZXRp b24gYW5kIGluZGVudGF0aW9uIGJpbmRpbmdzIGFyZSBpbiBlZmZlY3QuIgogIChpbnRlcmFjdGl2 ZQogICAobGlzdCAoaWYgKGZib3VuZHAgJ3BwLXJlYWQtLWV4cHJlc3Npb24pCiAgICAgICAgICAg ICAocHAtcmVhZC0tZXhwcmVzc2lvbiAiRXZhbDogIikKICAgICAgICAgICAocmVhZC1mcm9tLW1p bmlidWZmZXIgIkV2YWw6ICIgbmlsIHBwLXJlYWQtZXhwcmVzc2lvbi1tYXAgdCAncmVhZC1leHBy ZXNzaW9uLWhpc3RvcnkpKQogICAgICAgICBjdXJyZW50LXByZWZpeC1hcmcKICAgICAgICAgKHpl cm9wIChwcmVmaXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpKSkpCiAgKGlmIChh bmQgc3dhcC10b29sdGlwICAoZmJvdW5kcCAncHAtZXZhbC1leHByZXNzaW9uLXdpdGgtdG9vbHRp cCkpIDsgRW1hY3MgMjQuNCsKICAgICAgKGlmIChub3QgcHAtbWF4LXRvb2x0aXAtc2l6ZSkKICAg ICAgICAgIChwcC1ldmFsLWV4cHJlc3Npb24td2l0aC10b29sdGlwIGV4cHJlc3Npb24pCiAgICAg ICAgKHBwLWV2YWwtZXhwcmVzc2lvbi13aXRob3V0LXRvb2x0aXAgZXhwcmVzc2lvbikpCiAgICAo bWVzc2FnZSAiRXZhbHVhdGluZy4uLiIpCiAgICAoaWYgKG9yIChub3QgKGJvdW5kcCAnZXZhbC1l eHByZXNzaW9uLWRlYnVnLW9uLWVycm9yKSkKICAgICAgICAgICAgKG51bGwgZXZhbC1leHByZXNz aW9uLWRlYnVnLW9uLWVycm9yKSkKICAgICAgICAoc2V0cSB2YWx1ZXMgIChjb25zIChpZiAoYW5k IChib3VuZHAgJ2xleGljYWwtYmluZGluZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICg+IGVtYWNzLW1ham9yLXZlcnNpb24gMjMpKSA7IEVtYWNzIDI0KwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChldmFsIGV4cHJlc3Npb24gbGV4aWNhbC1iaW5kaW5nKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZhbCBleHByZXNzaW9uKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhbHVlcykpCiAgICAgIChsZXQgKChvbGQtdmFsdWUgIChtYWtl LXN5bWJvbCAidCIpKQogICAgICAgICAgICBuZXctdmFsdWUpCiAgICAgICAgOzsgQmluZCBgZGVi dWctb24tZXJyb3InIHRvIHNvbWV0aGluZyB1bmlxdWUgc28gdGhhdCB3ZSBjYW4KICAgICAgICA7 OyBkZXRlY3Qgd2hlbiBldmFsZWQgY29kZSBjaGFuZ2VzIGl0LgogICAgICAgIChsZXQgKChkZWJ1 Zy1vbi1lcnJvciAgb2xkLXZhbHVlKSkKICAgICAgICAgIChzZXRxIHZhbHVlcyAgICAgKGNvbnMg KGV2YWwgZXhwcmVzc2lvbikgdmFsdWVzKQogICAgICAgICAgICAgICAgbmV3LXZhbHVlICBkZWJ1 Zy1vbi1lcnJvcikpCiAgICAgICAgOzsgSWYgZXZhbGVkIGNvZGUgaGFzIGNoYW5nZWQgdGhlIHZh bHVlIG9mIGBkZWJ1Zy1vbi1lcnJvcicsCiAgICAgICAgOzsgcHJvcGFnYXRlIHRoYXQgY2hhbmdl IHRvIHRoZSBnbG9iYWwgYmluZGluZy4KICAgICAgICAodW5sZXNzIChlcSBvbGQtdmFsdWUgbmV3 LXZhbHVlKQogICAgICAgICAgKHNldHEgZGVidWctb24tZXJyb3IgIG5ldy12YWx1ZSkpKSkKICAg IChsZXQgKChwcmludC1sZW5ndGggICAgIHBwLWV2YWwtZXhwcmVzc2lvbi1wcmludC1sZW5ndGgp CiAgICAgICAgICAocHJpbnQtbGV2ZWwgICAgICBwcC1ldmFsLWV4cHJlc3Npb24tcHJpbnQtbGV2 ZWwpCiAgICAgICAgICAoZGVhY3RpdmF0ZS1tYXJrICBuaWwpKQogICAgICAoY29uZCAoaW5zZXJ0 LXZhbHVlCiAgICAgICAgICAgICAobWVzc2FnZSAiRXZhbHVhdGluZy4uLmRvbmUuIFZhbHVlIGlu c2VydGVkLiIpCiAgICAgICAgICAgICAoc2V0cSBpbnNlcnQtdmFsdWUgIChwcmVmaXgtbnVtZXJp Yy12YWx1ZSBpbnNlcnQtdmFsdWUpKQogICAgICAgICAgICAgKGlmIChvciAobm90IChzdHJpbmdw IChjYXIgdmFsdWVzKSkpICh3aG9sZW51bXAgaW5zZXJ0LXZhbHVlKSkKICAgICAgICAgICAgICAg ICAocHAgKGNhciB2YWx1ZXMpIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgICAgICAgIChwcmlu YyAoY2FyIHZhbHVlcykgKGN1cnJlbnQtYnVmZmVyKSkpKQogICAgICAgICAgICAodCAocHAtZGlz cGxheS1leHByZXNzaW9uIChjYXIgdmFsdWVzKSAiKlBwIEV2YWwgT3V0cHV0KiIpKSkKICAgICAg KGNhciB2YWx1ZXMpKSkpCgoKOzsgUkVQTEFDRVMgT1JJR0lOQUwgaW4gYHBwLmVsJzoKOzsgMS4g QWRkZWQgb3B0aW9uYWwgYXJnOiBzd2FwcGluZyB1c2Ugb2YgYSB0b29sdGlwLgo7OyA0LiBSZXNw ZWN0IGBwcC1ldmFsLWV4cHJlc3Npb24tcHJpbnQtbGVuZ3RoJywgYHBwLWV2YWwtZXhwcmVzc2lv bi1wcmludC1sZXZlbCcsCjs7ICAgIGBwcC1tYXgtdG9vbHRpcC1zaXplJywgYW5kIGBldmFsLWV4 cHJlc3Npb24tZGVidWctb24tZXJyb3InLgo7OyA1LiBBZGp1c3RlZCB0byB3b3JrIGluIGRpZmZl cmVudCBFbWFjcyByZWxlYXNlcy4KOzsKKHdoZW4gKGZib3VuZHAgJ3BwLWxhc3Qtc2V4cCkgICAg ICAgICAgIDsgRW1hY3MgMjMrCgogIChkZWZ1biBwcC1ldmFsLWxhc3Qtc2V4cCAoaW5zZXJ0LXZh bHVlICZvcHRpb25hbCBzd2FwLXRvb2x0aXApCiAgICAiUnVuIGBwcC1ldmFsLWV4cHJlc3Npb24n IG9uIHNleHAgYmVmb3JlIHBvaW50LgpXaXRoIGEgemVybyBwcmVmaXggYXJnLCB0aGlzIHN3YXBz IHRoZSB1c2Ugb2YgYSB0b29sdGlwIGFjY29yZGluZyB0bwogYHBwLW1heC10b29sdGlwLXNpemUn OiBpZiB0aGF0IG9wdGlvbiBpcyBuaWwgdGhlbiBhIHRvb2x0aXAgaXMgdXNlZCwKIGFuZCBpZiBu b24tbmlsIGEgdG9vbHRpcCBpcyBub3QgdXNlZC4KV2l0aCBhIG5vbi16ZXJvIHByZWZpeCBhcmcs IHByZXR0eS1wcmludCB0aGUgdmFsdWUgaW50byB0aGUgY3VycmVudAogYnVmZmVyLgpJZ25vcmVz IGxlYWRpbmcgY29tbWVudCBjaGFyYWN0ZXJzLgoKRm9yIEVtYWNzIHByaW9yIHRvIDI0LjQsIHRo ZSBjb21tYW5kIGhhcyBubyBzdXBwb3J0IGZvciBhIHRvb2x0aXAuCkEgemVybyBwcmVmaXggYXJn IGlzIHRoZW4gdHJlYXRlZCB0aGUgc2FtZSBhcyBhIHBvc2l0aXZlIHByZWZpeCBhcmcuCgpOb24t aW50ZXJhY3RpdmVseToKICogTm9uLW5pbCBTV0FQLVRPT0xUSVAgbWVhbnMgc3dhcCB0aGUgdXNl IG9mIGEgdG9vbHRpcC4KICogTm9uLW5pbCBJTlNFUlQtVkFMVUUgaXMgdHJlYXRlZCBsaWtlIGEg bm9uLXplcm8gcHJlZml4IGFyZzoKICAgaW5zZXJ0IHRoZSB2YWx1ZSBpbiB0aGUgYnVmZmVyLgoK VGhpcyBjb21tYW5kIHJlc3BlY3RzIHVzZXIgb3B0aW9ucyBgcHAtZXZhbC1leHByZXNzaW9uLXBy aW50LWxlbmd0aCcsCmBwcC1ldmFsLWV4cHJlc3Npb24tcHJpbnQtbGV2ZWwnLCBgcHAtbWF4LXRv b2x0aXAtc2l6ZScsIGFuZApgZXZhbC1leHByZXNzaW9uLWRlYnVnLW9uLWVycm9yJy4iCiAgICAo aW50ZXJhY3RpdmUgKGxpc3QgY3VycmVudC1wcmVmaXgtYXJnIAogICAgICAgICAgICAgICAgICAg ICAgICh6ZXJvcCAocHJlZml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSkpKQog ICAgKGlmIHN3YXAtdG9vbHRpcAogICAgICAgIChpZiAobm90IHBwLW1heC10b29sdGlwLXNpemUp CiAgICAgICAgICAgIChwcC1ldmFsLWxhc3Qtc2V4cC13aXRoLXRvb2x0aXAgbmlsKQogICAgICAg ICAgKHBwLWV2YWwtbGFzdC1zZXhwLXdpdGhvdXQtdG9vbHRpcCBuaWwpKQogICAgICAoaWYgaW5z ZXJ0LXZhbHVlCiAgICAgICAgICAobGV0ICgocHJpbnQtbGVuZ3RoICBwcC1ldmFsLWV4cHJlc3Np b24tcHJpbnQtbGVuZ3RoKQogICAgICAgICAgICAgICAgKHByaW50LWxldmVsICAgcHAtZXZhbC1l eHByZXNzaW9uLXByaW50LWxldmVsKQogICAgICAgICAgICAgICAgKHByaW50LWNpcmNsZSAgcHAt ZXZhbC1leHByZXNzaW9uLXByaW50LWNpcmNsZSkpCiAgICAgICAgICAgIChpbnNlcnQgKHBwLXRv LXN0cmluZyAoZXZhbCAocHAtbGFzdC1zZXhwKSBsZXhpY2FsLWJpbmRpbmcpKSkpCiAgICAgICAg KHBwLWV2YWwtZXhwcmVzc2lvbiAocHAtbGFzdC1zZXhwKSkpKSkKCiAgKQoKCjs7IFJFUExBQ0VT IE9SSUdJTkFMIGluIGBwcC5lbCc6Cjs7Cjs7IDEuIFJlc3BlY3QgYHBwLW1heC10b29sdGlwLXNp emUnLgo7OyAyLiBVc2Ugbm8gYGVtYWNzLWxpc3AtbW9kZS1ob29rJyBvciBgY2hhbmdlLW1ham9y LW1vZGUtaG9vaycuCjs7IDMuIENhbGwgYGZvbnQtbG9jay1mb250aWZ5LWJ1ZmZlcicuCjs7IDQu IFByb3ZpZGUgdW5kbyB0byBidWZmZXIgT1VULUJVRkZFUi1OQU1FLgo7Owo7OzsjIyNhdXRvbG9h ZAooZGVmdW4gcHAtZGlzcGxheS1leHByZXNzaW9uIChleHByZXNzaW9uIG91dC1idWZmZXItbmFt ZSkKICAiUHJldHRpZnkgYW5kIHNob3cgRVhQUkVTU0lPTiwgcmVzcGVjdGluZyBvcHRpb24gYHBw LW1heC10b29sdGlwLXNpemUnLgpJZiBgcHAtbWF4LXRvb2x0aXAtc2l6ZScgaXMgbm9uLWBuaWwn IHRoZW4gc2hvdyBpdCB3aXRoIGEgdG9vbHRpcC4KRWxzZSwgaWYgdGhlcmUgaXMgcm9vbSB0aGVu IHNob3cgaXQgaW4gdGhlIGVjaG8tYXJlYS4KRWxzZSBzaG93IGl0IGluIGJ1ZmZlciBPVVQtQlVG RkVSLU5BTUUuIgogIChsZXQqICgodXNlLXRvb2x0aXAgIChhbmQgKGJvdW5kcCAncHAtbWF4LXRv b2x0aXAtc2l6ZSkgIChlcSBwcC1tYXgtdG9vbHRpcC1zaXplIHQpKSkgOyBFbWFjcyAyNCsKICAg ICAgICAgKHNleHAtc2l6ZSAgICAoYW5kIChmYm91bmRwICdwcC1zaG93LXRvb2x0aXApIDsgRW1h Y3MgMjQrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IHVzZS10b29sdGlwKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHAtbWF4LXRvb2x0aXAtc2l6ZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHBwLWV4cHJlc3Npb24tc2l6ZSBleHByZXNzaW9uIG91dC1idWZmZXIt bmFtZSkpKQogICAgICAgICAodXNlLXRvb2x0aXAgIChvciB1c2UtdG9vbHRpcCAgKGFuZCBzZXhw LXNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDw9IChj YXIgc2V4cC1zaXplKSAoY2FyIHBwLW1heC10b29sdGlwLXNpemUpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gKGNkciBzZXhwLXNpemUpIChjZHIgcHAt bWF4LXRvb2x0aXAtc2l6ZSkpKSkpKQogICAgKGlmIChhbmQgdXNlLXRvb2x0aXAgIChzYXZlLWV4 Y3Vyc2lvbiAocG9zbi1hdC1wb2ludCkpKSA7IEVuc3VyZSB0aGF0IHBvaW50IGlzIG9uLXNjcmVl biBub3cuCiAgICAgICAgKHByb2duIChwcC1zaG93LXRvb2x0aXAgZXhwcmVzc2lvbikgIChtZXNz YWdlIG5pbCkpCiAgICAgIChsZXQqICgob2xkLXNob3ctZnVuY3Rpb24gIHRlbXAtYnVmZmVyLXNo b3ctZnVuY3Rpb24pCiAgICAgICAgICAgICAodGVtcC1idWZmZXItc2hvdy1mdW5jdGlvbgogICAg ICAgICAgICAgIGAobGFtYmRhIChidWYpCiAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1 ZmZlciBidWYKICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAg ICAgICAgICAgICAgKGVuZC1vZi1saW5lIDEpCiAgICAgICAgICAgICAgICAgIChpZiAob3IgKDwg KDErIChwb2ludCkpIChwb2ludC1tYXgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICg+PSAo LSAocG9pbnQpIChwb2ludC1taW4pKSAoZnJhbWUtd2lkdGgpKSkKICAgICAgICAgICAgICAgICAg ICAgIChsZXQgKCh0ZW1wLWJ1ZmZlci1zaG93LWZ1bmN0aW9uICAnLG9sZC1zaG93LWZ1bmN0aW9u KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZC1zZWxlY3RlZCAgICAgICAgICAgICAg IChzZWxlY3RlZC13aW5kb3cpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdyAg ICAgICAgICAgICAgICAgICAgIChkaXNwbGF5LWJ1ZmZlciBidWYpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkgOyBFeHBlY3RlZCBieSBzb21lIGhvb2tz IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1mcmFtZS12aXNpYmxlICh3aW5kb3ct ZnJhbWUgd2luZG93KSkKICAgICAgICAgICAgICAgICAgICAgICAgKHVud2luZC1wcm90ZWN0CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2duIChzZWxlY3Qtd2luZG93IHdpbmRvdykg IChydW4taG9va3MgJ3RlbXAtYnVmZmVyLXNob3ctaG9vaykpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKHdoZW4gKHdpbmRvdy1saXZlLXAgb2xkLXNlbGVjdGVkKSAoc2VsZWN0LXdpbmRvdyBv bGQtc2VsZWN0ZWQpKQogICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJFdmFsdWF0 aW5nLi4uZG9uZS4gIFNlZSBidWZmZXIgYCVzJy4iICcsb3V0LWJ1ZmZlci1uYW1lKSkpCiAgICAg ICAgICAgICAgICAgICAgKG1lc3NhZ2UgIiVzIiAoYnVmZmVyLXN1YnN0cmluZyAocG9pbnQtbWlu KSAocG9pbnQpKSkpKSkpKQogICAgICAgICh3aXRoLW91dHB1dC10by10ZW1wLWJ1ZmZlciBvdXQt YnVmZmVyLW5hbWUKICAgICAgICAgIChwcCBleHByZXNzaW9uKQogICAgICAgICAgKHdpdGgtY3Vy cmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CiAgICAgICAgICAgIChzZXRxIGJ1ZmZlci1yZWFk LW9ubHkgIG5pbCkKICAgICAgICAgICAgKGJ1ZmZlci1lbmFibGUtdW5kbykKICAgICAgICAgICAg OzsgQXZvaWQgYGxldCctYmluZGluZyBiZWNhdXNlIGBjaGFuZ2UtbWFqb3ItbW9kZS1ob29rJyBp cyBsb2NhbC4gIElPVywgYXZvaWQgcnVudGltZQogICAgICAgICAgICA7OyBtZXNzYWdlOiAiTWFr aW5nIGNoYW5nZS1tYWpvci1tb2RlLWhvb2sgYnVmZmVyLWxvY2FsIHdoaWxlIGxvY2FsbHkgbGV0 LWJvdW5kISIKICAgICAgICAgICAgOzsgU3VnZ2VzdGlvbiBmcm9tIFN0ZWZhbiBNLjogU2V0IHRo ZXNlIGhvb2tzIGluc3RlYWQgb2YgYmluZGluZywgYmVjYXVzZSB0aGV5IGFyZSBub3QKICAgICAg ICAgICAgOzsgcGVybWFuZW50LWxvY2FsLiAgVGhleSBhcmUgZW1wdGllZCBhbmQgcmVwb3B1bGF0 ZWQgYXMgbmVlZGVkIGJ5IGBlbWFjcy1saXNwLW1vZGUnLgogICAgICAgICAgICAoc2V0IChtYWtl LWxvY2FsLXZhcmlhYmxlICdlbWFjcy1saXNwLW1vZGUtaG9vaykgbmlsKQogICAgICAgICAgICAo c2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdjaGFuZ2UtbWFqb3ItbW9kZS1ob29rKSBuaWwpCiAg ICAgICAgICAgIChlbWFjcy1saXNwLW1vZGUpCiAgICAgICAgICAgIChzZXQgKG1ha2UtbG9jYWwt dmFyaWFibGUgJ2ZvbnQtbG9jay12ZXJib3NlKSBuaWwpCiAgICAgICAgICAgIChmb250LWxvY2st Zm9udGlmeS1idWZmZXIpKSkpKSkpCgo7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKCihwcm92aWRlICdwcCsp Cgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7OyBwcCsuZWwgZW5kcyBoZXJlCg== --_002_SJ0PR10MB54887663470DCDA0A8EC7627F3219SJ0PR10MB5488namp_-- From unknown Sun Jun 15 08:48:34 2025 X-Loop: help-debbugs@gnu.org Subject: bug#53592: 26.3; Bind `M-:' to `pp-eval-expression' and enhance output References: In-Reply-To: Resent-From: ndame Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 28 Jan 2022 11:06:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 53592 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: "53592@debbugs.gnu.org" <53592@debbugs.gnu.org> Reply-To: ndame Received: via spool by 53592-submit@debbugs.gnu.org id=B53592.164336790718196 (code B ref 53592); Fri, 28 Jan 2022 11:06:01 +0000 Received: (at 53592) by debbugs.gnu.org; 28 Jan 2022 11:05:07 +0000 Received: from localhost ([127.0.0.1]:57593 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nDP3y-0004jQ-O0 for submit@debbugs.gnu.org; Fri, 28 Jan 2022 06:05:06 -0500 Received: from mail-40141.protonmail.ch ([185.70.40.141]:15221) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nDP3v-0004in-Oa for 53592@debbugs.gnu.org; Fri, 28 Jan 2022 06:05:04 -0500 Date: Fri, 28 Jan 2022 11:04:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail2; t=1643367896; bh=zlP4xzgN2eB/MV1QQnE0VCEfQ8tuetFNVV41ihuSwVo=; h=Date:To:From:Reply-To:Subject:Message-ID:From:To:Cc; b=daQbvP8EWwgMA2LI8l8kzI5lsNzxQh2j6e1Ktr+az3hqaGq/fh1x7VUpRoXQ/ERdd LVd/Ua1suPOI22/zbK50DlZiJAFxhUkTxC0SmCOmF7x2NIZXWIFel6w5ZMocc1AKAH 1hyqjuoyy9GGx55qRK2EGCGoL1OfiXbYDpzEN8QZPkvG+SnBPHrzbPA1jstrFPcaWR y4PC92sc3D0qEgTWqwETgejNayH5ngBVN5oKU3nB+OndBl4DtivAlzB4nXrsl29wKf HyABQ1oNeYc7XON+dIU6gQtUYeXPLhnAyaiVZqbUHFZM3SLKLpn96PINQNcmfxWCmF Bchzt8R+tAxXg== From: ndame Message-ID: <843GBKK7U8nLOyvmVsareTv_tf9JJgAGPfvgdFUOscxwE2hNQksPMyAmgVQd60kSay7BK0q3ejhlOGee6Tf3mtsVl9zuJiqTsHQqlLomGkY=@protonmail.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="b1_j4Tk4cQ1FvROn7yAmKEd5aUeopGodScTFjNbC3M" X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch X-Spam-Score: 0.0 (/) 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_j4Tk4cQ1FvROn7yAmKEd5aUeopGodScTFjNbC3M Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 WW91IHB1dCB0b28gbWFueSB0aGluZ3MgaW4gdGhlIGJ1ZyBJTU8uIEl0J3MgYSBsb3QuIFdlIHRh bGtlZCBhYm91dCBiZXR0ZXIgZXZhbCBvdXRwdXQsCnNvIHRoaXMgYnVnIHNob3VsZCBiZSBhYm91 dCB0aGF0LiBUaGUgb3V0cHV0LgoKQ2hhbmdpbmcgdGhlIG91dHB1dCBjYW4gYmUgZG9uZSBpbiBw YXJhbGxlbCB0byBpbXBsZW1lbnRpbmcgc3ludGF4IGhpZ2hsaWdodCB3aGljaAp0aGUgb3RoZXIg YnVnIGlzIGFib3V0LiBNaXhpbmcgcmViaW5kaW5nIE0tOiBoZXJlIGlzIGp1c3QgY29uZnVzaW5n IHRoaW5ncy4KCkxpa2Ugd2hlbiB5b3UgY2hhbmdlIGEgc3lzdGVtIHlvdSBkb24ndCBzdWJtaXQg YSBzaW5nbGUgaHVnZSBwYXRjaCB3aGljaCBjaGFuZ2VzCm1hbnkgdGhpbmdzIGF0IG9uY2UsIGJl Y2F1c2UgaXQncyBoYXJkZXIgdG8gc2VlIHRocm91Z2guIFlvdSBzdWJtaXQgbXVsdGlwbGUgc21h bGxlcgpwYXRjaGVzIHdoaWNoIGFyZSBlYXNpZXIgdG8gZGlnZXN0LiBTaW1pbGFybHksIGJ1Z3Mg c2hvdWxkIGhhdmUgYSBuYXJyb3dlciBmb2N1cyBhbmQKd2hlbiB0aGF0IGlzIGRvbmUsIHRoZW4g dGhlcmUgY2FuIGJlIGEgbmV4dCBidWcgYWJvdXQgYSBzb21lIG90aGVyIGNoYW5nZSwgZXRjLgoK SnVzdCBteSAyIGNlbnRzLi4= --b1_j4Tk4cQ1FvROn7yAmKEd5aUeopGodScTFjNbC3M Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij5Zb3UgcHV0 IHRvbyBtYW55IHRoaW5ncyBpbiB0aGUgYnVnIElNTy4gSXQncyBhIGxvdC4gV2UgdGFsa2VkIGFi b3V0IGJldHRlciBldmFsIG91dHB1dCw8YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6 IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij5zbyB0aGlzIGJ1ZyBzaG91bGQgYmUgYWJvdXQgdGhh dC4gVGhlIG91dHB1dC48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBm b250LXNpemU6IDE0cHg7Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFs OyBmb250LXNpemU6IDE0cHg7Ij5DaGFuZ2luZyB0aGUgb3V0cHV0IGNhbiBiZSBkb25lIGluIHBh cmFsbGVsIHRvIGltcGxlbWVudGluZyBzeW50YXggaGlnaGxpZ2h0IHdoaWNoPGJyPjwvZGl2Pjxk aXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9udC1zaXplOiAxNHB4OyI+dGhlIG90aGVy IGJ1ZyBpcyBhYm91dC4gTWl4aW5nIHJlYmluZGluZyBNLTogaGVyZSBpcyBqdXN0IGNvbmZ1c2lu ZyB0aGluZ3MuPGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9udC1z aXplOiAxNHB4OyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9u dC1zaXplOiAxNHB4OyI+TGlrZSB3aGVuIHlvdSBjaGFuZ2UgYSBzeXN0ZW0geW91IGRvbid0IHN1 Ym1pdCBhIHNpbmdsZSBodWdlIHBhdGNoIHdoaWNoIGNoYW5nZXM8YnI+PC9kaXY+PGRpdiBzdHls ZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij5tYW55IHRoaW5ncyBhdCBv bmNlLCBiZWNhdXNlIGl0J3MgaGFyZGVyIHRvIHNlZSB0aHJvdWdoLiBZb3Ugc3VibWl0IG11bHRp cGxlIHNtYWxsZXIgPGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9u dC1zaXplOiAxNHB4OyI+cGF0Y2hlcyB3aGljaCZuYnNwOyBhcmUgZWFzaWVyIHRvIGRpZ2VzdC4g U2ltaWxhcmx5LCBidWdzIHNob3VsZCBoYXZlIGEgbmFycm93ZXIgZm9jdXMgYW5kPGJyPjwvZGl2 PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9udC1zaXplOiAxNHB4OyI+d2hlbiB0 aGF0IGlzIGRvbmUsIHRoZW4gdGhlcmUgY2FuIGJlIGEgbmV4dCBidWcgYWJvdXQgYSBzb21lIG90 aGVyIGNoYW5nZSwgZXRjLjxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTogYXJpYWw7 IGZvbnQtc2l6ZTogMTRweDsiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTogYXJp YWw7IGZvbnQtc2l6ZTogMTRweDsiPkp1c3QgbXkgMiBjZW50cy4uPGJyPjwvZGl2PjxkaXYgc3R5 bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9udC1zaXplOiAxNHB4OyI+PGJyPjwvZGl2Pg== --b1_j4Tk4cQ1FvROn7yAmKEd5aUeopGodScTFjNbC3M--