From unknown Fri Aug 15 16:22:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual Resent-From: Lin Jian Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 14 Sep 2024 01:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 73241 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 73241@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.172627851132318 (code B ref -1); Sat, 14 Sep 2024 01:49:01 +0000 Received: (at submit) by debbugs.gnu.org; 14 Sep 2024 01:48:31 +0000 Received: from localhost ([127.0.0.1]:44496 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spHtn-0008PC-3m for submit@debbugs.gnu.org; Fri, 13 Sep 2024 21:48:31 -0400 Received: from lists.gnu.org ([209.51.188.17]:49832) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spHtl-0008P2-5N for submit@debbugs.gnu.org; Fri, 13 Sep 2024 21:48:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1spHtb-0000Or-11 for bug-gnu-emacs@gnu.org; Fri, 13 Sep 2024 21:48:19 -0400 Received: from mail.linj.tech ([5.255.109.209]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1spHtZ-0002Ro-GR for bug-gnu-emacs@gnu.org; Fri, 13 Sep 2024 21:48:18 -0400 From: Lin Jian DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linj.tech; s=mail; t=1726278493; bh=UIRJ9Ugsxk1zzCZe/BiM2Xssv1+30yG/o/eOhlQSK5g=; h=From:To:Subject:Date; b=UK/PKMMvgJel9el1yGwDNq1pB2U5oW0YYm+CX5UoNjYaEbUXf2+Nbaw/lkd8+Rz6F EXXcQvi85231jzxrL+u0rF6TaxkrSdvts1hNa2iFEnTrETJypIQhGemM8/R+5xNYtS vC3cZ7MrkfntpRRYHT28LC+wlDXZCcG7WFfm6r3n7gpVXpRy67pf1Fl2uRJc9QqAqE RWFO7V5JKeYO+qv7dagpY5iWiqUaj/LtkPZVfXtDu6jh7Yw1SnhDKbP1V85FImfy4q xL2Yj2BW20HxpvyjTd6fJO1sIvgA/iZ2C3TeWPMDsKHCZs0LCbx5/pxC1hK2P8/xhM Sy/FOqOoGNtQA== Date: Sat, 14 Sep 2024 09:47:55 +0800 Message-ID: <87v7yzvwdw.fsf@linj.tech> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=5.255.109.209; envelope-from=me@linj.tech; helo=mail.linj.tech X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) Eglot GNU ELPA tarball[1] does not contain an info manual. Others package tarballs, such as erc[2], do contain an info manual. Adding :doc "eglot.texi" to elpa-packages[3] should fix this. [1]: https://elpa.gnu.org/packages/eglot-1.17.tar [2]: https://elpa.gnu.org/packages/erc-5.6.tar [3]: https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/elpa-packages?id=51936a29b693bfc5f4f92e365b485a7c547b2ac1#n270 From unknown Fri Aug 15 16:22:27 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Lin Jian Subject: bug#73241: closed (Re: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual) Message-ID: References: <87a5g9ksmb.fsf@posteo.net> <87v7yzvwdw.fsf@linj.tech> X-Gnu-PR-Message: they-closed 73241 X-Gnu-PR-Package: emacs Reply-To: 73241@debbugs.gnu.org Date: Sun, 15 Sep 2024 12:30:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1726403402-4732-1" This is a multi-part message in MIME format... ------------=_1726403402-4732-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 73241@debbugs.gnu.org. --=20 73241: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D73241 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1726403402-4732-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 73241-done) by debbugs.gnu.org; 15 Sep 2024 12:29:39 +0000 Received: from localhost ([127.0.0.1]:48578 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spoNm-0001DG-V7 for submit@debbugs.gnu.org; Sun, 15 Sep 2024 08:29:39 -0400 Received: from mout01.posteo.de ([185.67.36.65]:50217) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spoNk-0001D2-JE for 73241-done@debbugs.gnu.org; Sun, 15 Sep 2024 08:29:37 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id DBE76240027 for <73241-done@debbugs.gnu.org>; Sun, 15 Sep 2024 14:29:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1726403358; bh=JkdPxBgwynPPk5A+0kKtQuoegmyLrn8zowj1yrgomVM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: From; b=j9GxIaVZtqcJ+INTzKYKbLKyWyLkydJ4K5HyJJ0AV3ji4hTQ3nzVB0Y6Yacu+WWOi Yks5LaW5nYegfvjvVJuLDolz4TDH4HiZ2gIudhnXpp5c3eE3FAQQBPGLvYEfsyYqOl 9nRFT4SkyIsJAKRUlRqrxuaxKEut5FhhThMmMbVfyzE5S+Iyjuw/+VDCZHs0wQTY/i p8FaVO+1QVARdvDbHFxgRWbIhCUtd3hkXDQrLm8lg6+liVMDqvM0mVdIrhs3413Ogz TM52WLZL0SdxNdT5rSQq8T6leC9jD1oF45Im6ALfIJ08LD/E50lnvttcIaMt8TfKoX us6iOfaqyc74Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4X66mY4Kdjz6tvr; Sun, 15 Sep 2024 14:29:17 +0200 (CEST) From: Philip Kaludercic To: Lin Jian Subject: Re: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual In-Reply-To: <87v7yzvwdw.fsf@linj.tech> (Lin Jian's message of "Sat, 14 Sep 2024 09:47:55 +0800") References: <87v7yzvwdw.fsf@linj.tech> X-Hashcash: 1:20:240915:73241@debbugs.gnu.org::kw151fyq9EPxNm0L:eYk X-Hashcash: 1:20:240915:me@linj.tech::HISZhppwFdU/vOnJ:nLL Date: Sun, 15 Sep 2024 12:29:16 +0000 Message-ID: <87a5g9ksmb.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Debbugs-Envelope-To: 73241-done Cc: 73241-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain Lin Jian writes: > Eglot GNU ELPA tarball[1] does not contain an info manual. Others > package tarballs, such as erc[2], do contain an info manual. > > Adding :doc "eglot.texi" to elpa-packages[3] should fix this. I can confirm that this works, here is the result. --=-=-= Content-Type: application/x-tar Content-Disposition: attachment; filename=eglot-1.17.tar Content-Transfer-Encoding: base64 ZWdsb3QtMS4xNy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1 MAAwMDAxNzUwADAwMDAwMDAwMDAwADE0NjcxNTQwMDcwADAxMjExNAAgNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHBoaWxpcAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAcGhpbGlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl Z2xvdC0xLjE3L2VnbG90LmVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUw ADAwMDE3NTAAMDAwMDA1NjY0MDAAMTQ2NzE1NDAwNzAAMDEzNTYzACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcGhpbGlwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABwaGlsaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs7 OyBlZ2xvdC5lbCAtLS0gVGhlIEVtYWNzIENsaWVudCBmb3IgTFNQIHNlcnZlcnMgIC0qLSBsZXhp Y2FsLWJpbmRpbmc6IHQ7IC0qLQoKOzsgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCgo7OyBWZXJzaW9uOiAxLjE3Cjs7IEF1dGhvcjogSm/Do28g VMOhdm9yYSA8am9hb3Rhdm9yYUBnbWFpbC5jb20+Cjs7IE1haW50YWluZXI6IEpvw6NvIFTDoXZv cmEgPGpvYW90YXZvcmFAZ21haWwuY29tPgo7OyBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb2Fv dGF2b3JhL2VnbG90Cjs7IEtleXdvcmRzOiBjb252ZW5pZW5jZSwgbGFuZ3VhZ2VzCjs7IFBhY2th Z2UtUmVxdWlyZXM6ICgoZW1hY3MgIjI2LjMiKSAoanNvbnJwYyAiMS4wLjI0IikgKGZseW1ha2Ug IjEuMi4xIikgKHByb2plY3QgIjAuOS44IikgKHhyZWYgIjEuNi4yIikgKGVsZG9jICIxLjE0LjAi KSAoc2VxICIyLjIzIikgKGV4dGVybmFsLWNvbXBsZXRpb24gIjAuMSIpKQoKOzsgVGhpcyBpcyBh IEdOVSBFTFBBIDpjb3JlIHBhY2thZ2UuICBBdm9pZCBhZGRpbmcgZnVuY3Rpb25hbGl0eQo7OyB0 aGF0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHZlcnNpb24gb2YgRW1hY3MgcmVjb3JkZWQgYWJv dmUgb3IgYW55Cjs7IG9mIHRoZSBwYWNrYWdlIGRlcGVuZGVuY2llcy4KCjs7IFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBHTlUgRW1hY3Mg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRhcnk6Cgo7OyBFZ2xvdCAo IkVtYWNzIFBvbHlnbG90IikgaXMgYW4gRW1hY3MgTFNQIGNsaWVudCB0aGF0IHN0YXlzIG91dCBv Zgo7OyB5b3VyIHdheS4KOzsKOzsgVHlwaW5nIE0teCBlZ2xvdCBpbiBzb21lIHNvdXJjZSBmaWxl IGlzIG9mdGVuIGVub3VnaCB0byBnZXQgeW91Cjs7IHN0YXJ0ZWQsIGlmIHRoZSBsYW5ndWFnZSBz ZXJ2ZXIgeW91J3JlIGxvb2tpbmcgdG8gdXNlIGlzIGluc3RhbGxlZAo7OyBpbiB5b3VyIHN5c3Rl bS4gIFBsZWFzZSByZWZlciB0byB0aGUgbWFudWFsLCBhdmFpbGFibGUgZnJvbQo7OyBodHRwczov L2pvYW90YXZvcmEuZ2l0aHViLmlvL2VnbG90LyBvciBmcm9tIE0teCBpbmZvIGZvciBtb3JlIHVz YWdlCjs7IGluc3RydWN0aW9ucy4KOzsKOzsgSWYgeW91IHdpc2ggdG8gY29udHJpYnV0ZSBjaGFu Z2VzIHRvIEVnbG90LCBwbGVhc2UgZG8gcmVhZCB0aGUgdXNlcgo7OyBtYW51YWwgZmlyc3QuICBB ZGRpdGlvbmFsbHksIHRha2UgdGhlIGZvbGxvd2luZyBpbiBjb25zaWRlcmF0aW9uOgoKOzsgKiBF Z2xvdCdzIG1haW4gam9iIGlzIHRvIGhvb2sgdXAgdGhlIGluZm9ybWF0aW9uIHRoYXQgbGFuZ3Vh Z2UKOzsgICBzZXJ2ZXJzIG9mZmVyIHZpYSBMU1AgdG8gRW1hY3MncyBVSSBmYWNpbGl0aWVzOiBY cmVmIGZvcgo7OyAgIGRlZmluaXRpb24tY2hhc2luZywgRmx5bWFrZSBmb3IgZGlhZ25vc3RpY3Ms IEVsZG9jIGZvciBhdC1wb2ludAo7OyAgIGRvY3VtZW50YXRpb24sIGV0Yy4gIEVnbG90J3Mgam9i IGlzIGdlbmVyYWxseSAqbm90KiB0byBwcm92aWRlCjs7ICAgc3VjaCBhIFVJIGl0c2VsZiwgdGhv dWdoIGEgc21hbGwgbnVtYmVyIG9mIHNpbXBsZQo7OyAgIGNvdW50ZXItZXhhbXBsZXMgZG8gZXhp c3QsIGUuZy4gaW4gdGhlIGBlZ2xvdC1yZW5hbWUnIGNvbW1hbmQgb3IKOzsgICB0aGUgYGVnbG90 LWlubGF5LWhpbnRzLW1vZGUnIG1pbm9yIG1vZGUuICBXaGVuIGEgbmV3IFVJIGlzCjs7ICAgZXZp ZGVudGx5IG5lZWRlZCwgY29uc2lkZXIgYWRkaW5nIGEgbmV3IHBhY2thZ2UgdG8gRW1hY3MsIG9y Cjs7ICAgZXh0ZW5kaW5nIGFuIGV4aXN0aW5nIG9uZS4KOzsKOzsgKiBFZ2xvdCB3YXMgZGVzaWdu ZWQgdG8gZnVuY3Rpb24gd2l0aCBqdXN0IHRoZSBVSSBmYWNpbGl0aWVzIGZvdW5kCjs7ICAgaW4g dGhlIGxhdGVzdCBFbWFjcyBjb3JlLCBhcyBsb25nIGFzIHRob3NlIGZhY2lsaXRpZXMgYXJlIGFs c28KOzsgICBhdmFpbGFibGUgYXMgR05VIEVMUEEgOmNvcmUgcGFja2FnZXMuICBIaXN0b3JpY2Fs bHksIGEgbnVtYmVyIG9mCjs7ICAgOmNvcmUgcGFja2FnZXMgd2VyZSBhZGRlZCBvciByZXdvcmtl ZCBpbiBFbWFjcyB0byBtYWtlIHRoaXMKOzsgICBwb3NzaWJsZS4gIFRoaXMgcHJpbmNpcGxlIHNo b3VsZCBiZSB1cGhlbGQgd2hlbiBhZGRpbmcgbmV3IExTUAo7OyAgIGZlYXR1cmVzIG9yIHR3ZWFr aW5nIGV4aXN0aW5nIG9uZXMuICBEZXNpZ24gYW55IG5ldyBmYWNpbGl0aWVzIGluCjs7ICAgYSB3 YXkgdGhhdCB0aGV5IGNvdWxkIHdvcmsgaW4gdGhlIGFic2VuY2Ugb2YgTFNQIG9yIHVzaW5nIHNv bWUKOzsgICBkaWZmZXJlbnQgcHJvdG9jb2wsIHRoZW4gbWFrZSBzdXJlIEVnbG90IGNhbiBsaW5r IHVwIExTUAo7OyAgIGluZm9ybWF0aW9uIHRvIGl0LgoKOzsgKiBUaGVyZSBhcmUgZmV3IEVnbG90 IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLiAgVGhpcyBwcmluY2lwbGUKOzsgICBzaG91bGQgYWxz byBiZSB1cGhlbGQuICBJZiBFZ2xvdCBoYWQgdGhlc2UgdmFyaWFibGVzLCBpdCBjb3VsZCBiZQo7 OyAgIGR1cGxpY2F0aW5nIGNvbmZpZ3VyYXRpb24gZm91bmQgZWxzZXdoZXJlLCBibG9hdGluZyBp dHNlbGYgdXAsCjs7ICAgYW5kIG1ha2luZyBpdCBnZW5lcmFsbHkgaGFyZCB0byBpbnRlZ3JhdGUg d2l0aCB0aGUgZXZlciBncm93aW5nCjs7ICAgc2V0IG9mIExTUCBmZWF0dXJlcyBhbmQgRW1hY3Mg cGFja2FnZXMuICBGb3IgaW5zdGFuY2UsIHRoaXMgaXMKOzsgICB3aHkgb25lIGZpbmRzIGEgc2lu Z2xlIHZhcmlhYmxlCjs7ICAgYGVnbG90LWlnbm9yZWQtc2VydmVyLWNhcGFiaWxpdGllcycgaW5z dGVhZCBvZiBhIG51bWJlciBvZgo7OyAgIGNhcGFiaWxpdHktc3BlY2lmaWMgZmxhZ3MsIG9yIHdo eSBjdXN0b21pemluZyB0aGUgZGlzcGxheSBvZgo7OyAgIExTUC1wcm92aWRlZCBkb2N1bWVudGF0 aW9uIGlzIGRvbmUgdmlhIEVsRG9jJ3MgdmFyaWFibGVzLCBub3QKOzsgICBFZ2xvdCdzLgo7Owo7 OyAqIExpbmtpbmcgdXAgTFNQIGluZm9ybWF0aW9uIHRvIG90aGVyIGxpYnJhcmllcyBpcyBnZW5l cmFsbHkgZG9uZQo7OyAgIGluIHRoZSBgZWdsb3QtLW1hbmFnZWQtbW9kZScgbWlub3IgbW9kZSBm dW5jdGlvbiwgYnkKOzsgICBidWZmZXItbG9jYWxseSBzZXR0aW5nIHRoZSBvdGhlciBsaWJyYXJ5 J3MgdmFyaWFibGVzIHRvCjs7ICAgRWdsb3Qtc3BlY2lmaWMgdmVyc2lvbnMuICBXaGVuIGRlY2lk aW5nIHdoYXQgdG8gc2V0IHRoZSB2YXJpYWJsZQo7OyAgIHRvLCB0aGUgZ2VuZXJhbCBpZGVhIGlz IHRvIGNob29zZSBhIGdvb2QgZGVmYXVsdCBmb3IgYmVnaW5uZXJzCjs7ICAgdGhhdCBkb2Vzbid0 IGNsYXNoIHdpdGggRW1hY3MncyBkZWZhdWx0cy4gIFRoZSBzZXR0aW5ncyBhcmUgb25seQo7OyAg IGluIHBsYWNlIGR1cmluZyBFZ2xvdCdzIExTUC1lbnJpY2hlZCB0ZW51cmUgb3ZlciBhIHByb2pl Y3QuICBFdmVuCjs7ICAgc28sIHNvbWUgb2YgdGhvc2UgZGVjaXNpb25zIHdpbGwgaW52YXJpYWJs eSBhZ2dyYXZhdGUgYSBtaW5vcml0eQo7OyAgIG9mIEVtYWNzIHBvd2VyIHVzZXJzLCBidXQgdGhl c2UgdXNlcnMgY2FuIHVzZSBgZWdsb3Qtc3RheS1vdXQtb2YnCjs7ICAgYW5kIGBlZ2xvdC1tYW5h Z2VkLW1vZGUtaG9vaycgdG8gYWRqdXN0IHRoaW5ncyB0byB0aGVpcgo7OyAgIHByZWZlcmVuY2Vz Lgo7Owo7OyAqIE9uIG9jY2FzaW9uLCB0byBlbmFibGUgbmV3IGZlYXR1cmVzLCBFZ2xvdCBjYW4g aGF2ZSBzb2Z0Cjs7ICAgZGVwZW5kZW5jaWVzIG9uIHBvcHVsYXIgbGlicmFyaWVzIHRoYXQgYXJl IG5vdCBpbiBFbWFjcyBjb3JlLgo7OyAgICJTb2Z0IiBtZWFucyB0aGF0IHRoZSBkZXBlbmRlbmN5 IGRvZXNuJ3QgaW1wYWlyIGFueSBvdGhlciB1c2Ugb2YKOzsgICBFZ2xvdCBiZXlvbmQgdGhhdCBm ZWF0dXJlLiAgU3VjaCBpcyB0aGUgY2FzZSBvZiB0aGUgc25pcHBldAo7OyAgIGZ1bmN0aW9uYWxp dHksIHZpYSB0aGUgWWFzbmlwcGV0IHBhY2thZ2UsIE1hcmtkb3duIGZvcm1hdHRpbmcgb2YKOzsg ICBhdC1wb2ludCBkb2N1bWVudGF0aW9uIHZpYSB0aGUgbWFya2Rvd24tbW9kZSBwYWNrYWdlLCBh bmQgbmljZXIKOzsgICBsb29raW5nIGNvbXBsZXRpb25zIHdoZW4gdGhlIENvbXBhbnkgcGFja2Fn ZSBpcyB1c2VkLgoKOzs7IENvZGU6CgoocmVxdWlyZSAnaW1lbnUpCihyZXF1aXJlICdjbC1saWIp CgoocmVxdWlyZSAndXJsLXBhcnNlKQoocmVxdWlyZSAndXJsLXV0aWwpCihyZXF1aXJlICdwY2Fz ZSkKKHJlcXVpcmUgJ2NvbXBpbGUpIDsgZm9yIHNvbWUgZmFjZXMKKHJlcXVpcmUgJ3dhcm5pbmdz KQooZXZhbC13aGVuLWNvbXBpbGUKICAocmVxdWlyZSAnc3Vici14KSkKKHJlcXVpcmUgJ2ZpbGVu b3RpZnkpCihyZXF1aXJlICdlcnQpCihyZXF1aXJlICd0ZXh0LXByb3BlcnR5LXNlYXJjaCBuaWwg dCkKKHJlcXVpcmUgJ2RpZmYtbW9kZSkKKHJlcXVpcmUgJ2RpZmYpCgo7OyBUaGVzZSBkZXBlbmRl bmNpZXMgYXJlIGFsc28gR05VIEVMUEEgY29yZSBwYWNrYWdlcy4gIEJlY2F1c2Ugb2YKOzsgYnVn IzYyNTc2LCBzaW5jZSB0aGVyZSBpcyBhIHJpc2sgdGhhdCBNLXggcGFja2FnZS1pbnN0YWxsLCBk ZXNwaXRlCjs7IGhhdmluZyBpbnN0YWxsZWQgdGhlbSwgZGlkbid0IGNvcnJlY3RseSByZS1sb2Fk IHRoZW0gb3ZlciB0aGUKOzsgYnVpbHQtaW4gdmVyc2lvbnMuCihldmFsLWFuZC1jb21waWxlCiAg OzsgRm9yIHRob3NlIHBhY2thZ2VzIHRoYXQgYXJlIHByZWxvYWRlZCwgcmVsb2FkIHRoZW0gaWYg bmVlZGVkLAogIDs7IHNpbmNlIHRoYXQncyB0aGUgYmVzdCB3ZSBjYW4gZG8gYW55d2F5LgogIDs7 IEZJWE1FOiBNYXliZSB0aGUgRUxQQSBwYWNrYWdlcyBmb3IgdGhvc2UgcHJlbG9hZGVkIHBhY2th Z2VzIHNob3VsZAogIDs7IGZvcmNlLXJlbG9hZCB0aGVtc2VsdmVzIGVhZ2VybHkgd2hlbiB0aGUg cGFja2FnZSBpcyBhY3RpdmF0ZWQhCiAgKGxldCAoKHJlbG9hZCAoaWYgKGZib3VuZHAgJ3JlcXVp cmUtd2l0aC1jaGVjaykgO0VtYWNz4omlMzAKICAgICAgICAgICAgICAgICAgICAjJ3JlcXVpcmUt d2l0aC1jaGVjawogICAgICAgICAgICAgICAgICAobGFtYmRhIChmZWF0dXJlICZyZXN0IF8pCiAg ICAgICAgICAgICAgICAgICAgOzsgSnVzdCBibGluZGx5IHJlbG9hZCBsaWtlIHdlIHVzZWQgdG8g ZG8gYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgOzsgYHJlcXVpcmUtd2l0aC1jaGVjaycuCiAg ICAgICAgICAgICAgICAgICAgKGxvYWQgKHN5bWJvbC1uYW1lIGZlYXR1cmUpIG5pbCAnbm9tZXNz YWdlKSkpKSkKCiAgICAoZnVuY2FsbCByZWxvYWQgJ2VsZG9jIG5pbCAncmVsb2FkKQogICAgKGZ1 bmNhbGwgcmVsb2FkICdzZXEgbmlsICdyZWxvYWQpCiAgICA7OyBGb3IgdGhvc2UgcGFja2FnZXMg d2hpY2ggYXJlIG5vdCBwcmVsb2FkZWQgT1RPSCwgc2lnbmFsIGFuIGVycm9yIGlmCiAgICA7OyB0 aGUgbG9hZGVkIGZpbGUgaXMgbm90IHRoZSBvbmUgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGxvYWRl ZC4KICAgIChtYXBjIHJlbG9hZCAnKHByb2plY3QgZmx5bWFrZSB4cmVmIGpzb25ycGMgZXh0ZXJu YWwtY29tcGxldGlvbikpKSkKCjs7IGZvcndhcmQtZGVjbGFyZSwgYnV0IGRvbid0IHJlcXVpcmUg KEVtYWNzIDI4IGRvZXNuJ3Qgc2VlbSB0byBjYXJlKQooZGVmdmFyIG1hcmtkb3duLWZvbnRpZnkt Y29kZS1ibG9ja3MtbmF0aXZlbHkpCihkZWZ2YXIgY29tcGFueS1iYWNrZW5kcykKKGRlZnZhciBj b21wYW55LXRvb2x0aXAtYWxpZ24tYW5ub3RhdGlvbnMpCihkZWZ2YXIgdHJhbXAtc3NoLWNvbnRy b2xtYXN0ZXItb3B0aW9ucykKKGRlZnZhciB0cmFtcC11c2Utc3NoLWNvbnRyb2xtYXN0ZXItb3B0 aW9ucykKCgwKOzs7IE9ic29sZXRlIGFsaWFzZXMKOzs7CihtYWtlLW9ic29sZXRlLXZhcmlhYmxl ICdlZ2xvdC0tbWFuYWdlZC1tb2RlLWhvb2sKICAgICAgICAgICAgICAgICAgICAgICAgJ2VnbG90 LW1hbmFnZWQtbW9kZS1ob29rICIxLjYiKQooZGVmaW5lLW9ic29sZXRlLXZhcmlhYmxlLWFsaWFz ICdlZ2xvdC1jb25maXJtLXNlcnZlci1pbml0aWF0ZWQtZWRpdHMKICAnZWdsb3QtY29uZmlybS1z ZXJ2ZXItZWRpdHMgIjEuMTYiKQoobWFrZS1vYnNvbGV0ZS12YXJpYWJsZSAnZWdsb3QtZXZlbnRz LWJ1ZmZlci1zaXplCiAgJ2VnbG90LWV2ZW50cy1idWZmZXItY29uZmlnICIxLjE2IikKKGRlZmlu ZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcyAnZWdsb3QtLXVyaS10by1wYXRoICMnZWdsb3QtdXJp LXRvLXBhdGggIjEuMTYiKQooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzICdlZ2xvdC0t cGF0aC10by11cmkgIydlZ2xvdC1wYXRoLXRvLXVyaSAiMS4xNiIpCihkZWZpbmUtb2Jzb2xldGUt ZnVuY3Rpb24tYWxpYXMgJ2VnbG90LS1yYW5nZS1yZWdpb24gIydlZ2xvdC1yYW5nZS1yZWdpb24g IjEuMTYiKQooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzICdlZ2xvdC0tc2VydmVyLWNh cGFibGUgIydlZ2xvdC1zZXJ2ZXItY2FwYWJsZSAiMS4xNiIpCihkZWZpbmUtb2Jzb2xldGUtZnVu Y3Rpb24tYWxpYXMgJ2VnbG90LS1zZXJ2ZXItY2FwYWJsZS1vci1sb3NlICMnZWdsb3Qtc2VydmVy LWNhcGFibGUtb3ItbG9zZSAiMS4xNiIpCihkZWZpbmUtb2Jzb2xldGUtZnVuY3Rpb24tYWxpYXMK ICAnZWdsb3QtbHNwLWFiaWRpbmctY29sdW1uICMnZWdsb3QtdXRmLTE2LWxpbmVwb3MgIjEuMTIi KQooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzCiAgJ2VnbG90LWN1cnJlbnQtY29sdW1u ICMnZWdsb3QtdXRmLTMyLWxpbmVwb3MgIjEuMTIiKQooZGVmaW5lLW9ic29sZXRlLXZhcmlhYmxl LWFsaWFzCiAgJ2VnbG90LWN1cnJlbnQtY29sdW1uLWZ1bmN0aW9uICdlZ2xvdC1jdXJyZW50LWxp bmVwb3MtZnVuY3Rpb24gIjEuMTIiKQooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzCiAg J2VnbG90LW1vdmUtdG8tY3VycmVudC1jb2x1bW4gIydlZ2xvdC1tb3ZlLXRvLXV0Zi0zMi1saW5l cG9zICIxLjEyIikKKGRlZmluZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcwogICdlZ2xvdC1tb3Zl LXRvLWxzcC1hYmlkaW5nLWNvbHVtbiAjJ2VnbG90LW1vdmUtdG8tdXRmLTE2LWxpbmVwb3MgIjEu MTIiKQooZGVmaW5lLW9ic29sZXRlLXZhcmlhYmxlLWFsaWFzCiAgJ2VnbG90LW1vdmUtdG8tY29s dW1uLWZ1bmN0aW9uICdlZ2xvdC1tb3ZlLXRvLWxpbmVwb3MtZnVuY3Rpb24gIjEuMTIiKQooZGVm aW5lLW9ic29sZXRlLXZhcmlhYmxlLWFsaWFzICdlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmls aXRlcwogICdlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmlsaXRpZXMgIjEuOCIpCjs7OyMjI2F1 dG9sb2FkCihkZWZpbmUtb2Jzb2xldGUtZnVuY3Rpb24tYWxpYXMgJ2VnbG90LXVwZGF0ZSAjJ2Vn bG90LXVwZ3JhZGUtZWdsb3QgIjI5LjEiKQoKDAo7OzsgVXNlciB0d2Vha2FibGUgc3R1ZmYKKGRl Zmdyb3VwIGVnbG90IG5pbAogICJJbnRlcmFjdGlvbiB3aXRoIExhbmd1YWdlIFNlcnZlciBQcm90 b2NvbCBzZXJ2ZXJzLiIKICA6cHJlZml4ICJlZ2xvdC0iCiAgOmdyb3VwICdhcHBsaWNhdGlvbnMp CgooZGVmdW4gZWdsb3QtYWx0ZXJuYXRpdmVzIChhbHRlcm5hdGl2ZXMpCiAgIkNvbXB1dGUgc2Vy dmVyLWNob29zaW5nIGZ1bmN0aW9uIGZvciBgZWdsb3Qtc2VydmVyLXByb2dyYW1zJy4KRWFjaCBl bGVtZW50IG9mIEFMVEVSTkFUSVZFUyBpcyBhIHN0cmluZyBQUk9HUkFNIG9yIGEgbGlzdCBvZgpz dHJpbmdzIChQUk9HUkFNIEFSR1MuLi4pIHdoZXJlIHByb2dyYW0gbmFtZXMgYW4gTFNQIHNlcnZl cgpwcm9ncmFtIHRvIHN0YXJ0IHdpdGggQVJHUy4gIFJldHVybnMgYSBmdW5jdGlvbiB0byBiZSBp bnZva2VkCmF1dG9tYXRpY2FsbHkgYnkgRWdsb3Qgb24gc3RhcnR1cC4gIFdoZW4gaW52b2tlZCwg dGhhdCBmdW5jdGlvbgp3aWxsIHJldHVybiBhIGxpc3QgKEFCU1BBVEggQVJHUyksIHdoZXJlIEFC U1BBVEggaXMgdGhlIGFic29sdXRlCnBhdGggb2YgdGhlIFBST0dSQU0gdGhhdCB3YXMgY2hvc2Vu IChpbnRlcmFjdGl2ZWx5IG9yCmF1dG9tYXRpY2FsbHkpLiIKICAobGFtYmRhICgmb3B0aW9uYWwg aW50ZXJhY3RpdmUgX3Byb2plY3QpCiAgICA7OyBKVEAyMDIxLTA2LTEzOiBUaGlzIGZ1bmN0aW9u IGlzIHdheSBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gaXQKICAgIDs7IGNvdWxkIGJlIGJlY2F1c2Ug aXQgYWNjb3VudHMgZm9yIHRoZSBmYWN0IHRoYXQKICAgIDs7IGBlZ2xvdC0tZXhlY3V0YWJsZS1m aW5kJyBtYXkgdGFrZSBtdWNoIGxvbmdlciB0byBleGVjdXRlIG9uCiAgICA7OyByZW1vdGUgZmls ZXMuCiAgICAobGV0KiAoKGxpc3RpZmllZCAoY2wtbG9vcCBmb3IgYSBpbiBhbHRlcm5hdGl2ZXMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgKGlmIChsaXN0cCBhKSBhIChs aXN0IGEpKSkpCiAgICAgICAgICAgKGVyciAobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgIChl cnJvciAiTm9uZSBvZiAnJXMnIGFyZSB2YWxpZCBleGVjdXRhYmxlcyIKICAgICAgICAgICAgICAg ICAgICAgICAgIChtYXBjb25jYXQgIydjYXIgbGlzdGlmaWVkICIsICIpKSkpKQogICAgICAoY29u ZCAoKGFuZCBpbnRlcmFjdGl2ZSBjdXJyZW50LXByZWZpeC1hcmcpCiAgICAgICAgICAgICA7OyBB IEMtdSBhbHdheXMgbGV0cyB1c2VyIGlucHV0IHNvbWV0aGluZyBtYW51YWxseSwKICAgICAgICAg ICAgIG5pbCkKICAgICAgICAgICAgKGludGVyYWN0aXZlCiAgICAgICAgICAgICAobGV0KiAoKGF1 Z21lbnRlZCAobWFwY2FyIChsYW1iZGEgKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxldCAoKGZvdW5kIChlZ2xvdC0tZXhlY3V0YWJsZS1maW5kCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGEpIHQp KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgZm91bmQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKGNh ciBhKSAoY29ucyBmb3VuZCAoY2RyIGEpKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdGlmaWVkKSkKICAgICAgICAgICAgICAgICAgICAoYXZhaWxhYmxlIChy ZW1vdmUgbmlsIGF1Z21lbnRlZCkpKQogICAgICAgICAgICAgICAoY29uZCAoKGNkciBhdmFpbGFi bGUpCiAgICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3NvYwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbXBsZXRpbmctcmVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJb ZWdsb3RdIE1vcmUgdGhhbiBvbmUgc2VydmVyIGV4ZWN1dGFibGUgYXZhaWxhYmxlOiAiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBhdmFpbGFibGUpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmlsIHQgbmlsIG5pbCAoY2FyIChjYXIgYXZhaWxhYmxlKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgIydlcXVhbCkpKQogICAgICAg ICAgICAgICAgICAgICAoKGNkciAoY2FyIGF2YWlsYWJsZSkpKQogICAgICAgICAgICAgICAgICAg ICAodAogICAgICAgICAgICAgICAgICAgICAgOzsgRG9uJ3QgZXJyb3Igd2hlbiB1c2VkIGludGVy YWN0aXZlbHksIGxldCB0aGUKICAgICAgICAgICAgICAgICAgICAgIDs7IEVnbG90IHByb21wdCB0 aGUgdXNlciBmb3IgYWx0ZXJuYXRpdmUgKGdpdGh1YiM3MTkpCiAgICAgICAgICAgICAgICAgICAg ICBuaWwpKSkpCiAgICAgICAgICAgICh0CiAgICAgICAgICAgICAoY2wtbG9vcCBmb3IgKHAgLiBh cmdzKSBpbiBsaXN0aWZpZWQKICAgICAgICAgICAgICAgICAgICAgIGZvciBwcm9iZSA9IChlZ2xv dC0tZXhlY3V0YWJsZS1maW5kIHAgdCkKICAgICAgICAgICAgICAgICAgICAgIHdoZW4gcHJvYmUg cmV0dXJuIChjb25zIHByb2JlIGFyZ3MpCiAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IChm dW5jYWxsIGVycikpKSkpKSkKCihkZWZ2YXIgZWdsb3Qtc2VydmVyLXByb2dyYW1zIGAoKChydXN0 LXRzLW1vZGUgcnVzdC1tb2RlKSAuICgicnVzdC1hbmFseXplciIpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgoY21ha2UtbW9kZSBjbWFrZS10cy1tb2RlKSAuICgiY21ha2UtbGFu Z3VhZ2Utc2VydmVyIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpbXJjLW1v ZGUgLiAoInZpbS1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChweXRob24tbW9kZSBweXRob24tdHMtbW9kZSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLiAsKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJygicHlsc3AiICJweWxzIiAoInB5cmlnaHQtbGFuZ3Nl cnZlciIgIi0tc3RkaW8iKSAiamVkaS1sYW5ndWFnZS1zZXJ2ZXIiICJydWZmLWxzcCIpKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGpzLWpzb24tbW9kZSBqc29uLW1vZGUganNv bi10cy1tb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICwoZWdsb3QtYWx0 ZXJuYXRpdmVzICcoKCJ2c2NvZGUtanNvbi1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgi dnNjb2RlLWpzb24tbGFuZ3VhZ2VzZXJ2ZXIiICItLXN0ZGlvIikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgianNvbi1sYW5ndWFnZXNl cnZlciIgIi0tc3RkaW8iKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGpz LW1vZGUgOmxhbmd1YWdlLWlkICJqYXZhc2NyaXB0IikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChqcy10cy1tb2RlIDpsYW5ndWFnZS1pZCAiamF2YXNjcmlwdCIpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHN4LXRzLW1vZGUgOmxhbmd1YWdlLWlkICJ0eXBl c2NyaXB0cmVhY3QiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVzY3Jp cHQtdHMtbW9kZSA6bGFuZ3VhZ2UtaWQgInR5cGVzY3JpcHQiKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHR5cGVzY3JpcHQtbW9kZSA6bGFuZ3VhZ2UtaWQgInR5cGVzY3JpcHQi KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoInR5cGVzY3JpcHQtbGFuZ3Vh Z2Utc2VydmVyIiAiLS1zdGRpbyIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo YmFzaC10cy1tb2RlIHNoLW1vZGUpIC4gKCJiYXNoLWxhbmd1YWdlLXNlcnZlciIgInN0YXJ0Iikp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwaHAtbW9kZSBwaHBzLW1vZGUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gLChlZ2xvdC1hbHRlcm5hdGl2ZXMKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKCJwaHBhY3RvciIgImxhbmd1YWdl LXNlcnZlciIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgicGhwIiAi dmVuZG9yL2ZlbGl4ZmJlY2tlci9sYW5ndWFnZS1zZXJ2ZXIvYmluL3BocC1sYW5ndWFnZS1zZXJ2 ZXIucGhwIikpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMtbW9kZSBjLXRz LW1vZGUgYysrLW1vZGUgYysrLXRzLW1vZGUgb2JqYy1tb2RlKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAuICwoZWdsb3QtYWx0ZXJuYXRpdmVzCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnKCJjbGFuZ2QiICJjY2xzIikpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgoKGNhbWwtbW9kZSA6bGFuZ3VhZ2UtaWQgIm9jYW1sIikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0dWFyZWctbW9kZSA6bGFuZ3VhZ2UtaWQgIm9jYW1s IikgcmVhc29uLW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCJvY2Ft bGxzcCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocnVieS1tb2RlIHJ1Ynkt dHMtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoInNvbGFyZ3JhcGgi ICJzb2NrZXQiICItLXBvcnQiIDphdXRvcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGhhc2tlbGwtbW9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgi aGFza2VsbC1sYW5ndWFnZS1zZXJ2ZXItd3JhcHBlciIgIi0tbHNwIikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVsbS1tb2RlIC4gKCJlbG0tbGFuZ3VhZ2Utc2VydmVyIikpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pbnQtbW9kZSAuICgibWludCIgImxzIikp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtvdGxpbi1tb2RlIC4gKCJrb3RsaW4t bGFuZ3VhZ2Utc2VydmVyIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChnby1t b2RlIGdvLWRvdC1tb2QtbW9kZSBnby1kb3Qtd29yay1tb2RlIGdvLXRzLW1vZGUgZ28tbW9kLXRz LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCJnb3BscyIpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUi1tb2RlIGVzcy1yLW1vZGUpIC4gKCJSIiAi LS1zbGF2ZSIgIi1lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJsYW5ndWFnZXNlcnZlcjo6cnVuKCkiKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKGphdmEtbW9kZSBqYXZhLXRzLW1vZGUpIC4gKCJqZHRscyIpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGFydC1tb2RlIGRhcnQtdHMtbW9kZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoImRhcnQiICJsYW5ndWFnZS1zZXJ2ZXIi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWNsaWVudC1pZCIgImVtYWNz LmVnbG90LWRhcnQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVsaXhpci1t b2RlIGVsaXhpci10cy1tb2RlIGhlZXgtdHMtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLiAsKGlmIChhbmQgKGZib3VuZHAgJ3czMi1zaGVsbC1kb3Mtc2VtYW50aWNzKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodzMyLXNoZWxsLWRv cy1zZW1hbnRpY3MpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygi bGFuZ3VhZ2Vfc2VydmVyLmJhdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnKCJsYW5ndWFnZV9zZXJ2ZXIuc2giICJzdGFydF9sZXhpY2FsLnNoIikpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRhLW1vZGUgLiAoImFkYV9sYW5ndWFnZV9zZXJ2 ZXIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NhbGEtbW9kZSAuICwoZWds b3QtYWx0ZXJuYXRpdmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICcoIm1ldGFscyIgIm1ldGFscy1lbWFjcyIpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocmFja2V0LW1vZGUgLiAoInJhY2tldCIgIi1sIiAicmFja2V0LWxhbmdzZXJ2 ZXIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHRleC1tb2RlIGNvbnRleHQt bW9kZSB0ZXhpbmZvLW1vZGUgYmlidGV4LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC4gLChlZ2xvdC1hbHRlcm5hdGl2ZXMgJygiZGlnZXN0aWYiICJ0ZXhsYWIiKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVybGFuZy1tb2RlIC4gKCJlcmxhbmdfbHMi ICItLXRyYW5zcG9ydCIgInN0ZGlvIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCh5YW1sLXRzLW1vZGUgeWFtbC1tb2RlKSAuICgieWFtbC1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0 ZGlvIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5peC1tb2RlIC4gLChlZ2xv dC1hbHRlcm5hdGl2ZXMgJygibmlsIiAicm5peC1sc3AiICJuaXhkIikpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChuaWNrZWwtbW9kZSAuICgibmxzIikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGdkc2NyaXB0LW1vZGUgLiAoImxvY2FsaG9zdCIgNjAwOCkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmb3J0cmFuLW1vZGUgZjkwLW1vZGUpIC4g KCJmb3J0bHMiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnV0aGFyay1tb2Rl IC4gKCJmdXRoYXJrIiAibHNwIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChs dWEtbW9kZSBsdWEtdHMtbW9kZSkgLiAsKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJsdWEtbGFu Z3VhZ2Utc2VydmVyIiAibHVhLWxzcCIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoemlnLW1vZGUgLiAoInpscyIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo Y3NzLW1vZGUgY3NzLXRzLW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4g LChlZ2xvdC1hbHRlcm5hdGl2ZXMgJygoInZzY29kZS1jc3MtbGFuZ3VhZ2Utc2VydmVyIiAiLS1z dGRpbyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoImNzcy1sYW5ndWFnZXNlcnZlciIgIi0tc3RkaW8iKSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChodG1sLW1vZGUgLiAsKGVnbG90LWFsdGVybmF0aXZlcyAnKCgi dnNjb2RlLWh0bWwtbGFuZ3VhZ2Utc2VydmVyIiAiLS1zdGRpbyIpICgiaHRtbC1sYW5ndWFnZXNl cnZlciIgIi0tc3RkaW8iKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZG9j a2VyZmlsZS1tb2RlIGRvY2tlcmZpbGUtdHMtbW9kZSkgLiAoImRvY2tlci1sYW5nc2VydmVyIiAi LS1zdGRpbyIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY2xvanVyZS1tb2Rl IGNsb2p1cmVzY3JpcHQtbW9kZSBjbG9qdXJlYy1tb2RlIGNsb2p1cmUtdHMtbW9kZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoImNsb2p1cmUtbHNwIikpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChjc2hhcnAtbW9kZSBjc2hhcnAtdHMtbW9kZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAsKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoIm9tbmlzaGFycCIgIi1sc3AiKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNzaGFycC1scyIpKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1cmVzY3JpcHQtbW9kZSAuICgicHVyZXNjcmlw dC1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChwZXJsLW1vZGUgY3BlcmwtbW9kZSkgLiAoInBlcmwiICItTVBlcmw6Okxhbmd1YWdl U2VydmVyIiAiLWUiICJQZXJsOjpMYW5ndWFnZVNlcnZlcjo6cnVuIikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLW1vZGUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLiAsKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJygoIm1hcmtzbWFuIiAic2VydmVyIikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCJ2c2NvZGUtbWFya2Rvd24tbGFuZ3VhZ2Utc2VydmVyIiAiLS1z dGRpbyIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyYXBodml6LWRvdC1t b2RlIC4gKCJkb3QtbGFuZ3VhZ2Utc2VydmVyIiAiLS1zdGRpbyIpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0ZXJyYWZvcm0tbW9kZSAuICgidGVycmFmb3JtLWxzIiAic2VydmUi KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpdWEtdHMtbW9kZSB1aXVhLW1v ZGUpIC4gKCJ1aXVhIiAibHNwIikpKQogICJIb3cgdGhlIGNvbW1hbmQgYGVnbG90JyBndWVzc2Vz IHRoZSBzZXJ2ZXIgdG8gc3RhcnQuCkFuIGFzc29jaWF0aW9uIGxpc3Qgb2YgKE1BSk9SLU1PREUg LiBDT05UQUNUKSBwYWlycy4gIE1BSk9SLU1PREUKaWRlbnRpZmllcyB0aGUgYnVmZmVycyB0aGF0 IGFyZSB0byBiZSBtYW5hZ2VkIGJ5IGEgc3BlY2lmaWMKbGFuZ3VhZ2Ugc2VydmVyLiAgVGhlIGFz c29jaWF0ZWQgQ09OVEFDVCBzcGVjaWZpZXMgaG93IHRvIGNvbm5lY3QKdG8gYSBzZXJ2ZXIgZm9y IHRob3NlIGJ1ZmZlcnMuCgpNQUpPUi1NT0RFIGNhbiBiZToKCiogSW4gdGhlIG1vc3QgY29tbW9u IGNhc2UsIGEgc3ltYm9sIHN1Y2ggYXMgYGMtbW9kZSc7CgoqIEEgbGlzdCAoTUFKT1ItTU9ERS1T WU1CT0wgOkxBTkdVQUdFLUlEIElEKSB3aGVyZQogIE1BSk9SLU1PREUtU1lNQk9MIGlzIHRoZSBh Zm9yZW1lbnRpb25lZCBzeW1ib2wgYW5kIElEIGlzIGEKICBzdHJpbmcgaWRlbnRpZnlpbmcgdGhl IGxhbmd1YWdlIHRvIHRoZSBzZXJ2ZXI7CgoqIEEgbGlzdCBjb21iaW5pbmcgdGhlIHByZXZpb3Vz IHR3byBhbHRlcm5hdGl2ZXMsIG1lYW5pbmcKICBtdWx0aXBsZSBtYWpvciBtb2RlcyB3aWxsIGJl IGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBzZXJ2ZXIKICBwcm9ncmFtLiAgVGhpcyBhc3NvY2lh dGlvbiBpcyBzdWNoIHRoYXQgdGhlIHNhbWUgcmVzdWx0aW5nCiAgc2VydmVyIHByb2Nlc3Mgd2ls bCBtYW5hZ2UgYnVmZmVycyBvZiBkaWZmZXJlbnQgbWFqb3IgbW9kZXMuCgpDT05UQUNUIGNhbiBi ZToKCiogSW4gdGhlIG1vc3QgY29tbW9uIGNhc2UsIGEgbGlzdCBvZiBzdHJpbmdzIChQUk9HUkFN IFtBUkdTLi4uXSkuCiAgUFJPR1JBTSBpcyBjYWxsZWQgd2l0aCBBUkdTIGFuZCBpcyBleHBlY3Rl ZCB0byBzZXJ2ZSBMU1AgcmVxdWVzdHMKICBvdmVyIHRoZSBzdGFuZGFyZCBpbnB1dC9vdXRwdXQg Y2hhbm5lbHMuCgoqIEEgbGlzdCAoUFJPR1JBTSBbQVJHUy4uLl0gOmluaXRpYWxpemF0aW9uT3B0 aW9ucyBPUFRJT05TKSwKICB3aGVyZXVwb24gUFJPR1JBTSBpcyBjYWxsZWQgd2l0aCBBUkdTIGFz IGluIHRoZSBmaXJzdCBvcHRpb24sCiAgYW5kIHRoZSBMU1AgXCJpbml0aWFsaXphdGlvbk9wdGlv bnNcIiBKU09OIG9iamVjdCBpcwogIGNvbnN0cnVjdGVkIGZyb20gT1BUSU9OUy4gIElmIE9QVElP TlMgaXMgYSB1bmFyeSBmdW5jdGlvbiwgaXQKICBpcyBjYWxsZWQgd2l0aCB0aGUgc2VydmVyIGlu c3RhbmNlIGFuZCBzaG91bGQgcmV0dXJuIGEgSlNPTgogIG9iamVjdC4KCiogQSBsaXN0IChIT1NU IFBPUlQgW1RDUC1BUkdTLi4uXSkgd2hlcmUgSE9TVCBpcyBhIHN0cmluZyBhbmQKICBQT1JUIGlz IGEgcG9zaXRpdmUgaW50ZWdlciBmb3IgY29ubmVjdGluZyB0byBhIHNlcnZlciB2aWEgVENQLgog IFJlbWFpbmluZyBBUkdTIGFyZSBwYXNzZWQgdG8gYG9wZW4tbmV0d29yay1zdHJlYW0nIGZvcgog IHVwZ3JhZGluZyB0aGUgY29ubmVjdGlvbiB3aXRoIGVuY3J5cHRpb24gb3Igb3RoZXIgY2FwYWJp bGl0aWVzLgoKKiBBIGxpc3QgKFBST0dSQU0gW0FSR1MuLi5dIDphdXRvcG9ydCBbTU9SRUFSR1Mu Li5dKSwgd2hlcmV1cG9uIGEKICBjb21iaW5hdGlvbiBvZiBwcmV2aW91cyBvcHRpb25zIGlzIHVz ZWQuICBGaXJzdCwgYW4gYXR0ZW1wdCBpcwogIG1hZGUgdG8gZmluZCBhbiBhdmFpbGFibGUgc2Vy dmVyIHBvcnQsIHRoZW4gUFJPR1JBTSBpcyBsYXVuY2hlZAogIHdpdGggQVJHUzsgdGhlIGA6YXV0 b3BvcnQnIGtleXdvcmQgc3Vic3RpdHV0ZWQgZm9yIHRoYXQgbnVtYmVyOwogIGFuZCBNT1JFQVJH Uy4gIEVnbG90IHRoZW4gYXR0ZW1wdHMgdG8gZXN0YWJsaXNoIGEgVENQCiAgY29ubmVjdGlvbiB0 byB0aGF0IHBvcnQgbnVtYmVyIG9uIHRoZSBsb2NhbGhvc3QuCgoqIEEgY29ucyAoQ0xBU1MtTkFN RSAuIElOSVRBUkdTKSB3aGVyZSBDTEFTUy1OQU1FIGlzIGEgc3ltYm9sCiAgZGVzaWduYXRpbmcg YSBzdWJjbGFzcyBvZiBgZWdsb3QtbHNwLXNlcnZlcicsIGZvciByZXByZXNlbnRpbmcKICBleHBl cmltZW50YWwgTFNQIHNlcnZlcnMuICBJTklUQVJHUyBpcyBhIGtleXdvcmQtdmFsdWUgcGxpc3QK ICB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG9iamVjdCBvZiBDTEFTUy1OQU1FLCBvciBhIHBsYWlu IGxpc3QKICBpbnRlcnByZXRlZCBhcyB0aGUgcHJldmlvdXMgZGVzY3JpcHRpb25zIG9mIENPTlRB Q1QuICBJbiB0aGUKICBsYXR0ZXIgY2FzZSB0aGF0IHBsYWluIGxpc3QgaXMgdXNlZCB0byBwcm9k dWNlIGEgcGxpc3Qgd2l0aCBhCiAgc3VpdGFibGUgOlBST0NFU1MgaW5pdGFyZyB0byBDTEFTUy1O QU1FLiAgVGhlIGNsYXNzCiAgYGVnbG90LWxzcC1zZXJ2ZXInIGRlc2NlbmRzIGZyb20gYGpzb25y cGMtcHJvY2Vzcy1jb25uZWN0aW9uJywKICB3aGljaCB5b3Ugc2hvdWxkIHNlZSBmb3IgdGhlIHNl bWFudGljcyBvZiB0aGUgbWFuZGF0b3J5CiAgOlBST0NFU1MgYXJndW1lbnQuCgoqIEEgZnVuY3Rp b24gb2YgdHdvIGFyZ3VtZW50cyAoSU5URVJBQ1RJVkUgUFJPSkVDVCkgcHJvZHVjaW5nIGFueQog IG9mIHRoZSBhYm92ZSB2YWx1ZXMgZm9yIENPTlRBQ1QuICBJTlRFUkFDVElWRSB3aWxsIGJlIHQg aWYgYW4KICBpbnRlcmFjdGl2ZSBgTS14IGVnbG90JyB3YXMgdXNlZCwgYW5kIG5pbCBvdGhlcndp c2UgKGUuZy4gZnJvbQogIGBlZ2xvdC1lbnN1cmUnKS4gIEludGVyYWN0aXZlIGNhbGxzIG1heSBh c2sgdGhlIHVzZXIgZm9yIGhpbnRzCiAgb24gZmluZGluZyB0aGUgcmVxdWlyZWQgcHJvZ3JhbXMs IGV0Yy4gIFBST0pFQ1QgaXMgd2hhdGV2ZXIKICBwcm9qZWN0IEVnbG90IGRpc2NvdmVyZWQgdmlh IGBwcm9qZWN0LWZpbmQtZnVuY3Rpb25zJyAod2hpY2gKICBzZWUpLiAgVGhlIGZ1bmN0aW9uIHNo b3VsZCByZXR1cm4gbmlsIG9yIHNpZ25hbCBhbiBlcnJvciBpZiBpdAogIGNhbid0IHByb2R1Y2Ug YSB2YWxpZCBDT05UQUNULiAgVGhlIGhlbHBlciBmdW5jdGlvbgogIGBlZ2xvdC1hbHRlcm5hdGl2 ZXMnICh3aGljaCBzZWUpIGNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgYQogIGZ1bmN0aW9uIHRoYXQg b2ZmZXJzIG1vcmUgdGhhbiBvbmUgc2VydmVyIGZvciBhIGdpdmVuCiAgTUFKT1ItTU9ERS4iKQoK KGRlZmZhY2UgZWdsb3QtaGlnaGxpZ2h0LXN5bWJvbC1mYWNlCiAgJygodCAoOmluaGVyaXQgYm9s ZCkpKQogICJGYWNlIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBzeW1ib2wgYXQgcG9pbnQuIikKCihk ZWZmYWNlIGVnbG90LW1vZGUtbGluZQogICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1jb25zdGFu dC1mYWNlIDp3ZWlnaHQgYm9sZCkpKQogICJGYWNlIGZvciBwYWNrYWdlLW5hbWUgaW4gRWdsb3Qn cyBtb2RlIGxpbmUuIikKCihkZWZmYWNlIGVnbG90LWRpYWdub3N0aWMtdGFnLXVubmVjZXNzYXJ5 LWZhY2UKICAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKICAiRmFjZSB1c2VkIHRvIHJlbmRlciB1 bnVzZWQgb3IgdW5uZWNlc3NhcnkgY29kZS4iKQoKKGRlZmZhY2UgZWdsb3QtZGlhZ25vc3RpYy10 YWctZGVwcmVjYXRlZC1mYWNlCiAgJygodCAuICg6aW5oZXJpdCBzaGFkb3cgOnN0cmlrZS10aHJv dWdoIHQpKSkKICAiRmFjZSB1c2VkIHRvIHJlbmRlciBkZXByZWNhdGVkIG9yIG9ic29sZXRlIGNv ZGUuIikKCihkZWZjdXN0b20gZWdsb3QtYXV0b3JlY29ubmVjdCAzCiAgIkNvbnRyb2wgYWJpbGl0 eSB0byByZWNvbm5lY3QgYXV0b21hdGljYWxseSB0byB0aGUgTFNQIHNlcnZlci4KSWYgdCwgYWx3 YXlzIHJlY29ubmVjdCBhdXRvbWF0aWNhbGx5IChub3QgcmVjb21tZW5kZWQpLiAgSWYgbmlsLApu ZXZlciByZWNvbm5lY3QgYXV0b21hdGljYWxseSBhZnRlciB1bmV4cGVjdGVkIHNlcnZlciBzaHV0 ZG93bnMsCmNyYXNoZXMgb3IgbmV0d29yayBmYWlsdXJlcy4gIEEgcG9zaXRpdmUgaW50ZWdlciBu dW1iZXIgc2F5cyB0bwpvbmx5IGF1dG9yZWNvbm5lY3QgaWYgdGhlIHByZXZpb3VzIHN1Y2Nlc3Nm dWwgY29ubmVjdGlvbiBhdHRlbXB0Cmxhc3RlZCBtb3JlIHRoYW4gdGhhdCBtYW55IHNlY29uZHMu IgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJSZWNvbm5lY3QgYXV0b21hdGljYWxseSIg dCkKICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiTmV2ZXIgcmVjb25uZWN0IiBuaWwpCiAg ICAgICAgICAgICAgICAgKGludGVnZXIgOnRhZyAiTnVtYmVyIG9mIHNlY29uZHMiKSkpCgooZGVm Y3VzdG9tIGVnbG90LWNvbm5lY3QtdGltZW91dCAzMAogICJOdW1iZXIgb2Ygc2Vjb25kcyBiZWZv cmUgdGltaW5nIG91dCBMU1AgY29ubmVjdGlvbiBhdHRlbXB0cy4KSWYgbmlsLCBuZXZlciB0aW1l IG91dC4iCiAgOnR5cGUgJyhjaG9pY2UgKG51bWJlciA6dGFnICJOdW1iZXIgb2Ygc2Vjb25kcyIp CiAgICAgICAgICAgICAgICAgKGNvbnN0ICA6dGFnICJOZXZlciB0aW1lIG91dCIgbmlsKSkpCgoo ZGVmY3VzdG9tIGVnbG90LXN5bmMtY29ubmVjdCAzCiAgIkNvbnRyb2wgYmxvY2tpbmcgb2YgTFNQ IGNvbm5lY3Rpb24gYXR0ZW1wdHMuCklmIHQsIGJsb2NrIGZvciBgZWdsb3QtY29ubmVjdC10aW1l b3V0JyBzZWNvbmRzLiAgQSBwb3NpdGl2ZQppbnRlZ2VyIG51bWJlciBtZWFucyBibG9jayBmb3Ig dGhhdCBtYW55IHNlY29uZHMsIGFuZCB0aGVuIHdhaXQKZm9yIHRoZSBjb25uZWN0aW9uIGluIHRo ZSBiYWNrZ3JvdW5kLiAgbmlsIGhhcyB0aGUgc2FtZSBtZWFuaW5nCmFzIDAsIGkuZS4gZG9uJ3Qg YmxvY2sgYXQgYWxsLiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiQmxvY2sgZm9yIGBl Z2xvdC1jb25uZWN0LXRpbWVvdXQnIHNlY29uZHMiIHQpCiAgICAgICAgICAgICAgICAgKGNvbnN0 IDp0YWcgIk5ldmVyIGJsb2NrIiBuaWwpCiAgICAgICAgICAgICAgICAgKGludGVnZXIgOnRhZyAi TnVtYmVyIG9mIHNlY29uZHMgdG8gYmxvY2siKSkpCgooZGVmY3VzdG9tIGVnbG90LWF1dG9zaHV0 ZG93biBuaWwKICAiSWYgbm9uLW5pbCwgc2h1dCBkb3duIHNlcnZlciBhZnRlciBraWxsaW5nIGxh c3QgbWFuYWdlZCBidWZmZXIuIgogIDp0eXBlICdib29sZWFuKQoKKGRlZmN1c3RvbSBlZ2xvdC1z ZW5kLWNoYW5nZXMtaWRsZS10aW1lIDAuNQogICJEb24ndCB0ZWxsIHNlcnZlciBvZiBjaGFuZ2Vz IGJlZm9yZSBFbWFjcydzIGJlZW4gaWRsZSBmb3IgdGhpcyBtYW55IHNlY29uZHMuIgogIDp0eXBl ICdudW1iZXIpCgooZGVmY3VzdG9tIGVnbG90LWV2ZW50cy1idWZmZXItY29uZmlnCiAgKGxpc3Qg OnNpemUgKG9yIChib3VuZC1hbmQtdHJ1ZS1wIGVnbG90LWV2ZW50cy1idWZmZXItc2l6ZSkgMjAw MDAwMCkKICAgICAgICA6Zm9ybWF0ICdmdWxsKQogICJDb25maWd1cmUgdGhlIEVnbG90IGV2ZW50 cyBidWZmZXIuCgpWYWx1ZSBpcyBhIHBsaXN0IGFjY2VwdGluZyB0aGUga2V5cyBgOnNpemUnLCB3 aGljaCBjb250cm9scyB0aGUKc2l6ZSBpbiBjaGFyYWN0ZXJzIG9mIHRoZSBidWZmZXIgKDAgZGlz YWJsZXMsIG5pbCBtZWFucwppbmZpbml0ZSksIGFuZCBgOmZvcm1hdCcsIHdoaWNoIGNvbnRyb2xz IHRoZSBzaGFwZSBvZiBlYWNoIGxvZwplbnRyeSAoYGZ1bGwnIGluY2x1ZGVzIHRoZSBvcmlnaW5h bCBKU09OLCBgbGlzcCcgdXNlcwpwcmV0dHktcHJpbnRlZCBMaXNwKS4KCkZvciBjaGFuZ2VzIG9u IHRoaXMgdmFyaWFibGUgdG8gdGFrZSBlZmZlY3QsIHlvdSBuZWVkIHRvIHJlc3RhcnQKdGhlIExT UCBjb25uZWN0aW9uLiAgVGhhdCBjYW4gYmUgZG9uZSBieSBgZWdsb3QtcmVjb25uZWN0Jy4iCiAg OnR5cGUgJyhwbGlzdCA6a2V5LXR5cGUgKHN5bWJvbCA6dGFnICJLZXl3b3JkIikKICAgICAgICAg ICAgICAgIDpvcHRpb25zICgoKGNvbnN0IDp0YWcgIlNpemUiIDpzaXplKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2hvaWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qg OnRhZyAiTm8gbGltaXQiIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2Vy IDp0YWcgIk51bWJlciBvZiBjaGFyYWN0ZXJzIikpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICgoY29uc3QgOnRhZyAiRm9ybWF0IiA6Zm9ybWF0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2hvaWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRnVsbCB3 aXRoIG9yaWdpbmFsIEpTT04iIGZ1bGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u c3QgOnRhZyAiU2hvcnRlbmVkIiBzaG9ydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25zdCA6dGFnICJQcmV0dHktcHJpbnRlZCBsaXNwIiBsaXNwKSkpKSkpCgooZGVmY3VzdG9tIGVn bG90LWNvbmZpcm0tc2VydmVyLWVkaXRzICcoKGVnbG90LXJlbmFtZSAuIG5pbCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IC4gbWF5YmUtc3VtbWFyeSkpCiAgIkNv bnRyb2wgaWYgY2hhbmdlcyBwcm9wb3NlZCBieSBMU1Agc2hvdWxkIGJlIGNvbmZpcm1lZCB3aXRo IHVzZXIuCgpJZiB0aGlzIHZhcmlhYmxlJ3MgdmFsdWUgaXMgdGhlIHN5bWJvbCBgZGlmZicsIGEg ZGlmZiBidWZmZXIgaXMKcG9wcyB1cCwgYWxsb3dpbmcgdGhlIHVzZXIgdG8gYXBwbHkgZWFjaCBj aGFuZ2UgaW5kaXZpZHVhbGx5LiAgSWYKdGhlIHN5bWJvbCBgc3VtbWFyeScgb3IgYW55IG90aGVy IG5vbi1uaWwgdmFsdWUsIHRoZSB1c2VyIGlzCnByb21wdGVkIGluIHRoZSBtaW5pYnVmZmVyIHdp dGggYWEgc2hvcnQgc3VtbWFyeSBvZiBjaGFuZ2VzLiAgVGhlCnN5bWJvbHMgYG1heWJlLWRpZmYn IGFuZCBgbWF5YmUtc3VtbWFyeScgbWVhbiB0aGF0IHRoZQpjb25maXJtYXRpb24gaXMgb2ZmZXJl ZCB0byB0aGUgdXNlciBvbmx5IGlmIHRoZSBjaGFuZ2VzIHRhcmdldApmaWxlcyB2aXNpdGVkIGlu IGJ1ZmZlcnMuICBGaW5hbGx5LCBhIG5pbCB2YWx1ZSBtZWFucyBhbGwgY2hhbmdlcwphcmUgYXBw bGllZCBkaXJlY3RseSB3aXRob3V0IGFueSBjb25maXJtYXRpb24uCgpJZiB0aGlzIHZhcmlhYmxl J3MgdmFsdWUgY2FuIGFsc28gYmUgYW4gYWxpc3QgKChDT01NQU5EIC4gQUNUSU9OKQouLi4pIHdo ZXJlIENPTU1BTkQgaXMgYSBzeW1ib2wgZGVzaWduYXRpbmcgYSBjb21tYW5kLCBzdWNoIGFzCmBl Z2xvdC1yZW5hbWUnLCBgZWdsb3QtY29kZS1hY3Rpb25zJywKYGVnbG90LWNvZGUtYWN0aW9uLXF1 aWNrZml4JywgZXRjLiAgQUNUSU9OIGlzIG9uZSBvZiB0aGUgc3ltYm9scwpkZXNjcmliZWQgYWJv dmUuICBUaGUgdmFsdWUgYHQnIGZvciBDT01NQU5EIGlzIGFjY2VwdGVkIGFuZCBpdHMKQUNUSU9O IGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBjb21tYW5kcyBub3QgaW4gdGhlIGFsaXN0LiIKICA6 dHlwZSAobGV0ICgoYmFzaWMtY2hvaWNlcwogICAgICAgICAgICAgICAnKChjb25zdCA6dGFnICJV c2UgZGlmZiIgZGlmZikKICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiU3VtbWFyaXplIGFu ZCBwcm9tcHQiIHN1bW1hcnkpCiAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIk1heWJlIHVz ZSBkaWZmIiBtYXliZS1kaWZmKQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJNYXliZSBz dW1tYXJpemUgYW5kIHByb21wdCIgbWF5YmUtc3VtbWFyeSkKICAgICAgICAgICAgICAgICAoY29u c3QgOnRhZyAiRG9uJ3QgY29uZmlybSIgbmlsKSkpKQogICAgICAgICAgYChjaG9pY2UgLEBiYXNp Yy1jaG9pY2VzCiAgICAgICAgICAgICAgICAgICAoYWxpc3QgOnRhZyAiUGVyLWNvbW1hbmQgYWxp c3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleS10eXBlIChjaG9pY2UgKGZ1bmN0aW9u IDp0YWcgIkNvbW1hbmQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEZWZhdWx0IiB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6 dmFsdWUtdHlwZSAoY2hvaWNlIC4gLGJhc2ljLWNob2ljZXMpKSkpKQoKKGRlZmN1c3RvbSBlZ2xv dC1leHRlbmQtdG8teHJlZiBuaWwKICAiSWYgbm9uLW5pbCwgYWN0aXZhdGUgRWdsb3QgaW4gY3Jv c3MtcmVmZXJlbmNlZCBub24tcHJvamVjdCBmaWxlcy4iCiAgOnR5cGUgJ2Jvb2xlYW4pCgooZGVm Y3VzdG9tIGVnbG90LXByZWZlci1wbGFpbnRleHQgbmlsCiAgIklmIG5vbi1uaWwsIGFsd2F5cyBy ZXF1ZXN0IHBsYWludGV4dCByZXNwb25zZXMgdG8gaG92ZXIgcmVxdWVzdHMuIgogIDp0eXBlICdi b29sZWFuKQoKKGRlZmN1c3RvbSBlZ2xvdC1tZW51LXN0cmluZyAiZWdsb3QiCiAgIlN0cmluZyBk aXNwbGF5ZWQgaW4gbW9kZSBsaW5lIHdoZW4gRWdsb3QgaXMgYWN0aXZlLiIKICA6dHlwZSAnc3Ry aW5nKQoKKGRlZmN1c3RvbSBlZ2xvdC1yZXBvcnQtcHJvZ3Jlc3MgdAogICJJZiBub24tbmlsLCBz aG93IHByb2dyZXNzIG9mIGxvbmcgcnVubmluZyBMU1Agc2VydmVyIHdvcmsuCklmIHNldCB0byBg bWVzc2FnZXMnLCB1c2UgKk1lc3NhZ2VzKiBidWZmZXIsIGVsc2UgdXNlIEVnbG90J3MKbW9kZSBs aW5lIGluZGljYXRvci4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIkRvbid0IHNob3cg cHJvZ3Jlc3MiIG5pbCkKICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiU2hvdyBwcm9ncmVz cyBpbiAqTWVzc2FnZXMqIiBtZXNzYWdlcykKICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAi U2hvdyBwcm9ncmVzcyBpbiBFZ2xvdCdzIG1vZGUgbGluZSBpbmRpY2F0b3IiIHQpKQogIDp2ZXJz aW9uICIxLjEwIikKCihkZWZjdXN0b20gZWdsb3QtaWdub3JlZC1zZXJ2ZXItY2FwYWJpbGl0aWVz IChsaXN0KQogICJMU1Agc2VydmVyIGNhcGFiaWxpdGllcyB0aGF0IEVnbG90IGNvdWxkIHVzZSwg YnV0IHdvbid0LgpZb3UgY291bGQgYWRkLCBmb3IgaW5zdGFuY2UsIHRoZSBzeW1ib2wKYDpkb2N1 bWVudEhpZ2hsaWdodFByb3ZpZGVyJyB0byBwcmV2ZW50IGF1dG9tYXRpYyBoaWdobGlnaHRpbmcK dW5kZXIgY3Vyc29yLiIKICA6dHlwZSAnKHNldAogICAgICAgICAgOnRhZyAiVGljayB0aGUgb25l cyB5b3UncmUgbm90IGludGVyZXN0ZWQgaW4iCiAgICAgICAgICAoY29uc3QgOnRhZyAiRG9jdW1l bnRhdGlvbiBvbiBob3ZlciIgOmhvdmVyUHJvdmlkZXIpCiAgICAgICAgICAoY29uc3QgOnRhZyAi Q29kZSBjb21wbGV0aW9uIiA6Y29tcGxldGlvblByb3ZpZGVyKQogICAgICAgICAgKGNvbnN0IDp0 YWcgIkZ1bmN0aW9uIHNpZ25hdHVyZSBoZWxwIiA6c2lnbmF0dXJlSGVscFByb3ZpZGVyKQogICAg ICAgICAgKGNvbnN0IDp0YWcgIkdvIHRvIGRlZmluaXRpb24iIDpkZWZpbml0aW9uUHJvdmlkZXIp CiAgICAgICAgICAoY29uc3QgOnRhZyAiR28gdG8gdHlwZSBkZWZpbml0aW9uIiA6dHlwZURlZmlu aXRpb25Qcm92aWRlcikKICAgICAgICAgIChjb25zdCA6dGFnICJHbyB0byBpbXBsZW1lbnRhdGlv biIgOmltcGxlbWVudGF0aW9uUHJvdmlkZXIpCiAgICAgICAgICAoY29uc3QgOnRhZyAiR28gdG8g ZGVjbGFyYXRpb24iIDpkZWNsYXJhdGlvblByb3ZpZGVyKQogICAgICAgICAgKGNvbnN0IDp0YWcg IkZpbmQgcmVmZXJlbmNlcyIgOnJlZmVyZW5jZXNQcm92aWRlcikKICAgICAgICAgIChjb25zdCA6 dGFnICJIaWdobGlnaHQgc3ltYm9scyBhdXRvbWF0aWNhbGx5IiA6ZG9jdW1lbnRIaWdobGlnaHRQ cm92aWRlcikKICAgICAgICAgIChjb25zdCA6dGFnICJMaXN0IHN5bWJvbHMgaW4gYnVmZmVyIiA6 ZG9jdW1lbnRTeW1ib2xQcm92aWRlcikKICAgICAgICAgIChjb25zdCA6dGFnICJMaXN0IHN5bWJv bHMgaW4gd29ya3NwYWNlIiA6d29ya3NwYWNlU3ltYm9sUHJvdmlkZXIpCiAgICAgICAgICAoY29u c3QgOnRhZyAiRXhlY3V0ZSBjb2RlIGFjdGlvbnMiIDpjb2RlQWN0aW9uUHJvdmlkZXIpCiAgICAg ICAgICAoY29uc3QgOnRhZyAiQ29kZSBsZW5zIiA6Y29kZUxlbnNQcm92aWRlcikKICAgICAgICAg IChjb25zdCA6dGFnICJGb3JtYXQgYnVmZmVyIiA6ZG9jdW1lbnRGb3JtYXR0aW5nUHJvdmlkZXIp CiAgICAgICAgICAoY29uc3QgOnRhZyAiRm9ybWF0IHBvcnRpb24gb2YgYnVmZmVyIiA6ZG9jdW1l bnRSYW5nZUZvcm1hdHRpbmdQcm92aWRlcikKICAgICAgICAgIChjb25zdCA6dGFnICJPbi10eXBl IGZvcm1hdHRpbmciIDpkb2N1bWVudE9uVHlwZUZvcm1hdHRpbmdQcm92aWRlcikKICAgICAgICAg IChjb25zdCA6dGFnICJSZW5hbWUgc3ltYm9sIiA6cmVuYW1lUHJvdmlkZXIpCiAgICAgICAgICAo Y29uc3QgOnRhZyAiSGlnaGxpZ2h0IGxpbmtzIGluIGRvY3VtZW50IiA6ZG9jdW1lbnRMaW5rUHJv dmlkZXIpCiAgICAgICAgICAoY29uc3QgOnRhZyAiRGVjb3JhdGUgY29sb3IgcmVmZXJlbmNlcyIg OmNvbG9yUHJvdmlkZXIpCiAgICAgICAgICAoY29uc3QgOnRhZyAiRm9sZCByZWdpb25zIG9mIGJ1 ZmZlciIgOmZvbGRpbmdSYW5nZVByb3ZpZGVyKQogICAgICAgICAgKGNvbnN0IDp0YWcgIkV4ZWN1 dGUgY3VzdG9tIGNvbW1hbmRzIiA6ZXhlY3V0ZUNvbW1hbmRQcm92aWRlcikKICAgICAgICAgIChj b25zdCA6dGFnICJJbmxheSBoaW50cyIgOmlubGF5SGludFByb3ZpZGVyKSkpCgooZGVmdmFyIGVn bG90LXdpdGhob2xkLXByb2Nlc3MtaWQgbmlsCiAgIklmIG5vbi1uaWwsIEVnbG90IHdpbGwgbm90 IHNlbmQgdGhlIEVtYWNzIHByb2Nlc3MgaWQgdG8gdGhlIGxhbmd1YWdlIHNlcnZlci4KVGhpcyBj YW4gYmUgdXNlZnVsIHdoZW4gdXNpbmcgZG9ja2VyIHRvIHJ1biBhIGxhbmd1YWdlIHNlcnZlci4i KQoKDAo7OzsgQ29uc3RhbnRzCjs7OwooZGVmY29uc3QgZWdsb3QtLXZlcnNpb24KICAoZXZhbC13 aGVuLWNvbXBpbGUKICAgICh3aGVuIGJ5dGUtY29tcGlsZS1jdXJyZW50LWZpbGUKICAgICAgKHJl cXVpcmUgJ2xpc3AtbW50KQogICAgICAobG0tdmVyc2lvbiBieXRlLWNvbXBpbGUtY3VycmVudC1m aWxlKSkpCiAgIlRoZSB2ZXJzaW9uIGFzIGEgc3RyaW5nIG9mIHRoaXMgdmVyc2lvbiBvZiBFZ2xv dC4KSXQgaXMgbmlsIGlmIEVnbG90IGlzIG5vdCBieXRlLWNvbXBsaWVkLiIpCgooZGVmY29uc3Qg ZWdsb3QtLXN5bWJvbC1raW5kLW5hbWVzCiAgYCgoMSAuICJGaWxlIikgKDIgLiAiTW9kdWxlIikK ICAgICgzIC4gIk5hbWVzcGFjZSIpICg0IC4gIlBhY2thZ2UiKSAoNSAuICJDbGFzcyIpCiAgICAo NiAuICJNZXRob2QiKSAoNyAuICJQcm9wZXJ0eSIpICg4IC4gIkZpZWxkIikKICAgICg5IC4gIkNv bnN0cnVjdG9yIikgKDEwIC4gIkVudW0iKSAoMTEgLiAiSW50ZXJmYWNlIikKICAgICgxMiAuICJG dW5jdGlvbiIpICgxMyAuICJWYXJpYWJsZSIpICgxNCAuICJDb25zdGFudCIpCiAgICAoMTUgLiAi U3RyaW5nIikgKDE2IC4gIk51bWJlciIpICgxNyAuICJCb29sZWFuIikKICAgICgxOCAuICJBcnJh eSIpICgxOSAuICJPYmplY3QiKSAoMjAgLiAiS2V5IikKICAgICgyMSAuICJOdWxsIikgKDIyIC4g IkVudW1NZW1iZXIiKSAoMjMgLiAiU3RydWN0IikKICAgICgyNCAuICJFdmVudCIpICgyNSAuICJP cGVyYXRvciIpICgyNiAuICJUeXBlUGFyYW1ldGVyIikpKQoKKGRlZmNvbnN0IGVnbG90LS1raW5k LW5hbWVzCiAgYCgoMSAuICJUZXh0IikgKDIgLiAiTWV0aG9kIikgKDMgLiAiRnVuY3Rpb24iKSAo NCAuICJDb25zdHJ1Y3RvciIpCiAgICAoNSAuICJGaWVsZCIpICg2IC4gIlZhcmlhYmxlIikgKDcg LiAiQ2xhc3MiKSAoOCAuICJJbnRlcmZhY2UiKQogICAgKDkgLiAiTW9kdWxlIikgKDEwIC4gIlBy b3BlcnR5IikgKDExIC4gIlVuaXQiKSAoMTIgLiAiVmFsdWUiKQogICAgKDEzIC4gIkVudW0iKSAo MTQgLiAiS2V5d29yZCIpICgxNSAuICJTbmlwcGV0IikgKDE2IC4gIkNvbG9yIikKICAgICgxNyAu ICJGaWxlIikgKDE4IC4gIlJlZmVyZW5jZSIpICgxOSAuICJGb2xkZXIiKSAoMjAgLiAiRW51bU1l bWJlciIpCiAgICAoMjEgLiAiQ29uc3RhbnQiKSAoMjIgLiAiU3RydWN0IikgKDIzIC4gIkV2ZW50 IikgKDI0IC4gIk9wZXJhdG9yIikKICAgICgyNSAuICJUeXBlUGFyYW1ldGVyIikpKQoKKGRlZmNv bnN0IGVnbG90LS10YWctZmFjZXMKICBgKCgxIC4gZWdsb3QtZGlhZ25vc3RpYy10YWctdW5uZWNl c3NhcnktZmFjZSkKICAgICgyIC4gZWdsb3QtZGlhZ25vc3RpYy10YWctZGVwcmVjYXRlZC1mYWNl KSkpCgooZGVmdmFyYWxpYXMgJ2VnbG90LXt9ICdlZ2xvdC0te30pCgooZGVmY29uc3QgZWdsb3Qt LXt9IChtYWtlLWhhc2gtdGFibGUgOnNpemUgMCkgIlRoZSBlbXB0eSBKU09OIG9iamVjdC4iKQoK KGRlZnVuIGVnbG90LS1leGVjdXRhYmxlLWZpbmQgKGNvbW1hbmQgJm9wdGlvbmFsIHJlbW90ZSkK ICAiTGlrZSBFbWFjcyAyNydzIGBleGVjdXRhYmxlLWZpbmQnLCBpZ25vcmUgUkVNT1RFIG9uIEVt YWNzIDI2LiIKICAoaWYgKD49IGVtYWNzLW1ham9yLXZlcnNpb24gMjcpIChleGVjdXRhYmxlLWZp bmQgY29tbWFuZCByZW1vdGUpCiAgICAoZXhlY3V0YWJsZS1maW5kIGNvbW1hbmQpKSkKCihkZWZ1 biBlZ2xvdC0tYWNjZXB0ZWQtZm9ybWF0cyAoKQogIChpZiAoYW5kIChub3QgZWdsb3QtcHJlZmVy LXBsYWludGV4dCkgKGZib3VuZHAgJ2dmbS12aWV3LW1vZGUpKQogICAgICBbIm1hcmtkb3duIiAi cGxhaW50ZXh0Il0gWyJwbGFpbnRleHQiXSkpCgooZGVmY29uc3QgZWdsb3QtLXVyaS1wYXRoLWFs bG93ZWQtY2hhcnMKICAobGV0ICgodmVjIChjb3B5LXNlcXVlbmNlIHVybC1wYXRoLWFsbG93ZWQt Y2hhcnMpKSkKICAgIChhc2V0IHZlYyA/OiBuaWwpIDs7IHNlZSBnaXRodWIjNjM5CiAgICB2ZWMp CiAgIkxpa2UgYHVybC1wYXRoLWFsbG93cy1jaGFycycgYnV0IG1vcmUgcmVzdHJpY3RpdmUuIikK CgwKOzs7IE1lc3NhZ2UgdmVyaWZpY2F0aW9uIGhlbHBlcnMKOzs7CihldmFsLWFuZC1jb21waWxl CiAgKGRlZnZhciBlZ2xvdC0tbHNwLWludGVyZmFjZS1hbGlzdAogICAgYCgKICAgICAgKENvZGVB Y3Rpb24gKDp0aXRsZSkgKDpraW5kIDpkaWFnbm9zdGljcyA6ZWRpdCA6Y29tbWFuZCA6aXNQcmVm ZXJyZWQgOmRhdGEpKQogICAgICAoQ29uZmlndXJhdGlvbkl0ZW0gKCkgKDpzY29wZVVyaSA6c2Vj dGlvbikpCiAgICAgIChDb21tYW5kICgoOnRpdGxlIC4gc3RyaW5nKSAoOmNvbW1hbmQgLiBzdHJp bmcpKSAoOmFyZ3VtZW50cykpCiAgICAgIChDb21wbGV0aW9uSXRlbSAoOmxhYmVsKQogICAgICAg ICAgICAgICAgICAgICAgKDpraW5kIDpkZXRhaWwgOmRvY3VtZW50YXRpb24gOmRlcHJlY2F0ZWQg OnByZXNlbGVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzb3J0VGV4dCA6ZmlsdGVy VGV4dCA6aW5zZXJ0VGV4dCA6aW5zZXJ0VGV4dEZvcm1hdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDp0ZXh0RWRpdCA6YWRkaXRpb25hbFRleHRFZGl0cyA6Y29tbWl0Q2hhcmFjdGVycwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb21tYW5kIDpkYXRhIDp0YWdzKSkKICAgICAg KERpYWdub3N0aWMgKDpyYW5nZSA6bWVzc2FnZSkgKDpzZXZlcml0eSA6Y29kZSA6c291cmNlIDpy ZWxhdGVkSW5mb3JtYXRpb24gOmNvZGVEZXNjcmlwdGlvbiA6dGFncykpCiAgICAgIChEb2N1bWVu dEhpZ2hsaWdodCAoOnJhbmdlKSAoOmtpbmQpKQogICAgICAoRmlsZVN5c3RlbVdhdGNoZXIgKDpn bG9iUGF0dGVybikgKDpraW5kKSkKICAgICAgKEhvdmVyICg6Y29udGVudHMpICg6cmFuZ2UpKQog ICAgICAoSW5pdGlhbGl6ZVJlc3VsdCAoOmNhcGFiaWxpdGllcykgKDpzZXJ2ZXJJbmZvKSkKICAg ICAgKExvY2F0aW9uICg6dXJpIDpyYW5nZSkpCiAgICAgIChMb2NhdGlvbkxpbmsgKDp0YXJnZXRV cmkgOnRhcmdldFJhbmdlIDp0YXJnZXRTZWxlY3Rpb25SYW5nZSkgKDpvcmlnaW5TZWxlY3Rpb25S YW5nZSkpCiAgICAgIChMb2dNZXNzYWdlUGFyYW1zICg6dHlwZSA6bWVzc2FnZSkpCiAgICAgIChN YXJrdXBDb250ZW50ICg6a2luZCA6dmFsdWUpKQogICAgICAoUGFyYW1ldGVySW5mb3JtYXRpb24g KDpsYWJlbCkgKDpkb2N1bWVudGF0aW9uKSkKICAgICAgKFBvc2l0aW9uICg6bGluZSA6Y2hhcmFj dGVyKSkKICAgICAgKFJhbmdlICg6c3RhcnQgOmVuZCkpCiAgICAgIChSZWdpc3RyYXRpb24gKDpp ZCA6bWV0aG9kKSAoOnJlZ2lzdGVyT3B0aW9ucykpCiAgICAgIChSZXNwb25zZUVycm9yICg6Y29k ZSA6bWVzc2FnZSkgKDpkYXRhKSkKICAgICAgKFNob3dNZXNzYWdlUGFyYW1zICg6dHlwZSA6bWVz c2FnZSkpCiAgICAgIChTaG93TWVzc2FnZVJlcXVlc3RQYXJhbXMgKDp0eXBlIDptZXNzYWdlKSAo OmFjdGlvbnMpKQogICAgICAoU2lnbmF0dXJlSGVscCAoOnNpZ25hdHVyZXMpICg6YWN0aXZlU2ln bmF0dXJlIDphY3RpdmVQYXJhbWV0ZXIpKQogICAgICAoU2lnbmF0dXJlSW5mb3JtYXRpb24gKDps YWJlbCkgKDpkb2N1bWVudGF0aW9uIDpwYXJhbWV0ZXJzIDphY3RpdmVQYXJhbWV0ZXIpKQogICAg ICAoU3ltYm9sSW5mb3JtYXRpb24gKDpuYW1lIDpraW5kIDpsb2NhdGlvbikKICAgICAgICAgICAg ICAgICAgICAgICAgICg6ZGVwcmVjYXRlZCA6Y29udGFpbmVyTmFtZSkpCiAgICAgIChEb2N1bWVu dFN5bWJvbCAoOm5hbWUgOnJhbmdlIDpzZWxlY3Rpb25SYW5nZSA6a2luZCkKICAgICAgICAgICAg ICAgICAgICAgICg6ZGV0YWlsIDpkZXByZWNhdGVkIDpjaGlsZHJlbikpCiAgICAgIChUZXh0RG9j dW1lbnRFZGl0ICg6dGV4dERvY3VtZW50IDplZGl0cykgKCkpCiAgICAgIChUZXh0RWRpdCAoOnJh bmdlIDpuZXdUZXh0KSkKICAgICAgKFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIgKDp1 cmkgOnZlcnNpb24pICgpKQogICAgICAoV29ya0RvbmVQcm9ncmVzcyAoOmtpbmQpICg6dGl0bGUg Om1lc3NhZ2UgOnBlcmNlbnRhZ2UgOmNhbmNlbGxhYmxlKSkKICAgICAgKFdvcmtzcGFjZUVkaXQg KCkgKDpjaGFuZ2VzIDpkb2N1bWVudENoYW5nZXMpKQogICAgICAoV29ya3NwYWNlU3ltYm9sICg6 bmFtZSA6a2luZCkgKDpjb250YWluZXJOYW1lIDpsb2NhdGlvbiA6ZGF0YSkpCiAgICAgIChJbmxh eUhpbnQgKDpwb3NpdGlvbiA6bGFiZWwpICg6a2luZCA6dGV4dEVkaXRzIDp0b29sdGlwIDpwYWRk aW5nTGVmdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhZGRp bmdSaWdodCA6ZGF0YSkpCiAgICAgIChJbmxheUhpbnRMYWJlbFBhcnQgKDp2YWx1ZSkgKDp0b29s dGlwIDpsb2NhdGlvbiA6Y29tbWFuZCkpKQogICAgIkFsaXN0IChJTlRFUkZBQ0UtTkFNRSAuIElO VEVSRkFDRSkgb2Yga25vd24gZXh0ZXJuYWwgTFNQIGludGVyZmFjZXMuCgpJTlRFUkZBQ0UtTkFN RSBpcyBhIHN5bWJvbCBkZXNpZ25hdGVkIGJ5IHRoZSBzcGVjIGFzClwiaW50ZXJmYWNlXCIuICBJ TlRFUkZBQ0UgaXMgYSBsaXN0IChSRVFVSVJFRCBPUFRJT05BTCkgd2hlcmUKUkVRVUlSRUQgYW5k IE9QVElPTkFMIGFyZSBsaXN0cyBvZiBLRVlXT1JEIGRlc2lnbmF0aW5nIGZpZWxkCm5hbWVzIHRo YXQgbXVzdCBiZSwgb3IgbWF5IGJlLCByZXNwZWN0aXZlbHksIHByZXNlbnQgaW4gYSBtZXNzYWdl CmFkaGVyaW5nIHRvIHRoYXQgaW50ZXJmYWNlLiAgS0VZIGNhbiBiZSBhIGtleXdvcmQgb3IgYSBj b25zIChTWU0KVFlQRSksIHdoZXJlIHR5cGUgaXMgdXNlZCBieSBgY2wtdHlwZXAnIHRvIGNoZWNr IHR5cGVzIGF0CnJ1bnRpbWUuCgpIZXJlJ3Mgd2hhdCBhbiBlbGVtZW50IG9mIHRoaXMgYWxpc3Qg bWlnaHQgbG9vayBsaWtlOgoKICAgIChDb21tYW5kICgoOnRpdGxlIC4gc3RyaW5nKSAoOmNvbW1h bmQgLiBzdHJpbmcpKSAoOmFyZ3VtZW50cykpIikpCgooZXZhbC1hbmQtY29tcGlsZQogIChkZWZ2 YXIgZWdsb3Qtc3RyaWN0LW1vZGUKICAgICcoOzsgVW5jb21tZW50IG5leHQgbGluZXMgZm9yIGZ1 biBhbmQgZGVidWdnaW5nCiAgICAgIDs7IGRpc2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzCiAgICAg IDs7IGVuZm9yY2UtcmVxdWlyZWQta2V5cwogICAgICA7OyBlbmZvcmNlLW9wdGlvbmFsLWtleXMK ICAgICAgbm8tdW5rbm93bi1pbnRlcmZhY2VzKQogICAgIkhvdyBzdHJpY3RseSB0byBjaGVjayBM U1AgaW50ZXJmYWNlcyBhdCBjb21waWxlLSBhbmQgcnVuLXRpbWUuCgpWYWx1ZSBpcyBhIGxpc3Qg b2Ygc3ltYm9scyAoaWYgdGhlIGxpc3QgaXMgZW1wdHksIG5vIGNoZWNrcyBhcmUKcGVyZm9ybWVk KS4KCklmIHRoZSBzeW1ib2wgYGRpc2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzJyBpcyBwcmVzZW50 LCBhbiBlcnJvcgppcyByYWlzZWQgaWYgYW55IGV4dHJhbmVvdXMgZmllbGRzIGFyZSBzZW50IGJ5 IHRoZSBzZXJ2ZXIuICBBdApjb21waWxlLXRpbWUsIGEgd2FybmluZyBpcyByYWlzZWQgaWYgYSBk ZXN0cnVjdHVyaW5nIHNwZWMKaW5jbHVkZXMgc3VjaCBhIGZpZWxkLgoKSWYgdGhlIHN5bWJvbCBg ZW5mb3JjZS1yZXF1aXJlZC1rZXlzJyBpcyBwcmVzZW50LCBhbiBlcnJvciBpcwpyYWlzZWQgaWYg YW55IHJlcXVpcmVkIGZpZWxkcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBtZXNzYWdlIHNlbnQKZnJv bSB0aGUgc2VydmVyLiAgQXQgY29tcGlsZS10aW1lLCBhIHdhcm5pbmcgaXMgcmFpc2VkIGlmIGEK ZGVzdHJ1Y3R1cmluZyBzcGVjIGRvZXNuJ3QgdXNlIHN1Y2ggYSBmaWVsZC4KCklmIHRoZSBzeW1i b2wgYGVuZm9yY2Utb3B0aW9uYWwta2V5cycgaXMgcHJlc2VudCwgbm90aGluZyBzcGVjaWFsCmhh cHBlbnMgYXQgcnVuLXRpbWUuICBBdCBjb21waWxlLXRpbWUsIGEgd2FybmluZyBpcyByYWlzZWQg aWYgYQpkZXN0cnVjdHVyaW5nIHNwZWMgZG9lc24ndCB1c2UgYWxsIG9wdGlvbmFsIGZpZWxkcy4K CklmIHRoZSBzeW1ib2wgYGRpc2FsbG93LXVua25vd24tbWV0aG9kcycgaXMgcHJlc2VudCwgRWds b3Qgd2FybnMKb24gdW5rbm93biBub3RpZmljYXRpb25zIGFuZCBlcnJvcnMgb24gdW5rbm93biBy ZXF1ZXN0cy4KCklmIHRoZSBzeW1ib2wgYG5vLXVua25vd24taW50ZXJmYWNlcycgaXMgcHJlc2Vu dCwgRWdsb3Qgd2FybnMgYXQKY29tcGlsZSB0aW1lIGlmIGFuIHVuZGVjbGFyZWQgTFNQIGludGVy ZmFjZSBpcyB1c2VkLiIpKQoKKGNsLWRlZnVuIGVnbG90LS1jaGVjay1vYmplY3QgKGludGVyZmFj ZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVuZm9yY2UtcmVxdWlyZWQgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChk aXNhbGxvdy1ub24tc3RhbmRhcmQgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj aGVjay10eXBlcyB0KSkKICAiQ2hlY2sgdGhhdCBPQkpFQ1QgY29uZm9ybXMgdG8gSU5URVJGQUNF LiAgRXJyb3Igb3RoZXJ3aXNlLiIKICAoY2wtZGVzdHJ1Y3R1cmluZy1iaW5kCiAgICAgICgma2V5 IHR5cGVzIHJlcXVpcmVkLWtleXMgb3B0aW9uYWwta2V5cyAmYWxsb3ctb3RoZXIta2V5cykKICAg ICAgKGVnbG90LS1pbnRlcmZhY2UgaW50ZXJmYWNlLW5hbWUpCiAgICAod2hlbi1sZXQgKChtaXNz aW5nIChhbmQgZW5mb3JjZS1yZXF1aXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj bC1zZXQtZGlmZmVyZW5jZSByZXF1aXJlZC1rZXlzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tcGxpc3Qta2V5cyBvYmplY3QpKSkpKQogICAg ICAoZWdsb3QtLWVycm9yICJBIGAlcycgbXVzdCBoYXZlICVzIiBpbnRlcmZhY2UtbmFtZSBtaXNz aW5nKSkKICAgICh3aGVuLWxldCAoKGV4Y2VzcyAoYW5kIGRpc2FsbG93LW5vbi1zdGFuZGFyZAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLXNldC1kaWZmZXJlbmNlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVnbG90LS1wbGlzdC1rZXlzIG9iamVjdCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYXBwZW5kIHJlcXVpcmVkLWtleXMgb3B0aW9uYWwta2V5cykpKSkp CiAgICAgIChlZ2xvdC0tZXJyb3IgIkEgYCVzJyBtdXN0bid0IGhhdmUgJXMiIGludGVyZmFjZS1u YW1lIGV4Y2VzcykpCiAgICAod2hlbiBjaGVjay10eXBlcwogICAgICAoY2wtbG9vcAogICAgICAg Zm9yIChrIHYpIG9uIG9iamVjdCBieSAjJ2NkZHIKICAgICAgIGZvciB0eXBlID0gKG9yIChjZHIg KGFzc29jIGsgdHlwZXMpKSB0KSA7OyBGSVhNRTogZW5mb3JjZSBuaWwgdHlwZT8KICAgICAgIHVu bGVzcyAoY2wtdHlwZXAgdiB0eXBlKQogICAgICAgZG8gKGVnbG90LS1lcnJvciAiQSBgJXMnIG11 c3QgaGF2ZSBhICVzIGFzICVzLCBidXQgaGFzICVzIgogICAgICAgICAgICAgICAgICAgICAgICBp bnRlcmZhY2UtbmFtZSkpKQogICAgdCkpCgooZXZhbC1hbmQtY29tcGlsZQogIChkZWZ1biBlZ2xv dC0ta2V5d29yZGl6ZS12YXJzICh2YXJzKQogICAgKG1hcGNhciAobGFtYmRhICh2YXIpIChpbnRl cm4gKGZvcm1hdCAiOiVzIiB2YXIpKSkgdmFycykpCgogIChkZWZ1biBlZ2xvdC0tZW5zdXJlLXR5 cGUgKGspIChpZiAoY29uc3AgaykgayAoY29ucyBrIHQpKSkKCiAgKGRlZnVuIGVnbG90LS1pbnRl cmZhY2UgKGludGVyZmFjZS1uYW1lKQogICAgKGxldCogKChpbnRlcmZhY2UgKGFzc29jIGludGVy ZmFjZS1uYW1lIGVnbG90LS1sc3AtaW50ZXJmYWNlLWFsaXN0KSkKICAgICAgICAgICAocmVxdWly ZWQgKG1hcGNhciAjJ2VnbG90LS1lbnN1cmUtdHlwZSAoY2FyIChjZHIgaW50ZXJmYWNlKSkpKQog ICAgICAgICAgIChvcHRpb25hbCAobWFwY2FyICMnZWdsb3QtLWVuc3VyZS10eXBlIChjYWRyIChj ZHIgaW50ZXJmYWNlKSkpKSkKICAgICAgKGxpc3QgOnR5cGVzIChhcHBlbmQgcmVxdWlyZWQgb3B0 aW9uYWwpCiAgICAgICAgICAgIDpyZXF1aXJlZC1rZXlzIChtYXBjYXIgIydjYXIgcmVxdWlyZWQp CiAgICAgICAgICAgIDpvcHRpb25hbC1rZXlzIChtYXBjYXIgIydjYXIgb3B0aW9uYWwpKSkpCgog IChkZWZ1biBlZ2xvdC0tY2hlY2stZHNwZWMgKGludGVyZmFjZS1uYW1lIGRzcGVjKQogICAgIkNo ZWNrIGRlc3RydWN0dXJpbmcgc3BlYyBEU1BFQyBhZ2FpbnN0IElOVEVSRkFDRS1OQU1FLiIKICAg IChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKCZrZXkgcmVxdWlyZWQta2V5cyBvcHRpb25hbC1rZXlz ICZhbGxvdy1vdGhlci1rZXlzKQogICAgICAgIChlZ2xvdC0taW50ZXJmYWNlIGludGVyZmFjZS1u YW1lKQogICAgICAoY29uZCAoKG9yIHJlcXVpcmVkLWtleXMgb3B0aW9uYWwta2V5cykKICAgICAg ICAgICAgIChsZXQgKCh0b28tbWFueQogICAgICAgICAgICAgICAgICAgIChhbmQKICAgICAgICAg ICAgICAgICAgICAgKG1lbXEgJ2Rpc2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzIGVnbG90LXN0cmlj dC1tb2RlKQogICAgICAgICAgICAgICAgICAgICAoY2wtc2V0LWRpZmZlcmVuY2UKICAgICAgICAg ICAgICAgICAgICAgIChlZ2xvdC0ta2V5d29yZGl6ZS12YXJzIGRzcGVjKQogICAgICAgICAgICAg ICAgICAgICAgKGFwcGVuZCByZXF1aXJlZC1rZXlzIG9wdGlvbmFsLWtleXMpKSkpCiAgICAgICAg ICAgICAgICAgICAoaWdub3JlZC1yZXF1aXJlZAogICAgICAgICAgICAgICAgICAgIChhbmQKICAg ICAgICAgICAgICAgICAgICAgKG1lbXEgJ2VuZm9yY2UtcmVxdWlyZWQta2V5cyBlZ2xvdC1zdHJp Y3QtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgKGNsLXNldC1kaWZmZXJlbmNlCiAgICAgICAg ICAgICAgICAgICAgICByZXF1aXJlZC1rZXlzIChlZ2xvdC0ta2V5d29yZGl6ZS12YXJzIGRzcGVj KSkpKQogICAgICAgICAgICAgICAgICAgKG1pc3Npbmctb3V0CiAgICAgICAgICAgICAgICAgICAg KGFuZAogICAgICAgICAgICAgICAgICAgICAobWVtcSAnZW5mb3JjZS1vcHRpb25hbC1rZXlzIGVn bG90LXN0cmljdC1tb2RlKQogICAgICAgICAgICAgICAgICAgICAoY2wtc2V0LWRpZmZlcmVuY2UK ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsLWtleXMgKGVnbG90LS1rZXl3b3JkaXplLXZh cnMgZHNwZWMpKSkpKQogICAgICAgICAgICAgICAod2hlbiB0b28tbWFueSAoYnl0ZS1jb21waWxl LXdhcm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXN0cnVjdHVyaW5nIGZvciAl cyBoYXMgZXh0cmFuZW91cyAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVy ZmFjZS1uYW1lIHRvby1tYW55KSkKICAgICAgICAgICAgICAgKHdoZW4gaWdub3JlZC1yZXF1aXJl ZCAoYnl0ZS1jb21waWxlLXdhcm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkRlc3RydWN0dXJpbmcgZm9yICVzIGlnbm9yZXMgcmVxdWlyZWQgJXMiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS1uYW1lIGlnbm9yZWQtcmVxdWly ZWQpKQogICAgICAgICAgICAgICAod2hlbiBtaXNzaW5nLW91dCAoYnl0ZS1jb21waWxlLXdhcm4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXN0cnVjdHVyaW5nIGZvciAlcyBp cyBtaXNzaW5nIG91dCBvbiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dGVyZmFjZS1uYW1lIG1pc3Npbmctb3V0KSkpKQogICAgICAgICAgICAoKG1lbXEgJ25vLXVua25v d24taW50ZXJmYWNlcyBlZ2xvdC1zdHJpY3QtbW9kZSkKICAgICAgICAgICAgIChieXRlLWNvbXBp bGUtd2FybiAiVW5rbm93biBMU1AgaW50ZXJmYWNlICVzIiBpbnRlcmZhY2UtbmFtZSkpKSkpKQoK KGNsLWRlZm1hY3JvIGVnbG90LS1kYmluZCAodmFycyBvYmplY3QgJmJvZHkgYm9keSkKICAiRGVz dHJ1Y3R1cmUgT0JKRUNULCBiaW5kaW5nIFZBUlMgaW4gQk9EWS4KVkFSUyBpcyAoWyhJTlRFUkZB Q0UpXSBTWU1TLi4uKQpIb25vciBgZWdsb3Qtc3RyaWN0LW1vZGUnLiIKICAoZGVjbGFyZSAoaW5k ZW50IDIpIChkZWJ1ZyAoc2V4cCBzZXhwICZyZXN0IGZvcm0pKSkKICAobGV0ICgoaW50ZXJmYWNl LW5hbWUgKGlmIChjb25zcCAoY2FyIHZhcnMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNhciAocG9wIHZhcnMpKSkpCiAgICAgICAgKG9iamVjdC1vbmNlIChtYWtlLXN5bWJvbCAib2Jq ZWN0LW9uY2UiKSkKICAgICAgICAoZm4tb25jZSAobWFrZS1zeW1ib2wgImZuLW9uY2UiKSkpCiAg ICAoY29uZCAoaW50ZXJmYWNlLW5hbWUKICAgICAgICAgICAoZWdsb3QtLWNoZWNrLWRzcGVjIGlu dGVyZmFjZS1uYW1lIHZhcnMpCiAgICAgICAgICAgYChsZXQgKCgsb2JqZWN0LW9uY2UgLG9iamVj dCkpCiAgICAgICAgICAgICAgKGNsLWRlc3RydWN0dXJpbmctYmluZCAoJmtleSAsQHZhcnMgJmFs bG93LW90aGVyLWtleXMpICxvYmplY3Qtb25jZQogICAgICAgICAgICAgICAgKGVnbG90LS1jaGVj ay1vYmplY3QgJyxpbnRlcmZhY2UtbmFtZSAsb2JqZWN0LW9uY2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtZW1xICdlbmZvcmNlLXJlcXVpcmVkLWtleXMgZWdsb3Qtc3Ry aWN0LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAnZGlz YWxsb3ctbm9uLXN0YW5kYXJkLWtleXMgZWdsb3Qtc3RyaWN0LW1vZGUpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAnY2hlY2stdHlwZXMgZWdsb3Qtc3RyaWN0LW1v ZGUpKQogICAgICAgICAgICAgICAgLEBib2R5KSkpCiAgICAgICAgICAodAogICAgICAgICAgIGAo bGV0ICgoLG9iamVjdC1vbmNlICxvYmplY3QpCiAgICAgICAgICAgICAgICAgICgsZm4tb25jZSAo bGFtYmRhICgsQHZhcnMpICxAYm9keSkpKQogICAgICAgICAgICAgIChpZiAobWVtcSAnZGlzYWxs b3ctbm9uLXN0YW5kYXJkLWtleXMgZWdsb3Qtc3RyaWN0LW1vZGUpCiAgICAgICAgICAgICAgICAg IChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKCZrZXkgLEB2YXJzKSAsb2JqZWN0LW9uY2UKICAgICAg ICAgICAgICAgICAgICAoZnVuY2FsbCAsZm4tb25jZSAsQHZhcnMpKQogICAgICAgICAgICAgICAg KGNsLWRlc3RydWN0dXJpbmctYmluZCAoJmtleSAsQHZhcnMgJmFsbG93LW90aGVyLWtleXMpICxv YmplY3Qtb25jZQogICAgICAgICAgICAgICAgICAoZnVuY2FsbCAsZm4tb25jZSAsQHZhcnMpKSkp KSkpKQoKKGNsLWRlZm1hY3JvIGVnbG90LS1sYW1iZGEgKGNsLWxhbWJkYS1saXN0ICZib2R5IGJv ZHkpCiAgIkZ1bmN0aW9uIG9mIGFyZ3MgQ0wtTEFNQkRBLUxJU1QgZm9yIHByb2Nlc3NpbmcgSU5U RVJGQUNFIG9iamVjdHMuCkhvbm9yIGBlZ2xvdC1zdHJpY3QtbW9kZScuIgogIChkZWNsYXJlIChp bmRlbnQgMSkgKGRlYnVnIChzZXhwICZyZXN0IGZvcm0pKSkKICAobGV0ICgoZSAoY2wtZ2Vuc3lt ICJqc29ucnBjLWxhbWJkYS1lbGVtIikpKQogICAgYChsYW1iZGEgKCxlKSAoY2wtYmxvY2sgbmls IChlZ2xvdC0tZGJpbmQgLGNsLWxhbWJkYS1saXN0ICxlICxAYm9keSkpKSkpCgooY2wtZGVmbWFj cm8gZWdsb3QtLWRjYXNlIChvYmogJnJlc3QgY2xhdXNlcykKICAiTGlrZSBgcGNhc2UnLCBidXQg Zm9yIHRoZSBMU1Agb2JqZWN0IE9CSi4KQ0xBVVNFUyBpcyBhIGxpc3QgKERFU1RSVUNUVVJFIEZP Uk1TLi4uKSB3aGVyZSBERVNUUlVDVFVSRSBpcwp0cmVhdGVkIGFzIGluIGBlZ2xvdC0tZGJpbmQn LiIKICAoZGVjbGFyZSAoaW5kZW50IDEpIChkZWJ1ZyAoc2V4cCAmcmVzdCAoc2V4cCAmcmVzdCBm b3JtKSkpKQogIChsZXQgKChvYmotb25jZSAobWFrZS1zeW1ib2wgIm9iai1vbmNlIikpKQogICAg YChsZXQgKCgsb2JqLW9uY2UgLG9iaikpCiAgICAgICAoY29uZAogICAgICAgICxAKGNsLWxvb3AK ICAgICAgICAgICBmb3IgKHZhcnMgLiBib2R5KSBpbiBjbGF1c2VzCiAgICAgICAgICAgZm9yIHZh cnMtYXMta2V5d29yZHMgPSAoZWdsb3QtLWtleXdvcmRpemUtdmFycyB2YXJzKQogICAgICAgICAg IGZvciBpbnRlcmZhY2UtbmFtZSA9IChpZiAoY29uc3AgKGNhciB2YXJzKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNhciAocG9wIHZhcnMpKSkKICAgICAgICAgICBmb3Ig Y29uZGl0aW9uID0KICAgICAgICAgICAoY29uZCAoaW50ZXJmYWNlLW5hbWUKICAgICAgICAgICAg ICAgICAgKGVnbG90LS1jaGVjay1kc3BlYyBpbnRlcmZhY2UtbmFtZSB2YXJzKQogICAgICAgICAg ICAgICAgICA7OyBJbiB0aGlzIG1vZGUsIGluIHJ1bnRpbWUsIHdlIGFzc3VtZQogICAgICAgICAg ICAgICAgICA7OyBgZWdsb3Qtc3RyaWN0LW1vZGUnIGlzIHBhcnRpYWxseSBvbiwgb3RoZXJ3aXNl IHdlCiAgICAgICAgICAgICAgICAgIDs7IGNhbid0IGRpc2FtYmlndWF0ZSBiZXR3ZWVuIGNlcnRh aW4gdHlwZXMuCiAgICAgICAgICAgICAgICAgIGAoaWdub3JlLWVycm9ycwogICAgICAgICAgICAg ICAgICAgICAoZWdsb3QtLWNoZWNrLW9iamVjdAogICAgICAgICAgICAgICAgICAgICAgJyxpbnRl cmZhY2UtbmFtZSAsb2JqLW9uY2UKICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAg ICAgICAgICAgIChtZW1xICdkaXNhbGxvdy1ub24tc3RhbmRhcmQta2V5cyBlZ2xvdC1zdHJpY3Qt bW9kZSkKICAgICAgICAgICAgICAgICAgICAgIHQpKSkKICAgICAgICAgICAgICAgICAodAogICAg ICAgICAgICAgICAgICA7OyBJbiB0aGlzIGludGVyZmFjZS1sZXNzIG1vZGUgd2UgZG9uJ3QgY2hl Y2sKICAgICAgICAgICAgICAgICAgOzsgYGVnbG90LXN0cmljdC1tb2RlJyBhdCBhbGw6IGp1c3Qg Y2hlY2sgdGhhdCB0aGUgb2JqZWN0CiAgICAgICAgICAgICAgICAgIDs7IGhhcyBhbGwgdGhlIGtl eXMgdGhlIHVzZXIgd2FudHMgdG8gZGVzdHJ1Y3R1cmUuCiAgICAgICAgICAgICAgICAgIGAobnVs bCAoY2wtc2V0LWRpZmZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAnLHZhcnMtYXMt a2V5d29yZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXBsaXN0LWtleXMgLG9i ai1vbmNlKSkpKSkKICAgICAgICAgICBjb2xsZWN0IGAoLGNvbmRpdGlvbgogICAgICAgICAgICAg ICAgICAgICAoY2wtZGVzdHJ1Y3R1cmluZy1iaW5kICgma2V5ICxAdmFycyAmYWxsb3ctb3RoZXIt a2V5cykKICAgICAgICAgICAgICAgICAgICAgICAgICxvYmotb25jZQogICAgICAgICAgICAgICAg ICAgICAgICxAYm9keSkpKQogICAgICAgICh0CiAgICAgICAgIChlZ2xvdC0tZXJyb3IgIiVTIGRp ZG4ndCBtYXRjaCBhbnkgb2YgJVMiCiAgICAgICAgICAgICAgICAgICAgICAgLG9iai1vbmNlCiAg ICAgICAgICAgICAgICAgICAgICAgJywobWFwY2FyICMnY2FyIGNsYXVzZXMpKSkpKSkpCgooY2wt ZGVmbWFjcm8gZWdsb3QtLXdoZW4tbGl2ZS1idWZmZXIgKGJ1ZiAmcmVzdCBib2R5KQogICJDaGVj ayBCVUYgbGl2ZSwgdGhlbiBkbyBCT0RZIGluIGl0LiIgKGRlY2xhcmUgKGluZGVudCAxKSAoZGVi dWcgdCkpCiAgKGxldCAoKGIgKGNsLWdlbnN5bSkpKQogICAgYChsZXQgKCgsYiAsYnVmKSkgKGlm IChidWZmZXItbGl2ZS1wICxiKSAod2l0aC1jdXJyZW50LWJ1ZmZlciAsYiAsQGJvZHkpKSkpKQoK KGNsLWRlZm1hY3JvIGVnbG90LS13aGVuLWJ1ZmZlci13aW5kb3cgKGJ1ZiAmYm9keSBib2R5KQog ICJDaGVjayBCVUYgc2hvd2luZyBzb21ld2hlcmUsIHRoZW4gZG8gQk9EWSBpbiBpdC4iIChkZWNs YXJlIChpbmRlbnQgMSkgKGRlYnVnIHQpKQogIChsZXQgKChiIChjbC1nZW5zeW0pKSkKICAgIGAo bGV0ICgoLGIgLGJ1ZikpCiAgICAgICA7O25vdGljZSB0aGUgZXhjZXB0aW9uIHdoZW4gdGVzdGlu ZyB3aXRoIGBlcnQnCiAgICAgICAod2hlbiAob3IgKGdldC1idWZmZXItd2luZG93ICxiKSAoZXJ0 LXJ1bm5pbmctdGVzdCkpCiAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyICxiICxAYm9keSkp KSkpCgooY2wtZGVmbWFjcm8gZWdsb3QtLXdpZGVuaW5nICgmcmVzdCBib2R5KQogICJTYXZlIGV4 Y3Vyc2lvbiBhbmQgcmVzdHJpY3Rpb24uICBXaWRlbi4gIFRoZW4gcnVuIEJPRFkuIiAoZGVjbGFy ZSAoZGVidWcgdCkpCiAgYChzYXZlLWV4Y3Vyc2lvbiAoc2F2ZS1yZXN0cmljdGlvbiAod2lkZW4p ICxAYm9keSkpKQoKDAo7OzsgUHVibGljIEVsaXNwIEFQSQo7OzsKKGNsLWRlZmdlbmVyaWMgZWds b3QtaGFuZGxlLXJlcXVlc3QgKHNlcnZlciBtZXRob2QgJnJlc3QgcGFyYW1zKQogICJIYW5kbGUg U0VSVkVSJ3MgTUVUSE9EIHJlcXVlc3Qgd2l0aCBQQVJBTVMuIikKCihjbC1kZWZnZW5lcmljIGVn bG90LWhhbmRsZS1ub3RpZmljYXRpb24gKHNlcnZlciBtZXRob2QgJnJlc3QgcGFyYW1zKQogICJI YW5kbGUgU0VSVkVSJ3MgTUVUSE9EIG5vdGlmaWNhdGlvbiB3aXRoIFBBUkFNUy4iKQoKKGNsLWRl ZmdlbmVyaWMgZWdsb3QtZXhlY3V0ZS1jb21tYW5kIChfIF8gXykKICAoZGVjbGFyZSAob2Jzb2xl dGUgZWdsb3QtZXhlY3V0ZSAiMzAuMSIpKQogICg6bWV0aG9kCiAgIChzZXJ2ZXIgY29tbWFuZCBh cmd1bWVudHMpCiAgIChlZ2xvdC0tcmVxdWVzdCBzZXJ2ZXIgOndvcmtzcGFjZS9leGVjdXRlQ29t bWFuZAogICAgICAgICAgICAgICAgICAgYCg6Y29tbWFuZCAsKGZvcm1hdCAiJXMiIGNvbW1hbmQp IDphcmd1bWVudHMgLGFyZ3VtZW50cykpKSkKCihjbC1kZWZnZW5lcmljIGVnbG90LWV4ZWN1dGUg KHNlcnZlciBhY3Rpb24pCiAgIkFzayBTRVJWRVIgdG8gZXhlY3V0ZSBBQ1RJT04uCkFDVElPTiBp cyBhbiBMU1Agb2JqZWN0IG9mIGVpdGhlciBgQ29kZUFjdGlvbicgb3IgYENvbW1hbmQnIHR5cGUu IgogICg6bWV0aG9kCiAgIChzZXJ2ZXIgYWN0aW9uKSAiRGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4i CiAgIChlZ2xvdC0tZGNhc2UgYWN0aW9uCiAgICAgKCgoQ29tbWFuZCkpIChlZ2xvdC0tcmVxdWVz dCBzZXJ2ZXIgOndvcmtzcGFjZS9leGVjdXRlQ29tbWFuZCBhY3Rpb24pKQogICAgICgoKENvZGVB Y3Rpb24pIGVkaXQgY29tbWFuZCBkYXRhKQogICAgICAoaWYgKGFuZCAobnVsbCBlZGl0KSAobnVs bCBjb21tYW5kKSBkYXRhCiAgICAgICAgICAgICAgIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6Y29k ZUFjdGlvblByb3ZpZGVyIDpyZXNvbHZlUHJvdmlkZXIpKQogICAgICAgICAgKGVnbG90LWV4ZWN1 dGUgc2VydmVyIChlZ2xvdC0tcmVxdWVzdCBzZXJ2ZXIgOmNvZGVBY3Rpb24vcmVzb2x2ZSBhY3Rp b24pKQogICAgICAgICh3aGVuIGVkaXQgKGVnbG90LS1hcHBseS13b3Jrc3BhY2UtZWRpdCBlZGl0 IHRoaXMtY29tbWFuZCkpCiAgICAgICAgKHdoZW4gY29tbWFuZCAoZWdsb3QtLXJlcXVlc3Qgc2Vy dmVyIDp3b3Jrc3BhY2UvZXhlY3V0ZUNvbW1hbmQgY29tbWFuZCkpKSkpKSkKCihjbC1kZWZnZW5l cmljIGVnbG90LWluaXRpYWxpemF0aW9uLW9wdGlvbnMgKHNlcnZlcikKICAiSlNPTiBvYmplY3Qg dG8gc2VuZCB1bmRlciBgaW5pdGlhbGl6YXRpb25PcHRpb25zJy4iCiAgKDptZXRob2QgKHMpCiAg IChsZXQgKChwcm9iZSAocGxpc3QtZ2V0IChlZ2xvdC0tc2F2ZWQtaW5pdGFyZ3MgcykgOmluaXRp YWxpemF0aW9uT3B0aW9ucykpKQogICAgIChjb25kICgoZnVuY3Rpb25wIHByb2JlKSAoZnVuY2Fs bCBwcm9iZSBzKSkKICAgICAgICAgICAocHJvYmUpCiAgICAgICAgICAgKHQgZWdsb3QtLXt9KSkp KSkKCihjbC1kZWZnZW5lcmljIGVnbG90LXJlZ2lzdGVyLWNhcGFiaWxpdHkgKHNlcnZlciBtZXRo b2QgaWQgJnJlc3QgcGFyYW1zKQogICJBc2sgU0VSVkVSIHRvIHJlZ2lzdGVyIGNhcGFiaWxpdHkg TUVUSE9EIG1hcmtlZCB3aXRoIElELiIKICAoOm1ldGhvZAogICAoX3MgbWV0aG9kIF9pZCAmcmVz dCBfcGFyYW1zKQogICAoZWdsb3QtLXdhcm4gIlNlcnZlciB0cmllZCB0byByZWdpc3RlciB1bnN1 cHBvcnRlZCBjYXBhYmlsaXR5IGAlcyciCiAgICAgICAgICAgICAgICBtZXRob2QpKSkKCihjbC1k ZWZnZW5lcmljIGVnbG90LXVucmVnaXN0ZXItY2FwYWJpbGl0eSAoc2VydmVyIG1ldGhvZCBpZCAm cmVzdCBwYXJhbXMpCiAgIkFzayBTRVJWRVIgdG8gcmVnaXN0ZXIgY2FwYWJpbGl0eSBNRVRIT0Qg bWFya2VkIHdpdGggSUQuIgogICg6bWV0aG9kCiAgIChfcyBtZXRob2QgX2lkICZyZXN0IF9wYXJh bXMpCiAgIChlZ2xvdC0td2FybiAiU2VydmVyIHRyaWVkIHRvIHVucmVnaXN0ZXIgdW5zdXBwb3J0 ZWQgY2FwYWJpbGl0eSBgJXMnIgogICAgICAgICAgICAgICAgbWV0aG9kKSkpCgooY2wtZGVmZ2Vu ZXJpYyBlZ2xvdC1jbGllbnQtY2FwYWJpbGl0aWVzIChzZXJ2ZXIpCiAgIldoYXQgdGhlIEVnbG90 IExTUCBjbGllbnQgc3VwcG9ydHMgZm9yIFNFUlZFUi4iCiAgKDptZXRob2QgKHMpCiAgICAgICAg ICAgKGxpc3QKICAgICAgICAgICAgOndvcmtzcGFjZSAobGlzdAogICAgICAgICAgICAgICAgICAg ICAgICA6YXBwbHlFZGl0IHQKICAgICAgICAgICAgICAgICAgICAgICAgOmV4ZWN1dGVDb21tYW5k IGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCiAgICAgICAgICAgICAgICAgICAg ICAgIDp3b3Jrc3BhY2VFZGl0IGAoOmRvY3VtZW50Q2hhbmdlcyB0KQogICAgICAgICAgICAgICAg ICAgICAgICA6ZGlkQ2hhbmdlV2F0Y2hlZEZpbGVzCiAgICAgICAgICAgICAgICAgICAgICAgIGAo OmR5bmFtaWNSZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAsKGlmIChlZ2xv dC0tdHJhbXBpc2gtcCBzKSA6anNvbi1mYWxzZSB0KSkKICAgICAgICAgICAgICAgICAgICAgICAg OnN5bWJvbCBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlKQogICAgICAgICAgICAg ICAgICAgICAgICA6Y29uZmlndXJhdGlvbiB0CiAgICAgICAgICAgICAgICAgICAgICAgIDp3b3Jr c3BhY2VGb2xkZXJzIHQpCiAgICAgICAgICAgIDp0ZXh0RG9jdW1lbnQKICAgICAgICAgICAgKGxp c3QKICAgICAgICAgICAgIDpzeW5jaHJvbml6YXRpb24gKGxpc3QKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6d2lsbFNhdmUgdCA6d2lsbFNhdmVXYWl0VW50aWwgdCA6ZGlk U2F2ZSB0KQogICAgICAgICAgICAgOmNvbXBsZXRpb24gICAgICAobGlzdCA6ZHluYW1pY1JlZ2lz dHJhdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 Y29tcGxldGlvbkl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCg6c25p cHBldFN1cHBvcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGlmIChh bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChlZ2xv dC0tc3RheS1vdXQtb2YtcCAneWFzbmlwcGV0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZWdsb3QtLXNuaXBwZXQtZXhwYW5zaW9uLWZuKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6anNvbi1mYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6ZGVwcmVjYXRlZFN1cHBvcnQgdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpyZXNvbHZlU3VwcG9ydCAoOnByb3BlcnRpZXMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZG9jdW1lbnRhdGlv biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiZGV0YWlscyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiYWRkaXRpb25hbFRleHRFZGl0cyJdKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDp0YWdTdXBwb3J0ICg6dmFsdWVTZXQgWzFdKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOmNvbnRleHRTdXBwb3J0IHQpCiAgICAgICAgICAgICA6 aG92ZXIgICAgICAgICAgICAgIChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb250ZW50Rm9ybWF0IChl Z2xvdC0tYWNjZXB0ZWQtZm9ybWF0cykpCiAgICAgICAgICAgICA6c2lnbmF0dXJlSGVscCAgICAg IChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpzaWduYXR1cmVJbmZvcm1hdGlvbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBgKDpwYXJhbWV0ZXJJbmZvcm1hdGlvbgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6bGFiZWxPZmZzZXRTdXBwb3J0IHQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRvY3VtZW50YXRpb25G b3JtYXQgLChlZ2xvdC0tYWNjZXB0ZWQtZm9ybWF0cykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6YWN0aXZlUGFyYW1ldGVyU3VwcG9ydCB0KSkKICAgICAgICAgICAg IDpyZWZlcmVuY2VzICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZSkK ICAgICAgICAgICAgIDpkZWZpbml0aW9uICAgICAgICAgKGxpc3QgOmR5bmFtaWNSZWdpc3RyYXRp b24gOmpzb24tZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxp bmtTdXBwb3J0IHQpCiAgICAgICAgICAgICA6ZGVjbGFyYXRpb24gICAgICAgIChsaXN0IDpkeW5h bWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDpsaW5rU3VwcG9ydCB0KQogICAgICAgICAgICAgOmltcGxlbWVudGF0aW9uICAg ICAobGlzdCA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6bGlua1N1cHBvcnQgdCkKICAgICAgICAgICAgIDp0eXBl RGVmaW5pdGlvbiAgICAgKGxpc3QgOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxpbmtTdXBwb3J0IHQpCiAgICAg ICAgICAgICA6ZG9jdW1lbnRTeW1ib2wgICAgIChsaXN0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOmhpZXJhcmNoaWNhbERvY3VtZW50U3ltYm9sU3VwcG9ydCB0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3ltYm9sS2luZCBgKDp2YWx1ZVNl dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLEAobWFw Y2FyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj J2NhciBlZ2xvdC0tc3ltYm9sLWtpbmQtbmFtZXMpXSkpCiAgICAgICAgICAgICA6ZG9jdW1lbnRI aWdobGlnaHQgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCiAgICAgICAgICAg ICA6Y29kZUFjdGlvbiAgICAgICAgIChsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOnJlc29sdmVTdXBwb3J0IGAoOnByb3BlcnRpZXMgWyJlZGl0IiAiY29t bWFuZCJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRhdGFTdXBwb3J0IHQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb2RlQWN0aW9uTGl0ZXJhbFN1cHBv cnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOmNvZGVBY3Rpb25LaW5kCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6dmFsdWVTZXQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFsicXVpY2tmaXgiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInJlZmFjdG9yIiAicmVmYWN0b3IuZXh0cmFjdCIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmYWN0b3IuaW5saW5lIiAicmVmYWN0b3Iu cmV3cml0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiAi c291cmNlLm9yZ2FuaXplSW1wb3J0cyJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDppc1ByZWZlcnJlZFN1cHBvcnQgdCkKICAgICAgICAgICAgIDpmb3JtYXR0aW5nICAgICAg ICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKICAgICAgICAgICAgIDpyYW5n ZUZvcm1hdHRpbmcgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKICAgICAg ICAgICAgIDpyZW5hbWUgICAgICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1m YWxzZSkKICAgICAgICAgICAgIDppbmxheUhpbnQgICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJh dGlvbiA6anNvbi1mYWxzZSkKICAgICAgICAgICAgIDpwdWJsaXNoRGlhZ25vc3RpY3MgKGxpc3Qg OnJlbGF0ZWRJbmZvcm1hdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBUT0RPOiBXZSBjYW4gc3VwcG9ydCA6Y29kZURlc2NyaXB0aW9uIGFm dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGFkZGluZyBhbiBh cHByb3ByaWF0ZSBVSSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBGbHltYWtlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29kZURl c2NyaXB0aW9uU3VwcG9ydCA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6dGFnU3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBgKDp2YWx1ZVNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFssQChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IydjYXIgZWdsb3QtLXRhZy1mYWNlcyldKSkpCiAgICAgICAgICAgIDp3aW5kb3cgYCg6c2hvd0Rv Y3VtZW50ICg6c3VwcG9ydCB0KQogICAgICAgICAgICAgICAgICAgICAgOndvcmtEb25lUHJvZ3Jl c3MgdCkKICAgICAgICAgICAgOmdlbmVyYWwgKGxpc3QgOnBvc2l0aW9uRW5jb2RpbmdzIFsidXRm LTMyIiAidXRmLTgiICJ1dGYtMTYiXSkKICAgICAgICAgICAgOmV4cGVyaW1lbnRhbCBlZ2xvdC0t e30pKSkKCihjbC1kZWZnZW5lcmljIGVnbG90LXdvcmtzcGFjZS1mb2xkZXJzIChzZXJ2ZXIpCiAg IlJldHVybiB3b3Jrc3BhY2VGb2xkZXJzIGZvciBTRVJWRVIuIgogIChsZXQgKChwcm9qZWN0IChl Z2xvdC0tcHJvamVjdCBzZXJ2ZXIpKSkKICAgICh2Y29uY2F0CiAgICAgKG1hcGNhciAobGFtYmRh IChkaXIpCiAgICAgICAgICAgICAgIChsaXN0IDp1cmkgKGVnbG90LXBhdGgtdG8tdXJpIGRpcikK ICAgICAgICAgICAgICAgICAgICAgOm5hbWUgKGFiYnJldmlhdGUtZmlsZS1uYW1lIGRpcikpKQog ICAgICAgICAgICAgYCgsKHByb2plY3Qtcm9vdCBwcm9qZWN0KSAsQChwcm9qZWN0LWV4dGVybmFs LXJvb3RzIHByb2plY3QpKSkpKSkKCihkZWZjbGFzcyBlZ2xvdC1sc3Atc2VydmVyIChqc29ucnBj LXByb2Nlc3MtY29ubmVjdGlvbikKICAoKHByb2plY3Qtbmlja25hbWUKICAgIDpkb2N1bWVudGF0 aW9uICJTaG9ydCBuaWNrbmFtZSBmb3IgdGhlIGFzc29jaWF0ZWQgcHJvamVjdC4iCiAgICA6YWNj ZXNzb3IgZWdsb3QtLXByb2plY3Qtbmlja25hbWUKICAgIDpyZWFkZXIgZWdsb3QtcHJvamVjdC1u aWNrbmFtZSkKICAgKGxhbmd1YWdlcwogICAgOmluaXRmb3JtIG5pbAogICAgOmRvY3VtZW50YXRp b24gIkFsaXN0ICgoTU9ERSAuIExBTkdVQUdFLUlELVNUUklORykuLi4pIG9mIG1hbmFnZWQgbGFu Z3VhZ2VzLiIKICAgIDphY2Nlc3NvciBlZ2xvdC0tbGFuZ3VhZ2VzKQogICAoY2FwYWJpbGl0aWVz CiAgICA6aW5pdGZvcm0gbmlsCiAgICA6ZG9jdW1lbnRhdGlvbiAiSlNPTiBvYmplY3QgY29udGFp bmluZyBzZXJ2ZXIgY2FwYWJpbGl0aWVzLiIKICAgIDphY2Nlc3NvciBlZ2xvdC0tY2FwYWJpbGl0 aWVzKQogICAoc2VydmVyLWluZm8KICAgIDppbml0Zm9ybSBuaWwKICAgIDpkb2N1bWVudGF0aW9u ICJKU09OIG9iamVjdCBjb250YWluaW5nIHNlcnZlciBpbmZvLiIKICAgIDphY2Nlc3NvciBlZ2xv dC0tc2VydmVyLWluZm8pCiAgIChzaHV0ZG93bi1yZXF1ZXN0ZWQKICAgIDppbml0Zm9ybSBuaWwK ICAgIDpkb2N1bWVudGF0aW9uICJGbGFnIHNldCB3aGVuIHNlcnZlciBpcyBzaHV0dGluZyBkb3du LiIKICAgIDphY2Nlc3NvciBlZ2xvdC0tc2h1dGRvd24tcmVxdWVzdGVkKQogICAocHJvamVjdAog ICAgOmluaXRmb3JtIG5pbAogICAgOmRvY3VtZW50YXRpb24gIlByb2plY3QgYXNzb2NpYXRlZCB3 aXRoIHNlcnZlci4iCiAgICA6YWNjZXNzb3IgZWdsb3QtLXByb2plY3QpCiAgIChwcm9ncmVzcy1y ZXBvcnRlcnMKICAgIDppbml0Zm9ybSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1YWwpIDph Y2Nlc3NvciBlZ2xvdC0tcHJvZ3Jlc3MtcmVwb3J0ZXJzCiAgICA6ZG9jdW1lbnRhdGlvbiAiTWFw cyBMU1AgcHJvZ3Jlc3MgdG9rZW5zIHRvIHByb2dyZXNzIHJlcG9ydGVycy4iKQogICAoaW5oaWJp dC1hdXRvcmVjb25uZWN0CiAgICA6aW5pdGZvcm0gdAogICAgOmRvY3VtZW50YXRpb24gIkdlbmVy YWxpemVkIGJvb2xlYW4gaW5oaWJpdGluZyBhdXRvLXJlY29ubmVjdGlvbiBpZiB0cnVlLiIKICAg IDphY2Nlc3NvciBlZ2xvdC0taW5oaWJpdC1hdXRvcmVjb25uZWN0KQogICAoZmlsZS13YXRjaGVz CiAgICA6ZG9jdW1lbnRhdGlvbiAiTWFwIChESVIgLT4gKFdBVENIIElEMSBJRDIuLi4pKSBmb3Ig YGRpZENoYW5nZVdhdGNoZWRGaWxlcycuIgogICAgOmluaXRmb3JtIChtYWtlLWhhc2gtdGFibGUg OnRlc3QgIydlcXVhbCkgOmFjY2Vzc29yIGVnbG90LS1maWxlLXdhdGNoZXMpCiAgIChtYW5hZ2Vk LWJ1ZmZlcnMKICAgIDppbml0Zm9ybSBuaWwKICAgIDpkb2N1bWVudGF0aW9uICJMaXN0IG9mIGJ1 ZmZlcnMgbWFuYWdlZCBieSBzZXJ2ZXIuIgogICAgOmFjY2Vzc29yIGVnbG90LS1tYW5hZ2VkLWJ1 ZmZlcnMpCiAgIChzYXZlZC1pbml0YXJncwogICAgOmRvY3VtZW50YXRpb24gIlNhdmVkIGluaXRh cmdzIGZvciByZWNvbm5lY3Rpb24gcHVycG9zZXMuIgogICAgOmFjY2Vzc29yIGVnbG90LS1zYXZl ZC1pbml0YXJncykpCiAgOmRvY3VtZW50YXRpb24KICAiUmVwcmVzZW50cyBhIHNlcnZlci4gV3Jh cHMgYSBwcm9jZXNzIGZvciBMU1AgY29tbXVuaWNhdGlvbi4iKQoKKGRlY2xhcmUtZnVuY3Rpb24g dzMyLWxvbmctZmlsZS1uYW1lICJ3MzJwcm9jLmMiIChmbikpCihkZWZ1biBlZ2xvdC11cmktdG8t cGF0aCAodXJpKQogICJDb252ZXJ0IFVSSSB0byBmaWxlIHBhdGgsIGhlbHBlZCBieSBgZWdsb3Qt LWN1cnJlbnQtc2VydmVyJy4iCiAgKHdoZW4gKGtleXdvcmRwIHVyaSkgKHNldHEgdXJpIChzdWJz dHJpbmcgKHN5bWJvbC1uYW1lIHVyaSkgMSkpKQogIChsZXQqICgoc2VydmVyIChlZ2xvdC1jdXJy ZW50LXNlcnZlcikpCiAgICAgICAgIChyZW1vdGUtcHJlZml4IChhbmQgc2VydmVyIChlZ2xvdC0t dHJhbXBpc2gtcCBzZXJ2ZXIpKSkKICAgICAgICAgKHVybCAodXJsLWdlbmVyaWMtcGFyc2UtdXJs IHVyaSkpKQogICAgOzsgT25seSBwYXJzZSBmaWxlOi8vIFVSSXMsIGxlYXZlIG90aGVyIFVSSSB1 bnRvdWNoZWQgYXMKICAgIDs7IGBmaWxlLW5hbWUtaGFuZGxlci1hbGlzdCcgc2hvdWxkIGtub3cg aG93IHRvIGhhbmRsZSB0aGVtCiAgICA7OyAoYnVnIzU4NzkwKS4KICAgIChpZiAoc3RyaW5nPSAi ZmlsZSIgKHVybC10eXBlIHVybCkpCiAgICAgICAgKGxldCogKChyZXR2YWwgKHVybC11bmhleC1z dHJpbmcgKHVybC1maWxlbmFtZSB1cmwpKSkKICAgICAgICAgICAgICAgOzsgUmVtb3ZlIHRoZSBs ZWFkaW5nICIvIiBmb3IgbG9jYWwgTVMgV2luZG93cy1zdHlsZSBwYXRocy4KICAgICAgICAgICAg ICAgKG5vcm1hbGl6ZWQgKGlmIChhbmQgKG5vdCByZW1vdGUtcHJlZml4KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1wbHVzcCAobGVuZ3RoIHJldHZhbCkp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHczMi1sb25nLWZpbGUtbmFtZSAoc3Vi c3RyaW5nIHJldHZhbCAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwpKSkK ICAgICAgICAgIChjb25jYXQgcmVtb3RlLXByZWZpeCBub3JtYWxpemVkKSkKICAgICAgdXJpKSkp CgooZGVmdW4gZWdsb3QtcGF0aC10by11cmkgKHBhdGgpCiAgIkNvbnZlcnQgUEFUSCwgYSBmaWxl IG5hbWUsIHRvIExTUCBVUkkgc3RyaW5nIGFuZCByZXR1cm4gaXQuIgogIChsZXQgKCh0cnVlcGF0 aCAoZmlsZS10cnVlbmFtZSBwYXRoKSkpCiAgICAoaWYgKGFuZCAodXJsLXR5cGUgKHVybC1nZW5l cmljLXBhcnNlLXVybCBwYXRoKSkKICAgICAgICAgICAgIDs7IEl0IG1pZ2h0IGJlIE1TIFdpbmRv d3MgcGF0aCB3aGljaCBpbmNsdWRlcyBhIGRyaXZlCiAgICAgICAgICAgICA7OyBsZXR0ZXIgdGhh dCBsb29rcyBsaWtlIGEgVVJMIHNjaGVtZSAoYnVnIzU5MzM4KQogICAgICAgICAgICAgKG5vdCAo YW5kIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkKICAgICAgICAgICAgICAgICAgICAgICAo ZmlsZS1uYW1lLWFic29sdXRlLXAgdHJ1ZXBhdGgpKSkpCiAgICAgICAgOzsgUGF0aCBpcyBhbHJl YWR5IGEgVVJJLCBzbyBmb3J3YXJkIGl0IHRvIHRoZSBMU1Agc2VydmVyCiAgICAgICAgOzsgdW50 b3VjaGVkLiAgVGhlIHNlcnZlciBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgaXQsIHNpbmNlCiAg ICAgICAgOzsgaXQgcHJvdmlkZWQgdGhpcyBVUkkgdG8gY2xpZW50cyBpbiB0aGUgZmlyc3QgcGxh Y2UuCiAgICAgICAgcGF0aAogICAgICAoY29uY2F0ICJmaWxlOi8vIgogICAgICAgICAgICAgIDs7 IEFkZCBhIGxlYWRpbmcgIi8iIGZvciBsb2NhbCBNUyBXaW5kb3dzLXN0eWxlIHBhdGhzLgogICAg ICAgICAgICAgIChpZiAoYW5kIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkKICAgICAgICAg ICAgICAgICAgICAgICAobm90IChmaWxlLXJlbW90ZS1wIHRydWVwYXRoKSkpCiAgICAgICAgICAg ICAgICAgICIvIikKICAgICAgICAgICAgICAodXJsLWhleGlmeS1zdHJpbmcKICAgICAgICAgICAg ICAgOzsgQWdhaW4gd2F0Y2ggb3V0IGZvciB0cmFtcHkgcGF0aHMuCiAgICAgICAgICAgICAgIChk aXJlY3RvcnktZmlsZS1uYW1lIChmaWxlLWxvY2FsLW5hbWUgdHJ1ZXBhdGgpKQogICAgICAgICAg ICAgICBlZ2xvdC0tdXJpLXBhdGgtYWxsb3dlZC1jaGFycykpKSkpCgooZGVmdW4gZWdsb3QtcmFu Z2UtcmVnaW9uIChyYW5nZSAmb3B0aW9uYWwgbWFya2VycykKICAiUmV0dXJuIGEgY29ucyAoQkVH IC4gRU5EKSBvZiBwb3NpdGlvbnMgcmVwcmVzZW50aW5nIExTUCBSQU5HRS4KSWYgb3B0aW9uYWwg TUFSS0VSUywgbWFrZSBtYXJrZXJzIGluc3RlYWQuIgogIChsZXQqICgoc3QgKHBsaXN0LWdldCBy YW5nZSA6c3RhcnQpKQogICAgICAgICAoYmVnIChlZ2xvdC0tbHNwLXBvc2l0aW9uLXRvLXBvaW50 IHN0IG1hcmtlcnMpKQogICAgICAgICAoZW5kIChlZ2xvdC0tbHNwLXBvc2l0aW9uLXRvLXBvaW50 IChwbGlzdC1nZXQgcmFuZ2UgOmVuZCkgbWFya2VycykpKQogICAgKGNvbnMgYmVnIGVuZCkpKQoK KGRlZnVuIGVnbG90LXNlcnZlci1jYXBhYmxlICgmcmVzdCBmZWF0cykKICAiRGV0ZXJtaW5lIGlm IGN1cnJlbnQgc2VydmVyIGlzIGNhcGFibGUgb2YgRkVBVFMuIgogICh1bmxlc3MgKGNsLXNvbWUg KGxhbWJkYSAoZmVhdCkKICAgICAgICAgICAgICAgICAgICAgKG1lbXEgZmVhdCBlZ2xvdC1pZ25v cmVkLXNlcnZlci1jYXBhYmlsaXRpZXMpKQogICAgICAgICAgICAgICAgICAgZmVhdHMpCiAgICAo Y2wtbG9vcCBmb3IgY2FwcyA9IChlZ2xvdC0tY2FwYWJpbGl0aWVzIChlZ2xvdC0tY3VycmVudC1z ZXJ2ZXItb3ItbG9zZSkpCiAgICAgICAgICAgICB0aGVuIChjYWRyIHByb2JlKQogICAgICAgICAg ICAgZm9yIChmZWF0IC4gbW9yZSkgb24gZmVhdHMKICAgICAgICAgICAgIGZvciBwcm9iZSA9IChw bGlzdC1tZW1iZXIgY2FwcyBmZWF0KQogICAgICAgICAgICAgaWYgKG5vdCBwcm9iZSkgZG8gKGNs LXJldHVybiBuaWwpCiAgICAgICAgICAgICBpZiAoZXEgKGNhZHIgcHJvYmUpIDpqc29uLWZhbHNl KSBkbyAoY2wtcmV0dXJuIG5pbCkKICAgICAgICAgICAgIGlmIChub3QgKGxpc3RwIChjYWRyIHBy b2JlKSkpIGRvIChjbC1yZXR1cm4gKGlmIG1vcmUgbmlsIChjYWRyIHByb2JlKSkpCiAgICAgICAg ICAgICBmaW5hbGx5IChjbC1yZXR1cm4gKG9yIChjYWRyIHByb2JlKSB0KSkpKSkKCihkZWZ1biBl Z2xvdC1zZXJ2ZXItY2FwYWJsZS1vci1sb3NlICgmcmVzdCBmZWF0cykKICAiTGlrZSBgZWdsb3Qt c2VydmVyLWNhcGFibGUnLCBidXQgbWF5YmUgZXJyb3Igb3V0LiIKICAobGV0ICgocmV0dmFsIChh cHBseSAjJ2VnbG90LXNlcnZlci1jYXBhYmxlIGZlYXRzKSkpCiAgICAodW5sZXNzIHJldHZhbAog ICAgICAoZWdsb3QtLWVycm9yICJVbnN1cHBvcnRlZCBvciBpZ25vcmVkIExTUCBjYXBhYmlsaXR5 IGAlcyciCiAgICAgICAgICAgICAgICAgICAgKG1hcGNvbmNhdCAjJ3N5bWJvbC1uYW1lIGZlYXRz ICIgIikpKQogICAgcmV0dmFsKSkKCgwKOzs7IFByb2Nlc3Mvc2VydmVyIG1hbmFnZW1lbnQKKGRl ZnVuIGVnbG90LS1tYWpvci1tb2RlcyAocykgIk1ham9yIG1vZGVzIHNlcnZlciBTIGlzIHJlc3Bv bnNpYmxlIGZvci4iCiAgKG1hcGNhciAjJ2NhciAoZWdsb3QtLWxhbmd1YWdlcyBzKSkpCgooZGVm dW4gZWdsb3QtLWxhbmd1YWdlLWlkcyAocykgIkxTUCBMYW5ndWFnZSBJRCBzdHJpbmdzIGZvciBz ZXJ2ZXIgUydzIG1vZGVzLiIKICAobWFwY2FyICMnY2RyIChlZ2xvdC0tbGFuZ3VhZ2VzIHMpKSkK CihjbC1kZWZtZXRob2QgaW5pdGlhbGl6ZS1pbnN0YW5jZSA6YmVmb3JlICgoX3NlcnZlciBlZ2xv dC1sc3Atc2VydmVyKSAmb3B0aW9uYWwgYXJncykKICAoY2wtcmVtZiBhcmdzIDppbml0aWFsaXph dGlvbk9wdGlvbnMpKQoKKGRlZnZhciBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0IChtYWtlLWhh c2gtdGFibGUgOnRlc3QgIydlcXVhbCkKICAiS2V5cyBhcmUgcHJvamVjdHMuICBWYWx1ZXMgYXJl IGxpc3RzIG9mIHByb2Nlc3Nlcy4iKQoKKGRlZnVuIGVnbG90LXNodXRkb3duIChzZXJ2ZXIgJm9w dGlvbmFsIF9pbnRlcmFjdGl2ZSB0aW1lb3V0IHByZXNlcnZlLWJ1ZmZlcnMpCiAgIlBvbGl0ZWx5 IGFzayBTRVJWRVIgdG8gcXVpdC4KSW50ZXJhY3RpdmVseSwgcmVhZCBTRVJWRVIgZnJvbSB0aGUg bWluaWJ1ZmZlciB1bmxlc3MgdGhlcmUgaXMKb25seSBvbmUgYW5kIGl0J3MgbWFuYWdpbmcgdGhl IGN1cnJlbnQgYnVmZmVyLgoKRm9yY2VmdWxseSBxdWl0IGl0IGlmIGl0IGRvZXNuJ3QgcmVzcG9u ZCB3aXRoaW4gVElNRU9VVCBzZWNvbmRzLgpUSU1FT1VUIGRlZmF1bHRzIHRvIDEuNSBzZWNvbmRz LiAgRG9uJ3QgbGVhdmUgdGhpcyBmdW5jdGlvbiB3aXRoCnRoZSBzZXJ2ZXIgc3RpbGwgcnVubmlu Zy4KCklmIFBSRVNFUlZFLUJVRkZFUlMgaXMgbm9uLW5pbCAoaW50ZXJhY3RpdmVseSwgd2hlbiBj YWxsZWQgd2l0aCBhCnByZWZpeCBhcmd1bWVudCksIGRvIG5vdCBraWxsIGV2ZW50cyBhbmQgb3V0 cHV0IGJ1ZmZlcnMgb2YKU0VSVkVSLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1yZWFk LXNlcnZlciAiU2h1dGRvd24gd2hpY2ggc2VydmVyIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlZ2xvdC1jdXJyZW50LXNlcnZlcikpCiAgICAgICAgICAgICAgICAg ICAgIHQgbmlsIGN1cnJlbnQtcHJlZml4LWFyZykpCiAgKGVnbG90LS1tZXNzYWdlICJBc2tpbmcg JXMgcG9saXRlbHkgdG8gdGVybWluYXRlIiAoanNvbnJwYy1uYW1lIHNlcnZlcikpCiAgKHVud2lu ZC1wcm90ZWN0CiAgICAgIChwcm9nbgogICAgICAgIChzZXRmIChlZ2xvdC0tc2h1dGRvd24tcmVx dWVzdGVkIHNlcnZlcikgdCkKICAgICAgICAoZWdsb3QtLXJlcXVlc3Qgc2VydmVyIDpzaHV0ZG93 biBuaWwgOnRpbWVvdXQgKG9yIHRpbWVvdXQgMS41KSkKICAgICAgICAoanNvbnJwYy1ub3RpZnkg c2VydmVyIDpleGl0IG5pbCkpCiAgICA7OyBOb3cgYXNrIGpzb25ycGMuZWwgdG8gc2h1dCBkb3du IHRoZSBzZXJ2ZXIuCiAgICAoanNvbnJwYy1zaHV0ZG93biBzZXJ2ZXIgKG5vdCBwcmVzZXJ2ZS1i dWZmZXJzKSkKICAgICh1bmxlc3MgcHJlc2VydmUtYnVmZmVycyAoa2lsbC1idWZmZXIgKGpzb25y cGMtZXZlbnRzLWJ1ZmZlciBzZXJ2ZXIpKSkpKQoKKGRlZnVuIGVnbG90LXNodXRkb3duLWFsbCAo Jm9wdGlvbmFsIHByZXNlcnZlLWJ1ZmZlcnMpCiAgIlBvbGl0ZWx5IGFzayBhbGwgbGFuZ3VhZ2Ug c2VydmVycyB0byBxdWl0LCBpbiBvcmRlci4KUFJFU0VSVkUtQlVGRkVSUyBhcyBpbiBgZWdsb3Qt c2h1dGRvd24nLCB3aGljaCBzZWUuIgogIChpbnRlcmFjdGl2ZSAobGlzdCBjdXJyZW50LXByZWZp eC1hcmcpKQogIChjbC1sb29wIGZvciBzcyBiZWluZyB0aGUgaGFzaC12YWx1ZXMgb2YgZWdsb3Qt LXNlcnZlcnMtYnktcHJvamVjdAogICAgICAgICAgIGRvICh3aXRoLWRlbW90ZWQtZXJyb3JzICJb ZWdsb3RdIHNodXRkb3duIGFsbDogJXMiCiAgICAgICAgICAgICAgICAoY2wtbG9vcCBmb3IgcyBp biBzcyBkbyAoZWdsb3Qtc2h1dGRvd24gcyBuaWwgbmlsIHByZXNlcnZlLWJ1ZmZlcnMpKSkpKQoK KGRlZnZhciBlZ2xvdC0tc2VydmVycy1ieS14cmVmZWQtZmlsZSAobWFrZS1oYXNoLXRhYmxlIDp0 ZXN0ICdlcXVhbCkpCgooZGVmdW4gZWdsb3QtLW9uLXNodXRkb3duIChzZXJ2ZXIpCiAgIkNhbGxl ZCBieSBqc29ucnBjLmVsIHdoZW4gU0VSVkVSIGlzIGFscmVhZHkgZGVhZC4iCiAgOzsgVHVybiBv ZmYgYGVnbG90LS1tYW5hZ2VkLW1vZGUnIHdoZXJlIGFwcHJvcHJpYXRlLgogIChkb2xpc3QgKGJ1 ZmZlciAoZWdsb3QtLW1hbmFnZWQtYnVmZmVycyBzZXJ2ZXIpKQogICAgKGxldCAoOzsgQXZvaWQg ZHVwbGljYXRlIHNodXRkb3ducyAoZ2l0aHViIzM4OSkKICAgICAgICAgIChlZ2xvdC1hdXRvc2h1 dGRvd24gbmlsKSkKICAgICAgKGVnbG90LS13aGVuLWxpdmUtYnVmZmVyIGJ1ZmZlciAoZWdsb3Qt LW1hbmFnZWQtbW9kZS1vZmYpKSkpCiAgOzsgS2lsbCBhbnkgZXhwZW5zaXZlIHdhdGNoZXMKICAo bWFwaGFzaCAobGFtYmRhIChfZGlyIHdhdGNoLWFuZC1pZHMpCiAgICAgICAgICAgICAoZmlsZS1u b3RpZnktcm0td2F0Y2ggKGNhciB3YXRjaC1hbmQtaWRzKSkpCiAgICAgICAgICAgKGVnbG90LS1m aWxlLXdhdGNoZXMgc2VydmVyKSkKICA7OyBTZXZlciB0aGUgcHJvamVjdC9zZXJ2ZXIgcmVsYXRp b25zaGlwIGZvciBgc2VydmVyJwogIChzZXRmIChnZXRoYXNoIChlZ2xvdC0tcHJvamVjdCBzZXJ2 ZXIpIGVnbG90LS1zZXJ2ZXJzLWJ5LXByb2plY3QpCiAgICAgICAgKGRlbHEgc2VydmVyCiAgICAg ICAgICAgICAgKGdldGhhc2ggKGVnbG90LS1wcm9qZWN0IHNlcnZlcikgZWdsb3QtLXNlcnZlcnMt YnktcHJvamVjdCkpKQogIChtYXBoYXNoIChsYW1iZGEgKGYgcykKICAgICAgICAgICAgICh3aGVu IChlcSBzIHNlcnZlcikgKHJlbWhhc2ggZiBlZ2xvdC0tc2VydmVycy1ieS14cmVmZWQtZmlsZSkp KQogICAgICAgICAgIGVnbG90LS1zZXJ2ZXJzLWJ5LXhyZWZlZC1maWxlKQogIChjb25kICgoZWds b3QtLXNodXRkb3duLXJlcXVlc3RlZCBzZXJ2ZXIpCiAgICAgICAgIHQpCiAgICAgICAgKChub3Qg KGVnbG90LS1pbmhpYml0LWF1dG9yZWNvbm5lY3Qgc2VydmVyKSkKICAgICAgICAgKGVnbG90LS13 YXJuICJSZWNvbm5lY3RpbmcgYWZ0ZXIgdW5leHBlY3RlZCBzZXJ2ZXIgZXhpdC4iKQogICAgICAg ICAoZWdsb3QtcmVjb25uZWN0IHNlcnZlcikpCiAgICAgICAgKCh0aW1lcnAgKGVnbG90LS1pbmhp Yml0LWF1dG9yZWNvbm5lY3Qgc2VydmVyKSkKICAgICAgICAgKGVnbG90LS13YXJuICJOb3QgYXV0 by1yZWNvbm5lY3RpbmcsIGxhc3Qgb25lIGRpZG4ndCBsYXN0IGxvbmcuIikpKSkKCihkZWZ1biBl Z2xvdC0tYWxsLW1ham9yLW1vZGVzICgpCiAgIlJldHVybiBhbGwga25vd24gbWFqb3IgbW9kZXMu IgogIChsZXQgKChyZXR2YWwpKQogICAgKG1hcGF0b21zIChsYW1iZGEgKHN5bSkKICAgICAgICAg ICAgICAgICh3aGVuIChwbGlzdC1tZW1iZXIgKHN5bWJvbC1wbGlzdCBzeW0pICdkZXJpdmVkLW1v ZGUtcGFyZW50KQogICAgICAgICAgICAgICAgICAocHVzaCBzeW0gcmV0dmFsKSkpKQogICAgcmV0 dmFsKSkKCihkZWZ2YXIgZWdsb3QtY29tbWFuZC1oaXN0b3J5IG5pbAogICJIaXN0b3J5IG9mIENP TlRBQ1QgYXJndW1lbnRzIHRvIGBlZ2xvdCcuIikKCihkZWZ1biBlZ2xvdC0tbG9va3VwLW1vZGUg KG1vZGUpCiAgIkxvb2t1cCBgZWdsb3Qtc2VydmVyLXByb2dyYW1zJyBmb3IgTU9ERS4KUmV0dXJu IChMQU5HVUFHRVMgLiBDT05UQUNULVBST1hZKS4KCk1BTkFHRUQtTU9ERVMgaXMgYSBsaXN0IHdp dGggTU9ERSBhcyBpdHMgZmlyc3QgZWxlbWVudC4KU3Vic2VxdWVudCBlbGVtZW50cyBhcmUgb3Ro ZXIgbWFqb3IgbW9kZXMgYWxzbyBwb3RlbnRpYWxseQptYW5hZ2VkIGJ5IHRoZSBzZXJ2ZXIgdGhh dCBpcyB0byBtYW5hZ2UgTU9ERS4KCkxBTkdVQUdFLUlEUyBpcyBhIGxpc3Qgb2YgdGhlIHNhbWUg bGVuZ3RoIGFzIE1BTkFHRUQtTU9ERVMuICBFYWNoCmVsZW0gaXMgZGVyaXZlZCBmcm9tIHRoZSBj b3JyZXNwb25kaW5nIG1vZGUgbmFtZSwgaWYgbm90CnNwZWNpZmllZCBpbiBgZWdsb3Qtc2VydmVy LXByb2dyYW1zJyAod2hpY2ggc2VlKS4KCkNPTlRBQ1QtUFJPWFkgaXMgdGhlIHZhbHVlIG9mIHRo ZSBjb3JyZXNwb25kaW5nCmBlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnIGVudHJ5LiIKICAoY2wtZmxl dCAoKGxhbmd1YWdlcyAobWFpbi1tb2RlLXN5bSBzcGVjcykKICAgICAgICAgICAgICAobGV0KiAo KHJlcwogICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAoanNvbnJwYy1sYW1iZGEgKHN5bSAm a2V5IGxhbmd1YWdlLWlkICZhbGxvdy1vdGhlci1rZXlzKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25zIHN5bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChvciBsYW5ndWFnZS1pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAob3IgKGdldCBzeW0gJ2VnbG90LWxhbmd1YWdlLWlkKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXCg/Oi10c1xcKT8tbW9k ZSQiICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5 bWJvbC1uYW1lIHN5bSkpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjcykp CiAgICAgICAgICAgICAgICAgICAgIChoZWFkIChjbC1maW5kIG1haW4tbW9kZS1zeW0gcmVzIDpr ZXkgIydjYXIpKSkKICAgICAgICAgICAgICAgIChjb25zIGhlYWQgKGRlbHEgaGVhZCByZXMpKSkp KQogICAgKGNsLWxvb3AKICAgICBmb3IgKG1vZGVzIC4gY29udGFjdCkgaW4gZWdsb3Qtc2VydmVy LXByb2dyYW1zCiAgICAgZm9yIHNwZWNzID0gKG1hcGNhciAjJ2VnbG90LS1lbnN1cmUtbGlzdAog ICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChvciAoc3ltYm9scCBtb2RlcykgKGtleXdvcmRw IChjYWRyIG1vZGVzKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgbW9kZXMp IG1vZGVzKSkKICAgICB0aGVyZWlzIChjbC1zb21lIChsYW1iZGEgKHNwZWMpCiAgICAgICAgICAg ICAgICAgICAgICAgIChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKHN5bSAma2V5ICZhbGxvdy1vdGhl ci1rZXlzKSBzcGVjCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAocHJvdmlkZWQtbW9k ZS1kZXJpdmVkLXAgbW9kZSBzeW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u cyAobGFuZ3VhZ2VzIHN5bSBzcGVjcykgY29udGFjdCkpKSkKICAgICAgICAgICAgICAgICAgICAg IHNwZWNzKSkpKQoKKGRlZnVuIGVnbG90LS1ndWVzcy1jb250YWN0ICgmb3B0aW9uYWwgaW50ZXJh Y3RpdmUpCiAgIkhlbHBlciBmb3IgYGVnbG90Jy4KUmV0dXJuIChNQU5BR0VELU1PREVTIFBST0pF Q1QgQ0xBU1MgQ09OVEFDVCBMQU5HLUlEUykuICBJZiBJTlRFUkFDVElWRSBpcwpub24tbmlsLCBt YXliZSBwcm9tcHQgdXNlciwgZWxzZSBlcnJvciBhcyBzb29uIGFzIHNvbWV0aGluZyBjYW4ndApi ZSBndWVzc2VkLiIKICAobGV0KiAoKHByb2plY3QgKGVnbG90LS1jdXJyZW50LXByb2plY3QpKQog ICAgICAgICAoZ3Vlc3NlZC1tb2RlIChpZiBidWZmZXItZmlsZS1uYW1lIG1ham9yLW1vZGUpKQog ICAgICAgICAoZ3Vlc3NlZC1tb2RlLW5hbWUgKGFuZCBndWVzc2VkLW1vZGUgKHN5bWJvbC1uYW1l IGd1ZXNzZWQtbW9kZSkpKQogICAgICAgICAobWFpbi1tb2RlCiAgICAgICAgICAoY29uZAogICAg ICAgICAgICgoYW5kIGludGVyYWN0aXZlCiAgICAgICAgICAgICAgICAgKG9yICg+PSAocHJlZml4 LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSAxNikKICAgICAgICAgICAgICAgICAg ICAgKG5vdCBndWVzc2VkLW1vZGUpKSkKICAgICAgICAgICAgKGludGVybgogICAgICAgICAgICAg KGNvbXBsZXRpbmctcmVhZAogICAgICAgICAgICAgICJbZWdsb3RdIFN0YXJ0IGEgc2VydmVyIHRv IG1hbmFnZSBidWZmZXJzIG9mIHdoYXQgbWFqb3IgbW9kZT8gIgogICAgICAgICAgICAgIChtYXBj YXIgIydzeW1ib2wtbmFtZSAoZWdsb3QtLWFsbC1tYWpvci1tb2RlcykpIG5pbCB0CiAgICAgICAg ICAgICAgZ3Vlc3NlZC1tb2RlLW5hbWUgbmlsIGd1ZXNzZWQtbW9kZS1uYW1lIG5pbCkpKQogICAg ICAgICAgICgobm90IGd1ZXNzZWQtbW9kZSkKICAgICAgICAgICAgKGVnbG90LS1lcnJvciAiQ2Fu J3QgZ3Vlc3MgbW9kZSB0byBtYW5hZ2UgZm9yIGAlcyciIChjdXJyZW50LWJ1ZmZlcikpKQogICAg ICAgICAgICh0IGd1ZXNzZWQtbW9kZSkpKQogICAgICAgICAobGFuZ3VhZ2VzLWFuZC1jb250YWN0 IChlZ2xvdC0tbG9va3VwLW1vZGUgbWFpbi1tb2RlKSkKICAgICAgICAgKG1hbmFnZWQtbW9kZXMg KG1hcGNhciAjJ2NhciAoY2FyIGxhbmd1YWdlcy1hbmQtY29udGFjdCkpKQogICAgICAgICAobGFu Z3VhZ2UtaWRzIChtYXBjYXIgIydjZHIgKGNhciBsYW5ndWFnZXMtYW5kLWNvbnRhY3QpKSkKICAg ICAgICAgKGd1ZXNzIChjZHIgbGFuZ3VhZ2VzLWFuZC1jb250YWN0KSkKICAgICAgICAgKGd1ZXNz IChpZiAoZnVuY3Rpb25wIGd1ZXNzKQogICAgICAgICAgICAgICAgICAgIChwY2FzZSAoY2RyIChm dW5jLWFyaXR5IGd1ZXNzKSkKICAgICAgICAgICAgICAgICAgICAgICgxIChmdW5jYWxsIGd1ZXNz IGludGVyYWN0aXZlKSkKICAgICAgICAgICAgICAgICAgICAgIChfIChmdW5jYWxsIGd1ZXNzIGlu dGVyYWN0aXZlIHByb2plY3QpKSkKICAgICAgICAgICAgICAgICAgZ3Vlc3MpKQogICAgICAgICAo Y2xhc3MgKG9yIChhbmQgKGNvbnNwIGd1ZXNzKSAoc3ltYm9scCAoY2FyIGd1ZXNzKSkKICAgICAg ICAgICAgICAgICAgICAgICAgIChwcm9nMSAodW5sZXNzIGN1cnJlbnQtcHJlZml4LWFyZyAoY2Fy IGd1ZXNzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZ3Vlc3MgKGNkciBndWVz cykpKSkKICAgICAgICAgICAgICAgICAgICAnZWdsb3QtbHNwLXNlcnZlcikpCiAgICAgICAgIChw cm9ncmFtIChhbmQgKGxpc3RwIGd1ZXNzKQogICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdw IChjYXIgZ3Vlc3MpKQogICAgICAgICAgICAgICAgICAgICAgIDs7IEEgc2Vjb25kIGVsZW1lbnQg bWlnaHQgYmUgdGhlIHBvcnQgb2YgYSAoaG9zdCwgcG9ydCkKICAgICAgICAgICAgICAgICAgICAg ICA7OyBwYWlyLCBidXQgaW4gdGhhdCBjYXNlIGl0IGlzIG5vdCBhIHN0cmluZy4KICAgICAgICAg ICAgICAgICAgICAgICAob3IgKG51bGwgKGNkciBndWVzcykpIChzdHJpbmdwIChjYWRyIGd1ZXNz KSkpCiAgICAgICAgICAgICAgICAgICAgICAgKGNhciBndWVzcykpKQogICAgICAgICAoYmFzZS1w cm9tcHQKICAgICAgICAgIChhbmQgaW50ZXJhY3RpdmUKICAgICAgICAgICAgICAgIkVudGVyIHBy b2dyYW0gdG8gZXhlY3V0ZSAob3IgPGhvc3Q+Ojxwb3J0Pik6ICIpKQogICAgICAgICAoZnVsbC1w cm9ncmFtLWludm9jYXRpb24KICAgICAgICAgIChhbmQgcHJvZ3JhbQogICAgICAgICAgICAgICAo Y2wtZXZlcnkgIydzdHJpbmdwIGd1ZXNzKQogICAgICAgICAgICAgICAoY29tYmluZS1hbmQtcXVv dGUtc3RyaW5ncyBndWVzcykpKQogICAgICAgICAocHJvbXB0CiAgICAgICAgICAoYW5kIGJhc2Ut cHJvbXB0CiAgICAgICAgICAgICAgIChjb25kIChjdXJyZW50LXByZWZpeC1hcmcgYmFzZS1wcm9t cHQpCiAgICAgICAgICAgICAgICAgICAgICgobnVsbCBndWVzcykKICAgICAgICAgICAgICAgICAg ICAgIChmb3JtYXQgIltlZ2xvdF0gQ291bGRuJ3QgZ3Vlc3MgTFNQIHNlcnZlciBmb3IgYCVzJ1xu JXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW4tbW9kZSBiYXNlLXByb21wdCkp CiAgICAgICAgICAgICAgICAgICAgICgoYW5kIHByb2dyYW0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG5vdCAoZmlsZS1uYW1lLWFic29sdXRlLXAgcHJvZ3JhbSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub3QgKGVnbG90LS1leGVjdXRhYmxlLWZpbmQgcHJvZ3JhbSB0KSkpCiAg ICAgICAgICAgICAgICAgICAgICAoaWYgZnVsbC1wcm9ncmFtLWludm9jYXRpb24KICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29uY2F0IChmb3JtYXQgIltlZ2xvdF0gSSBndWVzcyB5b3Ugd2Fu dCB0byBydW4gYCVzJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnVsbC1wcm9ncmFtLWludm9jYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZm9ybWF0ICIsIGJ1dCBJIGNhbid0IGZpbmQgYCVzJyBpbiBQQVRIISIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJcbiIgYmFzZS1wcm9tcHQpCiAgICAgICAgICAgICAgICAgICAgICAg IChlZ2xvdC0tZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgImAlcycgbm90 IGZvdW5kIGluIFBBVEgsIGJ1dCBjYW4ndCBmb3JtIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiIGFuIGludGVyYWN0aXZlIHByb21wdCBmb3IgaGVscCB5b3UgZml4IgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRoaXMuIikKICAgICAgICAgICAgICAgICAgICAg ICAgIHByb2dyYW0gZ3Vlc3MpKSkpKSkKICAgICAgICAgKGlucHV0IChhbmQgcHJvbXB0IChyZWFk LXNoZWxsLWNvbW1hbmQgcHJvbXB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZ1bGwtcHJvZ3JhbS1pbnZvY2F0aW9uCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZ2xvdC1jb21tYW5kLWhpc3RvcnkpKSkKICAg ICAgICAgKGNvbnRhY3QKICAgICAgICAgIChpZiBpbnB1dAogICAgICAgICAgICAgIChpZiAoc3Ry aW5nLW1hdGNoCiAgICAgICAgICAgICAgICAgICAiXltcc1x0XSpcXCguKlxcKTpcXChbWzpkaWdp dDpdXStcXClbXHNcdF0qJCIgaW5wdXQpCiAgICAgICAgICAgICAgICAgIDs7IDxob3N0Pjo8cG9y dD4gc3BlY2lhbCBjYXNlIChidWcjNjc2ODIpCiAgICAgICAgICAgICAgICAgIChsaXN0IChtYXRj aC1zdHJpbmcgMSBpbnB1dCkKICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10by1udW1i ZXIgKG1hdGNoLXN0cmluZyAyIGlucHV0KSkpCiAgICAgICAgICAgICAgICAoc3BsaXQtc3RyaW5n LWFuZC11bnF1b3RlIGlucHV0KSkKICAgICAgICAgICAgZ3Vlc3MpKSkKICAgIChsaXN0IG1hbmFn ZWQtbW9kZXMgcHJvamVjdCBjbGFzcyBjb250YWN0IGxhbmd1YWdlLWlkcykpKQoKKGRlZnZhciBl Z2xvdC1sc3AtY29udGV4dCBuaWwKICAiRHluYW1pY2FsbHkgbm9uLW5pbCB3aGVuIHNlYXJjaGlu ZyBmb3IgcHJvamVjdHMgaW4gTFNQIGNvbnRleHQuIikKCihkZWZ1biBlZ2xvdC0tY3VycmVudC1w cm9qZWN0ICgpCiAgIlJldHVybiBhIHByb2plY3Qgb2JqZWN0IGZvciBFZ2xvdCdzIExTUCBwdXJw b3Nlcy4KVGhpcyByZWxpZXMgb24gYHByb2plY3QtY3VycmVudCcgYW5kIHRodXMgb24KYHByb2pl Y3QtZmluZC1mdW5jdGlvbnMnLiAgRnVuY3Rpb25zIGluIHRoZSBsYXR0ZXIKdmFyaWFibGUgKHdo aWNoIHNlZSkgY2FuIHF1ZXJ5IHRoZSB2YWx1ZSBgZWdsb3QtbHNwLWNvbnRleHQnIHRvCmRlY2lk ZSB3aGV0aGVyIGEgZ2l2ZW4gZGlyZWN0b3J5IGlzIGEgcHJvamVjdCBjb250YWluaW5nIGEKc3Vp dGFibGUgcm9vdCBkaXJlY3RvcnkgZm9yIGEgZ2l2ZW4gTFNQIHNlcnZlcidzIHB1cnBvc2VzLiIK ICAobGV0ICgoZWdsb3QtbHNwLWNvbnRleHQgdCkpCiAgICAob3IgKHByb2plY3QtY3VycmVudCkK ICAgICAgICBgKHRyYW5zaWVudCAuICwoZXhwYW5kLWZpbGUtbmFtZSBkZWZhdWx0LWRpcmVjdG9y eSkpKSkpCgooY2wtZGVmbWV0aG9kIHByb2plY3Qtcm9vdCAoKHByb2plY3QgKGhlYWQgZWdsb3Qt LXByb2plY3QpKSkKICAoY2FkciBwcm9qZWN0KSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBlZ2xv dCAobWFuYWdlZC1tYWpvci1tb2RlcyBwcm9qZWN0IGNsYXNzIGNvbnRhY3QgbGFuZ3VhZ2UtaWRz CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBfaW50ZXJhY3RpdmUp CiAgIlN0YXJ0IExTUCBzZXJ2ZXIgZm9yIFBST0pFQ1QncyBidWZmZXJzIHVuZGVyIE1BTkFHRUQt TUFKT1ItTU9ERVMuCgpUaGlzIHN0YXJ0cyBhIExhbmd1YWdlIFNlcnZlciBQcm90b2NvbCAoTFNQ KSBzZXJ2ZXIgc3VpdGFibGUgZm9yCnRoZSBidWZmZXJzIG9mIFBST0pFQ1Qgd2hvc2UgYG1ham9y LW1vZGUnIGlzIGFtb25nCk1BTkFHRUQtTUFKT1ItTU9ERVMuICBDTEFTUyBpcyB0aGUgY2xhc3Mg b2YgdGhlIExTUCBzZXJ2ZXIgdG8Kc3RhcnQgYW5kIENPTlRBQ1Qgc3BlY2lmaWVzIGhvdyB0byBj b25uZWN0IHRvIHRoZSBzZXJ2ZXIuCgpJbnRlcmFjdGl2ZWx5LCB0aGUgY29tbWFuZCBhdHRlbXB0 cyB0byBndWVzcyBNQU5BR0VELU1BSk9SLU1PREVTLApDTEFTUywgQ09OVEFDVCwgYW5kIExBTkdV QUdFLUlEUyBmcm9tIGBlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnLAphY2NvcmRpbmcgdG8gdGhlIGN1 cnJlbnQgYnVmZmVyJ3MgYG1ham9yLW1vZGUnLiAgUFJPSkVDVCBpcwpndWVzc2VkIGZyb20gYHBy b2plY3QtZmluZC1mdW5jdGlvbnMnLiAgVGhlIHNlYXJjaCBmb3IgYWN0aXZlCnByb2plY3RzIGlu IHRoaXMgY29udGV4dCBiaW5kcyBgZWdsb3QtbHNwLWNvbnRleHQnICh3aGljaCBzZWUpLgoKSWYg aXQgY2FuJ3QgZ3Vlc3MsIGl0IHByb21wdHMgdGhlIHVzZXIgZm9yIHRoZSBtb2RlIGFuZCB0aGUK c2VydmVyLiAgV2l0aCBhIHNpbmdsZSBcXFt1bml2ZXJzYWwtYXJndW1lbnRdIHByZWZpeCBhcmcs IGl0CmFsd2F5cyBwcm9tcHRzIGZvciBDT01NQU5ELiAgV2l0aCB0d28gXFxbdW5pdmVyc2FsLWFy Z3VtZW50XSwgaXQKYWxzbyBhbHdheXMgcHJvbXB0cyBmb3IgTUFOQUdFRC1NQUpPUi1NT0RFLgoK VGhlIExTUCBzZXJ2ZXIgb2YgQ0xBU1MgaXMgc3RhcnRlZCAob3IgY29udGFjdGVkKSB2aWEgQ09O VEFDVC4KSWYgdGhpcyBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bCwgY3VycmVudCAqYW5kIGZ1dHVy ZSogZmlsZQpidWZmZXJzIG9mIE1BTkFHRUQtTUFKT1ItTU9ERSBpbnNpZGUgUFJPSkVDVCBiZWNv bWUgXCJtYW5hZ2VkXCIKYnkgdGhlIExTUCBzZXJ2ZXIsIG1lYW5pbmcgdGhlIGluZm9ybWF0aW9u IGFib3V0IHRoZWlyIGNvbnRlbnRzIGlzCmV4Y2hhbmdlZCBwZXJpb2RpY2FsbHkgd2l0aCB0aGUg c2VydmVyIHRvIHByb3ZpZGUgZW5oYW5jZWQKY29kZS1hbmFseXNpcyB2aWEgYHhyZWYtZmluZC1k ZWZpbml0aW9ucycsIGBmbHltYWtlLW1vZGUnLApgZWxkb2MtbW9kZScsIGFuZCBgY29tcGxldGlv bi1hdC1wb2ludCcsIGFtb25nIG90aGVycy4KClBST0pFQ1QgaXMgYSBwcm9qZWN0IG9iamVjdCBh cyByZXR1cm5lZCBieSBgcHJvamVjdC1jdXJyZW50Jy4KCkNMQVNTIGlzIGEgc3ViY2xhc3Mgb2Yg YGVnbG90LWxzcC1zZXJ2ZXInLgoKQ09OVEFDVCBzcGVjaWZpZXMgaG93IHRvIGNvbnRhY3QgdGhl IHNlcnZlci4gIEl0IGlzIGEKa2V5d29yZC12YWx1ZSBwbGlzdCB1c2VkIHRvIGluaXRpYWxpemUg Q0xBU1Mgb3IgYSBwbGFpbiBsaXN0IGFzCmRlc2NyaWJlZCBpbiBgZWdsb3Qtc2VydmVyLXByb2dy YW1zJywgd2hpY2ggc2VlLgoKTEFOR1VBR0UtSURTIGlzIGEgbGlzdCBvZiBsYW5ndWFnZSBJRCBz dHJpbmcgdG8gc2VuZCB0byB0aGUKc2VydmVyIGZvciBlYWNoIGVsZW1lbnQgaW4gTUFOQUdFRC1N QUpPUi1NT0RFUy4KCklOVEVSQUNUSVZFIGlzIGlnbm9yZWQgYW5kIHByb3ZpZGVkIGZvciBiYWNr d2FyZCBjb21wYXRpYmlsaXR5LiIKICAoaW50ZXJhY3RpdmUKICAgKGxldCAoKGN1cnJlbnQtc2Vy dmVyIChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKQogICAgICh1bmxlc3MgKG9yIChudWxsIGN1cnJl bnQtc2VydmVyKQogICAgICAgICAgICAgICAgICh5LW9yLW4tcCAiXApbZWdsb3RdIFNodXQgZG93 biBjdXJyZW50IGNvbm5lY3Rpb24gYmVmb3JlIGF0dGVtcHRpbmcgbmV3IG9uZT8iKSkKICAgICAg ICh1c2VyLWVycm9yICJbZWdsb3RdIENvbm5lY3Rpb24gYXR0ZW1wdCBhYm9ydGVkIGJ5IHVzZXIu IikpCiAgICAgKHByb2cxIChhcHBlbmQgKGVnbG90LS1ndWVzcy1jb250YWN0IHQpICcodCkpCiAg ICAgICAod2hlbiBjdXJyZW50LXNlcnZlciAoaWdub3JlLWVycm9ycyAoZWdsb3Qtc2h1dGRvd24g Y3VycmVudC1zZXJ2ZXIpKSkpKSkKICAoZWdsb3QtLWNvbm5lY3QgKGVnbG90LS1lbnN1cmUtbGlz dCBtYW5hZ2VkLW1ham9yLW1vZGVzKQogICAgICAgICAgICAgICAgICBwcm9qZWN0IGNsYXNzIGNv bnRhY3QKICAgICAgICAgICAgICAgICAgKGVnbG90LS1lbnN1cmUtbGlzdCBsYW5ndWFnZS1pZHMp KSkKCihkZWZ1biBlZ2xvdC1yZWNvbm5lY3QgKHNlcnZlciAmb3B0aW9uYWwgaW50ZXJhY3RpdmUp CiAgIlJlY29ubmVjdCB0byBTRVJWRVIuCklOVEVSQUNUSVZFIGlzIHQgaWYgY2FsbGVkIGludGVy YWN0aXZlbHkuIgogIChpbnRlcmFjdGl2ZSAobGlzdCAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9y LWxvc2UpIHQpKQogICh3aGVuIChqc29ucnBjLXJ1bm5pbmctcCBzZXJ2ZXIpCiAgICAoaWdub3Jl LWVycm9ycyAoZWdsb3Qtc2h1dGRvd24gc2VydmVyIGludGVyYWN0aXZlIG5pbCAncHJlc2VydmUt YnVmZmVycykpKQogIChlZ2xvdC0tY29ubmVjdCAoZWdsb3QtLW1ham9yLW1vZGVzIHNlcnZlcikK ICAgICAgICAgICAgICAgICAgKGVnbG90LS1wcm9qZWN0IHNlcnZlcikKICAgICAgICAgICAgICAg ICAgKGVpZWlvLW9iamVjdC1jbGFzcy1uYW1lIHNlcnZlcikKICAgICAgICAgICAgICAgICAgKGVn bG90LS1zYXZlZC1pbml0YXJncyBzZXJ2ZXIpCiAgICAgICAgICAgICAgICAgIChlZ2xvdC0tbGFu Z3VhZ2UtaWRzIHNlcnZlcikpCiAgKGVnbG90LS1tZXNzYWdlICJSZWNvbm5lY3RlZCEiKSkKCihk ZWZ2YXIgZWdsb3QtLW1hbmFnZWQtbW9kZSkgOyBmb3J3YXJkIGRlY2wKCjs7OyMjI2F1dG9sb2Fk CihkZWZ1biBlZ2xvdC1lbnN1cmUgKCkKICAiU3RhcnQgRWdsb3Qgc2Vzc2lvbiBmb3IgY3VycmVu dCBidWZmZXIgaWYgdGhlcmUgaXNuJ3Qgb25lLgoKT25seSB1c2UgdGhpcyBmdW5jdGlvbiAoaW4g bWFqb3IgbW9kZSBob29rcywgZXRjKSBpZiB5b3UgYXJlCmNvbmZpZGVudCB0aGF0IEVnbG90IGNh biBiZSBzdGFydGVkIHNhZmVseSBhbmQgZWZmaWNpZW50bHkgZm9yCipldmVyeSogYnVmZmVyIHZp c2l0ZWQgd2hlcmUgdGhlc2UgaG9va3MgbWF5IGV4ZWN1dGUuCgpTaW5jZSBpdCBpcyBkaWZmaWN1 bHQgdG8gZXN0YWJsaXNoIHRoaXMgY29uZmlkZW5jZSBmdWxseSwgaXQncwpvZnRlbiB3aXNlIHRv IHVzZSB0aGUgaW50ZXJhY3RpdmUgY29tbWFuZCBgZWdsb3QnIGluc3RlYWQuICBUaGlzCmNvbW1h bmQgb25seSBuZWVkcyB0byBiZSBpbnZva2VkIG9uY2UgcGVyIHByb2plY3QsIGFzIGFsbCBvdGhl cgpmaWxlcyBvZiBhIGdpdmVuIG1ham9yIG1vZGUgdmlzaXRlZCB3aXRoaW4gdGhlIHNhbWUgcHJv amVjdCB3aWxsCmF1dG9tYXRpY2FsbHkgYmVjb21lIG1hbmFnZWQgd2l0aCBubyBmdXJ0aGVyIHVz ZXIgaW50ZXJ2ZW50aW9uCm5lZWRlZC4iCiAgKGxldCAoKGJ1ZmZlciAoY3VycmVudC1idWZmZXIp KSkKICAgIChjbC1sYWJlbHMKICAgICAgICAoKG1heWJlLWNvbm5lY3QKICAgICAgICAgICAoKQog ICAgICAgICAgIChlZ2xvdC0td2hlbi1saXZlLWJ1ZmZlciBidWZmZXIKICAgICAgICAgICAgIChy ZW1vdmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgIydtYXliZS1jb25uZWN0IHQpCiAgICAgICAg ICAgICAodW5sZXNzIGVnbG90LS1tYW5hZ2VkLW1vZGUKICAgICAgICAgICAgICAgKGNvbmRpdGlv bi1jYXNlLXVubGVzcy1kZWJ1ZyBvb3BzCiAgICAgICAgICAgICAgICAgICAoYXBwbHkgIydlZ2xv dC0tY29ubmVjdCAoZWdsb3QtLWd1ZXNzLWNvbnRhY3QpKQogICAgICAgICAgICAgICAgIChlcnJv ciAoZWdsb3QtLXdhcm4gKGVycm9yLW1lc3NhZ2Utc3RyaW5nIG9vcHMpKSkpKSkpKQogICAgICAo d2hlbiBidWZmZXItZmlsZS1uYW1lCiAgICAgICAgKGFkZC1ob29rICdwb3N0LWNvbW1hbmQtaG9v ayAjJ21heWJlLWNvbm5lY3QgJ2FwcGVuZCB0KSkpKSkKCihkZWZ1biBlZ2xvdC1ldmVudHMtYnVm ZmVyIChzZXJ2ZXIpCiAgIkRpc3BsYXkgZXZlbnRzIGJ1ZmZlciBmb3IgU0VSVkVSLgpVc2UgY3Vy cmVudCBzZXJ2ZXIncyBvciBmaXJzdCBhdmFpbGFibGUgRWdsb3QgZXZlbnRzIGJ1ZmZlci4iCiAg KGludGVyYWN0aXZlIChsaXN0IChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKQogIChsZXQgKChidWZm ZXIgKGlmIHNlcnZlciAoanNvbnJwYy1ldmVudHMtYnVmZmVyIHNlcnZlcikKICAgICAgICAgICAg ICAgICAgKGNsLWZpbmQgIlxcKkVHTE9ULipldmVudHNcXCoiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIChidWZmZXItbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleSAjJ2J1 ZmZlci1uYW1lIDp0ZXN0ICMnc3RyaW5nLW1hdGNoKSkpKQogICAgKGlmIGJ1ZmZlciAoZGlzcGxh eS1idWZmZXIgYnVmZmVyKQogICAgICAoZWdsb3QtLWVycm9yICJDYW4ndCBmaW5kIGFuIEVnbG90 IGV2ZW50cyBidWZmZXIhIikpKSkKCihkZWZ1biBlZ2xvdC1zdGRlcnItYnVmZmVyIChzZXJ2ZXIp CiAgIkRpc3BsYXkgc3RkZXJyIGJ1ZmZlciBmb3IgU0VSVkVSLiIKICAoaW50ZXJhY3RpdmUgKGxp c3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkpCiAgKGRpc3BsYXktYnVmZmVyIChq c29ucnBjLXN0ZGVyci1idWZmZXIgc2VydmVyKSkpCgooZGVmdW4gZWdsb3QtZm9yZ2V0LXBlbmRp bmctY29udGludWF0aW9ucyAoc2VydmVyKQogICJGb3JnZXQgcGVuZGluZyByZXF1ZXN0cyBmb3Ig U0VSVkVSLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1s b3NlKSkpCiAgKGpzb25ycGMtZm9yZ2V0LXBlbmRpbmctY29udGludWF0aW9ucyBzZXJ2ZXIpKQoK KGRlZnZhciBlZ2xvdC1jb25uZWN0LWhvb2sKICAnKGVnbG90LXNpZ25hbC1kaWRDaGFuZ2VDb25m aWd1cmF0aW9uKQogICJIb29rIHJ1biBhZnRlciBjb25uZWN0aW5nIGluIGBlZ2xvdC0tY29ubmVj dCcuIikKCihkZWZ2YXIgZWdsb3Qtc2VydmVyLWluaXRpYWxpemVkLWhvb2sKICAnKCkKICAiSG9v ayBydW4gYWZ0ZXIgYSBgZWdsb3QtbHNwLXNlcnZlcicgaW5zdGFuY2UgaXMgY3JlYXRlZC4KClRo YXQgaXMgYmVmb3JlIGEgY29ubmVjdGlvbiB3YXMgZXN0YWJsaXNoZWQuICBVc2UKYGVnbG90LWNv bm5lY3QtaG9vaycgdG8gaG9vayBpbnRvIHdoZW4gYSBjb25uZWN0aW9uIHdhcwpzdWNjZXNzZnVs bHkgZXN0YWJsaXNoZWQgYW5kIHRoZSBzZXJ2ZXIgb24gdGhlIG90aGVyIHNpZGUgaGFzCnJlY2Vp dmVkIHRoZSBpbml0aWFsaXppbmcgY29uZmlndXJhdGlvbi4KCkVhY2ggZnVuY3Rpb24gaXMgcGFz c2VkIHRoZSBzZXJ2ZXIgYXMgYW4gYXJndW1lbnQiKQoKKGRlZnVuIGVnbG90LS1jbWQgKGNvbnRh Y3QpCiAgIkhlbHBlciBmb3IgYGVnbG90LS1jb25uZWN0Jy4iCiAgKGlmIChmaWxlLXJlbW90ZS1w IGRlZmF1bHQtZGlyZWN0b3J5KQogICAgICA7OyBUT0RPOiB0aGlzIHNlZW1zIGxpa2UgYSBidWcs IGFsdGhvdWdoIGl04oCZcyBldmVyeXdoZXJlLiBGb3IKICAgICAgOzsgc29tZSByZWFzb24sIGZv ciByZW1vdGUgY29ubmVjdGlvbnMgb25seSwgb3ZlciBhIHBpcGUsIHdlCiAgICAgIDs7IG5lZWQg dG8gdHVybiBvZmYgbGluZSBidWZmZXJpbmcgb24gdGhlIHR0eS4KICAgICAgOzsKICAgICAgOzsg Tm90IG9ubHkgZG9lcyB0aGlzIHNlZW0gbGlrZSB0aGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5 LAogICAgICA7OyBidXQgaXQgYWxtb3N0IGNlcnRhaW5seSBkb2VzbuKAmXQgd29yayBvbiBub24t dW5peCBzeXN0ZW1zLgogICAgICAobGlzdCBzaGVsbC1maWxlLW5hbWUgIi1jIgogICAgICAgICAg ICAoc3RyaW5nLWpvaW4gKGNvbnMgInN0dHkgcmF3ID4gL2Rldi9udWxsOyIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtYXBjYXIgIydzaGVsbC1xdW90ZS1hcmd1bWVudCBjb250YWN0 KSkKICAgICAgICAgICAgICAgICAgICAgICAgICIgIikpCiAgICBjb250YWN0KSkKCihkZWZ2YXIt bG9jYWwgZWdsb3QtLWNhY2hlZC1zZXJ2ZXIgbmlsCiAgIkEgY2FjaGVkIHJlZmVyZW5jZSB0byB0 aGUgY3VycmVudCBFZ2xvdCBzZXJ2ZXIuIikKCihkZWZ1biBlZ2xvdC0tY29ubmVjdCAobWFuYWdl ZC1tb2RlcyBwcm9qZWN0IGNsYXNzIGNvbnRhY3QgbGFuZ3VhZ2UtaWRzKQogICJDb25uZWN0IHRv IE1BTkFHRUQtTU9ERVMsIExBTkdVQUdFLUlEUywgUFJPSkVDVCwgQ0xBU1MgYW5kIENPTlRBQ1Qu ClRoaXMgZG9jc3RyaW5nIGFwcGVhc2VzIGNoZWNrZG9jLCB0aGF0J3MgYWxsLiIKICAobGV0KiAo KGRlZmF1bHQtZGlyZWN0b3J5IChwcm9qZWN0LXJvb3QgcHJvamVjdCkpCiAgICAgICAgIChuaWNr bmFtZSAocHJvamVjdC1uYW1lIHByb2plY3QpKQogICAgICAgICAocmVhZGFibGUtbmFtZSAoZm9y bWF0ICJFR0xPVCAoJXMvJXMpIiBuaWNrbmFtZSBtYW5hZ2VkLW1vZGVzKSkKICAgICAgICAgc2Vy dmVyLWluZm8KICAgICAgICAgKGNvbnRhY3QgKGlmIChmdW5jdGlvbnAgY29udGFjdCkgKGZ1bmNh bGwgY29udGFjdCkgY29udGFjdCkpCiAgICAgICAgIChpbml0YXJncwogICAgICAgICAgKGNvbmQg KChrZXl3b3JkcCAoY2FyIGNvbnRhY3QpKSBjb250YWN0KQogICAgICAgICAgICAgICAgKChpbnRl Z2VycCAoY2FkciBjb250YWN0KSkKICAgICAgICAgICAgICAgICAoc2V0cSBzZXJ2ZXItaW5mbyAo bGlzdCAoZm9ybWF0ICIlczolcyIgKGNhciBjb250YWN0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhZHIgY29udGFjdCkpKSkKICAgICAgICAgICAg ICAgICBgKDpwcm9jZXNzICwobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYXBwbHkgIydvcGVuLW5ldHdvcmstc3RyZWFtCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVhZGFibGUtbmFtZSBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY2FyIGNvbnRhY3QpIChjYWRyIGNvbnRhY3QpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNkZHIgY29udGFjdCkpKSkpCiAgICAgICAgICAgICAgICAo KGFuZCAoc3RyaW5ncCAoY2FyIGNvbnRhY3QpKQogICAgICAgICAgICAgICAgICAgICAgKGNsLWZp bmQtaWYgKGxhbWJkYSAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9y IChlcSB4IDphdXRvcG9ydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlcSAoY2FyLXNhZmUgeCkgOmF1dG9wb3J0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250YWN0KSkKICAgICAgICAgICAgICAgICAoc2V0cSBzZXJ2ZXItaW5mbyAobGlz dCAiPGluZmVyaW9yIHByb2Nlc3M+IikpCiAgICAgICAgICAgICAgICAgYCg6cHJvY2VzcyAsKGpz b25ycGMtYXV0b3BvcnQtYm9vdHN0cmFwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlYWRhYmxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGFjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6Y29ubmVjdC1hcmdzICcoOm5vcXVlcnkgdCkpKSkKICAgICAgICAgICAgICAg ICgoc3RyaW5ncCAoY2FyIGNvbnRhY3QpKQogICAgICAgICAgICAgICAgIChsZXQqICgocHJvYmUg KGNsLXBvc2l0aW9uLWlmICMna2V5d29yZHAgY29udGFjdCkpCiAgICAgICAgICAgICAgICAgICAg ICAgIChtb3JlLWluaXRhcmdzIChhbmQgcHJvYmUgKGNsLXN1YnNlcSBjb250YWN0IHByb2JlKSkp CiAgICAgICAgICAgICAgICAgICAgICAgIChjb250YWN0IChjbC1zdWJzZXEgY29udGFjdCAwIHBy b2JlKSkpCiAgICAgICAgICAgICAgICAgICBgKDpwcm9jZXNzCiAgICAgICAgICAgICAgICAgICAg ICwobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChkZWZhdWx0LWRpcmVj dG9yeSBkZWZhdWx0LWRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg YnVnIzYxMzUwOiBUcmFtcCB0dXJucyBvbiBhIGZlYXR1cmUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgYnkgZGVmYXVsdCB0aGF0IGNhbid0ICh5ZXQpIGhhbmRsZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyB2ZXJ5IG11Y2ggZGF0YSBzbyB3ZSB0dXJuIGl0IG9mZgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB1bmNvbmRpdGlvbmFsbHkgLS0ganVzdCBm b3Igb3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHByb2Nlc3MuCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0cmFtcC11c2Utc3NoLWNvbnRyb2xtYXN0ZXItb3B0aW9u cyAnc3VwcHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFtcC1zc2gtY29u dHJvbG1hc3Rlci1vcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8gQ29u dHJvbE1hc3Rlcj1ubyAtbyBDb250cm9sUGF0aD1ub25lIikpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1ha2UtcHJvY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAgICA6bmFtZSByZWFk YWJsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb21tYW5kIChzZXRxIHNlcnZl ci1pbmZvIChlZ2xvdC0tY21kIGNvbnRhY3QpKQogICAgICAgICAgICAgICAgICAgICAgICAgICA6 Y29ubmVjdGlvbi10eXBlICdwaXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb2Rpbmcg J3V0Zi04LWVtYWNzLXVuaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgOm5vcXVlcnkgdAog ICAgICAgICAgICAgICAgICAgICAgICAgICA6c3RkZXJyIChnZXQtYnVmZmVyLWNyZWF0ZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIqJXMgc3RkZXJyKiIgcmVh ZGFibGUtbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmaWxlLWhhbmRsZXIgdCkp KQogICAgICAgICAgICAgICAgICAgICAsQG1vcmUtaW5pdGFyZ3MpKSkpKQogICAgICAgICAoc3By ZWFkIChsYW1iZGEgKGZuKSAobGFtYmRhIChzZXJ2ZXIgbWV0aG9kIHBhcmFtcykKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZWdsb3QtLWNhY2hlZC1zZXJ2ZXIgc2VydmVy KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSBmbiBzZXJ2ZXIgbWV0 aG9kIChhcHBlbmQgcGFyYW1zIG5pbCkpKSkpKQogICAgICAgICAoc2VydmVyCiAgICAgICAgICAo YXBwbHkKICAgICAgICAgICAjJ21ha2UtaW5zdGFuY2UgY2xhc3MKICAgICAgICAgICA6bmFtZSBy ZWFkYWJsZS1uYW1lCiAgICAgICAgICAgOmV2ZW50cy1idWZmZXItY29uZmlnIGVnbG90LWV2ZW50 cy1idWZmZXItY29uZmlnCiAgICAgICAgICAgOm5vdGlmaWNhdGlvbi1kaXNwYXRjaGVyIChmdW5j YWxsIHNwcmVhZCAjJ2VnbG90LWhhbmRsZS1ub3RpZmljYXRpb24pCiAgICAgICAgICAgOnJlcXVl c3QtZGlzcGF0Y2hlciAoZnVuY2FsbCBzcHJlYWQgIydlZ2xvdC1oYW5kbGUtcmVxdWVzdCkKICAg ICAgICAgICA6b24tc2h1dGRvd24gIydlZ2xvdC0tb24tc2h1dGRvd24KICAgICAgICAgICBpbml0 YXJncykpCiAgICAgICAgIChjYW5jZWxlZCBuaWwpCiAgICAgICAgICh0YWcgKG1ha2Utc3ltYm9s ICJjb25uZWN0ZWQtY2F0Y2gtdGFnIikpKQogICAgKHdoZW4gc2VydmVyLWluZm8KICAgICAgKGpz b25ycGMtLWRlYnVnIHNlcnZlciAiUnVubmluZyBsYW5ndWFnZSBzZXJ2ZXI6ICVzIgogICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZy1qb2luIHNlcnZlci1pbmZvICIgIikpKQogICAgKHNldGYg KGVnbG90LS1zYXZlZC1pbml0YXJncyBzZXJ2ZXIpIGluaXRhcmdzKQogICAgKHNldGYgKGVnbG90 LS1wcm9qZWN0IHNlcnZlcikgcHJvamVjdCkKICAgIChzZXRmIChlZ2xvdC0tcHJvamVjdC1uaWNr bmFtZSBzZXJ2ZXIpIG5pY2tuYW1lKQogICAgKHNldGYgKGVnbG90LS1sYW5ndWFnZXMgc2VydmVy KQogICAgICAgICAgKGNsLWxvb3AgZm9yIG0gaW4gbWFuYWdlZC1tb2RlcyBmb3IgbCBpbiBsYW5n dWFnZS1pZHMKICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgKGNvbnMgbSBsKSkpCiAgICAocnVu LWhvb2std2l0aC1hcmdzICdlZ2xvdC1zZXJ2ZXItaW5pdGlhbGl6ZWQtaG9vayBzZXJ2ZXIpCiAg ICA7OyBOb3cgc3RhcnQgdGhlIGhhbmRzaGFrZS4gIFRvIGhvbm9yIGBlZ2xvdC1zeW5jLWNvbm5l Y3QnCiAgICA7OyBtYXliZS1zeW5jLW1heWJlLWFzeW5jIHNlbWFudGljcyB3ZSB1c2UgYGpzb25y cGMtYXN5bmMtcmVxdWVzdCcKICAgIDs7IGFuZCBtaW1pYyBtb3N0IG9mIGBqc29ucnBjLXJlcXVl c3QnLgogICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgKGNvbmRpdGlvbi1jYXNlIF9xdWl0CiAg ICAgICAgICAgIChsZXQgKChyZXR2YWwKICAgICAgICAgICAgICAgICAgIChjYXRjaCB0YWcKICAg ICAgICAgICAgICAgICAgICAgKGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgICAgICAgICAg ICAgICAgc2VydmVyCiAgICAgICAgICAgICAgICAgICAgICA6aW5pdGlhbGl6ZQogICAgICAgICAg ICAgICAgICAgICAgKGxpc3QgOnByb2Nlc3NJZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg KHVubGVzcyAob3IgZWdsb3Qtd2l0aGhvbGQtcHJvY2Vzcy1pZAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGZpbGUtcmVtb3RlLXAgZGVmYXVsdC1kaXJlY3RvcnkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGpzb25ycGMtcHJvY2Vz cy10eXBlIHNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnbmV0d29yaykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWFjcy1waWQpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsaWVudEluZm8KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGAoOm5hbWUgIkVnbG90IiAsQCh3aGVuIGVnbG90LS12ZXJzaW9uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoOnZlcnNpb24gLGVnbG90 LS12ZXJzaW9uKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBNYXliZSB0dXJuIHRy YW1weSBgL3NzaDpmb29AYmFyOi9wYXRoL3RvL2Jhei5weScKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGludG8gYC9wYXRoL3RvL2Jhei5weScsIHNvIExTUCBncm9rcyBpdC4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpyb290UGF0aCAoZmlsZS1sb2NhbC1uYW1lCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lIGRlZmF1bHQt ZGlyZWN0b3J5KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyb290VXJpIChlZ2xvdC1w YXRoLXRvLXVyaSBkZWZhdWx0LWRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg IDppbml0aWFsaXphdGlvbk9wdGlvbnMgKGVnbG90LWluaXRpYWxpemF0aW9uLW9wdGlvbnMKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjYXBhYmlsaXRpZXMgKGVnbG90LWNsaWVudC1j YXBhYmlsaXRpZXMgc2VydmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOndvcmtzcGFj ZUZvbGRlcnMgKGVnbG90LXdvcmtzcGFjZS1mb2xkZXJzIHNlcnZlcikpCiAgICAgICAgICAgICAg ICAgICAgICA6c3VjY2Vzcy1mbgogICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1sYW1iZGEg KChJbml0aWFsaXplUmVzdWx0KSBjYXBhYmlsaXRpZXMgc2VydmVySW5mbykKICAgICAgICAgICAg ICAgICAgICAgICAgKHVubGVzcyBjYW5jZWxlZAogICAgICAgICAgICAgICAgICAgICAgICAgIChw dXNoIHNlcnZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXRoYXNoIHByb2pl Y3QgZWdsb3QtLXNlcnZlcnMtYnktcHJvamVjdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldGYgKGVnbG90LS1jYXBhYmlsaXRpZXMgc2VydmVyKSBjYXBhYmlsaXRpZXMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldGYgKGVnbG90LS1zZXJ2ZXItaW5mbyBzZXJ2ZXIpIHNlcnZl ckluZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb25ycGMtbm90aWZ5IHNlcnZlciA6 aW5pdGlhbGl6ZWQgZWdsb3QtLXt9KQogICAgICAgICAgICAgICAgICAgICAgICAgIChkb2xpc3Qg KGJ1ZmZlciAoYnVmZmVyLWxpc3QpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgt Y3VycmVudC1idWZmZXIgYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IE5v IG5lZWQgdG8gcGFzcyBTRVJWRVIgYXMgYW4gYXJndW1lbnQ6IGl0IGhhcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBiZWVuIHJlZ2lzdGVyZWQgaW4gYGVnbG90LS1zZXJ2ZXJzLWJ5 LXByb2plY3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBzbyB0aGF0IGl0IGNh biBiZSBmb3VuZCAoYW5kIGNhY2hlZCkgZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7OyBgZWdsb3QtLW1heWJlLWFjdGl2YXRlLWVkaXRpbmctbW9kZScgaW4gYW55CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7IG1hbmFnZWQgYnVmZmVyLgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZWdsb3QtLW1heWJlLWFjdGl2YXRlLWVkaXRpbmctbW9kZSkpKQogICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChlZ2xvdC0taW5oaWJpdC1hdXRvcmVjb25uZWN0 IHNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKGJvb2xlYW5wIGVnbG90LWF1dG9yZWNvbm5lY3QpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IGVnbG90LWF1dG9yZWNvbm5lY3Qp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNsLXBsdXNwIGVnbG90LWF1dG9y ZWNvbm5lY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVuLXdpdGgtdGlt ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2xvdC1hdXRvcmVjb25uZWN0 IG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChlZ2xvdC0taW5oaWJpdC1hdXRv cmVjb25uZWN0IHNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChudWxsIGVnbG90LWF1dG9yZWNvbm5lY3QpKSkpKSkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKHJ1bi1ob29rLXdpdGgtYXJncyAnZWdsb3QtY29ubmVjdC1ob29rIHNlcnZlcikKICAg ICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLW1lc3NhZ2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkNvbm5lY3RlZCEgU2VydmVyIGAlcycgbm93IG1hbmFnaW5nIGAlcycgYnVmZmVy cyBcCmluIHByb2plY3QgYCVzJy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAocGxp c3QtZ2V0IHNlcnZlckluZm8gOm5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo anNvbnJwYy1uYW1lIHNlcnZlcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZWQt bW9kZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LXByb2plY3Qtbmlja25hbWUg c2VydmVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiB0YWcgKHRocm93IHRhZyB0 KSkpKQogICAgICAgICAgICAgICAgICAgICAgOnRpbWVvdXQgZWdsb3QtY29ubmVjdC10aW1lb3V0 CiAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3ItZm4gKGVnbG90LS1sYW1iZGEgKChSZXNwb25z ZUVycm9yKSBjb2RlIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dW5sZXNzIGNhbmNlbGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqc29u cnBjLXNodXRkb3duIHNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxldCAoKG1zZyAoZm9ybWF0ICIlczogJXMiIGNvZGUgbWVzc2FnZSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB0YWcgKHRocm93IHRhZyBgKGVycm9yIC4gLG1z ZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLWVycm9y IG1zZykpKSkpCiAgICAgICAgICAgICAgICAgICAgICA6dGltZW91dC1mbiAobGFtYmRhICgpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgY2FuY2VsZWQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanNvbnJwYy1zaHV0ZG93biBzZXJ2ZXIp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG1zZyAoZm9ybWF0 ICJUaW1lZCBvdXQgYWZ0ZXIgJXMgc2Vjb25kcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsb3QtY29ubmVjdC10aW1lb3V0KSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdGFnICh0aHJvdyB0YWcg YChlcnJvciAuICxtc2cpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZWdsb3QtLWVycm9yIG1zZykpKSkpKQogICAgICAgICAgICAgICAgICAgICAoY29uZCAoKG51 bWJlcnAgZWdsb3Qtc3luYy1jb25uZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFj Y2VwdC1wcm9jZXNzLW91dHB1dCBuaWwgZWdsb3Qtc3luYy1jb25uZWN0KSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGVnbG90LXN5bmMtY29ubmVjdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHdoaWxlIHQgKGFjY2VwdC1wcm9jZXNzLW91dHB1dAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5pbCBlZ2xvdC1jb25uZWN0LXRpbWVvdXQpKSkpKSkpCiAgICAg ICAgICAgICAgKHBjYXNlIHJldHZhbAogICAgICAgICAgICAgICAgKGAoZXJyb3IgLiAsbXNnKSAo ZWdsb3QtLWVycm9yIG1zZykpCiAgICAgICAgICAgICAgICAoYG5pbCAoZWdsb3QtLW1lc3NhZ2Ug IldhaXRpbmcgaW4gYmFja2dyb3VuZCBmb3Igc2VydmVyIGAlcyciCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGpzb25ycGMtbmFtZSBzZXJ2ZXIpKQogICAgICAgICAgICAg ICAgICAgICAgbmlsKQogICAgICAgICAgICAgICAgKF8gc2VydmVyKSkpCiAgICAgICAgICAocXVp dCAoanNvbnJwYy1zaHV0ZG93biBzZXJ2ZXIpIChzZXRxIGNhbmNlbGVkICdxdWl0KSkpCiAgICAg IChzZXRxIHRhZyBuaWwpKSkpCgoMCjs7OyBIZWxwZXJzIChtb3ZlIHRoZXNlIHRvIEFQST8pCjs7 OwooZGVmdW4gZWdsb3QtLWVycm9yIChmb3JtYXQgJnJlc3QgYXJncykKICAiRXJyb3Igb3V0IHdp dGggRk9STUFUIHdpdGggQVJHUy4iCiAgKGVycm9yICJbZWdsb3RdICVzIiAoYXBwbHkgIydmb3Jt YXQgZm9ybWF0IGFyZ3MpKSkKCihkZWZ1biBlZ2xvdC0tbWVzc2FnZSAoZm9ybWF0ICZyZXN0IGFy Z3MpCiAgIk1lc3NhZ2Ugb3V0IHdpdGggRk9STUFUIHdpdGggQVJHUy4iCiAgKG1lc3NhZ2UgIltl Z2xvdF0gJXMiIChhcHBseSAjJ2Zvcm1hdCBmb3JtYXQgYXJncykpKQoKKGRlZnVuIGVnbG90LS13 YXJuIChmb3JtYXQgJnJlc3QgYXJncykKICAiV2FybmluZyBtZXNzYWdlIHdpdGggRk9STUFUIGFu ZCBBUkdTLiIKICAoYXBwbHkgIydlZ2xvdC0tbWVzc2FnZSAoY29uY2F0ICIod2FybmluZykgIiBm b3JtYXQpIGFyZ3MpCiAgKGxldCAoKHdhcm5pbmctbWluaW11bS1sZXZlbCA6ZXJyb3IpKQogICAg KGRpc3BsYXktd2FybmluZyAnZWdsb3QgKGFwcGx5ICMnZm9ybWF0IGZvcm1hdCBhcmdzKSA6d2Fy bmluZykpKQoKKGRlZmFsaWFzICdlZ2xvdC0tYm9sCiAgKGlmIChmYm91bmRwICdwb3MtYm9sKSAj J3Bvcy1ib2wKICAgIChsYW1iZGEgKCZvcHRpb25hbCBuKSAobGV0ICgoaW5oaWJpdC1maWVsZC10 ZXh0LW1vdGlvbiB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmlu Zy1wb3NpdGlvbiBuKSkpKQogICJSZXR1cm4gcG9zaXRpb24gb2YgZmlyc3QgY2hhcmFjdGVyIGlu IGN1cnJlbnQgbGluZS4iKQoKKGNsLWRlZnVuIGVnbG90LS1yZXF1ZXN0IChzZXJ2ZXIgbWV0aG9k IHBhcmFtcyAma2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0IGNhbmNlbC1vbi1pbnB1dAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWwtb24taW5wdXQtcmV0dmFsKQog ICJMaWtlIGBqc29ucnBjLXJlcXVlc3QnLCBidXQgZm9yIEVnbG90IExTUCByZXF1ZXN0cy4KVW5s ZXNzIElNTUVESUFURSwgc2VuZCBwZW5kaW5nIGNoYW5nZXMgYmVmb3JlIG1ha2luZyByZXF1ZXN0 LiIKICAodW5sZXNzIGltbWVkaWF0ZSAoZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2hh bmdlKSkKICAoanNvbnJwYy1yZXF1ZXN0IHNlcnZlciBtZXRob2QgcGFyYW1zCiAgICAgICAgICAg ICAgICAgICA6dGltZW91dCB0aW1lb3V0CiAgICAgICAgICAgICAgICAgICA6Y2FuY2VsLW9uLWlu cHV0IGNhbmNlbC1vbi1pbnB1dAogICAgICAgICAgICAgICAgICAgOmNhbmNlbC1vbi1pbnB1dC1y ZXR2YWwgY2FuY2VsLW9uLWlucHV0LXJldHZhbCkpCgoMCjs7OyBFbmNvZGluZyBmZXZlcgo7OzsK KGRlZnZhciBlZ2xvdC1jdXJyZW50LWxpbmVwb3MtZnVuY3Rpb24gIydlZ2xvdC11dGYtMTYtbGlu ZXBvcwogICJGdW5jdGlvbiBjYWxjdWxhdGluZyBwb3NpdGlvbiByZWxhdGl2ZSB0byBsaW5lIGJl Z2lubmluZy4KCkl0IGlzIGEgZnVuY3Rpb24gb2Ygbm8gYXJndW1lbnRzIGNvbnNpZGVyaW5nIHRo ZSB0ZXh0IGZyb20gbGluZQpiZWdpbm5pbmcgdXAgdG8gY3VycmVudCBwb2ludC4gIFRoZSByZXR1 cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZgpVVEYgY29kZSB1bml0cyBuZWVkZWQgdG8gZW5jb2Rl IHRoYXQgdGV4dCBmcm9tIHRoZSBMU1Agc2VydmVyJ3MKcGVyc3BlY3RpdmUuICBUaGlzIG1heSBi ZSBhIG51bWJlciBvZiBvY3RldHMsIDE2LWJpdCB3b3JkcyBvcgpVbmljb2RlIGNvZGUgcG9pbnRz LCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgTFNQIHNlcnZlcidzCmBwb3NpdGlvbkVuY29kaW5n JyBjYXBhYmlsaXR5IGlzIFVURi04LCBVVEYtMTYgb3IgVVRGLTMyLApyZXNwZWN0aXZlbHkuICBQ b3NpdGlvbiBvZiBwb2ludCBzaG91bGQgcmVtYWluIHVuYWx0ZXJlZCBpZiB0aGF0CnJldHVybiB2 YWx1ZSBpcyBmZWQgdGhyb3VnaCB0aGUgY29ycmVzcG9uZGluZyBpbnZlcnNlIGZ1bmN0aW9uCmBl Z2xvdC1tb3ZlLXRvLWxpbmVwb3MtZnVuY3Rpb24nICh3aGljaCBzZWUpLiIpCgooZGVmdW4gZWds b3QtdXRmLTgtbGluZXBvcyAoKQogICJDYWxjdWxhdGUgbnVtYmVyIG9mIFVURi04IGJ5dGVzIGZy b20gbGluZSBiZWdpbm5pbmcuIgogIChsZW5ndGggKGVuY29kZS1jb2RpbmctcmVnaW9uIChlZ2xv dC0tYm9sKSAocG9pbnQpICd1dGYtOC11bml4IHQpKSkKCihkZWZ1biBlZ2xvdC11dGYtMTYtbGlu ZXBvcyAoJm9wdGlvbmFsIGxicCkKICAiQ2FsY3VsYXRlIG51bWJlciBvZiBVVEYtMTYgY29kZSB1 bml0cyBmcm9tIHBvc2l0aW9uIGdpdmVuIGJ5IExCUC4KTEJQIGRlZmF1bHRzIHRvIGBlZ2xvdC0t Ym9sJy4iCiAgKC8gKC0gKGxlbmd0aCAoZW5jb2RlLWNvZGluZy1yZWdpb24gKG9yIGxicCAoZWds b3QtLWJvbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgRml4IGdp dGh1YiM4NjAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWluIChwb2lu dCkgKHBvaW50LW1heCkpICd1dGYtMTYgdCkpCiAgICAgICAgMikKICAgICAyKSkKCihkZWZ1biBl Z2xvdC11dGYtMzItbGluZXBvcyAoKQogICJDYWxjdWxhdGUgbnVtYmVyIG9mIFVuaWNvZGUgY29k ZXBvaW50cyBmcm9tIGxpbmUgYmVnaW5uaW5nLiIKICAoLSAocG9pbnQpIChlZ2xvdC0tYm9sKSkp CgooZGVmdW4gZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24gKCZvcHRpb25hbCBwb3MpCiAgIkNv bnZlcnQgcG9pbnQgUE9TIHRvIExTUCBwb3NpdGlvbi4iCiAgKGVnbG90LS13aWRlbmluZwogICA7 OyBMU1AgbGluZSBpcyB6ZXJvLW9yaWdpbjsgZW1hY3MgaXMgb25lLW9yaWdpbi4KICAgKGxpc3Qg OmxpbmUgKDEtIChsaW5lLW51bWJlci1hdC1wb3MgcG9zIHQpKQogICAgICAgICA6Y2hhcmFjdGVy IChwcm9nbiAod2hlbiBwb3MgKGdvdG8tY2hhciBwb3MpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCBlZ2xvdC1jdXJyZW50LWxpbmVwb3MtZnVuY3Rpb24pKSkpKQoKKGRlZnZh ciBlZ2xvdC1tb3ZlLXRvLWxpbmVwb3MtZnVuY3Rpb24gIydlZ2xvdC1tb3ZlLXRvLXV0Zi0xNi1s aW5lcG9zCiAgIkZ1bmN0aW9uIHRvIG1vdmUgdG8gYSBwb3NpdGlvbiB3aXRoaW4gYSBsaW5lIHJl cG9ydGVkIGJ5IHRoZSBMU1Agc2VydmVyLgoKUGVyIHRoZSBMU1Agc3BlYywgY2hhcmFjdGVyIG9m ZnNldHMgaW4gTFNQIFBvc2l0aW9uIG9iamVjdHMgY291bnQKVVRGLTE2IGNvZGUgdW5pdHMsIG5v dCBhY3R1YWwgY29kZSBwb2ludHMuICBTbyB3aGVuIExTUCBzYXlzCnBvc2l0aW9uIDMgb2YgYSBs aW5lIGNvbnRhaW5pbmcganVzdCBcImFYYmNcIiwgd2hlcmUgWCBpcyBhIGZ1bm55Cmxvb2tpbmcg Y2hhcmFjdGVyIGluIHRoZSBVVEYtMTYgXCJzdXBwbGVtZW50YXJ5IHBsYW5lXCIsIGl0CmFjdHVh bGx5IG1lYW5zIGBiJywgbm90IGBjJy4gIFRoZSBkZWZhdWx0IHZhbHVlCmBlZ2xvdC1tb3ZlLXRv LXV0Zi0xNi1saW5lcG9zJyBhY2NvdW50cyBmb3IgdGhpcy4KClRoaXMgdmFyaWFibGUgY2FuIGFs c28gYmUgc2V0IHRvIGBlZ2xvdC1tb3ZlLXRvLXV0Zi04LWxpbmVwb3MnIG9yCmBlZ2xvdC1tb3Zl LXRvLXV0Zi0zMi1saW5lcG9zJyBmb3Igc2VydmVycyBub3QgY2xvc2VseSBmb2xsb3dpbmcKdGhl IHNwZWMuICBBbHNvLCBzaW5jZSBMU1AgMy4xNyBzZXJ2ZXIgYW5kIGNsaWVudCBtYXkgYWdyZWUg b24gYW4KZW5jb2RpbmcgYW5kIEVnbG90IHdpbGwgc2V0IHRoaXMgdmFyaWFibGUgYXV0b21hdGlj YWxseS4iKQoKKGRlZnVuIGVnbG90LW1vdmUtdG8tdXRmLTgtbGluZXBvcyAobikKICAiTW92ZSB0 byBsaW5lJ3MgTnRoIGJ5dGUgYXMgY29tcHV0ZWQgYnkgTFNQJ3MgVVRGLTggY3JpdGVyaW9uLiIK ICAobGV0KiAoKGJvbCAoZWdsb3QtLWJvbCkpCiAgICAgICAgIChnb2FsLWJ5dGUgKCsgKHBvc2l0 aW9uLWJ5dGVzIGJvbCkgbikpCiAgICAgICAgIChlb2wgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCiAg ICAoZ290by1jaGFyIGJvbCkKICAgICh3aGlsZSAoYW5kICg8IChwb3NpdGlvbi1ieXRlcyAocG9p bnQpKSBnb2FsLWJ5dGUpICg8IChwb2ludCkgZW9sKSkKICAgICAgOzsgcmF3IGJ5dGVzIHRha2Ug MiBieXRlcyBpbiB0aGUgYnVmZmVyCiAgICAgICh3aGVuICg+PSAoY2hhci1hZnRlcikgI3gzZmZm ODApIChzZXRxIGdvYWwtYnl0ZSAoMSsgZ29hbC1ieXRlKSkpCiAgICAgIChmb3J3YXJkLWNoYXIg MSkpKSkKCihkZWZ1biBlZ2xvdC1tb3ZlLXRvLXV0Zi0xNi1saW5lcG9zIChuKQogICJNb3ZlIHRv IGxpbmUncyBOdGggY29kZSB1bml0IGFzIGNvbXB1dGVkIGJ5IExTUCdzIFVURi0xNiBjcml0ZXJp b24uIgogIChsZXQqICgoYm9sIChlZ2xvdC0tYm9sKSkKICAgICAgICAgKGdvYWwtY2hhciAoKyBi b2wgbikpCiAgICAgICAgIChlb2wgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCiAgICAoZ290by1jaGFy IGJvbCkKICAgICh3aGlsZSAoYW5kICg8IChwb2ludCkgZ29hbC1jaGFyKSAoPCAocG9pbnQpIGVv bCkpCiAgICAgIDs7IGNvZGUgcG9pbnRzIGluIHRoZSAic3VwcGxlbWVudGFyeSBwbGFjZSIgdXNl IHR3byBjb2RlIHVuaXRzCiAgICAgICh3aGVuICg8PSAjeDAxMDAwMCAoY2hhci1hZnRlcikgI3gx MGZmZmYpIChzZXRxIGdvYWwtY2hhciAoMS0gZ29hbC1jaGFyKSkpCiAgICAgIChmb3J3YXJkLWNo YXIgMSkpKSkKCihkZWZ1biBlZ2xvdC1tb3ZlLXRvLXV0Zi0zMi1saW5lcG9zIChuKQogICJNb3Zl IHRvIGxpbmUncyBOdGggY29kZXBvaW50IGFzIGNvbXB1dGVkIGJ5IExTUCdzIFVURi0zMiBjcml0 ZXJpb24uIgogIDs7IFdlIGNhbm5vdCB1c2UgYG1vdmUtdG8tY29sdW1uJyBoZXJlLCBiZWNhdXNl IGl0IG1vdmVzIHRvICp2aXN1YWwqCiAgOzsgY29sdW1ucywgd2hpY2ggY2FuIGJlIGRpZmZlcmVu dCBmcm9tIExTUCBjaGFyYWN0ZXJzIGluIGNhc2Ugb2YKICA7OyBgd2hpdGVzcGFjZS1tb2RlJywg YHByZXR0aWZ5LXN5bWJvbHMtbW9kZScsIGV0Yy4gIChnaXRodWIjMjk2LAogIDs7IGdpdGh1YiMy OTcpCiAgKGdvdG8tY2hhciAobWluICgrIChlZ2xvdC0tYm9sKSBuKSAobGluZS1lbmQtcG9zaXRp b24pKSkpCgooZGVmdW4gZWdsb3QtLWxzcC1wb3NpdGlvbi10by1wb2ludCAocG9zLXBsaXN0ICZv cHRpb25hbCBtYXJrZXIpCiAgIkNvbnZlcnQgTFNQIHBvc2l0aW9uIFBPUy1QTElTVCB0byBFbWFj cyBwb2ludC4KSWYgb3B0aW9uYWwgTUFSS0VSLCByZXR1cm4gYSBtYXJrZXIgaW5zdGVhZCIKICAo c2F2ZS1leGN1cnNpb24KICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICh3aWRlbikKICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgKGZvcndhcmQtbGluZSAobWluIG1vc3QtcG9z aXRpdmUtZml4bnVtCiAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IHBvcy1wbGlz dCA6bGluZSkpKQogICAgICAodW5sZXNzIChlb2JwKSA7OyBpZiBsaW5lIHdhcyBleGNlc3NpdmUg bGVhdmUgcG9pbnQgYXQgZW9iCiAgICAgICAgKGxldCAoKGNvbCAocGxpc3QtZ2V0IHBvcy1wbGlz dCA6Y2hhcmFjdGVyKSkpCiAgICAgICAgICAodW5sZXNzICh3aG9sZW51bXAgY29sKQogICAgICAg ICAgICAoZWdsb3QtLXdhcm4KICAgICAgICAgICAgICJDYXV0aW9uOiBMU1Agc2VydmVyIHNlbnQg aW52YWxpZCBjaGFyYWN0ZXIgcG9zaXRpb24gJXMuIFVzaW5nIDAgaW5zdGVhZC4iCiAgICAgICAg ICAgICBjb2wpCiAgICAgICAgICAgIChzZXRxIGNvbCAwKSkKICAgICAgICAgIChmdW5jYWxsIGVn bG90LW1vdmUtdG8tbGluZXBvcy1mdW5jdGlvbiBjb2wpKSkKICAgICAgKGlmIG1hcmtlciAoY29w eS1tYXJrZXIgKHBvaW50LW1hcmtlcikpIChwb2ludCkpKSkpCgoMCjs7OyBNb3JlIGhlbHBlcnMK KGRlZmNvbnN0IGVnbG90LS11cmktcGF0aC1hbGxvd2VkLWNoYXJzCiAgKGxldCAoKHZlYyAoY29w eS1zZXF1ZW5jZSB1cmwtcGF0aC1hbGxvd2VkLWNoYXJzKSkpCiAgICAoYXNldCB2ZWMgPzogbmls KSA7OyBzZWUgZ2l0aHViIzYzOQogICAgdmVjKQogICJMaWtlIGB1cmwtcGF0aC1hbGxvd2VkLWNo YXJzJyBidXQgbW9yZSByZXN0cmljdGl2ZS4iKQoKKGRlZnVuIGVnbG90LS1zbmlwcGV0LWV4cGFu c2lvbi1mbiAoKQogICJDb21wdXRlIGEgZnVuY3Rpb24gdG8gZXhwYW5kIHNuaXBwZXRzLgpEb3Vi bGVzIGFzIGFuIGluZGljYXRvciBvZiBzbmlwcGV0IHN1cHBvcnQuIgogIChhbmQgKGZib3VuZHAg J3lhcy1taW5vci1tb2RlKQogICAgICAgKGxhbWJkYSAoJnJlc3QgYXJncykKICAgICAgICAgKHdp dGgtbm8td2FybmluZ3MKICAgICAgICAgICAodW5sZXNzIChib3VuZC1hbmQtdHJ1ZS1wIHlhcy1t aW5vci1tb2RlKSAoeWFzLW1pbm9yLW1vZGUgMSkpCiAgICAgICAgICAgKGFwcGx5ICMneWFzLWV4 cGFuZC1zbmlwcGV0IGFyZ3MpKSkpKQoKKGRlZnVuIGVnbG90LS1mb3JtYXQtbWFya3VwIChtYXJr dXApCiAgIkZvcm1hdCBNQVJLVVAgYWNjb3JkaW5nIHRvIExTUCdzIHNwZWMuIgogIChwY2FzZS1s ZXQgKChgKCxzdHJpbmcgLG1vZGUpCiAgICAgICAgICAgICAgIChpZiAoc3RyaW5ncCBtYXJrdXAp IChsaXN0IG1hcmt1cCAnZ2ZtLXZpZXctbW9kZSkKICAgICAgICAgICAgICAgICAobGlzdCAocGxp c3QtZ2V0IG1hcmt1cCA6dmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlIChwbGlz dC1nZXQgbWFya3VwIDpraW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgKCJtYXJrZG93biIg J2dmbS12aWV3LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAoInBsYWludGV4dCIgJ3Rl eHQtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIChfIG1ham9yLW1vZGUpKSkpKSkKICAg ICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgIChzZXRxLWxvY2FsIG1hcmtkb3duLWZvbnRpZnktY29k ZS1ibG9ja3MtbmF0aXZlbHkgdCkKICAgICAgKGluc2VydCBzdHJpbmcpCiAgICAgIChsZXQgKChp bmhpYml0LW1lc3NhZ2UgdCkKICAgICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwpCiAgICAg ICAgICAgIG1hdGNoKQogICAgICAgIChpZ25vcmUtZXJyb3JzIChkZWxheS1tb2RlLWhvb2tzIChm dW5jYWxsIG1vZGUpKSkKICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkKICAgICAgICAoZ290by1j aGFyIChwb2ludC1taW4pKQogICAgICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKICAg ICAgICAgICh3aGVuIChmYm91bmRwICd0ZXh0LXByb3BlcnR5LXNlYXJjaC1mb3J3YXJkKSA7OyBG SVhNRTogdXNlIGNvbXBhdAogICAgICAgICAgICAod2hpbGUgKHNldHEgbWF0Y2ggKHRleHQtcHJv cGVydHktc2VhcmNoLWZvcndhcmQgJ2ludmlzaWJsZSkpCiAgICAgICAgICAgICAgKGRlbGV0ZS1y ZWdpb24gKHByb3AtbWF0Y2gtYmVnaW5uaW5nIG1hdGNoKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwcm9wLW1hdGNoLWVuZCBtYXRjaCkpKSkpCiAgICAgICAgKHN0cmluZy10cmltIChi dWZmZXItc3RyaW5nKSkpKSkpCgooZGVmdW4gZWdsb3QtLXJlYWQtc2VydmVyIChwcm9tcHQgJm9w dGlvbmFsIGRvbnQtaWYtanVzdC10aGUtb25lKQogICJSZWFkIGEgcnVubmluZyBFZ2xvdCBzZXJ2 ZXIgZnJvbSBtaW5pYnVmZmVyIHVzaW5nIFBST01QVC4KSWYgRE9OVC1JRi1KVVNULVRIRS1PTkUg YW5kIHRoZXJlJ3Mgb25seSBvbmUgc2VydmVyLCBkb24ndCBwcm9tcHQKYW5kIGp1c3QgcmV0dXJu IGl0LiAgUFJPTVBUIHNob3VsZG4ndCBlbmQgd2l0aCBhIHF1ZXN0aW9uIG1hcmsuIgogIChsZXQg KChzZXJ2ZXJzIChjbC1sb29wIGZvciBzZXJ2ZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAg YmVpbmcgaGFzaC12YWx1ZXMgb2YgZWdsb3QtLXNlcnZlcnMtYnktcHJvamVjdAogICAgICAgICAg ICAgICAgICAgICAgICAgIGFwcGVuZCBzZXJ2ZXJzKSkKICAgICAgICAobmFtZSAobGFtYmRhIChz cnYpCiAgICAgICAgICAgICAgICAoZm9ybWF0ICIlcyAlcyIgKGVnbG90LXByb2plY3Qtbmlja25h bWUgc3J2KQogICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLW1ham9yLW1vZGVzIHNydikp KSkpCiAgICAoY29uZCAoKG51bGwgc2VydmVycykKICAgICAgICAgICAoZWdsb3QtLWVycm9yICJO byBzZXJ2ZXJzISIpKQogICAgICAgICAgKChvciAoY2RyIHNlcnZlcnMpIChub3QgZG9udC1pZi1q dXN0LXRoZS1vbmUpKQogICAgICAgICAgIChsZXQqICgoZGVmYXVsdCAod2hlbi1sZXQgKChjdXJy ZW50IChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIG5hbWUgY3VycmVudCkpKQogICAgICAgICAgICAgICAgICAocmVhZCAoY29tcGxl dGluZy1yZWFkCiAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgZGVmYXVsdAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVzIChkZWZhdWx0ICVzKT8gIiBwcm9tcHQgZGVm YXVsdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCBwcm9tcHQgIj8gIikpCiAg ICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyIG5hbWUgc2VydmVycykKICAgICAgICAgICAg ICAgICAgICAgICAgIG5pbCB0CiAgICAgICAgICAgICAgICAgICAgICAgICBuaWwgbmlsCiAgICAg ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0KSkpCiAgICAgICAgICAgICAoY2wtZmluZCByZWFk IHNlcnZlcnMgOmtleSBuYW1lIDp0ZXN0ICMnZXF1YWwpKSkKICAgICAgICAgICh0IChjYXIgc2Vy dmVycykpKSkpCgooZGVmdW4gZWdsb3QtLXRyYW1waXNoLXAgKHNlcnZlcikKICAiVGVsbCBpZiBT RVJWRVIncyBwcm9qZWN0IHJvb3QgaXMgYGZpbGUtcmVtb3RlLXAnLiIKICAoZmlsZS1yZW1vdGUt cCAocHJvamVjdC1yb290IChlZ2xvdC0tcHJvamVjdCBzZXJ2ZXIpKSkpCgooZGVmdW4gZWdsb3Qt LXBsaXN0LWtleXMgKHBsaXN0KSAiR2V0IGtleXMgb2YgYSBwbGlzdC4iCiAgKGNsLWxvb3AgZm9y IChrIF92KSBvbiBwbGlzdCBieSAjJ2NkZHIgY29sbGVjdCBrKSkKCihkZWZhbGlhcyAnZWdsb3Qt LWVuc3VyZS1saXN0CiAgKGlmIChmYm91bmRwICdlbnN1cmUtbGlzdCkgIydlbnN1cmUtbGlzdAog ICAgKGxhbWJkYSAoeCkgKGlmIChsaXN0cCB4KSB4IChsaXN0IHgpKSkpKQoKDAo7OzsgTWlub3Ig bW9kZXMKOzs7CihkZWZ2YXIgZWdsb3QtbW9kZS1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJz ZS1rZXltYXApKSkKICAgIChkZWZpbmUta2V5IG1hcCBbcmVtYXAgZGlzcGxheS1sb2NhbC1oZWxw XSAjJ2VsZG9jLWRvYy1idWZmZXIpCiAgICBtYXApKQoKKGRlZnZhci1sb2NhbCBlZ2xvdC0tY3Vy cmVudC1mbHltYWtlLXJlcG9ydC1mbiBuaWwKICAiQ3VycmVudCBmbHltYWtlIHJlcG9ydCBmdW5j dGlvbiBmb3IgdGhpcyBidWZmZXIuIikKCihkZWZ2YXItbG9jYWwgZWdsb3QtLXNhdmVkLWJpbmRp bmdzIG5pbAogICJCaW5kaW5ncyBzYXZlZCBieSBgZWdsb3QtLXNldHEtc2F2aW5nJy4iKQoKKGRl ZnZhciBlZ2xvdC1zdGF5LW91dC1vZiAnKCkKICAiTGlzdCBvZiBFbWFjcyB0aGluZ3MgdGhhdCBF Z2xvdCBzaG91bGQgdHJ5IHRvIHN0YXkgb2YuCkVhY2ggZWxlbWVudCBpcyBhIHN0cmluZywgYSBz eW1ib2wsIG9yIGEgcmVnZXhwIHdoaWNoIGlzIG1hdGNoZWQKYWdhaW5zdCBhIHZhcmlhYmxlJ3Mg bmFtZS4gIEV4YW1wbGVzIGluY2x1ZGUgdGhlIHN0cmluZwpcImNvbXBhbnlcIiBvciB0aGUgc3lt Ym9sIGB4cmVmJy4KCkJlZm9yZSBFZ2xvdCBzdGFydHMgXCJtYW5hZ2luZ1wiIGEgcGFydGljdWxh ciBidWZmZXIsIGl0Cm9waW5pb25hdGVkbHkgc2V0cyBzb21lIHBlcmlwaGVyYWwgRW1hY3MgZmFj aWxpdGllcywgc3VjaCBhcwpGbHltYWtlLCBYcmVmIGFuZCBDb21wYW55LiAgVGhlc2Ugb3ZlcnJp ZGluZyBzZXR0aW5ncyBoZWxwIGVuc3VyZQpjb25zaXN0ZW50IEVnbG90IGJlaGF2aW9yIGFuZCBv bmx5IHN0YXkgaW4gcGxhY2UgdW50aWwKXCJtYW5hZ2luZ1wiIHN0b3BzICh1c3VhbGx5IHZpYSBg ZWdsb3Qtc2h1dGRvd24nKSwgd2hlcmV1cG9uIHRoZQpwcmV2aW91cyBzZXR0aW5ncyBhcmUgcmVz dG9yZWQuCgpIb3dldmVyLCBpZiB5b3Ugd2lzaCBmb3IgRWdsb3QgdG8gc3RheSBvdXQgb2YgYSBw YXJ0aWN1bGFyIEVtYWNzCmZhY2lsaXR5IHRoYXQgeW91J2QgbGlrZSB0byBrZWVwIGNvbnRyb2wg b2YgYWRkIGFuIGVsZW1lbnQgdG8KdGhpcyBsaXN0IGFuZCBFZ2xvdCB3aWxsIHJlZnJhaW4gZnJv bSBzZXR0aW5nIGl0LgoKRm9yIGV4YW1wbGUsIHRvIGtlZXAgeW91ciBDb21wYW55IGN1c3RvbWl6 YXRpb24sIGFkZCB0aGUgc3ltYm9sCmBjb21wYW55JyB0byB0aGlzIHZhcmlhYmxlLiIpCgooZGVm dW4gZWdsb3QtLXN0YXktb3V0LW9mLXAgKHN5bWJvbCkKICAiVGVsbCBpZiBFZ2xvdCBzaG91bGQg c3RheSBvdXQgb2YgU1lNQk9MLiIKICAoY2wtZmluZCAoc3ltYm9sLW5hbWUgc3ltYm9sKSBlZ2xv dC1zdGF5LW91dC1vZgogICAgICAgICAgIDp0ZXN0IChsYW1iZGEgKHMgdGhpbmcpCiAgICAgICAg ICAgICAgICAgICAobGV0ICgocmUgKGlmIChzeW1ib2xwIHRoaW5nKSAoc3ltYm9sLW5hbWUgdGhp bmcpIHRoaW5nKSkpCiAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctbWF0Y2ggcmUgcykpKSkp CgooZGVmbWFjcm8gZWdsb3QtLXNldHEtc2F2aW5nIChzeW1ib2wgYmluZGluZykKICBgKHVubGVz cyAob3IgKG5vdCAoYm91bmRwICcsc3ltYm9sKSkgKGVnbG90LS1zdGF5LW91dC1vZi1wICcsc3lt Ym9sKSkKICAgICAocHVzaCAoY29ucyAnLHN5bWJvbCAoc3ltYm9sLXZhbHVlICcsc3ltYm9sKSkg ZWdsb3QtLXNhdmVkLWJpbmRpbmdzKQogICAgIChzZXRxLWxvY2FsICxzeW1ib2wgLGJpbmRpbmcp KSkKCihkZWZ1biBlZ2xvdC1tYW5hZ2VkLXAgKCkKICAiVGVsbCBpZiBjdXJyZW50IGJ1ZmZlciBp cyBtYW5hZ2VkIGJ5IEVnbG90LiIKICBlZ2xvdC0tbWFuYWdlZC1tb2RlKQoKKGRlZnZhciBlZ2xv dC1tYW5hZ2VkLW1vZGUtaG9vayBuaWwKICAiQSBob29rIHJ1biBieSBFZ2xvdCBhZnRlciBpdCBz dGFydGVkL3N0b3BwZWQgbWFuYWdpbmcgYSBidWZmZXIuClVzZSBgZWdsb3QtbWFuYWdlZC1wJyB0 byBkZXRlcm1pbmUgaWYgY3VycmVudCBidWZmZXIgaXMgbWFuYWdlZC4iKQoKKGRlZmluZS1taW5v ci1tb2RlIGVnbG90LS1tYW5hZ2VkLW1vZGUKICAiTW9kZSBmb3Igc291cmNlIGJ1ZmZlcnMgbWFu YWdlZCBieSBzb21lIEVnbG90IHByb2plY3QuIgogIDppbml0LXZhbHVlIG5pbCA6bGlnaHRlciBu aWwgOmtleW1hcCBlZ2xvdC1tb2RlLW1hcAogIChjb25kCiAgIChlZ2xvdC0tbWFuYWdlZC1tb2Rl CiAgICAocGNhc2UgKHBsaXN0LWdldCAoZWdsb3QtLWNhcGFiaWxpdGllcyAoZWdsb3QtY3VycmVu dC1zZXJ2ZXIpKQogICAgICAgICAgICAgICAgICAgICAgOnBvc2l0aW9uRW5jb2RpbmcpCiAgICAg ICgidXRmLTMyIgogICAgICAgKGVnbG90LS1zZXRxLXNhdmluZyBlZ2xvdC1jdXJyZW50LWxpbmVw b3MtZnVuY3Rpb24gIydlZ2xvdC11dGYtMzItbGluZXBvcykKICAgICAgIChlZ2xvdC0tc2V0cS1z YXZpbmcgZWdsb3QtbW92ZS10by1saW5lcG9zLWZ1bmN0aW9uICMnZWdsb3QtbW92ZS10by11dGYt MzItbGluZXBvcykpCiAgICAgICgidXRmLTgiCiAgICAgICAoZWdsb3QtLXNldHEtc2F2aW5nIGVn bG90LWN1cnJlbnQtbGluZXBvcy1mdW5jdGlvbiAjJ2VnbG90LXV0Zi04LWxpbmVwb3MpCiAgICAg ICAoZWdsb3QtLXNldHEtc2F2aW5nIGVnbG90LW1vdmUtdG8tbGluZXBvcy1mdW5jdGlvbiAjJ2Vn bG90LW1vdmUtdG8tdXRmLTgtbGluZXBvcykpKQogICAgKGFkZC1ob29rICdhZnRlci1jaGFuZ2Ut ZnVuY3Rpb25zICMnZWdsb3QtLWFmdGVyLWNoYW5nZSBuaWwgdCkKICAgIChhZGQtaG9vayAnYmVm b3JlLWNoYW5nZS1mdW5jdGlvbnMgIydlZ2xvdC0tYmVmb3JlLWNoYW5nZSBuaWwgdCkKICAgIChh ZGQtaG9vayAna2lsbC1idWZmZXItaG9vayAjJ2VnbG90LS1tYW5hZ2VkLW1vZGUtb2ZmIG5pbCB0 KQogICAgOzsgUHJlcGVuZCAiZGlkQ2xvc2UiIHRvIHRoZSBob29rIGFmdGVyIHRoZSAibm9ub2Zm Iiwgc28gaXQgd2lsbCBydW4gZmlyc3QKICAgIChhZGQtaG9vayAna2lsbC1idWZmZXItaG9vayAj J2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENsb3NlIG5pbCB0KQogICAgKGFkZC1ob29r ICdiZWZvcmUtcmV2ZXJ0LWhvb2sgIydlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC9kaWRDbG9z ZSBuaWwgdCkKICAgIChhZGQtaG9vayAnYWZ0ZXItcmV2ZXJ0LWhvb2sgIydlZ2xvdC0tYWZ0ZXIt cmV2ZXJ0LWhvb2sgbmlsIHQpCiAgICAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydlZ2xv dC0tc2lnbmFsLXRleHREb2N1bWVudC93aWxsU2F2ZSBuaWwgdCkKICAgIChhZGQtaG9vayAnYWZ0 ZXItc2F2ZS1ob29rICMnZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkU2F2ZSBuaWwgdCkK ICAgICh1bmxlc3MgKGVnbG90LS1zdGF5LW91dC1vZi1wICd4cmVmKQogICAgICAoYWRkLWhvb2sg J3hyZWYtYmFja2VuZC1mdW5jdGlvbnMgIydlZ2xvdC14cmVmLWJhY2tlbmQgbmlsIHQpKQogICAg KGFkZC1ob29rICdjb21wbGV0aW9uLWF0LXBvaW50LWZ1bmN0aW9ucyAjJ2VnbG90LWNvbXBsZXRp b24tYXQtcG9pbnQgbmlsIHQpCiAgICAoYWRkLWhvb2sgJ2NvbXBsZXRpb24taW4tcmVnaW9uLW1v ZGUtaG9vayAjJ2VnbG90LS1jYXBmLXNlc3Npb24tZmx1c2ggbmlsIHQpCiAgICAoYWRkLWhvb2sg J2NvbXBhbnktYWZ0ZXItY29tcGxldGlvbi1ob29rICMnZWdsb3QtLWNhcGYtc2Vzc2lvbi1mbHVz aCBuaWwgdCkKICAgIChhZGQtaG9vayAnY2hhbmdlLW1ham9yLW1vZGUtaG9vayAjJ2VnbG90LS1t YW5hZ2VkLW1vZGUtb2ZmIG5pbCB0KQogICAgKGFkZC1ob29rICdwb3N0LXNlbGYtaW5zZXJ0LWhv b2sgIydlZ2xvdC0tcG9zdC1zZWxmLWluc2VydC1ob29rIG5pbCB0KQogICAgKGFkZC1ob29rICdw cmUtY29tbWFuZC1ob29rICMnZWdsb3QtLXByZS1jb21tYW5kLWhvb2sgbmlsIHQpCiAgICAoZWds b3QtLXNldHEtc2F2aW5nIHhyZWYtcHJvbXB0LWZvci1pZGVudGlmaWVyIG5pbCkKICAgIChlZ2xv dC0tc2V0cS1zYXZpbmcgZmx5bWFrZS1kaWFnbm9zdGljLWZ1bmN0aW9ucyAnKGVnbG90LWZseW1h a2UtYmFja2VuZCkpCiAgICAoZWdsb3QtLXNldHEtc2F2aW5nIGNvbXBhbnktYmFja2VuZHMgJyhj b21wYW55LWNhcGYpKQogICAgKGVnbG90LS1zZXRxLXNhdmluZyBjb21wYW55LXRvb2x0aXAtYWxp Z24tYW5ub3RhdGlvbnMgdCkKICAgIChlZ2xvdC0tc2V0cS1zYXZpbmcgZWxkb2MtZG9jdW1lbnRh dGlvbi1zdHJhdGVneQogICAgICAgICAgICAgICAgICAgICAgICAjJ2VsZG9jLWRvY3VtZW50YXRp b24tY29tcG9zZSkKICAgICh1bmxlc3MgKGVnbG90LS1zdGF5LW91dC1vZi1wICdpbWVudSkKICAg ICAgKGFkZC1mdW5jdGlvbiA6YmVmb3JlLXVudGlsIChsb2NhbCAnaW1lbnUtY3JlYXRlLWluZGV4 LWZ1bmN0aW9uKQogICAgICAgICAgICAgICAgICAgICMnZWdsb3QtaW1lbnUpKQogICAgKHVubGVz cyAoZWdsb3QtLXN0YXktb3V0LW9mLXAgJ2ZseW1ha2UpIChmbHltYWtlLW1vZGUgMSkpCiAgICAo dW5sZXNzIChlZ2xvdC0tc3RheS1vdXQtb2YtcCAnZWxkb2MpCiAgICAgIChhZGQtaG9vayAnZWxk b2MtZG9jdW1lbnRhdGlvbi1mdW5jdGlvbnMgIydlZ2xvdC1ob3Zlci1lbGRvYy1mdW5jdGlvbgog ICAgICAgICAgICAgICAgbmlsIHQpCiAgICAgIChhZGQtaG9vayAnZWxkb2MtZG9jdW1lbnRhdGlv bi1mdW5jdGlvbnMgIydlZ2xvdC1zaWduYXR1cmUtZWxkb2MtZnVuY3Rpb24KICAgICAgICAgICAg ICAgIG5pbCB0KQogICAgICAoZWxkb2MtbW9kZSAxKSkKICAgIChjbC1wdXNobmV3IChjdXJyZW50 LWJ1ZmZlcikgKGVnbG90LS1tYW5hZ2VkLWJ1ZmZlcnMgKGVnbG90LWN1cnJlbnQtc2VydmVyKSkp KQogICAodAogICAgKHJlbW92ZS1ob29rICdhZnRlci1jaGFuZ2UtZnVuY3Rpb25zICMnZWdsb3Qt LWFmdGVyLWNoYW5nZSB0KQogICAgKHJlbW92ZS1ob29rICdiZWZvcmUtY2hhbmdlLWZ1bmN0aW9u cyAjJ2VnbG90LS1iZWZvcmUtY2hhbmdlIHQpCiAgICAocmVtb3ZlLWhvb2sgJ2tpbGwtYnVmZmVy LWhvb2sgIydlZ2xvdC0tbWFuYWdlZC1tb2RlLW9mZiB0KQogICAgKHJlbW92ZS1ob29rICdraWxs LWJ1ZmZlci1ob29rICMnZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2xvc2UgdCkKICAg IChyZW1vdmUtaG9vayAnYmVmb3JlLXJldmVydC1ob29rICMnZWdsb3QtLXNpZ25hbC10ZXh0RG9j dW1lbnQvZGlkQ2xvc2UgdCkKICAgIChyZW1vdmUtaG9vayAnYWZ0ZXItcmV2ZXJ0LWhvb2sgIydl Z2xvdC0tYWZ0ZXItcmV2ZXJ0LWhvb2sgdCkKICAgIChyZW1vdmUtaG9vayAnYmVmb3JlLXNhdmUt aG9vayAjJ2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L3dpbGxTYXZlIHQpCiAgICAocmVtb3Zl LWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZFNh dmUgdCkKICAgIChyZW1vdmUtaG9vayAneHJlZi1iYWNrZW5kLWZ1bmN0aW9ucyAjJ2VnbG90LXhy ZWYtYmFja2VuZCB0KQogICAgKHJlbW92ZS1ob29rICdjb21wbGV0aW9uLWF0LXBvaW50LWZ1bmN0 aW9ucyAjJ2VnbG90LWNvbXBsZXRpb24tYXQtcG9pbnQgdCkKICAgIChyZW1vdmUtaG9vayAnY29t cGxldGlvbi1pbi1yZWdpb24tbW9kZS1ob29rICMnZWdsb3QtLWNhcGYtc2Vzc2lvbi1mbHVzaCB0 KQogICAgKHJlbW92ZS1ob29rICdjb21wYW55LWFmdGVyLWNvbXBsZXRpb24taG9vayAjJ2VnbG90 LS1jYXBmLXNlc3Npb24tZmx1c2ggdCkKICAgIChyZW1vdmUtaG9vayAnY2hhbmdlLW1ham9yLW1v ZGUtaG9vayAjJ2VnbG90LS1tYW5hZ2VkLW1vZGUtb2ZmIHQpCiAgICAocmVtb3ZlLWhvb2sgJ3Bv c3Qtc2VsZi1pbnNlcnQtaG9vayAjJ2VnbG90LS1wb3N0LXNlbGYtaW5zZXJ0LWhvb2sgdCkKICAg IChyZW1vdmUtaG9vayAncHJlLWNvbW1hbmQtaG9vayAjJ2VnbG90LS1wcmUtY29tbWFuZC1ob29r IHQpCiAgICAocmVtb3ZlLWhvb2sgJ2VsZG9jLWRvY3VtZW50YXRpb24tZnVuY3Rpb25zICMnZWds b3QtaG92ZXItZWxkb2MtZnVuY3Rpb24gdCkKICAgIChyZW1vdmUtaG9vayAnZWxkb2MtZG9jdW1l bnRhdGlvbi1mdW5jdGlvbnMgIydlZ2xvdC1zaWduYXR1cmUtZWxkb2MtZnVuY3Rpb24gdCkKICAg IChjbC1sb29wIGZvciAodmFyIC4gc2F2ZWQtYmluZGluZykgaW4gZWdsb3QtLXNhdmVkLWJpbmRp bmdzCiAgICAgICAgICAgICBkbyAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlIHZhcikgc2F2ZWQt YmluZGluZykpCiAgICAocmVtb3ZlLWZ1bmN0aW9uIChsb2NhbCAnaW1lbnUtY3JlYXRlLWluZGV4 LWZ1bmN0aW9uKSAjJ2VnbG90LWltZW51KQogICAgKHdoZW4gZWdsb3QtLWN1cnJlbnQtZmx5bWFr ZS1yZXBvcnQtZm4KICAgICAgKGVnbG90LS1yZXBvcnQtdG8tZmx5bWFrZSBuaWwpCiAgICAgIChz ZXRxIGVnbG90LS1jdXJyZW50LWZseW1ha2UtcmVwb3J0LWZuIG5pbCkpCiAgICAobGV0ICgoc2Vy dmVyIGVnbG90LS1jYWNoZWQtc2VydmVyKSkKICAgICAgKHNldHEgZWdsb3QtLWNhY2hlZC1zZXJ2 ZXIgbmlsKQogICAgICAod2hlbiBzZXJ2ZXIKICAgICAgICAoc2V0ZiAoZWdsb3QtLW1hbmFnZWQt YnVmZmVycyBzZXJ2ZXIpCiAgICAgICAgICAgICAgKGRlbHEgKGN1cnJlbnQtYnVmZmVyKSAoZWds b3QtLW1hbmFnZWQtYnVmZmVycyBzZXJ2ZXIpKSkKICAgICAgICAod2hlbiAoYW5kIGVnbG90LWF1 dG9zaHV0ZG93bgogICAgICAgICAgICAgICAgICAgKG51bGwgKGVnbG90LS1tYW5hZ2VkLWJ1ZmZl cnMgc2VydmVyKSkpCiAgICAgICAgICAoZWdsb3Qtc2h1dGRvd24gc2VydmVyKSkpKSkpKQoKKGRl ZnVuIGVnbG90LS1tYW5hZ2VkLW1vZGUtb2ZmICgpCiAgIlR1cm4gb2ZmIGBlZ2xvdC0tbWFuYWdl ZC1tb2RlJyB1bmNvbmRpdGlvbmFsbHkuIgogIChyZW1vdmUtb3ZlcmxheXMgbmlsIG5pbCAnZWds b3QtLW92ZXJsYXkgdCkKICAoZWdsb3QtaW5sYXktaGludHMtbW9kZSAtMSkKICAoZWdsb3QtLW1h bmFnZWQtbW9kZSAtMSkpCgooZGVmdW4gZWdsb3QtY3VycmVudC1zZXJ2ZXIgKCkKICAiUmV0dXJu IGxvZ2ljYWwgRWdsb3Qgc2VydmVyIGZvciBjdXJyZW50IGJ1ZmZlciwgbmlsIGlmIG5vbmUuIgog IChzZXRxIGVnbG90LS1jYWNoZWQtc2VydmVyCiAgICAgICAgKG9yIGVnbG90LS1jYWNoZWQtc2Vy dmVyCiAgICAgICAgICAgIChhbmQgKG5vdCAoZXEgbWFqb3ItbW9kZSAnZnVuZGFtZW50YWwtbW9k ZSkpIDsgZ2gjMTMzMAogICAgICAgICAgICAgICAgIChvcgogICAgICAgICAgICAgICAgICAoY2wt ZmluZC1pZiAjJ2VnbG90LS1sYW5ndWFnZUlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChnZXRoYXNoIChlZ2xvdC0tY3VycmVudC1wcm9qZWN0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0KSkKICAgICAgICAgICAg ICAgICAgKGFuZCBlZ2xvdC1leHRlbmQtdG8teHJlZgogICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlci1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAoZ2V0aGFzaCAoZXhwYW5kLWZp bGUtbmFtZSBidWZmZXItZmlsZS1uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVnbG90LS1zZXJ2ZXJzLWJ5LXhyZWZlZC1maWxlKSkpKSkpKQoKKGRlZnVuIGVnbG90LS1jdXJy ZW50LXNlcnZlci1vci1sb3NlICgpCiAgIlJldHVybiBjdXJyZW50IGxvZ2ljYWwgRWdsb3Qgc2Vy dmVyIGNvbm5lY3Rpb24gb3IgZXJyb3IuIgogIChvciAoZWdsb3QtY3VycmVudC1zZXJ2ZXIpCiAg ICAgIChqc29ucnBjLWVycm9yICJObyBjdXJyZW50IEpTT04tUlBDIGNvbm5lY3Rpb24iKSkpCgoo ZGVmdmFyLWxvY2FsIGVnbG90LS1kaWFnbm9zdGljcyBuaWwKICAiRmx5bWFrZSBkaWFnbm9zdGlj cyBmb3IgdGhpcyBidWZmZXIuIikKCihkZWZ2YXIgcmV2ZXJ0LWJ1ZmZlci1wcmVzZXJ2ZS1tb2Rl cykKKGRlZnVuIGVnbG90LS1hZnRlci1yZXZlcnQtaG9vayAoKQogICJFZ2xvdCdzIGBhZnRlci1y ZXZlcnQtaG9vaycuIgogICh3aGVuIHJldmVydC1idWZmZXItcHJlc2VydmUtbW9kZXMgKGVnbG90 LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZE9wZW4pKSkKCihkZWZ1biBlZ2xvdC0tbWF5YmUtYWN0 aXZhdGUtZWRpdGluZy1tb2RlICgpCiAgIk1heWJlIGFjdGl2YXRlIGBlZ2xvdC0tbWFuYWdlZC1t b2RlJy4KCklmIGl0IGlzIGFjdGl2YXRlZCwgYWxzbyBzaWduYWwgdGV4dERvY3VtZW50L2RpZE9w ZW4uIgogICh1bmxlc3MgZWdsb3QtLW1hbmFnZWQtbW9kZQogICAgOzsgQ2FsbGVkIHdoZW4gYHJl dmVydC1idWZmZXItaW4tcHJvZ3Jlc3MtcCcgaXMgdCBidXQKICAgIDs7IGByZXZlcnQtYnVmZmVy LXByZXNlcnZlLW1vZGVzJyBpcyBuaWwuCiAgICAod2hlbiAoYW5kIGJ1ZmZlci1maWxlLW5hbWUg KGVnbG90LWN1cnJlbnQtc2VydmVyKSkKICAgICAgKHNldHEgZWdsb3QtLWRpYWdub3N0aWNzIG5p bCkKICAgICAgKGVnbG90LS1tYW5hZ2VkLW1vZGUpCiAgICAgIChlZ2xvdC0tc2lnbmFsLXRleHRE b2N1bWVudC9kaWRPcGVuKQogICAgICA7OyBSdW4gdXNlciBob29rIGFmdGVyICd0ZXh0RG9jdW1l bnQvZGlkT3Blbicgc28gc2VydmVyIGtub3dzCiAgICAgIDs7IGFib3V0IHRoZSBidWZmZXIuCiAg ICAgIChlZ2xvdC1pbmxheS1oaW50cy1tb2RlIDEpCiAgICAgIChydW4taG9va3MgJ2VnbG90LW1h bmFnZWQtbW9kZS1ob29rKSkpKQoKKGFkZC1ob29rICdhZnRlci1jaGFuZ2UtbWFqb3ItbW9kZS1o b29rICMnZWdsb3QtLW1heWJlLWFjdGl2YXRlLWVkaXRpbmctbW9kZSkKCihkZWZ1biBlZ2xvdC1j bGVhci1zdGF0dXMgKHNlcnZlcikKICAiQ2xlYXIgdGhlIGxhc3QgSlNPTlJQQyBlcnJvciBmb3Ig U0VSVkVSLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1s b3NlKSkpCiAgKHNldGYgKGpzb25ycGMtbGFzdC1lcnJvciBzZXJ2ZXIpIG5pbCkpCgoMCjs7OyBN b2RlLWxpbmUsIG1lbnUgYW5kIG90aGVyIHN1Z2FyCjs7OwooZGVmdmFyIGVnbG90LS1tb2RlLWxp bmUtZm9ybWF0IGAoOmV2YWwgKGVnbG90LS1tb2RlLWxpbmUtZm9ybWF0KSkpCgoocHV0ICdlZ2xv dC0tbW9kZS1saW5lLWZvcm1hdCAncmlza3ktbG9jYWwtdmFyaWFibGUgdCkKCihkZWZ1biBlZ2xv dC0tbW91c2UtY2FsbCAod2hhdCAmb3B0aW9uYWwgdXBkYXRlLW1vZGUtbGluZSkKICAiTWFrZSBh biBpbnRlcmFjdGl2ZSBsYW1iZGEgZm9yIGNhbGxpbmcgV0hBVCB3aXRoIHRoZSBtb3VzZS4iCiAg KGxhbWJkYSAoZXZlbnQpCiAgICAoaW50ZXJhY3RpdmUgImUiKQogICAgKGxldCAoKHN0YXJ0IChl dmVudC1zdGFydCBldmVudCkpKSAod2l0aC1zZWxlY3RlZC13aW5kb3cgKHBvc24td2luZG93IHN0 YXJ0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vy c2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh ciAob3IgKHBvc24tcG9pbnQgc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgd2hhdCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIHVwZGF0ZS1tb2RlLWxpbmUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcmNlLW1vZGUt bGluZS11cGRhdGUgdCkpKSkpKSkKCihkZWZ1biBlZ2xvdC1tYW51YWwgKCkgIlJlYWQgRWdsb3Qn cyBtYW51YWwuIgogICAgICAgKGRlY2xhcmUgKG9ic29sZXRlIGluZm8gIjEuMTAiKSkKICAgICAg IChpbnRlcmFjdGl2ZSkgKGluZm8gIihlZ2xvdCkiKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBl Z2xvdC11cGdyYWRlLWVnbG90ICgmcmVzdCBfKSAiVXBkYXRlIEVnbG90IHRvIGxhdGVzdCB2ZXJz aW9uLiIKICAoaW50ZXJhY3RpdmUpCiAgKHdpdGgtbm8td2FybmluZ3MKICAgIChyZXF1aXJlICdw YWNrYWdlKQogICAgKHVubGVzcyBwYWNrYWdlLWFyY2hpdmUtY29udGVudHMgKHBhY2thZ2UtcmVm cmVzaC1jb250ZW50cykpCiAgICAod2hlbi1sZXQgKChleGlzdGluZyAoY2FkciAoYXNzb2MgJ2Vn bG90IHBhY2thZ2UtYWxpc3QpKSkpCiAgICAgIChwYWNrYWdlLWRlbGV0ZSBleGlzdGluZyB0KSkK ICAgIChwYWNrYWdlLWluc3RhbGwgKGNhZHIgKGFzc29jICdlZ2xvdCBwYWNrYWdlLWFyY2hpdmUt Y29udGVudHMpKSkpKQoKKGVhc3ktbWVudS1kZWZpbmUgZWdsb3QtbWVudSBuaWwgIkVnbG90Igog IGAoIkVnbG90IgogICAgOzsgQ29tbWFuZHMgZm9yIGdldHRpbmcgaW5mb3JtYXRpb24gYW5kIGN1 c3RvbWl6YXRpb24uCiAgICBbIkN1c3RvbWl6ZSBFZ2xvdCIgKGxhbWJkYSAoKSAoaW50ZXJhY3Rp dmUpIChjdXN0b21pemUtZ3JvdXAgImVnbG90IikpXQogICAgIi0tIgogICAgOzsgeHJlZiBsaWtl IGNvbW1hbmRzLgogICAgWyJGaW5kIGRlZmluaXRpb25zIiB4cmVmLWZpbmQtZGVmaW5pdGlvbnMK ICAgICA6aGVscCAiRmluZCBkZWZpbml0aW9ucyBvZiBpZGVudGlmaWVyIGF0IHBvaW50IgogICAg IDphY3RpdmUgKGVnbG90LXNlcnZlci1jYXBhYmxlIDpkZWZpbml0aW9uUHJvdmlkZXIpXQogICAg WyJGaW5kIHJlZmVyZW5jZXMiIHhyZWYtZmluZC1yZWZlcmVuY2VzCiAgICAgOmhlbHAgIkZpbmQg cmVmZXJlbmNlcyB0byBpZGVudGlmaWVyIGF0IHBvaW50IgogICAgIDphY3RpdmUgKGVnbG90LXNl cnZlci1jYXBhYmxlIDpyZWZlcmVuY2VzUHJvdmlkZXIpXQogICAgWyJGaW5kIHN5bWJvbHMgaW4g d29ya3NwYWNlIChhcHJvcG9zKSIgeHJlZi1maW5kLWFwcm9wb3MKICAgICA6aGVscCAiRmluZCBz eW1ib2xzIG1hdGNoaW5nIGEgcXVlcnkiCiAgICAgOmFjdGl2ZSAoZWdsb3Qtc2VydmVyLWNhcGFi bGUgOndvcmtzcGFjZVN5bWJvbFByb3ZpZGVyKV0KICAgIFsiRmluZCBkZWNsYXJhdGlvbiIgZWds b3QtZmluZC1kZWNsYXJhdGlvbgogICAgIDpoZWxwICJGaW5kIGRlY2xhcmF0aW9uIGZvciBpZGVu dGlmaWVyIGF0IHBvaW50IgogICAgIDphY3RpdmUgKGVnbG90LXNlcnZlci1jYXBhYmxlIDpkZWNs YXJhdGlvblByb3ZpZGVyKV0KICAgIFsiRmluZCBpbXBsZW1lbnRhdGlvbiIgZWdsb3QtZmluZC1p bXBsZW1lbnRhdGlvbgogICAgIDpoZWxwICJGaW5kIGltcGxlbWVudGF0aW9uIGZvciBpZGVudGlm aWVyIGF0IHBvaW50IgogICAgIDphY3RpdmUgKGVnbG90LXNlcnZlci1jYXBhYmxlIDppbXBsZW1l bnRhdGlvblByb3ZpZGVyKV0KICAgIFsiRmluZCB0eXBlIGRlZmluaXRpb24iIGVnbG90LWZpbmQt dHlwZURlZmluaXRpb24KICAgICA6aGVscCAiRmluZCB0eXBlIGRlZmluaXRpb24gZm9yIGlkZW50 aWZpZXIgYXQgcG9pbnQiCiAgICAgOmFjdGl2ZSAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOnR5cGVE ZWZpbml0aW9uUHJvdmlkZXIpXQogICAgIi0tIgogICAgOzsgTFNQLXJlbGF0ZWQgY29tbWFuZHMg KG1vc3RseSBFZ2xvdCdzIG93biBjb21tYW5kcykuCiAgICBbIlJlbmFtZSBzeW1ib2wiIGVnbG90 LXJlbmFtZQogICAgIDphY3RpdmUgKGVnbG90LXNlcnZlci1jYXBhYmxlIDpyZW5hbWVQcm92aWRl cildCiAgICBbIkZvcm1hdCBidWZmZXIiIGVnbG90LWZvcm1hdC1idWZmZXIKICAgICA6YWN0aXZl IChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1lbnRGb3JtYXR0aW5nUHJvdmlkZXIpXQogICAg WyJGb3JtYXQgYWN0aXZlIHJlZ2lvbiIgZWdsb3QtZm9ybWF0CiAgICAgOmFjdGl2ZSAoYW5kIChy ZWdpb24tYWN0aXZlLXApCiAgICAgICAgICAgICAgICAgIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6 ZG9jdW1lbnRSYW5nZUZvcm1hdHRpbmdQcm92aWRlcikpXQogICAgWyJTaG93IEZseW1ha2UgZGlh Z25vc3RpY3MgZm9yIGJ1ZmZlciIgZmx5bWFrZS1zaG93LWJ1ZmZlci1kaWFnbm9zdGljc10KICAg IFsiU2hvdyBGbHltYWtlIGRpYWdub3N0aWNzIGZvciBwcm9qZWN0IiBmbHltYWtlLXNob3ctcHJv amVjdC1kaWFnbm9zdGljc10KICAgIFsiU2hvdyBFbGRvYyBkb2N1bWVudGF0aW9uIGF0IHBvaW50 IiBlbGRvYy1kb2MtYnVmZmVyXQogICAgIi0tIgogICAgWyJBbGwgcG9zc2libGUgY29kZSBhY3Rp b25zIiBlZ2xvdC1jb2RlLWFjdGlvbnMKICAgICA6YWN0aXZlIChlZ2xvdC1zZXJ2ZXItY2FwYWJs ZSA6Y29kZUFjdGlvblByb3ZpZGVyKV0KICAgIFsiT3JnYW5pemUgaW1wb3J0cyIgZWdsb3QtY29k ZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0cwogICAgIDp2aXNpYmxlIChlZ2xvdC1zZXJ2ZXItY2Fw YWJsZSA6Y29kZUFjdGlvblByb3ZpZGVyKV0KICAgIFsiRXh0cmFjdCIgZWdsb3QtY29kZS1hY3Rp b24tZXh0cmFjdAogICAgIDp2aXNpYmxlIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6Y29kZUFjdGlv blByb3ZpZGVyKV0KICAgIFsiSW5saW5lIiBlZ2xvdC1jb2RlLWFjdGlvbi1pbmxpbmUKICAgICA6 dmlzaWJsZSAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOmNvZGVBY3Rpb25Qcm92aWRlcildCiAgICBb IlJld3JpdGUiIGVnbG90LWNvZGUtYWN0aW9uLXJld3JpdGUKICAgICA6dmlzaWJsZSAoZWdsb3Qt c2VydmVyLWNhcGFibGUgOmNvZGVBY3Rpb25Qcm92aWRlcildCiAgICBbIlF1aWNrZml4IiBlZ2xv dC1jb2RlLWFjdGlvbi1xdWlja2ZpeAogICAgIDp2aXNpYmxlIChlZ2xvdC1zZXJ2ZXItY2FwYWJs ZSA6Y29kZUFjdGlvblByb3ZpZGVyKV0pKQoKKGVhc3ktbWVudS1kZWZpbmUgZWdsb3Qtc2VydmVy LW1lbnUgbmlsICJNb25pdG9yIHNlcnZlciBjb21tdW5pY2F0aW9uIgogICcoIkRlYnVnZ2luZyB0 aGUgc2VydmVyIGNvbW11bmljYXRpb24iCiAgICBbIlJlY29ubmVjdCB0byBzZXJ2ZXIiIGVnbG90 LXJlY29ubmVjdF0KICAgIFsiUXVpdCBzZXJ2ZXIiIGVnbG90LXNodXRkb3duXQogICAgIi0tIgog ICAgWyJMU1AgZXZlbnRzIGJ1ZmZlciIgZWdsb3QtZXZlbnRzLWJ1ZmZlcl0KICAgIFsiU2VydmVy IHN0ZGVyciBidWZmZXIiIGVnbG90LXN0ZGVyci1idWZmZXJdCiAgICBbIkN1c3RvbWl6ZSBldmVu dCBidWZmZXIgc2l6ZSIKICAgICAobGFtYmRhICgpCiAgICAgICAoaW50ZXJhY3RpdmUpCiAgICAg ICAoY3VzdG9taXplLXZhcmlhYmxlICdlZ2xvdC1ldmVudHMtYnVmZmVyLXNpemUpKV0pKQoKKGRl ZnVuIGVnbG90LS1tb2RlLWxpbmUtcHJvcHMgKHRoaW5nIGZhY2UgZGVmcyAmb3B0aW9uYWwgcHJl cGVuZCkKICAiSGVscGVyIGZvciBmdW5jdGlvbiBgZWdsb3QtLW1vZGUtbGluZS1mb3JtYXQnLgpV c2VzIFRISU5HLCBGQUNFLCBERUZTIGFuZCBQUkVQRU5ELiIKICAoY2wtbG9vcCB3aXRoIG1hcCA9 IChtYWtlLXNwYXJzZS1rZXltYXApCiAgICAgICAgICAgZm9yIChlbGVtIC4gcmVzdCkgb24gZGVm cwogICAgICAgICAgIGZvciAoa2V5IGRlZiBoZWxwKSA9IGVsZW0KICAgICAgICAgICBkbyAoZGVm aW5lLWtleSBtYXAgYFttb2RlLWxpbmUgLGtleV0gKGVnbG90LS1tb3VzZS1jYWxsIGRlZiB0KSkK ICAgICAgICAgICBjb25jYXQgKGZvcm1hdCAiJXM6ICVzIiBrZXkgaGVscCkgaW50byBibHVyYgog ICAgICAgICAgIHdoZW4gcmVzdCBjb25jYXQgIlxuIiBpbnRvIGJsdXJiCiAgICAgICAgICAgZmlu YWxseSAocmV0dXJuIGAoOnByb3BlcnRpemUgLHRoaW5nCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmFjZSAsZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGtleW1hcCAsbWFwIGhlbHAtZWNobyAsKGNvbmNhdCBwcmVwZW5kIGJsdXJi KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlLWZhY2UgbW9k ZS1saW5lLWhpZ2hsaWdodCkpKSkKCihkZWZ1biBlZ2xvdC0tbW9kZS1saW5lLWZvcm1hdCAoKQog ICJDb21wb3NlIEVnbG90J3MgbW9kZS1saW5lLiIKICAobGV0KiAoKHNlcnZlciAoZWdsb3QtY3Vy cmVudC1zZXJ2ZXIpKQogICAgICAgICAobmljayAoYW5kIHNlcnZlciAoZWdsb3QtcHJvamVjdC1u aWNrbmFtZSBzZXJ2ZXIpKSkKICAgICAgICAgKHBlbmRpbmcgKGFuZCBzZXJ2ZXIgKGpzb25ycGMt Y29udGludWF0aW9uLWNvdW50IHNlcnZlcikpKQogICAgICAgICAobGFzdC1lcnJvciAoYW5kIHNl cnZlciAoanNvbnJwYy1sYXN0LWVycm9yIHNlcnZlcikpKSkKICAgIChhcHBlbmQKICAgICBgKCwo cHJvcGVydGl6ZQogICAgICAgICBlZ2xvdC1tZW51LXN0cmluZwogICAgICAgICAnZmFjZSAnZWds b3QtbW9kZS1saW5lCiAgICAgICAgICdtb3VzZS1mYWNlICdtb2RlLWxpbmUtaGlnaGxpZ2h0CiAg ICAgICAgICdoZWxwLWVjaG8gIkVnbG90OiBFbWFjcyBMU1AgY2xpZW50XG5tb3VzZS0xOiBEaXNw bGF5IG1pbm9yIG1vZGUgbWVudSIKICAgICAgICAgJ2tleW1hcCAobGV0ICgobWFwIChtYWtlLXNw YXJzZS1rZXltYXApKSkKICAgICAgICAgICAgICAgICAgIChkZWZpbmUta2V5IG1hcCBbbW9kZS1s aW5lIGRvd24tbW91c2UtMV0gZWdsb3QtbWVudSkKICAgICAgICAgICAgICAgICAgIG1hcCkpKQog ICAgICh3aGVuIG5pY2sKICAgICAgIGAoIjoiCiAgICAgICAgICwocHJvcGVydGl6ZQogICAgICAg ICAgIG5pY2sKICAgICAgICAgICAnZmFjZSAnZWdsb3QtbW9kZS1saW5lCiAgICAgICAgICAgJ21v dXNlLWZhY2UgJ21vZGUtbGluZS1oaWdobGlnaHQKICAgICAgICAgICAnaGVscC1lY2hvIChmb3Jt YXQgIlByb2plY3QgJyVzJ1xubW91c2UtMTogTFNQIHNlcnZlciBjb250cm9sIG1lbnUiIG5pY2sp CiAgICAgICAgICAgJ2tleW1hcCAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAg ICAgICAgICAgICAgICAgICAgKGRlZmluZS1rZXkgbWFwIFttb2RlLWxpbmUgZG93bi1tb3VzZS0x XSBlZ2xvdC1zZXJ2ZXItbWVudSkKICAgICAgICAgICAgICAgICAgICAgbWFwKSkKICAgICAgICAg LEAod2hlbiBsYXN0LWVycm9yCiAgICAgICAgICAgICBgKCIvIiAsKGVnbG90LS1tb2RlLWxpbmUt cHJvcHMKICAgICAgICAgICAgICAgICAgICAgImVycm9yIiAnY29tcGlsYXRpb24tbW9kZS1saW5l LWZhaWwKICAgICAgICAgICAgICAgICAgICAgJygobW91c2UtMyBlZ2xvdC1jbGVhci1zdGF0dXMg ICJDbGVhciB0aGlzIHN0YXR1cyIpKQogICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJBbiBl cnJvciBvY2N1cnJlZDogJXNcbiIgKHBsaXN0LWdldCBsYXN0LWVycm9yCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXNz YWdlKSkpKSkKICAgICAgICAgLEAod2hlbiAoY2wtcGx1c3AgcGVuZGluZykKICAgICAgICAgICAg IGAoIi8iICwoZWdsb3QtLW1vZGUtbGluZS1wcm9wcwogICAgICAgICAgICAgICAgICAgICAoZm9y bWF0ICIlZCIgcGVuZGluZykgJ3dhcm5pbmcKICAgICAgICAgICAgICAgICAgICAgJygobW91c2Ut MyBlZ2xvdC1mb3JnZXQtcGVuZGluZy1jb250aW51YXRpb25zCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkZvcmdldCBwZW5kaW5nIGNvbnRpbnVhdGlvbnMiKSkKICAgICAgICAgICAg ICAgICAgICAgIk51bWJlciBvZiBvdXRnb2luZywgXApzdGlsbCB1bmFuc3dlcmVkIExTUCByZXF1 ZXN0cyB0byB0aGUgc2VydmVyXG4iKSkpCiAgICAgICAgICxAKGNsLWxvb3AgZm9yIHByIGhhc2gt dmFsdWVzIG9mIChlZ2xvdC0tcHJvZ3Jlc3MtcmVwb3J0ZXJzIHNlcnZlcikKICAgICAgICAgICAg ICAgICAgICB3aGVuIChlcSAoY2FyIHByKSAgJ2VnbG90LS1tb2RlLWxpbmUtcmVwb3J0ZXIpCiAg ICAgICAgICAgICAgICAgICAgYXBwZW5kIGAoIi8iICwoZWdsb3QtLW1vZGUtbGluZS1wcm9wcwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVzJSUlJSIgKG9yIChu dGggNCBwcikgIj8iKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWdsb3Qt bW9kZS1saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiKCVzKSAlcyAlcyIgKG50aCAxIHBy KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50aCAyIHByKSAo bnRoIDMgcHIpKSkpKSkpKSkpCgooYWRkLXRvLWxpc3QgJ21vZGUtbGluZS1taXNjLWluZm8KICAg ICAgICAgICAgIGAoZWdsb3QtLW1hbmFnZWQtbW9kZSAoIiBbIiBlZ2xvdC0tbW9kZS1saW5lLWZv cm1hdCAiXSAiKSkpCgoMCjs7OyBGbHltYWtlIGN1c3RvbWl6YXRpb24KOzs7CihwdXQgJ2VnbG90 LW5vdGUgJ2ZseW1ha2UtY2F0ZWdvcnkgJ2ZseW1ha2Utbm90ZSkKKHB1dCAnZWdsb3Qtd2Fybmlu ZyAnZmx5bWFrZS1jYXRlZ29yeSAnZmx5bWFrZS13YXJuaW5nKQoocHV0ICdlZ2xvdC1lcnJvciAn Zmx5bWFrZS1jYXRlZ29yeSAnZmx5bWFrZS1lcnJvcikKCihkZWZhbGlhcyAnZWdsb3QtLW1ha2Ut ZGlhZyAjJ2ZseW1ha2UtbWFrZS1kaWFnbm9zdGljKQooZGVmYWxpYXMgJ2VnbG90LS1kaWFnLWRh dGEgIydmbHltYWtlLWRpYWdub3N0aWMtZGF0YSkKCihkZWZ2YXIgZWdsb3QtZGlhZ25vc3RpY3Mt bWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBt YXAgW21vdXNlLTJdICMnZWdsb3QtY29kZS1hY3Rpb25zLWF0LW1vdXNlKQogICAgbWFwKQogICJL ZXltYXAgYWN0aXZlIGluIEVnbG90LWJhY2tlZCBGbHltYWtlIGRpYWdub3N0aWMgb3ZlcmxheXMu IikKCihjbC1sb29wIGZvciBpIGZyb20gMQogICAgICAgICBmb3IgdHlwZSBpbiAnKGVnbG90LW5v dGUgZWdsb3Qtd2FybmluZyBlZ2xvdC1lcnJvcikKICAgICAgICAgZG8gKHB1dCB0eXBlICdmbHlt YWtlLW92ZXJsYXktY29udHJvbAogICAgICAgICAgICAgICAgIGAoKG1vdXNlLWZhY2UgLiBoaWdo bGlnaHQpCiAgICAgICAgICAgICAgICAgICAocHJpb3JpdHkgLiAsKCsgNTAgaSkpCiAgICAgICAg ICAgICAgICAgICAoa2V5bWFwIC4gLGVnbG90LWRpYWdub3N0aWNzLW1hcCkpKSkKCgwKOzs7IFBy b3RvY29sIGltcGxlbWVudGF0aW9uIChSZXF1ZXN0cywgbm90aWZpY2F0aW9ucywgZXRjKQo7OzsK KGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtbm90aWZpY2F0aW9uCiAgKF9zZXJ2ZXIgbWV0aG9k ICZrZXkgJmFsbG93LW90aGVyLWtleXMpCiAgIkhhbmRsZSB1bmtub3duIG5vdGlmaWNhdGlvbi4i CiAgKHVubGVzcyAob3IgKHN0cmluZy1wcmVmaXgtcCAiJCIgKGZvcm1hdCAiJXMiIG1ldGhvZCkp CiAgICAgICAgICAgICAgKG5vdCAobWVtcSAnZGlzYWxsb3ctdW5rbm93bi1tZXRob2RzIGVnbG90 LXN0cmljdC1tb2RlKSkpCiAgICAoZWdsb3QtLXdhcm4gIlNlcnZlciBzZW50IHVua25vd24gbm90 aWZpY2F0aW9uIG1ldGhvZCBgJXMnIiBtZXRob2QpKSkKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFu ZGxlLXJlcXVlc3QKICAoX3NlcnZlciBtZXRob2QgJmtleSAmYWxsb3ctb3RoZXIta2V5cykKICAi SGFuZGxlIHVua25vd24gcmVxdWVzdC4iCiAgKHdoZW4gKG1lbXEgJ2Rpc2FsbG93LXVua25vd24t bWV0aG9kcyBlZ2xvdC1zdHJpY3QtbW9kZSkKICAgIChqc29ucnBjLWVycm9yICJVbmtub3duIHJl cXVlc3QgbWV0aG9kIGAlcyciIG1ldGhvZCkpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUt bm90aWZpY2F0aW9uCiAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB3aW5kb3cvc2hvd01lc3NhZ2Up KSAma2V5IHR5cGUgbWVzc2FnZSkKICAiSGFuZGxlIG5vdGlmaWNhdGlvbiB3aW5kb3cvc2hvd01l c3NhZ2UuIgogIChlZ2xvdC0tbWVzc2FnZSAocHJvcGVydGl6ZSAiU2VydmVyIHJlcG9ydHMgKHR5 cGU9JXMpOiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgKGlmICg8PSB0 eXBlIDEpICdlcnJvcikpCiAgICAgICAgICAgICAgICAgIHR5cGUgbWVzc2FnZSkpCgooY2wtZGVm bWV0aG9kIGVnbG90LWhhbmRsZS1yZXF1ZXN0CiAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB3aW5k b3cvc2hvd01lc3NhZ2VSZXF1ZXN0KSkKICAgICAgICAgICAma2V5IHR5cGUgbWVzc2FnZSBhY3Rp b25zICZhbGxvdy1vdGhlci1rZXlzKQogICJIYW5kbGUgc2VydmVyIHJlcXVlc3Qgd2luZG93L3No b3dNZXNzYWdlUmVxdWVzdC4iCiAgKGxldCogKChhY3Rpb25zIChhcHBlbmQgYWN0aW9ucyBuaWwp KSA7OyBnaCM2MjcKICAgICAgICAgKGxhYmVsIChjb21wbGV0aW5nLXJlYWQKICAgICAgICAgICAg ICAgICAoY29uY2F0CiAgICAgICAgICAgICAgICAgIChmb3JtYXQgKHByb3BlcnRpemUgIltlZ2xv dF0gU2VydmVyIHJlcG9ydHMgKHR5cGU9JXMpOiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZmFjZSAoaWYgKG9yIChub3QgdHlwZSkgKDw9IHR5cGUgMSkpICdlcnJv cikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBtZXNzYWdlKQogICAgICAgICAgICAg ICAgICAiXG5DaG9vc2UgYW4gb3B0aW9uOiAiKQogICAgICAgICAgICAgICAgIChvciAobWFwY2Fy IChsYW1iZGEgKG9iaikgKHBsaXN0LWdldCBvYmogOnRpdGxlKSkgYWN0aW9ucykKICAgICAgICAg ICAgICAgICAgICAgJygiT0siKSkKICAgICAgICAgICAgICAgICBuaWwgdCAocGxpc3QtZ2V0IChl bHQgYWN0aW9ucyAwKSA6dGl0bGUpKSkpCiAgICAoaWYgbGFiZWwgYCg6dGl0bGUgLGxhYmVsKSA6 bnVsbCkpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtbm90aWZpY2F0aW9uCiAgKF9zZXJ2 ZXIgKF9tZXRob2QgKGVxbCB3aW5kb3cvbG9nTWVzc2FnZSkpICZrZXkgX3R5cGUgX21lc3NhZ2Up CiAgIkhhbmRsZSBub3RpZmljYXRpb24gd2luZG93L2xvZ01lc3NhZ2UuIikgOzsgbm9vcCwgdXNl IGV2ZW50cyBidWZmZXIKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLW5vdGlmaWNhdGlvbgog IChfc2VydmVyIChfbWV0aG9kIChlcWwgdGVsZW1ldHJ5L2V2ZW50KSkgJnJlc3QgX2FueSkKICAi SGFuZGxlIG5vdGlmaWNhdGlvbiB0ZWxlbWV0cnkvZXZlbnQuIikgOzsgbm9vcCwgdXNlIGV2ZW50 cyBidWZmZXIKCihkZWZhbGlhcyAnZWdsb3QtLXJlcG9ydGVyLXVwZGF0ZQogIChpZiAoPiBlbWFj cy1tYWpvci12ZXJzaW9uIDI2KSAjJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZQogICAgKGxhbWJk YSAoYSBiICZvcHRpb25hbCBfYykgKHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSBhIGIpKSkpCgoo Y2wtZGVmbWV0aG9kIGVnbG90LWhhbmRsZS1ub3RpZmljYXRpb24KICAoc2VydmVyIChfbWV0aG9k IChlcWwgJC9wcm9ncmVzcykpICZrZXkgdG9rZW4gdmFsdWUpCiAgIkhhbmRsZSAkL3Byb2dyZXNz IG5vdGlmaWNhdGlvbiBpZGVudGlmaWVkIGJ5IFRPS0VOIGZyb20gU0VSVkVSLiIKICAod2hlbiBl Z2xvdC1yZXBvcnQtcHJvZ3Jlc3MKICAgIChjbC1mbGV0ICgoZm10ICgmcmVzdCBhcmdzKSAobWFw Y29uY2F0ICMnaWRlbnRpdHkgYXJncyAiICIpKQogICAgICAgICAgICAgIChta3ByICh0aXRsZSkK ICAgICAgICAgICAgICAgIChpZiAoZXEgZWdsb3QtcmVwb3J0LXByb2dyZXNzICdtZXNzYWdlcykK ICAgICAgICAgICAgICAgICAgICAobWFrZS1wcm9ncmVzcy1yZXBvcnRlcgogICAgICAgICAgICAg ICAgICAgICAoZm9ybWF0ICJbZWdsb3RdICVzICVzOiAlcyIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZWdsb3QtcHJvamVjdC1uaWNrbmFtZSBzZXJ2ZXIpIHRva2VuIHRpdGxlKSkKICAg ICAgICAgICAgICAgICAgKGxpc3QgJ2VnbG90LS1tb2RlLWxpbmUtcmVwb3J0ZXIgdG9rZW4gdGl0 bGUpKSkKICAgICAgICAgICAgICAodXBkIChwY250IG1zZyAmb3B0aW9uYWwKICAgICAgICAgICAg ICAgICAgICAgICAgIChwciAoZ2V0aGFzaCB0b2tlbiAoZWdsb3QtLXByb2dyZXNzLXJlcG9ydGVy cyBzZXJ2ZXIpKSkpCiAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAoKGVx IChjYXIgcHIpICdlZ2xvdC0tbW9kZS1saW5lLXJlcG9ydGVyKQogICAgICAgICAgICAgICAgICAg KHNldGNkciAoY2RkciBwcikgKGxpc3QgbXNnIHBjbnQpKQogICAgICAgICAgICAgICAgICAgKGZv cmNlLW1vZGUtbGluZS11cGRhdGUgdCkpCiAgICAgICAgICAgICAgICAgIChwciAoZWdsb3QtLXJl cG9ydGVyLXVwZGF0ZSBwciBwY250IG1zZykpKSkpCiAgICAgIChlZ2xvdC0tZGJpbmQgKChXb3Jr RG9uZVByb2dyZXNzKSBraW5kIHRpdGxlIHBlcmNlbnRhZ2UgbWVzc2FnZSkgdmFsdWUKICAgICAg ICAocGNhc2Uga2luZAogICAgICAgICAgKCJiZWdpbiIKICAgICAgICAgICAodXBkIHBlcmNlbnRh Z2UgKGZtdCB0aXRsZSBtZXNzYWdlKQogICAgICAgICAgICAgICAgKHB1dGhhc2ggdG9rZW4gKG1r cHIgdGl0bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXByb2dyZXNzLXJlcG9y dGVycyBzZXJ2ZXIpKSkpCiAgICAgICAgICAoInJlcG9ydCIgKHVwZCBwZXJjZW50YWdlIG1lc3Nh Z2UpKQogICAgICAgICAgKCJlbmQiICh1cGQgKG9yIHBlcmNlbnRhZ2UgMTAwKSBtZXNzYWdlKQog ICAgICAgICAgIChydW4tYXQtdGltZSAyIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbWhhc2ggdG9rZW4gKGVnbG90LS1w cm9ncmVzcy1yZXBvcnRlcnMgc2VydmVyKSkpKSkpKSkpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1o YW5kbGUtbm90aWZpY2F0aW9uCiAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB0ZXh0RG9jdW1lbnQv cHVibGlzaERpYWdub3N0aWNzKSkgJmtleSB1cmkgZGlhZ25vc3RpY3MKICAgICAgICAgICAmYWxs b3ctb3RoZXIta2V5cykgOyBGSVhNRTogZG9lc24ndCByZXNwZWN0IGBlZ2xvdC1zdHJpY3QtbW9k ZScKICAiSGFuZGxlIG5vdGlmaWNhdGlvbiBwdWJsaXNoRGlhZ25vc3RpY3MuIgogIChjbC1mbGV0 ICgoZWdsb3QtLWRpYWctdHlwZSAoc2V2KQogICAgICAgICAgICAgIChjb25kICgobnVsbCBzZXYp ICdlZ2xvdC1lcnJvcikKICAgICAgICAgICAgICAgICAgICAoKDw9IHNldiAxKSAnZWdsb3QtZXJy b3IpCiAgICAgICAgICAgICAgICAgICAgKCg9IHNldiAyKSAgJ2VnbG90LXdhcm5pbmcpCiAgICAg ICAgICAgICAgICAgICAgKHQgICAgICAgICAgJ2VnbG90LW5vdGUpKSkKICAgICAgICAgICAgKG1l c3MgKHNvdXJjZSBjb2RlIG1lc3NhZ2UpCiAgICAgICAgICAgICAgKGNvbmNhdCBzb3VyY2UgKGFu ZCBjb2RlIChmb3JtYXQgIiBbJXNdIiBjb2RlKSkgIjogIiBtZXNzYWdlKSkpCiAgICAoaWYtbGV0 KiAoKHBhdGggKGV4cGFuZC1maWxlLW5hbWUgKGVnbG90LXVyaS10by1wYXRoIHVyaSkpKQogICAg ICAgICAgICAgIChidWZmZXIgKGZpbmQtYnVmZmVyLXZpc2l0aW5nIHBhdGgpKSkKICAgICAgICAo d2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgICAgICAgIChjbC1sb29wCiAgICAgICAgICAg aW5pdGlhbGx5CiAgICAgICAgICAgKHNldHEgZmx5bWFrZS1saXN0LW9ubHktZGlhZ25vc3RpY3MK ICAgICAgICAgICAgICAgICAoYXNzb2MtZGVsZXRlLWFsbCBwYXRoIGZseW1ha2UtbGlzdC1vbmx5 LWRpYWdub3N0aWNzKSkKICAgICAgICAgICBmb3IgZGlhZy1zcGVjIGFjcm9zcyBkaWFnbm9zdGlj cwogICAgICAgICAgIGNvbGxlY3QgKGVnbG90LS1kYmluZCAoKERpYWdub3N0aWMpIHJhbmdlIGNv ZGUgbWVzc2FnZSBzZXZlcml0eSBzb3VyY2UgdGFncykKICAgICAgICAgICAgICAgICAgICAgICBk aWFnLXNwZWMKICAgICAgICAgICAgICAgICAgICAgKHNldHEgbWVzc2FnZSAobWVzcyBzb3VyY2Ug Y29kZSBtZXNzYWdlKSkKICAgICAgICAgICAgICAgICAgICAgKHBjYXNlLWxldAogICAgICAgICAg ICAgICAgICAgICAgICAgKChgKCxiZWcgLiAsZW5kKSAoZWdsb3QtcmFuZ2UtcmVnaW9uIHJhbmdl KSkpCiAgICAgICAgICAgICAgICAgICAgICAgOzsgRmFsbGJhY2sgdG8gYGZseW1ha2UtZGlhZy1y ZWdpb24nIGlmIHNlcnZlcgogICAgICAgICAgICAgICAgICAgICAgIDs7IGJvdGNoZWQgdGhlIHJh bmdlCiAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKD0gYmVnIGVuZCkKICAgICAgICAgICAg ICAgICAgICAgICAgIChpZi1sZXQqICgoc3QgKHBsaXN0LWdldCByYW5nZSA6c3RhcnQpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWFnLXJlZ2lvbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZmx5bWFrZS1kaWFnLXJlZ2lvbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSAoMSsgKHBsaXN0LWdldCBz dCA6bGluZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IHN0IDpjaGFyYWN0ZXIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgYmVn IChjYXIgZGlhZy1yZWdpb24pIGVuZCAoY2RyIGRpYWctcmVnaW9uKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVnbG90LS13aWRlbmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRx IGJlZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1ib2wKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSsgKHBsaXN0LWdldCAocGxpc3QtZ2V0IHJh bmdlIDpzdGFydCkgOmxpbmUpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBl bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxKyAocGxpc3QtZ2V0IChwbGlzdC1n ZXQgcmFuZ2UgOmVuZCkgOmxpbmUpKSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90 LS1tYWtlLWRpYWcKICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSBiZWcg ZW5kCiAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tZGlhZy10eXBlIHNldmVyaXR5KQog ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIGAoKGVnbG90LWxzcC1kaWFnIC4gLGRpYWct c3BlYykpCiAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuLWxldCAoKGZhY2VzCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1sb29wIGZvciB0YWcgYWNyb3NzIHRhZ3MK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiAoYWxpc3Qt Z2V0IHRhZyBlZ2xvdC0tdGFnLWZhY2VzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb2xsZWN0IGl0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYCgo ZmFjZSAuICxmYWNlcykpKSkpKQogICAgICAgICAgIGludG8gZGlhZ3MKICAgICAgICAgICBmaW5h bGx5IChjb25kICgoYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IG9ubHkgYWRkIHRv IGN1cnJlbnQgcmVwb3J0IGlmIEZseW1ha2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg c3RhcnRzIG9uIGlkbGUtdGltZXIgKGdpdGh1YiM5NTgpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgKG51bGwgZmx5bWFrZS1uby1jaGFuZ2VzLXRpbWVvdXQpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICBlZ2xvdC0tY3VycmVudC1mbHltYWtlLXJlcG9ydC1mbikKICAgICAgICAg ICAgICAgICAgICAgICAgICAoZWdsb3QtLXJlcG9ydC10by1mbHltYWtlIGRpYWdzKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZWds b3QtLWRpYWdub3N0aWNzIGRpYWdzKSkpKSkKICAgICAgKGNsLWxvb3AKICAgICAgIGZvciBkaWFn LXNwZWMgYWNyb3NzIGRpYWdub3N0aWNzCiAgICAgICBjb2xsZWN0IChlZ2xvdC0tZGJpbmQgKChE aWFnbm9zdGljKSBjb2RlIHJhbmdlIG1lc3NhZ2Ugc2V2ZXJpdHkgc291cmNlKSBkaWFnLXNwZWMK ICAgICAgICAgICAgICAgICAoc2V0cSBtZXNzYWdlIChtZXNzIHNvdXJjZSBjb2RlIG1lc3NhZ2Up KQogICAgICAgICAgICAgICAgIChsZXQqICgoc3RhcnQgKHBsaXN0LWdldCByYW5nZSA6c3RhcnQp KQogICAgICAgICAgICAgICAgICAgICAgICAobGluZSAoMSsgKHBsaXN0LWdldCBzdGFydCA6bGlu ZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAoMSsgKHBsaXN0LWdldCBzdGFydCA6 Y2hhcmFjdGVyKSkpKQogICAgICAgICAgICAgICAgICAgKGVnbG90LS1tYWtlLWRpYWcKICAgICAg ICAgICAgICAgICAgICBwYXRoIChjb25zIGxpbmUgY2hhcikgbmlsIChlZ2xvdC0tZGlhZy10eXBl IHNldmVyaXR5KSBtZXNzYWdlKSkpCiAgICAgICBpbnRvIGRpYWdzCiAgICAgICBmaW5hbGx5CiAg ICAgICAoc2V0cSBmbHltYWtlLWxpc3Qtb25seS1kaWFnbm9zdGljcwogICAgICAgICAgICAgKGFz c29jLWRlbGV0ZS1hbGwgcGF0aCBmbHltYWtlLWxpc3Qtb25seS1kaWFnbm9zdGljcykpCiAgICAg ICAocHVzaCAoY29ucyBwYXRoIGRpYWdzKSBmbHltYWtlLWxpc3Qtb25seS1kaWFnbm9zdGljcykp KSkpCgooY2wtZGVmdW4gZWdsb3QtLXJlZ2lzdGVyLXVucmVnaXN0ZXIgKHNlcnZlciB0aGluZ3Mg aG93KQogICJIZWxwZXIgZm9yIGByZWdpc3RlckNhcGFiaWxpdHknLgpUSElOR1MgYXJlIGVpdGhl ciByZWdpc3RyYXRpb25zIG9yIHVucmVnaXN0ZXJhdGlvbnMgKHNpYykuIgogIChjbC1sb29wCiAg IGZvciB0aGluZyBpbiAoY2wtY29lcmNlIHRoaW5ncyAnbGlzdCkKICAgZG8gKGVnbG90LS1kYmlu ZCAoKFJlZ2lzdHJhdGlvbikgaWQgbWV0aG9kIHJlZ2lzdGVyT3B0aW9ucykgdGhpbmcKICAgICAg ICAoYXBwbHkgKGNsLWVjYXNlIGhvdwogICAgICAgICAgICAgICAgIChyZWdpc3RlciAnZWdsb3Qt cmVnaXN0ZXItY2FwYWJpbGl0eSkKICAgICAgICAgICAgICAgICAodW5yZWdpc3RlciAnZWdsb3Qt dW5yZWdpc3Rlci1jYXBhYmlsaXR5KSkKICAgICAgICAgICAgICAgc2VydmVyIChpbnRlcm4gbWV0 aG9kKSBpZCByZWdpc3Rlck9wdGlvbnMpKSkpCgooY2wtZGVmbWV0aG9kIGVnbG90LWhhbmRsZS1y ZXF1ZXN0CiAgKHNlcnZlciAoX21ldGhvZCAoZXFsIGNsaWVudC9yZWdpc3RlckNhcGFiaWxpdHkp KSAma2V5IHJlZ2lzdHJhdGlvbnMpCiAgIkhhbmRsZSBzZXJ2ZXIgcmVxdWVzdCBjbGllbnQvcmVn aXN0ZXJDYXBhYmlsaXR5LiIKICAoZWdsb3QtLXJlZ2lzdGVyLXVucmVnaXN0ZXIgc2VydmVyIHJl Z2lzdHJhdGlvbnMgJ3JlZ2lzdGVyKSkKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLXJlcXVl c3QKICAoc2VydmVyIChfbWV0aG9kIChlcWwgY2xpZW50L3VucmVnaXN0ZXJDYXBhYmlsaXR5KSkK ICAgICAgICAgICZrZXkgdW5yZWdpc3RlcmF0aW9ucykgOzsgWFhYOiAidW5yZWdpc3RlcmF0aW9u cyIgKHNpYykKICAiSGFuZGxlIHNlcnZlciByZXF1ZXN0IGNsaWVudC91bnJlZ2lzdGVyQ2FwYWJp bGl0eS4iCiAgKGVnbG90LS1yZWdpc3Rlci11bnJlZ2lzdGVyIHNlcnZlciB1bnJlZ2lzdGVyYXRp b25zICd1bnJlZ2lzdGVyKSkKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLXJlcXVlc3QKICAo X3NlcnZlciAoX21ldGhvZCAoZXFsIHdvcmtzcGFjZS9hcHBseUVkaXQpKSAma2V5IF9sYWJlbCBl ZGl0KQogICJIYW5kbGUgc2VydmVyIHJlcXVlc3Qgd29ya3NwYWNlL2FwcGx5RWRpdC4iCiAgKGVn bG90LS1hcHBseS13b3Jrc3BhY2UtZWRpdCBlZGl0IGxhc3QtY29tbWFuZCkKICBgKDphcHBsaWVk IHQpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtcmVxdWVzdAogIChzZXJ2ZXIgKF9tZXRo b2QgKGVxbCB3b3Jrc3BhY2Uvd29ya3NwYWNlRm9sZGVycykpKQogICJIYW5kbGUgc2VydmVyIHJl cXVlc3Qgd29ya3NwYWNlL3dvcmtzcGFjZUZvbGRlcnMuIgogIChlZ2xvdC13b3Jrc3BhY2UtZm9s ZGVycyBzZXJ2ZXIpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtcmVxdWVzdAogIChfc2Vy dmVyIChfbWV0aG9kIChlcWwgd2luZG93L3Nob3dEb2N1bWVudCkpICZrZXkKICAgICAgICAgICB1 cmkgZXh0ZXJuYWwgdGFrZUZvY3VzIHNlbGVjdGlvbikKICAiSGFuZGxlIHJlcXVlc3Qgd2luZG93 L3Nob3dEb2N1bWVudC4iCiAgKGxldCAoKHN1Y2Nlc3MgdCkKICAgICAgICAoZmlsZW5hbWUpKQog ICAgKGNvbmQKICAgICAoKGVxIGV4dGVybmFsIHQpIChicm93c2UtdXJsIHVyaSkpCiAgICAgKChm aWxlLXJlYWRhYmxlLXAgKHNldHEgZmlsZW5hbWUgKGVnbG90LXVyaS10by1wYXRoIHVyaSkpKQog ICAgICA7OyBVc2UgcnVuLXdpdGgtdGltZXIgdG8gYXZvaWQgbmVzdGVkIGNsaWVudCByZXF1ZXN0 cyBsaWtlIHRoZQogICAgICA7OyAic3luY2hyb25vdXMgaW1lbnUiIGZsb2F0ZWQgaW4gYnVnIzYy MTE2IHByZXN1bWFibHkgY2F1c2VkIGJ5CiAgICAgIDs7IHdoaWNoLWZ1bmMtbW9kZS4KICAgICAg KHJ1bi13aXRoLXRpbWVyCiAgICAgICAwIG5pbAogICAgICAgKGxhbWJkYSAoKQogICAgICAgICAo d2l0aC1jdXJyZW50LWJ1ZmZlciAoZmluZC1maWxlLW5vc2VsZWN0IGZpbGVuYW1lKQogICAgICAg ICAgIChjb25kICh0YWtlRm9jdXMKICAgICAgICAgICAgICAgICAgKHBvcC10by1idWZmZXIgKGN1 cnJlbnQtYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgKHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQt Zm9jdXMgKHNlbGVjdGVkLWZyYW1lKSkpCiAgICAgICAgICAgICAgICAgKChkaXNwbGF5LWJ1ZmZl ciAoY3VycmVudC1idWZmZXIpKSkpCiAgICAgICAgICAgKHdoZW4gc2VsZWN0aW9uCiAgICAgICAg ICAgICAocGNhc2UtbGV0ICgoYCgsYmVnIC4gLGVuZCkgKGVnbG90LXJhbmdlLXJlZ2lvbiBzZWxl Y3Rpb24pKSkKICAgICAgICAgICAgICAgOzsgRklYTUU6IGl0IGlzIHZlcnkgbmF1Z2h0eSB0byB1 c2Ugc29tZW9uZSBlbHNlJ3MgYC0tJwogICAgICAgICAgICAgICA7OyBmdW5jdGlvbiwgYnV0IGB4 cmVmLS1nb3RvLWNoYXInIGhhcHBlbnMgdG8gaGF2ZQogICAgICAgICAgICAgICA7OyBleGFjdGx5 IHRoZSBzZW1hbnRpY3Mgd2Ugd2FudCB2aXMtYS12aXMgd2lkZW5pbmcuCiAgICAgICAgICAgICAg ICh4cmVmLS1nb3RvLWNoYXIgYmVnKQogICAgICAgICAgICAgICAocHVsc2UtbW9tZW50YXJ5LWhp Z2hsaWdodC1yZWdpb24gYmVnIGVuZCAnaGlnaGxpZ2h0KSkpKSkpKQogICAgICh0IChzZXRxIHN1 Y2Nlc3MgOmpzb24tZmFsc2UpKSkKICAgIGAoOnN1Y2Nlc3MgLHN1Y2Nlc3MpKSkKCihkZWZ1biBl Z2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllciAoKQogICJDb21wdXRlIFRleHREb2N1bWVudElk ZW50aWZpZXIgb2JqZWN0IGZvciBjdXJyZW50IGJ1ZmZlci4iCiAgYCg6dXJpICwoZWdsb3QtcGF0 aC10by11cmkgKG9yIGJ1ZmZlci1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpZ25vcmUtZXJyb3JzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChidWZmZXItZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YnVmZmVyLWJhc2UtYnVmZmVyKSkpKSkpKQoKKGRlZnZhci1sb2NhbCBlZ2xvdC0tdmVyc2lvbmVk LWlkZW50aWZpZXIgMCkKCihkZWZ1biBlZ2xvdC0tVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRp ZmllciAoKQogICJDb21wdXRlIFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIgb2JqZWN0 IGZvciBjdXJyZW50IGJ1ZmZlci4iCiAgKGFwcGVuZCAoZWdsb3QtLVRleHREb2N1bWVudElkZW50 aWZpZXIpCiAgICAgICAgICBgKDp2ZXJzaW9uICxlZ2xvdC0tdmVyc2lvbmVkLWlkZW50aWZpZXIp KSkKCihjbC1kZWZ1biBlZ2xvdC0tbGFuZ3VhZ2VJZCAoJm9wdGlvbmFsIChzZXJ2ZXIgKGVnbG90 LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkpCiAgIkNvbXB1dGUgTFNQIFxcPSdsYW5ndWFnZUlk XFw9JyBzdHJpbmcgZm9yIGN1cnJlbnQgYnVmZmVyLgpEb3VibGVzIGFzIGFuIHByZWRpY2F0ZSB0 ZWxsaW5nIGlmIFNFUlZFUiBjYW4gbWFuYWdlIGN1cnJlbnQKYnVmZmVyLiIKICAoY2wtbG9vcCBm b3IgKG1vZGUgLiBsYW5ndWFnZWlkKSBpbgogICAgICAgICAgIChlZ2xvdC0tbGFuZ3VhZ2VzIHNl cnZlcikKICAgICAgICAgICB3aGVuIChwcm92aWRlZC1tb2RlLWRlcml2ZWQtcCBtYWpvci1tb2Rl IG1vZGUpCiAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlaWQpKQoKKGRlZnVuIGVnbG90LS1UZXh0 RG9jdW1lbnRJdGVtICgpCiAgIkNvbXB1dGUgVGV4dERvY3VtZW50SXRlbSBvYmplY3QgZm9yIGN1 cnJlbnQgYnVmZmVyLiIKICAoYXBwZW5kCiAgIChlZ2xvdC0tVmVyc2lvbmVkVGV4dERvY3VtZW50 SWRlbnRpZmllcikKICAgKGxpc3QgOmxhbmd1YWdlSWQgKGVnbG90LS1sYW5ndWFnZUlkKQogICAg ICAgICA6dGV4dAogICAgICAgICAoZWdsb3QtLXdpZGVuaW5nCiAgICAgICAgICAoYnVmZmVyLXN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpKSkKCihkZWZ1 biBlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMgKCkKICAiQ29tcHV0ZSBUZXh0RG9j dW1lbnRQb3NpdGlvblBhcmFtcy4iCiAgKGxpc3QgOnRleHREb2N1bWVudCAoZWdsb3QtLVRleHRE b2N1bWVudElkZW50aWZpZXIpCiAgICAgICAgOnBvc2l0aW9uIChlZ2xvdC0tcG9zLXRvLWxzcC1w b3NpdGlvbikpKQoKKGRlZnZhci1sb2NhbCBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFyIG5pbAog ICJJZiBub24tbmlsLCB2YWx1ZSBvZiB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgaW4gYnVm ZmVyLiIpCgooZGVmdW4gZWdsb3QtLXBvc3Qtc2VsZi1pbnNlcnQtaG9vayAoKQogICJTZXQgYGVn bG90LS1sYXN0LWluc2VydGVkLWNoYXInLCBtYXliZSBjYWxsIG9uLXR5cGUtZm9ybWF0dGluZy4i CiAgKHNldHEgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQtY2hhciBsYXN0LWNvbW1hbmQtZXZlbnQpCiAg KGxldCAoKG90LXByb3ZpZGVyIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1lbnRPblR5cGVG b3JtYXR0aW5nUHJvdmlkZXIpKSkKICAgICh3aGVuIChhbmQgb3QtcHJvdmlkZXIKICAgICAgICAg ICAgICAgKGlnbm9yZS1lcnJvcnMgOyBnaXRodWIjOTA2LCBzb21lIExTJ3Mgc2VuZCBlbXB0eSBz dHJpbmdzCiAgICAgICAgICAgICAgICAgKG9yIChlcSBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFy CiAgICAgICAgICAgICAgICAgICAgICAgICAoc2VxLWZpcnN0IChwbGlzdC1nZXQgb3QtcHJvdmlk ZXIgOmZpcnN0VHJpZ2dlckNoYXJhY3RlcikpKQogICAgICAgICAgICAgICAgICAgICAoY2wtZmlu ZCBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwbGlzdC1nZXQgb3QtcHJvdmlkZXIgOm1vcmVUcmlnZ2VyQ2hhcmFjdGVyKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6a2V5ICMnc2VxLWZpcnN0KSkpKQogICAgICAoZWdsb3QtZm9y bWF0IChwb2ludCkgbmlsIGVnbG90LS1sYXN0LWluc2VydGVkLWNoYXIpKSkpCgooZGVmdmFyIGVn bG90LS13b3Jrc3BhY2Utc3ltYm9scy1jYWNoZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1 YWwpCiAgIkNhY2hlIG9mIGB3b3Jrc3BhY2UvU3ltYm9sJyByZXN1bHRzICB1c2VkIGJ5IGB4cmVm LWZpbmQtZGVmaW5pdGlvbnMnLiIpCgooZGVmdW4gZWdsb3QtLXByZS1jb21tYW5kLWhvb2sgKCkK ICAiUmVzZXQgc29tZSB0ZW1wb3JhcnkgdmFyaWFibGVzLiIKICAoY2xyaGFzaCBlZ2xvdC0td29y a3NwYWNlLXN5bWJvbHMtY2FjaGUpCiAgKHNldHEgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQtY2hhciBu aWwpKQoKKGRlZnVuIGVnbG90LS1Db21wbGV0aW9uUGFyYW1zICgpCiAgKGFwcGVuZAogICAoZWds b3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zKQogICBgKDpjb250ZXh0CiAgICAgLChpZi1s ZXQgKHRyaWdnZXIgKGFuZCAoY2hhcmFjdGVycCBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFyKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWZpbmQgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQt Y2hhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LXNlcnZlci1j YXBhYmxlIDpjb21wbGV0aW9uUHJvdmlkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRyaWdnZXJDaGFyYWN0ZXJzKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleSAobGFtYmRhIChzdHIpIChhcmVmIHN0 ciAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0ZXN0ICMnY2hhci1l cXVhbCkpKQogICAgICAgICAgYCg6dHJpZ2dlcktpbmQgMiA6dHJpZ2dlckNoYXJhY3RlciAsdHJp Z2dlcikgYCg6dHJpZ2dlcktpbmQgMSkpKSkpCgooZGVmdmFyLWxvY2FsIGVnbG90LS1yZWNlbnQt Y2hhbmdlcyBuaWwKICAiUmVjZW50IGJ1ZmZlciBjaGFuZ2VzIGFzIGNvbGxlY3RlZCBieSBgZWds b3QtLWJlZm9yZS1jaGFuZ2UnLiIpCgooY2wtZGVmbWV0aG9kIGpzb25ycGMtY29ubmVjdGlvbi1y ZWFkeS1wICgoX3NlcnZlciBlZ2xvdC1sc3Atc2VydmVyKSBfd2hhdCkKICAiVGVsbCBpZiBTRVJW RVIgaXMgcmVhZHkgZm9yIFdIQVQgaW4gY3VycmVudCBidWZmZXIuIgogIChhbmQgKGNsLWNhbGwt bmV4dC1tZXRob2QpIChub3QgZWdsb3QtLXJlY2VudC1jaGFuZ2VzKSkpCgooZGVmdmFyLWxvY2Fs IGVnbG90LS1jaGFuZ2UtaWRsZS10aW1lciBuaWwgIklkbGUgdGltZXIgZm9yIGRpZENoYW5nZSBz aWduYWxzLiIpCgooZGVmdW4gZWdsb3QtLWJlZm9yZS1jaGFuZ2UgKGJlZyBlbmQpCiAgIkhvb2sg b250byBgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnIHdpdGggQkVHIGFuZCBFTkQuIgogICh3aGVu IChsaXN0cCBlZ2xvdC0tcmVjZW50LWNoYW5nZXMpCiAgICA7OyBSZWNvcmRzIEJFRyBhbmQgRU5E LCBjcnVjaWFsbHkgY29udmVydCB0aGVtIGludG8gTFNQCiAgICA7OyAobGluZS9jaGFyKSBwb3Np dGlvbnMgYmVmb3JlIHRoYXQgaW5mb3JtYXRpb24gaXMgbG9zdCAoYmVjYXVzZQogICAgOzsgdGhl IGFmdGVyLWNoYW5nZSB0aGluZ3kgZG9lc24ndCBrbm93IGlmIG5ld2xpbmVzIHdlcmUKICAgIDs7 IGRlbGV0ZWQvYWRkZWQpLiAgQWxzbyByZWNvcmQgbWFya2VycyBvZiBCRUcgYW5kIEVORAogICAg OzsgKGdpdGh1YiMyNTkpCiAgICAocHVzaCBgKCwoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24g YmVnKQogICAgICAgICAgICAsKGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9uIGVuZCkKICAgICAg ICAgICAgKCxiZWcgLiAsKGNvcHktbWFya2VyIGJlZyBuaWwpKQogICAgICAgICAgICAoLGVuZCAu ICwoY29weS1tYXJrZXIgZW5kIHQpKSkKICAgICAgICAgIGVnbG90LS1yZWNlbnQtY2hhbmdlcykp KQoKKGRlZnZhciBlZ2xvdC0tZG9jdW1lbnQtY2hhbmdlZC1ob29rICcoZWdsb3QtLXNpZ25hbC10 ZXh0RG9jdW1lbnQvZGlkQ2hhbmdlKQogICJJbnRlcm5hbCBob29rIGZvciBkb2luZyB0aGluZ3Mg d2hlbiB0aGUgZG9jdW1lbnQgY2hhbmdlcy4iKQoKKGRlZnVuIGVnbG90LS1hZnRlci1jaGFuZ2Ug KGJlZyBlbmQgcHJlLWNoYW5nZS1sZW5ndGgpCiAgIkhvb2sgb250byBgYWZ0ZXItY2hhbmdlLWZ1 bmN0aW9ucycuClJlY29yZHMgQkVHLCBFTkQgYW5kIFBSRS1DSEFOR0UtTEVOR1RIIGxvY2FsbHku IgogIChjbC1pbmNmIGVnbG90LS12ZXJzaW9uZWQtaWRlbnRpZmllcikKICAocGNhc2UgKGNhci1z YWZlIGVnbG90LS1yZWNlbnQtY2hhbmdlcykKICAgIChgKCxsc3AtYmVnICxsc3AtZW5kCiAgICAg ICAgICAgICAgICAoLGItYmVnIC4gLGItYmVnLW1hcmtlcikKICAgICAgICAgICAgICAgICgsYi1l bmQgLiAsYi1lbmQtbWFya2VyKSkKICAgICA7OyBnaXRodWIjMjU5IGFuZCBnaXRodWIjMzY3OiB3 aXRoIGBjYXBpdGFsaXplLXdvcmQnICYgZnJpZW5kcywKICAgICA7OyBgYmVmb3JlLWNoYW5nZS1m dW5jdGlvbnMnIHJlY29yZHMgdGhlIHdob2xlIHdvcmQncyBgYi1iZWcnIGFuZAogICAgIDs7IGBi LWVuZCcuICBTaW1pbGFybHksIHdoZW4gYGZpbGwtcGFyYWdyYXBoJyBjb2FsZXNjZXMgdHdvCiAg ICAgOzsgbGluZXMsIGBiLWJlZycgYW5kIGBiLWVuZCcgbWFyayBlbmQgb2YgZmlyc3QgbGluZSBh bmQgZW5kIG9mCiAgICAgOzsgc2Vjb25kIGxpbmUsIHJlc3AuICBJbiBib3RoIHNpdHVhdGlvbnMs IGBiZWcnIGFuZCBgZW5kJwogICAgIDs7IHJlY2VpdmVkIGhlcmUgc2VlbWluZ2x5IGNvbnRyYWRp Y3QgdGhhdDogdGhleSB3aWxsIGRpZmZlciBieSAxCiAgICAgOzsgYW5kIGVuY29tcGFzcyB0aGUg Y2FwaXRhbGl6ZWQgY2hhcmFjdGVyIG9yLCBpbiB0aGUgY29hbGVzY2luZwogICAgIDs7IGNhc2Us IHRoZSByZXBsYWNlbWVudCBvZiB0aGUgbmV3bGluZSB3aXRoIGEgc3BhY2UuICBXZSBrZWVwCiAg ICAgOzsgYm90aCBtYXJrZXJzIGFuZCBwb3NpdGlvbnMgdG8gZGV0ZWN0IGFuZCBjb3JyZWN0IHRo aXMuICBJbgogICAgIDs7IHRoaXMgc3BlY2lmaWMgY2FzZSwgd2UgaWdub3JlIGBiZWcnLCBgbGVu JyBhbmQKICAgICA7OyBgcHJlLWNoYW5nZS1sZW4nIGFuZCBzZW5kIHJpY2hlciBpbmZvcm1hdGlv biBhYm91dCB0aGUgcmVnaW9uCiAgICAgOzsgZnJvbSB0aGUgbWFya2Vycy4gIEkndmUgYWxzbyBl eHBlcmltZW50ZWQgd2l0aCBkb2luZyB0aGlzCiAgICAgOzsgdW5jb25kaXRpb25hbGx5IGJ1dCBp dCBzZWVtcyB0byBicmVhayB3aGVuIG5ld2xpbmVzIGFyZSBhZGRlZC4KICAgICAoaWYgKGFuZCAo PSBiLWVuZCBiLWVuZC1tYXJrZXIpICg9IGItYmVnIGItYmVnLW1hcmtlcikKICAgICAgICAgICAg ICAob3IgKC89IGJlZyBiLWJlZykgKC89IGVuZCBiLWVuZCkpKQogICAgICAgICAoc2V0Y2FyIGVn bG90LS1yZWNlbnQtY2hhbmdlcwogICAgICAgICAgICAgICAgIGAoLGxzcC1iZWcgLGxzcC1lbmQg LCgtIGItZW5kLW1hcmtlciBiLWJlZy1tYXJrZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiLWJlZy1tYXJrZXIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGItZW5k LW1hcmtlcikpKQogICAgICAgKHNldGNhciBlZ2xvdC0tcmVjZW50LWNoYW5nZXMKICAgICAgICAg ICAgICAgYCgsbHNwLWJlZyAsbHNwLWVuZCAscHJlLWNoYW5nZS1sZW5ndGgKICAgICAgICAgICAg ICAgICAgICAgICAgICAsKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkp KSkKICAgIChfIChzZXRmIGVnbG90LS1yZWNlbnQtY2hhbmdlcyA6ZW1hY3MtbWVzc3VwKSkpCiAg KHdoZW4gZWdsb3QtLWNoYW5nZS1pZGxlLXRpbWVyIChjYW5jZWwtdGltZXIgZWdsb3QtLWNoYW5n ZS1pZGxlLXRpbWVyKSkKICAobGV0ICgoYnVmIChjdXJyZW50LWJ1ZmZlcikpKQogICAgKHNldHEg ZWdsb3QtLWNoYW5nZS1pZGxlLXRpbWVyCiAgICAgICAgICAocnVuLXdpdGgtaWRsZS10aW1lcgog ICAgICAgICAgIGVnbG90LXNlbmQtY2hhbmdlcy1pZGxlLXRpbWUKICAgICAgICAgICBuaWwgKGxh bWJkYSAoKSAoZWdsb3QtLXdoZW4tbGl2ZS1idWZmZXIgYnVmCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAod2hlbiBlZ2xvdC0tbWFuYWdlZC1tb2RlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChydW4taG9va3MgJ2VnbG90LS1kb2N1bWVudC1jaGFuZ2VkLWhvb2spCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGVnbG90LS1jaGFuZ2UtaWRsZS10aW1lciBuaWwp KSkpKSkpKQoKKGRlZnZhci1sb2NhbCBlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbiAoKQog ICJDb25maWd1cmUgTFNQIHNlcnZlcnMgc3BlY2lmaWNhbGx5IGZvciBhIGdpdmVuIHByb2plY3Qu CgpUaGlzIHZhcmlhYmxlJ3MgdmFsdWUgc2hvdWxkIGJlIGEgcGxpc3QgKFNFQ1RJT04gVkFMVUUg Li4uKS4KU0VDVElPTiBpcyBhIGtleXdvcmQgbmFtaW5nIGEgcGFyYW1ldGVyIHNlY3Rpb24gcmVs ZXZhbnQgdG8gYQpwYXJ0aWN1bGFyIHNlcnZlci4gIFZBTFVFIGlzIGEgcGxpc3Qgb3IgYSBwcmlt aXRpdmUgdHlwZQpjb252ZXJ0ZWQgdG8gSlNPTiBhbHNvIHVuZGVyc3Rvb2QgYnkgdGhhdCBzZXJ2 ZXIuCgpJbnN0ZWFkIG9mIGEgcGxpc3QsIGFuIGFsaXN0ICgoU0VDVElPTiAuIFZBTFVFKSAuLi4p IGNhbiBiZSB1c2VkCmluc3RlYWQsIGJ1dCB0aGlzIHZhcmlhbnQgaXMgbGVzcyByZWxpYWJsZSBh bmQgbm90IHJlY29tbWVuZGVkLgoKVGhpcyB2YXJpYWJsZSBzaG91bGQgYmUgc2V0IGFzIGEgZGly ZWN0b3J5LWxvY2FsIHZhcmlhYmxlLiAgU2VlCmluZm8gbm9kZSBgKGVtYWNzKURpcmVjdG9yeSBW YXJpYWJsZXMnIGZvciB2YXJpb3VzIHdheXMgdG8gZG8gdGhhdC4KCkhlcmUncyBhbiBleGFtcGxl IHZhbHVlIHRoYXQgZXN0YWJsaXNoZXMgdHdvIHNlY3Rpb25zIHJlbGV2YW50IHRvCnRoZSBQeWxz cCBhbmQgR29wbHMgTFNQIHNlcnZlcnM6CgogICg6cHlsc3AgKDpwbHVnaW5zICg6amVkaV9jb21w bGV0aW9uICg6aW5jbHVkZV9wYXJhbXMgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6ZnV6enkgdCkKICAgICAgICAgICAgICAgICAgICAgOnB5bGludCAoOmVuYWJsZWQg Ompzb24tZmFsc2UpKSkKICAgOmdvcGxzICg6dXNlUGxhY2Vob2xkZXJzIHQpKQoKVGhlIHZhbHVl IG9mIHRoaXMgdmFyaWFibGUgY2FuIGFsc28gYmUgYSB1bmFyeSBmdW5jdGlvbiBvZiBhCnNpbmds ZSBhcmd1bWVudCwgd2hpY2ggd2lsbCBiZSBhIGNvbm5lY3RlZCBgZWdsb3QtbHNwLXNlcnZlcicK aW5zdGFuY2UuICBUaGUgZnVuY3Rpb24gcnVucyB3aXRoIGBkZWZhdWx0LWRpcmVjdG9yeScgc2V0 IHRvIHRoZQpyb290IG9mIHRoZSBjdXJyZW50IHByb2plY3QuICBJdCBzaG91bGQgcmV0dXJuIGFu IG9iamVjdCBvZiB0aGUKZm9ybWF0IGRlc2NyaWJlZCBhYm92ZS4iKQoKOzs7IyMjYXV0b2xvYWQK KHB1dCAnZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24gJ3NhZmUtbG9jYWwtdmFyaWFibGUg IydsaXN0cCkKCihkZWZ1biBlZ2xvdC1zaG93LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uICgmb3B0 aW9uYWwgc2VydmVyKQogICJEdW1wIGBlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbicgYXMg SlNPTiBmb3IgZGVidWdnaW5nLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1yZWFkLXNl cnZlciAiU2hvdyB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbiBmb3IiIHQpKSkKICAobGV0ICgoY29u ZiAoZWdsb3QtLXdvcmtzcGFjZS1jb25maWd1cmF0aW9uLXBsaXN0IHNlcnZlcikpKQogICAgKHdp dGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqRUdMT1Qgd29ya3NwYWNlIGNv bmZpZ3VyYXRpb24qIikKICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgKGluc2VydCAoanNvbnJw Yy0tanNvbi1lbmNvZGUgY29uZikpCiAgICAgICh3aXRoLW5vLXdhcm5pbmdzCiAgICAgICAgKHJl cXVpcmUgJ2pzb24pCiAgICAgICAgKHdoZW4gKHJlcXVpcmUgJ2pzb24tbW9kZSBuaWwgdCkgKGpz b24tbW9kZSkpCiAgICAgICAgKGpzb24tcHJldHR5LXByaW50LWJ1ZmZlcikpCiAgICAgIChwb3At dG8tYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKSkpCgooZGVmdW4gZWdsb3QtLXdvcmtzcGFjZS1j b25maWd1cmF0aW9uLXBsaXN0IChzZXJ2ZXIgJm9wdGlvbmFsIHBhdGgpCiAgIlJldHVybnMgU0VS VkVSJ3Mgd29ya3NwYWNlIGNvbmZpZ3VyYXRpb24gYXMgYSBwbGlzdC4KSWYgUEFUSCBjb25zaWRl ciB0aGF0IGZpbGUncyBgZmlsZS1uYW1lLWRpcmVjdG9yeScgdG8gZ2V0IHRoZQpsb2NhbCB2YWx1 ZSBvZiB0aGUgYGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uJyB2YXJpYWJsZSwgZWxzZQp1 c2UgdGhlIHJvb3Qgb2YgU0VSVkVSJ3MgYGVnbG90LS1wcm9qZWN0Jy4iCiAgKGxldCAoKHZhbCAo d2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgICAgICAgICAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQog ICAgICAgICAgICAgICAgICAgICA7OyBTZWUgZ2l0aHViIzEyODEKICAgICAgICAgICAgICAgICAg ICAgKGlmIHBhdGggKGlmIChmaWxlLWRpcmVjdG9yeS1wIHBhdGgpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBwYXRoKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IHBhdGgpKQogICAgICAg ICAgICAgICAgICAgICAgIChwcm9qZWN0LXJvb3QgKGVnbG90LS1wcm9qZWN0IHNlcnZlcikpKSkK ICAgICAgICAgICAgICAgOzsgU2V0IHRoZSBtYWpvciBtb2RlIHRvIGJlIHRoZSBmaXJzdCBvZiB0 aGUgbWFuYWdlZAogICAgICAgICAgICAgICA7OyBtb2Rlcy4gIFRoaXMgaXMgdGhlIG9uZSB0aGUg dXNlciBzdGFydGVkIGVnbG90IGluLgogICAgICAgICAgICAgICAoc2V0cSBtYWpvci1tb2RlIChj YXIgKGVnbG90LS1tYWpvci1tb2RlcyBzZXJ2ZXIpKSkKICAgICAgICAgICAgICAgKGhhY2stZGly LWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIpCiAgICAgICAgICAgICAgIChpZiAoZnVu Y3Rpb25wIGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uKQogICAgICAgICAgICAgICAgICAg KGZ1bmNhbGwgZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24gc2VydmVyKQogICAgICAgICAg ICAgICAgIGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uKSkpKQogICAgKG9yIChhbmQgKGNv bnNwIChjYXIgdmFsKSkKICAgICAgICAgICAgIChjbC1sb29wIGZvciAoc2VjdGlvbiAuIHYpIGlu IHZhbAogICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCAoaWYgKGtleXdvcmRwIHNlY3Rpb24p IHNlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJuIChmb3JtYXQg IjolcyIgc2VjdGlvbikpKQogICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB2KSkKICAgICAg ICB2YWwpKSkKCihkZWZ1biBlZ2xvdC1zaWduYWwtZGlkQ2hhbmdlQ29uZmlndXJhdGlvbiAoc2Vy dmVyKQogICJTZW5kIGEgYDp3b3Jrc3BhY2UvZGlkQ2hhbmdlQ29uZmlndXJhdGlvbicgc2lnbmFs IHRvIFNFUlZFUi4KV2hlbiBjYWxsZWQgaW50ZXJhY3RpdmVseSwgdXNlIHRoZSBjdXJyZW50bHkg YWN0aXZlIHNlcnZlciIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1jdXJyZW50LXNlcnZl ci1vci1sb3NlKSkpCiAgKGpzb25ycGMtbm90aWZ5CiAgIHNlcnZlciA6d29ya3NwYWNlL2RpZENo YW5nZUNvbmZpZ3VyYXRpb24KICAgKGxpc3QKICAgIDpzZXR0aW5ncwogICAgKG9yIChlZ2xvdC0t d29ya3NwYWNlLWNvbmZpZ3VyYXRpb24tcGxpc3Qgc2VydmVyKQogICAgICAgIGVnbG90LS17fSkp KSkKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLXJlcXVlc3QKICAoc2VydmVyIChfbWV0aG9k IChlcWwgd29ya3NwYWNlL2NvbmZpZ3VyYXRpb24pKSAma2V5IGl0ZW1zKQogICJIYW5kbGUgc2Vy dmVyIHJlcXVlc3Qgd29ya3NwYWNlL2NvbmZpZ3VyYXRpb24uIgogIChhcHBseSAjJ3ZlY3Rvcgog ICAgICAgICAobWFwY2FyCiAgICAgICAgICAoZWdsb3QtLWxhbWJkYSAoKENvbmZpZ3VyYXRpb25J dGVtKSBzY29wZVVyaSBzZWN0aW9uKQogICAgICAgICAgICAoY2wtbG9vcAogICAgICAgICAgICAg d2l0aCBzY29wZS11cmktcGF0aCA9IChhbmQgc2NvcGVVcmkgKGVnbG90LXVyaS10by1wYXRoIHNj b3BlVXJpKSkKICAgICAgICAgICAgIGZvciAod3NlY3Rpb24gbykKICAgICAgICAgICAgIG9uIChl Z2xvdC0td29ya3NwYWNlLWNvbmZpZ3VyYXRpb24tcGxpc3Qgc2VydmVyIHNjb3BlLXVyaS1wYXRo KQogICAgICAgICAgICAgYnkgIydjZGRyCiAgICAgICAgICAgICB3aGVuIChzdHJpbmc9CiAgICAg ICAgICAgICAgICAgICAoaWYgKGtleXdvcmRwIHdzZWN0aW9uKQogICAgICAgICAgICAgICAgICAg ICAgIChzdWJzdHJpbmcgKHN5bWJvbC1uYW1lIHdzZWN0aW9uKSAxKQogICAgICAgICAgICAgICAg ICAgICB3c2VjdGlvbikKICAgICAgICAgICAgICAgICAgIHNlY3Rpb24pCiAgICAgICAgICAgICBy ZXR1cm4gbykpCiAgICAgICAgICBpdGVtcykpKQoKKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERv Y3VtZW50L2RpZENoYW5nZSAoKQogICJTZW5kIHRleHREb2N1bWVudC9kaWRDaGFuZ2UgdG8gc2Vy dmVyLiIKICAod2hlbiBlZ2xvdC0tcmVjZW50LWNoYW5nZXMKICAgIChsZXQqICgoc2VydmVyIChl Z2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkpCiAgICAgICAgICAgKHN5bmMtY2FwYWJpbGl0 eSAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOnRleHREb2N1bWVudFN5bmMpKQogICAgICAgICAgIChz eW5jLWtpbmQgKGlmIChudW1iZXJwIHN5bmMtY2FwYWJpbGl0eSkgc3luYy1jYXBhYmlsaXR5CiAg ICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgc3luYy1jYXBhYmlsaXR5IDpjaGFuZ2Up KSkKICAgICAgICAgICAoZnVsbC1zeW5jLXAgKG9yIChlcSBzeW5jLWtpbmQgMSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChlcSA6ZW1hY3MtbWVzc3VwIGVnbG90LS1yZWNlbnQtY2hhbmdl cykpKSkKICAgICAgKGpzb25ycGMtbm90aWZ5CiAgICAgICBzZXJ2ZXIgOnRleHREb2N1bWVudC9k aWRDaGFuZ2UKICAgICAgIChsaXN0CiAgICAgICAgOnRleHREb2N1bWVudCAoZWdsb3QtLVZlcnNp b25lZFRleHREb2N1bWVudElkZW50aWZpZXIpCiAgICAgICAgOmNvbnRlbnRDaGFuZ2VzCiAgICAg ICAgKGlmIGZ1bGwtc3luYy1wCiAgICAgICAgICAgICh2ZWN0b3IgYCg6dGV4dCAsKGVnbG90LS13 aWRlbmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIChwb2ludC1taW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1heCkpKSkpCiAgICAgICAgICAo Y2wtbG9vcCBmb3IgKGJlZyBlbmQgbGVuIHRleHQpIGluIChyZXZlcnNlIGVnbG90LS1yZWNlbnQt Y2hhbmdlcykKICAgICAgICAgICAgICAgICAgIDs7IGdpdGh1YiMyNTk6IGBjYXBpdGFsaXplLXdv cmQnIGFuZCBjb21tYW5kcyBiYXNlZAogICAgICAgICAgICAgICAgICAgOzsgb24gYGNhc2lmeV9y ZWdpb24nIHdpbGwgY2F1c2UgbXVsdGlwbGUgZHVwbGljYXRlCiAgICAgICAgICAgICAgICAgICA7 OyBlbXB0eSBlbnRyaWVzIGluIGBlZ2xvdC0tYmVmb3JlLWNoYW5nZScgY2FsbHMKICAgICAgICAg ICAgICAgICAgIDs7IHdpdGhvdXQgYW4gYGVnbG90LS1hZnRlci1jaGFuZ2UnIHJlY2lwcm9jYWwu CiAgICAgICAgICAgICAgICAgICA7OyBXZWVkIHRoZW0gb3V0IGhlcmUuCiAgICAgICAgICAgICAg ICAgICB3aGVuIChudW1iZXJwIGxlbikKICAgICAgICAgICAgICAgICAgIHZjb25jYXQgYFssKGxp c3QgOnJhbmdlIGAoOnN0YXJ0ICxiZWcgOmVuZCAsZW5kKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6cmFuZ2VMZW5ndGggbGVuIDp0ZXh0IHRleHQpXSkpKSkKICAgICAgKHNl dHEgZWdsb3QtLXJlY2VudC1jaGFuZ2VzIG5pbCkKICAgICAgKGpzb25ycGMtLWNhbGwtZGVmZXJy ZWQgc2VydmVyKSkpKQoKKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZE9wZW4g KCkKICAiU2VuZCB0ZXh0RG9jdW1lbnQvZGlkT3BlbiB0byBzZXJ2ZXIuIgogIChzZXRxIGVnbG90 LS1yZWNlbnQtY2hhbmdlcyBuaWwgZWdsb3QtLXZlcnNpb25lZC1pZGVudGlmaWVyIDApCiAgKGpz b25ycGMtbm90aWZ5CiAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKICAgOnRleHRE b2N1bWVudC9kaWRPcGVuIGAoOnRleHREb2N1bWVudCAsKGVnbG90LS1UZXh0RG9jdW1lbnRJdGVt KSkpKQoKKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENsb3NlICgpCiAgIlNl bmQgdGV4dERvY3VtZW50L2RpZENsb3NlIHRvIHNlcnZlci4iCiAgKHdpdGgtZGVtb3RlZC1lcnJv cnMKICAgICAgIltlZ2xvdF0gZXJyb3Igc2VuZGluZyB0ZXh0RG9jdW1lbnQvZGlkQ2xvc2U6ICVz IgogICAgKGpzb25ycGMtbm90aWZ5CiAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3Nl KQogICAgIDp0ZXh0RG9jdW1lbnQvZGlkQ2xvc2UgYCg6dGV4dERvY3VtZW50ICwoZWdsb3QtLVRl eHREb2N1bWVudElkZW50aWZpZXIpKSkpKQoKKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERvY3Vt ZW50L3dpbGxTYXZlICgpCiAgIk1heWJlIHNlbmQgdGV4dERvY3VtZW50L3dpbGxTYXZlIHRvIHNl cnZlci4iCiAgKGxldCAoKHNlcnZlciAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpKQog ICAgICAgIChwYXJhbXMgYCg6cmVhc29uIDEgOnRleHREb2N1bWVudCAsKGVnbG90LS1UZXh0RG9j dW1lbnRJZGVudGlmaWVyKSkpKQogICAgKHdoZW4gKGVnbG90LXNlcnZlci1jYXBhYmxlIDp0ZXh0 RG9jdW1lbnRTeW5jIDp3aWxsU2F2ZSkKICAgICAgKGpzb25ycGMtbm90aWZ5IHNlcnZlciA6dGV4 dERvY3VtZW50L3dpbGxTYXZlIHBhcmFtcykpCiAgICAod2hlbiAoZWdsb3Qtc2VydmVyLWNhcGFi bGUgOnRleHREb2N1bWVudFN5bmMgOndpbGxTYXZlV2FpdFVudGlsKQogICAgICAoaWdub3JlLWVy cm9ycwogICAgICAgIChlZ2xvdC0tYXBwbHktdGV4dC1lZGl0cwogICAgICAgICAoZWdsb3QtLXJl cXVlc3Qgc2VydmVyIDp0ZXh0RG9jdW1lbnQvd2lsbFNhdmVXYWl0VW50aWwgcGFyYW1zCiAgICAg ICAgICAgICAgICAgICAgICAgICA6dGltZW91dCAwLjUpKSkpKSkKCihkZWZ1biBlZ2xvdC0tc2ln bmFsLXRleHREb2N1bWVudC9kaWRTYXZlICgpCiAgIk1heWJlIHNlbmQgdGV4dERvY3VtZW50L2Rp ZFNhdmUgdG8gc2VydmVyLiIKICAoZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2hhbmdl KQogICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6dGV4dERvY3VtZW50U3luYyA6c2F2ZSkK ICAgIChqc29ucnBjLW5vdGlmeQogICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkK ICAgICA6dGV4dERvY3VtZW50L2RpZFNhdmUKICAgICAobGlzdAogICAgICA7OyBUT0RPOiBIYW5k bGUgVGV4dERvY3VtZW50U2F2ZVJlZ2lzdHJhdGlvbk9wdGlvbnMgdG8gY29udHJvbCB0aGlzLgog ICAgICA6dGV4dCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChw b2ludC1tYXgpKQogICAgICA6dGV4dERvY3VtZW50IChlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRp ZmllcikpKSkpCgooZGVmdW4gZWdsb3QtZmx5bWFrZS1iYWNrZW5kIChyZXBvcnQtZm4gJnJlc3Qg X21vcmUpCiAgIkEgRmx5bWFrZSBiYWNrZW5kIGZvciBFZ2xvdC4KQ2FsbHMgUkVQT1JULUZOIChv ciBhcnJhbmdlcyBmb3IgaXQgdG8gYmUgY2FsbGVkKSB3aGVuIHRoZSBzZXJ2ZXIKcHVibGlzaGVz IGRpYWdub3N0aWNzLiAgQmV0d2VlbiBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBSRVBPUlQtRk4K bWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyAocmVzcGVjdGluZyB0aGUgcHJvdG9jb2wgb2YK YGZseW1ha2UtZGlhZ25vc3RpYy1mdW5jdGlvbnMnKS4iCiAgKGNvbmQgKGVnbG90LS1tYW5hZ2Vk LW1vZGUKICAgICAgICAgKHNldHEgZWdsb3QtLWN1cnJlbnQtZmx5bWFrZS1yZXBvcnQtZm4gcmVw b3J0LWZuKQogICAgICAgICAoZWdsb3QtLXJlcG9ydC10by1mbHltYWtlIGVnbG90LS1kaWFnbm9z dGljcykpCiAgICAgICAgKHQKICAgICAgICAgKGZ1bmNhbGwgcmVwb3J0LWZuIG5pbCkpKSkKCihk ZWZ1biBlZ2xvdC0tcmVwb3J0LXRvLWZseW1ha2UgKGRpYWdzKQogICJJbnRlcm5hbCBoZWxwZXIg Zm9yIGBlZ2xvdC1mbHltYWtlLWJhY2tlbmQnLiIKICAoc2F2ZS1yZXN0cmljdGlvbgogICAgKHdp ZGVuKQogICAgKGZ1bmNhbGwgZWdsb3QtLWN1cnJlbnQtZmx5bWFrZS1yZXBvcnQtZm4gZGlhZ3MK ICAgICAgICAgICAgIDs7IElmIHRoZSBidWZmZXIgaGFzbid0IGNoYW5nZWQgc2luY2UgbGFzdAog ICAgICAgICAgICAgOzsgY2FsbCB0byB0aGUgcmVwb3J0IGZ1bmN0aW9uLCBmbHltYWtlIHdvbid0 CiAgICAgICAgICAgICA7OyBkZWxldGUgb2xkIGRpYWdub3N0aWNzLiAgVXNpbmcgOnJlZ2lvbgog ICAgICAgICAgICAgOzsga2V5d29yZCBmb3JjZXMgZmx5bWFrZSB0byBkZWxldGUKICAgICAgICAg ICAgIDs7IHRoZW0gKGdpdGh1YiMxNTkpLgogICAgICAgICAgICAgOnJlZ2lvbiAoY29ucyAocG9p bnQtbWluKSAocG9pbnQtbWF4KSkpKQogIChzZXRxIGVnbG90LS1kaWFnbm9zdGljcyBkaWFncykp CgooZGVmdW4gZWdsb3QteHJlZi1iYWNrZW5kICgpICJFZ2xvdCB4cmVmIGJhY2tlbmQuIiAnZWds b3QpCgooZGVmdmFyIGVnbG90LS10ZW1wLWxvY2F0aW9uLWJ1ZmZlcnMgKG1ha2UtaGFzaC10YWJs ZSA6dGVzdCAjJ2VxdWFsKQogICJIZWxwZXIgdmFyaWFibGUgZm9yIGBlZ2xvdC0tY29sbGVjdGlu Zy14cmVmcycuIikKCihkZWZ2YXIgZWdsb3QteHJlZi1sZXNzcC1mdW5jdGlvbiAjJ2lnbm9yZQog ICJDb21wYXJlIHR3byBgeHJlZi1pdGVtJyBvYmplY3RzIGZvciBzb3J0aW5nLiIpCgooY2wtZGVm bWFjcm8gZWdsb3QtLWNvbGxlY3RpbmcteHJlZnMgKChjb2xsZWN0b3IpICZyZXN0IGJvZHkpCiAg IlNvcnQgYW5kIGhhbmRsZSB4cmVmcyBjb2xsZWN0ZWQgd2l0aCBDT0xMRUNUT1IgaW4gQk9EWS4i CiAgKGRlY2xhcmUgKGluZGVudCAxKSAoZGVidWcgKHNleHAgJnJlc3QgZm9ybSkpKQogIChsZXQg KChjb2xsZWN0ZWQgKGNsLWdlbnN5bSAiY29sbGVjdGVkIikpKQogICAgYCh1bndpbmQtcHJvdGVj dAogICAgICAgICAobGV0ICgsY29sbGVjdGVkKQogICAgICAgICAgIChjbC1mbGV0ICgoLGNvbGxl Y3RvciAoeHJlZikgKHB1c2ggeHJlZiAsY29sbGVjdGVkKSkpCiAgICAgICAgICAgICAsQGJvZHkp CiAgICAgICAgICAgKHNldHEgLGNvbGxlY3RlZCAobnJldmVyc2UgLGNvbGxlY3RlZCkpCiAgICAg ICAgICAgKHNvcnQgLGNvbGxlY3RlZCBlZ2xvdC14cmVmLWxlc3NwLWZ1bmN0aW9uKSkKICAgICAg IChtYXBoYXNoIChsYW1iZGEgKF91cmkgYnVmKSAoa2lsbC1idWZmZXIgYnVmKSkgZWdsb3QtLXRl bXAtbG9jYXRpb24tYnVmZmVycykKICAgICAgIChjbHJoYXNoIGVnbG90LS10ZW1wLWxvY2F0aW9u LWJ1ZmZlcnMpKSkpCgooZGVmdW4gZWdsb3QtLXhyZWYtbWFrZS1tYXRjaCAobmFtZSB1cmkgcmFu Z2UpCiAgIkxpa2UgYHhyZWYtbWFrZS1tYXRjaCcgYnV0IHdpdGggTFNQJ3MgTkFNRSwgVVJJIGFu ZCBSQU5HRS4KVHJ5IHRvIHZpc2l0IHRoZSB0YXJnZXQgZmlsZSBmb3IgYSByaWNoZXIgc3VtbWFy eSBsaW5lLiIKICAocGNhc2UtbGV0KgogICAgICAoKGZpbGUgKGVnbG90LXVyaS10by1wYXRoIHVy aSkpCiAgICAgICAodmlzaXRpbmcgKG9yIChmaW5kLWJ1ZmZlci12aXNpdGluZyBmaWxlKQogICAg ICAgICAgICAgICAgICAgICAoZ2V0aGFzaCB1cmkgZWdsb3QtLXRlbXAtbG9jYXRpb24tYnVmZmVy cykpKQogICAgICAgKGNvbGxlY3QgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAoZWdsb3Qt LXdpZGVuaW5nCiAgICAgICAgICAgICAgICAgICAocGNhc2UtbGV0KiAoKGAoLGJlZyAuICxlbmQp IChlZ2xvdC1yYW5nZS1yZWdpb24gcmFuZ2UpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChib2wgKHByb2duIChnb3RvLWNoYXIgYmVnKSAoZWdsb3QtLWJvbCkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgKGJ1ZmZlci1zdWJzdHJpbmcgYm9sIChs aW5lLWVuZC1wb3NpdGlvbikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaS1i ZWcgKC0gYmVnIGJvbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpLWVuZCAo LSAobWluIChsaW5lLWVuZC1wb3NpdGlvbikgZW5kKSBib2wpKSkKICAgICAgICAgICAgICAgICAg ICAgKGFkZC1mYWNlLXRleHQtcHJvcGVydHkgaGktYmVnIGhpLWVuZCAneHJlZi1tYXRjaAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0IHN1YnN0cmluZykKICAg ICAgICAgICAgICAgICAgICAgKGxpc3Qgc3Vic3RyaW5nIChsaW5lLW51bWJlci1hdC1wb3MgKHBv aW50KSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtdXRmLTMyLWxpbmVwb3Mp ICgtIGVuZCBiZWcpKSkpKSkKICAgICAgIChgKCxzdW1tYXJ5ICxsaW5lICxjb2x1bW4gLGxlbmd0 aCkKICAgICAgICAoY29uZAogICAgICAgICAodmlzaXRpbmcgKHdpdGgtY3VycmVudC1idWZmZXIg dmlzaXRpbmcgKGZ1bmNhbGwgY29sbGVjdCkpKQogICAgICAgICAoKGZpbGUtcmVhZGFibGUtcCBm aWxlKSAod2l0aC1jdXJyZW50LWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHB1dGhhc2ggdXJpIChnZW5lcmF0ZS1uZXctYnVmZmVyICIgKnRlbXAqIikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90LS10ZW1wLWxvY2F0 aW9uLWJ1ZmZlcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluc2VydC1m aWxlLWNvbnRlbnRzIGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgY29sbGVjdCkpKQogICAgICAgICAodCA7OyBmYWxsIGJhY2sgdG8gdGhlICJkdW1iIHN0 cmF0ZWd5IgogICAgICAgICAgKGxldCogKChzdGFydCAoY2wtZ2V0ZiByYW5nZSA6c3RhcnQpKQog ICAgICAgICAgICAgICAgIChsaW5lICgxKyAoY2wtZ2V0ZiBzdGFydCA6bGluZSkpKQogICAgICAg ICAgICAgICAgIChzdGFydC1wb3MgKGNsLWdldGYgc3RhcnQgOmNoYXJhY3RlcikpCiAgICAgICAg ICAgICAgICAgKGVuZC1wb3MgKGNsLWdldGYgKGNsLWdldGYgcmFuZ2UgOmVuZCkgOmNoYXJhY3Rl cikpKQogICAgICAgICAgICAobGlzdCBuYW1lIGxpbmUgc3RhcnQtcG9zICgtIGVuZC1wb3Mgc3Rh cnQtcG9zKSkpKSkpKQogICAgKHNldGYgKGdldGhhc2ggKGV4cGFuZC1maWxlLW5hbWUgZmlsZSkg ZWdsb3QtLXNlcnZlcnMtYnkteHJlZmVkLWZpbGUpCiAgICAgICAgICAoZWdsb3QtLWN1cnJlbnQt c2VydmVyLW9yLWxvc2UpKQogICAgKHhyZWYtbWFrZS1tYXRjaCBzdW1tYXJ5ICh4cmVmLW1ha2Ut ZmlsZS1sb2NhdGlvbiBmaWxlIGxpbmUgY29sdW1uKSBsZW5ndGgpKSkKCihkZWZ1biBlZ2xvdC0t d29ya3NwYWNlLXN5bWJvbHMgKHBhdCAmb3B0aW9uYWwgYnVmZmVyKQogICJBc2sgZm9yIDp3b3Jr c3BhY2Uvc3ltYm9sIG9uIFBBVCwgcmV0dXJuIGxpc3Qgb2YgZm9ybWF0dGVkIHN0cmluZ3MuCklm IEJVRkZFUiwgc3dpdGNoIHRvIGl0IGJlZm9yZS4iCiAgKHdpdGgtY3VycmVudC1idWZmZXIgKG9y IGJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQogICAgKGVnbG90LXNlcnZlci1jYXBhYmxlLW9yLWxv c2UgOndvcmtzcGFjZVN5bWJvbFByb3ZpZGVyKQogICAgKG1hcGNhcgogICAgIChsYW1iZGEgKHdz cykKICAgICAgIChlZ2xvdC0tZGJpbmQgKChXb3Jrc3BhY2VTeW1ib2wpIG5hbWUgY29udGFpbmVy TmFtZSBraW5kKSB3c3MKICAgICAgICAgKHByb3BlcnRpemUKICAgICAgICAgIChmb3JtYXQgIiVz JXMgJXMiCiAgICAgICAgICAgICAgICAgIChpZiAoemVyb3AgKGxlbmd0aCBjb250YWluZXJOYW1l KSkgIiIKICAgICAgICAgICAgICAgICAgICAoY29uY2F0IChwcm9wZXJ0aXplIGNvbnRhaW5lck5h bWUgJ2ZhY2UgJ3NoYWRvdykgIiAiKSkKICAgICAgICAgICAgICAgICAgbmFtZQogICAgICAgICAg ICAgICAgICAocHJvcGVydGl6ZSAoYWxpc3QtZ2V0IGtpbmQgZWdsb3QtLXN5bWJvbC1raW5kLW5h bWVzICJVbmtub3duIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ3NoYWRv dykpCiAgICAgICAgICAnZWdsb3QtLWxzcC13b3Jrc3BhY2VTeW1ib2wgd3NzKSkpCiAgICAgKGVn bG90LS1yZXF1ZXN0IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkgOndvcmtzcGFjZS9z eW1ib2wKICAgICAgICAgICAgICAgICAgICAgYCg6cXVlcnkgLHBhdCkpKSkpCgooY2wtZGVmbWV0 aG9kIHhyZWYtYmFja2VuZC1pZGVudGlmaWVyLWNvbXBsZXRpb24tdGFibGUgKChfYmFja2VuZCAo ZXFsIGVnbG90KSkpCiAgIllldCBhbm90aGVyIHRyaWNreSBjb25uZWN0aW9uIGJldHdlZW4gTFNQ IGFuZCBFbGlzcCBjb21wbGV0aW9uIHNlbWFudGljcy4iCiAgKGxldCAoKGJ1ZiAoY3VycmVudC1i dWZmZXIpKSAoY2FjaGUgZWdsb3QtLXdvcmtzcGFjZS1zeW1ib2xzLWNhY2hlKSkKICAgIChjbC1s YWJlbHMgKChyZWZyZXNoIChwYXQpIChlZ2xvdC0td29ya3NwYWNlLXN5bWJvbHMgcGF0IGJ1Zikp CiAgICAgICAgICAgICAgICAobG9va3VwLTEgKHBhdCkgOzsgY2hlY2sgY2FjaGUsIGVsc2UgcmVm cmVzaAogICAgICAgICAgICAgICAgICAobGV0ICgocHJvYmUgKGdldGhhc2ggcGF0IGNhY2hlIDpt aXNzaW5nKSkpCiAgICAgICAgICAgICAgICAgICAgKGlmIChlcSBwcm9iZSA6bWlzc2luZykgKHB1 dGhhc2ggcGF0IChyZWZyZXNoIHBhdCkgY2FjaGUpCiAgICAgICAgICAgICAgICAgICAgICBwcm9i ZSkpKQogICAgICAgICAgICAgICAgKGxvb2t1cCAocGF0IF9wb2ludCkKICAgICAgICAgICAgICAg ICAgKGxldCAoKHJlcyAobG9va3VwLTEgcGF0KSkKICAgICAgICAgICAgICAgICAgICAgICAgKGRl ZiAoYW5kIChzdHJpbmc9IHBhdCAiIikgKGdldGhhc2ggOmRlZmF1bHQgY2FjaGUpKSkpCiAgICAg ICAgICAgICAgICAgICAgKGFwcGVuZCBkZWYgcmVzIG5pbCkpKQogICAgICAgICAgICAgICAgKHNj b3JlIChjKQogICAgICAgICAgICAgICAgICAoY2wtZ2V0ZiAoZ2V0LXRleHQtcHJvcGVydHkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDAgJ2VnbG90LS1sc3Atd29ya3NwYWNlU3ltYm9sIGMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzY29yZSAwKSkpCiAgICAgIChleHRlcm5hbC1j b21wbGV0aW9uLXRhYmxlCiAgICAgICAnZWdsb3QtaW5kaXJlY3Rpb24tam95CiAgICAgICAjJ2xv b2t1cAogICAgICAgYCgoY3ljbGUtc29ydC1mdW5jdGlvbgogICAgICAgICAgLiAsKGxhbWJkYSAo Y29tcGxldGlvbnMpCiAgICAgICAgICAgICAgIChjbC1zb3J0IGNvbXBsZXRpb25zICMnPiA6a2V5 ICMnc2NvcmUpKSkpKSkpKQoKKGRlZnVuIGVnbG90LS1yZWNvdmVyLXdvcmtzcGFjZS1zeW1ib2wt bWV0YSAoc3RyaW5nKQogICJTZWFyY2ggYGVnbG90LS13b3Jrc3BhY2Utc3ltYm9scy1jYWNoZScg Zm9yIHJpY2ggZW50cnkgb2YgU1RSSU5HLiIKICAoY2F0Y2ggJ2ZvdW5kCiAgICAobWFwaGFzaCAo bGFtYmRhIChfayB2KQogICAgICAgICAgICAgICAod2hpbGUgKGNvbnNwIHYpCiAgICAgICAgICAg ICAgICAgOzsgTGlrZSBtZXNzPyBBc2sgbWluaWJ1ZmZlci5lbCBhYm91dCBpbXByb3BlciBsaXN0 cy4KICAgICAgICAgICAgICAgICAod2hlbiAoZXF1YWwgKGNhciB2KSBzdHJpbmcpICh0aHJvdyAn Zm91bmQgKGNhciB2KSkpCiAgICAgICAgICAgICAgICAgKHNldHEgdiAoY2RyIHYpKSkpCiAgICAg ICAgICAgICBlZ2xvdC0td29ya3NwYWNlLXN5bWJvbHMtY2FjaGUpKSkKCihjbC1kZWZtZXRob2Qg eHJlZi1iYWNrZW5kLWlkZW50aWZpZXItYXQtcG9pbnQgKChfYmFja2VuZCAoZXFsIGVnbG90KSkp CiAgKGxldCAoKGF0dGVtcHQKICAgICAgICAgKGFuZCAoeHJlZi0tcHJvbXB0LXAgdGhpcy1jb21t YW5kKQogICAgICAgICAgICAgIChwdXRoYXNoIDpkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAg ICAgKGlnbm9yZS1lcnJvcnMKICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0td29ya3Nw YWNlLXN5bWJvbHMgKHN5bWJvbC1uYW1lIChzeW1ib2wtYXQtcG9pbnQpKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgZWdsb3QtLXdvcmtzcGFjZS1zeW1ib2xzLWNhY2hlKSkpKQogICAgKGlmIGF0 dGVtcHQgKGNhciBhdHRlbXB0KSAiTFNQIGlkZW50aWZpZXIgYXQgcG9pbnQiKSkpCgooZGVmdmFy IGVnbG90LS1sc3AteHJlZi1yZWZzIG5pbAogICJgeHJlZicgb2JqZWN0cyBmb3Igb3ZlcnJpZGlu ZyBgeHJlZi1iYWNrZW5kLXJlZmVyZW5jZXMnJ3MuIikKCihjbC1kZWZ1biBlZ2xvdC0tbHNwLXhy ZWZzLWZvci1tZXRob2QgKG1ldGhvZCAma2V5IGV4dHJhLXBhcmFtcyBjYXBhYmlsaXR5KQogICJN YWtlIGB4cmVmJydzIGZvciBNRVRIT0QsIEVYVFJBLVBBUkFNUywgY2hlY2sgQ0FQQUJJTElUWS4i CiAgKGVnbG90LXNlcnZlci1jYXBhYmxlLW9yLWxvc2UKICAgKG9yIGNhcGFiaWxpdHkKICAgICAg IChpbnRlcm4KICAgICAgICAoZm9ybWF0ICI6JXNQcm92aWRlciIKICAgICAgICAgICAgICAgIChj YWRyIChzcGxpdC1zdHJpbmcgKHN5bWJvbC1uYW1lIG1ldGhvZCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi8iKSkpKSkpCiAgKGxldCAoKHJlc3BvbnNlCiAgICAgICAgIChl Z2xvdC0tcmVxdWVzdAogICAgICAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQog ICAgICAgICAgbWV0aG9kIChhcHBlbmQgKGVnbG90LS1UZXh0RG9jdW1lbnRQb3NpdGlvblBhcmFt cykgZXh0cmEtcGFyYW1zKSkpKQogICAgKGVnbG90LS1jb2xsZWN0aW5nLXhyZWZzIChjb2xsZWN0 KQogICAgICAobWFwYwogICAgICAgKGxhbWJkYSAobG9jLW9yLWxvYy1saW5rKQogICAgICAgICAo bGV0ICgoc3ltLW5hbWUgKHN5bWJvbC1uYW1lIChzeW1ib2wtYXQtcG9pbnQpKSkpCiAgICAgICAg ICAgKGVnbG90LS1kY2FzZSBsb2Mtb3ItbG9jLWxpbmsKICAgICAgICAgICAgICgoKExvY2F0aW9u TGluaykgdGFyZ2V0VXJpIHRhcmdldFNlbGVjdGlvblJhbmdlKQogICAgICAgICAgICAgIChjb2xs ZWN0IChlZ2xvdC0teHJlZi1tYWtlLW1hdGNoIHN5bS1uYW1lCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VXJpIHRhcmdldFNlbGVjdGlvblJhbmdl KSkpCiAgICAgICAgICAgICAoKChMb2NhdGlvbikgdXJpIHJhbmdlKQogICAgICAgICAgICAgIChj b2xsZWN0IChlZ2xvdC0teHJlZi1tYWtlLW1hdGNoIHN5bS1uYW1lCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpIHJhbmdlKSkpKSkpCiAgICAgICAoaWYg KHZlY3RvcnAgcmVzcG9uc2UpIHJlc3BvbnNlIChhbmQgcmVzcG9uc2UgKGxpc3QgcmVzcG9uc2Up KSkpKSkpCgooY2wtZGVmdW4gZWdsb3QtLWxzcC14cmVmLWhlbHBlciAobWV0aG9kICZrZXkgZXh0 cmEtcGFyYW1zIGNhcGFiaWxpdHkpCiAgIkhlbHBlciBmb3IgYGVnbG90LWZpbmQtZGVjbGFyYXRp b24nICYgZnJpZW5kcy4iCiAgKGxldCAoKGVnbG90LS1sc3AteHJlZi1yZWZzIChlZ2xvdC0tbHNw LXhyZWZzLWZvci1tZXRob2QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmV4dHJhLXBhcmFtcyBleHRyYS1wYXJhbXMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjYXBhYmlsaXR5IGNhcGFiaWxpdHkpKSkK ICAgIChpZiBlZ2xvdC0tbHNwLXhyZWYtcmVmcwogICAgICAgICh4cmVmLWZpbmQtcmVmZXJlbmNl cyAiTFNQIGlkZW50aWZpZXIgYXQgcG9pbnQuIikKICAgICAgKGVnbG90LS1tZXNzYWdlICIlcyBy ZXR1cm5lZCBubyByZWZlcmVuY2VzIiBtZXRob2QpKSkpCgooZGVmdW4gZWdsb3QtZmluZC1kZWNs YXJhdGlvbiAoKQogICJGaW5kIGRlY2xhcmF0aW9uIGZvciBTWU0sIHRoZSBpZGVudGlmaWVyIGF0 IHBvaW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKGVnbG90LS1sc3AteHJlZi1oZWxwZXIgOnRleHRE b2N1bWVudC9kZWNsYXJhdGlvbikpCgooZGVmdW4gZWdsb3QtZmluZC1pbXBsZW1lbnRhdGlvbiAo KQogICJGaW5kIGltcGxlbWVudGF0aW9uIGZvciBTWU0sIHRoZSBpZGVudGlmaWVyIGF0IHBvaW50 LiIKICAoaW50ZXJhY3RpdmUpCiAgKGVnbG90LS1sc3AteHJlZi1oZWxwZXIgOnRleHREb2N1bWVu dC9pbXBsZW1lbnRhdGlvbikpCgooZGVmdW4gZWdsb3QtZmluZC10eXBlRGVmaW5pdGlvbiAoKQog ICJGaW5kIHR5cGUgZGVmaW5pdGlvbiBmb3IgU1lNLCB0aGUgaWRlbnRpZmllciBhdCBwb2ludC4i CiAgKGludGVyYWN0aXZlKQogIChlZ2xvdC0tbHNwLXhyZWYtaGVscGVyIDp0ZXh0RG9jdW1lbnQv dHlwZURlZmluaXRpb24pKQoKKGNsLWRlZm1ldGhvZCB4cmVmLWJhY2tlbmQtZGVmaW5pdGlvbnMg KChfYmFja2VuZCAoZXFsIGVnbG90KSkgaWQpCiAgKGxldCAoKHByb2JlIChlZ2xvdC0tcmVjb3Zl ci13b3Jrc3BhY2Utc3ltYm9sLW1ldGEgaWQpKSkKICAgIChpZiBwcm9iZQogICAgICAgIChlZ2xv dC0tZGJpbmQgKChXb3Jrc3BhY2VTeW1ib2wpIG5hbWUgbG9jYXRpb24pCiAgICAgICAgICAgIChn ZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNwLXdvcmtzcGFjZVN5bWJvbCBwcm9iZSkKICAg ICAgICAgIChlZ2xvdC0tZGJpbmQgKChMb2NhdGlvbikgdXJpIHJhbmdlKSBsb2NhdGlvbgogICAg ICAgICAgICAobGlzdCAoZWdsb3QtLXhyZWYtbWFrZS1tYXRjaCBuYW1lIHVyaSByYW5nZSkpKSkK ICAgICAgKGVnbG90LS1sc3AteHJlZnMtZm9yLW1ldGhvZCA6dGV4dERvY3VtZW50L2RlZmluaXRp b24pKSkpCgooY2wtZGVmbWV0aG9kIHhyZWYtYmFja2VuZC1yZWZlcmVuY2VzICgoX2JhY2tlbmQg KGVxbCBlZ2xvdCkpIF9pZGVudGlmaWVyKQogIChvcgogICBlZ2xvdC0tbHNwLXhyZWYtcmVmcwog ICAoZWdsb3QtLWxzcC14cmVmcy1mb3ItbWV0aG9kCiAgICA6dGV4dERvY3VtZW50L3JlZmVyZW5j ZXMgOmV4dHJhLXBhcmFtcyBgKDpjb250ZXh0ICg6aW5jbHVkZURlY2xhcmF0aW9uIHQpKSkpKQoK KGNsLWRlZm1ldGhvZCB4cmVmLWJhY2tlbmQtYXByb3BvcyAoKF9iYWNrZW5kIChlcWwgZWdsb3Qp KSBwYXR0ZXJuKQogICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6d29ya3NwYWNlU3ltYm9s UHJvdmlkZXIpCiAgICAoZWdsb3QtLWNvbGxlY3RpbmcteHJlZnMgKGNvbGxlY3QpCiAgICAgICht YXBjCiAgICAgICAoZWdsb3QtLWxhbWJkYSAoKFN5bWJvbEluZm9ybWF0aW9uKSBuYW1lIGxvY2F0 aW9uKQogICAgICAgICAoZWdsb3QtLWRiaW5kICgoTG9jYXRpb24pIHVyaSByYW5nZSkgbG9jYXRp b24KICAgICAgICAgICAoY29sbGVjdCAoZWdsb3QtLXhyZWYtbWFrZS1tYXRjaCBuYW1lIHVyaSBy YW5nZSkpKSkKICAgICAgIChlZ2xvdC0tcmVxdWVzdCAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9y LWxvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgOndvcmtzcGFjZS9zeW1ib2wKICAgICAgICAg ICAgICAgICAgICAgICBgKDpxdWVyeSAscGF0dGVybikpKSkpKQoKKGRlZnVuIGVnbG90LWZvcm1h dC1idWZmZXIgKCkKICAiRm9ybWF0IGNvbnRlbnRzIG9mIGN1cnJlbnQgYnVmZmVyLiIKICAoaW50 ZXJhY3RpdmUpCiAgKGVnbG90LWZvcm1hdCBuaWwgbmlsKSkKCihkZWZ1biBlZ2xvdC1mb3JtYXQg KCZvcHRpb25hbCBiZWcgZW5kIG9uLXR5cGUtZm9ybWF0KQogICJGb3JtYXQgcmVnaW9uIEJFRyBF TkQuCklmIGVpdGhlciBCRUcgb3IgRU5EIGlzIG5pbCwgZm9ybWF0IGVudGlyZSBidWZmZXIuCklu dGVyYWN0aXZlbHksIGZvcm1hdCBhY3RpdmUgcmVnaW9uLCBvciBlbnRpcmUgYnVmZmVyIGlmIHJl Z2lvbgppcyBub3QgYWN0aXZlLgoKSWYgbm9uLW5pbCwgT04tVFlQRS1GT1JNQVQgaXMgYSBjaGFy YWN0ZXIganVzdCBpbnNlcnRlZCBhdCBCRUcKZm9yIHdoaWNoIExTUCBvbi10eXBlLWZvcm1hdHRp bmcgc2hvdWxkIGJlIHJlcXVlc3RlZC4iCiAgKGludGVyYWN0aXZlIChhbmQgKHJlZ2lvbi1hY3Rp dmUtcCkgKGxpc3QgKHJlZ2lvbi1iZWdpbm5pbmcpIChyZWdpb24tZW5kKSkpKQogIChwY2FzZS1s ZXQgKChgKCxtZXRob2QgLGNhcCAsYXJncykKICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAg ICAgICAgICgoYW5kIGJlZyBvbi10eXBlLWZvcm1hdCkKICAgICAgICAgICAgICAgICBgKDp0ZXh0 RG9jdW1lbnQvb25UeXBlRm9ybWF0dGluZwogICAgICAgICAgICAgICAgICAgOmRvY3VtZW50T25U eXBlRm9ybWF0dGluZ1Byb3ZpZGVyCiAgICAgICAgICAgICAgICAgICAsYCg6cG9zaXRpb24gLChl Z2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBiZWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOmNoICwoc3RyaW5nIG9uLXR5cGUtZm9ybWF0KSkpKQogICAgICAgICAgICAgICAgKChh bmQgYmVnIGVuZCkKICAgICAgICAgICAgICAgICBgKDp0ZXh0RG9jdW1lbnQvcmFuZ2VGb3JtYXR0 aW5nCiAgICAgICAgICAgICAgICAgICA6ZG9jdW1lbnRSYW5nZUZvcm1hdHRpbmdQcm92aWRlcgog ICAgICAgICAgICAgICAgICAgKDpyYW5nZSAsKGxpc3QgOnN0YXJ0IChlZ2xvdC0tcG9zLXRvLWxz cC1wb3NpdGlvbiBiZWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW5kIChl Z2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBlbmQpKSkpKQogICAgICAgICAgICAgICAgKHQKICAg ICAgICAgICAgICAgICAnKDp0ZXh0RG9jdW1lbnQvZm9ybWF0dGluZyA6ZG9jdW1lbnRGb3JtYXR0 aW5nUHJvdmlkZXIgbmlsKSkpKSkKICAgIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZS1vci1sb3NlIGNh cCkKICAgIChlZ2xvdC0tYXBwbHktdGV4dC1lZGl0cwogICAgIChlZ2xvdC0tcmVxdWVzdAogICAg ICAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCiAgICAgIG1ldGhvZAogICAgICAoY2wt bGlzdCoKICAgICAgIDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVy KQogICAgICAgOm9wdGlvbnMgKGxpc3QgOnRhYlNpemUgdGFiLXdpZHRoCiAgICAgICAgICAgICAg ICAgICAgICA6aW5zZXJ0U3BhY2VzIChpZiBpbmRlbnQtdGFicy1tb2RlIDpqc29uLWZhbHNlIHQp CiAgICAgICAgICAgICAgICAgICAgICA6aW5zZXJ0RmluYWxOZXdsaW5lIChpZiByZXF1aXJlLWZp bmFsLW5ld2xpbmUgdCA6anNvbi1mYWxzZSkKICAgICAgICAgICAgICAgICAgICAgIDp0cmltRmlu YWxOZXdsaW5lcyAoaWYgZGVsZXRlLXRyYWlsaW5nLWxpbmVzIHQgOmpzb24tZmFsc2UpKQogICAg ICAgYXJncykpCiAgICAgbmlsCiAgICAgb24tdHlwZS1mb3JtYXQpKSkKCihkZWZ2YXIgZWdsb3Qt Y2FjaGUtc2Vzc2lvbi1jb21wbGV0aW9ucyB0CiAgIklmIG5vbi1uaWwgRWdsb3QgY2FjaGVzIGRh dGEgZHVyaW5nIGNvbXBsZXRpb24gc2Vzc2lvbnMuIikKCihkZWZ2YXIgZWdsb3QtLWNhcGYtc2Vz c2lvbiA6bm9uZSAiQSBjYWNoZSB1c2VkIGJ5IGBlZ2xvdC1jb21wbGV0aW9uLWF0LXBvaW50Jy4i KQoKKGRlZnVuIGVnbG90LS1jYXBmLXNlc3Npb24tZmx1c2ggKCZvcHRpb25hbCBfKSAoc2V0cSBl Z2xvdC0tY2FwZi1zZXNzaW9uIDpub25lKSkKCihkZWZ1biBlZ2xvdC0tZHVtYi1mbGV4IChwYXQg Y29tcCBpZ25vcmVjYXNlKQogICJSZXR1cm4gZGVzdHJ1Y3RpdmVseSBmb250aWZpZWQgQ09NUCBp ZmYgUEFUIG1hdGNoZXMgaXQuIgogIChjbC1sb29wIHdpdGggbGNvbXAgPSAobGVuZ3RoIGNvbXAp CiAgICAgICAgICAgd2l0aCBjYXNlLWZvbGQtc2VhcmNoID0gaWdub3JlY2FzZQogICAgICAgICAg IGluaXRpYWxseSAocmVtb3ZlLWxpc3Qtb2YtdGV4dC1wcm9wZXJ0aWVzIDAgbGNvbXAgJyhmYWNl KSBjb21wKQogICAgICAgICAgIGZvciB4IGFjcm9zcyBwYXQKICAgICAgICAgICBmb3IgaSA9IChj bC1sb29wIGZvciBqIGZyb20gKGlmIGkgKDErIGkpIDApIGJlbG93IGxjb21wCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3aGVuIChjaGFyLWVxdWFsIHggKGFyZWYgY29tcCBqKSkgcmV0dXJu IGopCiAgICAgICAgICAgdW5sZXNzIGkgZG8gKGNsLXJldHVybiBuaWwpCiAgICAgICAgICAgOzsg RklYTUU6IGNvdWxkIGRvIG11Y2ggYmV0dGVyIGhlcmUgYW5kIGNvYWxlc2NlIGludGVydmFscwog ICAgICAgICAgIGRvIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IGkgKDErIGkpICdjb21wbGV0aW9u cy1jb21tb24tcGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCBj b21wKQogICAgICAgICAgIGZpbmFsbHkgKGNsLXJldHVybiBjb21wKSkpCgooZGVmdW4gZWdsb3Qt LWR1bWItYWxsYyAocGF0IHRhYmxlIHByZWQgX3BvaW50KSAoZnVuY2FsbCB0YWJsZSBwYXQgcHJl ZCB0KSkKKGRlZnVuIGVnbG90LS1kdW1iLXRyeWMgKHBhdCB0YWJsZSBwcmVkIHBvaW50KQogIChp Zi1sZXQgKChwcm9iZSAoZnVuY2FsbCB0YWJsZSBwYXQgcHJlZCBuaWwpKSkKICAgICAgKGNvbnMg cHJvYmUgKGxlbmd0aCBwcm9iZSkpCiAgICAoY29ucyBwYXQgcG9pbnQpKSkKCihhZGQtdG8tbGlz dCAnY29tcGxldGlvbi1jYXRlZ29yeS1kZWZhdWx0cyAnKGVnbG90LWNhcGYgKHN0eWxlcyBlZ2xv dC0tZHVtYi1mbGV4KSkpCihhZGQtdG8tbGlzdCAnY29tcGxldGlvbi1zdHlsZXMtYWxpc3QgJyhl Z2xvdC0tZHVtYi1mbGV4IGVnbG90LS1kdW1iLXRyeWMgZWdsb3QtLWR1bWItYWxsYykpCgooZGVm dW4gZWdsb3QtY29tcGxldGlvbi1hdC1wb2ludCAoKQogICJFZ2xvdCdzIGBjb21wbGV0aW9uLWF0 LXBvaW50JyBmdW5jdGlvbi4iCiAgOzsgQ29tbWl0IGxvZ3MgZm9yIHRoaXMgZnVuY3Rpb24gaGVs cCB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbi4KICAod2hlbi1sZXQgKGNvbXBsZXRpb24tY2Fw YWJpbGl0eSAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOmNvbXBsZXRpb25Qcm92aWRlcikpCiAgICAo bGV0KiAoKHNlcnZlciAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpKQogICAgICAgICAg IChib3VuZHMgKG9yIChib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkKICAgICAgICAg ICAgICAgICAgICAgICAoY29ucyAocG9pbnQpIChwb2ludCkpKSkKICAgICAgICAgICAoYm91bmRz LXN0cmluZyAoYnVmZmVyLXN1YnN0cmluZyAoY2FyIGJvdW5kcykgKGNkciBib3VuZHMpKSkKICAg ICAgICAgICAoc29ydC1jb21wbGV0aW9ucwogICAgICAgICAgICAobGFtYmRhIChjb21wbGV0aW9u cykKICAgICAgICAgICAgICAoY2wtc29ydCBjb21wbGV0aW9ucwogICAgICAgICAgICAgICAgICAg ICAgICMnc3RyaW5nLWxlc3NwCiAgICAgICAgICAgICAgICAgICAgICAgOmtleSAobGFtYmRhIChj KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC1pdGVtIGMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c29ydFRleHQpKSkpKQogICAgICAgICAg IChtZXRhZGF0YSBgKG1ldGFkYXRhIChjYXRlZ29yeSAuIGVnbG90LWNhcGYpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXktc29ydC1mdW5jdGlvbiAuICxzb3J0LWNvbXBs ZXRpb25zKSkpCiAgICAgICAgICAgKGxvY2FsLWNhY2hlIDpub25lKQogICAgICAgICAgIChvcmln LXBvcyAocG9pbnQpKQogICAgICAgICAgIChyZXNvbHZlZCAobWFrZS1oYXNoLXRhYmxlKSkKICAg ICAgICAgICAocHJveGllcwogICAgICAgICAgICAobGFtYmRhICgpCiAgICAgICAgICAgICAgKGlm IChsaXN0cCBsb2NhbC1jYWNoZSkgbG9jYWwtY2FjaGUKICAgICAgICAgICAgICAgIChsZXQqICgo cmVzcCAoZWdsb3QtLXJlcXVlc3Qgc2VydmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDp0ZXh0RG9jdW1lbnQvY29tcGxldGlvbgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLUNvbXBsZXRpb25QYXJhbXMpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjYW5jZWwtb24taW5w dXQgdCkpCiAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1zIChhcHBlbmQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiAodmVjdG9ycCByZXNwKSByZXNwIChwbGlzdC1nZXQgcmVz cCA6aXRlbXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkKICAgICAgICAg ICAgICAgICAgICAgICAoY2FjaGVwIChhbmQgKGxpc3RwIHJlc3ApIGl0ZW1zCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90LWNhY2hlLXNlc3Npb24tY29tcGxldGlvbnMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIChwbGlzdC1nZXQgcmVzcCA6 aXNJbmNvbXBsZXRlKSA6anNvbi1mYWxzZSkpKQogICAgICAgICAgICAgICAgICAgICAgIChyZXR2 YWwKICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhcgogICAgICAgICAgICAgICAgICAgICAg ICAgKGpzb25ycGMtbGFtYmRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCZyZXN0IGl0 ZW0gJmtleSBsYWJlbCBpbnNlcnRUZXh0IGluc2VydFRleHRGb3JtYXQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGV4dEVkaXQgJmFsbG93LW90aGVyLWtleXMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKChwcm94eQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgU25pcHBldCBvciB0ZXh0RWRpdCwgaXQncyBzYWZlIHRvCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBkaXNwbGF5L2luc2VydCB0aGUgbGFiZWwgc2luY2UK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGl0J2xsIGJlIGFkanVzdGVkLiAg SWYgbm8gdXNhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBpbnNlcnRU ZXh0IGF0IGFsbCwgbGFiZWwgaXMgYmVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IHRvby4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kICgob3Ig KGVxbCBpbnNlcnRUZXh0Rm9ybWF0IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRleHRFZGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChudWxsIGluc2VydFRleHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmctZW1wdHktcCBpbnNlcnRUZXh0KSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0tbGVmdCBsYWJlbCkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCBpbnNlcnRUZXh0KSkpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKHplcm9wIChsZW5ndGggcHJveHkp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IDAgMSAn ZWdsb3QtLWxzcC1pdGVtIGl0ZW0gcHJveHkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByb3h5KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zKSkpCiAgICAgICAgICAgICAg ICAgIDs7ICh0cmFjZS12YWx1ZXMgIlJlcXVlc3RlZCIgKGxlbmd0aCBwcm94aWVzKSBjYWNoZXAg Ym91bmRzKQogICAgICAgICAgICAgICAgICAoc2V0cSBlZ2xvdC0tY2FwZi1zZXNzaW9uCiAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBjYWNoZXAgKGxpc3QgYm91bmRzIHJldHZhbCByZXNvbHZl ZCBvcmlnLXBvcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5k cy1zdHJpbmcpIDpub25lKSkKICAgICAgICAgICAgICAgICAgKHNldHEgbG9jYWwtY2FjaGUgcmV0 dmFsKSkpKSkKICAgICAgICAgICAocmVzb2x2ZS1tYXliZQogICAgICAgICAgICA7OyBNYXliZSBj b21wbGV0aW9uL3Jlc29sdmUgSlNPTiBvYmplY3QgYGxzcC1jb21wJyBpbnRvCiAgICAgICAgICAg IDs7IGFub3RoZXIgSlNPTiBvYmplY3QsIGlmIGF0IGFsbCBwb3NzaWJsZS4gIE90aGVyd2lzZSwK ICAgICAgICAgICAgOzsganVzdCByZXR1cm4gbHNwLWNvbXAuCiAgICAgICAgICAgIChsYW1iZGEg KGxzcC1jb21wKQogICAgICAgICAgICAgIChvciAoZ2V0aGFzaCBsc3AtY29tcCByZXNvbHZlZCkK ICAgICAgICAgICAgICAgICAgKHNldGYgKGdldGhhc2ggbHNwLWNvbXAgcmVzb2x2ZWQpCiAgICAg ICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6Y29tcGxl dGlvblByb3ZpZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOnJlc29sdmVQcm92aWRlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBsaXN0LWdldCBsc3AtY29tcCA6ZGF0YSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZWdsb3QtLXJlcXVlc3Qgc2VydmVyIDpjb21wbGV0aW9uSXRlbS9yZXNvbHZlCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHNwLWNvbXAgOmNhbmNlbC1v bi1pbnB1dCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgIGxzcC1jb21wKSkpKSkpCiAgICAg ICh3aGVuIChhbmQgKGNvbnNwIGVnbG90LS1jYXBmLXNlc3Npb24pCiAgICAgICAgICAgICAgICAg KD0gKGNhciBib3VuZHMpIChjYXIgKG50aCAwIGVnbG90LS1jYXBmLXNlc3Npb24pKSkKICAgICAg ICAgICAgICAgICAoPj0gKGNkciBib3VuZHMpIChjZHIgKG50aCAwIGVnbG90LS1jYXBmLXNlc3Np b24pKSkpCiAgICAgICAgKHNldHEgbG9jYWwtY2FjaGUgKG50aCAxIGVnbG90LS1jYXBmLXNlc3Np b24pCiAgICAgICAgICAgICAgcmVzb2x2ZWQgKG50aCAyIGVnbG90LS1jYXBmLXNlc3Npb24pCiAg ICAgICAgICAgICAgb3JpZy1wb3MgKG50aCAzIGVnbG90LS1jYXBmLXNlc3Npb24pCiAgICAgICAg ICAgICAgYm91bmRzLXN0cmluZyAobnRoIDQgZWdsb3QtLWNhcGYtc2Vzc2lvbikpCiAgICAgICAg OzsgKHRyYWNlLXZhbHVlcyAiUmVjYWxsaW5nIGNhY2hlIiAobGVuZ3RoIGxvY2FsLWNhY2hlKSBi b3VuZHMgb3JpZy1wb3MpCiAgICAgICAgKQogICAgICAobGlzdAogICAgICAgKGNhciBib3VuZHMp CiAgICAgICAoY2RyIGJvdW5kcykKICAgICAgIChsYW1iZGEgKHBhdHRlcm4gcHJlZCBhY3Rpb24p CiAgICAgICAgIChjb25kCiAgICAgICAgICAoKGVxIGFjdGlvbiAnbWV0YWRhdGEpIG1ldGFkYXRh KSAgICAgICAgICAgICAgIDsgbWV0YWRhdGEKICAgICAgICAgICgoZXEgYWN0aW9uICdsYW1iZGEp ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB0ZXN0LWNvbXBsZXRpb24KICAgICAgICAgICAo dGVzdC1jb21wbGV0aW9uIHBhdHRlcm4gKGZ1bmNhbGwgcHJveGllcykpKQogICAgICAgICAgKChl cSAoY2FyLXNhZmUgYWN0aW9uKSAnYm91bmRhcmllcykgbmlsKSAgICAgICA7IGJvdW5kYXJpZXMK ICAgICAgICAgICgobnVsbCBhY3Rpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OyB0cnktY29tcGxldGlvbgogICAgICAgICAgICh0cnktY29tcGxldGlvbiBwYXR0ZXJuIChmdW5j YWxsIHByb3hpZXMpKSkKICAgICAgICAgICgoZXEgYWN0aW9uIHQpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOyBhbGwtY29tcGxldGlvbnMKICAgICAgICAgICAobGV0ICgoY29tcHMg KGZ1bmNhbGwgcHJveGllcykpKQogICAgICAgICAgICAgKGRvbGlzdCAoYyBjb21wcykgKGVnbG90 LS1kdW1iLWZsZXggcGF0dGVybiBjIHQpKQogICAgICAgICAgICAgKGFsbC1jb21wbGV0aW9ucwog ICAgICAgICAgICAgICIiCiAgICAgICAgICAgICAgY29tcHMKICAgICAgICAgICAgICAobGFtYmRh IChwcm94eSkKICAgICAgICAgICAgICAgIChsZXQqICgoaXRlbSAoZ2V0LXRleHQtcHJvcGVydHkg MCAnZWdsb3QtLWxzcC1pdGVtIHByb3h5KSkKICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVy VGV4dCAocGxpc3QtZ2V0IGl0ZW0gOmZpbHRlclRleHQpKSkKICAgICAgICAgICAgICAgICAgKGFu ZCAob3IgKG51bGwgcHJlZCkgKGZ1bmNhbGwgcHJlZCBwcm94eSkpCiAgICAgICAgICAgICAgICAg ICAgICAgKGVnbG90LS1kdW1iLWZsZXgKICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiAo b3IgZmlsdGVyVGV4dCBwcm94eSkgY29tcGxldGlvbi1pZ25vcmUtY2FzZSkpKSkpKSkpKQogICAg ICAgOmFubm90YXRpb24tZnVuY3Rpb24KICAgICAgIChsYW1iZGEgKHByb3h5KQogICAgICAgICAo ZWdsb3QtLWRiaW5kICgoQ29tcGxldGlvbkl0ZW0pIGRldGFpbCBraW5kKQogICAgICAgICAgICAg KGdldC10ZXh0LXByb3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBwcm94eSkKICAgICAgICAgICAo bGV0KiAoKGRldGFpbCAoYW5kIChzdHJpbmdwIGRldGFpbCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChub3QgKHN0cmluZz0gZGV0YWlsICIiKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRldGFpbCkpCiAgICAgICAgICAgICAgICAgIChhbm5vdGF0aW9uCiAgICAgICAg ICAgICAgICAgICAob3IgZGV0YWlsCiAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoYXNzb2Mg a2luZCBlZ2xvdC0ta2luZC1uYW1lcykpKSkpCiAgICAgICAgICAgICAod2hlbiBhbm5vdGF0aW9u CiAgICAgICAgICAgICAgIChjb25jYXQgIiAiCiAgICAgICAgICAgICAgICAgICAgICAgKHByb3Bl cnRpemUgYW5ub3RhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNl ICdmb250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKSkpKSkpCiAgICAgICA6Y29tcGFueS1raW5k CiAgICAgICA7OyBBc3NvY2lhdGUgZWFjaCBsc3AtaXRlbSB3aXRoIGEgbHNwLWtpbmQgc3ltYm9s LgogICAgICAgKGxhbWJkYSAocHJveHkpCiAgICAgICAgICh3aGVuLWxldCogKChsc3AtaXRlbSAo Z2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC1pdGVtIHByb3h5KSkKICAgICAgICAgICAg ICAgICAgICAgKGtpbmQgKGFsaXN0LWdldCAocGxpc3QtZ2V0IGxzcC1pdGVtIDpraW5kKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90LS1raW5kLW5hbWVzKSkpCiAg ICAgICAgICAgKHBjYXNlIGtpbmQKICAgICAgICAgICAgICgiRW51bU1lbWJlciIgJ2VudW0tbWVt YmVyKQogICAgICAgICAgICAgKCJUeXBlUGFyYW1ldGVyIiAndHlwZS1wYXJhbWV0ZXIpCiAgICAg ICAgICAgICAoXyAoaW50ZXJuIChkb3duY2FzZSBraW5kKSkpKSkpCiAgICAgICA6Y29tcGFueS1k ZXByZWNhdGVkCiAgICAgICAobGFtYmRhIChwcm94eSkKICAgICAgICAgKHdoZW4tbGV0ICgobHNw LWl0ZW0gKGdldC10ZXh0LXByb3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBwcm94eSkpKQogICAg ICAgICAgIChvciAoc2VxLWNvbnRhaW5zLXAgKHBsaXN0LWdldCBsc3AtaXRlbSA6dGFncykKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpCiAgICAgICAgICAgICAgIChlcSB0IChwbGlz dC1nZXQgbHNwLWl0ZW0gOmRlcHJlY2F0ZWQpKSkpKQogICAgICAgOmNvbXBhbnktZG9jc2lnCiAg ICAgICA7OyBGSVhNRTogYXV0b0ltcG9ydFRleHQgaXMgc3BlY2lmaWMgdG8gdGhlIHB5cmlnaHQg bGFuZ3VhZ2Ugc2VydmVyCiAgICAgICAobGFtYmRhIChwcm94eSkKICAgICAgICAgKHdoZW4tbGV0 KiAoKGxzcC1jb21wIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNwLWl0ZW0gcHJveHkp KQogICAgICAgICAgICAgICAgICAgICAoZGF0YSAocGxpc3QtZ2V0IChmdW5jYWxsIHJlc29sdmUt bWF5YmUgbHNwLWNvbXApIDpkYXRhKSkKICAgICAgICAgICAgICAgICAgICAgKGltcG9ydC10ZXh0 IChwbGlzdC1nZXQgZGF0YSA6YXV0b0ltcG9ydFRleHQpKSkKICAgICAgICAgICBpbXBvcnQtdGV4 dCkpCiAgICAgICA6Y29tcGFueS1kb2MtYnVmZmVyCiAgICAgICAobGFtYmRhIChwcm94eSkKICAg ICAgICAgKGxldCogKChkb2N1bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgKGxldCAoKGxzcC1j b21wIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNwLWl0ZW0gcHJveHkpKSkKICAgICAg ICAgICAgICAgICAgIChwbGlzdC1nZXQgKGZ1bmNhbGwgcmVzb2x2ZS1tYXliZSBsc3AtY29tcCkg OmRvY3VtZW50YXRpb24pKSkKICAgICAgICAgICAgICAgIChmb3JtYXR0ZWQgKGFuZCBkb2N1bWVu dGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1mb3JtYXQtbWFy a3VwIGRvY3VtZW50YXRpb24pKSkpCiAgICAgICAgICAgKHdoZW4gZm9ybWF0dGVkCiAgICAgICAg ICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIiAqZWdsb3QgZG9j KiIpCiAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpCiAgICAgICAgICAgICAgIChpbnNlcnQg Zm9ybWF0dGVkKQogICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKSkpKQogICAgICAgOmNv bXBhbnktcmVxdWlyZS1tYXRjaCAnbmV2ZXIKICAgICAgIDpjb21wYW55LXByZWZpeC1sZW5ndGgK ICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAoZ290by1jaGFyIChjYXIgYm91bmRzKSkK ICAgICAgICAgKHdoZW4gKGxpc3RwIGNvbXBsZXRpb24tY2FwYWJpbGl0eSkKICAgICAgICAgICAo bG9va2luZy1iYWNrCiAgICAgICAgICAgIChyZWdleHAtb3B0CiAgICAgICAgICAgICAoY2wtY29l cmNlIChjbC1nZXRmIGNvbXBsZXRpb24tY2FwYWJpbGl0eSA6dHJpZ2dlckNoYXJhY3RlcnMpICds aXN0KSkKICAgICAgICAgICAgKGVnbG90LS1ib2wpKSkpCiAgICAgICA6ZXhpdC1mdW5jdGlvbgog ICAgICAgKGxhbWJkYSAocHJveHkgc3RhdHVzKQogICAgICAgICAoZWdsb3QtLWNhcGYtc2Vzc2lv bi1mbHVzaCkKICAgICAgICAgKHdoZW4gKG1lbXEgc3RhdHVzICcoZmluaXNoZWQgZXhhY3QpKQog ICAgICAgICAgIDs7IFRvIGFzc2lzdCBpbiB1c2luZyB0aGlzIHdob2xlIGBjb21wbGV0aW9uLWF0 LXBvaW50JwogICAgICAgICAgIDs7IGZ1bmN0aW9uIGluc2lkZSBgY29tcGxldGlvbi1pbi1yZWdp b24nLCBlbnN1cmUgdGhlIGV4aXQKICAgICAgICAgICA7OyBmdW5jdGlvbiBydW5zIGluIHRoZSBi dWZmZXIgd2hlcmUgdGhlIGNvbXBsZXRpb24gd2FzCiAgICAgICAgICAgOzsgdHJpZ2dlcmVkIGZy b20uICBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBpbiBFbWFjcyBpdHNlbGYuCiAgICAgICAgICAg OzsgKGdpdGh1YiM1MDUpCiAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGlmIChtaW5p YnVmZmVycCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1idWZm ZXIgKG1pbmlidWZmZXItc2VsZWN0ZWQtd2luZG93KSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgICAgICAoZWdsb3QtLWRiaW5kICgo Q29tcGxldGlvbkl0ZW0pIGluc2VydFRleHRGb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluc2VydFRleHQgdGV4dEVkaXQgYWRkaXRpb25hbFRleHRFZGl0cyBsYWJlbCkKICAgICAg ICAgICAgICAgICAoZnVuY2FsbAogICAgICAgICAgICAgICAgICByZXNvbHZlLW1heWJlCiAgICAg ICAgICAgICAgICAgIChvciAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC1pdGVtIHBy b3h5KQogICAgICAgICAgICAgICAgICAgICAgOzsgV2hlbiBzZWxlY3RpbmcgZnJvbSB0aGUgKkNv bXBsZXRpb25zKgogICAgICAgICAgICAgICAgICAgICAgOzsgYnVmZmVyLCBgcHJveHknIHdvbid0 IGhhdmUgYW55IHByb3BlcnRpZXMuCiAgICAgICAgICAgICAgICAgICAgICA7OyBBIGxvb2t1cCBz aG91bGQgZml4IHRoYXQgKGdpdGh1YiMxNDgpCiAgICAgICAgICAgICAgICAgICAgICAoZ2V0LXRl eHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAwICdlZ2xvdC0tbHNwLWl0ZW0KICAg ICAgICAgICAgICAgICAgICAgICAoY2wtZmluZCBwcm94eSAoZnVuY2FsbCBwcm94aWVzKSA6dGVz dCAjJ3N0cmluZz0pKSkpCiAgICAgICAgICAgICAgIChsZXQgKChzbmlwcGV0LWZuIChhbmQgKGVx bCBpbnNlcnRUZXh0Rm9ybWF0IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVnbG90LS1zbmlwcGV0LWV4cGFuc2lvbi1mbikpKSkKICAgICAgICAgICAgICAgICAoY29u ZCAodGV4dEVkaXQKICAgICAgICAgICAgICAgICAgICAgICAgOzsgUmV2ZXJ0IGJ1ZmZlciBiYWNr IHRvIHN0YXRlIHdoZW4gdGhlIGVkaXQKICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2FzIG9i dGFpbmVkIGZyb20gc2VydmVyLiBJZiBhIGBwcm94eScKICAgICAgICAgICAgICAgICAgICAgICAg OzsgImJhciIgd2FzIG9idGFpbmVkIGZyb20gYSBidWZmZXIgd2l0aAogICAgICAgICAgICAgICAg ICAgICAgICA7OyAiZm9vLmIiLCB0aGUgTFNQIGVkaXQgYXBwbGllcyB0byB0aGF0CiAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHN0YXRlLCBfbm90XyB0aGUgY3VycmVudCAiZm9vLmJhciIuCiAg ICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIG9yaWctcG9zIChwb2ludCkpCiAg ICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgKHN1YnN0cmluZyBib3VuZHMtc3RyaW5nICgt IG9yaWctcG9zIChjYXIgYm91bmRzKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3Qt LWRiaW5kICgoVGV4dEVkaXQpIHJhbmdlIG5ld1RleHQpIHRleHRFZGl0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBjYXNlLWxldCAoKGAoLGJlZyAuICxlbmQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC1yYW5nZS1yZWdpb24gcmFuZ2UpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGJlZykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIChvciBzbmlwcGV0LWZuICMnaW5zZXJ0KSBuZXdUZXh0KSkpKQogICAgICAg ICAgICAgICAgICAgICAgIChzbmlwcGV0LWZuCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IEEg c25pcHBldCBzaG91bGQgYmUgaW5zZXJ0ZWQsIGJ1dCB1c2luZyBwbGFpbgogICAgICAgICAgICAg ICAgICAgICAgICA7OyBgaW5zZXJ0VGV4dCcuICBUaGlzIHJlcXVpcmVzIHVzIHRvIGRlbGV0ZSB0 aGUKICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2hvbGUgY29tcGxldGlvbiwgc2luY2UgYGlu c2VydFRleHQnIGlzIHRoZSBmdWxsCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IGNvbXBsZXRp b24ncyB0ZXh0LgogICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLXJlZ2lvbiAoLSAocG9p bnQpIChsZW5ndGggcHJveHkpKSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAoZnVu Y2FsbCBzbmlwcGV0LWZuIChvciBpbnNlcnRUZXh0IGxhYmVsKSkpKQogICAgICAgICAgICAgICAg ICh3aGVuIChjbC1wbHVzcCAobGVuZ3RoIGFkZGl0aW9uYWxUZXh0RWRpdHMpKQogICAgICAgICAg ICAgICAgICAgKGVnbG90LS1hcHBseS10ZXh0LWVkaXRzIGFkZGl0aW9uYWxUZXh0RWRpdHMpKSkK ICAgICAgICAgICAgICAgKGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENoYW5nZSkpKSkp KSkpKQoKKGRlZnVuIGVnbG90LS1ob3Zlci1pbmZvIChjb250ZW50cyAmb3B0aW9uYWwgX3Jhbmdl KQogIChtYXBjb25jYXQgIydlZ2xvdC0tZm9ybWF0LW1hcmt1cAogICAgICAgICAgICAgKGlmICh2 ZWN0b3JwIGNvbnRlbnRzKSBjb250ZW50cyAobGlzdCBjb250ZW50cykpICJcbiIpKQoKKGRlZnVu IGVnbG90LS1zaWctaW5mbyAoc2lnICZvcHRpb25hbCBzaWctYWN0aXZlIGJyaWVmcCkKICAoZWds b3QtLWRiaW5kICgoU2lnbmF0dXJlSW5mb3JtYXRpb24pCiAgICAgICAgICAgICAgICAgKCg6bGFi ZWwgc2lnbGFiZWwpKQogICAgICAgICAgICAgICAgICgoOmRvY3VtZW50YXRpb24gc2lnZG9jKSkg cGFyYW1ldGVycyBhY3RpdmVQYXJhbWV0ZXIpCiAgICAgIHNpZwogICAgKHdpdGgtdGVtcC1idWZm ZXIKICAgICAgKGluc2VydCBzaWdsYWJlbCkKICAgICAgOzsgQWRkIGRvY3VtZW50YXRpb24sIGlu ZGVudGVkIHNvIHdlIGNhbiBkaXN0aW5ndWlzaCBtdWx0aXBsZSBzaWduYXR1cmVzCiAgICAgICh3 aGVuLWxldCAoZG9jIChhbmQgKG5vdCBicmllZnApIHNpZ2RvYyAoZWdsb3QtLWZvcm1hdC1tYXJr dXAgc2lnZG9jKSkpCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAoaW5z ZXJ0ICJcbiIgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiXiIgIiAgIiBkb2MpKSkKICAgICAg OzsgVHJ5IHRvIGhpZ2hsaWdodCBmdW5jdGlvbiBuYW1lIG9ubHkKICAgICAgKGxldCAoZmlyc3Qt cGFybGFiZWwpCiAgICAgICAgKGNvbmQgKChhbmQgKGNsLXBsdXNwIChsZW5ndGggcGFyYW1ldGVy cykpCiAgICAgICAgICAgICAgICAgICAgKHZlY3RvcnAgKHNldHEgZmlyc3QtcGFybGFiZWwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IChhcmVmIHBhcmFtZXRl cnMgMCkgOmxhYmVsKSkpKQogICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgKGVsdCBmaXJzdC1wYXJsYWJlbCAwKSkKICAgICAgICAgICAgICAg IChza2lwLXN5bnRheC1iYWNrd2FyZCAiXnciKQogICAgICAgICAgICAgICAgKGFkZC1mYWNlLXRl eHQtcHJvcGVydHkgKHBvaW50LW1pbikgKHBvaW50KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2ZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UpKSkKICAgICAgICAg ICAgICAoKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQt bWluKSkKICAgICAgICAgICAgICAgICAobG9va2luZy1hdCAiXFwoW14oXSpcXCkoW14pXSopIikp CiAgICAgICAgICAgICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IChtYXRjaC1iZWdpbm5pbmcg MSkgKG1hdGNoLWVuZCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Zm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkpKSkKICAgICAgOzsgTm93IHRvIHRoZSBwYXJh bWV0ZXJzCiAgICAgIChjbC1sb29wCiAgICAgICB3aXRoIGFjdGl2ZS1wYXJhbSA9IChvciBzaWct YWN0aXZlIGFjdGl2ZVBhcmFtZXRlcikKICAgICAgIGZvciBpIGZyb20gMCBmb3IgcGFyYW1ldGVy IGFjcm9zcyBwYXJhbWV0ZXJzIGRvCiAgICAgICAoZWdsb3QtLWRiaW5kICgoUGFyYW1ldGVySW5m b3JtYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAoKDpsYWJlbCBwYXJsYWJlbCkpCiAgICAg ICAgICAgICAgICAgICAgICAoKDpkb2N1bWVudGF0aW9uIHBhcmRvYykpKQogICAgICAgICAgIHBh cmFtZXRlcgogICAgICAgICA7OyAuLi5wZXJoYXBzIGhpZ2hsaWdodCBpdCBpbiB0aGUgZm9ybWFs cyBsaXN0CiAgICAgICAgICh3aGVuIChlcSBpIGFjdGl2ZS1wYXJhbSkKICAgICAgICAgICAoc2F2 ZS1leGN1cnNpb24KICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAg ICAgICAocGNhc2UtbGV0CiAgICAgICAgICAgICAgICAgKChgKCxiZWcgLGVuZCkKICAgICAgICAg ICAgICAgICAgIChpZiAoc3RyaW5ncCBwYXJsYWJlbCkKICAgICAgICAgICAgICAgICAgICAgICAo bGV0ICgoY2FzZS1mb2xkLXNlYXJjaCBuaWwpKQogICAgICAgICAgICAgICAgICAgICAgICAgKGFu ZCAoc2VhcmNoLWZvcndhcmQgcGFybGFiZWwgKGxpbmUtZW5kLXBvc2l0aW9uKSB0KQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAobWF0Y2gtYmVnaW5uaW5nIDApIChtYXRjaC1l bmQgMCkpKSkKICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJzErIChhcHBlbmQgcGFybGFi ZWwgbmlsKSkpKSkKICAgICAgICAgICAgICAgKGlmIChhbmQgYmVnIGVuZCkKICAgICAgICAgICAg ICAgICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5CiAgICAgICAgICAgICAgICAgICAgYmVnIGVu ZAogICAgICAgICAgICAgICAgICAgICdlbGRvYy1oaWdobGlnaHQtZnVuY3Rpb24tYXJndW1lbnQp KSkpKQogICAgICAgICA7OyAuLi5hbmQvb3IgbWF5YmUgYWRkIGl0cyBkb2Mgb24gYSBsaW5lIGJ5 IGl0cyBvd24uCiAgICAgICAgIChsZXQgKGZwYXJkb2MpCiAgICAgICAgICAgKHdoZW4gKGFuZCBw YXJkb2MgKG5vdCBicmllZnApCiAgICAgICAgICAgICAgICAgICAgICAobm90IChzdHJpbmctZW1w dHktcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZnBhcmRvYyAoZWdsb3QtLWZv cm1hdC1tYXJrdXAgcGFyZG9jKSkpKSkKICAgICAgICAgICAgIChpbnNlcnQgIlxuICAiCiAgICAg ICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplCiAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0 cmluZ3AgcGFybGFiZWwpIHBhcmxhYmVsCiAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAj J3N1YnN0cmluZyBzaWdsYWJlbCAobWFwY2FyICMnMSsgcGFybGFiZWwpKSkKICAgICAgICAgICAg ICAgICAgICAgICdmYWNlIChhbmQgKGVxIGkgYWN0aXZlLXBhcmFtKSAnZWxkb2MtaGlnaGxpZ2h0 LWZ1bmN0aW9uLWFyZ3VtZW50KSkKICAgICAgICAgICAgICAgICAgICAgIjogIiBmcGFyZG9jKSkp KSkKICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkpCgooZGVmdW4gZWdsb3Qtc2lnbmF0dXJlLWVsZG9j LWZ1bmN0aW9uIChjYikKICAiQSBtZW1iZXIgb2YgYGVsZG9jLWRvY3VtZW50YXRpb24tZnVuY3Rp b25zJywgZm9yIHNpZ25hdHVyZXMuIgogICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6c2ln bmF0dXJlSGVscFByb3ZpZGVyKQogICAgKGxldCAoKGJ1ZiAoY3VycmVudC1idWZmZXIpKSkKICAg ICAgKGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1v ci1sb3NlKQogICAgICAgOnRleHREb2N1bWVudC9zaWduYXR1cmVIZWxwIChlZ2xvdC0tVGV4dERv Y3VtZW50UG9zaXRpb25QYXJhbXMpCiAgICAgICA6c3VjY2Vzcy1mbgogICAgICAgKGVnbG90LS1s YW1iZGEgKChTaWduYXR1cmVIZWxwKQogICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZXMg YWN0aXZlU2lnbmF0dXJlIChhY3RpdmVQYXJhbWV0ZXIgMCkpCiAgICAgICAgIChlZ2xvdC0td2hl bi1idWZmZXItd2luZG93IGJ1ZgogICAgICAgICAgIChsZXQgKChhY3RpdmUtc2lnIChhbmQgKGNs LXBsdXNwIChsZW5ndGggc2lnbmF0dXJlcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYXJlZiBzaWduYXR1cmVzIChvciBhY3RpdmVTaWduYXR1cmUgMCkpKSkpCiAgICAgICAg ICAgICAoaWYgKG5vdCBhY3RpdmUtc2lnKSAoZnVuY2FsbCBjYiBuaWwpCiAgICAgICAgICAgICAg IChmdW5jYWxsCiAgICAgICAgICAgICAgICBjYiAobWFwY29uY2F0IChsYW1iZGEgKHMpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1zaWctaW5mbyBzIChhbmQgKGVxIHMg YWN0aXZlLXNpZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhY3RpdmVQYXJhbWV0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuaWwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aWduYXR1cmVzICJcbiIpCiAgICAgICAgICAgICAgICA6ZWNobyAoZWdsb3QtLXNpZy1pbmZvIGFj dGl2ZS1zaWcgYWN0aXZlUGFyYW1ldGVyIHQpKSkpKSkKICAgICAgIDpkZWZlcnJlZCA6dGV4dERv Y3VtZW50L3NpZ25hdHVyZUhlbHApKQogICAgdCkpCgooZGVmdW4gZWdsb3QtaG92ZXItZWxkb2Mt ZnVuY3Rpb24gKGNiKQogICJBIG1lbWJlciBvZiBgZWxkb2MtZG9jdW1lbnRhdGlvbi1mdW5jdGlv bnMnLCBmb3IgaG92ZXIuIgogICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6aG92ZXJQcm92 aWRlcikKICAgIChsZXQgKChidWYgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAgIChqc29ucnBjLWFz eW5jLXJlcXVlc3QKICAgICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKICAgICAg IDp0ZXh0RG9jdW1lbnQvaG92ZXIgKGVnbG90LS1UZXh0RG9jdW1lbnRQb3NpdGlvblBhcmFtcykK ICAgICAgIDpzdWNjZXNzLWZuIChlZ2xvdC0tbGFtYmRhICgoSG92ZXIpIGNvbnRlbnRzIHJhbmdl KQogICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdoZW4tYnVmZmVyLXdpbmRvdyBidWYKICAg ICAgICAgICAgICAgICAgICAgICAobGV0ICgoaW5mbyAodW5sZXNzIChzZXEtZW1wdHktcCBjb250 ZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0taG92ZXIt aW5mbyBjb250ZW50cyByYW5nZSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxs IGNiIGluZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplY2hvIChhbmQgaW5m byAoc3RyaW5nLW1hdGNoICJcbiIgaW5mbykpKSkpKQogICAgICAgOmRlZmVycmVkIDp0ZXh0RG9j dW1lbnQvaG92ZXIpKQogICAgKGVnbG90LS1oaWdobGlnaHQtcGlnZ3liYWNrIGNiKQogICAgdCkp CgooZGVmdmFyIGVnbG90LS1oaWdobGlnaHRzIG5pbCAiT3ZlcmxheXMgZm9yIHRleHREb2N1bWVu dC9kb2N1bWVudEhpZ2hsaWdodC4iKQoKKGRlZnVuIGVnbG90LS1oaWdobGlnaHQtcGlnZ3liYWNr IChfY2IpCiAgIlJlcXVlc3QgYW5kIGhhbmRsZSBgOnRleHREb2N1bWVudC9kb2N1bWVudEhpZ2hs aWdodCcuIgogIDs7IEZJWE1FOiBPYnZpb3VzbHksIHRoaXMgaXMganVzdCBwaWdneSBiYWNraW5n IG9uIGVsZG9jJ3MgY2FsbHMgZm9yCiAgOzsgY29udmVuaWVuY2UsIGFzIHNob3duIGJ5IHRoZSBm YWN0IHRoYXQgd2UganVzdCBpZ25vcmUgY2IuCiAgKGxldCAoKGJ1ZiAoY3VycmVudC1idWZmZXIp KSkKICAgICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1lbnRIaWdobGlnaHRQcm92 aWRlcikKICAgICAgKGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgKGVnbG90LS1jdXJyZW50 LXNlcnZlci1vci1sb3NlKQogICAgICAgOnRleHREb2N1bWVudC9kb2N1bWVudEhpZ2hsaWdodCAo ZWdsb3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zKQogICAgICAgOnN1Y2Nlc3MtZm4KICAg ICAgIChsYW1iZGEgKGhpZ2hsaWdodHMpCiAgICAgICAgIChtYXBjICMnZGVsZXRlLW92ZXJsYXkg ZWdsb3QtLWhpZ2hsaWdodHMpCiAgICAgICAgIChzZXRxIGVnbG90LS1oaWdobGlnaHRzCiAgICAg ICAgICAgICAgIChlZ2xvdC0td2hlbi1idWZmZXItd2luZG93IGJ1ZgogICAgICAgICAgICAgICAg IChtYXBjYXIKICAgICAgICAgICAgICAgICAgKGVnbG90LS1sYW1iZGEgKChEb2N1bWVudEhpZ2hs aWdodCkgcmFuZ2UpCiAgICAgICAgICAgICAgICAgICAgKHBjYXNlLWxldCAoKGAoLGJlZyAuICxl bmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC1yYW5nZS1yZWdpb24g cmFuZ2UpKSkKICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChvdiAobWFrZS1vdmVybGF5IGJl ZyBlbmQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdmYWNlICdl Z2xvdC1oaWdobGlnaHQtc3ltYm9sLWZhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgIChvdmVy bGF5LXB1dCBvdiAnbW9kaWZpY2F0aW9uLWhvb2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBgKCwobGFtYmRhIChvICZyZXN0IF8pIChkZWxldGUtb3ZlcmxheSBvKSkpKQog ICAgICAgICAgICAgICAgICAgICAgICBvdikpKQogICAgICAgICAgICAgICAgICBoaWdobGlnaHRz KSkpKQogICAgICAgOmRlZmVycmVkIDp0ZXh0RG9jdW1lbnQvZG9jdW1lbnRIaWdobGlnaHQpCiAg ICAgIG5pbCkpKQoKKGRlZnVuIGVnbG90LS1pbWVudS1TeW1ib2xJbmZvcm1hdGlvbiAocmVzKQog ICJDb21wdXRlIGBpbWVudS0taW5kZXgtYWxpc3QnIGZvciBSRVMgdmVjdG9yIG9mIFN5bWJvbElu Zm9ybWF0aW9uLiIKICAobWFwY2FyCiAgIChwY2FzZS1sYW1iZGEgKGAoLGtpbmQgLiAsb2Jqcykp CiAgICAgKGNvbnMKICAgICAgKGFsaXN0LWdldCBraW5kIGVnbG90LS1zeW1ib2wta2luZC1uYW1l cyAiVW5rbm93biIpCiAgICAgIChtYXBjYW4KICAgICAgIChwY2FzZS1sYW1iZGEgKGAoLGNvbnRh aW5lciAuICxvYmpzKSkKICAgICAgICAgKGxldCAoKGVsZW1zIChtYXBjYXIKICAgICAgICAgICAg ICAgICAgICAgICAoZWdsb3QtLWxhbWJkYSAoKFN5bWJvbEluZm9ybWF0aW9uKSBraW5kIG5hbWUg bG9jYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocmVnIChlZ2xvdC1yYW5n ZS1yZWdpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQg bG9jYXRpb24gOnJhbmdlKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2luZCAo YWxpc3QtZ2V0IGtpbmQgZWdsb3QtLXN5bWJvbC1raW5kLW5hbWVzKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25zIChwcm9wZXJ0aXplIG5hbWUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2JyZWFkY3J1bWItcmVnaW9uIHJlZwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJlYWRjcnVtYi1raW5kIGtpbmQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgcmVnKSkpKQogICAgICAgICAg ICAgICAgICAgICAgIG9ianMpKSkKICAgICAgICAgICAoaWYgY29udGFpbmVyIChsaXN0IChjb25z IGNvbnRhaW5lciBlbGVtcykpIGVsZW1zKSkpCiAgICAgICAoc2VxLWdyb3VwLWJ5CiAgICAgICAg KGVnbG90LS1sYW1iZGEgKChTeW1ib2xJbmZvcm1hdGlvbikgY29udGFpbmVyTmFtZSkgY29udGFp bmVyTmFtZSkgb2JqcykpKSkKICAgKHNlcS1ncm91cC1ieSAoZWdsb3QtLWxhbWJkYSAoKFN5bWJv bEluZm9ybWF0aW9uKSBraW5kKSBraW5kKSByZXMpKSkKCihkZWZ1biBlZ2xvdC0taW1lbnUtRG9j dW1lbnRTeW1ib2wgKHJlcykKICAiQ29tcHV0ZSBgaW1lbnUtLWluZGV4LWFsaXN0JyBmb3IgUkVT IHZlY3RvciBvZiBEb2N1bWVudFN5bWJvbC4iCiAgKGNsLWxhYmVscyAoKGRmcyAoJmtleSBuYW1l IGNoaWxkcmVuIHJhbmdlIGtpbmQgJmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgICAo bGV0KiAoKHJlZyAoZWdsb3QtcmFuZ2UtcmVnaW9uIHJhbmdlKSkKICAgICAgICAgICAgICAgICAg ICAgICAoa2luZCAoYWxpc3QtZ2V0IGtpbmQgZWdsb3QtLXN5bWJvbC1raW5kLW5hbWVzKSkKICAg ICAgICAgICAgICAgICAgICAgICAobmFtZSAocHJvcGVydGl6ZSBuYW1lCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyZWFkY3J1bWItcmVnaW9uIHJlZwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdicmVhZGNydW1iLWtpbmQga2luZCkp KQogICAgICAgICAgICAgICAgICAoaWYgKHNlcS1lbXB0eS1wIGNoaWxkcmVuKQogICAgICAgICAg ICAgICAgICAgICAgKGNvbnMgbmFtZSAoY2FyIHJlZykpCiAgICAgICAgICAgICAgICAgICAgKGNv bnMgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAobGFtYmRhIChjKSAo YXBwbHkgIydkZnMgYykpIGNoaWxkcmVuKSkpKSkpCiAgICAobWFwY2FyIChsYW1iZGEgKHMpIChh cHBseSAjJ2RmcyBzKSkgcmVzKSkpCgooY2wtZGVmdW4gZWdsb3QtaW1lbnUgKCkKICAiRWdsb3Qn cyBgaW1lbnUtY3JlYXRlLWluZGV4LWZ1bmN0aW9uJy4KUmV0dXJucyBhIGxpc3QgYXMgZGVzY3Jp YmVkIGluIGRvY3N0cmluZyBvZiBgaW1lbnUtLWluZGV4LWFsaXN0Jy4iCiAgKHVubGVzcyAoZWds b3Qtc2VydmVyLWNhcGFibGUgOmRvY3VtZW50U3ltYm9sUHJvdmlkZXIpCiAgICAoY2wtcmV0dXJu LWZyb20gZWdsb3QtaW1lbnUpKQogIChsZXQqICgocmVzIChlZ2xvdC0tcmVxdWVzdCAoZWdsb3Qt LWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0 ZXh0RG9jdW1lbnQvZG9jdW1lbnRTeW1ib2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YCg6dGV4dERvY3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChlZ2xvdC0t VGV4dERvY3VtZW50SWRlbnRpZmllcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpj YW5jZWwtb24taW5wdXQgbm9uLWVzc2VudGlhbCkpCiAgICAgICAgIChoZWFkIChhbmQgKGNsLXBs dXNwIChsZW5ndGggcmVzKSkgKGVsdCByZXMgMCkpKSkKICAgICh3aGVuIGhlYWQKICAgICAgKGVn bG90LS1kY2FzZSBoZWFkCiAgICAgICAgKCgoU3ltYm9sSW5mb3JtYXRpb24pKSAoZWdsb3QtLWlt ZW51LVN5bWJvbEluZm9ybWF0aW9uIHJlcykpCiAgICAgICAgKCgoRG9jdW1lbnRTeW1ib2wpKSAo ZWdsb3QtLWltZW51LURvY3VtZW50U3ltYm9sIHJlcykpKSkpKQoKKGNsLWRlZnVuIGVnbG90LS1h cHBseS10ZXh0LWVkaXRzIChlZGl0cyAmb3B0aW9uYWwgdmVyc2lvbiBzaWxlbnQpCiAgIkFwcGx5 IEVESVRTIGZvciBjdXJyZW50IGJ1ZmZlciBpZiBhdCBWRVJTSU9OLCBvciBpZiBpdCdzIG5pbC4K SWYgU0lMRU5ULCBkb24ndCBlY2hvIHByb2dyZXNzIGluIG1vZGUtbGluZS4iCiAgKHVubGVzcyBl ZGl0cyAoY2wtcmV0dXJuLWZyb20gZWdsb3QtLWFwcGx5LXRleHQtZWRpdHMpKQogICh1bmxlc3Mg KG9yIChub3QgdmVyc2lvbikgKGVxdWFsIHZlcnNpb24gZWdsb3QtLXZlcnNpb25lZC1pZGVudGlm aWVyKSkKICAgIChqc29ucnBjLWVycm9yICJFZGl0cyBvbiBgJXMnIHJlcXVpcmUgdmVyc2lvbiAl ZCwgeW91IGhhdmUgJWQiCiAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpIHZlcnNp b24gZWdsb3QtLXZlcnNpb25lZC1pZGVudGlmaWVyKSkKICAoYXRvbWljLWNoYW5nZS1ncm91cAog ICAgKGxldCogKChjaGFuZ2UtZ3JvdXAgKHByZXBhcmUtY2hhbmdlLWdyb3VwKSkKICAgICAgICAg ICAoaG93bWFueSAobGVuZ3RoIGVkaXRzKSkKICAgICAgICAgICAocmVwb3J0ZXIgKHVubGVzcyBz aWxlbnQKICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1wcm9ncmVzcy1yZXBvcnRlcgogICAg ICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJbZWdsb3RdIGFwcGx5aW5nICVzIGVkaXRzIHRv IGAlcycuLi4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG93bWFueSAoY3VycmVu dC1idWZmZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAwIGhvd21hbnkpKSkKICAgICAgICAg ICAoZG9uZSAwKSkKICAgICAgKG1hcGMgKHBjYXNlLWxhbWJkYSAoYCgsbmV3VGV4dCAsYmVnIC4g LGVuZCkpCiAgICAgICAgICAgICAgKGxldCAoKHNvdXJjZSAoY3VycmVudC1idWZmZXIpKSkKICAg ICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgICAgICAgICAgICAgIChpbnNlcnQg bmV3VGV4dCkKICAgICAgICAgICAgICAgICAgKGxldCAoKHRlbXAgKGN1cnJlbnQtYnVmZmVyKSkp CiAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlCiAgICAgICAg ICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgKHNh dmUtcmVzdHJpY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lv biBiZWcgZW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBsYWNlLWJ1ZmZlci1jb250 ZW50cyB0ZW1wKSkpCiAgICAgICAgICAgICAgICAgICAgICAod2hlbiByZXBvcnRlcgogICAgICAg ICAgICAgICAgICAgICAgICAoZWdsb3QtLXJlcG9ydGVyLXVwZGF0ZSByZXBvcnRlciAoY2wtaW5j ZiBkb25lKSkpKSkpKSkKICAgICAgICAgICAgKG1hcGNhciAoZWdsb3QtLWxhbWJkYSAoKFRleHRF ZGl0KSByYW5nZSBuZXdUZXh0KQogICAgICAgICAgICAgICAgICAgICAgKGNvbnMgbmV3VGV4dCAo ZWdsb3QtcmFuZ2UtcmVnaW9uIHJhbmdlICdtYXJrZXJzKSkpCiAgICAgICAgICAgICAgICAgICAg KHJldmVyc2UgZWRpdHMpKSkKICAgICAgKHVuZG8tYW1hbGdhbWF0ZS1jaGFuZ2UtZ3JvdXAgY2hh bmdlLWdyb3VwKQogICAgICAod2hlbiByZXBvcnRlcgogICAgICAgIChwcm9ncmVzcy1yZXBvcnRl ci1kb25lIHJlcG9ydGVyKSkpKSkKCihkZWZ1biBlZ2xvdC0tY29uZmlybS1zZXJ2ZXItZWRpdHMg KG9yaWdpbiBfcHJlcGFyZWQpCiAgIkhlbHBlciBmb3IgYGVnbG90LS1hcHBseS13b3Jrc3BhY2Ut ZWRpdC4KT1JJR0lOIGlzIGEgc3ltYm9sIGRlc2lnbmF0aW5nIGEgY29tbWFuZC4gIFJlYWRzIHRo ZQpgZWdsb3QtY29uZmlybS1zZXJ2ZXItZWRpdHMnIHVzZXIgb3B0aW9uIGFuZCByZXR1cm5zIGEg c3ltYm9sCmxpa2UgYGRpZmYnLCBgc3VtbWFyeScgb3IgbmlsLiIKICAobGV0ICh2KQogICAgKGNv bmQgKChzeW1ib2xwIGVnbG90LWNvbmZpcm0tc2VydmVyLWVkaXRzKSBlZ2xvdC1jb25maXJtLXNl cnZlci1lZGl0cykKICAgICAgICAgICgoc2V0cSB2IChhc3NvYyBvcmlnaW4gZWdsb3QtY29uZmly bS1zZXJ2ZXItZWRpdHMpKSAoY2RyIHYpKQogICAgICAgICAgKChzZXRxIHYgKGFzc29jIHQgZWds b3QtY29uZmlybS1zZXJ2ZXItZWRpdHMpKSAoY2RyIHYpKSkpKQoKKGRlZnVuIGVnbG90LS1wcm9w b3NlLWNoYW5nZXMtYXMtZGlmZiAocHJlcGFyZWQpCiAgIkhlbHBlciBmb3IgYGVnbG90LS1hcHBs eS13b3Jrc3BhY2UtZWRpdCcuCkdvYWwgaXMgdG8gcG9wdXAgYSBgZGlmZi1tb2RlJyBidWZmZXIg Y29udGFpbmluZyBhbGwgdGhlIGNoYW5nZXMKb2YgUFJFUEFSRUQsIHJlYWR5IHRvIGFwcGx5IHdp dGggQy1jIEMtYS4gIFBSRVBBUkVEIGlzIGEKbGlzdCAoKEZJTEVOQU1FIEVESVRTIFZFUlNJT04p Li4uKS4iCiAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqRUdMT1Qg cHJvcG9zZWQgc2VydmVyIGNoYW5nZXMqIikKICAgIChidWZmZXItZGlzYWJsZS11bmRvIChjdXJy ZW50LWJ1ZmZlcikpCiAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkKICAgICAgICAgICh0 YXJnZXQgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAgIChkaWZmLW1vZGUpCiAgICAgIChlcmFzZS1i dWZmZXIpCiAgICAgIChwY2FzZS1kb2xpc3QgKGAoLHBhdGggLGVkaXRzICxfKSBwcmVwYXJlZCkK ICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgICAgKGxldCogKChkaWZmIChjdXJyZW50 LWJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgKGV4aXN0aW5nLWJ1ZiAoZmluZC1idWZmZXItdmlz aXRpbmcgcGF0aCkpCiAgICAgICAgICAgICAgICAgKGV4aXN0aW5nLWJ1Zi1sYWJlbCAocHJpbjEt dG8tc3RyaW5nIGV4aXN0aW5nLWJ1ZikpKQogICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgog ICAgICAgICAgICAgIChpZiBleGlzdGluZy1idWYKICAgICAgICAgICAgICAgICAgKGluc2VydC1i dWZmZXItc3Vic3RyaW5nIGV4aXN0aW5nLWJ1ZikKICAgICAgICAgICAgICAgIChpbnNlcnQtZmls ZS1jb250ZW50cyBwYXRoKSkKICAgICAgICAgICAgICAoZWdsb3QtLWFwcGx5LXRleHQtZWRpdHMg ZWRpdHMgbmlsIHQpCiAgICAgICAgICAgICAgKGRpZmYtbm8tc2VsZWN0IChvciBleGlzdGluZy1i dWYgcGF0aCkgKGN1cnJlbnQtYnVmZmVyKSBuaWwgdCBkaWZmKQogICAgICAgICAgICAgICh3aGVu IGV4aXN0aW5nLWJ1ZgogICAgICAgICAgICAgICAgOzsgSGVyZSB3ZSBoYXZlIHRvIHByZXRlbmQg dGhlIGxhYmVsIG9mIHRoZSB1bnNhdmVkCiAgICAgICAgICAgICAgICA7OyBidWZmZXIgaXMgdGhl IGFjdHVhbCBmaWxlLCBqdXN0IHNvIHRoYXQgd2UgY2FuCiAgICAgICAgICAgICAgICA7OyBkaWZm LWFwcGx5IHdpdGhvdXQgdHJvdWJsZXMuICBJZiB0aGVyZSdzIGEgYmV0dGVyCiAgICAgICAgICAg ICAgICA7OyB3YXksIGl0IHByb2JhYmx5IGludm9sdmVzIGNoYW5nZXMgdG8gYGRpZmYuZWwnLgog ICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgZGlmZgogICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgICAgICAgICAgICAod2hpbGUgKHNlYXJj aC1mb3J3YXJkIGV4aXN0aW5nLWJ1Zi1sYWJlbCBuaWwgdCkKICAgICAgICAgICAgICAgICAgICAo cmVwbGFjZS1tYXRjaCAoYnVmZmVyLWZpbGUtbmFtZSBleGlzdGluZy1idWYpKSkpKSkKICAgICAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgdGFyZ2V0CiAgICAgICAgICAgICAgKGluc2VydC1i dWZmZXItc3Vic3RyaW5nIGRpZmYpKSkpKSkKICAgIChzZXRxLWxvY2FsIGJ1ZmZlci1yZWFkLW9u bHkgdCkKICAgIChidWZmZXItZW5hYmxlLXVuZG8gKGN1cnJlbnQtYnVmZmVyKSkKICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCiAgICAocG9wLXRvLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQog ICAgKGZvbnQtbG9jay1lbnN1cmUpKSkKCihkZWZ1biBlZ2xvdC0tYXBwbHktd29ya3NwYWNlLWVk aXQgKHdlZGl0IG9yaWdpbikKICAiQXBwbHkgKG9yIG9mZmVyIHRvIGFwcGx5KSB0aGUgd29ya3Nw YWNlIGVkaXQgV0VESVQuCk9SSUdJTiBpcyBhIHN5bWJvbCBkZXNpZ25hdGluZyB0aGUgY29tbWFu ZCB0aGF0IG9yaWdpbmF0ZWQgdGhpcwplZGl0IHByb3Bvc2VkIGJ5IHRoZSBzZXJ2ZXIuIgogIChl Z2xvdC0tZGJpbmQgKChXb3Jrc3BhY2VFZGl0KSBjaGFuZ2VzIGRvY3VtZW50Q2hhbmdlcykgd2Vk aXQKICAgIChsZXQgKChwcmVwYXJlZAogICAgICAgICAgIChtYXBjYXIgKGVnbG90LS1sYW1iZGEg KChUZXh0RG9jdW1lbnRFZGl0KSB0ZXh0RG9jdW1lbnQgZWRpdHMpCiAgICAgICAgICAgICAgICAg ICAgIChlZ2xvdC0tZGJpbmQgKChWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyKSB1cmkg dmVyc2lvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHREb2N1bWVudAogICAgICAgICAg ICAgICAgICAgICAgIChsaXN0IChlZ2xvdC11cmktdG8tcGF0aCB1cmkpIGVkaXRzIHZlcnNpb24p KSkKICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Q2hhbmdlcykpKQogICAgICAodW5sZXNzIChh bmQgY2hhbmdlcyBkb2N1bWVudENoYW5nZXMpCiAgICAgICAgOzsgV2UgZG9uJ3Qgd2FudCBkb3Vi bGUgZWRpdHMsIGFuZCBzb21lIHNlcnZlcnMgc2VuZCBib3RoCiAgICAgICAgOzsgY2hhbmdlcyBh bmQgZG9jdW1lbnRDaGFuZ2VzLiAgVGhpcyB1bmxlc3MgZW5zdXJlcyB0aGF0IHdlCiAgICAgICAg OzsgcHJlZmVyIGRvY3VtZW50Q2hhbmdlcyBvdmVyIGNoYW5nZXMuCiAgICAgICAgKGNsLWxvb3Ag Zm9yICh1cmkgZWRpdHMpIG9uIGNoYW5nZXMgYnkgIydjZGRyCiAgICAgICAgICAgICAgICAgZG8g KHB1c2ggKGxpc3QgKGVnbG90LXVyaS10by1wYXRoIHVyaSkgZWRpdHMpIHByZXBhcmVkKSkpCiAg ICAgIChjbC1mbGV0ICgobm90ZXZlcnktdmlzaXRlZC1wICgpCiAgICAgICAgICAgICAgICAgIChj bC1ub3RldmVyeSAjJ2ZpbmQtYnVmZmVyLXZpc2l0aW5nCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobWFwY2FyICMnY2FyIHByZXBhcmVkKSkpCiAgICAgICAgICAgICAgICAoYWNjZXB0 LXAgKCkKICAgICAgICAgICAgICAgICAgKHktb3Itbi1wCiAgICAgICAgICAgICAgICAgICAoZm9y bWF0ICJbZWdsb3RdIFNlcnZlciB3YW50cyB0byBlZGl0OlxuJXNQcm9jZWVkPyAiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjbC1sb29wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBm b3IgKGYgZWRzIF8pIGluIHByZXBhcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25j YXQgKGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAlcyAoJWQg Y2hhbmdlJXMpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGxlbmd0 aCBlZHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPiAobGVuZ3Ro IGVkcykgMSkgInMiICIiKSkpKSkpCiAgICAgICAgICAgICAgICAoYXBwbHkgKCkKICAgICAgICAg ICAgICAgICAgKGNsLWxvb3AgZm9yIGVkaXQgaW4gcHJlcGFyZWQKICAgICAgICAgICAgICAgICAg IGZvciAocGF0aCBlZGl0cyB2ZXJzaW9uKSA9IGVkaXQKICAgICAgICAgICAgICAgICAgIGRvICh3 aXRoLWN1cnJlbnQtYnVmZmVyIChmaW5kLWZpbGUtbm9zZWxlY3QgcGF0aCkKICAgICAgICAgICAg ICAgICAgICAgICAgKGVnbG90LS1hcHBseS10ZXh0LWVkaXRzIGVkaXRzIHZlcnNpb24pKQogICAg ICAgICAgICAgICAgICAgZmluYWxseSAoZWxkb2MpIChlZ2xvdC0tbWVzc2FnZSAiRWRpdCBzdWNj ZXNzZnVsISIpKSkpCiAgICAgICAgKGxldCAoKGRlY2lzaW9uIChlZ2xvdC0tY29uZmlybS1zZXJ2 ZXItZWRpdHMgb3JpZ2luIHByZXBhcmVkKSkpCiAgICAgICAgICAoY29uZAogICAgICAgICAgICgo b3IgKGVxIGRlY2lzaW9uICdkaWZmKQogICAgICAgICAgICAgICAgKGFuZCAoZXEgZGVjaXNpb24g J21heWJlLWRpZmYpIChub3RldmVyeS12aXNpdGVkLXApKSkKICAgICAgICAgICAgKGVnbG90LS1w cm9wb3NlLWNoYW5nZXMtYXMtZGlmZiBwcmVwYXJlZCkpCiAgICAgICAgICAgKChvciAobWVtcSBk ZWNpc2lvbiAnKHQgc3VtbWFyeSkpCiAgICAgICAgICAgICAgICAoYW5kIChlcSBkZWNpc2lvbiAn bWF5YmUtc3VtbWFyeSkgKG5vdGV2ZXJ5LXZpc2l0ZWQtcCkpKQogICAgICAgICAgICAod2hlbiAo YWNjZXB0LXApIChhcHBseSkpKQogICAgICAgICAgICh0CiAgICAgICAgICAgIChhcHBseSkpKSkp KSkpCgooZGVmdW4gZWdsb3QtcmVuYW1lIChuZXduYW1lKQogICJSZW5hbWUgdGhlIGN1cnJlbnQg c3ltYm9sIHRvIE5FV05BTUUuIgogIChpbnRlcmFjdGl2ZQogICAobGlzdCAocmVhZC1mcm9tLW1p bmlidWZmZXIKICAgICAgICAgIChmb3JtYXQgIlJlbmFtZSBgJXMnIHRvOiAiIChvciAodGhpbmct YXQtcG9pbnQgJ3N5bWJvbCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJ1bmtub3duIHN5bWJvbCIpKQogICAgICAgICAgbmlsIG5pbCBuaWwgbmlsCiAgICAgICAg ICAoc3ltYm9sLW5hbWUgKHN5bWJvbC1hdC1wb2ludCkpKSkpCiAgKGVnbG90LXNlcnZlci1jYXBh YmxlLW9yLWxvc2UgOnJlbmFtZVByb3ZpZGVyKQogIChlZ2xvdC0tYXBwbHktd29ya3NwYWNlLWVk aXQKICAgKGVnbG90LS1yZXF1ZXN0IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKICAg ICAgICAgICAgICAgICAgIDp0ZXh0RG9jdW1lbnQvcmVuYW1lIGAoLEAoZWdsb3QtLVRleHREb2N1 bWVudFBvc2l0aW9uUGFyYW1zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6bmV3TmFtZSAsbmV3bmFtZSkpCiAgIHRoaXMtY29tbWFuZCkpCgooZGVmdW4gZWdsb3Qt LWNvZGUtYWN0aW9uLWJvdW5kcyAoKQogICJDYWxjdWxhdGUgYXBwcm9wcmlhdGUgYm91bmRzIGRl cGVuZGluZyBvbiByZWdpb24gYW5kIHBvaW50LiIKICAobGV0IChkaWFncyBib2Z0YXApCiAgICAo Y29uZCAoKHVzZS1yZWdpb24tcCkgYCgsKHJlZ2lvbi1iZWdpbm5pbmcpICwocmVnaW9uLWVuZCkp KQogICAgICAgICAgKChzZXRxIGRpYWdzIChmbHltYWtlLWRpYWdub3N0aWNzIChwb2ludCkpKQog ICAgICAgICAgIChjbC1sb29wIGZvciBkIGluIGRpYWdzCiAgICAgICAgICAgICAgICAgICAgbWlu aW1pemluZyAoZmx5bWFrZS1kaWFnbm9zdGljLWJlZyBkKSBpbnRvIGJlZwogICAgICAgICAgICAg ICAgICAgIG1heGltaXppbmcgKGZseW1ha2UtZGlhZ25vc3RpYy1lbmQgZCkgaW50byBlbmQKICAg ICAgICAgICAgICAgICAgICBmaW5hbGx5IChjbC1yZXR1cm4gKGxpc3QgYmVnIGVuZCkpKSkKICAg ICAgICAgICgoc2V0cSBib2Z0YXAgKGJvdW5kcy1vZi10aGluZy1hdC1wb2ludCAnc2V4cCkpCiAg ICAgICAgICAgKGxpc3QgKGNhciBib2Z0YXApIChjZHIgYm9mdGFwKSkpCiAgICAgICAgICAodAog ICAgICAgICAgIChsaXN0IChwb2ludCkgKHBvaW50KSkpKSkpCgooZGVmdW4gZWdsb3QtY29kZS1h Y3Rpb25zIChiZWcgJm9wdGlvbmFsIGVuZCBhY3Rpb24ta2luZCBpbnRlcmFjdGl2ZSkKICAiRmlu ZCBMU1AgY29kZSBhY3Rpb25zIG9mIHR5cGUgQUNUSU9OLUtJTkQgYmV0d2VlbiBCRUcgYW5kIEVO RC4KSW50ZXJhY3RpdmVseSwgb2ZmZXIgdG8gZXhlY3V0ZSB0aGVtLgpJZiBBQ1RJT04tS0lORCBp cyBuaWwsIGNvbnNpZGVyIGFsbCBraW5kcyBvZiBhY3Rpb25zLgpJbnRlcmFjdGl2ZWx5LCBkZWZh dWx0IEJFRyBhbmQgRU5EIHRvIHJlZ2lvbidzIGJvdW5kcyBlbHNlIEJFRyBpcwpwb2ludCBhbmQg RU5EIGlzIG5pbCwgd2hpY2ggcmVzdWx0cyBpbiBhIHJlcXVlc3QgZm9yIGNvZGUgYWN0aW9ucwph dCBwb2ludC4gIFdpdGggcHJlZml4IGFyZ3VtZW50LCBwcm9tcHQgZm9yIEFDVElPTi1LSU5ELiIK ICAoaW50ZXJhY3RpdmUKICAgYCgsQChlZ2xvdC0tY29kZS1hY3Rpb24tYm91bmRzKQogICAgICwo YW5kIGN1cnJlbnQtcHJlZml4LWFyZwogICAgICAgICAgIChjb21wbGV0aW5nLXJlYWQgIltlZ2xv dF0gQWN0aW9uIGtpbmQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoInF1aWNrZml4 IiAicmVmYWN0b3IuZXh0cmFjdCIgInJlZmFjdG9yLmlubGluZSIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInJlZmFjdG9yLnJld3JpdGUiICJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIikp KQogICAgIHQpKQogIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZS1vci1sb3NlIDpjb2RlQWN0aW9uUHJv dmlkZXIpCiAgKGxldCogKChzZXJ2ZXIgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkK ICAgICAgICAgKGFjdGlvbnMKICAgICAgICAgIChlZ2xvdC0tcmVxdWVzdAogICAgICAgICAgIHNl cnZlcgogICAgICAgICAgIDp0ZXh0RG9jdW1lbnQvY29kZUFjdGlvbgogICAgICAgICAgIChsaXN0 IDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKQogICAgICAgICAg ICAgICAgIDpyYW5nZSAobGlzdCA6c3RhcnQgKGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9uIGJl ZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVuZCAoZWdsb3QtLXBvcy10by1sc3At cG9zaXRpb24gZW5kKSkKICAgICAgICAgICAgICAgICA6Y29udGV4dAogICAgICAgICAgICAgICAg IGAoOmRpYWdub3N0aWNzCiAgICAgICAgICAgICAgICAgICBbLEAoY2wtbG9vcCBmb3IgZGlhZyBp biAoZmx5bWFrZS1kaWFnbm9zdGljcyBiZWcgZW5kKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2hlbiAoY2RyIChhc3NvYyAnZWdsb3QtbHNwLWRpYWcKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1kaWFnLWRhdGEgZGlhZykpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCBpdCldCiAgICAgICAgICAgICAg ICAgICAsQCh3aGVuIGFjdGlvbi1raW5kIGAoOm9ubHkgWyxhY3Rpb24ta2luZF0pKSkpKSkKICAg ICAgICAgOzsgUmVkbyBmaWx0ZXJpbmcsIGluIGNhc2UgdGhlIGA6b25seScgZGlkbid0IGdvIHRo cm91Z2guCiAgICAgICAgIChhY3Rpb25zIChjbC1sb29wIGZvciBhIGFjcm9zcyBhY3Rpb25zCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gKG9yIChub3QgYWN0aW9uLWtpbmQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGdpdGh1YiM4NDcKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1wcmVmaXgtcCBhY3Rpb24ta2luZCAocGxp c3QtZ2V0IGEgOmtpbmQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCBhKSkp CiAgICAoaWYgaW50ZXJhY3RpdmUKICAgICAgICAoZWdsb3QtLXJlYWQtZXhlY3V0ZS1jb2RlLWFj dGlvbiBhY3Rpb25zIHNlcnZlciBhY3Rpb24ta2luZCkKICAgICAgYWN0aW9ucykpKQoKKGRlZmFs aWFzICdlZ2xvdC1jb2RlLWFjdGlvbnMtYXQtbW91c2UgKGVnbG90LS1tb3VzZS1jYWxsICdlZ2xv dC1jb2RlLWFjdGlvbnMpCiAgIkxpa2UgYGVnbG90LWNvZGUtYWN0aW9ucycsIGJ1dCBpbnRlbmRl ZCBmb3IgbW91c2UgZXZlbnRzLiIpCgooZGVmdW4gZWdsb3QtLXJlYWQtZXhlY3V0ZS1jb2RlLWFj dGlvbiAoYWN0aW9ucyBzZXJ2ZXIgJm9wdGlvbmFsIGFjdGlvbi1raW5kKQogICJIZWxwZXIgZm9y IGludGVyYWN0aXZlIGNhbGxzIHRvIGBlZ2xvdC1jb2RlLWFjdGlvbnMnLiIKICAobGV0KiAoKG1l bnUtaXRlbXMKICAgICAgICAgIChvciAoY2wtbG9vcCBmb3IgYSBpbiBhY3Rpb25zCiAgICAgICAg ICAgICAgICAgICAgICAgY29sbGVjdCAoY29ucyAocGxpc3QtZ2V0IGEgOnRpdGxlKSBhKSkKICAg ICAgICAgICAgICAoYXBwbHkgIydlZ2xvdC0tZXJyb3IKICAgICAgICAgICAgICAgICAgICAgKGlm IGFjdGlvbi1raW5kIGAoIk5vIFwiJXNcIiBjb2RlIGFjdGlvbnMgaGVyZSIgLGFjdGlvbi1raW5k KQogICAgICAgICAgICAgICAgICAgICAgIGAoIk5vIGNvZGUgYWN0aW9ucyBoZXJlIikpKSkpCiAg ICAgICAgIChwcmVmZXJyZWQtYWN0aW9uIChjbC1maW5kLWlmCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChtZW51LWl0ZW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwbGlzdC1nZXQgKGNkciBtZW51LWl0ZW0pIDppc1ByZWZlcnJlZCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtZW51LWl0ZW1zKSkKICAgICAgICAgKGRlZmF1bHQtYWN0aW9uIChjYXIg KG9yIHByZWZlcnJlZC1hY3Rpb24gKGNhciBtZW51LWl0ZW1zKSkpKQogICAgICAgICAoY2hvc2Vu IChpZiAoYW5kIGFjdGlvbi1raW5kIChudWxsIChjYWRyIG1lbnUtaXRlbXMpKSkKICAgICAgICAg ICAgICAgICAgICAgKGNkciAoY2FyIG1lbnUtaXRlbXMpKQogICAgICAgICAgICAgICAgICAgKGlm IChsaXN0cCBsYXN0LW5vbm1lbnUtZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgICAgKHgtcG9w dXAtbWVudSBsYXN0LW5vbm1lbnUtZXZlbnQgYCgiRWdsb3QgY29kZSBhY3Rpb25zOiIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZHVt bXkiICxAbWVudS1pdGVtcykpKQogICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3NvYyAoY29t cGxldGluZy1yZWFkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJb ZWdsb3RdIFBpY2sgYW4gYWN0aW9uIChkZWZhdWx0ICVzKTogIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LWFjdGlvbikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1lbnUtaXRlbXMgbmlsIHQgbmlsIG5pbCBkZWZhdWx0LWFjdGlvbikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudS1pdGVtcykpKSkpKQogICAgKGVn bG90LWV4ZWN1dGUgc2VydmVyIGNob3NlbikpKQoKKGRlZm1hY3JvIGVnbG90LS1jb2RlLWFjdGlv biAobmFtZSBraW5kKQogICJEZWZpbmUgTkFNRSB0byBleGVjdXRlIEtJTkQgY29kZSBhY3Rpb24u IgogIGAoZGVmdW4gLG5hbWUgKGJlZyAmb3B0aW9uYWwgZW5kKQogICAgICwoZm9ybWF0ICJFeGVj dXRlIGAlcycgY29kZSBhY3Rpb25zIGJldHdlZW4gQkVHIGFuZCBFTkQuIiBraW5kKQogICAgIChp bnRlcmFjdGl2ZSAoZWdsb3QtLWNvZGUtYWN0aW9uLWJvdW5kcykpCiAgICAgKGVnbG90LWNvZGUt YWN0aW9ucyBiZWcgZW5kICxraW5kIHQpKSkKCihlZ2xvdC0tY29kZS1hY3Rpb24gZWdsb3QtY29k ZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0cyAic291cmNlLm9yZ2FuaXplSW1wb3J0cyIpCihlZ2xv dC0tY29kZS1hY3Rpb24gZWdsb3QtY29kZS1hY3Rpb24tZXh0cmFjdCAicmVmYWN0b3IuZXh0cmFj dCIpCihlZ2xvdC0tY29kZS1hY3Rpb24gZWdsb3QtY29kZS1hY3Rpb24taW5saW5lICJyZWZhY3Rv ci5pbmxpbmUiKQooZWdsb3QtLWNvZGUtYWN0aW9uIGVnbG90LWNvZGUtYWN0aW9uLXJld3JpdGUg InJlZmFjdG9yLnJld3JpdGUiKQooZWdsb3QtLWNvZGUtYWN0aW9uIGVnbG90LWNvZGUtYWN0aW9u LXF1aWNrZml4ICJxdWlja2ZpeCIpCgoMCjs7OyBEeW5hbWljIHJlZ2lzdHJhdGlvbgo7OzsKKGNs LWRlZm1ldGhvZCBlZ2xvdC1yZWdpc3Rlci1jYXBhYmlsaXR5CiAgKHNlcnZlciAobWV0aG9kIChl cWwgd29ya3NwYWNlL2RpZENoYW5nZVdhdGNoZWRGaWxlcykpIGlkICZrZXkgd2F0Y2hlcnMpCiAg IkhhbmRsZSBkeW5hbWljIHJlZ2lzdHJhdGlvbiBvZiB3b3Jrc3BhY2UvZGlkQ2hhbmdlV2F0Y2hl ZEZpbGVzLiIKICAoZWdsb3QtdW5yZWdpc3Rlci1jYXBhYmlsaXR5IHNlcnZlciBtZXRob2QgaWQp CiAgKGxldCogKHN1Y2Nlc3MKICAgICAgICAgKGdsb2JzIChtYXBjYXIKICAgICAgICAgICAgICAg ICAoZWdsb3QtLWxhbWJkYSAoKEZpbGVTeXN0ZW1XYXRjaGVyKSBnbG9iUGF0dGVybiBraW5kKQog ICAgICAgICAgICAgICAgICAgKGNvbnMgKGVnbG90LS1nbG9iLWNvbXBpbGUgZ2xvYlBhdHRlcm4g dCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgOzsgdGhlIGRlZmF1bHQgIjciIG1lYW5zIGJp dHdpc2UgT1Igb2YKICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFdhdGNoS2luZC5DcmVhdGUg KDEpLCBXYXRjaEtpbmQuQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyAoMiksIFdh dGNoS2luZC5EZWxldGUgKDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAob3Iga2luZCA3KSkp CiAgICAgICAgICAgICAgICAgd2F0Y2hlcnMpKQogICAgICAgICAoZGlycy10by13YXRjaAogICAg ICAgICAgKGRlbGV0ZS1kdXBzIChtYXBjYXIgIydmaWxlLW5hbWUtZGlyZWN0b3J5CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC1maWxlcwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlZ2xvdC0tcHJvamVjdCBzZXJ2ZXIpKSkpKSkKICAgIChjbC1sYWJlbHMK ICAgICAgICAoKGhhbmRsZS1ldmVudCAoZXZlbnQpCiAgICAgICAgICAgKHBjYXNlLWxldCogKChg KCxkZXNjICxhY3Rpb24gLGZpbGUgLGZpbGUxKSBldmVudCkKICAgICAgICAgICAgICAgICAgICAg ICAgKGFjdGlvbi10eXBlIChjbC1jYXNlIGFjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY3JlYXRlZCAxKSAoY2hhbmdlZCAyKSAoZGVsZXRlZCAzKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgIChhY3Rpb24tYml0ICh3aGVuIGFjdGlvbi10eXBlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzaCAxICgxLSBhY3Rpb24tdHlwZSkpKSkp CiAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICgoYW5kIChtZW1xIGFjdGlvbiAnKGNy ZWF0ZWQgY2hhbmdlZCBkZWxldGVkKSkKICAgICAgICAgICAgICAgICAgICAoY2wtbG9vcCBmb3Ig KGdsb2IgLiBraW5kLWJpdG1hc2spIGluIGdsb2JzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGhlcmVpcyAoYW5kICg+IChsb2dhbmQga2luZC1iaXRtYXNrIGFjdGlvbi1iaXQpIDApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGdsb2IgZmls ZSkpKSkKICAgICAgICAgICAgICAgKGpzb25ycGMtbm90aWZ5CiAgICAgICAgICAgICAgICBzZXJ2 ZXIgOndvcmtzcGFjZS9kaWRDaGFuZ2VXYXRjaGVkRmlsZXMKICAgICAgICAgICAgICAgIGAoOmNo YW5nZXMgLCh2ZWN0b3IgYCg6dXJpICwoZWdsb3QtcGF0aC10by11cmkgZmlsZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0eXBlICxhY3Rpb24tdHlwZSkpKSkK ICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoZXEgYWN0aW9uICdjcmVhdGVkKQogICAgICAgICAg ICAgICAgICAgICAgICAgIChmaWxlLWRpcmVjdG9yeS1wIGZpbGUpKQogICAgICAgICAgICAgICAg ICh3YXRjaC1kaXIgZmlsZSkpKQogICAgICAgICAgICAgICgoZXEgYWN0aW9uICdyZW5hbWVkKQog ICAgICAgICAgICAgICAoaGFuZGxlLWV2ZW50IGAoLGRlc2MgJ2RlbGV0ZWQgLGZpbGUpKQogICAg ICAgICAgICAgICAoaGFuZGxlLWV2ZW50IGAoLGRlc2MgJ2NyZWF0ZWQgLGZpbGUxKSkpKSkpCiAg ICAgICAgICh3YXRjaC1kaXIgKGRpcikKICAgICAgICAgICAod2hlbi1sZXQgKChwcm9iZQogICAg ICAgICAgICAgICAgICAgICAgIChhbmQgKGZpbGUtcmVhZGFibGUtcCBkaXIpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAob3IgKGdldGhhc2ggZGlyIChlZ2xvdC0tZmlsZS13YXRjaGVzIHNl cnZlcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggZGlyIChsaXN0 IChmaWxlLW5vdGlmeS1hZGQtd2F0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRpciAnKGNoYW5nZSkgIydoYW5kbGUtZXZlbnQpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tZmlsZS13YXRjaGVzIHNl cnZlcikpKSkpKQogICAgICAgICAgICAgKHB1c2ggaWQgKGNkciBwcm9iZSkpKSkpCiAgICAgICh1 bndpbmQtcHJvdGVjdAogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChtYXBjICMnd2F0Y2gt ZGlyIGRpcnMtdG8td2F0Y2gpCiAgICAgICAgICAgIChzZXRxCiAgICAgICAgICAgICBzdWNjZXNz CiAgICAgICAgICAgICBgKDptZXNzYWdlICwoZm9ybWF0ICJPSywgd2F0Y2hpbmcgJXMgZGlyZWN0 b3JpZXMgaW4gJXMgd2F0Y2hlcnMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs ZW5ndGggZGlycy10by13YXRjaCkgKGxlbmd0aCB3YXRjaGVycykpKSkpCiAgICAgICAgKHVubGVz cyBzdWNjZXNzCiAgICAgICAgICAoZWdsb3QtdW5yZWdpc3Rlci1jYXBhYmlsaXR5IHNlcnZlciBt ZXRob2QgaWQpKSkpKSkKCihjbC1kZWZtZXRob2QgZWdsb3QtdW5yZWdpc3Rlci1jYXBhYmlsaXR5 CiAgKHNlcnZlciAoX21ldGhvZCAoZXFsIHdvcmtzcGFjZS9kaWRDaGFuZ2VXYXRjaGVkRmlsZXMp KSBpZCkKICAiSGFuZGxlIGR5bmFtaWMgdW5yZWdpc3RyYXRpb24gb2Ygd29ya3NwYWNlL2RpZENo YW5nZVdhdGNoZWRGaWxlcy4iCiAgKG1hcGhhc2ggKGxhbWJkYSAoZGlyIHdhdGNoLWFuZC1pZHMp CiAgICAgICAgICAgICAoc2V0Y2RyIHdhdGNoLWFuZC1pZHMgKGRlbGV0ZSBpZCAoY2RyIHdhdGNo LWFuZC1pZHMpKSkKICAgICAgICAgICAgICh3aGVuIChudWxsIChjZHIgd2F0Y2gtYW5kLWlkcykp CiAgICAgICAgICAgICAgIChmaWxlLW5vdGlmeS1ybS13YXRjaCAoY2FyIHdhdGNoLWFuZC1pZHMp KQogICAgICAgICAgICAgICAocmVtaGFzaCBkaXIgKGVnbG90LS1maWxlLXdhdGNoZXMgc2VydmVy KSkpKQogICAgICAgICAgIChlZ2xvdC0tZmlsZS13YXRjaGVzIHNlcnZlcikpCiAgKGxpc3QgdCAi T0siKSkKCgwKOzs7IEdsb2IgaGVyb2ljcwo7OzsKKGRlZnVuIGVnbG90LS1nbG9iLXBhcnNlIChn bG9iKQogICJDb21wdXRlIGxpc3Qgb2YgKFNUQVRFLVNZTSBFTUlUVEVSLUZOIFBBVFRFUk4pLiIK ICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgKHNhdmUtZXhjdXJzaW9uIChpbnNlcnQgZ2xvYikpCiAg ICAoY2wtbG9vcAogICAgIHdpdGggZ3JhbW1hciA9ICcoKDoqKiAgICAgICJcXCpcXCovPyIgICAg ICAgICAgICAgIGVnbG90LS1nbG9iLWVtaXQtKiopCiAgICAgICAgICAgICAgICAgICAgICAoOiog ICAgICAgIlxcKiIgICAgICAgICAgICAgICAgICAgZWdsb3QtLWdsb2ItZW1pdC0qKQogICAgICAg ICAgICAgICAgICAgICAgKDo/ICAgICAgICJcXD8iICAgICAgICAgICAgICAgICAgIGVnbG90LS1n bG9iLWVtaXQtPykKICAgICAgICAgICAgICAgICAgICAgICg6e30gICAgICAie1teXVsqe31dK30i ICAgICAgICAgICBlZ2xvdC0tZ2xvYi1lbWl0LXt9KQogICAgICAgICAgICAgICAgICAgICAgKDpy YW5nZSAgICJcXFtcXF4/W15dWy8sKnt9XStcXF0iIGVnbG90LS1nbG9iLWVtaXQtcmFuZ2UpCiAg ICAgICAgICAgICAgICAgICAgICAoOmxpdGVyYWwgIlteXVssKj97fV0rIiAgICAgICAgICAgZWds b3QtLWdsb2ItZW1pdC1zZWxmKSkKICAgICB1bnRpbCAoZW9icCkKICAgICBjb2xsZWN0IChjbC1s b29wCiAgICAgICAgICAgICAgZm9yIChfdG9rZW4gcmVnZXhwIGVtaXR0ZXIpIGluIGdyYW1tYXIK ICAgICAgICAgICAgICB0aGVyZWlzIChhbmQgKHJlLXNlYXJjaC1mb3J3YXJkIChjb25jYXQgIlxc PSIgcmVnZXhwKSBuaWwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGNsLWdl bnN5bSAic3RhdGUtIikgZW1pdHRlciAobWF0Y2gtc3RyaW5nIDApKSkKICAgICAgICAgICAgICBm aW5hbGx5IChlcnJvciAiR2xvYiAnJXMnIGludmFsaWQgYXQgJXMiIChidWZmZXItc3RyaW5nKSAo cG9pbnQpKSkpKSkKCihkZWZ1biBlZ2xvdC0tZ2xvYi1jb21waWxlIChnbG9iICZvcHRpb25hbCBi eXRlLWNvbXBpbGUgbm9lcnJvcikKICAiQ29udmVydCBHTE9CIGludG8gRWxpc3AgZnVuY3Rpb24u ICBNYXliZSBCWVRFLUNPTVBJTEUgaXQuCklmIE5PRVJST1IsIHJldHVybiBwcmVkaWNhdGUsIGVs c2UgZXJyb3JpbmcgZnVuY3Rpb24uIgogIChsZXQqICgoc3RhdGVzIChlZ2xvdC0tZ2xvYi1wYXJz ZSBnbG9iKSkKICAgICAgICAgKGJvZHkgYCh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVy LWNyZWF0ZSAiICplZ2xvdC1nbG9iLW1hdGNoZXIqIikKICAgICAgICAgICAgICAgICAgKGVyYXNl LWJ1ZmZlcikKICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChpbnNlcnQgc3RyaW5n KSkKICAgICAgICAgICAgICAgICAgKGNsLWxhYmVscyAsKGNsLWxvb3AgZm9yICh0aGlzIHRoYXQp IG9uIHN0YXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHNl bGYgZW1pdCB0ZXh0KSA9IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9yIG5leHQgPSAob3IgKGNhciB0aGF0KSAnZW9icCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29sbGVjdCAoZnVuY2FsbCBlbWl0IHRleHQgc2VsZiBuZXh0KSkK ICAgICAgICAgICAgICAgICAgICAob3IgKCwoY2FhciBzdGF0ZXMpKQogICAgICAgICAgICAgICAg ICAgICAgICAoZXJyb3IgIkdsb2IgZG9uZSBidXQgbW9yZSB1bm1hdGNoZWQgdGV4dDogJyVzJyIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nIChwb2ludCkg KHBvaW50LW1heCkpKSkpKSkKICAgICAgICAgKGZvcm0gYChsYW1iZGEgKHN0cmluZykgLChpZiBu b2Vycm9yIGAoaWdub3JlLWVycm9ycyAsYm9keSkgYm9keSkpKSkKICAgIChpZiBieXRlLWNvbXBp bGUgKGJ5dGUtY29tcGlsZSBmb3JtKSBmb3JtKSkpCgooZGVmdW4gZWdsb3QtLWdsb2ItZW1pdC1z ZWxmICh0ZXh0IHNlbGYgbmV4dCkKICBgKCxzZWxmICgpIChyZS1zZWFyY2gtZm9yd2FyZCAsKGNv bmNhdCAiXFw9IiAocmVnZXhwLXF1b3RlIHRleHQpKSkgKCxuZXh0KSkpCgooZGVmdW4gZWdsb3Qt LWdsb2ItZW1pdC0qKiAoXyBzZWxmIG5leHQpCiAgYCgsc2VsZiAoKSAob3IgKGlnbm9yZS1lcnJv cnMgKHNhdmUtZXhjdXJzaW9uICgsbmV4dCkpKQogICAgICAgICAgICAgICAgIChhbmQgKHJlLXNl YXJjaC1mb3J3YXJkICJcXD0vP1teL10rLz8iKSAoLHNlbGYpKSkpKQoKKGRlZnVuIGVnbG90LS1n bG9iLWVtaXQtKiAoXyBzZWxmIG5leHQpCiAgYCgsc2VsZiAoKSAocmUtc2VhcmNoLWZvcndhcmQg IlxcPVteL10iKQogICAgICAgICAgKG9yIChpZ25vcmUtZXJyb3JzIChzYXZlLWV4Y3Vyc2lvbiAo LG5leHQpKSkgKCxzZWxmKSkpKQoKKGRlZnVuIGVnbG90LS1nbG9iLWVtaXQtPyAoXyBzZWxmIG5l eHQpCiAgYCgsc2VsZiAoKSAocmUtc2VhcmNoLWZvcndhcmQgIlxcPVteL10iKSAoLG5leHQpKSkK CihkZWZ1biBlZ2xvdC0tZ2xvYi1lbWl0LXt9IChhcmcgc2VsZiBuZXh0KQogIChsZXQgKChhbHRl cm5hdGl2ZXMgKHNwbGl0LXN0cmluZyAoc3Vic3RyaW5nIGFyZyAxICgxLSAobGVuZ3RoIGFyZykp KSAiLCIpKSkKICAgIGAoLHNlbGYgKCkKICAgICAgICAgICAgKG9yIChyZS1zZWFyY2gtZm9yd2Fy ZCAsKGNvbmNhdCAiXFw9IiAocmVnZXhwLW9wdCBhbHRlcm5hdGl2ZXMpKSBuaWwgdCkKICAgICAg ICAgICAgICAgIChlcnJvciAiRmFpbGVkIG1hdGNoaW5nIGFueSBvZiAlcyIgJyxhbHRlcm5hdGl2 ZXMpKQogICAgICAgICAgICAoLG5leHQpKSkpCgooZGVmdW4gZWdsb3QtLWdsb2ItZW1pdC1yYW5n ZSAoYXJnIHNlbGYgbmV4dCkKICAod2hlbiAoZXEgPyEgKGFyZWYgYXJnIDEpKSAoYXNldCBhcmcg MSA/XikpCiAgYCgsc2VsZiAoKSAocmUtc2VhcmNoLWZvcndhcmQgLChjb25jYXQgIlxcPSIgYXJn KSkgKCxuZXh0KSkpCgoMCjs7OyBMaXN0IGNvbm5lY3Rpb25zIG1vZGUKCihkZWZpbmUtZGVyaXZl ZC1tb2RlIGVnbG90LWxpc3QtY29ubmVjdGlvbnMtbW9kZSAgdGFidWxhdGVkLWxpc3QtbW9kZQog ICIiICJFZ2xvdCBtb2RlIGZvciBsaXN0aW5nIHNlcnZlciBjb25uZWN0aW9ucwpcXHtlZ2xvdC1s aXN0LWNvbm5lY3Rpb25zLW1vZGUtbWFwfSIKICAoc2V0cS1sb2NhbCB0YWJ1bGF0ZWQtbGlzdC1m b3JtYXQKICAgICAgICAgICAgICBgWygiTGFuZ3VhZ2Ugc2VydmVyIiAxNikgKCJQcm9qZWN0IG5h bWUiIDE2KSAoIk1vZGVzIGhhbmRsZWQiIDE2KV0pCiAgKHRhYnVsYXRlZC1saXN0LWluaXQtaGVh ZGVyKSkKCihkZWZ1biBlZ2xvdC1saXN0LWNvbm5lY3Rpb25zICgpCiAgIkxpc3QgY3VycmVudGx5 IGFjdGl2ZSBFZ2xvdCBjb25uZWN0aW9ucy4iCiAgKGludGVyYWN0aXZlKQogICh3aXRoLWN1cnJl bnQtYnVmZmVyCiAgICAgIChnZXQtYnVmZmVyLWNyZWF0ZSAiKkVHTE9UIGNvbm5lY3Rpb25zKiIp CiAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkpCiAgICAgIChlcmFzZS1idWZmZXIpCiAg ICAgIChlZ2xvdC1saXN0LWNvbm5lY3Rpb25zLW1vZGUpCiAgICAgIChzZXRxLWxvY2FsIHRhYnVs YXRlZC1saXN0LWVudHJpZXMKICAgICAgICAgICAgICAgICAgKG1hcGNhcgogICAgICAgICAgICAg ICAgICAgKGxhbWJkYSAoc2VydmVyKQogICAgICAgICAgICAgICAgICAgICAobGlzdCBzZXJ2ZXIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgYFssKG9yIChwbGlzdC1nZXQgKGVnbG90LS1zZXJ2 ZXItaW5mbyBzZXJ2ZXIpIDpuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGpzb25ycGMtbmFtZSBzZXJ2ZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoZWds b3QtcHJvamVjdC1uaWNrbmFtZSBzZXJ2ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LChtYXBjb25jYXQgIydzeW1ib2wtbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChlZ2xvdC0tbWFqb3ItbW9kZXMgc2VydmVyKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIsICIpXSkpCiAgICAgICAgICAgICAgICAgICAoY2wtcmVk dWNlICMnYXBwZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXZh bHVlcyBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0KSkpKQogICAgICAocmV2ZXJ0LWJ1ZmZlcikK ICAgICAgKHBvcC10by1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpKSkKCgwKOzs7IElubGF5IGhp bnRzCihkZWZmYWNlIGVnbG90LWlubGF5LWhpbnQtZmFjZSAnKCh0ICg6aGVpZ2h0IDAuOCA6aW5o ZXJpdCBzaGFkb3cpKSkKICAiRmFjZSB1c2VkIGZvciBpbmxheSBoaW50IG92ZXJsYXlzLiIpCgoo ZGVmZmFjZSBlZ2xvdC10eXBlLWhpbnQtZmFjZSAnKCh0ICg6aW5oZXJpdCBlZ2xvdC1pbmxheS1o aW50LWZhY2UpKSkKICAiRmFjZSB1c2VkIGZvciB0eXBlIGlubGF5IGhpbnQgb3ZlcmxheXMuIikK CihkZWZmYWNlIGVnbG90LXBhcmFtZXRlci1oaW50LWZhY2UgJygodCAoOmluaGVyaXQgZWdsb3Qt aW5sYXktaGludC1mYWNlKSkpCiAgIkZhY2UgdXNlZCBmb3IgcGFyYW1ldGVyIGlubGF5IGhpbnQg b3ZlcmxheXMuIikKCihkZWZ2YXItbG9jYWwgZWdsb3QtLW91dHN0YW5kaW5nLWlubGF5LWhpbnRz LXJlZ2lvbiAoY29ucyBuaWwgbmlsKQogICJKaXQtbG9jay1jYWxjdWxhdGVkIChGUk9NIC4gVE8p IHJlZ2lvbiB3aXRoIHBvdGVudGlhbGx5IG91dGRhdGVkIGhpbnRzIikKCihkZWZ2YXItbG9jYWwg ZWdsb3QtLW91dHN0YW5kaW5nLWlubGF5LWhpbnRzLWxhc3QtcmVnaW9uIG5pbCkKCihkZWZ2YXIt bG9jYWwgZWdsb3QtLW91dHN0YW5kaW5nLWlubGF5LXJlZ2lvbnMtdGltZXIgbmlsCiAgIkhlbHBl ciB0aW1lciBmb3IgYGVnbG90LS11cGRhdGUtaGludHMnIikKCihkZWZ1biBlZ2xvdC0tdXBkYXRl LWhpbnRzIChmcm9tIHRvKQogICJKaXQtbG9jayBmdW5jdGlvbiBmb3IgRWdsb3QgaW5sYXkgaGlu dHMuIgogIChjbC1zeW1ib2wtbWFjcm9sZXQgKChyZWdpb24gZWdsb3QtLW91dHN0YW5kaW5nLWlu bGF5LWhpbnRzLXJlZ2lvbikKICAgICAgICAgICAgICAgICAgICAgICAobGFzdC1yZWdpb24gZWds b3QtLW91dHN0YW5kaW5nLWlubGF5LWhpbnRzLWxhc3QtcmVnaW9uKQogICAgICAgICAgICAgICAg ICAgICAgICh0aW1lciBlZ2xvdC0tb3V0c3RhbmRpbmctaW5sYXktcmVnaW9ucy10aW1lcikpCiAg ICAoc2V0Y2FyIHJlZ2lvbiAobWluIChvciAoY2FyIHJlZ2lvbikgKHBvaW50LW1heCkpIGZyb20p KQogICAgKHNldGNkciByZWdpb24gKG1heCAob3IgKGNkciByZWdpb24pIChwb2ludC1taW4pKSB0 bykpCiAgICA7OyBIQUNLOiBXZSdyZSByZWx5aW5nIG9uIGtub3dsZWRnZSBvZiBqaXQtbG9jayBp bnRlcm5hbHMgaGVyZS4gIFRoZQogICAgOzsgY29uZGl0aW9uIGNvbXBhcmluZyBgaml0LWxvY2st Y29udGV4dC11bmZvbnRpZnktcG9zJyB0bwogICAgOzsgYHBvaW50LW1heCcgaXMgYSBoZXVyaXN0 aWMgZm9yIHRlbGxpbmcgd2hldGhlciB0aGlzIGNhbGwgdG8KICAgIDs7IGBqaXQtbG9jay1mdW5j dGlvbnMnIGhhcHBlbnMgYWZ0ZXIgYGppdC1sb2NrLWNvbnRleHQtdGltZXInIGhhcwogICAgOzsg anVzdCBydW4uICBPbmx5IGFmdGVyIHRoaXMgZGVsYXkgc2hvdWxkIHdlIHN0YXJ0IHRoZSBzbW9v dGhpbmcKICAgIDs7IHRpbWVyIHRoYXQgd2lsbCBldmVudHVhbGx5IGNhbGwgYGVnbG90LS11cGRh dGUtaGludHMtMScgd2l0aCB0aGUKICAgIDs7IGNvYWxlc2NlZCByZWdpb24uICBJIHdpc2ggd2Ug ZGlkbid0IG5lZWQgdGhlIHRpbWVyLCBidXQgc29tZXRpbWVzCiAgICA7OyBhIGxvdCBvZiAibm9u LWNvbnRleHR1YWwiIGNhbGxzIGNvbWUgaW4gYWxsIGF0IG9uY2UgYW5kIGRvIHZlcmlmeQogICAg OzsgdGhlIGNvbmRpdGlvbi4gIE5vdGljZSBpdCBpcyBhIDAgc2Vjb25kIHRpbWVyIHRob3VnaCwg c28gd2UncmUKICAgIDs7IG5vdCBpbnRyb2R1Y2luZyBhbnkgbW9yZSBkZWxheSBvdmVyIGppdC1s b2NrJ3MgdGltZXJzLgogICAgKHdoZW4gKD0gaml0LWxvY2stY29udGV4dC11bmZvbnRpZnktcG9z IChwb2ludC1tYXgpKQogICAgICAoaWYgdGltZXIgKGNhbmNlbC10aW1lciB0aW1lcikpCiAgICAg IChsZXQgKChidWYgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAgICAgKHNldHEgdGltZXIgKHJ1bi1h dC10aW1lCiAgICAgICAgICAgICAgICAgICAgIDAgbmlsCiAgICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdoZW4tbGl2ZS1idWZmZXIg YnVmCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyBIQUNLOiBJbiBzb21lIHBhdGhvbG9naWNh bCBzaXR1YXRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyAoRW1hY3MncyBvd24gY29k aW5nLmMsIGZvciBleGFtcGxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGppdC1sb2Nr IGlzIGNhbGxpbmcgYGVnbG90LS11cGRhdGUtaGludHMnCiAgICAgICAgICAgICAgICAgICAgICAg ICA7OyByZXBlYXRlZGx5IHdpdGggc2FtZSBzZXF1ZW5jZSBvZgogICAgICAgICAgICAgICAgICAg ICAgICAgOzsgYXJndW1lbnRzLCB3aGljaCBsZWFkcyB0bwogICAgICAgICAgICAgICAgICAgICAg ICAgOzsgYGVnbG90LS11cGRhdGUtaGludHMtMScgYmVpbmcgY2FsbGVkIHdpdGgKICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHRoZSBzYW1lIHJlZ2lvbiByZXBlYXRlZGx5LiAgVGhpcyBoYXBw ZW5zCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyBldmVuIGlmIHRoZSBoaW50LXBhaW50aW5n IGNvZGUgZG9lcwogICAgICAgICAgICAgICAgICAgICAgICAgOzsgbm90aGluZyBlbHNlIG90aGVy IHRoYW4gd2lkZW4sIG5hcnJvdywKICAgICAgICAgICAgICAgICAgICAgICAgIDs7IG1vdmUgcG9p bnQgdGhlbiByZXN0b3JlIHRoZXNlIHRoaW5ncy4KICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IFBvc3NpYmxlIEVtYWNzIGJ1ZywgYnV0IHRoaXMgZml4ZXMgaXQuCiAgICAgICAgICAgICAgICAg ICAgICAgICAodW5sZXNzIChlcXVhbCBsYXN0LXJlZ2lvbiByZWdpb24pCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlZ2xvdC0tdXBkYXRlLWhpbnRzLTEgKG1heCAoY2FyIHJlZ2lvbikgKHBv aW50LW1pbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1pbiAoY2RyIHJlZ2lvbikgKHBvaW50LW1heCkpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBsYXN0LXJlZ2lvbiByZWdpb24pKQogICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgcmVnaW9uIChjb25zIG5pbCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aW1lciBuaWwpKSkpKSkpKSkKCihkZWZ1biBlZ2xvdC0tdXBkYXRlLWhpbnRzLTEgKGZyb20g dG8pCiAgIkRvIG1vc3Qgd29yayBmb3IgYGVnbG90LS11cGRhdGUtaGludHMnLCBpbmNsdWRpbmcg TFNQIHJlcXVlc3QuIgogIChsZXQqICgoYnVmIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgIChw YWludC1oaW50CiAgICAgICAgICAoZWdsb3QtLWxhbWJkYSAoKElubGF5SGludCkgcG9zaXRpb24g a2luZCBsYWJlbCBwYWRkaW5nTGVmdCBwYWRkaW5nUmlnaHQpCiAgICAgICAgICAgIChnb3RvLWNo YXIgKGVnbG90LS1sc3AtcG9zaXRpb24tdG8tcG9pbnQgcG9zaXRpb24pKQogICAgICAgICAgICAo d2hlbiAob3IgKD4gKHBvaW50KSB0bykgKDwgKHBvaW50KSBmcm9tKSkgKGNsLXJldHVybikpCiAg ICAgICAgICAgIChsZXQqICgobGVmdC1wYWQgKGFuZCBwYWRkaW5nTGVmdAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgcGFkZGluZ0xlZnQgOmpzb24tZmFsc2UpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAobWVtcSAoY2hhci1iZWZvcmUp ICcoMzIgOSkpKSAiICIpKQogICAgICAgICAgICAgICAgICAgKHJpZ2h0LXBhZCAoYW5kIHBhZGRp bmdSaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxIHBhZGRp bmdSaWdodCA6anNvbi1mYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG5vdCAobWVtcSAoY2hhci1hZnRlcikgJygzMiA5KSkpICIgIikpCiAgICAgICAgICAgICAgICAg ICAocGVnLWFmdGVyLXAgKGVxbCBraW5kIDEpKSkKICAgICAgICAgICAgICAoY2wtbGFiZWxzCiAg ICAgICAgICAgICAgICAgICgobWFrZS1vdiAoKQogICAgICAgICAgICAgICAgICAgICAoaWYgcGVn LWFmdGVyLXAKICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLW92ZXJsYXkgKHBvaW50KSAo MSsgKHBvaW50KSkgbmlsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgKG1ha2Utb3ZlcmxheSAo MS0gKHBvaW50KSkgKHBvaW50KSBuaWwgbmlsIG5pbCkpKQogICAgICAgICAgICAgICAgICAgKGRv LWl0IChsYWJlbCBscGFkIHJwYWQgaSBuKQogICAgICAgICAgICAgICAgICAgICAobGV0KiAoKGZp cnN0cCAoemVyb3AgaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHdlYWstY3Vyc29y LXAgKGFuZCBmaXJzdHAgcGVnLWFmdGVyLXApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg KG92IChtYWtlLW92KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0IChjb25jYXQg bHBhZCBsYWJlbCBycGFkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gdHdlYWstY3Vy c29yLXAgKHB1dC10ZXh0LXByb3BlcnR5IDAgMSAnY3Vyc29yIDEgdGV4dCkpCiAgICAgICAgICAg ICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92IChpZiBwZWctYWZ0ZXItcCAnYmVmb3JlLXN0cmlu ZyAnYWZ0ZXItc3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv cGVydGl6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgKHBjYXNlIGtpbmQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgJ2VnbG90LXR5cGUtaGludC1m YWNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMiAnZWds b3QtcGFyYW1ldGVyLWhpbnQtZmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKF8gJ2VnbG90LWlubGF5LWhpbnQtZmFjZSkpKSkKICAgICAgICAgICAgICAg ICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ3ByaW9yaXR5IChpZiBwZWctYWZ0ZXItcCBpICgtIG4g aSkpKQogICAgICAgICAgICAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnZWdsb3QtLWlubGF5 LWhpbnQgdCkKICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0 ZSB0KQogICAgICAgICAgICAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnZWdsb3QtLW92ZXJs YXkgdCkpKSkKICAgICAgICAgICAgICAgIChpZiAoc3RyaW5ncCBsYWJlbCkgKGRvLWl0IGxhYmVs IGxlZnQtcGFkIHJpZ2h0LXBhZCAwIDEpCiAgICAgICAgICAgICAgICAgIChjbC1sb29wCiAgICAg ICAgICAgICAgICAgICBmb3IgaSBmcm9tIDAgZm9yIGxkZXRhaWwgYWNyb3NzIGxhYmVsCiAgICAg ICAgICAgICAgICAgICBkbyAoZWdsb3QtLWRiaW5kICgoSW5sYXlIaW50TGFiZWxQYXJ0KSB2YWx1 ZSkgbGRldGFpbAogICAgICAgICAgICAgICAgICAgICAgICAoZG8taXQgdmFsdWUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChhbmQgKHplcm9wIGkpIGxlZnQtcGFkKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGFuZCAoPSBpICgxLSAobGVuZ3RoIGxhYmVsKSkpIHJpZ2h0 LXBhZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKGxlbmd0aCBsYWJlbCkpKSkp KSkpKSkKICAgIChqc29ucnBjLWFzeW5jLXJlcXVlc3QKICAgICAoZWdsb3QtLWN1cnJlbnQtc2Vy dmVyLW9yLWxvc2UpCiAgICAgOnRleHREb2N1bWVudC9pbmxheUhpbnQKICAgICAobGlzdCA6dGV4 dERvY3VtZW50IChlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcikKICAgICAgICAgICA6cmFu Z2UgKGxpc3QgOnN0YXJ0IChlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBmcm9tKQogICAgICAg ICAgICAgICAgICAgICAgICA6ZW5kIChlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiB0bykpKQog ICAgIDpzdWNjZXNzLWZuIChsYW1iZGEgKGhpbnRzKQogICAgICAgICAgICAgICAgICAgKGVnbG90 LS13aGVuLWxpdmUtYnVmZmVyIGJ1ZgogICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdpZGVu aW5nCiAgICAgICAgICAgICAgICAgICAgICA7OyBPdmVybGF5cyBlbmRpbmcgcmlnaHQgYXQgRlJP TSB3aXRoIGFuCiAgICAgICAgICAgICAgICAgICAgICA7OyBgYWZ0ZXItc3RyaW5nJyBwcm9wZXJ0 eSBsb2dpY2FsbHkgYmVsb25nIHRvCiAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUgKEZST00g VE8pIHJlZ2lvbi4gIExpa2V3aXNlLCBzdWNoCiAgICAgICAgICAgICAgICAgICAgICA7OyBvdmVy bGF5cyBlbmRpbmcgYXQgVE8gZG9uJ3QgbG9naWNhbGx5IGJlbG9uZwogICAgICAgICAgICAgICAg ICAgICAgOzsgdG8gaXQuCiAgICAgICAgICAgICAgICAgICAgICAoZG9saXN0IChvIChvdmVybGF5 cy1pbiAoMS0gZnJvbSkgdG8pKQogICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChv dmVybGF5LWdldCBvICdlZ2xvdC0taW5sYXktaGludCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29uZCAoKGVxIChvdmVybGF5LWVuZCBvKSBmcm9tKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1nZXQgbyAnYWZ0ZXItc3RyaW5n KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIChvdmVybGF5 LWVuZCBvKSB0bykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG92 ZXJsYXktZ2V0IG8gJ2JlZm9yZS1zdHJpbmcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1vdmVy bGF5IG8pKSkKICAgICAgICAgICAgICAgICAgICAgIChtYXBjIHBhaW50LWhpbnQgaGludHMpKSkp CiAgICAgOmRlZmVycmVkICdlZ2xvdC0tdXBkYXRlLWhpbnRzLTEpKSkKCihkZWZpbmUtbWlub3It bW9kZSBlZ2xvdC1pbmxheS1oaW50cy1tb2RlCiAgIk1pbm9yIG1vZGUgZm9yIGFubm90YXRpbmcg YnVmZmVycyB3aXRoIExTUCBzZXJ2ZXIncyBpbmxheSBoaW50cy4iCiAgOmdsb2JhbCBuaWwKICAo Y29uZCAoZWdsb3QtaW5sYXktaGludHMtbW9kZQogICAgICAgICAoaWYgKGVnbG90LXNlcnZlci1j YXBhYmxlIDppbmxheUhpbnRQcm92aWRlcikKICAgICAgICAgICAgIChqaXQtbG9jay1yZWdpc3Rl ciAjJ2VnbG90LS11cGRhdGUtaGludHMgJ2NvbnRleHR1YWwpCiAgICAgICAgICAgKGVnbG90LWlu bGF5LWhpbnRzLW1vZGUgLTEpKSkKICAgICAgICAodAogICAgICAgICAoaml0LWxvY2stdW5yZWdp c3RlciAjJ2VnbG90LS11cGRhdGUtaGludHMpCiAgICAgICAgIChyZW1vdmUtb3ZlcmxheXMgbmls IG5pbCAnZWdsb3QtLWlubGF5LWhpbnQgdCkpKSkKCgwKOzs7IEhhY2tzCjs7Owo7OyBFbWFjcyBi dWcjNTY0MDcsIHRoZSBvcHRpbWFsIHNvbHV0aW9uIGlzIGluIGRlc2t0b3AuZWwsIGJ1dCB0aGF0 J3MKOzsgaGFyZGVyLiBGb3Igbm93LCB1c2UgYHdpdGgtZXZhbC1hZnRlci1sb2FkJy4gU2VlIGFs c28gZ2l0aHViIzExODMuCih3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZGVza3RvcAogIChhZGQtdG8t bGlzdCAnZGVza3RvcC1taW5vci1tb2RlLWhhbmRsZXJzICcoZWdsb3QtLW1hbmFnZWQtbW9kZSAu IGlnbm9yZSkpCiAgKGFkZC10by1saXN0ICdkZXNrdG9wLW1pbm9yLW1vZGUtaGFuZGxlcnMgJyhl Z2xvdC1pbmxheS1oaW50cy1tb2RlIC4gaWdub3JlKSkpCgoMCjs7OyBNaXNjCjs7Owo7OzsjIyNh dXRvbG9hZAoocHJvZ24KICAocHV0ICdlZ2xvdC0tZGViYnVncy1vci1naXRodWItYnVnLXVyaSAn YnVnLXJlZmVyZW5jZS11cmwtZm9ybWF0IHQpCiAgKGRlZnVuIGVnbG90LS1kZWJidWdzLW9yLWdp dGh1Yi1idWctdXJpICgpCiAgICAoZm9ybWF0IChpZiAoc3RyaW5nPSAobWF0Y2gtc3RyaW5nIDIp ICJnaXRodWIiKQogICAgICAgICAgICAgICAgImh0dHBzOi8vZ2l0aHViLmNvbS9qb2FvdGF2b3Jh L2VnbG90L2lzc3Vlcy8lcyIKICAgICAgICAgICAgICAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcv JXMiKQogICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDMpKSkpCgoocHJvdmlkZSAnZWdsb3QpCgoK OzsgTG9jYWwgVmFyaWFibGVzOgo7OyBidWctcmVmZXJlbmNlLWJ1Zy1yZWdleHA6ICJcXChcXChn aXRodWJcXHxidWdcXCkjXFwoWzAtOV0rXFwpXFwpIgo7OyBidWctcmVmZXJlbmNlLXVybC1mb3Jt YXQ6IGVnbG90LS1kZWJidWdzLW9yLWdpdGh1Yi1idWctdXJpCjs7IGNoZWNrZG9jLWZvcmNlLWRv Y3N0cmluZ3MtZmxhZzogbmlsCjs7IEVuZDoKCjs7OyBlZ2xvdC5lbCBlbmRzIGhlcmUKAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVnbG90LTEuMTcvZG9jbGljZW5zZS50ZXhpAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDA1NTYxMgAxNDU2NjYxMzM2NAAw MTUxNDIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIg IABwaGlsaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAQGMgVGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5z ZS4KQGNlbnRlciBWZXJzaW9uIDEuMywgMyBOb3ZlbWJlciAyMDA4CgpAYyBUaGlzIGZpbGUgaXMg aW50ZW5kZWQgdG8gYmUgaW5jbHVkZWQgd2l0aGluIGFub3RoZXIgZG9jdW1lbnQsCkBjIGhlbmNl IG5vIHNlY3Rpb25pbmcgY29tbWFuZCBvciBAbm9kZS4KCkBkaXNwbGF5CkNvcHlyaWdodCBAY29w eXJpZ2h0e30gMjAwMCwgMjAwMSwgMjAwMiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KQHVyZWZ7aHR0cHM6Ly9mc2Yub3JnL30KCkV2ZXJ5b25lIGlzIHBlcm1pdHRl ZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwpvZiB0aGlzIGxpY2Vuc2Ug ZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KQGVuZCBkaXNwbGF5CgpA ZW51bWVyYXRlIDAKQGl0ZW0KUFJFQU1CTEUKClRoZSBwdXJwb3NlIG9mIHRoaXMgTGljZW5zZSBp cyB0byBtYWtlIGEgbWFudWFsLCB0ZXh0Ym9vaywgb3Igb3RoZXIKZnVuY3Rpb25hbCBhbmQgdXNl ZnVsIGRvY3VtZW50IEBkZm57ZnJlZX0gaW4gdGhlIHNlbnNlIG9mIGZyZWVkb206IHRvCmFzc3Vy ZSBldmVyeW9uZSB0aGUgZWZmZWN0aXZlIGZyZWVkb20gdG8gY29weSBhbmQgcmVkaXN0cmlidXRl IGl0LAp3aXRoIG9yIHdpdGhvdXQgbW9kaWZ5aW5nIGl0LCBlaXRoZXIgY29tbWVyY2lhbGx5IG9y IG5vbmNvbW1lcmNpYWxseS4KU2Vjb25kYXJpbHksIHRoaXMgTGljZW5zZSBwcmVzZXJ2ZXMgZm9y IHRoZSBhdXRob3IgYW5kIHB1Ymxpc2hlciBhIHdheQp0byBnZXQgY3JlZGl0IGZvciB0aGVpciB3 b3JrLCB3aGlsZSBub3QgYmVpbmcgY29uc2lkZXJlZCByZXNwb25zaWJsZQpmb3IgbW9kaWZpY2F0 aW9ucyBtYWRlIGJ5IG90aGVycy4KClRoaXMgTGljZW5zZSBpcyBhIGtpbmQgb2YgYGBjb3B5bGVm dCcnLCB3aGljaCBtZWFucyB0aGF0IGRlcml2YXRpdmUKd29ya3Mgb2YgdGhlIGRvY3VtZW50IG11 c3QgdGhlbXNlbHZlcyBiZSBmcmVlIGluIHRoZSBzYW1lIHNlbnNlLiAgSXQKY29tcGxlbWVudHMg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aGljaCBpcyBhIGNvcHlsZWZ0CmxpY2Vu c2UgZGVzaWduZWQgZm9yIGZyZWUgc29mdHdhcmUuCgpXZSBoYXZlIGRlc2lnbmVkIHRoaXMgTGlj ZW5zZSBpbiBvcmRlciB0byB1c2UgaXQgZm9yIG1hbnVhbHMgZm9yIGZyZWUKc29mdHdhcmUsIGJl Y2F1c2UgZnJlZSBzb2Z0d2FyZSBuZWVkcyBmcmVlIGRvY3VtZW50YXRpb246IGEgZnJlZQpwcm9n cmFtIHNob3VsZCBjb21lIHdpdGggbWFudWFscyBwcm92aWRpbmcgdGhlIHNhbWUgZnJlZWRvbXMg dGhhdCB0aGUKc29mdHdhcmUgZG9lcy4gIEJ1dCB0aGlzIExpY2Vuc2UgaXMgbm90IGxpbWl0ZWQg dG8gc29mdHdhcmUgbWFudWFsczsKaXQgY2FuIGJlIHVzZWQgZm9yIGFueSB0ZXh0dWFsIHdvcmss IHJlZ2FyZGxlc3Mgb2Ygc3ViamVjdCBtYXR0ZXIgb3IKd2hldGhlciBpdCBpcyBwdWJsaXNoZWQg YXMgYSBwcmludGVkIGJvb2suICBXZSByZWNvbW1lbmQgdGhpcyBMaWNlbnNlCnByaW5jaXBhbGx5 IGZvciB3b3JrcyB3aG9zZSBwdXJwb3NlIGlzIGluc3RydWN0aW9uIG9yIHJlZmVyZW5jZS4KCkBp dGVtCkFQUExJQ0FCSUxJVFkgQU5EIERFRklOSVRJT05TCgpUaGlzIExpY2Vuc2UgYXBwbGllcyB0 byBhbnkgbWFudWFsIG9yIG90aGVyIHdvcmssIGluIGFueSBtZWRpdW0sIHRoYXQKY29udGFpbnMg YSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBjYW4gYmUK ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4gIFN1Y2ggYSBub3Rp Y2UgZ3JhbnRzIGEKd29ybGQtd2lkZSwgcm95YWx0eS1mcmVlIGxpY2Vuc2UsIHVubGltaXRlZCBp biBkdXJhdGlvbiwgdG8gdXNlIHRoYXQKd29yayB1bmRlciB0aGUgY29uZGl0aW9ucyBzdGF0ZWQg aGVyZWluLiAgVGhlIGBgRG9jdW1lbnQnJywgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBtYW51 YWwgb3Igd29yay4gIEFueSBtZW1iZXIgb2YgdGhlIHB1YmxpYyBpcyBhCmxpY2Vuc2VlLCBhbmQg aXMgYWRkcmVzc2VkIGFzIGBgeW91JycuICBZb3UgYWNjZXB0IHRoZSBsaWNlbnNlIGlmIHlvdQpj b3B5LCBtb2RpZnkgb3IgZGlzdHJpYnV0ZSB0aGUgd29yayBpbiBhIHdheSByZXF1aXJpbmcgcGVy bWlzc2lvbgp1bmRlciBjb3B5cmlnaHQgbGF3LgoKQSBgYE1vZGlmaWVkIFZlcnNpb24nJyBvZiB0 aGUgRG9jdW1lbnQgbWVhbnMgYW55IHdvcmsgY29udGFpbmluZyB0aGUKRG9jdW1lbnQgb3IgYSBw b3J0aW9uIG9mIGl0LCBlaXRoZXIgY29waWVkIHZlcmJhdGltLCBvciB3aXRoCm1vZGlmaWNhdGlv bnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyIGxhbmd1YWdlLgoKQSBgYFNlY29uZGFy eSBTZWN0aW9uJycgaXMgYSBuYW1lZCBhcHBlbmRpeCBvciBhIGZyb250LW1hdHRlciBzZWN0aW9u Cm9mIHRoZSBEb2N1bWVudCB0aGF0IGRlYWxzIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIHJlbGF0aW9u c2hpcCBvZiB0aGUKcHVibGlzaGVycyBvciBhdXRob3JzIG9mIHRoZSBEb2N1bWVudCB0byB0aGUg RG9jdW1lbnQncyBvdmVyYWxsCnN1YmplY3QgKG9yIHRvIHJlbGF0ZWQgbWF0dGVycykgYW5kIGNv bnRhaW5zIG5vdGhpbmcgdGhhdCBjb3VsZCBmYWxsCmRpcmVjdGx5IHdpdGhpbiB0aGF0IG92ZXJh bGwgc3ViamVjdC4gIChUaHVzLCBpZiB0aGUgRG9jdW1lbnQgaXMgaW4KcGFydCBhIHRleHRib29r IG9mIG1hdGhlbWF0aWNzLCBhIFNlY29uZGFyeSBTZWN0aW9uIG1heSBub3QgZXhwbGFpbgphbnkg bWF0aGVtYXRpY3MuKSAgVGhlIHJlbGF0aW9uc2hpcCBjb3VsZCBiZSBhIG1hdHRlciBvZiBoaXN0 b3JpY2FsCmNvbm5lY3Rpb24gd2l0aCB0aGUgc3ViamVjdCBvciB3aXRoIHJlbGF0ZWQgbWF0dGVy cywgb3Igb2YgbGVnYWwsCmNvbW1lcmNpYWwsIHBoaWxvc29waGljYWwsIGV0aGljYWwgb3IgcG9s aXRpY2FsIHBvc2l0aW9uIHJlZ2FyZGluZwp0aGVtLgoKVGhlIGBgSW52YXJpYW50IFNlY3Rpb25z JycgYXJlIGNlcnRhaW4gU2Vjb25kYXJ5IFNlY3Rpb25zIHdob3NlIHRpdGxlcwphcmUgZGVzaWdu YXRlZCwgYXMgYmVpbmcgdGhvc2Ugb2YgSW52YXJpYW50IFNlY3Rpb25zLCBpbiB0aGUgbm90aWNl CnRoYXQgc2F5cyB0aGF0IHRoZSBEb2N1bWVudCBpcyByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vu c2UuICBJZiBhCnNlY3Rpb24gZG9lcyBub3QgZml0IHRoZSBhYm92ZSBkZWZpbml0aW9uIG9mIFNl Y29uZGFyeSB0aGVuIGl0IGlzIG5vdAphbGxvd2VkIHRvIGJlIGRlc2lnbmF0ZWQgYXMgSW52YXJp YW50LiAgVGhlIERvY3VtZW50IG1heSBjb250YWluIHplcm8KSW52YXJpYW50IFNlY3Rpb25zLiAg SWYgdGhlIERvY3VtZW50IGRvZXMgbm90IGlkZW50aWZ5IGFueSBJbnZhcmlhbnQKU2VjdGlvbnMg dGhlbiB0aGVyZSBhcmUgbm9uZS4KClRoZSBgYENvdmVyIFRleHRzJycgYXJlIGNlcnRhaW4gc2hv cnQgcGFzc2FnZXMgb2YgdGV4dCB0aGF0IGFyZSBsaXN0ZWQsCmFzIEZyb250LUNvdmVyIFRleHRz IG9yIEJhY2stQ292ZXIgVGV4dHMsIGluIHRoZSBub3RpY2UgdGhhdCBzYXlzIHRoYXQKdGhlIERv Y3VtZW50IGlzIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEEgRnJvbnQtQ292ZXIgVGV4 dCBtYXkKYmUgYXQgbW9zdCA1IHdvcmRzLCBhbmQgYSBCYWNrLUNvdmVyIFRleHQgbWF5IGJlIGF0 IG1vc3QgMjUgd29yZHMuCgpBIGBgVHJhbnNwYXJlbnQnJyBjb3B5IG9mIHRoZSBEb2N1bWVudCBt ZWFucyBhIG1hY2hpbmUtcmVhZGFibGUgY29weSwKcmVwcmVzZW50ZWQgaW4gYSBmb3JtYXQgd2hv c2Ugc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlCmdlbmVyYWwgcHVibGljLCB0aGF0 IGlzIHN1aXRhYmxlIGZvciByZXZpc2luZyB0aGUgZG9jdW1lbnQKc3RyYWlnaHRmb3J3YXJkbHkg d2l0aCBnZW5lcmljIHRleHQgZWRpdG9ycyBvciAoZm9yIGltYWdlcyBjb21wb3NlZCBvZgpwaXhl bHMpIGdlbmVyaWMgcGFpbnQgcHJvZ3JhbXMgb3IgKGZvciBkcmF3aW5ncykgc29tZSB3aWRlbHkg YXZhaWxhYmxlCmRyYXdpbmcgZWRpdG9yLCBhbmQgdGhhdCBpcyBzdWl0YWJsZSBmb3IgaW5wdXQg dG8gdGV4dCBmb3JtYXR0ZXJzIG9yCmZvciBhdXRvbWF0aWMgdHJhbnNsYXRpb24gdG8gYSB2YXJp ZXR5IG9mIGZvcm1hdHMgc3VpdGFibGUgZm9yIGlucHV0CnRvIHRleHQgZm9ybWF0dGVycy4gIEEg Y29weSBtYWRlIGluIGFuIG90aGVyd2lzZSBUcmFuc3BhcmVudCBmaWxlCmZvcm1hdCB3aG9zZSBt YXJrdXAsIG9yIGFic2VuY2Ugb2YgbWFya3VwLCBoYXMgYmVlbiBhcnJhbmdlZCB0byB0aHdhcnQK b3IgZGlzY291cmFnZSBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBieSByZWFkZXJzIGlzIG5vdCBU cmFuc3BhcmVudC4KQW4gaW1hZ2UgZm9ybWF0IGlzIG5vdCBUcmFuc3BhcmVudCBpZiB1c2VkIGZv ciBhbnkgc3Vic3RhbnRpYWwgYW1vdW50Cm9mIHRleHQuICBBIGNvcHkgdGhhdCBpcyBub3QgYGBU cmFuc3BhcmVudCcnIGlzIGNhbGxlZCBgYE9wYXF1ZScnLgoKRXhhbXBsZXMgb2Ygc3VpdGFibGUg Zm9ybWF0cyBmb3IgVHJhbnNwYXJlbnQgY29waWVzIGluY2x1ZGUgcGxhaW4KQVNDSUkgd2l0aG91 dCBtYXJrdXAsIFRleGluZm8gaW5wdXQgZm9ybWF0LCBMYUBUZVh7fSBpbnB1dApmb3JtYXQsIFNH TUwgb3IgWE1MIHVzaW5nIGEgcHVibGljbHkgYXZhaWxhYmxlCkRURCwgYW5kIHN0YW5kYXJkLWNv bmZvcm1pbmcgc2ltcGxlIEhUTUwsClBvc3RTY3JpcHQgb3IgUERGIGRlc2lnbmVkIGZvciBodW1h biBtb2RpZmljYXRpb24uICBFeGFtcGxlcwpvZiB0cmFuc3BhcmVudCBpbWFnZSBmb3JtYXRzIGlu Y2x1ZGUgUE5HLCBYQ0YgYW5kCkpQR0AuICBPcGFxdWUgZm9ybWF0cyBpbmNsdWRlIHByb3ByaWV0 YXJ5IGZvcm1hdHMgdGhhdCBjYW4gYmUKcmVhZCBhbmQgZWRpdGVkIG9ubHkgYnkgcHJvcHJpZXRh cnkgd29yZCBwcm9jZXNzb3JzLCBTR01MIG9yClhNTCBmb3Igd2hpY2ggdGhlIERURCBhbmQvb3Ig cHJvY2Vzc2luZyB0b29scyBhcmUKbm90IGdlbmVyYWxseSBhdmFpbGFibGUsIGFuZCB0aGUgbWFj aGluZS1nZW5lcmF0ZWQgSFRNTCwKUG9zdFNjcmlwdCBvciBQREYgcHJvZHVjZWQgYnkgc29tZSB3 b3JkIHByb2Nlc3NvcnMgZm9yCm91dHB1dCBwdXJwb3NlcyBvbmx5LgoKVGhlIGBgVGl0bGUgUGFn ZScnIG1lYW5zLCBmb3IgYSBwcmludGVkIGJvb2ssIHRoZSB0aXRsZSBwYWdlIGl0c2VsZiwKcGx1 cyBzdWNoIGZvbGxvd2luZyBwYWdlcyBhcyBhcmUgbmVlZGVkIHRvIGhvbGQsIGxlZ2libHksIHRo ZSBtYXRlcmlhbAp0aGlzIExpY2Vuc2UgcmVxdWlyZXMgdG8gYXBwZWFyIGluIHRoZSB0aXRsZSBw YWdlLiAgRm9yIHdvcmtzIGluCmZvcm1hdHMgd2hpY2ggZG8gbm90IGhhdmUgYW55IHRpdGxlIHBh Z2UgYXMgc3VjaCwgYGBUaXRsZSBQYWdlJycgbWVhbnMKdGhlIHRleHQgbmVhciB0aGUgbW9zdCBw cm9taW5lbnQgYXBwZWFyYW5jZSBvZiB0aGUgd29yaydzIHRpdGxlLApwcmVjZWRpbmcgdGhlIGJl Z2lubmluZyBvZiB0aGUgYm9keSBvZiB0aGUgdGV4dC4KClRoZSBgYHB1Ymxpc2hlcicnIG1lYW5z IGFueSBwZXJzb24gb3IgZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgY29waWVzCm9mIHRoZSBEb2N1 bWVudCB0byB0aGUgcHVibGljLgoKQSBzZWN0aW9uIGBgRW50aXRsZWQgWFlaJycgbWVhbnMgYSBu YW1lZCBzdWJ1bml0IG9mIHRoZSBEb2N1bWVudCB3aG9zZQp0aXRsZSBlaXRoZXIgaXMgcHJlY2lz ZWx5IFhZWiBvciBjb250YWlucyBYWVogaW4gcGFyZW50aGVzZXMgZm9sbG93aW5nCnRleHQgdGhh dCB0cmFuc2xhdGVzIFhZWiBpbiBhbm90aGVyIGxhbmd1YWdlLiAgKEhlcmUgWFlaIHN0YW5kcyBm b3IgYQpzcGVjaWZpYyBzZWN0aW9uIG5hbWUgbWVudGlvbmVkIGJlbG93LCBzdWNoIGFzIGBgQWNr bm93bGVkZ2VtZW50cycnLApgYERlZGljYXRpb25zJycsIGBgRW5kb3JzZW1lbnRzJycsIG9yIGBg SGlzdG9yeScnLikgIFRvIGBgUHJlc2VydmUgdGhlIFRpdGxlJycKb2Ygc3VjaCBhIHNlY3Rpb24g d2hlbiB5b3UgbW9kaWZ5IHRoZSBEb2N1bWVudCBtZWFucyB0aGF0IGl0IHJlbWFpbnMgYQpzZWN0 aW9uIGBgRW50aXRsZWQgWFlaJycgYWNjb3JkaW5nIHRvIHRoaXMgZGVmaW5pdGlvbi4KClRoZSBE b2N1bWVudCBtYXkgaW5jbHVkZSBXYXJyYW50eSBEaXNjbGFpbWVycyBuZXh0IHRvIHRoZSBub3Rp Y2Ugd2hpY2gKc3RhdGVzIHRoYXQgdGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gdGhlIERvY3VtZW50 LiAgVGhlc2UgV2FycmFudHkKRGlzY2xhaW1lcnMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW5jbHVk ZWQgYnkgcmVmZXJlbmNlIGluIHRoaXMKTGljZW5zZSwgYnV0IG9ubHkgYXMgcmVnYXJkcyBkaXNj bGFpbWluZyB3YXJyYW50aWVzOiBhbnkgb3RoZXIKaW1wbGljYXRpb24gdGhhdCB0aGVzZSBXYXJy YW50eSBEaXNjbGFpbWVycyBtYXkgaGF2ZSBpcyB2b2lkIGFuZCBoYXMKbm8gZWZmZWN0IG9uIHRo ZSBtZWFuaW5nIG9mIHRoaXMgTGljZW5zZS4KCkBpdGVtClZFUkJBVElNIENPUFlJTkcKCllvdSBt YXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jdW1lbnQgaW4gYW55IG1lZGl1bSwgZWl0aGVy CmNvbW1lcmNpYWxseSBvciBub25jb21tZXJjaWFsbHksIHByb3ZpZGVkIHRoYXQgdGhpcyBMaWNl bnNlLCB0aGUKY29weXJpZ2h0IG5vdGljZXMsIGFuZCB0aGUgbGljZW5zZSBub3RpY2Ugc2F5aW5n IHRoaXMgTGljZW5zZSBhcHBsaWVzCnRvIHRoZSBEb2N1bWVudCBhcmUgcmVwcm9kdWNlZCBpbiBh bGwgY29waWVzLCBhbmQgdGhhdCB5b3UgYWRkIG5vIG90aGVyCmNvbmRpdGlvbnMgd2hhdHNvZXZl ciB0byB0aG9zZSBvZiB0aGlzIExpY2Vuc2UuICBZb3UgbWF5IG5vdCB1c2UKdGVjaG5pY2FsIG1l YXN1cmVzIHRvIG9ic3RydWN0IG9yIGNvbnRyb2wgdGhlIHJlYWRpbmcgb3IgZnVydGhlcgpjb3B5 aW5nIG9mIHRoZSBjb3BpZXMgeW91IG1ha2Ugb3IgZGlzdHJpYnV0ZS4gIEhvd2V2ZXIsIHlvdSBt YXkgYWNjZXB0CmNvbXBlbnNhdGlvbiBpbiBleGNoYW5nZSBmb3IgY29waWVzLiAgSWYgeW91IGRp c3RyaWJ1dGUgYSBsYXJnZSBlbm91Z2gKbnVtYmVyIG9mIGNvcGllcyB5b3UgbXVzdCBhbHNvIGZv bGxvdyB0aGUgY29uZGl0aW9ucyBpbiBzZWN0aW9uIDMuCgpZb3UgbWF5IGFsc28gbGVuZCBjb3Bp ZXMsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgc3RhdGVkIGFib3ZlLCBhbmQKeW91IG1heSBw dWJsaWNseSBkaXNwbGF5IGNvcGllcy4KCkBpdGVtCkNPUFlJTkcgSU4gUVVBTlRJVFkKCklmIHlv dSBwdWJsaXNoIHByaW50ZWQgY29waWVzIChvciBjb3BpZXMgaW4gbWVkaWEgdGhhdCBjb21tb25s eSBoYXZlCnByaW50ZWQgY292ZXJzKSBvZiB0aGUgRG9jdW1lbnQsIG51bWJlcmluZyBtb3JlIHRo YW4gMTAwLCBhbmQgdGhlCkRvY3VtZW50J3MgbGljZW5zZSBub3RpY2UgcmVxdWlyZXMgQ292ZXIg VGV4dHMsIHlvdSBtdXN0IGVuY2xvc2UgdGhlCmNvcGllcyBpbiBjb3ZlcnMgdGhhdCBjYXJyeSwg Y2xlYXJseSBhbmQgbGVnaWJseSwgYWxsIHRoZXNlIENvdmVyClRleHRzOiBGcm9udC1Db3ZlciBU ZXh0cyBvbiB0aGUgZnJvbnQgY292ZXIsIGFuZCBCYWNrLUNvdmVyIFRleHRzIG9uCnRoZSBiYWNr IGNvdmVyLiAgQm90aCBjb3ZlcnMgbXVzdCBhbHNvIGNsZWFybHkgYW5kIGxlZ2libHkgaWRlbnRp ZnkKeW91IGFzIHRoZSBwdWJsaXNoZXIgb2YgdGhlc2UgY29waWVzLiAgVGhlIGZyb250IGNvdmVy IG11c3QgcHJlc2VudAp0aGUgZnVsbCB0aXRsZSB3aXRoIGFsbCB3b3JkcyBvZiB0aGUgdGl0bGUg ZXF1YWxseSBwcm9taW5lbnQgYW5kCnZpc2libGUuICBZb3UgbWF5IGFkZCBvdGhlciBtYXRlcmlh bCBvbiB0aGUgY292ZXJzIGluIGFkZGl0aW9uLgpDb3B5aW5nIHdpdGggY2hhbmdlcyBsaW1pdGVk IHRvIHRoZSBjb3ZlcnMsIGFzIGxvbmcgYXMgdGhleSBwcmVzZXJ2ZQp0aGUgdGl0bGUgb2YgdGhl IERvY3VtZW50IGFuZCBzYXRpc2Z5IHRoZXNlIGNvbmRpdGlvbnMsIGNhbiBiZSB0cmVhdGVkCmFz IHZlcmJhdGltIGNvcHlpbmcgaW4gb3RoZXIgcmVzcGVjdHMuCgpJZiB0aGUgcmVxdWlyZWQgdGV4 dHMgZm9yIGVpdGhlciBjb3ZlciBhcmUgdG9vIHZvbHVtaW5vdXMgdG8gZml0CmxlZ2libHksIHlv dSBzaG91bGQgcHV0IHRoZSBmaXJzdCBvbmVzIGxpc3RlZCAoYXMgbWFueSBhcyBmaXQKcmVhc29u YWJseSkgb24gdGhlIGFjdHVhbCBjb3ZlciwgYW5kIGNvbnRpbnVlIHRoZSByZXN0IG9udG8gYWRq YWNlbnQKcGFnZXMuCgpJZiB5b3UgcHVibGlzaCBvciBkaXN0cmlidXRlIE9wYXF1ZSBjb3BpZXMg b2YgdGhlIERvY3VtZW50IG51bWJlcmluZwptb3JlIHRoYW4gMTAwLCB5b3UgbXVzdCBlaXRoZXIg aW5jbHVkZSBhIG1hY2hpbmUtcmVhZGFibGUgVHJhbnNwYXJlbnQKY29weSBhbG9uZyB3aXRoIGVh Y2ggT3BhcXVlIGNvcHksIG9yIHN0YXRlIGluIG9yIHdpdGggZWFjaCBPcGFxdWUgY29weQphIGNv bXB1dGVyLW5ldHdvcmsgbG9jYXRpb24gZnJvbSB3aGljaCB0aGUgZ2VuZXJhbCBuZXR3b3JrLXVz aW5nCnB1YmxpYyBoYXMgYWNjZXNzIHRvIGRvd25sb2FkIHVzaW5nIHB1YmxpYy1zdGFuZGFyZCBu ZXR3b3JrIHByb3RvY29scwphIGNvbXBsZXRlIFRyYW5zcGFyZW50IGNvcHkgb2YgdGhlIERvY3Vt ZW50LCBmcmVlIG9mIGFkZGVkIG1hdGVyaWFsLgpJZiB5b3UgdXNlIHRoZSBsYXR0ZXIgb3B0aW9u LCB5b3UgbXVzdCB0YWtlIHJlYXNvbmFibHkgcHJ1ZGVudCBzdGVwcywKd2hlbiB5b3UgYmVnaW4g ZGlzdHJpYnV0aW9uIG9mIE9wYXF1ZSBjb3BpZXMgaW4gcXVhbnRpdHksIHRvIGVuc3VyZQp0aGF0 IHRoaXMgVHJhbnNwYXJlbnQgY29weSB3aWxsIHJlbWFpbiB0aHVzIGFjY2Vzc2libGUgYXQgdGhl IHN0YXRlZApsb2NhdGlvbiB1bnRpbCBhdCBsZWFzdCBvbmUgeWVhciBhZnRlciB0aGUgbGFzdCB0 aW1lIHlvdSBkaXN0cmlidXRlIGFuCk9wYXF1ZSBjb3B5IChkaXJlY3RseSBvciB0aHJvdWdoIHlv dXIgYWdlbnRzIG9yIHJldGFpbGVycykgb2YgdGhhdAplZGl0aW9uIHRvIHRoZSBwdWJsaWMuCgpJ dCBpcyByZXF1ZXN0ZWQsIGJ1dCBub3QgcmVxdWlyZWQsIHRoYXQgeW91IGNvbnRhY3QgdGhlIGF1 dGhvcnMgb2YgdGhlCkRvY3VtZW50IHdlbGwgYmVmb3JlIHJlZGlzdHJpYnV0aW5nIGFueSBsYXJn ZSBudW1iZXIgb2YgY29waWVzLCB0byBnaXZlCnRoZW0gYSBjaGFuY2UgdG8gcHJvdmlkZSB5b3Ug d2l0aCBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIERvY3VtZW50LgoKQGl0ZW0KTU9ESUZJQ0FU SU9OUwoKWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIGEgTW9kaWZpZWQgVmVyc2lvbiBvZiB0 aGUgRG9jdW1lbnQgdW5kZXIKdGhlIGNvbmRpdGlvbnMgb2Ygc2VjdGlvbnMgMiBhbmQgMyBhYm92 ZSwgcHJvdmlkZWQgdGhhdCB5b3UgcmVsZWFzZQp0aGUgTW9kaWZpZWQgVmVyc2lvbiB1bmRlciBw cmVjaXNlbHkgdGhpcyBMaWNlbnNlLCB3aXRoIHRoZSBNb2RpZmllZApWZXJzaW9uIGZpbGxpbmcg dGhlIHJvbGUgb2YgdGhlIERvY3VtZW50LCB0aHVzIGxpY2Vuc2luZyBkaXN0cmlidXRpb24KYW5k IG1vZGlmaWNhdGlvbiBvZiB0aGUgTW9kaWZpZWQgVmVyc2lvbiB0byB3aG9ldmVyIHBvc3Nlc3Nl cyBhIGNvcHkKb2YgaXQuICBJbiBhZGRpdGlvbiwgeW91IG11c3QgZG8gdGhlc2UgdGhpbmdzIGlu IHRoZSBNb2RpZmllZCBWZXJzaW9uOgoKQGVudW1lcmF0ZSBBCkBpdGVtClVzZSBpbiB0aGUgVGl0 bGUgUGFnZSAoYW5kIG9uIHRoZSBjb3ZlcnMsIGlmIGFueSkgYSB0aXRsZSBkaXN0aW5jdApmcm9t IHRoYXQgb2YgdGhlIERvY3VtZW50LCBhbmQgZnJvbSB0aG9zZSBvZiBwcmV2aW91cyB2ZXJzaW9u cwood2hpY2ggc2hvdWxkLCBpZiB0aGVyZSB3ZXJlIGFueSwgYmUgbGlzdGVkIGluIHRoZSBIaXN0 b3J5IHNlY3Rpb24Kb2YgdGhlIERvY3VtZW50KS4gIFlvdSBtYXkgdXNlIHRoZSBzYW1lIHRpdGxl IGFzIGEgcHJldmlvdXMgdmVyc2lvbgppZiB0aGUgb3JpZ2luYWwgcHVibGlzaGVyIG9mIHRoYXQg dmVyc2lvbiBnaXZlcyBwZXJtaXNzaW9uLgoKQGl0ZW0KTGlzdCBvbiB0aGUgVGl0bGUgUGFnZSwg YXMgYXV0aG9ycywgb25lIG9yIG1vcmUgcGVyc29ucyBvciBlbnRpdGllcwpyZXNwb25zaWJsZSBm b3IgYXV0aG9yc2hpcCBvZiB0aGUgbW9kaWZpY2F0aW9ucyBpbiB0aGUgTW9kaWZpZWQKVmVyc2lv biwgdG9nZXRoZXIgd2l0aCBhdCBsZWFzdCBmaXZlIG9mIHRoZSBwcmluY2lwYWwgYXV0aG9ycyBv ZiB0aGUKRG9jdW1lbnQgKGFsbCBvZiBpdHMgcHJpbmNpcGFsIGF1dGhvcnMsIGlmIGl0IGhhcyBm ZXdlciB0aGFuIGZpdmUpLAp1bmxlc3MgdGhleSByZWxlYXNlIHlvdSBmcm9tIHRoaXMgcmVxdWly ZW1lbnQuCgpAaXRlbQpTdGF0ZSBvbiB0aGUgVGl0bGUgcGFnZSB0aGUgbmFtZSBvZiB0aGUgcHVi bGlzaGVyIG9mIHRoZQpNb2RpZmllZCBWZXJzaW9uLCBhcyB0aGUgcHVibGlzaGVyLgoKQGl0ZW0K UHJlc2VydmUgYWxsIHRoZSBjb3B5cmlnaHQgbm90aWNlcyBvZiB0aGUgRG9jdW1lbnQuCgpAaXRl bQpBZGQgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBmb3IgeW91ciBtb2RpZmljYXRp b25zCmFkamFjZW50IHRvIHRoZSBvdGhlciBjb3B5cmlnaHQgbm90aWNlcy4KCkBpdGVtCkluY2x1 ZGUsIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb3B5cmlnaHQgbm90aWNlcywgYSBsaWNlbnNlIG5v dGljZQpnaXZpbmcgdGhlIHB1YmxpYyBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgTW9kaWZpZWQgVmVy c2lvbiB1bmRlciB0aGUKdGVybXMgb2YgdGhpcyBMaWNlbnNlLCBpbiB0aGUgZm9ybSBzaG93biBp biB0aGUgQWRkZW5kdW0gYmVsb3cuCgpAaXRlbQpQcmVzZXJ2ZSBpbiB0aGF0IGxpY2Vuc2Ugbm90 aWNlIHRoZSBmdWxsIGxpc3RzIG9mIEludmFyaWFudCBTZWN0aW9ucwphbmQgcmVxdWlyZWQgQ292 ZXIgVGV4dHMgZ2l2ZW4gaW4gdGhlIERvY3VtZW50J3MgbGljZW5zZSBub3RpY2UuCgpAaXRlbQpJ bmNsdWRlIGFuIHVuYWx0ZXJlZCBjb3B5IG9mIHRoaXMgTGljZW5zZS4KCkBpdGVtClByZXNlcnZl IHRoZSBzZWN0aW9uIEVudGl0bGVkIGBgSGlzdG9yeScnLCBQcmVzZXJ2ZSBpdHMgVGl0bGUsIGFu ZCBhZGQKdG8gaXQgYW4gaXRlbSBzdGF0aW5nIGF0IGxlYXN0IHRoZSB0aXRsZSwgeWVhciwgbmV3 IGF1dGhvcnMsIGFuZApwdWJsaXNoZXIgb2YgdGhlIE1vZGlmaWVkIFZlcnNpb24gYXMgZ2l2ZW4g b24gdGhlIFRpdGxlIFBhZ2UuICBJZgp0aGVyZSBpcyBubyBzZWN0aW9uIEVudGl0bGVkIGBgSGlz dG9yeScnIGluIHRoZSBEb2N1bWVudCwgY3JlYXRlIG9uZQpzdGF0aW5nIHRoZSB0aXRsZSwgeWVh ciwgYXV0aG9ycywgYW5kIHB1Ymxpc2hlciBvZiB0aGUgRG9jdW1lbnQgYXMKZ2l2ZW4gb24gaXRz IFRpdGxlIFBhZ2UsIHRoZW4gYWRkIGFuIGl0ZW0gZGVzY3JpYmluZyB0aGUgTW9kaWZpZWQKVmVy c2lvbiBhcyBzdGF0ZWQgaW4gdGhlIHByZXZpb3VzIHNlbnRlbmNlLgoKQGl0ZW0KUHJlc2VydmUg dGhlIG5ldHdvcmsgbG9jYXRpb24sIGlmIGFueSwgZ2l2ZW4gaW4gdGhlIERvY3VtZW50IGZvcgpw dWJsaWMgYWNjZXNzIHRvIGEgVHJhbnNwYXJlbnQgY29weSBvZiB0aGUgRG9jdW1lbnQsIGFuZCBs aWtld2lzZQp0aGUgbmV0d29yayBsb2NhdGlvbnMgZ2l2ZW4gaW4gdGhlIERvY3VtZW50IGZvciBw cmV2aW91cyB2ZXJzaW9ucwppdCB3YXMgYmFzZWQgb24uICBUaGVzZSBtYXkgYmUgcGxhY2VkIGlu IHRoZSBgYEhpc3RvcnknJyBzZWN0aW9uLgpZb3UgbWF5IG9taXQgYSBuZXR3b3JrIGxvY2F0aW9u IGZvciBhIHdvcmsgdGhhdCB3YXMgcHVibGlzaGVkIGF0CmxlYXN0IGZvdXIgeWVhcnMgYmVmb3Jl IHRoZSBEb2N1bWVudCBpdHNlbGYsIG9yIGlmIHRoZSBvcmlnaW5hbApwdWJsaXNoZXIgb2YgdGhl IHZlcnNpb24gaXQgcmVmZXJzIHRvIGdpdmVzIHBlcm1pc3Npb24uCgpAaXRlbQpGb3IgYW55IHNl Y3Rpb24gRW50aXRsZWQgYGBBY2tub3dsZWRnZW1lbnRzJycgb3IgYGBEZWRpY2F0aW9ucycnLCBQ cmVzZXJ2ZQp0aGUgVGl0bGUgb2YgdGhlIHNlY3Rpb24sIGFuZCBwcmVzZXJ2ZSBpbiB0aGUgc2Vj dGlvbiBhbGwgdGhlCnN1YnN0YW5jZSBhbmQgdG9uZSBvZiBlYWNoIG9mIHRoZSBjb250cmlidXRv ciBhY2tub3dsZWRnZW1lbnRzIGFuZC9vcgpkZWRpY2F0aW9ucyBnaXZlbiB0aGVyZWluLgoKQGl0 ZW0KUHJlc2VydmUgYWxsIHRoZSBJbnZhcmlhbnQgU2VjdGlvbnMgb2YgdGhlIERvY3VtZW50LAp1 bmFsdGVyZWQgaW4gdGhlaXIgdGV4dCBhbmQgaW4gdGhlaXIgdGl0bGVzLiAgU2VjdGlvbiBudW1i ZXJzCm9yIHRoZSBlcXVpdmFsZW50IGFyZSBub3QgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzZWN0 aW9uIHRpdGxlcy4KCkBpdGVtCkRlbGV0ZSBhbnkgc2VjdGlvbiBFbnRpdGxlZCBgYEVuZG9yc2Vt ZW50cycnLiAgU3VjaCBhIHNlY3Rpb24KbWF5IG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgTW9kaWZp ZWQgVmVyc2lvbi4KCkBpdGVtCkRvIG5vdCByZXRpdGxlIGFueSBleGlzdGluZyBzZWN0aW9uIHRv IGJlIEVudGl0bGVkIGBgRW5kb3JzZW1lbnRzJycgb3IKdG8gY29uZmxpY3QgaW4gdGl0bGUgd2l0 aCBhbnkgSW52YXJpYW50IFNlY3Rpb24uCgpAaXRlbQpQcmVzZXJ2ZSBhbnkgV2FycmFudHkgRGlz Y2xhaW1lcnMuCkBlbmQgZW51bWVyYXRlCgpJZiB0aGUgTW9kaWZpZWQgVmVyc2lvbiBpbmNsdWRl cyBuZXcgZnJvbnQtbWF0dGVyIHNlY3Rpb25zIG9yCmFwcGVuZGljZXMgdGhhdCBxdWFsaWZ5IGFz IFNlY29uZGFyeSBTZWN0aW9ucyBhbmQgY29udGFpbiBubyBtYXRlcmlhbApjb3BpZWQgZnJvbSB0 aGUgRG9jdW1lbnQsIHlvdSBtYXkgYXQgeW91ciBvcHRpb24gZGVzaWduYXRlIHNvbWUgb3IgYWxs Cm9mIHRoZXNlIHNlY3Rpb25zIGFzIGludmFyaWFudC4gIFRvIGRvIHRoaXMsIGFkZCB0aGVpciB0 aXRsZXMgdG8gdGhlCmxpc3Qgb2YgSW52YXJpYW50IFNlY3Rpb25zIGluIHRoZSBNb2RpZmllZCBW ZXJzaW9uJ3MgbGljZW5zZSBub3RpY2UuClRoZXNlIHRpdGxlcyBtdXN0IGJlIGRpc3RpbmN0IGZy b20gYW55IG90aGVyIHNlY3Rpb24gdGl0bGVzLgoKWW91IG1heSBhZGQgYSBzZWN0aW9uIEVudGl0 bGVkIGBgRW5kb3JzZW1lbnRzJycsIHByb3ZpZGVkIGl0IGNvbnRhaW5zCm5vdGhpbmcgYnV0IGVu ZG9yc2VtZW50cyBvZiB5b3VyIE1vZGlmaWVkIFZlcnNpb24gYnkgdmFyaW91cwpwYXJ0aWVzLS0t Zm9yIGV4YW1wbGUsIHN0YXRlbWVudHMgb2YgcGVlciByZXZpZXcgb3IgdGhhdCB0aGUgdGV4dCBo YXMKYmVlbiBhcHByb3ZlZCBieSBhbiBvcmdhbml6YXRpb24gYXMgdGhlIGF1dGhvcml0YXRpdmUg ZGVmaW5pdGlvbiBvZiBhCnN0YW5kYXJkLgoKWW91IG1heSBhZGQgYSBwYXNzYWdlIG9mIHVwIHRv IGZpdmUgd29yZHMgYXMgYSBGcm9udC1Db3ZlciBUZXh0LCBhbmQgYQpwYXNzYWdlIG9mIHVwIHRv IDI1IHdvcmRzIGFzIGEgQmFjay1Db3ZlciBUZXh0LCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Cm9m IENvdmVyIFRleHRzIGluIHRoZSBNb2RpZmllZCBWZXJzaW9uLiAgT25seSBvbmUgcGFzc2FnZSBv ZgpGcm9udC1Db3ZlciBUZXh0IGFuZCBvbmUgb2YgQmFjay1Db3ZlciBUZXh0IG1heSBiZSBhZGRl ZCBieSAob3IKdGhyb3VnaCBhcnJhbmdlbWVudHMgbWFkZSBieSkgYW55IG9uZSBlbnRpdHkuICBJ ZiB0aGUgRG9jdW1lbnQgYWxyZWFkeQppbmNsdWRlcyBhIGNvdmVyIHRleHQgZm9yIHRoZSBzYW1l IGNvdmVyLCBwcmV2aW91c2x5IGFkZGVkIGJ5IHlvdSBvcgpieSBhcnJhbmdlbWVudCBtYWRlIGJ5 IHRoZSBzYW1lIGVudGl0eSB5b3UgYXJlIGFjdGluZyBvbiBiZWhhbGYgb2YsCnlvdSBtYXkgbm90 IGFkZCBhbm90aGVyOyBidXQgeW91IG1heSByZXBsYWNlIHRoZSBvbGQgb25lLCBvbiBleHBsaWNp dApwZXJtaXNzaW9uIGZyb20gdGhlIHByZXZpb3VzIHB1Ymxpc2hlciB0aGF0IGFkZGVkIHRoZSBv bGQgb25lLgoKVGhlIGF1dGhvcihzKSBhbmQgcHVibGlzaGVyKHMpIG9mIHRoZSBEb2N1bWVudCBk byBub3QgYnkgdGhpcyBMaWNlbnNlCmdpdmUgcGVybWlzc2lvbiB0byB1c2UgdGhlaXIgbmFtZXMg Zm9yIHB1YmxpY2l0eSBmb3Igb3IgdG8gYXNzZXJ0IG9yCmltcGx5IGVuZG9yc2VtZW50IG9mIGFu eSBNb2RpZmllZCBWZXJzaW9uLgoKQGl0ZW0KQ09NQklOSU5HIERPQ1VNRU5UUwoKWW91IG1heSBj b21iaW5lIHRoZSBEb2N1bWVudCB3aXRoIG90aGVyIGRvY3VtZW50cyByZWxlYXNlZCB1bmRlciB0 aGlzCkxpY2Vuc2UsIHVuZGVyIHRoZSB0ZXJtcyBkZWZpbmVkIGluIHNlY3Rpb24gNCBhYm92ZSBm b3IgbW9kaWZpZWQKdmVyc2lvbnMsIHByb3ZpZGVkIHRoYXQgeW91IGluY2x1ZGUgaW4gdGhlIGNv bWJpbmF0aW9uIGFsbCBvZiB0aGUKSW52YXJpYW50IFNlY3Rpb25zIG9mIGFsbCBvZiB0aGUgb3Jp Z2luYWwgZG9jdW1lbnRzLCB1bm1vZGlmaWVkLCBhbmQKbGlzdCB0aGVtIGFsbCBhcyBJbnZhcmlh bnQgU2VjdGlvbnMgb2YgeW91ciBjb21iaW5lZCB3b3JrIGluIGl0cwpsaWNlbnNlIG5vdGljZSwg YW5kIHRoYXQgeW91IHByZXNlcnZlIGFsbCB0aGVpciBXYXJyYW50eSBEaXNjbGFpbWVycy4KClRo ZSBjb21iaW5lZCB3b3JrIG5lZWQgb25seSBjb250YWluIG9uZSBjb3B5IG9mIHRoaXMgTGljZW5z ZSwgYW5kCm11bHRpcGxlIGlkZW50aWNhbCBJbnZhcmlhbnQgU2VjdGlvbnMgbWF5IGJlIHJlcGxh Y2VkIHdpdGggYSBzaW5nbGUKY29weS4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBJbnZhcmlhbnQg U2VjdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lIGJ1dApkaWZmZXJlbnQgY29udGVudHMsIG1ha2Ug dGhlIHRpdGxlIG9mIGVhY2ggc3VjaCBzZWN0aW9uIHVuaXF1ZSBieQphZGRpbmcgYXQgdGhlIGVu ZCBvZiBpdCwgaW4gcGFyZW50aGVzZXMsIHRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbAphdXRob3Ig b3IgcHVibGlzaGVyIG9mIHRoYXQgc2VjdGlvbiBpZiBrbm93biwgb3IgZWxzZSBhIHVuaXF1ZSBu dW1iZXIuCk1ha2UgdGhlIHNhbWUgYWRqdXN0bWVudCB0byB0aGUgc2VjdGlvbiB0aXRsZXMgaW4g dGhlIGxpc3Qgb2YKSW52YXJpYW50IFNlY3Rpb25zIGluIHRoZSBsaWNlbnNlIG5vdGljZSBvZiB0 aGUgY29tYmluZWQgd29yay4KCkluIHRoZSBjb21iaW5hdGlvbiwgeW91IG11c3QgY29tYmluZSBh bnkgc2VjdGlvbnMgRW50aXRsZWQgYGBIaXN0b3J5JycKaW4gdGhlIHZhcmlvdXMgb3JpZ2luYWwg ZG9jdW1lbnRzLCBmb3JtaW5nIG9uZSBzZWN0aW9uIEVudGl0bGVkCmBgSGlzdG9yeScnOyBsaWtl d2lzZSBjb21iaW5lIGFueSBzZWN0aW9ucyBFbnRpdGxlZCBgYEFja25vd2xlZGdlbWVudHMnJywK YW5kIGFueSBzZWN0aW9ucyBFbnRpdGxlZCBgYERlZGljYXRpb25zJycuICBZb3UgbXVzdCBkZWxl dGUgYWxsCnNlY3Rpb25zIEVudGl0bGVkIGBgRW5kb3JzZW1lbnRzLicnCgpAaXRlbQpDT0xMRUNU SU9OUyBPRiBET0NVTUVOVFMKCllvdSBtYXkgbWFrZSBhIGNvbGxlY3Rpb24gY29uc2lzdGluZyBv ZiB0aGUgRG9jdW1lbnQgYW5kIG90aGVyIGRvY3VtZW50cwpyZWxlYXNlZCB1bmRlciB0aGlzIExp Y2Vuc2UsIGFuZCByZXBsYWNlIHRoZSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGlzCkxpY2Vuc2Ug aW4gdGhlIHZhcmlvdXMgZG9jdW1lbnRzIHdpdGggYSBzaW5nbGUgY29weSB0aGF0IGlzIGluY2x1 ZGVkIGluCnRoZSBjb2xsZWN0aW9uLCBwcm92aWRlZCB0aGF0IHlvdSBmb2xsb3cgdGhlIHJ1bGVz IG9mIHRoaXMgTGljZW5zZSBmb3IKdmVyYmF0aW0gY29weWluZyBvZiBlYWNoIG9mIHRoZSBkb2N1 bWVudHMgaW4gYWxsIG90aGVyIHJlc3BlY3RzLgoKWW91IG1heSBleHRyYWN0IGEgc2luZ2xlIGRv Y3VtZW50IGZyb20gc3VjaCBhIGNvbGxlY3Rpb24sIGFuZCBkaXN0cmlidXRlCml0IGluZGl2aWR1 YWxseSB1bmRlciB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHlvdSBpbnNlcnQgYSBjb3B5IG9mIHRo aXMKTGljZW5zZSBpbnRvIHRoZSBleHRyYWN0ZWQgZG9jdW1lbnQsIGFuZCBmb2xsb3cgdGhpcyBM aWNlbnNlIGluIGFsbApvdGhlciByZXNwZWN0cyByZWdhcmRpbmcgdmVyYmF0aW0gY29weWluZyBv ZiB0aGF0IGRvY3VtZW50LgoKQGl0ZW0KQUdHUkVHQVRJT04gV0lUSCBJTkRFUEVOREVOVCBXT1JL UwoKQSBjb21waWxhdGlvbiBvZiB0aGUgRG9jdW1lbnQgb3IgaXRzIGRlcml2YXRpdmVzIHdpdGgg b3RoZXIgc2VwYXJhdGUKYW5kIGluZGVwZW5kZW50IGRvY3VtZW50cyBvciB3b3JrcywgaW4gb3Ig b24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yCmRpc3RyaWJ1dGlvbiBtZWRpdW0sIGlzIGNhbGxl ZCBhbiBgYGFnZ3JlZ2F0ZScnIGlmIHRoZSBjb3B5cmlnaHQKcmVzdWx0aW5nIGZyb20gdGhlIGNv bXBpbGF0aW9uIGlzIG5vdCB1c2VkIHRvIGxpbWl0IHRoZSBsZWdhbCByaWdodHMKb2YgdGhlIGNv bXBpbGF0aW9uJ3MgdXNlcnMgYmV5b25kIHdoYXQgdGhlIGluZGl2aWR1YWwgd29ya3MgcGVybWl0 LgpXaGVuIHRoZSBEb2N1bWVudCBpcyBpbmNsdWRlZCBpbiBhbiBhZ2dyZWdhdGUsIHRoaXMgTGlj ZW5zZSBkb2VzIG5vdAphcHBseSB0byB0aGUgb3RoZXIgd29ya3MgaW4gdGhlIGFnZ3JlZ2F0ZSB3 aGljaCBhcmUgbm90IHRoZW1zZWx2ZXMKZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgRG9jdW1lbnQu CgpJZiB0aGUgQ292ZXIgVGV4dCByZXF1aXJlbWVudCBvZiBzZWN0aW9uIDMgaXMgYXBwbGljYWJs ZSB0byB0aGVzZQpjb3BpZXMgb2YgdGhlIERvY3VtZW50LCB0aGVuIGlmIHRoZSBEb2N1bWVudCBp cyBsZXNzIHRoYW4gb25lIGhhbGYgb2YKdGhlIGVudGlyZSBhZ2dyZWdhdGUsIHRoZSBEb2N1bWVu dCdzIENvdmVyIFRleHRzIG1heSBiZSBwbGFjZWQgb24KY292ZXJzIHRoYXQgYnJhY2tldCB0aGUg RG9jdW1lbnQgd2l0aGluIHRoZSBhZ2dyZWdhdGUsIG9yIHRoZQplbGVjdHJvbmljIGVxdWl2YWxl bnQgb2YgY292ZXJzIGlmIHRoZSBEb2N1bWVudCBpcyBpbiBlbGVjdHJvbmljIGZvcm0uCk90aGVy d2lzZSB0aGV5IG11c3QgYXBwZWFyIG9uIHByaW50ZWQgY292ZXJzIHRoYXQgYnJhY2tldCB0aGUg d2hvbGUKYWdncmVnYXRlLgoKQGl0ZW0KVFJBTlNMQVRJT04KClRyYW5zbGF0aW9uIGlzIGNvbnNp ZGVyZWQgYSBraW5kIG9mIG1vZGlmaWNhdGlvbiwgc28geW91IG1heQpkaXN0cmlidXRlIHRyYW5z bGF0aW9ucyBvZiB0aGUgRG9jdW1lbnQgdW5kZXIgdGhlIHRlcm1zIG9mIHNlY3Rpb24gNC4KUmVw bGFjaW5nIEludmFyaWFudCBTZWN0aW9ucyB3aXRoIHRyYW5zbGF0aW9ucyByZXF1aXJlcyBzcGVj aWFsCnBlcm1pc3Npb24gZnJvbSB0aGVpciBjb3B5cmlnaHQgaG9sZGVycywgYnV0IHlvdSBtYXkg aW5jbHVkZQp0cmFuc2xhdGlvbnMgb2Ygc29tZSBvciBhbGwgSW52YXJpYW50IFNlY3Rpb25zIGlu IGFkZGl0aW9uIHRvIHRoZQpvcmlnaW5hbCB2ZXJzaW9ucyBvZiB0aGVzZSBJbnZhcmlhbnQgU2Vj dGlvbnMuICBZb3UgbWF5IGluY2x1ZGUgYQp0cmFuc2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UsIGFu ZCBhbGwgdGhlIGxpY2Vuc2Ugbm90aWNlcyBpbiB0aGUKRG9jdW1lbnQsIGFuZCBhbnkgV2FycmFu dHkgRGlzY2xhaW1lcnMsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gaW5jbHVkZQp0aGUgb3JpZ2lu YWwgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoaXMgTGljZW5zZSBhbmQgdGhlIG9yaWdpbmFsIHZlcnNp b25zCm9mIHRob3NlIG5vdGljZXMgYW5kIGRpc2NsYWltZXJzLiAgSW4gY2FzZSBvZiBhIGRpc2Fn cmVlbWVudCBiZXR3ZWVuCnRoZSB0cmFuc2xhdGlvbiBhbmQgdGhlIG9yaWdpbmFsIHZlcnNpb24g b2YgdGhpcyBMaWNlbnNlIG9yIGEgbm90aWNlCm9yIGRpc2NsYWltZXIsIHRoZSBvcmlnaW5hbCB2 ZXJzaW9uIHdpbGwgcHJldmFpbC4KCklmIGEgc2VjdGlvbiBpbiB0aGUgRG9jdW1lbnQgaXMgRW50 aXRsZWQgYGBBY2tub3dsZWRnZW1lbnRzJycsCmBgRGVkaWNhdGlvbnMnJywgb3IgYGBIaXN0b3J5 JycsIHRoZSByZXF1aXJlbWVudCAoc2VjdGlvbiA0KSB0byBQcmVzZXJ2ZQppdHMgVGl0bGUgKHNl Y3Rpb24gMSkgd2lsbCB0eXBpY2FsbHkgcmVxdWlyZSBjaGFuZ2luZyB0aGUgYWN0dWFsCnRpdGxl LgoKQGl0ZW0KVEVSTUlOQVRJT04KCllvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5z ZSwgb3IgZGlzdHJpYnV0ZSB0aGUgRG9jdW1lbnQKZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRl ZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9k aWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIGl0IGlzIHZvaWQsIGFuZAp3aWxsIGF1dG9t YXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KCkhvd2V2 ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3Vy IGxpY2Vuc2UKZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVk IChhKSBwcm92aXNpb25hbGx5LAp1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVy IGV4cGxpY2l0bHkgYW5kIGZpbmFsbHkKdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikg cGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyCmZhaWxzIHRvIG5vdGlmeSB5b3Ug b2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMgcHJpb3IgdG8KNjAgZGF5 cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFy dGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzCnJlaW5zdGF0ZWQgcGVybWFuZW50bHkgaWYgdGhl IGNvcHlyaWdodCBob2xkZXIgbm90aWZpZXMgeW91IG9mIHRoZQp2aW9sYXRpb24gYnkgc29tZSBy ZWFzb25hYmxlIG1lYW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCnJlY2VpdmVk IG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20g dGhhdApjb3B5cmlnaHQgaG9sZGVyLCBhbmQgeW91IGN1cmUgdGhlIHZpb2xhdGlvbiBwcmlvciB0 byAzMCBkYXlzIGFmdGVyCnlvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgoKVGVybWluYXRpb24g b2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUK bGljZW5zZXMgb2YgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMgb3IgcmlnaHRzIGZy b20geW91IHVuZGVyCnRoaXMgTGljZW5zZS4gIElmIHlvdXIgcmlnaHRzIGhhdmUgYmVlbiB0ZXJt aW5hdGVkIGFuZCBub3QgcGVybWFuZW50bHkKcmVpbnN0YXRlZCwgcmVjZWlwdCBvZiBhIGNvcHkg b2Ygc29tZSBvciBhbGwgb2YgdGhlIHNhbWUgbWF0ZXJpYWwgZG9lcwpub3QgZ2l2ZSB5b3UgYW55 IHJpZ2h0cyB0byB1c2UgaXQuCgpAaXRlbQpGVVRVUkUgUkVWSVNJT05TIE9GIFRISVMgTElDRU5T RQoKVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCBuZXcsIHJldmlzZWQg dmVyc2lvbnMKb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSBmcm9tIHRpbWUg dG8gdGltZS4gIFN1Y2ggbmV3CnZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8g dGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heQpkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3Mg bmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLiAgU2VlCkB1cmVme2h0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvfS4KCkVhY2ggdmVyc2lvbiBvZiB0aGUgTGljZW5zZSBpcyBnaXZlbiBhIGRpc3Rp bmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLgpJZiB0aGUgRG9jdW1lbnQgc3BlY2lmaWVzIHRoYXQg YSBwYXJ0aWN1bGFyIG51bWJlcmVkIHZlcnNpb24gb2YgdGhpcwpMaWNlbnNlIGBgb3IgYW55IGxh dGVyIHZlcnNpb24nJyBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mCmZvbGxv d2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgc3BlY2lmaWVkIHZl cnNpb24gb3IKb2YgYW55IGxhdGVyIHZlcnNpb24gdGhhdCBoYXMgYmVlbiBwdWJsaXNoZWQgKG5v dCBhcyBhIGRyYWZ0KSBieSB0aGUKRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIERv Y3VtZW50IGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uCm51bWJlciBvZiB0aGlzIExpY2Vuc2Us IHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIChub3QKYXMgYSBkcmFm dCkgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBEb2N1bWVudApzcGVj aWZpZXMgdGhhdCBhIHByb3h5IGNhbiBkZWNpZGUgd2hpY2ggZnV0dXJlIHZlcnNpb25zIG9mIHRo aXMKTGljZW5zZSBjYW4gYmUgdXNlZCwgdGhhdCBwcm94eSdzIHB1YmxpYyBzdGF0ZW1lbnQgb2Yg YWNjZXB0YW5jZSBvZiBhCnZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UgdG8gY2hv b3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlCkRvY3VtZW50LgoKQGl0ZW0KUkVMSUNFTlNJTkcKCmBg TWFzc2l2ZSBNdWx0aWF1dGhvciBDb2xsYWJvcmF0aW9uIFNpdGUnJyAob3IgYGBNTUMgU2l0ZScn KSBtZWFucyBhbnkKV29ybGQgV2lkZSBXZWIgc2VydmVyIHRoYXQgcHVibGlzaGVzIGNvcHlyaWdo dGFibGUgd29ya3MgYW5kIGFsc28KcHJvdmlkZXMgcHJvbWluZW50IGZhY2lsaXRpZXMgZm9yIGFu eWJvZHkgdG8gZWRpdCB0aG9zZSB3b3Jrcy4gIEEKcHVibGljIHdpa2kgdGhhdCBhbnlib2R5IGNh biBlZGl0IGlzIGFuIGV4YW1wbGUgb2Ygc3VjaCBhIHNlcnZlci4gIEEKYGBNYXNzaXZlIE11bHRp YXV0aG9yIENvbGxhYm9yYXRpb24nJyAob3IgYGBNTUMnJykgY29udGFpbmVkIGluIHRoZQpzaXRl IG1lYW5zIGFueSBzZXQgb2YgY29weXJpZ2h0YWJsZSB3b3JrcyB0aHVzIHB1Ymxpc2hlZCBvbiB0 aGUgTU1DCnNpdGUuCgpgYENDLUJZLVNBJycgbWVhbnMgdGhlIENyZWF0aXZlIENvbW1vbnMgQXR0 cmlidXRpb24tU2hhcmUgQWxpa2UgMy4wCmxpY2Vuc2UgcHVibGlzaGVkIGJ5IENyZWF0aXZlIENv bW1vbnMgQ29ycG9yYXRpb24sIGEgbm90LWZvci1wcm9maXQKY29ycG9yYXRpb24gd2l0aCBhIHBy aW5jaXBhbCBwbGFjZSBvZiBidXNpbmVzcyBpbiBTYW4gRnJhbmNpc2NvLApDYWxpZm9ybmlhLCBh cyB3ZWxsIGFzIGZ1dHVyZSBjb3B5bGVmdCB2ZXJzaW9ucyBvZiB0aGF0IGxpY2Vuc2UKcHVibGlz aGVkIGJ5IHRoYXQgc2FtZSBvcmdhbml6YXRpb24uCgpgYEluY29ycG9yYXRlJycgbWVhbnMgdG8g cHVibGlzaCBvciByZXB1Ymxpc2ggYSBEb2N1bWVudCwgaW4gd2hvbGUgb3IKaW4gcGFydCwgYXMg cGFydCBvZiBhbm90aGVyIERvY3VtZW50LgoKQW4gTU1DIGlzIGBgZWxpZ2libGUgZm9yIHJlbGlj ZW5zaW5nJycgaWYgaXQgaXMgbGljZW5zZWQgdW5kZXIgdGhpcwpMaWNlbnNlLCBhbmQgaWYgYWxs IHdvcmtzIHRoYXQgd2VyZSBmaXJzdCBwdWJsaXNoZWQgdW5kZXIgdGhpcyBMaWNlbnNlCnNvbWV3 aGVyZSBvdGhlciB0aGFuIHRoaXMgTU1DLCBhbmQgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCBp biB3aG9sZQpvciBpbiBwYXJ0IGludG8gdGhlIE1NQywgKDEpIGhhZCBubyBjb3ZlciB0ZXh0cyBv ciBpbnZhcmlhbnQgc2VjdGlvbnMsCmFuZCAoMikgd2VyZSB0aHVzIGluY29ycG9yYXRlZCBwcmlv ciB0byBOb3ZlbWJlciAxLCAyMDA4LgoKVGhlIG9wZXJhdG9yIG9mIGFuIE1NQyBTaXRlIG1heSBy ZXB1Ymxpc2ggYW4gTU1DIGNvbnRhaW5lZCBpbiB0aGUgc2l0ZQp1bmRlciBDQy1CWS1TQSBvbiB0 aGUgc2FtZSBzaXRlIGF0IGFueSB0aW1lIGJlZm9yZSBBdWd1c3QgMSwgMjAwOSwKcHJvdmlkZWQg dGhlIE1NQyBpcyBlbGlnaWJsZSBmb3IgcmVsaWNlbnNpbmcuCgpAZW5kIGVudW1lcmF0ZQoKQHBh Z2UKQGhlYWRpbmcgQURERU5EVU06IEhvdyB0byB1c2UgdGhpcyBMaWNlbnNlIGZvciB5b3VyIGRv Y3VtZW50cwoKVG8gdXNlIHRoaXMgTGljZW5zZSBpbiBhIGRvY3VtZW50IHlvdSBoYXZlIHdyaXR0 ZW4sIGluY2x1ZGUgYSBjb3B5IG9mCnRoZSBMaWNlbnNlIGluIHRoZSBkb2N1bWVudCBhbmQgcHV0 IHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0IGFuZApsaWNlbnNlIG5vdGljZXMganVzdCBhZnRlciB0 aGUgdGl0bGUgcGFnZToKCkBzbWFsbGV4YW1wbGUKQGdyb3VwCiAgQ29weXJpZ2h0IChDKSAgQHZh cnt5ZWFyfSAgQHZhcnt5b3VyIG5hbWV9LgogIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5 LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudAogIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMwogIG9y IGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOwogIHdpdGggbm8gSW52YXJpYW50IFNlY3Rpb25zLCBubyBGcm9udC1Db3ZlciBUZXh0cywg YW5kIG5vIEJhY2stQ292ZXIKICBUZXh0cy4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBpcyBpbmNs dWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVQogIEZyZWUgRG9jdW1lbnRhdGlvbiBM aWNlbnNlJycuCkBlbmQgZ3JvdXAKQGVuZCBzbWFsbGV4YW1wbGUKCklmIHlvdSBoYXZlIEludmFy aWFudCBTZWN0aW9ucywgRnJvbnQtQ292ZXIgVGV4dHMgYW5kIEJhY2stQ292ZXIgVGV4dHMsCnJl cGxhY2UgdGhlIGBgd2l0aEBkb3Rze31UZXh0cy4nJ0A6IGxpbmUgd2l0aCB0aGlzOgoKQHNtYWxs ZXhhbXBsZQpAZ3JvdXAKICAgIHdpdGggdGhlIEludmFyaWFudCBTZWN0aW9ucyBiZWluZyBAdmFy e2xpc3QgdGhlaXIgdGl0bGVzfSwgd2l0aAogICAgdGhlIEZyb250LUNvdmVyIFRleHRzIGJlaW5n IEB2YXJ7bGlzdH0sIGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzCiAgICBiZWluZyBAdmFy e2xpc3R9LgpAZW5kIGdyb3VwCkBlbmQgc21hbGxleGFtcGxlCgpJZiB5b3UgaGF2ZSBJbnZhcmlh bnQgU2VjdGlvbnMgd2l0aG91dCBDb3ZlciBUZXh0cywgb3Igc29tZSBvdGhlcgpjb21iaW5hdGlv biBvZiB0aGUgdGhyZWUsIG1lcmdlIHRob3NlIHR3byBhbHRlcm5hdGl2ZXMgdG8gc3VpdCB0aGUK c2l0dWF0aW9uLgoKSWYgeW91ciBkb2N1bWVudCBjb250YWlucyBub250cml2aWFsIGV4YW1wbGVz IG9mIHByb2dyYW0gY29kZSwgd2UKcmVjb21tZW5kIHJlbGVhc2luZyB0aGVzZSBleGFtcGxlcyBp biBwYXJhbGxlbCB1bmRlciB5b3VyIGNob2ljZSBvZgpmcmVlIHNvZnR3YXJlIGxpY2Vuc2UsIHN1 Y2ggYXMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAp0byBwZXJtaXQgdGhlaXIgdXNl IGluIGZyZWUgc29mdHdhcmUuCgpAYyBMb2NhbCBWYXJpYWJsZXM6CkBjIGlzcGVsbC1sb2NhbC1w ZGljdDogImlzcGVsbC1kaWN0IgpAYyBFbmQ6CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlZ2xvdC0xLjE3L2RvY3N0eWxlLnRleGkA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDEwNTIAMTQ1 NjY2MTMzNjQAMDE0NjQ1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHVzdGFyICAAcGhpbGlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwaGlsaXAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBjIEVtYWNzIGRvY3VtZW50YXRpb24gc3R5 bGUgc2V0dGluZ3MKQGRvY3VtZW50ZW5jb2RpbmcgVVRGLTgKQGMgVGhlc2UgdHdvIHJlcXVpcmUg VGV4aW5mbyA1LjAgb3IgbGF0ZXIsIHNvIHdlIHVzZSB0aGUgb2xkZXIKQGMgZXF1aXZhbGVudCBA c2V0IHZhcmlhYmxlcyBzdXBwb3J0ZWQgaW4gNC4xMSBhbmQgaGVuY2UKQGlnbm9yZQpAY29kZXF1 b3RlYmFja3RpY2sgb24KQGNvZGVxdW90ZXVuZGlyZWN0ZWQgb24KQGVuZCBpZ25vcmUKQHNldCB0 eGljb2RlcXVvdGV1bmRpcmVjdGVkCkBzZXQgdHhpY29kZXF1b3RlYmFja3RpY2sKQGlmdGV4CkBj IEl0IHR1cm5zIG91dCBUZVggc29tZXRpbWVzIGZhaWxzIHRvIGh5cGhlbmF0ZSwgc28gd2UgaGVs cCBpdCBoZXJlCkBoeXBoZW5hdGlvbnthdS10by1tYXQtaS1jYWwtbHl9CkBoeXBoZW5hdGlvbntz cGVjLWktZmllZH0KQGh5cGhlbmF0aW9ue3dvcmstYS1yb3VuZH0KQGh5cGhlbmF0aW9ue3dvcmst YS1yb3VuZHN9CkBoeXBoZW5hdGlvbnt1bi1tYXJrZWR9CkBoeXBoZW5hdGlvbntkaWMtdGlvbi1h cnl9CkBlbmQgaWZ0ZXgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlZ2xvdC0xLjE3L2VnbG90LnRleGkAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAyMDAyNjEAMTQ2NzE1 NDAwNjcAMDE0MTMwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyICAAcGhpbGlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwaGlsaXAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxpbnB1dCB0ZXhpbmZvICBAYyAtKi10ZXhpbmZv LSotCkBjICUqKnN0YXJ0IG9mIGhlYWRlcgpAc2V0ZmlsZW5hbWUgLi4vLi4vZWdsb3QuaW5mbwpA c2V0dGl0bGUgRWdsb3Q6IFRoZSBFbWFjcyBDbGllbnQgZm9yIHRoZSBMYW5ndWFnZSBTZXJ2ZXIg UHJvdG9jb2wKQGluY2x1ZGUgZG9jc3R5bGUudGV4aQpAc3luY29kZWluZGV4IHZyIGNwCkBzeW5j b2RlaW5kZXggZm4gY3AKQGMgJSoqZW5kIG9mIGhlYWRlcgoKQGNvcHlpbmcKVGhpcyBtYW51YWwg aXMgZm9yIEVnbG90LCB0aGUgRW1hY3MgTFNQIGNsaWVudC4KCkNvcHlyaWdodCBAY29weXJpZ2h0 e30gMjAyMi0tMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCkBxdW90YXRpb24K UGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0 aGlzIGRvY3VtZW50CnVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlv biBMaWNlbnNlLCBWZXJzaW9uIDEuMyBvcgphbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubwpJbnZhcmlhbnQgU2VjdGlvbnMs IHdpdGggdGhlIEZyb250LUNvdmVyIFRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsJycsCmFuZCB3 aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzIGFzIGluIChhKSBiZWxvdy4gIEEgY29weSBvZiB0aGUg bGljZW5zZQppcyBpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZScnLgoKKGEpIFRoZSBGU0YncyBCYWNrLUNvdmVyIFRleHQgaXM6 IGBgWW91IGhhdmUgdGhlIGZyZWVkb20gdG8gY29weSBhbmQKbW9kaWZ5IHRoaXMgR05VIG1hbnVh bC4nJwpAZW5kIHF1b3RhdGlvbgpAZW5kIGNvcHlpbmcKCkBkaXJjYXRlZ29yeSBFbWFjcyBtaXNj IGZlYXR1cmVzCkBkaXJlbnRyeQoqIEVnbG90OiAoZWdsb3QpLiAgICAgICAgICAgICBMYW5ndWFn ZSBTZXJ2ZXIgUHJvdG9jb2wgY2xpZW50IGZvciBFbWFjcy4KQGVuZCBkaXJlbnRyeQoKQHRpdGxl cGFnZQpAc3AgNApAYyBUaGUgdGl0bGUgaXMgcHJpbnRlZCBpbiBhIGxhcmdlIGZvbnQuCkBjZW50 ZXIgQHRpdGxlZm9udHtVc2VyJ3MgR3VpZGV9CkBzcCAxCkBjZW50ZXIgQHRpdGxlZm9udHt0b30K QHNwIDEKQGNlbnRlciBAdGl0bGVmb250e0VnbG90OiBUaGUgRW1hY3MgTFNQIENsaWVudH0KQGln bm9yZQpAc3AgMgpAY2VudGVyIHJlbGVhc2UgMS44CkBjIC1yZWxlYXNlLQpAZW5kIGlnbm9yZQpA c3AgMwpAY2VudGVyIEpvQH5hbyBUQCdhdm9yYSAmIEVsaSBaYXJldHNraWkKQGMgLWRhdGUtCgpA cGFnZQpAdnNraXAgMHB0IHBsdXMgMWZpbGxsCkBpbnNlcnRjb3B5aW5nCkBlbmQgdGl0bGVwYWdl CgpAY29udGVudHMKCkBpZm5vdHRleApAbm9kZSBUb3AKQHRvcCBFZ2xvdAoKQGNpbmRleCBMU1AK QGNpbmRleCBsYW5ndWFnZSBzZXJ2ZXIgcHJvdG9jb2wKRWdsb3QgaXMgdGhlIEVtYWNzIGNsaWVu dCBmb3IgdGhlIEBkZm57TGFuZ3VhZ2UgU2VydmVyIFByb3RvY29sfQooQGFjcm9ueW17TFNQfSku ICBUaGUgbmFtZSBgYEVnbG90JycgaXMgYW4gYWNyb255bSB0aGF0IHN0YW5kcyBmb3IKQGlmaHRt bApgYEBlbXBoe0V9bWFjcyBQb2x5QGVtcGh7Z2xvdH0nJy4KQGVuZCBpZmh0bWwKQGlmbm90aHRt bApgYEVtYWNzIHBvbHlHTE9UJycuCkBlbmQgaWZub3RodG1sCkBmb290bm90ZXsKQSBAZGZue3Bv bHlnbG90fSBpcyBhCnBlcnNvbiB3aG8gaXMgYWJsZSB0byB1c2Ugc2V2ZXJhbCBsYW5ndWFnZXMu Cn0gRWdsb3QgcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgYW5kIGEgc2V0IG9mIGNvbW1hbmRzIGZv ciBlbnJpY2hpbmcKdGhlIHNvdXJjZSBjb2RlIGVkaXRpbmcgY2FwYWJpbGl0aWVzIG9mIEVtYWNz IHZpYSBMU1BALiAgTFNQIGlzIGEKc3RhbmRhcmRpemVkIGNvbW11bmljYXRpb25zIHByb3RvY29s IGJldHdlZW4gc291cmNlIGNvZGUgZWRpdG9ycyAoc3VjaAphcyBFbWFjcykgYW5kIGxhbmd1YWdl IHNlcnZlcnMtLS1wcm9ncmFtcyBleHRlcm5hbCB0byBFbWFjcyB3aGljaAphbmFseXplIHRoZSBz b3VyY2UgY29kZSBvbiBiZWhhbGYgb2YgRW1hY3MuICBUaGUgcHJvdG9jb2wgYWxsb3dzIEVtYWNz CnRvIHJlY2VpdmUgdmFyaW91cyBzb3VyY2UgY29kZSBzZXJ2aWNlcyBmcm9tIHRoZSBzZXJ2ZXIs IHN1Y2ggYXMKZGVzY3JpcHRpb24gYW5kIGxvY2F0aW9uIG9mIGZ1bmN0aW9uIGNhbGxzLCB0eXBl cyBvZiB2YXJpYWJsZXMsIGNsYXNzCmRlZmluaXRpb25zLCBzeW50YWN0aWMgZXJyb3JzLCBldGMu ICBUaGlzIHdheSwgRW1hY3MgZG9lc24ndCBuZWVkIHRvCmltcGxlbWVudCB0aGUgbGFuZ3VhZ2Ut c3BlY2lmaWMgcGFyc2luZyBhbmQgYW5hbHlzaXMgY2FwYWJpbGl0aWVzIGluCml0cyBvd24gY29k ZSwgYnV0IGlzIHN0aWxsIGNhcGFibGUgb2YgcHJvdmlkaW5nIHNvcGhpc3RpY2F0ZWQgZWRpdGlu ZwpmZWF0dXJlcyB0aGF0IHJlbHkgb24gc3VjaCBjYXBhYmlsaXRpZXMsIHN1Y2ggYXMgYXV0b21h dGljIGNvZGUKY29tcGxldGlvbiwgZ28tdG8gZGVmaW5pdGlvbiBvZiBmdW5jdGlvbi9jbGFzcywg ZG9jdW1lbnRhdGlvbiBvZgpzeW1ib2wgYXQtcG9pbnQsIHJlZmFjdG9yaW5nLCBvbi10aGUtZmx5 IGRpYWdub3N0aWNzLCBhbmQgbW9yZS4KCkVnbG90IGl0c2VsZiBpcyBjb21wbGV0ZWx5IGxhbmd1 YWdlLWFnbm9zdGljLCBidXQgaXQgY2FuIHN1cHBvcnQgYW55CnByb2dyYW1taW5nIGxhbmd1YWdl IGZvciB3aGljaCB0aGVyZSBpcyBhIGxhbmd1YWdlIHNlcnZlciBhbmQgYW4gRW1hY3MKbWFqb3Ig bW9kZS4KClRoaXMgbWFudWFsIGRvY3VtZW50cyBob3cgdG8gY29uZmlndXJlLCB1c2UsIGFuZCBj dXN0b21pemUgRWdsb3QuCgpAaW5zZXJ0Y29weWluZwoKQG1lbnUKKiBRdWljayBTdGFydDo6ICAg ICAgICAgICAgICAgICBGb3IgdGhlIGltcGF0aWVudC4KKiBFZ2xvdCBhbmQgTFNQIFNlcnZlcnM6 OiAgICAgICBIb3cgdG8gd29yayB3aXRoIGxhbmd1YWdlIHNlcnZlcnMuCiogVXNpbmcgRWdsb3Q6 OiAgICAgICAgICAgICAgICAgSW1wb3J0YW50IEVnbG90IGNvbW1hbmRzIGFuZCB2YXJpYWJsZXMu CiogQ3VzdG9taXppbmcgRWdsb3Q6OiAgICAgICAgICAgRWdsb3QgY3VzdG9taXphdGlvbiBhbmQg YWR2YW5jZWQgZmVhdHVyZXMuCiogQWR2YW5jZWQgc2VydmVyIGNvbmZpZ3VyYXRpb246OiAgRmlu ZS10dW5lIGEgc3BlY2lmaWMgbGFuZ3VhZ2Ugc2VydmVyCiogRXh0ZW5kaW5nIEVnbG90OjogICAg ICAgICAgICAgV3JpdGluZyBFZ2xvdCBleHRlbnNpb25zIGluIEVsaXNwCiogVHJvdWJsZXNob290 aW5nIEVnbG90OjogICAgICAgVHJvdWJsZXNob290aW5nIGFuZCByZXBvcnRpbmcgYnVncy4KKiBH TlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2U6OiAgVGhlIGxpY2Vuc2UgZm9yIHRoaXMgbWFu dWFsLgoqIEluZGV4OjoKQGVuZCBtZW51CkBlbmQgaWZub3R0ZXgKCkBub2RlIFF1aWNrIFN0YXJ0 CkBjaGFwdGVyIFF1aWNrIFN0YXJ0CkBjaW5kZXggcXVpY2sgc3RhcnQKClRoaXMgY2hhcHRlciBw cm92aWRlcyBjb25jaXNlIGluc3RydWN0aW9ucyBmb3Igc2V0dGluZyB1cCBhbmQgdXNpbmcKRWds b3Qgd2l0aCB5b3VyIHByb2dyYW1taW5nIHByb2plY3QgaW4gY29tbW9uIHVzYWdlIHNjZW5hcmlv cy4gIEZvcgptb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucyByZWdhcmRpbmcgRWdsb3Qgc2V0dXAs IEBweHJlZntFZ2xvdCBhbmQgTFNQClNlcnZlcnN9LiAgQHhyZWZ7VXNpbmcgRWdsb3R9LCBmb3Ig ZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdXNpbmcgRWdsb3QsCmFuZCBzZWUgQHJlZntDdXN0b21p emluZyBFZ2xvdH0sIGZvciBhZGFwdGluZyBFZ2xvdCB0byBsZXNzIGNvbW1vbiB1c2UKcGF0dGVy bnMuCgpIZXJlJ3MgaG93IHRvIHN0YXJ0IHVzaW5nIEVnbG90IHdpdGggeW91ciBwcm9ncmFtbWlu ZyBwcm9qZWN0OgoKQGVudW1lcmF0ZQpAaXRlbQpTZWxlY3QgYW5kIGluc3RhbGwgYSBsYW5ndWFn ZSBzZXJ2ZXIuCgpFZ2xvdCBjb21lcyBwcmUtY29uZmlndXJlZCB3aXRoIG1hbnkgcG9wdWxhciBs YW5ndWFnZSBzZXJ2ZXJzLCBzZWUgdGhlCnZhbHVlIG9mIEBjb2Rle2VnbG90LXNlcnZlci1wcm9n cmFtc30uICBJZiB0aGUgc2VydmVyKHMpIG1lbnRpb25lZAp0aGVyZSBzYXRpc2Z5IHlvdXIgbmVl ZHMgZm9yIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZShzKSB3aXRoIHdoaWNoCnlvdSB3YW50IHRv IHVzZSBFZ2xvdCwgeW91IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2Ugc2VydmVycyBhcmUK aW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLiAgQWx0ZXJuYXRpdmVseSwgaW5zdGFsbCBvbmUgb3Ig bW9yZSBzZXJ2ZXJzCm9mIHlvdXIgY2hvaWNlIGFuZCBhZGQgdGhlbSB0byB0aGUgdmFsdWUgb2YK QGNvZGV7ZWdsb3Qtc2VydmVyLXByb2dyYW1zfSwgYXMgZGVzY3JpYmVkIGluIEByZWZ7U2V0dGlu ZyBVcCBMU1AKU2VydmVyc30uCgpAaXRlbQpUdXJuIG9uIEVnbG90IGZvciB5b3VyIHByb2plY3Qu CgpUbyBzdGFydCB1c2luZyBFZ2xvdCBmb3IgYSBwcm9qZWN0LCB0eXBlIEBrYmR7TS14IGVnbG90 IEBrZXl7UkVUfX0gaW4KYSBidWZmZXIgdmlzaXRpbmcgYW55IGZpbGUgdGhhdCBiZWxvbmdzIHRv IHRoZSBwcm9qZWN0LiAgVGhpcyBzdGFydHMKdGhlIGxhbmd1YWdlIHNlcnZlciBjb25maWd1cmVk IGZvciB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugb2YgdGhhdApidWZmZXIsIGFuZCBjYXVzZXMg RWdsb3QgdG8gc3RhcnQgQGRmbnttYW5hZ2luZ30gZmlsZS12aXNpdGluZyBidWZmZXJzCnJlbGF0 ZWQgdG8gdGhhdCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gIFRoaXMgaW5jbHVkZXMgZmlsZXMgdGhh dCBhcmUKYWxyZWFkeSB2aXNpdGVkIGF0IHRoZSB0aW1lIHRoZSBAY29kZXtlZ2xvdH0gY29tbWFu ZCBpcyBpbnZva2VkLCBhcwp3ZWxsIGFzIGFueSBmaWxlcyB2aXNpdGVkIGFmdGVyIHRoaXMgaW52 b2NhdGlvbi4KClRoZSBub3Rpb24gb2YgYSBgYHByb2plY3QnJyB1c2VkIGJ5IEVnbG90IGlzIHRo ZSBzYW1lIEVtYWNzIHVzZXMKKEBweHJlZntQcm9qZWN0cywsLCBlbWFjcywgR05VIEVtYWNzIE1h bnVhbH0pOiBpbiB0aGUgc2ltcGxlc3QgY2FzZSwKdGhlIGBgcHJvamVjdCcnIGlzIHRoZSBzaW5n bGUgZmlsZSB5b3UgYXJlIGVkaXRpbmcsIGJ1dCBpdCBjYW4gYWxzbyBiZQphbGwgdGhlIGZpbGVz IGluIGEgc2luZ2xlIGRpcmVjdG9yeSBvciBhIGRpcmVjdG9yeSB0cmVlIHVuZGVyIHNvbWUKdmVy c2lvbiBjb250cm9sIHN5c3RlbSwgc3VjaCBhcyBHaXQuCgpUaGVyZSBhcmUgYWx0ZXJuYXRlIHdh eXMgb2Ygc3RhcnRpbmcgRWdsb3Q7IHNlZSBAcmVme1N0YXJ0aW5nIEVnbG90fQpmb3IgZGV0YWls cy4KCkBpdGVtClVzZSBFZ2xvdC4KCk1vc3QgRWdsb3QgZmFjaWxpdGllcyBhcmUgaW50ZWdyYXRl ZCBpbnRvIEVtYWNzIGZlYXR1cmVzLCBzdWNoIGFzCkVsRG9jLCBGbHltYWtlLCBYcmVmLCBhbmQg SW1lbnUuICBIb3dldmVyLCBFZ2xvdCBhbHNvIHByb3ZpZGVzCmNvbW1hbmRzIG9mIGl0cyBvd24s IG1haW5seSB0byBwZXJmb3JtIHRhc2tzIGJ5IHRoZSBsYW5ndWFnZSBzZXJ2ZXIsCnN1Y2ggYXMg QGtiZHtNLXggZWdsb3QtcmVuYW1lfSAodG8gcmVuYW1lIGFuIGlkZW50aWZpZXIgYWNyb3NzIHRo ZQplbnRpcmUgcHJvamVjdCksIEBrYmR7TS14IGVnbG90LWZvcm1hdH0gKHRvIHJlZm9ybWF0IGFu ZCByZWluZGVudApjb2RlKSwgYW5kIHNvbWUgb3RoZXJzLiAgQHhyZWZ7RWdsb3QgQ29tbWFuZHN9 LCBmb3IgdGhlIGRldGFpbGVkIGxpc3QKb2YgRWdsb3QgY29tbWFuZHMuCgpAaXRlbQpUaGF0J3Mg aXQhCkBlbmQgZW51bWVyYXRlCgpAbm9kZSBFZ2xvdCBhbmQgTFNQIFNlcnZlcnMKQGNoYXB0ZXIg RWdsb3QgYW5kIExTUCBTZXJ2ZXJzCgpUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byBzZXQg dXAgRWdsb3QgZm9yIHlvdXIgbmVlZHMsIGFuZCBob3cgdG8Kc3RhcnQgaXQuCgpAbWVudQoqIFNl dHRpbmcgVXAgTFNQIFNlcnZlcnM6OiAgIEhvdyB0byBjb25maWd1cmUgTFNQIHNlcnZlcnMgZm9y IHlvdXIgbmVlZHMuCiogU3RhcnRpbmcgRWdsb3Q6OiAgICAgICAgICAgICAgV2F5cyBvZiBzdGFy dGluZyBFZ2xvdCBmb3IgeW91ciBwcm9qZWN0LgoqIFNodXR0aW5nIERvd24gTFNQIFNlcnZlcnM6 OgpAZW5kIG1lbnUKCkBub2RlIFNldHRpbmcgVXAgTFNQIFNlcnZlcnMKQHNlY3Rpb24gU2V0dGlu ZyBVcCBMU1AgU2VydmVycwpAY2luZGV4IHNldHRpbmcgdXAgTFNQIHNlcnZlciBmb3IgRWdsb3QK QGNpbmRleCBMU1Agc2VydmVyIGZvciBFZ2xvdCwgc2V0dGluZyB1cApAY2luZGV4IGxhbmd1YWdl IHNlcnZlciBmb3IgRWdsb3QKCkZvciBFZ2xvdCB0byBiZSB1c2VmdWwsIGl0IG11c3QgZmlyc3Qg YmUgY29tYmluZWQgd2l0aCBhIHN1aXRhYmxlCmxhbmd1YWdlIHNlcnZlci4gIFVzdWFsbHksIHRo YXQgbWVhbnMgcnVubmluZyB0aGUgc2VydmVyIHByb2dyYW0KbG9jYWxseSBhcyBhIGNoaWxkIHBy b2Nlc3Mgb2YgRW1hY3MgKEBweHJlZntQcm9jZXNzZXMsLCwgZWxpc3AsIEdOVQpFbWFjcyBMaXNw IFJlZmVyZW5jZSBNYW51YWx9KSBhbmQgY29tbXVuaWNhdGluZyB3aXRoIGl0IHZpYSB0aGUKc3Rh bmRhcmQgaW5wdXQgYW5kIG91dHB1dCBzdHJlYW1zLgoKVGhlIGxhbmd1YWdlIHNlcnZlciBwcm9n cmFtIG11c3QgYmUgaW5zdGFsbGVkIHNlcGFyYXRlbHksIGFuZCBpcyBub3QKZnVydGhlciBkaXNj dXNzZWQgaW4gdGhpcyBtYW51YWw7IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZQpw YXJ0aWN1bGFyIHNlcnZlcihzKSB5b3Ugd2FudCB0byBpbnN0YWxsLgoKVG8gdXNlIGEgbGFuZ3Vh Z2Ugc2VydmVyLCBFZ2xvdCBtdXN0IGtub3cgaG93IHRvIHN0YXJ0IGl0IGFuZCB3aGljaApwcm9n cmFtbWluZyBsYW5ndWFnZXMgZWFjaCBzZXJ2ZXIgc3VwcG9ydHMuICBUaGlzIGluZm9ybWF0aW9u IGlzCnByb3ZpZGVkIGJ5IHRoZSB2YXJpYWJsZSBAY29kZXtlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXN9 LgoKQGRlZnZhciBlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMKVGhpcyB2YXJpYWJsZSBhc3NvY2lhdGVz IG1ham9yIG1vZGVzIHdpdGggbmFtZXMgYW5kIGNvbW1hbmQtbGluZQphcmd1bWVudHMgb2YgdGhl IGxhbmd1YWdlIHNlcnZlciBwcm9ncmFtcyBjb3JyZXNwb25kaW5nIHRvIHRoZQpwcm9ncmFtbWlu ZyBsYW5ndWFnZSBvZiBlYWNoIG1ham9yIG1vZGUuICBJdCBwcm92aWRlcyBhbGwgdGhlCmluZm9y bWF0aW9uIHRoYXQgRWdsb3QgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgcHJvZ3JhbW1pbmcgbGFu Z3VhZ2Ugb2YKdGhlIHNvdXJjZSB5b3UgYXJlIGVkaXRpbmcuCgpUaGUgdmFsdWUgb2YgdGhlIHZh cmlhYmxlIGlzIGFuIGFsaXN0LCB3aG9zZSBlbGVtZW50cyBhcmUgb2YgdGhlIGZvcm0KQHd7QGNv ZGV7KEB2YXJ7bWFqb3ItbW9kZX0gLiBAdmFye3NlcnZlcn0pfX0uCgpUaGUgQHZhcnttYWpvci1t b2RlfSBvZiB0aGUgYWxpc3QgZWxlbWVudHMgY2FuIGJlIGVpdGhlciBhIHN5bWJvbCBvZgphbiBF bWFjcyBtYWpvciBtb2RlIG9yIGEgbGlzdCBvZiB0aGUgZm9ybSBAd3tAY29kZXsoQHZhcnttb2Rl fQo6bGFuZ3VhZ2UtaWQgQHZhcntpZH0pfX0sIHdpdGggQHZhcnttb2RlfSBiZWluZyBhIG1ham9y LW1vZGUgc3ltYm9sCmFuZCBAdmFye2lkfSBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGxh bmd1YWdlIHRvIHRoZSBzZXJ2ZXIgKGlmCkVnbG90IGNhbm5vdCBieSBpdHNlbGYgY29udmVydCB0 aGUgbWFqb3ItbW9kZSB0byB0aGUgbGFuZ3VhZ2UKaWRlbnRpZmllciBzdHJpbmcgcmVxdWlyZWQg YnkgdGhlIHNlcnZlcikuICBJbiBhZGRpdGlvbiwKQHZhcnttYWpvci1tb2RlfSBjYW4gYmUgYSBs aXN0IG9mIHNldmVyYWwgbWFqb3IgbW9kZXMgc3BlY2lmaWVkIGluIG9uZQpvZiB0aGUgYWJvdmUg Zm9ybXMgLS0gdGhpcyBtZWFucyBhIHJ1bm5pbmcgaW5zdGFuY2Ugb2YgdGhlIGFzc29jaWF0ZWQK c2VydmVyIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxlcyBvZiBtdWx0aXBsZSBtYWpvciBtb2RlcyBv ciBsYW5ndWFnZXMKaW4gdGhlIHByb2plY3QuCgpUaGUgQHZhcntzZXJ2ZXJ9IHBhcnQgb2YgdGhl IGFsaXN0IGVsZW1lbnRzIGNhbiBiZSBvbmUgb2YgdGhlCmZvbGxvd2luZzoKCkB0YWJsZSBAY29k ZQpAaXRlbSAoQHZhcntwcm9ncmFtfSBAdmFye2FyZ3N9QGRvdHN7fSkKVGhpcyBzYXlzIHRvIGlu dm9rZSBAdmFye3Byb2dyYW19IHdpdGggemVybyBvciBtb3JlIGFyZ3VtZW50cwpAdmFye2FyZ3N9 OyB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBjb21tdW5pY2F0ZSB3aXRoIEVtYWNzIHZpYSB0 aGUKc3RhbmRhcmQgaW5wdXQgYW5kIHN0YW5kYXJkIG91dHB1dCBzdHJlYW1zLgoKQGl0ZW0gKEB2 YXJ7cHJvZ3JhbX0gQHZhcnthcmdzfUBkb3Rze30gOmluaXRpYWxpemF0aW9uT3B0aW9ucyBAdmFy e29wdGlvbnN9QGRvdHN7fSkKQHZhcntwcm9ncmFtfSBpcyBpbnZva2VkIHdpdGggQHZhcnthcmdz fSBidXQgQHZhcntvcHRpb25zfSBzcGVjaWZpZXMKaG93IHRvIGNvbnN0cnVjdCB0aGUgQHNhbXB7 OmluaXRpYWxpemF0aW9uT3B0aW9uc30gSlNPTiBvYmplY3QgdG8gcGFzcwp0aGUgc2VydmVyIG9u IGR1cmluZyB0aGUgTFNQIGhhbmRzaGFrZSAoQHB4cmVme0FkdmFuY2VkIHNlcnZlcgpjb25maWd1 cmF0aW9ufSkuCgpAaXRlbSAoQHZhcntob3N0fSBAdmFye3BvcnR9IEB2YXJ7YXJnc31AZG90c3t9 KQpIZXJlIEB2YXJ7aG9zdH0gaXMgYSBzdHJpbmcgYW5kIEB2YXJ7cG9ydH0gaXMgYSBwb3NpdGl2 ZSBpbnRlZ2VyCnNwZWNpZnlpbmcgYSBUQ1AgY29ubmVjdGlvbiB0byBhIHJlbW90ZSBzZXJ2ZXIu ICBUaGUgQHZhcnthcmdzfSBhcmUKcGFzc2VkIHRvIEBjb2Rle29wZW4tbmV0d29yay1zdHJlYW19 LCBlLmcuQDogaWYgdGhlIGNvbm5lY3Rpb24gbmVlZHMKdG8gdXNlIGVuY3J5cHRpb24gb3Igb3Ro ZXIgbm9uLWRlZmF1bHQgcGFyYW1ldGVycyAoQHB4cmVme05ldHdvcmssLCwKZWxpc3AsIEdOVSBF bWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9KS4KCkBpdGVtIChAdmFye3Byb2dyYW19IEB2YXJ7 YXJnc31AZG90c3t9IDphdXRvcG9ydCBAdmFye21vcmVhcmdzfUBkb3Rze30pCkB2YXJ7cHJvZ3Jh bX0gaXMgc3RhcnRlZCB3aXRoIGEgY29tbWFuZCBsaW5lIGNvbnN0cnVjdGVkIGZyb20KQHZhcnth cmdzfSBmb2xsb3dlZCBieSBhbiBhdmFpbGFibGUgc2VydmVyIHBvcnQgYW5kIHRoZSByZXN0IG9m CmFyZ3VtZW50cyBpbiBAdmFye21vcmVhcmdzfTsgRWdsb3QgdGhlbiBlc3RhYmxpc2hlcyBhIFRD UCBjb25uZWN0aW9uCndpdGggdGhlIHNlcnZlciB2aWEgdGhhdCBwb3J0IG9uIHRoZSBsb2NhbCBo b3N0LgoKQGl0ZW0gQHZhcntmdW5jdGlvbn0KVGhpcyBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiBh IHNpbmdsZSBhcmd1bWVudDogbm9uLUBjb2Rle25pbH0gaWYgdGhlCmNvbm5lY3Rpb24gd2FzIHJl cXVlc3RlZCBpbnRlcmFjdGl2ZWx5IChlLmcuLCBieSB0aGUgQGNvZGV7ZWdsb3R9CmNvbW1hbmQp LCBvdGhlcndpc2UgQGNvZGV7bmlsfS4gIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgdmFs dWUgb2YKYW55IG9mIHRoZSBmb3JtcyBkZXNjcmliZWQgYWJvdmUuICBUaGlzIGFsbG93cyBpbnRl cmFjdGlvbiB3aXRoIHRoZQp1c2VyIGZvciBkZXRlcm1pbmluZyB0aGUgcHJvZ3JhbSB0byBzdGFy dCBhbmQgaXRzIGNvbW1hbmQtbGluZQphcmd1bWVudHMuCkBlbmQgdGFibGUKCkBlbmQgZGVmdmFy CgpFZ2xvdCBjb21lcyB3aXRoIGEgZmFpcmx5IGNvbXBsZXRlIHNldCBvZiBhc3NvY2lhdGlvbnMg b2YgbWFqb3ItbW9kZXMKdG8gcG9wdWxhciBsYW5ndWFnZSBzZXJ2ZXJzIHByZWRlZmluZWQuICBJ ZiB5b3UgbmVlZCB0byBhZGQgc2VydmVyCmFzc29jaWF0aW9ucyB0byB0aGUgZGVmYXVsdCBsaXN0 LCB1c2UgQGNvZGV7YWRkLXRvLWxpc3R9LiAgRm9yCmV4YW1wbGUsIGlmIHRoZXJlIGlzIGEgaHlw b3RoZXRpY2FsIGxhbmd1YWdlIHNlcnZlciBwcm9ncmFtCkBjb21tYW5ke2Zvb2xzfSBmb3IgdGhl IGxhbmd1YWdlIEBjb2Rle0Zvb30gd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IGFuCkVtYWNzIG1ham9y LW1vZGUgQGNvZGV7Zm9vLW1vZGV9LCB5b3UgY2FuIGFkZCBpdCB0byB0aGUgYWxpc3QgbGlrZQp0 aGlzOgoKQGxpc3AKKHdpdGgtZXZhbC1hZnRlci1sb2FkICdlZ2xvdAogIChhZGQtdG8tbGlzdCAn ZWdsb3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgICcoZm9vLW1vZGUgLiAoImZvb2xz IiAiLS1zdGRpbyIpKSkpCkBlbmQgbGlzcAoKVGhpcyB3aWxsIGludm9rZSB0aGUgcHJvZ3JhbSBA Y29tbWFuZHtmb29sc30gd2l0aCB0aGUgY29tbWFuZC1saW5lCmFyZ3VtZW50IEBvcHRpb257LS1z dGRpb30gaW4gc3VwcG9ydCBvZiBlZGl0aW5nIHNvdXJjZSBmaWxlcyBmb3Igd2hpY2gKRW1hY3Mg dHVybnMgb24gQGNvZGV7Zm9vLW1vZGV9LCBhbmQgd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBw cm9ncmFtCnZpYSB0aGUgc3RhbmRhcmQgc3RyZWFtcy4gIEFzIHVzdWFsIHdpdGggaW52b2tpbmcg cHJvZ3JhbXMsIHRoZQpleGVjdXRhYmxlIGZpbGUgQGZpbGV7Zm9vbHN9IHNob3VsZCBiZSBpbiBv bmUgb2YgdGhlIGRpcmVjdG9yaWVzCm1lbnRpb25lZCBieSB0aGUgQGNvZGV7ZXhlYy1wYXRofSB2 YXJpYWJsZSAoQHB4cmVme1N1YnByb2Nlc3MKQ3JlYXRpb24sLCwgZWxpc3AsIEdOVSBFbWFjcyBM aXNwIFJlZmVyZW5jZSBNYW51YWx9KSwgZm9yIEVnbG90IHRvIGJlCmFibGUgdG8gZmluZCBpdC4K ClNvbWV0aW1lcywgbXVsdGlwbGUgc2VydmVycyBhcmUgYWNjZXB0YWJsZSBhbHRlcm5hdGl2ZXMg Zm9yIGhhbmRsaW5nIGEKZ2l2ZW4gbWFqb3ItbW9kZS4gIEluIHRob3NlIGNhc2VzLCB5b3UgbWF5 IGNvbWJpbmUgdGhlIGhlbHBlciBmdW5jdGlvbgpAY29kZXtlZ2xvdC1hbHRlcm5hdGl2ZXN9IHdp dGggdGhlIGZ1bmN0aW9uYWwgZm9ybSBvZgpAY29kZXtlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXN9LgoK QGxpc3AKKHdpdGgtZXZhbC1hZnRlci1sb2FkICdlZ2xvdAogIChhZGQtdG8tbGlzdCAnZWdsb3Qt c2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgIGAoZm9vLW1vZGUgLiAsKGVnbG90LWFsdGVy bmF0aXZlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoImZvb2xzIiAiLS1zdGRp byIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgicGhld2xzIiAiLS1mYXN0Iikp KSkpKQpAZW5kIGxpc3AKCklmIHlvdSBoYXZlIEBjb21tYW5ke2Zvb2xzfSBhbmQgQGNvbW1hbmR7 cGhld2xzfSBpbnN0YWxsZWQsIHRoZQpmdW5jdGlvbiBwcm9kdWNlZCBieSBAY29kZXtlZ2xvdC1h bHRlcm5hdGl2ZXN9IHdpbGwgcHJvbXB0IGZvciB0aGUKc2VydmVyIHRvIHVzZSBpbiBAY29kZXtm b28tbW9kZX0gYnVmZmVycy4gIEVsc2UgaXQgd2lsbCB1c2Ugd2hpY2hldmVyCmlzIGF2YWlsYWJs ZS4KCkBub2RlIFN0YXJ0aW5nIEVnbG90CkBzZWN0aW9uIFN0YXJ0aW5nIEVnbG90CkBjaW5kZXgg c3RhcnRpbmcgRWdsb3QKQGNpbmRleCBhY3RpdmF0aW5nIEVnbG90IGZvciBhIHByb2plY3QKCkBm aW5kZXggZWdsb3QKVGhlIG1vc3QgY29tbW9uIHdheSB0byBzdGFydCBFZ2xvdCBpcyB0byBzaW1w bHkgdmlzaXQgYSBzb3VyY2UgZmlsZSBvZgphIGdpdmVuIGxhbmd1YWdlIGFuZCB1c2UgdGhlIGNv bW1hbmQgQGtiZHtNLXggZWdsb3R9LiAgVGhpcyBzdGFydHMgdGhlCmxhbmd1YWdlIHNlcnZlciBz dWl0YWJsZSBmb3IgdGhlIHZpc2l0ZWQgZmlsZSdzIG1ham9yLW1vZGUsIGFuZAphdHRlbXB0cyB0 byBjb25uZWN0IHRvIGl0LiAgSWYgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGxhbmd1YWdlIHNlcnZl cgppcyBzdWNjZXNzZnVsLCB5b3Ugd2lsbCBzZWUgdGhlIEBjb2Rle1tlZ2xvdDpAdmFye3Byb2pl Y3R9XX0gaW5kaWNhdG9yCm9uIHRoZSBtb2RlIGxpbmUgd2hpY2ggcmVmbGVjdHMgdGhlIHNlcnZl ciB0aGF0IHdhcyBzdGFydGVkLiAgSWYgdGhlCnNlcnZlciBwcm9ncmFtIGNvdWxkbid0IGJlIHN0 YXJ0ZWQgb3IgY29ubmVjdGlvbiB0byBpdCBmYWlsZWQsIHlvdQp3aWxsIHNlZSBhbiBlcnJvciBt ZXNzYWdlOyBpbiB0aGF0IGNhc2UsIHRyeSB0byB0cm91Ymxlc2hvb3QgdGhlCnByb2JsZW0gYXMg ZGVzY3JpYmVkIGluIEByZWZ7VHJvdWJsZXNob290aW5nIEVnbG90fS4gIE9uY2UgYSBsYW5ndWFn ZQpzZXJ2ZXIgd2FzIHN1Y2Nlc3NmdWxseSBzdGFydGVkIGFuZCBFZ2xvdCBjb25uZWN0ZWQgdG8g aXQsIHlvdSBjYW4KaW1tZWRpYXRlbHkgc3RhcnQgdXNpbmcgdGhlIEVtYWNzIGZlYXR1cmVzIHN1 cHBvcnRlZCBieSBFZ2xvdCwgYXMKZGVzY3JpYmVkIGluIEByZWZ7RWdsb3QgRmVhdHVyZXN9LgoK QSBzaW5nbGUgRWdsb3Qgc2Vzc2lvbiBmb3IgYSBjZXJ0YWluIG1ham9yLW1vZGUgdXN1YWxseSBz ZXJ2ZXMgYWxsIHRoZQpidWZmZXJzIHVuZGVyIHRoYXQgbW9kZSB3aGljaCB2aXNpdCBmaWxlcyBm cm9tIHRoZSBzYW1lIHByb2plY3QsIHNvCnlvdSBkb24ndCBuZWVkIHRvIGludm9rZSBAa2Jke00t eCBlZ2xvdH0gYWdhaW4gd2hlbiB5b3UgdmlzaXQgYW5vdGhlcgpmaWxlIGZyb20gdGhlIHNhbWUg cHJvamVjdCB3aGljaCBpcyBlZGl0ZWQgdXNpbmcgdGhlIHNhbWUgbWFqb3ItbW9kZS4KVGhpcyBp cyBiZWNhdXNlIEVnbG90IHVzZXMgdGhlIEVtYWNzIHByb2plY3QgaW5mcmFzdHJ1Y3R1cmUsIGFz CmRlc2NyaWJlZCBpbiBAcmVme0VnbG90IGFuZCBCdWZmZXJzfSwgYW5kIHRoaXMga25vd3MgYWJv dXQgZmlsZXMgdGhhdApiZWxvbmcgdG8gdGhlIHNhbWUgcHJvamVjdC4gIFRodXMsIGFmdGVyIHN0 YXJ0aW5nIGFuIEVnbG90IHNlc3Npb24gZm9yCnNvbWUgYnVmZmVyLCB0aGF0IHNlc3Npb24gaXMg YXV0b21hdGljYWxseSByZXVzZWQgd2hlbiB2aXNpdGluZyBmaWxlcwppbiB0aGUgc2FtZSBwcm9q ZWN0IHdpdGggdGhlIHNhbWUgbWFqb3ItbW9kZS4KCkBmaW5kZXggZWdsb3QtZW5zdXJlCkFsdGVy bmF0aXZlbHksIHlvdSBjb3VsZCBjb25maWd1cmUgRWdsb3QgdG8gc3RhcnQgYXV0b21hdGljYWxs eSBmb3IKb25lIG9yIG1vcmUgbWFqb3ItbW9kZXMgZnJvbSB0aGUgcmVzcGVjdGl2ZSBtb2RlIGhv b2tzLiAgSGVyZSdzIGFuCmV4YW1wbGUgZm9yIGEgaHlwb3RoZXRpY2FsIEBjb2Rle2Zvby1tb2Rl fToKCkBsaXNwCiAoYWRkLWhvb2sgJ2Zvby1tb2RlLWhvb2sgJ2VnbG90LWVuc3VyZSkKQGVuZCBs aXNwCgpAbm9pbmRlbnQKVGhlIGZ1bmN0aW9uIEBjb2Rle2VnbG90LWVuc3VyZX0gd2lsbCBzdGFy dCBhbiBFZ2xvdCBzZXNzaW9uIGZvciBlYWNoCmJ1ZmZlciBpbiB3aGljaCBAY29kZXtmb28tbW9k ZX0gaXMgdHVybmVkIG9uLCBpZiB0aGVyZSBpc24ndCBhbHJlYWR5CmFuIEVnbG90IHNlc3Npb24g dGhhdCBoYW5kbGVzIHRoZSBidWZmZXIuICBOb3RlIHRoYXQgdGhpcyB2YXJpYW50IG9mCnN0YXJ0 aW5nIGFuIEVnbG90IHNlc3Npb24gaXMgbm9uLWludGVyYWN0aXZlLCBzbyBpdCBzaG91bGQgYmUg dXNlZApvbmx5IHdoZW4geW91IGFyZSBjb25maWRlbnQgdGhhdCBFZ2xvdCBjYW4gYmUgc3RhcnRl ZCByZWxpYWJseSBmb3IgYW55CmZpbGUgd2hpY2ggbWF5IGJlIHZpc2l0ZWQgd2l0aCB0aGUgbWFq b3ItbW9kZSBpbiBxdWVzdGlvbi4KCk5vdGUgdGhhdCBpdCdzIG9mdGVuIGRpZmZpY3VsdCB0byBl c3RhYmxpc2ggdGhpcyBjb25maWRlbmNlIGZ1bGx5LCBzbwppdCBtYXkgYmUgd2lzZSB0byB1c2Ug dGhlIGludGVyYWN0aXZlIGNvbW1hbmQgQGNvZGV7ZWdsb3R9IGluc3RlYWQuCllvdSBvbmx5IG5l ZWQgdG8gaW52b2tlIGl0IG9uY2UgcGVyIHByb2plY3QsIGFzIGFsbCBvdGhlciBmaWxlcwp2aXNp dGVkIHdpdGhpbiB0aGUgc2FtZSBwcm9qZWN0IHdpbGwgYXV0b21hdGljYWxseSBiZSBtYW5hZ2Vk IHdpdGggbm8KZnVydGhlciB1c2VyIGludGVydmVudGlvbiBuZWVkZWQuCgpXaGVuIEVnbG90IGNv bm5lY3RzIHRvIGEgbGFuZ3VhZ2Ugc2VydmVyIGZvciB0aGUgZmlyc3QgdGltZSBpbiBhbgpFbWFj cyBzZXNzaW9uLCBpdCBydW5zIHRoZSBob29rIEBjb2Rle2VnbG90LWNvbm5lY3QtaG9va30KKEBw eHJlZntFZ2xvdCBWYXJpYWJsZXN9KS4KCkBub2RlIFNodXR0aW5nIERvd24gTFNQIFNlcnZlcnMK QHNlY3Rpb24gU2h1dHRpbmcgRG93biBMU1AgU2VydmVycwpAY2luZGV4IHNodXR0aW5nIGRvd24g TFNQIHNlcnZlcgoKV2hlbiBFZ2xvdCBpcyB0dXJuZWQgb24sIGl0IGFycmFuZ2VzIGZvciB0dXJu aW5nIGl0c2VsZiBvZmYKYXV0b21hdGljYWxseSBpZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb2Nl c3MgdGVybWluYXRlcy4gIFR1cm5pbmcgb2ZmCkVnbG90IG1lYW5zIHRoYXQgaXQgc2h1dHMgZG93 biB0aGUgc2VydmVyIGNvbm5lY3Rpb24sIGNlYXNlcyBpdHMKbWFuYWdlbWVudCBvZiBhbGwgdGhl IGJ1ZmZlcnMgdGhhdCB1c2UgdGhlIHNlcnZlciBjb25uZWN0aW9uIHdoaWNoIHdhcwp0ZXJtaW5h dGVkLCBkZWFjdGl2YXRlcyBpdHMgbWlub3IgbW9kZSwgYW5kIHJlc3RvcmVzIHRoZSBvcmlnaW5h bAp2YWx1ZXMgb2YgdGhlIEVtYWNzIHZhcmlhYmxlcyB0aGF0IEVnbG90IGNoYW5nZWQgd2hlbiBp dCB3YXMgdHVybmVkCm9uLiAgQHhyZWZ7RWdsb3QgYW5kIEJ1ZmZlcnN9LCBmb3IgbW9yZSBkZXRh aWxzIG9mIHdoYXQgRWdsb3QKbWFuYWdlbWVudCBvZiBhIGJ1ZmZlciBlbnRhaWxzLgoKQGZpbmRl eCBlZ2xvdC1zaHV0ZG93bgpZb3UgY2FuIGFsc28gc2h1dCBkb3duIGEgbGFuZ3VhZ2Ugc2VydmVy IG1hbnVhbGx5LCBieSB1c2luZyB0aGUKY29tbWFuZCBAa2Jke00teCBlZ2xvdC1zaHV0ZG93bn0u ICBUaGlzIHByb21wdHMgZm9yIHRoZSBzZXJ2ZXIgKHVubGVzcwp0aGVyZSdzIG9ubHkgb25lIGNv bm5lY3Rpb24gYW5kIGl0J3MgdXNlZCBpbiB0aGUgY3VycmVudCBidWZmZXIpLCBhbmQKdGhlbiBz aHV0cyBpdCBkb3duLiAgQnkgZGVmYXVsdCwgaXQgYWxzbyBraWxscyB0aGUgc2VydmVyJ3MgZXZl bnRzCmJ1ZmZlciAoQHB4cmVme1Ryb3VibGVzaG9vdGluZyBFZ2xvdH0pLCBidXQgYSBwcmVmaXgg YXJndW1lbnQgcHJldmVudHMKdGhhdC4KCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gY3VzdG9taXpl IHRoZSB2YXJpYWJsZQpAY29kZXtlZ2xvdC1hdXRvc2h1dGRvd259IHRvIGEgbm9uLUBjb2Rle25p bH0gdmFsdWUsIGluIHdoaWNoIGNhc2UKRWdsb3Qgd2lsbCBhdXRvbWF0aWNhbGx5IHNodXQgZG93 biB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb2Nlc3Mgd2hlbgp0aGUgbGFzdCBidWZmZXIgc2VydmVk IGJ5IHRoYXQgbGFuZ3VhZ2Ugc2VydmVyIGlzIGtpbGxlZC4gIFRoZSBkZWZhdWx0Cm9mIHRoaXMg dmFyaWFibGUgaXMgQGNvZGV7bmlsfSwgc28gdGhhdCB2aXNpdGluZyBhbm90aGVyIGZpbGUgd291 bGQKYXV0b21hdGljYWxseSBhY3RpdmF0ZSBFZ2xvdCBldmVuIHdoZW4gdGhlIHByb2plY3Qgd2hp Y2ggc3RhcnRlZCBFZ2xvdAp3aXRoIHRoZSBzZXJ2ZXIgbm8gbG9uZ2VyIGhhcyBhbnkgYnVmZmVy IGFzc29jaWF0ZWQgd2l0aCBpdC4gIFRoaXMKZGVmYXVsdCBhbGxvd3MgeW91IHRvIHN0YXJ0IGEg c2VydmVyIG9ubHkgb25jZSBpbiBlYWNoIEVtYWNzIHNlc3Npb24uCgpAbm9kZSBVc2luZyBFZ2xv dApAY2hhcHRlciBVc2luZyBFZ2xvdAoKVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBpbiBkZXRhaWwg dGhlIGZlYXR1cmVzIHRoYXQgRWdsb3QgcHJvdmlkZXMgYW5kCmhvdyBpdCBkb2VzIHRoYXQuICBJ dCBhbHNvIHByb3ZpZGVzIHJlZmVyZW5jZSBzZWN0aW9ucyBmb3IgRWdsb3QKY29tbWFuZHMgYW5k IHZhcmlhYmxlcy4KCkBtZW51CiogRWdsb3QgRmVhdHVyZXM6OgoqIEVnbG90IGFuZCBCdWZmZXJz OjoKKiBFZ2xvdCBDb21tYW5kczo6CiogRWdsb3QgVmFyaWFibGVzOjoKQGVuZCBtZW51CgpAbm9k ZSBFZ2xvdCBGZWF0dXJlcwpAc2VjdGlvbiBFZ2xvdCBGZWF0dXJlcwpAY2luZGV4IGZlYXR1cmVz IGluIGJ1ZmZlcnMgc3VwcG9ydGVkIGJ5IEVnbG90CgpXaGlsZSBFZ2xvdCBpcyBlbmFibGVkIGlu IGEgYnVmZmVyLCBpdCBpcyBzYWlkIHRvIGJlIEBkZm57bWFuYWdpbmd9Cml0LCB1c2luZyBMU1Ag YW5kIHRoZSBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgb2YgdGhlIGxhbmd1YWdlIHNlcnZlciB0bwph Y3RpdmF0ZSBhbmQgZW5oYW5jZSBtb2Rlcm4gSURFIGZlYXR1cmVzIGluIEVtYWNzLiAgU29tZSBv ZiB0aGVzZQpmZWF0dXJlcyBhcmUgcHJvdmlkZWQgdmlhIG90aGVyIEVtYWNzIHBhY2thZ2VzLCBh bmQgc29tZSB2aWEgRWdsb3QKZGlyZWN0bHkgKEBweHJlZntFZ2xvdCBDb21tYW5kc30pLgoKSGVy ZSdzIGFuIG92ZXJ2aWV3IG9mIHRoZSBtYWluIGZlYXR1cmVzIHRoYXQgRWdsb3QgcHJvdmlkZXM6 CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkF0LXBvaW50IGRvY3VtZW50YXRpb246IHdoZW4gcG9p bnQgaXMgYXQgb3IgbmVhciBhIHN5bWJvbCBvciBhbgppZGVudGlmaWVyLCB0aGUgaW5mb3JtYXRp b24gYWJvdXQgdGhlIHN5bWJvbC9pZGVudGlmaWVyLCBzdWNoIGFzIHRoZQpzaWduYXR1cmUgb2Yg YSBmdW5jdGlvbiBvciBjbGFzcyBtZXRob2QgYW5kIHNlcnZlci1nZW5lcmF0ZWQKZGlhZ25vc3Rp Y3MsIGlzIG1hZGUgYXZhaWxhYmxlIHZpYSB0aGUgRWxEb2MgcGFja2FnZQooQHB4cmVme1Byb2dy YW1taW5nIExhbmd1YWdlIERvYywsLCBlbWFjcywgR05VIEVtYWNzIE1hbnVhbH0pLiAgVGhpcwph bGxvd3MgbWFqb3IgbW9kZXMgdG8gcHJvdmlkZSBleHRlbnNpdmUgaGVscCBhbmQgZG9jdW1lbnRh dGlvbiBhYm91dAp0aGUgcHJvZ3JhbSBpZGVudGlmaWVycy4KCkBpdGVtCk9uLXRoZS1mbHkgZGlh Z25vc3RpYyBhbm5vdGF0aW9ucywgdmlhIHRoZSBGbHltYWtlIHBhY2thZ2UKKEBweHJlZntUb3As LCwgZmx5bWFrZSwgR05VIEZseW1ha2UgbWFudWFsfSkuICBFZ2xvdCdzIEZseW1ha2UgYmFja2Vu ZApyZXBsYWNlcyBvdGhlciBGbHltYWtlIGJhY2tlbmRzIHdoaWxlIGl0IGlzIG1hbmFnaW5nIGEg YnVmZmVyLCBhbmQKZW5oYW5jZXMgZGlhZ25vc3RpY3Mgd2l0aCBpbnRlcmFjdGl2ZSBzZXJ2ZXIt c3VnZ2VzdGVkIGZpeGVzCihzby1jYWxsZWQgQGRmbntjb2RlIGFjdGlvbnN9LCBAcHhyZWZ7RWds b3QgQ29tbWFuZHN9KQoKQGl0ZW0KRmluZGluZyBkZWZpbml0aW9ucyBhbmQgdXNlcyBvZiBpZGVu dGlmaWVycywgdmlhIFhyZWYgKEBweHJlZntYcmVmLCwsCmVtYWNzLCBHTlUgRW1hY3MgTWFudWFs fSkuICBFZ2xvdCBwcm92aWRlcyBhIGJhY2tlbmQgZm9yIHRoZSBYcmVmCmNhcGFiaWxpdGllcyB3 aGljaCB1c2VzIHRoZSBsYW5ndWFnZS1zZXJ2ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUKcHJvZ3Jh bSBzb3VyY2UuICBJbiBwYXJ0aWN1bGFyLCBpdCBlbGltaW5hdGVzIHRoZSBuZWVkIHRvIGdlbmVy YXRlCnRhZ3MgdGFibGVzIChAcHhyZWZ7VGFncyB0YWJsZXMsLCwgZW1hY3MsIEdOVSBFbWFjcyBN YW51YWx9KSBmb3IKbGFuZ3VhZ2VzIHdoaWNoIGFyZSBvbmx5IHN1cHBvcnRlZCBieSB0aGUgQGNv ZGV7ZXRhZ3N9IGJhY2tlbmQuCgpAaXRlbQpCdWZmZXIgbmF2aWdhdGlvbiBieSBuYW1lIG9mIGZ1 bmN0aW9uLCBjbGFzcywgbWV0aG9kLCBldGMuLCB2aWEgSW1lbnUKKEBweHJlZntJbWVudSwsLCBl bWFjcywgR05VIEVtYWNzIE1hbnVhbH0pLiAgRWdsb3QgcHJvdmlkZXMgaXRzIG93bgp2YXJpYW50 IG9mIEBjb2Rle2ltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbn0sIHdoaWNoIGdlbmVyYXRlcyB0 aGUKaW5kZXggZm9yIHRoZSBidWZmZXIgYmFzZWQgb24gbGFuZ3VhZ2Utc2VydmVyIHByb2dyYW0g c291cmNlIGFuYWx5c2lzLgoKQGl0ZW0KRW5oYW5jZWQgY29tcGxldGlvbiBvZiBzeW1ib2wgYXQg cG9pbnQgYnkgdGhlCkBjb2Rle2NvbXBsZXRpb24tYXQtcG9pbnR9IGNvbW1hbmQgKEBweHJlZntT eW1ib2wgQ29tcGxldGlvbiwsLCBlbWFjcywKR05VIEVtYWNzIE1hbnVhbH0pLiAgVGhpcyB1c2Vz IHRoZSBsYW5ndWFnZS1zZXJ2ZXIncyBwYXJzZXIgZGF0YSBmb3IKdGhlIGNvbXBsZXRpb24gY2Fu ZGlkYXRlcy4KCkBpdGVtCkF1dG9tYXRpYyByZWZvcm1hdHRpbmcgb2Ygc291cmNlIGNvZGUgYXMg eW91IHR5cGUgaXQuICBUaGlzIGlzIHNpbWlsYXIKdG8gd2hhdCB0aGUgQGNvZGV7ZWdsb3QtZm9y bWF0fSBjb21tYW5kIGRvZXMgKHNlZSBiZWxvdyksIGJ1dCBpcwphY3RpdmF0ZWQgYXV0b21hdGlj YWxseSBhcyB5b3UgdHlwZS4KCkBpdGVtCklmIGEgY29tcGxldGlvbiBwYWNrYWdlIHN1Y2ggYXMg QGNvZGV7Y29tcGFueS1tb2RlfSwgYSBwb3B1bGFyCnRoaXJkLXBhcnR5IGNvbXBsZXRpb24gcGFj a2FnZSAob3IgYW55IG90aGVyIGNvbXBsZXRpb24gcGFja2FnZSksIGlzCmluc3RhbGxlZCwgRWds b3QgZW5oYW5jZXMgaXQgYnkgcHJvdmlkaW5nIGNvbXBsZXRpb24gY2FuZGlkYXRlcyBiYXNlZApv biB0aGUgbGFuZ3VhZ2Utc2VydmVyIGFuYWx5c2lzIG9mIHRoZSBzb3VyY2UgY29kZS4KKEBjb2Rl e2NvbXBhbnktbW9kZX0gY2FuIGJlIGluc3RhbGxlZCBmcm9tIEdOVSBFTFBBLikKCkBpdGVtCklm IEBjb2Rle3lhc25pcHBldH0sIGEgcG9wdWxhciB0aGlyZC1wYXJ0eSBwYWNrYWdlIGZvciBhdXRv bWF0aWMKaW5zZXJ0aW9uIG9mIGNvZGUgdGVtcGxhdGVzIChzbmlwcGV0cyksIGlzIGluc3RhbGxl ZCwgYW5kIHRoZSBsYW5ndWFnZQpzZXJ2ZXIgc3VwcG9ydHMgc25pcHBldCBjb21wbGV0aW9uIGNh bmRpZGF0ZXMsIEVnbG90IGFycmFuZ2VzIGZvciB0aGUKY29tcGxldGlvbiBwYWNrYWdlIHRvIGlu c3RhbnRpYXRlIHRoZXNlIHNuaXBwZXRzIHVzaW5nCkBjb2Rle3lhc25pcHBldH0uICAoQGNvZGV7 eWFzbmlwcGV0fSBjYW4gYmUgaW5zdGFsbGVkIGZyb20gR05VIEVMUEEuKQoKQGl0ZW0KSWYgdGhl IHBvcHVsYXIgdGhpcmQtcGFydHkgcGFja2FnZSBAY29kZXttYXJrZG93bi1tb2RlfSBpcyBpbnN0 YWxsZWQsCmFuZCB0aGUgc2VydmVyIHByb3ZpZGVzIGF0LXBvaW50IGRvY3VtZW50YXRpb24gZm9y bWF0dGVkIGFzIE1hcmtkb3duCmluIGFkZGl0aW9uIHRvIHBsYWluIHRleHQsIEVnbG90IGFycmFu Z2VzIGZvciB0aGUgRWxEb2MgcGFja2FnZSB0bwplbnJpY2ggdGhpcyB0ZXh0IHdpdGggZm9udGlm aWNhdGlvbnMgYW5kIG90aGVyIG5pY2UgZm9ybWF0dGluZyBiZWZvcmUKZGlzcGxheWluZyBpdCB0 byB0aGUgdXNlci4gIFRoaXMgbWFrZXMgdGhlIGRvY3VtZW50YXRpb24gc2hvd24gYnkKRWxEb2Mg bG9vayBuaWNlciBvbiBkaXNwbGF5LgoKQGl0ZW0KSW4gYWRkaXRpb24gdG8gZW5hYmxpbmcgYW5k IGVuaGFuY2luZyBvdGhlciBmZWF0dXJlcyBhbmQgcGFja2FnZXMsCkVnbG90IGFsc28gcHJvdmlk ZXMgYSBudW1iZXIgb2YgdXNlciBjb21tYW5kcyBiYXNlZCBvbiB0aGUKY2FwYWJpbGl0aWVzIG9m IGxhbmd1YWdlIHNlcnZlcnMuICBFeGFtcGxlcyBpbmNsdWRlIHJlbmFtaW5nIHN5bWJvbHMKd2l0 aCBAa2Jke2VnbG90LXJlbmFtZX0gYW5kIGFza2luZyB0byBhdXRvbWF0aWNhbGx5IGNvcnJlY3Qg cHJvYmxlbXMKd2l0aCBAa2Jke2VnbG90LWNvZGUtYWN0aW9uc30uICBAeHJlZntFZ2xvdCBDb21t YW5kc30uCkBlbmQgaXRlbWl6ZQoKTm90IGFsbCBzZXJ2ZXJzIHN1cHBvcnQgdGhlIGZ1bGwgc2V0 IG9mIExTUCBjYXBhYmlsaXRpZXMsIGJ1dCBtb3N0IG9mCnRoZW0gc3VwcG9ydCBlbm91Z2ggdG8g ZW5hYmxlIHRoZSBiYXNpYyBzZXQgb2YgZmVhdHVyZXMgbWVudGlvbmVkCmFib3ZlLgoKQ29udmVy c2VseSwgc29tZSBzZXJ2ZXJzIG9mZmVyIGNhcGFiaWxpdGllcyBmb3Igd2hpY2ggbm8gZXF1aXZh bGVudApFbWFjcyBwYWNrYWdlIGV4aXN0cyB5ZXQsIGFuZCBzbyBFZ2xvdCBjYW5ub3QgKHlldCkg ZXhwb3NlIHRoZXNlCmNhcGFiaWxpdGllcyB0byBFbWFjcyB1c2Vycy4gIEhvd2V2ZXIsIEB4cmVm e0V4dGVuZGluZyBFZ2xvdH0uCgpGaW5hbGx5LCBpdCdzIHdvcnRoIG5vdGluZyB0aGF0LCBieSBk ZWZhdWx0LCBFZ2xvdCBnZW5lcmFsbHkgdHVybnMgb24KYWxsIGZlYXR1cmVzIHRoYXQgaXQgQGVt cGh7Y2FufSB0dXJuIG9uLiAgSXQncyBwb3NzaWJsZSB0byBvcHQgb3V0IG9mCnNvbWUgZmVhdHVy ZXMgdmlhIHVzZXIgb3B0aW9ucyAoQHB4cmVme0N1c3RvbWl6aW5nIEVnbG90fSkgYW5kIGEgaG9v awp0aGF0IHJ1bnMgYWZ0ZXIgRWdsb3Qgc3RhcnRzIG1hbmFnaW5nIGEgYnVmZmVyIChAcHhyZWZ7 RWdsb3QgYW5kCkJ1ZmZlcnN9KS4KCkBub2RlIEVnbG90IGFuZCBCdWZmZXJzCkBzZWN0aW9uIEJ1 ZmZlcnMsIFByb2plY3RzLCBhbmQgRWdsb3QKQGNpbmRleCBidWZmZXJzIG1hbmFnZWQgYnkgRWds b3QKQGNpbmRleCBwcm9qZWN0cyBhbmQgRWdsb3QKCkBjaW5kZXggd29ya3NwYWNlCk9uZSBvZiB0 aGUgbWFpbiBzdHJvbmcgcG9pbnRzIG9mIHVzaW5nIGEgbGFuZ3VhZ2Ugc2VydmVyIGlzIHRoYXQg YQpsYW5ndWFnZSBzZXJ2ZXIgaGFzIGEgYnJvYWQgdmlldyBvZiB0aGUgcHJvZ3JhbTogaXQgY29u c2lkZXJzIG1vcmUKdGhhbiBqdXN0IHRoZSBzaW5nbGUgc291cmNlIGZpbGUgeW91IGFyZSBlZGl0 aW5nLiAgSWRlYWxseSwgdGhlCmxhbmd1YWdlIHNlcnZlciBzaG91bGQga25vdyBhYm91dCBhbGwg dGhlIHNvdXJjZSBmaWxlcyBvZiB5b3VyIHByb2dyYW0Kd2hpY2ggYXJlIHdyaXR0ZW4gaW4gdGhl IGxhbmd1YWdlIHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLiAgSW4gdGhlCmxhbmd1YWdlLXNlcnZl ciBwYXJsYW5jZSwgdGhlIHNldCBvZiB0aGUgc291cmNlIGZpbGVzIG9mIGEgcHJvZ3JhbSBpcwpr bm93biBhcyBhIEBkZm57d29ya3NwYWNlfS4gIFRoZSBFbWFjcyBlcXVpdmFsZW50IG9mIGEgd29y a3NwYWNlIGlzIGEKQGRmbntwcm9qZWN0fSAoQHB4cmVme1Byb2plY3RzLCwsIGVtYWNzLCBHTlUg RW1hY3MgTWFudWFsfSkuICBFZ2xvdApmdWxseSBzdXBwb3J0cyBFbWFjcyBwcm9qZWN0cywgYW5k IGNvbnNpZGVycyB0aGUgZmlsZSBpbiB3aG9zZSBidWZmZXIKRWdsb3QgaXMgdHVybmVkIG9uIGFz IGJlbG9uZ2luZyB0byBhIHByb2plY3QuICBJbiB0aGUgc2ltcGxlc3QgY2FzZSwKdGhhdCBmaWxl IGlzIHRoZSBlbnRpcmUgcHJvamVjdCwgaS5lLkA6IHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBh CnNpbmdsZSBmaWxlLiAgQnV0IHRoZXJlIGFyZSBvdGhlciBtb3JlIGNvbXBsZXggcHJvamVjdHM6 CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkEgc2luZ2xlLWRpcmVjdG9yeSBwcm9qZWN0OiBzZXZl cmFsIHNvdXJjZSBmaWxlcyBpbiBhIHNpbmdsZSBjb21tb24KZGlyZWN0b3J5LgoKQGl0ZW0KQSBW QyBwcm9qZWN0OiBzb3VyY2UgZmlsZXMgaW4gYSBkaXJlY3RvcnkgaGllcmFyY2h5IHVuZGVyIHNv bWUgVkNTLAplLmcuQDogYSBWQ1MgcmVwb3NpdG9yeSAoQHB4cmVme1ZlcnNpb24gQ29udHJvbCws LCBlbWFjcywgR05VIEVtYWNzCk1hbnVhbH0pLgoKQGl0ZW0KQW4gRURFIHByb2plY3Q6IHNvdXJj ZSBmaWxlcyBpbiBhIGRpcmVjdG9yeSBoaWVyYXJjaHkgbWFuYWdlZCB2aWEgdGhlCkVtYWNzIERl dmVsb3BtZW50IEVudmlyb25tZW50IChAcHhyZWZ7RURFLCwsIGVtYWNzLCBHTlUgRW1hY3MKTWFu dWFsfSkuCkBlbmQgaXRlbWl6ZQoKRWdsb3QgdXNlcyBFbWFjcydzIHByb2plY3QgbWFuYWdlbWVu dCBpbmZyYXN0cnVjdHVyZSB0byBmaWd1cmUgb3V0CndoaWNoIGZpbGVzIGFuZCBidWZmZXJzIGJl bG9uZyB0byB3aGF0IHByb2plY3QsIHNvIGFueSBraW5kIG9mIHByb2plY3QKc3VwcG9ydGVkIGJ5 IHRoYXQgaW5mcmFzdHJ1Y3R1cmUgaXMgYXV0b21hdGljYWxseSBzdXBwb3J0ZWQgYnkgRWdsb3Qu CgpXaGVuIEVnbG90IHN0YXJ0cyBhIHNlcnZlciBwcm9ncmFtLCBpdCBkb2VzIHNvIGluIHRoZSBw cm9qZWN0J3Mgcm9vdApkaXJlY3RvcnksIHdoaWNoIGlzIHVzdWFsbHkgdGhlIHRvcC1sZXZlbCBk aXJlY3Rvcnkgb2YgdGhlIHByb2plY3QncwpkaXJlY3RvcnkgaGllcmFyY2h5LiAgVGhpcyBlbnN1 cmVzIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgaGFzIHRoZSBzYW1lCmNvbXByZWhlbnNpdmUgdmlldyBv ZiB0aGUgcHJvamVjdCdzIGZpbGVzIGFzIHlvdSBkby4KCkZvciBleGFtcGxlLCBpZiB5b3Ugdmlz aXQgdGhlIGZpbGUgQGZpbGV7fi9wcm9qZWN0cy9mb29leS9saWIveC5mb299CmFuZCBAZmlsZXt4 LmZvb30gYmVsb25ncyB0byBhIHByb2plY3Qgcm9vdGVkIGF0CkBmaWxle34vcHJvamVjdHMvZm9v ZXl9IChwZXJoYXBzIGJlY2F1c2UgYSBAZmlsZXsuZ2l0fSBkaXJlY3RvcnkKZXhpc3RzIHRoZXJl KSwgdGhlbiBAa2Jke00teCBlZ2xvdH0gY2F1c2VzIHRoZSBzZXJ2ZXIgcHJvZ3JhbSB0byBzdGFy dAp3aXRoIHRoYXQgcm9vdCBhcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gIFRoZSBz ZXJ2ZXIgdGhlbiB3aWxsCmFuYWx5emUgbm90IG9ubHkgdGhlIGZpbGUgQGZpbGV7bGliL3guZm9v fSB5b3UgdmlzaXRlZCwgYnV0IGxpa2VseQphbHNvIGFsbCB0aGUgb3RoZXIgQGZpbGV7Ki5mb299 IGZpbGVzIHVuZGVyIHRoZQpAZmlsZXt+L3Byb2plY3RzL2Zvb2V5fSBkaXJlY3RvcnkuCgpJbiBz b21lIGNhc2VzLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIGEgZ2l2ZW4gcHJv amVjdCB3aWxsCm5lZWQgdG8gYmUgcHJvdmlkZWQgdG8gdGhlIGxhbmd1YWdlIHNlcnZlciB3aGVu IHN0YXJ0aW5nIGl0LiAgVGhlCnZhcmlhYmxlIEBjb2Rle2VnbG90LXdvcmtzcGFjZS1jb25maWd1 cmF0aW9ufSAoQHB4cmVme0N1c3RvbWl6aW5nCkVnbG90fSkgZXhpc3RzIGZvciB0aGF0IHB1cnBv c2UuICBJdCBzcGVjaWZpZXMgdGhlIHBhcmFtZXRlcnMgYW5kCnRoZWlyIHZhbHVlcyB0byBjb21t dW5pY2F0ZSB0byBlYWNoIGxhbmd1YWdlIHNlcnZlciB3aGljaCBuZWVkcyB0aGF0LgoKV2hlbiBF Z2xvdCBpcyBhY3RpdmUgZm9yIGEgcHJvamVjdCwgaXQgcGVyZm9ybXMgc2V2ZXJhbCBiYWNrZ3Jv dW5kCmFjdGl2aXRpZXMgb24gYmVoYWxmIG9mIHRoZSBwcm9qZWN0IGFuZCBpdHMgYnVmZmVyczoK CkBpdGVtaXplIEBidWxsZXQKQGNpbmRleCBtb2RlLWxpbmUgaW5kaWNhdGlvbiBvZiBsYW5ndWFn ZSBzZXJ2ZXIKQGNpbmRleCBtb3VzZSBjbGlja3Mgb24gbW9kZS1saW5lLCBhbmQgRWdsb3QKQHZp bmRleCBlZ2xvdC1tZW51CkBpdGVtCkFsbCBvZiB0aGUgcHJvamVjdCdzIGZpbGUtdmlzaXRpbmcg YnVmZmVycyB1bmRlciB0aGUgc2FtZSBtYWpvci1tb2RlCmFyZSBzZXJ2ZWQgYnkgYSBzaW5nbGUg bGFuZ3VhZ2Utc2VydmVyIGNvbm5lY3Rpb24uICAoSWYgdGhlIHByb2plY3QKdXNlcyBzZXZlcmFs IHByb2dyYW1taW5nIGxhbmd1YWdlcywgdGhlcmUgd2lsbCB1c3VhbGx5IGJlIGEgc2VwYXJhdGUK c2VydmVyIGNvbm5lY3Rpb24gZm9yIGVhY2ggZ3JvdXAgb2YgZmlsZXMgd3JpdHRlbiBpbiB0aGUg c2FtZSBsYW5ndWFnZQphbmQgdXNpbmcgdGhlIHNhbWUgRW1hY3MgbWFqb3ItbW9kZS4pICBFZ2xv dCBhZGRzIHRoZQpAc2FtcHtbZWdsb3Q6QHZhcntwcm9qZWN0fV19IGluZGljYXRpb24gdG8gdGhl IG1vZGUgbGluZSBvZgplYWNoIHN1Y2ggYnVmZmVyLCB3aGVyZSBAdmFye3NlcnZlcn0gaXMgdGhl IG5hbWUgb2YgdGhlIHNlcnZlciBhbmQKQHZhcntwcm9qZWN0fSBpZGVudGlmaWVzIHRoZSBwcm9q ZWN0IGJ5IGl0cyByb290IGRpcmVjdG9yeS4gIENsaWNraW5nCnRoZSBtb3VzZSBvbiB0aGUgRWds b3QgbW9kZS1saW5lIGluZGljYXRpb24gYWN0aXZhdGVzIGEgbWVudSB3aXRoCnNlcnZlci1zcGVj aWZpYyBpdGVtcy4KCkBpdGVtCkZvciBlYWNoIGJ1ZmZlciBpbiB3aGljaCBFZ2xvdCBpcyBhY3Rp dmUsIGl0IG5vdGlmaWVzIHRoZSBsYW5ndWFnZQpzZXJ2ZXIgdGhhdCBFZ2xvdCBpcyBAZGZue21h bmFnaW5nfSB0aGUgZmlsZSB2aXNpdGVkIGJ5IHRoYXQgYnVmZmVyLgpUaGlzIHRlbGxzIHRoZSBs YW5ndWFnZSBzZXJ2ZXIgdGhhdCB0aGUgZmlsZSdzIGNvbnRlbnRzIG9uIGRpc2sgbWF5IG5vCmxv bmdlciBiZSB1cC10by1kYXRlIGR1ZSB0byB1bnNhdmVkIGVkaXRzLiAgRWdsb3QgcmVwb3J0cyB0 byB0aGUKc2VydmVyIGFueSBjaGFuZ2VzIGluIHRoZSB0ZXh0IG9mIGVhY2ggbWFuYWdlZCBidWZm ZXIsIHRvIG1ha2UgdGhlCnNlcnZlciBhd2FyZSBvZiB1bnNhdmVkIGNoYW5nZXMuICBUaGlzIGlu Y2x1ZGVzIHlvdXIgZWRpdGluZyBvZiB0aGUKYnVmZmVyIGFuZCBhbHNvIGNoYW5nZXMgZG9uZSBh dXRvbWF0aWNhbGx5IGJ5IG90aGVyIEVtYWNzIGZlYXR1cmVzIGFuZApjb21tYW5kcy4gIEtpbGxp bmcgYSBidWZmZXIgcmVsaW5xdWlzaGVzIGl0cyBtYW5hZ2VtZW50IGJ5IEVnbG90IGFuZApub3Rp ZmllcyB0aGUgc2VydmVyIHRoYXQgdGhlIGZpbGUgb24gZGlzayBpcyB1cC10by1kYXRlLgoKQHZp bmRleCBlZ2xvdC1tYW5hZ2VkLW1vZGUtaG9vawpAdmluZGV4IGVnbG90LW1hbmFnZWQtcApAaXRl bQpFZ2xvdCB0dXJucyBvbiBhIHNwZWNpYWwgbWlub3IgbW9kZSBpbiBlYWNoIGJ1ZmZlciBpdCBt YW5hZ2VzLiAgVGhpcwptaW5vciBtb2RlIGVuc3VyZXMgdGhlIHNlcnZlciBpcyBub3RpZmllZCBh Ym91dCBmaWxlcyBFZ2xvdCBtYW5hZ2VzLAphbmQgYWxzbyBhcnJhbmdlcyBmb3Igb3RoZXIgRW1h Y3MgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IEVnbG90CihAcHhyZWZ7RWdsb3QgRmVhdHVyZXN9KSB0 byByZWNlaXZlIGluZm9ybWF0aW9uIGZyb20gdGhlIGxhbmd1YWdlCnNlcnZlciwgYnkgY2hhbmdp bmcgdGhlIHNldHRpbmdzIG9mIHRoZXNlIGZlYXR1cmVzLiAgVW5saWtlIG90aGVyCm1pbm9yLW1v ZGVzLCB0aGlzIHNwZWNpYWwgbWlub3IgbW9kZSBpcyBub3QgYWN0aXZhdGVkIG1hbnVhbGx5IGJ5 IHRoZQp1c2VyLCBidXQgYXV0b21hdGljYWxseSwgYXMgdGhlIHJlc3VsdCBvZiBzdGFydGluZyBh biBFZ2xvdCBzZXNzaW9uCmZvciB0aGUgYnVmZmVyLiAgSG93ZXZlciwgdGhpcyBtaW5vciBtb2Rl IHByb3ZpZGVzIGEgaG9vayB2YXJpYWJsZQpAY29kZXtlZ2xvdC1tYW5hZ2VkLW1vZGUtaG9va30g dGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgdGhlIEVnbG90Cm1hbmFnZW1lbnQgb2YgdGhl IGJ1ZmZlci4gIFRoaXMgaG9vayBpcyBydW4gYm90aCB3aGVuIHRoZSBtaW5vciBtb2RlCmlzIHR1 cm5lZCBvbiBhbmQgd2hlbiBpdCdzIHR1cm5lZCBvZmY7IHVzZSB0aGUgdmFyaWFibGUKQGNvZGV7 ZWdsb3QtbWFuYWdlZC1wfSB0byB0ZWxsIGlmIGN1cnJlbnQgYnVmZmVyIGlzIHN0aWxsIGJlaW5n Cm1hbmFnZWQgb3Igbm90LiAgV2hlbiBFZ2xvdCBzdG9wcyBtYW5hZ2luZyB0aGUgYnVmZmVyLCB0 aGlzIG1pbm9yIG1vZGUKaXMgdHVybmVkIG9mZiwgYW5kIGFsbCB0aGUgc2V0dGluZ3MgdGhhdCBF Z2xvdCBjaGFuZ2VkIGFyZSByZXN0b3JlZCB0bwp0aGVpciBvcmlnaW5hbCB2YWx1ZXMuCgpAaXRl bQpXaGVuIHlvdSB2aXNpdCBhIGZpbGUgdW5kZXIgdGhlIHNhbWUgcHJvamVjdCwgd2hldGhlciBh biBleGlzdGluZyBvciBhCm5ldyBmaWxlLCBpdHMgYnVmZmVyIGlzIGF1dG9tYXRpY2FsbHkgYWRk ZWQgdG8gdGhlIHNldCBvZiBidWZmZXJzCm1hbmFnZWQgYnkgRWdsb3QsIGFuZCB0aGUgc2VydmVy IHdoaWNoIHN1cHBvcnRzIHRoZSBidWZmZXIncwptYWpvci1tb2RlIGlzIG5vdGlmaWVkIGFib3V0 IHRoYXQuICBUaHVzLCB2aXNpdGluZyBhIG5vbi1leGlzdGVudCBmaWxlCkBmaWxley9ob21lL2pv ZS9wcm9qZWN0cy9mb29leS9saWIveS5mb299IGluIHRoZSBhYm92ZSBleGFtcGxlIHdpbGwKbm90 aWZ5IHRoZSBzZXJ2ZXIgb2YgdGhlIEBmaWxleyouZm9vfSBmaWxlcycgbGFuZ3VhZ2UgdGhhdCBh IG5ldyBmaWxlCndhcyBhZGRlZCB0byB0aGUgcHJvamVjdCwgZXZlbiBiZWZvcmUgdGhlIGZpbGUg YXBwZWFycyBvbiBkaXNrLiAgVGhlCnNwZWNpYWwgRWdsb3QgbWlub3IgbW9kZSBpcyBhbHNvIHR1 cm5lZCBvbiBhdXRvbWF0aWNhbGx5IGluIHRoZSBidWZmZXIKdmlzaXRpbmcgdGhlIGZpbGUuCkBl bmQgaXRlbWl6ZQoKQG5vZGUgRWdsb3QgQ29tbWFuZHMKQHNlY3Rpb24gRWdsb3QgQ29tbWFuZHMK QGNpbmRleCBjb21tYW5kcywgRWdsb3QKClRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIHJlZmVyZW5j ZSBmb3IgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBFZ2xvdApjb21tYW5kczoKCkBmdGFibGUgQGNv ZGUKQGl0ZW0gTS14IGVnbG90ClRoaXMgY29tbWFuZCBhZGRzIHRoZSBjdXJyZW50IGJ1ZmZlciBh bmQgdGhlIGZpbGUgaXQgdmlzaXRzIHRvIHRoZQpncm91cCBvZiBidWZmZXJzIGFuZCBmaWxlcyBt YW5hZ2VkIGJ5IEVnbG90IG9uIGJlaGFsZiBvZiBhIHN1aXRhYmxlCmxhbmd1YWdlIHNlcnZlci4g IElmIGEgbGFuZ3VhZ2Ugc2VydmVyIGZvciB0aGUgYnVmZmVyJ3MKQGNvZGV7bWFqb3ItbW9kZX0g KEBweHJlZntNYWpvciBNb2RlcywsLCBlbWFjcywgR05VIEVtYWNzIE1hbnVhbH0pIGlzCm5vdCB5 ZXQgcnVubmluZywgaXQgd2lsbCBiZSBzdGFydGVkOyBvdGhlcndpc2UgdGhlIGJ1ZmZlciBhbmQg aXRzIGZpbGUKd2lsbCBiZSBhZGRlZCB0byB0aG9zZSBtYW5hZ2VkIGJ5IGFuIGV4aXN0aW5nIHNl cnZlciBzZXNzaW9uLgoKVGhlIGNvbW1hbmQgYXR0ZW1wdHMgdG8gZmlndXJlIG91dCB0aGUgYnVm ZmVyJ3MgbWFqb3IgbW9kZSBhbmQgdGhlCnN1aXRhYmxlIGxhbmd1YWdlIHNlcnZlcjsgaW4gY2Fz ZSBpdCBmYWlscywgaXQgbWlnaHQgcHJvbXB0IGZvciB0aGUKbWFqb3IgbW9kZSB0byB1c2UgYW5k IGZvciB0aGUgc2VydmVyIHByb2dyYW0gdG8gc3RhcnQuICBJZiBpbnZva2VkCndpdGggQGtiZHtD LXV9LCBpdCBhbHdheXMgcHJvbXB0cyBmb3IgdGhlIHNlcnZlciBwcm9ncmFtLCBhbmQgaWYKaW52 b2tlZCB3aXRoIEBrYmR7Qy11IEMtdX0sIGl0IGFsc28gcHJvbXB0cyBmb3IgdGhlIG1ham9yIG1v ZGUuCgpJZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGlzIHN1Y2Nlc3NmdWxseSBzdGFydGVkIGFuZCBj b250YWN0ZWQsIHRoaXMKY29tbWFuZCBhcnJhbmdlcyBmb3IgYW55IG90aGVyIGJ1ZmZlcnMgYmVs b25naW5nIHRvIHRoZSBzYW1lIHByb2plY3QKYW5kIHVzaW5nIHRoZSBzYW1lIG1ham9yIG1vZGUg dG8gdXNlIHRoZSBzYW1lIGxhbmd1YWdlLXNlcnZlciBzZXNzaW9uLgpUaGF0IGluY2x1ZGVzIGFu eSBidWZmZXJzIGNyZWF0ZWQgYnkgdmlzaXRpbmcgZmlsZXMgYWZ0ZXIgdGhpcyBjb21tYW5kCnN1 Y2NlZWRzIHRvIGNvbm5lY3QgdG8gYSBsYW5ndWFnZSBzZXJ2ZXIuCgpBbGwgdGhlIEVtYWNzIGZl YXR1cmVzIHRoYXQgYXJlIGNhcGFibGUgb2YgdXNpbmcgRWdsb3Qgc2VydmljZXMKKEBweHJlZntF Z2xvdCBGZWF0dXJlc30pIGFyZSBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgYnkgdGhpcyBjb21t YW5kCnRvIHN0YXJ0IHVzaW5nIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgdmlhIEVnbG90LiAgVG8gY3Vz dG9taXplIHdoaWNoCkVtYWNzIGZlYXR1cmVzIHdpbGwgYmUgY29uZmlndXJlZCB0byB1c2UgRWds b3QsIHVzZSB0aGUKQGNvZGV7ZWdsb3Qtc3RheS1vdXQtb2Z9IG9wdGlvbiAoQHB4cmVme0N1c3Rv bWl6aW5nIEVnbG90fSkuCgpAaXRlbSBNLXggZWdsb3QtcmVjb25uZWN0ClRoaXMgY29tbWFuZCBz aHV0cyBkb3duIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gdG8gdGhlIGxhbmd1YWdlCnNlcnZlciBh bmQgaW1tZWRpYXRlbHkgcmVzdGFydHMgaXQgdXNpbmcgdGhlIHNhbWUgb3B0aW9ucyB1c2VkCm9y aWdpbmFsbHkuICBUaGlzIGNhbiBzb21ldGltZXMgYmUgdXNlZnVsIHRvIHVuY2xvZyBhIHBhcnRp YWxseQptYWxmdW5jdGlvbmluZyBzZXJ2ZXIgY29ubmVjdGlvbi4KCkBpdGVtIE0teCBlZ2xvdC1z aHV0ZG93bgpUaGlzIGNvbW1hbmQgc2h1dHMgZG93biBhIGxhbmd1YWdlIHNlcnZlci4gIEl0IHBy b21wdHMgZm9yIGEgbGFuZ3VhZ2UKc2VydmVyIHRvIHNodXQgZG93biAodW5sZXNzIHRoZXJlJ3Mg b25seSBvbmUgc2VydmVyIHNlc3Npb24sIGFuZCBpdAptYW5hZ2VzIHRoZSBjdXJyZW50IGJ1ZmZl cikuICBUaGVuIHRoZSBjb21tYW5kIHNodXRzIGRvd24gdGhlIHNlcnZlcgphbmQgc3RvcHMgbWFu YWdpbmcgdGhlIGJ1ZmZlcnMgdGhlIHNlcnZlciB3YXMgdXNlZCBmb3IuICBFbWFjcwpmZWF0dXJl cyAoQHB4cmVme0VnbG90IEZlYXR1cmVzfSkgdGhhdCBFZ2xvdCBjb25maWd1cmVkIHRvIHdvcmsg d2l0aAp0aGUgbGFuZ3VhZ2Ugc2VydmVyIGFyZSByZXN0b3JlZCBiYWNrIHRvIHRoZWlyIG9yaWdp bmFsIGNvbmZpZ3VyYXRpb24uCgpOb3JtYWxseSwgdGhpcyBjb21tYW5kIGtpbGxzIHRoZSBidWZm ZXJzIHVzZWQgZm9yIGNvbW11bmljYXRpbmcgd2l0aAp0aGUgbGFuZ3VhZ2Ugc2VydmVyLCBidXQg aWYgaW52b2tlZCB3aXRoIGEgcHJlZml4IGFyZ3VtZW50IEBrYmR7Qy11fSwKdGhlIGNvbW1hbmQg ZG9lc24ndCBraWxsIHRob3NlIGJ1ZmZlcnMsIGFsbG93aW5nIHRoZW0gdG8gYmUgdXNlZCBmb3IK ZGlhZ25vc3RpY3MgYW5kIHByb2JsZW0gcmVwb3J0aW5nIChAcHhyZWZ7VHJvdWJsZXNob290aW5n IEVnbG90fSkuCgpAaXRlbSBNLXggZWdsb3Qtc2h1dGRvd24tYWxsClRoaXMgY29tbWFuZCBzaHV0 cyBkb3duIGFsbCB0aGUgbGFuZ3VhZ2Ugc2VydmVycyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQKRW1h Y3Mgc2Vzc2lvbi4gIEFzIHdpdGggQGNvZGV7ZWdsb3Qtc2h1dGRvd259LCBpbnZva2luZyB0aGlz IGNvbW1hbmQKd2l0aCBhIHByZWZpeCBhcmd1bWVudCBhdm9pZHMga2lsbGluZyB0aGUgYnVmZmVy cyB1c2VkIGZvcgpjb21tdW5pY2F0aW9ucyB3aXRoIHRoZSBsYW5ndWFnZSBzZXJ2ZXJzLgoKQGl0 ZW0gTS14IGVnbG90LXJlbmFtZQpUaGlzIGNvbW1hbmQgcmVuYW1lcyB0aGUgcHJvZ3JhbSBzeW1i b2wgKGEuay5hLkA6IEBkZm57aWRlbnRpZmllcn0pIGF0CnBvaW50IHRvIGFub3RoZXIgbmFtZS4g IEl0IHByb21wdHMgZm9yIHRoZSBuZXcgbmFtZSBvZiB0aGUgc3ltYm9sLCBhbmQKdGhlbiBtb2Rp ZmllcyBhbGwgdGhlIGZpbGVzIGluIHRoZSBwcm9qZWN0IHdoaWNoIGFyZSBtYW5hZ2VkIGJ5IHRo ZQpsYW5ndWFnZSBzZXJ2ZXIgb2YgdGhlIGN1cnJlbnQgYnVmZmVyIHRvIGltcGxlbWVudCB0aGUg cmVuYW1pbmcuCgpAaXRlbSBNLXggZWdsb3QtZm9ybWF0ClRoaXMgY29tbWFuZCByZWZvcm1hdHMg dGhlIGFjdGl2ZSByZWdpb24gYWNjb3JkaW5nIHRvIHRoZQpsYW5ndWFnZS1zZXJ2ZXIgcnVsZXMu ICBJZiBubyByZWdpb24gaXMgYWN0aXZlLCBpdCByZWZvcm1hdHMgdGhlCmVudGlyZSBjdXJyZW50 IGJ1ZmZlci4KCkBpdGVtIE0teCBlZ2xvdC1mb3JtYXQtYnVmZmVyClRoaXMgY29tbWFuZCByZWZv cm1hdHMgdGhlIGN1cnJlbnQgYnVmZmVyLCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMKQGNvZGV7ZWds b3QtZm9ybWF0fSBkb2VzLgoKQGNpbmRleCBjb2RlIGFjdGlvbnMKQGl0ZW0gTS14IGVnbG90LWNv ZGUtYWN0aW9ucwpAaXRlbXggTS14IGVnbG90LWNvZGUtYWN0aW9uLW9yZ2FuaXplLWltcG9ydHMK QGl0ZW14IE0teCBlZ2xvdC1jb2RlLWFjdGlvbi1xdWlja2ZpeApAaXRlbXggTS14IGVnbG90LWNv ZGUtYWN0aW9uLWV4dHJhY3QKQGl0ZW14IE0teCBlZ2xvdC1jb2RlLWFjdGlvbi1pbmxpbmUKQGl0 ZW14IE0teCBlZ2xvdC1jb2RlLWFjdGlvbi1yZXdyaXRlClRoZXNlIGNvbW1hbmRzIGFsbG93IHlv dSB0byBpbnZva2UgdGhlIHNvLWNhbGxlZCBAZGZue2NvZGUgYWN0aW9uc306CnJlcXVlc3RzIGZv ciB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRvIHByb3ZpZGUgZWRpdGluZyBjb21tYW5kcyBmb3IKY29y cmVjdGluZywgcmVmYWN0b3Jpbmcgb3IgYmVhdXRpZnlpbmcgeW91ciBjb2RlLiAgVGhlc2UgY29t bWFuZHMgbWF5CmFmZmVjdCBtb3JlIHRoYW4gb25lIHZpc2l0ZWQgZmlsZSBiZWxvbmdpbmcgdG8g dGhlIHByb2plY3QuCgpUaGUgY29tbWFuZCBAY29kZXtlZ2xvdC1jb2RlLWFjdGlvbnN9IGFza3Mg dGhlIHNlcnZlciBpZiB0aGVyZSBhcmUgYW55CmNvZGUgYWN0aW9ucyBmb3IgYW55IHBvaW50IGlu IHRoZSBidWZmZXIgb3IgY29udGFpbmVkIGluIHRoZSBhY3RpdmUKcmVnaW9uLiAgSWYgdGhlcmUg YXJlLCB5b3UgaGF2ZSB0aGUgY2hvaWNlIHRvIGV4ZWN1dGUgb25lIG9mIHRoZW0gdmlhCnRoZSBt aW5pYnVmZmVyLgoKQSBjb21tb24gdXNlIG9mIGNvZGUgYWN0aW9ucyBpcyBmaXhpbmcgdGhlIEZs eW1ha2UgZXJyb3IgZGlhZ25vc3RpY3MKaXNzdWVkIGJ5IEVnbG90IChAcHhyZWZ7VG9wLCwsIGZs eW1ha2UsIEdOVSBGbHltYWtlIG1hbnVhbH0pLgpDbGlja2luZyBvbiBhIGRpYWdub3N0aWMgd2l0 aCBAa2Jke21vdXNlLTJ9IGludm9rZXMKQGNvZGV7ZWdsb3QtY29kZS1hY3Rpb25zLWF0LW1vdXNl fSB3aGljaCBwb3BzIHVwIGEgbWVudSBvZiBhdmFpbGFibGUKY29kZSBhY3Rpb25zLiAgVGhlIHZh cmlhYmxlIEBjb2Rle2VnbG90LWRpYWdub3N0aWNzLW1hcH0gY2FuIGJlIHVzZWQKdG8gY29udHJv bCB0aGUgbW91c2UgYmluZGluZy4KCk90aGVyIGNvbW1hbmRzIGV4ZWN1dGUgYSBzcGVjaWZpYyBj b2RlIGFjdGlvbi4gIEZvciBleGFtcGxlLApAY29kZXtlZ2xvdC1jb2RlLWFjdGlvbi1vcmdhbml6 ZS1pbXBvcnRzfSByZWFycmFuZ2VzIHRoZSBwcm9ncmFtJ3MKQGRmbntpbXBvcnRzfS0tLWRlY2xh cmF0aW9ucyBvZiBtb2R1bGVzIHdob3NlIGNhcGFiaWxpdGllcyB0aGUgcHJvZ3JhbQp1c2VzLgoK QGNpbmRleCBpbmxheSBoaW50cwpAaXRlbSBNLXggZWdsb3QtaW5sYXktaGludHMtbW9kZQpUaGlz IGNvbW1hbmQgdG9nZ2xlcyBMU1AgQGRmbntpbmxheSBoaW50c30gb24gYW5kIG9mZiBmb3IgdGhl IGN1cnJlbnQKYnVmZmVyLiAgSW5sYXkgaGludHMgYXJlIHNtYWxsIHRleHQgYW5ub3RhdGlvbnMg dG8gc3BlY2lmaWMgcGFydHMgb2YKdGhlIHdob2xlIGJ1ZmZlciwgbm90IHVubGlrZSBkaWFnbm9z dGljcywgYnV0IGRlc2lnbmVkIHRvIGhlbHAKcmVhZGFiaWxpdHkgaW5zdGVhZCBvZiBpbmRpY2F0 aW5nIHByb2JsZW1zLiAgRm9yIGV4YW1wbGUsIGEgQysrCmxhbmd1YWdlIHNlcnZlciBjYW4gc2Vy dmUgaGludHMgYWJvdXQgcG9zaXRpb25hbCBwYXJhbWV0ZXIgbmFtZXMgaW4KZnVuY3Rpb24gY2Fs bHMgYW5kIGEgdmFyaWFibGUncyBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgdHlwZS4gIElubGF5Cmhp bnRzIGhlbHAgdGhlIHVzZXIgbm90IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2UgdGhpbmdzIGJ5IGhl YXJ0LgpAZW5kIGZ0YWJsZQoKVGhlIGZvbGxvd2luZyBFZ2xvdCBjb21tYW5kcyBhcmUgdXNlZCBs ZXNzIGNvbW1vbmx5LCBtb3N0bHkgZm9yCmRpYWdub3N0aWMgYW5kIHRyb3VibGVzaG9vdGluZyBw dXJwb3NlczoKCkBmdGFibGUgQGNvZGUKQGl0ZW0gTS14IGVnbG90LWV2ZW50cy1idWZmZXIKVGhp cyBjb21tYW5kIHBvcHMgdXAgdGhlIGV2ZW50cyBidWZmZXIgdXNlZCBmb3IgY29tbXVuaWNhdGlv biB3aXRoIHRoZQpsYW5ndWFnZSBzZXJ2ZXIgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLgoKQGl0ZW0g TS14IGVnbG90LXN0ZGVyci1idWZmZXIKVGhpcyBjb21tYW5kIHBvcHMgdXAgdGhlIGJ1ZmZlciB3 aXRoIHRoZSBkZWJ1ZyBpbmZvIHByaW50ZWQgYnkgdGhlCmxhbmd1YWdlIHNlcnZlciB0byBpdHMg c3RhbmRhcmQgZXJyb3Igc3RyZWFtLgoKQGl0ZW0gTS14IGVnbG90LWZvcmdldC1wZW5kaW5nLWNv bnRpbnVhdGlvbnMKRm9yZ2V0IHBlbmRpbmcgcmVxdWVzdHMgZm9yIHRoZSBzZXJ2ZXIgb2YgdGhl IGN1cnJlbnQgYnVmZmVyLgpAYyBGSVhNRTogQmV0dGVyIGRlc2NyaXB0aW9uIG9mIHRoZSBuZWVk LgoKQGl0ZW0gTS14IGVnbG90LXNpZ25hbC1kaWRDaGFuZ2VDb25maWd1cmF0aW9uClRoaXMgY29t bWFuZCB1cGRhdGVzIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhY2NvcmRpbmcg dG8KdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIEBjb2Rle2VnbG90LXdvcmtzcGFj ZS1jb25maWd1cmF0aW9ufQooQHB4cmVme0N1c3RvbWl6aW5nIEVnbG90fSkuCgpAaXRlbSBNLXgg ZWdsb3QtY2xlYXItc3RhdHVzCkNsZWFyIHRoZSBsYXN0IEpTT05SUEMgZXJyb3IgZm9yIHRoZSBz ZXJ2ZXIgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLgpFZ2xvdCBrZWVwcyB0cmFjayBvZiBlcnJvbmVv dXMgc2l0dWF0aW9ucyBlbmNvdW50ZXJlZCBieSB0aGUgc2VydmVyIGluCml0cyBtb2RlLWxpbmUg aW5kaWNhdGlvbiBzbyB0aGF0IHRoZSB1c2VyIG1heSBpbnNwZWN0IHRoZQpjb21tdW5pY2F0aW9u IGxlYWRpbmcgdXAgdG8gaXQgKEBweHJlZntUcm91Ymxlc2hvb3RpbmcgRWdsb3R9KS4gIElmCnRo ZSBzaXR1YXRpb24gaXMgZGVlbWVkIHVuaW50ZXJlc3Rpbmcgb3IgdGVtcG9yYXJ5LCB0aGlzIGNv bW1hbmQgY2FuCmJlIHVzZWQgdG8gYGBmb3JnZXQnJyB0aGUgZXJyb3IuICBOb3RlIHRoYXQgdGhl IGNvbW1hbmQgQGNvZGV7TS14CmVnbG90LXJlY29ubmVjdH0gY2FuIHNvbWV0aW1lcyBiZSB1c2Vk IHRvIHVuY2xvZyBhIHRlbXBvcmFyaWx5Cm1hbGZ1bmN0aW9uaW5nIHNlcnZlci4KQGVuZCBmdGFi bGUKCkFzIGRlc2NyaWJlZCBpbiBAcmVme0VnbG90IEZlYXR1cmVzfSBtb3N0IGZlYXR1cmVzIGFz c29jaWF0ZWQgd2l0aApFZ2xvdCBhcmUgYWN0dWFsbHkgcHJvdmlkZWQgYnkgb3RoZXIgRW1hY3Mg cGFja2FnZXMgYW5kIGZlYXR1cmVzLCBhbmQKRWdsb3Qgb25seSBlbmhhbmNlcyB0aGVtIGJ5IGFs bG93aW5nIHRoZW0gdG8gdXNlIHRoZSBpbmZvcm1hdGlvbgpjb21pbmcgZnJvbSB0aGUgbGFuZ3Vh Z2Ugc2VydmVycy4gIEZvciBjb21wbGV0ZW5lc3MsIGhlcmUncyB0aGUgbGlzdApvZiBjb21tYW5k cyBvZiB0aG9zZSBvdGhlciBwYWNrYWdlcyB0aGF0IGFyZSB2ZXJ5IGNvbW1vbmx5IHVzZWQgaW4K RWdsb3QtbWFuYWdlZCBidWZmZXJzOgoKQGMgTm90IEBmdGFibGUsIGJlY2F1c2UgdGhlIGluZGV4 IGVudHJpZXMgc2hvdWxkIG1lbnRpb24gRWdsb3QKQHRhYmxlIEBjb2RlCkBjaW5kZXggZWxkb2Ms IGFuZCBFZ2xvdApAY2luZGV4IGRvY3VtZW50YXRpb24gdXNpbmcgRWdsb3QKQGl0ZW0gTS14IGVs ZG9jCkFzayB0aGUgRWxEb2Mgc3lzdGVtIGZvciBoZWxwIGF0IHBvaW50LgoKQGNpbmRleCBmbHlt YWtlLCBhbmQgRWdsb3QKQGNpbmRleCBvbi10aGUtZmx5IGRpYWdub3N0aWNzIHVzaW5nIEVnbG90 CkBpdGVtIE0teCBmbHltYWtlLXNob3ctYnVmZmVyLWRpYWdub3N0aWNzCkFzayBGbHltYWtlIHN5 c3RlbSB0byBkaXNwbGF5IGRpYWdub3N0aWNzIGZvciB0aGUgY3VycmVudCBidWZmZXIuCgpAaXRl bSBNLXggZmx5bWFrZS1zaG93LXByb2plY3QtZGlhZ25vc3RpY3MKQXNrIEZseW1ha2UgdG8gbGlz dCBkaWFnbm9zdGljcyBmb3IgYWxsIHRoZSBmaWxlcyBpbiB0aGUgY3VycmVudApwcm9qZWN0LgoK QGNpbmRleCB4cmVmLCBhbmQgRWdsb3QKQGNpbmRleCBmaW5kaW5nIGRlZmluaXRpb25zIG9mIGlk ZW50aWZpZXJzIHVzaW5nIEVnbG90CkBpdGVtIE0teCB4cmVmLWZpbmQtZGVmaW5pdGlvbnMKQXNr IFhyZWYgdG8gZ28gdGhlIGRlZmluaXRpb24gb2YgdGhlIGlkZW50aWZpZXIgYXQgcG9pbnQuCgpA Y2luZGV4IGltZW51IG5hdmlnYXRpb24gdXNpbmcgRWdsb3QKQGl0ZW0gTS14IGltZW51CkxldCB0 aGUgdXNlciBuYXZpZ2F0ZSB0aGUgcHJvZ3JhbSBzb3VyY2UgY29kZSB1c2luZyBidWZmZXIgaW5k ZXgsCmNhdGVnb3JpemluZyBwcm9ncmFtIGVsZW1lbnRzIGJ5IHN5bnRhY3RpYyBjbGFzcyAoY2xh c3MsIG1ldGhvZCwKdmFyaWFibGUsIGV0Yy4pIGFuZCBvZmZlcmluZyBjb21wbGV0aW9uLgoKQGNp bmRleCBzeW1ib2wgY29tcGxldGlvbiB1c2luZyBFZ2xvdApAaXRlbSBNLXggY29tcGxldGlvbi1h dC1wb2ludApSZXF1ZXN0IGNvbXBsZXRpb24gb2YgdGhlIHN5bWJvbCBhdCBwb2ludC4KQGVuZCB0 YWJsZQoKQG5vZGUgRWdsb3QgVmFyaWFibGVzCkBzZWN0aW9uIEVnbG90IFZhcmlhYmxlcwpAY2lu ZGV4IHZhcmlhYmxlcywgRWdsb3QKClRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIHJlZmVyZW5jZSBm b3IgdGhlIEVnbG90IHVzZXIgb3B0aW9ucy4KCkB2dGFibGUgQGNvZGUKQGl0ZW0gZWdsb3QtYXV0 b3JlY29ubmVjdApUaGlzIG9wdGlvbiBjb250cm9scyB0aGUgYWJpbGl0eSB0byByZWNvbm5lY3Qg YXV0b21hdGljYWxseSB0byB0aGUKbGFuZ3VhZ2Ugc2VydmVyIHdoZW4gRWdsb3QgZGV0ZWN0cyB0 aGF0IHRoZSBzZXJ2ZXIgcHJvY2VzcyB0ZXJtaW5hdGVkCnVuZXhwZWN0ZWRseS4gIFRoZSBkZWZh dWx0IHZhbHVlIEBjb2RlezN9IG1lYW5zIHRvIGF0dGVtcHQgcmVjb25uZWN0aW9uIG9ubHkKaWYg dGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbiBsYXN0ZWQgZm9yIG1vcmUgdGhhbiB0 aGF0IG51bWJlcgpvZiBzZWNvbmRzOyBhIGRpZmZlcmVudCBwb3NpdGl2ZSB2YWx1ZSBjaGFuZ2Vz IHRoZSBtaW5pbWFsIGxlbmd0aCBvZgp0aGUgY29ubmVjdGlvbiB0byB0cmlnZ2VyIHJlY29ubmVj dGlvbi4gIEEgdmFsdWUgb2YgQGNvZGV7dH0gbWVhbnMKYWx3YXlzIHJlY29ubmVjdCBhdXRvbWF0 aWNhbGx5LCBhbmQgQGNvZGV7bmlsfSBtZWFucyBuZXZlciByZWNvbm5lY3QKKGluIHdoaWNoIGNh c2UgeW91IHdpbGwgbmVlZCB0byByZWNvbm5lY3QgbWFudWFsbHkgdXNpbmcgQGtiZHtNLXgKZWds b3R9KS4KCkBpdGVtIGVnbG90LWNvbm5lY3QtdGltZW91dApUaGlzIHNwZWNpZmllcyB0aGUgbnVt YmVyIG9mIHNlY29uZHMgYmVmb3JlIGNvbm5lY3Rpb24gYXR0ZW1wdCB0byBhCmxhbmd1YWdlIHNl cnZlciB0aW1lcyBvdXQuICBUaGUgdmFsdWUgb2YgQGNvZGV7bmlsfSBtZWFucyBuZXZlciB0aW1l Cm91dC4gIFRoZSBkZWZhdWx0IGlzIDMwIHNlY29uZHMuCgpAaXRlbSBlZ2xvdC1zeW5jLWNvbm5l Y3QKVGhpcyBzZXR0aW5nIGlzIG1haW5seSBpbXBvcnRhbnQgZm9yIGNvbm5lY3Rpb25zIHdoaWNo IGFyZSBzbG93IHRvCmVzdGFibGlzaC4gIFdoZXJlYXMgdGhlIHZhcmlhYmxlIEBjb2Rle2VnbG90 LWNvbm5lY3QtdGltZW91dH0gY29udHJvbHMKaG93IGxvbmcgdG8gd2FpdCBmb3IsIHRoaXMgdmFy aWFibGUgY29udHJvbHMgd2hldGhlciB0byBibG9jayBFbWFjcydzCnVzZXIgaW50ZXJmYWNlIHdo aWxlIHdhaXRpbmcuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBAY29kZXszfTsgYSBwb3NpdGl2ZQp2 YWx1ZSBtZWFucyBibG9jayBmb3IgdGhhdCBtYW55IHNlY29uZHMsIHRoZW4gd2FpdCBmb3IgdGhl IGNvbm5lY3Rpb24KaW4gdGhlIGJhY2tncm91bmQuICBUaGUgdmFsdWUgb2YgQGNvZGV7dH0gbWVh bnMgYmxvY2sgZHVyaW5nIHRoZSB3aG9sZQp3YWl0aW5nIHBlcmlvZC4gIFRoZSB2YWx1ZSBvZiBA Y29kZXtuaWx9IG9yIEBjb2RlezB9IG1lYW5zIGRvbid0IGJsb2NrIGF0CmFsbCBkdXJpbmcgdGhl IHdhaXRpbmcgcGVyaW9kLgoKQGl0ZW0gZWdsb3QtZXZlbnRzLWJ1ZmZlci1jb25maWcKVGhpcyBj b25maWd1cmVzIHRoZSBzaXplIGFuZCBmb3JtYXQgb2YgdGhlIEVnbG90IGV2ZW50cyBidWZmZXIu CkB4cmVme0VnbG90IENvbW1hbmRzLCBlZ2xvdC1ldmVudHMtYnVmZmVyfSwgZm9yIGhvdyB0byBh Y2Nlc3MgdGhhdApidWZmZXIuICBJZiB0aGUgdmFsdWUgaXMgY2hhbmdlZCwgdGhlIGNvbm5lY3Rp b24gc2hvdWxkIGJlIHJlc3RhcnRlZAp1c2luZyBAa2Jke00teCBlZ2xvdC1yZWNvbm5lY3R9IGZv ciB0aGUgbmV3IHZhbHVlIHRvIHRha2UgZWZmZWN0LgpAYyBGSVhNRTogU2hvdWxkbid0IHRoZSBk ZWZjdXN0b20gZG8gdGhpcyBieSBpdHNlbGYgdXNpbmcgdGhlIDpzZXQKQGMgYXR0cmlidXRlPyAg TWF5YmUgbm90IGJlY2F1c2UgcmVjb25uZWN0aW5nIGlzIGEgY29tcGxleCB0YXNrLgpAeHJlZntU cm91Ymxlc2hvb3RpbmcgRWdsb3R9LCBmb3Igd2hlbiB0aGlzIGNvdWxkIGJlIHVzZWZ1bC4KCkBp dGVtIGVnbG90LWF1dG9zaHV0ZG93bgpJZiB0aGlzIGlzIG5vbi1AY29kZXtuaWx9LCBFZ2xvdCBz aHV0cyBkb3duIGEgbGFuZ3VhZ2Ugc2VydmVyIHdoZW4gdGhlCmxhc3QgYnVmZmVyIG1hbmFnZWQg YnkgaXQgaXMga2lsbGVkLiAgQHhyZWZ7U2h1dHRpbmcgRG93biBMU1AgU2VydmVyc30uClRoZSBk ZWZhdWx0IGlzIEBjb2Rle25pbH07IGlmIHlvdSB3YW50IHRvIHNodXQgZG93biBhIHNlcnZlciwg dXNlCkBrYmR7TS14IGVnbG90LXNodXRkb3dufSAoQHB4cmVme0VnbG90IENvbW1hbmRzfSkuCgpA aXRlbSBlZ2xvdC1jb25maXJtLXNlcnZlci1lZGl0cwpWYXJpb3VzIEVnbG90IGNvbW1hbmRzIGFu ZCBjb2RlIGFjdGlvbnMgcmVzdWx0IGluIHRoZSBsYW5ndWFnZSBzZXJ2ZXIKc2VuZGluZyBlZGl0 aW5nIGNvbW1hbmRzIHRvIEVtYWNzLiAgSWYgdGhpcyBvcHRpb24ncyB2YWx1ZSBpcwpub24tQGNv ZGV7bmlsfSwgRWdsb3Qgd2lsbCBhc2sgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgcGVyZm9ybWlu ZwplZGl0cyBwcm9wb3NlZCBieSB0aGUgbGFuZ3VhZ2Ugc2VydmVyLiAgVGhpcyBvcHRpb24ncyB2 YWx1ZSBjYW4gYmUKY3JhZnRlZCB0byByZXF1aXJlIHRoaXMgY29uZmlybWF0aW9uIGZvciBzcGVj aWZpYyBjb21tYW5kcyBvciBvbmx5CndoZW4gdGhlIGVkaXQgYWZmZWN0cyBmaWxlcyBub3QgeWV0 IHZpc2l0ZWQgYnkgdGhlIHVzZXIuICBDb25zdWx0IHRoaXMKb3B0aW9uJ3MgZG9jc3RyaW5nIGZv ciBtb3JlIGluZm9ybWF0aW9uLgoKQGl0ZW0gZWdsb3QtaWdub3JlZC1zZXJ2ZXItY2FwYWJpbGl0 aWVzClRoaXMgdmFyaWFibGUncyB2YWx1ZSBpcyBhIGxpc3Qgb2YgbGFuZ3VhZ2Ugc2VydmVyIGNh cGFiaWxpdGllcyB0aGF0CkVnbG90IHNob3VsZCBub3QgdXNlLiAgVGhlIGRlZmF1bHQgaXMgQGNv ZGV7bmlsfTogRWdsb3QgdXNlcyBhbGwgb2YKdGhlIGNhcGFiaWxpdGllcyBzdXBwb3J0ZWQgYnkg ZWFjaCBzZXJ2ZXIuCgpAaXRlbSBlZ2xvdC1leHRlbmQtdG8teHJlZgpJZiB0aGlzIGlzIG5vbi1A Y29kZXtuaWx9LCBhbmQgQGtiZHtNLS59CihAY29kZXt4cmVmLWZpbmQtZGVmaW5pdGlvbnN9KSBs YW5kcyB5b3UgaW4gYSBmaWxlIG91dHNpZGUgb2YgeW91cgpwcm9qZWN0LCBzdWNoIGFzIGEgc3lz dGVtLWluc3RhbGxlZCBsaWJyYXJ5IG9yIGhlYWRlciBmaWxlLAp0cmFuc2llbnRseSBjb25zaWRl ciB0aGF0IGZpbGUgYXMgbWFuYWdlZCBieSB0aGUgc2FtZSBsYW5ndWFnZSBzZXJ2ZXIuClRoYXQg ZmlsZSBpcyBzdGlsbCBvdXRzaWRlIHlvdXIgcHJvamVjdCAoaS5lLiBAY29kZXtwcm9qZWN0LWZp bmQtZmlsZX0Kd29uJ3QgZmluZCBpdCksIGJ1dCBFZ2xvdCBhbmQgdGhlIHNlcnZlciB3aWxsIGNv bnNpZGVyIGl0IHRvIGJlIHBhcnQKb2YgdGhlIHdvcmtzcGFjZS4gIFRoZSBkZWZhdWx0IGlzIEBj b2Rle25pbH0uCgpAaXRlbSBlZ2xvdC1tb2RlLW1hcApUaGlzIHZhcmlhYmxlIGlzIHRoZSBrZXlt YXAgZm9yIGJpbmRpbmcgRWdsb3QtcmVsYXRlZCBjb21tYW5kLiAgSXQgaXMKaW4gZWZmZWN0IG9u bHkgYXMgbG9uZyBhcyB0aGUgYnVmZmVyIGlzIG1hbmFnZWQgYnkgRWdsb3QuICBCeSBkZWZhdWx0 LAppdCBpcyBlbXB0eSwgd2l0aCB0aGUgc2luZ2xlIGV4Y2VwdGlvbjogQGtiZHtDLWggLn0gaXMg cmVtYXBwZWQgdG8KaW52b2tlIEBjb2Rle2VsZG9jLWRvYy1idWZmZXJ9LiAgWW91IGNhbiBiaW5k IGFkZGl0aW9uYWwgY29tbWFuZHMgaW4KdGhpcyBtYXAuICBGb3IgZXhhbXBsZToKCkBsaXNwCiAg KGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAiQy1jIHIiKSAnZWdsb3QtcmVuYW1lKQog IChkZWZpbmUta2V5IGVnbG90LW1vZGUtbWFwIChrYmQgIkMtYyBvIikgJ2VnbG90LWNvZGUtYWN0 aW9uLW9yZ2FuaXplLWltcG9ydHMpCiAgKGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAi Qy1jIGgiKSAnZWxkb2MpCiAgKGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAiPGY2PiIp ICd4cmVmLWZpbmQtZGVmaW5pdGlvbnMpCkBlbmQgbGlzcAoKQGVuZCB2dGFibGUKCkFkZGl0aW9u YWwgdmFyaWFibGVzLCB3aGljaCBhcmUgcmVsZXZhbnQgZm9yIGN1c3RvbWl6aW5nIHRoZSBzZXJ2 ZXIKY29ubmVjdGlvbnMsIGFyZSBkb2N1bWVudGVkIGluIEByZWZ7Q3VzdG9taXppbmcgRWdsb3R9 LgoKQG5vZGUgQ3VzdG9taXppbmcgRWdsb3QKQGNoYXB0ZXIgQ3VzdG9taXppbmcgRWdsb3QKQGNp bmRleCBjdXN0b21pemluZyBFZ2xvdAoKRWdsb3QgaXRzZWxmIGhhcyBhIHJlbGF0aXZlbHkgc21h bGwgbnVtYmVyIG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucy4KQSBsYXJnZSBwYXJ0IG9mIGN1c3Rv bWl6aW5nIEVnbG90IHRvIHlvdXIgbmVlZHMgYW5kIHByZWZlcmVuY2VzIHNob3VsZAphY3R1YWxs eSBiZSBkb25lIHZpYSBvcHRpb25zIG9mIHRoZSBFbWFjcyBwYWNrYWdlcyBhbmQgZmVhdHVyZXMg d2hpY2gKRWdsb3Qgc3VwcG9ydHMgYW5kIGVuaGFuY2VzIChAcHhyZWZ7RWdsb3QgRmVhdHVyZXN9 KS4gIEZvciBleGFtcGxlOgoKQGl0ZW1pemUgQGJ1bGxldApAaXRlbQpUbyBjb25maWd1cmUgdGhl IGZhY2UgdXNlZCBmb3Igc2VydmVyLWRlcml2ZWQgZXJyb3JzIGFuZCB3YXJuaW5ncywKY3VzdG9t aXplIHRoZSBGbHltYWtlIGZhY2VzIEBjb2Rle2ZseW1ha2UtZXJyb3J9IGFuZApAY29kZXtmbHlt YWtlLXdhcm5pbmd9LgoKQGl0ZW0KVG8gY29uZmlndXJlIHRoZSBhbW91bnQgb2Ygc3BhY2UgdGFr ZW4gdXAgYnkgZG9jdW1lbnRhdGlvbiBpbiB0aGUKZWNobyBhcmVhLCBjdXN0b21pemUgdGhlIEVs RG9jIHZhcmlhYmxlCkBjb2Rle2VsZG9jLWVjaG8tYXJlYS11c2UtbXVsdGlsaW5lLXB9LgoKQGl0 ZW0KVG8gY29tcGxldGVseSBjaGFuZ2UgaG93IEVsRG9jIGRpc3BsYXlzIHRoZSBhdC1wb2ludCBk b2N1bWVudGF0aW9uCmRlc3RpbmF0aW9uLCBjdXN0b21pemUgdGhlIEVsRG9jIHZhcmlhYmxlCkBj b2Rle2VsZG9jLWRpc3BsYXktZnVuY3Rpb25zfS4KQGVuZCBpdGVtaXplCgpGb3IgdGhpcyByZWFz b24sIHRoaXMgbWFudWFsIGRlc2NyaWJlcyBvbmx5IGhvdyB0byBjdXN0b21pemUKRWdsb3QncyBv d24gb3BlcmF0aW9uLCB3aGljaCBtYWlubHkgaGFzIHRvIGRvIHdpdGggdGhlIHNlcnZlcgpjb25u ZWN0aW9ucyBhbmQgdGhlIHNlcnZlciBmZWF0dXJlcyB0byBiZSB1c2VkIGJ5IEVnbG90LgoKQGMg QHRhYmxlLCBub3QgQHZ0YWJsZSwgYmVjYXVzZSBzb21lIG9mIHRoZSB2YXJpYWJsZXMgYXJlIGlu ZGV4ZWQKQGMgZWxzZXdoZXJlCkB0YWJsZSBAY29kZQpAaXRlbSBlZ2xvdC1zZXJ2ZXItcHJvZ3Jh bXMKVGhpcyB2YXJpYWJsZSBkZXRlcm1pbmVzIHdoaWNoIGxhbmd1YWdlIHNlcnZlciB0byBzdGFy dCBmb3IgZWFjaApzdXBwb3J0ZWQgbWFqb3IgbW9kZSwgYW5kIGhvdyB0byBpbnZva2UgdGhhdCBz ZXJ2ZXIncyBwcm9ncmFtLgpAeHJlZntTZXR0aW5nIFVwIExTUCBTZXJ2ZXJzfSwgZm9yIHRoZSBk ZXRhaWxzLgoKQHZpbmRleCBlZ2xvdC1zdHJpY3QtbW9kZQpAaXRlbSBlZ2xvdC1zdHJpY3QtbW9k ZQpUaGlzIGlzIEBjb2Rle25pbH0gYnkgZGVmYXVsdCwgbWVhbmluZyB0aGF0IEVnbG90IGlzIGdl bmVyYWxseSBsZW5pZW50CmFib3V0IG5vbi1jb25mb3JtaW5nIHNlcnZlcnMuICBJZiB5b3UgbmVl ZCB0byBkZWJ1ZyBhIHNlcnZlciwgc2V0IHRoaXMKdG8gQHd7QGNvZGV7KGRpc2FsbG93LW5vbi1z dGFuZGFyZC1rZXlzIGVuZm9yY2UtcmVxdWlyZWQta2V5cyl9fS4KCkB2aW5kZXggZWdsb3Qtc2Vy dmVyLWluaXRpYWxpemVkLWhvb2sKQGl0ZW0gZWdsb3Qtc2VydmVyLWluaXRpYWxpemVkLWhvb2sK QSBob29rIHJ1biBhZnRlciB0aGUgc2VydmVyIG9iamVjdCBpcyBzdWNjZXNzZnVsbHkgaW5pdGlh bGl6ZWQuCgpAdmluZGV4IGVnbG90LWNvbm5lY3QtaG9vawpAaXRlbSBlZ2xvdC1jb25uZWN0LWhv b2sKQSBob29rIHJ1biBhZnRlciBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaXMgc3VjY2Vzc2Z1 bGx5CmVzdGFibGlzaGVkLiAgQHhyZWZ7U3RhcnRpbmcgRWdsb3R9LgoKQGl0ZW0gZWdsb3QtbWFu YWdlZC1tb2RlLWhvb2sKQSBob29rIHJ1biBhZnRlciBFZ2xvdCBzdGFydGVkIG9yIHN0b3BwZWQg bWFuYWdpbmcgYSBidWZmZXIuCkB4cmVme0VnbG90IGFuZCBCdWZmZXJzfSwgZm9yIGRldGFpbHMg b2YgaXRzIHVzYWdlLgoKQHZpbmRleCBlZ2xvdC1zdGF5LW91dC1vZgpAaXRlbSBlZ2xvdC1zdGF5 LW91dC1vZgpUaGlzIHZhcmlhYmxlJ3MgdmFsdWUgbGlzdHMgRW1hY3MgZmVhdHVyZXMgdGhhdCBF Z2xvdCBzaG91bGRuJ3QKYXV0b21hdGljYWxseSB0cnkgdG8gbWFuYWdlIG9uIHRoZSB1c2VyJ3Mg YmVoYWxmLiAgSXQgaXMgdXNlZnVsLCBmb3IKZXhhbXBsZSwgd2hlbiB5b3UgbmVlZCB0byB1c2Ug bm9uLUxTUCBGbHltYWtlIG9yIENvbXBhbnkgYmFjay1lbmRzLgpUbyBoYXZlIEVnbG90IHN0YXkg YXdheSBmcm9tIHNvbWUgRW1hY3MgZmVhdHVyZSwgYWRkIHRoYXQgZmVhdHVyZSdzCnN5bWJvbCBv ciBhIHJlZ2V4cCB0aGF0IHdpbGwgbWF0Y2ggYSBzeW1ib2wncyBuYW1lIHRvIHRoZSBsaXN0OiBm b3IKZXhhbXBsZSwgdGhlIHN5bWJvbCBAY29kZXt4cmVmfSB0byBsZWF2ZSBYcmVmIGFsb25lLCBv ciB0aGUgc3RyaW5nCkBzYW1we2NvbXBhbnl9IHRvIHN0YXkgYXdheSBmcm9tIHlvdXIgQ29tcGFu eSBjdXN0b21pemF0aW9ucy4gIEhlcmUncyBhbgpleGFtcGxlOgoKQGxpc3AKKGFkZC10by1saXN0 ICdlZ2xvdC1zdGF5LW91dC1vZiAnZmx5bWFrZSkKQGVuZCBsaXNwCgpOb3RlIHRoYXQgeW91IGNh biBzdGlsbCBjb25maWd1cmUgdGhlIGV4Y2x1ZGVkIEVtYWNzIGZlYXR1cmVzIG1hbnVhbGx5CnRv IHVzZSBFZ2xvdCBpbiB5b3VyIEBjb2Rle2VnbG90LW1hbmFnZWQtbW9kZS1ob29rfSBvciB2aWEg c29tZSBvdGhlcgptZWNoYW5pc20uCgpAdmluZGV4IGVnbG90LXJlcG9ydC1wcm9ncmVzcwpAY2lu ZGV4IHByb2dyZXNzCkBpdGVtIGVnbG90LXJlcG9ydC1wcm9ncmVzcwpTZXQgdGhpcyB2YXJpYWJs ZSB0byB0cnVlIGlmIHlvdSdkIGxpa2UgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9ucyBjb21pbmcKZnJv bSB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRvIGJlIGhhbmRsZWQgYXMgRW1hY3MncyBwcm9ncmVzcyBy ZXBvcnRpbmcKZmFjaWxpdGllcy4KQGVuZCB0YWJsZQoKQG5vZGUgQWR2YW5jZWQgc2VydmVyIGNv bmZpZ3VyYXRpb24KQGNoYXB0ZXIgQWR2YW5jZWQgc2VydmVyIGNvbmZpZ3VyYXRpb24KClRob3Vn aCBtYW55IGxhbmd1YWdlIHNlcnZlcnMgd29yayB3ZWxsIG91dC1vZi10aGUtYm94LCBtb3N0IGFs bG93CmZpbmUtZ3JhaW5lZCBjb250cm9sIG9mIHRoZWlyIG9wZXJhdGlvbiB2aWEgc3BlY2lmaWMg Y29uZmlndXJhdGlvbgpvcHRpb25zIHRoYXQgYXJlIHRyYW5zbWl0dGVkIG92ZXIgdGhlIExTUCBw cm90b2NvbCBhbmQgdmFyeSBmcm9tCnNlcnZlciB0byBzZXJ2ZXIuICBBIHNtYWxsIG51bWJlciBv ZiBzZXJ2ZXJzIHJlcXVpcmUgc3VjaCBzcGVjaWFsCmNvbmZpZ3VyYXRpb24gdG8gd29yayBhY2Nl cHRhYmx5LCBvciBldmVuIHRvIHdvcmsgYXQgYWxsLgoKQWZ0ZXIgaGF2aW5nIHNldHVwIGEgc2Vy dmVyIGV4ZWN1dGFibGUgcHJvZ3JhbSBpbgpAY29kZXtlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXN9IChA cHhyZWZ7U2V0dGluZyBVcCBMU1AgU2VydmVyc30pIGFuZAplbnN1cmluZyBFZ2xvdCBjYW4gaW52 b2tlIGl0LCB5b3UgbWF5IHdhbnQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygc29tZQpvZiB0aGVzZSBv cHRpb25zLiAgWW91IHNob3VsZCBmaXJzdCBkaXN0aW5ndWlzaCB0d28gbWFpbiBraW5kcyBvZgpz ZXJ2ZXIgY29uZmlndXJhdGlvbjoKCkBpdGVtaXplIEBidWxsZXQKQGl0ZW0KUHJvamVjdC1zcGVj aWZpYywgYXBwbHlpbmcgdG8gYSBzcGVjaWZpYyBwcm9qZWN0OwoKQGl0ZW0KVXNlci1zcGVjaWZp YywgYXBwbHlpbmcgdG8gYWxsIHByb2plY3RzIHRoZSBzZXJ2ZXIgaXMgdXNlZCBmb3IuCkBlbmQg aXRlbWl6ZQoKV2hlbiB5b3UgaGF2ZSBkZWNpZGVkIHdoaWNoIGtpbmQgeW91IG5lZWQsIHRoZSBm b2xsb3dpbmcgc2VjdGlvbnMKdGVhY2ggaG93IEVnbG90J3MgdXNlciB2YXJpYWJsZXMgY2FuIGJl IHVzZWQgdG8gYWNoaWV2ZSBpdDoKCkBtZW51CiogUHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0 aW9uOjoKKiBVc2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb246OgoqIEpTT05SUEMgb2JqZWN0cyBp biBFbGlzcDo6CkBlbmQgbWVudQoKSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IG5vdCBhbGwg c2VydmVycyBhbGxvdyBib3RoIGtpbmRzIG9mCmNvbmZpZ3VyYXRpb24sIG5vciBpcyBpdCBndWFy YW50ZWVkIHRoYXQgdXNlciBvcHRpb25zIGNhbiBiZSBjb3BpZWQKb3ZlciB0byBwcm9qZWN0IG9w dGlvbnMsIGFuZCB2aWNlLXZlcnNhLiAgV2hlbiBpbiBkb3VidCwgY29uc3VsdCB5b3VyCmxhbmd1 YWdlIHNlcnZlcidzIGRvY3VtZW50YXRpb24uCgpJdCdzIGFsc28gd29ydGggbm90aW5nIHRoYXQg c29tZSBsYW5ndWFnZSBzZXJ2ZXJzIGNhbiByZWFkIHRoZXNlCnNldHRpbmdzIGZyb20gY29uZmln dXJhdGlvbiBmaWxlcyBpbiB0aGUgdXNlcidzIEBjb2Rle0hPTUV9IGRpcmVjdG9yeQpvciBpbiBh IHByb2plY3QncyBkaXJlY3RvcnkuICBGb3IgZXhhbXBsZSwgdGhlIEBjb21tYW5ke3B5bHNwfSBQ eXRob24Kc2VydmVyIHJlYWRzIHRoZSBmaWxlIEBmaWxle34vLmNvbmZpZy9weWNvZGVzdHlsZX0g Zm9yIHVzZXIKY29uZmlndXJhdGlvbi4gIFRoZSBAY29tbWFuZHtjbGFuZ2R9IEMvQysrIHNlcnZl ciByZWFkcyBib3RoCkBmaWxle34vLmNvbmZpZy9jbGFuZ2QvY29uZmlnLnlhbWx9IGZvciB1c2Vy IGNvbmZpZ3VyYXRpb24gYW5kCkBmaWxley5jbGFuZ2R9IGZvciBwcm9qZWN0IGNvbmZpZ3VyYXRp b24uICBJdCBtYXkgYmUgYWR2YW50YWdlb3VzIHRvCnVzZSB0aGVzZSBtZWNoYW5pc21zIGluc3Rl YWQgb2YgRWdsb3QncywgYXMgdGhpcyB3aWxsIHByb2JhYmx5IHdvcmsKd2l0aCBvdGhlciBMU1Ag Y2xpZW50cyBhbmQgbWF5IGJlIGVhc2llciB0byBkZWJ1ZyB0aGFuIG9wdGlvbnMgcmlkaW5nCm9u IHRoZSBMU1Agd2lyZS4KCkBub2RlIFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbgpAc2Vj dGlvbiBQcm9qZWN0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24KQHZpbmRleCBlZ2xvdC13b3Jrc3Bh Y2UtY29uZmlndXJhdGlvbgpAY2luZGV4IHdvcmtzcGFjZSBjb25maWd1cmF0aW9uCgpUbyBzZXQg cHJvamVjdC1zcGVjaWZpYyBzZXR0aW5ncywgd2hpY2ggdGhlIExTUCBzcGVjaWZpY2F0aW9uIGNh bGxzCkBkZm57d29ya3NwYWNlIGNvbmZpZ3VyYXRpb259LCB0aGUgdmFyaWFibGUKQGNvZGV7ZWds b3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259IG1heSBiZSB1c2VkLgoKVGhpcyB2YXJpYWJsZSBp cyBhIGRpcmVjdG9yeS1sb2NhbCB2YXJpYWJsZSAoQHB4cmVme0RpcmVjdG9yeQpWYXJpYWJsZXMs ICwgUGVyLWRpcmVjdG9yeSBMb2NhbCBWYXJpYWJsZXMsIGVtYWNzLCBUaGUgR05VIEVtYWNzCk1h bnVhbH0pLiAgSXQncyBpbXBvcnRhbnQgdG8gcmVjb2duaXplIHRoYXQgdGhpcyB2YXJpYWJsZSBy ZWFsbHkgb25seQptYWtlcyBzZW5zZSB3aGVuIHNldCBkaXJlY3RvcnktbG9jYWxseS4gIEl0IHVz dWFsbHkgZG9lcyBub3QgbWFrZQpzZW5zZSB0byBzZXQgaXQgZmlsZS1sb2NhbGx5IG9yIGluIGEg bWFqb3ItbW9kZSBob29rLgoKVGhlIG1vc3QgY29tbW9uIHdheSB0byBzZXQgQGNvZGV7ZWdsb3Qt d29ya3NwYWNlLWNvbmZpZ3VyYXRpb24gfSBpcwp1c2luZyBhIEBmaWxley5kaXItbG9jYWxzLmVs fSBmaWxlIGluIHRoZSByb290IG9mIHlvdXIgcHJvamVjdC4gIElmCnlvdSBjYW4ndCBkbyB0aGF0 LCB5b3UgbWF5IGFsc28gc2V0IGl0IGZyb20gRWxpc3AgY29kZSB2aWEgdGhlCkBjb2Rle2Rpci1s b2NhbHMtc2V0LWNsYXNzLXZhcmlhYmxlc30gZnVuY3Rpb24uICAoQHB4cmVme0RpcmVjdG9yeQpM b2NhbCBWYXJpYWJsZXMsLCwgZWxpc3AsIEdOVSBFbWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9 KS4KCkhvd2V2ZXIgeW91IGNob29zZSB0byBzZXQgaXQsIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlz IGEgcGxpc3QKKEBweHJlZntQcm9wZXJ0eSBMaXN0cywsLCBlbGlzcCwgR05VIEVtYWNzIExpc3Ag UmVmZXJlbmNlIE1hbnVhbH0pIHdpdGgKdGhlIGZvbGxvd2luZyBmb3JtYXQ6CgpAbGlzcAogKEB2 YXJ7OnNlcnZlcjF9IEB2YXJ7cGxpc3QxfSBAdmFyezpzZXJ2ZXIyfSBAdmFye3BsaXN0Mn0gQGRv dHN7fSkKQGVuZCBsaXNwCgpAbm9pbmRlbnQKSGVyZSwgQHZhcns6c2VydmVyMX0gYW5kIEB2YXJ7 OnNlcnZlcjJ9IGFyZSBrZXl3b3JkcyB3aG9zZSBuYW1lcwppZGVudGlmeSB0aGUgTFNQIGxhbmd1 YWdlIHNlcnZlcnMgdG8gdGFyZ2V0LiAgQ29uc3VsdCBzZXJ2ZXIKZG9jdW1lbnRhdGlvbiB0byBm aW5kIG91dCB3aGF0IG5hbWUgdG8gdXNlLiAgQHZhcntwbGlzdDF9IGFuZApAdmFye3BsaXN0Mn0g YXJlIHBsaXN0cyBvZiBvcHRpb25zLCBwb3NzaWJseSBuZXN0aW5nIG90aGVyIHBsaXN0cy4KCkBm aW5kZXggZWdsb3Qtc2hvdy13b3Jrc3BhY2UtY29uZmlndXJhdGlvbgpXaGVuIGV4cGVyaW1lbnRp bmcgd2l0aCB3b3Jrc3BhY2Ugc2V0dGluZ3MsIHlvdSBjYW4gdXNlIHRoZSBjb21tYW5kCkBrYmR7 TS14IGVnbG90LXNob3ctd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259IHRvIGluc3BlY3QgYW5kIGRl YnVnIHRoZQp2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGluIGl0cyBmaW5hbCBKU09OIGZvcm0sIHJl YWR5IHRvIGJlIHNlbnQgdG8gdGhlCnNlcnZlciAoQHB4cmVme0pTT05SUEMgb2JqZWN0cyBpbiBF bGlzcH0pLiAgVGhpcyBoZWxwZXIgY29tbWFuZCB3b3JrcwpldmVuIGJlZm9yZSBhY3R1YWxseSBj b25uZWN0aW5nIHRvIHRoZSBzZXJ2ZXIuCgpUaGVzZSB2YXJpYWJsZSdzIHZhbHVlIGRvZXNuJ3Qg dGFrZSBlZmZlY3QgaW1tZWRpYXRlbHkuICBUaGF0IGhhcHBlbnMKdXBvbiBlc3RhYmxpc2hpbmcg dGhlIGNvbm5lY3Rpb24sIGluIHJlc3BvbnNlIHRvIGFuIGV4cGxpY2l0IHF1ZXJ5CmZyb20gdGhl IHNlcnZlciwgb3Igd2hlbiBpc3N1aW5nIHRoZSBjb21tYW5kIEBrYmR7TS14CmVnbG90LXNpZ25h bC1kaWRDaGFuZ2VDb25maWd1cmF0aW9ufSB3aGljaCBub3RpZmllcyB0aGUgc2VydmVyIGR1cmlu ZwphbiBvbmdvaW5nIEVnbG90IHNlc3Npb24uCgpAc3Vic2VjdGlvbiBFeGFtcGxlcwoKRm9yIHNv bWUgdXNlcnMsIHNldHRpbmcgQGNvZGV7ZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259IGlz IGEKc29tZXdoYXQgZGF1bnRpbmcgdGFzay4gIE9uZSBvZiB0aGUgcmVhc29ucyBpcyBoYXZpbmcg dG8gbWFuYWdlIHRoZQpnZW5lcmFsIEVsaXNwIHN5bnRheCBvZiBwZXItbW9kZSBkaXJlY3Rvcnkt bG9jYWwgdmFyaWFibGVzLCB3aGljaCB1c2VzCmFsaXN0cyAoQHB4cmVme0Fzc29jaWF0aW9uIExp c3RzLCwsIGVsaXNwLCBHTlUgRW1hY3MgTGlzcCBSZWZlcmVuY2UKTWFudWFsfSksIGFuZCB0aGUg c3BlY2lmaWMgc3ludGF4IG9mIEVnbG90J3MgdmFyaWFibGUsIHdoaWNoIHVzZXMKcGxpc3RzLiAg U29tZSBleGFtcGxlcyBhcmUgdXNlZnVsLgoKTGV0J3Mgc2F5IHlvdSB3YW50IHRvIGNvbmZpZ3Vy ZSB0d28gbGFuZ3VhZ2Ugc2VydmVycyB0byBiZSB1c2VkIGluIGEKcHJvamVjdCB3cml0dGVuIGlu IGEgY29tYmluYXRpb24gb2YgdGhlIFB5dGhvbiBhbmQgR28gbGFuZ3VhZ2VzLiAgWW91CndhbnQg dG8gdXNlIHRoZSBAY29tbWFuZHtweWxzcH0gYW5kIEBjb21tYW5ke2dvcGxzfSBsYW5ndWFnZXMK c2VydmVycy4gIEluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBzZXJ2ZXJzIGluIHF1ZXN0aW9u IChvciBpbiBzb21lCm90aGVyIGVkaXRvcidzIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgaW4gc29t ZSBibG9nIGFydGljbGUpLCB5b3UgZmluZAp0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gb3B0 aW9ucyBpbiBpbmZvcm1hbCBkb3R0ZWQtbm90YXRpb24Kc3ludGF4OgoKQGV4YW1wbGUKcHlsc3Au cGx1Z2lucy5qZWRpX2NvbXBsZXRpb24uaW5jbHVkZV9wYXJhbXM6IHRydWUKcHlsc3AucGx1Z2lu cy5qZWRpX2NvbXBsZXRpb24uZnV6enk6IHRydWUKcHlsc3AucHlsaW50LmVuYWJsZWQ6IGZhbHNl CmdvcGxzLnVzZVBsYWNlaG9sZGVyczogdHJ1ZQpAZW5kIGV4YW1wbGUKClRvIGFwcGx5IHRoaXMg dG8gRWdsb3QsIGFuZCBhc3N1bWluZyB5b3UgY2hvc2UgdGhlCkBmaWxley5kaXItbG9jYWxzLmVs fSBmaWxlIG1ldGhvZCwgdGhlIGNvbnRlbnRzIG9mIHRoYXQgZmlsZSBjb3VsZCBiZToKCkBsaXNw CigobmlsCiAgLiAoKGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uCiAgICAgIC4gKDpweWxz cCAoOnBsdWdpbnMgKDpqZWRpX2NvbXBsZXRpb24gKDppbmNsdWRlX3BhcmFtcyB0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdXp6eSB0KQogICAgICAgICAg ICAgICAgICAgICAgICAgICA6cHlsaW50ICg6ZW5hYmxlZCA6anNvbi1mYWxzZSkpKQogICAgICAg ICA6Z29wbHMgKDp1c2VQbGFjZWhvbGRlcnMgdCkpKSkpCiAocHl0aG9uLWJhc2UtbW9kZSAuICgo aW5kZW50LXRhYnMtbW9kZSAuIG5pbCkpKQogKGdvLW1vZGUgICAgICAgICAgLiAoKGluZGVudC10 YWJzLW1vZGUgLiB0KSkpKQpAZW5kIGxpc3AKCkBub2luZGVudApUaGlzIHNldHMgdGhlIHZhbHVl IG9mIEBjb2Rle2VnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9ufSBpbiBhbGwgdGhlCmJ1ZmZl cnMgaW5zaWRlIHRoZSBwcm9qZWN0OyBlYWNoIHNlcnZlciB3aWxsIHVzZSBvbmx5IHRoZSBzZWN0 aW9uIG9mCnRoZSBwYXJhbWV0ZXJzIGludGVuZGVkIGZvciB0aGF0IHNlcnZlciwgYW5kIGlnbm9y ZSB0aGUgcmVzdC4gIE5vdGUKaG93IGFsaXN0cyBhcmUgdXNlZCBmb3IgYXNzb2NpYXRpbmcgRW1h Y3MgbW9kZSBuYW1lcyB3aXRoIGFsaXN0cwphc3NvY2lhdGluZyB2YXJpYWJsZSBuYW1lcyB3aXRo IHZhcmlhYmxlIHZhbHVlcy4gIFRoZW4gbm90aWNlIGhvdwpwbGlzdHMgYXJlIHVzZWQgaW5zaWRl IHRoZSB2YWx1ZSBvZgpAY29kZXtlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbn0uCgpUaGlz IGZvbGxvd2luZyBmb3JtIG1heSBhbHNvIGJlIHVzZWQ6CgpAbGlzcAooKHB5dGhvbi1iYXNlLW1v ZGUKICAuICgoZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgLiAoOnB5bHNwICg6 cGx1Z2lucyAoOmplZGlfY29tcGxldGlvbiAoOmluY2x1ZGVfcGFyYW1zIHQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1enp5IHQpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpweWxpbnQgKDplbmFibGVkIDpqc29uLWZhbHNlKSkpKSkKICAgICAoaW5k ZW50LXRhYnMtbW9kZSAuIG5pbCkpKQogKGdvLW1vZGUKICAuICgoZWdsb3Qtd29ya3NwYWNlLWNv bmZpZ3VyYXRpb24KICAgICAgLiAoOmdvcGxzICg6dXNlUGxhY2Vob2xkZXJzIHQpKSkKICAgICAo aW5kZW50LXRhYnMtbW9kZSAuIHQpKSkpCkBlbmQgbGlzcAoKQG5vaW5kZW50ClRoaXMgc2V0cyB1 cCB0aGUgdmFsdWUgb2YgQGNvZGV7ZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259CnNlcGFy YXRlbHkgZGVwZW5kaW5nIG9uIHRoZSBtYWpvciBtb2RlIG9mIGVhY2ggb2YgdGhhdCBwcm9qZWN0 J3MKYnVmZmVycy4gIEBjb2Rle3B5dGhvbi1iYXNlLW1vZGV9IGJ1ZmZlcnMgd2lsbCBoYXZlIHRo ZSB2YXJpYWJsZSBzZXQgdG8KQGNvZGV7KDpweWxzcCAoOnBsdWdpbnMgLi4uKSl9LiAgQGNvZGV7 Z28tbW9kZX0gYnVmZmVycyB3aWxsIGhhdmUgdGhlCnZhcmlhYmxlIHNldCB0byBAY29kZXsoOmdv cGxzICg6dXNlUGxhY2Vob2xkZXJzIHQpKX0uCgpTb21lIHNlcnZlcnMgd2lsbCBpc3N1ZSB3b3Jr c3BhY2UgY29uZmlndXJhdGlvbiBmb3Igc3BlY2lmaWMgZmlsZXMKaW5zaWRlIHlvdXIgcHJvamVj dC4gIEZvciBleGFtcGxlLCBpZiB5b3Uga25vdyBAY29kZXtnb3Bsc30gaXMgYXNraW5nCmFib3V0 IHNwZWNpZmljIGZpbGVzIGluIHRoZSBAY29kZXtzcmMvaW1wb3J0ZWR9IHN1YmRpcmVjdG9yeSBh bmQgeW91CndhbnQgdG8gc2V0IGEgZGlmZmVyZW50IG9wdGlvbiBmb3IgQGNvZGV7Z29wbHMudXNl UGxhY2Vob2xkZXJzfSAsIHlvdQptYXkgdXNlIHNvbWV0aGluZyBsaWtlOgoKQGxpc3AKKChweXRo b24tYmFzZS1tb2RlCiAgLiAoKGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uCiAgICAgIC4g KDpweWxzcCAoOnBsdWdpbnMgKDpqZWRpX2NvbXBsZXRpb24gKDppbmNsdWRlX3BhcmFtcyB0CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdXp6eSB0KQogICAg ICAgICAgICAgICAgICAgICAgICAgICA6cHlsaW50ICg6ZW5hYmxlZCA6anNvbi1mYWxzZSkpKSkp CiAgICAgKGluZGVudC10YWJzLW1vZGUgbmlsKSkpCiAoZ28tbW9kZQogIC4gKChlZ2xvdC13b3Jr c3BhY2UtY29uZmlndXJhdGlvbgogICAgICAuICg6Z29wbHMgKDp1c2VQbGFjZWhvbGRlcnMgdCkp KQogICAgIChpbmRlbnQtdGFicy1tb2RlIHQpKSkKICgic3JjL2ltcG9ydGVkIgogICAuICgoZWds b3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgLiAoOmdvcGxzICg6dXNlUGxhY2Vob2xk ZXJzIG5pbCkpKSkpKQpAZW5kIGxpc3AKCkZpbmFsbHksIGlmIG9uZSBuZWVkcyB0byBkZXRlcm1p bmUgdGhlIHdvcmtzcGFjZSBjb25maWd1cmF0aW9uIGJhc2VkCm9uIHNvbWUgZHluYW1pYyBjb250 ZXh0LCBAY29kZXtlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbn0gY2FuIGJlCnNldCB0byBh IGZ1bmN0aW9uLiAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZQpAY29kZXtlZ2xvdC1s c3Atc2VydmVyfSBpbnN0YW5jZSBvZiB0aGUgY29ubmVjdGVkIHNlcnZlciAoaWYgYW55KSBhbmQK d2l0aCBAY29kZXtkZWZhdWx0LWRpcmVjdG9yeX0gc2V0IHRvIHRoZSByb290IG9mIHRoZSBwcm9q ZWN0LiAgVGhlCmZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBwbGlzdCBzdWl0YWJsZSBmb3IgdXNl IGFzIHRoZSB2YXJpYWJsZSdzCnZhbHVlLgoKQG5vZGUgVXNlci1zcGVjaWZpYyBjb25maWd1cmF0 aW9uCkBzZWN0aW9uIFVzZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbgpAY2luZGV4IGluaXRpYWxp emF0aW9uT3B0aW9ucwpAY2luZGV4IGNvbW1hbmQtbGluZSBhcmd1bWVudHMKClRoaXMga2luZCBv ZiBjb25maWd1cmF0aW9uIGFwcGxpZXMgdG8gYWxsIHByb2plY3RzIHRoZSBzZXJ2ZXIgaXMgdXNl ZApmb3IuICBIZXJlLCB0aGVyZSBhcmUgYSBudW1iZXIgb2Ygd2F5cyB0byBkbyB0aGlzIGluc2lk ZSBFZ2xvdC4KCkEgY29tbW9uIHdheSBpcyB0byBwYXNzIGNvbW1hbmQtbGluZSBvcHRpb25zIHRv IHRoZSBzZXJ2ZXIgaW52b2NhdGlvbgp2aWEgQGNvZGV7ZWdsb3Qtc2VydmVyLXByb2dyYW1zfS4g IExldCdzIHNheSB3ZSB3YW50IHRvIGNvbmZpZ3VyZQp3aGVyZSB0aGUgQGNvbW1hbmR7Y2xhbmdk fSBzZXJ2ZXIgcmVhZHMgaXRzCkBjb2Rle2NvbXBpbGVfY29tbWFuZHMuanNvbn0gZnJvbS4gIFRo aXMgY2FuIGJlIGRvbmUgbGlrZSBzbzoKCkBsaXNwCih3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZWds b3QKICAoYWRkLXRvLWxpc3QgJ2VnbG90LXNlcnZlci1wcm9ncmFtcwogICAgICAgICAgICAgICBg KGMrKy1tb2RlIC4gKCJjbGFuZ2QiICItLWNvbXBpbGUtY29tbWFuZHMtZGlyPS90bXAiKSkpKQoK QGVuZCBsaXNwCgpAbm9pbmRlbnQKQW5vdGhlciB3YXkgaXMgdG8gaGF2ZSBFZ2xvdCBwYXNzIGEg SlNPTiBvYmplY3QgdG8gdGhlIHNlcnZlciBkdXJpbmcKdGhlIExTUCBoYW5kc2hha2UuICBUaGlz IGlzIGRvbmUgdXNpbmcgdGhlCkBjb2Rlezppbml0aWFsaXphdGlvbk9wdGlvbnN9IHN5bnRheCBv ZiBAY29kZXtlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXN9OgoKQGxpc3AKKHdpdGgtZXZhbC1hZnRlci1s b2FkICdlZ2xvdAogIChhZGQtdG8tbGlzdCAnZWdsb3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAg ICAgICAgIGAoYysrLW1vZGUgLiAoImNsYW5nZCIgOmluaXRpYWxpemF0aW9uT3B0aW9ucwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6Y29tcGlsYXRpb25EYXRhYmFzZVBh dGggIi90bXAiKSkpKSkKQGVuZCBsaXNwCgpAbm9pbmRlbnQKVGhlIGFyZ3VtZW50IEBjb2Rleyg6 Y29tcGlsYXRpb25EYXRhYmFzZVBhdGggIi90bXAiKX0gaXMgRW1hY3MncwpyZXByZXNlbnRhdGlv biBpbiBwbGlzdCBmb3JtYXQgb2YgYSBzaW1wbGUgSlNPTiBvYmplY3QKQGNvZGV7QHsiY29tcGls YXRpb25EYXRhYmFzZVBhdGgiOiAiL3RtcCJAfX0uICBUbyBsZWFybiBob3cgdG8KcmVwcmVzZW50 IG1vcmUgZGVlcGx5IG5lc3RlZCBvcHRpb25zIGluIHRoaXMgZm9ybWF0LCBAcHhyZWZ7SlNPTlJQ QwpvYmplY3RzIGluIEVsaXNwfS4KCkluIHRoaXMgY2FzZSwgdGhlIHR3byBleGFtcGxlcyBhY2hp ZXZlIGV4YWN0bHkgdGhlIHNhbWUsIGJ1dCBub3RpY2UKaG93IHRoZSBvcHRpb24ncyBuYW1lIGhh cyBjaGFuZ2VkIGJldHdlZW4gdGhlbS4KCkB2aW5kZXggZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3Vy YXRpb24KRmluYWxseSB0aGVyZSBpcyBhbm90aGVyIHdheSB0byBkbyB1c2VyLXNwZWNpZmljIGNv bmZpZ3VyYXRpb24gb2YKbGFuZ3VhZ2Ugc2VydmVycywgd2hpY2ggbWF5IGJlIHVzZWQgaWYgdGhl IG1ldGhvZHMgYWJvdmUgYXJlIG5vdApzdXBwb3J0ZWQuICBJdCBjb25zaXN0cyBvZiBAZW1waHtn bG9iYWxseX0gc2V0dGluZwpAY29kZXtlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbn0sIGEg dmFyaWFibGUgb3JpZ2luYWxseSBpbnRlbmRlZApmb3IgcHJvamVjdC1zcGVjaWZpYyBjb25maWd1 cmF0aW9uLiAgVGhpcyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCmdpdmluZyBhbGwgeW91ciBwcm9q ZWN0cyBhIGNlcnRhaW4gZGVmYXVsdCBjb25maWd1cmF0aW9uLCBhcyBkZXNjcmliZWQKaW4gQHJl ZntQcm9qZWN0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb259LiAgSGVyZSBpcyBhbiBleGFtcGxlOgoK QGxpc3AKKHNldHEtZGVmYXVsdCBlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbgogICAgICAg ICAgICAgICcoOnB5bHNwICg6cGx1Z2lucyAoOmplZGlfY29tcGxldGlvbiAoOmluY2x1ZGVfcGFy YW1zIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDpmdXp6eSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnB5bGludCAoOmVu YWJsZWQgOmpzb24tZmFsc2UpKSkKICAgICAgICAgICAgICAgIDpnb3BscyAoOnVzZVBsYWNlaG9s ZGVycyB0KSkpCkBlbmQgbGlzcAoKTm90ZSB0aGF0IHRoZSBnbG9iYWwgdmFsdWUgb2YgQGNvZGV7 ZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259IGlzCmFsd2F5cyBvdmVycmlkZGVuIGlmIGEg ZGlyZWN0b3J5LWxvY2FsIHZhbHVlIGlzIGRldGVjdGVkLgoKQG5vZGUgSlNPTlJQQyBvYmplY3Rz IGluIEVsaXNwCkBzZWN0aW9uIEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcAoKRW1hY3MncyBwcmVm ZXJyZWQgd2F5IG9mIHJlcHJlc2VudGluZyBKU09OIGlzIHZpYSBMaXNwIGxpc3RzLiAgSW4KRWds b3QsIHRoZSBzeW50YXggb2YgdGhpcyBsaXN0IGlzIHRoZSBzaW1wbGVzdCBwb3NzaWJsZSAodGhl IG9uZSB3aXRoCmZld2VyIHBhcmVudGhlc2lzKSwgYSBwbGlzdCAoQHB4cmVme1Byb3BlcnR5IExp c3RzLCwsIGVsaXNwLCBHTlUgRW1hY3MKTGlzcCBSZWZlcmVuY2UgTWFudWFsfSkuCgpUaGUgcGxp c3QgbWF5IGJlIGFyYml0cmFyaWx5IGNvbXBsZXgsIGFuZCBnZW5lcmFsbHkgY29udGFpbmluZyBv dGhlcgprZXl3b3JkLXZhbHVlIHByb3BlcnR5IHN1Yi1wbGlzdHMgY29ycmVzcG9uZGluZyB0byBK U09OIHN1Yi1vYmplY3RzLgoKRm9yIHJlcHJlc2VudGluZyB0aGUgSlNPTiBsZWFmIHZhbHVlcyBA Y29kZXt0cnVlfSwgQGNvZGV7ZmFsc2V9LApAY29kZXtudWxsfSBhbmQgQGNvZGV7QHtAfX0sIHlv dSBjYW4gdXNlIHRoZSBMaXNwIHZhbHVlcyBAY29kZXt0fSwKQGNvZGV7Ompzb24tZmFsc2V9LCBA Y29kZXtuaWx9LCBhbmQgQGNvZGV7ZWdsb3QtQHtAfX0sIHJlc3BlY3RpdmVseS4KSlNPTiBhcnJh eXMgYXJlIHJlcHJlc2VudGVkIGFzIEVsaXNwIHZlY3RvcnMgc3Vycm91bmRlZCBieSBzcXVhcmUg YnJhY2tldHMKKEBweHJlZntWZWN0b3JzLCwsZWxpc3AsR05VIEVtYWNzIExpc3AgUmVmZXJlbmNl IE1hbnVhbH0pLgoKRm9yIGV4YW1wbGUsIHRoZSBwbGlzdAoKQGxpc3AKKDpweWxzcCAoOnBsdWdp bnMgKDpqZWRpX2NvbXBsZXRpb24gKDppbmNsdWRlX3BhcmFtcyB0CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6ZnV6enkgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOmNhY2hlX2ZvciBbInBhbmRhcyIgIm51bXB5Il0pCiAgICAgICAgICAgICAgICAg ICA6cHlsaW50ICg6ZW5hYmxlZCA6anNvbi1mYWxzZSkpKQogOmdvcGxzICg6dXNlUGxhY2Vob2xk ZXJzIHQpKQpAZW5kIGxpc3AKCkBub2luZGVudAppcyBzZXJpYWxpemVkIGJ5IEVnbG90IHRvIHRo ZSBmb2xsb3dpbmcgSlNPTiB0ZXh0OgoKQGV4YW1wbGUKQHsKICAicHlsc3AiOiBAewogICAgInBs dWdpbnMiOiBAewogICAgICAiamVkaV9jb21wbGV0aW9uIjogQHsKICAgICAgICAiaW5jbHVkZV9w YXJhbXMiOiB0cnVlLAogICAgICAgICJmdXp6eSI6IHRydWUsCiAgICAgICAgImNhY2hlX2ZvciI6 IFsgInBhbmRhcyIsICJudW1weSIgXQogICAgICBAfSwKICAgICAgInB5bGludCI6IEB7CiAgICAg ICAgImVuYWJsZWQiOiBmYWxzZQogICAgICBAfQogICAgQH0KICBAfSwKICAiZ29wbHMiOiBAewog ICAgInVzZVBsYWNlaG9sZGVycyI6IHRydWUKICBAfQpAfQpAZW5kIGV4YW1wbGUKCkBub2RlIEV4 dGVuZGluZyBFZ2xvdApAY2hhcHRlciBFeHRlbmRpbmcgRWdsb3QKClNvbWV0aW1lcyBpdCBtYXkg YmUgdXNlZnVsIHRvIGV4dGVuZCBleGlzdGluZyBFZ2xvdCBmdW5jdGlvbmFsaXR5CnVzaW5nIEVs aXNwIGl0cyBwdWJsaWMgbWV0aG9kcy4gIEEgZ29vZCBleGFtcGxlIG9mIHdoZW4gdGhpcyBuZWVk IG1heQphcmlzZSBpcyBhZGRpbmcgc3VwcG9ydCBmb3IgYSBjdXN0b20gTFNQIHByb3RvY29sIGV4 dGVuc2lvbiBvbmx5CmltcGxlbWVudGVkIGJ5IGEgc3BlY2lmaWMgc2VydmVyLgoKVGhlIGJlc3Qg c291cmNlIG9mIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgaXMgcHJvYmFibHkgRWdsb3Qgc291cmNl CmNvZGUgaXRzZWxmLCBwYXJ0aWN1bGFybHkgdGhlIHNlY3Rpb24gbWFya2VkIGBgQVBJJycuCgpN b3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIHdpdGggQ29tbW9uLUxpc3Ag c3R5bGUKZ2VuZXJpYyBmdW5jdGlvbnMgKEBweHJlZntHZW5lcmljcywsLGVpZWlvLEVJRUlPfSkg dGhhdCBjYW4gYmUgZWFzaWx5CmV4dGVuZGVkIG9yIG92ZXJyaWRkZW4uICBUaGUgRWdsb3QgY29k ZSBpdHNlbGYgaXMgYW4gZXhhbXBsZSBvbiBob3cgdG8KZG8gdGhpcy4KClRoZSBmb2xsb3dpbmcg aXMgYSByZWxhdGl2ZWx5IHNpbXBsZSBleGFtcGxlIHRoYXQgYWRkcyBzdXBwb3J0IGZvciB0aGUK QGNvZGV7aW5hY3RpdmVSZWdpb25zfSBleHBlcmltZW50YWwgZmVhdHVyZSBpbnRyb2R1Y2VkIGlu IHZlcnNpb24gMTcKb2YgdGhlIEBjb21tYW5ke2NsYW5nZH0gQy9DKysgbGFuZ3VhZ2Ugc2VydmVy KysuCgpTdW1tYXJpbHksIHRoZSBmZWF0dXJlIHdvcmtzIGJ5IGZpcnN0IGhhdmluZyB0aGUgc2Vy dmVyIGRldGVjdCB0aGUKRWdsb3QncyBhZHZlcnRpc2VtZW50IG9mIHRoZSBAY29kZXtpbmFjdGl2 ZVJlZ2lvbnN9IGNsaWVudCBjYXBhYmlsaXR5CmR1cmluZyBzdGFydHVwLCB3aGVyZXVwb24gdGhl IGxhbmd1YWdlIHNlcnZlciB3aWxsIHJlcG9ydCBhIGxpc3Qgb2YKcmVnaW9ucyBvZiBpbmFjdGl2 ZSBjb2RlIGZvciBlYWNoIGJ1ZmZlci4gIFRoaXMgaXMgdXN1YWxseSBjb2RlCnN1cnJvdW5kZWQg YnkgQy9DKysgQGNvZGV7I2lmZGVmfSBtYWNyb3MgdGhhdCB0aGUgcHJlcHJvY2Vzc29yIHJlbW92 ZXMKYmFzZWQgb24gY29tcGlsZS10aW1lIGluZm9ybWF0aW9uLgoKVGhlIGxhbmd1YWdlIHNlcnZl ciByZXBvcnRzIHRoZSByZWdpb25zIGJ5IHBlcmlvZGljYWxseSBzZW5kaW5nIGEKQGNvZGV7dGV4 dERvY3VtZW50L2luYWN0aXZlUmVnaW9uc30gbm90aWZpY2F0aW9uIGZvciBlYWNoIG1hbmFnZWQK YnVmZmVyIChAcHhyZWZ7RWdsb3QgYW5kIEJ1ZmZlcnN9KS4gTm9ybWFsbHksIHVua25vd24gc2Vy dmVyCm5vdGlmaWNhdGlvbnMgYXJlIGlnbm9yZWQgYnkgRWdsb3QsIGJ1dCB3ZSdyZSBnb2luZyBj aGFuZ2UgdGhhdC4KCkJvdGggdGhlIGFubm91bmNlbWVudCBvZiB0aGUgY2xpZW50IGNhcGFiaWxp dHkgYW5kIHRoZSBoYW5kbGluZyBvZiB0aGUKbmV3IG5vdGlmaWNhdGlvbiBpcyBkb25lIGJ5IGFk ZGluZyBtZXRob2RzIHRvIGdlbmVyaWMgZnVuY3Rpb25zLgoKQGl0ZW1pemUgQGJ1bGxldApAaXRl bQpUaGUgZmlyc3QgbWV0aG9kIGV4dGVuZHMgQGNvZGV7ZWdsb3QtY2xpZW50LWNhcGFiaWxpdGll c30gdXNpbmcgYQpzaW1wbGUgaGV1cmlzdGljIHRvIGRldGVjdCBpZiBjdXJyZW50IHNlcnZlciBp cyBAY29tbWFuZHtjbGFuZ2R9IGFuZAplbmFibGVzIHRoZSBAY29kZXtpbmFjdGl2ZVJlZ2lvbn0g Y2FwYWJpbGl0eS4KCkBsaXNwCihjbC1kZWZtZXRob2QgZWdsb3QtY2xpZW50LWNhcGFiaWxpdGll cyA6YXJvdW5kIChzZXJ2ZXIpCiAgKGxldCAoKGJhc2UgKGNsLWNhbGwtbmV4dC1tZXRob2QpKSkK ICAgICh3aGVuIChjbC1maW5kICJjbGFuZ2QiIChwcm9jZXNzLWNvbW1hbmQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGpzb25ycGMtLXByb2Nlc3Mgc2VydmVyKSkKICAgICAgICAgICAg ICAgICAgIDp0ZXN0ICMnc3RyaW5nLW1hdGNoKQogICAgICAoc2V0ZiAoY2wtZ2V0ZiAoY2wtZ2V0 ZiBiYXNlIDp0ZXh0RG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIDppbmFjdGl2ZVJlZ2lv bnNDYXBhYmlsaXRpZXMpCiAgICAgICAgICAgICcoOmluYWN0aXZlUmVnaW9ucyB0KSkpCiAgICBi YXNlKSkKQGVuZCBsaXNwCgpOb3RpY2Ugd2UgdXNlIGFuIGludGVybmFsIGZ1bmN0aW9uIG9mIHRo ZSBAY29kZXtqc29ucnBjLmVsfSBsaWJyYXJ5LAphbmQgYSByZWdleHAgc2VhcmNoIHRvIGRldGVj dCBAY29tbWFuZHtjbGFuZ2R9LiAgQW4gYWx0ZXJuYXRpdmUgd291bGQKYmUgdG8gZGVmaW5lIGEg bmV3IEVJRUlPIHN1YmNsYXNzIG9mIEBjb2Rle2VnbG90LWxzcC1zZXJ2ZXJ9LCBtYXliZQpjYWxs ZWQgQGNvZGV7ZWdsb3QtY2xhbmdkfSwgc28gdGhhdCB0aGUgbWV0aG9kIHdvdWxkIGJlIHNpbXBs aWZpZWQ6CgpAbGlzcAooY2wtZGVmbWV0aG9kIGVnbG90LWNsaWVudC1jYXBhYmlsaXRpZXMgOmFy b3VuZCAoKF9zIGVnbG90LWNsYW5nZCkpCiAgKGxldCAoKGJhc2UgKGNsLWNhbGwtbmV4dC1tZXRo b2QpKSkKICAgIChzZXRmIChjbC1nZXRmIChjbC1nZXRmIGJhc2UgOnRleHREb2N1bWVudCkKICAg ICAgICAgICAgICAgICAgICAgOmluYWN0aXZlUmVnaW9uc0NhcGFiaWxpdGllcykKICAgICAgICAg ICAgJyg6aW5hY3RpdmVSZWdpb25zIHQpKSkpCkBlbmQgbGlzcAoKSG93ZXZlciwgdGhpcyB3b3Vs ZCByZXF1aXJlIHRoYXQgdXNlcnMgdHdlYWsKQGNvZGV7ZWdsb3Qtc2VydmVyLXByb2dyYW19IHRv IHRlbGwgRWdsb3QgaW5zdGFudGlhdGUgc3VjaCBzdWItY2xhc3NlcwppbnN0ZWFkIG9mIHRoZSBn ZW5lcmljIEBjb2Rle2VnbG90LWxzcC1zZXJ2ZXJ9IChAcHhyZWZ7U2V0dGluZyBVcCBMU1AKU2Vy dmVyc30pLiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgcGFydGljdWxhciBkZW1vbnN0cmF0aW9u LCB3ZSdyZQpnb2luZyB0byB1c2UgdGhlIG1vcmUgaGFja3kgcmVnZXhwIHJvdXRlIHdoaWNoIGRv ZXNuJ3QgcmVxdWlyZSB0aGF0LgoKTm90ZSwgaG93ZXZlciwgdGhhdCBkZXRlY3Rpbmcgc2VydmVy IHZlcnNpb25zIGJlZm9yZSBhbm5vdW5jaW5nIG5ldwpjYXBhYmlsaXRpZXMgaXMgZ2VuZXJhbGx5 IG5vdCBuZWVkZWQsIGFzIGJvdGggc2VydmVyIGFuZCBjbGllbnQgYXJlCnJlcXVpcmVkIGJ5IExT UCB0byBpZ25vcmUgdW5rbm93biBjYXBhYmlsaXRpZXMgYWR2ZXJ0aXNlZCBieSB0aGVpcgpjb3Vu dGVycGFydHMuCgpAaXRlbQpUaGUgc2Vjb25kIG1ldGhvZCBpbXBsZW1lbnRzIEBjb2Rle2VnbG90 LWhhbmRsZS1ub3RpZmljYXRpb259IHRvCnByb2Nlc3MgdGhlIHNlcnZlciBub3RpZmljYXRpb24g Zm9yIHRoZSBMU1AgbWV0aG9kCkBjb2Rle3RleHREb2N1bWVudC9pbmFjdGl2ZVJlZ2lvbnN9LiAg Rm9yIGVhY2ggcmVnaW9uIHJlY2VpdmVkIGl0CmNyZWF0ZXMgYW4gb3ZlcmxheSBhcHBseWluZyB0 aGUgQGNvZGV7c2hhZG93fSBmYWNlIHRvIHRoZSByZWdpb24uCk92ZXJsYXlzIGFyZSByZWNyZWF0 ZWQgZXZlcnkgdGltZSBhIG5ldyBub3RpZmljYXRpb24gb2YgdGhpcyBraW5kIGlzCnJlY2VpdmVk LgoKVG8gbGVhcm4gYWJvdXQgaG93IEBjb21tYW5ke2NsYW5nZH0ncyBzcGVjaWFsIEpTT05SUEMg bm90aWZpY2F0aW9uCm1lc3NhZ2UgaXMgc3RydWN0dXJlZCBpbiBkZXRhaWwgeW91IGNvdWxkIGNv bnN1bHQgdGhhdCBzZXJ2ZXIncwpkb2N1bWVudGF0aW9uLiAgQW5vdGhlciBwb3NzaWJpbGl0eSBp cyB0byBldmFsdWF0ZSB0aGUgZmlyc3QKY2FwYWJpbGl0eS1hbm5vdW5jaW5nIG1ldGhvZCwgcmVj b25uZWN0IHRvIHRoZSBzZXJ2ZXIgYW5kIHBlZWsgaW4gdGhlCmV2ZW50cyBidWZmZXIgKEBweHJl ZntFZ2xvdCBDb21tYW5kcywgZWdsb3QtZXZlbnRzLWJ1ZmZlcn0pLiAgWW91CmNvdWxkIGZpbmQg c29tZXRoaW5nIGxpa2U6CgpAbGlzcApbc2VydmVyLW5vdGlmaWNhdGlvbl0gTW9uIFNlcCAgNCAw MToxMDowNCAyMDIzOgooOmpzb25ycGMgIjIuMCIgOm1ldGhvZCAidGV4dERvY3VtZW50L2luYWN0 aXZlUmVnaW9ucyIgOnBhcmFtcwogICAgICAgICAgKDp0ZXh0RG9jdW1lbnQKICAgICAgICAgICAo OnVyaSAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuY3BwIikKICAgICAgICAgICA6cmVnaW9ucwogICAg ICAgICAgIFsoOnN0YXJ0ICg6Y2hhcmFjdGVyIDAgOmxpbmUgMTgpCiAgICAgICAgICAgICA6ZW5k ICg6Y2hhcmFjdGVyIDU4IDpsaW5lIDE5KSkKICAgICAgICAgICAgKDpzdGFydCAoOmNoYXJhY3Rl ciAwIDpsaW5lIDM2KQogICAgICAgICAgICAgOmVuZCAoOmNoYXJhY3RlciAxIDpsaW5lIDM4KSld KSkKQGVuZCBsaXNwCgpUaGlzIHJldmVhbHMgdGhhdCB0aGUgQGNvZGV7dGV4dERvY3VtZW50L2lu YWN0aXZlUmVnaW9uc30gbm90aWZpY2F0aW9uCmNvbnRhaW5zIGEgQGNvZGV7OnRleHREb2N1bWVu dH0gcHJvcGVydHkgdG8gZGVzaWduYXRlIHRoZSBtYW5hZ2VkCmJ1ZmZlciBhbmQgYW4gYXJyYXkg b2YgTFNQIHJlZ2lvbnMgdW5kZXIgdGhlIEBjb2RlezpyZWdpb25zfSBwcm9wZXJ0eS4KTm90aWNl IGhvdyB0aGUgbWVzc2FnZSAob3JpZ2luYWxseSBpbiBKU09OIGZvcm1hdCksIGlzIHJlcHJlc2Vu dGVkIGFzCkVsaXNwIHBsaXN0cyAoQHB4cmVme0pTT05SUEMgb2JqZWN0cyBpbiBFbGlzcH0pLgoK VGhlIEVnbG90IGdlbmVyaWMgZnVuY3Rpb24gbWFjaGluZXJ5IHdpbGwgYXV0b21hdGljYWxseSBk ZXN0cnVjdHVyZQp0aGUgaW5jb21pbmcgbWVzc2FnZSwgc28gdGhlc2UgdHdvIHByb3BlcnRpZXMg Y2FuIHNpbXBseSBiZSBhZGRlZCB0bwp0aGUgbmV3IG1ldGhvZCdzIGxhbWJkYSBsaXN0IGFzIEBj b2RleyZrZXl9IGFyZ3VtZW50cy4gIEFsc28sIHRoZQpAY29kZXtlZ2xvdC11cmktdG8tcGF0aH0g YW5kIEBjb2Rle2VnbG90LXJhbmdlLXJlZ2lvbn0gbWF5IGJlIHVzZWQgdG8KZWFzaWx5IHBhcnNl IHRoZSBMU1AgQGNvZGV7OnVyaX0gYW5kIEBjb2RlezpzdGFydCAuLi4gOmVuZCAuLi59Cm9iamVj dHMgdG8gb2J0YWluIEVtYWNzIG9iamVjdHMgZm9yIGZpbGUgbmFtZXMgYW5kIHBvc2l0aW9ucy4K ClRoZSByZW1haW5kZXIgb2YgdGhlIGltcGxlbWVudGF0aW9uIGNvbnNpc3RzIG9mIHN0YW5kYXJk IEVsaXNwCnRlY2huaXF1ZXMgdG8gbG9vcCBvdmVyIGFycmF5cywgbWFuYWdlIGJ1ZmZlcnMgYW5k IG92ZXJsYXlzLgoKQGxpc3AKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtbm90aWZpY2F0aW9u CiAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB0ZXh0RG9jdW1lbnQvaW5hY3RpdmVSZWdpb25zKSkK ICAgICAgICAgICAma2V5IHJlZ2lvbnMgdGV4dERvY3VtZW50ICZhbGxvdy1vdGhlci1rZXlzKQog IChpZi1sZXQqICgocGF0aCAoZXhwYW5kLWZpbGUtbmFtZSAoZWdsb3QtdXJpLXRvLXBhdGgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1nZXRmIHRleHREb2N1bWVudCA6 dXJpKSkpKQogICAgICAgICAgICAoYnVmZmVyIChmaW5kLWJ1ZmZlci12aXNpdGluZyBwYXRoKSkp CiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgogICAgICAgIChyZW1vdmUtb3Zlcmxh eXMgbmlsIG5pbCAnaW5hY3RpdmUtY29kZSB0KQogICAgICAgIChjbC1sb29wCiAgICAgICAgIGZv ciByIGFjcm9zcyByZWdpb25zCiAgICAgICAgIGZvciAoYmVnIC4gZW5kKSA9IChlZ2xvdC1yYW5n ZS1yZWdpb24gcikKICAgICAgICAgZm9yIG92ID0gKG1ha2Utb3ZlcmxheSBiZWcgZW5kKQogICAg ICAgICBkbwogICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2ZhY2UgJ3NoYWRvdykKICAgICAgICAg KG92ZXJsYXktcHV0IG92ICdpbmFjdGl2ZS1jb2RlIHQpKSkpKQpAZW5kIGxpc3AKCkBlbmQgaXRl bWl6ZQoKQWZ0ZXIgZXZhbHVhdGluZyB0aGVzZSB0d28gYWRkaXRpb25zIGFuZCByZWNvbm5lY3Rp bmcgdG8gdGhlCkBjb21tYW5ke2NsYW5nZH0gbGFuZ3VhZ2Ugc2VydmVyICh2ZXJzaW9uIDE3KSwg dGhlIHJlc3VsdCB3aWxsIGJlIHRoYXQKYWxsIHRoZSBpbmFjdGl2ZSBjb2RlIGluIHRoZSBidWZm ZXIgd2lsbCBiZSBuaWNlbHkgZ3JheWVkIG91dCB1c2luZwp0aGUgTFNQIHNlcnZlciBrbm93bGVk Z2UgYWJvdXQgY3VycmVudCBjb21waWxlIHRpbWUgcHJlcHJvY2Vzc29yCmRlZmluZXMuCgpAbm9k ZSBUcm91Ymxlc2hvb3RpbmcgRWdsb3QKQGNoYXB0ZXIgVHJvdWJsZXNob290aW5nIEVnbG90CkBj aW5kZXggdHJvdWJsZXNob290aW5nIEVnbG90CgpUaGlzIGNoYXB0ZXIgZG9jdW1lbnRzIGNvbW1h bmRzIGFuZCB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgdXNlZCB0bwp0cm91Ymxlc2hvb3QgRWdsb3Qg cHJvYmxlbXMuICBJdCBhbHNvIHByb3ZpZGVzIGd1aWRlbGluZXMgZm9yCnJlcG9ydGluZyBFZ2xv dCBidWdzIGluIGEgd2F5IHRoYXQgZmFjaWxpdGF0ZXMgdGhlaXIgcmVzb2x1dGlvbi4KCldoZW4g eW91IGVuY291bnRlciBwcm9ibGVtcyB3aXRoIEVnbG90LCB0cnkgZmlyc3QgdXNpbmcgdGhlIGNv bW1hbmRzCkBrYmR7TS14IGVnbG90LWV2ZW50cy1idWZmZXJ9IGFuZCBAa2Jke00teCBlZ2xvdC1z dGRlcnItYnVmZmVyfS4gIFRoZXkKcG9wIHVwIHNwZWNpYWwgYnVmZmVycyB0aGF0IGNhbiBiZSB1 c2VkIHRvIGluc3BlY3QgdGhlIGNvbW11bmljYXRpb25zCmJldHdlZW4gdGhlIEVnbG90IGFuZCBs YW5ndWFnZSBzZXJ2ZXIuICBJbiBtYW55IGNhc2VzLCB0aGlzIHdpbGwKaW5kaWNhdGUgdGhlIHBy b2JsZW1zIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSBoaW50LgoKQG1lbnUKKiBQZXJmb3JtYW5jZTo6 CiogR2V0dGluZyB0aGUgbGF0ZXN0IHZlcnNpb246OgoqIFJlcG9ydGluZyBidWdzOjoKQGVuZCBt ZW51CgpAbm9kZSBQZXJmb3JtYW5jZQpAc2VjdGlvbiBQZXJmb3JtYW5jZQpAY2luZGV4IHBlcmZv cm1hbmNlIHByb2JsZW1zLCB3aXRoIEVnbG90CkEgY29tbW9uIGFuZCBlYXN5LXRvLWZpeCBjYXVz ZSBvZiBwZXJmb3JtYW5jZSBwcm9ibGVtcyBpbiBFZ2xvdAooZXNwZWNpYWxseSBpbiBvbGRlciB2 ZXJzaW9ucykgaXMgaXRzIGV2ZW50cyBidWZmZXIsIHNpbmNlIGl0CnJlcHJlc2VudHMgYWRkaXRp b25hbCB3b3JrIHRoYXQgRWdsb3QgbXVzdCBkbyAoQHB4cmVme0VnbG90IENvbW1hbmRzLAplZ2xv dC1ldmVudHMtYnVmZmVyfSkuICBJZiB5b3UgZmluZCBFZ2xvdCBpcyBvcGVyYXRpbmcgY29ycmVj dGx5IGJ1dApzbG93bHksIHRyeSB0byBjdXN0b21pemUgdGhlIHZhcmlhYmxlCkBjb2Rle2VnbG90 LWV2ZW50cy1idWZmZXItY29uZmlnfSAoQHB4cmVme0VnbG90IFZhcmlhYmxlc30pIGFuZCBzZXQK aXRzIEBjb2RlezpzaXplfSBwcm9wZXJ0eSB0byAwLiAgVGhpcyB3aWxsIGRpc2FibGUgcmVjb3Jk aW5nIGFueQpldmVudHMgYW5kIG1heSBzcGVlZCB0aGluZ3MgdXAuCgpJbiBvdGhlciBzaXR1YXRp b25zLCB0aGUgY2F1c2Ugb2YgcG9vciBwZXJmb3JtYW5jZSBsaWVzIGluIHRoZQpsYW5ndWFnZSBz ZXJ2ZXIgaXRzZWxmLiAgU2VydmVycyB1c2UgYWdncmVzc2l2ZSBjYWNoaW5nIGFuZCBvdGhlcgp0 ZWNobmlxdWVzIHRvIGltcHJvdmUgdGhlaXIgcGVyZm9ybWFuY2UuICBPZnRlbiwgdGhpcyBjYW4g YmUgdHdlYWtlZApieSBjaGFuZ2luZyB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gKEBweHJlZntB ZHZhbmNlZCBzZXJ2ZXIKY29uZmlndXJhdGlvbn0pLgoKQG5vZGUgR2V0dGluZyB0aGUgbGF0ZXN0 IHZlcnNpb24KQHNlY3Rpb24gR2V0dGluZyB0aGUgbGF0ZXN0IHZlcnNpb24KQGNpbmRleCB1cGdy YWRpbmcgRWdsb3QKClRvIGluc3RhbGwgdGhlIGxhdGVzdCBFZ2xvdCBpbiBhbiBFbWFjcyB2ZXJz aW9uIHRoYXQgZG9lcyBub3QgYnVuZGxlCkVnbG90LCB1c2UgQGtiZHtNLXggcGFja2FnZS1pbnN0 YWxsfS4KCk9mdGVuLCBhIG5ld2VyIEVnbG90IHZlcnNpb24gZXhpc3RzIHRoYXQgaGFzIGZpeGVk IGEgbG9uZ3N0YW5kaW5nIGJ1ZywKaGFzIG1vcmUgTFNQIGZlYXR1cmVzLCBvciBqdXN0IGJldHRl ciBzdXBwb3J0cyBhIHBhcnRpY3VsYXIgbGFuZ3VhZ2UKc2VydmVyLiAgUmVjZW50IEVnbG90IHZl cnNpb25zIGNhbiBzZWxmLXVwZGF0ZSB2aWEgdGhlIGNvbW1hbmQKQGtiZHtNLXggZWdsb3QtdXBn cmFkZS1lZ2xvdH0uICBUaGlzIHdpbGwgcmVwbGFjZSBhbnkgY3VycmVudGx5Cmluc3RhbGxlZCB2 ZXJzaW9uIHdpdGggdGhlIG5ld2VzdCBvbmUgYXZhaWxhYmxlIGZyb20gdGhlIEVMUEEgYXJjaGl2 ZXMKY29uZmlndXJlZCBpbiBAY29kZXtwYWNrYWdlLWFyY2hpdmVzfS4KCllvdSBjYW4gYWxzbyB1 cGRhdGUgRWdsb3QgdGhyb3VnaCBvdGhlciBtZXRob2RzLCBzdWNoIGFzCkBjb2Rle3VzZS1wYWNr YWdlfSAoQHB4cmVme0luc3RhbGxpbmcgcGFja2FnZXMsLCwgdXNlLXBhY2thZ2UsCnVzZS1wYWNr YWdlIFVzZXIgTWFudWFsfSksIEBjb2Rle3BhY2thZ2UtaW5zdGFsbH0sCkBjb2Rle2xpc3QtcGFj a2FnZXN9IG9yIHRoZSBuZXdlciBAY29kZXtwYWNrYWdlLXVwZ3JhZGV9CihAcHhyZWZ7UGFja2Fn ZXMsLCwgZW1hY3MsIEdOVSBFbWFjcyBNYW51YWx9KS4gIEhvd2V2ZXIsIGRvIHJlYWQgdGhlCmRv Y3N0cmluZ3Mgb2YgdGhlIGNvbW1hbmQgeW91IGludGVuZCB0byB1c2UgYmVmb3JlIHlvdSB1c2Ug aXQsIGFzIHNvbWUKb2YgdGhlbSBtYXkgbm90IHdvcmsgaW4gZXhhY3RseSB0aGUgc2FtZSB3YXkg YWNyb3NzIEVtYWNzIHZlcnNpb25zLAptZWFuaW5nIHlvdXIgY29uZmlndXJhdGlvbiBtYXkgYmUg bm90IHBvcnRhYmxlLgoKQG5vZGUgUmVwb3J0aW5nIGJ1Z3MKQHNlY3Rpb24gUmVwb3J0aW5nIGJ1 Z3MKQGNpbmRleCBidWcgcmVwb3J0cwoKSWYgeW91IHRoaW5rIHlvdSBoYXZlIGZvdW5kIGEgYnVn LCB3ZSB3YW50IHRvIGhlYXIgYWJvdXQgaXQuICBCZWZvcmUKcmVwb3J0aW5nIGEgYnVnLCBrZWVw IGluIG1pbmQgdGhhdCBpbnRlcmFjdGlvbiB3aXRoIGxhbmd1YWdlIHNlcnZlcnMKcmVwcmVzZW50 cyBhIGxhcmdlIHF1YW50aXR5IG9mIHVua25vd24gdmFyaWFibGVzLiAgVGhlcmVmb3JlLCBpdCBp cwpnZW5lcmFsbHkgYm90aCBAZW1waHtkaWZmaWN1bHR9IGFuZCBAZW1waHthYnNvbHV0ZWx5IGVz c2VudGlhbH0gdGhhdAp0aGUgbWFpbnRhaW5lcnMgcmVwcm9kdWNlIGJ1Z3MgZXhhY3RseSBhcyB0 aGV5IGhhcHBlbmVkIHRvIHlvdSwgdGhlCnVzZXIuCgpUbyByZXBvcnQgYW4gRWdsb3QgYnVnLCBz ZW5kIGUtbWFpbCB0byBAZW1haWx7YnVnLWdudS1lbWFjc0BAZ251Lm9yZ30uCgpUbyB1bmRlcnN0 YW5kIGhvdyB0byB3cml0ZSB0aGlzIGVtYWlsLCBnZXQgYWNxdWFpbnRlZCB3aXRoIEVtYWNzJ3Mg YnVnCnJlcG9ydGluZyBndWlkZWxpbmVzIChAcHhyZWZ7QnVncywsLCBlbWFjcywgR05VIEVtYWNz IE1hbnVhbH0pLiAgVGhlbiwKZm9sbG93IHRoaXMgRWdsb3Qtc3BlY2lmaWMgY2hlY2tsaXN0OgoK QGVudW1lcmF0ZQpAaXRlbQpJbmNsdWRlIHRoZSB0cmFuc2NyaXB0IG9mIEpTT05SUEMgZXZlbnRz IG9idGFpbmVkIGZyb20gdGhlIGJ1ZmZlcgpwb3BwZWQgdXAgYnkgQGtiZHtNLXggZWdsb3QtZXZl bnRzLWJ1ZmZlcn0uICBZb3UgbWF5IG5hcnJvdyBkb3duIHRoZQp0cmFuc2NyaXB0IGlmIHlvdSBh cmUgc3VyZSBvZiB3aGVyZSB0aGUgcHJvYmxlbWF0aWMgZXhjaGFuZ2UgaXMsIGJ1dAppdCdzIHNh ZmVyIHRvIGluY2x1ZGUgdGhlIHdob2xlIHRyYW5zY3JpcHQsIGVpdGhlciBhdHRhY2hlZCBvciBp bmxpbmUuCgpAaXRlbQpJZiBFbWFjcyBzaWduYWxlZCBhbiBlcnJvciAoYW4gZXJyb3IgbWVzc2Fn ZSB3YXMgc2VlbiBvciBoZWFyZCksIG1ha2UKc3VyZSB0byByZXBlYXQgdGhlIHByb2Nlc3MgYWZ0 ZXIgdHVybmluZyBvbiBAY29kZXtkZWJ1Zy1vbi1lcnJvcn0gdmlhCkBrYmR7TS14IHRvZ2dsZS1k ZWJ1Zy1vbi1lcnJvcn0uICBUaGlzIG5vcm1hbGx5IHByb2R1Y2VzIGEgYmFja3RyYWNlCm9mIHRo ZSBlcnJvciB0aGF0IHNob3VsZCBhbHNvIGJlIGF0dGFjaGVkIHRvIHRoZSBidWcgcmVwb3J0LgoK QGl0ZW0KSW5jbHVkZSBhIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGUgbWFpbnRhaW5lciBzaG91bGQg b2J0YWluLCBpbnN0YWxsLAphbmQgY29uZmlndXJlIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgeW91IHVz ZWQuICBNYWludGFpbmVycyB1c3VhbGx5IGhhdmUKYWNjZXNzIHRvIEdOVS9MaW51eCBzeXN0ZW1z LCB0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IHRoZSBkaXN0cmlidXRpb24KdGhhdCB5b3UgbWF5IGJl IHVzaW5nLiAgSWYgcG9zc2libGUsIHRyeSB0byByZXBsaWNhdGUgdGhlIHByb2JsZW0gd2l0aAp0 aGUgQy9DQHR7Kyt9IG9yIFB5dGhvbiBzZXJ2ZXJzLCBhcyB0aGVzZSBhcmUgdmVyeSBlYXN5IHRv IGluc3RhbGwuCgpAaXRlbQpEZXNjcmliZSBob3cgdG8gc2V0dXAgYSBAZW1waHttaW5pbWFsfSBw cm9qZWN0IGRpcmVjdG9yeSB3aGVyZSBFZ2xvdApzaG91bGQgYmUgc3RhcnRlZCBmb3IgdGhlIHBy b2JsZW0gdG8gaGFwcGVuLiAgRGVzY3JpYmUgZWFjaCBmaWxlJ3MKbmFtZSBhbmQgaXRzIGNvbnRl bnRzLiAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzdXBwbHkgdGhlIGFkZHJlc3Mgb2YgYQpwdWJs aWMgR2l0IHJlcG9zaXRvcnkuCgpAaXRlbQpJbmNsdWRlIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2Fy ZSB1c2VkLiAgVGhlIEVtYWNzIHZlcnNpb24gY2FuIGJlCm9idGFpbmVkIHdpdGggQGtiZHtNLXgg ZW1hY3MtdmVyc2lvbn0uCgpXZSB3ZWxjb21lIGJ1ZyByZXBvcnRzIGFib3V0IGFsbCBFZ2xvdCB2 ZXJzaW9ucywgYnV0IGl0IGlzIGhlbHBmdWwgdG8KZmlyc3QgY2hlY2sgaWYgdGhlIHByb2JsZW0g aXNuJ3QgYWxyZWFkeSBmaXhlZCBpbiB0aGUgbGF0ZXN0IHZlcnNpb24KKEBweHJlZntHZXR0aW5n IHRoZSBsYXRlc3QgdmVyc2lvbn0pLgoKSXQncyBhbHNvIGVzc2VudGlhbCB0byBpbmNsdWRlIHRo ZSB2ZXJzaW9uIG9mIEVMUEEgcGFja2FnZXMgdGhhdCBhcmUKZXhwbGljaXRseSBvciBpbXBsaWNp dGx5IGxvYWRlZC4gIFRoZSBvcHRpb25hbCBidXQgcG9wdWxhciBDb21wYW55IG9yCk1hcmtkb3du IHBhY2thZ2VzIGFyZSBkaXN0cmlidXRlZCBhcyBHTlUgRUxQQSBwYWNrYWdlcywgbm90IHRvIG1l bnRpb24KRWdsb3QgaXRzZWxmIGluIHNvbWUgc2l0dWF0aW9ucy4gIFNvbWUgbWFqb3IgbW9kZXMg KEdvLCBSdXN0LCBldGMuKQphcmUgcHJvdmlkZWQgYnkgRUxQQSBwYWNrYWdlcy4gIEl0J3Mgc29t ZXRpbWVzIGVhc3kgdG8gbWlzcyB0aGVzZSwKc2luY2UgdGhleSBhcmUgdXN1YWxseSBpbXBsaWNp dGx5IGxvYWRlZCB3aGVuIHZpc2l0aW5nIGEgZmlsZSBpbiB0aGF0Cmxhbmd1YWdlLgoKRUxQQSBw YWNrYWdlcyB1c3VhbGx5IGxpdmUgaW4gQGNvZGV7fi8uZW1hY3MuZC9lbHBhfSAob3Igd2hhdCBp cyBpbgpAY29kZXtwYWNrYWdlLXVzZXItZGlyfSkuICBJbmNsdWRpbmcgYSBsaXN0aW5nIG9mIGZp bGVzIGluIHRoYXQKZGlyZWN0b3J5IGlzIGEgd2F5IHRvIHRlbGwgdGhlIG1haW50YWluZXJzIGFi b3V0IEVMUEEgcGFja2FnZQp2ZXJzaW9ucy4KCkBpdGVtCkluY2x1ZGUgYSByZWNpcGUgdG8gcmVw bGljYXRlIHRoZSBwcm9ibGVtIHdpdGggQGVtcGh7YSBjbGVhbiBFbWFjcwpydW59LiAgVGhlIGlu dm9jYXRpb24gQGNvZGV7ZW1hY3MgLVEgLWYgcGFja2FnZS1pbml0aWFsaXplfSBzdGFydHMKRW1h Y3Mgd2l0aCBubyBjb25maWd1cmF0aW9uIGFuZCBpbml0aWFsaXplcyB0aGUgRUxQQSBwYWNrYWdl cy4gIEEgdmVyeQptaW5pbWFsIEBmaWxley5lbWFjc30gaW5pdGlhbGl6YXRpb24gZmlsZSAoMTAg bGluZXMgb3IgbGVzcykgaXMgYWxzbwphY2NlcHRhYmxlIGFuZCBnb29kIG1lYW5zIHRvIGRlc2Ny aWJlIGNoYW5nZXMgdG8gdmFyaWFibGVzLgoKVGhlcmUgaXMgdXN1YWxseSBubyBuZWVkIHRvIGlu Y2x1ZGUgQGNvZGV7cmVxdWlyZX0gc3RhdGVtZW50cyBpbiB0aGUKcmVjaXBlLCBhcyBFZ2xvdCdz IGZ1bmN0aW9uYWxpdHkgdXNlcyBhdXRvbG9hZHMuCgpMaWtld2lzZSwgdGhlcmUgaXMgcmFyZWx5 IHRoZSBuZWVkIHRvIHVzZSB0aGluZ3MgbGlrZQpAY29kZXt1c2UtcGFja2FnZX0gb3IgQGNvZGV7 ZWdsb3QtZW5zdXJlfS4gIFRoaXMganVzdCBtYWtlcyB0aGUgcmVjaXBlCmhhcmRlciB0byBmb2xs b3cuICBQcmVmZXIgc2V0dGluZyB2YXJpYWJsZXMgd2l0aCBAY29kZXtzZXRxfSBhbmQKYWRkaW5n IHRvIGhvb2tzIHdpdGggQGNvZGV7YWRkLWhvb2t9LiAgUHJlZmVyIHN0YXJ0aW5nIEVnbG90IHdp dGgKQGNvZGV7TS14IGVnbG90fS4KCkBpdGVtCk1ha2Ugc3VyZSB0byBkb3VibGUgY2hlY2sgYWxs IHRoZSBhYm92ZSBlbGVtZW50cyBhbmQgcmUtcnVuIHRoZSByZWNpcGUKdG8gc2VlIHRoYXQgdGhl IHByb2JsZW0gaXMgcmVwcm9kdWNpYmxlLiAgRm9sbG93aW5nIHRoZSByZWNpcGUgc2hvdWxkCnBy b2R1Y2UgZXZlbnQgdHJhbnNjcmlwdCBhbmQgZXJyb3IgYmFja3RyYWNlcyB0aGF0IGFyZSB2ZXJ5 IHNpbWlsYXIgdG8KdGhlIG9uZXMgeW91IGluY2x1ZGVkLiAgSWYgdGhlIHByb2JsZW0gb25seSBo YXBwZW5zIHNvbWV0aW1lcywgbWVudGlvbgp0aGlzIGluIHlvdXIgcmVwb3J0LgpAZW5kIGVudW1l cmF0ZQoKUGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IHNvbWUgcHJvYmxlbXMgcmVwb3J0ZWQgYWdh aW5zdCBFZ2xvdCBtYXkKYWN0dWFsbHkgYmUgYnVncyBpbiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIG9y IHRoZSBFbWFjcyBmZWF0dXJlL3BhY2thZ2UKdGhhdCB1c2VkIEVnbG90IHRvIGNvbW11bmljYXRl IHdpdGggdGhlIGxhbmd1YWdlIHNlcnZlci4gIEVnbG90IGlzLCBpbgptYW55IGNhc2VzLCBqdXN0 IGEgZnJvbnRlbmQgdG8gdGhhdCBmdW5jdGlvbmFsaXR5LgoKQG5vZGUgR05VIEZyZWUgRG9jdW1l bnRhdGlvbiBMaWNlbnNlCkBhcHBlbmRpeCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UK QGluY2x1ZGUgZG9jbGljZW5zZS50ZXhpCgpAbm9kZSBJbmRleApAdW5udW1iZXJlZCBJbmRleApA cHJpbnRpbmRleCBjcAoKQGJ5ZQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAGVnbG90LTEuMTcvRUdMT1QtTkVXUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw MDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDA1NDEzMAAxNDY3MTU0MDA2NwAwMTM0NzQAIDAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABwaGlsaXAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAARWdsb3QgTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLSotIG91dGxpbmUgLSotCgpDb3B5cmlnaHQgKEMpIDIwMTgtMjAy NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KU2VlIHRoZSBlbmQgb2YgdGhlIGZpbGUg Zm9yIGxpY2Vuc2UgY29uZGl0aW9ucy4KClBsZWFzZSBzZW5kIEVnbG90IGJ1ZyByZXBvcnRzIHRv ICdidWctZ251LWVtYWNzQGdudS5vcmcnLCBhbmQgQ2MgKG9yClgtRGViYnVncy1DQykgdGhlIG1h aW50YWluZXIgJ2pvYW90YXZvcmFAZ21haWwuY29tJyBhcyB3ZWxsLiAgUGxlYXNlCnJlYWQgdGhl IGNoYXB0ZXIgdGl0bGVkICJUcm91Ymxlc2hvb3RpbmciIGluIHRoZSBFZ2xvdCBtYW51YWwsCmF2 YWlsYWJsZSBodHRwczovL2pvYW90YXZvcmEuZ2l0aHViLmlvL2VnbG90LyNUcm91Ymxlc2hvb3Rp bmctRWdsb3QKClRoaXMgZmlsZSBpcyBhYm91dCBjaGFuZ2VzIGluIEVnbG90LCB0aGUgRW1hY3Mg Y2xpZW50IGZvciBMU1AKKExhbmd1YWdlIFNlcnZlciBQcm90b2NvbCkgZGlzdHJpYnV0ZWQgd2l0 aCBHTlUgRW1hY3Mgc2luY2UgRW1hY3MKdmVyc2lvbiAyOS4xIGFuZCB3aXRoIEdOVSBFTFBBIHNp bmNlIDIwMTguCgpOb3RlOiByZWZlcmVuY2VzIHRvIHNvbWUgRWdsb3QgaXNzdWVzIGFyZSBwcmVz ZW50ZWQgYXMgImdpdGh1YiNubm5uIi4KVGhpcyByZWZlcnMgdG8gaHR0cHM6Ly9naXRodWIuY29t L2pvYW90YXZvcmEvZWdsb3QvaXNzdWVzLy4gIFRoYXQgaXMsCnRvIGxvb2sgdXAgaXNzdWUgZ2l0 aHViIzEyMzQsIGdvIHRvCmh0dHBzOi8vZ2l0aHViLmNvbS9qb2FvdGF2b3JhL2VnbG90L2lzc3Vl cy8xMjM0LgoKDAoqIENoYW5nZXMgaW4gdXBjb21pbmcgRWdsb3QKCgwKKiBDaGFuZ2VzIGluIEVn bG90IDEuMTcgKDI1LzEvMjAyNCkKCioqIEZpeGVzIHRvIGNvbXBsZXRpb24gKGdpdGh1YiM4NDcs IGdpdGh1YiMxMzQ5KQoKKiogRml4IGNvZGUtYWN0aW9uIGdhdGhlcmluZyBmb3Igc29tZSBzZXJ2 ZXJzIChnaXRodWIjODQ3KQoKKiogRXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIEVnbG90LW9ubHkg c3VicHJvamVjdHMKClVudGlsIHByb2plY3QuZWwncyBzdXBwb3J0IGZvciBzdWJwcm9qZWN0cyBp bXByb3ZlcywgZ2l0aHViIzEzMzcKZGVzY3JpYmVzIGEgcmVhc29uYWJseSBzYW5lIHdheSB0byBj b25maWd1cmUgbmVzdGVkIHN1Yi1wcm9qZWN0cwp3aXRoaW4gYSBsYXJnZXIgb25lIGp1c3QgZm9y IEVnbG90IHB1cnBvc2VzLgoKDAoqIENoYW5nZXMgaW4gRWdsb3QgMS4xNiAoMjcvMTIvMjAyMykK CioqIENvZGUgYWN0aW9ucyBjYW4gYmUgcHJldmlld2VkIGluIGRpZmYgZm9ybWF0CgpUaGUgdmFy aWFibGUgJ2VnbG90LWNvbmZpcm0tc2VydmVyLWVkaXRzJyByZXBsYWNlcyB0aGUgb2Jzb2xldGUK J2VnbG90LWNvbmZpcm0tc2VydmVyLWluaXRpYXRlZC1lZGl0cycgYW5kIGJyaW5ncyBhYm91dCBh IG5ldwpjb25maXJtYXRpb24gbW9kZWwgZm9yIGNvZGUgYWN0aW9ucywgbWFraW5nIGl0IHBvc3Np YmxlIHRvIGhhdmUgb25seQpjZXJ0YWluIGNvbW1hbmRzIHJlcXVpcmUgdXNlciBjb25maXJtYXRp b24uICBJdCBhbGxvd3MgYSB0ZW1wb3JhcnkKJ2RpZmYtbW9kZScgYnVmZmVyIHRvIGRpc3BsYXkg dGhlIHByb3Bvc2VkIGNoYW5nZXMsIHNvIHRoZSB1c2VyIGNhbgphcHBseSB0aGVtIG9uZSBieSBv bmUuICBTZWUgYnVnIzYwMzM4LgoKKiogQ29tcGxldGlvbiBzb3J0aW5nIGhhcyBiZWVuIGZpeGVk CgpJbiBzb21lIHNpdHVhdGlvbnMsIEVnbG90IHdhcyBub3QgcmVzcGVjdGluZyB0aGUgY29tcGxl dGlvbiBzb3J0IG9yZGVyCmRlY2lkZWQgYnkgdGhlIGxhbmd1YWdlIHNlcnZlciwgZmFsbGluZyBi YWNrIG9uIHRoZSBzb3J0IG9yZGVyCmRldGVybWluZWQgYnkgdGhlICdmbGV4JyBjb21wbGV0aW9u IHN0eWxlIGluc3RlYWQuICBTZWUgZ2l0aHViIzEzMDYuCgoqKiBJbXByb3ZlIG1vdXNlIGludm9j YXRpb24gb2YgY29kZSBhY3Rpb25zCgpXaGVuIGludm9raW5nIGNvZGUgYWN0aW9ucyBieSBtaWRk bGUgY2xpY2tpbmcgd2l0aCB0aGUgbW91c2Ugb24KRmx5bWFrZSBkaWFnbm9zdGljcywgaXQgd2Fz IG9mdGVuIHRoZSBjYXNlIHRoYXQgRWdsb3QgZGlkbid0IHJlcXVlc3QKY29kZSBhY3Rpb25zIGNv cnJlY3RseSBhbmQgdGh1cyBubyBhY3Rpb25zIHdlcmUgb2ZmZXJlZCB0byB0aGUgdXNlci4KVGhp cyBoYXMgYmVlbiBmaXhlZC4gIFNlZSBnaXRodWIjMTI5NS4KCioqIE9wdGltaXplZCBmaWxlLXdh dGNoaW5nIGNhcGFiaWxpdHkKClNvbWUgc2VydmVycywgbGlrZSB0aGUgUHlyaWdodCBsYW5ndWFn ZSBzZXJ2ZXIsIGlzc3VlIHRvbyBtYW55IGZpbGUKd2F0Y2hpbmcgcmVxdWVzdHMuICBUaGlzIGNo YW5nZSBzbGlnaHRseSByZWR1Y2VzIHRoZSBudW1iZXIgb2YgZmlsZQp3YXRjaGVyIG9iamVjdHMg cmVxdWVzdGVkIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0sIHdoaWNoIGNhbiBiZSBhCnByb2Js ZW0sIHBhcnRpY3VsYXJseSBvbiBNYWMgT1MuICBTZWUgZ2l0aHViIzEyMjggYW5kIGdpdGh1YiMx MjI2LgoKKiogRmFzdGVyLCBtb3JlIGFjY3VyYXRlLCBldmVudCBsb2dnaW5nCgpUaGUgRWdsb3Qg ZXZlbnRzIGJ1ZmZlciB0YWtlcyBhZHZhbnRhZ2Ugb2YgbmV3IGZ1bmN0aW9uYWxpdHkgaW4KSnNv bnJwYyAxLjIzLiAgQnkgZGVmYXVsdCwgTGlzcC1zdHlsZSBwcmludGluZyBvZiBKU09OLVJQQyBt ZXNzYWdlIChhCmNvbW1vbiBjYXVzZSBvZiBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbikgaXMgZGlz YWJsZWQuICBUaGUgZnVsbApvcmlnaW5hbCBKU09OIG1lc3NhZ2UgaXMgcHJlc2VudGVkIGluc3Rl YWQuICBTZWUgbmV3IHZhcmlhYmxlCidlZ2xvdC1ldmVudHMtYnVmZmVyLWNvbmZpZycsIHdoaWNo IHJlcGxhY2VzIHRoZSBvYnNvbGV0ZQonZWdsb3QtZXZlbnRzLWJ1ZmZlci1zaXplJy4KCioqICd0 ZXh0ZG9jdW1lbnQvb25UeXBlRm9ybWF0dGluZycgZmVhdHVyZSBoYXMgYmVlbiBmaXhlZAoKRm9y ICduZXdsaW5lJyBjb21tYW5kcywgRWdsb3Qgc29tZXRpbWVzIHNlbnQgdGhlIHdyb25nIGNoYXJh Y3RlciBjb2RlCnRvIHRoZSBzZXJ2ZXIuICBBbHNvIHRoaXMgZmVhdHVyZSBpcyBub3cgbGVzcyBj aGF0dHkgaW4gdGhlIG1vZGUtbGluZQphbmQgbWVzc2FnZXMgYnVmZmVyLgoKKiogUGFydGlhbCBm aXggQy1NLWkgIm1pZGRsZS1vZi1zeW1ib2wiIGNvbXBsZXRpb25zIChnaXRodWIjMTMzOSkKCioq IEFkZCAiRXh0ZW5kaW5nIEVnbG90IiBzZWN0aW9uIHRvIG1hbnVhbAoKKiogRml4ZWQgRWxpc3Ag aW50ZXJmYWNlICdlZ2xvdC1sc3AtY29udGV4dCcgKGdpdGh1YiMxMzM2LCBnaXRodWIjMTMzNykK CioqIFN1cHBvcnRzIExTUCdzICd3aW5kb3cvc2hvd1JlcXVlc3QnIChidWcjNjIxMTYpCgoqKiBU aGUgc2VsZi11cGdyYWRlIGNvbW1hbmQgaXMgbm93IGNhbGxlZCAnZWdsb3QtdXBncmFkZS1lZ2xv dCcKCioqIE5ld2x5IGFkZGVkIGRpcmVjdG9yaWVzIGFsc28gd2F0Y2hlZCAoZ2l0aHViIzEyMjgp CgoqKiBTZW5kIGNvcnJlY3QgJzpsYW5ndWFnZS1pZCcgZm9yIEphdmFTY3JpcHQgc2VydmVyIChi dWcjNjcxNTApCgoqKiBOZXcgc2VydmVycyBoYXZlIGJlZW4gYWRkZWQgdG8gJ2VnbG90LXNlcnZl ci1wcm9ncmFtcycuCgotIG5scyAoYnVnIzYzNjAzKQotIG5peGQgKGJ1ZyM2NDIxNCkKLSBsZXhp Y2FsIChidWcjNjUzNTkpCi0gdGVycmFmb3JtLWxzIChidWcjNjU2NzEpCi0gcnVmZi1sc3AgKGJ1 ZyM2NzQ0MSkKLSB1aXVhIChidWcjNjc4NTApCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjE1ICgy OS80LzIwMjMpCgoqKiBGaXggTFNQICJsYW5ndWFnZUlkIiBkZXRlY3Rpb24KCk1hbnkgc2VydmVy cyB0b2RheSBzdXBwb3J0IG11bHRpcGxlIGxhbmd1YWdlcywgbWVhbmluZyB0aGV5IGNhbiBoYW5k bGUKbW9yZSB0aGFuIG9uZSBmaWxlIHR5cGUgaW4gdGhlIHNhbWUgY29ubmVjdGlvbi4gIFRoaXMg cmVsaWVzIG9uIHRoZQpjbGllbnQgc3VwcGx5aW5nIGEgJzpsYW5ndWFnZUlkJyBzdHJpbmcuICBQ cmV2aW91c2x5LCBFZ2xvdCBjYWxjdWxhdGVkCnRoaXMgc3RyaW5nIGJhc2VkIG9uIGFuIGltcGVy ZmVjdCBoZXVyaXN0aWMgYW5kIHdhcyBvZnRlbiB3cm9uZy4gIFNlZQpnaXRodWIjMTIwNi4KCioq IEZpeCBwcm9ibGVtcyB3aXRoIG1pc3Npbmcgc2lnbmF0dXJlIGRvY3VtZW50YXRpb24gKGJ1ZyM2 MjY4NykKCioqIFJld29ya2VkICdlZ2xvdC1pbWVudScKCkVnbG90J3MgSW1lbnUgYmFja2VuZCAo dXNlZCBmb3IgTS14IGltZW51IGFtb25nIG90aGVyIGV4dGVuc2lvbnMpLCBoYXMKYmVlbiByZXdv cmtlZC4gIE1vc3QgbmV3ZXIgc2VydmVycyByZXNwb25kIHRvCid0ZXh0RG9jdW1lbnQvZG9jdW1l bnRTeW1ib2wnIHdpdGggYSB2ZWN0b3Igb2YgJ0RvY3VtZW50U3ltYm9sJywgbm90CidTeW1ib2xJ bmZvcm1hdGlvbicuICBJdCdzIG5vdCB3b3J0aCBpdCB0cnlpbmcgdG8gbWFrZSB0aGUgdHdvIGZv cm1hdHMKcmVzZW1ibGUgZWFjaCBvdGhlci4gIFRoaXMgYWxzbyBsYXlzIGdyb3VuZHdvcmsgc3Vw cG9ydGluZyBhCmZvcnRoY29taW5nICJicmVhZGNydW1iIiBmZWF0dXJlIG9mIGJ1ZyM1ODQzMS4K CioqIE5ldyBjb21tYW5kICdlZ2xvdC11cGRhdGUnCgpUaGlzIGFsbG93cyB1c2VycyB0byBlYXNp bHkgdXBkYXRlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBFZ2xvdC4KCgwKKiBDaGFuZ2VzIGlu IEVnbG90IDEuMTQgKDMvNC8yMDIzKQoKKiogRmFzdGVyLCBtb3JlIHJlc3BvbnNpdmUgY29tcGxl dGlvbgoKRWdsb3QgdGFrZXMgYWR2YW50YWdlIG9mIExTUCdzICJpc0luY29tcGxldGUiIGZsYWcg aW4gcmVzcG9uc2VzIHRvCmNvbXBsZXRpb24gcmVxdWVzdHMgdG8gZHJpdmUgbmV3IGNvbXBsZXRp b24tY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZQpkdXJhdGlvbiBvZiBlYWNoIGNvbXBsZXRpb24g c2Vzc2lvbi4gIE9uY2UgYSBmdWxsIHNldCBvZiBjb21wbGV0aW9ucwppcyBvYnRhaW5lZCBmb3Ig YSBnaXZlbiBwb3NpdGlvbiwgdGhlIHNlcnZlciBuZWVkbid0IGJlIGNvbnRhY3RlZCBpbgptYW55 IHNjZW5hcmlvcywgcmVzdWx0aW5nIGluIHNpZ25pZmljYW50bHkgbGVzcyBjb21tdW5pY2F0aW9u Cm92ZXJoZWFkLiAgVGhpcyB3b3JrcyB3aXRoIHRoZSBwb3B1bGFyIENvbXBhbnkgcGFja2FnZSBh bmQgc3RvY2sKY29tcGxldGlvbi1hdC1wb2ludCBpbnRlcmZhY2VzLgoKQSB2YXJpYWJsZSAnZWds b3QtY2FjaGUtc2Vzc2lvbi1jb21wbGV0aW9ucycsIHQgYnkgZGVmYXVsdCwgY29udHJvbHMKdGhp cy4gIFRoZSBtZWNoYW5pc20gd2FzIHRlc3RlZCB3aXRoIGNjbHMsIGpkdGxzLCBweWxzcCwgZ29s c3AgYW5kCmNsYW5nZC4gIE5vdGFibHksIHRoZSBDL0MrKyBsYW5ndWFnZSBzZXJ2ZXIgQ2xhbmdk IHZlcnNpb24gMTUgaGFzIGEKYnVnIGluIGl0cyAiaXNJY29tcGxldGUiIGZsYWcgKGl0IGlzIGZp eGVkIGluIGxhdGVyIHZlcnNpb25zKS4gIElmIHlvdQpydW4gaW50byBwcm9ibGVtcywgZGlzYWJs ZSB0aGlzIG1lY2hhbmlzbSBsaWtlIHNvOgoKKGFkZC1ob29rICdjLWNvbW1vbi1tb2RlLWhvb2sK ICAgKGxhbWJkYSAoKSAoc2V0cS1sb2NhbCBlZ2xvdC1jYWNoZS1zZXNzaW9uLWNvbXBsZXRpb25z IG5pbCkpKQoKKiogQXQtcG9pbnQgZG9jdW1lbnRhdGlvbiBsZXNzIG9idHJ1c2l2ZSBpbiBlY2hv IGFyZWEKCkVnbG90IHRha2VzIGFkdmFudGFnZSBvZiBuZXcgZmVhdHVyZXMgb2YgRWxEb2MgdG8g c2VwYXJhdGUgc2hvcnQKZG9jdW1lbnRhdGlvbiBzdHJpbmdzIGZyb20gbGFyZ2Ugb25lcywgc2Vu ZGluZyB0aGUgZm9ybWVyIHRvIGJlIHNob3duIGluCnRoZSBFbERvYydzIGVjaG8gYXJlYSBhbmQg dGhlIGxhdHRlciB0byBiZSBzaG93biBpbiBvdGhlciBvdXRsZXRzLApzdWNoIGFzIHRoZSAqZWxk b2MqIGJ1ZmZlciBvYnRhaW5hYmxlIHdpdGggJ0MtaCAuJy4KCioqIE5ldyB2YXJpYWJsZSAnZWds b3QtcHJlZmVyLXBsYWludGV4dCcKCkN1c3RvbWl6ZSB0aGlzIHRvIHQgdG8gb3B0LWluIHRvIGRv Y3N0cmluZ3MgaW4gcGxhaW4gdGV4dCBpbnN0ZWFkIG9mCk1hcmtkb3duLgoKKGJ1ZyM2MTM3MykK CioqIFByb2dyZXNzIGluZGljYXRvcnMgaW5oYWJpdCB0aGUgbW9kZS1saW5lIGJ5IGRlZmF1bHQK ClRvIHN3aXRjaCB0byB0aGUgZWNobyBhcmVhLCBjdXN0b21pemUgJ2VnbG90LXJlcG9ydC1wcm9n cmVzcycgdG8KJ21lc3NhZ2VzJy4gIFRvIHN3aXRjaCBvZmYgcHJvZ3Jlc3MgcmVwb3J0aW5nIGNv bXBsZXRlbHksIHNldCB0byBuaWwuCgoqKiBTbmlwcGV0IHN1cHBvcnQgaXMgZWFzaWVyIHRvIGVu YWJsZQoKVGhlIHVzZXIgbmVlZG4ndCBtYW51YWxseSBhY3RpdmF0ZSAneWFzLW1pbm9yLW1vZGUn IG9yCid5YXMtZ2xvYmFsLW1vZGUnLiAgSWYgWUFTbmlwcGV0IGlzIGluc3RhbGxlZCBhbmQgdGhl IHNlcnZlciBzdXBwb3J0cwpzbmlwcGV0cywgaXQgaXMgdXNlZCBhdXRvbWF0aWNhbGx5LCB1bmxl c3MgdGhlIHN5bWJvbCAneWFzbmlwcGV0JyBoYXMKYmVlbiBhZGRlZCB0byAnZWdsb3Qtc3RheS1v dXQtb2YnLgoKDAoqIENoYW5nZXMgaW4gRWdsb3QgMS4xMyAoMTUvMDMvMjAyMykKCioqIEVMUEEg aW5zdGFsbGF0aW9ucyBvbiBFbWFjcyAyNi4zIGFyZSBzdXBwb3J0ZWQgYWdhaW4uCgoMCiogQ2hh bmdlcyBpbiBFZ2xvdCAxLjEyLjI5IChFZ2xvdCBidW5kbGVkIHdpdGggRW1hY3MgMjkuMSkKCioq IEVnbG90IGhhcyBhIG5ldyBjb21tYW5kIHRvIHVwZ3JhZGUgdG8gdGhlIGxhdGVzdCB2ZXJzaW9u LgoKVGhlIG5ldyBjb21tYW5kICdlZ2xvdC11cGdyYWRlLWVnbG90JyBhbGxvd3MgZWFzaWx5IGdy YWJiaW5nIHRoZQpsYXRlc3QgdmVyc2lvbiBvZiBFZ2xvdCBmcm9tIEVMUEEuICBUaGlzIG1pZ2h0 IGJlIG1vcmUgY29udmVuaWVudCB0aGFuCnVzaW5nIHRoZSBtb3JlIGdlbmVyYWwgY29tbWFuZCAn cGFja2FnZS1pbnN0YWxsJywgd2hpY2ggYnkgZGVmYXVsdAp3aWxsIG5vdCB1cGdyYWRlICJidWls dC1pbiIgcGFja2FnZXMsIHRob3NlIHRoYXQgY29tZSB3aXRoIEVtYWNzLgoKDAoqIENoYW5nZXMg aW4gRWdsb3QgMS4xMiAoMTMvMDMvMjAyMykKCioqIExTUCBpbmxheSBoaW50cyBhcmUgbm93IHN1 cHBvcnRlZC4KSW5sYXkgaGludHMgYXJlIHNtYWxsIHRleHQgYW5ub3RhdGlvbnMgbm90IHVubGlr ZSBkaWFnbm9zdGljcywgYnV0CmRlc2lnbmVkIHRvIGhlbHAgcmVhZGFiaWxpdHkgaW5zdGVhZCBv ZiBpbmRpY2F0aW5nIHByb2JsZW1zLiAgRm9yCmV4YW1wbGUsIGEgQysrIExTUCBzZXJ2ZXIgY2Fu IHNlcnZlIGhpbnRzIGFib3V0IHBvc2l0aW9uYWwgcGFyYW1ldGVyCm5hbWVzIGluIGZ1bmN0aW9u IGNhbGxzIGFuZCBhIHZhcmlhYmxlJ3MgYXV0b21hdGljYWxseSBkZWR1Y2VkIHR5cGUuCkVtYWNz IGNhbiBkaXNwbGF5IHRoZXNlIGhpbnRzIHVzaW5nIG92ZXJsYXlzLCBoZWxwaW5nIHRoZSB1c2Vy CnJlbWVtYmVyIHRob3NlIHR5cGVzIGFuZCBwYXJhbWV0ZXIgbmFtZXMuCgoqKiBMb25nc3RhbmRp bmcgVHJhbXAgaW5zdGFiaWxpdHkgaXNzdWVzIHNvbHZlZC4KVGhlIHNvbHV0aW9uIGludm9sdmVz IGEgVHJhbXAtc3BlY2lmaWMgd29ya2Fyb3VuZCBpbiBFZ2xvdC4gIEZ1dHVyZQpUcmFtcCB2ZXJz aW9ucyB3aWxsIGhhdmUgdGhpcyBwcm9ibGVtIHNvbHZlZCBhdCB0aGUgb3JpZ2luLiAgVGhlCndv cmthcm91bmQgd2lsbCB0aGVuIGJlIHJlbW92ZWQuICBFbWFjcyBidWcjNjEzNTAgaGFzIG1vcmUg ZGV0YWlscy4KCihnaXRodWIjODU5LCBnaXRodWIjMTAyMCwgZ2l0aHViIzg4MykKCioqIExTUCdz ICdwb3NpdGlvbkVuY29kaW5nJyBjYXBhYmlsaXR5IGlzIG5vdyBzdXBwb3J0ZWQuClRoZSBwb3Np dGlvbi1lbmNvZGluZyBzY2hlbWUgKFVURi04LCBVVEYtMTYgb3IgVVRGLTMyKSBjYW4gbm93CmJl IG5lZ290aWF0ZWQgd2l0aCB0aGUgc2VydmVyLgoKKiogTW9yZSBvZiB0aGUgdXNlcidzIEVsZG9j IGNvbmZpZ3VyYXRpb24gaXMgcmVzcGVjdGVkLgpUaGlzIGNoYW5nZSBhZGRyZXNzZXMgdGhlIHBy b2JsZW1zIHJlcG9ydGVkIGluIG1hbnkgRWdsb3QgcmVwb3J0cwpkYXRpbmcgYmFjayB0byBlYXJs eSAyMDIxIGF0IGxlYXN0LgoKKGdpdGh1YiM2NDYsIGdpdGh1YiM4OTQsIGdpdGh1YiM5MjAsIGdp dGh1YiMxMDMxLCBnaXRodWIjMTE3MSkuCgpUaGlzIGlzIHVuZmluaXNoZWQgd29yaywgYXMgJ2Vs ZG9jLWRvY3VtZW50YXRpb24tc3RyYXRlZ3knIGlzIHN0aWxsCnNldCBieSBFZ2xvdCBkdXJpbmcg aXRzIHRlbnVyZSBvdmVyIGEgYnVmZmVyLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yCml0IGNhbm5v dCB3b3JrIHJlYXNvbmFibHkgd2l0aCBFZ2xvdCdzIGFkZGl0aW9ucyB0bwonZWxkb2MtZG9jdW1l bnRhdGlvbi1mdW5jdGlvbnMnLgoKKiogQ29tcGxldGlvbiBsYWJlbHMgYXJlIGNvcnJlY3RseSBk aXNwbGF5ZWQgaW4gc2VydmVycyBsaWtlIGNsYW5nZC4KCihnaXRodWIjMTE0MSkKCioqIEFzc29y dGVkIGJ1Z2ZpeGVzLgoKKGJ1ZyM2MTMxMiwgYnVnIzYxNDc4LCBidWcjNjE1MzIsIGJ1ZyM2MTcy NiwgYnVnIzYxODY2LCBidWcjNjE3NDgpCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjExICgyNy8x LzIwMjMpCgoqKiBOZXcgc2VydmVyIHZzY29kZS1qc29uLWxhbmd1YWdlc2VydmVyIGFkZGVkIHRv ICdlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnLgoKKGJ1ZyM2MDE5OCkKCioqIEFzc29ydGVkIGJ1Z2Zp eGVzLgoKKGJ1ZyM2MDM3OSwgYnVnIzYwNTU3LCAoYnVnIzYxMDQ4KQoKDAoqIENoYW5nZXMgaW4g RWdsb3QgMS4xMCAoMTYvMTIvMjAyMikKCioqIEVtYWNzIHByb2dyZXNzIHJlcG9ydGVycyBhcmUg dXNlZCBmb3IgTFNQIHByb2dyZXNzIG5vdGlmaWNhdGlvbnMuCihidWcjNTkxNDkpCgoqKiBMU1Ag cmVwb3J0ZWQgVVJJcyBvdGhlciB0aGFuIGZpbGU6Ly8gYXJlIHBhc3NlZCBvbiB0byBFbWFjcy4K VGhpcyBjaGFuZ2UgYWxsb3dzIG90aGVyIFVSSSBoYW5kbGVycywgc3VjaCBhcyBhICdqYXI6JyBo YW5kbGluZwpwYWNrYWdlLCB0byBjb29wZXJhdGUgd2l0aCBFZ2xvdCBhbmQgZmluZCBmaWxlcyBp bnNpZGUgY29tcHJlc3NlZCBmaWxlCnN5c3RlbXMgKGJ1ZyM1ODc5MCkuCgoqKiBFZ2xvdCBub3cg c2hvd3MgaW4gdGhlIG1lbnUgYmFyLgoKKiogVHJlZS1zaXR0ZXIgbW9kZXMgYWRkZWQgdG8gJ2Vn bG90LXNlcnZlci1wcm9ncmFtcycuClRoZXNlIG1vZGVzIGFyZSB1c3VhbGx5IGhhbmRsZWQgYnkg dGhlIHNhbWUgc2VydmVyIHRoYXQgaGFuZGxlcyB0aGUKImNsYXNzaWNhbCBtb2RlIi4KCioqIE5l dyBzZXJ2ZXJzIGNzaGFycC1scyBhbmQgdGV4bGFiIGFkZGVkIHRvICdlZ2xvdC1zZXJ2ZXItcHJv Z3JhbXMnLgoKKiogQXNzb3J0ZWQgYnVnZml4ZXMuCihidWcjNTk4MjQsIGJ1ZyM1OTMzOCkKCgwK KiBDaGFuZ2VzIGluIEVnbG90IDEuOSAoOC8xMC8yMDIyKQoKVGhpcyBpcyB0aGUgbGFzdCByZWxl YXNlIGJlZm9yZSBpbnRlZ3JhdGlvbiBpbnRvIEVtYWNzJ3MgY29yZS4KCioqIE5ldyAnTS14IGVn bG90LWxpc3QtY29ubmVjdGlvbnMnIGNvbW1hbmQuClByb2JhYmx5IG5vdCB2ZXJ5IHVzZWZ1bCBm b3Igbm93LiAgTW9yZSBrZXliaW5kaW5ncyBhbmQgY2xpY2thYmxlCnNob3J0Y3V0cyB0byBjb25u ZWN0aW9uLXNwZWNpZmljIGNvbW1hbmRzIHRvIGJlIGFkZGVkIGxhdGVyLgoKKiogTWFudWFsIHRl bXBvcmFyaWx5IGxpdmVzIGluIHNlcGFyYXRlIE1BTlVBTC5tZCBmaWxlLgpUaGUgbWFudWFsIGhh cyBiZWVuIHJld3JpdHRlbiBtb3N0bHkgZnJvbSBzY3JhdGNoLiAgSXQgaXMgc3RydWN0dXJlZApo aWVyYXJjaGljYWxseSBhbmQgaXMgbW9yZSBjb21wbGV0ZS4gIEFmdGVyIHRoZSBtZXJnZSBpbnRv IEVtYWNzLCB0aGUKRWdsb3QgVGV4aW5mbyBtYW51YWwgYnVuZGxlZCB3aXRoIEVtYWNzIHVzZWQg dGhpcyB0ZW1wb3JhcnkgbWFudWFsIGFzCmEgc3RhcnRpbmcgcG9pbnQuCgoqKiBTdXBwb3J0IGZv ciAic2luZ2xlIHNlcnZlciwgbXVsdGlwbGUgbW9kZXMiLgpQcmV2aW91c2x5LCBpZiBhbiBlbnRy eSBzdWNoIGFzICcoKGMrKy1tb2RlIGMtbW9kZSkgLiAoImNsYW5nZCkiKScgd2FzCmZvdW5kIGlu ICdlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnLCBpdCBtZWFudCB0aGF0ICcuY3BwJyBmaWxlcyAnLmMn CmZpbGVzIHdvdWxkIGxlYWQgdG8gdHdvICdjbGFuZ2QnIGluc3RhbmNlcyBmb3IgbWFuYWdpbmcg dGhlbSwgZXZlbiBpZgp0aGVzZSBmaWxlcyB3ZXJlIGluIHRoZSBzYW1lIHByb2plY3QuICBOb3cg b25seSBvbmUgaXMgY3JlYXRlZC4gIEl0IGlzCmFzc3VtZWQgdGhhdCBtb3N0LCBpZiBub3QgYWxs LCBzZXJ2ZXJzIGNvbmZpZ3VyZWQgaW4KJ2VnbG90LXNlcnZlci1wcm9ncmFtcycgaGFuZGxlIHRo aXMgY29ycmVjdGx5LgoKKGdpdGh1YiM2ODEpCgoqKiAnZWdsb3QtaW1lbnUnIG5vIGxvbmdlciB1 c2VzIHByb2JsZW1hdGljICJzcGVjaWFsIGVsZW1lbnRzIi4KVGhvdWdoIEVnbG90J3MgJ2VnbG90 LWltZW51JyByZXR1cm5lZCBhIGZ1bGx5IGNvbXBsaWFudCAnaW1lbnUnCnN0cnVjdHVyZSwgdGhh dCBvYmplY3Qgd2FzIG5vdCB1bmRlcnN0b29kIGJ5IG1hbnkgb3RoZXIgZnJvbnRlbmRzCm90aGVy IHRoYW4gJ00teCBpbWVudScgaXRzZWxmLiAgU2luY2UgdGhlIHNwZWNpYWwgZnVuY3Rpb25hbGl0 eSBpdAplbmFibGVkIHdhc24ndCBiZWluZyB1c2VkIGFueXdheSwgaXQgd2FzIGRlY2lkZWQgdG8g cmVtb3ZlIGl0IHRvIGZpeAp0aGVzZSBsb25nc3RhbmRpbmcgcHJvYmxlbXMuCgooZ2l0aHViIzc1 OCwgZ2l0aHViIzUzNiwgZ2l0aHViIzUzNSkKCioqICdlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJh dGlvbicgaGFzIGJlZW4gb3ZlcmhhdWxlZC4KVGhpcyB2YXJpYWJsZSBhbmQgaXRzIHVzZXMgYXJl IG5vdyBtb3JlIHRob3JvdWdobHkgZG9jdW1lbnRlZC4gIEl0IGNhbgpiZSBzZXQgdG8gYSBmdW5j dGlvbiBmb3IgZHluYW1pYyBjYWxjdWxhdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbi4KVGhlIHBy ZWZlcnJlZCBmb3JtYXQgaXMgYSBwbGlzdCwgdGhvdWdoIHRoZSBlYXJsaWVyIGFsaXN0IGZvcm1h dCBpcwpzdGlsbCBzdXBwb3J0ZWQuCgooZ2l0aHViIzk2NywgZ2l0aHViIzU5MCwgZ2l0aHViIzc5 MCkKCioqICdDLXUgTS0uJyBsaXN0cyBhbmQgY29tcGxldGVzIGFyYml0cmFyeSB3b3Jrc3BhY2Ug c3ltYm9scy4KQSB2ZXJ5IG9sZCByZXF1ZXN0LCBub3cgbWFkZSBwb3NzaWJsZSBieSBhIHJlbGF0 aXZlbHkgcmVjZW50IGNoYW5nZSB0bwp0aGUgJ3dvcmtzcGFjZS9zeW1ib2wnIFJQQyBtZXRob2Qu CgooZ2l0aHViIzEzMSkKCioqIFJld29ya2VkIG1vZGUtbGluZSBtZW51cy4KTmV3IG1lbnVzIGhl bHAgZGlzY292ZXIgRWdsb3QncyBmZWF0dXJlcyBhbmQgc2hvdyB3aGljaCBvZiB0aGVtIGFyZQpz dXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgc2VydmVyLiAgTWVudXMgY2FuIGJlIGN1c3RvbWl6ZWQg YXdheSB2aWEKJ2VnbG90LW1lbnUtc3RyaW5nJywgbWFraW5nIHNwYWNlIGluIG1vZGUtbGluZS4K CihnaXRodWIjNzkyKQoKKiogRWFzaWVyIHRvIHVzZSBMU1AgJ2luaXRpYWxpemUuaW5pdGlhbGl6 YXRpb25PcHRpb25zJy4KSW4gJ2VnbG90LXNlcnZlci1wcm9ncmFtcycgYSBwbGlzdCBtYXkgYmUg YXBwZW5kZWQgdG8gdGhlIHVzdWFsIGxpc3QKb2Ygc3RyaW5ncyBwYXNzZWQgYXMgY29tbWFuZCBs aW5lIGFyZ3VtZW50cy4gIFRoZSB2YWx1ZSBvZiBpdHMKJzppbml0aWFsaXphdGlvbk9wdGlvbnMn IGtleSBjb25zdHJ1Y3RzIHRoZSBjb3JyZXNwb25kaW5nIExTUCBKU09OCm9iamVjdC4gIFRoaXMg bWF5IGJlIGVhc2llciB0aGFuIGNyZWF0aW5nIGEgJ2RlZmNsYXNzJyBmb3IgYSBzcGVjaWZpYwpz ZXJ2ZXIgYW5kIHNwZWNpYWxpemluZyAnZWdsb3QtaW5pdGlhbGl6YXRpb24tb3B0aW9ucycgdG8g dGhhdCBjbGFzcy4KCihnaXRodWIjOTAxLCBnaXRodWIjODQ1LCBnaXRodWIjOTQwKQoKKiogTFNQ IG9uLXR5cGUgZm9ybWF0dGluZyBpcyBub3cgc3VwcG9ydGVkLgpUaGlzIGlzIHRoZSAnZG9jdW1l bnRPblR5cGVGb3JtYXR0aW5nUHJvdmlkZXInIExTUCBjYXBhYmlsaXR5LCB3aGljaAptYXkgYmUg ZGlzYWJsZWQgdmlhICdlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmlsaXRpZXMnCgooZ2l0aHVi Izg5OSkKCioqIEJhc2ljIExTUCAid29ya3NwYWNlIGZvbGRlcnMiIHN1cHBvcnQgYWRkZWQuCkVn bG90IG5vdyBhZHZlcnRpc2VzICdwcm9qZWN0LXJvb3QnIGFuZCAncHJvamVjdC1leHRlcm5hbC1y b290cycgYXMKd29ya3NwYWNlLWZvbGRlcnMuICAoQ29uZmlndXJpbmcgJ3Byb2plY3QtdmMtZXh0 ZXJuYWwtcm9vdHMtZnVuY3Rpb24nCnZpYSBFbGlzcCBvciAndGFncy10YWJsZS1saXN0JyB2aWEg Q3VzdG9taXplIGFyZSB0d28gd2F5cyB0byBzZXQgdGhlCmV4dGVybmFsIHJvb3RzIG9mIGEgc2lt cGxlIGdpdCBwcm9qZWN0LikKCihnaXRodWIjODkzKQoKKiogRWdsb3QgY2FuIG5vdyBzaG93IHBy b2plY3Qgd2lkZSBkaWFnbm9zdGljcyB2aWEgRmx5bWFrZS4KU29tZSBMU1Agc2VydmVycyByZXBv cnQgZGlhZ25vc3RpY3MgZm9yIGFsbCBmaWxlcyBpbiB0aGUgY3VycmVudAp3b3Jrc3BhY2UuICBG bHltYWtlIGhhcyAoYXMgb2YgdmVyc2lvbiAxLjIuMSkgdGhlIG9wdGlvbiB0byBzaG93CmRpYWdu b3N0aWNzIGZyb20gYnVmZmVycyBvdGhlciB0aGFuIHRoZSBjdXJyZW50bHkgdmlzaXRlZCBvbmUu ICBUaGUKY29tbWFuZCAnTS14IGZseW1ha2Utc2hvdy1wcm9qZWN0LWRpYWdub3N0aWNzJyB3aWxs IG5vdyBzaG93IGFsbCB0aGUKZGlhZ25vc3RpY3MgcmVsZXZhbnQgdG8gYSB3b3Jrc3BhY2UuCgoo Z2l0aHViIzgxMCkKCioqIFN1cHBvcnQgTFNQIGNvbXBsZXRpb24gdGFncy4KQW4gTFNQIGNvbXBs ZXRpb24gdGFnIGNhbiBiZSB1c2VkIHRvIHRlbGwgdGhlIGVkaXRvciBob3cgdG8gcmVuZGVyIGEK Y29tcGxldGlvbi4gIFByZXNlbnRseSwgb25lIGtpbmQgb2YgdGFnIGV4aXN0cywgZGVub3Rpbmcg aXRzCmNvcnJlc3BvbmRpbmcgY29tcGxldGlvbiBhcyBvYnNvbGV0ZS4KCihnaXRodWIjNzk3KQoK KiogU3VwcG9ydCBMU1Agb3B0aW9uYWwgZGlhZ25vc3RpYyB0YWdzLgpBIGRpYWdub3N0aWMgdGFn IGNhbiBpbmRpY2F0ZSBlaXRoZXIgInVudXNlZCBvciB1bm5lY2Vzc2FyeSBjb2RlIiBvcgoiZGVw cmVjYXRlZCBvciBvYnNvbGV0ZSBjb2RlIi4gIEZvbGxvd2luZyB0aGUgcmVuZGVyaW5nIHN1Z2dl c3Rpb25zIGluCnRoZSBwcm90b2NvbCwgd2UgZmFkZSBvdXQgdW5uZWNlc3NhcnkgY29kZSBhbmQg c3RyaWtlLXRocm91Z2gKZGVwcmVjYXRlZCBjb2RlLgoKKGdpdGh1YiM3OTQpCgoqKiBUaGUgUnVz dCBsYW5ndWFnZSBzZXJ2ZXIgaXMgbm93IHJ1c3QtYW5hbHl6ZXIgYnkgZGVmYXVsdC4KRWdsb3Qg d2lsbCBub3cgcHJlZmVyIHN0YXJ0aW5nICJydXN0LWFuYWx5emVyIiB0byAicmxzIiB3aGVuIGl0 IGlzCmF2YWlsYWJsZS4gIFRoZSBzcGVjaWFsIHN1cHBvcnQgY29kZSBmb3IgUkxTIGhhcyBiZWVu IHJlbW92ZWQuCgooZ2l0aHViIzgwMykKCioqIE5ldyBzZXJ2ZXJzIGhhdmUgYmVlbiBhZGRlZCB0 byAnZWdsb3Qtc2VydmVyLXByb2dyYW1zJy4KLSBjbG9qdXJlLWxzcCAoZ2l0aHViIzgxMykKLSBy YWNrZXQtbGFuZ3NlcnZlciAoZ2l0aHViIzY5NCkKLSBmdXRoYXJrIGxzcCAoZ2l0aHViIzkyMikK LSBwdXJlc2NyaXB0LWxhbmd1YWdlLXNlcnZlciAoZ2l0aHViIzkwNSkKLSBQZXJsOjpMYW5ndWFn ZVNlcnZlciAoZ2l0aHViIzk1MikKLSBtYXJrc21hbiAoZ2l0aHViIzEwMTMpCi0gamVkaS1sYW5n dWFnZS1zZXJ2ZXIgKFsjOTk0XShnaXRodWIjOTk0KSkKCgwKKiBDaGFuZ2VzIGluIEVnbG90IDEu OCAoMTIvMS8yMDIyKQoKKiogQWx0ZXJuYXRlIHNlcnZlcnMgc3VwcG9ydGVkIG91dC1vZi1ib3gg Zm9yIHRoZSBzYW1lIG1ham9yIG1vZGUuCkluIHByYWN0aWNlLCB0aGlzIHJlbW92ZXMgdGhlIG5l ZWQgZm9yIEVnbG90IHRvICJvZmZpY2lhbGx5IiBibGVzcyBvbmUKc2VydmVyIG92ZXIgYW5vdGhl ci4KCkRvIG5vdCBjb25mdXNlIHRoaXMgZmVhdHVyZSB3aXRoIGFub3RoZXIgbWlzc2luZyBmZWF0 dXJlIHdoaWNoCmNvbnNpc3RzIG9mIHN1cHBvcnRpbmcgbXVsdGlwbGUgc2VydmVycyBzaW11bHRh bmVvdXNseSBtYW5hZ2luZyBhCm1ham9yIG1vZGUgd2l0aGluIGEgcHJvamVjdC4KCihnaXRodWIj Njg4KQoKKiogVFJBTVAgc3VwcG9ydCBhZGRlZC4KVGhlcmUgYXJlIG5vIHZhcmlhYmxlcyB0byBj dXN0b21pemU6IHZpc2l0IGEgcmVtb3RlIGZpbGUsIGVuc3VyZSB0aGUKc2VydmVyIGFsc28gZXhp c3RzIGluIHRoZSByZW1vdGUsIGFuZCB0eXBlICJNLXggZWdsb3QiLgoKKGdpdGh1YiM2MzcsIGdp dGh1YiM0NjMsIGdpdGh1YiM4NCkKCioqICdlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmlsaXRp ZXMnIGlzIG5vdyBjb3JyZWN0bHkgc3BlbGxlZC4KVGhpcyB1c2VyLXZpc2libGUgdmFyaWFibGUg dXNlZCB0byBiZSBzcGVsbGVkCidlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmlsaXRlcycsIHdo aWNoIGlzIHN0aWxsIGEgdmFsaWQgYnV0Cm9ic29sZXRlIG5hbWUuCgooZ2l0aHViIzcyNCkKCioq IEVnbG90IGNhbiBtYW5hZ2UgY3Jvc3MtcmVmZXJlbmNlZCBmaWxlcyBvdXRzaWRlIHByb2plY3Qu ClRoaXMgaXMgYWN0aXZhdGVkIGJ5IGEgbmV3IGN1c3RvbWl6YXRpb24gb3B0aW9uCidlZ2xvdC1l eHRlbmQtdG8teHJlZicsIHdoaWNoIGRlZmF1bHRzIHRvIG5pbC4KCihnaXRodWIjNzYsIGdpdGh1 YiM2ODYsIGdpdGh1YiM2OTUpCgoqKiBDb2RlIGFjdGlvbiBzaG9ydGN1dHMgY2FuIGJlIGFkZGVk IGJ5IHRoZSB1c2VyLgonTS14IGVnbG90LWNvZGUtYWN0aW9ucycgYWNjZXB0cyBhbiBvcHRpb25h bCAnYWN0aW9uLWtpbmQnIGFyZ3VtZW50LApzcGVjaWZpZWQgaW50ZXJhY3RpdmVseSB3aXRoICdD LXUnLiAgT3RoZXIgc2hvcnRjdXRzIGNhbGwgc3BlY2lmaWMKYWN0aW9ucyBkaXJlY3RseSAoJ2Vn bG90LWNvZGUtYWN0aW9uLWlubGluZScsCidlZ2xvdC1jb2RlLWFjdGlvbi1leHRyYWN0JywgJ2Vn bG90LWNvZGUtYWN0aW9uLXJld3JpdGUnLAonZWdsb3QtY29kZS1hY3Rpb24tb3JnYW5pemUtaW1w b3J0cycgYW5kCidlZ2xvdC1jb2RlLWFjdGlvbi1xdWlja2ZpeCcpLiAgT25lIGNhbiBjcmVhdGUg b25lJ3Mgb3duIHNob3J0Y3V0cyBmb3IKY29kZSBhY3Rpb25zIHdpdGggc3BlY2lmaWMgYSBraW5k IGJ5IGNhbGxpbmcgJ2VnbG90LWNvZGUtYWN0aW9ucycgZnJvbQpMaXNwLgoKKGdpdGh1YiM0MTEp CgoqKiBOZXcgY29tbWFuZCAnZWdsb3Qtc2h1dGRvd24tYWxsIGFkZGVkLgpUaGlzIGRpc2Nvbm5l Y3RzIGFsbCB0aGUgRWdsb3QgY29ubmVjdGlvbnMgaW4gdGhlIHVzZXIncyBzZXNzaW9uLgoKKGdp dGh1YiM2NDMpCgoqKiBOZXcgdmFyaWFibGUgJ2VnbG90LXdpdGhob2xkLXByb2Nlc3MtaWQnIGFk ZGVkLgpJZiBub24tbmlsLCBFZ2xvdCB3aWxsIG5vdCBzZW5kIHRoZSBFbWFjcyBwcm9jZXNzIElE IHRvIHRoZSBsYW5ndWFnZQpzZXJ2ZXIuICBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB1c2luZyBk b2NrZXIgdG8gcnVuIGEgbGFuZ3VhZ2UKc2VydmVyLgoKKGdpdGh1YiM3MjIpCgoqKiBTZXZlcmFs IG5ldyBzZXJ2ZXJzIGhhdmUgYmVlbiBhZGRlZCB0byAnZWdsb3Qtc2VydmVyLXByb2dyYW1zJy4K LSBjbWFrZS1sYW5ndWFnZS1zZXJ2ZXIgKGdpdGh1YiM3ODcpCi0gY3NzLWxhbmd1YWdlc2VydmVy IChnaXRodWIjMjA0LCBnaXRodWIjNzY5KQotIGZvcnRscyAoZ2l0aHViIzYwMykKLSBodG1sLWxh bmd1YWdlc2VydmVyIChnaXRodWIjMjA0LCBnaXRodWIjNzY5KQotIGpzb24tbGFuZ3VhZ2VzZXJ2 ZXIgKGdpdGh1YiMyMDQsIGdpdGh1YiM3NjkpCi0gbHVhLWxzcCAoZ2l0aHViIzcyMSkKLSBtaW50 IGxzIChnaXRodWIjNzUwKQotIHB5cmlnaHQgKGdpdGh1YiM3NDIpCi0gdmltLWxhbmd1YWdlLXNl cnZlciAoZ2l0aHViIzc4NykKLSB5YW1sLWxhbmd1YWdlLXNlcnZlciAoZ2l0aHViIzc1MSkKLSB6 bHMgKGdpdGh1YiM2NDYpCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjcgKDE2LzEyLzIwMjApCgoq KiBIaWVyYXJjaGljYWwgc3ltYm9scyBhcmUgc3VwcG9ydGVkIGluIEltZW51LgooZ2l0aHViIzMw MykuCgoqKiBNdWx0aXBsZSAiZG9jdW1lbnRhdGlvbiBhdCBwb2ludCIgc291cmNlcyBhcmUgc3Vw cG9ydGVkLgpTdWNoIHNvdXJjZXMgaW5jbHVkZSBhcyBMU1AncyBzaWduYXR1cmUsIGhvdmVyIGFu ZCBhbHNvIHRoZSBGbHltYWtlCmRpYWdub3N0aWMgbWVzc2FnZXMuICBUaGV5IGNhbiBhbGwgYmUg cHJlc2VudGVkIGluIHRoZSBlY2hvIGFyZWEKKHNwYWNlIHBlcm1pdHRpbmcpLCBvciB2aWEgJ0Mt aCAuJy4gIEZvciBub3csIGNvbXBvc2l0aW9uIG9mIGRpZmZlcmVudApzb3VyY2VzIGNhbiBiZSBj dXN0b21pemVkIHVzaW5nICdlbGRvYy1kb2N1bWVudGF0aW9uLXN0cmF0ZWd5JywKJ2VsZG9jLWVj aG8tYXJlYS11c2UtbXVsdGlsaW5lLXAnIGFuZCAnZWxkb2MtcHJlZmVyLWRvYy1idWZmZXInLgoK VGhlIHZhcmlhYmxlcyAnZWdsb3QtcHV0LWRvYy1pbi1oZWxwLWJ1ZmZlcicgYW5kCidlZ2xvdC1h dXRvLWRpc3BsYXktaGVscC1idWZmZXInIGhhdmUgYmVlbiByZW1vdmVkLgoKKGdpdGh1YiM0Mzks IGdpdGh1YiM0OTQsIGdpdGh1YiM0ODEsIGdpdGh1YiM0NTQpCgoMCiogQ2hhbmdlcyBpbiBFZ2xv dCAxLjYgKDE2LzA0LzIwMjApCgoqKiBDb2x1bW4gb2Zmc2V0IGNhbGN1bGF0aW9uIGlzIG5vdyBM U1AtY29uZm9ybWFudC4KSXQgc2VlbXMgdGhlIG1ham9yaXR5IG9mIHNlcnZlcnMgbm93IGNvbXBs eSB3aXRoIHRoZSBsYW5ndWFnZSBzZXJ2ZXIKc3BlY2lmaWNhdGlvbiB3aGVuIGl0IGNvbWVzIHRv IGhhbmRsaW5nIG5vbi1BU0NJSSB0ZXh0cy4gIFRoZXJlZm9yZQp0aGUgZGVmYXVsdCB2YWx1ZXMg b2YgJ2VnbG90LW1vdmUtdG8tY29sdW1uLWZ1bmN0aW9uJyBhbmQKJ2VnbG90LWN1cnJlbnQtY29s dW1uLWZ1bmN0aW9uJyBoYXZlIGJlZW4gY2hhbmdlZC4gIENvbnN1bHQgdGhlCmRvY3VtZW50YXRp b24gb2YgdGhlc2UgdmFyaWFibGVzIGZvciBob3cgdG8gcmVzdG9yZSB0aGUgb2xkIGJlaGF2aW9y LgoKKGdpdGh1YiMzNjEpCgoqKiBMU1Agd29ya3NwYWNlL2NvbmZpZ3VyYXRpb24gcmVxdWVzdHMg YXJlIHN1cHBvcnRlZC4KQWxzbyBhIG5ldyBzZWN0aW9uICJQZXItcHJvamVjdCBzZXJ2ZXIgY29u ZmlndXJhdGlvbiIgaW4gdGhlIFJFQURNRS5tZApzaG91bGQgYW5zd2VyIHNvbWUgRkFRJ3MgaW4g dGhpcyByZWdhcmQuCgooZ2l0aHViIzMyNikKCgwKKiBDaGFuZ2VzIGluIEVnbG90IDEuNSAoMjAv MTAvMjAxOSkKCioqIEVnbG90IHRha2VzIG92ZXIgQ29tcGFueSBjb25maWd1cmF0aW9uLgpTaW1p bGFyIHRvIHdoYXQgd2FzIGFscmVhZHkgdGhlIGNhc2Ugd2l0aCBGbHltYWtlLCBFbGRvYyBhbmQg WHJlZiwgdXNlCmp1c3QgdGhlIGJhY2tlbmQgdGhhdCBjYW4gZG8gc29tZXRoaW5nIHVzZWZ1bCBp biBFZ2xvdCwKJ2NvbXBhbnktY2FwZicuICBTZWUgJ2VnbG90LXN0YXktb3V0LW9mJyB0byBvcHQg b3V0IG9mIHRoaXMuCgooZ2l0aHViIzMyNCkKCioqIE5ldyBvcHRpb24gJ2VnbG90LWF1dG9zaHV0 ZG93bicgYWRkZWQuClRoaXMgZGlzY29ubmVjdHMgdGhlIHNlcnZlciBhZnRlciBsYXN0IG1hbmFn ZWQgYnVmZmVyIGlzIGtpbGxlZC4KCihnaXRodWIjMjE3LCBnaXRodWIjMjcwKQoKKiogQ29tcGxl dGlvbiBzdXBwb3J0IGhhcyBiZWVuIGZpeGVkLgpBbW9uZyBvdGhlciB0aGluZ3MsIGNvbnNpZGVy IExTUCdzICJmaWx0ZXJUZXh0IiBjb29raWVzLCB3aGljaCBlbmFibGUKYSBraW5kIG9mIHBvb3It bWFuJ3MgZmxleC1tYXRjaGluZyBmb3Igc29tZSBiYWNrZW5kcy4KCihnaXRodWIjMjM1LCBnaXRo dWIjMzEzLCBnaXRodWIjMzExLCBnaXRodWIjMjc5KQoKKiogU3VwcG9ydHMgTFNQJ3MgImdvdG8g ZGVjbGFyYXRpb24vaW1wbGVtZW50YXRpb24vdHlwZURlZmluaXRpb24iLgoKKGdpdGh1YiMzMDIp CgoqKiBOZXcgb3B0aW9uICdlZ2xvdC1zZW5kLWNoYW5nZXMtaWRsZS10aW1lJyBhZGRlZC4KCihn aXRodWIjMjU4KQoKKiogRWdsb3QncyBFbGRvYyBubyBsb25nZXIgZmxpY2tlcnMgd2hlbiBtb3Zp bmcgYXJvdW5kLgoKKGdpdGh1YiMxOTgpCgoqKiBMYXJnZSBkb2NzIHNob3duIGluIGhlbHAgYnVm ZmVyIGluc3RlYWQgb2YgZWNobyBhcmVhIGJ5IGRlZmF1bHQuCkFsc28gYWRkIHR3byBuZXcgY3Vz dG9taXphdGlvbiB2YXJpYWJsZXMKJ2VnbG90LXB1dC1kb2MtaW4taGVscC1idWZmZXInIGFuZCAn ZWdsb3QtYXV0by1kaXNwbGF5LWhlbHAtYnVmZmVyJy4KCihnaXRodWIjMTk4KQoKKiogQnVpbHQt aW4gc3VwcG9ydCBmb3IgR28sIEVsaXhpciBhbmQgQWRhIGFkZGVkLgoKKGdpdGh1YiMzMDQsIGdp dGh1YiMyNjQsIGdpdGh1YiMzMTYpCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjQgKDUvMS8yMDE5 KQoKKiogUGFyYW1ldGVyIGhpZ2hsaWdodGluZyBpbiB0aGUgZmlyc3QgbGluZSBvZiBzaWduYXR1 cmUgY29ycmVjdGVkLgoKKiogTWFya2Rvd24gZG9jdW1lbnRhdGlvbiBzdHJpbmdzIGFyZSByZW5k ZXJlZCB3aXRoIGZhY2VzLgpFZ2xvdCB1c2VzICdnZm0tdmlldy1tb2RlJyBmb3IgdGhpcy4KCioq IEhhcmQgZGVwZW5kZW5jaWVzIG9uIEZseW1ha2UgaGF2ZSBiZWVuIHJlbW92ZWQuClRoZSB1c2Vy IGNhbiB0dXJuIEZseW1ha2Ugb2ZmIG5vdyBpbiBidWZmZXJzIG1hbmFnZWQgYnkgRWdsb3QuCgoq KiBDb25uZWN0aW9uIGhvb2tzIGFyZSBydW4gd2l0aCBwcm9wZXIgZGlyZWN0b3J5IGxvY2FsIHZh cmlhYmxlcy4KVGhpcyBmaXhlcyBpc3N1ZXMgd2l0aCBzdXNwaWNpb3VzbHkgZW1wdHkgJ2RpZENo YW5nZUNvbmZpZ3VyYXRpb24nCm1lc3NhZ2VzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNvbW11bmlj YXRlIHBhcmFtZXRlcnMgZnJvbSBhCmRpcmVjdG9yeS1zZXQgJ2VnbG90LXdvcmtzcGFjZS1jb25m aWd1cmF0aW9uJy4KCihnaXRodWIjMTk2KQoKKiogQ29tcGxldGlvbiBzb3J0aW5nIGhhcyBiZWVu IGZpeGVkLgpJZiB0aGUgc2VydmVyIHJldHVybnMgY29tcGxldGlvbnMgaW4gc29tZSBzZW5zaWJs ZSBvcmRlciwgRWdsb3Qgd2lsbAprZWVwIGl0LgoKKGdpdGh1YiMxOTApCgoqKiBGbHltYWtlIGFu ZCBFbGRvYyB0YWtlbiBvdmVyIGNvbXBsZXRlbHkgd2hpbGUgbWFuYWdpbmcgYnVmZmVycy4KTm8g bG9uZ2VyIHRyeSB0byBhZGQgRWdsb3QncyBmYWNpbGl0aWVzIHRvIGV4aXN0aW5nIGZhY2lsaXRp ZXMgaW4KdGhlc2UgdHdvIGRvbWFpbnMuCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjMgKDEwLzEy LzIwMTgpCgoqKiBQcm92aWRlIHN0cmljdCBjaGVja2luZyBvZiBpbmNvbWluZyBMU1AgbWVzc2Fn ZXMuCgooZ2l0aHViIzE0NCwgZ2l0aHViIzE1NikKCioqIEFkZCBicmllZiBjb250ZXh0IGFmdGVy ICd4cmVmLWZpbmQtcmVmZXJlbmNlcycgd2hlbiBhdmFpbGFibGUuCgooZ2l0aHViIzUyKQoKKiog U3VwcG9ydCAnY29tcGxldGlvbkNvbnRleHQnIHRvIGhlbHAgc2VydmVycyBsaWtlICdjY2xzJy4K CioqIFVzZSBGbHltYWtlIGZyb20gR05VIEVMUEEuCgooZ2l0aHViIzE3OCkKCgwKKiBDaGFuZ2Vz IGluIEVnbG90IDEuMiAoMjMvMTEvMjAxOCkKCioqIFN1cHBvcnQgc25pcHBldCBjb21wbGV0aW9u cy4KRWdsb3QgdXNlcyAneWFzbmlwcGV0LmVsJyBmb3IgdGhpcywgaWYgaXQgaXMgaW5zdGFsbGVk LgoKKGdpdGh1YiM1MCkKCioqICd3b3Jrc3BhY2UvZGlkQ2hhbmdlQ29uZmlndXJhdGlvbicgaW1w bGVtZW50ZWQuCgooZ2l0aHViIzI5KQoKKiogSGFuZGxlIGV4cGVyaW1lbnRhbC91bmtub3duIHNl cnZlciBtZXRob2RzIGdyYWNlZnVsbHkuCgooZ2l0aHViIzM5KQoKKiogQWNjZXB0IGZ1bmN0aW9u cyBhcyBlbnRyaWVzIGluICdlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnLgonQ09OVEFDVCcgaW4gdGhl ICcoTUFKT1ItTU9ERSAuIENPTlRBQ1QpJyBhc3NvY2lhdGlvbiBpbgonZWdsb3Qtc2VydmVyLXBy b2dyYW1zJyBjYW4gbm93IGJlIGEgZnVuY3Rpb24gb2Ygbm8gYXJndW1lbnRzCnByb2R1Y2luZyBh bnkgdmFsdWUgcHJldmlvdXNseSB2YWxpZCBmb3IgYSBjb250YWN0LiAgRnVuY3Rpb25zIGNhbiBi ZQppbnRlcmFjdGl2ZSBvciBub24taW50ZXJhY3RpdmUuCgooZ2l0aHViIzYzKQoKKiogSW1wcm92 ZSBjb21wbGV0aW9uIHRvIGJlIHNuYXBwaWVyIGFuZCBkb24ndCBoaW5kZXIgdHlwaW5nLgoKKGdp dGh1YiM2MSkKCioqIENvbnNpZGVyICc6dHJpZ2dlckNoYXJhY3RlcnMnIGluIGNvbXBhbnkgY29t cGxldGlvbi4KCihnaXRodWIjODApCgoqKiBBZGQgc3VwcG9ydCBmb3IgTFNQICdUZXh0RWRpdCcg b2JqZWN0cyBpbiBjb21wbGV0aW9uLgoKKiogUHJlZmVyIGNjbHMgb3ZlciBjcXVlcnkgZm9yIEMv QysrCgooZ2l0aHViIzk0KQoKKiogJ2VnbG90LWlnbm9yZWQtc2VydmVyLWNhcGFiaWxpdGVzJyBp cyBtb3JlIHVzZXItZnJpZW5kbHkuCgooZ2l0aHViIzEyNikKCioqIFN1cHBvcnRzIGFzeW5jaHJv bm91cyBjb25uZWN0aW9ucy4KSWYgYSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaXMgdGFraW5n IHRvbyBsb25nLCBpcyB3aWxsIGNvbnRpbnVlIGluCnRoZSBiYWNrZ3JvdW5kLiAgQSBuZXcgZGVm Y3VzdG9tICdlZ2xvdC1zeW5jLWNvbm5lY3QnIGNvbnRyb2xzIHRoaXMKZmVhdHVyZS4KCihnaXRo dWIjNjgpCgoqKiBUaGUgJ2VnbG90LXNodXRkb3duJyBjb21tYW5kIHByb21wdHMgZm9yIHRoZSBz ZXJ2ZXIgdG8gc2h1dGRvd24uCgooZ2l0aHViIzczKQoKKiogQWRkIHN1cHBvcnQgZm9yIHRoZSBF Y2xpcHNlIEpEVCBsYW5ndWFnZSBzZXJ2ZXIuCgooZ2l0aHViIzYzKQoKKiogQWRkIG91dC1vZi10 aGUtYm94IHN1cHBvcnQgZm9yIEhhc2tlbGwsIEtvdGxpbiwgR28sIE9jYW1sLCBSLgoKKiogQWRk IHRoZSBhYmlsaXR5IHRvIG1vdmUgdG8gTFNQLXByZWNpc2UgY29sdW1ucy4KU29tZSBzZXJ2ZXJz IGxpa2UgJ2NsYW5nZCcgZm9sbG93IHRoZSBVVEYtMTYtYmFzZWQgc3BlYyB2ZXJ5IGNsb3NlbHkK aGVyZS4KCihnaXRodWIjMTI0KQoKKiogRml4IGEgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlIGZv bnRpZnlpbmcgTFNQIGRvYy4KCihnaXRodWIjMTU0KQoKKiogRml4IG1hbnksIG1hbnkgYnVncwoK KGdpdGh1YiM0NCwgZ2l0aHViIzQ4LCBnaXRodWIjNTQsIGdpdGh1YiM1OCwgZ2l0aHViIzY0LCBn aXRodWIjNzQsCiBnaXRodWIjODEsIGdpdGh1YiM4MiwgZ2l0aHViIzg2LCBnaXRodWIjODcsIGdp dGh1YiM4MywgZ2l0aHViIzkzLAogZ2l0aHViIzEwMCwgZ2l0aHViIzExNSwgZ2l0aHViIzEyMCwg Z2l0aHViIzEyMSwgZ2l0aHViIzEyNiwKIGdpdGh1YiMxMzgsIGdpdGh1YiMxNDQsIGdpdGh1YiMx NTgsIGdpdGh1YiMxNjAsIGdpdGh1YiMxNjcpCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjEgKDkv Ny8yMDE4KQoKKiogSW1wbGVtZW50IFRDUCBhdXRvc3RhcnQvYXV0b2Nvbm5lY3QgKGFuZCBzdXBw b3J0IFJ1YnkncyBTb2xhcmdyYXBoKS4KVGhlICc6YXV0b3BvcnQnIHN5bWJvbCBpbiB0aGUgc2Vy dmVyIGludm9jYXRpb24gaXMgcmVwbGFjZWQKZHluYW1pY2FsbHkgYnkgYSBsb2NhbCBwb3J0IGJl bGlldmVkIHRvIGJlIHZhY2FudCwgc28gdGhhdCB0aGUgZW5zdWluZwpUQ1AgY29ubmVjdGlvbiBm aW5kcyBhIGxpc3RlbmluZyBzZXJ2ZXIuCgoqKiBFZ2xvdCBub3cgZGVwZW5kcyBvbiBFbWFjcyBs aWJyYXJ5ICdqc29ucnBjLmVsJy4KCgwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGlzIGZpbGUgaXMgcGFydCBv ZiBHTlUgRW1hY3MuCgpHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgoKR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggR05VIEVtYWNz LiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCgwKTG9jYWwg VmFyaWFibGVzOgpidWctcmVmZXJlbmNlLWJ1Zy1yZWdleHA6ICJcXChcXChnaXRodWJcXHxidWdc XCkjXFwoWzAtOV0rXFwpXFwpIgpidWctcmVmZXJlbmNlLXVybC1mb3JtYXQ6IGVnbG90LS1kZWJi dWdzLW9yLWdpdGh1Yi1idWctdXJpCnBhcmFncmFwaC1zZXBhcmF0ZTogIlsJIAxdIgpFbmQ6CgoA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWdsb3QtMS4xNy9lZ2xvdC5pbmZvAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMzAzNDUzADE0NjcxNTQwMDcw ADAxNDExMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3Rh ciAgAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGhpbGlwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUaGlzIGlzIGRvY3VvWEVOVS5pbmZvLCBwcm9kdWNlZCBi eSAudGV4aTJhbnktcmVhbCB2ZXJzaW9uIDcuMSBmcm9tCmVnbG90LnRleGkuCgpUaGlzIG1hbnVh bCBpcyBmb3IgRWdsb3QsIHRoZSBFbWFjcyBMU1AgY2xpZW50LgoKICAgQ29weXJpZ2h0IMKpIDIw MjItMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCiAgICAgUGVybWlzc2lvbiBp cyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzCiAgICAgZG9j dW1lbnQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vu c2UsCiAgICAgVmVyc2lvbiAxLjMgb3IgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlCiAgICAgRm91bmRhdGlvbjsgd2l0aCBubyBJbnZhcmlhbnQgU2VjdGlv bnMsIHdpdGggdGhlIEZyb250LUNvdmVyIFRleHRzCiAgICAgYmVpbmcgIkEgR05VIE1hbnVhbCIs IGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzIGFzIGluIChhKQogICAgIGJlbG93LiAgQSBj b3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkCiAg ICAgIkdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSIuCgogICAgIChhKSBUaGUgRlNGJ3Mg QmFjay1Db3ZlciBUZXh0IGlzOiAiWW91IGhhdmUgdGhlIGZyZWVkb20gdG8gY29weSBhbmQKICAg ICBtb2RpZnkgdGhpcyBHTlUgbWFudWFsLiIKSU5GTy1ESVItU0VDVElPTiBFbWFjcyBtaXNjIGZl YXR1cmVzClNUQVJULUlORk8tRElSLUVOVFJZCiogRWdsb3Q6IChlZ2xvdCkuICAgICAgICAgICAg IExhbmd1YWdlIFNlcnZlciBQcm90b2NvbCBjbGllbnQgZm9yIEVtYWNzLgpFTkQtSU5GTy1ESVIt RU5UUlkKCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBUb3AsICBOZXh0OiBRdWljayBT dGFydCwgIFVwOiAoZGlyKQoKRWdsb3QKKioqKioKCkVnbG90IGlzIHRoZSBFbWFjcyBjbGllbnQg Zm9yIHRoZSDigJxMYW5ndWFnZSBTZXJ2ZXIgUHJvdG9jb2zigJ0gKExTUCkuICBUaGUKbmFtZSAi RWdsb3QiIGlzIGFuIGFjcm9ueW0gdGhhdCBzdGFuZHMgZm9yICJFbWFjcyBwb2x5R0xPVCIuICgx KSBFZ2xvdApwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSBhbmQgYSBzZXQgb2YgY29tbWFuZHMgZm9y IGVucmljaGluZyB0aGUgc291cmNlCmNvZGUgZWRpdGluZyBjYXBhYmlsaXRpZXMgb2YgRW1hY3Mg dmlhIExTUC4gIExTUCBpcyBhIHN0YW5kYXJkaXplZApjb21tdW5pY2F0aW9ucyBwcm90b2NvbCBi ZXR3ZWVuIHNvdXJjZSBjb2RlIGVkaXRvcnMgKHN1Y2ggYXMgRW1hY3MpIGFuZApsYW5ndWFnZSBz ZXJ2ZXJzLS1wcm9ncmFtcyBleHRlcm5hbCB0byBFbWFjcyB3aGljaCBhbmFseXplIHRoZSBzb3Vy Y2UKY29kZSBvbiBiZWhhbGYgb2YgRW1hY3MuICBUaGUgcHJvdG9jb2wgYWxsb3dzIEVtYWNzIHRv IHJlY2VpdmUgdmFyaW91cwpzb3VyY2UgY29kZSBzZXJ2aWNlcyBmcm9tIHRoZSBzZXJ2ZXIsIHN1 Y2ggYXMgZGVzY3JpcHRpb24gYW5kIGxvY2F0aW9uCm9mIGZ1bmN0aW9uIGNhbGxzLCB0eXBlcyBv ZiB2YXJpYWJsZXMsIGNsYXNzIGRlZmluaXRpb25zLCBzeW50YWN0aWMKZXJyb3JzLCBldGMuICBU aGlzIHdheSwgRW1hY3MgZG9lc24ndCBuZWVkIHRvIGltcGxlbWVudCB0aGUKbGFuZ3VhZ2Utc3Bl Y2lmaWMgcGFyc2luZyBhbmQgYW5hbHlzaXMgY2FwYWJpbGl0aWVzIGluIGl0cyBvd24gY29kZSwg YnV0CmlzIHN0aWxsIGNhcGFibGUgb2YgcHJvdmlkaW5nIHNvcGhpc3RpY2F0ZWQgZWRpdGluZyBm ZWF0dXJlcyB0aGF0IHJlbHkKb24gc3VjaCBjYXBhYmlsaXRpZXMsIHN1Y2ggYXMgYXV0b21hdGlj IGNvZGUgY29tcGxldGlvbiwgZ28tdG8KZGVmaW5pdGlvbiBvZiBmdW5jdGlvbi9jbGFzcywgZG9j dW1lbnRhdGlvbiBvZiBzeW1ib2wgYXQtcG9pbnQsCnJlZmFjdG9yaW5nLCBvbi10aGUtZmx5IGRp YWdub3N0aWNzLCBhbmQgbW9yZS4KCiAgIEVnbG90IGl0c2VsZiBpcyBjb21wbGV0ZWx5IGxhbmd1 YWdlLWFnbm9zdGljLCBidXQgaXQgY2FuIHN1cHBvcnQgYW55CnByb2dyYW1taW5nIGxhbmd1YWdl IGZvciB3aGljaCB0aGVyZSBpcyBhIGxhbmd1YWdlIHNlcnZlciBhbmQgYW4gRW1hY3MKbWFqb3Ig bW9kZS4KCiAgIFRoaXMgbWFudWFsIGRvY3VtZW50cyBob3cgdG8gY29uZmlndXJlLCB1c2UsIGFu ZCBjdXN0b21pemUgRWdsb3QuCgogICBUaGlzIG1hbnVhbCBpcyBmb3IgRWdsb3QsIHRoZSBFbWFj cyBMU1AgY2xpZW50LgoKICAgQ29weXJpZ2h0IMKpIDIwMjItMjAyNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KCiAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3Ry aWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzCiAgICAgZG9jdW1lbnQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsCiAgICAgVmVyc2lvbiAxLjMgb3Ig YW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiAgICAgRm91 bmRhdGlvbjsgd2l0aCBubyBJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVy IFRleHRzCiAgICAgYmVpbmcgIkEgR05VIE1hbnVhbCIsIGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVy IFRleHRzIGFzIGluIChhKQogICAgIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGlu Y2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkCiAgICAgIkdOVSBGcmVlIERvY3VtZW50YXRp b24gTGljZW5zZSIuCgogICAgIChhKSBUaGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlzOiAiWW91 IGhhdmUgdGhlIGZyZWVkb20gdG8gY29weSBhbmQKICAgICBtb2RpZnkgdGhpcyBHTlUgbWFudWFs LiIKCiogTWVudToKCiogUXVpY2sgU3RhcnQ6OiAgICAgICAgICAgICAgICAgRm9yIHRoZSBpbXBh dGllbnQuCiogRWdsb3QgYW5kIExTUCBTZXJ2ZXJzOjogICAgICAgSG93IHRvIHdvcmsgd2l0aCBs YW5ndWFnZSBzZXJ2ZXJzLgoqIFVzaW5nIEVnbG90OjogICAgICAgICAgICAgICAgIEltcG9ydGFu dCBFZ2xvdCBjb21tYW5kcyBhbmQgdmFyaWFibGVzLgoqIEN1c3RvbWl6aW5nIEVnbG90OjogICAg ICAgICAgIEVnbG90IGN1c3RvbWl6YXRpb24gYW5kIGFkdmFuY2VkIGZlYXR1cmVzLgoqIEFkdmFu Y2VkIHNlcnZlciBjb25maWd1cmF0aW9uOjogIEZpbmUtdHVuZSBhIHNwZWNpZmljIGxhbmd1YWdl IHNlcnZlcgoqIEV4dGVuZGluZyBFZ2xvdDo6ICAgICAgICAgICAgIFdyaXRpbmcgRWdsb3QgZXh0 ZW5zaW9ucyBpbiBFbGlzcAoqIFRyb3VibGVzaG9vdGluZyBFZ2xvdDo6ICAgICAgIFRyb3VibGVz aG9vdGluZyBhbmQgcmVwb3J0aW5nIGJ1Z3MuCiogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlOjogIFRoZSBsaWNlbnNlIGZvciB0aGlzIG1hbnVhbC4KKiBJbmRleDo6CgogICAtLS0tLS0t LS0tIEZvb3Rub3RlcyAtLS0tLS0tLS0tCgogICAoMSkgQSDigJxwb2x5Z2xvdOKAnSBpcyBhIHBl cnNvbiB3aG8gaXMgYWJsZSB0byB1c2Ugc2V2ZXJhbCBsYW5ndWFnZXMuCgofCkZpbGU6IGRvY3Vv WEVOVS5pbmZvLCAgTm9kZTogUXVpY2sgU3RhcnQsICBOZXh0OiBFZ2xvdCBhbmQgTFNQIFNlcnZl cnMsICBQcmV2OiBUb3AsICBVcDogVG9wCgoxIFF1aWNrIFN0YXJ0CioqKioqKioqKioqKioKClRo aXMgY2hhcHRlciBwcm92aWRlcyBjb25jaXNlIGluc3RydWN0aW9ucyBmb3Igc2V0dGluZyB1cCBh bmQgdXNpbmcKRWdsb3Qgd2l0aCB5b3VyIHByb2dyYW1taW5nIHByb2plY3QgaW4gY29tbW9uIHVz YWdlIHNjZW5hcmlvcy4gIEZvciBtb3JlCmRldGFpbGVkIGluc3RydWN0aW9ucyByZWdhcmRpbmcg RWdsb3Qgc2V0dXAsICpub3RlIEVnbG90IGFuZCBMU1AKU2VydmVyczo6LiAgKk5vdGUgVXNpbmcg RWdsb3Q6OiwgZm9yIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHVzaW5nCkVnbG90LCBhbmQgc2Vl ICpub3RlIEN1c3RvbWl6aW5nIEVnbG90OjosIGZvciBhZGFwdGluZyBFZ2xvdCB0byBsZXNzCmNv bW1vbiB1c2UgcGF0dGVybnMuCgogICBIZXJlJ3MgaG93IHRvIHN0YXJ0IHVzaW5nIEVnbG90IHdp dGggeW91ciBwcm9ncmFtbWluZyBwcm9qZWN0OgoKICAxLiBTZWxlY3QgYW5kIGluc3RhbGwgYSBs YW5ndWFnZSBzZXJ2ZXIuCgogICAgIEVnbG90IGNvbWVzIHByZS1jb25maWd1cmVkIHdpdGggbWFu eSBwb3B1bGFyIGxhbmd1YWdlIHNlcnZlcnMsIHNlZQogICAgIHRoZSB2YWx1ZSBvZiDigJhlZ2xv dC1zZXJ2ZXItcHJvZ3JhbXPigJkuICBJZiB0aGUgc2VydmVyKHMpIG1lbnRpb25lZAogICAgIHRo ZXJlIHNhdGlzZnkgeW91ciBuZWVkcyBmb3IgdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlKHMpIHdp dGggd2hpY2gKICAgICB5b3Ugd2FudCB0byB1c2UgRWdsb3QsIHlvdSBqdXN0IG5lZWQgdG8gbWFr ZSBzdXJlIHRob3NlIHNlcnZlcnMgYXJlCiAgICAgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLiAg QWx0ZXJuYXRpdmVseSwgaW5zdGFsbCBvbmUgb3IgbW9yZQogICAgIHNlcnZlcnMgb2YgeW91ciBj aG9pY2UgYW5kIGFkZCB0aGVtIHRvIHRoZSB2YWx1ZSBvZgogICAgIOKAmGVnbG90LXNlcnZlci1w cm9ncmFtc+KAmSwgYXMgZGVzY3JpYmVkIGluICpub3RlIFNldHRpbmcgVXAgTFNQCiAgICAgU2Vy dmVyczo6LgoKICAyLiBUdXJuIG9uIEVnbG90IGZvciB5b3VyIHByb2plY3QuCgogICAgIFRvIHN0 YXJ0IHVzaW5nIEVnbG90IGZvciBhIHByb2plY3QsIHR5cGUg4oCYTS14IGVnbG90IDxSRVQ+4oCZ IGluIGEKICAgICBidWZmZXIgdmlzaXRpbmcgYW55IGZpbGUgdGhhdCBiZWxvbmdzIHRvIHRoZSBw cm9qZWN0LiAgVGhpcyBzdGFydHMKICAgICB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGNvbmZpZ3VyZWQg Zm9yIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBvZiB0aGF0CiAgICAgYnVmZmVyLCBhbmQgY2F1 c2VzIEVnbG90IHRvIHN0YXJ0IOKAnG1hbmFnaW5n4oCdIGZpbGUtdmlzaXRpbmcgYnVmZmVycwog ICAgIHJlbGF0ZWQgdG8gdGhhdCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gIFRoaXMgaW5jbHVkZXMg ZmlsZXMgdGhhdCBhcmUKICAgICBhbHJlYWR5IHZpc2l0ZWQgYXQgdGhlIHRpbWUgdGhlIOKAmGVn bG904oCZIGNvbW1hbmQgaXMgaW52b2tlZCwgYXMgd2VsbAogICAgIGFzIGFueSBmaWxlcyB2aXNp dGVkIGFmdGVyIHRoaXMgaW52b2NhdGlvbi4KCiAgICAgVGhlIG5vdGlvbiBvZiBhICJwcm9qZWN0 IiB1c2VkIGJ5IEVnbG90IGlzIHRoZSBzYW1lIEVtYWNzIHVzZXMKICAgICAoKm5vdGUgKGVtYWNz KVByb2plY3RzOjopOiBpbiB0aGUgc2ltcGxlc3QgY2FzZSwgdGhlICJwcm9qZWN0IiBpcwogICAg IHRoZSBzaW5nbGUgZmlsZSB5b3UgYXJlIGVkaXRpbmcsIGJ1dCBpdCBjYW4gYWxzbyBiZSBhbGwg dGhlIGZpbGVzCiAgICAgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IG9yIGEgZGlyZWN0b3J5IHRyZWUg dW5kZXIgc29tZSB2ZXJzaW9uCiAgICAgY29udHJvbCBzeXN0ZW0sIHN1Y2ggYXMgR2l0LgoKICAg ICBUaGVyZSBhcmUgYWx0ZXJuYXRlIHdheXMgb2Ygc3RhcnRpbmcgRWdsb3Q7IHNlZSAqbm90ZSBT dGFydGluZwogICAgIEVnbG90OjogZm9yIGRldGFpbHMuCgogIDMuIFVzZSBFZ2xvdC4KCiAgICAg TW9zdCBFZ2xvdCBmYWNpbGl0aWVzIGFyZSBpbnRlZ3JhdGVkIGludG8gRW1hY3MgZmVhdHVyZXMs IHN1Y2ggYXMKICAgICBFbERvYywgRmx5bWFrZSwgWHJlZiwgYW5kIEltZW51LiAgSG93ZXZlciwg RWdsb3QgYWxzbyBwcm92aWRlcwogICAgIGNvbW1hbmRzIG9mIGl0cyBvd24sIG1haW5seSB0byBw ZXJmb3JtIHRhc2tzIGJ5IHRoZSBsYW5ndWFnZQogICAgIHNlcnZlciwgc3VjaCBhcyDigJhNLXgg ZWdsb3QtcmVuYW1l4oCZICh0byByZW5hbWUgYW4gaWRlbnRpZmllciBhY3Jvc3MKICAgICB0aGUg ZW50aXJlIHByb2plY3QpLCDigJhNLXggZWdsb3QtZm9ybWF04oCZICh0byByZWZvcm1hdCBhbmQg cmVpbmRlbnQKICAgICBjb2RlKSwgYW5kIHNvbWUgb3RoZXJzLiAgKk5vdGUgRWdsb3QgQ29tbWFu ZHM6OiwgZm9yIHRoZSBkZXRhaWxlZAogICAgIGxpc3Qgb2YgRWdsb3QgY29tbWFuZHMuCgogIDQu IFRoYXQncyBpdCEKCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBFZ2xvdCBhbmQgTFNQ IFNlcnZlcnMsICBOZXh0OiBVc2luZyBFZ2xvdCwgIFByZXY6IFF1aWNrIFN0YXJ0LCAgVXA6IFRv cAoKMiBFZ2xvdCBhbmQgTFNQIFNlcnZlcnMKKioqKioqKioqKioqKioqKioqKioqKioKClRoaXMg Y2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHNldCB1cCBFZ2xvdCBmb3IgeW91ciBuZWVkcywgYW5k IGhvdyB0bwpzdGFydCBpdC4KCiogTWVudToKCiogU2V0dGluZyBVcCBMU1AgU2VydmVyczo6ICAg SG93IHRvIGNvbmZpZ3VyZSBMU1Agc2VydmVycyBmb3IgeW91ciBuZWVkcy4KKiBTdGFydGluZyBF Z2xvdDo6ICAgICAgICAgICAgICBXYXlzIG9mIHN0YXJ0aW5nIEVnbG90IGZvciB5b3VyIHByb2pl Y3QuCiogU2h1dHRpbmcgRG93biBMU1AgU2VydmVyczo6CgofCkZpbGU6IGRvY3VvWEVOVS5pbmZv LCAgTm9kZTogU2V0dGluZyBVcCBMU1AgU2VydmVycywgIE5leHQ6IFN0YXJ0aW5nIEVnbG90LCAg VXA6IEVnbG90IGFuZCBMU1AgU2VydmVycwoKMi4xIFNldHRpbmcgVXAgTFNQIFNlcnZlcnMKPT09 PT09PT09PT09PT09PT09PT09PT09PT0KCkZvciBFZ2xvdCB0byBiZSB1c2VmdWwsIGl0IG11c3Qg Zmlyc3QgYmUgY29tYmluZWQgd2l0aCBhIHN1aXRhYmxlCmxhbmd1YWdlIHNlcnZlci4gIFVzdWFs bHksIHRoYXQgbWVhbnMgcnVubmluZyB0aGUgc2VydmVyIHByb2dyYW0gbG9jYWxseQphcyBhIGNo aWxkIHByb2Nlc3Mgb2YgRW1hY3MgKCpub3RlIChlbGlzcClQcm9jZXNzZXM6OikgYW5kIGNvbW11 bmljYXRpbmcKd2l0aCBpdCB2aWEgdGhlIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQgc3RyZWFt cy4KCiAgIFRoZSBsYW5ndWFnZSBzZXJ2ZXIgcHJvZ3JhbSBtdXN0IGJlIGluc3RhbGxlZCBzZXBh cmF0ZWx5LCBhbmQgaXMgbm90CmZ1cnRoZXIgZGlzY3Vzc2VkIGluIHRoaXMgbWFudWFsOyByZWZl ciB0byB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUKcGFydGljdWxhciBzZXJ2ZXIocykgeW91IHdh bnQgdG8gaW5zdGFsbC4KCiAgIFRvIHVzZSBhIGxhbmd1YWdlIHNlcnZlciwgRWdsb3QgbXVzdCBr bm93IGhvdyB0byBzdGFydCBpdCBhbmQgd2hpY2gKcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGVhY2gg c2VydmVyIHN1cHBvcnRzLiAgVGhpcyBpbmZvcm1hdGlvbiBpcwpwcm92aWRlZCBieSB0aGUgdmFy aWFibGUg4oCYZWdsb3Qtc2VydmVyLXByb2dyYW1z4oCZLgoKIC0tIFZhcmlhYmxlOiBlZ2xvdC1z ZXJ2ZXItcHJvZ3JhbXMKICAgICBUaGlzIHZhcmlhYmxlIGFzc29jaWF0ZXMgbWFqb3IgbW9kZXMg d2l0aCBuYW1lcyBhbmQgY29tbWFuZC1saW5lCiAgICAgYXJndW1lbnRzIG9mIHRoZSBsYW5ndWFn ZSBzZXJ2ZXIgcHJvZ3JhbXMgY29ycmVzcG9uZGluZyB0byB0aGUKICAgICBwcm9ncmFtbWluZyBs YW5ndWFnZSBvZiBlYWNoIG1ham9yIG1vZGUuICBJdCBwcm92aWRlcyBhbGwgdGhlCiAgICAgaW5m b3JtYXRpb24gdGhhdCBFZ2xvdCBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBwcm9ncmFtbWluZyBs YW5ndWFnZQogICAgIG9mIHRoZSBzb3VyY2UgeW91IGFyZSBlZGl0aW5nLgoKICAgICBUaGUgdmFs dWUgb2YgdGhlIHZhcmlhYmxlIGlzIGFuIGFsaXN0LCB3aG9zZSBlbGVtZW50cyBhcmUgb2YgdGhl CiAgICAgZm9ybSDigJgoTUFKT1ItTU9ERSAuIFNFUlZFUinigJkuCgogICAgIFRoZSBNQUpPUi1N T0RFIG9mIHRoZSBhbGlzdCBlbGVtZW50cyBjYW4gYmUgZWl0aGVyIGEgc3ltYm9sIG9mIGFuCiAg ICAgRW1hY3MgbWFqb3IgbW9kZSBvciBhIGxpc3Qgb2YgdGhlIGZvcm0g4oCYKE1PREUgOmxhbmd1 YWdlLWlkIElEKeKAmSwKICAgICB3aXRoIE1PREUgYmVpbmcgYSBtYWpvci1tb2RlIHN5bWJvbCBh bmQgSUQgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzCiAgICAgdGhlIGxhbmd1YWdlIHRvIHRoZSBz ZXJ2ZXIgKGlmIEVnbG90IGNhbm5vdCBieSBpdHNlbGYgY29udmVydCB0aGUKICAgICBtYWpvci1t b2RlIHRvIHRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIHN0cmluZyByZXF1aXJlZCBieSB0aGUKICAg ICBzZXJ2ZXIpLiAgSW4gYWRkaXRpb24sIE1BSk9SLU1PREUgY2FuIGJlIGEgbGlzdCBvZiBzZXZl cmFsIG1ham9yCiAgICAgbW9kZXMgc3BlY2lmaWVkIGluIG9uZSBvZiB0aGUgYWJvdmUgZm9ybXMg LSB0aGlzIG1lYW5zIGEgcnVubmluZwogICAgIGluc3RhbmNlIG9mIHRoZSBhc3NvY2lhdGVkIHNl cnZlciBpcyByZXNwb25zaWJsZSBmb3IgZmlsZXMgb2YKICAgICBtdWx0aXBsZSBtYWpvciBtb2Rl cyBvciBsYW5ndWFnZXMgaW4gdGhlIHByb2plY3QuCgogICAgIFRoZSBTRVJWRVIgcGFydCBvZiB0 aGUgYWxpc3QgZWxlbWVudHMgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgICDigJgo UFJPR1JBTSBBUkdTLi4uKeKAmQogICAgICAgICAgVGhpcyBzYXlzIHRvIGludm9rZSBQUk9HUkFN IHdpdGggemVybyBvciBtb3JlIGFyZ3VtZW50cyBBUkdTOwogICAgICAgICAgdGhlIHByb2dyYW0g aXMgZXhwZWN0ZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBFbWFjcyB2aWEgdGhlCiAgICAgICAgICBz dGFuZGFyZCBpbnB1dCBhbmQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbXMuCgogICAgIOKAmChQUk9H UkFNIEFSR1MuLi4gOmluaXRpYWxpemF0aW9uT3B0aW9ucyBPUFRJT05TLi4uKeKAmQogICAgICAg ICAgUFJPR1JBTSBpcyBpbnZva2VkIHdpdGggQVJHUyBidXQgT1BUSU9OUyBzcGVjaWZpZXMgaG93 IHRvCiAgICAgICAgICBjb25zdHJ1Y3QgdGhlIOKAmDppbml0aWFsaXphdGlvbk9wdGlvbnPigJkg SlNPTiBvYmplY3QgdG8gcGFzcyB0aGUKICAgICAgICAgIHNlcnZlciBvbiBkdXJpbmcgdGhlIExT UCBoYW5kc2hha2UgKCpub3RlIEFkdmFuY2VkIHNlcnZlcgogICAgICAgICAgY29uZmlndXJhdGlv bjo6KS4KCiAgICAg4oCYKEhPU1QgUE9SVCBBUkdTLi4uKeKAmQogICAgICAgICAgSGVyZSBIT1NU IGlzIGEgc3RyaW5nIGFuZCBQT1JUIGlzIGEgcG9zaXRpdmUgaW50ZWdlcgogICAgICAgICAgc3Bl Y2lmeWluZyBhIFRDUCBjb25uZWN0aW9uIHRvIGEgcmVtb3RlIHNlcnZlci4gIFRoZSBBUkdTIGFy ZQogICAgICAgICAgcGFzc2VkIHRvIOKAmG9wZW4tbmV0d29yay1zdHJlYW3igJksIGUuZy4gaWYg dGhlIGNvbm5lY3Rpb24gbmVlZHMKICAgICAgICAgIHRvIHVzZSBlbmNyeXB0aW9uIG9yIG90aGVy IG5vbi1kZWZhdWx0IHBhcmFtZXRlcnMgKCpub3RlCiAgICAgICAgICAoZWxpc3ApTmV0d29yazo6 KS4KCiAgICAg4oCYKFBST0dSQU0gQVJHUy4uLiA6YXV0b3BvcnQgTU9SRUFSR1MuLi4p4oCZCiAg ICAgICAgICBQUk9HUkFNIGlzIHN0YXJ0ZWQgd2l0aCBhIGNvbW1hbmQgbGluZSBjb25zdHJ1Y3Rl ZCBmcm9tIEFSR1MKICAgICAgICAgIGZvbGxvd2VkIGJ5IGFuIGF2YWlsYWJsZSBzZXJ2ZXIgcG9y dCBhbmQgdGhlIHJlc3Qgb2YgYXJndW1lbnRzCiAgICAgICAgICBpbiBNT1JFQVJHUzsgRWdsb3Qg dGhlbiBlc3RhYmxpc2hlcyBhIFRDUCBjb25uZWN0aW9uIHdpdGggdGhlCiAgICAgICAgICBzZXJ2 ZXIgdmlhIHRoYXQgcG9ydCBvbiB0aGUgbG9jYWwgaG9zdC4KCiAgICAg4oCYRlVOQ1RJT07igJkK ICAgICAgICAgIFRoaXMgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgYSBzaW5nbGUgYXJndW1lbnQ6 IG5vbi3igJhuaWzigJkgaWYKICAgICAgICAgIHRoZSBjb25uZWN0aW9uIHdhcyByZXF1ZXN0ZWQg aW50ZXJhY3RpdmVseSAoZS5nLiwgYnkgdGhlCiAgICAgICAgICDigJhlZ2xvdOKAmSBjb21tYW5k KSwgb3RoZXJ3aXNlIOKAmG5pbOKAmS4gIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuCiAgICAg ICAgICBhIHZhbHVlIG9mIGFueSBvZiB0aGUgZm9ybXMgZGVzY3JpYmVkIGFib3ZlLiAgVGhpcyBh bGxvd3MKICAgICAgICAgIGludGVyYWN0aW9uIHdpdGggdGhlIHVzZXIgZm9yIGRldGVybWluaW5n IHRoZSBwcm9ncmFtIHRvIHN0YXJ0CiAgICAgICAgICBhbmQgaXRzIGNvbW1hbmQtbGluZSBhcmd1 bWVudHMuCgogICBFZ2xvdCBjb21lcyB3aXRoIGEgZmFpcmx5IGNvbXBsZXRlIHNldCBvZiBhc3Nv Y2lhdGlvbnMgb2YgbWFqb3ItbW9kZXMKdG8gcG9wdWxhciBsYW5ndWFnZSBzZXJ2ZXJzIHByZWRl ZmluZWQuICBJZiB5b3UgbmVlZCB0byBhZGQgc2VydmVyCmFzc29jaWF0aW9ucyB0byB0aGUgZGVm YXVsdCBsaXN0LCB1c2Ug4oCYYWRkLXRvLWxpc3TigJkuICBGb3IgZXhhbXBsZSwgaWYKdGhlcmUg aXMgYSBoeXBvdGhldGljYWwgbGFuZ3VhZ2Ugc2VydmVyIHByb2dyYW0g4oCYZm9vbHPigJkgZm9y IHRoZSBsYW5ndWFnZQrigJhGb2/igJkgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IGFuIEVtYWNzIG1h am9yLW1vZGUg4oCYZm9vLW1vZGXigJksIHlvdSBjYW4gYWRkCml0IHRvIHRoZSBhbGlzdCBsaWtl IHRoaXM6CgogICAgICh3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZWdsb3QKICAgICAgIChhZGQtdG8t bGlzdCAnZWdsb3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgICAgICAgJyhmb28tbW9k ZSAuICgiZm9vbHMiICItLXN0ZGlvIikpKSkKCiAgIFRoaXMgd2lsbCBpbnZva2UgdGhlIHByb2dy YW0g4oCYZm9vbHPigJkgd2l0aCB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50CuKAmC0tc3RkaW/i gJkgaW4gc3VwcG9ydCBvZiBlZGl0aW5nIHNvdXJjZSBmaWxlcyBmb3Igd2hpY2ggRW1hY3MgdHVy bnMgb24K4oCYZm9vLW1vZGXigJksIGFuZCB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhlIHByb2dy YW0gdmlhIHRoZSBzdGFuZGFyZApzdHJlYW1zLiAgQXMgdXN1YWwgd2l0aCBpbnZva2luZyBwcm9n cmFtcywgdGhlIGV4ZWN1dGFibGUgZmlsZSDigJhmb29sc+KAmQpzaG91bGQgYmUgaW4gb25lIG9m IHRoZSBkaXJlY3RvcmllcyBtZW50aW9uZWQgYnkgdGhlIOKAmGV4ZWMtcGF0aOKAmQp2YXJpYWJs ZSAoKm5vdGUgKGVsaXNwKVN1YnByb2Nlc3MgQ3JlYXRpb246OiksIGZvciBFZ2xvdCB0byBiZSBh YmxlIHRvCmZpbmQgaXQuCgogICBTb21ldGltZXMsIG11bHRpcGxlIHNlcnZlcnMgYXJlIGFjY2Vw dGFibGUgYWx0ZXJuYXRpdmVzIGZvciBoYW5kbGluZwphIGdpdmVuIG1ham9yLW1vZGUuICBJbiB0 aG9zZSBjYXNlcywgeW91IG1heSBjb21iaW5lIHRoZSBoZWxwZXIgZnVuY3Rpb24K4oCYZWdsb3Qt YWx0ZXJuYXRpdmVz4oCZIHdpdGggdGhlIGZ1bmN0aW9uYWwgZm9ybSBvZgrigJhlZ2xvdC1zZXJ2 ZXItcHJvZ3JhbXPigJkuCgogICAgICh3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZWdsb3QKICAgICAg IChhZGQtdG8tbGlzdCAnZWdsb3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgICAgICAg YChmb28tbW9kZSAuICwoZWdsb3QtYWx0ZXJuYXRpdmVzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcoKCJmb29scyIgIi0tc3RkaW8iKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgicGhld2xzIiAiLS1mYXN0IikpKSkpKQoKICAgSWYgeW91IGhhdmUg 4oCYZm9vbHPigJkgYW5kIOKAmHBoZXdsc+KAmSBpbnN0YWxsZWQsIHRoZSBmdW5jdGlvbiBwcm9k dWNlZCBieQrigJhlZ2xvdC1hbHRlcm5hdGl2ZXPigJkgd2lsbCBwcm9tcHQgZm9yIHRoZSBzZXJ2 ZXIgdG8gdXNlIGluIOKAmGZvby1tb2Rl4oCZCmJ1ZmZlcnMuICBFbHNlIGl0IHdpbGwgdXNlIHdo aWNoZXZlciBpcyBhdmFpbGFibGUuCgofCkZpbGU6IGRvY3VvWEVOVS5pbmZvLCAgTm9kZTogU3Rh cnRpbmcgRWdsb3QsICBOZXh0OiBTaHV0dGluZyBEb3duIExTUCBTZXJ2ZXJzLCAgUHJldjogU2V0 dGluZyBVcCBMU1AgU2VydmVycywgIFVwOiBFZ2xvdCBhbmQgTFNQIFNlcnZlcnMKCjIuMiBTdGFy dGluZyBFZ2xvdAo9PT09PT09PT09PT09PT09PT0KClRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gc3Rh cnQgRWdsb3QgaXMgdG8gc2ltcGx5IHZpc2l0IGEgc291cmNlIGZpbGUgb2YgYQpnaXZlbiBsYW5n dWFnZSBhbmQgdXNlIHRoZSBjb21tYW5kIOKAmE0teCBlZ2xvdOKAmS4gIFRoaXMgc3RhcnRzIHRo ZQpsYW5ndWFnZSBzZXJ2ZXIgc3VpdGFibGUgZm9yIHRoZSB2aXNpdGVkIGZpbGUncyBtYWpvci1t b2RlLCBhbmQgYXR0ZW1wdHMKdG8gY29ubmVjdCB0byBpdC4gIElmIHRoZSBjb25uZWN0aW9uIHRv IHRoZSBsYW5ndWFnZSBzZXJ2ZXIgaXMKc3VjY2Vzc2Z1bCwgeW91IHdpbGwgc2VlIHRoZSDigJhb ZWdsb3Q6UFJPSkVDVF3igJkgaW5kaWNhdG9yIG9uIHRoZSBtb2RlCmxpbmUgd2hpY2ggcmVmbGVj dHMgdGhlIHNlcnZlciB0aGF0IHdhcyBzdGFydGVkLiAgSWYgdGhlIHNlcnZlciBwcm9ncmFtCmNv dWxkbid0IGJlIHN0YXJ0ZWQgb3IgY29ubmVjdGlvbiB0byBpdCBmYWlsZWQsIHlvdSB3aWxsIHNl ZSBhbiBlcnJvcgptZXNzYWdlOyBpbiB0aGF0IGNhc2UsIHRyeSB0byB0cm91Ymxlc2hvb3QgdGhl IHByb2JsZW0gYXMgZGVzY3JpYmVkIGluCipub3RlIFRyb3VibGVzaG9vdGluZyBFZ2xvdDo6LiAg T25jZSBhIGxhbmd1YWdlIHNlcnZlciB3YXMgc3VjY2Vzc2Z1bGx5CnN0YXJ0ZWQgYW5kIEVnbG90 IGNvbm5lY3RlZCB0byBpdCwgeW91IGNhbiBpbW1lZGlhdGVseSBzdGFydCB1c2luZyB0aGUKRW1h Y3MgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IEVnbG90LCBhcyBkZXNjcmliZWQgaW4gKm5vdGUgRWds b3QKRmVhdHVyZXM6Oi4KCiAgIEEgc2luZ2xlIEVnbG90IHNlc3Npb24gZm9yIGEgY2VydGFpbiBt YWpvci1tb2RlIHVzdWFsbHkgc2VydmVzIGFsbAp0aGUgYnVmZmVycyB1bmRlciB0aGF0IG1vZGUg d2hpY2ggdmlzaXQgZmlsZXMgZnJvbSB0aGUgc2FtZSBwcm9qZWN0LCBzbwp5b3UgZG9uJ3QgbmVl ZCB0byBpbnZva2Ug4oCYTS14IGVnbG904oCZIGFnYWluIHdoZW4geW91IHZpc2l0IGFub3RoZXIg ZmlsZQpmcm9tIHRoZSBzYW1lIHByb2plY3Qgd2hpY2ggaXMgZWRpdGVkIHVzaW5nIHRoZSBzYW1l IG1ham9yLW1vZGUuICBUaGlzCmlzIGJlY2F1c2UgRWdsb3QgdXNlcyB0aGUgRW1hY3MgcHJvamVj dCBpbmZyYXN0cnVjdHVyZSwgYXMgZGVzY3JpYmVkIGluCipub3RlIEVnbG90IGFuZCBCdWZmZXJz OjosIGFuZCB0aGlzIGtub3dzIGFib3V0IGZpbGVzIHRoYXQgYmVsb25nIHRvIHRoZQpzYW1lIHBy b2plY3QuICBUaHVzLCBhZnRlciBzdGFydGluZyBhbiBFZ2xvdCBzZXNzaW9uIGZvciBzb21lIGJ1 ZmZlciwKdGhhdCBzZXNzaW9uIGlzIGF1dG9tYXRpY2FsbHkgcmV1c2VkIHdoZW4gdmlzaXRpbmcg ZmlsZXMgaW4gdGhlIHNhbWUKcHJvamVjdCB3aXRoIHRoZSBzYW1lIG1ham9yLW1vZGUuCgogICBB bHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgY29uZmlndXJlIEVnbG90IHRvIHN0YXJ0IGF1dG9tYXRp Y2FsbHkgZm9yCm9uZSBvciBtb3JlIG1ham9yLW1vZGVzIGZyb20gdGhlIHJlc3BlY3RpdmUgbW9k ZSBob29rcy4gIEhlcmUncyBhbgpleGFtcGxlIGZvciBhIGh5cG90aGV0aWNhbCDigJhmb28tbW9k ZeKAmToKCiAgICAgIChhZGQtaG9vayAnZm9vLW1vZGUtaG9vayAnZWdsb3QtZW5zdXJlKQoKVGhl IGZ1bmN0aW9uIOKAmGVnbG90LWVuc3VyZeKAmSB3aWxsIHN0YXJ0IGFuIEVnbG90IHNlc3Npb24g Zm9yIGVhY2ggYnVmZmVyCmluIHdoaWNoIOKAmGZvby1tb2Rl4oCZIGlzIHR1cm5lZCBvbiwgaWYg dGhlcmUgaXNuJ3QgYWxyZWFkeSBhbiBFZ2xvdApzZXNzaW9uIHRoYXQgaGFuZGxlcyB0aGUgYnVm ZmVyLiAgTm90ZSB0aGF0IHRoaXMgdmFyaWFudCBvZiBzdGFydGluZyBhbgpFZ2xvdCBzZXNzaW9u IGlzIG5vbi1pbnRlcmFjdGl2ZSwgc28gaXQgc2hvdWxkIGJlIHVzZWQgb25seSB3aGVuIHlvdSBh cmUKY29uZmlkZW50IHRoYXQgRWdsb3QgY2FuIGJlIHN0YXJ0ZWQgcmVsaWFibHkgZm9yIGFueSBm aWxlIHdoaWNoIG1heSBiZQp2aXNpdGVkIHdpdGggdGhlIG1ham9yLW1vZGUgaW4gcXVlc3Rpb24u CgogICBOb3RlIHRoYXQgaXQncyBvZnRlbiBkaWZmaWN1bHQgdG8gZXN0YWJsaXNoIHRoaXMgY29u ZmlkZW5jZSBmdWxseSwgc28KaXQgbWF5IGJlIHdpc2UgdG8gdXNlIHRoZSBpbnRlcmFjdGl2ZSBj b21tYW5kIOKAmGVnbG904oCZIGluc3RlYWQuICBZb3Ugb25seQpuZWVkIHRvIGludm9rZSBpdCBv bmNlIHBlciBwcm9qZWN0LCBhcyBhbGwgb3RoZXIgZmlsZXMgdmlzaXRlZCB3aXRoaW4KdGhlIHNh bWUgcHJvamVjdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgbWFuYWdlZCB3aXRoIG5vIGZ1cnRoZXIg dXNlcgppbnRlcnZlbnRpb24gbmVlZGVkLgoKICAgV2hlbiBFZ2xvdCBjb25uZWN0cyB0byBhIGxh bmd1YWdlIHNlcnZlciBmb3IgdGhlIGZpcnN0IHRpbWUgaW4gYW4KRW1hY3Mgc2Vzc2lvbiwgaXQg cnVucyB0aGUgaG9vayDigJhlZ2xvdC1jb25uZWN0LWhvb2vigJkgKCpub3RlIEVnbG90ClZhcmlh Ymxlczo6KS4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBTaHV0dGluZyBEb3duIExT UCBTZXJ2ZXJzLCAgUHJldjogU3RhcnRpbmcgRWdsb3QsICBVcDogRWdsb3QgYW5kIExTUCBTZXJ2 ZXJzCgoyLjMgU2h1dHRpbmcgRG93biBMU1AgU2VydmVycwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQoKV2hlbiBFZ2xvdCBpcyB0dXJuZWQgb24sIGl0IGFycmFuZ2VzIGZvciB0dXJuaW5n IGl0c2VsZiBvZmYKYXV0b21hdGljYWxseSBpZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb2Nlc3Mg dGVybWluYXRlcy4gIFR1cm5pbmcgb2ZmCkVnbG90IG1lYW5zIHRoYXQgaXQgc2h1dHMgZG93biB0 aGUgc2VydmVyIGNvbm5lY3Rpb24sIGNlYXNlcyBpdHMKbWFuYWdlbWVudCBvZiBhbGwgdGhlIGJ1 ZmZlcnMgdGhhdCB1c2UgdGhlIHNlcnZlciBjb25uZWN0aW9uIHdoaWNoIHdhcwp0ZXJtaW5hdGVk LCBkZWFjdGl2YXRlcyBpdHMgbWlub3IgbW9kZSwgYW5kIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCB2 YWx1ZXMKb2YgdGhlIEVtYWNzIHZhcmlhYmxlcyB0aGF0IEVnbG90IGNoYW5nZWQgd2hlbiBpdCB3 YXMgdHVybmVkIG9uLiAgKk5vdGUKRWdsb3QgYW5kIEJ1ZmZlcnM6OiwgZm9yIG1vcmUgZGV0YWls cyBvZiB3aGF0IEVnbG90IG1hbmFnZW1lbnQgb2YgYQpidWZmZXIgZW50YWlscy4KCiAgIFlvdSBj YW4gYWxzbyBzaHV0IGRvd24gYSBsYW5ndWFnZSBzZXJ2ZXIgbWFudWFsbHksIGJ5IHVzaW5nIHRo ZQpjb21tYW5kIOKAmE0teCBlZ2xvdC1zaHV0ZG93buKAmS4gIFRoaXMgcHJvbXB0cyBmb3IgdGhl IHNlcnZlciAodW5sZXNzCnRoZXJlJ3Mgb25seSBvbmUgY29ubmVjdGlvbiBhbmQgaXQncyB1c2Vk IGluIHRoZSBjdXJyZW50IGJ1ZmZlciksIGFuZAp0aGVuIHNodXRzIGl0IGRvd24uICBCeSBkZWZh dWx0LCBpdCBhbHNvIGtpbGxzIHRoZSBzZXJ2ZXIncyBldmVudHMKYnVmZmVyICgqbm90ZSBUcm91 Ymxlc2hvb3RpbmcgRWdsb3Q6OiksIGJ1dCBhIHByZWZpeCBhcmd1bWVudCBwcmV2ZW50cwp0aGF0 LgoKICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjdXN0b21pemUgdGhlIHZhcmlhYmxlIOKAmGVn bG90LWF1dG9zaHV0ZG93buKAmSB0bwphIG5vbi3igJhuaWzigJkgdmFsdWUsIGluIHdoaWNoIGNh c2UgRWdsb3Qgd2lsbCBhdXRvbWF0aWNhbGx5IHNodXQgZG93biB0aGUKbGFuZ3VhZ2Ugc2VydmVy IHByb2Nlc3Mgd2hlbiB0aGUgbGFzdCBidWZmZXIgc2VydmVkIGJ5IHRoYXQgbGFuZ3VhZ2UKc2Vy dmVyIGlzIGtpbGxlZC4gIFRoZSBkZWZhdWx0IG9mIHRoaXMgdmFyaWFibGUgaXMg4oCYbmls4oCZ LCBzbyB0aGF0CnZpc2l0aW5nIGFub3RoZXIgZmlsZSB3b3VsZCBhdXRvbWF0aWNhbGx5IGFjdGl2 YXRlIEVnbG90IGV2ZW4gd2hlbiB0aGUKcHJvamVjdCB3aGljaCBzdGFydGVkIEVnbG90IHdpdGgg dGhlIHNlcnZlciBubyBsb25nZXIgaGFzIGFueSBidWZmZXIKYXNzb2NpYXRlZCB3aXRoIGl0LiAg VGhpcyBkZWZhdWx0IGFsbG93cyB5b3UgdG8gc3RhcnQgYSBzZXJ2ZXIgb25seSBvbmNlCmluIGVh Y2ggRW1hY3Mgc2Vzc2lvbi4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBVc2luZyBF Z2xvdCwgIE5leHQ6IEN1c3RvbWl6aW5nIEVnbG90LCAgUHJldjogRWdsb3QgYW5kIExTUCBTZXJ2 ZXJzLCAgVXA6IFRvcAoKMyBVc2luZyBFZ2xvdAoqKioqKioqKioqKioqCgpUaGlzIGNoYXB0ZXIg ZGVzY3JpYmVzIGluIGRldGFpbCB0aGUgZmVhdHVyZXMgdGhhdCBFZ2xvdCBwcm92aWRlcyBhbmQK aG93IGl0IGRvZXMgdGhhdC4gIEl0IGFsc28gcHJvdmlkZXMgcmVmZXJlbmNlIHNlY3Rpb25zIGZv ciBFZ2xvdApjb21tYW5kcyBhbmQgdmFyaWFibGVzLgoKKiBNZW51OgoKKiBFZ2xvdCBGZWF0dXJl czo6CiogRWdsb3QgYW5kIEJ1ZmZlcnM6OgoqIEVnbG90IENvbW1hbmRzOjoKKiBFZ2xvdCBWYXJp YWJsZXM6OgoKHwpGaWxlOiBkb2N1b1hFTlUuaW5mbywgIE5vZGU6IEVnbG90IEZlYXR1cmVzLCAg TmV4dDogRWdsb3QgYW5kIEJ1ZmZlcnMsICBVcDogVXNpbmcgRWdsb3QKCjMuMSBFZ2xvdCBGZWF0 dXJlcwo9PT09PT09PT09PT09PT09PT0KCldoaWxlIEVnbG90IGlzIGVuYWJsZWQgaW4gYSBidWZm ZXIsIGl0IGlzIHNhaWQgdG8gYmUg4oCcbWFuYWdpbmfigJ0gaXQsCnVzaW5nIExTUCBhbmQgdGhl IHNwZWNpZmljIGNhcGFiaWxpdGllcyBvZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRvCmFjdGl2YXRl IGFuZCBlbmhhbmNlIG1vZGVybiBJREUgZmVhdHVyZXMgaW4gRW1hY3MuICBTb21lIG9mIHRoZXNl CmZlYXR1cmVzIGFyZSBwcm92aWRlZCB2aWEgb3RoZXIgRW1hY3MgcGFja2FnZXMsIGFuZCBzb21l IHZpYSBFZ2xvdApkaXJlY3RseSAoKm5vdGUgRWdsb3QgQ29tbWFuZHM6OikuCgogICBIZXJlJ3Mg YW4gb3ZlcnZpZXcgb2YgdGhlIG1haW4gZmVhdHVyZXMgdGhhdCBFZ2xvdCBwcm92aWRlczoKCiAg IOKAoiBBdC1wb2ludCBkb2N1bWVudGF0aW9uOiB3aGVuIHBvaW50IGlzIGF0IG9yIG5lYXIgYSBz eW1ib2wgb3IgYW4KICAgICBpZGVudGlmaWVyLCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5 bWJvbC9pZGVudGlmaWVyLCBzdWNoIGFzCiAgICAgdGhlIHNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9u IG9yIGNsYXNzIG1ldGhvZCBhbmQgc2VydmVyLWdlbmVyYXRlZAogICAgIGRpYWdub3N0aWNzLCBp cyBtYWRlIGF2YWlsYWJsZSB2aWEgdGhlIEVsRG9jIHBhY2thZ2UgKCpub3RlCiAgICAgKGVtYWNz KVByb2dyYW1taW5nIExhbmd1YWdlIERvYzo6KS4gIFRoaXMgYWxsb3dzIG1ham9yIG1vZGVzIHRv CiAgICAgcHJvdmlkZSBleHRlbnNpdmUgaGVscCBhbmQgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUg cHJvZ3JhbQogICAgIGlkZW50aWZpZXJzLgoKICAg4oCiIE9uLXRoZS1mbHkgZGlhZ25vc3RpYyBh bm5vdGF0aW9ucywgdmlhIHRoZSBGbHltYWtlIHBhY2thZ2UgKCpub3RlCiAgICAgKGZseW1ha2Up VG9wOjopLiAgRWdsb3QncyBGbHltYWtlIGJhY2tlbmQgcmVwbGFjZXMgb3RoZXIgRmx5bWFrZQog ICAgIGJhY2tlbmRzIHdoaWxlIGl0IGlzIG1hbmFnaW5nIGEgYnVmZmVyLCBhbmQgZW5oYW5jZXMg ZGlhZ25vc3RpY3MKICAgICB3aXRoIGludGVyYWN0aXZlIHNlcnZlci1zdWdnZXN0ZWQgZml4ZXMg KHNvLWNhbGxlZCDigJxjb2RlIGFjdGlvbnPigJ0sCiAgICAgKm5vdGUgRWdsb3QgQ29tbWFuZHM6 OikKCiAgIOKAoiBGaW5kaW5nIGRlZmluaXRpb25zIGFuZCB1c2VzIG9mIGlkZW50aWZpZXJzLCB2 aWEgWHJlZiAoKm5vdGUKICAgICAoZW1hY3MpWHJlZjo6KS4gIEVnbG90IHByb3ZpZGVzIGEgYmFj a2VuZCBmb3IgdGhlIFhyZWYgY2FwYWJpbGl0aWVzCiAgICAgd2hpY2ggdXNlcyB0aGUgbGFuZ3Vh Z2Utc2VydmVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2dyYW0gc291cmNlLgogICAgIEluIHBh cnRpY3VsYXIsIGl0IGVsaW1pbmF0ZXMgdGhlIG5lZWQgdG8gZ2VuZXJhdGUgdGFncyB0YWJsZXMK ICAgICAoKm5vdGUgKGVtYWNzKVRhZ3MgdGFibGVzOjopIGZvciBsYW5ndWFnZXMgd2hpY2ggYXJl IG9ubHkgc3VwcG9ydGVkCiAgICAgYnkgdGhlIOKAmGV0YWdz4oCZIGJhY2tlbmQuCgogICDigKIg QnVmZmVyIG5hdmlnYXRpb24gYnkgbmFtZSBvZiBmdW5jdGlvbiwgY2xhc3MsIG1ldGhvZCwgZXRj LiwgdmlhCiAgICAgSW1lbnUgKCpub3RlIChlbWFjcylJbWVudTo6KS4gIEVnbG90IHByb3ZpZGVz IGl0cyBvd24gdmFyaWFudCBvZgogICAgIOKAmGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbuKA mSwgd2hpY2ggZ2VuZXJhdGVzIHRoZSBpbmRleCBmb3IgdGhlCiAgICAgYnVmZmVyIGJhc2VkIG9u IGxhbmd1YWdlLXNlcnZlciBwcm9ncmFtIHNvdXJjZSBhbmFseXNpcy4KCiAgIOKAoiBFbmhhbmNl ZCBjb21wbGV0aW9uIG9mIHN5bWJvbCBhdCBwb2ludCBieSB0aGUg4oCYY29tcGxldGlvbi1hdC1w b2ludOKAmQogICAgIGNvbW1hbmQgKCpub3RlIChlbWFjcylTeW1ib2wgQ29tcGxldGlvbjo6KS4g IFRoaXMgdXNlcyB0aGUKICAgICBsYW5ndWFnZS1zZXJ2ZXIncyBwYXJzZXIgZGF0YSBmb3IgdGhl IGNvbXBsZXRpb24gY2FuZGlkYXRlcy4KCiAgIOKAoiBBdXRvbWF0aWMgcmVmb3JtYXR0aW5nIG9m IHNvdXJjZSBjb2RlIGFzIHlvdSB0eXBlIGl0LiAgVGhpcyBpcwogICAgIHNpbWlsYXIgdG8gd2hh dCB0aGUg4oCYZWdsb3QtZm9ybWF04oCZIGNvbW1hbmQgZG9lcyAoc2VlIGJlbG93KSwgYnV0IGlz CiAgICAgYWN0aXZhdGVkIGF1dG9tYXRpY2FsbHkgYXMgeW91IHR5cGUuCgogICDigKIgSWYgYSBj b21wbGV0aW9uIHBhY2thZ2Ugc3VjaCBhcyDigJhjb21wYW55LW1vZGXigJksIGEgcG9wdWxhcgog ICAgIHRoaXJkLXBhcnR5IGNvbXBsZXRpb24gcGFja2FnZSAob3IgYW55IG90aGVyIGNvbXBsZXRp b24gcGFja2FnZSksCiAgICAgaXMgaW5zdGFsbGVkLCBFZ2xvdCBlbmhhbmNlcyBpdCBieSBwcm92 aWRpbmcgY29tcGxldGlvbiBjYW5kaWRhdGVzCiAgICAgYmFzZWQgb24gdGhlIGxhbmd1YWdlLXNl cnZlciBhbmFseXNpcyBvZiB0aGUgc291cmNlIGNvZGUuCiAgICAgKOKAmGNvbXBhbnktbW9kZeKA mSBjYW4gYmUgaW5zdGFsbGVkIGZyb20gR05VIEVMUEEuKQoKICAg4oCiIElmIOKAmHlhc25pcHBl dOKAmSwgYSBwb3B1bGFyIHRoaXJkLXBhcnR5IHBhY2thZ2UgZm9yIGF1dG9tYXRpYwogICAgIGlu c2VydGlvbiBvZiBjb2RlIHRlbXBsYXRlcyAoc25pcHBldHMpLCBpcyBpbnN0YWxsZWQsIGFuZCB0 aGUKICAgICBsYW5ndWFnZSBzZXJ2ZXIgc3VwcG9ydHMgc25pcHBldCBjb21wbGV0aW9uIGNhbmRp ZGF0ZXMsIEVnbG90CiAgICAgYXJyYW5nZXMgZm9yIHRoZSBjb21wbGV0aW9uIHBhY2thZ2UgdG8g aW5zdGFudGlhdGUgdGhlc2Ugc25pcHBldHMKICAgICB1c2luZyDigJh5YXNuaXBwZXTigJkuICAo 4oCYeWFzbmlwcGV04oCZIGNhbiBiZSBpbnN0YWxsZWQgZnJvbSBHTlUgRUxQQS4pCgogICDigKIg SWYgdGhlIHBvcHVsYXIgdGhpcmQtcGFydHkgcGFja2FnZSDigJhtYXJrZG93bi1tb2Rl4oCZIGlz IGluc3RhbGxlZCwKICAgICBhbmQgdGhlIHNlcnZlciBwcm92aWRlcyBhdC1wb2ludCBkb2N1bWVu dGF0aW9uIGZvcm1hdHRlZCBhcwogICAgIE1hcmtkb3duIGluIGFkZGl0aW9uIHRvIHBsYWluIHRl eHQsIEVnbG90IGFycmFuZ2VzIGZvciB0aGUgRWxEb2MKICAgICBwYWNrYWdlIHRvIGVucmljaCB0 aGlzIHRleHQgd2l0aCBmb250aWZpY2F0aW9ucyBhbmQgb3RoZXIgbmljZQogICAgIGZvcm1hdHRp bmcgYmVmb3JlIGRpc3BsYXlpbmcgaXQgdG8gdGhlIHVzZXIuICBUaGlzIG1ha2VzIHRoZQogICAg IGRvY3VtZW50YXRpb24gc2hvd24gYnkgRWxEb2MgbG9vayBuaWNlciBvbiBkaXNwbGF5LgoKICAg 4oCiIEluIGFkZGl0aW9uIHRvIGVuYWJsaW5nIGFuZCBlbmhhbmNpbmcgb3RoZXIgZmVhdHVyZXMg YW5kIHBhY2thZ2VzLAogICAgIEVnbG90IGFsc28gcHJvdmlkZXMgYSBudW1iZXIgb2YgdXNlciBj b21tYW5kcyBiYXNlZCBvbiB0aGUKICAgICBjYXBhYmlsaXRpZXMgb2YgbGFuZ3VhZ2Ugc2VydmVy cy4gIEV4YW1wbGVzIGluY2x1ZGUgcmVuYW1pbmcKICAgICBzeW1ib2xzIHdpdGgg4oCYZWdsb3Qt cmVuYW1l4oCZIGFuZCBhc2tpbmcgdG8gYXV0b21hdGljYWxseSBjb3JyZWN0CiAgICAgcHJvYmxl bXMgd2l0aCDigJhlZ2xvdC1jb2RlLWFjdGlvbnPigJkuICAqTm90ZSBFZ2xvdCBDb21tYW5kczo6 LgoKICAgTm90IGFsbCBzZXJ2ZXJzIHN1cHBvcnQgdGhlIGZ1bGwgc2V0IG9mIExTUCBjYXBhYmls aXRpZXMsIGJ1dCBtb3N0IG9mCnRoZW0gc3VwcG9ydCBlbm91Z2ggdG8gZW5hYmxlIHRoZSBiYXNp YyBzZXQgb2YgZmVhdHVyZXMgbWVudGlvbmVkIGFib3ZlLgoKICAgQ29udmVyc2VseSwgc29tZSBz ZXJ2ZXJzIG9mZmVyIGNhcGFiaWxpdGllcyBmb3Igd2hpY2ggbm8gZXF1aXZhbGVudApFbWFjcyBw YWNrYWdlIGV4aXN0cyB5ZXQsIGFuZCBzbyBFZ2xvdCBjYW5ub3QgKHlldCkgZXhwb3NlIHRoZXNl CmNhcGFiaWxpdGllcyB0byBFbWFjcyB1c2Vycy4gIEhvd2V2ZXIsICpOb3RlIEV4dGVuZGluZyBF Z2xvdDo6LgoKICAgRmluYWxseSwgaXQncyB3b3J0aCBub3RpbmcgdGhhdCwgYnkgZGVmYXVsdCwg RWdsb3QgZ2VuZXJhbGx5IHR1cm5zIG9uCmFsbCBmZWF0dXJlcyB0aGF0IGl0IF9jYW5fIHR1cm4g b24uICBJdCdzIHBvc3NpYmxlIHRvIG9wdCBvdXQgb2Ygc29tZQpmZWF0dXJlcyB2aWEgdXNlciBv cHRpb25zICgqbm90ZSBDdXN0b21pemluZyBFZ2xvdDo6KSBhbmQgYSBob29rIHRoYXQKcnVucyBh ZnRlciBFZ2xvdCBzdGFydHMgbWFuYWdpbmcgYSBidWZmZXIgKCpub3RlIEVnbG90IGFuZCBCdWZm ZXJzOjopLgoKHwpGaWxlOiBkb2N1b1hFTlUuaW5mbywgIE5vZGU6IEVnbG90IGFuZCBCdWZmZXJz LCAgTmV4dDogRWdsb3QgQ29tbWFuZHMsICBQcmV2OiBFZ2xvdCBGZWF0dXJlcywgIFVwOiBVc2lu ZyBFZ2xvdAoKMy4yIEJ1ZmZlcnMsIFByb2plY3RzLCBhbmQgRWdsb3QKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KCk9uZSBvZiB0aGUgbWFpbiBzdHJvbmcgcG9pbnRzIG9mIHVzaW5n IGEgbGFuZ3VhZ2Ugc2VydmVyIGlzIHRoYXQgYQpsYW5ndWFnZSBzZXJ2ZXIgaGFzIGEgYnJvYWQg dmlldyBvZiB0aGUgcHJvZ3JhbTogaXQgY29uc2lkZXJzIG1vcmUgdGhhbgpqdXN0IHRoZSBzaW5n bGUgc291cmNlIGZpbGUgeW91IGFyZSBlZGl0aW5nLiAgSWRlYWxseSwgdGhlIGxhbmd1YWdlCnNl cnZlciBzaG91bGQga25vdyBhYm91dCBhbGwgdGhlIHNvdXJjZSBmaWxlcyBvZiB5b3VyIHByb2dy YW0gd2hpY2ggYXJlCndyaXR0ZW4gaW4gdGhlIGxhbmd1YWdlIHN1cHBvcnRlZCBieSB0aGUgc2Vy dmVyLiAgSW4gdGhlIGxhbmd1YWdlLXNlcnZlcgpwYXJsYW5jZSwgdGhlIHNldCBvZiB0aGUgc291 cmNlIGZpbGVzIG9mIGEgcHJvZ3JhbSBpcyBrbm93biBhcyBhCuKAnHdvcmtzcGFjZeKAnS4gIFRo ZSBFbWFjcyBlcXVpdmFsZW50IG9mIGEgd29ya3NwYWNlIGlzIGEg4oCccHJvamVjdOKAnSAoKm5v dGUKKGVtYWNzKVByb2plY3RzOjopLiAgRWdsb3QgZnVsbHkgc3VwcG9ydHMgRW1hY3MgcHJvamVj dHMsIGFuZCBjb25zaWRlcnMKdGhlIGZpbGUgaW4gd2hvc2UgYnVmZmVyIEVnbG90IGlzIHR1cm5l ZCBvbiBhcyBiZWxvbmdpbmcgdG8gYSBwcm9qZWN0LgpJbiB0aGUgc2ltcGxlc3QgY2FzZSwgdGhh dCBmaWxlIGlzIHRoZSBlbnRpcmUgcHJvamVjdCwgaS5lLiB5b3VyIHByb2plY3QKY29uc2lzdHMg b2YgYSBzaW5nbGUgZmlsZS4gIEJ1dCB0aGVyZSBhcmUgb3RoZXIgbW9yZSBjb21wbGV4IHByb2pl Y3RzOgoKICAg4oCiIEEgc2luZ2xlLWRpcmVjdG9yeSBwcm9qZWN0OiBzZXZlcmFsIHNvdXJjZSBm aWxlcyBpbiBhIHNpbmdsZSBjb21tb24KICAgICBkaXJlY3RvcnkuCgogICDigKIgQSBWQyBwcm9q ZWN0OiBzb3VyY2UgZmlsZXMgaW4gYSBkaXJlY3RvcnkgaGllcmFyY2h5IHVuZGVyIHNvbWUgVkNT LAogICAgIGUuZy4gYSBWQ1MgcmVwb3NpdG9yeSAoKm5vdGUgKGVtYWNzKVZlcnNpb24gQ29udHJv bDo6KS4KCiAgIOKAoiBBbiBFREUgcHJvamVjdDogc291cmNlIGZpbGVzIGluIGEgZGlyZWN0b3J5 IGhpZXJhcmNoeSBtYW5hZ2VkIHZpYQogICAgIHRoZSBFbWFjcyBEZXZlbG9wbWVudCBFbnZpcm9u bWVudCAoKm5vdGUgKGVtYWNzKUVERTo6KS4KCiAgIEVnbG90IHVzZXMgRW1hY3MncyBwcm9qZWN0 IG1hbmFnZW1lbnQgaW5mcmFzdHJ1Y3R1cmUgdG8gZmlndXJlIG91dAp3aGljaCBmaWxlcyBhbmQg YnVmZmVycyBiZWxvbmcgdG8gd2hhdCBwcm9qZWN0LCBzbyBhbnkga2luZCBvZiBwcm9qZWN0CnN1 cHBvcnRlZCBieSB0aGF0IGluZnJhc3RydWN0dXJlIGlzIGF1dG9tYXRpY2FsbHkgc3VwcG9ydGVk IGJ5IEVnbG90LgoKICAgV2hlbiBFZ2xvdCBzdGFydHMgYSBzZXJ2ZXIgcHJvZ3JhbSwgaXQgZG9l cyBzbyBpbiB0aGUgcHJvamVjdCdzIHJvb3QKZGlyZWN0b3J5LCB3aGljaCBpcyB1c3VhbGx5IHRo ZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0J3MKZGlyZWN0b3J5IGhpZXJhcmNo eS4gIFRoaXMgZW5zdXJlcyB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGhhcyB0aGUgc2FtZQpjb21wcmVo ZW5zaXZlIHZpZXcgb2YgdGhlIHByb2plY3QncyBmaWxlcyBhcyB5b3UgZG8uCgogICBGb3IgZXhh bXBsZSwgaWYgeW91IHZpc2l0IHRoZSBmaWxlIOKAmH4vcHJvamVjdHMvZm9vZXkvbGliL3guZm9v 4oCZIGFuZArigJh4LmZvb+KAmSBiZWxvbmdzIHRvIGEgcHJvamVjdCByb290ZWQgYXQg4oCYfi9w cm9qZWN0cy9mb29leeKAmSAocGVyaGFwcwpiZWNhdXNlIGEg4oCYLmdpdOKAmSBkaXJlY3Rvcnkg ZXhpc3RzIHRoZXJlKSwgdGhlbiDigJhNLXggZWdsb3TigJkgY2F1c2VzIHRoZQpzZXJ2ZXIgcHJv Z3JhbSB0byBzdGFydCB3aXRoIHRoYXQgcm9vdCBhcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVj dG9yeS4KVGhlIHNlcnZlciB0aGVuIHdpbGwgYW5hbHl6ZSBub3Qgb25seSB0aGUgZmlsZSDigJhs aWIveC5mb2/igJkgeW91IHZpc2l0ZWQsCmJ1dCBsaWtlbHkgYWxzbyBhbGwgdGhlIG90aGVyIOKA mCouZm9v4oCZIGZpbGVzIHVuZGVyIHRoZSDigJh+L3Byb2plY3RzL2Zvb2V54oCZCmRpcmVjdG9y eS4KCiAgIEluIHNvbWUgY2FzZXMsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8g YSBnaXZlbiBwcm9qZWN0CndpbGwgbmVlZCB0byBiZSBwcm92aWRlZCB0byB0aGUgbGFuZ3VhZ2Ug c2VydmVyIHdoZW4gc3RhcnRpbmcgaXQuICBUaGUKdmFyaWFibGUg4oCYZWdsb3Qtd29ya3NwYWNl LWNvbmZpZ3VyYXRpb27igJkgKCpub3RlIEN1c3RvbWl6aW5nIEVnbG90OjopCmV4aXN0cyBmb3Ig dGhhdCBwdXJwb3NlLiAgSXQgc3BlY2lmaWVzIHRoZSBwYXJhbWV0ZXJzIGFuZCB0aGVpciB2YWx1 ZXMKdG8gY29tbXVuaWNhdGUgdG8gZWFjaCBsYW5ndWFnZSBzZXJ2ZXIgd2hpY2ggbmVlZHMgdGhh dC4KCiAgIFdoZW4gRWdsb3QgaXMgYWN0aXZlIGZvciBhIHByb2plY3QsIGl0IHBlcmZvcm1zIHNl dmVyYWwgYmFja2dyb3VuZAphY3Rpdml0aWVzIG9uIGJlaGFsZiBvZiB0aGUgcHJvamVjdCBhbmQg aXRzIGJ1ZmZlcnM6CgogICDigKIgQWxsIG9mIHRoZSBwcm9qZWN0J3MgZmlsZS12aXNpdGluZyBi dWZmZXJzIHVuZGVyIHRoZSBzYW1lCiAgICAgbWFqb3ItbW9kZSBhcmUgc2VydmVkIGJ5IGEgc2lu Z2xlIGxhbmd1YWdlLXNlcnZlciBjb25uZWN0aW9uLiAgKElmCiAgICAgdGhlIHByb2plY3QgdXNl cyBzZXZlcmFsIHByb2dyYW1taW5nIGxhbmd1YWdlcywgdGhlcmUgd2lsbCB1c3VhbGx5CiAgICAg YmUgYSBzZXBhcmF0ZSBzZXJ2ZXIgY29ubmVjdGlvbiBmb3IgZWFjaCBncm91cCBvZiBmaWxlcyB3 cml0dGVuIGluCiAgICAgdGhlIHNhbWUgbGFuZ3VhZ2UgYW5kIHVzaW5nIHRoZSBzYW1lIEVtYWNz IG1ham9yLW1vZGUuKSAgRWdsb3QgYWRkcwogICAgIHRoZSDigJhbZWdsb3Q6UFJPSkVDVF3igJkg aW5kaWNhdGlvbiB0byB0aGUgbW9kZSBsaW5lIG9mIGVhY2ggc3VjaAogICAgIGJ1ZmZlciwgd2hl cmUgU0VSVkVSIGlzIHRoZSBuYW1lIG9mIHRoZSBzZXJ2ZXIgYW5kIFBST0pFQ1QKICAgICBpZGVu dGlmaWVzIHRoZSBwcm9qZWN0IGJ5IGl0cyByb290IGRpcmVjdG9yeS4gIENsaWNraW5nIHRoZSBt b3VzZQogICAgIG9uIHRoZSBFZ2xvdCBtb2RlLWxpbmUgaW5kaWNhdGlvbiBhY3RpdmF0ZXMgYSBt ZW51IHdpdGgKICAgICBzZXJ2ZXItc3BlY2lmaWMgaXRlbXMuCgogICDigKIgRm9yIGVhY2ggYnVm ZmVyIGluIHdoaWNoIEVnbG90IGlzIGFjdGl2ZSwgaXQgbm90aWZpZXMgdGhlIGxhbmd1YWdlCiAg ICAgc2VydmVyIHRoYXQgRWdsb3QgaXMg4oCcbWFuYWdpbmfigJ0gdGhlIGZpbGUgdmlzaXRlZCBi eSB0aGF0IGJ1ZmZlci4KICAgICBUaGlzIHRlbGxzIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgdGhhdCB0 aGUgZmlsZSdzIGNvbnRlbnRzIG9uIGRpc2sgbWF5CiAgICAgbm8gbG9uZ2VyIGJlIHVwLXRvLWRh dGUgZHVlIHRvIHVuc2F2ZWQgZWRpdHMuICBFZ2xvdCByZXBvcnRzIHRvIHRoZQogICAgIHNlcnZl ciBhbnkgY2hhbmdlcyBpbiB0aGUgdGV4dCBvZiBlYWNoIG1hbmFnZWQgYnVmZmVyLCB0byBtYWtl IHRoZQogICAgIHNlcnZlciBhd2FyZSBvZiB1bnNhdmVkIGNoYW5nZXMuICBUaGlzIGluY2x1ZGVz IHlvdXIgZWRpdGluZyBvZiB0aGUKICAgICBidWZmZXIgYW5kIGFsc28gY2hhbmdlcyBkb25lIGF1 dG9tYXRpY2FsbHkgYnkgb3RoZXIgRW1hY3MgZmVhdHVyZXMKICAgICBhbmQgY29tbWFuZHMuICBL aWxsaW5nIGEgYnVmZmVyIHJlbGlucXVpc2hlcyBpdHMgbWFuYWdlbWVudCBieQogICAgIEVnbG90 IGFuZCBub3RpZmllcyB0aGUgc2VydmVyIHRoYXQgdGhlIGZpbGUgb24gZGlzayBpcyB1cC10by1k YXRlLgoKICAg4oCiIEVnbG90IHR1cm5zIG9uIGEgc3BlY2lhbCBtaW5vciBtb2RlIGluIGVhY2gg YnVmZmVyIGl0IG1hbmFnZXMuCiAgICAgVGhpcyBtaW5vciBtb2RlIGVuc3VyZXMgdGhlIHNlcnZl ciBpcyBub3RpZmllZCBhYm91dCBmaWxlcyBFZ2xvdAogICAgIG1hbmFnZXMsIGFuZCBhbHNvIGFy cmFuZ2VzIGZvciBvdGhlciBFbWFjcyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkKICAgICBFZ2xvdCAo Km5vdGUgRWdsb3QgRmVhdHVyZXM6OikgdG8gcmVjZWl2ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZQog ICAgIGxhbmd1YWdlIHNlcnZlciwgYnkgY2hhbmdpbmcgdGhlIHNldHRpbmdzIG9mIHRoZXNlIGZl YXR1cmVzLgogICAgIFVubGlrZSBvdGhlciBtaW5vci1tb2RlcywgdGhpcyBzcGVjaWFsIG1pbm9y IG1vZGUgaXMgbm90IGFjdGl2YXRlZAogICAgIG1hbnVhbGx5IGJ5IHRoZSB1c2VyLCBidXQgYXV0 b21hdGljYWxseSwgYXMgdGhlIHJlc3VsdCBvZiBzdGFydGluZwogICAgIGFuIEVnbG90IHNlc3Np b24gZm9yIHRoZSBidWZmZXIuICBIb3dldmVyLCB0aGlzIG1pbm9yIG1vZGUgcHJvdmlkZXMKICAg ICBhIGhvb2sgdmFyaWFibGUg4oCYZWdsb3QtbWFuYWdlZC1tb2RlLWhvb2vigJkgdGhhdCBjYW4g YmUgdXNlZCB0bwogICAgIGN1c3RvbWl6ZSB0aGUgRWdsb3QgbWFuYWdlbWVudCBvZiB0aGUgYnVm ZmVyLiAgVGhpcyBob29rIGlzIHJ1bgogICAgIGJvdGggd2hlbiB0aGUgbWlub3IgbW9kZSBpcyB0 dXJuZWQgb24gYW5kIHdoZW4gaXQncyB0dXJuZWQgb2ZmOyB1c2UKICAgICB0aGUgdmFyaWFibGUg 4oCYZWdsb3QtbWFuYWdlZC1w4oCZIHRvIHRlbGwgaWYgY3VycmVudCBidWZmZXIgaXMgc3RpbGwK ICAgICBiZWluZyBtYW5hZ2VkIG9yIG5vdC4gIFdoZW4gRWdsb3Qgc3RvcHMgbWFuYWdpbmcgdGhl IGJ1ZmZlciwgdGhpcwogICAgIG1pbm9yIG1vZGUgaXMgdHVybmVkIG9mZiwgYW5kIGFsbCB0aGUg c2V0dGluZ3MgdGhhdCBFZ2xvdCBjaGFuZ2VkCiAgICAgYXJlIHJlc3RvcmVkIHRvIHRoZWlyIG9y aWdpbmFsIHZhbHVlcy4KCiAgIOKAoiBXaGVuIHlvdSB2aXNpdCBhIGZpbGUgdW5kZXIgdGhlIHNh bWUgcHJvamVjdCwgd2hldGhlciBhbiBleGlzdGluZwogICAgIG9yIGEgbmV3IGZpbGUsIGl0cyBi dWZmZXIgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgc2V0IG9mCiAgICAgYnVmZmVycyBt YW5hZ2VkIGJ5IEVnbG90LCBhbmQgdGhlIHNlcnZlciB3aGljaCBzdXBwb3J0cyB0aGUKICAgICBi dWZmZXIncyBtYWpvci1tb2RlIGlzIG5vdGlmaWVkIGFib3V0IHRoYXQuICBUaHVzLCB2aXNpdGlu ZyBhCiAgICAgbm9uLWV4aXN0ZW50IGZpbGUg4oCYL2hvbWUvam9lL3Byb2plY3RzL2Zvb2V5L2xp Yi95LmZvb+KAmSBpbiB0aGUgYWJvdmUKICAgICBleGFtcGxlIHdpbGwgbm90aWZ5IHRoZSBzZXJ2 ZXIgb2YgdGhlIOKAmCouZm9v4oCZIGZpbGVzJyBsYW5ndWFnZSB0aGF0CiAgICAgYSBuZXcgZmls ZSB3YXMgYWRkZWQgdG8gdGhlIHByb2plY3QsIGV2ZW4gYmVmb3JlIHRoZSBmaWxlIGFwcGVhcnMK ICAgICBvbiBkaXNrLiAgVGhlIHNwZWNpYWwgRWdsb3QgbWlub3IgbW9kZSBpcyBhbHNvIHR1cm5l ZCBvbgogICAgIGF1dG9tYXRpY2FsbHkgaW4gdGhlIGJ1ZmZlciB2aXNpdGluZyB0aGUgZmlsZS4K Ch8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBFZ2xvdCBDb21tYW5kcywgIE5leHQ6IEVn bG90IFZhcmlhYmxlcywgIFByZXY6IEVnbG90IGFuZCBCdWZmZXJzLCAgVXA6IFVzaW5nIEVnbG90 CgozLjMgRWdsb3QgQ29tbWFuZHMKPT09PT09PT09PT09PT09PT09CgpUaGlzIHNlY3Rpb24gcHJv dmlkZXMgYSByZWZlcmVuY2UgZm9yIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgRWdsb3QKY29tbWFu ZHM6CgrigJhNLXggZWdsb3TigJkKICAgICBUaGlzIGNvbW1hbmQgYWRkcyB0aGUgY3VycmVudCBi dWZmZXIgYW5kIHRoZSBmaWxlIGl0IHZpc2l0cyB0byB0aGUKICAgICBncm91cCBvZiBidWZmZXJz IGFuZCBmaWxlcyBtYW5hZ2VkIGJ5IEVnbG90IG9uIGJlaGFsZiBvZiBhIHN1aXRhYmxlCiAgICAg bGFuZ3VhZ2Ugc2VydmVyLiAgSWYgYSBsYW5ndWFnZSBzZXJ2ZXIgZm9yIHRoZSBidWZmZXIncwog ICAgIOKAmG1ham9yLW1vZGXigJkgKCpub3RlIChlbWFjcylNYWpvciBNb2Rlczo6KSBpcyBub3Qg eWV0IHJ1bm5pbmcsIGl0CiAgICAgd2lsbCBiZSBzdGFydGVkOyBvdGhlcndpc2UgdGhlIGJ1ZmZl ciBhbmQgaXRzIGZpbGUgd2lsbCBiZSBhZGRlZCB0bwogICAgIHRob3NlIG1hbmFnZWQgYnkgYW4g ZXhpc3Rpbmcgc2VydmVyIHNlc3Npb24uCgogICAgIFRoZSBjb21tYW5kIGF0dGVtcHRzIHRvIGZp Z3VyZSBvdXQgdGhlIGJ1ZmZlcidzIG1ham9yIG1vZGUgYW5kIHRoZQogICAgIHN1aXRhYmxlIGxh bmd1YWdlIHNlcnZlcjsgaW4gY2FzZSBpdCBmYWlscywgaXQgbWlnaHQgcHJvbXB0IGZvciB0aGUK ICAgICBtYWpvciBtb2RlIHRvIHVzZSBhbmQgZm9yIHRoZSBzZXJ2ZXIgcHJvZ3JhbSB0byBzdGFy dC4gIElmIGludm9rZWQKICAgICB3aXRoIOKAmEMtdeKAmSwgaXQgYWx3YXlzIHByb21wdHMgZm9y IHRoZSBzZXJ2ZXIgcHJvZ3JhbSwgYW5kIGlmCiAgICAgaW52b2tlZCB3aXRoIOKAmEMtdSBDLXXi gJksIGl0IGFsc28gcHJvbXB0cyBmb3IgdGhlIG1ham9yIG1vZGUuCgogICAgIElmIHRoZSBsYW5n dWFnZSBzZXJ2ZXIgaXMgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQgYW5kIGNvbnRhY3RlZCwgdGhpcwog ICAgIGNvbW1hbmQgYXJyYW5nZXMgZm9yIGFueSBvdGhlciBidWZmZXJzIGJlbG9uZ2luZyB0byB0 aGUgc2FtZQogICAgIHByb2plY3QgYW5kIHVzaW5nIHRoZSBzYW1lIG1ham9yIG1vZGUgdG8gdXNl IHRoZSBzYW1lCiAgICAgbGFuZ3VhZ2Utc2VydmVyIHNlc3Npb24uICBUaGF0IGluY2x1ZGVzIGFu eSBidWZmZXJzIGNyZWF0ZWQgYnkKICAgICB2aXNpdGluZyBmaWxlcyBhZnRlciB0aGlzIGNvbW1h bmQgc3VjY2VlZHMgdG8gY29ubmVjdCB0byBhIGxhbmd1YWdlCiAgICAgc2VydmVyLgoKICAgICBB bGwgdGhlIEVtYWNzIGZlYXR1cmVzIHRoYXQgYXJlIGNhcGFibGUgb2YgdXNpbmcgRWdsb3Qgc2Vy dmljZXMKICAgICAoKm5vdGUgRWdsb3QgRmVhdHVyZXM6OikgYXJlIGF1dG9tYXRpY2FsbHkgY29u ZmlndXJlZCBieSB0aGlzCiAgICAgY29tbWFuZCB0byBzdGFydCB1c2luZyB0aGUgbGFuZ3VhZ2Ug c2VydmVyIHZpYSBFZ2xvdC4gIFRvIGN1c3RvbWl6ZQogICAgIHdoaWNoIEVtYWNzIGZlYXR1cmVz IHdpbGwgYmUgY29uZmlndXJlZCB0byB1c2UgRWdsb3QsIHVzZSB0aGUKICAgICDigJhlZ2xvdC1z dGF5LW91dC1vZuKAmSBvcHRpb24gKCpub3RlIEN1c3RvbWl6aW5nIEVnbG90OjopLgoK4oCYTS14 IGVnbG90LXJlY29ubmVjdOKAmQogICAgIFRoaXMgY29tbWFuZCBzaHV0cyBkb3duIHRoZSBjdXJy ZW50IGNvbm5lY3Rpb24gdG8gdGhlIGxhbmd1YWdlCiAgICAgc2VydmVyIGFuZCBpbW1lZGlhdGVs eSByZXN0YXJ0cyBpdCB1c2luZyB0aGUgc2FtZSBvcHRpb25zIHVzZWQKICAgICBvcmlnaW5hbGx5 LiAgVGhpcyBjYW4gc29tZXRpbWVzIGJlIHVzZWZ1bCB0byB1bmNsb2cgYSBwYXJ0aWFsbHkKICAg ICBtYWxmdW5jdGlvbmluZyBzZXJ2ZXIgY29ubmVjdGlvbi4KCuKAmE0teCBlZ2xvdC1zaHV0ZG93 buKAmQogICAgIFRoaXMgY29tbWFuZCBzaHV0cyBkb3duIGEgbGFuZ3VhZ2Ugc2VydmVyLiAgSXQg cHJvbXB0cyBmb3IgYQogICAgIGxhbmd1YWdlIHNlcnZlciB0byBzaHV0IGRvd24gKHVubGVzcyB0 aGVyZSdzIG9ubHkgb25lIHNlcnZlcgogICAgIHNlc3Npb24sIGFuZCBpdCBtYW5hZ2VzIHRoZSBj dXJyZW50IGJ1ZmZlcikuICBUaGVuIHRoZSBjb21tYW5kCiAgICAgc2h1dHMgZG93biB0aGUgc2Vy dmVyIGFuZCBzdG9wcyBtYW5hZ2luZyB0aGUgYnVmZmVycyB0aGUgc2VydmVyIHdhcwogICAgIHVz ZWQgZm9yLiAgRW1hY3MgZmVhdHVyZXMgKCpub3RlIEVnbG90IEZlYXR1cmVzOjopIHRoYXQgRWds b3QKICAgICBjb25maWd1cmVkIHRvIHdvcmsgd2l0aCB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGFyZSBy ZXN0b3JlZCBiYWNrIHRvCiAgICAgdGhlaXIgb3JpZ2luYWwgY29uZmlndXJhdGlvbi4KCiAgICAg Tm9ybWFsbHksIHRoaXMgY29tbWFuZCBraWxscyB0aGUgYnVmZmVycyB1c2VkIGZvciBjb21tdW5p Y2F0aW5nCiAgICAgd2l0aCB0aGUgbGFuZ3VhZ2Ugc2VydmVyLCBidXQgaWYgaW52b2tlZCB3aXRo IGEgcHJlZml4IGFyZ3VtZW50CiAgICAg4oCYQy114oCZLCB0aGUgY29tbWFuZCBkb2Vzbid0IGtp bGwgdGhvc2UgYnVmZmVycywgYWxsb3dpbmcgdGhlbSB0byBiZQogICAgIHVzZWQgZm9yIGRpYWdu b3N0aWNzIGFuZCBwcm9ibGVtIHJlcG9ydGluZyAoKm5vdGUgVHJvdWJsZXNob290aW5nCiAgICAg RWdsb3Q6OikuCgrigJhNLXggZWdsb3Qtc2h1dGRvd24tYWxs4oCZCiAgICAgVGhpcyBjb21tYW5k IHNodXRzIGRvd24gYWxsIHRoZSBsYW5ndWFnZSBzZXJ2ZXJzIGFjdGl2ZSBpbiB0aGUKICAgICBj dXJyZW50IEVtYWNzIHNlc3Npb24uICBBcyB3aXRoIOKAmGVnbG90LXNodXRkb3du4oCZLCBpbnZv a2luZyB0aGlzCiAgICAgY29tbWFuZCB3aXRoIGEgcHJlZml4IGFyZ3VtZW50IGF2b2lkcyBraWxs aW5nIHRoZSBidWZmZXJzIHVzZWQgZm9yCiAgICAgY29tbXVuaWNhdGlvbnMgd2l0aCB0aGUgbGFu Z3VhZ2Ugc2VydmVycy4KCuKAmE0teCBlZ2xvdC1yZW5hbWXigJkKICAgICBUaGlzIGNvbW1hbmQg cmVuYW1lcyB0aGUgcHJvZ3JhbSBzeW1ib2wgKGEuay5hLiDigJxpZGVudGlmaWVy4oCdKSBhdAog ICAgIHBvaW50IHRvIGFub3RoZXIgbmFtZS4gIEl0IHByb21wdHMgZm9yIHRoZSBuZXcgbmFtZSBv ZiB0aGUgc3ltYm9sLAogICAgIGFuZCB0aGVuIG1vZGlmaWVzIGFsbCB0aGUgZmlsZXMgaW4gdGhl IHByb2plY3Qgd2hpY2ggYXJlIG1hbmFnZWQgYnkKICAgICB0aGUgbGFuZ3VhZ2Ugc2VydmVyIG9m IHRoZSBjdXJyZW50IGJ1ZmZlciB0byBpbXBsZW1lbnQgdGhlCiAgICAgcmVuYW1pbmcuCgrigJhN LXggZWdsb3QtZm9ybWF04oCZCiAgICAgVGhpcyBjb21tYW5kIHJlZm9ybWF0cyB0aGUgYWN0aXZl IHJlZ2lvbiBhY2NvcmRpbmcgdG8gdGhlCiAgICAgbGFuZ3VhZ2Utc2VydmVyIHJ1bGVzLiAgSWYg bm8gcmVnaW9uIGlzIGFjdGl2ZSwgaXQgcmVmb3JtYXRzIHRoZQogICAgIGVudGlyZSBjdXJyZW50 IGJ1ZmZlci4KCuKAmE0teCBlZ2xvdC1mb3JtYXQtYnVmZmVy4oCZCiAgICAgVGhpcyBjb21tYW5k IHJlZm9ybWF0cyB0aGUgY3VycmVudCBidWZmZXIsIGluIHRoZSBzYW1lIG1hbm5lciBhcwogICAg IOKAmGVnbG90LWZvcm1hdOKAmSBkb2VzLgoK4oCYTS14IGVnbG90LWNvZGUtYWN0aW9uc+KAmQri gJhNLXggZWdsb3QtY29kZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0c+KAmQrigJhNLXggZWdsb3Qt Y29kZS1hY3Rpb24tcXVpY2tmaXjigJkK4oCYTS14IGVnbG90LWNvZGUtYWN0aW9uLWV4dHJhY3Ti gJkK4oCYTS14IGVnbG90LWNvZGUtYWN0aW9uLWlubGluZeKAmQrigJhNLXggZWdsb3QtY29kZS1h Y3Rpb24tcmV3cml0ZeKAmQogICAgIFRoZXNlIGNvbW1hbmRzIGFsbG93IHlvdSB0byBpbnZva2Ug dGhlIHNvLWNhbGxlZCDigJxjb2RlIGFjdGlvbnPigJ06CiAgICAgcmVxdWVzdHMgZm9yIHRoZSBs YW5ndWFnZSBzZXJ2ZXIgdG8gcHJvdmlkZSBlZGl0aW5nIGNvbW1hbmRzIGZvcgogICAgIGNvcnJl Y3RpbmcsIHJlZmFjdG9yaW5nIG9yIGJlYXV0aWZ5aW5nIHlvdXIgY29kZS4gIFRoZXNlIGNvbW1h bmRzCiAgICAgbWF5IGFmZmVjdCBtb3JlIHRoYW4gb25lIHZpc2l0ZWQgZmlsZSBiZWxvbmdpbmcg dG8gdGhlIHByb2plY3QuCgogICAgIFRoZSBjb21tYW5kIOKAmGVnbG90LWNvZGUtYWN0aW9uc+KA mSBhc2tzIHRoZSBzZXJ2ZXIgaWYgdGhlcmUgYXJlIGFueQogICAgIGNvZGUgYWN0aW9ucyBmb3Ig YW55IHBvaW50IGluIHRoZSBidWZmZXIgb3IgY29udGFpbmVkIGluIHRoZSBhY3RpdmUKICAgICBy ZWdpb24uICBJZiB0aGVyZSBhcmUsIHlvdSBoYXZlIHRoZSBjaG9pY2UgdG8gZXhlY3V0ZSBvbmUg b2YgdGhlbQogICAgIHZpYSB0aGUgbWluaWJ1ZmZlci4KCiAgICAgQSBjb21tb24gdXNlIG9mIGNv ZGUgYWN0aW9ucyBpcyBmaXhpbmcgdGhlIEZseW1ha2UgZXJyb3IKICAgICBkaWFnbm9zdGljcyBp c3N1ZWQgYnkgRWdsb3QgKCpub3RlIChmbHltYWtlKVRvcDo6KS4gIENsaWNraW5nIG9uIGEKICAg ICBkaWFnbm9zdGljIHdpdGgg4oCYbW91c2UtMuKAmSBpbnZva2VzIOKAmGVnbG90LWNvZGUtYWN0 aW9ucy1hdC1tb3VzZeKAmQogICAgIHdoaWNoIHBvcHMgdXAgYSBtZW51IG9mIGF2YWlsYWJsZSBj b2RlIGFjdGlvbnMuICBUaGUgdmFyaWFibGUKICAgICDigJhlZ2xvdC1kaWFnbm9zdGljcy1tYXDi gJkgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgbW91c2UgYmluZGluZy4KCiAgICAgT3RoZXIg Y29tbWFuZHMgZXhlY3V0ZSBhIHNwZWNpZmljIGNvZGUgYWN0aW9uLiAgRm9yIGV4YW1wbGUsCiAg ICAg4oCYZWdsb3QtY29kZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0c+KAmSByZWFycmFuZ2VzIHRo ZSBwcm9ncmFtJ3MKICAgICDigJxpbXBvcnRz4oCdLS1kZWNsYXJhdGlvbnMgb2YgbW9kdWxlcyB3 aG9zZSBjYXBhYmlsaXRpZXMgdGhlIHByb2dyYW0KICAgICB1c2VzLgoK4oCYTS14IGVnbG90LWlu bGF5LWhpbnRzLW1vZGXigJkKICAgICBUaGlzIGNvbW1hbmQgdG9nZ2xlcyBMU1Ag4oCcaW5sYXkg aGludHPigJ0gb24gYW5kIG9mZiBmb3IgdGhlIGN1cnJlbnQKICAgICBidWZmZXIuICBJbmxheSBo aW50cyBhcmUgc21hbGwgdGV4dCBhbm5vdGF0aW9ucyB0byBzcGVjaWZpYyBwYXJ0cwogICAgIG9m IHRoZSB3aG9sZSBidWZmZXIsIG5vdCB1bmxpa2UgZGlhZ25vc3RpY3MsIGJ1dCBkZXNpZ25lZCB0 byBoZWxwCiAgICAgcmVhZGFiaWxpdHkgaW5zdGVhZCBvZiBpbmRpY2F0aW5nIHByb2JsZW1zLiAg Rm9yIGV4YW1wbGUsIGEgQysrCiAgICAgbGFuZ3VhZ2Ugc2VydmVyIGNhbiBzZXJ2ZSBoaW50cyBh Ym91dCBwb3NpdGlvbmFsIHBhcmFtZXRlciBuYW1lcyBpbgogICAgIGZ1bmN0aW9uIGNhbGxzIGFu ZCBhIHZhcmlhYmxlJ3MgYXV0b21hdGljYWxseSBkZWR1Y2VkIHR5cGUuICBJbmxheQogICAgIGhp bnRzIGhlbHAgdGhlIHVzZXIgbm90IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2UgdGhpbmdzIGJ5IGhl YXJ0LgoKICAgVGhlIGZvbGxvd2luZyBFZ2xvdCBjb21tYW5kcyBhcmUgdXNlZCBsZXNzIGNvbW1v bmx5LCBtb3N0bHkgZm9yCmRpYWdub3N0aWMgYW5kIHRyb3VibGVzaG9vdGluZyBwdXJwb3NlczoK CuKAmE0teCBlZ2xvdC1ldmVudHMtYnVmZmVy4oCZCiAgICAgVGhpcyBjb21tYW5kIHBvcHMgdXAg dGhlIGV2ZW50cyBidWZmZXIgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoCiAgICAgdGhlIGxh bmd1YWdlIHNlcnZlciBvZiB0aGUgY3VycmVudCBidWZmZXIuCgrigJhNLXggZWdsb3Qtc3RkZXJy LWJ1ZmZlcuKAmQogICAgIFRoaXMgY29tbWFuZCBwb3BzIHVwIHRoZSBidWZmZXIgd2l0aCB0aGUg ZGVidWcgaW5mbyBwcmludGVkIGJ5IHRoZQogICAgIGxhbmd1YWdlIHNlcnZlciB0byBpdHMgc3Rh bmRhcmQgZXJyb3Igc3RyZWFtLgoK4oCYTS14IGVnbG90LWZvcmdldC1wZW5kaW5nLWNvbnRpbnVh dGlvbnPigJkKICAgICBGb3JnZXQgcGVuZGluZyByZXF1ZXN0cyBmb3IgdGhlIHNlcnZlciBvZiB0 aGUgY3VycmVudCBidWZmZXIuCgrigJhNLXggZWdsb3Qtc2lnbmFsLWRpZENoYW5nZUNvbmZpZ3Vy YXRpb27igJkKICAgICBUaGlzIGNvbW1hbmQgdXBkYXRlcyB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGNv bmZpZ3VyYXRpb24gYWNjb3JkaW5nIHRvCiAgICAgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHZh cmlhYmxlIOKAmGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9u4oCZCiAgICAgKCpub3RlIEN1 c3RvbWl6aW5nIEVnbG90OjopLgoK4oCYTS14IGVnbG90LWNsZWFyLXN0YXR1c+KAmQogICAgIENs ZWFyIHRoZSBsYXN0IEpTT05SUEMgZXJyb3IgZm9yIHRoZSBzZXJ2ZXIgb2YgdGhlIGN1cnJlbnQg YnVmZmVyLgogICAgIEVnbG90IGtlZXBzIHRyYWNrIG9mIGVycm9uZW91cyBzaXR1YXRpb25zIGVu Y291bnRlcmVkIGJ5IHRoZSBzZXJ2ZXIKICAgICBpbiBpdHMgbW9kZS1saW5lIGluZGljYXRpb24g c28gdGhhdCB0aGUgdXNlciBtYXkgaW5zcGVjdCB0aGUKICAgICBjb21tdW5pY2F0aW9uIGxlYWRp bmcgdXAgdG8gaXQgKCpub3RlIFRyb3VibGVzaG9vdGluZyBFZ2xvdDo6KS4gIElmCiAgICAgdGhl IHNpdHVhdGlvbiBpcyBkZWVtZWQgdW5pbnRlcmVzdGluZyBvciB0ZW1wb3JhcnksIHRoaXMgY29t bWFuZAogICAgIGNhbiBiZSB1c2VkIHRvICJmb3JnZXQiIHRoZSBlcnJvci4gIE5vdGUgdGhhdCB0 aGUgY29tbWFuZCDigJhNLXgKICAgICBlZ2xvdC1yZWNvbm5lY3TigJkgY2FuIHNvbWV0aW1lcyBi ZSB1c2VkIHRvIHVuY2xvZyBhIHRlbXBvcmFyaWx5CiAgICAgbWFsZnVuY3Rpb25pbmcgc2VydmVy LgoKICAgQXMgZGVzY3JpYmVkIGluICpub3RlIEVnbG90IEZlYXR1cmVzOjogbW9zdCBmZWF0dXJl cyBhc3NvY2lhdGVkIHdpdGgKRWdsb3QgYXJlIGFjdHVhbGx5IHByb3ZpZGVkIGJ5IG90aGVyIEVt YWNzIHBhY2thZ2VzIGFuZCBmZWF0dXJlcywgYW5kCkVnbG90IG9ubHkgZW5oYW5jZXMgdGhlbSBi eSBhbGxvd2luZyB0aGVtIHRvIHVzZSB0aGUgaW5mb3JtYXRpb24gY29taW5nCmZyb20gdGhlIGxh bmd1YWdlIHNlcnZlcnMuICBGb3IgY29tcGxldGVuZXNzLCBoZXJlJ3MgdGhlIGxpc3Qgb2YKY29t bWFuZHMgb2YgdGhvc2Ugb3RoZXIgcGFja2FnZXMgdGhhdCBhcmUgdmVyeSBjb21tb25seSB1c2Vk IGluCkVnbG90LW1hbmFnZWQgYnVmZmVyczoKCuKAmE0teCBlbGRvY+KAmQogICAgIEFzayB0aGUg RWxEb2Mgc3lzdGVtIGZvciBoZWxwIGF0IHBvaW50LgoK4oCYTS14IGZseW1ha2Utc2hvdy1idWZm ZXItZGlhZ25vc3RpY3PigJkKICAgICBBc2sgRmx5bWFrZSBzeXN0ZW0gdG8gZGlzcGxheSBkaWFn bm9zdGljcyBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLgoK4oCYTS14IGZseW1ha2Utc2hvdy1wcm9q ZWN0LWRpYWdub3N0aWNz4oCZCiAgICAgQXNrIEZseW1ha2UgdG8gbGlzdCBkaWFnbm9zdGljcyBm b3IgYWxsIHRoZSBmaWxlcyBpbiB0aGUgY3VycmVudAogICAgIHByb2plY3QuCgrigJhNLXggeHJl Zi1maW5kLWRlZmluaXRpb25z4oCZCiAgICAgQXNrIFhyZWYgdG8gZ28gdGhlIGRlZmluaXRpb24g b2YgdGhlIGlkZW50aWZpZXIgYXQgcG9pbnQuCgrigJhNLXggaW1lbnXigJkKICAgICBMZXQgdGhl IHVzZXIgbmF2aWdhdGUgdGhlIHByb2dyYW0gc291cmNlIGNvZGUgdXNpbmcgYnVmZmVyIGluZGV4 LAogICAgIGNhdGVnb3JpemluZyBwcm9ncmFtIGVsZW1lbnRzIGJ5IHN5bnRhY3RpYyBjbGFzcyAo Y2xhc3MsIG1ldGhvZCwKICAgICB2YXJpYWJsZSwgZXRjLikgIGFuZCBvZmZlcmluZyBjb21wbGV0 aW9uLgoK4oCYTS14IGNvbXBsZXRpb24tYXQtcG9pbnTigJkKICAgICBSZXF1ZXN0IGNvbXBsZXRp b24gb2YgdGhlIHN5bWJvbCBhdCBwb2ludC4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2Rl OiBFZ2xvdCBWYXJpYWJsZXMsICBQcmV2OiBFZ2xvdCBDb21tYW5kcywgIFVwOiBVc2luZyBFZ2xv dAoKMy40IEVnbG90IFZhcmlhYmxlcwo9PT09PT09PT09PT09PT09PT09CgpUaGlzIHNlY3Rpb24g cHJvdmlkZXMgYSByZWZlcmVuY2UgZm9yIHRoZSBFZ2xvdCB1c2VyIG9wdGlvbnMuCgrigJhlZ2xv dC1hdXRvcmVjb25uZWN04oCZCiAgICAgVGhpcyBvcHRpb24gY29udHJvbHMgdGhlIGFiaWxpdHkg dG8gcmVjb25uZWN0IGF1dG9tYXRpY2FsbHkgdG8gdGhlCiAgICAgbGFuZ3VhZ2Ugc2VydmVyIHdo ZW4gRWdsb3QgZGV0ZWN0cyB0aGF0IHRoZSBzZXJ2ZXIgcHJvY2VzcwogICAgIHRlcm1pbmF0ZWQg dW5leHBlY3RlZGx5LiAgVGhlIGRlZmF1bHQgdmFsdWUg4oCYM+KAmSBtZWFucyB0byBhdHRlbXB0 CiAgICAgcmVjb25uZWN0aW9uIG9ubHkgaWYgdGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgY29ubmVj dGlvbiBsYXN0ZWQgZm9yCiAgICAgbW9yZSB0aGFuIHRoYXQgbnVtYmVyIG9mIHNlY29uZHM7IGEg ZGlmZmVyZW50IHBvc2l0aXZlIHZhbHVlCiAgICAgY2hhbmdlcyB0aGUgbWluaW1hbCBsZW5ndGgg b2YgdGhlIGNvbm5lY3Rpb24gdG8gdHJpZ2dlcgogICAgIHJlY29ubmVjdGlvbi4gIEEgdmFsdWUg b2Yg4oCYdOKAmSBtZWFucyBhbHdheXMgcmVjb25uZWN0IGF1dG9tYXRpY2FsbHksCiAgICAgYW5k IOKAmG5pbOKAmSBtZWFucyBuZXZlciByZWNvbm5lY3QgKGluIHdoaWNoIGNhc2UgeW91IHdpbGwg bmVlZCB0bwogICAgIHJlY29ubmVjdCBtYW51YWxseSB1c2luZyDigJhNLXggZWdsb3TigJkpLgoK 4oCYZWdsb3QtY29ubmVjdC10aW1lb3V04oCZCiAgICAgVGhpcyBzcGVjaWZpZXMgdGhlIG51bWJl ciBvZiBzZWNvbmRzIGJlZm9yZSBjb25uZWN0aW9uIGF0dGVtcHQgdG8gYQogICAgIGxhbmd1YWdl IHNlcnZlciB0aW1lcyBvdXQuICBUaGUgdmFsdWUgb2Yg4oCYbmls4oCZIG1lYW5zIG5ldmVyIHRp bWUKICAgICBvdXQuICBUaGUgZGVmYXVsdCBpcyAzMCBzZWNvbmRzLgoK4oCYZWdsb3Qtc3luYy1j b25uZWN04oCZCiAgICAgVGhpcyBzZXR0aW5nIGlzIG1haW5seSBpbXBvcnRhbnQgZm9yIGNvbm5l Y3Rpb25zIHdoaWNoIGFyZSBzbG93IHRvCiAgICAgZXN0YWJsaXNoLiAgV2hlcmVhcyB0aGUgdmFy aWFibGUg4oCYZWdsb3QtY29ubmVjdC10aW1lb3V04oCZIGNvbnRyb2xzCiAgICAgaG93IGxvbmcg dG8gd2FpdCBmb3IsIHRoaXMgdmFyaWFibGUgY29udHJvbHMgd2hldGhlciB0byBibG9jawogICAg IEVtYWNzJ3MgdXNlciBpbnRlcmZhY2Ugd2hpbGUgd2FpdGluZy4gIFRoZSBkZWZhdWx0IHZhbHVl IGlzIOKAmDPigJk7IGEKICAgICBwb3NpdGl2ZSB2YWx1ZSBtZWFucyBibG9jayBmb3IgdGhhdCBt YW55IHNlY29uZHMsIHRoZW4gd2FpdCBmb3IgdGhlCiAgICAgY29ubmVjdGlvbiBpbiB0aGUgYmFj a2dyb3VuZC4gIFRoZSB2YWx1ZSBvZiDigJh04oCZIG1lYW5zIGJsb2NrIGR1cmluZwogICAgIHRo ZSB3aG9sZSB3YWl0aW5nIHBlcmlvZC4gIFRoZSB2YWx1ZSBvZiDigJhuaWzigJkgb3Ig4oCYMOKA mSBtZWFucyBkb24ndAogICAgIGJsb2NrIGF0IGFsbCBkdXJpbmcgdGhlIHdhaXRpbmcgcGVyaW9k LgoK4oCYZWdsb3QtZXZlbnRzLWJ1ZmZlci1jb25maWfigJkKICAgICBUaGlzIGNvbmZpZ3VyZXMg dGhlIHNpemUgYW5kIGZvcm1hdCBvZiB0aGUgRWdsb3QgZXZlbnRzIGJ1ZmZlci4KICAgICAqTm90 ZSBlZ2xvdC1ldmVudHMtYnVmZmVyOiBFZ2xvdCBDb21tYW5kcywgZm9yIGhvdyB0byBhY2Nlc3Mg dGhhdAogICAgIGJ1ZmZlci4gIElmIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkLCB0aGUgY29ubmVjdGlv biBzaG91bGQgYmUKICAgICByZXN0YXJ0ZWQgdXNpbmcg4oCYTS14IGVnbG90LXJlY29ubmVjdOKA mSBmb3IgdGhlIG5ldyB2YWx1ZSB0byB0YWtlCiAgICAgZWZmZWN0LiAgKk5vdGUgVHJvdWJsZXNo b290aW5nIEVnbG90OjosIGZvciB3aGVuIHRoaXMgY291bGQgYmUKICAgICB1c2VmdWwuCgrigJhl Z2xvdC1hdXRvc2h1dGRvd27igJkKICAgICBJZiB0aGlzIGlzIG5vbi3igJhuaWzigJksIEVnbG90 IHNodXRzIGRvd24gYSBsYW5ndWFnZSBzZXJ2ZXIgd2hlbiB0aGUKICAgICBsYXN0IGJ1ZmZlciBt YW5hZ2VkIGJ5IGl0IGlzIGtpbGxlZC4gICpOb3RlIFNodXR0aW5nIERvd24gTFNQCiAgICAgU2Vy dmVyczo6LiAgVGhlIGRlZmF1bHQgaXMg4oCYbmls4oCZOyBpZiB5b3Ugd2FudCB0byBzaHV0IGRv d24gYQogICAgIHNlcnZlciwgdXNlIOKAmE0teCBlZ2xvdC1zaHV0ZG93buKAmSAoKm5vdGUgRWds b3QgQ29tbWFuZHM6OikuCgrigJhlZ2xvdC1jb25maXJtLXNlcnZlci1lZGl0c+KAmQogICAgIFZh cmlvdXMgRWdsb3QgY29tbWFuZHMgYW5kIGNvZGUgYWN0aW9ucyByZXN1bHQgaW4gdGhlIGxhbmd1 YWdlCiAgICAgc2VydmVyIHNlbmRpbmcgZWRpdGluZyBjb21tYW5kcyB0byBFbWFjcy4gIElmIHRo aXMgb3B0aW9uJ3MgdmFsdWUKICAgICBpcyBub24t4oCYbmls4oCZLCBFZ2xvdCB3aWxsIGFzayBm b3IgY29uZmlybWF0aW9uIGJlZm9yZSBwZXJmb3JtaW5nCiAgICAgZWRpdHMgcHJvcG9zZWQgYnkg dGhlIGxhbmd1YWdlIHNlcnZlci4gIFRoaXMgb3B0aW9uJ3MgdmFsdWUgY2FuIGJlCiAgICAgY3Jh ZnRlZCB0byByZXF1aXJlIHRoaXMgY29uZmlybWF0aW9uIGZvciBzcGVjaWZpYyBjb21tYW5kcyBv ciBvbmx5CiAgICAgd2hlbiB0aGUgZWRpdCBhZmZlY3RzIGZpbGVzIG5vdCB5ZXQgdmlzaXRlZCBi eSB0aGUgdXNlci4gIENvbnN1bHQKICAgICB0aGlzIG9wdGlvbidzIGRvY3N0cmluZyBmb3IgbW9y ZSBpbmZvcm1hdGlvbi4KCuKAmGVnbG90LWlnbm9yZWQtc2VydmVyLWNhcGFiaWxpdGllc+KAmQog ICAgIFRoaXMgdmFyaWFibGUncyB2YWx1ZSBpcyBhIGxpc3Qgb2YgbGFuZ3VhZ2Ugc2VydmVyIGNh cGFiaWxpdGllcwogICAgIHRoYXQgRWdsb3Qgc2hvdWxkIG5vdCB1c2UuICBUaGUgZGVmYXVsdCBp cyDigJhuaWzigJk6IEVnbG90IHVzZXMgYWxsIG9mCiAgICAgdGhlIGNhcGFiaWxpdGllcyBzdXBw b3J0ZWQgYnkgZWFjaCBzZXJ2ZXIuCgrigJhlZ2xvdC1leHRlbmQtdG8teHJlZuKAmQogICAgIElm IHRoaXMgaXMgbm9uLeKAmG5pbOKAmSwgYW5kIOKAmE0tLuKAmSAo4oCYeHJlZi1maW5kLWRlZmlu aXRpb25z4oCZKSBsYW5kcyB5b3UKICAgICBpbiBhIGZpbGUgb3V0c2lkZSBvZiB5b3VyIHByb2pl Y3QsIHN1Y2ggYXMgYSBzeXN0ZW0taW5zdGFsbGVkCiAgICAgbGlicmFyeSBvciBoZWFkZXIgZmls ZSwgdHJhbnNpZW50bHkgY29uc2lkZXIgdGhhdCBmaWxlIGFzIG1hbmFnZWQKICAgICBieSB0aGUg c2FtZSBsYW5ndWFnZSBzZXJ2ZXIuICBUaGF0IGZpbGUgaXMgc3RpbGwgb3V0c2lkZSB5b3VyCiAg ICAgcHJvamVjdCAoaS5lLiAg4oCYcHJvamVjdC1maW5kLWZpbGXigJkgd29uJ3QgZmluZCBpdCks IGJ1dCBFZ2xvdCBhbmQKICAgICB0aGUgc2VydmVyIHdpbGwgY29uc2lkZXIgaXQgdG8gYmUgcGFy dCBvZiB0aGUgd29ya3NwYWNlLiAgVGhlCiAgICAgZGVmYXVsdCBpcyDigJhuaWzigJkuCgrigJhl Z2xvdC1tb2RlLW1hcOKAmQogICAgIFRoaXMgdmFyaWFibGUgaXMgdGhlIGtleW1hcCBmb3IgYmlu ZGluZyBFZ2xvdC1yZWxhdGVkIGNvbW1hbmQuICBJdAogICAgIGlzIGluIGVmZmVjdCBvbmx5IGFz IGxvbmcgYXMgdGhlIGJ1ZmZlciBpcyBtYW5hZ2VkIGJ5IEVnbG90LiAgQnkKICAgICBkZWZhdWx0 LCBpdCBpcyBlbXB0eSwgd2l0aCB0aGUgc2luZ2xlIGV4Y2VwdGlvbjog4oCYQy1oIC7igJkgaXMK ICAgICByZW1hcHBlZCB0byBpbnZva2Ug4oCYZWxkb2MtZG9jLWJ1ZmZlcuKAmS4gIFlvdSBjYW4g YmluZCBhZGRpdGlvbmFsCiAgICAgY29tbWFuZHMgaW4gdGhpcyBtYXAuICBGb3IgZXhhbXBsZToK CiAgICAgICAgICAgIChkZWZpbmUta2V5IGVnbG90LW1vZGUtbWFwIChrYmQgIkMtYyByIikgJ2Vn bG90LXJlbmFtZSkKICAgICAgICAgICAgKGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAi Qy1jIG8iKSAnZWdsb3QtY29kZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0cykKICAgICAgICAgICAg KGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAiQy1jIGgiKSAnZWxkb2MpCiAgICAgICAg ICAgIChkZWZpbmUta2V5IGVnbG90LW1vZGUtbWFwIChrYmQgIjxmNj4iKSAneHJlZi1maW5kLWRl ZmluaXRpb25zKQoKICAgQWRkaXRpb25hbCB2YXJpYWJsZXMsIHdoaWNoIGFyZSByZWxldmFudCBm b3IgY3VzdG9taXppbmcgdGhlIHNlcnZlcgpjb25uZWN0aW9ucywgYXJlIGRvY3VtZW50ZWQgaW4g Km5vdGUgQ3VzdG9taXppbmcgRWdsb3Q6Oi4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2Rl OiBDdXN0b21pemluZyBFZ2xvdCwgIE5leHQ6IEFkdmFuY2VkIHNlcnZlciBjb25maWd1cmF0aW9u LCAgUHJldjogVXNpbmcgRWdsb3QsICBVcDogVG9wCgo0IEN1c3RvbWl6aW5nIEVnbG90CioqKioq KioqKioqKioqKioqKioKCkVnbG90IGl0c2VsZiBoYXMgYSByZWxhdGl2ZWx5IHNtYWxsIG51bWJl ciBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMuICBBCmxhcmdlIHBhcnQgb2YgY3VzdG9taXppbmcg RWdsb3QgdG8geW91ciBuZWVkcyBhbmQgcHJlZmVyZW5jZXMgc2hvdWxkCmFjdHVhbGx5IGJlIGRv bmUgdmlhIG9wdGlvbnMgb2YgdGhlIEVtYWNzIHBhY2thZ2VzIGFuZCBmZWF0dXJlcyB3aGljaApF Z2xvdCBzdXBwb3J0cyBhbmQgZW5oYW5jZXMgKCpub3RlIEVnbG90IEZlYXR1cmVzOjopLiAgRm9y IGV4YW1wbGU6CgogICDigKIgVG8gY29uZmlndXJlIHRoZSBmYWNlIHVzZWQgZm9yIHNlcnZlci1k ZXJpdmVkIGVycm9ycyBhbmQgd2FybmluZ3MsCiAgICAgY3VzdG9taXplIHRoZSBGbHltYWtlIGZh Y2VzIOKAmGZseW1ha2UtZXJyb3LigJkgYW5kIOKAmGZseW1ha2Utd2FybmluZ+KAmS4KCiAgIOKA oiBUbyBjb25maWd1cmUgdGhlIGFtb3VudCBvZiBzcGFjZSB0YWtlbiB1cCBieSBkb2N1bWVudGF0 aW9uIGluIHRoZQogICAgIGVjaG8gYXJlYSwgY3VzdG9taXplIHRoZSBFbERvYyB2YXJpYWJsZQog ICAgIOKAmGVsZG9jLWVjaG8tYXJlYS11c2UtbXVsdGlsaW5lLXDigJkuCgogICDigKIgVG8gY29t cGxldGVseSBjaGFuZ2UgaG93IEVsRG9jIGRpc3BsYXlzIHRoZSBhdC1wb2ludCBkb2N1bWVudGF0 aW9uCiAgICAgZGVzdGluYXRpb24sIGN1c3RvbWl6ZSB0aGUgRWxEb2MgdmFyaWFibGUKICAgICDi gJhlbGRvYy1kaXNwbGF5LWZ1bmN0aW9uc+KAmS4KCiAgIEZvciB0aGlzIHJlYXNvbiwgdGhpcyBt YW51YWwgZGVzY3JpYmVzIG9ubHkgaG93IHRvIGN1c3RvbWl6ZSBFZ2xvdCdzCm93biBvcGVyYXRp b24sIHdoaWNoIG1haW5seSBoYXMgdG8gZG8gd2l0aCB0aGUgc2VydmVyIGNvbm5lY3Rpb25zIGFu ZAp0aGUgc2VydmVyIGZlYXR1cmVzIHRvIGJlIHVzZWQgYnkgRWdsb3QuCgrigJhlZ2xvdC1zZXJ2 ZXItcHJvZ3JhbXPigJkKICAgICBUaGlzIHZhcmlhYmxlIGRldGVybWluZXMgd2hpY2ggbGFuZ3Vh Z2Ugc2VydmVyIHRvIHN0YXJ0IGZvciBlYWNoCiAgICAgc3VwcG9ydGVkIG1ham9yIG1vZGUsIGFu ZCBob3cgdG8gaW52b2tlIHRoYXQgc2VydmVyJ3MgcHJvZ3JhbS4KICAgICAqTm90ZSBTZXR0aW5n IFVwIExTUCBTZXJ2ZXJzOjosIGZvciB0aGUgZGV0YWlscy4KCuKAmGVnbG90LXN0cmljdC1tb2Rl 4oCZCiAgICAgVGhpcyBpcyDigJhuaWzigJkgYnkgZGVmYXVsdCwgbWVhbmluZyB0aGF0IEVnbG90 IGlzIGdlbmVyYWxseSBsZW5pZW50CiAgICAgYWJvdXQgbm9uLWNvbmZvcm1pbmcgc2VydmVycy4g IElmIHlvdSBuZWVkIHRvIGRlYnVnIGEgc2VydmVyLCBzZXQKICAgICB0aGlzIHRvIOKAmChkaXNh bGxvdy1ub24tc3RhbmRhcmQta2V5cyBlbmZvcmNlLXJlcXVpcmVkLWtleXMp4oCZLgoK4oCYZWds b3Qtc2VydmVyLWluaXRpYWxpemVkLWhvb2vigJkKICAgICBBIGhvb2sgcnVuIGFmdGVyIHRoZSBz ZXJ2ZXIgb2JqZWN0IGlzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZC4KCuKAmGVnbG90LWNvbm5l Y3QtaG9va+KAmQogICAgIEEgaG9vayBydW4gYWZ0ZXIgY29ubmVjdGlvbiB0byB0aGUgc2VydmVy IGlzIHN1Y2Nlc3NmdWxseQogICAgIGVzdGFibGlzaGVkLiAgKk5vdGUgU3RhcnRpbmcgRWdsb3Q6 Oi4KCuKAmGVnbG90LW1hbmFnZWQtbW9kZS1ob29r4oCZCiAgICAgQSBob29rIHJ1biBhZnRlciBF Z2xvdCBzdGFydGVkIG9yIHN0b3BwZWQgbWFuYWdpbmcgYSBidWZmZXIuICAqTm90ZQogICAgIEVn bG90IGFuZCBCdWZmZXJzOjosIGZvciBkZXRhaWxzIG9mIGl0cyB1c2FnZS4KCuKAmGVnbG90LXN0 YXktb3V0LW9m4oCZCiAgICAgVGhpcyB2YXJpYWJsZSdzIHZhbHVlIGxpc3RzIEVtYWNzIGZlYXR1 cmVzIHRoYXQgRWdsb3Qgc2hvdWxkbid0CiAgICAgYXV0b21hdGljYWxseSB0cnkgdG8gbWFuYWdl IG9uIHRoZSB1c2VyJ3MgYmVoYWxmLiAgSXQgaXMgdXNlZnVsLAogICAgIGZvciBleGFtcGxlLCB3 aGVuIHlvdSBuZWVkIHRvIHVzZSBub24tTFNQIEZseW1ha2Ugb3IgQ29tcGFueQogICAgIGJhY2st ZW5kcy4gIFRvIGhhdmUgRWdsb3Qgc3RheSBhd2F5IGZyb20gc29tZSBFbWFjcyBmZWF0dXJlLCBh ZGQKICAgICB0aGF0IGZlYXR1cmUncyBzeW1ib2wgb3IgYSByZWdleHAgdGhhdCB3aWxsIG1hdGNo IGEgc3ltYm9sJ3MgbmFtZQogICAgIHRvIHRoZSBsaXN0OiBmb3IgZXhhbXBsZSwgdGhlIHN5bWJv bCDigJh4cmVm4oCZIHRvIGxlYXZlIFhyZWYgYWxvbmUsIG9yCiAgICAgdGhlIHN0cmluZyDigJhj b21wYW554oCZIHRvIHN0YXkgYXdheSBmcm9tIHlvdXIgQ29tcGFueSBjdXN0b21pemF0aW9ucy4K ICAgICBIZXJlJ3MgYW4gZXhhbXBsZToKCiAgICAgICAgICAoYWRkLXRvLWxpc3QgJ2VnbG90LXN0 YXktb3V0LW9mICdmbHltYWtlKQoKICAgICBOb3RlIHRoYXQgeW91IGNhbiBzdGlsbCBjb25maWd1 cmUgdGhlIGV4Y2x1ZGVkIEVtYWNzIGZlYXR1cmVzCiAgICAgbWFudWFsbHkgdG8gdXNlIEVnbG90 IGluIHlvdXIg4oCYZWdsb3QtbWFuYWdlZC1tb2RlLWhvb2vigJkgb3IgdmlhIHNvbWUKICAgICBv dGhlciBtZWNoYW5pc20uCgrigJhlZ2xvdC1yZXBvcnQtcHJvZ3Jlc3PigJkKICAgICBTZXQgdGhp cyB2YXJpYWJsZSB0byB0cnVlIGlmIHlvdSdkIGxpa2UgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9ucwog ICAgIGNvbWluZyBmcm9tIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgdG8gYmUgaGFuZGxlZCBhcyBFbWFj cydzIHByb2dyZXNzCiAgICAgcmVwb3J0aW5nIGZhY2lsaXRpZXMuCgofCkZpbGU6IGRvY3VvWEVO VS5pbmZvLCAgTm9kZTogQWR2YW5jZWQgc2VydmVyIGNvbmZpZ3VyYXRpb24sICBOZXh0OiBFeHRl bmRpbmcgRWdsb3QsICBQcmV2OiBDdXN0b21pemluZyBFZ2xvdCwgIFVwOiBUb3AKCjUgQWR2YW5j ZWQgc2VydmVyIGNvbmZpZ3VyYXRpb24KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoK VGhvdWdoIG1hbnkgbGFuZ3VhZ2Ugc2VydmVycyB3b3JrIHdlbGwgb3V0LW9mLXRoZS1ib3gsIG1v c3QgYWxsb3cKZmluZS1ncmFpbmVkIGNvbnRyb2wgb2YgdGhlaXIgb3BlcmF0aW9uIHZpYSBzcGVj aWZpYyBjb25maWd1cmF0aW9uCm9wdGlvbnMgdGhhdCBhcmUgdHJhbnNtaXR0ZWQgb3ZlciB0aGUg TFNQIHByb3RvY29sIGFuZCB2YXJ5IGZyb20gc2VydmVyCnRvIHNlcnZlci4gIEEgc21hbGwgbnVt YmVyIG9mIHNlcnZlcnMgcmVxdWlyZSBzdWNoIHNwZWNpYWwgY29uZmlndXJhdGlvbgp0byB3b3Jr IGFjY2VwdGFibHksIG9yIGV2ZW4gdG8gd29yayBhdCBhbGwuCgogICBBZnRlciBoYXZpbmcgc2V0 dXAgYSBzZXJ2ZXIgZXhlY3V0YWJsZSBwcm9ncmFtIGluCuKAmGVnbG90LXNlcnZlci1wcm9ncmFt c+KAmSAoKm5vdGUgU2V0dGluZyBVcCBMU1AgU2VydmVyczo6KSBhbmQgZW5zdXJpbmcKRWdsb3Qg Y2FuIGludm9rZSBpdCwgeW91IG1heSB3YW50IHRvIHRha2UgYWR2YW50YWdlIG9mIHNvbWUgb2Yg dGhlc2UKb3B0aW9ucy4gIFlvdSBzaG91bGQgZmlyc3QgZGlzdGluZ3Vpc2ggdHdvIG1haW4ga2lu ZHMgb2Ygc2VydmVyCmNvbmZpZ3VyYXRpb246CgogICDigKIgUHJvamVjdC1zcGVjaWZpYywgYXBw bHlpbmcgdG8gYSBzcGVjaWZpYyBwcm9qZWN0OwoKICAg4oCiIFVzZXItc3BlY2lmaWMsIGFwcGx5 aW5nIHRvIGFsbCBwcm9qZWN0cyB0aGUgc2VydmVyIGlzIHVzZWQgZm9yLgoKICAgV2hlbiB5b3Ug aGF2ZSBkZWNpZGVkIHdoaWNoIGtpbmQgeW91IG5lZWQsIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMK dGVhY2ggaG93IEVnbG90J3MgdXNlciB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSBp dDoKCiogTWVudToKCiogUHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uOjoKKiBVc2VyLXNw ZWNpZmljIGNvbmZpZ3VyYXRpb246OgoqIEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcDo6CgogICBJ dCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQgbm90IGFsbCBzZXJ2ZXJzIGFsbG93IGJvdGgga2lu ZHMgb2YKY29uZmlndXJhdGlvbiwgbm9yIGlzIGl0IGd1YXJhbnRlZWQgdGhhdCB1c2VyIG9wdGlv bnMgY2FuIGJlIGNvcGllZCBvdmVyCnRvIHByb2plY3Qgb3B0aW9ucywgYW5kIHZpY2UtdmVyc2Eu ICBXaGVuIGluIGRvdWJ0LCBjb25zdWx0IHlvdXIKbGFuZ3VhZ2Ugc2VydmVyJ3MgZG9jdW1lbnRh dGlvbi4KCiAgIEl0J3MgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCBzb21lIGxhbmd1YWdlIHNlcnZl cnMgY2FuIHJlYWQgdGhlc2UKc2V0dGluZ3MgZnJvbSBjb25maWd1cmF0aW9uIGZpbGVzIGluIHRo ZSB1c2VyJ3Mg4oCYSE9NReKAmSBkaXJlY3Rvcnkgb3IgaW4gYQpwcm9qZWN0J3MgZGlyZWN0b3J5 LiAgRm9yIGV4YW1wbGUsIHRoZSDigJhweWxzcOKAmSBQeXRob24gc2VydmVyIHJlYWRzIHRoZQpm aWxlIOKAmH4vLmNvbmZpZy9weWNvZGVzdHlsZeKAmSBmb3IgdXNlciBjb25maWd1cmF0aW9uLiAg VGhlIOKAmGNsYW5nZOKAmSBDL0MrKwpzZXJ2ZXIgcmVhZHMgYm90aCDigJh+Ly5jb25maWcvY2xh bmdkL2NvbmZpZy55YW1s4oCZIGZvciB1c2VyIGNvbmZpZ3VyYXRpb24KYW5kIOKAmC5jbGFuZ2Ti gJkgZm9yIHByb2plY3QgY29uZmlndXJhdGlvbi4gIEl0IG1heSBiZSBhZHZhbnRhZ2VvdXMgdG8g dXNlCnRoZXNlIG1lY2hhbmlzbXMgaW5zdGVhZCBvZiBFZ2xvdCdzLCBhcyB0aGlzIHdpbGwgcHJv YmFibHkgd29yayB3aXRoCm90aGVyIExTUCBjbGllbnRzIGFuZCBtYXkgYmUgZWFzaWVyIHRvIGRl YnVnIHRoYW4gb3B0aW9ucyByaWRpbmcgb24gdGhlCkxTUCB3aXJlLgoKHwpGaWxlOiBkb2N1b1hF TlUuaW5mbywgIE5vZGU6IFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgIE5leHQ6IFVz ZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgIFVwOiBBZHZhbmNlZCBzZXJ2ZXIgY29uZmlndXJh dGlvbgoKNS4xIFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbgo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CgpUbyBzZXQgcHJvamVjdC1zcGVjaWZpYyBzZXR0aW5ncywgd2hp Y2ggdGhlIExTUCBzcGVjaWZpY2F0aW9uIGNhbGxzCuKAnHdvcmtzcGFjZSBjb25maWd1cmF0aW9u 4oCdLCB0aGUgdmFyaWFibGUg4oCYZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb27igJkKbWF5 IGJlIHVzZWQuCgogICBUaGlzIHZhcmlhYmxlIGlzIGEgZGlyZWN0b3J5LWxvY2FsIHZhcmlhYmxl ICgqbm90ZSBQZXItZGlyZWN0b3J5CkxvY2FsIFZhcmlhYmxlczogKGVtYWNzKURpcmVjdG9yeSBW YXJpYWJsZXMuKS4gIEl0J3MgaW1wb3J0YW50IHRvCnJlY29nbml6ZSB0aGF0IHRoaXMgdmFyaWFi bGUgcmVhbGx5IG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiBzZXQKZGlyZWN0b3J5LWxvY2FsbHkuICBJ dCB1c3VhbGx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gc2V0IGl0CmZpbGUtbG9jYWxseSBvciBp biBhIG1ham9yLW1vZGUgaG9vay4KCiAgIFRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gc2V0IOKAmGVn bG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uIOKAmSBpcyB1c2luZwphIOKAmC5kaXItbG9jYWxz LmVs4oCZIGZpbGUgaW4gdGhlIHJvb3Qgb2YgeW91ciBwcm9qZWN0LiAgSWYgeW91IGNhbid0IGRv CnRoYXQsIHlvdSBtYXkgYWxzbyBzZXQgaXQgZnJvbSBFbGlzcCBjb2RlIHZpYSB0aGUK4oCYZGly LWxvY2Fscy1zZXQtY2xhc3MtdmFyaWFibGVz4oCZIGZ1bmN0aW9uLiAgKCpub3RlIChlbGlzcClE aXJlY3RvcnkKTG9jYWwgVmFyaWFibGVzOjopLgoKICAgSG93ZXZlciB5b3UgY2hvb3NlIHRvIHNl dCBpdCwgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYSBwbGlzdCAoKm5vdGUKKGVsaXNwKVByb3Bl cnR5IExpc3RzOjopIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtYXQ6CgogICAgICAoOlNFUlZFUjEg UExJU1QxIDpTRVJWRVIyIFBMSVNUMiAuLi4pCgpIZXJlLCA6U0VSVkVSMSBhbmQgOlNFUlZFUjIg YXJlIGtleXdvcmRzIHdob3NlIG5hbWVzIGlkZW50aWZ5IHRoZSBMU1AKbGFuZ3VhZ2Ugc2VydmVy cyB0byB0YXJnZXQuICBDb25zdWx0IHNlcnZlciBkb2N1bWVudGF0aW9uIHRvIGZpbmQgb3V0Cndo YXQgbmFtZSB0byB1c2UuICBQTElTVDEgYW5kIFBMSVNUMiBhcmUgcGxpc3RzIG9mIG9wdGlvbnMs IHBvc3NpYmx5Cm5lc3Rpbmcgb3RoZXIgcGxpc3RzLgoKICAgV2hlbiBleHBlcmltZW50aW5nIHdp dGggd29ya3NwYWNlIHNldHRpbmdzLCB5b3UgY2FuIHVzZSB0aGUgY29tbWFuZArigJhNLXggZWds b3Qtc2hvdy13b3Jrc3BhY2UtY29uZmlndXJhdGlvbuKAmSB0byBpbnNwZWN0IGFuZCBkZWJ1ZyB0 aGUgdmFsdWUKb2YgdGhpcyB2YXJpYWJsZSBpbiBpdHMgZmluYWwgSlNPTiBmb3JtLCByZWFkeSB0 byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIKKCpub3RlIEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcDo6 KS4gIFRoaXMgaGVscGVyIGNvbW1hbmQgd29ya3MgZXZlbgpiZWZvcmUgYWN0dWFsbHkgY29ubmVj dGluZyB0byB0aGUgc2VydmVyLgoKICAgVGhlc2UgdmFyaWFibGUncyB2YWx1ZSBkb2Vzbid0IHRh a2UgZWZmZWN0IGltbWVkaWF0ZWx5LiAgVGhhdCBoYXBwZW5zCnVwb24gZXN0YWJsaXNoaW5nIHRo ZSBjb25uZWN0aW9uLCBpbiByZXNwb25zZSB0byBhbiBleHBsaWNpdCBxdWVyeSBmcm9tCnRoZSBz ZXJ2ZXIsIG9yIHdoZW4gaXNzdWluZyB0aGUgY29tbWFuZCDigJhNLXgKZWdsb3Qtc2lnbmFsLWRp ZENoYW5nZUNvbmZpZ3VyYXRpb27igJkgd2hpY2ggbm90aWZpZXMgdGhlIHNlcnZlciBkdXJpbmcg YW4Kb25nb2luZyBFZ2xvdCBzZXNzaW9uLgoKNS4xLjEgRXhhbXBsZXMKLS0tLS0tLS0tLS0tLS0K CkZvciBzb21lIHVzZXJzLCBzZXR0aW5nIOKAmGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9u 4oCZIGlzIGEgc29tZXdoYXQKZGF1bnRpbmcgdGFzay4gIE9uZSBvZiB0aGUgcmVhc29ucyBpcyBo YXZpbmcgdG8gbWFuYWdlIHRoZSBnZW5lcmFsIEVsaXNwCnN5bnRheCBvZiBwZXItbW9kZSBkaXJl Y3RvcnktbG9jYWwgdmFyaWFibGVzLCB3aGljaCB1c2VzIGFsaXN0cyAoKm5vdGUKKGVsaXNwKUFz c29jaWF0aW9uIExpc3RzOjopLCBhbmQgdGhlIHNwZWNpZmljIHN5bnRheCBvZiBFZ2xvdCdzCnZh cmlhYmxlLCB3aGljaCB1c2VzIHBsaXN0cy4gIFNvbWUgZXhhbXBsZXMgYXJlIHVzZWZ1bC4KCiAg IExldCdzIHNheSB5b3Ugd2FudCB0byBjb25maWd1cmUgdHdvIGxhbmd1YWdlIHNlcnZlcnMgdG8g YmUgdXNlZCBpbiBhCnByb2plY3Qgd3JpdHRlbiBpbiBhIGNvbWJpbmF0aW9uIG9mIHRoZSBQeXRo b24gYW5kIEdvIGxhbmd1YWdlcy4gIFlvdQp3YW50IHRvIHVzZSB0aGUg4oCYcHlsc3DigJkgYW5k IOKAmGdvcGxz4oCZIGxhbmd1YWdlcyBzZXJ2ZXJzLiAgSW4gdGhlCmRvY3VtZW50YXRpb24gb2Yg dGhlIHNlcnZlcnMgaW4gcXVlc3Rpb24gKG9yIGluIHNvbWUgb3RoZXIgZWRpdG9yJ3MKY29uZmln dXJhdGlvbiBmaWxlLCBvciBpbiBzb21lIGJsb2cgYXJ0aWNsZSksIHlvdSBmaW5kIHRoZSBmb2xs b3dpbmcKY29uZmlndXJhdGlvbiBvcHRpb25zIGluIGluZm9ybWFsIGRvdHRlZC1ub3RhdGlvbiBz eW50YXg6CgogICAgIHB5bHNwLnBsdWdpbnMuamVkaV9jb21wbGV0aW9uLmluY2x1ZGVfcGFyYW1z OiB0cnVlCiAgICAgcHlsc3AucGx1Z2lucy5qZWRpX2NvbXBsZXRpb24uZnV6enk6IHRydWUKICAg ICBweWxzcC5weWxpbnQuZW5hYmxlZDogZmFsc2UKICAgICBnb3Bscy51c2VQbGFjZWhvbGRlcnM6 IHRydWUKCiAgIFRvIGFwcGx5IHRoaXMgdG8gRWdsb3QsIGFuZCBhc3N1bWluZyB5b3UgY2hvc2Ug dGhlIOKAmC5kaXItbG9jYWxzLmVs4oCZCmZpbGUgbWV0aG9kLCB0aGUgY29udGVudHMgb2YgdGhh dCBmaWxlIGNvdWxkIGJlOgoKICAgICAoKG5pbAogICAgICAgLiAoKGVnbG90LXdvcmtzcGFjZS1j b25maWd1cmF0aW9uCiAgICAgICAgICAgLiAoOnB5bHNwICg6cGx1Z2lucyAoOmplZGlfY29tcGxl dGlvbiAoOmluY2x1ZGVfcGFyYW1zIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6ZnV6enkgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6cHlsaW50ICg6ZW5hYmxlZCA6anNvbi1mYWxzZSkpKQogICAgICAgICAgICAgIDpnb3BscyAo OnVzZVBsYWNlaG9sZGVycyB0KSkpKSkKICAgICAgKHB5dGhvbi1iYXNlLW1vZGUgLiAoKGluZGVu dC10YWJzLW1vZGUgLiBuaWwpKSkKICAgICAgKGdvLW1vZGUgICAgICAgICAgLiAoKGluZGVudC10 YWJzLW1vZGUgLiB0KSkpKQoKVGhpcyBzZXRzIHRoZSB2YWx1ZSBvZiDigJhlZ2xvdC13b3Jrc3Bh Y2UtY29uZmlndXJhdGlvbuKAmSBpbiBhbGwgdGhlCmJ1ZmZlcnMgaW5zaWRlIHRoZSBwcm9qZWN0 OyBlYWNoIHNlcnZlciB3aWxsIHVzZSBvbmx5IHRoZSBzZWN0aW9uIG9mIHRoZQpwYXJhbWV0ZXJz IGludGVuZGVkIGZvciB0aGF0IHNlcnZlciwgYW5kIGlnbm9yZSB0aGUgcmVzdC4gIE5vdGUgaG93 CmFsaXN0cyBhcmUgdXNlZCBmb3IgYXNzb2NpYXRpbmcgRW1hY3MgbW9kZSBuYW1lcyB3aXRoIGFs aXN0cyBhc3NvY2lhdGluZwp2YXJpYWJsZSBuYW1lcyB3aXRoIHZhcmlhYmxlIHZhbHVlcy4gIFRo ZW4gbm90aWNlIGhvdyBwbGlzdHMgYXJlIHVzZWQKaW5zaWRlIHRoZSB2YWx1ZSBvZiDigJhlZ2xv dC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbuKAmS4KCiAgIFRoaXMgZm9sbG93aW5nIGZvcm0gbWF5 IGFsc28gYmUgdXNlZDoKCiAgICAgKChweXRob24tYmFzZS1tb2RlCiAgICAgICAuICgoZWdsb3Qt d29ya3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgICAgICAuICg6cHlsc3AgKDpwbHVnaW5zICg6 amVkaV9jb21wbGV0aW9uICg6aW5jbHVkZV9wYXJhbXMgdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdXp6eSB0KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpweWxpbnQgKDplbmFibGVkIDpqc29uLWZhbHNlKSkpKSkKICAgICAgICAg IChpbmRlbnQtdGFicy1tb2RlIC4gbmlsKSkpCiAgICAgIChnby1tb2RlCiAgICAgICAuICgoZWds b3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgICAgICAuICg6Z29wbHMgKDp1c2VQbGFj ZWhvbGRlcnMgdCkpKQogICAgICAgICAgKGluZGVudC10YWJzLW1vZGUgLiB0KSkpKQoKVGhpcyBz ZXRzIHVwIHRoZSB2YWx1ZSBvZiDigJhlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbuKAmSBz ZXBhcmF0ZWx5CmRlcGVuZGluZyBvbiB0aGUgbWFqb3IgbW9kZSBvZiBlYWNoIG9mIHRoYXQgcHJv amVjdCdzIGJ1ZmZlcnMuCuKAmHB5dGhvbi1iYXNlLW1vZGXigJkgYnVmZmVycyB3aWxsIGhhdmUg dGhlIHZhcmlhYmxlIHNldCB0byDigJgoOnB5bHNwCig6cGx1Z2lucyAuLi4pKeKAmS4gIOKAmGdv LW1vZGXigJkgYnVmZmVycyB3aWxsIGhhdmUgdGhlIHZhcmlhYmxlIHNldCB0bwrigJgoOmdvcGxz ICg6dXNlUGxhY2Vob2xkZXJzIHQpKeKAmS4KCiAgIFNvbWUgc2VydmVycyB3aWxsIGlzc3VlIHdv cmtzcGFjZSBjb25maWd1cmF0aW9uIGZvciBzcGVjaWZpYyBmaWxlcwppbnNpZGUgeW91ciBwcm9q ZWN0LiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBrbm93IOKAmGdvcGxz4oCZIGlzIGFza2luZyBhYm91 dApzcGVjaWZpYyBmaWxlcyBpbiB0aGUg4oCYc3JjL2ltcG9ydGVk4oCZIHN1YmRpcmVjdG9yeSBh bmQgeW91IHdhbnQgdG8gc2V0IGEKZGlmZmVyZW50IG9wdGlvbiBmb3Ig4oCYZ29wbHMudXNlUGxh Y2Vob2xkZXJz4oCZICwgeW91IG1heSB1c2Ugc29tZXRoaW5nCmxpa2U6CgogICAgICgocHl0aG9u LWJhc2UtbW9kZQogICAgICAgLiAoKGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uCiAgICAg ICAgICAgLiAoOnB5bHNwICg6cGx1Z2lucyAoOmplZGlfY29tcGxldGlvbiAoOmluY2x1ZGVfcGFy YW1zIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 ZnV6enkgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cHlsaW50ICg6ZW5hYmxl ZCA6anNvbi1mYWxzZSkpKSkpCiAgICAgICAgICAoaW5kZW50LXRhYnMtbW9kZSBuaWwpKSkKICAg ICAgKGdvLW1vZGUKICAgICAgIC4gKChlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbgogICAg ICAgICAgIC4gKDpnb3BscyAoOnVzZVBsYWNlaG9sZGVycyB0KSkpCiAgICAgICAgICAoaW5kZW50 LXRhYnMtbW9kZSB0KSkpCiAgICAgICgic3JjL2ltcG9ydGVkIgogICAgICAgIC4gKChlZ2xvdC13 b3Jrc3BhY2UtY29uZmlndXJhdGlvbgogICAgICAgICAgIC4gKDpnb3BscyAoOnVzZVBsYWNlaG9s ZGVycyBuaWwpKSkpKSkKCiAgIEZpbmFsbHksIGlmIG9uZSBuZWVkcyB0byBkZXRlcm1pbmUgdGhl IHdvcmtzcGFjZSBjb25maWd1cmF0aW9uIGJhc2VkCm9uIHNvbWUgZHluYW1pYyBjb250ZXh0LCDi gJhlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbuKAmSBjYW4gYmUgc2V0IHRvIGEKZnVuY3Rp b24uICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIOKAmGVnbG90LWxzcC1zZXJ2ZXLi gJkgaW5zdGFuY2UKb2YgdGhlIGNvbm5lY3RlZCBzZXJ2ZXIgKGlmIGFueSkgYW5kIHdpdGgg4oCY ZGVmYXVsdC1kaXJlY3RvcnnigJkgc2V0IHRvIHRoZQpyb290IG9mIHRoZSBwcm9qZWN0LiAgVGhl IGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBwbGlzdCBzdWl0YWJsZSBmb3IKdXNlIGFzIHRoZSB2 YXJpYWJsZSdzIHZhbHVlLgoKHwpGaWxlOiBkb2N1b1hFTlUuaW5mbywgIE5vZGU6IFVzZXItc3Bl Y2lmaWMgY29uZmlndXJhdGlvbiwgIE5leHQ6IEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcCwgIFBy ZXY6IFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgIFVwOiBBZHZhbmNlZCBzZXJ2ZXIg Y29uZmlndXJhdGlvbgoKNS4yIFVzZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIGtpbmQgb2YgY29uZmlndXJhdGlvbiBhcHBsaWVz IHRvIGFsbCBwcm9qZWN0cyB0aGUgc2VydmVyIGlzIHVzZWQKZm9yLiAgSGVyZSwgdGhlcmUgYXJl IGEgbnVtYmVyIG9mIHdheXMgdG8gZG8gdGhpcyBpbnNpZGUgRWdsb3QuCgogICBBIGNvbW1vbiB3 YXkgaXMgdG8gcGFzcyBjb21tYW5kLWxpbmUgb3B0aW9ucyB0byB0aGUgc2VydmVyIGludm9jYXRp b24KdmlhIOKAmGVnbG90LXNlcnZlci1wcm9ncmFtc+KAmS4gIExldCdzIHNheSB3ZSB3YW50IHRv IGNvbmZpZ3VyZSB3aGVyZSB0aGUK4oCYY2xhbmdk4oCZIHNlcnZlciByZWFkcyBpdHMg4oCYY29t cGlsZV9jb21tYW5kcy5qc29u4oCZIGZyb20uICBUaGlzIGNhbiBiZQpkb25lIGxpa2Ugc286Cgog ICAgICh3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZWdsb3QKICAgICAgIChhZGQtdG8tbGlzdCAnZWds b3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgICAgICAgYChjKystbW9kZSAuICgiY2xh bmdkIiAiLS1jb21waWxlLWNvbW1hbmRzLWRpcj0vdG1wIikpKSkKCgpBbm90aGVyIHdheSBpcyB0 byBoYXZlIEVnbG90IHBhc3MgYSBKU09OIG9iamVjdCB0byB0aGUgc2VydmVyIGR1cmluZyB0aGUK TFNQIGhhbmRzaGFrZS4gIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUg4oCYOmluaXRpYWxpemF0aW9u T3B0aW9uc+KAmSBzeW50YXgKb2Yg4oCYZWdsb3Qtc2VydmVyLXByb2dyYW1z4oCZOgoKICAgICAo d2l0aC1ldmFsLWFmdGVyLWxvYWQgJ2VnbG90CiAgICAgICAoYWRkLXRvLWxpc3QgJ2VnbG90LXNl cnZlci1wcm9ncmFtcwogICAgICAgICAgICAgICAgICAgIGAoYysrLW1vZGUgLiAoImNsYW5nZCIg OmluaXRpYWxpemF0aW9uT3B0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKDpjb21waWxhdGlvbkRhdGFiYXNlUGF0aCAiL3RtcCIpKSkpKQoKVGhlIGFyZ3Vt ZW50IOKAmCg6Y29tcGlsYXRpb25EYXRhYmFzZVBhdGggIi90bXAiKeKAmSBpcyBFbWFjcydzCnJl cHJlc2VudGF0aW9uIGluIHBsaXN0IGZvcm1hdCBvZiBhIHNpbXBsZSBKU09OIG9iamVjdArigJh7 ImNvbXBpbGF0aW9uRGF0YWJhc2VQYXRoIjogIi90bXAifeKAmS4gIFRvIGxlYXJuIGhvdyB0byBy ZXByZXNlbnQgbW9yZQpkZWVwbHkgbmVzdGVkIG9wdGlvbnMgaW4gdGhpcyBmb3JtYXQsICpub3Rl IEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcDo6LgoKICAgSW4gdGhpcyBjYXNlLCB0aGUgdHdvIGV4 YW1wbGVzIGFjaGlldmUgZXhhY3RseSB0aGUgc2FtZSwgYnV0IG5vdGljZQpob3cgdGhlIG9wdGlv bidzIG5hbWUgaGFzIGNoYW5nZWQgYmV0d2VlbiB0aGVtLgoKICAgRmluYWxseSB0aGVyZSBpcyBh bm90aGVyIHdheSB0byBkbyB1c2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb2YKbGFuZ3VhZ2Ug c2VydmVycywgd2hpY2ggbWF5IGJlIHVzZWQgaWYgdGhlIG1ldGhvZHMgYWJvdmUgYXJlIG5vdApz dXBwb3J0ZWQuICBJdCBjb25zaXN0cyBvZiBfZ2xvYmFsbHlfIHNldHRpbmcK4oCYZWdsb3Qtd29y a3NwYWNlLWNvbmZpZ3VyYXRpb27igJksIGEgdmFyaWFibGUgb3JpZ2luYWxseSBpbnRlbmRlZCBm b3IKcHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiAgVGhpcyBoYXMgdGhlIHNhbWUgZWZm ZWN0IGFzIGdpdmluZyBhbGwKeW91ciBwcm9qZWN0cyBhIGNlcnRhaW4gZGVmYXVsdCBjb25maWd1 cmF0aW9uLCBhcyBkZXNjcmliZWQgaW4gKm5vdGUKUHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0 aW9uOjouICBIZXJlIGlzIGFuIGV4YW1wbGU6CgogICAgIChzZXRxLWRlZmF1bHQgZWdsb3Qtd29y a3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgICAgICcoOnB5bHNwICg6cGx1Z2lu cyAoOmplZGlfY29tcGxldGlvbiAoOmluY2x1ZGVfcGFyYW1zIHQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1enp5IHQpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpweWxpbnQgKDplbmFibGVkIDpqc29uLWZh bHNlKSkpCiAgICAgICAgICAgICAgICAgICAgIDpnb3BscyAoOnVzZVBsYWNlaG9sZGVycyB0KSkp CgogICBOb3RlIHRoYXQgdGhlIGdsb2JhbCB2YWx1ZSBvZiDigJhlZ2xvdC13b3Jrc3BhY2UtY29u ZmlndXJhdGlvbuKAmSBpcwphbHdheXMgb3ZlcnJpZGRlbiBpZiBhIGRpcmVjdG9yeS1sb2NhbCB2 YWx1ZSBpcyBkZXRlY3RlZC4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBKU09OUlBD IG9iamVjdHMgaW4gRWxpc3AsICBQcmV2OiBVc2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sICBV cDogQWR2YW5jZWQgc2VydmVyIGNvbmZpZ3VyYXRpb24KCjUuMyBKU09OUlBDIG9iamVjdHMgaW4g RWxpc3AKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKRW1hY3MncyBwcmVmZXJyZWQgd2F5 IG9mIHJlcHJlc2VudGluZyBKU09OIGlzIHZpYSBMaXNwIGxpc3RzLiAgSW4gRWdsb3QsCnRoZSBz eW50YXggb2YgdGhpcyBsaXN0IGlzIHRoZSBzaW1wbGVzdCBwb3NzaWJsZSAodGhlIG9uZSB3aXRo IGZld2VyCnBhcmVudGhlc2lzKSwgYSBwbGlzdCAoKm5vdGUgKGVsaXNwKVByb3BlcnR5IExpc3Rz OjopLgoKICAgVGhlIHBsaXN0IG1heSBiZSBhcmJpdHJhcmlseSBjb21wbGV4LCBhbmQgZ2VuZXJh bGx5IGNvbnRhaW5pbmcgb3RoZXIKa2V5d29yZC12YWx1ZSBwcm9wZXJ0eSBzdWItcGxpc3RzIGNv cnJlc3BvbmRpbmcgdG8gSlNPTiBzdWItb2JqZWN0cy4KCiAgIEZvciByZXByZXNlbnRpbmcgdGhl IEpTT04gbGVhZiB2YWx1ZXMg4oCYdHJ1ZeKAmSwg4oCYZmFsc2XigJksIOKAmG51bGzigJkgYW5k CuKAmHt94oCZLCB5b3UgY2FuIHVzZSB0aGUgTGlzcCB2YWx1ZXMg4oCYdOKAmSwg4oCYOmpzb24t ZmFsc2XigJksIOKAmG5pbOKAmSwgYW5kCuKAmGVnbG90LXt94oCZLCByZXNwZWN0aXZlbHkuICBK U09OIGFycmF5cyBhcmUgcmVwcmVzZW50ZWQgYXMgRWxpc3AgdmVjdG9ycwpzdXJyb3VuZGVkIGJ5 IHNxdWFyZSBicmFja2V0cyAoKm5vdGUgKGVsaXNwKVZlY3RvcnM6OikuCgogICBGb3IgZXhhbXBs ZSwgdGhlIHBsaXN0CgogICAgICg6cHlsc3AgKDpwbHVnaW5zICg6amVkaV9jb21wbGV0aW9uICg6 aW5jbHVkZV9wYXJhbXMgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6ZnV6enkgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2Fj aGVfZm9yIFsicGFuZGFzIiAibnVtcHkiXSkKICAgICAgICAgICAgICAgICAgICAgICAgOnB5bGlu dCAoOmVuYWJsZWQgOmpzb24tZmFsc2UpKSkKICAgICAgOmdvcGxzICg6dXNlUGxhY2Vob2xkZXJz IHQpKQoKaXMgc2VyaWFsaXplZCBieSBFZ2xvdCB0byB0aGUgZm9sbG93aW5nIEpTT04gdGV4dDoK CiAgICAgewogICAgICAgInB5bHNwIjogewogICAgICAgICAicGx1Z2lucyI6IHsKICAgICAgICAg ICAiamVkaV9jb21wbGV0aW9uIjogewogICAgICAgICAgICAgImluY2x1ZGVfcGFyYW1zIjogdHJ1 ZSwKICAgICAgICAgICAgICJmdXp6eSI6IHRydWUsCiAgICAgICAgICAgICAiY2FjaGVfZm9yIjog WyAicGFuZGFzIiwgIm51bXB5IiBdCiAgICAgICAgICAgfSwKICAgICAgICAgICAicHlsaW50Ijog ewogICAgICAgICAgICAgImVuYWJsZWQiOiBmYWxzZQogICAgICAgICAgIH0KICAgICAgICAgfQog ICAgICAgfSwKICAgICAgICJnb3BscyI6IHsKICAgICAgICAgInVzZVBsYWNlaG9sZGVycyI6IHRy dWUKICAgICAgIH0KICAgICB9CgofCkZpbGU6IGRvY3VvWEVOVS5pbmZvLCAgTm9kZTogRXh0ZW5k aW5nIEVnbG90LCAgTmV4dDogVHJvdWJsZXNob290aW5nIEVnbG90LCAgUHJldjogQWR2YW5jZWQg c2VydmVyIGNvbmZpZ3VyYXRpb24sICBVcDogVG9wCgo2IEV4dGVuZGluZyBFZ2xvdAoqKioqKioq KioqKioqKioqKgoKU29tZXRpbWVzIGl0IG1heSBiZSB1c2VmdWwgdG8gZXh0ZW5kIGV4aXN0aW5n IEVnbG90IGZ1bmN0aW9uYWxpdHkgdXNpbmcKRWxpc3AgaXRzIHB1YmxpYyBtZXRob2RzLiAgQSBn b29kIGV4YW1wbGUgb2Ygd2hlbiB0aGlzIG5lZWQgbWF5IGFyaXNlIGlzCmFkZGluZyBzdXBwb3J0 IGZvciBhIGN1c3RvbSBMU1AgcHJvdG9jb2wgZXh0ZW5zaW9uIG9ubHkgaW1wbGVtZW50ZWQgYnkg YQpzcGVjaWZpYyBzZXJ2ZXIuCgogICBUaGUgYmVzdCBzb3VyY2Ugb2YgZG9jdW1lbnRhdGlvbiBm b3IgdGhpcyBpcyBwcm9iYWJseSBFZ2xvdCBzb3VyY2UKY29kZSBpdHNlbGYsIHBhcnRpY3VsYXJs eSB0aGUgc2VjdGlvbiBtYXJrZWQgIkFQSSIuCgogICBNb3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5 IGlzIGltcGxlbWVudGVkIHdpdGggQ29tbW9uLUxpc3Agc3R5bGUKZ2VuZXJpYyBmdW5jdGlvbnMg KCpub3RlIChlaWVpbylHZW5lcmljczo6KSB0aGF0IGNhbiBiZSBlYXNpbHkgZXh0ZW5kZWQKb3Ig b3ZlcnJpZGRlbi4gIFRoZSBFZ2xvdCBjb2RlIGl0c2VsZiBpcyBhbiBleGFtcGxlIG9uIGhvdyB0 byBkbyB0aGlzLgoKICAgVGhlIGZvbGxvd2luZyBpcyBhIHJlbGF0aXZlbHkgc2ltcGxlIGV4YW1w bGUgdGhhdCBhZGRzIHN1cHBvcnQgZm9yCnRoZSDigJhpbmFjdGl2ZVJlZ2lvbnPigJkgZXhwZXJp bWVudGFsIGZlYXR1cmUgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDE3IG9mCnRoZSDigJhjbGFuZ2Ti gJkgQy9DKysgbGFuZ3VhZ2Ugc2VydmVyKysuCgogICBTdW1tYXJpbHksIHRoZSBmZWF0dXJlIHdv cmtzIGJ5IGZpcnN0IGhhdmluZyB0aGUgc2VydmVyIGRldGVjdCB0aGUKRWdsb3QncyBhZHZlcnRp c2VtZW50IG9mIHRoZSDigJhpbmFjdGl2ZVJlZ2lvbnPigJkgY2xpZW50IGNhcGFiaWxpdHkgZHVy aW5nCnN0YXJ0dXAsIHdoZXJldXBvbiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHdpbGwgcmVwb3J0IGEg bGlzdCBvZiByZWdpb25zIG9mCmluYWN0aXZlIGNvZGUgZm9yIGVhY2ggYnVmZmVyLiAgVGhpcyBp cyB1c3VhbGx5IGNvZGUgc3Vycm91bmRlZCBieSBDL0MrKwrigJgjaWZkZWbigJkgbWFjcm9zIHRo YXQgdGhlIHByZXByb2Nlc3NvciByZW1vdmVzIGJhc2VkIG9uIGNvbXBpbGUtdGltZQppbmZvcm1h dGlvbi4KCiAgIFRoZSBsYW5ndWFnZSBzZXJ2ZXIgcmVwb3J0cyB0aGUgcmVnaW9ucyBieSBwZXJp b2RpY2FsbHkgc2VuZGluZyBhCuKAmHRleHREb2N1bWVudC9pbmFjdGl2ZVJlZ2lvbnPigJkgbm90 aWZpY2F0aW9uIGZvciBlYWNoIG1hbmFnZWQgYnVmZmVyCigqbm90ZSBFZ2xvdCBhbmQgQnVmZmVy czo6KS4gIE5vcm1hbGx5LCB1bmtub3duIHNlcnZlciBub3RpZmljYXRpb25zIGFyZQppZ25vcmVk IGJ5IEVnbG90LCBidXQgd2UncmUgZ29pbmcgY2hhbmdlIHRoYXQuCgogICBCb3RoIHRoZSBhbm5v dW5jZW1lbnQgb2YgdGhlIGNsaWVudCBjYXBhYmlsaXR5IGFuZCB0aGUgaGFuZGxpbmcgb2YKdGhl IG5ldyBub3RpZmljYXRpb24gaXMgZG9uZSBieSBhZGRpbmcgbWV0aG9kcyB0byBnZW5lcmljIGZ1 bmN0aW9ucy4KCiAgIOKAoiBUaGUgZmlyc3QgbWV0aG9kIGV4dGVuZHMg4oCYZWdsb3QtY2xpZW50 LWNhcGFiaWxpdGllc+KAmSB1c2luZyBhIHNpbXBsZQogICAgIGhldXJpc3RpYyB0byBkZXRlY3Qg aWYgY3VycmVudCBzZXJ2ZXIgaXMg4oCYY2xhbmdk4oCZIGFuZCBlbmFibGVzIHRoZQogICAgIOKA mGluYWN0aXZlUmVnaW9u4oCZIGNhcGFiaWxpdHkuCgogICAgICAgICAgKGNsLWRlZm1ldGhvZCBl Z2xvdC1jbGllbnQtY2FwYWJpbGl0aWVzIDphcm91bmQgKHNlcnZlcikKICAgICAgICAgICAgKGxl dCAoKGJhc2UgKGNsLWNhbGwtbmV4dC1tZXRob2QpKSkKICAgICAgICAgICAgICAod2hlbiAoY2wt ZmluZCAiY2xhbmdkIiAocHJvY2Vzcy1jb21tYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoanNvbnJwYy0tcHJvY2VzcyBzZXJ2ZXIpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDp0ZXN0ICMnc3RyaW5nLW1hdGNoKQogICAgICAgICAgICAgICAgKHNldGYg KGNsLWdldGYgKGNsLWdldGYgYmFzZSA6dGV4dERvY3VtZW50KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOmluYWN0aXZlUmVnaW9uc0NhcGFiaWxpdGllcykKICAgICAgICAgICAgICAg ICAgICAgICcoOmluYWN0aXZlUmVnaW9ucyB0KSkpCiAgICAgICAgICAgICAgYmFzZSkpCgogICAg IE5vdGljZSB3ZSB1c2UgYW4gaW50ZXJuYWwgZnVuY3Rpb24gb2YgdGhlIOKAmGpzb25ycGMuZWzi gJkgbGlicmFyeSwgYW5kCiAgICAgYSByZWdleHAgc2VhcmNoIHRvIGRldGVjdCDigJhjbGFuZ2Ti gJkuICBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0bwogICAgIGRlZmluZSBhIG5ldyBFSUVJTyBz dWJjbGFzcyBvZiDigJhlZ2xvdC1sc3Atc2VydmVy4oCZLCBtYXliZSBjYWxsZWQKICAgICDigJhl Z2xvdC1jbGFuZ2TigJksIHNvIHRoYXQgdGhlIG1ldGhvZCB3b3VsZCBiZSBzaW1wbGlmaWVkOgoK ICAgICAgICAgIChjbC1kZWZtZXRob2QgZWdsb3QtY2xpZW50LWNhcGFiaWxpdGllcyA6YXJvdW5k ICgoX3MgZWdsb3QtY2xhbmdkKSkKICAgICAgICAgICAgKGxldCAoKGJhc2UgKGNsLWNhbGwtbmV4 dC1tZXRob2QpKSkKICAgICAgICAgICAgICAoc2V0ZiAoY2wtZ2V0ZiAoY2wtZ2V0ZiBiYXNlIDp0 ZXh0RG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aW5hY3RpdmVSZWdp b25zQ2FwYWJpbGl0aWVzKQogICAgICAgICAgICAgICAgICAgICAgJyg6aW5hY3RpdmVSZWdpb25z IHQpKSkpCgogICAgIEhvd2V2ZXIsIHRoaXMgd291bGQgcmVxdWlyZSB0aGF0IHVzZXJzIHR3ZWFr IOKAmGVnbG90LXNlcnZlci1wcm9ncmFt4oCZCiAgICAgdG8gdGVsbCBFZ2xvdCBpbnN0YW50aWF0 ZSBzdWNoIHN1Yi1jbGFzc2VzIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMKICAgICDigJhlZ2xvdC1s c3Atc2VydmVy4oCZICgqbm90ZSBTZXR0aW5nIFVwIExTUCBTZXJ2ZXJzOjopLiAgRm9yIHRoZQog ICAgIHB1cnBvc2VzIG9mIHRoaXMgcGFydGljdWxhciBkZW1vbnN0cmF0aW9uLCB3ZSdyZSBnb2lu ZyB0byB1c2UgdGhlCiAgICAgbW9yZSBoYWNreSByZWdleHAgcm91dGUgd2hpY2ggZG9lc24ndCBy ZXF1aXJlIHRoYXQuCgogICAgIE5vdGUsIGhvd2V2ZXIsIHRoYXQgZGV0ZWN0aW5nIHNlcnZlciB2 ZXJzaW9ucyBiZWZvcmUgYW5ub3VuY2luZyBuZXcKICAgICBjYXBhYmlsaXRpZXMgaXMgZ2VuZXJh bGx5IG5vdCBuZWVkZWQsIGFzIGJvdGggc2VydmVyIGFuZCBjbGllbnQgYXJlCiAgICAgcmVxdWly ZWQgYnkgTFNQIHRvIGlnbm9yZSB1bmtub3duIGNhcGFiaWxpdGllcyBhZHZlcnRpc2VkIGJ5IHRo ZWlyCiAgICAgY291bnRlcnBhcnRzLgoKICAg4oCiIFRoZSBzZWNvbmQgbWV0aG9kIGltcGxlbWVu dHMg4oCYZWdsb3QtaGFuZGxlLW5vdGlmaWNhdGlvbuKAmSB0byBwcm9jZXNzCiAgICAgdGhlIHNl cnZlciBub3RpZmljYXRpb24gZm9yIHRoZSBMU1AgbWV0aG9kCiAgICAg4oCYdGV4dERvY3VtZW50 L2luYWN0aXZlUmVnaW9uc+KAmS4gIEZvciBlYWNoIHJlZ2lvbiByZWNlaXZlZCBpdAogICAgIGNy ZWF0ZXMgYW4gb3ZlcmxheSBhcHBseWluZyB0aGUg4oCYc2hhZG934oCZIGZhY2UgdG8gdGhlIHJl Z2lvbi4KICAgICBPdmVybGF5cyBhcmUgcmVjcmVhdGVkIGV2ZXJ5IHRpbWUgYSBuZXcgbm90aWZp Y2F0aW9uIG9mIHRoaXMga2luZAogICAgIGlzIHJlY2VpdmVkLgoKICAgICBUbyBsZWFybiBhYm91 dCBob3cg4oCYY2xhbmdk4oCZJ3Mgc3BlY2lhbCBKU09OUlBDIG5vdGlmaWNhdGlvbiBtZXNzYWdl CiAgICAgaXMgc3RydWN0dXJlZCBpbiBkZXRhaWwgeW91IGNvdWxkIGNvbnN1bHQgdGhhdCBzZXJ2 ZXIncwogICAgIGRvY3VtZW50YXRpb24uICBBbm90aGVyIHBvc3NpYmlsaXR5IGlzIHRvIGV2YWx1 YXRlIHRoZSBmaXJzdAogICAgIGNhcGFiaWxpdHktYW5ub3VuY2luZyBtZXRob2QsIHJlY29ubmVj dCB0byB0aGUgc2VydmVyIGFuZCBwZWVrIGluCiAgICAgdGhlIGV2ZW50cyBidWZmZXIgKCpub3Rl IGVnbG90LWV2ZW50cy1idWZmZXI6IEVnbG90IENvbW1hbmRzLikuCiAgICAgWW91IGNvdWxkIGZp bmQgc29tZXRoaW5nIGxpa2U6CgogICAgICAgICAgW3NlcnZlci1ub3RpZmljYXRpb25dIE1vbiBT ZXAgIDQgMDE6MTA6MDQgMjAyMzoKICAgICAgICAgICg6anNvbnJwYyAiMi4wIiA6bWV0aG9kICJ0 ZXh0RG9jdW1lbnQvaW5hY3RpdmVSZWdpb25zIiA6cGFyYW1zCiAgICAgICAgICAgICAgICAgICAg KDp0ZXh0RG9jdW1lbnQKICAgICAgICAgICAgICAgICAgICAgKDp1cmkgImZpbGU6Ly8vcGF0aC90 by9maWxlLmNwcCIpCiAgICAgICAgICAgICAgICAgICAgIDpyZWdpb25zCiAgICAgICAgICAgICAg ICAgICAgIFsoOnN0YXJ0ICg6Y2hhcmFjdGVyIDAgOmxpbmUgMTgpCiAgICAgICAgICAgICAgICAg ICAgICAgOmVuZCAoOmNoYXJhY3RlciA1OCA6bGluZSAxOSkpCiAgICAgICAgICAgICAgICAgICAg ICAoOnN0YXJ0ICg6Y2hhcmFjdGVyIDAgOmxpbmUgMzYpCiAgICAgICAgICAgICAgICAgICAgICAg OmVuZCAoOmNoYXJhY3RlciAxIDpsaW5lIDM4KSldKSkKCiAgICAgVGhpcyByZXZlYWxzIHRoYXQg dGhlIOKAmHRleHREb2N1bWVudC9pbmFjdGl2ZVJlZ2lvbnPigJkgbm90aWZpY2F0aW9uCiAgICAg Y29udGFpbnMgYSDigJg6dGV4dERvY3VtZW504oCZIHByb3BlcnR5IHRvIGRlc2lnbmF0ZSB0aGUg bWFuYWdlZCBidWZmZXIKICAgICBhbmQgYW4gYXJyYXkgb2YgTFNQIHJlZ2lvbnMgdW5kZXIgdGhl IOKAmDpyZWdpb25z4oCZIHByb3BlcnR5LiAgTm90aWNlCiAgICAgaG93IHRoZSBtZXNzYWdlIChv cmlnaW5hbGx5IGluIEpTT04gZm9ybWF0KSwgaXMgcmVwcmVzZW50ZWQgYXMKICAgICBFbGlzcCBw bGlzdHMgKCpub3RlIEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcDo6KS4KCiAgICAgVGhlIEVnbG90 IGdlbmVyaWMgZnVuY3Rpb24gbWFjaGluZXJ5IHdpbGwgYXV0b21hdGljYWxseSBkZXN0cnVjdHVy ZQogICAgIHRoZSBpbmNvbWluZyBtZXNzYWdlLCBzbyB0aGVzZSB0d28gcHJvcGVydGllcyBjYW4g c2ltcGx5IGJlIGFkZGVkCiAgICAgdG8gdGhlIG5ldyBtZXRob2QncyBsYW1iZGEgbGlzdCBhcyDi gJgma2V54oCZIGFyZ3VtZW50cy4gIEFsc28sIHRoZQogICAgIOKAmGVnbG90LXVyaS10by1wYXRo 4oCZIGFuZCDigJhlZ2xvdC1yYW5nZS1yZWdpb27igJkgbWF5IGJlIHVzZWQgdG8gZWFzaWx5CiAg ICAgcGFyc2UgdGhlIExTUCDigJg6dXJp4oCZIGFuZCDigJg6c3RhcnQgLi4uIDplbmQgLi4u4oCZ IG9iamVjdHMgdG8gb2J0YWluCiAgICAgRW1hY3Mgb2JqZWN0cyBmb3IgZmlsZSBuYW1lcyBhbmQg cG9zaXRpb25zLgoKICAgICBUaGUgcmVtYWluZGVyIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBjb25z aXN0cyBvZiBzdGFuZGFyZCBFbGlzcAogICAgIHRlY2huaXF1ZXMgdG8gbG9vcCBvdmVyIGFycmF5 cywgbWFuYWdlIGJ1ZmZlcnMgYW5kIG92ZXJsYXlzLgoKICAgICAgICAgIChjbC1kZWZtZXRob2Qg ZWdsb3QtaGFuZGxlLW5vdGlmaWNhdGlvbgogICAgICAgICAgICAoX3NlcnZlciAoX21ldGhvZCAo ZXFsIHRleHREb2N1bWVudC9pbmFjdGl2ZVJlZ2lvbnMpKQogICAgICAgICAgICAgICAgICAgICAm a2V5IHJlZ2lvbnMgdGV4dERvY3VtZW50ICZhbGxvdy1vdGhlci1rZXlzKQogICAgICAgICAgICAo aWYtbGV0KiAoKHBhdGggKGV4cGFuZC1maWxlLW5hbWUgKGVnbG90LXVyaS10by1wYXRoCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWdldGYgdGV4dERv Y3VtZW50IDp1cmkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyIChmaW5kLWJ1ZmZl ci12aXNpdGluZyBwYXRoKSkpCiAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBi dWZmZXIKICAgICAgICAgICAgICAgICAgKHJlbW92ZS1vdmVybGF5cyBuaWwgbmlsICdpbmFjdGl2 ZS1jb2RlIHQpCiAgICAgICAgICAgICAgICAgIChjbC1sb29wCiAgICAgICAgICAgICAgICAgICBm b3IgciBhY3Jvc3MgcmVnaW9ucwogICAgICAgICAgICAgICAgICAgZm9yIChiZWcgLiBlbmQpID0g KGVnbG90LXJhbmdlLXJlZ2lvbiByKQogICAgICAgICAgICAgICAgICAgZm9yIG92ID0gKG1ha2Ut b3ZlcmxheSBiZWcgZW5kKQogICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAg IChvdmVybGF5LXB1dCBvdiAnZmFjZSAnc2hhZG93KQogICAgICAgICAgICAgICAgICAgKG92ZXJs YXktcHV0IG92ICdpbmFjdGl2ZS1jb2RlIHQpKSkpKQoKICAgQWZ0ZXIgZXZhbHVhdGluZyB0aGVz ZSB0d28gYWRkaXRpb25zIGFuZCByZWNvbm5lY3RpbmcgdG8gdGhlIOKAmGNsYW5nZOKAmQpsYW5n dWFnZSBzZXJ2ZXIgKHZlcnNpb24gMTcpLCB0aGUgcmVzdWx0IHdpbGwgYmUgdGhhdCBhbGwgdGhl IGluYWN0aXZlCmNvZGUgaW4gdGhlIGJ1ZmZlciB3aWxsIGJlIG5pY2VseSBncmF5ZWQgb3V0IHVz aW5nIHRoZSBMU1Agc2VydmVyCmtub3dsZWRnZSBhYm91dCBjdXJyZW50IGNvbXBpbGUgdGltZSBw cmVwcm9jZXNzb3IgZGVmaW5lcy4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBUcm91 Ymxlc2hvb3RpbmcgRWdsb3QsICBOZXh0OiBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2Us ICBQcmV2OiBFeHRlbmRpbmcgRWdsb3QsICBVcDogVG9wCgo3IFRyb3VibGVzaG9vdGluZyBFZ2xv dAoqKioqKioqKioqKioqKioqKioqKioqKgoKVGhpcyBjaGFwdGVyIGRvY3VtZW50cyBjb21tYW5k cyBhbmQgdmFyaWFibGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8KdHJvdWJsZXNob290IEVnbG90IHBy b2JsZW1zLiAgSXQgYWxzbyBwcm92aWRlcyBndWlkZWxpbmVzIGZvciByZXBvcnRpbmcKRWdsb3Qg YnVncyBpbiBhIHdheSB0aGF0IGZhY2lsaXRhdGVzIHRoZWlyIHJlc29sdXRpb24uCgogICBXaGVu IHlvdSBlbmNvdW50ZXIgcHJvYmxlbXMgd2l0aCBFZ2xvdCwgdHJ5IGZpcnN0IHVzaW5nIHRoZSBj b21tYW5kcwrigJhNLXggZWdsb3QtZXZlbnRzLWJ1ZmZlcuKAmSBhbmQg4oCYTS14IGVnbG90LXN0 ZGVyci1idWZmZXLigJkuICBUaGV5IHBvcCB1cApzcGVjaWFsIGJ1ZmZlcnMgdGhhdCBjYW4gYmUg dXNlZCB0byBpbnNwZWN0IHRoZSBjb21tdW5pY2F0aW9ucyBiZXR3ZWVuCnRoZSBFZ2xvdCBhbmQg bGFuZ3VhZ2Ugc2VydmVyLiAgSW4gbWFueSBjYXNlcywgdGhpcyB3aWxsIGluZGljYXRlIHRoZQpw cm9ibGVtcyBvciBhdCBsZWFzdCBwcm92aWRlIGEgaGludC4KCiogTWVudToKCiogUGVyZm9ybWFu Y2U6OgoqIEdldHRpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uOjoKKiBSZXBvcnRpbmcgYnVnczo6Cgof CkZpbGU6IGRvY3VvWEVOVS5pbmZvLCAgTm9kZTogUGVyZm9ybWFuY2UsICBOZXh0OiBHZXR0aW5n IHRoZSBsYXRlc3QgdmVyc2lvbiwgIFVwOiBUcm91Ymxlc2hvb3RpbmcgRWdsb3QKCjcuMSBQZXJm b3JtYW5jZQo9PT09PT09PT09PT09PT0KCkEgY29tbW9uIGFuZCBlYXN5LXRvLWZpeCBjYXVzZSBv ZiBwZXJmb3JtYW5jZSBwcm9ibGVtcyBpbiBFZ2xvdAooZXNwZWNpYWxseSBpbiBvbGRlciB2ZXJz aW9ucykgaXMgaXRzIGV2ZW50cyBidWZmZXIsIHNpbmNlIGl0IHJlcHJlc2VudHMKYWRkaXRpb25h bCB3b3JrIHRoYXQgRWdsb3QgbXVzdCBkbyAoKm5vdGUgZWdsb3QtZXZlbnRzLWJ1ZmZlcjogRWds b3QKQ29tbWFuZHMuKS4gIElmIHlvdSBmaW5kIEVnbG90IGlzIG9wZXJhdGluZyBjb3JyZWN0bHkg YnV0IHNsb3dseSwgdHJ5IHRvCmN1c3RvbWl6ZSB0aGUgdmFyaWFibGUg4oCYZWdsb3QtZXZlbnRz LWJ1ZmZlci1jb25maWfigJkgKCpub3RlIEVnbG90ClZhcmlhYmxlczo6KSBhbmQgc2V0IGl0cyDi gJg6c2l6ZeKAmSBwcm9wZXJ0eSB0byAwLiAgVGhpcyB3aWxsIGRpc2FibGUKcmVjb3JkaW5nIGFu eSBldmVudHMgYW5kIG1heSBzcGVlZCB0aGluZ3MgdXAuCgogICBJbiBvdGhlciBzaXR1YXRpb25z LCB0aGUgY2F1c2Ugb2YgcG9vciBwZXJmb3JtYW5jZSBsaWVzIGluIHRoZQpsYW5ndWFnZSBzZXJ2 ZXIgaXRzZWxmLiAgU2VydmVycyB1c2UgYWdncmVzc2l2ZSBjYWNoaW5nIGFuZCBvdGhlcgp0ZWNo bmlxdWVzIHRvIGltcHJvdmUgdGhlaXIgcGVyZm9ybWFuY2UuICBPZnRlbiwgdGhpcyBjYW4gYmUg dHdlYWtlZCBieQpjaGFuZ2luZyB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gKCpub3RlIEFkdmFu Y2VkIHNlcnZlcgpjb25maWd1cmF0aW9uOjopLgoKHwpGaWxlOiBkb2N1b1hFTlUuaW5mbywgIE5v ZGU6IEdldHRpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uLCAgTmV4dDogUmVwb3J0aW5nIGJ1Z3MsICBQ cmV2OiBQZXJmb3JtYW5jZSwgIFVwOiBUcm91Ymxlc2hvb3RpbmcgRWdsb3QKCjcuMiBHZXR0aW5n IHRoZSBsYXRlc3QgdmVyc2lvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRvIGlu c3RhbGwgdGhlIGxhdGVzdCBFZ2xvdCBpbiBhbiBFbWFjcyB2ZXJzaW9uIHRoYXQgZG9lcyBub3Qg YnVuZGxlCkVnbG90LCB1c2Ug4oCYTS14IHBhY2thZ2UtaW5zdGFsbOKAmS4KCiAgIE9mdGVuLCBh IG5ld2VyIEVnbG90IHZlcnNpb24gZXhpc3RzIHRoYXQgaGFzIGZpeGVkIGEgbG9uZ3N0YW5kaW5n CmJ1ZywgaGFzIG1vcmUgTFNQIGZlYXR1cmVzLCBvciBqdXN0IGJldHRlciBzdXBwb3J0cyBhIHBh cnRpY3VsYXIKbGFuZ3VhZ2Ugc2VydmVyLiAgUmVjZW50IEVnbG90IHZlcnNpb25zIGNhbiBzZWxm LXVwZGF0ZSB2aWEgdGhlIGNvbW1hbmQK4oCYTS14IGVnbG90LXVwZ3JhZGUtZWdsb3TigJkuICBU aGlzIHdpbGwgcmVwbGFjZSBhbnkgY3VycmVudGx5IGluc3RhbGxlZAp2ZXJzaW9uIHdpdGggdGhl IG5ld2VzdCBvbmUgYXZhaWxhYmxlIGZyb20gdGhlIEVMUEEgYXJjaGl2ZXMgY29uZmlndXJlZApp biDigJhwYWNrYWdlLWFyY2hpdmVz4oCZLgoKICAgWW91IGNhbiBhbHNvIHVwZGF0ZSBFZ2xvdCB0 aHJvdWdoIG90aGVyIG1ldGhvZHMsIHN1Y2ggYXMK4oCYdXNlLXBhY2thZ2XigJkgKCpub3RlICh1 c2UtcGFja2FnZSlJbnN0YWxsaW5nIHBhY2thZ2VzOjopLArigJhwYWNrYWdlLWluc3RhbGzigJks IOKAmGxpc3QtcGFja2FnZXPigJkgb3IgdGhlIG5ld2VyIOKAmHBhY2thZ2UtdXBncmFkZeKAmSAo Km5vdGUKKGVtYWNzKVBhY2thZ2VzOjopLiAgSG93ZXZlciwgZG8gcmVhZCB0aGUgZG9jc3RyaW5n cyBvZiB0aGUgY29tbWFuZCB5b3UKaW50ZW5kIHRvIHVzZSBiZWZvcmUgeW91IHVzZSBpdCwgYXMg c29tZSBvZiB0aGVtIG1heSBub3Qgd29yayBpbiBleGFjdGx5CnRoZSBzYW1lIHdheSBhY3Jvc3Mg RW1hY3MgdmVyc2lvbnMsIG1lYW5pbmcgeW91ciBjb25maWd1cmF0aW9uIG1heSBiZQpub3QgcG9y dGFibGUuCgofCkZpbGU6IGRvY3VvWEVOVS5pbmZvLCAgTm9kZTogUmVwb3J0aW5nIGJ1Z3MsICBQ cmV2OiBHZXR0aW5nIHRoZSBsYXRlc3QgdmVyc2lvbiwgIFVwOiBUcm91Ymxlc2hvb3RpbmcgRWds b3QKCjcuMyBSZXBvcnRpbmcgYnVncwo9PT09PT09PT09PT09PT09PT0KCklmIHlvdSB0aGluayB5 b3UgaGF2ZSBmb3VuZCBhIGJ1Zywgd2Ugd2FudCB0byBoZWFyIGFib3V0IGl0LiAgQmVmb3JlCnJl cG9ydGluZyBhIGJ1Zywga2VlcCBpbiBtaW5kIHRoYXQgaW50ZXJhY3Rpb24gd2l0aCBsYW5ndWFn ZSBzZXJ2ZXJzCnJlcHJlc2VudHMgYSBsYXJnZSBxdWFudGl0eSBvZiB1bmtub3duIHZhcmlhYmxl cy4gIFRoZXJlZm9yZSwgaXQgaXMKZ2VuZXJhbGx5IGJvdGggX2RpZmZpY3VsdF8gYW5kIF9hYnNv bHV0ZWx5IGVzc2VudGlhbF8gdGhhdCB0aGUKbWFpbnRhaW5lcnMgcmVwcm9kdWNlIGJ1Z3MgZXhh Y3RseSBhcyB0aGV5IGhhcHBlbmVkIHRvIHlvdSwgdGhlIHVzZXIuCgogICBUbyByZXBvcnQgYW4g RWdsb3QgYnVnLCBzZW5kIGUtbWFpbCB0byA8YnVnLWdudS1lbWFjc0BnbnUub3JnPi4KCiAgIFRv IHVuZGVyc3RhbmQgaG93IHRvIHdyaXRlIHRoaXMgZW1haWwsIGdldCBhY3F1YWludGVkIHdpdGgg RW1hY3MncwpidWcgcmVwb3J0aW5nIGd1aWRlbGluZXMgKCpub3RlIChlbWFjcylCdWdzOjopLiAg VGhlbiwgZm9sbG93IHRoaXMKRWdsb3Qtc3BlY2lmaWMgY2hlY2tsaXN0OgoKICAxLiBJbmNsdWRl IHRoZSB0cmFuc2NyaXB0IG9mIEpTT05SUEMgZXZlbnRzIG9idGFpbmVkIGZyb20gdGhlIGJ1ZmZl cgogICAgIHBvcHBlZCB1cCBieSDigJhNLXggZWdsb3QtZXZlbnRzLWJ1ZmZlcuKAmS4gIFlvdSBt YXkgbmFycm93IGRvd24gdGhlCiAgICAgdHJhbnNjcmlwdCBpZiB5b3UgYXJlIHN1cmUgb2Ygd2hl cmUgdGhlIHByb2JsZW1hdGljIGV4Y2hhbmdlIGlzLAogICAgIGJ1dCBpdCdzIHNhZmVyIHRvIGlu Y2x1ZGUgdGhlIHdob2xlIHRyYW5zY3JpcHQsIGVpdGhlciBhdHRhY2hlZCBvcgogICAgIGlubGlu ZS4KCiAgMi4gSWYgRW1hY3Mgc2lnbmFsZWQgYW4gZXJyb3IgKGFuIGVycm9yIG1lc3NhZ2Ugd2Fz IHNlZW4gb3IgaGVhcmQpLAogICAgIG1ha2Ugc3VyZSB0byByZXBlYXQgdGhlIHByb2Nlc3MgYWZ0 ZXIgdHVybmluZyBvbiDigJhkZWJ1Zy1vbi1lcnJvcuKAmQogICAgIHZpYSDigJhNLXggdG9nZ2xl LWRlYnVnLW9uLWVycm9y4oCZLiAgVGhpcyBub3JtYWxseSBwcm9kdWNlcyBhCiAgICAgYmFja3Ry YWNlIG9mIHRoZSBlcnJvciB0aGF0IHNob3VsZCBhbHNvIGJlIGF0dGFjaGVkIHRvIHRoZSBidWcK ICAgICByZXBvcnQuCgogIDMuIEluY2x1ZGUgYSBkZXNjcmlwdGlvbiBvZiBob3cgdGhlIG1haW50 YWluZXIgc2hvdWxkIG9idGFpbiwgaW5zdGFsbCwKICAgICBhbmQgY29uZmlndXJlIHRoZSBsYW5n dWFnZSBzZXJ2ZXIgeW91IHVzZWQuICBNYWludGFpbmVycyB1c3VhbGx5CiAgICAgaGF2ZSBhY2Nl c3MgdG8gR05VL0xpbnV4IHN5c3RlbXMsIHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlCiAgICAg ZGlzdHJpYnV0aW9uIHRoYXQgeW91IG1heSBiZSB1c2luZy4gIElmIHBvc3NpYmxlLCB0cnkgdG8g cmVwbGljYXRlCiAgICAgdGhlIHByb2JsZW0gd2l0aCB0aGUgQy9DKysgb3IgUHl0aG9uIHNlcnZl cnMsIGFzIHRoZXNlIGFyZSB2ZXJ5CiAgICAgZWFzeSB0byBpbnN0YWxsLgoKICA0LiBEZXNjcmli ZSBob3cgdG8gc2V0dXAgYSBfbWluaW1hbF8gcHJvamVjdCBkaXJlY3Rvcnkgd2hlcmUgRWdsb3QK ICAgICBzaG91bGQgYmUgc3RhcnRlZCBmb3IgdGhlIHByb2JsZW0gdG8gaGFwcGVuLiAgRGVzY3Jp YmUgZWFjaCBmaWxlJ3MKICAgICBuYW1lIGFuZCBpdHMgY29udGVudHMuICBBbHRlcm5hdGl2ZWx5 LCB5b3UgY2FuIHN1cHBseSB0aGUgYWRkcmVzcwogICAgIG9mIGEgcHVibGljIEdpdCByZXBvc2l0 b3J5LgoKICA1LiBJbmNsdWRlIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSB1c2VkLiAgVGhlIEVt YWNzIHZlcnNpb24gY2FuIGJlCiAgICAgb2J0YWluZWQgd2l0aCDigJhNLXggZW1hY3MtdmVyc2lv buKAmS4KCiAgICAgV2Ugd2VsY29tZSBidWcgcmVwb3J0cyBhYm91dCBhbGwgRWdsb3QgdmVyc2lv bnMsIGJ1dCBpdCBpcyBoZWxwZnVsCiAgICAgdG8gZmlyc3QgY2hlY2sgaWYgdGhlIHByb2JsZW0g aXNuJ3QgYWxyZWFkeSBmaXhlZCBpbiB0aGUgbGF0ZXN0CiAgICAgdmVyc2lvbiAoKm5vdGUgR2V0 dGluZyB0aGUgbGF0ZXN0IHZlcnNpb246OikuCgogICAgIEl0J3MgYWxzbyBlc3NlbnRpYWwgdG8g aW5jbHVkZSB0aGUgdmVyc2lvbiBvZiBFTFBBIHBhY2thZ2VzIHRoYXQKICAgICBhcmUgZXhwbGlj aXRseSBvciBpbXBsaWNpdGx5IGxvYWRlZC4gIFRoZSBvcHRpb25hbCBidXQgcG9wdWxhcgogICAg IENvbXBhbnkgb3IgTWFya2Rvd24gcGFja2FnZXMgYXJlIGRpc3RyaWJ1dGVkIGFzIEdOVSBFTFBB IHBhY2thZ2VzLAogICAgIG5vdCB0byBtZW50aW9uIEVnbG90IGl0c2VsZiBpbiBzb21lIHNpdHVh dGlvbnMuICBTb21lIG1ham9yIG1vZGVzCiAgICAgKEdvLCBSdXN0LCBldGMuKSAgYXJlIHByb3Zp ZGVkIGJ5IEVMUEEgcGFja2FnZXMuICBJdCdzIHNvbWV0aW1lcwogICAgIGVhc3kgdG8gbWlzcyB0 aGVzZSwgc2luY2UgdGhleSBhcmUgdXN1YWxseSBpbXBsaWNpdGx5IGxvYWRlZCB3aGVuCiAgICAg dmlzaXRpbmcgYSBmaWxlIGluIHRoYXQgbGFuZ3VhZ2UuCgogICAgIEVMUEEgcGFja2FnZXMgdXN1 YWxseSBsaXZlIGluIOKAmH4vLmVtYWNzLmQvZWxwYeKAmSAob3Igd2hhdCBpcyBpbgogICAgIOKA mHBhY2thZ2UtdXNlci1kaXLigJkpLiAgSW5jbHVkaW5nIGEgbGlzdGluZyBvZiBmaWxlcyBpbiB0 aGF0CiAgICAgZGlyZWN0b3J5IGlzIGEgd2F5IHRvIHRlbGwgdGhlIG1haW50YWluZXJzIGFib3V0 IEVMUEEgcGFja2FnZQogICAgIHZlcnNpb25zLgoKICA2LiBJbmNsdWRlIGEgcmVjaXBlIHRvIHJl cGxpY2F0ZSB0aGUgcHJvYmxlbSB3aXRoIF9hIGNsZWFuIEVtYWNzIHJ1bl8uCiAgICAgVGhlIGlu dm9jYXRpb24g4oCYZW1hY3MgLVEgLWYgcGFja2FnZS1pbml0aWFsaXpl4oCZIHN0YXJ0cyBFbWFj cyB3aXRoCiAgICAgbm8gY29uZmlndXJhdGlvbiBhbmQgaW5pdGlhbGl6ZXMgdGhlIEVMUEEgcGFj a2FnZXMuICBBIHZlcnkgbWluaW1hbAogICAgIOKAmC5lbWFjc+KAmSBpbml0aWFsaXphdGlvbiBm aWxlICgxMCBsaW5lcyBvciBsZXNzKSBpcyBhbHNvIGFjY2VwdGFibGUKICAgICBhbmQgZ29vZCBt ZWFucyB0byBkZXNjcmliZSBjaGFuZ2VzIHRvIHZhcmlhYmxlcy4KCiAgICAgVGhlcmUgaXMgdXN1 YWxseSBubyBuZWVkIHRvIGluY2x1ZGUg4oCYcmVxdWlyZeKAmSBzdGF0ZW1lbnRzIGluIHRoZQog ICAgIHJlY2lwZSwgYXMgRWdsb3QncyBmdW5jdGlvbmFsaXR5IHVzZXMgYXV0b2xvYWRzLgoKICAg ICBMaWtld2lzZSwgdGhlcmUgaXMgcmFyZWx5IHRoZSBuZWVkIHRvIHVzZSB0aGluZ3MgbGlrZSDi gJh1c2UtcGFja2FnZeKAmQogICAgIG9yIOKAmGVnbG90LWVuc3VyZeKAmS4gIFRoaXMganVzdCBt YWtlcyB0aGUgcmVjaXBlIGhhcmRlciB0byBmb2xsb3cuCiAgICAgUHJlZmVyIHNldHRpbmcgdmFy aWFibGVzIHdpdGgg4oCYc2V0ceKAmSBhbmQgYWRkaW5nIHRvIGhvb2tzIHdpdGgKICAgICDigJhh ZGQtaG9va+KAmS4gIFByZWZlciBzdGFydGluZyBFZ2xvdCB3aXRoIOKAmE0teCBlZ2xvdOKAmS4K CiAgNy4gTWFrZSBzdXJlIHRvIGRvdWJsZSBjaGVjayBhbGwgdGhlIGFib3ZlIGVsZW1lbnRzIGFu ZCByZS1ydW4gdGhlCiAgICAgcmVjaXBlIHRvIHNlZSB0aGF0IHRoZSBwcm9ibGVtIGlzIHJlcHJv ZHVjaWJsZS4gIEZvbGxvd2luZyB0aGUKICAgICByZWNpcGUgc2hvdWxkIHByb2R1Y2UgZXZlbnQg dHJhbnNjcmlwdCBhbmQgZXJyb3IgYmFja3RyYWNlcyB0aGF0CiAgICAgYXJlIHZlcnkgc2ltaWxh ciB0byB0aGUgb25lcyB5b3UgaW5jbHVkZWQuICBJZiB0aGUgcHJvYmxlbSBvbmx5CiAgICAgaGFw cGVucyBzb21ldGltZXMsIG1lbnRpb24gdGhpcyBpbiB5b3VyIHJlcG9ydC4KCiAgIFBsZWFzZSBr ZWVwIGluIG1pbmQgdGhhdCBzb21lIHByb2JsZW1zIHJlcG9ydGVkIGFnYWluc3QgRWdsb3QgbWF5 CmFjdHVhbGx5IGJlIGJ1Z3MgaW4gdGhlIGxhbmd1YWdlIHNlcnZlciBvciB0aGUgRW1hY3MgZmVh dHVyZS9wYWNrYWdlCnRoYXQgdXNlZCBFZ2xvdCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBsYW5n dWFnZSBzZXJ2ZXIuICBFZ2xvdCBpcywgaW4KbWFueSBjYXNlcywganVzdCBhIGZyb250ZW5kIHRv IHRoYXQgZnVuY3Rpb25hbGl0eS4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBHTlUg RnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsICBOZXh0OiBJbmRleCwgIFByZXY6IFRyb3VibGVz aG9vdGluZyBFZ2xvdCwgIFVwOiBUb3AKCkFwcGVuZGl4IEEgR05VIEZyZWUgRG9jdW1lbnRhdGlv biBMaWNlbnNlCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgogICAg ICAgICAgICAgICAgICAgICBWZXJzaW9uIDEuMywgMyBOb3ZlbWJlciAyMDA4CgogICAgIENvcHly aWdodCDCqSAyMDAwLCAyMDAxLCAyMDAyLCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogICAgIDxodHRwczovL2ZzZi5vcmcvPgoKICAgICBFdmVyeW9uZSBpcyBwZXJt aXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKICAgICBvZiB0aGlz IGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgMC4g UFJFQU1CTEUKCiAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBMaWNlbnNlIGlzIHRvIG1ha2UgYSBt YW51YWwsIHRleHRib29rLCBvciBvdGhlcgogICAgIGZ1bmN0aW9uYWwgYW5kIHVzZWZ1bCBkb2N1 bWVudCDigJxmcmVl4oCdIGluIHRoZSBzZW5zZSBvZiBmcmVlZG9tOiB0bwogICAgIGFzc3VyZSBl dmVyeW9uZSB0aGUgZWZmZWN0aXZlIGZyZWVkb20gdG8gY29weSBhbmQgcmVkaXN0cmlidXRlIGl0 LAogICAgIHdpdGggb3Igd2l0aG91dCBtb2RpZnlpbmcgaXQsIGVpdGhlciBjb21tZXJjaWFsbHkg b3IKICAgICBub25jb21tZXJjaWFsbHkuICBTZWNvbmRhcmlseSwgdGhpcyBMaWNlbnNlIHByZXNl cnZlcyBmb3IgdGhlCiAgICAgYXV0aG9yIGFuZCBwdWJsaXNoZXIgYSB3YXkgdG8gZ2V0IGNyZWRp dCBmb3IgdGhlaXIgd29yaywgd2hpbGUgbm90CiAgICAgYmVpbmcgY29uc2lkZXJlZCByZXNwb25z aWJsZSBmb3IgbW9kaWZpY2F0aW9ucyBtYWRlIGJ5IG90aGVycy4KCiAgICAgVGhpcyBMaWNlbnNl IGlzIGEga2luZCBvZiAiY29weWxlZnQiLCB3aGljaCBtZWFucyB0aGF0IGRlcml2YXRpdmUKICAg ICB3b3JrcyBvZiB0aGUgZG9jdW1lbnQgbXVzdCB0aGVtc2VsdmVzIGJlIGZyZWUgaW4gdGhlIHNh bWUgc2Vuc2UuCiAgICAgSXQgY29tcGxlbWVudHMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLCB3aGljaCBpcyBhIGNvcHlsZWZ0CiAgICAgbGljZW5zZSBkZXNpZ25lZCBmb3IgZnJlZSBz b2Z0d2FyZS4KCiAgICAgV2UgaGF2ZSBkZXNpZ25lZCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8g dXNlIGl0IGZvciBtYW51YWxzIGZvcgogICAgIGZyZWUgc29mdHdhcmUsIGJlY2F1c2UgZnJlZSBz b2Z0d2FyZSBuZWVkcyBmcmVlIGRvY3VtZW50YXRpb246IGEKICAgICBmcmVlIHByb2dyYW0gc2hv dWxkIGNvbWUgd2l0aCBtYW51YWxzIHByb3ZpZGluZyB0aGUgc2FtZSBmcmVlZG9tcwogICAgIHRo YXQgdGhlIHNvZnR3YXJlIGRvZXMuICBCdXQgdGhpcyBMaWNlbnNlIGlzIG5vdCBsaW1pdGVkIHRv CiAgICAgc29mdHdhcmUgbWFudWFsczsgaXQgY2FuIGJlIHVzZWQgZm9yIGFueSB0ZXh0dWFsIHdv cmssIHJlZ2FyZGxlc3MKICAgICBvZiBzdWJqZWN0IG1hdHRlciBvciB3aGV0aGVyIGl0IGlzIHB1 Ymxpc2hlZCBhcyBhIHByaW50ZWQgYm9vay4gIFdlCiAgICAgcmVjb21tZW5kIHRoaXMgTGljZW5z ZSBwcmluY2lwYWxseSBmb3Igd29ya3Mgd2hvc2UgcHVycG9zZSBpcwogICAgIGluc3RydWN0aW9u IG9yIHJlZmVyZW5jZS4KCiAgMS4gQVBQTElDQUJJTElUWSBBTkQgREVGSU5JVElPTlMKCiAgICAg VGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IG1hbnVhbCBvciBvdGhlciB3b3JrLCBpbiBhbnkg bWVkaXVtLAogICAgIHRoYXQgY29udGFpbnMgYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmln aHQgaG9sZGVyIHNheWluZyBpdCBjYW4KICAgICBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhpcyBMaWNlbnNlLiAgU3VjaCBhIG5vdGljZQogICAgIGdyYW50cyBhIHdvcmxkLXdp ZGUsIHJveWFsdHktZnJlZSBsaWNlbnNlLCB1bmxpbWl0ZWQgaW4gZHVyYXRpb24sCiAgICAgdG8g dXNlIHRoYXQgd29yayB1bmRlciB0aGUgY29uZGl0aW9ucyBzdGF0ZWQgaGVyZWluLiAgVGhlCiAg ICAgIkRvY3VtZW50IiwgYmVsb3csIHJlZmVycyB0byBhbnkgc3VjaCBtYW51YWwgb3Igd29yay4g IEFueSBtZW1iZXIKICAgICBvZiB0aGUgcHVibGljIGlzIGEgbGljZW5zZWUsIGFuZCBpcyBhZGRy ZXNzZWQgYXMgInlvdSIuICBZb3UgYWNjZXB0CiAgICAgdGhlIGxpY2Vuc2UgaWYgeW91IGNvcHks IG1vZGlmeSBvciBkaXN0cmlidXRlIHRoZSB3b3JrIGluIGEgd2F5CiAgICAgcmVxdWlyaW5nIHBl cm1pc3Npb24gdW5kZXIgY29weXJpZ2h0IGxhdy4KCiAgICAgQSAiTW9kaWZpZWQgVmVyc2lvbiIg b2YgdGhlIERvY3VtZW50IG1lYW5zIGFueSB3b3JrIGNvbnRhaW5pbmcgdGhlCiAgICAgRG9jdW1l bnQgb3IgYSBwb3J0aW9uIG9mIGl0LCBlaXRoZXIgY29waWVkIHZlcmJhdGltLCBvciB3aXRoCiAg ICAgbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIgbGFuZ3VhZ2Uu CgogICAgIEEgIlNlY29uZGFyeSBTZWN0aW9uIiBpcyBhIG5hbWVkIGFwcGVuZGl4IG9yIGEgZnJv bnQtbWF0dGVyIHNlY3Rpb24KICAgICBvZiB0aGUgRG9jdW1lbnQgdGhhdCBkZWFscyBleGNsdXNp dmVseSB3aXRoIHRoZSByZWxhdGlvbnNoaXAgb2YgdGhlCiAgICAgcHVibGlzaGVycyBvciBhdXRo b3JzIG9mIHRoZSBEb2N1bWVudCB0byB0aGUgRG9jdW1lbnQncyBvdmVyYWxsCiAgICAgc3ViamVj dCAob3IgdG8gcmVsYXRlZCBtYXR0ZXJzKSBhbmQgY29udGFpbnMgbm90aGluZyB0aGF0IGNvdWxk CiAgICAgZmFsbCBkaXJlY3RseSB3aXRoaW4gdGhhdCBvdmVyYWxsIHN1YmplY3QuICAoVGh1cywg aWYgdGhlIERvY3VtZW50CiAgICAgaXMgaW4gcGFydCBhIHRleHRib29rIG9mIG1hdGhlbWF0aWNz LCBhIFNlY29uZGFyeSBTZWN0aW9uIG1heSBub3QKICAgICBleHBsYWluIGFueSBtYXRoZW1hdGlj cy4pICBUaGUgcmVsYXRpb25zaGlwIGNvdWxkIGJlIGEgbWF0dGVyIG9mCiAgICAgaGlzdG9yaWNh bCBjb25uZWN0aW9uIHdpdGggdGhlIHN1YmplY3Qgb3Igd2l0aCByZWxhdGVkIG1hdHRlcnMsIG9y CiAgICAgb2YgbGVnYWwsIGNvbW1lcmNpYWwsIHBoaWxvc29waGljYWwsIGV0aGljYWwgb3IgcG9s aXRpY2FsIHBvc2l0aW9uCiAgICAgcmVnYXJkaW5nIHRoZW0uCgogICAgIFRoZSAiSW52YXJpYW50 IFNlY3Rpb25zIiBhcmUgY2VydGFpbiBTZWNvbmRhcnkgU2VjdGlvbnMgd2hvc2UKICAgICB0aXRs ZXMgYXJlIGRlc2lnbmF0ZWQsIGFzIGJlaW5nIHRob3NlIG9mIEludmFyaWFudCBTZWN0aW9ucywg aW4gdGhlCiAgICAgbm90aWNlIHRoYXQgc2F5cyB0aGF0IHRoZSBEb2N1bWVudCBpcyByZWxlYXNl ZCB1bmRlciB0aGlzIExpY2Vuc2UuCiAgICAgSWYgYSBzZWN0aW9uIGRvZXMgbm90IGZpdCB0aGUg YWJvdmUgZGVmaW5pdGlvbiBvZiBTZWNvbmRhcnkgdGhlbiBpdAogICAgIGlzIG5vdCBhbGxvd2Vk IHRvIGJlIGRlc2lnbmF0ZWQgYXMgSW52YXJpYW50LiAgVGhlIERvY3VtZW50IG1heQogICAgIGNv bnRhaW4gemVybyBJbnZhcmlhbnQgU2VjdGlvbnMuICBJZiB0aGUgRG9jdW1lbnQgZG9lcyBub3Qg aWRlbnRpZnkKICAgICBhbnkgSW52YXJpYW50IFNlY3Rpb25zIHRoZW4gdGhlcmUgYXJlIG5vbmUu CgogICAgIFRoZSAiQ292ZXIgVGV4dHMiIGFyZSBjZXJ0YWluIHNob3J0IHBhc3NhZ2VzIG9mIHRl eHQgdGhhdCBhcmUKICAgICBsaXN0ZWQsIGFzIEZyb250LUNvdmVyIFRleHRzIG9yIEJhY2stQ292 ZXIgVGV4dHMsIGluIHRoZSBub3RpY2UKICAgICB0aGF0IHNheXMgdGhhdCB0aGUgRG9jdW1lbnQg aXMgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQQogICAgIEZyb250LUNvdmVyIFRleHQg bWF5IGJlIGF0IG1vc3QgNSB3b3JkcywgYW5kIGEgQmFjay1Db3ZlciBUZXh0IG1heQogICAgIGJl IGF0IG1vc3QgMjUgd29yZHMuCgogICAgIEEgIlRyYW5zcGFyZW50IiBjb3B5IG9mIHRoZSBEb2N1 bWVudCBtZWFucyBhIG1hY2hpbmUtcmVhZGFibGUgY29weSwKICAgICByZXByZXNlbnRlZCBpbiBh IGZvcm1hdCB3aG9zZSBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUKICAgICBnZW5l cmFsIHB1YmxpYywgdGhhdCBpcyBzdWl0YWJsZSBmb3IgcmV2aXNpbmcgdGhlIGRvY3VtZW50CiAg ICAgc3RyYWlnaHRmb3J3YXJkbHkgd2l0aCBnZW5lcmljIHRleHQgZWRpdG9ycyBvciAoZm9yIGlt YWdlcyBjb21wb3NlZAogICAgIG9mIHBpeGVscykgZ2VuZXJpYyBwYWludCBwcm9ncmFtcyBvciAo Zm9yIGRyYXdpbmdzKSBzb21lIHdpZGVseQogICAgIGF2YWlsYWJsZSBkcmF3aW5nIGVkaXRvciwg YW5kIHRoYXQgaXMgc3VpdGFibGUgZm9yIGlucHV0IHRvIHRleHQKICAgICBmb3JtYXR0ZXJzIG9y IGZvciBhdXRvbWF0aWMgdHJhbnNsYXRpb24gdG8gYSB2YXJpZXR5IG9mIGZvcm1hdHMKICAgICBz dWl0YWJsZSBmb3IgaW5wdXQgdG8gdGV4dCBmb3JtYXR0ZXJzLiAgQSBjb3B5IG1hZGUgaW4gYW4g b3RoZXJ3aXNlCiAgICAgVHJhbnNwYXJlbnQgZmlsZSBmb3JtYXQgd2hvc2UgbWFya3VwLCBvciBh YnNlbmNlIG9mIG1hcmt1cCwgaGFzCiAgICAgYmVlbiBhcnJhbmdlZCB0byB0aHdhcnQgb3IgZGlz Y291cmFnZSBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBieQogICAgIHJlYWRlcnMgaXMgbm90IFRy YW5zcGFyZW50LiAgQW4gaW1hZ2UgZm9ybWF0IGlzIG5vdCBUcmFuc3BhcmVudCBpZgogICAgIHVz ZWQgZm9yIGFueSBzdWJzdGFudGlhbCBhbW91bnQgb2YgdGV4dC4gIEEgY29weSB0aGF0IGlzIG5v dAogICAgICJUcmFuc3BhcmVudCIgaXMgY2FsbGVkICJPcGFxdWUiLgoKICAgICBFeGFtcGxlcyBv ZiBzdWl0YWJsZSBmb3JtYXRzIGZvciBUcmFuc3BhcmVudCBjb3BpZXMgaW5jbHVkZSBwbGFpbgog ICAgIEFTQ0lJIHdpdGhvdXQgbWFya3VwLCBUZXhpbmZvIGlucHV0IGZvcm1hdCwgTGFUZVggaW5w dXQgZm9ybWF0LAogICAgIFNHTUwgb3IgWE1MIHVzaW5nIGEgcHVibGljbHkgYXZhaWxhYmxlIERU RCwgYW5kIHN0YW5kYXJkLWNvbmZvcm1pbmcKICAgICBzaW1wbGUgSFRNTCwgUG9zdFNjcmlwdCBv ciBQREYgZGVzaWduZWQgZm9yIGh1bWFuIG1vZGlmaWNhdGlvbi4KICAgICBFeGFtcGxlcyBvZiB0 cmFuc3BhcmVudCBpbWFnZSBmb3JtYXRzIGluY2x1ZGUgUE5HLCBYQ0YgYW5kIEpQRy4KICAgICBP cGFxdWUgZm9ybWF0cyBpbmNsdWRlIHByb3ByaWV0YXJ5IGZvcm1hdHMgdGhhdCBjYW4gYmUgcmVh ZCBhbmQKICAgICBlZGl0ZWQgb25seSBieSBwcm9wcmlldGFyeSB3b3JkIHByb2Nlc3NvcnMsIFNH TUwgb3IgWE1MIGZvciB3aGljaAogICAgIHRoZSBEVEQgYW5kL29yIHByb2Nlc3NpbmcgdG9vbHMg YXJlIG5vdCBnZW5lcmFsbHkgYXZhaWxhYmxlLCBhbmQKICAgICB0aGUgbWFjaGluZS1nZW5lcmF0 ZWQgSFRNTCwgUG9zdFNjcmlwdCBvciBQREYgcHJvZHVjZWQgYnkgc29tZSB3b3JkCiAgICAgcHJv Y2Vzc29ycyBmb3Igb3V0cHV0IHB1cnBvc2VzIG9ubHkuCgogICAgIFRoZSAiVGl0bGUgUGFnZSIg bWVhbnMsIGZvciBhIHByaW50ZWQgYm9vaywgdGhlIHRpdGxlIHBhZ2UgaXRzZWxmLAogICAgIHBs dXMgc3VjaCBmb2xsb3dpbmcgcGFnZXMgYXMgYXJlIG5lZWRlZCB0byBob2xkLCBsZWdpYmx5LCB0 aGUKICAgICBtYXRlcmlhbCB0aGlzIExpY2Vuc2UgcmVxdWlyZXMgdG8gYXBwZWFyIGluIHRoZSB0 aXRsZSBwYWdlLiAgRm9yCiAgICAgd29ya3MgaW4gZm9ybWF0cyB3aGljaCBkbyBub3QgaGF2ZSBh bnkgdGl0bGUgcGFnZSBhcyBzdWNoLCAiVGl0bGUKICAgICBQYWdlIiBtZWFucyB0aGUgdGV4dCBu ZWFyIHRoZSBtb3N0IHByb21pbmVudCBhcHBlYXJhbmNlIG9mIHRoZQogICAgIHdvcmsncyB0aXRs ZSwgcHJlY2VkaW5nIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJvZHkgb2YgdGhlIHRleHQuCgogICAg IFRoZSAicHVibGlzaGVyIiBtZWFucyBhbnkgcGVyc29uIG9yIGVudGl0eSB0aGF0IGRpc3RyaWJ1 dGVzIGNvcGllcwogICAgIG9mIHRoZSBEb2N1bWVudCB0byB0aGUgcHVibGljLgoKICAgICBBIHNl Y3Rpb24gIkVudGl0bGVkIFhZWiIgbWVhbnMgYSBuYW1lZCBzdWJ1bml0IG9mIHRoZSBEb2N1bWVu dAogICAgIHdob3NlIHRpdGxlIGVpdGhlciBpcyBwcmVjaXNlbHkgWFlaIG9yIGNvbnRhaW5zIFhZ WiBpbiBwYXJlbnRoZXNlcwogICAgIGZvbGxvd2luZyB0ZXh0IHRoYXQgdHJhbnNsYXRlcyBYWVog aW4gYW5vdGhlciBsYW5ndWFnZS4gIChIZXJlIFhZWgogICAgIHN0YW5kcyBmb3IgYSBzcGVjaWZp YyBzZWN0aW9uIG5hbWUgbWVudGlvbmVkIGJlbG93LCBzdWNoIGFzCiAgICAgIkFja25vd2xlZGdl bWVudHMiLCAiRGVkaWNhdGlvbnMiLCAiRW5kb3JzZW1lbnRzIiwgb3IgIkhpc3RvcnkiLikKICAg ICBUbyAiUHJlc2VydmUgdGhlIFRpdGxlIiBvZiBzdWNoIGEgc2VjdGlvbiB3aGVuIHlvdSBtb2Rp ZnkgdGhlCiAgICAgRG9jdW1lbnQgbWVhbnMgdGhhdCBpdCByZW1haW5zIGEgc2VjdGlvbiAiRW50 aXRsZWQgWFlaIiBhY2NvcmRpbmcKICAgICB0byB0aGlzIGRlZmluaXRpb24uCgogICAgIFRoZSBE b2N1bWVudCBtYXkgaW5jbHVkZSBXYXJyYW50eSBEaXNjbGFpbWVycyBuZXh0IHRvIHRoZSBub3Rp Y2UKICAgICB3aGljaCBzdGF0ZXMgdGhhdCB0aGlzIExpY2Vuc2UgYXBwbGllcyB0byB0aGUgRG9j dW1lbnQuICBUaGVzZQogICAgIFdhcnJhbnR5IERpc2NsYWltZXJzIGFyZSBjb25zaWRlcmVkIHRv IGJlIGluY2x1ZGVkIGJ5IHJlZmVyZW5jZSBpbgogICAgIHRoaXMgTGljZW5zZSwgYnV0IG9ubHkg YXMgcmVnYXJkcyBkaXNjbGFpbWluZyB3YXJyYW50aWVzOiBhbnkgb3RoZXIKICAgICBpbXBsaWNh dGlvbiB0aGF0IHRoZXNlIFdhcnJhbnR5IERpc2NsYWltZXJzIG1heSBoYXZlIGlzIHZvaWQgYW5k CiAgICAgaGFzIG5vIGVmZmVjdCBvbiB0aGUgbWVhbmluZyBvZiB0aGlzIExpY2Vuc2UuCgogIDIu IFZFUkJBVElNIENPUFlJTkcKCiAgICAgWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBE b2N1bWVudCBpbiBhbnkgbWVkaXVtLCBlaXRoZXIKICAgICBjb21tZXJjaWFsbHkgb3Igbm9uY29t bWVyY2lhbGx5LCBwcm92aWRlZCB0aGF0IHRoaXMgTGljZW5zZSwgdGhlCiAgICAgY29weXJpZ2h0 IG5vdGljZXMsIGFuZCB0aGUgbGljZW5zZSBub3RpY2Ugc2F5aW5nIHRoaXMgTGljZW5zZQogICAg IGFwcGxpZXMgdG8gdGhlIERvY3VtZW50IGFyZSByZXByb2R1Y2VkIGluIGFsbCBjb3BpZXMsIGFu ZCB0aGF0IHlvdQogICAgIGFkZCBubyBvdGhlciBjb25kaXRpb25zIHdoYXRzb2V2ZXIgdG8gdGhv c2Ugb2YgdGhpcyBMaWNlbnNlLiAgWW91CiAgICAgbWF5IG5vdCB1c2UgdGVjaG5pY2FsIG1lYXN1 cmVzIHRvIG9ic3RydWN0IG9yIGNvbnRyb2wgdGhlIHJlYWRpbmcKICAgICBvciBmdXJ0aGVyIGNv cHlpbmcgb2YgdGhlIGNvcGllcyB5b3UgbWFrZSBvciBkaXN0cmlidXRlLiAgSG93ZXZlciwKICAg ICB5b3UgbWF5IGFjY2VwdCBjb21wZW5zYXRpb24gaW4gZXhjaGFuZ2UgZm9yIGNvcGllcy4gIElm IHlvdQogICAgIGRpc3RyaWJ1dGUgYSBsYXJnZSBlbm91Z2ggbnVtYmVyIG9mIGNvcGllcyB5b3Ug bXVzdCBhbHNvIGZvbGxvdyB0aGUKICAgICBjb25kaXRpb25zIGluIHNlY3Rpb24gMy4KCiAgICAg WW91IG1heSBhbHNvIGxlbmQgY29waWVzLCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIHN0YXRl ZCBhYm92ZSwKICAgICBhbmQgeW91IG1heSBwdWJsaWNseSBkaXNwbGF5IGNvcGllcy4KCiAgMy4g Q09QWUlORyBJTiBRVUFOVElUWQoKICAgICBJZiB5b3UgcHVibGlzaCBwcmludGVkIGNvcGllcyAo b3IgY29waWVzIGluIG1lZGlhIHRoYXQgY29tbW9ubHkKICAgICBoYXZlIHByaW50ZWQgY292ZXJz KSBvZiB0aGUgRG9jdW1lbnQsIG51bWJlcmluZyBtb3JlIHRoYW4gMTAwLCBhbmQKICAgICB0aGUg RG9jdW1lbnQncyBsaWNlbnNlIG5vdGljZSByZXF1aXJlcyBDb3ZlciBUZXh0cywgeW91IG11c3QK ICAgICBlbmNsb3NlIHRoZSBjb3BpZXMgaW4gY292ZXJzIHRoYXQgY2FycnksIGNsZWFybHkgYW5k IGxlZ2libHksIGFsbAogICAgIHRoZXNlIENvdmVyIFRleHRzOiBGcm9udC1Db3ZlciBUZXh0cyBv biB0aGUgZnJvbnQgY292ZXIsIGFuZAogICAgIEJhY2stQ292ZXIgVGV4dHMgb24gdGhlIGJhY2sg Y292ZXIuICBCb3RoIGNvdmVycyBtdXN0IGFsc28gY2xlYXJseQogICAgIGFuZCBsZWdpYmx5IGlk ZW50aWZ5IHlvdSBhcyB0aGUgcHVibGlzaGVyIG9mIHRoZXNlIGNvcGllcy4gIFRoZQogICAgIGZy b250IGNvdmVyIG11c3QgcHJlc2VudCB0aGUgZnVsbCB0aXRsZSB3aXRoIGFsbCB3b3JkcyBvZiB0 aGUgdGl0bGUKICAgICBlcXVhbGx5IHByb21pbmVudCBhbmQgdmlzaWJsZS4gIFlvdSBtYXkgYWRk IG90aGVyIG1hdGVyaWFsIG9uIHRoZQogICAgIGNvdmVycyBpbiBhZGRpdGlvbi4gIENvcHlpbmcg d2l0aCBjaGFuZ2VzIGxpbWl0ZWQgdG8gdGhlIGNvdmVycywgYXMKICAgICBsb25nIGFzIHRoZXkg cHJlc2VydmUgdGhlIHRpdGxlIG9mIHRoZSBEb2N1bWVudCBhbmQgc2F0aXNmeSB0aGVzZQogICAg IGNvbmRpdGlvbnMsIGNhbiBiZSB0cmVhdGVkIGFzIHZlcmJhdGltIGNvcHlpbmcgaW4gb3RoZXIg cmVzcGVjdHMuCgogICAgIElmIHRoZSByZXF1aXJlZCB0ZXh0cyBmb3IgZWl0aGVyIGNvdmVyIGFy ZSB0b28gdm9sdW1pbm91cyB0byBmaXQKICAgICBsZWdpYmx5LCB5b3Ugc2hvdWxkIHB1dCB0aGUg Zmlyc3Qgb25lcyBsaXN0ZWQgKGFzIG1hbnkgYXMgZml0CiAgICAgcmVhc29uYWJseSkgb24gdGhl IGFjdHVhbCBjb3ZlciwgYW5kIGNvbnRpbnVlIHRoZSByZXN0IG9udG8KICAgICBhZGphY2VudCBw YWdlcy4KCiAgICAgSWYgeW91IHB1Ymxpc2ggb3IgZGlzdHJpYnV0ZSBPcGFxdWUgY29waWVzIG9m IHRoZSBEb2N1bWVudAogICAgIG51bWJlcmluZyBtb3JlIHRoYW4gMTAwLCB5b3UgbXVzdCBlaXRo ZXIgaW5jbHVkZSBhIG1hY2hpbmUtcmVhZGFibGUKICAgICBUcmFuc3BhcmVudCBjb3B5IGFsb25n IHdpdGggZWFjaCBPcGFxdWUgY29weSwgb3Igc3RhdGUgaW4gb3Igd2l0aAogICAgIGVhY2ggT3Bh cXVlIGNvcHkgYSBjb21wdXRlci1uZXR3b3JrIGxvY2F0aW9uIGZyb20gd2hpY2ggdGhlIGdlbmVy YWwKICAgICBuZXR3b3JrLXVzaW5nIHB1YmxpYyBoYXMgYWNjZXNzIHRvIGRvd25sb2FkIHVzaW5n IHB1YmxpYy1zdGFuZGFyZAogICAgIG5ldHdvcmsgcHJvdG9jb2xzIGEgY29tcGxldGUgVHJhbnNw YXJlbnQgY29weSBvZiB0aGUgRG9jdW1lbnQsIGZyZWUKICAgICBvZiBhZGRlZCBtYXRlcmlhbC4g IElmIHlvdSB1c2UgdGhlIGxhdHRlciBvcHRpb24sIHlvdSBtdXN0IHRha2UKICAgICByZWFzb25h Ymx5IHBydWRlbnQgc3RlcHMsIHdoZW4geW91IGJlZ2luIGRpc3RyaWJ1dGlvbiBvZiBPcGFxdWUK ICAgICBjb3BpZXMgaW4gcXVhbnRpdHksIHRvIGVuc3VyZSB0aGF0IHRoaXMgVHJhbnNwYXJlbnQg Y29weSB3aWxsCiAgICAgcmVtYWluIHRodXMgYWNjZXNzaWJsZSBhdCB0aGUgc3RhdGVkIGxvY2F0 aW9uIHVudGlsIGF0IGxlYXN0IG9uZQogICAgIHllYXIgYWZ0ZXIgdGhlIGxhc3QgdGltZSB5b3Ug ZGlzdHJpYnV0ZSBhbiBPcGFxdWUgY29weSAoZGlyZWN0bHkgb3IKICAgICB0aHJvdWdoIHlvdXIg YWdlbnRzIG9yIHJldGFpbGVycykgb2YgdGhhdCBlZGl0aW9uIHRvIHRoZSBwdWJsaWMuCgogICAg IEl0IGlzIHJlcXVlc3RlZCwgYnV0IG5vdCByZXF1aXJlZCwgdGhhdCB5b3UgY29udGFjdCB0aGUg YXV0aG9ycyBvZgogICAgIHRoZSBEb2N1bWVudCB3ZWxsIGJlZm9yZSByZWRpc3RyaWJ1dGluZyBh bnkgbGFyZ2UgbnVtYmVyIG9mIGNvcGllcywKICAgICB0byBnaXZlIHRoZW0gYSBjaGFuY2UgdG8g cHJvdmlkZSB5b3Ugd2l0aCBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlCiAgICAgRG9jdW1lbnQu CgogIDQuIE1PRElGSUNBVElPTlMKCiAgICAgWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIGEg TW9kaWZpZWQgVmVyc2lvbiBvZiB0aGUgRG9jdW1lbnQKICAgICB1bmRlciB0aGUgY29uZGl0aW9u cyBvZiBzZWN0aW9ucyAyIGFuZCAzIGFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdQogICAgIHJlbGVh c2UgdGhlIE1vZGlmaWVkIFZlcnNpb24gdW5kZXIgcHJlY2lzZWx5IHRoaXMgTGljZW5zZSwgd2l0 aCB0aGUKICAgICBNb2RpZmllZCBWZXJzaW9uIGZpbGxpbmcgdGhlIHJvbGUgb2YgdGhlIERvY3Vt ZW50LCB0aHVzIGxpY2Vuc2luZwogICAgIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIG9m IHRoZSBNb2RpZmllZCBWZXJzaW9uIHRvIHdob2V2ZXIKICAgICBwb3NzZXNzZXMgYSBjb3B5IG9m IGl0LiAgSW4gYWRkaXRpb24sIHlvdSBtdXN0IGRvIHRoZXNlIHRoaW5ncyBpbgogICAgIHRoZSBN b2RpZmllZCBWZXJzaW9uOgoKICAgICAgIEEuIFVzZSBpbiB0aGUgVGl0bGUgUGFnZSAoYW5kIG9u IHRoZSBjb3ZlcnMsIGlmIGFueSkgYSB0aXRsZQogICAgICAgICAgZGlzdGluY3QgZnJvbSB0aGF0 IG9mIHRoZSBEb2N1bWVudCwgYW5kIGZyb20gdGhvc2Ugb2YgcHJldmlvdXMKICAgICAgICAgIHZl cnNpb25zICh3aGljaCBzaG91bGQsIGlmIHRoZXJlIHdlcmUgYW55LCBiZSBsaXN0ZWQgaW4gdGhl CiAgICAgICAgICBIaXN0b3J5IHNlY3Rpb24gb2YgdGhlIERvY3VtZW50KS4gIFlvdSBtYXkgdXNl IHRoZSBzYW1lIHRpdGxlCiAgICAgICAgICBhcyBhIHByZXZpb3VzIHZlcnNpb24gaWYgdGhlIG9y aWdpbmFsIHB1Ymxpc2hlciBvZiB0aGF0CiAgICAgICAgICB2ZXJzaW9uIGdpdmVzIHBlcm1pc3Np b24uCgogICAgICAgQi4gTGlzdCBvbiB0aGUgVGl0bGUgUGFnZSwgYXMgYXV0aG9ycywgb25lIG9y IG1vcmUgcGVyc29ucyBvcgogICAgICAgICAgZW50aXRpZXMgcmVzcG9uc2libGUgZm9yIGF1dGhv cnNoaXAgb2YgdGhlIG1vZGlmaWNhdGlvbnMgaW4KICAgICAgICAgIHRoZSBNb2RpZmllZCBWZXJz aW9uLCB0b2dldGhlciB3aXRoIGF0IGxlYXN0IGZpdmUgb2YgdGhlCiAgICAgICAgICBwcmluY2lw YWwgYXV0aG9ycyBvZiB0aGUgRG9jdW1lbnQgKGFsbCBvZiBpdHMgcHJpbmNpcGFsCiAgICAgICAg ICBhdXRob3JzLCBpZiBpdCBoYXMgZmV3ZXIgdGhhbiBmaXZlKSwgdW5sZXNzIHRoZXkgcmVsZWFz ZSB5b3UKICAgICAgICAgIGZyb20gdGhpcyByZXF1aXJlbWVudC4KCiAgICAgICBDLiBTdGF0ZSBv biB0aGUgVGl0bGUgcGFnZSB0aGUgbmFtZSBvZiB0aGUgcHVibGlzaGVyIG9mIHRoZQogICAgICAg ICAgTW9kaWZpZWQgVmVyc2lvbiwgYXMgdGhlIHB1Ymxpc2hlci4KCiAgICAgICBELiBQcmVzZXJ2 ZSBhbGwgdGhlIGNvcHlyaWdodCBub3RpY2VzIG9mIHRoZSBEb2N1bWVudC4KCiAgICAgICBFLiBB ZGQgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBmb3IgeW91ciBtb2RpZmljYXRpb25z CiAgICAgICAgICBhZGphY2VudCB0byB0aGUgb3RoZXIgY29weXJpZ2h0IG5vdGljZXMuCgogICAg ICAgRi4gSW5jbHVkZSwgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNvcHlyaWdodCBub3RpY2VzLCBh IGxpY2Vuc2UKICAgICAgICAgIG5vdGljZSBnaXZpbmcgdGhlIHB1YmxpYyBwZXJtaXNzaW9uIHRv IHVzZSB0aGUgTW9kaWZpZWQKICAgICAgICAgIFZlcnNpb24gdW5kZXIgdGhlIHRlcm1zIG9mIHRo aXMgTGljZW5zZSwgaW4gdGhlIGZvcm0gc2hvd24gaW4KICAgICAgICAgIHRoZSBBZGRlbmR1bSBi ZWxvdy4KCiAgICAgICBHLiBQcmVzZXJ2ZSBpbiB0aGF0IGxpY2Vuc2Ugbm90aWNlIHRoZSBmdWxs IGxpc3RzIG9mIEludmFyaWFudAogICAgICAgICAgU2VjdGlvbnMgYW5kIHJlcXVpcmVkIENvdmVy IFRleHRzIGdpdmVuIGluIHRoZSBEb2N1bWVudCdzCiAgICAgICAgICBsaWNlbnNlIG5vdGljZS4K CiAgICAgICBILiBJbmNsdWRlIGFuIHVuYWx0ZXJlZCBjb3B5IG9mIHRoaXMgTGljZW5zZS4KCiAg ICAgICBJLiBQcmVzZXJ2ZSB0aGUgc2VjdGlvbiBFbnRpdGxlZCAiSGlzdG9yeSIsIFByZXNlcnZl IGl0cyBUaXRsZSwKICAgICAgICAgIGFuZCBhZGQgdG8gaXQgYW4gaXRlbSBzdGF0aW5nIGF0IGxl YXN0IHRoZSB0aXRsZSwgeWVhciwgbmV3CiAgICAgICAgICBhdXRob3JzLCBhbmQgcHVibGlzaGVy IG9mIHRoZSBNb2RpZmllZCBWZXJzaW9uIGFzIGdpdmVuIG9uIHRoZQogICAgICAgICAgVGl0bGUg UGFnZS4gIElmIHRoZXJlIGlzIG5vIHNlY3Rpb24gRW50aXRsZWQgIkhpc3RvcnkiIGluIHRoZQog ICAgICAgICAgRG9jdW1lbnQsIGNyZWF0ZSBvbmUgc3RhdGluZyB0aGUgdGl0bGUsIHllYXIsIGF1 dGhvcnMsIGFuZAogICAgICAgICAgcHVibGlzaGVyIG9mIHRoZSBEb2N1bWVudCBhcyBnaXZlbiBv biBpdHMgVGl0bGUgUGFnZSwgdGhlbiBhZGQKICAgICAgICAgIGFuIGl0ZW0gZGVzY3JpYmluZyB0 aGUgTW9kaWZpZWQgVmVyc2lvbiBhcyBzdGF0ZWQgaW4gdGhlCiAgICAgICAgICBwcmV2aW91cyBz ZW50ZW5jZS4KCiAgICAgICBKLiBQcmVzZXJ2ZSB0aGUgbmV0d29yayBsb2NhdGlvbiwgaWYgYW55 LCBnaXZlbiBpbiB0aGUgRG9jdW1lbnQKICAgICAgICAgIGZvciBwdWJsaWMgYWNjZXNzIHRvIGEg VHJhbnNwYXJlbnQgY29weSBvZiB0aGUgRG9jdW1lbnQsIGFuZAogICAgICAgICAgbGlrZXdpc2Ug dGhlIG5ldHdvcmsgbG9jYXRpb25zIGdpdmVuIGluIHRoZSBEb2N1bWVudCBmb3IKICAgICAgICAg IHByZXZpb3VzIHZlcnNpb25zIGl0IHdhcyBiYXNlZCBvbi4gIFRoZXNlIG1heSBiZSBwbGFjZWQg aW4gdGhlCiAgICAgICAgICAiSGlzdG9yeSIgc2VjdGlvbi4gIFlvdSBtYXkgb21pdCBhIG5ldHdv cmsgbG9jYXRpb24gZm9yIGEgd29yawogICAgICAgICAgdGhhdCB3YXMgcHVibGlzaGVkIGF0IGxl YXN0IGZvdXIgeWVhcnMgYmVmb3JlIHRoZSBEb2N1bWVudAogICAgICAgICAgaXRzZWxmLCBvciBp ZiB0aGUgb3JpZ2luYWwgcHVibGlzaGVyIG9mIHRoZSB2ZXJzaW9uIGl0IHJlZmVycwogICAgICAg ICAgdG8gZ2l2ZXMgcGVybWlzc2lvbi4KCiAgICAgICBLLiBGb3IgYW55IHNlY3Rpb24gRW50aXRs ZWQgIkFja25vd2xlZGdlbWVudHMiIG9yICJEZWRpY2F0aW9ucyIsCiAgICAgICAgICBQcmVzZXJ2 ZSB0aGUgVGl0bGUgb2YgdGhlIHNlY3Rpb24sIGFuZCBwcmVzZXJ2ZSBpbiB0aGUgc2VjdGlvbgog ICAgICAgICAgYWxsIHRoZSBzdWJzdGFuY2UgYW5kIHRvbmUgb2YgZWFjaCBvZiB0aGUgY29udHJp YnV0b3IKICAgICAgICAgIGFja25vd2xlZGdlbWVudHMgYW5kL29yIGRlZGljYXRpb25zIGdpdmVu IHRoZXJlaW4uCgogICAgICAgTC4gUHJlc2VydmUgYWxsIHRoZSBJbnZhcmlhbnQgU2VjdGlvbnMg b2YgdGhlIERvY3VtZW50LCB1bmFsdGVyZWQKICAgICAgICAgIGluIHRoZWlyIHRleHQgYW5kIGlu IHRoZWlyIHRpdGxlcy4gIFNlY3Rpb24gbnVtYmVycyBvciB0aGUKICAgICAgICAgIGVxdWl2YWxl bnQgYXJlIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNlY3Rpb24gdGl0bGVzLgoKICAgICAg IE0uIERlbGV0ZSBhbnkgc2VjdGlvbiBFbnRpdGxlZCAiRW5kb3JzZW1lbnRzIi4gIFN1Y2ggYSBz ZWN0aW9uCiAgICAgICAgICBtYXkgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBNb2RpZmllZCBWZXJz aW9uLgoKICAgICAgIE4uIERvIG5vdCByZXRpdGxlIGFueSBleGlzdGluZyBzZWN0aW9uIHRvIGJl IEVudGl0bGVkCiAgICAgICAgICAiRW5kb3JzZW1lbnRzIiBvciB0byBjb25mbGljdCBpbiB0aXRs ZSB3aXRoIGFueSBJbnZhcmlhbnQKICAgICAgICAgIFNlY3Rpb24uCgogICAgICAgTy4gUHJlc2Vy dmUgYW55IFdhcnJhbnR5IERpc2NsYWltZXJzLgoKICAgICBJZiB0aGUgTW9kaWZpZWQgVmVyc2lv biBpbmNsdWRlcyBuZXcgZnJvbnQtbWF0dGVyIHNlY3Rpb25zIG9yCiAgICAgYXBwZW5kaWNlcyB0 aGF0IHF1YWxpZnkgYXMgU2Vjb25kYXJ5IFNlY3Rpb25zIGFuZCBjb250YWluIG5vCiAgICAgbWF0 ZXJpYWwgY29waWVkIGZyb20gdGhlIERvY3VtZW50LCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIGRl c2lnbmF0ZQogICAgIHNvbWUgb3IgYWxsIG9mIHRoZXNlIHNlY3Rpb25zIGFzIGludmFyaWFudC4g IFRvIGRvIHRoaXMsIGFkZCB0aGVpcgogICAgIHRpdGxlcyB0byB0aGUgbGlzdCBvZiBJbnZhcmlh bnQgU2VjdGlvbnMgaW4gdGhlIE1vZGlmaWVkIFZlcnNpb24ncwogICAgIGxpY2Vuc2Ugbm90aWNl LiAgVGhlc2UgdGl0bGVzIG11c3QgYmUgZGlzdGluY3QgZnJvbSBhbnkgb3RoZXIKICAgICBzZWN0 aW9uIHRpdGxlcy4KCiAgICAgWW91IG1heSBhZGQgYSBzZWN0aW9uIEVudGl0bGVkICJFbmRvcnNl bWVudHMiLCBwcm92aWRlZCBpdCBjb250YWlucwogICAgIG5vdGhpbmcgYnV0IGVuZG9yc2VtZW50 cyBvZiB5b3VyIE1vZGlmaWVkIFZlcnNpb24gYnkgdmFyaW91cwogICAgIHBhcnRpZXMtLWZvciBl eGFtcGxlLCBzdGF0ZW1lbnRzIG9mIHBlZXIgcmV2aWV3IG9yIHRoYXQgdGhlIHRleHQKICAgICBo YXMgYmVlbiBhcHByb3ZlZCBieSBhbiBvcmdhbml6YXRpb24gYXMgdGhlIGF1dGhvcml0YXRpdmUK ICAgICBkZWZpbml0aW9uIG9mIGEgc3RhbmRhcmQuCgogICAgIFlvdSBtYXkgYWRkIGEgcGFzc2Fn ZSBvZiB1cCB0byBmaXZlIHdvcmRzIGFzIGEgRnJvbnQtQ292ZXIgVGV4dCwKICAgICBhbmQgYSBw YXNzYWdlIG9mIHVwIHRvIDI1IHdvcmRzIGFzIGEgQmFjay1Db3ZlciBUZXh0LCB0byB0aGUgZW5k IG9mCiAgICAgdGhlIGxpc3Qgb2YgQ292ZXIgVGV4dHMgaW4gdGhlIE1vZGlmaWVkIFZlcnNpb24u ICBPbmx5IG9uZSBwYXNzYWdlCiAgICAgb2YgRnJvbnQtQ292ZXIgVGV4dCBhbmQgb25lIG9mIEJh Y2stQ292ZXIgVGV4dCBtYXkgYmUgYWRkZWQgYnkgKG9yCiAgICAgdGhyb3VnaCBhcnJhbmdlbWVu dHMgbWFkZSBieSkgYW55IG9uZSBlbnRpdHkuICBJZiB0aGUgRG9jdW1lbnQKICAgICBhbHJlYWR5 IGluY2x1ZGVzIGEgY292ZXIgdGV4dCBmb3IgdGhlIHNhbWUgY292ZXIsIHByZXZpb3VzbHkgYWRk ZWQKICAgICBieSB5b3Ugb3IgYnkgYXJyYW5nZW1lbnQgbWFkZSBieSB0aGUgc2FtZSBlbnRpdHkg eW91IGFyZSBhY3Rpbmcgb24KICAgICBiZWhhbGYgb2YsIHlvdSBtYXkgbm90IGFkZCBhbm90aGVy OyBidXQgeW91IG1heSByZXBsYWNlIHRoZSBvbGQKICAgICBvbmUsIG9uIGV4cGxpY2l0IHBlcm1p c3Npb24gZnJvbSB0aGUgcHJldmlvdXMgcHVibGlzaGVyIHRoYXQgYWRkZWQKICAgICB0aGUgb2xk IG9uZS4KCiAgICAgVGhlIGF1dGhvcihzKSBhbmQgcHVibGlzaGVyKHMpIG9mIHRoZSBEb2N1bWVu dCBkbyBub3QgYnkgdGhpcwogICAgIExpY2Vuc2UgZ2l2ZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGVp ciBuYW1lcyBmb3IgcHVibGljaXR5IGZvciBvciB0bwogICAgIGFzc2VydCBvciBpbXBseSBlbmRv cnNlbWVudCBvZiBhbnkgTW9kaWZpZWQgVmVyc2lvbi4KCiAgNS4gQ09NQklOSU5HIERPQ1VNRU5U UwoKICAgICBZb3UgbWF5IGNvbWJpbmUgdGhlIERvY3VtZW50IHdpdGggb3RoZXIgZG9jdW1lbnRz IHJlbGVhc2VkIHVuZGVyCiAgICAgdGhpcyBMaWNlbnNlLCB1bmRlciB0aGUgdGVybXMgZGVmaW5l ZCBpbiBzZWN0aW9uIDQgYWJvdmUgZm9yCiAgICAgbW9kaWZpZWQgdmVyc2lvbnMsIHByb3ZpZGVk IHRoYXQgeW91IGluY2x1ZGUgaW4gdGhlIGNvbWJpbmF0aW9uIGFsbAogICAgIG9mIHRoZSBJbnZh cmlhbnQgU2VjdGlvbnMgb2YgYWxsIG9mIHRoZSBvcmlnaW5hbCBkb2N1bWVudHMsCiAgICAgdW5t b2RpZmllZCwgYW5kIGxpc3QgdGhlbSBhbGwgYXMgSW52YXJpYW50IFNlY3Rpb25zIG9mIHlvdXIK ICAgICBjb21iaW5lZCB3b3JrIGluIGl0cyBsaWNlbnNlIG5vdGljZSwgYW5kIHRoYXQgeW91IHBy ZXNlcnZlIGFsbAogICAgIHRoZWlyIFdhcnJhbnR5IERpc2NsYWltZXJzLgoKICAgICBUaGUgY29t YmluZWQgd29yayBuZWVkIG9ubHkgY29udGFpbiBvbmUgY29weSBvZiB0aGlzIExpY2Vuc2UsIGFu ZAogICAgIG11bHRpcGxlIGlkZW50aWNhbCBJbnZhcmlhbnQgU2VjdGlvbnMgbWF5IGJlIHJlcGxh Y2VkIHdpdGggYSBzaW5nbGUKICAgICBjb3B5LiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIEludmFy aWFudCBTZWN0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUKICAgICBidXQgZGlmZmVyZW50IGNvbnRl bnRzLCBtYWtlIHRoZSB0aXRsZSBvZiBlYWNoIHN1Y2ggc2VjdGlvbiB1bmlxdWUKICAgICBieSBh ZGRpbmcgYXQgdGhlIGVuZCBvZiBpdCwgaW4gcGFyZW50aGVzZXMsIHRoZSBuYW1lIG9mIHRoZQog ICAgIG9yaWdpbmFsIGF1dGhvciBvciBwdWJsaXNoZXIgb2YgdGhhdCBzZWN0aW9uIGlmIGtub3du LCBvciBlbHNlIGEKICAgICB1bmlxdWUgbnVtYmVyLiAgTWFrZSB0aGUgc2FtZSBhZGp1c3RtZW50 IHRvIHRoZSBzZWN0aW9uIHRpdGxlcyBpbgogICAgIHRoZSBsaXN0IG9mIEludmFyaWFudCBTZWN0 aW9ucyBpbiB0aGUgbGljZW5zZSBub3RpY2Ugb2YgdGhlCiAgICAgY29tYmluZWQgd29yay4KCiAg ICAgSW4gdGhlIGNvbWJpbmF0aW9uLCB5b3UgbXVzdCBjb21iaW5lIGFueSBzZWN0aW9ucyBFbnRp dGxlZAogICAgICJIaXN0b3J5IiBpbiB0aGUgdmFyaW91cyBvcmlnaW5hbCBkb2N1bWVudHMsIGZv cm1pbmcgb25lIHNlY3Rpb24KICAgICBFbnRpdGxlZCAiSGlzdG9yeSI7IGxpa2V3aXNlIGNvbWJp bmUgYW55IHNlY3Rpb25zIEVudGl0bGVkCiAgICAgIkFja25vd2xlZGdlbWVudHMiLCBhbmQgYW55 IHNlY3Rpb25zIEVudGl0bGVkICJEZWRpY2F0aW9ucyIuICBZb3UKICAgICBtdXN0IGRlbGV0ZSBh bGwgc2VjdGlvbnMgRW50aXRsZWQgIkVuZG9yc2VtZW50cy4iCgogIDYuIENPTExFQ1RJT05TIE9G IERPQ1VNRU5UUwoKICAgICBZb3UgbWF5IG1ha2UgYSBjb2xsZWN0aW9uIGNvbnNpc3Rpbmcgb2Yg dGhlIERvY3VtZW50IGFuZCBvdGhlcgogICAgIGRvY3VtZW50cyByZWxlYXNlZCB1bmRlciB0aGlz IExpY2Vuc2UsIGFuZCByZXBsYWNlIHRoZSBpbmRpdmlkdWFsCiAgICAgY29waWVzIG9mIHRoaXMg TGljZW5zZSBpbiB0aGUgdmFyaW91cyBkb2N1bWVudHMgd2l0aCBhIHNpbmdsZSBjb3B5CiAgICAg dGhhdCBpcyBpbmNsdWRlZCBpbiB0aGUgY29sbGVjdGlvbiwgcHJvdmlkZWQgdGhhdCB5b3UgZm9s bG93IHRoZQogICAgIHJ1bGVzIG9mIHRoaXMgTGljZW5zZSBmb3IgdmVyYmF0aW0gY29weWluZyBv ZiBlYWNoIG9mIHRoZSBkb2N1bWVudHMKICAgICBpbiBhbGwgb3RoZXIgcmVzcGVjdHMuCgogICAg IFlvdSBtYXkgZXh0cmFjdCBhIHNpbmdsZSBkb2N1bWVudCBmcm9tIHN1Y2ggYSBjb2xsZWN0aW9u LCBhbmQKICAgICBkaXN0cmlidXRlIGl0IGluZGl2aWR1YWxseSB1bmRlciB0aGlzIExpY2Vuc2Us IHByb3ZpZGVkIHlvdSBpbnNlcnQKICAgICBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGludG8gdGhl IGV4dHJhY3RlZCBkb2N1bWVudCwgYW5kIGZvbGxvdyB0aGlzCiAgICAgTGljZW5zZSBpbiBhbGwg b3RoZXIgcmVzcGVjdHMgcmVnYXJkaW5nIHZlcmJhdGltIGNvcHlpbmcgb2YgdGhhdAogICAgIGRv Y3VtZW50LgoKICA3LiBBR0dSRUdBVElPTiBXSVRIIElOREVQRU5ERU5UIFdPUktTCgogICAgIEEg Y29tcGlsYXRpb24gb2YgdGhlIERvY3VtZW50IG9yIGl0cyBkZXJpdmF0aXZlcyB3aXRoIG90aGVy CiAgICAgc2VwYXJhdGUgYW5kIGluZGVwZW5kZW50IGRvY3VtZW50cyBvciB3b3JrcywgaW4gb3Ig b24gYSB2b2x1bWUgb2YgYQogICAgIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMg Y2FsbGVkIGFuICJhZ2dyZWdhdGUiIGlmIHRoZQogICAgIGNvcHlyaWdodCByZXN1bHRpbmcgZnJv bSB0aGUgY29tcGlsYXRpb24gaXMgbm90IHVzZWQgdG8gbGltaXQgdGhlCiAgICAgbGVnYWwgcmln aHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzIGJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFs CiAgICAgd29ya3MgcGVybWl0LiAgV2hlbiB0aGUgRG9jdW1lbnQgaXMgaW5jbHVkZWQgaW4gYW4g YWdncmVnYXRlLCB0aGlzCiAgICAgTGljZW5zZSBkb2VzIG5vdCBhcHBseSB0byB0aGUgb3RoZXIg d29ya3MgaW4gdGhlIGFnZ3JlZ2F0ZSB3aGljaAogICAgIGFyZSBub3QgdGhlbXNlbHZlcyBkZXJp dmF0aXZlIHdvcmtzIG9mIHRoZSBEb2N1bWVudC4KCiAgICAgSWYgdGhlIENvdmVyIFRleHQgcmVx dWlyZW1lbnQgb2Ygc2VjdGlvbiAzIGlzIGFwcGxpY2FibGUgdG8gdGhlc2UKICAgICBjb3BpZXMg b2YgdGhlIERvY3VtZW50LCB0aGVuIGlmIHRoZSBEb2N1bWVudCBpcyBsZXNzIHRoYW4gb25lIGhh bGYKICAgICBvZiB0aGUgZW50aXJlIGFnZ3JlZ2F0ZSwgdGhlIERvY3VtZW50J3MgQ292ZXIgVGV4 dHMgbWF5IGJlIHBsYWNlZAogICAgIG9uIGNvdmVycyB0aGF0IGJyYWNrZXQgdGhlIERvY3VtZW50 IHdpdGhpbiB0aGUgYWdncmVnYXRlLCBvciB0aGUKICAgICBlbGVjdHJvbmljIGVxdWl2YWxlbnQg b2YgY292ZXJzIGlmIHRoZSBEb2N1bWVudCBpcyBpbiBlbGVjdHJvbmljCiAgICAgZm9ybS4gIE90 aGVyd2lzZSB0aGV5IG11c3QgYXBwZWFyIG9uIHByaW50ZWQgY292ZXJzIHRoYXQgYnJhY2tldAog ICAgIHRoZSB3aG9sZSBhZ2dyZWdhdGUuCgogIDguIFRSQU5TTEFUSU9OCgogICAgIFRyYW5zbGF0 aW9uIGlzIGNvbnNpZGVyZWQgYSBraW5kIG9mIG1vZGlmaWNhdGlvbiwgc28geW91IG1heQogICAg IGRpc3RyaWJ1dGUgdHJhbnNsYXRpb25zIG9mIHRoZSBEb2N1bWVudCB1bmRlciB0aGUgdGVybXMg b2Ygc2VjdGlvbgogICAgIDQuICBSZXBsYWNpbmcgSW52YXJpYW50IFNlY3Rpb25zIHdpdGggdHJh bnNsYXRpb25zIHJlcXVpcmVzIHNwZWNpYWwKICAgICBwZXJtaXNzaW9uIGZyb20gdGhlaXIgY29w eXJpZ2h0IGhvbGRlcnMsIGJ1dCB5b3UgbWF5IGluY2x1ZGUKICAgICB0cmFuc2xhdGlvbnMgb2Yg c29tZSBvciBhbGwgSW52YXJpYW50IFNlY3Rpb25zIGluIGFkZGl0aW9uIHRvIHRoZQogICAgIG9y aWdpbmFsIHZlcnNpb25zIG9mIHRoZXNlIEludmFyaWFudCBTZWN0aW9ucy4gIFlvdSBtYXkgaW5j bHVkZSBhCiAgICAgdHJhbnNsYXRpb24gb2YgdGhpcyBMaWNlbnNlLCBhbmQgYWxsIHRoZSBsaWNl bnNlIG5vdGljZXMgaW4gdGhlCiAgICAgRG9jdW1lbnQsIGFuZCBhbnkgV2FycmFudHkgRGlzY2xh aW1lcnMsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28KICAgICBpbmNsdWRlIHRoZSBvcmlnaW5hbCBF bmdsaXNoIHZlcnNpb24gb2YgdGhpcyBMaWNlbnNlIGFuZCB0aGUKICAgICBvcmlnaW5hbCB2ZXJz aW9ucyBvZiB0aG9zZSBub3RpY2VzIGFuZCBkaXNjbGFpbWVycy4gIEluIGNhc2Ugb2YgYQogICAg IGRpc2FncmVlbWVudCBiZXR3ZWVuIHRoZSB0cmFuc2xhdGlvbiBhbmQgdGhlIG9yaWdpbmFsIHZl cnNpb24gb2YKICAgICB0aGlzIExpY2Vuc2Ugb3IgYSBub3RpY2Ugb3IgZGlzY2xhaW1lciwgdGhl IG9yaWdpbmFsIHZlcnNpb24gd2lsbAogICAgIHByZXZhaWwuCgogICAgIElmIGEgc2VjdGlvbiBp biB0aGUgRG9jdW1lbnQgaXMgRW50aXRsZWQgIkFja25vd2xlZGdlbWVudHMiLAogICAgICJEZWRp Y2F0aW9ucyIsIG9yICJIaXN0b3J5IiwgdGhlIHJlcXVpcmVtZW50IChzZWN0aW9uIDQpIHRvCiAg ICAgUHJlc2VydmUgaXRzIFRpdGxlIChzZWN0aW9uIDEpIHdpbGwgdHlwaWNhbGx5IHJlcXVpcmUg Y2hhbmdpbmcgdGhlCiAgICAgYWN0dWFsIHRpdGxlLgoKICA5LiBURVJNSU5BVElPTgoKICAgICBZ b3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIERv Y3VtZW50CiAgICAgZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vu c2UuICBBbnkgYXR0ZW1wdAogICAgIG90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vu c2UsIG9yIGRpc3RyaWJ1dGUgaXQgaXMgdm9pZCwKICAgICBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5 IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCgogICAgIEhvd2V2ZXIs IGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCiAg ICAgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJlaW5zdGF0 ZWQgKGEpCiAgICAgcHJvdmlzaW9uYWxseSwgdW5sZXNzIGFuZCB1bnRpbCB0aGUgY29weXJpZ2h0 IGhvbGRlciBleHBsaWNpdGx5IGFuZAogICAgIGZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vu c2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZQogICAgIGNvcHlyaWdodCBob2xkZXIgZmFp bHMgdG8gbm90aWZ5IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5IHNvbWUKICAgICByZWFzb25hYmxl IG1lYW5zIHByaW9yIHRvIDYwIGRheXMgYWZ0ZXIgdGhlIGNlc3NhdGlvbi4KCiAgICAgTW9yZW92 ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzCiAg ICAgcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmll cyB5b3Ugb2YgdGhlCiAgICAgdmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucywgdGhp cyBpcyB0aGUgZmlyc3QgdGltZSB5b3UgaGF2ZQogICAgIHJlY2VpdmVkIG5vdGljZSBvZiB2aW9s YXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20KICAgICB0aGF0IGNvcHly aWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMK ICAgICBhZnRlciB5b3VyIHJlY2VpcHQgb2YgdGhlIG5vdGljZS4KCiAgICAgVGVybWluYXRpb24g b2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZQogICAg IHRoZSBsaWNlbnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciByaWdo dHMgZnJvbSB5b3UKICAgICB1bmRlciB0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZl IGJlZW4gdGVybWluYXRlZCBhbmQgbm90CiAgICAgcGVybWFuZW50bHkgcmVpbnN0YXRlZCwgcmVj ZWlwdCBvZiBhIGNvcHkgb2Ygc29tZSBvciBhbGwgb2YgdGhlCiAgICAgc2FtZSBtYXRlcmlhbCBk b2VzIG5vdCBnaXZlIHlvdSBhbnkgcmlnaHRzIHRvIHVzZSBpdC4KCiAgMTAuIEZVVFVSRSBSRVZJ U0lPTlMgT0YgVEhJUyBMSUNFTlNFCgogICAgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24g bWF5IHB1Ymxpc2ggbmV3LCByZXZpc2VkIHZlcnNpb25zIG9mCiAgICAgdGhlIEdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3CiAgICAgdmVy c2lvbnMgd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBi dXQgbWF5CiAgICAgZGlmZmVyIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBj b25jZXJucy4gIFNlZQogICAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgogICAg IEVhY2ggdmVyc2lvbiBvZiB0aGUgTGljZW5zZSBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZl cnNpb24KICAgICBudW1iZXIuICBJZiB0aGUgRG9jdW1lbnQgc3BlY2lmaWVzIHRoYXQgYSBwYXJ0 aWN1bGFyIG51bWJlcmVkCiAgICAgdmVyc2lvbiBvZiB0aGlzIExpY2Vuc2UgIm9yIGFueSBsYXRl ciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UKICAgICBoYXZlIHRoZSBvcHRpb24gb2YgZm9s bG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YKICAgICB0aGF0IHNwZWNp ZmllZCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHRoYXQgaGFzIGJlZW4KICAgICBw dWJsaXNoZWQgKG5vdCBhcyBhIGRyYWZ0KSBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LiAgSWYgdGhlCiAgICAgRG9jdW1lbnQgZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVy IG9mIHRoaXMgTGljZW5zZSwgeW91IG1heQogICAgIGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1 Ymxpc2hlZCAobm90IGFzIGEgZHJhZnQpIGJ5IHRoZSBGcmVlCiAgICAgU29mdHdhcmUgRm91bmRh dGlvbi4gIElmIHRoZSBEb2N1bWVudCBzcGVjaWZpZXMgdGhhdCBhIHByb3h5IGNhbgogICAgIGRl Y2lkZSB3aGljaCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0 aGF0CiAgICAgcHJveHkncyBwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYSB2ZXJz aW9uIHBlcm1hbmVudGx5CiAgICAgYXV0aG9yaXplcyB5b3UgdG8gY2hvb3NlIHRoYXQgdmVyc2lv biBmb3IgdGhlIERvY3VtZW50LgoKICAxMS4gUkVMSUNFTlNJTkcKCiAgICAgIk1hc3NpdmUgTXVs dGlhdXRob3IgQ29sbGFib3JhdGlvbiBTaXRlIiAob3IgIk1NQyBTaXRlIikgbWVhbnMgYW55CiAg ICAgV29ybGQgV2lkZSBXZWIgc2VydmVyIHRoYXQgcHVibGlzaGVzIGNvcHlyaWdodGFibGUgd29y a3MgYW5kIGFsc28KICAgICBwcm92aWRlcyBwcm9taW5lbnQgZmFjaWxpdGllcyBmb3IgYW55Ym9k eSB0byBlZGl0IHRob3NlIHdvcmtzLiAgQQogICAgIHB1YmxpYyB3aWtpIHRoYXQgYW55Ym9keSBj YW4gZWRpdCBpcyBhbiBleGFtcGxlIG9mIHN1Y2ggYSBzZXJ2ZXIuCiAgICAgQSAiTWFzc2l2ZSBN dWx0aWF1dGhvciBDb2xsYWJvcmF0aW9uIiAob3IgIk1NQyIpIGNvbnRhaW5lZCBpbiB0aGUKICAg ICBzaXRlIG1lYW5zIGFueSBzZXQgb2YgY29weXJpZ2h0YWJsZSB3b3JrcyB0aHVzIHB1Ymxpc2hl ZCBvbiB0aGUgTU1DCiAgICAgc2l0ZS4KCiAgICAgIkNDLUJZLVNBIiBtZWFucyB0aGUgQ3JlYXRp dmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAzLjAKICAgICBsaWNlbnNlIHB1Ymxp c2hlZCBieSBDcmVhdGl2ZSBDb21tb25zIENvcnBvcmF0aW9uLCBhIG5vdC1mb3ItcHJvZml0CiAg ICAgY29ycG9yYXRpb24gd2l0aCBhIHByaW5jaXBhbCBwbGFjZSBvZiBidXNpbmVzcyBpbiBTYW4g RnJhbmNpc2NvLAogICAgIENhbGlmb3JuaWEsIGFzIHdlbGwgYXMgZnV0dXJlIGNvcHlsZWZ0IHZl cnNpb25zIG9mIHRoYXQgbGljZW5zZQogICAgIHB1Ymxpc2hlZCBieSB0aGF0IHNhbWUgb3JnYW5p emF0aW9uLgoKICAgICAiSW5jb3Jwb3JhdGUiIG1lYW5zIHRvIHB1Ymxpc2ggb3IgcmVwdWJsaXNo IGEgRG9jdW1lbnQsIGluIHdob2xlIG9yCiAgICAgaW4gcGFydCwgYXMgcGFydCBvZiBhbm90aGVy IERvY3VtZW50LgoKICAgICBBbiBNTUMgaXMgImVsaWdpYmxlIGZvciByZWxpY2Vuc2luZyIgaWYg aXQgaXMgbGljZW5zZWQgdW5kZXIgdGhpcwogICAgIExpY2Vuc2UsIGFuZCBpZiBhbGwgd29ya3Mg dGhhdCB3ZXJlIGZpcnN0IHB1Ymxpc2hlZCB1bmRlciB0aGlzCiAgICAgTGljZW5zZSBzb21ld2hl cmUgb3RoZXIgdGhhbiB0aGlzIE1NQywgYW5kIHN1YnNlcXVlbnRseQogICAgIGluY29ycG9yYXRl ZCBpbiB3aG9sZSBvciBpbiBwYXJ0IGludG8gdGhlIE1NQywgKDEpIGhhZCBubyBjb3ZlcgogICAg IHRleHRzIG9yIGludmFyaWFudCBzZWN0aW9ucywgYW5kICgyKSB3ZXJlIHRodXMgaW5jb3Jwb3Jh dGVkIHByaW9yCiAgICAgdG8gTm92ZW1iZXIgMSwgMjAwOC4KCiAgICAgVGhlIG9wZXJhdG9yIG9m IGFuIE1NQyBTaXRlIG1heSByZXB1Ymxpc2ggYW4gTU1DIGNvbnRhaW5lZCBpbiB0aGUKICAgICBz aXRlIHVuZGVyIENDLUJZLVNBIG9uIHRoZSBzYW1lIHNpdGUgYXQgYW55IHRpbWUgYmVmb3JlIEF1 Z3VzdCAxLAogICAgIDIwMDksIHByb3ZpZGVkIHRoZSBNTUMgaXMgZWxpZ2libGUgZm9yIHJlbGlj ZW5zaW5nLgoKQURERU5EVU06IEhvdyB0byB1c2UgdGhpcyBMaWNlbnNlIGZvciB5b3VyIGRvY3Vt ZW50cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CgpUbyB1c2UgdGhpcyBMaWNlbnNlIGluIGEgZG9jdW1lbnQgeW91IGhhdmUgd3JpdHRlbiwgaW5j bHVkZSBhIGNvcHkgb2YKdGhlIExpY2Vuc2UgaW4gdGhlIGRvY3VtZW50IGFuZCBwdXQgdGhlIGZv bGxvd2luZyBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UKbm90aWNlcyBqdXN0IGFmdGVyIHRoZSB0aXRs ZSBwYWdlOgoKICAgICAgIENvcHlyaWdodCAoQykgIFlFQVIgIFlPVVIgTkFNRS4KICAgICAgIFBl cm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhp cyBkb2N1bWVudAogICAgICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVu dGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zCiAgICAgICBvciBhbnkgbGF0ZXIgdmVyc2lvbiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKICAgICAgIHdpdGggbm8g SW52YXJpYW50IFNlY3Rpb25zLCBubyBGcm9udC1Db3ZlciBUZXh0cywgYW5kIG5vIEJhY2stQ292 ZXIKICAgICAgIFRleHRzLiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRo ZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VCiAgICAgICBGcmVlIERvY3VtZW50YXRpb24gTGljZW5z ZScnLgoKICAgSWYgeW91IGhhdmUgSW52YXJpYW50IFNlY3Rpb25zLCBGcm9udC1Db3ZlciBUZXh0 cyBhbmQgQmFjay1Db3ZlcgpUZXh0cywgcmVwbGFjZSB0aGUgIndpdGguLi5UZXh0cy4iIGxpbmUg d2l0aCB0aGlzOgoKICAgICAgICAgd2l0aCB0aGUgSW52YXJpYW50IFNlY3Rpb25zIGJlaW5nIExJ U1QgVEhFSVIgVElUTEVTLCB3aXRoCiAgICAgICAgIHRoZSBGcm9udC1Db3ZlciBUZXh0cyBiZWlu ZyBMSVNULCBhbmQgd2l0aCB0aGUgQmFjay1Db3ZlciBUZXh0cwogICAgICAgICBiZWluZyBMSVNU LgoKICAgSWYgeW91IGhhdmUgSW52YXJpYW50IFNlY3Rpb25zIHdpdGhvdXQgQ292ZXIgVGV4dHMs IG9yIHNvbWUgb3RoZXIKY29tYmluYXRpb24gb2YgdGhlIHRocmVlLCBtZXJnZSB0aG9zZSB0d28g YWx0ZXJuYXRpdmVzIHRvIHN1aXQgdGhlCnNpdHVhdGlvbi4KCiAgIElmIHlvdXIgZG9jdW1lbnQg Y29udGFpbnMgbm9udHJpdmlhbCBleGFtcGxlcyBvZiBwcm9ncmFtIGNvZGUsIHdlCnJlY29tbWVu ZCByZWxlYXNpbmcgdGhlc2UgZXhhbXBsZXMgaW4gcGFyYWxsZWwgdW5kZXIgeW91ciBjaG9pY2Ug b2YgZnJlZQpzb2Z0d2FyZSBsaWNlbnNlLCBzdWNoIGFzIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSwgdG8gcGVybWl0CnRoZWlyIHVzZSBpbiBmcmVlIHNvZnR3YXJlLgoKHwpGaWxlOiBk b2N1b1hFTlUuaW5mbywgIE5vZGU6IEluZGV4LCAgUHJldjogR05VIEZyZWUgRG9jdW1lbnRhdGlv biBMaWNlbnNlLCAgVXA6IFRvcAoKSW5kZXgKKioqKioKCgAIW2luZGV4AAhdCiogTWVudToKCiog YWN0aXZhdGluZyBFZ2xvdCBmb3IgYSBwcm9qZWN0OiAgICAgICAgU3RhcnRpbmcgRWdsb3QuICAg ICAgKGxpbmUgICA2KQoqIGJ1ZmZlcnMgbWFuYWdlZCBieSBFZ2xvdDogICAgICAgICAgICAgIEVn bG90IGFuZCBCdWZmZXJzLiAgIChsaW5lICAgNikKKiBidWcgcmVwb3J0czogICAgICAgICAgICAg ICAgICAgICAgICAgICBSZXBvcnRpbmcgYnVncy4gICAgICAobGluZSAgIDYpCiogY29kZSBhY3Rp b25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUg IDc5KQoqIGNvbW1hbmQtbGluZSBhcmd1bWVudHM6ICAgICAgICAgICAgICAgIFVzZXItc3BlY2lm aWMgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGluZSAgIDYpCiogY29tbWFuZHMsIEVnbG90OiAgICAg ICAgICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUgICA2KQoqIGN1c3Rv bWl6aW5nIEVnbG90OiAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWl6aW5nIEVnbG90LiAgIChs aW5lICAgNikKKiBkb2N1bWVudGF0aW9uIHVzaW5nIEVnbG90OiAgICAgICAgICAgICBFZ2xvdCBD b21tYW5kcy4gICAgICAobGluZSAxNTEpCiogZWdsb3Q6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhcnRpbmcgRWdsb3QuICAgICAgKGxpbmUgICA2KQoqIGVnbG90LWF1dG9yZWNv bm5lY3Q6ICAgICAgICAgICAgICAgICAgIEVnbG90IFZhcmlhYmxlcy4gICAgIChsaW5lICAgOCkK KiBlZ2xvdC1hdXRvc2h1dGRvd246ICAgICAgICAgICAgICAgICAgICBFZ2xvdCBWYXJpYWJsZXMu ICAgICAobGluZSAgNDIpCiogZWdsb3QtY29uZmlybS1zZXJ2ZXItZWRpdHM6ICAgICAgICAgICAg RWdsb3QgVmFyaWFibGVzLiAgICAgKGxpbmUgIDQ4KQoqIGVnbG90LWNvbm5lY3QtaG9vazogICAg ICAgICAgICAgICAgICAgIEN1c3RvbWl6aW5nIEVnbG90LiAgIChsaW5lICAzOSkKKiBlZ2xvdC1j b25uZWN0LXRpbWVvdXQ6ICAgICAgICAgICAgICAgICBFZ2xvdCBWYXJpYWJsZXMuICAgICAobGlu ZSAgMTkpCiogZWdsb3QtZW5zdXJlOiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRpbmcg RWdsb3QuICAgICAgKGxpbmUgIDI5KQoqIGVnbG90LWV2ZW50cy1idWZmZXItY29uZmlnOiAgICAg ICAgICAgIEVnbG90IFZhcmlhYmxlcy4gICAgIChsaW5lICAzNCkKKiBlZ2xvdC1leHRlbmQtdG8t eHJlZjogICAgICAgICAgICAgICAgICBFZ2xvdCBWYXJpYWJsZXMuICAgICAobGluZSAgNjIpCiog ZWdsb3QtaWdub3JlZC1zZXJ2ZXItY2FwYWJpbGl0aWVzOiAgICAgRWdsb3QgVmFyaWFibGVzLiAg ICAgKGxpbmUgIDU3KQoqIGVnbG90LW1hbmFnZWQtbW9kZS1ob29rOiAgICAgICAgICAgICAgIEVn bG90IGFuZCBCdWZmZXJzLiAgIChsaW5lICA3NCkKKiBlZ2xvdC1tYW5hZ2VkLXA6ICAgICAgICAg ICAgICAgICAgICAgICBFZ2xvdCBhbmQgQnVmZmVycy4gICAobGluZSAgNzQpCiogZWdsb3QtbWVu dTogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWdsb3QgYW5kIEJ1ZmZlcnMuICAgKGxpbmUg IDUzKQoqIGVnbG90LW1vZGUtbWFwOiAgICAgICAgICAgICAgICAgICAgICAgIEVnbG90IFZhcmlh Ymxlcy4gICAgIChsaW5lICA3MSkKKiBlZ2xvdC1yZXBvcnQtcHJvZ3Jlc3M6ICAgICAgICAgICAg ICAgICBDdXN0b21pemluZyBFZ2xvdC4gICAobGluZSAgNjMpCiogZWdsb3Qtc2VydmVyLWluaXRp YWxpemVkLWhvb2s6ICAgICAgICAgQ3VzdG9taXppbmcgRWdsb3QuICAgKGxpbmUgIDM2KQoqIGVn bG90LXNlcnZlci1wcm9ncmFtczogICAgICAgICAgICAgICAgIFNldHRpbmcgVXAgTFNQIFNlcnZl cnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpbmUgIDE5KQoqIGVnbG90LXNob3ctd29ya3NwYWNlLWNvbmZpZ3VyYXRpb246 ICAgIFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZSAgMzIpCiogZWds b3Qtc2h1dGRvd246ICAgICAgICAgICAgICAgICAgICAgICAgU2h1dHRpbmcgRG93biBMU1AgU2Vy dmVycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGluZSAgMTUpCiogZWdsb3Qtc3RheS1vdXQtb2Y6ICAgICAgICAgICAgICAg ICAgICAgQ3VzdG9taXppbmcgRWdsb3QuICAgKGxpbmUgIDQ3KQoqIGVnbG90LXN0cmljdC1tb2Rl OiAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWl6aW5nIEVnbG90LiAgIChsaW5lICAzMSkKKiBl Z2xvdC1zeW5jLWNvbm5lY3Q6ICAgICAgICAgICAgICAgICAgICBFZ2xvdCBWYXJpYWJsZXMuICAg ICAobGluZSAgMjQpCiogZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb246ICAgICAgICAgUHJv amVjdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lICAgNikKKiBlZ2xvdC13b3Jr c3BhY2UtY29uZmlndXJhdGlvbiA8MT46ICAgICBVc2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24u CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpbmUgIDM2KQoqIGVsZG9jLCBhbmQgRWdsb3Q6ICAgICAgICAgICAgICAgICAgICAg IEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lIDE1MSkKKiBmZWF0dXJlcyBpbiBidWZmZXJzIHN1 cHBvcnRlZCBieSBFZ2xvdDogRWdsb3QgRmVhdHVyZXMuICAgICAobGluZSAgIDYpCiogZmluZGlu ZyBkZWZpbml0aW9ucyBvZiBpZGVudGlmaWVycyB1c2luZyBFZ2xvdDogRWdsb3QgQ29tbWFuZHMu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpbmUgMTYxKQoqIGZseW1ha2UsIGFuZCBFZ2xvdDogICAgICAgICAgICAgICAgICAg IEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lIDE1NCkKKiBpbWVudSBuYXZpZ2F0aW9uIHVzaW5n IEVnbG90OiAgICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAxNjQpCiogaW5pdGlh bGl6YXRpb25PcHRpb25zOiAgICAgICAgICAgICAgICAgVXNlci1zcGVjaWZpYyBjb25maWd1cmF0 aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsaW5lICAgNikKKiBpbmxheSBoaW50czogICAgICAgICAgICAgICAgICAgICAg ICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAxMDYpCiogbGFuZ3VhZ2Ugc2VydmVyIGZv ciBFZ2xvdDogICAgICAgICAgICAgU2V0dGluZyBVcCBMU1AgU2VydmVycy4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZSAg IDYpCiogbGFuZ3VhZ2Ugc2VydmVyIHByb3RvY29sOiAgICAgICAgICAgICAgVG9wLiAgICAgICAg ICAgICAgICAgKGxpbmUgICA2KQoqIExTUDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRvcC4gICAgICAgICAgICAgICAgIChsaW5lICAgNikKKiBMU1Agc2VydmVyIGZvciBFZ2xv dCwgc2V0dGluZyB1cDogICAgICBTZXR0aW5nIFVwIExTUCBTZXJ2ZXJzLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lICAg NikKKiBNLXggZWdsb3Q6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZ2xvdCBDb21tYW5k cy4gICAgICAobGluZSAgIDkpCiogTS14IGVnbG90LWNsZWFyLXN0YXR1czogICAgICAgICAgICAg ICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUgMTM0KQoqIE0teCBlZ2xvdC1jb2RlLWFjdGlv bi1leHRyYWN0OiAgICAgICAgIEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lICA4MikKKiBNLXgg ZWdsb3QtY29kZS1hY3Rpb24taW5saW5lOiAgICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAo bGluZSAgODMpCiogTS14IGVnbG90LWNvZGUtYWN0aW9uLW9yZ2FuaXplLWltcG9ydHM6IEVnbG90 IENvbW1hbmRzLiAgICAgKGxpbmUgIDgwKQoqIE0teCBlZ2xvdC1jb2RlLWFjdGlvbi1xdWlja2Zp eDogICAgICAgIEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lICA4MSkKKiBNLXggZWdsb3QtY29k ZS1hY3Rpb24tcmV3cml0ZTogICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAgODQp CiogTS14IGVnbG90LWNvZGUtYWN0aW9uczogICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMu ICAgICAgKGxpbmUgIDc5KQoqIE0teCBlZ2xvdC1ldmVudHMtYnVmZmVyOiAgICAgICAgICAgICAg IEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lIDExOCkKKiBNLXggZWdsb3QtZm9yZ2V0LXBlbmRp bmctY29udGludWF0aW9uczogRWdsb3QgQ29tbWFuZHMuICAgICAobGluZSAxMjYpCiogTS14IGVn bG90LWZvcm1hdDogICAgICAgICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxp bmUgIDcwKQoqIE0teCBlZ2xvdC1mb3JtYXQtYnVmZmVyOiAgICAgICAgICAgICAgIEVnbG90IENv bW1hbmRzLiAgICAgIChsaW5lICA3NSkKKiBNLXggZWdsb3QtaW5sYXktaGludHMtbW9kZTogICAg ICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAxMDYpCiogTS14IGVnbG90LXJlY29u bmVjdDogICAgICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUgIDM2KQoq IE0teCBlZ2xvdC1yZW5hbWU6ICAgICAgICAgICAgICAgICAgICAgIEVnbG90IENvbW1hbmRzLiAg ICAgIChsaW5lICA2MykKKiBNLXggZWdsb3Qtc2h1dGRvd246ICAgICAgICAgICAgICAgICAgICBF Z2xvdCBDb21tYW5kcy4gICAgICAobGluZSAgNDIpCiogTS14IGVnbG90LXNodXRkb3duLWFsbDog ICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUgIDU3KQoqIE0teCBlZ2xv dC1zaWduYWwtZGlkQ2hhbmdlQ29uZmlndXJhdGlvbjogRWdsb3QgQ29tbWFuZHMuICAgIChsaW5l IDEyOSkKKiBNLXggZWdsb3Qtc3RkZXJyLWJ1ZmZlcjogICAgICAgICAgICAgICBFZ2xvdCBDb21t YW5kcy4gICAgICAobGluZSAxMjIpCiogbW9kZS1saW5lIGluZGljYXRpb24gb2YgbGFuZ3VhZ2Ug c2VydmVyOiBFZ2xvdCBhbmQgQnVmZmVycy4gKGxpbmUgIDUzKQoqIG1vdXNlIGNsaWNrcyBvbiBt b2RlLWxpbmUsIGFuZCBFZ2xvdDogIEVnbG90IGFuZCBCdWZmZXJzLiAgIChsaW5lICA1MykKKiBv bi10aGUtZmx5IGRpYWdub3N0aWNzIHVzaW5nIEVnbG90OiAgICBFZ2xvdCBDb21tYW5kcy4gICAg ICAobGluZSAxNTQpCiogcGVyZm9ybWFuY2UgcHJvYmxlbXMsIHdpdGggRWdsb3Q6ICAgICAgUGVy Zm9ybWFuY2UuICAgICAgICAgKGxpbmUgICA2KQoqIHByb2dyZXNzOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEN1c3RvbWl6aW5nIEVnbG90LiAgIChsaW5lICA2MykKKiBwcm9qZWN0cyBh bmQgRWdsb3Q6ICAgICAgICAgICAgICAgICAgICBFZ2xvdCBhbmQgQnVmZmVycy4gICAobGluZSAg IDYpCiogcXVpY2sgc3RhcnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVpY2sgU3RhcnQu ICAgICAgICAgKGxpbmUgICA2KQoqIHNldHRpbmcgdXAgTFNQIHNlcnZlciBmb3IgRWdsb3Q6ICAg ICAgIFNldHRpbmcgVXAgTFNQIFNlcnZlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUgICA2KQoqIHNodXR0aW5nIGRv d24gTFNQIHNlcnZlcjogICAgICAgICAgICAgIFNodXR0aW5nIERvd24gTFNQIFNlcnZlcnMuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxpbmUgICA2KQoqIHN0YXJ0aW5nIEVnbG90OiAgICAgICAgICAgICAgICAgICAgICAgIFN0 YXJ0aW5nIEVnbG90LiAgICAgIChsaW5lICAgNikKKiBzeW1ib2wgY29tcGxldGlvbiB1c2luZyBF Z2xvdDogICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAxNjkpCiogdHJvdWJsZXNo b290aW5nIEVnbG90OiAgICAgICAgICAgICAgICAgVHJvdWJsZXNob290aW5nIEVnbG90LgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsaW5lICAgNikKKiB1cGdyYWRpbmcgRWdsb3Q6ICAgICAgICAgICAgICAgICAgICAgICBHZXR0 aW5nIHRoZSBsYXRlc3QgdmVyc2lvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZSAgIDYpCiogdmFyaWFibGVzLCBFZ2xv dDogICAgICAgICAgICAgICAgICAgICAgRWdsb3QgVmFyaWFibGVzLiAgICAgKGxpbmUgICA2KQoq IHdvcmtzcGFjZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVnbG90IGFuZCBCdWZmZXJz LiAgIChsaW5lICAgNikKKiB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbjogICAgICAgICAgICAgICBQ cm9qZWN0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUgICA2KQoqIHhyZWYsIGFu ZCBFZ2xvdDogICAgICAgICAgICAgICAgICAgICAgIEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5l IDE2MSkKCgofClRhZyBUYWJsZToKTm9kZTogVG9wfzg5NgpSZWY6IFRvcC1Gb290bm90ZS0xfzM0 ODAKTm9kZTogUXVpY2sgU3RhcnR/MzU1NQpOb2RlOiBFZ2xvdCBhbmQgTFNQIFNlcnZlcnN/NjA4 OQpOb2RlOiBTZXR0aW5nIFVwIExTUCBTZXJ2ZXJzfzY1MTAKTm9kZTogU3RhcnRpbmcgRWdsb3R/ MTE3NDIKTm9kZTogU2h1dHRpbmcgRG93biBMU1AgU2VydmVyc38xNDQwOApOb2RlOiBVc2luZyBF Z2xvdH8xNTk1NgpOb2RlOiBFZ2xvdCBGZWF0dXJlc38xNjM0NQpOb2RlOiBFZ2xvdCBhbmQgQnVm ZmVyc38yMDczNApOb2RlOiBFZ2xvdCBDb21tYW5kc38yNjQyNgpOb2RlOiBFZ2xvdCBWYXJpYWJs ZXN/MzQzMTkKTm9kZTogQ3VzdG9taXppbmcgRWdsb3R/Mzg2NTEKTm9kZTogQWR2YW5jZWQgc2Vy dmVyIGNvbmZpZ3VyYXRpb25/NDE1NzEKTm9kZTogUHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0 aW9ufzQzNTY3Ck5vZGU6IFVzZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbn80OTQ3MQpOb2RlOiBK U09OUlBDIG9iamVjdHMgaW4gRWxpc3B/NTE5MjMKTm9kZTogRXh0ZW5kaW5nIEVnbG90fzUzNDYz Ck5vZGU6IFRyb3VibGVzaG9vdGluZyBFZ2xvdH82MDE5MQpOb2RlOiBQZXJmb3JtYW5jZX82MDk2 NgpOb2RlOiBHZXR0aW5nIHRoZSBsYXRlc3QgdmVyc2lvbn82MTg1MgpOb2RlOiBSZXBvcnRpbmcg YnVnc382Mjk3MApOb2RlOiBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2V/NjcyNTkKTm9k ZTogSW5kZXh/OTI0MjIKHwpFbmQgVGFnIFRhYmxlCgofCkxvY2FsIFZhcmlhYmxlczoKY29kaW5n OiB1dGYtOApFbmQ6CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVn bG90LTEuMTcvZGlyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAA MDAwMTc1MAAwMDAwMDAwMTE3NQAxNDY3MTU0MDA3MAAwMTI2MjEAIDAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABwaGlsaXAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVGhp cyBpcyB0aGUgZmlsZSAuLi4vaW5mby9kaXIsIHdoaWNoIGNvbnRhaW5zIHRoZQp0b3Btb3N0IG5v ZGUgb2YgdGhlIEluZm8gaGllcmFyY2h5LCBjYWxsZWQgKGRpcilUb3AuClRoZSBmaXJzdCB0aW1l IHlvdSBpbnZva2UgSW5mbyB5b3Ugc3RhcnQgb2ZmIGxvb2tpbmcgYXQgdGhpcyBub2RlLgofCkZp bGU6IGRpciwJTm9kZTogVG9wCVRoaXMgaXMgdGhlIHRvcCBvZiB0aGUgSU5GTyB0cmVlCgogIFRo aXMgKHRoZSBEaXJlY3Rvcnkgbm9kZSkgZ2l2ZXMgYSBtZW51IG9mIG1ham9yIHRvcGljcy4KICBU eXBpbmcgInEiIGV4aXRzLCAiSCIgbGlzdHMgYWxsIEluZm8gY29tbWFuZHMsICJkIiByZXR1cm5z IGhlcmUsCiAgImgiIGdpdmVzIGEgcHJpbWVyIGZvciBmaXJzdC10aW1lcnMsCiAgIm1FbWFjczxS ZXR1cm4+IiB2aXNpdHMgdGhlIEVtYWNzIG1hbnVhbCwgZXRjLgoKICBJbiBFbWFjcywgeW91IGNh biBjbGljayBtb3VzZSBidXR0b24gMiBvbiBhIG1lbnUgaXRlbSBvciBjcm9zcyByZWZlcmVuY2UK ICB0byBzZWxlY3QgaXQuCgoqIE1lbnU6CgpFbWFjcyBtaXNjIGZlYXR1cmVzCiogRWdsb3Q6IChl Z2xvdCkuICAgICAgICAgICAgICAgTGFuZ3VhZ2UgU2VydmVyIFByb3RvY29sIGNsaWVudCBmb3Ig RW1hY3MuCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVnbG90 LTEuMTcvZWdsb3QtcGtnLmVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAw MTc1MAAwMDAwMDAwMTAyNAAxNDY3MTU0MDA3MAAwMTQzMjQAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABwaGlsaXAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzsgR2Vu ZXJhdGVkIHBhY2thZ2UgZGVzY3JpcHRpb24gZnJvbSBlZ2xvdC5lbCAgLSotIG5vLWJ5dGUtY29t cGlsZTogdCAtKi0KKGRlZmluZS1wYWNrYWdlICJlZ2xvdCIgIjEuMTciICJUaGUgRW1hY3MgQ2xp ZW50IGZvciBMU1Agc2VydmVycyIgJygoZW1hY3MgIjI2LjMiKSAoanNvbnJwYyAiMS4wLjI0Iikg KGZseW1ha2UgIjEuMi4xIikgKHByb2plY3QgIjAuOS44IikgKHhyZWYgIjEuNi4yIikgKGVsZG9j ICIxLjE0LjAiKSAoc2VxICIyLjIzIikgKGV4dGVybmFsLWNvbXBsZXRpb24gIjAuMSIpKSA6Y29t bWl0ICJiMDE0YmNhODMzYTE3ZjViMjI1OGU4ODExNWYwM2NmZmE5ODNkMGJkIiA6YXV0aG9ycyAn KCgiSm/Do28gVMOhdm9yYSIgLiAiam9hb3Rhdm9yYUBnbWFpbC5jb20iKSkgOm1haW50YWluZXIg JygiSm/Do28gVMOhdm9yYSIgLiAiam9hb3Rhdm9yYUBnbWFpbC5jb20iKSA6a2V5d29yZHMgJygi Y29udmVuaWVuY2UiICJsYW5ndWFnZXMiKSA6dXJsICJodHRwczovL2dpdGh1Yi5jb20vam9hb3Rh dm9yYS9lZ2xvdCIpCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= --=-=-= Content-Type: text/plain The changes has been pushed to elpa.git. Thanks! > [1]: https://elpa.gnu.org/packages/eglot-1.17.tar > [2]: https://elpa.gnu.org/packages/erc-5.6.tar > [3]: https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/elpa-packages?id=51936a29b693bfc5f4f92e365b485a7c547b2ac1#n270 > > > > > > -- Philip Kaludercic on icterid --=-=-=-- ------------=_1726403402-4732-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 14 Sep 2024 01:48:31 +0000 Received: from localhost ([127.0.0.1]:44496 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spHtn-0008PC-3m for submit@debbugs.gnu.org; Fri, 13 Sep 2024 21:48:31 -0400 Received: from lists.gnu.org ([209.51.188.17]:49832) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spHtl-0008P2-5N for submit@debbugs.gnu.org; Fri, 13 Sep 2024 21:48:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1spHtb-0000Or-11 for bug-gnu-emacs@gnu.org; Fri, 13 Sep 2024 21:48:19 -0400 Received: from mail.linj.tech ([5.255.109.209]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1spHtZ-0002Ro-GR for bug-gnu-emacs@gnu.org; Fri, 13 Sep 2024 21:48:18 -0400 From: Lin Jian DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linj.tech; s=mail; t=1726278493; bh=UIRJ9Ugsxk1zzCZe/BiM2Xssv1+30yG/o/eOhlQSK5g=; h=From:To:Subject:Date; b=UK/PKMMvgJel9el1yGwDNq1pB2U5oW0YYm+CX5UoNjYaEbUXf2+Nbaw/lkd8+Rz6F EXXcQvi85231jzxrL+u0rF6TaxkrSdvts1hNa2iFEnTrETJypIQhGemM8/R+5xNYtS vC3cZ7MrkfntpRRYHT28LC+wlDXZCcG7WFfm6r3n7gpVXpRy67pf1Fl2uRJc9QqAqE RWFO7V5JKeYO+qv7dagpY5iWiqUaj/LtkPZVfXtDu6jh7Yw1SnhDKbP1V85FImfy4q xL2Yj2BW20HxpvyjTd6fJO1sIvgA/iZ2C3TeWPMDsKHCZs0LCbx5/pxC1hK2P8/xhM Sy/FOqOoGNtQA== To: bug-gnu-emacs@gnu.org Subject: 29.3; Eglot GNU ELPA tarball does not contain an info manual Date: Sat, 14 Sep 2024 09:47:55 +0800 Message-ID: <87v7yzvwdw.fsf@linj.tech> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=5.255.109.209; envelope-from=me@linj.tech; helo=mail.linj.tech X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) Eglot GNU ELPA tarball[1] does not contain an info manual. Others package tarballs, such as erc[2], do contain an info manual. Adding :doc "eglot.texi" to elpa-packages[3] should fix this. [1]: https://elpa.gnu.org/packages/eglot-1.17.tar [2]: https://elpa.gnu.org/packages/erc-5.6.tar [3]: https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/elpa-packages?id=51936a29b693bfc5f4f92e365b485a7c547b2ac1#n270 ------------=_1726403402-4732-1-- From unknown Fri Aug 15 16:22:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual Resent-From: Lin Jian Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 15 Sep 2024 12:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 73241 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 73241@debbugs.gnu.org Received: via spool by 73241-submit@debbugs.gnu.org id=B73241.17264044008566 (code B ref 73241); Sun, 15 Sep 2024 12:47:02 +0000 Received: (at 73241) by debbugs.gnu.org; 15 Sep 2024 12:46:40 +0000 Received: from localhost ([127.0.0.1]:48589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spoeG-0002E6-6l for submit@debbugs.gnu.org; Sun, 15 Sep 2024 08:46:40 -0400 Received: from mail.linj.tech ([5.255.109.209]:46230) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spoeE-0002Dx-Ug for 73241@debbugs.gnu.org; Sun, 15 Sep 2024 08:46:39 -0400 From: Lin Jian DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linj.tech; s=mail; t=1726404385; bh=AtGko3sV14kwwB0XdaYOBZUJkHaE4QN6gdEyK+fR1lo=; h=From:To:Subject:In-Reply-To:References:CC:Date; b=MZs5MeqYbBdfF1mkMAH4akwTyqGTawVcau1aFvNYuutMpZ6PKVCMU5Uqwl6mMpE0N 4+NsUXm1ARqwIrUdyqjmLOJU2Ny2HD+GmYjTF72anqj77/ccnsi08XTuArw4PtC0m7 akDInQIShB8e8J1gTLG1wa5HBjsUXprQBZUr4PuNp6tMnFuX+t2N1QhtcgvX4z/bNx 0S0wwFHwmuoTwN06I498fyUo9Hi4nQTS+50pdeOtcHmWKGSm5dR83vLGDMGL19R3On mLjXxnMdsZdbx2KMNSeA1t+INmsFqMAk0LYYXdr7yhH8t8WpWWxpp5QluFmFRXlvTP UxWsqKrQOZilw== In-Reply-To: <87a5g9ksmb.fsf@posteo.net> (Philip Kaludercic's message of "Sun, 15 Sep 2024 12:29:16 +0000") References: <87v7yzvwdw.fsf@linj.tech> <87a5g9ksmb.fsf@posteo.net> Date: Sun, 15 Sep 2024 20:46:15 +0800 Message-ID: <87o74pw0dk.fsf@linj.tech> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Philip Kaludercic writes: Thanks! May I ask when tarballs containing that fix will appear on GNU ELPA and GNU-devel ELPA? From unknown Fri Aug 15 16:22:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 15 Sep 2024 14:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 73241 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Lin Jian Cc: 73241@debbugs.gnu.org Received: via spool by 73241-submit@debbugs.gnu.org id=B73241.172640993129745 (code B ref 73241); Sun, 15 Sep 2024 14:19:02 +0000 Received: (at 73241) by debbugs.gnu.org; 15 Sep 2024 14:18:51 +0000 Received: from localhost ([127.0.0.1]:50414 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spq5T-0007jh-5M for submit@debbugs.gnu.org; Sun, 15 Sep 2024 10:18:51 -0400 Received: from mout02.posteo.de ([185.67.36.66]:34785) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spq5Q-0007jO-Ax for 73241@debbugs.gnu.org; Sun, 15 Sep 2024 10:18:49 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id BE1BB240103 for <73241@debbugs.gnu.org>; Sun, 15 Sep 2024 16:18:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1726409909; bh=eQ2RoimBBIHbSxWazjgPiRQJ/NNk5TDndCoQDxO+Cbg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: From; b=kirZMp0bUFU6mG24FfYXQXgasC4wJ/zVZ/E2BFMFvrRXxdvQJQLs5ifp9v3iTZIDH kymIYV0JQT6QQ54syshIUdvUDTX9G17QhjlyHyZdXfBvmEd003NTAo6BFLrAv6t7W+ e0P+c3ixCUU+zpVOXTsUxC+qpHAERtL9UJuC3iyKno3XabamikR9T0fmVVCHrz01cS SVWQ3W0lvw4NloixEHSlgf3djgg+ZH1eHuuyyqQVyaNUQ9zqeo6vevcTpn3+Wxc1yZ 8zV1gbgDnuDW1r1XMQzIPERaMPsbli5A9VupV5qsAzRyyYNwinzJ+6eckuszQW+3Nu IprRolf2WWwGg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4X69BY1pfFz9rxG; Sun, 15 Sep 2024 16:18:29 +0200 (CEST) From: Philip Kaludercic In-Reply-To: <87o74pw0dk.fsf@linj.tech> (Lin Jian's message of "Sun, 15 Sep 2024 20:46:15 +0800") References: <87v7yzvwdw.fsf@linj.tech> <87a5g9ksmb.fsf@posteo.net> <87o74pw0dk.fsf@linj.tech> X-Hashcash: 1:20:240915:me@linj.tech::lEwoWED0XM+bEHVA:0FNy X-Hashcash: 1:20:240915:73241@debbugs.gnu.org::LeoMFgXf4apvdZ1S:7eeN Date: Sun, 15 Sep 2024 14:18:28 +0000 Message-ID: <874j6hknkb.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Lin Jian writes: > Philip Kaludercic writes: > > Thanks! > > May I ask when tarballs containing that fix will appear on GNU ELPA and > GNU-devel ELPA? It should appear on ELPA-devel when the eglot.el is changed, and on regular ELPA when a new release is made. If you think that this is important enough, one could consider a point-release, but we should double-check with the Eglot maintainers on that one. -- Philip Kaludercic on icterid From unknown Fri Aug 15 16:22:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual Resent-From: Lin Jian Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 15 Sep 2024 21:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 73241 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Philip Kaludercic Cc: 73241@debbugs.gnu.org Received: via spool by 73241-submit@debbugs.gnu.org id=B73241.172643681927809 (code B ref 73241); Sun, 15 Sep 2024 21:47:02 +0000 Received: (at 73241) by debbugs.gnu.org; 15 Sep 2024 21:46:59 +0000 Received: from localhost ([127.0.0.1]:50635 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spx59-0007ET-G4 for submit@debbugs.gnu.org; Sun, 15 Sep 2024 17:46:59 -0400 Received: from mail.linj.tech ([5.255.109.209]:59342) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spx58-0007EK-4C for 73241@debbugs.gnu.org; Sun, 15 Sep 2024 17:46:58 -0400 From: Lin Jian DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linj.tech; s=mail; t=1726436804; bh=iTJgvX7wntr8cmuOsiEQHnZAw74h47uV1v4k22AqEr8=; h=From:To:Subject:In-Reply-To:References:CC:Date; b=ugmg6DwDxQWqK67N+iEtpRB8yAPLwULRvpdrF4hxVJKwByHqM+Pr2tkK9fs9+pnDl 8Cedeur65TQXPq0Ki2crqFOf1xjvI264mjOGcE5QQGr+4PuFl64JA50swYqtYmjAf2 RSOflwCfQyOtIzJNZsjax814mypMbJLVr8Wltp26tEuHDOZ72x1p57n7AnjFKbH0VP mWoHGmpdl1LRdHH+Wgd6e7ShF7/av/lkEVPE3/p39T2IVnQfXiJMxvWZKinipWp8TF 6/eIdjT7k5kaSh3VG/6nRzJ2OcgmGl/ZD0/NW064fSDC3/QTjAxxgxggfe/i3AIFJS 6jQOuicjO4yKQ== In-Reply-To: <874j6hknkb.fsf@posteo.net> (Philip Kaludercic's message of "Sun, 15 Sep 2024 14:18:28 +0000") References: <87v7yzvwdw.fsf@linj.tech> <87a5g9ksmb.fsf@posteo.net> <87o74pw0dk.fsf@linj.tech> <874j6hknkb.fsf@posteo.net> Date: Mon, 16 Sep 2024 05:46:28 +0800 Message-ID: <87h6agwpxn.fsf@linj.tech> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I do not think missing info manual is a big issue. I ask when the fix is available out of curiosity. Thanks for the info.