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: Re: [PATCH] Add abbrev suggestions Date: Tue, 15 Sep 2020 00:04:05 +0200 Message-ID: References: <83pn8rgwib.fsf@gnu.org> <83o8o4c8s4.fsf@gnu.org> <838seimytk.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000036e6a605af4d3768" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="4580"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Sep 15 00:05:10 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 1kHwaz-00012p-68 for ged-emacs-devel@m.gmane-mx.org; Tue, 15 Sep 2020 00:05:09 +0200 Original-Received: from localhost ([::1]:32862 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kHway-0000wY-5s for ged-emacs-devel@m.gmane-mx.org; Mon, 14 Sep 2020 18:05:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52460) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kHwaD-0000XI-8u for emacs-devel@gnu.org; Mon, 14 Sep 2020 18:04:21 -0400 Original-Received: from mail-ua1-x944.google.com ([2607:f8b0:4864:20::944]:46423) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kHwaB-0008RX-97; Mon, 14 Sep 2020 18:04:20 -0400 Original-Received: by mail-ua1-x944.google.com with SMTP id z46so346413uac.13; Mon, 14 Sep 2020 15:04:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KMmIveNZGKIylGyKmGi8CVYb4ovThbK3FuYCT5ia/eo=; b=N3PeiEqBnQuk8VbS8S32mWFA/DMT43WjbpLeF8duDOyBK5mhbFyCkhUluc86Ie92LM FpHpUZVqaMomOrglRNp8HI1SgTifFJ5OzSKLYEwDl9iKtB2ncndFjT8CA7+obfqlV6Xx ZeBsCp4xbJ68eB8dLSMgKJnklbGmJn5qJyFzRjdxgnT08ebT7eKdw09FteL4/GRLKcDu O48+srafehdNBox3FeB2H6UAihxdSGGq4O202oHWkRGYIzz8mHWbRbgAkw5pztuEkOO1 Vpa9l8/PIDsVrQo0phnYKss/HhbI+8MXBQ/xLua0UQwKAArFTmbVS54prYiVLryd002A 015w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KMmIveNZGKIylGyKmGi8CVYb4ovThbK3FuYCT5ia/eo=; b=X5CVQ4wPkv4KQk0yhQSZ0pCrUi6ecfj3BAT8gfZ06oqbMXMxWh309IlNZiS7W9elet O/yKG49D7wCLbtRUGm6xmFn5/lxNlwuWJe5Fz1o7+2BMYHqdpxzUFiO4ArG4V6Nm3rEF 7vmjd3sFbKEHgKHKYIPs3PDdYjnmwwEvOHkcmp326H4/I6nKPHmXd9dZbDFEelNua7DU dX9TtPCohu2cr5z7ELPUv6zbXvE94ebyJEEDg+LXyHhOoTfKwZQ1mlR/u8R/euzhPs7k 20/IEtrawD3r2swGISGg06/vLnU7vaUu70yPYlT0UUA0TlDaPxcmIrS3caKS1V+d1wRa TZyw== X-Gm-Message-State: AOAM533kE+NAlZcI5ej92QXax/nzK1JoOgo8Ok4/d8p+ALxwgwT+3Is8 P5Q6kRs9YacS5FlvfzeGWY/5JZKVl5dqTZ2cFYs66qViGEBZsO1D X-Google-Smtp-Source: ABdhPJwlDcj1ufqkYEUGuvGKrxek6OelLFdscEDhGvmI7KrYoKZih970cld+XBJQGImlegfl7GNRjqwOXz/G8nlvR9Y= X-Received: by 2002:ab0:6059:: with SMTP id o25mr2138454ual.61.1600121057228; Mon, 14 Sep 2020 15:04:17 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::944; envelope-from=mathias.dahl@gmail.com; helo=mail-ua1-x944.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=ham autolearn_force=no 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:255692 Archived-At: --00000000000036e6a605af4d3768 Content-Type: multipart/alternative; boundary="00000000000036e6a405af4d3766" --00000000000036e6a405af4d3766 Content-Type: text/plain; charset="UTF-8" Hi Eli, Finally! I sat down and documented this, updated NEWS as well as tried to format the commit message in the correct manner. Let me know how the new patch looks like. Keeping my fingers crossed... /Mathias On Thu, Aug 13, 2020 at 4:29 PM Mathias Dahl wrote: > > > No, I'm not. In fact, it was not the default when I started > > > working on this, but Stefan suggested that it might be a good > > > default. Now we're me and you against him, I guess... :) > > > Let's start with having it opt-in. We can later see if it is > > popular enough to become the default. > > Fine by me. > > > How about the below? > > > Return non-nil if an abbrev in EXPANSION provides significant > > savings. > > Hey, that's cheating! :) > > I prepared a new version myself too. Will see which one I select when > I send a new patch... > > > > Should I include those changes in the same patch and resend > > > that when done? > > > Yes, please. > > Alrighty then! > > Thanks! > > /Mathias > > > On Thu, Aug 13, 2020 at 3:59 PM Eli Zaretskii wrote: > >> > From: Mathias Dahl >> > Date: Wed, 12 Aug 2020 00:16:33 +0200 >> > Cc: emacs-devel@gnu.org >> > >> > > Are you sure it is a good idea to make this non-nil by default? >> > > Wouldn't some users consider these suggestions an annoyance? >> > >> > No, I'm not. In fact, it was not the default when I started working on >> > this, but Stefan suggested that it might be a good default. Now we're >> > me and you against him, I guess... :) >> >> Let's start with having it opt-in. We can later see if it is popular >> enough to become the default. >> >> > > > +(defun abbrev--suggest-above-threshold (expansion) >> > > > + "Return t if we are above the threshold. >> > > >> > > Who is "we" in this context? This should be explained. >> > >> > I know, I was not happy when I wrote that. "we", here, is something >> > like "the difference in length between what the user typed and the >> > abbrev that we found." I guess I could not find a good way to keep the >> > first sentence of the docstring short, so I opted for the fuzzy "we" >> > expression... >> >> How about the below? >> >> Return non-nil if an abbrev in EXPANSION provides significant savings. >> >> > > > +EXPANSION is a cons cell where the car is the expansion and the >> > > > +cdr is the abbrev." >> > > >> > > Our style is to include the arguments in the first sentence of the doc >> > > string. >> > >> > I know. Frankly I don't know if I can come up with a suggestion that >> > combines that together with having a relatively short first >> > sentence... >> >> See above. >> >> > Should I include those changes in the same patch and resend >> > that when done? >> >> Yes, please. >> > --00000000000036e6a405af4d3766 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Eli,

