From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1REfli-0000Hl-Jw for garchives@archives.gentoo.org; Fri, 14 Oct 2011 11:17:42 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 3B2E221C063; Fri, 14 Oct 2011 11:17:12 +0000 (UTC) Received: from mail-vw0-f53.google.com (mail-vw0-f53.google.com [209.85.212.53]) by pigeon.gentoo.org (Postfix) with ESMTP id 06A4121C02F for ; Fri, 14 Oct 2011 11:14:51 +0000 (UTC) Received: by vws19 with SMTP id 19so1409031vws.40 for ; Fri, 14 Oct 2011 04:14:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=ymvoX1eqJk8N/4oHwbhmAKFVOU676jhXVxnq75if4Ww=; b=w1BTrtZ6pXyO69xN50FlHR3ejPro02K0/6/G0ZXwxt1po2TeIM7YXUoKDOsUKiwSRr 7OhkZCwSd3MAWAKqGmiKZfA3QAWBlVyEsGjalwpA5Nsvca1Alm1W+smGYjLGdYCarZf1 0nPqvPv+a3GfPONcLY/+D2WM66IVtJ816t3gw= Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org MIME-Version: 1.0 Received: by 10.52.37.10 with SMTP id u10mr8025171vdj.57.1318590891461; Fri, 14 Oct 2011 04:14:51 -0700 (PDT) Received: by 10.52.188.37 with HTTP; Fri, 14 Oct 2011 04:14:51 -0700 (PDT) Date: Fri, 14 Oct 2011 13:14:51 +0200 Message-ID: Subject: [gentoo-user] How to cross compile Perl for ARM? From: czernitko To: gentoo-user@lists.gentoo.org Content-Type: multipart/mixed; boundary=20cf307cfd40b08ae704af405dc2 X-Archives-Salt: X-Archives-Hash: 8ff6dd3a225f06596796139c41995cd4 --20cf307cfd40b08ae704af405dc2 Content-Type: multipart/alternative; boundary=20cf307cfd40b08ae304af405dc0 --20cf307cfd40b08ae304af405dc0 Content-Type: text/plain; charset=ISO-8859-1 Hello! I started playing a little bit with cross compilation for ARM architecture. Using crossdev I created a toolchain for arm-none-linux-gnueabi tuple. Now I'd like to emerge some more packages, but perl constantly refuses to emerge and it is needed by many packages. For example when running # arm-none-linux-gnueabi-emerge -av1 perl [ebuild N ] dev-lang/perl-5.12.4-r1 to /usr/arm-none-linux-gnueabi/ USE="berkdb gdbm -build -debug -doc -ithreads" 0 kB [ebuild N ] app-admin/perl-cleaner-2.10 to /usr/arm-none-linux-gnueabi/ 0 kB it fails right in configure phase. Relevant logs are attached, except for configure log which I couldn't find. When I've read through /usr/arm-none-linux-gnueabi/tmp/portage/dev-lang/perl-5.12.4-r1/work/perl-5.12.4/Cross/README which is aimed to give more instructions for cross compiling, I've found out that I should run "make patch && make" from Cross directory. Unfortunately, I've got no clue how to combine that with the whole emerge process? I know I could compile it by hand, but then portage would not know that perl is already installed and it would try to install it anyway... Any help would be highly appreciated! Peter --20cf307cfd40b08ae304af405dc0 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello!
I started playing a little bit with cross compilation for ARM arc= hitecture. Using crossdev I created a toolchain for arm-none-linux-gnueabi = tuple.
Now I'd like to emerge some more packages, but perl constantl= y refuses to emerge and it is needed by many packages.
For example when running

# arm-none-linux-gnueabi-emerge -av1 perl<= br>
[ebuild=A0 N=A0=A0=A0=A0 ] dev-lang/perl-5.12.4-r1 to /usr/arm-none-= linux-gnueabi/ USE=3D"berkdb gdbm -build -debug -doc -ithreads" 0= kB
[ebuild=A0 N=A0=A0=A0=A0 ] app-admin/perl-cleaner-2.10 to /usr/arm-n= one-linux-gnueabi/ 0 kB

it fails right in configure phase.
Relevant logs are attached, excep= t for configure log which I couldn't find.

When I've read th= rough /usr/arm-none-linux-gnueabi/tmp/portage/dev-lang/perl-5.12.4-r1/work/= perl-5.12.4/Cross/README which is aimed to give more instructions for cross= compiling,
I've found out that I should run "make patch && make"= from Cross directory. Unfortunately, I've got no clue how to combine t= hat with the whole emerge process? I know I could compile it by hand, but t= hen portage would not know that perl is already installed and it would try = to install it anyway...

Any help would be highly appreciated!
Peter
--20cf307cfd40b08ae304af405dc0-- --20cf307cfd40b08ae704af405dc2 Content-Type: text/plain; name="build.log" Content-Disposition: attachment; filename="build.log" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtr2ldsg0 G1szMjswMW0gKiAbWzM5OzQ5OzAwbVBhY2thZ2U6ICAgIGRldi1sYW5nL3BlcmwtNS4xMi40LXIx ChtbMzI7MDFtICogG1szOTs0OTswMG1SZXBvc2l0b3J5OiBnZW50b28KG1szMjswMW0gKiAbWzM5 OzQ5OzAwbU1haW50YWluZXI6IHBlcmxAZ2VudG9vLm9yZwobWzMyOzAxbSAqIBtbMzk7NDk7MDBt VVNFOiAgICAgICAgYXJtIGJlcmtkYiBlbGliY19nbGliYyBnZGJtIGtlcm5lbF9saW51eCB1c2Vy bGFuZF9HTlUKG1szMjswMW0gKiAbWzM5OzQ5OzAwbUZFQVRVUkVTOiAgIHNhbmRib3gKPj4+IFVu cGFja2luZyBzb3VyY2UuLi4KPj4+IFVucGFja2luZyBwZXJsLTUuMTIuNC50YXIuYnoyIHRvIC91 c3IvYXJtLW5vbmUtbGludXgtZ251ZWFiaS90bXAvcG9ydGFnZS9kZXYtbGFuZy9wZXJsLTUuMTIu NC1yMS93b3JrCj4+PiBVbnBhY2tpbmcgcGVybC01LjEyLjQtMS50YXIuYnoyIHRvIC91c3IvYXJt LW5vbmUtbGludXgtZ251ZWFiaS90bXAvcG9ydGFnZS9kZXYtbGFuZy9wZXJsLTUuMTIuNC1yMS93 b3JrCj4+PiBTb3VyY2UgdW5wYWNrZWQgaW4gL3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3Rt cC9wb3J0YWdlL2Rldi1sYW5nL3BlcmwtNS4xMi40LXIxL3dvcmsKPj4+IFByZXBhcmluZyBzb3Vy Y2UgaW4gL3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3RtcC9wb3J0YWdlL2Rldi1sYW5nL3Bl cmwtNS4xMi40LXIxL3dvcmsvcGVybC01LjEyLjQgLi4uCiAbWzMyOzAxbSobWzBtIEFwcGx5aW5n IHZhcmlvdXMgcGF0Y2hlcyAoYnVnZml4ZXMvdXBkYXRlcykgLi4uCiAbWzMyOzAxbSobWzBtICAg MDAwMS1nZW50b29fTWFrZU1ha2VyLVJVTlBBVEguZGlmZiAuLi4KG1tBG1sxODRDIBtbMzQ7MDFt WyAbWzMyOzAxbW9rG1szNDswMW0gXRtbMG0KIBtbMzI7MDFtKhtbMG0gICAwMDAyLWdlbnRvb19j b25maWdfX292ZXIuZGlmZiAuLi4KG1tBG1sxODRDIBtbMzQ7MDFtWyAbWzMyOzAxbW9rG1szNDsw MW0gXRtbMG0KIBtbMzI7MDFtKhtbMG0gICAwMDAzLWdlbnRvb19jcGFuX19kZWZpbnN0YWxsZGly cy5kaWZmIC4uLgobW0EbWzE4NEMgG1szNDswMW1bIBtbMzI7MDFtb2sbWzM0OzAxbSBdG1swbQog G1szMjswMW0qG1swbSAgIDAwMDQtZ2VudG9vX2NwYW5wbHVzX19kZWZpbnN0YWxsZGlycy5kaWZm IC4uLgobW0EbWzE4NEMgG1szNDswMW1bIBtbMzI7MDFtb2sbWzM0OzAxbSBdG1swbQogG1szMjsw MW0qG1swbSAgIDAwMDUtZ2VudG9vX2NyZWF0ZS1saWJwZXJsLXNvbmFtZS5kaWZmIC4uLgobW0Eb WzE4NEMgG1szNDswMW1bIBtbMzI7MDFtb2sbWzM0OzAxbSBdG1swbQogG1szMjswMW0qG1swbSAg IDAwMDYtZ2VudG9vX01ha2VNYWtlci1kZWxldGVfX3BhY2tsaXN0LmRpZmYgLi4uChtbQRtbMTg0 QyAbWzM0OzAxbVsgG1szMjswMW1vaxtbMzQ7MDFtIF0bWzBtCiAbWzMyOzAxbSobWzBtICAgMDAw Ny1maXhlc184ZDY2YjNmOV9faDJocF9fZml4LmRpZmYgLi4uChtbQRtbMTg0QyAbWzM0OzAxbVsg G1szMjswMW1vaxtbMzQ7MDFtIF0bWzBtCiAbWzMyOzAxbSobWzBtICAgMDAwOC1maXhlc19mMTc4 YjAzYl9faDJwaF9fdXNpbmdfX2RlcHJlY2F0ZWRfX2dvdG8uZGlmZiAuLi4KG1tBG1sxODRDIBtb MzQ7MDFtWyAbWzMyOzAxbW9rG1szNDswMW0gXRtbMG0KIBtbMzI7MDFtKhtbMG0gICAwMDA5LWdl bnRvb19tb2QtcGF0aHMuZGlmZiAuLi4KG1tBG1sxODRDIBtbMzQ7MDFtWyAbWzMyOzAxbW9rG1sz NDswMW0gXRtbMG0KIBtbMzI7MDFtKhtbMG0gICAwMDEwLWdlbnRvb19lbmMyeHMuZGlmZiAuLi4K G1tBG1sxODRDIBtbMzQ7MDFtWyAbWzMyOzAxbW9rG1szNDswMW0gXRtbMG0KIBtbMzI7MDFtKhtb MG0gICAwMDExLWdlbnRvb19JTy1Db21wcmVzc19fQXV0b0xvYWRlcl9fZHJvcHBlZF9fZnJvbV9f Q29tcHJlc3MtWmxpYi5kaWZmIC4uLgobW0EbWzE4NEMgG1szNDswMW1bIBtbMzI7MDFtb2sbWzM0 OzAxbSBdG1swbQogG1szMjswMW0qG1swbSAgIDAwMTItZ2VudG9vX2Ryb3AtZnN0YWNrLXByb3Rl Y3Rvci5kaWZmIC4uLgobW0EbWzE4NEMgG1szNDswMW1bIBtbMzI7MDFtb2sbWzM0OzAxbSBdG1sw bQogG1szMjswMW0qG1swbSBEb25lIHdpdGggcGF0Y2hpbmcKPj4+IFNvdXJjZSBwcmVwYXJlZC4K Pj4+IENvbmZpZ3VyaW5nIHNvdXJjZSBpbiAvdXNyL2FybS1ub25lLWxpbnV4LWdudWVhYmkvdG1w L3BvcnRhZ2UvZGV2LWxhbmcvcGVybC01LjEyLjQtcjEvd29yay9wZXJsLTUuMTIuNCAuLi4KRmly c3QgbGV0J3MgbWFrZSBzdXJlIHlvdXIga2l0IGlzIGNvbXBsZXRlLiAgQ2hlY2tpbmcuLi4KTG9j YXRpbmcgY29tbW9uIHByb2dyYW1zLi4uCkNoZWNraW5nIGNvbXBhdGliaWxpdHkgYmV0d2VlbiAv YmluL2VjaG8gYW5kIGJ1aWx0aW4gZWNobyAoaWYgYW55KS4uLgpTeW1ib2xpYyBsaW5rcyBhcmUg c3VwcG9ydGVkLgpDaGVja2luZyBob3cgdG8gdGVzdCBmb3Igc3ltYm9saWMgbGlua3MuLi4KWW91 IGNhbiB0ZXN0IGZvciBzeW1ib2xpYyBsaW5rcyB3aXRoICd0ZXN0IC1oJy4KR29vZCwgeW91ciB0 ciBzdXBwb3J0cyBbOmxvd2VyOl0gYW5kIFs6dXBwZXI6XSB0byBjb252ZXJ0IGNhc2UuClVzaW5n IFs6dXBwZXI6XSBhbmQgWzpsb3dlcjpdIHRvIGNvbnZlcnQgY2FzZS4KM2IxICAgCSAgICAgIGRv c19kamdwcCAgICAgICBpcml4XzYgICAgICAgICAgb3BlbmJzZCAgICAgICBzdW5vc180XzEgICAK YWl4ICAgCSAgICAgIGRyYWdvbmZseSAgICAgICBpcml4XzZfMCAgICAgICAgb3B1cyAgIAkgICAg c3VwZXItdXggICAKYWl4XzMgICAgICAgICBkeW5peCAgIAkgICAgICBpcml4XzZfMSAgICAgICAg b3MyICAgCSAgICBzdnI0ICAgCmFpeF80ICAgICAgICAgZHluaXhwdHggICAgICAgIGlzYyAgIAkg ICAgICBvczM5MCAgIAkgICAgc3ZyNSAgIAphbHRvczQ4NiAgICAgIGVwaXggICAJICAgICAgaXNj XzIgICAJICAgICAgb3M0MDAgICAJICAgIHRpMTUwMCAgIAphbWlnYW9zICAgICAgIGVzaXg0ICAg CSAgICAgIGxpbnV4ICAgCSAgICAgIHBvc2l4LWJjICAgICAgdGl0YW5vcyAgIAphcG9sbG8gICAg ICAgIGZwcyAgIAkgICAgICBseW54b3MgICAgICAgICAgcG93ZXJ1eCAgICAgICB1bHRyaXhfNCAg IAphdGhlb3MgICAgICAgIGZyZWVic2QgICAgICAgICBtaWRuaWdodGJzZCAgICAgcW54ICAgCSAg ICB1bWlwcyAgIAphdXhfMyAgICAgICAgIGdlbml4ICAgCSAgICAgIG1pcHMgICAJICAgICAgcmhh cHNvZHkgICAgICB1bmljb3MgICAKYmVvcyAgICAgICAgICBnbnUgICAJICAgICAgbWlyYnNkICAg ICAgICAgIHJpc2NvcyAgICAgICAgdW5pY29zbWsgICAKYnNkb3MgICAgICAgICBnbnVrZnJlZWJz ZCAgICAgbXBjICAgCSAgICAgIHNjbyAgIAkgICAgdW5pc3lzZHluaXggICAKY2F0YW1vdW50ICAg ICBnbnVrbmV0YnNkICAgICAgbXBlaXggICAJICAgICAgc2NvXzJfM18wICAgICB1dGVrdiAgIApj b252ZXhvcyAgICAgIGdyZWVuaGlsbHMgICAgICBuY3JfdG93ZXIgICAgICAgc2NvXzJfM18xICAg ICB1dHMgICAKY3h1eCAgICAgICAgICBoYWlrdSAgIAkgICAgICBuZXRic2QgICAgICAgICAgc2Nv XzJfM18yICAgICB1d2luICAgCmN5Z3dpbiAgICAgICAgaHB1eCAgIAkgICAgICBuZXdzb3M0ICAg ICAgICAgc2NvXzJfM18zICAgICB2bWVzYSAgIApkYXJ3aW4gICAgICAgIGkzODYgICAJICAgICAg bmV4dF8zICAgICAgICAgIHNjb18yXzNfNCAgICAgdm9zICAgCmRjb3N4ICAgICAgICAgaW50ZXJp eCAgICAgICAgIG5leHRfM18wICAgICAgICBzb2xhcmlzXzIgICAKZGVjX29zZiAgICAgICBpcml4 XzQgICAgICAgICAgbmV4dF80ICAgICAgICAgIHN0ZWxsYXIgICAKZGd1eCAgICAgICAgICBpcml4 XzUgICAgICAgICAgbm9uc3RvcHV4ICAgICAgIHN1bm9zXzRfMCAgIApXaGljaCBvZiB0aGVzZSBh cHBseSwgaWYgYW55PyBbbGludXhdICAKLi9oaW50cy9saW51eC5zaDogbGluZSAxOTQ6IC4vYS5v dXQ6IGNhbm5vdCBleGVjdXRlIGJpbmFyeSBmaWxlCgpZb3UgZG9uJ3QgaGF2ZSBhbiBFTEYgZ2Nj LiAgSSB3aWxsIHVzZSBkbGQgaWYgcG9zc2libGUuICBJZiB5b3UgYXJlCnVzaW5nIGEgdmVyc2lv biBvZiBETEQgZWFybGllciB0aGFuIDMuMi42LCBvciBkb24ndCBoYXZlIGl0IGF0IGFsbCwgeW91 CnNob3VsZCBwcm9iYWJseSB1cGdyYWRlLiBJZiB5b3UgYXJlIGZvcmNlZCB0byB1c2UgMy4yLjQs IHlvdSBzaG91bGQKdW5jb21tZW50IGEgY291cGxlIG9mIGxpbmVzIGluIGhpbnRzL2xpbnV4LnNo IGFuZCByZXN0YXJ0IENvbmZpZ3VyZSBzbwp0aGF0IHNoYXJlZCBsaWJyYXJpZXMgd2lsbCBiZSBk aXNhbGxvd2VkLgoKCkRpc2FibGluZyBuZGJtLiAgVGhpcyB3aWxsIGdlbmVyYXRlIGEgV2hvYSBU aGVyZSBtZXNzYWdlIGluIENvbmZpZ3VyZS4KUmVhZCBoaW50cy9saW51eC5zaCBmb3IgZnVydGhl ciBpbmZvcm1hdGlvbi4Kbm06IC91c3IvbGliL2xpYmRiLnNvOiBubyBzeW1ib2xzCm5tOiAvdXNy L2xpYjY0L2xpYmRiLnNvOiBubyBzeW1ib2xzCk9wZXJhdGluZyBzeXN0ZW0gbmFtZT8gW2xpbnV4 XSAgCk9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbj8gWzMuMC40LWhhcmRlbmVkLXIxXSAgCkluc3Rh bGxhdGlvbiBwcmVmaXggdG8gdXNlPyAofm5hbWUgb2spIFsvdXNyXSAgCkFGUyBkb2VzIG5vdCBz ZWVtIHRvIGJlIHJ1bm5pbmcuLi4KV2hhdCBpbnN0YWxsYXRpb24gcHJlZml4IHNob3VsZCBJIHVz ZSBmb3IgaW5zdGFsbGluZyBmaWxlcz8gKH5uYW1lIG9rKQpbL3Vzcl0gIApCdWlsZCBQZXJsIGZv ciBTT0NLUz8gW25dICAKVXNlIHRoZSBQZXJsSU8gYWJzdHJhY3Rpb24gbGF5ZXI/IFt5XSAgCkdl dHRpbmcgdGhlIGN1cnJlbnQgcGF0Y2hsZXZlbC4uLgpCdWlsZCBhIHRocmVhZGluZyBQZXJsPyBb bl0gIApCdWlsZCBQZXJsIGZvciBtdWx0aXBsaWNpdHk/IFtuXSAgClVzZSB3aGljaCBDIGNvbXBp bGVyPyBbYXJtLW5vbmUtbGludXgtZ251ZWFiaS1nY2NdICAKQ2hlY2tpbmcgZm9yIEdOVSBjYyBp biBkaXNndWlzZSBhbmQvb3IgaXRzIHZlcnNpb24gbnVtYmVyLi4uCkNvbmZpZ3VyZTogbGluZSA0 NTE5OiAuL3RyeTogY2Fubm90IGV4ZWN1dGUgYmluYXJ5IGZpbGUKTm93LCBob3cgY2FuIHdlIGZl ZWQgc3RhbmRhcmQgaW5wdXQgdG8geW91ciBDIHByZXByb2Nlc3Nvci4uLgpEaXJlY3RvcmllcyB0 byB1c2UgZm9yIGxpYnJhcnkgc2VhcmNoZXM/ClsvdXNyL2xvY2FsL2xpYiAvbGliLy4uL2xpYjY0 IC91c3IvbGliLy4uL2xpYjY0IC9saWIgL3Vzci9saWIgL2xpYjY0IC91c3IvbGliNjQgL3Vzci9s b2NhbC9saWI2NF0gIApXaGF0IGlzIHRoZSBmaWxlIGV4dGVuc2lvbiB1c2VkIGZvciBzaGFyZWQg bGlicmFyaWVzPyBbc2FdICAKVHJ5IHRvIHVzZSBsb25nIGRvdWJsZXMgaWYgYXZhaWxhYmxlPyBb bl0gIApDaGVja2luZyBmb3Igb3B0aW9uYWwgbGlicmFyaWVzLi4uCldoYXQgbGlicmFyaWVzIHRv IHVzZT8KWy1sbnNsIC1sZ2RibSAtbGRiIC1sZGwgLWxtIC1sY3J5cHQgLWx1dGlsIC1sYyAtbGdk Ym1fY29tcGF0XSAgCldoYXQgb3B0aW1pemVyL2RlYnVnZ2VyIGZsYWcgc2hvdWxkIGJlIHVzZWQ/ ClstTzIgLXBpcGUgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLUkvdXNyL2FybS1ub25lLWxpbnV4LWdu dWVhYmkvdXNyL2luY2x1ZGUvIC1JL3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL2luY2x1ZGUv XSAgCkFueSBhZGRpdGlvbmFsIGNjIGZsYWdzPyBbLURPVlJfREJMX0RJRz0xNF0gIApMZXQgbWUg Z3Vlc3Mgd2hhdCB0aGUgcHJlcHJvY2Vzc29yIGZsYWdzIGFyZS4uLgpBbnkgYWRkaXRpb25hbCBs ZCBmbGFncyAoTk9UIGluY2x1ZGluZyBsaWJyYXJpZXMpPwpbLUwvdXNyL2FybS1ub25lLWxpbnV4 LWdudWVhYmkvbGliIC1ML3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3Vzci9saWIgLUwvdXNy L2xvY2FsL2xpYl0gIApDaGVja2luZyB5b3VyIGNob2ljZSBvZiBDIGNvbXBpbGVyIGFuZCBmbGFn cyBmb3IgY29oZXJlbmN5Li4uCkkndmUgdHJpZWQgdG8gY29tcGlsZSBhbmQgcnVuIHRoZSBmb2xs b3dpbmcgc2ltcGxlIHByb2dyYW06CgojaW5jbHVkZSA8c3RkaW8uaD4KaW50IG1haW4oKSB7IHBy aW50ZigiT2tcbiIpOyByZXR1cm4oMCk7IH0KCkkgdXNlZCB0aGUgY29tbWFuZDoKCglhcm0tbm9u ZS1saW51eC1nbnVlYWJpLWdjYyAtbyB0cnkgLU8yIC1waXBlIC1mb21pdC1mcmFtZS1wb2ludGVy IC1JL3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3Vzci9pbmNsdWRlLyAtSS91c3IvYXJtLW5v bmUtbGludXgtZ251ZWFiaS9pbmNsdWRlLyAtRE9WUl9EQkxfRElHPTE0IC1ML3Vzci9hcm0tbm9u ZS1saW51eC1nbnVlYWJpL2xpYiAtTC91c3IvYXJtLW5vbmUtbGludXgtZ251ZWFiaS91c3IvbGli IC1ML3Vzci9sb2NhbC9saWIgdHJ5LmMgLWxuc2wgLWxnZGJtIC1sZGIgLWxkbCAtbG0gLWxjcnlw dCAtbHV0aWwgLWxjIC1sZ2RibV9jb21wYXQKCSAuL3RyeQoKYW5kIEkgZ290IHRoZSBmb2xsb3dp bmcgb3V0cHV0OgoKL2Jpbi9zaDogLi90cnk6IGNhbm5vdCBleGVjdXRlIGJpbmFyeSBmaWxlClRo ZSBwcm9ncmFtIGNvbXBpbGVkIE9LLCBidXQgZXhpdGVkIHdpdGggc3RhdHVzIDEyNi4KWW91IGhh dmUgYSBwcm9ibGVtLiAgU2hhbGwgSSBhYm9ydCBDb25maWd1cmUgW3ldICAKT2suICBTdG9wcGlu ZyBDb25maWd1cmUuCiAbWzMxOzAxbSobWzBtIEVSUk9SOiBkZXYtbGFuZy9wZXJsLTUuMTIuNC1y MSBmYWlsZWQgKGNvbmZpZ3VyZSBwaGFzZSk6CiAbWzMxOzAxbSobWzBtICAgVW5hYmxlIHRvIGNv bmZpZ3VyZQogG1szMTswMW0qG1swbSAKIBtbMzE7MDFtKhtbMG0gQ2FsbCBzdGFjazoKIBtbMzE7 MDFtKhtbMG0gICAgIGVidWlsZC5zaCwgbGluZSAgNTY6ICBDYWxsZWQgc3JjX2NvbmZpZ3VyZQog G1szMTswMW0qG1swbSAgIGVudmlyb25tZW50LCBsaW5lIDI4NDQ6ICBDYWxsZWQgZGllCiAbWzMx OzAxbSobWzBtIFRoZSBzcGVjaWZpYyBzbmlwcGV0IG9mIGNvZGU6CiAbWzMxOzAxbSobWzBtICAg ICAgIHNoIENvbmZpZ3VyZSAtZGVzIC1EdXNlc2hycGxpYiAtRGFyY2huYW1lPSIke215YXJjaH0i IC1EY2M9IiQodGMtZ2V0Q0MpIiAtRG9wdGltaXplPSIke0NGTEFHU30iIC1EbGRmbGFncz0iJHtM REZMQUdTfSIgLURwcmVmaXg9Jy91c3InIC1Ec2l0ZXByZWZpeD0nL3VzcicgLUR2ZW5kb3JwcmVm aXg9Jy91c3InIC1Ec2NyaXB0ZGlyPScvdXNyL2JpbicgLURwcml2bGliPSIke1BSSVZfTElCfSIg LURhcmNobGliPSIke0FSQ0hfTElCfSIgLURzaXRlbGliPSIke1NJVEVfTElCfSIgLURzaXRlYXJj aD0iJHtTSVRFX0FSQ0h9IiAtRHZlbmRvcmxpYj0iJHtWRU5ET1JfTElCfSIgLUR2ZW5kb3JhcmNo PSIke1ZFTkRPUl9BUkNIfSIgLURtYW4xZGlyPS91c3Ivc2hhcmUvbWFuL21hbjEgLURtYW4zZGly PS91c3Ivc2hhcmUvbWFuL21hbjMgLURzaXRlbWFuMWRpcj0vdXNyL3NoYXJlL21hbi9tYW4xIC1E c2l0ZW1hbjNkaXI9L3Vzci9zaGFyZS9tYW4vbWFuMyAtRHZlbmRvcm1hbjFkaXI9L3Vzci9zaGFy ZS9tYW4vbWFuMSAtRHZlbmRvcm1hbjNkaXI9L3Vzci9zaGFyZS9tYW4vbWFuMyAtRG1hbjFleHQ9 JzEnIC1EbWFuM2V4dD0nM3BtJyAtRGxpYnBlcmw9IiR7TElCUEVSTH0iIC1EbG9jaW5jcHRoPScg JyAtRHVzZWxhcmdlZmlsZXMgLURkX3NlbWN0bF9zZW11biAtRGNmX2J5PSdHZW50b28nIC1EbXlo b3N0bmFtZT0nbG9jYWxob3N0JyAtRHBlcmxhZG1pbj0ncm9vdEBsb2NhbGhvc3QnIC1EaW5zdGFs bHVzcmJpbnBlcmw9J24nIC1VZF9jc2ggLVV1c2VubSAiJHtteWNvbmZbQF19IiB8fCBkaWUgIlVu YWJsZSB0byBjb25maWd1cmUiCiAbWzMxOzAxbSobWzBtIAogG1szMTswMW0qG1swbSBJZiB5b3Ug bmVlZCBzdXBwb3J0LCBwb3N0IHRoZSBvdXRwdXQgb2YgJ2VtZXJnZSAtLWluZm8gPWRldi1sYW5n L3BlcmwtNS4xMi40LXIxJywKIBtbMzE7MDFtKhtbMG0gdGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBh bmQgdGhlIG91dHB1dCBvZiAnZW1lcmdlIC1wcXYgPWRldi1sYW5nL3BlcmwtNS4xMi40LXIxJy4K IBtbMzE7MDFtKhtbMG0gVGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBpcyBsb2NhdGVkIGF0ICcvdXNy L2FybS1ub25lLWxpbnV4LWdudWVhYmkvdG1wL3BvcnRhZ2UvZGV2LWxhbmcvcGVybC01LjEyLjQt cjEvdGVtcC9idWlsZC5sb2cnLgogG1szMTswMW0qG1swbSBUaGUgZWJ1aWxkIGVudmlyb25tZW50 IGZpbGUgaXMgbG9jYXRlZCBhdCAnL3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3RtcC9wb3J0 YWdlL2Rldi1sYW5nL3BlcmwtNS4xMi40LXIxL3RlbXAvZW52aXJvbm1lbnQnLgogG1szMTswMW0q G1swbSBTOiAnL3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3RtcC9wb3J0YWdlL2Rldi1sYW5n L3BlcmwtNS4xMi40LXIxL3dvcmsvcGVybC01LjEyLjQnCg== --20cf307cfd40b08ae704af405dc2 Content-Type: application/octet-stream; name=environment Content-Disposition: attachment; filename=environment Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtr2ljv11 ZGVjbGFyZSAteCBBTFNBX0NBUkRTPSIiCmRlY2xhcmUgLXggQUxTQV9QQ01fUExVR0lOUz0iYWRw Y20gYWxhdyBhc3ltIGNvcHkgZG1peCBkc2hhcmUgZHNub29wIGVtcHR5IGV4dHBsdWcgZmlsZSBo b29rcyBpZWM5NTggaW9wbHVnIGxhZHNwYSBsZmxvYXQgbGluZWFyIG1ldGVyIG1tYXBfZW11bCBt dWxhdyBtdWx0aSBudWxsIHBsdWcgcmF0ZSByb3V0ZSBzaGFyZSBzaG0gc29mdHZvbCIKZGVjbGFy ZSAteCBBTlRfSE9NRT0iL3Vzci9zaGFyZS9hbnQiCmRlY2xhcmUgLXggQVBBQ0hFMl9NT0RVTEVT PSJhY3Rpb25zIGFsaWFzIGF1dGhfYmFzaWMgYXV0aG5fYWxpYXMgYXV0aG5fYW5vbiBhdXRobl9k Ym0gYXV0aG5fZGVmYXVsdCBhdXRobl9maWxlIGF1dGh6X2RibSBhdXRoel9kZWZhdWx0IGF1dGh6 X2dyb3VwZmlsZSBhdXRoel9ob3N0IGF1dGh6X293bmVyIGF1dGh6X3VzZXIgYXV0b2luZGV4IGNh Y2hlIGNnaSBjZ2lkIGRhdiBkYXZfZnMgZGF2X2xvY2sgZGVmbGF0ZSBkaXIgZGlza19jYWNoZSBl bnYgZXhwaXJlcyBleHRfZmlsdGVyIGZpbGVfY2FjaGUgZmlsdGVyIGhlYWRlcnMgaW5jbHVkZSBp bmZvIGxvZ19jb25maWcgbG9naW8gbWVtX2NhY2hlIG1pbWUgbWltZV9tYWdpYyBuZWdvdGlhdGlv biByZXdyaXRlIHNldGVudmlmIHNwZWxpbmcgc3RhdHVzIHVuaXF1ZV9pZCB1c2VyZGlyIHVzZXJ0 cmFjayB2aG9zdF9hbGlhcyIKZGVjbGFyZSAteCBBUkNIPSJhcm0iCmRlY2xhcmUgLS0gQVJDSF9M SUI9Ii91c3IvbGliL3Blcmw1LzUuMTIuNC9hcm0tbGludXgiCmRlY2xhcmUgLXggQlVJTERfQ0ZM QUdTPSItTzIgLXBpcGUgLW1hcmNoPWNvcmUyIgpkZWNsYXJlIC14IEJVSUxEX0NQUEZMQUdTPSIi CmRlY2xhcmUgLXggQlVJTERfQ1hYRkxBR1M9Ii1PMiAtcGlwZSAtbWFyY2g9Y29yZTIiCmRlY2xh cmUgLXggQ0FMTElHUkFfRkVBVFVSRVM9ImtleGkgd29yZHMgZmxvdyBwbGFuIHN0YWdlIHRhYmxl cyBrcml0YSBrYXJib24gYnJhaW5kdW1wIgpkZWNsYXJlIC14IENBTUVSQVM9InB0cDIiCmRlY2xh cmUgLXggQ0JVSUxEPSJ4ODZfNjQtcGMtbGludXgtZ251IgpkZWNsYXJlIC14IENGTEFHUz0iLU9z IC1waXBlICAtZm9taXQtZnJhbWUtcG9pbnRlciAtSS91c3IvYXJtLW5vbmUtbGludXgtZ251ZWFi aS91c3IvaW5jbHVkZS8gLUkvdXNyL2FybS1ub25lLWxpbnV4LWdudWVhYmkvaW5jbHVkZS8iCmRl Y2xhcmUgLXggQ0ZMQUdTX2RlZmF1bHQKZGVjbGFyZSAteCBDSE9TVD0iYXJtLW5vbmUtbGludXgt Z251ZWFiaSIKZGVjbGFyZSAteCBDSE9TVF9kZWZhdWx0PSJhcm0tbm9uZS1saW51eC1nbnVlYWJp IgpkZWNsYXJlIC14IENPTExFQ1REX1BMVUdJTlM9ImRmIGludGVyZmFjZSBpcnEgbG9hZCBtZW1v cnkgcnJkdG9vbCBzd2FwIHN5c2xvZyIKZGVjbGFyZSAteCBDT0xPUkZHQkc9IjE1OzAiCmRlY2xh cmUgLS0gQ09NTU9OX0RFUEVORD0iYmVya2RiPyAoIHN5cy1saWJzL2RiICkKCWdkYm0/ICggPj1z eXMtbGlicy9nZGJtLTEuOC4zICkKCT49c3lzLWRldmVsL2xpYnBlcmwtNS4xMC4xCgkhITxzeXMt ZGV2ZWwvbGlicGVybC01LjEwLjEKCWFwcC1hcmNoL2J6aXAyCglzeXMtbGlicy96bGliIgpkZWNs YXJlIC14IENST1NTQ09NUElMRV9PUFRTPSIiCmRlY2xhcmUgLXggQ1RBUkdFVF9kZWZhdWx0PSJh cm0tbm9uZS1saW51eC1nbnVlYWJpIgpkZWNsYXJlIC14IENYWEZMQUdTPSItT3MgLXBpcGUgIC1m b21pdC1mcmFtZS1wb2ludGVyIC1JL3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3Vzci9pbmNs dWRlLyAtSS91c3IvYXJtLW5vbmUtbGludXgtZ251ZWFiaS9pbmNsdWRlLyIKZGVjbGFyZSAteCBE QlVTX1NFU1NJT05fQlVTX0FERFJFU1M9InVuaXg6YWJzdHJhY3Q9L3RtcC9kYnVzLXRGUUt5cHgw eTAsZ3VpZD02YjlhNzcyYWI2N2M2OTZiODM1ZDc5MDYwMDAwMDA5MCIKZGVjbGFyZSAteCBERUZB VUxUX0FCST0iZGVmYXVsdCIKZGVjbGFyZSAteCBERUZJTkVEX1BIQVNFUz0iIGNvbXBpbGUgY29u ZmlndXJlIGluc3RhbGwgcG9zdGluc3QgcG9zdHJtIHByZXBhcmUgc2V0dXAgdGVzdCIKZGVjbGFy ZSBERVBFTkQ9ImJlcmtkYj8gKCBzeXMtbGlicy9kYiApCglnZGJtPyAoID49c3lzLWxpYnMvZ2Ri bS0xLjguMyApCgk+PXN5cy1kZXZlbC9saWJwZXJsLTUuMTAuMQoJISE8c3lzLWRldmVsL2xpYnBl cmwtNS4xMC4xCglhcHAtYXJjaC9iemlwMgoJc3lzLWxpYnMvemxpYgoJZWxpYmNfRnJlZUJTRD8g KCBzeXMtZnJlZWJzZC9mcmVlYnNkLW1rLWRlZnMgKSAiCmRlY2xhcmUgREVTQ1JJUFRJT049Ikxh cnJ5IFdhbGwncyBQcmFjdGljYWwgRXh0cmFjdGlvbiBhbmQgUmVwb3J0IExhbmd1YWdlIgpkZWNs YXJlIC14IERFU0tUT1BfU0VTU0lPTj0iS0RFLTQiCmRlY2xhcmUgLXggREVTVFRSRUU9Ii91c3Ii CmRlY2xhcmUgLXggRElST1BUSU9OUz0iLW0wNzU1IgpkZWNsYXJlIC14IERNX0NPTlRST0w9Ii92 YXIvcnVuL3hkbWN0bCIKZGVjbGFyZSAteCBFQVBJPSI0IgpkZWNsYXJlIC14IEVMSUJDPSJnbGli YyIKZGVjbGFyZSAtLSBFUEFUQ0hfRVhDTFVERT0iIgpkZWNsYXJlIC0tIEVQQVRDSF9GT1JDRT0i bm8iCmRlY2xhcmUgLS0gRVBBVENIX01VTFRJX01TRz0iQXBwbHlpbmcgdmFyaW91cyBwYXRjaGVz IChidWdmaXhlcy91cGRhdGVzKSAuLi4iCmRlY2xhcmUgLS0gRVBBVENIX09QVFM9Ii1nMCAtRSAt LW5vLWJhY2t1cC1pZi1taXNtYXRjaCIKZGVjbGFyZSAtLSBFUEFUQ0hfU0lOR0xFX01TRz0iIgpk ZWNsYXJlIC0tIEVQQVRDSF9TT1VSQ0U9Ii91c3IvYXJtLW5vbmUtbGludXgtZ251ZWFiaS90bXAv cG9ydGFnZS9kZXYtbGFuZy9wZXJsLTUuMTIuNC1yMS93b3JrL3BhdGNoIgpkZWNsYXJlIC0tIEVQ QVRDSF9TVUZGSVg9InBhdGNoLmJ6MiIKZGVjbGFyZSAteCBFWEVPUFRJT05TPSItbTA3NTUiCmRl Y2xhcmUgLXggRV9NQUNISU5FPSJFTV9BUk0iCmRlY2xhcmUgLXggRkNGTEFHUz0iIgpkZWNsYXJl IC14IEZFVENIQ09NTUFORF9TU0g9ImJhc2ggLWMgXCJ4PVxcXCR7MiNzc2g6Ly99IDsgaG9zdD1c XFwke3glJS8qfSA7IHBvcnQ9XFxcJHtob3N0IyMqOn0gOyBob3N0PVxcXCR7aG9zdCU6Kn0gOyBb WyBcXFwke2hvc3R9ID0gXFxcJHtwb3J0fSBdXSAmJiBwb3J0PTIyIDsgZXhlYyByc3luYyAtLXJz aD1cXFwic3NoIC1wXFxcJHtwb3J0fVxcXCIgLWF2UCBcXFwiXFxcJHtob3N0fTovXFxcJHt4Iyov fVxcXCIgXFxcIlxcXCQxXFxcIlwiIHJzeW5jIFwiXCR7RElTVERJUn0vXCR7RklMRX1cIiBcIlwk e1VSSX1cIiIKZGVjbGFyZSAteCBGRkxBR1M9IiIKZGVjbGFyZSAteCBHQ0NfU1BFQ1M9IiIKZGVj bGFyZSAteCBHREtfVVNFX1hGVD0iMSIKZGVjbGFyZSAteCBHUFNEX1BST1RPQ09MUz0iYXNodGVj aCBhaXZkbSBlYXJ0aG1hdGUgZXZlcm1vcmUgZnYxOCBnYXJtaW4gZ2FybWludHh0IGdwc2Nsb2Nr IGl0cmF4IG10azMzMDEgbm1lYSBudHJpcCBuYXZjb20gb2NlYW5zZXJ2ZXIgb2xkc3R5bGUgb25j b3JlIHJ0Y20xMDR2MiBydGNtMTA0djMgc2lyZiBzdXBlcnN0YXIyIHRpbWluZyB0c2lwIHRyaXBt YXRlIHRudCB1YngiCmRlY2xhcmUgLXggR1JVQl9QTEFURk9STVM9IiIKZGVjbGFyZSAteCBHU0VU VElOR1NfQkFDS0VORD0iZ2NvbmYiCmRlY2xhcmUgLXggR1NfTElCPSIvaG9tZS9wZXRhLy5mb250 cyIKZGVjbGFyZSAteCBHVEsyX1JDX0ZJTEVTPSIvZXRjL2d0ay0yLjAvZ3RrcmM6L2hvbWUvcGV0 YS8uZ3RrcmMtMi4wOjovaG9tZS9wZXRhLy5rZGU0L3NoYXJlL2NvbmZpZy9ndGtyYy0yLjAiCmRl Y2xhcmUgLXggR1RLX1JDX0ZJTEVTPSIvZXRjL2d0ay9ndGtyYzovaG9tZS9wZXRhLy5ndGtyYzo6 L2hvbWUvcGV0YS8ua2RlNC9zaGFyZS9jb25maWcvZ3RrcmMiCmRlY2xhcmUgLXggSEc9Ii91c3Iv YmluL2hnIgpkZWNsYXJlIEhPTUVQQUdFPSJodHRwOi8vd3d3LnBlcmwub3JnLyIKZGVjbGFyZSAt eCBIT1NUQ0M9Ing4Nl82NC1wYy1saW51eC1nbnUtZ2NjIgpkZWNsYXJlIC14IElOSEVSSVRFRD0i IHRvb2xjaGFpbi1mdW5jcyBtdWx0aWxpYiBwb3J0YWJpbGl0eSBldXRpbHMgYWx0ZXJuYXRpdmVz IGZsYWctby1tYXRpYyIKZGVjbGFyZSAteCBJTlBVVF9ERVZJQ0VTPSIiCmRlY2xhcmUgLXggSU5T REVTVFRSRUU9IiIKZGVjbGFyZSAteCBJTlNPUFRJT05TPSItbTA2NDQiCmRlY2xhcmUgSVVTRT0i YmVya2RiIGJ1aWxkIGRlYnVnIGRvYyBnZGJtIGl0aHJlYWRzICIKZGVjbGFyZSAteCBKQVZBQz0i L2hvbWUvcGV0YS8uZ2VudG9vL2phdmEtY29uZmlnLTIvY3VycmVudC11c2VyLXZtL2Jpbi9qYXZh YyIKZGVjbGFyZSAteCBKQVZBQ0NfSE9NRT0iL3Vzci9zaGFyZS9qYXZhY2MvIgpkZWNsYXJlIC14 IEpBVkFfSE9NRT0iL2hvbWUvcGV0YS8uZ2VudG9vL2phdmEtY29uZmlnLTIvY3VycmVudC11c2Vy LXZtIgpkZWNsYXJlIC14IEpES19IT01FPSIvaG9tZS9wZXRhLy5nZW50b28vamF2YS1jb25maWct Mi9jdXJyZW50LXVzZXItdm0iCmRlY2xhcmUgLXggS0RFX0ZVTExfU0VTU0lPTj0idHJ1ZSIKZGVj bGFyZSAteCBLREVfTVVMVElIRUFEPSJmYWxzZSIKZGVjbGFyZSAteCBLREVfU0VTU0lPTl9VSUQ9 IjEwMDAiCmRlY2xhcmUgLXggS0RFX1NFU1NJT05fVkVSU0lPTj0iNCIKZGVjbGFyZSAteCBLRVJO RUw9ImxpbnV4IgpkZWNsYXJlIC14IEtFUk5FTF9BQkk9ImRlZmF1bHQiCmRlY2xhcmUgLXggS0VZ V09SRFM9In5hbHBoYSBhbWQ2NCBhcm0gaHBwYSB+aWE2NCB+bTY4ayB+bWlwcyB+cHBjIH5wcGM2 NCB+czM5MCB+c2ggfnNwYXJjIHg4NiB+eDg2LWZic2QiCmRlY2xhcmUgLXggS09OU09MRV9EQlVT X1NFUlZJQ0U9IjoxLjgwIgpkZWNsYXJlIC14IEtPTlNPTEVfREJVU19TRVNTSU9OPSIvU2Vzc2lv bnMvMSIKZGVjbGFyZSAteCBMQU5HPSJjc19DWi5VVEYtOCIKZGVjbGFyZSAteCBMQU5HVUFHRT0i IgpkZWNsYXJlIC14IExDRF9ERVZJQ0VTPSIiCmRlY2xhcmUgLXggTENfQ09MTEFURT0iQyIKZGVj bGFyZSAteCBMQ19DVFlQRT0iY3NfQ1ouVVRGLTgiCmRlY2xhcmUgLXggTERGTEFHUz0iLUwvdXNy L2FybS1ub25lLWxpbnV4LWdudWVhYmkvbGliIC1ML3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJp L3Vzci9saWIiCmRlY2xhcmUgLXggTERGTEFHU19kZWZhdWx0CmRlY2xhcmUgLXggTElCRElSX2Ft ZDY0PSIvdXNyL2FybS1ub25lLWxpbnV4LWdudWVhYmkvbGliNjQiCmRlY2xhcmUgLXggTElCRElS X2FybT0iL3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL2xpYiIKZGVjbGFyZSAteCBMSUJESVJf ZGVmYXVsdD0ibGliIgpkZWNsYXJlIC14IExJQkdMX0RSSVZFUlNfUEFUSD0iL3Vzci9saWI2NC9k cmk6L3Vzci9saWIzMi9kcmkiCmRlY2xhcmUgLXggTElCT1BUSU9OUz0iLW0wNjQ0IgpkZWNsYXJl IC0tIExJQlBFUkw9ImxpYnBlcmwuc28uNS4xMi40IgpkZWNsYXJlIC14IExJQ0VOU0U9Inx8ICgg QXJ0aXN0aWMgR1BMLTEgR1BMLTIgR1BMLTMgKSIKZGVjbGFyZSAteCBNQUtFT1BUUz0iLWo5Igpk ZWNsYXJlIC14IE1VTFRJTElCX0FCSVM9ImRlZmF1bHQiCmRlY2xhcmUgLS0gTVlfUD0icGVybC01 LjEyLjQiCmRlY2xhcmUgLS0gTVlfUFY9IjUuMTIuNCIKZGVjbGFyZSAteCBORVRCRUFOUz0iYXBp c3VwcG9ydCBjbmQgZ3Jvb3Z5IGdzZiBoYXJuZXNzIGlkZSBpZGVudGl0eSBqMmVlIGphdmEgbW9i aWxpdHkgbmIgcGhwIHByb2ZpbGVyIHNvYSB2aXN1YWx3ZWIgd2ViY29tbW9uIHdlYnN2Y2NvbW1v biB4bWwiCmRlY2xhcmUgLXggT1BFTkdMX1BST0ZJTEU9ImF0aSIKZGVjbGFyZSAtLSBQQVRDSF9W RVI9IjEiCmRlY2xhcmUgLXggUEFUSD0iL3Vzci9saWI2NC9wb3J0YWdlL2Jpbi9lYnVpbGQtaGVs cGVycy80Oi91c3IvbGliNjQvcG9ydGFnZS9iaW4vZWJ1aWxkLWhlbHBlcnM6L3Vzci9sb2NhbC9z YmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIgpkZWNsYXJl IFBERVBFTkQ9Ij49YXBwLWFkbWluL3BlcmwtY2xlYW5lci0yLjUgIgpkZWNsYXJlIC0tIFBFUkxf T0xEVkVSU0VOPSI1LjEyLjMgNS4xMi4yIDUuMTIuMSA1LjEyLjAiCmRlY2xhcmUgLXggUEhQX1RB UkdFVFM9IiIKZGVjbGFyZSAteCBQS0dfQ09ORklHX1BBVEg9Ii91c3IvYXJtLW5vbmUtbGludXgt Z251ZWFiaS91c3IvbGliL3BrZ2NvbmZpZy8iCmRlY2xhcmUgLXggUE9SVEFHRV9DT01QUkVTU19F WENMVURFX1NVRkZJWEVTPSJjc3MgZ2lmIGh0bVtsXT8ganBbZV0/ZyBqcyBwZGYgcG5nIgpkZWNs YXJlIC1hIFBPUlRBR0VfRE9DT01QUkVTUz0nKFswXT0iL3Vzci9zaGFyZS9kb2MiIFsxXT0iL3Vz ci9zaGFyZS9pbmZvIiBbMl09Ii91c3Ivc2hhcmUvbWFuIiknCmRlY2xhcmUgLWEgUE9SVEFHRV9E T0NPTVBSRVNTX1NLSVA9JyhbMF09Ii91c3Ivc2hhcmUvZG9jL3BlcmwtNS4xMi40LXIxL2h0bWwi KScKZGVjbGFyZSAteCBQUkVMSU5LX1BBVEhfTUFTSz0iL29wdDovdXNyL2xpYjY0L2xpYmZyZWVi bDMuc286L3Vzci9saWI2NC9saWJuc3NkYm0zLnNvOi91c3IvbGliNjQvbGlic29mdG9rbjMuc28i CmRlY2xhcmUgLS0gUFJJVl9MSUI9Ii91c3IvbGliL3Blcmw1LzUuMTIuNCIKZGVjbGFyZSAteCBQ Uk9GSUxFSE9NRT0iIgpkZWNsYXJlIC14IFBST0ZJTEVfT05MWV9WQVJJQUJMRVM9IkFSQ0ggRUxJ QkMgS0VSTkVMIFVTRVJMQU5EIgpkZWNsYXJlIC14IFBST1BFUlRJRVM9IiIKZGVjbGFyZSAteCBQ Uk9WSURFPSIiCmRlY2xhcmUgLXggUFlUSE9ORE9OVFdSSVRFQllURUNPREU9IjEiCmRlY2xhcmUg LXggUVRfUExVR0lOX1BBVEg9Ii91c3IvbGliNjQva2RlNC9wbHVnaW5zOi9ob21lL3BldGEvLmtk ZTQvbGliNjQva2RlNC9wbHVnaW5zLzovdXNyL2xpYjY0L2tkZTQvcGx1Z2lucy8iCmRlY2xhcmUg UkRFUEVORD0iYmVya2RiPyAoIHN5cy1saWJzL2RiICkKCWdkYm0/ICggPj1zeXMtbGlicy9nZGJt LTEuOC4zICkKCT49c3lzLWRldmVsL2xpYnBlcmwtNS4xMC4xCgkhITxzeXMtZGV2ZWwvbGlicGVy bC01LjEwLjEKCWFwcC1hcmNoL2J6aXAyCglzeXMtbGlicy96bGliICIKZGVjbGFyZSBSRVFVSVJF RF9VU0U9IiAiCmRlY2xhcmUgLXggUkVTVFJJQ1Q9IiIKZGVjbGFyZSAteCBSRVNVTUVDT01NQU5E X1NTSD0iYmFzaCAtYyBcIng9XFxcJHsyI3NzaDovL30gOyBob3N0PVxcXCR7eCUlLyp9IDsgcG9y dD1cXFwke2hvc3QjIyo6fSA7IGhvc3Q9XFxcJHtob3N0JToqfSA7IFtbIFxcXCR7aG9zdH0gPSBc XFwke3BvcnR9IF1dICYmIHBvcnQ9MjIgOyBleGVjIHJzeW5jIC0tcnNoPVxcXCJzc2ggLXBcXFwk e3BvcnR9XFxcIiAtYXZQIFxcXCJcXFwke2hvc3R9Oi9cXFwke3gjKi99XFxcIiBcXFwiXFxcJDFc XFwiXCIgcnN5bmMgXCJcJHtESVNURElSfS9cJHtGSUxFfVwiIFwiXCR7VVJJfVwiIgpkZWNsYXJl IC14IFJVQllfVEFSR0VUUz0iIgpkZWNsYXJlIC14IFJfSE9NRT0iL3Vzci9saWI2NC9SIgpkZWNs YXJlIC14IFM9Ii91c3IvYXJtLW5vbmUtbGludXgtZ251ZWFiaS90bXAvcG9ydGFnZS9kZXYtbGFu Zy9wZXJsLTUuMTIuNC1yMS93b3JrL3BlcmwtNS4xMi40IgpkZWNsYXJlIC14IFNBTkRCT1hfREVC VUc9IjAiCmRlY2xhcmUgLXggU0FOREJPWF9ERU5ZPSIiCmRlY2xhcmUgLXggU0FOREJPWF9QSUQ9 IjQyMTEiCmRlY2xhcmUgLXggU0FOREJPWF9QUkVESUNUPSIvdXNyL2FybS1ub25lLWxpbnV4LWdu dWVhYmkvdG1wL3BvcnRhZ2UvZGV2LWxhbmcvcGVybC01LjEyLjQtcjEvaG9tZWRpcjovZGV2L2Ny eXB0bzovdmFyL2NhY2hlL2ZvbnRjb25maWciCmRlY2xhcmUgLXggU0FOREJPWF9SRUFEPSIvOi9k ZXYvc3RkaW46L3Vzci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3RtcCIKZGVjbGFyZSAteCBTQU5E Qk9YX1ZFUkJPU0U9IjEiCmRlY2xhcmUgLXggU0FOREJPWF9XUklURT0iOi9kZXYvY29uc29sZTov ZGV2L2ZkOi9kZXYvZnVsbDovZGV2L251bGw6L2Rldi9wdHMvOi9kZXYvcHR5Oi9kZXYvc2htOi9k ZXYvc3RkZXJyOi9kZXYvc3Rkb3V0Oi9kZXYvdHRzOi9kZXYvdHR5Oi9kZXYvdmMvOi9kZXYvemVy bzovcHJvYy9zZWxmL2ZkOi90bXAvOi91c3IvYXJtLW5vbmUtbGludXgtZ251ZWFiaS90bXA6L3Vz ci9hcm0tbm9uZS1saW51eC1nbnVlYWJpL3RtcC9wb3J0YWdlL2Rldi1sYW5nL3BlcmwtNS4xMi40 LXIxL2hvbWVkaXIvLmJhc2hfaGlzdG9yeTovdXNyL2xpYi9jZjovdXNyL2xpYi9jb25mdGVzdDov dXNyL2xpYjMyL2NmOi91c3IvbGliMzIvY29uZnRlc3Q6L3Vzci9saWI2NC9jZjovdXNyL2xpYjY0 L2NvbmZ0ZXN0Oi91c3IvdG1wL2NmOi91c3IvdG1wL2NvbmZ0ZXN0Oi92YXIvdG1wLyIKZGVjbGFy ZSAteCBTQU5FX0JBQ0tFTkRTPSIiCmRlY2xhcmUgLXggU0VTU0lPTl9NQU5BR0VSPSJsb2NhbC9n ZXRoZXhpczpAL3RtcC8uSUNFLXVuaXgvMzEwOCx1bml4L2dldGhleGlzOi90bXAvLklDRS11bml4 LzMxMDgiCmRlY2xhcmUgLXggU0hFTExfU0VTU0lPTl9JRD0iY2YwZDM3MzA1NGQ2NDg5NzlkNDM4 MmI1MmJmOTBhMjgiCmRlY2xhcmUgLS0gU0hPUlRfUFY9IjUuMTIiCmRlY2xhcmUgLS0gU0lURV9B UkNIPSIvdXNyL2xpYi9wZXJsNS9zaXRlX3BlcmwvNS4xMi40L2FybS1saW51eCIKZGVjbGFyZSAt LSBTSVRFX0xJQj0iL3Vzci9saWIvcGVybDUvc2l0ZV9wZXJsLzUuMTIuNCIKZGVjbGFyZSAteCBT TE9UPSIwIgpkZWNsYXJlIFNSQ19VUkk9IgoJbWlycm9yOi8vY3Bhbi9zcmMvcGVybC01LjEyLjQu dGFyLmJ6MgoJbWlycm9yOi8vY3Bhbi9hdXRob3JzL2lkL0wvTEIvTEJST0NBUkQvcGVybC01LjEy LjQudGFyLmJ6MgoJbWlycm9yOi8vZ2VudG9vL3BlcmwtNS4xMi40LTEudGFyLmJ6MgoJaHR0cDov L2Rldi5nZW50b28ub3JnL350b3ZlL2Rpc3RmaWxlcy9kZXYtbGFuZy9wZXJsL3BlcmwtNS4xMi40 LTEudGFyLmJ6MiIKZGVjbGFyZSAteCBTWVNST09UPSIvdXNyL2FybS1ub25lLWxpbnV4LWdudWVh YmkiCmRlY2xhcmUgLXggVVNFPSJhcm0gYmVya2RiIGVsaWJjX2dsaWJjIGdkYm0ga2VybmVsX2xp bnV4IHVzZXJsYW5kX0dOVSIKZGVjbGFyZSAteCBVU0VSTEFORD0iR05VIgpkZWNsYXJlIC0tIFZF TkRPUl9BUkNIPSIvdXNyL2xpYi9wZXJsNS92ZW5kb3JfcGVybC81LjEyLjQvYXJtLWxpbnV4Igpk ZWNsYXJlIC0tIFZFTkRPUl9MSUI9Ii91c3IvbGliL3Blcmw1L3ZlbmRvcl9wZXJsLzUuMTIuNCIK ZGVjbGFyZSAteCBWSURFT19DQVJEUz0iIgpkZWNsYXJlIC14IFdJTkRPV0lEPSIyNzI2MzAxMyIK ZGVjbGFyZSAteCBXSU5ET1dQQVRIPSI3IgpkZWNsYXJlIC14IFhDVVJTT1JfVEhFTUU9Ik94eWdl bl9CbGFjayIKZGVjbGFyZSAteCBYREdfQ09ORklHX0RJUlM9Ii9ldGMveGRnIgpkZWNsYXJlIC14 IFhER19EQVRBX0RJUlM9Ii91c3IvbG9jYWwvc2hhcmU6L3Vzci9zaGFyZSIKZGVjbGFyZSAteCBY REdfTUVOVV9QUkVGSVg9ImtkZS00LSIKZGVjbGFyZSAteCBYREdfU0VTU0lPTl9DT09LSUU9ImIx MDgwNjdmZmYyYTQwYjRiZjM2MWUyZDAwMDAwMDBlLTEzMTg1ODc5NjQuNTM3NDI0LTIwNzAzOTI0 MjQiCmRlY2xhcmUgLXggWERNX01BTkFHRUQ9Im1ldGhvZD1jbGFzc2ljIgpkZWNsYXJlIC14IFhU QUJMRVNfQURET05TPSJxdW90YTIgcHNkIHBrbm9jayBsc2NhbiBsZW5ndGgyIGlwdjRvcHRpb25z IGlwc2V0IGlwcDJwIGlmYWNlIGdlb2lwIGZ1enp5IGNvbmRpdGlvbiB0ZWUgdGFycGl0IHN5c3Jx IHN0ZWFsIHJhd25hdCBsb2dtYXJrIGlwbWFyayBkaGNwbWFjIGRlbHVkZSBjaGFvcyBhY2NvdW50 IgpkZWNsYXJlIC0tIF89IlBLR19JTlNUQUxMX01BU0siCmRlY2xhcmUgLXggX0VfRE9DREVTVFRS RUVfPSIiCmRlY2xhcmUgLXggX0VfRVhFREVTVFRSRUVfPSIiCmRlY2xhcmUgLS0gX19fRUNMQVNT X1JFQ1VSX01VTFRJTElCPSJ5ZXMiCmRlY2xhcmUgLS0gX19fRUNMQVNTX1JFQ1VSX1RPT0xDSEFJ Tl9GVU5DUz0ieWVzIgpkZWNsYXJlIC0tIGxldmVsPSIiCmRlY2xhcmUgLS0gbXlhcmNoPSJhcm0t bGludXgiCmRlY2xhcmUgLS0gb3NuYW1lPSJsaW51eCIKZGVjbGFyZSAtLSBwYXRjaD0iIgpfY2Ry b21fbG9jYXRlX2ZpbGVfb25fY2QgKCkgCnsgCiAgICBsb2NhbCBtbGluZT0iIjsKICAgIGxvY2Fs IHNob3dlZG1zZz0wIHNob3dqb2xpZXRtc2c9MDsKICAgIHdoaWxlIFtbIC16ICR7Q0RST01fUk9P VH0gXV07IGRvCiAgICAgICAgbG9jYWwgaT0wOwogICAgICAgIGxvY2FsIC1hIGNkc2V0PSgkeyov LzovIH0pOwogICAgICAgIGlmIFtbIC1uICR7Q0RST01fU0VUfSBdXTsgdGhlbgogICAgICAgICAg ICBjZHNldD0oJHtjZHNldFske0NEUk9NX1NFVH1dfSk7CiAgICAgICAgZmk7CiAgICAgICAgd2hp bGUgW1sgLW4gJHtjZHNldFske2l9XX0gXV07IGRvCiAgICAgICAgICAgIGxvY2FsIGRpcj0kKGRp cm5hbWUgJHtjZHNldFske2l9XX0pOwogICAgICAgICAgICBsb2NhbCBmaWxlPSQoYmFzZW5hbWUg JHtjZHNldFske2l9XX0pOwogICAgICAgICAgICBsb2NhbCBwb2ludD0gbm9kZT0gZnM9IGZvbz07 CiAgICAgICAgICAgIHdoaWxlIHJlYWQgcG9pbnQgbm9kZSBmcyBmb287IGRvCiAgICAgICAgICAg ICAgICBbWyAiIGNkOTY2MCBpc285NjYwIHVkZiAiICE9ICoiICR7ZnN9ICIqIF1dICYmICEgW1sg JHtmc30gPT0gInN1YmZzIiAmJiAiLCR7b3B0c30sIiA9PSAqIixmcz1jZGZzcywiKiBdXSAmJiBj b250aW51ZTsKICAgICAgICAgICAgICAgIHBvaW50PSR7cG9pbnQvL1wwNDAvIH07CiAgICAgICAg ICAgICAgICBbWyAhIC1kICR7cG9pbnR9LyR7ZGlyfSBdXSAmJiBjb250aW51ZTsKICAgICAgICAg ICAgICAgIFtbIC16ICQoZmluZCAiJHtwb2ludH0vJHtkaXJ9IiAtbWF4ZGVwdGggMSAtaW5hbWUg IiR7ZmlsZX0iKSBdXSAmJiBjb250aW51ZTsKICAgICAgICAgICAgICAgIGV4cG9ydCBDRFJPTV9S T09UPSR7cG9pbnR9OwogICAgICAgICAgICAgICAgZXhwb3J0IENEUk9NX1NFVD0ke2l9OwogICAg ICAgICAgICAgICAgZXhwb3J0IENEUk9NX01BVENIPSR7Y2RzZXRbJHtpfV19OwogICAgICAgICAg ICAgICAgcmV0dXJuOwogICAgICAgICAgICBkb25lIDw8PCAiJChnZXRfbW91bnRzKSI7CiAgICAg ICAgICAgICgoKytpKSk7CiAgICAgICAgZG9uZTsKICAgICAgICBlY2hvOwogICAgICAgIGlmIFtb ICR7c2hvd2VkbXNnfSAtZXEgMCBdXTsgdGhlbgogICAgICAgICAgICBpZiBbWyAke0NEUk9NX1RP VEFMX0NEU30gLWVxIDEgXV07IHRoZW4KICAgICAgICAgICAgICAgIGlmIFtbIC16ICR7Q0RST01f TkFNRX0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBlaW5mbyAiUGxlYXNlIGluc2VydCtt b3VudCB0aGUgY2Ryb20gZm9yICR7UE59IG5vdyAhIjsKICAgICAgICAgICAgICAgIGVsc2UKICAg ICAgICAgICAgICAgICAgICBlaW5mbyAiUGxlYXNlIGluc2VydCttb3VudCB0aGUgJHtDRFJPTV9O QU1FfSBjZHJvbSBub3cgISI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgICAgaWYgW1sgLXogJHtDRFJPTV9OQU1FXzF9IF1dOyB0aGVuCiAgICAgICAg ICAgICAgICAgICAgZWluZm8gIlBsZWFzZSBpbnNlcnQrbW91bnQgY2QgIyR7Q0RST01fQ1VSUkVO VF9DRH0gZm9yICR7UE59IG5vdyAhIjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg ICAgICAgICBsb2NhbCB2YXI9IkNEUk9NX05BTUVfJHtDRFJPTV9DVVJSRU5UX0NEfSI7CiAgICAg ICAgICAgICAgICAgICAgZWluZm8gIlBsZWFzZSBpbnNlcnQrbW91bnQgdGhlICR7IXZhcn0gY2Ry b20gbm93ICEiOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAgICAg ICBzaG93ZWRtc2c9MTsKICAgICAgICBmaTsKICAgICAgICBlaW5mbyAiUHJlc3MgcmV0dXJuIHRv IHNjYW4gZm9yIHRoZSBjZCBhZ2FpbiI7CiAgICAgICAgZWluZm8gIm9yIGhpdCBDVFJMK0MgdG8g YWJvcnQgdGhlIGVtZXJnZS4iOwogICAgICAgIGVjaG87CiAgICAgICAgaWYgW1sgJHtzaG93am9s aWV0bXNnfSAtZXEgMCBdXTsgdGhlbgogICAgICAgICAgICBzaG93am9saWV0bXNnPTE7CiAgICAg ICAgZWxzZQogICAgICAgICAgICBld2FybiAiSWYgeW91IGFyZSBoYXZpbmcgdHJvdWJsZSB3aXRo IHRoZSBkZXRlY3Rpb24iOwogICAgICAgICAgICBld2FybiAib2YgeW91ciBDRCwgaXQgaXMgcG9z c2libGUgdGhhdCB5b3UgZG8gbm90IGhhdmUiOwogICAgICAgICAgICBld2FybiAiSm9saWV0IHN1 cHBvcnQgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4gIFBsZWFzZSI7CiAgICAgICAgICAgIGV3YXJu ICJjaGVjayB0aGF0IENPTkZJR19KT0xJRVQgaXMgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4iOwog ICAgICAgICAgICBlYmVlcCA1OwogICAgICAgIGZpOwogICAgICAgIHJlYWQgfHwgZGllICJzb21l dGhpbmcgaXMgc2NyZXdlZCB3aXRoIHlvdXIgc3lzdGVtIjsKICAgIGRvbmUKfQpfZXBhdGNoX2Ry YXdfbGluZSAoKSAKeyAKICAgIFtbIC16ICQxIF1dICYmIHNldCAiJChwcmludGYgIiU2NXMiICcn KSI7CiAgICBlY2hvICIkezEvLz8vPX0iCn0KX2ZpbHRlci1oYXJkZW5lZCAoKSAKeyAKICAgIGxv Y2FsIGY7CiAgICBmb3IgZiBpbiAiJEAiOwogICAgZG8KICAgICAgICBjYXNlICIke2Z9IiBpbiAK ICAgICAgICAgICAgLWZQSUMgfCAtZnBpYyB8IC1mUElFIHwgLWZwaWUgfCAtV2wscGllIHwgLXBp ZSkKICAgICAgICAgICAgICAgIGdjYy1zcGVjcy1waWUgfHwgY29udGludWU7CiAgICAgICAgICAg ICAgICBpcy1mbGFncSAtbm9waWUgfHwgYXBwZW5kLWZsYWdzIC1ub3BpZQogICAgICAgICAgICA7 OwogICAgICAgICAgICAtZnN0YWNrLXByb3RlY3RvcikKICAgICAgICAgICAgICAgIGdjYy1zcGVj cy1zc3AgfHwgY29udGludWU7CiAgICAgICAgICAgICAgICBpcy1mbGFncSAtZm5vLXN0YWNrLXBy b3RlY3RvciB8fCBhcHBlbmQtZmxhZ3MgJCh0ZXN0LWZsYWdzIC1mbm8tc3RhY2stcHJvdGVjdG9y KQogICAgICAgICAgICA7OwogICAgICAgICAgICAtZnN0YWNrLXByb3RlY3Rvci1hbGwpCiAgICAg ICAgICAgICAgICBnY2Mtc3BlY3Mtc3NwLXRvLWFsbCB8fCBjb250aW51ZTsKICAgICAgICAgICAg ICAgIGlzLWZsYWdxIC1mbm8tc3RhY2stcHJvdGVjdG9yLWFsbCB8fCBhcHBlbmQtZmxhZ3MgJCh0 ZXN0LWZsYWdzIC1mbm8tc3RhY2stcHJvdGVjdG9yLWFsbCkKICAgICAgICAgICAgOzsKICAgICAg ICAgICAgLWZuby1zdHJpY3Qtb3ZlcmZsb3cpCiAgICAgICAgICAgICAgICBnY2Mtc3BlY3Mtbm9z dHJpY3QgfHwgY29udGludWU7CiAgICAgICAgICAgICAgICBpcy1mbGFncSAtZnN0cmljdC1vdmVy ZmxvdyB8fCBhcHBlbmQtZmxhZ3MgJCh0ZXN0LWZsYWdzIC1mc3RyaWN0LW92ZXJmbG93KQogICAg ICAgICAgICA7OwogICAgICAgIGVzYWM7CiAgICBkb25lCn0KX2ZpbHRlci12YXIgKCkgCnsgCiAg ICBsb2NhbCBmIHggVkFSIFZBTDsKICAgIGRlY2xhcmUgLWEgbmV3OwogICAgVkFSPSQxOwogICAg c2hpZnQ7CiAgICBldmFsIFZBTD1cJHske1ZBUn19OwogICAgZm9yIGYgaW4gJHtWQUx9OwogICAg ZG8KICAgICAgICBmb3IgeCBpbiAiJEAiOwogICAgICAgIGRvCiAgICAgICAgICAgIFtbICR7Zn0g PT0gJHt4fSBdXSAmJiBjb250aW51ZSAyOwogICAgICAgIGRvbmU7CiAgICAgICAgZXZhbCBuZXdc W1wke1wjbmV3XFtAXX1dPVwke2Z9OwogICAgZG9uZTsKICAgIGV2YWwgZXhwb3J0ICR7VkFSfT1c JHtuZXdcWypdfQp9Cl9nY2MtaW5zdGFsbC1kaXIgKCkgCnsgCiAgICBlY2hvICIkKExDX0FMTD1D ICQodGMtZ2V0Q0MpIC1wcmludC1zZWFyY2gtZGlycyAyPiAvZGV2L251bGwgfAkJYXdrICckMT09 Imluc3RhbGw6IiB7cHJpbnQgJDJ9JykiCn0KX2djYy1zcGVjcy1kaXJlY3RpdmVfcmF3ICgpIAp7 IAogICAgbG9jYWwgY2M9JCh0Yy1nZXRDQyk7CiAgICBsb2NhbCBzcGVjZmlsZXM9JChMQ19BTEw9 QyAke2NjfSAtdiAyPiYxIHwgYXdrICckMT09IlJlYWRpbmciIHtwcmludCAkTkZ9Jyk7CiAgICAk e2NjfSAtZHVtcHNwZWNzIDI+IC9kZXYvbnVsbCB8IGNhdCAtICR7c3BlY2ZpbGVzfSB8IGF3ayAt diBkaXJlY3RpdmU9JDEgJ0JFR0lOCXsgcHNwZWM9IiI7IHNwZWM9IiI7IG91dHNpZGU9MSB9CiQx PT0iKiJkaXJlY3RpdmUiOiIgIHsgcHNwZWM9c3BlYzsgc3BlYz0iIjsgb3V0c2lkZT0wOyBuZXh0 IH0KCW91dHNpZGUgfHwgTkY9PTAgfHwgKCBzdWJzdHIoJDEsMSwxKT09IioiICYmIHN1YnN0cigk MSxsZW5ndGgoJDEpLDEpPT0iOiIgKSB7IG91dHNpZGU9MTsgbmV4dCB9CglzcGVjPT0iIiAmJiBz dWJzdHIoJDAsMSwxKT09IisiIHsgc3BlYz1wc3BlYyAiICIgc3Vic3RyKCQwLDIpOyBuZXh0IH0K CXsgc3BlYz1zcGVjICQwIH0KRU5ECXsgcHJpbnQgc3BlYyB9JzsKICAgIHJldHVybiAwCn0KX2dj Yy1zcGVjcy1leGlzdHMgKCkgCnsgCiAgICBbWyAtZiAkKF9nY2MtaW5zdGFsbC1kaXIpLyQxIF1d Cn0KX2djY19mdWxsdmVyc2lvbiAoKSAKeyAKICAgIGxvY2FsIHZlcj0iJDEiOwogICAgc2hpZnQ7 CiAgICBzZXQgLS0gYCQodGMtZ2V0Q1BQICIkQCIpIC1FIC1QIC0gPDw8Il9fR05VQ19fIF9fR05V Q19NSU5PUl9fIF9fR05VQ19QQVRDSExFVkVMX18iYDsKICAgIGV2YWwgZWNobyAiJHZlciIKfQpf aXNfZmxhZ3EgKCkgCnsgCiAgICBsb2NhbCB4OwogICAgZm9yIHggaW4gJHshMX07CiAgICBkbwog ICAgICAgIFtbICR7eH0gPT0gJDIgXV0gJiYgcmV0dXJuIDA7CiAgICBkb25lOwogICAgcmV0dXJu IDEKfQpfdGMtZ2V0UFJPRyAoKSAKeyAKICAgIGxvY2FsIHR1cGxlPSQxOwogICAgbG9jYWwgdiB2 YXIgdmFycz0kMjsKICAgIGxvY2FsIHByb2c9JDM7CiAgICB2YXI9JHt2YXJzJSUgKn07CiAgICBm b3IgdiBpbiAke3ZhcnN9OwogICAgZG8KICAgICAgICBpZiBbWyAtbiAkeyF2fSBdXTsgdGhlbgog ICAgICAgICAgICBleHBvcnQgJHt2YXJ9PSIkeyF2fSI7CiAgICAgICAgICAgIGVjaG8gIiR7IXZ9 IjsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgbG9jYWwg c2VhcmNoPTsKICAgIFtbIC1uICQ0IF1dICYmIHNlYXJjaD0kKHR5cGUgLXAgIiQ0LSR7cHJvZ30i KTsKICAgIFtbIC16ICR7c2VhcmNofSAmJiAtbiAkeyF0dXBsZX0gXV0gJiYgc2VhcmNoPSQodHlw ZSAtcCAiJHshdHVwbGV9LSR7cHJvZ30iKTsKICAgIFtbIC1uICR7c2VhcmNofSBdXSAmJiBwcm9n PSR7c2VhcmNoIyMqL307CiAgICBleHBvcnQgJHt2YXJ9PSR7cHJvZ307CiAgICBlY2hvICIkeyF2 YXJ9Igp9Cl91bnBhY2tfdGFyICgpIAp7IAogICAgaWYgWyAiJHt5fSIgPT0gInRhciIgXTsgdGhl bgogICAgICAgICQxIC1jIC0tICIkc3JjZGlyJHgiIHwgdGFyIHhvZiAtOwogICAgICAgIGFzc2Vy dF9zaWdwaXBlX29rICIkbXlmYWlsIjsKICAgIGVsc2UKICAgICAgICBsb2NhbCBjd2RfZGVzdD0k e3gjIyovfTsKICAgICAgICBjd2RfZGVzdD0ke2N3ZF9kZXN0JS4qfTsKICAgICAgICAkMSAtYyAt LSAiJHtzcmNkaXJ9JHt4fSIgPiAiJHtjd2RfZGVzdH0iIHx8IGRpZSAiJG15ZmFpbCI7CiAgICBm aQp9CmFsdGVybmF0aXZlc19hdXRvX21ha2VzeW0gKCkgCnsgCiAgICBsb2NhbCBTWU1MSU5LIFJF R0VYIEFMVCBteXJlZ2V4OwogICAgU1lNTElOSz0kMTsKICAgIFJFR0VYPSQyOwogICAgaWYgWyAi JHtSRUdFWDowOjF9IiAhPSAiLyIgXTsgdGhlbgogICAgICAgIG15cmVnZXg9IiR7U1lNTElOSyUv Kn0vJHtSRUdFWH0iOwogICAgZWxzZQogICAgICAgIG15cmVnZXg9JHtSRUdFWH07CiAgICBmaTsK ICAgIEFMVD0iJChmb3IgaSBpbiAkKGVjaG8gJHtST09UfSR7bXlyZWdleH0pOyBkbyBlY2hvICR7 aSMke1JPT1R9fTsgZG9uZSB8IHNvcnQgLXIpIjsKICAgIGFsdGVybmF0aXZlc19tYWtlc3ltICR7 U1lNTElOS30gJHtBTFR9Cn0KYWx0ZXJuYXRpdmVzX21ha2VzeW0gKCkgCnsgCiAgICBsb2NhbCBB TFRFUk5BVElWRVM9IiI7CiAgICBsb2NhbCBTWU1MSU5LPSIiOwogICAgbG9jYWwgYWx0IHByZWY7 CiAgICBTWU1MSU5LPSQxOwogICAgcHJlZj0kKGVjaG8gJHtST09UfSB8IHNlZCAnczovJDo6Jyk7 CiAgICBzaGlmdDsKICAgIEFMVEVSTkFUSVZFUz0kQDsKICAgIGZvciBhbHQgaW4gJHtBTFRFUk5B VElWRVN9OwogICAgZG8KICAgICAgICBpZiBbIC1mICIke3ByZWZ9JHthbHR9IiBdOyB0aGVuCiAg ICAgICAgICAgIGlmIFsgIiR7YWx0JS8qfSIgPSAiJHtTWU1MSU5LJS8qfSIgXTsgdGhlbgogICAg ICAgICAgICAgICAgZWluZm8gIkxpbmtpbmcgJHthbHR9IHRvICR7cHJlZn0ke1NZTUxJTkt9IChy ZWxhdGl2ZSkiOwogICAgICAgICAgICAgICAgbG4gLXNmICR7YWx0IyMqL30gJHtwcmVmfSR7U1lN TElOS307CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVpbmZvICJMaW5raW5nICR7 YWx0fSB0byAke3ByZWZ9JHtTWU1MSU5LfSAoYWJzb2x1dGUpIjsKICAgICAgICAgICAgICAgIGxu IC1zZiAke3ByZWZ9JHthbHR9ICR7cHJlZn0ke1NZTUxJTkt9OwogICAgICAgICAgICBmaTsKICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgaWYgWyAhIC1MICR7cHJl Zn0ke1NZTUxJTkt9IF07IHRoZW4KICAgICAgICBld2FybiAiVW5hYmxlIHRvIGVzdGFibGlzaCAk e3ByZWZ9JHtTWU1MSU5LfSBzeW1saW5rIjsKICAgIGVsc2UKICAgICAgICBpZiBbICEgLWYgImBk aXJuYW1lICR7cHJlZn0ke1NZTUxJTkt9YC9gcmVhZGxpbmsgJHtwcmVmfSR7U1lNTElOS31gIiAt YSAhIC1mICJgcmVhZGxpbmsgJHtwcmVmfSR7U1lNTElOS31gIiBdOyB0aGVuCiAgICAgICAgICAg IGV3YXJuICJSZW1vdmluZyBkZWFkIHN5bWxpbmsgJHtwcmVmfSR7U1lNTElOS30iOwogICAgICAg ICAgICBybSAtZiAke3ByZWZ9JHtTWU1MSU5LfTsKICAgICAgICBmaTsKICAgIGZpCn0KYWx0ZXJu YXRpdmVzX3BrZ19wb3N0aW5zdCAoKSAKeyAKICAgIGlmIFsgLW4gIiR7QUxURVJOQVRJVkVTfSIg LWEgLW4gIiR7U09VUkNFfSIgXTsgdGhlbgogICAgICAgIGFsdGVybmF0aXZlc19tYWtlc3ltICR7 U09VUkNFfSAke0FMVEVSTkFUSVZFU307CiAgICBmaQp9CmFsdGVybmF0aXZlc19wa2dfcG9zdHJt ICgpIAp7IAogICAgaWYgWyAtbiAiJHtBTFRFUk5BVElWRVN9IiAtYSAtbiAiJHtTT1VSQ0V9IiBd OyB0aGVuCiAgICAgICAgYWx0ZXJuYXRpdmVzX21ha2VzeW0gJHtTT1VSQ0V9ICR7QUxURVJOQVRJ VkVTfTsKICAgIGZpCn0KYXBwZW5kLWNmbGFncyAoKSAKeyAKICAgIFtbIC16ICQqIF1dICYmIHJl dHVybiAwOwogICAgZXhwb3J0IENGTEFHUz0iJHtDRkxBR1N9ICQqIjsKICAgIHJldHVybiAwCn0K YXBwZW5kLWNwcGZsYWdzICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgcmV0dXJuIDA7CiAgICBl eHBvcnQgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9ICQqIjsKICAgIHJldHVybiAwCn0KYXBwZW5kLWN4 eGZsYWdzICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgcmV0dXJuIDA7CiAgICBleHBvcnQgQ1hY RkxBR1M9IiR7Q1hYRkxBR1N9ICQqIjsKICAgIHJldHVybiAwCn0KYXBwZW5kLWZmbGFncyAoKSAK eyAKICAgIFtbIC16ICQqIF1dICYmIHJldHVybiAwOwogICAgZXhwb3J0IEZGTEFHUz0iJHtGRkxB R1N9ICQqIjsKICAgIGV4cG9ydCBGQ0ZMQUdTPSIke0ZDRkxBR1N9ICQqIjsKICAgIHJldHVybiAw Cn0KYXBwZW5kLWZsYWdzICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgcmV0dXJuIDA7CiAgICBh cHBlbmQtY2ZsYWdzICIkQCI7CiAgICBhcHBlbmQtY3h4ZmxhZ3MgIiRAIjsKICAgIGFwcGVuZC1m ZmxhZ3MgIiRAIjsKICAgIHJldHVybiAwCn0KYXBwZW5kLWxkZmxhZ3MgKCkgCnsgCiAgICBbWyAt eiAkKiBdXSAmJiByZXR1cm4gMDsKICAgIGxvY2FsIGZsYWc7CiAgICBmb3IgZmxhZyBpbiAiJEAi OwogICAgZG8KICAgICAgICBbWyAke2ZsYWd9ID09IC1sKiBdXSAmJiBld2FybiAiQXBwZW5kaW5n IGEgbGlicmFyeSBsaW5rIGluc3RydWN0aW9uICgke2ZsYWd9KTsgbGlicmFyaWVzIHRvIGxpbmsg dG8gc2hvdWxkIG5vdCBiZSBwYXNzZWQgdGhyb3VnaCBMREZMQUdTIjsKICAgIGRvbmU7CiAgICBl eHBvcnQgTERGTEFHUz0iJHtMREZMQUdTfSAkKiI7CiAgICByZXR1cm4gMAp9CmFwcGVuZC1sZnMt ZmxhZ3MgKCkgCnsgCiAgICBbWyAkIyAtbmUgMCBdXSAmJiBkaWUgImFwcGVuZC1sZnMtZmxhZ3Mg dGFrZXMgbm8gYXJndW1lbnRzIjsKICAgIGFwcGVuZC1jcHBmbGFncyAtRF9GSUxFX09GRlNFVF9C SVRTPTY0IC1EX0xBUkdFRklMRV9TT1VSQ0UgLURfTEFSR0VGSUxFNjRfU09VUkNFCn0KYXBwZW5k LWxpYnMgKCkgCnsgCiAgICBbWyAteiAkKiBdXSAmJiByZXR1cm4gMDsKICAgIGxvY2FsIGZsYWc7 CiAgICBmb3IgZmxhZyBpbiAiJEAiOwogICAgZG8KICAgICAgICBbWyAke2ZsYWd9ID09IC1sKiBd XSAmJiBmbGFnPSR7ZmxhZyMtbH07CiAgICAgICAgZXhwb3J0IExJQlM9IiR7TElCU30gLWwke2Zs YWd9IjsKICAgIGRvbmU7CiAgICByZXR1cm4gMAp9CmJ1aWx0X3dpdGhfdXNlICgpIAp7IAogICAg bG9jYWwgaGlkZGVuPSJubyI7CiAgICBpZiBbWyAkMSA9PSAiLS1oaWRkZW4iIF1dOyB0aGVuCiAg ICAgICAgaGlkZGVuPSJ5ZXMiOwogICAgICAgIHNoaWZ0OwogICAgZmk7CiAgICBsb2NhbCBtaXNz aW5nX2FjdGlvbj0iZGllIjsKICAgIGlmIFtbICQxID09ICItLW1pc3NpbmciIF1dOyB0aGVuCiAg ICAgICAgbWlzc2luZ19hY3Rpb249JDI7CiAgICAgICAgc2hpZnQ7CiAgICAgICAgc2hpZnQ7CiAg ICAgICAgY2FzZSAke21pc3NpbmdfYWN0aW9ufSBpbiAKICAgICAgICAgICAgdHJ1ZSB8IGZhbHNl IHwgZGllKQoKICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgIGRp ZSAidW5rbm93biBhY3Rpb24gJyR7bWlzc2luZ19hY3Rpb259JyIKICAgICAgICAgICAgOzsKICAg ICAgICBlc2FjOwogICAgZmk7CiAgICBsb2NhbCBvcHQ9JDE7CiAgICBbWyAke29wdDowOjF9ID0g Ii0iIF1dICYmIHNoaWZ0IHx8IG9wdD0iLWEiOwogICAgbG9jYWwgUEtHPSQoYmVzdF92ZXJzaW9u ICQxKTsKICAgIFtbIC16ICR7UEtHfSBdXSAmJiBkaWUgIlVuYWJsZSB0byByZXNvbHZlICQxIHRv IGFuIGluc3RhbGxlZCBwYWNrYWdlIjsKICAgIHNoaWZ0OwogICAgbG9jYWwgVVNFRklMRT0ke1JP T1R9L3Zhci9kYi9wa2cvJHtQS0d9L1VTRTsKICAgIGxvY2FsIElVU0VGSUxFPSR7Uk9PVH0vdmFy L2RiL3BrZy8ke1BLR30vSVVTRTsKICAgIGlmIFtbICEgLWUgJHtVU0VGSUxFfSBdXSB8fCBbWyAh IC1lICR7SVVTRUZJTEV9ICYmICR7aGlkZGVufSA9PSAibm8iIF1dOyB0aGVuCiAgICAgICAgY2Fz ZSAke21pc3NpbmdfYWN0aW9ufSBpbiAKICAgICAgICAgICAgdHJ1ZSkKICAgICAgICAgICAgICAg IHJldHVybiAwCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGZhbHNlKQogICAgICAgICAgICAg ICAgcmV0dXJuIDEKICAgICAgICAgICAgOzsKICAgICAgICAgICAgZGllKQogICAgICAgICAgICAg ICAgZGllICJVbmFibGUgdG8gZGV0ZXJtaW5lIHdoYXQgVVNFIGZsYWdzICRQS0cgd2FzIGJ1aWx0 IHdpdGgiCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGZpOwogICAgaWYgW1sgJHto aWRkZW59ID09ICJubyIgXV07IHRoZW4KICAgICAgICBsb2NhbCBJVVNFX0JVSUxUPSgkKDwiJHtJ VVNFRklMRX0iKSk7CiAgICAgICAgbG9jYWwgZXhwYW5kOwogICAgICAgIGZvciBleHBhbmQgaW4g JChlY2hvICR7VVNFX0VYUEFORH0gfCB0ciAnWzp1cHBlcjpdJyAnWzpsb3dlcjpdJyk7CiAgICAg ICAgZG8KICAgICAgICAgICAgaWYgW1sgJDEgPT0gJHtleHBhbmR9XyogXV07IHRoZW4KICAgICAg ICAgICAgICAgIGV4cGFuZD0iIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBm aTsKICAgICAgICBkb25lOwogICAgICAgIGlmIFtbIC1uICR7ZXhwYW5kfSBdXTsgdGhlbgogICAg ICAgICAgICBpZiAhIGhhcyAkMSAke0lVU0VfQlVJTFRbQF0jWy0rXX07IHRoZW4KICAgICAgICAg ICAgICAgIGNhc2UgJHttaXNzaW5nX2FjdGlvbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgdHJ1 ZSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gMQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZGllKQogICAg ICAgICAgICAgICAgICAgICAgICBkaWUgIiRQS0cgZG9lcyBub3QgYWN0dWFsbHkgc3VwcG9ydCB0 aGUgJDEgVVNFIGZsYWchIgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICBl c2FjOwogICAgICAgICAgICBmaTsKICAgICAgICBmaTsKICAgIGZpOwogICAgbG9jYWwgVVNFX0JV SUxUPSQoPCR7VVNFRklMRX0pOwogICAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCiAgICAgICAg aWYgW1sgJHtvcHR9ID0gIi1vIiBdXTsgdGhlbgogICAgICAgICAgICBoYXMgJDEgJHtVU0VfQlVJ TFR9ICYmIHJldHVybiAwOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaGFzICQxICR7VVNFX0JV SUxUfSB8fCByZXR1cm4gMTsKICAgICAgICBmaTsKICAgICAgICBzaGlmdDsKICAgIGRvbmU7CiAg ICBbWyAke29wdH0gPSAiLWEiIF1dCn0KY2Ryb21fZ2V0X2NkcyAoKSAKeyAKICAgIGxvY2FsIGNk Y250PTA7CiAgICBsb2NhbCBmPTsKICAgIGZvciBmIGluICIkQCI7CiAgICBkbwogICAgICAgICgo KytjZGNudCkpOwogICAgICAgIGV4cG9ydCBDRFJPTV9DSEVDS18ke2NkY250fT0iJGYiOwogICAg ZG9uZTsKICAgIGV4cG9ydCBDRFJPTV9UT1RBTF9DRFM9JHtjZGNudH07CiAgICBleHBvcnQgQ0RS T01fQ1VSUkVOVF9DRD0xOwogICAgaWYgW1sgLW4gJHtDRF9ST09UfSR7Q0RfUk9PVF8xfSBdXTsg dGhlbgogICAgICAgIGxvY2FsIHZhcj07CiAgICAgICAgY2RjbnQ9MDsKICAgICAgICB3aGlsZSBb WyAke2NkY250fSAtbHQgJHtDRFJPTV9UT1RBTF9DRFN9IF1dOyBkbwogICAgICAgICAgICAoKCsr Y2RjbnQpKTsKICAgICAgICAgICAgdmFyPSJDRF9ST09UXyR7Y2RjbnR9IjsKICAgICAgICAgICAg W1sgLXogJHshdmFyfSBdXSAmJiB2YXI9IkNEX1JPT1QiOwogICAgICAgICAgICBpZiBbWyAteiAk eyF2YXJ9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlZXJyb3IgIllvdSBtdXN0IGVpdGhlciB1 c2UganVzdCB0aGUgQ0RfUk9PVCI7CiAgICAgICAgICAgICAgICBlZXJyb3IgIm9yIHNwZWNpZnkg QUxMIHRoZSBDRF9ST09UX1ggdmFyaWFibGVzLiI7CiAgICAgICAgICAgICAgICBlZXJyb3IgIklu IHRoaXMgY2FzZSwgeW91IHdpbGwgbmVlZCAke0NEUk9NX1RPVEFMX0NEU30gQ0RfUk9PVF9YIHZh cmlhYmxlcy4iOwogICAgICAgICAgICAgICAgZGllICJjb3VsZCBub3QgbG9jYXRlIENEX1JPT1Rf JHtjZGNudH0iOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgICAgIGV4cG9ydCBD RFJPTV9ST09UPSR7Q0RfUk9PVF8xOi0ke0NEX1JPT1R9fTsKICAgICAgICBlaW5mbyAiRm91bmQg Q0QgIyR7Q0RST01fQ1VSUkVOVF9DRH0gcm9vdCBhdCAke0NEUk9NX1JPT1R9IjsKICAgICAgICBl eHBvcnQgQ0RST01fU0VUPS0xOwogICAgICAgIGZvciBmIGluICR7Q0RST01fQ0hFQ0tfMS8vOi8g fTsKICAgICAgICBkbwogICAgICAgICAgICAoKCsrQ0RST01fU0VUKSk7CiAgICAgICAgICAgIFtb IC1lICR7Q0RST01fUk9PVH0vJHtmfSBdXSAmJiBicmVhazsKICAgICAgICBkb25lOwogICAgICAg IGV4cG9ydCBDRFJPTV9NQVRDSD0ke2Z9OwogICAgICAgIHJldHVybjsKICAgIGZpOwogICAgaWYg W1sgJHtDRFJPTV9UT1RBTF9DRFN9IC1lcSAxIF1dOyB0aGVuCiAgICAgICAgZWluZm8gIlRoaXMg ZWJ1aWxkIHdpbGwgbmVlZCB0aGUgJHtDRFJPTV9OQU1FOi1jZHJvbSBmb3IgJHtQTn19IjsKICAg ICAgICBlY2hvOwogICAgICAgIGVpbmZvICJJZiB5b3UgZG8gbm90IGhhdmUgdGhlIENELCBidXQg aGF2ZSB0aGUgZGF0YSBmaWxlcyI7CiAgICAgICAgZWluZm8gIm1vdW50ZWQgc29tZXdoZXJlIG9u IHlvdXIgZmlsZXN5c3RlbSwganVzdCBleHBvcnQiOwogICAgICAgIGVpbmZvICJ0aGUgdmFyaWFi bGUgQ0RfUk9PVCBzbyB0aGF0IGl0IHBvaW50cyB0byB0aGUiOwogICAgICAgIGVpbmZvICJkaXJl Y3RvcnkgY29udGFpbmluZyB0aGUgZmlsZXMuIjsKICAgICAgICBlY2hvOwogICAgICAgIGVpbmZv ICJGb3IgZXhhbXBsZToiOwogICAgICAgIGVpbmZvICJleHBvcnQgQ0RfUk9PVD0vbW50L2Nkcm9t IjsKICAgICAgICBlY2hvOwogICAgZWxzZQogICAgICAgIGlmIFtbIC1uICR7Q0RST01fTkFNRV9T RVR9IF1dOyB0aGVuCiAgICAgICAgICAgIGNkY250PTA7CiAgICAgICAgICAgIHdoaWxlIFtbICR7 Y2RjbnR9IC1sdCAke0NEUk9NX1RPVEFMX0NEU30gXV07IGRvCiAgICAgICAgICAgICAgICAoKCsr Y2RjbnQpKTsKICAgICAgICAgICAgICAgIGV4cG9ydCBDRFJPTV9OQU1FXyR7Y2RjbnR9PSIke0NE Uk9NX05BTUVfU0VUWyQoKCR7Y2RjbnR9LTEpKV19IjsKICAgICAgICAgICAgZG9uZTsKICAgICAg ICBmaTsKICAgICAgICBlaW5mbyAiVGhpcyBwYWNrYWdlIHdpbGwgbmVlZCBhY2Nlc3MgdG8gJHtD RFJPTV9UT1RBTF9DRFN9IGNkcy4iOwogICAgICAgIGNkY250PTA7CiAgICAgICAgd2hpbGUgW1sg JHtjZGNudH0gLWx0ICR7Q0RST01fVE9UQUxfQ0RTfSBdXTsgZG8KICAgICAgICAgICAgKCgrK2Nk Y250KSk7CiAgICAgICAgICAgIHZhcj0iQ0RST01fTkFNRV8ke2NkY250fSI7CiAgICAgICAgICAg IFtbICEgLXogJHshdmFyfSBdXSAmJiBlaW5mbyAiIENEICR7Y2RjbnR9OiAkeyF2YXJ9IjsKICAg ICAgICBkb25lOwogICAgICAgIGVjaG87CiAgICAgICAgZWluZm8gIklmIHlvdSBkbyBub3QgaGF2 ZSB0aGUgQ0RzLCBidXQgaGF2ZSB0aGUgZGF0YSBmaWxlcyI7CiAgICAgICAgZWluZm8gIm1vdW50 ZWQgc29tZXdoZXJlIG9uIHlvdXIgZmlsZXN5c3RlbSwganVzdCBleHBvcnQiOwogICAgICAgIGVp bmZvICJ0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBzbyB0aGV5IHBvaW50IHRvIHRoZSByaWdodCBw bGFjZToiOwogICAgICAgIGVpbmZvbiAiIjsKICAgICAgICBjZGNudD0wOwogICAgICAgIHdoaWxl IFtbICR7Y2RjbnR9IC1sdCAke0NEUk9NX1RPVEFMX0NEU30gXV07IGRvCiAgICAgICAgICAgICgo KytjZGNudCkpOwogICAgICAgICAgICBlY2hvIC1uICIgQ0RfUk9PVF8ke2NkY250fSI7CiAgICAg ICAgZG9uZTsKICAgICAgICBlY2hvOwogICAgICAgIGVpbmZvICJPciwgaWYgeW91IGhhdmUgYWxs IHRoZSBmaWxlcyBpbiB0aGUgc2FtZSBwbGFjZSwgb3IiOwogICAgICAgIGVpbmZvICJ5b3Ugb25s eSBoYXZlIG9uZSBjZHJvbSwgeW91IGNhbiBleHBvcnQgQ0RfUk9PVCI7CiAgICAgICAgZWluZm8g ImFuZCB0aGF0IHBsYWNlIHdpbGwgYmUgdXNlZCBhcyB0aGUgc2FtZSBkYXRhIHNvdXJjZSI7CiAg ICAgICAgZWluZm8gImZvciBhbGwgdGhlIENEcy4iOwogICAgICAgIGVjaG87CiAgICAgICAgZWlu Zm8gIkZvciBleGFtcGxlOiI7CiAgICAgICAgZWluZm8gImV4cG9ydCBDRF9ST09UXzE9L21udC9j ZHJvbSI7CiAgICAgICAgZWNobzsKICAgIGZpOwogICAgZXhwb3J0IENEUk9NX1NFVD0iIjsKICAg IGV4cG9ydCBDRFJPTV9DVVJSRU5UX0NEPTA7CiAgICBjZHJvbV9sb2FkX25leHRfY2QKfQpjZHJv bV9sb2FkX25leHRfY2QgKCkgCnsgCiAgICBsb2NhbCB2YXI7CiAgICAoKCsrQ0RST01fQ1VSUkVO VF9DRCkpOwogICAgdW5zZXQgQ0RST01fUk9PVDsKICAgIHZhcj1DRF9ST09UXyR7Q0RST01fQ1VS UkVOVF9DRH07CiAgICBbWyAteiAkeyF2YXJ9IF1dICYmIHZhcj0iQ0RfUk9PVCI7CiAgICBpZiBb WyAteiAkeyF2YXJ9IF1dOyB0aGVuCiAgICAgICAgdmFyPSJDRFJPTV9DSEVDS18ke0NEUk9NX0NV UlJFTlRfQ0R9IjsKICAgICAgICBfY2Ryb21fbG9jYXRlX2ZpbGVfb25fY2QgJHshdmFyfTsKICAg IGVsc2UKICAgICAgICBleHBvcnQgQ0RST01fUk9PVD0keyF2YXJ9OwogICAgZmk7CiAgICBlaW5m byAiRm91bmQgQ0QgIyR7Q0RST01fQ1VSUkVOVF9DRH0gcm9vdCBhdCAke0NEUk9NX1JPT1R9Igp9 CmNoZWNrX2xpY2Vuc2UgKCkgCnsgCiAgICBsb2NhbCBsaWM9JDE7CiAgICBpZiBbIC16ICIke2xp Y30iIF07IHRoZW4KICAgICAgICBsaWM9IiR7UE9SVERJUn0vbGljZW5zZXMvJHtMSUNFTlNFfSI7 CiAgICBlbHNlCiAgICAgICAgaWYgWyAtZSAiJHtQT1JURElSfS9saWNlbnNlcy8ke2xpY30iIF07 IHRoZW4KICAgICAgICAgICAgbGljPSIke1BPUlRESVJ9L2xpY2Vuc2VzLyR7bGljfSI7CiAgICAg ICAgZWxzZQogICAgICAgICAgICBpZiBbIC1lICIke1BXRH0vJHtsaWN9IiBdOyB0aGVuCiAgICAg ICAgICAgICAgICBsaWM9IiR7UFdEfS8ke2xpY30iOwogICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICBpZiBbIC1lICIke2xpY30iIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICBsaWM9 IiR7bGljfSI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7 CiAgICBmaTsKICAgIGxvY2FsIGw9ImBiYXNlbmFtZSAke2xpY31gIjsKICAgIGxvY2FsIGFsaWM7 CiAgICBlc2hvcHRzX3B1c2ggLW8gbm9nbG9iOwogICAgZm9yIGFsaWMgaW4gJHtBQ0NFUFRfTElD RU5TRX07CiAgICBkbwogICAgICAgIGlmIFtbICR7YWxpY30gPT0gJHtsfSBdXTsgdGhlbgogICAg ICAgICAgICBlc2hvcHRzX3BvcDsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgZmk7CiAg ICBkb25lOwogICAgZXNob3B0c19wb3A7CiAgICBbICEgLWYgIiR7bGljfSIgXSAmJiBkaWUgIkNv dWxkIG5vdCBmaW5kIHJlcXVlc3RlZCBsaWNlbnNlICR7bGljfSI7CiAgICBsb2NhbCBsaWNtc2c9 JChlbWt0ZW1wKTsKICAgIGNhdCA+ICR7bGljbXNnfSAgPDwtRU9GCioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKVGhlIGZvbGxvd2luZyBs aWNlbnNlIG91dGxpbmVzIHRoZSB0ZXJtcyBvZiB1c2Ugb2YgdGhpcwpwYWNrYWdlLiAgWW91IE1V U1QgYWNjZXB0IHRoaXMgbGljZW5zZSBmb3IgaW5zdGFsbGF0aW9uIHRvCmNvbnRpbnVlLiAgV2hl biB5b3UgYXJlIGRvbmUgdmlld2luZywgaGl0ICdxJy4JSWYgeW91CkNUUkwrQyBvdXQgb2YgdGhp cywgdGhlIGluc3RhbGwgd2lsbCBub3QgcnVuIQoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpFT0YKCiAgICBjYXQgJHtsaWN9ID4+ICR7 bGljbXNnfTsKICAgICR7UEFHRVI6LWxlc3N9ICR7bGljbXNnfSB8fCBkaWUgIkNvdWxkIG5vdCBl eGVjdXRlIHBhZ2VyICgke1BBR0VSfSkgdG8gYWNjZXB0ICR7bGljfSI7CiAgICBlaW5mb24gIkRv IHlvdSBhY2NlcHQgdGhlIHRlcm1zIG9mIHRoaXMgbGljZW5zZSAoJHtsfSk/IFt5ZXMvbm9dICI7 CiAgICByZWFkIGFsaWM7CiAgICBjYXNlICR7YWxpY30gaW4gCiAgICAgICAgeWVzIHwgWWVzIHwg eSB8IFkpCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAg ICAgICBlY2hvOwogICAgICAgICAgICBlY2hvOwogICAgICAgICAgICBlY2hvOwogICAgICAgICAg ICBlZXJyb3IgIllvdSBNVVNUIGFjY2VwdCB0aGUgbGljZW5zZSB0byBjb250aW51ZSEgIEV4aXRp bmchIjsKICAgICAgICAgICAgZGllICJGYWlsZWQgdG8gYWNjZXB0IGxpY2Vuc2UiCiAgICAgICAg OzsKICAgIGVzYWMKfQpjbGVhbmVyX21zZyAoKSAKeyAKICAgIGVlcnJvciAiWW91IGhhdmUgaGFk IG11bHRpcGxlIHZlcnNpb25zIG9mIHBlcmwuIEl0IGlzIHJlY29tbWVuZGVkIjsKICAgIGVlcnJv ciAidGhhdCB5b3UgcnVuIHBlcmwtY2xlYW5lciBub3cuIHBlcmwtY2xlYW5lciB3aWxsIjsKICAg IGVlcnJvciAiYXNzaXN0IHdpdGggdGhpcyB0cmFuc2l0aW9uLiBUaGlzIHNjcmlwdCBpcyBjYXBh YmxlIjsKICAgIGVlcnJvciAib2YgY2xlYW5pbmcgb3V0IG9sZCAucGggZmlsZXMsIHJlYnVpbGRp bmcgbW9kdWxlcyBmb3IgIjsKICAgIGVlcnJvciAieW91ciBuZXcgdmVyc2lvbiBvZiBwZXJsLCBh cyB3ZWxsIGFzIHJlLWVtZXJnaW5nIjsKICAgIGVlcnJvciAiYXBwbGljYXRpb25zIHRoYXQgY29t cGlsZWQgYWdhaW5zdCB5b3VyIG9sZCBsaWJwZXJsJChnZXRfbGlibmFtZSkiOwogICAgZWVycm9y OwogICAgZWVycm9yICJQTEVBU0UgRE8gTk9UIElOVEVSUlVQVCBUSEUgUlVOTklORyBPRiBUSElT IFNDUklQVC4iOwogICAgZWVycm9yICJQYXJ0IG9mIHRoZSByZWJ1aWxkaW5nIG9mIGFwcGxpY2F0 aW9ucyBjb21waWxlZCBhZ2FpbnN0ICI7CiAgICBlZXJyb3IgInlvdXIgb2xkIGxpYnBlcmwgaW52 b2x2ZXMgdGVtcG9yYXJpbHkgdW5tZXJnaW5nIjsKICAgIGVlcnJvciAidGhlbSAtIGludGVycnVw dGlvbnMgY291bGQgbGVhdmUgeW91IHdpdGggdW5tZXJnZWQiOwogICAgZWVycm9yICJwYWNrYWdl cyBiZWZvcmUgdGhleSBjYW4gYmUgcmVtZXJnZWQuIjsKICAgIGVlcnJvciAiIjsKICAgIGVlcnJv ciAiSWYgeW91IGhhdmUgcnVuIHBlcmwtY2xlYW5lciBhbmQgYSBwYWNrYWdlIHN0aWxsIGdpdmVz IjsKICAgIGVlcnJvciAieW91IHRyb3VibGUsIGFuZCByZS1lbWVyZ2luZyBpdCBmYWlscyB0byBj b3JyZWN0IjsKICAgIGVlcnJvciAidGhlIHByb2JsZW0sIHBsZWFzZSBjaGVjayBodHRwOi8vYnVn cy5nZW50b28ub3JnLyI7CiAgICBlZXJyb3IgImZvciBtb3JlIGluZm9ybWF0aW9uIG9yIHRvIHJl cG9ydCBhIGJ1Zy4iOwogICAgZWVycm9yICIiCn0KZGxvcGVuX2xpYiAoKSAKeyAKICAgIGNhc2Ug IiR7Q0hPU1R9IiBpbiAKICAgICAgICAqLWxpbnV4LWdudSogfCAqLWxpbnV4LXVjbGliYyB8ICot aW50ZXJpeCopCiAgICAgICAgICAgIGVjaG8gIi1sZGwiCiAgICAgICAgOzsKICAgIGVzYWMKfQpk b2ljb24gKCkgCnsgCiAgICAoIGxvY2FsIGkgaiByZXQ7CiAgICBpbnNpbnRvIC91c3Ivc2hhcmUv cGl4bWFwczsKICAgIGZvciBpIGluICIkQCI7CiAgICBkbwogICAgICAgIGlmIFtbIC1mICR7aX0g XV07IHRoZW4KICAgICAgICAgICAgZG9pbnMgIiR7aX0iOwogICAgICAgICAgICAoKHJldCs9JD8p KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbIC1kICR7aX0gXV07IHRoZW4KICAgICAg ICAgICAgICAgIGZvciBqIGluICIke2l9Ii8qLnBuZzsKICAgICAgICAgICAgICAgIGRvCiAgICAg ICAgICAgICAgICAgICAgZG9pbnMgIiR7an0iOwogICAgICAgICAgICAgICAgICAgICgocmV0Kz0k PykpOwogICAgICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg ICAgKCgrK3JldCkpOwogICAgICAgICAgICBmaTsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBl eGl0ICR7cmV0fSApCn0KZG9tZW51ICgpIAp7IAogICAgKCBsb2NhbCBpIGogcmV0PTA7CiAgICBp bnNpbnRvIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zOwogICAgZm9yIGkgaW4gIiRAIjsKICAgIGRv CiAgICAgICAgaWYgW1sgLWYgJHtpfSBdXTsgdGhlbgogICAgICAgICAgICBkb2lucyAiJHtpfSI7 CiAgICAgICAgICAgICgocmV0Kz0kPykpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sg LWQgJHtpfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZm9yIGogaW4gIiR7aX0iLyouZGVza3Rv cDsKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgZG9pbnMgIiR7an0iOwog ICAgICAgICAgICAgICAgICAgICgocmV0Kz0kPykpOwogICAgICAgICAgICAgICAgZG9uZTsKICAg ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgKCgrK3JldCkpOwogICAgICAgICAgICBmaTsK ICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBleGl0ICR7cmV0fSApCn0KZHVhbF9zY3JpcHRzICgp IAp7IAogICAgc3JjX3JlbW92ZV9kdWFsX3NjcmlwdHMgcGVybC1jb3JlL0FyY2hpdmUtVGFyIDEu NTQgcHRhciBwdGFyZGlmZjsKICAgIHNyY19yZW1vdmVfZHVhbF9zY3JpcHRzIHBlcmwtY29yZS9E aWdlc3QtU0hBIDUuNDcgc2hhc3VtOwogICAgc3JjX3JlbW92ZV9kdWFsX3NjcmlwdHMgcGVybC1j b3JlL0NQQU4gMS45NDUuNjAwIGNwYW47CiAgICBzcmNfcmVtb3ZlX2R1YWxfc2NyaXB0cyBwZXJs LWNvcmUvQ1BBTlBMVVMgMC45MDAuMCBjcGFucCBjcGFuMmRpc3QgY3BhbnAtcnVuLXBlcmw7CiAg ICBzcmNfcmVtb3ZlX2R1YWxfc2NyaXB0cyBwZXJsLWNvcmUvRW5jb2RlIDIuMzkgZW5jMnhzIHBp Y29udjsKICAgIHNyY19yZW1vdmVfZHVhbF9zY3JpcHRzIHBlcmwtY29yZS9FeHRVdGlscy1NYWtl TWFrZXIgNi41NiBpbnN0bW9kc2g7CiAgICBzcmNfcmVtb3ZlX2R1YWxfc2NyaXB0cyBwZXJsLWNv cmUvRXh0VXRpbHMtUGFyc2VYUyAyLjIxMC4wIHhzdWJwcDsKICAgIHNyY19yZW1vdmVfZHVhbF9z Y3JpcHRzIHBlcmwtY29yZS9Nb2R1bGUtQnVpbGQgMC4zNjAzIGNvbmZpZ19kYXRhOwogICAgc3Jj X3JlbW92ZV9kdWFsX3NjcmlwdHMgcGVybC1jb3JlL01vZHVsZS1Db3JlTGlzdCAyLjUwMC4wIGNv cmVsaXN0OwogICAgc3JjX3JlbW92ZV9kdWFsX3NjcmlwdHMgcGVybC1jb3JlL1BvZFBhcnNlciAx LjM3MC4wIHBvZDJ1c2FnZSBwb2RjaGVja2VyIHBvZHNlbGVjdDsKICAgIHNyY19yZW1vdmVfZHVh bF9zY3JpcHRzIHBlcmwtY29yZS9UZXN0LUhhcm5lc3MgMy4xNyBwcm92ZTsKICAgIHNyY19yZW1v dmVfZHVhbF9zY3JpcHRzIHBlcmwtY29yZS9wb2RsYXRvcnMgMi4zLjEgcG9kMm1hbiBwb2QydGV4 dAp9CmR5bl9wcmV0ZW5kICgpIAp7IAogICAgaWYgW1sgLWUgJFBPUlRBR0VfQlVJTERESVIvLnBy ZXRlbmRlZCBdXTsgdGhlbgogICAgICAgIHZlY2hvICI+Pj4gSXQgYXBwZWFycyB0aGF0ICckUEYn IGlzIGFscmVhZHkgcHJldGVuZGVkOyBza2lwcGluZy4iOwogICAgICAgIHZlY2hvICI+Pj4gUmVt b3ZlICckUE9SVEFHRV9CVUlMRERJUi8ucHJldGVuZGVkJyB0byBmb3JjZSBwcmV0ZW5kLiI7CiAg ICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIGVidWlsZF9waGFzZSBwcmVfcGtnX3ByZXRlbmQ7 CiAgICBlYnVpbGRfcGhhc2UgcGtnX3ByZXRlbmQ7CiAgICAgPj4gIiRQT1JUQUdFX0JVSUxERElS Ly5wcmV0ZW5kZWQiIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSAkUE9SVEFHRV9CVUlMRERJUi8u cHJldGVuZGVkIjsKICAgIGVidWlsZF9waGFzZSBwb3N0X3BrZ19wcmV0ZW5kCn0KZWJlZXAgKCkg CnsgCiAgICBld2FybiAiUUEgTm90aWNlOiBlYmVlcCBpcyBub3QgZGVmaW5lZCBpbiBFQVBJPSR7 RUFQSX0sIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGh0dHA6Ly9idWdzLmdlbnRvby5vcmciCn0KZWN2 c19jbGVhbiAoKSAKeyAKICAgIFtbIC16ICQqIF1dICYmIHNldCAtLSAuOwogICAgZmluZCAiJEAi IC10eXBlIGQgLW5hbWUgJ0NWUycgLXBydW5lIC1wcmludDAgfCB4YXJncyAtMCBybSAtcmY7CiAg ICBmaW5kICIkQCIgLXR5cGUgZiAtbmFtZSAnLmN2cyonIC1wcmludDAgfCB4YXJncyAtMCBybSAt cmYKfQplZG9zMnVuaXggKCkgCnsgCiAgICBbWyAkIyAtZXEgMCBdXSAmJiByZXR1cm4gMDsKICAg IHNlZCAtaSAncy9cciQvLycgLS0gIiRAIiB8fCBkaWUKfQplZ2V0ZW50ICgpIAp7IAogICAgY2Fz ZSAke0NIT1NUfSBpbiAKICAgICAgICAqLWRhcndpbls2NzhdKQogICAgICAgICAgICBjYXNlICIk MiIgaW4gCiAgICAgICAgICAgICAgICAqWyEwLTldKikKICAgICAgICAgICAgICAgICAgICBuaWR1 bXAgJDEgLiB8IGF3ayAtRiI6IiAieyBpZiAoXCQxIH4gL14kMlwkLykge3ByaW50IFwkMDtleGl0 O30gfSIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAg ICAgICAgIG5pZHVtcCAkMSAuIHwgYXdrIC1GIjoiICJ7IGlmIChcJDMgPT0gJDIpIHtwcmludCBc JDA7ZXhpdDt9IH0iCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICBlc2FjCiAgICAgICAg OzsKICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAgIGxvY2FsIG15dHlwZT0kMTsKICAgICAg ICAgICAgW1sgInBhc3N3ZCIgPT0gJG15dHlwZSBdXSAmJiBteXR5cGU9IlVzZXJzIjsKICAgICAg ICAgICAgW1sgImdyb3VwIiA9PSAkbXl0eXBlIF1dICYmIG15dHlwZT0iR3JvdXBzIjsKICAgICAg ICAgICAgY2FzZSAiJDIiIGluIAogICAgICAgICAgICAgICAgKlshMC05XSopCiAgICAgICAgICAg ICAgICAgICAgZHNjbCAuIC1yZWFkIC8kbXl0eXBlLyQyIDI+IC9kZXYvbnVsbCB8IGdyZXAgUmVj b3JkTmFtZQogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICopCiAgICAgICAgICAg ICAgICAgICAgbG9jYWwgbXlrZXk9IlVuaXF1ZUlEIjsKICAgICAgICAgICAgICAgICAgICBbWyAk bXl0eXBlID09ICJHcm91cHMiIF1dICYmIG15a2V5PSJQcmltYXJ5R3JvdXBJRCI7CiAgICAgICAg ICAgICAgICAgICAgZHNjbCAuIC1zZWFyY2ggLyRteXR5cGUgJG15a2V5ICQyIDI+IC9kZXYvbnVs bAogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgZXNhYwogICAgICAgIDs7CiAgICAgICAg Ki1mcmVlYnNkKiB8ICotZHJhZ29uZmx5KikKICAgICAgICAgICAgbG9jYWwgb3B0cyBhY3Rpb249 InVzZXIiOwogICAgICAgICAgICBbWyAkMSA9PSAicGFzc3dkIiBdXSB8fCBhY3Rpb249Imdyb3Vw IjsKICAgICAgICAgICAgaWYgW1sgJDIgPT0gW1s6ZGlnaXQ6XV0qIF1dOyB0aGVuCiAgICAgICAg ICAgICAgICBbWyAke2FjdGlvbn0gPT0gInVzZXIiIF1dICYmIG9wdHM9Ii11IiB8fCBvcHRzPSIt ZyI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBwdyBzaG93ICR7YWN0aW9ufSAke29wdHN9 ICIkMiIgLXEKICAgICAgICA7OwogICAgICAgICotbmV0YnNkKiB8ICotb3BlbmJzZCopCiAgICAg ICAgICAgIGdyZXAgIiQyOlwqOiIgL2V0Yy8kMQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAg ICAgICAgdHlwZSAtcCBuc2NkICY+L2Rldi9udWxsICYmIG5zY2QgLWkgIiQxIjsKICAgICAgICAg ICAgZ2V0ZW50ICIkMSIgIiQyIgogICAgICAgIDs7CiAgICBlc2FjCn0KZWdldGhvbWUgKCkgCnsg CiAgICBlbnQ9JChlZ2V0ZW50IHBhc3N3ZCAkMSk7CiAgICBjYXNlICR7Q0hPU1R9IGluIAogICAg ICAgICotZGFyd2luKiB8ICotZnJlZWJzZCogfCAqLWRyYWdvbmZseSopCiAgICAgICAgICAgIGVj aG8gJHtlbnR9IHwgY3V0IC1kOiAtZjkKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAg IGVjaG8gJHtlbnR9IHwgY3V0IC1kOiAtZjYKICAgICAgICA7OwogICAgZXNhYwp9CmVnZXRzaGVs bCAoKSAKeyAKICAgIGVudD0kKGVnZXRlbnQgcGFzc3dkICIkMSIpOwogICAgY2FzZSAke0NIT1NU fSBpbiAKICAgICAgICAqLWRhcndpbiogfCAqLWZyZWVic2QqIHwgKi1kcmFnb25mbHkqKQogICAg ICAgICAgICBlY2hvICR7ZW50fSB8IGN1dCAtZDogLWYxMAogICAgICAgIDs7CiAgICAgICAgKikK ICAgICAgICAgICAgZWNobyAke2VudH0gY3V0IC1kOiAtZjcKICAgICAgICA7OwogICAgZXNhYwp9 CmVta3RlbXAgKCkgCnsgCiAgICBsb2NhbCBleGU9InRvdWNoIjsKICAgIFtbICQxID09IC1kIF1d ICYmIGV4ZT0ibWtkaXIiICYmIHNoaWZ0OwogICAgbG9jYWwgdG9wZGlyPSQxOwogICAgaWYgW1sg LXogJHt0b3BkaXJ9IF1dOyB0aGVuCiAgICAgICAgW1sgLXogJHtUfSBdXSAmJiB0b3BkaXI9Ii90 bXAiIHx8IHRvcGRpcj0ke1R9OwogICAgZmk7CiAgICBpZiAhIHR5cGUgLVAgbWt0ZW1wID4gL2Rl di9udWxsOyB0aGVuCiAgICAgICAgbG9jYWwgdG1wPS87CiAgICAgICAgd2hpbGUgW1sgLWUgJHt0 bXB9IF1dOyBkbwogICAgICAgICAgICB0bXA9JHt0b3BkaXJ9L3RtcC4ke1JBTkRPTX0uJHtSQU5E T019LiR7UkFORE9NfTsKICAgICAgICBkb25lOwogICAgICAgICR7ZXhlfSAiJHt0bXB9IiB8fCAk e2V4ZX0gLXAgIiR7dG1wfSI7CiAgICAgICAgZWNobyAiJHt0bXB9IjsKICAgIGVsc2UKICAgICAg ICBpZiBbWyAke2V4ZX0gPT0gInRvdWNoIiBdXTsgdGhlbgogICAgICAgICAgICBUTVBESVI9IiR7 dG9wZGlyfSIgbWt0ZW1wIC10IHRtcC5YWFhYWFhYWFhYOwogICAgICAgIGVsc2UKICAgICAgICAg ICAgVE1QRElSPSIke3RvcGRpcn0iIG1rdGVtcCAtZHQgdG1wLlhYWFhYWFhYWFg7CiAgICAgICAg Zmk7CiAgICBmaQp9CmVuZXdncm91cCAoKSAKeyAKICAgIGNhc2UgJHtFQlVJTERfUEhBU0V9IGlu IAogICAgICAgIHVucGFjayB8IGNvbXBpbGUgfCB0ZXN0IHwgaW5zdGFsbCkKICAgICAgICAgICAg ZWVycm9yICInZW5ld2dyb3VwKCknIGNhbGxlZCBmcm9tICcke0VCVUlMRF9QSEFTRX0oKScgd2hp Y2ggaXMgbm90IGEgcGtnXyogZnVuY3Rpb24uIjsKICAgICAgICAgICAgZWVycm9yICJQYWNrYWdl IGZhaWxzIGF0IFFBIGFuZCBhdCBsaWZlLiAgUGxlYXNlIGZpbGUgYSBidWcuIjsKICAgICAgICAg ICAgZGllICJCYWQgcGFja2FnZSEgIGVuZXdncm91cCBpcyBvbmx5IGZvciB1c2UgaW4gcGtnXyog ZnVuY3Rpb25zISIKICAgICAgICA7OwogICAgZXNhYzsKICAgIGxvY2FsIGVncm91cD0iJDEiOwog ICAgc2hpZnQ7CiAgICBpZiBbIC16ICIke2Vncm91cH0iIF07IHRoZW4KICAgICAgICBlZXJyb3Ig Ik5vIGdyb3VwIHNwZWNpZmllZCAhIjsKICAgICAgICBkaWUgIkNhbm5vdCBjYWxsIGVuZXdncm91 cCB3aXRob3V0IGEgZ3JvdXAiOwogICAgZmk7CiAgICBpZiBbWyAtbiAkKGVnZXRlbnQgZ3JvdXAg IiR7ZWdyb3VwfSIpIF1dOyB0aGVuCiAgICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIGVpbmZv ICJBZGRpbmcgZ3JvdXAgJyR7ZWdyb3VwfScgdG8geW91ciBzeXN0ZW0gLi4uIjsKICAgIGxvY2Fs IG9wdHM9OwogICAgbG9jYWwgZWdpZD0iJDEiOwogICAgc2hpZnQ7CiAgICBpZiBbICEgLXogIiR7 ZWdpZH0iIF07IHRoZW4KICAgICAgICBpZiBbICIke2VnaWR9IiAtZ3QgMCBdOyB0aGVuCiAgICAg ICAgICAgIGlmIFsgLXogImBlZ2V0ZW50IGdyb3VwICR7ZWdpZH1gIiBdOyB0aGVuCiAgICAgICAg ICAgICAgICBpZiBbWyAiJHtDSE9TVH0iID09ICotZGFyd2luKiBdXTsgdGhlbgogICAgICAgICAg ICAgICAgICAgIG9wdHM9IiR7b3B0c30gJHtlZ2lkfSI7CiAgICAgICAgICAgICAgICBlbHNlCiAg ICAgICAgICAgICAgICAgICAgb3B0cz0iJHtvcHRzfSAtZyAke2VnaWR9IjsKICAgICAgICAgICAg ICAgIGZpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBlZ2lkPSJuZXh0IGF2YWls YWJsZTsgcmVxdWVzdGVkIGdpZCB0YWtlbiI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGVsc2UK ICAgICAgICAgICAgZWVycm9yICJHcm91cGlkIGdpdmVuIGJ1dCBpcyBub3QgZ3JlYXRlciB0aGFu IDAgISI7CiAgICAgICAgICAgIGRpZSAiJHtlZ2lkfSBpcyBub3QgYSB2YWxpZCBHSUQiOwogICAg ICAgIGZpOwogICAgZWxzZQogICAgICAgIGVnaWQ9Im5leHQgYXZhaWxhYmxlIjsKICAgIGZpOwog ICAgZWluZm8gIiAtIEdyb3VwaWQ6ICR7ZWdpZH0iOwogICAgbG9jYWwgZWV4dHJhPSIkQCI7CiAg ICBvcHRzPSIke29wdHN9ICR7ZWV4dHJhfSI7CiAgICBsb2NhbCBvbGRzYW5kYm94PSIke1NBTkRC T1hfT059IjsKICAgIGV4cG9ydCBTQU5EQk9YX09OPSIwIjsKICAgIGNhc2UgJHtDSE9TVH0gaW4g CiAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAgICBpZiBbICEgLXogIiR7ZWV4dHJhfSIgXTsg dGhlbgogICAgICAgICAgICAgICAgZWluZm8gIkV4dHJhIG9wdGlvbnMgYXJlIG5vdCBzdXBwb3J0 ZWQgb24gRGFyd2luL09TIFggeWV0IjsKICAgICAgICAgICAgICAgIGVpbmZvICJQbGVhc2UgcmVw b3J0IHRoZSBlYnVpbGQgYWxvbmcgd2l0aCB0aGUgaW5mbyBiZWxvdyI7CiAgICAgICAgICAgICAg ICBlaW5mbyAiZWV4dHJhOiAke2VleHRyYX0iOwogICAgICAgICAgICAgICAgZGllICJSZXF1aXJl ZCBmdW5jdGlvbiBtaXNzaW5nIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGNhc2UgJHtl Z2lkfSBpbiAKICAgICAgICAgICAgICAgICpbITAtOV0qKQogICAgICAgICAgICAgICAgICAgIGZv ciAoKGVnaWQgPSAxMDE7IGVnaWQgPD0gOTk5OyBlZ2lkKyspKQogICAgICAgICAgICAgICAgICAg IGRvCiAgICAgICAgICAgICAgICAgICAgICAgIFtbIC16ICQoZWdldGVudCBncm91cCAke2VnaWR9 KSBdXSAmJiBicmVhazsKICAgICAgICAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICBlc2FjOwogICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC9ncm91cHMvJHtl Z3JvdXB9IGdpZCAke2VnaWR9OwogICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC9ncm91cHMvJHtl Z3JvdXB9IHBhc3N3ZCAnKicKICAgICAgICA7OwogICAgICAgICotZnJlZWJzZCogfCAqLWRyYWdv bmZseSopCiAgICAgICAgICAgIGNhc2UgJHtlZ2lkfSBpbiAKICAgICAgICAgICAgICAgICpbITAt OV0qKQogICAgICAgICAgICAgICAgICAgIGZvciAoKGVnaWQgPSAxMDE7IGVnaWQgPD0gOTk5OyBl Z2lkKyspKQogICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgIFtb IC16ICQoZWdldGVudCBncm91cCAke2VnaWR9KSBdXSAmJiBicmVhazsKICAgICAgICAgICAgICAg ICAgICBkb25lCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICBlc2FjOwogICAgICAgICAg ICBwdyBncm91cGFkZCAke2Vncm91cH0gLWcgJHtlZ2lkfSB8fCBkaWUgImVuZXdncm91cCBmYWls ZWQiCiAgICAgICAgOzsKICAgICAgICAqLW5ldGJzZCopCiAgICAgICAgICAgIGNhc2UgJHtlZ2lk fSBpbiAKICAgICAgICAgICAgICAgICpbITAtOV0qKQogICAgICAgICAgICAgICAgICAgIGZvciAo KGVnaWQgPSAxMDE7IGVnaWQgPD0gOTk5OyBlZ2lkKyspKQogICAgICAgICAgICAgICAgICAgIGRv CiAgICAgICAgICAgICAgICAgICAgICAgIFtbIC16ICQoZWdldGVudCBncm91cCAke2VnaWR9KSBd XSAmJiBicmVhazsKICAgICAgICAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICAgICA7Owog ICAgICAgICAgICBlc2FjOwogICAgICAgICAgICBncm91cGFkZCAtZyAke2VnaWR9ICR7ZWdyb3Vw fSB8fCBkaWUgImVuZXdncm91cCBmYWlsZWQiCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAg ICAgICBncm91cGFkZCAtciAke29wdHN9ICR7ZWdyb3VwfSB8fCBkaWUgImVuZXdncm91cCBmYWls ZWQiCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBleHBvcnQgU0FOREJPWF9PTj0iJHtvbGRzYW5k Ym94fSIKfQplbmV3dXNlciAoKSAKeyAKICAgIGNhc2UgJHtFQlVJTERfUEhBU0V9IGluIAogICAg ICAgIHVucGFjayB8IGNvbXBpbGUgfCB0ZXN0IHwgaW5zdGFsbCkKICAgICAgICAgICAgZWVycm9y ICInZW5ld3VzZXIoKScgY2FsbGVkIGZyb20gJyR7RUJVSUxEX1BIQVNFfSgpJyB3aGljaCBpcyBu b3QgYSBwa2dfKiBmdW5jdGlvbi4iOwogICAgICAgICAgICBlZXJyb3IgIlBhY2thZ2UgZmFpbHMg YXQgUUEgYW5kIGF0IGxpZmUuICBQbGVhc2UgZmlsZSBhIGJ1Zy4iOwogICAgICAgICAgICBkaWUg IkJhZCBwYWNrYWdlISAgZW5ld3VzZXIgaXMgb25seSBmb3IgdXNlIGluIHBrZ18qIGZ1bmN0aW9u cyEiCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBsb2NhbCBldXNlcj0kMTsKICAgIHNoaWZ0Owog ICAgaWYgW1sgLXogJHtldXNlcn0gXV07IHRoZW4KICAgICAgICBlZXJyb3IgIk5vIHVzZXJuYW1l IHNwZWNpZmllZCAhIjsKICAgICAgICBkaWUgIkNhbm5vdCBjYWxsIGVuZXd1c2VyIHdpdGhvdXQg YSB1c2VybmFtZSI7CiAgICBmaTsKICAgIGlmIFtbIC1uICQoZWdldGVudCBwYXNzd2QgIiR7ZXVz ZXJ9IikgXV07IHRoZW4KICAgICAgICByZXR1cm4gMDsKICAgIGZpOwogICAgZWluZm8gIkFkZGlu ZyB1c2VyICcke2V1c2VyfScgdG8geW91ciBzeXN0ZW0gLi4uIjsKICAgIGxvY2FsIG9wdHM9Owog ICAgbG9jYWwgZXVpZD0kMTsKICAgIHNoaWZ0OwogICAgaWYgW1sgLW4gJHtldWlkfSAmJiAke2V1 aWR9ICE9IC0xIF1dOyB0aGVuCiAgICAgICAgaWYgW1sgJHtldWlkfSAtZ3QgMCBdXTsgdGhlbgog ICAgICAgICAgICBpZiBbWyAtbiAkKGVnZXRlbnQgcGFzc3dkICR7ZXVpZH0pIF1dOyB0aGVuCiAg ICAgICAgICAgICAgICBldWlkPSJuZXh0IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZWxzZQog ICAgICAgICAgICBlZXJyb3IgIlVzZXJpZCBnaXZlbiBidXQgaXMgbm90IGdyZWF0ZXIgdGhhbiAw ICEiOwogICAgICAgICAgICBkaWUgIiR7ZXVpZH0gaXMgbm90IGEgdmFsaWQgVUlEIjsKICAgICAg ICBmaTsKICAgIGVsc2UKICAgICAgICBldWlkPSJuZXh0IjsKICAgIGZpOwogICAgaWYgW1sgJHtl dWlkfSA9PSAibmV4dCIgXV07IHRoZW4KICAgICAgICBmb3IgKChldWlkID0gMTAxOyBldWlkIDw9 IDk5OTsgZXVpZCsrKSkKICAgICAgICBkbwogICAgICAgICAgICBbWyAteiAkKGVnZXRlbnQgcGFz c3dkICR7ZXVpZH0pIF1dICYmIGJyZWFrOwogICAgICAgIGRvbmU7CiAgICBmaTsKICAgIG9wdHM9 IiR7b3B0c30gLXUgJHtldWlkfSI7CiAgICBlaW5mbyAiIC0gVXNlcmlkOiAke2V1aWR9IjsKICAg IGxvY2FsIGVzaGVsbD0kMTsKICAgIHNoaWZ0OwogICAgaWYgW1sgISAteiAke2VzaGVsbH0gXV0g JiYgW1sgJHtlc2hlbGx9ICE9ICItMSIgXV07IHRoZW4KICAgICAgICBpZiBbWyAhIC1lICR7Uk9P VH0ke2VzaGVsbH0gXV07IHRoZW4KICAgICAgICAgICAgZWVycm9yICJBIHNoZWxsIHdhcyBzcGVj aWZpZWQgYnV0IGl0IGRvZXMgbm90IGV4aXN0ICEiOwogICAgICAgICAgICBkaWUgIiR7ZXNoZWxs fSBkb2VzIG5vdCBleGlzdCBpbiAke1JPT1R9IjsKICAgICAgICBmaTsKICAgICAgICBpZiBbWyAk e2VzaGVsbH0gPT0gKi9mYWxzZSB8fCAke2VzaGVsbH0gPT0gKi9ub2xvZ2luIF1dOyB0aGVuCiAg ICAgICAgICAgIGVlcnJvciAiRG8gbm90IHNwZWNpZnkgJHtlc2hlbGx9IHlvdXJzZWxmLCB1c2Ug LTEiOwogICAgICAgICAgICBkaWUgIlBhc3MgJy0xJyBhcyB0aGUgc2hlbGwgcGFyYW1ldGVyIjsK ICAgICAgICBmaTsKICAgIGVsc2UKICAgICAgICBmb3Igc2hlbGwgaW4gL3NiaW4vbm9sb2dpbiAv dXNyL3NiaW4vbm9sb2dpbiAvYmluL2ZhbHNlIC91c3IvYmluL2ZhbHNlIC9kZXYvbnVsbDsKICAg ICAgICBkbwogICAgICAgICAgICBbWyAteCAke1JPT1R9JHtzaGVsbH0gXV0gJiYgYnJlYWs7CiAg ICAgICAgZG9uZTsKICAgICAgICBpZiBbWyAke3NoZWxsfSA9PSAiL2Rldi9udWxsIiBdXTsgdGhl bgogICAgICAgICAgICBlZXJyb3IgIlVuYWJsZSB0byBpZGVudGlmeSB0aGUgc2hlbGwgdG8gdXNl LCBwcm9jZWVkaW5nIHdpdGggdXNlcmxhbmQgZGVmYXVsdC4iOwogICAgICAgICAgICBjYXNlICR7 VVNFUkxBTkR9IGluIAogICAgICAgICAgICAgICAgR05VKQogICAgICAgICAgICAgICAgICAgIHNo ZWxsPSIvYmluL2ZhbHNlIgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIEJTRCkK ICAgICAgICAgICAgICAgICAgICBzaGVsbD0iL3NiaW4vbm9sb2dpbiIKICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICBEYXJ3aW4pCiAgICAgICAgICAgICAgICAgICAgc2hlbGw9Ii91 c3Ivc2Jpbi9ub2xvZ2luIgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICopCiAg ICAgICAgICAgICAgICAgICAgZGllICJVbmFibGUgdG8gaWRlbnRpZnkgdGhlIGRlZmF1bHQgc2hl bGwgZm9yIHVzZXJsYW5kICR7VVNFUkxBTkR9IgogICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgZXNhYzsKICAgICAgICBmaTsKICAgICAgICBlc2hlbGw9JHtzaGVsbH07CiAgICBmaTsKICAg IGVpbmZvICIgLSBTaGVsbDogJHtlc2hlbGx9IjsKICAgIG9wdHM9IiR7b3B0c30gLXMgJHtlc2hl bGx9IjsKICAgIGxvY2FsIGVob21lPSQxOwogICAgc2hpZnQ7CiAgICBpZiBbWyAteiAke2Vob21l fSBdXSB8fCBbWyAke2Vob21lfSA9PSAiLTEiIF1dOyB0aGVuCiAgICAgICAgZWhvbWU9Ii9kZXYv bnVsbCI7CiAgICBmaTsKICAgIGVpbmZvICIgLSBIb21lOiAke2Vob21lfSI7CiAgICBvcHRzPSIk e29wdHN9IC1kICR7ZWhvbWV9IjsKICAgIGxvY2FsIGVncm91cHM9JDE7CiAgICBzaGlmdDsKICAg IGlmIFtbICEgLXogJHtlZ3JvdXBzfSBdXTsgdGhlbgogICAgICAgIGxvY2FsIG9sZGlmcz0ke0lG U307CiAgICAgICAgbG9jYWwgZGVmZ3JvdXA9IiIgZXhncm91cHM9IiI7CiAgICAgICAgZXhwb3J0 IElGUz0iLCI7CiAgICAgICAgZm9yIGcgaW4gJHtlZ3JvdXBzfTsKICAgICAgICBkbwogICAgICAg ICAgICBleHBvcnQgSUZTPSR7b2xkaWZzfTsKICAgICAgICAgICAgaWYgW1sgLXogJChlZ2V0ZW50 IGdyb3VwICIke2d9IikgXV07IHRoZW4KICAgICAgICAgICAgICAgIGVlcnJvciAiWW91IG11c3Qg YWRkIGdyb3VwICR7Z30gdG8gdGhlIHN5c3RlbSBmaXJzdCI7CiAgICAgICAgICAgICAgICBkaWUg IiR7Z30gaXMgbm90IGEgdmFsaWQgR0lEIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGlm IFtbIC16ICR7ZGVmZ3JvdXB9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBkZWZncm91cD0ke2d9 OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBleGdyb3Vwcz0iJHtleGdyb3Vwc30s JHtnfSI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBleHBvcnQgSUZTPSIsIjsKICAgICAg ICBkb25lOwogICAgICAgIGV4cG9ydCBJRlM9JHtvbGRpZnN9OwogICAgICAgIG9wdHM9IiR7b3B0 c30gLWcgJHtkZWZncm91cH0iOwogICAgICAgIGlmIFtbICEgLXogJHtleGdyb3Vwc30gXV07IHRo ZW4KICAgICAgICAgICAgb3B0cz0iJHtvcHRzfSAtRyAke2V4Z3JvdXBzOjF9IjsKICAgICAgICBm aTsKICAgIGVsc2UKICAgICAgICBlZ3JvdXBzPSIobm9uZSkiOwogICAgZmk7CiAgICBlaW5mbyAi IC0gR3JvdXBzOiAke2Vncm91cHN9IjsKICAgIGxvY2FsIG9sZHNhbmRib3g9JHtTQU5EQk9YX09O fTsKICAgIGV4cG9ydCBTQU5EQk9YX09OPSIwIjsKICAgIGNhc2UgJHtDSE9TVH0gaW4gCiAgICAg ICAgKi1kYXJ3aW4qKQogICAgICAgICAgICBpZiBbWyAteiAkQCBdXTsgdGhlbgogICAgICAgICAg ICAgICAgZHNjbCAuIGNyZWF0ZSAvdXNlcnMvJHtldXNlcn0gdWlkICR7ZXVpZH07CiAgICAgICAg ICAgICAgICBkc2NsIC4gY3JlYXRlIC91c2Vycy8ke2V1c2VyfSBzaGVsbCAke2VzaGVsbH07CiAg ICAgICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC91c2Vycy8ke2V1c2VyfSBob21lICR7ZWhvbWV9 OwogICAgICAgICAgICAgICAgZHNjbCAuIGNyZWF0ZSAvdXNlcnMvJHtldXNlcn0gcmVhbG5hbWUg ImFkZGVkIGJ5IHBvcnRhZ2UgZm9yICR7UE59IjsKICAgICAgICAgICAgICAgIGxvY2FsIG9sZGlm cz0ke0lGU307CiAgICAgICAgICAgICAgICBleHBvcnQgSUZTPSIsIjsKICAgICAgICAgICAgICAg IGZvciBnIGluICR7ZWdyb3Vwc307CiAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAg ICAgIGRzY2wgLiBtZXJnZSAvZ3JvdXBzLyR7Z30gdXNlcnMgJHtldXNlcn07CiAgICAgICAgICAg ICAgICBkb25lOwogICAgICAgICAgICAgICAgZXhwb3J0IElGUz0ke29sZGlmc307CiAgICAgICAg ICAgIGVsc2UKICAgICAgICAgICAgICAgIGVpbmZvICJFeHRyYSBvcHRpb25zIGFyZSBub3Qgc3Vw cG9ydGVkIG9uIERhcndpbiB5ZXQiOwogICAgICAgICAgICAgICAgZWluZm8gIlBsZWFzZSByZXBv cnQgdGhlIGVidWlsZCBhbG9uZyB3aXRoIHRoZSBpbmZvIGJlbG93IjsKICAgICAgICAgICAgICAg IGVpbmZvICJlZXh0cmE6ICRAIjsKICAgICAgICAgICAgICAgIGRpZSAiUmVxdWlyZWQgZnVuY3Rp b24gbWlzc2luZyI7CiAgICAgICAgICAgIGZpCiAgICAgICAgOzsKICAgICAgICAqLWZyZWVic2Qq IHwgKi1kcmFnb25mbHkqKQogICAgICAgICAgICBpZiBbWyAteiAkQCBdXTsgdGhlbgogICAgICAg ICAgICAgICAgcHcgdXNlcmFkZCAke2V1c2VyfSAke29wdHN9IC1jICJhZGRlZCBieSBwb3J0YWdl IGZvciAke1BOfSIgZGllICJlbmV3dXNlciBmYWlsZWQiOwogICAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICAgICBlaW5mbyAiIC0gRXh0cmE6ICRAIjsKICAgICAgICAgICAgICAgIHB3IHVzZXJh ZGQgJHtldXNlcn0gJHtvcHRzfSAiJEAiIHx8IGRpZSAiZW5ld3VzZXIgZmFpbGVkIjsKICAgICAg ICAgICAgZmkKICAgICAgICA7OwogICAgICAgICotbmV0YnNkKikKICAgICAgICAgICAgaWYgW1sg LXogJEAgXV07IHRoZW4KICAgICAgICAgICAgICAgIHVzZXJhZGQgJHtvcHRzfSAke2V1c2VyfSB8 fCBkaWUgImVuZXd1c2VyIGZhaWxlZCI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg IGVpbmZvICIgLSBFeHRyYTogJEAiOwogICAgICAgICAgICAgICAgdXNlcmFkZCAke29wdHN9ICR7 ZXVzZXJ9ICIkQCIgfHwgZGllICJlbmV3dXNlciBmYWlsZWQiOwogICAgICAgICAgICBmaQogICAg ICAgIDs7CiAgICAgICAgKi1vcGVuYnNkKikKICAgICAgICAgICAgaWYgW1sgLXogJEAgXV07IHRo ZW4KICAgICAgICAgICAgICAgIHVzZXJhZGQgLXUgJHtldWlkfSAtcyAke2VzaGVsbH0gLWQgJHtl aG9tZX0gLWMgIkFkZGVkIGJ5IHBvcnRhZ2UgZm9yICR7UE59IiAtZyAke2Vncm91cHN9ICR7ZXVz ZXJ9IHx8IGRpZSAiZW5ld3VzZXIgZmFpbGVkIjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgZWluZm8gIiAtIEV4dHJhOiAkQCI7CiAgICAgICAgICAgICAgICB1c2VyYWRkIC11ICR7 ZXVpZH0gLXMgJHtlc2hlbGx9IC1kICR7ZWhvbWV9IC1jICJBZGRlZCBieSBwb3J0YWdlIGZvciAk e1BOfSIgLWcgJHtlZ3JvdXBzfSAke2V1c2VyfSAiJEAiIHx8IGRpZSAiZW5ld3VzZXIgZmFpbGVk IjsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGlmIFtb IC16ICRAIF1dOyB0aGVuCiAgICAgICAgICAgICAgICB1c2VyYWRkIC1yICR7b3B0c30gLWMgImFk ZGVkIGJ5IHBvcnRhZ2UgZm9yICR7UE59IiAke2V1c2VyfSB8fCBkaWUgImVuZXd1c2VyIGZhaWxl ZCI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVpbmZvICIgLSBFeHRyYTogJEAi OwogICAgICAgICAgICAgICAgdXNlcmFkZCAtciAke29wdHN9ICIkQCIgJHtldXNlcn0gfHwgZGll ICJlbmV3dXNlciBmYWlsZWQiOwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICBlc2FjOwog ICAgaWYgW1sgISAtZSAke1JPT1R9LyR7ZWhvbWV9IF1dOyB0aGVuCiAgICAgICAgZWluZm8gIiAt IENyZWF0aW5nICR7ZWhvbWV9IGluICR7Uk9PVH0iOwogICAgICAgIG1rZGlyIC1wICIke1JPT1R9 LyR7ZWhvbWV9IjsKICAgICAgICBjaG93biAke2V1c2VyfSAiJHtST09UfS8ke2Vob21lfSI7CiAg ICAgICAgY2htb2QgNzU1ICIke1JPT1R9LyR7ZWhvbWV9IjsKICAgIGZpOwogICAgZXhwb3J0IFNB TkRCT1hfT049JHtvbGRzYW5kYm94fQp9CmVwYXRjaCAoKSAKeyAKICAgIGZ1bmN0aW9uIF9lcGF0 Y2hfZHJhd19saW5lICgpIAogICAgeyAKICAgICAgICBbWyAteiAkMSBdXSAmJiBzZXQgIiQocHJp bnRmICIlNjVzIiAnJykiOwogICAgICAgIGVjaG8gIiR7MS8vPy89fSIKICAgIH07CiAgICB1bnNl dCBQNENPTkZJRyBQNFBPUlQgUDRVU0VSOwogICAgaWYgW1sgJCMgLWd0IDEgXV07IHRoZW4KICAg ICAgICBsb2NhbCBtOwogICAgICAgIGZvciBtIGluICIkQCI7CiAgICAgICAgZG8KICAgICAgICAg ICAgZXBhdGNoICIke219IjsKICAgICAgICBkb25lOwogICAgICAgIHJldHVybiAwOwogICAgZmk7 CiAgICBsb2NhbCBTSU5HTEVfUEFUQ0g9Im5vIjsKICAgIFtbICQjIC1lcSAwIF1dICYmIHNldCAt LSAiJHtFUEFUQ0hfU09VUkNFfSI7CiAgICBpZiBbWyAtZiAkMSBdXTsgdGhlbgogICAgICAgIFNJ TkdMRV9QQVRDSD0ieWVzIjsKICAgICAgICBzZXQgLS0gIiQxIjsKICAgICAgICBsb2NhbCBFUEFU Q0hfU1VGRklYPSQxOwogICAgZWxzZQogICAgICAgIGlmIFtbIC1kICQxIF1dOyB0aGVuCiAgICAg ICAgICAgIHNldCAtLSAiJDEiLyoke0VQQVRDSF9TVUZGSVg6Ky4iJHtFUEFUQ0hfU1VGRklYfSJ9 OwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgLWYgJHtFUEFUQ0hfU09VUkNFfS8kMSBd XTsgdGhlbgogICAgICAgICAgICAgICAgZXBhdGNoICIke0VQQVRDSF9TT1VSQ0V9LyQxIjsKICAg ICAgICAgICAgICAgIHJldHVybiAkPzsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg W1sgJCMgLW5lIDAgXV0gJiYgRVBBVENIX1NPVVJDRT0kMTsKICAgICAgICAgICAgICAgIGVjaG87 CiAgICAgICAgICAgICAgICBlZXJyb3IgIkNhbm5vdCBmaW5kIFwkRVBBVENIX1NPVVJDRSEgIFZh bHVlIGZvciBcJEVQQVRDSF9TT1VSQ0UgaXM6IjsKICAgICAgICAgICAgICAgIGVlcnJvcjsKICAg ICAgICAgICAgICAgIGVlcnJvciAiICAke0VQQVRDSF9TT1VSQ0V9IjsKICAgICAgICAgICAgICAg IGVlcnJvciAiICAoICR7RVBBVENIX1NPVVJDRSMjKi99ICkiOwogICAgICAgICAgICAgICAgZWNo bzsKICAgICAgICAgICAgICAgIGRpZSAiQ2Fubm90IGZpbmQgXCRFUEFUQ0hfU09VUkNFISI7CiAg ICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICBsb2NhbCBQSVBFX0NNRDsKICAg IGNhc2UgJHtFUEFUQ0hfU1VGRklYIyMqXC59IGluIAogICAgICAgIHh6KQogICAgICAgICAgICBQ SVBFX0NNRD0ieHogLWRjIgogICAgICAgIDs7CiAgICAgICAgbHptYSkKICAgICAgICAgICAgUElQ RV9DTUQ9Imx6bWEgLWRjIgogICAgICAgIDs7CiAgICAgICAgYnoyKQogICAgICAgICAgICBQSVBF X0NNRD0iYnppcDIgLWRjIgogICAgICAgIDs7CiAgICAgICAgZ3ogfCBaIHwgeikKICAgICAgICAg ICAgUElQRV9DTUQ9Imd6aXAgLWRjIgogICAgICAgIDs7CiAgICAgICAgWklQIHwgemlwKQogICAg ICAgICAgICBQSVBFX0NNRD0idW56aXAgLXAiCiAgICAgICAgOzsKICAgICAgICAqKQoKICAgICAg ICA7OwogICAgZXNhYzsKICAgIFtbICR7U0lOR0xFX1BBVENIfSA9PSAibm8iIF1dICYmIGVpbmZv ICIke0VQQVRDSF9NVUxUSV9NU0d9IjsKICAgIGxvY2FsIHg7CiAgICBmb3IgeCBpbiAiJEAiOwog ICAgZG8KICAgICAgICBbWyAhIC1mICR7eH0gXV0gJiYgY29udGludWU7CiAgICAgICAgbG9jYWwg cGF0Y2huYW1lPSR7eCMjKi99OwogICAgICAgIGxvY2FsIGE9JHtwYXRjaG5hbWUjKl99OwogICAg ICAgIGE9JHthJSVfKn07CiAgICAgICAgaWYgISBbWyAke1NJTkdMRV9QQVRDSH0gPT0gInllcyIg fHwgJHtFUEFUQ0hfRk9SQ0V9ID09ICJ5ZXMiIHx8ICR7YX0gPT0gYWxsIHx8ICR7YX0gPT0gJHtB UkNIfSBdXTsgdGhlbgogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBmaTsKICAgICAgICBp ZiBbWyAtbiAke0VQQVRDSF9FWENMVURFfSBdXTsgdGhlbgogICAgICAgICAgICBlc2hvcHRzX3B1 c2ggLW8gbm9nbG9iOwogICAgICAgICAgICBsb2NhbCBleDsKICAgICAgICAgICAgZm9yIGV4IGlu ICR7RVBBVENIX0VYQ0xVREV9OwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgaWYgW1sg JHtwYXRjaG5hbWV9ID09ICR7ZXh9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgZXNob3B0 c19wb3A7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgIGZp OwogICAgICAgICAgICBkb25lOwogICAgICAgICAgICBlc2hvcHRzX3BvcDsKICAgICAgICBmaTsK ICAgICAgICBpZiBbWyAke1NJTkdMRV9QQVRDSH0gPT0gInllcyIgXV07IHRoZW4KICAgICAgICAg ICAgaWYgW1sgLW4gJHtFUEFUQ0hfU0lOR0xFX01TR30gXV07IHRoZW4KICAgICAgICAgICAgICAg IGVpbmZvICIke0VQQVRDSF9TSU5HTEVfTVNHfSI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgIGVpbmZvICJBcHBseWluZyAke3BhdGNobmFtZX0gLi4uIjsKICAgICAgICAgICAgZmk7 CiAgICAgICAgZWxzZQogICAgICAgICAgICBlaW5mbyAiICAke3BhdGNobmFtZX0gLi4uIjsKICAg ICAgICBmaTsKICAgICAgICBsb2NhbCBTVERFUlJfVEFSR0VUPSIke1R9LyR7cGF0Y2huYW1lfS5v dXQiOwogICAgICAgIGlmIFtbIC1lICR7U1RERVJSX1RBUkdFVH0gXV07IHRoZW4KICAgICAgICAg ICAgU1RERVJSX1RBUkdFVD0iJHtUfS8ke3BhdGNobmFtZX0tJCQub3V0IjsKICAgICAgICBmaTsK ICAgICAgICBwcmludGYgIioqKioqICVzICoqKioqXG5cbiIgIiR7cGF0Y2huYW1lfSIgPiAiJHtT VERFUlJfVEFSR0VUfSI7CiAgICAgICAgbG9jYWwgY291bnQ9MDsKICAgICAgICBsb2NhbCBQQVRD SF9UQVJHRVQ7CiAgICAgICAgaWYgW1sgLW4gJHtQSVBFX0NNRH0gXV07IHRoZW4KICAgICAgICAg ICAgUEFUQ0hfVEFSR0VUPSIke1R9LyQkLnBhdGNoIjsKICAgICAgICAgICAgZWNobyAiUElQRV9D T01NQU5EOiAgJHtQSVBFX0NNRH0gJHt4fSA+ICR7UEFUQ0hfVEFSR0VUfSIgPj4gIiR7U1RERVJS X1RBUkdFVH0iOwogICAgICAgICAgICBpZiAhICggJHtQSVBFX0NNRH0gIiR7eH0iID4gIiR7UEFU Q0hfVEFSR0VUfSIgKSA+PiAiJHtTVERFUlJfVEFSR0VUfSIgMj4mMTsgdGhlbgogICAgICAgICAg ICAgICAgZWNobzsKICAgICAgICAgICAgICAgIGVlcnJvciAiQ291bGQgbm90IGV4dHJhY3QgcGF0 Y2ghIjsKICAgICAgICAgICAgICAgIGNvdW50PTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgICAgZmk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBQQVRDSF9UQVJHRVQ9JHt4fTsK ICAgICAgICBmaTsKICAgICAgICBsb2NhbCBhYnNfcGF0aHM9JChlZ3JlcCAtbiAnXlstK117M30g LycgIiR7UEFUQ0hfVEFSR0VUfSIgfCBhd2sgJyQyICE9ICIvZGV2L251bGwiIHsgcHJpbnQgfScp OwogICAgICAgIGlmIFtbIC1uICR7YWJzX3BhdGhzfSBdXTsgdGhlbgogICAgICAgICAgICBjb3Vu dD0xOwogICAgICAgICAgICBwcmludGYgIk5PVEU6IHNraXBwaW5nIC1wMCBkdWUgdG8gYWJzb2x1 dGUgcGF0aHMgaW4gcGF0Y2g6XG4lc1xuIiAiJHthYnNfcGF0aHN9IiA+PiAiJHtTVERFUlJfVEFS R0VUfSI7CiAgICAgICAgZmk7CiAgICAgICAgbG9jYWwgcmVsX3BhdGhzPSQoZWdyZXAgLW4gJ15b LStdezN9IFteCV0qWy5dWy5dLycgIiR7UEFUQ0hfVEFSR0VUfSIpOwogICAgICAgIGlmIFtbIC1u ICR7cmVsX3BhdGhzfSBdXTsgdGhlbgogICAgICAgICAgICBlcWF3YXJuICJRQSBOb3RpY2U6IFlv dXIgcGF0Y2ggdXNlcyByZWxhdGl2ZSBwYXRocyAnLi4vJy4iOwogICAgICAgICAgICBlcWF3YXJu ICIgSW4gdGhlIGZ1dHVyZSB0aGlzIHdpbGwgY2F1c2UgYSBmYWlsdXJlLiI7CiAgICAgICAgICAg IGVxYXdhcm4gIiR7cmVsX3BhdGhzfSI7CiAgICAgICAgZmk7CiAgICAgICAgd2hpbGUgW1sgJHtj b3VudH0gLWx0IDUgXV07IGRvCiAgICAgICAgICAgICggX2VwYXRjaF9kcmF3X2xpbmUgIioqKioq ICR7cGF0Y2huYW1lfSAqKioqKiI7CiAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGVjaG8g IlBBVENIIENPTU1BTkQ6ICBwYXRjaCAtcCR7Y291bnR9ICR7RVBBVENIX09QVFN9IDwgJyR7UEFU Q0hfVEFSR0VUfSciOwogICAgICAgICAgICBlY2hvOwogICAgICAgICAgICBfZXBhdGNoX2RyYXdf bGluZSAiKioqKiogJHtwYXRjaG5hbWV9ICoqKioqIjsKICAgICAgICAgICAgcGF0Y2ggLXAke2Nv dW50fSAke0VQQVRDSF9PUFRTfSAtLWRyeS1ydW4gLWYgPCAiJHtQQVRDSF9UQVJHRVR9IiAyPiYx OwogICAgICAgICAgICByZXQ9JD87CiAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGVjaG8g InBhdGNoIHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICR7cmV0fSI7CiAgICAgICAgICAgIGV4 aXQgJHtyZXR9ICkgPj4gIiR7U1RERVJSX1RBUkdFVH0iOwogICAgICAgICAgICBpZiBbICQ/IC1l cSAwIF07IHRoZW4KICAgICAgICAgICAgICAgICggX2VwYXRjaF9kcmF3X2xpbmUgIioqKioqICR7 cGF0Y2huYW1lfSAqKioqKiI7CiAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAg ZWNobyAiQUNUVUFMTFkgQVBQTFlJTkcgJHtwYXRjaG5hbWV9IC4uLiI7CiAgICAgICAgICAgICAg ICBlY2hvOwogICAgICAgICAgICAgICAgX2VwYXRjaF9kcmF3X2xpbmUgIioqKioqICR7cGF0Y2hu YW1lfSAqKioqKiI7CiAgICAgICAgICAgICAgICBwYXRjaCAtcCR7Y291bnR9ICR7RVBBVENIX09Q VFN9IDwgIiR7UEFUQ0hfVEFSR0VUfSIgMj4mMTsKICAgICAgICAgICAgICAgIHJldD0kPzsKICAg ICAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgICAgICBlY2hvICJwYXRjaCBwcm9ncmFtIGV4 aXRlZCB3aXRoIHN0YXR1cyAke3JldH0iOwogICAgICAgICAgICAgICAgZXhpdCAke3JldH0gKSA+ PiAiJHtTVERFUlJfVEFSR0VUfSI7CiAgICAgICAgICAgICAgICBpZiBbICQ/IC1uZSAwIF07IHRo ZW4KICAgICAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgICAgIGVlcnJvciAi QSBkcnktcnVuIG9mIHBhdGNoIGNvbW1hbmQgc3VjY2VlZGVkLCBidXQgYWN0dWFsbHkiOwogICAg ICAgICAgICAgICAgICAgIGVlcnJvciAiYXBwbHlpbmcgdGhlIHBhdGNoIGZhaWxlZCEiOwogICAg ICAgICAgICAgICAgICAgIGNvdW50PTU7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAg ICAgIGJyZWFrOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgOiAkKCggY291bnQrKyApKTsK ICAgICAgICBkb25lOwogICAgICAgIGlmIFtbIC1uICR7UElQRV9DTUR9IF1dOyB0aGVuCiAgICAg ICAgICAgIHJtIC1mICIke1BBVENIX1RBUkdFVH0iOwogICAgICAgIGZpOwogICAgICAgIGlmIFtb ICR7Y291bnR9IC1nZSA1IF1dOyB0aGVuCiAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGVl cnJvciAiRmFpbGVkIFBhdGNoOiAke3BhdGNobmFtZX0gISI7CiAgICAgICAgICAgIGVlcnJvciAi ICggJHtQQVRDSF9UQVJHRVR9ICkiOwogICAgICAgICAgICBlZXJyb3I7CiAgICAgICAgICAgIGVl cnJvciAiSW5jbHVkZSBpbiB5b3VyIGJ1Z3JlcG9ydCB0aGUgY29udGVudHMgb2Y6IjsKICAgICAg ICAgICAgZWVycm9yOwogICAgICAgICAgICBlZXJyb3IgIiAgJHtTVERFUlJfVEFSR0VUfSI7CiAg ICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGRpZSAiRmFpbGVkIFBhdGNoOiAke3BhdGNobmFt ZX0hIjsKICAgICAgICBmaTsKICAgICAgICBybSAtZiAiJHtTVERFUlJfVEFSR0VUfSI7CiAgICAg ICAgZWVuZCAwOwogICAgZG9uZTsKICAgIFtbICR7U0lOR0xFX1BBVENIfSA9PSAibm8iIF1dICYm IGVpbmZvICJEb25lIHdpdGggcGF0Y2hpbmciOwogICAgOgp9CmVwYXRjaF91c2VyICgpIAp7IAog ICAgW1sgJCMgLW5lIDAgXV0gJiYgZGllICJlcGF0Y2hfdXNlciB0YWtlcyBubyBvcHRpb25zIjsK ICAgIGxvY2FsIGFwcGxpZWQ9IiR7VH0vZXBhdGNoX3VzZXIuYXBwbGllZCI7CiAgICBbWyAtZSAk e2FwcGxpZWR9IF1dICYmIHJldHVybiAyOwogICAgbG9jYWwgRVBBVENIX1NPVVJDRSBjaGVjayBi YXNlPSR7UE9SVEFHRV9DT05GSUdST09UJS99L2V0Yy9wb3J0YWdlL3BhdGNoZXM7CiAgICBmb3Ig Y2hlY2sgaW4geyR7Q0FURUdPUll9LyR7UEZ9LCR7Q0FURUdPUll9LyR7UH0sJHtDQVRFR09SWX0v JHtQTn19OwogICAgZG8KICAgICAgICBFUEFUQ0hfU09VUkNFPSR7YmFzZX0vJHtDVEFSR0VUfS8k e2NoZWNrfTsKICAgICAgICBbWyAtciAke0VQQVRDSF9TT1VSQ0V9IF1dIHx8IEVQQVRDSF9TT1VS Q0U9JHtiYXNlfS8ke0NIT1NUfS8ke2NoZWNrfTsKICAgICAgICBbWyAtciAke0VQQVRDSF9TT1VS Q0V9IF1dIHx8IEVQQVRDSF9TT1VSQ0U9JHtiYXNlfS8ke2NoZWNrfTsKICAgICAgICBpZiBbWyAt ZCAke0VQQVRDSF9TT1VSQ0V9IF1dOyB0aGVuCiAgICAgICAgICAgIEVQQVRDSF9TT1VSQ0U9JHtF UEFUQ0hfU09VUkNFfSBFUEFUQ0hfU1VGRklYPSJwYXRjaCIgRVBBVENIX0ZPUkNFPSJ5ZXMiIEVQ QVRDSF9NVUxUSV9NU0c9IkFwcGx5aW5nIHVzZXIgcGF0Y2hlcyBmcm9tICR7RVBBVENIX1NPVVJD RX0gLi4uIiBlcGF0Y2g7CiAgICAgICAgICAgIGVjaG8gIiR7RVBBVENIX1NPVVJDRX0iID4gIiR7 YXBwbGllZH0iOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBmaTsKICAgIGRvbmU7CiAg ICBlY2hvICJub25lIiA+ICIke2FwcGxpZWR9IjsKICAgIHJldHVybiAxCn0KZXBhdXNlICgpIAp7 IAogICAgZXdhcm4gIlFBIE5vdGljZTogZXBhdXNlIGlzIG5vdCBkZWZpbmVkIGluIEVBUEk9JHtF QVBJfSwgcGxlYXNlIGZpbGUgYSBidWcgYXQgaHR0cDovL2J1Z3MuZ2VudG9vLm9yZyIKfQplcHVu dF9jeHggKCkgCnsgCiAgICBsb2NhbCBkaXI9JDE7CiAgICBbWyAteiAke2Rpcn0gXV0gJiYgZGly PSR7U307CiAgICBlYmVnaW4gIlJlbW92aW5nIHVzZWxlc3MgQysrIGNoZWNrcyI7CiAgICBsb2Nh bCBmOwogICAgZmluZCAiJHtkaXJ9IiAtbmFtZSBjb25maWd1cmUgfCB3aGlsZSByZWFkIGY7IGRv CiAgICAgICAgcGF0Y2ggLS1uby1iYWNrdXAtaWYtbWlzbWF0Y2ggLXAwICIke2Z9IiAiJHtQT1JU RElSfS9lY2xhc3MvRUxULXBhdGNoZXMvbm9jeHgvbm9jeHgucGF0Y2giID4gL2Rldi9udWxsOwog ICAgZG9uZTsKICAgIGVlbmQgMAp9CmVzaG9wdHNfcG9wICgpIAp7IAogICAgW1sgJCMgLW5lIDAg XV0gJiYgZGllICJlc2hvcHRzX3BvcCB0YWtlcyBubyBhcmd1bWVudHMiOwogICAgbG9jYWwgaT0k KCggJHsjX19FU0hPUFRTX1NBVkVfX1tAXX0gLSAxICkpOwogICAgW1sgJHtpfSAtZXEgLTEgXV0g JiYgZGllICJlc2hvcHRzX3twdXNoLHBvcH06IHVuYmFsYW5jZWQgcGFpciI7CiAgICBsb2NhbCBz PSR7X19FU0hPUFRTX1NBVkVfX1skaV19OwogICAgdW5zZXQgX19FU0hPUFRTX1NBVkVfX1skaV07 CiAgICBpZiBbWyAke3N9ID09ICJzaG9wdCAtIiogXV07IHRoZW4KICAgICAgICBldmFsICIke3N9 IiB8fCBkaWUgImVzaG9wdHNfcG9wOiBzYW5pdHk6IGludmFsaWQgc2hvcHQgb3B0aW9uczogJHtz fSI7CiAgICBlbHNlCiAgICAgICAgc2V0ICskLSB8fCBkaWUgImVzaG9wdHNfcG9wOiBzYW5pdHk6 IGludmFsaWQgc2hlbGwgc2V0dGluZ3M6ICQtIjsKICAgICAgICBzZXQgLSR7c30gfHwgZGllICJl c2hvcHRzX3BvcDogc2FuaXR5OiB1bmFibGUgdG8gcmVzdG9yZSBzYXZlZCBzaGVsbCBzZXR0aW5n czogJHtzfSI7CiAgICBmaQp9CmVzaG9wdHNfcHVzaCAoKSAKeyAKICAgIGxvY2FsIGk9JHsjX19F U0hPUFRTX1NBVkVfX1tAXX07CiAgICBpZiBbWyAkMSA9PSAtW3N1XSBdXTsgdGhlbgogICAgICAg IF9fRVNIT1BUU19TQVZFX19bJGldPSQoc2hvcHQgLXApOwogICAgICAgIFtbICQjIC1lcSAwIF1d ICYmIHJldHVybiAwOwogICAgICAgIHNob3B0ICIkQCIgfHwgZGllICJlc2hvcHRzX3B1c2g6IGJh ZCBvcHRpb25zIHRvIHNob3B0OiAkKiI7CiAgICBlbHNlCiAgICAgICAgX19FU0hPUFRTX1NBVkVf X1skaV09JC07CiAgICAgICAgW1sgJCMgLWVxIDAgXV0gJiYgcmV0dXJuIDA7CiAgICAgICAgc2V0 ICIkQCIgfHwgZGllICJlc2hvcHRzX3B1c2g6IGJhZCBvcHRpb25zIHRvIHNldDogJCoiOwogICAg ZmkKfQplc3ZuX2NsZWFuICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgc2V0IC0tIC47CiAgICBm aW5kICIkQCIgLXR5cGUgZCAtbmFtZSAnLnN2bicgLXBydW5lIC1wcmludDAgfCB4YXJncyAtMCBy bSAtcmYKfQpmaWx0ZXItZmxhZ3MgKCkgCnsgCiAgICBfZmlsdGVyLWhhcmRlbmVkICIkQCI7CiAg ICBfZmlsdGVyLXZhciBDRkxBR1MgIiRAIjsKICAgIF9maWx0ZXItdmFyIENQUEZMQUdTICIkQCI7 CiAgICBfZmlsdGVyLXZhciBDWFhGTEFHUyAiJEAiOwogICAgX2ZpbHRlci12YXIgRkZMQUdTICIk QCI7CiAgICBfZmlsdGVyLXZhciBGQ0ZMQUdTICIkQCI7CiAgICByZXR1cm4gMAp9CmZpbHRlci1s ZGZsYWdzICgpIAp7IAogICAgX2ZpbHRlci12YXIgTERGTEFHUyAiJEAiOwogICAgcmV0dXJuIDAK fQpmaWx0ZXItbGZzLWZsYWdzICgpIAp7IAogICAgW1sgJCMgLW5lIDAgXV0gJiYgZGllICJmaWx0 ZXItbGZzLWZsYWdzIHRha2VzIG5vIGFyZ3VtZW50cyI7CiAgICBmaWx0ZXItZmxhZ3MgLURfRklM RV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0xBUkdFRklMRTY0X1NPVVJD RQp9CmZpbHRlci1tZnBtYXRoICgpIAp7IAogICAgbG9jYWwgb3JpZ19tZnBtYXRoIG5ld19tYXRo IHBydW5lX21hdGg7CiAgICBvcmlnX21mcG1hdGg9JChnZXQtZmxhZyAtbWZwbWF0aCk7CiAgICBu ZXdfbWF0aD0kKGdldC1mbGFnIG1mcG1hdGgpOwogICAgbmV3X21hdGg9IiAke25ld19tYXRoLy8s LyB9ICI7CiAgICBwcnVuZV9tYXRoPSIiOwogICAgZm9yIHBydW5lX21hdGggaW4gIiRAIjsKICAg IGRvCiAgICAgICAgbmV3X21hdGg9JHtuZXdfbWF0aC8gJHtwcnVuZV9tYXRofSAvIH07CiAgICBk b25lOwogICAgbmV3X21hdGg9JChlY2hvICR7bmV3X21hdGh9KTsKICAgIG5ld19tYXRoPSR7bmV3 X21hdGgvLyAvLH07CiAgICBpZiBbWyAteiAke25ld19tYXRofSBdXTsgdGhlbgogICAgICAgIGZp bHRlci1mbGFncyAke29yaWdfbWZwbWF0aH07CiAgICBlbHNlCiAgICAgICAgcmVwbGFjZS1mbGFn cyAke29yaWdfbWZwbWF0aH0gLW1mcG1hdGg9JHtuZXdfbWF0aH07CiAgICBmaTsKICAgIHJldHVy biAwCn0KZmluZF91bnBhY2thYmxlX2ZpbGUgKCkgCnsgCiAgICBsb2NhbCBzcmM9JDE7CiAgICBp ZiBbWyAteiAke3NyY30gXV07IHRoZW4KICAgICAgICBzcmM9JHtESVNURElSfS8ke0F9OwogICAg ZWxzZQogICAgICAgIGlmIFtbIC1lICR7RElTVERJUn0vJHtzcmN9IF1dOyB0aGVuCiAgICAgICAg ICAgIHNyYz0ke0RJU1RESVJ9LyR7c3JjfTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtb IC1lICR7UFdEfS8ke3NyY30gXV07IHRoZW4KICAgICAgICAgICAgICAgIHNyYz0ke1BXRH0vJHtz cmN9OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBpZiBbWyAtZSAke3NyY30gXV07 IHRoZW4KICAgICAgICAgICAgICAgICAgICBzcmM9JHtzcmN9OwogICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICBbWyAhIC1lICR7c3JjfSBd XSAmJiByZXR1cm4gMTsKICAgIGVjaG8gIiR7c3JjfSIKfQpnY2MtZnVsbHZlcnNpb24gKCkgCnsg CiAgICBfZ2NjX2Z1bGx2ZXJzaW9uICckMS4kMi4kMycgIiRAIgp9CmdjYy1tYWpvci12ZXJzaW9u ICgpIAp7IAogICAgX2djY19mdWxsdmVyc2lvbiAnJDEnICIkQCIKfQpnY2MtbWljcm8tdmVyc2lv biAoKSAKeyAKICAgIF9nY2NfZnVsbHZlcnNpb24gJyQzJyAiJEAiCn0KZ2NjLW1pbm9yLXZlcnNp b24gKCkgCnsgCiAgICBfZ2NjX2Z1bGx2ZXJzaW9uICckMicgIiRAIgp9CmdjYy1zcGVjcy1kaXJl Y3RpdmUgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmUgc3ViZG5hbWUgc3ViZGlyZWN0aXZlOwog ICAgZGlyZWN0aXZlPSIkKF9nY2Mtc3BlY3MtZGlyZWN0aXZlX3JhdyAkMSkiOwogICAgd2hpbGUg W1sgJHtkaXJlY3RpdmV9ID09IColXCgqXCkqIF1dOyBkbwogICAgICAgIHN1YmRuYW1lPSR7ZGly ZWN0aXZlLyolXCh9OwogICAgICAgIHN1YmRuYW1lPSR7c3ViZG5hbWUvXCkqfTsKICAgICAgICBz dWJkaXJlY3RpdmU9IiQoX2djYy1zcGVjcy1kaXJlY3RpdmVfcmF3ICR7c3ViZG5hbWV9KSI7CiAg ICAgICAgZGlyZWN0aXZlPSIke2RpcmVjdGl2ZS8vXCUoJHtzdWJkbmFtZX0pLyR7c3ViZGlyZWN0 aXZlfX0iOwogICAgZG9uZTsKICAgIGVjaG8gIiR7ZGlyZWN0aXZlfSI7CiAgICByZXR1cm4gMAp9 CmdjYy1zcGVjcy1ub3N0cmljdCAoKSAKeyAKICAgIGxvY2FsIGRpcmVjdGl2ZTsKICAgIGRpcmVj dGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3RpdmUgY2MxKTsKICAgIHJldHVybiAkKFtbICIke2RpcmVj dGl2ZS9ceyFmc3RyaWN0LW92ZXJmbG93On0iICE9ICIke2RpcmVjdGl2ZX0iIF1dKQp9CmdjYy1z cGVjcy1ub3cgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mt c3BlY3MtZGlyZWN0aXZlIGxpbmtfY29tbWFuZCk7CiAgICByZXR1cm4gJChbWyAiJHtkaXJlY3Rp dmUvXHshbm9ub3c6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0pCn0KZ2NjLXNwZWNzLXBpZSAoKSAK eyAKICAgIGxvY2FsIGRpcmVjdGl2ZTsKICAgIGRpcmVjdGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3Rp dmUgY2MxKTsKICAgIHJldHVybiAkKFtbICIke2RpcmVjdGl2ZS9ceyFub3BpZTp9IiAhPSAiJHtk aXJlY3RpdmV9IiBdXSkKfQpnY2Mtc3BlY3MtcmVscm8gKCkgCnsgCiAgICBsb2NhbCBkaXJlY3Rp dmU7CiAgICBkaXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGxpbmtfY29tbWFuZCk7CiAg ICByZXR1cm4gJChbWyAiJHtkaXJlY3RpdmUvXHshbm9yZWxybzp9IiAhPSAiJHtkaXJlY3RpdmV9 IiBdXSkKfQpnY2Mtc3BlY3Mtc3NwICgpIAp7IAogICAgbG9jYWwgZGlyZWN0aXZlOwogICAgZGly ZWN0aXZlPSQoZ2NjLXNwZWNzLWRpcmVjdGl2ZSBjYzEpOwogICAgcmV0dXJuICQoW1sgIiR7ZGly ZWN0aXZlL1x7IWZuby1zdGFjay1wcm90ZWN0b3I6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0pCn0K Z2NjLXNwZWNzLXNzcC10by1hbGwgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJl Y3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGNjMSk7CiAgICByZXR1cm4gJChbWyAiJHtkaXJl Y3RpdmUvXHshZm5vLXN0YWNrLXByb3RlY3Rvci1hbGw6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0p Cn0KZ2NjLXZlcnNpb24gKCkgCnsgCiAgICBfZ2NjX2Z1bGx2ZXJzaW9uICckMS4kMicgIiRAIgp9 Cmdlbl91c3JfbGRzY3JpcHQgKCkgCnsgCiAgICBsb2NhbCBsaWIgbGliZGlyPSQoZ2V0X2xpYmRp cikgb3V0cHV0X2Zvcm1hdD0iIiBhdXRvPWZhbHNlIHN1ZmZpeD0kKGdldF9saWJuYW1lKTsKICAg IFtbIC16ICR7RUQrc2V0fSBdXSAmJiBsb2NhbCBFRD0ke0QlL30ke0VQUkVGSVh9LzsKICAgIHRj LWlzLXN0YXRpYy1vbmx5ICYmIHJldHVybjsKICAgIGRvZGlyIC91c3IvJHtsaWJkaXJ9OwogICAg aWYgW1sgJDEgPT0gIi1hIiBdXTsgdGhlbgogICAgICAgIGF1dG89dHJ1ZTsKICAgICAgICBzaGlm dDsKICAgICAgICBkb2RpciAvJHtsaWJkaXJ9OwogICAgZmk7CiAgICBvdXRwdXRfZm9ybWF0PSQo JCh0Yy1nZXRDQykgJHtDRkxBR1N9ICR7TERGTEFHU30gLVdsLC0tdmVyYm9zZSAyPiYxIHwgc2Vk IC1uICdzL15PVVRQVVRfRk9STUFUKCJcKFteIl0qXCkiLC4qL1wxL3AnKTsKICAgIFtbIC1uICR7 b3V0cHV0X2Zvcm1hdH0gXV0gJiYgb3V0cHV0X2Zvcm1hdD0iT1VUUFVUX0ZPUk1BVCAoICR7b3V0 cHV0X2Zvcm1hdH0gKSI7CiAgICBmb3IgbGliIGluICIkQCI7CiAgICBkbwogICAgICAgIGxvY2Fs IHRsaWI7CiAgICAgICAgaWYgJHthdXRvfTsgdGhlbgogICAgICAgICAgICBsaWI9ImxpYiR7bGli fSR7c3VmZml4fSI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBbWyAtciAke0VEfS8ke2xpYmRp cn0vJHtsaWJ9IF1dIHx8IGNvbnRpbnVlOwogICAgICAgIGZpOwogICAgICAgIGNhc2UgJHtDVEFS R0VUOi0ke0NIT1NUfX0gaW4gCiAgICAgICAgICAgICotZGFyd2luKikKICAgICAgICAgICAgICAg IGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgICAgICAgICB0bGliPSQoc2Nhbm1hY2hvIC1x RiclUyNGJyAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHtsaWJ9KTsKICAgICAgICAgICAgICAgIGVs c2UKICAgICAgICAgICAgICAgICAgICB0bGliPSQoc2Nhbm1hY2hvIC1xRiclUyNGJyAiJHtFRH0i LyR7bGliZGlyfS8ke2xpYn0pOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBb WyAteiAke3RsaWJ9IF1dICYmIGRpZSAidW5hYmxlIHRvIHJlYWQgaW5zdGFsbF9uYW1lIGZyb20g JHtsaWJ9IjsKICAgICAgICAgICAgICAgIHRsaWI9JHt0bGliIyMqL307CiAgICAgICAgICAgICAg ICBpZiAke2F1dG99OyB0aGVuCiAgICAgICAgICAgICAgICAgICAgbXYgIiR7RUR9Ii91c3IvJHts aWJkaXJ9LyR7bGliJSR7c3VmZml4fX0uKiR7c3VmZml4Iy59ICIke0VEfSIvJHtsaWJkaXJ9LyB8 fCBkaWU7CiAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHt0bGlifSAhPSAke2xpYiUke3N1ZmZp eH19Lioke3N1ZmZpeCMufSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBtdiAiJHtF RH0iL3Vzci8ke2xpYmRpcn0vJHt0bGliJSR7c3VmZml4fX0uKiR7c3VmZml4Iy59ICIke0VEfSIv JHtsaWJkaXJ9LyB8fCBkaWU7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAg ICAgICAgcm0gLWYgIiR7RUR9Ii8ke2xpYmRpcn0vJHtsaWJ9OwogICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgICAgICBpZiBbWyAhIC13ICIke0VEfS8ke2xpYmRpcn0vJHt0bGlifSIgXV07 IHRoZW4KICAgICAgICAgICAgICAgICAgICBjaG1vZCB1K3cgIiR7RUR9JHtsaWJkaXJ9LyR7dGxp Yn0iOwogICAgICAgICAgICAgICAgICAgIGxvY2FsIG5vd3JpdGU9eWVzOwogICAgICAgICAgICAg ICAgZmk7CiAgICAgICAgICAgICAgICBpbnN0YWxsX25hbWVfdG9vbCAtaWQgIiR7RVBSRUZJWH0i LyR7bGliZGlyfS8ke3RsaWJ9ICIke0VEfSIvJHtsaWJkaXJ9LyR7dGxpYn0gfHwgZGllICJpbnN0 YWxsX25hbWVfdG9vbCBmYWlsZWQiOwogICAgICAgICAgICAgICAgW1sgLW4gJHtub3dyaXRlfSBd XSAmJiBjaG1vZCB1LXcgIiR7RUR9JHtsaWJkaXJ9LyR7dGxpYn0iOwogICAgICAgICAgICAgICAg cHVzaGQgIiR7RUR9L3Vzci8ke2xpYmRpcn0iID4gL2Rldi9udWxsOwogICAgICAgICAgICAgICAg bG4gLXNuZiAiLi4vLi4vJHtsaWJkaXJ9LyR7dGxpYn0iICIke2xpYn0iOwogICAgICAgICAgICAg ICAgcG9wZCA+IC9kZXYvbnVsbAogICAgICAgICAgICA7OwogICAgICAgICAgICAqLWFpeCogfCAq LWlyaXgqIHwgKjY0Ki1ocHV4KiB8ICotaW50ZXJpeCogfCAqLXdpbm50KikKICAgICAgICAgICAg ICAgIGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgICAgICAgICBtdiAiJHtFRH0iL3Vzci8k e2xpYmRpcn0vJHtsaWJ9KiAiJHtFRH0iLyR7bGliZGlyfS8gfHwgZGllOwogICAgICAgICAgICAg ICAgICAgIHRsaWI9JChyZWFkbGluayAiJHtFRH0iLyR7bGliZGlyfS8ke2xpYn0pOwogICAgICAg ICAgICAgICAgICAgIHRsaWI9JHt0bGliIyMqL307CiAgICAgICAgICAgICAgICAgICAgaWYgW1sg LXogJHt0bGlifSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICB0bGliPSR7bGlifTsK ICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHJtIC1mICIk e0VEfSIvJHtsaWJkaXJ9LyR7bGlifTsKICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAg ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB0bGliPSR7bGlifTsKICAgICAgICAgICAg ICAgIGZpOwogICAgICAgICAgICAgICAgcHVzaGQgIiR7RUR9L3Vzci8ke2xpYmRpcn0iID4gL2Rl di9udWxsOwogICAgICAgICAgICAgICAgbG4gLXNuZiAiLi4vLi4vJHtsaWJkaXJ9LyR7dGxpYn0i ICIke2xpYn0iOwogICAgICAgICAgICAgICAgcG9wZCA+IC9kZXYvbnVsbAogICAgICAgICAgICA7 OwogICAgICAgICAgICBocHBhKi1ocHV4KikKICAgICAgICAgICAgICAgIGlmICR7YXV0b307IHRo ZW4KICAgICAgICAgICAgICAgICAgICB0bGliPSQoY2hhdHIgIiR7RUR9Ii91c3IvJHtsaWJkaXJ9 LyR7bGlifSB8IHNlZCAtbiAnL2ludGVybmFsIG5hbWU6L3tuO3MvXiAqLy87cDtxfScpOwogICAg ICAgICAgICAgICAgICAgIFtbIC16ICR7dGxpYn0gXV0gJiYgdGxpYj0ke2xpYn07CiAgICAgICAg ICAgICAgICAgICAgdGxpYj0ke3RsaWIjIyovfTsKICAgICAgICAgICAgICAgICAgICBtdiAiJHtF RH0iL3Vzci8ke2xpYmRpcn0vJHtsaWJ9KiAiJHtFRH0iLyR7bGliZGlyfS8gfHwgZGllOwogICAg ICAgICAgICAgICAgICAgIGlmIFtbICR7dGxpYn0gIT0gJHtsaWJ9KiBdXTsgdGhlbgogICAgICAg ICAgICAgICAgICAgICAgICBtdiAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHt0bGlifSogIiR7RUR9 Ii8ke2xpYmRpcn0vIHx8IGRpZTsKICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAg ICAgICAgICBbWyAke3RsaWJ9ICE9ICR7bGlifSBdXSAmJiBybSAtZiAiJHtFRH0iLyR7bGliZGly fS8ke2xpYn07CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgdGxpYj0k KGNoYXRyICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifSB8IHNlZCAtbiAnL2ludGVybmFsIG5hbWU6 L3tuO3MvXiAqLy87cDtxfScpOwogICAgICAgICAgICAgICAgICAgIFtbIC16ICR7dGxpYn0gXV0g JiYgdGxpYj0ke2xpYn07CiAgICAgICAgICAgICAgICAgICAgdGxpYj0ke3RsaWIjIyovfTsKICAg ICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgcHVzaGQgIiR7RUR9Ii91c3IvJHtsaWJk aXJ9ID4gL2Rldi9udWxsOwogICAgICAgICAgICAgICAgbG4gLXNuZiAiLi4vLi4vJHtsaWJkaXJ9 LyR7dGxpYn0iICIke2xpYn0iOwogICAgICAgICAgICAgICAgW1sgJHt0bGlifSAhPSAke2xpYn0g XV0gJiYgbG4gLXNuZiAiLi4vLi4vJHtsaWJkaXJ9LyR7dGxpYn0iICIke3RsaWJ9IjsKICAgICAg ICAgICAgICAgIHBvcGQgPiAvZGV2L251bGwKICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikK ICAgICAgICAgICAgICAgIGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgICAgICAgICB0bGli PSQoc2NhbmVsZiAtcUYnJVMjRicgIiR7RUR9Ii91c3IvJHtsaWJkaXJ9LyR7bGlifSk7CiAgICAg ICAgICAgICAgICAgICAgW1sgLXogJHt0bGlifSBdXSAmJiBkaWUgInVuYWJsZSB0byByZWFkIFNP TkFNRSBmcm9tICR7bGlifSI7CiAgICAgICAgICAgICAgICAgICAgbXYgIiR7RUR9Ii91c3IvJHts aWJkaXJ9LyR7bGlifSogIiR7RUR9Ii8ke2xpYmRpcn0vIHx8IGRpZTsKICAgICAgICAgICAgICAg ICAgICBpZiBbWyAke3RsaWJ9ICE9ICR7bGlifSogXV07IHRoZW4KICAgICAgICAgICAgICAgICAg ICAgICAgbXYgIiR7RUR9Ii91c3IvJHtsaWJkaXJ9LyR7dGxpYn0qICIke0VEfSIvJHtsaWJkaXJ9 LyB8fCBkaWU7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgcm0g LWYgIiR7RUR9Ii8ke2xpYmRpcn0vJHtsaWJ9OwogICAgICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgICAgIHRsaWI9JHtsaWJ9OwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAg ICAgICBjYXQgPiAiJHtFRH0vdXNyLyR7bGliZGlyfS8ke2xpYn0iICA8PC1FTkRfTERTQ1JJUFQK LyogR05VIGxkIHNjcmlwdAogICBTaW5jZSBHZW50b28gaGFzIGNyaXRpY2FsIGR5bmFtaWMgbGli cmFyaWVzIGluIC9saWIsIGFuZCB0aGUgc3RhdGljIHZlcnNpb25zCiAgIGluIC91c3IvbGliLCB3 ZSBuZWVkIHRvIGhhdmUgYSAiZmFrZSIgZHluYW1pYyBsaWIgaW4gL3Vzci9saWIsIG90aGVyd2lz ZSB3ZQogICBydW4gaW50byBsaW5raW5nIHByb2JsZW1zLiAgVGhpcyAiZmFrZSIgZHluYW1pYyBs aWIgaXMgYSBsaW5rZXIgc2NyaXB0IHRoYXQKICAgcmVkaXJlY3RzIHRoZSBsaW5rZXIgdG8gdGhl IHJlYWwgbGliLiAgQW5kIHllcywgdGhpcyB3b3JrcyBpbiB0aGUgY3Jvc3MtCiAgIGNvbXBpbGlu ZyBzY2VuYXJpbyBhcyB0aGUgc3lzcm9vdC1lZCBsaW5rZXIgd2lsbCBwcmVwZW5kIHRoZSByZWFs IHBhdGguCgogICBTZWUgYnVnIGh0dHA6Ly9idWdzLmdlbnRvby5vcmcvNDQxMSBmb3IgbW9yZSBp bmZvLgogKi8KJHtvdXRwdXRfZm9ybWF0fQpHUk9VUCAoICR7RVBSRUZJWH0vJHtsaWJkaXJ9LyR7 dGxpYn0gKQpFTkRfTERTQ1JJUFQKCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYwogICAgICAg IGZwZXJtcyBhK3ggIi91c3IvJHtsaWJkaXJ9LyR7bGlifSIgfHwgZGllICJjb3VsZCBub3QgY2hh bmdlIHBlcm1zIG9uICR7bGlifSI7CiAgICBkb25lCn0KZ2V0LWZsYWcgKCkgCnsgCiAgICBsb2Nh bCBmIGZpbmRmbGFnPSIkMSI7CiAgICBmb3IgZiBpbiAke0NGTEFHU30gJHtDWFhGTEFHU30gJHtG RkxBR1N9ICR7RkNGTEFHU307CiAgICBkbwogICAgICAgIGlmIFsgIiR7Zi8ke2ZpbmRmbGFnfX0i ICE9ICIke2Z9IiBdOyB0aGVuCiAgICAgICAgICAgIHByaW50ZiAiJXNcbiIgIiR7Zi8tJHtmaW5k ZmxhZ309fSI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGZpOwogICAgZG9uZTsKICAg IHJldHVybiAxCn0KZ2V0X2FiaV9BU0ZMQUdTICgpIAp7IAogICAgZ2V0X2FiaV92YXIgQVNGTEFH UyAiJEAiCn0KZ2V0X2FiaV9DRkxBR1MgKCkgCnsgCiAgICBnZXRfYWJpX3ZhciBDRkxBR1MgIiRA Igp9CmdldF9hYmlfQ0hPU1QgKCkgCnsgCiAgICBnZXRfYWJpX3ZhciBDSE9TVCAiJEAiCn0KZ2V0 X2FiaV9DVEFSR0VUICgpIAp7IAogICAgZ2V0X2FiaV92YXIgQ1RBUkdFVCAiJEAiCn0KZ2V0X2Fi aV9GQUtFX1RBUkdFVFMgKCkgCnsgCiAgICBnZXRfYWJpX3ZhciBGQUtFX1RBUkdFVFMgIiRAIgp9 CmdldF9hYmlfTERGTEFHUyAoKSAKeyAKICAgIGdldF9hYmlfdmFyIExERkxBR1MgIiRAIgp9Cmdl dF9hYmlfTElCRElSICgpIAp7IAogICAgZ2V0X2FiaV92YXIgTElCRElSICIkQCIKfQpnZXRfYWJp X3ZhciAoKSAKeyAKICAgIGxvY2FsIGZsYWc9JDE7CiAgICBsb2NhbCBhYmk7CiAgICBpZiBbICQj IC1ndCAxIF07IHRoZW4KICAgICAgICBhYmk9JHsyfTsKICAgIGVsc2UKICAgICAgICBpZiBbIC1u ICIke0FCSX0iIF07IHRoZW4KICAgICAgICAgICAgYWJpPSR7QUJJfTsKICAgICAgICBlbHNlCiAg ICAgICAgICAgIGlmIFsgLW4gIiR7REVGQVVMVF9BQkl9IiBdOyB0aGVuCiAgICAgICAgICAgICAg ICBhYmk9JHtERUZBVUxUX0FCSX07CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGFi aT0iZGVmYXVsdCI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICBsb2Nh bCB2YXI9IiR7ZmxhZ31fJHthYml9IjsKICAgIGVjaG8gJHshdmFyfQp9CmdldF9hbGxfYWJpcyAo KSAKeyAKICAgIGxvY2FsIG9yZGVyPSIiOwogICAgaWYgW1sgLXogJHtNVUxUSUxJQl9BQklTfSBd XTsgdGhlbgogICAgICAgIGVjaG8gImRlZmF1bHQiOwogICAgICAgIHJldHVybiAwOwogICAgZmk7 CiAgICBmb3IgeCBpbiAke01VTFRJTElCX0FCSVN9OwogICAgZG8KICAgICAgICBpZiBbWyAke3h9 ICE9ICR7REVGQVVMVF9BQkl9IF1dOyB0aGVuCiAgICAgICAgICAgIG9yZGVyPSIke29yZGVyOisk e29yZGVyfSB9JHt4fSI7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgb3JkZXI9IiR7b3JkZXI6 KyR7b3JkZXJ9IH0ke0RFRkFVTFRfQUJJfSI7CiAgICBlY2hvICR7b3JkZXJ9OwogICAgcmV0dXJu IDAKfQpnZXRfYWxsX2xpYmRpcnMgKCkgCnsgCiAgICBsb2NhbCBsaWJkaXJzOwogICAgbG9jYWwg YWJpOwogICAgbG9jYWwgZGlyOwogICAgZm9yIGFiaSBpbiAke01VTFRJTElCX0FCSVN9OwogICAg ZG8KICAgICAgICBsaWJkaXJzKz0iICQoZ2V0X2FiaV9MSUJESVIgJHthYml9KSI7CiAgICBkb25l OwogICAgW1sgIiAke2xpYmRpcnN9ICIgIT0gKiIgbGliICIqIF1dICYmIGxpYmRpcnMrPSIgbGli IjsKICAgIGVjaG8gIiR7bGliZGlyc30iCn0KZ2V0X2JtYWtlICgpIAp7IAogICAgaWYgW1sgJHtV U0VSTEFORH0gPT0gKkJTRCBdXTsgdGhlbgogICAgICAgIGVjaG8gbWFrZTsKICAgIGVsc2UKICAg ICAgICBpZiBbWyAke1VTRVJMQU5EfSA9PSAiRGFyd2luIiBdXTsgdGhlbgogICAgICAgICAgICBl Y2hvIGJzZG1ha2U7CiAgICAgICAgZWxzZQogICAgICAgICAgICBlY2hvIHBtYWtlOwogICAgICAg IGZpOwogICAgZmkKfQpnZXRfaW5zdGFsbF9hYmlzICgpIAp7IAogICAgbG9jYWwgb3JkZXI9IiI7 CiAgICBpZiBbWyAteiAke01VTFRJTElCX0FCSVN9IF1dOyB0aGVuCiAgICAgICAgZWNobyAiZGVm YXVsdCI7CiAgICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIGlmIFtbICR7RU1VTFRJTElCX1BL R30gPT0gInRydWUiIF1dOyB0aGVuCiAgICAgICAgZm9yIHggaW4gJHtNVUxUSUxJQl9BQklTfTsK ICAgICAgICBkbwogICAgICAgICAgICBpZiBbWyAke3h9ICE9ICIke0RFRkFVTFRfQUJJfSIgXV07 IHRoZW4KICAgICAgICAgICAgICAgIGhhcyAke3h9ICR7QUJJX0RFTll9IHx8IG9yZGVyPSIke29y ZGVyfSAke3h9IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZG9uZTsKICAgICAgICBoYXMgJHtE RUZBVUxUX0FCSX0gJHtBQklfREVOWX0gfHwgb3JkZXI9IiR7b3JkZXJ9ICR7REVGQVVMVF9BQkl9 IjsKICAgICAgICBpZiBbWyAtbiAke0FCSV9BTExPV30gXV07IHRoZW4KICAgICAgICAgICAgbG9j YWwgb3JkZXJhPSIiOwogICAgICAgICAgICBmb3IgeCBpbiAke29yZGVyfTsKICAgICAgICAgICAg ZG8KICAgICAgICAgICAgICAgIGlmIGhhcyAke3h9ICR7QUJJX0FMTE9XfTsgdGhlbgogICAgICAg ICAgICAgICAgICAgIG9yZGVyYT0iJHtvcmRlcmF9ICR7eH0iOwogICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIG9yZGVyPSR7b3JkZXJhfTsKICAgICAgICBm aTsKICAgIGVsc2UKICAgICAgICBvcmRlcj0ke0RFRkFVTFRfQUJJfTsKICAgIGZpOwogICAgaWYg W1sgLXogJHtvcmRlcn0gXV07IHRoZW4KICAgICAgICBkaWUgIlRoZSBBQkkgbGlzdCBpcyBlbXB0 eS4gIEFyZSB5b3UgdXNpbmcgYSBwcm9wZXIgbXVsdGlsaWIgcHJvZmlsZT8gIFBlcmhhcHMgeW91 ciBVU0UgZmxhZ3Mgb3IgTVVMVElMSUJfQUJJUyBhcmUgdG9vIHJlc3RyaWN0aXZlIGZvciB0aGlz IHBhY2thZ2UuIjsKICAgIGZpOwogICAgZWNobyAke29yZGVyfTsKICAgIHJldHVybiAwCn0KZ2V0 X2xpYmRpciAoKSAKeyAKICAgIGxvY2FsIENPTkZfTElCRElSOwogICAgaWYgWyAtbiAiJHtDT05G X0xJQkRJUl9PVkVSUklERX0iIF07IHRoZW4KICAgICAgICBlY2hvICR7Q09ORl9MSUJESVJfT1ZF UlJJREV9OwogICAgZWxzZQogICAgICAgIGdldF9hYmlfTElCRElSOwogICAgZmkKfQpnZXRfbGli ZGlyX292ZXJyaWRlICgpIAp7IAogICAgaWYgaGFzX211bHRpbGliX3Byb2ZpbGU7IHRoZW4KICAg ICAgICBlZXJyb3IgImdldF9saWJkaXJfb3ZlcnJpZGUgY2FsbGVkLCBidXQgaXQgc2hvdWxkbid0 IGJlIG5lZWRlZCB3aXRoIHRoZSBuZXcgbXVsdGlsaWIgYXBwcm9hY2guICBQbGVhc2UgZmlsZSBh IGJ1ZyBhdCBodHRwOi8vYnVncy5nZW50b28ub3JnIGFuZCBhc3NpZ24gaXQgdG8gZXJhZGljYXRv ckBnZW50b28ub3JnIjsKICAgICAgICBleGl0IDE7CiAgICBmaTsKICAgIENPTkZfTElCRElSPSIk MSI7CiAgICBDT05GX0xJQkRJUl9PVkVSUklERT0iJDEiOwogICAgTElCRElSX2RlZmF1bHQ9IiQx Igp9CmdldF9saWJuYW1lICgpIAp7IAogICAgbG9jYWwgbGlibmFtZTsKICAgIGxvY2FsIHZlcj0k MTsKICAgIGNhc2UgJHtDSE9TVH0gaW4gCiAgICAgICAgKi1jeWd3aW4gfCBtaW5ndyogfCAqLW1p bmd3KikKICAgICAgICAgICAgbGlibmFtZT0iZGxsIgogICAgICAgIDs7CiAgICAgICAgKi1kYXJ3 aW4qKQogICAgICAgICAgICBsaWJuYW1lPSJkeWxpYiIKICAgICAgICA7OwogICAgICAgICotbWlu dCopCiAgICAgICAgICAgIGxpYm5hbWU9ImlycmVsZXZhbnQiCiAgICAgICAgOzsKICAgICAgICBo cHBhKi1ocHV4KikKICAgICAgICAgICAgbGlibmFtZT0ic2wiCiAgICAgICAgOzsKICAgICAgICAq KQogICAgICAgICAgICBsaWJuYW1lPSJzbyIKICAgICAgICA7OwogICAgZXNhYzsKICAgIGlmIFtb IC16ICQqIF1dOyB0aGVuCiAgICAgICAgZWNobyAiLiR7bGlibmFtZX0iOwogICAgZWxzZQogICAg ICAgIGZvciB2ZXIgaW4gIiRAIjsKICAgICAgICBkbwogICAgICAgICAgICBjYXNlICR7Q0hPU1R9 IGluIAogICAgICAgICAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAgICAgICAgICAgIGVjaG8g Ii4ke3Zlcn0uJHtsaWJuYW1lfSIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAq LW1pbnQqKQogICAgICAgICAgICAgICAgICAgIGVjaG8gIi4ke2xpYm5hbWV9IgogICAgICAgICAg ICAgICAgOzsKICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICAgZWNobyAiLiR7 bGlibmFtZX0uJHt2ZXJ9IgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgZXNhYzsKICAg ICAgICBkb25lOwogICAgZmkKfQpnZXRfbW9kbmFtZSAoKSAKeyAKICAgIGxvY2FsIG1vZG5hbWU7 CiAgICBsb2NhbCB2ZXI9JDE7CiAgICBjYXNlICR7Q0hPU1R9IGluIAogICAgICAgICotZGFyd2lu KikKICAgICAgICAgICAgbW9kbmFtZT0iYnVuZGxlIgogICAgICAgIDs7CiAgICAgICAgKikKICAg ICAgICAgICAgbW9kbmFtZT0ic28iCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBlY2hvICIuJHtt b2RuYW1lfSIKfQpnZXRfbW91bnRzICgpIAp7IAogICAgbG9jYWwgcG9pbnQ9IG5vZGU9IGZzPSBv cHRzPSBmb289OwogICAgaWYgW1sgJCh1bmFtZSAtcykgPT0gIkxpbnV4IiBdXTsgdGhlbgogICAg ICAgIHdoaWxlIHJlYWQgbm9kZSBwb2ludCBmcyBvcHRzIGZvbzsgZG8KICAgICAgICAgICAgZWNo byAiJHtwb2ludH0gJHtub2RlfSAke2ZzfSAke29wdHN9IjsKICAgICAgICBkb25lIDwgL3Byb2Mv bW91bnRzOwogICAgICAgIHJldHVybjsKICAgIGZpOwogICAgbG9jYWwgSUZTPScJJzsKICAgIExD X0FMTD1DIG1vdW50IC1wIHwgd2hpbGUgcmVhZCBub2RlIHBvaW50IGZzIGZvbzsgZG8KICAgICAg ICBvcHRzPSR7ZnMjKiB9OwogICAgICAgIGZzPSR7ZnMlJSAqfTsKICAgICAgICBlY2hvICIke3Bv aW50Ly8gL1wwNDB9ICR7bm9kZS8vIC9cMDQwfSAke2ZzJSUgKn0gJHtvcHRzLy8gL1wwNDB9IjsK ICAgIGRvbmUKfQpnZXRfbXVsdGlsaWJkaXIgKCkgCnsgCiAgICBpZiBoYXNfbXVsdGlsaWJfcHJv ZmlsZTsgdGhlbgogICAgICAgIGVlcnJvciAiZ2V0X211bHRpbGliZGlyIGNhbGxlZCwgYnV0IGl0 IHNob3VsZG4ndCBiZSBuZWVkZWQgd2l0aCB0aGUgbmV3IG11bHRpbGliIGFwcHJvYWNoLiAgUGxl YXNlIGZpbGUgYSBidWcgYXQgaHR0cDovL2J1Z3MuZ2VudG9vLm9yZyBhbmQgYXNzaWduIGl0IHRv IGVyYWRpY2F0b3JAZ2VudG9vLm9yZyI7CiAgICAgICAgZXhpdCAxOwogICAgZmk7CiAgICBlY2hv ICR7Q09ORl9NVUxUSUxJQkRJUjo9bGliMzJ9Cn0KaGFzX2hhcmRlbmVkICgpIAp7IAogICAgZGll ICIkMDogZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBnY2Mtc3BlY3Mte3JlbHJvLG5vd30oKSEiCn0K aGFzX20zMiAoKSAKeyAKICAgIFsgIiQodGMtYXJjaCkiID0gImFtZDY0IiBdICYmIGhhc19tdWx0 aWxpYl9wcm9maWxlICYmIHJldHVybiAwOwogICAgbG9jYWwgdGVtcD0kKGVta3RlbXApOwogICAg ZWNobyAiaW50IG1haW4oKSB7IHJldHVybigwKTsgfSIgPiAiJHt0ZW1wfSIuYzsKICAgIE1ZX0ND PSQodGMtZ2V0Q0MpOwogICAgJHtNWV9DQy8gLiovfSAtbTMyIC1vICIkKGVta3RlbXApIiAiJHt0 ZW1wfSIuYyA+IC9kZXYvbnVsbCAyPiYxOwogICAgbG9jYWwgcmV0PSQ/OwogICAgcm0gLWYgIiR7 dGVtcH0iLmM7CiAgICBbWyAke3JldH0gIT0gMSBdXSAmJiByZXR1cm4gMDsKICAgIHJldHVybiAx Cn0KaGFzX202NCAoKSAKeyAKICAgIGxvY2FsIHRlbXA9IiQoZW1rdGVtcCkiOwogICAgZWNobyAi aW50IG1haW4oKSB7IHJldHVybigwKTsgfSIgPiAiJHt0ZW1wfSIuYzsKICAgIE1ZX0NDPSQodGMt Z2V0Q0MpOwogICAgJHtNWV9DQy8gLiovfSAtbTY0IC1vICIkKGVta3RlbXApIiAiJHt0ZW1wfSIu YyA+IC9kZXYvbnVsbCAyPiYxOwogICAgbG9jYWwgcmV0PSQ/OwogICAgcm0gLWYgIiR7dGVtcH0i LmM7CiAgICBbWyAke3JldH0gIT0gMSBdXSAmJiByZXR1cm4gMDsKICAgIHJldHVybiAxCn0KaGFz X211bHRpbGliX3Byb2ZpbGUgKCkgCnsgCiAgICBbIC1uICIke01VTFRJTElCX0FCSVN9IiAtYSAi JHtNVUxUSUxJQl9BQklTfSIgIT0gIiR7TVVMVElMSUJfQUJJUy8gL30iIF0KfQpoYXNfcGljICgp IAp7IAogICAgZGllICIkMDogZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBnY2Mtc3BlY3MtcGllKCkh Igp9Cmhhc19waWUgKCkgCnsgCiAgICBkaWUgIiQwOiBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGdj Yy1zcGVjcy1waWUoKSEiCn0KaGFzX3NzcCAoKSAKeyAKICAgIGRpZSAiJDA6IGRlcHJlY2F0ZWQs IHBsZWFzZSB1c2UgZ2NjLXNwZWNzLXNzcCgpISIKfQpoYXNfc3NwX2FsbCAoKSAKeyAKICAgIGRp ZSAiJDA6IGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgZ2NjLXNwZWNzLXNzcCgpISIKfQpoZWxwZXJz X2RpZSAoKSAKeyAKICAgIGNhc2UgIiR7RUFQSTotMH0iIGluIAogICAgICAgIDAgfCAxIHwgMiB8 IDMpCiAgICAgICAgICAgIGVjaG8gLWUgIiRAIiAxPiYyCiAgICAgICAgOzsKICAgICAgICAqKQog ICAgICAgICAgICBkaWUgIiRAIgogICAgICAgIDs7CiAgICBlc2FjCn0KaW5faXVzZSAoKSAKeyAK ICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIFtbICR7I30g LWVxIDEgXV0gfHwgZGllICJJbnZhbGlkIGFyZ3MgdG8gJHtGVU5DTkFNRX0oKSI7CiAgICBsb2Nh bCBmbGFnPSR7MX07CiAgICBsb2NhbCBsaXVzZT0oJHtJVVNFfSk7CiAgICBoYXMgIiR7ZmxhZ30i ICIke2xpdXNlW0BdI1srLV19Igp9CmlzLWZsYWcgKCkgCnsgCiAgICBpcy1mbGFncSAiJEAiICYm IGVjaG8gdHJ1ZQp9CmlzLWZsYWdxICgpIAp7IAogICAgW1sgLW4gJDIgXV0gJiYgZGllICJVc2Fn ZTogaXMtZmxhZyA8ZmxhZz4iOwogICAgX2lzX2ZsYWdxIENGTEFHUyAkMSB8fCBfaXNfZmxhZ3Eg Q1hYRkxBR1MgJDEgfHwgX2lzX2ZsYWdxIEZGTEFHUyAkMSB8fCBfaXNfZmxhZ3EgRkNGTEFHUyAk MQp9CmlzLWxkZmxhZyAoKSAKeyAKICAgIGlzLWxkZmxhZ3EgIiRAIiAmJiBlY2hvIHRydWUKfQpp cy1sZGZsYWdxICgpIAp7IAogICAgW1sgLW4gJDIgXV0gJiYgZGllICJVc2FnZTogaXMtbGRmbGFn IDxmbGFnPiI7CiAgICBfaXNfZmxhZ3EgTERGTEFHUyAkMQp9CmlzLWxvZ2luLWRpc2FibGVkICgp IAp7IAogICAgc2hlbGw9JChlZ2V0c2hlbGwgIiQxIik7CiAgICBjYXNlICR7c2hlbGx9IGluIAog ICAgICAgIC9iaW4vZmFsc2UgfCAvdXNyL2Jpbi9mYWxzZSB8IC9zYmluL25vbG9naW4gfCAvdXNy L3NiaW4vbm9sb2dpbikKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICA7OwogICAgICAgICop CiAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgOzsKICAgIGVzYWMKfQppc19maW5hbF9hYmkg KCkgCnsgCiAgICBoYXNfbXVsdGlsaWJfcHJvZmlsZSB8fCByZXR1cm4gMDsKICAgIHNldCAtLSAk KGdldF9pbnN0YWxsX2FiaXMpOwogICAgbG9jYWwgTEFTVF9BQkk9JCM7CiAgICBbWyAkeyFMQVNU X0FCSX0gPT0gJHtBQkl9IF1dCn0KbWFrZV9kZXNrdG9wX2VudHJ5ICgpIAp7IAogICAgW1sgLXog JDEgXV0gJiYgZGllICJtYWtlX2Rlc2t0b3BfZW50cnk6IFlvdSBtdXN0IHNwZWNpZnkgdGhlIGV4 ZWN1dGFibGUiOwogICAgbG9jYWwgZXhlYz0kezF9OwogICAgbG9jYWwgbmFtZT0kezI6LSR7UE59 fTsKICAgIGxvY2FsIGljb249JHszOi0ke1BOfX07CiAgICBsb2NhbCB0eXBlPSR7NH07CiAgICBs b2NhbCBmaWVsZHM9JHs1fTsKICAgIGlmIFtbIC16ICR7dHlwZX0gXV07IHRoZW4KICAgICAgICBs b2NhbCBjYXRtYWo9JHtDQVRFR09SWSUlLSp9OwogICAgICAgIGxvY2FsIGNhdG1pbj0ke0NBVEVH T1JZIyMqLX07CiAgICAgICAgY2FzZSAke2NhdG1han0gaW4gCiAgICAgICAgICAgIGFwcCkKICAg ICAgICAgICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAgIGFjY2Vz c2liaWxpdHkpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9QWNjZXNzaWJpbGl0eQogICAg ICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgYWRtaW4pCiAgICAgICAgICAg ICAgICAgICAgICAgIHR5cGU9U3lzdGVtCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICBhbnRpdmlydXMpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9U3lzdGVt CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBhcmNoKQogICAgICAg ICAgICAgICAgICAgICAgICB0eXBlPUFyY2hpdmluZwogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAgICAgYmFja3VwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUFy Y2hpdmluZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2RyKQog ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPURpc2NCdXJuaW5nCiAgICAgICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgICAgICAgICBkaWN0cykKICAgICAgICAgICAgICAgICAgICAgICAg dHlwZT1EaWN0aW9uYXJ5CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAg ICBkb2MpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RG9jdW1lbnRhdGlvbgogICAgICAg ICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZWRpdG9ycykKICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZT1UZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgICAgICAgICBlbWFjcykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1UZXh0RWRp dG9yCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBlbXVsYXRpb24p CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RW11bGF0b3IKICAgICAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgICAgIGxhcHRvcCkKICAgICAgICAgICAgICAgICAgICAgICAg dHlwZT1IYXJkd2FyZVNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAg ICAgICAgICBvZmZpY2UpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9T2ZmaWNlCiAgICAg ICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBwZGEpCiAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGU9UERBCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICAgICB2aW0pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9VGV4dEVkaXRvcgogICAgICAg ICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgeGVtYWNzKQogICAgICAgICAgICAg ICAgICAgICAgICB0eXBlPVRleHRFZGl0b3IKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICAgICAgZXNhYwogICAgICAgICAgICA7OwogICAgICAgICAgICBkZXYpCiAgICAgICAgICAg ICAgICB0eXBlPSJEZXZlbG9wbWVudCIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgZ2FtZXMp CiAgICAgICAgICAgICAgICBjYXNlICR7Y2F0bWlufSBpbiAKICAgICAgICAgICAgICAgICAgICBh Y3Rpb24gfCBmcHMpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9QWN0aW9uR2FtZQogICAg ICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgYXJjYWRlKQogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPUFyY2FkZUdhbWUKICAgICAgICAgICAgICAgICAgICA7OwogICAg ICAgICAgICAgICAgICAgIGJvYXJkKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUJvYXJk R2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZW11bGF0aW9u KQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUVtdWxhdG9yCiAgICAgICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgICAgICAgICBraWRzKQogICAgICAgICAgICAgICAgICAgICAgICB0 eXBlPUtpZHNHYW1lCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBw dXp6bGUpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9TG9naWNHYW1lCiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICByb2d1ZWxpa2UpCiAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGU9Um9sZVBsYXlpbmcKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICAgICAgICAgIHJwZykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1Sb2xlUGxheWlu ZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbikK ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1TaW11bGF0aW9uCiAgICAgICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgICAgICAgICBzcG9ydHMpCiAgICAgICAgICAgICAgICAgICAgICAg IHR5cGU9U3BvcnRzR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgc3RyYXRlZ3kpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9U3RyYXRlZ3lHYW1lCiAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAg ICB0eXBlPSJHYW1lOyR7dHlwZX0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGdub21lKQog ICAgICAgICAgICAgICAgdHlwZT0iR25vbWU7R1RLIgogICAgICAgICAgICA7OwogICAgICAgICAg ICBrZGUpCiAgICAgICAgICAgICAgICB0eXBlPSJLREU7UXQiCiAgICAgICAgICAgIDs7CiAgICAg ICAgICAgIG1haWwpCiAgICAgICAgICAgICAgICB0eXBlPSJOZXR3b3JrO0VtYWlsIgogICAgICAg ICAgICA7OwogICAgICAgICAgICBtZWRpYSkKICAgICAgICAgICAgICAgIGNhc2UgJHtjYXRtaW59 IGluIAogICAgICAgICAgICAgICAgICAgIGdmeCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZT1HcmFwaGljcwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgKikK ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICByYWRpbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl PVR1bmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgc291bmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1BdWRp bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHR2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9VFYKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlbykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVZpZGVvCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICAgICBlc2FjOwogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPSJBdWRpb1ZpZGVvOyR7dHlwZX0iCiAgICAgICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgOzsKICAgICAgICAgICAgbmV0 KQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAg ZGlhbHVwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPURpYWx1cAogICAgICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZnRwKQogICAgICAgICAgICAgICAgICAgICAg ICB0eXBlPUZpbGVUcmFuc2ZlcgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgaW0pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9SW5zdGFudE1lc3NhZ2luZwog ICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgaXJjKQogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPUlSQ0NsaWVudAogICAgICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICAgICAgbWFpbCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1FbWFpbAog ICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgbmV3cykKICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZT1OZXdzCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICBubnRwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPU5ld3MKICAgICAg ICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHAycCkKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT1GaWxlVHJhbnNmZXIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICAgICAgICAgIHZvaXApCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9VGVsZXBob255 CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAg ICAgICB0eXBlPSJOZXR3b3JrOyR7dHlwZX0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHNj aSkKICAgICAgICAgICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAg IGFzdHJvKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1Bc3Ryb25vbXkKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGJpbyopCiAgICAgICAgICAgICAgICAg ICAgICAgIHR5cGU9QmlvbG9neQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgY2FsYyopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Q2FsY3VsYXRvcgogICAg ICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2hlbSopCiAgICAgICAgICAg ICAgICAgICAgICAgIHR5cGU9Q2hlbWlzdHJ5CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgICAgICAgICBlbGVjKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1FbGVjdHJv bmljcwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZ2VvKikKICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZT1HZW9sb2d5CiAgICAgICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgICAgICBtYXRoKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1N YXRoCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBwaHlzaWNzKQog ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVBoeXNpY3MKICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgIHZpc3VhbCopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU9RGF0YVZpc3VhbGl6YXRpb24KICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAg ICAgZXNhYzsKICAgICAgICAgICAgICAgIHR5cGU9IkVkdWNhdGlvbjtTY2llbmNlOyR7dHlwZX0i CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHN5cykKICAgICAgICAgICAgICAgIHR5cGU9IlN5 c3RlbSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgd3d3KQogICAgICAgICAgICAgICAgY2Fz ZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgY2xpZW50KQogICAgICAgICAgICAg ICAgICAgICAgICB0eXBlPVdlYkJyb3dzZXIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIHR5cGU9Ik5ldHdvcms7JHt0eXBlfSIKICAg ICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgIHR5cGU9CiAgICAgICAg ICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGZpOwogICAgaWYgWyAiJHtTTE9UfSIgPT0gIjAiIF07 IHRoZW4KICAgICAgICBsb2NhbCBkZXNrdG9wX25hbWU9IiR7UE59IjsKICAgIGVsc2UKICAgICAg ICBsb2NhbCBkZXNrdG9wX25hbWU9IiR7UE59LSR7U0xPVH0iOwogICAgZmk7CiAgICBsb2NhbCBk ZXNrdG9wPSIke1R9LyQoZWNobyAke2V4ZWN9IHwgc2VkICdzOltbOnNwYWNlOl0vOl06XzpnJykt JHtkZXNrdG9wX25hbWV9LmRlc2t0b3AiOwogICAgdHlwZT0ke3R5cGUlO30ke3R5cGU6Kzt9Owog ICAgZXNob3B0c19wdXNoIC1zIGV4dGdsb2I7CiAgICBpZiBbWyAtbiAke2ljb259ICYmICR7aWNv bn0gIT0gLyogXV0gJiYgW1sgJHtpY29ufSA9PSAqLnhwbSB8fCAke2ljb259ID09ICoucG5nIHx8 ICR7aWNvbn0gPT0gKi5zdmcgXV07IHRoZW4KICAgICAgICBld2FybiAiQXMgZGVzY3JpYmVkIGlu IHRoZSBJY29uIFRoZW1lIFNwZWNpZmljYXRpb24sIGljb24gZmlsZSBleHRlbnNpb25zIGFyZSBu b3QiOwogICAgICAgIGV3YXJuICJhbGxvd2VkIGluIC5kZXNrdG9wIGZpbGVzIGlmIHRoZSB2YWx1 ZSBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aC4iOwogICAgICAgIGljb249JHtpY29uJS5AKHhwbXxw bmd8c3ZnKX07CiAgICBmaTsKICAgIGVzaG9wdHNfcG9wOwogICAgY2F0ID4gIiR7ZGVza3RvcH0i ICA8PC1FT0YKW0Rlc2t0b3AgRW50cnldCk5hbWU9JHtuYW1lfQpUeXBlPUFwcGxpY2F0aW9uCkNv bW1lbnQ9JHtERVNDUklQVElPTn0KRXhlYz0ke2V4ZWN9ClRyeUV4ZWM9JHtleGVjJSUgKn0KSWNv bj0ke2ljb259CkNhdGVnb3JpZXM9JHt0eXBlfQpFT0YKCiAgICBpZiBbWyAke2ZpZWxkczotPX0g IT0gKj0qIF1dOyB0aGVuCiAgICAgICAgZXdhcm4gIm1ha2VfZGVza3RvcF9lbnRyeTogdXBkYXRl IHlvdXIgNXRoIGFyZyB0byByZWFkIFBhdGg9JHtmaWVsZHN9IjsKICAgICAgICBmaWVsZHM9IlBh dGg9JHtmaWVsZHN9IjsKICAgIGZpOwogICAgW1sgLW4gJHtmaWVsZHN9IF1dICYmIHByaW50ZiAn JWJcbicgIiR7ZmllbGRzfSIgPj4gIiR7ZGVza3RvcH0iOwogICAgKCBpbnNpbnRvIC91c3Ivc2hh cmUvYXBwbGljYXRpb25zOwogICAgZG9pbnMgIiR7ZGVza3RvcH0iICkgfHwgZGllICJpbnN0YWxs aW5nIGRlc2t0b3AgZmlsZSBmYWlsZWQiCn0KbWFrZV9zZXNzaW9uX2Rlc2t0b3AgKCkgCnsgCiAg ICBbWyAteiAkMSBdXSAmJiBlZXJyb3IgIiQwOiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSB0aXRsZSIg JiYgcmV0dXJuIDE7CiAgICBbWyAteiAkMiBdXSAmJiBlZXJyb3IgIiQwOiBZb3UgbXVzdCBzcGVj aWZ5IHRoZSBjb21tYW5kIiAmJiByZXR1cm4gMTsKICAgIGxvY2FsIHRpdGxlPSQxOwogICAgbG9j YWwgY29tbWFuZD0kMjsKICAgIGxvY2FsIGRlc2t0b3A9JHtUfS8ke3dtOi0ke1BOfX0uZGVza3Rv cDsKICAgIHNoaWZ0IDI7CiAgICBjYXQgPiAiJHtkZXNrdG9wfSIgIDw8LUVPRgpbRGVza3RvcCBF bnRyeV0KTmFtZT0ke3RpdGxlfQpDb21tZW50PVRoaXMgc2Vzc2lvbiBsb2dzIHlvdSBpbnRvICR7 dGl0bGV9CkV4ZWM9JHtjb21tYW5kfSAkKgpUcnlFeGVjPSR7Y29tbWFuZH0KVHlwZT1YU2Vzc2lv bgpFT0YKCiAgICAoIGluc2ludG8gL3Vzci9zaGFyZS94c2Vzc2lvbnM7CiAgICBkb2lucyAiJHtk ZXNrdG9wfSIgKQp9Cm1ha2Vfd3JhcHBlciAoKSAKeyAKICAgIGxvY2FsIHdyYXBwZXI9JDEgYmlu PSQyIGNoZGlyPSQzIGxpYmRpcj0kNCBwYXRoPSQ1OwogICAgbG9jYWwgdG1wd3JhcHBlcj0kKGVt a3RlbXApOwogICAgY2F0ID4gIiR7dG1wd3JhcHBlcn0iICA8PEVPRgojIS9iaW4vc2gKY2QgIiR7 Y2hkaXI6LS59IgppZiBbIC1uICIke2xpYmRpcn0iIF0gOyB0aGVuCglpZiBbICJcJHtMRF9MSUJS QVJZX1BBVEgrc2V0fSIgPSAic2V0IiBdIDsgdGhlbgoJCWV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9 Ilwke0xEX0xJQlJBUllfUEFUSH06JHtsaWJkaXJ9IgoJZWxzZQoJCWV4cG9ydCBMRF9MSUJSQVJZ X1BBVEg9IiR7bGliZGlyfSIKCWZpCmZpCmV4ZWMgJHtiaW59ICJcJEAiCkVPRgoKICAgIGNobW9k IGdvK3J4ICIke3RtcHdyYXBwZXJ9IjsKICAgIGlmIFtbIC1uICR7cGF0aH0gXV07IHRoZW4KICAg ICAgICAoIGV4ZWludG8gIiR7cGF0aH0iOwogICAgICAgIG5ld2V4ZSAiJHt0bXB3cmFwcGVyfSIg IiR7d3JhcHBlcn0iICkgfHwgZGllOwogICAgZWxzZQogICAgICAgIG5ld2JpbiAiJHt0bXB3cmFw cGVyfSIgIiR7d3JhcHBlcn0iIHx8IGRpZTsKICAgIGZpCn0KbXVsdGlsaWJfZW52ICgpIAp7IAog ICAgbG9jYWwgQ1RBUkdFVD0kezE6LSR7Q1RBUkdFVH19OwogICAgY2FzZSAke0NUQVJHRVR9IGlu IAogICAgICAgIHg4Nl82NCopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfeDg2PSR7Q0ZMQUdT X3g4Ni0tbTMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3g4Nj0ke0NUQVJHRVQveDg2XzY0 L2k2ODZ9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF94ODY9JHtDSE9TVF94ODZ9OwogICAg ICAgICAgICBpZiBbWyAke1NZTUxJTktfTElCfSA9PSAieWVzIiBdXTsgdGhlbgogICAgICAgICAg ICAgICAgZXhwb3J0IExJQkRJUl94ODY9ImxpYjMyIjsKICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgZXhwb3J0IExJQkRJUl94ODY9ImxpYiI7CiAgICAgICAgICAgIGZpOwogICAgICAg ICAgICBleHBvcnQgQ0ZMQUdTX2FtZDY0PSR7Q0ZMQUdTX2FtZDY0LS1tNjR9OwogICAgICAgICAg ICBleHBvcnQgQ0hPU1RfYW1kNjQ9JHtDVEFSR0VUfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJH RVRfYW1kNjQ9JHtDSE9TVF9hbWQ2NH07CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfYW1kNjQ9 ImxpYjY0IjsKICAgICAgICAgICAgZXhwb3J0IENGTEFHU194MzI9JHtDRkxBR1NfeDMyLS1teDMy fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3gzMj0ke0NUQVJHRVR9OwogICAgICAgICAgICBl eHBvcnQgQ1RBUkdFVF94MzI9JHtDSE9TVF94MzJ9OwogICAgICAgICAgICBleHBvcnQgTElCRElS X3gzMj0ibGlieDMyIjsKICAgICAgICAgICAgOiAke01VTFRJTElCX0FCSVM9YW1kNjQgeDg2fTsK ICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPWFtZDY0fQogICAgICAgIDs7CiAgICAgICAgbWlw czY0KikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19vMzI9JHtDRkxBR1NfbzMyLS1tYWJpPTMy fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX28zMj0ke0NUQVJHRVQvbWlwczY0L21pcHN9Owog ICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9vMzI9JHtDSE9TVF9vMzJ9OwogICAgICAgICAgICBl eHBvcnQgTElCRElSX28zMj0ibGliIjsKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19uMzI9JHtD RkxBR1NfbjMyLS1tYWJpPW4zMn07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9uMzI9JHtDVEFS R0VUfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfbjMyPSR7Q0hPU1RfbjMyfTsKICAgICAg ICAgICAgZXhwb3J0IExJQkRJUl9uMzI9ImxpYjMyIjsKICAgICAgICAgICAgZXhwb3J0IENGTEFH U19uNjQ9JHtDRkxBR1NfbjY0LS1tYWJpPTY0fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX242 ND0ke0NUQVJHRVR9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9uNjQ9JHtDSE9TVF9uNjR9 OwogICAgICAgICAgICBleHBvcnQgTElCRElSX242ND0ibGliNjQiOwogICAgICAgICAgICA6ICR7 TVVMVElMSUJfQUJJUz1uNjQgbjMyIG8zMn07CiAgICAgICAgICAgIDogJHtERUZBVUxUX0FCST1u MzJ9CiAgICAgICAgOzsKICAgICAgICBwb3dlcnBjNjQqKQogICAgICAgICAgICBleHBvcnQgQ0ZM QUdTX3BwYz0ke0NGTEFHU19wcGMtLW0zMn07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9wcGM9 JHtDVEFSR0VUL3Bvd2VycGM2NC9wb3dlcnBjfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRf cHBjPSR7Q0hPU1RfcHBjfTsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9wcGM9ImxpYiI7CiAg ICAgICAgICAgIGV4cG9ydCBDRkxBR1NfcHBjNjQ9JHtDRkxBR1NfcHBjNjQtLW02NH07CiAgICAg ICAgICAgIGV4cG9ydCBDSE9TVF9wcGM2ND0ke0NUQVJHRVR9OwogICAgICAgICAgICBleHBvcnQg Q1RBUkdFVF9wcGM2ND0ke0NIT1NUX3BwYzY0fTsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9w cGM2ND0ibGliNjQiOwogICAgICAgICAgICA6ICR7TVVMVElMSUJfQUJJUz1wcGM2NCBwcGN9Owog ICAgICAgICAgICA6ICR7REVGQVVMVF9BQkk9cHBjNjR9CiAgICAgICAgOzsKICAgICAgICBzMzkw eCopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfczM5MD0ke0NGTEFHU19zMzkwLS1tMzF9Owog ICAgICAgICAgICBleHBvcnQgQ0hPU1RfczM5MD0ke0NUQVJHRVQvczM5MHgvczM5MH07CiAgICAg ICAgICAgIGV4cG9ydCBDVEFSR0VUX3MzOTA9JHtDSE9TVF9zMzkwfTsKICAgICAgICAgICAgZXhw b3J0IExJQkRJUl9zMzkwPSJsaWIiOwogICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX3MzOTB4PSR7 Q0ZMQUdTX3MzOTB4LS1tNjR9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfczM5MHg9JHtDVEFS R0VUfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfczM5MHg9JHtDSE9TVF9zMzkweH07CiAg ICAgICAgICAgIGV4cG9ydCBMSUJESVJfczM5MHg9ImxpYjY0IjsKICAgICAgICAgICAgOiAke01V TFRJTElCX0FCSVM9czM5MHggczM5MH07CiAgICAgICAgICAgIDogJHtERUZBVUxUX0FCST1zMzkw eH0KICAgICAgICA7OwogICAgICAgIHNwYXJjKikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19z cGFyYzMyPSR7Q0ZMQUdTX3NwYXJjMzJ9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1Rfc3BhcmMz Mj0ke0NUQVJHRVQvc3BhcmM2NC9zcGFyY307CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3Nw YXJjMzI9JHtDSE9TVF9zcGFyYzMyfTsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9zcGFyYzMy PSJsaWIiOwogICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX3NwYXJjNjQ9JHtDRkxBR1Nfc3BhcmM2 NC0tbTY0fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3NwYXJjNjQ9JHtDVEFSR0VUfTsKICAg ICAgICAgICAgZXhwb3J0IENUQVJHRVRfc3BhcmM2ND0ke0NIT1NUX3NwYXJjNjR9OwogICAgICAg ICAgICBleHBvcnQgTElCRElSX3NwYXJjNjQ9ImxpYjY0IjsKICAgICAgICAgICAgOiAke01VTFRJ TElCX0FCSVM9c3BhcmM2NCBzcGFyYzMyfTsKICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPXNw YXJjNjR9CiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICA6ICR7TVVMVElMSUJfQUJJ Uz1kZWZhdWx0fTsKICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPWRlZmF1bHR9CiAgICAgICAg OzsKICAgIGVzYWM7CiAgICBleHBvcnQgTVVMVElMSUJfQUJJUyBERUZBVUxUX0FCSQp9Cm11bHRp bGliX3Rvb2xjaGFpbl9zZXR1cCAoKSAKeyAKICAgIGxvY2FsIHYgdnY7CiAgICBleHBvcnQgQUJJ PSQxOwogICAgaWYgW1sgJHtfX0RFRkFVTFRfQUJJX1NBVkVEfSA9PSAidHJ1ZSIgXV07IHRoZW4K ICAgICAgICBmb3IgdiBpbiBDSE9TVCBDQlVJTEQgQVMgQ0MgQ1hYIExEOwogICAgICAgIGRvCiAg ICAgICAgICAgIHZ2PSJfX2FiaV9zYXZlZF8ke3Z9IjsKICAgICAgICAgICAgZXhwb3J0ICR7dn09 IiR7IXZ2fSI7CiAgICAgICAgICAgIHVuc2V0ICR7dnZ9OwogICAgICAgIGRvbmU7CiAgICAgICAg dW5zZXQgX19ERUZBVUxUX0FCSV9TQVZFRDsKICAgIGZpOwogICAgaWYgW1sgJHtBQkl9ICE9ICR7 REVGQVVMVF9BQkl9IF1dOyB0aGVuCiAgICAgICAgZm9yIHYgaW4gQ0hPU1QgQ0JVSUxEIEFTIEND IENYWCBMRDsKICAgICAgICBkbwogICAgICAgICAgICBleHBvcnQgX19hYmlfc2F2ZWRfJHt2fT0i JHshdn0iOwogICAgICAgIGRvbmU7CiAgICAgICAgZXhwb3J0IF9fREVGQVVMVF9BQklfU0FWRUQ9 InRydWUiOwogICAgICAgIGV4cG9ydCBDSE9TVD0kKGdldF9hYmlfQ0hPU1QgJHtERUZBVUxUX0FC SX0pOwogICAgICAgIGV4cG9ydCBBUz0iJCh0Yy1nZXRBUykgJChnZXRfYWJpX0FTRkxBR1MpIjsK ICAgICAgICBleHBvcnQgQ0M9IiQodGMtZ2V0Q0MpICQoZ2V0X2FiaV9DRkxBR1MpIjsKICAgICAg ICBleHBvcnQgQ1hYPSIkKHRjLWdldENYWCkgJChnZXRfYWJpX0NGTEFHUykiOwogICAgICAgIGV4 cG9ydCBMRD0iJCh0Yy1nZXRMRCkgJChnZXRfYWJpX0xERkxBR1MpIjsKICAgICAgICBleHBvcnQg Q0hPU1Q9JChnZXRfYWJpX0NIT1NUICQxKTsKICAgICAgICBleHBvcnQgQ0JVSUxEPSQoZ2V0X2Fi aV9DSE9TVCAkMSk7CiAgICBmaQp9Cm15Y29uZiAoKSAKeyAKICAgIG15Y29uZj0oIiR7bXljb25m W0BdfSIgIiRAIikKfQpuZXdpY29uICgpIAp7IAogICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUvcGl4 bWFwczsKICAgIG5ld2lucyAiJEAiICkKfQpuZXdtZW51ICgpIAp7IAogICAgKCBpbnNpbnRvIC91 c3Ivc2hhcmUvYXBwbGljYXRpb25zOwogICAgbmV3aW5zICIkQCIgKQp9Cm5vLWFzLW5lZWRlZCAo KSAKeyAKICAgIGNhc2UgJCgkKHRjLWdldExEKSAtdiAyPiYxIDwvZGV2L251bGwpIGluIAogICAg ICAgICpHTlUqKQogICAgICAgICAgICBlY2hvICItV2wsLS1uby1hcy1uZWVkZWQiCiAgICAgICAg OzsKICAgIGVzYWMKfQpub25mYXRhbCAoKSAKeyAKICAgIGlmIGhhcyAiJHtFQVBJOi0wfSIgMCAx IDIgMyAzX3ByZTI7IHRoZW4KICAgICAgICBkaWUgIiRGVU5DTkFNRSgpIG5vdCBzdXBwb3J0ZWQg aW4gdGhpcyBFQVBJIjsKICAgIGZpOwogICAgaWYgW1sgJCMgLWx0IDEgXV07IHRoZW4KICAgICAg ICBkaWUgIiRGVU5DTkFNRSgpOiBNaXNzaW5nIGFyZ3VtZW50IjsKICAgIGZpOwogICAgUE9SVEFH RV9OT05GQVRBTD0xICIkQCIKfQpudW1iZXJfYWJpcyAoKSAKeyAKICAgIHNldCAtLSBgZ2V0X2lu c3RhbGxfYWJpc2A7CiAgICBlY2hvICQjCn0KcGF0aF9leGlzdHMgKCkgCnsgCiAgICBsb2NhbCBv cHQ9JDE7CiAgICBbWyAke29wdH0gPT0gLVthb10gXV0gJiYgc2hpZnQgfHwgb3B0PSItYSI7CiAg ICBbWyAkIyAtZXEgMCBdXSAmJiByZXR1cm4gMTsKICAgIGxvY2FsIHAgcj0wOwogICAgZm9yIHAg aW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgLWUgJHtwfSBdXTsKICAgICAgICA6ICQoKCByICs9 ICQ/ICkpOwogICAgZG9uZTsKICAgIGNhc2UgJHtvcHR9IGluIAogICAgICAgIC1hKQogICAgICAg ICAgICByZXR1cm4gJCgoIHIgIT0gMCApKQogICAgICAgIDs7CiAgICAgICAgLW8pCiAgICAgICAg ICAgIHJldHVybiAkKCggciA9PSAkIyApKQogICAgICAgIDs7CiAgICBlc2FjCn0KcGtnX25vZmV0 Y2ggKCkgCnsgCiAgICBfZWFwaTBfcGtnX25vZmV0Y2ggIiRAIgp9CnBrZ19wb3N0aW5zdCAoKSAK eyAKICAgIGR1YWxfc2NyaXB0czsKICAgIGlmIFtbICIke1JPT1R9IiA9ICIvIiBdXTsgdGhlbgog ICAgICAgIGxvY2FsIElOQyBESVIgZmlsZTsKICAgICAgICBJTkM9JChwZXJsIC1lICdmb3IgJGxp bmUgKEBJTkMpIHsgbmV4dCBpZiAkbGluZSBlcSAiLiI7IG5leHQgaWYgJGxpbmUgPX4gbS8nJHtN WV9QVn0nfGV0Y3xsb2NhbHxwZXJsJC87IHByaW50ICIkbGluZVxuIiB9Jyk7CiAgICAgICAgZWlu Zm8gIlJlbW92aW5nIG9sZCAucGggZmlsZXMiOwogICAgICAgIGZvciBESVIgaW4gJHtJTkN9Owog ICAgICAgIGRvCiAgICAgICAgICAgIGlmIFtbIC1kICIke0RJUn0iIF1dOyB0aGVuCiAgICAgICAg ICAgICAgICBmb3IgZmlsZSBpbiAkKGZpbmQgIiR7RElSfSIgLW5hbWUgIioucGgiIC10eXBlIGYg KTsKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgcm0gLWYgIiR7ZmlsZX0i OwogICAgICAgICAgICAgICAgICAgIGVpbmZvICI8PCAke2ZpbGV9IjsKICAgICAgICAgICAgICAg IGRvbmU7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICAgICAgZm9yIERJUiBpbiAk e0lOQ307CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgLWQgIiR7RElSfSIgXV07IHRoZW4K ICAgICAgICAgICAgICAgIGZpbmQgIiR7RElSfSIgLWRlcHRoIC10eXBlIGQgLXByaW50MCB8IHhh cmdzIC0wIC1yIHJtZGlyICY+L2Rldi9udWxsOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25l OwogICAgICAgIGlmICEgdXNlIGJ1aWxkOyB0aGVuCiAgICAgICAgICAgIGViZWdpbiAiR2VuZXJh dGluZyBDb25maWdMb2NhbC5wbSAoaWdub3JlIGFueSBlcnJvcikiOwogICAgICAgICAgICBlbmMy eHMgLUM7CiAgICAgICAgZmk7CiAgICAgICAgZWluZm8gIkNvbnZlcnRpbmcgQyBoZWFkZXIgZmls ZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgUGVybCBmb3JtYXQgKGlnbm9yZSBhbnkgZXJyb3IpIjsK ICAgICAgICBwdXNoZCAvdXNyL2luY2x1ZGUgPiAvZGV2L251bGw7CiAgICAgICAgaDJwaCAtUSAt YSAtZCAke0FSQ0hfTElCfSBhc20vdGVybWlvcy5oIHN5c2NhbGwuaCBzeXNsaW1pdHMuaCBzeXNs b2cuaCBzeXMvaW9jdGwuaCBzeXMvc29ja2V0Lmggc3lzL3RpbWUuaCB3YWl0Lmggc3lzZXhpdHMu aDsKICAgICAgICBwb3BkID4gL2Rldi9udWxsOwogICAgZmkKfQpwa2dfcG9zdHJtICgpIAp7IAog ICAgZHVhbF9zY3JpcHRzCn0KcGtnX3NldHVwICgpIAp7IAogICAgY2FzZSAke0NIT1NUfSBpbiAK ICAgICAgICAqLWZyZWVic2QqKQogICAgICAgICAgICBvc25hbWU9ImZyZWVic2QiCiAgICAgICAg OzsKICAgICAgICAqLWRyYWdvbmZseSopCiAgICAgICAgICAgIG9zbmFtZT0iZHJhZ29uZmx5Igog ICAgICAgIDs7CiAgICAgICAgKi1uZXRic2QqKQogICAgICAgICAgICBvc25hbWU9Im5ldGJzZCIK ICAgICAgICA7OwogICAgICAgICotb3BlbmJzZCopCiAgICAgICAgICAgIG9zbmFtZT0ib3BlbmJz ZCIKICAgICAgICA7OwogICAgICAgICotZGFyd2luKikKICAgICAgICAgICAgb3NuYW1lPSJkYXJ3 aW4iCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBvc25hbWU9ImxpbnV4IgogICAg ICAgIDs7CiAgICBlc2FjOwogICAgaWYgdXNlIGl0aHJlYWRzOyB0aGVuCiAgICAgICAgbXl0aHJl YWRpbmc9Ii1tdWx0aSI7CiAgICAgICAgbXlhcmNoPSIke0NIT1NUJSUtKn0tJHtvc25hbWV9LXRo cmVhZCI7CiAgICBlbHNlCiAgICAgICAgbXlhcmNoPSIke0NIT1NUJSUtKn0tJHtvc25hbWV9IjsK ICAgIGZpOwogICAgaWYgdXNlIGRlYnVnOyB0aGVuCiAgICAgICAgbXlhcmNoPSIke215YXJjaH0t ZGVidWciOwogICAgZmk7CiAgICBMSUJQRVJMPSJsaWJwZXJsJChnZXRfbGlibmFtZSAke01ZX1BW fSApIjsKICAgIFBSSVZfTElCPSIvdXNyLyQoZ2V0X2xpYmRpcikvcGVybDUvJHtNWV9QVn0iOwog ICAgQVJDSF9MSUI9Ii91c3IvJChnZXRfbGliZGlyKS9wZXJsNS8ke01ZX1BWfS8ke215YXJjaH0k e215dGhyZWFkaW5nfSI7CiAgICBTSVRFX0xJQj0iL3Vzci8kKGdldF9saWJkaXIpL3Blcmw1L3Np dGVfcGVybC8ke01ZX1BWfSI7CiAgICBTSVRFX0FSQ0g9Ii91c3IvJChnZXRfbGliZGlyKS9wZXJs NS9zaXRlX3BlcmwvJHtNWV9QVn0vJHtteWFyY2h9JHtteXRocmVhZGluZ30iOwogICAgVkVORE9S X0xJQj0iL3Vzci8kKGdldF9saWJkaXIpL3Blcmw1L3ZlbmRvcl9wZXJsLyR7TVlfUFZ9IjsKICAg IFZFTkRPUl9BUkNIPSIvdXNyLyQoZ2V0X2xpYmRpcikvcGVybDUvdmVuZG9yX3BlcmwvJHtNWV9Q Vn0vJHtteWFyY2h9JHtteXRocmVhZGluZ30iOwogICAgaWYgdXNlIGl0aHJlYWRzOyB0aGVuCiAg ICAgICAgZWNobyAiIjsKICAgICAgICBld2FybiAiVEhSRUFEUyBXQVJOSU5HOiI7CiAgICAgICAg ZXdhcm4gIlBMRUFTRSBOT1RFOiBZb3UgYXJlIGNvbXBpbGluZyAke01ZX1B9IHdpdGgiOwogICAg ICAgIGV3YXJuICJpbnRlcnByZXRlci1sZXZlbCB0aHJlYWRpbmcgZW5hYmxlZC4iOwogICAgICAg IGV3YXJuICJUaHJlYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBieSBhbGwgYXBwbGljYXRpb25zICI7 CiAgICAgICAgZXdhcm4gInRoYXQgY29tcGlsZSBhZ2FpbnN0IHBlcmwuIFlvdSB1c2UgdGhyZWFk aW5nIGF0ICI7CiAgICAgICAgZXdhcm4gInlvdXIgb3duIGRpc2NyZXRpb24uICI7CiAgICBmaTsK ICAgIGlmIGhhc192ZXJzaW9uICI8ZGV2LWxhbmcvcGVybC0ke1NIT1JUX1BWfSI7IHRoZW4KICAg ICAgICBlY2hvICIiOwogICAgICAgIGV3YXJuICJVUERBVEUgVEhFIFBFUkwgTU9EVUxFUzoiOwog ICAgICAgIGV3YXJuICJBZnRlciB1cGRhdGluZyBkZXYtbGFuZy9wZXJsIHlvdSBtdXN0IHJlaW5z dGFsbCI7CiAgICAgICAgZXdhcm4gInRoZSBpbnN0YWxsZWQgcGVybCBtb2R1bGVzLiI7CiAgICAg ICAgZXdhcm4gIlVzZTogcGVybC1jbGVhbmVyIC0tYWxsIjsKICAgIGVsc2UKICAgICAgICBpZiBo YXNfdmVyc2lvbiBkZXYtbGFuZy9wZXJsOyB0aGVuCiAgICAgICAgICAgIGlmICggdXNlIGl0aHJl YWRzICYmICEgaGFzX3ZlcnNpb24gZGV2LWxhbmcvcGVybFtpdGhyZWFkc10gKSB8fCAoICEgdXNl IGl0aHJlYWRzICYmIGhhc192ZXJzaW9uIGRldi1sYW5nL3BlcmxbaXRocmVhZHNdICkgfHwgKCB1 c2UgZGVidWcgJiYgISBoYXNfdmVyc2lvbiBkZXYtbGFuZy9wZXJsW2RlYnVnXSApIHx8ICggISB1 c2UgZGVidWcgJiYgaGFzX3ZlcnNpb24gZGV2LWxhbmcvcGVybFtkZWJ1Z10gKTsgdGhlbgogICAg ICAgICAgICAgICAgZWNobyAiIjsKICAgICAgICAgICAgICAgIGV3YXJuICJUT0dHTEVEIFVTRS1G TEFHUyBXQVJOSU5HOiI7CiAgICAgICAgICAgICAgICBld2FybiAiWW91IGNoYW5nZWQgb25lIG9m IHRoZSB1c2UtZmxhZ3MgaXRocmVhZHMgb3IgZGVidWcuIjsKICAgICAgICAgICAgICAgIGV3YXJu ICJZb3UgbXVzdCByZWJ1aWxkIGFsbCBwZXJsLW1vZHVsZXMgaW5zdGFsbGVkLiI7CiAgICAgICAg ICAgICAgICBld2FybiAiVXNlOiBwZXJsLWNsZWFuZXIgLS1tb2R1bGVzIDsgcGVybC1jbGVhbmVy IC0tZm9yY2UgLS1saWJwZXJsIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICBmaTsK ICAgIGR1YWxfc2NyaXB0cwp9CnBvc3Rfc3JjX2luc3RhbGwgKCkgCnsgCiAgICBbWyAtZCAke0R9 IF1dIHx8IHJldHVybiAwOwogICAgW1sgJHtFX01BQ0hJTkV9ID09ICIiIF1dICYmIHJldHVybiAw OwogICAgY21kbGluZT0iIjsKICAgIGZvciBFTSBpbiAkRV9NQUNISU5FOwogICAgZG8KICAgICAg ICBjbWRsaW5lKz0iIC1lIF4ke0VNfVtbOnNwYWNlOl1dIjsKICAgIGRvbmU7CiAgICBvdXRwdXQ9 IiQoIGNkICR7RH0gJiYgc2NhbmVsZiAtUm15QkYlYSAuIHwgZ3JlcCAtdiAke2NtZGxpbmV9ICki OwogICAgW1sgJG91dHB1dCAhPSAiIiBdXSAmJiB7IAogICAgICAgIGVjaG87CiAgICAgICAgZWNo byAiKiBXcm9uZyBFTV9UWVBFLiBFeHBlY3RlZCAke0VfTUFDSElORX0iOwogICAgICAgIGVjaG8g LWUgIiR7b3V0cHV0fSI7CiAgICAgICAgZWNobzsKICAgICAgICBleGl0IDEKICAgIH0KfQpwcmVz ZXJ2ZV9vbGRfbGliICgpIAp7IAogICAgaWYgW1sgJHtFQlVJTERfUEhBU0V9ICE9ICJwcmVpbnN0 IiBdXTsgdGhlbgogICAgICAgIGVlcnJvciAicHJlc2VydmVfb2xkX2xpYigpIG11c3QgYmUgY2Fs bGVkIGZyb20gcGtnX3ByZWluc3QoKSBvbmx5IjsKICAgICAgICBkaWUgIkludmFsaWQgcHJlc2Vy dmVfb2xkX2xpYigpIHVzYWdlIjsKICAgIGZpOwogICAgW1sgLXogJDEgXV0gJiYgZGllICJVc2Fn ZTogcHJlc2VydmVfb2xkX2xpYiA8bGlicmFyeSB0byBwcmVzZXJ2ZT4gW21vcmUgbGlicmFyaWVz IHRvIHByZXNlcnZlXSI7CiAgICBoYXMgcHJlc2VydmUtbGlicyAke0ZFQVRVUkVTfSAmJiByZXR1 cm4gMDsKICAgIGxvY2FsIGxpYiBkaXI7CiAgICBmb3IgbGliIGluICIkQCI7CiAgICBkbwogICAg ICAgIFtbIC1lICR7Uk9PVH0vJHtsaWJ9IF1dIHx8IGNvbnRpbnVlOwogICAgICAgIGRpcj0ke2xp YiUvKn07CiAgICAgICAgZG9kaXIgJHtkaXJ9IHx8IGRpZSAiZG9kaXIgJHtkaXJ9IGZhaWxlZCI7 CiAgICAgICAgY3AgIiR7Uk9PVH0iLyR7bGlifSAiJHtEfSIvJHtsaWJ9IHx8IGRpZSAiY3AgJHts aWJ9IGZhaWxlZCI7CiAgICAgICAgdG91Y2ggIiR7RH0iLyR7bGlifTsKICAgIGRvbmUKfQpwcmVz ZXJ2ZV9vbGRfbGliX25vdGlmeSAoKSAKeyAKICAgIGlmIFtbICR7RUJVSUxEX1BIQVNFfSAhPSAi cG9zdGluc3QiIF1dOyB0aGVuCiAgICAgICAgZWVycm9yICJwcmVzZXJ2ZV9vbGRfbGliX25vdGlm eSgpIG11c3QgYmUgY2FsbGVkIGZyb20gcGtnX3Bvc3RpbnN0KCkgb25seSI7CiAgICAgICAgZGll ICJJbnZhbGlkIHByZXNlcnZlX29sZF9saWJfbm90aWZ5KCkgdXNhZ2UiOwogICAgZmk7CiAgICBo YXMgcHJlc2VydmUtbGlicyAke0ZFQVRVUkVTfSAmJiByZXR1cm4gMDsKICAgIGxvY2FsIGxpYiBu b3RpY2U9MDsKICAgIGZvciBsaWIgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgLWUgJHtST09U fS8ke2xpYn0gXV0gfHwgY29udGludWU7CiAgICAgICAgaWYgW1sgJHtub3RpY2V9IC1lcSAwIF1d OyB0aGVuCiAgICAgICAgICAgIG5vdGljZT0xOwogICAgICAgICAgICBld2FybiAiT2xkIHZlcnNp b25zIG9mIGluc3RhbGxlZCBsaWJyYXJpZXMgd2VyZSBkZXRlY3RlZCBvbiB5b3VyIHN5c3RlbS4i OwogICAgICAgICAgICBld2FybiAiSW4gb3JkZXIgdG8gYXZvaWQgYnJlYWtpbmcgcGFja2FnZXMg dGhhdCBkZXBlbmQgb24gdGhlc2Ugb2xkIGxpYnMsIjsKICAgICAgICAgICAgZXdhcm4gInRoZSBs aWJyYXJpZXMgYXJlIG5vdCBiZWluZyByZW1vdmVkLiAgWW91IG5lZWQgdG8gcnVuIHJldmRlcC1y ZWJ1aWxkIjsKICAgICAgICAgICAgZXdhcm4gImluIG9yZGVyIHRvIHJlbW92ZSB0aGVzZSBvbGQg ZGVwZW5kZW5jaWVzLiAgSWYgeW91IGRvIG5vdCBoYXZlIHRoaXMiOwogICAgICAgICAgICBld2Fy biAiaGVscGVyIHByb2dyYW0sIHNpbXBseSBlbWVyZ2UgdGhlICdnZW50b29sa2l0JyBwYWNrYWdl LiI7CiAgICAgICAgICAgIGV3YXJuOwogICAgICAgIGZpOwogICAgICAgIFtbICR7UE59ID09ICJt cGZyIiBdXSAmJiBsaWI9JHtsaWIjIyovfTsKICAgICAgICBld2FybiAiICAjIHJldmRlcC1yZWJ1 aWxkIC0tbGlicmFyeSAnJHtsaWJ9JyI7CiAgICBkb25lOwogICAgaWYgW1sgJHtub3RpY2V9IC1l cSAxIF1dOyB0aGVuCiAgICAgICAgZXdhcm47CiAgICAgICAgZXdhcm4gIk9uY2UgeW91J3ZlIGZp bmlzaGVkIHJ1bm5pbmcgcmV2ZGVwLXJlYnVpbGQsIGl0IHNob3VsZCBiZSBzYWZlIHRvIjsKICAg ICAgICBld2FybiAiZGVsZXRlIHRoZSBvbGQgbGlicmFyaWVzLiAgSGVyZSBpcyBhIGNvcHkgJiBw YXN0ZSBmb3IgdGhlIGxhenk6IjsKICAgICAgICBmb3IgbGliIGluICIkQCI7CiAgICAgICAgZG8K ICAgICAgICAgICAgZXdhcm4gIiAgIyBybSAnJHtsaWJ9JyI7CiAgICAgICAgZG9uZTsKICAgIGZp Cn0KcmF3LWxkZmxhZ3MgKCkgCnsgCiAgICBsb2NhbCB4IGlucHV0PSIkQCI7CiAgICBbWyAteiAk e2lucHV0fSBdXSAmJiBpbnB1dD0ke0xERkxBR1N9OwogICAgc2V0IC0tOwogICAgZm9yIHggaW4g JHtpbnB1dH07CiAgICBkbwogICAgICAgIHg9JHt4Iy1XbCx9OwogICAgICAgIHNldCAtLSAiJEAi ICR7eC8vLC8gfTsKICAgIGRvbmU7CiAgICBlY2hvICIkQCIKfQpyZWdpc3Rlcl9zdWNjZXNzX2hv b2sgKCkgCnsgCiAgICBsb2NhbCB4OwogICAgZm9yIHggaW4gJCo7CiAgICBkbwogICAgICAgIGhh cyAkeCAkRUJVSUxEX1NVQ0NFU1NfSE9PS1MgfHwgZXhwb3J0IEVCVUlMRF9TVUNDRVNTX0hPT0tT PSIkRUJVSUxEX1NVQ0NFU1NfSE9PS1MgJHgiOwogICAgZG9uZQp9CnJlcGxhY2UtY3B1LWZsYWdz ICgpIAp7IAogICAgbG9jYWwgbmV3Y3B1PSIkIyI7CiAgICBuZXdjcHU9IiR7IW5ld2NwdX0iOwog ICAgd2hpbGUgWyAkIyAtZ3QgMSBdOyBkbwogICAgICAgIHJlcGxhY2UtZmxhZ3MgIi1tYXJjaD0k ezF9IiAiLW1hcmNoPSR7bmV3Y3B1fSI7CiAgICAgICAgcmVwbGFjZS1mbGFncyAiLW1jcHU9JHsx fSIgIi1tY3B1PSR7bmV3Y3B1fSI7CiAgICAgICAgcmVwbGFjZS1mbGFncyAiLW10dW5lPSR7MX0i ICItbXR1bmU9JHtuZXdjcHV9IjsKICAgICAgICBzaGlmdDsKICAgIGRvbmU7CiAgICByZXR1cm4g MAp9CnJlcGxhY2UtZmxhZ3MgKCkgCnsgCiAgICBbWyAkIyAhPSAyIF1dICYmIGVjaG8gJiYgZWVy cm9yICJVc2FnZTogcmVwbGFjZS1mbGFncyA8b2xkIGZsYWc+IDxuZXcgZmxhZz4iICYmIGRpZSAi cmVwbGFjZS1mbGFncyB0YWtlcyAyIGFyZ3VtZW50cywgbm90ICQjIjsKICAgIGxvY2FsIGYgZnNl dDsKICAgIGRlY2xhcmUgLWEgbmV3X0NGTEFHUyBuZXdfQ1hYRkxBR1MgbmV3X0ZGTEFHUyBuZXdf RkNGTEFHUzsKICAgIGZvciBmc2V0IGluIENGTEFHUyBDWFhGTEFHUyBGRkxBR1MgRkNGTEFHUzsK ICAgIGRvCiAgICAgICAgZm9yIGYgaW4gJHshZnNldH07CiAgICAgICAgZG8KICAgICAgICAgICAg W1sgJHtmfSA9PSAkezF9IF1dICYmIGY9JHsyfTsKICAgICAgICAgICAgZXZhbCBuZXdfJHtmc2V0 fVxbXCR7XCNuZXdfJHtmc2V0fVxbQF19XT1cJHtmfTsKICAgICAgICBkb25lOwogICAgICAgIGV2 YWwgZXhwb3J0ICR7ZnNldH09XCR7bmV3XyR7ZnNldH1cWypdfTsKICAgIGRvbmU7CiAgICByZXR1 cm4gMAp9CnJlcGxhY2Utc3BhcmM2NC1mbGFncyAoKSAKeyAKICAgIGxvY2FsIFNQQVJDNjRfQ1BV Uz0idWx0cmFzcGFyYzMgdWx0cmFzcGFyYyB2OSI7CiAgICBpZiBbICIke0NGTEFHUy9tdHVuZX0i ICE9ICIke0NGTEFHU30iIF07IHRoZW4KICAgICAgICBmb3IgeCBpbiAke1NQQVJDNjRfQ1BVU307 CiAgICAgICAgZG8KICAgICAgICAgICAgQ0ZMQUdTPSIke0NGTEFHUy8tbWNwdT0ke3h9Ly1tY3B1 PXY4fSI7CiAgICAgICAgZG9uZTsKICAgIGVsc2UKICAgICAgICBmb3IgeCBpbiAke1NQQVJDNjRf Q1BVU307CiAgICAgICAgZG8KICAgICAgICAgICAgQ0ZMQUdTPSIke0NGTEFHUy8tbWNwdT0ke3h9 Ly1tY3B1PXY4IC1tdHVuZT0ke3h9fSI7CiAgICAgICAgZG9uZTsKICAgIGZpOwogICAgaWYgWyAi JHtDWFhGTEFHUy9tdHVuZX0iICE9ICIke0NYWEZMQUdTfSIgXTsgdGhlbgogICAgICAgIGZvciB4 IGluICR7U1BBUkM2NF9DUFVTfTsKICAgICAgICBkbwogICAgICAgICAgICBDWFhGTEFHUz0iJHtD WFhGTEFHUy8tbWNwdT0ke3h9Ly1tY3B1PXY4fSI7CiAgICAgICAgZG9uZTsKICAgIGVsc2UKICAg ICAgICBmb3IgeCBpbiAke1NQQVJDNjRfQ1BVU307CiAgICAgICAgZG8KICAgICAgICAgICAgQ1hY RkxBR1M9IiR7Q1hYRkxBR1MvLW1jcHU9JHt4fS8tbWNwdT12OCAtbXR1bmU9JHt4fX0iOwogICAg ICAgIGRvbmU7CiAgICBmaTsKICAgIGV4cG9ydCBDRkxBR1MgQ1hYRkxBR1MKfQpzZXEgKCkgCnsg CiAgICBsb2NhbCBwPSQodHlwZSAtUCBzZXEpOwogICAgaWYgW1sgLW4gJHtwfSBdXTsgdGhlbgog ICAgICAgICIke3B9IiAiJEAiOwogICAgICAgIHJldHVybiAkPzsKICAgIGZpOwogICAgY2FzZSAk IyBpbiAKICAgICAgICAxKQogICAgICAgICAgICBtaW49MSBtYXg9JDEgc3RlcD0xCiAgICAgICAg OzsKICAgICAgICAyKQogICAgICAgICAgICBtaW49JDEgbWF4PSQyIHN0ZXA9MQogICAgICAgIDs7 CiAgICAgICAgMykKICAgICAgICAgICAgbWluPSQxIG1heD0kMyBzdGVwPSQyCiAgICAgICAgOzsK ICAgICAgICAqKQogICAgICAgICAgICBkaWUgInNlcSBjYWxsZWQgd2l0aCB3cm9uZyBudW1iZXIg b2YgYXJndW1lbnRzIgogICAgICAgIDs7CiAgICBlc2FjOwogICAgcD0kKHR5cGUgLVAgam90KTsK ICAgIGlmIFtbIC1uICR7cH0gXV07IHRoZW4KICAgICAgICBsb2NhbCByZXBzOwogICAgICAgIGlm IFtbICR7c3RlcH0gIT0gMCBdXTsgdGhlbgogICAgICAgICAgICByZXBzPSQoKCAobWF4IC0gbWlu KSAvIHN0ZXAgKyAxICkpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmVwcz0wOwogICAgICAg IGZpOwogICAgICAgIGpvdCAkcmVwcyAkbWluICRtYXggJHN0ZXA7CiAgICAgICAgcmV0dXJuICQ/ OwogICAgZmk7CiAgICB3aGlsZSA6OyBkbwogICAgICAgIFtbICRtYXggPCAkbWluICYmICRzdGVw ID4gMCBdXSAmJiBicmVhazsKICAgICAgICBbWyAkbWluIDwgJG1heCAmJiAkc3RlcCA8IDAgXV0g JiYgYnJlYWs7CiAgICAgICAgZWNobyAkbWluOwogICAgICAgIDogJCgoIG1pbiArPSBzdGVwICkp OwogICAgZG9uZTsKICAgIHJldHVybiAwCn0Kc2V0dXAtYWxsb3dlZC1mbGFncyAoKSAKeyAKICAg IGlmIFtbIC16ICR7QUxMT1dFRF9GTEFHU30gXV07IHRoZW4KICAgICAgICBleHBvcnQgQUxMT1dF RF9GTEFHUz0iLXBpcGUiOwogICAgICAgIGV4cG9ydCBBTExPV0VEX0ZMQUdTPSIke0FMTE9XRURf RkxBR1N9IC1PIC1PMCAtTzEgLU8yIC1tY3B1IC1tYXJjaCAtbXR1bmUiOwogICAgICAgIGV4cG9y dCBBTExPV0VEX0ZMQUdTPSIke0FMTE9XRURfRkxBR1N9IC1mc3RhY2stcHJvdGVjdG9yIC1mc3Rh Y2stcHJvdGVjdG9yLWFsbCI7CiAgICAgICAgZXhwb3J0IEFMTE9XRURfRkxBR1M9IiR7QUxMT1dF RF9GTEFHU30gLWZib3VuZHMtY2hlY2tpbmcgLWZuby1zdHJpY3Qtb3ZlcmZsb3ciOwogICAgICAg IGV4cG9ydCBBTExPV0VEX0ZMQUdTPSIke0FMTE9XRURfRkxBR1N9IC1mbm8tUElFIC1mbm8tcGll IC1mbm8tdW5pdC1hdC1hLXRpbWUiOwogICAgICAgIGV4cG9ydCBBTExPV0VEX0ZMQUdTPSIke0FM TE9XRURfRkxBR1N9IC1nIC1nWzAtOV0gLWdnZGIgLWdnZGJbMC05XSAtZ3N0YWJzIC1nc3RhYnMr IjsKICAgICAgICBleHBvcnQgQUxMT1dFRF9GTEFHUz0iJHtBTExPV0VEX0ZMQUdTfSAtZm5vLWlk ZW50IC1mcGVybWlzc2l2ZSI7CiAgICAgICAgZXhwb3J0IEFMTE9XRURfRkxBR1M9IiR7QUxMT1dF RF9GTEFHU30gLVcqIC13IjsKICAgIGZpOwogICAgQUxMT1dFRF9GTEFHUz0iJHtBTExPV0VEX0ZM QUdTfSAtZm5vLXN0YWNrLXByb3RlY3RvciAtZm5vLXN0YWNrLXByb3RlY3Rvci1hbGwgCQktZm5v LXN0cmljdC1hbGlhc2luZyAtZm5vLWJvdW5kcy1jaGVja2luZyAtZnN0cmljdC1vdmVyZmxvdyAt Zm5vLW9taXQtZnJhbWUtcG9pbnRlciI7CiAgICBBTExPV0VEX0ZMQUdTPSIke0FMTE9XRURfRkxB R1N9IC1tcmVncGFybSAtbW5vLWFwcC1yZWdzIC1tYXBwLXJlZ3MgCQktbW5vLW1teCAtbW5vLXNz ZSAtbW5vLXNzZTIgLW1uby1zc2UzIC1tbm8tc3NzZTMgLW1uby1zc2U0IC1tbm8tc3NlNC4xIAkJ LW1uby1zc2U0LjIgLW1uby1hdnggLW1uby1hZXMgLW1uby1wY2xtdWwgLW1uby1zc2U0YSAtbW5v LTNkbm93IAkJLW1uby1wb3BjbnQgLW1uby1hYm0gCQktbWlwczEgLW1pcHMyIC1taXBzMyAtbWlw czQgLW1pcHMzMiAtbWlwczY0IC1taXBzMTYgLW1wbHQgCQktbXNvZnQtZmxvYXQgLW1uby1zb2Z0 LWZsb2F0IC1taGFyZC1mbG9hdCAtbW5vLWhhcmQtZmxvYXQgLW1mcHUgCQktbWllZWUgLW1pZWVl LXdpdGgtaW5leGFjdCAtbXNjaGVkdWxlIC1tZmxvYXQtZ3BycyAtbXNwZSAtbW5vLXNwZSAJCS1t dGxzLWRpcmVjdC1zZWctcmVmcyAtbW5vLXRscy1kaXJlY3Qtc2VnLXJlZnMgCQktbWZsYXQgLW1u by1mbGF0IC1tbm8tZmFzdGVyLXN0cnVjdHMgLW1mYXN0ZXItc3RydWN0cyAJCS1tMzIgLW02NCAt bWFiaSAtbWxpdHRsZS1lbmRpYW4gLW1iaWctZW5kaWFuIC1FTCAtRUIgLWZQSUMgCQktbWxpdmUt ZzAgLW1jbW9kZWwgLW1zdGFjay1iaWFzIC1tbm8tc3RhY2stYmlhcyAJCS1tc2VjdXJlLXBsdCAt bSotdG9jIC1EKiAtVSoiOwogICAgQUxMT1dFRF9GTEFHUz0iJHtBTExPV0VEX0ZMQUdTfSAtbW5v LWZtYTQgLW1uby1tb3ZiZSAtbW5vLXhvcCAtbW5vLWx3cCI7CiAgICBBTExPV0VEX0ZMQUdTPSIk e0FMTE9XRURfRkxBR1N9IC1tbm8tZnNnc2Jhc2UgLW1uby1yZHJuZCAtbW5vLWYxNmMgCQktbW5v LWJtaSAtbW5vLXRibSI7CiAgICBleHBvcnQgVU5TVEFCTEVfRkxBR1M9Ii1PcyAtTzMgLWZyZW9y ZGVyLWJsb2NrcyI7CiAgICByZXR1cm4gMAp9CnNyY19jb21waWxlICgpIAp7IAogICAgZW1ha2Ug LWoxIHx8IGRpZSAiZW1ha2UgZmFpbGVkIgp9CnNyY19jb25maWd1cmUgKCkgCnsgCiAgICBkZWNs YXJlIC1hIG15Y29uZjsKICAgIGV4cG9ydCBMQ19BTEw9IkMiOwogICAgdXNlIHBwYyAmJiByZXBs YWNlLWZsYWdzIC1PPyAtTzE7CiAgICB1c2UgZWxpYmNfdWNsaWJjIHx8IHJlcGxhY2UtZmxhZ3Mg Ii1PcyIgIi1PMiI7CiAgICBmaWx0ZXItZmxhZ3MgIi1tYWxpZ24tZG91YmxlIjsKICAgIHVzZSBw cGMgJiYgZmlsdGVyLWZsYWdzICItbXBvd2VycGMtZ3BvcHQiOwogICAgZmlsdGVyLWZsYWdzICIt ZnNjaGVkMi11c2Utc3VwZXJibG9ja3MiOwogICAgdXNlIG1pcHMgJiYgbXljb25mIC1EZF91MzJh bGlnbjsKICAgIHVzZSBzcGFyYyAmJiBteWNvbmYgLVVkX2xvbmdkYmw7CiAgICBleHBvcnQgQlVJ TERfQlpJUDI9MDsKICAgIGV4cG9ydCBCWklQMl9JTkNMVURFPS91c3IvaW5jbHVkZTsKICAgIGV4 cG9ydCBCWklQMl9MSUI9L3Vzci8kKGdldF9saWJkaXIpOwogICAgY2F0ID4gIiR7U30vY3Bhbi9D b21wcmVzcy1SYXctWmxpYi9jb25maWcuaW4iICA8PC1FT0YKQlVJTERfWkxJQiA9IEZhbHNlCklO Q0xVREUgPSAvdXNyL2luY2x1ZGUKTElCID0gL3Vzci8kKGdldF9saWJkaXIpCgpPTERfWkxJQiA9 IEZhbHNlCkdaSVBfT1NfQ09ERSA9IEFVVE9fREVURUNUCkVPRgoKICAgIG15bmRibT0nVSc7CiAg ICBteWdkYm09J1UnOwogICAgbXlkYj0nVSc7CiAgICBpZiB1c2UgZ2RibTsgdGhlbgogICAgICAg IG15Z2RibT0nRCc7CiAgICAgICAgbXluZGJtPSdEJzsKICAgIGZpOwogICAgaWYgdXNlIGJlcmtk YjsgdGhlbgogICAgICAgIG15ZGI9J0QnOwogICAgICAgIGhhc192ZXJzaW9uICc9c3lzLWxpYnMv ZGItMSonICYmIG15bmRibT0nRCc7CiAgICBmaTsKICAgIG15Y29uZiAiLSR7bXluZGJtfWlfbmRi bSIgIi0ke215Z2RibX1pX2dkYm0iICItJHtteWRifWlfZGIiOwogICAgaWYgdXNlIGFscGhhICYm IFtbICIkKHRjLWdldENDKSIgPSAiY2NjIiBdXTsgdGhlbgogICAgICAgIGV3YXJuICJQZXJsIHdp bGwgbm90IGJlIGJ1aWx0IHdpdGggYmVya2RiIHN1cHBvcnQsIHVzZSBnY2MgaWYgeW91IG5lZWRl ZCBpdC4uLiI7CiAgICAgICAgbXljb25mIC1VaV9kYiAtVWlfbmRibTsKICAgIGZpOwogICAgdXNl IGl0aHJlYWRzICYmIG15Y29uZiAtRHVzZXRocmVhZHM7CiAgICBpZiB1c2UgZGVidWc7IHRoZW4K ICAgICAgICBhcHBlbmQtY2ZsYWdzICItZyI7CiAgICAgICAgbXljb25mIC1EREVCVUdHSU5HOwog ICAgZWxzZQogICAgICAgIGlmIFtbICR7Q0ZMQUdTfSA9PSAqLWcqIF1dOyB0aGVuCiAgICAgICAg ICAgIG15Y29uZiAtRERFQlVHR0lORz0tZzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG15Y29u ZiAtRERFQlVHR0lORz1ub25lOwogICAgICAgIGZpOwogICAgZmk7CiAgICBpZiBbWyAtbiAke1BF UkxfT0xEVkVSU0VOfSBdXTsgdGhlbgogICAgICAgIGxvY2FsIGluY2xpc3Q9JChmb3IgdiBpbiAk e1BFUkxfT0xEVkVSU0VOfTsgZG8gZWNobyAtbiAiJHt2fS8ke215YXJjaH0ke215dGhyZWFkaW5n fSAke3Z9ICI7IGRvbmUgKTsKICAgICAgICBteWNvbmYgLURpbmNfdmVyc2lvbl9saXN0PSIkaW5j bGlzdCI7CiAgICBmaTsKICAgIFtbICR7RUxJQkN9ID09ICJGcmVlQlNEIiBdXSAmJiBteWNvbmYg Ii1EbGliYz0vdXNyLyQoZ2V0X2xpYmRpcikvbGliYy5hIjsKICAgIGlmIFtbICQoZ2V0X2xpYmRp cikgIT0gImxpYiIgXV07IHRoZW4KICAgICAgICBteWNvbmYgIi1EbGlicHRoPS91c3IvbG9jYWwv JChnZXRfbGliZGlyKSAvJChnZXRfbGliZGlyKSAvdXNyLyQoZ2V0X2xpYmRpcikiOwogICAgZmk7 CiAgICBzaCBDb25maWd1cmUgLWRlcyAtRHVzZXNocnBsaWIgLURhcmNobmFtZT0iJHtteWFyY2h9 IiAtRGNjPSIkKHRjLWdldENDKSIgLURvcHRpbWl6ZT0iJHtDRkxBR1N9IiAtRGxkZmxhZ3M9IiR7 TERGTEFHU30iIC1EcHJlZml4PScvdXNyJyAtRHNpdGVwcmVmaXg9Jy91c3InIC1EdmVuZG9ycHJl Zml4PScvdXNyJyAtRHNjcmlwdGRpcj0nL3Vzci9iaW4nIC1EcHJpdmxpYj0iJHtQUklWX0xJQn0i IC1EYXJjaGxpYj0iJHtBUkNIX0xJQn0iIC1Ec2l0ZWxpYj0iJHtTSVRFX0xJQn0iIC1Ec2l0ZWFy Y2g9IiR7U0lURV9BUkNIfSIgLUR2ZW5kb3JsaWI9IiR7VkVORE9SX0xJQn0iIC1EdmVuZG9yYXJj aD0iJHtWRU5ET1JfQVJDSH0iIC1EbWFuMWRpcj0vdXNyL3NoYXJlL21hbi9tYW4xIC1EbWFuM2Rp cj0vdXNyL3NoYXJlL21hbi9tYW4zIC1Ec2l0ZW1hbjFkaXI9L3Vzci9zaGFyZS9tYW4vbWFuMSAt RHNpdGVtYW4zZGlyPS91c3Ivc2hhcmUvbWFuL21hbjMgLUR2ZW5kb3JtYW4xZGlyPS91c3Ivc2hh cmUvbWFuL21hbjEgLUR2ZW5kb3JtYW4zZGlyPS91c3Ivc2hhcmUvbWFuL21hbjMgLURtYW4xZXh0 PScxJyAtRG1hbjNleHQ9JzNwbScgLURsaWJwZXJsPSIke0xJQlBFUkx9IiAtRGxvY2luY3B0aD0n ICcgLUR1c2VsYXJnZWZpbGVzIC1EZF9zZW1jdGxfc2VtdW4gLURjZl9ieT0nR2VudG9vJyAtRG15 aG9zdG5hbWU9J2xvY2FsaG9zdCcgLURwZXJsYWRtaW49J3Jvb3RAbG9jYWxob3N0JyAtRGluc3Rh bGx1c3JiaW5wZXJsPSduJyAtVWRfY3NoIC1VdXNlbm0gIiR7bXljb25mW0BdfSIgfHwgZGllICJV bmFibGUgdG8gY29uZmlndXJlIgp9CnNyY19pbnN0YWxsICgpIAp7IAogICAgbG9jYWwgaTsKICAg IGxvY2FsIGNvcmVkaXI9IiR7QVJDSF9MSUJ9L0NPUkUiOwogICAgbG9jYWwgaW5zdGFsbHRhcmdl dD1pbnN0YWxsOwogICAgaWYgdXNlIGJ1aWxkOyB0aGVuCiAgICAgICAgaW5zdGFsbHRhcmdldD1p bnN0YWxsLnBlcmw7CiAgICBmaTsKICAgIG1ha2UgREVTVERJUj0iJHtEfSIgJHtpbnN0YWxsdGFy Z2V0fSB8fCBkaWUgIlVuYWJsZSB0byBtYWtlICR7aW5zdGFsbHRhcmdldH0iOwogICAgcm0gLWYg IiR7RH0iL3Vzci9iaW4vcGVybDsKICAgIGxuIC1zIHBlcmwke01ZX1BWfSAiJHtEfSIvdXNyL2Jp bi9wZXJsOwogICAgZG9saWIuc28gIiR7RH0iLyR7Y29yZWRpcn0vJHtMSUJQRVJMfSB8fCBkaWU7 CiAgICBkb3N5bSAke0xJQlBFUkx9IC91c3IvJChnZXRfbGliZGlyKS9saWJwZXJsJChnZXRfbGli bmFtZSAke1NIT1JUX1BWfSkgfHwgZGllOwogICAgZG9zeW0gJHtMSUJQRVJMfSAvdXNyLyQoZ2V0 X2xpYmRpcikvbGlicGVybCQoZ2V0X2xpYm5hbWUpIHx8IGRpZTsKICAgIHJtIC1mICIke0R9Ii8k e2NvcmVkaXJ9LyR7TElCUEVSTH07CiAgICBkb3N5bSAuLi8uLi8uLi8uLi8uLi8kKGdldF9saWJk aXIpLyR7TElCUEVSTH0gJHtjb3JlZGlyfS8ke0xJQlBFUkx9OwogICAgZG9zeW0gLi4vLi4vLi4v Li4vLi4vJChnZXRfbGliZGlyKS8ke0xJQlBFUkx9ICR7Y29yZWRpcn0vbGlicGVybCQoZ2V0X2xp Ym5hbWUgJHtTSE9SVF9QVn0pOwogICAgZG9zeW0gLi4vLi4vLi4vLi4vLi4vJChnZXRfbGliZGly KS8ke0xJQlBFUkx9ICR7Y29yZWRpcn0vbGlicGVybCQoZ2V0X2xpYm5hbWUpOwogICAgcm0gLXJm ICIke0R9Ii91c3Ivc2hhcmUvbWFuL21hbjMgfHwgZGllICJVbmFibGUgdG8gcmVtb3ZlIG1vZHVs ZSBtYW4gcGFnZXMiOwogICAgZm9yIGkgaW4gJChmaW5kICIke0R9IiAtaW5hbWUgIkNvbmZpZy5w bSIgKTsKICAgIGRvCiAgICAgICAgZWluZm8gIlJlbW92aW5nICR7RH0gZnJvbSAke2l9Li4uIjsK ICAgICAgICBzZWQgLWkgLWUgInM6JHtEfTo6IiAiJHtpfSIgfHwgZGllICJTZWQgZmFpbGVkIjsK ICAgIGRvbmU7CiAgICBmaW5kICIke0R9IiAtdHlwZSBmIC1uYW1lIC5wYWNrbGlzdCAtZGVsZXRl IHx8IGRpZTsKICAgIGRvZG9jIENoYW5nZXMqIFJFQURNRSBBVVRIT1JTIHx8IGRpZTsKICAgIGlm IHVzZSBkb2M7IHRoZW4KICAgICAgICBkb2RpciAvdXNyL3NoYXJlL2RvYy8ke1BGfS9odG1sOwog ICAgICAgIExEX0xJQlJBUllfUEFUSD0uIC4vcGVybCBpbnN0YWxsaHRtbCAtLXBvZHJvb3Q9Jy4n IC0tcG9kcGF0aD0nbGliOmV4dDpwb2Q6dm1zJyAtLXJlY3Vyc2UgLS1odG1sZGlyPSIke0R9L3Vz ci9zaGFyZS9kb2MvJHtQRn0vaHRtbCIgLS1saWJwb2RzPSdwZXJsZnVuYzpwZXJsZ3V0czpwZXJs dmFyOnBlcmxydW46cGVybG9wJzsKICAgIGZpOwogICAgaWYgdXNlIGJ1aWxkOyB0aGVuCiAgICAg ICAgc3JjX3JlbW92ZV9leHRyYV9maWxlczsKICAgIGZpOwogICAgZHVhbF9zY3JpcHRzCn0Kc3Jj X3ByZXBhcmUgKCkgCnsgCiAgICBFUEFUQ0hfU09VUkNFPSIke1dPUktESVJ9L3BlcmwtcGF0Y2gi IEVQQVRDSF9TVUZGSVg9ImRpZmYiIEVQQVRDSF9GT1JDRT0ieWVzIiBFUEFUQ0hfT1BUUz0iLXAx IiBlcGF0Y2g7CiAgICBzcmNfcHJlcGFyZV91cGRhdGVfcGF0Y2hsZXZlbF9oOwogICAgbG4gLXMg JHtMSUJQRVJMfSBsaWJwZXJsJChnZXRfbGlibmFtZSAke1NIT1JUX1BWfSk7CiAgICBsbiAtcyAk e0xJQlBFUkx9IGxpYnBlcmwkKGdldF9saWJuYW1lICkKfQpzcmNfcHJlcGFyZV91cGRhdGVfcGF0 Y2hsZXZlbF9oICgpIAp7IAogICAgW1sgLWYgJHtXT1JLRElSfS9wZXJsLXBhdGNoL3NlcmllcyBd XSB8fCByZXR1cm4gMDsKICAgIHdoaWxlIHJlYWQgcGF0Y2ggbGV2ZWw7IGRvCiAgICAgICAgc2Vk IC1pIC1lICJzL15cdCxOVUxMJC8JLFwiJHtwYXRjaC8vX18vX31cIlxuJi8iICIke1N9Ii9wYXRj aGxldmVsLmggfHwgZGllOwogICAgZG9uZSA8ICIke1dPUktESVJ9Ii9wZXJsLXBhdGNoL3Nlcmll cwp9CnNyY19yZW1vdmVfZHVhbF9zY3JpcHRzICgpIAp7IAogICAgbG9jYWwgaSBwa2cgdmVyIGZm OwogICAgcGtnPSIkMSI7CiAgICB2ZXI9IiQyIjsKICAgIHNoaWZ0IDI7CiAgICBpZiBoYXMgIiR7 RUJVSUxEX1BIQVNFOi1ub25lfSIgInBvc3RpbnN0IiAicG9zdHJtIjsgdGhlbgogICAgICAgIGZv ciBpIGluICIkQCI7CiAgICAgICAgZG8KICAgICAgICAgICAgYWx0ZXJuYXRpdmVzX2F1dG9fbWFr ZXN5bSAiL3Vzci9iaW4vJHtpfSIgIi91c3IvYmluLyR7aX0tWzAtOV0qIjsKICAgICAgICAgICAg aWYgW1sgJHtpfSAhPSBjcGFucC1ydW4tcGVybCBdXTsgdGhlbgogICAgICAgICAgICAgICAgZmY9 YGVjaG8gJHtST09UfS91c3Ivc2hhcmUvbWFuL21hbjEvJHtpfS0ke3Zlcn0tJHtQfS4xKmA7CiAg ICAgICAgICAgICAgICBmZj0ke2ZmIyMqLjF9OwogICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVz X2F1dG9fbWFrZXN5bSAiL3Vzci9zaGFyZS9tYW4vbWFuMS8ke2l9LjEke2ZmfSIgIi91c3Ivc2hh cmUvbWFuL21hbjEvJHtpfS1bMC05XSoiOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwog ICAgZWxzZQogICAgICAgIGlmIGhhcyAiJHtFQlVJTERfUEhBU0U6LW5vbmV9IiAic2V0dXAiOyB0 aGVuCiAgICAgICAgICAgIGZvciBpIGluICIkQCI7CiAgICAgICAgICAgIGRvCiAgICAgICAgICAg ICAgICBpZiBbWyAtZiAke1JPT1R9L3Vzci9iaW4vJHtpfSAmJiAhIC1oICR7Uk9PVH0vdXNyL2Jp bi8ke2l9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgaGFzX3ZlcnNpb24gJHtwa2d9ICYm IGV3YXJuICJZb3UgbXVzdCByZWluc3RhbGwgJHBrZyAhIjsKICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBkb25lOwogICAgICAgIGVsc2UK ICAgICAgICAgICAgZm9yIGkgaW4gIiRAIjsKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAg IGlmICEgW1sgLWYgIiR7RH0iL3Vzci9iaW4vJHtpfSBdXTsgdGhlbgogICAgICAgICAgICAgICAg ICAgIHVzZSBidWlsZCB8fCBld2FybiAiL3Vzci9iaW4vJHtpfSBkb2VzIG5vdCBleGlzdCEiOwog ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAg ICAgICAgICBtdiAiJHtEfSIvdXNyL2Jpbi8ke2l9eywtJHt2ZXJ9LSR7UH19IHx8IGRpZTsKICAg ICAgICAgICAgICAgIGlmIFtbIC1mICR7RH0vdXNyL3NoYXJlL21hbi9tYW4xLyR7aX0uMSBdXTsg dGhlbgogICAgICAgICAgICAgICAgICAgIG12ICIke0R9Ii91c3Ivc2hhcmUvbWFuL21hbjEvJHtp fXsuMSwtJHt2ZXJ9LSR7UH0uMX0gfHwgZGllOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgICAgIGVjaG8gIi91c3Ivc2hhcmUvbWFuL21hbjEvJHtpfS4xIGRvZXMgbm90IGV4 aXN0ISI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBmaTsK ICAgIGZpCn0Kc3JjX3JlbW92ZV9leHRyYV9maWxlcyAoKSAKeyAKICAgIGxvY2FsIHByZWZpeD0i Li91c3IiOwogICAgbG9jYWwgYmluZGlyPSIke3ByZWZpeH0vYmluIjsKICAgIGxvY2FsIGxpYmRp cj0iJHtwcmVmaXh9LyQoZ2V0X2xpYmRpcikiOwogICAgbG9jYWwgTUlOSU1BTF9QRVJMX0lOU1RB TEw9IgoJJHtiaW5kaXJ9L2gycGgKCSR7YmluZGlyfS9wZXJsCgkke2JpbmRpcn0vcGVybCR7TVlf UFZ9Cgkke2JpbmRpcn0vcG9kMm1hbgoJJHtsaWJkaXJ9LyR7TElCUEVSTH0KCSR7bGliZGlyfS9s aWJwZXJsJChnZXRfbGlibmFtZSkKCSR7bGliZGlyfS9saWJwZXJsJChnZXRfbGlibmFtZSAke1NI T1JUX1BWfSkKCS4ke1BSSVZfTElCfS9BdXRvTG9hZGVyLnBtCgkuJHtQUklWX0xJQn0vQi9EZXBh cnNlLnBtCgkuJHtQUklWX0xJQn0vQ2FycC5wbQoJLiR7UFJJVl9MSUJ9L0NhcnAvSGVhdnkucG0K CS4ke1BSSVZfTElCfS9DbGFzcy9TdHJ1Y3QucG0KCS4ke1BSSVZfTElCfS9EaXJIYW5kbGUucG0K CS4ke1BSSVZfTElCfS9FeHBvcnRlci5wbQoJLiR7UFJJVl9MSUJ9L0V4cG9ydGVyL0hlYXZ5LnBt CgkuJHtQUklWX0xJQn0vRXh0VXRpbHMvQ29tbWFuZC5wbQoJLiR7UFJJVl9MSUJ9L0V4dFV0aWxz L0NvbW1hbmQvTU0ucG0KCS4ke1BSSVZfTElCfS9FeHRVdGlscy9Db25zdGFudC5wbQoJLiR7UFJJ Vl9MSUJ9L0V4dFV0aWxzL0NvbnN0YW50L0Jhc2UucG0KCS4ke1BSSVZfTElCfS9FeHRVdGlscy9D b25zdGFudC9VdGlscy5wbQoJLiR7UFJJVl9MSUJ9L0V4dFV0aWxzL0NvbnN0YW50L1hTLnBtCgku JHtQUklWX0xJQn0vRXh0VXRpbHMvRW1iZWQucG0KCS4ke1BSSVZfTElCfS9FeHRVdGlscy9JbnN0 YWxsLnBtCgkuJHtQUklWX0xJQn0vRXh0VXRpbHMvSW5zdGFsbGVkLnBtCgkuJHtQUklWX0xJQn0v RXh0VXRpbHMvTGlibGlzdC5wbQoJLiR7UFJJVl9MSUJ9L0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBt CgkuJHtQUklWX0xJQn0vRXh0VXRpbHMvTU0ucG0KCS4ke1BSSVZfTElCfS9FeHRVdGlscy9NTV9B bnkucG0KCS4ke1BSSVZfTElCfS9FeHRVdGlscy9NTV9NYWNPUy5wbQoJLiR7UFJJVl9MSUJ9L0V4 dFV0aWxzL01NX1VuaXgucG0KCS4ke1BSSVZfTElCfS9FeHRVdGlscy9NWS5wbQoJLiR7UFJJVl9M SUJ9L0V4dFV0aWxzL01ha2VNYWtlci5wbQoJLiR7UFJJVl9MSUJ9L0V4dFV0aWxzL01hbmlmZXN0 LnBtCgkuJHtQUklWX0xJQn0vRXh0VXRpbHMvTWluaXBlcmwucG0KCS4ke1BSSVZfTElCfS9FeHRV dGlscy9Na2Jvb3RzdHJhcC5wbQoJLiR7UFJJVl9MSUJ9L0V4dFV0aWxzL01rc3ltbGlzdHMucG0K CS4ke1BSSVZfTElCfS9FeHRVdGlscy9QYWNrbGlzdC5wbQoJLiR7UFJJVl9MSUJ9L0V4dFV0aWxz L3Rlc3RsaWIucG0KCS4ke1BSSVZfTElCfS9GaWxlL0Jhc2VuYW1lLnBtCgkuJHtQUklWX0xJQn0v RmlsZS9Db21wYXJlLnBtCgkuJHtQUklWX0xJQn0vRmlsZS9Db3B5LnBtCgkuJHtQUklWX0xJQn0v RmlsZS9GaW5kLnBtCgkuJHtQUklWX0xJQn0vRmlsZS9QYXRoLnBtCgkuJHtQUklWX0xJQn0vRmls ZS9zdGF0LnBtCgkuJHtQUklWX0xJQn0vRmlsZUhhbmRsZS5wbQoJLiR7UFJJVl9MSUJ9L0dldG9w dC9Mb25nLnBtCgkuJHtQUklWX0xJQn0vR2V0b3B0L1N0ZC5wbQoJLiR7UFJJVl9MSUJ9L0lQQy9P cGVuMi5wbQoJLiR7UFJJVl9MSUJ9L0lQQy9PcGVuMy5wbQoJLiR7UFJJVl9MSUJ9L1BlcmxJTy5w bQoJLiR7UFJJVl9MSUJ9L1BvZC9JbnB1dE9iamVjdHMucG0KCS4ke1BSSVZfTElCfS9Qb2QvTWFu LnBtCgkuJHtQUklWX0xJQn0vUG9kL1BhcnNlTGluay5wbQoJLiR7UFJJVl9MSUJ9L1BvZC9QYXJz ZXIucG0KCS4ke1BSSVZfTElCfS9Qb2QvU2VsZWN0LnBtCgkuJHtQUklWX0xJQn0vUG9kL1RleHQu cG0KCS4ke1BSSVZfTElCfS9Qb2QvVXNhZ2UucG0KCS4ke1BSSVZfTElCfS9TZWxlY3RTYXZlci5w bQoJLiR7UFJJVl9MSUJ9L1N5bWJvbC5wbQoJLiR7UFJJVl9MSUJ9L1RleHQvUGFyc2VXb3Jkcy5w bQoJLiR7UFJJVl9MSUJ9L1RleHQvVGFicy5wbQoJLiR7UFJJVl9MSUJ9L1RleHQvV3JhcC5wbQoJ LiR7UFJJVl9MSUJ9L1RpZS9IYXNoLnBtCgkuJHtQUklWX0xJQn0vVGltZS9Mb2NhbC5wbQoJLiR7 UFJJVl9MSUJ9L1hTTG9hZGVyLnBtCgkuJHtQUklWX0xJQn0vYXV0b3VzZS5wbQoJLiR7UFJJVl9M SUJ9L2Jhc2UucG0KCS4ke1BSSVZfTElCfS9iaWdpbnQucG0KCS4ke1BSSVZfTElCfS9iaWdudW0u cG0KCS4ke1BSSVZfTElCfS9iaWdyYXQucG0KCS4ke1BSSVZfTElCfS9ibGliLnBtCgkuJHtQUklW X0xJQn0vYnl0ZXMucG0KCS4ke1BSSVZfTElCfS9ieXRlc19oZWF2eS5wbAoJLiR7UFJJVl9MSUJ9 L2NoYXJuYW1lcy5wbQoJLiR7UFJJVl9MSUJ9L2NvbnN0YW50LnBtCgkuJHtQUklWX0xJQn0vZGlh Z25vc3RpY3MucG0KCS4ke1BSSVZfTElCfS9maWVsZHMucG0KCS4ke1BSSVZfTElCfS9maWxldGVz dC5wbQoJLiR7UFJJVl9MSUJ9L2lmLnBtCgkuJHtQUklWX0xJQn0vaW50ZWdlci5wbQoJLiR7UFJJ Vl9MSUJ9L2xlc3MucG0KCS4ke1BSSVZfTElCfS9sb2NhbGUucG0KCS4ke1BSSVZfTElCfS9vcGVu LnBtCgkuJHtQUklWX0xJQn0vb3ZlcmxvYWQucG0KCS4ke1BSSVZfTElCfS9zaWd0cmFwLnBtCgku JHtQUklWX0xJQn0vc29ydC5wbQoJLiR7UFJJVl9MSUJ9L3N0YXQucGwKCS4ke1BSSVZfTElCfS9z dHJpY3QucG0KCS4ke1BSSVZfTElCfS9zdWJzLnBtCgkuJHtQUklWX0xJQn0vdW5pY29yZS9Uby9G b2xkLnBsCgkuJHtQUklWX0xJQn0vdW5pY29yZS9Uby9Mb3dlci5wbAoJLiR7UFJJVl9MSUJ9L3Vu aWNvcmUvVG8vVXBwZXIucGwKCS4ke1BSSVZfTElCfS91dGY4LnBtCgkuJHtQUklWX0xJQn0vdXRm OF9oZWF2eS5wbAoJLiR7UFJJVl9MSUJ9L3ZhcnMucG0KCS4ke1BSSVZfTElCfS92bXNpc2gucG0K CS4ke1BSSVZfTElCfS93YXJuaW5ncwoJLiR7UFJJVl9MSUJ9L3dhcm5pbmdzLnBtCgkuJHtQUklW X0xJQn0vd2FybmluZ3MvcmVnaXN0ZXIucG0KCS4ke0FSQ0hfTElCfS9CLnBtCgkuJHtBUkNIX0xJ Qn0vQ09SRS9saWJwZXJsJChnZXRfbGlibmFtZSkKCS4ke0FSQ0hfTElCfS9Db25maWcucG0KCS4k e0FSQ0hfTElCfS9Db25maWdfaGVhdnkucGwKCS4ke0FSQ0hfTElCfS9Dd2QucG0KCS4ke0FSQ0hf TElCfS9EYXRhL0R1bXBlci5wbQoJLiR7QVJDSF9MSUJ9L0R5bmFMb2FkZXIucG0KCS4ke0FSQ0hf TElCfS9FcnJuby5wbQoJLiR7QVJDSF9MSUJ9L0ZjbnRsLnBtCgkuJHtBUkNIX0xJQn0vRmlsZS9H bG9iLnBtCgkuJHtBUkNIX0xJQn0vRmlsZS9TcGVjLnBtCgkuJHtBUkNIX0xJQn0vRmlsZS9TcGVj L1VuaXgucG0KCS4ke0FSQ0hfTElCfS9JTy5wbQoJLiR7QVJDSF9MSUJ9L0lPL0ZpbGUucG0KCS4k e0FSQ0hfTElCfS9JTy9IYW5kbGUucG0KCS4ke0FSQ0hfTElCfS9JTy9QaXBlLnBtCgkuJHtBUkNI X0xJQn0vSU8vU2Vla2FibGUucG0KCS4ke0FSQ0hfTElCfS9JTy9TZWxlY3QucG0KCS4ke0FSQ0hf TElCfS9JTy9Tb2NrZXQucG0KCS4ke0FSQ0hfTElCfS9JTy9Tb2NrZXQvSU5FVC5wbQoJLiR7QVJD SF9MSUJ9L0lPL1NvY2tldC9VTklYLnBtCgkuJHtBUkNIX0xJQn0vTGlzdC9VdGlsLnBtCgkuJHtB UkNIX0xJQn0vTkRCTV9GaWxlLnBtCgkuJHtBUkNIX0xJQn0vUE9TSVgucG0KCS4ke0FSQ0hfTElC fS9TY2FsYXIvVXRpbC5wbQoJLiR7QVJDSF9MSUJ9L1NvY2tldC5wbQoJLiR7QVJDSF9MSUJ9L1N0 b3JhYmxlLnBtCgkuJHtBUkNIX0xJQn0vYXR0cmlidXRlcy5wbQoJLiR7QVJDSF9MSUJ9L2F1dG8v Q3dkL0N3ZCQoZ2V0X2xpYm5hbWUpCgkuJHtBUkNIX0xJQn0vYXV0by9EYXRhL0R1bXBlci9EdW1w ZXIkKGdldF9saWJuYW1lKQoJLiR7QVJDSF9MSUJ9L2F1dG8vRHluYUxvYWRlci9kbF9maW5kZmls ZS5hbAoJLiR7QVJDSF9MSUJ9L2F1dG8vRmNudGwvRmNudGwkKGdldF9saWJuYW1lKQoJLiR7QVJD SF9MSUJ9L2F1dG8vRmlsZS9HbG9iL0dsb2IkKGdldF9saWJuYW1lKQoJLiR7QVJDSF9MSUJ9L2F1 dG8vSU8vSU8kKGdldF9saWJuYW1lKQoJLiR7QVJDSF9MSUJ9L2F1dG8vUE9TSVgvUE9TSVgkKGdl dF9saWJuYW1lKQoJLiR7QVJDSF9MSUJ9L2F1dG8vUE9TSVgvYXV0b3NwbGl0Lml4CgkuJHtBUkNI X0xJQn0vYXV0by9QT1NJWC9mc3RhdC5hbAoJLiR7QVJDSF9MSUJ9L2F1dG8vUE9TSVgvbG9hZF9p bXBvcnRzLmFsCgkuJHtBUkNIX0xJQn0vYXV0by9QT1NJWC9zdGF0LmFsCgkuJHtBUkNIX0xJQn0v YXV0by9QT1NJWC90bXBmaWxlLmFsCgkuJHtBUkNIX0xJQn0vYXV0by9Tb2NrZXQvU29ja2V0JChn ZXRfbGlibmFtZSkKCS4ke0FSQ0hfTElCfS9hdXRvL1N0b3JhYmxlL1N0b3JhYmxlJChnZXRfbGli bmFtZSkKCS4ke0FSQ0hfTElCfS9hdXRvL1N0b3JhYmxlL19yZXRyaWV2ZS5hbAoJLiR7QVJDSF9M SUJ9L2F1dG8vU3RvcmFibGUvX3N0b3JlLmFsCgkuJHtBUkNIX0xJQn0vYXV0by9TdG9yYWJsZS9h dXRvc3BsaXQuaXgKCS4ke0FSQ0hfTElCfS9hdXRvL1N0b3JhYmxlL3JldHJpZXZlLmFsCgkuJHtB UkNIX0xJQn0vYXV0by9TdG9yYWJsZS9zdG9yZS5hbAoJLiR7QVJDSF9MSUJ9L2F1dG8vcmUvcmUk KGdldF9saWJuYW1lKQoJLiR7QVJDSF9MSUJ9L2VuY29kaW5nLnBtCgkuJHtBUkNIX0xJQn0vbGli LnBtCgkuJHtBUkNIX0xJQn0vb3BzLnBtCgkuJHtBUkNIX0xJQn0vcmUucG0KCS4ke0FSQ0hfTElC fS90aHJlYWRzLnBtCiI7CiAgICBwdXNoZCAiJHtEfSIgPiAvZGV2L251bGw7CiAgICBlaW5mbyAi UmVtb3ZpbmcgZmlsZXMgdGhhdCBhcmUgbm90IGluIHRoZSBtaW5pbWFsIGluc3RhbGwiOwogICAg ZWNobyAiJHtNSU5JTUFMX1BFUkxfSU5TVEFMTH0iOwogICAgZm9yIGYgaW4gJChmaW5kIC4gLXR5 cGUgZiApOwogICAgZG8KICAgICAgICBoYXMgIiR7Zn0iICR7TUlOSU1BTF9QRVJMX0lOU1RBTEx9 IHx8IHJtIC1mICIke2Z9IjsKICAgIGRvbmU7CiAgICBmaW5kIC4gLWRlcHRoIC10eXBlIGQgLXBy aW50MCB8IHhhcmdzIC0wIC1yIHJtZGlyICY+L2Rldi9udWxsOwogICAgcG9wZCA+IC9kZXYvbnVs bAp9CnNyY190ZXN0ICgpIAp7IAogICAgaWYgW1sgJHtFVUlEfSA9PSAwIF1dOyB0aGVuCiAgICAg ICAgZXdhcm4gIlRlc3QgZmFpbHMgd2l0aCBhIHNhbmRib3ggZXJyb3IgKCMzMjg3OTMpIGlmIHJ1 biBhcyByb290LiBTa2lwcGluZyB0ZXN0cy4uLiI7CiAgICAgICAgcmV0dXJuIDA7CiAgICBmaTsK ICAgIHVzZSBlbGliY191Y2xpYmMgJiYgZXhwb3J0IE1BS0VPUFRTKz0iIC1qMSI7CiAgICBURVNU X0pPQlM9JChlY2hvIC1qMSAke01BS0VPUFRTfSB8IHNlZCAtciAncy8uKigtaltbOnNwYWNlOl1d KnwtLWpvYnM9KShbWzpkaWdpdDpdXSspLiovXDIvJyApIG1ha2UgdGVzdF9oYXJuZXNzIHx8IGRp ZSAidGVzdCBmYWlsZWQiCn0Kc3JjX3VucGFjayAoKSAKeyAKICAgIF9lYXBpMF9zcmNfdW5wYWNr ICIkQCIKfQpzdHJpcC1mbGFncyAoKSAKeyAKICAgIGxvY2FsIHggeSBmbGFnIE5FV19DRkxBR1Mg TkVXX0NYWEZMQUdTIE5FV19GRkxBR1MgTkVXX0ZDRkxBR1M7CiAgICBzZXR1cC1hbGxvd2VkLWZs YWdzOwogICAgbG9jYWwgTkVXX0NGTEFHUz0iIjsKICAgIGxvY2FsIE5FV19DWFhGTEFHUz0iIjsK ICAgIGxvY2FsIE5FV19GRkxBR1M9IiI7CiAgICBsb2NhbCBORVdfRkNGTEFHUz0iIjsKICAgIGlm IGhhcyAifiQodGMtYXJjaCkiICR7QUNDRVBUX0tFWVdPUkRTfTsgdGhlbgogICAgICAgIEFMTE9X RURfRkxBR1M9IiR7QUxMT1dFRF9GTEFHU30gJHtVTlNUQUJMRV9GTEFHU30iOwogICAgZmk7CiAg ICBzZXQgLWY7CiAgICBmb3IgeCBpbiAke0NGTEFHU307CiAgICBkbwogICAgICAgIGZvciB5IGlu ICR7QUxMT1dFRF9GTEFHU307CiAgICAgICAgZG8KICAgICAgICAgICAgZmxhZz0ke3glJT0qfTsK ICAgICAgICAgICAgaWYgWyAiJHtmbGFnJSUke3l9fSIgPSAiIiBdOyB0aGVuCiAgICAgICAgICAg ICAgICBORVdfQ0ZMQUdTPSIke05FV19DRkxBR1N9ICR7eH0iOwogICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBkb25lOwogICAgZm9yIHggaW4g JHtDWFhGTEFHU307CiAgICBkbwogICAgICAgIGZvciB5IGluICR7QUxMT1dFRF9GTEFHU307CiAg ICAgICAgZG8KICAgICAgICAgICAgZmxhZz0ke3glJT0qfTsKICAgICAgICAgICAgaWYgWyAiJHtm bGFnJSUke3l9fSIgPSAiIiBdOyB0aGVuCiAgICAgICAgICAgICAgICBORVdfQ1hYRkxBR1M9IiR7 TkVXX0NYWEZMQUdTfSAke3h9IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBm aTsKICAgICAgICBkb25lOwogICAgZG9uZTsKICAgIGZvciB4IGluICR7RkZMQUdTfTsKICAgIGRv CiAgICAgICAgZm9yIHkgaW4gJHtBTExPV0VEX0ZMQUdTfTsKICAgICAgICBkbwogICAgICAgICAg ICBmbGFnPSR7eCUlPSp9OwogICAgICAgICAgICBpZiBbICIke2ZsYWclJSR7eX19IiA9ICIiIF07 IHRoZW4KICAgICAgICAgICAgICAgIE5FV19GRkxBR1M9IiR7TkVXX0ZGTEFHU30gJHt4fSI7CiAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZmk7CiAgICAgICAgZG9uZTsKICAgIGRv bmU7CiAgICBmb3IgeCBpbiAke0ZDRkxBR1N9OwogICAgZG8KICAgICAgICBmb3IgeSBpbiAke0FM TE9XRURfRkxBR1N9OwogICAgICAgIGRvCiAgICAgICAgICAgIGZsYWc9JHt4JSU9Kn07CiAgICAg ICAgICAgIGlmIFsgIiR7ZmxhZyUlJHt5fX0iID0gIiIgXTsgdGhlbgogICAgICAgICAgICAgICAg TkVXX0ZDRkxBR1M9IiR7TkVXX0ZDRkxBR1N9ICR7eH0iOwogICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBkb25lOwogICAgaWYgWyAiJHtDRkxB R1MvLU99IiAhPSAiJHtDRkxBR1N9IiAtYSAiJHtORVdfQ0ZMQUdTLy1PfSIgPSAiJHtORVdfQ0ZM QUdTfSIgXTsgdGhlbgogICAgICAgIE5FV19DRkxBR1M9IiR7TkVXX0NGTEFHU30gLU8yIjsKICAg IGZpOwogICAgaWYgWyAiJHtDWFhGTEFHUy8tT30iICE9ICIke0NYWEZMQUdTfSIgLWEgIiR7TkVX X0NYWEZMQUdTLy1PfSIgPSAiJHtORVdfQ1hYRkxBR1N9IiBdOyB0aGVuCiAgICAgICAgTkVXX0NY WEZMQUdTPSIke05FV19DWFhGTEFHU30gLU8yIjsKICAgIGZpOwogICAgaWYgWyAiJHtGRkxBR1Mv LU99IiAhPSAiJHtGRkxBR1N9IiAtYSAiJHtORVdfRkZMQUdTLy1PfSIgPSAiJHtORVdfRkZMQUdT fSIgXTsgdGhlbgogICAgICAgIE5FV19GRkxBR1M9IiR7TkVXX0ZGTEFHU30gLU8yIjsKICAgIGZp OwogICAgaWYgWyAiJHtGQ0ZMQUdTLy1PfSIgIT0gIiR7RkNGTEFHU30iIC1hICIke05FV19GQ0ZM QUdTLy1PfSIgPSAiJHtORVdfRkNGTEFHU30iIF07IHRoZW4KICAgICAgICBORVdfRkNGTEFHUz0i JHtORVdfRkNGTEFHU30gLU8yIjsKICAgIGZpOwogICAgc2V0ICtmOwogICAgZXhwb3J0IENGTEFH Uz0iJHtORVdfQ0ZMQUdTfSI7CiAgICBleHBvcnQgQ1hYRkxBR1M9IiR7TkVXX0NYWEZMQUdTfSI7 CiAgICBleHBvcnQgRkZMQUdTPSIke05FV19GRkxBR1N9IjsKICAgIGV4cG9ydCBGQ0ZMQUdTPSIk e05FV19GQ0ZMQUdTfSI7CiAgICByZXR1cm4gMAp9CnN0cmlwLWxpbmd1YXMgKCkgCnsgCiAgICBs b2NhbCBscyBuZXdscyBub2xzOwogICAgaWYgW1sgJDEgPT0gIi1pIiBdXSB8fCBbWyAkMSA9PSAi LXUiIF1dOyB0aGVuCiAgICAgICAgbG9jYWwgb3A9JDE7CiAgICAgICAgc2hpZnQ7CiAgICAgICAg bHM9JChmaW5kICIkMSIgLW5hbWUgJyoucG8nIC1leGVjIGJhc2VuYW1lIHt9IC5wbyAnOycpOwog ICAgICAgIHNoaWZ0OwogICAgICAgIGxvY2FsIGQgZjsKICAgICAgICBmb3IgZCBpbiAiJEAiOwog ICAgICAgIGRvCiAgICAgICAgICAgIGlmIFtbICR7b3B9ID09ICItdSIgXV07IHRoZW4KICAgICAg ICAgICAgICAgIG5ld2xzPSR7bHN9OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBu ZXdscz0iIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZvciBmIGluICQoZmluZCAiJGQi IC1uYW1lICcqLnBvJyAtZXhlYyBiYXNlbmFtZSB7fSAucG8gJzsnKTsKICAgICAgICAgICAgZG8K ICAgICAgICAgICAgICAgIGlmIFtbICR7b3B9ID09ICItaSIgXV07IHRoZW4KICAgICAgICAgICAg ICAgICAgICBoYXMgJHtmfSAke2xzfSAmJiBuZXdscz0iJHtuZXdsc30gJHtmfSI7CiAgICAgICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgaGFzICR7Zn0gJHtsc30gfHwgbmV3bHM9 IiR7bmV3bHN9ICR7Zn0iOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGRvbmU7CiAg ICAgICAgICAgIGxzPSR7bmV3bHN9OwogICAgICAgIGRvbmU7CiAgICBlbHNlCiAgICAgICAgbHM9 IiRAIjsKICAgIGZpOwogICAgbm9scz0iIjsKICAgIG5ld2xzPSIiOwogICAgZm9yIGYgaW4gJHtM SU5HVUFTfTsKICAgIGRvCiAgICAgICAgaWYgaGFzICR7Zn0gJHtsc307IHRoZW4KICAgICAgICAg ICAgbmV3bHM9IiR7bmV3bHN9ICR7Zn0iOwogICAgICAgIGVsc2UKICAgICAgICAgICAgbm9scz0i JHtub2xzfSAke2Z9IjsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBbWyAtbiAke25vbHN9IF1d ICYmIGV3YXJuICJTb3JyeSwgYnV0ICR7UE59IGRvZXMgbm90IHN1cHBvcnQgdGhlIExJTkdVQVM6 IiAke25vbHN9OwogICAgZXhwb3J0IExJTkdVQVM9JHtuZXdsczoxfQp9CnN0cmlwLXVuc3VwcG9y dGVkLWZsYWdzICgpIAp7IAogICAgZXhwb3J0IENGTEFHUz0kKHRlc3QtZmxhZ3MtQ0MgJHtDRkxB R1N9KTsKICAgIGV4cG9ydCBDWFhGTEFHUz0kKHRlc3QtZmxhZ3MtQ1hYICR7Q1hYRkxBR1N9KTsK ICAgIGV4cG9ydCBGRkxBR1M9JCh0ZXN0LWZsYWdzLUY3NyAke0ZGTEFHU30pOwogICAgZXhwb3J0 IEZDRkxBR1M9JCh0ZXN0LWZsYWdzLUZDICR7RkNGTEFHU30pCn0KdGMtYXJjaCAoKSAKeyAKICAg IHRjLW5pbmphX21hZ2ljX3RvX2FyY2ggcG9ydGFnZSAiJEAiCn0KdGMtYXJjaC1rZXJuZWwgKCkg CnsgCiAgICB0Yy1uaW5qYV9tYWdpY190b19hcmNoIGtlcm4gIiRAIgp9CnRjLWVuZGlhbiAoKSAK eyAKICAgIGxvY2FsIGhvc3Q9JDE7CiAgICBbWyAteiAke2hvc3R9IF1dICYmIGhvc3Q9JHtDVEFS R0VUOi0ke0NIT1NUfX07CiAgICBob3N0PSR7aG9zdCUlLSp9OwogICAgY2FzZSAke2hvc3R9IGlu IAogICAgICAgIGFscGhhKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAg IGFybSpiKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIGFybSopCiAg ICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICBjcmlzKikKICAgICAgICAg ICAgZWNobyBsaXR0bGUKICAgICAgICA7OwogICAgICAgIGhwcGEqKQogICAgICAgICAgICBlY2hv IGJpZwogICAgICAgIDs7CiAgICAgICAgaT84NiopCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAg ICAgICAgOzsKICAgICAgICBpYTY0KikKICAgICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7 OwogICAgICAgIG02OCopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICBt aXBzKmwqKQogICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgbWlwcyop CiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICBwb3dlcnBjKikKICAgICAg ICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIHMzOTAqKQogICAgICAgICAgICBlY2hv IGJpZwogICAgICAgIDs7CiAgICAgICAgc2gqYiopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAg ICAgOzsKICAgICAgICBzaCopCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAg ICAgICBzcGFyYyopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICB4ODZf NjQqKQogICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAg ICAgICAgZWNobyB3dGYKICAgICAgICA7OwogICAgZXNhYwp9CnRjLWV4cG9ydCAoKSAKeyAKICAg IGxvY2FsIHZhcjsKICAgIGZvciB2YXIgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgJCh0eXBl IC10IHRjLWdldCR7dmFyfSkgIT0gImZ1bmN0aW9uIiBdXSAmJiBkaWUgInRjLWV4cG9ydDogaW52 YWxpZCBleHBvcnQgdmFyaWFibGUgJyR7dmFyfSciOwogICAgICAgIGV2YWwgdGMtZ2V0JHt2YXJ9 ID4gL2Rldi9udWxsOwogICAgZG9uZQp9CnRjLWdldEFSICgpIAp7IAogICAgdGMtZ2V0UFJPRyBB UiBhciAiJEAiCn0KdGMtZ2V0QVMgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIEFTIGFzICIkQCIKfQp0 Yy1nZXRCVUlMRF9BUiAoKSAKeyAKICAgIHRjLWdldEJVSUxEX1BST0cgQVIgYXIgIiRAIgp9CnRj LWdldEJVSUxEX0FTICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBBUyBhcyAiJEAiCn0KdGMt Z2V0QlVJTERfQ0MgKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIENDIGdjYyAiJEAiCn0KdGMt Z2V0QlVJTERfQ1BQICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBDUFAgY3BwICIkQCIKfQp0 Yy1nZXRCVUlMRF9DWFggKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIENYWCBnKysgIiRAIgp9 CnRjLWdldEJVSUxEX0xEICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBMRCBsZCAiJEAiCn0K dGMtZ2V0QlVJTERfTk0gKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIE5NIG5tICIkQCIKfQp0 Yy1nZXRCVUlMRF9PQkpDT1BZICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBPQkpDT1BZIG9i amNvcHkgIiRAIgp9CnRjLWdldEJVSUxEX1BLR19DT05GSUcgKCkgCnsgCiAgICB0Yy1nZXRCVUlM RF9QUk9HIFBLR19DT05GSUcgcGtnLWNvbmZpZyAiJEAiCn0KdGMtZ2V0QlVJTERfUFJPRyAoKSAK eyAKICAgIF90Yy1nZXRQUk9HIENCVUlMRCAiQlVJTERfJDEgJDFfRk9SX0JVSUxEIEhPU1QkMSIg IiR7QDoyfSIKfQp0Yy1nZXRCVUlMRF9SQU5MSUIgKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9H IFJBTkxJQiByYW5saWIgIiRAIgp9CnRjLWdldEJVSUxEX1NUUklQICgpIAp7IAogICAgdGMtZ2V0 QlVJTERfUFJPRyBTVFJJUCBzdHJpcCAiJEAiCn0KdGMtZ2V0Q0MgKCkgCnsgCiAgICB0Yy1nZXRQ Uk9HIENDIGdjYyAiJEAiCn0KdGMtZ2V0Q1BQICgpIAp7IAogICAgdGMtZ2V0UFJPRyBDUFAgY3Bw ICIkQCIKfQp0Yy1nZXRDWFggKCkgCnsgCiAgICB0Yy1nZXRQUk9HIENYWCBnKysgIiRAIgp9CnRj LWdldERMTFdSQVAgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIERMTFdSQVAgZGxsd3JhcCAiJEAiCn0K dGMtZ2V0Rjc3ICgpIAp7IAogICAgdGMtZ2V0UFJPRyBGNzcgZ2ZvcnRyYW4gIiRAIgp9CnRjLWdl dEZDICgpIAp7IAogICAgdGMtZ2V0UFJPRyBGQyBnZm9ydHJhbiAiJEAiCn0KdGMtZ2V0R0NKICgp IAp7IAogICAgdGMtZ2V0UFJPRyBHQ0ogZ2NqICIkQCIKfQp0Yy1nZXRMRCAoKSAKeyAKICAgIHRj LWdldFBST0cgTEQgbGQgIiRAIgp9CnRjLWdldE5NICgpIAp7IAogICAgdGMtZ2V0UFJPRyBOTSBu bSAiJEAiCn0KdGMtZ2V0T0JKQ09QWSAoKSAKeyAKICAgIHRjLWdldFBST0cgT0JKQ09QWSBvYmpj b3B5ICIkQCIKfQp0Yy1nZXRQS0dfQ09ORklHICgpIAp7IAogICAgdGMtZ2V0UFJPRyBQS0dfQ09O RklHIHBrZy1jb25maWcgIiRAIgp9CnRjLWdldFBST0cgKCkgCnsgCiAgICBfdGMtZ2V0UFJPRyBD SE9TVCAiJEAiCn0KdGMtZ2V0UkFOTElCICgpIAp7IAogICAgdGMtZ2V0UFJPRyBSQU5MSUIgcmFu bGliICIkQCIKfQp0Yy1nZXRSQyAoKSAKeyAKICAgIHRjLWdldFBST0cgUkMgd2luZHJlcyAiJEAi Cn0KdGMtZ2V0U1RSSVAgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIFNUUklQIHN0cmlwICIkQCIKfQp0 Yy1oYXMtb3Blbm1wICgpIAp7IAogICAgbG9jYWwgYmFzZT0iJHtUfS90ZXN0LXRjLW9wZW5tcCI7 CiAgICBjYXQgPiAiJHtiYXNlfS5jIiAgPDwtRU9GCiNpbmNsdWRlIDxvbXAuaD4KaW50IG1haW4o KSB7CmludCBudGhyZWFkcywgdGlkLCByZXQgPSAwOwojcHJhZ21hIG9tcCBwYXJhbGxlbCBwcml2 YXRlKG50aHJlYWRzLCB0aWQpCnsKdGlkID0gb21wX2dldF90aHJlYWRfbnVtKCk7Cm50aHJlYWRz ID0gb21wX2dldF9udW1fdGhyZWFkcygpOyByZXQgKz0gdGlkICsgbnRocmVhZHM7Cn0KcmV0dXJu IHJldDsKfQpFT0YKCiAgICAkKHRjLWdldENDICIkQCIpIC1mb3Blbm1wICIke2Jhc2V9LmMiIC1v ICIke2Jhc2V9IiAmPi9kZXYvbnVsbDsKICAgIGxvY2FsIHJldD0kPzsKICAgIHJtIC1mICIke2Jh c2V9Iio7CiAgICByZXR1cm4gJHtyZXR9Cn0KdGMtaGFzLXRscyAoKSAKeyAKICAgIGxvY2FsIGJh c2U9IiR7VH0vdGVzdC10Yy10bHMiOwogICAgY2F0ID4gIiR7YmFzZX0uYyIgIDw8LUVPRgppbnQg Zm9vKGludCAqaSkgewpzdGF0aWMgX190aHJlYWQgaW50IGogPSAwOwpyZXR1cm4gKmkgPyBqIDog Kmk7Cn0KRU9GCgogICAgbG9jYWwgZmxhZ3M7CiAgICBjYXNlICQxIGluIAogICAgICAgIC1zKQog ICAgICAgICAgICBmbGFncz0iLVMiCiAgICAgICAgOzsKICAgICAgICAtYykKICAgICAgICAgICAg ZmxhZ3M9Ii1jIgogICAgICAgIDs7CiAgICAgICAgLWwpCgogICAgICAgIDs7CiAgICAgICAgLSop CiAgICAgICAgICAgIGRpZSAiVXNhZ2U6IHRjLWhhcy10bHMgWy1jfC1sXSBbdG9vbGNoYWluIHBy ZWZpeF0iCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICA6ICR7ZmxhZ3M6PS1mUElDIC1zaGFyZWQg LVdsLC16LGRlZnN9OwogICAgW1sgJDEgPT0gLSogXV0gJiYgc2hpZnQ7CiAgICAkKHRjLWdldEND ICIkQCIpICR7ZmxhZ3N9ICIke2Jhc2V9LmMiIC1vICIke2Jhc2V9IiAmPi9kZXYvbnVsbDsKICAg IGxvY2FsIHJldD0kPzsKICAgIHJtIC1mICIke2Jhc2V9Iio7CiAgICByZXR1cm4gJHtyZXR9Cn0K dGMtaXMtY3Jvc3MtY29tcGlsZXIgKCkgCnsgCiAgICByZXR1cm4gJChbWyAke0NCVUlMRDotJHtD SE9TVH19ICE9ICR7Q0hPU1R9IF1dKQp9CnRjLWlzLWhhcmRmbG9hdCAoKSAKeyAKICAgIFtbICR7 Q1RBUkdFVC8vXy8tfSA9PSAqLWhhcmRmbG9hdC0qIF1dICYmIGVjaG8gInllcyIgfHwgZWNobyAi bm8iCn0KdGMtaXMtc29mdGZsb2F0ICgpIAp7IAogICAgY2FzZSAke0NUQVJHRVR9IGluIAogICAg ICAgIGJmaW4qIHwgaDgzMDAqKQogICAgICAgICAgICBlY2hvICJvbmx5IgogICAgICAgIDs7CiAg ICAgICAgKikKICAgICAgICAgICAgW1sgJHtDVEFSR0VULy9fLy19ID09ICotc29mdGZsb2F0LSog XV0gJiYgZWNobyAieWVzIiB8fCBlY2hvICJubyIKICAgICAgICA7OwogICAgZXNhYwp9CnRjLWlz LXN0YXRpYy1vbmx5ICgpIAp7IAogICAgbG9jYWwgaG9zdD0ke0NUQVJHRVQ6LSR7Q0hPU1R9fTsK ICAgIHJldHVybiAkKFtbICR7aG9zdH0gPT0gKi1taW50KiBdXSkKfQp0Yy1uaW5qYV9tYWdpY190 b19hcmNoICgpIAp7IAogICAgZnVuY3Rpb24gbmluaiAoKSAKICAgIHsgCiAgICAgICAgW1sgJHt0 eXBlfSA9PSAia2VybiIgXV0gJiYgZWNobyAkMSB8fCBlY2hvICQyCiAgICB9OwogICAgbG9jYWwg dHlwZT0kMTsKICAgIGxvY2FsIGhvc3Q9JDI7CiAgICBbWyAteiAke2hvc3R9IF1dICYmIGhvc3Q9 JHtDVEFSR0VUOi0ke0NIT1NUfX07CiAgICBjYXNlICR7aG9zdH0gaW4gCiAgICAgICAgYWxwaGEq KQogICAgICAgICAgICBlY2hvIGFscGhhCiAgICAgICAgOzsKICAgICAgICBhcm0qKQogICAgICAg ICAgICBlY2hvIGFybQogICAgICAgIDs7CiAgICAgICAgYXZyKikKICAgICAgICAgICAgbmluaiBh dnIzMiBhdnIKICAgICAgICA7OwogICAgICAgIGJmaW4qKQogICAgICAgICAgICBuaW5qIGJsYWNr ZmluIGJmaW4KICAgICAgICA7OwogICAgICAgIGNyaXMqKQogICAgICAgICAgICBlY2hvIGNyaXMK ICAgICAgICA7OwogICAgICAgIGhwcGEqKQogICAgICAgICAgICBuaW5qIHBhcmlzYyBocHBhCiAg ICAgICAgOzsKICAgICAgICBpPzg2KikKICAgICAgICAgICAgaWYgW1sgJHt0eXBlfSA9PSAia2Vy biIgXV0gJiYgW1sgJChLVl90b19pbnQgJHtLVn0pIC1sdCAkKEtWX3RvX2ludCAyLjYuMjQpIHx8 ICR7aG9zdH0gPT0gKmZyZWVic2QqIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvIGkzODY7 CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVjaG8geDg2OwogICAgICAgICAgICBm aQogICAgICAgIDs7CiAgICAgICAgaWE2NCopCiAgICAgICAgICAgIGVjaG8gaWE2NAogICAgICAg IDs7CiAgICAgICAgbTY4KikKICAgICAgICAgICAgZWNobyBtNjhrCiAgICAgICAgOzsKICAgICAg ICBtaXBzKikKICAgICAgICAgICAgZWNobyBtaXBzCiAgICAgICAgOzsKICAgICAgICBuaW9zMiop CiAgICAgICAgICAgIGVjaG8gbmlvczIKICAgICAgICA7OwogICAgICAgIG5pb3MqKQogICAgICAg ICAgICBlY2hvIG5pb3MKICAgICAgICA7OwogICAgICAgIHBvd2VycGMqKQogICAgICAgICAgICBp ZiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBbWyAkKEtWX3RvX2ludCAke0tWfSkgLWdlICQo S1ZfdG9faW50IDIuNi4xNikgXV07IHRoZW4KICAgICAgICAgICAgICAgIGVjaG8gcG93ZXJwYzsK ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgaWYgW1sgJHt0eXBlfSA9PSAia2VybiIg XV0gJiYgW1sgJChLVl90b19pbnQgJHtLVn0pIC1lcSAkKEtWX3RvX2ludCAyLjYuMTUpIF1dOyB0 aGVuCiAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHtob3N0fSA9PSBwb3dlcnBjNjQqIF1dIHx8 IFtbICR7UFJPRklMRV9BUkNIfSA9PSAicHBjNjQiIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAg ICAgICAgIGVjaG8gcG93ZXJwYzsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg ICAgICAgICAgICAgIGVjaG8gcHBjOwogICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGlmIFtbICR7aG9zdH0gPT0gcG93ZXJwYzY0 KiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBwYzY0OwogICAgICAgICAg ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHtQUk9GSUxFX0FS Q0h9ID09ICJwcGM2NCIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbmog cHBjNjQgcHBjOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlY2hvIHBwYzsKICAgICAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAg ICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmkKICAgICAg ICA7OwogICAgICAgIHMzOTAqKQogICAgICAgICAgICBlY2hvIHMzOTAKICAgICAgICA7OwogICAg ICAgIHNoNjQqKQogICAgICAgICAgICBuaW5qIHNoNjQgc2gKICAgICAgICA7OwogICAgICAgIHNo KikKICAgICAgICAgICAgZWNobyBzaAogICAgICAgIDs7CiAgICAgICAgc3BhcmM2NCopCiAgICAg ICAgICAgIG5pbmogc3BhcmM2NCBzcGFyYwogICAgICAgIDs7CiAgICAgICAgc3BhcmMqKQogICAg ICAgICAgICBbWyAke1BST0ZJTEVfQVJDSH0gPT0gInNwYXJjNjQiIF1dICYmIG5pbmogc3BhcmM2 NCBzcGFyYyB8fCBlY2hvIHNwYXJjCiAgICAgICAgOzsKICAgICAgICB2YXgqKQogICAgICAgICAg ICBlY2hvIHZheAogICAgICAgIDs7CiAgICAgICAgeDg2XzY0KmZyZWVic2QqKQogICAgICAgICAg ICBlY2hvIGFtZDY0CiAgICAgICAgOzsKICAgICAgICB4ODZfNjQqKQogICAgICAgICAgICBpZiBb WyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBbWyAkKEtWX3RvX2ludCAke0tWfSkgLWdlICQoS1Zf dG9faW50IDIuNi4yNCkgXV07IHRoZW4KICAgICAgICAgICAgICAgIGVjaG8geDg2OwogICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICBuaW5qIHg4Nl82NCBhbWQ2NDsKICAgICAgICAgICAg ZmkKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGVjaG8gdW5rbm93bgogICAgICAg IDs7CiAgICBlc2FjCn0KdGVzdC1mbGFnLUNDICgpIAp7IAogICAgdGVzdC1mbGFnLVBST0cgIkND IiAiJDEiCn0KdGVzdC1mbGFnLUNYWCAoKSAKeyAKICAgIHRlc3QtZmxhZy1QUk9HICJDWFgiICIk MSIKfQp0ZXN0LWZsYWctRjc3ICgpIAp7IAogICAgdGVzdC1mbGFnLVBST0cgIkY3NyIgIiQxIgp9 CnRlc3QtZmxhZy1GQyAoKSAKeyAKICAgIHRlc3QtZmxhZy1QUk9HICJGQyIgIiQxIgp9CnRlc3Qt ZmxhZy1QUk9HICgpIAp7IAogICAgbG9jYWwgY29tcD0kMTsKICAgIGxvY2FsIGZsYWdzPSIkMiI7 CiAgICBbWyAteiAke2NvbXB9IHx8IC16ICR7ZmxhZ3N9IF1dICYmIHJldHVybiAxOwogICAgbG9j YWwgUFJPRz0kKHRjLWdldCR7Y29tcH0pOwogICAgJHtQUk9HfSAke2ZsYWdzfSAtYyAtbyAvZGV2 L251bGwgLXhjIC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxCn0KdGVzdC1mbGFncyAoKSAKeyAK ICAgIHRlc3QtZmxhZ3MtQ0MgIiRAIgp9CnRlc3QtZmxhZ3MtQ0MgKCkgCnsgCiAgICB0ZXN0LWZs YWdzLVBST0cgIkNDIiAiJEAiCn0KdGVzdC1mbGFncy1DWFggKCkgCnsgCiAgICB0ZXN0LWZsYWdz LVBST0cgIkNYWCIgIiRAIgp9CnRlc3QtZmxhZ3MtRjc3ICgpIAp7IAogICAgdGVzdC1mbGFncy1Q Uk9HICJGNzciICIkQCIKfQp0ZXN0LWZsYWdzLUZDICgpIAp7IAogICAgdGVzdC1mbGFncy1QUk9H ICJGQyIgIiRAIgp9CnRlc3QtZmxhZ3MtUFJPRyAoKSAKeyAKICAgIGxvY2FsIGNvbXA9JDE7CiAg ICBsb2NhbCBmbGFnczsKICAgIGxvY2FsIHg7CiAgICBzaGlmdDsKICAgIFtbIC16ICR7Y29tcH0g XV0gJiYgcmV0dXJuIDE7CiAgICB4PSIiOwogICAgZm9yIHggaW4gIiRAIjsKICAgIGRvCiAgICAg ICAgdGVzdC1mbGFnLSR7Y29tcH0gIiR7eH0iICYmIGZsYWdzPSIke2ZsYWdzfSR7ZmxhZ3M6KyB9 JHt4fSI7CiAgICBkb25lOwogICAgZWNobyAiJHtmbGFnc30iOwogICAgW1sgLW4gJHtmbGFnc30g XV0KfQp0ZXN0X2ZsYWcgKCkgCnsgCiAgICBkaWUgIiQwOiBkZXByZWNhdGVkLCBwbGVhc2UgdXNl IHRlc3QtZmxhZ3MoKSEiCn0KdGVzdF92ZXJzaW9uX2luZm8gKCkgCnsgCiAgICBpZiBbWyAkKCQo dGMtZ2V0Q0MpIC0tdmVyc2lvbiAyPiYxKSA9PSAqJDEqIF1dOyB0aGVuCiAgICAgICAgcmV0dXJu IDA7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIDE7CiAgICBmaQp9CnRyZWVjb3B5ICgpIAp7IAog ICAgZGVzdD0keyEjfTsKICAgIGZpbGVzX2NvdW50PSQjOwogICAgd2hpbGUgKCggJCMgPiAxICkp OyBkbwogICAgICAgIGRpcnN0cnVjdD0kKGRpcm5hbWUgIiQxIik7CiAgICAgICAgbWtkaXIgLXAg IiR7ZGVzdH0vJHtkaXJzdHJ1Y3R9IjsKICAgICAgICBjcCAtcFBSICIkMSIgIiR7ZGVzdH0vJHtk aXJzdHJ1Y3R9IjsKICAgICAgICBzaGlmdDsKICAgIGRvbmUKfQp1bnBhY2tfbWFrZXNlbGYgKCkg CnsgCiAgICBsb2NhbCBzcmNfaW5wdXQ9JHsxOi0ke0F9fTsKICAgIGxvY2FsIHNyYz0kKGZpbmRf dW5wYWNrYWJsZV9maWxlICIke3NyY19pbnB1dH0iKTsKICAgIGxvY2FsIHNraXA9JDI7CiAgICBs b2NhbCBleGU9JDM7CiAgICBbWyAteiAke3NyY30gXV0gJiYgZGllICJDb3VsZCBub3QgbG9jYXRl IHNvdXJjZSBmb3IgJyR7c3JjX2lucHV0fSciOwogICAgbG9jYWwgc2hydHNyYz0kKGJhc2VuYW1l ICIke3NyY30iKTsKICAgIGVjaG8gIj4+PiBVbnBhY2tpbmcgJHtzaHJ0c3JjfSB0byAke1BXRH0i OwogICAgaWYgW1sgLXogJHtza2lwfSBdXTsgdGhlbgogICAgICAgIGxvY2FsIHZlcj0kKGdyZXAg LW0xIC1hICcjLipNYWtlc2VsZicgIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkTkZ9Jyk7CiAgICAg ICAgbG9jYWwgc2tpcD0wOwogICAgICAgIGV4ZT10YWlsOwogICAgICAgIGNhc2UgJHt2ZXJ9IGlu IAogICAgICAgICAgICAxLjUuKiB8IDEuNi4wLW52KQogICAgICAgICAgICAgICAgc2tpcD0kKGdy ZXAgLWEgXnNraXA9ICIke3NyY30iIHwgY3V0IC1kPSAtZjIpCiAgICAgICAgICAgIDs7CiAgICAg ICAgICAgIDIuMCB8IDIuMC4xKQogICAgICAgICAgICAgICAgc2tpcD0kKGdyZXAgLWEgXicJJ3Rh aWwgIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkMn0nIHwgY3V0IC1iMi0pCiAgICAgICAgICAgIDs7 CiAgICAgICAgICAgIDIuMS4xKQogICAgICAgICAgICAgICAgc2tpcD0kKGdyZXAgLWEgXm9mZnNl dD0gIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkMn0nIHwgY3V0IC1iMi0pOwogICAgICAgICAgICAg ICAgKCggc2tpcCsrICkpCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIDIuMS4yKQogICAgICAg ICAgICAgICAgc2tpcD0kKGdyZXAgLWEgXm9mZnNldD0gIiR7c3JjfSIgfCBhd2sgJ3twcmludCAk M30nIHwgaGVhZCAtbiAxKTsKICAgICAgICAgICAgICAgICgoIHNraXArKyApKQogICAgICAgICAg ICA7OwogICAgICAgICAgICAyLjEuMykKICAgICAgICAgICAgICAgIHNraXA9YGdyZXAgLWEgXm9m ZnNldD0gIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkM30nYDsKICAgICAgICAgICAgICAgICgoIHNr aXArKyApKQogICAgICAgICAgICA7OwogICAgICAgICAgICAyLjEuNCB8IDIuMS41KQogICAgICAg ICAgICAgICAgc2tpcD0kKGdyZXAgLWEgb2Zmc2V0PS4qaGVhZC4qd2MgIiR7c3JjfSIgfCBhd2sg J3twcmludCAkM30nIHwgaGVhZCAtbiAxKTsKICAgICAgICAgICAgICAgIHNraXA9JChoZWFkIC1u ICR7c2tpcH0gIiR7c3JjfSIgfCB3YyAtYyk7CiAgICAgICAgICAgICAgICBleGU9ImRkIgogICAg ICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgZWVycm9yICJJJ20gc29y cnksIGJ1dCBJIHdhcyB1bmFibGUgdG8gc3VwcG9ydCB0aGUgTWFrZXNlbGYgZmlsZS4iOwogICAg ICAgICAgICAgICAgZWVycm9yICJUaGUgdmVyc2lvbiBJIGRldGVjdGVkIHdhcyAnJHt2ZXJ9Jy4i OwogICAgICAgICAgICAgICAgZWVycm9yICJQbGVhc2UgZmlsZSBhIGJ1ZyBhYm91dCB0aGUgZmls ZSAke3NocnRzcmN9IGF0IjsKICAgICAgICAgICAgICAgIGVlcnJvciAiaHR0cDovL2J1Z3MuZ2Vu dG9vLm9yZy8gc28gdGhhdCBzdXBwb3J0IGNhbiBiZSBhZGRlZC4iOwogICAgICAgICAgICAgICAg ZGllICJtYWtlc2VsZiB2ZXJzaW9uICcke3Zlcn0nIG5vdCBzdXBwb3J0ZWQiCiAgICAgICAgICAg IDs7CiAgICAgICAgZXNhYzsKICAgICAgICBkZWJ1Zy1wcmludCAiRGV0ZWN0ZWQgTWFrZXNlbGYg dmVyc2lvbiAke3Zlcn0gLi4uIHVzaW5nICR7c2tpcH0gYXMgb2Zmc2V0IjsKICAgIGZpOwogICAg Y2FzZSAke2V4ZX0gaW4gCiAgICAgICAgdGFpbCkKICAgICAgICAgICAgZXhlPSJ0YWlsIC1uICsk e3NraXB9ICcke3NyY30nIgogICAgICAgIDs7CiAgICAgICAgZGQpCiAgICAgICAgICAgIGV4ZT0i ZGQgaWJzPSR7c2tpcH0gc2tpcD0xIGlmPScke3NyY30nIgogICAgICAgIDs7CiAgICAgICAgKikK ICAgICAgICAgICAgZGllICJtYWtlc2VsZiBjYW50IGhhbmRsZSBleGUgJyR7ZXhlfSciCiAgICAg ICAgOzsKICAgIGVzYWM7CiAgICBsb2NhbCBmaWxldHlwZSB0bXBmaWxlPSQoZW1rdGVtcCk7CiAg ICBldmFsICR7ZXhlfSAyPiAvZGV2L251bGwgfCBoZWFkIC1jIDUxMiA+ICIke3RtcGZpbGV9IjsK ICAgIGZpbGV0eXBlPSQoZmlsZSAtYiAiJHt0bXBmaWxlfSIpIHx8IGRpZTsKICAgIGNhc2UgJHtm aWxldHlwZX0gaW4gCiAgICAgICAgKnRhclwgYXJjaGl2ZSopCiAgICAgICAgICAgIGV2YWwgJHtl eGV9IHwgdGFyIC0tbm8tc2FtZS1vd25lciAteGYgLQogICAgICAgIDs7CiAgICAgICAgYnppcDIq KQogICAgICAgICAgICBldmFsICR7ZXhlfSB8IGJ6aXAyIC1kYyB8IHRhciAtLW5vLXNhbWUtb3du ZXIgLXhmIC0KICAgICAgICA7OwogICAgICAgIGd6aXAqKQogICAgICAgICAgICBldmFsICR7ZXhl fSB8IHRhciAtLW5vLXNhbWUtb3duZXIgLXh6ZiAtCiAgICAgICAgOzsKICAgICAgICBjb21wcmVz cyopCiAgICAgICAgICAgIGV2YWwgJHtleGV9IHwgZ3VuemlwIHwgdGFyIC0tbm8tc2FtZS1vd25l ciAteGYgLQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZWVycm9yICJVbmtub3du IGZpbGV0eXBlIFwiJHtmaWxldHlwZX1cIiA/IjsKICAgICAgICAgICAgZmFsc2UKICAgICAgICA7 OwogICAgZXNhYzsKICAgIGFzc2VydCAiZmFpbHVyZSB1bnBhY2tpbmcgKCR7ZmlsZXR5cGV9KSBt YWtlc2VsZiAke3NocnRzcmN9ICgnJHt2ZXJ9JyArJHtza2lwfSkiCn0KdW5wYWNrX3BkdiAoKSAK eyAKICAgIGxvY2FsIHNyYz0kKGZpbmRfdW5wYWNrYWJsZV9maWxlICIkMSIpOwogICAgbG9jYWwg c2l6ZW9mZl90PSQyOwogICAgW1sgLXogJHtzcmN9IF1dICYmIGRpZSAiQ291bGQgbm90IGxvY2F0 ZSBzb3VyY2UgZm9yICckMSciOwogICAgW1sgLXogJHtzaXplb2ZmX3R9IF1dICYmIGRpZSAiTm8g aWRlYSB3aGF0IG9mZl90IHNpemUgd2FzIHVzZWQgZm9yIHRoaXMgcGR2IDooIjsKICAgIGxvY2Fs IHNocnRzcmM9JChiYXNlbmFtZSAiJHtzcmN9Iik7CiAgICBlY2hvICI+Pj4gVW5wYWNraW5nICR7 c2hydHNyY30gdG8gJHtQV0R9IjsKICAgIGxvY2FsIG1ldGFza2lwPSQodGFpbCAtYyAke3NpemVv ZmZfdH0gIiR7c3JjfSIgfCBoZXhkdW1wIC1lIFwiJWlcIik7CiAgICBsb2NhbCB0YWlsc2tpcD0k KHRhaWwgLWMgJCgoJHtzaXplb2ZmX3R9KjIpKSAiJHtzcmN9IiB8IGhlYWQgLWMgJHtzaXplb2Zm X3R9IHwgaGV4ZHVtcCAtZSBcIiVpXCIpOwogICAgbG9jYWwgbWV0YWZpbGU9JChlbWt0ZW1wKTsK ICAgIHRhaWwgLWMgKyQoKCR7bWV0YXNraXB9KzEpKSAiJHtzcmN9IiA+ICIke21ldGFmaWxlfSI7 CiAgICBsb2NhbCBkYXRhZmlsZT0kKHRhaWwgLWMgKyQoKCR7bWV0YXNraXB9KzEpKSAiJHtzcmN9 IiB8IHN0cmluZ3MgfCBoZWFkIC1uIDEpOwogICAgZGF0YWZpbGU9JChiYXNlbmFtZSAiJHtkYXRh ZmlsZX0iKTsKICAgIGxvY2FsIHRtcGZpbGU9JChlbWt0ZW1wKTsKICAgIHRhaWwgLWMgKyQoKCR7 dGFpbHNraXB9KzEpKSAke3NyY30gMj4gL2Rldi9udWxsIHwgaGVhZCAtYyA1MTIgPiAke3RtcGZp bGV9OwogICAgbG9jYWwgaXNjb21wcmVzc2VkPSQoZmlsZSAtYiAiJHt0bXBmaWxlfSIpOwogICAg aWYgW1sgJHtpc2NvbXByZXNzZWQ6MDo4fSA9PSAiY29tcHJlc3MiIF1dOyB0aGVuCiAgICAgICAg aXNjb21wcmVzc2VkPTE7CiAgICAgICAgbXYgJHt0bXBmaWxlfXssLlp9OwogICAgICAgIGd1bnpp cCAke3RtcGZpbGV9OwogICAgZWxzZQogICAgICAgIGlzY29tcHJlc3NlZD0wOwogICAgZmk7CiAg ICBsb2NhbCBpc3Rhcj0kKGZpbGUgLWIgIiR7dG1wZmlsZX0iKTsKICAgIGlmIFtbICR7aXN0YXI6 MDo5fSA9PSAiUE9TSVggdGFyIiBdXTsgdGhlbgogICAgICAgIGlzdGFyPTE7CiAgICBlbHNlCiAg ICAgICAgaXN0YXI9MDsKICAgIGZpOwogICAgaWYgWyAke2lzY29tcHJlc3NlZH0gLWVxIDEgXTsg dGhlbgogICAgICAgIGlmIFsgJHtpc3Rhcn0gLWVxIDEgXTsgdGhlbgogICAgICAgICAgICB0YWls IC1jICskKCgke3RhaWxza2lwfSsxKSkgJHtzcmN9IDI+IC9kZXYvbnVsbCB8IGhlYWQgLWMgJCgo JHttZXRhc2tpcH0tJHt0YWlsc2tpcH0pKSB8IHRhciAteHpmIC07CiAgICAgICAgZWxzZQogICAg ICAgICAgICB0YWlsIC1jICskKCgke3RhaWxza2lwfSsxKSkgJHtzcmN9IDI+IC9kZXYvbnVsbCB8 IGhlYWQgLWMgJCgoJHttZXRhc2tpcH0tJHt0YWlsc2tpcH0pKSB8IGd6aXAgLWRjID4gJHtkYXRh ZmlsZX07CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgaWYgWyAke2lzdGFyfSAtZXEgMSBd OyB0aGVuCiAgICAgICAgICAgIHRhaWwgLWMgKyQoKCR7dGFpbHNraXB9KzEpKSAke3NyY30gMj4g L2Rldi9udWxsIHwgaGVhZCAtYyAkKCgke21ldGFza2lwfS0ke3RhaWxza2lwfSkpIHwgdGFyIC0t bm8tc2FtZS1vd25lciAteGYgLTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHRhaWwgLWMgKyQo KCR7dGFpbHNraXB9KzEpKSAke3NyY30gMj4gL2Rldi9udWxsIHwgaGVhZCAtYyAkKCgke21ldGFz a2lwfS0ke3RhaWxza2lwfSkpID4gJHtkYXRhZmlsZX07CiAgICAgICAgZmk7CiAgICBmaTsKICAg IHRydWUKfQp1c2V4ICgpIAp7IAogICAgdXNlICIkMSIgJiYgZWNobyAiJHsyLXllc30kNCIgfHwg ZWNobyAiJHszLW5vfSQ1Igp9CnZhbGlkYXRlX2Rlc2t0b3BfZW50cmllcyAoKSAKeyAKICAgIGlm IFtbIC14IC91c3IvYmluL2Rlc2t0b3AtZmlsZS12YWxpZGF0ZSBdXTsgdGhlbgogICAgICAgIGVp bmZvICJDaGVja2luZyBkZXNrdG9wIGVudHJ5IHZhbGlkaXR5IjsKICAgICAgICBsb2NhbCBkaXJl Y3Rvcmllcz0iIjsKICAgICAgICBmb3IgZCBpbiAvdXNyL3NoYXJlL2FwcGxpY2F0aW9ucyAkQDsK ICAgICAgICBkbwogICAgICAgICAgICBbWyAtZCAke0R9JHtkfSBdXSAmJiBkaXJlY3Rvcmllcz0i JHtkaXJlY3Rvcmllc30gJHtEfSR7ZH0iOwogICAgICAgIGRvbmU7CiAgICAgICAgaWYgW1sgLW4g JHtkaXJlY3Rvcmllc30gXV07IHRoZW4KICAgICAgICAgICAgZm9yIEZJTEUgaW4gJChmaW5kICR7 ZGlyZWN0b3JpZXN9IC1uYW1lICIqXC5kZXNrdG9wIiAJCQkJCQkJLW5vdCAtcGF0aCAnKi5oaWRk ZW4qJyB8IHNvcnQgLXUgMj4vZGV2L251bGwpOwogICAgICAgICAgICBkbwogICAgICAgICAgICAg ICAgbG9jYWwgdGVtcD0kKGRlc2t0b3AtZmlsZS12YWxpZGF0ZSAke0ZJTEV9IHwgZ3JlcCAtdiAi d2FybmluZzoiIHwgCQkJCQkJCQlzZWQgLWUgInN8ZXJyb3I6IHx8IiAtZSAic3wke0ZJTEV9Onwt LXxnIiApOwogICAgICAgICAgICAgICAgW1sgLW4gJHRlbXAgXV0gJiYgZWxvZyAke3RlbXAvLS0v JHtGSUxFLyR7RH0vfTp9OwogICAgICAgICAgICBkb25lOwogICAgICAgIGZpOwogICAgICAgIGVj aG8gIiI7CiAgICBlbHNlCiAgICAgICAgZWluZm8gIlBhc3NpbmcgZGVza3RvcCBlbnRyeSB2YWxp ZGl0eSBjaGVjay4gSW5zdGFsbCBkZXYtdXRpbC9kZXNrdG9wLWZpbGUtdXRpbHMsIGlmIHlvdSB3 YW50IHRvIGhlbHAgdG8gaW1wcm92ZSBHZW50b28uIjsKICAgIGZpCn0K --20cf307cfd40b08ae704af405dc2--