From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Le Wang Newsgroups: gmane.emacs.bugs Subject: bug#7946: Referring to a marker changes Emacs' behaviour. Date: Mon, 31 Jan 2011 14:45:43 +0800 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=90e6ba5bbb7fd88648049b1ec3b0 X-Trace: dough.gmane.org 1296462254 8400 80.91.229.12 (31 Jan 2011 08:24:14 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 31 Jan 2011 08:24:14 +0000 (UTC) To: 7946@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Jan 31 09:24:10 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Pjoze-0007wD-Fx for geb-bug-gnu-emacs@m.gmane.org; Mon, 31 Jan 2011 09:24:09 +0100 Original-Received: from localhost ([127.0.0.1]:52691 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjozN-0006sc-KA for geb-bug-gnu-emacs@m.gmane.org; Mon, 31 Jan 2011 03:19:58 -0500 Original-Received: from [140.186.70.92] (port=41221 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjoMe-0005Tt-AV for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 02:39:57 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjoMd-0007s1-37 for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 02:39:56 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:57887) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjoMc-0007rx-TU for bug-gnu-emacs@gnu.org; Mon, 31 Jan 2011 02:39:55 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1Pjo3Q-0002JK-21; Mon, 31 Jan 2011 02:20:04 -0500 X-Loop: help-debbugs@gnu.org 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: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.12964583598826 (code B ref -1); Mon, 31 Jan 2011 07:20:03 +0000 Original-Received: (at submit) by debbugs.gnu.org; 31 Jan 2011 07:19:19 +0000 Original-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 Original-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 Original-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 Original-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 Original-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 Original-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 Original-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 Original-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= Original-Received: by 10.14.37.130 with SMTP id y2mr2968707eea.24.1296456343913; Sun, 30 Jan 2011 22:45:43 -0800 (PST) Original-Received: by 10.14.119.11 with HTTP; Sun, 30 Jan 2011 22:45:43 -0800 (PST) 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 Resent-Date: Mon, 31 Jan 2011 02:20:04 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.43 X-Mailman-Approved-At: Mon, 31 Jan 2011 03:19:50 -0500 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:43777 Archived-At: --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--