From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Noah Peart Newsgroups: gmane.emacs.bugs Subject: bug#68054: [PATCH] Add tree-sitter indent rule for lexical decls in js/typescript Date: Thu, 2 May 2024 06:26:00 -0700 Message-ID: References: <797AC075-B0C8-4269-B8E3-A1F2C69FA955@gmail.com> <14DD6D3A-B9F5-4E5F-B85B-0A8DF6961723@gmail.com> <5fd5b131-962a-489d-a674-0e199cdfff25@gutov.dev> <49231C5D-E89E-4AA3-AB02-51340994EA20@gmail.com> <661fc11d-6da8-4fe5-a900-80ed1b41823a@gutov.dev> <3cf27c4d-d5ee-423c-a0d2-cfae297d36ae@gutov.dev> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000f2412a0617788bd3" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17471"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Yuan Fu , 68054@debbugs.gnu.org To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu May 02 15:26:47 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1s2WSV-0004H3-M9 for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 02 May 2024 15:26:47 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s2WSQ-0000Gs-IE; Thu, 02 May 2024 09:26:42 -0400 Original-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 1s2WSO-0000De-HZ for bug-gnu-emacs@gnu.org; Thu, 02 May 2024 09:26:40 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1s2WSO-0005aN-5w for bug-gnu-emacs@gnu.org; Thu, 02 May 2024 09:26:40 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1s2WSj-0000Sm-OZ for bug-gnu-emacs@gnu.org; Thu, 02 May 2024 09:27:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Noah Peart Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 02 May 2024 13:27:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 68054 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 68054-submit@debbugs.gnu.org id=B68054.17146564061771 (code B ref 68054); Thu, 02 May 2024 13:27:01 +0000 Original-Received: (at 68054) by debbugs.gnu.org; 2 May 2024 13:26:46 +0000 Original-Received: from localhost ([127.0.0.1]:43790 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s2WST-0000SV-7q for submit@debbugs.gnu.org; Thu, 02 May 2024 09:26:46 -0400 Original-Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]:59598) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s2WSO-0000SI-7y for 68054@debbugs.gnu.org; Thu, 02 May 2024 09:26:43 -0400 Original-Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-23d4a716ee7so1342954fac.2 for <68054@debbugs.gnu.org>; Thu, 02 May 2024 06:26:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714656372; x=1715261172; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=FJjoe4KYRUHZdIUokplWhYVa4229FKnF2E90oHuf3Lg=; b=MUeu4qxjRWajF5+LqL/fzvEaKTeb6e+dWrvoHR3R0tBZuOBm4R3pH1G1IKDa9xmtRL mVG9ROPDseiRy6mCApvXivgsdRZ7qkraLH0bEKcs5swUkvqVJ2YKnyBNg89vJfV38M6S V33MrL4Je8Iyc0q0p+0vUb5ICT/N42O5hUzIKArmMzPH/L4/HvnVArVR4fxR2JyG7lNI taHqb94IBxI+YswUMW2RldsKk5/4aXzT7idcu3ZkiYZT+rr6Dmf2/MEAa+gDwcqc4ODl CSBEcha3QlHbAGiOd2INsdDARlRo26v8BZeZv84BBWaox7L6SZRJyiXMXHC4tuRvbwIw MR9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714656372; x=1715261172; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FJjoe4KYRUHZdIUokplWhYVa4229FKnF2E90oHuf3Lg=; b=W8e9NAIbtg+YSy6xMi0LMY51lZMirvaaMYGJsHDjr/S/Vx3zxtOerAFC+uroi8tp+b qGaYO/BUNVpfgml45Pofg61ZzEEz30GZrkrwxcbrbniViABrSneG60bFEmR5Q1Llw8gq QoqsHPIBb0ecblyWe/nMU5jcwW4Kptko4PZoyO2rhzf+P2tst7Gs2VJZArKiItY4UCz3 tM0/LGHrz8CaK/7d6y0W0IT3uyy6GGBmNVCMjFBx+PHT8DPFfzXO4wWPPi2Q65owmTGQ uYU1Sk+i5YdaRrbVafQEpcTghDIidK6JHQJeTQrHVu1b5le4R6QxeYffkdSyzc02S2Me 1THw== X-Forwarded-Encrypted: i=1; AJvYcCXxHJK14D7W3OahD//PDs4CfuajiTXxOclkLi9xbBohkGJOIyAxgiy83lnyzQJrQxgRqIhopobsOsgDQAnXZ0+BzeX7i1c= X-Gm-Message-State: AOJu0Yz2G2UuFw12t3X4DMFF7Zae5Zk8d94ZceeQJHsS4LA4EvTQxGxj z1MBYa0jHe4ijnQpsQfKPOaNryzhQMGlTpdGGITvmoCYNaioai6pXdl1jpxzUGu1Aw/OrCQqC3I iwszzVnk/AlLoRC4JKnvs0Nc71j4= X-Google-Smtp-Source: AGHT+IG9ktUtZQYgsSagjC4UtNvOjsXqU2KupFkar1N7zcLTm26/vZuXZakLxOCIM5CNahGFR5ch+r6DlC8i2mANcus= X-Received: by 2002:a05:6870:f684:b0:221:9157:b587 with SMTP id el4-20020a056870f68400b002219157b587mr2716469oab.35.1714656371667; Thu, 02 May 2024 06:26:11 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:284321 Archived-At: --000000000000f2412a0617788bd3 Content-Type: multipart/alternative; boundary="000000000000f241290617788bd1" --000000000000f241290617788bd1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Ok, here is an updated patch for option 3. The indentation looks like the examples you've provided - it's the same indentation as in js-mode for these cases. On Thu, Apr 25, 2024 at 6:06=E2=80=AFPM Dmitry Gutov wro= te: > On 26/04/2024 01:48, Noah Peart wrote: > > Ok, I can make a patch for option 3 (the same as js-mode) instead. It's > > implementation is the simplest also. Would that work? > > I'd be okay with it, yes, thank you. If only because it's good to have > similar defaults in both modes, and evolve them together until one is > deprecated. > > FTR, the option more in line with my previous explanation would be > option 3, I think. Rhere's no real need to implement it right now, I > guess, but for illustration: > > const a =3D > (x: string): string =3D> { > return x + x; > }, > bbb =3D > { > "x": 0 > }, > cccc =3D > 1, > ddddd =3D 0; > > const bbb =3D > { > "x": 0 > }, a =3D (x: string): string =3D> { > return x + x; > }, > bbb =3D { > "x": 0 > }, > cccc =3D 1, > ddddd =3D 0; > > js-mode also has by necessity the below exceptions: when the first > variable's value starts on the same line, and it's multiline (usually > that means that the same line ends with a {), then its indentation level > goes back to the statement, not to the "const" keyword: > > const a =3D (x: string): string =3D> { > return x + x; > } > > var bbb =3D { > "x": 0 > } > > This is basically to support the non-multivar declarations better. > js-ts-mode now has the exact same indentation; these cases might come up > when you change how the first two cases indent, however. > --000000000000f241290617788bd1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Ok, here is an updated patch for option 3.=C2=A0 The inden= tation looks like the examples
you've provided - it's the s= ame indentation as in js-mode for these cases.

