{ "name": "PQCDao", "structs": {}, "methods": [ { "name": "create", "args": [ { "type": "string", "name": "dao_name" }, { "type": "uint64", "name": "threshold" }, { "type": "uint64", "name": "num_members" }, { "type": "uint64", "name": "voting_period" }, { "type": "uint64", "name": "execution_delay" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "add_member", "args": [ { "type": "uint64", "name": "index" }, { "type": "byte[]", "name": "public_key" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "submit_proposal", "args": [ { "type": "string", "name": "description" }, { "type": "address", "name": "recipient" }, { "type": "uint64", "name": "amount" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "DaoProposalCreated", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint64", "name": "end_time" } ] } ], "recommendations": {} }, { "name": "submit_vote", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint64", "name": "signer_index" }, { "type": "uint8", "name": "vote_type" }, { "type": "byte[]", "name": "signature" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "DaoVoteSubmitted", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint64", "name": "signer_index" }, { "type": "uint8", "name": "vote_type" } ] } ], "recommendations": {} }, { "name": "execute_proposal", "args": [ { "type": "uint64", "name": "proposal_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "DaoExecuted", "args": [ { "type": "uint64", "name": "proposal_id" } ] } ], "recommendations": {} }, { "name": "get_proposal_count", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_threshold", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 5, "bytes": 1 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "dao_name": { "keyType": "AVMString", "valueType": "AVMString", "key": "ZGFvX25hbWU=" }, "threshold": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dGhyZXNob2xk" }, "num_members": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bnVtX21lbWJlcnM=" }, "proposal_count": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "cHJvcG9zYWxfY291bnQ=" }, "voting_period": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dm90aW5nX3BlcmlvZA==" }, "execution_delay": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "ZXhlY3V0aW9uX2RlbGF5" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 590 ], "errorMessage": "Already voted" }, { "pc": [ 230 ], "errorMessage": "DAO requires at least 1 member" }, { "pc": [ 532, 784 ], "errorMessage": "Executed" }, { "pc": [ 301 ], "errorMessage": "Index out of bounds" }, { "pc": [ 501 ], "errorMessage": "Invalid index" }, { "pc": [ 653 ], "errorMessage": "Invalid signature" }, { "pc": [ 513, 768 ], "errorMessage": "No proposal" }, { "pc": [ 293 ], "errorMessage": "Only creator" }, { "pc": [ 821 ], "errorMessage": "Quorum not reached" }, { "pc": [ 835 ], "errorMessage": "Rejected by majority" }, { "pc": [ 597 ], "errorMessage": "Signer key missing" }, { "pc": [ 227 ], "errorMessage": "Threshold cannot exceed member count" }, { "pc": [ 221 ], "errorMessage": "Threshold must be >= 1" }, { "pc": [ 803 ], "errorMessage": "Timelock active" }, { "pc": [ 564 ], "errorMessage": "Voting ended" }, { "pc": [ 548 ], "errorMessage": "Voting hasn't started" }, { "pc": [ 798 ], "errorMessage": "check self.execution_delay exists" }, { "pc": [ 297, 497 ], "errorMessage": "check self.num_members exists" }, { "pc": [ 348, 960 ], "errorMessage": "check self.proposal_count exists" }, { "pc": [ 817, 972 ], "errorMessage": "check self.threshold exists" }, { "pc": [ 370 ], "errorMessage": "check self.voting_period exists" }, { "pc": [ 172, 280, 317, 486 ], "errorMessage": "invalid array length header" }, { "pc": [ 179, 287, 324, 493 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 336 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 190, 199, 208, 217, 273, 344, 456, 468, 758 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 480 ], "errorMessage": "invalid number of bytes for arc4.uint8" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEyCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgOCAyCiAgICBieXRlY2Jsb2NrICJwcm9wb3NhbF9jb3VudCIgInRocmVzaG9sZCIgIm51bV9tZW1iZXJzIiAweDcwNzI2ZjcwNWYgMHgwMDRiIDB4MTUxZjdjNzUgInZvdGluZ19wZXJpb2QiICJleGVjdXRpb25fZGVsYXkiIDB4NzA2YjVmCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo0MwogICAgLy8gY2xhc3MgUFFDRGFvKEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBieiBtYWluX2NyZWF0ZV9Ob09wQDEyCiAgICBwdXNoYnl0ZXNzIDB4YTFlYmU3MjYgMHgwZDVjYzNlNiAweDQ2MjRjMmJiIDB4MzM4YmVjMjMgMHg2ZDhmYmE3NCAweGM2NTBkNWE0IC8vIG1ldGhvZCAiYWRkX21lbWJlcih1aW50NjQsYnl0ZVtdKXZvaWQiLCBtZXRob2QgInN1Ym1pdF9wcm9wb3NhbChzdHJpbmcsYWRkcmVzcyx1aW50NjQpdWludDY0IiwgbWV0aG9kICJzdWJtaXRfdm90ZSh1aW50NjQsdWludDY0LHVpbnQ4LGJ5dGVbXSl2b2lkIiwgbWV0aG9kICJleGVjdXRlX3Byb3Bvc2FsKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJnZXRfcHJvcG9zYWxfY291bnQoKXVpbnQ2NCIsIG1ldGhvZCAiZ2V0X3RocmVzaG9sZCgpdWludDY0IgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggYWRkX21lbWJlciBzdWJtaXRfcHJvcG9zYWwgc3VibWl0X3ZvdGUgZXhlY3V0ZV9wcm9wb3NhbCBnZXRfcHJvcG9zYWxfY291bnQgZ2V0X3RocmVzaG9sZAogICAgZXJyCgptYWluX2NyZWF0ZV9Ob09wQDEyOgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6NDMKICAgIC8vIGNsYXNzIFBRQ0RhbyhBUkM0Q29udHJhY3QpOgogICAgcHVzaGJ5dGVzIDB4ZjFmYWNiNWYgLy8gbWV0aG9kICJjcmVhdGUoc3RyaW5nLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggY3JlYXRlCiAgICBlcnIKCgovLyBwcWNfZGFvLlBRQ0Rhby5jcmVhdGVbcm91dGluZ10oKSAtPiB2b2lkOgpjcmVhdGU6CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo1MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9WyJOb09wIl0sIGNyZWF0ZT0icmVxdWlyZSIpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6NjEKICAgIC8vIGFzc2VydCB0aHJlc2hvbGQgPj0gVUludDY0KDEpLCAiVGhyZXNob2xkIG11c3QgYmUgPj0gMSIKICAgIGRpZyAzCiAgICBhc3NlcnQgLy8gVGhyZXNob2xkIG11c3QgYmUgPj0gMQogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6NjIKICAgIC8vIGFzc2VydCB0aHJlc2hvbGQgPD0gbnVtX21lbWJlcnMsICJUaHJlc2hvbGQgY2Fubm90IGV4Y2VlZCBtZW1iZXIgY291bnQiCiAgICBkaWcgMwogICAgZGlnIDMKICAgIDw9CiAgICBhc3NlcnQgLy8gVGhyZXNob2xkIGNhbm5vdCBleGNlZWQgbWVtYmVyIGNvdW50CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo2MwogICAgLy8gYXNzZXJ0IG51bV9tZW1iZXJzID49IFVJbnQ2NCgxKSwgIkRBTyByZXF1aXJlcyBhdCBsZWFzdCAxIG1lbWJlciIKICAgIGRpZyAyCiAgICBhc3NlcnQgLy8gREFPIHJlcXVpcmVzIGF0IGxlYXN0IDEgbWVtYmVyCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo2NQogICAgLy8gc2VsZi5kYW9fbmFtZS52YWx1ZSA9IGRhb19uYW1lCiAgICBwdXNoYnl0ZXMgImRhb19uYW1lIgogICAgdW5jb3ZlciA1CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6NjYKICAgIC8vIHNlbGYudGhyZXNob2xkLnZhbHVlID0gdGhyZXNob2xkCiAgICBieXRlY18xIC8vICJ0aHJlc2hvbGQiCiAgICB1bmNvdmVyIDQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo2NwogICAgLy8gc2VsZi5udW1fbWVtYmVycy52YWx1ZSA9IG51bV9tZW1iZXJzCiAgICBieXRlY18yIC8vICJudW1fbWVtYmVycyIKICAgIHVuY292ZXIgMwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjY4CiAgICAvLyBzZWxmLnByb3Bvc2FsX2NvdW50LnZhbHVlID0gVUludDY0KDApCiAgICBieXRlY18wIC8vICJwcm9wb3NhbF9jb3VudCIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6NjkKICAgIC8vIHNlbGYudm90aW5nX3BlcmlvZC52YWx1ZSA9IHZvdGluZ19wZXJpb2QKICAgIGJ5dGVjIDYgLy8gInZvdGluZ19wZXJpb2QiCiAgICB1bmNvdmVyIDIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo3MAogICAgLy8gc2VsZi5leGVjdXRpb25fZGVsYXkudmFsdWUgPSBleGVjdXRpb25fZGVsYXkKICAgIGJ5dGVjIDcgLy8gImV4ZWN1dGlvbl9kZWxheSIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo1MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9WyJOb09wIl0sIGNyZWF0ZT0icmVxdWlyZSIpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gcHFjX2Rhby5QUUNEYW8uYWRkX21lbWJlcltyb3V0aW5nXSgpIC0+IHZvaWQ6CmFkZF9tZW1iZXI6CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo3MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo3NAogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gR2xvYmFsLmNyZWF0b3JfYWRkcmVzcywgIk9ubHkgY3JlYXRvciIKICAgIHR4biBTZW5kZXIKICAgIGdsb2JhbCBDcmVhdG9yQWRkcmVzcwogICAgPT0KICAgIGFzc2VydCAvLyBPbmx5IGNyZWF0b3IKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5Ojc1CiAgICAvLyBhc3NlcnQgaW5kZXggPCBzZWxmLm51bV9tZW1iZXJzLnZhbHVlLCAiSW5kZXggb3V0IG9mIGJvdW5kcyIKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJudW1fbWVtYmVycyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5udW1fbWVtYmVycyBleGlzdHMKICAgIGRpZyAyCiAgICA+CiAgICBhc3NlcnQgLy8gSW5kZXggb3V0IG9mIGJvdW5kcwogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6NzYKICAgIC8vIGJveF9rZXkgPSBiInBrXyIgKyBvcC5pdG9iKGluZGV4KQogICAgc3dhcAogICAgaXRvYgogICAgYnl0ZWMgOCAvLyAweDcwNmI1ZgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo3NwogICAgLy8gb3AuQm94LnB1dChib3hfa2V5LCBwdWJsaWNfa2V5LmJ5dGVzKQogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6NzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHBxY19kYW8uUFFDRGFvLnN1Ym1pdF9wcm9wb3NhbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnN1Ym1pdF9wcm9wb3NhbDoKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5Ojc5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo4NgogICAgLy8gcHJvcG9zYWxfaWQgPSBzZWxmLnByb3Bvc2FsX2NvdW50LnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAicHJvcG9zYWxfY291bnQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucHJvcG9zYWxfY291bnQgZXhpc3RzCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo4NwogICAgLy8gc2VsZi5wcm9wb3NhbF9jb3VudC52YWx1ZSA9IHByb3Bvc2FsX2lkICsgVUludDY0KDEpCiAgICBkdXAKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBieXRlY18wIC8vICJwcm9wb3NhbF9jb3VudCIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo4OQogICAgLy8gZGVzY19oYXNoID0gb3Auc2hhMjU2KGRlc2NyaXB0aW9uLmJ5dGVzKQogICAgdW5jb3ZlciAzCiAgICBzaGEyNTYKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjkwCiAgICAvLyBib3hfa2V5ID0gYiJwcm9wXyIgKyBvcC5pdG9iKHByb3Bvc2FsX2lkKQogICAgc3dhcAogICAgaXRvYgogICAgYnl0ZWNfMyAvLyAweDcwNzI2ZjcwNWYKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjkyCiAgICAvLyBzdGFydCA9IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wCiAgICBnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo5MwogICAgLy8gZW5kID0gc3RhcnQgKyBzZWxmLnZvdGluZ19wZXJpb2QudmFsdWUKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA2IC8vICJ2b3RpbmdfcGVyaW9kIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnZvdGluZ19wZXJpb2QgZXhpc3RzCiAgICBkaWcgMQogICAgKwogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6OTgKICAgIC8vIGRlc2NfaGFzaD1hcmM0LkR5bmFtaWNCeXRlcyhkZXNjX2hhc2gpLAogICAgcHVzaGJ5dGVzIDB4MDAyMAogICAgdW5jb3ZlciA1CiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5Ojk5CiAgICAvLyBzdGFydF90aW1lPWFyYzQuVUludDY0KHN0YXJ0KSwKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTAwCiAgICAvLyBlbmRfdGltZT1hcmM0LlVJbnQ2NChlbmQpLAogICAgdW5jb3ZlciAyCiAgICBpdG9iCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weTo5NS0xMDQKICAgIC8vIHByb3AgPSBEYW9Qcm9wb3NhbCgKICAgIC8vICAgICByZWNpcGllbnQ9cmVjaXBpZW50LAogICAgLy8gICAgIGFtb3VudD1hcmM0LlVJbnQ2NChhbW91bnQpLAogICAgLy8gICAgIGRlc2NfaGFzaD1hcmM0LkR5bmFtaWNCeXRlcyhkZXNjX2hhc2gpLAogICAgLy8gICAgIHN0YXJ0X3RpbWU9YXJjNC5VSW50NjQoc3RhcnQpLAogICAgLy8gICAgIGVuZF90aW1lPWFyYzQuVUludDY0KGVuZCksCiAgICAvLyAgICAgeWVzX3ZvdGVzPWFyYzQuVUludDY0KDApLAogICAgLy8gICAgIG5vX3ZvdGVzPWFyYzQuVUludDY0KDApLAogICAgLy8gICAgIGV4ZWN1dGVkPWFyYzQuQm9vbChGYWxzZSkKICAgIC8vICkKICAgIHVuY292ZXIgNgogICAgdW5jb3ZlciA2CiAgICBjb25jYXQKICAgIGJ5dGVjIDQgLy8gMHgwMDRiCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBkaWcgMQogICAgY29uY2F0CiAgICBwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxMDUKICAgIC8vIG9wLkJveC5wdXQoYm94X2tleSwgcHJvcC5ieXRlcykKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTA3LTExMAogICAgLy8gYXJjNC5lbWl0KERhb1Byb3Bvc2FsQ3JlYXRlZCgKICAgIC8vICAgICBwcm9wb3NhbF9pZD1hcmM0LlVJbnQ2NChwcm9wb3NhbF9pZCksCiAgICAvLyAgICAgZW5kX3RpbWU9YXJjNC5VSW50NjQoZW5kKQogICAgLy8gKSkKICAgIGRpZyAxCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHB1c2hieXRlcyAweDA2YWZjNTY2IC8vIG1ldGhvZCAiRGFvUHJvcG9zYWxDcmVhdGVkKHVpbnQ2NCx1aW50NjQpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5Ojc5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGJ5dGVjIDUgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBwcWNfZGFvLlBRQ0Rhby5zdWJtaXRfdm90ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnN1Ym1pdF92b3RlOgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTEzCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cG4gMgogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgY292ZXIgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBjb3ZlciAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDgKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjEyMQogICAgLy8gYXNzZXJ0IHNpZ25lcl9pbmRleCA8IHNlbGYubnVtX21lbWJlcnMudmFsdWUsICJJbnZhbGlkIGluZGV4IgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gIm51bV9tZW1iZXJzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm51bV9tZW1iZXJzIGV4aXN0cwogICAgZGlnIDMKICAgID4KICAgIGFzc2VydCAvLyBJbnZhbGlkIGluZGV4CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxMjMKICAgIC8vIHByb3Bfa2V5ID0gYiJwcm9wXyIgKyBvcC5pdG9iKHByb3Bvc2FsX2lkKQogICAgdW5jb3ZlciAzCiAgICBpdG9iCiAgICBieXRlY18zIC8vIDB4NzA3MjZmNzA1ZgogICAgZGlnIDEKICAgIGNvbmNhdAogICAgZHVwCiAgICBjb3ZlciA1CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxMjQKICAgIC8vIHByb3BfYnl0ZXMsIGV4aXN0cyA9IG9wLkJveC5nZXQocHJvcF9rZXkpCiAgICBib3hfZ2V0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxMjUKICAgIC8vIGFzc2VydCBleGlzdHMsICJObyBwcm9wb3NhbCIKICAgIGFzc2VydCAvLyBObyBwcm9wb3NhbAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTI4CiAgICAvLyBhc3NlcnQgbm90IHByb3AuZXhlY3V0ZWQubmF0aXZlLCAiRXhlY3V0ZWQiCiAgICBkdXAKICAgIHB1c2hpbnQgNTkyCiAgICBnZXRiaXQKICAgIHB1c2hieXRlcyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGR1cAogICAgY292ZXIgNgogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgIQogICAgYXNzZXJ0IC8vIEV4ZWN1dGVkCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxMzAKICAgIC8vIGFzc2VydCBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCA+PSBwcm9wLnN0YXJ0X3RpbWUubmF0aXZlLCAiVm90aW5nIGhhc24ndCBzdGFydGVkIgogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgZGlnIDEKICAgIGV4dHJhY3QgNDIgOAogICAgY292ZXIgNgogICAgZGlnIDEKICAgIHB1c2hpbnQgNDIKICAgIGV4dHJhY3RfdWludDY0CiAgICA+PQogICAgYXNzZXJ0IC8vIFZvdGluZyBoYXNuJ3Qgc3RhcnRlZAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTMxCiAgICAvLyBhc3NlcnQgR2xvYmFsLmxhdGVzdF90aW1lc3RhbXAgPD0gcHJvcC5lbmRfdGltZS5uYXRpdmUsICJWb3RpbmcgZW5kZWQiCiAgICBnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCiAgICBkaWcgMQogICAgZXh0cmFjdCA1MCA4CiAgICBjb3ZlciA2CiAgICBkaWcgMQogICAgcHVzaGludCA1MAogICAgZXh0cmFjdF91aW50NjQKICAgIDw9CiAgICBhc3NlcnQgLy8gVm90aW5nIGVuZGVkCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxMzMKICAgIC8vIHNpZ19rZXkgPSBiInNpZ18iICsgb3AuaXRvYihwcm9wb3NhbF9pZCkgKyBiIl8iICsgb3AuaXRvYihzaWduZXJfaW5kZXgpCiAgICBwdXNoYnl0ZXMgMHg3MzY5Njc1ZgogICAgZGlnIDIKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4NWYKICAgIGNvbmNhdAogICAgdW5jb3ZlciA1CiAgICBpdG9iCiAgICBzd2FwCiAgICBkaWcgMQogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxMzQKICAgIC8vIHNpZ19kYXRhLCBzaWdfZXhpc3RzID0gb3AuQm94LmdldChzaWdfa2V5KQogICAgZHVwCiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjEzNQogICAgLy8gYXNzZXJ0IG5vdCBzaWdfZXhpc3RzLCAiQWxyZWFkeSB2b3RlZCIKICAgICEKICAgIGFzc2VydCAvLyBBbHJlYWR5IHZvdGVkCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxMzcKICAgIC8vIHBrX2tleSA9IGIicGtfIiArIG9wLml0b2Ioc2lnbmVyX2luZGV4KQogICAgYnl0ZWMgOCAvLyAweDcwNmI1ZgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjEzOAogICAgLy8gcHVia2V5LCBwa19leGlzdHMgPSBvcC5Cb3guZ2V0KHBrX2tleSkKICAgIGJveF9nZXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjEzOQogICAgLy8gYXNzZXJ0IHBrX2V4aXN0cywgIlNpZ25lciBrZXkgbWlzc2luZyIKICAgIGFzc2VydCAvLyBTaWduZXIga2V5IG1pc3NpbmcKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE0MwogICAgLy8gKyBwcm9wLnJlY2lwaWVudC5ieXRlcwogICAgZGlnIDIKICAgIGV4dHJhY3QgMCAzMgogICAgZHVwCiAgICBjb3ZlciA3CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNDItMTQzCiAgICAvLyBvcC5pdG9iKHByb3Bvc2FsX2lkKQogICAgLy8gKyBwcm9wLnJlY2lwaWVudC5ieXRlcwogICAgdW5jb3ZlciA0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE0NAogICAgLy8gKyBvcC5pdG9iKHByb3AuYW1vdW50Lm5hdGl2ZSkKICAgIGRpZyAzCiAgICBleHRyYWN0IDMyIDgKICAgIGR1cAogICAgY292ZXIgNwogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTQyLTE0NAogICAgLy8gb3AuaXRvYihwcm9wb3NhbF9pZCkKICAgIC8vICsgcHJvcC5yZWNpcGllbnQuYnl0ZXMKICAgIC8vICsgb3AuaXRvYihwcm9wLmFtb3VudC5uYXRpdmUpCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE0NQogICAgLy8gKyBwcm9wLmRlc2NfaGFzaC5ieXRlcwogICAgZGlnIDMKICAgIHB1c2hpbnQgNDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgNAogICAgbGVuCiAgICBkaWcgNQogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBjb3ZlciA3CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNDItMTQ1CiAgICAvLyBvcC5pdG9iKHByb3Bvc2FsX2lkKQogICAgLy8gKyBwcm9wLnJlY2lwaWVudC5ieXRlcwogICAgLy8gKyBvcC5pdG9iKHByb3AuYW1vdW50Lm5hdGl2ZSkKICAgIC8vICsgcHJvcC5kZXNjX2hhc2guYnl0ZXMKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTQ2CiAgICAvLyArIG9wLml0b2Iodm90ZV90eXBlLm5hdGl2ZSkKICAgIHVuY292ZXIgNQogICAgYnRvaQogICAgZHVwCiAgICBjb3ZlciA2CiAgICBkdXAKICAgIGl0b2IKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE0Mi0xNDYKICAgIC8vIG9wLml0b2IocHJvcG9zYWxfaWQpCiAgICAvLyArIHByb3AucmVjaXBpZW50LmJ5dGVzCiAgICAvLyArIG9wLml0b2IocHJvcC5hbW91bnQubmF0aXZlKQogICAgLy8gKyBwcm9wLmRlc2NfaGFzaC5ieXRlcwogICAgLy8gKyBvcC5pdG9iKHZvdGVfdHlwZS5uYXRpdmUpCiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTQ4CiAgICAvLyBhc3NlcnQgb3AuZmFsY29uX3ZlcmlmeShtZXNzYWdlLCBzaWduYXR1cmUuYnl0ZXMsIHB1YmtleSksICJJbnZhbGlkIHNpZ25hdHVyZSIKICAgIHVuY292ZXIgNQogICAgdW5jb3ZlciAzCiAgICBmYWxjb25fdmVyaWZ5CiAgICBhc3NlcnQgLy8gSW52YWxpZCBzaWduYXR1cmUKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE1MAogICAgLy8gb3AuQm94LnB1dChzaWdfa2V5LCBCeXRlcyhiIjEiKSkKICAgIHN3YXAKICAgIHB1c2hieXRlcyAweDMxCiAgICBib3hfcHV0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNTIKICAgIC8vIHkgPSBwcm9wLnllc192b3Rlcy5uYXRpdmUKICAgIGRpZyAxCiAgICBwdXNoaW50IDU4CiAgICBleHRyYWN0X3VpbnQ2NAogICAgY292ZXIgMgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTUzCiAgICAvLyBuID0gcHJvcC5ub192b3Rlcy5uYXRpdmUKICAgIHN3YXAKICAgIHB1c2hpbnQgNjYKICAgIGV4dHJhY3RfdWludDY0CiAgICBzd2FwCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNTQKICAgIC8vIGlmIHZvdGVfdHlwZS5uYXRpdmUgPT0gVUludDY0KDEpOgogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBieiBzdWJtaXRfdm90ZV9lbHNlX2JvZHlAMwogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTU1CiAgICAvLyB5ICs9IFVJbnQ2NCgxKQogICAgZGlnIDEKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBidXJ5IDIKCnN1Ym1pdF92b3RlX2FmdGVyX2lmX2Vsc2VANjoKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE2NQogICAgLy8geWVzX3ZvdGVzPWFyYzQuVUludDY0KHkpLAogICAgZGlnIDEKICAgIGl0b2IKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE2NgogICAgLy8gbm9fdm90ZXM9YXJjNC5VSW50NjQobiksCiAgICBkaWcgMQogICAgaXRvYgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTU5LTE2OAogICAgLy8gbmV3X3Byb3AgPSBEYW9Qcm9wb3NhbCgKICAgIC8vICAgICByZWNpcGllbnQ9cHJvcC5yZWNpcGllbnQsCiAgICAvLyAgICAgYW1vdW50PXByb3AuYW1vdW50LAogICAgLy8gICAgIGRlc2NfaGFzaD1wcm9wLmRlc2NfaGFzaC5jb3B5KCksCiAgICAvLyAgICAgc3RhcnRfdGltZT1wcm9wLnN0YXJ0X3RpbWUsCiAgICAvLyAgICAgZW5kX3RpbWU9cHJvcC5lbmRfdGltZSwKICAgIC8vICAgICB5ZXNfdm90ZXM9YXJjNC5VSW50NjQoeSksCiAgICAvLyAgICAgbm9fdm90ZXM9YXJjNC5VSW50NjQobiksCiAgICAvLyAgICAgZXhlY3V0ZWQ9cHJvcC5leGVjdXRlZAogICAgLy8gKQogICAgZGlnIDcKICAgIGRpZyA3CiAgICBjb25jYXQKICAgIGJ5dGVjIDQgLy8gMHgwMDRiCiAgICBjb25jYXQKICAgIGRpZyAxMAogICAgY29uY2F0CiAgICBkaWcgOQogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgOQogICAgY29uY2F0CiAgICBkaWcgNAogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNjkKICAgIC8vIG9wLkJveC5wdXQocHJvcF9rZXksIG5ld19wcm9wLmJ5dGVzKQogICAgZGlnIDEwCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNzEtMTc1CiAgICAvLyBhcmM0LmVtaXQoRGFvVm90ZVN1Ym1pdHRlZCgKICAgIC8vICAgICBwcm9wb3NhbF9pZD1hcmM0LlVJbnQ2NChwcm9wb3NhbF9pZCksCiAgICAvLyAgICAgc2lnbmVyX2luZGV4PWFyYzQuVUludDY0KHNpZ25lcl9pbmRleCksCiAgICAvLyAgICAgdm90ZV90eXBlPXZvdGVfdHlwZQogICAgLy8gKSkKICAgIGRpZyAxMgogICAgZGlnIDEyCiAgICBjb25jYXQKICAgIGRpZyAxMQogICAgY29uY2F0CiAgICBwdXNoYnl0ZXMgMHgwNTA0NmVkYSAvLyBtZXRob2QgIkRhb1ZvdGVTdWJtaXR0ZWQodWludDY0LHVpbnQ2NCx1aW50OCkiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTEzCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCnN1Ym1pdF92b3RlX2Vsc2VfYm9keUAzOgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTU2CiAgICAvLyBlbGlmIHZvdGVfdHlwZS5uYXRpdmUgPT0gVUludDY0KDIpOgogICAgZGlnIDIKICAgIGludGNfMyAvLyAyCiAgICA9PQogICAgYnogc3VibWl0X3ZvdGVfYWZ0ZXJfaWZfZWxzZUA2CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNTcKICAgIC8vIG4gKz0gVUludDY0KDEpCiAgICBkdXAKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgc3VibWl0X3ZvdGVfYWZ0ZXJfaWZfZWxzZUA2CgoKLy8gcHFjX2Rhby5QUUNEYW8uZXhlY3V0ZV9wcm9wb3NhbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmV4ZWN1dGVfcHJvcG9zYWw6CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNzcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgZHVwCiAgICBidG9pCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxNzkKICAgIC8vIHByb3Bfa2V5ID0gYiJwcm9wXyIgKyBvcC5pdG9iKHByb3Bvc2FsX2lkKQogICAgaXRvYgogICAgYnl0ZWNfMyAvLyAweDcwNzI2ZjcwNWYKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE4MAogICAgLy8gcHJvcF9ieXRlcywgZXhpc3RzID0gb3AuQm94LmdldChwcm9wX2tleSkKICAgIGR1cAogICAgYm94X2dldAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTgxCiAgICAvLyBhc3NlcnQgZXhpc3RzLCAiTm8gcHJvcG9zYWwiCiAgICBhc3NlcnQgLy8gTm8gcHJvcG9zYWwKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE4NAogICAgLy8gYXNzZXJ0IG5vdCBwcm9wLmV4ZWN1dGVkLm5hdGl2ZSwgIkV4ZWN1dGVkIgogICAgZHVwCiAgICBwdXNoaW50IDU5MgogICAgZ2V0Yml0CiAgICBwdXNoYnl0ZXMgMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBpbnRjXzAgLy8gMAogICAgZ2V0Yml0CiAgICAhCiAgICBhc3NlcnQgLy8gRXhlY3V0ZWQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE4NgogICAgLy8gZXhlY3V0YWJsZV90aW1lID0gcHJvcC5lbmRfdGltZS5uYXRpdmUgKyBzZWxmLmV4ZWN1dGlvbl9kZWxheS52YWx1ZQogICAgZHVwCiAgICBleHRyYWN0IDUwIDgKICAgIGRpZyAxCiAgICBwdXNoaW50IDUwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDcgLy8gImV4ZWN1dGlvbl9kZWxheSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5leGVjdXRpb25fZGVsYXkgZXhpc3RzCiAgICArCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxODcKICAgIC8vIGFzc2VydCBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCA+PSBleGVjdXRhYmxlX3RpbWUsICJUaW1lbG9jayBhY3RpdmUiCiAgICBnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCiAgICA8PQogICAgYXNzZXJ0IC8vIFRpbWVsb2NrIGFjdGl2ZQogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTg5CiAgICAvLyBhc3NlcnQgcHJvcC55ZXNfdm90ZXMubmF0aXZlID49IHNlbGYudGhyZXNob2xkLnZhbHVlLCAiUXVvcnVtIG5vdCByZWFjaGVkIgogICAgZGlnIDEKICAgIGV4dHJhY3QgNTggOAogICAgZGlnIDIKICAgIHB1c2hpbnQgNTgKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAidGhyZXNob2xkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRocmVzaG9sZCBleGlzdHMKICAgIGRpZyAxCiAgICA8PQogICAgYXNzZXJ0IC8vIFF1b3J1bSBub3QgcmVhY2hlZAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTkwCiAgICAvLyBhc3NlcnQgcHJvcC55ZXNfdm90ZXMubmF0aXZlID4gcHJvcC5ub192b3Rlcy5uYXRpdmUsICJSZWplY3RlZCBieSBtYWpvcml0eSIKICAgIGRpZyAzCiAgICBleHRyYWN0IDY2IDgKICAgIGRpZyA0CiAgICBwdXNoaW50IDY2CiAgICBleHRyYWN0X3VpbnQ2NAogICAgdW5jb3ZlciAyCiAgICA8CiAgICBhc3NlcnQgLy8gUmVqZWN0ZWQgYnkgbWFqb3JpdHkKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE5MwogICAgLy8gcmVjaXBpZW50PXByb3AucmVjaXBpZW50LAogICAgZGlnIDMKICAgIGV4dHJhY3QgMCAzMgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTk0CiAgICAvLyBhbW91bnQ9cHJvcC5hbW91bnQsCiAgICBkaWcgNAogICAgZXh0cmFjdCAzMiA4CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxOTUKICAgIC8vIGRlc2NfaGFzaD1wcm9wLmRlc2NfaGFzaC5jb3B5KCksCiAgICBkaWcgNQogICAgcHVzaGludCA0MAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyA2CiAgICBsZW4KICAgIGRpZyA3CiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToxOTYKICAgIC8vIHN0YXJ0X3RpbWU9cHJvcC5zdGFydF90aW1lLAogICAgZGlnIDYKICAgIGV4dHJhY3QgNDIgOAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTkyLTIwMQogICAgLy8gbmV3X3Byb3AgPSBEYW9Qcm9wb3NhbCgKICAgIC8vICAgICByZWNpcGllbnQ9cHJvcC5yZWNpcGllbnQsCiAgICAvLyAgICAgYW1vdW50PXByb3AuYW1vdW50LAogICAgLy8gICAgIGRlc2NfaGFzaD1wcm9wLmRlc2NfaGFzaC5jb3B5KCksCiAgICAvLyAgICAgc3RhcnRfdGltZT1wcm9wLnN0YXJ0X3RpbWUsCiAgICAvLyAgICAgZW5kX3RpbWU9cHJvcC5lbmRfdGltZSwKICAgIC8vICAgICB5ZXNfdm90ZXM9cHJvcC55ZXNfdm90ZXMsCiAgICAvLyAgICAgbm9fdm90ZXM9cHJvcC5ub192b3RlcywKICAgIC8vICAgICBleGVjdXRlZD1hcmM0LkJvb2woVHJ1ZSkKICAgIC8vICkKICAgIGRpZyAzCiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgYnl0ZWMgNCAvLyAweDAwNGIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICB1bmNvdmVyIDUKICAgIGNvbmNhdAogICAgdW5jb3ZlciA0CiAgICBjb25jYXQKICAgIHVuY292ZXIgMwogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToyMDAKICAgIC8vIGV4ZWN1dGVkPWFyYzQuQm9vbChUcnVlKQogICAgcHVzaGJ5dGVzIDB4ODAKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE5Mi0yMDEKICAgIC8vIG5ld19wcm9wID0gRGFvUHJvcG9zYWwoCiAgICAvLyAgICAgcmVjaXBpZW50PXByb3AucmVjaXBpZW50LAogICAgLy8gICAgIGFtb3VudD1wcm9wLmFtb3VudCwKICAgIC8vICAgICBkZXNjX2hhc2g9cHJvcC5kZXNjX2hhc2guY29weSgpLAogICAgLy8gICAgIHN0YXJ0X3RpbWU9cHJvcC5zdGFydF90aW1lLAogICAgLy8gICAgIGVuZF90aW1lPXByb3AuZW5kX3RpbWUsCiAgICAvLyAgICAgeWVzX3ZvdGVzPXByb3AueWVzX3ZvdGVzLAogICAgLy8gICAgIG5vX3ZvdGVzPXByb3Aubm9fdm90ZXMsCiAgICAvLyAgICAgZXhlY3V0ZWQ9YXJjNC5Cb29sKFRydWUpCiAgICAvLyApCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MjAyCiAgICAvLyBvcC5Cb3gucHV0KHByb3Bfa2V5LCBuZXdfcHJvcC5ieXRlcykKICAgIHVuY292ZXIgMwogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MjA0CiAgICAvLyBhcmM0LmVtaXQoRGFvRXhlY3V0ZWQocHJvcG9zYWxfaWQ9YXJjNC5VSW50NjQocHJvcG9zYWxfaWQpKSkKICAgIHB1c2hieXRlcyAweGVhYmQ0MDllIC8vIG1ldGhvZCAiRGFvRXhlY3V0ZWQodWludDY0KSIKICAgIHVuY292ZXIgNAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjIwNi0yMTEKICAgIC8vIGl0eG4uUGF5bWVudCgKICAgIC8vICAgICByZWNlaXZlcj1wcm9wLnJlY2lwaWVudC5uYXRpdmUsCiAgICAvLyAgICAgYW1vdW50PXByb3AuYW1vdW50Lm5hdGl2ZSwKICAgIC8vICAgICBmZWU9R2xvYmFsLm1pbl90eG5fZmVlLAogICAgLy8gICAgIG5vdGU9YiJhbGdvLXBxYy1raXQ6ZGFvOnByb3Bvc2FsOiIgKyBvcC5pdG9iKHByb3Bvc2FsX2lkKSwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjIwOQogICAgLy8gZmVlPUdsb2JhbC5taW5fdHhuX2ZlZSwKICAgIGdsb2JhbCBNaW5UeG5GZWUKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjIwOAogICAgLy8gYW1vdW50PXByb3AuYW1vdW50Lm5hdGl2ZSwKICAgIHVuY292ZXIgMgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MTk0CiAgICAvLyBhbW91bnQ9cHJvcC5hbW91bnQsCiAgICBwdXNoaW50IDMyCiAgICAvLyBjb250cmFjdHMvcHFjX2Rhby5weToyMDgKICAgIC8vIGFtb3VudD1wcm9wLmFtb3VudC5uYXRpdmUsCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MjEwCiAgICAvLyBub3RlPWIiYWxnby1wcWMta2l0OmRhbzpwcm9wb3NhbDoiICsgb3AuaXRvYihwcm9wb3NhbF9pZCksCiAgICBwdXNoYnl0ZXMgMHg2MTZjNjc2ZjJkNzA3MTYzMmQ2YjY5NzQzYTY0NjE2ZjNhNzA3MjZmNzA2ZjczNjE2YzNhCiAgICB1bmNvdmVyIDQKICAgIGNvbmNhdAogICAgaXR4bl9maWVsZCBOb3RlCiAgICBpdHhuX2ZpZWxkIEFtb3VudAogICAgc3dhcAogICAgaXR4bl9maWVsZCBSZWNlaXZlcgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MjA2CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICBpbnRjXzEgLy8gcGF5CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MjA2LTIxMQogICAgLy8gaXR4bi5QYXltZW50KAogICAgLy8gICAgIHJlY2VpdmVyPXByb3AucmVjaXBpZW50Lm5hdGl2ZSwKICAgIC8vICAgICBhbW91bnQ9cHJvcC5hbW91bnQubmF0aXZlLAogICAgLy8gICAgIGZlZT1HbG9iYWwubWluX3R4bl9mZWUsCiAgICAvLyAgICAgbm90ZT1iImFsZ28tcHFjLWtpdDpkYW86cHJvcG9zYWw6IiArIG9wLml0b2IocHJvcG9zYWxfaWQpLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjE3NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gcHFjX2Rhby5QUUNEYW8uZ2V0X3Byb3Bvc2FsX2NvdW50W3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X3Byb3Bvc2FsX2NvdW50OgogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MjE1CiAgICAvLyByZXR1cm4gc2VsZi5wcm9wb3NhbF9jb3VudC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gInByb3Bvc2FsX2NvdW50IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnByb3Bvc2FsX2NvdW50IGV4aXN0cwogICAgLy8gY29udHJhY3RzL3BxY19kYW8ucHk6MjEzCiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGl0b2IKICAgIGJ5dGVjIDUgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBwcWNfZGFvLlBRQ0Rhby5nZXRfdGhyZXNob2xkW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X3RocmVzaG9sZDoKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjIxOQogICAgLy8gcmV0dXJuIHNlbGYudGhyZXNob2xkLnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAidGhyZXNob2xkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRocmVzaG9sZCBleGlzdHMKICAgIC8vIGNvbnRyYWN0cy9wcWNfZGFvLnB5OjIxNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBpdG9iCiAgICBieXRlYyA1IC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEyCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "DCAEAAEIAiYJDnByb3Bvc2FsX2NvdW50CXRocmVzaG9sZAtudW1fbWVtYmVycwVwcm9wXwIASwQVH3x1DXZvdGluZ19wZXJpb2QPZXhlY3V0aW9uX2RlbGF5A3BrXzEZFEQxGEEAMoIGBKHr5yYEDVzD5gRGJMK7BDOL7CMEbY+6dATGUNWkNhoAjgYAcgCgASgCVwMlAzEAgATx+stfNhoAjgEAAQA2GgFJIlklCEsBFRJEVwIANhoCSRUkEkQXNhoDSRUkEkQXNhoESRUkEkQXNhoFSRUkEkQXSwNESwNLAw5ESwJEgAhkYW9fbmFtZU8FZylPBGcqTwNnKCJnJwZPAmcnB0xnI0M2GgFJFSQSRBc2GgJJIlklCEsBFRJEMQAyCRJEIiplREsCDURMFicITFBMvyNDNhoBSSJZJQhLARUSRFcCADYaAkkVgSASRDYaA0kVJBJEIihlREkjCChMZ08DAUwWK0sBUDIHIicGZURLAQiAAgAgTwVQTwIWTwIWTwZPBlAnBFBPAlBLAVCAEQAAAAAAAAAAAAAAAAAAAAAAUE8CUE8CTL9LAUxQgAQGr8VmTFCwJwVMULAjQzYaAUcCFSQSRBc2GgJJTgJJFSQSRBc2GgNJTgNJFSMSRDYaBEkiWSUISwEVEkQiKmVESwMNRE8DFitLAVBJTgW+REmB0ARTgAEAIk8CVElOBiJTFEQyB0sBVyoITgZLAYEqWw9EMgdLAVcyCE4GSwGBMlsORIAEc2lnX0sCUIABX1BPBRZMSwFQSb1FARREJwhPAlC+REsCVwAgSU4HTwRMUEsDVyAISU4HUEsDgShZSwQVSwVOAlJJTgdQTwUXSU4GSRZPAkxQTwVPA4VETIABMb9LAYE6W04CTIFCW0wjEkEAPEsBIwhFAksBFksBFksHSwdQJwRQSwpQSwlQTwJQTFBLCVBLBFBLCky/SwxLDFBLC1CABAUEbtpMULAjQ0sCJRJB/8NJIwhFAUL/uzYaAUkVJBJESRcWK0sBUEm+REmB0ARTgAEAIk8CVCJTFERJVzIISwGBMlsiJwdlRAgyBw5ESwFXOghLAoE6WyIpZURLAQ5ESwNXQghLBIFCW08CDERLA1cAIEsEVyAISwWBKFlLBhVLB04CUksGVyoISwNPA1AnBFBMUE8FUE8EUE8DUIABgFBMUE8DTL+ABOq9QJ5PBFCwsTIATwKBIFuAGmFsZ28tcHFjLWtpdDpkYW86cHJvcG9zYWw6TwRQsgWyCEyyByOyELIBsyNDIihlRBYnBUxQsCNDIillRBYnBUxQsCND", "clear": "DIEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 8, "patch": 1 } }, "events": [ { "name": "DaoProposalCreated", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint64", "name": "end_time" } ] }, { "name": "DaoVoteSubmitted", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint64", "name": "signer_index" }, { "type": "uint8", "name": "vote_type" } ] }, { "name": "DaoExecuted", "args": [ { "type": "uint64", "name": "proposal_id" } ] } ], "templateVariables": {} }