Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_91短视频@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICAgICAgIDkx55+t6KeG6aKRCi8vIEBob21lcGFnZSAgICAgICAgICB3bHpnLmx0ZAovLyBAdmVyc2lvbiAgICAgICAgICAgMS4zLjMKLy8gQHVwZGF0ZURlc2MgICAgICAgIOaSreaUvuaMiemSruS9v+eUqOe7n+S4gOaSreaUvuaPkuS7tijkuI3lho3mmK/kuIvovb3mlofku7YpCi8vIEBkZXNjcmlwdGlvbiAgICAgICDwn5Sl5YWN6LS555yL55+t6KeG6aKR6YeR5biB6KeG6aKR77yM5Lya5ZGY6KeG6aKRKOWmgumBh+WIsOWKoOi9veaXtuS4gOebtOm7keWxj+ivt+mHjeaWsOiuv+mXrue9keermSkKLy8gQGljb24gICAgICAgICAgICAgIGh0dHBzOi8vYmUudXhka2VsLmNvbS9zdGF0aWMvaW1hZ2VzL2luZGV4L2RtZGxvZzIucG5nCi8vIEBuYW1lc3BhY2UgICAgICAgICA5MeefreinhumikQovLyBAYXV0aG9yICAgICAgICAgICAgd3QKLy8gQG1hdGNoICAgICAgIAkgIGh0dHBzOi8vcHdhMy5kc3AwMTAuYml6LyoKLy8gQG1hdGNoICAgICAgIAkgIGh0dHBzOi8vcHdhNC5kc3AwMDQubWUvKgovLyBAbWF0Y2gJCQkgIGh0dHBzOi8vcHdhMy5kc3AwMDguY28vKgovLyBAbWF0Y2gJCQkgIGh0dHBzOi8vcHdhKi5kc3AqLiovKgovLyBAcmVxdWlyZSAgICAgICAgICAgaHR0cHM6Ly9jZG4uYm9vdGNkbi5uZXQvYWpheC9saWJzL2pxdWVyeS8zLjIuMS9qcXVlcnkubWluLmpzCi8vIEByZXF1aXJlCQkJICBodHRwczovL2xpYi5iYW9taXR1LmNvbS9obHMuanMvMC4xNS4wLWFscGhhLjIvaGxzLm1pbi5qcwovLyBAY29ubmVjdAkJCSAgcmVzZXQtemZmLm9zcy1jbi1jaGVuZ2R1LmFsaXl1bmNzLmNvbQovLyBAY29ubmVjdAkJCSAgZmMtbXAtYWYzMDcyNjgtMWI4YS00ODJhLWI3NWEtYjZlOThiMTI1NzQyLm5leHQuYnNwYXBwLmNvbQovLyBAcnVuLWF0IAkJCSAgZG9jdW1lbnQtZW5kCi8vIEBncmFudCAgICAgICAgICAgICB1bnNhZmVXaW5kb3cKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX2FkZFN0eWxlCi8vIEBncmFudCAgICAgICAgICAgICBHTV9nZXRSZXNvdXJjZVRleHQKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX2dldFZhbHVlCi8vIEBncmFudCAgICAgICAgICAgICBHTV9zZXRWYWx1ZQovLyBAZ3JhbnQgICAgICAgICAgICAgR01feG1saHR0cFJlcXVlc3QKLy8gQGNoYXJzZXQJCSAgICAgIFVURi04Ci8vIEBsaWNlbnNlICAgICAgICAgICBNSVQKLy8gPT0vVXNlclNjcmlwdD09Cgpjb25zdCBkZWNyeXB0ID0gKGZ1bmN0aW9uICgpIHsKCWZ1bmN0aW9uIG1kNXgocyx0eXBlKXsKCQljb25zdCBhc2QgPSBidG9hYTsKCQljb25zdCBzZGYgPSBhdG9iYjsKCQljb25zdCBzZCA9IEpTT04uc3RyaW5naWZ5OwoJCWNvbnN0IGFzID0gSlNPTi5wYXJzZTsKCQl0cnl7CgkJCWlmKCF0eXBlKXsKCQkJCWNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpLnNldEhvdXJzKDYsNiw2LDYpOwoJCQkJY29uc3QgZGF5ID0gbmV3IERhdGUoKS5nZXREYXRlKCk7CgkJCQljb25zdCBjb2RlID0gZGF0ZS5zdWJzdHJpbmcoMSw1KSAqIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICsnJzsKCQkJCXJldHVybiBhc2QoYXNkKHNkKHtkYXRlOiBkYXRlLGNvZGU6IGNvZGUsZGF5OiBkYXl9KSkpOwoJCQl9ZWxzZXsKCQkJCWNvbnN0IHRva2VuID0gYXMoc2RmKHNkZihzKSkpOwoJCQkJaWYoKG5ldyBEYXRlKE51bWJlcih0b2tlbi5kYXRlKSkuZ2V0VGltZSgpICsgMTAwMDAwKSA+IERhdGUubm93KCkpIHRocm93IEVycm9yKCdtZDV4IGV4cGlyZScpOwoJCQkJaWYodG9rZW4uZGF5ICE9IG5ldyBEYXRlKE51bWJlcih0b2tlbi5kYXRlKSkuZ2V0RGF0ZSgpICsgMTAwMDAwKSB0aHJvdyBFcnJvcignbWQ1eCBlcnInKTsKCQkJCWNvbnN0IGNvZGUgPSAobmV3IERhdGUoTnVtYmVyKHRva2VuLmRhdGUpKS5zZXRIb3Vycyg2LDYsNiw2KSsnJykuc3Vic3RyaW5nKDEsNSkgKiB0b2tlbi5kYXk7CgkJCQlpZihjb2RlICE9IHRva2VuLmNvZGUpIHRocm93IEVycm9yKCdtZDV4IGVycicpOwoJCQkJcmV0dXJuIHRva2VuOwoJCQl9CgkJfWNhdGNoKGUpewoJCQljb25zb2xlLmxvZygnbWQ1eCBlcnInKQoJCQlyZXR1cm4gJycKCQl9Cgl9CglmdW5jdGlvbiBnZXRNM3U4VXJsKHN1cGVyVmlwKXsKCQl0cnl7CgkJCWlmKCAhc3VwZXJWaXAuX0NPTkZJR18udXNlciB8fCAhc3VwZXJWaXAuX0NPTkZJR18udXNlci50b2tlbikgcmV0dXJuICcnCgkJCWlmKCFtZDV4KHN1cGVyVmlwLl9DT05GSUdfLnVzZXIudG9rZW4sJ2RlJykpIHRocm93IG5ldyBFcnJvcignZ2V0TTN1OFVybCBlcnInKQoJCQlyZXR1cm4gc3VwZXJWaXAuX0NPTkZJR18udmlkZW9VcmwKCQl9Y2F0Y2goZSl7CgkJCWNvbnNvbGUubG9nKCdnZXRNM3U4VXJsIGVycicpCgkJCXJldHVybiAnJwoJCX0KCX0KCXJldHVybiB7CgkJbWQ1eDogKHMsdHlwZSk9PiBtZDV4KHMsdHlwZSksCgkJZ2V0TTN1OFVybDogKHN1cGVyVmlwKSA9PiBnZXRNM3U4VXJsKHN1cGVyVmlwKQoJfQp9KSgpOwoKY29uc3QgdXRpbCA9IChmdW5jdGlvbiAoKSB7CQoJZnVuY3Rpb24gZmluZFRhcmdldEVsZW1lbnQodGFyZ2V0Q29udGFpbmVyKSB7CgkgICAgY29uc3QgYm9keSA9IHdpbmRvdy5kb2N1bWVudDsKCSAgICBsZXQgdGFiQ29udGFpbmVyOwoJICAgIGxldCB0cnlUaW1lID0gMDsKCSAgICBjb25zdCBtYXhUcnlUaW1lID0gMzA7CgkgICAgbGV0IHN0YXJ0VGltZXN0YW1wOwoJICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CgkgICAgICAgIGZ1bmN0aW9uIHRyeUZpbmRFbGVtZW50KHRpbWVzdGFtcCkgewoJICAgICAgICAgICAgaWYgKCFzdGFydFRpbWVzdGFtcCkgewoJICAgICAgICAgICAgICAgIHN0YXJ0VGltZXN0YW1wID0gdGltZXN0YW1wOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY29uc3QgZWxhcHNlZFRpbWUgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWVzdGFtcDsKCSAgICAgICAgICAgIGlmIChlbGFwc2VkVGltZSA+PSA1MDApIHsKCSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi5p+l5om+5YWD57Sg77yaIiArIHRhcmdldENvbnRhaW5lciArICLvvIznrKwiICsgdHJ5VGltZSArICLmrKEiKQoJICAgICAgICAgICAgICAgIHRhYkNvbnRhaW5lciA9IGJvZHkucXVlcnlTZWxlY3Rvcih0YXJnZXRDb250YWluZXIpCgkgICAgICAgICAgICAgICAgaWYgKHRhYkNvbnRhaW5lcikgewoJICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRhYkNvbnRhaW5lcikKCSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCsrdHJ5VGltZSA9PT0gbWF4VHJ5VGltZSkgewoJICAgICAgICAgICAgICAgICAgICByZWplY3QoKQoJICAgICAgICAgICAgICAgIH0gZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZXN0YW1wID0gdGltZXN0YW1wCgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKCF0YWJDb250YWluZXIgJiYgdHJ5VGltZSA8IG1heFRyeVRpbWUpIHsKCSAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodHJ5RmluZEVsZW1lbnQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0cnlGaW5kRWxlbWVudCk7CgkgICAgfSk7Cgl9CgkKCWZ1bmN0aW9uIGluaXRVbnNhZmVXaW5kb3coKXsKCQl1bnNhZmVXaW5kb3cucmVwID0gcmVwCgl9CgkKCWZ1bmN0aW9uIHJlcChzKXsgcmV0dXJuIHMuc3Vic3RyaW5nKDAscy5sZW5ndGgtMSl9CgkKCWZ1bmN0aW9uIHJldHVybkNoYXIocyxjaGFycyl7CgkJbGV0IG9lID0gJycKCQl0cnl7CgkJCXMuc3BsaXQoJysnKS5mb3JFYWNoKGl0ZW0gPT57CgkJCQlvZSArPSBjaGFyc1tOdW1iZXIoaXRlbSldCgkJCX0pCgkJfWNhdGNoKGUpe3JldHVybiAnJ30KCQlyZXR1cm4gb2UKCX0KCQoJZnVuY3Rpb24gc3RhcnRlZCgpewoJCWxldCBjaGFycyA9IHN1cGVyVmlwLl9DT05GSUdfLnN0cgoJCXN1cGVyVmlwLl9DT05GSUdfLm1tLmZvckVhY2goaXRlbSA9PnsKCQkJY2hhcnMgPSB1bnNhZmVXaW5kb3dbaXRlbV0oY2hhcnMpCgkJfSkKCQl3aW5kb3cuZW5kID0gJFtyZXR1cm5DaGFyKHN1cGVyVmlwLl9DT05GSUdfLnN0YXJ0W3N1cGVyVmlwLl9DT05GSUdfLnN0YXJ0Lmxlbmd0aC0xXSxjaGFycyldCgkJY29uc3Qgc3RhcnRlZHMgPSBbXQoJCWZvcihsZXQgaT0wO2k8c3VwZXJWaXAuX0NPTkZJR18uc3RhcnQubGVuZ3RoO2krKyl7CgkJCXRyeXsKCQkJCXVuc2FmZVdpbmRvd1tyZXR1cm5DaGFyKHN1cGVyVmlwLl9DT05GSUdfLnN0YXJ0W2ldLGNoYXJzKV0ocmV0dXJuQ2hhcihzdXBlclZpcC5fQ09ORklHXy5lbmRbaV0sY2hhcnMpKQoJCQl9Y2F0Y2goZSl7fQoJCX0KCQlzdXBlclZpcC5fQ09ORklHXy5zdGFydC5mb3JFYWNoKChpdGVtLGluZGV4KSA9PiB7CgkJCXRyeXsgd2luZG93W3JldHVybkNoYXIoaXRlbSxjaGFycyldKHJldHVybkNoYXIoc3VwZXJWaXAuX0NPTkZJR18uZW5kW2luZGV4XSxjaGFycykpfWNhdGNoKGUpe30KCQl9KQoJfQoJCglmdW5jdGlvbiBzaG93VGlwcyhpdGVtPXt9KXsKCQkkKCcjd3QtbWF4aW5kZXgtbWFzaycpLmNzcygnZGlzcGxheScsJ2Jsb2NrJykKCQkkKCIjd3QtdGlwcy1ib3giKS5yZW1vdmVDbGFzcygnaGlkLXNldC1ib3gnKQoJCSQoIiN3dC10aXBzLWJveCIpLmFkZENsYXNzKCdzaG93LXNldC1ib3gnKQoJCSQoJyN3dC10aXBzLWJveCAuYnRuLWJveCcpLmVtcHR5KCkKCQkkKCcjd3QtdGlwcy1ib3ggLmJ0bi1ib3gnKS5hcHBlbmQoYAoJCQk8YnV0dG9uIGNsYXNzPSdjYW5jZWwnPuWPlua2iDwvYnV0dG9uPgoJCQk8YnV0dG9uIGNsYXNzPSdzdWJtaXQnPuehruWumjwvYnV0dG9uPgoJCWApCgkJaWYoaXRlbS50aXRsZSkgJCgnI3d0LXRpcHMtYm94IC5jb250ZW50JykuaHRtbChpdGVtLnRpdGxlKQoJCWlmKGl0ZW0uZG91YnQpICQoJyN3dC10aXBzLWJveCAuYnRuLWJveCAuY2FuY2VsJykuY3NzKCdkaXNwbGF5JywnYmxvY2snKQoJCWlmKGl0ZW0uY29uZmlybSkgJCgnI3d0LXRpcHMtYm94IC5idG4tYm94IC5zdWJtaXQnKS5odG1sKGl0ZW0uY29uZmlybSkKCQkkKCcjd3QtdGlwcy1ib3ggLmJ0bi1ib3ggLnN1Ym1pdCcpLm9uKCdjbGljaycsKCk9PnsKCQkJJCgnI3d0LW1heGluZGV4LW1hc2snKS5jc3MoJ2Rpc3BsYXknLCdub25lJykKCQkJJCgiI3d0LXRpcHMtYm94IikucmVtb3ZlQ2xhc3MoJ3Nob3ctc2V0LWJveCcpCgkJCSQoIiN3dC10aXBzLWJveCIpLmFkZENsYXNzKCdoaWQtc2V0LWJveCcpCgkJCWlmKGl0ZW0uc3VjY2VzcykgaXRlbS5zdWNjZXNzKHRydWUpCgkJfSkKCQkkKCcjd3QtdGlwcy1ib3ggLmJ0bi1ib3ggLmNhbmNlbCcpLm9uKCdjbGljaycsKCk9PnsKCQkJJCgnI3d0LW1heGluZGV4LW1hc2snKS5jc3MoJ2Rpc3BsYXknLCdub25lJykKCQkJJCgiI3d0LXRpcHMtYm94IikucmVtb3ZlQ2xhc3MoJ3Nob3ctc2V0LWJveCcpCgkJCSQoIiN3dC10aXBzLWJveCIpLmFkZENsYXNzKCdoaWQtc2V0LWJveCcpCgkJCWlmKGl0ZW0uc3VjY2VzcykgaXRlbS5zdWNjZXNzKGZhbHNlKQoJCX0pCgl9CgkKCWZ1bmN0aW9uIGFkZExvZ2luKCl7CgkJaWYoJCgnI3d0LWxvZ2luLWJveCcpLmxlbmd0aCA+IDApIHJldHVybgoJCSQoJ2JvZHknKS5hcHBlbmQoYAoJCQk8ZGl2IGlkPSJ3dC1sb2dpbi1tYXNrIj48L2Rpdj4KCQkJPGRpdiBpZD0id3QtbG9naW4tYm94Ij4KCQkJCTxkaXYgY2xhc3M9ImNsb3NlIj48L2Rpdj4KCQkJCTxkaXYgY2xhc3M9InRpdGxlIj7nmbvlvZXnoIE8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImlucHV0LWJveCI+CgkJCQkJPGlucHV0IHBsYWNlaG9sZGVyPSLor7flnKjlj4rml7booYzkuZDkuK3lhY3otLnojrflj5YiLz4KCQkJCQk8ZGl2IGNsYXNzPSJsb2dpbi1idG4iPgoJCQkJCQk8YnV0dG9uPueZu+W9lTwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJ0by1pbmRleCIgc3R5bGU9ImNvbG9yOiAjMzZiNWM1O3RleHQtYWxpZ246IHJpZ2h0O21hcmdpbi1yaWdodDogMTBweDsgaGVpZ2h0OiA1MHB4O2xpbmUtaGVpZ2h0OiA1MHB4O2ZvbnQtc2l6ZTogMTBweDsiPuWOu+iOt+WPliDvvJ88L2Rpdj4KCQkJPC9kaXY+CgkJYCkKCQlHTV9hZGRTdHlsZShgCgkJCSN3dC1sb2dpbi1tYXNrewoJCQkJZGlzcGxheTogbm9uZTsKCQkJCXBvc2l0aW9uOiBmaXhlZDsKCQkJCXRvcDogMDsKCQkJCWxlZnQ6IDA7CgkJCQlyaWdodDogMDsKCQkJCWJvdHRvbTogMDsKCQkJCXotaW5kZXg6IDExMDAwOwoJCQkJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDRkOwoJCQl9CgkJCSN3dC1sb2dpbi1ib3ggewoJCQkJcG9zaXRpb246IGZpeGVkOwoJCQkJbWFyZ2luLXRvcDogMyU7CgkJCQl0b3A6IDUwJTsKCQkJCWxlZnQ6IDUwJTsKCQkJCXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7CgkJCQliYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKCQkJCXBhZGRpbmc6IDMwcHggMTBweDsKCQkJCXBhZGRpbmctYm90dG9tOiAwOwoJCQkJYm9yZGVyLXJhZGl1czogMTBweDsKCQkJCXotaW5kZXg6IDExMDEwOwoJCQl9CgkJCSN3dC1sb2dpbi1ib3ggLmNsb3NlewoJCQkJcG9zaXRpb246IGFic29sdXRlOwoJCQkJcmlnaHQ6IDBweDsKCQkJCXRvcDogMHB4OwoJCQkJd2lkdGg6IDQwcHg7CgkJCQloZWlnaHQ6IDQwcHg7CgkJCX0KCQkJI3d0LWxvZ2luLWJveCAuY2xvc2U6OmJlZm9yZSwjd3QtbG9naW4tYm94IC5jbG9zZTo6YWZ0ZXJ7CgkJCQlwb3NpdGlvbjogYWJzb2x1dGU7CgkJCQlsZWZ0OiA1MCU7CgkJCQl0b3A6IDUwJTsKCQkJCWNvbnRlbnQ6ICcnOwoJCQkJd2lkdGg6IDE2cHg7CgkJCQloZWlnaHQ6IDJweDsKCQkJCWJvcmRlci1yYWRpdXM6IDFweDsKCQkJCWJhY2tncm91bmQtY29sb3I6ICMyMjI7CgkJCQl0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpIHJvdGF0ZSg0NWRlZyk7CgkJCX0KCQkJI3d0LWxvZ2luLWJveCAuY2xvc2U6OmFmdGVyLCN3dC1zZXQtYm94IC5jbG9zZTo6YWZ0ZXJ7CgkJCQl0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpIHJvdGF0ZSgtNDVkZWcpOwoJCQl9CgkJCSN3dC1sb2dpbi1ib3ggLnRpdGxlewoJCQkJZm9udC13ZWlnaHQ6IDYwMDsKCQkJCWZvbnQtc2l6ZTogMTZweDsKCQkJCWNvbG9yOiAjM2EzYTNhOwoJCQkJdGV4dC1hbGlnbjogY2VudGVyOwoJCQkJbWFyZ2luLWJvdHRvbTogMjBweDsKCQkJfQoJCQkjd3QtbG9naW4tYm94IC5pbnB1dC1ib3h7CgkJCQlkaXNwbGF5OiBmbGV4OwoJCQkJYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKCQkJCXdpZHRoOiAyMzBweDsKCQkJCWhlaWdodDogMzVweDsKCQkJCWJvcmRlci1yYWRpdXM6IDMwcHg7CgkJCQlvdmVyZmxvdzogaGlkZGVuOwoJCQkJZm9udC1zaXplOiAxMnB4OwoJCQl9CgkJCSN3dC1sb2dpbi1ib3ggLmlucHV0LWJveCBpbnB1dHsKCQkJCXdpZHRoOiAxMDAlOwoJCQkJaGVpZ2h0OiAxMDAlOwoJCQkJcGFkZGluZy1sZWZ0OiAxNXB4OwoJCQkJYm94LXNpemluZzogYm9yZGVyLWJveDsKCQkJCW91dGxpbmU6IG5vbmU7CgkJCQlib3JkZXI6IG5vbmU7CgkJCQliYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwoJCQkJZm9udC1zaXplOiAxMHB4OwoJCQl9CgkJCSN3dC1sb2dpbi1ib3ggLmxvZ2luLWJ0bnsKCQkJCXdpZHRoOiAxMDBweDsKCQkJCXBhZGRpbmc6IDJweDsKCQkJfQoJCQkjd3QtbG9naW4tYm94IC5sb2dpbi1idG4gYnV0dG9uewoJCQkJd2lkdGg6IDEwMCU7CgkJCQloZWlnaHQ6IDEwMCU7CgkJCQlib3JkZXItcmFkaXVzOiAzMHB4OwoJCQkJYm9yZGVyOiBub25lOwoJCQkJY29sb3I6IHdoaXRlOwoJCQkJdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKCQkJCWJhY2tncm91bmQtY29sb3I6ICNlYzQwN2E7CgkJCX0KCQlgKQoJCSQoIiN3dC1sb2dpbi1tYXNrIikub24oImNsaWNrIiwgKCkgPT4gewoJCQkkKCcjd3QtbG9naW4tbWFzaycpLmNzcygnZGlzcGxheScsJ25vbmUnKQoJCQkkKCIjd3QtbG9naW4tYm94IikucmVtb3ZlQ2xhc3MoJ3Nob3ctc2V0LWJveCcpCgkJCSQoIiN3dC1sb2dpbi1ib3giKS5hZGRDbGFzcygnaGlkLXNldC1ib3gnKQoJCX0pCgkJJCgiI3d0LWxvZ2luLWJveCAuY2xvc2UiKS5vbigiY2xpY2siLCAoKSA9PiB7CgkJCSQoJyN3dC1sb2dpbi1tYXNrJykuY3NzKCdkaXNwbGF5Jywnbm9uZScpCgkJCSQoIiN3dC1sb2dpbi1ib3giKS5yZW1vdmVDbGFzcygnc2hvdy1zZXQtYm94JykKCQkJJCgiI3d0LWxvZ2luLWJveCIpLmFkZENsYXNzKCdoaWQtc2V0LWJveCcpCgkJfSkKCQkkKCIjd3QtbG9naW4tYm94IC50by1pbmRleCIpLm9uKCJjbGljayIsICgpID0+IHsKCQkJd2luZG93Lm9wZW4oc3VwZXJWaXAuX0NPTkZJR18uaG9tZVBhZ2UpCgkJfSkKCQkkKCIjd3QtbG9naW4tYm94IC5sb2dpbi1idG4gYnV0dG9uIikub24oImNsaWNrIiwgKCkgPT4gewoJCQlpZighd3RfaW5pdF9jb2RlKXsgc2hvd1RpcHMoeyB0aXRsZTogX0NPTkZJR18uaW5pdEZhaWxNc2d9KTtyZXR1cm59CgkJCSQoJyN3dC1sb2FkaW5nLWJveCcpLmNzcygnZGlzcGxheScsJ2Jsb2NrJykKCQkJJCgiI3d0LWxvZ2luLWJveCAubG9naW4tYnRuIGJ1dHRvbiIpLmFkZENsYXNzKCdidG4tYW5pbWEnKQoJCQlzZXRUaW1lb3V0KCgpPT57JCgiI3d0LWxvZ2luLWJveCAubG9naW4tYnRuIGJ1dHRvbiIpLnJlbW92ZUNsYXNzKCdidG4tYW5pbWEnKX0sNTAwKQoJCQljb25zdCBwd2QgPSAkKCIjd3QtbG9naW4tYm94IGlucHV0IikudmFsKCkKCQkJY29uc3QgbWQ1YyA9IG1kNXgoKQoJCQljb25zdCBkbWQ1ID0gbWQ1eChtZDVjLCdkZScpCgkJCWlmKCFwd2QgfHwgcHdkICE9IGRtZDUuY29kZSl7CgkJCQlzZXRUaW1lb3V0KCgpPT57CgkJCQkJJCgnI3d0LWxvYWRpbmctYm94JykuY3NzKCdkaXNwbGF5Jywnbm9uZScpCgkJCQkJdXRpbC5zaG93VGlwcyh7IHRpdGxlOiAn55m75b2V56CB6ZSZ6K+vJ30pCgkJCQl9LDI1MDApCgkJCQlyZXR1cm4KCQkJfQoJCQkkKCcjd3QtbG9hZGluZy1ib3gnKS5jc3MoJ2Rpc3BsYXknLCdibG9jaycpCgkJCXNldFRpbWVvdXQoKCk9PnsKCQkJCSQoJyN3dC1sb2FkaW5nLWJveCcpLmNzcygnZGlzcGxheScsJ25vbmUnKQoJCQkJY29uc3QgcmVzID0gewoJCQkJCWF2YXRhcjogJ2h0dHBzOi8vbXAtYWYzMDcyNjgtMWI4YS00ODJhLWI3NWEtYjZlOThiMTI1NzQyLmNkbi5ic3BhcHAuY29tL3N5c3RlbS9sb2dvL2xvZ29fd2hpdGUxLnBuZycsCgkJCQkJbG9naW5fZGF0ZTogbmV3IERhdGUoKS5zZXRIb3VycygwLDAsMCwwKSwKCQkJCQl0b2tlbjogbWQ1YwoJCQkJfQoJCQkJJCgiI3d0LW15IGltZyIpLmFkZENsYXNzKCdtYXJnaW4tbGVmdCcpCgkJCQkkKCcjd3QtbXkgaW1nJykuYXR0cignc3JjJyxyZXMuYXZhdGFyKQoJCQkJJCgnI3d0LWxvZ2luLW1hc2snKS5jc3MoJ2Rpc3BsYXknLCdub25lJykKCQkJCSQoIiN3dC1sb2dpbi1ib3giKS5yZW1vdmVDbGFzcygnc2hvdy1zZXQtYm94JykKCQkJCSQoIiN3dC1sb2dpbi1ib3giKS5hZGRDbGFzcygnaGlkLXNldC1ib3gnKQoJCQkJc3VwZXJWaXAuX0NPTkZJR18udXNlciA9IHJlcwoJCQkJR01fc2V0VmFsdWUoJ3d0XzkxdmlkZW9fdXNlcicscmVzKQoJCQl9LDI1MDApCgkJfSkKCX0KCQoJZnVuY3Rpb24gY2hlY2tVcGRhdGUoKXsKCQljb25zdCB1cGRhdGVkVmVyc2lvbkRhdGUgPSAgR01fZ2V0VmFsdWUoJzkxdmlkZW9fdXBkYXRlZF92ZXJzaW9uX2RhdGUnLDApCgkJaWYodXBkYXRlZFZlcnNpb25EYXRlID09IG5ldyBEYXRlKCkuc2V0SG91cnMoMCwwLDAsMCkpIHJldHVybgoJCWNvbnN0IHNjcmlwdCA9IEdNX2luZm8KCQlpZighc2NyaXB0ICkgcmV0dXJuCgkJdHJ5ewoJCQljb25zdCB3dF85MXZpZGVvX2ZpcnN0X3VzZSA9IEdNX2dldFZhbHVlKCd3dF85MXZpZGVvX2ZpcnN0X3VzZScsJycpCgkJCSQuZ2V0KCdodHRwczovL2ZjLW1wLWFmMzA3MjY4LTFiOGEtNDgyYS1iNzVhLWI2ZTk4YjEyNTc0Mi5uZXh0LmJzcGFwcC5jb20vY29tbW9uL3VwZGF0ZUNoZWNrJyx7CgkJCQluYW1lOiAnOTF2aWRlbycsCgkJCQl2ZXJzaW9uOiBzY3JpcHQuc2NyaXB0LnZlcnNpb24sCgkJCQl1c2VfZGF0ZTogKHd0XzkxdmlkZW9fZmlyc3RfdXNlP3d0XzkxdmlkZW9fZmlyc3RfdXNlOiBEYXRlLm5vdygpICsgKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDg5OTk5OSArIDEwMDAwMCkgKyAnJykpCgkJCX0sZnVuY3Rpb24ocmVzKXsKCQkJCUdNX3NldFZhbHVlKCc5MXZpZGVvX3VwZGF0ZWRfdmVyc2lvbl9kYXRlJyxuZXcgRGF0ZSgpLnNldEhvdXJzKDAsMCwwLDApKQoJCQkJaWYocmVzLmNvZGUgIT0gMCkgcmV0dXJuCgkJCQlpZigocmVzLnVwZGF0ZV9tc2cgJiYgcmVzLmlzX3VwZGF0ZSkgfHwgcmVzLm1zZyB8fCByZXMubm90aWZ5X2FsbCl7CgkJCQkJbGV0IG1zZyA9ICcnCgkJCQkJaWYocmVzLm5vdGlmeV9hbGwpIG1zZyArPSAnPHA+4oCiICcgKyByZXMubm90aWZ5X2FsbCArJzxwLz4nCgkJCQkJaWYocmVzLm1zZykgbXNnICs9ICc8cD7igKIgJyArIHJlcy5tc2cgKyc8cC8+JwoJCQkJCWlmKHJlcy5pc191cGRhdGUgJiYgcmVzLnVwZGF0ZV9tc2cpIG1zZyArPSByZXMudXBkYXRlX21zZwoJCQkJCXNob3dOb3RpZnkoeyB0aXRsZTogbXNnLHN1Y2Nlc3M6ICgpPT4gewoJCQkJCQlpZihyZXMpewoJCQkJCQkJc3VwZXJWaXAuX0NPTkZJR18uc2hvd05vdGlmeSA9IGZhbHNlCgkJCQkJCX0KCQkJCQl9fSkKCQkJCQlpZihtc2cgJiYgbXNnLnJlcGxhY2UoL1xzKi9nLCIiKS5sZW5ndGggPiAwKSBHTV9zZXRWYWx1ZSgnOTF2aWRlb19ub3RpZnknLHsgZGF0ZTogbmV3IERhdGUoKS5zZXRIb3VycygwLDAsMCwwKSwgbXNnfSkKCQkJCX0KCQkJfSkKCQl9Y2F0Y2goZSl7fQoJfQoJCglmdW5jdGlvbiBzaG93Tm90aWZ5KGl0ZW09e30pewoJCSQoIiN3dC1ub3RpZnktYm94IikucmVtb3ZlQ2xhc3MoJ2hpZC1ub3RpZnktYm94JykKCQkkKCIjd3Qtbm90aWZ5LWJveCIpLmFkZENsYXNzKCdzaG93LW5vdGlmeS1ib3gnKQoJCWxldCB2ZXJzaW9uID0gR01faW5mbwoJCXZlcnNpb24gPSB2ZXJzaW9uP3ZlcnNpb24uc2NyaXB0LnZlcnNpb246ICcnCgkJY29uc3QgdiA9IC/lvZPliY3niYjmnKwgKFxkXC5cZFwuXGRcLnswLDF9XGR7MCwyfSkvLmV4ZWMoaXRlbS50aXRsZSkKCQlpZih2KSBpdGVtLnRpdGxlID0gaXRlbS50aXRsZS5yZXBsYWNlQWxsKHZbMV0sdmVyc2lvbikKCQlpZihpdGVtLnRpdGxlKSAkKCcjd3Qtbm90aWZ5LWJveCAuY29udGVudCcpLmh0bWwoaXRlbS50aXRsZSArICh2ZXJzaW9uPyc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDtjb2xvcjogI2NjYztmb250LXNpemU6IDEwcHg7bWFyZ2luLXRvcDogMTBweDsiPnYgJyArIHZlcnNpb24gKyc8L2Rpdj4nOiAnJykpCgkJc3VwZXJWaXAuX0NPTkZJR18uc2hvd05vdGlmeSA9IHRydWUKCQkkKCcjd3Qtbm90aWZ5LWJveCcpLm9uKCdjbGljaycsKCk9PnsKCQkJJCgiI3d0LW5vdGlmeS1ib3giKS5yZW1vdmVDbGFzcygnc2hvdy1ub3RpZnktYm94JykKCQkJJCgiI3d0LW5vdGlmeS1ib3giKS5hZGRDbGFzcygnaGlkLW5vdGlmeS1ib3gnKQoJCQlzdXBlclZpcC5fQ09ORklHXy5zaG93Tm90aWZ5ID0gZmFsc2UKCQkJaWYoaXRlbS5zdWNjZXNzKSBpdGVtLnN1Y2Nlc3ModHJ1ZSkKCQl9KQoJfQoJCglyZXR1cm4gewoJCWZpbmRUYXJnZXREYXRhOiAoZGF0YU5hbWUpPT4gZmluZFRhcmdldERhdGEoZGF0YU5hbWUpLAoJCWFkZExvZ2luOiAoKSA9PiBhZGRMb2dpbigpLAoJCXNob3dUaXBzOiAob2JqKSA9PiBzaG93VGlwcyhvYmopLAoJCXNob3dOb3RpZnk6IChvYmopID0+IHNob3dOb3RpZnkob2JqKSwKCQlmaW5kVGFyZ2V0RWxlbWVudDogKGUpPT4gZmluZFRhcmdldEVsZW1lbnQoZSksCgkJaW5pdFVuc2FmZVdpbmRvdzogKCkgPT4gaW5pdFVuc2FmZVdpbmRvdygpLAoJCWNoZWNrVXBkYXRlOiAoKT0+IGNoZWNrVXBkYXRlKCksCgkJc3RhcnRlZDogKCkgPT4gc3RhcnRlZCgpCgl9Cn0pKCk7Cgpjb25zdCBzdXBlclZpcCA9IChmdW5jdGlvbiAoKSB7Cgljb25zdCBfQ09ORklHXyA9IHsKCQlpc01vYmlsZTogbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKEFuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkpL2kpLAoJCXZpcEJveElkOiAnd3QtdmlwLWp4LWJveCcgKyBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMCksCgkJc3RyOiAnVlZaa1JsVnNVbHBRTVZaS1ZERkNRbFV3VVRaU2EyUkpVMnQwVFZkc2FFUldhMHBQVkZoR2FFd3pjRE5qTTJoc1drZE9lVXB0V2pKa1IyUnBaVmRvZFV4dVZuRmlWMnh5WW5veGMyTkRNSGhOYWswd1RsUlpNMDlFYTNkWWR6MDk9JywKCQlpbml0RmFpbE1zZzogJ+aKseatie+8jOWIneWni+WMluWksei0pe+8jOivt+WwneivleWIt+aWsOmhtemdouaIluajgOafpeeJiOacrOaYr+WQpuaYr+acgOaWsOeJiOacrO+8jOeCueWHu+aOp+WItuadoeWWh+WPreafpeeci+W9k+WJjeeJiOacrOWPtycsCgkJc3RhcnQ6IFsnNDIrMzUrMzMrNDInLCcyOSs0Mis1NCs0NCcsJzQ0KzQyKzU0KzI5JywnMjMrMzgrNDUrNTcrNDIrNTQrMTMrMjkrNDIrMjknLCczNiszNSszNys1NCszNiszNScsJzUyKzQ3KzUyKzQyKzcrNDcrMzMrMjkrNDArMzUrMSs1Mis0NyszNis1NCszMicsJzM1KzQ3KzM2JywnMzUrNDcrMzcrNTQrMzYrMzUnLCc0MCs1NCszNys0OSszMycsJzQ3KzI5KzUxKzM1JywnNTErMjgrMjgnLCcyOSszNSs0Mys1MiszMycsJzQzKzM1KzQyKzEyKzM3KzM4KzUyKzU3KzQyJywnNDQrNjQrNjInLCc0NCs2NCs2MiszOCszNScsJzQzKzM1KzQyKzEyKzM3KzM4KzUyKzU3KzQyJ10sCgkJaG9tZVBhZ2U6ICdodHRwOi8vd2x6Zy5sdGQvIy9wYWdlcy9teS9leGNoYW5nZS9ub2Rlcy9ub2RlcycsCgkJZW5kOiBbJzQ1KzI2KzQ3KzUrMTYrMzQrMjMrMjMrMzgrNDUrNTcnLCc1Mis0Nys1Mis0Mis3KzQ3KzMzKzUyKzQ3KzUyKzQyKzcrNDcrMzMnLCc1Mis0MyszNyszMyszNys1MSs1Nis1MyszMys0NCszNys1MyszMysxOCsxNysxOSsxMisxMysxNSsxOSsxMSsxOCsxNSsxMysxMysxMisyNisxNSsxOSsxOCs0NicsJzQ0KzUwKzQ2KzI0KzE2KzI0KzE4KzI1KzQ2KzQ0KzUzKzQ2KzI1KzE4KzE3KzI0KzI1KzUwKzQ2KzQxKzQzKzQ2KzE4KzE5KzI1JywnNDYrNDYrNTArMzYrNDMrNDYrNDArNDgrMzcrNTQrNTEnLCc0Nis1MCszNyszNyszNys0OCs0Mis1NCs1NycsJzQ2KzQyKzQyKzU3KzMzKzE0KzMwKzMwKzM4KzM1KzMzKzM1KzQyKzU4KzMxKzQwKzQwKzQ4KzU0KzMzKzMzKzU4KzM3KzQ3KzU4KzM3KzQ2KzM1KzQ3KzQzKzM2KzQ5KzQ4KzI5KzU2KzUyKzQ1KzQ5KzQ3KzM3KzMzKzQ4KzM3KzU0KzUxKzMwKzUwKzMzKzMwKzUxKzM2KzYzKzMwKzM3KzU0KzM2KzM1KzQ4KzUwKzMzJywnMzcrNTQrMzYrMzUrNDgrNTArMzMnLCc1NyszMisyOSstMSs0OSs1Mis0OCs0Mis1NCs1NycsJzQ2KzQyKzQyKzU3KzMzKzE0KzMwKzMwKzUxKzQ4KzQxKzQ4KzI4KzI4KzQ4KzM3KzU0KzUxKzMwKzQ0KzUzKzMwKzM0KzMwKzM3KzQ2KzI5KzQ3KzQ3KzM1KzU2KzMwKzMzKzM1KzU2KzM1KzM3KzQyKzMwKzUyKzQ3KzM2KzM1KzM0KzQ4KzQ2KzQyKzUxKzU2JywnNTIrNDcrMzYrMzUrMzQrNDgrNDYrNDIrNTErNTYnLCc0Nis1NCs1MSszNSs0OCs0Nis0Mis1MSs1NicsJzM3KzU0KzM2KzM1KzM0JywnNTErMzYrNjMrMzQnXSwKCQltbTogWydyZXAnLCdhdG9iJywnYXRvYiddLAoJCXNzOiBbJ2J0b2EnLCdidG9hJywncmV4eCddLAoJCXNjcmlwdHM6IFsKCQkvLyAJewoJCS8vIAlpY29uOiAnaHR0cHM6Ly9tcC1hZjMwNzI2OC0xYjhhLTQ4MmEtYjc1YS1iNmU5OGIxMjU3NDIuY2RuLmJzcGFwcC5jb20vc3lzdGVtL2xvZ28vd2F0ZXJtYXJrX2xvZ28ucG5nJywKCQkvLyAJZGVzYzogJ+WQhOWkp+efreinhumikeW5s+WPsOinhumikS/lm77pm4blhY3otLnljrvmsLTljbDkuIvovb3vvIznpoHmraLkuIvovb3nmoTkuZ/og73kuIvovb0nCgkJLy8gfSwKCQl7CgkJCWljb246ICdodHRwczovL21wLWFmMzA3MjY4LTFiOGEtNDgyYS1iNzVhLWI2ZTk4YjEyNTc0Mi5jZG4uYnNwYXBwLmNvbS9zeXN0ZW0vbG9nby92aWRlb19sb2dvLnBuZycsCgkJCWRlc2M6ICflkITlpKfop4bpopHlubPlj7BWSVDop4bpopHlhY3otLnnnIsnCgkJfSwKCQl7CgkJCWljb246ICdodHRwczovL2JlLnV4ZGtlbC5jb20vc3RhdGljL2ltYWdlcy9pbmRleC9kbWRsb2cyLnBuZycsCgkJCWRlc2M6ICfor6XnvZHnq5nlkKvmnInmlY/mhJ/kv6Hmga/vvIzor7fosKjmhY7jgILlhY3otLnnnIvku5jotLnnn63op4bpopEnCgkJfSwKCQl7CgkJCWljb246ICdodHRwczovL21wLWFmMzA3MjY4LTFiOGEtNDgyYS1iNzVhLWI2ZTk4YjEyNTc0Mi5jZG4uYnNwYXBwLmNvbS9zeXN0ZW0vbG9nby9oYWlqaWFvLnBuZycsCgkJCWRlc2M6ICfor6XnvZHnq5nlkKvmnInmlY/mhJ/kv6Hmga/vvIzor7fosKjmhY7jgILlhY3otLnnnIvku5jotLnop4bpopHlj4rlm77pm4YnCgkJfSwKCQl7CgkJCWljb246ICdodHRwczovL21wLWFmMzA3MjY4LTFiOGEtNDgyYS1iNzVhLWI2ZTk4YjEyNTc0Mi5jZG4uYnNwYXBwLmNvbS9zeXN0ZW0vbG9nb190cmFuc3BhcmVudC5wbmcnLAoJCQlkZXNjOiAn5YmN5b6A572R5Z2A6I635Y+W6ISa5pys5Zyw5Z2AJywKCQkJdXJsOiAnaHR0cDovL3dsemcubHRkLyMvcGFnZXMvbXkvZXhjaGFuZ2Uvbm9kZXMvbm9kZXMnCgkJfV0KCX0KICAgIGNsYXNzIEJhc2VDb25zdW1lciB7CiAgICAgICAgY29uc3RydWN0b3IoYm9keSkgewogICAgICAgICAgICB0aGlzLnBhcnNlID0gKCkgPT4gewoJCQkJdXRpbC5zdGFydGVkKCkKCQkJCXRoaXMuaW50ZXJjZXB0SHR0cCgpCgkJCQlzZXRUaW1lb3V0KCgpID0+IHsgdXRpbC5jaGVja1VwZGF0ZSgpfSwzMDAwKQoJCQkJdXRpbC5maW5kVGFyZ2V0RWxlbWVudCgnYm9keScpLnRoZW4oY29udGFpbmVyID0+IHRoaXMuZ2VuZXJhdGVFbGVtZW50KGNvbnRhaW5lcikudGhlbihjb250YWluZXIgPT4gdGhpcy5iaW5kRXZlbnQoY29udGFpbmVyKSkpCiAgICAgICAgICAgIH0KICAgICAgICB9CgkJCgkJaW50ZXJjZXB0SHR0cCgpewoJCQljb25zdCBfb3BlbiA9IHVuc2FmZVdpbmRvdy5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3BlbjsKCQkJdW5zYWZlV2luZG93LlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHsKCQkJCXRyeXsKCQkJCQlpZiAoL20zdThcP2F1dGhfa2V5Ly50ZXN0KGFyZ3NbMV0pICYmIC8xMHBsYXkubG9uZ3l1YW5kaW5neWkvLnRlc3QoYXJnc1sxXSkpIHsKCQkJCQkJc3VwZXJWaXAuX0NPTkZJR18udmlkZW9VcmwgPSBhcmdzWzFdCgkJCQkJfQoJCQkJfWNhdGNoKGUpe30KCQkJCXJldHVybiBfb3Blbi5hcHBseSh0aGlzLCBhcmdzKTsKCQkJfQoJCX0KCQkKCQlnZW5lcmF0ZUVsZW1lbnQoY29udGFpbmVyKSB7CgkJICAgIEdNX2FkZFN0eWxlKGAKCQkJCUBmb250LWZhY2UgewoJCQkJICBmb250LWZhbWlseTogJ2ljb25mb250JzsgIC8qIFByb2plY3QgaWQgMzkxMzU2MSAqLwoJCQkJICBzcmM6IHVybCgnLy9hdC5hbGljZG4uY29tL3QvYy9mb250XzM5MTM1NjFfeHJ3eGVxdDFoOC53b2ZmMj90PTE2OTI5NjEwNjQ3MjcnKSBmb3JtYXQoJ3dvZmYyJyksCgkJCQkgICAgICAgdXJsKCcvL2F0LmFsaWNkbi5jb20vdC9jL2ZvbnRfMzkxMzU2MV94cnd4ZXF0MWg4LndvZmY/dD0xNjkyOTYxMDY0NzI3JykgZm9ybWF0KCd3b2ZmJyksCgkJCQkgICAgICAgdXJsKCcvL2F0LmFsaWNkbi5jb20vdC9jL2ZvbnRfMzkxMzU2MV94cnd4ZXF0MWg4LnR0Zj90PTE2OTI5NjEwNjQ3MjcnKSBmb3JtYXQoJ3RydWV0eXBlJyk7CgkJCQl9CgkJCQkuaWNvbmZvbnQgewoJCQkJICAgIGZvbnQtZmFtaWx5OiAiaWNvbmZvbnQiICFpbXBvcnRhbnQ7CgkJCQkgICAgZm9udC1zaXplOiAxNnB4OwoJCQkJICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKCQkgICAgICAgICAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7CgkJCQkgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CgkJCQkgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKCQkJCX0KCQkJCUBrZXlmcmFtZXMgc2hvd1NldEJveCB7CgkJCQkJMCUgewoJCQkJCQl0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDApOwoJCQkJCX0KCQkJCQk4MCUgewoJCQkJCQl0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDEuMSk7CgkJCQkJfQoJCQkJCTEwMCUgewoJCQkJCQl0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDEpOwoJCQkJCX0KCQkJCX0KCQkJCUBrZXlmcmFtZXMgaGlkU2V0Qm94IHsKCQkJCQkwJSB7CgkJCQkJCXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMSk7CgkJCQkJfQoJCQkJCTgwJSB7CgkJCQkJCXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMS4xKTsKCQkJCQl9CgkJCQkJMTAwJSB7CgkJCQkJCXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7CgkJCQkJfQoJCQkJfQoJCQkJQGtleWZyYW1lcyBzaG93Tm90aWZ5Qm94IHsKCQkJCQkwJSB7CgkJCQkJCXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTEwMCUpIHNjYWxlKDApOwoJCQkJCX0KCQkJCQk4MCUgewoJCQkJCQl0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLDM1cHgpIHNjYWxlKDEuMSk7CgkJCQkJfQoJCQkJCTEwMCUgewoJCQkJCQl0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLDM1cHgpIHNjYWxlKDEpOwoJCQkJCX0KCQkJCX0KCQkJCUBrZXlmcmFtZXMgaGlkTm90aWZ5Qm94IHsKCQkJCQkwJSB7CgkJCQkJCXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsMzVweCkgc2NhbGUoMS4xKTsKCQkJCQl9CgkJCQkJODAlIHsKCQkJCQkJdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwzNXB4KSBzY2FsZSgxKTsKCQkJCQl9CgkJCQkJMTAwJSB7CgkJCQkJCXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTEwMCUpIHNjYWxlKDApOwoJCQkJCX0KCQkJCX0KCQkJCUBrZXlmcmFtZXMgY29sb3JBbmltYSB7CgkJCQkJMCV7CgkJCQkJCWJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7CgkJCQkJCWNvbG9yOiAjNWQ1ZDVkOwoJCQkJCQl0cmFuc2Zvcm06IHNjYWxlKDEpOwoJCQkJCX0KCQkJCQk1MCV7CgkJCQkJCXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKCQkJCQl9CgkJCQkJMTAwJXsKCQkJCQkJYmFja2dyb3VuZC1jb2xvcjogI2ZmNjAyMjs7CgkJCQkJCWNvbG9yOiB3aGl0ZTsKCQkJCQkJdHJhbnNmb3JtOiBzY2FsZSgxKTsKCQkJCQl9CgkJCQl9CgkJCQlAa2V5ZnJhbWVzIHNjYWxlIHsKCQkJCQkwJXsKCQkJCQkJdHJhbnNmb3JtOiBzY2FsZSgxKTsKCQkJCQl9CgkJCQkJNTAlewoJCQkJCQl0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CgkJCQkJfQoJCQkJCTEwMCV7CgkJCQkJCXRyYW5zZm9ybTogc2NhbGUoMSk7CgkJCQkJfQoJCQkJfQoJCQkJQGtleWZyYW1lcyBjaXJjbGV0b2tMZWZ0IHsKCQkJCSAgICAwJSwxMDAlIHsKCQkJCSAgICAgICAgbGVmdDogMHB4OwoJCQkJICAgICAgICB3aWR0aDogMTJweDsKCQkJCSAgICAgICAgaGVpZ2h0OiAxMnB4OwoJCQkJICAgICAgICB6LWluZGV4OiAwOwoJCQkJICAgIH0KCQkJCSAgICAyNSUgewoJCQkJICAgICAgICBoZWlnaHQ6IDE1cHg7CgkJCQkgICAgICAgIHdpZHRoOiAxNXB4OwoJCQkJICAgICAgICB6LWluZGV4OiAxOwoJCQkJICAgICAgICBsZWZ0OiA4cHg7CgkJCQkgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKCQkJCSAgICB9CgkJCQkgICAgNTAlIHsKCQkJCSAgICAgICAgd2lkdGg6IDEycHg7CgkJCQkgICAgICAgIGhlaWdodDogMTJweDsKCQkJCSAgICAgICAgbGVmdDogMjJweDsKCQkJCSAgICB9CgkJCQkgICAgNzUlIHsKCQkJCSAgICAgICAgd2lkdGg6IDEwcHg7CgkJCQkgICAgICAgIGhlaWdodDogMTBweDsKCQkJCSAgICAgICAgbGVmdDogOHB4OwoJCQkJICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpCgkJCQkgICAgfQoJCQkJfQoJCQkJQGtleWZyYW1lcyBjaXJjbGV0b2tSaWdodCB7CgkJCQkgICAgMCUsMTAwJSB7CgkJCQkgICAgICAgIHRvcDogM3B4OwoJCQkJICAgICAgICBsZWZ0OiAyMnB4OwoJCQkJICAgICAgICB3aWR0aDogMTJweDsKCQkJCSAgICAgICAgaGVpZ2h0OiAxMnB4OwoJCQkJICAgICAgICB6LWluZGV4OiAwCgkJCQkgICAgfQoJCQkJICAgIDI1JSB7CgkJCQkgICAgICAgIGhlaWdodDogMTVweDsKCQkJCSAgICAgICAgd2lkdGg6IDE1cHg7CgkJCQkgICAgICAgIHotaW5kZXg6IDE7CgkJCQkgICAgICAgIGxlZnQ6IDI0cHg7CgkJCQkgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKCQkJCSAgICB9CgkJCQkgICAgNTAlIHsKCQkJCSAgICAgICAgd2lkdGg6IDEycHg7CgkJCQkgICAgICAgIGhlaWdodDogMTJweDsKCQkJCSAgICAgICAgbGVmdDogMHB4CgkJCQkgICAgfQoJCQkJICAgIDc1JSB7CgkJCQkgICAgICAgIHdpZHRoOiAxMHB4OwoJCQkJICAgICAgICBoZWlnaHQ6IDEwcHg7CgkJCQkgICAgICAgIGxlZnQ6IDI0cHg7CgkJCQkgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKCQkJCSAgICB9CgkJCQl9CgkJCQkuY29sb3ItYW5pbWF7CgkJCQkJYW5pbWF0aW9uOiBjb2xvckFuaW1hIC4zcyBlYXNlIDEgZm9yd2FyZHM7CgkJCQl9CgkJCQkuYnRuLWFuaW1hewoJCQkJCWFuaW1hdGlvbjogc2NhbGUgLjNzIGVhc2UgMSBmb3J3YXJkczsKCQkJCX0KCQkJCS5wcmV2aWV3LXRpcC1jb250YWluZXIsLnBpY3R1cmUsLnZhbi1kaWFsb2csLnZhbi1vdmVybGF5LC5oaWR7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7ei1pbmRleDotOTk5OTkgIWltcG9ydGFudDtvcGFjaXR5OiAwIWltcG9ydGFudDt3aWR0aCA6MCAhaW1wb3J0YW50O30KCQkJCS5zd2lwZXItc2xpZGV7dG9wOiAtNTBweDt9CgkJCQkjd3QtcmVzb3VyY2VzLWJveHtib3JkZXI6IDFweCBkYXNoZWQgI2VjODE4MTtiYWNrZ3JvdW5kOiAjZmZmNGY0O30KCQkJCS5zZWxsLWJ0bntib3JkZXI6bm9uZSAhaW1wb3J0YW50O21hcmdpbi10b3A6MjBweDt9CgkJCQkubWFyZ2luLWxlZnR7IG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7fQoJCQkJLnNob3ctc2V0LWJveHsgYW5pbWF0aW9uOiBzaG93U2V0Qm94IDAuM3MgZWFzZSAxIGZvcndhcmRzO30KCQkJCS5oaWQtc2V0LWJveHsgYW5pbWF0aW9uOiBoaWRTZXRCb3ggMC4zcyBlYXNlIDEgZm9yd2FyZHM7fQoJCQkJLnNob3ctbm90aWZ5LWJveHsgYW5pbWF0aW9uOiBzaG93Tm90aWZ5Qm94IDAuM3MgZWFzZSAxIGZvcndhcmRzO30KCQkJCS5oaWQtbm90aWZ5LWJveHsgYW5pbWF0aW9uOiBoaWROb3RpZnlCb3ggMC4zcyBlYXNlIDEgZm9yd2FyZHM7fQoJCQkJI3d0LWxvYWRpbmctYm94e2Rpc3BsYXk6IG5vbmU7cG9zaXRpb246IGZpeGVkO3RvcDogMDtsZWZ0OiAwO3JpZ2h0OiAwO2JvdHRvbTogMDt6LWluZGV4OiAxMDAwMDA7YmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDRkO30KCQkJCSN3dC1sb2FkaW5nLWJveCAubG9hZGluZ3twb3NpdGlvbjogYWJzb2x1dGU7d2lkdGg6IDM1cHg7aGVpZ2h0OiAxN3B4O3RvcDogNTAlO2xlZnQ6IDUwJTt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpO30KCQkJCSN3dC1sb2FkaW5nLWJveCAubG9hZGluZzo6YmVmb3JlLAoJCQkJI3d0LWxvYWRpbmctYm94IC5sb2FkaW5nOjphZnRlcntwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogIiI7dG9wOiAzcHg7YmFja2dyb3VuZC1jb2xvcjogI2ZmZTYwZjt3aWR0aDogMTRweDtoZWlnaHQ6IDE0cHg7Ym9yZGVyLXJhZGl1czogMjBweDttaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7YW5pbWF0aW9uOiBjaXJjbGV0b2tMZWZ0IDEuMnMgbGluZWFyIGluZmluaXRlO30KCQkJCSN3dC1sb2FkaW5nLWJveCAubG9hZGluZzo6YWZ0ZXJ7YW5pbWF0aW9uOiBjaXJjbGV0b2tSaWdodCAxLjJzIGxpbmVhciBpbmZpbml0ZTtiYWNrZ3JvdW5kLWNvbG9yOiAjNGRlOGY0O30KCQkJCSN3dC1sZWZ0LXNob3d7IHBvc2l0aW9uOiBmaXhlZDtsZWZ0OiAyMHB4O3RvcDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTt6LWluZGV4OiA5OTk5O3RyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7fQoJCQkJI3d0LWxlZnQtc2hvdyBpIHtjb2xvcjogIzVmNWI1Yjtmb250LXNpemU6IDI0cHg7Y29sb3I6ICNFOTFFNjM7dGV4dC1zaGFkb3c6ICNFOTFFNjMgMnB4IDJweCAxMnB4O2ZvbnQtc2l6ZTogMjVweDttYXJnaW4tbGVmdDogLTFweDt9CgkJICAgICAgICAjd3QtJHtfQ09ORklHXy52aXBCb3hJZH17CgkJCQkJcG9zaXRpb246IGZpeGVkOwoJCQkJCXRvcDogNTAlOwoJCQkJCXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOwoJCQkJCXJpZ2h0OiAxMHB4OwoJCQkJCXdpZHRoOiA0NnB4OwoJCQkJCWJvcmRlci1yYWRpdXM6IDMwcHg7CgkJCQkJYmFja2dyb3VuZDogcmdiKDY0IDY0IDY0IC8gODElKTsKCQkJCQlib3gtc2hhZG93OiAxcHggMXB4IDhweCAxcHggcmdiKDk4IDk5IDk5IC8gMzQlKTsKCQkJCQl6LWluZGV4OiA5OTk5OwoJCQkJCXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CgkJCQl9CgkJCQkjd3QtJHtfQ09ORklHXy52aXBCb3hJZH0gLml0ZW17cG9zaXRpb246IHJlbGF0aXZlO2hlaWdodDogNzBweDt9CgkJCQkjd3QtJHtfQ09ORklHXy52aXBCb3hJZH0gLml0ZW06bm90KDpsYXN0LWNoaWxkKTo6YWZ0ZXJ7cG9zaXRpb246IGFic29sdXRlO2JvdHRvbTogMDtsZWZ0OiAyMi41JTtjb250ZW50OiAnJzt3aWR0aDogNTUlO2hlaWdodDogMnB4O2JhY2tncm91bmQtY29sb3I6ICNmZmY7fQoJCQkJI3d0LSR7X0NPTkZJR18udmlwQm94SWR9IC5pdGVtIC5pY29uZm9udCwjd3QtJHtfQ09ORklHXy52aXBCb3hJZH0gLml0ZW0gaW1ne3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSl9CgkJCQkjd3QtbG9naW4tYm94IC5jbG9zZSwjd3Qtc2V0LWJveCAuY2xvc2V7cG9zaXRpb246IGFic29sdXRlO3JpZ2h0OiAwcHg7dG9wOiAwcHg7d2lkdGg6IDQwcHg7aGVpZ2h0OiA0MHB4O30KCQkJCSN3dC1sb2dpbi1ib3ggLmNsb3NlOjpiZWZvcmUsI3d0LWxvZ2luLWJveCAuY2xvc2U6OmFmdGVye3Bvc2l0aW9uOiBhYnNvbHV0ZTtsZWZ0OiA1MCU7dG9wOiA1MCU7Y29udGVudDogJyc7d2lkdGg6IDEycHg7aGVpZ2h0OiAycHg7Ym9yZGVyLXJhZGl1czogMXB4O2JhY2tncm91bmQtY29sb3I6ICM2YTZhNmE7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwtNTAlKSByb3RhdGUoNDVkZWcpO3Zpc2liaWxpdHk6IHZpc2libGU7fQoJCQkJI3d0LXNldC1ib3ggLmNsb3NlOjpiZWZvcmUsI3d0LXNldC1ib3ggLmNsb3NlOjphZnRlcntwb3NpdGlvbjogYWJzb2x1dGU7bGVmdDogNTAlO3RvcDogNTAlO2NvbnRlbnQ6ICcnO3dpZHRoOiAxMnB4O2hlaWdodDogMnB4O2JvcmRlci1yYWRpdXM6IDFweDtiYWNrZ3JvdW5kLWNvbG9yOiAjNmE2YTZhO3RyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKDQ1ZGVnKTt2aXNpYmlsaXR5OiB2aXNpYmxlO30KCQkJCSN3dC1sb2dpbi1ib3ggLmNsb3NlOjphZnRlciwjd3Qtc2V0LWJveCAuY2xvc2U6OmFmdGVye3RyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKC00NWRlZyk7fQoJCQkJI3d0LSR7X0NPTkZJR18udmlwQm94SWR9IC5hYnNvbHV0ZS1jZW50ZXJ7IHBvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDUwJTtsZWZ0OiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7fQoJCQkJI3d0LSR7X0NPTkZJR18udmlwQm94SWR9ICN3dC1teSBpbWd7IHdpZHRoOiAyOHB4O2hlaWdodDogMjhweDtib3JkZXItcmFkaXVzOiAzMHB4O21hcmdpbi1sZWZ0OiAycHg7dHJhbnN0aW9uOiBhbGwgMC4zcyBlYXNlO30KCQkJCSN3dC0ke19DT05GSUdfLnZpcEJveElkfSAjd3QtbXktc2V0IGkge2NvbG9yOiB3aGl0ZTtmb250LXNpemU6IDI0cHg7dGV4dC1zaGFkb3c6IDJweCAycHggMTRweCAjZmZmZmZmO2ZvbnQtZmFtaWx5OiAnaWNvbmZvbnQnO30KCQkJCSN3dC0ke19DT05GSUdfLnZpcEJveElkfSAjd3QtbXktY29weSBpIHtjb2xvcjogd2hpdGU7Zm9udC1zaXplOiAyNHB4O3RleHQtc2hhZG93OiAycHggMnB4IDE1cHggI2ZmZmZmZjtmb250LWZhbWlseTogJ2ljb25mb250Jzt9CgkJCQkjd3QtJHtfQ09ORklHXy52aXBCb3hJZH0gI3d0LW15LW5vdGlmeSBpIHtjb2xvcjogd2hpdGU7Zm9udC1zaXplOiAyM3B4O3BhZGRpbmc6IDEwcHggMXB4O3RleHQtc2hhZG93OiAycHggMnB4IDEycHggI2ZmZmZmZjt9CgkJCQkjd3QtJHtfQ09ORklHXy52aXBCb3hJZH0gI3d0LWhpZC1ib3ggaSB7Y29sb3I6IHdoaXRlO2ZvbnQtc2l6ZTogMjRweDt0ZXh0LXNoYWRvdzogMnB4IDJweCAxMnB4ICNmZmZmZmY7Zm9udC1zaXplOiAyNXB4O21hcmdpbi1sZWZ0OiAtMXB4O30KCQkJCSN3dC1tYXNrLWJveCwjd3QtbWF4aW5kZXgtbWFza3tkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwOyB6LWluZGV4OiAxMDAwMDsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDRkO30KCQkJCSN3dC1tYXhpbmRleC1tYXNre3otaW5kZXg6IDkwMDAwO2Rpc3BsYXk6bm9uZTt9CgkJCQkjd3Qtc2V0LWJveHsgcG9zaXRpb246Zml4ZWQ7IHRvcDo1MCU7bGVmdDo0NSU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSkgc2NhbGUoMCk7YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ym94LXNoYWRvdzogMCAxNXB4IDMwcHggcmdiYSgwLCAwLCAwLCAuMTUpO2JvcmRlci1yYWRpdXM6IDEwcHg7ei1pbmRleDogMTAwMTA7cGFkZGluZzogMTBweCAxNXB4O3BhZGRpbmctcmlnaHQ6IDVweDtib3gtc2l6aW5nOiBib3JkZXItYm94O30KCQkJCSN3dC1zZXQtYm94IC5zZWxlY3RlZC1ib3ggLnNlbGVjdGVkeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2MDIyO2NvbG9yOiB3aGl0ZTt9CgkJCQkjd3Qtc2V0LWJveCAudXNlci1ib3gtY29udGFpbmVye2Rpc3BsYXk6IG5vbmU7bGV0dGVyLXNwYWNpbmc6IDFweDt9CgkJCQkjd3Qtc2V0LWJveCAuaW5mby1ib3h7ZGlzcGxheTpmbGV4O2hlaWdodDogNTBweDthbGlnbi1pdGVtczogY2VudGVyO30KCQkJCSN3dC1zZXQtYm94IC5pbmZvLWJveCAuYXZhdGFyLWJveHtwb3NpdGlvbjogcmVsYXRpdmU7aGVpZ2h0OiAzNnB4O3dpZHRoOiAzNnB4O2JhY2tncm91bmQtY29sb3I6IHdoaXRlO2JvcmRlci1yYWRpdXM6IDdweDtib3gtc2hhZG93OiByZ2IoMTY2IDE2NiAxNjYgLyAyMCUpIDBweCAxcHggMjBweCAwcHg7fQoJCQkJI3d0LXNldC1ib3ggLnVzZXItYm94IC50aXRsZXt0ZXh0LWFsaWduOiBjZW50ZXI7Zm9udC13ZWlnaHQ6IDYwMDtmb250LXNpemU6IDE2cHg7Y29sb3I6ICMzYTNhM2E7fQoJCQkJI3d0LXNldC1ib3ggLnVzZXItYm94IC5kZXNje2ZsZXg6IDg7Zm9udC1zaXplOiAxMHB4O2NvbG9yOiAjNWQ1ZDVkO21hcmdpbjogMCAxMHB4O30KCQkJCSN3dC1zZXQtYm94IC51c2VyLWJveCAuYXZhdGFye3Bvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyLXJhZGl1czogMzBweDtib3JkZXItcmFkaXVzOiA3cHg7fQoJCQkJI3d0LXRpcHMtYm94eyBwb3NpdGlvbjpmaXhlZDt0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgwKTt3aWR0aDogMjQwcHg7bWluLWhlaWdodDoxMzBweDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtib3JkZXItcmFkaXVzOjEwcHg7ei1pbmRleDogOTUwMDA7cGFkZGluZzoxMHB4IDE1cHg7fQoJCQkJI3d0LXRpcHMtYm94IC50aXRsZXtmb250LXNpemU6IDE2cHg7dGV4dC1hbGlnbjogY2VudGVyO2ZvbnQtd2VpZ2h0OiA2MDA7fQoJCQkJI3d0LXRpcHMtYm94IC5jb250ZW50e3RleHQtYWxpZ246IGNlbnRlcjttYXJnaW46IDE0cHggMDtmb250LXNpemU6IDEycHg7Y29sb3I6ICMyYTJhMmE7Zm9udC13ZWlnaHQ6IDUwMDt9CgkJCQkjd3QtdGlwcy1ib3ggLmNvbnRlbnQgcHtjb2xvcjogI2ZmNDc1Nzt0ZXh0LWFsaWduOiBsZWZ0O30KCQkJCSN3dC10aXBzLWJveCAuYnRuLWJveHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7fQoJCQkJI3d0LXRpcHMtYm94IC5idG4tYm94IGJ1dHRvbnttaW4td2lkdGg6IDYwcHg7aGVpZ2h0OiAyOHB4O2JhY2tncm91bmQtY29sb3I6ICNlYzQwN2E7Ym9yZGVyLXJhZGl1czogMzBweDtjb2xvcjogd2hpdGU7Ym9yZGVyOiBub25lO2ZvbnQtc2l6ZTogMTJweDt9CgkJCQkjd3QtdGlwcy1ib3ggLmJ0bi1ib3ggLmNhbmNlbHtkaXNwbGF5OiBub25lO2JhY2tncm91bmQtY29sb3I6ICNlZWU7Y29sb3I6IzJhMmEyYX0KCQkJCSN3dC1ub3RpZnktYm94IHtwb3NpdGlvbjogZml4ZWQ7dG9wOiAyJTtsZWZ0OiA1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC0xMDAlKSBzY2FsZSgwKTt3aWR0aDogODAlO21pbi1oZWlnaHQ6IDc1cHg7bGV0dGVyLXNwYWNpbmc6IDFweDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtjb2xvcjojMmEyYTJhO2JvcmRlci1yYWRpdXM6IDE1cHg7Ym94LXNoYWRvdzogMCAxNXB4IDMwcHggcmdiYSgwLCAwLCAwLCAuMTUpO3otaW5kZXg6IDk1MDAwO30KCQkJCSN3dC1ub3RpZnktYm94IC50aXRsZXsgdGV4dC1hbGlnbjogY2VudGVyO2hlaWdodDogMzVweDsgbGluZS1oZWlnaHQ6IDM1cHg7Zm9udC1zaXplOiAxNXB4O2ZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiAjMDBCQ0Q0O30KCQkJCSN3dC1ub3RpZnktYm94IC5jb250ZW50eyBjb2xvcjogIzQ0YjdjNjtwYWRkaW5nOiAxMHB4IDE1cHg7Zm9udC1zaXplOiAxMnB4O30KCQkJCSN3dC12aWRlby1jb250YWluZXJ7ZGlzcGxheTogbm9uZTsgcG9zaXRpb246YWJzb2x1dGU7dG9wOiAwO2xlZnQ6IDA7cmlnaHQ6IDA7Ym90dG9tOiAwOyB6LWluZGV4OiA5OTk4O2JhY2tncm91bmQtY29sb3I6IGJsYWNrO30KCQkJCSN3dC12aWRlby1jb250YWluZXIgZGl2eyBwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3dpZHRoOjEwMCU7dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO2hlaWdodDogMjQwcHg7IHotaW5kZXg6IDk5OTk7fQoJCQkJYAoJCQkpCgkJCWlmKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdTYWZhcmknKSl7CgkJCQlHTV9hZGRTdHlsZShgCgkJCQkJLnN3aXBlci1zbGlkZXt0b3A6IC01MHB4O30KCQkJCWApCgkJCX0KCQkgICAgaWYgKF9DT05GSUdfLmlzTW9iaWxlKSB7CgkJICAgICAgICBHTV9hZGRTdHlsZShgCgkJICAgICAgICAgICAgI3d0LXNldC1ib3gge3dpZHRoOjcyJTt9CgkJICAgICAgICBgKTsKCQkgICAgfQoJCQlsZXQgc2NyaXB0cyA9ICcnOwoJCQlfQ09ORklHXy5zY3JpcHRzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7CgkJCQlzY3JpcHRzICs9IGAKCQkJCQk8ZGl2IGNsYXNzPSJpbmZvLWJveCIgZGF0YS1hZGRyZXNzPSIke2l0ZW0udXJsfSI+CgkJCQkJCTxkaXYgY2xhc3M9ImF2YXRhci1ib3giPgoJCQkJCQkJPGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9IiR7aXRlbS5pY29ufSIvPgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0iZGVzYyI+CgkJCQkJCQk8dGV4dD4ke2l0ZW0uZGVzY308L3RleHQ+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJYDsKCQkJfSkKCQkKCQkgICAgJChjb250YWluZXIpLmFwcGVuZChgCgkJICAgICAgICA8ZGl2IGlkPSJ3dC0ke19DT05GSUdfLnZpcEJveElkfSI+CgkJCQkgICAgPGRpdiBpZD0id3QtbXkiIGNsYXNzPSJpdGVtIj4KCQkJCQkJPGltZyBzcmM9Imh0dHBzOi8vbXAtYWYzMDcyNjgtMWI4YS00ODJhLWI3NWEtYjZlOThiMTI1NzQyLmNkbi5ic3BhcHAuY29tL3N5c3RlbS9udWxsX3NxdWFyZS5wbmciPjwvaW1nPgoJCQkJICAgIDwvZGl2PgoJCQkJICAgIDxkaXYgaWQ9Ind0LW15LXNldCIgY2xhc3M9Iml0ZW0iPgoJCQkJCSAgICA8aSBjbGFzcz0iaWNvbmZvbnQiPiYjeGVjMDU7PC9pPgoJCQkJICAgIDwvZGl2PgoJCQkJCTxkaXYgaWQ9Ind0LW15LWNvcHkiIGNsYXNzPSJpdGVtIj4KCQkJCQkgICAgPGkgY2xhc3M9Imljb25mb250Ij4mI3hlYzA3OzwvaT4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGlkPSJ3dC1teS1ub3RpZnkiIGNsYXNzPSJpdGVtIj4KCQkJCQkgICAgPGkgY2xhc3M9Imljb25mb250Ij4mI3hlYzA4OzwvaT4KCQkJCQk8L2Rpdj4KCQkJCSAgICA8ZGl2IGlkPSJ3dC1oaWQtYm94IiBjbGFzcz0iaXRlbSI+CgkJCQkJICAgIDxpIGNsYXNzPSJpY29uZm9udCI+JiN4ZWMwNjs8L2k+CgkJCQkgICAgPC9kaXY+CgkJCSAgICA8L2Rpdj4KCQkJICAgIDxkaXYgaWQ9Ind0LWxlZnQtc2hvdyIgc3R5bGU9InRyYW5zZm9ybTogdHJhbnNsYXRlKC02MHB4LC01MCUpO3BhZGRpbmc6IDEwcHg7Ij4KCQkJCQk8aSBjbGFzcz0iaWNvbmZvbnQiPiYjeGU3MDQ7PC9pPgoJCQkgICAgPC9kaXY+CgkJCQk8ZGl2IGlkPSJ3dC1tYXNrLWJveCI+PC9kaXY+CgkJCQk8ZGl2IGlkPSJ3dC1zZXQtYm94Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjbG9zZSI+PC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGluZS1ib3giIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgoKCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJ1c2VyLWJveC1jb250YWluZXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJ1c2VyLWJveCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJ0aXRsZSIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDEwcHgiPuWPiuaXtuihjOS5kOW3peWFt+W6kzwvZGl2PgoJCQkJCQkJJHtzY3JpcHRzfQoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBpZD0id3QtbG9hZGluZy1ib3giPgoJCQkJCTxkaXYgY2xhc3M9ImxvYWRpbmciPjwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGlkPSJ3dC1tYXhpbmRleC1tYXNrIj48L2Rpdj4KCQkJCTxkaXYgaWQ9Ind0LXRpcHMtYm94Ij4KCQkJCQk8ZGl2IGNsYXNzPSJ0aXRsZSI+5o+Q56S6PC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iY29udGVudCI+PC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iYnRuLWJveCI+CgkJCQkJCTxidXR0b24gY2xhc3M9J2NhbmNlbCc+5Y+W5raIPC9idXR0b24+CgkJCQkJCTxidXR0b24gY2xhc3M9J3N1Ym1pdCc+56Gu5a6aPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgaWQ9Ind0LW5vdGlmeS1ib3giPgoJCQkJCTxkaXYgY2xhc3M9InRpdGxlIj7pgJrnn6U8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJjb250ZW50Ij48L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBpZD0id3QtdmlkZW8tY29udGFpbmVyIj4KCQkJCQk8ZGl2PgoJCQkJCQk8dmlkZW8gaWQ9Ind0LXZpZGVvIiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6MTAwJSIgY29udHJvbHM+PC92aWRlbz4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCSAgICBgKQoJCQlpZihfQ09ORklHXy51c2VyICYmIF9DT05GSUdfLnVzZXIuYXZhdGFyKXsKCQkJCSQoIiN3dC1teSBpbWciKS5hZGRDbGFzcygnbWFyZ2luLWxlZnQnKQoJCQkJJCgnI3d0LW15IGltZycpLmF0dHIoJ3NyYycsX0NPTkZJR18udXNlci5hdmF0YXIpCgkJCX0KCQkJaWYoIV9DT05GSUdfLnVzZXIpewoJCQkJdXRpbC5hZGRMb2dpbigpCgkJCX0KCQkgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlc29sdmUoY29udGFpbmVyKSk7CgkJfQoJCgkJYmluZEV2ZW50KGNvbnRhaW5lcikgewoJCSAgICBjb25zdCB2aXBCb3ggPSAkKGAjd3QtJHtfQ09ORklHXy52aXBCb3hJZH1gKQoJCQlpZihHTV9nZXRWYWx1ZSgnOTF2aWRlb19oaWRfY29udHJvbGxlcicsbnVsbCkpewoJCQkJdmlwQm94LmNzcygidHJhbnNmb3JtIiwidHJhbnNsYXRlKDEyNSUsIC01MCUpIikKCQkJCSQoJyN3dC1sZWZ0LXNob3cnKS5jc3MoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCAtNTAlKSIpCgkJCX0KCQkJLy/ngrnlh7sg5oiR55qECgkJCXZpcEJveC5maW5kKCIjd3QtbXkiKS5vbigiY2xpY2siLCAoKSA9PiB7CgkJCSAgICBpZihfQ09ORklHXy51c2VyKXsKCQkJCQkkKCcjd3QtbWFzay1ib3gnKS5jc3MoJ2Rpc3BsYXknLCdibG9jaycpCgkJCQkJJCgiI3d0LXNldC1ib3ggLnVzZXItYm94LWNvbnRhaW5lciIpLmNzcygnZGlzcGxheScsJ2Jsb2NrJykKCQkJCQkkKCIjd3Qtc2V0LWJveCIpLnJlbW92ZUNsYXNzKCdoaWQtc2V0LWJveCcpCgkJCQkJJCgiI3d0LXNldC1ib3giKS5hZGRDbGFzcygnc2hvdy1zZXQtYm94JykKCQkJCQkkKCcjd3Qtc2V0LWJveCAudXNlci1ib3gtY29udGFpbmVyIC5uaWNrbmFtZScpLmh0bWwoX0NPTkZJR18udXNlci5uaWNrbmFtZSkKCQkJCX1lbHNlewoJCQkJCXV0aWwuYWRkTG9naW4oKQoJCQkJCSQoJyN3dC1sb2dpbi1tYXNrJykuY3NzKCdkaXNwbGF5JywnYmxvY2snKQoJCQkJCSQoIiN3dC1sb2dpbi1ib3giKS5yZW1vdmVDbGFzcygnaGlkLXNldC1ib3gnKQoJCQkJCSQoIiN3dC1sb2dpbi1ib3giKS5hZGRDbGFzcygnc2hvdy1zZXQtYm94JykKCQkJCQkvLyBjb25zdCB3dF85MXZpZGVvX2ZpcnN0X3VzZSA9IEdNX2dldFZhbHVlKCd3dF85MXZpZGVvX2ZpcnN0X3VzZScpCgkJCQkJaWYod3RfaW5pdF9jb2RlKXsKCQkJCQkJJCgiI3d0LWxvZ2luLWJveCBpbnB1dCIpLnZhbChtZDV4KG1kNXgoKSwnZGUnKS5jb2RlKQoJCQkJCX1lbHNlewoJCQkJCQl1dGlsLnNob3dUaXBzKHsgdGl0bGU6IF9DT05GSUdfLmluaXRGYWlsTXNnfSkKCQkJCQl9CgkJCQl9CgkJCX0pCgkJCgkJCS8vIOeCueWHuyDmkq3mlL4KCQkJdmlwQm94LmZpbmQoIiN3dC1teS1zZXQiKS5vbigiY2xpY2siLCAoKSA9PiB7CgkJCQlpZighX0NPTkZJR18udXNlcil7CgkJCQkJJCgiI3d0LW15IikuY2xpY2soKQoJCQkJCXJldHVybgoJCQkJfQoJCQkJaWYoX0NPTkZJR18udmlkZW9VcmwpewoJCQkJCSQoJyN3dC1sb2FkaW5nLWJveCcpLmNzcygnZGlzcGxheScsJ2Jsb2NrJykKCQkJCQljb25zdCB1cmwgPSBnZXRNM3U4VXJsKHN1cGVyVmlwKQoJCQkJCSQoJyN3dC1sb2FkaW5nLWJveCcpLmNzcygnZGlzcGxheScsJ25vbmUnKQoJCQkJCWlmKHVybCl7CgkJCQkJCWNvbnN0IHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3d0LXZpZGVvJykKCQkJCQkJaWYoX0NPTkZJR18uaXNNb2JpbGUgJiYgX0NPTkZJR18uaXNNb2JpbGVbMF0gPT0gJ2lQaG9uZScpewoJCQkJCQkJdmlkZW8uc3JjID0gdXJsCgkJCQkJCX1lbHNlewoJCQkJCQkJY29uc3QgaGxzID0gbmV3IEhscygpCgkJCQkJCQlobHMubG9hZFNvdXJjZSh1cmwpCgkJCQkJCQlobHMuYXR0YWNoTWVkaWEodmlkZW8pCgkJCQkJCQlobHMub24oSGxzLkV2ZW50cy5NQU5JRkVTVF9QQVJTRUQsZnVuY3Rpb24oKSB7CgkJCQkJCQkgIHZpZGVvLnBsYXkoKQoJCQkJCQkJfSkKCQkJCQkJfQoJCQkJCQkkKCcjd3QtdmlkZW8tY29udGFpbmVyJykuY3NzKCdkaXNwbGF5JywnYmxvY2snKQoJCQkJCX1lbHNlewoJCQkJCQl1dGlsLnNob3dUaXBzKHsgdGl0bGU6ICfplJnor6/vvIzor7fph43mlrDnmbvlvZXohJrmnKzlho3or5UnfSkKCQkJCQl9CgkJCQl9CgkJCQlpZighX0NPTkZJR18udmlkZW9VcmwpewoJCQkJCXV0aWwuc2hvd1RpcHMoeyB0aXRsZTogJ+inhumikeS4jeWtmOWcqCd9KQoJCQkJfQoJCQl9KQoJCQkKCQkJLy/pmLvmraLop4bpopHnu4Tku7blhpLms6EKCQkJJCgnI3d0LXZpZGVvLWNvbnRhaW5lciBkaXYnKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpewoJCQkJZS5zdG9wUHJvcGFnYXRpb24oKQoJCQl9KQoJCQkKCQkJLy/lhbPpl63mkq3mlL4KCQkJJCgnI3d0LXZpZGVvLWNvbnRhaW5lcicpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKCQkJCSQoJyN3dC12aWRlby1jb250YWluZXInKS5jc3MoJ2Rpc3BsYXknLCdub25lJykKCQkJfSkKCQkJCgkJCS8vIOeCueWHuyDlpI3liLYKCQkJdmlwQm94LmZpbmQoIiN3dC1teS1jb3B5Iikub24oImNsaWNrIiwgKCkgPT4gewoJCQkJaWYoIV9DT05GSUdfLnVzZXIpewoJCQkJCSQoIiN3dC1teSIpLmNsaWNrKCkKCQkJCQlyZXR1cm4KCQkJCX0KCQkJCWlmKCFfQ09ORklHXy52aWRlb1VybCl7CgkJCQkJdXRpbC5zaG93VGlwcyh7IHRpdGxlOiAn6KeG6aKR5LiN5a2Y5ZyoJ30pCgkJCQl9ZWxzZXsKCQkJCQkkKCcjd3QtbG9hZGluZy1ib3gnKS5jc3MoJ2Rpc3BsYXknLCdibG9jaycpCgkJCQkJY29uc3QgdXJsID0gZ2V0TTN1OFVybChzdXBlclZpcCkKCQkJCQlpZih1cmwpewoJCQkJCQluYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh1cmwpLnRoZW4ocmVzID0+ewoJCQkJCQkJdXRpbC5zaG93VGlwcyh7IHRpdGxlOiAn6KeG6aKR5Zyw5Z2A5aSN5Yi25oiQ5YqfJ30pCgkJCQkJCQkkKCcjd3QtbG9hZGluZy1ib3gnKS5jc3MoJ2Rpc3BsYXknLCdub25lJykKCQkJCQkJfSkKCQkJCQl9ZWxzZXsKCQkJCQkJJCgnI3d0LWxvYWRpbmctYm94JykuY3NzKCdkaXNwbGF5Jywnbm9uZScpCgkJCQkJfQoJCQkJfQoJCQl9KQoJCQkKCQkJLy/ngrnlh7sg6YCa55+lCgkJCXZpcEJveC5maW5kKCIjd3QtbXktbm90aWZ5Iikub24oImNsaWNrIiwgKCkgPT4gewoJCQkJaWYoX0NPTkZJR18uc2hvd05vdGlmeSl7CgkJCQkJJCgnI3d0LW5vdGlmeS1ib3gnKS5jbGljaygpCgkJCQl9ZWxzZXsKCQkJCQljb25zdCBub3RpZnkgPSAJR01fZ2V0VmFsdWUoJzkxdmlkZW9fbm90aWZ5JywnJykKCQkJCQlpZihub3RpZnkgJiYgKG5vdGlmeS5kYXRlID09IG5ldyBEYXRlKCkuc2V0SG91cnMoMCwwLDAsMCkpKXsKCQkJCQkJdXRpbC5zaG93Tm90aWZ5KHsgdGl0bGU6IG5vdGlmeS5tc2d9KQoJCQkJCX1lbHNlewoJCQkJCQl1dGlsLnNob3dOb3RpZnkoeyB0aXRsZTogJ+i/mOayoeaciemAmuefpeS/oeaBryd9KQoJCQkJCX0KCQkJCQlHTV9zZXRWYWx1ZSgnOTF2aWRlb191cGRhdGVkX3ZlcnNpb25fZGF0ZScsbmV3IERhdGUoKS5zZXRIb3VycygwLDAsMCwwKSkKCQkJCX0KCQkJfSkKCQkKCQkJLy/ngrnlh7sg6ZqQ6JeP5o6n5Yi25ZmoCgkJCXZpcEJveC5maW5kKCIjd3QtaGlkLWJveCIpLm9uKCJjbGljayIsICgpID0+IHsKCQkJCXZpcEJveC5jc3MoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgxMjUlLCAtNTAlKSIpCgkJCQkkKCcjd3QtbGVmdC1zaG93JykuY3NzKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgLTUwJSkiKQoJCQkJR01fc2V0VmFsdWUoJzkxdmlkZW9faGlkX2NvbnRyb2xsZXInLDEpCgkJCX0pCgkJCgkJCS8v54K55Ye7IOaYvuekuuaOp+WItuWZqAoJCQkkKCcjd3QtbGVmdC1zaG93Jykub24oJ2NsaWNrJywoKT0+ewoJCQkJJCgnI3d0LWxlZnQtc2hvdycpLmNzcygidHJhbnNmb3JtIiwidHJhbnNsYXRlKC02MHB4LCAtNTAlKSIpCgkJCQl2aXBCb3guY3NzKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgLTUwJSkiKQoJCQkJR01fc2V0VmFsdWUoJzkxdmlkZW9faGlkX2NvbnRyb2xsZXInLCcnKQoJCQl9KQoJCQoJCQkvL+eCueWHuyDorr7nva7nlYzpnaLpga7nvakKCQkJJCgnI3d0LW1hc2stYm94Jykub24oJ2NsaWNrJywoKT0+ewoJCQkJJCgnI3d0LW1hc2stYm94JykuY3NzKCdkaXNwbGF5Jywnbm9uZScpCgkJCQkkKCIjd3Qtc2V0LWJveCIpLnJlbW92ZUNsYXNzKCdzaG93LXNldC1ib3gnKQoJCQkJJCgiI3d0LXNldC1ib3giKS5hZGRDbGFzcygnaGlkLXNldC1ib3gnKQoJCQkJc2V0VGltZW91dCgoKT0+ewoJCQkJCSQoIiN3dC1zZXQtYm94IC5saW5lLWJveCIpLmNzcygnZGlzcGxheScsJ25vbmUnKQoJCQkJCSQoIiN3dC1zZXQtYm94IC51c2VyLWJveC1jb250YWluZXIiKS5jc3MoJ2Rpc3BsYXknLCdub25lJykKCQkJCX0sNTAwKQoJCQl9KQoJCQkKCQkJLy/ngrnlh7vkuobmjqjlub9hcHAKCQkJJCgnI3d0LXNldC1ib3ggLnVzZXItYm94LWNvbnRhaW5lciAudXNlci1ib3ggLmluZm8tYm94Jykub24oJ2NsaWNrJyxmdW5jdGlvbihlKXsKCQkJCWxldCB1cmwgPSBfQ09ORklHXy5ob21lUGFnZQoJCQkJdHJ5ewoJCQkJCS8vIHVybCA9IGUuY3VycmVudFRhcmdldC5hdHRyaWJ1dGVzWydkYXRhLWFkZHJlc3MnXS52YWx1ZQoJCQkJfWNhdGNoKGUpe30KCQkJCWlmKHVybCAmJiB1cmwgIT0gJ3VuZGVmaW5lZCcpewoJCQkJCW5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHVybCkudGhlbihyZXMgPT57CgkJCQkJCXV0aWwuc2hvd1RpcHMoeyB0aXRsZTogJ+e9keermeWcsOWdgOWkjeWItuaIkOWKnyd9KQoJCQkJCX0pCgkJCQl9ZWxzZXsKCQkJCQl1dGlsLnNob3dUaXBzKHsgdGl0bGU6ICfor7fliY3lvoDnvZHlnYDojrflj5bohJrmnKzlnLDlnYAnfSkKCQkJCX0KCQkJfSkKCQkKCQkJLy/ngrnlh7sg6K6+572uL+aIkeeahOS/oeaBr+eVjOmdouWFs+mXrQoJCQkkKCIjd3Qtc2V0LWJveCAuY2xvc2UiKS5vbigiY2xpY2siLCAoKSA9PiB7CgkJCQkkKCcjd3QtbWFzay1ib3gnKS5jbGljaygpCgkJCX0pCgkJfQoJfQoKICAgIHJldHVybiB7CiAgICAgICAgc3RhcnQ6ICgpID0+IHsKCQkJaWYod2luZG93LmxvY2F0aW9uLmhyZWYucmVwbGFjZSh3aW5kb3cubG9jYXRpb24ub3JpZ2luLCcnKS5sZW5ndGggPiAxKSB7IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtyZXR1cm59CgkJCWNvbnN0IHd0XzkxdmlkZW9fZmlyc3RfdXNlID0gR01fZ2V0VmFsdWUoJ3d0XzkxdmlkZW9fZmlyc3RfdXNlJywnJykKCQkJaWYoIXd0XzkxdmlkZW9fZmlyc3RfdXNlKSBHTV9zZXRWYWx1ZSgnd3RfOTF2aWRlb19maXJzdF91c2UnLERhdGUubm93KCkgKyAoTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogODk5OTk5ICsgMTAwMDAwKSArICcnKSkKCQkJX0NPTkZJR18udXNlciA9IEdNX2dldFZhbHVlKCd3dF85MXZpZGVvX3VzZXInLCAnJykKCQkJdXRpbC5pbml0VW5zYWZlV2luZG93KCkKCQkJaWYoX0NPTkZJR18udXNlcil7CgkJCQlpZihfQ09ORklHXy51c2VyLmxvZ2luX2RhdGUgJiYgKF9DT05GSUdfLnVzZXIubG9naW5fZGF0ZSAhPSBuZXcgRGF0ZSgpLnNldEhvdXJzKDAsMCwwLDApKSl7CgkJCQkJX0NPTkZJR18udXNlciA9ICcnCgkJCQkJR01fc2V0VmFsdWUoJ3d0XzkxdmlkZW9fdXNlcicsICcnKQoJCQkJfQoJCQl9CgkJCWNvbnN0IHRhcmdldENvbnN1bWVyID0gbmV3IEJhc2VDb25zdW1lcgoJCQl0YXJnZXRDb25zdW1lci5wYXJzZSgpCiAgICAgICAgfSwKCQlfQ09ORklHXwogICAgfQp9KSgpOwoKKGZ1bmN0aW9uICgpIHsKCXN1cGVyVmlwLnN0YXJ0KCk7Cn0pKCk7
Add Comment
Please, Sign In to add comment