On Thu, = Apr 25, 2024 at 6:06=E2=80=AFPM Dmitry Gutov <dmitry@gutov.dev> wrote:
On 26/04/2024 01:48, Noah Peart wrote:
> Ok, I can make a patch for option 3 (the same as js-mode) instead. It&= #39;s
> implementation is the simplest also.=C2=A0 Would that work?

I'd be okay with it, yes, thank you. If only because it's good to h= ave
similar defaults in both modes, and evolve them together until one is
deprecated.

FTR, the option more in line with my previous explanation would be
option 3, I think. Rhere's no real need to implement it right now, I guess, but for illustration:

const a =3D
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(x: string): string =3D> {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return x + x;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0},
=C2=A0 =C2=A0 =C2=A0 =C2=A0bbb =3D
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"x": 0
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0},
=C2=A0 =C2=A0 =C2=A0 =C2=A0cccc =3D
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A01,
=C2=A0 =C2=A0 =C2=A0 =C2=A0ddddd =3D 0;

const bbb =3D
=C2=A0 =C2=A0 =C2=A0 =C2=A0{
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"x": 0
=C2=A0 =C2=A0 =C2=A0 =C2=A0}, a =3D (x: string): string =3D> {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return x + x;
=C2=A0 =C2=A0 =C2=A0 =C2=A0},
=C2=A0 =C2=A0 =C2=A0 =C2=A0bbb =3D {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0"x": 0
=C2=A0 =C2=A0 =C2=A0 =C2=A0},
=C2=A0 =C2=A0 =C2=A0 =C2=A0cccc =3D 1,
=C2=A0 =C2=A0 =C2=A0 =C2=A0ddddd =3D 0;