Finally! I sat down = and documented this, updated NEWS as well as tried
to format the commit = message in the correct manner. Let me know how
the new patch looks like.=

Keeping my fingers crossed...

<= /div>
/Mathias


On Thu, Aug 13, 2020 at 4:29 PM Math= ias Dahl <mathias.dahl@gmail.c= om> wrote:
> > No, I'm not. In fact, it was not the defau= lt when I started
> > working on this, but Stefan suggested that i= t might be a good
> > default. Now we're me and you against hi= m, I guess... :)

> Let's start with having it opt-in.=C2=A0 W= e can later see if it is
> popular enough to become the default.
<= br>Fine by me.

> How about the below?

> Return non-nil = if an abbrev in EXPANSION provides significant
> savings.

Hey,= that's cheating! :)

I prepared a new version myself too. Will s= ee which one I select when
I send a new patch...

> > Should= I include those changes in the same patch and resend
> > that whe= n done?

> Yes, please.

Alrighty then!

Thanks!
/Mathias


On Thu, Aug 13, 2020 at 3:59 PM Eli Zaretskii= <eliz@gnu.org>= wrote:
> Fro= m: Mathias Dahl <mathias.dahl@gmail.com>
> Date: Wed, 12 Aug 2020 00:16:33 +0200
> Cc: emacs-dev= el@gnu.org
>
> > Are you sure it is a good idea to make this non-nil by default? > > Wouldn't some users consider these suggestions an annoyance?<= br> >
> No, I'm not. In fact, it was not the default when I started workin= g on
> this, but Stefan suggested that it might be a good default. Now we'= ;re
> me and you against him, I guess... :)

Let's start with having it opt-in.=C2=A0 We can later see if it is popu= lar
enough to become the default.

