Transaction

8e00c339750cdbd70bc5c2dde1ebcd044a9f7bfe4e39a4d31305484de10b0e91
Timestamp (utc)
2025-07-22 13:32:58
Fee Paid
0.00000347 BSV
(
0.00002000 BSV
-
0.00001653 BSV
)
Fee Rate
9.981 sat/KB
Version
1
Confirmations
32,202
Size Stats
34,765 B

2 Outputs

Total Output:
0.00001653 BSV
  • jMý†{"name":"ChainDisk","timestamp":1753190226899,"files":[{"name":"GatewayScrollerGS1J.html","size":25814,"type":"text/html","content":"Ly8gPT09PT0gR0FURVdBWSBTQ1JPTExFUiBNT0RVTEUgLSBVUERBVEVEIExJTktTID09PT09Ci8vIEVsZWN0cm9zdGF0aWMgcHJveGltaXR5LWJhc2VkIGFwcCBkaXNjb3Zlcnkgc2Nyb2xsZXIKLy8gUmV2ZWFscyBhcHBzIG9uIGhvdmVyIHdpdGggMzYwwrAgaW5maW5pdGUgc2Nyb2xsaW5nCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgY29uc29sZS5sb2coJ/Cfjq8gTG9hZGluZyBHYXRld2F5IFNjcm9sbGVyIE1vZHVsZSAoVXBkYXRlZCBMaW5rcykuLi4nKTsKCiAgICAvLyBJbml0aWFsaXplIFNjcm9sbGVyIG5hbWVzcGFjZQogICAgd2luZG93LkdhdGV3YXlTY3JvbGxlciA9IHsKICAgICAgICBpc0luaXRpYWxpemVkOiBmYWxzZSwKICAgICAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb246IDAsCiAgICAgICAgY3VycmVudEFwcDogbnVsbCwKICAgICAgICBhcHBzOiBbXSwKICAgICAgICBlbGVjdHJvc3RhdGljOiBudWxsCiAgICB9OwoKICAgIC8vIEFwcCBkYXRhIGZvciB0aGUgc2Nyb2xsZXIgLSBPbmx5IGFwcHMgd2l0aCBleGlzdGluZyBIVE1MIGZpbGVzCiAgICBjb25zdCBERUZBVUxUX0FQUFMgPSBbCiAgICAgICAgeyBpY29uOiAn8J+SsycsIG5hbWU6ICdHYXRld2F5IEVGVFBPUycsIGRlc2NyaXB0aW9uOiAnUHJvZmVzc2lvbmFsIHBvaW50LW9mLXNhbGUgdGVybWluYWwgdGhhdCB0cmFuc2Zvcm1zIGFueSBkZXZpY2UgaW50byBhIGNvbXBsZXRlIHBheW1lbnQgc3lzdGVtLiBBY2NlcHQgcGF5bWVudHMsIGdlbmVyYXRlIHJlY2VpcHRzLCB0cmFjayBzYWxlcyAtIGFsbCB3aXRoIHplcm8gbW9udGhseSBmZWVzLicsIGZlYXR1cmVzOiBbJ1RyYW5zZm9ybSBhbnkgZGV2aWNlIGludG8gRUZUUE9TIHRlcm1pbmFsJywgJ1plcm8gbW9udGhseSBmZWVzIG9yIGVxdWlwbWVudCByZW50YWxzJywgJ1Byb2Zlc3Npb25hbCBwYXltZW50IHByb2Nlc3NpbmcnLCAnSW5zdGFudCByZWNlaXB0IGdlbmVyYXRpb24nLCAnQ29tcGxldGUgc2FsZXMgdHJhY2tpbmcgYW5kIGFuYWx5dGljcycsICdXb3JrcyBvbiBwaG9uZXMsIHRhYmxldHMsIGNvbXB1dGVycyddIH0sCiAgICAgICAgeyBpY29uOiAn8J+PpicsIG5hbWU6ICdHYXRld2F5IFdhbGxldCcsIGRlc2NyaXB0aW9uOiAnUnVucyBlbnRpcmVseSBmcm9tIHlvdXIgcGhvbmUuIENvbWVzIHByZS1mdW5kZWQgYW5kIHJlYWR5IHRvIHVzZS4gRXZlbiBpZiBteWJzdi5pbyBzaHV0cyBkb3duLCB5b3VyIHdhbGxldCBrZWVwcyB3b3JraW5nIGZvcmV2ZXIuIE1hZGUgZm9yIHRoZSB1bmJhbmtlZCBhbmQgdW5kZXIgYmFua2VkIHBlb3BsZSBvZiB0aGUgZ2xvYmFsIG1ham9yaXR5IGluIG1pbmQuJywgZmVhdHVyZXM6IFsnT25lIG1lbWJlciBnZXRzIEJTViBmcm9tIGV4Y2hhbmdlIChvbmUtdGltZSBzZXR1cCknLCAnT3RoZXJzIHRyYWRlICQxLTUgY2FzaCBmb3IgQlNWIGF0IGdyb3VwIG1lZXRpbmdzJywgJ1R1cm5zIHBob25lIGludG8gRUZUUE9TIG9yZGVyIG1hbmFnZXIgY2FzaCB0ZXJtaW5hbCcsICdZZWxsb3cgUGFnZXMgLSBidXNpbmVzc2VzIGFkdmVydGlzZSwgV2hpdGUgUGFnZXMgLSB1c2VyIGRpcmVjdG9yeScsICdOb3RpY2Vib2FyZCBmb3IgY29tbXVuaXR5IGFubm91bmNlbWVudHMgYW5kIGV2ZW50cycsICdCdWlsdC1pbiBtZXNzYWdpbmcgLSBzZW5kZXJzIHBheSB5b3UgdG8gbWVzc2FnZSAobm8gc3BhbSEpJ10gfSwKICAgICAgICB7IGljb246ICfwn4+b77iPJywgbmFtZTogJ0dhdGV3YXkgREFPJywgZGVzY3JpcHRpb246ICdEZWNlbnRyYWxpemVkIGF1dG9ub21vdXMgb3JnYW5pemF0aW9uIHRvb2xzIGZvciBjb21tdW5pdHkgZ292ZXJuYW5jZSBhbmQgZGVjaXNpb24gbWFraW5nLiBDcmVhdGUgcHJvcG9zYWxzLCB2b3RlIG9uIGluaXRpYXRpdmVzLCBhbmQgbWFuYWdlIGNvbGxlY3RpdmUgcmVzb3VyY2VzIHRyYW5zcGFyZW50bHkgb24gdGhlIGJsb2NrY2hhaW4uJywgZmVhdHVyZXM6IFsnQ3JlYXRlIGFuZCBtYW5hZ2UgZ292ZXJuYW5jZSBwcm9wb3NhbHMnLCAnVHJhbnNwYXJlbnQgdm90aW5nIG1lY2hhbmlzbXMnLCAnUmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgYnVkZ2V0aW5nJywgJ01lbWJlciBtYW5hZ2VtZW50IGFuZCByb2xlcycsICdBdXRvbWF0ZWQgZXhlY3V0aW9uIG9mIGRlY2lzaW9ucycsICdDb21wbGV0ZSBhdWRpdCB0cmFpbCBvbiBibG9ja2NoYWluJ10gfSwKICAgICAgICB7IGljb246ICfwn5K8JywgbmFtZTogJ0RvY3VtZW50IEF1dGhlbnRpY2F0b3InLCBkZXNjcmlwdGlvbjogJ1N0b3AgZGVlcCBmYWtlcyBhbmQgcGhvdG8gbWFuaXB1bGF0aW9uLiBPbmx5IGJsb2NrY2hhaW4tYXV0aGVudGljYXRlZCBpbWFnZXMgcHJvdmUgYXV0aGVudGljaXR5IGluIHRoZSBhZ2Ugb2YgQUkuJywgZmVhdHVyZXM6IFsnUGhvdG9zIHdpdGhvdXQgYmxvY2tjaGFpbiBwcm9vZiBhcmUgZWFzaWx5IGZha2VkJywgJ0RlZXAgZmFrZSB0ZWNobm9sb2d5IG1ha2VzIGFueSBpbWFnZSBzdXNwaWNpb3VzJywgJ1lvdXIgd2FsbGV0IHNpZ25hdHVyZSBwcm92ZXMgaW1hZ2UgYXV0aGVudGljaXR5JywgJ0dQUyBhbmQgdGltZXN0YW1wIHByZXZlbnQgbWFuaXB1bGF0aW9uJywgJ0NvdXJ0cyBjYW4gdmVyaWZ5IGJsb2NrY2hhaW4gZXZpZGVuY2UnLCAnRnV0dXJlLXByb29mIGFnYWluc3QgYWR2YW5jaW5nIEFJIGRlY2VwdGlvbiddIH0sCiAgICAgICAgeyBpY29uOiAn8J+TpycsIG5hbWU6ICdCU1YgTWVzc2FnaW5nJywgZGVzY3JpcHRpb246ICdFbWFpbCB0aGF0IHBheXMgeW91IHRvIHJlY2VpdmUgbWVzc2FnZXMuIEdyb3VwIG1lc3NhZ2luZyBmb3IgY29tbXVuaXR5IHVwZGF0ZXMsIG5vdGljZXMsIG1hcmtldGluZyAtIHJlY2lwaWVudHMgZ2V0IHBhaWQgdG8gcmVhZC4nLCBmZWF0dXJlczogWydHZXQgcGFpZCBmb3IgZXZlcnkgZW1haWwgeW91IHJlY2VpdmUnLCAnR3JvdXAgdXBkYXRlcyAtIGVhcm4gbW9uZXkgZm9yIHN0YXlpbmcgaW5mb3JtZWQnLCAnQ29tbXVuaXR5IG5vdGljZXMgLSBnZXQgcGFpZCBmb3IgaW1wb3J0YW50IGluZm8nLCAnR3JvdXAgbWFya2V0aW5nIC0gY29tcGVuc2F0ZWQgZm9yIHJlYWRpbmcgYWRzJywgJ0RpcmVjdCB3YWxsZXQtdG8td2FsbGV0IGVtYWlsIGNvbW11bmljYXRpb24nLCAnTWVzc2FnZXMgc3RvcmVkIHBlcm1hbmVudGx5IG9uIGJsb2NrY2hhaW4nXSB9LAogICAgICAgIHsgaWNvbjogJ/Cfj4zvuI8nLCBuYW1lOiAnR29sZiBPcmdhbml6ZXInLCBkZXNjcmlwdGlvbjogJ0NvbXBsZXRlIHRvdXJuYW1lbnQgb3JnYW5pemVyIGFuZCByZXN1bHRzIG1hbmFnZW1lbnQgc3lzdGVtLiBSdW4gcHJvZmVzc2lvbmFsIGdvbGYgZXZlbnRzIGZyb20gcmVnaXN0cmF0aW9uIHRvIHByaXplIGRpc3RyaWJ1dGlvbi4nLCBmZWF0dXJlczogWydQbGF5ZXIgcmVnaXN0cmF0aW9uIGFuZCBwYXltZW50IHByb2Nlc3NpbmcnLCAnTGl2ZSBzY29yaW5nIGFuZCBsZWFkZXJib2FyZCB1cGRhdGVzJywgJ0F1dG9tYXRpYyBoYW5kaWNhcCBjYWxjdWxhdGlvbnMnLCAnUHJpemUgbW9uZXkgZGlzdHJpYnV0aW9uIHZpYSBibG9ja2NoYWluJywgJ1RvdXJuYW1lbnQgcmVwb3J0aW5nIGFuZCBzdGF0aXN0aWNzJywgJ1Byb2Zlc3Npb25hbCBldmVudCBtYW5hZ2VtZW50IG9uIHlvdXIgcGhvbmUnXSB9LAogICAgICAgIHsgaWNvbjogJ/Cfk4snLCBuYW1lOiAnTm90aWNlYm9hcmQnLCBkZXNjcmlwdGlvbjogJ0NvbW11bml0eSBidWxsZXRpbiBib2FyZCBmb3IgYW5ub3VuY2VtZW50cywgZXZlbnRzLCBhbmQgbG9jYWwgaW5mb3JtYXRpb24gc2hhcmluZy4gUG9zdCBub3RpY2VzLCBhZHZlcnRpc2Ugc2VydmljZXMsIGFuZCBzdGF5IGNvbm5lY3RlZCB3aXRoIHlvdXIgY29tbXVuaXR5IHRocm91Z2ggYmxvY2tjaGFpbi12ZXJpZmllZCBtZXNzYWdlcy4nLCBmZWF0dXJlczogWydQb3N0IGNvbW11bml0eSBhbm5vdW5jZW1lbnRzJywgJ0V2ZW50IHNjaGVkdWxpbmcgYW5kIG5vdGlmaWNhdGlvbnMnLCAnTG9jYWwgYnVzaW5lc3MgYWR2ZXJ0aXNpbmcnLCAnVmVyaWZpZWQgdXNlciBjb21tdW5pY2F0aW9ucycsICdQZXJtYW5lbnQgbWVzc2FnZSBzdG9yYWdlJywgJ0NvbW11bml0eSBtb2RlcmF0aW9uIHRvb2xzJ10gfQogICAgXTsKCiAgICAvLyBFbGVjdHJvc3RhdGljIGZpZWxkIGNvbnRyb2xsZXIgY2xhc3MKICAgIGNsYXNzIEVsZWN0cm9zdGF0aWNGaWVsZCB7CiAgICAgICAgY29uc3RydWN0b3IodHJpZ2dlckVsZW1lbnQpIHsKICAgICAgICAgICAgdGhpcy50cmlnZ2VyID0gdHJpZ2dlckVsZW1lbnQ7CiAgICAgICAgICAgIHRoaXMuZmllbGRSYWRpdXMgPSAxMjA7CiAgICAgICAgICAgIHRoaXMuaW5pdCgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpbml0KCkgewogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkgPT4gewogICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZChlLmNsaWVudFgsIGUuY2xpZW50WSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZUZpZWxkKCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB1cGRhdGVGaWVsZChtb3VzZVgsIG1vdXNlWSkgewogICAgICAgICAgICBjb25zdCByZWN0ID0gdGhpcy50cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDI7CiAgICAgICAgICAgIGNvbnN0IGNlbnRlclkgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KAogICAgICAgICAgICAgICAgTWF0aC5wb3cobW91c2VYIC0gY2VudGVyWCwgMikgKyAKICAgICAgICAgICAgICAgIE1hdGgucG93KG1vdXNlWSAtIGNlbnRlclksIDIpCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoZGlzdGFuY2UgPD0gdGhpcy5maWVsZFJhZGl1cykgewogICAgICAgICAgICAgICAgY29uc3Qgc3RyZW5ndGggPSBNYXRoLm1heCgwLCAodGhpcy5maWVsZFJhZGl1cyAtIGRpc3RhbmNlKSAvIHRoaXMuZmllbGRSYWRpdXMpOwogICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZUZpZWxkKHN0cmVuZ3RoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZUZpZWxkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgYWN0aXZhdGVGaWVsZChzdHJlbmd0aCkgewogICAgICAgICAgICB0aGlzLnRyaWdnZXIuc3R5bGUuc2V0UHJvcGVydHkoJy0tZmllbGQtc3RyZW5ndGgnLCBzdHJlbmd0aC50b0ZpeGVkKDMpKTsKICAgICAgICAgICAgdGhpcy50cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2VsZWN0cm9zdGF0aWMtYWN0aXZlJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRlYWN0aXZhdGVGaWVsZCgpIHsKICAgICAgICAgICAgdGhpcy50cmlnZ2VyLnN0eWxlLnNldFByb3BlcnR5KCctLWZpZWxkLXN0cmVuZ3RoJywgJzAnKTsKICAgICAgICAgICAgdGhpcy50cmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2VsZWN0cm9zdGF0aWMtYWN0aXZlJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIENvcmUgc2Nyb2xsZXIgZnVuY3Rpb25zCiAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLnNjcm9sbEFwcHMgPSBmdW5jdGlvbihkaXJlY3Rpb24pIHsKICAgICAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmN1cnJlbnRTY3JvbGxQb3NpdGlvbiArPSBkaXJlY3Rpb247CiAgICAgICAgCiAgICAgICAgY29uc3QgdG90YWxTdGFtcHMgPSB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmFwcHMubGVuZ3RoICogMzsKICAgICAgICBpZiAod2luZG93LkdhdGV3YXlTY3JvbGxlci5jdXJyZW50U2Nyb2xsUG9zaXRpb24gPj0gdG90YWxTdGFtcHMgLSB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmFwcHMubGVuZ3RoKSB7CiAgICAgICAgICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuY3VycmVudFNjcm9sbFBvc2l0aW9uID0gd2luZG93LkdhdGV3YXlTY3JvbGxlci5hcHBzLmxlbmd0aDsKICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuY3VycmVudFNjcm9sbFBvc2l0aW9uIDwgMCkgewogICAgICAgICAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuYXBwcy5sZW5ndGggKiAyIC0gMTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxQb3NpdGlvbigpOwogICAgICAgIHRoaXMudXBkYXRlQ2VudGVyU3RhbXAoKTsKICAgIH07CgogICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci51cGRhdGVTY3JvbGxQb3NpdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbnN0IGFwcFNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcFNjcm9sbGVyJyk7CiAgICAgICAgaWYgKCFhcHBTY3JvbGxlcikgcmV0dXJuOwogICAgICAgIAogICAgICAgIGNvbnN0IHN0YW1wV2lkdGggPSA4MTsgLy8gNzVweCArIDZweCBtYXJnaW4gKGluY3JlYXNlZCBmcm9tIDcxcHgpCiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gd2luZG93LkdhdGV3YXlTY3JvbGxlci5jdXJyZW50U2Nyb2xsUG9zaXRpb24gKiBzdGFtcFdpZHRoOwogICAgICAgIGFwcFNjcm9sbGVyLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKC0ke29mZnNldCAtIDEwMH1weClgOwogICAgfTsKCiAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLnVwZGF0ZUNlbnRlclN0YW1wID0gZnVuY3Rpb24oKSB7CiAgICAgICAgY29uc3Qgc3RhbXBzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFwcC1zdGFtcCcpOwogICAgICAgIHN0YW1wcy5mb3JFYWNoKChzdGFtcCwgaW5kZXgpID0+IHsKICAgICAgICAgICAgc3RhbXAuY2xhc3NMaXN0LnJlbW92ZSgnY2VudGVyJyk7CiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gd2luZG93LkdhdGV3YXlTY3JvbGxlci5jdXJyZW50U2Nyb2xsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgIHN0YW1wLmNsYXNzTGlzdC5hZGQoJ2NlbnRlcicpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIub3Blbk1vZGFsID0gZnVuY3Rpb24oYXBwKSB7CiAgICAgICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci5jdXJyZW50QXBwID0gYXBwOwogICAgICAgIAogICAgICAgIC8vIENyZWF0ZSBtb2RhbCBpZiBpdCBkb2Vzbid0IGV4aXN0CiAgICAgICAgbGV0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcE1vZGFsJyk7CiAgICAgICAgaWYgKCFtb2RhbCkgewogICAgICAgICAgICBtb2RhbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBtb2RhbC5pZCA9ICdhcHBNb2RhbCc7CiAgICAgICAgICAgIG1vZGFsLmNsYXNzTmFtZSA9ICdhcHAtbW9kYWwnOwptb2RhbC5pbm5lckhUTUwgPSBgCiAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1pY29uIiBpZD0ibW9kYWxJY29uIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtdGl0bGUiIGlkPSJtb2RhbFRpdGxlIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGVzY3JpcHRpb24iIGlkPSJtb2RhbERlc2NyaXB0aW9uIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mZWF0dXJlcyI+CiAgICAgICAgICAgIDxoND5LZXkgRmVhdHVyZXM6PC9oND4KICAgICAgICAgICAgPHVsIGlkPSJtb2RhbEZlYXR1cmVzIj48L3VsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ1dHRvbnMiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJtb2RhbC1idXR0b24gbGF1bmNoLWJ1dHRvbiIgb25jbGljaz0iR2F0ZXdheVNjcm9sbGVyLmxhdW5jaEFwcCgpIj5MZWFybiBNb3JlPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im1vZGFsLWJ1dHRvbiBjbG9zZS1idXR0b24iIG9uY2xpY2s9IkdhdGV3YXlTY3JvbGxlci5jbG9zZU1vZGFsKCkiPkNsb3NlPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KYDsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBBZGQgbW9kYWwgZXZlbnQgbGlzdGVuZXIKICAgICAgICAgICAgbW9kYWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gewogICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBlLmN1cnJlbnRUYXJnZXQpIHsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmNsb3NlTW9kYWwoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbEljb24nKS50ZXh0Q29udGVudCA9IGFwcC5pY29uOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbFRpdGxlJykudGV4dENvbnRlbnQgPSBhcHAubmFtZTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWxEZXNjcmlwdGlvbicpLnRleHRDb250ZW50ID0gYXBwLmRlc2NyaXB0aW9uOwogICAgICAgIAogICAgICAgIGNvbnN0IGZlYXR1cmVzTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbEZlYXR1cmVzJyk7CiAgICAgICAgZmVhdHVyZXNMaXN0LmlubmVySFRNTCA9ICcnOwogICAgICAgIGFwcC5mZWF0dXJlcy5mb3JFYWNoKGZlYXR1cmUgPT4gewogICAgICAgICAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CiAgICAgICAgICAgIGxpLnRleHRDb250ZW50ID0gZmVhdHVyZTsKICAgICAgICAgICAgZmVhdHVyZXNMaXN0LmFwcGVuZENoaWxkKGxpKTsKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICBtb2RhbC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gbW9kYWwuY2xhc3NMaXN0LmFkZCgnc2hvdycpLCAxMCk7CiAgICB9OwoKICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuY2xvc2VNb2RhbCA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcE1vZGFsJyk7CiAgICAgICAgaWYgKG1vZGFsKSB7CiAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTsKICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICBtb2RhbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci5jdXJyZW50QXBwID0gbnVsbDsKICAgICAgICAgICAgfSwgMzAwKTsKICAgICAgICB9CiAgICB9OwoKICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIubGF1bmNoQXBwID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuY3VycmVudEFwcCkgewogICAgICAgICAgICBjb25zdCBhcHAgPSB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmN1cnJlbnRBcHA7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGDwn5qAIExhdW5jaGluZyAke2FwcC5uYW1lfS4uLmApOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gSW50ZWdyYXRpb24gd2l0aCBleGlzdGluZyBtb2R1bGVzIGFuZCBteWJzdi5pbyBsaW5rcwogICAgICAgICAgICBzd2l0Y2goYXBwLm5hbWUpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ0dhdGV3YXkgRUZUUE9TJzoKICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbignaHR0cHM6Ly9teWJzdi5pby9ibG9ja2NoYWluL2VmdHBvcy5odG1sJywgJ19ibGFuaycpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgY2FzZSAnR2F0ZXdheSBXYWxsZXQnOgogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL215YnN2LmlvL2Jsb2NrY2hhaW4vZ2F0ZXdheXdhbGxldC5odG1sJywgJ19ibGFuaycpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgY2FzZSAnR2F0ZXdheSBEQU8nOgogICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuR2F0ZXdheURBTyAmJiB3aW5kb3cuR2F0ZXdheURBTy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5HYXRld2F5REFPLnNob3coKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbignaHR0cHM6Ly9teWJzdi5pby9ibG9ja2NoYWluL2Rhby5odG1sJywgJ19ibGFuaycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNhc2UgJ0RvY3VtZW50IEF1dGhlbnRpY2F0b3InOgogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL215YnN2LmlvL2Jsb2NrY2hhaW4vYXV0aGVudGljYXRlLmh0bWwnLCAnX2JsYW5rJyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjYXNlICdCU1YgTWVzc2FnaW5nJzoKICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LkdhdGV3YXlNZXNzYWdpbmcgJiYgd2luZG93LkdhdGV3YXlNZXNzYWdpbmcub3BlbkNvbXBvc2VNZXNzYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5HYXRld2F5TWVzc2FnaW5nLm9wZW5Db21wb3NlTWVzc2FnZSgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL215YnN2LmlvL2Jsb2NrY2hhaW4vbWVzc2FnZS5odG1sJywgJ19ibGFuaycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNhc2UgJ0dvbGYgT3JnYW5pemVyJzoKICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbignaHR0cHM6Ly9teWJzdi5pby9ibG9ja2NoYWluL2dvbGYuaHRtbCcsICdfYmxhbmsnKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNhc2UgJ05vdGljZWJvYXJkJzoKICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbignaHR0cHM6Ly9teWJzdi5pby9ibG9ja2NoYWluL25vdGljZWJvYXJkLmh0bWwnLCAnX2JsYW5rJyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGFsZXJ0KGAke2FwcC5uYW1lfSBtb2R1bGUgbm90IHlldCBpbnRlZ3JhdGVkYCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuY2xvc2VNb2RhbCgpOwogICAgICAgIH0KICAgIH07CgogICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2Nyb2xsZXIKICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICh3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmlzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ+KchSBHYXRld2F5IFNjcm9sbGVyIGFscmVhZHkgaW5pdGlhbGl6ZWQnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY29uc29sZS5sb2coJ/Cfjq8gSW5pdGlhbGl6aW5nIEdhdGV3YXkgU2Nyb2xsZXIuLi4nKTsKICAgICAgICAKICAgICAgICAvLyBTZXQgdXAgYXBwcwogICAgICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuYXBwcyA9IERFRkFVTFRfQVBQUzsKICAgICAgICAKICAgICAgICAvLyBBZGQgQ1NTIHN0eWxlcwogICAgICAgIHRoaXMuYWRkU3R5bGVzKCk7CiAgICAgICAgCiAgICAgICAgLy8gTWFyayBhcyBpbml0aWFsaXplZAogICAgICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuaXNJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgY29uc29sZS5sb2coJ+KchSBHYXRld2F5IFNjcm9sbGVyIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseScpOwogICAgfTsKCiAgICAvLyBBZGQgcmVxdWlyZWQgQ1NTIHN0eWxlcyAtIEZJWEVEIElDT04gU0laRVMKICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuYWRkU3R5bGVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnYXRld2F5LXNjcm9sbGVyLXN0eWxlcycpKSByZXR1cm47CgogICAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKICAgICAgICBzdHlsZS5pZCA9ICdnYXRld2F5LXNjcm9sbGVyLXN0eWxlcyc7CiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBgCiAgICAgICAgICAgIC8qID09PT09PT09PT0gR0FURVdBWSBTQ1JPTExFUiBTVFlMRVMgLSBGSVhFRCBJQ09OUyA9PT09PT09PT09ICovCiAgICAgICAgICAgIC5hcHAtc2Nyb2xsZXItdHJpZ2dlciB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgICAgICAgICAgICAtLWZpZWxkLXN0cmVuZ3RoOiAwOwogICAgICAgICAgICAgICAgLS1wcm94aW1pdHktcmFkaXVzOiAxMjBweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1zY3JvbGxlci1jb250YWluZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDgwcHg7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuOTUpOwogICAgICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLDAsMCwwLjEpOwogICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNTIsIDE1MiwgMjE5LCAwLjIpOwogICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCkgc2NhbGUoMC45KTsKICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1zY3JvbGxlci10cmlnZ2VyLmVsZWN0cm9zdGF0aWMtYWN0aXZlIC5hcHAtc2Nyb2xsZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IGNhbGModmFyKC0tZmllbGQtc3RyZW5ndGgpICogMSk7CiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoKDEgLSB2YXIoLS1maWVsZC1zdHJlbmd0aCkpICogLTIwcHgpKSBzY2FsZShjYWxjKDAuOSArIHZhcigtLWZpZWxkLXN0cmVuZ3RoKSAqIDAuMSkpOwogICAgICAgICAgICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKGNhbGMoMC44ICsgdmFyKC0tZmllbGQtc3RyZW5ndGgpICogMC40KSk7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAKICAgICAgICAgICAgICAgICAgICAwIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xKSwKICAgICAgICAgICAgICAgICAgICAwIDAgY2FsYyh2YXIoLS1maWVsZC1zdHJlbmd0aCkgKiAzMHB4KSByZ2JhKDUyLCAxNTIsIDIxOSwgY2FsYyh2YXIoLS1maWVsZC1zdHJlbmd0aCkgKiAwLjQpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1zY3JvbGxlci1jb250YWluZXI6aG92ZXIgewogICAgICAgICAgICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMikgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IAogICAgICAgICAgICAgICAgICAgIDAgOHB4IDMwcHggcmdiYSgwLDAsMCwwLjIpLAogICAgICAgICAgICAgICAgICAgIDAgMCA0MHB4IHJnYmEoNTIsIDE1MiwgMjE5LCAwLjYpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1zY3JvbGxlciB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTVweDsKICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEZJWEVEOiBMYXJnZXIgaWNvbnMgdGhhdCB3b3JrIG9uIGFsbCBzY3JlZW4gc2l6ZXMgKi8KICAgICAgICAgICAgLmFwcC1zdGFtcCB7CiAgICAgICAgICAgICAgICB3aWR0aDogNzVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgaGVpZ2h0OiA3NXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgM3B4OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDQ4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNlOWVjZWY7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmZmIDAlLCAjZjhmOWZhIDEwMCUpOwogICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwwLDAsMC4xKTsKICAgICAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLDAsMCwwLjEpOwogICAgICAgICAgICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMSkgc2F0dXJhdGUoMS4zKTsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogNzVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogNzVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA3NXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiA3NXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuYXBwLXN0YW1wOmhvdmVyIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSkgdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDE2cHggcmdiYSgwLDAsMCwwLjIpOwogICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMzQ5OGRiOwogICAgICAgICAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgICAgICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4zKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1zdGFtcC5jZW50ZXIgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA4KTsKICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzM0OThkYjsKICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSg1MiwgMTUyLCAyMTksIDAuMyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5uYXYtYXJyb3cgewogICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuOSk7CiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2OwogICAgICAgICAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgICAgICBjb2xvcjogIzM0OThkYjsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgICAgICAgICAgei1pbmRleDogMjA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5uYXYtYXJyb3c6aG92ZXIgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLDAsMCwwLjE1KTsKICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzM0OThkYjsKICAgICAgICAgICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAubmF2LWFycm93LmxlZnQgewogICAgICAgICAgICAgICAgbGVmdDogM3B4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAubmF2LWFycm93LnJpZ2h0IHsKICAgICAgICAgICAgICAgIHJpZ2h0OiAzcHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5hcHAtbW9kYWwgewogICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjgpOwogICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLm1vZGFsLWNvbnRlbnQgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICAgICAgcGFkZGluZzogMjVweDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogNDgwcHg7CiAgICAgICAgICAgICAgICB3aWR0aDogOTAlOwogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpOwogICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuYXBwLW1vZGFsLnNob3cgLm1vZGFsLWNvbnRlbnQgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLm1vZGFsLWhlYWRlciB7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAubW9kYWwtaWNvbiB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5tb2RhbC10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICAgICAgICAgIGNvbG9yOiAjMmMzZTUwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAubW9kYWwtZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgY29sb3I6ICM2NjY7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLm1vZGFsLWZlYXR1cmVzIHsKICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAubW9kYWwtZmVhdHVyZXMgaDQgewogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICAgICAgY29sb3I6ICMyYzNlNTA7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5tb2RhbC1mZWF0dXJlcyB1bCB7CiAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lOwogICAgICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLm1vZGFsLWZlYXR1cmVzIGxpIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCAwOwogICAgICAgICAgICAgICAgY29sb3I6ICM1NTU7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5tb2RhbC1mZWF0dXJlcyBsaTo6YmVmb3JlIHsKICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICLinJMgIjsKICAgICAgICAgICAgICAgIGNvbG9yOiAjMjdhZTYwOwogICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5tb2RhbC1idXR0b25zIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5tb2RhbC1idXR0b24gewogICAgICAgICAgICAgICAgZmxleDogMTsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5sYXVuY2gtYnV0dG9uIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyN2FlNjA7CiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5sYXVuY2gtYnV0dG9uOmhvdmVyIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyMjk5NTQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5jbG9zZS1idXR0b24gewogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzk1YTVhNjsKICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmNsb3NlLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjN2Y4YzhkOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBSRU1PVkVEIE1PQklMRSBPVkVSUklERSAtIEljb25zIHN0YXkgbGFyZ2Ugb24gYWxsIGRldmljZXMgKi8KICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CiAgICAgICAgICAgICAgICAuYXBwLXNjcm9sbGVyLXRyaWdnZXIgewogICAgICAgICAgICAgICAgICAgIC0tcHJveGltaXR5LXJhZGl1czogODBweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLyogS2VlcCBpY29ucyBsYXJnZSBldmVuIG9uIG1vYmlsZSAqLwogICAgICAgICAgICAgICAgLmFwcC1zdGFtcCB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDcwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDcwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDQycHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgMnB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAuYXBwLXNjcm9sbGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA3NXB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgYDsKICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTsKICAgIH07CgogICAgLy8gQ3JlYXRlIHNjcm9sbGVyIEhUTUwgZWxlbWVudAogICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci5jcmVhdGVTY3JvbGxlckVsZW1lbnQgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb25zdCBzY3JvbGxlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIHNjcm9sbGVyLmNsYXNzTmFtZSA9ICdhcHAtc2Nyb2xsZXItdHJpZ2dlcic7CiAgICAgICAgc2Nyb2xsZXIuaWQgPSAnYXBwU2Nyb2xsZXJUcmlnZ2VyJzsKICAgICAgICAKICAgICAgICBzY3JvbGxlci5pbm5lckhUTUwgPSBgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFwcC1zY3JvbGxlci1jb250YWluZXIiIGlkPSJhcHBTY3JvbGxlckNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJuYXYtYXJyb3cgbGVmdCIgb25jbGljaz0iR2F0ZXdheVNjcm9sbGVyLnNjcm9sbEFwcHMoLTEpIj7igLk8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFwcC1zY3JvbGxlciIgaWQ9ImFwcFNjcm9sbGVyIj4KICAgICAgICAgICAgICAgICAgICA8IS0tIEFwcHMgcG9wdWxhdGVkIGJ5IEphdmFTY3JpcHQgLS0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1hcnJvdyByaWdodCIgb25jbGljaz0iR2F0ZXdheVNjcm9sbGVyLnNjcm9sbEFwcHMoMSkiPuKAujwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOwogICAgICAgIAogICAgICAgIHJldHVybiBzY3JvbGxlcjsKICAgIH07CgogICAgLy8gSW5pdGlhbGl6ZSBzY3JvbGxlciB3aXRoIGFwcHMKICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuaW5pdGlhbGl6ZVNjcm9sbGVyQXBwcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbnN0IGFwcFNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcFNjcm9sbGVyJyk7CiAgICAgICAgaWYgKCFhcHBTY3JvbGxlcikgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCfinYwgQXBwIHNjcm9sbGVyIGVsZW1lbnQgbm90IGZvdW5kJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQ3JlYXRlIGluZmluaXRlIHNjcm9sbCBieSB0cmlwbGluZyB0aGUgYXBwcwogICAgICAgIGNvbnN0IHRyaXBsZUFwcHMgPSBbLi4ud2luZG93LkdhdGV3YXlTY3JvbGxlci5hcHBzLCAuLi53aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmFwcHMsIC4uLndpbmRvdy5HYXRld2F5U2Nyb2xsZXIuYXBwc107CiAgICAgICAgCiAgICAgICAgdHJpcGxlQXBwcy5mb3JFYWNoKChhcHAsIGluZGV4KSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHN0YW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIHN0YW1wLmNsYXNzTmFtZSA9ICdhcHAtc3RhbXAnOwogICAgICAgICAgICBzdGFtcC5pbm5lckhUTUwgPSBhcHAuaWNvbjsKICAgICAgICAgICAgc3RhbXAub25jbGljayA9ICgpID0+IHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIub3Blbk1vZGFsKGFwcCk7CiAgICAgICAgICAgIHN0YW1wLmRhdGFzZXQuYXBwSW5kZXggPSBpbmRleCAlIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuYXBwcy5sZW5ndGg7CiAgICAgICAgICAgIGFwcFNjcm9sbGVyLmFwcGVuZENoaWxkKHN0YW1wKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gU3RhcnQgYXQgdGhlIG1pZGRsZSBzZXQgKEdhdGV3YXkgV2FsbGV0IHNob3VsZCBiZSBhdCBwb3NpdGlvbiA0LCB3aGljaCBpcyBjZW50ZXIpCiAgICAgICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci5jdXJyZW50U2Nyb2xsUG9zaXRpb24gPSB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmFwcHMubGVuZ3RoICsgNDsKICAgICAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLnVwZGF0ZVNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci51cGRhdGVDZW50ZXJTdGFtcCgpOwoKICAgICAgICAvLyBBZGQgd2hlZWwgc2Nyb2xsIHN1cHBvcnQKICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwU2Nyb2xsZXJDb250YWluZXInKTsKICAgICAgICBpZiAoY29udGFpbmVyKSB7CiAgICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIChlKSA9PiB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBpZiAoZS5kZWx0YVkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci5zY3JvbGxBcHBzKDEpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLnNjcm9sbEFwcHMoLTEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIEFkZCB0b3VjaCBzd2lwZSBzdXBwb3J0CiAgICAgICAgICAgIGxldCBzdGFydFggPSAwOwogICAgICAgICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIChlKSA9PiB7CiAgICAgICAgICAgICAgICBzdGFydFggPSBlLnRvdWNoZXNbMF0uY2xpZW50WDsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgKGUpID0+IHsKICAgICAgICAgICAgICAgIGlmICghc3RhcnRYKSByZXR1cm47CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNvbnN0IGRpZmZYID0gc3RhcnRYIC0gZS50b3VjaGVzWzBdLmNsaWVudFg7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkaWZmWCkgPiAzMCkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGlmZlggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuc2Nyb2xsQXBwcygxKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLnNjcm9sbEFwcHMoLTEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzdGFydFggPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIEluaXRpYWxpemUgZWxlY3Ryb3N0YXRpYyBmaWVsZAogICAgICAgIGNvbnN0IHRyaWdnZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwU2Nyb2xsZXJUcmlnZ2VyJyk7CiAgICAgICAgaWYgKHRyaWdnZXIpIHsKICAgICAgICAgICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci5lbGVjdHJvc3RhdGljID0gbmV3IEVsZWN0cm9zdGF0aWNGaWVsZCh0cmlnZ2VyKTsKICAgICAgICB9CgogICAgICAgIGNvbnNvbGUubG9nKCfinIUgU2Nyb2xsZXIgYXBwcyBpbml0aWFsaXplZCB3aXRoIHVwZGF0ZWQgbXlic3YuaW8gbGlua3MnKTsKICAgIH07CgogICAgLy8gUHVibGljIEFQSSBmb3Igd2FsbGV0IGludGVncmF0aW9uCiAgICB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmluc2VydEludG9XYWxsZXQgPSBmdW5jdGlvbih0YXJnZXRFbGVtZW50KSB7CiAgICAgICAgaWYgKCF3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmlzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci5pbml0aWFsaXplKCk7CiAgICAgICAgfQoKICAgICAgICBjb25zdCBzY3JvbGxlckVsZW1lbnQgPSB3aW5kb3cuR2F0ZXdheVNjcm9sbGVyLmNyZWF0ZVNjcm9sbGVyRWxlbWVudCgpOwogICAgICAgIAogICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0RWxlbWVudCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0RWxlbWVudCkgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXRFbGVtZW50KTsKICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKHNjcm9sbGVyRWxlbWVudCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfinYwgVGFyZ2V0IGVsZW1lbnQgbm90IGZvdW5kOicsIHRhcmdldEVsZW1lbnQpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh0YXJnZXRFbGVtZW50ICYmIHRhcmdldEVsZW1lbnQuYXBwZW5kQ2hpbGQpIHsKICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5hcHBlbmRDaGlsZChzY3JvbGxlckVsZW1lbnQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBJbnZhbGlkIHRhcmdldCBlbGVtZW50IGZvciBzY3JvbGxlciBpbnNlcnRpb24nKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhcHBzIGFmdGVyIERPTSBpbnNlcnRpb24KICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgd2luZG93LkdhdGV3YXlTY3JvbGxlci5pbml0aWFsaXplU2Nyb2xsZXJBcHBzKCk7CiAgICAgICAgfSwgMTAwKTsKCiAgICAgICAgY29uc29sZS5sb2coJ+KchSBHYXRld2F5IFNjcm9sbGVyIGluc2VydGVkIGludG8gd2FsbGV0IHdpdGggdXBkYXRlZCBsaW5rcycpOwogICAgfTsKCiAgICAvLyBHbG9iYWwgZnVuY3Rpb25zIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiAgICB3aW5kb3cuc2Nyb2xsQXBwcyA9IGZ1bmN0aW9uKGRpcmVjdGlvbikgewogICAgICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuc2Nyb2xsQXBwcyhkaXJlY3Rpb24pOwogICAgfTsKCiAgICAvLyBBdXRvLWluaXRpYWxpemUKICAgIHdpbmRvdy5HYXRld2F5U2Nyb2xsZXIuaW5pdGlhbGl6ZSgpOwogICAgCiAgICBjb25zb2xlLmxvZygn8J+OryBHYXRld2F5IFNjcm9sbGVyIE1vZHVsZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5IHdpdGggdXBkYXRlZCBteWJzdi5pbyBsaW5rcycpOwoKfSkoKTs="}]}
    https://whatsonchain.com/tx/8e00c339750cdbd70bc5c2dde1ebcd044a9f7bfe4e39a4d31305484de10b0e91