{
  "jsonrpc": "2.0",
  "id": "",
  "result": {
    "hash": "gpmT3ZWPScEwKNt5zBK5B9RSMC0CWhxik1egD/pcj7g=",
    "height": "572482",
    "index": 0,
    "tx_result": {
      "ResponseBase": {
        "Error": null,
        "Data": null,
        "Events": [
          {
            "@type": "/tm.StorageDepositEvent",
            "bytes_delta": "24182",
            "fee_delta": "2418200ugnot",
            "pkg_path": "gno.land/r/g1ut6uspuh73e02yauxpmyt8g3wwddaq8utagvm3/vault"
          }
        ],
        "Log": "msg:0,success:true,log:,events:[]",
        "Info": ""
      },
      "GasWanted": "35837895",
      "GasUsed": "23891920"
    },
    "tx": "CvViCgwvdm0ubV9hZGRwa2cS5GIKKGcxdXQ2dXNwdWg3M2UwMnlhdXhwbXl0OGczd3dkZGFxOHV0YWd2bTMSqGIKBXZhdWx0Ejlnbm8ubGFuZC9yL2cxdXQ2dXNwdWg3M2UwMnlhdXhwbXl0OGczd3dkZGFxOHV0YWd2bTMvdmF1bHQaYAoLZ25vbW9kLnRvbWwSUQptb2R1bGUgPSAiZ25vLmxhbmQvci9nMXV0NnVzcHVoNzNlMDJ5YXV4cG15dDhnM3d3ZGRhcTh1dGFndm0zL3ZhdWx0Igpnbm8gPSAiMC45IhqBYQoJdmF1bHQuZ25vEvNgLy8gUmVhbG0gdmF1bHQgaG9sZHMgR05PVCBkZXBvc2l0cyB3aXRoIHBlci11c2VyIGJhbGFuY2VzIGFuZCBhbgovLyBleHBsaWNpdCwgaW5zcGVjdGFibGUgcHJvdG9jb2wgZmVlLCBidWlsdCBvbgovLyBnbm8ubGFuZC9wL2cxdXQ2dXNwdWg3M2UwMnlhdXhwbXl0OGczd3dkZGFxOHV0YWd2bTMvZmVlbGVkZ2VyLgovLwovLyBGbG93OiBhbiBFT0EgZGVwb3NpdHMgR05PVCBieSBjYWxsaW5nIERlcG9zaXQgd2l0aCBjb2lucyBhdHRhY2hlZAovLyAoYC1zZW5kYCk7IHRoZSBjb25maWd1cmVkIGZlZSAoRmVlQnBzLCBjYXBwZWQgYXQgTWF4RmVlQnBzKSBhY2NydWVzIHRvCi8vIGEgc2VwYXJhdGUgZmVlIHBvdCBhbmQgdGhlIHJlbWFpbmRlciBjcmVkaXRzIHRoZSBkZXBvc2l0b3IncyBiYWxhbmNlLgovLyBVc2VycyBjbGFpbSB0aGVpciBiYWxhbmNlIGJhY2sgYXQgYW55IHRpbWUsIHBhcnRpYWxseSBvciBmdWxseS4gVGhlCi8vIGZlZSByZWNpcGllbnQg4oCUIGEgcm9sZSBkaXN0aW5jdCBmcm9tIHRoZSBhZG1pbiDigJQgd2l0aGRyYXdzIHRoZSBmZWUKLy8gcG90LgovLwovLyBGRUUgTU9ERUwgKGFsbCB2YWx1ZXMgaW5zcGVjdGFibGUgdmlhIEZlZUJwcy9GZWVSZWNpcGllbnQvTWF4RmVlQnBzKToKLy8gICAtIGZlZSA9IGZsb29yKGFtb3VudCAqIEZlZUJwcyAvIDEwMDAwKTsgcm91bmRpbmcgZmF2b3JzIHRoZQovLyAgICAgZGVwb3NpdG9yOyBubyBtaW5pbXVtIGZlZSAoc21hbGwgZGVwb3NpdHMgbWF5IHBheSAwKS4KLy8gICAtIEZlZUJwcyBzdGFydHMgYXQgMCAobm8gZmVlKSBhbmQgaXMgY2hhbmdlZCBvbmx5IGJ5IHRoZSBhZG1pbiB2aWEKLy8gICAgIFNldEZlZUJwcywgaGFyZC1jYXBwZWQgYXQgTWF4RmVlQnBzICgxMCUg4oCUIHRoZSBjYXAgaXRzZWxmIGlzIGEKLy8gICAgIGNvbXBpbGUtdGltZSBjb25zdGFudCBhbmQgY2Fubm90IGJlIHJhaXNlZCBieSBhbnlvbmUpLgovLyAgIC0gQSBmZWUgY2hhbmdlIGFwcGxpZXMgdG8gRlVUVVJFIGRlcG9zaXRzIG9ubHk7IGFscmVhZHktYWNjcnVlZCBmZWVzCi8vICAgICBhbmQgdXNlciBiYWxhbmNlcyBhcmUgdW50b3VjaGVkLgovLyAgIC0gRmVlcyBhY2NydWUgdG8gYSBwb3QsIG5vdCBhbiBhZGRyZXNzLiBDaGFuZ2luZyB0aGUgZmVlIHJlY2lwaWVudAovLyAgICAgcmUtcG9pbnRzIHdobyBtYXkgd2l0aGRyYXcgdGhlIHBvdCwgSU5DTFVESU5HIHdoYXQgd2FzIGFjY3J1ZWQKLy8gICAgIHVuZGVyIHRoZSBwcmV2aW91cyByZWNpcGllbnQgKHBvc2l0aW9uYWwsIGRvY3VtZW50ZWQgdHJhZGUtb2ZmKS4KLy8gICAtIFdpdGggRmVlQnBzID09IDAgZGVwb3NpdHMgY3JlZGl0IGluIGZ1bGwgYW5kIHRoZSBwb3QgZ3Jvd3MgYnkgMC4KLy8gICAtIFRoZSBmZWUgY2FuIG5ldmVyIGV4Y2VlZCB0aGUgZGVwb3NpdDogRmVlQnBzIDw9IDEwMDAwIHN0cnVjdHVyYWxseQovLyAgICAgYW5kIDw9IDEwMDAgYnkgdGhpcyByZWFsbSdzIGNhcC4KLy8KLy8gQUNDT1VOVElORyBJTlZBUklBTlQgKGNvbnNlcnZhdGlvbik6IGxldCBIIGJlIHRoZSB1Z25vdCBoZWxkIGF0IHRoaXMKLy8gcmVhbG0ncyBhZGRyZXNzLCBVIHRoZSBzdW0gb2YgdXNlciBiYWxhbmNlcywgRiB0aGUgYWNjcnVlZCBmZWUgcG90LgovLyBBdCBldmVyeSB0cmFuc2FjdGlvbiBib3VuZGFyeToKLy8KLy8JSCA9PSBVICsgRiArIFMsICBTID49IDAKLy8KLy8gd2hlcmUgUyAoc3VycGx1cykgaXMgdWdub3QgcHVzaGVkIHRvIHRoZSByZWFsbSBhZGRyZXNzIG91dHNpZGUKLy8gRGVwb3NpdCAoZS5nLiBhIGRpcmVjdCBiYW5rIHNlbmQpLiBTIHN0YXlzIDAgaWYgYWxsIGNvaW5zIGFycml2ZSB2aWEKLy8gRGVwb3NpdC4gRGVyaXZhdGlvbiBmcm9tIGNoYWluIHNlbWFudGljczogKDEpIGEgTXNnQ2FsbCBgLXNlbmRgCi8vIGVudmVsb3BlIGlzIHRyYW5zZmVycmVkIHRvIHRoZSByZWFsbSBhZGRyZXNzIEJFRk9SRSB0aGUgY2FsbCBib2R5Ci8vIHJ1bnMsIGFuZCBEZXBvc2l0J3MgSXNVc2VyQ2FsbCBndWFyZCBpcyBleGFjdGx5IHRoZSBjYXNlIHdoZXJlIHRoYXQKLy8gcmVjZWlwdCBpcyBndWFyYW50ZWVkLCBzbyBEZXBvc2l0IHJhaXNlcyBVK0YgYnkgdGhlIGFtb3VudCBhbHJlYWR5Ci8vIGFkZGVkIHRvIEg7ICgyKSBDbGFpbS9XaXRoZHJhd0ZlZXMgZGViaXQgdGhlIGxlZGdlciBmaXJzdCwgdGhlbiBtb3ZlCi8vIHRoZSBpZGVudGljYWwgYW1vdW50IG91dCB2aWEgYSBSZWFsbVNlbmQgYmFua2VyLCBsb3dlcmluZyBIIGFuZCBVK0YKLy8gZXF1YWxseTsgKDMpIGFueSBwYW5pYyBhYm9ydHMgdGhlIHdob2xlIHRyYW5zYWN0aW9uLCByZXZlcnRpbmcgbGVkZ2VyCi8vIGFuZCBjb2luIG1vdmVtZW50cyB0b2dldGhlciAoYXRvbWljaXR5KTsgKDQpIHRoaXMgcmVhbG0gbmV2ZXIgdXNlcwovLyBJc3N1ZUNvaW4vUmVtb3ZlQ29pbi4gU3VycGx1cyBpcyBpbnRlbnRpb25hbGx5IHVucmVhY2hhYmxlOiBpdCBjYW4KLy8gb25seSBiZSBzd2VwdCBieSB0aGUgZmVlIHJlY2lwaWVudCB2aWEgU3dlZXBTdXJwbHVzLCBuZXZlciBjb3VudGVkIGFzCi8vIGEgdXNlciBiYWxhbmNlLgovLwovLyBPTkxZIEdOT1Q6IERlcG9zaXQgcmVqZWN0cyBhbnkgdHJhbnNhY3Rpb24gd2hvc2Ugc2VuZCBlbnZlbG9wZSBpcyBub3QKLy8gZXhhY3RseSBvbmUgdWdub3QgY29pbi4gT3RoZXIgYXNzZXRzIGZvcmNlLXNlbnQgdG8gdGhlIHJlYWxtIGFkZHJlc3MKLy8gYXJlIG5vdCBhY2NlcHRlZCwgbm90IHRyYWNrZWQsIGFuZCBzaXQgaW4gc3VycGx1cy4KcGFja2FnZSB2YXVsdAoKaW1wb3J0ICgKCSJjaGFpbiIKCSJjaGFpbi9iYW5rZXIiCgkiY2hhaW4vcnVudGltZS91bnNhZmUiCgkic3RyY29udiIKCgkiZ25vLmxhbmQvcC9nMXV0NnVzcHVoNzNlMDJ5YXV4cG15dDhnM3d3ZGRhcTh1dGFndm0zL2ZlZWxlZGdlciIKKQoKLy8gRGVub20gaXMgdGhlIG9ubHkgYXNzZXQgdGhpcyB2YXVsdCBhY2NlcHRzLgpjb25zdCBEZW5vbSA9ICJ1Z25vdCIKCi8vIE1heEZlZUJwcyBpcyB0aGUgaGFyZCBwcm90b2NvbC1mZWUgY2FwOiAxMDAwIGJwcyA9IDEwJS4gTm9ib2R5IGNhbgovLyBjb25maWd1cmUgYSBoaWdoZXIgZmVlOyBjaGFuZ2luZyB0aGlzIHJlcXVpcmVzIGRlcGxveWluZyBhIG5ldyByZWFsbS4KY29uc3QgTWF4RmVlQnBzID0gaW50NjQoMTAwMCkKCnZhciAoCglhZG1pbiAgICAgICAgYWRkcmVzcyAvLyBtYXkgc2V0IGZlZSwgZmVlIHJlY2lwaWVudCwgYW5kIHN1Y2Nlc3NvciBhZG1pbgoJZmVlUmVjaXBpZW50IGFkZHJlc3MgLy8gbWF5IHdpdGhkcmF3IHRoZSBmZWUgcG90IGFuZCBzd2VlcCBzdXJwbHVzCglmZWVCcHMgICAgICAgaW50NjQgICAvLyBjdXJyZW50IHByb3RvY29sIGZlZSBpbiBiYXNpcyBwb2ludHMKCglzZWxmICAgYWRkcmVzcyAvLyB0aGlzIHJlYWxtJ3Mgb3duIGFkZHJlc3MsIGNhcHR1cmVkIGF0IGRlcGxveQoJbGVkZ2VyID0gZmVlbGVkZ2VyLk11c3ROZXcoTWF4RmVlQnBzKQopCgpmdW5jIGluaXQoKSB7CglhZG1pbiA9IHVuc2FmZS5PcmlnaW5DYWxsZXIoKSAvLyB0aGUgZGVwbG95ZXIKCWZlZVJlY2lwaWVudCA9IGFkbWluCglzZWxmID0gdW5zYWZlLkN1cnJlbnRSZWFsbSgpLkFkZHJlc3MoKQp9CgovLyBEZXBvc2l0IGNyZWRpdHMgdGhlIGNhbGxlciB3aXRoIHRoZSBhdHRhY2hlZCBHTk9UIG1pbnVzIHRoZSBjdXJyZW50Ci8vIHByb3RvY29sIGZlZS4gT25seSBkaXJlY3QgRU9BIGNhbGxzIChtYWtldHggY2FsbCB3aXRoIC1zZW5kKSBhcmUKLy8gYWNjZXB0ZWQ6IHRoYXQgaXMgdGhlIG9ubHkgc2hhcGUgd2hlcmUgdGhlIGNoYWluIGd1YXJhbnRlZXMgdGhlIHNlbmQKLy8gZW52ZWxvcGUgbGFuZGVkIGF0IHRoaXMgcmVhbG0ncyBhZGRyZXNzIGJlZm9yZSB0aGUgYm9keSBydW5zLiBUaGUKLy8gZW52ZWxvcGUgbXVzdCBiZSBleGFjdGx5IG9uZSBjb2luIG9mIGRlbm9tIHVnbm90IHdpdGggcG9zaXRpdmUKLy8gYW1vdW50LgpmdW5jIERlcG9zaXQoY3VyIHJlYWxtKSB7CglpZiAhY3VyLlByZXZpb3VzKCkuSXNVc2VyQ2FsbCgpIHsKCQlwYW5pYygiZGVwb3NpdCBtdXN0IGJlIGEgZGlyZWN0IEVPQSBjYWxsIHdpdGggLXNlbmQgKHJlYWxtcyBhbmQgbWFrZXR4LXJ1biBhcmUgcmVqZWN0ZWQpIikKCX0KCXNlbnQgOj0gdW5zYWZlLk9yaWdpblNlbmQoKQoJaWYgbGVuKHNlbnQpICE9IDEgfHwgc2VudFswXS5EZW5vbSAhPSBEZW5vbSB7CgkJcGFuaWMoInNlbmQgZXhhY3RseSBvbmUgY29pbiB0eXBlOiAiICsgRGVub20pCgl9CglhbW91bnQgOj0gc2VudFswXS5BbW91bnQKCWlmIGFtb3VudCA8PSAwIHsKCQlwYW5pYygiZGVwb3NpdCBhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZSIpCgl9CgoJZGVwb3NpdG9yIDo9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoJY3JlZGl0ZWQsIGZlZSwgZXJyIDo9IGxlZGdlci5EZXBvc2l0KGRlcG9zaXRvci5TdHJpbmcoKSwgYW1vdW50LCBmZWVCcHMpCglpZiBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9CgljaGFpbi5FbWl0KCJEZXBvc2l0IiwKCQkiZnJvbSIsIGRlcG9zaXRvci5TdHJpbmcoKSwKCQkiYW1vdW50IiwgaXRvYShhbW91bnQpLAoJCSJjcmVkaXRlZCIsIGl0b2EoY3JlZGl0ZWQpLAoJCSJmZWUiLCBpdG9hKGZlZSksCgkpCn0KCi8vIENsYWltIHNlbmRzIGFtb3VudCB1Z25vdCBvZiB0aGUgY2FsbGVyJ3MgYmFsYW5jZSBiYWNrIHRvIHRoZSBjYWxsZXIuCi8vIEZhaWxzIGlmIGFtb3VudCBpcyBub3QgcG9zaXRpdmUgb3IgZXhjZWVkcyB0aGUgY2FsbGVyJ3MgYmFsYW5jZS4KZnVuYyBDbGFpbShjdXIgcmVhbG0sIGFtb3VudCBpbnQ2NCkgewoJY2FsbGVyIDo9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoJaWYgZXJyIDo9IGxlZGdlci5XaXRoZHJhdyhjYWxsZXIuU3RyaW5nKCksIGFtb3VudCk7IGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCXNlbmQoY3VyLCBjYWxsZXIsIGFtb3VudCkKCWNoYWluLkVtaXQoIkNsYWltIiwgInRvIiwgY2FsbGVyLlN0cmluZygpLCAiYW1vdW50IiwgaXRvYShhbW91bnQpKQp9CgovLyBDbGFpbUFsbCBzZW5kcyB0aGUgY2FsbGVyJ3MgZW50aXJlIGJhbGFuY2UgYmFjayB0byB0aGUgY2FsbGVyLiBGYWlscwovLyBpZiB0aGUgY2FsbGVyIGhhcyBubyBiYWxhbmNlLgpmdW5jIENsYWltQWxsKGN1ciByZWFsbSkgewoJY2FsbGVyIDo9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoJYW1vdW50LCBlcnIgOj0gbGVkZ2VyLldpdGhkcmF3QWxsKGNhbGxlci5TdHJpbmcoKSkKCWlmIGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCWlmIGFtb3VudCA9PSAwIHsKCQlwYW5pYygibm90aGluZyB0byBjbGFpbSIpCgl9CglzZW5kKGN1ciwgY2FsbGVyLCBhbW91bnQpCgljaGFpbi5FbWl0KCJDbGFpbSIsICJ0byIsIGNhbGxlci5TdHJpbmcoKSwgImFtb3VudCIsIGl0b2EoYW1vdW50KSkKfQoKLy8gV2l0aGRyYXdGZWVzIHNlbmRzIHRoZSBlbnRpcmUgYWNjcnVlZCBmZWUgcG90IHRvIHRoZSBmZWUgcmVjaXBpZW50LgovLyBPbmx5IHRoZSBmZWUgcmVjaXBpZW50IG1heSBjYWxsIGl0LiBGYWlscyBpZiB0aGUgcG90IGlzIGVtcHR5LgpmdW5jIFdpdGhkcmF3RmVlcyhjdXIgcmVhbG0pIHsKCWNhbGxlciA6PSBjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkKCWlmIGNhbGxlciAhPSBmZWVSZWNpcGllbnQgewoJCXBhbmljKCJvbmx5IHRoZSBmZWUgcmVjaXBpZW50IG1heSB3aXRoZHJhdyBmZWVzIikKCX0KCWFtb3VudCA6PSBsZWRnZXIuV2l0aGRyYXdGZWVzKCkKCWlmIGFtb3VudCA9PSAwIHsKCQlwYW5pYygibm8gZmVlcyBhY2NydWVkIikKCX0KCXNlbmQoY3VyLCBmZWVSZWNpcGllbnQsIGFtb3VudCkKCWNoYWluLkVtaXQoIkZlZXNXaXRoZHJhd24iLCAidG8iLCBmZWVSZWNpcGllbnQuU3RyaW5nKCksICJhbW91bnQiLCBpdG9hKGFtb3VudCkpCn0KCi8vIFN3ZWVwU3VycGx1cyBzZW5kcyBjb2lucyB0aGF0IHNpdCBhdCB0aGUgcmVhbG0gYWRkcmVzcyBBQk9WRSB0aGUKLy8gbGVkZ2VyJ3MgbGlhYmlsaXRpZXMgKHVnbm90IGZvcmNlLXNlbnQgb3V0c2lkZSBEZXBvc2l0LCBvciBhbnkgb3RoZXIKLy8gZGVub21pbmF0aW9uKSB0byB0aGUgZmVlIHJlY2lwaWVudC4gT25seSB0aGUgZmVlIHJlY2lwaWVudCBtYXkgY2FsbAovLyBpdC4gVXNlciBiYWxhbmNlcyBhbmQgdGhlIGZlZSBwb3QgYXJlIHVudG91Y2hhYmxlIGJ5IGNvbnN0cnVjdGlvbjoKLy8gb25seSB0aGUgZXhjZXNzIG92ZXIgTGlhYmlsaXRpZXMoKSBtb3Zlcy4gRmFpbHMgaWYgdGhlcmUgaXMgbm8KLy8gc3VycGx1cy4KZnVuYyBTd2VlcFN1cnBsdXMoY3VyIHJlYWxtKSB7CgljYWxsZXIgOj0gY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpCglpZiBjYWxsZXIgIT0gZmVlUmVjaXBpZW50IHsKCQlwYW5pYygib25seSB0aGUgZmVlIHJlY2lwaWVudCBtYXkgc3dlZXAgc3VycGx1cyIpCgl9CgliayA6PSBiYW5rZXIuTmV3QmFua2VyKGJhbmtlci5CYW5rZXJUeXBlUmVhbG1TZW5kLCBjdXIpCgloZWxkIDo9IGJrLkdldENvaW5zKHNlbGYpCgl2YXIgb3V0IGNoYWluLkNvaW5zCglmb3IgXywgYyA6PSByYW5nZSBoZWxkIHsKCQlpZiBjLkRlbm9tID09IERlbm9tIHsKCQkJc3VycGx1cyA6PSBjLkFtb3VudCAtIGxlZGdlci5MaWFiaWxpdGllcygpCgkJCWlmIHN1cnBsdXMgPiAwIHsKCQkJCW91dCA9IGFwcGVuZChvdXQsIGNoYWluLk5ld0NvaW4oRGVub20sIHN1cnBsdXMpKQoJCQl9CgkJCWNvbnRpbnVlCgkJfQoJCWlmIGMuQW1vdW50ID4gMCB7CgkJCW91dCA9IGFwcGVuZChvdXQsIGMpCgkJfQoJfQoJaWYgbGVuKG91dCkgPT0gMCB7CgkJcGFuaWMoIm5vIHN1cnBsdXMgdG8gc3dlZXAiKQoJfQoJYmsuU2VuZENvaW5zKHNlbGYsIGZlZVJlY2lwaWVudCwgb3V0KQoJY2hhaW4uRW1pdCgiU3VycGx1c1N3ZXB0IiwgInRvIiwgZmVlUmVjaXBpZW50LlN0cmluZygpLCAiY29pbnMiLCBvdXQuU3RyaW5nKCkpCn0KCi8vIFN3ZWVwRGVub20gc2VuZHMgdGhlIHN1cnBsdXMgb2YgYSBzaW5nbGUgZGVub21pbmF0aW9uIHRvIHRoZSBmZWUKLy8gcmVjaXBpZW50LiBUaGlzIGlzIHRoZSBib3VuZGVkIGVzY2FwZSBoYXRjaCBmb3Igd2hlbiBTd2VlcFN1cnBsdXMKLy8gd291bGQgZXhjZWVkIGdhcyBiZWNhdXNlIGEgdGhpcmQgcGFydHkgZm9yY2Utc2VudCBtYW55IGp1bmsKLy8gZGVub21pbmF0aW9ucyB0byB0aGUgcmVhbG0gYWRkcmVzczogZWFjaCBjYWxsIHRvdWNoZXMgZXhhY3RseSBvbmUKLy8gZGVub21pbmF0aW9uLCBzbyB1Z25vdCBzdXJwbHVzIGNhbiBhbHdheXMgYmUgcmVjb3ZlcmVkIHJlZ2FyZGxlc3Mgb2YKLy8gaG93IG1hbnkgZm9yZWlnbiBkZW5vbXMgYWNjdW11bGF0ZS4gRm9yIHVnbm90IG9ubHkgdGhlIGV4Y2VzcyBvdmVyCi8vIExpYWJpbGl0aWVzKCkgbW92ZXM7IGFueSBvdGhlciBkZW5vbSBtb3ZlcyB3aG9sbHkuIE9ubHkgdGhlIGZlZQovLyByZWNpcGllbnQgbWF5IGNhbGwgaXQuCmZ1bmMgU3dlZXBEZW5vbShjdXIgcmVhbG0sIGRlbm9tIHN0cmluZykgewoJY2FsbGVyIDo9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoJaWYgY2FsbGVyICE9IGZlZVJlY2lwaWVudCB7CgkJcGFuaWMoIm9ubHkgdGhlIGZlZSByZWNpcGllbnQgbWF5IHN3ZWVwIHN1cnBsdXMiKQoJfQoJaWYgZGVub20gPT0gIiIgewoJCXBhbmljKCJlbXB0eSBkZW5vbSIpCgl9CgliayA6PSBiYW5rZXIuTmV3QmFua2VyKGJhbmtlci5CYW5rZXJUeXBlUmVhbG1TZW5kLCBjdXIpCglhbW91bnQgOj0gYmsuR2V0Q29pbihzZWxmLCBkZW5vbSkKCWlmIGRlbm9tID09IERlbm9tIHsKCQlhbW91bnQgLT0gbGVkZ2VyLkxpYWJpbGl0aWVzKCkKCX0KCWlmIGFtb3VudCA8PSAwIHsKCQlwYW5pYygibm8gc3VycGx1cyB0byBzd2VlcCBmb3IgIiArIGRlbm9tKQoJfQoJYmsuU2VuZENvaW5zKHNlbGYsIGZlZVJlY2lwaWVudCwgY2hhaW4uQ29pbnN7Y2hhaW4uTmV3Q29pbihkZW5vbSwgYW1vdW50KX0pCgljaGFpbi5FbWl0KCJTdXJwbHVzU3dlcHQiLCAidG8iLCBmZWVSZWNpcGllbnQuU3RyaW5nKCksICJjb2lucyIsIGl0b2EoYW1vdW50KStkZW5vbSkKfQoKLy8gU2V0RmVlQnBzIHNldHMgdGhlIHByb3RvY29sIGZlZSBmb3IgRlVUVVJFIGRlcG9zaXRzLiBBZG1pbiBvbmx5OwovLyBib3VuZGVkIGJ5IFswLCBNYXhGZWVCcHNdLgpmdW5jIFNldEZlZUJwcyhjdXIgcmVhbG0sIGJwcyBpbnQ2NCkgewoJYXNzZXJ0QWRtaW4oY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpKQoJaWYgYnBzIDwgMCB8fCBicHMgPiBNYXhGZWVCcHMgewoJCXBhbmljKCJmZWUgYnBzIG91dCBvZiByYW5nZSBbMCwgIiArIGl0b2EoTWF4RmVlQnBzKSArICJdIikKCX0KCW9sZCA6PSBmZWVCcHMKCWZlZUJwcyA9IGJwcwoJY2hhaW4uRW1pdCgiRmVlQnBzQ2hhbmdlZCIsICJvbGQiLCBpdG9hKG9sZCksICJuZXciLCBpdG9hKGJwcykpCn0KCi8vIFNldEZlZVJlY2lwaWVudCByZS1wb2ludHMgd2hvIG1heSB3aXRoZHJhdyB0aGUgZmVlIHBvdCAoaW5jbHVkaW5nCi8vIGZlZXMgYWNjcnVlZCBiZWZvcmUgdGhlIGNoYW5nZSkgYW5kIHN3ZWVwIHN1cnBsdXMuIEFkbWluIG9ubHk7IHRoZQovLyB6ZXJvIGFkZHJlc3MgaXMgcmVqZWN0ZWQuCmZ1bmMgU2V0RmVlUmVjaXBpZW50KGN1ciByZWFsbSwgbmV4dCBhZGRyZXNzKSB7Cglhc3NlcnRBZG1pbihjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkpCgl2YXIgemVybyBhZGRyZXNzCglpZiBuZXh0ID09IHplcm8gewoJCXBhbmljKCJlbXB0eSBmZWUgcmVjaXBpZW50IikKCX0KCW9sZCA6PSBmZWVSZWNpcGllbnQKCWZlZVJlY2lwaWVudCA9IG5leHQKCWNoYWluLkVtaXQoIkZlZVJlY2lwaWVudENoYW5nZWQiLCAib2xkIiwgb2xkLlN0cmluZygpLCAibmV3IiwgbmV4dC5TdHJpbmcoKSkKfQoKLy8gVHJhbnNmZXJBZG1pbiBoYW5kcyB0aGUgYWRtaW4gcm9sZSB0byBuZXh0LiBBZG1pbiBvbmx5OyB0aGUgemVybwovLyBhZGRyZXNzIGlzIHJlamVjdGVkLiBPbmUtc3RlcDogYSB0cmFuc2ZlciB0byBhIHdyb25nLWJ1dC12YWxpZAovLyBhZGRyZXNzIHBlcm1hbmVudGx5IGxvc2VzIGZlZSBhZG1pbmlzdHJhdGlvbiAoZGVwb3NpdHMgYW5kIGNsYWltcwovLyBrZWVwIHdvcmtpbmcpLgpmdW5jIFRyYW5zZmVyQWRtaW4oY3VyIHJlYWxtLCBuZXh0IGFkZHJlc3MpIHsKCWFzc2VydEFkbWluKGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKSkKCXZhciB6ZXJvIGFkZHJlc3MKCWlmIG5leHQgPT0gemVybyB7CgkJcGFuaWMoImVtcHR5IGFkbWluIGFkZHJlc3MiKQoJfQoJYWRtaW4gPSBuZXh0CgljaGFpbi5FbWl0KCJBZG1pblRyYW5zZmVycmVkIiwgIm5ld0FkbWluIiwgbmV4dC5TdHJpbmcoKSkKfQoKLy8gLS0tIHJlYWQtb25seSB2aWV3cyAtLS0KCi8vIEFkbWluIHJldHVybnMgdGhlIGN1cnJlbnQgYWRtaW4uCmZ1bmMgQWRtaW4oKSBhZGRyZXNzIHsgcmV0dXJuIGFkbWluIH0KCi8vIEZlZVJlY2lwaWVudCByZXR1cm5zIHdobyBtYXkgd2l0aGRyYXcgdGhlIGZlZSBwb3QuCmZ1bmMgRmVlUmVjaXBpZW50KCkgYWRkcmVzcyB7IHJldHVybiBmZWVSZWNpcGllbnQgfQoKLy8gRmVlQnBzIHJldHVybnMgdGhlIHByb3RvY29sIGZlZSBhcHBsaWVkIHRvIGZ1dHVyZSBkZXBvc2l0cywgaW4gYmFzaXMKLy8gcG9pbnRzIG9mIHRoZSBkZXBvc2l0IGFtb3VudC4KZnVuYyBGZWVCcHMoKSBpbnQ2NCB7IHJldHVybiBmZWVCcHMgfQoKLy8gRmVlT24gcHJldmlld3MgdGhlIGZlZSBhbmQgY3JlZGl0ZWQgYW1vdW50IGZvciBhIGRlcG9zaXQgb2YgYW1vdW50IGF0Ci8vIHRoZSBDVVJSRU5UIEZlZUJwcy4KZnVuYyBGZWVPbihhbW91bnQgaW50NjQpIChmZWUsIGNyZWRpdGVkIGludDY0KSB7CglmLCBlcnIgOj0gZmVlbGVkZ2VyLkZlZUZvcihhbW91bnQsIGZlZUJwcykKCWlmIGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCXJldHVybiBmLCBhbW91bnQgLSBmCn0KCi8vIEJhbGFuY2VPZiByZXR1cm5zIGFkZHIncyBjbGFpbWFibGUgYmFsYW5jZS4KZnVuYyBCYWxhbmNlT2YoYWRkciBhZGRyZXNzKSBpbnQ2NCB7IHJldHVybiBsZWRnZXIuQmFsYW5jZU9mKGFkZHIuU3RyaW5nKCkpIH0KCi8vIFVzZXJzVG90YWwgcmV0dXJucyB0aGUgc3VtIG9mIGFsbCB1c2VyIGJhbGFuY2VzLgpmdW5jIFVzZXJzVG90YWwoKSBpbnQ2NCB7IHJldHVybiBsZWRnZXIuVXNlcnNUb3RhbCgpIH0KCi8vIEZlZXNBY2NydWVkIHJldHVybnMgdGhlIGZlZSBwb3QgYXdhaXRpbmcgd2l0aGRyYXdhbC4KZnVuYyBGZWVzQWNjcnVlZCgpIGludDY0IHsgcmV0dXJuIGxlZGdlci5GZWVzQWNjcnVlZCgpIH0KCi8vIExpYWJpbGl0aWVzIHJldHVybnMgVXNlcnNUb3RhbCgpICsgRmVlc0FjY3J1ZWQoKS4KZnVuYyBMaWFiaWxpdGllcygpIGludDY0IHsgcmV0dXJuIGxlZGdlci5MaWFiaWxpdGllcygpIH0KCi8vIEhlbGQgcmV0dXJucyB0aGUgdWdub3QgYWN0dWFsbHkgaGVsZCBhdCB0aGUgcmVhbG0gYWRkcmVzcy4KZnVuYyBIZWxkKCkgaW50NjQgewoJcmV0dXJuIGJhbmtlci5OZXdSZWFkb25seUJhbmtlcigpLkdldENvaW4oc2VsZiwgRGVub20pCn0KCi8vIFN1cnBsdXMgcmV0dXJucyBIZWxkKCkgLSBMaWFiaWxpdGllcygpOiB1Z25vdCBhdCB0aGUgcmVhbG0gYWRkcmVzcwovLyB0aGF0IHRoZSBsZWRnZXIgZG9lcyBub3Qgb3dlIHRvIGFueW9uZS4gTmVnYXRpdmUgd291bGQgaW5kaWNhdGUgYQovLyBjb25zZXJ2YXRpb24gYnVnIChzZWUgdGhlIGludmFyaWFudCBpbiB0aGUgcGFja2FnZSBkb2MpLgpmdW5jIFN1cnBsdXMoKSBpbnQ2NCB7IHJldHVybiBIZWxkKCkgLSBsZWRnZXIuTGlhYmlsaXRpZXMoKSB9CgovLyBBZGRyZXNzIHJldHVybnMgdGhpcyByZWFsbSdzIG93biBhZGRyZXNzICh0aGUgZGVwb3NpdCB0YXJnZXQpLgpmdW5jIEFkZHJlc3MoKSBhZGRyZXNzIHsgcmV0dXJuIHNlbGYgfQoKLy8gUmVuZGVyIHNob3dzIGNvbmZpZ3VyYXRpb24sIHRvdGFscywgYW5kIHRoZSBsaXZlIGNvbnNlcnZhdGlvbiBjaGVjay4KZnVuYyBSZW5kZXIoXyBzdHJpbmcpIHN0cmluZyB7CgloZWxkIDo9IEhlbGQoKQoJbGlhYiA6PSBsZWRnZXIuTGlhYmlsaXRpZXMoKQoJc3RhdHVzIDo9ICJPSyIKCWlmIGhlbGQgPCBsaWFiIHsKCQlzdGF0dXMgPSAiVklPTEFURUQiCgl9CglvdXQgOj0gIiMgVmF1bHRcblxuIgoJb3V0ICs9ICJHTk9UIGRlcG9zaXRzIHdpdGggcGVyLXVzZXIgYmFsYW5jZXMgYW5kIGFuIGV4cGxpY2l0IHByb3RvY29sIGZlZS5cblxuIgoJb3V0ICs9ICIjIyBGZWUgY29uZmlndXJhdGlvblxuXG4iCglvdXQgKz0gIi0gZmVlOiAiICsgaXRvYShmZWVCcHMpICsgIiBicHMgKGNhcCAiICsgaXRvYShNYXhGZWVCcHMpICsgIiBicHMpXG4iCglvdXQgKz0gIi0gZmVlIHJlY2lwaWVudDogIiArIGZlZVJlY2lwaWVudC5TdHJpbmcoKSArICJcbiIKCW91dCArPSAiLSBhZG1pbjogIiArIGFkbWluLlN0cmluZygpICsgIlxuXG4iCglvdXQgKz0gIiMjIEFjY291bnRpbmdcblxuIgoJb3V0ICs9ICItIHVzZXJzIHRvdGFsOiAiICsgaXRvYShsZWRnZXIuVXNlcnNUb3RhbCgpKSArIERlbm9tICsgIlxuIgoJb3V0ICs9ICItIGZlZXMgYWNjcnVlZDogIiArIGl0b2EobGVkZ2VyLkZlZXNBY2NydWVkKCkpICsgRGVub20gKyAiXG4iCglvdXQgKz0gIi0gaGVsZDogIiArIGl0b2EoaGVsZCkgKyBEZW5vbSArICJcbiIKCW91dCArPSAiLSBhY2NvdW50czogIiArIHN0cmNvbnYuSXRvYShsZWRnZXIuQWNjb3VudHMoKSkgKyAiXG4iCglvdXQgKz0gIi0gY29uc2VydmF0aW9uIChoZWxkID49IHVzZXJzK2ZlZXMpOiAiICsgc3RhdHVzICsgIlxuIgoJcmV0dXJuIG91dAp9CgovLyAtLS0gaW50ZXJuYWxzIC0tLQoKLy8gYXNzZXJ0QWRtaW4gZ2F0ZXMgYWRtaW4tb25seSBlbnRyeXBvaW50czsgY2FsbGVycyByZXNvbHZlIGlkZW50aXR5IGF0Ci8vIHRoZSBjcm9zc2luZyBib3VuZGFyeSBhbmQgcGFzcyB0aGUgYWRkcmVzcyBkb3duLgpmdW5jIGFzc2VydEFkbWluKGNhbGxlciBhZGRyZXNzKSB7CglpZiBjYWxsZXIgIT0gYWRtaW4gewoJCXBhbmljKCJhZG1pbiBvbmx5IikKCX0KfQoKLy8gc2VuZCBtb3ZlcyBhbW91bnQgdWdub3QgZnJvbSB0aGUgcmVhbG0gdG8gYHRvYC4gQ2FsbGVycyBtdXN0IGhhdmUKLy8gZGViaXRlZCB0aGUgbGVkZ2VyIGZpcnN0IChjaGVja3MtZWZmZWN0cy1pbnRlcmFjdGlvbnMpOyBhIHBhbmljIGhlcmUKLy8gYWJvcnRzIHRoZSB0cmFuc2FjdGlvbiwgcmV2ZXJ0aW5nIHRoZSBkZWJpdCB3aXRoIGl0LgpmdW5jIHNlbmQoY3VyIHJlYWxtLCB0byBhZGRyZXNzLCBhbW91bnQgaW50NjQpIHsKCWJrIDo9IGJhbmtlci5OZXdCYW5rZXIoYmFua2VyLkJhbmtlclR5cGVSZWFsbVNlbmQsIGN1cikKCWJrLlNlbmRDb2lucyhzZWxmLCB0bywgY2hhaW4uQ29pbnN7Y2hhaW4uTmV3Q29pbihEZW5vbSwgYW1vdW50KX0pCn0KCmZ1bmMgaXRvYShuIGludDY0KSBzdHJpbmcgewoJcmV0dXJuIHN0cmNvbnYuRm9ybWF0SW50KG4sIDEwKQp9CiINMTAwMDAwMDB1Z25vdBIRCI7fliISCjcxNjc2dWdub3QaqAEKOgoTL3RtLlB1YktleVNlY3AyNTZrMRIjCiECFvQxdskleM40Lpnib60p9/58Ru1wQ1b/q5MVf2K7DpgSQAtXXu8606zMw0ZgEn6Lxxj+NJdJrzfZGz7+SGEHJRlDIm3/6B5FAuQNQrmql0vG0VvQZhtIZ4vrHyeAsB0SfHcaKGcxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxbHV1eGU="
  }
}