{ "name": "VotingRoundApp", "structs": { "VotingPreconditions": [ { "name": "is_voting_open", "type": "uint64" }, { "name": "is_allowed_to_vote", "type": "uint64" }, { "name": "has_already_voted", "type": "uint64" }, { "name": "current_time", "type": "uint64" } ] }, "methods": [ { "name": "create", "args": [ { "type": "string", "name": "vote_id" }, { "type": "byte[]", "name": "snapshot_public_key" }, { "type": "string", "name": "metadata_ipfs_cid" }, { "type": "uint64", "name": "start_time" }, { "type": "uint64", "name": "end_time" }, { "type": "uint8[]", "name": "option_counts" }, { "type": "uint64", "name": "quorum" }, { "type": "string", "name": "nft_image_url" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "bootstrap", "args": [ { "type": "pay", "name": "fund_min_bal_req" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "close", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_preconditions", "args": [ { "type": "byte[]", "name": "signature" } ], "returns": { "type": "(uint64,uint64,uint64,uint64)", "struct": "VotingPreconditions" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "vote", "args": [ { "type": "pay", "name": "fund_min_bal_req" }, { "type": "byte[]", "name": "signature" }, { "type": "uint8[]", "name": "answer_ids" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 8, "bytes": 5 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "is_bootstrapped": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "aXNfYm9vdHN0cmFwcGVk" }, "voter_count": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dm90ZXJfY291bnQ=" }, "close_time": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "Y2xvc2VfdGltZQ==" }, "vote_id": { "keyType": "AVMString", "valueType": "AVMString", "key": "dm90ZV9pZA==" }, "snapshot_public_key": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "c25hcHNob3RfcHVibGljX2tleQ==" }, "metadata_ipfs_cid": { "keyType": "AVMString", "valueType": "AVMString", "key": "bWV0YWRhdGFfaXBmc19jaWQ=" }, "start_time": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "c3RhcnRfdGltZQ==" }, "end_time": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "ZW5kX3RpbWU=" }, "quorum": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "cXVvcnVt" }, "nft_image_url": { "keyType": "AVMString", "valueType": "AVMString", "key": "bmZ0X2ltYWdlX3VybA==" }, "nft_asset_id": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bmZ0X2Fzc2V0X2lk" }, "option_counts": { "keyType": "AVMString", "valueType": "uint8[]", "key": "b3B0aW9uX2NvdW50cw==" }, "total_options": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dG90YWxfb3B0aW9ucw==" } }, "local": {}, "box": { "tally_box": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "Vg==" } } }, "maps": { "global": {}, "local": {}, "box": { "votes_by_account": { "keyType": "address", "valueType": "uint8[]", "prefix": "" } } } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 626 ], "errorMessage": "Already closed" }, { "pc": [ 1197 ], "errorMessage": "Already voted" }, { "pc": [ 1271 ], "errorMessage": "Answer option index invalid" }, { "pc": [ 508 ], "errorMessage": "Can't have more than 112 questions" }, { "pc": [ 541 ], "errorMessage": "Can't have more than 128 vote options" }, { "pc": [ 462 ], "errorMessage": "End time should be after start time" }, { "pc": [ 468 ], "errorMessage": "End time should be in the future" }, { "pc": [ 567 ], "errorMessage": "Must not be already bootstrapped" }, { "pc": [ 1186 ], "errorMessage": "Not allowed to vote" }, { "pc": [ 1210 ], "errorMessage": "Number of answers incorrect" }, { "pc": [ 603 ], "errorMessage": "Payment must be for the exact min balance requirement" }, { "pc": [ 1237 ], "errorMessage": "Payment must be the exact min balance" }, { "pc": [ 577, 1229 ], "errorMessage": "Payment must be to app address" }, { "pc": [ 1190 ], "errorMessage": "Voting not open" }, { "pc": [ 1359 ], "errorMessage": "check self.end_time exists" }, { "pc": [ 565, 1328 ], "errorMessage": "check self.is_bootstrapped exists" }, { "pc": [ 773 ], "errorMessage": "check self.metadata_ipfs_cid exists" }, { "pc": [ 1021 ], "errorMessage": "check self.nft_image_url exists" }, { "pc": [ 862, 1201, 1262 ], "errorMessage": "check self.option_counts exists" }, { "pc": [ 806 ], "errorMessage": "check self.quorum exists" }, { "pc": [ 1389 ], "errorMessage": "check self.snapshot_public_key exists" }, { "pc": [ 1345 ], "errorMessage": "check self.start_time exists" }, { "pc": [ 582 ], "errorMessage": "check self.total_options exists" }, { "pc": [ 636, 998 ], "errorMessage": "check self.vote_id exists" }, { "pc": [ 831, 1307 ], "errorMessage": "check self.voter_count exists" }, { "pc": [ 889 ], "errorMessage": "index access is out of bounds" }, { "pc": [ 351, 367, 383, 420, 446, 864, 1082, 1147, 1166, 1203 ], "errorMessage": "invalid array length header" }, { "pc": [ 358, 374, 390, 431, 453, 1089, 1154, 1174 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 401, 410, 439 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 504 ], "errorMessage": "option_counts should be non-empty" }, { "pc": [ 561, 1141 ], "errorMessage": "transaction type is pay" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgMiA4CiAgICBieXRlY2Jsb2NrICJpc19ib290c3RyYXBwZWQiICJ2b3Rlcl9jb3VudCIgIm9wdGlvbl9jb3VudHMiICJWIiAidm90ZV9pZCIgImNsb3NlX3RpbWUiIDB4MDY4MTAxIDB4MzAzMTMyMzMzNDM1MzYzNzM4MzkgInNuYXBzaG90X3B1YmxpY19rZXkiICJtZXRhZGF0YV9pcGZzX2NpZCIgInN0YXJ0X3RpbWUiICJlbmRfdGltZSIgInF1b3J1bSIgIm5mdF9pbWFnZV91cmwiICJ0b3RhbF9vcHRpb25zIgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gdm90aW5nL3ZvdGluZy5weTo1MQogICAgLy8gc2VsZi5pc19ib290c3RyYXBwZWQgPSBGYWxzZQogICAgYnl0ZWNfMCAvLyAiaXNfYm9vdHN0cmFwcGVkIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjUyLTUzCiAgICAvLyAjIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcnMgd2hvIGhhdmUgdm90ZWQKICAgIC8vIHNlbGYudm90ZXJfY291bnQgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzEgLy8gInZvdGVyX2NvdW50IgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CgptYWluX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NDkKICAgIC8vIGNsYXNzIFZvdGluZ1JvdW5kQXBwKEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBieiBtYWluX2NyZWF0ZV9Ob09wQDEwCiAgICBwdXNoYnl0ZXNzIDB4YTRlOGQxNjQgMHg5NjU2MDQ3YSAweGJjYjE1ODk2IDB4ODRhNTNjNmUgLy8gbWV0aG9kICJib290c3RyYXAocGF5KXZvaWQiLCBtZXRob2QgImNsb3NlKCl2b2lkIiwgbWV0aG9kICJnZXRfcHJlY29uZGl0aW9ucyhieXRlW10pKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiLCBtZXRob2QgInZvdGUocGF5LGJ5dGVbXSx1aW50OFtdKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBib290c3RyYXAgY2xvc2UgZ2V0X3ByZWNvbmRpdGlvbnMgdm90ZQogICAgZXJyCgptYWluX2NyZWF0ZV9Ob09wQDEwOgogICAgLy8gdm90aW5nL3ZvdGluZy5weTo0OQogICAgLy8gY2xhc3MgVm90aW5nUm91bmRBcHAoQVJDNENvbnRyYWN0KToKICAgIHB1c2hieXRlcyAweGFlODk3ZjZiIC8vIG1ldGhvZCAiY3JlYXRlKHN0cmluZyxieXRlW10sc3RyaW5nLHVpbnQ2NCx1aW50NjQsdWludDhbXSx1aW50NjQsc3RyaW5nKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBjcmVhdGUKICAgIGVycgoKCi8vIF9wdXlhX2xpYi51dGlsLmVuc3VyZV9idWRnZXQocmVxdWlyZWRfYnVkZ2V0OiB1aW50NjQsIGZlZV9zb3VyY2U6IHVpbnQ2NCkgLT4gdm9pZDoKZW5zdXJlX2J1ZGdldDoKICAgIHByb3RvIDIgMAogICAgZnJhbWVfZGlnIC0yCiAgICBwdXNoaW50IDEwCiAgICArCgplbnN1cmVfYnVkZ2V0X3doaWxlX3RvcEAxOgogICAgZHVwCiAgICBnbG9iYWwgT3Bjb2RlQnVkZ2V0CiAgICA+CiAgICBieiBlbnN1cmVfYnVkZ2V0X2FmdGVyX3doaWxlQDYKICAgIGl0eG5fYmVnaW4KICAgIHB1c2hpbnQgNiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBwdXNoaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBieXRlYyA2IC8vIDB4MDY4MTAxCiAgICBpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQogICAgYnl0ZWMgNiAvLyAweDA2ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQogICAgZnJhbWVfZGlnIC0xCiAgICBzd2l0Y2ggZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV8wQDMgZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV8xQDQKCmVuc3VyZV9idWRnZXRfc3dpdGNoX2Nhc2VfbmV4dEA1OgogICAgaXR4bl9zdWJtaXQKICAgIGIgZW5zdXJlX2J1ZGdldF93aGlsZV90b3BAMQoKZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV8xQDQ6CiAgICBnbG9iYWwgTWluVHhuRmVlCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiBlbnN1cmVfYnVkZ2V0X3N3aXRjaF9jYXNlX25leHRANQoKZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV8wQDM6CiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV9uZXh0QDUKCmVuc3VyZV9idWRnZXRfYWZ0ZXJfd2hpbGVANjoKICAgIHJldHN1YgoKCi8vIGV4YW1wbGVzLnZvdGluZy52b3RpbmcuaXRvYShpOiB1aW50NjQpIC0+IGJ5dGVzOgppdG9hOgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNDktMjUwCiAgICAvLyBAc3Vicm91dGluZQogICAgLy8gZGVmIGl0b2EoaTogVUludDY0KSAtPiBTdHJpbmc6CiAgICBwcm90byAxIDEKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjUzCiAgICAvLyBpZiBpIDwgcmFkaXg6CiAgICBmcmFtZV9kaWcgLTEKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjUyCiAgICAvLyByYWRpeCA9IGRpZ2l0cy5sZW5ndGgKICAgIHB1c2hpbnQgMTAKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjUzCiAgICAvLyBpZiBpIDwgcmFkaXg6CiAgICA8CiAgICBieiBpdG9hX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTEKICAgIC8vIGRpZ2l0cyA9IEJ5dGVzKGIiMDEyMzQ1Njc4OSIpCiAgICBieXRlYyA3IC8vIDB4MzAzMTMyMzMzNDM1MzYzNzM4MzkKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjU0CiAgICAvLyByZXR1cm4gU3RyaW5nLmZyb21fYnl0ZXMoZGlnaXRzW2ldKQogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzEgLy8gMQogICAgZXh0cmFjdDMKICAgIHJldHN1YgoKaXRvYV9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI1NQogICAgLy8gcmV0dXJuIGl0b2EoaSAvLyByYWRpeCkgKyBTdHJpbmcuZnJvbV9ieXRlcyhkaWdpdHNbaSAlIHJhZGl4XSkKICAgIGZyYW1lX2RpZyAtMQogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTIKICAgIC8vIHJhZGl4ID0gZGlnaXRzLmxlbmd0aAogICAgcHVzaGludCAxMAogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTUKICAgIC8vIHJldHVybiBpdG9hKGkgLy8gcmFkaXgpICsgU3RyaW5nLmZyb21fYnl0ZXMoZGlnaXRzW2kgJSByYWRpeF0pCiAgICAvCiAgICBjYWxsc3ViIGl0b2EKICAgIGZyYW1lX2RpZyAtMQogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTIKICAgIC8vIHJhZGl4ID0gZGlnaXRzLmxlbmd0aAogICAgcHVzaGludCAxMAogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTUKICAgIC8vIHJldHVybiBpdG9hKGkgLy8gcmFkaXgpICsgU3RyaW5nLmZyb21fYnl0ZXMoZGlnaXRzW2kgJSByYWRpeF0pCiAgICAlCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI1MQogICAgLy8gZGlnaXRzID0gQnl0ZXMoYiIwMTIzNDU2Nzg5IikKICAgIGJ5dGVjIDcgLy8gMHgzMDMxMzIzMzM0MzUzNjM3MzgzOQogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTUKICAgIC8vIHJldHVybiBpdG9hKGkgLy8gcmFkaXgpICsgU3RyaW5nLmZyb21fYnl0ZXMoZGlnaXRzW2kgJSByYWRpeF0pCiAgICBzd2FwCiAgICBpbnRjXzEgLy8gMQogICAgZXh0cmFjdDMKICAgIGNvbmNhdAogICAgcmV0c3ViCgoKLy8gZXhhbXBsZXMudm90aW5nLnZvdGluZy5Wb3RpbmdSb3VuZEFwcC5jcmVhdGVbcm91dGluZ10oKSAtPiB2b2lkOgpjcmVhdGU6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjU4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoY3JlYXRlPSJyZXF1aXJlIikKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDUKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDYKICAgIGR1cAogICAgY292ZXIgNgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgZHVwCiAgICBjb3ZlciA4CiAgICBkdXAKICAgIGludGNfMiAvLyAyCiAgICArCiAgICB1bmNvdmVyIDIKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA3CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA4CiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo3MAogICAgLy8gYXNzZXJ0IHN0YXJ0X3RpbWUgPCBlbmRfdGltZSwgIkVuZCB0aW1lIHNob3VsZCBiZSBhZnRlciBzdGFydCB0aW1lIgogICAgZGlnIDQKICAgIGRpZyA0CiAgICA8CiAgICBhc3NlcnQgLy8gRW5kIHRpbWUgc2hvdWxkIGJlIGFmdGVyIHN0YXJ0IHRpbWUKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NzEKICAgIC8vIGFzc2VydCBlbmRfdGltZSA+PSBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCwgIkVuZCB0aW1lIHNob3VsZCBiZSBpbiB0aGUgZnV0dXJlIgogICAgZGlnIDMKICAgIGdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKICAgID49CiAgICBhc3NlcnQgLy8gRW5kIHRpbWUgc2hvdWxkIGJlIGluIHRoZSBmdXR1cmUKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NzMKICAgIC8vIHNlbGYudm90ZV9pZCA9IHZvdGVfaWQKICAgIGJ5dGVjIDQgLy8gInZvdGVfaWQiCiAgICB1bmNvdmVyIDgKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5Ojc0CiAgICAvLyBzZWxmLnNuYXBzaG90X3B1YmxpY19rZXkgPSBzbmFwc2hvdF9wdWJsaWNfa2V5CiAgICBieXRlYyA4IC8vICJzbmFwc2hvdF9wdWJsaWNfa2V5IgogICAgdW5jb3ZlciA3CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo3NQogICAgLy8gc2VsZi5tZXRhZGF0YV9pcGZzX2NpZCA9IG1ldGFkYXRhX2lwZnNfY2lkCiAgICBieXRlYyA5IC8vICJtZXRhZGF0YV9pcGZzX2NpZCIKICAgIHVuY292ZXIgNgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NzYKICAgIC8vIHNlbGYuc3RhcnRfdGltZSA9IHN0YXJ0X3RpbWUKICAgIGJ5dGVjIDEwIC8vICJzdGFydF90aW1lIgogICAgdW5jb3ZlciA1CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo3NwogICAgLy8gc2VsZi5lbmRfdGltZSA9IGVuZF90aW1lCiAgICBieXRlYyAxMSAvLyAiZW5kX3RpbWUiCiAgICB1bmNvdmVyIDQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5Ojc4CiAgICAvLyBzZWxmLnF1b3J1bSA9IHF1b3J1bQogICAgYnl0ZWMgMTIgLy8gInF1b3J1bSIKICAgIHVuY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NzkKICAgIC8vIHNlbGYubmZ0X2ltYWdlX3VybCA9IG5mdF9pbWFnZV91cmwKICAgIGJ5dGVjIDEzIC8vICJuZnRfaW1hZ2VfdXJsIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjE5CiAgICAvLyBhc3NlcnQgb3B0aW9uX2NvdW50cy5sZW5ndGgsICJvcHRpb25fY291bnRzIHNob3VsZCBiZSBub24tZW1wdHkiCiAgICBkdXAKICAgIGFzc2VydCAvLyBvcHRpb25fY291bnRzIHNob3VsZCBiZSBub24tZW1wdHkKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjIwCiAgICAvLyBhc3NlcnQgb3B0aW9uX2NvdW50cy5sZW5ndGggPD0gMTEyLCAiQ2FuJ3QgaGF2ZSBtb3JlIHRoYW4gMTEyIHF1ZXN0aW9ucyIKICAgIHB1c2hpbnQgMTEyCiAgICA8PQogICAgYXNzZXJ0IC8vIENhbid0IGhhdmUgbW9yZSB0aGFuIDExMiBxdWVzdGlvbnMKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjIyCiAgICAvLyB0b3RhbF9vcHRpb25zID0gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgZHVwCgpjcmVhdGVfZm9yX2hlYWRlckAyOgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMjMKICAgIC8vIGZvciBpdGVtIGluIG9wdGlvbl9jb3VudHM6CiAgICBkdXAKICAgIGRpZyA0CiAgICA8CiAgICBieiBjcmVhdGVfYWZ0ZXJfZm9yQDQKICAgIGRpZyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMjQKICAgIC8vIHRvdGFsX29wdGlvbnMgKz0gaXRlbS5hc191aW50NjQoKQogICAgZGlnIDEKICAgIGdldGJ5dGUKICAgIHVuY292ZXIgMgogICAgKwogICAgc3dhcAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGIgY3JlYXRlX2Zvcl9oZWFkZXJAMgoKY3JlYXRlX2FmdGVyX2ZvckA0OgogICAgcG9wCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIyNQogICAgLy8gYXNzZXJ0IHRvdGFsX29wdGlvbnMgPD0gMTI4LCAiQ2FuJ3QgaGF2ZSBtb3JlIHRoYW4gMTI4IHZvdGUgb3B0aW9ucyIKICAgIGR1cAogICAgcHVzaGludCAxMjgKICAgIDw9CiAgICBhc3NlcnQgLy8gQ2FuJ3QgaGF2ZSBtb3JlIHRoYW4gMTI4IHZvdGUgb3B0aW9ucwogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMjcKICAgIC8vIHNlbGYub3B0aW9uX2NvdW50cyA9IG9wdGlvbl9jb3VudHMuY29weSgpCiAgICBieXRlY18yIC8vICJvcHRpb25fY291bnRzIgogICAgdW5jb3ZlciAyCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMjgKICAgIC8vIHNlbGYudG90YWxfb3B0aW9ucyA9IHRvdGFsX29wdGlvbnMKICAgIGJ5dGVjIDE0IC8vICJ0b3RhbF9vcHRpb25zIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChjcmVhdGU9InJlcXVpcmUiKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGV4YW1wbGVzLnZvdGluZy52b3RpbmcuVm90aW5nUm91bmRBcHAuYm9vdHN0cmFwW3JvdXRpbmddKCkgLT4gdm9pZDoKYm9vdHN0cmFwOgogICAgLy8gdm90aW5nL3ZvdGluZy5weTo4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG4gR3JvdXBJbmRleAogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIGR1cAogICAgZ3R4bnMgVHlwZUVudW0KICAgIGludGNfMSAvLyBwYXkKICAgID09CiAgICBhc3NlcnQgLy8gdHJhbnNhY3Rpb24gdHlwZSBpcyBwYXkKICAgIC8vIHZvdGluZy92b3RpbmcucHk6ODQKICAgIC8vIGFzc2VydCBub3Qgc2VsZi5pc19ib290c3RyYXBwZWQsICJNdXN0IG5vdCBiZSBhbHJlYWR5IGJvb3RzdHJhcHBlZCIKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJpc19ib290c3RyYXBwZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaXNfYm9vdHN0cmFwcGVkIGV4aXN0cwogICAgIQogICAgYXNzZXJ0IC8vIE11c3Qgbm90IGJlIGFscmVhZHkgYm9vdHN0cmFwcGVkCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5Ojg1CiAgICAvLyBzZWxmLmlzX2Jvb3RzdHJhcHBlZCA9IFRydWUKICAgIGJ5dGVjXzAgLy8gImlzX2Jvb3RzdHJhcHBlZCIKICAgIGludGNfMSAvLyAxCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo4OAogICAgLy8gZnVuZF9taW5fYmFsX3JlcS5yZWNlaXZlciA9PSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzCiAgICBkdXAKICAgIGd0eG5zIFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIC8vIHZvdGluZy92b3RpbmcucHk6ODctODkKICAgIC8vIGFzc2VydCAoCiAgICAvLyAgICAgZnVuZF9taW5fYmFsX3JlcS5yZWNlaXZlciA9PSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzCiAgICAvLyApLCAiUGF5bWVudCBtdXN0IGJlIHRvIGFwcCBhZGRyZXNzIgogICAgYXNzZXJ0IC8vIFBheW1lbnQgbXVzdCBiZSB0byBhcHAgYWRkcmVzcwogICAgLy8gdm90aW5nL3ZvdGluZy5weTo5MQogICAgLy8gdGFsbHlfYm94X3NpemUgPSBzZWxmLnRvdGFsX29wdGlvbnMgKiBWT1RFX0NPVU5UX0JZVEVTCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgMTQgLy8gInRvdGFsX29wdGlvbnMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudG90YWxfb3B0aW9ucyBleGlzdHMKICAgIGludGNfMyAvLyA4CiAgICAqCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEwMS0xMDIKICAgIC8vICMgdGFsbHkgYm94IHZhbHVlCiAgICAvLyArICh0YWxseV9ib3hfc2l6ZSAqIEJPWF9CWVRFX01JTl9CQUxBTkNFKQogICAgZHVwCiAgICBwdXNoaW50IDQwMAogICAgKgogICAgLy8gdm90aW5nL3ZvdGluZy5weTo5My0xMDAKICAgIC8vICMgbWluaW11bSBiYWxhbmNlIHJlcSBmb3I6IEFMR09zICsgVm90ZSByZXN1bHQgTkZUIGFzc2V0CiAgICAvLyBBU1NFVF9NSU5fQkFMQU5DRSAqIDIKICAgIC8vICMgY3JlYXRlIE5GVCBmZWUKICAgIC8vICsgMTAwMAogICAgLy8gIyB0YWxseSBib3gKICAgIC8vICsgQk9YX0ZMQVRfTUlOX0JBTEFOQ0UKICAgIC8vICMgdGFsbHkgYm94IGtleSAiViIKICAgIC8vICsgQk9YX0JZVEVfTUlOX0JBTEFOQ0UKICAgIHB1c2hpbnQgMjAzOTAwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjkzLTEwMgogICAgLy8gIyBtaW5pbXVtIGJhbGFuY2UgcmVxIGZvcjogQUxHT3MgKyBWb3RlIHJlc3VsdCBORlQgYXNzZXQKICAgIC8vIEFTU0VUX01JTl9CQUxBTkNFICogMgogICAgLy8gIyBjcmVhdGUgTkZUIGZlZQogICAgLy8gKyAxMDAwCiAgICAvLyAjIHRhbGx5IGJveAogICAgLy8gKyBCT1hfRkxBVF9NSU5fQkFMQU5DRQogICAgLy8gIyB0YWxseSBib3gga2V5ICJWIgogICAgLy8gKyBCT1hfQllURV9NSU5fQkFMQU5DRQogICAgLy8gIyB0YWxseSBib3ggdmFsdWUKICAgIC8vICsgKHRhbGx5X2JveF9zaXplICogQk9YX0JZVEVfTUlOX0JBTEFOQ0UpCiAgICArCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEwNAogICAgLy8gbG9nKG1pbl9iYWxhbmNlX3JlcSkKICAgIGR1cAogICAgaXRvYgogICAgbG9nCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEwNgogICAgLy8gZnVuZF9taW5fYmFsX3JlcS5hbW91bnQgPT0gbWluX2JhbGFuY2VfcmVxCiAgICB1bmNvdmVyIDIKICAgIGd0eG5zIEFtb3VudAogICAgPT0KICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTA1LTEwNwogICAgLy8gYXNzZXJ0ICgKICAgIC8vICAgICBmdW5kX21pbl9iYWxfcmVxLmFtb3VudCA9PSBtaW5fYmFsYW5jZV9yZXEKICAgIC8vICksICJQYXltZW50IG11c3QgYmUgZm9yIHRoZSBleGFjdCBtaW4gYmFsYW5jZSByZXF1aXJlbWVudCIKICAgIGFzc2VydCAvLyBQYXltZW50IG11c3QgYmUgZm9yIHRoZSBleGFjdCBtaW4gYmFsYW5jZSByZXF1aXJlbWVudAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMDgKICAgIC8vIGFzc2VydCBzZWxmLnRhbGx5X2JveC5jcmVhdGUoc2l6ZT10YWxseV9ib3hfc2l6ZSkKICAgIGJ5dGVjXzMgLy8gIlYiCiAgICBzd2FwCiAgICBib3hfY3JlYXRlCiAgICBhc3NlcnQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6ODIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGV4YW1wbGVzLnZvdGluZy52b3RpbmcuVm90aW5nUm91bmRBcHAuY2xvc2Vbcm91dGluZ10oKSAtPiB2b2lkOgpjbG9zZToKICAgIGludGNfMCAvLyAwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExMgogICAgLy8gZW5zdXJlX2J1ZGdldCgyMDAwMCwgZmVlX3NvdXJjZT1PcFVwRmVlU291cmNlLkdyb3VwQ3JlZGl0KQogICAgcHVzaGludCAyMDAwMAogICAgaW50Y18wIC8vIDAKICAgIGNhbGxzdWIgZW5zdXJlX2J1ZGdldAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTMKICAgIC8vIGFzc2VydCBub3Qgc2VsZi5jbG9zZV90aW1lLCAiQWxyZWFkeSBjbG9zZWQiCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNSAvLyAiY2xvc2VfdGltZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBidXJ5IDEKICAgICEKICAgIGFzc2VydCAvLyBBbHJlYWR5IGNsb3NlZAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTQKICAgIC8vIHNlbGYuY2xvc2VfdGltZS52YWx1ZSA9IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wCiAgICBieXRlYyA1IC8vICJjbG9zZV90aW1lIgogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE5CiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gInZvdGVfaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90ZV9pZCBleGlzdHMKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE3LTExOAogICAgLy8gJ3sic3RhbmRhcmQiOiJhcmM2OSIsJwogICAgLy8gJyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgYSB2b3RpbmcgcmVzdWx0IE5GVCBmb3Igdm90aW5nIHJvdW5kIHdpdGggSUQgJwogICAgcHVzaGJ5dGVzICJ7XCJzdGFuZGFyZFwiOlwiYXJjNjlcIixcImRlc2NyaXB0aW9uXCI6XCJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICIKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE3LTExOQogICAgLy8gJ3sic3RhbmRhcmQiOiJhcmM2OSIsJwogICAgLy8gJyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgYSB2b3RpbmcgcmVzdWx0IE5GVCBmb3Igdm90aW5nIHJvdW5kIHdpdGggSUQgJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTIwCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICBwdXNoYnl0ZXMgIi5cIixcInByb3BlcnRpZXNcIjp7XCJtZXRhZGF0YVwiOlwiaXBmczovLyIKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE3LTEyMAogICAgLy8gJ3sic3RhbmRhcmQiOiJhcmM2OSIsJwogICAgLy8gJyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgYSB2b3RpbmcgcmVzdWx0IE5GVCBmb3Igdm90aW5nIHJvdW5kIHdpdGggSUQgJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJy4iLCJwcm9wZXJ0aWVzIjp7Im1ldGFkYXRhIjoiaXBmczovLycKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMjEKICAgIC8vICsgc2VsZi5tZXRhZGF0YV9pcGZzX2NpZAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDkgLy8gIm1ldGFkYXRhX2lwZnNfY2lkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm1ldGFkYXRhX2lwZnNfY2lkIGV4aXN0cwogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTctMTIxCiAgICAvLyAneyJzdGFuZGFyZCI6ImFyYzY5IiwnCiAgICAvLyAnImRlc2NyaXB0aW9uIjoiVGhpcyBpcyBhIHZvdGluZyByZXN1bHQgTkZUIGZvciB2b3Rpbmcgcm91bmQgd2l0aCBJRCAnCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnLiIsInByb3BlcnRpZXMiOnsibWV0YWRhdGEiOiJpcGZzOi8vJwogICAgLy8gKyBzZWxmLm1ldGFkYXRhX2lwZnNfY2lkCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTIyCiAgICAvLyArICciLCJpZCI6IicKICAgIHB1c2hieXRlcyAiXCIsXCJpZFwiOlwiIgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTctMTIyCiAgICAvLyAneyJzdGFuZGFyZCI6ImFyYzY5IiwnCiAgICAvLyAnImRlc2NyaXB0aW9uIjoiVGhpcyBpcyBhIHZvdGluZyByZXN1bHQgTkZUIGZvciB2b3Rpbmcgcm91bmQgd2l0aCBJRCAnCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnLiIsInByb3BlcnRpZXMiOnsibWV0YWRhdGEiOiJpcGZzOi8vJwogICAgLy8gKyBzZWxmLm1ldGFkYXRhX2lwZnNfY2lkCiAgICAvLyArICciLCJpZCI6IicKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTctMTIzCiAgICAvLyAneyJzdGFuZGFyZCI6ImFyYzY5IiwnCiAgICAvLyAnImRlc2NyaXB0aW9uIjoiVGhpcyBpcyBhIHZvdGluZyByZXN1bHQgTkZUIGZvciB2b3Rpbmcgcm91bmQgd2l0aCBJRCAnCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnLiIsInByb3BlcnRpZXMiOnsibWV0YWRhdGEiOiJpcGZzOi8vJwogICAgLy8gKyBzZWxmLm1ldGFkYXRhX2lwZnNfY2lkCiAgICAvLyArICciLCJpZCI6IicKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTI0CiAgICAvLyArICciLCJxdW9ydW0iOicKICAgIHB1c2hieXRlcyAiXCIsXCJxdW9ydW1cIjoiCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExNy0xMjQKICAgIC8vICd7InN0YW5kYXJkIjoiYXJjNjkiLCcKICAgIC8vICciZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICcKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICAvLyArIHNlbGYubWV0YWRhdGFfaXBmc19jaWQKICAgIC8vICsgJyIsImlkIjoiJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJyIsInF1b3J1bSI6JwogICAgY29uY2F0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEyNQogICAgLy8gKyBpdG9hKHNlbGYucXVvcnVtKQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDEyIC8vICJxdW9ydW0iCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucXVvcnVtIGV4aXN0cwogICAgY2FsbHN1YiBpdG9hCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExNy0xMjUKICAgIC8vICd7InN0YW5kYXJkIjoiYXJjNjkiLCcKICAgIC8vICciZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICcKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICAvLyArIHNlbGYubWV0YWRhdGFfaXBmc19jaWQKICAgIC8vICsgJyIsImlkIjoiJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJyIsInF1b3J1bSI6JwogICAgLy8gKyBpdG9hKHNlbGYucXVvcnVtKQogICAgY29uY2F0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEyNgogICAgLy8gKyAnLCJ2b3RlckNvdW50IjonCiAgICBwdXNoYnl0ZXMgIixcInZvdGVyQ291bnRcIjoiCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExNy0xMjYKICAgIC8vICd7InN0YW5kYXJkIjoiYXJjNjkiLCcKICAgIC8vICciZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICcKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICAvLyArIHNlbGYubWV0YWRhdGFfaXBmc19jaWQKICAgIC8vICsgJyIsImlkIjoiJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJyIsInF1b3J1bSI6JwogICAgLy8gKyBpdG9hKHNlbGYucXVvcnVtKQogICAgLy8gKyAnLCJ2b3RlckNvdW50IjonCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTI3CiAgICAvLyArIGl0b2Eoc2VsZi52b3Rlcl9jb3VudCkKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18xIC8vICJ2b3Rlcl9jb3VudCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi52b3Rlcl9jb3VudCBleGlzdHMKICAgIGNhbGxzdWIgaXRvYQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTctMTI3CiAgICAvLyAneyJzdGFuZGFyZCI6ImFyYzY5IiwnCiAgICAvLyAnImRlc2NyaXB0aW9uIjoiVGhpcyBpcyBhIHZvdGluZyByZXN1bHQgTkZUIGZvciB2b3Rpbmcgcm91bmQgd2l0aCBJRCAnCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnLiIsInByb3BlcnRpZXMiOnsibWV0YWRhdGEiOiJpcGZzOi8vJwogICAgLy8gKyBzZWxmLm1ldGFkYXRhX2lwZnNfY2lkCiAgICAvLyArICciLCJpZCI6IicKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICciLCJxdW9ydW0iOicKICAgIC8vICsgaXRvYShzZWxmLnF1b3J1bSkKICAgIC8vICsgJywidm90ZXJDb3VudCI6JwogICAgLy8gKyBpdG9hKHNlbGYudm90ZXJfY291bnQpCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTI4CiAgICAvLyArICcsInRhbGxpZXMiOlsnCiAgICBwdXNoYnl0ZXMgIixcInRhbGxpZXNcIjpbIgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTctMTI4CiAgICAvLyAneyJzdGFuZGFyZCI6ImFyYzY5IiwnCiAgICAvLyAnImRlc2NyaXB0aW9uIjoiVGhpcyBpcyBhIHZvdGluZyByZXN1bHQgTkZUIGZvciB2b3Rpbmcgcm91bmQgd2l0aCBJRCAnCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnLiIsInByb3BlcnRpZXMiOnsibWV0YWRhdGEiOiJpcGZzOi8vJwogICAgLy8gKyBzZWxmLm1ldGFkYXRhX2lwZnNfY2lkCiAgICAvLyArICciLCJpZCI6IicKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICciLCJxdW9ydW0iOicKICAgIC8vICsgaXRvYShzZWxmLnF1b3J1bSkKICAgIC8vICsgJywidm90ZXJDb3VudCI6JwogICAgLy8gKyBpdG9hKHNlbGYudm90ZXJfY291bnQpCiAgICAvLyArICcsInRhbGxpZXMiOlsnCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTMxCiAgICAvLyBjdXJyZW50X2luZGV4ID0gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgc3dhcAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMzIKICAgIC8vIGZvciBxdWVzdGlvbl9pbmRleCwgcXVlc3Rpb25fb3B0aW9ucyBpbiB1ZW51bWVyYXRlKHNlbGYub3B0aW9uX2NvdW50cyk6CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAib3B0aW9uX2NvdW50cyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGNvdmVyIDQKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm9wdGlvbl9jb3VudHMgZXhpc3RzCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgY292ZXIgMgogICAgaW50Y18wIC8vIDAKCmNsb3NlX2Zvcl9oZWFkZXJAMjoKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTMyCiAgICAvLyBmb3IgcXVlc3Rpb25faW5kZXgsIHF1ZXN0aW9uX29wdGlvbnMgaW4gdWVudW1lcmF0ZShzZWxmLm9wdGlvbl9jb3VudHMpOgogICAgZHVwCiAgICBkaWcgNAogICAgPAogICAgYnogY2xvc2VfYWZ0ZXJfZm9yQDE1CiAgICBkaWcgNAogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgYnVyeSA3CiAgICBkaWcgMQogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzEgLy8gMQogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBzd2FwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzMwogICAgLy8gaWYgcXVlc3Rpb25faW5kZXggPiAwOgogICAgYnogY2xvc2VfYWZ0ZXJfaWZfZWxzZUA1CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNAogICAgLy8gbm90ZSArPSAiLCIKICAgIHVuY292ZXIgMgogICAgcHVzaGJ5dGVzICIsIgogICAgY29uY2F0CiAgICBjb3ZlciAyCgpjbG9zZV9hZnRlcl9pZl9lbHNlQDU6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNQogICAgLy8gaWYgcXVlc3Rpb25fb3B0aW9ucyA+IDA6CiAgICBwdXNoYnl0ZXMgMHgwMAogICAgYj4KICAgIGJ6IGNsb3NlX2FmdGVyX2lmX2Vsc2VAMTMKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTM2CiAgICAvLyBub3RlICs9ICJbIgogICAgc3dhcAogICAgcHVzaGJ5dGVzICJbIgogICAgY29uY2F0CiAgICBzd2FwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNwogICAgLy8gZm9yIG9wdGlvbl9pbmRleCBpbiB1cmFuZ2UocXVlc3Rpb25fb3B0aW9ucy5hc191aW50NjQoKSk6CiAgICBkaWcgNQogICAgZGlnIDEKICAgIGdldGJ5dGUKICAgIGNvdmVyIDIKICAgIGludGNfMCAvLyAwCgpjbG9zZV9mb3JfaGVhZGVyQDc6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNwogICAgLy8gZm9yIG9wdGlvbl9pbmRleCBpbiB1cmFuZ2UocXVlc3Rpb25fb3B0aW9ucy5hc191aW50NjQoKSk6CiAgICBkdXAKICAgIGRpZyA0CiAgICA8CiAgICBieiBjbG9zZV9hZnRlcl9mb3JAMTIKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTM4CiAgICAvLyBpZiBvcHRpb25faW5kZXggPiAwOgogICAgZHVwCiAgICBieiBjbG9zZV9hZnRlcl9pZl9lbHNlQDEwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzOQogICAgLy8gbm90ZSArPSAiLCIKICAgIHVuY292ZXIgMgogICAgcHVzaGJ5dGVzICIsIgogICAgY29uY2F0CiAgICBjb3ZlciAyCgpjbG9zZV9hZnRlcl9pZl9lbHNlQDEwOgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNDEKICAgIC8vIHJldHVybiBvcC5idG9pKHNlbGYudGFsbHlfYm94LmV4dHJhY3QoaW5kZXgsIFZPVEVfQ09VTlRfQllURVMpKQogICAgYnl0ZWNfMyAvLyAiViIKICAgIHVuY292ZXIgNQogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzMgLy8gOAogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQxCiAgICAvLyBub3RlICs9IGl0b2Eodm90ZXNfZm9yX29wdGlvbikKICAgIGNhbGxzdWIgaXRvYQogICAgdW5jb3ZlciA0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGNvdmVyIDMKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQyCiAgICAvLyBjdXJyZW50X2luZGV4ICs9IDEKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBjb3ZlciA0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNwogICAgLy8gZm9yIG9wdGlvbl9pbmRleCBpbiB1cmFuZ2UocXVlc3Rpb25fb3B0aW9ucy5hc191aW50NjQoKSk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgYiBjbG9zZV9mb3JfaGVhZGVyQDcKCmNsb3NlX2FmdGVyX2ZvckAxMjoKICAgIHBvcAogICAgdW5jb3ZlciAyCiAgICBwb3AKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQzCiAgICAvLyBub3RlICs9ICJdIgogICAgc3dhcAogICAgcHVzaGJ5dGVzICJdIgogICAgY29uY2F0CiAgICBzd2FwCgpjbG9zZV9hZnRlcl9pZl9lbHNlQDEzOgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGIgY2xvc2VfZm9yX2hlYWRlckAyCgpjbG9zZV9hZnRlcl9mb3JAMTU6CiAgICBwb3AKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQ0CiAgICAvLyBub3RlICs9ICJdfX0iCiAgICBwdXNoYnl0ZXMgIl19fSIKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNDYtMTU2CiAgICAvLyBpdHhuLkFzc2V0Q29uZmlnKAogICAgLy8gICAgIHRvdGFsPTEsCiAgICAvLyAgICAgZGVjaW1hbHM9MCwKICAgIC8vICAgICBkZWZhdWx0X2Zyb3plbj1GYWxzZSwKICAgIC8vICAgICBhc3NldF9uYW1lPSJbVk9URSBSRVNVTFRdICIgKyBzZWxmLnZvdGVfaWQsCiAgICAvLyAgICAgdW5pdF9uYW1lPSJWT1RFUlNMVCIsCiAgICAvLyAgICAgdXJsPXNlbGYubmZ0X2ltYWdlX3VybCwKICAgIC8vICAgICBub3RlPW5vdGUsCiAgICAvLyAgICAgZmVlPUdsb2JhbC5taW5fdHhuX2ZlZSwKICAgIC8vICkKICAgIC8vIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNTQKICAgIC8vIGZlZT1HbG9iYWwubWluX3R4bl9mZWUsCiAgICBnbG9iYWwgTWluVHhuRmVlCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE1MAogICAgLy8gYXNzZXRfbmFtZT0iW1ZPVEUgUkVTVUxUXSAiICsgc2VsZi52b3RlX2lkLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gInZvdGVfaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90ZV9pZCBleGlzdHMKICAgIHB1c2hieXRlcyAiW1ZPVEUgUkVTVUxUXSAiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTUyCiAgICAvLyB1cmw9c2VsZi5uZnRfaW1hZ2VfdXJsLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDEzIC8vICJuZnRfaW1hZ2VfdXJsIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm5mdF9pbWFnZV91cmwgZXhpc3RzCiAgICB1bmNvdmVyIDMKICAgIGl0eG5fZmllbGQgTm90ZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVSTAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNTEKICAgIC8vIHVuaXRfbmFtZT0iVk9URVJTTFQiLAogICAgcHVzaGJ5dGVzICJWT1RFUlNMVCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE5hbWUKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQ5CiAgICAvLyBkZWZhdWx0X2Zyb3plbj1GYWxzZSwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVmYXVsdEZyb3plbgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNDgKICAgIC8vIGRlY2ltYWxzPTAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlY2ltYWxzCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0NwogICAgLy8gdG90YWw9MSwKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQ2CiAgICAvLyBpdHhuLkFzc2V0Q29uZmlnKAogICAgcHVzaGludCAzIC8vIGFjZmcKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0Ni0xNTYKICAgIC8vIGl0eG4uQXNzZXRDb25maWcoCiAgICAvLyAgICAgdG90YWw9MSwKICAgIC8vICAgICBkZWNpbWFscz0wLAogICAgLy8gICAgIGRlZmF1bHRfZnJvemVuPUZhbHNlLAogICAgLy8gICAgIGFzc2V0X25hbWU9IltWT1RFIFJFU1VMVF0gIiArIHNlbGYudm90ZV9pZCwKICAgIC8vICAgICB1bml0X25hbWU9IlZPVEVSU0xUIiwKICAgIC8vICAgICB1cmw9c2VsZi5uZnRfaW1hZ2VfdXJsLAogICAgLy8gICAgIG5vdGU9bm90ZSwKICAgIC8vICAgICBmZWU9R2xvYmFsLm1pbl90eG5fZmVlLAogICAgLy8gKQogICAgLy8gLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNDUKICAgIC8vIHNlbGYubmZ0X2Fzc2V0X2lkID0gKAogICAgcHVzaGJ5dGVzICJuZnRfYXNzZXRfaWQiCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0Ni0xNTcKICAgIC8vIGl0eG4uQXNzZXRDb25maWcoCiAgICAvLyAgICAgdG90YWw9MSwKICAgIC8vICAgICBkZWNpbWFscz0wLAogICAgLy8gICAgIGRlZmF1bHRfZnJvemVuPUZhbHNlLAogICAgLy8gICAgIGFzc2V0X25hbWU9IltWT1RFIFJFU1VMVF0gIiArIHNlbGYudm90ZV9pZCwKICAgIC8vICAgICB1bml0X25hbWU9IlZPVEVSU0xUIiwKICAgIC8vICAgICB1cmw9c2VsZi5uZnRfaW1hZ2VfdXJsLAogICAgLy8gICAgIG5vdGU9bm90ZSwKICAgIC8vICAgICBmZWU9R2xvYmFsLm1pbl90eG5fZmVlLAogICAgLy8gKQogICAgLy8gLnN1Ym1pdCgpCiAgICAvLyAuY3JlYXRlZF9hc3NldC5pZAogICAgaXR4biBDcmVhdGVkQXNzZXRJRAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNDUtMTU4CiAgICAvLyBzZWxmLm5mdF9hc3NldF9pZCA9ICgKICAgIC8vICAgICBpdHhuLkFzc2V0Q29uZmlnKAogICAgLy8gICAgICAgICB0b3RhbD0xLAogICAgLy8gICAgICAgICBkZWNpbWFscz0wLAogICAgLy8gICAgICAgICBkZWZhdWx0X2Zyb3plbj1GYWxzZSwKICAgIC8vICAgICAgICAgYXNzZXRfbmFtZT0iW1ZPVEUgUkVTVUxUXSAiICsgc2VsZi52b3RlX2lkLAogICAgLy8gICAgICAgICB1bml0X25hbWU9IlZPVEVSU0xUIiwKICAgIC8vICAgICAgICAgdXJsPXNlbGYubmZ0X2ltYWdlX3VybCwKICAgIC8vICAgICAgICAgbm90ZT1ub3RlLAogICAgLy8gICAgICAgICBmZWU9R2xvYmFsLm1pbl90eG5fZmVlLAogICAgLy8gICAgICkKICAgIC8vICAgICAuc3VibWl0KCkKICAgIC8vICAgICAuY3JlYXRlZF9hc3NldC5pZAogICAgLy8gKQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTEwCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBleGFtcGxlcy52b3Rpbmcudm90aW5nLlZvdGluZ1JvdW5kQXBwLmdldF9wcmVjb25kaXRpb25zW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X3ByZWNvbmRpdGlvbnM6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE2MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjMKICAgIC8vIGlzX3ZvdGluZ19vcGVuPWFyYzQuVUludDY0KHNlbGYudm90aW5nX29wZW4oKSksCiAgICBjYWxsc3ViIHZvdGluZ19vcGVuCiAgICBpdG9iCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE2NAogICAgLy8gaXNfYWxsb3dlZF90b192b3RlPWFyYzQuVUludDY0KHNlbGYuYWxsb3dlZF90b192b3RlKHNpZ25hdHVyZSkpLAogICAgc3dhcAogICAgY2FsbHN1YiBhbGxvd2VkX3RvX3ZvdGUKICAgIGl0b2IKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjE1CiAgICAvLyByZXR1cm4gVHhuLnNlbmRlciBpbiBzZWxmLnZvdGVzX2J5X2FjY291bnQKICAgIHR4biBTZW5kZXIKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjUKICAgIC8vIGhhc19hbHJlYWR5X3ZvdGVkPWFyYzQuVUludDY0KHNlbGYuYWxyZWFkeV92b3RlZCgpKSwKICAgIGl0b2IKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTY2CiAgICAvLyBjdXJyZW50X3RpbWU9YXJjNC5VSW50NjQoR2xvYmFsLmxhdGVzdF90aW1lc3RhbXApLAogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgaXRvYgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjItMTY3CiAgICAvLyByZXR1cm4gVm90aW5nUHJlY29uZGl0aW9ucygKICAgIC8vICAgICBpc192b3Rpbmdfb3Blbj1hcmM0LlVJbnQ2NChzZWxmLnZvdGluZ19vcGVuKCkpLAogICAgLy8gICAgIGlzX2FsbG93ZWRfdG9fdm90ZT1hcmM0LlVJbnQ2NChzZWxmLmFsbG93ZWRfdG9fdm90ZShzaWduYXR1cmUpKSwKICAgIC8vICAgICBoYXNfYWxyZWFkeV92b3RlZD1hcmM0LlVJbnQ2NChzZWxmLmFscmVhZHlfdm90ZWQoKSksCiAgICAvLyAgICAgY3VycmVudF90aW1lPWFyYzQuVUludDY0KEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wKSwKICAgIC8vICkKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTYwCiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGV4YW1wbGVzLnZvdGluZy52b3RpbmcuVm90aW5nUm91bmRBcHAudm90ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZvdGU6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE2OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG4gR3JvdXBJbmRleAogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIGR1cAogICAgZ3R4bnMgVHlwZUVudW0KICAgIGludGNfMSAvLyBwYXkKICAgID09CiAgICBhc3NlcnQgLy8gdHJhbnNhY3Rpb24gdHlwZSBpcyBwYXkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGNvdmVyIDMKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGR1cAogICAgaW50Y18yIC8vIDIKICAgICsKICAgIHVuY292ZXIgMgogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTc2CiAgICAvLyBlbnN1cmVfYnVkZ2V0KDc3MDAsIGZlZV9zb3VyY2U9T3BVcEZlZVNvdXJjZS5Hcm91cENyZWRpdCkKICAgIHB1c2hpbnQgNzcwMAogICAgaW50Y18wIC8vIDAKICAgIGNhbGxzdWIgZW5zdXJlX2J1ZGdldAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNzctMTc4CiAgICAvLyAjIENoZWNrIHZvdGluZyBwcmVjb25kaXRpb25zCiAgICAvLyBhc3NlcnQgc2VsZi5hbGxvd2VkX3RvX3ZvdGUoc2lnbmF0dXJlKSwgIk5vdCBhbGxvd2VkIHRvIHZvdGUiCiAgICBzd2FwCiAgICBjYWxsc3ViIGFsbG93ZWRfdG9fdm90ZQogICAgYXNzZXJ0IC8vIE5vdCBhbGxvd2VkIHRvIHZvdGUKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTc5CiAgICAvLyBhc3NlcnQgc2VsZi52b3Rpbmdfb3BlbigpLCAiVm90aW5nIG5vdCBvcGVuIgogICAgY2FsbHN1YiB2b3Rpbmdfb3BlbgogICAgYXNzZXJ0IC8vIFZvdGluZyBub3Qgb3BlbgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMTUKICAgIC8vIHJldHVybiBUeG4uc2VuZGVyIGluIHNlbGYudm90ZXNfYnlfYWNjb3VudAogICAgdHhuIFNlbmRlcgogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE4MAogICAgLy8gYXNzZXJ0IG5vdCBzZWxmLmFscmVhZHlfdm90ZWQoKSwgIkFscmVhZHkgdm90ZWQiCiAgICAhCiAgICBhc3NlcnQgLy8gQWxyZWFkeSB2b3RlZAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxODEKICAgIC8vIHF1ZXN0aW9uc19jb3VudCA9IHNlbGYub3B0aW9uX2NvdW50cy5sZW5ndGgKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJvcHRpb25fY291bnRzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm9wdGlvbl9jb3VudHMgZXhpc3RzCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgZHVwCiAgICBjb3ZlciAzCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE4MgogICAgLy8gYXNzZXJ0IGFuc3dlcl9pZHMubGVuZ3RoID09IHF1ZXN0aW9uc19jb3VudCwgIk51bWJlciBvZiBhbnN3ZXJzIGluY29ycmVjdCIKICAgIGRpZyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIE51bWJlciBvZiBhbnN3ZXJzIGluY29ycmVjdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxODUKICAgIC8vICgzMiArIDIgKyBWT1RFX0lOREVYX0JZVEVTICogYW5zd2VyX2lkcy5sZW5ndGgpICogQk9YX0JZVEVfTUlOX0JBTEFOQ0UKICAgIHB1c2hpbnQgMzQKICAgICsKICAgIHB1c2hpbnQgNDAwCiAgICAqCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE4My0xODQKICAgIC8vICMgQ2hlY2sgdm90ZXIgYm94IGlzIGZ1bmRlZAogICAgLy8gbWluX2JhbF9yZXEgPSBCT1hfRkxBVF9NSU5fQkFMQU5DRSArICgKICAgIHB1c2hpbnQgMjUwMAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxODMtMTg2CiAgICAvLyAjIENoZWNrIHZvdGVyIGJveCBpcyBmdW5kZWQKICAgIC8vIG1pbl9iYWxfcmVxID0gQk9YX0ZMQVRfTUlOX0JBTEFOQ0UgKyAoCiAgICAvLyAgICAgKDMyICsgMiArIFZPVEVfSU5ERVhfQllURVMgKiBhbnN3ZXJfaWRzLmxlbmd0aCkgKiBCT1hfQllURV9NSU5fQkFMQU5DRQogICAgLy8gKQogICAgKwogICAgLy8gdm90aW5nL3ZvdGluZy5weToxODgKICAgIC8vIGZ1bmRfbWluX2JhbF9yZXEucmVjZWl2ZXIgPT0gR2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcwogICAgZGlnIDEKICAgIGd0eG5zIFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTg3LTE4OQogICAgLy8gYXNzZXJ0ICgKICAgIC8vICAgICBmdW5kX21pbl9iYWxfcmVxLnJlY2VpdmVyID09IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MKICAgIC8vICksICJQYXltZW50IG11c3QgYmUgdG8gYXBwIGFkZHJlc3MiCiAgICBhc3NlcnQgLy8gUGF5bWVudCBtdXN0IGJlIHRvIGFwcCBhZGRyZXNzCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE5MQogICAgLy8gbG9nKG1pbl9iYWxfcmVxKQogICAgZHVwCiAgICBpdG9iCiAgICBsb2cKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTkyCiAgICAvLyBhc3NlcnQgZnVuZF9taW5fYmFsX3JlcS5hbW91bnQgPT0gbWluX2JhbF9yZXEsICJQYXltZW50IG11c3QgYmUgdGhlIGV4YWN0IG1pbiBiYWxhbmNlIgogICAgc3dhcAogICAgZ3R4bnMgQW1vdW50CiAgICA9PQogICAgYXNzZXJ0IC8vIFBheW1lbnQgbXVzdCBiZSB0aGUgZXhhY3QgbWluIGJhbGFuY2UKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTkzLTE5NAogICAgLy8gIyBSZWNvcmQgdGhlIHZvdGUgZm9yIGVhY2ggcXVlc3Rpb24KICAgIC8vIGN1bXVsYXRpdmVfb2Zmc2V0ID0gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxOTUKICAgIC8vIGZvciBxdWVzdGlvbl9pbmRleCBpbiB1cmFuZ2UocXVlc3Rpb25zX2NvdW50KToKICAgIGR1cAoKdm90ZV9mb3JfaGVhZGVyQDI6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE5NQogICAgLy8gZm9yIHF1ZXN0aW9uX2luZGV4IGluIHVyYW5nZShxdWVzdGlvbnNfY291bnQpOgogICAgZHVwCiAgICBkaWcgMwogICAgPAogICAgYnogdm90ZV9hZnRlcl9mb3JANQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxOTYtMTk3CiAgICAvLyAjIExvYWQgdGhlIHVzZXIncyB2b3RlIGZvciB0aGlzIHF1ZXN0aW9uCiAgICAvLyBhbnN3ZXJfb3B0aW9uX2luZGV4ID0gYW5zd2VyX2lkc1txdWVzdGlvbl9pbmRleF0uYXNfdWludDY0KCkKICAgIGRpZyAzCiAgICBkdXAKICAgIGV4dHJhY3QgMiAwCiAgICB1bmNvdmVyIDIKICAgIGR1cAogICAgY292ZXIgMgogICAgZ2V0Ynl0ZQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxOTgKICAgIC8vIG9wdGlvbnNfY291bnQgPSBzZWxmLm9wdGlvbl9jb3VudHNbcXVlc3Rpb25faW5kZXhdLmFzX3VpbnQ2NCgpCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAib3B0aW9uX2NvdW50cyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5vcHRpb25fY291bnRzIGV4aXN0cwogICAgZXh0cmFjdCAyIDAKICAgIGRpZyAyCiAgICBnZXRieXRlCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE5OQogICAgLy8gYXNzZXJ0IGFuc3dlcl9vcHRpb25faW5kZXggPCBvcHRpb25zX2NvdW50LCAiQW5zd2VyIG9wdGlvbiBpbmRleCBpbnZhbGlkIgogICAgZHVwMgogICAgPAogICAgYXNzZXJ0IC8vIEFuc3dlciBvcHRpb24gaW5kZXggaW52YWxpZAogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMDAKICAgIC8vIHNlbGYuaW5jcmVtZW50X3ZvdGVfaW5fYm94KGN1bXVsYXRpdmVfb2Zmc2V0ICsgYW5zd2VyX29wdGlvbl9pbmRleCkKICAgIHVuY292ZXIgNAogICAgZHVwCiAgICBjb3ZlciAyCiAgICB1bmNvdmVyIDMKICAgICsKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjQxCiAgICAvLyByZXR1cm4gb3AuYnRvaShzZWxmLnRhbGx5X2JveC5leHRyYWN0KGluZGV4LCBWT1RFX0NPVU5UX0JZVEVTKSkKICAgIGJ5dGVjXzMgLy8gIlYiCiAgICBkaWcgMQogICAgaW50Y18zIC8vIDgKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI0NgogICAgLy8gc2VsZi50YWxseV9ib3gucmVwbGFjZShpbmRleCwgb3AuaXRvYihjdXJyZW50X3ZvdGUgKyAxKSkKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBpdG9iCiAgICBieXRlY18zIC8vICJWIgogICAgY292ZXIgMgogICAgYm94X3JlcGxhY2UKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjAxCiAgICAvLyBjdW11bGF0aXZlX29mZnNldCArPSBvcHRpb25zX2NvdW50CiAgICArCiAgICBjb3ZlciAyCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIwMgogICAgLy8gc2VsZi52b3Rlc19ieV9hY2NvdW50W1R4bi5zZW5kZXJdID0gYW5zd2VyX2lkcy5jb3B5KCkKICAgIHR4biBTZW5kZXIKICAgIGR1cAogICAgYm94X2RlbAogICAgcG9wCiAgICB1bmNvdmVyIDIKICAgIGJveF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjAzCiAgICAvLyBzZWxmLnZvdGVyX2NvdW50ICs9IDEKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18xIC8vICJ2b3Rlcl9jb3VudCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi52b3Rlcl9jb3VudCBleGlzdHMKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBieXRlY18xIC8vICJ2b3Rlcl9jb3VudCIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE5NQogICAgLy8gZm9yIHF1ZXN0aW9uX2luZGV4IGluIHVyYW5nZShxdWVzdGlvbnNfY291bnQpOgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGIgdm90ZV9mb3JfaGVhZGVyQDIKCnZvdGVfYWZ0ZXJfZm9yQDU6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE2OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gZXhhbXBsZXMudm90aW5nLnZvdGluZy5Wb3RpbmdSb3VuZEFwcC52b3Rpbmdfb3BlbigpIC0+IHVpbnQ2NDoKdm90aW5nX29wZW46CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIwNS0yMDYKICAgIC8vIEBzdWJyb3V0aW5lCiAgICAvLyBkZWYgdm90aW5nX29wZW4oc2VsZikgLT4gYm9vbDoKICAgIHByb3RvIDAgMQogICAgcHVzaGJ5dGVzICIiCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIwOAogICAgLy8gc2VsZi5pc19ib290c3RyYXBwZWQKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJpc19ib290c3RyYXBwZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaXNfYm9vdHN0cmFwcGVkIGV4aXN0cwogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMDgtMjEwCiAgICAvLyBzZWxmLmlzX2Jvb3RzdHJhcHBlZAogICAgLy8gYW5kIG5vdCBzZWxmLmNsb3NlX3RpbWUKICAgIC8vIGFuZCBzZWxmLnN0YXJ0X3RpbWUgPD0gR2xvYmFsLmxhdGVzdF90aW1lc3RhbXAgPD0gc2VsZi5lbmRfdGltZQogICAgYnogdm90aW5nX29wZW5fYm9vbF9mYWxzZUA1CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIwOQogICAgLy8gYW5kIG5vdCBzZWxmLmNsb3NlX3RpbWUKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA1IC8vICJjbG9zZV90aW1lIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGJ1cnkgMQogICAgYm56IHZvdGluZ19vcGVuX2Jvb2xfZmFsc2VANQogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMTAKICAgIC8vIGFuZCBzZWxmLnN0YXJ0X3RpbWUgPD0gR2xvYmFsLmxhdGVzdF90aW1lc3RhbXAgPD0gc2VsZi5lbmRfdGltZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDEwIC8vICJzdGFydF90aW1lIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnN0YXJ0X3RpbWUgZXhpc3RzCiAgICBnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCiAgICBkdXAKICAgIGZyYW1lX2J1cnkgMAogICAgPD0KICAgIGJ6IHZvdGluZ19vcGVuX2Jvb2xfZmFsc2VANQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDExIC8vICJlbmRfdGltZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5lbmRfdGltZSBleGlzdHMKICAgIGZyYW1lX2RpZyAwCiAgICA+PQogICAgYnogdm90aW5nX29wZW5fYm9vbF9mYWxzZUA1CiAgICBpbnRjXzEgLy8gMQoKdm90aW5nX29wZW5fYm9vbF9tZXJnZUA2OgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMDctMjExCiAgICAvLyByZXR1cm4gKAogICAgLy8gICAgIHNlbGYuaXNfYm9vdHN0cmFwcGVkCiAgICAvLyAgICAgYW5kIG5vdCBzZWxmLmNsb3NlX3RpbWUKICAgIC8vICAgICBhbmQgc2VsZi5zdGFydF90aW1lIDw9IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wIDw9IHNlbGYuZW5kX3RpbWUKICAgIC8vICkKICAgIHN3YXAKICAgIHJldHN1YgoKdm90aW5nX29wZW5fYm9vbF9mYWxzZUA1OgogICAgaW50Y18wIC8vIDAKICAgIGIgdm90aW5nX29wZW5fYm9vbF9tZXJnZUA2CgoKLy8gZXhhbXBsZXMudm90aW5nLnZvdGluZy5Wb3RpbmdSb3VuZEFwcC5hbGxvd2VkX3RvX3ZvdGUoc2lnbmF0dXJlOiBieXRlcykgLT4gdWludDY0OgphbGxvd2VkX3RvX3ZvdGU6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIzMC0yMzEKICAgIC8vIEBzdWJyb3V0aW5lCiAgICAvLyBkZWYgYWxsb3dlZF90b192b3RlKHNlbGYsIHNpZ25hdHVyZTogQnl0ZXMpIC0+IGJvb2w6CiAgICBwcm90byAxIDEKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjMyCiAgICAvLyBlbnN1cmVfYnVkZ2V0KDIwMDApCiAgICBwdXNoaW50IDIwMDAKICAgIGludGNfMCAvLyAwCiAgICBjYWxsc3ViIGVuc3VyZV9idWRnZXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjM0CiAgICAvLyBUeG4uc2VuZGVyLmJ5dGVzLAogICAgdHhuIFNlbmRlcgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMzYKICAgIC8vIHNlbGYuc25hcHNob3RfcHVibGljX2tleSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA4IC8vICJzbmFwc2hvdF9wdWJsaWNfa2V5IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnNuYXBzaG90X3B1YmxpY19rZXkgZXhpc3RzCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIzMy0yMzcKICAgIC8vIHJldHVybiBvcC5lZDI1NTE5dmVyaWZ5X2JhcmUoCiAgICAvLyAgICAgVHhuLnNlbmRlci5ieXRlcywKICAgIC8vICAgICBzaWduYXR1cmUsCiAgICAvLyAgICAgc2VsZi5zbmFwc2hvdF9wdWJsaWNfa2V5LAogICAgLy8gKQogICAgZnJhbWVfZGlnIC0xCiAgICBzd2FwCiAgICBlZDI1NTE5dmVyaWZ5X2JhcmUKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAAECCCYPD2lzX2Jvb3RzdHJhcHBlZAt2b3Rlcl9jb3VudA1vcHRpb25fY291bnRzAVYHdm90ZV9pZApjbG9zZV90aW1lAwaBAQowMTIzNDU2Nzg5E3NuYXBzaG90X3B1YmxpY19rZXkRbWV0YWRhdGFfaXBmc19jaWQKc3RhcnRfdGltZQhlbmRfdGltZQZxdW9ydW0NbmZ0X2ltYWdlX3VybA10b3RhbF9vcHRpb25zMRhAAAYoImcpImcxGRREMRhBACSCBASk6NFkBJZWBHoEvLFYlgSEpTxuNhoAjgQBPQF3A0oDgQCABK6Jf2s2GgCOAQBhAIoCAIv+gQoISTIMDUEAKrGBBrIQgQWyGScGsh4nBrIfi/+NAgALAASzQv/cMgCyAUL/9SKyAUL/74mKAQGL/4EKDEEABycHi/8jWImL/4EKCoj/5ov/gQoYJwdMI1hQiTYaAUkiWSQISwEVEkRXAgA2GgJJIlkkCEsBFRJEVwIANhoDSSJZJAhLARUSRFcCADYaBEkVJRJEFzYaBUkVJRJEFzYaBklOBkkiWUlOCEkkCE8CFRJENhoHSRUlEkQXNhoISSJZJAhLARUSRFcCAEsESwQMREsDMgcPRCcETwhnJwhPB2cnCU8GZycKTwVnJwtPBGcnDE8CZycNTGdJRIFwDkQiSUlLBAxBABFLAlcCAEsBVU8CCEwjCEL/6EhJgYABDkQqTwJnJw5MZyNDMRYjCUk4ECMSRCIoZUQURCgjZ0k4BzIKEkQiJw5lRCULSYGQAwuB/LgMCEkWsE8COAgSRCtMuUQjQyKBoJwBIoj+jyInBWVFARREJwUyB2ciJwRlRIBYeyJzdGFuZGFyZCI6ImFyYzY5IiwiZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEIEsBUIAkLiIsInByb3BlcnRpZXMiOnsibWV0YWRhdGEiOiJpcGZzOi8vUCInCWVEUIAIIiwiaWQiOiJQTFCACyIsInF1b3J1bSI6UCInDGVEiP4KUIAOLCJ2b3RlckNvdW50IjpQIillRIj98VCADCwidGFsbGllcyI6W1AiTCIqZUxJTgJOBEQiWU4CIklLBAxBAG1LBFcCAElFB0sBSU4CI1hMQQAITwKAASxQTgKAAQClQQBGTIABW1BMSwVLAVVOAiJJSwQMQQAnSUEACE8CgAEsUE4CK08FSU4CJboXiP16TwRMUE4DIwhOBCMIQv/SSE8CSEyAAV1QTCMIQv+MSIADXX19ULEyACInBGVEgA5bVk9URSBSRVNVTFRdIExQIicNZURPA7IFsieACFZPVEVSU0xUsiWyJiKyJCKyIyOyIoEDshCyAbOADG5mdF9hc3NldF9pZLQ8ZyNDNhoBSSJZJAhLARUSRFcCAIgA4BZMiAEQFjEAvUUBFjIHFk8DTwNQTwJQTFCABBUffHVMULAjQzEWIwlJOBAjEkQ2GgFJIlkkCEsBFRJEVwIANhoCSU4DSSJZSSQITwIVEkSBlDwiiPxcTIgAu0SIAIJEMQC9RQEURCIqZUQiWUlOA0sBEkSBIgiBkAMLgcQTCEsBOAcyChJESRawTDgIEkQiSUlLAwxBAEdLA0lXAgBPAklOAlUiKmVEVwIASwJVSgxETwRJTgJPAwgrSwEluhcjCBYrTgK7CE4CMQBJvEhPAr8iKWVEIwgpTGcjCEL/siNDigABgAAiKGVEQQAlIicFZUUBQAAcIicKZUQyB0mMAA5BAA4iJwtlRIsAD0EAAyNMiSJC//qKAQGB0A8iiPuTMQAiJwhlRIv/TISJ", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }