From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: rsharman@pobox.com Newsgroups: gmane.emacs.devel Subject: Re: highlight-changes-mode Date: Mon, 11 Dec 2006 22:16:43 -0500 Message-ID: <17790.7963.202286.387900@cube.homenetwork> References: <17721.60660.980363.609046@kahikatea.snap.net.nz> <17725.23383.490888.442550@cube.homenetwork> <17770.17915.319182.723314@cube.homenetwork> <17770.35080.725821.391914@kahikatea.snap.net.nz> <17782.25188.121126.54191@cube.homenetwork> <17783.21694.919909.627629@cube.homenetwork> <17787.4401.435315.516412@cube.homenetwork> NNTP-Posting-Host: dough.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="QzTXHeOXML" Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1165893659 27708 80.91.229.10 (12 Dec 2006 03:20:59 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 12 Dec 2006 03:20:59 +0000 (UTC) Cc: nickrob@snap.net.nz, emacs-devel@gnu.org, rsharman@pobox.com Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Dec 12 04:20:58 2006 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by dough.gmane.org with esmtp (Exim 4.50) id 1GtyBq-0001If-6R for ged-emacs-devel@m.gmane.org; Tue, 12 Dec 2006 04:20:57 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GtyBi-000871-KV for ged-emacs-devel@m.gmane.org; Mon, 11 Dec 2006 22:20:14 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GtyBU-00086t-1z for emacs-devel@gnu.org; Mon, 11 Dec 2006 22:20:00 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GtyBS-00086K-CP for emacs-devel@gnu.org; Mon, 11 Dec 2006 22:19:59 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GtyBS-00086H-9l for emacs-devel@gnu.org; Mon, 11 Dec 2006 22:19:58 -0500 Original-Received: from [209.217.78.152] (helo=mx1-1.spamtrap.magma.ca) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA:32) (Exim 4.52) id 1GtyBK-0007u5-7a; Mon, 11 Dec 2006 22:19:52 -0500 Original-Received: from mail2.magma.ca (mail2.internal.magma.ca [10.0.10.12]) by mx1-1.spamtrap.magma.ca (8.13.1/8.13.1) with ESMTP id kBC3Jet3031268; Mon, 11 Dec 2006 22:19:40 -0500 Original-Received: from cube.homenetwork (ottawa-hs-209-217-110-164.d-ip.magma.ca [209.217.110.164]) by mail2.magma.ca (Magma's Mail Server) with ESMTP id kBC3JbTk031903; Mon, 11 Dec 2006 22:19:38 -0500 Original-Received: by cube.homenetwork (Postfix, from userid 1000) id 9C30793CC4; Mon, 11 Dec 2006 22:16:43 -0500 (EST) Original-To: rms@gnu.org In-Reply-To: X-Mailer: VM 7.19 under Emacs 21.4.1 X-magma-MailScanner-Information: Magma Mailscanner Service X-magma-MailScanner: Clean X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:63602 Archived-At: --QzTXHeOXML Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Here are the changes to hilit-chg.el --QzTXHeOXML Content-Type: application/octet-stream Content-Description: lisp/hilit-chg.el.cdif Content-Disposition: attachment; filename="hilit-chg.el.cdif" Content-Transfer-Encoding: base64 KioqIGhpbGl0LWNoZy5lbC5vcmlnCVRodSBGZWIgIDkgMTY6MDA6NTQgMjAwNgotLS0gaGlsaXQt Y2hnLmVsCU1vbiBEZWMgMTEgMjE6MTM6MTcgMjAwNgoqKioqKioqKioqKioqKioKKioqIDI2LDg1 ICoqKioKICA7OzsgQ29tbWVudGFyeToKICAKICA7OyBBIG1pbm9yIG1vZGU6ICJIaWdobGlnaHQg Q2hhbmdlcyBtb2RlIi4KLSA7OwogIAohIDs7IEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUgaGFzIDIg c3VibW9kZXM6IGFjdGl2ZSBhbmQgcGFzc2l2ZS4KISA7OyBXaGVuIGFjdGl2ZSwgY2hhbmdlcyB0 byB0aGUgYnVmZmVyIGFyZSBkaXNwbGF5ZWQgaW4gYSBkaWZmZXJlbnQgZmFjZS4KISA7OyBXaGVu IHBhc3NpdmUsIGFueSBleGlzdGluZyBkaXNwbGF5ZWQgY2hhbmdlcyBhcmUgc2F2ZWQgYW5kIG5l dyBvbmVzCiEgOzsgcmVjb3JkZWQgYnV0IGFyZSBub3QgZGlzcGxheWVkIGRpZmZlcmVudGx5Lgoh IDs7IFdoeSBhY3RpdmUgYW5kIHBhc3NpdmU/ICBIYXZpbmcgdGhlIGNoYW5nZXMgdmlzaWJsZSBj YW4gYmUgaGFuZHkgd2hlbiB5b3UKISA7OyB3YW50IHRoZSBpbmZvcm1hdGlvbiBidXQgdmVyeSBk aXN0cmFjdGluZyBvdGhlcndpc2UuICBTbywgeW91IGNhbiBrZWVwCiEgOzsgSGlnaGxpZ2h0IENo YW5nZXMgbW9kZSBpbiBwYXNzaXZlIHN0YXRlIHdoaWxlIHlvdSBtYWtlIHlvdXIgY2hhbmdlcywg dG9nZ2xlCiEgOzsgaXQgb24gdG8gYWN0aXZlIG1vZGUgdG8gc2VlIHRoZW0sIHRoZW4gdG9nZ2xl IGl0IGJhY2sgb2ZmIHRvIGF2b2lkCiEgOzsgZGlzdHJhY3Rpb24uCiEgOzsKISA7OyBXaGVuIGFj dGl2ZSwgY2hhbmdlcyBhcmUgZGlzcGxheWVkIGluIHRoZSBgaGlnaGxpZ2h0LWNoYW5nZXMnIGZh Y2UuCiEgOzsgV2hlbiB0ZXh0IGlzIGRlbGV0ZWQsIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIGlz IGRpc3BsYXllZCBpbiB0aGUKISA7OyBgaGlnaGxpZ2h0LWNoYW5nZXMtZGVsZXRlJyBmYWNlLgoh IDs7CiAgOzsKICA7OyBZb3UgY2FuICJhZ2UiIGRpZmZlcmVudCBzZXRzIG9mIGNoYW5nZXMgYnkg dXNpbmcKICA7OyBgaGlnaGxpZ2h0LWNoYW5nZXMtcm90YXRlLWZhY2VzJy4gIFRoaXMgcm90YXRl cyB0aHJvdWdoIGEgc2VyaWVzCiAgOzsgb2YgZGlmZmVyZW50IGZhY2VzLCBzbyB5b3UgY2FuIGRp c3Rpbmd1aXNoICJuZXciIGNoYW5nZXMgZnJvbSAib2xkZXIiCiAgOzsgY2hhbmdlcy4gIFlvdSBj YW4gY3VzdG9taXplIHRoZXNlICJyb3RhdGVkIiBmYWNlcyBpbiB0d28gd2F5cy4gIFlvdSBjYW4K ICA7OyBlaXRoZXIgZXhwbGljaXRseSBkZWZpbmUgZWFjaCBmYWNlIGJ5IGN1c3RvbWl6aW5nCiAg OzsgYGhpZ2hsaWdodC1jaGFuZ2VzLWZhY2UtbGlzdCcuICBJZiwgaG93ZXZlciwgdGhlIGZhY2Vz IGRpZmZlciBmcm9tCiEgOzsgdGhlIGBoaWdobGlnaHQtY2hhbmdlcycgZmFjZSBvbmx5IGluIHRo ZSBmb3JlZ3JvdW5kIGNvbG9yLCB5b3UgY2FuIHNpbXBseSBzZXQKISA7OyBgaGlnaGxpZ2h0LWNo YW5nZXMtY29sb3JzJy4gIElmIGBoaWdobGlnaHQtY2hhbmdlcy1mYWNlLWxpc3QnIGlzIG5pbCB3 aGVuCiAgOzsgdGhlIGZhY2VzIGFyZSByZXF1aXJlZCB0aGV5IHdpbGwgYmUgY29uc3RydWN0ZWQg ZnJvbQohIDs7IGBoaWdobGlnaHQtY2hhbmdlcy1jb2xvcnMnLgohIDs7CiEgOzsKISA7OyBXaGVu IGEgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSBpcyBvbiAoZWl0aGVyIGFjdGl2ZSBvciBwYXNzaXZl KSB5b3UgY2FuIGdvCiEgOzsgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgY2hhbmdlIHdpdGggYGhp Z2hsaWdodC1jaGFuZ2VzLW5leHQtY2hhbmdlJyBhbmQKISA7OyBgaGlnaGxpZ2h0LWNoYW5nZXMt cHJldmlvdXMtY2hhbmdlJy4KISA7OwohIDs7CiEgOzsgWW91IGNhbiBhbHNvIHVzZSB0aGUgY29t bWFuZCBoaWdobGlnaHQtY29tcGFyZS13aXRoLWZpbGUgdG8gc2hvdyBjaGFuZ2VzCiEgOzsgaW4g dGhpcyBmaWxlIGNvbXBhcmVkIHdpdGggYW5vdGhlciBmaWxlICh0eXBpY2FsbHkgdGhlIHByZXZp b3VzIHZlcnNpb24KISA7OyBvZiB0aGUgZmlsZSkuICBUaGUgY29tbWFuZCBoaWdobGlnaHQtY29t cGFyZS1idWZmZXJzIGNhbiBiZSB1c2VkIHRvCiEgOzsgY29tcGFyZSB0d28gYnVmZmVycy4KISA7 OwohIDs7CiEgOzsgVGhlcmUgYXJlIGN1cnJlbnRseSB0aHJlZSBob29rcyBydW4gYnkgYGhpZ2hs aWdodC1jaGFuZ2VzLW1vZGUnOgogIDs7IGBoaWdobGlnaHQtY2hhbmdlcy1lbmFibGUtaG9vaycg IC0gaXMgcnVuIHdoZW4gSGlnaGxpZ2h0IENoYW5nZXMgbW9kZQohIDs7CQkJCSAgICBpcyBpbml0 aWFsbHkgZW5hYmxlZCBmb3IgYSBidWZmZXIuCiAgOzsgYGhpZ2hsaWdodC1jaGFuZ2VzLWRpc2Fi bGUtaG9vaycgLSBpcyBydW4gd2hlbiBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlCiEgOzsJCQkJICAg IGlzIHR1cm5lZCBvZmYuCiEgOzsgYGhpZ2hsaWdodC1jaGFuZ2VzLXRvZ2dsZS1ob29rJyAgLSBp cyBydW4gZWFjaCB0aW1lIGBoaWdobGlnaHQtY2hhbmdlcy1tb2RlJwohIDs7CQkJCSAgICBpcyBj YWxsZWQuICBUeXBpY2FsbHkgdGhpcyBpcyB3aGVuCiEgOzsJCQkJICAgIHRvZ2dsaW5nIGJldHdl ZW4gYWN0aXZlIGFuZCBwYXNzaXZlCiEgOzsJCQkJICAgIG1vZGVzLiAgVGhlIHZhcmlhYmxlCiEg OzsJCQkJICAgIGBoaWdobGlnaHQtY2hhbmdlcy1tb2RlJyBjb250YWlucyB0aGUgbmV3CiEgOzsJ CQkJICAgIHN0YXRlIChgYWN0aXZlJyBvciBgcGFzc2l2ZScuKQohIDs7CiEgOzsKISA7OwogIDs7 IEV4YW1wbGUgdXNhZ2U6CiAgOzsgKGRlZnVuIG15LWhpZ2hsaWdodC1jaGFuZ2VzLWVuYWJsZS1o b29rICgpCiAgOzsgICAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtZnVuY3Rpb25zICdoaWdobGlnaHQt Y2hhbmdlcy1yb3RhdGUtZmFjZXMgbmlsIHQpCi0tLSAyNiw3MyAtLS0tCiAgOzs7IENvbW1lbnRh cnk6CiAgCiAgOzsgQSBtaW5vciBtb2RlOiAiSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSIuCiAgCiEg OzsgV2hlbiBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlIGlzIGVuYWJsZWQgY2hhbmdlcyB0byB0aGUg YnVmZmVyIGFyZQohIDs7IHJlY29yZGVkIHdpdGggYSB0ZXh0IHByb3BlcnR5LiAgTm9ybWFsbHkg dGhlc2UgcmFuZ2VzIG9mIHRleHQgYXJlCiEgOzsgZGlzcGxheWVkIGluIGEgZGlzdGluY3RpdmUg ZmFjZS4gIEhvd2V2ZXIsIHNvbWV0aW1lcyBpdCBpcwohIDs7IGRlc2lyYWJsZSB0byB0ZW1wb3Jh cmlseSBub3Qgc2VlIHRoZXNlIGNoYW5nZXMuICBSYXRoZXIgdGhhbgohIDs7IGRpc2FibGluZyBI aWdobGlnaHQgQ2hhbmdlcyBtb2RlICh0aHVzIHJlbW92aW5nIHRoZSB0ZXh0IHByb3BlcnR5KQoh IDs7IHVzZSB0aGUgY29tbWFuZCBoaWdobGlnaHQtY2hhbmdlcy10b2dnbGUtdmlzaWJpbGl0eS4K ISAKISA7OyBUd28gZmFjZXMgYXJlIHN1cHBvcnRlZDogb25lIGZvciBjaGFuZ2VkIG9yIGluc2Vy dGVkIHRleHQgYW5kCiEgOzsgYW5vdGhlciBmb3IgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0 ZXh0IGhhcyBiZWVuIGRlbGV0ZWQuCiEgCiEgOzsgV2hlbiBIaWdobGlnaHQgQ2hhbmdlcyBtb2Rl IGlzIG9uIChldmVuIGlmIGNoYW5nZXMgYXJlIG5vdCB2aXNpYmxlKQohIDs7IHlvdSBjYW4gZ28g dG8gdGhlIG5leHQgb3IgcHJldmlvdXMgY2hhbmdlIHdpdGgKISA7OyBgaGlnaGxpZ2h0LWNoYW5n ZXMtbmV4dC1jaGFuZ2UnIG9yIGBoaWdobGlnaHQtY2hhbmdlcy1wcmV2aW91cy1jaGFuZ2UnLgoh IAohIDs7IENvbW1hbmQgaGlnaGxpZ2h0LWNvbXBhcmUtd2l0aC1maWxlIHNob3dzIGNoYW5nZXMg aW4gdGhpcyBmaWxlCiEgOzsgY29tcGFyZWQgd2l0aCBhbm90aGVyIGZpbGUgKGJ5IGRlZmF1bHQg dGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlCiEgOzsgZmlsZSkuCiAgOzsKKyA7OyBUaGUgY29t bWFuZCBoaWdobGlnaHQtY29tcGFyZS1idWZmZXJzIGNvbXBhcmVzIHR3byBidWZmZXJzIGJ5Cisg OzsgaGlnaGxpZ2h0aW5nIHRoZWlyIGRpZmZlcmVuY2VzLgorIAogIDs7IFlvdSBjYW4gImFnZSIg ZGlmZmVyZW50IHNldHMgb2YgY2hhbmdlcyBieSB1c2luZwogIDs7IGBoaWdobGlnaHQtY2hhbmdl cy1yb3RhdGUtZmFjZXMnLiAgVGhpcyByb3RhdGVzIHRocm91Z2ggYSBzZXJpZXMKICA7OyBvZiBk aWZmZXJlbnQgZmFjZXMsIHNvIHlvdSBjYW4gZGlzdGluZ3Vpc2ggIm5ldyIgY2hhbmdlcyBmcm9t ICJvbGRlciIKICA7OyBjaGFuZ2VzLiAgWW91IGNhbiBjdXN0b21pemUgdGhlc2UgInJvdGF0ZWQi IGZhY2VzIGluIHR3byB3YXlzLiAgWW91IGNhbgogIDs7IGVpdGhlciBleHBsaWNpdGx5IGRlZmlu ZSBlYWNoIGZhY2UgYnkgY3VzdG9taXppbmcKICA7OyBgaGlnaGxpZ2h0LWNoYW5nZXMtZmFjZS1s aXN0Jy4gIElmLCBob3dldmVyLCB0aGUgZmFjZXMgZGlmZmVyIGZyb20KISA7OyBgaGlnaGxpZ2h0 LWNoYW5nZXMtZmFjZScgb25seSBpbiB0aGUgZm9yZWdyb3VuZCBjb2xvciwgeW91IGNhbiBzaW1w bHkgc2V0CiEgOzsgYGhpZ2hsaWdodC1jaGFuZ2VzLWNvbG91cnMnLiAgSWYgYGhpZ2hsaWdodC1j aGFuZ2VzLWZhY2UtbGlzdCcgaXMgbmlsIHdoZW4KICA7OyB0aGUgZmFjZXMgYXJlIHJlcXVpcmVk IHRoZXkgd2lsbCBiZSBjb25zdHJ1Y3RlZCBmcm9tCiEgOzsgYGhpZ2hsaWdodC1jaGFuZ2VzLWNv bG91cnMnLgohIAohIDs7IFlvdSBjYW4gYXV0b21hdGljYWxseSByb3RhdGUgZmFjZXMgd2hlbiB0 aGUgYnVmZmVyIGlzIHNhdmVkOwohIDs7IHNlZSBmdW5jdGlvbiBgaGlnaGxpZ2h0LWNoYW5nZXMt cm90YXRlLWZhY2VzJyBmb3IgaG93IHRvIGRvIHRoaXMuCiEgCiEgOzsgVGhlcmUgYXJlIHR3byBo b29rcyB1c2VkIGJ5IGBoaWdobGlnaHQtY2hhbmdlcy1tb2RlJzoKICA7OyBgaGlnaGxpZ2h0LWNo YW5nZXMtZW5hYmxlLWhvb2snICAtIGlzIHJ1biB3aGVuIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUK ISA7OwkJCQkgICAgaXMgZW5hYmxlZCBmb3IgYSBidWZmZXIuCiAgOzsgYGhpZ2hsaWdodC1jaGFu Z2VzLWRpc2FibGUtaG9vaycgLSBpcyBydW4gd2hlbiBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlCiEg OzsJCQkJICAgIGlzIGRpc2FibGVkIGZvciBhIGJ1ZmZlci4KISAKICA7OyBFeGFtcGxlIHVzYWdl OgogIDs7IChkZWZ1biBteS1oaWdobGlnaHQtY2hhbmdlcy1lbmFibGUtaG9vayAoKQogIDs7ICAg KGFkZC1ob29rICd3cml0ZS1maWxlLWZ1bmN0aW9ucyAnaGlnaGxpZ2h0LWNoYW5nZXMtcm90YXRl LWZhY2VzIG5pbCB0KQoqKioqKioqKioqKioqKioKKioqIDk0LDE0MiAqKioqCiAgOzsJCSdteS1o aWdobGlnaHQtY2hhbmdlcy1kaXNhYmxlLWhvb2spCiAgCiAgCiEgOzsgICAgICAgICAgIEV4cGxp Y2l0IHZzLiBJbXBsaWNpdAohIDs7CiAgCiAgOzsgTm9ybWFsbHksIEhpZ2hsaWdodCBDaGFuZ2Vz IG1vZGUgaXMgdHVybmVkIG9uIGV4cGxpY2l0bHkgaW4gYSBidWZmZXIuCiEgOzsKICA7OyBJZiB5 b3UgcHJlZmVyIHRvIGhhdmUgaXQgYXV0b21hdGljYWxseSBpbnZva2VkIHlvdSBjYW4gZG8gaXQg YXMKICA7OyBmb2xsb3dzLgohIDs7CiAgOzsgMS4gTW9zdCBtb2RlcyBoYXZlIGEgbWFqb3ItaG9v aywgdHlwaWNhbGx5IGNhbGxlZCBNT0RFLWhvb2suICBZb3UKICA7OyBjYW4gdXNlIGBhZGQtaG9v aycgdG8gY2FsbCBgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZScuCiEgOzsKICA7OyAgIEV4YW1wbGU6 CiAgOzsJKGFkZC1ob29rICdjLW1vZGUtaG9vayAnaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZSkKISA7 OwohIDs7ICBJZiB5b3Ugd2FudCB0byBtYWtlIGl0IHN0YXJ0IHVwIGluIHBhc3NpdmUgbW9kZSAo cmVnYXJkbGVzcyBvZiB0aGUKISA7OyAgc2V0dGluZyBvZiBoaWdobGlnaHQtY2hhbmdlcy1pbml0 aWFsLXN0YXRlKToKISA7OyAgICAgIChhZGQtaG9vayAnZW1hY3MtbGlzcC1tb2RlLWhvb2sKISA7 OyAJICAgIChsYW1iZGEgKCkKISA7OyAJICAgICAgKGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgJ3Bh c3NpdmUpKSkKISA7OwogIDs7IEhvd2V2ZXIsIHRoaXMgY2Fubm90IGJlIGRvbmUgZm9yIEZ1bmRh bWVudGFsIG1vZGUgZm9yIHRoZXJlIGlzIG5vCiAgOzsgc3VjaCBob29rLgohIDs7CiEgOzsgMi4g WW91IGNhbiB1c2UgdGhlIGZ1bmN0aW9uIGBnbG9iYWwtaGlnaGxpZ2h0LWNoYW5nZXMnCiEgOzsK ICA7OyBUaGlzIGZ1bmN0aW9uLCB3aGljaCBpcyBmYXNoaW9uZWQgYWZ0ZXIgdGhlIHdheSBgZ2xv YmFsLWZvbnQtbG9jaycgd29ya3MsCiAgOzsgdG9nZ2xlcyBvbiBvciBvZmYgZ2xvYmFsIEhpZ2hs aWdodCBDaGFuZ2VzIG1vZGUuICBXaGVuIGFjdGl2YXRlZCwgaXQgdHVybnMKICA7OyBvbiBIaWdo bGlnaHQgQ2hhbmdlcyBtb2RlIGluIGFsbCAic3VpdGFibGUiIGV4aXN0aW5nIGJ1ZmZlcnMgYW5k IHdpbGwgdHVybgogIDs7IGl0IG9uIGluIG5ldyAic3VpdGFibGUiIGJ1ZmZlcnMgdG8gYmUgY3Jl YXRlZC4KISA7OwogIDs7IEEgYnVmZmVyJ3MgInN1aXRhYmlsaXR5IiBpcyBkZXRlcm1pbmVkIGJ5 IHZhcmlhYmxlCiEgOzsgYGhpZ2hsaWdodC1jaGFuZ2VzLWdsb2JhbC1tb2RlcycsIGFzIGZvbGxv d3MuICBJZiB0aGUgdmFyaWFibGUgaXMKICA7OyAqIG5pbCAgLS0gdGhlbiBubyBidWZmZXJzIGFy ZSBzdWl0YWJsZTsKICA7OyAqIGEgZnVuY3Rpb24gLS0gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg YW5kIHRoZSByZXN1bHQgaXMgdXNlZC4gIEFzCiAgOzsgICBhbiBleGFtcGxlLCBpZiB0aGUgdmFs dWUgaXMgYGJ1ZmZlci1maWxlLW5hbWUnIHRoZW4gYWxsIGJ1ZmZlcnMKICA7OyAgIHdobyBhcmUg dmlzaXRpbmcgZmlsZXMgYXJlIHN1aXRhYmxlLCBidXQgb3RoZXJzIChsaWtlIGRpcmVkCiAgOzsg ICBidWZmZXJzKSBhcmUgbm90OwohIDs7ICogYSBsaXN0IC0tIHRoZW4gdGhlIGJ1ZmZlciBpcyBz dWl0YWJsZSBpZmYgaXRzIG1vZGUgaXMgaW4gdGhlCiEgOzsgICBsaXN0LCBleGNlcHQgaWYgdGhl IGZpcnN0IGVsZW1lbnQgaXMgYG5vdCcsIGluIHdoaWNoIGNhc2UgdGhlIHRlc3QKICA7OyAgIGlz IHJldmVyc2VkIChpLmUuIGl0IGlzIGEgbGlzdCBvZiB1bnN1aXRhYmxlIG1vZGVzKS4KICA7OyAq IE90aGVyd2lzZSwgdGhlIGJ1ZmZlciBpcyBzdWl0YWJsZSBpZiBpdHMgbmFtZSBkb2VzIG5vdCBi ZWdpbiB3aXRoCiAgOzsgICBgICcgb3IgYConIGFuZCBpZiBgYnVmZmVyLWZpbGUtbmFtZScgcmV0 dXJucyB0cnVlLgohIDs7CiAgCiAgCiAgCi0tLSA4MiwxMjcgLS0tLQogIDs7CQknbXktaGlnaGxp Z2h0LWNoYW5nZXMtZGlzYWJsZS1ob29rKQogIAogIAohIAohIDs7ICAgICAgICAgICBBdXRvbWF0 aWNhbGx5IGVuYWJsaW5nIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUKISAKICAKICA7OyBOb3JtYWxs eSwgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSBpcyB0dXJuZWQgb24gZXhwbGljaXRseSBpbiBhIGJ1 ZmZlci4KISAKICA7OyBJZiB5b3UgcHJlZmVyIHRvIGhhdmUgaXQgYXV0b21hdGljYWxseSBpbnZv a2VkIHlvdSBjYW4gZG8gaXQgYXMKICA7OyBmb2xsb3dzLgohIAogIDs7IDEuIE1vc3QgbW9kZXMg aGF2ZSBhIG1ham9yLWhvb2ssIHR5cGljYWxseSBjYWxsZWQgTU9ERS1ob29rLiAgWW91CiAgOzsg Y2FuIHVzZSBgYWRkLWhvb2snIHRvIGNhbGwgYGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUnLgohIAog IDs7ICAgRXhhbXBsZToKICA7OwkoYWRkLWhvb2sgJ2MtbW9kZS1ob29rICdoaWdobGlnaHQtY2hh bmdlcy1tb2RlKQohIAogIDs7IEhvd2V2ZXIsIHRoaXMgY2Fubm90IGJlIGRvbmUgZm9yIEZ1bmRh bWVudGFsIG1vZGUgZm9yIHRoZXJlIGlzIG5vCiAgOzsgc3VjaCBob29rLgohIAohIDs7IDIuIFlv dSBjYW4gdXNlIHRoZSBmdW5jdGlvbiBgZ2xvYmFsLWhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUnCiEg CiAgOzsgVGhpcyBmdW5jdGlvbiwgd2hpY2ggaXMgZmFzaGlvbmVkIGFmdGVyIHRoZSB3YXkgYGds b2JhbC1mb250LWxvY2snIHdvcmtzLAogIDs7IHRvZ2dsZXMgb24gb3Igb2ZmIGdsb2JhbCBIaWdo bGlnaHQgQ2hhbmdlcyBtb2RlLiAgV2hlbiBhY3RpdmF0ZWQsIGl0IHR1cm5zCiAgOzsgb24gSGln aGxpZ2h0IENoYW5nZXMgbW9kZSBpbiBhbGwgInN1aXRhYmxlIiBleGlzdGluZyBidWZmZXJzIGFu ZCB3aWxsIHR1cm4KICA7OyBpdCBvbiBpbiBuZXcgInN1aXRhYmxlIiBidWZmZXJzIHRvIGJlIGNy ZWF0ZWQuCiEgCiAgOzsgQSBidWZmZXIncyAic3VpdGFiaWxpdHkiIGlzIGRldGVybWluZWQgYnkg dmFyaWFibGUKISA7OyBgaGlnaGxpZ2h0LWNoYW5nZXMtZ2xvYmFsLW1vZGVzJyBhcyBmb2xsb3dz LiAgSWYgdGhpcyB2YXJpYWJsZSBpcwogIDs7ICogbmlsICAtLSB0aGVuIG5vIGJ1ZmZlcnMgYXJl IHN1aXRhYmxlOwogIDs7ICogYSBmdW5jdGlvbiAtLSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBh bmQgdGhlIHJlc3VsdCBpcyB1c2VkLiAgQXMKICA7OyAgIGFuIGV4YW1wbGUsIGlmIHRoZSB2YWx1 ZSBpcyBgYnVmZmVyLWZpbGUtbmFtZScgdGhlbiBhbGwgYnVmZmVycwogIDs7ICAgd2hvIGFyZSB2 aXNpdGluZyBmaWxlcyBhcmUgc3VpdGFibGUsIGJ1dCBvdGhlcnMgKGxpa2UgZGlyZWQKICA7OyAg IGJ1ZmZlcnMpIGFyZSBub3Q7CiEgOzsgKiBhIGxpc3QgLS0gdGhlbiB0aGUgYnVmZmVyIGlzIHN1 aXRhYmxlIGlmIGFuZCBvbmx5IGlmIGl0cyBtb2RlIGlzIGluIHRoZQohIDs7ICAgbGlzdCwgdW5s ZXNzIHRoZSBmaXJzdCBlbGVtZW50IGlzIGBub3QnIGluIHdoaWNoIGNhc2UgdGhlIHRlc3QKICA7 OyAgIGlzIHJldmVyc2VkIChpLmUuIGl0IGlzIGEgbGlzdCBvZiB1bnN1aXRhYmxlIG1vZGVzKS4K ICA7OyAqIE90aGVyd2lzZSwgdGhlIGJ1ZmZlciBpcyBzdWl0YWJsZSBpZiBpdHMgbmFtZSBkb2Vz IG5vdCBiZWdpbiB3aXRoCiAgOzsgICBgICcgb3IgYConIGFuZCBpZiBgYnVmZmVyLWZpbGUtbmFt ZScgcmV0dXJucyB0cnVlLgohIAohIDs7IFRvIGVuYWJsZSBpdCBmb3IgZnV0dXJlIHNlc3Npb25z IHB1dCB0aGlzIGluIHlvdXIgfi8uZW1hY3MgZmlsZToKISA7OwkJKGdsb2JhbC1oaWdobGlnaHQt Y2hhbmdlcy1tb2RlIHQpCiAgCiAgCiAgCioqKioqKioqKioqKioqKgoqKiogMTQ0LDE2MCAqKioq CiAgOzsgKGdsb2JhbC1zZXQta2V5ICdbQy1yaWdodF0gJ2hpZ2hsaWdodC1jaGFuZ2VzLW5leHQt Y2hhbmdlKQogIDs7IChnbG9iYWwtc2V0LWtleSAnW0MtbGVmdF0gICdoaWdobGlnaHQtY2hhbmdl cy1wcmV2aW91cy1jaGFuZ2UpCiAgOzsKISA7OyAgICAgT3RoZXIgaW50ZXJhY3RpdmUgZnVuY3Rp b25zICh3aGljaCBjb3VsZCBiZSBib3VuZCBpZiBkZXNpcmVkKToKICA7OyBoaWdobGlnaHQtY2hh bmdlcy1tb2RlCiAgOzsgaGlnaGxpZ2h0LWNoYW5nZXMtcmVtb3ZlLWhpZ2hsaWdodAotIDs7IGhp Z2hsaWdodC1jaGFuZ2VzLXJvdGF0ZS1mYWNlcwogIDs7IGhpZ2hsaWdodC1jb21wYXJlLXdpdGgt ZmlsZQogIDs7IGhpZ2hsaWdodC1jb21wYXJlLWJ1ZmZlcnMKISAKISA7OwohIDs7IFlvdSBjYW4g YXV0b21hdGljYWxseSByb3RhdGUgZmFjZXMgd2hlbiB0aGUgYnVmZmVyIGlzIHNhdmVkOwohIDs7 IHNlZSBmdW5jdGlvbiBgaGlnaGxpZ2h0LWNoYW5nZXMtcm90YXRlLWZhY2VzJyBmb3IgaG93IHRv IGRvIHRoaXMuCiEgOzsKICAKICAKICA7OzsgQnVnczoKLS0tIDEyOSwxNDEgLS0tLQogIDs7IChn bG9iYWwtc2V0LWtleSAnW0MtcmlnaHRdICdoaWdobGlnaHQtY2hhbmdlcy1uZXh0LWNoYW5nZSkK ICA7OyAoZ2xvYmFsLXNldC1rZXkgJ1tDLWxlZnRdICAnaGlnaGxpZ2h0LWNoYW5nZXMtcHJldmlv dXMtY2hhbmdlKQogIDs7CiEgOzsgICAgIE90aGVyIGludGVyYWN0aXZlIGZ1bmN0aW9ucyAodGhh dCBjb3VsZCBiZSBib3VuZCBpZiBkZXNpcmVkKToKICA7OyBoaWdobGlnaHQtY2hhbmdlcy1tb2Rl CisgOzsgaGlnaGxpZ2h0LWNoYW5nZXMtdG9nZ2xlLXZpc2liaWxpdHkKICA7OyBoaWdobGlnaHQt Y2hhbmdlcy1yZW1vdmUtaGlnaGxpZ2h0CiAgOzsgaGlnaGxpZ2h0LWNvbXBhcmUtd2l0aC1maWxl CiAgOzsgaGlnaGxpZ2h0LWNvbXBhcmUtYnVmZmVycwohIDs7IGhpZ2hsaWdodC1jaGFuZ2VzLXJv dGF0ZS1mYWNlcwogIAogIAogIDs7OyBCdWdzOgoqKioqKioqKioqKioqKioKKioqIDE2OCwxNzgg KioqKgogIAogIDs7IC0gaGF2aW5nIGRpZmZlcmVudCBmYWNlcyBmb3IgZGVsZXRpb24gYW5kIG5v bi1kZWxldGlvbjogaXMgaXQKICA7OyAgIHJlYWxseSB3b3J0aCB0aGUgaGFzc2xlPwotIDs7IC0g c2hvdWxkIGhhdmUgYmV0dGVyIGhvb2tzOiAgd2hlbiBzaG91bGQgdGhleSBiZSBydW4/CiAgOzsg LSBoaWdobGlnaHQtY29tcGFyZS13aXRoLWZpbGUgc2hvdWxkIGFsbG93IFJDUyBmaWxlcyAtIGUu Zy4gbmljZSB0byBiZQogIDs7ICAgYWJsZSB0byBzYXkgc2hvdyBjaGFuZ2VzIGNvbXBhcmVkIHdp dGggdmVyc2lvbiAyLjEuCi0gOzsgLSBNYXliZSB3ZSBzaG91bGQgaGF2ZSBjb21wYXJlLXdpdGgt YnVmZmVyIGFzIHdlbGwuICAoV2hlbiBJIHRyaWVkCi0gOzsgICBhIHdoaWxlIGJhY2sgSSByYW4g aW50byBhIHByb2JsZW0gd2l0aCBlZGlmZi1idWZmZXJzLWludGVybmFsLikKICAKICAKICA7Ozsg SGlzdG9yeToKLS0tIDE0OSwxNTYgLS0tLQoqKioqKioqKioqKioqKioKKioqIDE5MCwxOTggKioq KgogIDs7IC0gQ2hhbmdlZCB0byB1c2Ugb3ZlcmxheXMKICA7OyBBdWd1c3QgOTgKICA7OyAtIHJl bmFtZWQgdG8gSGlnaGxpZ2h0IENoYW5nZXMgbW9kZS4KISA7OyBEZWMgMjAwMwohIDs7IC0gVXNl IHJlcXVpcmUgZm9yIGVkaWZmIHN0dWZmCiAgOzsgLSBBZGRlZCBoaWdobGlnaHQtY29tcGFyZS1i dWZmZXJzCiAgCiAgOzs7IENvZGU6CiAgCi0tLSAxNjgsMTgxIC0tLS0KICA7OyAtIENoYW5nZWQg dG8gdXNlIG92ZXJsYXlzCiAgOzsgQXVndXN0IDk4CiAgOzsgLSByZW5hbWVkIHRvIEhpZ2hsaWdo dCBDaGFuZ2VzIG1vZGUuCiEgOzsgTm92IDIwMDYKISA7OyAtIE1hZGUgaGlnaGxpZ2h0LWNoYW5n ZXMtbW9kZSBsaWtlIG90aGVyIG1vZGVzICh0b2dnbGUgb24vb2ZmKQohIDs7IC0gQWRkZWQgbmV3 IGNvbW1hbmQgaGlnaGxpZ2h0LWNoYW5nZXMtdG9nZ2xlLXZpc2liaWxpdHkgdG8gcmVwbGFjZSB0 aGUKISA7OyAgIHByZXZpb3VzIGFjdGl2ZS9wYXNzaXZlIGFzcGVjdCBvZiBoaWdobGlnaHQtY2hh bmdlcy1tb2RlLgohIDs7IC0gUmVtb3ZlZCBoaWdobGlnaHQtY2hhbmdlcy10b2dnbGUtaG9vawog IDs7IC0gQWRkZWQgaGlnaGxpZ2h0LWNvbXBhcmUtYnVmZmVycworIDs7IC0gUHV0IGJhY2sgZXZh bC1hbmQtY29tcGlsZSBpbmFkdmVydGVudGx5IGRyb3BwZWQKKyAKICAKICA7OzsgQ29kZToKICAK KioqKioqKioqKioqKioqCioqKiAyNTQsMjk4ICoqKioKICAgIDpncm91cCAnaGlnaGxpZ2h0LWNo YW5nZXMpCiAgCiAgKGRlZmluZS1vYnNvbGV0ZS12YXJpYWJsZS1hbGlhcyAnaGlnaGxpZ2h0LWNo YW5nZXMtY29sb3VycwohICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hpZ2hsaWdo dC1jaGFuZ2VzLWNvbG9ycyAiMjIuMSIpCiAgCiAgCiEgOzsgSWYgeW91IGludm9rZSBoaWdobGln aHQtY2hhbmdlcy1tb2RlIHdpdGggbm8gYXJndW1lbnQsIHNob3VsZCBpdCBzdGFydCBpbgohIDs7 IGFjdGl2ZSBvciBwYXNzaXZlIG1vZGU/CiEgOzsKISAoZGVmY3VzdG9tIGhpZ2hsaWdodC1jaGFu Z2VzLWluaXRpYWwtc3RhdGUgJ2FjdGl2ZQohICAgIipXaGF0IHN0YXRlIChhY3RpdmUgb3IgcGFz c2l2ZSkgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSBzaG91bGQgc3RhcnQgaW4uCiEgVGhpcyBpcyB1 c2VkIHdoZW4gYGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUnIGlzIGNhbGxlZCB3aXRoIG5vIGFyZ3Vt ZW50LgohIFRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXQgdG8gb25lIG9mIHRoZSBzeW1ib2xzIGBh Y3RpdmUnIG9yIGBwYXNzaXZlJy4iCiEgICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiQWN0 aXZlIiBhY3RpdmUpCiEgCQkgKGNvbnN0IDp0YWcgIlBhc3NpdmUiIHBhc3NpdmUpKQohICAgOmdy b3VwICdoaWdobGlnaHQtY2hhbmdlcykKICAKLSAoZGVmY3VzdG9tIGhpZ2hsaWdodC1jaGFuZ2Vz LWdsb2JhbC1pbml0aWFsLXN0YXRlICdwYXNzaXZlCi0gICAiKldoYXQgc3RhdGUgZ2xvYmFsIEhp Z2hsaWdodCBDaGFuZ2VzIG1vZGUgc2hvdWxkIHN0YXJ0IGluLgotIFRoaXMgaXMgdXNlZCBpZiBg Z2xvYmFsLWhpZ2hsaWdodC1jaGFuZ2VzJyBpcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudC4KLSBU aGlzIHZhcmlhYmxlIG11c3QgYmUgc2V0IHRvIGVpdGhlciBgYWN0aXZlJyBvciBgcGFzc2l2ZScu IgotICAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIkFjdGl2ZSIgYWN0aXZlKQotIAkJIChj b25zdCA6dGFnICJQYXNzaXZlIiBwYXNzaXZlKSkKLSAgIDpncm91cCAnaGlnaGxpZ2h0LWNoYW5n ZXMpCiAgCiEgOzsgVGhlIHN0cmluZ3MgZGlzcGxheWVkIGluIHRoZSBtb2RlLWxpbmUgZm9yIHRo ZSBtaW5vciBtb2RlOgohIChkZWZjdXN0b20gaGlnaGxpZ2h0LWNoYW5nZXMtYWN0aXZlLXN0cmlu ZyAiICtDaGciCiEgICAiKlRoZSBzdHJpbmcgdXNlZCB3aGVuIEhpZ2hsaWdodCBDaGFuZ2VzIG1v ZGUgaXMgaW4gdGhlIGFjdGl2ZSBzdGF0ZS4KICBUaGlzIHNob3VsZCBiZSBzZXQgdG8gbmlsIGlm IG5vIGluZGljYXRpb24gaXMgZGVzaXJlZCwgb3IgdG8KICBhIHN0cmluZyB3aXRoIGEgbGVhZGlu ZyBzcGFjZS4iCiAgICA6dHlwZSAnKGNob2ljZSBzdHJpbmcKICAJCSAoY29uc3QgOnRhZyAiTm9u ZSIgIG5pbCkpCiAgICA6Z3JvdXAgJ2hpZ2hsaWdodC1jaGFuZ2VzKQogIAohIChkZWZjdXN0b20g aGlnaGxpZ2h0LWNoYW5nZXMtcGFzc2l2ZS1zdHJpbmcgIiAtQ2hnIgohICAgIipUaGUgc3RyaW5n IHVzZWQgd2hlbiBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlIGlzIGluIHRoZSBwYXNzaXZlIHN0YXRl LgogIFRoaXMgc2hvdWxkIGJlIHNldCB0byBuaWwgaWYgbm8gaW5kaWNhdGlvbiBpcyBkZXNpcmVk LCBvciB0bwogIGEgc3RyaW5nIHdpdGggYSBsZWFkaW5nIHNwYWNlLiIKICAgIDp0eXBlICcoY2hv aWNlIHN0cmluZwogIAkJIChjb25zdCA6dGFnICJOb25lIiAgbmlsKSkKICAgIDpncm91cCAnaGln aGxpZ2h0LWNoYW5nZXMpCiAgCiAgKGRlZmN1c3RvbSBoaWdobGlnaHQtY2hhbmdlcy1nbG9iYWwt bW9kZXMgdAogICAgIipEZXRlcm1pbmUgd2hldGhlciBhIGJ1ZmZlciBpcyBzdWl0YWJsZSBmb3Ig Z2xvYmFsIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUuCiAgCi0tLSAyMzcsMjc4IC0tLS0KICAgIDpn cm91cCAnaGlnaGxpZ2h0LWNoYW5nZXMpCiAgCiAgKGRlZmluZS1vYnNvbGV0ZS12YXJpYWJsZS1h bGlhcyAnaGlnaGxpZ2h0LWNoYW5nZXMtY29sb3VycwohIAkJCQknaGlnaGxpZ2h0LWNoYW5nZXMt Y29sb3JzICIyMi4xIikKICAKKyAobWFrZS1vYnNvbGV0ZS12YXJpYWJsZSAnaGlnaGxpZ2h0LWNo YW5nZXMtZ2xvYmFsLWNoYW5nZXMtZXhpc3RpbmctYnVmZmVycworIAkJCSJnbG9iYWwtaGlnaGxp Z2h0LWNoYW5nZXMtbW9kZQorIGFmZmVjdHMgYWxsIGJ1ZmZlcnMgbm93LiAgU2VlIHZhcmlhYmxl cyBgaGlnaGxpZ2h0LWNoYW5nZXMtZ2xvYmFsLW1vZGVzJyBhbmQKKyBgaGlnaGxpZ2h0LWNoYW5n ZXMtbW9kZS10dXJuLW9mZi1mbicuIiAiMjIuMSIpCiAgCiEgOzsgaGlnaGxpZ2h0LWNoYW5nZXMt aW5pdGlhbC1zdGF0ZSBoYXMgYmVlbiByZW1vdmVkCiEgOzsgaGlnaGxpZ2h0LWNoYW5nZXMtZ2xv YmFsLWluaXRpYWwtc3RhdGUgaGFzIGJlZW4gcmVtb3ZlZAogIAogIAohIDs7IFRoZXNlIGFyZSB0 aGUgc3RyaW5ncyBkaXNwbGF5ZWQgaW4gdGhlIG1vZGUtbGluZSBmb3IgdGhlIG1pbm9yIG1vZGU6 CiEgCiEgKGRlZmN1c3RvbSBoaWdobGlnaHQtY2hhbmdlcy12aXNpYmxlLXN0cmluZyAiICtDaGci CiEgICAiKlRoZSBzdHJpbmcgdXNlZCB3aGVuIGluIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUgYW5k IGNoYW5nZXMgYXJlIHZpc2libGUuCiAgVGhpcyBzaG91bGQgYmUgc2V0IHRvIG5pbCBpZiBubyBp bmRpY2F0aW9uIGlzIGRlc2lyZWQsIG9yIHRvCiAgYSBzdHJpbmcgd2l0aCBhIGxlYWRpbmcgc3Bh Y2UuIgogICAgOnR5cGUgJyhjaG9pY2Ugc3RyaW5nCiAgCQkgKGNvbnN0IDp0YWcgIk5vbmUiICBu aWwpKQogICAgOmdyb3VwICdoaWdobGlnaHQtY2hhbmdlcykKICAKISAoZGVmaW5lLW9ic29sZXRl LXZhcmlhYmxlLWFsaWFzICdoaWdobGlnaHQtY2hhbmdlcy1hY3RpdmUtc3RyaW5nCiEgCQkJJ2hp Z2hsaWdodC1jaGFuZ2VzLXZpc2libGUtc3RyaW5nICIyMi4xIikKISAKISAoZGVmY3VzdG9tIGhp Z2hsaWdodC1jaGFuZ2VzLWludmlzaWJsZS1zdHJpbmcgIiAtQ2hnIgohICAgIipUaGUgc3RyaW5n IHVzZWQgd2hlbiBpbiBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlIGFuZCBjaGFuZ2VzIGFyZSBoaWRk ZW4uCiAgVGhpcyBzaG91bGQgYmUgc2V0IHRvIG5pbCBpZiBubyBpbmRpY2F0aW9uIGlzIGRlc2ly ZWQsIG9yIHRvCiAgYSBzdHJpbmcgd2l0aCBhIGxlYWRpbmcgc3BhY2UuIgogICAgOnR5cGUgJyhj aG9pY2Ugc3RyaW5nCiAgCQkgKGNvbnN0IDp0YWcgIk5vbmUiICBuaWwpKQogICAgOmdyb3VwICdo aWdobGlnaHQtY2hhbmdlcykKICAKKyAoZGVmaW5lLW9ic29sZXRlLXZhcmlhYmxlLWFsaWFzICdo aWdobGlnaHQtY2hhbmdlcy1wYXNzaXZlLXN0cmluZworIAkJCSdoaWdobGlnaHQtY2hhbmdlcy1p bnZpc2libGUtc3RyaW5nICIyMi4xIikKKyAKKyAKICAoZGVmY3VzdG9tIGhpZ2hsaWdodC1jaGFu Z2VzLWdsb2JhbC1tb2RlcyB0CiAgICAiKkRldGVybWluZSB3aGV0aGVyIGEgYnVmZmVyIGlzIHN1 aXRhYmxlIGZvciBnbG9iYWwgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZS4KICAKKioqKioqKioqKioq KioqCioqKiAzMDYsMzE2ICoqKioKICBBIHZhbHVlIG9mIHQgbWVhbnMgdGhlIGJ1ZmZlciBpcyBz dWl0YWJsZSBpZiBpdCBpcyB2aXNpdGluZyBhIGZpbGUgYW5kCiAgaXRzIG5hbWUgZG9lcyBub3Qg YmVnaW4gd2l0aCBgICcgb3IgYConLgogIAohIEEgdmFsdWUgb2YgbmlsIG1lYW5zIG5vIGJ1ZmZl cnMgYXJlIHN1aXRhYmxlIGZvciBgZ2xvYmFsLWhpZ2hsaWdodC1jaGFuZ2VzJwogIFwoZWZmZWN0 aXZlbHkgZGlzYWJsaW5nIHRoZSBtb2RlKS4KICAKICBFeGFtcGxlOgohICAgICAgICAgKGMtbW9k ZSBjKystbW9kZSkKICBtZWFucyB0aGF0IEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUgaXMgdHVybmVk IG9uIGZvciBidWZmZXJzIGluIEMgYW5kIEMrKwogIG1vZGVzIG9ubHkuIgogICAgOnR5cGUgJyhj aG9pY2UKLS0tIDI4NiwyOTYgLS0tLQogIEEgdmFsdWUgb2YgdCBtZWFucyB0aGUgYnVmZmVyIGlz IHN1aXRhYmxlIGlmIGl0IGlzIHZpc2l0aW5nIGEgZmlsZSBhbmQKICBpdHMgbmFtZSBkb2VzIG5v dCBiZWdpbiB3aXRoIGAgJyBvciBgKicuCiAgCiEgQSB2YWx1ZSBvZiBuaWwgbWVhbnMgbm8gYnVm ZmVycyBhcmUgc3VpdGFibGUgZm9yIGBnbG9iYWwtaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZScKICBc KGVmZmVjdGl2ZWx5IGRpc2FibGluZyB0aGUgbW9kZSkuCiAgCiAgRXhhbXBsZToKISAJKGMtbW9k ZSBjKystbW9kZSkKICBtZWFucyB0aGF0IEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUgaXMgdHVybmVk IG9uIGZvciBidWZmZXJzIGluIEMgYW5kIEMrKwogIG1vZGVzIG9ubHkuIgogICAgOnR5cGUgJyhj aG9pY2UKKioqKioqKioqKioqKioqCioqKiAzMjUsMzQxICoqKioKICAJICApCiAgICA6Z3JvdXAg J2hpZ2hsaWdodC1jaGFuZ2VzKQogIAotIChkZWZ2YXIgZ2xvYmFsLWhpZ2hsaWdodC1jaGFuZ2Vz IG5pbCkKLSAKLSAoZGVmY3VzdG9tIGhpZ2hsaWdodC1jaGFuZ2VzLWdsb2JhbC1jaGFuZ2VzLWV4 aXN0aW5nLWJ1ZmZlcnMgbmlsCi0gICAiKklmIG5vbi1uaWwsIHRvZ2dsaW5nIGdsb2JhbCBIaWdo bGlnaHQgQ2hhbmdlcyBtb2RlIGFmZmVjdHMgZXhpc3RpbmcgYnVmZmVycy4KLSBOb3JtYWxseSwg YGdsb2JhbC1oaWdobGlnaHQtY2hhbmdlcycgYWZmZWN0cyBvbmx5IG5ldyBidWZmZXJzICh0byBi ZQotIGNyZWF0ZWQpLiAgSG93ZXZlciwgaWYgYGhpZ2hsaWdodC1jaGFuZ2VzLWdsb2JhbC1jaGFu Z2VzLWV4aXN0aW5nLWJ1ZmZlcnMnCi0gaXMgbm9uLW5pbCwgdGhlbiB0dXJuaW5nIG9uIGBnbG9i YWwtaGlnaGxpZ2h0LWNoYW5nZXMnIHdpbGwgdHVybiBvbgotIEhpZ2hsaWdodCBDaGFuZ2VzIG1v ZGUgaW4gc3VpdGFibGUgYnVmZmVycywgYW5kIHR1cm5pbmcgdGhlIG1vZGUgb2ZmIHdpbGwKLSBy ZW1vdmUgaXQgZnJvbSBleGlzdGluZyBidWZmZXJzLiIKLSAgIDp0eXBlICdib29sZWFuCi0gICA6 Z3JvdXAgJ2hpZ2hsaWdodC1jaGFuZ2VzKQogIAogIChkZWZ1biBoaWxpdC1jaGctY3VzdC1maXgt Y2hhbmdlcy1mYWNlLWxpc3QgKHcgd2MgJm9wdGlvbmFsIGV2ZW50KQogICAgOzsgV2hlbiBjdXN0 b21pemF0aW9uIGZ1bmN0aW9uIGBoaWdobGlnaHQtY2hhbmdlcy1mYWNlLWxpc3QnIGluc2VydHMg YSBuZXcKLS0tIDMwNSwzMTAgLS0tLQoqKioqKioqKioqKioqKioKKioqIDM5OCw0MDMgKioqKgot LS0gMzY3LDM4NCAtLS0tCiAgCSAgKQogICAgOmdyb3VwICdoaWdobGlnaHQtY2hhbmdlcykKICAK KyAoZGVmdmFyIGhpZ2hsaWdodC1jaGFuZ2VzLXZpc2libGUtcCB0CisgICAiKlRoaXMgY29udHJv bHMgdGhlIGFwcGVhcmFuY2Ugb2YgY2hhbmdlcyB3aGVuIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUg aXMgb24uCisgSWYgbm9uLW5pbCwgdGhlIGNoYW5nZXMgYXJlIGRpc3BsYXllZCB1c2luZyBkaXN0 aW5jdGl2ZSBmYWNlcy4KKyAKKyBUaGlzIHZhcmlhYmxlIGlzIGJ1ZmZlci1sb2NhbCB3aGVuIHNl dC4KKyAKKyBEbyBub3Qgc2V0IHRoaXMgdmFyaWFibGUgZGlyZWN0bHkuICBJbnN0ZWFkLCAgdXNl CisgXFxbaGlnaGxpZ2h0LWNoYW5nZXMtdG9nZ2xlLXZpc2liaWxpdHldIHRvIGNoYW5nZSB0aGlz IHZhcmlhYmxlIGluIGEKKyBidWZmZXIsICBvciB1c2UgdGhlIExpc3AgZnVuY3Rpb24gYHNldHEt ZGVmYXVsdCcgdG8gY2hhbmdlIHRoZSBkZWZhdWx0CisgdmFsdWUgdGhhdCBpcyB1c2VkIGZvciBu ZXcgYnVmZmVycyB2aXNpdGVkIHdoZW4gR2xvYmFsIEhpZ2hsaWdodCBDaGFuZ2VzCisgbW9kZSBp cyBhY3RpdmUuIikKKyAKICA7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAKICA7OyBUaGVzZSBzaG91bGRu J3QgYmUgY2hhbmdlZCEKKioqKioqKioqKioqKioqCioqKiA0MDUsNDI5ICoqKioKICAoZGVmdmFy IGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgbmlsKQogIChkZWZ2YXIgaGlsaXQtY2hnLWxpc3Qgbmls KQogIChkZWZ2YXIgaGlsaXQtY2hnLXN0cmluZyAiID8/IikKISAob3IgKGFzc3EgJ2hpZ2hsaWdo dC1jaGFuZ2VzLW1vZGUgbWlub3ItbW9kZS1hbGlzdCkKISAgICAgKHNldHEgbWlub3ItbW9kZS1h bGlzdAohIAkgIChjb25zICcoaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZSBoaWxpdC1jaGctc3RyaW5n KSBtaW5vci1tb2RlLWFsaXN0KQohIAkgICkpCiAgKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2Fs ICdoaWdobGlnaHQtY2hhbmdlcy1tb2RlKQogIChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAn aGlsaXQtY2hnLXN0cmluZykKICAKICAKLSAocmVxdWlyZSAnZWRpZmYtaW5pdCkKLSAocmVxdWly ZSAnZWRpZmYtdXRpbCkKLSAKICAKICA7OzsgRnVuY3Rpb25zLi4uCiAgCiEgKGRlZnVuIGhpbGl0 LWNoZy1tYXAtY2hhbmdlcyAoZnVuYyAmb3B0aW9uYWwgc3RhcnQtcG9zaXRpb24gZW5kLXBvc2l0 aW9uKQohICAgIkNhbGwgZnVuY3Rpb24gRlVOQyBmb3IgZWFjaCByZWdpb24gdXNlZCBieSBIaWdo bGlnaHQgQ2hhbmdlcyBtb2RlLiIKISAgIDs7IGlmIHN0YXJ0LXBvc2l0aW9uIGlzIG5pbCwgKHBv aW50LW1pbikgaXMgdXNlZAohICAgOzsgaWYgZW5kLXBvc2l0aW9uIGlzIG5pbCwgKHBvaW50LW1h eCkgaXMgdXNlZAohICAgOzsgRlVOQyBpcyBjYWxsZWQgd2l0aCAzIHBhcmFtczogcHJvcGVydHkg c3RhcnQgc3RvcAogICAgKGxldCAoKHN0YXJ0IChvciBzdGFydC1wb3NpdGlvbiAocG9pbnQtbWlu KSkpCiAgCShsaW1pdCAob3IgZW5kLXBvc2l0aW9uIChwb2ludC1tYXgpKSkKICAJcHJvcCBlbmQp Ci0tLSAzODYsNDA2IC0tLS0KICAoZGVmdmFyIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgbmlsKQog IChkZWZ2YXIgaGlsaXQtY2hnLWxpc3QgbmlsKQogIChkZWZ2YXIgaGlsaXQtY2hnLXN0cmluZyAi ID8/IikKISAKISAKICAobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ2hpZ2hsaWdodC1jaGFu Z2VzLW1vZGUpCisgKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdoaWdobGlnaHQtY2hhbmdl cy12aXNpYmxlLXApCiAgKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdoaWxpdC1jaGctc3Ry aW5nKQogIAogIAogIAogIDs7OyBGdW5jdGlvbnMuLi4KICAKISAoZGVmdW4gaGlsaXQtY2hnLW1h cC1jaGFuZ2VzICAoZnVuYyAmb3B0aW9uYWwgc3RhcnQtcG9zaXRpb24gZW5kLXBvc2l0aW9uKQoh ICAgIkNhbGwgZnVuY3Rpb24gRlVOQyBmb3IgZWFjaCByZWdpb24gdXNlZCBieSBIaWdobGlnaHQg Q2hhbmdlcyBtb2RlLgohIElmIFNUQVJULVBPU0lUSU9OIGlzIG5pbCwgKHBvaW50LW1pbikgaXMg dXNlZC4KISBJZiBFTkQtUE9TSVRJT04gaXMgbmlsLCAocG9pbnQtbWF4KSBpcyB1c2VkLgohIEZV TkMgaXMgY2FsbGVkIHdpdGggMyBwYXJhbXM6IFBST1BFUlRZIFNUQVJUIFNUT1AuIgogICAgKGxl dCAoKHN0YXJ0IChvciBzdGFydC1wb3NpdGlvbiAocG9pbnQtbWluKSkpCiAgCShsaW1pdCAob3Ig ZW5kLXBvc2l0aW9uIChwb2ludC1tYXgpKSkKICAJcHJvcCBlbmQpCioqKioqKioqKioqKioqKgoq KiogNDM4LDQ0NSAqKioqCiAgKGRlZnVuIGhpbGl0LWNoZy1kaXNwbGF5LWNoYW5nZXMgKCZvcHRp b25hbCBiZWcgZW5kKQogICAgIkRpc3BsYXkgZmFjZSBpbmZvcm1hdGlvbiBmb3IgSGlnaGxpZ2h0 IENoYW5nZXMgbW9kZS4KICAKISBBbiBvdmVybGF5IGNvbnRhaW5pbmcgYSBjaGFuZ2UgZmFjZSBp cyBhZGRlZCBmcm9tIHRoZSBpbmZvcm1hdGlvbgohIGluIHRoZSB0ZXh0IHByb3BlcnR5IG9mIHR5 cGUgYGhpbGl0LWNoZycuCiAgCiAgVGhpcyBpcyB0aGUgb3Bwb3NpdGUgb2YgYGhpbGl0LWNoZy1o aWRlLWNoYW5nZXMnLiIKICAgIChoaWxpdC1jaGctbWFwLWNoYW5nZXMgJ2hpbGl0LWNoZy1tYWtl LW92IGJlZyBlbmQpKQotLS0gNDE1LDQyMiAtLS0tCiAgKGRlZnVuIGhpbGl0LWNoZy1kaXNwbGF5 LWNoYW5nZXMgKCZvcHRpb25hbCBiZWcgZW5kKQogICAgIkRpc3BsYXkgZmFjZSBpbmZvcm1hdGlv biBmb3IgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZS4KICAKISBBbiBvdmVybGF5IGZyb20gQkVHIHRv IEVORCBjb250YWluaW5nIGEgY2hhbmdlIGZhY2UgaXMgYWRkZWQgZnJvbSB0aGUKISBpbmZvcm1h dGlvbiBpbiB0aGUgdGV4dCBwcm9wZXJ0eSBvZiB0eXBlIGBoaWxpdC1jaGcnLgogIAogIFRoaXMg aXMgdGhlIG9wcG9zaXRlIG9mIGBoaWxpdC1jaGctaGlkZS1jaGFuZ2VzJy4iCiAgICAoaGlsaXQt Y2hnLW1hcC1jaGFuZ2VzICdoaWxpdC1jaGctbWFrZS1vdiBiZWcgZW5kKSkKKioqKioqKioqKioq KioqCioqKiA0NDgsNDU1ICoqKioKICAoZGVmdW4gaGlsaXQtY2hnLW1ha2Utb3YgKHByb3Agc3Rh cnQgZW5kKQogICAgKG9yIHByb3AKICAgICAgICAoZXJyb3IgImhpbGl0LWNoZy1tYWtlLW92OiBw cm9wIGlzIG5pbCIpKQohICAgOzsgZm9yIHRoZSByZWdpb24gbWFrZSBjaGFuZ2Ugb3ZlcmxheXMg Y29ycmVzcG9uZGluZyB0bwohICAgOzsgdGhlIHRleHQgcHJvcGVydHkgJ2hpbGl0LWNoZwogICAg KGxldCAoKG92IChtYWtlLW92ZXJsYXkgc3RhcnQgZW5kKSkKICAJZmFjZSkKICAgICAgKGlmIChl cSBwcm9wICdoaWxpdC1jaGctZGVsZXRlKQotLS0gNDI1LDQzMiAtLS0tCiAgKGRlZnVuIGhpbGl0 LWNoZy1tYWtlLW92IChwcm9wIHN0YXJ0IGVuZCkKICAgIChvciBwcm9wCiAgICAgICAgKGVycm9y ICJoaWxpdC1jaGctbWFrZS1vdjogcHJvcCBpcyBuaWwiKSkKISAgIDs7IEZvciB0aGUgcmVnaW9u IGNyZWF0ZSBvdmVybGF5cyB3aXRoIGEgZGlzdGluY2l2ZSBmYWNlCiEgICA7OyBhbmQgdGhlIHRl eHQgcHJvcGVydHkgJ2hpbGl0LWNoZy4KICAgIChsZXQgKChvdiAobWFrZS1vdmVybGF5IHN0YXJ0 IGVuZCkpCiAgCWZhY2UpCiAgICAgIChpZiAoZXEgcHJvcCAnaGlsaXQtY2hnLWRlbGV0ZSkKKioq KioqKioqKioqKioqCioqKiA0NTcsNDYzICoqKioKICAgICAgICAoc2V0cSBmYWNlIChudGggMSAo bWVtYmVyIHByb3AgaGlsaXQtY2hnLWxpc3QpKSkpCiAgICAgIChpZiBmYWNlCiAgCShwcm9nbgoh IAkgIDs7IFdlIG11c3QgbWFyayB0aGUgZmFjZSwgdGhhdCBpcyB0aGUgcHVycG9zZSBvZiB0aGUg b3ZlcmxheQogIAkgIChvdmVybGF5LXB1dCBvdiAnZmFjZSBmYWNlKQogIAkgIDs7IEkgZG9uJ3Qg dGhpbmsgd2UgbmVlZCB0byBzZXQgZXZhcG9yYXRlIHNpbmNlIHdlIHNob3VsZAogIAkgIDs7IGJl IGNvbnRyb2xsaW5nIHRoZW0hCi0tLSA0MzQsNDQwIC0tLS0KICAgICAgICAoc2V0cSBmYWNlIChu dGggMSAobWVtYmVyIHByb3AgaGlsaXQtY2hnLWxpc3QpKSkpCiAgICAgIChpZiBmYWNlCiAgCShw cm9nbgohIAkgIDs7IFdlIG11c3QgbWFyayB0aGUgZmFjZSwgdGhhdCBpcyB0aGUgcHVycG9zZSBv ZiB0aGUgb3ZlcmxheS4KICAJICAob3ZlcmxheS1wdXQgb3YgJ2ZhY2UgZmFjZSkKICAJICA7OyBJ IGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gc2V0IGV2YXBvcmF0ZSBzaW5jZSB3ZSBzaG91bGQKICAJ ICA7OyBiZSBjb250cm9sbGluZyB0aGVtIQoqKioqKioqKioqKioqKioKKioqIDQ3Niw0ODkgKioq KgogIAogIFRoaXMgaXMgdGhlIG9wcG9zaXRlIG9mIGBoaWxpdC1jaGctZGlzcGxheS1jaGFuZ2Vz Jy4iCiAgICAobGV0ICgoc3RhcnQgKG9yIGJlZyAocG9pbnQtbWluKSkpCiEgCShsaW1pdCAob3Ig ZW5kIChwb2ludC1tYXgpKSkKISAJcCBvdikKISAgICAgKHNldHEgcCAob3ZlcmxheXMtaW4gc3Rh cnQgbGltaXQpKQohICAgICAod2hpbGUgcAogICAgICAgIDs7IGRvbid0IGRlbGV0ZSB0aGUgb3Zl cmxheSBpZiBpdCBpc24ndCBvdXJzIQohICAgICAgIChpZiAob3ZlcmxheS1nZXQgKGNhciBwKSAn aGlsaXQtY2hnKQohIAkgIChkZWxldGUtb3ZlcmxheSAoY2FyIHApKSkKISAgICAgICAoc2V0cSBw IChjZHIgcCkpKSkpCiAgCiAgKGRlZnVuIGhpbGl0LWNoZy1maXh1cCAoYmVnIGVuZCkKICAgICJG aXggY2hhbmdlIG92ZXJsYXlzIGluIHJlZ2lvbiBiZXR3ZWVuIEJFRyBhbmQgRU5ELgotLS0gNDUz LDQ2NCAtLS0tCiAgCiAgVGhpcyBpcyB0aGUgb3Bwb3NpdGUgb2YgYGhpbGl0LWNoZy1kaXNwbGF5 LWNoYW5nZXMnLiIKICAgIChsZXQgKChzdGFydCAob3IgYmVnIChwb2ludC1taW4pKSkKISAJKGxp bWl0IChvciBlbmQgKHBvaW50LW1heCkpKSkKISAgICAgKGRvbGlzdCAocCAob3ZlcmxheXMtaW4g c3RhcnQgbGltaXQpKQogICAgICAgIDs7IGRvbid0IGRlbGV0ZSB0aGUgb3ZlcmxheSBpZiBpdCBp c24ndCBvdXJzIQohICAgICAgIChpZiAob3ZlcmxheS1nZXQgcCAnaGlsaXQtY2hnKQohIAkgIChk ZWxldGUtb3ZlcmxheSBwKSkpKSkKISAKICAKICAoZGVmdW4gaGlsaXQtY2hnLWZpeHVwIChiZWcg ZW5kKQogICAgIkZpeCBjaGFuZ2Ugb3ZlcmxheXMgaW4gcmVnaW9uIGJldHdlZW4gQkVHIGFuZCBF TkQuCioqKioqKioqKioqKioqKgoqKiogNDkyLDUwMCAqKioqCiAgdGhlIHRleHQgcHJvcGVydGll cyBvZiB0eXBlIGBoaWxpdC1jaGcnLiIKICAgIDs7IFJlbW92ZSBvciBhbHRlciBvdmVybGF5cyBp biByZWdpb24gYmVnLi5lbmQKICAgIChsZXQgKG92LXN0YXJ0IG92LWVuZAkgcHJvcHMgcSkKLSAg ICAgOzsgdGVtcCBmb3IgZGVidWdnaW5nOgotICAgICA7OyAob3IgKGVxIGhpZ2hsaWdodC1jaGFu Z2VzLW1vZGUgJ2FjdGl2ZSkKLSAgICAgOzsJIChlcnJvciAiaGlsaXQtY2hnLWZpeHVwIGNhbGxl ZCBidXQgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSBub3QgYWN0aXZlIikpCiAgICAgIChkb2xpc3Qg KG92IChvdmVybGF5cy1pbiBiZWcgZW5kKSkKICAgICAgICA7OyBEb24ndCBhbHRlciBvdmVybGF5 cyB0aGF0IGFyZSBub3Qgb3Vycy4KICAgICAgICAod2hlbiAob3ZlcmxheS1nZXQgb3YgJ2hpbGl0 LWNoZykKLS0tIDQ2Nyw0NzIgLS0tLQoqKioqKioqKioqKioqKioKKioqIDU0MSw1NDcgKioqKgog IAkgICh0eXBlICdoaWxpdC1jaGcpCiAgCSAgb2xkKQogICAgICAgIChpZiB1bmRvLWluLXByb2dy ZXNzCiEgCSAgKGlmIChlcSBoaWdobGlnaHQtY2hhbmdlcy1tb2RlICdhY3RpdmUpCiAgCSAgICAg IChoaWxpdC1jaGctZml4dXAgYmVnIGVuZCkpCiAgCShpZiAoYW5kICg9IGJlZyBlbmQpICg+IGxl bmctYmVmb3JlIDApKQogIAkgICAgOzsgZGVsZXRpb24KLS0tIDUxMyw1MjAgLS0tLQogIAkgICh0 eXBlICdoaWxpdC1jaGcpCiAgCSAgb2xkKQogICAgICAgIChpZiB1bmRvLWluLXByb2dyZXNzCiEg CSAgKGlmIChhbmQgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZQohIAkJICAgaGlnaGxpZ2h0LWNoYW5n ZXMtdmlzaWJsZS1wKQogIAkgICAgICAoaGlsaXQtY2hnLWZpeHVwIGJlZyBlbmQpKQogIAkoaWYg KGFuZCAoPSBiZWcgZW5kKSAoPiBsZW5nLWJlZm9yZSAwKSkKICAJICAgIDs7IGRlbGV0aW9uCioq KioqKioqKioqKioqKgoqKiogNTY5LDY4NiAqKioqCiAgCSAgICAgIChwcm9nbgogIAkJKHJlbW92 ZS10ZXh0LXByb3BlcnRpZXMgZW5kICgrIGVuZCAxKSAnKGhpbGl0LWNoZyBuaWwpKQogIAkJKHB1 dC10ZXh0LXByb3BlcnR5IGVuZCAoKyBlbmQgMSkgJ2hpbGl0LWNoZyAnaGlsaXQtY2hnKQohIAkJ KGlmIChlcSBoaWdobGlnaHQtY2hhbmdlcy1tb2RlICdhY3RpdmUpCiAgCQkgICAgKGhpbGl0LWNo Zy1maXh1cCBiZWcgKCsgZW5kIDEpKSkpKSkKICAJKHVubGVzcyBuby1wcm9wZXJ0eS1jaGFuZ2UK ICAJCShwdXQtdGV4dC1wcm9wZXJ0eSBiZWcgZW5kICdoaWxpdC1jaGcgdHlwZSkpCiEgCShpZiAo b3IgKGVxIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgJ2FjdGl2ZSkgbm8tcHJvcGVydHktY2hhbmdl KQogIAkgICAgKGhpbGl0LWNoZy1tYWtlLW92IHR5cGUgYmVnIGVuZCkpKSkpKQogIAohIChkZWZ1 biBoaWxpdC1jaGctc2V0ICh2YWx1ZSkKICAgICJUdXJuIG9uIEhpZ2hsaWdodCBDaGFuZ2VzIG1v ZGUgZm9yIHRoaXMgYnVmZmVyLiIKLSAgIChzZXRxIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgdmFs dWUpCiAgICAocmVtb3ZlLWhvb2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgJ2hpbGl0LWNoZy1z ZXQtZmFjZS1vbi1jaGFuZ2UgdCkKICAgIChoaWxpdC1jaGctbWFrZS1saXN0KQohICAgKGlmIChl cSBoaWdobGlnaHQtY2hhbmdlcy1tb2RlICdhY3RpdmUpCiAgICAgICAgKHByb2duCiEgCShzZXRx IGhpbGl0LWNoZy1zdHJpbmcgaGlnaGxpZ2h0LWNoYW5nZXMtYWN0aXZlLXN0cmluZykKICAJKG9y IGJ1ZmZlci1yZWFkLW9ubHkKICAJICAgIChoaWxpdC1jaGctZGlzcGxheS1jaGFuZ2VzKSkpCiEg ICAgIDs7IG1vZGUgaXMgcGFzc2l2ZQohICAgICAoc2V0cSBoaWxpdC1jaGctc3RyaW5nIGhpZ2hs aWdodC1jaGFuZ2VzLXBhc3NpdmUtc3RyaW5nKQogICAgICAob3IgYnVmZmVyLXJlYWQtb25seQog IAkoaGlsaXQtY2hnLWhpZGUtY2hhbmdlcykpKQogICAgKGZvcmNlLW1vZGUtbGluZS11cGRhdGUp CiEgICAoYWRkLWhvb2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgJ2hpbGl0LWNoZy1zZXQtZmFj ZS1vbi1jaGFuZ2UgbmlsIHQpKQogIAogIChkZWZ1biBoaWxpdC1jaGctY2xlYXIgKCkKICAgICJS ZW1vdmUgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSBmb3IgdGhpcyBidWZmZXIuCiAgVGhpcyByZW1v dmVzIGFsbCBzYXZlZCBjaGFuZ2UgaW5mb3JtYXRpb24uIgogICAgKGlmIGJ1ZmZlci1yZWFkLW9u bHkKICAgICAgICA7OyBXZSBwcmludCB0aGUgYnVmZmVyIG5hbWUgYmVjYXVzZSB0aGlzIGZ1bmN0 aW9uIGNvdWxkIGJlIGNhbGxlZAohICAgICAgIDs7IG9uIG1hbnkgYnVmZmVycyBmcm9tIGBnbG9i YWwtaGlnaGxpZ2h0LWNoYW5nZXMnLgogICAgICAgIChtZXNzYWdlICJDYW5ub3QgcmVtb3ZlIGhp Z2hsaWdodGluZyBmcm9tIHJlYWQtb25seSBtb2RlIGJ1ZmZlciAlcyIKICAJICAgICAgIChidWZm ZXItbmFtZSkpCi0gICAgIChyZW1vdmUtaG9vayAnYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucyAnaGls aXQtY2hnLXNldC1mYWNlLW9uLWNoYW5nZSB0KQogICAgICAobGV0ICgoYWZ0ZXItY2hhbmdlLWZ1 bmN0aW9ucyBuaWwpKQogICAgICAgIChoaWxpdC1jaGctaGlkZS1jaGFuZ2VzKQogICAgICAgICho aWxpdC1jaGctbWFwLWNoYW5nZXMKICAgICAgICAgJyhsYW1iZGEgKHByb3Agc3RhcnQgc3RvcCkK ICAJICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyBzdGFydCBzdG9wICcoaGlsaXQtY2hnIG5pbCkp KSkKISAgICAgICApCiEgICAgIChzZXRxIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgbmlsKQohICAg ICAoZm9yY2UtbW9kZS1saW5lLXVwZGF0ZSkKISAgICAgOzsgSWYgd2UgdHlwZTogIEMtdSAtMSBN LXggaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZQohICAgICA7OyB3ZSB3YW50IHRvIHR1cm4gaXQgb2Zm LCBidXQgaGlsaXQtY2hnLXBvc3QtY29tbWFuZC1ob29rCiEgICAgIDs7IHJ1bnMgYW5kIHRoYXQg dHVybnMgaXQgYmFjayBvbiEKISAgICAgKHJlbW92ZS1ob29rICdwb3N0LWNvbW1hbmQtaG9vayAn aGlsaXQtY2hnLXBvc3QtY29tbWFuZC1ob29rKSkpCiAgCiAgOzs7IyMjYXV0b2xvYWQKISAoZGVm dW4gaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZSAoJm9wdGlvbmFsIGFyZykKISAgICJUb2dnbGUgKG9y IGluaXRpYWxseSBzZXQpIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUuCiAgCiEgV2l0aG91dCBhbiBh cmd1bWVudDoKISAgIElmIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUgaXMgbm90IGVuYWJsZWQsIHRo ZW4gZW5hYmxlIGl0IChpbiBlaXRoZXIgYWN0aXZlCiEgICBvciBwYXNzaXZlIHN0YXRlIGFzIGRl dGVybWluZWQgYnkgdGhlIHZhcmlhYmxlCiEgICBgaGlnaGxpZ2h0LWNoYW5nZXMtaW5pdGlhbC1z dGF0ZScpOyBvdGhlcndpc2UsIHRvZ2dsZSBiZXR3ZWVuIGFjdGl2ZQohICAgYW5kIHBhc3NpdmUg c3RhdGUuCiEgCiEgV2l0aCBhbiBhcmd1bWVudCBBUkc6CiEgICBJZiBBUkcgaXMgcG9zaXRpdmUs IHNldCBzdGF0ZSB0byBhY3RpdmU7CiEgICBJZiBBUkcgaXMgemVybywgc2V0IHN0YXRlIHRvIHBh c3NpdmU7CiEgICBJZiBBUkcgaXMgbmVnYXRpdmUsIGRpc2FibGUgSGlnaGxpZ2h0IENoYW5nZXMg bW9kZSBjb21wbGV0ZWx5LgohIAohIEFjdGl2ZSBzdGF0ZSAgLSBtZWFucyBjaGFuZ2VzIGFyZSBz aG93biBpbiBhIGRpc3RpbmN0aXZlIGZhY2UuCiEgUGFzc2l2ZSBzdGF0ZSAtIG1lYW5zIGNoYW5n ZXMgYXJlIGtlcHQgYW5kIG5ldyBvbmVzIHJlY29yZGVkIGJ1dCBhcmUKISAJCW5vdCBkaXNwbGF5 ZWQgaW4gYSBkaWZmZXJlbnQgZmFjZS4KICAKISBGdW5jdGlvbnM6CiAgXFxbaGlnaGxpZ2h0LWNo YW5nZXMtbmV4dC1jaGFuZ2VdIC0gbW92ZSBwb2ludCB0byBiZWdpbm5pbmcgb2YgbmV4dCBjaGFu Z2UKICBcXFtoaWdobGlnaHQtY2hhbmdlcy1wcmV2aW91cy1jaGFuZ2VdIC0gbW92ZSB0byBiZWdp bm5pbmcgb2YgcHJldmlvdXMgY2hhbmdlCi0gXFxbaGlnaGxpZ2h0LWNvbXBhcmUtd2l0aC1maWxl XSAtIG1hcmsgdGV4dCBhcyBjaGFuZ2VkIGJ5IGNvbXBhcmluZyB0aGlzCi0gCWJ1ZmZlciB3aXRo IHRoZSBjb250ZW50cyBvZiBhIGZpbGUKICBcXFtoaWdobGlnaHQtY2hhbmdlcy1yZW1vdmUtaGln aGxpZ2h0XSAtIHJlbW92ZSB0aGUgY2hhbmdlIGZhY2UgZnJvbSB0aGUgcmVnaW9uCiEgXFxbaGln aGxpZ2h0LWNoYW5nZXMtcm90YXRlLWZhY2VzXSAtIHJvdGF0ZSBkaWZmZXJlbnQgXCJhZ2VzXCIg b2YgY2hhbmdlcyBcCiEgdGhyb3VnaAohIAl2YXJpb3VzIGZhY2VzCiAgCiAgSG9vayB2YXJpYWJs ZXM6CiEgYGhpZ2hsaWdodC1jaGFuZ2VzLWVuYWJsZS1ob29rJyAgLSB3aGVuIGVuYWJsaW5nIEhp Z2hsaWdodCBDaGFuZ2VzIG1vZGUKISBgaGlnaGxpZ2h0LWNoYW5nZXMtdG9nZ2xlLWhvb2snICAt IHdoZW4gZW50ZXJpbmcgYWN0aXZlIG9yIHBhc3NpdmUgc3RhdGUKISBgaGlnaGxpZ2h0LWNoYW5n ZXMtZGlzYWJsZS1ob29rJyAtIHdoZW4gdHVybmluZyBvZmYgSGlnaGxpZ2h0IENoYW5nZXMgbW9k ZSIKISAgIChpbnRlcmFjdGl2ZSAiUCIpCiAgICAoaWYgKG9yIChkaXNwbGF5LWNvbG9yLXApCiAg CSAgKGFuZCAoZmJvdW5kcCAneC1kaXNwbGF5LWdyYXlzY2FsZS1wKSAoeC1kaXNwbGF5LWdyYXlz Y2FsZS1wKSkpCiEgICAgICAgKGxldCAoKHdhcy1vbiBoaWdobGlnaHQtY2hhbmdlcy1tb2RlKQoh IAkgICAgKG5ldy1oaWdobGlnaHQtY2hhbmdlcy1tb2RlCiEgCSAgICAgKGNvbmQKISAJICAgICAg KChudWxsIGFyZykKISAJICAgICAgIDs7IG5vIGFyZyA9PiB0b2dnbGUgKG9yIHNldCB0byBhY3Rp dmUgaW5pdGlhbGx5KQohIAkgICAgICAgKGlmIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUKISAJCSAg IChpZiAoZXEgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZSAnYWN0aXZlKSAncGFzc2l2ZSAnYWN0aXZl KQohIAkJIGhpZ2hsaWdodC1jaGFuZ2VzLWluaXRpYWwtc3RhdGUpKQohIAkgICAgICA7OyBhbiBh cmd1bWVudCBpcyBnaXZlbgohIAkgICAgICAoKGVxIGFyZyAnYWN0aXZlKQohIAkgICAgICAgJ2Fj dGl2ZSkKISAJICAgICAgKChlcSBhcmcgJ3Bhc3NpdmUpCiEgCSAgICAgICAncGFzc2l2ZSkKISAJ ICAgICAgKCg+IChwcmVmaXgtbnVtZXJpYy12YWx1ZSBhcmcpIDApCiEgCSAgICAgICAnYWN0aXZl KQohIAkgICAgICAoKDwgKHByZWZpeC1udW1lcmljLXZhbHVlIGFyZykgMCkKISAJICAgICAgIG5p bCkKISAJICAgICAgKHQKISAJICAgICAgICdwYXNzaXZlKSkpKQohIAkoaWYgbmV3LWhpZ2hsaWdo dC1jaGFuZ2VzLW1vZGUKISAJICAgIDs7IG1vZGUgaXMgdHVybmVkIG9uIC0tIGJ1dCBtYXkgYmUg cGFzc2l2ZQohIAkgICAgKHByb2duCiEgCSAgICAgIChoaWxpdC1jaGctc2V0IG5ldy1oaWdobGln aHQtY2hhbmdlcy1tb2RlKQohIAkgICAgICAob3Igd2FzLW9uCiEgCQkgIDs7IHJ1biBoaWdobGln aHQtY2hhbmdlcy1lbmFibGUtaG9vayBvbmNlCiEgCQkgIChydW4taG9va3MgJ2hpZ2hsaWdodC1j aGFuZ2VzLWVuYWJsZS1ob29rKSkKISAJICAgICAgKHJ1bi1ob29rcyAnaGlnaGxpZ2h0LWNoYW5n ZXMtdG9nZ2xlLWhvb2spKQohIAkgIDs7IG1vZGUgaXMgdHVybmVkIG9mZgohIAkgIChydW4taG9v a3MgJ2hpZ2hsaWdodC1jaGFuZ2VzLWRpc2FibGUtaG9vaykKISAJICAoaGlsaXQtY2hnLWNsZWFy KSkpCiAgICAgIChtZXNzYWdlICJIaWdobGlnaHQgQ2hhbmdlcyBtb2RlIHJlcXVpcmVzIGNvbG9y IG9yIGdyYXlzY2FsZSBkaXNwbGF5IikpKQogIAogIDs7OyMjI2F1dG9sb2FkCi0tLSA1NDIsNjI5 IC0tLS0KICAJICAgICAgKHByb2duCiAgCQkocmVtb3ZlLXRleHQtcHJvcGVydGllcyBlbmQgKCsg ZW5kIDEpICcoaGlsaXQtY2hnIG5pbCkpCiAgCQkocHV0LXRleHQtcHJvcGVydHkgZW5kICgrIGVu ZCAxKSAnaGlsaXQtY2hnICdoaWxpdC1jaGcpCiEgCQkoaWYgaGlnaGxpZ2h0LWNoYW5nZXMtdmlz aWJsZS1wCiAgCQkgICAgKGhpbGl0LWNoZy1maXh1cCBiZWcgKCsgZW5kIDEpKSkpKSkKICAJKHVu bGVzcyBuby1wcm9wZXJ0eS1jaGFuZ2UKICAJCShwdXQtdGV4dC1wcm9wZXJ0eSBiZWcgZW5kICdo aWxpdC1jaGcgdHlwZSkpCiEgCShpZiAob3IgaGlnaGxpZ2h0LWNoYW5nZXMtdmlzaWJsZS1wIG5v LXByb3BlcnR5LWNoYW5nZSkKICAJICAgIChoaWxpdC1jaGctbWFrZS1vdiB0eXBlIGJlZyBlbmQp KSkpKSkKICAKISAoZGVmdW4gaGlsaXQtY2hnLXNldCAoKQogICAgIlR1cm4gb24gSGlnaGxpZ2h0 IENoYW5nZXMgbW9kZSBmb3IgdGhpcyBidWZmZXIuIgogICAgKHJlbW92ZS1ob29rICdhZnRlci1j aGFuZ2UtZnVuY3Rpb25zICdoaWxpdC1jaGctc2V0LWZhY2Utb24tY2hhbmdlIHQpCiAgICAoaGls aXQtY2hnLW1ha2UtbGlzdCkKISAgIChzZXRxIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgdCkKISAg IChpZiBoaWdobGlnaHQtY2hhbmdlcy12aXNpYmxlLXAKISAgICAgICA7OyBjaGFuZ2VzIGFyZSB2 aXNpYmxlCiAgICAgICAgKHByb2duCiEgCShzZXRxIGhpbGl0LWNoZy1zdHJpbmcgaGlnaGxpZ2h0 LWNoYW5nZXMtdmlzaWJsZS1zdHJpbmcpCiAgCShvciBidWZmZXItcmVhZC1vbmx5CiAgCSAgICAo aGlsaXQtY2hnLWRpc3BsYXktY2hhbmdlcykpKQohICAgICA7OyBjaGFuZ2VzIGFyZSBpbnZpc2li bGUKISAgICAgKHNldHEgaGlsaXQtY2hnLXN0cmluZyBoaWdobGlnaHQtY2hhbmdlcy1pbnZpc2li bGUtc3RyaW5nKQogICAgICAob3IgYnVmZmVyLXJlYWQtb25seQogIAkoaGlsaXQtY2hnLWhpZGUt Y2hhbmdlcykpKQogICAgKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpCiEgICA7OyAobWFrZS1sb2Nh bC1ob29rICdhZnRlci1jaGFuZ2UtZnVuY3Rpb25zKQohICAgKGFkZC1ob29rICdhZnRlci1jaGFu Z2UtZnVuY3Rpb25zICdoaWxpdC1jaGctc2V0LWZhY2Utb24tY2hhbmdlIG5pbCB0KQohICAgKHJ1 bi1ob29rcyAnaGlnaGxpZ2h0LWNoYW5nZXMtZW5hYmxlLWhvb2spKQogIAogIChkZWZ1biBoaWxp dC1jaGctY2xlYXIgKCkKICAgICJSZW1vdmUgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSBmb3IgdGhp cyBidWZmZXIuCiAgVGhpcyByZW1vdmVzIGFsbCBzYXZlZCBjaGFuZ2UgaW5mb3JtYXRpb24uIgog ICAgKGlmIGJ1ZmZlci1yZWFkLW9ubHkKICAgICAgICA7OyBXZSBwcmludCB0aGUgYnVmZmVyIG5h bWUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGNvdWxkIGJlIGNhbGxlZAohICAgICAgIDs7IG9uIG1h bnkgYnVmZmVycyBmcm9tIGBnbG9iYWwtaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZScuCiAgICAgICAg KG1lc3NhZ2UgIkNhbm5vdCByZW1vdmUgaGlnaGxpZ2h0aW5nIGZyb20gcmVhZC1vbmx5IG1vZGUg YnVmZmVyICVzIgogIAkgICAgICAgKGJ1ZmZlci1uYW1lKSkKICAgICAgKGxldCAoKGFmdGVyLWNo YW5nZS1mdW5jdGlvbnMgbmlsKSkKICAgICAgICAoaGlsaXQtY2hnLWhpZGUtY2hhbmdlcykKICAg ICAgICAoaGlsaXQtY2hnLW1hcC1jaGFuZ2VzCiAgICAgICAgICcobGFtYmRhIChwcm9wIHN0YXJ0 IHN0b3ApCiAgCSAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgc3RhcnQgc3RvcCAnKGhpbGl0LWNo ZyBuaWwpKSkpCiEgICAgICAgKSkKISAgIChyZW1vdmUtaG9vayAnYWZ0ZXItY2hhbmdlLWZ1bmN0 aW9ucyAnaGlsaXQtY2hnLXNldC1mYWNlLW9uLWNoYW5nZSB0KQohICAgKHNldHEgaGlnaGxpZ2h0 LWNoYW5nZXMtbW9kZSBuaWwpCiEgICAoZm9yY2UtbW9kZS1saW5lLXVwZGF0ZSkKISAgIChydW4t aG9va3MgJ2hpZ2hsaWdodC1jaGFuZ2VzLWRpc2FibGUtaG9vaykpCiAgCiAgOzs7IyMjYXV0b2xv YWQKISAoZGVmaW5lLW1pbm9yLW1vZGUgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZQohICAgIlRvZ2ds ZSBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlLgogIAohIFdpdGggQVJHLCB0dXJuIEhpZ2hsaWdodCBD aGFuZ2VzIG1vZGUgb24gaWYgYW5kIG9ubHkgaWYgYXJnIGlzIHBvc2l0aXZlLgogIAohIEluIEhp Z2hsaWdodCBDaGFuZ2VzIG1vZGUgY2hhbmdlcyBhcmUgcmVjb3JkZWQgd2l0aCBhIHRleHQgcHJv cGVydHkuCiEgTm9ybWFsbHkgdGhleSBhcmUgZGlzcGxheWVkIGluIGEgZGlzdGluY3RpdmUgZmFj ZSwgYnV0IGNvbW1hbmQKISBcXFtoaWdobGlnaHQtY2hhbmdlcy10b2dnbGUtdmlzaWJpbGl0eV0g Y2FuIGJlIHVzZWQgdG8gdG9nZ2xlcyB0aGlzCiEgb24gYW5kIG9mZi4KISAKISBPdGhlciBmdW5j dGlvbnMgZm9yIGJ1ZmZlcnMgaW4gdGhpcyBtb2RlIGluY2x1ZGU6CiAgXFxbaGlnaGxpZ2h0LWNo YW5nZXMtbmV4dC1jaGFuZ2VdIC0gbW92ZSBwb2ludCB0byBiZWdpbm5pbmcgb2YgbmV4dCBjaGFu Z2UKICBcXFtoaWdobGlnaHQtY2hhbmdlcy1wcmV2aW91cy1jaGFuZ2VdIC0gbW92ZSB0byBiZWdp bm5pbmcgb2YgcHJldmlvdXMgY2hhbmdlCiAgXFxbaGlnaGxpZ2h0LWNoYW5nZXMtcmVtb3ZlLWhp Z2hsaWdodF0gLSByZW1vdmUgdGhlIGNoYW5nZSBmYWNlIGZyb20gdGhlIHJlZ2lvbgohIFxcW2hp Z2hsaWdodC1jaGFuZ2VzLXJvdGF0ZS1mYWNlc10gLSByb3RhdGUgZGlmZmVyZW50IFwiYWdlc1wi IG9mIGNoYW5nZXMKISB0aHJvdWdoCXZhcmlvdXMgZmFjZXMuCiEgXFxbaGlnaGxpZ2h0LWNvbXBh cmUtd2l0aC1maWxlXSAtIG1hcmsgdGV4dCBhcyBjaGFuZ2VkIGJ5IGNvbXBhcmluZyB0aGlzCiEg YnVmZmVyIHdpdGggdGhlIGNvbnRlbnRzIG9mIGEgZmlsZQohIFxcW2hpZ2hsaWdodC1jb21wYXJl LWJ1ZmZlcnNdIGhpZ2hsaWdodHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0d28gYnVmZmVycy4KICAK ICBIb29rIHZhcmlhYmxlczoKISBgaGlnaGxpZ2h0LWNoYW5nZXMtZW5hYmxlLWhvb2snOiBjYWxs ZWQgd2hlbiBlbmFibGluZyBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlLgohIGBoaWdobGlnaHQtY2hh bmdlcy1kaXNhYmxlLWhvb2snOiBjYWxsZWQgd2hlbiBkaXNhYmxpbmcgSGlnaGxpZ2h0IENoYW5n ZXMgbW9kZS4iCiEgICBuaWwJCQk7OyBpbml0LXZhbHVlCiEgICBoaWxpdC1jaGctc3RyaW5nCTs7 IGxpZ2h0ZXIKISAgIG5pbAkJCTs7IGtleW1hcAogICAgKGlmIChvciAoZGlzcGxheS1jb2xvci1w KQogIAkgIChhbmQgKGZib3VuZHAgJ3gtZGlzcGxheS1ncmF5c2NhbGUtcCkgKHgtZGlzcGxheS1n cmF5c2NhbGUtcCkpKQohICAgICAgIChpZiBoaWdobGlnaHQtY2hhbmdlcy1tb2RlCiEgCSAgOzsg aXQgaXMgYmVpbmcgdHVybmVkIG9uCiEgCSAgOzsgdGhlIGhvb2sgaGFzIGJlZW4gbW92ZWQgaW50 byBoaWxpdC1jaGctc2V0CiEgCSAgOzsgKHJ1bi1ob29rcyAnaGlnaGxpZ2h0LWNoYW5nZXMtZW5h YmxlLWhvb2spKQohIAkgIChoaWxpdC1jaGctc2V0KQohIAk7OyBtb2RlIGlzIHR1cm5lZCBvZmYK ISAJKGhpbGl0LWNoZy1jbGVhcikpCiAgICAgIChtZXNzYWdlICJIaWdobGlnaHQgQ2hhbmdlcyBt b2RlIHJlcXVpcmVzIGNvbG9yIG9yIGdyYXlzY2FsZSBkaXNwbGF5IikpKQogIAogIDs7OyMjI2F1 dG9sb2FkCioqKioqKioqKioqKioqKgoqKiogNzI1LDczMCAqKioqCi0tLSA2NjgsNjk5IC0tLS0K ICAJICAobWVzc2FnZSAibm8gcHJldmlvdXMgY2hhbmdlIikpKQogICAgICAobWVzc2FnZSAiVGhp cyBidWZmZXIgaXMgbm90IGluIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUuIikpKQogIAorIAorIDs7 OyMjI2F1dG9sb2FkCisgKGRlZnVuIGhpZ2hsaWdodC1jaGFuZ2VzLXRvZ2dsZS12aXNpYmlsaXR5 ICgmb3B0aW9uYWwgYXJnKQorICAgIlRvZ2dsZSB3aGV0aGVyIGNoYW5nZXMgYXJlIHZpc2libGUg aW4gSGlnaGxpZ2h0IENoYW5nZXMgbW9kZXMuCisgV2hpbGUgdGhlIGNoYW5nZXMgYXJlIHN0aWxs IGtlcHQgKGFuZCBuZXcgb25lcyByZWNvcmRlZCkgYXMgbG9uZyBhcworIEhpZ2hsaWdodCBDaGFu Z2VzIG1vZGVzIGlzIG9uLCB0aGVpciBkaXN0aW5jdGl2ZSBkaXNwbGF5IGNhbiBiZQorIHRvZ2ds ZWQgb24gYW5kIG9mZiB1c2luZyB0aGlzIGNvbW1hbmQuICBXaXRoIEFSRywgIGVuYWJsZSB0aGUK KyBkaXN0aW5jdGl2ZSBkaXNwbGF5IGlmIGFuZCBvbmx5IGlmIHRoZSBhcmcgaXMgcG9zaXRpdmUu CisgCisgU2V0IHZhcmlhYmxlIGBoaWdobGlnaHQtY2hhbmdlcy12aXNpYmxlLXAnIGlmIHlvdSB3 YW50IHRvIGNoYW5nZSB0aGUgZGVmYXVsdAorIGJlaGF2aW91ci4KKyAKKyBUaGlzIGNvbW1hbmQg dHVybnMgb24gaGlnaGxpZ2h0LWNoYW5nZXMgbW9kZS4iCisgICAoaW50ZXJhY3RpdmUgIlAiKQor ICAgKGxldCAoKG9sZC12YWx1ZSBoaWdobGlnaHQtY2hhbmdlcy12aXNpYmxlLXApKQorICAgICAo c2V0cSBoaWdobGlnaHQtY2hhbmdlcy12aXNpYmxlLXAKKyAJICAoaWYgKG51bGwgYXJnKQorIAkg ICAgICAobm90IGhpZ2hsaWdodC1jaGFuZ2VzLXZpc2libGUtcCkKKyAJICAgICg+IChwcmVmaXgt bnVtZXJpYy12YWx1ZSBhcmcpIDApKSkKKyAgICAgKHVubGVzcyAoZXEgb2xkLXZhbHVlIGhpZ2hs aWdodC1jaGFuZ2VzLXZpc2libGUtcCkKKyAgICAgICAobWVzc2FnZSAiY2hhbmdlcyB3aWxsIG5v dyBiZSAlcyIKKyAJICAgICAgIChpZiBoaWdobGlnaHQtY2hhbmdlcy12aXNpYmxlLXAgInZpc2li bGUiICJpbnZpc2libGUiKSkKKyAgICAgICAoaGlsaXQtY2hnLXNldCkpCisgICAgICkpCisgCisg CiAgOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAgCiAgKGRlZnVuIGhpbGl0LWNoZy1tYWtlLWxpc3QgKCZv cHRpb25hbCBmb3JjZSkKKioqKioqKioqKioqKioqCioqKiA3NzUsNzgxICoqKioKICAKICA7Ozsj IyNhdXRvbG9hZAogIChkZWZ1biBoaWdobGlnaHQtY2hhbmdlcy1yb3RhdGUtZmFjZXMgKCkKISAg ICJSb3RhdGUgdGhlIGZhY2VzIHVzZWQgYnkgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZS4KICAKICBD dXJyZW50IGNoYW5nZXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgZmFjZSBkZXNjcmliZWQgYnkgdGhl IGZpcnN0IGVsZW1lbnQKICBvZiBgaGlnaGxpZ2h0LWNoYW5nZXMtZmFjZS1saXN0Jywgb25lIGxl dmVsIG9sZGVyIGNoYW5nZXMgYXJlIHNob3duIGluCi0tLSA3NDQsNzUwIC0tLS0KICAKICA7Ozsj IyNhdXRvbG9hZAogIChkZWZ1biBoaWdobGlnaHQtY2hhbmdlcy1yb3RhdGUtZmFjZXMgKCkKISAg ICJSb3RhdGUgdGhlIGZhY2VzIGlmIGluIEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUgYW5kIHRoZSBj aGFuZ2VzIGFyZSB2aXNpYmxlLgogIAogIEN1cnJlbnQgY2hhbmdlcyBhcmUgZGlzcGxheWVkIGlu IHRoZSBmYWNlIGRlc2NyaWJlZCBieSB0aGUgZmlyc3QgZWxlbWVudAogIG9mIGBoaWdobGlnaHQt Y2hhbmdlcy1mYWNlLWxpc3QnLCBvbmUgbGV2ZWwgb2xkZXIgY2hhbmdlcyBhcmUgc2hvd24gaW4K KioqKioqKioqKioqKioqCioqKiA3ODgsNzk2ICoqKioKICAKICAgIFwoYWRkLWhvb2sgJ3dyaXRl LWZpbGUtZnVuY3Rpb25zICdoaWdobGlnaHQtY2hhbmdlcy1yb3RhdGUtZmFjZXMgbmlsIHQpIgog ICAgKGludGVyYWN0aXZlKQohICAgOzsgSWYgbm90IGluIGFjdGl2ZSBtb2RlIGRvIG5vdGhpbmcg YnV0IGRvbid0IGNvbXBsYWluIGJlY2F1c2UgdGhpcwohICAgOzsgbWF5IGJlIGJvdW5kIHRvIGEg aG9vay4KISAgIChpZiAoZXEgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZSAnYWN0aXZlKQogICAgICAg IChsZXQgKChhZnRlci1jaGFuZ2UtZnVuY3Rpb25zIG5pbCkpCiAgCTs7IGVuc3VyZSBoaWxpdC1j aGctbGlzdCBpcyBtYWRlIGFuZCB1cCB0byBkYXRlCiAgCShoaWxpdC1jaGctbWFrZS1saXN0KQot LS0gNzU3LDc2NCAtLS0tCiAgCiAgICBcKGFkZC1ob29rICd3cml0ZS1maWxlLWZ1bmN0aW9ucyAn aGlnaGxpZ2h0LWNoYW5nZXMtcm90YXRlLWZhY2VzIG5pbCB0KSIKICAgIChpbnRlcmFjdGl2ZSkK ISAgIChpZiAoYW5kIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUKISAJICAgaGlnaGxpZ2h0LWNoYW5n ZXMtdmlzaWJsZS1wKQogICAgICAgIChsZXQgKChhZnRlci1jaGFuZ2UtZnVuY3Rpb25zIG5pbCkp CiAgCTs7IGVuc3VyZSBoaWxpdC1jaGctbGlzdCBpcyBtYWRlIGFuZCB1cCB0byBkYXRlCiAgCSho aWxpdC1jaGctbWFrZS1saXN0KQoqKioqKioqKioqKioqKioKKioqIDc5OCw4MDggKioqKgogIAko aGlsaXQtY2hnLWhpZGUtY2hhbmdlcykKICAJOzsgZm9yIGVhY2ggY2hhbmdlIHRleHQgcHJvcGVy dHksIGluY3JlbWVudCBpdAogIAkoaGlsaXQtY2hnLW1hcC1jaGFuZ2VzICdoaWxpdC1jaGctYnVt cC1jaGFuZ2UpCiEgCTs7IGFuZCBkaXNwbGF5IHRoZW0gYWxsIGlmIGFjdGl2ZQohIAkoaWYgKGVx IGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgJ2FjdGl2ZSkKISAJICAgIChoaWxpdC1jaGctZGlzcGxh eS1jaGFuZ2VzKSkpKQohICAgOzsgVGhpcyBhbHdheXMgcmV0dXJucyBuaWwgc28gaXQgaXMgc2Fm ZSB0byB1c2UgaW4gd3JpdGUtZmlsZS1mdW5jdGlvbnMKISAgIG5pbCkKICAKICA7OyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KICA7OyBDb21wYXJpbmcgYnVmZmVycy9maWxlcwotLS0gNzY2LDc3NiAtLS0tCiAg CShoaWxpdC1jaGctaGlkZS1jaGFuZ2VzKQogIAk7OyBmb3IgZWFjaCBjaGFuZ2UgdGV4dCBwcm9w ZXJ0eSwgaW5jcmVtZW50IGl0CiAgCShoaWxpdC1jaGctbWFwLWNoYW5nZXMgJ2hpbGl0LWNoZy1i dW1wLWNoYW5nZSkKISAJOzsgYW5kIGRpc3BsYXkgdGhlbS4KISAJKGhpbGl0LWNoZy1kaXNwbGF5 LWNoYW5nZXMpCiEgCSkpCiEgICAgOzsgVGhpcyBhbHdheXMgcmV0dXJucyBuaWwgc28gaXQgaXMg c2FmZSB0byB1c2UgaW4gd3JpdGUtZmlsZS1mdW5jdGlvbnMKISAgICBuaWwpCiAgCiAgOzsgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAgOzsgQ29tcGFyaW5nIGJ1ZmZlcnMvZmlsZXMKKioqKioqKioqKioqKioq CioqKiA4MTMsODE4ICoqKioKLS0tIDc4MSw3ODggLS0tLQogICAgIkdldCBkaWZmZXJlbmNlcyBi ZXR3ZWVuIHR3byBidWZmZXJzIGFuZCBzZXQgaGlnaGxpZ2h0IGNoYW5nZXMuCiAgQm90aCBidWZm ZXJzIGFyZSBkb25lIHVubGVzcyBvcHRpb25hbCBwYXJhbWV0ZXIgTUFSS1VQLUEtT05MWQogIGlz IG5vbi1uaWwuIgorICAgKGV2YWwtYW5kLWNvbXBpbGUKKyAgICAgKHJlcXVpcmUgJ2VkaWZmLXV0 aWwpKQogICAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAgICAobGV0KiAoY2hhbmdlLWluZm8K ICAJICAgY2hhbmdlLWEgY2hhbmdlLWIKKioqKioqKioqKioqKioqCioqKiA4NDEsODQ5ICoqKioK ICAgICAgICAob3IgZmlsZS1iCiAgCSAgKHNldHEgdGVtcC1iIChzZXRxIGZpbGUtYiAoZWRpZmYt bWFrZS10ZW1wLWZpbGUgYnVmLWIgbmlsKSkpKQogICAgICAgIChzZXQtYnVmZmVyIGJ1Zi1hKQoh ICAgICAgIChoaWdobGlnaHQtY2hhbmdlcy1tb2RlICdhY3RpdmUpCiAgICAgICAgKG9yIG1hcmt1 cC1hLW9ubHkgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmLWIKISAJCQkgIChoaWdobGlnaHQtY2hh bmdlcy1tb2RlICdhY3RpdmUpKSkKICAgICAgICAoc2V0cSBjaGFuZ2UtaW5mbyAoaGlsaXQtY2hn LWdldC1kaWZmLWluZm8gYnVmLWEgZmlsZS1hIGJ1Zi1iIGZpbGUtYikpCiAgCiAgCi0tLSA4MTEs ODE5IC0tLS0KICAgICAgICAob3IgZmlsZS1iCiAgCSAgKHNldHEgdGVtcC1iIChzZXRxIGZpbGUt YiAoZWRpZmYtbWFrZS10ZW1wLWZpbGUgYnVmLWIgbmlsKSkpKQogICAgICAgIChzZXQtYnVmZmVy IGJ1Zi1hKQohICAgICAgIChoaWdobGlnaHQtY2hhbmdlcy1tb2RlIDEpCiAgICAgICAgKG9yIG1h cmt1cC1hLW9ubHkgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmLWIKISAJCQkgIChoaWdobGlnaHQt Y2hhbmdlcy1tb2RlIDEpKSkKICAgICAgICAoc2V0cSBjaGFuZ2UtaW5mbyAoaGlsaXQtY2hnLWdl dC1kaWZmLWluZm8gYnVmLWEgZmlsZS1hIGJ1Zi1iIGZpbGUtYikpCiAgCiAgCioqKioqKioqKioq KioqKgoqKiogOTE3LDkzNiAqKioqCiAgSWYgdGhlIGJ1ZmZlciBpcyByZWFkLW9ubHksIGRpZmZl cmVuY2VzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQgYnV0IG5vIHByb3BlcnR5CiAgY2hhbmdlcyBhcmUg bWFkZSwgc28gXFxbaGlnaGxpZ2h0LWNoYW5nZXMtbmV4dC1jaGFuZ2VdIGFuZAogIFxcW2hpZ2hs aWdodC1jaGFuZ2VzLXByZXZpb3VzLWNoYW5nZV0gd2lsbCBub3Qgd29yay4iCiEgICAoaW50ZXJh Y3RpdmUgKGxpc3QKISAJICAgICAgKHJlYWQtZmlsZS1uYW1lCiEgCSAgICAgICAiRmlsZSB0byBj b21wYXJlIHdpdGg/ICIgOzsgcHJvbXB0CiEgCSAgICAgICAiIgkJCTs7IGRpcmVjdG9yeQohIAkg ICAgICAgbmlsCQkJOzsgZGVmYXVsdAohIAkgICAgICAgJ3llcwkJCTs7IG11c3QgZXhpc3QKISAJ ICAgICAgIChsZXQgKChmIChidWZmZXItZmlsZS1uYW1lIChjdXJyZW50LWJ1ZmZlcikpKSkKISAJ CSAoaWYgZgohIAkJICAgICAocHJvZ24KISAJCSAgICAgICAoc2V0cSBmIChtYWtlLWJhY2t1cC1m aWxlLW5hbWUgZikpCiEgCQkgICAgICAgKG9yIChmaWxlLWV4aXN0cy1wIGYpCiEgCQkJICAgKHNl dHEgZiBuaWwpKSkKISAJCSAgICkKISAJCSBmKSkpKQogICAgKGxldCogKChidWYtYSAoY3VycmVu dC1idWZmZXIpKQogIAkgKGZpbGUtYSAoYnVmZmVyLWZpbGUtbmFtZSkpCiAgCSAoZXhpc3Rpbmct YnVmIChnZXQtZmlsZS1idWZmZXIgZmlsZS1iKSkKLS0tIDg4Nyw5MDkgLS0tLQogIElmIHRoZSBi dWZmZXIgaXMgcmVhZC1vbmx5LCBkaWZmZXJlbmNlcyB3aWxsIGJlIGhpZ2hsaWdodGVkIGJ1dCBu byBwcm9wZXJ0eQogIGNoYW5nZXMgYXJlIG1hZGUsIHNvIFxcW2hpZ2hsaWdodC1jaGFuZ2VzLW5l eHQtY2hhbmdlXSBhbmQKICBcXFtoaWdobGlnaHQtY2hhbmdlcy1wcmV2aW91cy1jaGFuZ2VdIHdp bGwgbm90IHdvcmsuIgohICAgKGludGVyYWN0aXZlCiEgICAgKGxldCAoKGZpbGUgYnVmZmVyLWZp bGUtbmFtZSkKISAJIChmaWxlLW5hbWUgbmlsKQohIAkgKGZpbGUtZGlyIG5pbCkpCiEgICAgICAo YW5kIGZpbGUKISAJICAoc2V0cSBmaWxlLW5hbWUgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmls ZSkKISAJCWZpbGUtZGlyIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKSkKISAgICAgIChzZXRx IGZpbGUtbmFtZSAobWFrZS1iYWNrdXAtZmlsZS1uYW1lIGZpbGUtbmFtZSkpCiEgICAgICAodW5s ZXNzIChmaWxlLWV4aXN0cy1wIGZpbGUtbmFtZSkKISAJICAgICAoc2V0cSBmaWxlLW5hbWUgbmls KSkKISAgICAgIChsaXN0IChyZWFkLWZpbGUtbmFtZQohIAkgICAgIkZpbmQgYWx0ZXJuYXRlIGZp bGU6ICIJOzsgcHJvbXB0CiEgCSAgICBmaWxlLWRpcgkJCTs7IGRpcmVjdG9yeQohIAkgICAgbmls CQkJCTs7IGRlZmF1bHQKISAJICAgIG5pbAkJCQk7OyBleGlzdGluZwohIAkgICAgZmlsZS1uYW1l KQkJCTs7IGluaXRpYWwKISAJICAgKSkpCiAgICAobGV0KiAoKGJ1Zi1hIChjdXJyZW50LWJ1ZmZl cikpCiAgCSAoZmlsZS1hIChidWZmZXItZmlsZS1uYW1lKSkKICAJIChleGlzdGluZy1idWYgKGdl dC1maWxlLWJ1ZmZlciBmaWxlLWIpKQoqKioqKioqKioqKioqKioKKioqIDk5OCwxMTIyICoqKioK ICAgICAgOzsgTm8gcG9pbnQgaW4gcmV0dXJuaW5nIGEgdmFsdWUsIHNpbmNlIHRoaXMgaXMgYSBo b29rIGZ1bmN0aW9uLgogICAgICApKQogIAohIDs7ID09PT09PT09PT09PT09PT09PT09PT09IGF1 dG9tYXRpYyBzdHVmZiA9PT09PT09PT09PT09PQohIAohIDs7IEdsb2JhbCBIaWdobGlnaHQgQ2hh bmdlcyBtb2RlIGlzIG1vZGVsZWQgYWZ0ZXIgR2xvYmFsIEZvbnQtbG9jayBtb2RlLgohIDs7IFRo cmVlIGhvb2tzIGFyZSB1c2VkIHRvIGdhaW4gY29udHJvbC4gIFdoZW4gR2xvYmFsIENoYW5nZXMg TW9kZSBpcwohIDs7IGVuYWJsZWQsIGBmaW5kLWZpbGUtaG9vaycgYW5kIGBjaGFuZ2UtbWFqb3It bW9kZS1ob29rJyBhcmUgc2V0LgohIDs7IGBmaW5kLWZpbGUtaG9vaycgaXMgY2FsbGVkIHdoZW4g dmlzaXRpbmcgYSBmaWxlLCB0aGUgbmV3IG1vZGUgaXMKISA7OyBrbm93biBhdCB0aGlzIHRpbWUu CiEgOzsgYGNoYW5nZS1tYWpvci1tb2RlLWhvb2snIGlzIGNhbGxlZCB3aGVuIGEgYnVmZmVyIGlz IGNoYW5naW5nIG1vZGUuCiEgOzsgVGhpcyBjb3VsZCBiZSBiZWNhdXNlIG9mIGZpbmRpbmcgYSBm aWxlIGluIHdoaWNoIGNhc2UKISA7OyBgZmluZC1maWxlLWhvb2snIGhhcyBhbHJlYWR5IGJlZW4g Y2FsbGVkIGFuZCBoYXMgZG9uZSBpdHMgd29yay4KISA7OyBIb3dldmVyLCBpdCBhbHNvIGNhdGNo ZXMgdGhlIGNhc2Ugd2hlcmUgYSBuZXcgbW9kZSBpcyBiZWluZyBzZXQgYnkKISA7OyB0aGUgdXNl ci4gIEhvd2V2ZXIsIGl0IGlzIGNhbGxlZCBmcm9tIGBraWxsLWFsbC12YXJpYWJsZXMnIGFuZCBh dAohIDs7IHRoaXMgdGltZSB0aGUgbW9kZSBpcyB0aGUgb2xkIG1vZGUsIHdoaWNoIGlzIG5vdCB3 aGF0IHdlIHdhbnQuCiEgOzsgU28sIG91ciBmdW5jdGlvbiB0ZW1wb3JhcmlseSBzZXRzIGBwb3N0 LWNvbW1hbmQtaG9vaycgd2hpY2ggd2lsbAohIDs7IGJlIGNhbGxlZCBhZnRlciB0aGUgYnVmZmVy IGhhcyBiZWVuIGNvbXBsZXRlbHkgc2V0IHVwICh3aXRoIHRoZSBuZXcKISA7OyBtb2RlKS4gIEl0 IHRoZW4gcmVtb3ZlcyB0aGUgYHBvc3QtY29tbWFuZC1ob29rJy4KISA7OyBPbmUgb3RoZXIgd3Jp bmtsZSAtIGV2ZXJ5IE0teCBjb21tYW5kIHJ1bnMgdGhlIGBjaGFuZ2UtbWFqb3ItbW9kZS1ob29r JwohIDs7IHNvIHdlIGlnbm9yZSB0aGlzIGJ5IGV4YW1pbmluZyB0aGUgYnVmZmVyIG5hbWUuCiEg CiEgCiEgKGRlZnVuIGhpbGl0LWNoZy1tYWpvci1tb2RlLWhvb2sgKCkKISAgIChhZGQtaG9vayAn cG9zdC1jb21tYW5kLWhvb2sgJ2hpbGl0LWNoZy1wb3N0LWNvbW1hbmQtaG9vaykpCiEgCiEgKGRl ZnVuIGhpbGl0LWNoZy1wb3N0LWNvbW1hbmQtaG9vayAoKQohICAgOzsgVGhpcyBpcyBjYWxsZWQg YWZ0ZXIgY2hhbmdpbmcgYSBtYWpvciBtb2RlLCBidXQgYWxzbyBhZnRlciBlYWNoCiEgICA7OyBN LXggY29tbWFuZCwgaW4gd2hpY2ggY2FzZSB0aGUgY3VycmVudCBidWZmZXIgaXMgYSBtaW5pYnVm ZmVyLgohICAgOzsgSW4gdGhhdCBjYXNlLCBkbyBub3QgYWN0IG9uIGl0IGhlcmUsIGJ1dCBkb24n dCB0dXJuIGl0IG9mZgohICAgOzsgZWl0aGVyLCB3ZSB3aWxsIGdldCBjYWxsZWQgaGVyZSBhZ2Fp biBzb29uLWFmdGVyLgohICAgOzsgQWxzbywgZG9uJ3QgZW5hYmxlIGl0IGZvciBvdGhlciBzcGVj aWFsIGJ1ZmZlcnMuCiEgICAoaWYgKHN0cmluZy1tYXRjaCAiXlsgKl0iICAoYnVmZmVyLW5hbWUp KQohICAgICAgIG5pbCA7OyAobWVzc2FnZSAiaWdub3JpbmcgdGhpcyBwb3N0LWNvbW1hbmQtaG9v ayIpCiEgICAgIChyZW1vdmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgJ2hpbGl0LWNoZy1wb3N0 LWNvbW1hbmQtaG9vaykKISAgICAgOzsgVGhlIGZvbGxvd2luZyBjaGVjayBpc24ndCBuZWNlc3Nh cnksIHNpbmNlCiEgICAgIDs7IGhpbGl0LWNoZy10dXJuLW9uLW1heWJlIG1ha2VzIHRoaXMgY2hl Y2sgdG9vLgohICAgICAob3IgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZQk7OyBkb24ndCB0dXJuIGl0 IG9uIGlmIGl0IGFscmVhZHkgaXMKISAJKGhpbGl0LWNoZy10dXJuLW9uLW1heWJlIGhpZ2hsaWdo dC1jaGFuZ2VzLWdsb2JhbC1pbml0aWFsLXN0YXRlKSkpKQohIAohIChkZWZ1biBoaWxpdC1jaGct Y2hlY2stZ2xvYmFsICgpCiEgICA7OyBUaGlzIGlzIGNhbGxlZCBmcm9tIHRoZSBmaW5kIGZpbGUg aG9vay4KISAgIChoaWxpdC1jaGctdHVybi1vbi1tYXliZSBoaWdobGlnaHQtY2hhbmdlcy1nbG9i YWwtaW5pdGlhbC1zdGF0ZSkpCiEgCiAgCiAgOzs7IyMjYXV0b2xvYWQKISAoZGVmdW4gZ2xvYmFs LWhpZ2hsaWdodC1jaGFuZ2VzICgmb3B0aW9uYWwgYXJnKQohICAgIlR1cm4gb24gb3Igb2ZmIGds b2JhbCBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlLgohIAohIFdoZW4gY2FsbGVkIGludGVyYWN0aXZl bHk6CiEgLSBpZiBubyBwcmVmaXgsIHRvZ2dsZSBnbG9iYWwgSGlnaGxpZ2h0IENoYW5nZXMgbW9k ZSBvbiBvciBvZmYKISAtIGlmIGNhbGxlZCB3aXRoIGEgcG9zaXRpdmUgcHJlZml4IChvciBqdXN0 IEMtdSkgdHVybiBpdCBvbiBpbiBhY3RpdmUgbW9kZQohIC0gaWYgY2FsbGVkIHdpdGggYSB6ZXJv IHByZWZpeCB0dXJuIGl0IG9uIGluIHBhc3NpdmUgbW9kZQohIC0gaWYgY2FsbGVkIHdpdGggYSBu ZWdhdGl2ZSBwcmVmaXggdHVybiBpdCBvZmYKISAKISBXaGVuIGNhbGxlZCBmcm9tIGEgcHJvZ3Jh bToKISAtIGlmIEFSRyBpcyBuaWwgb3Igb21pdHRlZCwgdHVybiBpdCBvZmYKISAtIGlmIEFSRyBp cyBgYWN0aXZlJywgdHVybiBpdCBvbiBpbiBhY3RpdmUgbW9kZQohIC0gaWYgQVJHIGlzIGBwYXNz aXZlJywgdHVybiBpdCBvbiBpbiBwYXNzaXZlIG1vZGUKISAtIG90aGVyd2lzZSBqdXN0IHR1cm4g aXQgb24KISAKISBXaGVuIGdsb2JhbCBIaWdobGlnaHQgQ2hhbmdlcyBtb2RlIGlzIGVuYWJsZWQs IEhpZ2hsaWdodCBDaGFuZ2VzIG1vZGUgaXMgdHVybmVkCiEgb24gZm9yIGZ1dHVyZSBcInN1aXRh YmxlXCIgYnVmZmVycyAoYW5kIGZvciBcInN1aXRhYmxlXCIgZXhpc3RpbmcgYnVmZmVycyBpZgoh IHZhcmlhYmxlIGBoaWdobGlnaHQtY2hhbmdlcy1nbG9iYWwtY2hhbmdlcy1leGlzdGluZy1idWZm ZXJzJyBpcyBub24tbmlsKS4KISBcIlN1aXRhYmlsaXR5XCIgaXMgZGV0ZXJtaW5lZCBieSB2YXJp YWJsZSBgaGlnaGxpZ2h0LWNoYW5nZXMtZ2xvYmFsLW1vZGVzJy4iCiEgCiEgICAoaW50ZXJhY3Rp dmUKISAgICAobGlzdAohICAgICAoY29uZAohICAgICAgKChudWxsIGN1cnJlbnQtcHJlZml4LWFy ZykKISAgICAgICA7OyBubyBhcmcgPT4gdG9nZ2xlIGl0IG9uL29mZgohICAgICAgIChzZXRxIGds b2JhbC1oaWdobGlnaHQtY2hhbmdlcyAobm90IGdsb2JhbC1oaWdobGlnaHQtY2hhbmdlcykpKQoh ICAgICAgOzsgcG9zaXRpdmUgaW50ZXJhY3RpdmUgYXJnIC0gdHVybiBpdCBvbiBhcyBhY3RpdmUK ISAgICAgICgoPiAocHJlZml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSAwKQoh ICAgICAgIChzZXRxIGdsb2JhbC1oaWdobGlnaHQtY2hhbmdlcyB0KQohICAgICAgICdhY3RpdmUp CiEgICAgICA7OyB6ZXJvIGludGVyYWN0aXZlIGFyZyAtIHR1cm4gaXQgb24gYXMgcGFzc2l2ZQoh ICAgICAgKCg9IChwcmVmaXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpIDApCiEg ICAgICAgKHNldHEgZ2xvYmFsLWhpZ2hsaWdodC1jaGFuZ2VzIHQpCiEgICAgICAgJ3Bhc3NpdmUp CiEgICAgICA7OyBuZWdhdGl2ZSBpbnRlcmFjdGl2ZSBhcmcgLSB0dXJuIGl0IG9mZgohICAgICAg KHQKISAgICAgICAoc2V0cSBnbG9iYWwtaGlnaGxpZ2h0LWNoYW5nZXMgbmlsKQohICAgICAgIG5p bCkpKSkKISAKISAgIChpZiBhcmcKISAgICAgICAocHJvZ24KISAJKGlmIChlcSBhcmcgJ2FjdGl2 ZSkKISAJICAgIChzZXRxIGhpZ2hsaWdodC1jaGFuZ2VzLWdsb2JhbC1pbml0aWFsLXN0YXRlICdh Y3RpdmUpCiEgCSAgKGlmIChlcSBhcmcgJ3Bhc3NpdmUpCiEgCSAgICAgIChzZXRxIGhpZ2hsaWdo dC1jaGFuZ2VzLWdsb2JhbC1pbml0aWFsLXN0YXRlICdwYXNzaXZlKSkpCiEgCShzZXRxIGdsb2Jh bC1oaWdobGlnaHQtY2hhbmdlcyB0KQohIAkobWVzc2FnZSAiVHVybmluZyBPTiBHbG9iYWwgSGln aGxpZ2h0IENoYW5nZXMgbW9kZSBpbiAlcyBzdGF0ZSIKISAJCSBoaWdobGlnaHQtY2hhbmdlcy1n bG9iYWwtaW5pdGlhbC1zdGF0ZSkKISAJOzsgRklYTUU6IE5vdCBzdXJlIHdoYXQgdGhpcyB3YXMg aW50ZW5kZWQgdG8gZG8uICAtLVN0ZWYKISAJOzsgKGFkZC1ob29rICdoaWxpdC1jaGctbWFqb3It bW9kZS1ob29rICdoaWxpdC1jaGctbWFqb3ItbW9kZS1ob29rKQohIAkoYWRkLWhvb2sgJ2ZpbmQt ZmlsZS1ob29rICdoaWxpdC1jaGctY2hlY2stZ2xvYmFsKQohIAkoaWYgaGlnaGxpZ2h0LWNoYW5n ZXMtZ2xvYmFsLWNoYW5nZXMtZXhpc3RpbmctYnVmZmVycwohIAkgICAgKGhpbGl0LWNoZy11cGRh dGUtYWxsLWJ1ZmZlcnMKISAJICAgICBoaWdobGlnaHQtY2hhbmdlcy1nbG9iYWwtaW5pdGlhbC1z dGF0ZSkpKQohIAohICAgICAobWVzc2FnZSAiVHVybmluZyBPRkYgZ2xvYmFsIEhpZ2hsaWdodCBD aGFuZ2VzIG1vZGUiKQohICAgICA7OyBGSVhNRTogTm90IHN1cmUgd2hhdCB0aGlzIHdhcyBpbnRl bmRlZCB0byBkby4gIC0tU3RlZgohICAgICA7OyAocmVtb3ZlLWhvb2sgJ2hpbGl0LWNoZy1tYWpv ci1tb2RlLWhvb2sgJ2hpbGl0LWNoZy1tYWpvci1tb2RlLWhvb2spCiEgICAgIChyZW1vdmUtaG9v ayAncG9zdC1jb21tYW5kLWhvb2sgJ2hpbGl0LWNoZy1wb3N0LWNvbW1hbmQtaG9vaykKISAgICAg KHJlbW92ZS1ob29rICdmaW5kLWZpbGUtaG9vayAnaGlsaXQtY2hnLWNoZWNrLWdsb2JhbCkKISAg ICAgKGlmIGhpZ2hsaWdodC1jaGFuZ2VzLWdsb2JhbC1jaGFuZ2VzLWV4aXN0aW5nLWJ1ZmZlcnMK ISAJKGhpbGl0LWNoZy11cGRhdGUtYWxsLWJ1ZmZlcnMgbmlsKSkpKQohIAohIAohIChkZWZ1biBo aWxpdC1jaGctdHVybi1vbi1tYXliZSAodmFsdWUpCiEgICAiVHVybiBvbiBIaWdobGlnaHQgQ2hh bmdlcyBtb2RlIGlmIGl0IGlzIGFwcHJvcHJpYXRlIGZvciB0aGlzIGJ1ZmZlci4KISAKISBBIGJ1 ZmZlciBpcyBhcHByb3ByaWF0ZSBmb3IgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSBpZiBhbGwgdGhl c2UgYXJlIHRydWU6CiEgLSB0aGUgYnVmZmVyIGlzIG5vdCBhIHNwZWNpYWwgYnVmZmVyIChvbmUg d2hvc2UgbmFtZSBiZWdpbnMgd2l0aAohICAgYConIG9yIGAgJyksCiEgLSB0aGUgYnVmZmVyJ3Mg bW9kZSBpcyBzdWl0YWJsZSBhcyBwZXIgdmFyaWFibGUKISAgIGBoaWdobGlnaHQtY2hhbmdlcy1n bG9iYWwtbW9kZXMnLAohIC0gSGlnaGxpZ2h0IENoYW5nZXMgbW9kZSBpcyBub3QgYWxyZWFkeSBv biBmb3IgdGhpcyBidWZmZXIuCiEgCiEgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgaGls aXQtY2hnLXVwZGF0ZS1hbGwtYnVmZmVycycgb3IKISBmcm9tIGBnbG9iYWwtaGlnaGxpZ2h0LWNo YW5nZXMnIHdoZW4gdHVybmluZyBvbiBnbG9iYWwgSGlnaGxpZ2h0IENoYW5nZXMgbW9kZS4iCiAg ICAob3IgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZQkJCTsgZG8gbm90aGluZyBpZiBhbHJlYWR5IG9u CiAgICAgICAgKGlmCiAgCSAgKGNvbmQKLS0tIDk3MSwxMDEyIC0tLS0KICAgICAgOzsgTm8gcG9p bnQgaW4gcmV0dXJuaW5nIGEgdmFsdWUsIHNpbmNlIHRoaXMgaXMgYSBob29rIGZ1bmN0aW9uLgog ICAgICApKQogIAohIDs7ID09PT09PT09PT09PT09PT09PT09PT09IGdsb2JhbC1oaWdobGlnaHQt Y2hhbmdlcy1tb2RlID09PT09PT09PT09PT09CiAgCiAgOzs7IyMjYXV0b2xvYWQKISAoZGVmaW5l LWdsb2JhbC1taW5vci1tb2RlIGdsb2JhbC1oaWdobGlnaHQtY2hhbmdlcy1tb2RlIGhpZ2hsaWdo dC1jaGFuZ2VzLW1vZGUKISAgIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUtdHVybi1vbgohICAgOnR1 cm4tb2ZmIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUtdHVybi1vZmYpCiEgCiEgKGRlZmluZS1vYnNv bGV0ZS1mdW5jdGlvbi1hbGlhcyAnZ2xvYmFsLWhpZ2hsaWdodC1jaGFuZ2VzCiEgICAnZ2xvYmFs LWhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgIjIyLjEiKQohIAohIChkZWZ2YXIgaGlnaGxpZ2h0LWNo YW5nZXMtbW9kZS10dXJuLW9mZi1mbiBuaWwKISAgICIqSWYgbm9uLW5pbCwgaXRzIHZhbHVlIGlz IGEgZnVuY3Rpb24gdG8gbWF5YmUgdHVybiBvZmYgaGlnaGxpZ2h0IGNoYW5nZXMgbW9kZS4KISBJ dCBpcyBjYWxsZWQgYnkgZ2xvYmFsLWhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgd2hlbiB0aGF0IG1v ZGUgaXMgdHVybmVkIG9mZi4KISBJdCB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBidWZmZXIgdGhh dCBpcyBpbiBoaWdobGlnaHQgY2hhbmdlcyBtb2RlLgohIAohIFRvIHR1cm4gaGlnaGxpZ2h0IGNo YW5nZXMgbW9kZSBvZmYgZm9yIHRoYXQgYnVmZmVyIGl0IHNob3VsZCBjYWxsCiEgCShoaWdobGln aHQtY2hhbmdlcy1tb2RlIC0xKQohIFRvIGxlYXZlIHRoZSBidWZmZXIgaW4gaGlnaGxpZ2h0IGNo YW5nZXMgbW9kZSBpdCBuZWVkIGRvIG5vdGhpbmcuCiEgCiEgRXhhbXBsZTogIHRvIGhhdmUgaXQg bGVhdmUgYWxsIGJ1ZmZlcnMgaW4gaGlnaGxpZ2h0IGNoYW5nZXMgbW9kZToKISAJKGRlZnVuIG5v cCAoKSkKISAJKHNldHEgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZS10dXJuLW9mZi1mbiAnbm9wKQoh IG9yIHVzaW5nIGFuIGFub255bW91cyBmdW5jdGlvbjoKISAJKHNldHEgaGlnaGxpZ2h0LWNoYW5n ZXMtbW9kZS10dXJuLW9mZi1mbiAnKGxhbWJkYSBuaWwpKSIpCiEgCiEgKGRlZnVuIGhpZ2hsaWdo dC1jaGFuZ2VzLW1vZGUtdHVybi1vZmYgKCkKISAgICJUdXJuIG9mZiBIaWdobGlnaHQgQ2hhbmdl cyBtb2RlIGluIGFsbCBidWZmZXJzLgohIElmIHZhcmlhYmxlIGBoaWdobGlnaHQtY2hhbmdlcy1t b2RlLXR1cm4tb2ZmLWZuJyBpcyBub24tbmlsIHRoZW4gdGhhdCBmdW5jdGlvbgohIGlzIGNhbGxl ZDsgIG90aGVyd2lzZSBoaWdobGlnaHQtY2hhbmdlcy1tb2RlIGlzIHR1cm5lZCBvZmYgZGlyZWN0 bHkuIgohICAgKGlmIGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUtdHVybi1vZmYtZm4KISAgICAgICAo ZnVuY2FsbCBoaWdobGlnaHQtY2hhbmdlcy1tb2RlLXR1cm4tb2ZmLWZuKQohICAgICAoaGlnaGxp Z2h0LWNoYW5nZXMtbW9kZSAtMSkpKQohIAohIChkZWZ1biBoaWdobGlnaHQtY2hhbmdlcy1tb2Rl LXR1cm4tb24gKCkKISAgICJTZWUgaWYgaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZSBzaG91bGQgYmUg dHVybmVkIG9uIGZvciB0aGlzIGJ1ZmZlci4KISBUaGlzIGlzIGNhbGxlZCB3aGVuIGdsb2JhbC1o aWdobGlnaHQtY2hhbmdlcy1tb2RlIGlzIHR1cm5lZCBvbi4iCiAgICAob3IgaGlnaGxpZ2h0LWNo YW5nZXMtbW9kZQkJCTsgZG8gbm90aGluZyBpZiBhbHJlYWR5IG9uCiAgICAgICAgKGlmCiAgCSAg KGNvbmQKKioqKioqKioqKioqKioqCioqKiAxMTMyLDExNTkgKioqKgogIAkgICAgIChhbmQKICAJ ICAgICAgKG5vdCAoc3RyaW5nLW1hdGNoICJeWyAqXSIgKGJ1ZmZlci1uYW1lKSkpCiAgCSAgICAg IChidWZmZXItZmlsZS1uYW1lKSkpKQohIAkgIChwcm9nbgohIAkgICAgKGhpbGl0LWNoZy1zZXQg dmFsdWUpCiEgCSAgICAocnVuLWhvb2tzICdoaWdobGlnaHQtY2hhbmdlcy1lbmFibGUtaG9vaykp KSkpCiEgCiEgCiEgKGRlZnVuIGhpbGl0LWNoZy10dXJuLW9mZi1tYXliZSAoKQohICAgKGlmIGhp Z2hsaWdodC1jaGFuZ2VzLW1vZGUKISAgICAgICAocHJvZ24KISAJKHJ1bi1ob29rcyAnaGlnaGxp Z2h0LWNoYW5nZXMtZGlzYWJsZS1ob29rKQohIAkoaGlsaXQtY2hnLWNsZWFyKSkpKQohIAogIAot IChkZWZ1biBoaWxpdC1jaGctdXBkYXRlLWFsbC1idWZmZXJzICh2YWx1ZSkKLSAgIChtYXBjCi0g ICAgKGZ1bmN0aW9uIChsYW1iZGEgKGJ1ZmZlcikKLSAJICAgICAgICh3aXRoLWN1cnJlbnQtYnVm ZmVyIGJ1ZmZlcgotIAkJIChpZiB2YWx1ZQotIAkJICAgICAoaGlsaXQtY2hnLXR1cm4tb24tbWF5 YmUgdmFsdWUpCi0gCQkgICAoaGlsaXQtY2hnLXR1cm4tb2ZmLW1heWJlKSkKLSAJCSApKSkKLSAg ICAoYnVmZmVyLWxpc3QpKQotICAgbmlsKQogIAogIDs7OzsgRGVza3RvcCBzdXBwb3J0LgogIAot LS0gMTAyMiwxMDMwIC0tLS0KICAJICAgICAoYW5kCiAgCSAgICAgIChub3QgKHN0cmluZy1tYXRj aCAiXlsgKl0iIChidWZmZXItbmFtZSkpKQogIAkgICAgICAoYnVmZmVyLWZpbGUtbmFtZSkpKSkK ISAJICAoaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZSAxKSkKISAJKSkKICAKICAKICA7Ozs7IERlc2t0 b3Agc3VwcG9ydC4KICAKKioqKioqKioqKioqKioqCioqKiAxMTYzLDExNjkgKioqKgogICAgIChv ciAoY2RyIChhc3NxICdoaWdobGlnaHQtY2hhbmdlcy1tb2RlIGRlc2t0b3AtYnVmZmVyLWxvY2Fs cykpIDEpKSkKICAKICAoYWRkLXRvLWxpc3QgJ2Rlc2t0b3AtbWlub3ItbW9kZS1oYW5kbGVycwoh ICAgICAgICAgICAgICAnKGhpZ2hsaWdodC1jaGFuZ2VzLW1vZGUgLiBoaWxpdC1jaGctZGVza3Rv cC1yZXN0b3JlKSkKICAKICAoYWRkLXRvLWxpc3QgJ2Rlc2t0b3AtbG9jYWxzLXRvLXNhdmUgJ2hp Z2hsaWdodC1jaGFuZ2VzLW1vZGUpCiAgCi0tLSAxMDM0LDEwNDAgLS0tLQogICAgIChvciAoY2Ry IChhc3NxICdoaWdobGlnaHQtY2hhbmdlcy1tb2RlIGRlc2t0b3AtYnVmZmVyLWxvY2FscykpIDEp KSkKICAKICAoYWRkLXRvLWxpc3QgJ2Rlc2t0b3AtbWlub3ItbW9kZS1oYW5kbGVycwohIAkgICAg ICcoaGlnaGxpZ2h0LWNoYW5nZXMtbW9kZSAuIGhpbGl0LWNoZy1kZXNrdG9wLXJlc3RvcmUpKQog IAogIChhZGQtdG8tbGlzdCAnZGVza3RvcC1sb2NhbHMtdG8tc2F2ZSAnaGlnaGxpZ2h0LWNoYW5n ZXMtbW9kZSkKICAKKioqKioqKioqKioqKioqCioqKiAxMTc0LDExODMgKioqKgogIDs7ICAgKGlu dGVyYWN0aXZlKQogIDs7ICAgKG1lc3NhZ2UgIi0tLSBoaWxpdC1jaGctZGVidWctc2hvdyAtLS0i KQogIDs7ICAgKGhpbGl0LWNoZy1tYXAtY2hhbmdlcyAnKGxhbWJkYSAocHJvcCBzdGFydCBlbmQp CiEgOzsgCQkJICAgICAgKG1lc3NhZ2UgIiVkLSVkOiAlcyIgc3RhcnQgZW5kIHByb3ApCiEgOzsg CQkJICAgICAgKQohIDs7IAkJCSAgIGJlZyBlbmQKISA7OyAJCQkgICApKQogIDs7CiAgOzsgPT09 PT09PT09PT09PT09PT09IGVuZCBvZiBkZWJ1ZyA9PT09PT09PT09PT09PT0KICAKLS0tIDEwNDUs MTA1NCAtLS0tCiAgOzsgICAoaW50ZXJhY3RpdmUpCiAgOzsgICAobWVzc2FnZSAiLS0tIGhpbGl0 LWNoZy1kZWJ1Zy1zaG93IC0tLSIpCiAgOzsgICAoaGlsaXQtY2hnLW1hcC1jaGFuZ2VzICcobGFt YmRhIChwcm9wIHN0YXJ0IGVuZCkKISA7OwkJCSAgICAgIChtZXNzYWdlICIlZC0lZDogJXMiIHN0 YXJ0IGVuZCBwcm9wKQohIDs7CQkJICAgICAgKQohIDs7CQkJICAgYmVnIGVuZAohIDs7CQkJICAg KSkKICA7OwogIDs7ID09PT09PT09PT09PT09PT09PSBlbmQgb2YgZGVidWcgPT09PT09PT09PT09 PT09CiAgCg== --QzTXHeOXML Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit they need this change to emacs-lisp/easy-mmode.el --QzTXHeOXML Content-Type: application/octet-stream Content-Description: lisp/emacs-lisp/easy-mmode.el.cdif Content-Disposition: attachment; filename="easy-mmode.el.cdif" Content-Transfer-Encoding: base64 KioqIGVhc3ktbW1vZGUuZWwub3JpZwlUaHUgQXVnIDMxIDE5OjE0OjI2IDIwMDYKLS0tIGVhc3kt bW1vZGUuZWwJV2VkIERlYyAgNiAyMDo0NjoxNCAyMDA2CioqKioqKioqKioqKioqKgoqKiogMjc5 LDI5MCAqKioqCiAgICBhbmQgdGhhdCBzaG91bGQgdHJ5IHRvIHR1cm4gTU9ERSBvbiBpZiBhcHBs aWNhYmxlIGZvciB0aGF0IGJ1ZmZlci4KICBLRVlTIGlzIGEgbGlzdCBvZiBDTC1zdHlsZSBrZXl3 b3JkIGFyZ3VtZW50cy4gIEFzIHRoZSBtaW5vciBtb2RlCiAgICBkZWZpbmVkIGJ5IHRoaXMgZnVu Y3Rpb24gaXMgYWx3YXlzIGdsb2JhbCwgYW55IDpnbG9iYWwga2V5d29yZCBpcwohICAgaWdub3Jl ZC4gIE90aGVyIGtleXdvcmRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBpbiBgZGVmaW5lLW1p bm9yLW1vZGUnLAohICAgd2hpY2ggc2VlLiAgSW4gcGFydGljdWxhciwgOmdyb3VwIHNwZWNpZmll cyB0aGUgY3VzdG9tIGdyb3VwLgohICAgVGhlIG1vc3QgdXNlZnVsIGtleXdvcmRzIGFyZSB0aG9z ZSB0aGF0IGFyZSBwYXNzZWQgb24gdG8gdGhlCiEgICBgZGVmY3VzdG9tJy4gIEl0IG5vcm1hbGx5 IG1ha2VzIG5vIHNlbnNlIHRvIHBhc3MgdGhlIDpsaWdodGVyCiEgICBvciA6a2V5bWFwIGtleXdv cmRzIHRvIGBkZWZpbmUtZ2xvYmFsLW1pbm9yLW1vZGUnLCBzaW5jZSB0aGVzZQohICAgYXJlIHVz dWFsbHkgcGFzc2VkIHRvIHRoZSBidWZmZXItbG9jYWwgdmVyc2lvbiBvZiB0aGUgbWlub3IgbW9k ZS4KICAKICBJZiBNT0RFJ3Mgc2V0LXVwIGRlcGVuZHMgb24gdGhlIG1ham9yIG1vZGUgaW4gZWZm ZWN0IHdoZW4gaXQgd2FzCiAgZW5hYmxlZCwgdGhlbiBkaXNhYmxpbmcgYW5kIHJlZW5hYmxpbmcg TU9ERSBzaG91bGQgbWFrZSBNT0RFIHdvcmsKLS0tIDI3OSwyOTQgLS0tLQogICAgYW5kIHRoYXQg c2hvdWxkIHRyeSB0byB0dXJuIE1PREUgb24gaWYgYXBwbGljYWJsZSBmb3IgdGhhdCBidWZmZXIu CiAgS0VZUyBpcyBhIGxpc3Qgb2YgQ0wtc3R5bGUga2V5d29yZCBhcmd1bWVudHMuICBBcyB0aGUg bWlub3IgbW9kZQogICAgZGVmaW5lZCBieSB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBnbG9iYWws IGFueSA6Z2xvYmFsIGtleXdvcmQgaXMKISAgIGlnbm9yZWQuICBUaGUgdHVybi1vZmYga2V5d29y ZCBhbGxvd3MgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgdG8KISAgIGNvbmRpdGlvbmFsbHkgdHVy biBvZmYgdGhlIG1vZGUgaW4gYSBidWZmZXIgc2ltaWxhciB0byBUVVJOLU9OOyAgaWYKISAgIG9t aXR0ZWQgdGhlbiB0aGUgbW9kZSBpcyB1bmNvbmRpdGlub2FsbHkgdHVybmVkIG9mZi4gIE90aGVy CiEgICBrZXl3b3JkcyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4gYGRlZmluZS1taW5vci1t b2RlJywgd2hpY2gKISAgIHNlZS4gIEluIHBhcnRpY3VsYXIsCiEgICA6Z3JvdXAgc3BlY2lmaWVz IHRoZSBjdXN0b20gZ3JvdXAuIFRoZSBtb3N0IHVzZWZ1bCBrZXl3b3JkcyBhcmUKISAgIHRob3Nl IHRoYXQgYXJlIHBhc3NlZCBvbiB0byB0aGUgYGRlZmN1c3RvbScuICBJdCBub3JtYWxseSBtYWtl cyBubwohICAgc2Vuc2UgdG8gcGFzcyB0aGUgOmxpZ2h0ZXIgIG9yIDprZXltYXAga2V5d29yZHMg dG8KISAgIGBkZWZpbmUtZ2xvYmFsLW1pbm9yLW1vZGUnLCBzaW5jZSB0aGVzZSBhcmUgdXN1YWxs eSBwYXNzZWQgdG8gdGhlCiEgICBidWZmZXItbG9jYWwgdmVyc2lvbiBvZiB0aGUgbWlub3IgbW9k ZS4KICAKICBJZiBNT0RFJ3Mgc2V0LXVwIGRlcGVuZHMgb24gdGhlIG1ham9yIG1vZGUgaW4gZWZm ZWN0IHdoZW4gaXQgd2FzCiAgZW5hYmxlZCwgdGhlbiBkaXNhYmxpbmcgYW5kIHJlZW5hYmxpbmcg TU9ERSBzaG91bGQgbWFrZSBNT0RFIHdvcmsKKioqKioqKioqKioqKioqCioqKiAzMDQsMzA5ICoq KioKLS0tIDMwOCwzMTQgLS0tLQogIAkgIChpbnRlcm4gKGNvbmNhdCBnbG9iYWwtbW9kZS1uYW1l ICItY2hlY2stYnVmZmVycyIpKSkKICAJIChNT0RFLWNtaGggKGludGVybiAoY29uY2F0IGdsb2Jh bC1tb2RlLW5hbWUgIi1jbWhoIikpKQogIAkgKE1PREUtbWFqb3ItbW9kZSAoaW50ZXJuIChjb25j YXQgKHN5bWJvbC1uYW1lIG1vZGUpICItbWFqb3ItbW9kZSIpKSkKKyAJICh0dXJuLW9mZiBuaWwp CiAgCSBrZXl3KQogIAogICAgICA7OyBDaGVjayBrZXlzLgoqKioqKioqKioqKioqKioKKioqIDMx MiwzMTcgKioqKgotLS0gMzE3LDMyMyAtLS0tCiAgICAgICAgKGNhc2Uga2V5dwogIAkoOmdyb3Vw IChzZXRxIGdyb3VwIChuY29uYyBncm91cCAobGlzdCA6Z3JvdXAgKHBvcCBrZXlzKSkpKSkKICAJ KDpnbG9iYWwgKHNldHEga2V5cyAoY2RyIGtleXMpKSkKKyAJKDp0dXJuLW9mZiAoc2V0cSB0dXJu LW9mZiAocG9wIGtleXMpKSkKICAJKHQgKHB1c2gga2V5dyBleHRyYS1rZXl3b3JkcykgKHB1c2gg KHBvcCBrZXlzKSBleHRyYS1rZXl3b3JkcykpKSkKICAKICAgICAgKHVubGVzcyBncm91cAoqKioq KioqKioqKioqKioKKioqIDMyMCwzMzUgKioqKgogIAkgICAgYCg6Z3JvdXAgJywoaW50ZXJuIChy ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKICAJCQkJIi1tb2RlXFwnIiAiIiAoc3ltYm9sLW5hbWUg bW9kZSkpKSkpKQogIAogICAgICBgKHByb2duCiAgICAgICAgIChkZWZ2YXIgLE1PREUtbWFqb3It bW9kZSBuaWwpCiAgICAgICAgIChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnLE1PREUtbWFq b3ItbW9kZSkKICAgICAgICAgOzsgVGhlIGFjdHVhbCBnbG9iYWwgbWlub3ItbW9kZQogICAgICAg ICAoZGVmaW5lLW1pbm9yLW1vZGUgLGdsb2JhbC1tb2RlCiEgCSAsKGZvcm1hdCAiVG9nZ2xlICVz IGluIGV2ZXJ5IGJ1ZmZlci4KICBXaXRoIHByZWZpeCBBUkcsIHR1cm4gJXMgb24gaWYgYW5kIG9u bHkgaWYgQVJHIGlzIHBvc2l0aXZlLgogICVzIGlzIGFjdHVhbGx5IG5vdCB0dXJuZWQgb24gaW4g ZXZlcnkgYnVmZmVyIGJ1dCBvbmx5IGluIHRob3NlCiEgaW4gd2hpY2ggYCVzJyB0dXJucyBpdCBv bi4iCiEgCQkgIHByZXR0eS1uYW1lIHByZXR0eS1nbG9iYWwtbmFtZSBwcmV0dHktbmFtZSB0dXJu LW9uKQogIAkgOmdsb2JhbCB0ICxAZ3JvdXAgLEAobnJldmVyc2UgZXh0cmEta2V5d29yZHMpCiAg CiAgCSA7OyBTZXR1cCBob29rIHRvIGhhbmRsZSBmdXR1cmUgbW9kZSBjaGFuZ2VzIGFuZCBuZXcg YnVmZmVycy4KLS0tIDMyNiwzNDggLS0tLQogIAkgICAgYCg6Z3JvdXAgJywoaW50ZXJuIChyZXBs YWNlLXJlZ2V4cC1pbi1zdHJpbmcKICAJCQkJIi1tb2RlXFwnIiAiIiAoc3ltYm9sLW5hbWUgbW9k ZSkpKSkpKQogIAorICAgICAob3IgdHVybi1vZmYKKyAJKHNldHEgdHVybi1vZmYgYCgsbW9kZSAt MSkpKQogICAgICBgKHByb2duCiAgICAgICAgIChkZWZ2YXIgLE1PREUtbWFqb3ItbW9kZSBuaWwp CiAgICAgICAgIChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnLE1PREUtbWFqb3ItbW9kZSkK ICAgICAgICAgOzsgVGhlIGFjdHVhbCBnbG9iYWwgbWlub3ItbW9kZQogICAgICAgICAoZGVmaW5l LW1pbm9yLW1vZGUgLGdsb2JhbC1tb2RlCiEgCSAsKGNvbmNhdCAoZm9ybWF0IAohIAkgIlRvZ2ds ZSAlcyBpbiBldmVyeSBidWZmZXIuCiAgV2l0aCBwcmVmaXggQVJHLCB0dXJuICVzIG9uIGlmIGFu ZCBvbmx5IGlmIEFSRyBpcyBwb3NpdGl2ZS4KICAlcyBpcyBhY3R1YWxseSBub3QgdHVybmVkIG9u IGluIGV2ZXJ5IGJ1ZmZlciBidXQgb25seSBpbiB0aG9zZQohIGluIHdoaWNoIGAlcycgdHVybnMg aXQgb24iCiEgCSBwcmV0dHktbmFtZSBwcmV0dHktZ2xvYmFsLW5hbWUgcHJldHR5LW5hbWUgdHVy bi1vbikKISAJKGlmIHR1cm4tb2ZmCiEgCSAgICAoZm9ybWF0IAohICIsIGFuZCBpcyBvbmx5IHR1 cm5lZCBvZmYgaW4gdGhvc2UgYnVmZmVycyB3aGVyZSBgJXMnIGRvZXMgc28uIiB0dXJuLW9mZikK ISAJIi4iKSkKICAJIDpnbG9iYWwgdCAsQGdyb3VwICxAKG5yZXZlcnNlIGV4dHJhLWtleXdvcmRz KQogIAogIAkgOzsgU2V0dXAgaG9vayB0byBoYW5kbGUgZnV0dXJlIG1vZGUgY2hhbmdlcyBhbmQg bmV3IGJ1ZmZlcnMuCioqKioqKioqKioqKioqKgoqKiogMzQ2LDM1MiAqKioqCiAgCSA7OyBHbyB0 aHJvdWdoIGV4aXN0aW5nIGJ1ZmZlcnMuCiAgCSAoZG9saXN0IChidWYgKGJ1ZmZlci1saXN0KSkK ICAJICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmCiEgCSAgICAgKGlmICxnbG9iYWwtbW9kZSAo LHR1cm4tb24pICh3aGVuICxtb2RlICgsbW9kZSAtMSkpKSkpKQogIAogICAgICAgICA7OyBBdXRv bG9hZGluZyBkZWZpbmUtZ2xvYmFsLW1pbm9yLW1vZGUgYXV0b2xvYWRzIGV2ZXJ5dGhpbmcKICAg ICAgICAgOzsgdXAtdG8taGVyZS4KLS0tIDM1OSwzNjUgLS0tLQogIAkgOzsgR28gdGhyb3VnaCBl eGlzdGluZyBidWZmZXJzLgogIAkgKGRvbGlzdCAoYnVmIChidWZmZXItbGlzdCkpCiAgCSAgICh3 aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZgohIAkgICAgIChpZiAsZ2xvYmFsLW1vZGUgKCx0dXJuLW9u KSAod2hlbiAsbW9kZSAoLHR1cm4tb2ZmKSkpKSkpCiAgCiAgICAgICAgIDs7IEF1dG9sb2FkaW5n IGRlZmluZS1nbG9iYWwtbWlub3ItbW9kZSBhdXRvbG9hZHMgZXZlcnl0aGluZwogICAgICAgICA7 OyB1cC10by1oZXJlLgo= --QzTXHeOXML Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit and here are the Changelog entries: 2006-12-11 Richard Sharman * easy-mmode.el (define-global-minor-mode): added keyword `turn-off'. * hilit-chg.el (highlight-changes-mode): be more consistent with other minor modes, this function now just toggles. Removed variable highlight-changes-toggle-hook. (highlight-changes-toggle-visibility): new function to allow toggling on/off the visibility of changes (previously done in highlight-changes-mode). (global-highlight-changes-mode): renamed from global-highlight-changes, be more consistent with other modes. (highlight-compare-buffers): new function. --QzTXHeOXML Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel --QzTXHeOXML--