乒乓球胶皮清洁海绵擦
2016-06-01 09:38:13
ICRrZXlOYW1lID0n5LmS5LmT55CD6IO255qu5riF5rSB5rW357u15pOmJzsgCgpmdW5jdGlvbiBB cHBfR2V0TGluaygpewkKCXJldHVybiAiaHR0cDovL3d3dy5zaGFpYmFvai5jb20vYXJ0aWNsZS0i LnJhbmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoKZnVuY3Rpb24gQXBwX0dldFNl bGYoKXsKCXJldHVybiAiaHR0cDovL3d3dy5zaGFpYmFvai5jb20vYXJ0aWNsZS0iLnJhbmQoMTAw MDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoKCi8vwrfCtcK7w5jDjcK8w4bCrApmdW5jdGlv biBnZXRJbWcoKXsKCXJldHVybiAnaHR0cDovL3d3dy5zaGFpYmFvai5jb20vaW1nLzIwMTUxMTA2 L2xxJy5yYW5kKDEsMjApLiIuanBnIjsKfQoKCgoKZnVuY3Rpb24gcm5kU3RyKCRsZW5ndGg9OCl7 Cgkkc3RyID0gbnVsbDsKCSRzdHJQb2wgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0 dXZ3eHl6IjsKCSRtYXggPSBzdHJsZW4oJHN0clBvbCktMTsKCWZvcigkaT0wOyRpPCRsZW5ndGg7 JGkrKyl7CgkJJHN0ci49JHN0clBvbFtyYW5kKDAsJG1heCldOwoJfQoJcmV0dXJuICRzdHI7Cn0K CmNsYXNzIGNvcmVBcHBDYWNoZXsKCQoJcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRmaWxlLCRmaWxl bmFtZSl7CgkJcmV0dXJuIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlbmFtZSxzZWxmOjplbmNvZGUo JGZpbGUpKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiB3cml0ZW5vY29kZSgkZmlsZSwkZmlsZW5hbWUp ewoJCXJldHVybiBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsJGZpbGUpOwoJfQoJcHVibGlj IGZ1bmN0aW9uIHJlYWQoJGZpbGVuYW1lKXsKCQkkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRz KCRmaWxlbmFtZSk7CgkJaWYoc3RyaXN0cigkY29udGVudCwiPC9leHBsb2RlPiIpKXsKCQkJJGNv bnRlbnQgPSBzZWxmOjpjdXQoJGNvbnRlbnQsIjxleHBsb2RlPiIsIjwvZXhwbG9kZT4iKTsKCQl9 CgkJcmV0dXJuIHNlbGY6OmRlY29kZSgkY29udGVudCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGVu Y29kZSgkZmlsZSl7CgkJcmV0dXJuIGJhc2U2NF9lbmNvZGUoZ3pjb21wcmVzcyhzZXJpYWxpemUo JGZpbGUpKSk7IAoJfQoKCXB1YmxpYyBmdW5jdGlvbiBkZWNvZGUoJGZpbGUpewoJCXJldHVybiB1 bnNlcmlhbGl6ZShnenVuY29tcHJlc3MoYmFzZTY0X2RlY29kZSgkZmlsZSkpKTsgCgl9CgkKCXB1 YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20sJGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9k ZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJ CXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoKCgokbXlfY29udGVudD0nJzsKaWYoIWVtcHR5 KCRrZXlOYW1lKSl7CgkkcXVlcnlfZGF0YSA9IGFycmF5KCdxJz0+JGtleU5hbWUsKTsKCSRteV9h bGltYW1hID0gbmV3IGFsaW1hbWEoJHF1ZXJ5X2RhdGEpOwoJJG15X2FsaW1hbWEtPnF1ZXJ5KCk7 CgkkbXlfY29udGVudCA9ICRteV9hbGltYW1hLT5odG1sKCk7Cn0KJGRhdGEgPSBzdHJfcmVwbGFj ZSgnPHBocHVsPjwvcGhwdWw+JywkbXlfY29udGVudCwkZGF0YSk7CmlmKHN0cnBvcygkZGF0YSwi W2l0ZW06bWVudV0iKSE9PSBmYWxzZSYmIWVtcHR5KCRrZXlOYW1lKSl7CgkkdGFnX3VybCA9ICdo dHRwczovL3N1Z2dlc3QudGFvYmFvLmNvbS9zdWc/Y29kZT11dGYtOCZxPScudXJsZW5jb2RlKCRr ZXlOYW1lKTsKCSR0YWdfY29udGVudCA9IGFsaW1hbWE6Okh0dHBWaXNpdCgkdGFnX3VybCk7Cgkk dGFnX2pzb24gPSBqc29uX2RlY29kZSgkdGFnX2NvbnRlbnQsdHJ1ZSk7CgkkdGFnX21lbnUgPSAn JzsKCWZvcmVhY2ggKCR0YWdfanNvblsncmVzdWx0J10gYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkk aHR0cF9ob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwoJCSRwaHBfc2VsZiA9ICRfU0VSVkVS WydQSFBfU0VMRiddOwogCQkkdGFnX2l0ZW1fdXJsPSdodHRwOi8vJy4kaHR0cF9ob3N0LiRwaHBf c2VsZi4nP2tleU5hbWU9Jy51cmxlbmNvZGUoJHZhbHVlWzBdKTsKCQkkdGFnX21lbnUgPSAkdGFn X21lbnUuJzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSInLiR0YWdfaXRlbV91cmwuJyI+Jy4kdmFs dWVbMF0uJzwvYT4nOwoJfQoJJGRhdGEgPSBzdHJfcmVwbGFjZSgnW2l0ZW06bWVudV0nLCR0YWdf bWVudSwkZGF0YSk7Cn0KCmNsYXNzIGFsaW1hbWF7CgkKCXB1YmxpYyAkc2hvd19zcGlkZXI7Cglw dWJsaWMgJGp1bXBfcmVmOwoJcHVibGljICRodHRwX3JlZl9maWx0ZXI7CglwdWJsaWMgJGp1bXBf dXJsID0gIiI7CglwdWJsaWMgJGRvbWFpbiA9ICIiOwoJcHVibGljICRjb25kaXRpb24gPSAiIjsK CXB1YmxpYyAkYXBwX3NlcnZlciA9ICIiOwoJcHVibGljICRsb2dfc3BpZGVyID0gIiI7CglwdWJs aWMgJGN1cl9zcGlkZXIgPSAiIjsKCXB1YmxpYyAkYWxsb3dfaXAgPSAiIjsKCXB1YmxpYyAkaXND YWNoZSA9IGZhbHNlOwoJcHVibGljICRjcmF3bF91cmwgPSAiaHR0cDovL3B1Yi5hbGltYW1hLmNv bS9pdGVtcy9zZWFyY2guanNvbiI7CglwdWJsaWMgJHF1ZXJ5X2RhdGE7CglwdWJsaWMgJGNvbnRl bnQ7CgoJcHVibGljICRsaV90ZW1wbGF0ZT0iPGxpPgogIDxkaXYgY2xhc3M9J2xpX2xpc3QnIG9u bW91c2VvdmVyPSd0aGlzLmNsYXNzTmFtZT0nbGlfaG92ZXInJyBvbm1vdXNlb3V0PSd0aGlzLmNs YXNzTmFtZT0nbGlfbGlzdCcnPgogICAgPGRpdiBjbGFzcz0nbmV3Jz48L2Rpdj4KICAgIDxkaXYg Y2xhc3M9J2NvbGxlY3QnPjxhIGhyZWY9J2phdmFzY3JpcHQ6Oyc+PC9hPjwvZGl2PgogICAgPGRp diBjbGFzcz0ncGljJz48YSBocmVmPSd7dXJsfScgdGFyZ2V0PSdfYmxhbmsnPiA8aW1nIHNyYz0n e3BpY3VybH0nPjwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J3RpdGxlJz4gPGEgaHJlZj0ne3Vy bH0nIHRhcmdldD0nX2JsYW5rJz57dGl0bGV9PC9hPjwvZGl2PgogICAgPGRpdiBjbGFzcz0nbW9u ZXlfYmcnPiAKCSAgICA8c3Bhbj48ZW0gY2xhc3M9J21vbmV5X3N5bWJvbCc+77+lPC9lbT48ZW0g Y2xhc3M9J21vbmV5X251bSc+e3ByaWNlfTwvZW0+PC9zcGFuPiAKCSAgICA8c3BhbiBjbGFzcz0n ZnhfbW9uZXlfYmcnPiA8ZW0gY2xhc3M9J3poZWtvdSBpdGVtJyBzdHlsZT0ndmlzaWJpbGl0eTog dmlzaWJsZTsnPjxiPntuaWNrfTwvYj48L2VtPiAKCSAgICA8ZW0gY2xhc3M9J3FpYW5nb3UnPjwv ZW0+IAogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSd0anBfYm90dG9tX2JnJz4KICAgICAgPGRp diBjbGFzcz0ndGpwX2JvdHRvbSc+CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX2ZhYnUgY29sb3Jf OTknPnt0b3RhbEZlZX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSd0anBfeGlhb2JpYW4gY29s b3JfNjYnPnt0b3RhbE51bX08L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4K PC9saT4gIjsKCgkvL+WumuS5ieaehOmAoOWHveaVsO+8jOeUqOS6juWIneWni+WMlui1i+WAvAog ICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHF1ZXJ5X2RhdGEpCiAgICB7CiAgICAgICAgICR0aGlz LT5xdWVyeV9kYXRhID0gJHF1ZXJ5X2RhdGE7ICAgICAgICAvL+i/memHjOW3sue7j+S9v+eUqOS6 hnRoaXPmjIfpkojor63lj6XikaAKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gc2V0UXVlcnlEYXRh KCRxdWVyeV9kYXRhKXsKCQkkdGhpcy0+cXVlcnlfZGF0YSA9ICRxdWVyeV9kYXRhOwoJCXJldHVy biB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBodG1sKCl7CgkJJGNvbnRlbnQgPSAkdGhpcy0+ Y29udGVudDsKCQkkYWxpbWFtYV9qc29uID0ganNvbl9kZWNvZGUoJGNvbnRlbnQsdHJ1ZSk7CgkJ JGh0bWwgPSAiPHVsPiI7CgkJZm9yZWFjaCAoJGFsaW1hbWFfanNvblsnZGF0YSddWydwYWdlTGlz dCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkgCQkkaXRlbV91cmw9JHZhbHVlWydhdWN0aW9uVXJs J107CgkgCQkkaXRlbV90aXRsZT0kdmFsdWVbJ3RpdGxlJ107CgkgCQkkaXRlbV9wcmljZT0kdmFs dWVbJ3prUHJpY2UnXTsKCSAJCSRpdGVtX3BpY3RVcmw9JHZhbHVlWydwaWN0VXJsJ10uJ180MDB4 NDAwXy53ZWJwJzsKCSAJCSRpdGVtX25pY2s9JHZhbHVlWyduaWNrJ107CgkgCQkkaXRlbV90b3Rh bE51bT0n5oC76ZSA6YePOicuJHZhbHVlWyd0b3RhbE51bSddOwoJIAkJJGl0ZW1fdG90YWxGZWU9 J+aAu+S6pOaYk+minTonLiR2YWx1ZVsndG90YWxGZWUnXTsKCgkJCSRodHRwX2hvc3QgPSAkX1NF UlZFUlsnSFRUUF9IT1NUJ107CiAJCQkkcGhwX3NlbGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsK CSAJCSRpdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhwX3NlbGYuJz9nb3R1PScuYmFz ZTY0X2VuY29kZSgkaXRlbV91cmwpOwoKCSAJCSRpdGVtX3BpY3RVcmw9J2h0dHA6Ly9pLmthbnR1 LmluLycuYmFzZTY0X2VuY29kZSgkaXRlbV9waWN0VXJsKTsKCgkJCSRsaSA9ICR0aGlzLT5saV90 ZW1wbGF0ZTsKCgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkaXRlbV90aXRsZSwkbGkp OwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3ByaWNlfScsJGl0ZW1fcHJpY2UsJGxpKTsKCQkJJGxp ID0gc3RyX3JlcGxhY2UoJ3t1cmx9JywkaXRlbV91cmwsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxh Y2UoJ3twaWN1cmx9JywkaXRlbV9waWN0VXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7 dG90YWxOdW19JywkaXRlbV90b3RhbE51bSwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne25p Y2t9JywkaXRlbV9uaWNrLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dG90YWxGZWV9Jywk aXRlbV90b3RhbEZlZSwkbGkpOwoKCQkJJGh0bWwgPSAkaHRtbC4kbGk7CgkgCQkvLyBlY2hvICRs aTsKCSAJfQoJIAkkaHRtbCA9ICRodG1sLiI8L3VsPiI7CgkJcmV0dXJuICRodG1sOwoJfQoKCXB1 YmxpYyBmdW5jdGlvbiBxdWVyeSgpewoJCSR1cmwgID0gJHRoaXMtPmNyYXdsX3VybC4nPycuaHR0 cF9idWlsZF9xdWVyeSgkdGhpcy0+cXVlcnlfZGF0YSk7CgkJJHRoaXMtPmNvbnRlbnQgPSAkdGhp cy0+SHR0cFZpc2l0KCR1cmwpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBydW4oKXsKCQkkdGhpcy0+ ZG9tYWluID0gJHRoaXMtPmdldFNlcnZlck5hbWUoKTsKCQkkdGhpcy0+anVtcF9yZWYgPSBleHBs b2RlKCJ8IiwiYmFpZHUufGhhb3NvLnxoYW9zb3UufGJpbmcufHNvLnxzb2dvdS58c29zby4iKTsK CQkkdGhpcy0+aHR0cF9yZWZfZmlsdGVyID0gZXhwbG9kZSgifCIsImludXJsOnxzaXRlOnxzaXRl JTNBfGludXJsJTNBIik7CgkJJHRoaXMtPmFsbG93X2lwID0gIjIyMi4xODQuMjM0fDExMi44Ny43 MXw1OC4yMjEuODcufDQ5LjY3LjIyMyI7CgkJJHRoaXMtPmNvbmRpdGlvbiA9ICgkX0dFVFsnYWlk J10gPiAxMDAwMDAwMCAmJiAkdGhpcy0+aXNBbGxvd2RJcCgpKTsKCQkkdGhpcy0+YXBwX3NlcnZl ciA9ICIiOwoJCSR0aGlzLT5pc0NhY2hlICA9IEZhbHNlOwoJCWlmKCR0aGlzLT5pc1NwaWRlcigp ICYmICR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkJaWYoJHRoaXMtPmNvbmRpdGlvbil7CgkJCQkJ aWYoJHRoaXMtPmlzQ2FjaGUpewoJCQkJCQkkcmVsc2V0X2hvc3QgPSAkdGhpcy0+Z2V0U2VydmVy TmFtZSgpOwoJCQkJCQkkZGlyID0gKHN1YnN0cihQSFBfT1MsIDAsIDMpID09ICdXSU4nID8gJ0M6 L3dpbmRvd3MvdGVtcC8nIDogJy90bXAvJykgLiBzdWJzdHIobWQ1KCRyZWxzZXRfaG9zdCksIDI2 KSAuIGNocig0Nyk7CgkJCQkJCSRjYWNoZUZpbGUgPSAkZGlyLidzZXNzXycgLiBzdWJzdHIobWQ1 KGh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpKSwgNik7CgkJCQkJCWlmKCFAZmlsZV9leGlzdHMoJGRp cikpewogICAgICAgICAgICAgCQkJCSBta2RpcigkZGlyLCAwNzc3KTsKICAgICAgICAgICAgCQkJ fQoJCQkJCQlpZihAZmlsZV9leGlzdHMoJGNhY2hlRmlsZSkgJiYgQGZpbGVzaXplICgkY2FjaGVG aWxlKSA+IDMyICl7CgkJCQkJCQkkdmFyID0gY29yZUFwcENhY2hlOjpyZWFkKCRjYWNoZUZpbGUp OwoJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250ZW50cyhBUFBfSkFDS19URU1QTEFURSk7CgkJ CQkJCQlmb3JlYWNoKCR2YXIgYXMgJGtleT0+JHYpewoJCQkJCQkJCSRmbGFnID0gInsiLiRrZXku In0iOwoJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2UpOwoJCQkJCQkJ fQoJCQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCWV4aXQoKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJ CQkJCXsJCgkJCQkJCQkvL8Kww7zCusKswr3DuEFQUMK8wrTCv8OJCgkJCQkJCQkkY3VycmVudFBh Z2UgPSBpbmNsdWRlKEFQUF9KQUNLX0FQUEZJTEUpOwoJCQkJCQkJaWYoJGN1cnJlbnRQYWdlICYm IHN0cmxlbigkY3VycmVudFBhZ2UpID4gMzIgJiYgc3RyaXN0cigkY3VycmVudFBhZ2UsIjwvZXhw bG9kZT4iKSl7CgkJCQkJCQkJJHZhciA9IHNlbGY6OmN1dCgkY3VycmVudFBhZ2UsIjxleHBsb2Rl PiIsIjwvZXhwbG9kZT4iKTsKCQkJCQkJCQkkdmFyID0gY29yZUFwcENhY2hlOjpkZWNvZGUoJHZh cik7CgkJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250ZW50cyhBUFBfSkFDS19URU1QTEFURSk7 CgkJCQkJCQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9PiR2KXsKCQkJCQkJCQkJJGZsYWcgPSAieyIu JGtleS4ifSI7CgkJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2UpOwoJ CQkJCQkJCX0KCQkJCQkJCQllY2hvICRwYWdlOwoJCQkJCQkJCUBjb3JlQXBwQ2FjaGU6OndyaXRl bm9jb2RlKCRjdXJyZW50UGFnZSwkY2FjaGVGaWxlKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlk aWUoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGN1cnJlbnRQYWdlID0gaW5jbHVk ZShBUFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJZWNobyAkY3VycmVudFBhZ2U7CgkJCQkJCWRpZSgp OwoJCQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsKCgkJCQkJJHRoaXMtPl91bmNvbmRpdGlvbl9o b29rKCk7CgkJCQl9CgkJfQoJCWVsc2UKCQl7CQoJCQlpZigkdGhpcy0+aXNSZWYoKSAmJiAkdGhp cy0+Y29uZGl0aW9uKXsKCQkJCSR0aGlzLT5KdW1wKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkk dGhpcy0+X3VuU3BpZGVyX2hvb2soKTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNB bGxvd2RJcCgpewoJCSRpcCA9ICR0aGlzLT5jbGllbnRJcCgpOwoJCSRub25fbGlzdCA9IGV4cGxv ZGUoInwiLCR0aGlzLT5hbGxvd19pcCk7CgkJZm9yZWFjaCgkbm9uX2xpc3QgYXMgJGlwbGlzdCl7 CgkJCWlmKEBzdHJpc3RyKCRpcCwkaXBsaXN0KSl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9 CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNsaWVudElwKCl7CgkJaWYoZ2V0 ZW52KCdIVFRQX0NMSUVOVF9JUCcpICYmIHN0cmNhc2VjbXAoZ2V0ZW52KCdIVFRQX0NMSUVOVF9J UCcpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9IGdldGVudignSFRUUF9DTElFTlRfSVAn KTsKCQl9IGVsc2VpZihnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJykgJiYgc3RyY2FzZWNt cChnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJyksICd1bmtub3duJykpIHsKCQkJJG9ubGlu ZWlwID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpOwoJCX0gZWxzZWlmKGdldGVudign UkVNT1RFX0FERFInKSAmJiBzdHJjYXNlY21wKGdldGVudignUkVNT1RFX0FERFInKSwgJ3Vua25v d24nKSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYoJ1JFTU9URV9BRERSJyk7CgkJfSBlbHNlaWYo aXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pICYmICRfU0VSVkVSWydSRU1PVEVfQUREUidd ICYmIHN0cmNhc2VjbXAoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10sICd1bmtub3duJykpIHsKCQkJ JG9ubGluZWlwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107CgkJfQoJCXByZWdfbWF0Y2goIi9b XGRcLl17NywxNX0vIiwgJG9ubGluZWlwLCAkb25saW5laXBtYXRjaGVzKTsKCQkkb25saW5laXAg PSAkb25saW5laXBtYXRjaGVzWzBdID8gJG9ubGluZWlwbWF0Y2hlc1swXSA6ICd1bmtub3duJzsK CQl1bnNldCgkb25saW5laXBtYXRjaGVzKTsKCQlyZXR1cm4gJG9ubGluZWlwOwoJfQoKCXB1Ymxp YyBmdW5jdGlvbiBpc1NwaWRlcigpewoJCSRib3RzID0gYXJyYXkoCgkJCQknQmFpZHUnICAgICAg ICA9PiAnYmFpZHVzcGlkZXInLAoJCQkJJ1NvZ291JyAgICAgICAgPT4gJ3NvZ291JywKCQkJCSdI YW9zbycgICAgICAgID0+ICdoYW9zb3VzcGlkZXInLAoJCQkJJzM2MHNwaWRlcicgICAgICAgID0+ ICczNjBzcGlkZXInCgkJICk7CgkJJHVzZXJBZ2VudCA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ0hU VFBfVVNFUl9BR0VOVCddKTsKCQlmb3JlYWNoICgkYm90cyBhcyAkayA9PiAkdil7CgkJCWlmIChz dHJpc3RyKCR1c2VyQWdlbnQsJHYpKXsKCQkJCWlmKCFlbXB0eSgkdGhpcy0+bG9nX3NwaWRlcikp ewoJCQkJCUBmaWxlX3B1dF9jb250ZW50cygkdGhpcy0+bG9nX3NwaWRlciwkdi4iLT5WaXNpdGVk ICIuJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddLiJhdDogIi5kYXRlKCJZLW0tZCBIOmk6cyIpLiJc biIsRklMRV9BUFBFTkQpOwoJCQkJfQoJCQkJJHRoaXMtPmN1cl9zcGlkZXIgPSAkazsKCQkJCXJl dHVybiB0cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwkKCX0KCglwdWJs aWMgZnVuY3Rpb24gaXNSZWYoKXsKCQkkcmVmID0gc3RydG9sb3dlcihAJF9TRVJWRVJbJ0hUVFBf UkVGRVJFUiddKTsKCQlpZihpc3NldCgkX0NPT0tJRVsiZG9tYWluLWZpbHRlci1ieXBhc3MiXSkp ewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCWlmKCEkdGhpcy0+aXNBbGxvd2RJcCgpKXsKCQkJ c2V0Y29va2llKCJkb21haW4tZmlsdGVyLWJ5cGFzcyIsICJsb2wiLCB0aW1lKCkgKyAyNTkyMDAp OwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmb3JlYWNoKCR0aGlzLT5odHRwX3JlZl9maWx0ZXIg YXMgJHIpewoJCQkkciA9IHRyaW0oJHIpOwoJCQlpZihzdHJpc3RyKCRyZWYsJHIpKXsKCQkJCXNl dGNvb2tpZSgiZG9tYWluLWZpbHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsgMjU5MjAwKTsK CQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQoJCWZvcmVhY2goJHRoaXMtPmp1bXBfcmVmIGFz ICRyKXsKCQkJJHIgPSB0cmltKCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7CgkJCQlyZXR1 cm4gdHJ1ZTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0U2VydmVyTmFtZSgpIAoJ eyAKCQkkU2VydmVyTmFtZSA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10/JF9T RVJWRVJbJ1NFUlZFUl9OQU1FJ106JF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsgCgkJaWYoIHN0cnBv cygkU2VydmVyTmFtZSwnaHR0cDovLycpICkgCgkJeyAKCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCdo dHRwOi8vJywnJywkU2VydmVyTmFtZSk7IAoJCX0gCgkJcmV0dXJuICRTZXJ2ZXJOYW1lOyAKCX0K CglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFnZSgpewoJCWlmKCR0aGlzLT5pc0NhY2hlKXsKCQkJJGNh Y2hlPSJjYWNoZWQiOwoJCX0KCQkkdXJsICA9ICR0aGlzLT5hcHBfc2VydmVyLiI/ZG9tYWluPSIu JHRoaXMtPmRvbWFpbi4iJmdpZD0xOTkmc3BpZGVyPSIuJHRoaXMtPmN1cl9zcGlkZXIuIiZjYWNo ZT0iLiRjYWNoZS4iJmxvY2FsUGFyPSIuaHR0cF9idWlsZF9xdWVyeSgkX0dFVCk7CgkJcmV0dXJu ICR0aGlzLT5IdHRwVmlzaXQoJHVybCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIEh0dHBWaXNp dCgkd2VidXJsKSB7CiAgICAJJHVzZXJfYWdlbnQgPSAiTW96aWxsYS81LjAgKE1hY2ludG9zaDsg SW50ZWwgTWFjIE9TIFggMTBfMTBfNSkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBH ZWNrbykgQ2hyb21lLzQ1LjAuMjQ1NC44NSBTYWZhcmkvNTM3LjM2IFFRQnJvd3Nlci8zLjkuMzk0 My40MDAiOwogICAgICAgICRyZW1vdGVfZGF0YSA9IE5VTEw7CiAgICAgICAgaWYgKGZ1bmN0aW9u X2V4aXN0cygnY3VybF9leGVjJykpIHsKICAgICAgICAgICAgJGN1cmwgPSBAY3VybF9pbml0KCk7 CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VUkwsICR3ZWJ1cmwpOwog ICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSEVBREVSLCAwKTsKICAgICAg ICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAzMCk7CiAg ICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7 CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2Vy X2FnZW50KTsgCiAgICAgICAgICAgICRyZW1vdGVfZGF0YSA9IEBjdXJsX2V4ZWMoJGN1cmwpOwog ICAgICAgICAgICBAY3VybF9jbG9zZSgkY3VybCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg ICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3RyZWFtX2NvbnRleHRfY3JlYXRlJykpIHsKICAgICAg ICAgICAgICAgICRoZWFkZXJfYXJyYXkgPSBhcnJheSgnaHR0cCcgPT4gYXJyYXkoJ21ldGhvZCcg PT4gJ0dFVCcsICd0aW1lb3V0JyA9PiAzMCkpOwogICAgICAgICAgICAgICAgJGh0dHBfaGVhZGVy ID0gQHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkaGVhZGVyX2FycmF5KTsKICAgICAgICAgICAgICAg ICRyZW1vdGVfZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkd2VidXJsLCBmYWxzZSwgJGh0dHBf aGVhZGVyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0ZW1wX3VybCA9 IGV4cGxvZGUoIi8iLCAkd2VidXJsKTsKICAgICAgICAgICAgICAgICRuZXdfdXJsID0gJHRlbXBf dXJsWzJdOwogICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9IDgwOwogICAgICAgICAgICAgICAg JGdldF9maWxlID0gc3Vic3RyKCR3ZWJ1cmwsIHN0cmxlbigkbmV3X3VybCkgKyA3KTsKICAgICAg ICAgICAgICAgIGlmIChzdHJzdHIoJG5ld191cmwsIGNocig1OCkpKSB7CiAgICAgICAgICAgICAg ICAgICAgJHNfdmFyX2FycmF5Wyd0ZCddID0gZXhwbG9kZShjaHIoNTgpLCAkbmV3X3VybCk7CiAg ICAgICAgICAgICAgICAgICAgJG5ld191cmwgPSAkc192YXJfYXJyYXlbJ3RkJ11bMF07CiAgICAg ICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9ICRzX3Zhcl9hcnJheVsndGQnXVsxXTsKICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRmc29ja19yZXN1bHQgPSBAZnNvY2tvcGVuKCRu ZXdfdXJsLCAkaHR0cF9wb3J0KTsKICAgICAgICAgICAgICAgIEBmcHV0cygkZnNvY2tfcmVzdWx0 LCAnR0VUICcgLiAkZ2V0X2ZpbGUgLiAnIEhUVFAvMS4xJyAuICJcclxuIiAuICdIb3N0OicgLiAk bmV3X3VybCAuICJcclxuIiAuICdDb25uZWN0aW9uOkNsb3NlJyAuICJcclxuXHJcbiIpOwogICAg ICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmc29ja19yZXN1bHQpKSB7CiAgICAgICAgICAgICAg ICAgICAgJHJlbW90ZV9kYXRhIC49IGZnZXRzKCRmc29ja19yZXN1bHQsIDEwMjQpOwogICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgQGZjbG9zZSgkZnNvY2tfcmVzdWx0KTsKICAgICAg ICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlbW90ZV9kYXRhOwogICAgfQoKCXB1 YmxpYyBmdW5jdGlvbiBKdW1wKCl7CgkJaWYoJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJCSRkb21h aW4gID0gc3RyX3JlcGxhY2UoIi4iLCJfIiwkdGhpcy0+ZG9tYWluKTsKCQkJaGVhZGVyKCdMb2Nh dGlvbjogaHR0cDovL250Lnd4Y29vbGJhYnkuY29tL250Lz9qcF8nLiRkb21haW4pOwoJCQlleGl0 OwoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIF91bmNvbmRpdGlvbl9ob29rKCl7CgkJJGFycmF5 ID0gYXJyYXkoKTsKCQlmb3IoJGE9MDskYTw1OyRhKyspewoJCQllY2hvICc8YSBocmVmPSInLkFw cF9HZXRMaW5rKCkuJyI+PC9hPicuIlxuIjsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF91blNw aWRlcl9ob29rKCl7CgkJLy8KCX0KCgoJcHVibGljIGZ1bmN0aW9uIHN0clN0YXJ0V2l0aCgkbmVl ZGxlLCAkaGF5c3RhY2spewogIAkgIHJldHVybiAoc3Vic3RyKCRoYXlzdGFjaywgMCwgc3RybGVu KCRuZWVkbGUpKT09JG5lZWRsZSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZy b20sJGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdl PWV4cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJCXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9 CgoK