Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_含羞草@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDlkKvnvp7ojYkKLy8gQG5hbWVzcGFjZSAgICBodHRwOi8vdGFtcGVybW9ua2V5Lm5ldC8KLy8gQHZlcnNpb24gICAgICAyLjEuMwovLyBAZGVzY3JpcHRpb24gIOWQq+e+nuiNiS3op6PmnpDohJrmnKzvvIzmsLjkuYXlr7zoiKpodHRwOi8vd3d3LkZpMTEudHYg5Lit6L2s5Zyw5Z2A77yaaHR0cDovL3d3dy5wbWVhcXZlLmNuICAgIOmBh+WIsOaSreaUvuWcsOWdgOS4uuaXp+aSreaUvuWcsOWdgOaIluiAheaXoOWPjeW6lO+8jOivt+iHquihjOWkmuWIt+aWsOWHoOasoeW9k+WJjemhtemdou+8jOmHjeaWsOaSreaUvuWNs+WPrwovLyBAYXV0aG9yICAgICAgIOmZoumVvwovLyBAbWF0Y2ggICAgICAgICo6Ly8qL3BsYXkvdmlkZW8vKgovLyBAbWF0Y2ggICAgICAgICo6Ly8qL2xpdmUvKgovLyBAbWF0Y2ggICAgICAgICo6Ly9oNS4qLmNvbS9ob21lCi8vIEBtYXRjaCAgICAgICAgKjovLyouc2dnNjMuKgovLyBAbWF0Y2ggICAgICAgICo6Ly9oNS4qLmNuL2hvbWUKLy8gQG1hdGNoICAgICAgICAqOi8vd3d3LiouY29tL2hvbWUKLy8gQG1hdGNoICAgICAgICAqOi8vd3d3LiouY24vaG9tZQovLyBAbWF0Y2ggICAgICAgICo6Ly9oNS4qLmNvbS9wbGF5L3ZpZGVvLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovL3d3dy5lcmRkOS5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly9oNS4qLmNuL3BsYXkvdmlkZW8vKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vd3d3LmZpMTFhYTI0LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovL3d3dy4qLmNvbS9wbGF5L3ZpZGVvLyoKLy8gQG1hdGNoICAgICAgICAqOi8vd3d3LiouY24vcGxheS92aWRlby8qCi8vIEBpbmNsdWRlICAgICAgL14uKj86Ly8uKj9cLmZpLio/XC5jb20uKj8kLwovLyBAaW5jbHVkZSAgICAgIC9eLio/Oi8vLio/XC5oeC4qP1wuY29tLio/JC8KLy8gQGluY2x1ZGUgICAgICAvXi4qPzovLy4qPy9wbGF5L3ZpZGVvLio/JC8KLy8gQGluY2x1ZGUgICAgICAvXi4qPzovLyh3d3d8aDUpXC4uKj9cLmNvbS9wbGF5L3ZpZGVvLy4qPyQvCi8vIEBpbmNsdWRlICAgICAgL14uKj86Ly8od3d3fGg1KVwuLio/XC5jbi9wbGF5L3ZpZGVvLy4qPyQvCi8vIEBpY29uICAgICAgICAgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zMi9mYXZpY29ucz9zej02NCZkb21haW49M2tqcy5jb20KLy8gQGdyYW50ICAgICAgICBub25lCi8vIEByZXF1aXJlICAgICAgaHR0cHM6Ly9jZG4uYm9vdGNkbi5uZXQvYWpheC9saWJzL2NyeXB0by1qcy80LjEuMS9jcnlwdG8tanMubWluLmpzCi8vIEByZXF1aXJlICAgICAgaHR0cHM6Ly9jZG4uYm9vdGNkbi5uZXQvYWpheC9saWJzL2pxdWVyeS8zLjYuNC9qcXVlcnkubWluLmpzCi8vIEByZXF1aXJlICAgICAgaHR0cHM6Ly9jZG4uYm9vdGNkbi5uZXQvYWpheC9saWJzL2RwbGF5ZXIvMS4yNi4wL0RQbGF5ZXIubWluLmpzCi8vIEByZXF1aXJlICAgICAgaHR0cHM6Ly9jZG4uYm9vdGNkbi5uZXQvYWpheC9saWJzL2hscy5qcy8xLjEuNS9obHMubWluLmpzCi8vIEBydW4tYXQgICAgICAgZG9jdW1lbnQtZW5kCi8vIEBkb3dubG9hZFVSTCBodHRwczovL3VwZGF0ZS5zbGVhenlmb3JrLm9yZy9zY3JpcHRzLzQ3MDQxOS8lRTUlOTAlQUIlRTclQkUlOUUlRTglOEQlODkudXNlci5qcwovLyBAdXBkYXRlVVJMIGh0dHBzOi8vdXBkYXRlLnNsZWF6eWZvcmsub3JnL3NjcmlwdHMvNDcwNDE5LyVFNSU5MCVBQiVFNyVCRSU5RSVFOCU4RCU4OS5tZXRhLmpzCi8vID09L1VzZXJTY3JpcHQ9PQoKLy/kuK3ovazlnLDlnYDvvJpodHRwOi8vd3d3Lnpob25neW91Y2h1YW5tZWkueHl6Ci8v5ZCr576e6I2J5rC45LmF5a+86Iiq77yaaHR0cDovL3d3dy5GaTExLnR2IGh0dHA6Ly9maTExLmNvbSBodHRwOi8vZmkxMS5jbiBodHRwOi8vd3d3LkZpMTEubGl2ZSBodHRwOi8vd3d3LmZpMTFhdi5jb20KLy/miZPlvIDmsLjkuYXlr7zoiKrkuK3nmoTmnIDmlrDnvZHlnYDljbPlj6/vvIzoi6XmmK/ohJrmnKzmoYbmnrbpnIDopoHljLnphY3ln5/lkI3vvIzoh6rooYzlsIblr7zoiKrkuK3nmoTmnIDmlrDnvZHlnYDloavkuIrljbPlj68KLy/pgYfliLDmkq3mlL7lnLDlnYDkuLrml6fmkq3mlL7lnLDlnYDmiJbogIXml6Dlj43lupTvvIzor7foh6rooYzliLfmlrDlvZPliY3pobXpnaLvvIzph43mlrDmkq3mlL7ljbPlj68KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCuWQq+e+nuiNiS3op6PmnpDohJrmnKwK5Y+C6ICD5p2l5rqQaHR0cHM6Ly95YW9odW8ubWUvYmJzLTEyMTA1MTIuaHRtbAoK5a6e546w5ri45a6i5peg6ZmQ6K+V55So77yM5peg6ZmQ6I635Y+W55yf5a6e5pKt5pS+5Zyw5Z2ACgrlt7LlhbzlrrnmiYvmnLrlkoznlLXohJEKCiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCgoKLy8g5p2D6ZmQ6K6k6K+B5qCH6K+GCmNvbnN0IFRPS0VOID0gJ2h4Y18xLjAuMF90b2tlbic7Ci8vIOacjeWKoeWcsOWdgApsZXQgYmFzZVVybCA9IGxvY2F0aW9uLm9yaWdpbjsKLy8g6KeG6aKR6K+V55yL5Zyw5Z2ACmNvbnN0IFBSRV9VUkwgPSBiYXNlVXJsICsgJy9hcGkvdmlkZW9zL2dldFByZVVybCc7Ci8vIOeUqOaIt+azqOWGjOWcsOWdgApjb25zdCBSRUdfVVJMID0gYmFzZVVybCArICcvYXBpL2xvZ2luL3VzZXJSZWcnOwovL+iOt+WPlmNpZOWcsOWdgApjb25zdCBERVRBSUxfVVJMID0gYmFzZVVybCArICcvYXBpL2dhdGhlci9nZXREZXRhaWwnOwp2YXIgdmlkZW9VcmwgPSAiIjsKCgoKCi8vIOWPguaVsOWKoOWvhgpmdW5jdGlvbiBFbmNyeXB0KHdvcmQpIHsKICAgIGxldCBrZXlTdHIgPSAnQjc3QTlGRjdGMzIzQjU0MDQ5MDIxMDIyNTc1MDNDMkYnOwogICAgY29uc3Qga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uoa2V5U3RyKTsKICAgIGNvbnN0IGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uoa2V5U3RyKTsKICAgIGNvbnN0IHNyY3MgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSh3b3JkKTsKICAgIGNvbnN0IGVuY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHNyY3MsIGtleSwgewogICAgICAgIGl2OiBpdiwKICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQywKICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczcKICAgIH0pOwogICAgcmV0dXJuIENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KGVuY3J5cHRlZC5jaXBoZXJ0ZXh0KTsKfQoKLy8g6K+35rGC5bCB6KOFCmNvbnN0IGZldGNoRGF0YSA9IGFzeW5jICh1cmwsIGJvZHkpID0+IHsKICAgIGNvbnN0IFogPSBuZXcgRGF0ZTsKICAgIC8vY29uc29sZS5sb2coIuacjeWKoeWZqOezu+e7n+aXtumXtOaIsyIscGFyc2VJbnQoWi5nZXRUaW1lKCkgLyAxZTMpICsgWi5nZXRUaW1lem9uZU9mZnNldCgpICogNjApCiAgICByZXR1cm4gZmV0Y2godXJsLCB7CiAgICAgICAgbWV0aG9kOiAncG9zdCcsCiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICBlbmRhdGE6IEVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoYm9keSkpLAogICAgICAgICAgICBlbnRzOkVuY3J5cHQocGFyc2VJbnQoWi5nZXRUaW1lKCkgLyAxZTMpICsgWi5nZXRUaW1lem9uZU9mZnNldCgpICogNjApLAogICAgICAgIH0pLAogICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgLy8g5pC65bim6K6k6K+B5aS0CiAgICAgICAgICAgIGF1dGg6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRPS0VOKT8ucmVwbGFjZSgvIi9nLCAnJyksCiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicKICAgICAgICB9CiAgICB9KTsKfTsKCgoKCgoKLy8g5Y676Zmk6ZmQ5Yi2CmNvbnN0IHNldFZhbHVlID0gYXN5bmMgKCkgPT4gewogICAgbGV0IGlzRGV0YWlsID0gbG9jYXRpb24uaHJlZi5pbmNsdWRlcygncGxheS92aWRlbycpOwogICAgaWYgKGlzRGV0YWlsKSB7CiAgICAgICAgLy/liKTmlq3mmK9oNei/mOaYr+eUteiEkSzmiJbogIXmmK/lkIjpm4bop4bpopEKICAgICAgICBsZXQgdmlkZW9JZCA9IGxvY2F0aW9uLmhyZWYubWF0Y2goLy4rXC9oNVwuLitcL3BsYXlcL3ZpZGVvXC8oXGQrKVwvLisvKXx8bG9jYXRpb24uaHJlZi5tYXRjaCgvLitcL3d3d1wuLitcL3BsYXlcL3ZpZGVvXC8oXGQrKVwvLisvKTsKICAgICAgICBpZighdmlkZW9JZCl7CiAgICAgICAgICAgIHZpZGVvSWQgPSBsb2NhdGlvbi5ocmVmLm1hdGNoKC8uK1wvcGxheVwvdmlkZW9cLyhcZCspLylbMV07CiAgICAgICAgICAgIC8v55S16ISRCiAgICAgICAgICAgIC8vY29uc29sZS5sb2coIueUteiEkSIpCiAgICAgICAgICAgIHZhciBwcmVJbmZvID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oInByZUluZm8iKTsKICAgICAgICAgICAgaWYocHJlSW5mbyl7CiAgICAgICAgICAgICAgICBwcmVJbmZvID0gSlNPTi5wYXJzZShwcmVJbmZvKQogICAgICAgICAgICAgICAgcHJlSW5mby5jb3VudCA9IDA7CiAgICAgICAgICAgICAgICBwcmVJbmZvID0gSlNPTi5zdHJpbmdpZnkocHJlSW5mbykKICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJwcmVJbmZvIiwgcHJlSW5mbyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vYXdhaXQgc2V0RWxlbWVudCgicGMiLHZpZGVvSWQpOwogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCLmnIDlkI7nmoTop4bpopF1cmzvvJoiICsgdmlkZW9VcmwpCgogICAgICAgICAgICB2aWRlb0lkID0gZ2V0VmlkZW9JZCgpCiAgICAgICAgICAgIC8v55So5LqO5Yik5a6a5b2T5YmN6aG16Z2i55qEdmlkZW9JZOaYr+WQpuWPmOWMlgogICAgICAgICAgICBpZiAod2luZG93LnZpZGVvSWQgPT0gdmlkZW9JZCkgewogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGMoKQogICAgICAgIH1lbHNlewogICAgICAgICAgICAvL+aJi+acugogICAgICAgICAgICAvL2NvbnNvbGUubG9nKGAtLS0tLS0tLS0tLeWIpOaWreaYr+aJi+acuu+8miR7dmlkZW9JZH1gKTsKICAgICAgICAgICAgbGV0IGlzQ2lkID0gbG9jYXRpb24uaHJlZi5tYXRjaCgvLitcL2g1XC4uK1wvcGxheVwvdmlkZW9cLyhcZCspXC8xP3ZpZGVvSWQ9LisvKXx8bG9jYXRpb24uaHJlZi5tYXRjaCgvLitcL3d3d1wuLitcL3BsYXlcL3ZpZGVvXC8oXGQrKVwvMT92aWRlb0lkPS4rLyk7CiAgICAgICAgICAgIHZpZGVvSWQgPSB2aWRlb0lkWzFdOwogICAgICAgICAgICAvL+WQiOmbhuinhumikQogICAgICAgICAgICBpZihpc0NpZCl7CiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGAtLS0tLS0tLS0tLeWIpOaWreaYr2lzQ2lk77yaJHtpc0NpZH1gKTsKICAgICAgICAgICAgICAgIGxldCB1cmxfbGlzdCA9IGlzQ2lkWzBdLnNwbGl0KCcxP3ZpZGVvSWQ9Jyk7CiAgICAgICAgICAgICAgICAvL+W4puS6hnZpZGVvSWQ95ZCO57yACiAgICAgICAgICAgICAgICBpZih1cmxfbGlzdC5sZW5ndGg+MSl7CiAgICAgICAgICAgICAgICAgICAgdmlkZW9JZCA9IHVybF9saXN0WzFdOwogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coYC0tLS0tLS0tLS0tdmlkZW9JZO+8miR7dmlkZW9JZH1gKTsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coYC0tLS0tLS0tLS0taXNDaWTvvJoke3ZpZGVvSWR9YCk7CiAgICAgICAgICAgICAgICAgICAgdmlkZW9JZCA9IGF3YWl0IGlzTGlzdElkKGlzQ2lkWzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKHZpZGVvSWQpCiAgICAgICAgICAgIHZhciB0cnlQbGF5TnVtID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oInRyeVBsYXlOdW0iKTsKICAgICAgICAgICAgaWYodHJ5UGxheU51bSl7CiAgICAgICAgICAgICAgICB0cnlQbGF5TnVtID0gSlNPTi5wYXJzZSh0cnlQbGF5TnVtKQogICAgICAgICAgICAgICAgdHJ5UGxheU51bS5udW0gPSAwOwogICAgICAgICAgICAgICAgdHJ5UGxheU51bSA9IEpTT04uc3RyaW5naWZ5KHRyeVBsYXlOdW0pCiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgidHJ5UGxheU51bSIsIHRyeVBsYXlOdW0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vYXdhaXQgc2V0RWxlbWVudCgibW9iaWxlIix2aWRlb0lkKTsKICAgICAgICAgICAgLy/mlrDlop7liKTmlq3lkIjpm4YKICAgICAgICAgICAgaWYgKCEod2luZG93LmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoIjAiKSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgiMSIpfHwgbG9jYXRpb24uaHJlZi5tYXRjaCgvLisxP3ZpZGVvSWQ9LykpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgfQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCLmiafooYzliLDov5nmnaXkuoY9PT09PT09PT09PT09PT09PT09PT09PT0iKQogICAgICAgICAgICB2aWRlb0lkID0gYXdhaXQgZ2V0VmlkZW9JZCgpOwogICAgICAgICAgICBpZiAod2luZG93LnZpZGVvSWQgPT0gdmlkZW9JZCkgewogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9jb25zb2xlLmxvZygi5omn6KGM5omL5py65pON5L2cPT09PT09PT09PT09PT09PT09PT09PT09IikKICAgICAgICAgICAgbW9iaWxlKCkKICAgICAgICB9CgogICAgICAgIC8vY29uc29sZS5sb2coIuacgOWQjueahOinhumikUlE77yaIiArIHZpZGVvSWQpOwogICAgICAgIHZhciB2aWRlb0lkX0ZpbGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgidmlkZW9JZCIpOwogICAgICAgIC8vY29uc29sZS5sb2coIj09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCiAgICAgICAgaWYodmlkZW9JZF9GaWxlICYmIHZpZGVvSWRfRmlsZSA9PT0gdmlkZW9JZCl7CiAgICAgICAgICAgIC8vY29uc29sZS5sb2coIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKQogICAgICAgICAgICByZXR1cm4KICAgICAgICB9CiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oInZpZGVvSWQiLCB2aWRlb0lkKTsKICAgIH0KCgp9CgoKZnVuY3Rpb24gaW1wb3J0SlMoc3JjKSB7CiAgICBsZXQgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICBzY3JpcHQuc3JjID0gc3JjOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOwp9CgovL+WvvOWMhQpmdW5jdGlvbiBpbXBvcnRMaWIoKSB7CiAgICBpbXBvcnRKUygiaHR0cHM6Ly9jZG4uYm9vdGNkbi5uZXQvYWpheC9saWJzL2NyeXB0by1qcy80LjEuMS9jcnlwdG8tanMubWluLmpzIikKICAgIGltcG9ydEpTKCJodHRwczovL2Nkbi5ib290Y2RuLm5ldC9hamF4L2xpYnMvanF1ZXJ5LzMuNi40L2pxdWVyeS5taW4uanMiKQogICAgaW1wb3J0SlMoImh0dHBzOi8vY2RuLmJvb3RjZG4ubmV0L2FqYXgvbGlicy9kcGxheWVyLzEuMjYuMC9EUGxheWVyLm1pbi5qcyIpCiAgICBpbXBvcnRKUygiaHR0cHM6Ly9jZG4uYm9vdGNkbi5uZXQvYWpheC9saWJzL2hscy5qcy8xLjEuNS9obHMubWluLmpzIikKfQoKLy/liKTmlq3mmK/lkKbkuLrlkIjpm4Ys6L+U5Zue56ys5LiA6ZuGCmFzeW5jIGZ1bmN0aW9uIGlzTGlzdElkKGNpZCl7CiAgICAgbGV0IGpzb24gPSBhd2FpdCBmZXRjaERhdGEoREVUQUlMX1VSTCwgewogICAgICAgIGdhdGhlcklkOiBOdW1iZXIoY2lkKQogICAgfSkudGhlbihyZXNwb25zZSA9PiB7CiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsKICAgIH0pOwogICAgcmV0dXJuIGpzb24uZGF0YS5pbmZvLnZpZGVvc1swXS5pZDsKfQoKCi8v6I635Y+W6KeG6aKRaWQKYXN5bmMgZnVuY3Rpb24gZ2V0VmlkZW9JZCgpIHsKICAgIC8vY29uc29sZS5sb2coIuWMuemFjeinhumikWlkIikKICAgIGxldCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgIGxldCB1cmxfbGlzdCA9IHVybC5zcGxpdCgnMD9jaWQ9Jyk7CiAgICBsZXQgdmlkZW9JZCA9IDA7CiAgICBpZih1cmxfbGlzdC5sZW5ndGg8Mil7CiAgICAgICAgLy/miYvmnLrmqKHlvI/vvIzmma7pgJrop4bpopEKICAgICAgICBpZiAodXJsLmVuZHNXaXRoKCIwIikpIHsKICAgICAgICAgICAgbGV0IHVybFNwbGl0ZWQgPSB1cmwuc3BsaXQoInBsYXkvdmlkZW8iKQogICAgICAgICAgICB1cmxTcGxpdGVkID0gdXJsU3BsaXRlZFsxXS5zcGxpdCgiLyIpCiAgICAgICAgICAgIHZpZGVvSWQgPSB1cmxTcGxpdGVkWzFdCiAgICAgICAgICAgIC8vY29uc29sZS5sb2coIuWMuemFjeaZrumAmuinhumikWlkOiIrdmlkZW9JZCkKICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHZpZGVvSWQpOwogICAgICAgIH0KICAgICAgICAvL+WMuemFjeaJi+acuuaooeW8j+WQiOmbhgogICAgICAgIGlmICh1cmwuZW5kc1dpdGgoIi8xIikpIHsKICAgICAgICAgICAgbGV0IHVybFNwbGl0ZWQgPSB1cmwuc3BsaXQoInBsYXkvdmlkZW8iKQogICAgICAgICAgICB1cmxTcGxpdGVkID0gdXJsU3BsaXRlZFsxXS5zcGxpdCgiLyIpCiAgICAgICAgICAgIC8vY29uc29sZS5sb2coIuWMuemFjeaJi+acuuaooeW8j+WQiOmbhmNpZDoiK3VybFNwbGl0ZWRbMV0pCiAgICAgICAgICAgIHZpZGVvSWQgPSBhd2FpdCBpc0xpc3RJZCh1cmxTcGxpdGVkWzFdKQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJ2aWRlb0lkOiIrdmlkZW9JZCkKICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHZpZGVvSWQpOwogICAgICAgIH0KICAgICAgICBpZih1cmwubWF0Y2goLy4rMT92aWRlb0lkPS8pKXsKICAgICAgICAgICAgdmlkZW9JZCA9IHVybC5zcGxpdCgnMT92aWRlb0lkPScpWzFdOwogICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQodmlkZW9JZCk7CiAgICAgICAgfQogICAgICAgIC8v6YCa55So6KeG6aKRCiAgICAgICAgbGV0IHVybFNwbGl0ZWQgPSB1cmwuc3BsaXQoIi8iKTsKICAgICAgICB2aWRlb0lkID0gdXJsU3BsaXRlZFt1cmxTcGxpdGVkLmxlbmd0aCAtIDFdOwogICAgfWVsc2V7CiAgICAgICAgLy/nlLXohJHmqKHlvI/lkIjpm4YKICAgICAgICB2aWRlb0lkID0gYXdhaXQgaXNMaXN0SWQodXJsX2xpc3RbMV0pCiAgICAgICAgLy9jb25zb2xlLmxvZygi55S16ISR5qih5byP5ZCI6ZuGY2lkOiIrdmlkZW9JZCkKICAgIH0KCiAgICByZXR1cm4gcGFyc2VJbnQodmlkZW9JZCk7Cn0KCgovL+iOt+WPluinhumikemTvuaOpe+8iOWMuuWIhuaJi+acuuWSjOeUteiEke+8iQphc3luYyBmdW5jdGlvbiBnZXRWaWRlb1VybCh0eXBlLHZpZGVvSWQpewogICAgLy/lvojph43opoEs5Yy65YiG5piv5ZCm5b2T5YmN6aG155qEaWQKICAgIHdpbmRvdy52aWRlb0lkID0gdmlkZW9JZAogICAgLy/liKDpmaTlj4LmlbAKICAgIHZhciB3YWlidWJvZmFuID0gIiN3YWlidWJvZmFuIjsKICAgIHZhciBzaGlwaW5kaXpoaSA9ICIjc2hpcGluZGl6aGkiOwogICAgdmFyIGRlbGV0ZV93YWlidWJvZmFuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh3YWlidWJvZmFuKTsKICAgIHZhciBkZWxldGVfc2hpcGluZGl6aGkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNoaXBpbmRpemhpKTsKICAgIC8v5YWI5Yig6Zmk5oyJ6ZSuCiAgICBpZihkZWxldGVfd2FpYnVib2Zhbil7CiAgICAgICAgZm9yKGxldCBpPTA7aTxkZWxldGVfd2FpYnVib2Zhbi5sZW5ndGg7aSsrKXsKICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhg5Yig6Zmk5aSW6YOo5pKt5pS+5oyJ6ZSu77yaJHtpfWApCiAgICAgICAgICAgIGRlbGV0ZV93YWlidWJvZmFuW2ldLnJlbW92ZSgpCiAgICAgICAgfQogICAgfQogICAgaWYoZGVsZXRlX3NoaXBpbmRpemhpKXsKICAgICAgICBmb3IobGV0IGk9MDtpPGRlbGV0ZV9zaGlwaW5kaXpoaS5sZW5ndGg7aSsrKXsKICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhg5Yig6Zmk6KeG6aKR5Zyw5Z2A5oyJ6ZSu77yaJHtpfWApCiAgICAgICAgICAgIGRlbGV0ZV9zaGlwaW5kaXpoaVtpXS5yZW1vdmUoKQogICAgICAgIH0KICAgIH0KCiAgICAvL+iuvue9ruaMiemSrgogICAgbGV0IHNlbGVjdG9yUGFyYW0gPSAiLmVsLWRpdmlkZXIuZWwtZGl2aWRlci0taG9yaXpvbnRhbCI7CiAgICBpZih0eXBlID09ICJtb2JpbGUiKXsKICAgICAgICBzZWxlY3RvclBhcmFtID0gIi50ZW5kZW5jeS1yb3ciCiAgICB9CiAgICBsZXQganNvbiA9YXdhaXQgZmV0Y2hEYXRhKFBSRV9VUkwsIHsKICAgICAgICB2aWRlb0lkOiBOdW1iZXIodmlkZW9JZCkKICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4gewogICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7CiAgICB9KTsKICAgIGNvbnN0IGlzU3VjY2VzcyA9ICEhanNvbi5kYXRhLnVybDsKICAgIGxldCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JQYXJhbSk7CiAgICBsZXQgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgIGEuc3R5bGUgPQogICAgICAgICdkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxOHB4O3BhZGRpbmc6MTJweDtjb2xvcjojMTg5MGZmOyc7CiAgICBhLnRleHQgPSBpc1N1Y2Nlc3MgPyAn6KeG6aKR5Zyw5Z2AJyA6ICfojrflj5blpLHotKUnOwogICAgYS50YXJnZXQgPSAiX2JsYW5rIjsKICAgIGEuaWQgPSAic2hpcGluZGl6aGkiOwogICAgaWYgKGlzU3VjY2VzcykgewogICAgICAgIGxldCBwYXJzZVVybCA9IGpzb24uZGF0YS51cmwucmVwbGFjZSgvc3RhcnQ9XGQrJmVuZD1cZCsvLCAnJyk7CiAgICAgICAgYS5ocmVmID0gcGFyc2VVcmw7CiAgICAgICAgLy8g6I635Y+WdHPliIfniYcKICAgICAgICBsZXQgbTN1OFN0ciA9IGF3YWl0IGZldGNoKHBhcnNlVXJsKS50aGVuKGFzeW5jIHJlcyA9PiB7CiAgICAgICAgICAgIGxldCBtM3U4U3RyID0gYXdhaXQgcmVzLnRleHQoKTsKICAgICAgICAgICAgcmV0dXJuIG0zdThTdHIKICAgICAgICB9KTsKICAgICAgICAvLyDmj5Dlj5bnrKzkuIDmnaHorrDlvZUKICAgICAgICBsZXQgdHNVcmwgPSBtM3U4U3RyLnNwbGl0KCdcbicpLmZpbmQoaXRlbSA9PiB7CiAgICAgICAgICAgIHJldHVybiAvXlteI10vLnRlc3QoaXRlbSk7CiAgICAgICAgfSk7CiAgICAgICAgLy8g5ou85o6lCiAgICAgICAgY29uc3QgbGlua1VybCA9CiAgICAgICAgICAgICAgJ2h0dHBzOi8vbTN1OHBsYXkuY29tLz9wbGF5PScgKwogICAgICAgICAgICAgIG5ldyBVUkwocGFyc2VVcmwpLm9yaWdpbiArCiAgICAgICAgICAgICAgdHNVcmw7CiAgICAgICAgdmlkZW9VcmwgPSBuZXcgVVJMKHBhcnNlVXJsKS5vcmlnaW4gKyB0c1VybDsKICAgICAgICBsZXQgZXh0ZXJuYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgICAgZXh0ZXJuYWwuc3R5bGUgPQogICAgICAgICAgICAnZGlzcGxheTpibG9jaztmb250LXNpemU6MThweDtwYWRkaW5nOjEycHg7Y29sb3I6IzE4OTBmZjsnOwogICAgICAgIGV4dGVybmFsLnRleHQgPSAn5aSW6YOo5pKt5pS+JzsKICAgICAgICBleHRlcm5hbC5ocmVmID0gbGlua1VybDsKICAgICAgICBleHRlcm5hbC50YXJnZXQgPSAiX2JsYW5rIjsKICAgICAgICBleHRlcm5hbC5pZCA9ICJ3YWlidWJvZmFuIjsKICAgICAgICBlbC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShleHRlcm5hbCwgZWwpOwogICAgfQoKICAgIGVsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsIGVsKTsKICAgIHJldHVybiB2aWRlb1VybDsKfQoKCi8v55S16ISR5pKt5pS+CmZ1bmN0aW9uIHBsYXkocGxheWVyVXJsLCBwaWMsIGNvbnRhaW5lciwgcGxheVR5cGUpIHsKICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSA5OTk5OQogICAgdmFyIHZpZGVvT2JqZWN0ID0gewogICAgICAgIGNvbnRhaW5lcjogJyN2X3ByaXNtJywgLy/lrrnlmajnmoRJROaIlmNsYXNzTmFtZQogICAgICAgIC8vIGxpdmU6IHRydWUsLy/mjIflrprkuLrnm7Tmkq0KICAgICAgICAvL3NlZWs6ICdjb29raWUnLC8v5oyH5a6a6Lez6L2s5YiwY29va2ll6K6w5b2V55qE5pe26Ze077yM5L2/55So6K+l5bGe5oCn5b+F6ZyA6YWN572u5bGe5oCnY29va2llCiAgICAgICAgY29va2llOiAnYWJjZGVmZycsLy9jb29raWXlkI3np7As6K+35Zyo5ZCM5LiA5Z+f5Lit5L+d5oyB5ZSv5LiACiAgICAgICAgcGx1ZzogJ2hscy5qcycsLy/kvb/nlKhobHMuanPmj5Lku7bmkq3mlL5tM3U4CiAgICAgICAgdmlkZW86IHBsYXllclVybC8v6KeG6aKR5Zyw5Z2ACiAgICB9CiAgICB3aW5kb3cuY2sgPSBuZXcgY2twbGF5ZXIodmlkZW9PYmplY3QpOwogICAgLy93aW5kb3cuY2sudm9sdW1lKDAuNSk7Ly/kv67mlLnpn7Pph4/kuLowLjUKICAgIHdpbmRvdy5jay52b2x1bWUoMSk7CiAgICB3aW5kb3cuY2sucGxheSgpCn0KCi8v5omL5py65pKt5pS+CmZ1bmN0aW9uIG1vYmlsZVBsYXkocGxheWVyVXJsLCBwaWMsIGNvbnRhaW5lciwgcGxheVR5cGUpIHsKICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSA5OTk5OQogICAgd2luZG93LmRwID0gbmV3IERQbGF5ZXIoewogICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6/pgInvvIxwbGF5ZXLlhYPntKAKICAgICAgICBhdXRvcGxheTogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Y+v6YCJ77yM6Ieq5Yqo5pKt5pS+6KeG6aKR77yM5LiN5pSv5oyB56e75Yqo5rWP6KeI5ZmoCiAgICAgICAgdGhlbWU6ICcjRkFERkEzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPr+mAie+8jOS4u+mimOminOiJsu+8jOm7mOiupDogI2I3ZGFmZgogICAgICAgIGxvb3A6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6/pgInvvIzlvqrnjq/mkq3mlL7pn7PkuZDvvIzpu5jorqTvvJp0cnVlCiAgICAgICAgbGFuZzogJ3poJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPr+mAie+8jOivreiogO+8jGB6aCfnlKjkuo7kuK3mlofvvIxgZW4n55So5LqO6Iux6K+t77yM6buY6K6k77yaTmF2aWdhdG9yIGxhbmd1YWdlCiAgICAgICAgc2NyZWVuc2hvdDogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPr+mAie+8jOWQr+eUqOaIquWbvuWKn+iDve+8jOm7mOiupOWAvO+8mmZhbHNl77yM5rOo5oSP77ya5aaC5p6c6K6+572u5Li6dHJ1Ze+8jOinhumikeWSjOinhumikeaIquWbvuW/hemhu+WQr+eUqOi3qOWfnwogICAgICAgIGhvdGtleTogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6/pgInvvIznu5Hlrprng63plK7vvIzljIXmi6zlt6blj7PplK7lkoznqbrmoLzvvIzpu5jorqTlgLzvvJp0cnVlCiAgICAgICAgcHJlbG9hZDogJ2F1dG8nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPr+mAie+8jOmihOWKoOi9veeahOaWueW8j+WPr+S7peaYrydub25lJydtZXRhZGF0YScnYXV0byfvvIzpu5jorqTlgLzvvJonYXV0bycKICAgICAgICB2aWRlbzogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g5b+F6ZyA77yM6KeG6aKR5L+h5oGvCiAgICAgICAgICAgIHVybDogcGxheWVyVXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOW/heWhq++8jOinhumikee9keWdgAogICAgICAgICAgICBwaWM6IHBpYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlj6/pgInvvIzop4bpopHmiKrlm74KICAgICAgICAgICAgdGh1bWJuYWlsczogcGljCiAgICAgICAgfQogICAgfSk7Cn0KCgphc3luYyBmdW5jdGlvbiBwYygpIHsKICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoImhvbWUiKSkgewogICAgICAgIHJldHVybgogICAgfQogICAgbGV0IHZpZGVvSWQgPSBhd2FpdCBnZXRWaWRlb0lkKCk7CiAgICAvL2xldCB2aWRlb1VybCA9IGF3YWl0IGdldFZpZGVvVXJsKHZpZGVvSWQpCiAgICBsZXQgdmlkZW9VcmwgPSBhd2FpdCBnZXRWaWRlb1VybCgicGMiLHZpZGVvSWQpCiAgICBpZiAodmlkZW9VcmwgPT0gbnVsbCkgewogICAgICAgIHJldHVybgogICAgfQogICAgbGV0IHBpYyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5lbC1pbWFnZS5vdmVyZmxvdy1oaWRkZW4gPiBpbWciKQogICAgaWYgKHBpYykgewogICAgICAgIHBpYyA9IHBpYy5nZXRBdHRyaWJ1dGUoInNyYyIpCiAgICB9CiAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3ZfcHJpc20iKQogICAgbGV0IHBsYXlUeXBlID0gJ2xpdmUnCiAgICBsZXQgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52aXAtbWFzayIpCiAgICBpZiAoZWxlbSkgewogICAgICAgIGVsZW0ucmVtb3ZlKCkKICAgIH0KICAgIGVsZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZWwtaW1hZ2Uub3ZlcmZsb3ctaGlkZGVuIikKICAgIGlmIChlbGVtKSB7CiAgICAgICAgZWxlbS5yZW1vdmUoKQogICAgfQogICAgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50b3AtMC5sZWZ0LTAudy1mdWxsLmgtZnVsbC5vdmVyZmxvdy1oaWRkZW4iKQogICAgaWYgKGVsZW0pIHsKICAgICAgICBlbGVtLnJlbW92ZSgpCiAgICB9CgogICAgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5hYnNvbHV0ZS5iZy1vdmVybGF5IikKICAgIGlmIChlbGVtKSB7CiAgICAgICAgZWxlbS5yZW1vdmUoKQogICAgfQogICAgLy9jb25zb2xlLmxvZyhgLS0tLS0tLS0tLS3miafooYzmkq3mlL7nlLXohJHop4bpopHkuovku7YtLS0tLS0tLS0tLS0tYCk7CiAgICAvL2NvbnNvbGUubG9nKGAtLS0tLS0tLS0tLeinhumikeWcsOWdgO+8miR7dmlkZW9Vcmx9YCk7CiAgICBwbGF5KHZpZGVvVXJsLCBwaWMsIGNvbnRhaW5lciwgcGxheVR5cGUpCiAgICAvL2F3YWl0IHNldEVsZW1lbnQoInBjIix2aWRlb0lkKTsKfQoKYXN5bmMgZnVuY3Rpb24gbW9iaWxlKCkgewogICAgaWYgKCEod2luZG93LmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoIjAiKSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5lbmRzV2l0aCgiMSIpfHwgbG9jYXRpb24uaHJlZi5tYXRjaCgvLisxP3ZpZGVvSWQ9LykpKSB7CiAgICAgICAgcmV0dXJuCiAgICB9CiAgICBsZXQgdmlkZW9JZCA9IGF3YWl0IGdldFZpZGVvSWQoKQogICAgLy9sZXQgdmlkZW9VcmwgPSBhd2FpdCBnZXRWaWRlb1VybCh2aWRlb0lkKQogICAgbGV0IHZpZGVvVXJsID0gYXdhaXQgZ2V0VmlkZW9VcmwoIm1vYmlsZSIsdmlkZW9JZCkKICAgIGNvbnNvbGUubG9nKGAtLS0tLS0tLS0tLeinhumikeWcsOWdgO+8miR7dmlkZW9Vcmx9YCk7CiAgICBpZiAodmlkZW9VcmwgPT0gbnVsbCkgewogICAgICAgIHJldHVybgogICAgfQoKICAgIGxldCBwaWMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucHViLXZpZGVvLXBvc3RlciIpCiAgICBpZiAocGljKSB7CiAgICAgICAgcGljID0gcGljLmdldEF0dHJpYnV0ZSgic3JjIikKICAgIH0KICAgIC8vY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZhbi1zdGlja3kiKQogICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN2aWRlbzEiKQogICAgbGV0IHBsYXlUeXBlID0gJ2xpdmUnCiAgICAvL2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50cnktZGV0YWlsLXZpZGVvIikucmVtb3ZlKCkKICAgIG1vYmlsZVBsYXkodmlkZW9VcmwsIHBpYywgY29udGFpbmVyLCBwbGF5VHlwZSkKICAgIC8vYXdhaXQgc2V0RWxlbWVudCgibW9iaWxlIix2aWRlb0lkKTsKfQoKCmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAvL2NvbnNvbGUubG9nKGAtLS0tLS0tLS0tLeWQr+WKqC0tLS0tLS0tLS0tLS1gKTsKICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgLy8gaG9vazog5oum5oiq6Lev55Sx5Zyw5Z2A5Y+Y5YyWCiAgICBjb25zdCBfaGlzdG9yeVdyYXAgPSBmdW5jdGlvbiAodHlwZSkgewogICAgICAgIGNvbnN0IG9yaWcgPSBoaXN0b3J5W3R5cGVdOwogICAgICAgIGNvbnN0IGUgPSBuZXcgRXZlbnQodHlwZSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgY29uc3QgcnYgPSBvcmlnLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgIGUuYXJndW1lbnRzID0gYXJndW1lbnRzOwogICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChlKTsKICAgICAgICAgICAgcmV0dXJuIHJ2OwogICAgICAgIH07CiAgICB9OwogICAgLy8g55uR5ZCs6Lev55Sx5pON5L2cCiAgICBbJ3B1c2hTdGF0ZScsICdyZXBsYWNlU3RhdGUnXS5mb3JFYWNoKG1ldGhvZCA9PiB7CiAgICAgICAgaGlzdG9yeVttZXRob2RdID0gX2hpc3RvcnlXcmFwKG1ldGhvZCk7CiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIobWV0aG9kLCAoKSA9PiB7CiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ+W9k+WJjVVSTOS4uu+8micsIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpOwogICAgICAgICAgICBzZXRWYWx1ZSgpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvcHN0YXRlJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAvL2NvbnNvbGUubG9nKCflvZPliY1VUkzkuLrvvJonLCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTsKICAgICAgICAvL3NldFZhbHVlKCk7CiAgICB9KTsKICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgaW1wb3J0TGliKCkKfQptYWluKCkK
Add Comment
Please, Sign In to add comment