From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?Jo=C3=A3o_Paulo_Labegalini_de_Carvalho?= Newsgroups: gmane.emacs.devel Subject: Re: Initial fontification in sh-mode with tree-sittter Date: Wed, 2 Nov 2022 12:22:39 -0600 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000b462ae05ec80edae" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38785"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Nov 02 19:24:10 2022 Return-path: Envelope-to: ged-emacs-devel@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 1oqIPJ-0009rm-UI for ged-emacs-devel@m.gmane-mx.org; Wed, 02 Nov 2022 19:24:10 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oqION-0003YF-4D; Wed, 02 Nov 2022 14:23:11 -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 1oqIOH-0003TW-2w for emacs-devel@gnu.org; Wed, 02 Nov 2022 14:23:09 -0400 Original-Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oqIOC-00012g-KG for emacs-devel@gnu.org; Wed, 02 Nov 2022 14:23:03 -0400 Original-Received: by mail-ot1-x331.google.com with SMTP id cb2-20020a056830618200b00661b6e5dcd8so10733659otb.8 for ; Wed, 02 Nov 2022 11:22:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=eJyZtHNw5sZzqjwP8NSH3JRivWRMni6ThBwt7ptFKpQ=; b=UYZ92QbZO9iGK+ZVsv++oxYo5LAKLZRMT8rSKkTjrOndropFXVeIAdj7YqvsMLS0AT SeAq6OIk8pBGXINO+6daorf0p115/GefYTIBTEMVu/krDOEUVKgOtlwYs6IS/1ehxq5A a2FOLbgXKzci0/j71v+nDE1BJTiG/ox4sXfJX4TZYETSXg7jX0diBNv2hJBI6ghnlp0N 2zC9QrLSH0p75YWkNt1cPaVO+1kkGnEZ8EZHivMZnqLyhwCsvtRN1BIU6sHYMcfj0WVo 4BSUmOYUSGEHtZEmpYhrbLnFxw/Yf3OKBDWDSVdITABEOPOYMZ8HrwQAJZEIcaZj/Skj OEXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=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=eJyZtHNw5sZzqjwP8NSH3JRivWRMni6ThBwt7ptFKpQ=; b=A3uPZOxzNHMMXp8se/SEqf3ys4VLnHU304vijlgLNCQGSE5m+sAQv+9kkH9IfZorq/ wwl4UUlLMWQYBfjFMApFUOhzpdRnAwXQNsJgNn0l7EbA8ZdFB7Twvx9rmEJDqpFfQaIA h5ERwy+eBhBgPZPj/dJb0Oxqs4KMp1ma8LNLsibUcLq13D8ysU6md4X6TZm5NnrZSiSS skFLOCMZmsccrhCtjq4vhJN4MoMGpJwxo09i+poZV/31sKufJChU4L4S5trx6NXnjVGb CWPj01LUfJWrO5m+TQrnluPdEcqxSMi+O/e6cuY2GFOi8pcD+g2j9eADFx/S4fNx8p+G UR0w== X-Gm-Message-State: ACrzQf3UwbafEUS9iOppGZJ5lwqgImlljSg0dgUWyt6imA3gZzQPz/Sw /LoEOq1NrLjiO5gJMPVet4qnrFA8WnDw4LVjUSOav9Vh X-Google-Smtp-Source: AMsMyM4vkAN8pJ5EQ79Gp0+wyJdXHyl5CEnXvAY/W2gV8WkISgXTtoKEcFrU9VqlBaQgcpi/m9STFQ/EvHZ9Fh58Awg= X-Received: by 2002:a05:6830:4087:b0:66c:532b:53e9 with SMTP id x7-20020a056830408700b0066c532b53e9mr8909698ott.202.1667413371509; Wed, 02 Nov 2022 11:22:51 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::331; envelope-from=jaopaulolc@gmail.com; helo=mail-ot1-x331.google.com 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: "Emacs-devel" Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:299031 Archived-At: --000000000000b462ae05ec80edae Content-Type: multipart/alternative; boundary="000000000000b462ad05ec80edac" --000000000000b462ad05ec80edac Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Here is another version of the path. This has the queries separated into language related terms and groups them into lists of features. Looking forward to your feedback. Thanks. On Thu, Oct 27, 2022 at 4:01 PM Jo=C3=A3o Paulo Labegalini de Carvalho < jaopaulolc@gmail.com> wrote: > Hi everyone, > > Please find the patch for enabling fontification in sh-mode (currently > only for bash) using tree-sitter. > > I welcome all comments and suggestions to improve the patch. > > I noticed a weird behavior with heredocs. Take the code below: > > echo < This is a here document. > EOF > echo "Done." > > My patch correctly fontifies the code above, but if I kill the whole line > with the "This is a here document." text, then the sh-heredoc face bleeds > out and all the subsequent comments get fontified as part of the heredoc. > > A similar behavior happens if tree-sitter is not enabled, if the heredoc > is empty then all subsequent commands are fontified as heredoc. However, = as > soon as anything is added to the heredoc, then everything goes back to th= e > correct fontification. > > Such "refreshing" does not happen with tree-sitter enabled, but if I > execute M-x sh-mode then the buffer gets refreshed and everything looks > good. > > What am I doing wrong? > > -- > Jo=C3=A3o Paulo L. de Carvalho > Ph.D Computer Science | IC-UNICAMP | Campinas , SP - Brazil > Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - > Canada > joao.carvalho@ic.unicamp.br > joao.carvalho@ualberta.ca > --=20 Jo=C3=A3o Paulo L. de Carvalho Ph.D Computer Science | IC-UNICAMP | Campinas , SP - Brazil Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - Canad= a joao.carvalho@ic.unicamp.br joao.carvalho@ualberta.ca --000000000000b462ad05ec80edac Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Here is another version=C2=A0of the path. This has=C2=A0th= e queries separated into language related terms and groups them into lists = of features.

