Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_含羞草研究所免费看#0@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDlkKvnvp7ojYnnoJTnqbbmiYDlhY3otLnnnIsKLy8gQG5hbWVzcGFjZSAgICBodHRwOi8vdGFtcGVybW9ua2V5Lm5ldC8KLy8gQHZlcnNpb24gICAgICAyLjEuNgovLyBAZGVzY3JpcHRpb24gIOmSiOWvuSDlkKvnvp7ojYnnoJTnqbbmiYAg55qE5LyY5YyW6ISa5pys77yM5q2k6ISa5pys5Y+v5Lul6K6p55So5oi36KeC55yLCi8vIEBkZXNjcmlwdGlvbiAg5Lit6L2s6aG1IGh0dHBzOi8vd3d3LkZpMTEudHYgOyBodHRwczovL3d3dy5GaTExLmxpdmUKLy8gQGRlc2NyaXB0aW9uICDkuIDkvY3nvZHlj4vmjqjojZDvvJpodHRwczovLzV6NHFjMC45MWh1Yi5vbmU6MjA5Ni9pbmRleD9yZWY9NDA5NTEKLy8gQGF1dGhvciAgICAgICBZb3UKLy8gQG1hdGNoICAgICAgICBodHRwczovL3d3dy5oeGNiYjEwMS5jb20vKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vaDUuaHhjYmIxMDEuY29tLyoKLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly93d3cuaHhjYmJcZCtcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly9oNS5oeGNiYlxkK1wuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwOi8vd3d3Lmh4Y2JiXGQrXC5jb20uKyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHA6Ly9oNS5oeGNiYlxkK1wuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL3d3dy5oeGNwcFxkK1wuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL2g1Lmh4Y3BwXGQrXC5jb20uKyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHA6Ly93d3cuaHhjcHBcZCtcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly9oNS55YXNoZW5nZ2QuY29tLisKLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cDovL2g1Lmh4Y3BwXGQrXC5jb20uKyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHBzOi8vd3d3LmZpMTFzbVxkK1wuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL2g1LmZpMTFzbVxkK1wuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL3d3dy55YXNoZW5nZ2QuY29tLiskLyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHBzOi8vd3d3LmZpMTFhdlxkK1wuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL2g1LmZpMTFhdlxkK1wuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL3d3dy5maTExdHZcZCtcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly9oNS5maTExdHZcZCtcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly93d3cuaHh4LW5ldy1yZXRhaWxcZCpcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly9oNS5oeHgtbmV3LXJldGFpbFxkKlwuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL3d3dy5qaWFuZ3VvbXV5ZVxkKlwuY29tLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL2g1LmppYW5ndW9tdXllXGQqXC5jb20uKyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHBzOi8vd3d3LmxhY2NvZ2hcZCpcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly9oNS5sYWNjb2doXGQqXC5jb20uKyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHBzOi8vd3d3LnBhbmdyalxkKlwudmlwLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL2g1LnBhbmdyalxkKlwudmlwLiskLwovLyBAaW5jbHVkZSAgICAgICAgL15odHRwczovL3d3dy5maTExc21cZCpcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly9oNS5maTExc21cZCpcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly93d3cuZmkxMWNjXGQqXC5jb20uKyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHBzOi8vaDUuZmkxMWNjXGQqXC5jb20uKyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHBzOi8vd3d3LmhhZGFcZCpcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly9oNS5oYWRhXGQqXC5jb20uKyQvCi8vIEBpbmNsdWRlICAgICAgICAvXmh0dHBzOi8vd3d3LnR5ZWhcZCpcLmNvbS4rJC8KLy8gQGluY2x1ZGUgICAgICAgIC9eaHR0cHM6Ly9oNS50eWVoXGQqXC5jb20uKyQvCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly93d3cuc2R4NnEuY29tLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovL2g1LnNkeDZxLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly93d3cudmd4NHAuY29tLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovL2g1LnZneDRwLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly9maTExLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly9maTExLmNuLyoKLy8gQGljb24gICAgICAgICBodHRwczovL3d3dy5nb29nbGUuY29tL3MyL2Zhdmljb25zP3N6PTY0JmRvbWFpbj1oeGNiYjEwMS5jb20KLy8gQGdyYW50ICAgICAgICBub25lCi8vIEByZXF1aXJlIGh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NyeXB0by1qcy80LjAuMC9jcnlwdG8tanMubWluLmpzCi8vIEBkb3dubG9hZFVSTCBodHRwczovL3VwZGF0ZS5zbGVhenlmb3JrLm9yZy9zY3JpcHRzLzQ1NjI3NS8lRTUlOTAlQUIlRTclQkUlOUUlRTglOEQlODklRTclQTAlOTQlRTclQTklQjYlRTYlODklODAlRTUlODUlOEQlRTglQjQlQjklRTclOUMlOEIudXNlci5qcwovLyBAdXBkYXRlVVJMIGh0dHBzOi8vdXBkYXRlLnNsZWF6eWZvcmsub3JnL3NjcmlwdHMvNDU2Mjc1LyVFNSU5MCVBQiVFNyVCRSU5RSVFOCU4RCU4OSVFNyVBMCU5NCVFNyVBOSVCNiVFNiU4OSU4MCVFNSU4NSU4RCVFOCVCNCVCOSVFNyU5QyU4Qi5tZXRhLmpzCi8vID09L1VzZXJTY3JpcHQ9PQoKbGV0IEdsb2JhbCA9IHsKICAgIGRldmljZVR5cGU6ICJwYyIsCiAgICBwYWdlVHlwZTogImxpdmUiLAogICAgaXNSZWxvYWRWaWRlbzogZmFsc2UKfQoKZnVuY3Rpb24gaW1wb3J0TGliKCkgewogICAgLy8gaW1wb3J0SlMoImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NyeXB0by1qcy80LjAuMC9jcnlwdG8tanMubWluLmpzIikKICAgIGltcG9ydEpTKCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9obHMuanMvMS4xLjUvaGxzLm1pbi5qcyIpCiAgICBpbXBvcnRKUygiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZHBsYXllci8xLjI2LjAvRFBsYXllci5taW4uanMiKQp9CgpmdW5jdGlvbiBpbXBvcnRKUyhzcmMpIHsKICAgIGxldCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgIHNjcmlwdC5zcmMgPSBzcmM7CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7Cn0KClZJVEVfQVBQX0FFU19LRVkgPSAnQjc3QTlGRjdGMzIzQjU0MDQ5MDIxMDIyNTc1MDNDMkYnClZJVEVfQVBQX0FFU19JViA9ICdCNzdBOUZGN0YzMjNCNTQwNDkwMjEwMjI1NzUwM0MyRicKVklURV9BUFBfQUVTX1BBU1NXT1JEX0tFWSA9ICIwMTIzNDU2Nzg5MTIzNDU2IgpWSVRFX0FQUF9BRVNfUEFTU1dPUkRfSVYgPSAiMDEyMzQ1Njc4OTEyMzQ1NiIKZGVmYXVsdFBhc3N3b3JkID0gIjEyMzQ1NiIKYmFzZVVSTCA9ICJodHRwczovL2FwaS5xaWFueXVld2VuaHVhLnh5eiIKCnJlZ2lzdGVyUGFyYW0gPSB7CiAgICB1c2VyX2xvZ2luOiAiIiwKICAgIHVzZXJfcGFzczogIiIsCiAgICBzb3VyY2U6ICJwYyIsCiAgICBjaGFubmVsOiAiUCIsCiAgICAvL3Zpc2l0b3JJZDogbnVsbCA9PSAoZCA9IHQudmlzaXRvckluZm8pID8gdm9pZCAwIDogZC52aXNpdG9ySWQKICAgIHZpc2l0b3JJZDogMTAwMDAwMDAgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMCkKfQoKZnVuY3Rpb24gcmFuZG9tUGhvbmVOdW1iZXIoKSB7CiAgICBsZXQgcHJlZml4QXJyYXkgPSBuZXcgQXJyYXkoIjEzMCIsICIxMzEiLCAiMTMyIiwgIjEzMyIsICIxMzUiLCAiMTM3IiwgIjEzOCIsICIxNzAiLCAiMTg3IiwgIjE4OSIpOwogICAgbGV0IGkgPSBwYXJzZUludCgxMCAqIE1hdGgucmFuZG9tKCkpOwogICAgbGV0IHByZWZpeCA9IHByZWZpeEFycmF5W2ldOwoKICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB7CiAgICAgICAgcHJlZml4ID0gcHJlZml4ICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApOwogICAgfQoKICAgIHJldHVybiBwcmVmaXg7Cn0KCmZ1bmN0aW9uIGdlblJlZ2lzdGVyRGF0YSgpIHsKICAgIHJlZ2lzdGVyUGFyYW0udXNlcl9sb2dpbiA9IHJhbmRvbVBob25lTnVtYmVyKCkKICAgIGVuY3J5cHRQYXJhbSA9IHsKICAgICAgICBrZXk6IFZJVEVfQVBQX0FFU19QQVNTV09SRF9LRVksCiAgICAgICAgaXY6IFZJVEVfQVBQX0FFU19QQVNTV09SRF9JVgogICAgfQogICAgcmVnaXN0ZXJQYXJhbS51c2VyX3Bhc3MgPSBlbmNyeXB0KGRlZmF1bHRQYXNzd29yZCwgZW5jcnlwdFBhcmFtKQogICAgcmV0dXJuIHJlZ2lzdGVyUGFyYW07Cn0KCgpmdW5jdGlvbiBlbmNyeXB0KGNpcGhlcnRleHQsIHsga2V5OiBrZXksIGl2OiBpdiB9ID0ge30pIHsKICAgIHZhciBhID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoY2lwaGVydGV4dCkKICAgICAgICAsIGkgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChhLCBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShrZXkgfHwgVklURV9BUFBfQUVTX0tFWSksIHsKICAgICAgICAgICAgaXY6IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGl2IHx8IFZJVEVfQVBQX0FFU19JViksCiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLAogICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczcKICAgICAgICB9KTsKICAgIHJldHVybiBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShpLmNpcGhlcnRleHQpCn0KCmZ1bmN0aW9uIGdldFZpZGVvSWQoKSB7CiAgICBsZXQgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAvL+mbhuWQiOexu+inhumikQogICAgdXJsID0gdXJsLnNwbGl0KCc/JylbMF07CiAgICBpZiAodXJsLmVuZHNXaXRoKCIwIikpIHsKICAgICAgICBsZXQgdXJsU3BsaXRlZCA9IHVybC5zcGxpdCgicGxheS92aWRlbyIpCiAgICAgICAgdXJsU3BsaXRlZCA9IHVybFNwbGl0ZWRbMV0uc3BsaXQoIi8iKQogICAgICAgIGxldCB2aWRlb0lkID0gdXJsU3BsaXRlZFsxXQogICAgICAgIHJldHVybiBwYXJzZUludCh2aWRlb0lkKTsKICAgIH0KICAgIGxldCB1cmxTcGxpdGVkID0gdXJsLnNwbGl0KCIvIik7CiAgICBsZXQgdmlkZW9JZCA9IHVybFNwbGl0ZWRbdXJsU3BsaXRlZC5sZW5ndGggLSAxXTsKICAgIGNvbnNvbGUubG9nKCdUaGUgdmlkZW9JZCBpcycsdmlkZW9JZCk7CiAgICByZXR1cm4gcGFyc2VJbnQodmlkZW9JZCk7Cn0KCgphc3luYyBmdW5jdGlvbiBnZXRWaWRlb1VybCh0b2tlbiwgdmlkZW9JZCkgewogICAgd2luZG93LnZpZGVvSWQgPSB2aWRlb0lkCiAgICBwYXRoID0gIi92aWRlb3MvZ2V0UHJlVXJsIgogICAgbGV0IG15SGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7CiAgICBteUhlYWRlcnMuYXBwZW5kKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04OyIpOwogICAgbXlIZWFkZXJzLmFwcGVuZCgiQXV0aCIsIHRva2VuKTsKICAgIGxldCB2aWRlb1VybFBhcmFtID0gewogICAgICAgIHZpZGVvSWQ6IHZpZGVvSWQKICAgIH0KICAgIHZpZGVvVXJsUGFyYW0gPSBKU09OLnN0cmluZ2lmeSh2aWRlb1VybFBhcmFtKQogICAgbGV0IG5vdyA9IG5ldyBEYXRlKCkKICAgIGRhdGEgPSB7CiAgICAgICAgZW5kYXRhOiBlbmNyeXB0KHZpZGVvVXJsUGFyYW0gfHwge30pLAogICAgICAgIGVudHM6IGVuY3J5cHQocGFyc2VJbnQobm93LmdldFRpbWUoKSAvIDFlMykgKyA2MCAqIG5vdy5nZXRUaW1lem9uZU9mZnNldCgpKQogICAgfQoKICAgIGxldCByZXF1ZXN0T3B0aW9ucyA9IHsKICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICBoZWFkZXJzOiBteUhlYWRlcnMsCiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksCiAgICAgICAgLy8gICAgcmVkaXJlY3Q6ICdmb2xsb3cnCiAgICB9OwoKICAgIGxldCByZXMgPSBhd2FpdCBmZXRjaChiYXNlVVJMICsgcGF0aCwgcmVxdWVzdE9wdGlvbnMpOwogICAgbGV0IGpzb24gPSBhd2FpdCByZXMuanNvbigpCiAgICBtM3U4VXJsID0ganNvbi5kYXRhLnVybAogICAgdHJ5IHsKICAgICAgICBsZXQgc3BsaXRlZCA9IG0zdThVcmwuc3BsaXQoIj8iKQogICAgICAgIGxldCBtM3U4VXJsUGFyYW1zID0gc3BsaXRlZFsxXQogICAgICAgIGxldCB1cmxTZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKG0zdThVcmxQYXJhbXMpCiAgICAgICAgdXJsU2VhcmNoUGFyYW1zLmRlbGV0ZSgic3RhcnQiKQogICAgICAgIHVybFNlYXJjaFBhcmFtcy5kZWxldGUoImVuZCIpCiAgICAgICAgbGV0IG5ld00zVThVcmwgPSBzcGxpdGVkWzBdICsgIj8iICsgdXJsU2VhcmNoUGFyYW1zLnRvU3RyaW5nKCkKICAgICAgICByZXR1cm4gbmV3TTNVOFVybAogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICByZXR1cm4gbnVsbAogICAgfQp9CgpmdW5jdGlvbiBzZXRDb3B5QnRuKGVsZW1lbnRDbGFzcyxuZXdNM1U4VXJsKXsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWxlbWVudENsYXNzKS5pbm5lckhUTUw9JzxidXR0b24gaWQ9ImNvcHlNM1U4IiBzdHlsZT0iY29sb3I6IHJlZDsiPuWkjeWItuWcsOWdgDwvYnV0dG9uPicKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjb3B5TTNVOCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXN5bmMgKGUpID0+IHsKICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChuZXdNM1U4VXJsKTsKICAgICAgICBhbGVydCgi5aSN5Yi25oiQ5YqfIikKICB9KTsKfQoKZnVuY3Rpb24gcGxheShwbGF5ZXJVcmwsIHBpYywgY29udGFpbmVyLCBwbGF5VHlwZSkgewogICAgY29udGFpbmVyLnN0eWxlLnpJbmRleCA9IDk5OTk5CiAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIjsKICAgIHZhciB2aWRlb09iamVjdCA9IHsKICAgICAgICBjb250YWluZXI6ICcjdl9wcmlzbScsIC8v5a655Zmo55qESUTmiJZjbGFzc05hbWUKICAgICAgICAvLyBsaXZlOiB0cnVlLC8v5oyH5a6a5Li655u05pKtCiAgICAgICAgc2VlazogJ2Nvb2tpZScsLy/mjIflrprot7PovazliLBjb29raWXorrDlvZXnmoTml7bpl7TvvIzkvb/nlKjor6XlsZ7mgKflv4XpnIDphY3nva7lsZ7mgKdjb29raWUKICAgICAgICBjb29raWU6ICdhYmNkZWZnJywvL2Nvb2tpZeWQjeensCzor7flnKjlkIzkuIDln5/kuK3kv53mjIHllK/kuIAKICAgICAgICBwbHVnOiAnaGxzLmpzJywvL+S9v+eUqGhscy5qc+aPkuS7tuaSreaUvm0zdTgKICAgICAgICB2aWRlbzogcGxheWVyVXJsLy/op4bpopHlnLDlnYAKICAgIH0KICAgIHdpbmRvdy5jayA9IG5ldyBja3BsYXllcih2aWRlb09iamVjdCk7CiAgICB3aW5kb3cuY2sucGxheSgpCn0KCmZ1bmN0aW9uIG1vYmlsZVBsYXkocGxheWVyVXJsLCBwaWMsIGNvbnRhaW5lciwgcGxheVR5cGUpIHsKICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSA5OTk5OQogICAgd2luZG93LmRwID0gbmV3IERQbGF5ZXIoewogICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLCAgICAgICAgICAgICAgICAgICAgICAgLy8g5Y+v6YCJ77yMcGxheWVy5YWD57SgCiAgICAgICAgYXV0b3BsYXk6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPr+mAie+8jOiHquWKqOaSreaUvuinhumike+8jOS4jeaUr+aMgeenu+WKqOa1j+iniOWZqAogICAgICAgIHRoZW1lOiAnI0ZBREZBMycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6/pgInvvIzkuLvpopjpopzoibLvvIzpu5jorqQ6ICNiN2RhZmYKICAgICAgICBsb29wOiB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Y+v6YCJ77yM5b6q546v5pKt5pS+6Z+z5LmQ77yM6buY6K6k77yadHJ1ZQogICAgICAgIGxhbmc6ICd6aCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6/pgInvvIzor63oqIDvvIxgemgn55So5LqO5Lit5paH77yMYGVuJ+eUqOS6juiLseivre+8jOm7mOiupO+8mk5hdmlnYXRvciBsYW5ndWFnZQogICAgICAgIHNjcmVlbnNob3Q6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6/pgInvvIzlkK/nlKjmiKrlm77lip/og73vvIzpu5jorqTlgLzvvJpmYWxzZe+8jOazqOaEj++8muWmguaenOiuvue9ruS4unRydWXvvIzop4bpopHlkozop4bpopHmiKrlm77lv4XpobvlkK/nlKjot6jln58KICAgICAgICBob3RrZXk6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Y+v6YCJ77yM57uR5a6a54Ot6ZSu77yM5YyF5ous5bem5Y+z6ZSu5ZKM56m65qC877yM6buY6K6k5YC877yadHJ1ZQogICAgICAgIHByZWxvYWQ6ICdhdXRvJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6/pgInvvIzpooTliqDovb3nmoTmlrnlvI/lj6/ku6XmmK8nbm9uZScnbWV0YWRhdGEnJ2F1dG8n77yM6buY6K6k5YC877yaJ2F1dG8nCiAgICAgICAgdmlkZW86IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOW/hemcgO+8jOinhumikeS/oeaBrwogICAgICAgICAgICB1cmw6IHBsYXllclVybCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOW/heWhq++8jOinhumikee9keWdgAogICAgICAgICAgICBwaWM6IHBpYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPr+mAie+8jOinhumikeaIquWbvgogICAgICAgICAgICB0aHVtYm5haWxzOiBwaWMKICAgICAgICB9CiAgICB9KTsKfQoKYXN5bmMgZnVuY3Rpb24gcGMoKSB7CiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoImhvbWUiKSkgewogICAgICAgIHJldHVybgogICAgfQogICAgbGV0IHZpZGVvSWQgPSBnZXRWaWRlb0lkKCkKICAgIGxldCB2aWRlb1VybCA9IGF3YWl0IGdldFZpZGVvVXJsKG51bGwsIHZpZGVvSWQpCiAgICBpZiAodmlkZW9VcmwgPT0gbnVsbCkgewogICAgICAgIHJldHVybgogICAgfQogICAgc2V0Q29weUJ0bigiLnZpZGVvLWljb24iLHZpZGVvVXJsKQogICAgcGljID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmVsLWltYWdlLm92ZXJmbG93LWhpZGRlbiA+IGltZyIpCiAgICBpZiAocGljKSB7CiAgICAgICAgcGljID0gcGljLmdldEF0dHJpYnV0ZSgic3JjIikKICAgIH0KICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN2X3ByaXNtIikKICAgIHBsYXlUeXBlID0gJ2xpdmUnCiAgICBlbGVtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZpcC1tYXNrIikKICAgIGlmIChlbGVtKSB7CiAgICAgICAgZWxlbS5yZW1vdmUoKQogICAgfQogICAgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5lbC1pbWFnZS5vdmVyZmxvdy1oaWRkZW4iKQogICAgaWYgKGVsZW0pIHsKICAgICAgICBlbGVtLnJlbW92ZSgpCiAgICB9CiAgICBlbGVtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnJlbGF0aXZlLmJnLW92ZXJsYXk+Lm92ZXJmbG93LWhpZGRlbiAiKQogICAgaWYgKGVsZW0pIHsKICAgICAgICBlbGVtLnJlbW92ZSgpCiAgICB9CiAgICBlbGVtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZpcC1tYXNrIikKICAgIGlmIChlbGVtKSB7CiAgICAgICAgZWxlbS5yZW1vdmUoKQogICAgfQogICAgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5lbC1pbWFnZS5hYnNvbHV0ZSAiKQogICAgaWYgKGVsZW0pIHsKICAgICAgICBlbGVtLnJlbW92ZSgpCiAgICB9CiAgICBlbGVtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmFic29sdXRlLmJnLW92ZXJsYXkiKQogICAgaWYgKGVsZW0pIHsKICAgICAgICBlbGVtLnJlbW92ZSgpCiAgICB9CgogICAgcGxheSh2aWRlb1VybCwgcGljLCBjb250YWluZXIsIHBsYXlUeXBlKQp9CgoKYXN5bmMgZnVuY3Rpb24gbW9iaWxlKCkgewogICAgaWYgKCF3aW5kb3cubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgiMCIpKSB7CiAgICAgICAgcmV0dXJuCiAgICB9CiAgICBsZXQgdmlkZW9VcmwgPSBhd2FpdCBnZXRWaWRlb1VybChudWxsLCBnZXRWaWRlb0lkKCkpCiAgICBpZiAodmlkZW9VcmwgPT0gbnVsbCkgewogICAgICAgIHJldHVybgogICAgfQogICAgc2V0Q29weUJ0bigiLnRlbmRlbmN5LXJvdyIsdmlkZW9VcmwpCiAgICBwaWMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucHViLXZpZGVvLXBvc3RlciIpCiAgICBpZiAocGljKSB7CiAgICAgICAgcGljID0gcGljLmdldEF0dHJpYnV0ZSgic3JjIikKICAgIH0KICAgIC8vY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZhbi1zdGlja3kiKQogICAgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3ZpZGVvMSIpCiAgICBwbGF5VHlwZSA9ICdsaXZlJwogICAgLy9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudHJ5LWRldGFpbC12aWRlbyIpLnJlbW92ZSgpCiAgICBtb2JpbGVQbGF5KHZpZGVvVXJsLCBwaWMsIGNvbnRhaW5lciwgcGxheVR5cGUpCn0KCmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7CiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHsKICAgICAgICBpZih3aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24uaW5jbHVkZXMoIldpbmRvd3MiKSl7CiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGxldCB2aWRlb0lkID0gZ2V0VmlkZW9JZCgpCiAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy52aWRlb0lkID09IHZpZGVvSWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHBjKCkKICAgICAgICAgICAgICAgIH0sIDMwMCkKICAgICAgICAgICAgfSwgdHJ1ZSkKICAgICAgICAgICAgcGMoKQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGltcG9ydExpYigpCiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmICghd2luZG93LmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoIjAiKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGV0IHZpZGVvSWQgPSBnZXRWaWRlb0lkKCkKICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnZpZGVvSWQgPT0gdmlkZW9JZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbW9iaWxlKCkKICAgICAgICAgICAgICAgIH0sIDEwMCkKCiAgICAgICAgICAgIH0sIHRydWUpCiAgICAgICAgICAgIG1vYmlsZSgpCiAgICAgICAgfQogICAgfSwgMTgwMCkKfQoKCm1haW4oKQ==
Add Comment
Please, Sign In to add comment