From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Mathias Dahl Newsgroups: gmane.emacs.devel Subject: [PATCH] Add abbrev suggestions Date: Mon, 6 Jul 2020 01:40:40 +0200 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ebc60c05a9ba49e6" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21981"; 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 Mon Jul 06 01:41:32 2020 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 1jsEGJ-0005ci-Mv for ged-emacs-devel@m.gmane-mx.org; Mon, 06 Jul 2020 01:41:31 +0200 Original-Received: from localhost ([::1]:42392 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jsEGI-0001ui-NT for ged-emacs-devel@m.gmane-mx.org; Sun, 05 Jul 2020 19:41:30 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51212) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jsEFl-0001TL-0Q for emacs-devel@gnu.org; Sun, 05 Jul 2020 19:40:57 -0400 Original-Received: from mail-vk1-xa29.google.com ([2607:f8b0:4864:20::a29]:41558) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jsEFi-0002JN-Mz for emacs-devel@gnu.org; Sun, 05 Jul 2020 19:40:56 -0400 Original-Received: by mail-vk1-xa29.google.com with SMTP id b205so7888118vkb.8 for ; Sun, 05 Jul 2020 16:40:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=TKKIJjYhIkbtjfUFHYyGj0/AKeKpCzsc5jUq7nOOX1w=; b=rCAFBv6COQg7XS9YMcl0SkVau+jYtqYxjdXKwaq7CWIm6An7NcrRw6tuD7y/zVBme2 1QmatO8srlmfpDxFvR0vQIyB0dXLak8iHPJHU2A3Mrahnp6qUeHV9nq/qERHYIgl0dax kci3r9NQAKLrdVsh0dAuZVwraHMjM0EpxE5z62VGioh+mrKrqOCf6b5LEUbVhQYWecXH 021U2dFkv7K7dOvlKgxwrzWzkBjsrAXavcQYeLs6zkePK0psYB48AXKqTDxJGYhJLGfg NQYJ4O1TKefxLp9f0xUXZZeWJEtXXS+YOx/77GzukADqSBeyF3PdO/dFjT/sn9MPxwYO n4ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=TKKIJjYhIkbtjfUFHYyGj0/AKeKpCzsc5jUq7nOOX1w=; b=R0QNwF0GdSp+bLvzVq+rjqw4LvKZeC37lLiYPIQKLDYjSgwQeb3hor8JfLbgcLqYz6 Obaa+14LEC+uES0q1RdfEotEp90jUPwLVQLih6BJ7/f3xuL01Yx2cBgEHToML0yL2rNB o8yauwZcSwah/rnv+k4qXo533sEUbg74t2gQ9OEr/Eg1DgfEIeMnzpBd6PNCgQXYO4qM JAGM08Dr+YH5DmAhArC+E5Xkeig4GmaBmJ5p3qR9TX8kcwEru6lXqbg6z74s/Q8DgjvF yer6Zecputl3xzdz6rAMBXJxyGz99EOl8uRCqn0IBmigLoXbiiulGSubnEFT2SloWMnC SP0A== X-Gm-Message-State: AOAM5328XUYUGHdPMB9W7LRFh4D7inkcmxUR/vwi1LylWQ3nscFLyrUg QFvtQg7epz1ssqUM46SdcP/gei+pYiRzRVVqypJZOc4suavHhg== X-Google-Smtp-Source: ABdhPJwpo9p1cIEc6a17XaAMRpBbd/xw84RPmwW3FoA5HjGpcVDvJXL4zZXWbU44LWsaC8H0rQWZLs99vU3FZc+/WwY= X-Received: by 2002:a1f:6084:: with SMTP id u126mr32187018vkb.56.1593992452744; Sun, 05 Jul 2020 16:40:52 -0700 (PDT) Received-SPF: pass client-ip=2607:f8b0:4864:20::a29; envelope-from=mathias.dahl@gmail.com; helo=mail-vk1-xa29.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. 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=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:252720 Archived-At: --000000000000ebc60c05a9ba49e6 Content-Type: multipart/alternative; boundary="000000000000ebc60a05a9ba49e4" --000000000000ebc60a05a9ba49e4 Content-Type: text/plain; charset="UTF-8" Hi, After some time I decided to try to send a patch for this. As for what it is, check the source :) Or read this short documentation string for the new abbrev-suggest option: * Non-nil means we should suggest abbrevs to the user.* *By enabling this option, if abbrev mode is enabled and if the* *user has typed some text that exists as an abbrev, suggest to the* *user to use the abbrev instead."* You can also read this thread to get the background: https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00449.html The recent discussions can be found here: https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg01605.html If this patch looks good (a lot of changes has been done as per the discussions with Eli, Stefan and others in the threads above, and I hope I also managed to use the correct format for the patch), I'd be glad if someone could commit this, and I will get started on the changes to the Emacs documentation as well. I have signed papers before. Thanks! /Mathias --000000000000ebc60a05a9ba49e4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

