Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
268BB35ADBA69BEBE2520A0BE528DD643B9342B1647261DE415201FC39A00A1E
Transaction overview
Execution summary
TX INDEX
0
Position in block
GAS WANTED
23,791,347
Requested gas limit
GAS USED
19,826,073
Gas consumed
FEE
1000000ugnot
Transaction fee
Participants
Message
Message #1
m_addpkg
Arguments
g1manfred47kzduec920z88wfr64ylksmdcedlf5
Execution log
msg:0,success:true,log:,events:[]
Events
No events emitted by this transaction.
Raw encoded transaction
CpJcCgwvdm0ubV9hZGRwa2cSgVwKKGcxbWFuZnJlZDQ3a3pkdWVjOTIwejg4d2ZyNjR5bGtzbWRjZWRsZjUS1FsKBXVsaXN0Ehhnbm8ubGFuZC9wL21vdWwvdWxpc3QvdjAavAQKCVJFQURNRS5tZBKuBCMgYGduby5sYW5kL3AvbW91bC91bGlzdC92MGAKCkFwcGVuZC1vbmx5IGxpc3QgYmFja2VkIGJ5IGEgYmluYXJ5IHRyZWUuCgo8IS0tIEJFR0lOIEdOT0NPTlRSQUNUUyBGT09URVIgKGdlbmVyYXRlZCBieSBgbWFrZSByZWFkbWVzYDsgZG8gbm90IGVkaXQgYmVsb3cpIC0tPgoKLS0tCgpQYXJ0IG9mICoqW21vdWwvZ25vLWNvbnRyYWN0c10oaHR0cHM6Ly9naXRodWIuY29tL21vdWwvZ25vLWNvbnRyYWN0cykqKiDigJQgbW91bCdzIHZlcnNpb25lZCBnbm8ubGFuZCBjb250cmFjdHMuIFNlZSB0aGUgcmVwb3NpdG9yeSBmb3IgdGhlIGZ1bGwgY2F0YWxvZywgYnVpbGQvdGVzdCB0b29saW5nLCBhbmQgdXNhZ2UuCgo+IOKaoO+4jyAqKkRpc2NsYWltZXI6KiogcHJvdmlkZWQgYXMtaXMsIHdpdGhvdXQgd2FycmFudHk7IG5vdCBzZWN1cml0eS1hdWRpdGVkLiBGdWxsIGRpc2NsYWltZXI6IFtESVNDTEFJTUVSXShodHRwczovL2dpdGh1Yi5jb20vbW91bC9nbm8tY29udHJhY3RzL2Jsb2IvbWFpbi9ESVNDTEFJTUVSLm1kKS4KCjwhLS0gRU5EIEdOT0NPTlRSQUNUUyBGT09URVIgLS0+ChqAAQoLZ25vbW9kLnRvbWwScW1vZHVsZSA9ICJnbm8ubGFuZC9wL21vdWwvdWxpc3QvdjAiCmdubyA9ICIwLjkiCgpbYWRkcGtnXQogIGNyZWF0b3IgPSAiZzFtYW5mcmVkNDdremR1ZWM5MjB6ODh3ZnI2NHlsa3NtZGNlZGxmNSIKGslVCgl1bGlzdC5nbm8Su1UvLyBQYWNrYWdlIHVsaXN0IHByb3ZpZGVzIGFuIGFwcGVuZC1vbmx5IGxpc3QgaW1wbGVtZW50YXRpb24gdXNpbmcgYSBiaW5hcnkgdHJlZSBzdHJ1Y3R1cmUsCi8vIG9wdGltaXplZCBmb3Igc2NlbmFyaW9zIHJlcXVpcmluZyBzZXF1ZW50aWFsIGluc2VydHMgd2l0aCBhdXRvLWluY3JlbWVudGluZyBpbmRpY2VzLgovLwovLyBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBhIGJpbmFyeSB0cmVlIHdoZXJlIG5ldyBlbGVtZW50cyBhcmUgYWRkZWQgYnkgZm9sbG93aW5nIGEgcGF0aAovLyBkZXRlcm1pbmVkIGJ5IHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIGluZGV4LiBUaGlzIHByb3ZpZGVzIGF1dG9tYXRpYyBiYWxhbmNpbmcKLy8gZm9yIGFwcGVuZCBvcGVyYXRpb25zIHdpdGhvdXQgcmVxdWlyaW5nIGFueSBiYWxhbmNpbmcgbG9naWMuCi8vCi8vIFVubGlrZSB0aGUgQVZMIHRyZWUtYmFzZWQgbGlzdCBpbXBsZW1lbnRhdGlvbiAocC9kZW1vL2F2bC9saXN0KSwgdWxpc3QgaXMgc3BlY2lmaWNhbGx5Ci8vIGRlc2lnbmVkIGZvciBhcHBlbmQtb25seSBvcGVyYXRpb25zIGFuZCBkb2VzIG5vdCByZXF1aXJlIHJlYmFsYW5jaW5nLiBUaGlzIG1ha2VzIGl0IG1vcmUKLy8gZWZmaWNpZW50IGZvciBzZXF1ZW50aWFsIGluc2VydHMgYnV0IGxlc3MgZmxleGlibGUgZm9yIGdlbmVyYWwtcHVycG9zZSBsaXN0IG9wZXJhdGlvbnMuCi8vCi8vIEtleSBkaWZmZXJlbmNlcyBmcm9tIEFWTCBsaXN0OgovLyAqIEFwcGVuZC1vbmx5IGRlc2lnbiAobm8gYXJiaXRyYXJ5IGluc2VydHMpCi8vICogTm8gdHJlZSByZWJhbGFuY2luZyBuZWVkZWQKLy8gKiBTaW1wbGVyIGltcGxlbWVudGF0aW9uCi8vICogTW9yZSBtZW1vcnkgZWZmaWNpZW50IGZvciBzZXF1ZW50aWFsIG9wZXJhdGlvbnMKLy8gKiBMZXNzIGZsZXhpYmxlIHRoYW4gQVZMIChubyBhcmJpdHJhcnkgaW5zZXJ0cy9yZW9yZGVyaW5nKQovLwovLyBLZXkgY2hhcmFjdGVyaXN0aWNzOgovLyAqIE8obG9nIG4pIGFwcGVuZCBhbmQgYWNjZXNzIG9wZXJhdGlvbnMKLy8gKiBQZXJmZWN0IGJhbGFuY2UgZm9yIHBvd2VyLW9mLTIgc2l6ZXMKLy8gKiBObyBiYWxhbmNpbmcgbmVlZGVkCi8vICogTWVtb3J5IGVmZmljaWVudAovLyAqIE5hdHVyYWwgc3VwcG9ydCBmb3IgcmFuZ2UgcXVlcmllcwovLyAqIFN1cHBvcnQgZm9yIHNvZnQgZGVsZXRpb24gb2YgZWxlbWVudHMKLy8gKiBGb3J3YXJkIGFuZCByZXZlcnNlIGl0ZXJhdGlvbiBjYXBhYmlsaXRpZXMKLy8gKiBPZmZzZXQtYmFzZWQgaXRlcmF0aW9uIHdpdGggY291bnQgY29udHJvbApwYWNrYWdlIHVsaXN0CgovLyBUT0RPOiBNYWtlIGF2bC9wYWdlciBjb21wYXRpYmxlIGluIHNvbWUgd2F5LiBFeHBsYWluIHRoZSBsaW1pdGF0aW9ucyAobm90IGFsd2F5cyAxMCBpdGVtcyBiZWNhdXNlIG9mIG5pbCBvbmVzKS4KLy8gVE9ETzogVXNlIHRoaXMgdWxpc3QgaW4gbW91bC9jb2xsZWN0aW9uIGZvciB0aGUgcHJpbWFyeSBpbmRleC4KLy8gVE9ETzogQ29uc2lkZXIgYWRkaW5nIGEgImNvbXBhY3QiIG1ldGhvZCB0aGF0IHJlbW92ZXMgbmlsIG5vZGVzLgovLyBUT0RPOiBCZW5jaG1hcmtzLgoKaW1wb3J0ICgKCSJlcnJvcnMiCikKCi8vIExpc3QgcmVwcmVzZW50cyBhbiBhcHBlbmQtb25seSBiaW5hcnkgdHJlZSBsaXN0CnR5cGUgTGlzdCBzdHJ1Y3QgewoJcm9vdCAgICAgICAqdHJlZU5vZGUKCXRvdGFsU2l6ZSAgaW50CglhY3RpdmVTaXplIGludAp9CgovLyBFbnRyeSByZXByZXNlbnRzIGEga2V5LXZhbHVlIHBhaXIgaW4gdGhlIGxpc3QsIHdoZXJlIEluZGV4IGlzIHRoZSBwb3NpdGlvbgovLyBhbmQgVmFsdWUgaXMgdGhlIHN0b3JlZCBkYXRhCnR5cGUgRW50cnkgc3RydWN0IHsKCUluZGV4IGludAoJVmFsdWUgYW55Cn0KCi8vIHRyZWVOb2RlIHJlcHJlc2VudHMgYSBub2RlIGluIHRoZSBiaW5hcnkgdHJlZQp0eXBlIHRyZWVOb2RlIHN0cnVjdCB7CglkYXRhICBhbnkKCWxlZnQgICp0cmVlTm9kZQoJcmlnaHQgKnRyZWVOb2RlCn0KCi8vIEVycm9yIHZhcmlhYmxlcwp2YXIgKAoJRXJyT3V0T2ZCb3VuZHMgPSBlcnJvcnMuTmV3KCJpbmRleCBvdXQgb2YgYm91bmRzIikKCUVyckRlbGV0ZWQgICAgID0gZXJyb3JzLk5ldygiZWxlbWVudCBhbHJlYWR5IGRlbGV0ZWQiKQopCgovLyBOZXcgY3JlYXRlcyBhIG5ldyBlbXB0eSBMaXN0IGluc3RhbmNlCmZ1bmMgTmV3KCkgKkxpc3QgewoJcmV0dXJuICZMaXN0e30KfQoKLy8gQXBwZW5kIGFkZHMgb25lIG9yIG1vcmUgdmFsdWVzIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCi8vIFZhbHVlcyBhcmUgYWRkZWQgc2VxdWVudGlhbGx5LCBhbmQgdGhlIGxpc3QgZ3Jvd3MgYXV0b21hdGljYWxseS4KZnVuYyAobCAqTGlzdCkgQXBwZW5kKHZhbHVlcyAuLi5hbnkpIHsKCWZvciBfLCB2YWx1ZSA6PSByYW5nZSB2YWx1ZXMgewoJCWluZGV4IDo9IGwudG90YWxTaXplCgkJbm9kZSA6PSBsLmZpbmROb2RlKGluZGV4LCB0cnVlKQoJCW5vZGUuZGF0YSA9IHZhbHVlCgkJbC50b3RhbFNpemUrKwoJCWwuYWN0aXZlU2l6ZSsrCgl9Cn0KCi8vIEdldCByZXRyaWV2ZXMgdGhlIHZhbHVlIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguCi8vIFJldHVybnMgbmlsIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzIG9yIGlmIHRoZSBlbGVtZW50IHdhcyBkZWxldGVkLgpmdW5jIChsICpMaXN0KSBHZXQoaW5kZXggaW50KSBhbnkgewoJbm9kZSA6PSBsLmZpbmROb2RlKGluZGV4LCBmYWxzZSkKCWlmIG5vZGUgPT0gbmlsIHsKCQlyZXR1cm4gbmlsCgl9CglyZXR1cm4gbm9kZS5kYXRhCn0KCi8vIERlbGV0ZSBtYXJrcyB0aGUgZWxlbWVudHMgYXQgdGhlIHNwZWNpZmllZCBpbmRpY2VzIGFzIGRlbGV0ZWQuCi8vIFJldHVybnMgRXJyT3V0T2ZCb3VuZHMgaWYgYW55IGluZGV4IGlzIGludmFsaWQgb3IgRXJyRGVsZXRlZCBpZgovLyB0aGUgZWxlbWVudCB3YXMgYWxyZWFkeSBkZWxldGVkLgpmdW5jIChsICpMaXN0KSBEZWxldGUoaW5kaWNlcyAuLi5pbnQpIGVycm9yIHsKCWlmIGxlbihpbmRpY2VzKSA9PSAwIHsKCQlyZXR1cm4gbmlsCgl9CglpZiBsID09IG5pbCB8fCBsLnRvdGFsU2l6ZSA9PSAwIHsKCQlyZXR1cm4gRXJyT3V0T2ZCb3VuZHMKCX0KCglmb3IgXywgaW5kZXggOj0gcmFuZ2UgaW5kaWNlcyB7CgkJaWYgaW5kZXggPCAwIHx8IGluZGV4ID49IGwudG90YWxTaXplIHsKCQkJcmV0dXJuIEVyck91dE9mQm91bmRzCgkJfQoKCQlub2RlIDo9IGwuZmluZE5vZGUoaW5kZXgsIGZhbHNlKQoJCWlmIG5vZGUgPT0gbmlsIHx8IG5vZGUuZGF0YSA9PSBuaWwgewoJCQlyZXR1cm4gRXJyRGVsZXRlZAoJCX0KCQlub2RlLmRhdGEgPSBuaWwKCQlsLmFjdGl2ZVNpemUtLQoJfQoKCXJldHVybiBuaWwKfQoKLy8gU2V0IHVwZGF0ZXMgb3IgcmVzdG9yZXMgYSB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGlmIHdpdGhpbiBib3VuZHMKLy8gUmV0dXJucyBFcnJPdXRPZkJvdW5kcyBpZiB0aGUgaW5kZXggaXMgaW52YWxpZApmdW5jIChsICpMaXN0KSBTZXQoaW5kZXggaW50LCB2YWx1ZSBhbnkpIGVycm9yIHsKCWlmIGwgPT0gbmlsIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+PSBsLnRvdGFsU2l6ZSB7CgkJcmV0dXJuIEVyck91dE9mQm91bmRzCgl9CgoJbm9kZSA6PSBsLmZpbmROb2RlKGluZGV4LCBmYWxzZSkKCWlmIG5vZGUgPT0gbmlsIHsKCQlyZXR1cm4gRXJyT3V0T2ZCb3VuZHMKCX0KCgkvLyBJZiB0aGlzIGlzIHJlc3RvcmluZyBhIGRlbGV0ZWQgZWxlbWVudAoJaWYgdmFsdWUgIT0gbmlsICYmIG5vZGUuZGF0YSA9PSBuaWwgewoJCWwuYWN0aXZlU2l6ZSsrCgl9CgoJLy8gSWYgdGhpcyBpcyBkZWxldGluZyBhbiBlbGVtZW50CglpZiB2YWx1ZSA9PSBuaWwgJiYgbm9kZS5kYXRhICE9IG5pbCB7CgkJbC5hY3RpdmVTaXplLS0KCX0KCglub2RlLmRhdGEgPSB2YWx1ZQoJcmV0dXJuIG5pbAp9CgovLyBTaXplIHJldHVybnMgdGhlIG51bWJlciBvZiBhY3RpdmUgKG5vbi1kZWxldGVkKSBlbGVtZW50cyBpbiB0aGUgbGlzdApmdW5jIChsICpMaXN0KSBTaXplKCkgaW50IHsKCWlmIGwgPT0gbmlsIHsKCQlyZXR1cm4gMAoJfQoJcmV0dXJuIGwuYWN0aXZlU2l6ZQp9CgovLyBUb3RhbFNpemUgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGV2ZXIgYWRkZWQgdG8gdGhlIGxpc3QsCi8vIGluY2x1ZGluZyBkZWxldGVkIGVsZW1lbnRzCmZ1bmMgKGwgKkxpc3QpIFRvdGFsU2l6ZSgpIGludCB7CglpZiBsID09IG5pbCB7CgkJcmV0dXJuIDAKCX0KCXJldHVybiBsLnRvdGFsU2l6ZQp9CgovLyBJdGVyQ2JGbiBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHR5cGUgdXNlZCBpbiBpdGVyYXRpb24gbWV0aG9kcy4KLy8gUmV0dXJuIHRydWUgdG8gc3RvcCBpdGVyYXRpb24sIGZhbHNlIHRvIGNvbnRpbnVlLgp0eXBlIEl0ZXJDYkZuIGZ1bmMoaW5kZXggaW50LCB2YWx1ZSBhbnkpIGJvb2wKCi8vIEl0ZXJhdG9yIHBlcmZvcm1zIGl0ZXJhdGlvbiBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgaW5kaWNlcywgY2FsbGluZyBjYiBmb3IgZWFjaCBlbnRyeS4KLy8gSWYgc3RhcnQgPiBlbmQsIGl0ZXJhdGlvbiBpcyBwZXJmb3JtZWQgaW4gcmV2ZXJzZSBvcmRlci4KLy8gUmV0dXJucyB0cnVlIGlmIGl0ZXJhdGlvbiB3YXMgc3RvcHBlZCBlYXJseSBieSB0aGUgY2FsbGJhY2sgcmV0dXJuaW5nIHRydWUuCi8vIFNraXBzIGRlbGV0ZWQgZWxlbWVudHMuCmZ1bmMgKGwgKkxpc3QpIEl0ZXJhdG9yKHN0YXJ0LCBlbmQgaW50LCBjYiBJdGVyQ2JGbikgYm9vbCB7CgkvLyBGb3IgZW1wdHkgbGlzdCBvciBpbnZhbGlkIHJhbmdlCglpZiBsID09IG5pbCB8fCBsLnRvdGFsU2l6ZSA9PSAwIHsKCQlyZXR1cm4gZmFsc2UKCX0KCWlmIHN0YXJ0IDwgMCAmJiBlbmQgPCAwIHsKCQlyZXR1cm4gZmFsc2UKCX0KCWlmIHN0YXJ0ID49IGwudG90YWxTaXplICYmIGVuZCA+PSBsLnRvdGFsU2l6ZSB7CgkJcmV0dXJuIGZhbHNlCgl9CgoJLy8gTm9ybWFsaXplIGluZGljZXMKCWlmIHN0YXJ0IDwgMCB7CgkJc3RhcnQgPSAwCgl9CglpZiBlbmQgPCAwIHsKCQllbmQgPSAwCgl9CglpZiBlbmQgPj0gbC50b3RhbFNpemUgewoJCWVuZCA9IGwudG90YWxTaXplIC0gMQoJfQoJaWYgc3RhcnQgPj0gbC50b3RhbFNpemUgewoJCXN0YXJ0ID0gbC50b3RhbFNpemUgLSAxCgl9CgoJLy8gSGFuZGxlIHJldmVyc2UgaXRlcmF0aW9uCglpZiBzdGFydCA+IGVuZCB7CgkJZm9yIGkgOj0gc3RhcnQ7IGkgPj0gZW5kOyBpLS0gewoJCQl2YWwgOj0gbC5HZXQoaSkKCQkJaWYgdmFsICE9IG5pbCB7CgkJCQlpZiBjYihpLCB2YWwpIHsKCQkJCQlyZXR1cm4gdHJ1ZQoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBmYWxzZQoJfQoKCS8vIEhhbmRsZSBmb3J3YXJkIGl0ZXJhdGlvbgoJZm9yIGkgOj0gc3RhcnQ7IGkgPD0gZW5kOyBpKysgewoJCXZhbCA6PSBsLkdldChpKQoJCWlmIHZhbCAhPSBuaWwgewoJCQlpZiBjYihpLCB2YWwpIHsKCQkJCXJldHVybiB0cnVlCgkJCX0KCQl9Cgl9CglyZXR1cm4gZmFsc2UKfQoKLy8gSXRlcmF0b3JCeU9mZnNldCBwZXJmb3JtcyBpdGVyYXRpb24gc3RhcnRpbmcgZnJvbSBvZmZzZXQgZm9yIGNvdW50IGVsZW1lbnRzLgovLyBJZiBjb3VudCBpcyBwb3NpdGl2ZSwgaXRlcmF0ZXMgZm9yd2FyZDsgaWYgbmVnYXRpdmUsIGl0ZXJhdGVzIGJhY2t3YXJkLgovLyBUaGUgaXRlcmF0aW9uIHN0b3BzIGFmdGVyIGFicyhjb3VudCkgZWxlbWVudHMgb3Igd2hlbiByZWFjaGluZyBsaXN0IGJvdW5kcy4KLy8gU2tpcHMgZGVsZXRlZCBlbGVtZW50cy4KZnVuYyAobCAqTGlzdCkgSXRlcmF0b3JCeU9mZnNldChvZmZzZXQgaW50LCBjb3VudCBpbnQsIGNiIEl0ZXJDYkZuKSBib29sIHsKCWlmIGNvdW50ID09IDAgfHwgbCA9PSBuaWwgfHwgbC50b3RhbFNpemUgPT0gMCB7CgkJcmV0dXJuIGZhbHNlCgl9CgoJLy8gTm9ybWFsaXplIG9mZnNldAoJaWYgb2Zmc2V0IDwgMCB7CgkJb2Zmc2V0ID0gMAoJfQoJaWYgb2Zmc2V0ID49IGwudG90YWxTaXplIHsKCQlvZmZzZXQgPSBsLnRvdGFsU2l6ZSAtIDEKCX0KCgkvLyBEZXRlcm1pbmUgZW5kIGJhc2VkIG9uIGNvdW50IGRpcmVjdGlvbgoJdmFyIGVuZCBpbnQKCWlmIGNvdW50ID4gMCB7CgkJZW5kID0gbC50b3RhbFNpemUgLSAxCgl9IGVsc2UgewoJCWVuZCA9IDAKCX0KCgl3cmFwcGVyUmV0dXJuZWQgOj0gZmFsc2UKCgkvLyBXcmFwIHRoZSBjYWxsYmFjayB0byBsaW1pdCBpdGVyYXRpb25zCglyZW1haW5pbmcgOj0gYWJzKGNvdW50KQoJd3JhcHBlciA6PSBmdW5jKGluZGV4IGludCwgdmFsdWUgYW55KSBib29sIHsKCQlpZiByZW1haW5pbmcgPD0gMCB7CgkJCXdyYXBwZXJSZXR1cm5lZCA9IHRydWUKCQkJcmV0dXJuIHRydWUKCQl9CgkJcmVtYWluaW5nLS0KCQlyZXR1cm4gY2IoaW5kZXgsIHZhbHVlKQoJfQoJcmV0IDo9IGwuSXRlcmF0b3Iob2Zmc2V0LCBlbmQsIHdyYXBwZXIpCglpZiB3cmFwcGVyUmV0dXJuZWQgewoJCXJldHVybiBmYWxzZQoJfQoJcmV0dXJuIHJldAp9CgovLyBhYnMgcmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgeApmdW5jIGFicyh4IGludCkgaW50IHsKCWlmIHggPCAwIHsKCQlyZXR1cm4gLXgKCX0KCXJldHVybiB4Cn0KCi8vIGZpbmROb2RlIGxvY2F0ZXMgb3IgY3JlYXRlcyBhIG5vZGUgYXQgdGhlIGdpdmVuIGluZGV4IGluIHRoZSBiaW5hcnkgdHJlZS4KLy8gVGhlIHRyZWUgaXMgc3RydWN0dXJlZCBzdWNoIHRoYXQgdGhlIHBhdGggdG8gYSBub2RlIGlzIGRldGVybWluZWQgYnkgdGhlIGJpbmFyeQovLyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5kZXguIEZvciBleGFtcGxlLCBhIHRyZWUgd2l0aCAxNSBlbGVtZW50cyB3b3VsZCBsb29rIGxpa2U6Ci8vCi8vCSAgICAgICAgICAwCi8vCSAgICAgICAvICAgICAgXAovLwkgICAgIDEgICAgICAgICAyCi8vCSAgIC8gICBcICAgICAvICAgXAovLwkgIDMgICAgNCAgICA1ICAgICA2Ci8vCSAvIFwgIC8gXCAgLyBcICAgLyBcCi8vCTcgIDggOSAxMCAxMSAxMiAxMyAxNAovLwovLyBUbyBmaW5kIGluZGV4IDEzIChiaW5hcnkgMTEwMSk6Ci8vIDEuIFN0YXJ0IGF0IHJvb3QgKDApCi8vIDIuIENhbGN1bGF0ZSBiaXRzIG5lZWRlZCAoNCBiaXRzIGZvciBpbmRleCAxMykKLy8gMy4gU2tpcCB0aGUgaGlnaGVzdCBiaXQgcG9zaXRpb24gYW5kIHN0YXJ0IGZyb20gYml0cy0yCi8vIDQuIFJlYWQgYml0cyBmcm9tIGxlZnQgdG8gcmlnaHQ6Ci8vICAgLSAxIC0+IGdvIHJpZ2h0IHRvIDIKLy8gICAtIDEgLT4gZ28gcmlnaHQgdG8gNgovLyAgIC0gMCAtPiBnbyBsZWZ0IHRvIDEzCi8vCi8vIFNwZWNpYWwgY2FzZXM6Ci8vIC0gSW5kZXggMCBhbHdheXMgcmV0dXJucyB0aGUgcm9vdCBub2RlCi8vIC0gRm9yIGNyZWF0ZT10cnVlLCBtaXNzaW5nIG5vZGVzIGFyZSBjcmVhdGVkIGFsb25nIHRoZSBwYXRoCi8vIC0gRm9yIGNyZWF0ZT1mYWxzZSwgcmV0dXJucyBuaWwgaWYgYW55IG5vZGUgaXMgbWlzc2luZwpmdW5jIChsICpMaXN0KSBmaW5kTm9kZShpbmRleCBpbnQsIGNyZWF0ZSBib29sKSAqdHJlZU5vZGUgewoJLy8gRm9yIHJlYWQgb3BlcmF0aW9ucywgY2hlY2sgYm91bmRzIHN0cmljdGx5CglpZiAhY3JlYXRlICYmIChsID09IG5pbCB8fCBpbmRleCA8IDAgfHwgaW5kZXggPj0gbC50b3RhbFNpemUpIHsKCQlyZXR1cm4gbmlsCgl9CgoJLy8gRm9yIGNyZWF0ZSBvcGVyYXRpb25zLCBhbGxvdyBpbmRleCA9PSB0b3RhbFNpemUgZm9yIGFwcGVuZAoJaWYgY3JlYXRlICYmIChsID09IG5pbCB8fCBpbmRleCA8IDAgfHwgaW5kZXggPiBsLnRvdGFsU2l6ZSkgewoJCXJldHVybiBuaWwKCX0KCgkvLyBJbml0aWFsaXplIHJvb3QgaWYgbmVlZGVkCglpZiBsLnJvb3QgPT0gbmlsIHsKCQlpZiAhY3JlYXRlIHsKCQkJcmV0dXJuIG5pbAoJCX0KCQlsLnJvb3QgPSAmdHJlZU5vZGV7fQoJCXJldHVybiBsLnJvb3QKCX0KCglub2RlIDo9IGwucm9vdAoKCS8vIFNwZWNpYWwgY2FzZSBmb3Igcm9vdCBub2RlCglpZiBpbmRleCA9PSAwIHsKCQlyZXR1cm4gbm9kZQoJfQoKCS8vIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGJpdHMgbmVlZGVkIChpbmxpbmUgaGlnaGVzdEJpdCBsb2dpYykKCWJpdHMgOj0gMAoJbiA6PSBpbmRleCArIDEKCWZvciBuID4gMCB7CgkJbiA+Pj0gMQoJCWJpdHMrKwoJfQoKCS8vIFN0YXJ0IGZyb20gdGhlIHNlY29uZCBoaWdoZXN0IGJpdAoJZm9yIGxldmVsIDo9IGJpdHMgLSAyOyBsZXZlbCA+PSAwOyBsZXZlbC0tIHsKCQliaXQgOj0gKGluZGV4ICYgKDEgPDwgdWludChsZXZlbCkpKSAhPSAwCgoJCWlmIGJpdCB7CgkJCWlmIG5vZGUucmlnaHQgPT0gbmlsIHsKCQkJCWlmICFjcmVhdGUgewoJCQkJCXJldHVybiBuaWwKCQkJCX0KCQkJCW5vZGUucmlnaHQgPSAmdHJlZU5vZGV7fQoJCQl9CgkJCW5vZGUgPSBub2RlLnJpZ2h0CgkJfSBlbHNlIHsKCQkJaWYgbm9kZS5sZWZ0ID09IG5pbCB7CgkJCQlpZiAhY3JlYXRlIHsKCQkJCQlyZXR1cm4gbmlsCgkJCQl9CgkJCQlub2RlLmxlZnQgPSAmdHJlZU5vZGV7fQoJCQl9CgkJCW5vZGUgPSBub2RlLmxlZnQKCQl9Cgl9CgoJcmV0dXJuIG5vZGUKfQoKLy8gTXVzdERlbGV0ZSBkZWxldGVzIGVsZW1lbnRzIGF0IHRoZSBzcGVjaWZpZWQgaW5kaWNlcy4KLy8gUGFuaWNzIGlmIGFueSBpbmRleCBpcyBpbnZhbGlkIG9yIGlmIGFueSBlbGVtZW50IHdhcyBhbHJlYWR5IGRlbGV0ZWQuCmZ1bmMgKGwgKkxpc3QpIE11c3REZWxldGUoaW5kaWNlcyAuLi5pbnQpIHsKCWlmIGVyciA6PSBsLkRlbGV0ZShpbmRpY2VzLi4uKTsgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQp9CgovLyBNdXN0R2V0IHJldHJpZXZlcyB0aGUgdmFsdWUgYXQgdGhlIHNwZWNpZmllZCBpbmRleC4KLy8gUGFuaWNzIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzIG9yIGlmIHRoZSBlbGVtZW50IHdhcyBkZWxldGVkLgpmdW5jIChsICpMaXN0KSBNdXN0R2V0KGluZGV4IGludCkgYW55IHsKCWlmIGwgPT0gbmlsIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+PSBsLnRvdGFsU2l6ZSB7CgkJcGFuaWMoRXJyT3V0T2ZCb3VuZHMpCgl9Cgl2YWx1ZSA6PSBsLkdldChpbmRleCkKCWlmIHZhbHVlID09IG5pbCB7CgkJcGFuaWMoRXJyRGVsZXRlZCkKCX0KCXJldHVybiB2YWx1ZQp9CgovLyBNdXN0U2V0IHVwZGF0ZXMgb3IgcmVzdG9yZXMgYSB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgovLyBQYW5pY3MgaWYgdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuCmZ1bmMgKGwgKkxpc3QpIE11c3RTZXQoaW5kZXggaW50LCB2YWx1ZSBhbnkpIHsKCWlmIGVyciA6PSBsLlNldChpbmRleCwgdmFsdWUpOyBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9Cn0KCi8vIEdldFJhbmdlIHJldHVybnMgYSBzbGljZSBvZiBFbnRyeSBjb250YWluaW5nIGVsZW1lbnRzIGJldHdlZW4gc3RhcnQgYW5kIGVuZCBpbmRpY2VzLgovLyBJZiBzdGFydCA+IGVuZCwgZWxlbWVudHMgYXJlIHJldHVybmVkIGluIHJldmVyc2Ugb3JkZXIuCi8vIERlbGV0ZWQgZWxlbWVudHMgYXJlIHNraXBwZWQuCmZ1bmMgKGwgKkxpc3QpIEdldFJhbmdlKHN0YXJ0LCBlbmQgaW50KSBbXUVudHJ5IHsKCXZhciBlbnRyaWVzIFtdRW50cnkKCWwuSXRlcmF0b3Ioc3RhcnQsIGVuZCwgZnVuYyhpbmRleCBpbnQsIHZhbHVlIGFueSkgYm9vbCB7CgkJZW50cmllcyA9IGFwcGVuZChlbnRyaWVzLCBFbnRyeXtJbmRleDogaW5kZXgsIFZhbHVlOiB2YWx1ZX0pCgkJcmV0dXJuIGZhbHNlCgl9KQoJcmV0dXJuIGVudHJpZXMKfQoKLy8gR2V0QnlPZmZzZXQgcmV0dXJucyBhIHNsaWNlIG9mIEVudHJ5IHN0YXJ0aW5nIGZyb20gb2Zmc2V0IGZvciBjb3VudCBlbGVtZW50cy4KLy8gSWYgY291bnQgaXMgcG9zaXRpdmUsIHJldHVybnMgZWxlbWVudHMgZm9yd2FyZDsgaWYgbmVnYXRpdmUsIHJldHVybnMgZWxlbWVudHMgYmFja3dhcmQuCi8vIFRoZSBvcGVyYXRpb24gc3RvcHMgYWZ0ZXIgYWJzKGNvdW50KSBlbGVtZW50cyBvciB3aGVuIHJlYWNoaW5nIGxpc3QgYm91bmRzLgovLyBEZWxldGVkIGVsZW1lbnRzIGFyZSBza2lwcGVkLgpmdW5jIChsICpMaXN0KSBHZXRCeU9mZnNldChvZmZzZXQgaW50LCBjb3VudCBpbnQpIFtdRW50cnkgewoJdmFyIGVudHJpZXMgW11FbnRyeQoJbC5JdGVyYXRvckJ5T2Zmc2V0KG9mZnNldCwgY291bnQsIGZ1bmMoaW5kZXggaW50LCB2YWx1ZSBhbnkpIGJvb2wgewoJCWVudHJpZXMgPSBhcHBlbmQoZW50cmllcywgRW50cnl7SW5kZXg6IGluZGV4LCBWYWx1ZTogdmFsdWV9KQoJCXJldHVybiBmYWxzZQoJfSkKCXJldHVybiBlbnRyaWVzCn0KCi8vIElMaXN0IGRlZmluZXMgdGhlIGludGVyZmFjZSBmb3IgYW4gdWxpc3QuTGlzdCBjb21wYXRpYmxlIHN0cnVjdHVyZS4KdHlwZSBJTGlzdCBpbnRlcmZhY2UgewoJLy8gQmFzaWMgb3BlcmF0aW9ucwoJQXBwZW5kKHZhbHVlcyAuLi5hbnkpCglHZXQoaW5kZXggaW50KSBhbnkKCURlbGV0ZShpbmRpY2VzIC4uLmludCkgZXJyb3IKCVNpemUoKSBpbnQKCVRvdGFsU2l6ZSgpIGludAoJU2V0KGluZGV4IGludCwgdmFsdWUgYW55KSBlcnJvcgoKCS8vIE11c3QgdmFyaWFudHMgdGhhdCBwYW5pYyBpbnN0ZWFkIG9mIHJldHVybmluZyBlcnJvcnMKCU11c3REZWxldGUoaW5kaWNlcyAuLi5pbnQpCglNdXN0R2V0KGluZGV4IGludCkgYW55CglNdXN0U2V0KGluZGV4IGludCwgdmFsdWUgYW55KQoKCS8vIFJhbmdlIG9wZXJhdGlvbnMKCUdldFJhbmdlKHN0YXJ0LCBlbmQgaW50KSBbXUVudHJ5CglHZXRCeU9mZnNldChvZmZzZXQgaW50LCBjb3VudCBpbnQpIFtdRW50cnkKCgkvLyBJdGVyYXRvciBvcGVyYXRpb25zCglJdGVyYXRvcihzdGFydCwgZW5kIGludCwgY2IgSXRlckNiRm4pIGJvb2wKCUl0ZXJhdG9yQnlPZmZzZXQob2Zmc2V0IGludCwgY291bnQgaW50LCBjYiBJdGVyQ2JGbikgYm9vbAp9CgovLyBWZXJpZnkgdGhhdCBMaXN0IGltcGxlbWVudHMgSUxpc3QKdmFyIF8gSUxpc3QgPSAoKkxpc3QpKG5pbCkKIiMKEy9nbm8uTWVtUGFja2FnZVR5cGUSDAoKTVBVc2VyUHJvZBITCOab2BYSDDEwMDAwMDB1Z25vdBqoAQo6ChMvdG0uUHViS2V5U2VjcDI1NmsxEiMKIQIAUko/jSwAOonEP0X+r2647UW246Nfe75rO0n/ni2DyBJAz3jq/1vbFMHh6+yq2TludNf2sYftBlHevZ1iKkC4UThApWHDLYkI3Rjoj6QtERCR1AXixy1buKpcA/XtW0J4PRooZzFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFsdXV4ZSIKZ25vcHVibGlzaA==