Transaction executed successfully

Transaction Details

Inspect execution, participants, message data, gas usage, events and raw transaction data.

Transaction hash
68B699265C6752116DD741174F40C91CADA16E9CBB9B9CCEE1B9DD1B4B804BC9

Transaction overview

Status
Success
Execution completed
Block
#923229
Included in block
Message Type
m_addpkg
Primary message

Execution summary

TX INDEX
0
Position in block
GAS WANTED
63,435,800
Requested gas limit
GAS USED
28,027,357
Gas consumed
FEE
190307ugnot
Transaction fee

Participants

Sender
Package / Realm
Not available
Memo
None

Message

Message #1
m_addpkg
Caller
Arguments
g1manfred47kzduec920z88wfr64ylksmdcedlf58000000ugnot

Execution log

msg:0,success:true,log:,events:[]

Events

No events emitted by this transaction.

Raw encoded transaction

Cv6bAQoML3ZtLm1fYWRkcGtnEuybAQooZzFtYW5mcmVkNDdremR1ZWM5MjB6ODh3ZnI2NHlsa3NtZGNlZGxmNRKwmwEKBXBvbGxzEiBnbm8ubGFuZC9yL21vdWwveC9kYWlseS9wb2xscy92MRqWHAoJUkVBRE1FLm1kEogcIyBQb2xscyAmIFZvdGluZwoKPiDimqDvuI8gKipFeHBlcmltZW50YWwg4oCUIGdlbmVyYXRlZCB3aXRoIG5vIGh1bWFuIHN1cGVydmlzaW9uLioqIFRoaXMgcmVhbG0gd2FzCj4gcHJvZHVjZWQgYXV0b21hdGljYWxseSBieSBhbiBNQ1AtZHJpdmVuIGFnZW50IHRvIGV4ZXJjaXNlIHRoZSBnbm8gTUNQIHNlcnZlcgo+IGFuZCB0b29saW5nLCBhbmQgdG8gZ2VuZXJhdGUgdGVzdCBjb250ZW50IGZvciBnbm8gY29tcGlsZXJzLCBsaW50ZXJzIGFuZAo+IGZvcm1hdHRlcnMuICoqTm90IGF1ZGl0ZWQuIE5vdCBmb3IgcHJvZHVjdGlvbi4qKiBGdWxsIGNvbnRleHQgJiBmb2xkZXIgUkVBRE1FOgo+IFtyL21vdWwveC9kYWlseV0oaHR0cHM6Ly9naXRodWIuY29tL21vdWwvZ25vLWNvbnRyYWN0cy9ibG9iL21haW4vci9tb3VsL3gvZGFpbHkvUkVBRE1FLm1kKQoKLS0tCgoKQW4gb24tY2hhaW4gcG9sbCBhbmQgdm90aW5nIHJlYWxtIGZvciBnbm8ubGFuZCAoZ25vIDAuOSkuIEFueW9uZSBjYW4KY3JlYXRlIGEgcG9sbCB3aXRoIGEgcXVlc3Rpb24gYW5kIGEgY29tbWEtc2VwYXJhdGVkIHNldCBvZiBvcHRpb25zOyBldmVyeSBjYWxsZXIKYWRkcmVzcyBtYXkgY2FzdCBleGFjdGx5IG9uZSB2b3RlIHBlciBwb2xsLiBUaGUgcmVhbG0ncyBgUmVuZGVyYCBwYWdlIGxpc3RzIGVhY2gKcG9sbCB3aXRoIGl0cyBvcHRpb25zLCBsaXZlIHRhbGxpZXMgZHJhd24gYXMgYOKWk+KWkWAgYmFyIGNoYXJ0cywgcGVyLW9wdGlvbgpwZXJjZW50YWdlcywgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2Ygdm90ZXMuCgojIyBSZWFsbSBwYXRoCgpgZ25vLmxhbmQvci9tb3VsL3gvZGFpbHkvcG9sbHMvdjFgCgojIyBFeHBvcnRlZCB0cmFuc2FjdGlvbnMKCi0gYENyZWF0ZVBvbGwocXVlc3Rpb24gc3RyaW5nLCBvcHRpb25zIHN0cmluZykgaW50YCDigJQgY3JlYXRlIGEgcG9sbC4gYG9wdGlvbnNgCiAgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCAoYmxhbmsgZW50cmllcyBhcmUgZHJvcHBlZDsgYXQgbGVhc3QgMiByZXF1aXJlZCkuCiAgUmV0dXJucyB0aGUgbmV3IHBvbGwncyBpZC4KLSBgVm90ZShwb2xsSUQgaW50LCBvcHRpb25JbmRleCBpbnQpYCDigJQgY2FzdCBvbmUgdm90ZSBmb3IgYG9wdGlvbkluZGV4YCBvbiBwb2xsCiAgYHBvbGxJRGAuIE9uZSB2b3RlIHBlciBjYWxsZXIgYWRkcmVzcyBwZXIgcG9sbDsgYSBzZWNvbmQgdm90ZSBhYm9ydHMuCgpCb3RoIGFyZSBnbm8gMC45IGNyb3NzaW5nIGZ1bmN0aW9ucyAoZmlyc3QgcGFyYW1ldGVyIGBjdXIgcmVhbG1gKTsgdGhlIGNhbGxlcgphZGRyZXNzIGlzIHJlYWQgdmlhIGBydW50aW1lLlByZXZpb3VzUmVhbG0oKS5BZGRyZXNzKClgLgoKIyMgUmVhZCBwYXRoCgotIGBSZW5kZXIoIiIpYCDigJQgaW5kZXggb2YgYWxsIHBvbGxzIHdpdGggYmFyLWNoYXJ0IHRhbGxpZXMuCi0gYFJlbmRlcigiPGlkPiIpYCDigJQgYSBzaW5nbGUgcG9sbCBieSBpZC4KCiMjIEV4YW1wbGUgY2FsbHMKCmBgYHNoCiMgY3JlYXRlIGEgcG9sbCAocmV0dXJucyBpdHMgaWQsIGUuZy4gMCkKZ25va2V5IG1ha2V0eCBjYWxsIC1wa2dwYXRoICJnbm8ubGFuZC9yL21vdWwveC9kYWlseS9wb2xscy92MSIgXAogIC1mdW5jIENyZWF0ZVBvbGwgLWFyZ3MgIkJlc3QgTDEgZm9yIHNtYXJ0IGNvbnRyYWN0cz8iIC1hcmdzICJnbm8sZXRoLHNvbCIgXAogIC1nYXMtZmVlIDIwMDAwdWdub3QgLWdhcy13YW50ZWQgMjAwMDAwMCAtYnJvYWRjYXN0IC1jaGFpbmlkIG9ueXgtMSAtcmVtb3RlIGh0dHBzOi8vcnBjLm9ueXgudGVzdG5ldHMuZ25vLmxhbmQ6NDQzIG15a2V5CgojIHZvdGUgZm9yIG9wdGlvbiBpbmRleCAwIG9uIHBvbGwgMApnbm9rZXkgbWFrZXR4IGNhbGwgLXBrZ3BhdGggImduby5sYW5kL3IvbW91bC94L2RhaWx5L3BvbGxzL3YxIiBcCiAgLWZ1bmMgVm90ZSAtYXJncyAwIC1hcmdzIDAgXAogIC1nYXMtZmVlIDIwMDAwdWdub3QgLWdhcy13YW50ZWQgMjAwMDAwMCAtYnJvYWRjYXN0IC1jaGFpbmlkIG9ueXgtMSAtcmVtb3RlIGh0dHBzOi8vcnBjLm9ueXgudGVzdG5ldHMuZ25vLmxhbmQ6NDQzIG15a2V5CgojIHZpZXcgcmVzdWx0cyBpbiBnbm93ZWIKIyAgIGh0dHBzOi8vZ25vLmxhbmQvci9tb3VsL3gvZGFpbHkvcG9sbHMvdjEKIyAgIGh0dHBzOi8vZ25vLmxhbmQvci9tb3VsL3gvZGFpbHkvcG9sbHMvdjE6MApgYGAKCiMjIFRlc3RpbmcKCmBgYHNoCmdubyB0ZXN0IC4KYGBgCgo8IS0tIEJFR0lOIEdOT0NPTlRSQUNUUyBGT09URVIgKGdlbmVyYXRlZCBieSBgbWFrZSByZWFkbWVzYDsgZG8gbm90IGVkaXQgYmVsb3cpIC0tPgoKLS0tCgpQYXJ0IG9mICoqW21vdWwvZ25vLWNvbnRyYWN0c10oaHR0cHM6Ly9naXRodWIuY29tL21vdWwvZ25vLWNvbnRyYWN0cykqKiDigJQgbW91bCdzIHZlcnNpb25lZCBnbm8ubGFuZCBjb250cmFjdHMuIFNlZSB0aGUgcmVwb3NpdG9yeSBmb3IgdGhlIGZ1bGwgY2F0YWxvZywgYnVpbGQvdGVzdCB0b29saW5nLCBhbmQgdXNhZ2UuCgoqKk9uIG1haW5uZXQ6KiogWyFbZGVwbG95bWVudCBzdGF0dXNdKGh0dHBzOi8vZ25vc2NvcGUuY29tL19iYWRnZXMvc2hpZWxkL3N0YXR1cy9yL21vdWwveC9kYWlseS9wb2xscy92MT9uZXR3b3JrPW1haW5uZXQpXShodHRwczovL2dub3Njb3BlLmNvbS9yZWFsbS9yL21vdWwveC9kYWlseS9wb2xscy92MSkgWyFbdHJhbnNhY3Rpb25zXShodHRwczovL2dub3Njb3BlLmNvbS9fYmFkZ2VzL3NoaWVsZC90eHMvci9tb3VsL3gvZGFpbHkvcG9sbHMvdjE/bmV0d29yaz1tYWlubmV0KV0oaHR0cHM6Ly9nbm9zY29wZS5jb20vcmVhbG0vci9tb3VsL3gvZGFpbHkvcG9sbHMvdjEpIFshW3VuaXF1ZSBjYWxsZXJzXShodHRwczovL2dub3Njb3BlLmNvbS9fYmFkZ2VzL3NoaWVsZC91c2Vycy9yL21vdWwveC9kYWlseS9wb2xscy92MT9uZXR3b3JrPW1haW5uZXQpXShodHRwczovL2dub3Njb3BlLmNvbS9yZWFsbS9yL21vdWwveC9kYWlseS9wb2xscy92MSkgWyFbZGVwbG95ZWQgcmV2aXNpb25dKGh0dHBzOi8vZ25vc2NvcGUuY29tL19iYWRnZXMvc2hpZWxkL3ZlcnNpb24vci9tb3VsL3gvZGFpbHkvcG9sbHMvdjE/bmV0d29yaz1tYWlubmV0KV0oaHR0cHM6Ly9nbm9zY29wZS5jb20vcmVhbG0vci9tb3VsL3gvZGFpbHkvcG9sbHMvdjEpCgoqKkRlcGVuZGVuY3kgZ3JhcGg6KioKCiFbZ25vLmxhbmQvci9tb3VsL3gvZGFpbHkvcG9sbHMvdjEgZGVwZW5kZW5jeSBncmFwaF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL21vdWwvZ25vLWNvbnRyYWN0cy9tYWluL19hc3NldHMvZ25vLmxhbmQvci9tb3VsL3gvZGFpbHkvcG9sbHMvdjEvZGVwcy5wbmcpCgo+IPCfp6ogKipIaWdobHkgZXhwZXJpbWVudGFsIOKAlCBwb3RlbnRpYWxseSB2aWJlLWNvZGVkLioqIE5vdCBhdWRpdGVkOyBtYXkgYnJlYWssIGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCBhdCBhbnkgdGltZS4gRG8gbm90IHVzZSB3aXRoIGFueXRoaW5nIG9mIHZhbHVlLiBGdWxsIGRpc2NsYWltZXI6IFtESVNDTEFJTUVSXShodHRwczovL2dpdGh1Yi5jb20vbW91bC9nbm8tY29udHJhY3RzL2Jsb2IvbWFpbi9ESVNDTEFJTUVSLm1kKS4KCjwhLS0gRU5EIEdOT0NPTlRSQUNUUyBGT09URVIgLS0+ChrwAQoLZ25vbW9kLnRvbWwS4AFtb2R1bGUgPSAiZ25vLmxhbmQvci9tb3VsL3gvZGFpbHkvcG9sbHMvdjEiCmdubyA9ICIwLjkiCnByaXZhdGUgPSB0cnVlCgpbc291cmNlXQogIHJlcG9zaXRvcnkgPSAiaHR0cHM6Ly9naXRodWIuY29tL21vdWwvZ25vLWNvbnRyYWN0cyIKICBwYXRoID0gInIvbW91bC94L2RhaWx5L3BvbGxzIgogIHJldmlzaW9uID0gIjUwNzA1NmQ4MTJiNTA1YWQxNmEwMDlmMGQ2MDc4NjY0NGNlZWIxOWQiChqGOAoJcG9sbHMuZ25vEvg3Ly8gUGFja2FnZSBwb2xscyBpcyBhbiBvbi1jaGFpbiBwb2xsIC8gdm90aW5nIHJlYWxtIGZvciBnbm8ubGFuZC4KLy8KLy8gQW55b25lIGNhbiBjcmVhdGUgYSBwb2xsIHdpdGggYSBxdWVzdGlvbiBhbmQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgovLyBvcHRpb25zLiBFYWNoIGNhbGxlciBhZGRyZXNzIG1heSBjYXN0IGV4YWN0bHkgb25lIHZvdGUgcGVyIHBvbGwuIFJlbmRlcgovLyBkcmF3cyBldmVyeSBwb2xsIHdpdGggaXRzIG9wdGlvbnMsIHRhbGxpZXMgYXMg4paT4paRIGJhciBjaGFydHMsIHBlcmNlbnRhZ2VzCi8vIGFuZCB0aGUgdG90YWwgdm90ZSBjb3VudC4KcGFja2FnZSBwb2xscwoKaW1wb3J0ICgKCSJjaGFpbiIKCSJjaGFpbi9tYXJrZG93biIKCSJzdHJjb252IgoJInN0cmluZ3MiCgoJImduby5sYW5kL3AvbW91bC9raXQvdWkvdjAiCgkiZ25vLmxhbmQvcC9udC9hdmwvdjAiCikKCi8vIHNlbGZQYXRoIGlzIHRoaXMgcmVhbG0ncyBvd24gcGFnZS4gQSByb290LXJlbGF0aXZlIGxpbmsgcmVzb2x2ZXMgYWdhaW5zdAovLyB0aGUgZG9tYWluLCBub3QgdGhlIHJlYWxtLCBzbyBldmVyeSBsaW5rIGJhY2sgaW50byBpdCBuYW1lcyBpdCBpbiBmdWxsLgpjb25zdCBzZWxmUGF0aCA9ICIvci9tb3VsL3gvZGFpbHkvcG9sbHMvdjEiCgovLyBQb2xsIGlzIGEgc2luZ2xlIHF1ZXN0aW9uIHdpdGggaXRzIG9wdGlvbnMgYW5kIHBlci1hZGRyZXNzIHZvdGUgdHJhY2tpbmcuCnR5cGUgUG9sbCBzdHJ1Y3QgewoJSUQgICAgICAgaW50CglRdWVzdGlvbiBzdHJpbmcKCU9wdGlvbnMgIFtdc3RyaW5nCglUYWxsaWVzICBbXWludAoJQ3JlYXRvciAgc3RyaW5nICAgIC8vIGJlY2gzMiBhZGRyZXNzIG9mIHRoZSBwb2xsIGNyZWF0b3IKCXZvdGVkICAgICphdmwuVHJlZSAvLyBhZGRyZXNzIHN0cmluZyAtPiBzdHJ1Y3R7fXt9LCBvbmUgdm90ZSBwZXIgYWRkcmVzcwp9Cgp2YXIgKAoJcG9sbHMgIFtdKlBvbGwgLy8gaW5kZXggaSBob2xkcyB0aGUgcG9sbCB3aXRoIElEIGkKCW5leHRJRCBpbnQKKQoKLy8gQ3JlYXRlUG9sbCByZWdpc3RlcnMgYSBuZXcgcG9sbC4gb3B0aW9ucyBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0OyBibGFuawovLyBlbnRyaWVzIGFyZSBkcm9wcGVkLiBSZXR1cm5zIHRoZSBuZXcgcG9sbCdzIGlkLiBDcm9zc2luZyBmdW5jdGlvbjogYW4gRU9BCi8vIGludm9rZXMgaXQgdmlhIE1zZ0NhbGw7IGFub3RoZXIgcmVhbG0gdmlhIHBvbGxzLkNyZWF0ZVBvbGwoY3Jvc3MsIHEsIG9wdHMpLgpmdW5jIENyZWF0ZVBvbGwoY3VyIHJlYWxtLCBxdWVzdGlvbiBzdHJpbmcsIG9wdGlvbnMgc3RyaW5nKSBpbnQgewoJY3JlYXRvciA6PSBjYWxsZXIoY3VyKS5TdHJpbmcoKQoKCXEgOj0gc3RyaW5ncy5UcmltU3BhY2UocXVlc3Rpb24pCglpZiBzdHJpbmdzLlRyaW1TcGFjZShtYXJrZG93bi5TdHJpcEJpZGlBbmRaZXJvV2lkdGgocSkpID09ICIiIHsKCQlwYW5pYygicXVlc3Rpb24gbXVzdCBub3QgYmUgZW1wdHkiKQoJfQoKCWlmIGxlbihxKSA+IE1heFF1ZXN0aW9uTGVuIHsKCQlwYW5pYygicXVlc3Rpb24gdG9vIGxvbmciKQoJfQoJb3B0cyA6PSBwYXJzZU9wdGlvbnMob3B0aW9ucykKCWlmIGxlbihvcHRzKSA8IDIgewoJCXBhbmljKCJhIHBvbGwgbmVlZHMgYXQgbGVhc3QgMiBvcHRpb25zIikKCX0KCWlmIGxlbihvcHRzKSA+IE1heE9wdGlvbnMgewoJCXBhbmljKCJhIHBvbGwgdGFrZXMgYXQgbW9zdCAiICsgc3RyY29udi5JdG9hKE1heE9wdGlvbnMpICsgIiBvcHRpb25zIikKCX0KCWZvciBfLCBvIDo9IHJhbmdlIG9wdHMgewoJCWlmIGxlbihvKSA+IE1heE9wdGlvbkxlbiB7CgkJCXBhbmljKCJvcHRpb24gdG9vIGxvbmciKQoJCX0KCX0KCWlmIGxlbihwb2xscykgPj0gTWF4UG9sbHMgewoJCXBhbmljKCJwb2xscyBpcyBmdWxsIGF0ICIgKyBzdHJjb252Lkl0b2EoTWF4UG9sbHMpICsgIiBwb2xscyIpCgl9CgoJaWQgOj0gbmV4dElECgluZXh0SUQrKwoJcCA6PSAmUG9sbHsKCQlJRDogICAgICAgaWQsCgkJUXVlc3Rpb246IHEsCgkJT3B0aW9uczogIG9wdHMsCgkJVGFsbGllczogIG1ha2UoW11pbnQsIGxlbihvcHRzKSksCgkJQ3JlYXRvcjogIGNyZWF0b3IsCgkJdm90ZWQ6ICAgIGF2bC5OZXdUcmVlKCksCgl9Cglwb2xscyA9IGFwcGVuZChwb2xscywgcCkKCgljaGFpbi5FbWl0KCJQb2xsQ3JlYXRlZCIsCgkJImlkIiwgc3RyY29udi5JdG9hKGlkKSwKCQkiY3JlYXRvciIsIGNyZWF0b3IsCgkJIm9wdGlvbnMiLCBzdHJjb252Lkl0b2EobGVuKG9wdHMpKSwKCSkKCXJldHVybiBpZAp9CgovLyBWb3RlIGNhc3RzIG9uZSB2b3RlIGZvciBvcHRpb25JbmRleCBvbiBwb2xsIHBvbGxJRC4gRWFjaCBjYWxsZXIgYWRkcmVzcyBtYXkKLy8gdm90ZSBhdCBtb3N0IG9uY2UgcGVyIHBvbGwuIENyb3NzaW5nIGZ1bmN0aW9uLgpmdW5jIFZvdGUoY3VyIHJlYWxtLCBwb2xsSUQgaW50LCBvcHRpb25JbmRleCBpbnQpIHsKCXZvdGVyIDo9IGNhbGxlcihjdXIpLlN0cmluZygpCgoJcCA6PSBnZXRQb2xsKHBvbGxJRCkKCWlmIG9wdGlvbkluZGV4IDwgMCB8fCBvcHRpb25JbmRleCA+PSBsZW4ocC5PcHRpb25zKSB7CgkJcGFuaWMoIm9wdGlvbiBpbmRleCBvdXQgb2YgcmFuZ2UiKQoJfQoJaWYgcC52b3RlZC5IYXModm90ZXIpIHsKCQlwYW5pYygiYWRkcmVzcyBhbHJlYWR5IHZvdGVkIG9uIHRoaXMgcG9sbCIpCgl9CgoJcC52b3RlZC5TZXQodm90ZXIsIHN0cnVjdHt9e30pCglwLlRhbGxpZXNbb3B0aW9uSW5kZXhdKysKCgljaGFpbi5FbWl0KCJWb3RlZCIsCgkJImlkIiwgc3RyY29udi5JdG9hKHBvbGxJRCksCgkJInZvdGVyIiwgdm90ZXIsCgkJIm9wdGlvbiIsIHN0cmNvbnYuSXRvYShvcHRpb25JbmRleCksCgkpCn0KCi8vIHBhcnNlT3B0aW9ucyBzcGxpdHMgYSBjb21tYS1zZXBhcmF0ZWQgb3B0aW9uIHN0cmluZywgdHJpbW1pbmcgd2hpdGVzcGFjZSBhbmQKLy8gZHJvcHBpbmcgZW1wdGllcy4gUHVyZSBsb2dpYyDigJQgbm8gcmVhbG0gc3RhdGUuCmZ1bmMgcGFyc2VPcHRpb25zKG9wdGlvbnMgc3RyaW5nKSBbXXN0cmluZyB7Cgl2YXIgb3V0IFtdc3RyaW5nCglmb3IgXywgcmF3IDo9IHJhbmdlIHN0cmluZ3MuU3BsaXQob3B0aW9ucywgIiwiKSB7CgkJbyA6PSBzdHJpbmdzLlRyaW1TcGFjZShyYXcpCgkJaWYgc3RyaW5ncy5UcmltU3BhY2UobWFya2Rvd24uU3RyaXBCaWRpQW5kWmVyb1dpZHRoKG8pKSAhPSAiIiB7CgkJCW91dCA9IGFwcGVuZChvdXQsIG8pCgkJfQoJfQoJcmV0dXJuIG91dAp9CgovLyBnZXRQb2xsIHJldHVybnMgdGhlIHBvbGwgd2l0aCB0aGUgZ2l2ZW4gaWQgb3IgcGFuaWNzIGlmIGl0IGRvZXMgbm90IGV4aXN0LgpmdW5jIGdldFBvbGwoaWQgaW50KSAqUG9sbCB7CglpZiBpZCA8IDAgfHwgaWQgPj0gbGVuKHBvbGxzKSB7CgkJcGFuaWMoInBvbGwgbm90IGZvdW5kIikKCX0KCXJldHVybiBwb2xsc1tpZF0KfQoKLy8gUG9sbENvdW50IHJldHVybnMgdGhlIG51bWJlciBvZiBwb2xscyBjcmVhdGVkIHNvIGZhciAocmVhZC1vbmx5IGhlbHBlcikuCmZ1bmMgUG9sbENvdW50KCkgaW50IHsKCXJldHVybiBsZW4ocG9sbHMpCn0KCmNvbnN0IGJhcldpZHRoID0gMjAKCi8vIFRoZSBib3VuZHMgb24gd2hhdCBhIGNyZWF0b3IgbWF5IHN0b3JlLiBBbnlvbmUgbWF5IGNyZWF0ZSBhIHBvbGwsIGFuZCB0aGUKLy8gcm9vdCBwYWdlIHJlbmRlcnMgdGhlIG5ld2VzdCBvbmVzLgpjb25zdCAoCglNYXhQb2xscyAgICAgICA9IDUwMAoJTWF4UXVlc3Rpb25MZW4gPSAyMDAKCU1heE9wdGlvbnMgICAgID0gMTAKCU1heE9wdGlvbkxlbiAgID0gNjQKCUluZGV4UmVjZW50ICAgID0gMjAgLy8gcG9sbHMgdGhlIHJvb3QgcGFnZSBzaG93cywgbmV3ZXN0IGZpcnN0CikKCi8vIGJhciByZW5kZXJzIGEgcHJvcG9ydGlvbmFsIOKWk+KWkSBiYXIgb2YgZml4ZWQgd2lkdGggZm9yIGNvdW50IG91dCBvZiB0b3RhbC4KZnVuYyBiYXIoY291bnQsIHRvdGFsIGludCkgc3RyaW5nIHsKCWZpbGxlZCA6PSAwCglpZiB0b3RhbCA+IDAgewoJCWZpbGxlZCA9IGNvdW50ICogYmFyV2lkdGggLyB0b3RhbAoJfQoJaWYgZmlsbGVkID4gYmFyV2lkdGggewoJCWZpbGxlZCA9IGJhcldpZHRoCgl9CglyZXR1cm4gc3RyaW5ncy5SZXBlYXQoIuKWkyIsIGZpbGxlZCkgKyBzdHJpbmdzLlJlcGVhdCgi4paRIiwgYmFyV2lkdGgtZmlsbGVkKQp9CgovLyBwZXJjZW50IHJldHVybnMgdGhlIGludGVnZXIgcGVyY2VudGFnZSBvZiBjb3VudCBvdXQgb2YgdG90YWwuCmZ1bmMgcGVyY2VudChjb3VudCwgdG90YWwgaW50KSBpbnQgewoJaWYgdG90YWwgPT0gMCB7CgkJcmV0dXJuIDAKCX0KCXJldHVybiBjb3VudCAqIDEwMCAvIHRvdGFsCn0KCi8vIHRvdGFsIHN1bXMgYSB0YWxseSBzbGljZS4KZnVuYyB0b3RhbCh0YWxsaWVzIFtdaW50KSBpbnQgewoJc3VtIDo9IDAKCWZvciBfLCB0IDo9IHJhbmdlIHRhbGxpZXMgewoJCXN1bSArPSB0Cgl9CglyZXR1cm4gc3VtCn0KCi8vIHJlbmRlclBvbGwgd3JpdGVzIG9uZSBwb2xsJ3MgTWFya2Rvd24gYmxvY2sgaW50byBiLgpmdW5jIHJlbmRlclBvbGwoYiAqc3RyaW5ncy5CdWlsZGVyLCBwICpQb2xsKSB7CglzdW0gOj0gdG90YWwocC5UYWxsaWVzKQoKCWIuV3JpdGVTdHJpbmcoIiMjIFBvbGwgIyIpCgliLldyaXRlU3RyaW5nKHN0cmNvbnYuSXRvYShwLklEKSkKCWIuV3JpdGVTdHJpbmcoIjogIikKCWIuV3JpdGVTdHJpbmcodWkuSW5saW5lKHAuUXVlc3Rpb24pKQoJYi5Xcml0ZVN0cmluZygiXG5cbiIpCgoJZm9yIGksIG9wdCA6PSByYW5nZSBwLk9wdGlvbnMgewoJCWMgOj0gcC5UYWxsaWVzW2ldCgkJYi5Xcml0ZVN0cmluZygiLSAqKiIpCgkJYi5Xcml0ZVN0cmluZyh1aS5JbmxpbmUob3B0KSkKCQliLldyaXRlU3RyaW5nKCIqKiBgIikKCQliLldyaXRlU3RyaW5nKGJhcihjLCBzdW0pKQoJCWIuV3JpdGVTdHJpbmcoImAgIikKCQliLldyaXRlU3RyaW5nKHN0cmNvbnYuSXRvYShwZXJjZW50KGMsIHN1bSkpKQoJCWIuV3JpdGVTdHJpbmcoIiUgKCIpCgkJYi5Xcml0ZVN0cmluZyhzdHJjb252Lkl0b2EoYykpCgkJaWYgYyA9PSAxIHsKCQkJYi5Xcml0ZVN0cmluZygiIHZvdGUpIikKCQl9IGVsc2UgewoJCQliLldyaXRlU3RyaW5nKCIgdm90ZXMpIikKCQl9CgkJYi5Xcml0ZVN0cmluZygiXG4iKQoJfQoKCWIuV3JpdGVTdHJpbmcoIlxuX1RvdGFsIHZvdGVzOiAiKQoJYi5Xcml0ZVN0cmluZyhzdHJjb252Lkl0b2Eoc3VtKSkKCWIuV3JpdGVTdHJpbmcoIl9cblxuIikKfQoKLy8gUmVuZGVyIHByb2R1Y2VzIHRoZSBNYXJrZG93biBwYWdlIGZvciBnbm93ZWIuIEl0IGlzIE5PVCBhIGNyb3NzaW5nIGZ1bmN0aW9uLgovLwovLyAgIC0gIiIgICAgICAgICAgLT4gdGhlIEluZGV4UmVjZW50IG5ld2VzdCBwb2xscwovLyAgIC0gInBhZ2UvPG4+IiAgLT4gdGhlIG4tdGggcGFnZSBvZiBJbmRleFJlY2VudCwgbmV3ZXN0IGZpcnN0IChwYWdlLzEgaXMgIiIpCi8vICAgLSAiPGlkPiIgICAgICAtPiBhIHNpbmdsZSBwb2xsIGJ5IGlkCmZ1bmMgUmVuZGVyKHBhdGggc3RyaW5nKSBzdHJpbmcgewoJdmFyIGIgc3RyaW5ncy5CdWlsZGVyCgoJcGF0aCA9IHN0cmluZ3MuVHJpbVNwYWNlKHBhdGgpCglwYWdlIDo9IDEKCWlmIHJlc3QsIG9rIDo9IHN0cmluZ3MuQ3V0UHJlZml4KHBhdGgsICJwYWdlLyIpOyBvayB7CgkJbiwgZXJyIDo9IHN0cmNvbnYuQXRvaShyZXN0KQoJCS8vIEJvdW5kZWQgYmVmb3JlIGFueSBtdWx0aXBseTogdGhlIHBhZ2UgY29tZXMgZnJvbSB0aGUgVVJMLgoJCWlmIGVyciAhPSBuaWwgfHwgbiA8IDEgfHwgbiA+IDErKGxlbihwb2xscyktMSkvSW5kZXhSZWNlbnQgewoJCQlyZXR1cm4gIiMgUG9sbHNcblxuTm8gc3VjaCBwYWdlLlxuXG5b4oaQIGFsbCBwb2xsc10oIiArIHNlbGZQYXRoICsgIilcbiIKCQl9CgkJcGFnZSwgcGF0aCA9IG4sICIiCgl9CglpZiBwYXRoICE9ICIiIHsKCQlpZCwgZXJyIDo9IHN0cmNvbnYuQXRvaShwYXRoKQoJCWlmIGVyciAhPSBuaWwgfHwgaWQgPCAwIHx8IGlkID49IGxlbihwb2xscykgewoJCQlyZXR1cm4gIiMgUG9sbHNcblxuUG9sbCBub3QgZm91bmQuXG4iCgkJfQoJCWIuV3JpdGVTdHJpbmcoIiMgUG9sbHNcblxuIikKCQlyZW5kZXJQb2xsKCZiLCBwb2xsc1tpZF0pCgkJYi5Xcml0ZVN0cmluZygiW+KGkCBhbGwgcG9sbHNdKCIgKyBzZWxmUGF0aCArICIpXG4iKQoJCXJldHVybiBiLlN0cmluZygpCgl9CgoJYi5Xcml0ZVN0cmluZygiIyBQb2xscyAmIFZvdGluZ1xuXG4iKQoJaWYgbGVuKHBvbGxzKSA9PSAwIHsKCQliLldyaXRlU3RyaW5nKCJfTm8gcG9sbHMgeWV0LiBDcmVhdGUgb25lIHdpdGggYENyZWF0ZVBvbGwocXVlc3Rpb24sIFwiYSxiLGNcIilgLl9cbiIpCgkJcmV0dXJuIGIuU3RyaW5nKCkKCX0KCglwYWdlcyA6PSAxICsgKGxlbihwb2xscyktMSkvSW5kZXhSZWNlbnQKCWIuV3JpdGVTdHJpbmcoIlRvdGFsIHBvbGxzOiAiKQoJYi5Xcml0ZVN0cmluZyhzdHJjb252Lkl0b2EobGVuKHBvbGxzKSkpCglpZiBwYWdlcyA+IDEgewoJCWIuV3JpdGVTdHJpbmcoIiwgcGFnZSAiICsgc3RyY29udi5JdG9hKHBhZ2UpICsgIiBvZiAiICsgc3RyY29udi5JdG9hKHBhZ2VzKSkKCX0KCWIuV3JpdGVTdHJpbmcoIlxuXG4iKQoJLy9nbm92ZXQ6aWdub3JlIHBhZ2Utb2Zmc2V0LW92ZXJmbG93IHBhZ2UgaXMgYm91bmRlZCBieSBwYWdlcyBhYm92ZQoJdG9wIDo9IGxlbihwb2xscykgLSAxIC0gKHBhZ2UtMSkqSW5kZXhSZWNlbnQKCWZvciBpIDo9IHRvcDsgaSA+PSAwICYmIGkgPiB0b3AtSW5kZXhSZWNlbnQ7IGktLSB7CgkJcmVuZGVyUG9sbCgmYiwgcG9sbHNbaV0pCgl9CglpZiBwYWdlIDwgcGFnZXMgewoJCWIuV3JpdGVTdHJpbmcoIltvbGRlciBwb2xscyDihpJdKCIgKyBzZWxmUGF0aCArICI6cGFnZS8iICsgc3RyY29udi5JdG9hKHBhZ2UrMSkgKyAiKVxuIikKCX0KCXJldHVybiBiLlN0cmluZygpCn0KCi8vIGNhbGxlciBpcyB0aGUgYWRkcmVzcyB0aGF0IGNyb3NzZWQgaW50byB0aGlzIHJlYWxtLCBhZnRlciBjaGVja2luZyB0aGF0IHRoZQovLyByZWFsbSB0b2tlbiBpcyB0aGlzIGZyYW1lJ3Mgb3duLgpmdW5jIGNhbGxlcihjdXIgcmVhbG0pIGFkZHJlc3MgewoJaWYgIWN1ci5Jc0N1cnJlbnQoKSB7CgkJcGFuaWMoInBvbGxzOiBzcG9vZmVkIHJlYWxtIikKCX0KCXJldHVybiBjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkKfQoanR4KDnBvbGxzX3Rlc3QuZ25vEooecGFja2FnZSBwb2xscwoKaW1wb3J0ICgKCSJzdHJpbmdzIgoJInRlc3RpbmciCgoJImduby5sYW5kL3AvbnQvdGVzdHV0aWxzL3YwIgoJImduby5sYW5kL3AvbnQvdWFzc2VydC92MCIKKQoKdmFyICgKCWFsaWNlID0gdGVzdHV0aWxzLlRlc3RBZGRyZXNzKCJhbGljZSIpCglib2IgICA9IHRlc3R1dGlscy5UZXN0QWRkcmVzcygiYm9iIikKCWNhcm9sID0gdGVzdHV0aWxzLlRlc3RBZGRyZXNzKCJjYXJvbCIpCikKCi8vIHJlc2V0U3RhdGUgY2xlYXJzIHBhY2thZ2UtbGV2ZWwgc3RhdGUgYmV0d2VlbiB0ZXN0cyBzbyBjYXNlcyBhcmUgaW5kZXBlbmRlbnQuCmZ1bmMgcmVzZXRTdGF0ZSgpIHsKCXBvbGxzID0gbmlsCgluZXh0SUQgPSAwCn0KCmZ1bmMgVGVzdFBhcnNlT3B0aW9ucyh0ICp0ZXN0aW5nLlQpIHsKCXRlc3RzIDo9IFtdc3RydWN0IHsKCQluYW1lICBzdHJpbmcKCQlpbnB1dCBzdHJpbmcKCQl3YW50ICBbXXN0cmluZwoJfXsKCQl7InNpbXBsZSIsICJhLGIsYyIsIFtdc3RyaW5neyJhIiwgImIiLCAiYyJ9fSwKCQl7InRyaW1zIHNwYWNlcyIsICIgeWVzICwgbm8gIiwgW11zdHJpbmd7InllcyIsICJubyJ9fSwKCQl7ImRyb3BzIGVtcHRpZXMiLCAiYSwsYiwgLGMiLCBbXXN0cmluZ3siYSIsICJiIiwgImMifX0sCgkJeyJzaW5nbGUiLCAib25seSIsIFtdc3RyaW5neyJvbmx5In19LAoJCXsiYWxsIGJsYW5rIiwgIiAsICwiLCBuaWx9LAoJfQoJZm9yIF8sIHR0IDo9IHJhbmdlIHRlc3RzIHsKCQlnb3QgOj0gcGFyc2VPcHRpb25zKHR0LmlucHV0KQoJCWlmIGxlbihnb3QpICE9IGxlbih0dC53YW50KSB7CgkJCXQuRXJyb3JmKCIlczogbGVuID0gJWQsIHdhbnQgJWQgKCV2KSIsIHR0Lm5hbWUsIGxlbihnb3QpLCBsZW4odHQud2FudCksIGdvdCkKCQkJY29udGludWUKCQl9CgkJZm9yIGkgOj0gcmFuZ2UgZ290IHsKCQkJaWYgZ290W2ldICE9IHR0LndhbnRbaV0gewoJCQkJdC5FcnJvcmYoIiVzOiBbJWRdID0gJXEsIHdhbnQgJXEiLCB0dC5uYW1lLCBpLCBnb3RbaV0sIHR0LndhbnRbaV0pCgkJCX0KCQl9Cgl9Cn0KCmZ1bmMgVGVzdENyZWF0ZUFuZFZvdGUoY3VyIHJlYWxtLCB0ICp0ZXN0aW5nLlQpIHsKCXJlc2V0U3RhdGUoKQoJdGVzdGluZy5TZXRSZWFsbSh0ZXN0aW5nLk5ld1VzZXJSZWFsbShhbGljZSkpCgoJaWQgOj0gQ3JlYXRlUG9sbChjcm9zcyhjdXIpLCAiQmVzdCBjaGFpbj8iLCAiZ25vLGV0aCxidGMiKQoJaWYgaWQgIT0gMCB7CgkJdC5GYXRhbGYoImZpcnN0IHBvbGwgaWQgPSAlZCwgd2FudCAwIiwgaWQpCgl9CglpZiBQb2xsQ291bnQoKSAhPSAxIHsKCQl0LkZhdGFsZigiUG9sbENvdW50ID0gJWQsIHdhbnQgMSIsIFBvbGxDb3VudCgpKQoJfQoKCS8vIGFsaWNlIHZvdGVzIGduby4KCVZvdGUoY3Jvc3MoY3VyKSwgaWQsIDApCgoJLy8gYm9iIHZvdGVzIGV0aC4KCXRlc3RpbmcuU2V0UmVhbG0odGVzdGluZy5OZXdVc2VyUmVhbG0oYm9iKSkKCVZvdGUoY3Jvc3MoY3VyKSwgaWQsIDEpCgoJLy8gY2Fyb2wgdm90ZXMgZ25vLgoJdGVzdGluZy5TZXRSZWFsbSh0ZXN0aW5nLk5ld1VzZXJSZWFsbShjYXJvbCkpCglWb3RlKGNyb3NzKGN1ciksIGlkLCAwKQoKCXAgOj0gZ2V0UG9sbChpZCkKCWlmIHAuVGFsbGllc1swXSAhPSAyIHsKCQl0LkVycm9yZigiZ25vIHRhbGx5ID0gJWQsIHdhbnQgMiIsIHAuVGFsbGllc1swXSkKCX0KCWlmIHAuVGFsbGllc1sxXSAhPSAxIHsKCQl0LkVycm9yZigiZXRoIHRhbGx5ID0gJWQsIHdhbnQgMSIsIHAuVGFsbGllc1sxXSkKCX0KCWlmIHRvdGFsKHAuVGFsbGllcykgIT0gMyB7CgkJdC5FcnJvcmYoInRvdGFsID0gJWQsIHdhbnQgMyIsIHRvdGFsKHAuVGFsbGllcykpCgl9Cn0KCmZ1bmMgVGVzdERvdWJsZVZvdGVQYW5pY3MoY3VyIHJlYWxtLCB0ICp0ZXN0aW5nLlQpIHsKCXJlc2V0U3RhdGUoKQoJdGVzdGluZy5TZXRSZWFsbSh0ZXN0aW5nLk5ld1VzZXJSZWFsbShhbGljZSkpCgoJaWQgOj0gQ3JlYXRlUG9sbChjcm9zcyhjdXIpLCAiQ29mZmVlIG9yIHRlYT8iLCAiY29mZmVlLHRlYSIpCglWb3RlKGNyb3NzKGN1ciksIGlkLCAwKQoKCS8vIEEgc2Vjb25kIHZvdGUgYnkgdGhlIHNhbWUgYWRkcmVzcyBhYm9ydHMgKGNyb3NzLXJlYWxtIHBhbmljKS4KCXVhc3NlcnQuQWJvcnRzV2l0aE1lc3NhZ2UodCwgY3VyLCAiYWRkcmVzcyBhbHJlYWR5IHZvdGVkIG9uIHRoaXMgcG9sbCIsIGZ1bmMoKSB7CgkJVm90ZShjcm9zcyhjdXIpLCBpZCwgMSkKCX0pCn0KCmZ1bmMgVGVzdFZvdGVCb3VuZHMoY3VyIHJlYWxtLCB0ICp0ZXN0aW5nLlQpIHsKCXJlc2V0U3RhdGUoKQoJdGVzdGluZy5TZXRSZWFsbSh0ZXN0aW5nLk5ld1VzZXJSZWFsbShhbGljZSkpCgoJaWQgOj0gQ3JlYXRlUG9sbChjcm9zcyhjdXIpLCAiQSBvciBCPyIsICJhLGIiKQoKCXVhc3NlcnQuQWJvcnRzV2l0aE1lc3NhZ2UodCwgY3VyLCAib3B0aW9uIGluZGV4IG91dCBvZiByYW5nZSIsIGZ1bmMoKSB7CgkJVm90ZShjcm9zcyhjdXIpLCBpZCwgNSkKCX0pCn0KCmZ1bmMgVGVzdENyZWF0ZVBvbGxOZWVkc1R3b09wdGlvbnMoY3VyIHJlYWxtLCB0ICp0ZXN0aW5nLlQpIHsKCXJlc2V0U3RhdGUoKQoJdGVzdGluZy5TZXRSZWFsbSh0ZXN0aW5nLk5ld1VzZXJSZWFsbShhbGljZSkpCgoJdWFzc2VydC5BYm9ydHNXaXRoTWVzc2FnZSh0LCBjdXIsICJhIHBvbGwgbmVlZHMgYXQgbGVhc3QgMiBvcHRpb25zIiwgZnVuYygpIHsKCQlDcmVhdGVQb2xsKGNyb3NzKGN1ciksICJPbmU/IiwgIm9ubHkiKQoJfSkKfQoKZnVuYyBUZXN0UmVuZGVyKGN1ciByZWFsbSwgdCAqdGVzdGluZy5UKSB7CglyZXNldFN0YXRlKCkKCXRlc3RpbmcuU2V0UmVhbG0odGVzdGluZy5OZXdVc2VyUmVhbG0oYWxpY2UpKQoKCS8vIEVtcHR5IGluZGV4LgoJaWYgZ290IDo9IFJlbmRlcigiIik7ICFzdHJpbmdzLkNvbnRhaW5zKGdvdCwgIk5vIHBvbGxzIHlldCIpIHsKCQl0LkVycm9yZigiZW1wdHkgUmVuZGVyIHNob3VsZCBtZW50aW9uIG5vIHBvbGxzLCBnb3Q6XG4lcyIsIGdvdCkKCX0KCglpZCA6PSBDcmVhdGVQb2xsKGNyb3NzKGN1ciksICJQaWNrIG9uZSIsICJ4LHkiKQoJVm90ZShjcm9zcyhjdXIpLCBpZCwgMCkKCgkvLyBJbmRleCBsaXN0cyB0aGUgcG9sbCBhbmQgYmFyIGNoYXJ0IGdseXBocy4KCWlkeCA6PSBSZW5kZXIoIiIpCglpZiAhc3RyaW5ncy5Db250YWlucyhpZHgsICJQaWNrIG9uZSIpIHsKCQl0LkVycm9yZigiaW5kZXggbWlzc2luZyBxdWVzdGlvbjpcbiVzIiwgaWR4KQoJfQoJaWYgIXN0cmluZ3MuQ29udGFpbnMoaWR4LCAi4paTIikgfHwgIXN0cmluZ3MuQ29udGFpbnMoaWR4LCAi4paRIikgewoJCXQuRXJyb3JmKCJpbmRleCBtaXNzaW5nIGJhciBnbHlwaHM6XG4lcyIsIGlkeCkKCX0KCWlmICFzdHJpbmdzLkNvbnRhaW5zKGlkeCwgIlRvdGFsIHZvdGVzOiAxIikgewoJCXQuRXJyb3JmKCJpbmRleCBtaXNzaW5nIHRvdGFsIHZvdGVzOlxuJXMiLCBpZHgpCgl9CglpZiAhc3RyaW5ncy5Db250YWlucyhpZHgsICIxMDAlIikgewoJCXQuRXJyb3JmKCJpbmRleCBtaXNzaW5nIDEwMCUlIGZvciB0aGUgc29sZSB2b3RlOlxuJXMiLCBpZHgpCgl9CgoJLy8gU2luZ2xlLXBvbGwgcGF0aC4KCXNpbmdsZSA6PSBSZW5kZXIoIjAiKQoJaWYgIXN0cmluZ3MuQ29udGFpbnMoc2luZ2xlLCAiUG9sbCAjMCIpIHsKCQl0LkVycm9yZigic2luZ2xlIFJlbmRlciBtaXNzaW5nIHBvbGwgaGVhZGVyOlxuJXMiLCBzaW5nbGUpCgl9CgoJLy8gVW5rbm93biBwYXRoLgoJaWYgZ290IDo9IFJlbmRlcigiOTkiKTsgIXN0cmluZ3MuQ29udGFpbnMoZ290LCAibm90IGZvdW5kIikgewoJCXQuRXJyb3JmKCJ1bmtub3duIHBvbGwgc2hvdWxkIHNheSBub3QgZm91bmQsIGdvdDpcbiVzIiwgZ290KQoJfQp9ChrkDgoSenpfYm91bmRzX3Rlc3QuZ25vEs0OcGFja2FnZSBwb2xscwoKaW1wb3J0ICgKCSJzdHJpbmdzIgoJInRlc3RpbmciCgoJImduby5sYW5kL3AvbnQvdGVzdHV0aWxzL3YwIgoJImduby5sYW5kL3AvbnQvdWFzc2VydC92MCIKKQoKLy8gV2hhdCBhIGNyZWF0b3IgbWF5IHN0b3JlIGlzIGJvdW5kZWQsIGFuZCB0aGUgcm9vdCBwYWdlIHJlbmRlcnMgYSBmaXhlZAovLyB3aW5kb3cgb2YgdGhlIG5ld2VzdCBwb2xscyB3aGF0ZXZlciB0aGUgY291bnQuCmZ1bmMgVGVzdFBvbGxzQXJlQm91bmRlZChjdXIgcmVhbG0sIHQgKnRlc3RpbmcuVCkgewoJdGVzdGluZy5TZXRSZWFsbSh0ZXN0aW5nLk5ld1VzZXJSZWFsbSh0ZXN0dXRpbHMuVGVzdEFkZHJlc3MoImJvdW5kZWQiKSkpCgl1YXNzZXJ0LkFib3J0c0NvbnRhaW5zKHQsIGN1ciwgInF1ZXN0aW9uIHRvbyBsb25nIiwgZnVuYygpIHsgQ3JlYXRlUG9sbChjcm9zcyhjdXIpLCBzdHJpbmdzLlJlcGVhdCgicSIsIE1heFF1ZXN0aW9uTGVuKzEpLCAiYSxiIikgfSkKCXVhc3NlcnQuQWJvcnRzQ29udGFpbnModCwgY3VyLCAiYXQgbW9zdCIsIGZ1bmMoKSB7IENyZWF0ZVBvbGwoY3Jvc3MoY3VyKSwgIm1hbnkiLCBzdHJpbmdzLlJlcGVhdCgibywiLCBNYXhPcHRpb25zKSsibyIpIH0pCglmb3IgbGVuKHBvbGxzKSA8IEluZGV4UmVjZW50KzMgewoJCUNyZWF0ZVBvbGwoY3Jvc3MoY3VyKSwgImZpbGxlciIsICJhLGIiKQoJfQoJdWFzc2VydC5FcXVhbCh0LCBJbmRleFJlY2VudCwgc3RyaW5ncy5Db3VudChSZW5kZXIoIiIpLCAiIyMgUG9sbCAjIikpCn0KCi8vIFRoZSBwb2xsIGNvdW50IGlzIGJvdW5kZWQgZ2xvYmFsbHkuCmZ1bmMgVGVzdFBvbGxDb3VudElzQm91bmRlZChjdXIgcmVhbG0sIHQgKnRlc3RpbmcuVCkgewoJYmVmb3JlIDo9IGxlbihwb2xscykKCWZvciBsZW4ocG9sbHMpIDwgTWF4UG9sbHMgewoJCXBvbGxzID0gYXBwZW5kKHBvbGxzLCAmUG9sbHtJRDogbGVuKHBvbGxzKSwgUXVlc3Rpb246ICJxIiwgT3B0aW9uczogW11zdHJpbmd7ImEiLCAiYiJ9LCBUYWxsaWVzOiBbXWludHswLCAwfX0pCgl9CglkZWZlciBmdW5jKCkgeyBwb2xscyA9IHBvbGxzWzpiZWZvcmVdIH0oKQoJdGVzdGluZy5TZXRSZWFsbSh0ZXN0aW5nLk5ld1VzZXJSZWFsbSh0ZXN0dXRpbHMuVGVzdEFkZHJlc3MoImxhdGVjb21lciIpKSkKCXVhc3NlcnQuQWJvcnRzQ29udGFpbnModCwgY3VyLCAicG9sbHMgaXMgZnVsbCIsIGZ1bmMoKSB7IENyZWF0ZVBvbGwoY3Jvc3MoY3VyKSwgIm9uZSBtb3JlIiwgImEsYiIpIH0pCn0KCi8vIFBvbGxzIHBhc3QgdGhlIG5ld2VzdCBwYWdlIHN0YXkgcmVhY2hhYmxlOiB0aGUgaW5kZXggbGlua3MgdG8gdGhlIG5leHQKLy8gcGFnZSwgYW5kIGEgcGFnZSBwYXN0IHRoZSBlbmQgc2F5cyBzbyBpbnN0ZWFkIG9mIHdyYXBwaW5nLgpmdW5jIFRlc3RPbGRlclBvbGxzQXJlUGFnZWQoY3VyIHJlYWxtLCB0ICp0ZXN0aW5nLlQpIHsKCXRlc3RpbmcuU2V0UmVhbG0odGVzdGluZy5OZXdVc2VyUmVhbG0odGVzdHV0aWxzLlRlc3RBZGRyZXNzKCJwYWdlciIpKSkKCWZvciBsZW4ocG9sbHMpIDwgSW5kZXhSZWNlbnQrMSB7CgkJQ3JlYXRlUG9sbChjcm9zcyhjdXIpLCAiZmlsbGVyIiwgImEsYiIpCgl9CglpZHggOj0gUmVuZGVyKCIiKQoJdWFzc2VydC5UcnVlKHQsIHN0cmluZ3MuQ29udGFpbnMoaWR4LCAiKC9yL21vdWwveC9kYWlseS9wb2xscy92MTpwYWdlLzIpIiksIGlkeCkKCXAyIDo9IFJlbmRlcigicGFnZS8yIikKCXVhc3NlcnQuVHJ1ZSh0LCBzdHJpbmdzLkNvbnRhaW5zKHAyLCAiIyMgUG9sbCAjMDoiKSwgcDIpCgl1YXNzZXJ0LlRydWUodCwgc3RyaW5ncy5Db250YWlucyhSZW5kZXIoInBhZ2UvOTIyMzM3MjAzNjg1NDc3NTgwNyIpLCAiTm8gc3VjaCBwYWdlIikpCn0KGoEFChJ6el9lc2NhcGVfdGVzdC5nbm8S6gRwYWNrYWdlIHBvbGxzCgppbXBvcnQgKAoJInN0cmluZ3MiCgkidGVzdGluZyIKCgkiZ25vLmxhbmQvcC9udC90ZXN0dXRpbHMvdjAiCgkiZ25vLmxhbmQvcC9udC91YXNzZXJ0L3YwIgopCgovLyBBIHF1ZXN0aW9uIGFuZCBpdHMgb3B0aW9ucyBhcmUgdGhlIGNyZWF0b3IncyB0ZXh0OiBlc2NhcGVkLgpmdW5jIFRlc3RRdWVzdGlvbkFuZE9wdGlvbnNBcmVFc2NhcGVkKGN1ciByZWFsbSwgdCAqdGVzdGluZy5UKSB7Cgl0ZXN0aW5nLlNldFJlYWxtKHRlc3RpbmcuTmV3VXNlclJlYWxtKHRlc3R1dGlscy5UZXN0QWRkcmVzcygiZXNjYXBlciIpKSkKCWlkIDo9IENyZWF0ZVBvbGwoY3Jvc3MoY3VyKSwgIltjbGFpbV0oaHR0cHM6Ly9ldmlsLmV4YW1wbGUpIiwgIltjbGFpbV0oaHR0cHM6Ly9ldmlsLmV4YW1wbGUpIisiLG5vIikKCXBhZ2UgOj0gUmVuZGVyKGl0b2FUZXN0KGlkKSkKCXVhc3NlcnQuRmFsc2UodCwgc3RyaW5ncy5Db250YWlucyhwYWdlLCAiW2NsYWltXShodHRwczovL2V2aWwuZXhhbXBsZSkiKSwgcGFnZSkKCXVhc3NlcnQuRmFsc2UodCwgc3RyaW5ncy5Db250YWlucyhSZW5kZXIoIiIpLCAiW2NsYWltXShodHRwczovL2V2aWwuZXhhbXBsZSkiKSwgUmVuZGVyKCIiKSkKfQoapwUKEXp6X2xpbmtzX3Rlc3QuZ25vEpEFcGFja2FnZSBwb2xscwoKaW1wb3J0ICgKCSJzdHJpbmdzIgoJInRlc3RpbmciCgoJImduby5sYW5kL3AvbnQvdGVzdHV0aWxzL3YwIgoJImduby5sYW5kL3AvbnQvdWFzc2VydC92MCIKKQoKLy8gQSBwb2xsIHBhZ2UgbGlua3MgYmFjayB0byB0aGlzIHJlYWxtLiBJdCBvbmNlIGxpbmtlZCB0bwovLyAvci9SRVBMQUNFX0FERFIvcG9sbHMuCmZ1bmMgVGVzdFBvbGxQYWdlTGlua3NCYWNrVG9UaGlzUmVhbG0oY3VyIHJlYWxtLCB0ICp0ZXN0aW5nLlQpIHsKCXRlc3RpbmcuU2V0UmVhbG0odGVzdGluZy5OZXdVc2VyUmVhbG0odGVzdHV0aWxzLlRlc3RBZGRyZXNzKCJsaW5rZXIiKSkpCglpZCA6PSBDcmVhdGVQb2xsKGNyb3NzKGN1ciksICJMaW5rZWQ/IiwgInllcyxubyIpCglwYWdlIDo9IFJlbmRlcihpdG9hVGVzdChpZCkpCgl1YXNzZXJ0LlRydWUodCwgc3RyaW5ncy5Db250YWlucyhwYWdlLCAiW+KGkCBhbGwgcG9sbHNdKC9yL21vdWwveC9kYWlseS9wb2xscy92MSkiKSwgcGFnZSkKfQoKZnVuYyBpdG9hVGVzdChuIGludCkgc3RyaW5nIHsKCWlmIG4gPT0gMCB7CgkJcmV0dXJuICIwIgoJfQoJcyA6PSAiIgoJZm9yIG4gPiAwIHsKCQlzID0gc3RyaW5nKHJ1bmUoYnl0ZShuJTEwKStieXRlKDQ4KSkpICsgcwoJCW4gLz0gMTAKCX0KCXJldHVybiBzCn0KGroNChV6el96ZXJvd2lkdGhfdGVzdC5nbm8SoA1wYWNrYWdlIHBvbGxzCgppbXBvcnQgKAoJInRlc3RpbmciCikKCi8vIHp3QmxhbmsgaG9sZHMgb25lIGlucHV0IHBlciBydW5lIHJhbmdlIGNoYWluL21hcmtkb3duLlN0cmlwQmlkaUFuZFplcm9XaWR0aAovLyByZW1vdmVzIChVKzIwMEIuLlUrMjAwRiwgVSsyMDJBLi5VKzIwMkUsIFUrMjA2Ni4uVSsyMDY5LCBVK0ZFRkYpLCBwbHVzIGEgbWl4Ci8vIHdpdGggcmVhbCBzcGFjZXMuIHN0cmluZ3MuVHJpbVNwYWNlIGtlZXBzIGV2ZXJ5IG9uZSBvZiB0aGVtIGFuZCB0aGUgcmVuZGVyCi8vIHN0cmlwcyB0aGVtIGFsbCwgc28gZWFjaCBtdXN0IGJlIHJlZnVzZWQuCnZhciB6d0JsYW5rID0gW11zdHJpbmd7CgkiXHUyMDBiXHUyMDBiXHUyMDBiIiwgLy8gWldTUAoJIlx1MjAwZCIsICAgICAgICAgICAgIC8vIFpXSgoJIlx1MjAwZSIsICAgICAgICAgICAgIC8vIExSTQoJIlx1MjAyZSIsICAgICAgICAgICAgIC8vIFJMTwoJIlx1MjA2Nlx1MjA2OSIsICAgICAgIC8vIExSSSBQREkKCSJcdWZlZmYiLCAgICAgICAgICAgICAvLyBCT00KCSIgXHUyMDBiIFx1MjAwYiAiLCAgICAvLyBtaXhlZCB3aXRoIHJlYWwgc3BhY2VzCn0KCi8vIHp3T0sgbXVzdCBzdGF5IGFjY2VwdGVkOiB0aGUgc3RyaXBwZXIgcmVtb3ZlcyB0aGUgbWFya3MgYW5kIGxlYXZlcyB0ZXh0Lgp2YXIgendPSyA9IFtdc3RyaW5neyJhIiwgImFcdTIwMGJiIiwgIiAgcGFkZGVkICAifQoKZnVuYyBUZXN0WmVyb1dpZHRoUXVlc3Rpb25Jc1JlZnVzZWQoY3VyIHJlYWxtLCB0ICp0ZXN0aW5nLlQpIHsKCXJlc2V0U3RhdGUoKQoJZGVmZXIgcmVzZXRTdGF0ZSgpCgl0ZXN0aW5nLlNldFJlYWxtKHRlc3RpbmcuTmV3VXNlclJlYWxtKGFsaWNlKSkKCWZvciBfLCBzIDo9IHJhbmdlIHp3QmxhbmsgewoJCWlmIHJldml2ZShmdW5jKCkgeyBDcmVhdGVQb2xsKGNyb3NzKGN1ciksIHMsICJ4LHkiKSB9KSA9PSBuaWwgewoJCQl0LkVycm9yZigiQ3JlYXRlUG9sbCBhY2NlcHRlZCBxdWVzdGlvbiAlcSwgd2hpY2ggdGhlIHJlbmRlciBzdHJpcHMgdG8gYmxhbmsiLCBzKQoJCX0KCX0KCWZvciBfLCBzIDo9IHJhbmdlIHp3T0sgewoJCWlmIHIgOj0gcmV2aXZlKGZ1bmMoKSB7IENyZWF0ZVBvbGwoY3Jvc3MoY3VyKSwgcywgIngseSIpIH0pOyByICE9IG5pbCB7CgkJCXQuRXJyb3JmKCJDcmVhdGVQb2xsIHJlZnVzZWQgcXVlc3Rpb24gJXE6ICV2IiwgcywgcikKCQl9Cgl9CglpZiBQb2xsQ291bnQoKSAhPSBsZW4oendPSykgewoJCXQuRXJyb3JmKCJQb2xsQ291bnQgPSAlZCwgd2FudCAlZCIsIFBvbGxDb3VudCgpLCBsZW4oendPSykpCgl9Cn0KCmZ1bmMgVGVzdFplcm9XaWR0aE9wdGlvbklzRHJvcHBlZCh0ICp0ZXN0aW5nLlQpIHsKCWZvciBfLCBzIDo9IHJhbmdlIHp3QmxhbmsgewoJCWlmIGdvdCA6PSBwYXJzZU9wdGlvbnMoIngsIiArIHMpOyBsZW4oZ290KSAhPSAxIHsKCQkJdC5FcnJvcmYoInBhcnNlT3B0aW9ucyBrZXB0IG9wdGlvbiAlcSwgd2hpY2ggdGhlIHJlbmRlciBzdHJpcHMgdG8gYmxhbms6ICVxIiwgcywgZ290KQoJCX0KCX0KCWZvciBfLCBzIDo9IHJhbmdlIHp3T0sgewoJCWlmIGdvdCA6PSBwYXJzZU9wdGlvbnMoIngsIiArIHMpOyBsZW4oZ290KSAhPSAyIHsKCQkJdC5FcnJvcmYoInBhcnNlT3B0aW9ucyBkcm9wcGVkIG9wdGlvbiAlcSwgd2hpY2ggcmVuZGVycyBhcyB0ZXh0OiAlcSIsIHMsIGdvdCkKCQl9Cgl9Cn0KIgw4MDAwMDAwdWdub3QSEgiw0L88EgsxOTAzMDd1Z25vdBqoAQo6ChMvdG0uUHViS2V5U2VjcDI1NmsxEiMKIQIAUko/jSwAOonEP0X+r2647UW246Nfe75rO0n/ni2DyBJAwWKghAVQ3pvvtC7obmDVkIHR0uwJYsrO2TvxM8OZlGRWtlZkaAApezckPAgfMFYPrWo/GeB0RpU2HP6UC4WaSxooZzFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFsdXV4ZQ==

Raw transaction data

Raw JSON data