From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: Scan of regexps in Emacs (March 17) Date: Tue, 2 Apr 2019 15:08:43 -0700 Organization: UCLA Computer Science Department Message-ID: <692fe297-1c72-0cda-8765-c119fd0b5ef6@cs.ucla.edu> References: <5363970c-3207-1bb4-8b30-74a7d12277cc@cs.ucla.edu> <05269D79-B016-4FCB-94B8-068BF7D1C2D2@acm.org> <3974269b-6cad-0744-bd1f-66c067f94192@cs.ucla.edu> <4b1164c4-e302-ce41-07c3-145d31a97b4c@cs.ucla.edu> <21CCFA3D-B391-44E1-9ED5-1D37009F1988@acm.org> <09AE372B-3A30-4596-8C4E-B9F4CBF6E348@acm.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------27EFA4B8E74AA50B462E8D83" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="103003"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 Cc: Stefan Monnier , emacs-devel@gnu.org To: =?UTF-8?Q?Mattias_Engdeg=c3=a5rd?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Apr 03 00:09:16 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hBRak-000Qe4-Rh for ged-emacs-devel@m.gmane.org; Wed, 03 Apr 2019 00:09:15 +0200 Original-Received: from localhost ([127.0.0.1]:36992 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hBRaj-00066b-SY for ged-emacs-devel@m.gmane.org; Tue, 02 Apr 2019 18:09:13 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:53338) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hBRaW-00060b-4J for emacs-devel@gnu.org; Tue, 02 Apr 2019 18:09:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hBRaR-00049d-MN for emacs-devel@gnu.org; Tue, 02 Apr 2019 18:08:59 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:53830) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hBRaQ-00047q-8c for emacs-devel@gnu.org; Tue, 02 Apr 2019 18:08:55 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3E55D160EE5; Tue, 2 Apr 2019 15:08:45 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 0Gu56Onz7a88; Tue, 2 Apr 2019 15:08:43 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 7A50916145A; Tue, 2 Apr 2019 15:08:43 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id wipv9v1Oh628; Tue, 2 Apr 2019 15:08:43 -0700 (PDT) Original-Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 48457160EE5; Tue, 2 Apr 2019 15:08:43 -0700 (PDT) Openpgp: preference=signencrypt Autocrypt: addr=eggert@cs.ucla.edu; prefer-encrypt=mutual; keydata= xsFNBEyAcmQBEADAAyH2xoTu7ppG5D3a8FMZEon74dCvc4+q1XA2J2tBy2pwaTqfhpxxdGA9 Jj50UJ3PD4bSUEgN8tLZ0san47l5XTAFLi2456ciSl5m8sKaHlGdt9XmAAtmXqeZVIYX/UFS 96fDzf4xhEmm/y7LbYEPQdUdxu47xA5KhTYp5bltF3WYDz1Ygd7gx07Auwp7iw7eNvnoDTAl KAl8KYDZzbDNCQGEbpY3efZIvPdeI+FWQN4W+kghy+P6au6PrIIhYraeua7XDdb2LS1en3Ss mE3QjqfRqI/A2ue8JMwsvXe/WK38Ezs6x74iTaqI3AFH6ilAhDqpMnd/msSESNFt76DiO1ZK QMr9amVPknjfPmJISqdhgB1DlEdw34sROf6V8mZw0xfqT6PKE46LcFefzs0kbg4GORf8vjG2 Sf1tk5eU8MBiyN/bZ03bKNjNYMpODDQQwuP84kYLkX2wBxxMAhBxwbDVZudzxDZJ1C2VXujC OJVxq2kljBM9ETYuUGqd75AW2LXrLw6+MuIsHFAYAgRr7+KcwDgBAfwhPBYX34nSSiHlmLC+ KaHLeCLF5ZI2vKm3HEeCTtlOg7xZEONgwzL+fdKo+D6SoC8RRxJKs8a3sVfI4t6CnrQzvJbB n6gxdgCu5i29J1QCYrCYvql2UyFPAK+do99/1jOXT4m2836j1wARAQABzSBQYXVsIEVnZ2Vy dCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PsLBfgQTAQIAKAUCTIByZAIbAwUJEswDAAYLCQgHAwIG FQgCCQoLBBYCAwECH In-Reply-To: <09AE372B-3A30-4596-8C4E-B9F4CBF6E348@acm.org> Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:234906 Archived-At: This is a multi-part message in MIME format. --------------27EFA4B8E74AA50B462E8D83 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 4/2/19 7:15 AM, Mattias Engdeg=C3=A5rd wrote: > where does a user go to understand extant regexps? A user that *really* wants to know can go read the source code and get confused, just like I did. :-) But I think it's better if the documentation doesn't say what happens. If you prefer that the documentation explicitly say that it doesn't say what happens, I guess that would be OK too (what sort of wording would you like, though?). > (Do we have any latitude at all for changing even obscure corners of > regexp syntax and semantics today?) I would say so, certainly for the raw 8-bit-bytes in ranges stuff (where nobody knows what they mean or even should mean), and possibly even for some of the other rarely-used and questionable uses. > > I've attached the ones found by a modified relint/xr, in case you are i= nterested. Sure! Fixed in the attached patch. > > +A character alternative can include duplicates. For example, > +@samp{[XYa-yYb-zX]} is less clear than @samp{[XYa-z]}. > > Certainly, but does this need to be mentioned? Overlapping ranges are r= arely written on purpose. Besides, duplication isn't confined to ranges. That example does contains non-range duplicates. I think duplicates are worth mentioning (if only so that your trawler can point to the style advice if people complain about the trawler being too picky :-). > More useful, I think, would be to recommend ranges to stay within natur= al sequences (letters, digits, etc) so that a reader needn't consult a ta= ble to see what is included. Thus [0-9.:/] good, [.-:] bad, even though t= hey denote the same set. Good idea. I did that in the attached patch, which I just installed into master and I hope addresses the points you raised. I hope that the Thai example doesn't mess things up (I considered doing Arabic, which would have been more fun :-). --------------27EFA4B8E74AA50B462E8D83 Content-Type: text/plain; charset=UTF-8; name="0001-Improve-regexp-advice-again-and-unchain-ranges.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Improve-regexp-advice-again-and-unchain-ranges.txt" RnJvbSA0ZDYwMzYwMjFjMzZjZDVmNmYyZDhiZWVkZjllNTIyOThhYmM4ZDNhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUdWUsIDIgQXByIDIwMTkgMTU6MDA6NTkgLTA3MDAKU3ViamVjdDogW1BBVENI XSBJbXByb3ZlIHJlZ2V4cCBhZHZpY2UgYWdhaW4sIGFuZCB1bmNoYWluIHJhbmdlcwpNSU1F LVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgK Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKKiBkb2MvbGlzcHJlZi9zZWFyY2hp bmcudGV4aSAoUmVnZXhwIFNwZWNpYWwpOgpNZW50aW9uIGNoYXIgY2xhc3NlcyBlYXJsaWVy LCBpbiBhIG1vcmUtbG9naWNhbCBwbGFjZS4KQWR2aXNlIHN0aWNraW5nIHRvIEFTQ0lJIGxl dHRlcnMgYW5kIGRpZ2l0cyBpbiByYW5nZXMuClJld29yZCBuZWdhdGl2ZSBhZHZpY2UgdG8g bWFrZSBpdCBjbGVhcmVyIHRoYXQgaXTigJlzIG5lZ2F0aXZlLgoqIGxpc3AvZmlsZXMuZWwg KG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSk6CiogbGlzcC9nbnVzL21lc3NhZ2UuZWwgKG1l c3NhZ2UtbWFpbGVyLXN3YWxsb3dzLWJsYW5rLWxpbmUpOgoqIGxpc3AvZ251cy9ubmRvYy5l bCAobm5kb2MtbGFubC1nb3YtYW5ub3VuY2UtdHlwZS1wKQoobm5kb2MtZ2VuZXJhdGUtbGFu bC1nb3YtaGVhZCk6CiogbGlzcC9vcmcvb3JnLWVzaGVsbC5lbCAob3JnLWVzaGVsbC1vcGVu KToKKiBsaXNwL29yZy9vcmcuZWwgKG9yZy1kZWFkbGluZS10aW1lLWhvdXItcmVnZXhwKQoo b3JnLXNjaGVkdWxlZC10aW1lLWhvdXItcmVnZXhwKToKKiBsaXNwL3Byb2dtb2Rlcy9iYXQt bW9kZS5lbCAoYmF0LWZvbnQtbG9jay1rZXl3b3Jkcyk6CiogbGlzcC9wcm9nbW9kZXMvYnVn LXJlZmVyZW5jZS5lbCAoYnVnLXJlZmVyZW5jZS1idWctcmVnZXhwKToKKiBsaXNwL3RleHRt b2Rlcy9sZXNzLWNzcy1tb2RlLmVsIChsZXNzLWNzcy1mb250LWxvY2sta2V5d29yZHMpOgoq IGxpc3AvdmMvdmMtY3ZzLmVsICh2Yy1jdnMtdmFsaWQtc3ltYm9saWMtdGFnLW5hbWUtcCk6 CiogbGlzcC92Yy92Yy1zdm4uZWwgKHZjLXN2bi12YWxpZC1zeW1ib2xpYy10YWctbmFtZS1w KToKQXZvaWQgYXR0ZW1wdHMgdG8gY2hhaW4gcmFuZ2VzLCBhcyB0aGlzIGNhbiBiZSBjb25m dXNpbmcuCkZvciBleGFtcGxlLCBpbnN0ZWFkIG9mIFswLTktXy5dLCB1c2UgWzAtOV8uLV0u Ci0tLQogZG9jL2xpc3ByZWYvc2VhcmNoaW5nLnRleGkgICAgICB8IDUyICsrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLQogbGlzcC9maWxlcy5lbCAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBsaXNwL2dudXMvbWVzc2FnZS5lbCAgICAgICAgICAgIHwgIDIgKy0KIGxp c3AvZ251cy9ubmRvYy5lbCAgICAgICAgICAgICAgfCAgNCArLS0KIGxpc3Avb3JnL29yZy1l c2hlbGwuZWwgICAgICAgICAgfCAgMiArLQogbGlzcC9vcmcvb3JnLmVsICAgICAgICAgICAg ICAgICB8ICA0ICstLQogbGlzcC9wcm9nbW9kZXMvYmF0LW1vZGUuZWwgICAgICB8ICAyICst CiBsaXNwL3Byb2dtb2Rlcy9idWctcmVmZXJlbmNlLmVsIHwgIDIgKy0KIGxpc3AvdGV4dG1v ZGVzL2xlc3MtY3NzLW1vZGUuZWwgfCAgNCArLS0KIGxpc3AvdmMvdmMtY3ZzLmVsICAgICAg ICAgICAgICAgfCAgMiArLQogbGlzcC92Yy92Yy1zdm4uZWwgICAgICAgICAgICAgICB8ICAy ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9zZWFyY2hpbmcudGV4aSBiL2RvYy9saXNw cmVmL3NlYXJjaGluZy50ZXhpCmluZGV4IDcyZWU5MjMzYTMuLjg3NzUyNTRkZDAgMTAwNjQ0 Ci0tLSBhL2RvYy9saXNwcmVmL3NlYXJjaGluZy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL3Nl YXJjaGluZy50ZXhpCkBAIC0zOTUsOSArMzk1LDE4IEBAIFJlZ2V4cCBTcGVjaWFsCiByYW5n ZSBzaG91bGQgbm90IGJlIHRoZSBzdGFydGluZyBwb2ludCBvZiBhbm90aGVyIG9uZTsgZm9y IGV4YW1wbGUsCiBAc2FtcHtbYS1tLXpdfSBzaG91bGQgYmUgYXZvaWRlZC4KIAorQSBjaGFy YWN0ZXIgYWx0ZXJuYXRpdmUgY2FuIGFsc28gc3BlY2lmeSBuYW1lZCBjaGFyYWN0ZXIgY2xh c3NlcworKEBweHJlZntDaGFyIENsYXNzZXN9KS4gIFRoaXMgaXMgYSBQT1NJWCBmZWF0dXJl LiAgRm9yIGV4YW1wbGUsCitAc2FtcHtbWzphc2NpaTpdXX0gbWF0Y2hlcyBhbnkgQGFjcm9u eW17QVNDSUl9IGNoYXJhY3Rlci4KK1VzaW5nIGEgY2hhcmFjdGVyIGNsYXNzIGlzIGVxdWl2 YWxlbnQgdG8gbWVudGlvbmluZyBlYWNoIG9mIHRoZQorY2hhcmFjdGVycyBpbiB0aGF0IGNs YXNzOyBidXQgdGhlIGxhdHRlciBpcyBub3QgZmVhc2libGUgaW4gcHJhY3RpY2UsCitzaW5j ZSBzb21lIGNsYXNzZXMgaW5jbHVkZSB0aG91c2FuZHMgb2YgZGlmZmVyZW50IGNoYXJhY3Rl cnMuCitBIGNoYXJhY3RlciBjbGFzcyBzaG91bGQgbm90IGFwcGVhciBhcyB0aGUgbG93ZXIg b3IgdXBwZXIgYm91bmQKK29mIGEgcmFuZ2UuCisKIFRoZSB1c3VhbCByZWdleHAgc3BlY2lh bCBjaGFyYWN0ZXJzIGFyZSBub3Qgc3BlY2lhbCBpbnNpZGUgYQogY2hhcmFjdGVyIGFsdGVy bmF0aXZlLiAgQSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzZXQgb2YgY2hhcmFjdGVycyBpcwot c3BlY2lhbCBpbnNpZGUgY2hhcmFjdGVyIGFsdGVybmF0aXZlczogQHNhbXB7XX0sIEBzYW1w ey19IGFuZCBAc2FtcHtefS4KK3NwZWNpYWw6IEBzYW1we119LCBAc2FtcHstfSBhbmQgQHNh bXB7Xn0uCiBUbyBpbmNsdWRlIEBzYW1we119IGluIGEgY2hhcmFjdGVyIGFsdGVybmF0aXZl LCBwdXQgaXQgYXQgdGhlCiBiZWdpbm5pbmcuICBUbyBpbmNsdWRlIEBzYW1we159LCBwdXQg aXQgYW55d2hlcmUgYnV0IGF0IHRoZSBiZWdpbm5pbmcuCiBUbyBpbmNsdWRlIEBzYW1wey19 LCBwdXQgaXQgYXQgdGhlIGVuZC4gIFRodXMsIEBzYW1we1tdXi1dfSBtYXRjaGVzCkBAIC00 MzAsMzMgKzQzOSwzNiBAQCBSZWdleHAgU3BlY2lhbAogQGVuZCBlbnVtZXJhdGUKIAogU29t ZSBraW5kcyBvZiBjaGFyYWN0ZXIgYWx0ZXJuYXRpdmVzIGFyZSBub3QgdGhlIGJlc3Qgc3R5 bGUgZXZlbgotdGhvdWdoIHRoZXkgYXJlIHN0YW5kYXJkaXplZCBieSBQT1NJWCBhbmQgYXJl IHBvcnRhYmxlLiAgVGhleSBpbmNsdWRlOgordGhvdWdoIHRoZXkgaGF2ZSBhIHdlbGwtZGVm aW5lZCBtZWFuaW5nIGluIEVtYWNzLiAgVGhleSBpbmNsdWRlOgogCiBAZW51bWVyYXRlCiBA aXRlbQotQSBjaGFyYWN0ZXIgYWx0ZXJuYXRpdmUgY2FuIGluY2x1ZGUgZHVwbGljYXRlcy4g IEZvciBleGFtcGxlLAotQHNhbXB7W1hZYS15WWItelhdfSBpcyBsZXNzIGNsZWFyIHRoYW4g QHNhbXB7W1hZYS16XX0uCitBbHRob3VnaCBhIHJhbmdlJ3MgYm91bmQgY2FuIGJlIGFsbW9z dCBhbnkgY2hhcmFjdGVyLCBpdCBpcyBiZXR0ZXIKK3N0eWxlIHRvIHN0YXkgd2l0aGluIG5h dHVyYWwgc2VxdWVuY2VzIG9mIEFTQ0lJIGxldHRlcnMgYW5kIGRpZ2l0cworYmVjYXVzZSBt b3N0IHBlb3BsZSBoYXZlIG5vdCBtZW1vcml6ZWQgY2hhcmFjdGVyIGNvZGUgdGFibGVzLgor Rm9yIGV4YW1wbGUsIEBzYW1we1suLTldfSBpcyBsZXNzIGNsZWFyIHRoYW4gQHNhbXB7Wy4v MC05XX0sCithbmQgQHNhbXB7W2Atfl19IGlzIGxlc3MgY2xlYXIgdGhhbiBAc2FtcHtbYGEt ekB7fEB9fl19LgorVW5pY29kZSBjaGFyYWN0ZXIgZXNjYXBlcyBjYW4gaGVscCBoZXJlOyBm b3IgZXhhbXBsZSwgZm9yIG1vc3QgcHJvZ3JhbW1lcnMKK0BzYW1we1vguIEt4Li64Li/LeC5 m119IGlzIGxlc3MgY2xlYXIgdGhhbiBAc2FtcHtbXHUwRTAxLVx1MEUzQVx1MEUzRi1cdTBF NUJdfS4KIAogQGl0ZW0KLUEgcmFuZ2UgY2FuIGRlbm90ZSBqdXN0IG9uZSwgdHdvLCBvciB0 aHJlZSBjaGFyYWN0ZXJzLiAgRm9yIGV4YW1wbGUsCi1Ac2FtcHtbKC0oXX0gaXMgbGVzcyBj bGVhciB0aGFuIEBzYW1we1soXX0sIEBzYW1we1sqLStdfSBpcyBsZXNzIGNsZWFyCi10aGFu IEBzYW1we1sqK119LCBhbmQgQHNhbXB7WyotLF19IGlzIGxlc3MgY2xlYXIgdGhhbiBAc2Ft cHtbKissXX0uCitBbHRob3VnaCBhIGNoYXJhY3RlciBhbHRlcm5hdGl2ZSBjYW4gaW5jbHVk ZSBkdXBsaWNhdGVzLCBpdCBpcyBiZXR0ZXIKK3N0eWxlIHRvIGF2b2lkIHRoZW0uICBGb3Ig ZXhhbXBsZSwgQHNhbXB7W1hZYS15WWItelhdfSBpcyBsZXNzIGNsZWFyCit0aGFuIEBzYW1w e1tYWWEtel19LgogCiBAaXRlbQotQSBAc2FtcHstfSBhbHNvIGFwcGVhciBhdCB0aGUgYmVn aW5uaW5nIG9mIGEgY2hhcmFjdGVyIGFsdGVybmF0aXZlLCBvcgotYXMgdGhlIHVwcGVyIGJv dW5kIG9mIGEgcmFuZ2UuICBGb3IgZXhhbXBsZSwgYWx0aG91Z2ggQHNhbXB7Wy1hLXpdfSBp cwotdmFsaWQsIEBzYW1we1thLXotXX0gaXMgYmV0dGVyIHN0eWxlOyBhbmQgYWx0aG91Z2gg QHNhbXB7WyEtLS9dfSBpcwotdmFsaWQsIEBzYW1we1shLSwvLV19IGlzIGNsZWFyZXIuCi1A ZW5kIGVudW1lcmF0ZQorQWx0aG91Z2ggYSByYW5nZSBjYW4gZGVub3RlIGp1c3Qgb25lLCB0 d28sIG9yIHRocmVlIGNoYXJhY3RlcnMsIGl0CitpcyBzaW1wbGVyIHRvIGxpc3QgdGhlIGNo YXJhY3RlcnMuICBGb3IgZXhhbXBsZSwKK0BzYW1we1thLWEwXX0gaXMgbGVzcyBjbGVhciB0 aGFuIEBzYW1we1thMF19LCBAc2FtcHtbaS1qXX0gaXMgbGVzcyBjbGVhcgordGhhbiBAc2Ft cHtbaWpdfSwgYW5kIEBzYW1we1tpLWtdfSBpcyBsZXNzIGNsZWFyIHRoYW4gQHNhbXB7W2lq a119LgogCi1BIGNoYXJhY3RlciBhbHRlcm5hdGl2ZSBjYW4gYWxzbyBzcGVjaWZ5IG5hbWVk IGNoYXJhY3RlciBjbGFzc2VzCi0oQHB4cmVme0NoYXIgQ2xhc3Nlc30pLiAgVGhpcyBpcyBh IFBPU0lYIGZlYXR1cmUuICBGb3IgZXhhbXBsZSwKLUBzYW1we1tbOmFzY2lpOl1dfSBtYXRj aGVzIGFueSBAYWNyb255bXtBU0NJSX0gY2hhcmFjdGVyLgotVXNpbmcgYSBjaGFyYWN0ZXIg Y2xhc3MgaXMgZXF1aXZhbGVudCB0byBtZW50aW9uaW5nIGVhY2ggb2YgdGhlCi1jaGFyYWN0 ZXJzIGluIHRoYXQgY2xhc3M7IGJ1dCB0aGUgbGF0dGVyIGlzIG5vdCBmZWFzaWJsZSBpbiBw cmFjdGljZSwKLXNpbmNlIHNvbWUgY2xhc3NlcyBpbmNsdWRlIHRob3VzYW5kcyBvZiBkaWZm ZXJlbnQgY2hhcmFjdGVycy4KLUEgY2hhcmFjdGVyIGNsYXNzIHNob3VsZCBub3QgYXBwZWFy IGFzIHRoZSBsb3dlciBvciB1cHBlciBib3VuZAotb2YgYSByYW5nZS4KK0BpdGVtCitBbHRo b3VnaCBhIEBzYW1wey19IGNhbiBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGNoYXJh Y3RlcgorYWx0ZXJuYXRpdmUgb3IgYXMgdGhlIHVwcGVyIGJvdW5kIG9mIGEgcmFuZ2UsIGl0 IGlzIGJldHRlciBzdHlsZSB0bworcHV0IEBzYW1wey19IGJ5IGl0c2VsZiBhdCB0aGUgZW5k IG9mIGEgY2hhcmFjdGVyIGFsdGVybmF0aXZlLiAgRm9yCitleGFtcGxlLCBhbHRob3VnaCBA c2FtcHtbLWEtel19IGlzIHZhbGlkLCBAc2FtcHtbYS16LV19IGlzIGJldHRlcgorc3R5bGU7 IGFuZCBhbHRob3VnaCBAc2FtcHtbKi0tXX0gaXMgdmFsaWQsIEBzYW1we1sqKywtXX0gaXMg Y2xlYXJlci4KK0BlbmQgZW51bWVyYXRlCiAKIEBpdGVtIEBzYW1we1teIEBkb3Rze30gXX0K IEBjaW5kZXggQHNhbXB7Xn0gaW4gcmVnZXhwCmRpZmYgLS1naXQgYS9saXNwL2ZpbGVzLmVs IGIvbGlzcC9maWxlcy5lbAppbmRleCA3N2ExOTRiMDg1Li4xZGFlNTc1OTNhIDEwMDY0NAot LS0gYS9saXNwL2ZpbGVzLmVsCisrKyBiL2xpc3AvZmlsZXMuZWwKQEAgLTYzMTYsNyArNjMx Niw3IEBAIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZQogICAgICAgOzsgV2UgZG8gdGhpcyBv biBhbGwgcGxhdGZvcm1zLCBiZWNhdXNlIGV2ZW4gaWYgd2UgYXJlIG5vdAogICAgICAgOzsg cnVubmluZyBvbiBET1MvV2luZG93cywgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG1heSBiZSBv biBhCiAgICAgICA7OyBtb3VudGVkIFZGQVQgZmlsZXN5c3RlbSwgc3VjaCBhcyBhIFVTQiBt ZW1vcnkgc3RpY2suCi0gICAgICAod2hpbGUgKHN0cmluZy1tYXRjaCAiW15BLVphLXowLTkt Xy5+IytdIiBidWZmZXItbmFtZSBsaW1pdCkKKyAgICAgICh3aGlsZSAoc3RyaW5nLW1hdGNo ICJbXkEtWmEtejAtOV8ufiMrLV0iIGJ1ZmZlci1uYW1lIGxpbWl0KQogCShsZXQqICgoY2hh cmFjdGVyIChhcmVmIGJ1ZmZlci1uYW1lIChtYXRjaC1iZWdpbm5pbmcgMCkpKQogCSAgICAg ICAocmVwbGFjZW1lbnQKICAgICAgICAgICAgICAgICA7OyBGb3IgbXVsdGlieXRlIGNoYXJh Y3RlcnMsIHRoaXMgd2lsbCBwcm9kdWNlIG1vcmUgdGhhbgpkaWZmIC0tZ2l0IGEvbGlzcC9n bnVzL21lc3NhZ2UuZWwgYi9saXNwL2dudXMvbWVzc2FnZS5lbAppbmRleCBkYWU0YjBkY2Vk Li5jOGI2ZjBlZTY4IDEwMDY0NAotLS0gYS9saXNwL2dudXMvbWVzc2FnZS5lbAorKysgYi9s aXNwL2dudXMvbWVzc2FnZS5lbApAQCAtMTI4OCw3ICsxMjg4LDcgQEAgbWVzc2FnZS1tYWls ZXItc3dhbGxvd3MtYmxhbmstbGluZQogICAgICAgOzsgQWNjb3JkaW5nIHRvIFJGQyA4MjIg YW5kIGl0cyBzdWNjZXNzb3JzLCB0aGUgZmllbGQgbmFtZSBtdXN0CiAgICAgICA7OyBjb25z aXN0IG9mIHByaW50YWJsZSBVUy1BU0NJSSBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gY29sb24s CiAgICAgICA7OyBpLmUuLCBkZWNpbWFsIDMzLTU2IGFuZCA1OS0xMjYuCi0gICAgICAnKGxv b2tpbmctYXQgIlsgXHRdXFx8W11bIVwiIyQlJicoKSorLC0uLzAtOTs8PT4/QEEtWlxcXl9g YS16e3x9fl0rOiIpKQorICAgICAgJyhsb29raW5nLWF0ICJbIFx0XVxcfFtdWyFcIiMkJSYn KCkqKywuLzAtOTs8PT4/QEEtWlxcXl9gYS16e3x9fi1dKzoiKSkKICAgIlNldCB0aGlzIG5v bi1uaWwgaWYgdGhlIHN5c3RlbSdzIG1haWxlciBydW5zIHRoZSBoZWFkZXIgYW5kIGJvZHkg dG9nZXRoZXIuCiBcKFRoaXMgcHJvYmxlbSBleGlzdHMgb24gU3Vub3MgNCB3aGVuIHNlbmRt YWlsIGlzIHJ1biBpbiByZW1vdGUgbW9kZS4pCiBUaGUgdmFsdWUgc2hvdWxkIGJlIGFuIGV4 cHJlc3Npb24gdG8gdGVzdCB3aGV0aGVyIHRoZSBwcm9ibGVtIHdpbGwKZGlmZiAtLWdpdCBh L2xpc3AvZ251cy9ubmRvYy5lbCBiL2xpc3AvZ251cy9ubmRvYy5lbAppbmRleCA4ZjEyMTdi MTI3Li41MzJiYTExZmEwIDEwMDY0NAotLS0gYS9saXNwL2dudXMvbm5kb2MuZWwKKysrIGIv bGlzcC9nbnVzL25uZG9jLmVsCkBAIC03MDEsNyArNzAxLDcgQEAgbm5kb2MtdHJhbnNmb3Jt LWdpdC1oZWFkZXJzCiAKIChkZWZ1biBubmRvYy1sYW5sLWdvdi1hbm5vdW5jZS10eXBlLXAg KCkKICAgKHdoZW4gKGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggbmlsKSkKLQkgIChyZS1zZWFy Y2gtZm9yd2FyZCAiXlxcXFxcXFxcXG5cXChQYXBlclxcKCAoXFwqY3Jvc3MtbGlzdGluZ1xc KilcXCk/OiBbYS16QS1aLVxcLl0rL1swLTldK1xcfGFyWGl2OlxcKSIgbmlsIHQpKQorCSAg KHJlLXNlYXJjaC1mb3J3YXJkICJeXFxcXFxcXFxcblxcKFBhcGVyXFwoIChcXCpjcm9zcy1s aXN0aW5nXFwqKVxcKT86IFthLXpBLVpcXC4tXSsvWzAtOV0rXFx8YXJYaXY6XFwpIiBuaWwg dCkpCiAgICAgdCkpCiAKIChkZWZ1biBubmRvYy10cmFuc2Zvcm0tbGFubC1nb3YtYW5ub3Vu Y2UgKGFydGljbGUpCkBAIC03MzIsNyArNzMyLDcgQEAgbm5kb2MtZ2VuZXJhdGUtbGFubC1n b3YtaGVhZAogICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KIAkobmFycm93LXRvLXJlZ2lvbiAo Y2FyIGVudHJ5KSAobnRoIDEgZW50cnkpKQogCShnb3RvLWNoYXIgKHBvaW50LW1pbikpCi0J KHdoZW4gKGxvb2tpbmctYXQgIl5cXChQYXBlci4qOiBcXHxhclhpdjpcXClcXChbMC05YS16 QS1aLVxcLi9dK1xcKSIpCisJKHdoZW4gKGxvb2tpbmctYXQgIl5cXChQYXBlci4qOiBcXHxh clhpdjpcXClcXChbMC05YS16QS1aXFwuLy1dK1xcKSIpCiAJICAoc2V0cSBzdWJqZWN0IChj b25jYXQgIiAoIiAobWF0Y2gtc3RyaW5nIDIpICIpIikpCiAJICAod2hlbiAocmUtc2VhcmNo LWZvcndhcmQgIl5Gcm9tOiBcXCguKlxcKSIgbmlsIHQpCiAJICAgIChzZXRxIGZyb20gKGNv bmNhdCAiPCIKZGlmZiAtLWdpdCBhL2xpc3Avb3JnL29yZy1lc2hlbGwuZWwgYi9saXNwL29y Zy9vcmctZXNoZWxsLmVsCmluZGV4IGJiMjdkOTJlMTIuLjIyNTFhMWI4OTIgMTAwNjQ0Ci0t LSBhL2xpc3Avb3JnL29yZy1lc2hlbGwuZWwKKysrIGIvbGlzcC9vcmcvb3JnLWVzaGVsbC5l bApAQCAtMzcsNyArMzcsNyBAQCBvcmctZXNoZWxsLW9wZW4KICAgIGVzaGVsbCBidWZmZXIp IG9yIGEgY29tbWFuZCBsaW5lIHByZWZpeGVkIGJ5IGEgYnVmZmVyIG5hbWUKICAgIGZvbGxv d2VkIGJ5IGEgY29sb24uIgogICAobGV0KiAoKGJ1ZmZlci1hbmQtY29tbWFuZAotICAgICAg ICAgIChpZiAoc3RyaW5nLW1hdGNoICJcXChbQS1aYS16MC05LSsqXStcXCk6XFwoLipcXCki IGxpbmspCisgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlxcKFtBLVphLXowLTkrKi1d K1xcKTpcXCguKlxcKSIgbGluaykKIAkgICAgICAobGlzdCAobWF0Y2gtc3RyaW5nIDEgbGlu aykKIAkJICAgIChtYXRjaC1zdHJpbmcgMiBsaW5rKSkKICAgICAgICAgICAgIChsaXN0IGVz aGVsbC1idWZmZXItbmFtZSBsaW5rKSkpCmRpZmYgLS1naXQgYS9saXNwL29yZy9vcmcuZWwg Yi9saXNwL29yZy9vcmcuZWwKaW5kZXggYmY3ZTMwNWI3YS4uY2U2ZGQyNGE4MyAxMDA2NDQK LS0tIGEvbGlzcC9vcmcvb3JnLmVsCisrKyBiL2xpc3Avb3JnL29yZy5lbApAQCAtNDMwLDcg KzQzMCw3IEBAIG9yZy1kZWFkbGluZS10aW1lLXJlZ2V4cAogCiAoZGVmY29uc3Qgb3JnLWRl YWRsaW5lLXRpbWUtaG91ci1yZWdleHAKICAgKGNvbmNhdCAiXFw8IiBvcmctZGVhZGxpbmUt c3RyaW5nCi0JICAiICo8XFwoW14+XStbMC05XVxcezEsMlxcfTpbMC05XVxcezJcXH1bMC05 LSs6aGR3bXkgXHQuXSpcXCk+IikKKwkgICIgKjxcXChbXj5dK1swLTldXFx7MSwyXFx9Olsw LTldXFx7MlxcfVswLTkrOmhkd215IFx0Li1dKlxcKT4iKQogICAiTWF0Y2hlcyB0aGUgREVB RExJTkUga2V5d29yZCB0b2dldGhlciB3aXRoIGEgdGltZS1hbmQtaG91ciBzdGFtcC4iKQog CiAoZGVmY29uc3Qgb3JnLWRlYWRsaW5lLWxpbmUtcmVnZXhwCkBAIC00NDYsNyArNDQ2LDcg QEAgb3JnLXNjaGVkdWxlZC10aW1lLXJlZ2V4cAogCiAoZGVmY29uc3Qgb3JnLXNjaGVkdWxl ZC10aW1lLWhvdXItcmVnZXhwCiAgIChjb25jYXQgIlxcPCIgb3JnLXNjaGVkdWxlZC1zdHJp bmcKLQkgICIgKjxcXChbXj5dK1swLTldXFx7MSwyXFx9OlswLTldXFx7MlxcfVswLTktKzpo ZHdteSBcdC5dKlxcKT4iKQorCSAgIiAqPFxcKFtePl0rWzAtOV1cXHsxLDJcXH06WzAtOV1c XHsyXFx9WzAtOSs6aGR3bXkgXHQuLV0qXFwpPiIpCiAgICJNYXRjaGVzIHRoZSBTQ0hFRFVM RUQga2V5d29yZCB0b2dldGhlciB3aXRoIGEgdGltZS1hbmQtaG91ciBzdGFtcC4iKQogCiAo ZGVmY29uc3Qgb3JnLWNsb3NlZC10aW1lLXJlZ2V4cApkaWZmIC0tZ2l0IGEvbGlzcC9wcm9n bW9kZXMvYmF0LW1vZGUuZWwgYi9saXNwL3Byb2dtb2Rlcy9iYXQtbW9kZS5lbAppbmRleCA2 Yzg1ZmY5OTA1Li5hOGIwMDJiZTU5IDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9iYXQt bW9kZS5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9iYXQtbW9kZS5lbApAQCAtNzgsNyArNzgs NyBAQCBiYXQtZm9udC1sb2NrLWtleXdvcmRzCiAgICAgICAgICAgICAgImdvdG8iICJndHIi ICJpZiIgImluIiAibGVxIiAibHNzIiAibmVxIiAibm90IiAic3RhcnQiKSkKICAgICAgICAg ICAoVU5JWAogICAgICAgICAgICAnKCJiYXNoIiAiY2F0IiAiY3AiICJmZ3JlcCIgImdyZXAi ICJscyIgInNlZCIgInNoIiAibXYiICJybSIpKSkKLSAgICAgIGAoKCJcXF88XFwoY2FsbFxc fGdvdG9cXClcXF8+WyBcdF0rJT9cXChbQS1aYS16MC05LV9cXDouXStcXCklPyIKKyAgICAg IGAoKCJcXF88XFwoY2FsbFxcfGdvdG9cXClcXF8+WyBcdF0rJT9cXChbQS1aYS16MC05X1xc Oi4tXStcXCklPyIKICAgICAgICAgICgyIGZvbnQtbG9jay1jb25zdGFudC1mYWNlIHQpKQog ICAgICAgICAoIl46W146XS4qIgogICAgICAgICAgLiAnYmF0LWxhYmVsLWZhY2UpCmRpZmYg LS1naXQgYS9saXNwL3Byb2dtb2Rlcy9idWctcmVmZXJlbmNlLmVsIGIvbGlzcC9wcm9nbW9k ZXMvYnVnLXJlZmVyZW5jZS5lbAppbmRleCA4YmFmNzQ4NTRmLi43NTlkYjFmNTY4IDEwMDY0 NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9idWctcmVmZXJlbmNlLmVsCisrKyBiL2xpc3AvcHJv Z21vZGVzL2J1Zy1yZWZlcmVuY2UuZWwKQEAgLTY5LDcgKzY5LDcgQEAgYnVnLXJlZmVyZW5j ZS11cmwtZm9ybWF0CiAgICAgICAgICAgICAgICAgKGdldCBzICdidWctcmVmZXJlbmNlLXVy bC1mb3JtYXQpKSkpKQogCiAoZGVmY3VzdG9tIGJ1Zy1yZWZlcmVuY2UtYnVnLXJlZ2V4cAot ICAiXFwoW0JiXXVnID8jP1xcfFtQcF1hdGNoID8jXFx8UkZFID8jXFx8UFIgW2Etei0rXSsv XFwpXFwoWzAtOV0rXFwoPzojWzAtOV0rXFwpP1xcKSIKKyAgIlxcKFtCYl11ZyA/Iz9cXHxb UHBdYXRjaCA/I1xcfFJGRSA/I1xcfFBSIFthLXorLV0rL1xcKVxcKFswLTldK1xcKD86I1sw LTldK1xcKT9cXCkiCiAgICJSZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgYnVnIHJlZmVy ZW5jZXMuCiBUaGUgc2Vjb25kIHN1YmV4cHJlc3Npb24gc2hvdWxkIG1hdGNoIHRoZSBidWcg cmVmZXJlbmNlICh1c3VhbGx5IGEgbnVtYmVyKS4iCiAgIDp0eXBlICdzdHJpbmcKZGlmZiAt LWdpdCBhL2xpc3AvdGV4dG1vZGVzL2xlc3MtY3NzLW1vZGUuZWwgYi9saXNwL3RleHRtb2Rl cy9sZXNzLWNzcy1tb2RlLmVsCmluZGV4IGI0YzdmMjg5ODUuLjQwNzc3ODllYjEgMTAwNjQ0 Ci0tLSBhL2xpc3AvdGV4dG1vZGVzL2xlc3MtY3NzLW1vZGUuZWwKKysrIGIvbGlzcC90ZXh0 bW9kZXMvbGVzcy1jc3MtbW9kZS5lbApAQCAtMTk0LDEwICsxOTQsMTAgQEAgbGVzcy1jc3Mt Y29tcGlsZQogOzsgLSBjdXN0b20gZmFjZXMuCiAoZGVmY29uc3QgbGVzcy1jc3MtZm9udC1s b2NrLWtleXdvcmRzCiAgICcoOzsgVmFyaWFibGVzCi0gICAgKCJAW2Etel8tXVthLXotXzAt OV0qIiAuIGZvbnQtbG9jay12YXJpYWJsZS1uYW1lLWZhY2UpCisgICAgKCJAW2Etel8tXVth LXpfMC05LV0qIiAuIGZvbnQtbG9jay12YXJpYWJsZS1uYW1lLWZhY2UpCiAgICAgKCImIiAu IGZvbnQtbG9jay1wcmVwcm9jZXNzb3ItZmFjZSkKICAgICA7OyBNaXhpbnMKLSAgICAoIlxc KD86WyBcdHs7XVxcfF5cXClcXChcXC5bYS16Xy1dW2Etei1fMC05XSpcXClbIFx0XSo7IiAu CisgICAgKCJcXCg/OlsgXHR7O11cXHxeXFwpXFwoXFwuW2Etel8tXVthLXpfMC05LV0qXFwp WyBcdF0qOyIgLgogICAgICAoMSBmb250LWxvY2sta2V5d29yZC1mYWNlKSkpKQogCiAoZGVm dmFyIGxlc3MtY3NzLW1vZGUtc3ludGF4LXRhYmxlCmRpZmYgLS1naXQgYS9saXNwL3ZjL3Zj LWN2cy5lbCBiL2xpc3AvdmMvdmMtY3ZzLmVsCmluZGV4IDNiYmQwZWQ0OWIuLjYyNmUxOTBj MWUgMTAwNjQ0Ci0tLSBhL2xpc3AvdmMvdmMtY3ZzLmVsCisrKyBiL2xpc3AvdmMvdmMtY3Zz LmVsCkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2Yy1jdnMtdmFsaWQtc3ltYm9saWMtdGFnLW5h bWUtcAogICA7OyBhbiB1cHBlcmNhc2Ugb3IgbG93ZXJjYXNlIGxldHRlciBhbmQgY2FuIGNv bnRhaW4gdXBwZXJjYXNlIGFuZAogICA7OyBsb3dlcmNhc2UgbGV0dGVycywgZGlnaXRzLCBg LScsIGFuZCBgXycuCiAgIChhbmQgKHN0cmluZy1tYXRjaCAiXlthLXpBLVpdIiB0YWcpCi0g ICAgICAgKG5vdCAoc3RyaW5nLW1hdGNoICJbXmEtejAtOUEtWi1fXSIgdGFnKSkpKQorICAg ICAgIChub3QgKHN0cmluZy1tYXRjaCAiW15hLXowLTlBLVpfLV0iIHRhZykpKSkKIAogKGRl ZnVuIHZjLWN2cy12YWxpZC1yZXZpc2lvbi1udW1iZXItcCAodGFnKQogICAiUmV0dXJuIG5v bi1uaWwgaWYgVEFHIGlzIGEgdmFsaWQgcmV2aXNpb24gbnVtYmVyLiIKZGlmZiAtLWdpdCBh L2xpc3AvdmMvdmMtc3ZuLmVsIGIvbGlzcC92Yy92Yy1zdm4uZWwKaW5kZXggNjE4ZjAzZWVk Yy4uM2M1MGM4ZmZmNiAxMDA2NDQKLS0tIGEvbGlzcC92Yy92Yy1zdm4uZWwKKysrIGIvbGlz cC92Yy92Yy1zdm4uZWwKQEAgLTc1OSw3ICs3NTksNyBAQCB2Yy1zdm4tdmFsaWQtc3ltYm9s aWMtdGFnLW5hbWUtcAogICA7OyBhbiB1cHBlcmNhc2Ugb3IgbG93ZXJjYXNlIGxldHRlciBh bmQgY2FuIGNvbnRhaW4gdXBwZXJjYXNlIGFuZAogICA7OyBsb3dlcmNhc2UgbGV0dGVycywg ZGlnaXRzLCBgLScsIGFuZCBgXycuCiAgIChhbmQgKHN0cmluZy1tYXRjaCAiXlthLXpBLVpd IiB0YWcpCi0gICAgICAgKG5vdCAoc3RyaW5nLW1hdGNoICJbXmEtejAtOUEtWi1fXSIgdGFn KSkpKQorICAgICAgIChub3QgKHN0cmluZy1tYXRjaCAiW15hLXowLTlBLVpfLV0iIHRhZykp KSkKIAogKGRlZnVuIHZjLXN2bi12YWxpZC1yZXZpc2lvbi1udW1iZXItcCAodGFnKQogICAi UmV0dXJuIG5vbi1uaWwgaWYgVEFHIGlzIGEgdmFsaWQgcmV2aXNpb24gbnVtYmVyLiIKLS0g CjIuMjAuMQoK --------------27EFA4B8E74AA50B462E8D83--