RGLTgiKTsKCglpZiAoJGFzcCA9PSAicmFrdXRlbiIpIHsKCQkkdG90YWxfcGFnZXMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgInBhZ2VDb3VudCIpKTsKCQkkdG90YWxfcmVzdWx0cyA9IGludHZhbChnZXRfbm9kZSgkZG9jLCAiY291bnQiKSk7CgkJJEl0ZW1zXyA9IGdldF9ub2RlcygkZG9jLCAiSXRlbSIpOwoJfSBlbHNlaWYgKCRhc3AgPT0gInJha3V0ZW5fdHJhdmVsIikgewoJCSR0b3RhbF9yZXN1bHRzID0gaW50dmFsKGdldF9ub2RlKCRkb2MsICJyZWNvcmRDb3VudCIpKTsKCQkkdG90YWxfcGFnZXMgPSBjZWlsKCR0b3RhbF9yZXN1bHRzIC8gJHdzdmNfcGFnZV9pdGVtX2NvdW50KTsKCQkkSXRlbXNfID0gZ2V0X25vZGVzKCRkb2MsICJob3RlbCIpOwoJfSBlbHNlaWYgKCRhc3AgPT0gImFtYXpvbiIpIHsKCQkkdG90YWxfcGFnZXMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsUGFnZXMiKSk7CgkJJHRvdGFsX3BhZ2VzID0gbWluKCR0b3RhbF9wYWdlcywgMzIwMCk7CgkJJHRvdGFsX3Jlc3VsdHMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsUmVzdWx0cyIpKTsKCQkkSXRlbXNfID0gZ2V0X25vZGVzKCRkb2MsICJJdGVtIik7CgkJJGVycm9ycyA9IGdldF9ub2RlcygkZG9jLCAiRXJyb3IiKTsKCQlpZiAoY291bnQoJGVycm9ycykgIT0gMCkgewoJCQlmb3JlYWNoICgkZXJyb3JzIGFzICRlcnJvcikgewoJCQkJcHJpbnQgIjxmb250IGNvbG9yPXJlZD5FUlJPUjoiIC4gZ2V0X25vZGUoJGVycm9yLCAiQ29kZSIpIC4gIjwvZm9udD48YnI+IjsKCQkJfQoJCX0KCX0gZWxzZWlmICgkYXNwID09ICJkZW5ubyIpIHsKCQkkdG90YWxfcGFnZXMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsUGFnZXMiKSk7CgkJJHRvdGFsX3Jlc3VsdHMgPSBpbnR2YWwoZ2V0X25vZGUoJGRvYywgIlRvdGFsUmVzdWx0cyIpKTsKCQkkSXRlbXNfID0gZ2V0X25vZGVzKCRkb2MsICJEZXRhaWxzIik7Cgl9CgoJaWYgKCR0b3RhbF9yZXN1bHRzID09IDApIHsKCQkkdXJsID0gZ2V0X3NldHRpbmcoIk5PX1JFU1VMVF9VUkwiKTsKCQlpZiAoc3RybGVuKCR1cmwpICE9IDApIHsKCQkJaGVhZGVyKCJMb2NhdGlvbjogJHVybCIpOwoJCQlleGl0OwoJCX0KCX0KCQoJaWYgKCRmaXJzdF90aW1lID09IFRSVUUpIHsKCQlmb3IgKCRpID0gJHdzdmNfcGFnZV9pbmRleDsgJGkgPCBjb3VudCgkSXRlbXNfKTsgJGkrKykgewoJCQkkSXRlbXNbXSA9ICRJdGVtc19bJGldOwoJCQkkcGFnZV9pbmRleF8gPSAwOwoJCQkkcGFnZXNbXSA9ICR3c3ZjX3BhZ2U7CgkJCSRwYWdlX2luZGV4ZXNbXSA9ICRpOwoJCX0KCQkkZmlyc3RfdGltZSA9IEZBTFNFOwoJfSBlbHNlIHsKCQlmb3IgKCRpdGVtX2luZGV4ID0gMDsgJGl0ZW1faW5kZXggPCBjb3VudCgkSXRlbXNfKTsgJGl0ZW1faW5kZXgrKykgewoJCQkkSXRlbXNbXSA9ICRJdGVtc19bJGl0ZW1faW5kZXhdOwoJCQkkcGFnZXNbXSA9ICR3c3ZjX3BhZ2U7CgkJCSRwYWdlX2luZGV4ZXNbXSA9ICRpdGVtX2luZGV4OwoJCX0KCX0KCQoJaWYgKGNvdW50KCRJdGVtcykgPiAkcGFnZV9pdGVtX2NvdW50KSB7CgkJJGFycmF5X2NvdW50ID0gY291bnQoJEl0ZW1zKTsKCQlmb3IgKCRpID0gJHBhZ2VfaXRlbV9jb3VudDsgJGkgPCAkYXJyYXlfY291bnQ7ICRpKyspIHsKCQkJdW5zZXQoJEl0ZW1zWyRpXSk7CgkJfQoJCWJyZWFrOwoJfQoJCglpZiAoJHRvdGFsX3BhZ2VzIDw9ICR3c3ZjX3BhZ2UpIHsKCQlicmVhazsKCX0KCQoJdW5zZXQoJEl0ZW1zXyk7CgkKCSR3c3ZjX3BhZ2UrKzsKCQoJc2xlZXAoMSk7Cn0KCmlmIChnZXRfc2V0dGluZygiTElTVF9JVEVNX1NIVUZGTEUiKSA9PSAiMSIpIHsKCSRpdGVtX2NvdW50ID0gY291bnQoJEl0ZW1zKTsKCWZvciAoJGkgPSAwOyAkaSA8ICRpdGVtX2NvdW50OyAkaSsrKSB7CgkJJHIgPSByYW5kKDAsICRpdGVtX2NvdW50IC0gMSk7CgkJaWYgKCRpICE9ICRyKSB7CgkJCSR2YWwgPSAkSXRlbXNbJGldOwoJCQkkSXRlbXNbJGldID0gJEl0ZW1zWyRyXTsKCQkJJEl0ZW1zWyRyXSA9ICR2YWw7CgkJCSR2YWwgPSAkcGFnZXNbJGldOwoJCQkkcGFnZXNbJGldID0gJHBhZ2VzWyRyXTsKCQkJJHBhZ2VzWyRyXSA9ICR2YWw7CgkJCSR2YWwgPSAkcGFnZV9pbmRleGVzWyRpXTsKCQkJJHBhZ2VfaW5kZXhlc1skaV0gPSAkcGFnZV9pbmRleGVzWyRyXTsKCQkJJHBhZ2VfaW5kZXhlc1skcl0gPSAkdmFsOwoJCX0KCX0KfQoKaWYgKCRhc3AgPT0gInJha3V0ZW4iIHx8ICRhc3AgPT0gInJha3V0ZW5fdHJhdmVsIikgewoJJGNhbl9nZXRfY291bnQgPSBtaW4oJHRvdGFsX3Jlc3VsdHMsICR3c3ZjX3BhZ2VfaXRlbV9jb3VudCAqICR0b3RhbF9wYWdlcyk7CgkkdG90YWxfcGFnZXMgPSBjZWlsKCRjYW5fZ2V0X2NvdW50IC8gJHBhZ2VfaXRlbV9jb3VudCk7Cn0gZWxzZWlmICgkYXNwID09ICJhbWF6b24iKSB7CgkkY2FuX2dldF9jb3VudCA9IG1pbigkdG90YWxfcmVzdWx0cywgJHdzdmNfcGFnZV9pdGVtX2NvdW50ICogNDAwKTsKCSR0b3RhbF9wYWdlcyA9IGNlaWwoJGNhbl9nZXRfY291bnQgLyAkcGFnZV9pdGVtX2NvdW50KTsKfSBlbHNlIHsKCSR0b3RhbF9wYWdlcyA9IGNlaWwoJHRvdGFsX3Jlc3VsdHMgLyAkcGFnZV9pdGVtX2NvdW50KTsKfQoKaWYgKCRzdWZmaXggPT0gInhtbCIpIHsKCSRodG0gPSBmaWxlX2dldF9jb250ZW50cygicnNzLnhtbCIpOwoJJGh0bSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGh0bSwgIkVVQy1KUCIsICJVVEYtOCIpOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCI8IS0tSVRFTV8tLT4iLCAiPCEtLUxJU1RfUk9XXy0tPjwhLS1MSVNUX0NPTF8tLT4iLCAkaHRtKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgiPCEtLV9JVEVNLS0+IiwgIjwhLS1fTElTVF9DT0wtLT48IS0tX0xJU1RfUk9XLS0+IiwgJGh0bSk7CgkkY29scyA9IDE7Cgkkb3V0X2VuY29kaW5nID0gIlVURi04IjsKfSBlbHNlIHsKCWlmICgkYXNwID09ICJyYWt1dGVuX3RyYXZlbCIpIHsKCQkkaHRtID0gZmlsZV9nZXRfY29udGVudHMoImxpc3RfcmFrdXRlbl90cmF2ZWwuaHRtbCIpOwoJfSBlbHNlIHsKCQkkaHRtID0gZmlsZV9nZXRfY29udGVudHMoImxpc3QuaHRtbCIpOwoJfQoJJGh0bSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGh0bSwgIkVVQy1KUCIsICJTSklTIik7Cgkkb3V0X2VuY29kaW5nID0gIlNKSVMiOwp9CgokaHRtID0gZ2V0X3N0cl9zcGFuKCJMSVNUX1JPVyIsICRodG0sICRodG1fbGlzdF9yb3cpOwokaHRtX2xpc3Rfcm93ID0gZ2V0X3N0cl9zcGFuKCJMSVNUX0NPTCIsICRodG1fbGlzdF9yb3csICRodG1faXRlbV9kZXRhaWxzKTsKCiRodG0gPSBnZXRfc3RyX3NwYW4oIlBSRVZfUEFHRV9MSU5LIiwgJGh0bSwgJGh0bV9wcmV2X3BhZ2VfbGluayk7CgokaHRtID0gZ2V0X3N0cl9zcGFuKCJORVhUX1BBR0VfTElOSyIsICRodG0sICRodG1fbmV4dF9wYWdlX2xpbmspOwoKJGh0bSA9IGdldF9zdHJfc3BhbigiUFJFVl9QQUdFX0xJTksyIiwgJGh0bSwgJGh0bV9wcmV2X3BhZ2VfbGluazIpOwoKJGh0bSA9IGdldF9zdHJfc3BhbigiTkVYVF9QQUdFX0xJTksyIiwgJGh0bSwgJGh0bV9uZXh0X3BhZ2VfbGluazIpOwoKJGh0bSA9IHN0cl9yZXBsYWNlKCJ7cGFnZV90aXRsZX0iLCAkcSwgJGh0bSk7CgokaHRtID0gc3RyX3JlcGxhY2UoIntjdXJyZW50X3BhZ2V9IiwgJHBhZ2UsICRodG0pOwokaHRtID0gc3RyX3JlcGxhY2UoIntjdXJyZW50X3BhZ2VfZn0iLCBudW1iZXJfZm9ybWF0KCRwYWdlKSwgJGh0bSk7CgokaHRtID0gc3RyX3JlcGxhY2UoInt0b3RhbF9wYWdlc30iLCAkdG90YWxfcGFnZXMsICRodG0pOwokaHRtID0gc3RyX3JlcGxhY2UoInt0b3RhbF9wYWdlc19mfSIsIG51bWJlcl9mb3JtYXQoJHRvdGFsX3BhZ2VzKSwgJGh0bSk7CgokaHRtID0gc3RyX3JlcGxhY2UoInt0b3RhbF9yZXN1bHRzfSIsICR0b3RhbF9yZXN1bHRzLCAkaHRtKTsKJGh0bSA9IHN0cl9yZXBsYWNlKCJ7dG90YWxfcmVzdWx0c19mfSIsIG51bWJlcl9mb3JtYXQoJHRvdGFsX3Jlc3VsdHMpLCAkaHRtKTsKCiRodG0gPSBzdHJfcmVwbGFjZSgie3B1Yl9kYXRlfSIsIGdldF9kYXRlX3N0cmluZygpLCAkaHRtKTsKCiRodG0gPSByZXBsYWNlX2xpbmsoJGh0bSk7CgppZiAoJHBhZ2UgPiAxKSB7CglpZiAoJHBhZ2UgPT0gMikgewoJCSRodG1fcHJldl9wYWdlX2xpbmsgPSBzdHJfcmVwbGFjZSgie3ByZXZfcGFnZX0iLCAkZXEgLiAiLmh0bWwiLCAkaHRtX3ByZXZfcGFnZV9saW5rKTsKCQkkaHRtX3ByZXZfcGFnZV9saW5rMiA9IHN0cl9yZXBsYWNlKCJ7cHJldl9wYWdlfSIsICRlcSAuICIuaHRtbCIsICRodG1fcHJldl9wYWdlX2xpbmsyKTsKCX0gZWxzZSB7CgkJJGh0bV9wcmV2X3BhZ2VfbGluayA9IHN0cl9yZXBsYWNlKCJ7cHJldl9wYWdlfSIsICRlcSAuICJfIiAuIHN0cnZhbCgkcGFnZSAtIDEpIC4gIi5odG1sIiwgJGh0bV9wcmV2X3BhZ2VfbGluayk7CgkJJGh0bV9wcmV2X3BhZ2VfbGluazIgPSBzdHJfcmVwbGFjZSgie3ByZXZfcGFnZX0iLCAkZXEgLiAiXyIgLiBzdHJ2YWwoJHBhZ2UgLSAxKSAuICIuaHRtbCIsICRodG1fcHJldl9wYWdlX2xpbmsyKTsKCX0KCSRodG0gPSBzdHJfcmVwbGFjZSgie1BSRVZfUEFHRV9MSU5LfSIsICRodG1fcHJldl9wYWdlX2xpbmssICRodG0pOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7UFJFVl9QQUdFX0xJTksyfSIsICRodG1fcHJldl9wYWdlX2xpbmsyLCAkaHRtKTsKfSBlbHNlIHsKCSRodG0gPSBzdHJfcmVwbGFjZSgie1BSRVZfUEFHRV9MSU5LfSIsICIiLCAkaHRtKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgie1BSRVZfUEFHRV9MSU5LMn0iLCAiIiwgJGh0bSk7Cn0KCmlmIChpbnR2YWwoJHBhZ2UpIDwgJHRvdGFsX3BhZ2VzKSB7CgkkaHRtX25leHRfcGFnZV9saW5rID0gc3RyX3JlcGxhY2UoIntuZXh0X3BhZ2V9IiwgJGVxIC4gIl8iIC4gc3RydmFsKCRwYWdlICsgMSkgLiAiLmh0bWwiLCAkaHRtX25leHRfcGFnZV9saW5rKTsKCSRodG1fbmV4dF9wYWdlX2xpbmsyID0gc3RyX3JlcGxhY2UoIntuZXh0X3BhZ2V9IiwgJGVxIC4gIl8iIC4gc3RydmFsKCRwYWdlICsgMSkgLiAiLmh0bWwiLCAkaHRtX25leHRfcGFnZV9saW5rMik7CgkkaHRtID0gc3RyX3JlcGxhY2UoIntORVhUX1BBR0VfTElOS30iLCAkaHRtX25leHRfcGFnZV9saW5rLCAkaHRtKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgie05FWFRfUEFHRV9MSU5LMn0iLCAkaHRtX25leHRfcGFnZV9saW5rMiwgJGh0bSk7Cn0gZWxzZSB7CgkkaHRtID0gc3RyX3JlcGxhY2UoIntORVhUX1BBR0VfTElOS30iLCAiIiwgJGh0bSk7CgkkaHRtID0gc3RyX3JlcGxhY2UoIntORVhUX1BBR0VfTElOSzJ9IiwgIiIsICRodG0pOwp9CgokbmFtZXMgPSBhcnJheSgKCSJ0aXRsZSIsCgkiZGV0YWlsX3BhZ2VfdXJsIiwKCSJhZmZpbGlhdGVfdXJsIiwKCSJpbWdfdXJsIiwKCSJpbWdfc191cmwiLAoJImltZ19tX3VybCIsCgkiaW1nX2xfdXJsIiwKCSJwcmljZSIsCgkiZGV0YWlscyIsCgkiaGFuYmFpbW90byIsCgkic2hvcF91cmwiLAoJInJhdGluZyIsCgkicHViX2RhdGUiLAoJInJldmlld19jb3VudCIsCgkiaG90ZWxObyIsCgkiaG90ZWxOYW1lIiwKCSJwb3N0YWxDb2RlIiwKCSJhZGRyZXNzMSIsCgkiYWRkcmVzczIiLAoJInRlbGVwaG9uZU5vIiwKCSJmYXhObyIsCgkiY2hlY2tpblRpbWUiLAoJImxhc3RDaGVja2luVGltZSIsCgkiY2hlY2tvdXRUaW1lIiwKCSJsYXRpdHVkZSIsCgkibG9uZ2l0dWRlIiwKCSJhY2Nlc3MiLAoJInBhcmtpbmdJbmZvcm1hdGlvbiIsCgkiaG90ZWxTcGVjaWFsIiwKCSJyb29tRmFjaWxpdGllcyIsCgkiaG90ZWxGYWNpbGl0aWVzIiwKCSJwcml2aWxlZ2UiLAoJImFib3V0UG9pbnRBZGQiLAoJImFib3V0TWlsZWFnZUFkZCIsCgkiYnJlYWtmYXN0UGxhY2UiLAoJImRpbm5lclBsYWNlIiwKCSJiYXRoVHlwZSIsCgkiYmF0aFF1YWxpdHkiLAoJImJhdGhCZW5lZml0cyIsCgkiYXZhaWxhYmxlQ3JlZGl0Q2FyZCIsCgkiYWJvdXRDcmVkaXRDYXJkTm90ZSIsCgkiYWJvdXRMZWlzdXJlIiwKCSJub3RlIiwKCSJjYW5jZWxQb2xpY3kiLAoJImxpbmd1aXN0aWNMZXZlbCIsCgkiaGFuZGljYXBwZWRGYWNpbGl0aWVzIiwKCSJvdGhlckluZm9ybWF0aW9uIiwKCSJob3RlbEltYWdlVXJsIiwKCSJyb29tSW1hZ2VVcmwiLAoJImhvdGVsTWFwSW1hZ2VVcmwiLAoJImhvdGVsSW5mb3JtYXRpb25VcmwiLAoJInJlc2VydmVUZWxlcGhvbmVObyIsCgkicGxhbkxpc3RVcmwiLAoJImRwUGxhbkxpc3RVcmwiLAoJInJldmlld1VybCIsCgkiaG90ZWxLYW5hTmFtZSIsCgkibmVhcmVzdFN0YXRpb24iLAoJImhvdGVsTWluQ2hhcmdlIiwKCSJob3RlbFRodW1ibmFpbFVybCIsCgkicm9vbVRodW1ibmFpbFVybCIsCgkicmV2aWV3Q291bnQiLAoJInJldmlld0F2ZXJhZ2UiLAoJInVzZXJSZXZpZXciLAoJInNlcnZpY2VBdmVyYWdlIiwKCSJsb2NhdGlvbkF2ZXJhZ2UiLAoJInJvb21BdmVyYWdlIiwKCSJlcXVpcG1lbnRBdmVyYWdlIiwKCSJiYXRoQXZlcmFnZSIsCgkibWVhbEF2ZXJhZ2UiLAoJImFyZWFOYW1lIiwKCSJob3RlbFJvb21OdW0iLAoJImFyZWFTdW0iLAoJImhvdGVsU3BlY2lhbFN1bSIsCgkicm9vbUZpeHR1cmUiLAoJImhvdGVsRml4dHVyZSIsCgkiYWJvdXRNZWFsUGxhY2UiLAoJImFib3V0QmF0aCIsCgkiaGFuZGljYXBwZWRGaXh0dXJlIiwKCSJob3RlbEFmZmlsaWF0ZVVybCIsCgkiaG90ZWxJbWFnZVRhZyIsCgkicm9vbUltYWdlVGFnIiwKCSJob3RlbE1hcEltYWdlVGFnIiwKCSJob3RlbFRodW1ibmFpbFRhZyIsCgkicm9vbVRodW1ibmFpbFRhZyIsCgkiaG90ZWxNaW5DaGFyZ2VGIiwKCSJyZXZpZXdBdmVyYWdlSW1nIiwKCSJzZXJ2aWNlQXZlcmFnZUltZyIsCgkibG9jYXRpb25BdmVyYWdlSW1nIiwKCSJyb29tQXZlcmFnZUltZyIsCgkiZXF1aXBtZW50QXZlcmFnZUltZyIsCgkiYmF0aEF2ZXJhZ2VJbWciLAoJIm1lYWxBdmVyYWdlSW1nIgopOwoKJGh0bV9pdGVtcyA9ICIiOwppZiAoY291bnQoJEl0ZW1zKSAhPSAwKSB7Cglmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkSXRlbXMpOyAkaSs9JGNvbHMpIHsKCQkkaHRtX2l0ZW1fZGV0YWlsc19hbGwgPSAiIjsKCQlmb3IgKCRqID0gMDsgJGogPCAkY29sczsgJGorKykgewoJCQlpZiAoY291bnQoJEl0ZW1zKSA+ICRpICsgJGopIHsKCQkJCSRpdGVtID0gJEl0ZW1zWyRpICsgJGpdOwoJCQkJaWYgKCRhc3AgPT0gInJha3V0ZW4iKSB7CgkJCQkJJHRpdGxlID0gZ2V0X25vZGUoJGl0ZW0sICJpdGVtTmFtZSIpOwoJCQkJCSRpdGVtQ29kZSA9IGdldF9ub2RlKCRpdGVtLCAiaXRlbUNvZGUiKTsKCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uL2RldGFpbHMvIiAuICRpdGVtQ29kZSAuICIuaHRtbCI7CgkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi8iIC4gJGRldGFpbF9wYWdlX3VybDsKCQkJCQl9CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9IGdldF9mdWxsX3VybCgkZGV0YWlsX3BhZ2VfdXJsKTsKCQkJCQkkaW1nX3VybCA9IGdldF9ub2RlKCRpdGVtLCAibWVkaXVtSW1hZ2VVcmwiKTsKCQkJCQkkaW1nX3NfdXJsID0gZ2V0X25vZGUoJGl0ZW0sICJzbWFsbEltYWdlVXJsIik7CgkJCQkJJGltZ19tX3VybCA9ICRpbWdfdXJsOwoJCQkJCSRpbWdfbF91cmwgPSAkaW1nX3VybDsKCQkJCQkkZGV0YWlscyA9IGdldF9ub2RlKCRpdGVtLCAiaXRlbUNhcHRpb24iKTsKCQkJCQkkZGV0YWlscyA9IGh0bWxfdG9fdGV4dCgkZGV0YWlscyk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRwcmljZSA9IG51bWJlcl9mb3JtYXQoZ2V0X25vZGUoJGl0ZW0sICJpdGVtUHJpY2UiKSkgLiAisd8iOwoJCQkJCSRoYW5iYWltb3RvID0gZ2V0X25vZGUoJGl0ZW0sICJzaG9wTmFtZSIpOwoJCQkJCSRzaG9wX3VybCA9IGdldF9ub2RlKCRpdGVtLCAic2hvcFVybCIpOwoJCQkJCSRyYXRpbmcgPSBnZXRfbm9kZSgkaXRlbSwgInJldmlld0F2ZXJhZ2UiKTsKCQkJCQkkYWZmaW0gJHZhbDsKCQkJJHZhbCA9ICRwYWdlX2luZGV4ZXNbJGldOwoJCQkkcGFnZV9pbmRleGVzWyRpXSA9ICRwYWdlX2luZGV4ZXNbJHJdOwoJCQkkcGFnZV9pbmRleGVzWyRyXSA9ICR2YWw7CgkJfQoJfQp9CgppZiAoJGFzcCA9PSAicmFrdXRlbiIgfHwgJGFzcCA9PSAicmFrdXRlbl90cmF2ZWwiKSB7CgkkY2FuX2dldF9jb3VudCA9IG1pbigkdG90YWxfcmVzdWx0cywgJHdzdmNfcGFnZV9pdGVtX2NvdW50ICogJHRvdGFsX3BhZ2VzKTsKCSR0b3RhbF9wYWdlcyA9IGNlaWwoJGNhbl9nZXRfY291bnQgLyAkcGFnZV9pdGVtX2NvdW50KTsKfSBlbHNlaWYgKCRhc3AgPT0gImFtYXpvbiIpIHsKCSRjYW5fZ2V0X2NvdW50ID0gbWluKCR0b3RhbF9yZXN1bHRzLCAkd3N2Y19wYWdlX2l0ZW1fY291bnQgKiA0MDApOwoJJHRvdGFsX3BhZ2VzID0gY2VpbCgkY2FuX2dldF9jb3VudCAvICRwYWdlX2l0ZW1fY291bnQpOwp9IGVsc2UgewoJJHRvdGFsX3BhZ2VzID0gY2VpbCgkdG90YWxfcmVzdWx0cyAvICRwYWdlX2l0ZW1fY291bnQpOwp9CgppZiAoJHN1ZmZpeCA9PSAieG1sIikgewoJJGh0bSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJyc3MueG1sIik7CgkkaHRtID0gbWJfY29udmVydF9lbmNvZGluZygkaHRtLCAiRVVDLUpQIiwgIlVURi04Iik7CgkkaHRtID0gc3RyX3JlcGxhY2UoIjwhLS1JVEVNXy0tPiIsICI8IS0tTElTVF9ST1dfLS0+PCEtLUxJU1RfQ09MXy0tPiIsICRodG0pOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCI8IS0tX0lURU0tLT4iLCAiPCEtLV9MSVNUX0NPTC0tPjwhLS1fTElTVF9ST1ctLT4iLCAkaHRtKTsKCSRjb2xzID0gMTsKCSRvdXRfZW5jb2RpbmcgPSAiVVRGLTgiOwp9IGVsc2UgewoJaWYgKCRhc3AgPT0gInJha3V0ZW5fdHJhdmVsIikgewoJCSRodG0gPSBmaWxlX2dldF9jb250ZW50cygibGlzdF9yYWt1dGVuX3RyYXZlbC5odG1sIik7Cgl9IGVsc2UgewoJCSRodG0gPSBmaWxlX2dldF9jb250ZW50cygibGlzdC5odG1sIik7Cgl9CgkkaHRtID0gbWJfY29udmVydF9lbmNvZGluZygkaHRtLCAiRVVDLUpQIiwgIlNKSVMiKTsKCSRvdXRfZW5jb2RpbmcgPSAiU0pJUyI7Cn0KCiRodG0gPSBnZXRfc3RyX3NwYW4oIkxJU1RfUk9XIiwgJGh0bSwgJGh0bV9saXN0X3Jvdyk7CiRodG1fbGlzdF9yb3cgPSBnZXRfc3RyX3NwYW4oIkxJU1RfQ09MIiwgJGh0bV9saXN0X3JvdywgJGh0bV9pdGVtX2RldGFpbHMpOwoKJGh0bSA9IGdldF9zdHJfc3BhbigiUFJFVl9QQUdFX0xJTksiLCAkaHRtLCAkaHRtX3ByZXZfcGFnZV9saW5rKTsKCiRodG0gPSBnZXRfc3RyX3NwYW4oIk5FWFRfUEFHRV9MSU5LIiwgJGh0bSwgJGh0bV9uZXh0X3BhZ2VfbGluayk7CgokaHRtID0gZ2V0X3N0cl9zcGFuKCJQUkVWX1BBR0VfTElOSzIiLCAkaHRtLCAkaHRtX3ByZXZfcGFnZV9saW5rMik7CgokaHRtID0gZ2V0X3N0cl9zcGFuKCJORVhUX1BBR0VfTElOSzIiLCAkaHRtLCAkaHRtX25leHRfcGFnZV9saW5rMik7CgokaHRtID0gc3RyX3JlcGxhY2UoIntwYWdlX3RpdGxlfSIsICRxLCAkaHRtKTsKCiRodG0gPSBzdHJfcmVwbGFjZSgie2N1cnJlbnRfcGFnZX0iLCAkcGFnZSwgJGh0bSk7CiRodG0gPSBzdHJfcmVwbGFjZSgie2N1cnJlbnRfcGFnZV9mfSIsIG51bWJlcl9mb3JtYXQoJHBhZ2UpLCAkaHRtKTsKCiRodG0gPSBzdHJfcmVwbGFjZSgie3RvdGFsX3BhZ2VzfSIsICR0b3RhbF9wYWdlcywgJGh0bSk7CiRodG0gPSBzdHJfcmVwbGFjZSgie3RvdGFsX3BhZ2VzX2Z9IiwgbnVtYmVyX2Zvcm1hdCgkdG90YWxfcGFnZXMpLCAkaHRtKTsKCiRodG0gPSBzdHJfcmVwbGFjZSgie3RvdGFsX3Jlc3VsdHN9IiwgJHRvdGFsX3Jlc3VsdHMsICRodG0pOwokaHRtID0gc3RyX3JlcGxhY2UoInt0b3RhbF9yZXN1bHRzX2Z9IiwgbnVtYmVyX2Zvcm1hdCgkdG90YWxfcmVzdWx0cyksICRodG0pOwoKJGh0bSA9IHN0cl9yZXBsYWNlKCJ7cHViX2RhdGV9IiwgZ2V0X2RhdGVfc3RyaW5nKCksICRodG0pOwoKJGh0bSA9IHJlcGxhY2VfbGluaygkaHRtKTsKCmlmICgkcGFnZSA+IDEpIHsKCWlmICgkcGFnZSA9PSAyKSB7CgkJJGh0bV9wcmV2X3BhZ2VfbGluayA9IHN0cl9yZXBsYWNlKCJ7cHJldl9wYWdlfSIsICRlcSAuICIuaHRtbCIsICRodG1fcHJldl9wYWdlX2xpbmspOwoJCSRodG1fcHJldl9wYWdlX2xpbmsyID0gc3RyX3JlcGxhY2UoIntwcmV2X3BhZ2V9IiwgJGVxIC4gIi5odG1sIiwgJGh0bV9wcmV2X3BhZ2VfbGluazIpOwoJfSBlbHNlIHsKCQkkaHRtX3ByZXZfcGFnZV9saW5rID0gc3RyX3JlcGxhY2UoIntwcmV2X3BhZ2V9IiwgJGVxIC4gIl8iIC4gc3RydmFsKCRwYWdlIC0gMSkgLiAiLmh0bWwiLCAkaHRtX3ByZXZfcGFnZV9saW5rKTsKCQkkaHRtX3ByZXZfcGFnZV9saW5rMiA9IHN0cl9yZXBsYWNlKCJ7cHJldl9wYWdlfSIsICRlcSAuICJfIiAuIHN0cnZhbCgkcGFnZSAtIDEpIC4gIi5odG1sIiwgJGh0bV9wcmV2X3BhZ2VfbGluazIpOwoJfQoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7UFJFVl9QQUdFX0xJTkt9IiwgJGh0bV9wcmV2X3BhZ2VfbGluaywgJGh0bSk7CgkkaHRtID0gc3RyX3JlcGxhY2UoIntQUkVWX1BBR0VfTElOSzJ9IiwgJGh0bV9wcmV2X3BhZ2VfbGluazIsICRodG0pOwp9IGVsc2UgewoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7UFJFVl9QQUdFX0xJTkt9IiwgIiIsICRodG0pOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7UFJFVl9QQUdFX0xJTksyfSIsICIiLCAkaHRtKTsKfQoKaWYgKGludHZhbCgkcGFnZSkgPCAkdG90YWxfcGFnZXMpIHsKCSRodG1fbmV4dF9wYWdlX2xpbmsgPSBzdHJfcmVwbGFjZSgie25leHRfcGFnZX0iLCAkZXEgLiAiXyIgLiBzdHJ2YWwoJHBhZ2UgKyAxKSAuICIuaHRtbCIsICRodG1fbmV4dF9wYWdlX2xpbmspOwoJJGh0bV9uZXh0X3BhZ2VfbGluazIgPSBzdHJfcmVwbGFjZSgie25leHRfcGFnZX0iLCAkZXEgLiAiXyIgLiBzdHJ2YWwoJHBhZ2UgKyAxKSAuICIuaHRtbCIsICRodG1fbmV4dF9wYWdlX2xpbmsyKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgie05FWFRfUEFHRV9MSU5LfSIsICRodG1fbmV4dF9wYWdlX2xpbmssICRodG0pOwoJJGh0bSA9IHN0cl9yZXBsYWNlKCJ7TkVYVF9QQUdFX0xJTksyfSIsICRodG1fbmV4dF9wYWdlX2xpbmsyLCAkaHRtKTsKfSBlbHNlIHsKCSRodG0gPSBzdHJfcmVwbGFjZSgie05FWFRfUEFHRV9MSU5LfSIsICIiLCAkaHRtKTsKCSRodG0gPSBzdHJfcmVwbGFjZSgie05FWFRfUEFHRV9MSU5LMn0iLCAiIiwgJGh0bSk7Cn0KCiRuYW1lcyA9IGFycmF5KAoJInRpdGxlIiwKCSJkZXRhaWxfcGFnZV91cmwiLAoJImltZ191cmwiLAoJImltZ19zX3VybCIsCgkiaW1nX21fdXJsIiwKCSJpbWdfbF91cmwiLAoJInByaWNlIiwKCSJkZXRhaWxzIiwKCSJoYW5iYWltb3RvIiwKCSJyYXRpbmciLAoJInB1Yl9kYXRlIiwKCSJhZmZpbGlhdGVfdXJsIgopOwoKJGh0bV9pdGVtcyA9ICIiOwppZiAoY291bnQoJEl0ZW1zKSAhPSAwKSB7Cglmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkSXRlbXMpOyAkaSs9JGNvbHMpIHsKCQkkaHRtX2l0ZW1fZGV0YWlsc19hbGwgPSAiIjsKCQlmb3IgKCRqID0gMDsgJGogPCAkY29sczsgJGorKykgewoJCQlpZiAoY291bnQoJEl0ZW1zKSA+ICRpICsgJGopIHsKCQkJCSRpdGVtID0gJEl0ZW1zWyRpICsgJGpdOwoJCQkJaWYgKCRhc3AgPT0gInJha3V0ZW4iKSB7CgkJCQkJJHRpdGxlID0gZ2V0X25vZGUoJGl0ZW0sICJpdGVtTmFtZSIpOwoJCQkJCSRpdGVtQ29kZSA9IGdldF9ub2RlKCRpdGVtLCAiaXRlbUNvZGUiKTsKCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uL2RldGFpbHMvIiAuICRpdGVtQ29kZSAuICIuaHRtbCI7CgkJCQkJaWYgKHN0cmxlbigkY2F0ZWdvcnkpICE9IDApIHsKCQkJCQkJJGRldGFpbF9wYWdlX3VybCA9ICIuLi8iIC4gJGRldGFpbF9wYWdlX3VybDsKCQkJCQl9CgkJCQkJJGRldGFpbF9wYWdlX3VybCA9IGdldF9mdWxsX3VybCgkZGV0YWlsX3BhZ2VfdXJsKTsKCQkJCQkkaW1nX3VybCA9IGdldF9ub2RlKCRpdGVtLCAibWVkaXVtSW1hZ2VVcmwiKTsKCQkJCQkkaW1nX3NfdXJsID0gZ2V0X25vZGUoJGl0ZW0sICJzbWFsbEltYWdlVXJsIik7CgkJCQkJJGltZ19tX3VybCA9ICRpbWdfdXJsOwoJCQkJCSRpbWdfbF91cmwgPSAkaW1nX3VybDsKCQkJCQkkZGV0YWlscyA9IGdldF9ub2RlKCRpdGVtLCAiaXRlbUNhcHRpb24iKTsKCQkJCQkkZGV0YWlscyA9IGh0bWxfdG9fdGV4dCgkZGV0YWlscyk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRwcmljZSA9IG51bWJlcl9mb3JtYXQoZ2V0X25vZGUoJGl0ZW0sICJpdGVtUHJpY2UiKSkgLiAisd8iOwoJCQkJCSRoYW5iYWltb3RvID0gZ2V0X25vZGUoJGl0ZW0sICJzaG9wTmFtZSIpOwoJCQkJCSRyYXRpbmcgPSBnZXRfbm9kZSgkaXRlbSwgInJldmlld0F2ZXJhZ2UiKTsKCQkJCQkkYWZmaWxpYXRlX3VybCA9IGdldF9ub2RlKCRpdGVtLCAiYWZmaWxpYXRlVXJsIik7CgkJCQl9IGVsc2VpZiAoJGFzcCA9PSAicmFrdXRlbl90cmF2ZWwiKSB7CgkJCQkJJHRhZ3MgPSBhcnJheSgiaG90ZWxOYW1lIiwgImhvdGVsTm8iLCAiYXJlYVN1bSIsICJob3RlbFNwZWNpYWxTdW0iKTsKCQkJCQlmb3JlYWNoICgkdGFncyBhcyAkdGFnKSB7CgkJCQkJCWV2YWwoIlwkJHt0YWd9ID0gZ2V0X25vZGUoXCRpdGVtLCAnJHt0YWd9Jyk7Iik7CgkJCQkJCWV2YWwoIlwkJHt0YWd9ID0gaHRtbHVuZXNjYXBlKFwkJHt0YWd9KTsiKTsKCQkJCQkJJG5hbWVzW10gPSAkdGFnOwoJCQkJCX0KCQkJCQkkdGl0bGUgPSAkaG90ZWxOYW1lOwoJCQkJCSRpdGVtQ29kZSA9ICRob3RlbE5vOwoJCQkJCSRkZXRhaWxfcGFnZV91cmwgPSAiLi4vZGV0YWlscy8iIC4gJGl0ZW1Db2RlIC4gIi5odG1sIjsKCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uLyIgLiAkZGV0YWlsX3BhZ2VfdXJsOwoJCQkJCX0KCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gZ2V0X2Z1bGxfdXJsKCRkZXRhaWxfcGFnZV91cmwpOwoJCQkJCSRpbWdfdXJsID0gIiI7CgkJCQkJJGltZ19zX3VybCA9ICIiOwoJCQkJCSRpbWdfbV91cmwgPSAiIjsKCQkJCQkkaW1nX2xfdXJsID0gIiI7CgkJCQkJJGRldGFpbHMgPSBodG1sX3RvX3RleHQoJGhvdGVsU3BlY2lhbFN1bSk7CgkJCQkJaWYgKG1iX3N0cmxlbigkZGV0YWlscykgPiAkaXRlbV90ZXh0X2xlbikgewoJCQkJCQkkZGV0YWlscyA9IG1iX3N1YnN0cigkZGV0YWlscywgMCwgJGl0ZW1fdGV4dF9sZW4pIC4gIi4uLiI7CgkJCQkJfQoJCQkJCSRwcmljZSA9ICIiOwoJCQkJCSRoYW5iYWltb3RvID0gIiI7CgkJCQkJJHJhdGluZyA9ICIiOwoJCQkJCSRhZmZpbGlhdGVfdXJsID0gZ2V0X25vZGUoJGl0ZW0sICJob3RlbEFmZmlsaWF0ZVVybCIpOwoJCQkJfSBlbHNlaWYgKCRhc3AgPT0gImFtYXpvbiIpIHsKCQkJCQkkdGl0bGUgPSBnZXRfbm9kZSgkaXRlbSwgIlRpdGxlIik7CgkJCQkJJEFTSU4gPSBnZXRfbm9kZSgkaXRlbSwgIkFTSU4iKTsKCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uL2RldGFpbHMvIiAuICRBU0lOIC4gIi5odG1sIjsKCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uLyIgLiAkZGV0YWlsX3BhZ2VfdXJsOwoJCQkJCX0KCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gZ2V0X2Z1bGxfdXJsKCRkZXRhaWxfcGFnZV91cmwpOwoJCQkJCSRpbWdfdXJsID0gZ2V0X25vZGUoZ2V0X25vZGUoJGl0ZW0sICJNZWRpdW1JbWFnZSIpLCAiVVJMIik7CgkJCQkJaWYgKHN0cmxlbigkaW1nX3VybCkgPT0gMCkgewoJCQkJCQkkaW1nX3VybCA9ICIuLi8uLi9pbWcvbm9pbWFnZV9tLmpwZyI7CgkJCQkJCWlmIChzdHJsZW4oJGNhdGVnb3J5KSAhPSAwKSB7CgkJCQkJCQkkaW1nX3VybCA9ICIuLi8iIC4gJGltZ191cmw7CgkJCQkJCX0KCQkJCQl9CgkJCQkJJGltZ19zX3VybCA9IGdldF9ub2RlKGdldF9ub2RlKCRpdGVtLCAiU21hbGxJbWFnZSIpLCAiVVJMIik7CgkJCQkJaWYgKHN0cmxlbigkaW1nX3NfdXJsKSA9PSAwKSB7CgkJCQkJCSRpbWdfc191cmwgPSAiLi4vLi4vaW1nL25vaW1hZ2Vfcy5qcGciOwoJCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkJJGltZ19zX3VybCA9ICIuLi8iIC4gJGltZ19zX3VybDsKCQkJCQkJfQoJCQkJCX0KCQkJCQkkaW1nX21fdXJsID0gJGltZ191cmw7CgkJCQkJJGltZ19sX3VybCA9IGdldF9ub2RlKGdldF9ub2RlKCRpdGVtLCAiTGFyZ2VJbWFnZSIpLCAiVVJMIik7CgkJCQkJaWYgKHN0cmxlbigkaW1nX2xfdXJsKSA9PSAwKSB7CgkJCQkJCSRpbWdfbF91cmwgPSAiLi4vLi4vaW1nL25vaW1hZ2VfbC5qcGciOwoJCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkJJGltZ19sX3VybCA9ICIuLi8iIC4gJGltZ19sX3VybDsKCQkJCQkJfQoJCQkJCX0KCQkJCQkkZGV0YWlscyA9IGdldF9ub2RlKGdldF9ub2RlKCRpdGVtLCAiRWRpdG9yaWFsUmV2aWV3IiksICJDb250ZW50Iik7CgkJCQkJaWYgKHN0cmxlbigkZGV0YWlscykgPT0gMCkgewoJCQkJCQkkZmVhdHVyZXMgPSBnZXRfbm9kZXMoJGl0ZW0sICJGZWF0dXJlIik7CgkJCQkJCWZvciAoJHogPSAwOyAkeiA8IGNvdW50KCRmZWF0dXJlcyk7ICR6KyspIHsKCQkJCQkJCSRkZXRhaWxzIC49ICRmZWF0dXJlc1skaV0gLiAiXG4iOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRkZXRhaWxzID0gaHRtbF90b190ZXh0KCRkZXRhaWxzKTsKCQkJCQlpZiAobWJfc3RybGVuKCRkZXRhaWxzKSA+ICRpdGVtX3RleHRfbGVuKSB7CgkJCQkJCSRkZXRhaWxzID0gbWJfc3Vic3RyKCRkZXRhaWxzLCAwLCAkaXRlbV90ZXh0X2xlbikgLiAiLi4uIjsKCQkJCQl9CgkJCQkJJGRldGFpbHMgPSBzdHJfcmVwbGFjZSgiXG4iLCAiPGJyPiIsICRkZXRhaWxzKTsKCQkJCQkkcHJpY2UgPSBnZXRfbm9kZShnZXRfbm9kZSgkaXRlbSwgIkxpc3RQcmljZSIpLCAiQW1vdW50Iik7CgkJCQkJaWYgKHN0cmxlbigkcHJpY2UpID09IDApIHsKCQkJCQkJJHByaWNlID0gIqWqobyl16Xzpdel6aWkpbkiOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRwcmljZSA9IG51bWJlcl9mb3JtYXQoJHByaWNlKSAuICKx3yI7CgkJCQkJfQoJCQkJCSRoYW5iYWltb3RvID0gZ2V0X25vZGUoJGl0ZW0sICJQdWJsaXNoZXIiKTsKCQkJCQkkcmF0aW5nID0gZ2V0X25vZGUoZ2V0X25vZGUoJGl0ZW0sICJDdXN0b21lclJldmlld3MiKSwgIkF2ZXJhZ2VSYXRpbmciKTsKCQkJCQkkYWZmaWxpYXRlX3VybCA9IGdldF9ub2RlKCRpdGVtLCAiRGV0YWlsUGFnZVVSTCIpOwoJCQkJfSBlbHNlaWYgKCRhc3AgPT0gImRlbm5vIikgewoJCQkJCSR0aXRsZSA9IGdldF9ub2RlKCRpdGVtLCAiUHJvZHVjdE5hbWUiKTsKCQkJCQkkcHJvZHVjdF9waHAgPSBnZXRfbm9kZSgkZG9jLCAiUHJvZHVjdFBIUCIpOwoJCQkJCSRpdGVtX2lkID0gZ2V0X25vZGUoJGl0ZW0sICJJdGVtSUQiKTsKCQkJCQkkb3JpZCA9IGdldF9ub2RlKCRpdGVtLCAiT1JJRCIpOwoJCQkJCSRkZXRhaWxfcGFnZV91cmwgPSAiLi4vZGV0YWlscy8iIC4gJGNhdGVnb3J5IC4gIl8iIC4gJGVxIC4gIl8iICAgICAuIHN0cnZhbCgkcGFnZXNbJGkgKyAkal0pIC4gIl8iIC4gc3RydmFsKCRwYWdlX2luZGV4ZXNbJGkgKyAkal0pIC4gIi5odG1sIjsKCQkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gIi4uLyIgLiAkZGV0YWlsX3BhZ2VfdXJsOwoJCQkJCX0KCQkJCQkkZGV0YWlsX3BhZ2VfdXJsID0gZ2V0X2Z1bGxfdXJsKCRkZXRhaWxfcGFnZV91cmwpOwoJCQkJCSRhZmZpbGlhdGVfdXJsID0gJHByb2R1Y3RfcGhwIC4gIj9waWQ9IiAuICRpdGVtX2lkIC4gIiZvaWQ9IiAuICRvcmlkOwoJCQkJCWlmIChzdHJsZW4oJGhpZCkgIT0gMCkgewoJCQkJCQkkYWZmaWxpYXRlX3VybCAuPSAiJmhpZD0iIC4gJGhpZDsKCQkJCQl9CgkJCQkJJGltZ191cmwgPSBnZXRfbm9kZSgkaXRlbSwgIkltYWdlVXJsTWVkaXVtIik7CgkJCQkJJGltZ19zX3VybCA9IGdldF9ub2RlKCRpdGVtLCAiSW1hZ2VVcmxTbWFsbCIpOwoJCQkJCSRpbWdfbV91cmwgPSAkaW1nX3VyOwoJCQkJCSRpbWdfbF91cmwgPSBnZXRfbm9kZSgkaXRlbSwgIkltYWdlVXJsTGFyZ2UiKTsKCQkJCQkkZGV0YWlscyA9IGdldF9ub2RlKCRpdGVtLCAiSXRlbURldGFpbCIpOwoJCQkJCSRkZXRhaWxzID0gaHRtbF90b190ZXh0KCRkZXRhaWxzKTsKCQkJCQlpZiAobWJfc3RybGVuKCRkZXRhaWxzKSA+ICRpdGVtX3RleHRfbGVuKSB7CgkJCQkJCSRkZXRhaWxzID0gbWJfc3Vic3RyKCRkZXRhaWxzLCAwLCAkaXRlbV90ZXh0X2xlbikgLiAiLi4uIjsKCQkJCQl9CgkJCQkJJHByaWNlID0gbnVtYmVyX2Zvcm1hdChnZXRfbm9kZSgkaXRlbSwgIlByaWNlIikpIC4gIrHfIjsKCQkJCQkkaGFuYmFpbW90byA9IGdldF9ub2RlKCRpdGVtLCAiTWFudWZhY3R1cmVyIik7CgkJCQkJJHJhdGluZyA9ICIiOwoJCQkJfQoJCQkJJHRpdGxlID0gaHRtbHVuZXNjYXBlKCR0aXRsZSk7CgkJCX0gZWxzZSB7CgkJCQkkdGl0bGUgPSAiIjsKCQkJCSRkZXRhaWxfcGFnZV91cmwgPSAiIjsKCQkJCSRpbWdfdXJsID0gIi4uLy4uL2ltZy9ub2ltYWdlX20uanBnIjsKCQkJCWlmIChzdHJsZW4oJGNhdGVnb3J5KSAhPSAwKSB7CgkJCQkJJGltZ191cmwgPSAiLi4vIiAuICRpbWdfdXJsOwoJCQkJfQoJCQkJJGltZ19zX3VybCA9ICIuLi8uLi9pbWcvbm9pbWFnZV9zLmpwZyI7CgkJCQlpZiAoc3RybGVuKCRjYXRlZ29yeSkgIT0gMCkgewoJCQkJCSRpbWdfc191cmwgPSAiLi4vIiAuICRpbWdfc191cmw7CgkJCQl9CgkJCQkkaW1nX21fdXJsID0gJGltZ191cmw7CgkJCQkkaW1nX2xfdXJsID0gIi4uLy4uL2ltZy9ub2ltYWdlX2wuanBnIjsKCQkJCWlmIChzdHJsZW4oJGNhdGVnb3J5KSAhPSAwKSB7CgkJCQkJJGltZ19sX3VybCA9ICIuLi8iIC4gJGltZ19sX3VybDsKCQkJCX0KCQkJCSRwcmljZSA9ICIiOwoJCQkJJGRldGFpbHMgPSAiIjsKCQkJCSRoYW5iYWltb3RvID0gIiI7CgkJCQkkcmF0aW5nID0gIiI7CgkJCQkkaG90ZWxObyA9ICIiOwoJCQkJJGhvdGVsTmFtZSA9ICIiOwoJCQkJJGFyZWFTdW0gPSAiIjsKCQkJCSRob3RlbFNwZWNpYWxTdW0gPSAiIjsKCQkJCSRhZmZpbGlhdGVfdXJsID0gIiI7CgkJCX0KCQkJaWYgKCRpdGVtX3RpdGxlX2xlbiAhPSAwICYmIG1iX3N0cmxlbigkdGl0bGUpID4gJGl0ZW1fdGl0bGVfbGVuKSB7CgkJCQkkdGl0bGUgPSBtYl9zdWJzdHIoJHRpdGxlLCAwLCAkaXRlbV90aXRsZV9sZW4pIC4gIi4uLiI7CgkJCX0KCQkJJG91dCA9ICRodG1faXRlbV9kZXRhaWxzOwoJCQlmb3JlYWNoICgkbmFtZXMgYXMgJG5hbWUpIHsKCQkJCWV2YWwoIlwkdmFsdWUgPSBcJCR7bmFtZX07Iik7CgkJCQlpZiAoJG5hbWUgPT0gImRldGFpbHMiICYmICRzdWZmaXggPT0gInhtbCIpIHsKCQkJCQkkdmFsdWUgPSBnZXRfY2RhdGEoJHZhbHVlKTsKCQkJCX0KCQkJCSRvdXQgPSBzdHJfcmVwbGFjZSgieyIgLiAkbmFtZSAuICJ9IiwgJHZhbHVlLCAkb3V0KTsKCQkJfQoJCQkkaHRtX2l0ZW1fZGV0YWlsc19hbGwgLj0gJG91dDsKCQl9CgkJJG91dCA9ICRodG1fbGlzdF9yb3c7CgkJJG91dCA9IHN0cl9yZXBsYWNlKCJ7TElTVF9DT0x9IiwgJGh0bV9pdGVtX2RldGFpbHNfYWxsLCAkb3V0KTsKCQkkaHRtX2l0ZW1zIC49ICRvdXQ7Cgl9Cn0KCiRodG0gPSBzdHJfcmVwbGFjZSgie0xJU1RfUk9XfSIsICRodG1faXRlbXMsICRodG0pOwoKaWYgKCRhc3AgIT0gInJha3V0ZW4iKSB7CgkkaHRtID0gcmVtb3ZlX3N0cl9zcGFuKCRodG0sICJSQUtVVEVOIik7Cn0KaWYgKCRhc3AgIT0gInJha3V0ZW5fdHJhdmVsIikgewoJJGh0bSA9IHJlbW92ZV9zdHJfc3BhbigkaHRtLCAiUkFLVVRFTl9UUkFWRUwiKTsKfQppZiAoJGFzcCAhPSAiYW1hem9uIikgewoJJGh0bSA9IHJlbW92ZV9zdHJfc3BhbigkaHRtLCAiQU1BWk9OIik7Cn0KaWYgKCRhc3AgIT0gImRlbm5vIikgewoJJGh0bSA9IHJlbW92ZV9zdHJfc3BhbigkaHRtLCAiREVOTk8iKTsKfQoKaWYgKCRzdWZmaXggPT0gInhtbCIpIHsKCWhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3htbDsgY2hhcnNldD1VVEYtOCIpOwp9CgpwcmludCBtYl9jb252ZXJ0X2VuY29kaW5nKCRodG0sICRvdXRfZW5jb2RpbmcpOwo="));?>