Looking forward to=C2=A0your feedback.

Thanks.
On= Thu, Oct 27, 2022 at 4:01 PM Jo=C3=A3o Paulo Labegalini de Carvalho <jaopaulolc@gmail.com> wrote:
= Hi everyone,

Please find the patch for enabling fontific= ation in sh-mode (currently only=C2=A0for bash) using tree-sitter.

I= welcome all comments and suggestions to improve the patch.

I notice= d a weird behavior with heredocs. Take the code below:

echo <<EOF
This is a here document.
E= OF
echo "Done."

My patch correctly=C2=A0fontifies the code above, but if I kill the = whole line with the "This is a here document." text, then the sh-= heredoc face bleeds out and all the subsequent comments get fontified as pa= rt of the heredoc.

A similar behavior happens if tree-sitter is not = enabled, if the heredoc is empty then all subsequent commands are fontified= as heredoc. However, as soon as anything is added to the heredoc, then eve= rything goes back to the correct fontification.=C2=A0

Such "ref= reshing" does not happen with tree-sitter enabled, but if I execute M-x sh-mode
then the buffer gets refreshed an= d everything looks good.

What am I doing wrong?

--
Jo=C3=A3o Paulo L. de Carvalho
Ph.D Computer Science | =C2=A0IC-UNIC= AMP | Campinas , SP - Brazil
Postdoctoral Research Fellow | University o= f Alberta | Edmonton, AB - Canada
=


