From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "David J. Biesack" Newsgroups: gmane.emacs.bugs Subject: bug#4450: 23.1; encoding error loading .elc locks file Date: Wed, 16 Sep 2009 11:07:44 -0400 Message-ID: Reply-To: "David J. Biesack" , 4450@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="++----------20090916110457-214281563----------++" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1253114898 19684 80.91.229.12 (16 Sep 2009 15:28:18 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 16 Sep 2009 15:28:18 +0000 (UTC) To: bug-gnu-emacs@gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Sep 16 17:28:11 2009 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MnwQC-0000fs-As for geb-bug-gnu-emacs@m.gmane.org; Wed, 16 Sep 2009 17:28:11 +0200 Original-Received: from localhost ([127.0.0.1]:55333 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MnwQB-0004UA-D4 for geb-bug-gnu-emacs@m.gmane.org; Wed, 16 Sep 2009 11:27:51 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MnwPV-00048t-D8 for bug-gnu-emacs@gnu.org; Wed, 16 Sep 2009 11:27:09 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MnwPQ-000477-Fv for bug-gnu-emacs@gnu.org; Wed, 16 Sep 2009 11:27:08 -0400 Original-Received: from [199.232.76.173] (port=58487 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MnwPQ-000474-Bs for bug-gnu-emacs@gnu.org; Wed, 16 Sep 2009 11:27:04 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:43797) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MnwPP-0000eM-9P for bug-gnu-emacs@gnu.org; Wed, 16 Sep 2009 11:27:04 -0400 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n8GFR04p022382; Wed, 16 Sep 2009 08:27:01 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.14.3/8.14.3/Submit) id n8GFF4R9020440; Wed, 16 Sep 2009 08:15:04 -0700 Resent-Date: Wed, 16 Sep 2009 08:15:04 -0700 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: "David J. Biesack" Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs 2Resent-Date: Wed, 16 Sep 2009 15:15:03 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: report 4450 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by submit@emacsbugs.donarmstrong.com id=B.125311367619630 (code B ref -1); Wed, 16 Sep 2009 15:15:03 +0000 Original-Received: (at submit) by emacsbugs.donarmstrong.com; 16 Sep 2009 15:07:56 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n8GF7rf4019625 for ; Wed, 16 Sep 2009 08:07:55 -0700 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Mnw6r-0008US-8T for bug-gnu-emacs@gnu.org; Wed, 16 Sep 2009 11:07:53 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Mnw6m-0008Qw-Iw for bug-gnu-emacs@gnu.org; Wed, 16 Sep 2009 11:07:52 -0400 Original-Received: from [199.232.76.173] (port=50038 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mnw6m-0008Ql-7x for bug-gnu-emacs@gnu.org; Wed, 16 Sep 2009 11:07:48 -0400 Original-Received: from mercav14.na.sas.com ([149.173.6.152]:16306) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Mnw6l-0004ac-Fu for bug-gnu-emacs@gnu.org; Wed, 16 Sep 2009 11:07:48 -0400 X-TM-IMSS-Message-ID: <19f6463a000304b7@mercav14.na.sas.com> Original-Received: from d16922.us.sas.com ([10.40.12.239]) by mercav14.na.sas.com ([10.19.9.244]) with ESMTP (TREND IMSS SMTP Service 7.0) id 19f6463a000304b7 ; Wed, 16 Sep 2009 11:07:45 -0400 X-Mailer: Emacs 23.1.1 with etach 1.4.3 X-detected-operating-system: by monty-python.gnu.org: Windows 2000 SP4, XP SP1+ X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Resent-Date: Wed, 16 Sep 2009 11:27:08 -0400 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:31144 Archived-At: This is a multi-part message in MIME format. --++----------20090916110457-214281563----------++ Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit I have .el files compiled in earlier versions of Emacs and I get an error trying to load them in 23.1 load-file: Invalid read syntax: "invalid multibyte form" I try to recompile them, but I get an error: byte-compile-file: Removing old name: permission denied, c:/djb/emacs/filemenu.e I must exit emacs to release the lock on the file, then I can open and byte-compile the .el file and load the .elc I've attached a copy of my existing filemenu.elc and filemenu.el but this occurs on other .elc files as well. In GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600) of 2009-07-30 on SOFT-MJASON Windowing system distributor `Microsoft Corp.', version 5.1.2600 configured using `configure --with-gcc (4.4)' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: ENU value of $XMODIFIERS: nil locale-coding-system: cp1252 default-enable-multibyte-characters: t Major mode: Emacs-Lisp Minor modes in effect: tooltip-mode: t tool-bar-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t global-auto-composition-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: M-x l o a d - f i l e d j b / e m a c s / f i l e m e n c C-x C-f d j b / e m a c s / f i l e m e M-x b y t e - c o m p i SPC f SPC f i l e m e n u . e l M-x r e p o r t - e m a c s - b u SPC Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. Loading c:/djb/emacs/filemenu.elc (compiled; note, source file is newer)... load-file: Invalid read syntax: "invalid multibyte form" Compiling c:/djb/emacs/filemenu.el... Fontifying *Compile-Log*... (regexps.......................................................) Compiling c:/djb/emacs/filemenu.el...done byte-compile-file: Removing old name: permission denied, c:/djb/emacs/filemenu.elc -- David J. Biesack, SAS SAS Campus Dr. Cary, NC 27513 www.sas.com (919) 531-7771 --++----------20090916110457-214281563----------++ Content-Type: application/octet-stream; name="filemenu.elc" Content-Transfer-Encoding: base64 O0VMQxIAAAAKOzs7IGNvbXBpbGVkIGJ5IHNhc2RqYkB1bnguc2FzLmNvbSBvbiBXZWQgSnVuIDAz IDExOjQ5OjMyIDE5OTgKOzs7IGZyb20gZmlsZSBkOi9ESkIvZW1hY3MvZmlsZW1lbnUuZWwKOzs7 IGVtYWNzIHZlcnNpb24gMTkuMzQuNi4KOzs7IGJ5dGVjb21wIHZlcnNpb24gRlNGIDIuMTAKOzs7 IG9wdGltaXphdGlvbiBpcyBvbjsgY29tcGlsZWQgd2l0aCBFbWFjcyAxOCBjb21wYXRpYmlsaXR5 Lgoob3IgKGJvdW5kcCAnY3VycmVudC1sb2FkLWxpc3QpIChzZXRxIGN1cnJlbnQtbG9hZC1saXN0 IG5pbCkpCgoKKGRlZnZhciBmaWxlbWVudS1maWxlLW5hbWUgIn4vZmlsZW1lbnUiICJcCipQYXRo IHRvIGRlZmF1bHQgZmlsZSBtZW51IHVzZWQgYnkgdGhlIGZpbGVtZW51IGNvbW1hbmQuIikKKGRl ZnZhciBmaWxlbWVudS1tb2RlLWhvb2sgbmlsICJcCk5vcm1hbCBob29rIHJ1biBhZnRlciBsb2Fk aW5nIGEgYnVmZmVyIGluIGZpbGVtZW51IG1vZGUuIikKKGRlZnVuIGZpbGVtZW51LW1vZGUgbmls ICJcCk1ham9yIG1vZGUgZm9yIHBpY2tpbmcgYSBmaWxlIHRvIGVkaXQgZnJvbSBhIGJ1ZmZlciBv ZmZlcmluZyBhIG1lbnUuClRoZSBpbnRlbmRlZCB1c2UgaXMgb24gYSBmaWxlIHlvdSB3aWxsIGNy ZWF0ZSBsaXN0aW5nIHRoZSBmaWxlcyB5b3UgdmlzaXQKc28gZnJlcXVlbnRseSB5b3Ugd2FudCB0 aGVtIG9uIGEgbWVudS4gIFRoZSBjb21tYW5kICdmaWxlbWVudSB2aXNpdHMgdGhhdApmaWxlIGlu IGZpbGVtZW51LW1vZGUuICBBbiBleGFtcGxlIG9mIHRoZSBmb3JtYXQ6CiAgIC9ldGMvcGFzc3dk CiAgIC9ob21lL215c2VsZi8KICAgICAgZGlhcnkgIFwiRmlsZSB3aXRoIHNwYWNlcyBpbiBpdHMg bmFtZS5Eb2NcIiAgYzpcXERPU1xcTmliYmxlcy5CYXMKICAgICAgZm9vLnNwb28gIHdvby5ob28g IC91c3IvbG9jYWwvYmluL2JhbGx5aG9vLnUgIG9vcHMub29mCiAgIC9ldGMvaG9zdHNcXDxmaWxl bWVudS1tYXA+CkFueSAjIG9mIGZpbGUgbmFtZXMgbWF5IGFwcGVhciBvbiBhIGxpbmUuICBJZiB0 aGUgbmFtZSBjb250YWlucyBubwpkaXJlY3Rvcnkgc2VwYXJhdG9yIGNoYXJhY3RlcnMgKHZpcmd1 bGVzIG9yIGJhY2tzbGFzaGVzKSwgYW55IHByZWNlZGluZwpsaW5lIHRoYXQgZW5kZWQgd2l0aCBz dWNoIGEgY2hhcmFjdGVyIGlzIHVzZWQgYXMgdGhlIGRpcmVjdG9yeS4KSW5kZW50YXRpb24gaXMg b3B0aW9uYWwgJiBpZ25vcmVkLiAgWW91IHBpY2sgYSBmaWxlIHRvIHZpc2l0IGJ5CnBvc2l0aW9u aW5nIHBvaW50IG9uIGl0cyBuYW1lICYgdHlwaW5nIFxcW2ZpbGVtZW51LWZpbmQtZmlsZS1hdC1w b2ludF0sCm9yIGJ5IG1vdXNlLWNsaWNraW5nIGl0LiAgVHVybmluZyBvbiBmaWxlbWVudSBtb2Rl IGNhbGxzIHRoZSB2YWx1ZSBvZiB0aGUKdmFyaWFibGUgYGZpbGVtZW51LW1vZGUtaG9vaycsIGlm IHRoYXQgdmFsdWUgaXMgbm9uLW5pbC4KClxce2ZpbGVtZW51LW1hcH0iIChpbnRlcmFjdGl2ZSkg KGJ5dGUtY29kZSAiwCCIwRLDFMUOBiGIx8ghhyIgW2tpbGwtYWxsLWxvY2FsLXZhcmlhYmxlcyBm aWxlbWVudS1tb2RlIG1ham9yLW1vZGUgIkZpbGVtZW51IiBtb2RlLW5hbWUgdXNlLWxvY2FsLW1h cCBmaWxlbWVudS1tYXAgcnVuLWhvb2tzIGZpbGVtZW51LW1vZGUtaG9va10gMikpCihkZWZ1biBm aWxlbWVudSBuaWwgIlwKTG9hZCB0aGUgZmlsZSBuYW1lZCBieSB0aGUgdmFyaWFibGUgZmlsZW1l bnUtZmlsZS1uYW1lLiIgKGludGVyYWN0aXZlKSAoYnl0ZS1jb2RlICLACSGIwiCHIiBbZmluZC1m aWxlIGZpbGVtZW51LWZpbGUtbmFtZSBmaWxlbWVudS1tb2RlXSAyKSkKKGRlZnZhciBmaWxlbWVu dS1tYXAgbmlsICJcCktleW1hcCBmb3IgZmlsZW1lbnUgbW9kZS4iKQooYnl0ZS1jb2RlICIIhCsA wSAQwgjDxCOIwgjFxCOIwgjGxyOIwgjIySOIwgjKxyOIwgjLySOIwYciIFtmaWxlbWVudS1tYXAg bWFrZS1zcGFyc2Uta2V5bWFwIGRlZmluZS1rZXkgIg0iIGZpbGVtZW51LWZpbmQtZmlsZS1hdC1w b2ludCBbbW91c2UtMV0gW2Rvd24tbW91c2UtMV0gbW91c2Utc2V0LXBvaW50ICJ2IiBmaWxlbWVu dS12aWV3LWZpbGUtYXQtcG9pbnQgW2Rvd24tbW91c2UtMl0gW21vdXNlLTJdXSA0KQooZnNldCAn ZmlsZW1lbnUtZmluZC1maWxlLWF0LXBvaW50ICcobGFtYmRhIG5pbCAoaW50ZXJhY3RpdmUpIChi eXRlLWNvZGUgIsDBIYciIFtmaWxlbWVudS12aXNpdC1maWxlLWF0LXBvaW50LXVzaW5nIGZpbmQt ZmlsZV0gMikpKQooZnNldCAnZmlsZW1lbnUtdmlldy1maWxlLWF0LXBvaW50ICcobGFtYmRhIG5p bCAoaW50ZXJhY3RpdmUpIChieXRlLWNvZGUgIsDBIYciIFtmaWxlbWVudS12aXNpdC1maWxlLWF0 LXBvaW50LXVzaW5nIHZpZXctZmlsZV0gMikpKQooZnNldCAnZmlsZW1lbnUtdmlzaXQtZmlsZS1h dC1wb2ludC11c2luZyAnKGxhbWJkYSAoZnVuY3Rpb24pIChieXRlLWNvZGUgIgg5hAkAwcIhiG6D FQBsgxUAwcMhiMSJiYkdHgYeBx4IisnKIYjLzCGDLwDBzSGIYBYIKYppziBXgz4AzyCIy9Ahg0oA 0SCIglYAy9Ihg1YA0yCIgkoA1NUOCNYjg3IA0SCIYBYH19UhiNMgiGAWBoKSANjZIYjL2iGDfwDR IIhgFgfb3CGI3d4hg48A0yCIYBYG3w4HDgZcIokVR8pVg6QAweAhiOHiDVwihMcA2OPE1iODxwDP IIhgFgjd3iFUYojfDghgXCINUBUp4eQNXCKD2gDl5g1cIojnDSGC6gDl6AgNI4jEHinqIIgpCA0h LIciIFtmdW5jdGlvbiBlcnJvciAiSW50ZXJuYWwgZmFpbHVyZSAzMzIyIiAiRW1wdHkgbGluZSIg bmlsIGZpbGUgcG9pbnQtZW5kIHBvaW50LXN0YXJ0IHBvaW50LWJvbCBmb3J3YXJkLWxpbmUgMCBs b29raW5nLWF0ICJbIAldKyQiICJMaW5lIGlzIGFsbCB3aGl0ZXNwYWNlIiBjdXJyZW50LWluZGVu dGF0aW9uIGJhY2stdG8taW5kZW50YXRpb24gIlwiW14gCVxuXSIgZm9yd2FyZC1jaGFyICJbIAld KiQiIGJhY2t3YXJkLWNoYXIgc2VhcmNoLWJhY2t3YXJkICJcIiIgdCBzZWFyY2gtZm9yd2FyZCBy ZS1zZWFyY2gtYmFja3dhcmQgIl5cXHxbIAldIiAiWyAJXSIgcmUtc2VhcmNoLWZvcndhcmQgIlxc KFsgCV1cXClcXHwkIiBtYXRjaC1iZWdpbm5pbmcgMSBidWZmZXItc3Vic3RyaW5nICJObyBmaWxl IG5hbWUgc3BlY2lmaWVkIiBzdHJpbmctbWF0Y2ggIlsvXFxdIiAiXFwoWy9cXF1cXClcXHMtKiQi ICJbKj9dIiBtZXNzYWdlICIoZGlyZWQgJVMpIiBkaXJlZCAiKCVTICVTKSIgamlnZ2xlLWVuYWJs ZWQgYnVyeS1idWZmZXJdIDUpKSkKKHByb3ZpZGUgKHF1b3RlIGZpbGVtZW51KSkK --++----------20090916110457-214281563----------++ Content-Type: application/octet-stream; name="filemenu.el" Content-Transfer-Encoding: base64 Ozs7IGZpbGVtZW51LmVsIC0tLSBNb2RlIGZvciBidWZmZXJzIHRoYXQgcHJlc2VudCBtZW51cyBv ZiBmaWxlcyB0byB2aXNpdA0KDQo7OyBDb3B5cmlnaHQgKEMpIDE5OTggV2lsbCBNZW5nYXJpbmkN Cg0KOzsgQXV0aG9yOiBXaWxsIE1lbmdhcmluaSA8c2VsZG9uQGVza2ltby5jb20+DQo7OyBVUkw6 IDxodHRwOi8vd3d3LmVza2ltby5jb20vfnNlbGRvbj4NCjs7IENyZWF0ZWQ6IFNhIDI2IEp1bCA5 Nw0KOzsgVmVyc2lvbjogMC41MiwgTW8gMDQgTWF5IDk4DQo7OyBLZXl3b3JkczogYWJicmV2LCBm aWxlcywgZmlsZW1lbnUsIG1lbnUNCg0KOzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCjs7IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQo7 OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQg eW91ciBvcHRpb24pDQo7OyBhbnkgbGF0ZXIgdmVyc2lvbi4NCg0KOzsgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo7OyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zg0KOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQ0KOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4NCg0KOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UNCjs7IGFsb25nIHdpdGggR05VIEVtYWNzOyBzZWUgdGhlIGZpbGUg Q09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlDQo7OyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwNCjs7IEJvc3RvbiwgTUEgMDIx MTEtMTMwNywgVVNBLg0KDQo7OzsgQ29tbWVudGFyeToNCg0KOzsgVGhpcyBwYWNrYWdlIGxldHMg eW91IHNldCB1cCBvbmUgb3IgbW9yZSBtZW51cyBvZiBuYW1lcyBvZiBmaWxlcyB5b3UgdmlzaXQN Cjs7IGZyZXF1ZW50bHksIHNvIHlvdSBjYW4gc2VsZWN0IGZyb20gdGhhdCBtZW51LiAgQSBtb3Vz ZSBpcyBzdXBwb3J0ZWQgYnV0DQo7OyBub3QgcmVxdWlyZWQuICBUaGUgbWVudXMgYXJlIHN0b3Jl ZCBpbiB0ZXh0IGZpbGVzOyB0aGV5IGNhbiBoYXZlIHNldmVyYWwNCjs7IGNvbHVtbnMgb2YgZmls ZSBuYW1lcywgJiBjYW4gYXBwbHkgZGlmZmVyZW50IGRlZmF1bHQgZGlyZWN0b3JpZXMgdG8NCjs7 IGRpZmZlcmVudCBncm91cHMgb2YgbGluZXMgaW4gdGhlIHNhbWUgZmlsZS4gIEZpbGUgbmFtZXMg dGhhdCBjb250YWluDQo7OyBzcGFjZXMsIHN1Y2ggYXMgb2NjdXIgb24gTWFjcyAmIG9uIFdpbmRv d3Mgezk1LE5UfSwgYXJlIHN1cHBvcnRlZC4NCg0KOzsgVG8gdXNlIHRoaXMgcGFja2FnZSwgeW91 IG5lZWQgdG8gaGFjayAyIGZpbGVzOiBhIGZpbGUgeW91J2xsIGNyZWF0ZQ0KOzsgY29udGFpbmlu ZyBhIG1lbnUgb2YgbmFtZXMgb2YgZmlsZXMgeW91IGFjY2VzcyBvZnRlbiwgJiB5b3VyIC5lbWFj cyBmaWxlLA0KOzsgd2hlcmUgeW91J2xsIGF1dG9sb2FkIGZpbGVtZW51LW1vZGUgJiBtYXAgbG9h ZGluZyB5b3VyIG1lbnUgZmlsZSB0byBhIGtleS4NCg0KOzsgQnkgZGVmYXVsdCwgdGhlIG5hbWUg b2YgeW91ciBtZW51IGZpbGUgaXMgIn4vZmlsZW1lbnUiLiAgSSBzdWdnZXN0IHRoYXQgdG8NCjs7 IGdldCBzdGFydGVkLCB5b3UgY29weSB0aGlzIHRleHQgdG8gdGhhdCBmaWxlOg0KOzsgICB+Lw0K OzsgICBteS1ub3ZlbC50eHQgICAiTXkgSW52ZW50aW9uLnR4dCIgICAgbXktY2hlY2tsaXN0LmNo bA0KOzsgICBjOlxlbWFjc1xlbWFjcy0xOS4zNFxsaXNwXHNpbXBsZS5lbA0KOzsgRGVsZXRlIHRo ZSBsZWFkaW5nIHNlbWljb2xvbnMgYnkgcHV0dGluZyB0aGUgY3Vyc29yIGluIHRoZSB0b3AgbGVm dCBjb3JuZXINCjs7IG9mIHRoZSBmaWxlLCBwcmVzc2luZyBDLVNQQyB0byBzZXQgdGhlIG1hcmss IG1vdmluZyBpdCB0byBsaW5lIDMgY29sdW1uIDUNCjs7IG92ZXIgdGhlICJjIiBpbiAiYzoiLCAm IHByZXNzaW5nIEMteCByIGsgdG8gcnVuIChraWxsLXJlY3RhbmdsZSkuICBUaGVuDQo7OyBtb2Rp ZnkgdGhlIGZpbGUgbmFtZXMgdG8gbmFtZSBmaWxlcyB5b3UgcmVhbGx5IGhhdmUgb24geW91ciBz eXN0ZW0uICBZb3UNCjs7IG1pZ2h0IGFzIHdlbGwgbGVhdmUgdGhlIHF1b3RlcyBhcm91bmQgdGhl IG1pZGRsZS1jb2x1bW4gZmlsZSBuYW1lIGp1c3QgdG8NCjs7IHJlbWluZCB5b3Vyc2VsZiB0aGF0 IHRoYXQgZm9ybWF0IGlzIGF2YWlsYWJsZSAoeW91IG1heSBuZWVkIGl0IG9uDQo7OyBNaWNyb3Nv ZnQgc3lzdGVtcykuICBPbiBhIE1pY3Jvc29mdCBPUywgeW91IGNhbiB1c2UgZWl0aGVyIGEgdmly Z3VsZSBvciBhDQo7OyBiYXNoIGFzIGEgZGlyZWN0b3J5IGRlbGltaXRlcjsgdGhlIGJhc2ggbmVl ZCBub3QgYmUgZG91YmxlZCBvciBxdWFkcnVwbGVkDQo7OyAoYXMgaXQgaXMgdG8gY29wZSB3aXRo IG11bHRpcGxlIGxldmVscyBvZiBxdW90aW5nIGluIHNvbWUgY29udGV4dHMpLiAgT24gYQ0KOzsg VW5peCBzeXN0ZW0sIHVzZSBhIHZpcmd1bGUuICAifi8iIHdvcmtzIHdpdGggYWxsIHN5c3RlbXMu ICBOb3RlIHRoYXQNCjs7IGJlY2F1c2UgaXQncyBhbG9uZSBvbiBhIGxpbmUsIGl0IHNldHMgdGhl IGRlZmF1bHQgZGlyZWN0b3J5IGZvciBhbGwgZmlsZQ0KOzsgbmFtZXMgb24gYWxsIGZvbGxvd2lu ZyBsaW5lcyB1bnRpbCBhbm90aGVyIGFsb25lLW9uLWEtbGluZSBwYXRoIGVuZGluZyBpbg0KOzsg YSBkaXJlY3Rvcnkgc2VwYXJhdG9yIG9jY3VyczsgaG93ZXZlciwgZmlsZXMgdGhhdCBoYXZlIHRo ZWlyIG93biBhYnNvbHV0ZQ0KOzsgZGlyZWN0b3J5IHNwZWNpZmllcnMgYXJlIHVuYWZmZWN0ZWQu ICBUbyBlZGl0IHRoZSB0aGlyZCBsaW5lIG9mIHRoYXQgZmlsZQ0KOzsgdG8gcmVmbGVjdCB3aGVy ZSB5b3VyIEVMaXNwIGxpYnJhcnkgYWN0dWFsbHkgaXMsIHR5cGUgQy1oIHYgbG9hZC1wYXRoOyB0 aGUNCjs7IGNvcnJlY3QgdmFsdWUgaXMgaW4gdGhlcmUgc29tZXBsYWNlOyBjb3B5IGl0LiAgVGhh dCdsbCBiZSBlbm91Z2ggdG8gbGV0DQo7OyB5b3UgZXhwZXJpbWVudCB3aXRoIGZpbGVtZW51OyBs YXRlciB5b3UgY2FuIGVkaXQgfi9maWxlbWVudSB0byBhZGQgYWxsIHRoZQ0KOzsgZmlsZXMgeW91 IHZpc2l0IGZyZXF1ZW50bHkuICAoVGhlIHNpbXBsZS5lbCBsaWJyYXJ5IGZpbGUgZGVmaW5lcyB0 aGUgbW9zdA0KOzsgZnJlcXVlbnRseSB1c2VkIExpc3AgZnVuY3Rpb25zIHRoYXQgYXJlIHN0YW5k YXJkIGluIEdOVSBFbWFjcywgc3VjaCBhcw0KOzsgYG5ld2xpbmUtYW5kLWluZGVudCcuICBJZiB5 b3UncmUgYSBMaXNwIGhhY2tlciB5b3UnbGwgd2FudCB0byByZWFkIHRoZXNlDQo7OyBvY2Nhc2lv bmFsbHkganVzdCB0byB1bmRlcnN0YW5kIGhvdyBFbWFjcyB3b3Jrcy4gIFRoaXMgaXMgYWxzbyBh DQo7OyBjb252ZW5pZW50IHdheSBvZiBhY2Nlc3Npbmcgb3RoZXIgbGlicmFyeSBmaWxlcywgc2lu Y2Ugb25jZSB5b3UndmUgbG9hZGVkDQo7OyB0aGlzIG9uZSwgaXRzIGRpcmVjdG9yeSBiZWNvbWVz IHRoZSBkZWZhdWx0IGRpcmVjdG9yeSBmb3IgZmluZC1maWxlLCBhbmQNCjs7IHlvdSBjYW4gdXNl IGNvbXBsZXRpb24gdG8gbmFtZSBvdGhlciBmaWxlcy4gIChVc2luZyBkaXJlZCBvbiB0aGUgRUxp c3ANCjs7IGxpYnJhcnkgY2FuIGJlIGEgYmFkIGlkZWEgZXhjZXB0IG9uIGZhc3QgbWFjaGluZXMg YmVjYXVzZSB0aGUgbGlicmFyeSBpcw0KOzsgc28gYmlnOyBJJ3ZlIHNlZW4gYnVpbGRpbmcgdGhl IGRpcmVkIGJ1ZmZlciB0YWtlID4gMzAgcy4pICBTcGFyc2UgcGFja2FnZQ0KOzsgZG9jdW1lbnRh dGlvbiBvZnRlbiBtYWtlcyBpdCBuZWNlc3NhcnkgdG8gIlVzZSB0aGUgU291cmNlLCBMdWtlIiB0 byBmaWd1cmUNCjs7IG91dCBob3cgdG8gdXNlIEVtYWNzIGZlYXR1cmVzIGVmZmVjdGl2ZWx5LikN Cg0KOzsgTmV4dCwgcHV0IHRoZXNlIGxpbmVzIGluIHlvdXIgLmVtYWNzIChfZW1hY3Mgb24gTWlj cm9zb2Z0IHN5c3RlbXMpIGZpbGU6DQo7OyAgIChhdXRvbG9hZCAnZmlsZW1lbnUgImZpbGVtZW51 Ig0KOzsgICAgICJMb2FkIHRoZSBmaWxlIG1lbnUgbmFtZWQgYnkgdGhlIHZhcmlhYmxlIGZpbGVt ZW51LWZpbGUtbmFtZS4iDQo7OyAgICAgdCkNCjs7ICAgKGF1dG9sb2FkICdmaWxlbWVudS1tb2Rl ICJmaWxlbWVudSINCjs7ICAgICAiTWFqb3IgbW9kZSBmb3IgcGlja2luZyBhIGZpbGUgdG8gZWRp dCBmcm9tIGEgYnVmZmVyIG9mZmVyaW5nIGEgbWVudS4iDQo7OyAgICAgdCkNCjs7ICAgKGFkZC10 by1saXN0IGF1dG8tbW9kZS1hbGlzdCAnKCJbOi9cXF1maWxlbWVudVxcJyIgLiBmaWxlbWVudS1t b2RlKSkNCjs7ICAgKGdsb2JhbC1zZXQta2V5IChyZWFkLWtiZC1tYWNybyAiQy1jIGYiKSAnZmls ZW1lbnUpDQo7OyBZb3UgY2FuIG1vZGlmeSB0aGUgYXJndW1lbnQgdG8gKHJlYWQta2JkLW1hY3Jv KSB0byB3aGF0ZXZlciBpcyBjb252ZW5pZW50DQo7OyBmb3IgeW91Lg0KDQo7OyBOZXh0LCBtb3Zl IHRoZSBjdXJzb3IgdG8gdGhlIGZpcnN0IG9mIHRob3NlIChhdXRvbG9hZCkgbGluZXMsIHR5cGUg Qy1TUEMNCjs7IHRvIHNldCB0aGUgbWFyaywgbW92ZSBpdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRo ZSBsaW5lIGFmdGVyIHRoZQ0KOzsgYGdsb2JhbC1zZXQta2V5JywgJiB0eXBlIE0teCBldmFsLXJl Z2lvbi4gIFlvdSBzaG91bGQgdGhlbiBzZWUgIm5pbCIgaW4NCjs7IHRoZSBlY2hvIGFyZWE7IHRo YXQncyB0aGUgdmFsdWUgb2YgdGhlIGZpbmFsIGZvcm0gZXZhbHVhdGVkLiAgSWYgeW91IHNlZQ0K OzsgYW4gZXJyb3IgbWVzc2FnZSwgdGhlcmUncyBhIHR5cG8uICBZb3Ugd29uJ3QgbmVlZCB0byBk byB0aGlzIGBldmFsLXJlZ2lvbicNCjs7IGFnYWluOyBpbiB0aGUgZnV0dXJlLCB3aGVuIHlvdSBs b2FkIEVtYWNzLCB0aGF0IHJlZ2lvbiB3aWxsIGJlIGV2YWx1YXRlZA0KOzsgYWxvbmcgd2l0aCB0 aGUgcmVzdCBvZiB5b3VyIC5lbWFjcyBhdCBsb2FkIHRpbWUuICBUaGlzIGlzIGp1c3QgZm9yIGFk ZGluZw0KOzsgbGluZXMgdG8gLmVtYWNzIGR1cmluZyBhIHJ1bm5pbmcgc2Vzc2lvbi4NCg0KOzsg Tm93IHlvdSdyZSByZWFkeSB0byB0cnkgZmlsZW1lbnUuICBUeXBlIEMtYyBmIChvciB3aGF0ZXZl ciB5b3UgbW9kaWZpZWQNCjs7IHRoZSBgcmVhZC1rYmQtbWFjcm8nIGFyZyB0bykuICBZb3Ugc2hv dWxkIGZpbmQgeW91cnNlbGYgaW4gfi9maWxlbWVudSwNCjs7IHdoaWNoIGlzIHRoZSBidWZmZXIg aW50byB3aGljaCB5b3UgdHlwZWQgdGhvc2UgMyBzYW1wbGUgbGluZXM7IHRoZSBtb2RlDQo7OyBs aW5lIHNob3VsZCBzaG93ICJGaWxlbWVudSIgKCJUOkZpbGVtZW51IiBvbiBNaWNyb3NvZnQgc3lz dGVtcykgYXMgdGhlDQo7OyBtYWpvciBtb2RlLiAgSWYgYW55dGhpbmcgZWxzZSBoYXBwZW5zLCBy ZXZpZXcgdGhlIGluc3RydWN0aW9ucyB0byBiZSBzdXJlDQo7OyB5b3UgZm9sbG93ZWQgdGhlbSBj b3JyZWN0bHk7IGlmIGl0IHN0aWxsIGRvZXNuJ3Qgd29yaywgc2VuZCBtZSBoYXRlIG1haWwuDQoN Cjs7IE5vdyB5b3UncmUgcmVhZHkgdG8gc2VsZWN0IGZyb20gdGhlIG1lbnUuICBUcnkgaXQgZmly c3QganVzdCB1c2luZyB0aGUNCjs7IGtleWJvYXJkOiB1c2UgdGhlIHVzdWFsIG1vdGlvbiBrZXlz IHRvIHB1dCBwb2ludCBiZWZvcmUgb3IgaW5zaWRlIGFueSBvZg0KOzsgdGhvc2UgZmlsZSBuYW1l cywgYW5kIHByZXNzIFJFVC4gIFRoZSBlZmZlY3Qgd2lsbCBiZSB0byB2aXNpdCB0aGUgZmlsZS4N Cjs7IFR5cGUgQy14IGsgdG8ga2lsbCB0aGUgYnVmZmVyIHlvdSBqdXN0IHZpc2l0ZWQsICYgQy1j IGYgYWdhaW4gKG9yDQo7OyB3aGF0ZXZlcikgdG8gZ2V0IGJhY2sgdG8gdGhlIGZpbGVtZW51IGJ1 ZmZlcjsgdGhlbiB0eXBlIHYgaW5zdGVhZCBvZiBSRVQsDQo7OyAmIHRoZSBlZmZlY3Qgd2lsbCBi ZSB0byB2aXNpdCB0aGUgZmlsZSBpbiB2aWV3LW1vZGUuICBLaWxsIGl0IGFnYWluLiAgSWYNCjs7 IHlvdSdyZSBmYW1pbGlhciB3aXRoIGRpcmVkLCB5b3UgY2FuIHRyeSBwb3NpdGlvbmluZyBwb2lu dCBvbiB0aGUgZmlyc3QNCjs7IGxpbmUgKHRoZSAifi8iIGxpbmUpICYgcHJlc3NpbmcgUkVUOyB0 aGUgZWZmZWN0IHdpbGwgYmUgdG8gcnVuIGRpcmVkIG9uDQo7OyB5b3VyIGhvbWUgZGlyZWN0b3J5 ICYgcHV0IHlvdSBpbiB0aGUgZGlyZWQgYnVmZmVyLg0KDQo7OyBJZiB5b3UncmUgb24gYSBzeXN0 ZW0gdGhhdCBoYXMgYSBtb3VzZSwgbm93IHRyeSBpdC4gIFR5cGUgQy1jIGYgb3INCjs7IHdoYXRl dmVyIHRvIGdldCBiYWNrIHRvIHRoZSBmaWxlbWVudSBidWZmZXIsIG1vdmUgdGhlIG1vdXNlIHBv aW50ZXIgdG8NCjs7IHNvbWUgZmlsZSwgJiBwcmVzcyBtb3VzZS0xICh3aGljaCBpcyB1c3VhbGx5 IHRoZSBsZWZ0IGJ1dHRvbikuICBUaGUgZWZmZWN0DQo7OyB3aWxsIGJlIHRvIHZpc2l0IHRoZSBm aWxlIGZvciBlZGl0aW5nLiAgS2lsbCBpdCwgQy1jIGYgYWdhaW4sICYgcHJlc3MNCjs7IG1vdXNl LTIgKHdoaWNoIGlzIHVzdWFsbHkgdGhlIG1pZGRsZSBidXR0b24sIG9yIGEgY2xpY2sgb24gdGhl IG1vdXNlIHdoZWVsDQo7OyBpZiB5b3UgaGF2ZSBhbiBJbnRlbGxpTW91c2UsIG9yIHRoZSBsZWZ0 ICYgcmlnaHQgYnV0dG9ucyBzaW11bHRhbmVvdXNseSBpZg0KOzsgeW91IG9ubHkgaGF2ZSBhIDIt YnV0dG9uIG1vdXNlKS4gIFlvdSdsbCB2aXNpdCB0aGUgZmlsZSBpbiB2aWV3LW1vZGUuDQoNCjs7 IFRoYXQncyBpdDsgZmlsZW1lbnUgaXMgaW5zdGFsbGVkLiAgSGFjayB+L2ZpbGVtZW51IHRvIGFk ZCB0aGUgbmFtZXMgb2YNCjs7IGZpbGVzIHlvdSB2aXNpdCBmcmVxdWVudGx5LiAgV2F0Y2ggb3V0 IGZvciBhIGdvdGNoYSB0aGVyZTogd2hlbiB5b3UncmUNCjs7IHZpc2l0aW5nIHRoYXQgZmlsZSwg eW91J3JlIG5vdCBpbiB0ZXh0LW1vZGUsIHlvdSdyZSBpbiBmaWxlbWVudS1tb2RlLCBzbw0KOzsg UkVUICYgdiBkb24ndCBpbnNlcnQgY2hhcmFjdGVycywgdGhleSB2aXNpdCBmaWxlcy4gIEdldCBh cm91bmQgdGhpcyBieQ0KOzsgcHJlY2VkaW5nIHRoZW0gd2l0aCBDLXEuICBJZiB5b3UncmUgdHlw aW5nIGluIGEgbGFyZ2UgIyBvZiBmaWxlIG5hbWVzIGF0DQo7OyBvbmNlIHRoaXMgY291bGQgYmUg YSBudWlzYW5jZTsgaW4gdGhhdCBjYXNlLCB5b3UgY291bGQgdHlwZSB0aGVtIGludG8gdGhlDQo7 OyAqc2NyYXRjaCogYnVmZmVyICYgY3V0LSYtcGFzdGUgdGhlbSB0byB+L2ZpbGVtZW51Lg0KDQo7 OyBTb21lIGN1c3RvbWl6YXRpb25zIGFyZSBwb3NzaWJsZTsgbW9zdCBwZW9wbGUgd29uJ3QgbmVl ZCB0aGVzZS4NCg0KOzsgSWYgeW91IGRvbid0IGxpa2UgdGhlIG5hbWUgIn4vZmlsZW1lbnUiLCBw dXQgYSBsaW5lIGxpa2UNCjs7ICAgKHNldHEgZmlsZW1lbnUtZmlsZS1uYW1lICJjOi9NeSBFbWFj cyBTdHVmZi9NeSBGaWxlbWVudSBGaWxlLmZtbiIpDQo7OyBvciB3aGF0ZXZlciBwbGVhc2VzIHlv dSBpbiB5b3VyIC5lbWFjcyBvciBfZW1hY3MgZmlsZS4gIE5vdGUgdGhhdCBpZiB5b3UNCjs7IHVz ZWQgYmFzaGVzIGluc3RlYWQgb2YgdmlyZ3VsZXMgYXMgeW91ciBkaXJlY3Rvcnkgc2VwYXJhdG9y cyB0aGVyZSAodGhhdCdzDQo7OyBMaXNwIGNvZGUsIG5vdCBmaWxlbWVudSBidWZmZXIgdGV4dCkg eW91J2QgbmVlZCB0byBkb3VibGUgdGhlbToNCjs7ICAgKHNldHEgZmlsZW1lbnUtZmlsZS1uYW1l ICJjOlxcTXkgRW1hY3MgU3R1ZmZcXE15IEZpbGVtZW51IEZpbGUuZm1tIikNCjs7IFZpcmd1bGVz IHdvcmsgd2l0aCBFbWFjcyBvbiBNaWNyb3NvZnQgc3lzdGVtcy4NCg0KOzsgSWYgeW91IGRvbid0 IGxpa2UgdGhlIGtleW1hcHBpbmdzIG9mIGZpbGVtZW51LW1vZGUsIHB1dCBjb2RlIGxpa2UNCjs7 ICAgKGRlZnVuICdteS1maWxlbWVudS1tb2RlLWhvb2sgKCkNCjs7ICAgICAobG9jYWwtc2V0LWtl eSAocmVhZC1rYmQtbWFjcm8gIkgtTS1mIikgJ2ZpbGVtZW51LWZpbmQtZmlsZS1hdC1wb2ludCkN Cjs7ICAgICAobG9jYWwtc2V0LWtleSBbZG93bi1tb3VzZS0zXSAnbW91c2Utc2V0LXBvaW50KQ0K OzsgICAgIChsb2NhbC1zZXQta2V5IFttb3VzZS0zXSAnZmlsZW1lbnUtdmlldy1maWxlLWF0LXBv aW50KSkNCjs7ICAgKGFkZC1ob29rICdmaWxlbWVudS1tb2RlLWhvb2sgJ215LWZpbGVtZW51LW1v ZGUtaG9vaykNCjs7IGluIHlvdXIgLmVtYWNzIGZpbGUuDQoNCjs7IEZpbmFsbHksIGlmIHlvdSB3 YW50IG11bHRpcGxlIGZpbGVtZW51IGZpbGVzLCB0YWtlIGEgZGVlcCBicmVhdGgsIHRoZW4NCjs7 IGNvcHkgYWxsIG9mIHRoaXMgY29kZSBsaXRlcmFsbHkgdG8gdGhlIHRvcCBvZiB5b3VyIC5lbWFj cyBmaWxlOg0KOzsNCjs7ICAgKHJlcXVpcmUgJ2NsKQ0KOzsNCjs7ICAgKGRlZm1hY3JvIGludGVy YWN0aXZlLWxhbWJkYSAoYXJnc3RyaW5nICZyZXN0IGxpc3QpDQo7OyAgICAgKGlmIChlcXVhbCBh cmdzdHJpbmcgIiIpDQo7OyAgICAgICAgIGAobGFtYmRhICgpIChpbnRlcmFjdGl2ZSkgLEBsaXN0 KQ0KOzsgICAgICAgYChsYW1iZGEgLChjYXIgbGlzdCkgKGludGVyYWN0aXZlICxhcmdzdHJpbmcp ICxAKGNkciBsaXN0KSkpKQ0KOzsNCjs7ICAgKGRlZm1hY3JvIGdsb2JhbC1zZXQta2V5LXRvLWlu dGVyYWN0aXZlLWxhbWJkYSAoa2V5IGFyZ3N0cmluZyAmcmVzdCBsaXN0KQ0KOzsgICAgIGAoZ2xv YmFsLXNldC1rZXkgLGtleSAoaW50ZXJhY3RpdmUtbGFtYmRhICxhcmdzdHJpbmcgLEBsaXN0KSkp DQo7Ow0KOzsgICAoZnNldCAnSyAnZ2xvYmFsLXNldC1rZXktdG8taW50ZXJhY3RpdmUtbGFtYmRh KQ0KOzsNCjs7ICAgKGRlZnVuIG11bHRpcGxlLWFjdGlvbnMtZm9yLW11bHRpcGxlLXRhcHMtb24g KGtleS1zZXF1ZW5jZSBhY3Rpb25zKQ0KOzsgICAgIChpZiAoc3RyaW5ncCBrZXktc2VxdWVuY2Up IChjYWxsZiByZWFkLWtiZC1tYWNybyBrZXktc2VxdWVuY2UpKQ0KOzsgICAgIChsZXQgKGtleXMp DQo7OyAgICAgICAod2hpbGUNCjs7ICAgICAgICAgICAocHJvZ24NCjs7ICAgICAgICAgICAgIChl dmFsIChjYXIgYWN0aW9ucykpDQo7OyAgICAgICAgICAgICAoY2FsbGYgY2RyIGFjdGlvbnMpDQo7 OyAgICAgICAgICAgICAoc2V0cSBrZXlzIChyZWFkLWtleS1zZXF1ZW5jZSBuaWwpKQ0KOzsgICAg ICAgICAgICAgKGFuZCAoZXF1YWwga2V5cyBrZXktc2VxdWVuY2UpDQo7OyAgICAgICAgICAgICAg ICAgIGFjdGlvbnMpKSkNCjs7ICAgICAgIChzZXRxIHVucmVhZC1jb21tYW5kLWV2ZW50cyAobGlz dGlmeS1rZXktc2VxdWVuY2Uga2V5cykpKSkNCjs7DQo7OyAgIChwdXQgJ211bHRpcGxlLWFjdGlv bnMtZm9yLW11bHRpcGxlLXRhcHMtb24NCjs7ICAgICAgICAnbGlzcC1pbmRlbnQtZnVuY3Rpb24N Cjs7ICAgICAgICAnZGVmdW4pDQo7Ow0KOzsgVGhlbiBkbyBhbiBgZXZhbC1yZWdpb24nIGFzIGJl Zm9yZSBvbiB0aGUgY29kZSB5b3UganVzdCBpbnNlcnRlZC4NCjs7DQo7OyBOZXh0IGNob29zZSBh IHdheSBvZiByZWNvZ25pemluZyBmaWxlcyB0aGF0IGFyZSBmaWxlbWVudSBmaWxlcy4gIE9uDQo7 OyBNaWNyb3NvZnQgc3lzdGVtcywgdGhpcydsbCBiZSB0aGUgImV4dGVuc2lvbiIgb2YgdGhlIGZp bGUsIHRoZSBjaGFycyB0aGF0DQo7OyBmb2xsb3cgaXRzIGZpbmFsIGRvdDsgSSdsbCBhc3N1bWUg dGhhdCdzIHlvdXIgc2l0dWF0aW9uLCBzaW5jZSBpZiB5b3UncmUNCjs7IG9uIGEgVW5peCBzeXN0 ZW0geW91IG11c3QgYmUgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgZm9yIHlvdXJzZWxmIGhv dw0KOzsgdG8gbW9kaWZ5IHRoZXNlIGluc3RydWN0aW9ucyBhcHByb3ByaWF0ZWx5LiAgTGV0J3Mg c2F5IHlvdSBjaG9zZSAiLmZtbiINCjs7IGFzIHRoZSBleHRlbnNpb24uICBBZGQgdGhpcyBsaW5l IHRvIHlvdXIgLmVtYWNzIGFmdGVyIHRoZSBvdGhlcg0KOzsgZmlsZW1lbnUtcmVsYXRlZCBhZGQt dG8tbGlzdCBsaW5lIHRoYXQgeW91IGFscmVhZHkgcHV0IGluOg0KOzsgICAoYWRkLXRvLWxpc3Qg J2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5mbW5cXCciIC4gZmlsZW1lbnUtbW9kZSkpDQo7OyBUaGVu IHJlcGxhY2UgdGhlIGdsb2JhbC1zZXQta2V5IGxpbmUgeW91IGFscmVhZHkgcHV0IGluIHdpdGgg bGluZXMNCjs7IGVxdWl2YWxlbnQgdG8gdGhlc2UgKG1vZGlmeSB0aGUgZmluZC1maWxlIGFyZ3Vt ZW50cyB0byBuYW1lIHlvdXIgZmlsZXMpOg0KOzsgICAoSyAiXEMtY2YiICIiIChtdWx0aXBsZS1h Y3Rpb25zLWZvci1tdWx0aXBsZS10YXBzLW9uICJmIg0KOzsgICAgICAgICAgICAgICAgICAgJygo ZmlsZW1lbnUpDQo7OyAgICAgICAgICAgICAgICAgICAgIChmaW5kLWZpbGUgIn4vV29ya01lbnUu Zm1tIikNCjs7ICAgICAgICAgICAgICAgICAgICAgKGZpbmQtZmlsZSAifi9QbGF5TWVudS5mbW0i KQ0KOzsgICAgICAgICAgICAgICAgICAgICAoZmluZC1maWxlICJ+L0hvbWVNZW51LmZtbSIpKSkp DQo7OyBEbyBhbiBgZXZhbC1yZWdpb24nIG9uIHRoZSBgYWRkLXRvLWxpc3QnIGxpbmUgJiB0aGUg YEsnIGxpbmVzLg0KOzsgVGhlIGVmZmVjdCB3aWxsIGJlIHRoYXQgcHJlc3NpbmcgQy1jIGYgd2ls bCBpbnZva2UgKGZpbGVtZW51KSBhcyBiZWZvcmUsDQo7OyBidXQgZWFjaCBzdWJzZXF1ZW50IHBy ZXNzIG9mIGYgd2lsbCBtb3ZlIHRvIG9uZSBvZiB0aGUgZmlsZXMgaW4NCjs7ICJ+L3tXb3JrLFBs YXksSG9tZX1NZW51LmZtbSIuICBQcmVzc2luZyBhbnkgb3RoZXIga2V5IHRoYW4gZiByZXR1cm5z IGYgdG8NCjs7IGl0cyBub3JtYWwgbWVhbmluZzsgZiBhbHNvIHJlZ2FpbnMgaXRzIG5vcm1hbCBt ZWFuaW5nIGFmdGVyIHRoZSBmaW5hbA0KOzsgZmlsZSBpbiB0aGUgbGlzdCwgIn4vSG9tZU1lbnUu Zm1tIiwgaGFzIGJlZW4gdmlzaXRlZC4NCjs7IEFzIFJvc3MgUGVyb3Qgd291bGQgc2F5LCAiaXQn cyB0aGF0IHNpbXBsZSIuDQoNCjs7OyBDb2RlOg0KDQo7OyBJIGtub3cgYWJvdXQgZmZhcC5lbCwg YnV0IGl0IGhhcyBhIGRpZmZlcmVudCBmZWF0dXJlIHNldC4NCg0KKGRlZnZhciBmaWxlbWVudS1m aWxlLW5hbWUgIn4vZmlsZW1lbnUiDQogICIqUGF0aCB0byBkZWZhdWx0IGZpbGUgbWVudSB1c2Vk IGJ5IHRoZSBmaWxlbWVudSBjb21tYW5kLiIpDQoNCihkZWZ2YXIgZmlsZW1lbnUtbW9kZS1ob29r IG5pbA0KICAiTm9ybWFsIGhvb2sgcnVuIGFmdGVyIGxvYWRpbmcgYSBidWZmZXIgaW4gZmlsZW1l bnUgbW9kZS4iKQ0KDQooZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2NsKSkNCg0KKGRlZnZh ciBmaWxlbWVudS1tYXAgbmlsDQogICJLZXltYXAgZm9yIGZpbGVtZW51IG1vZGUuIikNCg0KOzs7 IyMjYXV0b2xvYWQNCihkZWZ1biBmaWxlbWVudS1tb2RlICgpDQogICJNYWpvciBtb2RlIGZvciBw aWNraW5nIGEgZmlsZSB0byBlZGl0IGZyb20gYSBidWZmZXIgb2ZmZXJpbmcgYSBtZW51Lg0KVGhl IGludGVuZGVkIHVzZSBpcyBvbiBhIGZpbGUgeW91IHdpbGwgY3JlYXRlIGxpc3RpbmcgdGhlIGZp bGVzIHlvdSB2aXNpdA0Kc28gZnJlcXVlbnRseSB5b3Ugd2FudCB0aGVtIG9uIGEgbWVudS4gIFRo ZSBjb21tYW5kICdmaWxlbWVudSB2aXNpdHMgdGhhdA0KZmlsZSBpbiBmaWxlbWVudS1tb2RlLiAg QW4gZXhhbXBsZSBvZiB0aGUgZm9ybWF0Og0KICAgL2V0Yy9wYXNzd2QNCiAgIC9ob21lL215c2Vs Zi8NCiAgICAgIGRpYXJ5ICBcIkZpbGUgd2l0aCBzcGFjZXMgaW4gaXRzIG5hbWUuRG9jXCIgIGM6 XFxET1NcXE5pYmJsZXMuQmFzDQogICAgICBmb28uc3BvbyAgd29vLmhvbyAgL3Vzci9sb2NhbC9i aW4vYmFsbHlob28udSAgb29wcy5vb2YNCiAgIC9ldGMvaG9zdHNcXDxmaWxlbWVudS1tYXA+DQpB bnkgIyBvZiBmaWxlIG5hbWVzIG1heSBhcHBlYXIgb24gYSBsaW5lLiAgSWYgdGhlIG5hbWUgY29u dGFpbnMgbm8NCmRpcmVjdG9yeSBzZXBhcmF0b3IgY2hhcmFjdGVycyAodmlyZ3VsZXMgb3IgYmFj a3NsYXNoZXMpLCBhbnkgcHJlY2VkaW5nDQpsaW5lIHRoYXQgZW5kZWQgd2l0aCBzdWNoIGEgY2hh cmFjdGVyIGlzIHVzZWQgYXMgdGhlIGRpcmVjdG9yeS4NCkluZGVudGF0aW9uIGlzIG9wdGlvbmFs ICYgaWdub3JlZC4gIFlvdSBwaWNrIGEgZmlsZSB0byB2aXNpdCBieQ0KcG9zaXRpb25pbmcgcG9p bnQgb24gaXRzIG5hbWUgJiB0eXBpbmcgXFxbZmlsZW1lbnUtZmluZC1maWxlLWF0LXBvaW50XSwN Cm9yIGJ5IG1vdXNlLWNsaWNraW5nIGl0LiAgVHVybmluZyBvbiBmaWxlbWVudSBtb2RlIGNhbGxz IHRoZSB2YWx1ZSBvZiB0aGUNCnZhcmlhYmxlIGBmaWxlbWVudS1tb2RlLWhvb2snLCBpZiB0aGF0 IHZhbHVlIGlzIG5vbi1uaWwuDQoNClxce2ZpbGVtZW51LW1hcH0iDQo7O05vdGUgdGhhdCB0aGUg YWJvdmUgZG9jdW1lbnRhdGlvbiBpcyBhbiBFTGlzcCBzdHJpbmc7IHRoZSBiYXNoZXMgYXJlDQo7 O2RvdWJsZWQgdGhlcmUgb25seSBiZWNhdXNlIG9mIHRoYXQ7IHVzZSBzaW5nbGUgYmFzaGVzIGlu IH4vZmlsZW1lbnUuDQogIChpbnRlcmFjdGl2ZSkNCiAgKGtpbGwtYWxsLWxvY2FsLXZhcmlhYmxl cykNCiAgKHNldHEgbWFqb3ItbW9kZSAnZmlsZW1lbnUtbW9kZQ0KCW1vZGUtbmFtZSAiRmlsZW1l bnUiKQ0KICAodXNlLWxvY2FsLW1hcCBmaWxlbWVudS1tYXApDQogIChydW4taG9va3MgJ2ZpbGVt ZW51LW1vZGUtaG9vaykpDQoNCjs7OyMjI2F1dG9sb2FkDQooZGVmdW4gZmlsZW1lbnUgKCkNCiAg IkxvYWQgdGhlIGZpbGUgbmFtZWQgYnkgdGhlIHZhcmlhYmxlIGZpbGVtZW51LWZpbGUtbmFtZS4i DQogIChpbnRlcmFjdGl2ZSkNCiAgKGZpbmQtZmlsZSBmaWxlbWVudS1maWxlLW5hbWUpDQogIChm aWxlbWVudS1tb2RlKSkNCg0KKGlmIGZpbGVtZW51LW1hcA0KICAgICgpDQogIChzZXRxIGZpbGVt ZW51LW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkNCiAgOzsgUmVtZW1iZXIgdGhhdCBNLW8gd2hh dGV2ZXIgY2FuIHN0aWxsIGJlIHVzZWQgZm9yIG9ydGhvZG94IGZ1bmN0aW9ucywNCiAgOzsgaWYg eW91J3JlIHVzaW5nIG15IG9ydGhvZG94LmVsIHBhY2thZ2UuDQogIChkZWZpbmUta2V5IGZpbGVt ZW51LW1hcCAiXEMtbSIgICAgICAgICAnZmlsZW1lbnUtZmluZC1maWxlLWF0LXBvaW50KQ0KICAo ZGVmaW5lLWtleSBmaWxlbWVudS1tYXAgW21vdXNlLTFdICAgICAgJ2ZpbGVtZW51LWZpbmQtZmls ZS1hdC1wb2ludCkNCiAgOzsgVGhhdCBhbG9uZSBpc24ndCBnb29kIGVub3VnaCBiZWNhdXNlIHRo ZSBnbG9iYWwgW2Rvd24tbW91c2UtMV0gbWFwcGluZw0KICA7OyBjYW4gZWF0IHRoZSBbbW91c2Ut MV0gZXZlbnQsIHNvIGl0IG11c3QgYmUgbW9kYWxseSBvdmVycmlkZGVuOg0KICAoZGVmaW5lLWtl eSBmaWxlbWVudS1tYXAgW2Rvd24tbW91c2UtMV0gJ21vdXNlLXNldC1wb2ludCkNCiAgOzsgSSBm aW5kIHRoYXQgSSdtIGFjY3VzdG9tZWQgdG8gdXNpbmcgW21vdXNlLTJdIGFzIGluICpBcHJvcG9z KiAmIGRpcmVkLA0KICA7OyBidXQgSSdkIGFsc28gbGlrZSB0aGUgb3B0aW9uIG9mIHZpZXctbW9k ZSwgc286DQogIChkZWZpbmUta2V5IGZpbGVtZW51LW1hcCAidiIgICAgICAgICAgICAnZmlsZW1l bnUtdmlldy1maWxlLWF0LXBvaW50KQ0KICA7OyBVc2UgQy1xIHYgdG8gZW50ZXIgYSBsaXRlcmFs ICJ2Ig0KICAoZGVmaW5lLWtleSBmaWxlbWVudS1tYXAgW2Rvd24tbW91c2UtMl0gJ21vdXNlLXNl dC1wb2ludCkNCiAgKGRlZmluZS1rZXkgZmlsZW1lbnUtbWFwIFttb3VzZS0yXSAgICAgICdmaWxl bWVudS12aWV3LWZpbGUtYXQtcG9pbnQpDQogICkNCg0KKGRlZnVuIGZpbGVtZW51LWZpbmQtZmls ZS1hdC1wb2ludCAoKQ0KICAoaW50ZXJhY3RpdmUpDQogIChmaWxlbWVudS12aXNpdC1maWxlLWF0 LXBvaW50LXVzaW5nICdmaW5kLWZpbGUpKQ0KDQooZGVmdW4gZmlsZW1lbnUtdmlldy1maWxlLWF0 LXBvaW50ICgpDQogIChpbnRlcmFjdGl2ZSkNCiAgKGZpbGVtZW51LXZpc2l0LWZpbGUtYXQtcG9p bnQtdXNpbmcgJ3ZpZXctZmlsZSkpDQoNCihkZWZ1biBmaWxlbWVudS12aXNpdC1maWxlLWF0LXBv aW50LXVzaW5nIChmdW5jdGlvbikNCiAgKG9yIChzeW1ib2xwIGZ1bmN0aW9uKSAoZXJyb3IgIklu dGVybmFsIGZhaWx1cmUgMzMyMiIpKQ0KICAoaWYgKGFuZCAoYm9scCkgKGVvbHApKSAoZXJyb3Ig IkVtcHR5IGxpbmUiKSkNCiAgKGxldCAocG9pbnQtYm9sIHBvaW50LXN0YXJ0IHBvaW50LWVuZCBm aWxlKQ0KICAgIChzYXZlLWV4Y3Vyc2lvbg0KICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQ0KICAg ICAgKGlmIChsb29raW5nLWF0ICJbIFx0XSskIikgKGVycm9yICJMaW5lIGlzIGFsbCB3aGl0ZXNw YWNlIikpDQogICAgICAoc2V0cSBwb2ludC1ib2wgKHBvaW50KSkpDQogICAgKHNhdmUtZXhjdXJz aW9uDQogICAgICA7OyBOb3cgd2UgbXVzdCBnZXQgaW5zaWRlIGFueSBxdW90ZXMuICBCZWNhdXNl IHRoZSBxdW90ZSBzZWFyY2ggc3RhcnRzDQogICAgICA7OyB3aXRoIGEgc2VhcmNoLWJhY2t3YXJk LCBpdCdzIE9LIHRvIGJlIG9uIHRoZSB0cmFpbGluZyBxdW90ZSBvZg0KICAgICAgOzsgImZpbGUi LCBidXQgbm90IG9uIHRoZSBsZWFkaW5nIG9uZTsgc28gaWYgd2UncmUgb24gYSBxdW90ZSBmb2xs b3dlZA0KICAgICAgOzsgYnkgbm9ud2hpdGVzcGFjZSB3ZSBtdXN0IG1vdmUgZm9yd2FyZC4gIEFs c28sIHdlIGNvdWxkIGJlIGludm9rZWQNCiAgICAgIDs7IGFmdGVyIHRoZSBsYXN0IHF1b3RlZCBz dHJpbmcgb24gdGhlIGxpbmU7IGluIHRoYXQgY2FzZSB3ZSBtdXN0IG1vdmUNCiAgICAgIDs7IGJh Y2t3YXJkIHRvIHRoZSBjbG9zaW5nIHF1b3RlLCBvciB0aGUgc2VhcmNoLWJhY2t3YXJkIGludGVu ZGVkDQogICAgICA7OyB0byBmaW5kIHRoZSBvcGVuaW5nIHF1b3RlIHdpbGwgZmluZCB0aGUgY2xv c2luZyBvbmUgaW5zdGVhZC4NCiAgICAgICh3aGVuICg8IChjdXJyZW50LWNvbHVtbikgKGN1cnJl bnQtaW5kZW50YXRpb24pKQ0KICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikpDQogICAgICAo aWYgKGxvb2tpbmctYXQgIlwiW14gXHRcbl0iKQ0KICAgICAgICAgIChmb3J3YXJkLWNoYXIpDQog ICAgICAgICh3aGlsZSAobG9va2luZy1hdCAiWyBcdFxdKiQiKSAoYmFja3dhcmQtY2hhcikpKQ0K ICAgICAgOzsgQnVnbGV0dGlubyBub3Qgd29ydGggZml4aW5nOiBpbiBhIGxpbmUgbGlrZQ0KICAg ICAgOzsgICAiZmlsZTEiICAiZmlsZTIiICAiZmlsZTMiDQogICAgICA7OyB0aGlzIHdvcmtzIGlm IGRvdCBpcyBiZWZvcmUgb3IgYWZ0ZXIgdGhlIG5vbndoaXRlc3BhY2Ugb24gdGhlIGxpbmUsDQog ICAgICA7OyBidXQgaWYgaXQncyBpbnZva2VkICpiZXR3ZWVuKiBmaWxlcywgaXQnbGwgaW50ZXJw cmV0IHRoZSBzdXJyb3VuZGluZw0KICAgICAgOzsgcXVvdGVzIGFzIHF1b3RpbmcgYSBmaWxlIHdo b3NlIG5hbWUgaXMgd2hpdGVzcGFjZS4gIEl0IGNvdWxkIGF2b2lkDQogICAgICA7OyB0aGF0IGJ5 IGNvdW50aW5nIHF1b3RlcyAmIHJlYWxpemluZyBhbiBldmVuICMgcHJlY2VkZWQgZG90LCBidXQg aGV5Lg0KICAgICAgKGlmIChzZWFyY2gtYmFja3dhcmQgIlwiIiBwb2ludC1ib2wgdCkNCiAgICAg ICAgICAocHJvZ24NCiAgICAgICAgICAgIDs7IFRoZXJlIHdhcyBvbmUgcXVvdGUsIHNvIHJlcXVp cmUgdGhlIG90aGVyDQogICAgICAgICAgICAoZm9yd2FyZC1jaGFyKQ0KICAgICAgICAgICAgKHNl dHEgcG9pbnQtc3RhcnQgKHBvaW50KSkNCiAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiXCIi KQ0KICAgICAgICAgICAgKGJhY2t3YXJkLWNoYXIpDQogICAgICAgICAgICAoc2V0cSBwb2ludC1l bmQgKHBvaW50KSkpDQogICAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIl5cXHxbIFx0XSIpDQog ICAgICAgIChpZiAobG9va2luZy1hdCAiWyBcdF0iKQ0KICAgICAgICAgICAgKGZvcndhcmQtY2hh cikpDQogICAgICAgIChzZXRxIHBvaW50LXN0YXJ0IChwb2ludCkpDQogICAgICAgIChyZS1zZWFy Y2gtZm9yd2FyZCAiXFwoWyBcdF1cXClcXHwkIikNCiAgICAgICAgKGlmIChtYXRjaC1iZWdpbm5p bmcgMSkNCiAgICAgICAgICAgIChiYWNrd2FyZC1jaGFyKSkNCiAgICAgICAgKHNldHEgcG9pbnQt ZW5kIChwb2ludCkpKQ0KICAgICAgKHNldHEgZmlsZSAoYnVmZmVyLXN1YnN0cmluZyBwb2ludC1z dGFydCBwb2ludC1lbmQpKQ0KICAgICAgKGlmICg9IChsZW5ndGggZmlsZSkgMCkgKGVycm9yICJO byBmaWxlIG5hbWUgc3BlY2lmaWVkIikpDQogICAgICA7OyBJZiB0aGlzIGZpbGUgbmFtZSBpbmNs dWRlZCBubyBkaXJlY3RvcnksIHNlYXJjaCBiYWNrd2FyZCBpbiB0aGUNCiAgICAgIDs7IG1lbnUg YnVmZmVyIGZvciBhIGxpbmUgZGVmaW5pbmcgdGhlIGRpcmVjdG9yeSAmIHByZXBlbmQgaXQuDQog ICAgICAoaWYgKHN0cmluZy1tYXRjaCAiWy9cXF0iIGZpbGUpDQogICAgICAgICAgKCkNCiAgICAg ICAgKHdoZW4gKHJlLXNlYXJjaC1iYWNrd2FyZCAiXFwoWy9cXF1cXClcXHMtKiQiIG5pbCB0KQ0K ICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKQ0KICAgICAgICAgIChzZXRxIHBvaW50LWJv bCAocG9pbnQpKQ0KICAgICAgICAgIChnb3RvLWNoYXIgKDErIChtYXRjaC1iZWdpbm5pbmcgMSkp KQ0KICAgICAgICAgIChzZXRxIGZpbGUgKGNvbmNhdCAoYnVmZmVyLXN1YnN0cmluZyBwb2ludC1i b2wgKHBvaW50KSkgZmlsZSkpKSkpDQogICAgKGlmIChzdHJpbmctbWF0Y2ggIlsqP10iIGZpbGUp DQogICAgICAgIChwcm9nbg0KICAgICAgICAgIChtZXNzYWdlICIoZGlyZWQgJVMpIiBmaWxlKQ0K ICAgICAgICAgIChkaXJlZCBmaWxlKSkNCiAgICAgIChtZXNzYWdlICIoJVMgJVMpIiBmdW5jdGlv biBmaWxlKQ0KICAgICAgKGxldCAoKGppZ2dsZS1lbmFibGVkIG5pbCkpO3NlZSBteSBqaWdnbGUu ZWwNCiAgICAgICAgKGJ1cnktYnVmZmVyKSkNCiAgICAgIChmdW5jYWxsIGZ1bmN0aW9uIGZpbGUp KSkpDQoNCihwcm92aWRlICdmaWxlbWVudSkNCg0KOzs7IGZpbGVtZW51LmVsIGVuZHMgaGVyZQ== --++----------20090916110457-214281563----------++--