From unknown Fri Jun 20 07:25:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#7946: Referring to a marker changes Emacs' behaviour. Resent-From: Le Wang Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 31 Jan 2011 07:20:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 7946 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 7946@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.12964583598826 (code B ref -1); Mon, 31 Jan 2011 07:20:03 +0000 Received: (at submit) by debbugs.gnu.org; 31 Jan 2011 07:19:19 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Pjo2g-0002IJ-F3 for submit@debbugs.gnu.org; Mon, 31 Jan 2011 02:19:19 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PjnOH-0001Oo-QD for submit@debbugs.gnu.org; Mon, 31 Jan 2011 01:37:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjnWK-0006eF-In for submit@debbugs.gnu.org; Mon, 31 Jan 2011 01:45:53 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_LOW,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([199.232.76.165]:44348) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjnWH-0006bO-7w for submit@debbugs.gnu.org; Mon, 31 Jan 2011 01:45:52 -0500 Received: from [140.186.70.92] (port=52952 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjnWF-00038r-Cs for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 01:45:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjnWD-0006an-L3 for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 01:45:46 -0500 Received: from mail-ey0-f169.google.com ([209.85.215.169]:47012) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjnWC-0006ah-SH for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 01:45:45 -0500 Received: by eyh6 with SMTP id 6so2269676eyh.0 for ; Sun, 30 Jan 2011 22:45:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=8w/J+lauYx7XWRw8EbdzNaKGtBjsCjF9VQXCgOhThlE=; b=C81lIdMswn3XqFLKvhQWpDNW3267KT73N15JnKkau2EGUx4UHHQNncgMtc0iXrGJI3 O/iEU6EDfKwD6FmHcUuSqmf0NtVU8NkbKHD9g4c+CNpUUCene+KpVL4gPxHRiXx2im2E HZE0YY91JFFlJmtcYDxwis0EKCAGcN+1ne15A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=cerWJvWWg4Y+wBWZLhqkSA/dEgqJe/ebEZcW+Fx7ei60dNaXxxalyKTQ/n949JDbxc TlEiTUFiF4BbdeW0vRF0VZsy0znpfx1uTYkhoWl1HpBAoUrNVP8zKgmvHSYFlZBNOblz wXCVkVGMrj/0ENgQSwxX4A7oqUFoHKcPIBXqQ= MIME-Version: 1.0 Received: by 10.14.37.130 with SMTP id y2mr2968707eea.24.1296456343913; Sun, 30 Jan 2011 22:45:43 -0800 (PST) Received: by 10.14.119.11 with HTTP; Sun, 30 Jan 2011 22:45:43 -0800 (PST) Date: Mon, 31 Jan 2011 14:45:43 +0800 Message-ID: From: Le Wang Content-Type: multipart/mixed; boundary=90e6ba5bbb7fd88648049b1ec3b0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.215.169 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 199.232.76.165 X-Mailman-Approved-At: Mon, 31 Jan 2011 02:19:17 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org --90e6ba5bbb7fd88648049b1ec3b0 Content-Type: multipart/alternative; boundary=90e6ba5bbb7fd88640049b1ec3ae --90e6ba5bbb7fd88640049b1ec3ae Content-Type: text/plain; charset=ISO-8859-1 Hi, I found an issue where evaluating this line or not causes Emacs behaviour change: (format "%s" marked-point) "marked-point" is a marker. The bug was found on NTEmacs 23.2.1, reproed on CVS NTEmacs 20110111, and Stephen Berman confirmed it on GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.20.1) of 2011-01-13 on escher "rebox2_bug.el" is attached to this message. Repro-steps: 1. emacs -Q rebox2_bug.el 2. M-x eval-current-buffer 3. C-x b ;; switch to "*scratch*" 4. M-x rebox-mode 5. M-< 6. SPC,SPC ;; space twice 7. C-aC-aC-aC-a ;; notice that the point is stuck at 6 8. C-xb ;; switch to "rebox2_bug.el 9. M-g g 1714 10. C-d ;; uncomment the hack workaround the bug 11. C-M-x ;; reevaluated the function 12. C-x b ;; switch to "*scratch*" 13. C-aC-aC-aC-a ;; notice that the cursor switches between 1 and 6 -- Le --90e6ba5bbb7fd88640049b1ec3ae Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

I found an issue where evaluating this line or not c= auses Emacs behaviour change:

(format "%s" ma= rked-point)

"marked-point= " is a marker. =A0The bug was found on NTEmacs 23.2.1, reproed on CVS = NTEmacs 20110111, and=A0Stephen Berman= =A0confirmed it on=A0GN= U Emacs 24.0.50.1
(i686-pc-linux-gnu, GTK+ Versi= on 2.20.1) of 2011-01-13 on escher

"rebox2_bug.el" is attached to this message.

<= span class=3D"Apple-style-span" style=3D"border-collapse: collapse;">Repro-= steps:
  1. emacs -Q rebox2_bug.el
  2. M-x eval-current-buffer
  3. C-x b<enter> ;; switch to "*scratch*"<= /li>
  4. M-x rebox-mode
  5. M-<
  6. SPC,SPC ;; space twice
  7. C-aC-aC-aC-a ;; notice that the point is stu= ck at 6
  8. C-xb<enter> ;; switch t= o "rebox2_bug.el
  9. M-g g 1714
  10. C-d ;; uncomment the hack workaround the bug
  11. C-M-x ;; reevaluated the function=A0
  12. C-x b<enter> ;; switch to "*scratch*"
  13. C-aC-aC-aC-a ;; notice that the cursor switches between 1 = and 6


--
Le
--90e6ba5bbb7fd88640049b1ec3ae-- --90e6ba5bbb7fd88648049b1ec3b0 Content-Type: application/octet-stream; name="rebox2_bug.el" Content-Disposition: attachment; filename="rebox2_bug.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjl0l4uk0 Ozs7IHJlYm94Mi5lbCAtLS0gSGFuZGxpbmcgb2YgY29tbWVudCBib3hlcyBpbiB2YXJpb3VzIHN0 eWxlcy4KCjs7IEZpbGVuYW1lOiByZWJveDIuZWwKOzsgRGVzY3JpcHRpb246Cjs7IEF1dGhvcjog RnJhbsOnb2lzIFBpbmFyZAo7OyAgICAgICAgIExlIFdhbmcKOzsgTWFpbnRhaW5lcjogTGUgV2Fu ZwoKOzsgQ29weXJpZ2h0IMKpIDIwMTEgTGUgV2FuZwo7OyBDb3B5cmlnaHQgwqkgMTk5MSw5Miw5 Myw5NCw5NSw5Niw5Nyw5OCwwMCBQcm9naWNpZWxzIEJvdXJiZWF1LVBpbmFyZCBpbmMuCjs7IEZy YW7Dp29pcyBQaW5hcmQgPHBpbmFyZEBpcm8udW1vbnRyZWFsLmNhPiwgQXByaWwgMTk5MS4KCjs7 IENyZWF0ZWQ6IE1vbiBKYW4gMTAgMjI6MjI6MzIgMjAxMSAoKzA4MDApCjs7IFZlcnNpb246IDAu Mgo7OyBMYXN0LVVwZGF0ZWQ6IFN1biBKYW4gMzAgMjI6MDI6MTUgMjAxMSAoKzA4MDApCjs7ICAg ICAgICAgICBCeTogTGUgV2FuZwo7OyAgICAgVXBkYXRlICM6IDE3MQo7OyBVUkw6IGh0dHBzOi8v Z2l0aHViLmNvbS9sZXdhbmcvcmVib3gyCjs7IEtleXdvcmRzOgo7OyBDb21wYXRpYmlsaXR5OiBH TlUgRW1hY3MgMjMuMgoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7Owo7OzsgQ29tbWVudGFyeToKCiAgICAgICAg ICAgICAgICAgICAgIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwogICAgICAg ICAgICAgICAgICAgICA7OyBIaSwgSSdtIGEgYm94LiBNeSBzdHlsZSBpcyA1MjUgOzsKICAgICAg ICAgICAgICAgICAgICAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cgo7Ozsg SW5zdGFsbGF0aW9uOgo7Owo7OyAxLiBBZGQgcmVib3gyLmVsIHRvIGEgZGlyZWN0b3J5IGluIHlv dXIgbG9hZC1wYXRoLgo7Owo7OyAyLiBCYXNpYyBpbnN0YWxsIC0gYWRkIHRvIHlvdXIgIi5lbWFj cyI6Cjs7Cjs7ICAgICAocmVxdWlyZSAncmVib3gyKQo7OyAgICAgKGdsb2JhbC1zZXQta2V5IFso bWV0YSBxKV0gJ3JlYm94LWR3aW0tZmlsbCkKOzsgICAgIChnbG9iYWwtc2V0LWtleSBbKHNoaWZ0 IG1ldGEgcSldICdyZWJveC1kd2ltLW5vLWZpbGwpCjs7Cjs7IDMuIEZ1bGwgaW5zdGFsbCAtIHVz ZSBgcmVib3gtbW9kZScgaW4gbWFqb3ItbW9kZSBob29rczoKOzsKOzsgICAgIDs7IHNldHVwIHJl Ym94IGZvciBlbWFjcy1saXNwCjs7ICAgICAoYWRkLWhvb2sgJ2VtYWNzLWxpc3AtbW9kZS1ob29r IChsYW1iZGEgKCkKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSByZWJveC1kZWZhdWx0LXN0eWxlIDUyNSkKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSByZWJveC1uby1ib3gtY29tbWVudC1zdHlsZSA1MjEpCjs7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYm94LW1vZGUgMSkpKQo7Owo7OyAg ICBEZWZhdWx0IGJveGluZyBzdHlsZXMgc2hvdWxkIHdvcmsgZm9yIG1vc3QgcHJvZ3JhbW1pbmcg bW9kZXMsIGhvd2V2ZXIsCjs7ICAgIHlvdSBtYXkgd2FudCB0byBzZXQgdGhlIHN0eWxlIHlvdSBw cmVmZXIgZm9yIGVhY2ggbWFqb3ItbW9kZSBsaWtlIGFib3ZlCjs7Cjs7ICoqIG1pbm9yLW1vZGUg ZmVhdHVyZXMKOzsKOzsgICAtIGF1dG8tZmlsbCBib3hlcwo7OyAgIC0gaHlwZSBmaWxsYWRhcHQK OzsgICAtIG1vdGlvbiAoYmVnaW5uaW5nLW9mLWxpbmUsIGVuZC1vZi1saW5lKSB3aXRoaW4gYm94 Cjs7ICAgLSBTLXJldHVybiByZWJveC1uZXdsaW5lCjs7ICAgLSBraWxsL3lhbmsgKHdpdGhpbiBi b3gpIG9ubHkgdGV4dCwgbm90IGJveCBib3JkZXJzCjs7ICAgLSBtb3ZlIGJveCBieSB1c2luZyBz cGFjZSwgYmFja3NwYWNlIC8gY2VudGVyIHdpdGggTS1jCjs7ICAgICAtIHBvaW50IGhhcyB0byBi ZSB0byB0aGUgbGVmdCBvZiB0aGUgYm9yZGVyCjs7Cjs7Cgo7OzsgSWRlYXMgcmVtb3ZlZCBmcm9t IEZyYW7Dp29pcyBQaW5hcmQncyBvcmlnaW5hbCB2ZXJzaW9uCjs7Cjs7ICogQnVpbGRpbmcgc3R5 bGVzIG9uIHRvcCBvZiBlYWNoIG90aGVyLgo7OwoKOzs7IEZ1dHVyZSBpbXByb3ZlbWVudCBpZGVh czoKOzsKOzsgKiBhbGxvdyBtaXhlZCBib3JkZXJzICItPS09LT0tPS09LSIKOzsgKiBvcHRpbWl6 ZSBmdW5jdGlvbnMgdGhhdCBtb2RpZnkgdGhlIGJveCBjb250ZW50cyBzbyB0aGV5IGRvbid0IHVu YnVpbGQgYW5kCjs7ICAgcmVidWlsZCBib3hlcyBhbGwgdGhlIHRpbWUuCjs7ICogc3R5bGUgc2Vs ZWN0aW9uIGNhbiB1c2Ugc29tZSBraW5kIG9mIG1lbnUgY29tcGxldGlvbiB3aGVyZSBhbGwgc3R5 bGVzIGFyZQo7OyAgIHByZXNlbnRlZCBhbmQgdGhlIHVzZXIgbmF2aWdhdGVzCjs7ICogc3BhY2Ug b24gdGhlIHd3IGJvcmRlciBtb3ZlcyB3aG9sZSBib3ggcmlnaHQsIGJhY2tzcGFjZSBtb3ZlcyBi b3ggbGVmdAo7Owo7Owo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7Cjs7OyBDaGFuZ2UgTG9nOgo7Owo7OyAqIGJl dHRlciBlcnJvciBoYW5kbGluZwo7OyAqIGZpeGVkIGEgZmV3IGJveGluZyBhbmQgdW5ib3hpbmcg Y29ybmVyIGNhc2VzIHdoZXJlIGJveGVzIHdlcmUgbWFsZm9ybWVkCjs7ICogY2hhbmdlZCBob3cg c3BhY2VzIGFyZSBoYW5kbGVkLCByZWJveCB3YXMgdmVyeSBhZ2dyZXNzaXZlIGluIHJlbW92aW5n Cjs7ICAgd2hpdGUgc3BhY2UgaW4gZXZlcnkgZGlyZWN0aW9uLCBhbmQgZXZlbiB3aGVuIGl0IHdh cyBrZWVwaW5nIHNwYWNlcywgaXQKOzsgICB3b3VsZCBkZWxldGUgdGhlbSBhbmQgcmVpbnNlcnQs IHdoaWNoIGtpbGxlZCBhbnkgbWFya2Vycy4KOzsKOzsgICBub3cgc3BhY2VzIGFyZSBwcmVjaW91 cyBhbmQgbmV2ZXIgYWdncmVzc2l2ZWx5IGRlbGV0ZWQuICBVbmJveGluZwo7OyAgIGZvbGxvd2Vk IGJ5IGJveGluZyBpcyBpZGVtcG90ZW50Lgo7OyAqIGluc3RlYWQgb2YgcGFyc2luZyBhIGN1cnJl bnQtcHJlZml4LWFyZyBpbiBjb252b2x1dGVkIHdheXMgYHJlYm94LWVuZ2luZScKOzsgICBhbmQg bW9zdCBvdGhlciBmdW5jdGlvbnMgbm93IHRha2Uga2V5IHBhcmFtZXRlcnMKOzsgKiBpbmNyZWFz ZWQgdGhlIGxlbmdoIG9mIHRoZSBib3ggdGV4dCBpbiB0aGUgYm94IGRlZmluaXRpb24gc28gdGhh dCBsb25nZXIKOzsgICBtZXJnZWQgdG9wIGFuZCBib3R0b20gYm9yZGVycyBjYW4gYmUgc3BlY2lm aWVkLgo7OyAqIGF1dG8tZmlsbGluZwo7OyAqIG1pbm9yLW1vZGUKOzsKOzs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7 Owo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCjs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzCjs7IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgo7Owo7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKOzsgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCjs7IEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IKOzsgbW9yZSBkZXRhaWxzLgo7Owo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwo7OyB3 aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlCjs7IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKOzsgMDIxMTAtMTMwMSwgVVNBLgo7Owo7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Cjs7Cjs7OyBDb2RlOgoKOzssLS0tLQo7O3wgRnJhbsOnb2lzIFBpbmFyZCdzIG9yaWdp bmFsIGNvbW1lbnRhcnkgKHdpdGggbm9uLXJlbGV2YW50IHN0dWZmIHJlbW92ZWQpCjs7YC0tLS0K Cgo7OyBGb3IgY29tbWVudHMgaGVsZCB3aXRoaW4gYm94ZXMsIGl0IGlzIHBhaW5mdWwgdG8gZmls bCBwYXJhZ3JhcGhzLCB3aGlsZQo7OyBzdHJldGNoaW5nIG9yIHNocmlua2luZyB0aGUgc3Vycm91 bmRpbmcgYm94ICJieSBoYW5kIiwgYXMgbmVlZGVkLiAgVGhpcwo7OyBwaWVjZSBvZiBHTlUgRW1h Y3MgTElTUCBjb2RlIGVhc2VzIG15IGxpZmUgb24gdGhpcy4gIEkgZmluZCBvbmx5IGZhaXIsCjs7 IHdoaWxlIGdpdmluZyBhbGwgc291cmNlcyBmb3IgYSBwYWNrYWdlIHVzaW5nIHN1Y2ggYm94ZWQg Y29tbWVudHMsIHRvIGFsc28KOzsgZ2l2ZSB0aGUgbWVhbnMgSSB1c2UgZm9yIG5pY2VseSBtb2Rp ZnlpbmcgY29tbWVudHMuICBTbyBoZXJlIHRoZXkgYXJlIQoKOzsgVGhlIGZ1bmN0aW9uIGByZWJv eC1jb21tZW50JyBhdXRvbWF0aWNhbGx5IGRpc2NvdmVycyB0aGUgZXh0ZW50IG9mIHRoZQo7OyBi b3hlZCBjb21tZW50cyBuZWFyIHRoZSBjdXJzb3IsIHBvc3NpYmx5IHJlZmlsbHMgdGhlIHRleHQs IHRoZW4gYWRqdXN0cyB0aGUKOzsgY29tbWVudCBib3ggc3R5bGUuICBXaGVuIHRoaXMgY29tbWFu ZCBpcyBleGVjdXRlZCwgdGhlIGN1cnNvciBzaG91bGQgYmUKOzsgd2l0aGluIGEgY29tbWVudCwg b3IgZWxzZSBpdCBzaG91bGQgYmUgYmV0d2VlbiB0d28gY29tbWVudHMsIGluIHdoaWNoIGNhc2UK OzsgdGhlIGNvbW1hbmQgYXBwbGllcyB0byB0aGUgbmV4dCBjb21tZW50LiAgVGhlIGZ1bmN0aW9u IGByZWJveC1yZWdpb24nIGRvZXMKOzsgdGhlIHNhbWUsIGV4Y2VwdCB0aGF0IGl0IHRha2VzIHRo ZSBjdXJyZW50IHJlZ2lvbiBhcyBhIGJveGVkIGNvbW1lbnQuICBCb3RoCjs7IGNvbW1hbmRzIG9i ZXkgbnVtZXJpYyBwcmVmaXhlcyB0byBhZGQgb3IgcmVtb3ZlIGEgYm94LCBmb3JjZSBhIHBhcnRp Y3VsYXIKOzsgYm94IHN0eWxlLCBvciB0byBwcmV2ZW50IHJlZmlsbGluZyBvZiB0ZXh0LiAgV2l0 aG91dCBzdWNoIHByZWZpeGVzLCB0aGUKOzsgY29tbWFuZHMgbWF5IGRlZHVjZSB0aGUgY3VycmVu dCBjb21tZW50IGJveCBzdHlsZSBmcm9tIHRoZSBjb21tZW50IGl0c2VsZgo7OyBzbyB0aGUgc3R5 bGUgaXMgcHJlc2VydmVkLiAgQW4gdW5ib3hlZCBjb21tZW50IGlzIG1lcmVseSBvbmUgb2YgYm94 IHN0eWxlcy4KCjs7IEEgc3R5bGUgaXMgaWRlbnRpZmllZCBieSB0aHJlZSBub24temVybyBkaWdp dHMuICBUaGUgX2NvbnZlbnRpb25fIGFib3V0Cjs7IHN0eWxlIG51bWJlcmluZyBpcyBzdWNoIHRo ZSB0aGUgaHVuZHJlZHMgZGlnaXQgcm91Z2hseSByZXByZXNlbnRzIHRoZQo7OyBwcm9ncmFtbWlu ZyBsYW5ndWFnZSwgdGhlIHRlbnMgZGlnaXQgcm91Z2hseSByZXByZXNlbnRzIGEgYm94IHF1YWxp dHkgKG9yCjs7IHdlaWdodCkgYW5kIHRoZSB1bml0cyBkaWdpdCByb3VnaGx5IGEgYm94IHR5cGUg KG9yIGZpZ3VyZSkuICBMYW5ndWFnZSwKOzsgcXVhbGl0eSBhbmQgdHlwZXMgYXJlIGNvbGxlY3Rp dmVseSByZWZlcnJlZCB0byBhcyBzdHlsZSBhdHRyaWJ1dGVzLgoKOzs7OyBDb252ZW50aW9uOgoK OzsgQSBwcm9ncmFtbWluZyBsYW5ndWFnZSBpcyBhc3NvY2lhdGVkIHdpdGggY29tbWVudCBkZWxp bWl0ZXJzLiAgVmFsdWVzIGFyZQo7OyAxMDAgZm9yIG5vbmUgb3IgdW5rbm93biwgMjAwIGZvciBg LyonIGFuZCBgKi8nIGFzIGluIHBsYWluIEMsIDMwMCBmb3IgYC8vJwo7OyBhcyBpbiBDKyssIDQw MCBmb3IgYCMnIGFzIGluIG1vc3Qgc2NyaXB0aW5nIGxhbmd1YWdlcywgNTAwIGZvciBgOycgYXMg aW4KOzsgTElTUCBvciBhc3NlbWJsZXIgYW5kIDYwMCBmb3IgYCUnIGFzIGluIFRlWCBvciBQb3N0 U2NyaXB0LgoKOzsgQm94IHF1YWxpdHkgZGlmZmVycyBhY2NvcmRpbmcgdG8gbGFuZ3VhZ2UuIEZv ciB1bmtub3duIGxhbmd1YWdlcyAoMTAwKSBvcgo7OyBmb3IgdGhlIEMgbGFuZ3VhZ2UgKDIwMCks IHZhbHVlcyBhcmUgMTAgZm9yIHNpbXBsZSwgMjAgZm9yIHJvdW5kZWQsIGFuZCAzMAo7OyBvciA0 MCBmb3Igc3RhcnJlZC4gIFNpbXBsZSBxdWFsaXR5IGJveGVzICgxMCkgdXNlIGNvbW1lbnQgZGVs aW1pdGVycyB0bwo7OyBsZWZ0IGFuZCByaWdodCBvZiBlYWNoIGNvbW1lbnQgbGluZSwgYW5kIGFs c28gZm9yIHRoZSB0b3Agb3IgYm90dG9tIGxpbmUKOzsgd2hlbiBhcHBsaWNhYmxlLiBSb3VuZGVk IHF1YWxpdHkgYm94ZXMgKDIwKSB0cnkgdG8gc3VnZ2VzdCByb3VuZGVkIGNvcm5lcnMKOzsgaW4g Ym94ZXMuICBTdGFycmVkIHF1YWxpdHkgYm94ZXMgKDQwKSBtb3N0bHkgdXNlIGEgbGVmdCBtYXJn aW4gb2YgYXN0ZXJpc2tzCjs7IG9yIFgnZXMsIGFuZCB1c2UgdGhlbSBhbHNvIGluIGJveCBzdXJy b3VuZGluZ3MuICBGb3IgYWxsIG90aGVycyBsYW5ndWFnZXMsCjs7IGJveCBxdWFsaXR5IGluZGlj YXRlcyB0aGUgdGhpY2tuZXNzIGluIGNoYXJhY3RlcnMgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0Cjs7 IHNpZGVzIG9mIHRoZSBib3g6IHZhbHVlcyBhcmUgMTAsIDIwLCAzMCBvciA0MCBmb3IgMSwgMiwg MyBvciA0IGNoYXJhY3RlcnMKOzsgd2lkZS4gIFdpdGggQysrLCBxdWFsaXR5IDEwIGlzIG5vdCB1 c2VmdWwsIHlvdSBzaG91bGQgZm9yY2UgMjAgaW5zdGVhZC4KCjs7IEJveCB0eXBlIHZhbHVlcyBh cmUgMSBmb3IgZnVsbHkgb3BlbmVkIGJveGVzIGZvciB3aGljaCBib3hpbmcgaXMgZG9uZQo7OyBv bmx5IGZvciB0aGUgbGVmdCBhbmQgcmlnaHQgYnV0IG5vdCBmb3IgdG9wIG9yIGJvdHRvbSwgMiBm b3IgaGFsZgo7OyBzaW5nbGUgbGluZWQgYm94ZXMgZm9yIHdoaWNoIGJveGluZyBpcyBkb25lIG9u IGFsbCBzaWRlcyBleGNlcHQgdG9wLAo7OyAzIGZvciBmdWxseSBzaW5nbGUgbGluZWQgYm94ZXMg Zm9yIHdoaWNoIGJveGluZyBpcyBkb25lIG9uIGFsbCBzaWRlcywKOzsgNCBmb3IgaGFsZiBkb3Vi bGUgbGluZWQgYm94ZXMgd2hpY2ggaXMgbGlrZSB0eXBlIDIgYnV0IG1vcmUgYm9sZCwKOzsgb3Ig NSBmb3IgZnVsbHkgZG91YmxlIGxpbmVkIGJveGVzIHdoaWNoIGlzIGxpa2UgdHlwZSAzIGJ1dCBt b3JlIGJvbGQuCgo7OyBUaGUgc3BlY2lhbCBzdHlsZSAyMjEgaXMgZm9yIEMgY29tbWVudHMgYmV0 d2VlbiBhIHNpbmdsZSBvcGVuaW5nIGAvKicgYW5kIGEKOzsgc2luZ2xlIGNsb3NpbmcgYCovJy4g IFRoZSBzcGVjaWFsIHN0eWxlIDExMSBkZWxldGVzIGEgYm94LgoKOzs7OyBIaXN0b3J5OgoKOzsg SSBmaXJzdCBvYnNlcnZlZCByb3VuZGVkIGNvcm5lcnMsIGFzIGluIHN0eWxlIDIyMyBib3hlcywg aW4gY29kZSBmcm9tCjs7IFdhcnJlbiBUdWNrZXIsIGEgcHJldmlvdXMgbWFpbnRhaW5lciBvZiB0 aGUgYHNoYXInIHBhY2thZ2UuICBCZXNpZGVzIHZlcnkKOzsgc3BlY2lhbCBmaWxlcywgSSB3YXMg Y2FyZWZ1bGx5IGF2b2lkaW5nIHRvIHVzZSBzdWNoIGJveGVzIGZvciByZWFsIHdvcmssCjs7IGFz IEkgZm91bmQgdGhlbSBtdWNoIHRvbyBoYXJkIHRvIG1haW50YWluLiAgTXkgZnJpZW5kIFBhdWwg UHJvdm9zdCB3YXMKOzsgd29ya2luZyBhdCBUYWFybmEsIGEgY29tcHV0ZXIgZ3JhcGhpY3MgcGxh Y2UsIHdoaWNoIGhhZCBib3hlcyBhcyBwYXJ0IG9mCjs7IHRoZWlyIGNvZGluZyBzdGFuZGFyZHMu ICBIZSBhc2tlZCB0aGF0IHdlIHRyeSBzb21ldGhpbmcgdG8gZ2V0IG91dCBvZiBoaXMKOzsgbWlz ZXJ5LCBhbmQgdGhpcyBob3cgYHJlYm94LmVsJyB3YXMgb3JpZ2luYWxseSB3cml0dGVuLiAgSSBk aWQgbm90IHBsYW4gdG8KOzsgdXNlIGl0IGZvciBteXNlbGYsIGJ1dCBQYXVsIHdhcyBzbyBlbnRo dXNpYXN0aWMgdGhhdCBJIHRpbWlkbHkgc3RhcnRlZCB0bwo7OyB1c2UgYm94ZXMgaW4gbXkgdGhp bmdzLCB2ZXJ5IGxpdHRsZSBhdCBmaXJzdCwgYnV0IG1vcmUgYW5kIG1vcmUgYXMgdGltZQo7OyBw YXNzZWQsIHlldCBub3QgZnVsbHkgc3VyZSBpdCB3YXMgYSBnb29kIG1vdmUuICBMYXRlciwgbWFu eSBmcmllbmRzCjs7IHNwb250YW5lb3VzbHkgc3RhcnRlZCB0byB1c2UgdGhpcyB0b29sIGZvciBy ZWFsLCBzb21lIGJlaW5nIHZlcnkgc2VyaW91cwo7OyB3b3JrZXJzLiAgVGhpcyBmaW5hbGx5IGNv bnZpbmNlZCBtZSB0aGF0IGJveGVzIGFyZSBhY2NlcHRhYmxlLCBhZnRlciBhbGwuCgwKKHJlcXVp cmUgJ25ld2NvbW1lbnQpCgooZXZhbC13aGVuLWNvbXBpbGUKICAocmVxdWlyZSAnZmlsbGFkYXB0 IG5pbCB0KQogIChyZXF1aXJlICdjbCkpCgo7OyBCb3ggdGVtcGxhdGVzLiAgRmlyc3QgbnVtYmVy IGlzIHN0eWxlLCBzZWNvbmQgaXMgcmVjb2duaXRpb24gd2VpZ2h0LgooZGVmY29uc3QgcmVib3gt dGVtcGxhdGVzCgogIDs7IEdlbmVyaWMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGVtcGxhdGVzLiAg QWRkaW5nIDMwMCByZXBsYWNlcwogIDs7IGA/JyBieSBgLycsIGZvciBDKysgc3R5bGUgY29tbWVu dHMuICBBZGRpbmcgNDAwIHJlcGxhY2VzIGA/JyBieQogIDs7IGAjJywgZm9yIHNjcmlwdGluZyBs YW5ndWFnZXMuICBBZGRpbmcgNTAwIHJlcGxhY2VzIGA/JyBieSAnOycsCiAgOzsgZm9yIExJU1Ag YW5kIGFzc2VtYmxlci4gIEFkZGluZyA2MDAgcmVwbGFjZXMgYD8nIGJ5IGAlJywgZm9yCiAgOzsg VGVYIGFuZCBQb3N0U2NyaXB0LgoKICAnKCgxMCAxMTQKICAgICAgICAiP2JveDEyMzQ1NiIpCgog ICAgKDExIDExNQogICAgICAgICI/IGJveDEyMzQ1NiIpCgogICAgKDEyIDIxNQogICAgICAgICI/ IGJveDEyMzQ1NiA/IgogICAgICAgICI/IC0tLS0tLS0tLSA/IikKCiAgICAoMTMgMzE1CiAgICAg ICAgIj8gLS0tLS0tLS0tID8iCiAgICAgICAgIj8gYm94MTIzNDU2ID8iCiAgICAgICAgIj8gLS0t LS0tLS0tID8iKQoKICAgICgxNCA0MTUKICAgICAgICAiPyBib3gxMjM0NTYgPyIKICAgICAgICAi Pz8/Pz8/Pz8/Pz8/PyIpCgogICAgKDE1IDUxNQogICAgICAgICI/Pz8/Pz8/Pz8/Pz8/IgogICAg ICAgICI/IGJveDEyMzQ1NiA/IgogICAgICAgICI/Pz8/Pz8/Pz8/Pz8/IikKCiAgICAoMjAgMTI0 CiAgICAgICAgIj8/Ym94MTIzNDU2IikKCiAgICAoMjEgMTI1CiAgICAgICAgIj8/IGJveDEyMzQ1 NiIpCgogICAgKDIyIDIyNQogICAgICAgICI/PyBib3gxMjM0NTYgPz8iCiAgICAgICAgIj8/IC0t LS0tLS0tLSA/PyIpCgogICAgKDIzIDMyNQogICAgICAgICI/PyAtLS0tLS0tLS0gPz8iCiAgICAg ICAgIj8/IGJveDEyMzQ1NiA/PyIKICAgICAgICAiPz8gLS0tLS0tLS0tID8/IikKCiAgICAoMjQg NDI1CiAgICAgICAgIj8/IGJveDEyMzQ1NiA/PyIKICAgICAgICAiPz8/Pz8/Pz8/Pz8/Pz8/IikK CiAgICAoMjUgNTI1CiAgICAgICAgIj8/Pz8/Pz8/Pz8/Pz8/PyIKICAgICAgICAiPz8gYm94MTIz NDU2ID8/IgogICAgICAgICI/Pz8/Pz8/Pz8/Pz8/Pz8iKQoKICAgICgzMCAxMzQKICAgICAgICAi Pz8/Ym94MTIzNDU2IikKCiAgICAoMzEgMTM1CiAgICAgICAgIj8/PyBib3gxMjM0NTYiKQoKICAg ICgzMiAyMzUKICAgICAgICAiPz8/IGJveDEyMzQ1NiA/Pz8iCiAgICAgICAgIj8/PyAtLS0tLS0t LS0gPz8/IikKCiAgICAoMzMgMzM1CiAgICAgICAgIj8/PyAtLS0tLS0tLS0gPz8/IgogICAgICAg ICI/Pz8gYm94MTIzNDU2ID8/PyIKICAgICAgICAiPz8/IC0tLS0tLS0tLSA/Pz8iKQoKICAgICgz NCA0MzUKICAgICAgICAiPz8/IGJveDEyMzQ1NiA/Pz8iCiAgICAgICAgIj8/Pz8/Pz8/Pz8/Pz8/ Pz8/IikKCiAgICAoMzUgNTM1CiAgICAgICAgIj8/Pz8/Pz8/Pz8/Pz8/Pz8/IgogICAgICAgICI/ Pz8gYm94MTIzNDU2ID8/PyIKICAgICAgICAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8iKQoKICAgICg0MCAx NDQKICAgICAgICAiPz8/P2JveDEyMzQ1NiIpCgogICAgKDQxIDE0NQogICAgICAgICI/Pz8/IGJv eDEyMzQ1NiIpCgogICAgKDQyIDI0NQogICAgICAgICI/Pz8/IGJveDEyMzQ1NiA/Pz8/IgogICAg ICAgICI/Pz8/IC0tLS0tLS0tLSA/Pz8/IikKCiAgICAoNDMgMzQ1CiAgICAgICAgIj8/Pz8gLS0t LS0tLS0tID8/Pz8iCiAgICAgICAgIj8/Pz8gYm94MTIzNDU2ID8/Pz8iCiAgICAgICAgIj8/Pz8g LS0tLS0tLS0tID8/Pz8iKQoKICAgICg0NCA0NDUKICAgICAgICAiPz8/PyBib3gxMjM0NTYgPz8/ PyIKICAgICAgICAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIpCgogICAgKDQ1IDU0NQogICAgICAgICI/ Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IgogICAgICAgICI/Pz8/IGJveDEyMzQ1NiA/Pz8/IgogICAgICAg ICI/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IikKCiAgICAoNTAgMTU0CiAgICAgICAgIj8/Pz8/Ym94MTIz NDU2IikKCiAgICAoNTEgMTU1CiAgICAgICAgIj8/Pz8/IGJveDEyMzQ1NiIpCgogICAgKDYwIDE2 NAogICAgICAgICI/Pz8/Pz9ib3gxMjM0NTYiKQoKICAgICg2MSAxNjUKICAgICAgICAiPz8/Pz8/ IGJveDEyMzQ1NiIpCgogICAgOzssLS0tLQogICAgOzt8IGJveHF1b3RlIHN0eWxlIGZvciBjb21t ZW50cwogICAgOztgLS0tLQoKICAgICgxNiAxMjYKICAgICAgICAiPywtLS0tIgogICAgICAgICI/ fCBib3gxMjM0NTYiCiAgICAgICAgIj9gLS0tLSIpCgogICAgKDE3IDIyNgogICAgICAgICI/LC0t LS0tLS0tLS0iCiAgICAgICAgIj98IGJveDEyMzQ1NiIKICAgICAgICAiP2AtLS0tLS0tLS0tIikK CiAgICAoMjYgMTM2CiAgICAgICAgIj8/LC0tLS0iCiAgICAgICAgIj8/fCBib3gxMjM0NTYiCiAg ICAgICAgIj8/YC0tLS0iKQoKICAgICgyNyAyMzYKICAgICAgICAiPz8sLS0tLS0tLS0tLSIKICAg ICAgICAiPz98IGJveDEyMzQ1NiIKICAgICAgICAiPz9gLS0tLS0tLS0tLSIpCgoKICAgIDs7OyBU ZXh0IG1vZGUgKG5vbiBwcm9ncmFtbWluZykgdGVtcGxhdGVzLgoKICAgICgxMTEgMTEzCiAgICAg ICAgICJib3gxMjM0NTYiKQoKICAgICgxMTIgMjEzCiAgICAgICAgICJ8IGJveDEyMzQ1NiB8Igog ICAgICAgICAiKy0tLS0tLS0tLS0tKyIpCgogICAgKDExMyAzMTMKICAgICAgICAgIistLS0tLS0t LS0tLSsiCiAgICAgICAgICJ8IGJveDEyMzQ1NiB8IgogICAgICAgICAiKy0tLS0tLS0tLS0tKyIp CgogICAgKDExNCA0MTMKICAgICAgICAgInwgYm94MTIzNDU2IHwiCiAgICAgICAgICIqPT09PT09 PT09PT0qIikKCiAgICAoMTE1IDUxMwogICAgICAgICAiKj09PT09PT09PT09KiIKICAgICAgICAg InwgYm94MTIzNDU2IHwiCiAgICAgICAgICIqPT09PT09PT09PT0qIikKCiAgICAoMTE2IDExNAog ICAgICAgICAiLS0tLS0tLS0tIgogICAgICAgICAiYm94MTIzNDU2IgogICAgICAgICAiLS0tLS0t LS0tIikKCiAgICAoMTIxIDEyMwogICAgICAgICAifCBib3gxMjM0NTYgfCIpCgogICAgKDEyMiAy MjMKICAgICAgICAgInwgYm94MTIzNDU2IHwiCiAgICAgICAgICJgLS0tLS0tLS0tLS0nIikKCiAg ICAoMTIzIDMyMwogICAgICAgICAiLi0tLS0tLS0tLS0tLiIKICAgICAgICAgInwgYm94MTIzNDU2 IHwiCiAgICAgICAgICJgLS0tLS0tLS0tLS0nIikKCiAgICAoMTI0IDQyMwogICAgICAgICAifCBi b3gxMjM0NTYgfCIKICAgICAgICAgIlxcPT09PT09PT09PT0vIikKCiAgICAoMTI1IDUyMwogICAg ICAgICAiLz09PT09PT09PT09XFwiCiAgICAgICAgICJ8IGJveDEyMzQ1NiB8IgogICAgICAgICAi XFw9PT09PT09PT09PS8iKQoKICAgIDs7IGJveHF1b3RlIHN0eWxlCgogICAgKDEyNiAxMjUKICAg ICAgICAgIiwtLS0tIgogICAgICAgICAifCBib3gxMjM0NTYiCiAgICAgICAgICJgLS0tLSIpCgog ICAgKDEyNyAxMjYKICAgICAgICAgIiwtLS0tLS0tLS0tIgogICAgICAgICAifCBib3gxMjM0NTYi CiAgICAgICAgICJgLS0tLS0tLS0tLSIpCgogICAgKDE0MSAxNDMKICAgICAgICAgInwgYm94MTIz NDU2ICIpCgogICAgKDE0MiAyNDMKICAgICAgICAgIiogYm94MTIzNDU2ICoiCiAgICAgICAgICIq KioqKioqKioqKioqIikKCiAgICAoMTQzIDM0MwogICAgICAgICAiKioqKioqKioqKioqKiIKICAg ICAgICAgIiogYm94MTIzNDU2ICoiCiAgICAgICAgICIqKioqKioqKioqKioqIikKCiAgICAoMTQ0 IDQ0MwogICAgICAgICAiWCBib3gxMjM0NTYgWCIKICAgICAgICAgIlhYWFhYWFhYWFhYWFgiKQoK ICAgICgxNDUgNTQzCiAgICAgICAgICJYWFhYWFhYWFhYWFhYIgogICAgICAgICAiWCBib3gxMjM0 NTYgWCIKICAgICAgICAgIlhYWFhYWFhYWFhYWFgiKQoKICAgIDs7IEMgbGFuZ3VhZ2UgdGVtcGxh dGVzLgoKICAgICgyMTEgMTE4CiAgICAgICAgICIvKiBib3gxMjM0NTYgKi8iKQoKICAgICgyMTIg MjE4CiAgICAgICAgICIvKiBib3gxMjM0NTYgKi8iCiAgICAgICAgICIvKiAtLS0tLS0tLS0gKi8i KQoKICAgICgyMTMgMzE4CiAgICAgICAgICIvKiAtLS0tLS0tLS0gKi8iCiAgICAgICAgICIvKiBi b3gxMjM0NTYgKi8iCiAgICAgICAgICIvKiAtLS0tLS0tLS0gKi8iKQoKICAgICgyMTQgNDE4CiAg ICAgICAgICIvKiBib3gxMjM0NTYgKi8iCiAgICAgICAgICIvKiA9PT09PT09PT0gKi8iKQoKICAg ICgyMTUgNTE4CiAgICAgICAgICIvKiA9PT09PT09PT0gKi8iCiAgICAgICAgICIvKiBib3gxMjM0 NTYgKi8iCiAgICAgICAgICIvKiA9PT09PT09PT0gKi8iKQoKICAgICgyMjEgMTI4CiAgICAgICAg ICIvKiIKICAgICAgICAgIiAgIGJveDEyMzQ1NiIKICAgICAgICAgIiAqLyIpCgogICAgKDIyMiAy MjgKICAgICAgICAgIi8qICAgICAgICAgIC4iCiAgICAgICAgICIgfCBib3gxMjM0NTYgfCIKICAg ICAgICAgIiBgLS0tLS0tLS0tLSovIikKCiAgICAoMjIzIDMyOAogICAgICAgICAiLyotLS0tLS0t LS0tLiIKICAgICAgICAgInwgYm94MTIzNDU2IHwiCiAgICAgICAgICJgLS0tLS0tLS0tLSovIikK CiAgICAoMjI0IDQyOAogICAgICAgICAiLyogICAgICAgICAgXFwiCiAgICAgICAgICJ8IGJveDEy MzQ1NiB8IgogICAgICAgICAiXFw9PT09PT09PT09Ki8iKQoKICAgICgyMjUgNTI4CiAgICAgICAg ICIvKj09PT09PT09PT1cXCIKICAgICAgICAgInwgYm94MTIzNDU2IHwiCiAgICAgICAgICJcXD09 PT09PT09PT0qLyIpCgogICAgKDIzMSAxMzgKICAgICAgICAgIi8qIgogICAgICAgICAiIHwgYm94 MTIzNDU2IgogICAgICAgICAiICovIikKCiAgICAoMjMyIDIzOAogICAgICAgICAiLyogICAgICAg ICAgICAgIgogICAgICAgICAiIHwgYm94MTIzNDU2IHwgIgogICAgICAgICAiICotLS0tLS0tLS0t LSovIikKCiAgICAoMjMzIDMzOAogICAgICAgICAiLyotLS0tLS0tLS0tLSogIgogICAgICAgICAi IHwgYm94MTIzNDU2IHwgIgogICAgICAgICAiICotLS0tLS0tLS0tLSovIikKCiAgICAoMjM0IDQz OAogICAgICAgICAiLyogYm94MTIzNDU2ICovIgogICAgICAgICAiLyotLS0tLS0tLS0tLSovIikK CiAgICAoMjM1IDUzOAogICAgICAgICAiLyotLS0tLS0tLS0tLSovIgogICAgICAgICAiLyogYm94 MTIzNDU2ICovIgogICAgICAgICAiLyotLS0tLS0tLS0tLSovIikKCiAgICAoMjQxIDE0OAogICAg ICAgICAiLyoiCiAgICAgICAgICIgKiBib3gxMjM0NTYiCiAgICAgICAgICIgKi8iKQoKICAgICgy NDIgMjQ4CiAgICAgICAgICIvKiAgICAgICAgICAgKiAiCiAgICAgICAgICIgKiBib3gxMjM0NTYg KiAiCiAgICAgICAgICIgKioqKioqKioqKioqKi8iKQoKICAgICgyNDMgMzQ4CiAgICAgICAgICIv KioqKioqKioqKioqKiAiCiAgICAgICAgICIgKiBib3gxMjM0NTYgKiAiCiAgICAgICAgICIgKioq KioqKioqKioqKi8iKQoKICAgICgyNDQgNDQ4CiAgICAgICAgICIvKiBib3gxMjM0NTYgKi8iCiAg ICAgICAgICIvKioqKioqKioqKioqKi8iKQoKICAgICgyNDUgNTQ4CiAgICAgICAgICIvKioqKioq KioqKioqKi8iCiAgICAgICAgICIvKiBib3gxMjM0NTYgKi8iCiAgICAgICAgICIvKioqKioqKioq KioqKi8iKQoKICAgICkpCgoKKGRlZnZhciByZWJveC1kZWZhdWx0LXN0eWxlIDE1CiAgIipQcmVm ZXJyZWQgc3R5bGUgZm9yIGJveCBjb21tZW50cy4gIFRoZSBidWZmZXIncwpgY29tbWVudC1zdGFy dCcgaXMgdXNlZCB3aXRoIHRoaXMgc3R5bGUgdG8gYXJyaXZlIGF0IHRoZSBib3gKc3R5bGUuIikK KG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdyZWJveC1kZWZhdWx0LXN0eWxlKQoKKGRlZnZh ciByZWJveC1zYXZlLWVudi1hbGlzdCBuaWwKICAiYmFja3VwIHZhbHVlIHNhdmVkIGZvciBoZXJl IGZvciBtb2RlIGRlYWN0aXZhdGlvbiIpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAncmVi b3gtc2F2ZS1lbnYtYWxpc3QpCgooZGVmdmFyIHJlYm94LXNhdmUtZW52LXZhcnMKICAnKGNvbW1l bnQtYXV0by1maWxsLW9ubHktY29tbWVudHMKICAgIGF1dG8tZmlsbC1mdW5jdGlvbgogICAgbm9y bWFsLWF1dG8tZmlsbC1mdW5jdGlvbikKICAibGlzdCBvZiB2YXJpYWJsZXMgb3ZlcndyaXR0ZW4g YnkgYHJlYm94LW1vZGUnIHRvIGJlIHNhdmVkLiIpCgooZGVmdmFyIHJlYm94LWRlZmF1bHQtdW5i b3gtc3R5bGUgMTEKICAiKlByZWZlcnJlZCBzdHlsZSBmb3IgdW5ib3hlZCBjb21tZW50cy4iKQoo bWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3JlYm94LWRlZmF1bHQtdW5ib3gtc3R5bGUpCgoo ZGVmZ3JvdXAgcmVib3ggbmlsCiAgInJlYm94LiIKICA6Z3JvdXAgJ2NvbnZlbmllbmNlKQoKKGRl ZmN1c3RvbSByZWJveC1rZWVwLWJsYW5rLWxpbmVzIHQKICAiTm9uLW5pbCBnaXZlcyByZWJveCBw ZXJtaXNzaW9uIHRvIHRydW5jYXRlIGJsYW5rIGxpbmVzIGF0CmJlZ2lubmluZyBvZiBib3gsIGVu ZCwgYW5kIG1vcmUgdGhhbiB0aHJlZSBjb25zZWN1dGl2ZSBibGFuawpsaW5lcyBpbiB0aGUgYm9k eSBvZiBib3guIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdyZWJveCkKCihkZWZjdXN0b20g cmVib3gtbW9kZS1saW5lLXN0cmluZyAiIHJlYm94IgogICIiCiAgOnR5cGUgJ3N0cmluZwogIDpn cm91cCAncmVib3gpCgooZGVmY3VzdG9tIHJlYm94LW5ld2xpbmUtaW5kZW50LWZ1bmN0aW9uLWRl ZmF1bHQgJ2NvbW1lbnQtaW5kZW50LW5ldy1saW5lCiAgImZ1bmN0aW9uIGNhbGxlZCBieSBgcmVi b3gtaW5kZW50LW5ldy1saW5lJyB3aGVuIGRvZXNuJ3Qgc2VlIGEgYm94LiIKICA6Z3JvdXAgJ3Jl Ym94KQoKKGRlZnZhciByZWJveC1uZXdsaW5lLWluZGVudC1mdW5jdGlvbiBuaWwKICAiY2FjaGVk IGZ1bmN0aW9uIGZvciB0aGlzIGJ1ZmZlci4iKQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwg J3JlYm94LW5ld2xpbmUtaW5kZW50LWZ1bmN0aW9uKQoKKGRlZmN1c3RvbSByZWJveC1raWxsLWxp bmUtZnVuY3Rpb24gJ2tpbGwtbGluZQogICJmdW5jdGlvbiBjYWxsZWQgYnkgYHJlYm94LWtpbGwt bGluZScgd2hlbiBubyBib3ggaXMgZm91bmQuIgogIDp0eXBlICdzeW1ib2wKICA6Z3JvdXAgJ3Jl Ym94KQoKKGRlZmN1c3RvbSByZWJveC1raWxsLXJpbmctc2F2ZS1mdW5jdGlvbiAna2lsbC1yaW5n LXNhdmUKICAiZnVuY3Rpb24gY2FsbGVkIGJ5IGByZWJveC1raWxsLXJpbmctc2F2ZScgd2hlbiBu byBib3ggaXMgZm91bmQuIgogIDp0eXBlICdzeW1ib2wKICA6Z3JvdXAgJ3JlYm94KQoKKGRlZmN1 c3RvbSByZWJveC1iZWdpbm5pbmctb2YtbGluZS1mdW5jdGlvbiAnbW92ZS1iZWdpbm5pbmctb2Yt bGluZQogICJmdW5jdGlvbiBjYWxsZWQgYnkgYHJlYm94LWJlZ2lubmluZy1vZi1saW5lJyB3aGVu IG5vIGJveCBpcyBmb3VuZC4iCiAgOnR5cGUgJ3N5bWJvbAogIDpncm91cCAncmVib3gpCgooZGVm Y3VzdG9tIHJlYm94LWVuZC1vZi1saW5lLWZ1bmN0aW9uICdtb3ZlLWVuZC1vZi1saW5lCiAgImZ1 bmN0aW9uIGNhbGxlZCBieSBgcmVib3gtZW5kLW9mLWxpbmUnIHdoZW4gbm8gYm94IGlzIGZvdW5k LiIKICA6dHlwZSAnc3ltYm9sCiAgOmdyb3VwICdyZWJveCkKCihkZWZjdXN0b20gcmVib3gteWFu ay1mdW5jdGlvbiAneWFuawogICJmdW5jdGlvbiBjYWxsZWQgYnkgYHJlYm94LXlhbmsnIHdoZW4g bm8gYm94IGlzIGZvdW5kLiIKICA6dHlwZSAnc3ltYm9sCiAgOmdyb3VwICdyZWJveCkKCihkZWZj dXN0b20gcmVib3gteWFuay1wb3AtZnVuY3Rpb24gJ3lhbmstcG9wCiAgImZ1bmN0aW9uIGNhbGxl ZCBieSBgcmVib3gteWFuay1wb3AnIHdoZW4gbm8gYm94IGlzIGZvdW5kLiIKICA6dHlwZSAnc3lt Ym9sCiAgOmdyb3VwICdyZWJveCkKCihkZWZjdXN0b20gcmVib3gtbmV3bGluZS1pbmRlbnQtZnVu Y3Rpb24tYWxpc3QKICAnKChjLW1vZGUgICAuIGMtaW5kZW50LW5ldy1jb21tZW50LWxpbmUpCiAg ICAoYysrLW1vZGUgLiBjLWluZGVudC1uZXctY29tbWVudC1saW5lKQogICAgKG9yZy1tb2RlIC4g b3JnLXJldHVybi1pbmRlbnQpKQogICJsaXN0IG9mIChtYWpvci1tb2RlIC4gZnVuY3Rpb24pIGZv ciBtYWtpbmcgYSBuZXdsaW5lLgoKVGhlIGZ1bmN0aW9uIHNob3VsZCBtYWtlIGFuZCBpbmRlbnQg YSBuZXcgY29tbWVudC1saW5lIGZvciB0aGUKbW9kZS4gIGBjb21tZW50LWluZGVudC1uZXdsaW5l JyBpcyB0aGUgZGVmYXVsdC4KIgogIDp0eXBlICcoYWxpc3QgOmtleS10eXBlICdzeW1ib2wKICAg ICAgICAgICAgICAgIDp2YWx1ZS10eXBlICdzeW1ib2wpCiAgOmdyb3VwICdyZWJveCkKCihkZWZj dXN0b20gcmVib3gtaHlicmlkLW1ham9yLW1vZGVzCiAgJyhvcmctbW9kZSkKICAiVGV4dCBiYXNl ZCBtYWpvciBtb2RlcyB0aGF0IGFsc28gaGF2ZSBgY29tbWVudC1zdGFydCcgZGVmaW5lZC4KCklu IHRoZXNlIG1vZGVzLCBhdXRvLWZpbGxpbmcgc2hvdWxkIGJlIG9uIGZvciBhbGwgdGV4dC4gIEFu ZApib3hpbmcgc2hvdWxkIHJlY29nbml6ZSBwYXJhZ3JhcGhzIGFzIHdlbGwgYXMgY29tbWVudCBi bG9ja3MuCiIKICA6dHlwZSAnbGlzdAogIDpncm91cCAncmVib3gpCgo7OzsjIyNhdXRvbG9hZAoo ZGVmaW5lLW1pbm9yLW1vZGUgcmVib3gtbW9kZQogICJUb2dnbGUgcmVib3ggbW9kZSBmb3IgbWFu YWdpbmcgdGV4dCBhbmQgY29tbWVudCBib3hlcy4KCjEuIEF1dG8tZmlsbGluZyBpcyBlbmFibGVk LCBhbmQgY29tbWVudCBib3hlcyBhcmUgYXV0by1maWxsZWQuICBhc2QgZiBhc2QgZgoKCgpXaXRo IG5vIGFyZ3VtZW50LCB0aGlzIGNvbW1hbmQgdG9nZ2xlcyB0aGUgbW9kZS4KICBOb24tbnVsbCBw cmVmaXggYXJndW1lbnQgdHVybnMgb24gdGhlIG1vZGUuCiAgTnVsbCBwcmVmaXggYXJndW1lbnQg dHVybnMgb2ZmIHRoZSBtb2RlLgoKWW91IGRvbid0IG5lZWQgdG8gZW5hYmxlIHRoZSBtaW5vciBt b2RlIHRvIHVzZSByZWJveDIKCiIKICA6aW5pdC12YWx1ZSBuaWwKICA6bGlnaHRlciByZWJveC1t b2RlLWxpbmUtc3RyaW5nCiAgOmtleW1hcCAnKChbKHNoaWZ0IHJldHVybildIC4gcmVib3gtaW5k ZW50LW5ldy1saW5lKQogICAgICAgICAgICAoWyhtZXRhIHEpXSAuIHJlYm94LWR3aW0tZmlsbCkK ICAgICAgICAgICAgKFsobWV0YSBRKV0gLiByZWJveC1kd2ltLW5vLWZpbGwpCiAgICAgICAgICAg IChbKGNvbnRyb2wgYSldIC4gcmVib3gtYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgIChb KGNvbnRyb2wgZSldIC4gcmVib3gtZW5kLW9mLWxpbmUpCiAgICAgICAgICAgIChbKGNvbnRyb2wg ayldIC4gcmVib3gta2lsbC1saW5lKQogICAgICAgICAgICAoWyhtZXRhIHcpXSAuIHJlYm94LWtp bGwtcmluZy1zYXZlKQogICAgICAgICAgICAoWyhjb250cm9sIHkpXSAuIHJlYm94LXlhbmspCiAg ICAgICAgICAgIChbKG1ldGEgeSldIC4gcmVib3gteWFuay1wb3ApCiAgICAgICAgICAgIChbKG1l dGEgYyldIC4gcmVib3gtY2VudGVyKQogICAgICAgICAgICAoIiAiIC4gcmVib3gtc3BhY2UpCiAg ICAgICAgICAgIChbKGJhY2tzcGFjZSldIC4gcmVib3gtYmFja3NwYWNlKQoKICAgICAgICAgICAg KQogIDpncm91cCAncmVib3gKICAoaWYgcmVib3gtbW9kZQogICAgICAocHJvZ24KICAgICAgICAo cmVib3gtc2F2ZS1lbnYpCiAgICAgICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tbWVu dC1hdXRvLWZpbGwtb25seS1jb21tZW50cykKICAgICAgICAgICAgIChpZiAoYW5kIChzdHJpbmdw IGNvbW1lbnQtc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgICAobm90ICh6ZXJvcCAobGVuZ3Ro IGNvbW1lbnQtc3RhcnQpKSkKICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1lbXEgbWFqb3It bW9kZSByZWJveC1oeWJyaWQtbWFqb3ItbW9kZXMpKSkKICAgICAgICAgICAgICAgICB0CiAgICAg ICAgICAgICAgIG5pbCkpCiAgICAgICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnbm9ybWFs LWF1dG8tZmlsbC1mdW5jdGlvbikgJ3JlYm94LWRvLWF1dG8tZmlsbCkKICAgICAgICAoYXV0by1m aWxsLW1vZGUgMSkpCiAgICAocmVib3gtcmVzdG9yZS1lbnYpKSkKCgooZGVmaW5lLWdsb2JhbC1t aW5vci1tb2RlIHJlYm94LWdsb2JhbC1tb2RlIHJlYm94LW1vZGUKICAgIHJlYm94LW1vZGUKICA6 Z3JvdXAgJ3JlYm94KQoKOzsgZnVuY3Rpb25zIHBhc3NlZCB0byByZWJveC1lbmdpbmUgaW5zcGVj dCB0aGVzZSB2YXJpYWJsZXMKKGV2YWwtd2hlbi1jb21waWxlCiAgKGRlZnZhciBwcmV2aW91cy1u bikKICAoZGVmdmFyIHByZXZpb3VzLW5lKQogIChkZWZ2YXIgcHJldmlvdXMtc3cpCiAgKGRlZnZh ciBwcmV2aW91cy1zcykKICAoZGVmdmFyIHByZXZpb3VzLXNlKQogIChkZWZ2YXIgcHJldmlvdXMt bWFyZ2luKQogIChkZWZ2YXIgcHJldmlvdXMtZWUpCiAgKGRlZnZhciBwcmV2aW91cy1udykKICAo ZGVmdmFyIHVuaW5kZW50LWNvdW50KQogIChkZWZ2YXIgb3JpZy1tKQogIChkZWZ2YXIgb3JpZy1j b2wpCiAgKGRlZnZhciBtYXgtbikKICAoZGVmdmFyIG1hcmtlZC1wb2ludCkKICAoZGVmdmFyIHd3 KQopCgoocHV0ICdyZWJveC1lcnJvcgogICAgICdlcnJvci1jb25kaXRpb25zCiAgICAgJyhlcnJv ciByZWJveC1lcnJvcikpCgoocHV0ICdyZWJveC1jb21tZW50LW5vdC1mb3VuZC1lcnJvcgogICAg ICdlcnJvci1jb25kaXRpb25zCiAgICAgJyhlcnJvciByZWJveC1lcnJvciByZWJveC1jb21tZW50 LW5vdC1mb3VuZC1lcnJvcikpCgoocHV0ICdyZWJveC1jb21tZW50LW5vdC1mb3VuZC1lcnJvcgog ICAgICdlcnJvci1tZXNzYWdlCiAgICAgIkNvbW1lbnQgbm90IGZvdW5kIikKCihwdXQgJ3JlYm94 LW1pZC1saW5lLWNvbW1lbnQtZm91bmQKICAgICAnZXJyb3ItY29uZGl0aW9ucwogICAgICcoZXJy b3IgcmVib3gtZXJyb3IgcmVib3gtbWlkLWxpbmUtY29tbWVudC1mb3VuZCkpCgoocHV0ICdyZWJv eC1taWQtbGluZS1jb21tZW50LWZvdW5kCiAgICAgJ2Vycm9yLW1lc3NhZ2UKICAgICAiQ29tbWVu dCBzdGFydGVkIG1pZC1saW5lLiIpCgo7OyB3ZSBkb24ndCB1c2Ugc3ludGF4IHRhYmxlIGZvciB3 aGl0ZXNwYWNlIGRlZmluaXRpb24gaGVyZSBiZWNhdXNlIHdlIGRvbid0Cjs7IHRydXN0IG1ham9y LW1vZGVzIHRvIGRlZmluZSB0aGVtIHByb3Blcmx5LgooZGVmY29uc3QgcmVib3gtYmxhbmstbGlu ZS1yZWdleHAgIl5bIFx0XSokIikKCgwKOzsgVGVtcGxhdGUgbnVtYmVyaW5nIGRlcGVuZGVudCBj b2RlLgoKKGRlZnZhciByZWJveC1sYW5ndWFnZS1jaGFyYWN0ZXItYWxpc3QKICAnKCgzIC4gIi8i KSAoNCAuICIjIikgKDUgLiAiOyIpICg2IC4gIiUiKSkKICAiQWxpc3QgcmVsYXRpbmcgbGFuZ3Vh Z2UgdG8gY29tbWVudCBjaGFyYWN0ZXIsIGZvciBnZW5lcmljIGxhbmd1YWdlcy4iKQoKOzs7IFJl Z2V4cCB0byBtYXRjaCB0aGUgY29tbWVudCBzdGFydCwgZ2l2ZW4gYSBMQU5HVUFHRSB2YWx1ZSBh cyBpbmRleC4KCihkZWZ2YXIgcmVib3gtcmVnZXhwLXN0YXJ0CiAgWyJeWyBcdF0qXFwoL1xcKlxc fC8vK1xcfCMrXFx8OytcXHwlK1xcKSIKICAgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsgMQogICAiXlsgXHRdKi9cXCoiICAgICAgICAgICAgICAgICAgICAgICAgOyAyCiAg ICJeWyBcdF0qLy8rIiAgICAgICAgICAgICAgICAgICAgICAgICA7IDMKICAgIl5bIFx0XSojKyIg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgNAogICAiXlsgXHRdKlw7KyIgICAgICAgICAgICAg ICAgICAgICAgICAgOyA1CiAgICJeWyBcdF0qJSsiICAgICAgICAgICAgICAgICAgICAgICAgICA7 IDYKICAgXSkKCjs7OyBSZXF1ZXN0IHRoZSBzdHlsZSBpbnRlcmFjdGl2ZWx5LCB1c2luZyB0aGUg bWluaWJ1ZmZlci4KCihkZWZ1biByZWJveC1hc2stZm9yLXN0eWxlICgpCiAgKGxldCAoa2V5IGxh bmd1YWdlIHF1YWxpdHkgdHlwZSkKICAgICh3aGlsZSAobm90IGxhbmd1YWdlKQogICAgICAobWVz c2FnZSAiXApCb3ggbGFuZ3VhZ2UgaXMgMTAwLW5vbmUsIDIwMC0vKiwgMzAwLS8vLCA0MDAtIywg NTAwLTssIDYwMC0lJSIpCiAgICAgIChzZXRxIGtleSAocmVhZC1jaGFyKSkKICAgICAgKHdoZW4g KGFuZCAoPj0ga2V5ID8wKSAoPD0ga2V5ID82KSkKICAgICAgICAoc2V0cSBsYW5ndWFnZSAoLSBr ZXkgPzApKSkpCiAgICAod2hpbGUgKG5vdCBxdWFsaXR5KQogICAgICAobWVzc2FnZSAiXApCb3gg cXVhbGl0eS93aWR0aCBpcyAxMC1zaW1wbGUvMSwgMjAtcm91bmRlZC8yLCAzMC1zdGFycmVkLzMg b3IgNDAtc3RhcnJlZC80IikKICAgICAgKHNldHEga2V5IChyZWFkLWNoYXIpKQogICAgICAod2hl biAoYW5kICg+PSBrZXkgPzApICg8PSBrZXkgPzQpKQogICAgICAgIChzZXRxIHF1YWxpdHkgKC0g a2V5ID8wKSkpKQogICAgKHdoaWxlIChub3QgdHlwZSkKICAgICAgKG1lc3NhZ2UgIlwKQm94IHR5 cGUgaXMgMS1vcGVuZWQsIDItaGFsZi1zaW5nbGUsIDMtc2luZ2xlLCA0LWhhbGYtZG91YmxlIG9y IDUtZG91YmxlIikKICAgICAgKHNldHEga2V5IChyZWFkLWNoYXIpKQogICAgICAod2hlbiAoYW5k ICg+PSBrZXkgPzApICg8PSBrZXkgPzUpKQogICAgICAgIChzZXRxIHR5cGUgKC0ga2V5ID8wKSkp KQogICAgKCsgKCogMTAwIGxhbmd1YWdlKSAoKiAxMCBxdWFsaXR5KSB0eXBlKSkpCgwKOzsgVGVt cGxhdGUgaW5nZXN0aW9uLgoKOzs7IEluZm9ybWF0aW9uIGFib3V0IHJlZ2lzdGVyZWQgdGVtcGxh dGVzLgooZGVmdmFyIHJlYm94LXN0eWxlLWRhdGEgbmlsKQoKOzs7IFJlZ2lzdGVyIGFsbCBib3gg dGVtcGxhdGVzLgoKKGRlZnVuIHJlYm94LXJlZ2lzdGVyLWFsbC10ZW1wbGF0ZXMgKCkKICAoc2V0 cSByZWJveC1zdHlsZS1kYXRhIG5pbCkKICAobGV0ICgodGVtcGxhdGVzIHJlYm94LXRlbXBsYXRl cykpCiAgICAod2hpbGUgdGVtcGxhdGVzCiAgICAgIChsZXQgKCh0ZW1wbGF0ZSAoY2FyIHRlbXBs YXRlcykpKQogICAgICAgIChyZWJveC1yZWdpc3Rlci10ZW1wbGF0ZSAoY2FyIHRlbXBsYXRlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FkciB0ZW1wbGF0ZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNkZHIgdGVtcGxhdGUpKSkKICAgICAgKHNldHEgdGVt cGxhdGVzIChjZHIgdGVtcGxhdGVzKSkpKSkKCjs7OyBSZWdpc3RlciBhIHNpbmdsZSBib3ggdGVt cGxhdGUuCgooZGVmdW4gcmVib3gtcmVnaXN0ZXItdGVtcGxhdGUgKHN0eWxlIHdlaWdodCBsaW5l cykKICAiRGlnZXN0IGFuZCByZWdpc3RlciBhIHNpbmdsZSB0ZW1wbGF0ZS4KVGhlIHRlbXBsYXRl IGlzIG51bWJlcmVkIFNUWUxFLCBhbmQgaXMgZGVzY3JpYmVkIGJ5IG9uZSB0byB0aHJlZSBMSU5F Uy4KCklmIFNUWUxFIGlzIGJlbG93IDEwMCwgaXQgaXMgZ2VuZXJpYyBmb3IgYSBmZXcgcHJvZ3Jh bW1pbmcgbGFuZ3VhZ2VzIGFuZAp3aXRoaW4gbGluZXMsIGA/JyBpcyBtZWFudCB0byByZXByZXNl bnQgdGhlIGxhbmd1YWdlIGNvbW1lbnQgY2hhcmFjdGVyLgpTVFlMRSBzaG91bGQgYmUgdXNlZCBv bmx5IG9uY2UgdGhyb3VnaCBhbGwgYHJlYm94LXJlZ2lzdGVyLXRlbXBsYXRlJyBjYWxscy4KCk9u ZSBvZiB0aGUgbGluZXMgc2hvdWxkIGNvbnRhaW4gdGhlIHN1YnN0cmluZyBgYm94JyB0byByZXBy ZXNlbnQgdGhlIGNvbW1lbnQKdG8gYmUgYm94ZWQsIGFuZCBpZiB0aHJlZSBsaW5lcyBhcmUgZ2l2 ZW4sIGBib3gnIHNob3VsZCBhcHBlYXIgaW4gdGhlIG1pZGRsZQpvbmUuICBMaW5lcyBjb250YWlu aW5nIG9ubHkgc3BhY2VzIGFyZSBpbXBsaWVkIGFzIG5lY2Vzc2FyeSBiZWZvcmUgYW5kIGFmdGVy CnRoZSB0aGUgYGJveCcgbGluZSwgc28gd2UgaGF2ZSB0aHJlZSBsaW5lcy4KCk5vcm1hbGx5LCBh bGwgdGhyZWUgdGVtcGxhdGUgbGluZXMgc2hvdWxkIGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4gIElm IHRoZSBmaXJzdApsaW5lIGlzIHNob3J0ZXIsIGl0IHJlcHJlc2VudHMgYSBzdGFydCBjb21tZW50 IHN0cmluZyB0byBiZSBidW5kbGVkIHdpdGhpbiB0aGUKZmlyc3QgbGluZSBvZiB0aGUgY29tbWVu dCB0ZXh0LiAgSWYgdGhlIHRoaXJkIGxpbmUgaXMgc2hvcnRlciwgaXQgcmVwcmVzZW50cwphbiBl bmQgY29tbWVudCBzdHJpbmcgdG8gYmUgYnVuZGxlZCBhdCB0aGUgZW5kIG9mIHRoZSBjb21tZW50 IHRleHQsIGFuZApyZWZpbGxlZCB3aXRoIGl0LiIKCiAgKGNvbmQgKCg8IHN0eWxlIDEwMCkKICAg ICAgICAgKGxldCAoKHBhaXJzIHJlYm94LWxhbmd1YWdlLWNoYXJhY3Rlci1hbGlzdCkKICAgICAg ICAgICAgICAgbGFuZ3VhZ2UgY2hhcmFjdGVyKQogICAgICAgICAgICh3aGlsZSBwYWlycwogICAg ICAgICAgICAgKHNldHEgbGFuZ3VhZ2UgKGNhYXIgcGFpcnMpCiAgICAgICAgICAgICAgICAgICBj aGFyYWN0ZXIgKGNkYXIgcGFpcnMpCiAgICAgICAgICAgICAgICAgICBwYWlycyAoY2RyIHBhaXJz KSkKICAgICAgICAgICAgIChyZWJveC1yZWdpc3Rlci10ZW1wbGF0ZQogICAgICAgICAgICAgICgr ICgqIDEwMCBsYW5ndWFnZSkgc3R5bGUpCiAgICAgICAgICAgICAgd2VpZ2h0CiAgICAgICAgICAg ICAgKG1hcGNhciAobGFtYmRhIChsaW5lKQogICAgICAgICAgICAgICAgICAgICAgICAod2hpbGUg KHN0cmluZy1tYXRjaCAiXD8iIGxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEg bGluZSAocmVwbGFjZS1tYXRjaCBjaGFyYWN0ZXIgdCB0IGxpbmUpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgbGluZSkKICAgICAgICAgICAgICAgICAgICAgIGxpbmVzKSkpKSkKICAgICAgICAo KGFzc3Egc3R5bGUgcmVib3gtc3R5bGUtZGF0YSkKICAgICAgICAgKGVycm9yICJTdHlsZSAlZCBk ZWZpbmVkIG1vcmUgdGhhbiBvbmNlIiBzdHlsZSkpCiAgICAgICAgKHQKICAgICAgICAgKGxldCAo bGluZTEgbGluZTIgbGluZTMgcmVnZXhwMSByZWdleHAyIHJlZ2V4cDMKICAgICAgICAgICAgICAg ICAgICAgbWVyZ2UtbncgbWVyZ2Utc2Ugbncgbm4gbmUgd3cgZWUgc3cgc3Mgc2UpCiAgICAgICAg ICAgKGlmIChzdHJpbmctbWF0Y2ggImJveDEyMzQ1NiIgKGNhciBsaW5lcykpCiAgICAgICAgICAg ICAgIChzZXRxIGxpbmUxIG5pbAogICAgICAgICAgICAgICAgICAgICBsaW5lMiAoY2FyIGxpbmVz KQogICAgICAgICAgICAgICAgICAgICBsaW5lcyAoY2RyIGxpbmVzKSkKICAgICAgICAgICAgIChz ZXRxIGxpbmUxIChjYXIgbGluZXMpCiAgICAgICAgICAgICAgICAgICBsaW5lMiAoY2FkciBsaW5l cykKICAgICAgICAgICAgICAgICAgIGxpbmVzIChjZGRyIGxpbmVzKSkKICAgICAgICAgICAgICh1 bmxlc3MgKHN0cmluZy1tYXRjaCAiYm94MTIzNDU2IiBsaW5lMikKICAgICAgICAgICAgICAgKGVy cm9yICJFcnJvbmVvdXMgdGVtcGxhdGUgZm9yICVkIHN0eWxlIiBzdHlsZSkpKQogICAgICAgICAg IChzZXRxIGxpbmUzIChhbmQgbGluZXMgKGNhciBsaW5lcykpKQogICAgICAgICAgIChzZXRxIG1l cmdlLW53IChhbmQgbGluZTEgKDwgKGxlbmd0aCBsaW5lMSkgKGxlbmd0aCBsaW5lMikpKQogICAg ICAgICAgICAgICAgIG1lcmdlLXNlIChhbmQgbGluZTMgKDwgKGxlbmd0aCBsaW5lMykgKGxlbmd0 aCBsaW5lMikpKQogICAgICAgICAgICAgICAgIG53ICAgICAgIChjb25kICgobm90IGxpbmUxKSBu aWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lcmdlLW53IGxpbmUxKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoemVyb3AgKG1hdGNoLWJlZ2lubmluZyAwKSkg bmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChzdWJzdHJpbmcgbGluZTEg MCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCiAgICAgICAgICAgICAgICAgbm4gICAgICAgKGNvbmQg KChub3QgbGluZTEpIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVyZ2Ut bncgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChsZXQgKCh4IChhcmVm IGxpbmUxIChtYXRjaC1iZWdpbm5pbmcgMCkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoPSB4ID8gKSBuaWwgeCkpKSkKICAgICAgICAgICAgICAgICBuZSAgICAg ICAoY29uZCAoKG5vdCBsaW5lMSkgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtZXJnZS1udyBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCg9IChtYXRj aC1lbmQgMCkgKGxlbmd0aCBsaW5lMSkpIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodCAocmVib3gtcnN0cmlwIChzdWJzdHJpbmcgbGluZTEgKG1hdGNoLWVuZCAwKSkpKSkK ICAgICAgICAgICAgICAgICB3dyAgICAgICAoY29uZCAoKHplcm9wIChtYXRjaC1iZWdpbm5pbmcg MCkpIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCAoc3Vic3RyaW5nIGxp bmUyIDAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQogICAgICAgICAgICAgICAgIGVlICAgICAgIChj b25kICgoPSAobWF0Y2gtZW5kIDApIChsZW5ndGggbGluZTIpKSBuaWwpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHQgKHJlYm94LXJzdHJpcCAoc3Vic3RyaW5nIGxpbmUyIChtYXRj aC1lbmQgMCkpKSkpCiAgICAgICAgICAgICAgICAgc3cgICAgICAgKGNvbmQgKChub3QgbGluZTMp IG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVyZ2Utc2UgbmlsKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoemVyb3AgKG1hdGNoLWJlZ2lubmluZyAwKSkg bmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChzdWJzdHJpbmcgbGluZTMg MCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCiAgICAgICAgICAgICAgICAgc3MgICAgICAgKGNvbmQg KChub3QgbGluZTMpIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVyZ2Ut c2UgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChsZXQgKCh4IChhcmVm IGxpbmUzIChtYXRjaC1iZWdpbm5pbmcgMCkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoPSB4ID8gKSBuaWwgeCkpKSkKICAgICAgICAgICAgICAgICBzZSAgICAg ICAoY29uZCAoKG5vdCBsaW5lMykgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtZXJnZS1zZSAocmVib3gtcnN0cmlwIGxpbmUzKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKD0gKG1hdGNoLWVuZCAwKSAobGVuZ3RoIGxpbmUzKSkgbmlsKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0IChyZWJveC1yc3RyaXAgKHN1YnN0cmluZyBsaW5lMyAo bWF0Y2gtZW5kIDApKSkpKSkKICAgICAgICAgICAoc2V0cSByZWdleHAxIChjb25kCiAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1lcmdlLW53CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25jYXQgIl5bIFx0XSoiIChyZWJveC1yZWdleHAtcXVvdGUgbncgOnJzdHJpcCBuaWwpICJbIFx0 XSpcbiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kIG53IChub3Qgbm4pIChub3Qg bmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJeWyBcdF0qIiAocmVib3gt cmVnZXhwLXF1b3RlIG53IDpyc3RyaXAgbmlsKSAiXG4iKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAoKG9yIG53IG5uIG5lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJe WyBcdF0qIiAocmVib3gtcmVnZXhwLXF1b3RlIG53IDpyc3RyaXAgbmlsKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChyZWJveC1yZWdleHAtcnVsZXIgbm4pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlYm94LXJlZ2V4cC1xdW90ZSBuZSA6bHN0cmlwIG5p bCkgIlxuIikpKQogICAgICAgICAgICAgICAgIHJlZ2V4cDIgKGFuZCAobm90IChzdHJpbmctZXF1 YWwgKHJlYm94LXJzdHJpcCAoY29uY2F0IHd3IGVlKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbmNhdCAiXlsgXHRdKiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocmVib3gtcmVnZXhwLXF1b3RlIHd3IDpyc3RyaXAgbmlsKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIuKiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocmVib3gtcmVnZXhwLXF1b3RlIGVlIDpsc3RyaXAgbmlsKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJcbiIpKQogICAgICAgICAgICAgICAgIHJlZ2V4cDMgKGNv bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAobWVyZ2Utc2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbmNhdCAiXi4qIiAocmVib3gtcmVnZXhwLXF1b3RlIHNlIDpsc3RyaXAgbmls KSAiXG4iKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFuZCBzdyAobm90IHNzKSAobm90 IHNlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXlsgXHRdKiIgKHJlYm94 LXJlZ2V4cC1xdW90ZSBzdyA6cnN0cmlwIG5pbCkgIlxuIikpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKChvciBzdyBzcyBzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAi XlsgXHRdKiIgKHJlYm94LXJlZ2V4cC1xdW90ZSBzdyA6cnN0cmlwIG5pbCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocmVib3gtcmVnZXhwLXJ1bGVyIHNzKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChyZWJveC1yZWdleHAtcXVvdGUgc2UgOmxzdHJpcCBu aWwpICJcbiIpKSkpCiAgICAgICAgICAgKHNldHEgcmVib3gtc3R5bGUtZGF0YQogICAgICAgICAg ICAgICAgIChjb25zIChjb25zIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZl Y3RvciB3ZWlnaHQgcmVnZXhwMSByZWdleHAyIHJlZ2V4cDMKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1lcmdlLW53IG1lcmdlLXNlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBudyBubiBuZSB3dyBlZSBzdyBzcyBzZSkpCiAgICAgICAgICAgICAgICAg ICAgICAgcmVib3gtc3R5bGUtZGF0YSkpKSkpKQoKKGRlZnVuKiByZWJveC1nZXQtc3R5bGUtZnJv bS1wcmVmaXgtYXJnIChhcmcgJmtleSAoYXNrIHQpICh1c2UtZGVmYXVsdCB0KSkKICAiYW5hbHl6 ZSBgYXJnJyB0byBnZXQgc3R5bGUiCiAgKGNvbmQgKChudW1iZXJwIGFyZykKICAgICAgICAgKGlm ICg+IGFyZyAwKQogICAgICAgICAgICAgKHJlYm94LWdldC1zdHlsZS1mb3ItbWFqb3ItbW9kZSBh cmcpCiAgICAgICAgICAgKHJlYm94LWdldC1zdHlsZS1mb3ItbWFqb3ItbW9kZSAoLSBhcmcpKSkp CiAgICAgICAgKChlcSAnLSBhcmcpCiAgICAgICAgIChpZiBhc2sKICAgICAgICAgICAgIChyZWJv eC1hc2stZm9yLXN0eWxlKQogICAgICAgICAgIChyZWJveC1nZXQtc3R5bGUtZm9yLW1ham9yLW1v ZGUgcmVib3gtZGVmYXVsdC11bmJveC1zdHlsZSkpKQogICAgICAgICh0CiAgICAgICAgICh3aGVu IHVzZS1kZWZhdWx0CiAgICAgICAgICAgKHJlYm94LWdldC1zdHlsZS1mb3ItbWFqb3ItbW9kZSBy ZWJveC1kZWZhdWx0LXN0eWxlKSkpKSkKCihkZWZ1biByZWJveC1nZXQtcmVmaWxsLWZyb20tcHJl Zml4LWFyZyAoYXJnKQogICJhbmFseXplIGBhcmcnIHRvIHJlZmlsbAoKcmV0dXJucyB0IGZvciBy ZWZpbCBuaWwgZm9yIG5vdC4KIgogIChpZiAoYW5kIGFyZwogICAgICAgICAgIChsaXN0cCBhcmcp KQogICAgICBuaWwKICAgIHQpKQoKKGRlZnVuIHJlYm94LWdldC1zdHlsZS1mb3ItbWFqb3ItbW9k ZSAoc3R5bGUpCiAgKGNvbmQgKChhbmQgKG51bWJlcnAgc3R5bGUpCiAgICAgICAgICAgICAgKDwg c3R5bGUgMTAwKQogICAgICAgICAgICAgICg+IHN0eWxlIDApKQogICAgICAgICAoKyAoKiAxMDAg KHJlYm94LWd1ZXNzLWxhbmd1YWdlIGNvbW1lbnQtc3RhcnQpKQogICAgICAgICAgICBzdHlsZSkp CiAgICAgICAgKChudW1iZXJwIHN0eWxlKQogICAgICAgICBzdHlsZSkKICAgICAgICAodAogICAg ICAgICAoZXJyb3IgInVua25vd24gc3R5bGU6ICVzIiBzdHlsZSkpKSkKCihkZWZ1biByZWJveC1t YWtlLWZpbGwtcHJlZml4ICgpCiAgImdlbmVyYXRlIGZpbGwgcHJlZml4IHVzaW5nIGFkYXB0aXZl IGZpbGxpbmcgbWV0aG9kcyIKICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgKGlmIChmZWF0dXJlcCAn ZmlsbGFkYXB0KQogICAgICAoZmlsbGFkYXB0LW1ha2UtZmlsbC1wcmVmaXgKICAgICAgIChmaWxs YWRhcHQtcGFyc2UtcHJlZml4ZXMpKQogICAgKGZpbGwtY29udGV4dC1wcmVmaXgKICAgICAocG9p bnQtYXQtYm9sKQogICAgIChwb2ludC1hdC1lb2wpKSkpCgoMCjs7IFVzZXIgaW50ZXJhY3Rpb24u Cgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gcmVib3gtYmVnaW5uaW5nLW9mLWxpbmUgKGFyZykKICAi SWYgcG9pbnQgaXMgaW4gYSBib3gsIGdvIHRvIGJlZ2lubmluZyBvZiB0ZXh0IG9uIGZpcnN0IGlu dm9jYXRpb24uCk9uIHNlY29uZCBpbnZvY2F0aW9uLCBnbyB0byBiZWdpbm5pbmcgb2YgcGh5c2lj YWwgbGluZS4gIFN1YnNlcXVlbnQgaW52b2NhdGlvbiBzd2l0Y2hlcyBiZXR3ZWVuIHRoZSB0d28u CgpJZiBwb2ludCBpcyBub3QgaW4gYSBib3gsIGNhbGwgYHJlYm94LWJlZ2lubmluZy1vZi1saW5l LWZ1bmN0aW9uJyIKCiAgKGludGVyYWN0aXZlICJQIikgKGxldCAoKG9yaWctbSAocG9pbnQtbWFy a2VyKSkKICAgICAgICBwcmV2aW91cy1zdHlsZQogICAgICAgIGJveGVkLWxpbmUtc3RhcnQtY29s KQogICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAgKGNvbmRpdGlvbi1jYXNlIGVycgogICAgICAg ICAgKHByb2duCiAgICAgICAgICAgIChyZWJveC1maW5kLWFuZC1uYXJyb3cgOmNvbW1lbnQtb25s eSBjb21tZW50LWF1dG8tZmlsbC1vbmx5LWNvbW1lbnRzKQogICAgICAgICAgICAoc2V0cSBwcmV2 aW91cy1zdHlsZSAocmVib3gtZ3Vlc3Mtc3R5bGUpKQogICAgICAgICAgICAoaWYgKGVxIHByZXZp b3VzLXN0eWxlIDExMSkKICAgICAgICAgICAgICAgIChzaWduYWwgJ3JlYm94LWVycm9yICJzdHls ZSBpcyAxMTEiKQogICAgICAgICAgICAgIChyZWJveC1lbmdpbmUgOnN0eWxlIHByZXZpb3VzLXN0 eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFya2VkLXBvaW50IG9yaWctbQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnF1aWV0IHQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDpyZWZpbGwgbmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bW92ZS1wb2ludCBu aWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwcmV2aW91cy1zdHlsZSBwcmV2aW91cy1z dHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOmluc3AtZnVuYwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Z290by1jaGFyIG1hcmtlZC1wb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlm IDs7IHRvcCBvciBib3R0b20gYm9yZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAob3IgKGFuZCAob3IgcHJldmlvdXMtbncgcHJldmlvdXMtbm4gcHJldmlvdXMtbmUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGxpbmUtbnVtYmVyLWF0 LXBvcykgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAob3Ig cHJldmlvdXMtc3cgcHJldmlvdXMtc3MgcHJldmlvdXMtc2UpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGxpbmUtbnVtYmVyLWF0LXBvcykgKDEtIChsaW5l LW51bWJlci1hdC1wb3MgKHBvaW50LW1heCkpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNldHEgYm94ZWQtbGluZS1zdGFydC1jb2wgcHJldmlvdXMtbWFyZ2luKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lvbiAoKyAocG9pbnQtYXQtYm9s KSB1bmluZGVudC1jb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwb2ludC1hdC1lb2wpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGJlZ2lubmluZy1vZi1saW5lIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBib3hlZC1saW5lLXN0YXJ0LWNvbAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIChsb29raW5nLWF0LXAgKGNvbmNhdCAiWyBcdF0qIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYW5kIHByZXZpb3VzLWVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2V4cC1xdW90ZSBwcmV2aW91cy1l ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIkIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5pbmRlbnQtY291bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCsgKGxlbmd0aCAocmVib3gtbWFrZS1maWxsLXByZWZpeCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW5kZW50LWNvdW50KSkpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93ICdyZWJveC1lbmdpbmUtZG9uZSB0KSkpCgkg ICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgICAgICAoaWYgKG9yIChib2xwKQogICAg ICAgICAgICAgICAgICAgICAgKD4gKGN1cnJlbnQtY29sdW1uKSBib3hlZC1saW5lLXN0YXJ0LWNv bCkpCiAgICAgICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiBib3hlZC1saW5lLXN0YXJ0LWNv bCkKICAgICAgICAgICAgICAgIChtb3ZlLWJlZ2lubmluZy1vZi1saW5lIDEpKSkpCiAgICAgICAg KCdyZWJveC1lcnJvcgogICAgICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgKGNhbGwt aW50ZXJhY3RpdmVseSByZWJveC1iZWdpbm5pbmctb2YtbGluZS1mdW5jdGlvbikpCiAgICAgICAg KCdlcnJvcgogICAgICAgICAoc2lnbmFsIChjYXIgZXJyKSAoY2RyIGVycikpKSkpKSkKCjs7OyMj I2F1dG9sb2FkCihkZWZ1biByZWJveC1lbmQtb2YtbGluZSAoYXJnKQogICJJZiBwb2ludCBpcyBp biBhIGJveCwgZ28gdG8gZW5kIG9mIHRleHQgb24gZmlyc3QgaW52b2NhdGlvbi4KT24gc2Vjb25k IGludm9jYXRpb24sIGdvIHRvIGVuZCBvZiBwaHlzaWNhbCBsaW5lLiAgU3Vic2VxdWVudCBpbnZv Y2F0aW9uIHN3aXRjaGVzIGJldHdlZW4gdGhlIHR3by4KCklmIHBvaW50IGlzIG5vdCBpbiBhIGJv eCwgY2FsbCBgcmVib3gtYmVnaW5uaW5nLW9mLWxpbmUtZnVuY3Rpb24nIgogIChpbnRlcmFjdGl2 ZSAiUCIpCiAgKGxldCAoKG9yaWctbSAocG9pbnQtbWFya2VyKSkKICAgICAgICBwcmV2aW91cy1z dHlsZQogICAgICAgIGJveGVkLWxpbmUtZW5kLWNvbCkKICAgIChzYXZlLXJlc3RyaWN0aW9uCiAg ICAgIChjb25kaXRpb24tY2FzZSBlcnIKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAocmVi b3gtZmluZC1hbmQtbmFycm93IDpjb21tZW50LW9ubHkgY29tbWVudC1hdXRvLWZpbGwtb25seS1j b21tZW50cykKICAgICAgICAgICAgKHNldHEgcHJldmlvdXMtc3R5bGUgKHJlYm94LWd1ZXNzLXN0 eWxlKSkKICAgICAgICAgICAgKGlmIChlcSBwcmV2aW91cy1zdHlsZSAxMTEpCiAgICAgICAgICAg ICAgICAoc2lnbmFsICdyZWJveC1lcnJvciAic3R5bGUgaXMgMTExIikKICAgICAgICAgICAgICAo cmVib3gtZW5naW5lIDpzdHlsZSBwcmV2aW91cy1zdHlsZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgOnF1aWV0IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyZWZpbGwgbmlsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6bW92ZS1wb2ludCBuaWwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpwcmV2aW91cy1zdHlsZSBwcmV2aW91cy1zdHlsZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmluc3AtZnVuYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxh bWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9yaWctbSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgOzsgdG9wIG9yIGJvdHRvbSBib3JkZXIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoYW5kIChvciBwcmV2aW91cy1udyBwcmV2 aW91cy1ubiBwcmV2aW91cy1uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlcSAobGluZS1udW1iZXItYXQtcG9zKSAxKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYW5kIChvciBwcmV2aW91cy1zdyBwcmV2aW91cy1zcyBwcmV2aW91 cy1zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAobGlu ZS1udW1iZXItYXQtcG9zKSAoMS0gKGxpbmUtbnVtYmVyLWF0LXBvcyAocG9pbnQtbWF4KSkpKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBib3hlZC1saW5lLWVuZC1j b2wgKHBvaW50LWF0LWVvbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEg Ym94ZWQtbGluZS1lbmQtY29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIHByZXZpb3VzLWVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFy Y2gtZm9yd2FyZC1yZWdleHAgKGNvbmNhdCAiWyBcdF0qIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVi b3gtcmVnZXhwLXF1b3RlIHByZXZpb3VzLWVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJCIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocG9pbnQtYXQtZW9sKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZC1yZWdleHAgIlsgXHRd KiQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludC1hdC1lb2wpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgYmxhbmsgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh3aGVuICg8PSBib3hlZC1saW5lLWVuZC1jb2wgdW5pbmRlbnQtY291bnQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBib3hlZC1saW5lLWVuZC1jb2wgKHBy b2duIChnb3RvLWNoYXIgKHBvaW50LWF0LWVvbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikp KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAncmVib3gtZW5naW5lLWRv bmUgdCkpKQogICAgICAgICAgICAgIChnb3RvLWNoYXIgb3JpZy1tKQogICAgICAgICAgICAgIChp ZiAob3IgKGVvbHApCiAgICAgICAgICAgICAgICAgICAgICAoPCAoY3VycmVudC1jb2x1bW4pIGJv eGVkLWxpbmUtZW5kLWNvbCkpCiAgICAgICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiBib3hl ZC1saW5lLWVuZC1jb2wpCiAgICAgICAgICAgICAgICAobW92ZS1lbmQtb2YtbGluZSAxKSkpKQog ICAgICAgICgncmVib3gtZXJyb3IKICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAg IChjYWxsLWludGVyYWN0aXZlbHkgcmVib3gtZW5kLW9mLWxpbmUtZnVuY3Rpb24pKQogICAgICAg ICgnZXJyb3IKICAgICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNkciBlcnIpKSkpKSkpCgo7Ozsj IyNhdXRvbG9hZAooZGVmdW4gcmVib3gta2lsbC1saW5lIChhcmcpCiAgIklmIHBvaW50IGlzIGlu IGEgYm94LCB1bmJveCBmaXJzdCwgYW5kIHRoZW4gcnVuCmByZWJveC1raWxsLWxpbmUtZnVuY3Rp b24nIGFzIHJlcXVlc3RlZCwgdW5sZXNzIHJlZ2lvbiBpcwpzZWxlY3RlZCwgaW4gd2hpY2ggY2Fz ZSwgdGhlIHJlZ2lvbiBpcyBraWxsZWQuCgpJZiBwb2ludCBpcyBub3QgaW4gYSBib3gsIGNhbGwg YHJlYm94LWtpbGwtbGluZS1mdW5jdGlvbicuCgpXaXRoIHVuaXZlcnNhbCBBUkcsIGFsd2F5cyBj YWxsIGByZWJveC1raWxsLWxpbmUtZnVuY3Rpb24nLgoiCiAgKGludGVyYWN0aXZlICJQKiIpCiAg KHJlYm94LWtpbGwteWFuay13cmFwcGVyIChsYW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y29uZGl0aW9uLWNhc2UgZXJyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9n bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAodXNlLXJlZ2lvbi1wKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2lsbC1yZWdpb24gKHJlZ2lvbi1iZWdpbm5p bmcpIChyZWdpb24tZW5kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh1bmxlc3MgKGJvbHApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaW5zZXJ0ICJcbiIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgcmVib3gta2lsbC1saW5lLWZ1bmN0aW9uKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2VuZC1vZi1idWZmZXIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiZW5kIG9mIGJveCByZWFjaGVkLCBhYm9ydGlu ZyAlcy4iIHRoaXMtY29tbWFuZCkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVib3gt a2lsbC1saW5lLWZ1bmN0aW9uKSkKCihkZWZ1biByZWJveC15YW5rIChhcmcpCiAgIklmIHBvaW50 IGlzIGluIGEgYm94LCB1bmJveCBmaXJzdCwgYW5kIHRoZW4gcnVuIGByZWJveC15YW5rLWZ1bmN0 aW9uJyBhcyByZXF1ZXN0ZWQuCgpJZiBwb2ludCBpcyBub3QgaW4gYSBib3gsIGNhbGwgYHJlYm94 LXlhbmstZnVuY3Rpb24nLgoKV2l0aCB1bml2ZXJzYWwgQVJHLCBhbHdheXMgY2FsbCBgcmVib3gt eWFuay1mdW5jdGlvbicuCiIKICAoaW50ZXJhY3RpdmUgIlAqIikKICAocmVib3gta2lsbC15YW5r LXdyYXBwZXIgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNo YXIgb3JpZy1tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZl bHkgJ3lhbmspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1tYXJrZXIgb3JpZy1t IChwb2ludCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICByZWJveC15YW5rLWZ1bmN0aW9u KSkKCihkZWZ1biByZWJveC15YW5rLXBvcCAoYXJnKQogICJJZiBwb2ludCBpcyBpbiBhIGJveCwg dW5ib3ggZmlyc3QsIGFuZCB0aGVuIHJ1biBgcmVvYngteWFuay1wb3AtZnVuY3Rpb24nIGFzIHJl cXVlc3RlZC4KCklmIHBvaW50IGlzIG5vdCBpbiBhIGJveCwgY2FsbCBgcmVvYngteWFuay1wb3At ZnVuY3Rpb24nLgoKV2l0aCB1bml2ZXJzYWwgQVJHLCBhbHdheXMgY2FsbCBgcmVvYngteWFuay1w b3AtZnVuY3Rpb24nLgoiCiAgKGludGVyYWN0aXZlICJQKiIpCiAgKHJlYm94LWtpbGwteWFuay13 cmFwcGVyIChsYW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy IG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5 ICd5YW5rLXBvcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlciBvcmln LW0gKHBvaW50KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYm94LXlhbmstcG9wLWZ1 bmN0aW9uKSkKCihkZWZ1biByZWJveC1raWxsLXJpbmctc2F2ZSAoYXJnKQogIChpbnRlcmFjdGl2 ZSAiUCIpCiAgKHJlYm94LWtpbGwteWFuay13cmFwcGVyIChsYW1iZGEgKCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5IHJlYm94LWtpbGwtcmluZy1zYXZlLWZ1bmN0aW9u KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtbWFya2VyIG9yaWctbSAocG9pbnQt bWFya2VyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYm94LWtpbGwtcmluZy1zYXZl LWZ1bmN0aW9uKSkKCihkZWZ1biByZWJveC1jZW50ZXIgKCkKICAiSWYgcG9pbnQgaXMgaW4gdGhl IGxlZnQgYm9yZGVyIG9mIGEgYm94LCBjZW50ZXIgdGhlIGJveCwKZWxzZSBjYWxsIHRoZSBkZWZh dWx0IGJpbmRpbmcgb2YgTS1jLgoKd2l0aCBhcmd1bWVudCBOLCBtb3ZlIG4gY29sdW1ucy4iCiAg KGludGVyYWN0aXZlICIqIikKICAobGV0ICgob3JpZy1mdW5jIChjZHIgKGFzc3EgJ21ldGEtYy1m dW5jIHJlYm94LXNhdmUtZW52LWFsaXN0KSkpKQogICAgKHJlYm94LWxlZnQtYm9yZGVyLXdyYXBw ZXIgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgKGN1 cnJlbnQtY29sdW1uKSB1bmluZGVudC1jb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjZW50ZXItcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIG9yaWctZnVuYwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSBvcmlnLWZ1bmMpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlciBvcmlnLW0gKHBv aW50KSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ3JlYm94LWVu Z2luZS1kb25lIHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZy1mdW5jCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSkKCgooZGVmdW4gcmVib3gtc3BhY2UgKG4p CiAgIklmIHBvaW50IGlzIGluIHRoZSBsZWZ0IGJvcmRlciBvZiBhIGJveCwgbW92ZSBib3ggdG8g dGhlIHJpZ2h0LAplbHNlIHNlbGYtaW5zZXJ0LgoKd2l0aCBhcmd1bWVudCBOLCBtb3ZlIG4gY29s dW1ucy4iCiAgKGludGVyYWN0aXZlICJwKiIpCiAgKHJlYm94LWxlZnQtYm9yZGVyLXdyYXBwZXIg KGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcmln LW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgKGN1cnJlbnQtY29sdW1u KSB1bmluZGVudC1jb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv Z24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtbWFya2VyLWluc2Vy dGlvbi10eXBlIG9yaWctbSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1yZWN0YW5nbGUgKHBvaW50LW1pbikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAoZ290by1jaGFyIChwb2ludC1tYXgp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb2ludC1hdC1ib2wgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgbiA/ICkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICdzZWxmLWluc2VydC1jb21t YW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB3ZSBjYW4ndCBjaGFuZ2Ug aW5zZXJ0aW9uLXR5cGUgaW4gY2FzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyB0aGlzIGlzIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgYm94CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzZXQtbWFya2VyIG9yaWctbSAocG9pbnQpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0aHJvdyAncmVib3gtZW5naW5lLWRvbmUgdCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3NlbGYtaW5zZXJ0LWNvbW1hbmQpKQoKKGRlZnVuIHJlYm94LWJh Y2tzcGFjZSAobikKICAiSWYgcG9pbnQgaXMgaW4gdGhlIGxlZnQgYm9yZGVyIG9mIGEgYm94LCBt b3ZlIGJveCB0byB0aGUgbGVmdCwKZWxzZSBjYWxsIGBiYWNrd2FyZC1kZWxldGUtY2hhci11bnRh YmlmeScuCgp3aXRoIGFyZ3VtZW50IE4sIG1vdmUgbiBjb2x1bW5zLiIKICAoaW50ZXJhY3RpdmUg IipwIikKICAoaWYgKHVzZS1yZWdpb24tcCkKICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAncmVi b3gta2lsbC1saW5lKQogICAgKHJlYm94LWxlZnQtYm9yZGVyLXdyYXBwZXIgKGxhbWJkYSAoKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgb3JpZy1jb2wgdW5pbmRlbnQt Y291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLXJlY3Rh bmdsZSAocG9pbnQtbWluKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHByb2duIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lu bmluZy1vZi1saW5lIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgbWF4LW4gKG1pbiBvcmlnLWNvbCBwcmV2aW91cy1t YXJnaW4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoPCBuIG1heC1uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZS10by1jb2x1bW4gbikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtb3ZlLXRvLWNvbHVtbiBtYXgtbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAnYmFja3dhcmQtZGVsZXRl LWNoYXItdW50YWJpZnkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cg J3JlYm94LWVuZ2luZS1kb25lIHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jh Y2t3YXJkLWRlbGV0ZS1jaGFyLXVudGFiaWZ5KSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4qIHJl Ym94LXJlZ2lvbiAoci1iZWcgci1lbmQgJmtleSBzdHlsZSAocmVmaWxsIHQpIHByZXZpb3VzLXN0 eWxlIChxdWlldCBuaWwpKQogICJSZWJveCB0aGUgcmVnaW9uLgoKUHJlZml4IGFyZyBpcyBwcm9j ZXNzZWQgc2FtZSBhcyBgcmVib3gtY29tbWVudCcKCkNyZWF0ZSBuZXdsaW5nIGJlZm9yZSBhbmQg YWZ0ZXIgcmVnaW9uIGFzIG5lZWRlZCB0byBlbnN1cmUgYm94CnN0YXJ0cyBhbmQgZW5kcyBvbiBh IG5ld2xpbmUuCiIKICAoaW50ZXJhY3RpdmUgKHByb2duCiAgICAgICAgICAgICAgICAgKHVubGVz cyAodXNlLXJlZ2lvbi1wKQogICAgICAgICAgICAgICAgICAgKGVycm9yICJyZWdpb24gbm90IHNl bGVjdGVkLiIpKQogICAgICAgICAgICAgICAgIChsZXQgKChzdHlsZSAocmVib3gtZ2V0LXN0eWxl LWZyb20tcHJlZml4LWFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC1w cmVmaXgtYXJnKSkKICAgICAgICAgICAgICAgICAgICAgICAocmVmaWxsIChyZWJveC1nZXQtcmVm aWxsLWZyb20tcHJlZml4LWFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl bnQtcHJlZml4LWFyZykpKQogICAgICAgICAgICAgICAgICAgKGxpc3QgKHJlZ2lvbi1iZWdpbm5p bmcpIChyZWdpb24tZW5kKSA6c3R5bGUgc3R5bGUgOnJlZmlsbAogICAgICAgICAgICAgICAgICAg ICAgICAgcmVmaWxsKSkpKQogIChsZXQgKChvcmlnLW0gKHBvaW50LW1hcmtlcikpCiAgICAgICAg KHItZW5kIChwcm9nbgogICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgci1lbmQpCiAgICAgICAg ICAgICAgICAgKHBvaW50LW1hcmtlcikpKQogICAgICAgIChyLWJlZyAocHJvZ24KICAgICAgICAg ICAgICAgICAoZ290by1jaGFyIHItYmVnKQogICAgICAgICAgICAgICAgIChwb2ludC1tYXJrZXIp KSkpCiAgICA7OyB3ZSBjYW4ndCBwb3NzaWJsZSByZWNvZ25pemUgYW55IHN0eWxlIHdoZW4gcmVn aW9uIHdhcyBpbXByb3Blcmx5CiAgICA7OyBzZWxlY3RlZC4KICAgICh3aGVuIChyZWJveC1lbnN1 cmUtcmVnaW9uLXdob2xlLWxpbmVzIHItYmVnIHItZW5kKQogICAgICAgIChzZXRxIHByZXZpb3Vz LXN0eWxlIDExMSkpCiAgICAoc2F2ZS1yZXN0cmljdGlvbgogICAgICAobmFycm93LXRvLXJlZ2lv biByLWJlZyByLWVuZCkKICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgIChyZWJveC1lbmdp bmUgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgOnByZXZpb3VzLXN0eWxlIHByZXZp b3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgOnJlZmlsbCByZWZpbGwKICAgICAgICAgICAg ICAgICAgICA6cXVpZXQgcXVpZXQpKSkpCgo7OzsgUmVib3ggdGhlIHN1cnJvdW5kaW5nIGNvbW1l bnQuCjs7OyMjI2F1dG9sb2FkCihkZWZ1biogcmVib3gtY29tbWVudCAoJmtleSBzdHlsZSAocmVm aWxsIHQpKQogICJNYWtlIGJveCBhcm91bmQgY3VycmVudCBjb21tZW50LiAgSWYgbm8gY29tbWVu dCBpcyBkZWZpbmVkLAogIGJ1aWxkIGJveCBhcm91bmQgY3VycmVudCBjb25zZWN1dGl2ZSBub24t YmxhbmsgbGluZXMuCgpwcmVmaXggYXJnIGlzIHByb2Nlc3NlZCB0aHVzbHk6CgoxKSBwb3NpdGl2 ZSBudW1iZXIgLSBzcGVjaWZpZXMgMyBkaWdpdCBzdHlsZSBvciAyIGRpZ2l0IGJhc2Ugc3R5bGUu ICBXSVRIIFJFRklMTC4KMikgbmVnYXRpdmUgbnVtYmVyIC0gc3R5bGUsIG5vIHJlZmlsbC4KMykg XCItXCIgICAgICAgICAgICAgLSBwcm9tcHQgZm9yIHN0eWxlIGludGVyYWN0aXZlbHkgKGxlZ2Fj eSkKNCkgdW5pdmVyc2FsIGFyZyAgIC0gYXBwbHkgYHJlYm94LWRlZmF1bHQtc3R5bGUnLCBubyBy ZWZpbGwuCiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgOnN0eWxlIChyZWJveC1nZXQtc3R5bGUtZnJv bS1wcmVmaXgtYXJnIGN1cnJlbnQtcHJlZml4LWFyZykKICAgICAgICAgICAgICAgICAgICAgOnJl ZmlsbCAocmVib3gtZ2V0LXJlZmlsbC1mcm9tLXByZWZpeC1hcmcgY3VycmVudC1wcmVmaXgtYXJn KSkpCiAgKGlmICh1c2UtcmVnaW9uLXApCiAgICAgIChlcnJvciAicmVib3gtY29tbWVudCBkb2Vz bid0IHVuZGVyc3RhbmQgcmVnaW9ucy4iKSkKICAobGV0ICgob3JpZy1tIChwb2ludC1tYXJrZXIp KQogICAgICAgIHByZXZpb3VzLXN0eWxlKQogICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAgKGNv bmRpdGlvbi1jYXNlIGVycgogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChyZWJveC1maW5k LWFuZC1uYXJyb3cgOmNvbW1lbnQtb25seSBjb21tZW50LWF1dG8tZmlsbC1vbmx5LWNvbW1lbnRz KQogICAgICAgICAgICAoc2V0cSBwcmV2aW91cy1zdHlsZSAocmVib3gtZ3Vlc3Mtc3R5bGUpKQog ICAgICAgICAgICAocmVib3gtZW5naW5lIDpzdHlsZSBzdHlsZQogICAgICAgICAgICAgICAgICAg ICAgICAgIDpyZWZpbGwgcmVmaWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgOnByZXZpb3Vz LXN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgOm1hcmtlZC1w b2ludCBvcmlnLW0pKQogICAgICAgICgncmVib3gtZXJyb3IKICAgICAgICAgKHNpZ25hbCAoY2Fy IGVycikgKGNkciBlcnIpKSkKICAgICAgICAoJ2Vycm9yCiAgICAgICAgIChlcnJvciAicmVib3gt Y29tbWVudCB3cmFwcGVyOiAlcyIgZXJyKSkpKQogICAgKGdvdG8tY2hhciBvcmlnLW0pKSkKCjs7 OyMjI2F1dG9sb2FkCihkZWZ1biByZWJveC1kd2ltLWZpbGwgKGFyZykKICAiT24gZmlyc3QgaW52 b2NhdGlvbiwgZmlsbCByZWdpb24gb3IgY29tbWVudCwgdW5sZXNzIHN0eWxlIHJlcXVlc3RlZCB0 aHJvdWdoIHByZWZpeCBhcmcuCgpPbiBzZWNvbmQgY29uc2VjdXRpdmUgaW52b2NhdGlvbiwgYm94 IHJlZ2lvbiBvciBjb21tZW50IHVzaW5nCnByZWZpeCBhcmcgc3BlY2lmaWVkIHN0eWxlIG9yIGBy ZWJveC1kZWZhdWx0LXN0eWxlJy4KCklmIHJlZ2lvbiBpcyBhY3RpdmUsIHRoZSByZWdpb24gd2ls bCBzdGF5IGFjdGl2ZSBhZnRlciB0aGlzIGNvbW1hbmQuCgpUaGlzIGZ1bmN0aW9uIHByb2Nlc3Nl cyBwcmVmaXggYXJnIHRoZSBzYW1lIHdheSBhc2ByZWJveC1jb21tZW50JyB3aXRoIHRoZQogIGV4 Y2VwdGlvbiB0aGF0OgoKICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgIHwgc3BlY2lmeWluZyBgLScgd2ls bCB1bmJveCB0aGUgcmVnaW9uIG9yIGNvbW1lbnQgdG8gfAogICAgICAgICAgICB8IGByZWJveC1k ZWZhdWx0LXVuYm94LXN0eWxlJyB3aXRoIHJlZmlsbCAgICAgICAgICAgfAogICAgICAgICAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIgog IChpbnRlcmFjdGl2ZSAiKlAiKQogIChsZXQgKChvcmlnLW0gKHBvaW50LW1hcmtlcikpCiAgICAg ICAgOztjb3B5IG9mIG1hcmssIHNvIHdlIGNhbiBwb3NzaWJseSBjaGFuZ2UgdGhlIGluc2VydGlv biB0eXBlCiAgICAgICAgdGVtcC1tYXJrCiAgICAgICAgKHN0eWxlIChyZWJveC1nZXQtc3R5bGUt ZnJvbS1wcmVmaXgtYXJnIGN1cnJlbnQtcHJlZml4LWFyZwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6dXNlLWRlZmF1bHQgbmlsIDphc2sgbmlsKSkKICAg ICAgICBwcmV2aW91cy1zdHlsZSkKICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgIChjb25kaXRp b24tY2FzZSBlcnIKICAgICAgICAgIChpZiAodXNlLXJlZ2lvbi1wKQogICAgICAgICAgICAgIChs ZXQgKGRlYWN0aXZhdGUtbWFyaykKICAgICAgICAgICAgICAgIChpZiAoYW5kIChwcm9nMgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHJlZ2lvbi1iZWdpbm5pbmcpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAocG9pbnQpIChwb2ludC1hdC1ib2wpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9yaWctbSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAocHJvZzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1j aGFyIChyZWdpb24tZW5kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKHBvaW50 KSAocG9pbnQtYXQtYm9sKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBv cmlnLW0pKSkKICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAg IChzZXRxIHRlbXAtbWFyayAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpIChtYXJrKSkpCiAgICAg ICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlci1pbnNlcnRpb24tdHlwZSAoaWYgKDwgdGVtcC1t YXJrIG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcmlnLW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGVtcC1tYXJrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdCkKICAgICAgICAgICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIChy ZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkpCiAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBwcmV2aW91cy1zdHlsZSAocmVib3gtZ3Vlc3Mtc3R5bGUpKQogICAgICAgICAgICAgICAgICAg ICAgKGlmIChvciAobWVtcSBsYXN0LWNvbW1hbmQgJyhyZWJveC1kd2ltLWZpbGwpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAo cHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHN0eWxlIChvciBzdHlsZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWJveC1nZXQtc3R5 bGUtZm9yLW1ham9yLW1vZGUgcmVib3gtZGVmYXVsdC1zdHlsZSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1lc3NhZ2UgIlJlYm94IGNoYW5naW5nIHN0eWxlOiAlcyAtPiAlcyIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLXN0eWxlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZWJveC1lbmdpbmUgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDpyZWZpbGwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6cHJldmlvdXMtc3R5bGUgcHJldmlvdXMtc3R5bGUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnF1aWV0IHQpKQogICAgICAgICAgICAgICAg ICAgICAgICAobWVzc2FnZSAiUmVmaWxsaW5nIHN0eWxlOiAlcyIgcHJldmlvdXMtc3R5bGUpCiAg ICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgcHJldmlvdXMtc3R5bGUgMTExKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgb3JpZy1tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC1p bnRlcmFjdGl2ZWx5ICdmaWxsLXJlZ2lvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJl Ym94LWVuZ2luZSA6c3R5bGUgcHJldmlvdXMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpyZWZpbGwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOnByZXZpb3VzLXN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6cXVpZXQgdCkpKQogICAgICAgICAgICAgICAgICAgICAg KHNldC1tYXJrIHRlbXAtbWFyaykpCiAgICAgICAgICAgICAgICAgIChpZiAobWVtcSBsYXN0LWNv bW1hbmQgJyhyZWJveC1kd2ltLWZpbGwpKQogICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHIt YmVnIChwcm9nMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh ciAocmVnaW9uLWJlZ2lubmluZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocG9pbnQtbWFya2VyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdv dG8tY2hhciBvcmlnLW0pKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyLWVuZCAocHJv ZzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocmVn aW9uLWVuZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludC1t YXJrZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9y aWctbSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKHJlYm94LWVuc3VyZS1yZWdpb24td2hv bGUtbGluZXMgci1iZWcgci1lbmQpCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPCAocG9p bnQpIChtYXJrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0LW1hcmsgci1lbmQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgci1iZWcpKQogICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXQtbWFyayByLWJlZykKICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHItZW5k KSkKICAgICAgICAgICAgICAgICAgICAgICAgKHJlYm94LWR3aW0tZmlsbCBhcmcpCiAgICAgICAg ICAgICAgICAgICAgICAgIChzZXQtbWFya2VyIG9yaWctbSAocG9pbnQpKSkKICAgICAgICAgICAg ICAgICAgICAobWVzc2FnZSAiUmVmaWxsaW5nIHJlZ2lvbiIpCiAgICAgICAgICAgICAgICAgICAg KGZpbGwtcmVnaW9uIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkpKSkpCiAgICAgICAg ICAgIChyZWJveC1maW5kLWFuZC1uYXJyb3cgOmNvbW1lbnQtb25seSBjb21tZW50LWF1dG8tZmls bC1vbmx5LWNvbW1lbnRzKQogICAgICAgICAgICAoc2V0cSBwcmV2aW91cy1zdHlsZSAocmVib3gt Z3Vlc3Mtc3R5bGUpKQogICAgICAgICAgICAoaWYgKG9yIChtZW1xIGxhc3QtY29tbWFuZCAnKHJl Ym94LWR3aW0tZmlsbCkpCiAgICAgICAgICAgICAgICAgICAgc3R5bGUpCiAgICAgICAgICAgICAg ICAocHJvZ24KICAgICAgICAgICAgICAgICAgKHNldHEgc3R5bGUgKG9yIHN0eWxlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocmVib3gtZ2V0LXN0eWxlLWZvci1tYWpvci1tb2Rl IHJlYm94LWRlZmF1bHQtc3R5bGUpKSkKICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIlJlYm94 IGNoYW5naW5nIHN0eWxlOiAlcyAtPiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl dmlvdXMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUpCiAgICAgICAgICAg ICAgICAgIChyZWJveC1lbmdpbmUgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOnJlZmlsbCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnByZXZp b3VzLXN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Om1hcmtlZC1wb2ludCBvcmlnLW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cXVp ZXQgdCkpCiAgICAgICAgICAgICAgKG1lc3NhZ2UgIlJlZmlsbGluZyBzdHlsZTogJXMiIHByZXZp b3VzLXN0eWxlKQogICAgICAgICAgICAgIChyZWJveC1lbmdpbmUgOnJlZmlsbCB0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6cHJldmlvdXMtc3R5bGUgcHJldmlvdXMtc3R5bGUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpzdHlsZSBwcmV2aW91cy1zdHlsZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgOm1hcmtlZC1wb2ludCBvcmlnLW0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpxdWlldCB0KSkpCiAgICAgICAgKCdyZWJveC1lcnJvcgogICAgICAgICAoc2lnbmFs IChjYXIgZXJyKSAoY2RyIGVycikpKQogICAgICAgICgnZXJyb3IKICAgICAgICAgKGVycm9yICJy ZWJveC1kd2ltLWZpbGwgd3JhcHBlcjogJXMiIGVycikpKSkKICAgIChnb3RvLWNoYXIgb3JpZy1t KSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gcmVib3gtZHdpbS1uby1maWxsIChhcmcpCiAgIlJl Ym94IHJlZ2lvbiBvciBjb21tZW50LCBuZXZlciByZWZpbGxpbmcuCgpUaGlzIGZ1bmN0aW9uIHBy b2Nlc3NlcyBwcmVmaXggYXJnIHRoZSBzYW1lIHdheSBhc2ByZWJveC1jb21tZW50JyB3aXRoIHRo ZQogIGV4Y2VwdGlvbiB0aGF0OgoKICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgIHwgc3BlY2lmeWluZyBg LScgd2lsbCB1bmJveCB0aGUgcmVnaW9uIG9yIGNvbW1lbnQgdG8gfAogICAgICAgICAgICB8IGBy ZWJveC1kZWZhdWx0LXVuYm94LXN0eWxlJyAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAg ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKIgogIChpbnRlcmFjdGl2ZSAiKlAiKQogIChsZXQgKChzdHlsZSAocmVib3gtZ2V0LXN0eWxl LWZyb20tcHJlZml4LWFyZyBjdXJyZW50LXByZWZpeC1hcmcgOmFzayBuaWwpKQogICAgICAgIChy ZWZpbGwgKHJlYm94LWdldC1yZWZpbGwtZnJvbS1wcmVmaXgtYXJnIGN1cnJlbnQtcHJlZml4LWFy ZykpKQogICAgKGlmICh1c2UtcmVnaW9uLXApCiAgICAgICAgKHJlYm94LXJlZ2lvbiAocmVnaW9u LWJlZ2lubmluZykKICAgICAgICAgICAgICAgICAgICAgIChyZWdpb24tZW5kKQogICAgICAgICAg ICAgICAgICAgICAgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgICA6cmVmaWxsIG5p bCkKICAgICAgKHJlYm94LWNvbW1lbnQgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAg IDpyZWZpbGwgbmlsKSkpKQoKKGRlZnVuIHJlYm94LWRvLWF1dG8tZmlsbCAoKQogICJUcnkgdG8g ZmlsbCBhcyBib3ggZmlyc3QsIGlmIHRoYXQgZmFpbHMgdXNlIGBkby1hdXRvLWZpbGwnCiIKICAo bGV0ICgob3JpZy1tIChwb2ludC1tYXJrZXIpKQogICAgICAgIHN0eWxlKQogICAgKGNvbmRpdGlv bi1jYXNlIGVycgogICAgICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICAgICAocmVib3gtZmlu ZC1hbmQtbmFycm93IDpjb21tZW50LW9ubHkgY29tbWVudC1hdXRvLWZpbGwtb25seS1jb21tZW50 cykKICAgICAgICAgIChzZXRxIHN0eWxlIChyZWJveC1ndWVzcy1zdHlsZSkpCiAgICAgICAgICAo aWYgKD0gc3R5bGUgMTExKQogICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgKGdv dG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAgICAoZG8tYXV0by1maWxsKSkKICAgICAgICAg ICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgICAgICAocmVib3gtZW5naW5lIDpwcmV2 aW91cy1zdHlsZSBzdHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOnJlZmlsbCAnYXV0 by1maWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cXVpZXQgdAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgOm1vdmUtcG9pbnQgbmlsKQogICAgICAgICAgICA7OyBUaGlzIGlzIGhh Y2t5LiAgSWYgeW91IHByZXNzIGVudGVyIG9uIHRoZSBlbmQgb2YgdGhlIGJvdHRvbQogICAgICAg ICAgICA7OyBib3JkZXIgb2YgYSBib3gsIHRoZSBtYXJrZXIgd2lsbCBtb3ZlIHRvIHRoZSBiZWdp bm5pbmcgb2YKICAgICAgICAgICAgOzsgbmV4dCBsaW5lLgogICAgICAgICAgICA7OwogICAgICAg ICAgICA7OyBIb3dldmVyLCBhcyBhIHBhcnQgb2Ygbm9ybWFsIGZpbGwgYWN0aW9uLCB0aGUgcG9p bnQgY2Fubm90IGJlCiAgICAgICAgICAgIDs7IGF0IGJvbCwgc28gd2UganVzdCBtb3ZlIGl0IGJh Y2sgb25lPyAgSXMgdGhpcyBfcmlnaHRfPwogICAgICAgICAgICAod2hlbiAoYW5kIChib2xwKQog ICAgICAgICAgICAgICAgICAgICAgIDs7IHdoZW4gcHJlc3Npbmcgc3BhY2UgaW4gdGhlIE5XIGNv cm5lciBvZiBib3gKICAgICAgICAgICAgICAgICAgICAgICAobm90IChib2JwKSkpCiAgICAgICAg ICAgICAgKGJhY2t3YXJkLWNoYXIpKQogICAgICAgICAgICApKQogICAgICAoJ3JlYm94LWVycm9y CiAgICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgIChkby1hdXRvLWZpbGwpKQogICAgICAo J2Vycm9yCiAgICAgICAoZXJyb3IgInJlYm94LWRvLWF1dG8tZmlsbCB3cmFwcGVyOiAlcyIgZXJy KSkpKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biByZWJveC1pbmRlbnQtbmV3LWxpbmUgKGFyZykK ICAiQ3JlYXRlIG5ld2xpbmUuCgpQcmVmaXggYXJnIGdyZWF0ZXIgdGhhbiB6ZXJvIGluc2VydHMg YXJnIGxpbmVzLiAgT3RoZXIgcHJlZml4IGFyZwpjYXVzZXMgcmVmaWxsaW5nIHdpdGhvdXQgYWN0 dWFsbHkgaW5zZXJ0aW5nIGEgbmV3bGluZS4KCklmIHBvaW50IGlzIHdpdGhpbiBhIGJveCwga2Vl cCBjb21tZW50IGJveGVkLiAgRWxzaWYgcG9pbnQgaXMKaW4gYSBjb21tZW50LCBjb250aW51ZSBj b21tZW50IG9uIHRoZSBuZXh0IGxpbmUuICBFbHNlLCBuZXdsaW5lCmFuZCBpbmRlbnQuCiIKICAo aW50ZXJhY3RpdmUgIipQIikKICAoc2F2ZS1yZXN0cmljdGlvbgogICAgKGxldCAob3JpZy1tCiAg ICAgICAgICBzdHlsZQogICAgICAgICAgdGV4dC1iZWctY29sCiAgICAgICAgICApCiAgICAgIChj b25kaXRpb24tY2FzZSBlcnIKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAoc2V0cSBvcmln LW0gKHBvaW50LW1hcmtlcikpCiAgICAgICAgICAgIChyZWJveC1maW5kLWFuZC1uYXJyb3cgOmNv bW1lbnQtb25seSBjb21tZW50LWF1dG8tZmlsbC1vbmx5LWNvbW1lbnRzKQogICAgICAgICAgICAo c2V0LW1hcmtlci1pbnNlcnRpb24tdHlwZSBvcmlnLW0gdCkKICAgICAgICAgICAgKHNldHEgc3R5 bGUgKHJlYm94LWd1ZXNzLXN0eWxlKSkKICAgICAgICAgICAgKGlmIChub3QgKGVxIHN0eWxlIDEx MSkpIDsgMTExIGlzIG5vLWJveAogICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAgIChzZXRxIGFyZyAoY29uZCAoKG5vdCBhcmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kIGFyZwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bWJlcnAgYXJnKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gYXJnIDApKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkpCiAgICAg ICAgICAgICAgICAgIChyZWJveC1lbmdpbmUgOnByZXZpb3VzLXN0eWxlIHN0eWxlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnJlZmlsbCBuaWwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6bW9kLWZ1bmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Oy1sdy0ganVzdCBhbHdh eXMgZ290byBiZWdpbm5pbmcgb2YgbGluZT8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3aGVuIGFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1j aGFyIG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChsb29r aW5nLWF0LXAgIlsgXHRdKiQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgY3JlYXRpbmcgYmxhbmsgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgdGV4dC1iZWctY29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiAobG9va2luZy1hdC1wICJbIFx0XSokIikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9y aWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCsgcHJldmlvdXMtbWFyZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggd3cpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJz LWZvcndhcmQgIiBcdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCsgcHJldmlvdXMtbWFyZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCB3dykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRleHQtYmVnLWNvbCAoKyBw cmV2aW91cy1tYXJnaW4gKGxlbmd0aCB3dykpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChuZXdsaW5lIGFyZykpKSkKICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcmln LW0pCiAgICAgICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiB0ZXh0LWJlZy1jb2wgdCkpCiAg ICAgICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAgKGNhbGwtaW50ZXJh Y3RpdmVseSAocmVib3gtZ2V0LW5ld2xpbmUtaW5kZW50LWZ1bmN0aW9uKSkpKQogICAgICAgICgn cmVib3gtY29tbWVudC1ub3QtZm91bmQtZXJyb3IKICAgICAgICAgKG1lc3NhZ2UgInJlYm94LWlu ZGVudC1uZXctbGluZTogdW5hYmxlIHRvIGZpbmQgY29tbWVudCwgY2FsbGluZyBzYXZlZCBmdW5j dGlvbi4iKQogICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5IChyZWJveC1nZXQtbmV3bGluZS1p bmRlbnQtZnVuY3Rpb24pKSkKICAgICAgICAoJ2Vycm9yCiAgICAgICAgIChlcnJvciAicmVib3gt aW5kZW50LW5ldy1saW5lIHdyYXBwZXI6ICVzIiBlcnIpKSkpKSkKCgwKCihkZWZ1biByZWJveC1r aWxsLXlhbmstd3JhcHBlciAobW9kLWZ1bmMgb3JpZy1mdW5jKQogIChsZXQgKChvcmlnLW0gKHBv aW50LW1hcmtlcikpCiAgICAgICAgcHJldmlvdXMtc3R5bGUpCiAgICAoY29uZGl0aW9uLWNhc2Ug ZXJyCiAgICAgICAgKHByb2duCiAgICAgICAgICAod2hlbiAoYW5kIGN1cnJlbnQtcHJlZml4LWFy ZwogICAgICAgICAgICAgICAgICAgKGxpc3RwIGN1cnJlbnQtcHJlZml4LWFyZykpCiAgICAgICAg ICAgICAgKHNpZ25hbCAncmVib3gtZXJyb3IgbmlsKSkKICAgICAgICAgIChzYXZlLXJlc3RyaWN0 aW9uCiAgICAgICAgICAgIChyZWJveC1maW5kLWFuZC1uYXJyb3cgOmNvbW1lbnQtb25seSBjb21t ZW50LWF1dG8tZmlsbC1vbmx5LWNvbW1lbnRzKQogICAgICAgICAgICAod2hlbiAoYW5kICh1c2Ut cmVnaW9uLXApCiAgICAgICAgICAgICAgICAgICAgICAgKG9yICg8IChtYXJrKSAocG9pbnQtbWlu KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gKG1hcmspIChwb2ludC1tYXgpKSkpCiAg ICAgICAgICAgICAgKHNpZ25hbCAncmVib3gtZXJyb3IgIm1hcmsgaXMgb3V0IG9mIGJveCIpKQog ICAgICAgICAgICAoc2V0cSBwcmV2aW91cy1zdHlsZSAocmVib3gtZ3Vlc3Mtc3R5bGUpKQogICAg ICAgICAgICAoaWYgKGVxIHByZXZpb3VzLXN0eWxlIDExMSkKICAgICAgICAgICAgICAgIChzaWdu YWwgJ3JlYm94LWVycm9yICJzdHlsZSBpcyAxMTEiKQogICAgICAgICAgICAgIChyZWJveC1lbmdp bmUgOnN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFy a2VkLXBvaW50IG9yaWctbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOnF1aWV0IHQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDpyZWZpbGwgbmlsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6bW92ZS1wb2ludCBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwcmV2 aW91cy1zdHlsZSBwcmV2aW91cy1zdHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1v ZC1mdW5jCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QtZnVuYykpKSkKICAgICAgKCdy ZWJveC1lcnJvcgogICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAoYW5kIG9yaWctZnVu YwogICAgICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5IG9yaWctZnVuYykpKQogICAgICAoJ2Vy cm9yCiAgICAgICAoc2lnbmFsIChjYXIgZXJyKSAoY2RyIGVycikpKSkpKQoKKGRlZnVuIHJlYm94 LWxlZnQtYm9yZGVyLXdyYXBwZXIgKGluc3AtZnVuYyBvcmlnLWZ1bmMpCiAgKGxldCAoKG9yaWct bSAocG9pbnQtbWFya2VyKSkKICAgICAgICAob3JpZy1jb2wgKGN1cnJlbnQtY29sdW1uKSkKICAg ICAgICBwcmV2aW91cy1zdHlsZSkKICAgIChjb25kaXRpb24tY2FzZSBlcnIKICAgICAgICAocHJv Z24KICAgICAgICAgICh3aGVuICh1c2UtcmVnaW9uLXApCiAgICAgICAgICAgIChzaWduYWwgJ3Jl Ym94LWVycm9yICJyZWdpb24gdXNlZCIpKQogICAgICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KICAg ICAgICAgICAgKHJlYm94LWZpbmQtYW5kLW5hcnJvdyA6Y29tbWVudC1vbmx5IGNvbW1lbnQtYXV0 by1maWxsLW9ubHktY29tbWVudHMpCiAgICAgICAgICAgIChzZXRxIHByZXZpb3VzLXN0eWxlIChy ZWJveC1ndWVzcy1zdHlsZSkpCiAgICAgICAgICAgIChpZiAoZXEgcHJldmlvdXMtc3R5bGUgMTEx KQogICAgICAgICAgICAgICAgKHNpZ25hbCAncmVib3gtZXJyb3IgInN0eWxlIGlzIDExMSIpCiAg ICAgICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAgKHJlYm94LWVuZ2lu ZSA6c3R5bGUgcHJldmlvdXMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJr ZWQtcG9pbnQgb3JpZy1tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cXVpZXQgdAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnJlZmlsbCBuaWwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDptb3ZlLXBvaW50IG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOnByZXZp b3VzLXN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aW5z cC1mdW5jCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNwLWZ1bmMpKSkpCiAgICAgICgn cmVib3gtZXJyb3IKICAgICAgIChnb3RvLWNoYXIgb3JpZy1tKQogICAgICAgKGFuZCBvcmlnLWZ1 bmMKICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSBvcmlnLWZ1bmMpKSkKICAgICAgKCdl cnJvcgogICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNkciBlcnIpKSkpKSkKCgoKKGRlZnVuIHJl Ym94LWVuc3VyZS1yZWdpb24td2hvbGUtbGluZXMgKHItYmVnIHItZW5kKQogICJFbnN1cmUgcmVn aW9uIGNvdmVyZWQgYnkgci1iZWcgYW5kIHItZW5kIGFyZSB3aG9sZSBsaW5lcy4KClItQkVHIGFu ZCBSLUVORCBhcmUgbWFya2Vycy4gIFdlIGFzc3VtZSBSLUJFRyA8IFItRU5ELgoKUmV0dXJucyB0 IHdoZW4gY2hhbmdlcyB3ZXJlIG1hZGUgdG8gdGhlIG1hcmtlcnMuIgogIChsZXQgKGNvbAogICAg ICAgIGNoYW5nZXMtbWFkZSkKICAgIChnb3RvLWNoYXIgci1iZWcpCiAgICAodW5sZXNzIChib2xw KQogICAgICAoc2V0cSBjaGFuZ2VzLW1hZGUgdCkKICAgICAgKHNldHEgY29sIChjdXJyZW50LWNv bHVtbikpCiAgICAgIChiZWdpbm5pbmctb2YtbGluZSAxKQogICAgICAodW5sZXNzIChwcm9nMgog ICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKQogICAgICAgICAgICAg ICAgICAoPj0gKGN1cnJlbnQtY29sdW1uKSBjb2wpKQogICAgICAgIChnb3RvLWNoYXIgci1iZWcp CiAgICAgICAgKGluc2VydCAiXG4iKQogICAgICAgIChpbmRlbnQtdG8gY29sKSkKICAgICAgKHNl dC1tYXJrZXIgci1iZWcgKHBvaW50LWF0LWJvbCkpKQogICAgKGdvdG8tY2hhciByLWVuZCkKICAg ICh1bmxlc3MgKGJvbHApCiAgICAgIChzZXRxIGNoYW5nZXMtbWFkZSB0KQogICAgICAoaWYgKGFu ZCAobG9va2luZy1hdC1wICJbIFx0XSokIikKICAgICAgICAgICAgICAgKG5vdCAoZW9icCkpKQog ICAgICAgICAgKHNldC1tYXJrZXIgci1lbmQgKHBvaW50LWF0LWJvbCAyKSkKICAgICAgICAoaW5z ZXJ0ICJcbiIpCiAgICAgICAgKHNldC1tYXJrZXIgci1lbmQgKHBvaW50KSkpKQogICAgY2hhbmdl cy1tYWRlKSkKCihkZWZ1biogcmVib3gtZW5naW5lICgma2V5IHN0eWxlCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluc3AtZnVuYwogICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QtZnVu YwogICAgICAgICAgICAgICAgICAgICAgICAgICAocmVmaWxsIHQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwcmV2aW91cy1zdHlsZSBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAg IChxdWlldCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrZWQtcG9pbnQgbmls KQogICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZS1wb2ludCB0KSkKICAiQWRkLCBkZWxl dGUgb3IgYWRqdXN0IGEgY29tbWVudCBib3ggaW4gdGhlIG5hcnJvd2VkIGJ1ZmZlci4KClRoZSBu YXJyb3dlZCBidWZmZXIgc2hvdWxkIGNvbnRhaW4gb25seSB3aG9sZSBsaW5lcywgb3RoZXJ3aXNl IGl0IHdpbGwgbG9vayBzdHJhbmdlIG9uY2Ugd2lkZW5lZC4KCiIKICAobGV0KiAoKHVuZG8tbGlz dCBidWZmZXItdW5kby1saXN0KQogICAgICAgICAobWFya2VkLXBvaW50IChvciBtYXJrZWQtcG9p bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1hcmtlcikpKQogICAgICAgICAo cHJldmlvdXMtbWFyZ2luIChyZWJveC1sZWZ0LW1hcmdpbikpCiAgICAgICAgIChwcmV2aW91cy1z dHlsZSAob3IgcHJldmlvdXMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVi b3gtZ3Vlc3Mtc3R5bGUpKSkKICAgICAgICAgKHByZXZpb3VzLXN0eWxlLWRhdGEgKGNkciAoYXNz cSBwcmV2aW91cy1zdHlsZSByZWJveC1zdHlsZS1kYXRhKSkpCiAgICAgICAgIChwcmV2aW91cy1t ZXJnZS1udyAoYXJlZiBwcmV2aW91cy1zdHlsZS1kYXRhIDQpKQogICAgICAgICAocHJldmlvdXMt bWVyZ2Utc2UgKGFyZWYgcHJldmlvdXMtc3R5bGUtZGF0YSA1KSkKICAgICAgICAgKHByZXZpb3Vz LW53IChhcmVmIHByZXZpb3VzLXN0eWxlLWRhdGEgNikpCiAgICAgICAgIChwcmV2aW91cy1ubiAo YXJlZiBwcmV2aW91cy1zdHlsZS1kYXRhIDcpKQogICAgICAgICAocHJldmlvdXMtbmUgKGFyZWYg cHJldmlvdXMtc3R5bGUtZGF0YSA4KSkKICAgICAgICAgKHByZXZpb3VzLXd3IChhcmVmIHByZXZp b3VzLXN0eWxlLWRhdGEgOSkpCiAgICAgICAgIChwcmV2aW91cy1lZSAoYXJlZiBwcmV2aW91cy1z dHlsZS1kYXRhIDEwKSkKICAgICAgICAgKHByZXZpb3VzLXN3IChhcmVmIHByZXZpb3VzLXN0eWxl LWRhdGEgMTEpKQogICAgICAgICAocHJldmlvdXMtc3MgKGFyZWYgcHJldmlvdXMtc3R5bGUtZGF0 YSAxMikpCiAgICAgICAgIChwcmV2aW91cy1zZSAoYXJlZiBwcmV2aW91cy1zdHlsZS1kYXRhIDEz KSkKICAgICAgICAgKHN0eWxlIChvciBzdHlsZSBwcmV2aW91cy1zdHlsZSkpCiAgICAgICAgIChz dHlsZS1kYXRhIChvciAoY2RyIChhc3NxIHN0eWxlIHJlYm94LXN0eWxlLWRhdGEpKQogICAgICAg ICAgICAgICAgICAgICAgICAgKHNpZ25hbCAncmVib3gtZXJyb3IgKGZvcm1hdCAic3R5bGUgXCIl c1wiaXMgdW5rbm93biIgc3R5bGUpKSkpCiAgICAgICAgICh3dyAoYXJlZiBzdHlsZS1kYXRhIDkp KQogICAgICAgICAodW5pbmRlbnQtY291bnQgKCsgcHJldmlvdXMtbWFyZ2luIChsZW5ndGggcHJl dmlvdXMtd3cpKSkKICAgICAgICAgOzsgKG1hcmtlZC1jb2wtd2l0aGluLWJveCAocHJvZ24KICAg ICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgbWFya2VkLXBvaW50 KQogICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKGN1cnJlbnQtY29sdW1u KQogICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pbmRlbnQtY291bnQp KSkKICAgICAgICAgKQoKCiAgICAodW5sZXNzIHF1aWV0CiAgICAgIChpZiAoPSBwcmV2aW91cy1z dHlsZSBzdHlsZSkKICAgICAgICAgIChtZXNzYWdlICJLZWVwaW5nIHN0eWxlIFwiJXNcIiVzLiIK ICAgICAgICAgICAgICAgICAgIHN0eWxlCiAgICAgICAgICAgICAgICAgICAoY29uY2F0ICh3aGVu IHJlZmlsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIHJlZmlsbGluZyIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGluc3AtZnVuYwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIsIHJ1bm5pbmcgaW5zcC1mdW5jIikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHdoZW4gbW9kLWZ1bmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBydW5uaW5n IG1vZC1mdW5jIikpKQogICAgICAgIChtZXNzYWdlICJTdHlsZTogJWQgLT4gJWQiIChvciBwcmV2 aW91cy1zdHlsZSAwKSBzdHlsZSkpKQoKICAgIDs7IGF0dGVtcHQgdG8gYm94IG9ubHkgc3BhY2Vz CiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0 XG4iKQogICAgKHdoZW4gKG5vdCAoPCAocG9pbnQpIChwb2ludC1tYXgpKSkKICAgICAgKHNpZ25h bCAncmVib3gtZXJyb3IgIkNhbm5vdCBib3ggcmVnaW9uIGNvbnNpc3Rpbmcgb2Ygb25seSBzcGFj ZXMuIikpCgogICAgOzsgdW50YWJpZnksIGJ1dCBwcmVzZXJ2ZSBwb3NpdGlvbiBvZiBtYXJrZWQt cG9pbnQKICAgIChsZXQgKChtYXJrZWQtY29sIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIG1hcmtlZC1wb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtY29sdW1uKSkpKQogICAgICAodW50YWJpZnkgKHBvaW50LW1pbikgKHBvaW50LW1heCkpCiAg ICAgIChnb3RvLWNoYXIgbWFya2VkLXBvaW50KQogICAgICAodW5sZXNzICg9IChjdXJyZW50LWNv bHVtbikgbWFya2VkLWNvbCkKICAgICAgICAobW92ZS10by1jb2x1bW4gbWFya2VkLWNvbCkKICAg ICAgICAoc2V0LW1hcmtlciBtYXJrZWQtcG9pbnQgKHBvaW50KSkpKQoKICAgIChjYXRjaCAncmVi b3gtZW5naW5lLWRvbmUKICAgICAgOzsgaW5zcGVjdCB0aGUgYm94CiAgICAgICh3aGVuIGluc3At ZnVuYwogICAgICAgIChpZiAoZnVuY3Rpb25wIGluc3AtZnVuYykKICAgICAgICAgICAgKGZ1bmNh bGwgaW5zcC1mdW5jKQogICAgICAgICAgKGVycm9yICIlcyBpcyBub3QgYSBmdW5jdGlvbiIgaW5z cC1mdW5jKSkpCgogICAgICA7OyBpZiB3ZSBkb24ndCBzZXQgdGhlIGluc2VydGlvbiB0eXBlLCBh bmQgaXQgZ2V0cyBwdWxsZWQgdG8gdGhlIGJlZ2lubmluZwogICAgICA7OyBvZiBsaW5lLCBpdCB3 aWxsIGdldCBzdHVjayB0aGVyZS4KICAgICAgKGdvdG8tY2hhciBtYXJrZWQtcG9pbnQpCiAgICAg ICh3aGVuIChlb2xwKQogICAgICAgIChzZXQtbWFya2VyLWluc2VydGlvbi10eXBlIG1hcmtlZC1w b2ludCB0KSkKCiAgICAgIDs7IFJlbW92ZSBhbGwgcHJldmlvdXMgY29tbWVudCBtYXJrcy4KICAg ICAgKHVubGVzcyAoZXEgcHJldmlvdXMtc3R5bGUgMTExKQogICAgICAgIChyZWJveC11bmJ1aWxk IHByZXZpb3VzLXN0eWxlKSkKCiAgICAgICh1bmxlc3MgcmVib3gta2VlcC1ibGFuay1saW5lcwog ICAgICAgIDs7IFJlbW92ZSBhbGwgc3B1cmlvdXMgd2hpdGVzcGFjZS4KICAgICAgICAoZ290by1j aGFyIChwb2ludC1taW4pKQogICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIiArJCIg bmlsIHQpCiAgICAgICAgICAocmVwbGFjZS1tYXRjaCAiIiB0IHQpKQogICAgICAgIChnb3RvLWNo YXIgKHBvaW50LW1pbikpCiAgICAgICAgKGRlbGV0ZS1jaGFyICgtIChza2lwLWNoYXJzLWZvcndh cmQgIlxuIikpKQogICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAgKHdoZW4g KD0gKHByZWNlZGluZy1jaGFyKSA/XG4pCiAgICAgICAgICAoZm9yd2FyZC1jaGFyIC0xKSkKICAg ICAgICAoZGVsZXRlLWNoYXIgKC0gKHNraXAtY2hhcnMtYmFja3dhcmQgIlxuIikpKQogICAgICAg IChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2Fy ZCAiXG5cblxuKyIgbmlsIHQpCiAgICAgICAgICAocmVwbGFjZS1tYXRjaCAiXG5cbiIgdCB0KSkp CgogICAgICA7OyBNb3ZlIGFsbCB0aGUgdGV4dCByaWdpZGx5IHRvIHRoZSBsZWZ0IGZvciBpbnN1 cmluZyB0aGF0IHRoZSBsZWZ0CiAgICAgIDs7IG1hcmdpbiBzdGF5cyBhdCB0aGUgc2FtZSBwbGFj ZS4KICAgICAgKHVubGVzcyAoemVyb3AgdW5pbmRlbnQtY291bnQpCiAgICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkKICAgICAgICAod2hpbGUgKG5vdCAoZW9icCkpCiAgICAgICAgICAoYmFj a3dhcmQtZGVsZXRlLWNoYXIgKHNraXAtY2hhcnMtZm9yd2FyZCAiICIgKCsgKHBvaW50KSB1bmlu ZGVudC1jb3VudCkpKQogICAgICAgICAgKGZvcndhcmQtbGluZSAxKSkpCgogICAgICA7OyBtb2Rp ZnkgdGhlIGJveAogICAgICAod2hlbiBtb2QtZnVuYwogICAgICAgIChpZiAoZnVuY3Rpb25wIG1v ZC1mdW5jKQogICAgICAgICAgICAoZnVuY2FsbCBtb2QtZnVuYykKICAgICAgICAgIChlcnJvciAi JXMgaXMgbm90IGEgZnVuY3Rpb24iIG1vZC1mdW5jKSkpCgogICAgICA7OyBlbXB0eSBib3hlcyBh cmUgYWxsb3dlZCBpZiB3ZSBhcmUganVzdCBkb2luZyBhbiBhdXRvZmlsbCwgb3RoZXJ3aXNlCiAg ICAgIDs7IHdlIGNhbiBuZXZlciBzdGFydCBhIGNvbW1lbnQsIGFzIHRoZSAic3BhY2UiIGFmdGVy IGBjb21tZW50LXN0YXJ0JwogICAgICA7OyB3aWxsIHRyaWdnZXIgYXV0by1maWxsLWZ1bmN0aW9u LgogICAgICAod2hlbiAobm90IChlcSByZWZpbGwgJ2F1dG8tZmlsbCkpCiAgICAgICAgOzsgaWYg dGhlIG5hcnJvd2VkIGJveCBpcyBhbGwgYmxhbmtzIG5vdywgZGVsZXRlIGl0IGFuZCBxdWl0CiAg ICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJk ICIgXHRcbiIpCiAgICAgICAgKHdoZW4gKGVxIChwb2ludCkgKHBvaW50LW1heCkpCiAgICAgICAg ICAoZGVsZXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAgICAgICAgICh0aHJv dyAncmVib3gtZW5naW5lLWRvbmUgdCkpKQoKICAgICAgOzsgUG9zc2libHkgcmVmaWxsLCB0aGVu IGJ1aWxkIHRoZSBjb21tZW50IGJveC4KICAgICAgKGxldCAoKGluZGVudC10YWJzLW1vZGUgbmls KSkKICAgICAgICAocmVib3gtYnVpbGQgcmVmaWxsIHByZXZpb3VzLW1hcmdpbiBzdHlsZSBtYXJr ZWQtcG9pbnQgbW92ZS1wb2ludCkpKQoKICAgIDs7IFJldGFiaWZ5IHRvIHRoZSBsZWZ0IG9ubHkg KGFkYXB0ZWQgZnJvbSB0YWJpZnkuZWwpLgogICAgKGlmIGluZGVudC10YWJzLW1vZGUKICAgICAg ICAobGV0ICgobWFya2VkLWNvbCAocHJvZ24KCQkJICAgIDs7IEZpbGVuYW1lOiByZWJveDIuZWwg aGFjayB0byBnZXQgYXJvdW5kIGVtYWNzCgkJCSAgICA7OyBidWcsIGlmIHRoaXMgZm9ybWF0IGxp bmUgaXNuJ3QgaGVyZSBhbmQKCQkJICAgIDs7IGBpbmRlbnQtdGFicy1tb2RlJyBpcyB0LAoJCQkg ICAgOzsgcmVib3gtYmVnaW5uaW5nLW9mLWxpbmUgZG9lc24ndCB3b3JrIGFzCgkJCSAgICA7OyBl eHBlY3RlZAo7CQkJICAgIChmb3JtYXQgIiVzIiBtYXJrZWQtcG9pbnQpCgkJCSAgICAoZ290by1j aGFyIG1hcmtlZC1wb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNv bHVtbikpKSkKICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAgICAod2hp bGUgKHJlLXNlYXJjaC1mb3J3YXJkICJeWyBcdF1bIFx0XSsiIG5pbCB0KQogICAgICAgICAgICAo bGV0ICgoY29sdW1uIChjdXJyZW50LWNvbHVtbikpKQogICAgICAgICAgICAgIChkZWxldGUtcmVn aW9uIChtYXRjaC1iZWdpbm5pbmcgMCkgKHBvaW50KSkKICAgICAgICAgICAgICAoaW5kZW50LXRv IGNvbHVtbikpKQogICAgICAgICAgKGdvdG8tY2hhciBtYXJrZWQtcG9pbnQpCiAgICAgICAgICAo dW5sZXNzICg9IChjdXJyZW50LWNvbHVtbikgbWFya2VkLWNvbCkKICAgICAgICAgICAgKG1vdmUt dG8tY29sdW1uIG1hcmtlZC1jb2wpCiAgICAgICAgICAgIChzZXQtbWFya2VyIG1hcmtlZC1wb2lu dCAocG9pbnQpKSkpCiAgICAgIChnb3RvLWNoYXIgbWFya2VkLXBvaW50KSkKCiAgICA7OyBSZW1v dmUgYWxsIGludGVybWVkaWF0ZSBib3VuZGFyaWVzIGZyb20gdGhlIHVuZG8gbGlzdC4KICAgICh1 bmxlc3MgKGVxIGJ1ZmZlci11bmRvLWxpc3QgdW5kby1saXN0KQogICAgICAobGV0ICgoY3Vyc29y IGJ1ZmZlci11bmRvLWxpc3QpKQogICAgICAgICh3aGlsZSAobm90IChlcSAoY2RyIGN1cnNvcikg dW5kby1saXN0KSkKICAgICAgICAgIChpZiAoY2FyIChjZHIgY3Vyc29yKSkKICAgICAgICAgICAg ICAoc2V0cSBjdXJzb3IgKGNkciBjdXJzb3IpKQogICAgICAgICAgICAocnBsYWNkIGN1cnNvciAo Y2RyIChjZHIgY3Vyc29yKSkpKSkpKSkpCgoKKGRlZnVuIHJlYm94LXN0eWxlLXRvLXZlY3RvciAo bnVtYmVyKQogICJUcmFuc2Zvcm0gYSBzdHlsZSBudW1iZXIgaW50byBhIHZlY3RvciB0cmlwbGV0 LiIKICAodmVjdG9yICgvIG51bWJlciAxMDApICglICgvIG51bWJlciAxMCkgMTApICglIG51bWJl ciAxMCkpKQoMCjs7IENsYXNzaWZpY2F0aW9uIG9mIGJveGVzIChhbmQgYWxzbywgY29uc3RydWN0 aW9uIGRhdGEpLgoKCihkZWZ1biogcmVib3gtZmluZC1hbmQtbmFycm93ICgma2V5IChjb21tZW50 LW9ubHkgdCkpCiJGaW5kIHRoZSBsaW1pdHMgb2YgdGhlIGJsb2NrIG9mIGNvbW1lbnRzIGZvbGxv d2luZyBvciBlbmNsb3NpbmcKdGhlIGN1cnNvciwgb3IgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBj dXJzb3IgaXMgbm90IHdpdGhpbiBzdWNoIGEKYmxvY2sgb2YgY29tbWVudHMuICBFeHRlbmQgaXQg YXMgZmFyIGFzIHBvc3NpYmxlIGluIGJvdGgKZGlyZWN0aW9ucywgdGhlbiBuYXJyb3cgdGhlIGJ1 ZmZlciBhcm91bmQgaXQuIgogIChsZXQgKChvcmlnLXAgKHBvaW50KSkKICAgICAgICAoaGFzLWNv bW1lbnQtZGVmaW5pdGlvbiAoYW5kIGNvbW1lbnQtc3RhcnQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChub3QgKHplcm9wIChsZW5ndGggY29tbWVudC1zdGFydCkpKSkpCiAg ICAgICAgY29tbWVudC1iIGNvbW1lbnQtZSkKICAgIChpZiBoYXMtY29tbWVudC1kZWZpbml0aW9u CiAgICAgICAgOzsgYXJlIHdlIGluc2lkZSBhIGNvbW1lbnQ/CiAgICAgICAgKHdoZW4gKHByb2du CiAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtYXQtZW9sKSkKICAgICAgICAgICAgICAo cmVib3gtbGluZS1oYXMtY29tbWVudCA6bW92ZS1tdWx0aWxpbmUgbmlsKSkKICAgICAgICAgIChz ZXRxIGNvbW1lbnQtYiAocG9pbnQtYXQtYm9sKSkKICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50 LWF0LWVvbCAwKSkgIDsgcHJldmlvdXMgbGluZSdzIGVvbAogICAgICAgICAgKGNhdGNoICdyb28K ICAgICAgICAgICAgKHdoaWxlIChyZWJveC1saW5lLWhhcy1jb21tZW50IDp0aHJvdy1sYWJlbCAn cm9vKQogICAgICAgICAgICAgIChzZXRxIGNvbW1lbnQtYiAocG9pbnQtYXQtYm9sKSkKICAgICAg ICAgICAgICAoaWYgKGVxIChwb2ludC1hdC1ib2wpIChwb2ludC1taW4pKQogICAgICAgICAgICAg ICAgICAodGhyb3cgJ3JvbyBuaWwpCiAgICAgICAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1h dC1lb2wgMCkpKSkpCiAgICAgICAgICAoZ290by1jaGFyIG9yaWctcCkKICAgICAgICAgIChlbmQt b2YtbGluZSAyKQogICAgICAgICAgKHNldHEgY29tbWVudC1lIChwb2ludC1hdC1ib2wpKQogICAg ICAgICAgKGNhdGNoICdyb28KICAgICAgICAgICAgKHdoaWxlIChyZWJveC1saW5lLWhhcy1jb21t ZW50IDp0aHJvdy1sYWJlbCAncm9vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6bW92ZS1tdWx0aWxpbmUgbmlsKQogICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBv aW50LWF0LWVvbCAyKSkKICAgICAgICAgICAgICAoc2V0cSBjb21tZW50LWUgKHBvaW50LWF0LWJv bCkpCiAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoZXEgKHBvaW50KSAocG9pbnQtbWF4KSkgOyBo aXQgZW9iCiAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChlcSAocG9pbnQpIChwb2ludC1h dC1ib2wpKSkpIDsgZW9iIGlzICpub3QqIG5ld2xpbmUKICAgICAgICAgICAgICAgIDs7IHdlIG5l ZWQgdG8gZW5kIG9uIGEgYmxhbmsgbGluZSBmb3IgcmVib3ggdG8gd29yayBwcm9wZXJseSwKICAg ICAgICAgICAgICAgIDs7IHdlIGRvbid0IGNhbGwgYG5ld2xpbmUnIHRvIGF2b2lkIHJlZmlsbGlu Zy4KICAgICAgICAgICAgICAgIChpbnNlcnQgIlxuIikKICAgICAgICAgICAgICAgIChzZXRxIGNv bW1lbnQtZSAocG9pbnQpKQogICAgICAgICAgICAgICAgKHRocm93ICdyb28gbmlsKSkpKSkpCiAg ICAoZ290by1jaGFyIG9yaWctcCkKICAgICh3aGVuICAoYW5kIChub3QgY29tbWVudC1iKQogICAg ICAgICAgICAgICAgKG5vdCBjb21tZW50LWUpCiAgICAgICAgICAgICAgICAobm90IGNvbW1lbnQt b25seSkpCiAgICAgIDs7IG5vIGNvbW1lbnQgZm9ybWF0IGRlZmluZWQKICAgICAgKHNldHEgY29t bWVudC1iIChpZiAoc2VhcmNoLWJhY2t3YXJkLXJlZ2V4cCByZWJveC1ibGFuay1saW5lLXJlZ2V4 cCBuaWwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZzEKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHBvaW50LWF0LWJvbCAyKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGdvdG8tY2hhciBvcmlnLXApKQogICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQtbWlu KSkpCiAgICAgIChzZXRxIGNvbW1lbnQtZSAoaWYgKHNlYXJjaC1mb3J3YXJkLXJlZ2V4cCByZWJv eC1ibGFuay1saW5lLXJlZ2V4cCBuaWwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv ZzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LWF0LWJvbCAxKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcmlnLXApKQogICAgICAgICAgICAgICAg ICAgICAgICA7OyB3ZSBuZWVkIGEgYmxhbmsgbGluZSBhdCB0aGUgZW5kIG9mIHRoZSBuYXJyb3cK ICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydCAiXG4iKQogICAgICAgICAgICAgICAgICAgICAgICAocG9p bnQpKSkpCiAgICAoaWYgKG9yIChub3QgY29tbWVudC1iKQogICAgICAgICAgICAobm90IGNvbW1l bnQtZSkKICAgICAgICAgICAgKGVxIGNvbW1lbnQtYiBjb21tZW50LWUpKQogICAgICAgIChzaWdu YWwgJ3JlYm94LWNvbW1lbnQtbm90LWZvdW5kLWVycm9yIG5pbCkpCiAgICAobmFycm93LXRvLXJl Z2lvbiBjb21tZW50LWIgY29tbWVudC1lKSkpCgooZGVmdW4gcmVib3gtZ3Vlc3MtbGFuZ3VhZ2Ug KG15LWNvbW1lbnQtc3RhcnQtc3RyKQogICJHdWVzcyB0aGUgbGFuZ3VhZ2UgaW4gdXNlIGJhc2Vk IG9uIHRoZSBjb21tZW50LXN0YXJ0IGNoYXJhY3Rlci4KCnJldHVybnMgZ3Vlc3MgYXMgc2luZ2xl IGRpZ2l0LiIKICAoc2V0cSBteS1jb21tZW50LXN0YXJ0LXN0cgogICAgICAgIChjb25kICgoc3Ry aW5ncCBteS1jb21tZW50LXN0YXJ0LXN0cikKICAgICAgICAgICAgICAgbXktY29tbWVudC1zdGFy dC1zdHIpCiAgICAgICAgICAgICAgKChub3QgbXktY29tbWVudC1zdGFydC1zdHIpCiAgICAgICAg ICAgICAgICIiKQogICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgIChlcnJvciAiaW52YWxp ZCBteS1jb21tZW50LXN0YXJ0LXN0cjogJXMiIG15LWNvbW1lbnQtc3RhcnQtc3RyKSkpKQogIChs ZXQgKChsYW5ndWFnZSAxKQogICAgICAgIChpbmRleCAoMS0gKGxlbmd0aCByZWJveC1yZWdleHAt c3RhcnQpKSkpCiAgICAod2hpbGUgKG5vdCAoemVyb3AgaW5kZXgpKQogICAgICAoaWYgKHN0cmlu Zy1tYXRjaCAoYXJlZiByZWJveC1yZWdleHAtc3RhcnQgaW5kZXgpIG15LWNvbW1lbnQtc3RhcnQt c3RyKQogICAgICAgICAgKHNldHEgbGFuZ3VhZ2UgaW5kZXgKICAgICAgICAgICAgICAgIGluZGV4 IDApCiAgICAgICAgKHNldHEgaW5kZXggKDEtIGluZGV4KSkpKQogICAgbGFuZ3VhZ2UpKQoKOzs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsKOzsgU29tZSBjYWNoaW5nIGlzIHBvc3NpYmxlIGhlcmUgdG8g cmVtZW1iZXIgdGhlIGxhc3QgZm91bmQgc3R5bGUgOzsKOzsgYW5kIHRyeSB0aGF0IGZpcnN0LCBl dGMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKOzsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsK OzsgSG93ZXZlciwgY29tcHV0aW5nIHRpbWUgaXMgY2hlYXAsIG15IHRpbWUgaXMgbm90LiAgICAg ICAgICAgICAgOzsKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKCihkZWZ1biByZWJveC1ndWVzcy1z dHlsZSAoKQogICJHdWVzcyB0aGUgY3VycmVudCBib3ggc3R5bGUgZnJvbSB0aGUgdGV4dCBpbiB0 aGUgd2hvbGUgKG5hcnJvd2VkKSBidWZmZXIuIgogIChsZXQgKChzdHlsZS1kYXRhIHJlYm94LXN0 eWxlLWRhdGEpCiAgICAgICAgYmVzdC1zdHlsZSBiZXN0LXdlaWdodCkKICAgIDs7IExldCdzIHRy eSBhbGwgc3R5bGVzIGluIHR1cm4uICBBIHN0eWxlIGhhcyB0byBtYXRjaCBleGFjdGx5IHRvIGJl CiAgICA7OyBlbGlnaWJsZS4gIE1vcmUgaGVhdnkgaXMgYSBzdHlsZSwgbW9yZSBwcm9uZSBpdCBp cyB0byBiZSByZXRhaW5lZC4KICAgICh3aGlsZSBzdHlsZS1kYXRhCiAgICAgIChsZXQqICgoc3R5 bGUgKGNhYXIgc3R5bGUtZGF0YSkpCiAgICAgICAgICAgICAoZGF0YSAoY2RhciBzdHlsZS1kYXRh KSkKICAgICAgICAgICAgICh3ZWlnaHQgKGFyZWYgZGF0YSAwKSkKICAgICAgICAgICAgIChyZWdl eHAxIChhcmVmIGRhdGEgMSkpCiAgICAgICAgICAgICAocmVnZXhwMiAoYXJlZiBkYXRhIDIpKQog ICAgICAgICAgICAgKHJlZ2V4cDMgKGFyZWYgZGF0YSAzKSkKICAgICAgICAgICAgIChtaW4tbGlu ZXMgKGxlbmd0aCAocmVtb3ZlIG5pbCAobGlzdCByZWdleHAxIHJlZ2V4cDIgcmVnZXhwMykpKSkK ICAgICAgICAgICAgIChsaW1pdCAoY29uZAogICAgICAgICAgICAgICAgICAgICAoKGFuZCBiZXN0 LXdlaWdodCAoPD0gd2VpZ2h0IGJlc3Qtd2VpZ2h0KSkKICAgICAgICAgICAgICAgICAgICAgIG5p bCkKICAgICAgICAgICAgICAgICAgICAgKCg8IChjb3VudC1saW5lcyAocG9pbnQtbWluKSAocG9p bnQtbWF4KSkgbWluLWxpbmVzKQogICAgICAgICAgICAgICAgICAgICAgbmlsKQogICAgICAgICAg ICAgICAgICAgICAoKG5vdCByZWdleHAzKQogICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1h eCkpCiAgICAgICAgICAgICAgICAgICAgICgocHJvZ24gKGdvdG8tY2hhciAocG9pbnQtbWF4KSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIC0xKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0IHJlZ2V4cDMpKQogICAgICAgICAgICAgICAg ICAgICAgKHBvaW50KSkpKSkKICAgICAgICAod2hlbiBsaW1pdAogICAgICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkKICAgICAgICAgIChjb25kICgobm90IHJlZ2V4cDEpKQogICAgICAgICAg ICAgICAgKChsb29raW5nLWF0IHJlZ2V4cDEpIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkpCiAg ICAgICAgICAgICAgICAodCAoc2V0cSBsaW1pdCBuaWwpKSkKICAgICAgICAgICh3aGVuIChhbmQg bGltaXQgcmVnZXhwMikKICAgICAgICAgICAgKHdoaWxlIChhbmQgKDwgKHBvaW50KSBsaW1pdCkg KGxvb2tpbmctYXQgcmVnZXhwMikpCiAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5k IDApKSkKICAgICAgICAgICAgKHVubGVzcyAoPSAocG9pbnQpIGxpbWl0KQogICAgICAgICAgICAg IChzZXRxIGxpbWl0IG5pbCkpKQogICAgICAgICAgKHdoZW4gbGltaXQKICAgICAgICAgICAgKHNl dHEgYmVzdC1zdHlsZSBzdHlsZQogICAgICAgICAgICAgICAgICBiZXN0LXdlaWdodCB3ZWlnaHQp KSkpCiAgICAgIChzZXRxIHN0eWxlLWRhdGEgKGNkciBzdHlsZS1kYXRhKSkpCiAgICBiZXN0LXN0 eWxlKSkKCihkZWZ1biogcmVib3gtbGluZS1oYXMtY29tbWVudCAoJmtleSAobW92ZS1tdWx0aWxp bmUgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdy1sYWJlbCBu aWwpKQogIChsZXQgKChiYXJlLWNvbW1lbnQtZW5kIChhbmQgY29tbWVudC1lbmQgKHJlYm94LXJz dHJpcCAocmVib3gtbHN0cmlwIGNvbW1lbnQtZW5kKSkpKQogICAgICAgIChiYXJlLWNvbW1lbnQt c3RhcnQgKGFuZCBjb21tZW50LXN0YXJ0IChyZWJveC1yc3RyaXAgKHJlYm94LWxzdHJpcCBjb21t ZW50LXN0YXJ0KSkpKQogICAgICAgIChzdGFydGluZy1ib2wgKHBvaW50LWF0LWJvbCkpCiAgICAg ICAgY29tbWVudC1zdGFydC1wb3MKICAgICAgICApCiAgICAoZW5kLW9mLWxpbmUgMSkKICAgIChz ZXRxIGNvbW1lbnQtc3RhcnQtcG9zIChjb21tZW50LWJlZ2lubmluZykpCiAgICAodW5sZXNzIGNv bW1lbnQtc3RhcnQtcG9zCiAgICAgIDs7IEMtc3R5bGUgY29tbWVudHMsIHdlIGNvdWxkIGJlIGlu IHRoZSB3aGl0ZSBzcGFjZSBwYXN0IGNvbW1lbnQgZW5kCiAgICAgICh3aGVuIChhbmQgKHN0cmlu Z3AgY29tbWVudC1lbmQpCiAgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWwgY29tbWVudC1lbmQg IiIpKSkKICAgICAgICAoZ290by1jaGFyIChwb2ludC1hdC1lb2wpKQogICAgICAgIChzZWFyY2gt YmFja3dhcmQtcmVnZXhwIChjb25jYXQgKHJlZ2V4cC1xdW90ZSBiYXJlLWNvbW1lbnQtZW5kKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlsgXHRdKiQiKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludC1hdC1ib2wpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdCkKICAgICAgICAoc2V0cSBjb21tZW50LXN0YXJ0LXBvcyAoY29tbWVu dC1iZWdpbm5pbmcpKSkpCiAgICA7OyBkZXRlY3QgbWlkLWxpbmUgY29tbWVudHMKICAgICh3aGVu IGNvbW1lbnQtc3RhcnQtcG9zCiAgICAgIChnb3RvLWNoYXIgY29tbWVudC1zdGFydC1wb3MpCiAg ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQogICAgICAodW5sZXNzICg9IChwb2ludCkg KHBvaW50LWF0LWJvbCkpCiAgICAgICAgKHNpZ25hbCAncmVib3gtbWlkLWxpbmUtY29tbWVudC1m b3VuZCBuaWwpKSkKICAgIChpZiAoYW5kICg8IChwb2ludCkgc3RhcnRpbmctYm9sKQogICAgICAg ICAgICAgKG5vdCBtb3ZlLW11bHRpbGluZSkpCiAgICAgICAgKGdvdG8tY2hhciBzdGFydGluZy1i b2wpKQogICAgY29tbWVudC1zdGFydC1wb3MpKQoKCihkZWZ1biogcmVib3gtcmVnZXhwLXF1b3Rl IChzdHJpbmcgJmtleSAocnN0cmlwIHQpIChsc3RyaXAgdCkgKG1hdGNoLXRyYWlsaW5nLXNwYWNl cyB0KSkKIlJldHVybiBhIHJlZ2V4cCBtYXRjaGluZyBTVFJJTkcgd2l0aG91dCBpdHMgc3Vycm91 bmRpbmcgc3BhY2UsCm1heWJlIGZvbGxvd2VkIGJ5IHNwYWNlcyBvciB0YWJzLiAgSWYgU1RSSU5H IGlzIG5pbCwgcmV0dXJuIHRoZQplbXB0eSByZWdleHAuCgpXaXRoIG5vLXJzdHJpcCBzcGVjaWZp ZWQsIGRvbid0IHN0cmlwIHNwYWNlcyB0byB0aGUgcmlnaHQuIgogIChjb25kICgobm90IHN0cmlu ZykgIiIpCiAgICAgICAgKChub3QgKHN0cmluZ3Agc3RyaW5nKSkKICAgICAgICAgKGVycm9yICJk ZWJ1ZyBtZSwgcmVib3gtcmVnZXhwLXF1b3RlIGdvdCBub24tc3RyaW5nICVzIiBzdHJpbmcpKQog ICAgICAgICh0CiAgICAgICAgIChhbmQgcnN0cmlwCiAgICAgICAgICAgICAgKHNldHEgc3RyaW5n IChyZWJveC1yc3RyaXAgc3RyaW5nKSkpCiAgICAgICAgIChhbmQgbHN0cmlwCiAgICAgICAgICAg ICAgKHNldHEgc3RyaW5nIChyZWJveC1sc3RyaXAgc3RyaW5nKSkpCiAgICAgICAgIChzZXRxIHN0 cmluZyAocmVnZXhwLXF1b3RlIHN0cmluZykpCiAgICAgICAgIChpZiBtYXRjaC10cmFpbGluZy1z cGFjZXMKICAgICAgICAgICAgIChjb25jYXQgc3RyaW5nICJbIFx0XSoiKQogICAgICAgICAgIHN0 cmluZykpKSkKCgo7OyAtbHctCjs7IHdoZW4gdGhlIGJveCBpcyBqdXN0IG9uZSBjaGFyYWN0ZXIg d2lkZToKICAgICAgICAgIDs7Ozs7OzsKICAgICAgICAgIDs7IGEgOzsKICAgICAgICAgIDs7Ozs7 OzsKOzsgaWYgd2UgbWFrZSB0aGUgcmVnZXggMiBjaGFyYWN0ZXJzIHdpZGUsIGl0IHdvbid0IG1h dGNoLgoKKGRlZnVuIHJlYm94LXJlZ2V4cC1ydWxlciAoY2hhcmFjdGVyKQogICJSZXR1cm4gYSBy ZWdleHAgbWF0Y2hpbmcgb25lIG9yIG1vcmUgcmVwZXRpdGlvbnMgb2YgQ0hBUkFDVEVSLAptYXli ZSBmb2xsb3dlZCBieSBzcGFjZXMgb3IgdGFicy4gIElzIENIQVJBQ1RFUiBpcyBuaWwsIHJldHVy bgp0aGUgZW1wdHkgcmVnZXhwLiIKICAoaWYgY2hhcmFjdGVyCiAgICAgIChjb25jYXQgKHJlZ2V4 cC1xdW90ZSAobWFrZS1zdHJpbmcgMSBjaGFyYWN0ZXIpKSAiK1sgXHRdKiIpCiAgICAiIikpCgoK KGRlZnVuIHJlYm94LXJzdHJpcCAoc3RyaW5nKQogICJSZXR1cm4gc3RyaW5nIHdpdGggdHJhaWxp bmcgc3BhY2VzIHJlbW92ZWQuIgogICh3aGlsZSAoYW5kICg+IChsZW5ndGggc3RyaW5nKSAwKQog ICAgICAgICAgICAgIChtZW1xIChhcmVmIHN0cmluZyAoMS0gKGxlbmd0aCBzdHJpbmcpKSkgJyg/ ICA/XHQpKSkKICAgIChzZXRxIHN0cmluZyAoc3Vic3RyaW5nIHN0cmluZyAwICgxLSAobGVuZ3Ro IHN0cmluZykpKSkpCiAgc3RyaW5nKQoKKGRlZnVuIHJlYm94LWxzdHJpcCAoc3RyaW5nKQogICJS ZXR1cm4gc3RyaW5nIHdpdGggbGVhZGluZyBzcGFjZXMgcmVtb3ZlZC4iCiAgKHdoaWxlIChhbmQg KD4gKGxlbmd0aCBzdHJpbmcpIDApCiAgICAgICAgICAgICAgKG1lbXEgKGFyZWYgc3RyaW5nIDAp ICcoPyAgP1x0KSkpCiAgICAoc2V0cSBzdHJpbmcgKHN1YnN0cmluZyBzdHJpbmcgMSkpKQogIHN0 cmluZwogICkKCgwKOzsgUmVjb25zdHJ1Y3Rpb24gb2YgYm94ZXMuCgooZGVmdW4gcmVib3gtdW5i dWlsZCAoc3R5bGUpCiAgKGxldCogKChkYXRhIChjZHIgKGFzc3Egc3R5bGUgcmVib3gtc3R5bGUt ZGF0YSkpKQogICAgICAgICAobWVyZ2UtbncgKGFyZWYgZGF0YSA0KSkKICAgICAgICAgKG1lcmdl LXNlIChhcmVmIGRhdGEgNSkpCiAgICAgICAgIChudyAoYXJlZiBkYXRhIDYpKQogICAgICAgICAo bm4gKGFyZWYgZGF0YSA3KSkKICAgICAgICAgKG5lIChhcmVmIGRhdGEgOCkpCiAgICAgICAgICh3 dyAoYXJlZiBkYXRhIDkpKQogICAgICAgICAoZWUgKGFyZWYgZGF0YSAxMCkpCiAgICAgICAgIChz dyAoYXJlZiBkYXRhIDExKSkKICAgICAgICAgKHNzIChhcmVmIGRhdGEgMTIpKQogICAgICAgICAo c2UgKGFyZWYgZGF0YSAxMykpCiAgICAgICAgIChudy1yZWdleHAgKGFuZCBudyAocmVnZXhwLXF1 b3RlIG53KSkpCiAgICAgICAgICh3dy1yZWdleHAgKGFuZCB3dyAocmVnZXhwLXF1b3RlIHd3KSkp CiAgICAgICAgIChzdy1yZWdleHAgKGFuZCBzdyAocmVnZXhwLXF1b3RlIHN3KSkpCgogICAgICAg ICBsaW1pdC1tCiAgICAgICAgICkKICAgIDs7IENsZWFuIHVwIGZpcnN0IGxpbmUuCiAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQogICAgKGVuZC1vZi1saW5lKQogICAgKHNraXAtY2hhcnMtYmFj a3dhcmQgIiBcdCIpCiAgICAod2hlbiBuZQogICAgICAobGV0ICgoc3RhcnQgKC0gKHBvaW50KSAo bGVuZ3RoIG5lKSkpKQogICAgICAgICh3aGVuIChhbmQgKD49IHN0YXJ0IChwb2ludC1taW4pKQog ICAgICAgICAgICAgICAgICAgKHN0cmluZy1lcXVhbCBuZSAoYnVmZmVyLXN1YnN0cmluZyBzdGFy dCAocG9pbnQpKSkpCiAgICAgICAgICAoZGVsZXRlLWJhY2t3YXJkLWNoYXIgKGxlbmd0aCBuZSkp KSkpCiAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAod2hlbiAoYW5kIG53LXJlZ2V4cCAoc2Vh cmNoLWZvcndhcmQtcmVnZXhwIG53LXJlZ2V4cCAocG9pbnQtYXQtZW9sKSkpCiAgICAgICAgKHJl cGxhY2UtbWF0Y2ggKG1ha2Utc3RyaW5nICgtIChtYXRjaC1lbmQgMCkgKG1hdGNoLWJlZ2lubmlu ZyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyApKSkKICAgICh3aGVu IG5uCiAgICAgIChsZXQgKChjb3VudCAoc2tpcC1jaGFycy1mb3J3YXJkIChjaGFyLXRvLXN0cmlu ZyBubikpKSkKICAgICAgICAoZGVsZXRlLWNoYXIgKC0gY291bnQpKQogICAgICAgIChpbnNlcnQg KG1ha2Utc3RyaW5nIGNvdW50ID8gKSkpKQoKICAgIDs7IENsZWFyIHRoZSB0b3AgYm9yZGVyIGxp bmUuCiAgICA7OwogICAgOzsgSWYgdGhlcmUgd2FzIGFueSB0b3AgYm9yZGVyLCBjbGVhciBpdC4g IEkgdXNlZCB0byB0cnkgdG8ga2VlcAogICAgOzsgdGV4dCBvbiB0aGUgdG9wIGJvcmRlciBsaWtl IHRoZSBDLXN0eWxlIGNvbW1lbnRzOgogICAgOzsKICAgIDs7IC8qIHtUaXRsZX0KICAgIDs7ICAq ICB0ZXh0CiAgICA7OyAgKi8KICAgIDs7CiAgICA7OyBIb3dldmVyLCB3aGVuIHlvdSB1bmJveCBh bmQgdGhlbiByZWJveCwgaXQgYmVjb21lcyB1bmNsZWFyIHdoZXRoZXIKICAgIDs7IHtUaXRsZX0g c2hvdWxkIGJlIGluIHRoZSB0b3AgYm9yZGVyIG9yIHRoZSBib3ggaXRzZWxmLgoKICAgICh3aGVu IChvciBudy1yZWdleHAgbm4gbmUpCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LWF0LWJvbCkpCiAg ICAgIChpZiAobG9va2luZy1hdC1wIHJlYm94LWJsYW5rLWxpbmUtcmVnZXhwKQogICAgICAgICAg KGRlbGV0ZS1yZWdpb24gKHBvaW50KSAocG9pbnQtYXQtYm9sIDIpKQogICAgICAgIChlcnJvciAi VG9wIGJvcmRlciBzaG91bGQgYmUgY2xlYXIgbm93LiAgRGVidWcgbWUuIikpKQogICAgOzsgQ2xl YW4gdXAgbGFzdCBsaW5lLgogICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgIChza2lwLWNo YXJzLWJhY2t3YXJkICIgXHRcbiIpCiAgICAod2hlbiBzZQogICAgICAobGV0ICgoc3RhcnQgKC0g KHBvaW50KSAobGVuZ3RoIHNlKSkpKQogICAgICAgICh3aGVuIChhbmQgKD49IHN0YXJ0IChwb2lu dC1taW4pKQogICAgICAgICAgICAgICAgICAgKHN0cmluZy1lcXVhbCBzZSAoYnVmZmVyLXN1YnN0 cmluZyBzdGFydCAocG9pbnQpKSkpCiAgICAgICAgICAoZGVsZXRlLWJhY2t3YXJkLWNoYXIgKGxl bmd0aCBzZSkpKSkpCiAgICAoZm9yd2FyZC1saW5lIDApCiAgICAod2hlbiAoYW5kIHN3LXJlZ2V4 cCAoc2VhcmNoLWZvcndhcmQtcmVnZXhwIHN3LXJlZ2V4cCAocG9pbnQtYXQtZW9sKSkpCiAgICAg ICAgKHJlcGxhY2UtbWF0Y2ggKG1ha2Utc3RyaW5nICgtIChtYXRjaC1lbmQgMCkgKG1hdGNoLWJl Z2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyApKSkKICAg ICh3aGVuIHNzCiAgICAgIChsZXQgKChjb3VudCAoc2tpcC1jaGFycy1mb3J3YXJkIChjaGFyLXRv LXN0cmluZyBzcykpKSkKICAgICAgICAoZGVsZXRlLWNoYXIgKC0gY291bnQpKQogICAgICAgIChp bnNlcnQgKG1ha2Utc3RyaW5nIGNvdW50ID8gKSkpKQogICAgKHNldHEgbGltaXQtbSAobWFrZS1t YXJrZXIpKQogICAgOzsgaWYgdGhlcmUgd2FzIGFueSBib3R0b20gYm9yZGVyLCBhbmQgaXQncyBu b3cganVzdCBibGFua3MsIGRlbGV0ZSBib3R0b20gbGluZQogICAgKGlmIChvciBzZSBzdy1yZWdl eHAgc3MpCiAgICAgICAgKHByb2duCiAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1hdC1ib2wp KQogICAgICAgICAgKGlmIChsb29raW5nLWF0LXAgcmVib3gtYmxhbmstbGluZS1yZWdleHApCiAg ICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50KSAocG9pbnQtYXQtYm9sIDIpKQogICAg ICAgICAgICAoZXJyb3IgIlRvcCBib3JkZXIgc2hvdWxkIGJlIGNsZWFyIG5vdy4gIERlYnVnIG1l LiIpKQogICAgICAgICAgKHNldC1tYXJrZXIgbGltaXQtbSAocG9pbnQpKSkKICAgICAgKHNldC1t YXJrZXIgbGltaXQtbSAoMSsgKHBvaW50KSkpKQogICAgOzsgQ2xlYW4gdXAgYWxsIGxpbmVzLgog ICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICh3aGlsZSAoPCAocG9pbnQpIGxpbWl0LW0p CiAgICAgIChlbmQtb2YtbGluZSkKICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCiAg ICAgICh3aGVuIGVlCiAgICAgICAgKGxldCAoKHN0YXJ0ICgtIChwb2ludCkgKGxlbmd0aCBlZSkp KSkKICAgICAgICAgICh3aGVuIChhbmQgKD49IHN0YXJ0IChwb2ludC1taW4pKQogICAgICAgICAg ICAgICAgICAgICAoc3RyaW5nLWVxdWFsIGVlIChidWZmZXItc3Vic3RyaW5nIHN0YXJ0IChwb2lu dCkpKSkKICAgICAgICAgICAgKGRlbGV0ZS1iYWNrd2FyZC1jaGFyIChsZW5ndGggZWUpKSkpKQog ICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICh3aGVuIChhbmQgd3ctcmVnZXhwIChzZWFy Y2gtZm9yd2FyZC1yZWdleHAgd3ctcmVnZXhwIChwb2ludC1hdC1lb2wpKSkKICAgICAgICAgIChy ZXBsYWNlLW1hdGNoIChtYWtlLXN0cmluZyAoLSAobWF0Y2gtZW5kIDApIChtYXRjaC1iZWdpbm5p bmcgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyApKSkKICAgICAg KGZvcndhcmQtbGluZSAxKSkpKQoKCihkZWZ1biByZWJveC1idWlsZCAocmVmaWxsIG1hcmdpbiBz dHlsZSBtYXJrZWQtcG9pbnQgbW92ZS1wb2ludCkKIkFmdGVyIHJlZmlsbGluZyBpdCBpZiBSRUZJ TEwgaXMgbm90IG5pbCwgd2hpbGUgcmVzcGVjdGluZyBhIGxlZnQgTUFSR0lOLApwdXQgdGhlIG5h cnJvd2VkIGJ1ZmZlciBiYWNrIGludG8gYSBib3hlZCBjb21tZW50IGFjY29yZGluZyB0bwpib3gg U1RZTEUuIgogIChsZXQqICgoZGF0YSAoY2RyIChhc3NxIHN0eWxlIHJlYm94LXN0eWxlLWRhdGEp KSkKICAgICAgICAgKG1lcmdlLW53IChhcmVmIGRhdGEgNCkpCiAgICAgICAgIChtZXJnZS1zZSAo YXJlZiBkYXRhIDUpKQogICAgICAgICAobncgKGFyZWYgZGF0YSA2KSkKICAgICAgICAgKG5uIChh cmVmIGRhdGEgNykpCiAgICAgICAgIChuZSAoYXJlZiBkYXRhIDgpKQogICAgICAgICAod3cgKGFy ZWYgZGF0YSA5KSkKICAgICAgICAgKGVlIChhcmVmIGRhdGEgMTApKQogICAgICAgICAoc3cgKGFy ZWYgZGF0YSAxMSkpCiAgICAgICAgIChzcyAoYXJlZiBkYXRhIDEyKSkKICAgICAgICAgKHNlIChh cmVmIGRhdGEgMTMpKQogICAgICAgICByaWdodC1tYXJnaW4KICAgICAgICAgY291bnQtdHJhaWxp bmctc3BhY2VzCiAgICAgICAgIGxpbWl0LW0KICAgICAgICAgKQoKICAgIDs7IE1lcmdlIGEgc2hv cnQgZW5kIGRlbGltaXRlciBub3csIHNvIGl0IGdldHMgcmVmaWxsZWQgd2l0aCB0ZXh0LgogICAg KGlmIG1lcmdlLXNlCiAgICAgICAgKHByb2duCiAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1t YXgpKQogICAgICAgICAgKGluc2VydCAiXG4iKQogICAgICAgICAgKGdvdG8tY2hhciAoMS0gKHBv aW50LW1heCkpKQogICAgICAgICAgKHNldHEgbGltaXQtbSAocG9pbnQtbWFya2VyKSkKICAgICAg ICAgIChpbnNlcnQgKG1ha2Utc3RyaW5nIG1hcmdpbiA/ICkKICAgICAgICAgICAgICAgICAgc2Up CiAgICAgICAgICAoc2V0cSBzZSBuaWwpKQogICAgICAoc2V0cSBsaW1pdC1tIChwb2ludC1tYXgt bWFya2VyKSkpCiAgICA7OyBQb3NzaWJseSByZWZpbGwsIGFuZCBhZGp1c3QgbWFyZ2lucyB0byBh Y2NvdW50IGZvciBsZWZ0IGluc2VydHMuCiAgICAoaWYgcmVmaWxsCiAgICAgICAgKGxldCAoOzs7 OyB3aGF0ZXZlciBhZGFwdGl2ZSBmaWxsaW5nIHNob3VsZCB0YWtlIGNhcmUgb2YgdGhpcwogICAg ICAgICAgICAgIChmaWxsLXByZWZpeCAoaWYgKG9yIGFkYXB0aXZlLWZpbGwtbW9kZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGZlYXR1cmVwICdmaWxsYWRhcHQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsYWRhcHQtbW9kZSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1ha2Utc3RyaW5nIG1hcmdpbiA/ICkpKQogICAgICAgICAgICAgIChmaWxsLWNvbHVtbiAo LSBmaWxsLWNvbHVtbiAoKyAobGVuZ3RoIHd3KSAobGVuZ3RoIGVlKSBtYXJnaW4pKSkKICAgICAg ICAgICAgICA7OyBzb21lIGZpbGxpbmcgZnVuY3Rpb25zIHdpbGwgY29uc3VsdCBtYWpvci1tb2Rl IGZvciBmaWxsaW5nCiAgICAgICAgICAgICAgOzsgYWR2aWNlLCB3ZSBkb24ndCB3YW50IHRoaXMg c2luY2Ugd2UndmUgcmVtb3ZlZCB0aGUKICAgICAgICAgICAgICA7OyBjb21tZW50LXN0YXJ0cy4K ICAgICAgICAgICAgICAobWFqb3ItbW9kZSAnZnVuZGFtZW50YWwtbW9kZSkKICAgICAgICAgICAg ICAoZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKQogICAgICAgICAgICAgIChjb21tZW50LWF1 dG8tZmlsbC1vbmx5LWNvbW1lbnRzIG5pbCkKICAgICAgICAgICAgICApCgogICAgICAgICAgKGlm IChlcSByZWZpbGwgJ2F1dG8tZmlsbCkKICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAg ICAgIChzZXRxIGNvdW50LXRyYWlsaW5nLXNwYWNlcyBtYXJrZWQtcG9pbnQpCiAgICAgICAgICAg ICAgICAoZ290by1jaGFyIG1hcmtlZC1wb2ludCkKICAgICAgICAgICAgICAgIChkby1hdXRvLWZp bGwpKQogICAgICAgICAgICAoc2V0cSBjb3VudC10cmFpbGluZy1zcGFjZXMgbmlsKQogICAgICAg ICAgICAoZmlsbC1yZWdpb24gKHBvaW50LW1pbikgbGltaXQtbSkpKQogICAgICAoc2V0cSBjb3Vu dC10cmFpbGluZy1zcGFjZXMgbWFya2VkLXBvaW50KSkKICAgIChzZXRxIHJpZ2h0LW1hcmdpbiAo bWF4ICgrIChyZWJveC1yaWdodC1tYXJnaW4gOmNvdW50LXRyYWlsaW5nLXNwYWNlcyBjb3VudC10 cmFpbGluZy1zcGFjZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHd3 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgbWluaW11bSBib3ggd2lkdGggaXMgMQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKDErIChsZW5ndGggd3cpKSkpCiAgICA7OyBDb25zdHJ1Y3QgdGhlIHRvcCBsaW5l LgogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgIChjb25kIChtZXJnZS1udwogICAgICAg ICAgIChpbnNlcnQgKG1ha2Utc3RyaW5nICgtIG1hcmdpbiAoY3VycmVudC1jb2x1bW4pKSA/ICkK ICAgICAgICAgICAgICAgICAgIG53KQogICAgICAgICAgIChpbnNlcnQgIlxuIikpCiAgICAgICAg ICAoKG9yIG53IG5uIG5lKQogICAgICAgICAgIChpbmRlbnQtdG8gbWFyZ2luKQogICAgICAgICAg ICh3aGVuIG53CiAgICAgICAgICAgICAoaW5zZXJ0IG53KSkKICAgICAgICAgICAoaWYgKG5vdCAo b3Igbm4gbmUpKQogICAgICAgICAgICAgICAoZGVsZXRlLWNoYXIgKC0gKHNraXAtY2hhcnMtYmFj a3dhcmQgIiAiKSkpCiAgICAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoLSByaWdodC1t YXJnaW4gKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChvciBubiA/ICkpKQogICAgICAgICAgICAgKHdoZW4gbmUKICAgICAgICAgICAgICAgKGluc2Vy dCBuZSkpKQogICAgICAgICAgIChpbnNlcnQgIlxuIikpKQogICAgOzsgQ29uc3RydWN0IGFsbCBt aWRkbGUgbGluZXMuCiAgICAod2hpbGUgKDwgKHBvaW50KSBsaW1pdC1tKQogICAgICAod2hlbiAo b3Igd3cgZWUgKC89IChmb2xsb3dpbmctY2hhcikgP1xuKSkKICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyAoLSBtYXJnaW4gKGN1cnJlbnQtY29sdW1uKSkgPyApKQogICAgICAgICh3aGVuIHd3 CiAgICAgICAgICAoaW5zZXJ0IHd3KSkKICAgICAgICAod2hlbiBlZQogICAgICAgICAgKGVuZC1v Zi1saW5lKQogICAgICAgICAgKGluZGVudC10byByaWdodC1tYXJnaW4pCiAgICAgICAgICAoaW5z ZXJ0IGVlKQogICAgICAgICAgKGRlbGV0ZS1jaGFyICgtIChza2lwLWNoYXJzLWJhY2t3YXJkICIg IikpKSkpCiAgICAgIChmb3J3YXJkLWxpbmUgMSkpCiAgICA7OyBDb25zdHJ1Y3QgdGhlIGJvdHRv bSBsaW5lLgogICAgKHdoZW4gKG9yIHN3IHNzIHNlKQogICAgICAoaW5kZW50LXRvIG1hcmdpbikK ICAgICAgKHdoZW4gc3cKICAgICAgICAoaW5zZXJ0IHN3KSkKICAgICAgKGlmIChub3QgKG9yIHNz IHNlKSkKICAgICAgICAgIChkZWxldGUtY2hhciAoLSAoc2tpcC1jaGFycy1iYWNrd2FyZCAiICIp KSkKICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoLSByaWdodC1tYXJnaW4gKGN1cnJlbnQt Y29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Igc3MgPyApKSkKICAgICAg ICAod2hlbiBzZQogICAgICAgICAgKGluc2VydCBzZSkpKQogICAgICAoaW5zZXJ0ICJcbiIpKQoK ICAgIChnb3RvLWNoYXIgbWFya2VkLXBvaW50KQogICAgKHdoZW4gbW92ZS1wb2ludAogICAgICA7 OyBmaWd1cmUgb3V0IGlmIHdlJ3ZlIG1vdmVkIHRoZSBtYXJrZWQtcG9pbnQgdG8gYW4gdW5yZWFz b25hYmxlIHBvc2l0aW9uCiAgICAgIChsZXQqICgobXktY29sIChjdXJyZW50LWNvbHVtbikpCiAg ICAgICAgICAgICAobXktbGluZSAobGluZS1udW1iZXItYXQtcG9zKSkKICAgICAgICAgICAgIChw b2ludC1tYXgtbGluZSAobGluZS1udW1iZXItYXQtcG9zIChwb2ludC1tYXgpKSkKICAgICAgICAg ICAgIChtaW4tbGluZSAoaWYgKG9yIG1lcmdlLW53IG53IG5uIG5lKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAyCiAgICAgICAgICAgICAgICAgICAgICAgICAxKSkKICAgICAgICAgICAgICht YXgtbGluZSAoaWYgKG9yIG1lcmdlLXNlIHN3IHNzIHNlKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAoLSBwb2ludC1tYXgtbGluZSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gcG9p bnQtbWF4LWxpbmUgMSkpKQogICAgICAgICAgICAgKG1pbi1jb2wgKCsgbWFyZ2luIChsZW5ndGgg d3cpKSkKICAgICAgICAgICAgIChtYXgtY29sIHJpZ2h0LW1hcmdpbikKICAgICAgICAgICAgIHRl bXAKICAgICAgICAgICAgICkKICAgICAgICA7OyBtb3ZlIHZlcnRpY2FsbHkKICAgICAgICAoY29u ZCAoKDwgbXktbGluZSBtaW4tbGluZSkKICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSAxKSkK ICAgICAgICAgICAgICAoKD4gbXktbGluZSBtYXgtbGluZSkKICAgICAgICAgICAgICAgKGdvdG8t Y2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSAoMS0gbWF4LWxp bmUpKSkpCiAgICAgICAgOzsgbW92ZSBob3Jpem9udGFsbHkKICAgICAgICAoY29uZCAoKDwgbXkt Y29sIG1pbi1jb2wpCiAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAg ICAgICAgKGZvcndhcmQtY2hhciBtaW4tY29sKQogICAgICAgICAgICAgICAoc2V0cSB0ZW1wIChz a2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpKQogICAgICAgICAgICAgICA7OyBub3RoaW5nIGJ1dCBz cGFjZSBvbiB0aGlzIGxpbmUKICAgICAgICAgICAgICAgKHdoZW4gKGxvb2tpbmctYXQtcCAoY29u Y2F0IChyZWdleHAtcXVvdGUgKGlmIGVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVib3gtbHN0cmlwIGVlKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbIFx0XSokIikpCiAgICAg ICAgICAgICAgICAgKGJhY2t3YXJkLWNoYXIgdGVtcCkpKQogICAgICAgICAgICAgICgoPiBteS1j b2wgbWF4LWNvbCkKICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoKyAocG9pbnQtYXQtYm9sKSBt YXgtY29sKSkKICAgICAgICAgICAgICAgKHNldHEgdGVtcCAoc2tpcC1jaGFycy1iYWNrd2FyZCAi IFx0IikpCiAgICAgICAgICAgICAgICh3aGVuICg8IChjdXJyZW50LWNvbHVtbikgbWluLWNvbCkK ICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgKGZv cndhcmQtY2hhciBtaW4tY29sKSkpKSkKICAgICAgKHVubGVzcyAoPSAocG9pbnQpIG1hcmtlZC1w b2ludCkKICAgICAgICAoc2V0LW1hcmtlciBtYXJrZWQtcG9pbnQgKHBvaW50KSkpKQogICAgKSkK CgooZGVmdW4gcmVib3gtbGVmdC1tYXJnaW4gKCkKIlJldHVybiB0aGUgbWluaW11bSB2YWx1ZSBv ZiB0aGUgbGVmdCBtYXJnaW4gb2YgYWxsIGxpbmVzLCBvciAtMSBpZgphbGwgbGluZXMgYXJlIGVt cHR5LiIKICAobGV0ICgobWFyZ2luIC0xKSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAg ICAod2hpbGUgKGFuZCAobm90ICh6ZXJvcCBtYXJnaW4pKSAobm90IChlb2JwKSkpCiAgICAgIChz a2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCiAgICAgIChsZXQgKChjb2x1bW4gKGN1cnJlbnQtY29s dW1uKSkpCiAgICAgICAgKGFuZCAobm90ICg9IChmb2xsb3dpbmctY2hhcikgP1xuKSkKICAgICAg ICAgICAgIChvciAoPCBtYXJnaW4gMCkgKDwgY29sdW1uIG1hcmdpbikpCiAgICAgICAgICAgICAo c2V0cSBtYXJnaW4gY29sdW1uKSkpCiAgICAgIChmb3J3YXJkLWxpbmUgMSkpCiAgICBtYXJnaW4p KQoKCihkZWZ1biogcmVib3gtcmlnaHQtbWFyZ2luICgma2V5IChjb3VudC10cmFpbGluZy1zcGFj ZXMgdCkpCiAgIlJldHVybiB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgcmlnaHQgbWFyZ2luIG9m IGFsbCBsaW5lcy4KCkNPVU5ULVRSQUlMSU5HLVNQQUNFUyBtYXkgYmUgYSBtYXJrZXIsIGluIHdo aWNoIGNhc2Ugb25seSBzcGFjZXMKb24gdGhhdCBsaW5lLCB1cCB0byB0aGF0IG1hcmtlciB3aWxs IGJlIGNvdW50ZWQuICBuaWwgdG8gbmV2ZXIKY291bnQgdHJhaWxpbmcgc3BhY2VzIG9yIHQgdG8g YWx3YXlzIGNvdW50LgoKIgogIChsZXQgKChtYXJnaW4gMCkpCiAgICAod2hlbiAobWFya2VycCBj b3VudC10cmFpbGluZy1zcGFjZXMpCiAgICAgICh3aGVuIChwcm9nbiAoZ290by1jaGFyIGNvdW50 LXRyYWlsaW5nLXNwYWNlcykKICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0ICJbIFx0XSok IikpCiAgICAgICAgKHNldHEgbWFyZ2luIChjdXJyZW50LWNvbHVtbikpKQogICAgICAoc2V0cSBj b3VudC10cmFpbGluZy1zcGFjZXMgbmlsKSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAg ICAod2hpbGUgKG5vdCAoZW9icCkpCiAgICAgIChlbmQtb2YtbGluZSkKICAgICAgKHVubGVzcyBj b3VudC10cmFpbGluZy1zcGFjZXMKICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0Iikp CiAgICAgIChzZXRxIG1hcmdpbiAobWF4IG1hcmdpbiAoY3VycmVudC1jb2x1bW4pKSkKICAgICAg KGZvcndhcmQtbGluZSAxKSkKICAgICh1bmxlc3MgY291bnQtdHJhaWxpbmctc3BhY2VzCiAgICAg IDs7IHdlIGl0ZXJhdGUgdGhyb3VnaCBsaW5lcyB0d2ljZSB0byBhdm9pZCBleGNlc3MgZGFtYWdl IHRvIG1hcmtlcnMKICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgKHdoaWxlIChu b3QgKGVvYnApKQogICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAod2hlbiAoPiAoY3VycmVu dC1jb2x1bW4pIG1hcmdpbikKICAgICAgICAgIChkZWxldGUtY2hhciAoLSBtYXJnaW4gKGN1cnJl bnQtY29sdW1uKSkpKQogICAgICAgIChmb3J3YXJkLWxpbmUgMSkpKQogICAgbWFyZ2luKSkKCihk ZWZ1biByZWJveC1nZXQtbmV3bGluZS1pbmRlbnQtZnVuY3Rpb24gKCkKICAicmV0dXJuIHByZWZl cnJlZCBuZXdsaW5lLWFuZC1pbmRlbnQgZnVuY3Rpb24iCiAgKHNldHEgcmVib3gtbmV3bGluZS1p bmRlbnQtZnVuY3Rpb24KICAgICAgICAob3IgcmVib3gtbmV3bGluZS1pbmRlbnQtZnVuY3Rpb24K ICAgICAgICAgICAgKGNkciAoYXNzcSBtYWpvci1tb2RlIHJlYm94LW5ld2xpbmUtaW5kZW50LWZ1 bmN0aW9uLWFsaXN0KSkKICAgICAgICAgICAgcmVib3gtbmV3bGluZS1pbmRlbnQtZnVuY3Rpb24t ZGVmYXVsdCkpKQoKKGRlZnVuIHJlYm94LXNhdmUtZW52ICgpCiAgImxvYWQgc29tZSBzZXR0aW5n cyIKICAobWFwYyAobGFtYmRhICh2YXIpCiAgICAgICAgICAocHVzaCAoY29ucyB2YXIgKHN5bWJv bC12YWx1ZSB2YXIpKSByZWJveC1zYXZlLWVudi1hbGlzdCkpCiAgICAgICAgcmVib3gtc2F2ZS1l bnYtdmFycykKICAocHVzaCAoY29ucyAnbWV0YS1jLWZ1bmMgKGxvb2t1cC1rZXkgZ2xvYmFsLW1h cCBbKG1ldGEgYyldKSkgcmVib3gtc2F2ZS1lbnYtYWxpc3QpKQoKKGRlZnVuIHJlYm94LXJlc3Rv cmUtZW52ICgpCiAgImxvYWQgc29tZSBzZXR0aW5ncyIKICAobWFwYyAobGFtYmRhICh2YXIpCiAg ICAgICAgICAoc2V0IHZhciAoY2RyIChhc3NxIHZhciByZWJveC1zYXZlLWVudi1hbGlzdCkpKSkK ICAgICAgICByZWJveC1zYXZlLWVudi12YXJzKSkKCjs7OyBJbml0aWFsaXplIHRoZSBpbnRlcm5h bCBzdHJ1Y3R1cmVzLgoKKHJlYm94LXJlZ2lzdGVyLWFsbC10ZW1wbGF0ZXMpCgoocHJvdmlkZSAn cmVib3gyKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsgcmVib3gyLmVsIGVuZHMgaGVyZQ== --90e6ba5bbb7fd88648049b1ec3b0-- From unknown Fri Jun 20 07:25:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#7946: Referring to a marker changes Emacs' behaviour. Resent-From: Deniz Dogan Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 02 Feb 2011 04:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 7946 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Le Wang Cc: 7946@debbugs.gnu.org Received: via spool by 7946-submit@debbugs.gnu.org id=B7946.12966213972909 (code B ref 7946); Wed, 02 Feb 2011 04:37:01 +0000 Received: (at 7946) by debbugs.gnu.org; 2 Feb 2011 04:36:37 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PkUSL-0000ks-9b for submit@debbugs.gnu.org; Tue, 01 Feb 2011 23:36:37 -0500 Received: from mail-iy0-f172.google.com ([209.85.210.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PkUSK-0000kh-8H for 7946@debbugs.gnu.org; Tue, 01 Feb 2011 23:36:36 -0500 Received: by iyi42 with SMTP id 42so7116834iyi.3 for <7946@debbugs.gnu.org>; Tue, 01 Feb 2011 20:45:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type:content-transfer-encoding; bh=VKTn+pC7RTFkWWShh2TXYq5lc/b+A2OzKZ9WPSZzmnM=; b=Ab6rfGA/IywqmGmJPo0Y07hdehvkhdjKZQhDI8aJQLHMsayj9uGm7LgOhOcqS6u+zy BSzc0cYJEGwc1Z2mHabC4tFdaYewP9ZYrZccYJsgkPDfgyRCDrBGlPXELngi/fohfPde aVqr62KWmJ3C4gC7zAC5W/OpFvssbgA46Cj6U= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=WBH/F77neKa5AXO0Jeiqp0Z+UnpHWSJcuyoYN2dJN3Aj+jFRTtYCm7VZTecmzNZHjG XsD5RxOU2AnwhAwuE6oyxE8fAUpu3c+xLyYQGt5a8k+fHb+DMMMi5QrUdj3WnKiHeoVp asMTT/B5jDqwfv7P+KW5Dwkd9CHdBUMuoPYsY= Received: by 10.231.10.200 with SMTP id q8mr9394694ibq.122.1296621900561; Tue, 01 Feb 2011 20:45:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.32.197 with HTTP; Tue, 1 Feb 2011 20:44:40 -0800 (PST) In-Reply-To: References: From: Deniz Dogan Date: Wed, 2 Feb 2011 05:44:40 +0100 Message-ID: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.7 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.7 (--) 2011/1/31 Le Wang : > Hi, > I found an issue where evaluating this line or not causes Emacs behaviour > change: > > (format "%s" marked-point) > > "marked-point" is a marker. =A0The bug was found on NTEmacs 23.2.1, repro= ed on > CVS NTEmacs 20110111, and=A0Stephen Berman=A0confirmed it on=A0GNU Emacs = 24.0.50.1 > (i686-pc-linux-gnu, GTK+ Version 2.20.1) of 2011-01-13 on escher > "rebox2_bug.el" is attached to this message. > Repro-steps: > > emacs -Q rebox2_bug.el > M-x eval-current-buffer > C-x b ;; switch to "*scratch*" > M-x rebox-mode > M-< > SPC,SPC ;; space twice > C-aC-aC-aC-a ;; notice that the point is stuck at 6 > C-xb ;; switch to "rebox2_bug.el > M-g g 1714 > C-d ;; uncomment the hack workaround the bug > C-M-x ;; reevaluated the function > C-x b ;; switch to "*scratch*" > C-aC-aC-aC-a ;; notice that the cursor switches between 1 and 6 > > -- > Le > I was unable to reproduce this. At both of the "C-a C-a C-a" steps, it switches between 1 and 4 (or 0 and 3 rather). --=20 Deniz Dogan From unknown Fri Jun 20 07:25:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#7946: Referring to a marker changes Emacs' behaviour. Resent-From: Deniz Dogan Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 02 Feb 2011 05:01:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 7946 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Le Wang Cc: 7946@debbugs.gnu.org Received: via spool by 7946-submit@debbugs.gnu.org id=B7946.12966228485007 (code B ref 7946); Wed, 02 Feb 2011 05:01:01 +0000 Received: (at 7946) by debbugs.gnu.org; 2 Feb 2011 05:00:48 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PkUpk-0001Ih-0M for submit@debbugs.gnu.org; Wed, 02 Feb 2011 00:00:48 -0500 Received: from mail-iy0-f172.google.com ([209.85.210.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PkUpi-0001IW-7V for 7946@debbugs.gnu.org; Wed, 02 Feb 2011 00:00:46 -0500 Received: by iyi42 with SMTP id 42so7131490iyi.3 for <7946@debbugs.gnu.org>; Tue, 01 Feb 2011 21:09:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type:content-transfer-encoding; bh=9Zp+ClVZEPG5rkI9fVVgM7d1tRgibheF0MO9jTluaYI=; b=nXT2PdpG5nTn787XwhUM4fWnPZCJ+ZFYpMYLZpEv+ensphNnyKctA8c1u1up1XE+G0 Mz0/GVjgC2pt7a+aTKAZJLQC6gLKuC/jCHGFrb/P13hTpZJho1V3B3jTogRbif4DbQ7D INeK3DCkkhF6nNKvra4VVmGF5D263KvHcYmR8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=r9PNUOKXer+AG+5uB5LkQ9PP4nLDJ352V99qceWKlpXPE7YK3n6jw3JQOQfkvQIv8O SYBCzPxb0ZuhZYmuaN1gSmbj9C25bT94Yd8NHGf7q4umDQf6xShKXN2u1aJyxrJaRiE6 5N2DWZ9HP6pTkaiMWxU77QTbXFFuyFfFfHh2s= Received: by 10.231.145.68 with SMTP id c4mr9453229ibv.47.1296623350698; Tue, 01 Feb 2011 21:09:10 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.32.197 with HTTP; Tue, 1 Feb 2011 21:08:50 -0800 (PST) In-Reply-To: References: From: Deniz Dogan Date: Wed, 2 Feb 2011 06:08:50 +0100 Message-ID: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.8 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.8 (--) 2011/2/2 Le Wang : > Thanks for trying, it should switch between columns 1 and 6 (I should hav= e > been more specific). =A0the "space twice" step should move the whole comm= ent > section over by 2 spaces, did this work for you? Sorry, I read it as C-SPC twice, so I did it wrong. I can reproduce the behavior that you described. --=20 Deniz Dogan From unknown Fri Jun 20 07:25:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#7946: Fwd: bug#7946: Referring to a marker changes Emacs' behaviour. Resent-From: Le Wang Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 02 Feb 2011 08:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 7946 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 7946@debbugs.gnu.org Received: via spool by 7946-submit@debbugs.gnu.org id=B7946.129663588223122 (code B ref 7946); Wed, 02 Feb 2011 08:39:02 +0000 Received: (at 7946) by debbugs.gnu.org; 2 Feb 2011 08:38:02 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PkYDy-00060s-0v for submit@debbugs.gnu.org; Wed, 02 Feb 2011 03:38:02 -0500 Received: from mail-ew0-f44.google.com ([209.85.215.44]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PkYDv-00060Y-Ty for 7946@debbugs.gnu.org; Wed, 02 Feb 2011 03:38:00 -0500 Received: by ewy8 with SMTP id 8so3894542ewy.3 for <7946@debbugs.gnu.org>; Wed, 02 Feb 2011 00:46:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=Dp80ExGEhY42me/RelidXwWoD+Iz++ft14iJTDKk6+A=; b=VdxdjOMWRe1QIJESU/6T1+APg79Ld7tKe4fdXiNbo9UwOR97XONQQVpR5W5jZRZBUI pGdpllSfsrXUXPDCHeMcE56GYrK98pqNQ9SeBim3I60yt0lAuUm0miyCMh9aRhGFfaC4 h/BL0dPK0CwjXckurrvz9QCunDnUXWhWYCx6M= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=p4FU0iGRKcUwgOMd78+kiRVsGMyq+JSNW05QLnO0uhyyQOx1pBhut2nCgjxUejuv/f Km2iT4lcaBqStM8H0amJpTatndQBWgLrt7F6SZoS05+XB3bxLQ43FDve/ftwr1PLq3hd yHsu7nFt2Iftuppjn91jCiIguvbmEfWQOAnrM= MIME-Version: 1.0 Received: by 10.14.119.14 with SMTP id m14mr203750eeh.24.1296636384532; Wed, 02 Feb 2011 00:46:24 -0800 (PST) Received: by 10.14.119.11 with HTTP; Wed, 2 Feb 2011 00:46:24 -0800 (PST) In-Reply-To: References: Date: Wed, 2 Feb 2011 16:46:24 +0800 Message-ID: From: Le Wang Content-Type: multipart/alternative; boundary=90e6ba5bb85b1a5838049b48aff7 X-Spam-Score: -4.8 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.4 (----) --90e6ba5bb85b1a5838049b48aff7 Content-Type: text/plain; charset=ISO-8859-1 ---------- Forwarded message ---------- From: Deniz Dogan Date: Wed, Feb 2, 2011 at 1:08 PM Subject: Re: bug#7946: Referring to a marker changes Emacs' behaviour. To: Le Wang Cc: 7946@debbugs.gnu.org 2011/2/2 Le Wang : > Thanks for trying, it should switch between columns 1 and 6 (I should have > been more specific). the "space twice" step should move the whole comment > section over by 2 spaces, did this work for you? Sorry, I read it as C-SPC twice, so I did it wrong. I can reproduce the behavior that you described. -- Deniz Dogan -- Le --90e6ba5bb85b1a5838049b48aff7 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

---------- Forwarded message ----------<= br>From: Deniz Dogan &l= t;deniz.a.m.dogan@gmail.com>
Date: Wed, Feb 2, 2011 at 1:08 PM
Subject: Re: bug#7946: Referring to a = marker changes Emacs' behaviour.
To: Le Wang <
l26wang@gmail.com>
Cc: 7946@debbugs.gnu.org


2011/2/2 Le Wang <l26wang@g= mail.com>:
> Thanks for trying, it should switch between columns = 1 and 6 (I should have
> been more specific). =A0the "space twice" step should move t= he whole comment
> section over by 2 spaces, did this work for you?

Sorry, I read it as C-SPC twice, so I did it wrong.

I can reproduce the behavior that you described.

--
Deniz Dogan



--
Le
--90e6ba5bb85b1a5838049b48aff7-- From unknown Fri Jun 20 07:25:23 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.427 (Entity 5.427) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Le Wang Subject: bug#7946: closed (Re: bug#7946: Referring to a marker changes Emacs' behaviour.) Message-ID: References: X-Gnu-PR-Message: they-closed 7946 X-Gnu-PR-Package: emacs Reply-To: 7946@debbugs.gnu.org Date: Wed, 02 Feb 2011 15:47:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1296661622-383-1" This is a multi-part message in MIME format... ------------=_1296661622-383-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #7946: Referring to a marker changes Emacs' behaviour. which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 7946@debbugs.gnu.org. --=20 7946: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D7946 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1296661622-383-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 7946-done) by debbugs.gnu.org; 2 Feb 2011 15:46:35 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Pkeug-00005R-LI for submit@debbugs.gnu.org; Wed, 02 Feb 2011 10:46:34 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.181] helo=ironport2-out.pppoe.ca) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Pkeud-00005E-HA for 7946-done@debbugs.gnu.org; Wed, 02 Feb 2011 10:46:32 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvsEAKsMSU1Ld/8K/2dsb2JhbAClGHS8GYVTBIR4jxQ X-IronPort-AV: E=Sophos;i="4.60,414,1291611600"; d="scan'208";a="90264201" Received: from 75-119-255-10.dsl.teksavvy.com (HELO ceviche.home) ([75.119.255.10]) by ironport2-out.pppoe.ca with ESMTP/TLS/ADH-AES256-SHA; 02 Feb 2011 10:54:57 -0500 Received: by ceviche.home (Postfix, from userid 20848) id C0477660DC; Wed, 2 Feb 2011 10:54:56 -0500 (EST) From: Stefan Monnier To: Le Wang Subject: Re: bug#7946: Referring to a marker changes Emacs' behaviour. Message-ID: References: Date: Wed, 02 Feb 2011 10:54:56 -0500 In-Reply-To: (Le Wang's message of "Mon, 31 Jan 2011 14:45:43 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.0 (--) X-Debbugs-Envelope-To: 7946-done Cc: 7946-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.0 (--) > I found an issue where evaluating this line or not causes Emacs behaviour > change: > (format "%s" marked-point) The patch below appears to fix the problem for me. I've installed it in the emacs-23 branch. The problem was that current-column uses a cache to try and speed up some cases, and the cache was not flushed when exiting a save-restriction. The workaround you used works because `set-buffer' flushes the cache and `format' uses set-buffer internally. Stefan === modified file 'src/editfns.c' --- src/editfns.c 2011-01-02 23:50:46 +0000 +++ src/editfns.c 2011-02-02 15:45:27 +0000 @@ -3347,6 +3347,9 @@ } } + /* Changing the buffer bounds invalidates any recorded current column. */ + invalidate_current_column (); + if (cur) set_buffer_internal (cur); ------------=_1296661622-383-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 31 Jan 2011 07:19:19 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Pjo2g-0002IJ-F3 for submit@debbugs.gnu.org; Mon, 31 Jan 2011 02:19:19 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1PjnOH-0001Oo-QD for submit@debbugs.gnu.org; Mon, 31 Jan 2011 01:37:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjnWK-0006eF-In for submit@debbugs.gnu.org; Mon, 31 Jan 2011 01:45:53 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_LOW,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([199.232.76.165]:44348) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjnWH-0006bO-7w for submit@debbugs.gnu.org; Mon, 31 Jan 2011 01:45:52 -0500 Received: from [140.186.70.92] (port=52952 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjnWF-00038r-Cs for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 01:45:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjnWD-0006an-L3 for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 01:45:46 -0500 Received: from mail-ey0-f169.google.com ([209.85.215.169]:47012) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjnWC-0006ah-SH for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 01:45:45 -0500 Received: by eyh6 with SMTP id 6so2269676eyh.0 for ; Sun, 30 Jan 2011 22:45:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=8w/J+lauYx7XWRw8EbdzNaKGtBjsCjF9VQXCgOhThlE=; b=C81lIdMswn3XqFLKvhQWpDNW3267KT73N15JnKkau2EGUx4UHHQNncgMtc0iXrGJI3 O/iEU6EDfKwD6FmHcUuSqmf0NtVU8NkbKHD9g4c+CNpUUCene+KpVL4gPxHRiXx2im2E HZE0YY91JFFlJmtcYDxwis0EKCAGcN+1ne15A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=cerWJvWWg4Y+wBWZLhqkSA/dEgqJe/ebEZcW+Fx7ei60dNaXxxalyKTQ/n949JDbxc TlEiTUFiF4BbdeW0vRF0VZsy0znpfx1uTYkhoWl1HpBAoUrNVP8zKgmvHSYFlZBNOblz wXCVkVGMrj/0ENgQSwxX4A7oqUFoHKcPIBXqQ= MIME-Version: 1.0 Received: by 10.14.37.130 with SMTP id y2mr2968707eea.24.1296456343913; Sun, 30 Jan 2011 22:45:43 -0800 (PST) Received: by 10.14.119.11 with HTTP; Sun, 30 Jan 2011 22:45:43 -0800 (PST) Date: Mon, 31 Jan 2011 14:45:43 +0800 Message-ID: Subject: Referring to a marker changes Emacs' behaviour. From: Le Wang To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary=90e6ba5bbb7fd88648049b1ec3b0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.215.169 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 199.232.76.165 X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Mon, 31 Jan 2011 02:19:17 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org --90e6ba5bbb7fd88648049b1ec3b0 Content-Type: multipart/alternative; boundary=90e6ba5bbb7fd88640049b1ec3ae --90e6ba5bbb7fd88640049b1ec3ae Content-Type: text/plain; charset=ISO-8859-1 Hi, I found an issue where evaluating this line or not causes Emacs behaviour change: (format "%s" marked-point) "marked-point" is a marker. The bug was found on NTEmacs 23.2.1, reproed on CVS NTEmacs 20110111, and Stephen Berman confirmed it on GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.20.1) of 2011-01-13 on escher "rebox2_bug.el" is attached to this message. Repro-steps: 1. emacs -Q rebox2_bug.el 2. M-x eval-current-buffer 3. C-x b ;; switch to "*scratch*" 4. M-x rebox-mode 5. M-< 6. SPC,SPC ;; space twice 7. C-aC-aC-aC-a ;; notice that the point is stuck at 6 8. C-xb ;; switch to "rebox2_bug.el 9. M-g g 1714 10. C-d ;; uncomment the hack workaround the bug 11. C-M-x ;; reevaluated the function 12. C-x b ;; switch to "*scratch*" 13. C-aC-aC-aC-a ;; notice that the cursor switches between 1 and 6 -- Le --90e6ba5bbb7fd88640049b1ec3ae Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

I found an issue where evaluating this line or not c= auses Emacs behaviour change:

(format "%s" ma= rked-point)

"marked-point= " is a marker. =A0The bug was found on NTEmacs 23.2.1, reproed on CVS = NTEmacs 20110111, and=A0Stephen Berman= =A0confirmed it on=A0GN= U Emacs 24.0.50.1
(i686-pc-linux-gnu, GTK+ Versi= on 2.20.1) of 2011-01-13 on escher

"rebox2_bug.el" is attached to this message.

<= span class=3D"Apple-style-span" style=3D"border-collapse: collapse;">Repro-= steps:
  1. emacs -Q rebox2_bug.el
  2. M-x eval-current-buffer
  3. C-x b<enter> ;; switch to "*scratch*"<= /li>
  4. M-x rebox-mode
  5. M-<
  6. SPC,SPC ;; space twice
  7. C-aC-aC-aC-a ;; notice that the point is stu= ck at 6
  8. C-xb<enter> ;; switch t= o "rebox2_bug.el
  9. M-g g 1714
  10. C-d ;; uncomment the hack workaround the bug
  11. C-M-x ;; reevaluated the function=A0
  12. C-x b<enter> ;; switch to "*scratch*"
  13. C-aC-aC-aC-a ;; notice that the cursor switches between 1 = and 6


--
Le
--90e6ba5bbb7fd88640049b1ec3ae-- --90e6ba5bbb7fd88648049b1ec3b0 Content-Type: application/octet-stream; name="rebox2_bug.el" Content-Disposition: attachment; filename="rebox2_bug.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjl0l4uk0 Ozs7IHJlYm94Mi5lbCAtLS0gSGFuZGxpbmcgb2YgY29tbWVudCBib3hlcyBpbiB2YXJpb3VzIHN0 eWxlcy4KCjs7IEZpbGVuYW1lOiByZWJveDIuZWwKOzsgRGVzY3JpcHRpb246Cjs7IEF1dGhvcjog RnJhbsOnb2lzIFBpbmFyZAo7OyAgICAgICAgIExlIFdhbmcKOzsgTWFpbnRhaW5lcjogTGUgV2Fu ZwoKOzsgQ29weXJpZ2h0IMKpIDIwMTEgTGUgV2FuZwo7OyBDb3B5cmlnaHQgwqkgMTk5MSw5Miw5 Myw5NCw5NSw5Niw5Nyw5OCwwMCBQcm9naWNpZWxzIEJvdXJiZWF1LVBpbmFyZCBpbmMuCjs7IEZy YW7Dp29pcyBQaW5hcmQgPHBpbmFyZEBpcm8udW1vbnRyZWFsLmNhPiwgQXByaWwgMTk5MS4KCjs7 IENyZWF0ZWQ6IE1vbiBKYW4gMTAgMjI6MjI6MzIgMjAxMSAoKzA4MDApCjs7IFZlcnNpb246IDAu Mgo7OyBMYXN0LVVwZGF0ZWQ6IFN1biBKYW4gMzAgMjI6MDI6MTUgMjAxMSAoKzA4MDApCjs7ICAg ICAgICAgICBCeTogTGUgV2FuZwo7OyAgICAgVXBkYXRlICM6IDE3MQo7OyBVUkw6IGh0dHBzOi8v Z2l0aHViLmNvbS9sZXdhbmcvcmVib3gyCjs7IEtleXdvcmRzOgo7OyBDb21wYXRpYmlsaXR5OiBH TlUgRW1hY3MgMjMuMgoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7Owo7OzsgQ29tbWVudGFyeToKCiAgICAgICAg ICAgICAgICAgICAgIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwogICAgICAg ICAgICAgICAgICAgICA7OyBIaSwgSSdtIGEgYm94LiBNeSBzdHlsZSBpcyA1MjUgOzsKICAgICAg ICAgICAgICAgICAgICAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cgo7Ozsg SW5zdGFsbGF0aW9uOgo7Owo7OyAxLiBBZGQgcmVib3gyLmVsIHRvIGEgZGlyZWN0b3J5IGluIHlv dXIgbG9hZC1wYXRoLgo7Owo7OyAyLiBCYXNpYyBpbnN0YWxsIC0gYWRkIHRvIHlvdXIgIi5lbWFj cyI6Cjs7Cjs7ICAgICAocmVxdWlyZSAncmVib3gyKQo7OyAgICAgKGdsb2JhbC1zZXQta2V5IFso bWV0YSBxKV0gJ3JlYm94LWR3aW0tZmlsbCkKOzsgICAgIChnbG9iYWwtc2V0LWtleSBbKHNoaWZ0 IG1ldGEgcSldICdyZWJveC1kd2ltLW5vLWZpbGwpCjs7Cjs7IDMuIEZ1bGwgaW5zdGFsbCAtIHVz ZSBgcmVib3gtbW9kZScgaW4gbWFqb3ItbW9kZSBob29rczoKOzsKOzsgICAgIDs7IHNldHVwIHJl Ym94IGZvciBlbWFjcy1saXNwCjs7ICAgICAoYWRkLWhvb2sgJ2VtYWNzLWxpc3AtbW9kZS1ob29r IChsYW1iZGEgKCkKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSByZWJveC1kZWZhdWx0LXN0eWxlIDUyNSkKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSByZWJveC1uby1ib3gtY29tbWVudC1zdHlsZSA1MjEpCjs7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYm94LW1vZGUgMSkpKQo7Owo7OyAg ICBEZWZhdWx0IGJveGluZyBzdHlsZXMgc2hvdWxkIHdvcmsgZm9yIG1vc3QgcHJvZ3JhbW1pbmcg bW9kZXMsIGhvd2V2ZXIsCjs7ICAgIHlvdSBtYXkgd2FudCB0byBzZXQgdGhlIHN0eWxlIHlvdSBw cmVmZXIgZm9yIGVhY2ggbWFqb3ItbW9kZSBsaWtlIGFib3ZlCjs7Cjs7ICoqIG1pbm9yLW1vZGUg ZmVhdHVyZXMKOzsKOzsgICAtIGF1dG8tZmlsbCBib3hlcwo7OyAgIC0gaHlwZSBmaWxsYWRhcHQK OzsgICAtIG1vdGlvbiAoYmVnaW5uaW5nLW9mLWxpbmUsIGVuZC1vZi1saW5lKSB3aXRoaW4gYm94 Cjs7ICAgLSBTLXJldHVybiByZWJveC1uZXdsaW5lCjs7ICAgLSBraWxsL3lhbmsgKHdpdGhpbiBi b3gpIG9ubHkgdGV4dCwgbm90IGJveCBib3JkZXJzCjs7ICAgLSBtb3ZlIGJveCBieSB1c2luZyBz cGFjZSwgYmFja3NwYWNlIC8gY2VudGVyIHdpdGggTS1jCjs7ICAgICAtIHBvaW50IGhhcyB0byBi ZSB0byB0aGUgbGVmdCBvZiB0aGUgYm9yZGVyCjs7Cjs7Cgo7OzsgSWRlYXMgcmVtb3ZlZCBmcm9t IEZyYW7Dp29pcyBQaW5hcmQncyBvcmlnaW5hbCB2ZXJzaW9uCjs7Cjs7ICogQnVpbGRpbmcgc3R5 bGVzIG9uIHRvcCBvZiBlYWNoIG90aGVyLgo7OwoKOzs7IEZ1dHVyZSBpbXByb3ZlbWVudCBpZGVh czoKOzsKOzsgKiBhbGxvdyBtaXhlZCBib3JkZXJzICItPS09LT0tPS09LSIKOzsgKiBvcHRpbWl6 ZSBmdW5jdGlvbnMgdGhhdCBtb2RpZnkgdGhlIGJveCBjb250ZW50cyBzbyB0aGV5IGRvbid0IHVu YnVpbGQgYW5kCjs7ICAgcmVidWlsZCBib3hlcyBhbGwgdGhlIHRpbWUuCjs7ICogc3R5bGUgc2Vs ZWN0aW9uIGNhbiB1c2Ugc29tZSBraW5kIG9mIG1lbnUgY29tcGxldGlvbiB3aGVyZSBhbGwgc3R5 bGVzIGFyZQo7OyAgIHByZXNlbnRlZCBhbmQgdGhlIHVzZXIgbmF2aWdhdGVzCjs7ICogc3BhY2Ug b24gdGhlIHd3IGJvcmRlciBtb3ZlcyB3aG9sZSBib3ggcmlnaHQsIGJhY2tzcGFjZSBtb3ZlcyBi b3ggbGVmdAo7Owo7Owo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7Cjs7OyBDaGFuZ2UgTG9nOgo7Owo7OyAqIGJl dHRlciBlcnJvciBoYW5kbGluZwo7OyAqIGZpeGVkIGEgZmV3IGJveGluZyBhbmQgdW5ib3hpbmcg Y29ybmVyIGNhc2VzIHdoZXJlIGJveGVzIHdlcmUgbWFsZm9ybWVkCjs7ICogY2hhbmdlZCBob3cg c3BhY2VzIGFyZSBoYW5kbGVkLCByZWJveCB3YXMgdmVyeSBhZ2dyZXNzaXZlIGluIHJlbW92aW5n Cjs7ICAgd2hpdGUgc3BhY2UgaW4gZXZlcnkgZGlyZWN0aW9uLCBhbmQgZXZlbiB3aGVuIGl0IHdh cyBrZWVwaW5nIHNwYWNlcywgaXQKOzsgICB3b3VsZCBkZWxldGUgdGhlbSBhbmQgcmVpbnNlcnQs IHdoaWNoIGtpbGxlZCBhbnkgbWFya2Vycy4KOzsKOzsgICBub3cgc3BhY2VzIGFyZSBwcmVjaW91 cyBhbmQgbmV2ZXIgYWdncmVzc2l2ZWx5IGRlbGV0ZWQuICBVbmJveGluZwo7OyAgIGZvbGxvd2Vk IGJ5IGJveGluZyBpcyBpZGVtcG90ZW50Lgo7OyAqIGluc3RlYWQgb2YgcGFyc2luZyBhIGN1cnJl bnQtcHJlZml4LWFyZyBpbiBjb252b2x1dGVkIHdheXMgYHJlYm94LWVuZ2luZScKOzsgICBhbmQg bW9zdCBvdGhlciBmdW5jdGlvbnMgbm93IHRha2Uga2V5IHBhcmFtZXRlcnMKOzsgKiBpbmNyZWFz ZWQgdGhlIGxlbmdoIG9mIHRoZSBib3ggdGV4dCBpbiB0aGUgYm94IGRlZmluaXRpb24gc28gdGhh dCBsb25nZXIKOzsgICBtZXJnZWQgdG9wIGFuZCBib3R0b20gYm9yZGVycyBjYW4gYmUgc3BlY2lm aWVkLgo7OyAqIGF1dG8tZmlsbGluZwo7OyAqIG1pbm9yLW1vZGUKOzsKOzs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7 Owo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCjs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzCjs7IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgo7Owo7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKOzsgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCjs7IEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IKOzsgbW9yZSBkZXRhaWxzLgo7Owo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwo7OyB3 aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlCjs7IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKOzsgMDIxMTAtMTMwMSwgVVNBLgo7Owo7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Cjs7Cjs7OyBDb2RlOgoKOzssLS0tLQo7O3wgRnJhbsOnb2lzIFBpbmFyZCdzIG9yaWdp bmFsIGNvbW1lbnRhcnkgKHdpdGggbm9uLXJlbGV2YW50IHN0dWZmIHJlbW92ZWQpCjs7YC0tLS0K Cgo7OyBGb3IgY29tbWVudHMgaGVsZCB3aXRoaW4gYm94ZXMsIGl0IGlzIHBhaW5mdWwgdG8gZmls bCBwYXJhZ3JhcGhzLCB3aGlsZQo7OyBzdHJldGNoaW5nIG9yIHNocmlua2luZyB0aGUgc3Vycm91 bmRpbmcgYm94ICJieSBoYW5kIiwgYXMgbmVlZGVkLiAgVGhpcwo7OyBwaWVjZSBvZiBHTlUgRW1h Y3MgTElTUCBjb2RlIGVhc2VzIG15IGxpZmUgb24gdGhpcy4gIEkgZmluZCBvbmx5IGZhaXIsCjs7 IHdoaWxlIGdpdmluZyBhbGwgc291cmNlcyBmb3IgYSBwYWNrYWdlIHVzaW5nIHN1Y2ggYm94ZWQg Y29tbWVudHMsIHRvIGFsc28KOzsgZ2l2ZSB0aGUgbWVhbnMgSSB1c2UgZm9yIG5pY2VseSBtb2Rp ZnlpbmcgY29tbWVudHMuICBTbyBoZXJlIHRoZXkgYXJlIQoKOzsgVGhlIGZ1bmN0aW9uIGByZWJv eC1jb21tZW50JyBhdXRvbWF0aWNhbGx5IGRpc2NvdmVycyB0aGUgZXh0ZW50IG9mIHRoZQo7OyBi b3hlZCBjb21tZW50cyBuZWFyIHRoZSBjdXJzb3IsIHBvc3NpYmx5IHJlZmlsbHMgdGhlIHRleHQs IHRoZW4gYWRqdXN0cyB0aGUKOzsgY29tbWVudCBib3ggc3R5bGUuICBXaGVuIHRoaXMgY29tbWFu ZCBpcyBleGVjdXRlZCwgdGhlIGN1cnNvciBzaG91bGQgYmUKOzsgd2l0aGluIGEgY29tbWVudCwg b3IgZWxzZSBpdCBzaG91bGQgYmUgYmV0d2VlbiB0d28gY29tbWVudHMsIGluIHdoaWNoIGNhc2UK OzsgdGhlIGNvbW1hbmQgYXBwbGllcyB0byB0aGUgbmV4dCBjb21tZW50LiAgVGhlIGZ1bmN0aW9u IGByZWJveC1yZWdpb24nIGRvZXMKOzsgdGhlIHNhbWUsIGV4Y2VwdCB0aGF0IGl0IHRha2VzIHRo ZSBjdXJyZW50IHJlZ2lvbiBhcyBhIGJveGVkIGNvbW1lbnQuICBCb3RoCjs7IGNvbW1hbmRzIG9i ZXkgbnVtZXJpYyBwcmVmaXhlcyB0byBhZGQgb3IgcmVtb3ZlIGEgYm94LCBmb3JjZSBhIHBhcnRp Y3VsYXIKOzsgYm94IHN0eWxlLCBvciB0byBwcmV2ZW50IHJlZmlsbGluZyBvZiB0ZXh0LiAgV2l0 aG91dCBzdWNoIHByZWZpeGVzLCB0aGUKOzsgY29tbWFuZHMgbWF5IGRlZHVjZSB0aGUgY3VycmVu dCBjb21tZW50IGJveCBzdHlsZSBmcm9tIHRoZSBjb21tZW50IGl0c2VsZgo7OyBzbyB0aGUgc3R5 bGUgaXMgcHJlc2VydmVkLiAgQW4gdW5ib3hlZCBjb21tZW50IGlzIG1lcmVseSBvbmUgb2YgYm94 IHN0eWxlcy4KCjs7IEEgc3R5bGUgaXMgaWRlbnRpZmllZCBieSB0aHJlZSBub24temVybyBkaWdp dHMuICBUaGUgX2NvbnZlbnRpb25fIGFib3V0Cjs7IHN0eWxlIG51bWJlcmluZyBpcyBzdWNoIHRo ZSB0aGUgaHVuZHJlZHMgZGlnaXQgcm91Z2hseSByZXByZXNlbnRzIHRoZQo7OyBwcm9ncmFtbWlu ZyBsYW5ndWFnZSwgdGhlIHRlbnMgZGlnaXQgcm91Z2hseSByZXByZXNlbnRzIGEgYm94IHF1YWxp dHkgKG9yCjs7IHdlaWdodCkgYW5kIHRoZSB1bml0cyBkaWdpdCByb3VnaGx5IGEgYm94IHR5cGUg KG9yIGZpZ3VyZSkuICBMYW5ndWFnZSwKOzsgcXVhbGl0eSBhbmQgdHlwZXMgYXJlIGNvbGxlY3Rp dmVseSByZWZlcnJlZCB0byBhcyBzdHlsZSBhdHRyaWJ1dGVzLgoKOzs7OyBDb252ZW50aW9uOgoK OzsgQSBwcm9ncmFtbWluZyBsYW5ndWFnZSBpcyBhc3NvY2lhdGVkIHdpdGggY29tbWVudCBkZWxp bWl0ZXJzLiAgVmFsdWVzIGFyZQo7OyAxMDAgZm9yIG5vbmUgb3IgdW5rbm93biwgMjAwIGZvciBg LyonIGFuZCBgKi8nIGFzIGluIHBsYWluIEMsIDMwMCBmb3IgYC8vJwo7OyBhcyBpbiBDKyssIDQw MCBmb3IgYCMnIGFzIGluIG1vc3Qgc2NyaXB0aW5nIGxhbmd1YWdlcywgNTAwIGZvciBgOycgYXMg aW4KOzsgTElTUCBvciBhc3NlbWJsZXIgYW5kIDYwMCBmb3IgYCUnIGFzIGluIFRlWCBvciBQb3N0 U2NyaXB0LgoKOzsgQm94IHF1YWxpdHkgZGlmZmVycyBhY2NvcmRpbmcgdG8gbGFuZ3VhZ2UuIEZv ciB1bmtub3duIGxhbmd1YWdlcyAoMTAwKSBvcgo7OyBmb3IgdGhlIEMgbGFuZ3VhZ2UgKDIwMCks IHZhbHVlcyBhcmUgMTAgZm9yIHNpbXBsZSwgMjAgZm9yIHJvdW5kZWQsIGFuZCAzMAo7OyBvciA0 MCBmb3Igc3RhcnJlZC4gIFNpbXBsZSBxdWFsaXR5IGJveGVzICgxMCkgdXNlIGNvbW1lbnQgZGVs aW1pdGVycyB0bwo7OyBsZWZ0IGFuZCByaWdodCBvZiBlYWNoIGNvbW1lbnQgbGluZSwgYW5kIGFs c28gZm9yIHRoZSB0b3Agb3IgYm90dG9tIGxpbmUKOzsgd2hlbiBhcHBsaWNhYmxlLiBSb3VuZGVk IHF1YWxpdHkgYm94ZXMgKDIwKSB0cnkgdG8gc3VnZ2VzdCByb3VuZGVkIGNvcm5lcnMKOzsgaW4g Ym94ZXMuICBTdGFycmVkIHF1YWxpdHkgYm94ZXMgKDQwKSBtb3N0bHkgdXNlIGEgbGVmdCBtYXJn aW4gb2YgYXN0ZXJpc2tzCjs7IG9yIFgnZXMsIGFuZCB1c2UgdGhlbSBhbHNvIGluIGJveCBzdXJy b3VuZGluZ3MuICBGb3IgYWxsIG90aGVycyBsYW5ndWFnZXMsCjs7IGJveCBxdWFsaXR5IGluZGlj YXRlcyB0aGUgdGhpY2tuZXNzIGluIGNoYXJhY3RlcnMgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0Cjs7 IHNpZGVzIG9mIHRoZSBib3g6IHZhbHVlcyBhcmUgMTAsIDIwLCAzMCBvciA0MCBmb3IgMSwgMiwg MyBvciA0IGNoYXJhY3RlcnMKOzsgd2lkZS4gIFdpdGggQysrLCBxdWFsaXR5IDEwIGlzIG5vdCB1 c2VmdWwsIHlvdSBzaG91bGQgZm9yY2UgMjAgaW5zdGVhZC4KCjs7IEJveCB0eXBlIHZhbHVlcyBh cmUgMSBmb3IgZnVsbHkgb3BlbmVkIGJveGVzIGZvciB3aGljaCBib3hpbmcgaXMgZG9uZQo7OyBv bmx5IGZvciB0aGUgbGVmdCBhbmQgcmlnaHQgYnV0IG5vdCBmb3IgdG9wIG9yIGJvdHRvbSwgMiBm b3IgaGFsZgo7OyBzaW5nbGUgbGluZWQgYm94ZXMgZm9yIHdoaWNoIGJveGluZyBpcyBkb25lIG9u IGFsbCBzaWRlcyBleGNlcHQgdG9wLAo7OyAzIGZvciBmdWxseSBzaW5nbGUgbGluZWQgYm94ZXMg Zm9yIHdoaWNoIGJveGluZyBpcyBkb25lIG9uIGFsbCBzaWRlcywKOzsgNCBmb3IgaGFsZiBkb3Vi bGUgbGluZWQgYm94ZXMgd2hpY2ggaXMgbGlrZSB0eXBlIDIgYnV0IG1vcmUgYm9sZCwKOzsgb3Ig NSBmb3IgZnVsbHkgZG91YmxlIGxpbmVkIGJveGVzIHdoaWNoIGlzIGxpa2UgdHlwZSAzIGJ1dCBt b3JlIGJvbGQuCgo7OyBUaGUgc3BlY2lhbCBzdHlsZSAyMjEgaXMgZm9yIEMgY29tbWVudHMgYmV0 d2VlbiBhIHNpbmdsZSBvcGVuaW5nIGAvKicgYW5kIGEKOzsgc2luZ2xlIGNsb3NpbmcgYCovJy4g IFRoZSBzcGVjaWFsIHN0eWxlIDExMSBkZWxldGVzIGEgYm94LgoKOzs7OyBIaXN0b3J5OgoKOzsg SSBmaXJzdCBvYnNlcnZlZCByb3VuZGVkIGNvcm5lcnMsIGFzIGluIHN0eWxlIDIyMyBib3hlcywg aW4gY29kZSBmcm9tCjs7IFdhcnJlbiBUdWNrZXIsIGEgcHJldmlvdXMgbWFpbnRhaW5lciBvZiB0 aGUgYHNoYXInIHBhY2thZ2UuICBCZXNpZGVzIHZlcnkKOzsgc3BlY2lhbCBmaWxlcywgSSB3YXMg Y2FyZWZ1bGx5IGF2b2lkaW5nIHRvIHVzZSBzdWNoIGJveGVzIGZvciByZWFsIHdvcmssCjs7IGFz IEkgZm91bmQgdGhlbSBtdWNoIHRvbyBoYXJkIHRvIG1haW50YWluLiAgTXkgZnJpZW5kIFBhdWwg UHJvdm9zdCB3YXMKOzsgd29ya2luZyBhdCBUYWFybmEsIGEgY29tcHV0ZXIgZ3JhcGhpY3MgcGxh Y2UsIHdoaWNoIGhhZCBib3hlcyBhcyBwYXJ0IG9mCjs7IHRoZWlyIGNvZGluZyBzdGFuZGFyZHMu ICBIZSBhc2tlZCB0aGF0IHdlIHRyeSBzb21ldGhpbmcgdG8gZ2V0IG91dCBvZiBoaXMKOzsgbWlz ZXJ5LCBhbmQgdGhpcyBob3cgYHJlYm94LmVsJyB3YXMgb3JpZ2luYWxseSB3cml0dGVuLiAgSSBk aWQgbm90IHBsYW4gdG8KOzsgdXNlIGl0IGZvciBteXNlbGYsIGJ1dCBQYXVsIHdhcyBzbyBlbnRo dXNpYXN0aWMgdGhhdCBJIHRpbWlkbHkgc3RhcnRlZCB0bwo7OyB1c2UgYm94ZXMgaW4gbXkgdGhp bmdzLCB2ZXJ5IGxpdHRsZSBhdCBmaXJzdCwgYnV0IG1vcmUgYW5kIG1vcmUgYXMgdGltZQo7OyBw YXNzZWQsIHlldCBub3QgZnVsbHkgc3VyZSBpdCB3YXMgYSBnb29kIG1vdmUuICBMYXRlciwgbWFu eSBmcmllbmRzCjs7IHNwb250YW5lb3VzbHkgc3RhcnRlZCB0byB1c2UgdGhpcyB0b29sIGZvciBy ZWFsLCBzb21lIGJlaW5nIHZlcnkgc2VyaW91cwo7OyB3b3JrZXJzLiAgVGhpcyBmaW5hbGx5IGNv bnZpbmNlZCBtZSB0aGF0IGJveGVzIGFyZSBhY2NlcHRhYmxlLCBhZnRlciBhbGwuCgwKKHJlcXVp cmUgJ25ld2NvbW1lbnQpCgooZXZhbC13aGVuLWNvbXBpbGUKICAocmVxdWlyZSAnZmlsbGFkYXB0 IG5pbCB0KQogIChyZXF1aXJlICdjbCkpCgo7OyBCb3ggdGVtcGxhdGVzLiAgRmlyc3QgbnVtYmVy IGlzIHN0eWxlLCBzZWNvbmQgaXMgcmVjb2duaXRpb24gd2VpZ2h0LgooZGVmY29uc3QgcmVib3gt dGVtcGxhdGVzCgogIDs7IEdlbmVyaWMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGVtcGxhdGVzLiAg QWRkaW5nIDMwMCByZXBsYWNlcwogIDs7IGA/JyBieSBgLycsIGZvciBDKysgc3R5bGUgY29tbWVu dHMuICBBZGRpbmcgNDAwIHJlcGxhY2VzIGA/JyBieQogIDs7IGAjJywgZm9yIHNjcmlwdGluZyBs YW5ndWFnZXMuICBBZGRpbmcgNTAwIHJlcGxhY2VzIGA/JyBieSAnOycsCiAgOzsgZm9yIExJU1Ag YW5kIGFzc2VtYmxlci4gIEFkZGluZyA2MDAgcmVwbGFjZXMgYD8nIGJ5IGAlJywgZm9yCiAgOzsg VGVYIGFuZCBQb3N0U2NyaXB0LgoKICAnKCgxMCAxMTQKICAgICAgICAiP2JveDEyMzQ1NiIpCgog ICAgKDExIDExNQogICAgICAgICI/IGJveDEyMzQ1NiIpCgogICAgKDEyIDIxNQogICAgICAgICI/ IGJveDEyMzQ1NiA/IgogICAgICAgICI/IC0tLS0tLS0tLSA/IikKCiAgICAoMTMgMzE1CiAgICAg ICAgIj8gLS0tLS0tLS0tID8iCiAgICAgICAgIj8gYm94MTIzNDU2ID8iCiAgICAgICAgIj8gLS0t LS0tLS0tID8iKQoKICAgICgxNCA0MTUKICAgICAgICAiPyBib3gxMjM0NTYgPyIKICAgICAgICAi Pz8/Pz8/Pz8/Pz8/PyIpCgogICAgKDE1IDUxNQogICAgICAgICI/Pz8/Pz8/Pz8/Pz8/IgogICAg ICAgICI/IGJveDEyMzQ1NiA/IgogICAgICAgICI/Pz8/Pz8/Pz8/Pz8/IikKCiAgICAoMjAgMTI0 CiAgICAgICAgIj8/Ym94MTIzNDU2IikKCiAgICAoMjEgMTI1CiAgICAgICAgIj8/IGJveDEyMzQ1 NiIpCgogICAgKDIyIDIyNQogICAgICAgICI/PyBib3gxMjM0NTYgPz8iCiAgICAgICAgIj8/IC0t LS0tLS0tLSA/PyIpCgogICAgKDIzIDMyNQogICAgICAgICI/PyAtLS0tLS0tLS0gPz8iCiAgICAg ICAgIj8/IGJveDEyMzQ1NiA/PyIKICAgICAgICAiPz8gLS0tLS0tLS0tID8/IikKCiAgICAoMjQg NDI1CiAgICAgICAgIj8/IGJveDEyMzQ1NiA/PyIKICAgICAgICAiPz8/Pz8/Pz8/Pz8/Pz8/IikK CiAgICAoMjUgNTI1CiAgICAgICAgIj8/Pz8/Pz8/Pz8/Pz8/PyIKICAgICAgICAiPz8gYm94MTIz NDU2ID8/IgogICAgICAgICI/Pz8/Pz8/Pz8/Pz8/Pz8iKQoKICAgICgzMCAxMzQKICAgICAgICAi Pz8/Ym94MTIzNDU2IikKCiAgICAoMzEgMTM1CiAgICAgICAgIj8/PyBib3gxMjM0NTYiKQoKICAg ICgzMiAyMzUKICAgICAgICAiPz8/IGJveDEyMzQ1NiA/Pz8iCiAgICAgICAgIj8/PyAtLS0tLS0t LS0gPz8/IikKCiAgICAoMzMgMzM1CiAgICAgICAgIj8/PyAtLS0tLS0tLS0gPz8/IgogICAgICAg ICI/Pz8gYm94MTIzNDU2ID8/PyIKICAgICAgICAiPz8/IC0tLS0tLS0tLSA/Pz8iKQoKICAgICgz NCA0MzUKICAgICAgICAiPz8/IGJveDEyMzQ1NiA/Pz8iCiAgICAgICAgIj8/Pz8/Pz8/Pz8/Pz8/ Pz8/IikKCiAgICAoMzUgNTM1CiAgICAgICAgIj8/Pz8/Pz8/Pz8/Pz8/Pz8/IgogICAgICAgICI/ Pz8gYm94MTIzNDU2ID8/PyIKICAgICAgICAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8iKQoKICAgICg0MCAx NDQKICAgICAgICAiPz8/P2JveDEyMzQ1NiIpCgogICAgKDQxIDE0NQogICAgICAgICI/Pz8/IGJv eDEyMzQ1NiIpCgogICAgKDQyIDI0NQogICAgICAgICI/Pz8/IGJveDEyMzQ1NiA/Pz8/IgogICAg ICAgICI/Pz8/IC0tLS0tLS0tLSA/Pz8/IikKCiAgICAoNDMgMzQ1CiAgICAgICAgIj8/Pz8gLS0t LS0tLS0tID8/Pz8iCiAgICAgICAgIj8/Pz8gYm94MTIzNDU2ID8/Pz8iCiAgICAgICAgIj8/Pz8g LS0tLS0tLS0tID8/Pz8iKQoKICAgICg0NCA0NDUKICAgICAgICAiPz8/PyBib3gxMjM0NTYgPz8/ PyIKICAgICAgICAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIpCgogICAgKDQ1IDU0NQogICAgICAgICI/ Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IgogICAgICAgICI/Pz8/IGJveDEyMzQ1NiA/Pz8/IgogICAgICAg ICI/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IikKCiAgICAoNTAgMTU0CiAgICAgICAgIj8/Pz8/Ym94MTIz NDU2IikKCiAgICAoNTEgMTU1CiAgICAgICAgIj8/Pz8/IGJveDEyMzQ1NiIpCgogICAgKDYwIDE2 NAogICAgICAgICI/Pz8/Pz9ib3gxMjM0NTYiKQoKICAgICg2MSAxNjUKICAgICAgICAiPz8/Pz8/ IGJveDEyMzQ1NiIpCgogICAgOzssLS0tLQogICAgOzt8IGJveHF1b3RlIHN0eWxlIGZvciBjb21t ZW50cwogICAgOztgLS0tLQoKICAgICgxNiAxMjYKICAgICAgICAiPywtLS0tIgogICAgICAgICI/ fCBib3gxMjM0NTYiCiAgICAgICAgIj9gLS0tLSIpCgogICAgKDE3IDIyNgogICAgICAgICI/LC0t LS0tLS0tLS0iCiAgICAgICAgIj98IGJveDEyMzQ1NiIKICAgICAgICAiP2AtLS0tLS0tLS0tIikK CiAgICAoMjYgMTM2CiAgICAgICAgIj8/LC0tLS0iCiAgICAgICAgIj8/fCBib3gxMjM0NTYiCiAg ICAgICAgIj8/YC0tLS0iKQoKICAgICgyNyAyMzYKICAgICAgICAiPz8sLS0tLS0tLS0tLSIKICAg ICAgICAiPz98IGJveDEyMzQ1NiIKICAgICAgICAiPz9gLS0tLS0tLS0tLSIpCgoKICAgIDs7OyBU ZXh0IG1vZGUgKG5vbiBwcm9ncmFtbWluZykgdGVtcGxhdGVzLgoKICAgICgxMTEgMTEzCiAgICAg ICAgICJib3gxMjM0NTYiKQoKICAgICgxMTIgMjEzCiAgICAgICAgICJ8IGJveDEyMzQ1NiB8Igog ICAgICAgICAiKy0tLS0tLS0tLS0tKyIpCgogICAgKDExMyAzMTMKICAgICAgICAgIistLS0tLS0t LS0tLSsiCiAgICAgICAgICJ8IGJveDEyMzQ1NiB8IgogICAgICAgICAiKy0tLS0tLS0tLS0tKyIp CgogICAgKDExNCA0MTMKICAgICAgICAgInwgYm94MTIzNDU2IHwiCiAgICAgICAgICIqPT09PT09 PT09PT0qIikKCiAgICAoMTE1IDUxMwogICAgICAgICAiKj09PT09PT09PT09KiIKICAgICAgICAg InwgYm94MTIzNDU2IHwiCiAgICAgICAgICIqPT09PT09PT09PT0qIikKCiAgICAoMTE2IDExNAog ICAgICAgICAiLS0tLS0tLS0tIgogICAgICAgICAiYm94MTIzNDU2IgogICAgICAgICAiLS0tLS0t LS0tIikKCiAgICAoMTIxIDEyMwogICAgICAgICAifCBib3gxMjM0NTYgfCIpCgogICAgKDEyMiAy MjMKICAgICAgICAgInwgYm94MTIzNDU2IHwiCiAgICAgICAgICJgLS0tLS0tLS0tLS0nIikKCiAg ICAoMTIzIDMyMwogICAgICAgICAiLi0tLS0tLS0tLS0tLiIKICAgICAgICAgInwgYm94MTIzNDU2 IHwiCiAgICAgICAgICJgLS0tLS0tLS0tLS0nIikKCiAgICAoMTI0IDQyMwogICAgICAgICAifCBi b3gxMjM0NTYgfCIKICAgICAgICAgIlxcPT09PT09PT09PT0vIikKCiAgICAoMTI1IDUyMwogICAg ICAgICAiLz09PT09PT09PT09XFwiCiAgICAgICAgICJ8IGJveDEyMzQ1NiB8IgogICAgICAgICAi XFw9PT09PT09PT09PS8iKQoKICAgIDs7IGJveHF1b3RlIHN0eWxlCgogICAgKDEyNiAxMjUKICAg ICAgICAgIiwtLS0tIgogICAgICAgICAifCBib3gxMjM0NTYiCiAgICAgICAgICJgLS0tLSIpCgog ICAgKDEyNyAxMjYKICAgICAgICAgIiwtLS0tLS0tLS0tIgogICAgICAgICAifCBib3gxMjM0NTYi CiAgICAgICAgICJgLS0tLS0tLS0tLSIpCgogICAgKDE0MSAxNDMKICAgICAgICAgInwgYm94MTIz NDU2ICIpCgogICAgKDE0MiAyNDMKICAgICAgICAgIiogYm94MTIzNDU2ICoiCiAgICAgICAgICIq KioqKioqKioqKioqIikKCiAgICAoMTQzIDM0MwogICAgICAgICAiKioqKioqKioqKioqKiIKICAg ICAgICAgIiogYm94MTIzNDU2ICoiCiAgICAgICAgICIqKioqKioqKioqKioqIikKCiAgICAoMTQ0 IDQ0MwogICAgICAgICAiWCBib3gxMjM0NTYgWCIKICAgICAgICAgIlhYWFhYWFhYWFhYWFgiKQoK ICAgICgxNDUgNTQzCiAgICAgICAgICJYWFhYWFhYWFhYWFhYIgogICAgICAgICAiWCBib3gxMjM0 NTYgWCIKICAgICAgICAgIlhYWFhYWFhYWFhYWFgiKQoKICAgIDs7IEMgbGFuZ3VhZ2UgdGVtcGxh dGVzLgoKICAgICgyMTEgMTE4CiAgICAgICAgICIvKiBib3gxMjM0NTYgKi8iKQoKICAgICgyMTIg MjE4CiAgICAgICAgICIvKiBib3gxMjM0NTYgKi8iCiAgICAgICAgICIvKiAtLS0tLS0tLS0gKi8i KQoKICAgICgyMTMgMzE4CiAgICAgICAgICIvKiAtLS0tLS0tLS0gKi8iCiAgICAgICAgICIvKiBi b3gxMjM0NTYgKi8iCiAgICAgICAgICIvKiAtLS0tLS0tLS0gKi8iKQoKICAgICgyMTQgNDE4CiAg ICAgICAgICIvKiBib3gxMjM0NTYgKi8iCiAgICAgICAgICIvKiA9PT09PT09PT0gKi8iKQoKICAg ICgyMTUgNTE4CiAgICAgICAgICIvKiA9PT09PT09PT0gKi8iCiAgICAgICAgICIvKiBib3gxMjM0 NTYgKi8iCiAgICAgICAgICIvKiA9PT09PT09PT0gKi8iKQoKICAgICgyMjEgMTI4CiAgICAgICAg ICIvKiIKICAgICAgICAgIiAgIGJveDEyMzQ1NiIKICAgICAgICAgIiAqLyIpCgogICAgKDIyMiAy MjgKICAgICAgICAgIi8qICAgICAgICAgIC4iCiAgICAgICAgICIgfCBib3gxMjM0NTYgfCIKICAg ICAgICAgIiBgLS0tLS0tLS0tLSovIikKCiAgICAoMjIzIDMyOAogICAgICAgICAiLyotLS0tLS0t LS0tLiIKICAgICAgICAgInwgYm94MTIzNDU2IHwiCiAgICAgICAgICJgLS0tLS0tLS0tLSovIikK CiAgICAoMjI0IDQyOAogICAgICAgICAiLyogICAgICAgICAgXFwiCiAgICAgICAgICJ8IGJveDEy MzQ1NiB8IgogICAgICAgICAiXFw9PT09PT09PT09Ki8iKQoKICAgICgyMjUgNTI4CiAgICAgICAg ICIvKj09PT09PT09PT1cXCIKICAgICAgICAgInwgYm94MTIzNDU2IHwiCiAgICAgICAgICJcXD09 PT09PT09PT0qLyIpCgogICAgKDIzMSAxMzgKICAgICAgICAgIi8qIgogICAgICAgICAiIHwgYm94 MTIzNDU2IgogICAgICAgICAiICovIikKCiAgICAoMjMyIDIzOAogICAgICAgICAiLyogICAgICAg ICAgICAgIgogICAgICAgICAiIHwgYm94MTIzNDU2IHwgIgogICAgICAgICAiICotLS0tLS0tLS0t LSovIikKCiAgICAoMjMzIDMzOAogICAgICAgICAiLyotLS0tLS0tLS0tLSogIgogICAgICAgICAi IHwgYm94MTIzNDU2IHwgIgogICAgICAgICAiICotLS0tLS0tLS0tLSovIikKCiAgICAoMjM0IDQz OAogICAgICAgICAiLyogYm94MTIzNDU2ICovIgogICAgICAgICAiLyotLS0tLS0tLS0tLSovIikK CiAgICAoMjM1IDUzOAogICAgICAgICAiLyotLS0tLS0tLS0tLSovIgogICAgICAgICAiLyogYm94 MTIzNDU2ICovIgogICAgICAgICAiLyotLS0tLS0tLS0tLSovIikKCiAgICAoMjQxIDE0OAogICAg ICAgICAiLyoiCiAgICAgICAgICIgKiBib3gxMjM0NTYiCiAgICAgICAgICIgKi8iKQoKICAgICgy NDIgMjQ4CiAgICAgICAgICIvKiAgICAgICAgICAgKiAiCiAgICAgICAgICIgKiBib3gxMjM0NTYg KiAiCiAgICAgICAgICIgKioqKioqKioqKioqKi8iKQoKICAgICgyNDMgMzQ4CiAgICAgICAgICIv KioqKioqKioqKioqKiAiCiAgICAgICAgICIgKiBib3gxMjM0NTYgKiAiCiAgICAgICAgICIgKioq KioqKioqKioqKi8iKQoKICAgICgyNDQgNDQ4CiAgICAgICAgICIvKiBib3gxMjM0NTYgKi8iCiAg ICAgICAgICIvKioqKioqKioqKioqKi8iKQoKICAgICgyNDUgNTQ4CiAgICAgICAgICIvKioqKioq KioqKioqKi8iCiAgICAgICAgICIvKiBib3gxMjM0NTYgKi8iCiAgICAgICAgICIvKioqKioqKioq KioqKi8iKQoKICAgICkpCgoKKGRlZnZhciByZWJveC1kZWZhdWx0LXN0eWxlIDE1CiAgIipQcmVm ZXJyZWQgc3R5bGUgZm9yIGJveCBjb21tZW50cy4gIFRoZSBidWZmZXIncwpgY29tbWVudC1zdGFy dCcgaXMgdXNlZCB3aXRoIHRoaXMgc3R5bGUgdG8gYXJyaXZlIGF0IHRoZSBib3gKc3R5bGUuIikK KG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdyZWJveC1kZWZhdWx0LXN0eWxlKQoKKGRlZnZh ciByZWJveC1zYXZlLWVudi1hbGlzdCBuaWwKICAiYmFja3VwIHZhbHVlIHNhdmVkIGZvciBoZXJl IGZvciBtb2RlIGRlYWN0aXZhdGlvbiIpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAncmVi b3gtc2F2ZS1lbnYtYWxpc3QpCgooZGVmdmFyIHJlYm94LXNhdmUtZW52LXZhcnMKICAnKGNvbW1l bnQtYXV0by1maWxsLW9ubHktY29tbWVudHMKICAgIGF1dG8tZmlsbC1mdW5jdGlvbgogICAgbm9y bWFsLWF1dG8tZmlsbC1mdW5jdGlvbikKICAibGlzdCBvZiB2YXJpYWJsZXMgb3ZlcndyaXR0ZW4g YnkgYHJlYm94LW1vZGUnIHRvIGJlIHNhdmVkLiIpCgooZGVmdmFyIHJlYm94LWRlZmF1bHQtdW5i b3gtc3R5bGUgMTEKICAiKlByZWZlcnJlZCBzdHlsZSBmb3IgdW5ib3hlZCBjb21tZW50cy4iKQoo bWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3JlYm94LWRlZmF1bHQtdW5ib3gtc3R5bGUpCgoo ZGVmZ3JvdXAgcmVib3ggbmlsCiAgInJlYm94LiIKICA6Z3JvdXAgJ2NvbnZlbmllbmNlKQoKKGRl ZmN1c3RvbSByZWJveC1rZWVwLWJsYW5rLWxpbmVzIHQKICAiTm9uLW5pbCBnaXZlcyByZWJveCBw ZXJtaXNzaW9uIHRvIHRydW5jYXRlIGJsYW5rIGxpbmVzIGF0CmJlZ2lubmluZyBvZiBib3gsIGVu ZCwgYW5kIG1vcmUgdGhhbiB0aHJlZSBjb25zZWN1dGl2ZSBibGFuawpsaW5lcyBpbiB0aGUgYm9k eSBvZiBib3guIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdyZWJveCkKCihkZWZjdXN0b20g cmVib3gtbW9kZS1saW5lLXN0cmluZyAiIHJlYm94IgogICIiCiAgOnR5cGUgJ3N0cmluZwogIDpn cm91cCAncmVib3gpCgooZGVmY3VzdG9tIHJlYm94LW5ld2xpbmUtaW5kZW50LWZ1bmN0aW9uLWRl ZmF1bHQgJ2NvbW1lbnQtaW5kZW50LW5ldy1saW5lCiAgImZ1bmN0aW9uIGNhbGxlZCBieSBgcmVi b3gtaW5kZW50LW5ldy1saW5lJyB3aGVuIGRvZXNuJ3Qgc2VlIGEgYm94LiIKICA6Z3JvdXAgJ3Jl Ym94KQoKKGRlZnZhciByZWJveC1uZXdsaW5lLWluZGVudC1mdW5jdGlvbiBuaWwKICAiY2FjaGVk IGZ1bmN0aW9uIGZvciB0aGlzIGJ1ZmZlci4iKQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwg J3JlYm94LW5ld2xpbmUtaW5kZW50LWZ1bmN0aW9uKQoKKGRlZmN1c3RvbSByZWJveC1raWxsLWxp bmUtZnVuY3Rpb24gJ2tpbGwtbGluZQogICJmdW5jdGlvbiBjYWxsZWQgYnkgYHJlYm94LWtpbGwt bGluZScgd2hlbiBubyBib3ggaXMgZm91bmQuIgogIDp0eXBlICdzeW1ib2wKICA6Z3JvdXAgJ3Jl Ym94KQoKKGRlZmN1c3RvbSByZWJveC1raWxsLXJpbmctc2F2ZS1mdW5jdGlvbiAna2lsbC1yaW5n LXNhdmUKICAiZnVuY3Rpb24gY2FsbGVkIGJ5IGByZWJveC1raWxsLXJpbmctc2F2ZScgd2hlbiBu byBib3ggaXMgZm91bmQuIgogIDp0eXBlICdzeW1ib2wKICA6Z3JvdXAgJ3JlYm94KQoKKGRlZmN1 c3RvbSByZWJveC1iZWdpbm5pbmctb2YtbGluZS1mdW5jdGlvbiAnbW92ZS1iZWdpbm5pbmctb2Yt bGluZQogICJmdW5jdGlvbiBjYWxsZWQgYnkgYHJlYm94LWJlZ2lubmluZy1vZi1saW5lJyB3aGVu IG5vIGJveCBpcyBmb3VuZC4iCiAgOnR5cGUgJ3N5bWJvbAogIDpncm91cCAncmVib3gpCgooZGVm Y3VzdG9tIHJlYm94LWVuZC1vZi1saW5lLWZ1bmN0aW9uICdtb3ZlLWVuZC1vZi1saW5lCiAgImZ1 bmN0aW9uIGNhbGxlZCBieSBgcmVib3gtZW5kLW9mLWxpbmUnIHdoZW4gbm8gYm94IGlzIGZvdW5k LiIKICA6dHlwZSAnc3ltYm9sCiAgOmdyb3VwICdyZWJveCkKCihkZWZjdXN0b20gcmVib3gteWFu ay1mdW5jdGlvbiAneWFuawogICJmdW5jdGlvbiBjYWxsZWQgYnkgYHJlYm94LXlhbmsnIHdoZW4g bm8gYm94IGlzIGZvdW5kLiIKICA6dHlwZSAnc3ltYm9sCiAgOmdyb3VwICdyZWJveCkKCihkZWZj dXN0b20gcmVib3gteWFuay1wb3AtZnVuY3Rpb24gJ3lhbmstcG9wCiAgImZ1bmN0aW9uIGNhbGxl ZCBieSBgcmVib3gteWFuay1wb3AnIHdoZW4gbm8gYm94IGlzIGZvdW5kLiIKICA6dHlwZSAnc3lt Ym9sCiAgOmdyb3VwICdyZWJveCkKCihkZWZjdXN0b20gcmVib3gtbmV3bGluZS1pbmRlbnQtZnVu Y3Rpb24tYWxpc3QKICAnKChjLW1vZGUgICAuIGMtaW5kZW50LW5ldy1jb21tZW50LWxpbmUpCiAg ICAoYysrLW1vZGUgLiBjLWluZGVudC1uZXctY29tbWVudC1saW5lKQogICAgKG9yZy1tb2RlIC4g b3JnLXJldHVybi1pbmRlbnQpKQogICJsaXN0IG9mIChtYWpvci1tb2RlIC4gZnVuY3Rpb24pIGZv ciBtYWtpbmcgYSBuZXdsaW5lLgoKVGhlIGZ1bmN0aW9uIHNob3VsZCBtYWtlIGFuZCBpbmRlbnQg YSBuZXcgY29tbWVudC1saW5lIGZvciB0aGUKbW9kZS4gIGBjb21tZW50LWluZGVudC1uZXdsaW5l JyBpcyB0aGUgZGVmYXVsdC4KIgogIDp0eXBlICcoYWxpc3QgOmtleS10eXBlICdzeW1ib2wKICAg ICAgICAgICAgICAgIDp2YWx1ZS10eXBlICdzeW1ib2wpCiAgOmdyb3VwICdyZWJveCkKCihkZWZj dXN0b20gcmVib3gtaHlicmlkLW1ham9yLW1vZGVzCiAgJyhvcmctbW9kZSkKICAiVGV4dCBiYXNl ZCBtYWpvciBtb2RlcyB0aGF0IGFsc28gaGF2ZSBgY29tbWVudC1zdGFydCcgZGVmaW5lZC4KCklu IHRoZXNlIG1vZGVzLCBhdXRvLWZpbGxpbmcgc2hvdWxkIGJlIG9uIGZvciBhbGwgdGV4dC4gIEFu ZApib3hpbmcgc2hvdWxkIHJlY29nbml6ZSBwYXJhZ3JhcGhzIGFzIHdlbGwgYXMgY29tbWVudCBi bG9ja3MuCiIKICA6dHlwZSAnbGlzdAogIDpncm91cCAncmVib3gpCgo7OzsjIyNhdXRvbG9hZAoo ZGVmaW5lLW1pbm9yLW1vZGUgcmVib3gtbW9kZQogICJUb2dnbGUgcmVib3ggbW9kZSBmb3IgbWFu YWdpbmcgdGV4dCBhbmQgY29tbWVudCBib3hlcy4KCjEuIEF1dG8tZmlsbGluZyBpcyBlbmFibGVk LCBhbmQgY29tbWVudCBib3hlcyBhcmUgYXV0by1maWxsZWQuICBhc2QgZiBhc2QgZgoKCgpXaXRo IG5vIGFyZ3VtZW50LCB0aGlzIGNvbW1hbmQgdG9nZ2xlcyB0aGUgbW9kZS4KICBOb24tbnVsbCBw cmVmaXggYXJndW1lbnQgdHVybnMgb24gdGhlIG1vZGUuCiAgTnVsbCBwcmVmaXggYXJndW1lbnQg dHVybnMgb2ZmIHRoZSBtb2RlLgoKWW91IGRvbid0IG5lZWQgdG8gZW5hYmxlIHRoZSBtaW5vciBt b2RlIHRvIHVzZSByZWJveDIKCiIKICA6aW5pdC12YWx1ZSBuaWwKICA6bGlnaHRlciByZWJveC1t b2RlLWxpbmUtc3RyaW5nCiAgOmtleW1hcCAnKChbKHNoaWZ0IHJldHVybildIC4gcmVib3gtaW5k ZW50LW5ldy1saW5lKQogICAgICAgICAgICAoWyhtZXRhIHEpXSAuIHJlYm94LWR3aW0tZmlsbCkK ICAgICAgICAgICAgKFsobWV0YSBRKV0gLiByZWJveC1kd2ltLW5vLWZpbGwpCiAgICAgICAgICAg IChbKGNvbnRyb2wgYSldIC4gcmVib3gtYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgIChb KGNvbnRyb2wgZSldIC4gcmVib3gtZW5kLW9mLWxpbmUpCiAgICAgICAgICAgIChbKGNvbnRyb2wg ayldIC4gcmVib3gta2lsbC1saW5lKQogICAgICAgICAgICAoWyhtZXRhIHcpXSAuIHJlYm94LWtp bGwtcmluZy1zYXZlKQogICAgICAgICAgICAoWyhjb250cm9sIHkpXSAuIHJlYm94LXlhbmspCiAg ICAgICAgICAgIChbKG1ldGEgeSldIC4gcmVib3gteWFuay1wb3ApCiAgICAgICAgICAgIChbKG1l dGEgYyldIC4gcmVib3gtY2VudGVyKQogICAgICAgICAgICAoIiAiIC4gcmVib3gtc3BhY2UpCiAg ICAgICAgICAgIChbKGJhY2tzcGFjZSldIC4gcmVib3gtYmFja3NwYWNlKQoKICAgICAgICAgICAg KQogIDpncm91cCAncmVib3gKICAoaWYgcmVib3gtbW9kZQogICAgICAocHJvZ24KICAgICAgICAo cmVib3gtc2F2ZS1lbnYpCiAgICAgICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tbWVu dC1hdXRvLWZpbGwtb25seS1jb21tZW50cykKICAgICAgICAgICAgIChpZiAoYW5kIChzdHJpbmdw IGNvbW1lbnQtc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgICAobm90ICh6ZXJvcCAobGVuZ3Ro IGNvbW1lbnQtc3RhcnQpKSkKICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1lbXEgbWFqb3It bW9kZSByZWJveC1oeWJyaWQtbWFqb3ItbW9kZXMpKSkKICAgICAgICAgICAgICAgICB0CiAgICAg ICAgICAgICAgIG5pbCkpCiAgICAgICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnbm9ybWFs LWF1dG8tZmlsbC1mdW5jdGlvbikgJ3JlYm94LWRvLWF1dG8tZmlsbCkKICAgICAgICAoYXV0by1m aWxsLW1vZGUgMSkpCiAgICAocmVib3gtcmVzdG9yZS1lbnYpKSkKCgooZGVmaW5lLWdsb2JhbC1t aW5vci1tb2RlIHJlYm94LWdsb2JhbC1tb2RlIHJlYm94LW1vZGUKICAgIHJlYm94LW1vZGUKICA6 Z3JvdXAgJ3JlYm94KQoKOzsgZnVuY3Rpb25zIHBhc3NlZCB0byByZWJveC1lbmdpbmUgaW5zcGVj dCB0aGVzZSB2YXJpYWJsZXMKKGV2YWwtd2hlbi1jb21waWxlCiAgKGRlZnZhciBwcmV2aW91cy1u bikKICAoZGVmdmFyIHByZXZpb3VzLW5lKQogIChkZWZ2YXIgcHJldmlvdXMtc3cpCiAgKGRlZnZh ciBwcmV2aW91cy1zcykKICAoZGVmdmFyIHByZXZpb3VzLXNlKQogIChkZWZ2YXIgcHJldmlvdXMt bWFyZ2luKQogIChkZWZ2YXIgcHJldmlvdXMtZWUpCiAgKGRlZnZhciBwcmV2aW91cy1udykKICAo ZGVmdmFyIHVuaW5kZW50LWNvdW50KQogIChkZWZ2YXIgb3JpZy1tKQogIChkZWZ2YXIgb3JpZy1j b2wpCiAgKGRlZnZhciBtYXgtbikKICAoZGVmdmFyIG1hcmtlZC1wb2ludCkKICAoZGVmdmFyIHd3 KQopCgoocHV0ICdyZWJveC1lcnJvcgogICAgICdlcnJvci1jb25kaXRpb25zCiAgICAgJyhlcnJv ciByZWJveC1lcnJvcikpCgoocHV0ICdyZWJveC1jb21tZW50LW5vdC1mb3VuZC1lcnJvcgogICAg ICdlcnJvci1jb25kaXRpb25zCiAgICAgJyhlcnJvciByZWJveC1lcnJvciByZWJveC1jb21tZW50 LW5vdC1mb3VuZC1lcnJvcikpCgoocHV0ICdyZWJveC1jb21tZW50LW5vdC1mb3VuZC1lcnJvcgog ICAgICdlcnJvci1tZXNzYWdlCiAgICAgIkNvbW1lbnQgbm90IGZvdW5kIikKCihwdXQgJ3JlYm94 LW1pZC1saW5lLWNvbW1lbnQtZm91bmQKICAgICAnZXJyb3ItY29uZGl0aW9ucwogICAgICcoZXJy b3IgcmVib3gtZXJyb3IgcmVib3gtbWlkLWxpbmUtY29tbWVudC1mb3VuZCkpCgoocHV0ICdyZWJv eC1taWQtbGluZS1jb21tZW50LWZvdW5kCiAgICAgJ2Vycm9yLW1lc3NhZ2UKICAgICAiQ29tbWVu dCBzdGFydGVkIG1pZC1saW5lLiIpCgo7OyB3ZSBkb24ndCB1c2Ugc3ludGF4IHRhYmxlIGZvciB3 aGl0ZXNwYWNlIGRlZmluaXRpb24gaGVyZSBiZWNhdXNlIHdlIGRvbid0Cjs7IHRydXN0IG1ham9y LW1vZGVzIHRvIGRlZmluZSB0aGVtIHByb3Blcmx5LgooZGVmY29uc3QgcmVib3gtYmxhbmstbGlu ZS1yZWdleHAgIl5bIFx0XSokIikKCgwKOzsgVGVtcGxhdGUgbnVtYmVyaW5nIGRlcGVuZGVudCBj b2RlLgoKKGRlZnZhciByZWJveC1sYW5ndWFnZS1jaGFyYWN0ZXItYWxpc3QKICAnKCgzIC4gIi8i KSAoNCAuICIjIikgKDUgLiAiOyIpICg2IC4gIiUiKSkKICAiQWxpc3QgcmVsYXRpbmcgbGFuZ3Vh Z2UgdG8gY29tbWVudCBjaGFyYWN0ZXIsIGZvciBnZW5lcmljIGxhbmd1YWdlcy4iKQoKOzs7IFJl Z2V4cCB0byBtYXRjaCB0aGUgY29tbWVudCBzdGFydCwgZ2l2ZW4gYSBMQU5HVUFHRSB2YWx1ZSBh cyBpbmRleC4KCihkZWZ2YXIgcmVib3gtcmVnZXhwLXN0YXJ0CiAgWyJeWyBcdF0qXFwoL1xcKlxc fC8vK1xcfCMrXFx8OytcXHwlK1xcKSIKICAgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsgMQogICAiXlsgXHRdKi9cXCoiICAgICAgICAgICAgICAgICAgICAgICAgOyAyCiAg ICJeWyBcdF0qLy8rIiAgICAgICAgICAgICAgICAgICAgICAgICA7IDMKICAgIl5bIFx0XSojKyIg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgNAogICAiXlsgXHRdKlw7KyIgICAgICAgICAgICAg ICAgICAgICAgICAgOyA1CiAgICJeWyBcdF0qJSsiICAgICAgICAgICAgICAgICAgICAgICAgICA7 IDYKICAgXSkKCjs7OyBSZXF1ZXN0IHRoZSBzdHlsZSBpbnRlcmFjdGl2ZWx5LCB1c2luZyB0aGUg bWluaWJ1ZmZlci4KCihkZWZ1biByZWJveC1hc2stZm9yLXN0eWxlICgpCiAgKGxldCAoa2V5IGxh bmd1YWdlIHF1YWxpdHkgdHlwZSkKICAgICh3aGlsZSAobm90IGxhbmd1YWdlKQogICAgICAobWVz c2FnZSAiXApCb3ggbGFuZ3VhZ2UgaXMgMTAwLW5vbmUsIDIwMC0vKiwgMzAwLS8vLCA0MDAtIywg NTAwLTssIDYwMC0lJSIpCiAgICAgIChzZXRxIGtleSAocmVhZC1jaGFyKSkKICAgICAgKHdoZW4g KGFuZCAoPj0ga2V5ID8wKSAoPD0ga2V5ID82KSkKICAgICAgICAoc2V0cSBsYW5ndWFnZSAoLSBr ZXkgPzApKSkpCiAgICAod2hpbGUgKG5vdCBxdWFsaXR5KQogICAgICAobWVzc2FnZSAiXApCb3gg cXVhbGl0eS93aWR0aCBpcyAxMC1zaW1wbGUvMSwgMjAtcm91bmRlZC8yLCAzMC1zdGFycmVkLzMg b3IgNDAtc3RhcnJlZC80IikKICAgICAgKHNldHEga2V5IChyZWFkLWNoYXIpKQogICAgICAod2hl biAoYW5kICg+PSBrZXkgPzApICg8PSBrZXkgPzQpKQogICAgICAgIChzZXRxIHF1YWxpdHkgKC0g a2V5ID8wKSkpKQogICAgKHdoaWxlIChub3QgdHlwZSkKICAgICAgKG1lc3NhZ2UgIlwKQm94IHR5 cGUgaXMgMS1vcGVuZWQsIDItaGFsZi1zaW5nbGUsIDMtc2luZ2xlLCA0LWhhbGYtZG91YmxlIG9y IDUtZG91YmxlIikKICAgICAgKHNldHEga2V5IChyZWFkLWNoYXIpKQogICAgICAod2hlbiAoYW5k ICg+PSBrZXkgPzApICg8PSBrZXkgPzUpKQogICAgICAgIChzZXRxIHR5cGUgKC0ga2V5ID8wKSkp KQogICAgKCsgKCogMTAwIGxhbmd1YWdlKSAoKiAxMCBxdWFsaXR5KSB0eXBlKSkpCgwKOzsgVGVt cGxhdGUgaW5nZXN0aW9uLgoKOzs7IEluZm9ybWF0aW9uIGFib3V0IHJlZ2lzdGVyZWQgdGVtcGxh dGVzLgooZGVmdmFyIHJlYm94LXN0eWxlLWRhdGEgbmlsKQoKOzs7IFJlZ2lzdGVyIGFsbCBib3gg dGVtcGxhdGVzLgoKKGRlZnVuIHJlYm94LXJlZ2lzdGVyLWFsbC10ZW1wbGF0ZXMgKCkKICAoc2V0 cSByZWJveC1zdHlsZS1kYXRhIG5pbCkKICAobGV0ICgodGVtcGxhdGVzIHJlYm94LXRlbXBsYXRl cykpCiAgICAod2hpbGUgdGVtcGxhdGVzCiAgICAgIChsZXQgKCh0ZW1wbGF0ZSAoY2FyIHRlbXBs YXRlcykpKQogICAgICAgIChyZWJveC1yZWdpc3Rlci10ZW1wbGF0ZSAoY2FyIHRlbXBsYXRlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FkciB0ZW1wbGF0ZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNkZHIgdGVtcGxhdGUpKSkKICAgICAgKHNldHEgdGVt cGxhdGVzIChjZHIgdGVtcGxhdGVzKSkpKSkKCjs7OyBSZWdpc3RlciBhIHNpbmdsZSBib3ggdGVt cGxhdGUuCgooZGVmdW4gcmVib3gtcmVnaXN0ZXItdGVtcGxhdGUgKHN0eWxlIHdlaWdodCBsaW5l cykKICAiRGlnZXN0IGFuZCByZWdpc3RlciBhIHNpbmdsZSB0ZW1wbGF0ZS4KVGhlIHRlbXBsYXRl IGlzIG51bWJlcmVkIFNUWUxFLCBhbmQgaXMgZGVzY3JpYmVkIGJ5IG9uZSB0byB0aHJlZSBMSU5F Uy4KCklmIFNUWUxFIGlzIGJlbG93IDEwMCwgaXQgaXMgZ2VuZXJpYyBmb3IgYSBmZXcgcHJvZ3Jh bW1pbmcgbGFuZ3VhZ2VzIGFuZAp3aXRoaW4gbGluZXMsIGA/JyBpcyBtZWFudCB0byByZXByZXNl bnQgdGhlIGxhbmd1YWdlIGNvbW1lbnQgY2hhcmFjdGVyLgpTVFlMRSBzaG91bGQgYmUgdXNlZCBv bmx5IG9uY2UgdGhyb3VnaCBhbGwgYHJlYm94LXJlZ2lzdGVyLXRlbXBsYXRlJyBjYWxscy4KCk9u ZSBvZiB0aGUgbGluZXMgc2hvdWxkIGNvbnRhaW4gdGhlIHN1YnN0cmluZyBgYm94JyB0byByZXBy ZXNlbnQgdGhlIGNvbW1lbnQKdG8gYmUgYm94ZWQsIGFuZCBpZiB0aHJlZSBsaW5lcyBhcmUgZ2l2 ZW4sIGBib3gnIHNob3VsZCBhcHBlYXIgaW4gdGhlIG1pZGRsZQpvbmUuICBMaW5lcyBjb250YWlu aW5nIG9ubHkgc3BhY2VzIGFyZSBpbXBsaWVkIGFzIG5lY2Vzc2FyeSBiZWZvcmUgYW5kIGFmdGVy CnRoZSB0aGUgYGJveCcgbGluZSwgc28gd2UgaGF2ZSB0aHJlZSBsaW5lcy4KCk5vcm1hbGx5LCBh bGwgdGhyZWUgdGVtcGxhdGUgbGluZXMgc2hvdWxkIGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4gIElm IHRoZSBmaXJzdApsaW5lIGlzIHNob3J0ZXIsIGl0IHJlcHJlc2VudHMgYSBzdGFydCBjb21tZW50 IHN0cmluZyB0byBiZSBidW5kbGVkIHdpdGhpbiB0aGUKZmlyc3QgbGluZSBvZiB0aGUgY29tbWVu dCB0ZXh0LiAgSWYgdGhlIHRoaXJkIGxpbmUgaXMgc2hvcnRlciwgaXQgcmVwcmVzZW50cwphbiBl bmQgY29tbWVudCBzdHJpbmcgdG8gYmUgYnVuZGxlZCBhdCB0aGUgZW5kIG9mIHRoZSBjb21tZW50 IHRleHQsIGFuZApyZWZpbGxlZCB3aXRoIGl0LiIKCiAgKGNvbmQgKCg8IHN0eWxlIDEwMCkKICAg ICAgICAgKGxldCAoKHBhaXJzIHJlYm94LWxhbmd1YWdlLWNoYXJhY3Rlci1hbGlzdCkKICAgICAg ICAgICAgICAgbGFuZ3VhZ2UgY2hhcmFjdGVyKQogICAgICAgICAgICh3aGlsZSBwYWlycwogICAg ICAgICAgICAgKHNldHEgbGFuZ3VhZ2UgKGNhYXIgcGFpcnMpCiAgICAgICAgICAgICAgICAgICBj aGFyYWN0ZXIgKGNkYXIgcGFpcnMpCiAgICAgICAgICAgICAgICAgICBwYWlycyAoY2RyIHBhaXJz KSkKICAgICAgICAgICAgIChyZWJveC1yZWdpc3Rlci10ZW1wbGF0ZQogICAgICAgICAgICAgICgr ICgqIDEwMCBsYW5ndWFnZSkgc3R5bGUpCiAgICAgICAgICAgICAgd2VpZ2h0CiAgICAgICAgICAg ICAgKG1hcGNhciAobGFtYmRhIChsaW5lKQogICAgICAgICAgICAgICAgICAgICAgICAod2hpbGUg KHN0cmluZy1tYXRjaCAiXD8iIGxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEg bGluZSAocmVwbGFjZS1tYXRjaCBjaGFyYWN0ZXIgdCB0IGxpbmUpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgbGluZSkKICAgICAgICAgICAgICAgICAgICAgIGxpbmVzKSkpKSkKICAgICAgICAo KGFzc3Egc3R5bGUgcmVib3gtc3R5bGUtZGF0YSkKICAgICAgICAgKGVycm9yICJTdHlsZSAlZCBk ZWZpbmVkIG1vcmUgdGhhbiBvbmNlIiBzdHlsZSkpCiAgICAgICAgKHQKICAgICAgICAgKGxldCAo bGluZTEgbGluZTIgbGluZTMgcmVnZXhwMSByZWdleHAyIHJlZ2V4cDMKICAgICAgICAgICAgICAg ICAgICAgbWVyZ2UtbncgbWVyZ2Utc2Ugbncgbm4gbmUgd3cgZWUgc3cgc3Mgc2UpCiAgICAgICAg ICAgKGlmIChzdHJpbmctbWF0Y2ggImJveDEyMzQ1NiIgKGNhciBsaW5lcykpCiAgICAgICAgICAg ICAgIChzZXRxIGxpbmUxIG5pbAogICAgICAgICAgICAgICAgICAgICBsaW5lMiAoY2FyIGxpbmVz KQogICAgICAgICAgICAgICAgICAgICBsaW5lcyAoY2RyIGxpbmVzKSkKICAgICAgICAgICAgIChz ZXRxIGxpbmUxIChjYXIgbGluZXMpCiAgICAgICAgICAgICAgICAgICBsaW5lMiAoY2FkciBsaW5l cykKICAgICAgICAgICAgICAgICAgIGxpbmVzIChjZGRyIGxpbmVzKSkKICAgICAgICAgICAgICh1 bmxlc3MgKHN0cmluZy1tYXRjaCAiYm94MTIzNDU2IiBsaW5lMikKICAgICAgICAgICAgICAgKGVy cm9yICJFcnJvbmVvdXMgdGVtcGxhdGUgZm9yICVkIHN0eWxlIiBzdHlsZSkpKQogICAgICAgICAg IChzZXRxIGxpbmUzIChhbmQgbGluZXMgKGNhciBsaW5lcykpKQogICAgICAgICAgIChzZXRxIG1l cmdlLW53IChhbmQgbGluZTEgKDwgKGxlbmd0aCBsaW5lMSkgKGxlbmd0aCBsaW5lMikpKQogICAg ICAgICAgICAgICAgIG1lcmdlLXNlIChhbmQgbGluZTMgKDwgKGxlbmd0aCBsaW5lMykgKGxlbmd0 aCBsaW5lMikpKQogICAgICAgICAgICAgICAgIG53ICAgICAgIChjb25kICgobm90IGxpbmUxKSBu aWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lcmdlLW53IGxpbmUxKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoemVyb3AgKG1hdGNoLWJlZ2lubmluZyAwKSkg bmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChzdWJzdHJpbmcgbGluZTEg MCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCiAgICAgICAgICAgICAgICAgbm4gICAgICAgKGNvbmQg KChub3QgbGluZTEpIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVyZ2Ut bncgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChsZXQgKCh4IChhcmVm IGxpbmUxIChtYXRjaC1iZWdpbm5pbmcgMCkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoPSB4ID8gKSBuaWwgeCkpKSkKICAgICAgICAgICAgICAgICBuZSAgICAg ICAoY29uZCAoKG5vdCBsaW5lMSkgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtZXJnZS1udyBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCg9IChtYXRj aC1lbmQgMCkgKGxlbmd0aCBsaW5lMSkpIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodCAocmVib3gtcnN0cmlwIChzdWJzdHJpbmcgbGluZTEgKG1hdGNoLWVuZCAwKSkpKSkK ICAgICAgICAgICAgICAgICB3dyAgICAgICAoY29uZCAoKHplcm9wIChtYXRjaC1iZWdpbm5pbmcg MCkpIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCAoc3Vic3RyaW5nIGxp bmUyIDAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQogICAgICAgICAgICAgICAgIGVlICAgICAgIChj b25kICgoPSAobWF0Y2gtZW5kIDApIChsZW5ndGggbGluZTIpKSBuaWwpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHQgKHJlYm94LXJzdHJpcCAoc3Vic3RyaW5nIGxpbmUyIChtYXRj aC1lbmQgMCkpKSkpCiAgICAgICAgICAgICAgICAgc3cgICAgICAgKGNvbmQgKChub3QgbGluZTMp IG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVyZ2Utc2UgbmlsKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoemVyb3AgKG1hdGNoLWJlZ2lubmluZyAwKSkg bmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChzdWJzdHJpbmcgbGluZTMg MCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCiAgICAgICAgICAgICAgICAgc3MgICAgICAgKGNvbmQg KChub3QgbGluZTMpIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVyZ2Ut c2UgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChsZXQgKCh4IChhcmVm IGxpbmUzIChtYXRjaC1iZWdpbm5pbmcgMCkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoPSB4ID8gKSBuaWwgeCkpKSkKICAgICAgICAgICAgICAgICBzZSAgICAg ICAoY29uZCAoKG5vdCBsaW5lMykgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtZXJnZS1zZSAocmVib3gtcnN0cmlwIGxpbmUzKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKD0gKG1hdGNoLWVuZCAwKSAobGVuZ3RoIGxpbmUzKSkgbmlsKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0IChyZWJveC1yc3RyaXAgKHN1YnN0cmluZyBsaW5lMyAo bWF0Y2gtZW5kIDApKSkpKSkKICAgICAgICAgICAoc2V0cSByZWdleHAxIChjb25kCiAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1lcmdlLW53CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25jYXQgIl5bIFx0XSoiIChyZWJveC1yZWdleHAtcXVvdGUgbncgOnJzdHJpcCBuaWwpICJbIFx0 XSpcbiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kIG53IChub3Qgbm4pIChub3Qg bmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJeWyBcdF0qIiAocmVib3gt cmVnZXhwLXF1b3RlIG53IDpyc3RyaXAgbmlsKSAiXG4iKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAoKG9yIG53IG5uIG5lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJe WyBcdF0qIiAocmVib3gtcmVnZXhwLXF1b3RlIG53IDpyc3RyaXAgbmlsKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChyZWJveC1yZWdleHAtcnVsZXIgbm4pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlYm94LXJlZ2V4cC1xdW90ZSBuZSA6bHN0cmlwIG5p bCkgIlxuIikpKQogICAgICAgICAgICAgICAgIHJlZ2V4cDIgKGFuZCAobm90IChzdHJpbmctZXF1 YWwgKHJlYm94LXJzdHJpcCAoY29uY2F0IHd3IGVlKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbmNhdCAiXlsgXHRdKiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocmVib3gtcmVnZXhwLXF1b3RlIHd3IDpyc3RyaXAgbmlsKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIuKiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocmVib3gtcmVnZXhwLXF1b3RlIGVlIDpsc3RyaXAgbmlsKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJcbiIpKQogICAgICAgICAgICAgICAgIHJlZ2V4cDMgKGNv bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAobWVyZ2Utc2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbmNhdCAiXi4qIiAocmVib3gtcmVnZXhwLXF1b3RlIHNlIDpsc3RyaXAgbmls KSAiXG4iKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFuZCBzdyAobm90IHNzKSAobm90 IHNlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXlsgXHRdKiIgKHJlYm94 LXJlZ2V4cC1xdW90ZSBzdyA6cnN0cmlwIG5pbCkgIlxuIikpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKChvciBzdyBzcyBzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAi XlsgXHRdKiIgKHJlYm94LXJlZ2V4cC1xdW90ZSBzdyA6cnN0cmlwIG5pbCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocmVib3gtcmVnZXhwLXJ1bGVyIHNzKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChyZWJveC1yZWdleHAtcXVvdGUgc2UgOmxzdHJpcCBu aWwpICJcbiIpKSkpCiAgICAgICAgICAgKHNldHEgcmVib3gtc3R5bGUtZGF0YQogICAgICAgICAg ICAgICAgIChjb25zIChjb25zIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZl Y3RvciB3ZWlnaHQgcmVnZXhwMSByZWdleHAyIHJlZ2V4cDMKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1lcmdlLW53IG1lcmdlLXNlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBudyBubiBuZSB3dyBlZSBzdyBzcyBzZSkpCiAgICAgICAgICAgICAgICAg ICAgICAgcmVib3gtc3R5bGUtZGF0YSkpKSkpKQoKKGRlZnVuKiByZWJveC1nZXQtc3R5bGUtZnJv bS1wcmVmaXgtYXJnIChhcmcgJmtleSAoYXNrIHQpICh1c2UtZGVmYXVsdCB0KSkKICAiYW5hbHl6 ZSBgYXJnJyB0byBnZXQgc3R5bGUiCiAgKGNvbmQgKChudW1iZXJwIGFyZykKICAgICAgICAgKGlm ICg+IGFyZyAwKQogICAgICAgICAgICAgKHJlYm94LWdldC1zdHlsZS1mb3ItbWFqb3ItbW9kZSBh cmcpCiAgICAgICAgICAgKHJlYm94LWdldC1zdHlsZS1mb3ItbWFqb3ItbW9kZSAoLSBhcmcpKSkp CiAgICAgICAgKChlcSAnLSBhcmcpCiAgICAgICAgIChpZiBhc2sKICAgICAgICAgICAgIChyZWJv eC1hc2stZm9yLXN0eWxlKQogICAgICAgICAgIChyZWJveC1nZXQtc3R5bGUtZm9yLW1ham9yLW1v ZGUgcmVib3gtZGVmYXVsdC11bmJveC1zdHlsZSkpKQogICAgICAgICh0CiAgICAgICAgICh3aGVu IHVzZS1kZWZhdWx0CiAgICAgICAgICAgKHJlYm94LWdldC1zdHlsZS1mb3ItbWFqb3ItbW9kZSBy ZWJveC1kZWZhdWx0LXN0eWxlKSkpKSkKCihkZWZ1biByZWJveC1nZXQtcmVmaWxsLWZyb20tcHJl Zml4LWFyZyAoYXJnKQogICJhbmFseXplIGBhcmcnIHRvIHJlZmlsbAoKcmV0dXJucyB0IGZvciBy ZWZpbCBuaWwgZm9yIG5vdC4KIgogIChpZiAoYW5kIGFyZwogICAgICAgICAgIChsaXN0cCBhcmcp KQogICAgICBuaWwKICAgIHQpKQoKKGRlZnVuIHJlYm94LWdldC1zdHlsZS1mb3ItbWFqb3ItbW9k ZSAoc3R5bGUpCiAgKGNvbmQgKChhbmQgKG51bWJlcnAgc3R5bGUpCiAgICAgICAgICAgICAgKDwg c3R5bGUgMTAwKQogICAgICAgICAgICAgICg+IHN0eWxlIDApKQogICAgICAgICAoKyAoKiAxMDAg KHJlYm94LWd1ZXNzLWxhbmd1YWdlIGNvbW1lbnQtc3RhcnQpKQogICAgICAgICAgICBzdHlsZSkp CiAgICAgICAgKChudW1iZXJwIHN0eWxlKQogICAgICAgICBzdHlsZSkKICAgICAgICAodAogICAg ICAgICAoZXJyb3IgInVua25vd24gc3R5bGU6ICVzIiBzdHlsZSkpKSkKCihkZWZ1biByZWJveC1t YWtlLWZpbGwtcHJlZml4ICgpCiAgImdlbmVyYXRlIGZpbGwgcHJlZml4IHVzaW5nIGFkYXB0aXZl IGZpbGxpbmcgbWV0aG9kcyIKICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgKGlmIChmZWF0dXJlcCAn ZmlsbGFkYXB0KQogICAgICAoZmlsbGFkYXB0LW1ha2UtZmlsbC1wcmVmaXgKICAgICAgIChmaWxs YWRhcHQtcGFyc2UtcHJlZml4ZXMpKQogICAgKGZpbGwtY29udGV4dC1wcmVmaXgKICAgICAocG9p bnQtYXQtYm9sKQogICAgIChwb2ludC1hdC1lb2wpKSkpCgoMCjs7IFVzZXIgaW50ZXJhY3Rpb24u Cgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gcmVib3gtYmVnaW5uaW5nLW9mLWxpbmUgKGFyZykKICAi SWYgcG9pbnQgaXMgaW4gYSBib3gsIGdvIHRvIGJlZ2lubmluZyBvZiB0ZXh0IG9uIGZpcnN0IGlu dm9jYXRpb24uCk9uIHNlY29uZCBpbnZvY2F0aW9uLCBnbyB0byBiZWdpbm5pbmcgb2YgcGh5c2lj YWwgbGluZS4gIFN1YnNlcXVlbnQgaW52b2NhdGlvbiBzd2l0Y2hlcyBiZXR3ZWVuIHRoZSB0d28u CgpJZiBwb2ludCBpcyBub3QgaW4gYSBib3gsIGNhbGwgYHJlYm94LWJlZ2lubmluZy1vZi1saW5l LWZ1bmN0aW9uJyIKCiAgKGludGVyYWN0aXZlICJQIikgKGxldCAoKG9yaWctbSAocG9pbnQtbWFy a2VyKSkKICAgICAgICBwcmV2aW91cy1zdHlsZQogICAgICAgIGJveGVkLWxpbmUtc3RhcnQtY29s KQogICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAgKGNvbmRpdGlvbi1jYXNlIGVycgogICAgICAg ICAgKHByb2duCiAgICAgICAgICAgIChyZWJveC1maW5kLWFuZC1uYXJyb3cgOmNvbW1lbnQtb25s eSBjb21tZW50LWF1dG8tZmlsbC1vbmx5LWNvbW1lbnRzKQogICAgICAgICAgICAoc2V0cSBwcmV2 aW91cy1zdHlsZSAocmVib3gtZ3Vlc3Mtc3R5bGUpKQogICAgICAgICAgICAoaWYgKGVxIHByZXZp b3VzLXN0eWxlIDExMSkKICAgICAgICAgICAgICAgIChzaWduYWwgJ3JlYm94LWVycm9yICJzdHls ZSBpcyAxMTEiKQogICAgICAgICAgICAgIChyZWJveC1lbmdpbmUgOnN0eWxlIHByZXZpb3VzLXN0 eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFya2VkLXBvaW50IG9yaWctbQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnF1aWV0IHQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDpyZWZpbGwgbmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bW92ZS1wb2ludCBu aWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwcmV2aW91cy1zdHlsZSBwcmV2aW91cy1z dHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOmluc3AtZnVuYwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Z290by1jaGFyIG1hcmtlZC1wb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlm IDs7IHRvcCBvciBib3R0b20gYm9yZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAob3IgKGFuZCAob3IgcHJldmlvdXMtbncgcHJldmlvdXMtbm4gcHJldmlvdXMtbmUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGxpbmUtbnVtYmVyLWF0 LXBvcykgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAob3Ig cHJldmlvdXMtc3cgcHJldmlvdXMtc3MgcHJldmlvdXMtc2UpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGxpbmUtbnVtYmVyLWF0LXBvcykgKDEtIChsaW5l LW51bWJlci1hdC1wb3MgKHBvaW50LW1heCkpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNldHEgYm94ZWQtbGluZS1zdGFydC1jb2wgcHJldmlvdXMtbWFyZ2luKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lvbiAoKyAocG9pbnQtYXQtYm9s KSB1bmluZGVudC1jb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwb2ludC1hdC1lb2wpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGJlZ2lubmluZy1vZi1saW5lIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBib3hlZC1saW5lLXN0YXJ0LWNvbAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIChsb29raW5nLWF0LXAgKGNvbmNhdCAiWyBcdF0qIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYW5kIHByZXZpb3VzLWVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2V4cC1xdW90ZSBwcmV2aW91cy1l ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIkIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5pbmRlbnQtY291bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCsgKGxlbmd0aCAocmVib3gtbWFrZS1maWxsLXByZWZpeCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW5kZW50LWNvdW50KSkpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93ICdyZWJveC1lbmdpbmUtZG9uZSB0KSkpCgkg ICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgICAgICAoaWYgKG9yIChib2xwKQogICAg ICAgICAgICAgICAgICAgICAgKD4gKGN1cnJlbnQtY29sdW1uKSBib3hlZC1saW5lLXN0YXJ0LWNv bCkpCiAgICAgICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiBib3hlZC1saW5lLXN0YXJ0LWNv bCkKICAgICAgICAgICAgICAgIChtb3ZlLWJlZ2lubmluZy1vZi1saW5lIDEpKSkpCiAgICAgICAg KCdyZWJveC1lcnJvcgogICAgICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgKGNhbGwt aW50ZXJhY3RpdmVseSByZWJveC1iZWdpbm5pbmctb2YtbGluZS1mdW5jdGlvbikpCiAgICAgICAg KCdlcnJvcgogICAgICAgICAoc2lnbmFsIChjYXIgZXJyKSAoY2RyIGVycikpKSkpKSkKCjs7OyMj I2F1dG9sb2FkCihkZWZ1biByZWJveC1lbmQtb2YtbGluZSAoYXJnKQogICJJZiBwb2ludCBpcyBp biBhIGJveCwgZ28gdG8gZW5kIG9mIHRleHQgb24gZmlyc3QgaW52b2NhdGlvbi4KT24gc2Vjb25k IGludm9jYXRpb24sIGdvIHRvIGVuZCBvZiBwaHlzaWNhbCBsaW5lLiAgU3Vic2VxdWVudCBpbnZv Y2F0aW9uIHN3aXRjaGVzIGJldHdlZW4gdGhlIHR3by4KCklmIHBvaW50IGlzIG5vdCBpbiBhIGJv eCwgY2FsbCBgcmVib3gtYmVnaW5uaW5nLW9mLWxpbmUtZnVuY3Rpb24nIgogIChpbnRlcmFjdGl2 ZSAiUCIpCiAgKGxldCAoKG9yaWctbSAocG9pbnQtbWFya2VyKSkKICAgICAgICBwcmV2aW91cy1z dHlsZQogICAgICAgIGJveGVkLWxpbmUtZW5kLWNvbCkKICAgIChzYXZlLXJlc3RyaWN0aW9uCiAg ICAgIChjb25kaXRpb24tY2FzZSBlcnIKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAocmVi b3gtZmluZC1hbmQtbmFycm93IDpjb21tZW50LW9ubHkgY29tbWVudC1hdXRvLWZpbGwtb25seS1j b21tZW50cykKICAgICAgICAgICAgKHNldHEgcHJldmlvdXMtc3R5bGUgKHJlYm94LWd1ZXNzLXN0 eWxlKSkKICAgICAgICAgICAgKGlmIChlcSBwcmV2aW91cy1zdHlsZSAxMTEpCiAgICAgICAgICAg ICAgICAoc2lnbmFsICdyZWJveC1lcnJvciAic3R5bGUgaXMgMTExIikKICAgICAgICAgICAgICAo cmVib3gtZW5naW5lIDpzdHlsZSBwcmV2aW91cy1zdHlsZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgOnF1aWV0IHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyZWZpbGwgbmlsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6bW92ZS1wb2ludCBuaWwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpwcmV2aW91cy1zdHlsZSBwcmV2aW91cy1zdHlsZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmluc3AtZnVuYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxh bWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9yaWctbSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgOzsgdG9wIG9yIGJvdHRvbSBib3JkZXIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoYW5kIChvciBwcmV2aW91cy1udyBwcmV2 aW91cy1ubiBwcmV2aW91cy1uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlcSAobGluZS1udW1iZXItYXQtcG9zKSAxKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYW5kIChvciBwcmV2aW91cy1zdyBwcmV2aW91cy1zcyBwcmV2aW91 cy1zZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAobGlu ZS1udW1iZXItYXQtcG9zKSAoMS0gKGxpbmUtbnVtYmVyLWF0LXBvcyAocG9pbnQtbWF4KSkpKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBib3hlZC1saW5lLWVuZC1j b2wgKHBvaW50LWF0LWVvbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEg Ym94ZWQtbGluZS1lbmQtY29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIHByZXZpb3VzLWVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFy Y2gtZm9yd2FyZC1yZWdleHAgKGNvbmNhdCAiWyBcdF0qIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVi b3gtcmVnZXhwLXF1b3RlIHByZXZpb3VzLWVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJCIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocG9pbnQtYXQtZW9sKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZC1yZWdleHAgIlsgXHRd KiQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludC1hdC1lb2wpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgYmxhbmsgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh3aGVuICg8PSBib3hlZC1saW5lLWVuZC1jb2wgdW5pbmRlbnQtY291bnQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBib3hlZC1saW5lLWVuZC1jb2wgKHBy b2duIChnb3RvLWNoYXIgKHBvaW50LWF0LWVvbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikp KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAncmVib3gtZW5naW5lLWRv bmUgdCkpKQogICAgICAgICAgICAgIChnb3RvLWNoYXIgb3JpZy1tKQogICAgICAgICAgICAgIChp ZiAob3IgKGVvbHApCiAgICAgICAgICAgICAgICAgICAgICAoPCAoY3VycmVudC1jb2x1bW4pIGJv eGVkLWxpbmUtZW5kLWNvbCkpCiAgICAgICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiBib3hl ZC1saW5lLWVuZC1jb2wpCiAgICAgICAgICAgICAgICAobW92ZS1lbmQtb2YtbGluZSAxKSkpKQog ICAgICAgICgncmVib3gtZXJyb3IKICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAg IChjYWxsLWludGVyYWN0aXZlbHkgcmVib3gtZW5kLW9mLWxpbmUtZnVuY3Rpb24pKQogICAgICAg ICgnZXJyb3IKICAgICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNkciBlcnIpKSkpKSkpCgo7Ozsj IyNhdXRvbG9hZAooZGVmdW4gcmVib3gta2lsbC1saW5lIChhcmcpCiAgIklmIHBvaW50IGlzIGlu IGEgYm94LCB1bmJveCBmaXJzdCwgYW5kIHRoZW4gcnVuCmByZWJveC1raWxsLWxpbmUtZnVuY3Rp b24nIGFzIHJlcXVlc3RlZCwgdW5sZXNzIHJlZ2lvbiBpcwpzZWxlY3RlZCwgaW4gd2hpY2ggY2Fz ZSwgdGhlIHJlZ2lvbiBpcyBraWxsZWQuCgpJZiBwb2ludCBpcyBub3QgaW4gYSBib3gsIGNhbGwg YHJlYm94LWtpbGwtbGluZS1mdW5jdGlvbicuCgpXaXRoIHVuaXZlcnNhbCBBUkcsIGFsd2F5cyBj YWxsIGByZWJveC1raWxsLWxpbmUtZnVuY3Rpb24nLgoiCiAgKGludGVyYWN0aXZlICJQKiIpCiAg KHJlYm94LWtpbGwteWFuay13cmFwcGVyIChsYW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y29uZGl0aW9uLWNhc2UgZXJyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9n bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAodXNlLXJlZ2lvbi1wKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2lsbC1yZWdpb24gKHJlZ2lvbi1iZWdpbm5p bmcpIChyZWdpb24tZW5kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh1bmxlc3MgKGJvbHApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaW5zZXJ0ICJcbiIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgcmVib3gta2lsbC1saW5lLWZ1bmN0aW9uKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2VuZC1vZi1idWZmZXIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiZW5kIG9mIGJveCByZWFjaGVkLCBhYm9ydGlu ZyAlcy4iIHRoaXMtY29tbWFuZCkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVib3gt a2lsbC1saW5lLWZ1bmN0aW9uKSkKCihkZWZ1biByZWJveC15YW5rIChhcmcpCiAgIklmIHBvaW50 IGlzIGluIGEgYm94LCB1bmJveCBmaXJzdCwgYW5kIHRoZW4gcnVuIGByZWJveC15YW5rLWZ1bmN0 aW9uJyBhcyByZXF1ZXN0ZWQuCgpJZiBwb2ludCBpcyBub3QgaW4gYSBib3gsIGNhbGwgYHJlYm94 LXlhbmstZnVuY3Rpb24nLgoKV2l0aCB1bml2ZXJzYWwgQVJHLCBhbHdheXMgY2FsbCBgcmVib3gt eWFuay1mdW5jdGlvbicuCiIKICAoaW50ZXJhY3RpdmUgIlAqIikKICAocmVib3gta2lsbC15YW5r LXdyYXBwZXIgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNo YXIgb3JpZy1tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZl bHkgJ3lhbmspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1tYXJrZXIgb3JpZy1t IChwb2ludCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICByZWJveC15YW5rLWZ1bmN0aW9u KSkKCihkZWZ1biByZWJveC15YW5rLXBvcCAoYXJnKQogICJJZiBwb2ludCBpcyBpbiBhIGJveCwg dW5ib3ggZmlyc3QsIGFuZCB0aGVuIHJ1biBgcmVvYngteWFuay1wb3AtZnVuY3Rpb24nIGFzIHJl cXVlc3RlZC4KCklmIHBvaW50IGlzIG5vdCBpbiBhIGJveCwgY2FsbCBgcmVvYngteWFuay1wb3At ZnVuY3Rpb24nLgoKV2l0aCB1bml2ZXJzYWwgQVJHLCBhbHdheXMgY2FsbCBgcmVvYngteWFuay1w b3AtZnVuY3Rpb24nLgoiCiAgKGludGVyYWN0aXZlICJQKiIpCiAgKHJlYm94LWtpbGwteWFuay13 cmFwcGVyIChsYW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy IG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5 ICd5YW5rLXBvcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlciBvcmln LW0gKHBvaW50KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYm94LXlhbmstcG9wLWZ1 bmN0aW9uKSkKCihkZWZ1biByZWJveC1raWxsLXJpbmctc2F2ZSAoYXJnKQogIChpbnRlcmFjdGl2 ZSAiUCIpCiAgKHJlYm94LWtpbGwteWFuay13cmFwcGVyIChsYW1iZGEgKCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5IHJlYm94LWtpbGwtcmluZy1zYXZlLWZ1bmN0aW9u KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtbWFya2VyIG9yaWctbSAocG9pbnQt bWFya2VyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYm94LWtpbGwtcmluZy1zYXZl LWZ1bmN0aW9uKSkKCihkZWZ1biByZWJveC1jZW50ZXIgKCkKICAiSWYgcG9pbnQgaXMgaW4gdGhl IGxlZnQgYm9yZGVyIG9mIGEgYm94LCBjZW50ZXIgdGhlIGJveCwKZWxzZSBjYWxsIHRoZSBkZWZh dWx0IGJpbmRpbmcgb2YgTS1jLgoKd2l0aCBhcmd1bWVudCBOLCBtb3ZlIG4gY29sdW1ucy4iCiAg KGludGVyYWN0aXZlICIqIikKICAobGV0ICgob3JpZy1mdW5jIChjZHIgKGFzc3EgJ21ldGEtYy1m dW5jIHJlYm94LXNhdmUtZW52LWFsaXN0KSkpKQogICAgKHJlYm94LWxlZnQtYm9yZGVyLXdyYXBw ZXIgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgKGN1 cnJlbnQtY29sdW1uKSB1bmluZGVudC1jb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjZW50ZXItcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIG9yaWctZnVuYwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSBvcmlnLWZ1bmMpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlciBvcmlnLW0gKHBv aW50KSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ3JlYm94LWVu Z2luZS1kb25lIHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZy1mdW5jCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSkKCgooZGVmdW4gcmVib3gtc3BhY2UgKG4p CiAgIklmIHBvaW50IGlzIGluIHRoZSBsZWZ0IGJvcmRlciBvZiBhIGJveCwgbW92ZSBib3ggdG8g dGhlIHJpZ2h0LAplbHNlIHNlbGYtaW5zZXJ0LgoKd2l0aCBhcmd1bWVudCBOLCBtb3ZlIG4gY29s dW1ucy4iCiAgKGludGVyYWN0aXZlICJwKiIpCiAgKHJlYm94LWxlZnQtYm9yZGVyLXdyYXBwZXIg KGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcmln LW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgKGN1cnJlbnQtY29sdW1u KSB1bmluZGVudC1jb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv Z24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtbWFya2VyLWluc2Vy dGlvbi10eXBlIG9yaWctbSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1yZWN0YW5nbGUgKHBvaW50LW1pbikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAoZ290by1jaGFyIChwb2ludC1tYXgp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb2ludC1hdC1ib2wgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgbiA/ICkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICdzZWxmLWluc2VydC1jb21t YW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB3ZSBjYW4ndCBjaGFuZ2Ug aW5zZXJ0aW9uLXR5cGUgaW4gY2FzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyB0aGlzIGlzIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgYm94CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzZXQtbWFya2VyIG9yaWctbSAocG9pbnQpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0aHJvdyAncmVib3gtZW5naW5lLWRvbmUgdCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3NlbGYtaW5zZXJ0LWNvbW1hbmQpKQoKKGRlZnVuIHJlYm94LWJh Y2tzcGFjZSAobikKICAiSWYgcG9pbnQgaXMgaW4gdGhlIGxlZnQgYm9yZGVyIG9mIGEgYm94LCBt b3ZlIGJveCB0byB0aGUgbGVmdCwKZWxzZSBjYWxsIGBiYWNrd2FyZC1kZWxldGUtY2hhci11bnRh YmlmeScuCgp3aXRoIGFyZ3VtZW50IE4sIG1vdmUgbiBjb2x1bW5zLiIKICAoaW50ZXJhY3RpdmUg IipwIikKICAoaWYgKHVzZS1yZWdpb24tcCkKICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAncmVi b3gta2lsbC1saW5lKQogICAgKHJlYm94LWxlZnQtYm9yZGVyLXdyYXBwZXIgKGxhbWJkYSAoKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgb3JpZy1jb2wgdW5pbmRlbnQt Y291bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLXJlY3Rh bmdsZSAocG9pbnQtbWluKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHByb2duIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lu bmluZy1vZi1saW5lIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgbWF4LW4gKG1pbiBvcmlnLWNvbCBwcmV2aW91cy1t YXJnaW4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoPCBuIG1heC1uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZS10by1jb2x1bW4gbikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtb3ZlLXRvLWNvbHVtbiBtYXgtbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAnYmFja3dhcmQtZGVsZXRl LWNoYXItdW50YWJpZnkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cg J3JlYm94LWVuZ2luZS1kb25lIHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jh Y2t3YXJkLWRlbGV0ZS1jaGFyLXVudGFiaWZ5KSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4qIHJl Ym94LXJlZ2lvbiAoci1iZWcgci1lbmQgJmtleSBzdHlsZSAocmVmaWxsIHQpIHByZXZpb3VzLXN0 eWxlIChxdWlldCBuaWwpKQogICJSZWJveCB0aGUgcmVnaW9uLgoKUHJlZml4IGFyZyBpcyBwcm9j ZXNzZWQgc2FtZSBhcyBgcmVib3gtY29tbWVudCcKCkNyZWF0ZSBuZXdsaW5nIGJlZm9yZSBhbmQg YWZ0ZXIgcmVnaW9uIGFzIG5lZWRlZCB0byBlbnN1cmUgYm94CnN0YXJ0cyBhbmQgZW5kcyBvbiBh IG5ld2xpbmUuCiIKICAoaW50ZXJhY3RpdmUgKHByb2duCiAgICAgICAgICAgICAgICAgKHVubGVz cyAodXNlLXJlZ2lvbi1wKQogICAgICAgICAgICAgICAgICAgKGVycm9yICJyZWdpb24gbm90IHNl bGVjdGVkLiIpKQogICAgICAgICAgICAgICAgIChsZXQgKChzdHlsZSAocmVib3gtZ2V0LXN0eWxl LWZyb20tcHJlZml4LWFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC1w cmVmaXgtYXJnKSkKICAgICAgICAgICAgICAgICAgICAgICAocmVmaWxsIChyZWJveC1nZXQtcmVm aWxsLWZyb20tcHJlZml4LWFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl bnQtcHJlZml4LWFyZykpKQogICAgICAgICAgICAgICAgICAgKGxpc3QgKHJlZ2lvbi1iZWdpbm5p bmcpIChyZWdpb24tZW5kKSA6c3R5bGUgc3R5bGUgOnJlZmlsbAogICAgICAgICAgICAgICAgICAg ICAgICAgcmVmaWxsKSkpKQogIChsZXQgKChvcmlnLW0gKHBvaW50LW1hcmtlcikpCiAgICAgICAg KHItZW5kIChwcm9nbgogICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgci1lbmQpCiAgICAgICAg ICAgICAgICAgKHBvaW50LW1hcmtlcikpKQogICAgICAgIChyLWJlZyAocHJvZ24KICAgICAgICAg ICAgICAgICAoZ290by1jaGFyIHItYmVnKQogICAgICAgICAgICAgICAgIChwb2ludC1tYXJrZXIp KSkpCiAgICA7OyB3ZSBjYW4ndCBwb3NzaWJsZSByZWNvZ25pemUgYW55IHN0eWxlIHdoZW4gcmVn aW9uIHdhcyBpbXByb3Blcmx5CiAgICA7OyBzZWxlY3RlZC4KICAgICh3aGVuIChyZWJveC1lbnN1 cmUtcmVnaW9uLXdob2xlLWxpbmVzIHItYmVnIHItZW5kKQogICAgICAgIChzZXRxIHByZXZpb3Vz LXN0eWxlIDExMSkpCiAgICAoc2F2ZS1yZXN0cmljdGlvbgogICAgICAobmFycm93LXRvLXJlZ2lv biByLWJlZyByLWVuZCkKICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgIChyZWJveC1lbmdp bmUgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgOnByZXZpb3VzLXN0eWxlIHByZXZp b3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgOnJlZmlsbCByZWZpbGwKICAgICAgICAgICAg ICAgICAgICA6cXVpZXQgcXVpZXQpKSkpCgo7OzsgUmVib3ggdGhlIHN1cnJvdW5kaW5nIGNvbW1l bnQuCjs7OyMjI2F1dG9sb2FkCihkZWZ1biogcmVib3gtY29tbWVudCAoJmtleSBzdHlsZSAocmVm aWxsIHQpKQogICJNYWtlIGJveCBhcm91bmQgY3VycmVudCBjb21tZW50LiAgSWYgbm8gY29tbWVu dCBpcyBkZWZpbmVkLAogIGJ1aWxkIGJveCBhcm91bmQgY3VycmVudCBjb25zZWN1dGl2ZSBub24t YmxhbmsgbGluZXMuCgpwcmVmaXggYXJnIGlzIHByb2Nlc3NlZCB0aHVzbHk6CgoxKSBwb3NpdGl2 ZSBudW1iZXIgLSBzcGVjaWZpZXMgMyBkaWdpdCBzdHlsZSBvciAyIGRpZ2l0IGJhc2Ugc3R5bGUu ICBXSVRIIFJFRklMTC4KMikgbmVnYXRpdmUgbnVtYmVyIC0gc3R5bGUsIG5vIHJlZmlsbC4KMykg XCItXCIgICAgICAgICAgICAgLSBwcm9tcHQgZm9yIHN0eWxlIGludGVyYWN0aXZlbHkgKGxlZ2Fj eSkKNCkgdW5pdmVyc2FsIGFyZyAgIC0gYXBwbHkgYHJlYm94LWRlZmF1bHQtc3R5bGUnLCBubyBy ZWZpbGwuCiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgOnN0eWxlIChyZWJveC1nZXQtc3R5bGUtZnJv bS1wcmVmaXgtYXJnIGN1cnJlbnQtcHJlZml4LWFyZykKICAgICAgICAgICAgICAgICAgICAgOnJl ZmlsbCAocmVib3gtZ2V0LXJlZmlsbC1mcm9tLXByZWZpeC1hcmcgY3VycmVudC1wcmVmaXgtYXJn KSkpCiAgKGlmICh1c2UtcmVnaW9uLXApCiAgICAgIChlcnJvciAicmVib3gtY29tbWVudCBkb2Vz bid0IHVuZGVyc3RhbmQgcmVnaW9ucy4iKSkKICAobGV0ICgob3JpZy1tIChwb2ludC1tYXJrZXIp KQogICAgICAgIHByZXZpb3VzLXN0eWxlKQogICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAgKGNv bmRpdGlvbi1jYXNlIGVycgogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChyZWJveC1maW5k LWFuZC1uYXJyb3cgOmNvbW1lbnQtb25seSBjb21tZW50LWF1dG8tZmlsbC1vbmx5LWNvbW1lbnRz KQogICAgICAgICAgICAoc2V0cSBwcmV2aW91cy1zdHlsZSAocmVib3gtZ3Vlc3Mtc3R5bGUpKQog ICAgICAgICAgICAocmVib3gtZW5naW5lIDpzdHlsZSBzdHlsZQogICAgICAgICAgICAgICAgICAg ICAgICAgIDpyZWZpbGwgcmVmaWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgOnByZXZpb3Vz LXN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgOm1hcmtlZC1w b2ludCBvcmlnLW0pKQogICAgICAgICgncmVib3gtZXJyb3IKICAgICAgICAgKHNpZ25hbCAoY2Fy IGVycikgKGNkciBlcnIpKSkKICAgICAgICAoJ2Vycm9yCiAgICAgICAgIChlcnJvciAicmVib3gt Y29tbWVudCB3cmFwcGVyOiAlcyIgZXJyKSkpKQogICAgKGdvdG8tY2hhciBvcmlnLW0pKSkKCjs7 OyMjI2F1dG9sb2FkCihkZWZ1biByZWJveC1kd2ltLWZpbGwgKGFyZykKICAiT24gZmlyc3QgaW52 b2NhdGlvbiwgZmlsbCByZWdpb24gb3IgY29tbWVudCwgdW5sZXNzIHN0eWxlIHJlcXVlc3RlZCB0 aHJvdWdoIHByZWZpeCBhcmcuCgpPbiBzZWNvbmQgY29uc2VjdXRpdmUgaW52b2NhdGlvbiwgYm94 IHJlZ2lvbiBvciBjb21tZW50IHVzaW5nCnByZWZpeCBhcmcgc3BlY2lmaWVkIHN0eWxlIG9yIGBy ZWJveC1kZWZhdWx0LXN0eWxlJy4KCklmIHJlZ2lvbiBpcyBhY3RpdmUsIHRoZSByZWdpb24gd2ls bCBzdGF5IGFjdGl2ZSBhZnRlciB0aGlzIGNvbW1hbmQuCgpUaGlzIGZ1bmN0aW9uIHByb2Nlc3Nl cyBwcmVmaXggYXJnIHRoZSBzYW1lIHdheSBhc2ByZWJveC1jb21tZW50JyB3aXRoIHRoZQogIGV4 Y2VwdGlvbiB0aGF0OgoKICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgIHwgc3BlY2lmeWluZyBgLScgd2ls bCB1bmJveCB0aGUgcmVnaW9uIG9yIGNvbW1lbnQgdG8gfAogICAgICAgICAgICB8IGByZWJveC1k ZWZhdWx0LXVuYm94LXN0eWxlJyB3aXRoIHJlZmlsbCAgICAgICAgICAgfAogICAgICAgICAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIgog IChpbnRlcmFjdGl2ZSAiKlAiKQogIChsZXQgKChvcmlnLW0gKHBvaW50LW1hcmtlcikpCiAgICAg ICAgOztjb3B5IG9mIG1hcmssIHNvIHdlIGNhbiBwb3NzaWJseSBjaGFuZ2UgdGhlIGluc2VydGlv biB0eXBlCiAgICAgICAgdGVtcC1tYXJrCiAgICAgICAgKHN0eWxlIChyZWJveC1nZXQtc3R5bGUt ZnJvbS1wcmVmaXgtYXJnIGN1cnJlbnQtcHJlZml4LWFyZwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6dXNlLWRlZmF1bHQgbmlsIDphc2sgbmlsKSkKICAg ICAgICBwcmV2aW91cy1zdHlsZSkKICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgIChjb25kaXRp b24tY2FzZSBlcnIKICAgICAgICAgIChpZiAodXNlLXJlZ2lvbi1wKQogICAgICAgICAgICAgIChs ZXQgKGRlYWN0aXZhdGUtbWFyaykKICAgICAgICAgICAgICAgIChpZiAoYW5kIChwcm9nMgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHJlZ2lvbi1iZWdpbm5pbmcpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAocG9pbnQpIChwb2ludC1hdC1ib2wpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9yaWctbSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAocHJvZzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1j aGFyIChyZWdpb24tZW5kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKHBvaW50 KSAocG9pbnQtYXQtYm9sKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBv cmlnLW0pKSkKICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAg IChzZXRxIHRlbXAtbWFyayAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpIChtYXJrKSkpCiAgICAg ICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlci1pbnNlcnRpb24tdHlwZSAoaWYgKDwgdGVtcC1t YXJrIG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcmlnLW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGVtcC1tYXJrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdCkKICAgICAgICAgICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIChy ZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkpCiAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSBwcmV2aW91cy1zdHlsZSAocmVib3gtZ3Vlc3Mtc3R5bGUpKQogICAgICAgICAgICAgICAgICAg ICAgKGlmIChvciAobWVtcSBsYXN0LWNvbW1hbmQgJyhyZWJveC1kd2ltLWZpbGwpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAo cHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHN0eWxlIChvciBzdHlsZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWJveC1nZXQtc3R5 bGUtZm9yLW1ham9yLW1vZGUgcmVib3gtZGVmYXVsdC1zdHlsZSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1lc3NhZ2UgIlJlYm94IGNoYW5naW5nIHN0eWxlOiAlcyAtPiAlcyIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLXN0eWxlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZWJveC1lbmdpbmUgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDpyZWZpbGwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6cHJldmlvdXMtc3R5bGUgcHJldmlvdXMtc3R5bGUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnF1aWV0IHQpKQogICAgICAgICAgICAgICAg ICAgICAgICAobWVzc2FnZSAiUmVmaWxsaW5nIHN0eWxlOiAlcyIgcHJldmlvdXMtc3R5bGUpCiAg ICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgcHJldmlvdXMtc3R5bGUgMTExKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgb3JpZy1tKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC1p bnRlcmFjdGl2ZWx5ICdmaWxsLXJlZ2lvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJl Ym94LWVuZ2luZSA6c3R5bGUgcHJldmlvdXMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpyZWZpbGwgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOnByZXZpb3VzLXN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6cXVpZXQgdCkpKQogICAgICAgICAgICAgICAgICAgICAg KHNldC1tYXJrIHRlbXAtbWFyaykpCiAgICAgICAgICAgICAgICAgIChpZiAobWVtcSBsYXN0LWNv bW1hbmQgJyhyZWJveC1kd2ltLWZpbGwpKQogICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHIt YmVnIChwcm9nMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh ciAocmVnaW9uLWJlZ2lubmluZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocG9pbnQtbWFya2VyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdv dG8tY2hhciBvcmlnLW0pKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyLWVuZCAocHJv ZzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocmVn aW9uLWVuZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludC1t YXJrZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9y aWctbSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKHJlYm94LWVuc3VyZS1yZWdpb24td2hv bGUtbGluZXMgci1iZWcgci1lbmQpCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPCAocG9p bnQpIChtYXJrKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0LW1hcmsgci1lbmQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgci1iZWcpKQogICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXQtbWFyayByLWJlZykKICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHItZW5k KSkKICAgICAgICAgICAgICAgICAgICAgICAgKHJlYm94LWR3aW0tZmlsbCBhcmcpCiAgICAgICAg ICAgICAgICAgICAgICAgIChzZXQtbWFya2VyIG9yaWctbSAocG9pbnQpKSkKICAgICAgICAgICAg ICAgICAgICAobWVzc2FnZSAiUmVmaWxsaW5nIHJlZ2lvbiIpCiAgICAgICAgICAgICAgICAgICAg KGZpbGwtcmVnaW9uIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkpKSkpCiAgICAgICAg ICAgIChyZWJveC1maW5kLWFuZC1uYXJyb3cgOmNvbW1lbnQtb25seSBjb21tZW50LWF1dG8tZmls bC1vbmx5LWNvbW1lbnRzKQogICAgICAgICAgICAoc2V0cSBwcmV2aW91cy1zdHlsZSAocmVib3gt Z3Vlc3Mtc3R5bGUpKQogICAgICAgICAgICAoaWYgKG9yIChtZW1xIGxhc3QtY29tbWFuZCAnKHJl Ym94LWR3aW0tZmlsbCkpCiAgICAgICAgICAgICAgICAgICAgc3R5bGUpCiAgICAgICAgICAgICAg ICAocHJvZ24KICAgICAgICAgICAgICAgICAgKHNldHEgc3R5bGUgKG9yIHN0eWxlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocmVib3gtZ2V0LXN0eWxlLWZvci1tYWpvci1tb2Rl IHJlYm94LWRlZmF1bHQtc3R5bGUpKSkKICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIlJlYm94 IGNoYW5naW5nIHN0eWxlOiAlcyAtPiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl dmlvdXMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUpCiAgICAgICAgICAg ICAgICAgIChyZWJveC1lbmdpbmUgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOnJlZmlsbCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnByZXZp b3VzLXN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Om1hcmtlZC1wb2ludCBvcmlnLW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cXVp ZXQgdCkpCiAgICAgICAgICAgICAgKG1lc3NhZ2UgIlJlZmlsbGluZyBzdHlsZTogJXMiIHByZXZp b3VzLXN0eWxlKQogICAgICAgICAgICAgIChyZWJveC1lbmdpbmUgOnJlZmlsbCB0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6cHJldmlvdXMtc3R5bGUgcHJldmlvdXMtc3R5bGUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpzdHlsZSBwcmV2aW91cy1zdHlsZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgOm1hcmtlZC1wb2ludCBvcmlnLW0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpxdWlldCB0KSkpCiAgICAgICAgKCdyZWJveC1lcnJvcgogICAgICAgICAoc2lnbmFs IChjYXIgZXJyKSAoY2RyIGVycikpKQogICAgICAgICgnZXJyb3IKICAgICAgICAgKGVycm9yICJy ZWJveC1kd2ltLWZpbGwgd3JhcHBlcjogJXMiIGVycikpKSkKICAgIChnb3RvLWNoYXIgb3JpZy1t KSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gcmVib3gtZHdpbS1uby1maWxsIChhcmcpCiAgIlJl Ym94IHJlZ2lvbiBvciBjb21tZW50LCBuZXZlciByZWZpbGxpbmcuCgpUaGlzIGZ1bmN0aW9uIHBy b2Nlc3NlcyBwcmVmaXggYXJnIHRoZSBzYW1lIHdheSBhc2ByZWJveC1jb21tZW50JyB3aXRoIHRo ZQogIGV4Y2VwdGlvbiB0aGF0OgoKICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgIHwgc3BlY2lmeWluZyBg LScgd2lsbCB1bmJveCB0aGUgcmVnaW9uIG9yIGNvbW1lbnQgdG8gfAogICAgICAgICAgICB8IGBy ZWJveC1kZWZhdWx0LXVuYm94LXN0eWxlJyAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAg ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKIgogIChpbnRlcmFjdGl2ZSAiKlAiKQogIChsZXQgKChzdHlsZSAocmVib3gtZ2V0LXN0eWxl LWZyb20tcHJlZml4LWFyZyBjdXJyZW50LXByZWZpeC1hcmcgOmFzayBuaWwpKQogICAgICAgIChy ZWZpbGwgKHJlYm94LWdldC1yZWZpbGwtZnJvbS1wcmVmaXgtYXJnIGN1cnJlbnQtcHJlZml4LWFy ZykpKQogICAgKGlmICh1c2UtcmVnaW9uLXApCiAgICAgICAgKHJlYm94LXJlZ2lvbiAocmVnaW9u LWJlZ2lubmluZykKICAgICAgICAgICAgICAgICAgICAgIChyZWdpb24tZW5kKQogICAgICAgICAg ICAgICAgICAgICAgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAgICA6cmVmaWxsIG5p bCkKICAgICAgKHJlYm94LWNvbW1lbnQgOnN0eWxlIHN0eWxlCiAgICAgICAgICAgICAgICAgICAg IDpyZWZpbGwgbmlsKSkpKQoKKGRlZnVuIHJlYm94LWRvLWF1dG8tZmlsbCAoKQogICJUcnkgdG8g ZmlsbCBhcyBib3ggZmlyc3QsIGlmIHRoYXQgZmFpbHMgdXNlIGBkby1hdXRvLWZpbGwnCiIKICAo bGV0ICgob3JpZy1tIChwb2ludC1tYXJrZXIpKQogICAgICAgIHN0eWxlKQogICAgKGNvbmRpdGlv bi1jYXNlIGVycgogICAgICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICAgICAocmVib3gtZmlu ZC1hbmQtbmFycm93IDpjb21tZW50LW9ubHkgY29tbWVudC1hdXRvLWZpbGwtb25seS1jb21tZW50 cykKICAgICAgICAgIChzZXRxIHN0eWxlIChyZWJveC1ndWVzcy1zdHlsZSkpCiAgICAgICAgICAo aWYgKD0gc3R5bGUgMTExKQogICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgKGdv dG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAgICAoZG8tYXV0by1maWxsKSkKICAgICAgICAg ICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgICAgICAgICAocmVib3gtZW5naW5lIDpwcmV2 aW91cy1zdHlsZSBzdHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOnJlZmlsbCAnYXV0 by1maWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cXVpZXQgdAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgOm1vdmUtcG9pbnQgbmlsKQogICAgICAgICAgICA7OyBUaGlzIGlzIGhh Y2t5LiAgSWYgeW91IHByZXNzIGVudGVyIG9uIHRoZSBlbmQgb2YgdGhlIGJvdHRvbQogICAgICAg ICAgICA7OyBib3JkZXIgb2YgYSBib3gsIHRoZSBtYXJrZXIgd2lsbCBtb3ZlIHRvIHRoZSBiZWdp bm5pbmcgb2YKICAgICAgICAgICAgOzsgbmV4dCBsaW5lLgogICAgICAgICAgICA7OwogICAgICAg ICAgICA7OyBIb3dldmVyLCBhcyBhIHBhcnQgb2Ygbm9ybWFsIGZpbGwgYWN0aW9uLCB0aGUgcG9p bnQgY2Fubm90IGJlCiAgICAgICAgICAgIDs7IGF0IGJvbCwgc28gd2UganVzdCBtb3ZlIGl0IGJh Y2sgb25lPyAgSXMgdGhpcyBfcmlnaHRfPwogICAgICAgICAgICAod2hlbiAoYW5kIChib2xwKQog ICAgICAgICAgICAgICAgICAgICAgIDs7IHdoZW4gcHJlc3Npbmcgc3BhY2UgaW4gdGhlIE5XIGNv cm5lciBvZiBib3gKICAgICAgICAgICAgICAgICAgICAgICAobm90IChib2JwKSkpCiAgICAgICAg ICAgICAgKGJhY2t3YXJkLWNoYXIpKQogICAgICAgICAgICApKQogICAgICAoJ3JlYm94LWVycm9y CiAgICAgICAoZ290by1jaGFyIG9yaWctbSkKICAgICAgIChkby1hdXRvLWZpbGwpKQogICAgICAo J2Vycm9yCiAgICAgICAoZXJyb3IgInJlYm94LWRvLWF1dG8tZmlsbCB3cmFwcGVyOiAlcyIgZXJy KSkpKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biByZWJveC1pbmRlbnQtbmV3LWxpbmUgKGFyZykK ICAiQ3JlYXRlIG5ld2xpbmUuCgpQcmVmaXggYXJnIGdyZWF0ZXIgdGhhbiB6ZXJvIGluc2VydHMg YXJnIGxpbmVzLiAgT3RoZXIgcHJlZml4IGFyZwpjYXVzZXMgcmVmaWxsaW5nIHdpdGhvdXQgYWN0 dWFsbHkgaW5zZXJ0aW5nIGEgbmV3bGluZS4KCklmIHBvaW50IGlzIHdpdGhpbiBhIGJveCwga2Vl cCBjb21tZW50IGJveGVkLiAgRWxzaWYgcG9pbnQgaXMKaW4gYSBjb21tZW50LCBjb250aW51ZSBj b21tZW50IG9uIHRoZSBuZXh0IGxpbmUuICBFbHNlLCBuZXdsaW5lCmFuZCBpbmRlbnQuCiIKICAo aW50ZXJhY3RpdmUgIipQIikKICAoc2F2ZS1yZXN0cmljdGlvbgogICAgKGxldCAob3JpZy1tCiAg ICAgICAgICBzdHlsZQogICAgICAgICAgdGV4dC1iZWctY29sCiAgICAgICAgICApCiAgICAgIChj b25kaXRpb24tY2FzZSBlcnIKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAoc2V0cSBvcmln LW0gKHBvaW50LW1hcmtlcikpCiAgICAgICAgICAgIChyZWJveC1maW5kLWFuZC1uYXJyb3cgOmNv bW1lbnQtb25seSBjb21tZW50LWF1dG8tZmlsbC1vbmx5LWNvbW1lbnRzKQogICAgICAgICAgICAo c2V0LW1hcmtlci1pbnNlcnRpb24tdHlwZSBvcmlnLW0gdCkKICAgICAgICAgICAgKHNldHEgc3R5 bGUgKHJlYm94LWd1ZXNzLXN0eWxlKSkKICAgICAgICAgICAgKGlmIChub3QgKGVxIHN0eWxlIDEx MSkpIDsgMTExIGlzIG5vLWJveAogICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAgIChzZXRxIGFyZyAoY29uZCAoKG5vdCBhcmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kIGFyZwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bWJlcnAgYXJnKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gYXJnIDApKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkpCiAgICAg ICAgICAgICAgICAgIChyZWJveC1lbmdpbmUgOnByZXZpb3VzLXN0eWxlIHN0eWxlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnJlZmlsbCBuaWwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6bW9kLWZ1bmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Oy1sdy0ganVzdCBhbHdh eXMgZ290byBiZWdpbm5pbmcgb2YgbGluZT8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3aGVuIGFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1j aGFyIG9yaWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChsb29r aW5nLWF0LXAgIlsgXHRdKiQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgY3JlYXRpbmcgYmxhbmsgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgdGV4dC1iZWctY29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiAobG9va2luZy1hdC1wICJbIFx0XSokIikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG9y aWctbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCsgcHJldmlvdXMtbWFyZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggd3cpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJz LWZvcndhcmQgIiBcdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCsgcHJldmlvdXMtbWFyZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCB3dykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRleHQtYmVnLWNvbCAoKyBw cmV2aW91cy1tYXJnaW4gKGxlbmd0aCB3dykpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChuZXdsaW5lIGFyZykpKSkKICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcmln LW0pCiAgICAgICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiB0ZXh0LWJlZy1jb2wgdCkpCiAg ICAgICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAgKGNhbGwtaW50ZXJh Y3RpdmVseSAocmVib3gtZ2V0LW5ld2xpbmUtaW5kZW50LWZ1bmN0aW9uKSkpKQogICAgICAgICgn cmVib3gtY29tbWVudC1ub3QtZm91bmQtZXJyb3IKICAgICAgICAgKG1lc3NhZ2UgInJlYm94LWlu ZGVudC1uZXctbGluZTogdW5hYmxlIHRvIGZpbmQgY29tbWVudCwgY2FsbGluZyBzYXZlZCBmdW5j dGlvbi4iKQogICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5IChyZWJveC1nZXQtbmV3bGluZS1p bmRlbnQtZnVuY3Rpb24pKSkKICAgICAgICAoJ2Vycm9yCiAgICAgICAgIChlcnJvciAicmVib3gt aW5kZW50LW5ldy1saW5lIHdyYXBwZXI6ICVzIiBlcnIpKSkpKSkKCgwKCihkZWZ1biByZWJveC1r aWxsLXlhbmstd3JhcHBlciAobW9kLWZ1bmMgb3JpZy1mdW5jKQogIChsZXQgKChvcmlnLW0gKHBv aW50LW1hcmtlcikpCiAgICAgICAgcHJldmlvdXMtc3R5bGUpCiAgICAoY29uZGl0aW9uLWNhc2Ug ZXJyCiAgICAgICAgKHByb2duCiAgICAgICAgICAod2hlbiAoYW5kIGN1cnJlbnQtcHJlZml4LWFy ZwogICAgICAgICAgICAgICAgICAgKGxpc3RwIGN1cnJlbnQtcHJlZml4LWFyZykpCiAgICAgICAg ICAgICAgKHNpZ25hbCAncmVib3gtZXJyb3IgbmlsKSkKICAgICAgICAgIChzYXZlLXJlc3RyaWN0 aW9uCiAgICAgICAgICAgIChyZWJveC1maW5kLWFuZC1uYXJyb3cgOmNvbW1lbnQtb25seSBjb21t ZW50LWF1dG8tZmlsbC1vbmx5LWNvbW1lbnRzKQogICAgICAgICAgICAod2hlbiAoYW5kICh1c2Ut cmVnaW9uLXApCiAgICAgICAgICAgICAgICAgICAgICAgKG9yICg8IChtYXJrKSAocG9pbnQtbWlu KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gKG1hcmspIChwb2ludC1tYXgpKSkpCiAg ICAgICAgICAgICAgKHNpZ25hbCAncmVib3gtZXJyb3IgIm1hcmsgaXMgb3V0IG9mIGJveCIpKQog ICAgICAgICAgICAoc2V0cSBwcmV2aW91cy1zdHlsZSAocmVib3gtZ3Vlc3Mtc3R5bGUpKQogICAg ICAgICAgICAoaWYgKGVxIHByZXZpb3VzLXN0eWxlIDExMSkKICAgICAgICAgICAgICAgIChzaWdu YWwgJ3JlYm94LWVycm9yICJzdHlsZSBpcyAxMTEiKQogICAgICAgICAgICAgIChyZWJveC1lbmdp bmUgOnN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFy a2VkLXBvaW50IG9yaWctbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOnF1aWV0IHQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDpyZWZpbGwgbmlsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6bW92ZS1wb2ludCBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwcmV2 aW91cy1zdHlsZSBwcmV2aW91cy1zdHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1v ZC1mdW5jCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QtZnVuYykpKSkKICAgICAgKCdy ZWJveC1lcnJvcgogICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAoYW5kIG9yaWctZnVu YwogICAgICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5IG9yaWctZnVuYykpKQogICAgICAoJ2Vy cm9yCiAgICAgICAoc2lnbmFsIChjYXIgZXJyKSAoY2RyIGVycikpKSkpKQoKKGRlZnVuIHJlYm94 LWxlZnQtYm9yZGVyLXdyYXBwZXIgKGluc3AtZnVuYyBvcmlnLWZ1bmMpCiAgKGxldCAoKG9yaWct bSAocG9pbnQtbWFya2VyKSkKICAgICAgICAob3JpZy1jb2wgKGN1cnJlbnQtY29sdW1uKSkKICAg ICAgICBwcmV2aW91cy1zdHlsZSkKICAgIChjb25kaXRpb24tY2FzZSBlcnIKICAgICAgICAocHJv Z24KICAgICAgICAgICh3aGVuICh1c2UtcmVnaW9uLXApCiAgICAgICAgICAgIChzaWduYWwgJ3Jl Ym94LWVycm9yICJyZWdpb24gdXNlZCIpKQogICAgICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KICAg ICAgICAgICAgKHJlYm94LWZpbmQtYW5kLW5hcnJvdyA6Y29tbWVudC1vbmx5IGNvbW1lbnQtYXV0 by1maWxsLW9ubHktY29tbWVudHMpCiAgICAgICAgICAgIChzZXRxIHByZXZpb3VzLXN0eWxlIChy ZWJveC1ndWVzcy1zdHlsZSkpCiAgICAgICAgICAgIChpZiAoZXEgcHJldmlvdXMtc3R5bGUgMTEx KQogICAgICAgICAgICAgICAgKHNpZ25hbCAncmVib3gtZXJyb3IgInN0eWxlIGlzIDExMSIpCiAg ICAgICAgICAgICAgKGdvdG8tY2hhciBvcmlnLW0pCiAgICAgICAgICAgICAgKHJlYm94LWVuZ2lu ZSA6c3R5bGUgcHJldmlvdXMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJr ZWQtcG9pbnQgb3JpZy1tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cXVpZXQgdAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnJlZmlsbCBuaWwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDptb3ZlLXBvaW50IG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOnByZXZp b3VzLXN0eWxlIHByZXZpb3VzLXN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aW5z cC1mdW5jCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNwLWZ1bmMpKSkpCiAgICAgICgn cmVib3gtZXJyb3IKICAgICAgIChnb3RvLWNoYXIgb3JpZy1tKQogICAgICAgKGFuZCBvcmlnLWZ1 bmMKICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSBvcmlnLWZ1bmMpKSkKICAgICAgKCdl cnJvcgogICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNkciBlcnIpKSkpKSkKCgoKKGRlZnVuIHJl Ym94LWVuc3VyZS1yZWdpb24td2hvbGUtbGluZXMgKHItYmVnIHItZW5kKQogICJFbnN1cmUgcmVn aW9uIGNvdmVyZWQgYnkgci1iZWcgYW5kIHItZW5kIGFyZSB3aG9sZSBsaW5lcy4KClItQkVHIGFu ZCBSLUVORCBhcmUgbWFya2Vycy4gIFdlIGFzc3VtZSBSLUJFRyA8IFItRU5ELgoKUmV0dXJucyB0 IHdoZW4gY2hhbmdlcyB3ZXJlIG1hZGUgdG8gdGhlIG1hcmtlcnMuIgogIChsZXQgKGNvbAogICAg ICAgIGNoYW5nZXMtbWFkZSkKICAgIChnb3RvLWNoYXIgci1iZWcpCiAgICAodW5sZXNzIChib2xw KQogICAgICAoc2V0cSBjaGFuZ2VzLW1hZGUgdCkKICAgICAgKHNldHEgY29sIChjdXJyZW50LWNv bHVtbikpCiAgICAgIChiZWdpbm5pbmctb2YtbGluZSAxKQogICAgICAodW5sZXNzIChwcm9nMgog ICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKQogICAgICAgICAgICAg ICAgICAoPj0gKGN1cnJlbnQtY29sdW1uKSBjb2wpKQogICAgICAgIChnb3RvLWNoYXIgci1iZWcp CiAgICAgICAgKGluc2VydCAiXG4iKQogICAgICAgIChpbmRlbnQtdG8gY29sKSkKICAgICAgKHNl dC1tYXJrZXIgci1iZWcgKHBvaW50LWF0LWJvbCkpKQogICAgKGdvdG8tY2hhciByLWVuZCkKICAg ICh1bmxlc3MgKGJvbHApCiAgICAgIChzZXRxIGNoYW5nZXMtbWFkZSB0KQogICAgICAoaWYgKGFu ZCAobG9va2luZy1hdC1wICJbIFx0XSokIikKICAgICAgICAgICAgICAgKG5vdCAoZW9icCkpKQog ICAgICAgICAgKHNldC1tYXJrZXIgci1lbmQgKHBvaW50LWF0LWJvbCAyKSkKICAgICAgICAoaW5z ZXJ0ICJcbiIpCiAgICAgICAgKHNldC1tYXJrZXIgci1lbmQgKHBvaW50KSkpKQogICAgY2hhbmdl cy1tYWRlKSkKCihkZWZ1biogcmVib3gtZW5naW5lICgma2V5IHN0eWxlCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluc3AtZnVuYwogICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QtZnVu YwogICAgICAgICAgICAgICAgICAgICAgICAgICAocmVmaWxsIHQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwcmV2aW91cy1zdHlsZSBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAg IChxdWlldCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrZWQtcG9pbnQgbmls KQogICAgICAgICAgICAgICAgICAgICAgICAgICAobW92ZS1wb2ludCB0KSkKICAiQWRkLCBkZWxl dGUgb3IgYWRqdXN0IGEgY29tbWVudCBib3ggaW4gdGhlIG5hcnJvd2VkIGJ1ZmZlci4KClRoZSBu YXJyb3dlZCBidWZmZXIgc2hvdWxkIGNvbnRhaW4gb25seSB3aG9sZSBsaW5lcywgb3RoZXJ3aXNl IGl0IHdpbGwgbG9vayBzdHJhbmdlIG9uY2Ugd2lkZW5lZC4KCiIKICAobGV0KiAoKHVuZG8tbGlz dCBidWZmZXItdW5kby1saXN0KQogICAgICAgICAobWFya2VkLXBvaW50IChvciBtYXJrZWQtcG9p bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1hcmtlcikpKQogICAgICAgICAo cHJldmlvdXMtbWFyZ2luIChyZWJveC1sZWZ0LW1hcmdpbikpCiAgICAgICAgIChwcmV2aW91cy1z dHlsZSAob3IgcHJldmlvdXMtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVi b3gtZ3Vlc3Mtc3R5bGUpKSkKICAgICAgICAgKHByZXZpb3VzLXN0eWxlLWRhdGEgKGNkciAoYXNz cSBwcmV2aW91cy1zdHlsZSByZWJveC1zdHlsZS1kYXRhKSkpCiAgICAgICAgIChwcmV2aW91cy1t ZXJnZS1udyAoYXJlZiBwcmV2aW91cy1zdHlsZS1kYXRhIDQpKQogICAgICAgICAocHJldmlvdXMt bWVyZ2Utc2UgKGFyZWYgcHJldmlvdXMtc3R5bGUtZGF0YSA1KSkKICAgICAgICAgKHByZXZpb3Vz LW53IChhcmVmIHByZXZpb3VzLXN0eWxlLWRhdGEgNikpCiAgICAgICAgIChwcmV2aW91cy1ubiAo YXJlZiBwcmV2aW91cy1zdHlsZS1kYXRhIDcpKQogICAgICAgICAocHJldmlvdXMtbmUgKGFyZWYg cHJldmlvdXMtc3R5bGUtZGF0YSA4KSkKICAgICAgICAgKHByZXZpb3VzLXd3IChhcmVmIHByZXZp b3VzLXN0eWxlLWRhdGEgOSkpCiAgICAgICAgIChwcmV2aW91cy1lZSAoYXJlZiBwcmV2aW91cy1z dHlsZS1kYXRhIDEwKSkKICAgICAgICAgKHByZXZpb3VzLXN3IChhcmVmIHByZXZpb3VzLXN0eWxl LWRhdGEgMTEpKQogICAgICAgICAocHJldmlvdXMtc3MgKGFyZWYgcHJldmlvdXMtc3R5bGUtZGF0 YSAxMikpCiAgICAgICAgIChwcmV2aW91cy1zZSAoYXJlZiBwcmV2aW91cy1zdHlsZS1kYXRhIDEz KSkKICAgICAgICAgKHN0eWxlIChvciBzdHlsZSBwcmV2aW91cy1zdHlsZSkpCiAgICAgICAgIChz dHlsZS1kYXRhIChvciAoY2RyIChhc3NxIHN0eWxlIHJlYm94LXN0eWxlLWRhdGEpKQogICAgICAg ICAgICAgICAgICAgICAgICAgKHNpZ25hbCAncmVib3gtZXJyb3IgKGZvcm1hdCAic3R5bGUgXCIl c1wiaXMgdW5rbm93biIgc3R5bGUpKSkpCiAgICAgICAgICh3dyAoYXJlZiBzdHlsZS1kYXRhIDkp KQogICAgICAgICAodW5pbmRlbnQtY291bnQgKCsgcHJldmlvdXMtbWFyZ2luIChsZW5ndGggcHJl dmlvdXMtd3cpKSkKICAgICAgICAgOzsgKG1hcmtlZC1jb2wtd2l0aGluLWJveCAocHJvZ24KICAg ICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgbWFya2VkLXBvaW50 KQogICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKGN1cnJlbnQtY29sdW1u KQogICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pbmRlbnQtY291bnQp KSkKICAgICAgICAgKQoKCiAgICAodW5sZXNzIHF1aWV0CiAgICAgIChpZiAoPSBwcmV2aW91cy1z dHlsZSBzdHlsZSkKICAgICAgICAgIChtZXNzYWdlICJLZWVwaW5nIHN0eWxlIFwiJXNcIiVzLiIK ICAgICAgICAgICAgICAgICAgIHN0eWxlCiAgICAgICAgICAgICAgICAgICAoY29uY2F0ICh3aGVu IHJlZmlsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIHJlZmlsbGluZyIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGluc3AtZnVuYwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIsIHJ1bm5pbmcgaW5zcC1mdW5jIikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHdoZW4gbW9kLWZ1bmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBydW5uaW5n IG1vZC1mdW5jIikpKQogICAgICAgIChtZXNzYWdlICJTdHlsZTogJWQgLT4gJWQiIChvciBwcmV2 aW91cy1zdHlsZSAwKSBzdHlsZSkpKQoKICAgIDs7IGF0dGVtcHQgdG8gYm94IG9ubHkgc3BhY2Vz CiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0 XG4iKQogICAgKHdoZW4gKG5vdCAoPCAocG9pbnQpIChwb2ludC1tYXgpKSkKICAgICAgKHNpZ25h bCAncmVib3gtZXJyb3IgIkNhbm5vdCBib3ggcmVnaW9uIGNvbnNpc3Rpbmcgb2Ygb25seSBzcGFj ZXMuIikpCgogICAgOzsgdW50YWJpZnksIGJ1dCBwcmVzZXJ2ZSBwb3NpdGlvbiBvZiBtYXJrZWQt cG9pbnQKICAgIChsZXQgKChtYXJrZWQtY29sIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIG1hcmtlZC1wb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtY29sdW1uKSkpKQogICAgICAodW50YWJpZnkgKHBvaW50LW1pbikgKHBvaW50LW1heCkpCiAg ICAgIChnb3RvLWNoYXIgbWFya2VkLXBvaW50KQogICAgICAodW5sZXNzICg9IChjdXJyZW50LWNv bHVtbikgbWFya2VkLWNvbCkKICAgICAgICAobW92ZS10by1jb2x1bW4gbWFya2VkLWNvbCkKICAg ICAgICAoc2V0LW1hcmtlciBtYXJrZWQtcG9pbnQgKHBvaW50KSkpKQoKICAgIChjYXRjaCAncmVi b3gtZW5naW5lLWRvbmUKICAgICAgOzsgaW5zcGVjdCB0aGUgYm94CiAgICAgICh3aGVuIGluc3At ZnVuYwogICAgICAgIChpZiAoZnVuY3Rpb25wIGluc3AtZnVuYykKICAgICAgICAgICAgKGZ1bmNh bGwgaW5zcC1mdW5jKQogICAgICAgICAgKGVycm9yICIlcyBpcyBub3QgYSBmdW5jdGlvbiIgaW5z cC1mdW5jKSkpCgogICAgICA7OyBpZiB3ZSBkb24ndCBzZXQgdGhlIGluc2VydGlvbiB0eXBlLCBh bmQgaXQgZ2V0cyBwdWxsZWQgdG8gdGhlIGJlZ2lubmluZwogICAgICA7OyBvZiBsaW5lLCBpdCB3 aWxsIGdldCBzdHVjayB0aGVyZS4KICAgICAgKGdvdG8tY2hhciBtYXJrZWQtcG9pbnQpCiAgICAg ICh3aGVuIChlb2xwKQogICAgICAgIChzZXQtbWFya2VyLWluc2VydGlvbi10eXBlIG1hcmtlZC1w b2ludCB0KSkKCiAgICAgIDs7IFJlbW92ZSBhbGwgcHJldmlvdXMgY29tbWVudCBtYXJrcy4KICAg ICAgKHVubGVzcyAoZXEgcHJldmlvdXMtc3R5bGUgMTExKQogICAgICAgIChyZWJveC11bmJ1aWxk IHByZXZpb3VzLXN0eWxlKSkKCiAgICAgICh1bmxlc3MgcmVib3gta2VlcC1ibGFuay1saW5lcwog ICAgICAgIDs7IFJlbW92ZSBhbGwgc3B1cmlvdXMgd2hpdGVzcGFjZS4KICAgICAgICAoZ290by1j aGFyIChwb2ludC1taW4pKQogICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIiArJCIg bmlsIHQpCiAgICAgICAgICAocmVwbGFjZS1tYXRjaCAiIiB0IHQpKQogICAgICAgIChnb3RvLWNo YXIgKHBvaW50LW1pbikpCiAgICAgICAgKGRlbGV0ZS1jaGFyICgtIChza2lwLWNoYXJzLWZvcndh cmQgIlxuIikpKQogICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAgKHdoZW4g KD0gKHByZWNlZGluZy1jaGFyKSA/XG4pCiAgICAgICAgICAoZm9yd2FyZC1jaGFyIC0xKSkKICAg ICAgICAoZGVsZXRlLWNoYXIgKC0gKHNraXAtY2hhcnMtYmFja3dhcmQgIlxuIikpKQogICAgICAg IChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2Fy ZCAiXG5cblxuKyIgbmlsIHQpCiAgICAgICAgICAocmVwbGFjZS1tYXRjaCAiXG5cbiIgdCB0KSkp CgogICAgICA7OyBNb3ZlIGFsbCB0aGUgdGV4dCByaWdpZGx5IHRvIHRoZSBsZWZ0IGZvciBpbnN1 cmluZyB0aGF0IHRoZSBsZWZ0CiAgICAgIDs7IG1hcmdpbiBzdGF5cyBhdCB0aGUgc2FtZSBwbGFj ZS4KICAgICAgKHVubGVzcyAoemVyb3AgdW5pbmRlbnQtY291bnQpCiAgICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkKICAgICAgICAod2hpbGUgKG5vdCAoZW9icCkpCiAgICAgICAgICAoYmFj a3dhcmQtZGVsZXRlLWNoYXIgKHNraXAtY2hhcnMtZm9yd2FyZCAiICIgKCsgKHBvaW50KSB1bmlu ZGVudC1jb3VudCkpKQogICAgICAgICAgKGZvcndhcmQtbGluZSAxKSkpCgogICAgICA7OyBtb2Rp ZnkgdGhlIGJveAogICAgICAod2hlbiBtb2QtZnVuYwogICAgICAgIChpZiAoZnVuY3Rpb25wIG1v ZC1mdW5jKQogICAgICAgICAgICAoZnVuY2FsbCBtb2QtZnVuYykKICAgICAgICAgIChlcnJvciAi JXMgaXMgbm90IGEgZnVuY3Rpb24iIG1vZC1mdW5jKSkpCgogICAgICA7OyBlbXB0eSBib3hlcyBh cmUgYWxsb3dlZCBpZiB3ZSBhcmUganVzdCBkb2luZyBhbiBhdXRvZmlsbCwgb3RoZXJ3aXNlCiAg ICAgIDs7IHdlIGNhbiBuZXZlciBzdGFydCBhIGNvbW1lbnQsIGFzIHRoZSAic3BhY2UiIGFmdGVy IGBjb21tZW50LXN0YXJ0JwogICAgICA7OyB3aWxsIHRyaWdnZXIgYXV0by1maWxsLWZ1bmN0aW9u LgogICAgICAod2hlbiAobm90IChlcSByZWZpbGwgJ2F1dG8tZmlsbCkpCiAgICAgICAgOzsgaWYg dGhlIG5hcnJvd2VkIGJveCBpcyBhbGwgYmxhbmtzIG5vdywgZGVsZXRlIGl0IGFuZCBxdWl0CiAg ICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJk ICIgXHRcbiIpCiAgICAgICAgKHdoZW4gKGVxIChwb2ludCkgKHBvaW50LW1heCkpCiAgICAgICAg ICAoZGVsZXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAgICAgICAgICh0aHJv dyAncmVib3gtZW5naW5lLWRvbmUgdCkpKQoKICAgICAgOzsgUG9zc2libHkgcmVmaWxsLCB0aGVu IGJ1aWxkIHRoZSBjb21tZW50IGJveC4KICAgICAgKGxldCAoKGluZGVudC10YWJzLW1vZGUgbmls KSkKICAgICAgICAocmVib3gtYnVpbGQgcmVmaWxsIHByZXZpb3VzLW1hcmdpbiBzdHlsZSBtYXJr ZWQtcG9pbnQgbW92ZS1wb2ludCkpKQoKICAgIDs7IFJldGFiaWZ5IHRvIHRoZSBsZWZ0IG9ubHkg KGFkYXB0ZWQgZnJvbSB0YWJpZnkuZWwpLgogICAgKGlmIGluZGVudC10YWJzLW1vZGUKICAgICAg ICAobGV0ICgobWFya2VkLWNvbCAocHJvZ24KCQkJICAgIDs7IEZpbGVuYW1lOiByZWJveDIuZWwg aGFjayB0byBnZXQgYXJvdW5kIGVtYWNzCgkJCSAgICA7OyBidWcsIGlmIHRoaXMgZm9ybWF0IGxp bmUgaXNuJ3QgaGVyZSBhbmQKCQkJICAgIDs7IGBpbmRlbnQtdGFicy1tb2RlJyBpcyB0LAoJCQkg ICAgOzsgcmVib3gtYmVnaW5uaW5nLW9mLWxpbmUgZG9lc24ndCB3b3JrIGFzCgkJCSAgICA7OyBl eHBlY3RlZAo7CQkJICAgIChmb3JtYXQgIiVzIiBtYXJrZWQtcG9pbnQpCgkJCSAgICAoZ290by1j aGFyIG1hcmtlZC1wb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNv bHVtbikpKSkKICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAgICAod2hp bGUgKHJlLXNlYXJjaC1mb3J3YXJkICJeWyBcdF1bIFx0XSsiIG5pbCB0KQogICAgICAgICAgICAo bGV0ICgoY29sdW1uIChjdXJyZW50LWNvbHVtbikpKQogICAgICAgICAgICAgIChkZWxldGUtcmVn aW9uIChtYXRjaC1iZWdpbm5pbmcgMCkgKHBvaW50KSkKICAgICAgICAgICAgICAoaW5kZW50LXRv IGNvbHVtbikpKQogICAgICAgICAgKGdvdG8tY2hhciBtYXJrZWQtcG9pbnQpCiAgICAgICAgICAo dW5sZXNzICg9IChjdXJyZW50LWNvbHVtbikgbWFya2VkLWNvbCkKICAgICAgICAgICAgKG1vdmUt dG8tY29sdW1uIG1hcmtlZC1jb2wpCiAgICAgICAgICAgIChzZXQtbWFya2VyIG1hcmtlZC1wb2lu dCAocG9pbnQpKSkpCiAgICAgIChnb3RvLWNoYXIgbWFya2VkLXBvaW50KSkKCiAgICA7OyBSZW1v dmUgYWxsIGludGVybWVkaWF0ZSBib3VuZGFyaWVzIGZyb20gdGhlIHVuZG8gbGlzdC4KICAgICh1 bmxlc3MgKGVxIGJ1ZmZlci11bmRvLWxpc3QgdW5kby1saXN0KQogICAgICAobGV0ICgoY3Vyc29y IGJ1ZmZlci11bmRvLWxpc3QpKQogICAgICAgICh3aGlsZSAobm90IChlcSAoY2RyIGN1cnNvcikg dW5kby1saXN0KSkKICAgICAgICAgIChpZiAoY2FyIChjZHIgY3Vyc29yKSkKICAgICAgICAgICAg ICAoc2V0cSBjdXJzb3IgKGNkciBjdXJzb3IpKQogICAgICAgICAgICAocnBsYWNkIGN1cnNvciAo Y2RyIChjZHIgY3Vyc29yKSkpKSkpKSkpCgoKKGRlZnVuIHJlYm94LXN0eWxlLXRvLXZlY3RvciAo bnVtYmVyKQogICJUcmFuc2Zvcm0gYSBzdHlsZSBudW1iZXIgaW50byBhIHZlY3RvciB0cmlwbGV0 LiIKICAodmVjdG9yICgvIG51bWJlciAxMDApICglICgvIG51bWJlciAxMCkgMTApICglIG51bWJl ciAxMCkpKQoMCjs7IENsYXNzaWZpY2F0aW9uIG9mIGJveGVzIChhbmQgYWxzbywgY29uc3RydWN0 aW9uIGRhdGEpLgoKCihkZWZ1biogcmVib3gtZmluZC1hbmQtbmFycm93ICgma2V5IChjb21tZW50 LW9ubHkgdCkpCiJGaW5kIHRoZSBsaW1pdHMgb2YgdGhlIGJsb2NrIG9mIGNvbW1lbnRzIGZvbGxv d2luZyBvciBlbmNsb3NpbmcKdGhlIGN1cnNvciwgb3IgcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBj dXJzb3IgaXMgbm90IHdpdGhpbiBzdWNoIGEKYmxvY2sgb2YgY29tbWVudHMuICBFeHRlbmQgaXQg YXMgZmFyIGFzIHBvc3NpYmxlIGluIGJvdGgKZGlyZWN0aW9ucywgdGhlbiBuYXJyb3cgdGhlIGJ1 ZmZlciBhcm91bmQgaXQuIgogIChsZXQgKChvcmlnLXAgKHBvaW50KSkKICAgICAgICAoaGFzLWNv bW1lbnQtZGVmaW5pdGlvbiAoYW5kIGNvbW1lbnQtc3RhcnQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChub3QgKHplcm9wIChsZW5ndGggY29tbWVudC1zdGFydCkpKSkpCiAg ICAgICAgY29tbWVudC1iIGNvbW1lbnQtZSkKICAgIChpZiBoYXMtY29tbWVudC1kZWZpbml0aW9u CiAgICAgICAgOzsgYXJlIHdlIGluc2lkZSBhIGNvbW1lbnQ/CiAgICAgICAgKHdoZW4gKHByb2du CiAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtYXQtZW9sKSkKICAgICAgICAgICAgICAo cmVib3gtbGluZS1oYXMtY29tbWVudCA6bW92ZS1tdWx0aWxpbmUgbmlsKSkKICAgICAgICAgIChz ZXRxIGNvbW1lbnQtYiAocG9pbnQtYXQtYm9sKSkKICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50 LWF0LWVvbCAwKSkgIDsgcHJldmlvdXMgbGluZSdzIGVvbAogICAgICAgICAgKGNhdGNoICdyb28K ICAgICAgICAgICAgKHdoaWxlIChyZWJveC1saW5lLWhhcy1jb21tZW50IDp0aHJvdy1sYWJlbCAn cm9vKQogICAgICAgICAgICAgIChzZXRxIGNvbW1lbnQtYiAocG9pbnQtYXQtYm9sKSkKICAgICAg ICAgICAgICAoaWYgKGVxIChwb2ludC1hdC1ib2wpIChwb2ludC1taW4pKQogICAgICAgICAgICAg ICAgICAodGhyb3cgJ3JvbyBuaWwpCiAgICAgICAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1h dC1lb2wgMCkpKSkpCiAgICAgICAgICAoZ290by1jaGFyIG9yaWctcCkKICAgICAgICAgIChlbmQt b2YtbGluZSAyKQogICAgICAgICAgKHNldHEgY29tbWVudC1lIChwb2ludC1hdC1ib2wpKQogICAg ICAgICAgKGNhdGNoICdyb28KICAgICAgICAgICAgKHdoaWxlIChyZWJveC1saW5lLWhhcy1jb21t ZW50IDp0aHJvdy1sYWJlbCAncm9vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6bW92ZS1tdWx0aWxpbmUgbmlsKQogICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBv aW50LWF0LWVvbCAyKSkKICAgICAgICAgICAgICAoc2V0cSBjb21tZW50LWUgKHBvaW50LWF0LWJv bCkpCiAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoZXEgKHBvaW50KSAocG9pbnQtbWF4KSkgOyBo aXQgZW9iCiAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChlcSAocG9pbnQpIChwb2ludC1h dC1ib2wpKSkpIDsgZW9iIGlzICpub3QqIG5ld2xpbmUKICAgICAgICAgICAgICAgIDs7IHdlIG5l ZWQgdG8gZW5kIG9uIGEgYmxhbmsgbGluZSBmb3IgcmVib3ggdG8gd29yayBwcm9wZXJseSwKICAg ICAgICAgICAgICAgIDs7IHdlIGRvbid0IGNhbGwgYG5ld2xpbmUnIHRvIGF2b2lkIHJlZmlsbGlu Zy4KICAgICAgICAgICAgICAgIChpbnNlcnQgIlxuIikKICAgICAgICAgICAgICAgIChzZXRxIGNv bW1lbnQtZSAocG9pbnQpKQogICAgICAgICAgICAgICAgKHRocm93ICdyb28gbmlsKSkpKSkpCiAg ICAoZ290by1jaGFyIG9yaWctcCkKICAgICh3aGVuICAoYW5kIChub3QgY29tbWVudC1iKQogICAg ICAgICAgICAgICAgKG5vdCBjb21tZW50LWUpCiAgICAgICAgICAgICAgICAobm90IGNvbW1lbnQt b25seSkpCiAgICAgIDs7IG5vIGNvbW1lbnQgZm9ybWF0IGRlZmluZWQKICAgICAgKHNldHEgY29t bWVudC1iIChpZiAoc2VhcmNoLWJhY2t3YXJkLXJlZ2V4cCByZWJveC1ibGFuay1saW5lLXJlZ2V4 cCBuaWwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZzEKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHBvaW50LWF0LWJvbCAyKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGdvdG8tY2hhciBvcmlnLXApKQogICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQtbWlu KSkpCiAgICAgIChzZXRxIGNvbW1lbnQtZSAoaWYgKHNlYXJjaC1mb3J3YXJkLXJlZ2V4cCByZWJv eC1ibGFuay1saW5lLXJlZ2V4cCBuaWwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv ZzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LWF0LWJvbCAxKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcmlnLXApKQogICAgICAgICAgICAgICAg ICAgICAgICA7OyB3ZSBuZWVkIGEgYmxhbmsgbGluZSBhdCB0aGUgZW5kIG9mIHRoZSBuYXJyb3cK ICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAg ICAgICAgICAgICAgICAgKGluc2VydCAiXG4iKQogICAgICAgICAgICAgICAgICAgICAgICAocG9p bnQpKSkpCiAgICAoaWYgKG9yIChub3QgY29tbWVudC1iKQogICAgICAgICAgICAobm90IGNvbW1l bnQtZSkKICAgICAgICAgICAgKGVxIGNvbW1lbnQtYiBjb21tZW50LWUpKQogICAgICAgIChzaWdu YWwgJ3JlYm94LWNvbW1lbnQtbm90LWZvdW5kLWVycm9yIG5pbCkpCiAgICAobmFycm93LXRvLXJl Z2lvbiBjb21tZW50LWIgY29tbWVudC1lKSkpCgooZGVmdW4gcmVib3gtZ3Vlc3MtbGFuZ3VhZ2Ug KG15LWNvbW1lbnQtc3RhcnQtc3RyKQogICJHdWVzcyB0aGUgbGFuZ3VhZ2UgaW4gdXNlIGJhc2Vk IG9uIHRoZSBjb21tZW50LXN0YXJ0IGNoYXJhY3Rlci4KCnJldHVybnMgZ3Vlc3MgYXMgc2luZ2xl IGRpZ2l0LiIKICAoc2V0cSBteS1jb21tZW50LXN0YXJ0LXN0cgogICAgICAgIChjb25kICgoc3Ry aW5ncCBteS1jb21tZW50LXN0YXJ0LXN0cikKICAgICAgICAgICAgICAgbXktY29tbWVudC1zdGFy dC1zdHIpCiAgICAgICAgICAgICAgKChub3QgbXktY29tbWVudC1zdGFydC1zdHIpCiAgICAgICAg ICAgICAgICIiKQogICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgIChlcnJvciAiaW52YWxp ZCBteS1jb21tZW50LXN0YXJ0LXN0cjogJXMiIG15LWNvbW1lbnQtc3RhcnQtc3RyKSkpKQogIChs ZXQgKChsYW5ndWFnZSAxKQogICAgICAgIChpbmRleCAoMS0gKGxlbmd0aCByZWJveC1yZWdleHAt c3RhcnQpKSkpCiAgICAod2hpbGUgKG5vdCAoemVyb3AgaW5kZXgpKQogICAgICAoaWYgKHN0cmlu Zy1tYXRjaCAoYXJlZiByZWJveC1yZWdleHAtc3RhcnQgaW5kZXgpIG15LWNvbW1lbnQtc3RhcnQt c3RyKQogICAgICAgICAgKHNldHEgbGFuZ3VhZ2UgaW5kZXgKICAgICAgICAgICAgICAgIGluZGV4 IDApCiAgICAgICAgKHNldHEgaW5kZXggKDEtIGluZGV4KSkpKQogICAgbGFuZ3VhZ2UpKQoKOzs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsKOzsgU29tZSBjYWNoaW5nIGlzIHBvc3NpYmxlIGhlcmUgdG8g cmVtZW1iZXIgdGhlIGxhc3QgZm91bmQgc3R5bGUgOzsKOzsgYW5kIHRyeSB0aGF0IGZpcnN0LCBl dGMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKOzsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsK OzsgSG93ZXZlciwgY29tcHV0aW5nIHRpbWUgaXMgY2hlYXAsIG15IHRpbWUgaXMgbm90LiAgICAg ICAgICAgICAgOzsKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKCihkZWZ1biByZWJveC1ndWVzcy1z dHlsZSAoKQogICJHdWVzcyB0aGUgY3VycmVudCBib3ggc3R5bGUgZnJvbSB0aGUgdGV4dCBpbiB0 aGUgd2hvbGUgKG5hcnJvd2VkKSBidWZmZXIuIgogIChsZXQgKChzdHlsZS1kYXRhIHJlYm94LXN0 eWxlLWRhdGEpCiAgICAgICAgYmVzdC1zdHlsZSBiZXN0LXdlaWdodCkKICAgIDs7IExldCdzIHRy eSBhbGwgc3R5bGVzIGluIHR1cm4uICBBIHN0eWxlIGhhcyB0byBtYXRjaCBleGFjdGx5IHRvIGJl CiAgICA7OyBlbGlnaWJsZS4gIE1vcmUgaGVhdnkgaXMgYSBzdHlsZSwgbW9yZSBwcm9uZSBpdCBp cyB0byBiZSByZXRhaW5lZC4KICAgICh3aGlsZSBzdHlsZS1kYXRhCiAgICAgIChsZXQqICgoc3R5 bGUgKGNhYXIgc3R5bGUtZGF0YSkpCiAgICAgICAgICAgICAoZGF0YSAoY2RhciBzdHlsZS1kYXRh KSkKICAgICAgICAgICAgICh3ZWlnaHQgKGFyZWYgZGF0YSAwKSkKICAgICAgICAgICAgIChyZWdl eHAxIChhcmVmIGRhdGEgMSkpCiAgICAgICAgICAgICAocmVnZXhwMiAoYXJlZiBkYXRhIDIpKQog ICAgICAgICAgICAgKHJlZ2V4cDMgKGFyZWYgZGF0YSAzKSkKICAgICAgICAgICAgIChtaW4tbGlu ZXMgKGxlbmd0aCAocmVtb3ZlIG5pbCAobGlzdCByZWdleHAxIHJlZ2V4cDIgcmVnZXhwMykpKSkK ICAgICAgICAgICAgIChsaW1pdCAoY29uZAogICAgICAgICAgICAgICAgICAgICAoKGFuZCBiZXN0 LXdlaWdodCAoPD0gd2VpZ2h0IGJlc3Qtd2VpZ2h0KSkKICAgICAgICAgICAgICAgICAgICAgIG5p bCkKICAgICAgICAgICAgICAgICAgICAgKCg8IChjb3VudC1saW5lcyAocG9pbnQtbWluKSAocG9p bnQtbWF4KSkgbWluLWxpbmVzKQogICAgICAgICAgICAgICAgICAgICAgbmlsKQogICAgICAgICAg ICAgICAgICAgICAoKG5vdCByZWdleHAzKQogICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1h eCkpCiAgICAgICAgICAgICAgICAgICAgICgocHJvZ24gKGdvdG8tY2hhciAocG9pbnQtbWF4KSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIC0xKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0IHJlZ2V4cDMpKQogICAgICAgICAgICAgICAg ICAgICAgKHBvaW50KSkpKSkKICAgICAgICAod2hlbiBsaW1pdAogICAgICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkKICAgICAgICAgIChjb25kICgobm90IHJlZ2V4cDEpKQogICAgICAgICAg ICAgICAgKChsb29raW5nLWF0IHJlZ2V4cDEpIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkpCiAg ICAgICAgICAgICAgICAodCAoc2V0cSBsaW1pdCBuaWwpKSkKICAgICAgICAgICh3aGVuIChhbmQg bGltaXQgcmVnZXhwMikKICAgICAgICAgICAgKHdoaWxlIChhbmQgKDwgKHBvaW50KSBsaW1pdCkg KGxvb2tpbmctYXQgcmVnZXhwMikpCiAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5k IDApKSkKICAgICAgICAgICAgKHVubGVzcyAoPSAocG9pbnQpIGxpbWl0KQogICAgICAgICAgICAg IChzZXRxIGxpbWl0IG5pbCkpKQogICAgICAgICAgKHdoZW4gbGltaXQKICAgICAgICAgICAgKHNl dHEgYmVzdC1zdHlsZSBzdHlsZQogICAgICAgICAgICAgICAgICBiZXN0LXdlaWdodCB3ZWlnaHQp KSkpCiAgICAgIChzZXRxIHN0eWxlLWRhdGEgKGNkciBzdHlsZS1kYXRhKSkpCiAgICBiZXN0LXN0 eWxlKSkKCihkZWZ1biogcmVib3gtbGluZS1oYXMtY29tbWVudCAoJmtleSAobW92ZS1tdWx0aWxp bmUgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdy1sYWJlbCBu aWwpKQogIChsZXQgKChiYXJlLWNvbW1lbnQtZW5kIChhbmQgY29tbWVudC1lbmQgKHJlYm94LXJz dHJpcCAocmVib3gtbHN0cmlwIGNvbW1lbnQtZW5kKSkpKQogICAgICAgIChiYXJlLWNvbW1lbnQt c3RhcnQgKGFuZCBjb21tZW50LXN0YXJ0IChyZWJveC1yc3RyaXAgKHJlYm94LWxzdHJpcCBjb21t ZW50LXN0YXJ0KSkpKQogICAgICAgIChzdGFydGluZy1ib2wgKHBvaW50LWF0LWJvbCkpCiAgICAg ICAgY29tbWVudC1zdGFydC1wb3MKICAgICAgICApCiAgICAoZW5kLW9mLWxpbmUgMSkKICAgIChz ZXRxIGNvbW1lbnQtc3RhcnQtcG9zIChjb21tZW50LWJlZ2lubmluZykpCiAgICAodW5sZXNzIGNv bW1lbnQtc3RhcnQtcG9zCiAgICAgIDs7IEMtc3R5bGUgY29tbWVudHMsIHdlIGNvdWxkIGJlIGlu IHRoZSB3aGl0ZSBzcGFjZSBwYXN0IGNvbW1lbnQgZW5kCiAgICAgICh3aGVuIChhbmQgKHN0cmlu Z3AgY29tbWVudC1lbmQpCiAgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWwgY29tbWVudC1lbmQg IiIpKSkKICAgICAgICAoZ290by1jaGFyIChwb2ludC1hdC1lb2wpKQogICAgICAgIChzZWFyY2gt YmFja3dhcmQtcmVnZXhwIChjb25jYXQgKHJlZ2V4cC1xdW90ZSBiYXJlLWNvbW1lbnQtZW5kKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlsgXHRdKiQiKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludC1hdC1ib2wpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdCkKICAgICAgICAoc2V0cSBjb21tZW50LXN0YXJ0LXBvcyAoY29tbWVu dC1iZWdpbm5pbmcpKSkpCiAgICA7OyBkZXRlY3QgbWlkLWxpbmUgY29tbWVudHMKICAgICh3aGVu IGNvbW1lbnQtc3RhcnQtcG9zCiAgICAgIChnb3RvLWNoYXIgY29tbWVudC1zdGFydC1wb3MpCiAg ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQogICAgICAodW5sZXNzICg9IChwb2ludCkg KHBvaW50LWF0LWJvbCkpCiAgICAgICAgKHNpZ25hbCAncmVib3gtbWlkLWxpbmUtY29tbWVudC1m b3VuZCBuaWwpKSkKICAgIChpZiAoYW5kICg8IChwb2ludCkgc3RhcnRpbmctYm9sKQogICAgICAg ICAgICAgKG5vdCBtb3ZlLW11bHRpbGluZSkpCiAgICAgICAgKGdvdG8tY2hhciBzdGFydGluZy1i b2wpKQogICAgY29tbWVudC1zdGFydC1wb3MpKQoKCihkZWZ1biogcmVib3gtcmVnZXhwLXF1b3Rl IChzdHJpbmcgJmtleSAocnN0cmlwIHQpIChsc3RyaXAgdCkgKG1hdGNoLXRyYWlsaW5nLXNwYWNl cyB0KSkKIlJldHVybiBhIHJlZ2V4cCBtYXRjaGluZyBTVFJJTkcgd2l0aG91dCBpdHMgc3Vycm91 bmRpbmcgc3BhY2UsCm1heWJlIGZvbGxvd2VkIGJ5IHNwYWNlcyBvciB0YWJzLiAgSWYgU1RSSU5H IGlzIG5pbCwgcmV0dXJuIHRoZQplbXB0eSByZWdleHAuCgpXaXRoIG5vLXJzdHJpcCBzcGVjaWZp ZWQsIGRvbid0IHN0cmlwIHNwYWNlcyB0byB0aGUgcmlnaHQuIgogIChjb25kICgobm90IHN0cmlu ZykgIiIpCiAgICAgICAgKChub3QgKHN0cmluZ3Agc3RyaW5nKSkKICAgICAgICAgKGVycm9yICJk ZWJ1ZyBtZSwgcmVib3gtcmVnZXhwLXF1b3RlIGdvdCBub24tc3RyaW5nICVzIiBzdHJpbmcpKQog ICAgICAgICh0CiAgICAgICAgIChhbmQgcnN0cmlwCiAgICAgICAgICAgICAgKHNldHEgc3RyaW5n IChyZWJveC1yc3RyaXAgc3RyaW5nKSkpCiAgICAgICAgIChhbmQgbHN0cmlwCiAgICAgICAgICAg ICAgKHNldHEgc3RyaW5nIChyZWJveC1sc3RyaXAgc3RyaW5nKSkpCiAgICAgICAgIChzZXRxIHN0 cmluZyAocmVnZXhwLXF1b3RlIHN0cmluZykpCiAgICAgICAgIChpZiBtYXRjaC10cmFpbGluZy1z cGFjZXMKICAgICAgICAgICAgIChjb25jYXQgc3RyaW5nICJbIFx0XSoiKQogICAgICAgICAgIHN0 cmluZykpKSkKCgo7OyAtbHctCjs7IHdoZW4gdGhlIGJveCBpcyBqdXN0IG9uZSBjaGFyYWN0ZXIg d2lkZToKICAgICAgICAgIDs7Ozs7OzsKICAgICAgICAgIDs7IGEgOzsKICAgICAgICAgIDs7Ozs7 OzsKOzsgaWYgd2UgbWFrZSB0aGUgcmVnZXggMiBjaGFyYWN0ZXJzIHdpZGUsIGl0IHdvbid0IG1h dGNoLgoKKGRlZnVuIHJlYm94LXJlZ2V4cC1ydWxlciAoY2hhcmFjdGVyKQogICJSZXR1cm4gYSBy ZWdleHAgbWF0Y2hpbmcgb25lIG9yIG1vcmUgcmVwZXRpdGlvbnMgb2YgQ0hBUkFDVEVSLAptYXli ZSBmb2xsb3dlZCBieSBzcGFjZXMgb3IgdGFicy4gIElzIENIQVJBQ1RFUiBpcyBuaWwsIHJldHVy bgp0aGUgZW1wdHkgcmVnZXhwLiIKICAoaWYgY2hhcmFjdGVyCiAgICAgIChjb25jYXQgKHJlZ2V4 cC1xdW90ZSAobWFrZS1zdHJpbmcgMSBjaGFyYWN0ZXIpKSAiK1sgXHRdKiIpCiAgICAiIikpCgoK KGRlZnVuIHJlYm94LXJzdHJpcCAoc3RyaW5nKQogICJSZXR1cm4gc3RyaW5nIHdpdGggdHJhaWxp bmcgc3BhY2VzIHJlbW92ZWQuIgogICh3aGlsZSAoYW5kICg+IChsZW5ndGggc3RyaW5nKSAwKQog ICAgICAgICAgICAgIChtZW1xIChhcmVmIHN0cmluZyAoMS0gKGxlbmd0aCBzdHJpbmcpKSkgJyg/ ICA/XHQpKSkKICAgIChzZXRxIHN0cmluZyAoc3Vic3RyaW5nIHN0cmluZyAwICgxLSAobGVuZ3Ro IHN0cmluZykpKSkpCiAgc3RyaW5nKQoKKGRlZnVuIHJlYm94LWxzdHJpcCAoc3RyaW5nKQogICJS ZXR1cm4gc3RyaW5nIHdpdGggbGVhZGluZyBzcGFjZXMgcmVtb3ZlZC4iCiAgKHdoaWxlIChhbmQg KD4gKGxlbmd0aCBzdHJpbmcpIDApCiAgICAgICAgICAgICAgKG1lbXEgKGFyZWYgc3RyaW5nIDAp ICcoPyAgP1x0KSkpCiAgICAoc2V0cSBzdHJpbmcgKHN1YnN0cmluZyBzdHJpbmcgMSkpKQogIHN0 cmluZwogICkKCgwKOzsgUmVjb25zdHJ1Y3Rpb24gb2YgYm94ZXMuCgooZGVmdW4gcmVib3gtdW5i dWlsZCAoc3R5bGUpCiAgKGxldCogKChkYXRhIChjZHIgKGFzc3Egc3R5bGUgcmVib3gtc3R5bGUt ZGF0YSkpKQogICAgICAgICAobWVyZ2UtbncgKGFyZWYgZGF0YSA0KSkKICAgICAgICAgKG1lcmdl LXNlIChhcmVmIGRhdGEgNSkpCiAgICAgICAgIChudyAoYXJlZiBkYXRhIDYpKQogICAgICAgICAo bm4gKGFyZWYgZGF0YSA3KSkKICAgICAgICAgKG5lIChhcmVmIGRhdGEgOCkpCiAgICAgICAgICh3 dyAoYXJlZiBkYXRhIDkpKQogICAgICAgICAoZWUgKGFyZWYgZGF0YSAxMCkpCiAgICAgICAgIChz dyAoYXJlZiBkYXRhIDExKSkKICAgICAgICAgKHNzIChhcmVmIGRhdGEgMTIpKQogICAgICAgICAo c2UgKGFyZWYgZGF0YSAxMykpCiAgICAgICAgIChudy1yZWdleHAgKGFuZCBudyAocmVnZXhwLXF1 b3RlIG53KSkpCiAgICAgICAgICh3dy1yZWdleHAgKGFuZCB3dyAocmVnZXhwLXF1b3RlIHd3KSkp CiAgICAgICAgIChzdy1yZWdleHAgKGFuZCBzdyAocmVnZXhwLXF1b3RlIHN3KSkpCgogICAgICAg ICBsaW1pdC1tCiAgICAgICAgICkKICAgIDs7IENsZWFuIHVwIGZpcnN0IGxpbmUuCiAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQogICAgKGVuZC1vZi1saW5lKQogICAgKHNraXAtY2hhcnMtYmFj a3dhcmQgIiBcdCIpCiAgICAod2hlbiBuZQogICAgICAobGV0ICgoc3RhcnQgKC0gKHBvaW50KSAo bGVuZ3RoIG5lKSkpKQogICAgICAgICh3aGVuIChhbmQgKD49IHN0YXJ0IChwb2ludC1taW4pKQog ICAgICAgICAgICAgICAgICAgKHN0cmluZy1lcXVhbCBuZSAoYnVmZmVyLXN1YnN0cmluZyBzdGFy dCAocG9pbnQpKSkpCiAgICAgICAgICAoZGVsZXRlLWJhY2t3YXJkLWNoYXIgKGxlbmd0aCBuZSkp KSkpCiAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAod2hlbiAoYW5kIG53LXJlZ2V4cCAoc2Vh cmNoLWZvcndhcmQtcmVnZXhwIG53LXJlZ2V4cCAocG9pbnQtYXQtZW9sKSkpCiAgICAgICAgKHJl cGxhY2UtbWF0Y2ggKG1ha2Utc3RyaW5nICgtIChtYXRjaC1lbmQgMCkgKG1hdGNoLWJlZ2lubmlu ZyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyApKSkKICAgICh3aGVu IG5uCiAgICAgIChsZXQgKChjb3VudCAoc2tpcC1jaGFycy1mb3J3YXJkIChjaGFyLXRvLXN0cmlu ZyBubikpKSkKICAgICAgICAoZGVsZXRlLWNoYXIgKC0gY291bnQpKQogICAgICAgIChpbnNlcnQg KG1ha2Utc3RyaW5nIGNvdW50ID8gKSkpKQoKICAgIDs7IENsZWFyIHRoZSB0b3AgYm9yZGVyIGxp bmUuCiAgICA7OwogICAgOzsgSWYgdGhlcmUgd2FzIGFueSB0b3AgYm9yZGVyLCBjbGVhciBpdC4g IEkgdXNlZCB0byB0cnkgdG8ga2VlcAogICAgOzsgdGV4dCBvbiB0aGUgdG9wIGJvcmRlciBsaWtl IHRoZSBDLXN0eWxlIGNvbW1lbnRzOgogICAgOzsKICAgIDs7IC8qIHtUaXRsZX0KICAgIDs7ICAq ICB0ZXh0CiAgICA7OyAgKi8KICAgIDs7CiAgICA7OyBIb3dldmVyLCB3aGVuIHlvdSB1bmJveCBh bmQgdGhlbiByZWJveCwgaXQgYmVjb21lcyB1bmNsZWFyIHdoZXRoZXIKICAgIDs7IHtUaXRsZX0g c2hvdWxkIGJlIGluIHRoZSB0b3AgYm9yZGVyIG9yIHRoZSBib3ggaXRzZWxmLgoKICAgICh3aGVu IChvciBudy1yZWdleHAgbm4gbmUpCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LWF0LWJvbCkpCiAg ICAgIChpZiAobG9va2luZy1hdC1wIHJlYm94LWJsYW5rLWxpbmUtcmVnZXhwKQogICAgICAgICAg KGRlbGV0ZS1yZWdpb24gKHBvaW50KSAocG9pbnQtYXQtYm9sIDIpKQogICAgICAgIChlcnJvciAi VG9wIGJvcmRlciBzaG91bGQgYmUgY2xlYXIgbm93LiAgRGVidWcgbWUuIikpKQogICAgOzsgQ2xl YW4gdXAgbGFzdCBsaW5lLgogICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgIChza2lwLWNo YXJzLWJhY2t3YXJkICIgXHRcbiIpCiAgICAod2hlbiBzZQogICAgICAobGV0ICgoc3RhcnQgKC0g KHBvaW50KSAobGVuZ3RoIHNlKSkpKQogICAgICAgICh3aGVuIChhbmQgKD49IHN0YXJ0IChwb2lu dC1taW4pKQogICAgICAgICAgICAgICAgICAgKHN0cmluZy1lcXVhbCBzZSAoYnVmZmVyLXN1YnN0 cmluZyBzdGFydCAocG9pbnQpKSkpCiAgICAgICAgICAoZGVsZXRlLWJhY2t3YXJkLWNoYXIgKGxl bmd0aCBzZSkpKSkpCiAgICAoZm9yd2FyZC1saW5lIDApCiAgICAod2hlbiAoYW5kIHN3LXJlZ2V4 cCAoc2VhcmNoLWZvcndhcmQtcmVnZXhwIHN3LXJlZ2V4cCAocG9pbnQtYXQtZW9sKSkpCiAgICAg ICAgKHJlcGxhY2UtbWF0Y2ggKG1ha2Utc3RyaW5nICgtIChtYXRjaC1lbmQgMCkgKG1hdGNoLWJl Z2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyApKSkKICAg ICh3aGVuIHNzCiAgICAgIChsZXQgKChjb3VudCAoc2tpcC1jaGFycy1mb3J3YXJkIChjaGFyLXRv LXN0cmluZyBzcykpKSkKICAgICAgICAoZGVsZXRlLWNoYXIgKC0gY291bnQpKQogICAgICAgIChp bnNlcnQgKG1ha2Utc3RyaW5nIGNvdW50ID8gKSkpKQogICAgKHNldHEgbGltaXQtbSAobWFrZS1t YXJrZXIpKQogICAgOzsgaWYgdGhlcmUgd2FzIGFueSBib3R0b20gYm9yZGVyLCBhbmQgaXQncyBu b3cganVzdCBibGFua3MsIGRlbGV0ZSBib3R0b20gbGluZQogICAgKGlmIChvciBzZSBzdy1yZWdl eHAgc3MpCiAgICAgICAgKHByb2duCiAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1hdC1ib2wp KQogICAgICAgICAgKGlmIChsb29raW5nLWF0LXAgcmVib3gtYmxhbmstbGluZS1yZWdleHApCiAg ICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50KSAocG9pbnQtYXQtYm9sIDIpKQogICAg ICAgICAgICAoZXJyb3IgIlRvcCBib3JkZXIgc2hvdWxkIGJlIGNsZWFyIG5vdy4gIERlYnVnIG1l LiIpKQogICAgICAgICAgKHNldC1tYXJrZXIgbGltaXQtbSAocG9pbnQpKSkKICAgICAgKHNldC1t YXJrZXIgbGltaXQtbSAoMSsgKHBvaW50KSkpKQogICAgOzsgQ2xlYW4gdXAgYWxsIGxpbmVzLgog ICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICh3aGlsZSAoPCAocG9pbnQpIGxpbWl0LW0p CiAgICAgIChlbmQtb2YtbGluZSkKICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCiAg ICAgICh3aGVuIGVlCiAgICAgICAgKGxldCAoKHN0YXJ0ICgtIChwb2ludCkgKGxlbmd0aCBlZSkp KSkKICAgICAgICAgICh3aGVuIChhbmQgKD49IHN0YXJ0IChwb2ludC1taW4pKQogICAgICAgICAg ICAgICAgICAgICAoc3RyaW5nLWVxdWFsIGVlIChidWZmZXItc3Vic3RyaW5nIHN0YXJ0IChwb2lu dCkpKSkKICAgICAgICAgICAgKGRlbGV0ZS1iYWNrd2FyZC1jaGFyIChsZW5ndGggZWUpKSkpKQog ICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICh3aGVuIChhbmQgd3ctcmVnZXhwIChzZWFy Y2gtZm9yd2FyZC1yZWdleHAgd3ctcmVnZXhwIChwb2ludC1hdC1lb2wpKSkKICAgICAgICAgIChy ZXBsYWNlLW1hdGNoIChtYWtlLXN0cmluZyAoLSAobWF0Y2gtZW5kIDApIChtYXRjaC1iZWdpbm5p bmcgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyApKSkKICAgICAg KGZvcndhcmQtbGluZSAxKSkpKQoKCihkZWZ1biByZWJveC1idWlsZCAocmVmaWxsIG1hcmdpbiBz dHlsZSBtYXJrZWQtcG9pbnQgbW92ZS1wb2ludCkKIkFmdGVyIHJlZmlsbGluZyBpdCBpZiBSRUZJ TEwgaXMgbm90IG5pbCwgd2hpbGUgcmVzcGVjdGluZyBhIGxlZnQgTUFSR0lOLApwdXQgdGhlIG5h cnJvd2VkIGJ1ZmZlciBiYWNrIGludG8gYSBib3hlZCBjb21tZW50IGFjY29yZGluZyB0bwpib3gg U1RZTEUuIgogIChsZXQqICgoZGF0YSAoY2RyIChhc3NxIHN0eWxlIHJlYm94LXN0eWxlLWRhdGEp KSkKICAgICAgICAgKG1lcmdlLW53IChhcmVmIGRhdGEgNCkpCiAgICAgICAgIChtZXJnZS1zZSAo YXJlZiBkYXRhIDUpKQogICAgICAgICAobncgKGFyZWYgZGF0YSA2KSkKICAgICAgICAgKG5uIChh cmVmIGRhdGEgNykpCiAgICAgICAgIChuZSAoYXJlZiBkYXRhIDgpKQogICAgICAgICAod3cgKGFy ZWYgZGF0YSA5KSkKICAgICAgICAgKGVlIChhcmVmIGRhdGEgMTApKQogICAgICAgICAoc3cgKGFy ZWYgZGF0YSAxMSkpCiAgICAgICAgIChzcyAoYXJlZiBkYXRhIDEyKSkKICAgICAgICAgKHNlIChh cmVmIGRhdGEgMTMpKQogICAgICAgICByaWdodC1tYXJnaW4KICAgICAgICAgY291bnQtdHJhaWxp bmctc3BhY2VzCiAgICAgICAgIGxpbWl0LW0KICAgICAgICAgKQoKICAgIDs7IE1lcmdlIGEgc2hv cnQgZW5kIGRlbGltaXRlciBub3csIHNvIGl0IGdldHMgcmVmaWxsZWQgd2l0aCB0ZXh0LgogICAg KGlmIG1lcmdlLXNlCiAgICAgICAgKHByb2duCiAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1t YXgpKQogICAgICAgICAgKGluc2VydCAiXG4iKQogICAgICAgICAgKGdvdG8tY2hhciAoMS0gKHBv aW50LW1heCkpKQogICAgICAgICAgKHNldHEgbGltaXQtbSAocG9pbnQtbWFya2VyKSkKICAgICAg ICAgIChpbnNlcnQgKG1ha2Utc3RyaW5nIG1hcmdpbiA/ICkKICAgICAgICAgICAgICAgICAgc2Up CiAgICAgICAgICAoc2V0cSBzZSBuaWwpKQogICAgICAoc2V0cSBsaW1pdC1tIChwb2ludC1tYXgt bWFya2VyKSkpCiAgICA7OyBQb3NzaWJseSByZWZpbGwsIGFuZCBhZGp1c3QgbWFyZ2lucyB0byBh Y2NvdW50IGZvciBsZWZ0IGluc2VydHMuCiAgICAoaWYgcmVmaWxsCiAgICAgICAgKGxldCAoOzs7 OyB3aGF0ZXZlciBhZGFwdGl2ZSBmaWxsaW5nIHNob3VsZCB0YWtlIGNhcmUgb2YgdGhpcwogICAg ICAgICAgICAgIChmaWxsLXByZWZpeCAoaWYgKG9yIGFkYXB0aXZlLWZpbGwtbW9kZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGZlYXR1cmVwICdmaWxsYWRhcHQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsYWRhcHQtbW9kZSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1ha2Utc3RyaW5nIG1hcmdpbiA/ICkpKQogICAgICAgICAgICAgIChmaWxsLWNvbHVtbiAo LSBmaWxsLWNvbHVtbiAoKyAobGVuZ3RoIHd3KSAobGVuZ3RoIGVlKSBtYXJnaW4pKSkKICAgICAg ICAgICAgICA7OyBzb21lIGZpbGxpbmcgZnVuY3Rpb25zIHdpbGwgY29uc3VsdCBtYWpvci1tb2Rl IGZvciBmaWxsaW5nCiAgICAgICAgICAgICAgOzsgYWR2aWNlLCB3ZSBkb24ndCB3YW50IHRoaXMg c2luY2Ugd2UndmUgcmVtb3ZlZCB0aGUKICAgICAgICAgICAgICA7OyBjb21tZW50LXN0YXJ0cy4K ICAgICAgICAgICAgICAobWFqb3ItbW9kZSAnZnVuZGFtZW50YWwtbW9kZSkKICAgICAgICAgICAg ICAoZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKQogICAgICAgICAgICAgIChjb21tZW50LWF1 dG8tZmlsbC1vbmx5LWNvbW1lbnRzIG5pbCkKICAgICAgICAgICAgICApCgogICAgICAgICAgKGlm IChlcSByZWZpbGwgJ2F1dG8tZmlsbCkKICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAg ICAgIChzZXRxIGNvdW50LXRyYWlsaW5nLXNwYWNlcyBtYXJrZWQtcG9pbnQpCiAgICAgICAgICAg ICAgICAoZ290by1jaGFyIG1hcmtlZC1wb2ludCkKICAgICAgICAgICAgICAgIChkby1hdXRvLWZp bGwpKQogICAgICAgICAgICAoc2V0cSBjb3VudC10cmFpbGluZy1zcGFjZXMgbmlsKQogICAgICAg ICAgICAoZmlsbC1yZWdpb24gKHBvaW50LW1pbikgbGltaXQtbSkpKQogICAgICAoc2V0cSBjb3Vu dC10cmFpbGluZy1zcGFjZXMgbWFya2VkLXBvaW50KSkKICAgIChzZXRxIHJpZ2h0LW1hcmdpbiAo bWF4ICgrIChyZWJveC1yaWdodC1tYXJnaW4gOmNvdW50LXRyYWlsaW5nLXNwYWNlcyBjb3VudC10 cmFpbGluZy1zcGFjZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHd3 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgbWluaW11bSBib3ggd2lkdGggaXMgMQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKDErIChsZW5ndGggd3cpKSkpCiAgICA7OyBDb25zdHJ1Y3QgdGhlIHRvcCBsaW5l LgogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgIChjb25kIChtZXJnZS1udwogICAgICAg ICAgIChpbnNlcnQgKG1ha2Utc3RyaW5nICgtIG1hcmdpbiAoY3VycmVudC1jb2x1bW4pKSA/ICkK ICAgICAgICAgICAgICAgICAgIG53KQogICAgICAgICAgIChpbnNlcnQgIlxuIikpCiAgICAgICAg ICAoKG9yIG53IG5uIG5lKQogICAgICAgICAgIChpbmRlbnQtdG8gbWFyZ2luKQogICAgICAgICAg ICh3aGVuIG53CiAgICAgICAgICAgICAoaW5zZXJ0IG53KSkKICAgICAgICAgICAoaWYgKG5vdCAo b3Igbm4gbmUpKQogICAgICAgICAgICAgICAoZGVsZXRlLWNoYXIgKC0gKHNraXAtY2hhcnMtYmFj a3dhcmQgIiAiKSkpCiAgICAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoLSByaWdodC1t YXJnaW4gKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChvciBubiA/ICkpKQogICAgICAgICAgICAgKHdoZW4gbmUKICAgICAgICAgICAgICAgKGluc2Vy dCBuZSkpKQogICAgICAgICAgIChpbnNlcnQgIlxuIikpKQogICAgOzsgQ29uc3RydWN0IGFsbCBt aWRkbGUgbGluZXMuCiAgICAod2hpbGUgKDwgKHBvaW50KSBsaW1pdC1tKQogICAgICAod2hlbiAo b3Igd3cgZWUgKC89IChmb2xsb3dpbmctY2hhcikgP1xuKSkKICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyAoLSBtYXJnaW4gKGN1cnJlbnQtY29sdW1uKSkgPyApKQogICAgICAgICh3aGVuIHd3 CiAgICAgICAgICAoaW5zZXJ0IHd3KSkKICAgICAgICAod2hlbiBlZQogICAgICAgICAgKGVuZC1v Zi1saW5lKQogICAgICAgICAgKGluZGVudC10byByaWdodC1tYXJnaW4pCiAgICAgICAgICAoaW5z ZXJ0IGVlKQogICAgICAgICAgKGRlbGV0ZS1jaGFyICgtIChza2lwLWNoYXJzLWJhY2t3YXJkICIg IikpKSkpCiAgICAgIChmb3J3YXJkLWxpbmUgMSkpCiAgICA7OyBDb25zdHJ1Y3QgdGhlIGJvdHRv bSBsaW5lLgogICAgKHdoZW4gKG9yIHN3IHNzIHNlKQogICAgICAoaW5kZW50LXRvIG1hcmdpbikK ICAgICAgKHdoZW4gc3cKICAgICAgICAoaW5zZXJ0IHN3KSkKICAgICAgKGlmIChub3QgKG9yIHNz IHNlKSkKICAgICAgICAgIChkZWxldGUtY2hhciAoLSAoc2tpcC1jaGFycy1iYWNrd2FyZCAiICIp KSkKICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyAoLSByaWdodC1tYXJnaW4gKGN1cnJlbnQt Y29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Igc3MgPyApKSkKICAgICAg ICAod2hlbiBzZQogICAgICAgICAgKGluc2VydCBzZSkpKQogICAgICAoaW5zZXJ0ICJcbiIpKQoK ICAgIChnb3RvLWNoYXIgbWFya2VkLXBvaW50KQogICAgKHdoZW4gbW92ZS1wb2ludAogICAgICA7 OyBmaWd1cmUgb3V0IGlmIHdlJ3ZlIG1vdmVkIHRoZSBtYXJrZWQtcG9pbnQgdG8gYW4gdW5yZWFz b25hYmxlIHBvc2l0aW9uCiAgICAgIChsZXQqICgobXktY29sIChjdXJyZW50LWNvbHVtbikpCiAg ICAgICAgICAgICAobXktbGluZSAobGluZS1udW1iZXItYXQtcG9zKSkKICAgICAgICAgICAgIChw b2ludC1tYXgtbGluZSAobGluZS1udW1iZXItYXQtcG9zIChwb2ludC1tYXgpKSkKICAgICAgICAg ICAgIChtaW4tbGluZSAoaWYgKG9yIG1lcmdlLW53IG53IG5uIG5lKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAyCiAgICAgICAgICAgICAgICAgICAgICAgICAxKSkKICAgICAgICAgICAgICht YXgtbGluZSAoaWYgKG9yIG1lcmdlLXNlIHN3IHNzIHNlKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAoLSBwb2ludC1tYXgtbGluZSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgKC0gcG9p bnQtbWF4LWxpbmUgMSkpKQogICAgICAgICAgICAgKG1pbi1jb2wgKCsgbWFyZ2luIChsZW5ndGgg d3cpKSkKICAgICAgICAgICAgIChtYXgtY29sIHJpZ2h0LW1hcmdpbikKICAgICAgICAgICAgIHRl bXAKICAgICAgICAgICAgICkKICAgICAgICA7OyBtb3ZlIHZlcnRpY2FsbHkKICAgICAgICAoY29u ZCAoKDwgbXktbGluZSBtaW4tbGluZSkKICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSAxKSkK ICAgICAgICAgICAgICAoKD4gbXktbGluZSBtYXgtbGluZSkKICAgICAgICAgICAgICAgKGdvdG8t Y2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSAoMS0gbWF4LWxp bmUpKSkpCiAgICAgICAgOzsgbW92ZSBob3Jpem9udGFsbHkKICAgICAgICAoY29uZCAoKDwgbXkt Y29sIG1pbi1jb2wpCiAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAg ICAgICAgKGZvcndhcmQtY2hhciBtaW4tY29sKQogICAgICAgICAgICAgICAoc2V0cSB0ZW1wIChz a2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpKQogICAgICAgICAgICAgICA7OyBub3RoaW5nIGJ1dCBz cGFjZSBvbiB0aGlzIGxpbmUKICAgICAgICAgICAgICAgKHdoZW4gKGxvb2tpbmctYXQtcCAoY29u Y2F0IChyZWdleHAtcXVvdGUgKGlmIGVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVib3gtbHN0cmlwIGVlKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbIFx0XSokIikpCiAgICAg ICAgICAgICAgICAgKGJhY2t3YXJkLWNoYXIgdGVtcCkpKQogICAgICAgICAgICAgICgoPiBteS1j b2wgbWF4LWNvbCkKICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoKyAocG9pbnQtYXQtYm9sKSBt YXgtY29sKSkKICAgICAgICAgICAgICAgKHNldHEgdGVtcCAoc2tpcC1jaGFycy1iYWNrd2FyZCAi IFx0IikpCiAgICAgICAgICAgICAgICh3aGVuICg8IChjdXJyZW50LWNvbHVtbikgbWluLWNvbCkK ICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgKGZv cndhcmQtY2hhciBtaW4tY29sKSkpKSkKICAgICAgKHVubGVzcyAoPSAocG9pbnQpIG1hcmtlZC1w b2ludCkKICAgICAgICAoc2V0LW1hcmtlciBtYXJrZWQtcG9pbnQgKHBvaW50KSkpKQogICAgKSkK CgooZGVmdW4gcmVib3gtbGVmdC1tYXJnaW4gKCkKIlJldHVybiB0aGUgbWluaW11bSB2YWx1ZSBv ZiB0aGUgbGVmdCBtYXJnaW4gb2YgYWxsIGxpbmVzLCBvciAtMSBpZgphbGwgbGluZXMgYXJlIGVt cHR5LiIKICAobGV0ICgobWFyZ2luIC0xKSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAg ICAod2hpbGUgKGFuZCAobm90ICh6ZXJvcCBtYXJnaW4pKSAobm90IChlb2JwKSkpCiAgICAgIChz a2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCiAgICAgIChsZXQgKChjb2x1bW4gKGN1cnJlbnQtY29s dW1uKSkpCiAgICAgICAgKGFuZCAobm90ICg9IChmb2xsb3dpbmctY2hhcikgP1xuKSkKICAgICAg ICAgICAgIChvciAoPCBtYXJnaW4gMCkgKDwgY29sdW1uIG1hcmdpbikpCiAgICAgICAgICAgICAo c2V0cSBtYXJnaW4gY29sdW1uKSkpCiAgICAgIChmb3J3YXJkLWxpbmUgMSkpCiAgICBtYXJnaW4p KQoKCihkZWZ1biogcmVib3gtcmlnaHQtbWFyZ2luICgma2V5IChjb3VudC10cmFpbGluZy1zcGFj ZXMgdCkpCiAgIlJldHVybiB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgcmlnaHQgbWFyZ2luIG9m IGFsbCBsaW5lcy4KCkNPVU5ULVRSQUlMSU5HLVNQQUNFUyBtYXkgYmUgYSBtYXJrZXIsIGluIHdo aWNoIGNhc2Ugb25seSBzcGFjZXMKb24gdGhhdCBsaW5lLCB1cCB0byB0aGF0IG1hcmtlciB3aWxs IGJlIGNvdW50ZWQuICBuaWwgdG8gbmV2ZXIKY291bnQgdHJhaWxpbmcgc3BhY2VzIG9yIHQgdG8g YWx3YXlzIGNvdW50LgoKIgogIChsZXQgKChtYXJnaW4gMCkpCiAgICAod2hlbiAobWFya2VycCBj b3VudC10cmFpbGluZy1zcGFjZXMpCiAgICAgICh3aGVuIChwcm9nbiAoZ290by1jaGFyIGNvdW50 LXRyYWlsaW5nLXNwYWNlcykKICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0ICJbIFx0XSok IikpCiAgICAgICAgKHNldHEgbWFyZ2luIChjdXJyZW50LWNvbHVtbikpKQogICAgICAoc2V0cSBj b3VudC10cmFpbGluZy1zcGFjZXMgbmlsKSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAg ICAod2hpbGUgKG5vdCAoZW9icCkpCiAgICAgIChlbmQtb2YtbGluZSkKICAgICAgKHVubGVzcyBj b3VudC10cmFpbGluZy1zcGFjZXMKICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0Iikp CiAgICAgIChzZXRxIG1hcmdpbiAobWF4IG1hcmdpbiAoY3VycmVudC1jb2x1bW4pKSkKICAgICAg KGZvcndhcmQtbGluZSAxKSkKICAgICh1bmxlc3MgY291bnQtdHJhaWxpbmctc3BhY2VzCiAgICAg IDs7IHdlIGl0ZXJhdGUgdGhyb3VnaCBsaW5lcyB0d2ljZSB0byBhdm9pZCBleGNlc3MgZGFtYWdl IHRvIG1hcmtlcnMKICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgKHdoaWxlIChu b3QgKGVvYnApKQogICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAod2hlbiAoPiAoY3VycmVu dC1jb2x1bW4pIG1hcmdpbikKICAgICAgICAgIChkZWxldGUtY2hhciAoLSBtYXJnaW4gKGN1cnJl bnQtY29sdW1uKSkpKQogICAgICAgIChmb3J3YXJkLWxpbmUgMSkpKQogICAgbWFyZ2luKSkKCihk ZWZ1biByZWJveC1nZXQtbmV3bGluZS1pbmRlbnQtZnVuY3Rpb24gKCkKICAicmV0dXJuIHByZWZl cnJlZCBuZXdsaW5lLWFuZC1pbmRlbnQgZnVuY3Rpb24iCiAgKHNldHEgcmVib3gtbmV3bGluZS1p bmRlbnQtZnVuY3Rpb24KICAgICAgICAob3IgcmVib3gtbmV3bGluZS1pbmRlbnQtZnVuY3Rpb24K ICAgICAgICAgICAgKGNkciAoYXNzcSBtYWpvci1tb2RlIHJlYm94LW5ld2xpbmUtaW5kZW50LWZ1 bmN0aW9uLWFsaXN0KSkKICAgICAgICAgICAgcmVib3gtbmV3bGluZS1pbmRlbnQtZnVuY3Rpb24t ZGVmYXVsdCkpKQoKKGRlZnVuIHJlYm94LXNhdmUtZW52ICgpCiAgImxvYWQgc29tZSBzZXR0aW5n cyIKICAobWFwYyAobGFtYmRhICh2YXIpCiAgICAgICAgICAocHVzaCAoY29ucyB2YXIgKHN5bWJv bC12YWx1ZSB2YXIpKSByZWJveC1zYXZlLWVudi1hbGlzdCkpCiAgICAgICAgcmVib3gtc2F2ZS1l bnYtdmFycykKICAocHVzaCAoY29ucyAnbWV0YS1jLWZ1bmMgKGxvb2t1cC1rZXkgZ2xvYmFsLW1h cCBbKG1ldGEgYyldKSkgcmVib3gtc2F2ZS1lbnYtYWxpc3QpKQoKKGRlZnVuIHJlYm94LXJlc3Rv cmUtZW52ICgpCiAgImxvYWQgc29tZSBzZXR0aW5ncyIKICAobWFwYyAobGFtYmRhICh2YXIpCiAg ICAgICAgICAoc2V0IHZhciAoY2RyIChhc3NxIHZhciByZWJveC1zYXZlLWVudi1hbGlzdCkpKSkK ICAgICAgICByZWJveC1zYXZlLWVudi12YXJzKSkKCjs7OyBJbml0aWFsaXplIHRoZSBpbnRlcm5h bCBzdHJ1Y3R1cmVzLgoKKHJlYm94LXJlZ2lzdGVyLWFsbC10ZW1wbGF0ZXMpCgoocHJvdmlkZSAn cmVib3gyKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsgcmVib3gyLmVsIGVuZHMgaGVyZQ== --90e6ba5bbb7fd88648049b1ec3b0-- ------------=_1296661622-383-1--