After some time I decided to try to= send a patch for this.

As for what it is, check t= he source :)

Or read this short documentation stri= ng for the new=C2=A0abbrev-suggest option:

=C2=A0 =C2=A0 N= on-nil means we should suggest abbrevs to the user.
By ena= bling this option, if abbrev mode is enabled and if the
us= er has typed some text that exists as an abbrev, suggest to the
user to use the abbrev instead."

=
You can also read this thread to get the background:
<= br>

The recent discu= ssions can be found here:

https://lists.gnu.= org/archive/html/emacs-devel/2020-05/msg01605.html=C2=A0=C2=A0

If this patch looks good (a lot of changes has been do= ne as per the discussions with Eli, Stefan and others in the threads above,= and I hope I also managed to use the correct format for the patch), I'= d be glad if someone could commit this, and I will get started on the chang= es to the Emacs documentation as well. I have signed papers before.

Thanks!

/Mathias

<= /div>
--000000000000ebc60a05a9ba49e4-- --000000000000ebc60c05a9ba49e6 Content-Type: application/octet-stream; name="0001-Add-abbrev-suggestions.patch" Content-Disposition: attachment; filename="0001-Add-abbrev-suggestions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kc9pl3l30 RnJvbSAzMjE2MTg1OGE0YjM0ZWMxZjM2ZmUwMjI1ZGNkMGI4NGNhOGQ0M2JjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoaWFzIERhaGwgPG1hdGhpYXMuZGFobEBnbWFpbC5jb20+ CkRhdGU6IFN1biwgNSBKdWwgMjAyMCAxODo0NDo1NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEFk ZCBhYmJyZXYgc3VnZ2VzdGlvbnMKCi0tLQogbGlzcC9hYmJyZXYuZWwgfCAxNDEgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUg Y2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGlzcC9hYmJyZXYuZWwgYi9saXNwL2FiYnJldi5lbAppbmRleCAyZDYxYTk2Li45NjkwZGFjIDEw MDY0NAotLS0gYS9saXNwL2FiYnJldi5lbAorKysgYi9saXNwL2FiYnJldi5lbApAQCAtODMwLDkg KzgzMCwxNDQgQEAgYWJicmV2LWV4cGFuZC1mdW5jdGlvbnMKIChtYWtlLW9ic29sZXRlLXZhcmlh YmxlICdhYmJyZXYtZXhwYW5kLWZ1bmN0aW9ucyAnYWJicmV2LWV4cGFuZC1mdW5jdGlvbiAiMjQu NCIpCiAKIChkZWZ2YXIgYWJicmV2LWV4cGFuZC1mdW5jdGlvbiAjJ2FiYnJldi0tZGVmYXVsdC1l eHBhbmQKLSAgIkZ1bmN0aW9uIHRoYXQgYGV4cGFuZC1hYmJyZXYnIHVzZXMgdG8gcGVyZm9ybSBh YmJyZXYgZXhwYW5zaW9uLgorICAgICJGdW5jdGlvbiB0aGF0IGBleHBhbmQtYWJicmV2JyB1c2Vz IHRvIHBlcmZvcm0gYWJicmV2IGV4cGFuc2lvbi4KIFRha2VzIG5vIGFyZ3VtZW50IGFuZCBzaG91 bGQgcmV0dXJuIHRoZSBhYmJyZXYgc3ltYm9sIGlmIGV4cGFuc2lvbiB0b29rIHBsYWNlLiIpCiAK KyhkZWZjdXN0b20gYWJicmV2LXN1Z2dlc3QgdAorICAgICJOb24tbmlsIG1lYW5zIHdlIHNob3Vs ZCBzdWdnZXN0IGFiYnJldnMgdG8gdGhlIHVzZXIuCitCeSBlbmFibGluZyB0aGlzIG9wdGlvbiwg aWYgYWJicmV2IG1vZGUgaXMgZW5hYmxlZCBhbmQgaWYgdGhlCit1c2VyIGhhcyB0eXBlZCBzb21l IHRleHQgdGhhdCBleGlzdHMgYXMgYW4gYWJicmV2LCBzdWdnZXN0IHRvIHRoZQordXNlciB0byB1 c2UgdGhlIGFiYnJldiBpbnN0ZWFkLiIKKyAgICA6dHlwZSAnYm9vbGVhbgorICAgIDpncm91cCAn YWJicmV2LW1vZGUpCisKKyhkZWZjdXN0b20gYWJicmV2LXN1Z2dlc3QtaGludC10aHJlc2hvbGQg MworICAgICJUaHJlc2hvbGQgZm9yIHdoZW4gdG8gaW5mb3JtIHRoZSB1c2VyIHRoYXQgdGhlcmUg aXMgYW4gYWJicmV2LgorVGhlIHRocmVzaG9sZCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMg dGhhdCBkaWZmZXJzIGJldHdlZW4KK3RoZSBsZW5ndGggb2YgdGhlIGFiYnJldiBhbmQgdGhlIGxl bmd0aCBvZiB0aGUgZXhwYW5zaW9uLiAgVGhlCit0aGlua2luZyBpcyB0aGF0IGlmIHRoZSBleHBh bnNpb24gaXMgb25seSBvbmUgb3IgYSBmZXcgY2hhcmFjdGVycworbG9uZ2VyIHRoYW4gdGhlIGFi YnJldiwgdGhlIGJlbmVmaXQgb2YgaW5mb3JtaW5nIHRoZSB1c2VyIGlzIG5vdAordGhhdCBiaWcu ICBJZiB5b3UgYWx3YXlzIHdhbnQgdG8gYmUgaW5mb3JtZWQsIHNldCB0aGlzIHZhbHVlIHRvCitg MCcgb3IgbGVzcy4iCisgICAgOnR5cGUgJ251bWJlcgorICAgIDpncm91cCAnYWJicmV2LW1vZGUp CisKKyhkZWZ1biBhYmJyZXYtLXN1Z2dlc3QtZ2V0LWFjdGl2ZS10YWJsZXMtaW5jbHVkaW5nLXBh cmVudHMgKCkKKyAgIlJldHVybiBhIGxpc3Qgb2YgYWxsIGFjdGl2ZSBhYmJyZXYgdGFibGVzLCBp bmNsdWRpbmcgcGFyZW50IHRhYmxlcy4iCisgIChsZXQqICgodGFibGVzIChhYmJyZXYtLWFjdGl2 ZS10YWJsZXMpKQorCSAoYWxsIHRhYmxlcykpCisgICAgKGRvbGlzdCAodGFibGUgdGFibGVzKQor ICAgICAgKHNldHEgYWxsIChhcHBlbmQgKGFiYnJldi10YWJsZS1nZXQgdGFibGUgOnBhcmVudHMp IGFsbCkpKQorICAgIGFsbCkpCisKKyhkZWZ1biBhYmJyZXYtLXN1Z2dlc3QtZ2V0LWFjdGl2ZS1h YmJyZXYtZXhwYW5zaW9ucyAoKQorICAgICJSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgYWN0aXZl IGFiYnJldiBleHBhbnNpb25zLgorSW5jbHVkZXMgZXhwYW5zaW9ucyBmcm9tIHBhcmVudCBhYmJy ZXYgdGFibGVzLiIKKyAgICAobGV0IChleHBhbnNpb25zKQorICAgICAgKGRvbGlzdCAodGFibGUg KGFiYnJldi0tc3VnZ2VzdC1nZXQtYWN0aXZlLXRhYmxlcy1pbmNsdWRpbmctcGFyZW50cykpCisJ KG1hcGF0b21zIChsYW1iZGEgKGUpCisJCSAgICAobGV0ICgodmFsdWUgKHN5bWJvbC12YWx1ZSAo YWJicmV2LS1zeW1ib2wgZSB0YWJsZSkpKSkKKwkJICAgICAgKHdoZW4gdmFsdWUKKyAgICAgICAg ICAgICAgICAgICAgICAgIChwdXNoIChjb25zIHZhbHVlIChzeW1ib2wtbmFtZSBlKSkgZXhwYW5z aW9ucykpKSkKKwkJICB0YWJsZSkpCisgICAgICBleHBhbnNpb25zKSkKKworKGRlZnVuIGFiYnJl di0tc3VnZ2VzdC1jb3VudC13b3JkcyAoZXhwYW5zaW9uKQorICAgICJSZXR1cm4gdGhlIG51bWJl ciBvZiB3b3JkcyBpbiBFWFBBTlNJT04uCitFeHBhbnNpb24gaXMgYSBzdHJpbmcgb2Ygb25lIG9y IG1vcmUgd29yZHMuIgorICAgIChsZW5ndGggKHNwbGl0LXN0cmluZyBleHBhbnNpb24gIiAiIHQp KSkKKworKGRlZnVuIGFiYnJldi0tc3VnZ2VzdC1nZXQtcHJldmlvdXMtd29yZHMgKG4pCisgICAg IlJldHVybiB0aGUgcHJldmlvdXMgTiB3b3Jkcywgc3BhY2VzIGluY2x1ZGVkLgorQ2hhbmdlcyBu ZXdsaW5lcyBpbnRvIHNwYWNlcy4iCisgICAgKGxldCAoKGVuZCAocG9pbnQpKSkKKyAgICAgIChz YXZlLWV4Y3Vyc2lvbgorCShiYWNrd2FyZC13b3JkIG4pCisJKHJlcGxhY2UtcmVnZXhwLWluLXN0 cmluZworCSAiXFxzICIgIiAiCisJIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBv aW50KSBlbmQpKSkpKQorCisoZGVmdW4gYWJicmV2LS1zdWdnZXN0LWFib3ZlLXRocmVzaG9sZCAo ZXhwYW5zaW9uKQorICAgICJSZXR1cm4gdCBpZiB3ZSBhcmUgYWJvdmUgdGhlIHRocmVzaG9sZC4K K0VYUEFOU0lPTiBpcyBhIGNvbnMgY2VsbCB3aGVyZSB0aGUgY2FyIGlzIHRoZSBleHBhbnNpb24g YW5kIHRoZQorY2RyIGlzIHRoZSBhYmJyZXYuIgorICAgICg+PSAoLSAobGVuZ3RoIChjYXIgZXhw YW5zaW9uKSkKKwkgICAobGVuZ3RoIChjZHIgZXhwYW5zaW9uKSkpCisJYWJicmV2LXN1Z2dlc3Qt aGludC10aHJlc2hvbGQpKQorCisoZGVmdmFyIGFiYnJldi0tc3VnZ2VzdC1zYXZlZC1yZWNvbW1l bmRhdGlvbnMgbmlsCisgICAgIktlZXBzIGEgbGlzdCBvZiBleHBhbnNpb25zIHRoYXQgaGF2ZSBh YmJyZXZzIGRlZmluZWQuCitUaGUgdXNlciBjYW4gc2hvdyB0aGlzIGxpc3QgYnkgY2FsbGluZwor YGFiYnJldi1zdWdnZXN0LXNob3ctcmVwb3J0Jy4iKQorCisoZGVmdW4gYWJicmV2LS1zdWdnZXN0 LWluZm9ybS11c2VyIChleHBhbnNpb24pCisgICAgIkRpc3BsYXkgYSBtZXNzYWdlIHRvIHRoZSB1 c2VyIGFib3V0IHRoZSBleGlzdGluZyBhYmJyZXYuCitFWFBBTlNJT04gaXMgYSBjb25zIGNlbGwg d2hlcmUgdGhlIGBjYXInIGlzIHRoZSBleHBhbnNpb24gYW5kIHRoZQorYGNkcicgaXMgdGhlIGFi YnJldi4iCisgICAgKHJ1bi13aXRoLWlkbGUtdGltZXIKKyAgICAgMSBuaWwKKyAgICAgKGxhbWJk YSAoKQorICAgICAgIChtZXNzYWdlICJZb3UgY2FuIHdyaXRlIGAlcycgdXNpbmcgdGhlIGFiYnJl diBgJXMnLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBleHBhbnNp b24pIChjZHIgZXhwYW5zaW9uKSkpKQorICAgIChwdXNoIGV4cGFuc2lvbiBhYmJyZXYtLXN1Z2dl c3Qtc2F2ZWQtcmVjb21tZW5kYXRpb25zKSkKKworKGRlZnVuIGFiYnJldi0tc3VnZ2VzdC1zaG9y dGVzdC1hYmJyZXYgKG5ldyBjdXJyZW50KQorICAgICJSZXR1cm4gdGhlIHNob3J0ZXN0IGFiYnJl di4KK05FVyBhbmQgQ1VSUkVOVCBhcmUgY29ucyBjZWxscyB3aGVyZSB0aGUgYGNhcicgaXMgdGhl IGV4cGFuc2lvbgorYW5kIHRoZSBgY2RyJyBpcyB0aGUgYWJicmV2LiIKKyAgICAoaWYgKG5vdCBj dXJyZW50KQorCW5ldworICAgICAgKGlmICg8IChsZW5ndGggKGNkciBuZXcpKQorCSAgICAgKGxl bmd0aCAoY2RyIGN1cnJlbnQpKSkKKwkgIG5ldworCWN1cnJlbnQpKSkKKworKGRlZnVuIGFiYnJl di0tc3VnZ2VzdC1tYXliZS1zdWdnZXN0ICgpCisgICAgIlN1Z2dlc3QgYW4gYWJicmV2IHRvIHRo ZSB1c2VyIGJhc2VkIG9uIHRoZSB3b3JkKHMpIGJlZm9yZSBwb2ludC4KK1VzZXMgYGFiYnJldi1z dWdnZXN0LWhpbnQtdGhyZXNob2xkJyB0byBmaW5kIG91dCBpZiB0aGUgdXNlciBzaG91bGQgYmUK K2luZm9ybWVkIGFib3V0IHRoZSBleGlzdGluZyBhYmJyZXYuIgorICAgIChsZXQgKHdvcmRzIGFi YnJldi1mb3VuZCB3b3JkLWNvdW50KQorICAgICAgKGRvbGlzdCAoZXhwYW5zaW9uIChhYmJyZXYt LXN1Z2dlc3QtZ2V0LWFjdGl2ZS1hYmJyZXYtZXhwYW5zaW9ucykpCisJKHNldHEgd29yZC1jb3Vu dCAoYWJicmV2LS1zdWdnZXN0LWNvdW50LXdvcmRzIChjYXIgZXhwYW5zaW9uKSkKKwkgICAgICB3 b3JkcyAoYWJicmV2LS1zdWdnZXN0LWdldC1wcmV2aW91cy13b3JkcyB3b3JkLWNvdW50KSkKKwko bGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0KSkKKwkgICh3aGVuIChhbmQgKD4gd29yZC1jb3VudCAw KQorCQkgICAgIChzdHJpbmctbWF0Y2ggKGNhciBleHBhbnNpb24pIHdvcmRzKQorCQkgICAgIChh YmJyZXYtLXN1Z2dlc3QtYWJvdmUtdGhyZXNob2xkIGV4cGFuc2lvbikpCisJICAgIChzZXRxIGFi YnJldi1mb3VuZCAoYWJicmV2LS1zdWdnZXN0LXNob3J0ZXN0LWFiYnJldgorCQkJCWV4cGFuc2lv biBhYmJyZXYtZm91bmQpKSkpKQorICAgICAgKHdoZW4gYWJicmV2LWZvdW5kCisJKGFiYnJldi0t c3VnZ2VzdC1pbmZvcm0tdXNlciBhYmJyZXYtZm91bmQpKSkpCisKKyhkZWZ1biBhYmJyZXYtLXN1 Z2dlc3QtZ2V0LXRvdGFscyAoKQorICAgICJSZXR1cm4gYSBsaXN0IG9mIGFsbCBleHBhbnNpb25z IGFuZCB0aGVpciB1c2FnZS4KK0VhY2ggZXhwYW5zaW9uIGlzIGEgY29ucyBjZWxsIHdoZXJlIHRo ZSBgY2FyJyBpcyB0aGUgZXhwYW5zaW9uCithbmQgdGhlIGBjZHInIGlzIHRoZSBudW1iZXIgb2Yg dGltZXMgdGhlIGV4cGFuc2lvbiBoYXMgYmVlbgordHlwZWQuIgorICAgIChsZXQgKHRvdGFsIGNl bGwpCisgICAgICAoZG9saXN0IChleHBhbnNpb24gYWJicmV2LS1zdWdnZXN0LXNhdmVkLXJlY29t bWVuZGF0aW9ucykKKwkoaWYgKG5vdCAoYXNzb2MgKGNhciBleHBhbnNpb24pIHRvdGFsKSkKKwkg ICAgKHB1c2ggKGNvbnMgKGNhciBleHBhbnNpb24pIDEpIHRvdGFsKQorCSAgKHNldHEgY2VsbCAo YXNzb2MgKGNhciBleHBhbnNpb24pIHRvdGFsKSkKKwkgIChzZXRjZHIgY2VsbCAoMSsgKGNkciBj ZWxsKSkpKSkKKyAgICAgIHRvdGFsKSkKKworKGRlZnVuIGFiYnJldi1zdWdnZXN0LXNob3ctcmVw b3J0ICgpCisgICJTaG93IHRoZSB1c2VyIGEgcmVwb3J0IG9mIGFiYnJldnMgaGUgY291bGQgaGF2 ZSB1c2VkLiIKKyAgKGludGVyYWN0aXZlKQorICAobGV0ICgodG90YWxzIChhYmJyZXYtLXN1Z2dl c3QtZ2V0LXRvdGFscykpCisJKGJ1ZiAoZ2V0LWJ1ZmZlci1jcmVhdGUgIiphYmJyZXYtc3VnZ2Vz dCoiKSkpCisgICAgKHNldC1idWZmZXIgYnVmKQorICAgIChlcmFzZS1idWZmZXIpCisgICAgICAg IChpbnNlcnQgIioqIEFiYnJldiBleHBhbnNpb24gdXNhZ2UgKioKKworQmVsb3cgaXMgYSBsaXN0 IG9mIGV4cGFuc2lvbnMgZm9yIHdoaWNoIGFiYnJldnMgYXJlIGRlZmluZWQsIGFuZAordGhlIG51 bWJlciBvZiB0aW1lcyB0aGUgZXhwYW5zaW9uIHdhcyB0eXBlZCBtYW51YWxseS4gVG8gZGlzcGxh eQorYW5kIGVkaXQgYWxsIGFiYnJldnMsIHR5cGUgYE0teCBlZGl0LWFiYnJldnMgUkVUJ1xuXG4i KQorCShkb2xpc3QgKGV4cGFuc2lvbiB0b3RhbHMpCisJICAoaW5zZXJ0IChmb3JtYXQgIiAlczog JWRcbiIgKGNhciBleHBhbnNpb24pIChjZHIgZXhwYW5zaW9uKSkpKQorCShkaXNwbGF5LWJ1ZmZl ciBidWYpKSkKKwogKGRlZnVuIGV4cGFuZC1hYmJyZXYgKCkKICAgIkV4cGFuZCB0aGUgYWJicmV2 IGJlZm9yZSBwb2ludCwgaWYgdGhlcmUgaXMgYW4gYWJicmV2IHRoZXJlLgogRWZmZWN0aXZlIHdo ZW4gZXhwbGljaXRseSBjYWxsZWQgZXZlbiB3aGVuIGBhYmJyZXYtbW9kZScgaXMgbmlsLgpAQCAt ODQyLDcgKzk3Nyw5IEBAIGV4cGFuZC1hYmJyZXYKIGJlIHRoZSBhYmJyZXYgc3ltYm9sIGlmIGV4 cGFuc2lvbiBvY2N1cnJlZCwgZWxzZSBuaWwuKSIKICAgKGludGVyYWN0aXZlKQogICAocnVuLWhv b2tzICdwcmUtYWJicmV2LWV4cGFuZC1ob29rKQotICAoZnVuY2FsbCBhYmJyZXYtZXhwYW5kLWZ1 bmN0aW9uKSkKKyAgKG9yIChmdW5jYWxsIGFiYnJldi1leHBhbmQtZnVuY3Rpb24pCisgICAgICAo aWYgYWJicmV2LXN1Z2dlc3QKKyAgICAgICAgICAoYWJicmV2LS1zdWdnZXN0LW1heWJlLXN1Z2dl c3QpKSkpCiAKIChkZWZ1biBhYmJyZXYtLWRlZmF1bHQtZXhwYW5kICgpCiAgICJEZWZhdWx0IGZ1 bmN0aW9uIHRvIHVzZSBmb3IgYGFiYnJldi1leHBhbmQtZnVuY3Rpb24nLgotLSAKMS45LjEKCg== --000000000000ebc60c05a9ba49e6--