From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: Character literals for Unicode (control) characters Date: Thu, 21 Apr 2016 19:39:50 -0700 Organization: UCLA Computer Science Department Message-ID: <57198EF6.50001@cs.ucla.edu> References: <87r3fsjenn.fsf@gnus.org> <56D8623F.6060806@cs.ucla.edu> <838u1vwqj9.fsf@gnu.org> <56DC7227.10708@cs.ucla.edu> <56DC7F18.8050103@cs.ucla.edu> <83si03v0c3.fsf@gnu.org> <56E7191A.60507@cs.ucla.edu> <56EE9E76.1090002@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030904070300060307060504" X-Trace: ger.gmane.org 1461292834 21790 80.91.229.3 (22 Apr 2016 02:40:34 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 22 Apr 2016 02:40:34 +0000 (UTC) Cc: emacs-devel@gnu.org To: Philipp Stephani Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Apr 22 04:40:25 2016 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 1atR16-0007rp-Br for ged-emacs-devel@m.gmane.org; Fri, 22 Apr 2016 04:40:24 +0200 Original-Received: from localhost ([::1]:52201 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1atR15-0004RZ-3H for ged-emacs-devel@m.gmane.org; Thu, 21 Apr 2016 22:40:23 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56239) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1atR0h-0004N7-5S for emacs-devel@gnu.org; Thu, 21 Apr 2016 22:40:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1atR0d-0003hb-Ql for emacs-devel@gnu.org; Thu, 21 Apr 2016 22:39:59 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:57093) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1atR0d-0003h3-FL for emacs-devel@gnu.org; Thu, 21 Apr 2016 22:39:55 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 74E89160814; Thu, 21 Apr 2016 19:39:52 -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 gg9GNa8He0ck; Thu, 21 Apr 2016 19:39:50 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 8BF0D161254; Thu, 21 Apr 2016 19:39:50 -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 dBOb92-0NJV8; Thu, 21 Apr 2016 19:39:50 -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 6DA7B160814; Thu, 21 Apr 2016 19:39:50 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 In-Reply-To: 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:203160 Archived-At: This is a multi-part message in MIME format. --------------030904070300060307060504 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks for doing all that. I installed your patches into the Emacs master, along with the attached further patch which omits the undocumented support for escapes like "\N{CJK IDEOGRAPH-3400}" as I couldn't see the utility of these over and above plain "\N{U+3400}", plus it wasn't clear why CJK ideographs needed special-case names whereas other ideographs did not. --------------030904070300060307060504 Content-Type: text/plain; charset=UTF-8; name="0001-Improve-character-name-escapes.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Improve-character-name-escapes.txt" RnJvbSBiZDFjN2NhNjdlNzQyOWUwN2Y3OGQ0ZmY0OTE2M2ZkN2E2N2E2NzY1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUaHUsIDIxIEFwciAyMDE2IDE5OjI2OjM0IC0wNzAwClN1YmplY3Q6IFtQQVRD SF0gSW1wcm92ZSBjaGFyYWN0ZXIgbmFtZSBlc2NhcGVzCgoqIGRvYy9saXNwcmVmL25vbmFz Y2lpLnRleGkgKENoYXJhY3RlciBQcm9wZXJ0aWVzKToKQXZvaWQgZHVwbGljYXRpb24gb2Yg VW5pY29kZSBuYW1lcy4gIFJlZm9ybWF0IGV4YW1wbGVzIHRvIGZpdCBpbgpuYXJyb3cgcGFn ZXMuCiogZG9jL2xpc3ByZWYvb2JqZWN0cy50ZXhpIChHZW5lcmFsIEVzY2FwZSBTeW50YXgp OgpTaW1wbGlmeSBhbmQgYmV0dGVyLW9yZ2FuaXplIGV4cGxhbmF0aW9uIG9mIFxOey4uLn0g ZXNjYXBlcy4KKiBzcmMvY2hhcmFjdGVyLmggKENIQVJfU1VSUk9HQVRFX1BBSVJfUCk6IFJl bW92ZTsgdW51c2VkLgooY2hhcl9zdXJyb2dhdGVfcCk6IE5ldyBpbmxpbmUgZnVuY3Rpb24u Ciogc3JjL2xyZWFkLmM6IERvIG5vdCBpbmNsdWRlIHN0cmluZy5oOyBubyBsb25nZXIgbmVl ZGVkLgooaW52YWxpZF9jaGFyYWN0ZXJfbmFtZSwgY2hlY2tfc2NhbGFyX3ZhbHVlKTogUmVt b3ZlOyB0aGUgaWRlYXMKYmVoaW5kIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93IGJ1bmRsZWQg aW50byBjaGFyYWN0ZXJfbmFtZV90b19jb2RlLgooY2hhcmFjdGVyX25hbWVfdG9fY29kZSk6 IFJlbW92ZSB1bmRvY3VtZW50ZWQgc3VwcG9ydCBmb3IgIkNKSwpJREVPR1JBUEgtWFhYWCIg bmFtZXMsIGFzICJVK1hYWFgiIHN1ZmZpY2VzLiAgUmVqZWN0IG1vbnN0cm9zaXRpZXMKbGlr ZSAiXE57VSstMH0iIGFuZCBudWxsIGJ5dGVzIGluIFxOIGVzY2FwZXMuICBSZWplY3QgZmxv YXRpbmcKcG9pbnQgaW4gXE4gZXNjYXBlcyBpbnN0ZWFkIG9mIHJldHVybmluZyBnYXJiYWdl LiAgVXNlCkFVVE9fU1RSSU5HX1dJVEhfTEVOIHRvIGxlc3NlbiBwcmVzc3VyZSBvbiB0aGUg Z2FyYmFnZSBjb2xsZWN0b3IuCiogdGVzdC9zcmMvbHJlYWQtdGVzdHMuZWwgKGxyZWFkLWNo YXItbnVtYmVyLCBscmVhZC1jaGFyLW5hbWUpCihscmVhZC1zdHJpbmctY2hhci1udW1iZXIs IGxyZWFkLXN0cmluZy1jaGFyLW5hbWUpOgpUZXN0IHJ1bnRpbWUgYmVoYXZpb3IsIG5vdCBj b21waWxlLXRpbWUsIGFzIHRoZSB0ZXN0IGZyYW1ld29yawppcyBub3Qgc2V0IHVwIHRvIHRl c3QgY29tcGlsZS10aW1lLgoobHJlYWQtY2hhci1zdXJyb2dhdGUtMSwgbHJlYWQtY2hhci1z dXJyb2dhdGUtMikKKGxyZWFkLWNoYXItc3Vycm9nYXRlLTMsIGxyZWFkLWNoYXItc3Vycm9n YXRlLTQpCihscmVhZC1zdHJpbmctY2hhci1udW1iZXItMiwgbHJlYWQtc3RyaW5nLWNoYXIt bnVtYmVyLTMpOgpOZXcgdGVzdHMuCihscmVhZC1zdHJpbmctY2hhci1udW1iZXItMSk6IFJl bmFtZSBmcm9tIGxyZWFkLXN0cmluZy1jaGFyLW51bWJlci4KLS0tCiBkb2MvbGlzcHJlZi9u b25hc2NpaS50ZXhpIHwgIDE1ICsrKystLS0KIGRvYy9saXNwcmVmL29iamVjdHMudGV4aSAg fCAgNTIgKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9jaGFyYWN0ZXIuaCAgICAgICAg ICAgfCAgMTMgKysrLS0tCiBzcmMvbHJlYWQuYyAgICAgICAgICAgICAgIHwgMTA0ICsrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHRlc3Qvc3JjL2xy ZWFkLXRlc3RzLmVsICAgfCAgMzIgKysrKysrKystLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwg ODkgaW5zZXJ0aW9ucygrKSwgMTI3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9s aXNwcmVmL25vbmFzY2lpLnRleGkgYi9kb2MvbGlzcHJlZi9ub25hc2NpaS50ZXhpCmluZGV4 IDY2YWQ5YWMuLjBlNGFhODYgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL25vbmFzY2lpLnRl eGkKKysrIGIvZG9jL2xpc3ByZWYvbm9uYXNjaWkudGV4aQpAQCAtNjIyLDE4ICs2MjIsMjEg QEAgQ2hhcmFjdGVyIFByb3BlcnRpZXMKICAgICAgQHJlc3VsdHt9IE5kCiBAZW5kIGdyb3Vw CiBAZ3JvdXAKLTs7IFUrMjA4NCBTVUJTQ1JJUFQgRk9VUgotKGdldC1jaGFyLWNvZGUtcHJv cGVydHkgP1x1MjA4NCAnZGlnaXQtdmFsdWUpCis7OyBVKzIwODQKKyhnZXQtY2hhci1jb2Rl LXByb3BlcnR5ID9cTkB7U1VCU0NSSVBUIEZPVVJAfQorICAgICAgICAgICAgICAgICAgICAg ICAgJ2RpZ2l0LXZhbHVlKQogICAgICBAcmVzdWx0e30gNAogQGVuZCBncm91cAogQGdyb3Vw Ci07OyBVKzIxNTUgVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSAotKGdldC1jaGFyLWNvZGUt cHJvcGVydHkgP1x1MjE1NSAnbnVtZXJpYy12YWx1ZSkKKzs7IFUrMjE1NQorKGdldC1jaGFy LWNvZGUtcHJvcGVydHkgP1xOQHtWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIQH0KKyAgICAg ICAgICAgICAgICAgICAgICAgICdudW1lcmljLXZhbHVlKQogICAgICBAcmVzdWx0e30gMC4y CiBAZW5kIGdyb3VwCiBAZ3JvdXAKLTs7IFUrMjE2MyBST01BTiBOVU1FUkFMIEZPVVIKLShn ZXQtY2hhci1jb2RlLXByb3BlcnR5ID9cTkB7Uk9NQU4gTlVNRVJBTCBGT1VSQH0gJ251bWVy aWMtdmFsdWUpCis7OyBVKzIxNjMKKyhnZXQtY2hhci1jb2RlLXByb3BlcnR5ID9cTkB7Uk9N QU4gTlVNRVJBTCBGT1VSQH0KKyAgICAgICAgICAgICAgICAgICAgICAgICdudW1lcmljLXZh bHVlKQogICAgICBAcmVzdWx0e30gNAogQGVuZCBncm91cAogQGdyb3VwCmRpZmYgLS1naXQg YS9kb2MvbGlzcHJlZi9vYmplY3RzLnRleGkgYi9kb2MvbGlzcHJlZi9vYmplY3RzLnRleGkK aW5kZXggOTZiMzM0ZC4uNTQ4OTRiOCAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvb2JqZWN0 cy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL29iamVjdHMudGV4aQpAQCAtMzUzLDI1ICszNTMs MzIgQEAgR2VuZXJhbCBFc2NhcGUgU3ludGF4CiBjb250cm9sIGNoYXJhY3RlcnMsIEVtYWNz IHByb3ZpZGVzIHNldmVyYWwgdHlwZXMgb2YgZXNjYXBlIHN5bnRheCB0aGF0CiB5b3UgY2Fu IHVzZSB0byBzcGVjaWZ5IG5vbi1AYWNyb255bXtBU0NJSX0gdGV4dCBjaGFyYWN0ZXJzLgog CitAZW51bWVyYXRlCitAaXRlbQogQGNpbmRleCBAc2FtcHtcfSBpbiBjaGFyYWN0ZXIgY29u c3RhbnQKIEBjaW5kZXggYmFja3NsYXNoIGluIGNoYXJhY3RlciBjb25zdGFudHMKIEBjaW5k ZXggdW5pY29kZSBjaGFyYWN0ZXIgZXNjYXBlCi0gIEZpcnN0bHksIHlvdSBjYW4gc3BlY2lm eSBjaGFyYWN0ZXJzIGJ5IHRoZWlyIFVuaWNvZGUgdmFsdWVzLgotQGNvZGV7P1x1QHZhcntu bm5ufX0gcmVwcmVzZW50cyBhIGNoYXJhY3RlciB3aXRoIFVuaWNvZGUgY29kZSBwb2ludAot QHNhbXB7VStAdmFye25ubm59fSwgd2hlcmUgQHZhcntubm5ufSBpcyAoYnkgY29udmVudGlv bikgYSBoZXhhZGVjaW1hbAotbnVtYmVyIHdpdGggZXhhY3RseSBmb3VyIGRpZ2l0cy4gIFRo ZSBiYWNrc2xhc2ggaW5kaWNhdGVzIHRoYXQgdGhlCi1zdWJzZXF1ZW50IGNoYXJhY3RlcnMg Zm9ybSBhbiBlc2NhcGUgc2VxdWVuY2UsIGFuZCB0aGUgQHNhbXB7dX0KLXNwZWNpZmllcyBh IFVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlLgotCi0gIFRoZXJlIGlzIGEgc2xpZ2h0bHkgZGlm ZmVyZW50IHN5bnRheCBmb3Igc3BlY2lmeWluZyBVbmljb2RlCi1jaGFyYWN0ZXJzIHdpdGgg Y29kZSBwb2ludHMgaGlnaGVyIHRoYW4gQGNvZGV7VStAdmFye2ZmZmZ9fToKLUBjb2Rlez9c VTAwQHZhcntubm5ubm59fSByZXByZXNlbnRzIHRoZSBjaGFyYWN0ZXIgd2l0aCBjb2RlIHBv aW50Ci1Ac2FtcHtVK0B2YXJ7bm5ubm5ufX0sIHdoZXJlIEB2YXJ7bm5ubm5ufSBpcyBhIHNp eC1kaWdpdCBoZXhhZGVjaW1hbAotbnVtYmVyLiAgVGhlIFVuaWNvZGUgU3RhbmRhcmQgb25s eSBkZWZpbmVzIGNvZGUgcG9pbnRzIHVwIHRvCi1Ac2FtcHtVK0B2YXJ7MTBmZmZmfX0sIHNv IGlmIHlvdSBzcGVjaWZ5IGEgY29kZSBwb2ludCBoaWdoZXIgdGhhbgotdGhhdCwgRW1hY3Mg c2lnbmFscyBhbiBlcnJvci4KLQotICBTZWNvbmRseSwgeW91IGNhbiBzcGVjaWZ5IGNoYXJh Y3RlcnMgYnkgdGhlaXIgaGV4YWRlY2ltYWwgY2hhcmFjdGVyCitZb3UgY2FuIHNwZWNpZnkg Y2hhcmFjdGVycyBieSB0aGVpciBVbmljb2RlIG5hbWVzLCBpZiBhbnkuCitAY29kZXs/XE5A e0B2YXJ7TkFNRX1AfX0gcmVwcmVzZW50cyB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgbmFtZWQK K0B2YXJ7TkFNRX0uICBUaHVzLCBAc2FtcHs/XE5Ae0xBVElOIFNNQUxMIExFVFRFUiBBIFdJ VEggR1JBVkVAfX0gaXMKK2VxdWl2YWxlbnQgdG8gQGNvZGV7P8OgfSBhbmQgZGVub3RlcyB0 aGUgVW5pY29kZSBjaGFyYWN0ZXIgVSswMEUwLiAgVG8KK3NpbXBsaWZ5IGVudGVyaW5nIG11 bHRpLWxpbmUgc3RyaW5ncywgeW91IGNhbiByZXBsYWNlIHNwYWNlcyBpbiB0aGUKK25hbWVz IGJ5IG5vbi1lbXB0eSBzZXF1ZW5jZXMgb2Ygd2hpdGVzcGFjZSAoZS5nLiwgbmV3bGluZXMp LgorCitAaXRlbQorWW91IGNhbiBzcGVjaWZ5IGNoYXJhY3RlcnMgYnkgdGhlaXIgVW5pY29k ZSB2YWx1ZXMuCitAY29kZXs/XE5Ae1UrQHZhcntYfUB9fSByZXByZXNlbnRzIGEgY2hhcmFj dGVyIHdpdGggVW5pY29kZSBjb2RlIHBvaW50CitAdmFye1h9LCB3aGVyZSBAdmFye1h9IGlz IGEgaGV4YWRlY2ltYWwgbnVtYmVyLiAgQWxzbywKK0Bjb2Rlez9cdUB2YXJ7eHh4eH19IGFu ZCBAY29kZXs/XFVAdmFye3h4eHh4eHh4fX0gcmVwcmVzZW50IGNvZGUKK3BvaW50cyBAdmFy e3h4eHh9IGFuZCBAdmFye3h4eHh4eHh4fSwgcmVzcGVjdGl2ZWx5LCB3aGVyZSBlYWNoIEB2 YXJ7eH0KK2lzIGEgc2luZ2xlIGhleGFkZWNpbWFsIGRpZ2l0LiAgRm9yIGV4YW1wbGUsIEBj b2Rlez9cTkB7VStFMEB9fSwKK0Bjb2Rlez9cdTAwZTB9IGFuZCBAY29kZXs/XFUwMDAwMDBF MH0gYXJlIGFsbCBlcXVpdmFsZW50IHRvIEBjb2Rlez/DoH0KK2FuZCB0byBAc2FtcHs/XE5A e0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkVAfX0uICBUaGUgVW5pY29kZQorU3Rh bmRhcmQgZGVmaW5lcyBjb2RlIHBvaW50cyBvbmx5IHVwIHRvIEBzYW1we1UrQHZhcnsxMGZm ZmZ9fSwgc28gaWYKK3lvdSBzcGVjaWZ5IGEgY29kZSBwb2ludCBoaWdoZXIgdGhhbiB0aGF0 LCBFbWFjcyBzaWduYWxzIGFuIGVycm9yLgorCitAaXRlbQorWW91IGNhbiBzcGVjaWZ5IGNo YXJhY3RlcnMgYnkgdGhlaXIgaGV4YWRlY2ltYWwgY2hhcmFjdGVyCiBjb2Rlcy4gIEEgaGV4 YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlIGNvbnNpc3RzIG9mIGEgYmFja3NsYXNoLAogQHNh bXB7eH0sIGFuZCB0aGUgaGV4YWRlY2ltYWwgY2hhcmFjdGVyIGNvZGUuICBUaHVzLCBAc2Ft cHs/XHg0MX0gaXMKIHRoZSBjaGFyYWN0ZXIgQGtiZHtBfSwgQHNhbXB7P1x4MX0gaXMgdGhl IGNoYXJhY3RlciBAa2Jke0MtYX0sIGFuZApAQCAtMzc5LDIzICszODYsMTYgQEAgR2VuZXJh bCBFc2NhcGUgU3ludGF4CiBZb3UgY2FuIHVzZSBhbnkgbnVtYmVyIG9mIGhleCBkaWdpdHMs IHNvIHlvdSBjYW4gcmVwcmVzZW50IGFueQogY2hhcmFjdGVyIGNvZGUgaW4gdGhpcyB3YXku CiAKK0BpdGVtCiBAY2luZGV4IG9jdGFsIGNoYXJhY3RlciBjb2RlCi0gIFRoaXJkbHksIHlv dSBjYW4gc3BlY2lmeSBjaGFyYWN0ZXJzIGJ5IHRoZWlyIGNoYXJhY3RlciBjb2RlIGluCitZ b3UgY2FuIHNwZWNpZnkgY2hhcmFjdGVycyBieSB0aGVpciBjaGFyYWN0ZXIgY29kZSBpbgog b2N0YWwuICBBbiBvY3RhbCBlc2NhcGUgc2VxdWVuY2UgY29uc2lzdHMgb2YgYSBiYWNrc2xh c2ggZm9sbG93ZWQgYnkKIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0czsgdGh1cywgQHNhbXB7 P1wxMDF9IGZvciB0aGUgY2hhcmFjdGVyCiBAa2Jke0F9LCBAc2FtcHs/XDAwMX0gZm9yIHRo ZSBjaGFyYWN0ZXIgQGtiZHtDLWF9LCBhbmQgQGNvZGV7P1wwMDJ9CiBmb3IgdGhlIGNoYXJh Y3RlciBAa2Jke0MtYn0uICBPbmx5IGNoYXJhY3RlcnMgdXAgdG8gb2N0YWwgY29kZSA3Nzcg Y2FuCiBiZSBzcGVjaWZpZWQgdGhpcyB3YXkuCiAKLSAgRm91cnRobHksIHlvdSBjYW4gc3Bl Y2lmeSBjaGFyYWN0ZXJzIGJ5IHRoZWlyIG5hbWUuICBBIGNoYXJhY3RlcgotbmFtZSBlc2Nh cGUgc2VxdWVuY2UgY29uc2lzdHMgb2YgYSBiYWNrc2xhc2gsIEBzYW1we05Ae30sIHRoZSBV bmljb2RlCi1jaGFyYWN0ZXIgbmFtZSwgYW5kIEBzYW1we0B9fS4gIEFsdGVybmF0aXZlbHks IHlvdSBjYW4gYWxzbyBwdXQgdGhlCi1udW1lcmljIGNvZGUgcG9pbnQgdmFsdWUgYmV0d2Vl biB0aGUgYnJhY2VzLCB1c2luZyB0aGUgc3ludGF4Ci1Ac2FtcHtcTkB7VStubm5uQH19LCB3 aGVyZSBAc2FtcHtubm5ufSBkZW5vdGVzIGJldHdlZW4gb25lIGFuZCBlaWdodAotaGV4YWRl Y2ltYWwgZGlnaXRzLiAgVGh1cywgQHNhbXB7P1xOQHtMQVRJTiBDQVBJVEFMIExFVFRFUiBB QH19IGFuZAotQHNhbXB7P1xOQHtVKzQxQH19IGJvdGggZGVub3RlIHRoZSBjaGFyYWN0ZXIg QGtiZHtBfS4gIFRvIHNpbXBsaWZ5Ci1lbnRlcmluZyBtdWx0aS1saW5lIHN0cmluZ3MsIHlv dSBjYW4gcmVwbGFjZSBzcGFjZXMgaW4gdGhlIGNoYXJhY3RlcgotbmFtZXMgYnkgYXJiaXRy YXJ5IG5vbi1lbXB0eSBzZXF1ZW5jZSBvZiB3aGl0ZXNwYWNlIChlLmcuLCBuZXdsaW5lcyku CitAZW5kIGVudW1lcmF0ZQogCiAgIFRoZXNlIGVzY2FwZSBzZXF1ZW5jZXMgbWF5IGFsc28g YmUgdXNlZCBpbiBzdHJpbmdzLiAgQHhyZWZ7Tm9uLUFTQ0lJCiBpbiBTdHJpbmdzfS4KZGlm ZiAtLWdpdCBhL3NyYy9jaGFyYWN0ZXIuaCBiL3NyYy9jaGFyYWN0ZXIuaAppbmRleCBiYzNl MTU1Li41ODZmMzMwIDEwMDY0NAotLS0gYS9zcmMvY2hhcmFjdGVyLmgKKysrIGIvc3JjL2No YXJhY3Rlci5oCkBAIC02MTIsMTQgKzYxMiwxMyBAQCBzYW5pdGl6ZV9jaGFyX3dpZHRoIChF TUFDU19JTlQgd2lkdGgpCiAgICA6IChjKSA8PSAweEUwMUVGID8gKGMpIC0gMHhFMDEwMCAr IDE3CVwKICAgIDogMCkKIAotLyogSWYgQyBpcyBhIGhpZ2ggc3Vycm9nYXRlLCByZXR1cm4g MS4gIElmIEMgaXMgYSBsb3cgc3Vycm9nYXRlLAotICAgcmV0dXJuIDIuICBPdGhlcndpc2Us IHJldHVybiAwLiAgKi8KKy8qIFJldHVybiB0cnVlIGlmIEMgaXMgYSBzdXJyb2dhdGUuICAq LwogCi0jZGVmaW5lIENIQVJfU1VSUk9HQVRFX1BBSVJfUChjKQlcCi0gICgoYykgPCAweEQ4 MDAgPyAwCQkJXAotICAgOiAoYykgPD0gMHhEQkZGID8gMQkJCVwKLSAgIDogKGMpIDw9IDB4 REZGRiA/IDIJCQlcCi0gICA6IDApCitJTkxJTkUgYm9vbAorY2hhcl9zdXJyb2dhdGVfcCAo aW50IGMpCit7CisgIHJldHVybiAweEQ4MDAgPD0gYyAmJiBjIDw9IDB4REZGRjsKK30KIAog LyogRGF0YSB0eXBlIGZvciBVbmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkuCiAKZGlmZiAtLWdp dCBhL3NyYy9scmVhZC5jIGIvc3JjL2xyZWFkLmMKaW5kZXggYzNiNmJkNy4uYTQyYzFmNiAx MDA2NDQKLS0tIGEvc3JjL2xyZWFkLmMKKysrIGIvc3JjL2xyZWFkLmMKQEAgLTQ0LDcgKzQ0 LDYgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLwogI2luY2x1ZGUgInRlcm1ob29rcy5oIgogI2luY2x1 ZGUgImJsb2NraW5wdXQuaCIKICNpbmNsdWRlIDxjLWN0eXBlLmg+Ci0jaW5jbHVkZSA8c3Ry aW5nLmg+CiAKICNpZmRlZiBNU0RPUwogI2luY2x1ZGUgIm1zZG9zLmgiCkBAIC0yMTUxLDg4 ICsyMTUwLDQyIEBAIGdyb3dfcmVhZF9idWZmZXIgKHZvaWQpCiAJCQkgTUFYX01VTFRJQllU RV9MRU5HVEgsIC0xLCAxKTsKIH0KIAotLyogU2lnbmFsIGFuIGludmFsaWQtcmVhZC1zeW50 YXggZXJyb3IgaW5kaWNhdGluZyB0aGF0IHRoZSBjaGFyYWN0ZXIKLSAgIG5hbWUgaW4gYW4g XE574oCmfSBsaXRlcmFsIGlzIGludmFsaWQuICAqLwotc3RhdGljIF9Ob3JldHVybiB2b2lk Ci1pbnZhbGlkX2NoYXJhY3Rlcl9uYW1lIChMaXNwX09iamVjdCBuYW1lKQotewotICBBVVRP X1NUUklORyAoZm9ybWF0LCAiXFxOeyVzfSIpOwotICB4c2lnbmFsMSAoUWludmFsaWRfcmVh ZF9zeW50YXgsIENBTExOIChGZm9ybWF0LCBmb3JtYXQsIG5hbWUpKTsKLX0KLQotLyogQ2hl Y2sgdGhhdCBDT0RFIGlzIGEgdmFsaWQgVW5pY29kZSBzY2FsYXIgdmFsdWUsIGFuZCByZXR1 cm4gaXRzCi0gICB2YWx1ZS4gIENPREUgc2hvdWxkIGJlIHBhcnNlZCBmcm9tIHRoZSBjaGFy YWN0ZXIgbmFtZSBnaXZlbiBieQotICAgTkFNRS4gIE5BTUUgaXMgdXNlZCBmb3IgZXJyb3Ig bWVzc2FnZXMuICAqLworLyogUmV0dXJuIHRoZSBzY2FsYXIgdmFsdWUgdGhhdCBoYXMgdGhl IFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUgTkFNRS4KKyAgIFJhaXNlICdpbnZhbGlkLXJlYWQt c3ludGF4JyBpZiB0aGVyZSBpcyBubyBzdWNoIGNoYXJhY3Rlci4gICovCiBzdGF0aWMgaW50 Ci1jaGVja19zY2FsYXJfdmFsdWUgKExpc3BfT2JqZWN0IGNvZGUsIExpc3BfT2JqZWN0IG5h bWUpCitjaGFyYWN0ZXJfbmFtZV90b19jb2RlIChjaGFyIGNvbnN0ICpuYW1lLCBwdHJkaWZm X3QgbmFtZV9sZW4pCiB7Ci0gIGlmICghIE5VTUJFUlAgKGNvZGUpKQotICAgIGludmFsaWRf Y2hhcmFjdGVyX25hbWUgKG5hbWUpOwotICBFTUFDU19JTlQgaSA9IFhJTlQgKGNvZGUpOwot ICBpZiAoISAoMCA8PSBpICYmIGkgPD0gTUFYX1VOSUNPREVfQ0hBUikKLSAgICAgIC8qIERv bid0IGFsbG93IHN1cnJvZ2F0ZXMuICAqLwotICAgICAgfHwgKDB4RDgwMCA8PSBjb2RlICYm IGNvZGUgPD0gMHhERkZGKSkKLSAgICBpbnZhbGlkX2NoYXJhY3Rlcl9uYW1lIChuYW1lKTsK LSAgcmV0dXJuIGk7Ci19CisgIExpc3BfT2JqZWN0IGNvZGU7CiAKLS8qIElmIE5BTUUgc3Rh cnRzIHdpdGggUFJFRklYLCBpbnRlcnByZXQgdGhlIHJlc3QgYXMgYSBoZXhhZGVjaW1hbAot ICAgbnVtYmVyIGFuZCByZXR1cm4gaXRzIHZhbHVlLiAgUmFpc2UgaW52YWxpZC1yZWFkLXN5 bnRheCBpZiB0aGUKLSAgIG51bWJlciBpcyBub3QgYSB2YWxpZCBzY2FsYXIgdmFsdWUuICBS ZXR1cm4g4oiSMSBpZiBOQU1FIGRvZXNu4oCZdAotICAgc3RhcnQgd2l0aCBQUkVGSVguICAq Lwotc3RhdGljIGludAotcGFyc2VfY29kZV9hZnRlcl9wcmVmaXggKExpc3BfT2JqZWN0IG5h bWUsIGNvbnN0IGNoYXIgKnByZWZpeCkKLXsKLSAgcHRyZGlmZl90IG5hbWVfbGVuID0gU0JZ VEVTIChuYW1lKTsKLSAgcHRyZGlmZl90IHByZWZpeF9sZW4gPSBzdHJsZW4gKHByZWZpeCk7 Ci0gIC8qIEFsbG93IGJldHdlZW4gb25lIGFuZCBlaWdodCBoZXhhZGVjaW1hbCBkaWdpdHMg YWZ0ZXIgdGhlCi0gICAgIHByZWZpeC4gICovCi0gIGlmIChwcmVmaXhfbGVuIDwgbmFtZV9s ZW4gJiYgbmFtZV9sZW4gPD0gcHJlZml4X2xlbiArIDgKLSAgICAgICYmIG1lbWNtcCAoU0RB VEEgKG5hbWUpLCBwcmVmaXgsIHByZWZpeF9sZW4pID09IDApCisgIC8qIENvZGUgcG9pbnQg YXMgVStYWFhYLi4uLiAgKi8KKyAgaWYgKG5hbWVbMF0gPT0gJ1UnICYmIG5hbWVbMV0gPT0g JysnKQogICAgIHsKLSAgICAgIExpc3BfT2JqZWN0IGNvZGUgPSBzdHJpbmdfdG9fbnVtYmVy IChTREFUQSAobmFtZSkgKyBwcmVmaXhfbGVuLCAxNiwgZmFsc2UpOwotICAgICAgaWYgKE5V TUJFUlAgKGNvZGUpKQotICAgICAgICByZXR1cm4gY2hlY2tfc2NhbGFyX3ZhbHVlIChjb2Rl LCBuYW1lKTsKKyAgICAgIC8qIFBhc3MgdGhlIGxlYWRpbmcgJysnIHRvIHN0cmluZ190b19u dW1iZXIsIHNvIHRoYXQgaXQKKwkgcmVqZWN0cyBtb25zdHJvc2l0aWVzIHN1Y2ggYXMgbmVn YXRpdmUgdmFsdWVzLiAgKi8KKyAgICAgIGNvZGUgPSBzdHJpbmdfdG9fbnVtYmVyIChuYW1l ICsgMSwgMTYsIGZhbHNlKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBMb29r IHVwIHRoZSBuYW1lIGluIHRoZSB0YWJsZSByZXR1cm5lZCBieSAndWNzLW5hbWVzJy4gICov CisgICAgICBBVVRPX1NUUklOR19XSVRIX0xFTiAobmFtZXN0ciwgbmFtZSwgbmFtZV9sZW4p OworICAgICAgTGlzcF9PYmplY3QgbmFtZXMgPSBjYWxsMCAoUXVjc19uYW1lcyk7CisgICAg ICBjb2RlID0gQ0RSIChGYXNzb2MgKG5hbWVzdHIsIG5hbWVzKSk7CiAgICAgfQotICByZXR1 cm4gLTE7Ci19CiAKLS8qIFJldHVybnMgdGhlIHNjYWxhciB2YWx1ZSB0aGF0IGhhcyB0aGUg VW5pY29kZSBjaGFyYWN0ZXIgbmFtZSBOQU1FLgotICAgUmFpc2VzIGBpbnZhbGlkLXJlYWQt c3ludGF4JyBpZiB0aGVyZSBpcyBubyBzdWNoIGNoYXJhY3Rlci4gICovCi1zdGF0aWMgaW50 Ci1jaGFyYWN0ZXJfbmFtZV90b19jb2RlIChMaXNwX09iamVjdCBuYW1lKQotewotICAvKiBD b2RlIHBvaW50IGFzIFUrTiwgd2hlcmUgTiBpcyBiZXR3ZWVuIDEgYW5kIDggaGV4YWRlY2lt YWwKLSAgICAgZGlnaXRzLiAgKi8KLSAgaW50IGNvZGUgPSBwYXJzZV9jb2RlX2FmdGVyX3By ZWZpeCAobmFtZSwgIlUrIik7Ci0gIGlmIChjb2RlID49IDApCi0gICAgcmV0dXJuIGNvZGU7 Ci0KLSAgLyogQ0pLIGlkZW9ncmFwaHMgYXJlIG5vdCBjb250YWluZWQgaW4gdGhlIGFzc29j aWF0aW9uIGxpc3QgcmV0dXJuZWQKLSAgICAgYnkgYHVjcy1uYW1lcycuICBCdXQgdGhleSBm b2xsb3cgYSBwcmVkaWN0YWJsZSBuYW1pbmcgcGF0dGVybjogYQotICAgICBmaXhlZCBwcmVm aXggcGx1cyB0aGUgaGV4YWRlY2ltYWwgY29kZXBvaW50IHZhbHVlLiAgKi8KLSAgY29kZSA9 IHBhcnNlX2NvZGVfYWZ0ZXJfcHJlZml4IChuYW1lLCAiQ0pLIElERU9HUkFQSC0iKTsKLSAg aWYgKGNvZGUgPj0gMCkKKyAgaWYgKCEgKElOVEVHRVJQIChjb2RlKQorCSAmJiAwIDw9IFhJ TlQgKGNvZGUpICYmIFhJTlQgKGNvZGUpIDw9IE1BWF9VTklDT0RFX0NIQVIKKwkgJiYgISBj aGFyX3N1cnJvZ2F0ZV9wIChYSU5UIChjb2RlKSkpKQogICAgIHsKLSAgICAgIC8qIFZhcmlv dXMgcmFuZ2VzIG9mIENKSyBjaGFyYWN0ZXJzOyBzZWUgVW5pY29kZURhdGEudHh0LiAgKi8K LSAgICAgIGlmICgoMHgzNDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDREQjUpCi0gICAgICAg ICAgfHwgKDB4NEUwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHg5RkQ1KQotICAgICAgICAgIHx8 ICgweDIwMDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJBNkQ2KQotICAgICAgICAgIHx8ICgw eDJBNzAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCNzM0KQotICAgICAgICAgIHx8ICgweDJC NzQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCODFEKQotICAgICAgICAgIHx8ICgweDJCODIw IDw9IGNvZGUgJiYgY29kZSA8PSAweDJDRUExKSkKLSAgICAgICAgcmV0dXJuIGNvZGU7Ci0g ICAgICBlbHNlCi0gICAgICAgIGludmFsaWRfY2hhcmFjdGVyX25hbWUgKG5hbWUpOworICAg ICAgQVVUT19TVFJJTkcgKGZvcm1hdCwgIlxcTnslc30iKTsKKyAgICAgIEFVVE9fU1RSSU5H X1dJVEhfTEVOIChuYW1lc3RyLCBuYW1lLCBuYW1lX2xlbik7CisgICAgICB4c2lnbmFsMSAo UWludmFsaWRfcmVhZF9zeW50YXgsIENBTExOIChGZm9ybWF0LCBmb3JtYXQsIG5hbWVzdHIp KTsKICAgICB9CiAKLSAgLyogTG9vayB1cCB0aGUgbmFtZSBpbiB0aGUgdGFibGUgcmV0dXJu ZWQgYnkgYHVjcy1uYW1lcycuICAqLwotICBMaXNwX09iamVjdCBuYW1lcyA9IGNhbGwwIChR dWNzX25hbWVzKTsKLSAgcmV0dXJuIGNoZWNrX3NjYWxhcl92YWx1ZSAoQ0RSIChGYXNzb2Mg KG5hbWUsIG5hbWVzKSksIG5hbWUpOworICByZXR1cm4gWElOVCAoY29kZSk7CiB9CiAKIC8q IEJvdW5kIG9uIHRoZSBsZW5ndGggb2YgYSBVbmljb2RlIGNoYXJhY3RlciBuYW1lLiAgQXMg b2YKLSAgIFVuaWNvZGXCoDkuMC4wIHRoZSBtYXhpbXVtIGlzIDgzLCBzbyB0aGlzIHNob3Vs ZCBiZSBzYWZlLiAqLworICAgVW5pY29kZSA5LjAuMCB0aGUgbWF4aW11bSBpcyA4Mywgc28g dGhpcyBzaG91bGQgYmUgc2FmZS4gICovCiBlbnVtIHsgVU5JQ09ERV9DSEFSQUNURVJfTkFN RV9MRU5HVEhfQk9VTkQgPSAyMDAgfTsKIAogLyogUmVhZCBhIFwtZXNjYXBlIHNlcXVlbmNl LCBhc3N1bWluZyB3ZSBhbHJlYWR5IHJlYWQgdGhlIGBcJy4KQEAgLTI0NTgsMTQgKzI0MTEs MTQgQEAgcmVhZF9lc2NhcGUgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBib29sIHN0cmlu Z3ApCiAgICAgICAgICAgICAgIGVuZF9vZl9maWxlX2Vycm9yICgpOwogICAgICAgICAgICAg aWYgKGMgPT0gJ30nKQogICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmICgh IGNfaXNhc2NpaSAoYykpCisgICAgICAgICAgICBpZiAoISAoMCA8IGMgJiYgYyA8IDB4ODAp KQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQVVUT19TVFJJTkcgKGZvcm1h dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbi1BU0NJSSBjaGFyYWN0ZXIg VSslMDRYIGluIGNoYXJhY3RlciBuYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJJbnZhbGlkIGNoYXJhY3RlciBVKyUwNFggaW4gY2hhcmFjdGVyIG5hbWUiKTsKICAg ICAgICAgICAgICAgICB4c2lnbmFsMSAoUWludmFsaWRfcmVhZF9zeW50YXgsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIENBTExOIChGZm9ybWF0LCBmb3JtYXQsIG1ha2VfbmF0bnVt IChjKSkpOwogICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBXZSB0cmVhdCBtdWx0 aXBsZSBhZGphY2VudCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYXMgYQorICAgICAgICAgICAg LyogVHJlYXQgbXVsdGlwbGUgYWRqYWNlbnQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFzIGEK ICAgICAgICAgICAgICAgIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIuICBUaGlzIG1ha2VzIGl0 IGVhc2llciB0byB1c2UKICAgICAgICAgICAgICAgIGNoYXJhY3RlciBuYW1lcyBpbiBlLmcu IG11bHRpLWxpbmUgc3RyaW5ncy4gICovCiAgICAgICAgICAgICBpZiAoY19pc3NwYWNlIChj KSkKQEAgLTI0ODMsNyArMjQzNiw4IEBAIHJlYWRfZXNjYXBlIChMaXNwX09iamVjdCByZWFk Y2hhcmZ1biwgYm9vbCBzdHJpbmdwKQogICAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbmd0 aCA9PSAwKQogICAgICAgICAgIGludmFsaWRfc3ludGF4ICgiRW1wdHkgY2hhcmFjdGVyIG5h bWUiKTsKLSAgICAgICAgcmV0dXJuIGNoYXJhY3Rlcl9uYW1lX3RvX2NvZGUgKG1ha2VfdW5p Ynl0ZV9zdHJpbmcgKG5hbWUsIGxlbmd0aCkpOworCW5hbWVbbGVuZ3RoXSA9ICdcMCc7CisJ cmV0dXJuIGNoYXJhY3Rlcl9uYW1lX3RvX2NvZGUgKG5hbWUsIGxlbmd0aCk7CiAgICAgICB9 CiAKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvdGVzdC9zcmMvbHJlYWQtdGVzdHMuZWwg Yi90ZXN0L3NyYy9scmVhZC10ZXN0cy5lbAppbmRleCBmZjVkMGY2Li4yZWJhZjQ5IDEwMDY0 NAotLS0gYS90ZXN0L3NyYy9scmVhZC10ZXN0cy5lbAorKysgYi90ZXN0L3NyYy9scmVhZC10 ZXN0cy5lbApAQCAtMSw2ICsxLDYgQEAKIDs7OyBscmVhZC10ZXN0cy5lbCAtLS0gdGVzdHMg Zm9yIGxyZWFkLmMgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCiAKLTs7IENvcHlyaWdo dCAoQykgMjAxNiAgR29vZ2xlIEluYy4KKzs7IENvcHlyaWdodCAoQykgMjAxNiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogOzsgQXV0aG9yOiBQaGlsaXBwIFN0ZXBoYW5p IDxwaHN0QGdvb2dsZS5jb20+CiAKQEAgLTI2LDExICsyNiwxMCBAQAogOzs7IENvZGU6CiAK IChlcnQtZGVmdGVzdCBscmVhZC1jaGFyLW51bWJlciAoKQotICAoc2hvdWxkIChlcXVhbCA/ XE57VStBODE3fSAjeEE4MTcpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHJlYWQgIj9cXE57VStB ODE3fSIpICN4QTgxNykpKQogCiAoZXJ0LWRlZnRlc3QgbHJlYWQtY2hhci1uYW1lICgpCi0g IChzaG91bGQgKGVxdWFsID9cTntTWUxPVEkgIE5BR1JJIExFVFRFUgotICAgICAgICAgICAg ICAgICBESE99CisgIChzaG91bGQgKGVxdWFsIChyZWFkICI/XFxOe1NZTE9USSAgTkFHUkkg TEVUVEVSIFxuIERIT30iKQogICAgICAgICAgICAgICAgICAjeEE4MTcpKSkKIAogKGVydC1k ZWZ0ZXN0IGxyZWFkLWNoYXItaW52YWxpZC1udW1iZXIgKCkKQEAgLTQ2LDE2ICs0NSwyMyBA QAogKGVydC1kZWZ0ZXN0IGxyZWFkLWNoYXItZW1wdHktbmFtZSAoKQogICAoc2hvdWxkLWVy cm9yIChyZWFkICI/XFxOe30iKSA6dHlwZSAnaW52YWxpZC1yZWFkLXN5bnRheCkpCiAKLShl cnQtZGVmdGVzdCBscmVhZC1jaGFyLWNqay1uYW1lICgpCi0gIChzaG91bGQgKGVxdWFsID9c TntDSksgSURFT0dSQVBILTJCNzM0fSAjeDJCNzM0KSkpCi0KLShlcnQtZGVmdGVzdCBscmVh ZC1jaGFyLWludmFsaWQtY2prLW5hbWUgKCkKLSAgKHNob3VsZC1lcnJvciAocmVhZCAiP1xc TntDSksgSURFT0dSQVBILTJCNzM1fSIpIDp0eXBlICdpbnZhbGlkLXJlYWQtc3ludGF4KSkK LQotKGVydC1kZWZ0ZXN0IGxyZWFkLXN0cmluZy1jaGFyLW51bWJlciAoKQotICAoc2hvdWxk IChlcXVhbCAiYVxOe1UrQTgxN31iIiAiYVx1QTgxN2IiKSkpCisoZXJ0LWRlZnRlc3QgbHJl YWQtY2hhci1zdXJyb2dhdGUtMSAoKQorICAoc2hvdWxkLWVycm9yIChyZWFkICI/XFxOe1Ur RDgwMH0iKSA6dHlwZSAnaW52YWxpZC1yZWFkLXN5bnRheCkpCisoZXJ0LWRlZnRlc3QgbHJl YWQtY2hhci1zdXJyb2dhdGUtMiAoKQorICAoc2hvdWxkLWVycm9yIChyZWFkICI/XFxOe1Ur RDgwMX0iKSA6dHlwZSAnaW52YWxpZC1yZWFkLXN5bnRheCkpCisoZXJ0LWRlZnRlc3QgbHJl YWQtY2hhci1zdXJyb2dhdGUtMyAoKQorICAoc2hvdWxkLWVycm9yIChyZWFkICI/XFxOe1Ur RGZmZX0iKSA6dHlwZSAnaW52YWxpZC1yZWFkLXN5bnRheCkpCisoZXJ0LWRlZnRlc3QgbHJl YWQtY2hhci1zdXJyb2dhdGUtNCAoKQorICAoc2hvdWxkLWVycm9yIChyZWFkICI/XFxOe1Ur REZGRn0iKSA6dHlwZSAnaW52YWxpZC1yZWFkLXN5bnRheCkpCisKKyhlcnQtZGVmdGVzdCBs cmVhZC1zdHJpbmctY2hhci1udW1iZXItMSAoKQorICAoc2hvdWxkIChlcXVhbCAocmVhZCAi YVxcTntVK0E4MTd9YiIpICJhXHVBODE3YngiKSkpCisoZXJ0LWRlZnRlc3QgbHJlYWQtc3Ry aW5nLWNoYXItbnVtYmVyLTIgKCkKKyAgKHNob3VsZC1lcnJvciAocmVhZCAiP1xcTnswLjV9 IikgOnR5cGUgJ2ludmFsaWQtcmVhZC1zeW50YXgpKQorKGVydC1kZWZ0ZXN0IGxyZWFkLXN0 cmluZy1jaGFyLW51bWJlci0zICgpCisgIChzaG91bGQtZXJyb3IgKHJlYWQgIj9cXE57VSst MH0iKSA6dHlwZSAnaW52YWxpZC1yZWFkLXN5bnRheCkpCiAKIChlcnQtZGVmdGVzdCBscmVh ZC1zdHJpbmctY2hhci1uYW1lICgpCi0gIChzaG91bGQgKGVxdWFsICJhXE57U1lMT1RJIE5B R1JJICBMRVRURVIgREhPfWIiICJhXHVBODE3YiIpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHJl YWQgImFcXE57U1lMT1RJIE5BR1JJICBMRVRURVIgREhPfWIiKSAiYVx1QTgxN2IiKSkpCiAK IDs7OyBscmVhZC10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuNS41Cgo= --------------030904070300060307060504--