--
Jo= =C3=A3o Paulo L. de Carvalho
Ph.D Computer Science | =C2=A0IC-UNICAMP | = Campinas , SP - Brazil
Postdoctoral Research Fellow | University of Albe= rta | Edmonton, AB - Canada
--000000000000b462ad05ec80edac-- --000000000000b462ae05ec80edae Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Initial-fontification-in-sh-mode-with-tree-sitter.patch" Content-Disposition: attachment; filename="0001-Initial-fontification-in-sh-mode-with-tree-sitter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l9zyv0160 RnJvbSBhMzA5MDM3NThjMmM3NzZmZDdlMWYwM2U4ZjcxYTVhMTJiYzAwODYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm89QzM9QTNvPTIwUD0yRT0yMEw9MkU9MjBk ZT0yMENhcnZhbGhvPz0KIDxqYW9wYXVsb2xjQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyNyBPY3Qg MjAyMiAxNTo0NTo1NiAtMDYwMApTdWJqZWN0OiBbUEFUQ0hdIEluaXRpYWwgZm9udGlmaWNhdGlv biBpbiBzaC1tb2RlIHdpdGggdHJlZS1zaXR0ZXIKCi0tLQogbGlzcC9wcm9nbW9kZXMvc2gtc2Ny aXB0LmVsIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogMSBmaWxl IGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQuZWwgYi9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQu ZWwKaW5kZXggNTU4YjYyYjIwYS4uZjE3NGNhNzcxNCAxMDA2NDQKLS0tIGEvbGlzcC9wcm9nbW9k ZXMvc2gtc2NyaXB0LmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlwdC5lbApAQCAtMTQ4 LDYgKzE0OCw3IEBACiAgIChyZXF1aXJlICdsZXQtYWxpc3QpCiAgIChyZXF1aXJlICdzdWJyLXgp KQogKHJlcXVpcmUgJ2V4ZWN1dGFibGUpCisocmVxdWlyZSAndHJlZXNpdCkKIAogKGF1dG9sb2Fk ICdjb21pbnQtY29tcGxldGlvbi1hdC1wb2ludCAiY29taW50IikKIChhdXRvbG9hZCAnY29taW50 LWZpbGVuYW1lLWNvbXBsZXRpb24gImNvbWludCIpCkBAIC0xNTM0LDEzICsxNTM1LDYgQEAgc2gt bW9kZQogICA7OyB3ZSBjYW4ndCBsb29rIGlmIHByZXZpb3VzIGxpbmUgZW5kZWQgd2l0aCBgXCcK ICAgKHNldHEtbG9jYWwgY29taW50LXByb21wdC1yZWdleHAgIl5bIFx0XSoiKQogICAoc2V0cS1s b2NhbCBpbWVudS1jYXNlLWZvbGQtc2VhcmNoIG5pbCkKLSAgKHNldHEgZm9udC1sb2NrLWRlZmF1 bHRzCi0JYCgoc2gtZm9udC1sb2NrLWtleXdvcmRzCi0JICAgc2gtZm9udC1sb2NrLWtleXdvcmRz LTEgc2gtZm9udC1sb2NrLWtleXdvcmRzLTIpCi0JICBuaWwgbmlsCi0JICAoKD8vIC4gInciKSAo P34gLiAidyIpICg/LiAuICJ3IikgKD8tIC4gInciKSAoP18gLiAidyIpKSBuaWwKLQkgIChmb250 LWxvY2stc3ludGFjdGljLWZhY2UtZnVuY3Rpb24KLQkgICAuICwjJ3NoLWZvbnQtbG9jay1zeW50 YWN0aWMtZmFjZS1mdW5jdGlvbikpKQogICAoc2V0cS1sb2NhbCBzeW50YXgtcHJvcGVydGl6ZS1m dW5jdGlvbiAjJ3NoLXN5bnRheC1wcm9wZXJ0aXplLWZ1bmN0aW9uKQogICAoYWRkLWhvb2sgJ3N5 bnRheC1wcm9wZXJ0aXplLWV4dGVuZC1yZWdpb24tZnVuY3Rpb25zCiAgICAgICAgICAgICAjJ3N5 bnRheC1wcm9wZXJ0aXplLW11bHRpbGluZSAnYXBwZW5kICdsb2NhbCkKQEAgLTE1ODcsNyArMTU4 MSwyOCBAQCBzaC1tb2RlCiAgICBuaWwgbmlsKQogICAoYWRkLWhvb2sgJ2ZseW1ha2UtZGlhZ25v c3RpYy1mdW5jdGlvbnMgIydzaC1zaGVsbGNoZWNrLWZseW1ha2UgbmlsIHQpCiAgIChhZGQtaG9v ayAnaGFjay1sb2NhbC12YXJpYWJsZXMtaG9vawotICAgICMnc2gtYWZ0ZXItaGFjay1sb2NhbC12 YXJpYWJsZXMgbmlsIHQpKQorICAgICMnc2gtYWZ0ZXItaGFjay1sb2NhbC12YXJpYWJsZXMgbmls IHQpCisKKyAgKGNvbmQKKyAgIDs7IFRyZWUtc2l0dGVyCisgICAoKHRyZWVzaXQtcmVhZHktcCAn c2gtbW9kZSBzaC1zaGVsbCkKKyAgICAoc2V0cS1sb2NhbCBmb250LWxvY2sta2V5d29yZHMtb25s eSB0KQorICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAg ICAgICAgICAgICAgICcoKGNvbW1lbnRzIGZ1bmN0aW9ucyBzdHJpbmdzIGhlcmVkb2NzKQorICAg ICAgICAgICAgICAgICAgKHZhcmlhYmxlcyBrZXl3b3JkcyBjb21tYW5kcyBkZWNsLWNvbW1hbmRz KQorICAgICAgICAgICAgICAgICAgKGNvbnN0YW50cyBvcGVyYXRvcnMgYnVpbHRpbi12YXJpYWJs ZXMpKSkKKyAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAg ICAgICAgICAgIHNoLW1vZGUtLXRyZWVzaXQtc2V0dGluZ3MpCisgICAgKHRyZWVzaXQtbWFqb3It bW9kZS1zZXR1cCkpCisgICA7OyBFbGlzcC4KKyAgICh0CisgICAgKHNldHEgZm9udC1sb2NrLWRl ZmF1bHRzCisgICAgICAgICAgYCgoc2gtZm9udC1sb2NrLWtleXdvcmRzCisgICAgICAgICAgICAg c2gtZm9udC1sb2NrLWtleXdvcmRzLTEgc2gtZm9udC1sb2NrLWtleXdvcmRzLTIpCisgICAgICAg ICAgICBuaWwgbmlsCisgICAgICAgICAgICAoKD8vIC4gInciKSAoP34gLiAidyIpICg/LiAuICJ3 IikgKD8tIC4gInciKSAoP18gLiAidyIpKSBuaWwKKyAgICAgICAgICAgIChmb250LWxvY2stc3lu dGFjdGljLWZhY2UtZnVuY3Rpb24KKyAgICAgICAgICAgICAuICwjJ3NoLWZvbnQtbG9jay1zeW50 YWN0aWMtZmFjZS1mdW5jdGlvbikpKSkpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZmFsaWFzICdz aGVsbC1zY3JpcHQtbW9kZSAnc2gtbW9kZSkKQEAgLTMxOTEsNiArMzIwNiwxMjIgQEAgc2gtc2hl bGxjaGVjay1mbHltYWtlCiAgICAgICAocHJvY2Vzcy1zZW5kLXJlZ2lvbiBzaC0tc2hlbGxjaGVj ay1wcm9jZXNzIChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAgKHByb2Nlc3Mtc2VuZC1l b2Ygc2gtLXNoZWxsY2hlY2stcHJvY2VzcykpKSkKIAotKHByb3ZpZGUgJ3NoLXNjcmlwdCkKLQot Ozs7IHNoLXNjcmlwdC5lbCBlbmRzIGhlcmUKKzs7OyBUcmVlLXNpdHRlciBmb250LWxvY2sKKwor KGRlZnZhciBzaC1tb2RlLS10cmVlc2l0LW9wZXJhdG9ycworICAnKCJ8IiAifCYiICJ8fCIgIiYm IiAiPiIgIj4+IiAiPCIgIjw8IiAiPDwtIiAiPDw8IiAiPT0iICIhPSIgIjsiCisgICAgIjs7IiAi OyYiICI7OyYiKQorICAiTGlzdCBvZiBgc2gtbW9kZScgb3BlcmF0b3IgdG8gZm9udGlmeSIpCisK KyhkZWZ2YXIgc2gtbW9kZS0tdHJlZXNpdC1rZXl3b3JkcworICAnKCJjYXNlIiAiZG8iICJkb25l IiAiZWxpZiIgImVsc2UiICJlc2FjIiAiZXhwb3J0IiAiZmkiICJmb3IiCisgICAgImZ1bmN0aW9u IiAiaWYiICJpbiIgInVuc2V0IiAid2hpbGUiICJ0aGVuIikKKyAgIk1pbmltYWwgbGlzdCBvZiBr ZXl3b3JkcyB0aGF0IGJlbG9uZyB0byB0cmVlLXNpdHRlci1iYXNoJ3MgZ3JhbW1hci4KKworU29t ZSByZXNlcnZlZCB3b3JkcyBhcmUgbm90IHJlY29nbml6ZSB0byBrZWVwIHRoZSBncmFtbWFyCitz aW1wbGVyLiBUaG9zZSBhcmUgaWRlbnRpZmllZCB3aXRoIHJlZ2V4LWJhc2VkIGZpbHRlcmVkIHF1 ZXJpZXMuCisKK1NlZSBgc2gtbW9kZS0tdHJlZXNpdC1vdGhlci1rZXl3b3JkcycgYW5kCitgc2gt bW9kZS0tdHJlZXNpdC1zZXR0aW5ncycpLiIpCisKKyhkZWZ1biBzaC1tb2RlLS10cmVlc2l0LW90 aGVyLWtleXdvcmRzICgpCisgICJSZXR1cm5zIGEgbGlzdCBgb3RoZXJzJyBvZiBrZXkvcmVzZXJ2 ZWQgd29yZHMgdG8gYmUgZm9udGlmaWVkIHdpdGgKK3JlZ2V4LWJhc2VkIHF1ZXJpZXMgYXMgdGhl eSBhcmUgbm90IHBhcnQgb2YgdHJlZS1zaXR0ZXItYmFzaCdzCitncmFtbWFyLgorCitTZWUgYHNo LW1vZGUtLXRyZWVzaXQtb3RoZXIta2V5d29yZHMnIGFuZAorYHNoLW1vZGUtLXRyZWVzaXQtc2V0 dGluZ3MnKS4iCisgIChsZXQgKChtaW5pbWFsIHNoLW1vZGUtLXRyZWVzaXQta2V5d29yZHMpCisg ICAgICAgIChhbGwgKGFwcGVuZCAoc2gtZmVhdHVyZSBzaC1sZWFkaW5nLWtleXdvcmRzKQorICAg ICAgICAgICAgICAgICAgICAgKHNoLWZlYXR1cmUgc2gtb3RoZXIta2V5d29yZHMpKSkKKyAgICAg ICAgKG90aGVycykpCisgICAgKGRvbGlzdCAoa2V5d29yZCBhbGwgb3RoZXJzKQorICAgICAgKGlm IChub3QgKG1lbWJlciBrZXl3b3JkIG1pbmltYWwpKQorICAgICAgICAgIChzZXRxIG90aGVycyAo Y29ucyBrZXl3b3JkIG90aGVycykpKSkpKQorCisoZGVmdW4gc2gtbW9kZS0tdHJlZXNpdC1mb250 aWZ5LWRlY2wtY29tbWFuZC1uYW1lIChfYmVnIF9lbmQgbm9kZSkKKyAgIkZvbnRpZmllcyBvbmx5 IHRoZSBuYW1lIG9mIGRlY2xhcmF0aW9uX2NvbW1hbmQgbm9kZXMuCisKK1RoaXMgaXMgdXNlZCBp bnN0ZWFkIG9mIGBmb250LWxvY2stYnVpbHRpb24tZmFjZScgZGlyZWN0bHkgYmVjYXVzZQorb3Ro ZXJ3aXNlIHRoZSB3aG9sZSBjb21tYW5kLCBpbmNsdWRpbmcgdGhlIHZhcmlhYmxlIGFzc2lnbm1l bnQgcGFydCwKK2lzIGZvbnRpZmllZCB3aXRoIHdpdGggYGZvbnQtbG9jay1idWlsdGluLWZhY2Un LiBBbiBhbHRlcm5hdGl2ZSB0bwordGhpcyB3b3VsZCBiZSB0byBkZWNsYXJhdGlvbl9jb21tYW5k IG5vZGVzIHRvIGhhdmUgYSBgbmFtZTonIGZpZWxkLiIKKyAgKGxldCogKChtYXliZS1kZWNsLWNt ZCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgIChub2RlLXR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIG1heWJlLWRlY2wtY21kKSkpCisgICAgKHdoZW4gKHN0cmluZz0gbm9kZS10 eXBlICJkZWNsYXJhdGlvbl9jb21tYW5kIikKKyAgICAgIChsZXQqICgobmFtZS1ub2RlIChjYXIg KHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBtYXliZS1kZWNsLWNtZCkpKQorICAgICAgICAgICAgIChu YW1lLWJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IG5hbWUtbm9kZSkpCisgICAgICAgICAgICAgKG5h bWUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5hbWUtbm9kZSkpKQorICAgICAgICAocHV0LXRleHQt cHJvcGVydHkgbmFtZS1iZWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUtZW5kCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkpKSkpCisKKyhkZWZ2YXIgc2gtbW9kZS0tdHJlZXNp dC1zZXR0aW5ncworICAodHJlZXNpdC1mb250LWxvY2stcnVsZXMKKyAgIDpmZWF0dXJlICdjb21t ZW50cworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICAnKChjb21tZW50KSBAZm9udC1sb2NrLWNv bW1lbnQtZmFjZSkKKyAgIDpmZWF0dXJlICdmdW5jdGlvbnMKKyAgIDpsYW5ndWFnZSBzaC1zaGVs bAorICAgJygoZnVuY3Rpb25fZGVmaW5pdGlvbiBuYW1lOiAod29yZCkgQGZvbnQtbG9jay1mdW5j dGlvbi1uYW1lLWZhY2UpKQorICAgOmZlYXR1cmUgJ3N0cmluZ3MKKyAgIDpsYW5ndWFnZSBzaC1z aGVsbAorICAgJyhbKHN0cmluZykgKHJhd19zdHJpbmcpXSBAZm9udC1sb2NrLXN0cmluZy1mYWNl KQorICAgOmZlYXR1cmUgJ2hlcmVkb2NzCisgICA6bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAgICcoWyho ZXJlZG9jX3N0YXJ0KSAoaGVyZWRvY19ib2R5KV0gQHNoLWhlcmVkb2MpCisgICA6ZmVhdHVyZSAn dmFyaWFibGVzCisgICA6bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAgICcoKHZhcmlhYmxlX25hbWUpIEBm b250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlKQorICAgOmZlYXR1cmUgJ2tleXdvcmRzCisgICA6 bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAgIGAoOzsga2V5d29yZHMKKyAgICAgWyAsQHNoLW1vZGUtLXRy ZWVzaXQta2V5d29yZHMgXSBAZm9udC1sb2NrLWtleXdvcmQtZmFjZQorICAgICA7OyByZXNlcnZl ZCB3b3JkcworICAgICAoY29tbWFuZF9uYW1lCisgICAgICAoKHdvcmQpIEBmb250LWxvY2sta2V5 d29yZC1mYWNlCisgICAgICAgKDptYXRjaAorICAgICAgICAsKHJ4LXRvLXN0cmluZworICAgICAg ICAgICAgYChzZXEgYm9sCisgICAgICAgICAgICAgICAgICAob3IgLEAoc2gtbW9kZS0tdHJlZXNp dC1vdGhlci1rZXl3b3JkcykpCisgICAgICAgICAgICAgICAgICBlb2wpKQorICAgICAgICBAZm9u dC1sb2NrLWtleXdvcmQtZmFjZSkpKSkKKyAgIDpmZWF0dXJlICdjb21tYW5kcworICAgOmxhbmd1 YWdlIHNoLXNoZWxsCisgICBgKDs7IGZ1bmN0aW9uL25vbi1idWlsdGluIGNvbW1hbmQgY2FsbHMK KyAgICAgKGNvbW1hbmRfbmFtZSAod29yZCkgQGZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2Up CisgICAgIDs7IGJ1aWx0aW4gY29tbWFuZHMKKyAgICAgKGNvbW1hbmRfbmFtZQorICAgICAgKCh3 b3JkKSBAZm9udC1sb2NrLWJ1aWx0aW4tZmFjZQorICAgICAgICg6bWF0Y2ggLChsZXQgKChidWls dGlucworICAgICAgICAgICAgICAgICAgICAgICAoc2gtZmVhdHVyZSBzaC1idWlsdGlucykpKQor ICAgICAgICAgICAgICAgICAgKHJ4LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgIGAoc2Vx IGJvbAorICAgICAgICAgICAgICAgICAgICAgICAgIChvciAsQGJ1aWx0aW5zKQorICAgICAgICAg ICAgICAgICAgICAgICAgIGVvbCkpKQorICAgICAgICAgICAgICAgQGZvbnQtbG9jay1idWlsdGlu LWZhY2UpKSkpCisgICA6ZmVhdHVyZSAnZGVjbC1jb21tYW5kcworICAgOmxhbmd1YWdlIHNoLXNo ZWxsCisgICAnKDs7IGRlY2xhcmF0aW9uIGNvbW1hbmRzCisgICAgIChkZWNsYXJhdGlvbl9jb21t YW5kIF8gQHNoLW1vZGUtLXRyZWVzaXQtZm9udGlmeS1jb21tYW5kLW5hbWUpKQorICAgOmZlYXR1 cmUgJ2NvbnN0YW50cworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICAnKChjYXNlX2l0ZW0gdmFs dWU6ICh3b3JkKSBAZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgIChmaWxlX2Rlc2NyaXB0 b3IpIEBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgIDpmZWF0dXJlICdvcGVyYXRvcnMKKyAg IDpsYW5ndWFnZSBzaC1zaGVsbAorICAgYChbICxAc2gtbW9kZS0tdHJlZXNpdC1vcGVyYXRvcnMg XSBAZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkKKyAgIDpmZWF0dXJlICdidWlsdGluLXZhcmlhYmxl cworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICBgKCgoc3BlY2lhbF92YXJpYWJsZV9uYW1lKSBA Zm9udC1sb2NrLWJ1aWx0aW4tZmFjZQorICAgICAgKDptYXRjaCAsKGxldCAoKGJ1aWx0aW4tdmFy cyAoc2gtZmVhdHVyZSBzaC12YXJpYWJsZXMpKSkKKyAgICAgICAgICAgICAgICAgKHJ4LXRvLXN0 cmluZworICAgICAgICAgICAgICAgICAgYChzZXEgYm9sCisgICAgICAgICAgICAgICAgICAgICAg ICAob3IgLEBidWlsdGluLXZhcnMpCisgICAgICAgICAgICAgICAgICAgICAgICBlb2wpKSkKKyAg ICAgICAgICAgICAgQGZvbnQtbG9jay1idWlsdGluLWZhY2UpKSkpCisgICJUcmVlLXNpdHRlciBm b250LWxvY2sgc2V0dGluZ3MgZm9yIGBzaC1tb2RlJy4iKQorCisocHJvdmlkZSAnc2gtbW9kZSkK Kzs7OyBzaC1tb2RlLmVsIGVuZHMgaGVyZQotLSAKMi4zMS4xCgo= --000000000000b462ae05ec80edae--