From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Artur Malabarba Newsgroups: gmane.emacs.devel Subject: Re: ASCII-folded search [was: Re: Upcoming loss of usability ...] Date: Thu, 18 Jun 2015 09:16:16 +0100 Message-ID: References: <20150615142237.GA3517@acm.fritz.box> <87y4jkhqh5.fsf@uwakimon.sk.tsukuba.ac.jp> <557F3C22.4060909@cs.ucla.edu> <5580D356.4050708@cs.ucla.edu> <87si9qonxb.fsf@gnu.org> <87ioamz8if.fsf@petton.fr> <32013464-2300-46c6-ba46-4a3c36bfee5d@default> <87twu62nnt.fsf@mbork.pl> <87oakdfwim.fsf@uwakimon.sk.tsukuba.ac.jp> <83wpz1lh7c.fsf@gnu.org> Reply-To: bruce.connor.am@gmail.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11c3c842f2a2b80518c66bdf X-Trace: ger.gmane.org 1434615419 8824 80.91.229.3 (18 Jun 2015 08:16:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 18 Jun 2015 08:16:59 +0000 (UTC) Cc: "Stephen J. Turnbull" , Stefan Monnier , emacs-devel To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jun 18 10:16:45 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Z5V07-0001a3-K0 for ged-emacs-devel@m.gmane.org; Thu, 18 Jun 2015 10:16:43 +0200 Original-Received: from localhost ([::1]:50800 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5V06-0005ko-VM for ged-emacs-devel@m.gmane.org; Thu, 18 Jun 2015 04:16:42 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44339) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5Uzn-0005e6-1c for emacs-devel@gnu.org; Thu, 18 Jun 2015 04:16:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z5Uzk-0005YW-Pg for emacs-devel@gnu.org; Thu, 18 Jun 2015 04:16:22 -0400 Original-Received: from mail-lb0-x232.google.com ([2a00:1450:4010:c04::232]:35391) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5Uzi-0005Sm-2C; Thu, 18 Jun 2015 04:16:18 -0400 Original-Received: by lbbwc1 with SMTP id wc1so47572255lbb.2; Thu, 18 Jun 2015 01:16:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:sender:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=kh8UZfBS6Jw58ZEh64XAkL4FSN/DCNb/xAQcMi5grWM=; b=wxg4EKu7Lc8E+X+Y+7PAw7jRsil68tWMdG76STrS+0GzK2sGIyvRy/8H14VF69Pdfs OwoJkoQCED9gLR5qSau13qcfgFMZ9tvphMEjxXU5RVNf6Tx3fk5/iN2QKWvmPLZyHuGb uuwBTj5Yv9Mw6Gl0jby5NehIl5VhTQvmPADVTOBux4UofvoNOVVWS5gaZMNkPSiyxtzv P59fPfHdMV+CjdvwCmXbTvAF7z7IM4h6HX7dDqQCpqPMAPlNOAnSYZORDQkrqJGgfMg1 4oa/NB/668GPiuVSUWiZKgHhnR7ZGWZUTR04LojN9DT9HeQu/Ymcbq+qKjcmtqYQE9fP ZV7w== X-Received: by 10.112.210.9 with SMTP id mq9mr11927523lbc.4.1434615377193; Thu, 18 Jun 2015 01:16:17 -0700 (PDT) Original-Received: by 10.25.214.133 with HTTP; Thu, 18 Jun 2015 01:16:16 -0700 (PDT) In-Reply-To: <83wpz1lh7c.fsf@gnu.org> X-Google-Sender-Auth: qMtUvvNJUYQt1ew2ZiC-R-5G7S8 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c04::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:187271 Archived-At: --001a11c3c842f2a2b80518c66bdf Content-Type: text/plain; charset=UTF-8 2015-06-18 6:27 GMT+01:00 Eli Zaretskii : >> From: "Stephen J. Turnbull" >> Date: Thu, 18 Jun 2015 13:52:49 +0900 >> Cc: emacs-devel@gnu.org >> >> Marcin Borkowski writes: >> >> > On the other hand, it would be great if we had an "ascii-folding" >> > option, making (some reasonable subset of) Unicode "equivalent" to >> > ASCII, If we're bringing this up again, I kindly suggest that people have a look a previous thread here called "Character group folding in searches". Here's the link: https://lists.gnu.org/archive/html/emacs-devel/2015-02/msg00362.html It offers 3 implementations. I think the second (group-folding-with-case-table-lisp.patch) was quite adequade. The only reason it wasn't applied is that Eli and Stefan wanted something that also matched non-spacing marks, or composite characters, whereas case tables can only map single characters to single characters. The first implementation (group-folding-with-regexp-lisp.patch) didn't have this caveat because it didn't use this case-tables. The only caveat it had is that it only works for non-regexp searches. Attached are the two patches I mentioned here. --001a11c3c842f2a2b80518c66bdf Content-Type: text/x-patch; charset=UTF-8; name="group-folding-with-case-table-lisp.patch" Content-Disposition: attachment; filename="group-folding-with-case-table-lisp.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ib1wwu580 RnJvbSA4ZjRiZTI3ZGNhNzE0YjE2ODQxNDE3MWJkZTNlZWVlOWZlZmM0NGU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnR1ciBNYWxhYmFyYmEgPGFkZHJlc3NAaGlkZGVuPgpEYXRl OiBUdWUsIDI3IEphbiAyMDE1IDE0OjA4OjAxIC0wMjAwClN1YmplY3Q6IFtQQVRDSF0gKGlzZWFy Y2gtc2VhcmNoLWZ1bi1kZWZhdWx0KTogSW1wbGVtZW50IGdyb3VwIGZvbGRpbmcgaW4KIGlzZWFy Y2guCgooaXNlYXJjaC1mb2xkLWdyb3VwcyBncm91cC1mb2xkLXRhYmxlKTogTmV3IHZhcmlhYmxl cy4KCldoZW4gYGlzZWFyY2gtZm9sZC1ncm91cHMnIGlzIG5vbi1uaWwgYGdyb3VwLWZvbGQtdGFi bGUnIGlzIHVzZWQgYXMgdGhlCmNhc2UgdGFibGUuCi0tLQogbGlzcC9pc2VhcmNoLmVsIHwgMzgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAz OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGlzcC9pc2VhcmNoLmVsIGIvbGlzcC9pc2Vh cmNoLmVsCmluZGV4IDk5Y2E3M2YuLjdkNTY4ZGQgMTAwNjQ0Ci0tLSBhL2xpc3AvaXNlYXJjaC5l bAorKysgYi9saXNwL2lzZWFyY2guZWwKQEAgLTI3Miw2ICsyNzIsMzggQEAgRGVmYXVsdCB2YWx1 ZSwgbmlsLCBtZWFucyBlZGl0IHRoZSBzdHJpbmcgaW5zdGVhZC4iCiAgIDp2ZXJzaW9uICIyMy4x IgogICA6Z3JvdXAgJ2lzZWFyY2gpCiAKKyhkZWZjdXN0b20gaXNlYXJjaC1mb2xkLWdyb3VwcyB0 CisgICJXaGV0aGVyIHJlZ3VsYXIgaXNlYXJjaCBzaG91bGQgZG8gZ3JvdXAgZm9sZGluZy4KK1Ro aXMgbWVhbnMgc29tZSBjaGFyYWN0ZXJzIHdpbGwgbWF0Y2ggZW50aXJlIGdyb3VwcyBvZiBjaGFy YWN0ZXMsCitzdWNoIGFzIFwiIG1hdGNoaW5nIOKAnSwgZm9yIGluc3RhbmNlLiIKKyAgOnR5cGUg J2Jvb2xlYW4KKyAgOmdyb3VwICdpc2VhcmNoCisgIDp2ZXJzaW9uICIyNS4xIikKKworKGRlZnZh ciBncm91cC1mb2xkLXRhYmxlCisgIChldmFsLXdoZW4tY29tcGlsZQorICAgIChsZXQgKCh0YWJs ZSAobWFrZS1jaGFyLXRhYmxlICdjYXNlLXRhYmxlKSkKKyAgICAgICAgICAoZXEgKG1ha2UtY2hh ci10YWJsZSAnZXF1aXYpKSkKKyAgICAgIChyZXF1aXJlICdzdWJyLXgpCisgICAgICA7OyBCdWls ZCB0aGUgZ3JvdXAgdGFibGUuCisgICAgICAoZG90aW1lcyAoaSAobGVuZ3RoIGVxKSkKKyAgICAg ICAgKHdoZW4tbGV0ICgoZCAoZ2V0LWNoYXItY29kZS1wcm9wZXJ0eSBpICdkZWNvbXBvc2l0aW9u KSkKKyAgICAgICAgICAgICAgICAgICAoayAoY2FyLXNhZmUgZCkpKQorICAgICAgICAgICh1bmxl c3MgKGVxIGkgaykKKyAgICAgICAgICAgIChhc2V0IGVxIGkgKGlmIChjaGFyYWN0ZXJwIGspIGsg KGNhZHIgZCkpKSkpKQorICAgICAgOzsgUHV0IGl0IGluIHRoZSByaWdodCBwbGFjZS4KKyAgICAg IChzZXQtY2hhci10YWJsZS1leHRyYS1zbG90IHRhYmxlIDEgZXEpCisgICAgICB0YWJsZSkpCisg ICJVc2VkIGZvciBmb2xkaW5nIGNoYXJhY3RlcnMgb2YgdGhlIHNhbWUgZ3JvdXAgZHVyaW5nIHNl YXJjaC4iKQorCisoZGVmbWFjcm8gd2l0aC1ncm91cC1mb2xkaW5nICgmcmVzdCBib2R5KQorICAi RXhlY3V0ZSBCT0RZIHdpdGggY2hhcmFjdGVyLWdyb3VwIGZvbGRpbmcgdHVybmVkIG9uLgorVGhp cyBzZXRzIGBncm91cC1mb2xkLXRhYmxlJyBhcyB0aGUgY2FzZS10YWJsZSBkdXJpbmcgdGhlCitl eGVjdXRpb24gb2YgQk9EWS4iCisgIGAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0KSkKKyAgICAg KHdpdGgtY2FzZS10YWJsZSBncm91cC1mb2xkLXRhYmxlCisgICAgICAgLEBib2R5KSkpCisKIChk ZWZjdXN0b20gaXNlYXJjaC1sYXp5LWhpZ2hsaWdodCB0CiAgICJDb250cm9scyB0aGUgbGF6eS1o aWdobGlnaHRpbmcgZHVyaW5nIGluY3JlbWVudGFsIHNlYXJjaC4KIFdoZW4gbm9uLW5pbCwgYWxs IHRleHQgaW4gdGhlIGJ1ZmZlciBtYXRjaGluZyB0aGUgY3VycmVudCBzZWFyY2gKQEAgLTI1Njgs NiArMjYwMCwxMiBAQCBDYW4gYmUgY2hhbmdlZCB2aWEgYGlzZWFyY2gtc2VhcmNoLWZ1bi1mdW5j dGlvbicgZm9yIHNwZWNpYWwgbmVlZHMuIgogKGRlZnVuIGlzZWFyY2gtc2VhcmNoLWZ1bi1kZWZh dWx0ICgpCiAgICJSZXR1cm4gZGVmYXVsdCBmdW5jdGlvbnMgdG8gdXNlIGZvciB0aGUgc2VhcmNo LiIKICAgKGNvbmQKKyAgIChpc2VhcmNoLWZvbGQtZ3JvdXBzCisgICAgKGxhbWJkYSAoJnJlc3Qg YXJncykKKyAgICAgIChsZXQqICgoaXNlYXJjaC1mb2xkLWdyb3VwcyBuaWwpCisgICAgICAgICAg ICAgKGZ1bmN0aW9uIChpc2VhcmNoLXNlYXJjaC1mdW4tZGVmYXVsdCkpKQorICAgICAgICAod2l0 aC1ncm91cC1mb2xkaW5nCisgICAgICAgICAoYXBwbHkgZnVuY3Rpb24gYXJncykpKSkpCiAgICAo aXNlYXJjaC13b3JkCiAgICAgKGxhbWJkYSAoc3RyaW5nICZvcHRpb25hbCBib3VuZCBub2Vycm9y IGNvdW50KQogICAgICAgOzsgVXNlIGxheCB2ZXJzaW9ucyB0byBub3QgZmFpbCBhdCB0aGUgZW5k IG9mIHRoZSB3b3JkIHdoaWxlCi0tIAoyLjIuMgoK --001a11c3c842f2a2b80518c66bdf Content-Type: text/x-patch; charset=UTF-8; name="group-folding-with-regexp-lisp.patch" Content-Disposition: attachment; filename="group-folding-with-regexp-lisp.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ib1wwu621 RnJvbSBmNjdhZTdlZDUzZTZhOTBjZjRmOTdhYzFiYmE5NDk4YjVkNThlNmRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnR1ciBNYWxhYmFyYmEgPGFkZHJlc3NAaGlkZGVuPgpEYXRl OiBUdWUsIDI3IEphbiAyMDE1IDE0OjA4OjAxIC0wMjAwClN1YmplY3Q6IFtQQVRDSF0gKGlzZWFy Y2gtc2VhcmNoLWZ1bi1kZWZhdWx0KTogSW1wbGVtZW50IGdyb3VwIGZvbGRpbmcgaW4KIGlzZWFy Y2guCgpVc2UgYGlzZWFyY2gtZm9sZC1ncm91cHMnLCBgaXNlYXJjaC1ncm91cHMtYWxpc3QnLCBh bmQKYGlzZWFyY2gtLXJlcGxhY2UtZ3JvdXBzLWluLXN0cmluZycuCi0tLQogbGlzcC9pc2VhcmNo LmVsIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNo YW5nZWQsIDM3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saXNwL2lzZWFyY2guZWwgYi9s aXNwL2lzZWFyY2guZWwKaW5kZXggOTljYTczZi4uYWNjZmI3MiAxMDA2NDQKLS0tIGEvbGlzcC9p c2VhcmNoLmVsCisrKyBiL2xpc3AvaXNlYXJjaC5lbApAQCAtNTgsNiArNTgsNyBAQAogOzs7IENv ZGU6CiAKIChldmFsLXdoZW4tY29tcGlsZSAocmVxdWlyZSAnY2wtbGliKSkKKyhldmFsLXdoZW4t Y29tcGlsZSAocmVxdWlyZSAnc3Vici14KSkKIAwKIDs7IFNvbWUgYWRkaXRpb25hbCBvcHRpb25z IGFuZCBjb25zdGFudHMuCiAKQEAgLTI3Miw2ICsyNzMsMjMgQEAgRGVmYXVsdCB2YWx1ZSwgbmls LCBtZWFucyBlZGl0IHRoZSBzdHJpbmcgaW5zdGVhZC4iCiAgIDp2ZXJzaW9uICIyMy4xIgogICA6 Z3JvdXAgJ2lzZWFyY2gpCiAKKyhkZWZjdXN0b20gaXNlYXJjaC1mb2xkLWdyb3VwcyB0CisgICJX aGV0aGVyIHJlZ3VsYXIgaXNlYXJjaCBzaG91bGQgZG8gZ3JvdXAgZm9sZGluZy4KK1RoaXMgbWVh bnMgc29tZSBjaGFyYWN0ZXJzIHdpbGwgbWF0Y2ggZW50aXJlIGdyb3VwcyBvZiBjaGFyYWN0ZXMs CitzdWNoIGFzIFwiIG1hdGNoaW5nIOKAnSwgZm9yIGluc3RhbmNlLiIKKyAgOnR5cGUgJ2Jvb2xl YW4KKyAgOmdyb3VwICdpc2VhcmNoCisgIDp2ZXJzaW9uICIyNS4xIikKKworKGRlZnZhciBpc2Vh cmNoLWdyb3Vwcy1hbGlzdAorICA7OyBGSVhNRTogQWRkIGFsbCB0aGUgbGF0aW4gYWNjZW50ZWQg bGV0dGVycyBsaWtlIMODLgorICAnKCg/XCIgLiAiW1wi77yC4oCc4oCd4oCd4oCe4rmC44Ce4oCf 4oCf4p2e4p2d4p2g4oCc4oCe44Cd44Cf8J+Zt/Cfmbbwn5m44p2u4p2vwqvCu+KAueKAuvOggKJd IikKKyAgICAoPycgLiAiW2An4p2f4p2b4p2c4oCY4oCZ4oCZ4oCa4oCb4oCb4oCa4oCY86CAouKd ruKdr8KrwrvigLnigLpdIikKKyAgICA7OyBgaXNlYXJjaC1mb2xkLWdyb3VwcycgZG9lc24ndCBp bnRlcmFjdCB3aXRoCisgICAgOzsgYGlzZWFyY2gtbGF4LXdoaXRlc3BhY2UnIHlldC4gIFNvIHdl IG5lZWQgdG8gYWRkIHRoaXMgaGVyZS4KKyAgICAoP1xzIC4gIlsgCVxyXG5dKyIpKQorICAiQWxp c3Qgb2YgZ3JvdXBzIHRvIHVzZSB3aGVuIGBpc2VhcmNoLWZvbGQtZ3JvdXBzJyBpcyBub24tbmls LiIpCisKIChkZWZjdXN0b20gaXNlYXJjaC1sYXp5LWhpZ2hsaWdodCB0CiAgICJDb250cm9scyB0 aGUgbGF6eS1oaWdobGlnaHRpbmcgZHVyaW5nIGluY3JlbWVudGFsIHNlYXJjaC4KIFdoZW4gbm9u LW5pbCwgYWxsIHRleHQgaW4gdGhlIGJ1ZmZlciBtYXRjaGluZyB0aGUgY3VycmVudCBzZWFyY2gK QEAgLTI1NjUsNiArMjU4MywxOCBAQCBzZWFyY2ggZm9yIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9m IFNUUklORyBvciBpdHMgdHJhbnNsYXRpb24uIikKIENhbiBiZSBjaGFuZ2VkIHZpYSBgaXNlYXJj aC1zZWFyY2gtZnVuLWZ1bmN0aW9uJyBmb3Igc3BlY2lhbCBuZWVkcy4iCiAgIChmdW5jYWxsIChv ciBpc2VhcmNoLXNlYXJjaC1mdW4tZnVuY3Rpb24gJ2lzZWFyY2gtc2VhcmNoLWZ1bi1kZWZhdWx0 KSkpCiAKKyhkZWZ1biBpc2VhcmNoLS1yZXBsYWNlLWdyb3Vwcy1pbi1zdHJpbmcgKHN0cmluZykK KyAgIlJldHVybiBhIGdyb3VwLWZvbGRlZCByZWdleHAgdmVyc2lvbiBvZiBTVFJJTkcuCitBbnkg Y2hhcmFjdGVyIHRoYXQgaGFzIGFuIGVudHJ5IGluIGBpc2VhcmNoLWdyb3Vwcy1hbGlzdCcgaXMK K3JlcGxhY2VkIHdpdGggdGhlIGNkciBvZiB0aGF0IGVudHJ5ICh3aGljaCBzaG91bGQgYmUgYSBy ZWdleHApLgorT3RoZXIgY2hhcmFjdGVycyBhcmUgYHJlZ2V4cC1xdW90ZSdkLiIKKyAgKGFwcGx5 ICMnY29uY2F0CisgICAgKG1hcGNhciAobGFtYmRhIChjKQorICAgICAgICAgICAgICAoaWYtbGV0 ICgoZW50cnkgKGFzc3EgYyBpc2VhcmNoLWdyb3Vwcy1hbGlzdCkpKQorICAgICAgICAgICAgICAg ICAgKGNkciBlbnRyeSkKKyAgICAgICAgICAgICAgICAocmVnZXhwLXF1b3RlIChzdHJpbmcgYykp KSkKKyAgICAgIHN0cmluZykpKQorCiAoZGVmdW4gaXNlYXJjaC1zZWFyY2gtZnVuLWRlZmF1bHQg KCkKICAgIlJldHVybiBkZWZhdWx0IGZ1bmN0aW9ucyB0byB1c2UgZm9yIHRoZSBzZWFyY2guIgog ICAoY29uZApAQCAtMjU5MSw2ICsyNjIxLDEzIEBAIENhbiBiZSBjaGFuZ2VkIHZpYSBgaXNlYXJj aC1zZWFyY2gtZnVuLWZ1bmN0aW9uJyBmb3Igc3BlY2lhbCBuZWVkcy4iCiAgICAgICAncmUtc2Vh cmNoLWJhY2t3YXJkLWxheC13aGl0ZXNwYWNlKSkKICAgIChpc2VhcmNoLXJlZ2V4cAogICAgIChp ZiBpc2VhcmNoLWZvcndhcmQgJ3JlLXNlYXJjaC1mb3J3YXJkICdyZS1zZWFyY2gtYmFja3dhcmQp KQorICAgOzsgYGlzZWFyY2gtcmVnZXhwJyBpcyBlc3NlbnRpYWxseSBhIHN1cGVyc2V0IG9mCisg ICA7OyBgaXNlYXJjaC1mb2xkLWdyb3VwcycuICBTbyBmb2xkLWdyb3VwcyBjb21lcyBhZnRlciBp dC4KKyAgIChpc2VhcmNoLWZvbGQtZ3JvdXBzCisgICAgKGxhbWJkYSAoc3RyaW5nICZvcHRpb25h bCBib3VuZCBub2Vycm9yIGNvdW50KQorICAgICAgKGZ1bmNhbGwgKGlmIGlzZWFyY2gtZm9yd2Fy ZCAjJ3JlLXNlYXJjaC1mb3J3YXJkICMncmUtc2VhcmNoLWJhY2t3YXJkKQorICAgICAgICAoaXNl YXJjaC0tcmVwbGFjZS1ncm91cHMtaW4tc3RyaW5nIHN0cmluZykKKyAgICAgICAgYm91bmQgbm9l cnJvciBjb3VudCkpKQogICAgKChhbmQgaXNlYXJjaC1sYXgtd2hpdGVzcGFjZSBzZWFyY2gtd2hp dGVzcGFjZS1yZWdleHApCiAgICAgKGlmIGlzZWFyY2gtZm9yd2FyZAogCSdzZWFyY2gtZm9yd2Fy ZC1sYXgtd2hpdGVzcGFjZQotLSAKMi4yLjIKCg== --001a11c3c842f2a2b80518c66bdf--