js-mode also has by necessity the below exceptions: when the first
variable's value starts on the same line, and it's multiline (usual= ly
that means that the same line ends with a {), then its indentation level goes back to the statement, not to the "const" keyword:

const a =3D (x: string): string =3D> {
=C2=A0 =C2=A0return x + x;
}

var bbb =3D {
=C2=A0 =C2=A0"x": 0
}

This is basically to support the non-multivar declarations better.
js-ts-mode now has the exact same indentation; these cases might come up when you change how the first two cases indent, however.
--000000000000f241290617788bd1-- --000000000000f2412a0617788bd3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-typescript-ts-mode-indentation-for-multi-assignm.patch" Content-Disposition: attachment; filename="0001-Add-typescript-ts-mode-indentation-for-multi-assignm.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lvpa2qzp0 RnJvbSAxZTIzYjMzYTNiNGI5MzAzODZhOTMyZWU2MTc3ZWFmMWI2ZTZhOTZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIFBlYXJ0IDxub2FoLnYucGVhcnRAZ21haWwuY29tPgpE YXRlOiBGcmksIDE5IEFwciAyMDI0IDAxOjQ2OjUwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk IHR5cGVzY3JpcHQtdHMtbW9kZSBpbmRlbnRhdGlvbiBmb3IgbXVsdGktYXNzaWdubWVudCBkZWNs cwoKKiBsaXNwL3Byb2dtb2Rlcy90eXBlc2NyaXB0LXRzLW1vZGUuZWwKKHR5cGVzY3JpcHQtdHMt bW9kZS0taW5kZW50LXJ1bGVzKTogQWRkIGluZGVudGF0aW9uIHJ1bGVzIGZvcgpsZXhpY2FsIGFu ZCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgd2l0aCBtdWx0aXBsZSBhc3NpZ25tZW50cy4KKiB0ZXN0 L2xpc3AvcHJvZ21vZGVzL3R5cGVzY3JpcHQtdHMtbW9kZS1yZXNvdXJjZXMvaW5kZW50LmVydHM6 CkFkZCBpbmRlbnQgdGVzdCBmb3IgdmFyaWFibGUgZGVjbGFyYXRpb25zLgotLS0KIGxpc3AvcHJv Z21vZGVzL3R5cGVzY3JpcHQtdHMtbW9kZS5lbCAgICAgICAgICB8IDE0ICsrKysrKysrLQogLi4u L3R5cGVzY3JpcHQtdHMtbW9kZS1yZXNvdXJjZXMvaW5kZW50LmVydHMgIHwgMzEgKysrKysrKysr KysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvdHlwZXNjcmlwdC10cy1tb2RlLmVsIGIv bGlzcC9wcm9nbW9kZXMvdHlwZXNjcmlwdC10cy1tb2RlLmVsCmluZGV4IGFiMWQ3NmFiMjBlLi5l ZDYwODE5Mzg4ZiAxMDA2NDQKLS0tIGEvbGlzcC9wcm9nbW9kZXMvdHlwZXNjcmlwdC10cy1tb2Rl LmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL3R5cGVzY3JpcHQtdHMtbW9kZS5lbApAQCAtOTEsNiAr OTEsMTcgQEAgdHN4LXRzLW1vZGUtLWluZGVudC1jb21wYXRpYmlsaXR5LWI4OTM0MjYKICAgICAg YCgoKG1hdGNoICI8IiAianN4X3RleHQiKSBwYXJlbnQgMCkKICAgICAgICAoKHBhcmVudC1pcyAi anN4X3RleHQiKSBwYXJlbnQgdHlwZXNjcmlwdC10cy1tb2RlLWluZGVudC1vZmZzZXQpKSkpKQog CisoZGVmdW4gdHlwZXNjcmlwdC10cy1tb2RlLS1hbmNob3ItZGVjbCAoX24gcGFyZW50ICZyZXN0 IF8pCisgICJSZXR1cm4gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBkZWNsYXJhdGlvbiBrZXl3b3Jk IGJlZm9yZSBQQVJFTlQuCisKK1RoaXMgYW5jaG9yIGFsbG93cyBhbGlnbmluZyB2YXJpYWJsZV9k ZWNsYXJhdG9ycyBpbiB2YXJpYWJsZSBhbmQgbGV4aWNhbAorZGVjbGFyYXRpb25zLCBhY2NvdW50 aW5nIGZvciB0aGUgbGVuZ3RoIG9mIGtleXdvcmQgKHZhciwgbGV0LCBvciBjb25zdCkuIgorICAo bGV0KiAoKGRlY2xhcmF0aW9uICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAg ICAgICAgICBwYXJlbnQgKHJ4IChvciAidmFyaWFibGUiICJsZXhpY2FsIikgIl9kZWNsYXJhdGlv biIpIHQpKQorICAgICAgICAgKGRlY2wgKHRyZWVzaXQtbm9kZS1jaGlsZCBkZWNsYXJhdGlvbiAw KSkpCisgICAgKCsgKHRyZWVzaXQtbm9kZS1zdGFydCBkZWNsYXJhdGlvbikKKyAgICAgICAoLSAo dHJlZXNpdC1ub2RlLWVuZCBkZWNsKSAodHJlZXNpdC1ub2RlLXN0YXJ0IGRlY2wpKSkpKQorCiAo ZGVmdW4gdHlwZXNjcmlwdC10cy1tb2RlLS1pbmRlbnQtcnVsZXMgKGxhbmd1YWdlKQogICAiUnVs ZXMgdXNlZCBmb3IgaW5kZW50YXRpb24uCiBBcmd1bWVudCBMQU5HVUFHRSBpcyBlaXRoZXIgYHR5 cGVzY3JpcHQnIG9yIGB0c3gnLiIKQEAgLTExMyw3ICsxMjQsOCBAQCB0eXBlc2NyaXB0LXRzLW1v ZGUtLWluZGVudC1ydWxlcwogICAgICAoKHBhcmVudC1pcyAic3dpdGNoX2Nhc2UiKSBwYXJlbnQt Ym9sIHR5cGVzY3JpcHQtdHMtbW9kZS1pbmRlbnQtb2Zmc2V0KQogICAgICAoKHBhcmVudC1pcyAi c3dpdGNoX2RlZmF1bHQiKSBwYXJlbnQtYm9sIHR5cGVzY3JpcHQtdHMtbW9kZS1pbmRlbnQtb2Zm c2V0KQogICAgICAoKHBhcmVudC1pcyAidHlwZV9hcmd1bWVudHMiKSBwYXJlbnQtYm9sIHR5cGVz Y3JpcHQtdHMtbW9kZS1pbmRlbnQtb2Zmc2V0KQotICAgICAoKHBhcmVudC1pcyAidmFyaWFibGVf ZGVjbGFyYXRvciIpIHBhcmVudC1ib2wgdHlwZXNjcmlwdC10cy1tb2RlLWluZGVudC1vZmZzZXQp CisgICAgICgocGFyZW50LWlzICwocnggKG9yICJ2YXJpYWJsZSIgImxleGljYWwiKSAiXyIgKG9y ICJkZWNsYXJhdGlvbiIgImRlY2xhcmF0b3IiKSkpCisgICAgICB0eXBlc2NyaXB0LXRzLW1vZGUt LWFuY2hvci1kZWNsIDEpCiAgICAgICgocGFyZW50LWlzICJhcmd1bWVudHMiKSBwYXJlbnQtYm9s IHR5cGVzY3JpcHQtdHMtbW9kZS1pbmRlbnQtb2Zmc2V0KQogICAgICAoKHBhcmVudC1pcyAiYXJy YXkiKSBwYXJlbnQtYm9sIHR5cGVzY3JpcHQtdHMtbW9kZS1pbmRlbnQtb2Zmc2V0KQogICAgICAo KHBhcmVudC1pcyAiZm9ybWFsX3BhcmFtZXRlcnMiKSBwYXJlbnQtYm9sIHR5cGVzY3JpcHQtdHMt bW9kZS1pbmRlbnQtb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL3Byb2dtb2Rlcy90eXBl c2NyaXB0LXRzLW1vZGUtcmVzb3VyY2VzL2luZGVudC5lcnRzIGIvdGVzdC9saXNwL3Byb2dtb2Rl cy90eXBlc2NyaXB0LXRzLW1vZGUtcmVzb3VyY2VzL2luZGVudC5lcnRzCmluZGV4IGJlYzk2YWQ4 MmUwLi44NzczODI5NTNjMSAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL3Byb2dtb2Rlcy90eXBlc2Ny aXB0LXRzLW1vZGUtcmVzb3VyY2VzL2luZGVudC5lcnRzCisrKyBiL3Rlc3QvbGlzcC9wcm9nbW9k ZXMvdHlwZXNjcmlwdC10cy1tb2RlLXJlc291cmNlcy9pbmRlbnQuZXJ0cwpAQCAtNjIsNiArNjIs MzcgQEAgY29uc3QgZm9vID0gKHg6IHN0cmluZykgPT4gewogfTsKID0tPS09CiAKK05hbWU6IExl eGljYWwgYW5kIHZhcmlhYmxlIGRlY2xhcmF0aW9ucworCis9LT0KK2NvbnN0IGZvbyA9ICgpID0+ IHsKKyAgbGV0IHggPSAxLAorICAgICAgeXl5eTogeworICAgICAgICBbazogc3RyaW5nIHwgbnVt YmVyXTogc3RyaW5nLAorICAgICAgfSA9IHsKKyAgICAgICAgImZvbyI6ICJmb28iLAorICAgICAg ICAiYmFyIjogImJhciIsCisgICAgICB9OworICB2YXIgb2JhciA9IDEsCisgICAgICBmbzogeyBb eDogYW55XTogYW55IH0gPSB7CisgICAgICAgICJhIjogMSwKKyAgICAgICAgImIiOiAyLAorICAg ICAgfTsKKyAgY29uc3QgY2NjYyA9IDEsCisgICAgICAgIGJiYiA9IHsKKyAgICAgICAgICAieCI6 IDAKKyAgICAgICAgfSwKKyAgICAgICAgZGRkZGQgPSAwOworICAvLyBGaXJzdCBkZWNscyB3aXRo IHZhbHVlIHN0YXJ0aW5nIG9uIHNhbWUgbGluZQorICBjb25zdCBhID0gKHg6IHN0cmluZyk6IHN0 cmluZyA9PiB7CisgICAgcmV0dXJuIHggKyB4OworICB9OworICB2YXIgYmJiID0geworICAgICJ4 IjogMAorICB9OworfTsKKz0tPS09CisKIENvZGU6CiAgIChsYW1iZGEgKCkKICAgICAoc2V0cSBp bmRlbnQtdGFicy1tb2RlIG5pbCkKLS0gCjIuMzQuMQoK --000000000000f2412a0617788bd3--