{ "name": "BusTracker", "structs": {}, "methods": [ { "name": "create_tracking_access", "args": [ { "type": "pay", "name": "pay_txn" }, { "type": "byte[]", "name": "bus_id" }, { "type": "byte[]", "name": "route_id" }, { "type": "uint64", "name": "duration_seconds" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "is_tracking_access_valid", "args": [ { "type": "address", "name": "user" }, { "type": "byte[]", "name": "bus_id" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_tracking_access", "args": [ { "type": "address", "name": "user" }, { "type": "byte[]", "name": "bus_id" } ], "returns": { "type": "(uint64,uint64,byte[])" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "expire_tracking_access", "args": [ { "type": "address", "name": "user" }, { "type": "byte[]", "name": "bus_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "record_user_activity", "args": [ { "type": "byte[]", "name": "activity_type" }, { "type": "byte[]", "name": "bus_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "expiry_times": { "keyType": "AVMBytes", "valueType": "uint64", "prefix": "ZXhw" }, "start_times": { "keyType": "AVMBytes", "valueType": "uint64", "prefix": "c3RhcnQ=" }, "route_ids": { "keyType": "AVMBytes", "valueType": "AVMBytes", "prefix": "cm91dGU=" }, "activities": { "keyType": "AVMBytes", "valueType": "AVMBytes", "prefix": "YWN0" } } } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 175 ], "errorMessage": "Incorrect payment amount for tracking duration" }, { "pc": [ 158 ], "errorMessage": "Payment receiver must be app address" }, { "pc": [ 376 ], "errorMessage": "check self.route_ids entry exists" }, { "pc": [ 369 ], "errorMessage": "check self.start_times entry exists" }, { "pc": [ 109, 127, 247, 305, 399, 468, 484 ], "errorMessage": "invalid array length header" }, { "pc": [ 116, 134, 254, 312, 406, 475, 491 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 241, 299, 393 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 148 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 103 ], "errorMessage": "transaction type is pay" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgMiAzMgogICAgYnl0ZWNibG9jayAweDY1Nzg3MCAweDczNzQ2MTcyNzQgMHg3MjZmNzU3NDY1IDB4MTUxZjdjNzUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo0CiAgICAvLyBjbGFzcyBCdXNUcmFja2VyKEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxNAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4Zjg1ODFlOWMgMHhjYmQyN2M4MSAweGM5N2IxNDgzIDB4ZDc2YzE4MGEgMHgxMDA0MjJjNCAvLyBtZXRob2QgImNyZWF0ZV90cmFja2luZ19hY2Nlc3MocGF5LGJ5dGVbXSxieXRlW10sdWludDY0KXZvaWQiLCBtZXRob2QgImlzX3RyYWNraW5nX2FjY2Vzc192YWxpZChhZGRyZXNzLGJ5dGVbXSl1aW50NjQiLCBtZXRob2QgImdldF90cmFja2luZ19hY2Nlc3MoYWRkcmVzcyxieXRlW10pKHVpbnQ2NCx1aW50NjQsYnl0ZVtdKSIsIG1ldGhvZCAiZXhwaXJlX3RyYWNraW5nX2FjY2VzcyhhZGRyZXNzLGJ5dGVbXSl2b2lkIiwgbWV0aG9kICJyZWNvcmRfdXNlcl9hY3Rpdml0eShieXRlW10sYnl0ZVtdKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBjcmVhdGVfdHJhY2tpbmdfYWNjZXNzIGlzX3RyYWNraW5nX2FjY2Vzc192YWxpZCBnZXRfdHJhY2tpbmdfYWNjZXNzIGV4cGlyZV90cmFja2luZ19hY2Nlc3MgcmVjb3JkX3VzZXJfYWN0aXZpdHkKICAgIGVycgoKbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxNDoKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmJ1c190cmFja2VyLmNvbnRyYWN0LkJ1c1RyYWNrZXIuY3JlYXRlX3RyYWNraW5nX2FjY2Vzc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CmNyZWF0ZV90cmFja2luZ19hY2Nlc3M6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6MTEKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXBuIDIKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgY292ZXIgMgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIGNvdmVyIDMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjE5LTIwCiAgICAvLyAjIDEuIFZlcmlmeSB0aGUgcGF5bWVudCB0cmFuc2FjdGlvbiBpcyBjb3JyZWN0CiAgICAvLyBhc3NlcnQgcGF5X3R4bi5yZWNlaXZlciA9PSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLCAiUGF5bWVudCByZWNlaXZlciBtdXN0IGJlIGFwcCBhZGRyZXNzIgogICAgZ3R4bnMgUmVjZWl2ZXIKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIFBheW1lbnQgcmVjZWl2ZXIgbXVzdCBiZSBhcHAgYWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjI3CiAgICAvLyBpZiBkdXJhdGlvbl9zZWNvbmRzIDw9IDkwMDoKICAgIHB1c2hpbnQgOTAwCiAgICA8PQogICAgYnogY3JlYXRlX3RyYWNraW5nX2FjY2Vzc19lbHNlX2JvZHlAMwogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjI4CiAgICAvLyBleHBlY3RlZF9wcmljZSA9IFVJbnQ2NCgxMDBfMDAwKQogICAgcHVzaGludCAxMDAwMDAKCmNyZWF0ZV90cmFja2luZ19hY2Nlc3NfYWZ0ZXJfaWZfZWxzZUA3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjM0CiAgICAvLyBhc3NlcnQgcGF5X3R4bi5hbW91bnQgPj0gZXhwZWN0ZWRfcHJpY2UsICJJbmNvcnJlY3QgcGF5bWVudCBhbW91bnQgZm9yIHRyYWNraW5nIGR1cmF0aW9uIgogICAgdW5jb3ZlciAyCiAgICBndHhucyBBbW91bnQKICAgIDw9CiAgICBhc3NlcnQgLy8gSW5jb3JyZWN0IHBheW1lbnQgYW1vdW50IGZvciB0cmFja2luZyBkdXJhdGlvbgogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjM2LTM3CiAgICAvLyAjIDMuIFN0b3JlIGF1dGhvcml6YXRpb24gZGV0YWlscwogICAgLy8ga2V5ID0gVHhuLnNlbmRlci5ieXRlcyArIGJ1c19pZAogICAgdHhuIFNlbmRlcgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTozOAogICAgLy8gc2VsZi5leHBpcnlfdGltZXNba2V5XSA9IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wICsgZHVyYXRpb25fc2Vjb25kcwogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgdW5jb3ZlciAyCiAgICArCiAgICBieXRlY18wIC8vIDB4NjU3ODcwCiAgICBkaWcgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6MzkKICAgIC8vIHNlbGYuc3RhcnRfdGltZXNba2V5XSA9IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wCiAgICBnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCiAgICBieXRlY18xIC8vIDB4NzM3NDYxNzI3NAogICAgZGlnIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjQwCiAgICAvLyBzZWxmLnJvdXRlX2lkc1trZXldID0gcm91dGVfaWQKICAgIGJ5dGVjXzIgLy8gMHg3MjZmNzU3NDY1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgYm94X2RlbAogICAgcG9wCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6MTEKICAgIC8vIEBhYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKY3JlYXRlX3RyYWNraW5nX2FjY2Vzc19lbHNlX2JvZHlAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weToyOQogICAgLy8gZWxpZiBkdXJhdGlvbl9zZWNvbmRzIDw9IDE4MDA6CiAgICBkdXAKICAgIHB1c2hpbnQgMTgwMAogICAgPD0KICAgIGJ6IGNyZWF0ZV90cmFja2luZ19hY2Nlc3NfZWxzZV9ib2R5QDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTozMAogICAgLy8gZXhwZWN0ZWRfcHJpY2UgPSBVSW50NjQoMTUwXzAwMCkKICAgIHB1c2hpbnQgMTUwMDAwCiAgICBiIGNyZWF0ZV90cmFja2luZ19hY2Nlc3NfYWZ0ZXJfaWZfZWxzZUA3CgpjcmVhdGVfdHJhY2tpbmdfYWNjZXNzX2Vsc2VfYm9keUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjMyCiAgICAvLyBleHBlY3RlZF9wcmljZSA9IFVJbnQ2NCgyNTBfMDAwKQogICAgcHVzaGludCAyNTAwMDAKICAgIGIgY3JlYXRlX3RyYWNraW5nX2FjY2Vzc19hZnRlcl9pZl9lbHNlQDcKCgovLyBzbWFydF9jb250cmFjdHMuYnVzX3RyYWNrZXIuY29udHJhY3QuQnVzVHJhY2tlci5pc190cmFja2luZ19hY2Nlc3NfdmFsaWRbcm91dGluZ10oKSAtPiB2b2lkOgppc190cmFja2luZ19hY2Nlc3NfdmFsaWQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NDIKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjQ0CiAgICAvLyBrZXkgPSB1c2VyLmJ5dGVzICsgYnVzX2lkCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo0NQogICAgLy8gZXhwaXJ5LCBleGlzdHMgPSBzZWxmLmV4cGlyeV90aW1lcy5tYXliZShrZXkpCiAgICBieXRlY18wIC8vIDB4NjU3ODcwCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIHN3YXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo0NgogICAgLy8gaWYgbm90IGV4aXN0czoKICAgIGJueiBpc190cmFja2luZ19hY2Nlc3NfdmFsaWRfYWZ0ZXJfaWZfZWxzZUAzCiAgICBwb3AKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo0NwogICAgLy8gcmV0dXJuIFVJbnQ2NCgwKQogICAgaW50Y18wIC8vIDAKCmlzX3RyYWNraW5nX2FjY2Vzc192YWxpZF9hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5idXNfdHJhY2tlci5jb250cmFjdC5CdXNUcmFja2VyLmlzX3RyYWNraW5nX2FjY2Vzc192YWxpZEA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjQyCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzMgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCmlzX3RyYWNraW5nX2FjY2Vzc192YWxpZF9hZnRlcl9pZl9lbHNlQDM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NDkKICAgIC8vIGlmIEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wIDwgZXhwaXJ5OgogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgPgogICAgYnogaXNfdHJhY2tpbmdfYWNjZXNzX3ZhbGlkX2Vsc2VfYm9keUA1CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NTAKICAgIC8vIHJldHVybiBVSW50NjQoMSkKICAgIGludGNfMSAvLyAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NDIKICAgIC8vIEBhYmltZXRob2QoKQogICAgYiBpc190cmFja2luZ19hY2Nlc3NfdmFsaWRfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMuYnVzX3RyYWNrZXIuY29udHJhY3QuQnVzVHJhY2tlci5pc190cmFja2luZ19hY2Nlc3NfdmFsaWRANgoKaXNfdHJhY2tpbmdfYWNjZXNzX3ZhbGlkX2Vsc2VfYm9keUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjUyCiAgICAvLyByZXR1cm4gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjQyCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGIgaXNfdHJhY2tpbmdfYWNjZXNzX3ZhbGlkX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLmJ1c190cmFja2VyLmNvbnRyYWN0LkJ1c1RyYWNrZXIuaXNfdHJhY2tpbmdfYWNjZXNzX3ZhbGlkQDYKCgovLyBzbWFydF9jb250cmFjdHMuYnVzX3RyYWNrZXIuY29udHJhY3QuQnVzVHJhY2tlci5nZXRfdHJhY2tpbmdfYWNjZXNzW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X3RyYWNraW5nX2FjY2VzczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo1NAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NTYKICAgIC8vIGtleSA9IHVzZXIuYnl0ZXMgKyBidXNfaWQKICAgIGNvbmNhdAogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NTcKICAgIC8vIGV4cGlyeSwgZXhpc3RzID0gc2VsZi5leHBpcnlfdGltZXMubWF5YmUoa2V5KQogICAgYnl0ZWNfMCAvLyAweDY1Nzg3MAogICAgc3dhcAogICAgY29uY2F0CiAgICBib3hfZ2V0CiAgICBzd2FwCiAgICBidG9pCiAgICBzd2FwCiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NTgKICAgIC8vIGlmIG5vdCBleGlzdHM6CiAgICBibnogZ2V0X3RyYWNraW5nX2FjY2Vzc19hZnRlcl9pZl9lbHNlQDMKICAgIHBvcG4gMgogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjU5CiAgICAvLyByZXR1cm4gKFVJbnQ2NCgwKSwgVUludDY0KDApLCBCeXRlcyhiIiIpKQogICAgcHVzaGJ5dGVzIDB4CiAgICBpbnRjXzAgLy8gMAogICAgZHVwCgpnZXRfdHJhY2tpbmdfYWNjZXNzX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLmJ1c190cmFja2VyLmNvbnRyYWN0LkJ1c1RyYWNrZXIuZ2V0X3RyYWNraW5nX2FjY2Vzc0A0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjU0CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIHN3YXAKICAgIGl0b2IKICAgIGNvbmNhdAogICAgc3dhcAogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIHB1c2hieXRlcyAweDAwMTIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18zIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgpnZXRfdHJhY2tpbmdfYWNjZXNzX2FmdGVyX2lmX2Vsc2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo2MQogICAgLy8gc2VsZi5zdGFydF90aW1lc1trZXldLAogICAgYnl0ZWNfMSAvLyAweDczNzQ2MTcyNzQKICAgIHVuY292ZXIgMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBjb25jYXQKICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnN0YXJ0X3RpbWVzIGVudHJ5IGV4aXN0cwogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjYzCiAgICAvLyBzZWxmLnJvdXRlX2lkc1trZXldCiAgICBieXRlY18yIC8vIDB4NzI2Zjc1NzQ2NQogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnJvdXRlX2lkcyBlbnRyeSBleGlzdHMKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjU0CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGIgZ2V0X3RyYWNraW5nX2FjY2Vzc19hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5idXNfdHJhY2tlci5jb250cmFjdC5CdXNUcmFja2VyLmdldF90cmFja2luZ19hY2Nlc3NANAoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5idXNfdHJhY2tlci5jb250cmFjdC5CdXNUcmFja2VyLmV4cGlyZV90cmFja2luZ19hY2Nlc3Nbcm91dGluZ10oKSAtPiB2b2lkOgpleHBpcmVfdHJhY2tpbmdfYWNjZXNzOgogICAgaW50Y18wIC8vIDAKICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL2J1c190cmFja2VyL2NvbnRyYWN0LnB5OjY2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo2OAogICAgLy8ga2V5ID0gdXNlci5ieXRlcyArIGJ1c19pZAogICAgY29uY2F0CiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo2OQogICAgLy8gZXhwaXJ5LCBleGlzdHMgPSBzZWxmLmV4cGlyeV90aW1lcy5tYXliZShrZXkpCiAgICBieXRlY18wIC8vIDB4NjU3ODcwCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgY292ZXIgMgogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NzAKICAgIC8vIGlmIGV4aXN0czoKICAgIGJ6IGV4cGlyZV90cmFja2luZ19hY2Nlc3NfYWZ0ZXJfaWZfZWxzZUAzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NzEKICAgIC8vIGRlbCBzZWxmLmV4cGlyeV90aW1lc1trZXldCiAgICBkaWcgMQogICAgYm94X2RlbAogICAgcG9wCgpleHBpcmVfdHJhY2tpbmdfYWNjZXNzX2FmdGVyX2lmX2Vsc2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo3MwogICAgLy8gc3RhcnQsIGV4aXN0c19zdGFydCA9IHNlbGYuc3RhcnRfdGltZXMubWF5YmUoa2V5KQogICAgYnl0ZWNfMSAvLyAweDczNzQ2MTcyNzQKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIGR1cAogICAgYnVyeSA1CiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo3NAogICAgLy8gaWYgZXhpc3RzX3N0YXJ0OgogICAgYnogZXhwaXJlX3RyYWNraW5nX2FjY2Vzc19hZnRlcl9pZl9lbHNlQDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo3NQogICAgLy8gZGVsIHNlbGYuc3RhcnRfdGltZXNba2V5XQogICAgZGlnIDMKICAgIGJveF9kZWwKICAgIHBvcAoKZXhwaXJlX3RyYWNraW5nX2FjY2Vzc19hZnRlcl9pZl9lbHNlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NzcKICAgIC8vIHJvdXRlLCBleGlzdHNfcm91dGUgPSBzZWxmLnJvdXRlX2lkcy5tYXliZShrZXkpCiAgICBieXRlY18yIC8vIDB4NzI2Zjc1NzQ2NQogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGJ1cnkgMwogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NzgKICAgIC8vIGlmIGV4aXN0c19yb3V0ZToKICAgIGJ6IGV4cGlyZV90cmFja2luZ19hY2Nlc3NfYWZ0ZXJfaWZfZWxzZUA3CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6NzkKICAgIC8vIGRlbCBzZWxmLnJvdXRlX2lkc1trZXldCiAgICBkaWcgMQogICAgYm94X2RlbAogICAgcG9wCgpleHBpcmVfdHJhY2tpbmdfYWNjZXNzX2FmdGVyX2lmX2Vsc2VANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo2NgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmJ1c190cmFja2VyLmNvbnRyYWN0LkJ1c1RyYWNrZXIucmVjb3JkX3VzZXJfYWN0aXZpdHlbcm91dGluZ10oKSAtPiB2b2lkOgpyZWNvcmRfdXNlcl9hY3Rpdml0eToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo4MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo4MwogICAgLy8ga2V5ID0gVHhuLnNlbmRlci5ieXRlcyArIGFjdGl2aXR5X3R5cGUKICAgIHR4biBTZW5kZXIKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYnVzX3RyYWNrZXIvY29udHJhY3QucHk6ODQKICAgIC8vIHNlbGYuYWN0aXZpdGllc1trZXldID0gYnVzX2lkCiAgICBwdXNoYnl0ZXMgMHg2MTYzNzQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICBib3hfZGVsCiAgICBwb3AKICAgIHN3YXAKICAgIGJveF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9idXNfdHJhY2tlci9jb250cmFjdC5weTo4MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAAECICYEA2V4cAVzdGFydAVyb3V0ZQQVH3x1MRtBADIxGRREMRhEggUE+FgenATL0nyBBMl7FIME12wYCgQQBCLENhoAjgUACQCWANABLAF7ADEZFDEYFBBDMRYjCUcCOBAjEkQ2GgFJIlkkCEsBFRJEVwIATgI2GgJJIlkkCEsBFRJEVwIATgM2GgNJFYEIEkQXSU8COAcyChJEgYQHDkEALoGgjQZPAjgIDkQxAE8CUDIHTwIIKEsCUEwWvzIHKUsCUEwWvypMUEm8SEy/I0NJgYgODkEAB4HwkwlC/8eBkKEPQv/ANhoBSRUlEkQ2GgJJIlkkCEsBFRJEVwIAUChMUL5MF0xAAAlIIhYrTFCwI0MyBw1BAAQjQv/vIkL/6zYaAUkVJRJENhoCSSJZJAhLARUSRFcCAFBJKExQvkwXTEAAIUYCgAAiSRZMFlBMSRUWVwYCTFBMgAIAElBMUCtMULAjQylPAklOAlC+RBcqTwJQvkRMTwJMQv/OIkk2GgFJFSUSRDYaAkkiWSQISwEVEkRXAgBQSShMUElOAr1FAUEABEsBvEgpSwFQSUUFvUUBQQAESwO8SCpMUElFA71FAUEABEsBvEgjQzYaAUkiWSQISwEVEkRXAgA2GgJJIlkkCEsBFRJEVwIAMQBPAlCAA2FjdExQSbxITL8jQw==", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 9, "patch": 0 } }, "events": [], "templateVariables": {} }