From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: yagnesh raghava Newsgroups: gmane.emacs.bugs Subject: bug#10263: 24.0.92; emacs crash with auto-complete plugin Date: Sat, 10 Dec 2011 10:40:23 +0000 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_" X-Trace: dough.gmane.org 1323543814 10197 80.91.229.12 (10 Dec 2011 19:03:34 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 10 Dec 2011 19:03:34 +0000 (UTC) To: 10263@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Dec 10 20:03:27 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RZSCh-0000t2-9X for geb-bug-gnu-emacs@m.gmane.org; Sat, 10 Dec 2011 20:03:23 +0100 Original-Received: from localhost ([::1]:50265 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZSCg-0007DY-TU for geb-bug-gnu-emacs@m.gmane.org; Sat, 10 Dec 2011 14:03:22 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:49149) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZQCa-000373-3i for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 11:55:15 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZQCT-00043N-0j for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 11:55:08 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:60972) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZQCS-00043I-Rw for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 11:55:00 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1RZQDR-0000Ki-PW for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 11:56:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: yagnesh raghava Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 10 Dec 2011 16:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 10263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: Original-Received: via spool by submit@debbugs.gnu.org id=B.13235361431215 (code B ref -1); Sat, 10 Dec 2011 16:56:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 10 Dec 2011 16:55:43 +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 1RZQD5-0000JL-Gb for submit@debbugs.gnu.org; Sat, 10 Dec 2011 11:55:43 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZKga-0000Qm-7F for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:01:49 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZKfV-0006Ah-BT for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:00:44 -0500 Original-Received: from lists.gnu.org ([140.186.70.17]:54445) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfV-0006Ab-8q for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:00:37 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:42832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfO-0001BN-M3 for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:37 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZKfI-00069D-75 for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:30 -0500 Original-Received: from snt0-omc1-s9.snt0.hotmail.com ([65.55.90.20]:16595) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfH-000699-LD for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:24 -0500 Original-Received: from SNT125-W35 ([65.55.90.7]) by snt0-omc1-s9.snt0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Sat, 10 Dec 2011 02:40:21 -0800 X-Originating-IP: [221.115.36.228] Importance: Normal X-OriginalArrivalTime: 10 Dec 2011 10:40:21.0183 (UTC) FILETIME=[1DB444F0:01CCB728] X-detected-operating-system: by eggs.gnu.org: Windows 2000 SP4, XP SP1+ X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Mailman-Approved-At: Sat, 10 Dec 2011 11:55:38 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Sat, 10 Dec 2011 11:56:01 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-Mailman-Approved-At: Sat, 10 Dec 2011 14:03:19 -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: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:54875 Archived-At: --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: multipart/alternative; boundary="_d185ed41-e455-4c9f-8109-7d2dd82de41c_" --_d185ed41-e455-4c9f-8109-7d2dd82de41c_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable emacs crashing on when writing text in telugu-itrans (infact with any Indian script input method) while auto-complete-mode[1] enabled. I can reproduce this on my ubuntu 11.10 and 10.04. here is how one can reproduce. ---------------------------------------------------- emacs -Q =3B start emacs with out any customizations M-x load-file popup.el =3B file attached to this mail M-x load-file auto-complete.el =3B file attached to this mail M-x switch-to-buffer *scratch* RET M-x auto-complete-mode =3B enable auto-complete-mode C-\ telugu-itrans RET =3B change input method to telugu =3B lets type any word twice for eg: nuvvu nuvvu nuvvu nuvvu ---------------------------------------------------- now emacs crashes Footnotes: [1] http://cx4a.org/software/auto-complete/ = --_d185ed41-e455-4c9f-8109-7d2dd82de41c_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
emacs crashing on when writing text in telugu-itrans (infact with any
In= dian script input method) =3B while auto-complete-mode[1] enabled.
<= br>I can reproduce this on my ubuntu 11.10 and 10.04.

here is how on= e can reproduce.
----------------------------------------------------emacs -Q =3B start emacs with out any customizations
M-x load-file popu= p.el =3B file attached to this mail
M-x load-file auto-complete.el =3B f= ile attached to this mail
M-x switch-to-buffer *scratch* RET
M-x auto= -complete-mode =3B enable auto-complete-mode
C-\ telugu-itrans RET =3B c= hange input method to telugu
=3B lets type any word twice for eg: nuvvu = nuvvu
nuvvu nuvvu
---------------------------------------------------= -

now emacs crashes

Footnotes:
[1] =3B http://cx4a.org= /software/auto-complete/

