jM¸A{"name":"EncodedFiles","files":[{"name":"coreglobalAA5.html","size":12536,"type":"text/html","content":"Y2xhc3MgQ29yZUdsb2JhbHMgewogIGNvbnN0cnVjdG9yKCkgewogICAgLy8gU3lzdGVtIGZvbGRlciBjb2RlcwogICAgdGhpcy5TWVNURU1fRk9MREVSUyA9IHsKICAgICAgSU5CT1g6ICcwJywKICAgICAgU0VOVDogJzEnLAogICAgICBKVU5LOiAnMicsCiAgICAgIEZBVk9SSVRFUzogJzMnCiAgICB9OwoKICAgIC8vIERlZmF1bHQgZm9sZGVyIGNvbmZpZ3VyYXRpb24KICAgIHRoaXMuZGVmYXVsdEZvbGRlckNvbmZpZyA9IHsKICAgICAgZm9sZGVyczogewogICAgICAgICcwJzogeyBuYW1lOiAnSW5ib3gnLCBpY29uOiAn8J+TpScsIHN5c3RlbTogdHJ1ZSB9LAogICAgICAgICcxJzogeyBuYW1lOiAnU2VudCcsIGljb246ICfwn5OkJywgc3lzdGVtOiB0cnVlIH0sCiAgICAgICAgJzInOiB7IG5hbWU6ICdKdW5rJywgaWNvbjogJ/Cfl5EnLCBzeXN0ZW06IHRydWUgfSwKICAgICAgICAnMyc6IHsgbmFtZTogJ0Zhdm9yaXRlcycsIGljb246ICfirZAnLCBzeXN0ZW06IHRydWUgfQogICAgICB9LAogICAgICBuZXh0Q29kZTogNAogICAgfTsKCiAgICAvLyBFbnN1cmUgZm9sZGVyIGNvbmZpZyBleGlzdHMKICAgIHRoaXMuZm9sZGVyQ29uZmlnID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9sZGVyQ29uZmlnJykgfHwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZGVmYXVsdEZvbGRlckNvbmZpZykpOwogICAgdGhpcy5zYXZlRm9sZGVyQ29uZmlnKCk7CgogICAgLy8gU2V0IHVwIGVtb2ppIHJlbmRlcmVyCiAgICB0aGlzLnR3ZW1vamkgPSB7CiAgICAgIHBhcnNlOiAoY29udGVudCkgPT4gewogICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoL1tcdXsxRjMwMH0tXHV7MUY5RkZ9XXxbXHV7MjYwMH0tXHV7MjZGRn1dL2d1LCAobWF0Y2gpID0+IHsKICAgICAgICAgIGNvbnN0IGNvZGVQb2ludCA9IG1hdGNoLmNvZGVQb2ludEF0KDApLnRvU3RyaW5nKDE2KTsKICAgICAgICAgIHJldHVybiBgPGltZyBjbGFzcz0iZW1vamkiIGRyYWdnYWJsZT0iZmFsc2UiIGFsdD0iJHttYXRjaH0iIAogICAgICAgICAgICAgICAgICAgICAgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy90d2Vtb2ppLzE0LjAuMi9zdmcvJHtjb2RlUG9pbnR9LnN2ZyI+YDsKICAgICAgICB9KTsKICAgICAgfQogICAgfTsKCiAgICB0aGlzLmluaXRpYWxpemVTdHlsZXMoKTsKICB9CgogIGluaXRpYWxpemUoKSB7CiAgICB0aGlzLmNoZWNrQW5kUmVjb3ZlckZvbGRlcnMoKTsKICAgIHRoaXMuaW5qZWN0R2xvYmFscygpOwogICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7CiAgICB0aGlzLnNldHVwTmF2aWdhdGlvbigpOwogICAgY29uc29sZS5sb2coJ0NvcmUgZ2xvYmFscyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHknKTsKICB9CgogIGluaXRpYWxpemVTdHlsZXMoKSB7CiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgICBzdHlsZS50ZXh0Q29udGVudCA9IGAKICAgICAgLm1lc3NhZ2UtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0OwogICAgICAgIHBhZGRpbmc6IDAuNzVyZW07CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU3ZWI7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIC5tZXNzYWdlLWNvbnRlbnQgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTsKICAgICAgfQogICAgICAubWVzc2FnZS1zdWJqZWN0IHsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07CiAgICAgIH0KICAgICAgLm1lc3NhZ2Utc2VuZGVyIHsKICAgICAgICBjb2xvcjogIzZiNzI4MDsKICAgICAgICBmb250LXNpemU6IDAuODc1cmVtOwogICAgICB9CiAgICAgIC5tZXNzYWdlLXRpbWUgewogICAgICAgIGNvbG9yOiAjNmI3MjgwOwogICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgICAgIH0KICAgICAgLm1lc3NhZ2UtYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBnYXA6IDAuNXJlbTsKICAgICAgfQogICAgICAuZm9sZGVyLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiAxcmVtOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlN2ViOwogICAgICB9CiAgICAgIC5uYXYtaXRlbSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICB9CiAgICAgIC5uYXYtaXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICB9CiAgICAgIC5uYXYtaXRlbS5hY3RpdmUgewogICAgICAgIGJhY2tncm91bmQ6ICMzYjgyZjY7CiAgICAgIH0KICAgICAgLmZvbGRlci1pY29uIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsKICAgICAgfQogICAgICAucmV3YXJkLWJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgYmFja2dyb3VuZDogI0ZGRDcwMDsKICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgICAgZm9udC1zaXplOiAwLjllbTsKICAgICAgfQogICAgYDsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOwogIH0KCiAgaW5qZWN0R2xvYmFscygpIHsKICAgIHdpbmRvdy5GT0xERVJTID0gdGhpcy5TWVNURU1fRk9MREVSUzsKICAgIHdpbmRvdy5nbG9iYWxTdGF0ZSA9IHsKICAgICAgY3VycmVudFZpZXc6IG51bGwsCiAgICAgIGN1cnJlbnRGb2xkZXI6IG51bGwsCiAgICAgIHRyYW5zYWN0aW9uTGlzdGVuZXI6IG51bGwKICAgIH07CgogICAgd2luZG93LnNob3dGb2xkZXIgPSAoY29kZSkgPT4gewogICAgICB3aW5kb3cuZ2xvYmFsU3RhdGUuY3VycmVudEZvbGRlciA9IGNvZGU7CiAgICAgIHRoaXMuc2V0dXBGb2xkZXIoY29kZSk7CiAgICB9OwoKICAgIHdpbmRvdy5yZWZyZXNoSW5ib3ggPSBhc3luYyAoKSA9PiB7CiAgICAgIGNvbnN0IGFkZHJlc3MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2FsbGV0QWRkcmVzcycpOwogICAgICBpZiAoIWFkZHJlc3MpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdObyB3YWxsZXQgYWRkcmVzcyBmb3VuZCcpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBjb25zdCBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIGxvYWRpbmdJbmRpY2F0b3IudGV4dENvbnRlbnQgPSAnRmV0Y2hpbmcgbWVzc2FnZXMuLi4nOwogICAgICBsb2FkaW5nSW5kaWNhdG9yLnN0eWxlLnBhZGRpbmcgPSAnMXJlbSc7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlTGlzdCcpLnByZXBlbmQobG9hZGluZ0luZGljYXRvcik7CiAgICAgIAogICAgICB0cnkgewogICAgICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IGF3YWl0IGZldGNoQWRkcmVzc1RyYW5zYWN0aW9ucyhhZGRyZXNzKTsKICAgICAgICBjb25zdCB7IG1lc3NhZ2VzLCBuZXdDb3VudCB9ID0gYXdhaXQgcHJvY2Vzc1RyYW5zYWN0aW9ucyh0cmFuc2FjdGlvbnMsIGFkZHJlc3MpOwogICAgICAgIGlmIChuZXdDb3VudCA+IDApIHsKICAgICAgICAgIHdpbmRvdy5tb2RhbE1hbmFnZXI/LnNob3dBbGVydChgRm91bmQgJHtuZXdDb3VudH0gbmV3IG1lc3NhZ2UocylgKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5zZXR1cEZvbGRlcih0aGlzLlNZU1RFTV9GT0xERVJTLklOQk9YKTsKICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdSZWZyZXNoIGZhaWxlZDonLCBlcnJvcik7CiAgICAgICAgd2luZG93Lm1vZGFsTWFuYWdlcj8uc2hvd0FsZXJ0KCdGYWlsZWQgdG8gcmVmcmVzaDogJyArIGVycm9yLm1lc3NhZ2UsICdlcnJvcicpOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIGxvYWRpbmdJbmRpY2F0b3IucmVtb3ZlKCk7CiAgICAgIH0KICAgIH07CiAgfQoKICBzZXR1cEV2ZW50TGlzdGVuZXJzKCkgewogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCAoZSkgPT4gewogICAgICBpZiAoZS5rZXkgPT09ICdtZXNzYWdlcycgfHwgZS5rZXkgPT09ICdmb2xkZXJDb25maWcnKSB7CiAgICAgICAgaWYgKHdpbmRvdy5nbG9iYWxTdGF0ZS5jdXJyZW50Rm9sZGVyKSB7CiAgICAgICAgICB0aGlzLnNldHVwRm9sZGVyKHdpbmRvdy5nbG9iYWxTdGF0ZS5jdXJyZW50Rm9sZGVyKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0pOwoKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7CiAgICAgIGlmICghZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5tb3ZlLW1lbnUnKSAmJiAhZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5idG4tc2Vjb25kYXJ5JykpIHsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubW92ZS1tZW51JykuZm9yRWFjaChtZW51ID0+IG1lbnUucmVtb3ZlKCkpOwogICAgICB9CiAgICB9KTsKICB9Cgogc2V0dXBOYXZpZ2F0aW9uKCkgewogICAgY29uc3QgbmF2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbmF2Jyk7CiAgICBpZiAoIW5hdikgcmV0dXJuOwogICAgCiAgICBsZXQgbmF2SFRNTCA9ICcnOwogICAgCiAgICAvLyBBZGQgc3lzdGVtIGZvbGRlcnMgZmlyc3QKICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuU1lTVEVNX0ZPTERFUlMpLmZvckVhY2goKFtrZXksIGNvZGVdKSA9PiB7CiAgICAgIGNvbnN0IGZvbGRlciA9IHRoaXMuZm9sZGVyQ29uZmlnLmZvbGRlcnNbY29kZV07CiAgICAgIG5hdkhUTUwgKz0gYAogICAgICAgIDxhIGNsYXNzPSJuYXYtaXRlbSIgb25jbGljaz0id2luZG93LmNvcmVHbG9iYWxzLnNldHVwRm9sZGVyKCcke2NvZGV9JykiPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImZvbGRlci1pY29uIj4ke3RoaXMucmVuZGVyRW1vamkoZm9sZGVyLmljb24pfTwvc3Bhbj4gJHtmb2xkZXIubmFtZX0KICAgICAgICA8L2E+CiAgICAgIGA7CiAgICB9KTsKICAgIAogICAgLy8gQWRkIGN1c3RvbSBmb2xkZXJzCiAgICBPYmplY3QuZW50cmllcyh0aGlzLmZvbGRlckNvbmZpZy5mb2xkZXJzKQogICAgICAuZmlsdGVyKChbY29kZV0pID0+ICFPYmplY3QudmFsdWVzKHRoaXMuU1lTVEVNX0ZPTERFUlMpLmluY2x1ZGVzKGNvZGUpKQogICAgICAuZm9yRWFjaCgoW2NvZGUsIGZvbGRlcl0pID0+IHsKICAgICAgICBuYXZIVE1MICs9IGAKICAgICAgICAgIDxhIGNsYXNzPSJuYXYtaXRlbSIgb25jbGljaz0id2luZG93LmNvcmVHbG9iYWxzLnNldHVwRm9sZGVyKCcke2NvZGV9JykiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9sZGVyLWljb24iPiR7dGhpcy5yZW5kZXJFbW9qaShmb2xkZXIuaWNvbil9PC9zcGFuPiAke2ZvbGRlci5uYW1lfQogICAgICAgICAgPC9hPgogICAgICAgIGA7CiAgICAgIH0pOwogICAgCiAgICAvLyBBZGQgZm9sZGVyIGJ1dHRvbgogICAgbmF2SFRNTCArPSBgCiAgICAgIDxhIGNsYXNzPSJuYXYtaXRlbSBhZGQtZm9sZGVyIiBvbmNsaWNrPSJzaG93QWRkRm9sZGVyTW9kYWwoKSI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImZvbGRlci1pY29uIj4ke3RoaXMucmVuZGVyRW1vamkoJ+KelScpfTwvc3Bhbj4gQWRkIEZvbGRlcgogICAgICA8L2E+CiAgICBgOwogICAgCiAgICBuYXYuaW5uZXJIVE1MID0gbmF2SFRNTDsKfQoKICBzZXR1cEZvbGRlcihmb2xkZXJDb2RlKSB7CiAgICBjb25zdCBmb2xkZXIgPSB0aGlzLmZvbGRlckNvbmZpZy5mb2xkZXJzW2ZvbGRlckNvZGVdOwogICAgaWYgKCFmb2xkZXIpIHJldHVybjsKCiAgICB3aW5kb3cuZ2xvYmFsU3RhdGUuY3VycmVudEZvbGRlciA9IGZvbGRlckNvZGU7CiAgICBjb25zdCBtZXNzYWdlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lc3NhZ2VzJykgfHwgJ1tdJyk7CiAgICBjb25zdCBmb2xkZXJNZXNzYWdlcyA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLmZvbGRlckNvZGUgPT09IGZvbGRlckNvZGUpOwogICAgCiAgICBjb25zdCBtZXNzYWdlTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlTGlzdCcpOwogICAgaWYgKCFtZXNzYWdlTGlzdCkgcmV0dXJuOwoKICAgIGNvbnN0IGhlYWRlckhUTUwgPSB0aGlzLmNyZWF0ZUZvbGRlckhlYWRlcihmb2xkZXIsIGZvbGRlck1lc3NhZ2VzLmxlbmd0aCwgZm9sZGVyQ29kZSk7CiAgICBjb25zdCBtZXNzYWdlc0hUTUwgPSB0aGlzLmNyZWF0ZU1lc3NhZ2VMaXN0KGZvbGRlck1lc3NhZ2VzLCBmb2xkZXIpOwoKICAgIG1lc3NhZ2VMaXN0LmlubmVySFRNTCA9IGAKICAgICAgJHtoZWFkZXJIVE1MfQogICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlLWNvbnRhaW5lciI+CiAgICAgICAgJHttZXNzYWdlc0hUTUx9CiAgICAgIDwvZGl2PgogICAgYDsKCiAgICAvLyBVcGRhdGUgYWN0aXZlIHN0YXRlIGluIG5hdmlnYXRpb24KICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5uYXYtaXRlbScpLmZvckVhY2goaXRlbSA9PiB7CiAgICAgIGl0ZW0uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgIGlmIChpdGVtLmdldEF0dHJpYnV0ZSgnb25jbGljaycpPy5pbmNsdWRlcyhmb2xkZXJDb2RlKSkgewogICAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgIH0KICAgIH0pOwogIH0KCiAgY3JlYXRlRm9sZGVySGVhZGVyKGZvbGRlciwgbWVzc2FnZUNvdW50LCBmb2xkZXJDb2RlKSB7CiAgICByZXR1cm4gYAogICAgICA8ZGl2IGNsYXNzPSJmb2xkZXItaGVhZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb2xkZXItaW5mbyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9sZGVyLWljb24iPiR7dGhpcy5yZW5kZXJFbW9qaShmb2xkZXIuaWNvbil9PC9zcGFuPgogICAgICAgICAgPGgyPiR7Zm9sZGVyLm5hbWV9ICgke21lc3NhZ2VDb3VudH0pPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICAke2ZvbGRlckNvZGUgPT09IHRoaXMuU1lTVEVNX0ZPTERFUlMuSU5CT1ggPyAKICAgICAgICAgICc8YnV0dG9uIG9uY2xpY2s9IndpbmRvdy5yZWZyZXNoSW5ib3goKSIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5SZWZyZXNoPC9idXR0b24+JyA6ICcnfQogICAgICA8L2Rpdj4KICAgIGA7CiAgfQoKICBjcmVhdGVNZXNzYWdlTGlzdChtZXNzYWdlcywgZm9sZGVyKSB7CiAgICBpZiAobWVzc2FnZXMubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0ibm8tbWVzc2FnZXMiPk5vIG1lc3NhZ2VzIGluICR7Zm9sZGVyLm5hbWV9PC9kaXY+YDsKICAgIH0KCiAgICByZXR1cm4gbWVzc2FnZXMKICAgICAgLnNvcnQoKGEsIGIpID0+IGIudGltZXN0YW1wIC0gYS50aW1lc3RhbXApCiAgICAgIC5tYXAobWVzc2FnZSA9PiB0aGlzLmNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2UpKQogICAgICAuam9pbignJyk7CiAgfQoKICBjcmVhdGVNZXNzYWdlSXRlbShtZXNzYWdlKSB7CiAgICByZXR1cm4gYAogICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlLWl0ZW0iIG9uY2xpY2s9IndpbmRvdy5tZXNzYWdlSGFuZGxlci5vcGVuTWVzc2FnZSgnJHttZXNzYWdlLnR4aWR9JykiPgogICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UtY29udGVudCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlLXN1YmplY3QiPgogICAgICAgICAgICAke21lc3NhZ2Uuc3ViamVjdCB8fCAnTm8gc3ViamVjdCd9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2Utc2VuZGVyIj4KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckVtb2ppKCfwn5GkJyl9ICR7bWVzc2FnZS5zZW5kZXIgfHwgJ1Vua25vd24gU2VuZGVyJ30KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZS10aW1lIj4KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckVtb2ppKCfwn5WSJyl9ICR7bmV3IERhdGUobWVzc2FnZS50aW1lc3RhbXApLnRvTG9jYWxlU3RyaW5nKCl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7bWVzc2FnZS5yZXdhcmREYXRhID8gYAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXdhcmQtYmFkZ2UiPgogICAgICAgICAgICAgICR7dGhpcy5yZW5kZXJFbW9qaSgn8J+SsCcpfSAke21lc3NhZ2UucmV3YXJkRGF0YS5hY3R1YWxSZXdhcmR9IHNhdHMKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICBgIDogJyd9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZS1hY3Rpb25zIj4KICAgICAgICAgIDxidXR0b24gCiAgICAgICAgICAgIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSIKICAgICAgICAgICAgb25jbGljaz0iZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHdpbmRvdy5jb3JlR2xvYmFscy5zaG93TW92ZU1lbnUoZXZlbnQsICcke21lc3NhZ2UudHhpZH0nKSIKICAgICAgICAgID4KICAgICAgICAgICAgJHt0aGlzLnJlbmRlckVtb2ppKCfwn5OBJyl9IE1vdmUKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiAKICAgICAgICAgICAgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIgogICAgICAgICAgICBvbmNsaWNrPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgd2luZG93LmNvcmVHbG9iYWxzLmRlbGV0ZU1lc3NhZ2UoJyR7bWVzc2FnZS50eGlkfScpIgogICAgICAgICAgPgogICAgICAgICAgICAke3RoaXMucmVuZGVyRW1vamkoJ+KdjCcpfSBEZWxldGUKICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGA7CiAgfQoKICBzaG93TW92ZU1lbnUoZXZlbnQsIHR4aWQpIHsKICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgbW92ZSBtZW51cwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1vdmUtbWVudScpLmZvckVhY2gobWVudSA9PiBtZW51LnJlbW92ZSgpKTsKCiAgICBjb25zdCBtZW51ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBtZW51LmNsYXNzTmFtZSA9ICdtb3ZlLW1lbnUnOwogICAgbWVudS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CiAgICBtZW51LnN0eWxlLnJpZ2h0ID0gJzAnOwogICAgbWVudS5zdHlsZS50b3AgPSAnMTAwJSc7CiAgICBtZW51LnN0eWxlLmJhY2tncm91bmQgPSAnd2hpdGUnOwogICAgbWVudS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNlNWU3ZWInOwogICAgbWVudS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JzsKICAgIG1lbnUuc3R5bGUuYm94U2hhZG93ID0gJzAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSknOwogICAgbWVudS5zdHlsZS56SW5kZXggPSAnNTAnOwoKICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZm9sZGVyQ29uZmlnLmZvbGRlcnMpCiAgICAgIC5maWx0ZXIoKFtjb2RlXSkgPT4gY29kZSAhPT0gd2luZG93Lmdsb2JhbFN0YXRlLmN1cnJlbnRGb2xkZXIpCiAgICAgIC5mb3JFYWNoKChbY29kZSwgZm9sZGVyXSkgPT4gewogICAgICAgIGNvbnN0IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBpdGVtLmNsYXNzTmFtZSA9ICdtb3ZlLW1lbnUtaXRlbSc7CiAgICAgICAgaXRlbS5zdHlsZS5wYWRkaW5nID0gJzhweCAxNnB4JzsKICAgICAgICBpdGVtLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJzsKICAgICAgICBpdGVtLmlubmVySFRNTCA9IGAke3RoaXMucmVuZGVyRW1vamkoZm9sZGVyLmljb24pfSAke2ZvbGRlci5uYW1lfWA7CiAgICAgICAgaXRlbS5vbmNsaWNrID0gKGUpID0+IHsKICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICB0aGlzLm1vdmVNZXNzYWdlKHR4aWQsIGNvZGUpOwogICAgICAgICAgbWVudS5yZW1vdmUoKTsKICAgICAgICB9OwogICAgICAgIG1lbnUuYXBwZW5kQ2hpbGQoaXRlbSk7CiAgICAgIH0pOwoKICAgIGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKG1lbnUpOwogIH0KCiAgbW92ZU1lc3NhZ2UodHhpZCwgdGFyZ2V0Rm9sZGVyKSB7CiAgICBjb25zdCBtZXNzYWdlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lc3NhZ2VzJykgfHwgJ1tdJyk7CiAgICBjb25zdCB1cGRhdGVkTWVzc2FnZXMgPSBtZXNzYWdlcy5tYXAobXNnID0+IHsKICAgICAgaWYgKG1zZy50eGlkID09PSB0eGlkKSB7CiAgICAgICAgcmV0dXJuIHsuLi5tc2csIGZvbGRlckNvZGU6IHRhcmdldEZvbGRlcn07CiAgICAgIH0KICAgICAgcmV0dXJuIG1zZzsKICAgIH0pOwogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lc3NhZ2VzJywgSlNPTi5zdHJpbmdpZnkodXBkYXRlZE1lc3NhZ2VzKSk7CiAgICB0aGlzLnNldHVwRm9sZGVyKHdpbmRvdy5nbG9iYWxTdGF0ZS5jdXJyZW50Rm9sZGVyKTsKICB9CgogIGRlbGV0ZU1lc3NhZ2UodHhpZCkgewogICAgY29uc3QgbWVzc2FnZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZXNzYWdlcycpIHx8ICdbXScpOwogICAgY29uc3QgdXBkYXRlZE1lc3NhZ2VzID0gbWVzc2FnZXMuZmlsdGVyKG1zZyA9PiBtc2cudHhpZCAhPT0gdHhpZCk7CiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVzc2FnZXMnLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkTWVzc2FnZXMpKTsKICAgIHRoaXMuc2V0dXBGb2xkZXIod2luZG93Lmdsb2JhbFN0YXRlLmN1cnJlbnRGb2xkZXIpOwogIH0KCiAgY3JlYXRlRm9sZGVyKG5hbWUsIGljb24pIHsKICAgIGNvbnN0IGNvZGUgPSB0aGlzLmZvbGRlckNvbmZpZy5uZXh0Q29kZS50b1N0cmluZygpOwogICAgdGhpcy5mb2xkZXJDb25maWcuZm9sZGVyc1tjb2RlXSA9IHsKICAgICAgbmFtZTogbmFtZSwKICAgICAgaWNvbjogaWNvbiwKICAgICAgc3lzdGVtOiBmYWxzZQogICAgfTsKICAgIHRoaXMuZm9sZGVyQ29uZmlnLm5leHRDb2RlKys7CiAgICB0aGlzLnNhdmVGb2xkZXJDb25maWcoKTsKICAgIHRoaXMuc2V0dXBOYXZpZ2F0aW9uKCk7CiAgfQoKICBkZWxldGVGb2xkZXIoY29kZSkgewogICAgaWYgKHRoaXMuZm9sZGVyQ29uZmlnLmZvbGRlcnNbY29kZV0uc3lzdGVtKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGRlbGV0ZSBzeXN0ZW0gZm9sZGVyIik7CiAgICB9CgogICAgY29uc3QgbWVzc2FnZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZXNzYWdlcycpIHx8ICdbXScpOwogICAgY29uc3QgdXBkYXRlZE1lc3NhZ2VzID0gbWVzc2FnZXMubWFwKG1zZyA9PiB7CiAgICAgIGlmIChtc2cuZm9sZGVyQ29kZSA9PT0gY29kZSkgewogICAgICAgIHJldHVybiB7Li4ubXNnLCBmb2xkZXJDb2RlOiB0aGlzLlNZU1RFTV9GT0xERVJTLklOQk9YfTsKICAgICAgfQogICAgICByZXR1cm4gbXNnOwogICAgfSk7CgogICAgZGVsZXRlIHRoaXMuZm9sZGVyQ29uZmlnLmZvbGRlcnNbY29kZV07CiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVzc2FnZXMnLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkTWVzc2FnZXMpKTsKICAgIHRoaXMuc2F2ZUZvbGRlckNvbmZpZygpOwogICAgdGhpcy5zZXR1cE5hdmlnYXRpb24oKTsKICB9CgogIHNhdmVGb2xkZXJDb25maWcoKSB7CiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9sZGVyQ29uZmlnJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb2xkZXJDb25maWcpKTsKICB9CgogIGNoZWNrQW5kUmVjb3ZlckZvbGRlcnMoKSB7CiAgICB0cnkgewogICAgICBjb25zdCBmb2xkZXJzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9sZGVyQ29uZmlnJykpOwogICAgICBpZiAoIWZvbGRlcnMgfHwgIWZvbGRlcnMuZm9sZGVycykgewogICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb2xkZXJDb25maWcnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRlZmF1bHRGb2xkZXJDb25maWcpKTsKICAgICAgfQogICAgfSBjYXRjaCAoZSkgewogICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjaGVja2luZyBmb2xkZXJzLCByZXNldHRpbmcgdG8gZGVmYXVsdHM6JywgZSk7CiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb2xkZXJDb25maWcnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRlZmF1bHRGb2xkZXJDb25maWcpKTsKICAgIH0KICB9CgogIHJlbmRlckVtb2ppKGNvbnRlbnQpIHsKICAgIHJldHVybiB0aGlzLnR3ZW1vamkucGFyc2UoY29udGVudCk7CiAgfQp9CgovLyBJbml0aWFsaXplIGdsb2JhbCBpbnN0YW5jZQp3aW5kb3cuY29yZUdsb2JhbHMgPSBuZXcgQ29yZUdsb2JhbHMoKTsKd2luZG93LmNvcmVHbG9iYWxzLmluaXRpYWxpemUoKTs="}]}
https://whatsonchain.com/tx/15509daf958da52ac7d856a47d15738d46ea23744bbf9fd6d0ba9e1d5994cedc