> > > +(defun abbrev--suggest-above-threshold (expansion)
> > > +=C2=A0 =C2=A0 "Return t if we are above the threshold.=
> >
> > Who is "we" in this context?=C2=A0 This should be expla= ined.
>
> I know, I was not happy when I wrote that. "we", here, is so= mething
> like "the difference in length between what the user typed and th= e
> abbrev that we found." I guess I could not find a good way to kee= p the
> first sentence of the docstring short, so I opted for the fuzzy "= we"
> expression...

How about the below?

=C2=A0 Return non-nil if an abbrev in EXPANSION provides significant saving= s.

> > > +EXPANSION is a cons cell where the car is the expansion and= the
> > > +cdr is the abbrev."
> >
> > Our style is to include the arguments in the first sentence of th= e doc
> > string.
>
> I know. Frankly I don't know if I can come up with a suggestion th= at
> combines that together with having a relatively short first
> sentence...

See above.

> Should I include those changes in the same patch and resend
> that when done?

Yes, please.
--00000000000036e6a405af4d3766-- --00000000000036e6a605af4d3768 Content-Type: application/octet-stream; name="0001-Add-abbrev-suggestions-take-two.patch" Content-Disposition: attachment; filename="0001-Add-abbrev-suggestions-take-two.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kf32q5qa0 RnJvbSBiMGIxYmIwNDA5OGExMWU3ZjZjNWZmZmJjYmY3Y2QzMGJlNDY3OWUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoaWFzIERhaGwgPG1hdGhpYXMuZGFobEBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTQgU2VwIDIwMjAgMTc6MDU6MTEgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB ZGQgYWJicmV2IHN1Z2dlc3Rpb25zCgogICAgQWRkIGFiYnJldiBzdWdnZXN0aW9ucwoKICAgICog bGlzcC9hYmJyZXYuZWwgKGFiYnJldi1zdWdnZXN0KTogTmV3IGRlZmN1c3RvbS4KICAgIChhYmJy ZXYtc3VnZ2VzdC1oaW50LXRocmVzaG9sZCk6IE5ldyBkZWZjdXN0b20uCiAgICAoYWJicmV2LS1z dWdnZXN0LWdldC1hY3RpdmUtdGFibGVzLWluY2x1ZGluZy1wYXJlbnRzKTogTmV3IGRlZnVuLgog ICAgKGFiYnJldi0tc3VnZ2VzdC1nZXQtYWN0aXZlLWFiYnJldi1leHBhbnNpb25zKTogTmV3IGRl ZnVuLgogICAgKGFiYnJldi0tc3VnZ2VzdC1jb3VudC13b3Jkcyk6IE5ldyBkZWZ1bi4KICAgIChh YmJyZXYtLXN1Z2dlc3QtZ2V0LXByZXZpb3VzLXdvcmRzKTogTmV3IGRlZnVuLgogICAgKGFiYnJl di0tc3VnZ2VzdC1hYm92ZS10aHJlc2hvbGQpOiBOZXcgZGVmdW4uCiAgICAoYWJicmV2LS1zdWdn ZXN0LXNhdmVkLXJlY29tbWVuZGF0aW9ucyk6IE5ldyBkZWZ2YXIuCiAgICAoYWJicmV2LS1zdWdn ZXN0LWluZm9ybS11c2VyKTogTmV3IGRlZnVuLgogICAgKGFiYnJldi0tc3VnZ2VzdC1zaG9ydGVz dC1hYmJyZXYpOiBOZXcgZGVmdW4uCiAgICAoYWJicmV2LS1zdWdnZXN0LW1heWJlLXN1Z2dlc3Qp OiBOZXcgZGVmdW4uCiAgICAoYWJicmV2LS1zdWdnZXN0LWdldC10b3RhbHMpOiBOZXcgZGVmdW4u CiAgICAoYWJicmV2LXN1Z2dlc3Qtc2hvdy1yZXBvcnQpOiBOZXcgZGVmdW4uCiAgICAoZXhwYW5k LWFiYnJldik6IElmIHRoZSBwcmV2aW91cyB3b3JkIHdhcyBub3QgYW4gYWJicmV2LCBtYXliZQog ICAgc3VnZ2VzdCBhbiBhYmJyZXYgdG8gdGhlIHVzZXIuCiAgICAqIGRvYy9lbWFjcy9hYmJyZXZz LnRleGkgKEFiYnJldiBzdWdnZXN0aW9ucyk6IE5ldyBzZWN0aW9uLgogICAgKiBldGMvTkVXUzog QW5ub3VuY2UgYWJicmV2IHN1Z2dlc3Rpb25zLgotLS0KIGRvYy9lbWFjcy9hYmJyZXZzLnRleGkg fCAgMzMgKysrKysrKysrKysrCiBldGMvTkVXUyAgICAgICAgICAgICAgIHwgICA4ICsrKwogbGlz cC9hYmJyZXYuZWwgICAgICAgICB8IDE0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL2FiYnJldnMudGV4aSBiL2RvYy9l bWFjcy9hYmJyZXZzLnRleGkKaW5kZXggMjFiZjhjNS4uZmJlNzExNyAxMDA2NDQKLS0tIGEvZG9j L2VtYWNzL2FiYnJldnMudGV4aQorKysgYi9kb2MvZW1hY3MvYWJicmV2cy50ZXhpCkBAIC0yOCw2 ICsyOCw3IEBAIEFiYnJldnMKICogQWJicmV2IENvbmNlcHRzOjogICBGdW5kYW1lbnRhbHMgb2Yg ZGVmaW5lZCBhYmJyZXZzLgogKiBEZWZpbmluZyBBYmJyZXZzOjogIERlZmluaW5nIGFuIGFiYnJl diwgc28gaXQgd2lsbCBleHBhbmQgd2hlbiB0eXBlZC4KICogRXhwYW5kaW5nIEFiYnJldnM6OiBD b250cm9sbGluZyBleHBhbnNpb246IHByZWZpeGVzLCBjYW5jZWxpbmcgZXhwYW5zaW9uLgorKiBB YmJyZXZzIFN1Z2dlc3Rpb25zOjogR2V0IHN1Z2dlc3Rpb25zIGFib3V0IGRlZmluZWQgYWJicmV2 cy4KICogRWRpdGluZyBBYmJyZXZzOjogICBWaWV3aW5nIG9yIGVkaXRpbmcgdGhlIGVudGlyZSBs aXN0IG9mIGRlZmluZWQgYWJicmV2cy4KICogU2F2aW5nIEFiYnJldnM6OiAgICBTYXZpbmcgdGhl IGVudGlyZSBsaXN0IG9mIGFiYnJldnMgZm9yIGFub3RoZXIgc2Vzc2lvbi4KICogRHluYW1pYyBB YmJyZXZzOjogICBBYmJyZXZpYXRpb25zIGZvciB3b3JkcyBhbHJlYWR5IGluIHRoZSBidWZmZXIu CkBAIC0yMjMsNiArMjI0LDM4IEBAIEV4cGFuZGluZyBBYmJyZXZzCiB0aGUgYWJicmV2IGV4cGFu c2lvbi4gIEB4cmVme0FiYnJldiBFeHBhbnNpb24sLCwgZWxpc3AsIFRoZSBFbWFjcyBMaXNwCiBS ZWZlcmVuY2UgTWFudWFsfS4KIAorQG5vZGUgQWJicmV2IFN1Z2dlc3Rpb25zCitAc2VjdGlvbiBB YmJyZXYgU3VnZ2VzdGlvbnMKKworICBZb3UgY2FuIGdldCBhYmJyZXYgc3VnZ2VzdGlvbnMgd2hl biB5b3UgbWFudWFsbHkgdHlwZSB0ZXh0IGZvciB3aGljaAordGhlcmUgaXMgY3VycmVudGx5IGFu IGFjdGl2ZSBkZWZpbmVkIGFiYnJldi4gIEZvciBleGFtcGxlLCBpZiB0aGVyZSBpcworYW4gYWJi cmV2IEBzYW1we2Zvb30gd2l0aCB0aGUgZXhwYW5zaW9uIEBzYW1we2ZpbmQgb3V0ZXIgb3R0ZXJ9 LCBhbmQKK3lvdSBtYW51YWxseSB0eXBlIEBzYW1we2ZpbmQgb3V0ZXIgb3R0ZXJ9LCB0aGUgYWJi cmV2IHN1Z2dlc3Rpb24KK2ZlYXR1cmUgd2lsbCBub3RpY2UgdGhpcyBhbmQgc2hvdyBhIGhpbnQg aW4gdGhlIGVjaG8gd2hlbiB5b3UgaGF2ZQorc3RvcCB0eXBpbmcuCisKK0B2aW5kZXggYWJicmV2 LXN1Z2dlc3QKKyAgRW5hYmxlIHRoZSBhYmJyZXYgc3VnZ2VzdGlvbiBmZWF0dXJlIGJ5IHNldHRp bmcgdGhlIHZhcmlhYmxlCitAY29kZXthYmJyZXYtc3VnZ2VzdH0gdG8gQGNvZGV7dH0uCisKK0B2 aW5kZXggYWJicmV2LXN1Z2dlc3QtaGludC10aHJlc2hvbGQKKyAgVGhlIHZhcmlhYmxlIEBjb2Rl e2FiYnJldi1zdWdnZXN0LWhpbnQtdGhyZXNob2xkfSBjb250cm9scyB3aGVuIHRvCitzdWdnZXN0 IGFuIGFiYnJldiB0byB0aGUgdXNlci4gIFRoZSB2YXJpYWJsZSBkZWZpbmVzIHRoZSBudW1iZXIg b2YKK2NoYXJhY3RlcnMgdGhhdCB0aGUgdXNlciBtdXN0IHNhdmUgaW4gb3JkZXIgdG8gZ2V0IGEg c3VnZ2VzdGlvbi4gIEZvcgorZXhhbXBsZSwgaWYgdGhlIHVzZXIgdHlwZXMgQHNhbXB7Zm9vIGJh cn0gKHNldmVuIGNoYXJhY3RlcnMpIGFuZCB0aGVyZQoraXMgYW4gYWJicmV2IEBzYW1we2Z1YmFy fSBkZWZpbmVkIChmaXZlIGNoYXJhY3RlcnMpLCB0aGUgdXNlciB3aWxsIG5vdAorZ2V0IGFueSBz dWdnZXN0aW9uIHVubGVzcyB0aGUgdGhyZXNob2xkIGlzIHNldCB0byB0aGUgbnVtYmVyIDIgb3IK K2xvd2VyLiAgV2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSAzLCB0aGUgdXNlciB3b3VsZCBub3QgZ2V0 IGFueQorc3VnZ2VzdGlvbiwgYmVjYXVzZSB0aGUgc2F2aW5ncyBpbiB1c2luZyB0aGUgYWJicmV2 IGFyZSB0b28gc21hbGwsIG5vdAorYWJvdmUgdGhlIHRocmVzaG9sZC4gIElmIHlvdSBhbHdheXMg d2FudCB0byBnZXQgYWJicmV2IHN1Z2dlc3Rpb25zLAorc2V0IHRoaXMgdmFyaWFibGUgdG8gMC4K KworQGZpbmRleCBhYmJyZXYtc3VnZ2VzdC1zaG93LXJlcG9ydAorICBUaGUgY29tbWFuZCBAY29k ZXthYmJyZXYtc3VnZ2VzdC1zaG93LXJlcG9ydH0gY2FuIGJlIHVzZWQgdG8gc2hvdyBhCitidWZm ZXIgd2l0aCBhbGwgYWJicmV2IHN1Z2dlc3Rpb25zIGZyb20gdGhlIGN1cnJlbnQgZWRpdGluZyBz ZXNzaW9uLgorVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBnZXQgc2V2ZXJhbCBhYmJyZXYgc3Vn Z2VzdGlvbnMgYW5kIGRvbid0CityZW1lbWJlciB0aGVtIGFsbC4KKwogQG5vZGUgRWRpdGluZyBB YmJyZXZzCiBAc2VjdGlvbiBFeGFtaW5pbmcgYW5kIEVkaXRpbmcgQWJicmV2cwogCmRpZmYgLS1n aXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IDQwNzY2MzAuLmI0ZGM1MmEgMTAwNjQ0Ci0t LSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0xMTU4LDYgKzExNTgsMTQgQEAgbWVzc2Fn ZXMsIGNvbnRhaW4gdGhlIGVycm9yIG5hbWUgb2YgdGhhdCBtZXNzYWdlIG5vdy4gIFRoZXkgY2Fu IGJlCiBtYWRlIHZpc2libGUgYnkgc2V0dGluZyB1c2VyIHZhcmlhYmxlICdkYnVzLXNob3ctZGJ1 cy1lcnJvcnMnIHRvCiBub24tbmlsLCBldmVuIGlmIHByb3RlY3RlZCBieSAnZGJ1cy1pZ25vcmUt ZXJyb3JzJyBvdGhlcndpc2UuCiAKKyoqIEFiYnJldiBtb2RlCisKKysrKworKioqIEEgbmV3IHVz ZXIgb3B0aW9uLCAnYWJicmV2LXN1Z2dlc3QnLCBlbmFibGVzIHRoZSBuZXcgYWJicmV2CitzdWdn ZXN0aW9uIGZlYXR1cmUuICBXaGVuIGVuYWJsZWQsIGlmIGEgdXNlciBtYW51YWxseSB0eXBlIGEg cGllY2Ugb2YKK3RleHQgdGhhdCBjb3VsZCBoYXZlIGJlZW4gd3JpdHRlbiBieSB1c2luZyBhbiBh YmJyZXYsIGEgaGludCB3aWxsIGJlCitkaXNwbGF5ZWQgbWVudGlvbmluZyB0aGUgYWJicmV2IHRo YXQgY291bGQgaGF2ZSBiZWVuIHVzZWQgaW5zdGVhZC4KKwogDAogKiBOZXcgTW9kZXMgYW5kIFBh Y2thZ2VzIGluIEVtYWNzIDI4LjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9hYmJyZXYuZWwgYi9saXNw L2FiYnJldi5lbAppbmRleCBiZTZmOWVlLi5hMjQ5ZGMwIDEwMDY0NAotLS0gYS9saXNwL2FiYnJl di5lbAorKysgYi9saXNwL2FiYnJldi5lbApAQCAtODI0LDYgKzgyNCwxNDUgQEAgYWJicmV2LWV4 cGFuZC1mdW5jdGlvbgogICAiRnVuY3Rpb24gdGhhdCBgZXhwYW5kLWFiYnJldicgdXNlcyB0byBw ZXJmb3JtIGFiYnJldiBleHBhbnNpb24uCiBUYWtlcyBubyBhcmd1bWVudCBhbmQgc2hvdWxkIHJl dHVybiB0aGUgYWJicmV2IHN5bWJvbCBpZiBleHBhbnNpb24gdG9vayBwbGFjZS4iKQogCisoZGVm Y3VzdG9tIGFiYnJldi1zdWdnZXN0IG5pbAorICAiTm9uLW5pbCBtZWFucyBzdWdnZXN0IGFiYnJl dnMgdG8gdGhlIHVzZXIuCitCeSBlbmFibGluZyB0aGlzIG9wdGlvbiwgaWYgYWJicmV2IG1vZGUg aXMgZW5hYmxlZCBhbmQgaWYgdGhlCit1c2VyIGhhcyB0eXBlZCBzb21lIHRleHQgdGhhdCBleGlz dHMgYXMgYW4gYWJicmV2LCBzdWdnZXN0IHRvIHRoZQordXNlciB0byB1c2UgdGhlIGFiYnJldiBp bnN0ZWFkLiIKKyAgICA6dHlwZSAnYm9vbGVhbgorICAgIDpncm91cCAnYWJicmV2LW1vZGUKKyAg ICA6dmVyc2lvbiAiMjguMCIpCisKKyhkZWZjdXN0b20gYWJicmV2LXN1Z2dlc3QtaGludC10aHJl c2hvbGQgMworICAiVGhyZXNob2xkIGZvciB3aGVuIHRvIGluZm9ybSB0aGUgdXNlciB0aGF0IHRo ZXJlIGlzIGFuIGFiYnJldi4KK1RoZSB0aHJlc2hvbGQgaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0 ZXJzIHRoYXQgZGlmZmVyIGJldHdlZW4gdGhlCitsZW5ndGggb2YgdGhlIGFiYnJldiBhbmQgdGhl IGxlbmd0aCBvZiB0aGUgZXhwYW5zaW9uLiAgVGhlCit0aGlua2luZyBpcyB0aGF0IGlmIHRoZSBl eHBhbnNpb24gaXMgb25seSBvbmUgb3IgYSBmZXcgY2hhcmFjdGVycworbG9uZ2VyIHRoYW4gdGhl IGFiYnJldiwgdGhlIGJlbmVmaXQgb2YgaW5mb3JtaW5nIHRoZSB1c2VyIGlzIG5vdAordGhhdCBi aWcuICBJZiB5b3UgYWx3YXlzIHdhbnQgdG8gYmUgaW5mb3JtZWQsIHNldCB0aGlzIHZhbHVlIHRv CitgMCcgb3IgbGVzcy4gIFRoaXMgc2V0dGluZyBvbmx5IGFwcGxpZXMgaWYgYGFiYnJldi1zdWdn ZXN0JyBpcworbm9uLW5pbC4iCisgICAgOnR5cGUgJ251bWJlcgorICAgIDpncm91cCAnYWJicmV2 LW1vZGUKKyAgICA6dmVyc2lvbiAiMjguMCIpCisKKyhkZWZ1biBhYmJyZXYtLXN1Z2dlc3QtZ2V0 LWFjdGl2ZS10YWJsZXMtaW5jbHVkaW5nLXBhcmVudHMgKCkKKyAgIlJldHVybiBhIGxpc3Qgb2Yg YWxsIGFjdGl2ZSBhYmJyZXYgdGFibGVzLCBpbmNsdWRpbmcgcGFyZW50IHRhYmxlcy4iCisgIChs ZXQqICgodGFibGVzIChhYmJyZXYtLWFjdGl2ZS10YWJsZXMpKQorCSAoYWxsIHRhYmxlcykpCisg ICAgKGRvbGlzdCAodGFibGUgdGFibGVzKQorICAgICAgKHNldHEgYWxsIChhcHBlbmQgKGFiYnJl di10YWJsZS1nZXQgdGFibGUgOnBhcmVudHMpIGFsbCkpKQorICAgIGFsbCkpCisKKyhkZWZ1biBh YmJyZXYtLXN1Z2dlc3QtZ2V0LWFjdGl2ZS1hYmJyZXYtZXhwYW5zaW9ucyAoKQorICAiUmV0dXJu IGEgbGlzdCBvZiBhbGwgdGhlIGFjdGl2ZSBhYmJyZXYgZXhwYW5zaW9ucy4KK0luY2x1ZGVzIGV4 cGFuc2lvbnMgZnJvbSBwYXJlbnQgYWJicmV2IHRhYmxlcy4iCisgICAgKGxldCAoZXhwYW5zaW9u cykKKyAgICAgIChkb2xpc3QgKHRhYmxlIChhYmJyZXYtLXN1Z2dlc3QtZ2V0LWFjdGl2ZS10YWJs ZXMtaW5jbHVkaW5nLXBhcmVudHMpKQorCShtYXBhdG9tcyAobGFtYmRhIChlKQorCQkgICAgKGxl dCAoKHZhbHVlIChzeW1ib2wtdmFsdWUgKGFiYnJldi0tc3ltYm9sIGUgdGFibGUpKSkpCisJCSAg ICAgICh3aGVuIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAoY29ucyB2YWx1 ZSAoc3ltYm9sLW5hbWUgZSkpIGV4cGFuc2lvbnMpKSkpCisJCSAgdGFibGUpKQorICAgICAgZXhw YW5zaW9ucykpCisKKyhkZWZ1biBhYmJyZXYtLXN1Z2dlc3QtY291bnQtd29yZHMgKGV4cGFuc2lv bikKKyAgIlJldHVybiB0aGUgbnVtYmVyIG9mIHdvcmRzIGluIEVYUEFOU0lPTi4KK0V4cGFuc2lv biBpcyBhIHN0cmluZyBvZiBvbmUgb3IgbW9yZSB3b3Jkcy4iCisgICAgKGxlbmd0aCAoc3BsaXQt c3RyaW5nIGV4cGFuc2lvbiAiICIgdCkpKQorCisoZGVmdW4gYWJicmV2LS1zdWdnZXN0LWdldC1w cmV2aW91cy13b3JkcyAobikKKyAgIlJldHVybiB0aGUgTiB3b3JkcyBiZWZvcmUgcG9pbnQsIHNw YWNlcyBpbmNsdWRlZC4KK0NoYW5nZXMgbmV3bGluZXMgaW50byBzcGFjZXMuIgorICAgIChsZXQg KChlbmQgKHBvaW50KSkpCisgICAgICAoc2F2ZS1leGN1cnNpb24KKwkoYmFja3dhcmQtd29yZCBu KQorCShyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKwkgIlxccyAiICIgIgorCSAoYnVmZmVyLXN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludCkgZW5kKSkpKSkKKworKGRlZnVuIGFiYnJldi0t c3VnZ2VzdC1hYm92ZS10aHJlc2hvbGQgKGV4cGFuc2lvbikKKyAgIlJldHVybiBub24tbmlsIGlm IGFuIGFiYnJldiBpbiBFWFBBTlNJT04gcHJvdmlkZXMgc2lnbmlmaWNhbnQgc2F2aW5ncy4KK0Eg c2lnbmlmaWNhbnQgc2F2aW5nLCBoZXJlLCBpcyB0aGUgZGlmZmVyZW5jZSBpbiBsZW5ndGggYmV0 d2VlbgordGhlIGFiYnJldiBhbmQgdGhlIGFiYnJldiBleHBhbnNpb24uICBFWFBBTlNJT04gaXMg YSBjb25zIGNlbGwKK3doZXJlIHRoZSBjYXIgaXMgdGhlIGV4cGFuc2lvbiBhbmQgdGhlIGNkciBp cyB0aGUgYWJicmV2LiIKKyAgICAoPj0gKC0gKGxlbmd0aCAoY2FyIGV4cGFuc2lvbikpCisJICAg KGxlbmd0aCAoY2RyIGV4cGFuc2lvbikpKQorCWFiYnJldi1zdWdnZXN0LWhpbnQtdGhyZXNob2xk KSkKKworKGRlZnZhciBhYmJyZXYtLXN1Z2dlc3Qtc2F2ZWQtcmVjb21tZW5kYXRpb25zIG5pbAor ICAgICJLZWVwcyBhIGxpc3Qgb2YgZXhwYW5zaW9ucyB0aGF0IGhhdmUgYWJicmV2cyBkZWZpbmVk LgorVGhlIHVzZXIgY2FuIHNob3cgdGhpcyBsaXN0IGJ5IGNhbGxpbmcKK2BhYmJyZXYtc3VnZ2Vz dC1zaG93LXJlcG9ydCcuIikKKworKGRlZnVuIGFiYnJldi0tc3VnZ2VzdC1pbmZvcm0tdXNlciAo ZXhwYW5zaW9uKQorICAgICJEaXNwbGF5IGEgbWVzc2FnZSB0byB0aGUgdXNlciBhYm91dCB0aGUg ZXhpc3RpbmcgYWJicmV2LgorRVhQQU5TSU9OIGlzIGEgY29ucyBjZWxsIHdoZXJlIHRoZSBgY2Fy JyBpcyB0aGUgZXhwYW5zaW9uIGFuZCB0aGUKK2BjZHInIGlzIHRoZSBhYmJyZXYuIgorICAgIChy dW4td2l0aC1pZGxlLXRpbWVyCisgICAgIDEgbmlsCisgICAgIChsYW1iZGEgKCkKKyAgICAgICAo bWVzc2FnZSAiWW91IGNhbiB3cml0ZSBgJXMnIHVzaW5nIHRoZSBhYmJyZXYgYCVzJy4iCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgZXhwYW5zaW9uKSAoY2RyIGV4cGFu c2lvbikpKSkKKyAgICAocHVzaCBleHBhbnNpb24gYWJicmV2LS1zdWdnZXN0LXNhdmVkLXJlY29t bWVuZGF0aW9ucykpCisKKyhkZWZ1biBhYmJyZXYtLXN1Z2dlc3Qtc2hvcnRlc3QtYWJicmV2IChu ZXcgY3VycmVudCkKKyAgICAiUmV0dXJuIHRoZSBzaG9ydGVzdCBhYmJyZXYgb2YgTkVXIGFuZCBD VVJSRU5ULgorTkVXIGFuZCBDVVJSRU5UIGFyZSBjb25zIGNlbGxzIHdoZXJlIHRoZSBgY2FyJyBp cyB0aGUgZXhwYW5zaW9uCithbmQgdGhlIGBjZHInIGlzIHRoZSBhYmJyZXYuIgorICAgIChpZiAo bm90IGN1cnJlbnQpCisJbmV3CisgICAgICAoaWYgKDwgKGxlbmd0aCAoY2RyIG5ldykpCisJICAg ICAobGVuZ3RoIChjZHIgY3VycmVudCkpKQorCSAgbmV3CisJY3VycmVudCkpKQorCisoZGVmdW4g YWJicmV2LS1zdWdnZXN0LW1heWJlLXN1Z2dlc3QgKCkKKyAgICAiU3VnZ2VzdCBhbiBhYmJyZXYg dG8gdGhlIHVzZXIgYmFzZWQgb24gdGhlIHdvcmQocykgYmVmb3JlIHBvaW50LgorVXNlcyBgYWJi cmV2LXN1Z2dlc3QtaGludC10aHJlc2hvbGQnIHRvIGZpbmQgb3V0IGlmIHRoZSB1c2VyIHNob3Vs ZCBiZQoraW5mb3JtZWQgYWJvdXQgdGhlIGV4aXN0aW5nIGFiYnJldi4iCisgICAgKGxldCAod29y ZHMgYWJicmV2LWZvdW5kIHdvcmQtY291bnQpCisgICAgICAoZG9saXN0IChleHBhbnNpb24gKGFi YnJldi0tc3VnZ2VzdC1nZXQtYWN0aXZlLWFiYnJldi1leHBhbnNpb25zKSkKKwkoc2V0cSB3b3Jk LWNvdW50IChhYmJyZXYtLXN1Z2dlc3QtY291bnQtd29yZHMgKGNhciBleHBhbnNpb24pKQorCSAg ICAgIHdvcmRzIChhYmJyZXYtLXN1Z2dlc3QtZ2V0LXByZXZpb3VzLXdvcmRzIHdvcmQtY291bnQp KQorCShsZXQgKChjYXNlLWZvbGQtc2VhcmNoIHQpKQorCSAgKHdoZW4gKGFuZCAoPiB3b3JkLWNv dW50IDApCisJCSAgICAgKHN0cmluZy1tYXRjaCAoY2FyIGV4cGFuc2lvbikgd29yZHMpCisJCSAg ICAgKGFiYnJldi0tc3VnZ2VzdC1hYm92ZS10aHJlc2hvbGQgZXhwYW5zaW9uKSkKKwkgICAgKHNl dHEgYWJicmV2LWZvdW5kIChhYmJyZXYtLXN1Z2dlc3Qtc2hvcnRlc3QtYWJicmV2CisJCQkJZXhw YW5zaW9uIGFiYnJldi1mb3VuZCkpKSkpCisgICAgICAod2hlbiBhYmJyZXYtZm91bmQKKwkoYWJi cmV2LS1zdWdnZXN0LWluZm9ybS11c2VyIGFiYnJldi1mb3VuZCkpKSkKKworKGRlZnVuIGFiYnJl di0tc3VnZ2VzdC1nZXQtdG90YWxzICgpCisgICAgIlJldHVybiBhIGxpc3Qgb2YgYWxsIGV4cGFu c2lvbnMgYW5kIGhvdyBtYW55IHRpbWVzIHRoZXkgd2VyZSB1c2VkLgorRWFjaCBleHBhbnNpb24g aXMgYSBjb25zIGNlbGwgd2hlcmUgdGhlIGBjYXInIGlzIHRoZSBleHBhbnNpb24KK2FuZCB0aGUg YGNkcicgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZXhwYW5zaW9uIGhhcyBiZWVuCit0eXBl ZC4iCisgICAgKGxldCAodG90YWwgY2VsbCkKKyAgICAgIChkb2xpc3QgKGV4cGFuc2lvbiBhYmJy ZXYtLXN1Z2dlc3Qtc2F2ZWQtcmVjb21tZW5kYXRpb25zKQorCShpZiAobm90IChhc3NvYyAoY2Fy IGV4cGFuc2lvbikgdG90YWwpKQorCSAgICAocHVzaCAoY29ucyAoY2FyIGV4cGFuc2lvbikgMSkg dG90YWwpCisJICAoc2V0cSBjZWxsIChhc3NvYyAoY2FyIGV4cGFuc2lvbikgdG90YWwpKQorCSAg KHNldGNkciBjZWxsICgxKyAoY2RyIGNlbGwpKSkpKQorICAgICAgdG90YWwpKQorCisoZGVmdW4g YWJicmV2LXN1Z2dlc3Qtc2hvdy1yZXBvcnQgKCkKKyAgIlNob3cgdGhlIHVzZXIgYSByZXBvcnQg b2YgYWJicmV2cyBoZSBjb3VsZCBoYXZlIHVzZWQuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQg KCh0b3RhbHMgKGFiYnJldi0tc3VnZ2VzdC1nZXQtdG90YWxzKSkKKwkoYnVmIChnZXQtYnVmZmVy LWNyZWF0ZSAiKmFiYnJldi1zdWdnZXN0KiIpKSkKKyAgICAoc2V0LWJ1ZmZlciBidWYpCisgICAg KGVyYXNlLWJ1ZmZlcikKKyAgICAgICAgKGluc2VydCAiKiogQWJicmV2IGV4cGFuc2lvbiB1c2Fn ZSAqKgorCitCZWxvdyBpcyBhIGxpc3Qgb2YgZXhwYW5zaW9ucyBmb3Igd2hpY2ggYWJicmV2cyBh cmUgZGVmaW5lZCwgYW5kCit0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBleHBhbnNpb24gd2FzIHR5 cGVkIG1hbnVhbGx5LiAgVG8gZGlzcGxheQorYW5kIGVkaXQgYWxsIGFiYnJldnMsIHR5cGUgYE0t eCBlZGl0LWFiYnJldnMgUkVUJ1xuXG4iKQorCShkb2xpc3QgKGV4cGFuc2lvbiB0b3RhbHMpCisJ ICAoaW5zZXJ0IChmb3JtYXQgIiAlczogJWRcbiIgKGNhciBleHBhbnNpb24pIChjZHIgZXhwYW5z aW9uKSkpKQorCShkaXNwbGF5LWJ1ZmZlciBidWYpKSkKKwogKGRlZnVuIGV4cGFuZC1hYmJyZXYg KCkKICAgIkV4cGFuZCB0aGUgYWJicmV2IGJlZm9yZSBwb2ludCwgaWYgdGhlcmUgaXMgYW4gYWJi cmV2IHRoZXJlLgogRWZmZWN0aXZlIHdoZW4gZXhwbGljaXRseSBjYWxsZWQgZXZlbiB3aGVuIGBh YmJyZXYtbW9kZScgaXMgbmlsLgpAQCAtODMxLDcgKzk3MCw5IEBAIGV4cGFuZC1hYmJyZXYKIHRo ZSB3b3JrLCBhbmQgcmV0dXJucyB3aGF0ZXZlciBpdCBkb2VzLiAgKFRoYXQgcmV0dXJuIHZhbHVl IHNob3VsZAogYmUgdGhlIGFiYnJldiBzeW1ib2wgaWYgZXhwYW5zaW9uIG9jY3VycmVkLCBlbHNl IG5pbC4pIgogICAoaW50ZXJhY3RpdmUpCi0gIChmdW5jYWxsIGFiYnJldi1leHBhbmQtZnVuY3Rp b24pKQorICAob3IgKGZ1bmNhbGwgYWJicmV2LWV4cGFuZC1mdW5jdGlvbikKKyAgICAgIChpZiBh YmJyZXYtc3VnZ2VzdAorICAgICAgICAgIChhYmJyZXYtLXN1Z2dlc3QtbWF5YmUtc3VnZ2VzdCkp KSkKIAogKGRlZnVuIGFiYnJldi0tZGVmYXVsdC1leHBhbmQgKCkKICAgIkRlZmF1bHQgZnVuY3Rp b24gdG8gdXNlIGZvciBgYWJicmV2LWV4cGFuZC1mdW5jdGlvbicuCi0tIAoxLjkuMQoK --00000000000036e6a605af4d3768--