= --_d185ed41-e455-4c9f-8109-7d2dd82de41c_-- --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: text/x-emacs-lisp Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="popup.el" Ozs7IHBvcHVwLmVsIC0tLSBWaXN1YWwgcG9wdXAgaW50ZXJmYWNlCgo7OyBDb3B5cmlnaHQgKEMp IDIwMDksIDIwMTAgIFRvbW9oaXJvIE1hdHN1eWFtYQoKOzsgQXV0aG9yOiBUb21vaGlybyBNYXRz dXlhbWEgPHRvbW9AY3g0YS5vcmc+Cjs7IEtleXdvcmRzOiBsaXNwCjs7IFZlcnNpb246IDAuNAoK OzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7 OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KCjs7OyBDb21tZW50YXJ5OgoKOzsgCgo7OzsgQ29kZToKCihldmFsLXdo ZW4tY29tcGlsZQogIChyZXF1aXJlICdjbCkpCgoMCgo7OyBVdGlsaXRpZXMKCihkZWZ2YXIgcG9w dXAtdXNlLW9wdGltaXplZC1jb2x1bW4tY29tcHV0YXRpb24gdAogICJVc2Ugb3B0aW1pemVkIGNv bHVtbiBjb21wdXRhdGlvbiByb3V0aW5lLgpJZiB0aGVyZSBpcyBhIHByb2JsZW0sIHBsZWFzZSBz ZXQgaXQgdG8gbmlsLiIpCgo7OyBCb3Jyb3dlZCBmcm9tIGFueXRoaW5nLmVsCihkZWZtYWNybyBw b3B1cC1haWYgKHRlc3QtZm9ybSB0aGVuLWZvcm0gJnJlc3QgZWxzZS1mb3JtcykKICAiQW5hcGhv cmljIGlmLiBUZW1wb3JhcnkgdmFyaWFibGUgYGl0JyBpcyB0aGUgcmVzdWx0IG9mIHRlc3QtZm9y bS4iCiAgKGRlY2xhcmUgKGluZGVudCAyKSkKICBgKGxldCAoKGl0ICx0ZXN0LWZvcm0pKQogICAg IChpZiBpdCAsdGhlbi1mb3JtICxAZWxzZS1mb3JtcykpKQoKKGRlZnVuIHBvcHVwLXgtdG8tc3Ry aW5nICh4KQogICJDb252ZXJ0IGFueSBvYmplY3QgdG8gc3RyaW5nIGVmZmVjaWVudGx5LgpUaGlz IGlzIGZhc3RlciB0aGFuIHByaW4xLXRvLXN0cmluZyBpbiBtYW55IGNhc2VzLiIKICAodHlwZWNh c2UgeAogICAgKHN0cmluZyB4KQogICAgKHN5bWJvbCAoc3ltYm9sLW5hbWUgeCkpCiAgICAoaW50 ZWdlciAobnVtYmVyLXRvLXN0cmluZyB4KSkKICAgIChmbG9hdCAobnVtYmVyLXRvLXN0cmluZyB4 KSkKICAgICh0IChmb3JtYXQgIiVzIiB4KSkpKQoKKGRlZnVuIHBvcHVwLXN1YnN0cmluZy1ieS13 aWR0aCAoc3RyaW5nIHdpZHRoKQogICJSZXR1cm4gY29ucyBvZiBzdWJzdHJpbmcgYW5kIHJlbWFp bmluZyBzdHJpbmcgYnkgYFdJRFRIJy4iCiAgOzsgRXhwYW5kIHRhYnMgd2l0aCA0IHNwYWNlcwog IChzZXRxIHN0cmluZyAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJcdCIgIiAgICAiIHN0cmlu ZykpCiAgKGxvb3Agd2l0aCBsZW4gPSAobGVuZ3RoIHN0cmluZykKICAgICAgICB3aXRoIHcgPSAw CiAgICAgICAgZm9yIGwgZnJvbSAwCiAgICAgICAgZm9yIGMgaW4gKGFwcGVuZCBzdHJpbmcgbmls KQogICAgICAgIHdoaWxlICg8PSAoaW5jZiB3IChjaGFyLXdpZHRoIGMpKSB3aWR0aCkKICAgICAg ICBmaW5hbGx5IHJldHVybgogICAgICAgIChpZiAoPCBsIGxlbikKICAgICAgICAgICAgKGNvbnMg KHN1YnN0cmluZyBzdHJpbmcgMCBsKSAoc3Vic3RyaW5nIHN0cmluZyBsKSkKICAgICAgICAgIChs aXN0IHN0cmluZykpKSkKCihkZWZ1biBwb3B1cC1maWxsLXN0cmluZyAoc3RyaW5nICZvcHRpb25h bCB3aWR0aCBtYXgtd2lkdGgganVzdGlmeSBzcXVlZXplKQogICJTcGxpdCBTVFJJTkcgaW50byBm aXhlZCB3aWR0aCBzdHJpbmdzIGFuZCByZXR1cm4gYSBjb25zIGNlbGwgbGlrZQpcKFdJRFRIIC4g Uk9XUykuIEhlcmUsIHRoZSBjYXIgV0lEVEggaW5kaWNhdGVzIHRoZSBhY3R1YWwgbWF4aW0gd2lk dGggb2YgUk9XUy4KClRoZSBhcmd1bWVudCBXSURUSCBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIGZp bGxpbmcgZWFjaCBwYXJhZ3JhcGguIFdJRFRIIG5pbAptZWFucyBkb24ndCBwZXJmb3JtIGFueSBq dXN0aWZpY2F0aW9uIGFuZCB3b3JkIHdyYXAuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uCmRvZXNu J3QgYWRkIGFueSBwYWRkaW5nIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiBlYWNoIHJvdy4KCk1B WC1XSURUSCwgaWYgV0lEVEggaXMgbmlsLCBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9m IGNvbHVtbnMuCgpUaGUgb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IEpVU1RJRlkgc3BlY2lmaWVz IHdoaWNoIGtpbmQgb2YganVzdGlmaWNhdGlvbgp0byBkbzogYGZ1bGwnLCBgbGVmdCcsIGByaWdo dCcsIGBjZW50ZXInLCBvciBgbm9uZScgKGVxdWl2YWxlbnQgdG8gbmlsKS4KQSB2YWx1ZSBvZiB0 IG1lYW5zIGhhbmRsZSBlYWNoIHBhcmFncmFwaCBhcyBzcGVjaWZpZWQgYnkgaXRzIHRleHQgcHJv cGVydGllcy4KClNRVUVFWkUgbmlsIG1lYW5zIGxlYXZlIHdoaXRlc3BhY2VzIG90aGVyIHRoYW4g bGluZSBicmVha3MgdW50b3VjaGVkLiIKICAoaWYgKGVxIHdpZHRoIDApCiAgICAgIChlcnJvciAi Q2FuJ3QgZmlsbCBzdHJpbmcgd2l0aCAwIHdpZHRoIikpCiAgKGlmIHdpZHRoCiAgICAgIChzZXRx IG1heC13aWR0aCB3aWR0aCkpCiAgKHdpdGgtdGVtcC1idWZmZXIKICAgIChsZXQgKCh0YWItd2lk dGggNCkKICAgICAgICAgIChmaWxsLWNvbHVtbiB3aWR0aCkKICAgICAgICAgIChsZWZ0LW1hcmdp biAwKQogICAgICAgICAgKGtpbnNva3UtbGltaXQgMSkKICAgICAgICAgIGluZGVudC10YWJzLW1v ZGUKICAgICAgICAgIHJvdyByb3dzKQogICAgICAoaW5zZXJ0IHN0cmluZykKICAgICAgKHVudGFi aWZ5IChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAoaWYgd2lkdGgKICAgICAgICAgIChm aWxsLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBqdXN0aWZ5IChub3Qgc3F1ZWV6ZSkp KQogICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAoc2V0cSB3aWR0aCAwKQogICAg ICAod2hpbGUgKHByb2cyCiAgICAgICAgICAgICAgICAgKGxldCAoKGxpbmUgKGJ1ZmZlci1zdWJz dHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSAocHJvZ24gKGVuZC1v Zi1saW5lKSAocG9pbnQpKSkpKQogICAgICAgICAgICAgICAgICAgKGlmIG1heC13aWR0aAogICAg ICAgICAgICAgICAgICAgICAgICh3aGlsZSAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSByb3cgKHRydW5jYXRlLXN0cmluZy10by13aWR0aCBsaW5lIG1heC13aWR0 aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAobWF4IHdpZHRo IChzdHJpbmctd2lkdGggcm93KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1 c2ggcm93IHJvd3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChub3QgKD0g KGxlbmd0aCByb3cpIChsZW5ndGggbGluZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBsaW5lIChzdWJzdHJpbmcgbGluZSAobGVuZ3RoIHJvdykpKSkpKQogICAg ICAgICAgICAgICAgICAgICAoc2V0cSB3aWR0aCAobWF4IHdpZHRoIChzdHJpbmctd2lkdGggbGlu ZSkpKQogICAgICAgICAgICAgICAgICAgICAocHVzaCBsaW5lIHJvd3MpKSkKICAgICAgICAgICAg ICAgICAoPCAocG9pbnQpIChwb2ludC1tYXgpKQogICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9m LWxpbmUgMikpKQogICAgICAoY29ucyB3aWR0aCAobnJldmVyc2Ugcm93cykpKSkpCgooZGVmbWFj cm8gcG9wdXAtc2F2ZS1idWZmZXItc3RhdGUgKCZyZXN0IGJvZHkpCiAgKGRlY2xhcmUgKGluZGVu dCAwKSkKICBgKHNhdmUtZXhjdXJzaW9uCiAgICAgKGxldCAoKGJ1ZmZlci11bmRvLWxpc3QgdCkK ICAgICAgICAgICAoYnVmZmVyLXJlYWQtb25seSBuaWwpCiAgICAgICAgICAgKG1vZGlmaWVkIChi dWZmZXItbW9kaWZpZWQtcCkpKQogICAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICAgKHBy b2duICxAYm9keSkKICAgICAgICAgKHNldC1idWZmZXItbW9kaWZpZWQtcCBtb2RpZmllZCkpKSkp CiAgCihkZWZ1biBwb3B1cC1wcmVmZXJyZWQtd2lkdGggKGxpc3QpCiAgIlJldHVybiBwcmVmZXJy ZWQgd2lkdGggb2YgcG9wdXAgdG8gc2hvdyBgTElTVCcgYmVhdXRpZnVsbHkuIgogIChsb29wIHdp dGggdGFiLXdpZHRoID0gNAogICAgICAgIGZvciBpdGVtIGluIGxpc3QKICAgICAgICBmb3Igc3Vt bWFyeSA9IChwb3B1cC1pdGVtLXN1bW1hcnkgaXRlbSkKICAgICAgICBtYXhpbWl6ZSAoc3RyaW5n LXdpZHRoIChwb3B1cC14LXRvLXN0cmluZyBpdGVtKSkgaW50byB3aWR0aAogICAgICAgIGlmIChz dHJpbmdwIHN1bW1hcnkpCiAgICAgICAgbWF4aW1pemUgKCsgKHN0cmluZy13aWR0aCBzdW1tYXJ5 KSAyKSBpbnRvIHN1bW1hcnktd2lkdGgKICAgICAgICBmaW5hbGx5IHJldHVybiAoKiAoY2VpbGlu ZyAoLyAoKyAob3Igd2lkdGggMCkgKG9yIHN1bW1hcnktd2lkdGggMCkpIDEwLjApKSAxMCkpKQoK Ozsgd2luZG93LWZ1bGwtd2lkdGgtcCBpcyBub3QgZGVmaW5lZCBpbiBFbWFjcyAyMi4xCihkZWZ1 biBwb3B1cC13aW5kb3ctZnVsbC13aWR0aC1wICgmb3B0aW9uYWwgd2luZG93KQogIChpZiAoZmJv dW5kcCAnd2luZG93LWZ1bGwtd2lkdGgtcCkKICAgICAgKHdpbmRvdy1mdWxsLXdpZHRoLXAgd2lu ZG93KQogICAgKD0gKHdpbmRvdy13aWR0aCB3aW5kb3cpIChmcmFtZS13aWR0aCAod2luZG93LWZy YW1lIChvciB3aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpKSkpKSkKCjs7IHRydW5jYXRlZC1wYXJ0 aWFsLXdpZHRoLXdpbmRvdy1wIGlzIG5vdCBkZWZpbmVkIGluIEVtYWNzIDIyCihkZWZ1biBwb3B1 cC10cnVuY2F0ZWQtcGFydGlhbC13aWR0aC13aW5kb3ctcCAoJm9wdGlvbmFsIHdpbmRvdykKICAo dW5sZXNzIHdpbmRvdwogICAgKHNldHEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKSkKICAodW5s ZXNzIChwb3B1cC13aW5kb3ctZnVsbC13aWR0aC1wIHdpbmRvdykKICAgIChsZXQgKCh0LXAtdy13 IChidWZmZXItbG9jYWwtdmFsdWUgJ3RydW5jYXRlLXBhcnRpYWwtd2lkdGgtd2luZG93cwoJCQkJ ICAgICAgICh3aW5kb3ctYnVmZmVyIHdpbmRvdykpKSkKICAgICAgKGlmIChpbnRlZ2VycCB0LXAt dy13KQoJICAoPCAod2luZG93LXdpZHRoIHdpbmRvdykgdC1wLXctdykKCXQtcC13LXcpKSkpCgoo ZGVmdW4gcG9wdXAtY3VycmVudC1waHlzaWNhbC1jb2x1bW4gKCkKICAob3IgKHdoZW4gKGFuZCBw b3B1cC11c2Utb3B0aW1pemVkLWNvbHVtbi1jb21wdXRhdGlvbgogICAgICAgICAgICAgICAgIChl cSAod2luZG93LWhzY3JvbGwpIDApKQogICAgICAgIChsZXQgKChjdXJyZW50LWNvbHVtbiAoY3Vy cmVudC1jb2x1bW4pKSkKICAgICAgICAgIChpZiAob3IgKHBvcHVwLXRydW5jYXRlZC1wYXJ0aWFs LXdpZHRoLXdpbmRvdy1wKQogICAgICAgICAgICAgICAgICB0cnVuY2F0ZS1saW5lcwogICAgICAg ICAgICAgICAgICAoPCBjdXJyZW50LWNvbHVtbiAod2luZG93LXdpZHRoKSkpCiAgICAgICAgICAg ICAgY3VycmVudC1jb2x1bW4pKSkKICAgICAgKGNhciAocG9zbi1jb2wtcm93IChwb3NuLWF0LXBv aW50KSkpKSkKCihkZWZ1biBwb3B1cC1sYXN0LWxpbmUtb2YtYnVmZmVyLXAgKCkKICAoc2F2ZS1l eGN1cnNpb24gKGVuZC1vZi1saW5lKSAoLz0gKGZvcndhcmQtbGluZSkgMCkpKQoKKGRlZnVuIHBv cHVwLWxvb2t1cC1rZXktYnktZXZlbnQgKGZ1bmN0aW9uIGV2ZW50KQogIChvciAoZnVuY2FsbCBm dW5jdGlvbiAodmVjdG9yIGV2ZW50KSkKICAgICAgKGlmIChzeW1ib2xwIGV2ZW50KQogICAgICAg ICAgKHBvcHVwLWFpZiAoZ2V0IGV2ZW50ICdldmVudC1zeW1ib2wtZWxlbWVudC1tYXNrKQogICAg ICAgICAgICAgIChmdW5jYWxsIGZ1bmN0aW9uICh2ZWN0b3IgKGxvZ2lvciAob3IgKGdldCAoY2Fy IGl0KSAnYXNjaWktY2hhcmFjdGVyKSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY2FkciBpdCkpKSkpKSkpCgoMCgo7OyBQb3B1cCBjb21tb24KCihk ZWZncm91cCBwb3B1cCBuaWwKICAiVmlzdWFsIHBvcHVwIGludGVyZmFjZSIKICA6Z3JvdXAgJ2xp c3AKICA6cHJlZml4ICJwb3B1cC0iKQoKKGRlZmZhY2UgcG9wdXAtZmFjZQogICcoKHQgKDpiYWNr Z3JvdW5kICJsaWdodGdyYXkiIDpmb3JlZ3JvdW5kICJibGFjayIpKSkKICAiRmFjZSBmb3IgcG9w dXAuIgogIDpncm91cCAncG9wdXApCgooZGVmZmFjZSBwb3B1cC1zY3JvbGwtYmFyLWZvcmVncm91 bmQtZmFjZQogICcoKHQgKDpiYWNrZ3JvdW5kICJibGFjayIpKSkKICAiRm9yZWdyb3VuZCBmYWNl IGZvciBzY3JvbGwtYmFyLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZmZhY2UgcG9wdXAtc2Nyb2xs LWJhci1iYWNrZ3JvdW5kLWZhY2UKICAnKCh0ICg6YmFja2dyb3VuZCAiZ3JheSIpKSkKICAiQmFj a2dyb3VuZCBmYWNlIGZvciBzY3JvbGwtYmFyLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZnZhciBw b3B1cC1pbnN0YW5jZXMgbmlsCiAgIlBvcHVwIGluc3RhbmNlcy4iKQoKKGRlZnZhciBwb3B1cC1z Y3JvbGwtYmFyLWZvcmVncm91bmQtY2hhcgogIChwcm9wZXJ0aXplICIgIiAnZmFjZSAncG9wdXAt c2Nyb2xsLWJhci1mb3JlZ3JvdW5kLWZhY2UpCiAgIkZvcmVncm91bmQgY2hhcmFjdGVyIGZvciBz Y3JvbGwtYmFyLiIpCgooZGVmdmFyIHBvcHVwLXNjcm9sbC1iYXItYmFja2dyb3VuZC1jaGFyCiAg KHByb3BlcnRpemUgIiAiICdmYWNlICdwb3B1cC1zY3JvbGwtYmFyLWJhY2tncm91bmQtZmFjZSkK ICAiQmFja2dyb3VuZCBjaGFyYWN0ZXIgZm9yIHNjcm9sbC1iYXIuIikKCihkZWZzdHJ1Y3QgcG9w dXAKICBwb2ludCByb3cgY29sdW1uIHdpZHRoIGhlaWdodCBtaW4taGVpZ2h0IGRpcmVjdGlvbiBv dmVybGF5cwogIHBhcmVudCBkZXB0aAogIGZhY2Ugc2VsZWN0aW9uLWZhY2UKICBtYXJnaW4tbGVm dCBtYXJnaW4tcmlnaHQgbWFyZ2luLWxlZnQtY2FuY2VsIHNjcm9sbC1iYXIgc3ltYm9sCiAgY3Vy c29yIG9mZnNldCBzY3JvbGwtdG9wIGN1cnJlbnQtaGVpZ2h0IGxpc3QgbmV3bGluZXMKICBwYXR0 ZXJuIG9yaWdpbmFsLWxpc3QpCgooZGVmdW4gcG9wdXAtaXRlbS1wcm9wZXJ0aXplIChpdGVtICZy ZXN0IHByb3BlcnRpZXMpCiAgIlNhbWUgdG8gYHByb3BlcnRpemVgIGJ1dCB0aGlzIGF2b2lkcyBv dmVycmlkaW5nIGV4aXN0ZWQgdmFsdWUgd2l0aCBgbmlsYCBwcm9wZXJ0eS4iCiAgKGxldCAocHJv cHMpCiAgICAod2hpbGUgcHJvcGVydGllcwogICAgICAod2hlbiAoY2FkciBwcm9wZXJ0aWVzKQog ICAgICAgIChwdXNoIChjYXIgcHJvcGVydGllcykgcHJvcHMpCiAgICAgICAgKHB1c2ggKGNhZHIg cHJvcGVydGllcykgcHJvcHMpKQogICAgICAoc2V0cSBwcm9wZXJ0aWVzIChjZGRyIHByb3BlcnRp ZXMpKSkKICAgIChhcHBseSAncHJvcGVydGl6ZQogICAgICAgICAgIChwb3B1cC14LXRvLXN0cmlu ZyBpdGVtKQogICAgICAgICAgIChucmV2ZXJzZSBwcm9wcykpKSkKCihkZWZ1biBwb3B1cC1pdGVt LXByb3BlcnR5IChpdGVtIHByb3BlcnR5KQogIChpZiAoc3RyaW5ncCBpdGVtKQogICAgICAoZ2V0 LXRleHQtcHJvcGVydHkgMCBwcm9wZXJ0eSBpdGVtKSkpCgooZGVmdW4qIHBvcHVwLW1ha2UtaXRl bSAobmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAg ICAgICAgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwLWZhY2UKICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGVjdGlvbi1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICBz dWJsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudAogICAgICAgICAgICAgICAg ICAgICAgICAgc3ltYm9sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5KQogICJVdGls aXR5IGZ1bmN0aW9uIHRvIG1ha2UgcG9wdXAgaXRlbS4KU2VlIGFsc28gYHBvcHVwLWl0ZW0tcHJv cGVydGl6ZScuIgogIChwb3B1cC1pdGVtLXByb3BlcnRpemUgbmFtZQogICAgICAgICAgICAgICAg ICAgICAgICAgJ3ZhbHVlIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtZmFj ZSBwb3B1cC1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0aW9uLWZhY2Ugc2Vs ZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICdkb2N1bWVudCBkb2N1bWVudAog ICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bWJvbCBzeW1ib2wKICAgICAgICAgICAgICAgICAg ICAgICAgICdzdW1tYXJ5IHN1bW1hcnkKICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJsaXN0 IHN1Ymxpc3QpKQoKKGRlZnN1YnN0IHBvcHVwLWl0ZW0tdmFsdWUgKGl0ZW0pICAgICAgICAgICAg ICAgKHBvcHVwLWl0ZW0tcHJvcGVydHkgaXRlbSAndmFsdWUpKQooZGVmc3Vic3QgcG9wdXAtaXRl bS12YWx1ZS1vci1zZWxmIChpdGVtKSAgICAgICAob3IgKHBvcHVwLWl0ZW0tdmFsdWUgaXRlbSkg aXRlbSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLXBvcHVwLWZhY2UgKGl0ZW0pICAgICAgICAgIChw b3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ3BvcHVwLWZhY2UpKQooZGVmc3Vic3QgcG9wdXAtaXRl bS1zZWxlY3Rpb24tZmFjZSAoaXRlbSkgICAgICAocG9wdXAtaXRlbS1wcm9wZXJ0eSBpdGVtICdz ZWxlY3Rpb24tZmFjZSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLWRvY3VtZW50IChpdGVtKSAgICAg ICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ2RvY3VtZW50KSkKKGRlZnN1YnN0IHBv cHVwLWl0ZW0tc3VtbWFyeSAoaXRlbSkgICAgICAgICAgICAgKHBvcHVwLWl0ZW0tcHJvcGVydHkg aXRlbSAnc3VtbWFyeSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLXN5bWJvbCAoaXRlbSkgICAgICAg ICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ3N5bWJvbCkpCihkZWZzdWJzdCBwb3B1 cC1pdGVtLXN1Ymxpc3QgKGl0ZW0pICAgICAgICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0 ZW0gJ3N1Ymxpc3QpKQoKKGRlZnVuIHBvcHVwLWl0ZW0tZG9jdW1lbnRhdGlvbiAoaXRlbSkKICAo bGV0ICgoZG9jIChwb3B1cC1pdGVtLWRvY3VtZW50IGl0ZW0pKSkKICAgIChpZiAoZnVuY3Rpb25w IGRvYykKICAgICAgICAoc2V0cSBkb2MgKGZ1bmNhbGwgZG9jIChwb3B1cC1pdGVtLXZhbHVlLW9y LXNlbGYgaXRlbSkpKSkKICAgIGRvYykpCgooZGVmdW4gcG9wdXAtaXRlbS1zaG93LWhlbHAtMSAo aXRlbSkKICAobGV0ICgoZG9jIChwb3B1cC1pdGVtLWRvY3VtZW50YXRpb24gaXRlbSkpKQogICAg KHdoZW4gZG9jCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAi ICpQb3B1cCBIZWxwKiIpCiAgICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgICAoaW5zZXJ0IGRv YykKICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgIChkaXNwbGF5LWJ1ZmZl ciAoY3VycmVudC1idWZmZXIpKSkKICAgICAgdCkpKQoKKGRlZnVuIHBvcHVwLWl0ZW0tc2hvdy1o ZWxwIChpdGVtICZvcHRpb25hbCBwZXJzaXN0KQogICh3aGVuIGl0ZW0KICAgIChpZiAobm90IHBl cnNpc3QpCiAgICAgICAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAgICAgICAgKHdoZW4gKHBv cHVwLWl0ZW0tc2hvdy1oZWxwLTEgaXRlbSkKICAgICAgICAgICAgKGJsb2NrIG5pbAogICAgICAg ICAgICAgICh3aGlsZSB0CiAgICAgICAgICAgICAgICAoY2xlYXItdGhpcy1jb21tYW5kLWtleXMp CiAgICAgICAgICAgICAgICAobGV0ICgoa2V5IChyZWFkLWtleS1zZXF1ZW5jZS12ZWN0b3Igbmls KSkpCiAgICAgICAgICAgICAgICAgIChjYXNlIChrZXktYmluZGluZyBrZXkpCiAgICAgICAgICAg ICAgICAgICAgKCdzY3JvbGwtb3RoZXItd2luZG93CiAgICAgICAgICAgICAgICAgICAgIChzY3Jv bGwtb3RoZXItd2luZG93KSkKICAgICAgICAgICAgICAgICAgICAoJ3Njcm9sbC1vdGhlci13aW5k b3ctZG93bgogICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3duIG5p bCkpCiAgICAgICAgICAgICAgICAgICAgKHQKICAgICAgICAgICAgICAgICAgICAgKHNldHEgdW5y ZWFkLWNvbW1hbmQtZXZlbnRzIChhcHBlbmQga2V5IHVucmVhZC1jb21tYW5kLWV2ZW50cykpCiAg ICAgICAgICAgICAgICAgICAgIChyZXR1cm4pKSkpKSkpKQogICAgICAocG9wdXAtaXRlbS1zaG93 LWhlbHAtMSBpdGVtKSkpKQoKKGRlZnVuIHBvcHVwLXNldC1saXN0IChwb3B1cCBsaXN0KQogIChw b3B1cC1zZXQtZmlsdGVyZWQtbGlzdCBwb3B1cCBsaXN0KQogIChzZXRmIChwb3B1cC1wYXR0ZXJu IHBvcHVwKSBuaWwpCiAgKHNldGYgKHBvcHVwLW9yaWdpbmFsLWxpc3QgcG9wdXApIGxpc3QpKQog IAooZGVmdW4gcG9wdXAtc2V0LWZpbHRlcmVkLWxpc3QgKHBvcHVwIGxpc3QpCiAgKHNldGYgKHBv cHVwLWxpc3QgcG9wdXApIGxpc3QKICAgICAgICAocG9wdXAtb2Zmc2V0IHBvcHVwKSAoaWYgKD4g KHBvcHVwLWRpcmVjdGlvbiBwb3B1cCkgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heCAoLSAocG9wdXAtaGVpZ2h0 IHBvcHVwKSAobGVuZ3RoIGxpc3QpKSAwKSkpKQoKKGRlZnVuIHBvcHVwLXNlbGVjdGVkLWl0ZW0g KHBvcHVwKQogIChudGggKHBvcHVwLWN1cnNvciBwb3B1cCkgKHBvcHVwLWxpc3QgcG9wdXApKSkK CihkZWZ1biBwb3B1cC1zZWxlY3RlZC1saW5lIChwb3B1cCkKICAoLSAocG9wdXAtY3Vyc29yIHBv cHVwKSAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLWxpbmUtb3Zlcmxh eSAocG9wdXAgbGluZSkKICAoYXJlZiAocG9wdXAtb3ZlcmxheXMgcG9wdXApIGxpbmUpKQoKKGRl ZnVuIHBvcHVwLXNlbGVjdGVkLWxpbmUtb3ZlcmxheSAocG9wdXApCiAgKHBvcHVwLWxpbmUtb3Zl cmxheSBwb3B1cCAocG9wdXAtc2VsZWN0ZWQtbGluZSBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLWhp ZGUtbGluZSAocG9wdXAgbGluZSkKICAobGV0ICgob3ZlcmxheSAocG9wdXAtbGluZS1vdmVybGF5 IHBvcHVwIGxpbmUpKSkKICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IG5pbCkKICAg IChvdmVybGF5LXB1dCBvdmVybGF5ICdhZnRlci1zdHJpbmcgbmlsKSkpCgooZGVmdW4gcG9wdXAt bGluZS1oaWRkZW4tcCAocG9wdXAgbGluZSkKICAobGV0ICgob3ZlcmxheSAocG9wdXAtbGluZS1v dmVybGF5IHBvcHVwIGxpbmUpKSkKICAgIChhbmQgKGVxIChvdmVybGF5LWdldCBvdmVybGF5ICdk aXNwbGF5KSBuaWwpCiAgICAgICAgIChlcSAob3ZlcmxheS1nZXQgb3ZlcmxheSAnYWZ0ZXItc3Ry aW5nKSBuaWwpKSkpCgooZGVmdW4gcG9wdXAtc2V0LWxpbmUtaXRlbSAocG9wdXAgbGluZSBpdGVt IGZhY2UgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHNjcm9sbC1iYXItY2hhciBzeW1ib2wgc3Vt bWFyeSkKICAobGV0KiAoKG92ZXJsYXkgKHBvcHVwLWxpbmUtb3ZlcmxheSBwb3B1cCBsaW5lKSkK ICAgICAgICAgKGNvbnRlbnQgKHBvcHVwLWNyZWF0ZS1saW5lLXN0cmluZyBwb3B1cCAocG9wdXAt eC10by1zdHJpbmcgaXRlbSkgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHN5bWJvbCBzdW1tYXJ5 KSkKICAgICAgICAgKHN0YXJ0IDApCiAgICAgICAgIChwcmVmaXggKG92ZXJsYXktZ2V0IG92ZXJs YXkgJ3ByZWZpeCkpCiAgICAgICAgIChwb3N0Zml4IChvdmVybGF5LWdldCBvdmVybGF5ICdwb3N0 Zml4KSkKICAgICAgICAgZW5kKQogICAgOzsgT3ZlcmxhcCBmYWNlIHByb3BlcnRpZXMKICAgIChp ZiAoZ2V0LXRleHQtcHJvcGVydHkgc3RhcnQgJ2ZhY2UgY29udGVudCkKICAgICAgICAoc2V0cSBz dGFydCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlIHN0YXJ0ICdmYWNlIGNvbnRlbnQpKSkK ICAgICh3aGlsZSAoYW5kIHN0YXJ0IChzZXRxIGVuZCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hh bmdlIHN0YXJ0ICdmYWNlIGNvbnRlbnQpKSkKICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IHN0YXJ0 IGVuZCAnZmFjZSBmYWNlIGNvbnRlbnQpCiAgICAgIChzZXRxIHN0YXJ0IChuZXh0LXNpbmdsZS1w cm9wZXJ0eS1jaGFuZ2UgZW5kICdmYWNlIGNvbnRlbnQpKSkKICAgIChpZiBzdGFydAogICAgICAg IChwdXQtdGV4dC1wcm9wZXJ0eSBzdGFydCAobGVuZ3RoIGNvbnRlbnQpICdmYWNlIGZhY2UgY29u dGVudCkpCiAgICAodW5sZXNzIChvdmVybGF5LWdldCBvdmVybGF5ICdkYW5nbGUpCiAgICAgIChv dmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IChjb25jYXQgcHJlZml4IChzdWJzdHJpbmcgY29u dGVudCAwIDEpKSkKICAgICAgKHNldHEgcHJlZml4IG5pbAogICAgICAgICAgICBjb250ZW50IChj b25jYXQgKHN1YnN0cmluZyBjb250ZW50IDEpKSkpCiAgICAob3ZlcmxheS1wdXQgb3ZlcmxheQog ICAgICAgICAgICAgICAgICdhZnRlci1zdHJpbmcKICAgICAgICAgICAgICAgICAoY29uY2F0IHBy ZWZpeAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudAogICAgICAgICAgICAgICAgICAg ICAgICAgc2Nyb2xsLWJhci1jaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0Zml4KSkp KQoKKGRlZnVuIHBvcHVwLWNyZWF0ZS1saW5lLXN0cmluZyAocG9wdXAgc3RyaW5nIG1hcmdpbi1s ZWZ0IG1hcmdpbi1yaWdodCBzeW1ib2wgc3VtbWFyeSkKICAobGV0KiAoKHBvcHVwLXdpZHRoIChw b3B1cC13aWR0aCBwb3B1cCkpCiAgICAgICAgIChzdW1tYXJ5LXdpZHRoIChzdHJpbmctd2lkdGgg c3VtbWFyeSkpCiAgICAgICAgIChzdHJpbmcgKGNhciAocG9wdXAtc3Vic3RyaW5nLWJ5LXdpZHRo IHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo LSBwb3B1cC13aWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKD4gc3VtbWFyeS13aWR0aCAwKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgc3VtbWFyeS13aWR0aCAyKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApKSkpKQogICAg ICAgICAoc3RyaW5nLXdpZHRoIChzdHJpbmctd2lkdGggc3RyaW5nKSkpCiAgICAoY29uY2F0IG1h cmdpbi1sZWZ0CiAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAobWFrZS1zdHJpbmcgKG1h eCAoLSBwb3B1cC13aWR0aCBzdHJpbmctd2lkdGggc3VtbWFyeS13aWR0aCkgMCkgPyApCiAgICAg ICAgICAgIHN1bW1hcnkKICAgICAgICAgICAgc3ltYm9sCiAgICAgICAgICAgIG1hcmdpbi1yaWdo dCkpKQoKKGRlZnVuIHBvcHVwLWxpdmUtcCAocG9wdXApCiAgKGFuZCBwb3B1cCAocG9wdXAtb3Zl cmxheXMgcG9wdXApIHQpKQoKKGRlZnVuIHBvcHVwLWNoaWxkLXBvaW50IChwb3B1cCAmb3B0aW9u YWwgb2Zmc2V0KQogIChvdmVybGF5LWVuZCAocG9wdXAtbGluZS1vdmVybGF5IHBvcHVwCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIG9mZnNldAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocG9wdXAtc2VsZWN0ZWQtbGluZSBwb3B1cCkpKSkpCgoo ZGVmdW4qIHBvcHVwLWNyZWF0ZSAocG9pbnQKICAgICAgICAgICAgICAgICAgICAgIHdpZHRoCiAg ICAgICAgICAgICAgICAgICAgICBoZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICZrZXkKICAg ICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQKICAgICAgICAgICAgICAgICAgICAgIGFyb3Vu ZAogICAgICAgICAgICAgICAgICAgICAgKGZhY2UgJ3BvcHVwLWZhY2UpCiAgICAgICAgICAgICAg ICAgICAgICAoc2VsZWN0aW9uLWZhY2UgZmFjZSkKICAgICAgICAgICAgICAgICAgICAgIHNjcm9s bC1iYXIKICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAg ICAgICBtYXJnaW4tcmlnaHQKICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbAogICAgICAgICAg ICAgICAgICAgICAgcGFyZW50CiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtb2Zmc2V0KQog IChvciBtYXJnaW4tbGVmdCAoc2V0cSBtYXJnaW4tbGVmdCAwKSkKICAob3IgbWFyZ2luLXJpZ2h0 IChzZXRxIG1hcmdpbi1yaWdodCAwKSkKICAodW5sZXNzIHBvaW50CiAgICAoc2V0cSBwb2ludAog ICAgICAgICAgKGlmIHBhcmVudCAocG9wdXAtY2hpbGQtcG9pbnQgcGFyZW50IHBhcmVudC1vZmZz ZXQpIChwb2ludCkpKSkKCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoZ290by1jaGFyIHBvaW50KQog ICAgKGxldCogKChyb3cgKGxpbmUtbnVtYmVyLWF0LXBvcykpCiAgICAgICAgICAgKGNvbHVtbiAo cG9wdXAtY3VycmVudC1waHlzaWNhbC1jb2x1bW4pKQogICAgICAgICAgIChvdmVybGF5cyAobWFr ZS12ZWN0b3IgaGVpZ2h0IG5pbCkpCiAgICAgICAgICAgKHBvcHVwLXdpZHRoICgrIHdpZHRoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzY3JvbGwtYmFyIDEgMCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFy Z2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzeW1ib2wgMiAwKSkpCiAg ICAgICAgICAgbWFyZ2luLWxlZnQtY2FuY2VsCiAgICAgICAgICAgKHdpbmRvdyAoc2VsZWN0ZWQt d2luZG93KSkKICAgICAgICAgICAod2luZG93LXN0YXJ0ICh3aW5kb3ctc3RhcnQpKQogICAgICAg ICAgICh3aW5kb3ctaHNjcm9sbCAod2luZG93LWhzY3JvbGwpKQogICAgICAgICAgICh3aW5kb3ct d2lkdGggKHdpbmRvdy13aWR0aCkpCiAgICAgICAgICAgKHJpZ2h0ICgrIGNvbHVtbiBwb3B1cC13 aWR0aCkpCiAgICAgICAgICAgKG92ZXJmbG93IChhbmQgKD4gcmlnaHQgd2luZG93LXdpZHRoKQog ICAgICAgICAgICAgICAgICAgICAgICAgICg+PSByaWdodCBwb3B1cC13aWR0aCkpKQogICAgICAg ICAgIChmb2xkYWJsZSAoYW5kIChudWxsIHBhcmVudCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAoPj0gY29sdW1uIHBvcHVwLXdpZHRoKSkpCiAgICAgICAgICAgKGRpcmVjdGlvbiAob3IKICAg ICAgICAgICAgICAgICAgICAgICA7OyBDdXJyZW50bHkgdGhlIGRpcmVjdGlvbiBvZiBjYXNjYWRl IHBvcHVwIHdvbid0IGJlIGNoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAoYW5kIHBhcmVu dCAocG9wdXAtZGlyZWN0aW9uIHBhcmVudCkpCgogICAgICAgICAgICAgICAgICAgICAgIDs7IENh bGN1bGF0ZSBkaXJlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGFuZCAoPiByb3cg aGVpZ2h0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+IGhlaWdodCAoLSAobWF4 IDEgKC0gKHdpbmRvdy1oZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoaWYgbW9kZS1saW5lLWZvcm1hdCAxIDApCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgaGVhZGVyLWxp bmUtZm9ybWF0IDEgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY291bnQtbGluZXMgd2luZG93LXN0YXJ0IChwb2ludCkpKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0xCiAgICAgICAgICAgICAgICAgICAgICAgICAxKSkpCiAgICAgICAgICAg KGRlcHRoIChpZiBwYXJlbnQgKDErIChwb3B1cC1kZXB0aCBwYXJlbnQpKSAwKSkKICAgICAgICAg ICAobmV3bGluZXMgKG1heCAwICgrICgtIGhlaWdodCAoY291bnQtbGluZXMgcG9pbnQgKHBvaW50 LW1heCkpKSAoaWYgYXJvdW5kIDEgMCkpKSkKICAgICAgICAgICBjdXJyZW50LWNvbHVtbikKICAg ICAgKHdoZW4gKD4gbmV3bGluZXMgMCkKICAgICAgICAocG9wdXAtc2F2ZS1idWZmZXItc3RhdGUK ICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyBuZXdsaW5lcyA/XG4pKSkpCiAgICAgIAogICAgICAoaWYgb3ZlcmZsb3cKICAgICAg ICAgIChpZiBmb2xkYWJsZQogICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgKGRl Y2YgY29sdW1uICgtIHBvcHVwLXdpZHRoIG1hcmdpbi1sZWZ0IG1hcmdpbi1yaWdodCkpCiAgICAg ICAgICAgICAgICAodW5sZXNzIGFyb3VuZCAobW92ZS10by1jb2x1bW4gY29sdW1uKSkpCiAgICAg ICAgICAgICh3aGVuIChub3QgdHJ1bmNhdGUtbGluZXMpCiAgICAgICAgICAgICAgOzsgQ3V0IG91 dCBvdmVyZmxvdwogICAgICAgICAgICAgIChsZXQgKChkICgxKyAoLSBwb3B1cC13aWR0aCAoLSB3 aW5kb3ctd2lkdGggY29sdW1uKSkpKSkKICAgICAgICAgICAgICAgIChkZWNmIHBvcHVwLXdpZHRo IGQpCiAgICAgICAgICAgICAgICAoZGVjZiB3aWR0aCBkKSkpCiAgICAgICAgICAgIChkZWNmIGNv bHVtbiBtYXJnaW4tbGVmdCkpCiAgICAgICAgKGRlY2YgY29sdW1uIG1hcmdpbi1sZWZ0KSkKICAg ICAgKHdoZW4gKGFuZCAobnVsbCBwYXJlbnQpCiAgICAgICAgICAgICAgICAgKDwgY29sdW1uIDAp KQogICAgICAgICAgOzsgQ2FuY2VsIG1hcmdpbiBsZWZ0CiAgICAgICAgKHNldHEgY29sdW1uIDAp CiAgICAgICAgKGRlY2YgcG9wdXAtd2lkdGggbWFyZ2luLWxlZnQpCiAgICAgICAgKHNldHEgbWFy Z2luLWxlZnQtY2FuY2VsIHQpKQogICAgICAKICAgICAgKGRvdGltZXMgKGkgaGVpZ2h0KQogICAg ICAgIChsZXQgKG92ZXJsYXkgYmVnaW4gdyAoZGFuZ2xlIHQpIChwcmVmaXggIiIpIChwb3N0Zml4 ICIiKSkKICAgICAgICAgICh3aGVuIGFyb3VuZAogICAgICAgICAgICAoaWYgKD49IGVtYWNzLW1h am9yLXZlcnNpb24gMjMpCiAgICAgICAgICAgICAgICAodmVydGljYWwtbW90aW9uIChjb25zIGNv bHVtbiBkaXJlY3Rpb24pKQogICAgICAgICAgICAgICh2ZXJ0aWNhbC1tb3Rpb24gZGlyZWN0aW9u KQogICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiAoKyAoY3VycmVudC1jb2x1bW4pIGNvbHVt bikpKSkKCSAgKHNldHEgYXJvdW5kIHQKICAgICAgICAgICAgICAgIGN1cnJlbnQtY29sdW1uIChw b3B1cC1jdXJyZW50LXBoeXNpY2FsLWNvbHVtbikpCgogICAgICAgICAgKHdoZW4gKD4gY3VycmVu dC1jb2x1bW4gY29sdW1uKQogICAgICAgICAgICAoYmFja3dhcmQtY2hhcikKICAgICAgICAgICAg KHNldHEgY3VycmVudC1jb2x1bW4gKHBvcHVwLWN1cnJlbnQtcGh5c2ljYWwtY29sdW1uKSkpCiAg ICAgICAgICAod2hlbiAoPCBjdXJyZW50LWNvbHVtbiBjb2x1bW4pCiAgICAgICAgICAgIDs7IEV4 dGVuZCBzaG9ydCBidWZmZXIgbGluZXMgYnkgcG9wdXAgcHJlZml4IChsaW5lIG9mIHNwYWNlcykK ICAgICAgICAgICAgKHNldHEgcHJlZml4IChtYWtlLXN0cmluZyAoKyAoaWYgKD0gY3VycmVudC1j b2x1bW4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0g d2luZG93LWhzY3JvbGwgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKC0gY29sdW1uIGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA/ICkpKQoKICAgICAgICAgIChzZXRxIGJlZ2luIChwb2ludCkpCiAgICAg ICAgICAoc2V0cSB3ICgrIHBvcHVwLXdpZHRoIChsZW5ndGggcHJlZml4KSkpCiAgICAgICAgICAo d2hpbGUgKGFuZCAobm90IChlb2xwKSkgKD4gdyAwKSkKICAgICAgICAgICAgKHNldHEgZGFuZ2xl IG5pbCkKICAgICAgICAgICAgKGRlY2YgdyAoY2hhci13aWR0aCAoY2hhci1hZnRlcikpKQogICAg ICAgICAgICAoZm9yd2FyZC1jaGFyKSkKICAgICAgICAgIChpZiAoPCB3IDApCiAgICAgICAgICAg ICAgKHNldHEgcG9zdGZpeCAobWFrZS1zdHJpbmcgKC0gdykgPyApKSkKCiAgICAgICAgICAoc2V0 cSBvdmVybGF5IChtYWtlLW92ZXJsYXkgYmVnaW4gKHBvaW50KSkpCiAgICAgICAgICAob3Zlcmxh eS1wdXQgb3ZlcmxheSAnd2luZG93IHdpbmRvdykKICAgICAgICAgIChvdmVybGF5LXB1dCBvdmVy bGF5ICdkYW5nbGUgZGFuZ2xlKQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3ByZWZp eCBwcmVmaXgpCiAgICAgICAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAncG9zdGZpeCBwb3N0Zml4 KQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3dpZHRoIHdpZHRoKQogICAgICAgICAg KGFzZXQgb3ZlcmxheXMKCQkoaWYgKD4gZGlyZWN0aW9uIDApIGkgKC0gaGVpZ2h0IGkgMSkpCgkJ b3ZlcmxheSkpKQogICAgICAobG9vcCBmb3IgcCBmcm9tICgtIDEwMDAwICgqIGRlcHRoIDEwMDAp KQogICAgICAgICAgICBmb3Igb3ZlcmxheSBpbiAobnJldmVyc2UgKGFwcGVuZCBvdmVybGF5cyBu aWwpKQogICAgICAgICAgICBkbyAob3ZlcmxheS1wdXQgb3ZlcmxheSAncHJpb3JpdHkgcCkpCiAg ICAgIChsZXQgKChpdCAobWFrZS1wb3B1cCA6cG9pbnQgcG9pbnQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDpyb3cgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29sdW1uIGNv bHVtbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOndpZHRoIHdpZHRoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6aGVpZ2h0IGhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgOm1pbi1oZWlnaHQgbWluLWhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRp cmVjdGlvbiBkaXJlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgcGFy ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGVwdGggZGVwdGgKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpmYWNlIGZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz ZWxlY3Rpb24tZmFjZSBzZWxlY3Rpb24tZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg Om1hcmdpbi1sZWZ0IG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFy Z2luLXJpZ2h0IG1hcmdpbi1yaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1hcmdp bi1sZWZ0LWNhbmNlbCBtYXJnaW4tbGVmdC1jYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDpzY3JvbGwtYmFyIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz eW1ib2wgc3ltYm9sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3Vyc29yIDAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpzY3JvbGwtdG9wIDAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpjdXJyZW50LWhlaWdodCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGlz dCBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpuZXdsaW5lcyBuZXdsaW5lcwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgOm92ZXJsYXlzIG92ZXJsYXlzKSkpCiAgICAgICAgKHB1 c2ggaXQgcG9wdXAtaW5zdGFuY2VzKQogICAgICAgIGl0KSkpKQoKKGRlZnVuIHBvcHVwLWRlbGV0 ZSAocG9wdXApCiAgKHdoZW4gKHBvcHVwLWxpdmUtcCBwb3B1cCkKICAgIChwb3B1cC1oaWRlIHBv cHVwKQogICAgKG1hcGMgJ2RlbGV0ZS1vdmVybGF5IChwb3B1cC1vdmVybGF5cyBwb3B1cCkpCiAg ICAoc2V0ZiAocG9wdXAtb3ZlcmxheXMgcG9wdXApIG5pbCkKICAgIChzZXRxIHBvcHVwLWluc3Rh bmNlcyAoZGVscSBwb3B1cCBwb3B1cC1pbnN0YW5jZXMpKQogICAgKGxldCAoKG5ld2xpbmVzIChw b3B1cC1uZXdsaW5lcyBwb3B1cCkpKQogICAgICAod2hlbiAoPiBuZXdsaW5lcyAwKQogICAgICAg IChwb3B1cC1zYXZlLWJ1ZmZlci1zdGF0ZQogICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4 KSkKICAgICAgICAgIChkb3RpbWVzIChpIG5ld2xpbmVzKQogICAgICAgICAgICAoaWYgKD0gKGNo YXItYmVmb3JlKSA/XG4pCiAgICAgICAgICAgICAgICAoZGVsZXRlLWNoYXIgLTEpKSkpKSkpCiAg bmlsKQoKKGRlZnVuIHBvcHVwLWRyYXcgKHBvcHVwKQogIChsb29wIHdpdGggaGVpZ2h0ID0gKHBv cHVwLWhlaWdodCBwb3B1cCkKICAgICAgICB3aXRoIG1pbi1oZWlnaHQgPSAocG9wdXAtbWluLWhl aWdodCBwb3B1cCkKICAgICAgICB3aXRoIHBvcHVwLWZhY2UgPSAocG9wdXAtZmFjZSBwb3B1cCkK ICAgICAgICB3aXRoIHNlbGVjdGlvbi1mYWNlID0gKHBvcHVwLXNlbGVjdGlvbi1mYWNlIHBvcHVw KQogICAgICAgIHdpdGggbGlzdCA9IChwb3B1cC1saXN0IHBvcHVwKQogICAgICAgIHdpdGggbGVu Z3RoID0gKGxlbmd0aCBsaXN0KQogICAgICAgIHdpdGggdGh1bS1zaXplID0gKG1heCAoLyAoKiBo ZWlnaHQgaGVpZ2h0KSAobWF4IGxlbmd0aCAxKSkgMSkKICAgICAgICB3aXRoIHBhZ2Utc2l6ZSA9 ICgvICgrIDAuMCAobWF4IGxlbmd0aCAxKSkgaGVpZ2h0KQogICAgICAgIHdpdGggc2Nyb2xsLWJh ciA9IChwb3B1cC1zY3JvbGwtYmFyIHBvcHVwKQogICAgICAgIHdpdGggbWFyZ2luLWxlZnQgPSAo bWFrZS1zdHJpbmcgKGlmIChwb3B1cC1tYXJnaW4tbGVmdC1jYW5jZWwgcG9wdXApIDAgKHBvcHVw LW1hcmdpbi1sZWZ0IHBvcHVwKSkgPyApCiAgICAgICAgd2l0aCBtYXJnaW4tcmlnaHQgPSAobWFr ZS1zdHJpbmcgKHBvcHVwLW1hcmdpbi1yaWdodCBwb3B1cCkgPyApCiAgICAgICAgd2l0aCBzeW1i b2wgPSAocG9wdXAtc3ltYm9sIHBvcHVwKQogICAgICAgIHdpdGggY3Vyc29yID0gKHBvcHVwLWN1 cnNvciBwb3B1cCkKICAgICAgICB3aXRoIHNjcm9sbC10b3AgPSAocG9wdXAtc2Nyb2xsLXRvcCBw b3B1cCkKICAgICAgICB3aXRoIG9mZnNldCA9IChwb3B1cC1vZmZzZXQgcG9wdXApCiAgICAgICAg Zm9yIG8gZnJvbSBvZmZzZXQKICAgICAgICBmb3IgaSBmcm9tIHNjcm9sbC10b3AKICAgICAgICB3 aGlsZSAoPCBvIGhlaWdodCkKICAgICAgICBmb3IgaXRlbSBpbiAobnRoY2RyIHNjcm9sbC10b3Ag bGlzdCkKICAgICAgICBmb3IgcGFnZS1pbmRleCA9ICgqIHRodW0tc2l6ZSAoLyBvIHRodW0tc2l6 ZSkpCiAgICAgICAgZm9yIGZhY2UgPSAoaWYgKD0gaSBjdXJzb3IpCiAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChwb3B1cC1pdGVtLXNlbGVjdGlvbi1mYWNlIGl0ZW0pIHNlbGVjdGlvbi1mYWNl KQogICAgICAgICAgICAgICAgICAgICAob3IgKHBvcHVwLWl0ZW0tcG9wdXAtZmFjZSBpdGVtKSBw b3B1cC1mYWNlKSkKICAgICAgICBmb3IgZW1wdHktY2hhciA9IChwcm9wZXJ0aXplICIgIiAnZmFj ZSBmYWNlKQogICAgICAgIGZvciBzY3JvbGwtYmFyLWNoYXIgPSAoaWYgc2Nyb2xsLWJhcgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKDw9IHBhZ2Utc2l6ZSAxKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbXB0eS1jaGFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoYW5kICg+IHBhZ2Utc2l6ZSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICg+PSBjdXJzb3IgKCogcGFnZS1pbmRleCBwYWdlLXNpemUpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8IGN1cnNvciAoKiAoKyBwYWdlLWluZGV4IHRo dW0tc2l6ZSkgcGFnZS1zaXplKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvcHVwLXNjcm9sbC1iYXItZm9yZWdyb3VuZC1jaGFyKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVw LXNjcm9sbC1iYXItYmFja2dyb3VuZC1jaGFyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiIikKICAgICAgICBmb3Igc3ltID0gKGlmIHN5bWJvbAogICAgICAgICAgICAgICAgICAg ICAgKGNvbmNhdCAiICIgKG9yIChwb3B1cC1pdGVtLXN5bWJvbCBpdGVtKSAiICIpKQogICAgICAg ICAgICAgICAgICAgICIiKQogICAgICAgIGZvciBzdW1tYXJ5ID0gKG9yIChwb3B1cC1pdGVtLXN1 bW1hcnkgaXRlbSkgIiIpCiAgICAgICAgCiAgICAgICAgZG8KICAgICAgICA7OyBTaG93IGxpbmUg YW5kIHNldCBpdGVtIHRvIHRoZSBsaW5lCiAgICAgICAgKHBvcHVwLXNldC1saW5lLWl0ZW0gcG9w dXAgbyBpdGVtIGZhY2UgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHNjcm9sbC1iYXItY2hhciBz eW0gc3VtbWFyeSkKICAgICAgICAKICAgICAgICBmaW5hbGx5CiAgICAgICAgOzsgUmVtZW1iZXIg Y3VycmVudCBoZWlnaHQKICAgICAgICAoc2V0ZiAocG9wdXAtY3VycmVudC1oZWlnaHQgcG9wdXAp ICgtIG8gb2Zmc2V0KSkKCiAgICAgICAgOzsgSGlkZSByZW1haW5pbmcgbGluZXMKICAgICAgICAo bGV0ICgoc2Nyb2xsLWJhci1jaGFyIChpZiBzY3JvbGwtYmFyIChwcm9wZXJ0aXplICIgIiAnZmFj ZSBwb3B1cC1mYWNlKSAiIikpCiAgICAgICAgICAgICAgKHN5bWJvbCAoaWYgc3ltYm9sICIgIiAi IikpKQogICAgICAgICAgKGlmICg+IChwb3B1cC1kaXJlY3Rpb24gcG9wdXApIDApCiAgICAgICAg ICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAod2hlbiBtaW4taGVpZ2h0CiAgICAgICAgICAg ICAgICAgICh3aGlsZSAoPCBvIG1pbi1oZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgKHBvcHVw LXNldC1saW5lLWl0ZW0gcG9wdXAgbyAiIiBwb3B1cC1mYWNlIG1hcmdpbi1sZWZ0IG1hcmdpbi1y aWdodCBzY3JvbGwtYmFyLWNoYXIgc3ltYm9sICIiKQogICAgICAgICAgICAgICAgICAgIChpbmNm IG8pKSkKICAgICAgICAgICAgICAgICh3aGlsZSAoPCBvIGhlaWdodCkKICAgICAgICAgICAgICAg ICAgKHBvcHVwLWhpZGUtbGluZSBwb3B1cCBvKQogICAgICAgICAgICAgICAgICAoaW5jZiBvKSkp CiAgICAgICAgICAgIChsb29wIHdpdGggaCA9IChpZiBtaW4taGVpZ2h0ICgtIGhlaWdodCBtaW4t aGVpZ2h0KSBvZmZzZXQpCiAgICAgICAgICAgICAgICAgIGZvciBvIGZyb20gMCBiZWxvdyBvZmZz ZXQKICAgICAgICAgICAgICAgICAgaWYgKDwgbyBoKQogICAgICAgICAgICAgICAgICBkbyAocG9w dXAtaGlkZS1saW5lIHBvcHVwIG8pCiAgICAgICAgICAgICAgICAgIGlmICg+PSBvIGgpCiAgICAg ICAgICAgICAgICAgIGRvIChwb3B1cC1zZXQtbGluZS1pdGVtIHBvcHVwIG8gIiIgcG9wdXAtZmFj ZSBtYXJnaW4tbGVmdCBtYXJnaW4tcmlnaHQgc2Nyb2xsLWJhci1jaGFyIHN5bWJvbCAiIikpKSkp KQoKKGRlZnVuIHBvcHVwLWhpZGUgKHBvcHVwKQogIChkb3RpbWVzIChpIChwb3B1cC1oZWlnaHQg cG9wdXApKQogICAgKHBvcHVwLWhpZGUtbGluZSBwb3B1cCBpKSkpCgooZGVmdW4gcG9wdXAtaGlk ZGVuLXAgKHBvcHVwKQogIChsZXQgKChoaWRkZW4gdCkpCiAgICAod2hlbiAocG9wdXAtbGl2ZS1w IHBvcHVwKQogICAgICAoZG90aW1lcyAoaSAocG9wdXAtaGVpZ2h0IHBvcHVwKSkKICAgICAgICAo dW5sZXNzIChwb3B1cC1saW5lLWhpZGRlbi1wIHBvcHVwIGkpCiAgICAgICAgICAoc2V0cSBoaWRk ZW4gbmlsKSkpKQogICAgaGlkZGVuKSkKCihkZWZ1biBwb3B1cC1zZWxlY3QgKHBvcHVwIGkpCiAg KHNldHEgaSAoKyBpIChwb3B1cC1vZmZzZXQgcG9wdXApKSkKICAod2hlbiAoYW5kICg8PSAwIGkp ICg8IGkgKHBvcHVwLWhlaWdodCBwb3B1cCkpKQogICAgKHNldGYgKHBvcHVwLWN1cnNvciBwb3B1 cCkgaSkKICAgIChwb3B1cC1kcmF3IHBvcHVwKQogICAgdCkpCgooZGVmdW4gcG9wdXAtbmV4dCAo cG9wdXApCiAgKGxldCAoKGhlaWdodCAocG9wdXAtaGVpZ2h0IHBvcHVwKSkKICAgICAgICAoY3Vy c29yICgxKyAocG9wdXAtY3Vyc29yIHBvcHVwKSkpCiAgICAgICAgKHNjcm9sbC10b3AgKHBvcHVw LXNjcm9sbC10b3AgcG9wdXApKQogICAgICAgIChsZW5ndGggKGxlbmd0aCAocG9wdXAtbGlzdCBw b3B1cCkpKSkKICAgIChjb25kCiAgICAgKCg+PSBjdXJzb3IgbGVuZ3RoKQogICAgICA7OyBCYWNr IHRvIGZpcnN0IHBhZ2UKICAgICAgKHNldHEgY3Vyc29yIDAKICAgICAgICAgICAgc2Nyb2xsLXRv cCAwKSkKICAgICAoKD0gY3Vyc29yICgrIHNjcm9sbC10b3AgaGVpZ2h0KSkKICAgICAgOzsgR28g dG8gbmV4dCBwYWdlCiAgICAgIChzZXRxIHNjcm9sbC10b3AgKG1pbiAoMSsgc2Nyb2xsLXRvcCkg KG1heCAoLSBsZW5ndGggaGVpZ2h0KSAwKSkpKSkKICAgIChzZXRmIChwb3B1cC1jdXJzb3IgcG9w dXApIGN1cnNvcgogICAgICAgICAgKHBvcHVwLXNjcm9sbC10b3AgcG9wdXApIHNjcm9sbC10b3Ap CiAgICAocG9wdXAtZHJhdyBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLXByZXZpb3VzIChwb3B1cCkK ICAobGV0ICgoaGVpZ2h0IChwb3B1cC1oZWlnaHQgcG9wdXApKQogICAgICAgIChjdXJzb3IgKDEt IChwb3B1cC1jdXJzb3IgcG9wdXApKSkKICAgICAgICAoc2Nyb2xsLXRvcCAocG9wdXAtc2Nyb2xs LXRvcCBwb3B1cCkpCiAgICAgICAgKGxlbmd0aCAobGVuZ3RoIChwb3B1cC1saXN0IHBvcHVwKSkp KQogICAgKGNvbmQKICAgICAoKDwgY3Vyc29yIDApCiAgICAgIDs7IEdvIHRvIGxhc3QgcGFnZQog ICAgICAoc2V0cSBjdXJzb3IgKDEtIGxlbmd0aCkKICAgICAgICAgICAgc2Nyb2xsLXRvcCAobWF4 ICgtIGxlbmd0aCBoZWlnaHQpIDApKSkKICAgICAoKD0gY3Vyc29yICgxLSBzY3JvbGwtdG9wKSkK ICAgICAgOzsgR28gdG8gcHJldmlvdXMgcGFnZQogICAgICAoZGVjZiBzY3JvbGwtdG9wKSkpCiAg ICAoc2V0ZiAocG9wdXAtY3Vyc29yIHBvcHVwKSBjdXJzb3IKICAgICAgICAgIChwb3B1cC1zY3Jv bGwtdG9wIHBvcHVwKSBzY3JvbGwtdG9wKQogICAgKHBvcHVwLWRyYXcgcG9wdXApKSkKCihkZWZ1 biBwb3B1cC1zY3JvbGwtZG93biAocG9wdXAgJm9wdGlvbmFsIG4pCiAgKGxldCAoKHNjcm9sbC10 b3AgKG1pbiAoKyAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkgKG9yIG4gMSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAoLSAobGVuZ3RoIChwb3B1cC1saXN0IHBvcHVwKSkgKHBvcHVwLWhlaWdo dCBwb3B1cCkpKSkpCiAgICAoc2V0ZiAocG9wdXAtY3Vyc29yIHBvcHVwKSBzY3JvbGwtdG9wCiAg ICAgICAgICAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkgc2Nyb2xsLXRvcCkKICAgIChwb3B1cC1k cmF3IHBvcHVwKSkpCgooZGVmdW4gcG9wdXAtc2Nyb2xsLXVwIChwb3B1cCAmb3B0aW9uYWwgbikK ICAobGV0ICgoc2Nyb2xsLXRvcCAobWF4ICgtIChwb3B1cC1zY3JvbGwtdG9wIHBvcHVwKSAob3Ig biAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgIDApKSkKICAgIChzZXRmIChwb3B1cC1jdXJz b3IgcG9wdXApIHNjcm9sbC10b3AKICAgICAgICAgIChwb3B1cC1zY3JvbGwtdG9wIHBvcHVwKSBz Y3JvbGwtdG9wKQogICAgKHBvcHVwLWRyYXcgcG9wdXApKSkKCgwKCjs7IFBvcHVwIGlzZWFyY2gK CihkZWZmYWNlIHBvcHVwLWlzZWFyY2gtbWF0Y2gKICAnKCh0ICg6YmFja2dyb3VuZCAic2t5IGJs dWUiKSkpCiAgIlBvcHVwIGlzZWFyY2ggbWF0Y2ggZmFjZS4iCiAgOmdyb3VwICdwb3B1cCkKCihk ZWZ2YXIgcG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IgImJsdWUiKQoKKGRlZnZhciBwb3B1cC1p c2VhcmNoLWtleW1hcAogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAgOyhk ZWZpbmUta2V5IG1hcCAiXHIiICAgICAgICAncG9wdXAtaXNlYXJjaC1kb25lKQogICAgKGRlZmlu ZS1rZXkgbWFwICJcQy1nIiAgICAgICdwb3B1cC1pc2VhcmNoLWNhbmNlbCkKICAgIChkZWZpbmUt a2V5IG1hcCAiXEMtaCIgICAgICAncG9wdXAtaXNlYXJjaC1kZWxldGUpCiAgICAoZGVmaW5lLWtl eSBtYXAgKGtiZCAiREVMIikgJ3BvcHVwLWlzZWFyY2gtZGVsZXRlKQogICAgbWFwKSkKCihkZWZz dWJzdCBwb3B1cC1pc2VhcmNoLWNoYXItcCAoY2hhcikKICAoYW5kIChpbnRlZ2VycCBjaGFyKQog ICAgICAgKDw9IDMyIGNoYXIpCiAgICAgICAoPD0gY2hhciAxMjYpKSkKCihkZWZ1biBwb3B1cC1p c2VhcmNoLWZpbHRlci1saXN0IChwYXR0ZXJuIGxpc3QpCiAgKGxvb3Agd2l0aCByZWdleHAgPSAo cmVnZXhwLXF1b3RlIHBhdHRlcm4pCiAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdAogICAgICAgIGRv CiAgICAgICAgKHVubGVzcyAoc3RyaW5ncCBpdGVtKQogICAgICAgICAgKHNldHEgaXRlbSAocG9w dXAtaXRlbS1wcm9wZXJ0aXplIChwb3B1cC14LXRvLXN0cmluZyBpdGVtKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBpdGVtKSkpCiAgICAgICAgaWYg KHN0cmluZy1tYXRjaCByZWdleHAgaXRlbSkKICAgICAgICBjb2xsZWN0IChsZXQgKChiZWcgKG1h dGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgIChlbmQgKG1hdGNoLWVuZCAw KSkpCiAgICAgICAgICAgICAgICAgIChhbHRlci10ZXh0LXByb3BlcnR5IDAgKGxlbmd0aCBpdGVt KSAnZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChw cm9wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGVx IHByb3AgJ3BvcHVwLWlzZWFyY2gtbWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcm9wKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXRlbSkKICAgICAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IGJlZyBlbmQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICdwb3B1cC1pc2VhcmNoLW1h dGNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtKQogICAgICAgICAg ICAgICAgICBpdGVtKSkpCgooZGVmdW4gcG9wdXAtaXNlYXJjaC1wcm9tcHQgKHBvcHVwIHBhdHRl cm4pCiAgKGZvcm1hdCAiUGF0dGVybjogJXMiIChpZiAoPSAobGVuZ3RoIChwb3B1cC1saXN0IHBv cHVwKSkgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplIHBhdHRlcm4g J2ZhY2UgJ2lzZWFyY2gtZmFpbCkKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuKSkp CgooZGVmdW4gcG9wdXAtaXNlYXJjaC11cGRhdGUgKHBvcHVwIHBhdHRlcm4gJm9wdGlvbmFsIGNh bGxiYWNrKQogIChzZXRmIChwb3B1cC1jdXJzb3IgcG9wdXApIDAKICAgICAgICAocG9wdXAtc2Ny b2xsLXRvcCBwb3B1cCkgMAogICAgICAgIChwb3B1cC1wYXR0ZXJuIHBvcHVwKSBwYXR0ZXJuKQog IChsZXQgKChsaXN0IChwb3B1cC1pc2VhcmNoLWZpbHRlci1saXN0IHBhdHRlcm4gKHBvcHVwLW9y aWdpbmFsLWxpc3QgcG9wdXApKSkpCiAgICAocG9wdXAtc2V0LWZpbHRlcmVkLWxpc3QgcG9wdXAg bGlzdCkKICAgIChpZiBjYWxsYmFjawogICAgICAgIChmdW5jYWxsIGNhbGxiYWNrIGxpc3QpKSkK ICAocG9wdXAtZHJhdyBwb3B1cCkpCgooZGVmdW4qIHBvcHVwLWlzZWFyY2ggKHBvcHVwCiAgICAg ICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAgICAgIChjdXJzb3ItY29s b3IgcG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IpCiAgICAgICAgICAgICAgICAgICAgICAgKGtl eW1hcCBwb3B1cC1pc2VhcmNoLWtleW1hcCkKICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj awogICAgICAgICAgICAgICAgICAgICAgIGhlbHAtZGVsYXkpCiAgKGxldCAoKGxpc3QgKHBvcHVw LW9yaWdpbmFsLWxpc3QgcG9wdXApKQogICAgICAgIChwYXR0ZXJuIChvciAocG9wdXAtcGF0dGVy biBwb3B1cCkgIiIpKQogICAgICAgIChvbGQtY3Vyc29yLWNvbG9yIChmcmFtZS1wYXJhbWV0ZXIg KHNlbGVjdGVkLWZyYW1lKSAnY3Vyc29yLWNvbG9yKSkKICAgICAgICBwcm9tcHQga2V5IGJpbmRp bmcgZG9uZSkKICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICh1bmxlc3MgKGJsb2NrIG5pbAog ICAgICAgICAgICAgICAgICAoaWYgY3Vyc29yLWNvbG9yCiAgICAgICAgICAgICAgICAgICAgICAo c2V0LWN1cnNvci1jb2xvciBjdXJzb3ItY29sb3IpKQogICAgICAgICAgICAgICAgICAod2hpbGUg dAogICAgICAgICAgICAgICAgICAgIChzZXRxIHByb21wdCAocG9wdXAtaXNlYXJjaC1wcm9tcHQg cG9wdXAgcGF0dGVybikpCiAgICAgICAgICAgICAgICAgICAgKHNldHEga2V5IChwb3B1cC1tZW51 LXJlYWQta2V5LXNlcXVlbmNlIGtleW1hcCBwcm9tcHQgaGVscC1kZWxheSkpCiAgICAgICAgICAg ICAgICAgICAgKGlmIChudWxsIGtleSkKICAgICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAo ZnVuY2FsbCBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscC1mdW5jdGlvbiBwb3B1cCBuaWwgOnBy b21wdCBwcm9tcHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyLXRoaXMtY29tbWFu ZC1rZXlzKQogICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChyZWFkLWV2ZW50IHByb21w dCkgdW5yZWFkLWNvbW1hbmQtZXZlbnRzKSkKICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGJp bmRpbmcgKGxvb2t1cC1rZXkga2V5bWFwIGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAoY29u ZAogICAgICAgICAgICAgICAgICAgICAgICgoYW5kIChzdHJpbmdwIGtleSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocG9wdXAtaXNlYXJjaC1jaGFyLXAgKGFyZWYga2V5IDApKSkKICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgcGF0dGVybiAoY29uY2F0IHBhdHRlcm4ga2V5KSkp CiAgICAgICAgICAgICAgICAgICAgICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2VhcmNoLWRvbmUp CiAgICAgICAgICAgICAgICAgICAgICAgIChyZXR1cm4gdCkpCiAgICAgICAgICAgICAgICAgICAg ICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2VhcmNoLWNhbmNlbCkKICAgICAgICAgICAgICAgICAg ICAgICAgKHJldHVybiBuaWwpKQogICAgICAgICAgICAgICAgICAgICAgICgoZXEgYmluZGluZyAn cG9wdXAtaXNlYXJjaC1kZWxldGUpCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPiAobGVu Z3RoIHBhdHRlcm4pIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwYXR0ZXJu IChzdWJzdHJpbmcgcGF0dGVybiAwICgxLSAobGVuZ3RoIHBhdHRlcm4pKSkpKSkKICAgICAgICAg ICAgICAgICAgICAgICAodAogICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB1bnJlYWQtY29t bWFuZC1ldmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAobGlzdGlm eS1rZXktc2VxdWVuY2Uga2V5KSB1bnJlYWQtY29tbWFuZC1ldmVudHMpKQogICAgICAgICAgICAg ICAgICAgICAgICAocmV0dXJuIHQpKSkKICAgICAgICAgICAgICAgICAgICAgIChwb3B1cC1pc2Vh cmNoLXVwZGF0ZSBwb3B1cCBwYXR0ZXJuIGNhbGxiYWNrKSkpKQogICAgICAgICAgKHBvcHVwLWlz ZWFyY2gtdXBkYXRlIHBvcHVwICIiIGNhbGxiYWNrKQogICAgICAgICAgdCkgOyBSZXR1cm4gbm9u LW5pbCBpZiBpc2VhcmNoIGlzIGNhbmNlbGxlZAogICAgICAoaWYgb2xkLWN1cnNvci1jb2xvcgog ICAgICAgICAgKHNldC1jdXJzb3ItY29sb3Igb2xkLWN1cnNvci1jb2xvcikpKSkpCgoMCgo7OyBQ b3B1cCB0aXAKCihkZWZmYWNlIHBvcHVwLXRpcC1mYWNlCiAgJygodCAoOmJhY2tncm91bmQgImto YWtpMSIgOmZvcmVncm91bmQgImJsYWNrIikpKQogICJGYWNlIGZvciBwb3B1cCB0aXAuIgogIDpn cm91cCAncG9wdXApCgooZGVmdmFyIHBvcHVwLXRpcC1tYXgtd2lkdGggODApCgooZGVmdW4qIHBv cHVwLXRpcCAoc3RyaW5nCiAgICAgICAgICAgICAgICAgICAma2V5CiAgICAgICAgICAgICAgICAg ICBwb2ludAogICAgICAgICAgICAgICAgICAgKGFyb3VuZCB0KQogICAgICAgICAgICAgICAgICAg d2lkdGgKICAgICAgICAgICAgICAgICAgIChoZWlnaHQgMTUpCiAgICAgICAgICAgICAgICAgICBt aW4taGVpZ2h0CiAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZQogICAgICAgICAgICAgICAgICAg bWFyZ2luCiAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdAogICAgICAgICAgICAgICAgICAg bWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICBzY3JvbGwtYmFyCiAgICAgICAgICAgICAg ICAgICBwYXJlbnQKICAgICAgICAgICAgICAgICAgIHBhcmVudC1vZmZzZXQKICAgICAgICAgICAg ICAgICAgIG5vd2FpdAogICAgICAgICAgICAgICAgICAgcHJvbXB0CiAgICAgICAgICAgICAgICAg ICAmYXV4IHRpcCBsaW5lcykKICAoaWYgKGJ1ZmZlcnAgc3RyaW5nKQogICAgICAoc2V0cSBzdHJp bmcgKHdpdGgtY3VycmVudC1idWZmZXIgc3RyaW5nIChidWZmZXItc3RyaW5nKSkpKQogIDs7IFRP RE8gc3RyaXAgdGV4dCAobWFpbmx5IGZhY2UpIHByb3BlcnRpZXMKICAoc2V0cSBzdHJpbmcgKHN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0cmluZykpCgogIChhbmQgKGVxIG1hcmdpbiB0KSAoc2V0 cSBtYXJnaW4gMSkpCiAgKG9yIG1hcmdpbi1sZWZ0IChzZXRxIG1hcmdpbi1sZWZ0IG1hcmdpbikp CiAgKG9yIG1hcmdpbi1yaWdodCAoc2V0cSBtYXJnaW4tcmlnaHQgbWFyZ2luKSkKICAKICAobGV0 ICgoaXQgKHBvcHVwLWZpbGwtc3RyaW5nIHN0cmluZyB3aWR0aCBwb3B1cC10aXAtbWF4LXdpZHRo KSkpCiAgICAoc2V0cSB3aWR0aCAoY2FyIGl0KQogICAgICAgICAgbGluZXMgKGNkciBpdCkpKQog IAogIChzZXRxIHRpcCAocG9wdXAtY3JlYXRlIHBvaW50IHdpZHRoIGhlaWdodAogICAgICAgICAg ICAgICAgICAgICAgICAgIDptaW4taGVpZ2h0IG1pbi1oZWlnaHQKICAgICAgICAgICAgICAgICAg ICAgICAgICA6YXJvdW5kIGFyb3VuZAogICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4t bGVmdCBtYXJnaW4tbGVmdAogICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4tcmlnaHQg bWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgOnNjcm9sbC1iYXIgc2Nyb2xs LWJhcgogICAgICAgICAgICAgICAgICAgICAgICAgIDpmYWNlICdwb3B1cC10aXAtZmFjZQogICAg ICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgcGFyZW50CiAgICAgICAgICAgICAgICAgICAg ICAgICAgOnBhcmVudC1vZmZzZXQgcGFyZW50LW9mZnNldCkpCgogICh1bndpbmQtcHJvdGVjdAog ICAgICAod2hlbiAoPiAocG9wdXAtd2lkdGggdGlwKSAwKSAgICAgICAgICAgICAgICAgICA7IG5v dCB0byBiZSBjb3JydXB0ZWQKICAgICAgICAod2hlbiAoYW5kIChub3QgKGVxIHdpZHRoIChwb3B1 cC13aWR0aCB0aXApKSkgOyB0cnVuY2F0ZWQKICAgICAgICAgICAgICAgICAgIChub3QgdHJ1bmNh dGUpKQogICAgICAgICAgOzsgUmVmaWxsIG9uY2UgYWdhaW4gdG8gbGluZXMgYmUgZml0dGVkIHRv IHBvcHVwIHdpZHRoCiAgICAgICAgICAoc2V0cSB3aWR0aCAocG9wdXAtd2lkdGggdGlwKSkKICAg ICAgICAgIChzZXRxIGxpbmVzIChjZHIgKHBvcHVwLWZpbGwtc3RyaW5nIHN0cmluZyB3aWR0aCB3 aWR0aCkpKSkKCiAgICAgICAgKHBvcHVwLXNldC1saXN0IHRpcCBsaW5lcykKICAgICAgICAocG9w dXAtZHJhdyB0aXApCiAgICAgICAgKGlmIG5vd2FpdAogICAgICAgICAgICB0aXAKICAgICAgICAg IChjbGVhci10aGlzLWNvbW1hbmQta2V5cykKICAgICAgICAgIChwdXNoIChyZWFkLWV2ZW50IHBy b21wdCkgdW5yZWFkLWNvbW1hbmQtZXZlbnRzKQogICAgICAgICAgdCkpCiAgICAodW5sZXNzIG5v d2FpdAogICAgICAocG9wdXAtZGVsZXRlIHRpcCkpKSkKCgwKCjs7IFBvcHVwIG1lbnUKCihkZWZm YWNlIHBvcHVwLW1lbnUtZmFjZQogICcoKHQgKDpiYWNrZ3JvdW5kICJsaWdodGdyYXkiIDpmb3Jl Z3JvdW5kICJibGFjayIpKSkKICAiRmFjZSBmb3IgcG9wdXAgbWVudS4iCiAgOmdyb3VwICdwb3B1 cCkKCihkZWZmYWNlIHBvcHVwLW1lbnUtc2VsZWN0aW9uLWZhY2UKICAnKCh0ICg6YmFja2dyb3Vu ZCAic3RlZWxibHVlIiA6Zm9yZWdyb3VuZCAid2hpdGUiKSkpCiAgIkZhY2UgZm9yIHBvcHVwIG1l bnUgc2VsZWN0aW9uLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZnZhciBwb3B1cC1tZW51LXNob3ct dGlwLWZ1bmN0aW9uICdwb3B1cC10aXAKICAiRnVuY3Rpb24gdXNlZCBmb3Igc2hvd2luZyB0b29s dGlwIGJ5IGBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscCcuIikKCihkZWZ2YXIgcG9wdXAtbWVu dS1zaG93LXF1aWNrLWhlbHAtZnVuY3Rpb24gJ3BvcHVwLW1lbnUtc2hvdy1xdWljay1oZWxwCiAg IkZ1bmN0aW9uIHVzZWQgZm9yIHNob3dpbmcgcXVpY2sgaGVscCBieSBgcG9wdXAtbWVudSonLiIp CgooZGVmdW4gcG9wdXAtbWVudS1zaG93LWhlbHAgKG1lbnUgJm9wdGlvbmFsIHBlcnNpc3QgaXRl bSkKICAocG9wdXAtaXRlbS1zaG93LWhlbHAgKG9yIGl0ZW0gKHBvcHVwLXNlbGVjdGVkLWl0ZW0g bWVudSkpIHBlcnNpc3QpKQoKKGRlZnVuIHBvcHVwLW1lbnUtZG9jdW1lbnRhdGlvbiAobWVudSAm b3B0aW9uYWwgaXRlbSkKICAocG9wdXAtaXRlbS1kb2N1bWVudGF0aW9uIChvciBpdGVtIChwb3B1 cC1zZWxlY3RlZC1pdGVtIG1lbnUpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1zaG93LXF1aWNrLWhl bHAgKG1lbnUgJm9wdGlvbmFsIGl0ZW0gJnJlc3QgYXJncykKICAobGV0KiAoKHBvaW50IChwbGlz dC1nZXQgYXJncyA6cG9pbnQpKQogICAgICAgICAoaGVpZ2h0IChvciAocGxpc3QtZ2V0IGFyZ3Mg OmhlaWdodCkgKHBvcHVwLWhlaWdodCBtZW51KSkpCiAgICAgICAgIChtaW4taGVpZ2h0IChtaW4g aGVpZ2h0IChwb3B1cC1jdXJyZW50LWhlaWdodCBtZW51KSkpCiAgICAgICAgIChhcm91bmQgbmls KQogICAgICAgICAocGFyZW50LW9mZnNldCAocG9wdXAtb2Zmc2V0IG1lbnUpKQogICAgICAgICAo ZG9jIChwb3B1cC1tZW51LWRvY3VtZW50YXRpb24gbWVudSBpdGVtKSkpCiAgICAod2hlbiAoc3Ry aW5ncCBkb2MpCiAgICAgIChpZiAocG9wdXAtaGlkZGVuLXAgbWVudSkKICAgICAgICAgIChzZXRx IGFyb3VuZCB0CiAgICAgICAgICAgICAgICBtZW51IG5pbAogICAgICAgICAgICAgICAgcGFyZW50 LW9mZnNldCBuaWwpCiAgICAgICAgKHNldHEgcG9pbnQgbmlsKSkKICAgICAgKGxldCAoKHBvcHVw LXVzZS1vcHRpbWl6ZWQtY29sdW1uLWNvbXB1dGF0aW9uIG5pbCkpIDsgVG8gYXZvaWQgd3Jvbmcg cG9zaXRpb25pbmcKICAgICAgICAoYXBwbHkgcG9wdXAtbWVudS1zaG93LXRpcC1mdW5jdGlvbgog ICAgICAgICAgICAgICBkb2MKICAgICAgICAgICAgICAgOnBvaW50IHBvaW50CiAgICAgICAgICAg ICAgIDpoZWlnaHQgaGVpZ2h0CiAgICAgICAgICAgICAgIDptaW4taGVpZ2h0IG1pbi1oZWlnaHQK ICAgICAgICAgICAgICAgOmFyb3VuZCBhcm91bmQKICAgICAgICAgICAgICAgOnBhcmVudCBtZW51 CiAgICAgICAgICAgICAgIDpwYXJlbnQtb2Zmc2V0IHBhcmVudC1vZmZzZXQKICAgICAgICAgICAg ICAgYXJncykpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1yZWFkLWtleS1zZXF1ZW5jZSAoa2V5bWFw ICZvcHRpb25hbCBwcm9tcHQgdGltZW91dCkKICAoY2F0Y2ggJ3RpbWVvdXQKICAgIChsZXQgKCh0 aW1lciAoYW5kIHRpbWVvdXQKICAgICAgICAgICAgICAgICAgICAgIChydW4td2l0aC10aW1lciB0 aW1lb3V0IG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoemVyb3AgKGxl bmd0aCAodGhpcy1jb21tYW5kLWtleXMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodGhyb3cgJ3RpbWVvdXQgbmlsKSkpKSkpCiAgICAgICAgICAob2xkLWds b2JhbC1tYXAgKGN1cnJlbnQtZ2xvYmFsLW1hcCkpCiAgICAgICAgICAodGVtcC1nbG9iYWwtbWFw IChtYWtlLXNwYXJzZS1rZXltYXApKQogICAgICAgICAgKG92ZXJyaWRpbmctdGVybWluYWwtbG9j YWwtbWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgICAgKHN1YnN0aXR1dGUta2V5LWRlZmlu aXRpb24gJ2tleWJvYXJkLXF1aXQgJ2tleWJvYXJkLXF1aXQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGVtcC1nbG9iYWwtbWFwIG9sZC1nbG9iYWwtbWFwKQogICAgICAoZGVmaW5l LWtleSB0ZW1wLWdsb2JhbC1tYXAgW21lbnUtYmFyXSAobG9va3VwLWtleSBvbGQtZ2xvYmFsLW1h cCBbbWVudS1iYXJdKSkKICAgICAgKGRlZmluZS1rZXkgdGVtcC1nbG9iYWwtbWFwIFt0b29sLWJh cl0gKGxvb2t1cC1rZXkgb2xkLWdsb2JhbC1tYXAgW3Rvb2wtYmFyXSkpCiAgICAgIChzZXQta2V5 bWFwLXBhcmVudCBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBrZXltYXApCiAgICAgIChp ZiAoY3VycmVudC1sb2NhbC1tYXApCiAgICAgICAgICAoZGVmaW5lLWtleSBvdmVycmlkaW5nLXRl cm1pbmFsLWxvY2FsLW1hcCBbbWVudS1iYXJdCiAgICAgICAgICAgIChsb29rdXAta2V5IChjdXJy ZW50LWxvY2FsLW1hcCkgW21lbnUtYmFyXSkpKQogICAgICAodW53aW5kLXByb3RlY3QKICAgICAg ICAgIChwcm9nbgogICAgICAgICAgICAodXNlLWdsb2JhbC1tYXAgdGVtcC1nbG9iYWwtbWFwKQog ICAgICAgICAgICAoY2xlYXItdGhpcy1jb21tYW5kLWtleXMpCiAgICAgICAgICAgICh3aXRoLXRl bXAtbWVzc2FnZSBwcm9tcHQKICAgICAgICAgICAgICAocmVhZC1rZXktc2VxdWVuY2UgbmlsKSkp CiAgICAgICAgKHVzZS1nbG9iYWwtbWFwIG9sZC1nbG9iYWwtbWFwKQogICAgICAgIChpZiB0aW1l ciAoY2FuY2VsLXRpbWVyIHRpbWVyKSkpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1mYWxsYmFjayAo ZXZlbnQgZGVmYXVsdCkpCgooZGVmdW4qIHBvcHVwLW1lbnUtZXZlbnQtbG9vcCAobWVudSBrZXlt YXAgZmFsbGJhY2sgJm9wdGlvbmFsIHByb21wdCBoZWxwLWRlbGF5IGlzZWFyY2ggaXNlYXJjaC1j dXJzb3ItY29sb3IgaXNlYXJjaC1rZXltYXAgaXNlYXJjaC1jYWxsYmFjayAmYXV4IGtleSBiaW5k aW5nKQogIChibG9jayBuaWwKICAgICh3aGlsZSAocG9wdXAtbGl2ZS1wIG1lbnUpCiAgICAgIChh bmQgaXNlYXJjaAogICAgICAgICAgIChwb3B1cC1pc2VhcmNoIG1lbnUKICAgICAgICAgICAgICAg ICAgICAgICAgICA6Y3Vyc29yLWNvbG9yIGlzZWFyY2gtY3Vyc29yLWNvbG9yCiAgICAgICAgICAg ICAgICAgICAgICAgICAgOmtleW1hcCBpc2VhcmNoLWtleW1hcAogICAgICAgICAgICAgICAgICAg ICAgICAgIDpjYWxsYmFjayBpc2VhcmNoLWNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAg ICAgOmhlbHAtZGVsYXkgaGVscC1kZWxheSkKICAgICAgICAgICAoa2V5Ym9hcmQtcXVpdCkpCiAg ICAgIChzZXRxIGtleSAocG9wdXAtbWVudS1yZWFkLWtleS1zZXF1ZW5jZSBrZXltYXAgcHJvbXB0 IGhlbHAtZGVsYXkpKQogICAgICAoaWYgKG51bGwga2V5KQogICAgICAgICAgKHVubGVzcyAoZnVu Y2FsbCBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscC1mdW5jdGlvbiBtZW51IG5pbCA6cHJvbXB0 IHByb21wdCkKICAgICAgICAgICAgKGNsZWFyLXRoaXMtY29tbWFuZC1rZXlzKQogICAgICAgICAg ICAocHVzaCAocmVhZC1ldmVudCBwcm9tcHQpIHVucmVhZC1jb21tYW5kLWV2ZW50cykpCiAgICAg ICAgKGlmIChlcSAobG9va3VwLWtleSAoY3VycmVudC1nbG9iYWwtbWFwKSBrZXkpICdrZXlib2Fy ZC1xdWl0KQogICAgICAgICAgICAoa2V5Ym9hcmQtcXVpdCkpCiAgICAgICAgKHNldHEgYmluZGlu ZyAobG9va3VwLWtleSBrZXltYXAga2V5KSkKICAgICAgICAoY29uZAogICAgICAgICAoKGVxIGJp bmRpbmcgJ3BvcHVwLWNsb3NlKQogICAgICAgICAgKGlmIChwb3B1cC1wYXJlbnQgbWVudSkKICAg ICAgICAgICAgICAocmV0dXJuKSkpCiAgICAgICAgICgobWVtcSBiaW5kaW5nICcocG9wdXAtc2Vs ZWN0IHBvcHVwLW9wZW4pKQogICAgICAgICAgKGxldCogKChpdGVtIChwb3B1cC1zZWxlY3RlZC1p dGVtIG1lbnUpKQogICAgICAgICAgICAgICAgIChzdWJsaXN0IChwb3B1cC1pdGVtLXN1Ymxpc3Qg aXRlbSkpKQogICAgICAgICAgICAoaWYgc3VibGlzdAogICAgICAgICAgICAgICAgKHBvcHVwLWFp ZiAocG9wdXAtY2FzY2FkZS1tZW51IHN1Ymxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6YXJvdW5kIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgbWVudQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4tbGVmdCAocG9wdXAtbWFyZ2luLWxlZnQg bWVudSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFy Z2luLXJpZ2h0IChwb3B1cC1tYXJnaW4tcmlnaHQgbWVudSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6c2Nyb2xsLWJhciAocG9wdXAtc2Nyb2xsLWJhciBt ZW51KSkKICAgICAgICAgICAgICAgICAgICAoYW5kIGl0IChyZXR1cm4gaXQpKSkKICAgICAgICAg ICAgICAoaWYgKGVxIGJpbmRpbmcgJ3BvcHVwLXNlbGVjdCkKICAgICAgICAgICAgICAgICAgKHJl dHVybiAocG9wdXAtaXRlbS12YWx1ZS1vci1zZWxmIGl0ZW0pKSkpKSkKICAgICAgICAgKChlcSBi aW5kaW5nICdwb3B1cC1uZXh0KQogICAgICAgICAgKHBvcHVwLW5leHQgbWVudSkpCiAgICAgICAg ICgoZXEgYmluZGluZyAncG9wdXAtcHJldmlvdXMpCiAgICAgICAgICAocG9wdXAtcHJldmlvdXMg bWVudSkpCiAgICAgICAgICgoZXEgYmluZGluZyAncG9wdXAtaGVscCkKICAgICAgICAgIChwb3B1 cC1tZW51LXNob3ctaGVscCBtZW51KSkKICAgICAgICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2Vh cmNoKQogICAgICAgICAgKHBvcHVwLWlzZWFyY2ggbWVudQogICAgICAgICAgICAgICAgICAgICAg ICAgOmN1cnNvci1jb2xvciBpc2VhcmNoLWN1cnNvci1jb2xvcgogICAgICAgICAgICAgICAgICAg ICAgICAgOmtleW1hcCBpc2VhcmNoLWtleW1hcAogICAgICAgICAgICAgICAgICAgICAgICAgOmNh bGxiYWNrIGlzZWFyY2gtY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgIDpoZWxwLWRl bGF5IGhlbHAtZGVsYXkpKQogICAgICAgICAoKGNvbW1hbmRwIGJpbmRpbmcpCiAgICAgICAgICAo Y2FsbC1pbnRlcmFjdGl2ZWx5IGJpbmRpbmcpKQogICAgICAgICAodAogICAgICAgICAgKGZ1bmNh bGwgZmFsbGJhY2sga2V5IChrZXktYmluZGluZyBrZXkpKSkpKSkpKQoKOzsgcG9wdXAtbWVudSBp cyB1c2VkIGJ5IG1vdXNlLmVsIHVuZmFpcmx5Li4uCihkZWZ1biogcG9wdXAtbWVudSogKGxpc3QK ICAgICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAgICBwb2ludAogICAg ICAgICAgICAgICAgICAgICAoYXJvdW5kIHQpCiAgICAgICAgICAgICAgICAgICAgICh3aWR0aCAo cG9wdXAtcHJlZmVycmVkLXdpZHRoIGxpc3QpKQogICAgICAgICAgICAgICAgICAgICAoaGVpZ2h0 IDE1KQogICAgICAgICAgICAgICAgICAgICBtYXJnaW4KICAgICAgICAgICAgICAgICAgICAgbWFy Z2luLWxlZnQKICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAg ICAgICAgIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sCiAgICAgICAgICAg ICAgICAgICAgIHBhcmVudAogICAgICAgICAgICAgICAgICAgICBwYXJlbnQtb2Zmc2V0CiAgICAg ICAgICAgICAgICAgICAgIChrZXltYXAgcG9wdXAtbWVudS1rZXltYXApCiAgICAgICAgICAgICAg ICAgICAgIChmYWxsYmFjayAncG9wdXAtbWVudS1mYWxsYmFjaykKICAgICAgICAgICAgICAgICAg ICAgaGVscC1kZWxheQogICAgICAgICAgICAgICAgICAgICBwcm9tcHQKICAgICAgICAgICAgICAg ICAgICAgaXNlYXJjaAogICAgICAgICAgICAgICAgICAgICAoaXNlYXJjaC1jdXJzb3ItY29sb3Ig cG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IpCiAgICAgICAgICAgICAgICAgICAgIChpc2VhcmNo LWtleW1hcCBwb3B1cC1pc2VhcmNoLWtleW1hcCkKICAgICAgICAgICAgICAgICAgICAgaXNlYXJj aC1jYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAmYXV4IG1lbnUgZXZlbnQpCiAgKGFuZCAo ZXEgbWFyZ2luIHQpIChzZXRxIG1hcmdpbiAxKSkKICAob3IgbWFyZ2luLWxlZnQgKHNldHEgbWFy Z2luLWxlZnQgbWFyZ2luKSkKICAob3IgbWFyZ2luLXJpZ2h0IChzZXRxIG1hcmdpbi1yaWdodCBt YXJnaW4pKQogIChpZiAoYW5kIHNjcm9sbC1iYXIKICAgICAgICAgICAoaW50ZWdlcnAgbWFyZ2lu LXJpZ2h0KQogICAgICAgICAgICg+IG1hcmdpbi1yaWdodCAwKSkKICAgICAgOzsgTWFrZSBzY3Jv bGwtYmFyIHNwYWNlIGFzIG1hcmdpbi1yaWdodAogICAgICAoZGVjZiBtYXJnaW4tcmlnaHQpKQog IChzZXRxIG1lbnUgKHBvcHVwLWNyZWF0ZSBwb2ludCB3aWR0aCBoZWlnaHQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmFyb3VuZCBhcm91bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg OmZhY2UgJ3BvcHVwLW1lbnUtZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICA6c2VsZWN0 aW9uLWZhY2UgJ3BvcHVwLW1lbnUtc2VsZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgOm1hcmdpbi1sZWZ0IG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgICAg IDptYXJnaW4tcmlnaHQgbWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz Y3JvbGwtYmFyIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN5bWJvbCBz eW1ib2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhcmVudCBwYXJlbnQpKQogICh1bndp bmQtcHJvdGVjdAogICAgICAocHJvZ24KICAgICAgICAocG9wdXAtc2V0LWxpc3QgbWVudSBsaXN0 KQogICAgICAgIChwb3B1cC1kcmF3IG1lbnUpCiAgICAgICAgKHBvcHVwLW1lbnUtZXZlbnQtbG9v cCBtZW51IGtleW1hcCBmYWxsYmFjayBwcm9tcHQgaGVscC1kZWxheSBpc2VhcmNoCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpc2VhcmNoLWN1cnNvci1jb2xvciBpc2VhcmNoLWtleW1h cCBpc2VhcmNoLWNhbGxiYWNrKSkKICAgIChwb3B1cC1kZWxldGUgbWVudSkpKQoKKGRlZnVuIHBv cHVwLWNhc2NhZGUtbWVudSAobGlzdCAmcmVzdCBhcmdzKQogICJTYW1lIHRvIGBwb3B1cC1tZW51 JywgYnV0IGFuIGVsZW1lbnQgb2YgYExJU1QnIGNhbiBiZQpsaXN0IG9mIHN1Ym1lbnUuIgogIChh cHBseSAncG9wdXAtbWVudSoKICAgICAgICAgKG1hcGNhciAobGFtYmRhIChpdGVtKQogICAgICAg ICAgICAgICAgICAgKGlmIChjb25zcCBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgIChwb3B1 cC1tYWtlLWl0ZW0gKGNhciBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOnN1Ymxpc3QgKGNkciBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOnN5bWJvbCAiPiIpCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0pKQogICAgICAg ICAgICAgICAgIGxpc3QpCiAgICAgICAgIDpzeW1ib2wgdAogICAgICAgICBhcmdzKSkKCihkZWZ2 YXIgcG9wdXAtbWVudS1rZXltYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkK ICAgIChkZWZpbmUta2V5IG1hcCAiXHIiICAgICAgICAncG9wdXAtc2VsZWN0KQogICAgKGRlZmlu ZS1rZXkgbWFwICJcQy1mIiAgICAgICdwb3B1cC1vcGVuKQogICAgKGRlZmluZS1rZXkgbWFwIFty aWdodF0gICAgICdwb3B1cC1vcGVuKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1iIiAgICAgICdw b3B1cC1jbG9zZSkKICAgIChkZWZpbmUta2V5IG1hcCBbbGVmdF0gICAgICAncG9wdXAtY2xvc2Up CgogICAgKGRlZmluZS1rZXkgbWFwICJcQy1uIiAgICAgICdwb3B1cC1uZXh0KQogICAgKGRlZmlu ZS1rZXkgbWFwIFtkb3duXSAgICAgICdwb3B1cC1uZXh0KQogICAgKGRlZmluZS1rZXkgbWFwICJc Qy1wIiAgICAgICdwb3B1cC1wcmV2aW91cykKICAgIChkZWZpbmUta2V5IG1hcCBbdXBdICAgICAg ICAncG9wdXAtcHJldmlvdXMpCgogICAgKGRlZmluZS1rZXkgbWFwIFtmMV0gICAgICAgICdwb3B1 cC1oZWxwKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIlxDLT8iKSAncG9wdXAtaGVscCkKCiAg ICAoZGVmaW5lLWtleSBtYXAgIlxDLXMiICAgICAgJ3BvcHVwLWlzZWFyY2gpCiAgICBtYXApKQoK KHByb3ZpZGUgJ3BvcHVwKQo7OzsgcG9wdXAuZWwgZW5kcyBoZXJlCg== --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: text/x-emacs-lisp Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="auto-complete.el" Ozs7IGF1dG8tY29tcGxldGUuZWwgLS0tIEF1dG8gQ29tcGxldGlvbiBmb3IgR05VIEVtYWNzCgo7 OyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgIFRvbW9oaXJvIE1hdHN1eWFtYQoKOzsg QXV0aG9yOiBUb21vaGlybyBNYXRzdXlhbWEgPG0yeW0ucHViQGdtYWlsLmNvbT4KOzsgVVJMOiBo dHRwOi8vY3g0YS5vcmcvc29mdHdhcmUvYXV0by1jb21wbGV0ZQo7OyBLZXl3b3JkczogY29tcGxl dGlvbiwgY29udmVuaWVuY2UKOzsgVmVyc2lvbjogMS40Cgo7OyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENv bW1lbnRhcnk6Cjs7Cjs7IFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIGEgd2F5IHRvIGNvbXBsZXRl IHdpdGggcG9wdXAgbWVudSBsaWtlOgo7Owo7OyAgICAgZGVmLSEtCjs7ICAgICArLS0tLS0tLS0t LS0tLS0tLS0rCjs7ICAgICB8ZGVmdW46Ojo6Ojo6Ojo6Ojp8Cjs7ICAgICB8ZGVmdmFyICAgICAg ICAgICB8Cjs7ICAgICB8ZGVmbWFjcm8gICAgICAgICB8Cjs7ICAgICB8ICAgICAgIC4uLiAgICAg ICB8Cjs7ICAgICArLS0tLS0tLS0tLS0tLS0tLS0rCjs7Cjs7IFlvdSBjYW4gY29tcGxldGUgYnkg dHlwaW5nIGFuZCBzZWxlY3RpbmcgbWVudS4KOzsKOzsgRW50aXJlIGRvY3VtZW50cyBhcmUgbG9j YXRlZCBpbiBkb2MvIGRpcmVjdG9yeS4KOzsgVGFrZSBhIGxvb2sgZm9yIGluZm9ybWF0aW9uLgo7 Owo7OyBFbmpveSEKCjs7OyBDb2RlOgoKDAoKKGV2YWwtd2hlbi1jb21waWxlCiAgKHJlcXVpcmUg J2NsKSkKCihyZXF1aXJlICdwb3B1cCkKCjs7OzsgR2xvYmFsIHN0dWZmCgooZGVmdW4gYWMtZXJy b3IgKCZvcHRpb25hbCB2YXIpCiAgIlJlcG9ydCBhbiBlcnJvciBhbmQgZGlzYWJsZSBgYXV0by1j b21wbGV0ZS1tb2RlJy4iCiAgKGlnbm9yZS1lcnJvcnMKICAgIChtZXNzYWdlICJhdXRvLWNvbXBs ZXRlIGVycm9yOiAlcyIgdmFyKQogICAgKGF1dG8tY29tcGxldGUtbW9kZSAtMSkKICAgIHZhcikp CgoMCgo7Ozs7IEN1c3RvbWl6YXRpb24KCihkZWZncm91cCBhdXRvLWNvbXBsZXRlIG5pbAogICJB dXRvIGNvbXBsZXRpb24uIgogIDpncm91cCAnY29tcGxldGlvbgogIDpwcmVmaXggImFjLSIpCgoo ZGVmY3VzdG9tIGFjLWRlbGF5IDAuMQogICJEZWxheSB0byBjb21wbGV0aW9ucyB3aWxsIGJlIGF2 YWlsYWJsZS4iCiAgOnR5cGUgJ2Zsb2F0CiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1 c3RvbSBhYy1hdXRvLXNob3ctbWVudSAwLjgKICAiTm9uLW5pbCBtZWFucyBjb21wbGV0aW9uIG1l bnUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNob3duLiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3Qg OnRhZyAiWWVzIiB0KQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJOZXZlciIgbmlsKQog ICAgICAgICAgICAgICAgIChmbG9hdCA6dGFnICJUaW1lciIpKQogIDpncm91cCAnYXV0by1jb21w bGV0ZSkKCihkZWZjdXN0b20gYWMtc2hvdy1tZW51LWltbWVkaWF0ZWx5LW9uLWF1dG8tY29tcGxl dGUgdAogICJOb24tbmlsIG1lYW5zIG1lbnUgd2lsbCBiZSBzaG93ZWQgaW1tZWRpYXRlbHkgb24g YGF1dG8tY29tcGxldGUnLiIKICA6dHlwZSAnYm9vbGVhbgogIDpncm91cCAnYXV0by1jb21wbGV0 ZSkKCihkZWZjdXN0b20gYWMtZXhwYW5kLW9uLWF1dG8tY29tcGxldGUgdAogICJOb24tbmlsIG1l YW5zIGV4cGFuZCB3aG9sZSBjb21tb24gcGFydCBvbiBmaXJzdCB0aW1lIGBhdXRvLWNvbXBsZXRl Jy4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9t IGFjLWRpc2FibGUtZmFjZXMgJyhmb250LWxvY2stY29tbWVudC1mYWNlIGZvbnQtbG9jay1zdHJp bmctZmFjZSBmb250LWxvY2stZG9jLWZhY2UpCiAgIk5vbi1uaWwgbWVhbnMgZGlzYWJsZSBhdXRv bWF0aWMgY29tcGxldGlvbiBvbiBzcGVjaWZpZWQgZmFjZXMuIgogIDp0eXBlICcocmVwZWF0IHN5 bWJvbCkKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFjLXN0b3AtZmx5bWFr ZS1vbi1jb21wbGV0aW5nIHQKICAiTm9uLW5pbCBtZWFucyBkaXNibGUgZmx5bWFrZSB0ZW1wb3Jh cmlseSBvbiBjb21wbGV0aW5nLiIKICA6dHlwZSAnYm9vbGVhbgogIDpncm91cCAnYXV0by1jb21w bGV0ZSkKCihkZWZjdXN0b20gYWMtdXNlLWZ1enp5IHQKICAiTm9uLW5pbCBtZWFucyB1c2UgZnV6 enkgbWF0Y2hpbmcuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoK KGRlZmN1c3RvbSBhYy1mdXp6eS1jdXJzb3ItY29sb3IgInJlZCIKICAiQ3Vyc29yIGNvbG9yIGlu IGZ1enp5IG1vZGUuIgogIDp0eXBlICdzdHJpbmcKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgoo ZGVmY3VzdG9tIGFjLXVzZS1jb21waGlzdCB0CiAgIk5vbi1uaWwgbWVhbnMgdXNlIGludGVsbGln ZW50IGNvbXBsZXRpb24gaGlzdG9yeS4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8t Y29tcGxldGUpCgooZGVmY3VzdG9tIGFjLWNvbXBoaXN0LXRocmVzaG9sZCAwLjcKICAiUGVyY2Vu dGFnZSBvZiBpZ25vcmluZyBsb3cgc2NvcmVkIGNhbmRpZGF0ZXMuIgogIDp0eXBlICdmbG9hdAog IDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtY29tcGhpc3QtZmlsZQogIChl eHBhbmQtZmlsZS1uYW1lIChjb25jYXQgKGlmIChib3VuZHAgJ3VzZXItZW1hY3MtZGlyZWN0b3J5 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXItZW1hY3MtZGlyZWN0b3J5CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ+Ly5lbWFjcy5kLyIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiL2FjLWNvbXBoaXN0LmRhdCIpKQogICJDb21wbGV0aW9uIGhpc3Rvcnkg ZmlsZSBuYW1lLiIKICA6dHlwZSAnc3RyaW5nCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRl ZmN1c3RvbSBhYy11c2VyLWRpY3Rpb25hcnkgbmlsCiAgIlVzZXIgZGVmaW5lZCBkaWN0aW9uYXJ5 IgogIDp0eXBlICcocmVwZWF0IHN0cmluZykKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVm Y3VzdG9tIGFjLWRpY3Rpb25hcnktZmlsZXMgJygifi8uZGljdCIpCiAgIkRpY3Rpb25hcnkgZmls ZXMuIgogIDp0eXBlICcocmVwZWF0IHN0cmluZykKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCihk ZWZ2YXJhbGlhcyAnYWMtdXNlci1kaWN0aW9uYXJ5LWZpbGVzICdhYy1kaWN0aW9uYXJ5LWZpbGVz KQoKKGRlZmN1c3RvbSBhYy1kaWN0aW9uYXJ5LWRpcmVjdG9yaWVzIG5pbAogICJEaWN0aW9uYXJ5 IGRpcmVjdG9yaWVzLiIKICA6dHlwZSAnKHJlcGVhdCBzdHJpbmcpCiAgOmdyb3VwICdhdXRvLWNv bXBsZXRlKQoKKGRlZmN1c3RvbSBhYy11c2UtcXVpY2staGVscCB0CiAgIk5vbi1uaWwgbWVhbnMg dXNlIHF1aWNrIGhlbHAuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRl KQoKKGRlZmN1c3RvbSBhYy1xdWljay1oZWxwLWRlbGF5IDEuNQogICJEZWxheSB0byBzaG93IHF1 aWNrIGhlbHAuIgogIDp0eXBlICdmbG9hdAogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZj dXN0b20gYWMtbWVudS1oZWlnaHQgMTAKICAiTWF4IGhlaWdodCBvZiBjYW5kaWRhdGUgbWVudS4i CiAgOnR5cGUgJ2ludGVnZXIKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCihkZWZ2YXJhbGlhcyAn YWMtY2FuZGlkYXRlLW1lbnUtaGVpZ2h0ICdhYy1tZW51LWhlaWdodCkKCihkZWZjdXN0b20gYWMt cXVpY2staGVscC1oZWlnaHQgMjAKICAiTWF4IGhlaWdodCBvZiBxdWljayBoZWxwLiIKICA6dHlw ZSAnaW50ZWdlcgogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtcXVpY2st aGVscC1wcmVmZXItcG9zLXRpcCB0CiAgIlByZWZlciBuYXRpdmUgdG9vbHRpcCB3aXRoIHBvcy10 aXAgdGhhbiBvdmVybGF5IHBvcHVwIGZvciBkaXNwbGF5aW5nIHF1aWNrIGhlbHAuIgogIDp0eXBl ICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQooZGVmdmFyYWxpYXMgJ2FjLXF1aWNr LWhlbHAtcHJlZmVyLXggJ2FjLXF1aWNrLWhlbHAtcHJlZmVyLXBvcy10aXApCgooZGVmY3VzdG9t IGFjLWNhbmRpZGF0ZS1saW1pdCBuaWwKICAiTGltaXQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuIE5v bi1pbnRlZ2VyIG1lYW5zIG5vIGxpbWl0LiIKICA6dHlwZSAnaW50ZWdlcgogIDpncm91cCAnYXV0 by1jb21wbGV0ZSkKKGRlZnZhcmFsaWFzICdhYy1jYW5kaWRhdGUtbWF4ICdhYy1jYW5kaWRhdGUt bGltaXQpCgooZGVmY3VzdG9tIGFjLW1vZGVzCiAgJyhlbWFjcy1saXNwLW1vZGUgbGlzcC1tb2Rl IGxpc3AtaW50ZXJhY3Rpb24tbW9kZQogICAgc2xpbWUtcmVwbC1tb2RlCiAgICBjLW1vZGUgY2Mt bW9kZSBjKystbW9kZQogICAgamF2YS1tb2RlIG1hbGFiYXItbW9kZSBjbG9qdXJlLW1vZGUgc2Nh bGEtbW9kZQogICAgc2NoZW1lLW1vZGUKICAgIG9jYW1sLW1vZGUgdHVhcmVnLW1vZGUgaGFza2Vs bC1tb2RlCiAgICBwZXJsLW1vZGUgY3BlcmwtbW9kZSBweXRob24tbW9kZSBydWJ5LW1vZGUKICAg IGVjbWFzY3JpcHQtbW9kZSBqYXZhc2NyaXB0LW1vZGUganMtbW9kZSBqczItbW9kZSBwaHAtbW9k ZSBjc3MtbW9kZQogICAgbWFrZWZpbGUtbW9kZSBzaC1tb2RlIGZvcnRyYW4tbW9kZSBmOTAtbW9k ZSBhZGEtbW9kZQogICAgeG1sLW1vZGUgc2dtbC1tb2RlCiAgICB0cy1tb2RlKQogICJNYWpvciBt b2RlcyBgYXV0by1jb21wbGV0ZS1tb2RlJyBjYW4gcnVuIG9uLiIKICA6dHlwZSAnKHJlcGVhdCBz eW1ib2wpCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3RvbSBhYy1jb21wYXRpYmxl LXBhY2thZ2VzLXJlZ2V4cAogICJeYWMtIgogICJSZWdleHAgdG8gaW5kaWNhdGUgd2hhdCBwYWNr YWdlcyBjYW4gd29yayB3aXRoIGF1dG8tY29tcGxldGUuIgogIDp0eXBlICdzdHJpbmcKICA6Z3Jv dXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFjLW5vbi10cmlnZ2VyLWNvbW1hbmRzCiAg JygqdGFibGUtLWNlbGwtc2VsZi1pbnNlcnQtY29tbWFuZCkKICAiQ29tbWFuZHMgdGhhdCBjYW4n dCBiZSB1c2VkIGFzIHRyaWdnZXJzIG9mIGBhdXRvLWNvbXBsZXRlJy4iCiAgOnR5cGUgJyhyZXBl YXQgc3ltYm9sKQogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtdHJpZ2dl ci1jb21tYW5kcwogICcoc2VsZi1pbnNlcnQtY29tbWFuZCkKICAiVHJpZ2dlciBjb21tYW5kcyB0 aGF0IHNwZWNpZnkgd2hldGhlciBgYXV0by1jb21wbGV0ZScgc2hvdWxkIHN0YXJ0IG9yIG5vdC4i CiAgOnR5cGUgJyhyZXBlYXQgc3ltYm9sKQogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZj dXN0b20gYWMtdHJpZ2dlci1jb21tYW5kcy1vbi1jb21wbGV0aW5nCiAgJyhkZWxldGUtYmFja3dh cmQtY2hhcgogICAgYmFja3dhcmQtZGVsZXRlLWNoYXIKICAgIGJhY2t3YXJkLWRlbGV0ZS1jaGFy LXVudGFiaWZ5KQogICJUcmlnZ2VyIGNvbW1hbmRzIHRoYXQgc3BlY2lmeSB3aGV0aGVyIGBhdXRv LWNvbXBsZXRlJyBzaG91bGQgY29udGludWUgb3Igbm90LiIKICA6dHlwZSAnKHJlcGVhdCBzeW1i b2wpCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3RvbSBhYy10cmlnZ2VyLWtleSBu aWwKICAiTm9uLW5pbCBtZWFucyBgYXV0by1jb21wbGV0ZScgd2lsbCBzdGFydCBieSB0eXBpbmcg dGhpcyBrZXkuCklmIHlvdSBzcGVjaWZ5IHRoaXMgVEFCLCBmb3IgZXhhbXBsZSwgYGF1dG8tY29t cGxldGUnIHdpbGwgc3RhcnQgYnkgdHlwaW5nIFRBQiwKYW5kIGlmIHRoZXJlIGlzIG5vIGNvbXBs ZXRpb25zLCBhbiBvcmlnaW5hbCBjb21tYW5kIHdpbGwgYmUgZmFsbGJhY2tlZC4iCiAgOnR5cGUg J3N0cmluZwogIDpncm91cCAnYXV0by1jb21wbGV0ZQogIDpzZXQgKGxhbWJkYSAoc3ltYm9sIHZh bHVlKQogICAgICAgICAoc2V0LWRlZmF1bHQgc3ltYm9sIHZhbHVlKQogICAgICAgICAod2hlbiAo YW5kIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgKGZib3VuZHAgJ2FjLXNldC10cmlnZ2VyLWtl eSkpCiAgICAgICAgICAgKGFjLXNldC10cmlnZ2VyLWtleSB2YWx1ZSkpKSkKCihkZWZjdXN0b20g YWMtYXV0by1zdGFydCAyCiAgIk5vbi1uaWwgbWVhbnMgY29tcGxldGlvbiB3aWxsIGJlIHN0YXJ0 ZWQgYXV0b21hdGljYWxseS4KUG9zaXRpdmUgaW50ZWdlciBtZWFucyBpZiBhIGxlbmd0aCBvZiBh IHdvcmQgeW91IGVudGVyZWQgaXMgbGFyZ2VyIHRoYW4gdGhlIHZhbHVlLApjb21wbGV0aW9uIHdp bGwgYmUgc3RhcnRlZCBhdXRvbWF0aWNhbGx5LgpJZiB5b3Ugc3BlY2lmeSBgbmlsJywgbmV2ZXIg YmUgc3RhcnRlZCBhdXRvbWF0aWNhbGx5LiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAi WWVzIiB0KQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJOZXZlciIgbmlsKQogICAgICAg ICAgICAgICAgIChpbnRlZ2VyIDp0YWcgIlJlcXVpcmUiKSkKICA6Z3JvdXAgJ2F1dG8tY29tcGxl dGUpCgooZGVmY3VzdG9tIGFjLXN0b3Atd29yZHMgbmlsCiAgIkxpc3Qgb2Ygc3RyaW5nIHRvIHN0 b3AgY29tcGxldGlvbi4iCiAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKQogIDpncm91cCAnYXV0by1j b21wbGV0ZSkKKGRlZnZhcmFsaWFzICdhYy1pZ25vcmVzICdhYy1zdG9wLXdvcmRzKQoKKGRlZmN1 c3RvbSBhYy11c2UtZGljdGlvbmFyeS1hcy1zdG9wLXdvcmRzIHQKICAiTm9uLW5pbCBtZWFucyBh IGJ1ZmZlciByZWxhdGVkIGRpY3Rpb25hcnkgd2lsbCBiZSB0aG91Z2h0IG9mIGFzIHN0b3Agd29y ZHMuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3Rv bSBhYy1pZ25vcmUtY2FzZSAnc21hcnQKICAiTm9uLW5pbCBtZWFucyBhdXRvLWNvbXBsZXRlIGln bm9yZXMgY2FzZS4KSWYgdGhpcyB2YWx1ZSBpcyBgc21hcnQnLCBhdXRvLWNvbXBsZXRlIGlnbm9y ZXMgY2FzZSBvbmx5IHdoZW4KYSBwcmVmaXggZG9lbid0IGNvbnRhaW4gYW55IHVwcGVyIGNhc2Ug bGV0dGVycy4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIlllcyIgdCkKICAgICAgICAg ICAgICAgICAoY29uc3QgOnRhZyAiU21hcnQiIHNtYXJ0KQogICAgICAgICAgICAgICAgIChjb25z dCA6dGFnICJObyIgbmlsKSkKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFj LWR3aW0gdAogICJOb24tbmlsIG1lYW5zIGBhdXRvLWNvbXBsZXRlJyB3b3JrcyBiYXNlZCBvbiBE byBXaGF0IEkgTWVhbi4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUp CgooZGVmY3VzdG9tIGFjLXVzZS1tZW51LW1hcCBuaWwKICAiTm9uLW5pbCBtZWFucyBhIHNwZWNp YWwga2V5bWFwIGBhYy1tZW51LW1hcCcgb24gY29tcGxldGluZyBtZW51IHdpbGwgYmUgdXNlZC4i CiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFj LXVzZS1vdmVycmlkaW5nLWxvY2FsLW1hcCBuaWwKICAiTm9uLW5pbCBtZWFucyBgb3ZlcnJpZGlu Zy1sb2NhbC1tYXAnIHdpbGwgYmUgdXNlZCB0byBoYWNrIGZvciBvdmVycmlkaW5nIGtleSBldmVu dHMgb24gYXV0by1jb3BsZXRpb24uIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNv bXBsZXRlKQoKKGRlZmZhY2UgYWMtY29tcGxldGlvbi1mYWNlCiAgJygodCAoOmZvcmVncm91bmQg ImRhcmtncmF5IiA6dW5kZXJsaW5lIHQpKSkKICAiRmFjZSBmb3IgaW5saW5lIGNvbXBsZXRpb24i CiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmZhY2UgYWMtY2FuZGlkYXRlLWZhY2UKICAn KCh0ICg6YmFja2dyb3VuZCAibGlnaHRncmF5IiA6Zm9yZWdyb3VuZCAiYmxhY2siKSkpCiAgIkZh Y2UgZm9yIGNhbmRpZGF0ZS4iCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmZhY2UgYWMt c2VsZWN0aW9uLWZhY2UKICAnKCh0ICg6YmFja2dyb3VuZCAic3RlZWxibHVlIiA6Zm9yZWdyb3Vu ZCAid2hpdGUiKSkpCiAgIkZhY2UgZm9yIHNlbGVjdGVkIGNhbmRpZGF0ZS4iCiAgOmdyb3VwICdh dXRvLWNvbXBsZXRlKQoKKGRlZnZhciBhdXRvLWNvbXBsZXRlLW1vZGUtaG9vayBuaWwKICAiSG9v ayBmb3IgYGF1dG8tY29tcGxldGUtbW9kZScuIikKCgwKCjs7OzsgSW50ZXJuYWwgdmFyaWFibGVz CgooZGVmdmFyIGF1dG8tY29tcGxldGUtbW9kZSBuaWwKICAiRHVtbXkgdmFyaWFibGUgdG8gc3Vw cHJlc3MgY29tcGlsZXIgd2FybmluZ3MuIikKCihkZWZ2YXIgYWMtY3Vyc29yLWNvbG9yIG5pbAog ICJPbGQgY3Vyc29yIGNvbG9yLiIpCgooZGVmdmFyIGFjLWlubGluZSBuaWwKICAiSW5saW5lIGNv bXBsZXRpb24gaW5zdGFuY2UuIikKCihkZWZ2YXIgYWMtbWVudSBuaWwKICAiTWVudSBpbnN0YW5j ZS4iKQoKKGRlZnZhciBhYy1zaG93LW1lbnUgbmlsCiAgIkZsYWcgdG8gc2hvdyBtZW51IG9uIHRp bWVyIHRpY2suIikKCihkZWZ2YXIgYWMtbGFzdC1jb21wbGV0aW9uIG5pbAogICJDb25zIG9mIHBy ZWZpeCBtYXJrZXIgYW5kIHNlbGVjdGVkIGl0ZW0gb2YgbGFzdCBjb21wbGV0aW9uLiIpCgooZGVm dmFyIGFjLXF1aWNrLWhlbHAgbmlsCiAgIlF1aWNrIGhlbHAgaW5zdGFuY2UiKQoKKGRlZnZhciBh Yy1jb21wbGV0aW5nIG5pbAogICJOb24tbmlsIG1lYW5zIGBhdXRvLWNvbXBsZXRlLW1vZGUnIGlz IG5vdyB3b3JraW5nIG9uIGNvbXBsZXRpb24uIikKCihkZWZ2YXIgYWMtYnVmZmVyIG5pbAogICJC dWZmZXIgd2hlcmUgYXV0by1jb21wbGV0ZSBpcyBzdGFydGVkLiIpCgooZGVmdmFyIGFjLXBvaW50 IG5pbAogICJTdGFydCBwb2ludCBvZiBwcmVmaXguIikKCihkZWZ2YXIgYWMtbGFzdC1wb2ludCBu aWwKICAiTGFzdCBwb2ludCBvZiB1cGRhdGluZyBwYXR0ZXJuLiIpCgooZGVmdmFyIGFjLXByZWZp eCBuaWwKICAiUHJlZml4IHN0cmluZy4iKQooZGVmdmFyYWxpYXMgJ2FjLXRhcmdldCAnYWMtcHJl Zml4KQoKKGRlZnZhciBhYy1zZWxlY3RlZC1jYW5kaWRhdGUgbmlsCiAgIkxhc3Qgc2VsZWN0ZWQg Y2FuZGlkYXRlLiIpCgooZGVmdmFyIGFjLWNvbW1vbi1wYXJ0IG5pbAogICJDb21tb24gcGFydCBz dHJpbmcgb2YgbWVhbmluZ2Z1bCBjYW5kaWRhdGVzLgpJZiB0aGVyZSBpcyBubyBjb21tb24gcGFy dCwgdGhpcyB3aWxsIGJlIG5pbC4iKQoKKGRlZnZhciBhYy13aG9sZS1jb21tb24tcGFydCBuaWwK ICAiQ29tbW9uIHBhcnQgc3RyaW5nIG9mIHdob2xlIGNhbmRpZGF0ZXMuCklmIHRoZXJlIGlzIG5v IGNvbW1vbiBwYXJ0LCB0aGlzIHdpbGwgYmUgbmlsLiIpCgooZGVmdmFyIGFjLXByZWZpeC1vdmVy bGF5IG5pbAogICJPdmVybGF5IGZvciBwcmVmaXggc3RyaW5nLiIpCgooZGVmdmFyIGFjLXRpbWVy IG5pbAogICJDb21wbGV0aW9uIGlkbGUgdGltZXIuIikKCihkZWZ2YXIgYWMtc2hvdy1tZW51LXRp bWVyIG5pbAogICJTaG93IG1lbnUgaWRsZSB0aW1lci4iKQoKKGRlZnZhciBhYy1xdWljay1oZWxw LXRpbWVyIG5pbAogICJRdWljayBoZWxwIGlkbGUgdGltZXIuIikKCihkZWZ2YXIgYWMtdHJpZ2dl cmVkIG5pbAogICJGbGFnIHRvIHVwZGF0ZS4iKQoKKGRlZnZhciBhYy1saW1pdCBuaWwKICAiTGlt aXQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgZm9yIGVhY2ggc291cmNlcy4iKQoKKGRlZnZhciBhYy1j YW5kaWRhdGVzIG5pbAogICJDdXJyZW50IGNhbmRpZGF0ZXMuIikKCihkZWZ2YXIgYWMtY2FuZGlk YXRlcy1jYWNoZSBuaWwKICAiQ2FuZGlkYXRlcyBjYWNoZSBmb3IgaW5kaXZpZHVhbCBzb3VyY2Vz LiIpCgooZGVmdmFyIGFjLWZ1enp5LWVuYWJsZSBuaWwKICAiTm9uLW5pbCBtZWFucyBmdXp6eSBt YXRjaGluZyBpcyBlbmFibGVkLiIpCgooZGVmdmFyIGFjLWR3aW0tZW5hYmxlIG5pbAogICJOb24t bmlsIG1lYW5zIERXSU0gY29tcGxldGlvbiB3aWxsIGJlIGFsbG93ZWQuIikKCihkZWZ2YXIgYWMt bW9kZS1tYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkKICAiQXV0by1jb21wbGV0ZSBtb2RlIG1hcC4g SXQgaXMgYWxzbyB1c2VkIGZvciB0cmlnZ2VyIGtleSBjb21tYW5kLiBTZWUgYWxzbyBgYWMtdHJp Z2dlci1rZXknLiIpCgooZGVmdmFyIGFjLWNvbXBsZXRpbmctbWFwCiAgKGxldCAoKG1hcCAobWFr ZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAgIlx0IiAnYWMtZXhwYW5kKQog ICAgKGRlZmluZS1rZXkgbWFwICJcciIgJ2FjLWNvbXBsZXRlKQogICAgKGRlZmluZS1rZXkgbWFw IChrYmQgIk0tVEFCIikgJ2F1dG8tY29tcGxldGUpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLXMi ICdhYy1pc2VhcmNoKQoKICAgIChkZWZpbmUta2V5IG1hcCAiXE0tbiIgJ2FjLW5leHQpCiAgICAo ZGVmaW5lLWtleSBtYXAgIlxNLXAiICdhYy1wcmV2aW91cykKICAgIChkZWZpbmUta2V5IG1hcCBb ZG93bl0gJ2FjLW5leHQpCiAgICAoZGVmaW5lLWtleSBtYXAgW3VwXSAnYWMtcHJldmlvdXMpCgog ICAgKGRlZmluZS1rZXkgbWFwIFtmMV0gJ2FjLWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgW00t ZjFdICdhYy1wZXJzaXN0LWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy0/IikgJ2Fj LWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1NLT8iKSAnYWMtcGVyc2lzdC1oZWxw KQoKICAgIChkZWZpbmUta2V5IG1hcCBbQy1kb3duXSAnYWMtcXVpY2staGVscC1zY3JvbGwtZG93 bikKICAgIChkZWZpbmUta2V5IG1hcCBbQy11cF0gJ2FjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwKQog ICAgKGRlZmluZS1rZXkgbWFwICJcQy1cTS1uIiAnYWMtcXVpY2staGVscC1zY3JvbGwtZG93bikK ICAgIChkZWZpbmUta2V5IG1hcCAiXEMtXE0tcCIgJ2FjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwKQoK ICAgIChkb3RpbWVzIChpIDkpCiAgICAgIChsZXQgKChzeW1ib2wgKGludGVybiAoZm9ybWF0ICJh Yy1jb21wbGV0ZS0lZCIgKDErIGkpKSkpKQogICAgICAgIChmc2V0IHN5bWJvbAogICAgICAgICAg ICAgIGAobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgKGludGVyYWN0aXZlKQogICAgICAgICAg ICAgICAgICh3aGVuIChhbmQgKGFjLW1lbnUtbGl2ZS1wKSAocG9wdXAtc2VsZWN0IGFjLW1lbnUg LGkpKQogICAgICAgICAgICAgICAgICAgKGFjLWNvbXBsZXRlKSkpKQogICAgICAgIChkZWZpbmUt a2V5IG1hcCAocmVhZC1rYmQtbWFjcm8gKGZvcm1hdCAiTS0lcyIgKDErIGkpKSkgc3ltYm9sKSkp CgogICAgbWFwKQogICJLZXltYXAgZm9yIGNvbXBsZXRpb24uIikKKGRlZnZhcmFsaWFzICdhYy1j b21wbGV0ZS1tb2RlLW1hcCAnYWMtY29tcGxldGluZy1tYXApCgooZGVmdmFyIGFjLW1lbnUtbWFw CiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAg IlxDLW4iICdhYy1uZXh0KQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1wIiAnYWMtcHJldmlvdXMp CiAgICAoc2V0LWtleW1hcC1wYXJlbnQgbWFwIGFjLWNvbXBsZXRpbmctbWFwKQogICAgbWFwKQog ICJLZXltYXAgZm9yIGNvbXBsZXRpb24gb24gY29tcGxldGluZyBtZW51LiIpCgooZGVmdmFyIGFj LWN1cnJlbnQtbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoc2V0 LWtleW1hcC1wYXJlbnQgbWFwIGFjLWNvbXBsZXRpbmctbWFwKQogICAgbWFwKSkKCihkZWZ2YXIg YWMtbWF0Y2gtZnVuY3Rpb24gJ2FsbC1jb21wbGV0aW9ucwogICJEZWZhdWx0IG1hdGNoIGZ1bmN0 aW9uLiIpCgooZGVmdmFyIGFjLXByZWZpeC1kZWZpbml0aW9ucwogICcoKHN5bWJvbCAuIGFjLXBy ZWZpeC1zeW1ib2wpCiAgICAoZmlsZSAuIGFjLXByZWZpeC1maWxlKQogICAgKHZhbGlkLWZpbGUg LiBhYy1wcmVmaXgtdmFsaWQtZmlsZSkKICAgIChjLWRvdCAuIGFjLXByZWZpeC1jLWRvdCkKICAg IChjLWRvdC1yZWYgLiBhYy1wcmVmaXgtYy1kb3QtcmVmKSkKICAiUHJlZml4IGRlZmluaXRpb25z IGZvciBjb21tb24gdXNlLiIpCgooZGVmdmFyIGFjLXNvdXJjZXMgJyhhYy1zb3VyY2Utd29yZHMt aW4tc2FtZS1tb2RlLWJ1ZmZlcnMpCiAgIlNvdXJjZXMgZm9yIGNvbXBsZXRpb24uIikKKG1ha2Ut dmFyaWFibGUtYnVmZmVyLWxvY2FsICdhYy1zb3VyY2VzKQoKKGRlZnZhciBhYy1jb21waWxlZC1z b3VyY2VzIG5pbAogICJDb21waWxlZCBzb3VyY2Ugb2YgYGFjLXNvdXJjZXMnLiIpCgooZGVmdmFy IGFjLWN1cnJlbnQtc291cmNlcyBuaWwKICAiQ3VycmVudCB3b3JraW5nIHNvdXJjZXMuIFRoaXMg aXMgc3VibGlzdCBvZiBgYWMtY29tcGlsZWQtc291cmNlcycuIikKCihkZWZ2YXIgYWMtb21uaS1j b21wbGV0aW9uLXNvdXJjZXMgbmlsCiAgIkRvIG5vdCB1c2UgdGhpcyBhbnltb3JlLiIpCgooZGVm dmFyIGFjLWN1cnJlbnQtcHJlZml4LWRlZiBuaWwpCgooZGVmdmFyIGFjLWlnbm9yaW5nLXByZWZp eC1kZWYgbmlsKQoKDAoKOzs7OyBJbnRlbGxpZ2VudCBjb21wbGV0aW9uIGhpc3RvcnkKCihkZWZ2 YXIgYWMtY29tcGhpc3QgbmlsCiAgIkRhdGFiYXNlIG9mIGNvbXBsZXRpb24gaGlzdG9yeS4iKQoK KGRlZnN1YnN0IGFjLWNvbXBoaXN0LW1ha2UtdGFiICgpCiAgKG1ha2UtaGFzaC10YWJsZSA6dGVz dCAnZXF1YWwpKQoKKGRlZnN1YnN0IGFjLWNvbXBoaXN0LXRhYiAoZGIpCiAgKG50aCAwIGRiKSkK CihkZWZzdWJzdCBhYy1jb21waGlzdC1jYWNoZSAoZGIpCiAgKG50aCAxIGRiKSkKCihkZWZ1biBh Yy1jb21waGlzdC1tYWtlICgmb3B0aW9uYWwgdGFiKQogIChsaXN0IChvciB0YWIgKGFjLWNvbXBo aXN0LW1ha2UtdGFiKSkgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwgOndlYWtuZXNzIHQp KSkKCihkZWZ1biBhYy1jb21waGlzdC1nZXQgKGRiIHN0cmluZyAmb3B0aW9uYWwgY3JlYXRlKQog IChsZXQqICgodGFiIChhYy1jb21waGlzdC10YWIgZGIpKQogICAgICAgICAoaW5kZXggKGdldGhh c2ggc3RyaW5nIHRhYikpKQogICAgKHdoZW4gKGFuZCBjcmVhdGUgKG51bGwgaW5kZXgpKQogICAg ICAoc2V0cSBpbmRleCAobWFrZS12ZWN0b3IgKGxlbmd0aCBzdHJpbmcpIDApKQogICAgICAocHV0 aGFzaCBzdHJpbmcgaW5kZXggdGFiKSkKICAgIGluZGV4KSkKCihkZWZ1biBhYy1jb21waGlzdC1h ZGQgKGRiIHN0cmluZyBwcmVmaXgpCiAgKHNldHEgcHJlZml4IChtaW4gcHJlZml4ICgxLSAobGVu Z3RoIHN0cmluZykpKSkKICAod2hlbiAoPD0gMCBwcmVmaXgpCiAgICAoc2V0cSBzdHJpbmcgKHN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0cmluZykpCiAgICAobGV0ICgoc3RhdCAoYWMtY29tcGhp c3QtZ2V0IGRiIHN0cmluZyB0KSkpCiAgICAgIChpbmNmIChhcmVmIHN0YXQgcHJlZml4KSkKICAg ICAgKHJlbWhhc2ggc3RyaW5nIChhYy1jb21waGlzdC1jYWNoZSBkYikpKSkpCgooZGVmdW4gYWMt Y29tcGhpc3Qtc2NvcmUgKGRiIHN0cmluZyBwcmVmaXgpCiAgKHNldHEgcHJlZml4IChtaW4gcHJl Zml4ICgxLSAobGVuZ3RoIHN0cmluZykpKSkKICAoaWYgKDw9IDAgcHJlZml4KQogICAgICAobGV0 ICgoY2FjaGUgKGdldGhhc2ggc3RyaW5nIChhYy1jb21waGlzdC1jYWNoZSBkYikpKSkKICAgICAg ICAob3IgKGFuZCBjYWNoZSAoYXJlZiBjYWNoZSBwcmVmaXgpKQogICAgICAgICAgICAobGV0ICgo c3RhdCAoYWMtY29tcGhpc3QtZ2V0IGRiIHN0cmluZykpCiAgICAgICAgICAgICAgICAgIChzY29y ZSAwLjApKQogICAgICAgICAgICAgICh3aGVuIHN0YXQKICAgICAgICAgICAgICAgIChsb29wIGZv ciBwIGZyb20gMCBiZWxvdyAobGVuZ3RoIHN0cmluZykKICAgICAgICAgICAgICAgICAgICAgIDs7 IHNpZ21vaWQgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSA9IDUKICAgICAg ICAgICAgICAgICAgICAgIHdpdGggYiA9ICgvIDcwMC4wIGEpIDsgYm91bmRzIGZvciBhdm9pZGlu ZyByYW5nZSBlcnJvciBpbiBgZXhwJwogICAgICAgICAgICAgICAgICAgICAgd2l0aCBkID0gKC8g Ni4wIGEpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgeCA9IChtYXggKC0gYikgKG1pbiBiICgt IGQgKGFicyAoLSBwcmVmaXggcCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgciA9ICgv IDEuMCAoMSsgKGV4cCAoKiAoLSBhKSB4KSkpKQogICAgICAgICAgICAgICAgICAgICAgZG8KICAg ICAgICAgICAgICAgICAgICAgIChpbmNmIHNjb3JlICgqIChhcmVmIHN0YXQgcCkgcikpKSkKICAg ICAgICAgICAgICA7OyBXZWlnaHQgYnkgZGlzdGFuY2UKICAgICAgICAgICAgICAoaW5jZiBzY29y ZSAobWF4IDAuMCAoLSAwLjMgKC8gKC0gKGxlbmd0aCBzdHJpbmcpIHByZWZpeCkgMTAwLjApKSkp CiAgICAgICAgICAgICAgKHVubGVzcyBjYWNoZQogICAgICAgICAgICAgICAgKHNldHEgY2FjaGUg KG1ha2UtdmVjdG9yIChsZW5ndGggc3RyaW5nKSBuaWwpKQogICAgICAgICAgICAgICAgKHB1dGhh c2ggc3RyaW5nIGNhY2hlIChhYy1jb21waGlzdC1jYWNoZSBkYikpKQogICAgICAgICAgICAgIChh c2V0IGNhY2hlIHByZWZpeCBzY29yZSkKICAgICAgICAgICAgICBzY29yZSkpKQogICAgMC4wKSkK CihkZWZ1biBhYy1jb21waGlzdC1zb3J0IChkYiBjb2xsZWN0aW9uIHByZWZpeCAmb3B0aW9uYWwg dGhyZXNob2xkKQogIChsZXQgKHJlc3VsdAogICAgICAgIChuIDApCiAgICAgICAgKHRvdGFsIDAp CiAgICAgICAgKGN1ciAwKSkKICAgIChzZXRxIHJlc3VsdCAobWFwY2FyIChsYW1iZGEgKGEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgY3VyIHRocmVzaG9sZCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKD49IGN1ciAoKiB0b3RhbCB0aHJlc2hvbGQpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBjdXIgbmlsKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGluY2YgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpbmNmIGN1ciAoY2RyIGEpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIg YSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoc29ydCAobWFwY2FyIChsYW1iZGEgKHN0cmlu ZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoc2NvcmUg KGFjLWNvbXBoaXN0LXNjb3JlIGRiIHN0cmluZyBwcmVmaXgpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpbmNmIHRvdGFsIHNjb3JlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgc3RyaW5nIHNjb3JlKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChhIGIpICg8IChjZHIgYikgKGNkciBhKSkpKSkp CiAgICAoaWYgdGhyZXNob2xkCiAgICAgICAgKGNvbnMgbiByZXN1bHQpCiAgICAgIHJlc3VsdCkp KQoKKGRlZnVuIGFjLWNvbXBoaXN0LXNlcmlhbGl6ZSAoZGIpCiAgKGxldCAoYWxpc3QpCiAgICAo bWFwaGFzaCAobGFtYmRhIChrIHYpCiAgICAgICAgICAgICAgIChwdXNoIChjb25zIGsgdikgYWxp c3QpKQogICAgICAgICAgICAgKGFjLWNvbXBoaXN0LXRhYiBkYikpCiAgICAobGlzdCBhbGlzdCkp KQoKKGRlZnVuIGFjLWNvbXBoaXN0LWRlc2VyaWFsaXplIChzZXhwKQogIChjb25kaXRpb24tY2Fz ZSBuaWwKICAgICAgKGFjLWNvbXBoaXN0LW1ha2UgKGxldCAoKHRhYiAoYWMtY29tcGhpc3QtbWFr ZS10YWIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwYyAobGFtYmRhIChjb25zKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggKGNhciBjb25zKSAoY2Ry IGNvbnMpIHRhYikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50aCAwIHNleHAp KQogICAgICAgICAgICAgICAgICAgICAgICAgIHRhYikpCiAgICAoZXJyb3IgKG1lc3NhZ2UgIklu dmFsaWQgY29tcGhpc3QgZGIuIikgbmlsKSkpCgooZGVmdW4gYWMtY29tcGhpc3QtaW5pdCAoKQog IChhYy1jb21waGlzdC1sb2FkKQogIChhZGQtaG9vayAna2lsbC1lbWFjcy1ob29rICdhYy1jb21w aGlzdC1zYXZlKSkKCihkZWZ1biBhYy1jb21waGlzdC1sb2FkICgpCiAgKGludGVyYWN0aXZlKQog IChsZXQgKChkYiAoaWYgKGZpbGUtZXhpc3RzLXAgYWMtY29tcGhpc3QtZmlsZSkKICAgICAgICAg ICAgICAgIChpZ25vcmUtZXJyb3JzCiAgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVy CiAgICAgICAgICAgICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGFjLWNvbXBoaXN0LWZp bGUpCiAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAg ICAgICAgICAgICAoYWMtY29tcGhpc3QtZGVzZXJpYWxpemUgKHJlYWQgKGN1cnJlbnQtYnVmZmVy KSkpKSkpKSkKICAgIChzZXRxIGFjLWNvbXBoaXN0IChvciBkYiAoYWMtY29tcGhpc3QtbWFrZSkp KSkpCgooZGVmdW4gYWMtY29tcGhpc3Qtc2F2ZSAoKQogIChpbnRlcmFjdGl2ZSkKICAocmVxdWly ZSAncHApCiAgKGlnbm9yZS1lcnJvcnMKICAgICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgIChwcCAo YWMtY29tcGhpc3Qtc2VyaWFsaXplIGFjLWNvbXBoaXN0KSAoY3VycmVudC1idWZmZXIpKQogICAg ICAod3JpdGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIGFjLWNvbXBoaXN0LWZpbGUp KSkpCgoMCgo7Ozs7IERpY3Rpb25hcnkKKGRlZnZhciBhYy1idWZmZXItZGljdGlvbmFyeSBuaWwp CihkZWZ2YXIgYWMtZmlsZS1kaWN0aW9uYXJ5IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFs KSkKCihkZWZ1biBhYy1jbGVhci1kaWN0aW9uYXJ5LWNhY2hlICgpCiAgKGludGVyYWN0aXZlKQog IChkb2xpc3QgKGJ1ZmZlciAoYnVmZmVyLWxpc3QpKQogICAgKHdpdGgtY3VycmVudC1idWZmZXIg YnVmZmVyCiAgICAgIChpZiAobG9jYWwtdmFyaWFibGUtcCAnYWMtYnVmZmVyLWRpY3Rpb25hcnkp CiAgICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnYWMtYnVmZmVyLWRpY3Rpb25hcnkpKSkp CiAgKGNscmhhc2ggYWMtZmlsZS1kaWN0aW9uYXJ5KSkKCihkZWZ1biBhYy1maWxlLWRpY3Rpb25h cnkgKGZpbGVuYW1lKQogIChsZXQgKChjYWNoZSAoZ2V0aGFzaCBmaWxlbmFtZSBhYy1maWxlLWRp Y3Rpb25hcnkgJ25vbmUpKSkKICAgIChpZiAoYW5kIGNhY2hlIChub3QgKGVxIGNhY2hlICdub25l KSkpCiAgICAgICAgY2FjaGUKICAgICAgKGxldCAocmVzdWx0KQogICAgICAgIChpZ25vcmUtZXJy b3JzCiAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgICAgICAoaW5zZXJ0LWZpbGUt Y29udGVudHMgZmlsZW5hbWUpCiAgICAgICAgICAgIChzZXRxIHJlc3VsdCAoc3BsaXQtc3RyaW5n IChidWZmZXItc3RyaW5nKSAiXG4iKSkpKQogICAgICAgIChwdXRoYXNoIGZpbGVuYW1lIHJlc3Vs dCBhYy1maWxlLWRpY3Rpb25hcnkpCiAgICAgICAgcmVzdWx0KSkpKQoKKGRlZnVuIGFjLW1vZGUt ZGljdGlvbmFyeSAobW9kZSkKICAobG9vcCBmb3IgbmFtZSBpbiAoY29ucyAoc3ltYm9sLW5hbWUg bW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoaWdub3JlLWVycm9ycyAobGlzdCAoZmls ZS1uYW1lLWV4dGVuc2lvbiAoYnVmZmVyLWZpbGUtbmFtZSkpKSkpCiAgICAgICAgZm9yIGRpciBp biBhYy1kaWN0aW9uYXJ5LWRpcmVjdG9yaWVzCiAgICAgICAgZm9yIGZpbGUgPSAoY29uY2F0IGRp ciAiLyIgbmFtZSkKICAgICAgICBpZiAoZmlsZS1leGlzdHMtcCBmaWxlKQogICAgICAgIGFwcGVu ZCAoYWMtZmlsZS1kaWN0aW9uYXJ5IGZpbGUpKSkKCihkZWZ1biBhYy1idWZmZXItZGljdGlvbmFy eSAoJm9wdGlvbmFsIGJ1ZmZlcikKICAod2l0aC1jdXJyZW50LWJ1ZmZlciAob3IgYnVmZmVyIChj dXJyZW50LWJ1ZmZlcikpCiAgICAoaWYgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLWJ1ZmZlci1kaWN0 aW9uYXJ5KQogICAgICAgIGFjLWJ1ZmZlci1kaWN0aW9uYXJ5CiAgICAgIChtYWtlLWxvY2FsLXZh cmlhYmxlICdhYy1idWZmZXItZGljdGlvbmFyeSkKICAgICAgKHNldHEgYWMtYnVmZmVyLWRpY3Rp b25hcnkKICAgICAgICAgICAgKGFwcGx5ICdhcHBlbmQKICAgICAgICAgICAgICAgICAgIGFjLXVz ZXItZGljdGlvbmFyeQogICAgICAgICAgICAgICAgICAgKGFjLW1vZGUtZGljdGlvbmFyeSBtYWpv ci1tb2RlKQogICAgICAgICAgICAgICAgICAgKG1hcGNhciAnYWMtZmlsZS1kaWN0aW9uYXJ5IGFj LWRpY3Rpb25hcnktZmlsZXMpKSkpKSkKCgwKCjs7OzsgQXV0byBjb21wbGV0aW9uIGludGVybmFs cwoKKGRlZnVuIGFjLW1lbnUtYXQtd3JhcHBlci1saW5lLXAgKCkKICAiUmV0dXJuIG5vbi1uaWwg aWYgY3VycmVudCBsaW5lIGlzIGxvbmcgYW5kIHdyYXBwZWQgdG8gbmV4dCB2aXN1YWwgbGluZS4i CiAgKGFuZCAobm90IHRydW5jYXRlLWxpbmVzKQogICAgICAgKGVxIChsaW5lLWJlZ2lubmluZy1w b3NpdGlvbikKICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICh2ZXJ0aWNh bC1tb3Rpb24gMSkKICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKSkpCgoo ZGVmdW4gYWMtc3RvcC13b3JkLXAgKHdvcmQpCiAgKG9yIChtZW1iZXIgd29yZCBhYy1zdG9wLXdv cmRzKQogICAgICAoaWYgYWMtdXNlLWRpY3Rpb25hcnktYXMtc3RvcC13b3JkcwogICAgICAgICAg KG1lbWJlciB3b3JkIChhYy1idWZmZXItZGljdGlvbmFyeSkpKSkpCgooZGVmdW4gYWMtcHJlZml4 LXN5bWJvbCAoKQogICJEZWZhdWx0IHByZWZpeCBkZWZpbml0aW9uIGZ1bmN0aW9uLiIKICAocmVx dWlyZSAndGhpbmdhdHB0KQogIChjYXItc2FmZSAoYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50ICdz eW1ib2wpKSkKKGRlZmFsaWFzICdhYy1wcmVmaXgtZGVmYXVsdCAnYWMtcHJlZml4LXN5bWJvbCkK CihkZWZ1biBhYy1wcmVmaXgtZmlsZSAoKQogICJGaWxlIHByZWZpeC4iCiAgKGxldCAoKHBvaW50 IChyZS1zZWFyY2gtYmFja3dhcmQgIltcIjw+JyBcdFxyXG5dIiBuaWwgdCkpKQogICAgKGlmIHBv aW50ICgxKyBwb2ludCkpKSkKCihkZWZ1biBhYy1wcmVmaXgtdmFsaWQtZmlsZSAoKQogICJFeGlz dGVkIChvciB0byBiZSBleGlzdGVkKSBmaWxlIHByZWZpeC4iCiAgKGxldCogKChsaW5lLWJlZyAo bGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQogICAgICAgICAoZW5kIChwb2ludCkpCiAgICAgICAg IChzdGFydCAob3IgKGxldCAoKHBvaW50IChyZS1zZWFyY2gtYmFja3dhcmQgIltcIjw+Jz0gXHRc clxuXSIgbGluZS1iZWcgdCkpKQogICAgICAgICAgICAgICAgICAgICAgKGlmIHBvaW50ICgxKyBw b2ludCkpKQogICAgICAgICAgICAgICAgICAgIGxpbmUtYmVnKSkKICAgICAgICAgKGZpbGUgKGJ1 ZmZlci1zdWJzdHJpbmcgc3RhcnQgZW5kKSkpCiAgICAoaWYgKGFuZCBmaWxlIChvciAoc3RyaW5n LW1hdGNoICJeLyIgZmlsZSkKICAgICAgICAgICAgICAgICAgICAgIChhbmQgKHNldHEgZmlsZSAo YW5kIChzdHJpbmctbWF0Y2ggIl5bXi9dKi8iIGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDAgZmlsZSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAoZmlsZS1kaXJlY3RvcnktcCBmaWxlKSkpKQogICAgICAgIHN0YXJ0KSkp CgooZGVmdW4gYWMtcHJlZml4LWMtZG90ICgpCiAgIkMtbGlrZSBsYW5ndWFnZXMgZG90KC4pIHBy ZWZpeC4iCiAgKGlmIChyZS1zZWFyY2gtYmFja3dhcmQgIlxcLlxcKFxcKD86W2EtekEtWjAtOV1b X2EtekEtWjAtOV0qXFwpP1xcKVxcPSIgbmlsIHQpCiAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkp KQoKKGRlZnVuIGFjLXByZWZpeC1jLWRvdC1yZWYgKCkKICAiQy1saWtlIGxhbmd1YWdlcyBkb3Qo LikgYW5kIHJlZmVyZW5jZSgtPikgcHJlZml4LiIKICAoaWYgKHJlLXNlYXJjaC1iYWNrd2FyZCAi XFwoPzpcXC5cXHwtPlxcKVxcKFxcKD86W2EtekEtWjAtOV1bX2EtekEtWjAtOV0qXFwpP1xcKVxc PSIgbmlsIHQpCiAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkpKQoKKGRlZnVuIGFjLWRlZmluZS1w cmVmaXggKG5hbWUgcHJlZml4KQogICJEZWZpbmUgbmV3IHByZWZpeCBkZWZpbml0aW9uLgpZb3Ug Y2FuIG5vdCB1c2UgaXQgaW4gc291cmNlIGRlZmluaXRpb24gbGlrZSAocHJlZml4IC4gYE5BTUUn KS4iCiAgKHB1c2ggKGNvbnMgbmFtZSBwcmVmaXgpIGFjLXByZWZpeC1kZWZpbml0aW9ucykpCgoo ZGVmdW4gYWMtbWF0Y2gtc3Vic3RyaW5nIChwcmVmaXggY2FuZGlkYXRlcykKICAobG9vcCB3aXRo IHJlZ2V4cCA9IChyZWdleHAtcXVvdGUgcHJlZml4KQogICAgICAgIGZvciBjYW5kaWRhdGUgaW4g Y2FuZGlkYXRlcwogICAgICAgIGlmIChzdHJpbmctbWF0Y2ggcmVnZXhwIGNhbmRpZGF0ZSkKICAg ICAgICBjb2xsZWN0IGNhbmRpZGF0ZSkpCgooZGVmc3Vic3QgYWMtc291cmNlLWVudGl0eSAoc291 cmNlKQogIChpZiAoc3ltYm9scCBzb3VyY2UpCiAgICAgIChzeW1ib2wtdmFsdWUgc291cmNlKQog ICAgc291cmNlKSkKCihkZWZ1biBhYy1zb3VyY2UtYXZhaWxhYmxlLXAgKHNvdXJjZSkKICAoaWYg KGFuZCAoc3ltYm9scCBzb3VyY2UpCiAgICAgICAgICAgKGdldCBzb3VyY2UgJ2F2YWlsYWJsZSkp CiAgICAgIChlcSAoZ2V0IHNvdXJjZSAnYXZhaWxhYmxlKSB0KQogICAgKGxldCogKChzcmMgKGFj LXNvdXJjZS1lbnRpdHkgc291cmNlKSkKICAgICAgICAgICAoYXZhaWwtcGFpciAoYXNzcSAnYXZh aWxhYmxlIHNyYykpCiAgICAgICAgICAgKGF2YWlsLWNvbmQgKGNkciBhdmFpbC1wYWlyKSkKICAg ICAgICAgICAoYXZhaWxhYmxlIChhbmQgKGlmIGF2YWlsLXBhaXIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzeW1i b2xwIGF2YWlsLWNvbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxs IGF2YWlsLWNvbmQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGlzdHAgYXZh aWwtY29uZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWwgYXZhaWwtY29u ZCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsb29wIGZvciBmZWF0dXJlIGluIChhc3NvYy1kZWZhdWx0ICdkZXBlbmRzIHNyYykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzIChyZXF1aXJlIGZlYXR1cmUg bmlsIHQpIHJldHVybiBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxs eSByZXR1cm4gdCkpKSkKICAgICAgKGlmIChzeW1ib2xwIHNvdXJjZSkKICAgICAgICAgIChwdXQg c291cmNlICdhdmFpbGFibGUgKGlmIGF2YWlsYWJsZSB0ICdubykpKQogICAgICBhdmFpbGFibGUp KSkKCihkZWZ1biBhYy1jb21waWxlLXNvdXJjZXMgKHNvdXJjZXMpCiAgIkNvbXBpbGVkIGBTT1VS Q0VTJyBpbnRvIGV4cGFuZGVkIHNvdXJjZXMgc3R5bGUuIgogIChsb29wIGZvciBzb3VyY2UgaW4g c291cmNlcwogICAgICAgIGlmIChhYy1zb3VyY2UtYXZhaWxhYmxlLXAgc291cmNlKQogICAgICAg IGRvCiAgICAgICAgKHNldHEgc291cmNlIChhYy1zb3VyY2UtZW50aXR5IHNvdXJjZSkpCiAgICAg ICAgKGZsZXQgKChhZGQtYXR0cmlidXRlIChuYW1lIHZhbHVlICZvcHRpb25hbCBhcHBlbmQpIChh ZGQtdG8tbGlzdCAnc291cmNlIChjb25zIG5hbWUgdmFsdWUpIGFwcGVuZCkpKQogICAgICAgICAg OzsgcHJlZml4CiAgICAgICAgICAobGV0KiAoKHByZWZpeCAoYXNzb2MgJ3ByZWZpeCBzb3VyY2Up KQogICAgICAgICAgICAgICAgIChyZWFsIChhc3NvYy1kZWZhdWx0IChjZHIgcHJlZml4KSBhYy1w cmVmaXgtZGVmaW5pdGlvbnMpKSkKICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgIChyZWFs CiAgICAgICAgICAgICAgKGFkZC1hdHRyaWJ1dGUgJ3ByZWZpeCByZWFsKSkKICAgICAgICAgICAg ICgobnVsbCBwcmVmaXgpCiAgICAgICAgICAgICAgKGFkZC1hdHRyaWJ1dGUgJ3ByZWZpeCAnYWMt cHJlZml4LWRlZmF1bHQpKSkpCiAgICAgICAgICA7OyBtYXRjaAogICAgICAgICAgKGxldCAoKG1h dGNoIChhc3NxICdtYXRjaCBzb3VyY2UpKSkKICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAg ICgoZXEgKGNkciBtYXRjaCkgJ3N1YnN0cmluZykKICAgICAgICAgICAgICAoc2V0Y2RyIG1hdGNo ICdhYy1tYXRjaC1zdWJzdHJpbmcpKSkpKQogICAgICAgIGFuZCBjb2xsZWN0IHNvdXJjZSkpCgoo ZGVmdW4gYWMtY29tcGlsZWQtc291cmNlcyAoKQogIChvciBhYy1jb21waWxlZC1zb3VyY2VzCiAg ICAgIChzZXRxIGFjLWNvbXBpbGVkLXNvdXJjZXMKICAgICAgICAgICAgKGFjLWNvbXBpbGUtc291 cmNlcyBhYy1zb3VyY2VzKSkpKQoKKGRlZnN1YnN0IGFjLW1lbnUtbGl2ZS1wICgpCiAgKHBvcHVw LWxpdmUtcCBhYy1tZW51KSkKCihkZWZ1biBhYy1tZW51LWNyZWF0ZSAocG9pbnQgd2lkdGggaGVp Z2h0KQogIChzZXRxIGFjLW1lbnUKICAgICAgICAocG9wdXAtY3JlYXRlIHBvaW50IHdpZHRoIGhl aWdodAogICAgICAgICAgICAgICAgICAgICAgOmFyb3VuZCB0CiAgICAgICAgICAgICAgICAgICAg ICA6ZmFjZSAnYWMtY2FuZGlkYXRlLWZhY2UKICAgICAgICAgICAgICAgICAgICAgIDpzZWxlY3Rp b24tZmFjZSAnYWMtc2VsZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAgIDpzeW1ib2wg dAogICAgICAgICAgICAgICAgICAgICAgOnNjcm9sbC1iYXIgdAogICAgICAgICAgICAgICAgICAg ICAgOm1hcmdpbi1sZWZ0IDEpKSkKCihkZWZ1biBhYy1tZW51LWRlbGV0ZSAoKQogICh3aGVuIGFj LW1lbnUKICAgIChwb3B1cC1kZWxldGUgYWMtbWVudSkKICAgIChzZXRxIGFjLW1lbnUpKSkKCihk ZWZzdWJzdCBhYy1pbmxpbmUtb3ZlcmxheSAoKQogIChudGggMCBhYy1pbmxpbmUpKQoKKGRlZnN1 YnN0IGFjLWlubGluZS1saXZlLXAgKCkKICAoYW5kIGFjLWlubGluZSAoYWMtaW5saW5lLW92ZXJs YXkpIHQpKQoKKGRlZnVuIGFjLWlubGluZS1zaG93IChwb2ludCBzdHJpbmcpCiAgKHVubGVzcyBh Yy1pbmxpbmUKICAgIChzZXRxIGFjLWlubGluZSAobGlzdCBuaWwpKSkKICAoc2F2ZS1leGN1cnNp b24KICAgIChsZXQgKChvdmVybGF5IChhYy1pbmxpbmUtb3ZlcmxheSkpCiAgICAgICAgICAod2lk dGggMCkKICAgICAgICAgIChzdHJpbmctd2lkdGggKHN0cmluZy13aWR0aCBzdHJpbmcpKQogICAg ICAgICAgKGxlbmd0aCAwKQogICAgICAgICAgKG9yaWdpbmFsLXN0cmluZyBzdHJpbmcpKQogICAg ICA7OyBDYWxjdWxhdGUgc3RyaW5nIHNwYWNlIHRvIHNob3cgY29tcGxldGlvbgogICAgICAoZ290 by1jaGFyIHBvaW50KQogICAgICAobGV0IChjKQogICAgICAgICh3aGlsZSAoYW5kIChub3QgKGVv bHApKQogICAgICAgICAgICAgICAgICAgICg8IHdpZHRoIHN0cmluZy13aWR0aCkKICAgICAgICAg ICAgICAgICAgICAoc2V0cSBjIChjaGFyLWFmdGVyKSkKICAgICAgICAgICAgICAgICAgICAobm90 IChlcSBjID9cdCkpKSAgIDsgc3BlY2lhbCBjYXNlIGZvciB0YWIKICAgICAgICAoaW5jZiB3aWR0 aCAoY2hhci13aWR0aCBjKSkKICAgICAgICAoaW5jZiBsZW5ndGgpCiAgICAgICAgKGZvcndhcmQt Y2hhcikpKQoKICAgICAgOzsgU2hvdyBjb21wbGV0aW9uCiAgICAgIChnb3RvLWNoYXIgcG9pbnQp CiAgICAgIChjb25kCiAgICAgICAoKD0gd2lkdGggMCkKICAgICAgICA7OyBFbmQtb2YtbGluZQog ICAgICAgIDs7IERvIG5vdGhpbmcKICAgICAgICApCiAgICAgICAoKDw9IHdpZHRoIHN0cmluZy13 aWR0aCkKICAgICAgICA7OyBObyBzcGFjZSB0byBzaG93CiAgICAgICAgOzsgRG8gbm90aGluZwog ICAgICAgICkKICAgICAgICgoPiB3aWR0aCBzdHJpbmctd2lkdGgpCiAgICAgICAgOzsgTmVlZCB0 byBmaWxsIHNwYWNlCiAgICAgICAgKHNldHEgc3RyaW5nIChjb25jYXQgc3RyaW5nIChtYWtlLXN0 cmluZyAoLSB3aWR0aCBzdHJpbmctd2lkdGgpID8gKSkpKSkKICAgICAgKHNldHEgc3RyaW5nIChw cm9wZXJ0aXplIHN0cmluZyAnZmFjZSAnYWMtY29tcGxldGlvbi1mYWNlKSkKICAgICAgKGlmIG92 ZXJsYXkKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAobW92ZS1vdmVybGF5IG92ZXJsYXkg cG9pbnQgKCsgcG9pbnQgbGVuZ3RoKSkKICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkg J2ludmlzaWJsZSBuaWwpKQogICAgICAgIChzZXRxIG92ZXJsYXkgKG1ha2Utb3ZlcmxheSBwb2lu dCAoKyBwb2ludCBsZW5ndGgpKSkKICAgICAgICAoc2V0ZiAobnRoIDAgYWMtaW5saW5lKSAgb3Zl cmxheSkKICAgICAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAncHJpb3JpdHkgOTk5OSkKICAgICAg ICA7OyBIZWxwIHByZWZpeC1vdmVybGF5IGluIHNvbWUgY2FzZXMKICAgICAgICAob3ZlcmxheS1w dXQgb3ZlcmxheSAna2V5bWFwIGFjLWN1cnJlbnQtbWFwKSkKICAgICAgOzsgVE9ETyBubyB3aWR0 aCBidXQgY2hhcgogICAgICAoaWYgKGVxIGxlbmd0aCAwKQogICAgICAgICAgOzsgQ2FzZTogRW5k LW9mLWxpbmUKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkg MCAxICdjdXJzb3IgdCBzdHJpbmcpCiAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdh ZnRlci1zdHJpbmcgc3RyaW5nKSkKICAgICAgICAobGV0ICgoZGlzcGxheSAoc3Vic3RyaW5nIHN0 cmluZyAwIDEpKQogICAgICAgICAgICAgIChhZnRlci1zdHJpbmcgKHN1YnN0cmluZyBzdHJpbmcg MSkpKQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkgZGlzcGxheSkKICAg ICAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdhZnRlci1zdHJpbmcgYWZ0ZXItc3RyaW5nKSkp CiAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdzdHJpbmcgb3JpZ2luYWwtc3RyaW5nKSkpKQoK KGRlZnVuIGFjLWlubGluZS1kZWxldGUgKCkKICAod2hlbiAoYWMtaW5saW5lLWxpdmUtcCkKICAg IChhYy1pbmxpbmUtaGlkZSkKICAgIChkZWxldGUtb3ZlcmxheSAoYWMtaW5saW5lLW92ZXJsYXkp KQogICAgKHNldHEgYWMtaW5saW5lIG5pbCkpKQoKKGRlZnVuIGFjLWlubGluZS1oaWRlICgpCiAg KHdoZW4gKGFjLWlubGluZS1saXZlLXApCiAgICAobGV0ICgob3ZlcmxheSAoYWMtaW5saW5lLW92 ZXJsYXkpKQogICAgICAgICAgKGJ1ZmZlci11bmRvLWxpc3QgdCkpCiAgICAgICh3aGVuIG92ZXJs YXkKICAgICAgICAobW92ZS1vdmVybGF5IG92ZXJsYXkgKHBvaW50LW1pbikgKHBvaW50LW1pbikp CiAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ludmlzaWJsZSB0KQogICAgICAgIChvdmVy bGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IG5pbCkKICAgICAgICAob3ZlcmxheS1wdXQgb3Zlcmxh eSAnYWZ0ZXItc3RyaW5nIG5pbCkpKSkpCgooZGVmdW4gYWMtaW5saW5lLXVwZGF0ZSAoKQogIChp ZiAoYW5kIGFjLWNvbXBsZXRpbmcgYWMtcHJlZml4IChzdHJpbmdwIGFjLWNvbW1vbi1wYXJ0KSkK ICAgICAgKGxldCAoKGNvbW1vbi1wYXJ0LWxlbmd0aCAobGVuZ3RoIGFjLWNvbW1vbi1wYXJ0KSkK ICAgICAgICAgICAgKHByZWZpeC1sZW5ndGggKGxlbmd0aCBhYy1wcmVmaXgpKSkKICAgICAgICAo aWYgKD4gY29tbW9uLXBhcnQtbGVuZ3RoIHByZWZpeC1sZW5ndGgpCiAgICAgICAgICAgIChwcm9n bgogICAgICAgICAgICAgIChhYy1pbmxpbmUtaGlkZSkKICAgICAgICAgICAgICAoYWMtaW5saW5l LXNob3cgKHBvaW50KSAoc3Vic3RyaW5nIGFjLWNvbW1vbi1wYXJ0IHByZWZpeC1sZW5ndGgpKSkK ICAgICAgICAgIChhYy1pbmxpbmUtZGVsZXRlKSkpCiAgICAoYWMtaW5saW5lLWRlbGV0ZSkpKQoK KGRlZnVuIGFjLXB1dC1wcmVmaXgtb3ZlcmxheSAoKQogICh1bmxlc3MgYWMtcHJlZml4LW92ZXJs YXkKICAgIChsZXQgKG5ld2xpbmUpCiAgICAgIDs7IEluc2VydCBuZXdsaW5lIHRvIG1ha2Ugc3Vy ZSB0aGF0IGN1cnNvciBhbHdheXMgb24gdGhlIG92ZXJsYXkKICAgICAgKHdoZW4gKGFuZCAoZXEg YWMtcG9pbnQgKHBvaW50LW1heCkpCiAgICAgICAgICAgICAgICAgKGVxIGFjLXBvaW50IChwb2lu dCkpKQogICAgICAgIChwb3B1cC1zYXZlLWJ1ZmZlci1zdGF0ZQogICAgICAgICAgKGluc2VydCAi XG4iKSkKICAgICAgICAoc2V0cSBuZXdsaW5lIHQpKQogICAgICAoc2V0cSBhYy1wcmVmaXgtb3Zl cmxheSAobWFrZS1vdmVybGF5IGFjLXBvaW50ICgxKyAocG9pbnQpKSBuaWwgdCB0KSkKICAgICAg KG92ZXJsYXktcHV0IGFjLXByZWZpeC1vdmVybGF5ICdwcmlvcml0eSA5OTk5KQogICAgICAob3Zl cmxheS1wdXQgYWMtcHJlZml4LW92ZXJsYXkgJ2tleW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkK ICAgICAgKG92ZXJsYXktcHV0IGFjLXByZWZpeC1vdmVybGF5ICduZXdsaW5lIG5ld2xpbmUpKSkp CgooZGVmdW4gYWMtcmVtb3ZlLXByZWZpeC1vdmVybGF5ICgpCiAgKHdoZW4gYWMtcHJlZml4LW92 ZXJsYXkKICAgICh3aGVuIChvdmVybGF5LWdldCBhYy1wcmVmaXgtb3ZlcmxheSAnbmV3bGluZSkK ICAgICAgOzsgUmVtb3ZlIGluc2VydGVkIG5ld2xpbmUKICAgICAgKHBvcHVwLXNhdmUtYnVmZmVy LXN0YXRlCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAoaWYgKGVxIChj aGFyLWJlZm9yZSkgP1xuKQogICAgICAgICAgICAoZGVsZXRlLWNoYXIgLTEpKSkpCiAgICAoZGVs ZXRlLW92ZXJsYXkgYWMtcHJlZml4LW92ZXJsYXkpKSkKCihkZWZ1biBhYy1hY3RpdmF0ZS1jb21w bGV0aW5nLW1hcCAoKQogIChpZiAoYW5kIGFjLXNob3ctbWVudSBhYy11c2UtbWVudS1tYXApCiAg ICAgIChzZXQta2V5bWFwLXBhcmVudCBhYy1jdXJyZW50LW1hcCBhYy1tZW51LW1hcCkpCiAgKHdo ZW4gKGFuZCBhYy11c2Utb3ZlcnJpZGluZy1sb2NhbC1tYXAKICAgICAgICAgICAgIChudWxsIG92 ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwKSkKICAgIChzZXRxIG92ZXJyaWRpbmctdGVybWlu YWwtbG9jYWwtbWFwIGFjLWN1cnJlbnQtbWFwKSkKICAod2hlbiBhYy1wcmVmaXgtb3ZlcmxheQog ICAgKHNldC1rZXltYXAtcGFyZW50IChvdmVybGF5LWdldCBhYy1wcmVmaXgtb3ZlcmxheSAna2V5 bWFwKSBhYy1jdXJyZW50LW1hcCkpKQoKKGRlZnVuIGFjLWRlYWN0aXZhdGUtY29tcGxldGluZy1t YXAgKCkKICAoc2V0LWtleW1hcC1wYXJlbnQgYWMtY3VycmVudC1tYXAgYWMtY29tcGxldGluZy1t YXApCiAgKHdoZW4gKGFuZCBhYy11c2Utb3ZlcnJpZGluZy1sb2NhbC1tYXAKICAgICAgICAgICAg IChlcSBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBhYy1jdXJyZW50LW1hcCkpCiAgICAo c2V0cSBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBuaWwpKQogICh3aGVuIGFjLXByZWZp eC1vdmVybGF5CiAgICAoc2V0LWtleW1hcC1wYXJlbnQgKG92ZXJsYXktZ2V0IGFjLXByZWZpeC1v dmVybGF5ICdrZXltYXApIG5pbCkpKQoKKGRlZnN1YnN0IGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSAo KQogIChpZiBhYy1tZW51CiAgICAgIChwb3B1cC1zZWxlY3RlZC1pdGVtIGFjLW1lbnUpKSkKCihk ZWZ1biBhYy1wcmVmaXggKHJlcXVpcmVzIGlnbm9yZS1saXN0KQogIChsb29wIHdpdGggY3VycmVu dCA9IChwb2ludCkKICAgICAgICB3aXRoIHBvaW50CiAgICAgICAgd2l0aCBwcmVmaXgtZGVmCiAg ICAgICAgd2l0aCBzb3VyY2VzCiAgICAgICAgZm9yIHNvdXJjZSBpbiAoYWMtY29tcGlsZWQtc291 cmNlcykKICAgICAgICBmb3IgcHJlZml4ID0gKGFzc29jLWRlZmF1bHQgJ3ByZWZpeCBzb3VyY2Up CiAgICAgICAgZm9yIHJlcSA9IChvciAoYXNzb2MtZGVmYXVsdCAncmVxdWlyZXMgc291cmNlKSBy ZXF1aXJlcyAxKQoKICAgICAgICBpZiAobnVsbCBwcmVmaXgtZGVmKQogICAgICAgIGRvCiAgICAg ICAgKHVubGVzcyAobWVtYmVyIHByZWZpeCBpZ25vcmUtbGlzdCkKICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAgICAgICAoc2V0cSBwb2ludCAoY29uZAogICAgICAgICAgICAgICAgICAg ICAgICAgKChzeW1ib2xwIHByZWZpeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCBwcmVmaXgpKQogICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmdwIHByZWZpeCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChyZS1zZWFyY2gtYmFja3dhcmQgKGNvbmNhdCBw cmVmaXggIlxcPSIpIG5pbCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yICht YXRjaC1iZWdpbm5pbmcgMSkgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgKChzdHJpbmdwIChjYXItc2FmZSBwcmVmaXgpKQogICAgICAgICAgICAgICAgICAg ICAgICAgIChsZXQgKChyZWdleHAgKG50aCAwIHByZWZpeCkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVuZCAobnRoIDEgcHJlZml4KSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ3JvdXAgKG50aCAyIHByZWZpeCkpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFuZCAocmUtc2VhcmNoLWJhY2t3YXJkIChjb25jYXQgcmVnZXhwICJcXD0iKSBuaWwgdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGlmIGVuZCAnbWF0Y2gt ZW5kICdtYXRjaC1iZWdpbm5pbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChvciBncm91cCAwKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICh0CiAgICAg ICAgICAgICAgICAgICAgICAgICAgKGV2YWwgcHJlZml4KSkpKQogICAgICAgICAgICAoaWYgKGFu ZCBwb2ludAogICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcnAgcmVxKQogICAgICAgICAgICAg ICAgICAgICAoPCAoLSBjdXJyZW50IHBvaW50KSByZXEpKQogICAgICAgICAgICAgICAgKHNldHEg cG9pbnQgbmlsKSkKICAgICAgICAgICAgKGlmIHBvaW50CiAgICAgICAgICAgICAgICAoc2V0cSBw cmVmaXgtZGVmIHByZWZpeCkpKSkKICAgICAgICAKICAgICAgICBpZiAoZXF1YWwgcHJlZml4IHBy ZWZpeC1kZWYpIGRvIChwdXNoIHNvdXJjZSBzb3VyY2VzKQoKICAgICAgICBmaW5hbGx5IHJldHVy bgogICAgICAgIChhbmQgcG9pbnQgKGxpc3QgcHJlZml4LWRlZiBwb2ludCAobnJldmVyc2Ugc291 cmNlcykpKSkpCgooZGVmdW4gYWMtaW5pdCAoKQogICJJbml0aWFsaXplIGN1cnJlbnQgc291cmNl cyB0byBzdGFydCBjb21wbGV0aW9uLiIKICAoc2V0cSBhYy1jYW5kaWRhdGVzLWNhY2hlIG5pbCkK ICAobG9vcCBmb3Igc291cmNlIGluIGFjLWN1cnJlbnQtc291cmNlcwogICAgICAgIGZvciBmdW5j dGlvbiA9IChhc3NvYy1kZWZhdWx0ICdpbml0IHNvdXJjZSkKICAgICAgICBpZiBmdW5jdGlvbiBk bwogICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgKGNvbmQKICAgICAgICAgICAoKGZ1 bmN0aW9ucCBmdW5jdGlvbikKICAgICAgICAgICAgKGZ1bmNhbGwgZnVuY3Rpb24pKQogICAgICAg ICAgICh0CiAgICAgICAgICAgIChldmFsIGZ1bmN0aW9uKSkpKSkpCgooZGVmdW4gYWMtY2FuZGlk YXRlcy0xIChzb3VyY2UpCiAgKGxldCogKChkby1jYWNoZSAoYXNzcSAnY2FjaGUgc291cmNlKSkK ICAgICAgICAgKGZ1bmN0aW9uIChhc3NvYy1kZWZhdWx0ICdjYW5kaWRhdGVzIHNvdXJjZSkpCiAg ICAgICAgIChhY3Rpb24gKGFzc29jLWRlZmF1bHQgJ2FjdGlvbiBzb3VyY2UpKQogICAgICAgICAo ZG9jdW1lbnQgKGFzc29jLWRlZmF1bHQgJ2RvY3VtZW50IHNvdXJjZSkpCiAgICAgICAgIChzeW1i b2wgKGFzc29jLWRlZmF1bHQgJ3N5bWJvbCBzb3VyY2UpKQogICAgICAgICAoYWMtbGltaXQgKG9y IChhc3NvYy1kZWZhdWx0ICdsaW1pdCBzb3VyY2UpIGFjLWxpbWl0KSkKICAgICAgICAgKGZhY2Ug KG9yIChhc3NvYy1kZWZhdWx0ICdmYWNlIHNvdXJjZSkgKGFzc29jLWRlZmF1bHQgJ2NhbmRpZGF0 ZS1mYWNlIHNvdXJjZSkpKQogICAgICAgICAoc2VsZWN0aW9uLWZhY2UgKGFzc29jLWRlZmF1bHQg J3NlbGVjdGlvbi1mYWNlIHNvdXJjZSkpCiAgICAgICAgIChjYWNoZSAoYW5kIGRvLWNhY2hlIChh c3NxIHNvdXJjZSBhYy1jYW5kaWRhdGVzLWNhY2hlKSkpCiAgICAgICAgIChjYW5kaWRhdGVzIChj ZHIgY2FjaGUpKSkKICAgICh1bmxlc3MgY2FjaGUKICAgICAgKHNldHEgY2FuZGlkYXRlcyAoc2F2 ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAg ICAgICAgICAgICAgKChmdW5jdGlvbnAgZnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIGZ1bmN0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAodAogICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXZhbCBmdW5jdGlvbikpKSkpCiAgICAgIDs7IENvbnZl cnQgKG5hbWUgdmFsdWUpIGZvcm1hdCBjYW5kaWRhdGVzIGludG8gbmFtZSB3aXRoIHRleHQgcHJv cGVydGllcy4KICAgICAgKHNldHEgY2FuZGlkYXRlcyAobWFwY2FyIChsYW1iZGEgKGNhbmRpZGF0 ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChjb25zcCBjYW5kaWRhdGUp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAoY2FyIGNh bmRpZGF0ZSkgJ3ZhbHVlIChjZHIgY2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fu ZGlkYXRlcykpCiAgICAgICh3aGVuIGRvLWNhY2hlCiAgICAgICAgKHB1c2ggKGNvbnMgc291cmNl IGNhbmRpZGF0ZXMpIGFjLWNhbmRpZGF0ZXMtY2FjaGUpKSkKICAgIChzZXRxIGNhbmRpZGF0ZXMg KGZ1bmNhbGwgKG9yIChhc3NvYy1kZWZhdWx0ICdtYXRjaCBzb3VyY2UpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhYy1tYXRjaC1mdW5jdGlvbikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgOzsgUmVtb3ZlIGV4dHJhIGl0 ZW1zIHJlZ2FyZGluZyB0byBhYy1saW1pdAogICAgKGlmIChhbmQgKGludGVnZXJwIGFjLWxpbWl0 KSAoPiBhYy1saW1pdCAxKSAoPiAobGVuZ3RoIGNhbmRpZGF0ZXMpIGFjLWxpbWl0KSkKICAgICAg ICAoc2V0Y2RyIChudGhjZHIgKDEtIGFjLWxpbWl0KSBjYW5kaWRhdGVzKSBuaWwpKQogICAgOzsg UHV0IGNhbmRpZGF0ZSBwcm9wZXJ0aWVzCiAgICAoc2V0cSBjYW5kaWRhdGVzIChtYXBjYXIgKGxh bWJkYSAoY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcHVwLWl0 ZW0tcHJvcGVydGl6ZSBjYW5kaWRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbiBhY3Rpb24KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bWJvbCBzeW1ib2wKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvY3VtZW50IGRv Y3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdwb3B1cC1mYWNlIGZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3NlbGVjdGlvbi1mYWNlIHNlbGVjdGlvbi1mYWNlKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzKSkKICAgIGNhbmRpZGF0ZXMpKQoKKGRl ZnVuIGFjLWNhbmRpZGF0ZXMgKCkKICAiUHJvZHVjZSBjYW5kaWRhdGVzIGZvciBjdXJyZW50IHNv dXJjZXMuIgogIChsb29wIHdpdGggY29tcGxldGlvbi1pZ25vcmUtY2FzZSA9IChvciAoZXEgYWMt aWdub3JlLWNhc2UgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGFuZCAoZXEgYWMtaWdub3JlLWNhc2UgJ3NtYXJ0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkpIChub3Qg KHN0cmluZy1tYXRjaCAiW1s6dXBwZXI6XV0iIGFjLXByZWZpeCkpKSkpCiAgICAgICAgd2l0aCBj YXNlLWZvbGQtc2VhcmNoID0gY29tcGxldGlvbi1pZ25vcmUtY2FzZQogICAgICAgIHdpdGggcHJl Zml4LWxlbiA9IChsZW5ndGggYWMtcHJlZml4KQogICAgICAgIGZvciBzb3VyY2UgaW4gYWMtY3Vy cmVudC1zb3VyY2VzCiAgICAgICAgYXBwZW5kIChhYy1jYW5kaWRhdGVzLTEgc291cmNlKSBpbnRv IGNhbmRpZGF0ZXMKICAgICAgICBmaW5hbGx5IHJldHVybgogICAgICAgIChwcm9nbgogICAgICAg ICAgKGRlbGV0ZS1kdXBzIGNhbmRpZGF0ZXMpCiAgICAgICAgICAoaWYgKGFuZCBhYy11c2UtY29t cGhpc3QgYWMtY29tcGhpc3QpCiAgICAgICAgICAgICAgKGlmIGFjLXNob3ctbWVudQogICAgICAg ICAgICAgICAgICAobGV0KiAoKHBhaXIgKGFjLWNvbXBoaXN0LXNvcnQgYWMtY29tcGhpc3QgY2Fu ZGlkYXRlcyBwcmVmaXgtbGVuIGFjLWNvbXBoaXN0LXRocmVzaG9sZCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAobiAoY2FyIHBhaXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3Vs dCAoY2RyIHBhaXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKGlmICg+IG4gMCkg KG50aGNkciAoMS0gbikgcmVzdWx0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChj ZHIgY29ucykpKQogICAgICAgICAgICAgICAgICAgIChpZiBjb25zIChzZXRjZHIgY29ucyBuaWwp KQogICAgICAgICAgICAgICAgICAgIChzZXRxIGFjLWNvbW1vbi1wYXJ0ICh0cnktY29tcGxldGlv biBhYy1wcmVmaXggcmVzdWx0KSkKICAgICAgICAgICAgICAgICAgICAoc2V0cSBhYy13aG9sZS1j b21tb24tcGFydCAodHJ5LWNvbXBsZXRpb24gYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgICAg ICAgICAgICAgICAgIChpZiBjb25zIChzZXRjZHIgY29ucyBjZHIpKQogICAgICAgICAgICAgICAg ICAgIHJlc3VsdCkKICAgICAgICAgICAgICAgIChzZXRxIGNhbmRpZGF0ZXMgKGFjLWNvbXBoaXN0 LXNvcnQgYWMtY29tcGhpc3QgY2FuZGlkYXRlcyBwcmVmaXgtbGVuKSkKICAgICAgICAgICAgICAg IChzZXRxIGFjLWNvbW1vbi1wYXJ0IChpZiBjYW5kaWRhdGVzIChwb3B1cC14LXRvLXN0cmluZyAo Y2FyIGNhbmRpZGF0ZXMpKSkpCiAgICAgICAgICAgICAgICAoc2V0cSBhYy13aG9sZS1jb21tb24t cGFydCAodHJ5LWNvbXBsZXRpb24gYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgICAgICAgICAg ICAgY2FuZGlkYXRlcykKICAgICAgICAgICAgKHNldHEgYWMtY29tbW9uLXBhcnQgKHRyeS1jb21w bGV0aW9uIGFjLXByZWZpeCBjYW5kaWRhdGVzKSkKICAgICAgICAgICAgKHNldHEgYWMtd2hvbGUt Y29tbW9uLXBhcnQgYWMtY29tbW9uLXBhcnQpCiAgICAgICAgICAgIGNhbmRpZGF0ZXMpKSkpCgoo ZGVmdW4gYWMtdXBkYXRlLWNhbmRpZGF0ZXMgKGN1cnNvciBzY3JvbGwtdG9wKQogICJVcGRhdGUg Y2FuZGlkYXRlcyBvZiBtZW51IHRvIGBhYy1jYW5kaWRhdGVzJyBhbmQgcmVkcmF3IGl0LiIKICAo c2V0ZiAocG9wdXAtY3Vyc29yIGFjLW1lbnUpIGN1cnNvcgogICAgICAgIChwb3B1cC1zY3JvbGwt dG9wIGFjLW1lbnUpIHNjcm9sbC10b3ApCiAgKHNldHEgYWMtZHdpbS1lbmFibGUgKD0gKGxlbmd0 aCBhYy1jYW5kaWRhdGVzKSAxKSkKICAoaWYgYWMtY2FuZGlkYXRlcwogICAgICAocHJvZ24KICAg ICAgICAoc2V0cSBhYy1jb21wbGV0aW5nIHQpCiAgICAgICAgKGFjLWFjdGl2YXRlLWNvbXBsZXRp bmctbWFwKSkKICAgIChzZXRxIGFjLWNvbXBsZXRpbmcgbmlsKQogICAgKGFjLWRlYWN0aXZhdGUt Y29tcGxldGluZy1tYXApKQogIChhYy1pbmxpbmUtdXBkYXRlKQogIChwb3B1cC1zZXQtbGlzdCBh Yy1tZW51IGFjLWNhbmRpZGF0ZXMpCiAgKGlmIChhbmQgKG5vdCBhYy1mdXp6eS1lbmFibGUpCiAg ICAgICAgICAgKDw9IChsZW5ndGggYWMtY2FuZGlkYXRlcykgMSkpCiAgICAgIChwb3B1cC1oaWRl IGFjLW1lbnUpCiAgICAoaWYgYWMtc2hvdy1tZW51CiAgICAgICAgKHBvcHVwLWRyYXcgYWMtbWVu dSkpKSkKCihkZWZ1biBhYy1yZXBvc2l0aW9uICgpCiAgIkZvcmNlIHRvIHJlZHJhdyBjYW5kaWRh dGUgbWVudSB3aXRoIGN1cnJlbnQgYGFjLWNhbmRpZGF0ZXMnLiIKICAobGV0ICgoY3Vyc29yIChw b3B1cC1jdXJzb3IgYWMtbWVudSkpCiAgICAgICAgKHNjcm9sbC10b3AgKHBvcHVwLXNjcm9sbC10 b3AgYWMtbWVudSkpCiAgICAgICAgKGhlaWdodCAocG9wdXAtaGVpZ2h0IGFjLW1lbnUpKSkKICAg IChhYy1tZW51LWRlbGV0ZSkKICAgIChhYy1tZW51LWNyZWF0ZSBhYy1wb2ludCAocG9wdXAtcHJl ZmVycmVkLXdpZHRoIGFjLWNhbmRpZGF0ZXMpIGhlaWdodCkKICAgIChhYy11cGRhdGUtY2FuZGlk YXRlcyBjdXJzb3Igc2Nyb2xsLXRvcCkpKQoKKGRlZnVuIGFjLWNsZWFudXAgKCkKICAiQ2xlYW51 cCBhdXRvIGNvbXBsZXRpb24uIgogIChpZiBhYy1jdXJzb3ItY29sb3IKICAgICAgKHNldC1jdXJz b3ItY29sb3IgYWMtY3Vyc29yLWNvbG9yKSkKICAod2hlbiAoYW5kIGFjLXVzZS1jb21waGlzdCBh Yy1jb21waGlzdCkKICAgICh3aGVuIChhbmQgKG51bGwgYWMtc2VsZWN0ZWQtY2FuZGlkYXRlKQog ICAgICAgICAgICAgICAobWVtYmVyIGFjLXByZWZpeCBhYy1jYW5kaWRhdGVzKSkKICAgICAgOzsg QXNzdW1lIGNhbmRpZGF0ZSBpcyBzZWxlY3RlZCBieSBqdXN0IHR5cGluZwogICAgICAoc2V0cSBh Yy1zZWxlY3RlZC1jYW5kaWRhdGUgYWMtcHJlZml4KQogICAgICAoc2V0cSBhYy1sYXN0LXBvaW50 IGFjLXBvaW50KSkKICAgICh3aGVuIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZQogICAgICAoYWMtY29t cGhpc3QtYWRkIGFjLWNvbXBoaXN0CiAgICAgICAgICAgICAgICAgICAgICAgYWMtc2VsZWN0ZWQt Y2FuZGlkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgKGlmIGFjLWxhc3QtcG9pbnQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKC0gYWMtbGFzdC1wb2ludCBhYy1wb2ludCkKICAgICAgICAg ICAgICAgICAgICAgICAgIChsZW5ndGggYWMtcHJlZml4KSkpKSkKICAoYWMtZGVhY3RpdmF0ZS1j b21wbGV0aW5nLW1hcCkKICAoYWMtcmVtb3ZlLXByZWZpeC1vdmVybGF5KQogIChhYy1yZW1vdmUt cXVpY2staGVscCkKICAoYWMtaW5saW5lLWRlbGV0ZSkKICAoYWMtbWVudS1kZWxldGUpCiAgKGFj LWNhbmNlbC10aW1lcikKICAoYWMtY2FuY2VsLXNob3ctbWVudS10aW1lcikKICAoYWMtY2FuY2Vs LXF1aWNrLWhlbHAtdGltZXIpCiAgKHNldHEgYWMtY3Vyc29yLWNvbG9yIG5pbAogICAgICAgIGFj LWlubGluZSBuaWwKICAgICAgICBhYy1zaG93LW1lbnUgbmlsCiAgICAgICAgYWMtbWVudSBuaWwK ICAgICAgICBhYy1jb21wbGV0aW5nIG5pbAogICAgICAgIGFjLXBvaW50IG5pbAogICAgICAgIGFj LWxhc3QtcG9pbnQgbmlsCiAgICAgICAgYWMtcHJlZml4IG5pbAogICAgICAgIGFjLXByZWZpeC1v dmVybGF5IG5pbAogICAgICAgIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBuaWwKICAgICAgICBhYy1j b21tb24tcGFydCBuaWwKICAgICAgICBhYy13aG9sZS1jb21tb24tcGFydCBuaWwKICAgICAgICBh Yy10cmlnZ2VyZWQgbmlsCiAgICAgICAgYWMtbGltaXQgbmlsCiAgICAgICAgYWMtY2FuZGlkYXRl cyBuaWwKICAgICAgICBhYy1jYW5kaWRhdGVzLWNhY2hlIG5pbAogICAgICAgIGFjLWZ1enp5LWVu YWJsZSBuaWwKICAgICAgICBhYy1kd2ltLWVuYWJsZSBuaWwKICAgICAgICBhYy1jb21waWxlZC1z b3VyY2VzIG5pbAogICAgICAgIGFjLWN1cnJlbnQtc291cmNlcyBuaWwKICAgICAgICBhYy1jdXJy ZW50LXByZWZpeC1kZWYgbmlsCiAgICAgICAgYWMtaWdub3JpbmctcHJlZml4LWRlZiBuaWwpKQoK KGRlZnN1YnN0IGFjLWFib3J0ICgpCiAgIkFib3J0IGNvbXBsZXRpb24uIgogIChhYy1jbGVhbnVw KSkKCihkZWZ1biBhYy1leHBhbmQtc3RyaW5nIChzdHJpbmcgJm9wdGlvbmFsIHJlbW92ZS11bmRv LWJvdW5kYXJ5KQogICJFeHBhbmQgYFNUUklORycgaW50byB0aGUgYnVmZmVyIGFuZCB1cGRhdGUg YGFjLXByZWZpeCcgdG8gYFNUUklORycuClRoaXMgZnVuY3Rpb24gcmVjb3JkcyBkZWxldGlvbiBh bmQgaW5zZXJ0aW9uIHNlcXVlbmNlcyBieSBgdW5kby1ib3VuZGFyeScuCklmIGByZW1vdmUtdW5k by1ib3VuZGFyeScgaXMgbm9uLW5pbCwgdGhpcyBmdW5jdGlvbiBhbHNvIHJlbW92ZXMgYHVuZG8t Ym91bmRhcnknCnRoYXQgaGF2ZSBiZWVuIG1hZGUgYmVmb3JlIGluIHRoaXMgZnVuY3Rpb24uIgog ICh3aGVuIChub3QgKGVxdWFsIHN0cmluZyAoYnVmZmVyLXN1YnN0cmluZyBhYy1wb2ludCAocG9p bnQpKSkpCiAgICAodW5kby1ib3VuZGFyeSkKICAgIDs7IFdlIGNhbid0IHVzZSBwcmltaXRpdmUt dW5kbyBzaW5jZSBpdCB1bmRvZXMgYnkKICAgIDs7IGdyb3VwcywgZGl2aWRlZCBieSBib3VuZGFy aWVzLgogICAgOzsgV2UgZG9uJ3Qgd2FudCBib3VuZGFyeSBiZXR3ZWVuIGRlbGV0aW9uIGFuZCBp bnNlcnRpb24uCiAgICA7OyBTbyBkbyBpdCBtYW51YWxseS4KICAgIDs7IERlbGV0ZSByZWdpb24g c2lsZW50bHkgZm9yIHVuZG86CiAgICAoaWYgcmVtb3ZlLXVuZG8tYm91bmRhcnkKICAgICAgICAo cHJvZ24KICAgICAgICAgIChsZXQgKGJ1ZmZlci11bmRvLWxpc3QpCiAgICAgICAgICAgIChzYXZl LWV4Y3Vyc2lvbgogICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGFjLXBvaW50IChwb2ludCkp KSkKICAgICAgICAgIChzZXRxIGJ1ZmZlci11bmRvLWxpc3QKICAgICAgICAgICAgICAgIChudGhj ZHIgMiBidWZmZXItdW5kby1saXN0KSkpCiAgICAgIChkZWxldGUtcmVnaW9uIGFjLXBvaW50IChw b2ludCkpKQogICAgKGluc2VydCBzdHJpbmcpCiAgICA7OyBTb21ldGltZXMsIHBvc3NpYmxlIHdo ZW4gb21uaS1jb21wbGV0aW9uIHVzZWQsIChpbnNlcnQpIGFkZGVkCiAgICA7OyB0byBidWZmZXIt dW5kby1saXN0IHN0cmFuZ2UgcmVjb3JkIGFib3V0IHBvc2l0aW9uIGNoYW5nZXMuCiAgICA7OyBE ZWxldGUgaXQgaGVyZToKICAgICh3aGVuIChhbmQgcmVtb3ZlLXVuZG8tYm91bmRhcnkKICAgICAg ICAgICAgICAgKGludGVnZXJwIChjYWRyIGJ1ZmZlci11bmRvLWxpc3QpKSkKICAgICAgKHNldGNk ciBidWZmZXItdW5kby1saXN0IChudGhjZHIgMiBidWZmZXItdW5kby1saXN0KSkpCiAgICAodW5k by1ib3VuZGFyeSkKICAgIChzZXRxIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBzdHJpbmcpCiAgICAo c2V0cSBhYy1wcmVmaXggc3RyaW5nKSkpCgooZGVmdW4gYWMtc2V0LXRyaWdnZXIta2V5IChrZXkp CiAgIlNldCBgYWMtdHJpZ2dlci1rZXknIHRvIGBLRVknLiBJdCBpcyByZWNvbW1lbWRlZCB0byB1 c2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGNhbGxpbmcgYHNldHEnLiIKICA7OyBSZW1vdmUg b2xkIG1hcHBpbmcKICAod2hlbiBhYy10cmlnZ2VyLWtleQogICAgKGRlZmluZS1rZXkgYWMtbW9k ZS1tYXAgKHJlYWQta2JkLW1hY3JvIGFjLXRyaWdnZXIta2V5KSBuaWwpKQoKICA7OyBNYWtlIG5l dyBtYXBwaW5nCiAgKHNldHEgYWMtdHJpZ2dlci1rZXkga2V5KQogICh3aGVuIGtleQogICAgKGRl ZmluZS1rZXkgYWMtbW9kZS1tYXAgKHJlYWQta2JkLW1hY3JvIGtleSkgJ2FjLXRyaWdnZXIta2V5 LWNvbW1hbmQpKSkKCihkZWZ1biBhYy1zZXQtdGltZXIgKCkKICAodW5sZXNzIGFjLXRpbWVyCiAg ICAoc2V0cSBhYy10aW1lciAocnVuLXdpdGgtaWRsZS10aW1lciBhYy1kZWxheSBhYy1kZWxheSAn YWMtdXBkYXRlLWdyZWVkeSkpKSkKCihkZWZ1biBhYy1jYW5jZWwtdGltZXIgKCkKICAod2hlbiAo dGltZXJwIGFjLXRpbWVyKQogICAgKGNhbmNlbC10aW1lciBhYy10aW1lcikKICAgIChzZXRxIGFj LXRpbWVyIG5pbCkpKQoKKGRlZnVuIGFjLXVwZGF0ZSAoJm9wdGlvbmFsIGZvcmNlKQogICh3aGVu IChhbmQgYXV0by1jb21wbGV0ZS1tb2RlCiAgICAgICAgICAgICBhYy1wcmVmaXgKICAgICAgICAg ICAgIChvciBhYy10cmlnZ2VyZWQKICAgICAgICAgICAgICAgICBmb3JjZSkKICAgICAgICAgICAg IChub3QgaXNlYXJjaC1tb2RlKSkKICAgIChhYy1wdXQtcHJlZml4LW92ZXJsYXkpCiAgICAoc2V0 cSBhYy1jYW5kaWRhdGVzIChhYy1jYW5kaWRhdGVzKSkKICAgIChsZXQgKChwcmVmZXJyZWQtd2lk dGggKHBvcHVwLXByZWZlcnJlZC13aWR0aCBhYy1jYW5kaWRhdGVzKSkpCiAgICAgIDs7IFJlcG9z aXRpb24gaWYgbmVlZGVkCiAgICAgICh3aGVuIChvciAobnVsbCBhYy1tZW51KQogICAgICAgICAg ICAgICAgKD49IChwb3B1cC13aWR0aCBhYy1tZW51KSBwcmVmZXJyZWQtd2lkdGgpCiAgICAgICAg ICAgICAgICAoPD0gKHBvcHVwLXdpZHRoIGFjLW1lbnUpICgtIHByZWZlcnJlZC13aWR0aCAxMCkp CiAgICAgICAgICAgICAgICAoYW5kICg+IChwb3B1cC1kaXJlY3Rpb24gYWMtbWVudSkgMCkKICAg ICAgICAgICAgICAgICAgICAgKGFjLW1lbnUtYXQtd3JhcHBlci1saW5lLXApKSkKICAgICAgICAo YWMtaW5saW5lLWhpZGUpIDsgSGlkZSBvdmVybGF5IHRvIGNhbGN1bGF0ZSBjb3JyZWN0IGNvbHVt bgogICAgICAgIChhYy1tZW51LWRlbGV0ZSkKICAgICAgICAoYWMtbWVudS1jcmVhdGUgYWMtcG9p bnQgcHJlZmVycmVkLXdpZHRoIGFjLW1lbnUtaGVpZ2h0KSkpCiAgICAoYWMtdXBkYXRlLWNhbmRp ZGF0ZXMgMCAwKQogICAgdCkpCgooZGVmdW4gYWMtdXBkYXRlLWdyZWVkeSAoJm9wdGlvbmFsIGZv cmNlKQogIChsZXQgKHJlc3VsdCkKICAgICh3aGlsZSAod2hlbiAoYW5kIChzZXRxIHJlc3VsdCAo YWMtdXBkYXRlIGZvcmNlKSkKICAgICAgICAgICAgICAgICAgICAgIChudWxsIGFjLWNhbmRpZGF0 ZXMpKQogICAgICAgICAgICAgKGFkZC10by1saXN0ICdhYy1pZ25vcmluZy1wcmVmaXgtZGVmIGFj LWN1cnJlbnQtcHJlZml4LWRlZikKICAgICAgICAgICAgIChhYy1zdGFydCA6Zm9yY2UtaW5pdCB0 KQogICAgICAgICAgICAgYWMtY3VycmVudC1wcmVmaXgtZGVmKSkKICAgIHJlc3VsdCkpCgooZGVm dW4gYWMtc2V0LXNob3ctbWVudS10aW1lciAoKQogICh3aGVuIChhbmQgKG9yIChpbnRlZ2VycCBh Yy1hdXRvLXNob3ctbWVudSkgKGZsb2F0cCBhYy1hdXRvLXNob3ctbWVudSkpCiAgICAgICAgICAg ICAobnVsbCBhYy1zaG93LW1lbnUtdGltZXIpKQogICAgKHNldHEgYWMtc2hvdy1tZW51LXRpbWVy IChydW4td2l0aC1pZGxlLXRpbWVyIGFjLWF1dG8tc2hvdy1tZW51IGFjLWF1dG8tc2hvdy1tZW51 ICdhYy1zaG93LW1lbnUpKSkpCgooZGVmdW4gYWMtY2FuY2VsLXNob3ctbWVudS10aW1lciAoKQog ICh3aGVuICh0aW1lcnAgYWMtc2hvdy1tZW51LXRpbWVyKQogICAgKGNhbmNlbC10aW1lciBhYy1z aG93LW1lbnUtdGltZXIpCiAgICAoc2V0cSBhYy1zaG93LW1lbnUtdGltZXIgbmlsKSkpCgooZGVm dW4gYWMtc2hvdy1tZW51ICgpCiAgKHdoZW4gKG5vdCAoZXEgYWMtc2hvdy1tZW51IHQpKQogICAg KHNldHEgYWMtc2hvdy1tZW51IHQpCiAgICAoYWMtaW5saW5lLWhpZGUpCiAgICAoYWMtcmVtb3Zl LXF1aWNrLWhlbHApCiAgICAoYWMtdXBkYXRlIHQpKSkKCihkZWZ1biBhYy1oZWxwICgmb3B0aW9u YWwgcGVyc2lzdCkKICAoaW50ZXJhY3RpdmUgIlAiKQogICh3aGVuIGFjLW1lbnUKICAgIChwb3B1 cC1tZW51LXNob3ctaGVscCBhYy1tZW51IHBlcnNpc3QpKSkKCihkZWZ1biBhYy1wZXJzaXN0LWhl bHAgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGFjLWhlbHAgdCkpCgooZGVmdW4gYWMtbGFzdC1oZWxw ICgmb3B0aW9uYWwgcGVyc2lzdCkKICAoaW50ZXJhY3RpdmUgIlAiKQogICh3aGVuIGFjLWxhc3Qt Y29tcGxldGlvbgogICAgKHBvcHVwLWl0ZW0tc2hvdy1oZWxwIChjZHIgYWMtbGFzdC1jb21wbGV0 aW9uKSBwZXJzaXN0KSkpCgooZGVmdW4gYWMtbGFzdC1wZXJzaXN0LWhlbHAgKCkKICAoaW50ZXJh Y3RpdmUpCiAgKGFjLWxhc3QtaGVscCB0KSkKCihkZWZ1biBhYy1zZXQtcXVpY2staGVscC10aW1l ciAoKQogICh3aGVuIChhbmQgYWMtdXNlLXF1aWNrLWhlbHAKICAgICAgICAgICAgIChudWxsIGFj LXF1aWNrLWhlbHAtdGltZXIpKQogICAgKHNldHEgYWMtcXVpY2staGVscC10aW1lciAocnVuLXdp dGgtaWRsZS10aW1lciBhYy1xdWljay1oZWxwLWRlbGF5IGFjLXF1aWNrLWhlbHAtZGVsYXkgJ2Fj LXF1aWNrLWhlbHApKSkpCgooZGVmdW4gYWMtY2FuY2VsLXF1aWNrLWhlbHAtdGltZXIgKCkKICAo d2hlbiAodGltZXJwIGFjLXF1aWNrLWhlbHAtdGltZXIpCiAgICAoY2FuY2VsLXRpbWVyIGFjLXF1 aWNrLWhlbHAtdGltZXIpCiAgICAoc2V0cSBhYy1xdWljay1oZWxwLXRpbWVyIG5pbCkpKQoKKGRl ZnVuIGFjLXBvcy10aXAtc2hvdy1xdWljay1oZWxwIChtZW51ICZvcHRpb25hbCBpdGVtICZyZXN0 IGFyZ3MpCiAgKGxldCogKChwb2ludCAocGxpc3QtZ2V0IGFyZ3MgOnBvaW50KSkKICAgICAgICAg KGFyb3VuZCBuaWwpCiAgICAgICAgIChwYXJlbnQtb2Zmc2V0IChwb3B1cC1vZmZzZXQgbWVudSkp CiAgICAgICAgIChkb2MgKHBvcHVwLW1lbnUtZG9jdW1lbnRhdGlvbiBtZW51IGl0ZW0pKSkKICAg ICh3aGVuIChzdHJpbmdwIGRvYykKICAgICAgKGlmIChwb3B1cC1oaWRkZW4tcCBtZW51KQogICAg ICAgICAgKHNldHEgYXJvdW5kIHQpCiAgICAgICAgKHNldHEgcG9pbnQgbmlsKSkKICAgICAgKHdp dGgtbm8td2FybmluZ3MKICAgICAgICAocG9zLXRpcC1zaG93IGRvYwogICAgICAgICAgICAgICAg ICAgICAgJ3BvcHVwLXRpcC1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAob3IgcG9pbnQKICAg ICAgICAgICAgICAgICAgICAgICAgICAoYW5kIG1lbnUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb3B1cC1jaGlsZC1wb2ludCBtZW51IHBhcmVudC1vZmZzZXQpKQogICAgICAgICAg ICAgICAgICAgICAgICAgIChwb2ludCkpCiAgICAgICAgICAgICAgICAgICAgICBuaWwgMAogICAg ICAgICAgICAgICAgICAgICAgcG9wdXAtdGlwLW1heC13aWR0aAogICAgICAgICAgICAgICAgICAg ICAgbmlsIG5pbAogICAgICAgICAgICAgICAgICAgICAgKGFuZCAobm90IGFyb3VuZCkgMCkpCiAg ICAgICAgKHVubGVzcyAocGxpc3QtZ2V0IGFyZ3MgOm5vd2FpdCkKICAgICAgICAgIChjbGVhci10 aGlzLWNvbW1hbmQta2V5cykKICAgICAgICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICAgICAg IChwdXNoIChyZWFkLWV2ZW50IChwbGlzdC1nZXQgYXJncyA6cHJvbXB0KSkgdW5yZWFkLWNvbW1h bmQtZXZlbnRzKQogICAgICAgICAgICAocG9zLXRpcC1oaWRlKSkKICAgICAgICAgIHQpKSkpKQoK KGRlZnVuIGFjLXF1aWNrLWhlbHAtdXNlLXBvcy10aXAtcCAoKQogIChhbmQgYWMtcXVpY2staGVs cC1wcmVmZXItcG9zLXRpcAogICAgICAgd2luZG93LXN5c3RlbQogICAgICAgKGZlYXR1cmVwICdw b3MtdGlwKSkpCgooZGVmdW4gYWMtcXVpY2staGVscCAoJm9wdGlvbmFsIGZvcmNlKQogIChpbnRl cmFjdGl2ZSkKICAod2hlbiAoYW5kIChvciBmb3JjZSAobnVsbCB0aGlzLWNvbW1hbmQpKQogICAg ICAgICAgICAgKGFjLW1lbnUtbGl2ZS1wKQogICAgICAgICAgICAgKG51bGwgYWMtcXVpY2staGVs cCkpCiAgICAgIChzZXRxIGFjLXF1aWNrLWhlbHAKICAgICAgICAgICAgKGZ1bmNhbGwgKGlmIChh Yy1xdWljay1oZWxwLXVzZS1wb3MtdGlwLXApCiAgICAgICAgICAgICAgICAgICAgICAgICAnYWMt cG9zLXRpcC1zaG93LXF1aWNrLWhlbHAKICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtbWVu dS1zaG93LXF1aWNrLWhlbHApCiAgICAgICAgICAgICAgICAgICAgIGFjLW1lbnUgbmlsCiAgICAg ICAgICAgICAgICAgICAgIDpwb2ludCBhYy1wb2ludAogICAgICAgICAgICAgICAgICAgICA6aGVp Z2h0IGFjLXF1aWNrLWhlbHAtaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgIDpub3dhaXQgdCkp KSkKCihkZWZ1biBhYy1yZW1vdmUtcXVpY2staGVscCAoKQogICh3aGVuIChhYy1xdWljay1oZWxw LXVzZS1wb3MtdGlwLXApCiAgICAod2l0aC1uby13YXJuaW5ncwogICAgICAocG9zLXRpcC1oaWRl KSkpCiAgKHdoZW4gYWMtcXVpY2staGVscAogICAgKHBvcHVwLWRlbGV0ZSBhYy1xdWljay1oZWxw KQogICAgKHNldHEgYWMtcXVpY2staGVscCBuaWwpKSkKCihkZWZ1biBhYy1sYXN0LXF1aWNrLWhl bHAgKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFuZCBhYy1sYXN0LWNvbXBsZXRpb24KICAg ICAgICAgICAgIChlcSAobWFya2VyLWJ1ZmZlciAoY2FyIGFjLWxhc3QtY29tcGxldGlvbikpCiAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAobGV0ICgoZG9jIChwb3B1cC1p dGVtLWRvY3VtZW50YXRpb24gKGNkciBhYy1sYXN0LWNvbXBsZXRpb24pKSkKICAgICAgICAgIChw b2ludCAobWFya2VyLXBvc2l0aW9uIChjYXIgYWMtbGFzdC1jb21wbGV0aW9uKSkpKQogICAgICAo d2hlbiAoc3RyaW5ncCBkb2MpCiAgICAgICAgKGlmIChhYy1xdWljay1oZWxwLXVzZS1wb3MtdGlw LXApCiAgICAgICAgICAgICh3aXRoLW5vLXdhcm5pbmdzIChwb3MtdGlwLXNob3cgZG9jIG5pbCBw b2ludCBuaWwgMCkpCiAgICAgICAgICAocG9wdXAtdGlwIGRvYwogICAgICAgICAgICAgICAgICAg ICA6cG9pbnQgcG9pbnQKICAgICAgICAgICAgICAgICAgICAgOmFyb3VuZCB0CiAgICAgICAgICAg ICAgICAgICAgIDpzY3JvbGwtYmFyIHQKICAgICAgICAgICAgICAgICAgICAgOm1hcmdpbiB0KSkp KSkpCgooZGVmbWFjcm8gYWMtZGVmaW5lLXF1aWNrLWhlbHAtY29tbWFuZCAobmFtZSBhcmdsaXN0 ICZyZXN0IGJvZHkpCiAgKGRlY2xhcmUgKGluZGVudCAyKSkKICBgKHByb2duCiAgICAgKGRlZnVu ICxuYW1lICxhcmdsaXN0ICxAYm9keSkKICAgICAocHV0ICcsbmFtZSAnYWMtcXVpY2staGVscC1j b21tYW5kIHQpKSkKCihhYy1kZWZpbmUtcXVpY2staGVscC1jb21tYW5kIGFjLXF1aWNrLWhlbHAt c2Nyb2xsLWRvd24gKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gYWMtcXVpY2staGVscAogICAg KHBvcHVwLXNjcm9sbC1kb3duIGFjLXF1aWNrLWhlbHApKSkKCihhYy1kZWZpbmUtcXVpY2staGVs cC1jb21tYW5kIGFjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwICgpCiAgKGludGVyYWN0aXZlKQogICh3 aGVuIGFjLXF1aWNrLWhlbHAKICAgIChwb3B1cC1zY3JvbGwtdXAgYWMtcXVpY2staGVscCkpKQoK DAoKOzs7OyBBdXRvIGNvbXBsZXRpb24gaXNlYXJjaAoKKGRlZnVuIGFjLWlzZWFyY2gtY2FsbGJh Y2sgKGxpc3QpCiAgKHNldHEgYWMtZHdpbS1lbmFibGUgKGVxIChsZW5ndGggbGlzdCkgMSkpKQoK KGRlZnVuIGFjLWlzZWFyY2ggKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2 ZS1wKQogICAgKGFjLWNhbmNlbC1zaG93LW1lbnUtdGltZXIpCiAgICAoYWMtY2FuY2VsLXF1aWNr LWhlbHAtdGltZXIpCiAgICAoYWMtc2hvdy1tZW51KQogICAgKHBvcHVwLWlzZWFyY2ggYWMtbWVu dSA6Y2FsbGJhY2sgJ2FjLWlzZWFyY2gtY2FsbGJhY2spKSkKCgwKCjs7OzsgQXV0byBjb21wbGV0 aW9uIGNvbW1hbmRzCgooZGVmdW4gYXV0by1jb21wbGV0ZSAoJm9wdGlvbmFsIHNvdXJjZXMpCiAg IlN0YXJ0IGF1dG8tY29tcGxldGlvbiBhdCBjdXJyZW50IHBvaW50LiIKICAoaW50ZXJhY3RpdmUp CiAgKGxldCAoKG1lbnUtbGl2ZSAoYWMtbWVudS1saXZlLXApKQogICAgICAgIChpbmxpbmUtbGl2 ZSAoYWMtaW5saW5lLWxpdmUtcCkpKQogICAgKGFjLWFib3J0KQogICAgKGxldCAoKGFjLXNvdXJj ZXMgKG9yIHNvdXJjZXMgYWMtc291cmNlcykpKQogICAgICAoaWYgKG9yIGFjLXNob3ctbWVudS1p bW1lZGlhdGVseS1vbi1hdXRvLWNvbXBsZXRlCiAgICAgICAgICAgICAgaW5saW5lLWxpdmUpCiAg ICAgICAgICAoc2V0cSBhYy1zaG93LW1lbnUgdCkpCiAgICAgIChhYy1zdGFydCkpCiAgICAod2hl biAoYWMtdXBkYXRlLWdyZWVkeSB0KQogICAgICA7OyBUT0RPIE5vdCB0byBjYXVzZSBpbmxpbmUg Y29tcGxldGlvbiB0byBiZSBkaXNydXB0ZWQuCiAgICAgIChpZiAoYWMtaW5saW5lLWxpdmUtcCkK ICAgICAgICAgIChhYy1pbmxpbmUtaGlkZSkpCiAgICAgIDs7IE5vdCB0byBleHBhbmQgd2hlbiBp dCBpcyBmaXJzdCB0aW1lIHRvIGNvbXBsZXRlCiAgICAgICh3aGVuIChhbmQgKG9yIChhbmQgKG5v dCBhYy1leHBhbmQtb24tYXV0by1jb21wbGV0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAo PiAobGVuZ3RoIGFjLWNhbmRpZGF0ZXMpIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v dCBtZW51LWxpdmUpKQogICAgICAgICAgICAgICAgICAgICAobm90IChsZXQgKChhYy1jb21tb24t cGFydCBhYy13aG9sZS1jb21tb24tcGFydCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YWMtZXhwYW5kLWNvbW1vbikpKSkKICAgICAgICAgICAgICAgICBhYy11c2UtZnV6enkKICAgICAg ICAgICAgICAgICAobnVsbCBhYy1jYW5kaWRhdGVzKSkKICAgICAgICAoYWMtZnV6enktY29tcGxl dGUpKSkpKQoKKGRlZnVuIGFjLWZ1enp5LWNvbXBsZXRlICgpCiAgIlN0YXJ0IGZ1enp5IGNvbXBs ZXRpb24gYXQgY3VycmVudCBwb2ludC4iCiAgKGludGVyYWN0aXZlKQogICh3aGVuIChyZXF1aXJl ICdmdXp6eSBuaWwpCiAgICAodW5sZXNzIChhYy1tZW51LWxpdmUtcCkKICAgICAgKGFjLXN0YXJ0 KSkKICAgIChsZXQgKChhYy1tYXRjaC1mdW5jdGlvbiAnZnV6enktYWxsLWNvbXBsZXRpb25zKSkK ICAgICAgKHVubGVzcyBhYy1jdXJzb3ItY29sb3IKICAgICAgICAoc2V0cSBhYy1jdXJzb3ItY29s b3IgKGZyYW1lLXBhcmFtZXRlciAoc2VsZWN0ZWQtZnJhbWUpICdjdXJzb3ItY29sb3IpKSkKICAg ICAgKGlmIGFjLWZ1enp5LWN1cnNvci1jb2xvcgogICAgICAgICAgKHNldC1jdXJzb3ItY29sb3Ig YWMtZnV6enktY3Vyc29yLWNvbG9yKSkKICAgICAgKHNldHEgYWMtc2hvdy1tZW51IHQpCiAgICAg IChzZXRxIGFjLWZ1enp5LWVuYWJsZSB0KQogICAgICAoc2V0cSBhYy10cmlnZ2VyZWQgbmlsKQog ICAgICAoYWMtdXBkYXRlIHQpKSkKICB0KQoKKGRlZnVuIGFjLW5leHQgKCkKICAiU2VsZWN0IG5l eHQgY2FuZGlkYXRlLiIKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2ZS1wKQog ICAgKHBvcHVwLW5leHQgYWMtbWVudSkKICAgIChzZXRxIGFjLXNob3ctbWVudSB0KQogICAgKGlm IChlcSB0aGlzLWNvbW1hbmQgJ2FjLW5leHQpCiAgICAgICAgKHNldHEgYWMtZHdpbS1lbmFibGUg dCkpKSkKCihkZWZ1biBhYy1wcmV2aW91cyAoKQogICJTZWxlY3QgcHJldmlvdXMgY2FuZGlkYXRl LiIKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2ZS1wKQogICAgKHBvcHVwLXBy ZXZpb3VzIGFjLW1lbnUpCiAgICAoc2V0cSBhYy1zaG93LW1lbnUgdCkKICAgIChpZiAoZXEgdGhp cy1jb21tYW5kICdhYy1wcmV2aW91cykKICAgICAgICAoc2V0cSBhYy1kd2ltLWVuYWJsZSB0KSkp KQoKKGRlZnVuIGFjLWV4cGFuZCAoKQogICJUcnkgZXhwYW5kLCBhbmQgaWYgZXhwYW5kZWQgdHdp Y2UsIHNlbGVjdCBuZXh0IGNhbmRpZGF0ZS4iCiAgKGludGVyYWN0aXZlKQogICh1bmxlc3MgKGFj LWV4cGFuZC1jb21tb24pCiAgICAobGV0ICgoc3RyaW5nIChhYy1zZWxlY3RlZC1jYW5kaWRhdGUp KSkKICAgICAgKHdoZW4gc3RyaW5nCiAgICAgICAgKHdoZW4gKGVxdWFsIGFjLXByZWZpeCBzdHJp bmcpCiAgICAgICAgICAoYWMtbmV4dCkKICAgICAgICAgIChzZXRxIHN0cmluZyAoYWMtc2VsZWN0 ZWQtY2FuZGlkYXRlKSkpCiAgICAgICAgKGFjLWV4cGFuZC1zdHJpbmcgc3RyaW5nIChlcSBsYXN0 LWNvbW1hbmQgdGhpcy1jb21tYW5kKSkKICAgICAgICA7OyBEbyByZXBvc2l0aW9uIGlmIG1lbnUg YXQgbG9uZyBsaW5lCiAgICAgICAgKGlmIChhbmQgKD4gKHBvcHVwLWRpcmVjdGlvbiBhYy1tZW51 KSAwKQogICAgICAgICAgICAgICAgIChhYy1tZW51LWF0LXdyYXBwZXItbGluZS1wKSkKICAgICAg ICAgICAgKGFjLXJlcG9zaXRpb24pKQogICAgICAgIChzZXRxIGFjLXNob3ctbWVudSB0KQogICAg ICAgIHN0cmluZykpKSkKCihkZWZ1biBhYy1leHBhbmQtY29tbW9uICgpCiAgIlRyeSB0byBleHBh bmQgbWVhbmluZ2Z1bCBjb21tb24gcGFydC4iCiAgKGludGVyYWN0aXZlKQogIChpZiAoYW5kIGFj LWR3aW0gYWMtZHdpbS1lbmFibGUpCiAgICAgIChhYy1jb21wbGV0ZSkKICAgICh3aGVuIChhbmQg KGFjLWlubGluZS1saXZlLXApCiAgICAgICAgICAgICAgIGFjLWNvbW1vbi1wYXJ0KQogICAgICAo YWMtaW5saW5lLWhpZGUpIAogICAgICAoYWMtZXhwYW5kLXN0cmluZyBhYy1jb21tb24tcGFydCAo ZXEgbGFzdC1jb21tYW5kIHRoaXMtY29tbWFuZCkpCiAgICAgIChzZXRxIGFjLWNvbW1vbi1wYXJ0 IG5pbCkKICAgICAgdCkpKQoKKGRlZnVuIGFjLWNvbXBsZXRlICgpCiAgIlRyeSBjb21wbGV0ZS4i CiAgKGludGVyYWN0aXZlKQogIChsZXQqICgoY2FuZGlkYXRlIChhYy1zZWxlY3RlZC1jYW5kaWRh dGUpKQogICAgICAgICAoYWN0aW9uIChwb3B1cC1pdGVtLXByb3BlcnR5IGNhbmRpZGF0ZSAnYWN0 aW9uKSkKICAgICAgICAgKGZhbGxiYWNrIG5pbCkpCiAgICAod2hlbiBjYW5kaWRhdGUKICAgICAg KHVubGVzcyAoYWMtZXhwYW5kLXN0cmluZyBjYW5kaWRhdGUpCiAgICAgICAgKHNldHEgZmFsbGJh Y2sgdCkpCiAgICAgIDs7IFJlbWVtYmVyIHRvIHNob3cgaGVscCBsYXRlcgogICAgICAod2hlbiAo YW5kIGFjLXBvaW50IGNhbmRpZGF0ZSkKICAgICAgICAodW5sZXNzIGFjLWxhc3QtY29tcGxldGlv bgogICAgICAgICAgKHNldHEgYWMtbGFzdC1jb21wbGV0aW9uIChjb25zIChtYWtlLW1hcmtlcikg bmlsKSkpCiAgICAgICAgKHNldC1tYXJrZXIgKGNhciBhYy1sYXN0LWNvbXBsZXRpb24pIGFjLXBv aW50IGFjLWJ1ZmZlcikKICAgICAgICAoc2V0Y2RyIGFjLWxhc3QtY29tcGxldGlvbiBjYW5kaWRh dGUpKSkKICAgIChhYy1hYm9ydCkKICAgIChjb25kCiAgICAgKGFjdGlvbgogICAgICAoZnVuY2Fs bCBhY3Rpb24pKQogICAgIChmYWxsYmFjawogICAgICAoYWMtZmFsbGJhY2stY29tbWFuZCkpKQog ICAgY2FuZGlkYXRlKSkKCihkZWZ1biogYWMtc3RhcnQgKCZrZXkKICAgICAgICAgICAgICAgICAg cmVxdWlyZXMKICAgICAgICAgICAgICAgICAgZm9yY2UtaW5pdCkKICAiU3RhcnQgY29tcGxldGlv bi4iCiAgKGludGVyYWN0aXZlKQogIChpZiAobm90IGF1dG8tY29tcGxldGUtbW9kZSkKICAgICAg KG1lc3NhZ2UgImF1dG8tY29tcGxldGUtbW9kZSBpcyBub3QgZW5hYmxlZCIpCiAgICAobGV0KiAo KGluZm8gKGFjLXByZWZpeCByZXF1aXJlcyBhYy1pZ25vcmluZy1wcmVmaXgtZGVmKSkKICAgICAg ICAgICAocHJlZml4LWRlZiAobnRoIDAgaW5mbykpCiAgICAgICAgICAgKHBvaW50IChudGggMSBp bmZvKSkKICAgICAgICAgICAoc291cmNlcyAobnRoIDIgaW5mbykpCiAgICAgICAgICAgcHJlZml4 CiAgICAgICAgICAgKGluaXQgKG9yIGZvcmNlLWluaXQgKG5vdCAoZXEgYWMtcG9pbnQgcG9pbnQp KSkpKQogICAgICAoaWYgKG9yIChudWxsIHBvaW50KQogICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgKHNldHEgcHJlZml4IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMg cG9pbnQgKHBvaW50KSkpCiAgICAgICAgICAgICAgICAoYWMtc3RvcC13b3JkLXAgcHJlZml4KSkp CiAgICAgICAgICAocHJvZzEgbmlsCiAgICAgICAgICAgIChhYy1hYm9ydCkpCiAgICAgICAgKHVu bGVzcyBhYy1jdXJzb3ItY29sb3IKICAgICAgICAgIChzZXRxIGFjLWN1cnNvci1jb2xvciAoZnJh bWUtcGFyYW1ldGVyIChzZWxlY3RlZC1mcmFtZSkgJ2N1cnNvci1jb2xvcikpKQogICAgICAgIChz ZXRxIGFjLXNob3ctbWVudSAob3IgYWMtc2hvdy1tZW51IChpZiAoZXEgYWMtYXV0by1zaG93LW1l bnUgdCkgdCkpCiAgICAgICAgICAgICAgYWMtY3VycmVudC1zb3VyY2VzIHNvdXJjZXMKICAgICAg ICAgICAgICBhYy1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKQogICAgICAgICAgICAgIGFjLXBvaW50 IHBvaW50CiAgICAgICAgICAgICAgYWMtcHJlZml4IHByZWZpeAogICAgICAgICAgICAgIGFjLWxp bWl0IGFjLWNhbmRpZGF0ZS1saW1pdAogICAgICAgICAgICAgIGFjLXRyaWdnZXJlZCB0CiAgICAg ICAgICAgICAgYWMtY3VycmVudC1wcmVmaXgtZGVmIHByZWZpeC1kZWYpCiAgICAgICAgKHdoZW4g KG9yIGluaXQgKG51bGwgYWMtcHJlZml4LW92ZXJsYXkpKQogICAgICAgICAgKGFjLWluaXQpKQog ICAgICAgIChhYy1zZXQtdGltZXIpCiAgICAgICAgKGFjLXNldC1zaG93LW1lbnUtdGltZXIpCiAg ICAgICAgKGFjLXNldC1xdWljay1oZWxwLXRpbWVyKQogICAgICAgIChhYy1wdXQtcHJlZml4LW92 ZXJsYXkpKSkpKQoKKGRlZnVuIGFjLXN0b3AgKCkKICAiU3RvcCBjb21wbGV0aW9uZy4iCiAgKGlu dGVyYWN0aXZlKQogIChzZXRxIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBuaWwpCiAgKGFjLWFib3J0 KSkKCihkZWZ1biBhYy10cmlnZ2VyLWtleS1jb21tYW5kICgmb3B0aW9uYWwgZm9yY2UpCiAgKGlu dGVyYWN0aXZlICJQIikKICAoaWYgKG9yIGZvcmNlIChhYy10cmlnZ2VyLWNvbW1hbmQtcCBsYXN0 LWNvbW1hbmQpKQogICAgICAoYXV0by1jb21wbGV0ZSkKICAgIChhYy1mYWxsYmFjay1jb21tYW5k ICdhYy10cmlnZ2VyLWtleS1jb21tYW5kKSkpCgoMCgo7Ozs7IEJhc2ljIGNhY2hlIGZhY2lsaXR5 CgooZGVmdmFyIGFjLWNsZWFyLXZhcmlhYmxlcy1ldmVyeS1taW51dGUtdGltZXIgbmlsKQooZGVm dmFyIGFjLWNsZWFyLXZhcmlhYmxlcy1hZnRlci1zYXZlIG5pbCkKKGRlZnZhciBhYy1jbGVhci12 YXJpYWJsZXMtZXZlcnktbWludXRlIG5pbCkKKGRlZnZhciBhYy1taW51dGVzLWNvdW50ZXIgMCkK CihkZWZ1biBhYy1jbGVhci12YXJpYWJsZS1hZnRlci1zYXZlICh2YXJpYWJsZSAmb3B0aW9uYWwg cHJlZCkKICAoYWRkLXRvLWxpc3QgJ2FjLWNsZWFyLXZhcmlhYmxlcy1hZnRlci1zYXZlIChjb25z IHZhcmlhYmxlIHByZWQpKSkKCihkZWZ1biBhYy1jbGVhci12YXJpYWJsZXMtYWZ0ZXItc2F2ZSAo KQogIChkb2xpc3QgKHBhaXIgYWMtY2xlYXItdmFyaWFibGVzLWFmdGVyLXNhdmUpCiAgICAoaWYg KG9yIChudWxsIChjZHIgcGFpcikpCiAgICAgICAgICAgIChmdW5jYWxsIChjZHIgcGFpcikpKQog ICAgICAgIChzZXQgKGNhciBwYWlyKSBuaWwpKSkpCgooZGVmdW4gYWMtY2xlYXItdmFyaWFibGUt ZXZlcnktbWludXRlcyAodmFyaWFibGUgbWludXRlcykKICAoYWRkLXRvLWxpc3QgJ2FjLWNsZWFy LXZhcmlhYmxlcy1ldmVyeS1taW51dGUgKGNvbnMgdmFyaWFibGUgbWludXRlcykpKQoKKGRlZnVu IGFjLWNsZWFyLXZhcmlhYmxlLWV2ZXJ5LW1pbnV0ZSAodmFyaWFibGUpCiAgKGFjLWNsZWFyLXZh cmlhYmxlLWV2ZXJ5LW1pbnV0ZXMgdmFyaWFibGUgMSkpCgooZGVmdW4gYWMtY2xlYXItdmFyaWFi bGUtZXZlcnktMTAtbWludXRlcyAodmFyaWFibGUpCiAgKGFjLWNsZWFyLXZhcmlhYmxlLWV2ZXJ5 LW1pbnV0ZXMgdmFyaWFibGUgMTApKQoKKGRlZnVuIGFjLWNsZWFyLXZhcmlhYmxlcy1ldmVyeS1t aW51dGUgKCkKICAoaW5jZiBhYy1taW51dGVzLWNvdW50ZXIpCiAgKGRvbGlzdCAocGFpciBhYy1j bGVhci12YXJpYWJsZXMtZXZlcnktbWludXRlKQogICAgKGlmIChlcSAoJSBhYy1taW51dGVzLWNv dW50ZXIgKGNkciBwYWlyKSkgMCkKICAgICAgICAoc2V0IChjYXIgcGFpcikgbmlsKSkpKQoKDAoK Ozs7OyBBdXRvIGNvbXBsZXRlIG1vZGUKCihkZWZ1biBhYy1jdXJzb3Itb24tZGlhYmxlLWZhY2Ut cCAoJm9wdGlvbmFsIHBvaW50KQogIChtZW1xIChnZXQtdGV4dC1wcm9wZXJ0eSAob3IgcG9pbnQg KHBvaW50KSkgJ2ZhY2UpIGFjLWRpc2FibGUtZmFjZXMpKQoKKGRlZnVuIGFjLXRyaWdnZXItY29t bWFuZC1wIChjb21tYW5kKQogICJSZXR1cm4gbm9uLW5pbCBpZiBgQ09NTUFORCcgaXMgYSB0cmln Z2VyIGNvbW1hbmQuIgogIChhbmQgKHN5bWJvbHAgY29tbWFuZCkKICAgICAgIChub3QgKG1lbXEg Y29tbWFuZCBhYy1ub24tdHJpZ2dlci1jb21tYW5kcykpCiAgICAgICAob3IgKG1lbXEgY29tbWFu ZCBhYy10cmlnZ2VyLWNvbW1hbmRzKQogICAgICAgICAgIChzdHJpbmctbWF0Y2ggInNlbGYtaW5z ZXJ0LWNvbW1hbmQiIChzeW1ib2wtbmFtZSBjb21tYW5kKSkKICAgICAgICAgICAoc3RyaW5nLW1h dGNoICJlbGVjdHJpYyIgKHN5bWJvbC1uYW1lIGNvbW1hbmQpKSkpKQoKKGRlZnVuIGFjLWZhbGxi YWNrLWNvbW1hbmQgKCZvcHRpb25hbCBleGNlcHQtY29tbWFuZCkKICAobGV0KiAoKGF1dG8tY29t cGxldGUtbW9kZSBuaWwpCiAgICAgICAgIChrZXlzICh0aGlzLWNvbW1hbmQta2V5cy12ZWN0b3Ip KQogICAgICAgICAoY29tbWFuZCAoaWYga2V5cyAoa2V5LWJpbmRpbmcga2V5cykpKSkKICAgICh3 aGVuIChhbmQgKGNvbW1hbmRwIGNvbW1hbmQpCiAgICAgICAgICAgICAgIChub3QgKGVxIGNvbW1h bmQgZXhjZXB0LWNvbW1hbmQpKSkKICAgICAgKHNldHEgdGhpcy1jb21tYW5kIGNvbW1hbmQpCiAg ICAgIChjYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCkpKSkKCihkZWZ1biBhYy1jb21wYXRpYmxl LXBhY2thZ2UtY29tbWFuZC1wIChjb21tYW5kKQogICJSZXR1cm4gbm9uLW5pbCBpZiBgQ09NTUFO RCcgaXMgY29tcGF0aWJsZSB3aXRoIGF1dG8tY29tcGxldGUuIgogIChhbmQgKHN5bWJvbHAgY29t bWFuZCkKICAgICAgIChzdHJpbmctbWF0Y2ggYWMtY29tcGF0aWJsZS1wYWNrYWdlcy1yZWdleHAg KHN5bWJvbC1uYW1lIGNvbW1hbmQpKSkpCgooZGVmdW4gYWMtaGFuZGxlLXByZS1jb21tYW5kICgp CiAgKGNvbmRpdGlvbi1jYXNlIHZhcgogICAgICAoaWYgKG9yIChzZXRxIGFjLXRyaWdnZXJlZCAo YW5kIChub3QgYWMtZnV6enktZW5hYmxlKSA7IGlnbm9yZSBrZXkgc3RvcmtlcyBpbiBmdXp6eSBt b2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChlcSB0aGlzLWNv bW1hbmQgJ2F1dG8tY29tcGxldGUpIDsgc3BlY2lhbCBjYXNlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChhYy10cmlnZ2VyLWNvbW1hbmQtcCB0aGlzLWNvbW1hbmQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgYWMtY29tcGxl dGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1x IHRoaXMtY29tbWFuZCBhYy10cmlnZ2VyLWNvbW1hbmRzLW9uLWNvbXBsZXRpbmcpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChhYy1jdXJzb3Itb24tZGlhYmxl LWZhY2UtcCkpKSkKICAgICAgICAgICAgICAoYWMtY29tcGF0aWJsZS1wYWNrYWdlLWNvbW1hbmQt cCB0aGlzLWNvbW1hbmQpKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChpZiAob3IgKG5v dCAoc3ltYm9scCB0aGlzLWNvbW1hbmQpKQogICAgICAgICAgICAgICAgICAgIChub3QgKGdldCB0 aGlzLWNvbW1hbmQgJ2FjLXF1aWNrLWhlbHAtY29tbWFuZCkpKQogICAgICAgICAgICAgICAgKGFj LXJlbW92ZS1xdWljay1oZWxwKSkKICAgICAgICAgICAgOzsgTm90IHRvIGNhdXNlIGlubGluZSBj b21wbGV0aW9uIHRvIGJlIGRpc3J1cHRlZC4KICAgICAgICAgICAgKGFjLWlubGluZS1oaWRlKSkK ICAgICAgICAoYWMtYWJvcnQpKQogICAgKGVycm9yIChhYy1lcnJvciB2YXIpKSkpCgooZGVmdW4g YWMtaGFuZGxlLXBvc3QtY29tbWFuZCAoKQogIChjb25kaXRpb24tY2FzZSB2YXIKICAgICAgKHdo ZW4gKGFuZCBhYy10cmlnZ2VyZWQKICAgICAgICAgICAgICAgICAob3IgYWMtYXV0by1zdGFydAog ICAgICAgICAgICAgICAgICAgICBhYy1jb21wbGV0aW5nKQogICAgICAgICAgICAgICAgIChub3Qg aXNlYXJjaC1tb2RlKSkKICAgICAgICAoc2V0cSBhYy1sYXN0LXBvaW50IChwb2ludCkpCiAgICAg ICAgKGFjLXN0YXJ0IDpyZXF1aXJlcyAodW5sZXNzIGFjLWNvbXBsZXRpbmcgYWMtYXV0by1zdGFy dCkpCiAgICAgICAgKGFjLWlubGluZS11cGRhdGUpKQogICAgKGVycm9yIChhYy1lcnJvciB2YXIp KSkpCgooZGVmdW4gYWMtc2V0dXAgKCkKICAoaWYgYWMtdHJpZ2dlci1rZXkKICAgICAgKGFjLXNl dC10cmlnZ2VyLWtleSBhYy10cmlnZ2VyLWtleSkpCiAgKGlmIGFjLXVzZS1jb21waGlzdAogICAg ICAoYWMtY29tcGhpc3QtaW5pdCkpCiAgKHVubGVzcyBhYy1jbGVhci12YXJpYWJsZXMtZXZlcnkt bWludXRlLXRpbWVyCiAgICAoc2V0cSBhYy1jbGVhci12YXJpYWJsZXMtZXZlcnktbWludXRlLXRp bWVyIChydW4td2l0aC10aW1lciA2MCA2MCAnYWMtY2xlYXItdmFyaWFibGVzLWV2ZXJ5LW1pbnV0 ZSkpKQogIChpZiBhYy1zdG9wLWZseW1ha2Utb24tY29tcGxldGluZwogICAgICAoZGVmYWR2aWNl IGZseW1ha2Utb24tdGltZXItZXZlbnQgKGFyb3VuZCBhYy1mbHltYWtlLXN0b3AtYWR2aWNlIGFj dGl2YXRlKQogICAgICAgICh1bmxlc3MgYWMtY29tcGxldGluZwogICAgICAgICAgYWQtZG8taXQp KQogICAgKGFkLWRpc2FibGUtYWR2aWNlICdmbHltYWtlLW9uLXRpbWVyLWV2ZW50ICdhcm91bmQg J2FjLWZseW1ha2Utc3RvcC1hZHZpY2UpKSkKCihkZWZpbmUtbWlub3ItbW9kZSBhdXRvLWNvbXBs ZXRlLW1vZGUKICAiQXV0b0NvbXBsZXRlIG1vZGUiCiAgOmxpZ2h0ZXIgIiBBQyIKICA6a2V5bWFw IGFjLW1vZGUtbWFwCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlCiAgKGlmIGF1dG8tY29tcGxldGUt bW9kZQogICAgICAocHJvZ24KICAgICAgICAoYWMtc2V0dXApCiAgICAgICAgKGFkZC1ob29rICdw cmUtY29tbWFuZC1ob29rICdhYy1oYW5kbGUtcHJlLWNvbW1hbmQgbmlsIHQpCiAgICAgICAgKGFk ZC1ob29rICdwb3N0LWNvbW1hbmQtaG9vayAnYWMtaGFuZGxlLXBvc3QtY29tbWFuZCBuaWwgdCkK ICAgICAgICAoYWRkLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAnYWMtY2xlYXItdmFyaWFibGVzLWFm dGVyLXNhdmUgbmlsIHQpCiAgICAgICAgKHJ1bi1ob29rcyAnYXV0by1jb21wbGV0ZS1tb2RlLWhv b2spKQogICAgKHJlbW92ZS1ob29rICdwcmUtY29tbWFuZC1ob29rICdhYy1oYW5kbGUtcHJlLWNv bW1hbmQgdCkKICAgIChyZW1vdmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgJ2FjLWhhbmRsZS1w b3N0LWNvbW1hbmQgdCkKICAgIChyZW1vdmUtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICdhYy1jbGVh ci12YXJpYWJsZXMtYWZ0ZXItc2F2ZSB0KQogICAgKGFjLWFib3J0KSkpCgooZGVmdW4gYXV0by1j b21wbGV0ZS1tb2RlLW1heWJlICgpCiAgIldoYXQgYnVmZmVyIGBhdXRvLWNvbXBsZXRlLW1vZGUn IHByZWZlcnMuIgogIChpZiAoYW5kIChub3QgKG1pbmlidWZmZXJwIChjdXJyZW50LWJ1ZmZlcikp KQogICAgICAgICAgIChtZW1xIG1ham9yLW1vZGUgYWMtbW9kZXMpKQogICAgICAoYXV0by1jb21w bGV0ZS1tb2RlIDEpKSkKCihkZWZpbmUtZ2xvYmFsLW1pbm9yLW1vZGUgZ2xvYmFsLWF1dG8tY29t cGxldGUtbW9kZQogIGF1dG8tY29tcGxldGUtbW9kZSBhdXRvLWNvbXBsZXRlLW1vZGUtbWF5YmUK ICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgoMCgo7Ozs7IENvbXBhdGliaWxpdGllcyB3aXRoIG90 aGVyIGV4dGVuc2lvbnMKCihkZWZ1biBhYy1mbHlzcGVsbC13b3JrYXJvdW5kICgpCiAgIkZseXNw ZWxsIHVzZXMgYHNpdC1mb3InIGZvciBkZWxheWluZyBpdHMgcHJvY2Vzcy4gVW5mb3J0dW5hdGVs bHksCml0IHN0b3BzIGF1dG8gY29tcGxldGlvbiB3aGljaCBpcyB0cmlnZ2VyIHdpdGggYHJ1bi13 aXRoLWlkbGUtdGltZXInLgpUaGlzIHdvcmthcm91bmQgYXZvaWQgZmx5c3BlbGwgcHJvY2Vzc2Vz IHdoZW4gYXV0byBjb21wbGV0aW9uIGlzIGJlaW5nIHN0YXJ0ZWQuIgogIChpbnRlcmFjdGl2ZSkK ICAoZGVmYWR2aWNlIGZseXNwZWxsLXBvc3QtY29tbWFuZC1ob29rIChhcm91bmQgYWMtZmx5c3Bl bGwtd29ya2Fyb3VuZCBhY3RpdmF0ZSkKICAgICh1bmxlc3MgYWMtdHJpZ2dlcmVkCiAgICAgIGFk LWRvLWl0KSkpCgooZGVmdW4gYWMtbGludW0td29ya2Fyb3VuZCAoKQogICJsaW51bS1tb2RlIHRy aWVzIHRvIGRpc3BsYXkgdGhlIGxpbmUgbnVtYmVycyBldmVuIGZvciB0aGUKY29tcGxldGlvbiBt ZW51LiBUaGlzIHdvcmthcm91bmQgc3RvcHMgdGhhdCBhbm5veWluZyBiZWhhdmlvci4iCiAgKGlu dGVyYWN0aXZlKQogIChkZWZhZHZpY2UgbGludW0tdXBkYXRlIChhcm91bmQgYWMtbGludW0tdXBk YXRlLXdvcmthcm91bmQgYWN0aXZhdGUpCiAgICAodW5sZXNzIGFjLWNvbXBsZXRpbmcKICAgICAg YWQtZG8taXQpKSkKCgwKCjs7OzsgU3RhbmRhcmQgc291cmNlcwoKKGRlZm1hY3JvIGFjLWRlZmlu ZS1zb3VyY2UgKG5hbWUgc291cmNlKQogICJTb3VyY2UgZGVmaW5pdGlvbiBtYWNyby4gSXQgZGVm aW5lcyBhIGNvbXBsZXRlIGNvbW1hbmQgYWxzby4iCiAgKGRlY2xhcmUgKGluZGVudCAxKSkKICBg KHByb2duCiAgICAgKGRlZnZhciAsKGludGVybiAoZm9ybWF0ICJhYy1zb3VyY2UtJXMiIG5hbWUp KQogICAgICAgLHNvdXJjZSkKICAgICAoZGVmdW4gLChpbnRlcm4gKGZvcm1hdCAiYWMtY29tcGxl dGUtJXMiIG5hbWUpKSAoKQogICAgICAgKGludGVyYWN0aXZlKQogICAgICAgKGF1dG8tY29tcGxl dGUgJygsKGludGVybiAoZm9ybWF0ICJhYy1zb3VyY2UtJXMiIG5hbWUpKSkpKSkpCgo7OyBXb3Jk cyBpbiBidWZmZXIgc291cmNlCihkZWZ2YXIgYWMtd29yZC1pbmRleCBuaWwpCgooZGVmdW4gYWMt Y2FuZGlkYXRlLXdvcmRzLWluLWJ1ZmZlciAocG9pbnQgcHJlZml4IGxpbWl0KQogIChsZXQgKChp IDApCiAgICAgICAgY2FuZGlkYXRlCiAgICAgICAgY2FuZGlkYXRlcwogICAgICAgIChyZWdleHAg KGNvbmNhdCAiXFxfPCIgKHJlZ2V4cC1xdW90ZSBwcmVmaXgpICJcXChcXHN3XFx8XFxzX1xcKStc XF8+IikpKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIDs7IFNlYXJjaCBiYWNrd2FyZAogICAg ICAoZ290by1jaGFyIHBvaW50KQogICAgICAod2hpbGUgKGFuZCAob3IgKG5vdCAoaW50ZWdlcnAg bGltaXQpKSAoPCBpIGxpbWl0KSkKICAgICAgICAgICAgICAgICAgKHJlLXNlYXJjaC1iYWNrd2Fy ZCByZWdleHAgbmlsIHQpKQogICAgICAgIChzZXRxIGNhbmRpZGF0ZSAobWF0Y2gtc3RyaW5nLW5v LXByb3BlcnRpZXMgMCkpCiAgICAgICAgKHVubGVzcyAobWVtYmVyIGNhbmRpZGF0ZSBjYW5kaWRh dGVzKQogICAgICAgICAgKHB1c2ggY2FuZGlkYXRlIGNhbmRpZGF0ZXMpCiAgICAgICAgICAoaW5j ZiBpKSkpCiAgICAgIDs7IFNlYXJjaCBiYWNrd2FyZAogICAgICAoZ290by1jaGFyICgrIHBvaW50 IChsZW5ndGggcHJlZml4KSkpCiAgICAgICh3aGlsZSAoYW5kIChvciAobm90IChpbnRlZ2VycCBs aW1pdCkpICg8IGkgbGltaXQpKQogICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQg cmVnZXhwIG5pbCB0KSkKICAgICAgICAoc2V0cSBjYW5kaWRhdGUgKG1hdGNoLXN0cmluZy1uby1w cm9wZXJ0aWVzIDApKQogICAgICAgICh1bmxlc3MgKG1lbWJlciBjYW5kaWRhdGUgY2FuZGlkYXRl cykKICAgICAgICAgIChwdXNoIGNhbmRpZGF0ZSBjYW5kaWRhdGVzKQogICAgICAgICAgKGluY2Yg aSkpKQogICAgICAobnJldmVyc2UgY2FuZGlkYXRlcykpKSkKCihkZWZ1biBhYy1pbmNyZW1lbnRh bC11cGRhdGUtd29yZC1pbmRleCAoKQogICh1bmxlc3MgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLXdv cmQtaW5kZXgpCiAgICAobWFrZS1sb2NhbC12YXJpYWJsZSAnYWMtd29yZC1pbmRleCkpCiAgKGlm IChudWxsIGFjLXdvcmQtaW5kZXgpCiAgICAgIChzZXRxIGFjLXdvcmQtaW5kZXggKGNvbnMgbmls IG5pbCkpKQogIDs7IE1hcmsgaW5jb21wbGV0ZQogIChpZiAoY2FyIGFjLXdvcmQtaW5kZXgpCiAg ICAgIChzZXRjYXIgYWMtd29yZC1pbmRleCBuaWwpKQogIChsZXQgKChpbmRleCAoY2RyIGFjLXdv cmQtaW5kZXgpKQogICAgICAgICh3b3JkcyAoYWMtY2FuZGlkYXRlLXdvcmRzLWluLWJ1ZmZlciBh Yy1wb2ludCBhYy1wcmVmaXggKG9yIChhbmQgKGludGVnZXJwIGFjLWxpbWl0KSBhYy1saW1pdCkg MTApKSkpCiAgICAoZG9saXN0ICh3b3JkIHdvcmRzKQogICAgICAodW5sZXNzIChtZW1iZXIgd29y ZCBpbmRleCkKICAgICAgICAocHVzaCB3b3JkIGluZGV4KQogICAgICAgIChzZXRjZHIgYWMtd29y ZC1pbmRleCBpbmRleCkpKSkpCgooZGVmdW4gYWMtdXBkYXRlLXdvcmQtaW5kZXgtMSAoKQogICh1 bmxlc3MgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLXdvcmQtaW5kZXgpCiAgICAobWFrZS1sb2NhbC12 YXJpYWJsZSAnYWMtd29yZC1pbmRleCkpCiAgKHdoZW4gKGFuZCAobm90IChjYXIgYWMtd29yZC1p bmRleCkpCiAgICAgICAgICAgICAoPCAoYnVmZmVyLXNpemUpIDEwNDg1NzYpKQogICAgOzsgQ29t cGxldGUgaW5kZXgKICAgIChzZXRxIGFjLXdvcmQtaW5kZXgKICAgICAgICAgIChjb25zIHQKICAg ICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGll cyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlxcKD86XlxcfFxcXz5cXCkuKj9cXCg/OlxcXzxcXHwkXFwpIikpKSkpCgooZGVmdW4gYWMtdXBk YXRlLXdvcmQtaW5kZXggKCkKICAoZG9saXN0IChidWZmZXIgKGJ1ZmZlci1saXN0KSkKICAgICh3 aGVuIChvciBhYy1mdXp6eS1lbmFibGUKICAgICAgICAgICAgICAobm90IChlcSBidWZmZXIgKGN1 cnJlbnQtYnVmZmVyKSkpKQogICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgICAg ICAoYWMtdXBkYXRlLXdvcmQtaW5kZXgtMSkpKSkpCgooZGVmdW4gYWMtd29yZC1jYW5kaWRhdGVz ICgmb3B0aW9uYWwgYnVmZmVyLXByZWQpCiAgKGxvb3AgaW5pdGlhbGx5ICh1bmxlc3MgYWMtZnV6 enktZW5hYmxlIChhYy1pbmNyZW1lbnRhbC11cGRhdGUtd29yZC1pbmRleCkpCiAgICAgICAgZm9y IGJ1ZmZlciBpbiAoYnVmZmVyLWxpc3QpCiAgICAgICAgaWYgKGFuZCAob3IgKG5vdCAoaW50ZWdl cnAgYWMtbGltaXQpKSAoPCAobGVuZ3RoIGNhbmRpZGF0ZXMpIGFjLWxpbWl0KSkKICAgICAgICAg ICAgICAgIChpZiBidWZmZXItcHJlZCAoZnVuY2FsbCBidWZmZXItcHJlZCBidWZmZXIpIHQpKQog ICAgICAgIGFwcGVuZCAoZnVuY2FsbCBhYy1tYXRjaC1mdW5jdGlvbgogICAgICAgICAgICAgICAg ICAgICAgICBhYy1wcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAobG9jYWwtdmFy aWFibGUtcCAnYWMtd29yZC1pbmRleCBidWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNkciAoYnVmZmVyLWxvY2FsLXZhbHVlICdhYy13b3JkLWluZGV4IGJ1ZmZlcikpKSkKICAg ICAgICBpbnRvIGNhbmRpZGF0ZXMKICAgICAgICBmaW5hbGx5IHJldHVybiBjYW5kaWRhdGVzKSkK CihhYy1kZWZpbmUtc291cmNlIHdvcmRzLWluLWJ1ZmZlcgogICcoKGNhbmRpZGF0ZXMgLiBhYy13 b3JkLWNhbmRpZGF0ZXMpKSkKCihhYy1kZWZpbmUtc291cmNlIHdvcmRzLWluLWFsbC1idWZmZXIK ICAnKChpbml0IC4gYWMtdXBkYXRlLXdvcmQtaW5kZXgpCiAgICAoY2FuZGlkYXRlcyAuIGFjLXdv cmQtY2FuZGlkYXRlcykpKQoKKGFjLWRlZmluZS1zb3VyY2Ugd29yZHMtaW4tc2FtZS1tb2RlLWJ1 ZmZlcnMKICAnKChpbml0IC4gYWMtdXBkYXRlLXdvcmQtaW5kZXgpCiAgICAoY2FuZGlkYXRlcyAu IChhYy13b3JkLWNhbmRpZGF0ZXMKICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGJ1ZmZlcikK ICAgICAgICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZS1wIChidWZmZXItbG9jYWwtdmFsdWUg J21ham9yLW1vZGUgYnVmZmVyKSkpKSkpKQoKOzsgTGlzcCBzeW1ib2xzIHNvdXJjZQooZGVmdmFy IGFjLXN5bWJvbHMtY2FjaGUgbmlsKQooYWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRl cyAnYWMtc3ltYm9scy1jYWNoZSkKCihkZWZ1biBhYy1zeW1ib2wtZmlsZSAoc3ltYm9sIHR5cGUp CiAgKGlmIChmYm91bmRwICdmaW5kLWxpc3Atb2JqZWN0LWZpbGUtbmFtZSkKICAgICAgKGZpbmQt bGlzcC1vYmplY3QtZmlsZS1uYW1lIHN5bWJvbCB0eXBlKQogICAgKGxldCAoKGZpbGUtbmFtZSAo d2l0aC1uby13YXJuaW5ncwogICAgICAgICAgICAgICAgICAgICAgIChkZXNjcmliZS1zaW1wbGlm eS1saWItZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIChzeW1ib2wtZmlsZSBzeW1i b2wgdHlwZSkpKSkpCiAgICAgICh3aGVuIChlcXVhbCBmaWxlLW5hbWUgImxvYWRkZWZzLmVsIikK ICAgICAgICA7OyBGaW5kIHRoZSByZWFsIGRlZiBzaXRlIG9mIHRoZSBwcmVsb2FkZWQgb2JqZWN0 LgogICAgICAgIChsZXQgKChsb2NhdGlvbiAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgKGVxIHR5cGUgJ2RlZnVuKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChmaW5kLWZ1bmN0aW9uLXNlYXJjaC1mb3Itc3ltYm9sIHN5bWJvbCBuaWwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAibG9hZGRlZnMuZWwiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlu ZC12YXJpYWJsZS1ub3NlbGVjdCBzeW1ib2wgZmlsZS1uYW1lKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAoZXJyb3IgbmlsKSkpKQogICAgICAgICAgKHdoZW4gbG9jYXRpb24KICAgICAgICAg ICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGNhciBsb2NhdGlvbikKICAgICAgICAgICAgICAod2hl biAoY2RyIGxvY2F0aW9uKQogICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoY2RyIGxvY2F0aW9u KSkpCiAgICAgICAgICAgICAgKHdoZW4gKHJlLXNlYXJjaC1iYWNrd2FyZAogICAgICAgICAgICAg ICAgICAgICAiXjs7OyBHZW5lcmF0ZWQgYXV0b2xvYWRzIGZyb20gXFwoLipcXCkiIG5pbCB0KQog ICAgICAgICAgICAgICAgKHNldHEgZmlsZS1uYW1lIChtYXRjaC1zdHJpbmcgMSkpKSkpKSkKICAg ICAgKGlmIChhbmQgKG51bGwgZmlsZS1uYW1lKQogICAgICAgICAgICAgICAob3IgKGVxIHR5cGUg J2RlZnVuKQogICAgICAgICAgICAgICAgICAgKGludGVnZXJwIChnZXQgc3ltYm9sICd2YXJpYWJs ZS1kb2N1bWVudGF0aW9uKSkpKQogICAgICAgICAgOzsgSXQncyBhIG9iamVjdCBub3QgZGVmaW5l ZCBpbiBFbGlzcCBidXQgaW4gQy4KICAgICAgICAgIChpZiAoZ2V0LWJ1ZmZlciAiICpET0MqIikK ICAgICAgICAgICAgICAoaWYgKGVxIHR5cGUgJ2RlZnVuKQogICAgICAgICAgICAgICAgICAoaGVs cC1DLWZpbGUtbmFtZSAoc3ltYm9sLWZ1bmN0aW9uIHN5bWJvbCkgJ3N1YnIpCiAgICAgICAgICAg ICAgICAoaGVscC1DLWZpbGUtbmFtZSBzeW1ib2wgJ3ZhcikpCiAgICAgICAgICAgICdDLXNvdXJj ZSkKICAgICAgICBmaWxlLW5hbWUpKSkpCgooZGVmdW4gYWMtc3ltYm9sLWRvY3VtZW50YXRpb24g KHN5bWJvbCkKICAoaWYgKHN0cmluZ3Agc3ltYm9sKQogICAgICAoc2V0cSBzeW1ib2wgKGludGVy bi1zb2Z0IHN5bWJvbCkpKQogIChpZ25vcmUtZXJyb3JzCiAgICAod2l0aC10ZW1wLWJ1ZmZlcgog ICAgICAobGV0ICgoc3RhbmRhcmQtb3V0cHV0IChjdXJyZW50LWJ1ZmZlcikpKQogICAgICAgIChw cmluMSBzeW1ib2wpCiAgICAgICAgKHByaW5jICIgaXMgIikKICAgICAgICAoY29uZAogICAgICAg ICAoKGZib3VuZHAgc3ltYm9sKQogICAgICAgICAgOzsgaW1wb3J0IGhlbHAteHJlZi1mb2xsb3dp bmcKICAgICAgICAgIChyZXF1aXJlICdoZWxwLW1vZGUpCiAgICAgICAgICAobGV0ICgoaGVscC14 cmVmLWZvbGxvd2luZyB0KSkKICAgICAgICAgICAgKGRlc2NyaWJlLWZ1bmN0aW9uLTEgc3ltYm9s KSkKICAgICAgICAgIChidWZmZXItc3RyaW5nKSkKICAgICAgICAgKChib3VuZHAgc3ltYm9sKQog ICAgICAgICAgKGxldCAoKGZpbGUtbmFtZSAgKGFjLXN5bWJvbC1maWxlIHN5bWJvbCAnZGVmdmFy KSkpCiAgICAgICAgICAgIChwcmluYyAiYSB2YXJpYWJsZSIpCiAgICAgICAgICAgICh3aGVuIGZp bGUtbmFtZQogICAgICAgICAgICAgIChwcmluYyAiIGRlZmluZWQgaW4gYCIpCiAgICAgICAgICAg ICAgKHByaW5jIChpZiAoZXEgZmlsZS1uYW1lICdDLXNvdXJjZSkKICAgICAgICAgICAgICAgICAg ICAgICAgICJDIHNvdXJjZSBjb2RlIgogICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUt bm9uZGlyZWN0b3J5IGZpbGUtbmFtZSkpKSkKICAgICAgICAgICAgKHByaW5jICInLlxuXG4iKQog ICAgICAgICAgICAocHJpbmMgKG9yIChkb2N1bWVudGF0aW9uLXByb3BlcnR5IHN5bWJvbCAndmFy aWFibGUtZG9jdW1lbnRhdGlvbiB0KQogICAgICAgICAgICAgICAgICAgICAgICJOb3QgZG9jdW1l bnRlZC4iKSkKICAgICAgICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkKICAgICAgICAgKChmYWNlcCBz eW1ib2wpCiAgICAgICAgICAobGV0ICgoZmlsZS1uYW1lICAoYWMtc3ltYm9sLWZpbGUgc3ltYm9s ICdkZWZmYWNlKSkpCiAgICAgICAgICAgIChwcmluYyAiYSBmYWNlIikKICAgICAgICAgICAgKHdo ZW4gZmlsZS1uYW1lCiAgICAgICAgICAgICAgKHByaW5jICIgZGVmaW5lZCBpbiBgIikKICAgICAg ICAgICAgICAocHJpbmMgKGlmIChlcSBmaWxlLW5hbWUgJ0Mtc291cmNlKQogICAgICAgICAgICAg ICAgICAgICAgICAgIkMgc291cmNlIGNvZGUiCiAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUt bmFtZS1ub25kaXJlY3RvcnkgZmlsZS1uYW1lKSkpKQogICAgICAgICAgICAocHJpbmMgIicuXG5c biIpCiAgICAgICAgICAgIChwcmluYyAob3IgKGRvY3VtZW50YXRpb24tcHJvcGVydHkgc3ltYm9s ICdmYWNlLWRvY3VtZW50YXRpb24gdCkKICAgICAgICAgICAgICAgICAgICAgICAiTm90IGRvY3Vt ZW50ZWQuIikpCiAgICAgICAgICAgIChidWZmZXItc3RyaW5nKSkpCiAgICAgICAgICh0CiAgICAg ICAgICAobGV0ICgoZG9jIChkb2N1bWVudGF0aW9uLXByb3BlcnR5IHN5bWJvbCAnZ3JvdXAtZG9j dW1lbnRhdGlvbiB0KSkpCiAgICAgICAgICAgICh3aGVuIGRvYwogICAgICAgICAgICAgIChwcmlu YyAiYSBncm91cC5cblxuIikKICAgICAgICAgICAgICAocHJpbmMgZG9jKQogICAgICAgICAgICAg IChidWZmZXItc3RyaW5nKSkpKSkpKSkpCgooZGVmdW4gYWMtc3ltYm9sLWNhbmRpZGF0ZXMgKCkK ICAob3IgYWMtc3ltYm9scy1jYWNoZQogICAgICAoc2V0cSBhYy1zeW1ib2xzLWNhY2hlCiAgICAg ICAgICAgIChsb29wIGZvciB4IGJlaW5nIHRoZSBzeW1ib2xzCiAgICAgICAgICAgICAgICAgIGlm IChvciAoZmJvdW5kcCB4KQogICAgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcCB4KQogICAg ICAgICAgICAgICAgICAgICAgICAgKHN5bWJvbC1wbGlzdCB4KSkKICAgICAgICAgICAgICAgICAg Y29sbGVjdCAoc3ltYm9sLW5hbWUgeCkpKSkpCgooYWMtZGVmaW5lLXNvdXJjZSBzeW1ib2xzCiAg JygoY2FuZGlkYXRlcyAuIGFjLXN5bWJvbC1jYW5kaWRhdGVzKQogICAgKGRvY3VtZW50IC4gYWMt c3ltYm9sLWRvY3VtZW50YXRpb24pCiAgICAoc3ltYm9sIC4gInMiKQogICAgKGNhY2hlKSkpCgo7 OyBMaXNwIGZ1bmN0aW9ucyBzb3VyY2UKKGRlZnZhciBhYy1mdW5jdGlvbnMtY2FjaGUgbmlsKQoo YWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRlcyAnYWMtZnVuY3Rpb25zLWNhY2hlKQoK KGRlZnVuIGFjLWZ1bmN0aW9uLWNhbmRpZGF0ZXMgKCkKICAob3IgYWMtZnVuY3Rpb25zLWNhY2hl CiAgICAgIChzZXRxIGFjLWZ1bmN0aW9ucy1jYWNoZQogICAgICAgICAgICAobG9vcCBmb3IgeCBi ZWluZyB0aGUgc3ltYm9scwogICAgICAgICAgICAgICAgICBpZiAoZmJvdW5kcCB4KQogICAgICAg ICAgICAgICAgICBjb2xsZWN0IChzeW1ib2wtbmFtZSB4KSkpKSkKCihhYy1kZWZpbmUtc291cmNl IGZ1bmN0aW9ucwogICcoKGNhbmRpZGF0ZXMgLiBhYy1mdW5jdGlvbi1jYW5kaWRhdGVzKQogICAg KGRvY3VtZW50IC4gYWMtc3ltYm9sLWRvY3VtZW50YXRpb24pCiAgICAoc3ltYm9sIC4gImYiKQog ICAgKHByZWZpeCAuICIoXFwoXFwoPzpcXHN3XFx8XFxzX1xcKStcXCkiKQogICAgKGNhY2hlKSkp Cgo7OyBMaXNwIHZhcmlhYmxlcyBzb3VyY2UKKGRlZnZhciBhYy12YXJpYWJsZXMtY2FjaGUgbmls KQooYWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRlcyAnYWMtdmFyaWFibGVzLWNhY2hl KQoKKGRlZnVuIGFjLXZhcmlhYmxlLWNhbmRpZGF0ZXMgKCkKICAob3IgYWMtdmFyaWFibGVzLWNh Y2hlCiAgICAgIChzZXRxIGFjLXZhcmlhYmxlcy1jYWNoZQogICAgICAgICAgICAobG9vcCBmb3Ig eCBiZWluZyB0aGUgc3ltYm9scwogICAgICAgICAgICAgICAgICBpZiAoYm91bmRwIHgpCiAgICAg ICAgICAgICAgICAgIGNvbGxlY3QgKHN5bWJvbC1uYW1lIHgpKSkpKQoKKGFjLWRlZmluZS1zb3Vy Y2UgdmFyaWFibGVzCiAgJygoY2FuZGlkYXRlcyAuIGFjLXZhcmlhYmxlLWNhbmRpZGF0ZXMpCiAg ICAoZG9jdW1lbnQgLiBhYy1zeW1ib2wtZG9jdW1lbnRhdGlvbikKICAgIChzeW1ib2wgLiAidiIp CiAgICAoY2FjaGUpKSkKCjs7IExpc3AgZmVhdHVyZXMgc291cmNlCihkZWZ2YXIgYWMtZW1hY3Mt bGlzcC1mZWF0dXJlcyBuaWwpCihhYy1jbGVhci12YXJpYWJsZS1ldmVyeS0xMC1taW51dGVzICdh Yy1lbWFjcy1saXNwLWZlYXR1cmVzKQoKKGRlZnVuIGFjLWVtYWNzLWxpc3AtZmVhdHVyZS1jYW5k aWRhdGVzICgpCiAgKG9yIGFjLWVtYWNzLWxpc3AtZmVhdHVyZXMKICAgICAgKGlmIChmYm91bmRw ICdmaW5kLWxpYnJhcnktc3VmZml4ZXMpCiAgICAgICAgICAobGV0ICgoc3VmZml4IChjb25jYXQg KHJlZ2V4cC1vcHQgKGZpbmQtbGlicmFyeS1zdWZmaXhlcykgdCkgIlxcJyIpKSkKICAgICAgICAg ICAgKHNldHEgYWMtZW1hY3MtbGlzcC1mZWF0dXJlcwogICAgICAgICAgICAgICAgICAoYXBwZW5k IChtYXBjYXIgJ3ByaW4xLXRvLXN0cmluZyBmZWF0dXJlcykKICAgICAgICAgICAgICAgICAgICAg ICAgICAobG9vcCBmb3IgZGlyIGluIGxvYWQtcGF0aAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChmaWxlLWRpcmVjdG9yeS1wIGRpcikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhcHBlbmQgKGxvb3AgZm9yIGZpbGUgaW4gKGRpcmVjdG9yeS1maWxlcyBkaXIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmctbWF0 Y2ggc3VmZml4IGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbGxlY3QgKHN1YnN0cmluZyBmaWxlIDAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKSkpKSkp KQoKKGFjLWRlZmluZS1zb3VyY2UgZmVhdHVyZXMKICAnKChkZXBlbmRzIGZpbmQtZnVuYykKICAg IChjYW5kaWRhdGVzIC4gYWMtZW1hY3MtbGlzcC1mZWF0dXJlLWNhbmRpZGF0ZXMpCiAgICAocHJl Zml4IC4gInJlcXVpcmUgKydcXChcXCg/Olxcc3dcXHxcXHNfXFwpKlxcKSIpCiAgICAocmVxdWly ZXMgLiAwKSkpCgooZGVmdmFyYWxpYXMgJ2FjLXNvdXJjZS1lbWFjcy1saXNwLWZlYXR1cmVzICdh Yy1zb3VyY2UtZmVhdHVyZXMpCgo7OyBBYmJyZXYgc291cmNlCihhYy1kZWZpbmUtc291cmNlIGFi YnJldgogICcoKGNhbmRpZGF0ZXMgLiAobWFwY2FyICdwb3B1cC14LXRvLXN0cmluZyAoYXBwZW5k ICh2Y29uY2F0IGxvY2FsLWFiYnJldi10YWJsZSBnbG9iYWwtYWJicmV2LXRhYmxlKSBuaWwpKSkK ICAgIChhY3Rpb24gLiBleHBhbmQtYWJicmV2KQogICAgKHN5bWJvbCAuICJhIikKICAgIChjYWNo ZSkpKQoKOzsgRmlsZXMgaW4gY3VycmVudCBkaXJlY3Rvcnkgc291cmNlCihhYy1kZWZpbmUtc291 cmNlIGZpbGVzLWluLWN1cnJlbnQtZGlyCiAgJygoY2FuZGlkYXRlcyAuIChkaXJlY3RvcnktZmls ZXMgZGVmYXVsdC1kaXJlY3RvcnkpKQogICAgKGNhY2hlKSkpCgo7OyBGaWxlbmFtZSBzb3VyY2UK KGRlZnZhciBhYy1maWxlbmFtZS1jYWNoZSBuaWwpCgooZGVmdW4gYWMtZmlsZW5hbWUtY2FuZGlk YXRlICgpCiAgKHVubGVzcyAoZmlsZS1yZWd1bGFyLXAgYWMtcHJlZml4KQogICAgKGlnbm9yZS1l cnJvcnMKICAgICAgKGxvb3Agd2l0aCBkaXIgPSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBhYy1wcmVm aXgpCiAgICAgICAgICAgIHdpdGggZmlsZXMgPSAob3IgKGFzc29jLWRlZmF1bHQgZGlyIGFjLWZp bGVuYW1lLWNhY2hlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChmaWxlcyAo ZGlyZWN0b3J5LWZpbGVzIGRpciBuaWwgIl5bXi5dIikpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHB1c2ggKGNvbnMgZGlyIGZpbGVzKSBhYy1maWxlbmFtZS1jYWNoZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKSkKICAgICAgICAgICAgZm9yIGZpbGUgaW4g ZmlsZXMKICAgICAgICAgICAgZm9yIHBhdGggPSAoY29uY2F0IGRpciBmaWxlKQogICAgICAgICAg ICBjb2xsZWN0IChpZiAoZmlsZS1kaXJlY3RvcnktcCBwYXRoKQogICAgICAgICAgICAgICAgICAg ICAgICAoY29uY2F0IHBhdGggIi8iKQogICAgICAgICAgICAgICAgICAgICAgcGF0aCkpKSkpCgoo YWMtZGVmaW5lLXNvdXJjZSBmaWxlbmFtZQogICcoKGluaXQgLiAoc2V0cSBhYy1maWxlbmFtZS1j YWNoZSBuaWwpKQogICAgKGNhbmRpZGF0ZXMgLiBhYy1maWxlbmFtZS1jYW5kaWRhdGUpCiAgICAo cHJlZml4IC4gdmFsaWQtZmlsZSkKICAgIChyZXF1aXJlcyAuIDApCiAgICAoYWN0aW9uIC4gYWMt c3RhcnQpCiAgICAobGltaXQgLiBuaWwpKSkKCjs7IERpY3Rpb25hcnkgc291cmNlCihhYy1kZWZp bmUtc291cmNlIGRpY3Rpb25hcnkKICAnKChjYW5kaWRhdGVzIC4gYWMtYnVmZmVyLWRpY3Rpb25h cnkpCiAgICAoc3ltYm9sIC4gImQiKSkpCgoocHJvdmlkZSAnYXV0by1jb21wbGV0ZSkKOzs7IGF1 dG8tY29tcGxldGUuZWwgZW5kcyBoZXJlCg== --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_--